<?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>156755</bug_id>
          
          <creation_ts>2016-04-19 11:59:35 -0700</creation_ts>
          <short_desc>Update ANGLE</short_desc>
          <delta_ts>2016-04-29 09:42:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>ANGLE</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156789</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dino</cc>
    
    <cc>graouts</cc>
    
    <cc>jeremyhu</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1185100</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-19 11:59:35 -0700</bug_when>
    <thetext>Let&apos;s update ANGLE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185103</commentid>
    <comment_count>1</comment_count>
      <attachid>276741</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-19 12:02:04 -0700</bug_when>
    <thetext>Created attachment 276741
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185109</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-19 12:07:31 -0700</bug_when>
    <thetext>This regresses webgl/1.0.2/conformance/glsl/reserved/webgl_preprocessor_reserved.html but everything else passes.  I think looking into that after this lands is probably the best way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185111</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-19 12:14:28 -0700</bug_when>
    <thetext>That test was removed in https://github.com/KhronosGroup/WebGL/pull/1230
I think I&apos;ll remove it, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185112</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-04-19 12:14:54 -0700</bug_when>
    <thetext>Looking at the patch offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185115</commentid>
    <comment_count>5</comment_count>
      <attachid>276741</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-04-19 12:24:40 -0700</bug_when>
    <thetext>Comment on attachment 276741
patch

I checked that Alex updated the .plist file we use for our Open Source contributions, and that he kept the legal note about how we&apos;re distributing the generated source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185126</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-19 12:46:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/199738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185407</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2016-04-20 07:42:03 -0700</bug_when>
    <thetext>This caused LayoutTests/compositing/webgl/webgl-reflection.html to regress on the iOS Simulator bot. See https://build.webkit.org/results/Apple%20iOS%209%20Simulator%20Release%20WK2%20(Tests)/r199771%20(4996)/compositing/webgl/webgl-reflection-pretty-diff.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188654</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Huddleston Sequoia">jeremyhu</who>
    <bug_when>2016-04-29 09:42:07 -0700</bug_when>
    <thetext>This change also causes the gtk build to fail.  This can be seen by the red in the attachments field.  Why was this pushed given the known fallout?

https://bugs.webkit.org/show_bug.cgi?id=157182</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276741</attachid>
            <date>2016-04-19 12:02:04 -0700</date>
            <delta_ts>2016-04-19 12:24:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7266238</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CShyZXZpc2lvbiAxOTk2ODIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAkod29ya2luZyBjb3B5KQpAQCAt
MTAsNyArMTAsNyBAQAogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VXZWJzaXRlVVJMPC9rZXk+CiAg
ICAgICAgIDxzdHJpbmc+aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC88L3N0
cmluZz4KICAgICAgICAgPGtleT5PcGVuU291cmNlU0NNPC9rZXk+Ci0gICAgICAgIDxzdHJpbmc+
Z2l0IGNsb25lIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSAm
YW1wOyZhbXA7IGNkIGFuZ2xlICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IGIxMWUyNDgzNzQyZGI4
ODRiZDBhZjQxZjc4ZjUyODI0MDU3NzM1NmI8L3N0cmluZz4KKyAgICAgICAgPHN0cmluZz5naXQg
Y2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2FuZ2xlL2FuZ2xlICZhbXA7
JmFtcDsgY2QgYW5nbGUgJmFtcDsmYW1wOyBnaXQgY2hlY2tvdXQgNjY4NDAwN2E3NzU3MmYzNjE2
ZmM0NTMxMzhiMGVmNWY3ZDQyZDAzODwvc3RyaW5nPgogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VJ
bXBvcnREYXRlPC9rZXk+CiAgICAgICAgIDxzdHJpbmc+MjAxNC0wNC0yOTwvc3RyaW5nPgogICAg
ICAgICA8a2V5Pk9wZW5Tb3VyY2VMaWNlbnNlPC9rZXk+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEzICs1NywxMSBAQAogCQkz
MTAxMkU1MDE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0R0xTTEJhc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREUwMThCOTdCOUIwMDM5MDYy
RiAvKiBPdXRwdXRHTFNMQmFzZS5oICovOyB9OwogCQkzMTAxMkU1MTE4Qjk3QjlCMDAzOTA2MkYg
LyogT3V0cHV0SExTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTAxMkRFMTE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0SExTTC5jcHAgKi87IH07
CiAJCTMxMDEyRTUyMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRITFNMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRFMjE4Qjk3QjlCMDAzOTA2
MkYgLyogT3V0cHV0SExTTC5oICovOyB9OwotCQkzMTAxMkU1MzE4Qjk3QjlCMDAzOTA2MkYgLyog
cGFyc2VDb25zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzMTAxMkRFMzE4Qjk3QjlCMDAzOTA2MkYgLyogcGFyc2VDb25zdC5jcHAgKi87IH07CiAJ
CTMxMDEyRTU0MThCOTdCOUIwMDM5MDYyRiAvKiBQYXJzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERTQxOEI5N0I5QjAwMzkw
NjJGIC8qIFBhcnNlQ29udGV4dC5jcHAgKi87IH07CiAJCTMxMDEyRTU1MThCOTdCOUIwMDM5MDYy
RiAvKiBQYXJzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMDEyREU1MThCOTdCOUIwMDM5MDYyRiAvKiBQYXJzZUNvbnRleHQuaCAqLzsg
fTsKIAkJMzEwMTJFNTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRFNjE4Qjk3QjlCMDAz
OTA2MkYgLyogUG9vbEFsbG9jLmNwcCAqLzsgfTsKIAkJMzEwMTJFNTcxOEI5N0I5QjAwMzkwNjJG
IC8qIFBvb2xBbGxvYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzEwMTJERTcxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5oICovOyB9OwogCQkz
MTAxMkU1ODE4Qjk3QjlCMDAzOTA2MkYgLyogUHJhZ21hLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRFODE4Qjk3QjlCMDAzOTA2MkYgLyogUHJh
Z21hLmggKi87IH07Ci0JCTMxMDEyRTU5MThCOTdCOUIwMDM5MDYyRiAvKiBRdWFsaWZpZXJBbGl2
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAx
MkRFOTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovOyB9OwogCQkzMTAx
MkU1QTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREVBMThCOTdCOUIwMDM5MDYyRiAv
KiBRdWFsaWZpZXJBbGl2ZS5oICovOyB9OwogCQkzMTAxMkU1RDE4Qjk3QjlCMDAzOTA2MkYgLyog
UmVuYW1lRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDEyREVEMThCOTdCOUIwMDM5MDYyRiAvKiBSZW5hbWVGdW5jdGlvbi5oICovOyB9
OwogCQkzMTAxMkU1RTE4Qjk3QjlCMDAzOTA2MkYgLyogUmV3cml0ZUVsc2VCbG9ja3MuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERUUxOEI5
N0I5QjAwMzkwNjJGIC8qIFJld3JpdGVFbHNlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTg0LDggKzgy
LDYgQEAKIAkJMzEwMTJFNkUxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JITFNMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREZGMThC
OTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9ySExTTC5jcHAgKi87IH07CiAJCTMxMDEyRTZGMThC
OTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9ySExTTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJFMDAxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5z
bGF0b3JITFNMLmggKi87IH07CiAJCTMxMDEyRTcwMThCOTdCOUIwMDM5MDYyRiAvKiBUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJFMDEx
OEI5N0I5QjAwMzkwNjJGIC8qIFR5cGVzLmggKi87IH07Ci0JCTMxMDEyRTcxMThCOTdCOUIwMDM5
MDYyRiAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJFMDIxOEI5N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNo
b3J0Q2lyY3VpdC5jcHAgKi87IH07Ci0JCTMxMDEyRTcyMThCOTdCOUIwMDM5MDYyRiAvKiBVbmZv
bGRTaG9ydENpcmN1aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDEyRTAzMThCOTdCOUIwMDM5MDYyRiAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCAq
LzsgfTsKIAkJMzEwMTJFNzMxOEI5N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFT
VC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAx
MkUwNDE4Qjk3QjlCMDAzOTA2MkYgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCAqLzsgfTsK
IAkJMzEwMTJFNzQxOEI5N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJFMDUxOEI5
N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oICovOyB9OwogCQkzMTAxMkU3
NzE4Qjk3QjlCMDAzOTA2MkYgLyogdXRpbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkUwODE4Qjk3QjlCMDAzOTA2MkYgLyogdXRpbC5jcHAg
Ki87IH07CkBAIC0xNDIsOCArMTM4LDYgQEAKIAkJNUMxREJDM0YxQjA0Mzc1RjAwMjM1NTUyIC8q
IFNlcGFyYXRlRGVjbGFyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMURCQzE4MUIwNDM3NUYwMDIzNTU1MiAvKiBTZXBhcmF0ZURlY2xh
cmF0aW9ucy5jcHAgKi87IH07CiAJCTVDMURCQzQwMUIwNDM3NUYwMDIzNTU1MiAvKiBTZXBhcmF0
ZURlY2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMxREJDMTkxQjA0Mzc1RjAwMjM1NTUyIC8qIFNlcGFyYXRlRGVjbGFyYXRpb25zLmgg
Ki87IH07CiAJCTVDMURCQzQxMUIwNDM3NUYwMDIzNTU1MiAvKiBTaGFkZXJWYXJzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCQzFBMUIwNDM3
NUYwMDIzNTU1MiAvKiBTaGFkZXJWYXJzLmNwcCAqLzsgfTsKLQkJNUMxREJDNDIxQjA0Mzc1RjAw
MjM1NTUyIC8qIFNpbXBsaWZ5QXJyYXlBc3NpZ25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCQzFCMUIwNDM3NUYwMDIzNTU1MiAvKiBT
aW1wbGlmeUFycmF5QXNzaWdubWVudC5jcHAgKi87IH07Ci0JCTVDMURCQzQzMUIwNDM3NUYwMDIz
NTU1MiAvKiBTaW1wbGlmeUFycmF5QXNzaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDMUMxQjA0Mzc1RjAwMjM1NTUyIC8qIFNpbXBs
aWZ5QXJyYXlBc3NpZ25tZW50LmggKi87IH07CiAJCTVDMURCQzQ0MUIwNDM3NUYwMDIzNTU1MiAv
KiBUeXBlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzFEQkMxRDFCMDQzNzVGMDAyMzU1NTIgLyogVHlwZXMuY3BwICovOyB9OwogCQk1QzFEQkM0
NTFCMDQzNzVGMDAyMzU1NTIgLyogVmFsaWRhdGVTd2l0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDMUUxQjA0Mzc1RjAwMjM1NTUyIC8q
IFZhbGlkYXRlU3dpdGNoLmNwcCAqLzsgfTsKIAkJNUMxREJDNDYxQjA0Mzc1RjAwMjM1NTUyIC8q
IFZhbGlkYXRlU3dpdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzFEQkMxRjFCMDQzNzVGMDAyMzU1NTIgLyogVmFsaWRhdGVTd2l0Y2guaCAqLzsg
fTsKQEAgLTE5Myw3ICsxODcsNiBAQAogCQk1QzFEQkUwMjFCMDQzOEQzMDAyMzU1NTIgLyogUXVl
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURC
Qzc5MUIwNDM4RDIwMDIzNTU1MiAvKiBRdWVyeS5oICovOyB9OwogCQk1QzFEQkUwMzFCMDQzOEQz
MDAyMzU1NTIgLyogcXVlcnljb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM3QTFCMDQzOEQyMDAyMzU1NTIgLyogcXVlcnlj
b252ZXJzaW9ucy5jcHAgKi87IH07CiAJCTVDMURCRTA0MUIwNDM4RDMwMDIzNTU1MiAvKiBxdWVy
eWNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzFEQkM3QjFCMDQzOEQyMDAyMzU1NTIgLyogcXVlcnljb252ZXJzaW9ucy5oICovOyB9
OwotCQk1QzFEQkUwNTFCMDQzOEQzMDAyMzU1NTIgLyogUmVmQ291bnRPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDN0MxQjA0MzhE
MjAwMjM1NTUyIC8qIFJlZkNvdW50T2JqZWN0LmNwcCAqLzsgfTsKIAkJNUMxREJFMDYxQjA0MzhE
MzAwMjM1NTUyIC8qIFJlZkNvdW50T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkM3RDFCMDQzOEQyMDAyMzU1NTIgLyogUmVmQ291bnRP
YmplY3QuaCAqLzsgfTsKIAkJNUMxREJFMDcxQjA0MzhEMzAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFE
QkM3RTFCMDQzOEQyMDAyMzU1NTIgLyogUmVuZGVyYnVmZmVyLmNwcCAqLzsgfTsKIAkJNUMxREJF
MDgxQjA0MzhEMzAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxREJDN0YxQjA0MzhEMjAwMjM1NTUyIC8qIFJl
bmRlcmJ1ZmZlci5oICovOyB9OwpAQCAtMjI1LDYgKzIxOCwyOCBAQAogCQk1QzFEQkY0MDFCMDQz
OEQzMDAyMzU1NTIgLyogVmVydGV4QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURCREQwMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBcnJh
eS5oICovOyB9OwogCQk1QzFEQkY0MTFCMDQzOEQzMDAyMzU1NTIgLyogVmVydGV4QXR0cmlidXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMURC
REQxMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3BwICovOyB9OwogCQk1QzFE
QkY0MjFCMDQzOEQzMDAyMzU1NTIgLyogVmVydGV4QXR0cmlidXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzFEQkREMjFCMDQzOEQzMDAyMzU1NTIg
LyogVmVydGV4QXR0cmlidXRlLmggKi87IH07CisJCTVDMzE1Q0ZFMUNDNUI2REEwMDc3NjY5NyAv
KiBDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzMxNUNFODFDQzVCNkRBMDA3NzY2OTcgLyogQ2FjaGUuY3BwICovOyB9OworCQk1QzMxNUNG
RjFDQzVCNkRBMDA3NzY2OTcgLyogQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzE1Q0U5MUNDNUI2REEwMDc3NjY5NyAvKiBDYWNoZS5oICov
OyB9OworCQk1QzMxNUQwMDFDQzVCNkRBMDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0aWFsaXpl
cnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMz
MTVDRUExQ0M1QjZEQTAwNzc2Njk3IC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcCAqLzsg
fTsKKwkJNUMzMTVEMDExQ0M1QjZEQTAwNzc2Njk3IC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzMxNUNF
QjFDQzVCNkRBMDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaCAqLzsgfTsKKwkJ
NUMzMTVEMDIxQ0M1QjZEQTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzMTVDRUMxQ0M1QjZEQTAwNzc2
Njk3IC8qIEV4dGVuc2lvbkdMU0wuY3BwICovOyB9OworCQk1QzMxNUQwMzFDQzVCNkRBMDA3NzY2
OTcgLyogRXh0ZW5zaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMzMTVDRUQxQ0M1QjZEQTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdMU0wuaCAq
LzsgfTsKKwkJNUMzMTVEMDQxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlY29yZENvbnN0YW50UHJlY2lz
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MzE1Q0VFMUNDNUI2REEwMDc3NjY5NyAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAgKi87
IH07CisJCTVDMzE1RDA1MUNDNUI2REEwMDc3NjY5NyAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzMTVD
RUYxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmggKi87IH07CisJ
CTVDMzE1RDA2MUNDNUI2REEwMDc3NjY5NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzMTVDRjAxQ0M1
QjZEQTAwNzc2Njk3IC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAgKi87IH07CisJCTVDMzE1
RDA3MUNDNUI2REEwMDc3NjY5NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzE1Q0YxMUNDNUI2REEwMDc3
NjY5NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuaCAqLzsgfTsKKwkJNUMzMTVEMDgxQ0M1QjZE
QTAwNzc2Njk3IC8qIFJlbW92ZVBvdy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzMxNUNGMjFDQzVCNkRBMDA3NzY2OTcgLyogUmVtb3ZlUG93LmNw
cCAqLzsgfTsKKwkJNUMzMTVEMDkxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlbW92ZVBvdy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzMTVDRjMxQ0M1QjZE
QTAwNzc2Njk3IC8qIFJlbW92ZVBvdy5oICovOyB9OworCQk1QzMxNUQwQTFDQzVCNkRBMDA3NzY2
OTcgLyogUmV3cml0ZURvV2hpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMzMTVDRjQxQ0M1QjZEQTAwNzc2Njk3IC8qIFJld3JpdGVEb1doaWxl
LmNwcCAqLzsgfTsKKwkJNUMzMTVEMEIxQ0M1QjZEQTAwNzc2Njk3IC8qIFJld3JpdGVEb1doaWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzMxNUNG
NTFDQzVCNkRBMDA3NzY2OTcgLyogUmV3cml0ZURvV2hpbGUuaCAqLzsgfTsKKwkJNUMzMTVEMEMx
Q0M1QjZEQTAwNzc2Njk3IC8qIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzMTVDRjYx
Q0M1QjZEQTAwNzc2Njk3IC8qIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3Bw
ICovOyB9OworCQk1QzMxNUQwRDFDQzVCNkRBMDA3NzY2OTcgLyogU2VwYXJhdGVFeHByZXNzaW9u
c1JldHVybmluZ0FycmF5cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMzMTVDRjcxQ0M1QjZEQTAwNzc2Njk3IC8qIFNlcGFyYXRlRXhwcmVzc2lvbnNS
ZXR1cm5pbmdBcnJheXMuaCAqLzsgfTsKKwkJNUMzMTVEMEUxQ0M1QjZEQTAwNzc2Njk3IC8qIFVu
Zm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMzMTVDRjgxQ0M1QjZEQTAwNzc2Njk3IC8qIFVuZm9sZFNob3J0Q2ly
Y3VpdFRvSWYuY3BwICovOyB9OworCQk1QzMxNUQwRjFDQzVCNkRBMDA3NzY2OTcgLyogVW5mb2xk
U2hvcnRDaXJjdWl0VG9JZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUMzMTVDRjkxQ0M1QjZEQTAwNzc2Njk3IC8qIFVuZm9sZFNob3J0Q2lyY3VpdFRv
SWYuaCAqLzsgfTsKKwkJNUMzMTVEMTAxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlR2xvYmFs
SW5pdGlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMzMTVDRkExQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXIuY3BwICovOyB9OworCQk1QzMxNUQxMTFDQzVCNkRBMDA3NzY2OTcgLyogVmFsaWRhdGVHbG9i
YWxJbml0aWFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUMzMTVDRkIxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXIuaCAqLzsgfTsKKwkJNUMzMTVEMTIxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlTWF4UGFy
YW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzMxNUNGQzFDQzVCNkRBMDA3NzY2OTcgLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCAq
LzsgfTsKKwkJNUMzMTVEMTMxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzMTVD
RkQxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVycy5oICovOyB9OwogCQk1
QzlGRkY0RTE5MTAyQTAwMDAyNUI4RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RkZGNEMxOTEwMkEwMDAw
MjVCOEZBIC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmNwcCAqLzsgfTsKIAkJNUM5RkZGNEYxOTEwMkEw
MDAwMjVCOEZBIC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlGRkY0RDE5MTAyQTAwMDAyNUI4RkEgLyogRmxhZ1N0
ZDE0MFN0cnVjdHMuaCAqLzsgfTsKIAkJNUNDN0Q0NTIxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJ
bmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
QzdENDRCMTkxMDI0RTMwMDBCOEMxRiAvKiBMb29wSW5mby5jcHAgKi87IH07CkBAIC0zNDYsMTMg
KzM2MSwxMSBAQAogCQkzMTAxMkRFMDE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0R0xTTEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3V0cHV0R0xTTEJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERTExOEI5N0I5QjAwMzkwNjJGIC8qIE91
dHB1dEhMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3V0cHV0
SExTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREUyMThCOTdCOUIw
MDM5MDYyRiAvKiBPdXRwdXRITFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE91dHB1dEhMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEwMTJERTMxOEI5
N0I5QjAwMzkwNjJGIC8qIHBhcnNlQ29uc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gcGFyc2VDb25zdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMxMDEyREU0MThCOTdCOUIwMDM5MDYyRiAvKiBQYXJzZUNvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERTUxOEI5N0I5QjAwMzkwNjJGIC8qIFBhcnNlQ29udGV4
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZUNvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBv
b2xBbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb29sQWxs
b2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRFNzE4Qjk3QjlCMDAz
OTA2MkYgLyogUG9vbEFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBv
b2xBbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRFODE4Qjk3QjlC
MDAzOTA2MkYgLyogUHJhZ21hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
YWdtYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRFOTE4Qjk3QjlCMDAz
OTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUXVhbGlmaWVyQWxpdmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTAxMkRFQTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVhbGlmaWVyQWxpdmUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzEwMTJERUQxOEI5N0I5QjAwMzkwNjJGIC8qIFJlbmFtZUZ1bmN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmFtZUZ1bmN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREVFMThCOTdCOUIwMDM5MDYyRiAvKiBS
ZXdyaXRlRWxzZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXdyaXRlRWxzZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
NzMsOCArMzg2LDYgQEAKIAkJMzEwMTJERkYxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JI
TFNMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zbGF0b3JI
TFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJFMDAxOEI5N0I5QjAw
MzkwNjJGIC8qIFRyYW5zbGF0b3JITFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyYW5zbGF0b3JITFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEy
RTAxMThCOTdCOUIwMDM5MDYyRiAvKiBUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkUwMjE4
Qjk3QjlCMDAzOTA2MkYgLyogVW5mb2xkU2hvcnRDaXJjdWl0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZm9sZFNob3J0Q2lyY3VpdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyRTAzMThCOTdCOUIwMDM5MDYyRiAvKiBVbmZvbGRTaG9y
dENpcmN1aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5mb2xkU2hvcnRD
aXJjdWl0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyRTA0MThCOTdCOUIw
MDM5MDYyRiAvKiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJFMDUxOEI5N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0
Q2lyY3VpdEFTVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmZvbGRTaG9y
dENpcmN1aXRBU1QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJFMDgxOEI5
N0I5QjAwMzkwNjJGIC8qIHV0aWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gdXRpbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzEsOCArNDQy
LDYgQEAKIAkJNUMxREJDMTgxQjA0Mzc1RjAwMjM1NTUyIC8qIFNlcGFyYXRlRGVjbGFyYXRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcGFyYXRlRGVjbGFy
YXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDMTkxQjA0Mzc1
RjAwMjM1NTUyIC8qIFNlcGFyYXRlRGVjbGFyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlcGFyYXRlRGVjbGFyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDMURCQzFBMUIwNDM3NUYwMDIzNTU1MiAvKiBTaGFkZXJWYXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRlclZhcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1QzFEQkMxQjFCMDQzNzVGMDAyMzU1NTIgLyogU2ltcGxp
ZnlBcnJheUFzc2lnbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU2ltcGxpZnlBcnJheUFzc2lnbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1QzFEQkMxQzFCMDQzNzVGMDAyMzU1NTIgLyogU2ltcGxpZnlBcnJheUFzc2lnbm1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltcGxpZnlBcnJheUFzc2lnbm1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDMUQxQjA0Mzc1RjAwMjM1
NTUyIC8qIFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5
cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxREJDMUUxQjA0Mzc1RjAw
MjM1NTUyIC8qIFZhbGlkYXRlU3dpdGNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZhbGlkYXRlU3dpdGNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxREJDMUYxQjA0Mzc1RjAwMjM1NTUyIC8qIFZhbGlkYXRlU3dpdGNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkYXRlU3dpdGNoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00ODMsNyArNDkyLDYgQEAKIAkJNUMxREJDNzkxQjA0MzhEMjAwMjM1
NTUyIC8qIFF1ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFF1ZXJ5Lmg7
IHBhdGggPSBzcmMvbGliQU5HTEUvUXVlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxREJDN0ExQjA0MzhEMjAwMjM1NTUyIC8qIHF1ZXJ5Y29udmVyc2lvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gcXVlcnljb252ZXJzaW9ucy5jcHA7IHBh
dGggPSBzcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDMURCQzdCMUIwNDM4RDIwMDIzNTU1MiAvKiBxdWVyeWNvbnZlcnNpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHF1ZXJ5Y29udmVyc2lvbnMuaDsg
cGF0aCA9IHNyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTVDMURCQzdDMUIwNDM4RDIwMDIzNTU1MiAvKiBSZWZDb3VudE9iamVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBSZWZDb3VudE9iamVjdC5j
cHA7IHBhdGggPSBzcmMvbGliQU5HTEUvUmVmQ291bnRPYmplY3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzFEQkM3RDFCMDQzOEQyMDAyMzU1NTIgLyogUmVmQ291bnRPYmpl
Y3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVmQ291bnRPYmplY3QuaDsg
cGF0aCA9IHNyYy9saWJBTkdMRS9SZWZDb3VudE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzFEQkM3RTFCMDQzOEQyMDAyMzU1NTIgLyogUmVuZGVyYnVmZmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlbmRlcmJ1ZmZlci5jcHA7IHBh
dGggPSBzcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMxREJDN0YxQjA0MzhEMjAwMjM1NTUyIC8qIFJlbmRlcmJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZW5kZXJidWZmZXIuaDsgcGF0aCA9IHNyYy9s
aWJBTkdMRS9SZW5kZXJidWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUx
NSw2ICs1MjMsMjggQEAKIAkJNUMxREJERDAxQjA0MzhEMzAwMjM1NTUyIC8qIFZlcnRleEFycmF5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFZlcnRleEFycmF5Lmg7IHBhdGgg
PSBzcmMvbGliQU5HTEUvVmVydGV4QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMxREJERDExQjA0MzhEMzAwMjM1NTUyIC8qIFZlcnRleEF0dHJpYnV0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBWZXJ0ZXhBdHRyaWJ1dGUuY3BwOyBwYXRo
ID0gc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDMURCREQyMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBdHRyaWJ1dGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmVydGV4QXR0cmlidXRlLmg7IHBhdGgg
PSBzcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDMzE1Q0U4MUNDNUI2REEwMDc3NjY5NyAvKiBDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDMzE1Q0U5MUNDNUI2REEwMDc3NjY5NyAvKiBDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzMxNUNFQTFDQzVCNkRBMDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHbG9iYWxJbml0
aWFsaXplcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzMxNUNFQjFDQzVC
NkRBMDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUMzMTVDRUMxQ0M1QjZEQTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdM
U0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uR0xT
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMzE1Q0VEMUNDNUI2REEwMDc3
NjY5NyAvKiBFeHRlbnNpb25HTFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4dGVuc2lvbkdMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzMTVDRUUx
Q0M1QjZEQTAwNzc2Njk3IC8qIFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzMTVDRUYxQ0M1QjZEQTAwNzc2Njk3IC8q
IFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDMzE1Q0YwMUNDNUI2REEwMDc3NjY5NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3ZlRHluYW1pY0luZGV4
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzMTVDRjExQ0M1QjZEQTAw
Nzc2Njk3IC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW1vdmVEeW5hbWljSW5kZXhpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUMzMTVDRjIxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlbW92ZVBvdy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdmVQb3cuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzMxNUNGMzFDQzVCNkRBMDA3NzY2OTcgLyogUmVtb3ZlUG93
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZVBvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzMxNUNGNDFDQzVCNkRBMDA3NzY2OTcgLyogUmV3cml0
ZURvV2hpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmV3cml0
ZURvV2hpbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzMxNUNGNTFDQzVC
NkRBMDA3NzY2OTcgLyogUmV3cml0ZURvV2hpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmV3cml0ZURvV2hpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUMzMTVDRjYxQ0M1QjZEQTAwNzc2Njk3IC8qIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdB
cnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VwYXJhdGVF
eHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDMzE1Q0Y3MUNDNUI2REEwMDc3NjY5NyAvKiBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJu
aW5nQXJyYXlzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcGFyYXRlRXhw
cmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUMzMTVDRjgxQ0M1QjZEQTAwNzc2Njk3IC8qIFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5mb2xkU2hvcnRDaXJjdWl0VG9J
Zi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMzE1Q0Y5MUNDNUI2REEwMDc3
NjY5NyAvKiBVbmZvbGRTaG9ydENpcmN1aXRUb0lmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUMzMTVDRkExQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRlR2xvYmFsSW5pdGlh
bGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFsaWRhdGVH
bG9iYWxJbml0aWFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMzE1
Q0ZCMUNDNUI2REEwMDc3NjY5NyAvKiBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMzMTVDRkMxQ0M1QjZEQTAwNzc2Njk3IC8q
IFZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWYWxpZGF0ZU1heFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzMxNUNGRDFDQzVCNkRBMDA3NzY2OTcgLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkYXRlTWF4UGFyYW1ldGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlGRkY0QzE5MTAyQTAwMDAyNUI4
RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzlGRkY0RDE5MTAyQTAwMDAyNUI4RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxhZ1N0ZDE0MFN0cnVjdHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDN0Q0NEIxOTEwMjRFMzAwMEI4QzFGIC8qIExvb3BJ
bmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvb3BJbmZvLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4MCw2ICs2MTAsMjggQEAKIAkJMzEw
MTJEOUYxOEI5N0I5QjAwMzkwNjJGIC8qIHRyYW5zbGF0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDMzE1Q0U4MUNDNUI2REEwMDc3NjY5NyAvKiBD
YWNoZS5jcHAgKi8sCisJCQkJNUMzMTVDRTkxQ0M1QjZEQTAwNzc2Njk3IC8qIENhY2hlLmggKi8s
CisJCQkJNUMzMTVDRUExQ0M1QjZEQTAwNzc2Njk3IC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJz
LmNwcCAqLywKKwkJCQk1QzMxNUNFQjFDQzVCNkRBMDA3NzY2OTcgLyogRGVmZXJHbG9iYWxJbml0
aWFsaXplcnMuaCAqLywKKwkJCQk1QzMxNUNFQzFDQzVCNkRBMDA3NzY2OTcgLyogRXh0ZW5zaW9u
R0xTTC5jcHAgKi8sCisJCQkJNUMzMTVDRUQxQ0M1QjZEQTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdM
U0wuaCAqLywKKwkJCQk1QzMxNUNFRTFDQzVCNkRBMDA3NzY2OTcgLyogUmVjb3JkQ29uc3RhbnRQ
cmVjaXNpb24uY3BwICovLAorCQkJCTVDMzE1Q0VGMUNDNUI2REEwMDc3NjY5NyAvKiBSZWNvcmRD
b25zdGFudFByZWNpc2lvbi5oICovLAorCQkJCTVDMzE1Q0YwMUNDNUI2REEwMDc3NjY5NyAvKiBS
ZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwICovLAorCQkJCTVDMzE1Q0YxMUNDNUI2REEwMDc3NjY5
NyAvKiBSZW1vdmVEeW5hbWljSW5kZXhpbmcuaCAqLywKKwkJCQk1QzMxNUNGMjFDQzVCNkRBMDA3
NzY2OTcgLyogUmVtb3ZlUG93LmNwcCAqLywKKwkJCQk1QzMxNUNGMzFDQzVCNkRBMDA3NzY2OTcg
LyogUmVtb3ZlUG93LmggKi8sCisJCQkJNUMzMTVDRjQxQ0M1QjZEQTAwNzc2Njk3IC8qIFJld3Jp
dGVEb1doaWxlLmNwcCAqLywKKwkJCQk1QzMxNUNGNTFDQzVCNkRBMDA3NzY2OTcgLyogUmV3cml0
ZURvV2hpbGUuaCAqLywKKwkJCQk1QzMxNUNGNjFDQzVCNkRBMDA3NzY2OTcgLyogU2VwYXJhdGVF
eHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5jcHAgKi8sCisJCQkJNUMzMTVDRjcxQ0M1QjZEQTAw
Nzc2Njk3IC8qIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuaCAqLywKKwkJCQk1
QzMxNUNGODFDQzVCNkRBMDA3NzY2OTcgLyogVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAgKi8s
CisJCQkJNUMzMTVDRjkxQ0M1QjZEQTAwNzc2Njk3IC8qIFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYu
aCAqLywKKwkJCQk1QzMxNUNGQTFDQzVCNkRBMDA3NzY2OTcgLyogVmFsaWRhdGVHbG9iYWxJbml0
aWFsaXplci5jcHAgKi8sCisJCQkJNUMzMTVDRkIxQ0M1QjZEQTAwNzc2Njk3IC8qIFZhbGlkYXRl
R2xvYmFsSW5pdGlhbGl6ZXIuaCAqLywKKwkJCQk1QzMxNUNGQzFDQzVCNkRBMDA3NzY2OTcgLyog
VmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCAqLywKKwkJCQk1QzMxNUNGRDFDQzVCNkRBMDA3NzY2
OTcgLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmggKi8sCiAJCQkJNUMxREJCRjkxQjA0Mzc1RTAw
MjM1NTUyIC8qIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAgKi8sCiAJCQkJNUMx
REJCRkExQjA0Mzc1RTAwMjM1NTUyIC8qIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5o
ICovLAogCQkJCTVDMURCQkZCMUIwNDM3NUYwMDIzNTU1MiAvKiBBU1RNZXRhZGF0YUhMU0wuY3Bw
ICovLApAQCAtNjE0LDggKzY2Niw2IEBACiAJCQkJNUMxREJDMTgxQjA0Mzc1RjAwMjM1NTUyIC8q
IFNlcGFyYXRlRGVjbGFyYXRpb25zLmNwcCAqLywKIAkJCQk1QzFEQkMxOTFCMDQzNzVGMDAyMzU1
NTIgLyogU2VwYXJhdGVEZWNsYXJhdGlvbnMuaCAqLywKIAkJCQk1QzFEQkMxQTFCMDQzNzVGMDAy
MzU1NTIgLyogU2hhZGVyVmFycy5jcHAgKi8sCi0JCQkJNUMxREJDMUIxQjA0Mzc1RjAwMjM1NTUy
IC8qIFNpbXBsaWZ5QXJyYXlBc3NpZ25tZW50LmNwcCAqLywKLQkJCQk1QzFEQkMxQzFCMDQzNzVG
MDAyMzU1NTIgLyogU2ltcGxpZnlBcnJheUFzc2lnbm1lbnQuaCAqLywKIAkJCQk1QzFEQkMxRDFC
MDQzNzVGMDAyMzU1NTIgLyogVHlwZXMuY3BwICovLAogCQkJCTVDMURCQzFFMUIwNDM3NUYwMDIz
NTU1MiAvKiBWYWxpZGF0ZVN3aXRjaC5jcHAgKi8sCiAJCQkJNUMxREJDMUYxQjA0Mzc1RjAwMjM1
NTUyIC8qIFZhbGlkYXRlU3dpdGNoLmggKi8sCkBAIC02NzAsMTMgKzcyMCwxMSBAQAogCQkJCTMx
MDEyREUwMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRHTFNMQmFzZS5oICovLAogCQkJCTMxMDEy
REUxMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRITFNMLmNwcCAqLywKIAkJCQkzMTAxMkRFMjE4
Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0SExTTC5oICovLAotCQkJCTMxMDEyREUzMThCOTdCOUIw
MDM5MDYyRiAvKiBwYXJzZUNvbnN0LmNwcCAqLywKIAkJCQkzMTAxMkRFNDE4Qjk3QjlCMDAzOTA2
MkYgLyogUGFyc2VDb250ZXh0LmNwcCAqLywKIAkJCQkzMTAxMkRFNTE4Qjk3QjlCMDAzOTA2MkYg
LyogUGFyc2VDb250ZXh0LmggKi8sCiAJCQkJMzEwMTJERTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBv
b2xBbGxvYy5jcHAgKi8sCiAJCQkJMzEwMTJERTcxOEI5N0I5QjAwMzkwNjJGIC8qIFBvb2xBbGxv
Yy5oICovLAogCQkJCTMxMDEyREU4MThCOTdCOUIwMDM5MDYyRiAvKiBQcmFnbWEuaCAqLywKLQkJ
CQkzMTAxMkRFOTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuY3BwICovLAogCQkJ
CTMxMDEyREVBMThCOTdCOUIwMDM5MDYyRiAvKiBRdWFsaWZpZXJBbGl2ZS5oICovLAogCQkJCTMx
MDEyREVEMThCOTdCOUIwMDM5MDYyRiAvKiBSZW5hbWVGdW5jdGlvbi5oICovLAogCQkJCTMxMDEy
REVFMThCOTdCOUIwMDM5MDYyRiAvKiBSZXdyaXRlRWxzZUJsb2Nrcy5jcHAgKi8sCkBAIC02OTMs
OCArNzQxLDYgQEAKIAkJCQkzMTAxMkRGRjE4Qjk3QjlCMDAzOTA2MkYgLyogVHJhbnNsYXRvckhM
U0wuY3BwICovLAogCQkJCTMxMDEyRTAwMThCOTdCOUIwMDM5MDYyRiAvKiBUcmFuc2xhdG9ySExT
TC5oICovLAogCQkJCTMxMDEyRTAxMThCOTdCOUIwMDM5MDYyRiAvKiBUeXBlcy5oICovLAotCQkJ
CTMxMDEyRTAyMThCOTdCOUIwMDM5MDYyRiAvKiBVbmZvbGRTaG9ydENpcmN1aXQuY3BwICovLAot
CQkJCTMxMDEyRTAzMThCOTdCOUIwMDM5MDYyRiAvKiBVbmZvbGRTaG9ydENpcmN1aXQuaCAqLywK
IAkJCQkzMTAxMkUwNDE4Qjk3QjlCMDAzOTA2MkYgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNw
cCAqLywKIAkJCQkzMTAxMkUwNTE4Qjk3QjlCMDAzOTA2MkYgLyogVW5mb2xkU2hvcnRDaXJjdWl0
QVNULmggKi8sCiAJCQkJMzEwMTJFMDgxOEI5N0I5QjAwMzkwNjJGIC8qIHV0aWwuY3BwICovLApA
QCAtNzk1LDcgKzg0MSw2IEBACiAJCQkJNUMxREJDNzkxQjA0MzhEMjAwMjM1NTUyIC8qIFF1ZXJ5
LmggKi8sCiAJCQkJNUMxREJDN0ExQjA0MzhEMjAwMjM1NTUyIC8qIHF1ZXJ5Y29udmVyc2lvbnMu
Y3BwICovLAogCQkJCTVDMURCQzdCMUIwNDM4RDIwMDIzNTU1MiAvKiBxdWVyeWNvbnZlcnNpb25z
LmggKi8sCi0JCQkJNUMxREJDN0MxQjA0MzhEMjAwMjM1NTUyIC8qIFJlZkNvdW50T2JqZWN0LmNw
cCAqLywKIAkJCQk1QzFEQkM3RDFCMDQzOEQyMDAyMzU1NTIgLyogUmVmQ291bnRPYmplY3QuaCAq
LywKIAkJCQk1QzFEQkM3RTFCMDQzOEQyMDAyMzU1NTIgLyogUmVuZGVyYnVmZmVyLmNwcCAqLywK
IAkJCQk1QzFEQkM3RjFCMDQzOEQyMDAyMzU1NTIgLyogUmVuZGVyYnVmZmVyLmggKi8sCkBAIC05
ODksNiArMTAzNCw4IEBACiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1QzMxNUQxMzFDQzVC
NkRBMDA3NzY2OTcgLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1QzMxNUQwNzFDQzVCNkRBMDA3NzY2OTcgLyogUmVtb3ZlRHluYW1pY0luZGV4aW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTAxMkUzQzE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBh
cnNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTA4QzNDREQxNkQ2Q0I2MTAwM0YwQjgz
IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDN0Q0NkYxOTEw
MjYyMTAwMEI4QzFGIC8qIGRlYnVnLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OSwxMCArMTA0Niwx
MCBAQAogCQkJCTMxMDEyRTU1MThCOTdCOUIwMDM5MDYyRiAvKiBQYXJzZUNvbnRleHQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDMURCREVGMUIwNDM4RDMwMDIzNTU1MiAvKiBGZW5jZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEwMTJFMkMxOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BVbnJvbGwu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDMzE1RDAzMUNDNUI2REEwMDc3NjY5NyAvKiBFeHRlbnNp
b25HTFNMLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkU2RDE4Qjk3QjlCMDAzOTA2MkYgLyog
VHJhbnNsYXRvckdMU0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzNFMUIwNDM3NUYwMDIz
NTU1MiAvKiBTZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMxMDEyRTQ2MThCOTdCOUIwMDM5MDYyRiAvKiBNTWFwLmggaW4gSGVhZGVycyAqLywKLQkJCQk1
QzFEQkM0MzFCMDQzNzVGMDAyMzU1NTIgLyogU2ltcGxpZnlBcnJheUFzc2lnbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDQzdENDczMTkxMDI2MjEwMDBCOEMxRiAvKiBtYXRodXRpbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNkIxOEI5N0I5QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JF
U1NMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkUwMDFCMDQzOEQzMDAyMzU1NTIgLyogUHJv
Z3JhbS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDExLDYgKzEwNTgsNyBAQAogCQkJCTMxMDEyRTIw
MThCOTdCOUIwMDM5MDYyRiAvKiBEZXBlbmRlbmN5R3JhcGhPdXRwdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxMDEyRTdDMThCOTdCOUIwMDM5MDYyRiAvKiBWYXJpYWJsZUluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDMURCRERCMUIwNDM4RDMwMDIzNTU1MiAvKiBDYXBzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1QzMxNUQwOTFDQzVCNkRBMDA3NzY2OTcgLyogUmVtb3ZlUG93LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzFEQkUwMjFCMDQzOEQzMDAyMzU1NTIgLyogUXVlcnkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMDEyRTYxMThCOTdCOUIwMDM5MDYyRiAvKiBTZWFyY2hTeW1ib2wuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDMURCRjMxMUIwNDM4RDMwMDIzNTU1MiAvKiBUZXh0dXJlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEwMjksMTIgKzEwNzcsMTQgQEAKIAkJCQk1Q0M3RDQ3MTE5MTAy
NjIxMDAwQjhDMUYgLyogZXZlbnRfdHJhY2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRF
NzFCMDQzOEQzMDAyMzU1NTIgLyogRGV2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkUw
NjFCMDQzOEQzMDAyMzU1NTIgLyogUmVmQ291bnRPYmplY3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVDMzE1RDA1MUNDNUI2REEwMDc3NjY5NyAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNUQxOEI5N0I5QjAwMzkwNjJGIC8qIFJlbmFtZUZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRGQTFCMDQzOEQzMDAyMzU1NTIgLyogaGlz
dG9ncmFtX21hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERDcxQjA0MzhEMzAwMjM1
NTUyIC8qIEJpbmFyeVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFM0ExOEI5N0I5
QjAwMzkwNjJGIC8qIEluaXRpYWxpemVHbG9iYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFE
QkMyOTFCMDQzNzVGMDAyMzU1NTIgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzFEQkJFNjFCMDQwNzVCMDAyMzU1NTIgLyogU2hhZGVyVmFycy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUMzMTVEMEIxQ0M1QjZEQTAwNzc2Njk3IC8qIFJld3JpdGVE
b1doaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMyNTFCMDQzNzVGMDAyMzU1NTIgLyog
YmxvY2tsYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzI3MUIwNDM3NUYwMDIzNTU1
MiAvKiBibG9ja2xheW91dEhMU0wuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTgwMThCOTdC
OUIwMDM5MDYyRiAvKiBWZXJzaW9uR0xTTC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDQzLDYgKzEw
OTMsNyBAQAogCQkJCTVDMURCREQ5MUIwNDM4RDMwMDIzNTU1MiAvKiBCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMDEyRTI3MThCOTdCOUIwMDM5MDYyRiAvKiBEaWFnbm9zdGljcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMzYxQjA0Mzc1RjAwMjM1NTUyIC8qIFBydW5lRW1wdHlE
ZWNsYXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMzE1RDAxMUNDNUI2REEwMDc3NjY5
NyAvKiBEZWZlckdsb2JhbEluaXRpYWxpemVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJE
RjYxQjA0MzhEMzAwMjM1NTUyIC8qIEZyYW1lYnVmZmVyQXR0YWNobWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNDN0Q0NkIxOTEwMjYyMDAwMEI4QzFGIC8qIGFuZ2xldXRpbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMDEyRTMyMThCOTdCOUIwMDM5MDYyRiAvKiBnbHNsYW5nX3RhYi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDU1LDcgKzExMDYsNiBAQAogCQkJCTVDQzdENDU4MTkxMDI0RTQw
MDBCOEMxRiAvKiBWYWxpZGF0ZU91dHB1dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTc0
MThCOTdCOUIwMDM5MDYyRiAvKiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMURCREY0MUIwNDM4RDMwMDIzNTU1MiAvKiBGcmFtZWJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMzEwMTJFNzIxOEI5N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0Q2lyY3Vp
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QjMxNjk3NERFRDAwNkZBQTVBIC8qIEV4cHJl
c3Npb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTM1MThCOTdCOUIwMDM5MDYy
RiAvKiBJbmZvU2luay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGM0ExQjA0MzhEMzAwMjM1
NTUyIC8qIHZhbGlkYXRpb25FUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY5LDYgKzExMTksNyBA
QAogCQkJCTMxMDEyRTY3MThCOTdCOUIwMDM5MDYyRiAvKiBSZXN0cmljdEZyYWdtZW50U2hhZGVy
VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0M3RDQ3QjE5MTAyNjIxMDAwQjhDMUYgLyog
dmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMjgxQjA0MzhEMzAwMjM1NTUyIC8q
IFNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMzE1RDExMUNDNUI2REEwMDc3NjY5NyAv
KiBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkYz
ODFCMDQzOEQzMDAyMzU1NTIgLyogdmFsaWRhdGlvbkVHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NUMxREJGM0MxQjA0MzhEMzAwMjM1NTUyIC8qIHZhbGlkYXRpb25FUzIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTMxMDEyRTc4MThCOTdCOUIwMDM5MDYyRiAvKiB1dGlsLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwNzksMTAgKzExMzAsMTIgQEAKIAkJCQlBMjY0RjhDRDE2OTc2MkFBMDA2RkFBNUEgLyog
a2hycGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQkY3MUIwNDM2RUMwMDIzNTU1
MiAvKiB0bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQkY1MUIwNDM2RUMwMDIzNTU1MiAv
KiBwbGF0Zm9ybS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMzMTVEMEYxQ0M1QjZEQTAwNzc2Njk3
IC8qIFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQzdENDdB
MTkxMDI2MjEwMDBCOEMxRiAvKiB1dGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEy
RTM5MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplRGxsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzFEQkJGMjFCMDQzNkVDMDAyMzU1NTIgLyogTWVtb3J5QnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMjY0RjhCNzE2OTc0REVEMDA2RkFBNUEgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTVDMzE1RDBEMUNDNUI2REEwMDc3NjY5NyAvKiBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0
dXJuaW5nQXJyYXlzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCOTE2OTc0REVEMDA2RkFB
NUEgLyogTWFjcm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTVBMThCOTdCOUIwMDM5MDYy
RiAvKiBRdWFsaWZpZXJBbGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFNTcxOEI5N0I5
QjAwMzkwNjJGIC8qIFBvb2xBbGxvYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE5LDYgKzExNzIs
NyBAQAogCQkJCTMxMDEyRTdBMThCOTdCOUIwMDM5MDYyRiAvKiBWYWxpZGF0ZUxpbWl0YXRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMzNDFCMDQzNzVGMDAyMzU1NTIgLyogT3BlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzQwMUIwNDM3NUYwMDIzNTU1MiAvKiBTZXBh
cmF0ZURlY2xhcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMzMTVDRkYxQ0M1QjZEQTAw
Nzc2Njk3IC8qIENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkRENjFCMDQzOEQzMDAy
MzU1NTIgLyogQXR0cmlidXRlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUzMzE4Qjk3
QjlCMDAzOTA2MkYgLyogSGFzaE5hbWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhDMjE2
OTc0REVEMDA2RkFBNUEgLyogVG9rZW4uaCBpbiBIZWFkZXJzICovLApAQCAtMTE4OCwxNCArMTI0
MiwxNyBAQAogCQkJCTMxMDEyRTI2MThCOTdCOUIwMDM5MDYyRiAvKiBEaWFnbm9zdGljcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzRDE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6
ZVZhcmlhYmxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU3RjE4Qjk3QjlCMDAzOTA2
MkYgLyogVmVyc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzMTVEMEExQ0M1QjZE
QTAwNzc2Njk3IC8qIFJld3JpdGVEb1doaWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEwOEMz
Q0RDMTZENkNCNjEwMDNGMEI4MyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUMxREJDNDUxQjA0Mzc1RjAwMjM1NTUyIC8qIFZhbGlkYXRlU3dpdGNoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTVDMURCREY1MUIwNDM4RDMwMDIzNTU1MiAvKiBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDNDQxQjA0Mzc1RjAwMjM1
NTUyIC8qIFR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcyMzA5QTU2MTgzQzI3REUwMDM3
MEI5MyAvKiBUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNkMxOEI5N0I5
QjAwMzkwNjJGIC8qIFRyYW5zbGF0b3JHTFNMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDMzE1
RDBFMUNDNUI2REEwMDc3NjY5NyAvKiBVbmZvbGRTaG9ydENpcmN1aXRUb0lmLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMURCRjQxMUIwNDM4RDMwMDIzNTU1MiAvKiBWZXJ0ZXhBdHRyaWJ1dGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QUMxNjk3NERFRDAwNkZBQTVBIC8qIERpYWdu
b3N0aWNzQmFzZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzMxNUQxMDFDQzVCNkRBMDA3NzY2
OTcgLyogVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzFEQkRFNDFCMDQzOEQzMDAyMzU1NTIgLyogRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzFEQkYyOTFCMDQzOEQzMDAyMzU1NTIgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTMxMDEyRTE1MThCOTdCOUIwMDM5MDYyRiAvKiBDb2RlR2VuLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTIwNCw3ICsxMjYxLDcgQEAKIAkJCQk1Q0M3RDQ3MjE5MTAyNjIxMDAwQjhDMUYgLyogbWF0
aHV0aWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJFMDcxQjA0MzhEMzAwMjM1NTUyIC8q
IFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzQjE4Qjk3QjlCMDAz
OTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1
QzFEQkUwNTFCMDQzOEQzMDAyMzU1NTIgLyogUmVmQ291bnRPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUMzMTVEMDIxQ0M1QjZEQTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdMU0wuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNDN0Q0NzAxOTEwMjYyMTAwMEI4QzFGIC8qIGV2ZW50X3RyYWNl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYzNzFCMDQzOEQzMDAyMzU1NTIgLyogdmFs
aWRhdGlvbkVHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzMTE4Qjk3QjlCMDAzOTA2
MkYgLyogZ2xzbGFuZ190YWIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjIwLDYgKzEyNzcsNyBA
QAogCQkJCUEyNjRGOEFFMTY5NzRERUQwMDZGQUE1QSAvKiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU0RDE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0
R0xTTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzMDE4Qjk3QjlCMDAzOTA2MkYgLyog
Z2xzbGFuZ19sZXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzMTVEMDAxQ0M1QjZEQTAwNzc2
Njk3IC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
MURCREU2MUIwNDM4RDMwMDIzNTU1MiAvKiBEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUMxREJEREYxQjA0MzhEMzAwMjM1NTUyIC8qIENvbmZpZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzFEQkRFQTFCMDQzOEQzMDAyMzU1NTIgLyogRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0xMjM1LDExICsxMjkzLDEwIEBACiAJCQkJMzEwMTJFNjAxOEI5N0I5QjAwMzkwNjJGIC8qIFNl
YXJjaFN5bWJvbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MjMwOUE1ODE4M0MyN0YzMDAzNzBC
OTMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUyODE4
Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkzMTAxMkU1OTE4Qjk3QjlCMDAzOTA2MkYgLyogUXVhbGlmaWVyQWxpdmUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMzEwMTJFNzExOEI5N0I5QjAwMzkwNjJGIC8qIFVuZm9sZFNob3J0Q2lyY3Vp
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU2NDE4Qjk3QjlCMDAzOTA2MkYgLyogU3lt
Ym9sVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJGMzUxQjA0MzhEMzAwMjM1NTUy
IC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDMjYxQjA0Mzc1RjAwMjM1
NTUyIC8qIGJsb2NrbGF5b3V0SExTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzMxNUQwODFD
QzVCNkRBMDA3NzY2OTcgLyogUmVtb3ZlUG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRG
OEI0MTY5NzRERUQwMDZGQUE1QSAvKiBJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFE
QkMzMDFCMDQzNzVGMDAyMzU1NTIgLyogSW50ZXJtTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0M3RDQ3OTE5MTAyNjIxMDAwQjhDMUYgLyogdXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMTI2Miw3ICsxMzE5LDYgQEAKIAkJCQk1QzFEQkM0MTFCMDQzNzVGMDAyMzU1NTIgLyog
U2hhZGVyVmFycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYzMzFCMDQzOEQzMDAyMzU1
NTIgLyogVHJhbnNmb3JtRmVlZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFMzQx
OEI5N0I5QjAwMzkwNjJGIC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTMxMDEy
RTUzMThCOTdCOUIwMDM5MDYyRiAvKiBwYXJzZUNvbnN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTVDMURCQzIwMUIwNDM3NUYwMDIzNTU1MiAvKiBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFNTYxOEI5N0I5QjAwMzkwNjJGIC8qIFBv
b2xBbGxvYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU2NjE4Qjk3QjlCMDAzOTA2MkYg
LyogUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEy
NzIsMTIgKzEzMjgsMTUgQEAKIAkJCQkzMTAxMkU3NzE4Qjk3QjlCMDAzOTA2MkYgLyogdXRpbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRFMjFCMDQzOEQzMDAyMzU1NTIgLyogQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkU1MTE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0
cHV0SExTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzMxNUQwQzFDQzVCNkRBMDA3NzY2OTcg
LyogU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTAxMkUzNjE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1QzFEQkUwMTFCMDQzOEQzMDAyMzU1NTIgLyogUXVlcnkuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxREJGMzkxQjA0MzhEMzAwMjM1NTUyIC8qIHZhbGlkYXRpb25FUy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRGRjFCMDQzOEQzMDAyMzU1NTIgLyogUHJvZ3JhbS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzMxNUQwNDFDQzVCNkRBMDA3NzY2OTcgLyogUmVjb3Jk
Q29uc3RhbnRQcmVjaXNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFN0IxOEI5N0I5
QjAwMzkwNjJGIC8qIFZhcmlhYmxlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYy
QjFCMDQzOEQzMDAyMzU1NTIgLyogU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzMTVE
MDYxQ0M1QjZEQTAwNzc2Njk3IC8qIFJlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1QzFEQkJGNjFCMDQzNkVDMDAyMzU1NTIgLyogdGxzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDQzdENDUyMTkxMDI0RTQwMDBCOEMxRiAvKiBMb29wSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1QzFEQkMzRjFCMDQzNzVGMDAyMzU1NTIgLyogU2VwYXJhdGVEZWNsYXJh
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjg1LDE1ICsxMzQ0LDE2IEBACiAJCQkJMzEw
MTJFN0QxOEI5N0I5QjAwMzkwNjJGIC8qIFZhcmlhYmxlUGFja2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDMURCREYzMUIwNDM4RDMwMDIzNTU1MiAvKiBGcmFtZWJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMTAxMkUxRjE4Qjk3QjlCMDAzOTA2MkYgLyogRGVwZW5kZW5jeUdyYXBo
T3V0cHV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDMzE1RDEyMUNDNUI2REEwMDc3NjY5NyAv
KiBWYWxpZGF0ZU1heFBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJERDgx
QjA0MzhEMzAwMjM1NTUyIC8qIEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkRE
MzFCMDQzOEQzMDAyMzU1NTIgLyogYW5nbGV0eXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzFEQkYyNTFCMDQzOEQzMDAyMzU1NTIgLyogUmVzb3VyY2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxMDEyRTRCMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRFU1NMLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEyNjRGOEJFMTY5NzRERUQwMDZGQUE1QSAvKiBQcmVwcm9jZXNzb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUMzMTVDRkUxQ0M1QjZEQTAwNzc2Njk3IC8qIENhY2hl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREVFMUIwNDM4RDMwMDIzNTU1MiAvKiBGZW5j
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0M3RDQ1NzE5MTAyNEU0MDAwQjhDMUYgLyogVmFs
aWRhdGVPdXRwdXRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQkYwMUIwNDM2RUMwMDIz
NTU1MiAvKiBhbmdsZXV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVDMURCQzQyMUIwNDM3
NUYwMDIzNTU1MiAvKiBTaW1wbGlmeUFycmF5QXNzaWdubWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkzMTAxMkUyQjE4Qjk3QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1QzFEQkMzRDFCMDQzNzVGMDAyMzU1NTIgLyogU2VwYXJhdGVBcnJheUlu
aXRpYWxpemF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDOUZGRjRFMTkxMDJBMDAwMDI1
QjhGQSAvKiBGbGFnU3RkMTQwU3RydWN0cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEzMjUsNiAr
MTM4NSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfRU5BQkxFX09QRU5HTCwKKwkJCQkJQU5HTEVfRU5BQkxF
X0dMU0wsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKQEAgLTEz
NDcsNiArMTQxMSwxMCBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdM
RS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfRU5BQkxFX09QRU5HTCwKKwkJCQkJQU5HTEVf
RU5BQkxFX0dMU0wsCisJCQkJKTsKIAkJCX07CiAJCQluYW1lID0gRGVidWc7CiAJCX07CkBAIC0x
MzU0LDYgKzE0MjIsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYmFz
ZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA1RDdDNTlDNTEyMDhDNjhCMDAxQzg3M0UgLyogQU5H
TEUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0geworCQkJCUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX0VOQUJMRV9PUEVOR0wsCisJCQkJCUFOR0xF
X0VOQUJMRV9HTFNMLAorCQkJCSk7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BVVRIT1JTCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0FVVEhPUlMJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0FVVEhPUlMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAK
IE5WSURJQSBDb3Jwb3JhdGlvbgogT3BlcmEgU29mdHdhcmUgQVNBCiBUaGUgUXQgQ29tcGFueSBM
dGQuCitBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCiAKIEphY2VrIENhYmFuCiBNYXJrIENh
bGxvdwpAQCAtNDEsMyArNDIsNSBAQAogWXVyaSBPJ0Rvbm5lbGwKIEpvc2ggU29yZWYKIE1ha3Mg
TmF1bW92CitKaW55b3VuZyBIdXIKK1NlYmFzdGlhbiBCZXJnc3RlaW4KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL0JVSUxELmduCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL0JVSUxELmduCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9CVUlMRC5nbgkod29ya2luZyBjb3B5KQpAQCAtMSwyNSArMSwzNCBAQAotIyBDb3B5cmln
aHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IDIwMTQtMjAxNSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQogIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCi1nbGVz
X2d5cGkgPSBleGVjX3NjcmlwdCgKLSAgIi8vYnVpbGQvZ3lwaV90b19nbi5weSIsCi0gIFsgcmVi
YXNlX3BhdGgoInNyYy9saWJHTEVTdjIuZ3lwaSIpIF0sCi0gICJzY29wZSIsCi0gIFsgInNyYy9s
aWJHTEVTdjIuZ3lwaSIgXSkKKyMgaW1wb3J0IHRoZSB1c2VfeDExIHZhcmlhYmxlCitpbXBvcnQo
Ii8vYnVpbGQvY29uZmlnL3VpLmduaSIpCitpbXBvcnQoIi8vdGhpcmRfcGFydHkvYW5nbGUvYnVp
bGQvYW5nbGVfY29tbW9uLmduaSIpCiAKLWNvbXBpbGVyX2d5cGkgPSBleGVjX3NjcmlwdCgKLSAg
Ii8vYnVpbGQvZ3lwaV90b19nbi5weSIsCi0gIFsgcmViYXNlX3BhdGgoInNyYy9jb21waWxlci5n
eXBpIikgXSwKLSAgInNjb3BlIiwKLSAgWyAic3JjL2NvbXBpbGVyLmd5cGkiIF0pCithbmdsZV9n
aXRfaXNfcHJlc2VudCA9IGV4ZWNfc2NyaXB0KCJzcmMvY29tbWl0X2lkLnB5IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJjaGVjayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmViYXNlX3BhdGgoIi4iLCByb290X2J1aWxkX2RpciksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1
ZSIpCiAKK2FuZ2xlX3VzZV9jb21taXRfaWQgPSBhbmdsZV9naXRfaXNfcHJlc2VudCA9PSAxCisK
K2dsZXNfZ3lwaSA9IGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2d5cGlfdG9fZ24ucHkiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgWyByZWJhc2VfcGF0aCgic3JjL2xpYkdMRVN2Mi5neXBpIikgXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBbICJzcmMvbGliR0xFU3YyLmd5cGkiIF0pCisKK2NvbXBpbGVyX2d5cGkgPSBleGVjX3Njcmlw
dCgiLy9idWlsZC9neXBpX3RvX2duLnB5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
IHJlYmFzZV9wYXRoKCJzcmMvY29tcGlsZXIuZ3lwaSIpIF0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInNjb3BlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICJzcmMvY29t
cGlsZXIuZ3lwaSIgXSkKKwogIyBUaGlzIGNvbmZpZyBpcyBleHBvcnRlZCB0byBkZXBlbmRlbnQg
dGFyZ2V0cyAoYW5kIGFsc28gYXBwbGllZCB0byBpbnRlcm5hbAogIyBvbmVzKS4KIGNvbmZpZygi
ZXh0ZXJuYWxfY29uZmlnIikgewotICBpbmNsdWRlX2RpcnMgPSBbCi0gICAgImluY2x1ZGUiLAot
ICBdCisgIGluY2x1ZGVfZGlycyA9IFsgImluY2x1ZGUiIF0KIH0KIAogIyBUaGlzIGNvbmZpZyBp
cyBhcHBsaWVkIHRvIGludGVybmFsIEFuZ2xlIHRhcmdldHMgKG5vdCBwdXNoZWQgdG8gZGVwZW5k
ZW50cykuCkBAIC0zMCwyNyArMzksMTUgQEAKICAgXQogfQogCi1hbmdsZV9lbmFibGVfZDNkOSA9
IGZhbHNlCi1hbmdsZV9lbmFibGVfZDNkMTEgPSBmYWxzZQotYW5nbGVfZW5hYmxlX2dsID0gZmFs
c2UKLQogaWYgKGlzX3dpbikgewotICBhbmdsZV9lbmFibGVfZDNkOSA9IHRydWUKLSAgYW5nbGVf
ZW5hYmxlX2QzZDExID0gdHJ1ZQotICBhbmdsZV9lbmFibGVfZ2wgPSB0cnVlCi0KLSAgaW1wb3J0
KCIvL2J1aWxkL2NvbmZpZy93aW4vdmlzdWFsX3N0dWRpb192ZXJzaW9uLmduaSIpCiAgIGNvcHko
ImNvcHlfY29tcGlsZXJfZGxsIikgewotICAgIHNvdXJjZXMgPSBbICIkd2luZG93c19zZGtfcGF0
aC9SZWRpc3QvRDNELyR0YXJnZXRfY3B1L2QzZGNvbXBpbGVyXzQ3LmRsbCIgXQotICAgIG91dHB1
dHMgPSBbICIkcm9vdF9idWlsZF9kaXIvZDNkY29tcGlsZXJfNDcuZGxsIiBdCisgICAgc291cmNl
cyA9IFsKKyAgICAgICIkd2luZG93c19zZGtfcGF0aC9SZWRpc3QvRDNELyR0YXJnZXRfY3B1L2Qz
ZGNvbXBpbGVyXzQ3LmRsbCIsCisgICAgXQorICAgIG91dHB1dHMgPSBbCisgICAgICAiJHJvb3Rf
b3V0X2Rpci9kM2Rjb21waWxlcl80Ny5kbGwiLAorICAgIF0KICAgfQotCi19ICAjIGlzX3dpbgot
Ci1hbmdsZV9lbmFibGVfaGxzbCA9IGZhbHNlCi0KLWlmIChhbmdsZV9lbmFibGVfZDNkOSB8fCBh
bmdsZV9lbmFibGVfZDNkMTEpIHsKLSAgYW5nbGVfZW5hYmxlX2hsc2wgPSB0cnVlCiB9CiAKIGNv
bXBvbmVudCgidHJhbnNsYXRvciIpIHsKQEAgLTYxLDExICs1OCw2IEBACiAKICAgZGVmaW5lcyA9
IFsgIkFOR0xFX1RSQU5TTEFUT1JfSU1QTEVNRU5UQVRJT04iIF0KIAotICBpZiAoYW5nbGVfZW5h
YmxlX2hsc2wpIHsKLSAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKGNvbXBpbGVyX2d5cGkuYW5n
bGVfdHJhbnNsYXRvcl9saWJfaGxzbF9zb3VyY2VzLCAiLiIsICJzcmMiKQotICAgIGRlZmluZXMg
Kz0gWyAiQU5HTEVfRU5BQkxFX0hMU0wiIF0KLSAgfQotCiAgIGNvbmZpZ3MgLT0gWyAiLy9idWls
ZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdzICs9IFsKICAgICAi
OmludGVybmFsX2NvbmZpZyIsCkBAIC04Nyw3ICs3OSw4IEBACiAgICAgImluY2x1ZGUvR0xFUzIv
Z2wyZXh0LmgiLAogICAgICJpbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgiLAogICAgICJpbmNs
dWRlL0dMRVMzL2dsMy5oIiwKLSAgICAiaW5jbHVkZS9HTEVTMy9nbDNleHQuaCIsCisgICAgImlu
Y2x1ZGUvR0xFUzMvZ2wzMS5oIiwKKyAgICAiaW5jbHVkZS9HTEVTMy9nbDMyLmgiLAogICAgICJp
bmNsdWRlL0dMRVMzL2dsM3BsYXRmb3JtLmgiLAogICAgICJpbmNsdWRlL0dMU0xBTkcvU2hhZGVy
TGFuZy5oIiwKICAgICAiaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCIsCkBAIC0xMDgsMjAgKzEw
MSw0NSBAQAogICBkZWZpbmVzID0gWyAiQU5HTEVfVFJBTlNMQVRPUl9TVEFUSUMiIF0KIH0KIAor
Y29uZmlnKCJkZWJ1Z19hbm5vdGF0aW9uc19jb25maWciKSB7CisgIGlmIChpc19kZWJ1Zykgewor
ICAgIGRlZmluZXMgPSBbICJBTkdMRV9FTkFCTEVfREVCVUdfQU5OT1RBVElPTlMiIF0KKyAgfQor
fQorCiBzdGF0aWNfbGlicmFyeSgiYW5nbGVfY29tbW9uIikgewogICBzb3VyY2VzID0gcmViYXNl
X3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2NvbW1vbl9zb3VyY2VzLCAiLiIsICJzcmMiKQorCiAg
IGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQog
ICBjb25maWdzICs9IFsKICAgICAiOmludGVybmFsX2NvbmZpZyIsCisgICAgIjpkZWJ1Z19hbm5v
dGF0aW9uc19jb25maWciLAorICAgICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1
bV9jb2RlIiwKICAgXQorCisgIHB1YmxpY19kZXBzID0gWyAiOmNvbW1pdF9pZCIgXQogfQogCiBz
dGF0aWNfbGlicmFyeSgidHJhbnNsYXRvcl9saWIiKSB7CiAgIHNvdXJjZXMgPSByZWJhc2VfcGF0
aChjb21waWxlcl9neXBpLmFuZ2xlX3RyYW5zbGF0b3JfbGliX3NvdXJjZXMsICIuIiwgInNyYyIp
CisgIGRlZmluZXMgPSBbXQogCisgIGlmIChhbmdsZV9lbmFibGVfZXNzbCkgeworICAgIHNvdXJj
ZXMgKz0KKyAgICAgICAgcmViYXNlX3BhdGgoY29tcGlsZXJfZ3lwaS5hbmdsZV90cmFuc2xhdG9y
X2xpYl9lc3NsX3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgZGVmaW5lcyArPSBbICJBTkdMRV9F
TkFCTEVfRVNTTCIgXQorICB9CisKKyAgaWYgKGFuZ2xlX2VuYWJsZV9nbHNsKSB7CisgICAgc291
cmNlcyArPQorICAgICAgICByZWJhc2VfcGF0aChjb21waWxlcl9neXBpLmFuZ2xlX3RyYW5zbGF0
b3JfbGliX2dsc2xfc291cmNlcywgIi4iLCAic3JjIikKKyAgICBkZWZpbmVzICs9IFsgIkFOR0xF
X0VOQUJMRV9HTFNMIiBdCisgIH0KKwogICBpZiAoYW5nbGVfZW5hYmxlX2hsc2wpIHsKLSAgICBz
b3VyY2VzICs9IHJlYmFzZV9wYXRoKGNvbXBpbGVyX2d5cGkuYW5nbGVfdHJhbnNsYXRvcl9saWJf
aGxzbF9zb3VyY2VzLCAiLiIsICJzcmMiKQotICAgIGRlZmluZXMgPSBbICJBTkdMRV9FTkFCTEVf
SExTTCIgXQorICAgIHNvdXJjZXMgKz0KKyAgICAgICAgcmViYXNlX3BhdGgoY29tcGlsZXJfZ3lw
aS5hbmdsZV90cmFuc2xhdG9yX2xpYl9obHNsX3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgZGVm
aW5lcyArPSBbICJBTkdMRV9FTkFCTEVfSExTTCIgXQogICB9CiAgIGNvbmZpZ3MgLT0gWyAiLy9i
dWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdzICs9IFsKQEAg
LTE2NywxOSArMTg1LDMyIEBACiAgIGluY2x1ZGVfZGlycyA9IFsgIiRyb290X2dlbl9kaXIvYW5n
bGUiIF0KIH0KIAotYWN0aW9uKCJjb21taXRfaWQiKSB7Ci0gIHNjcmlwdCA9ICJzcmMvY29tbWl0
X2lkLnB5IgorY29tbWl0X2lkX291dHB1dF9maWxlID0gIiRyb290X2dlbl9kaXIvYW5nbGUvaWQv
Y29tbWl0LmgiCitpZiAoYW5nbGVfdXNlX2NvbW1pdF9pZCkgeworICBhY3Rpb24oImNvbW1pdF9p
ZCIpIHsKKyAgICBzY3JpcHQgPSAic3JjL2NvbW1pdF9pZC5weSIKKyAgICBvdXRwdXRzID0gWwor
ICAgICAgY29tbWl0X2lkX291dHB1dF9maWxlLAorICAgIF0KIAotICBvdXRwdXRfZmlsZSA9ICIk
cm9vdF9nZW5fZGlyL2FuZ2xlL2lkL2NvbW1pdC5oIgotICBvdXRwdXRzID0gWyBvdXRwdXRfZmls
ZSBdCisgICAgYXJncyA9IFsKKyAgICAgICJnZW4iLAorICAgICAgcmViYXNlX3BhdGgoIi4iLCBy
b290X2J1aWxkX2RpciksCisgICAgICByZWJhc2VfcGF0aChjb21taXRfaWRfb3V0cHV0X2ZpbGUs
IHJvb3RfYnVpbGRfZGlyKSwKKyAgICBdCiAKLSAgYXJncyA9IFsKLSAgICAiZ2VuIiwKLSAgICBy
ZWJhc2VfcGF0aCgiLiIsIHJvb3RfYnVpbGRfZGlyKSwKLSAgICByZWJhc2VfcGF0aChvdXRwdXRf
ZmlsZSwgcm9vdF9idWlsZF9kaXIpLAotICBdCi0KLSAgcHVibGljX2NvbmZpZ3MgPSBbICI6Y29t
bWl0X2lkX2NvbmZpZyIgXQorICAgIHB1YmxpY19jb25maWdzID0gWyAiOmNvbW1pdF9pZF9jb25m
aWciIF0KKyAgfQorfSBlbHNlIHsKKyAgY29weSgiY29tbWl0X2lkIikgeworICAgIHNvdXJjZXMg
PSBbCisgICAgICAic3JjL2NvbW1pdC5oIiwKKyAgICBdCisgICAgb3V0cHV0cyA9IFsKKyAgICAg
IGNvbW1pdF9pZF9vdXRwdXRfZmlsZSwKKyAgICBdCisgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6
Y29tbWl0X2lkX2NvbmZpZyIgXQorICB9CiB9CiAKIGNvbmZpZygibGliQU5HTEVfY29uZmlnIikg
ewpAQCAtMTk0LDEyICsyMjUsMjYgQEAKICAgaWYgKGFuZ2xlX2VuYWJsZV9nbCkgewogICAgIGRl
ZmluZXMgKz0gWyAiQU5HTEVfRU5BQkxFX09QRU5HTCIgXQogICB9CisgIGlmICh1c2VfeDExKSB7
CisgICAgZGVmaW5lcyArPSBbICJBTkdMRV9VU0VfWDExIiBdCisgIH0KICAgZGVmaW5lcyArPSBb
Ci0gICAgIkdMX0FQSUNBTEw9IiwKLSAgICAiR0xfR0xFWFRfUFJPVE9UWVBFUz0iLAotICAgICJF
R0xBUEk9IiwKKyAgICAiR0xfR0xFWFRfUFJPVE9UWVBFUyIsCisgICAgIkVHTF9FR0xFWFRfUFJP
VE9UWVBFUyIsCiAgIF0KKwogICBpZiAoaXNfd2luKSB7CisgICAgZGVmaW5lcyArPSBbCisgICAg
ICAiR0xfQVBJQ0FMTD0iLAorICAgICAgIkVHTEFQST0iLAorICAgIF0KKyAgfSBlbHNlIHsKKyAg
ICBkZWZpbmVzICs9IFsKKyAgICAgICJHTF9BUElDQUxMPV9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoXCJkZWZhdWx0XCIpKSkiLAorICAgICAgIkVHTEFQST1fX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5KFwiZGVmYXVsdFwiKSkpIiwKKyAgICBdCisgIH0KKyAgaWYgKGlzX3dpbikgewogICAgIGNm
bGFncyArPSBbICIvd2Q0NTMwIiBdICAjIEMrKyBleGNlcHRpb24gaGFuZGxlciB1c2VkLCBidXQg
dW53aW5kIHNlbWFudGljcyBhcmUgbm90IGVuYWJsZWQuCiAgIH0KIH0KQEAgLTIwOSwxOCArMjU0
LDIwIEBACiAKICAgaW5jbHVkZV9kaXJzID0gW10KICAgbGlicyA9IFtdCi0gIGRlZmluZXMgPSBb
Ci0gICAgIkxJQkFOR0xFX0lNUExFTUVOVEFUSU9OIiwKKyAgZGVmaW5lcyA9IFsgIkxJQkFOR0xF
X0lNUExFTUVOVEFUSU9OIiBdCisKKyAgZGVwcyA9IFsKKyAgICAiOmFuZ2xlX2NvbW1vbiIsCisg
ICAgIjpjb21taXRfaWQiLAorICAgICI6aW5jbHVkZXMiLAorICAgICI6dHJhbnNsYXRvcl9zdGF0
aWMiLAogICBdCiAKICAgIyBTaGFyZWQgRDNEIHNvdXJjZXMuCiAgIGlmIChhbmdsZV9lbmFibGVf
ZDNkOSB8fCBhbmdsZV9lbmFibGVfZDNkMTEpIHsKICAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRo
KGdsZXNfZ3lwaS5saWJhbmdsZV9kM2Rfc2hhcmVkX3NvdXJjZXMsICIuIiwgInNyYyIpCiAKLSAg
ICBkZWZpbmVzICs9IFsKLSAgICAgICJBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxF
X05BTUVTPXsgIiArCi0gICAgICAgICJcImQzZGNvbXBpbGVyXzQ3LmRsbFwiLCBcImQzZGNvbXBp
bGVyXzQ2LmRsbFwiLCBcImQzZGNvbXBpbGVyXzQzLmRsbFwiIH0iLAotICAgIF0KKyAgICBkZWZp
bmVzICs9IFsgIkFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9eyAiICsg
IlwiZDNkY29tcGlsZXJfNDcuZGxsXCIsIFwiZDNkY29tcGlsZXJfNDYuZGxsXCIsIFwiZDNkY29t
cGlsZXJfNDMuZGxsXCIgfSIgXQogICB9CiAKICAgaWYgKGFuZ2xlX2VuYWJsZV9kM2Q5KSB7CkBA
IC0yNDEsMzAgKzI4OCwzMiBAQAogICAgIGlmIChpc193aW4pIHsKICAgICAgIHNvdXJjZXMgKz0g
cmViYXNlX3BhdGgoZ2xlc19neXBpLmxpYmFuZ2xlX2dsX3dnbF9zb3VyY2VzLCAiLiIsICJzcmMi
KQogICAgIH0KKyAgICBpZiAodXNlX3gxMSkgeworICAgICAgc291cmNlcyArPSByZWJhc2VfcGF0
aChnbGVzX2d5cGkubGliYW5nbGVfZ2xfZ2x4X3NvdXJjZXMsICIuIiwgInNyYyIpCisgICAgICBk
ZXBzICs9IFsKKyAgICAgICAgInNyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsOmxpYlhOVkN0cmwi
CisgICAgICBdCisgICAgICBsaWJzICs9IFsKKyAgICAgICAgIlgxMSIsCisgICAgICAgICJYaSIs
CisgICAgICAgICJYZXh0IiwKKyAgICAgIF0KKyAgICB9CiAgIH0KIAogICBpZiAoaXNfZGVidWcp
IHsKLSAgICBkZWZpbmVzICs9IFsKLSAgICAgICJBTkdMRV9HRU5FUkFURV9TSEFERVJfREVCVUdf
SU5GTyIsCi0gICAgICAiQU5HTEVfRU5BQkxFX0RFQlVHX0FOTk9UQVRJT05TIiwKLSAgICBdCisg
ICAgZGVmaW5lcyArPSBbICJBTkdMRV9HRU5FUkFURV9TSEFERVJfREVCVUdfSU5GTyIgXQogICB9
CiAKICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl
IiBdCiAgIGNvbmZpZ3MgKz0gWwogICAgICI6Y29tbWl0X2lkX2NvbmZpZyIsCisgICAgIjpkZWJ1
Z19hbm5vdGF0aW9uc19jb25maWciLAogICAgICI6bGliQU5HTEVfY29uZmlnIiwKICAgICAiOmlu
dGVybmFsX2NvbmZpZyIsCiAgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVt
X2NvZGUiLAogICBdCiAKLSAgZGVwcyA9IFsKLSAgICAiOmNvbW1pdF9pZCIsCi0gICAgIjppbmNs
dWRlcyIsCi0gICAgIjp0cmFuc2xhdG9yX3N0YXRpYyIsCi0gICAgIjphbmdsZV9jb21tb24iLAot
ICBdCi0KICAgaWYgKGlzX3dpbikgewogICAgIGRlcHMgKz0gWyAiOmNvcHlfY29tcGlsZXJfZGxs
IiBdCiAgIH0KQEAgLTI3NCwyMSArMzIzLDIwIEBACiAgIHNvdXJjZXMgPSByZWJhc2VfcGF0aChn
bGVzX2d5cGkubGliZ2xlc3YyX3NvdXJjZXMsICIuIiwgInNyYyIpCiAKICAgaWYgKGlzX3dpbikg
ewotICAgIGxkZmxhZ3MgPSBbICIvREVGOiIgKwotICAgICAgICAgICAgICAgIHJlYmFzZV9wYXRo
KCJzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYiLCByb290X2J1aWxkX2RpcikgXQorICAgIGxk
ZmxhZ3MgPQorICAgICAgICBbICIvREVGOiIgKyByZWJhc2VfcGF0aCgic3JjL2xpYkdMRVN2Mi9s
aWJHTEVTdjIuZGVmIiwgcm9vdF9idWlsZF9kaXIpIF0KICAgfQogCiAgIGNvbmZpZ3MgLT0gWyAi
Ly9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQogICBjb25maWdzICs9IFsK
ICAgICAiOmludGVybmFsX2NvbmZpZyIsCiAgICAgIjpjb21taXRfaWRfY29uZmlnIiwKKyAgICAi
OmRlYnVnX2Fubm90YXRpb25zX2NvbmZpZyIsCiAgICAgIjpsaWJBTkdMRV9jb25maWciLAogICAg
ICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKICAgXQogCi0gIGRl
ZmluZXMgPSBbCi0gICAgIkxJQkdMRVNWMl9JTVBMRU1FTlRBVElPTiIsCi0gIF0KKyAgZGVmaW5l
cyA9IFsgIkxJQkdMRVNWMl9JTVBMRU1FTlRBVElPTiIgXQogCiAgIGRlcHMgPSBbCiAgICAgIjpp
bmNsdWRlcyIsCkBAIC0zMDAsMjQgKzM0OCw3MyBAQAogICBzb3VyY2VzID0gcmViYXNlX3BhdGgo
Z2xlc19neXBpLmxpYmVnbF9zb3VyY2VzLCAiLiIsICJzcmMiKQogCiAgIGlmIChpc193aW4pIHsK
LSAgICBsZGZsYWdzID0gWyAiL0RFRjoiICsKLSAgICAgICAgICAgICAgICByZWJhc2VfcGF0aCgi
c3JjL2xpYkVHTC9saWJFR0wuZGVmIiwgcm9vdF9idWlsZF9kaXIpIF0KKyAgICBsZGZsYWdzID0g
WyAiL0RFRjoiICsgcmViYXNlX3BhdGgoInNyYy9saWJFR0wvbGliRUdMLmRlZiIsIHJvb3RfYnVp
bGRfZGlyKSBdCiAgIH0KIAogICBjb25maWdzIC09IFsgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVy
OmNocm9taXVtX2NvZGUiIF0KICAgY29uZmlncyArPSBbCiAgICAgIjppbnRlcm5hbF9jb25maWci
LAogICAgICI6Y29tbWl0X2lkX2NvbmZpZyIsCisgICAgIjpkZWJ1Z19hbm5vdGF0aW9uc19jb25m
aWciLAogICAgICI6bGliQU5HTEVfY29uZmlnIiwKICAgICAiLy9idWlsZC9jb25maWcvY29tcGls
ZXI6bm9fY2hyb21pdW1fY29kZSIsCiAgIF0KIAorICBkZWZpbmVzID0gWyAiTElCRUdMX0lNUExF
TUVOVEFUSU9OIiBdCisKKyAgZGVwcyA9IFsKKyAgICAiOmluY2x1ZGVzIiwKKyAgICAiOmxpYkdM
RVN2MiIsCisgIF0KK30KKwordXRpbF9neXBpID0gZXhlY19zY3JpcHQoIi8vYnVpbGQvZ3lwaV90
b19nbi5weSIsCisgICAgICAgICAgICAgICAgICAgICAgICBbIHJlYmFzZV9wYXRoKCJ1dGlsL3V0
aWwuZ3lwIikgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBbICJ1dGlsL3V0aWwuZ3lwIiBdKQorCitjb25maWcoImFuZ2xlX3V0aWxf
Y29uZmlnIikgeworICBpbmNsdWRlX2RpcnMgPSBbICJ1dGlsIiBdCisgIGlmIChpc19saW51eCkg
eworICAgIGxpYnMgPSBbICJYMTEiIF0KKyAgfQorfQorCitzdGF0aWNfbGlicmFyeSgiYW5nbGVf
dXRpbCIpIHsKKyAgc291cmNlcyA9IHJlYmFzZV9wYXRoKHV0aWxfZ3lwaS51dGlsX3NvdXJjZXMs
ICIuIiwgInV0aWwiKQorCisgIGlmIChpc193aW4pIHsKKyAgICBzb3VyY2VzICs9IHJlYmFzZV9w
YXRoKHV0aWxfZ3lwaS51dGlsX3dpbjMyX3NvdXJjZXMsICIuIiwgInV0aWwiKQorICB9CisKKyAg
aWYgKGlzX2xpbnV4KSB7CisgICAgc291cmNlcyArPSByZWJhc2VfcGF0aCh1dGlsX2d5cGkudXRp
bF9saW51eF9zb3VyY2VzLCAiLiIsICJ1dGlsIikKKyAgICBsaWJzID0gWyAicnQiIF0KKyAgfQor
CisgIGlmIChpc19tYWMpIHsKKyAgICBzb3VyY2VzICs9IHJlYmFzZV9wYXRoKHV0aWxfZ3lwaS51
dGlsX29zeF9zb3VyY2VzLCAiLiIsICJ1dGlsIikKKyAgfQorCisgIGlmICh1c2VfeDExKSB7Cisg
ICAgc291cmNlcyArPSByZWJhc2VfcGF0aCh1dGlsX2d5cGkudXRpbF94MTFfc291cmNlcywgIi4i
LCAidXRpbCIpCisgIH0KKwogICBkZWZpbmVzID0gWwotICAgICJMSUJFR0xfSU1QTEVNRU5UQVRJ
T04iLAorICAgICJHTF9HTEVYVF9QUk9UT1RZUEVTIiwKKyAgICAiRUdMX0VHTEVYVF9QUk9UT1RZ
UEVTIiwKICAgXQogCisgIGNvbmZpZ3MgKz0gWyAiOmRlYnVnX2Fubm90YXRpb25zX2NvbmZpZyIg
XQorCisgIHB1YmxpY19jb25maWdzID0gWworICAgICI6YW5nbGVfdXRpbF9jb25maWciLAorICAg
ICI6aW50ZXJuYWxfY29uZmlnIiwKKyAgXQorCiAgIGRlcHMgPSBbCi0gICAgIjppbmNsdWRlcyIs
CisgICAgIjphbmdsZV9jb21tb24iLAorICAgICI6bGliRUdMIiwKICAgICAiOmxpYkdMRVN2MiIs
CiAgIF0KIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNiBAQAogICAgIHNyYy9jb21waWxlci90cmFuc2xh
dG9yL1NlYXJjaFN5bWJvbC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yRVNTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5j
cHAKLSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXQuY3BwCiAg
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuY3BwCiAgICAgc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5jcHAKQEAgLTg5LDkgKzg4LDExIEBACiAgICAgc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmNwcAogICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcAogICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcAorICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NhY2hlLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxE
QUcuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAKICAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9EaWFnbm9zdGljcy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaXJlY3Rp
dmVIYW5kbGVyLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNp
b24uY3BwCkBAIC0xMDgsMjcgKzEwOSwzMSBAQAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L0ludGVybVRyYXZlcnNlLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0xvb3BJbmZv
LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAotICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL3BhcnNlQ29uc3QuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUGFyc2VDb250ZXh0LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xB
bGxvYy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRp
b25zLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllckFsaXZlLmNwcAog
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAKKyAg
ICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwCisgICAg
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmNwcAogICAgIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmNwcAorICAgIHNyYy9jb21waWxlci90
cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9y
L1Jld3JpdGVFbHNlQmxvY2tzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxh
cml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TZWFyY2hTeW1ib2wuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJh
dGVBcnJheUluaXRpYWxpemF0aW9uLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1Nl
cGFyYXRlRGVjbGFyYXRpb25zLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFy
YXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU2hhZGVyTGFuZy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJW
YXJzLmNwcAotICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5QXJyYXlBc3NpZ25t
ZW50LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcAogICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci91
dGlsLmNwcAorICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlh
bGl6ZXIuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9u
cy5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMu
Y3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmNwcAogICAg
IHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmNwcAogICAgIHNyYy9jb21w
aWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5jcHAKQEAgLTE1MCw2ICsxNTUsNyBAQAogICAg
IHNyYy9saWJBTkdMRS9Db25maWcuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0NvbnRleHQuY3BwCiAg
ICAgc3JjL2xpYkFOR0xFL0RhdGEuY3BwCisgICAgc3JjL2xpYkFOR0xFL0RlYnVnLmNwcAogICAg
IHNyYy9saWJBTkdMRS9EZXZpY2UuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCiAg
ICAgc3JjL2xpYkFOR0xFL0Vycm9yLmNwcApAQCAtMTU5LDYgKzE2NSw4IEBACiAgICAgc3JjL2xp
YkFOR0xFL0ZyYW1lYnVmZmVyLmNwcAogICAgIHNyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFj
aG1lbnQuY3BwCiAgICAgc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAKKyAgICBzcmMv
bGliQU5HTEUvSW5kZXhSYW5nZUNhY2hlLmNwcAorICAgIHNyYy9saWJBTkdMRS9JbWFnZS5jcHAK
ICAgICBzcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKICAgICBzcmMvbGliQU5HTEUvUGxhdGZv
cm0uY3BwCiAgICAgc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCkBAIC0xNjYsOCArMTc0LDEwIEBA
CiAgICAgc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCiAgICAgc3JjL2xpYkFOR0xF
L1JlZkNvdW50T2JqZWN0LmNwcAogICAgIHNyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuY3BwCisg
ICAgc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0J1ZmZlckQzRC5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNE
LmNwcAorICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuY3BwCiAgICAg
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuY3BwCiAgICAgc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9CdWZmZXIxMS5jcHAKQEAgLTE4NSwxMSArMTk1LDE4IEBACiAgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcAogICAgIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAKICAgICBzcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmNwcAorICAgIHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwCisgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5jcHAKICAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAKICAgICBzcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmNwcAogICAgIHNyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5jcHAKICAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5jcHAKKyAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2xvYWRpbWFnZV9ldGMuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcAorICAgIHNyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKICAg
ICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdy5jcHAK
ICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuY3BwCiAgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjkuY3BwCkBAIC0yMDQsNiArMjIxLDcgQEAK
ICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcAog
ICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJFeGVjdXRhYmxlOS5jcHAKKyAg
ICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAKICAgICBz
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWluOS5jcHAKICAgICBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVGV4dHVyZVN0b3JhZ2U5LmNwcAogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5LmNwcApAQCAtMjI3LDE1ICsyNDUs
MTIgQEAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckV4ZWN1dGFibGVEM0Qu
Y3BwCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmNwcAogICAgIHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5jcHAKLSAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdlLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuY3BwCisgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9WYXJ5aW5nUGFja2luZy5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Zl
cnRleEJ1ZmZlci5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFN
YW5hZ2VyLmNwcAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBsLmNwcAogICAg
IHNyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAKLSAgICBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmNwcAotICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9Q
cm9ncmFtSW1wbC5jcHAKLSAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1w
bC5jcHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuY3BwCiAgICAgc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcAogICAgIHNyYy9saWJBTkdMRS9SZXNvdXJj
ZU1hbmFnZXIuY3BwCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ09OVFJJQlVUT1JTCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DT05UUklCVVRPUlMJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTA0ICsxLDExMSBAQAot77u/IyBUaGlzIGlzIHRoZSBvZmZpY2lh
bCBsaXN0IG9mIHBlb3BsZSB3aG8gY2FuIGNvbnRyaWJ1dGUNCi0jIChhbmQgd2hvIGhhdmUgY29u
dHJpYnV0ZWQpIGNvZGUgdG8gdGhlIEFOR0xFIHByb2plY3QNCi0jIHJlcG9zaXRvcnkuDQotIyBU
aGUgQVVUSE9SUyBmaWxlIGxpc3RzIHRoZSBjb3B5cmlnaHQgaG9sZGVyczsgdGhpcyBmaWxlDQot
IyBsaXN0cyBwZW9wbGUuICBGb3IgZXhhbXBsZSwgR29vZ2xlIGVtcGxveWVlcyBhcmUgbGlzdGVk
IGhlcmUNCi0jIGJ1dCBub3QgaW4gQVVUSE9SUywgYmVjYXVzZSBHb29nbGUgaG9sZHMgdGhlIGNv
cHlyaWdodC4NCi0jDQotDQotVHJhbnNHYW1pbmcgSW5jLg0KLSBOaWNvbGFzIENhcGVucw0KLSBE
YW5pZWwgS29jaA0KLSBHZW9mZiBMYW5nDQotIEFuZHJldyBMZXd5Y2t5DQotIEphbWllIE1hZGls
bA0KLSBHYXZyaWVsIFN0YXRlDQotIFNoYW5ub24gV29vZHMNCi0NCi1Hb29nbGUgSW5jLg0KLSBC
cmVudCBBdXN0aW4NCi0gTWljaGFlbCBCYWkNCi0gSm9obiBCYXVtYW4NCi0gUGV0ZXIgQmV2ZXJs
b28NCi0gU3RldmUgQmxvY2sNCi0gUmFjaGVsIEJsdW0NCi0gRXJpYyBCb3Jlbg0KLSBIZW5yeSBC
cmlkZ2UNCi0gTmF0IER1Y2ENCi0gUGV0ZXIgS2FzdGluZw0KLSBWYW5nZWxpcyBLb2trZXZpcw0K
LSBaaGVueWFvIE1vDQotIERhbmllbCBOaWNvYXJhDQotIEFsYXN0YWlyIFBhdHJpY2sNCi0gQWxv
ayBQcml5YWRhcnNoaQ0KLSBLZW5uZXRoIFJ1c3NlbGwNCi0gQnJpYW4gU2Fsb21vbg0KLSBHcmVn
ZyBUYXZhcmVzDQotIEplZmYgVGltYW51cw0KLSBCZW4gVmFuaWsNCi0gQWRyaWVubmUgV2Fsa2Vy
DQotIHRoZXN0aWdAY2hyb21pdW0ub3JnDQotIEp1c3RpbiBTY2h1aA0KLSBTY290dCBHcmFoYW0N
Ci0gQ29yZW50aW4gV2FsbGV6DQotDQotQWRvYmUgU3lzdGVtcyBJbmMuDQotIEFsZXhhbmRydSBD
aGljdWxpdGENCi0gU3RldmUgTWlubnMNCi0gTWF4IFZ1am92aWMNCi0NCi1BdXRvZGVzaywgSW5j
Lg0KLSBSYW5nZXIgSGFya2UNCi0NCi1DbG91ZCBQYXJ0eSwgSW5jLg0KLSBDb25vciBEaWNraW5z
b24NCi0NCi1UaGUgUXQgQ29tcGFueSBMdGQuDQotIEFuZHJldyBLbmlnaHQNCi0NCi1JbWFnaW5h
dGlvbiBUZWNobm9sb2dpZXMgTHRkLg0KLSBHcmVnb2lyZSBQYXllbiBkZSBMYSBHYXJhbmRlcmll
DQotDQotSW50ZWwgQ29ycG9yYXRpb24NCi0gSmluIFlhbmcNCi0gQW5keSBDaGVuDQotIEpvc2gg
VHJpcGxldHQNCi0gU3VkYXJzYW5hIE5hZ2luZW5pDQotDQotS2xhcsOkbHZkYWxlbnMgRGF0YWtv
bnN1bHQgQUINCi0gTWlsaWFuIFdvbGZmDQotDQotTW96aWxsYSBDb3JwLg0KLSBFaHNhbiBBa2hn
YXJpDQotIEplZmYgR2lsYmVydA0KLSBNaWtlIEhvbW1leQ0KLSBCZW5vaXQgSmFjb2INCi0gTWFr
b3RvIEthdG8NCi0gVmxhZGltaXIgVnVraWNldmljDQotDQotVHVyYnVsZW56DQotIE1pY2hhZWwg
QnJhaXRod2FpdGUNCi0NCi1VbHJpayBQZXJzc29uIChkZGVmcm9zdHQpDQotTWFyayBCYW5uZXIg
KHN0YW5kYXJkOG1icCkNCi1EYXZpZCBLaWx6ZXINCi1KYWNlayBDYWJhbg0KLVRpYm9yIGRlbiBP
dWRlbg0KLVLDqWdpcyBGw6luw6lvbg0KLQ0KLU1pY3Jvc29mdCBDb3Jwb3JhdGlvbg0KLSBDb29w
ZXIgUGFydGluDQotIEF1c3RpbiBLaW5yb3NzDQotIE1pbm1pbiBHb25nDQotDQotTWljcm9zb2Z0
IE9wZW4gVGVjaG5vbG9naWVzLCBJbmMuDQotIENvb3BlciBQYXJ0aW4NCi0gQXVzdGluIEtpbnJv
c3MNCi0NCi1OVklESUEgQ29ycG9yYXRpb24NCi0gT2xsaSBFdHVhaG8NCi0gQXJ1biBQYXRvbGUN
Ci0gUWluZ3FpbmcgRGVuZw0KLQ0KLU9wZXJhIFNvZnR3YXJlIEFTQQ0KLSBEYW5pZWwgQnJhdGVs
bA0KK++7vyMgVGhpcyBpcyB0aGUgb2ZmaWNpYWwgbGlzdCBvZiBwZW9wbGUgd2hvIGNhbiBjb250
cmlidXRlCisjIChhbmQgd2hvIGhhdmUgY29udHJpYnV0ZWQpIGNvZGUgdG8gdGhlIEFOR0xFIHBy
b2plY3QKKyMgcmVwb3NpdG9yeS4KKyMgVGhlIEFVVEhPUlMgZmlsZSBsaXN0cyB0aGUgY29weXJp
Z2h0IGhvbGRlcnM7IHRoaXMgZmlsZQorIyBsaXN0cyBwZW9wbGUuICBGb3IgZXhhbXBsZSwgR29v
Z2xlIGVtcGxveWVlcyBhcmUgbGlzdGVkIGhlcmUKKyMgYnV0IG5vdCBpbiBBVVRIT1JTLCBiZWNh
dXNlIEdvb2dsZSBob2xkcyB0aGUgY29weXJpZ2h0LgorIworCitUcmFuc0dhbWluZyBJbmMuCisg
Tmljb2xhcyBDYXBlbnMKKyBEYW5pZWwgS29jaAorIEdlb2ZmIExhbmcKKyBBbmRyZXcgTGV3eWNr
eQorIEphbWllIE1hZGlsbAorIEdhdnJpZWwgU3RhdGUKKyBTaGFubm9uIFdvb2RzCisKK0dvb2ds
ZSBJbmMuCisgQnJlbnQgQXVzdGluCisgTWljaGFlbCBCYWkKKyBKb2huIEJhdW1hbgorIFBldGVy
IEJldmVybG9vCisgU3RldmUgQmxvY2sKKyBSYWNoZWwgQmx1bQorIEVyaWMgQm9yZW4KKyBIZW5y
eSBCcmlkZ2UKKyBOYXQgRHVjYQorIFBldGVyIEthc3RpbmcKKyBWYW5nZWxpcyBLb2trZXZpcwor
IFpoZW55YW8gTW8KKyBEYW5pZWwgTmljb2FyYQorIEFsYXN0YWlyIFBhdHJpY2sKKyBBbG9rIFBy
aXlhZGFyc2hpCisgS2VubmV0aCBSdXNzZWxsCisgQnJpYW4gU2Fsb21vbgorIEdyZWdnIFRhdmFy
ZXMKKyBKZWZmIFRpbWFudXMKKyBCZW4gVmFuaWsKKyBBZHJpZW5uZSBXYWxrZXIKKyB0aGVzdGln
QGNocm9taXVtLm9yZworIEp1c3RpbiBTY2h1aAorIFNjb3R0IEdyYWhhbQorIENvcmVudGluIFdh
bGxlegorCitBZG9iZSBTeXN0ZW1zIEluYy4KKyBBbGV4YW5kcnUgQ2hpY3VsaXRhCisgU3RldmUg
TWlubnMKKyBNYXggVnVqb3ZpYworCitBdXRvZGVzaywgSW5jLgorIFJhbmdlciBIYXJrZQorCitD
bG91ZCBQYXJ0eSwgSW5jLgorIENvbm9yIERpY2tpbnNvbgorCitUaGUgUXQgQ29tcGFueSBMdGQu
CisgQW5kcmV3IEtuaWdodAorCitJbWFnaW5hdGlvbiBUZWNobm9sb2dpZXMgTHRkLgorIEdyZWdv
aXJlIFBheWVuIGRlIExhIEdhcmFuZGVyaWUKKworSW50ZWwgQ29ycG9yYXRpb24KKyBKaW4gWWFu
ZworIEFuZHkgQ2hlbgorIEpvc2ggVHJpcGxldHQKKyBTdWRhcnNhbmEgTmFnaW5lbmkKKworS2xh
csOkbHZkYWxlbnMgRGF0YWtvbnN1bHQgQUIKKyBNaWxpYW4gV29sZmYKKworTW96aWxsYSBDb3Jw
LgorIEVoc2FuIEFraGdhcmkKKyBKZWZmIEdpbGJlcnQKKyBNaWtlIEhvbW1leQorIEJlbm9pdCBK
YWNvYgorIE1ha290byBLYXRvCisgVmxhZGltaXIgVnVraWNldmljCisKK1R1cmJ1bGVuegorIE1p
Y2hhZWwgQnJhaXRod2FpdGUKKworVWxyaWsgUGVyc3NvbiAoZGRlZnJvc3R0KQorTWFyayBCYW5u
ZXIgKHN0YW5kYXJkOG1icCkKK0RhdmlkIEtpbHplcgorSmFjZWsgQ2FiYW4KK1RpYm9yIGRlbiBP
dWRlbgorUsOpZ2lzIEbDqW7DqW9uCitTZWJhc3RpYW4gQmVyZ3N0ZWluCisKK01pY3Jvc29mdCBD
b3Jwb3JhdGlvbgorIENvb3BlciBQYXJ0aW4KKyBBdXN0aW4gS2lucm9zcworIE1pbm1pbiBHb25n
CisgU2hhd24gSGFyZ3JlYXZlcworCitNaWNyb3NvZnQgT3BlbiBUZWNobm9sb2dpZXMsIEluYy4K
KyBDb29wZXIgUGFydGluCisgQXVzdGluIEtpbnJvc3MKKworTlZJRElBIENvcnBvcmF0aW9uCisg
T2xsaSBFdHVhaG8KKyBBcnVuIFBhdG9sZQorIFFpbmdxaW5nIERlbmcKKyBLaW1tbyBLaW5udW5l
bgorCitPcGVyYSBTb2Z0d2FyZSBBU0EKKyBEYW5pZWwgQnJhdGVsbAorIFRvbWFzeiBNb25pdXN6
a28KKworQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorIFJ1c3MgTGluZApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTYtMDQtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBVcGRhdGUgQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1Njc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEh1Z2UgbGlzdCBvZiBjaGFuZ2VkIGZpbGVzIG9taXR0ZWQuCisKIDIwMTYt
MDQtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgZmFpbGluZyBhc3NlcnRpb24gaW4gQU5HTEUKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0RFUFMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
REVQUwkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvREVQUwko
d29ya2luZyBjb3B5KQpAQCAtMSwyNyArMSwxMDYgQEAKK3ZhcnMgPSB7CisgICdjaHJvbWl1bV9n
aXQnOiAnaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tJywKK30KKwogZGVwcyA9IHsK
ICAgInRoaXJkX3BhcnR5L2d5cCI6Ci0gICAgICAiaHR0cDovL2d5cC5nb29nbGVjb2RlLmNvbS9z
dm4vdHJ1bmtAMTk4NyIsCisgICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgIi9leHRlcm5hbC9n
eXBAODFjMmU1ZmY5MmFmMjliYWI2MWM5ODI4MDgwNzZkZGNlM2QyMDBhMiIsCiAKICAgIyBUT0RP
KGticik6IGZpZ3VyZSBvdXQgaG93IHRvIGJldHRlciBzdGF5IGluIHN5bmMgd2l0aCBDaHJvbWl1
bSdzCiAgICMgdmVyc2lvbnMgb2YgZ29vZ2xldGVzdCBhbmQgZ29vZ2xlbW9jay4KICAgInNyYy90
ZXN0cy90aGlyZF9wYXJ0eS9nb29nbGV0ZXN0IjoKLSAgICAgICJodHRwOi8vZ29vZ2xldGVzdC5n
b29nbGVjb2RlLmNvbS9zdm4vdHJ1bmtANjI5IiwKKyAgICAgIFZhcignY2hyb21pdW1fZ2l0Jykg
KyAiL2V4dGVybmFsL2dvb2dsZXRlc3QuZ2l0QDk4NTVhODcxNTc3NzhkMzliOTVlY2NmYjIwMWE5
ZGM5MGY2ZDYxYzYiLAogCiAgICJzcmMvdGVzdHMvdGhpcmRfcGFydHkvZ29vZ2xlbW9jayI6Ci0g
ICAgICAiaHR0cDovL2dvb2dsZW1vY2suZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rQDQxMCIsCisg
ICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsgIi9leHRlcm5hbC9nb29nbGVtb2NrLmdpdEBiMmNi
MjExZTQ5ZDg3MjEwMWQ5OTEyMDEzNjJkN2I5N2Q3ZDY5OTEwIiwKIAotICAic3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L2RlcXAiOgotICAgICAgImh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29t
L3BsYXRmb3JtL2V4dGVybmFsL2RlcXBAYzc2NjFiY2QzYmNlYzA0YjFhYmY2YzNiMjkwYzQxNTBk
YjU2NTYwNCIsCisgICMgQ2hlcnJ5IGlzIGEgZEVRUCBtYW5hZ2VtZW50IEdVSSB3cml0dGVuIGlu
IEdvLiBXZSB1c2UgaXQgZm9yIHZpZXdpbmcgdGVzdCByZXN1bHRzLgorICAidGhpcmRfcGFydHkv
Y2hlcnJ5IjoKKyAgICAgICJodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9y
bS9leHRlcm5hbC9jaGVycnlAYWY2YzA5ZmUwNTExNWYwY2NhNjFhZTIzZWU4NzFiZGEyN2NmMWZm
NSIsCiAKLSAgInNyYy90ZXN0cy90aGlyZF9wYXJ0eS9saWJwbmciOgorICAidGhpcmRfcGFydHkv
ZGVxcC9zcmMiOgorICAgICAgImh0dHBzOi8vYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tL3BsYXRm
b3JtL2V4dGVybmFsL2RlcXBAY2MwZGVkNmM3NzI2N2JiYjE0ZDIxYWFjMzU4ZmM1ZDk2OTBjMDdm
OCIsCisKKyAgInRoaXJkX3BhcnR5L2xpYnBuZyI6CiAgICAgICAiaHR0cHM6Ly9hbmRyb2lkLmdv
b2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZXh0ZXJuYWwvbGlicG5nQDA5NGUxODFlNzlhM2Q2YzIz
ZmQwMDU2NzkwMjUwNThiN2RmMWFkNmMiLAogCi0gICJzcmMvdGVzdHMvdGhpcmRfcGFydHkvemxp
YiI6Ci0gICAgICAiaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3Ny
Yy90aGlyZF9wYXJ0eS96bGliQGFmZDhjNDU5M2MwMTBjMDQ1OTAyZjZjMDUwMTcxOGYxODIzMDY0
YTMiLAorICAidGhpcmRfcGFydHkvemxpYiI6CisgICAgICBWYXIoJ2Nocm9taXVtX2dpdCcpICsg
Ii9jaHJvbWl1bS9zcmMvdGhpcmRfcGFydHkvemxpYkBhZmQ4YzQ1OTNjMDEwYzA0NTkwMmY2YzA1
MDE3MThmMTgyMzA2NGEzIiwKKworICAiYnVpbGR0b29scyI6CisgICAgICBWYXIoJ2Nocm9taXVt
X2dpdCcpICsgJy9jaHJvbWl1bS9idWlsZHRvb2xzLmdpdEAxMjVkMTU3NjA3ZGU0ZDdjOTViZjhi
MDJkZDU4MGFhZTE3OTYyZjE5JywKIH0KIAogaG9va3MgPSBbCisgICMgUHVsbCBjbGFuZy1mb3Jt
YXQgYmluYXJpZXMgdXNpbmcgY2hlY2tlZC1pbiBoYXNoZXMuCiAgIHsKKyAgICAnbmFtZSc6ICdj
bGFuZ19mb3JtYXRfd2luJywKKyAgICAncGF0dGVybic6ICcuJywKKyAgICAnYWN0aW9uJzogWyAn
ZG93bmxvYWRfZnJvbV9nb29nbGVfc3RvcmFnZScsCisgICAgICAgICAgICAgICAgJy0tbm9fcmVz
dW1lJywKKyAgICAgICAgICAgICAgICAnLS1wbGF0Zm9ybT13aW4zMicsCisgICAgICAgICAgICAg
ICAgJy0tbm9fYXV0aCcsCisgICAgICAgICAgICAgICAgJy0tYnVja2V0JywgJ2Nocm9taXVtLWNs
YW5nLWZvcm1hdCcsCisgICAgICAgICAgICAgICAgJy1zJywgJ2J1aWxkdG9vbHMvd2luL2NsYW5n
LWZvcm1hdC5leGUuc2hhMScsCisgICAgXSwKKyAgfSwKKyAgeworICAgICduYW1lJzogJ2NsYW5n
X2Zvcm1hdF9tYWMnLAorICAgICdwYXR0ZXJuJzogJy4nLAorICAgICdhY3Rpb24nOiBbICdkb3du
bG9hZF9mcm9tX2dvb2dsZV9zdG9yYWdlJywKKyAgICAgICAgICAgICAgICAnLS1ub19yZXN1bWUn
LAorICAgICAgICAgICAgICAgICctLXBsYXRmb3JtPWRhcndpbicsCisgICAgICAgICAgICAgICAg
Jy0tbm9fYXV0aCcsCisgICAgICAgICAgICAgICAgJy0tYnVja2V0JywgJ2Nocm9taXVtLWNsYW5n
LWZvcm1hdCcsCisgICAgICAgICAgICAgICAgJy1zJywgJ2J1aWxkdG9vbHMvbWFjL2NsYW5nLWZv
cm1hdC5zaGExJywKKyAgICBdLAorICB9LAorICB7CisgICAgJ25hbWUnOiAnY2xhbmdfZm9ybWF0
X2xpbnV4JywKKyAgICAncGF0dGVybic6ICcuJywKKyAgICAnYWN0aW9uJzogWyAnZG93bmxvYWRf
ZnJvbV9nb29nbGVfc3RvcmFnZScsCisgICAgICAgICAgICAgICAgJy0tbm9fcmVzdW1lJywKKyAg
ICAgICAgICAgICAgICAnLS1wbGF0Zm9ybT1saW51eConLAorICAgICAgICAgICAgICAgICctLW5v
X2F1dGgnLAorICAgICAgICAgICAgICAgICctLWJ1Y2tldCcsICdjaHJvbWl1bS1jbGFuZy1mb3Jt
YXQnLAorICAgICAgICAgICAgICAgICctcycsICdidWlsZHRvb2xzL2xpbnV4NjQvY2xhbmctZm9y
bWF0LnNoYTEnLAorICAgIF0sCisgIH0sCisgICMgUHVsbCBHTiBiaW5hcmllcyB1c2luZyBjaGVj
a2VkLWluIGhhc2hlcy4KKyAgeworICAgICduYW1lJzogJ2duX3dpbicsCisgICAgJ3BhdHRlcm4n
OiAnLicsCisgICAgJ2FjdGlvbic6IFsgJ2Rvd25sb2FkX2Zyb21fZ29vZ2xlX3N0b3JhZ2UnLAor
ICAgICAgICAgICAgICAgICctLW5vX3Jlc3VtZScsCisgICAgICAgICAgICAgICAgJy0tcGxhdGZv
cm09d2luMzInLAorICAgICAgICAgICAgICAgICctLW5vX2F1dGgnLAorICAgICAgICAgICAgICAg
ICctLWJ1Y2tldCcsICdjaHJvbWl1bS1nbicsCisgICAgICAgICAgICAgICAgJy1zJywgJ2J1aWxk
dG9vbHMvd2luL2duLmV4ZS5zaGExJywKKyAgICBdLAorICB9LAorICB7CisgICAgJ25hbWUnOiAn
Z25fbWFjJywKKyAgICAncGF0dGVybic6ICcuJywKKyAgICAnYWN0aW9uJzogWyAnZG93bmxvYWRf
ZnJvbV9nb29nbGVfc3RvcmFnZScsCisgICAgICAgICAgICAgICAgJy0tbm9fcmVzdW1lJywKKyAg
ICAgICAgICAgICAgICAnLS1wbGF0Zm9ybT1kYXJ3aW4nLAorICAgICAgICAgICAgICAgICctLW5v
X2F1dGgnLAorICAgICAgICAgICAgICAgICctLWJ1Y2tldCcsICdjaHJvbWl1bS1nbicsCisgICAg
ICAgICAgICAgICAgJy1zJywgJ2J1aWxkdG9vbHMvbWFjL2duLnNoYTEnLAorICAgIF0sCisgIH0s
CisgIHsKKyAgICAnbmFtZSc6ICdnbl9saW51eDY0JywKKyAgICAncGF0dGVybic6ICcuJywKKyAg
ICAnYWN0aW9uJzogWyAnZG93bmxvYWRfZnJvbV9nb29nbGVfc3RvcmFnZScsCisgICAgICAgICAg
ICAgICAgJy0tbm9fcmVzdW1lJywKKyAgICAgICAgICAgICAgICAnLS1wbGF0Zm9ybT1saW51eCon
LAorICAgICAgICAgICAgICAgICctLW5vX2F1dGgnLAorICAgICAgICAgICAgICAgICctLWJ1Y2tl
dCcsICdjaHJvbWl1bS1nbicsCisgICAgICAgICAgICAgICAgJy1zJywgJ2J1aWxkdG9vbHMvbGlu
dXg2NC9nbi5zaGExJywKKyAgICBdLAorICB9LAorICB7CiAgICAgIyBBIGNoYW5nZSB0byBhIC5n
eXAsIC5neXBpLCBvciB0byBHWVAgaXRzZWxmIHNob3VsZCBydW4gdGhlIGdlbmVyYXRvci4KICAg
ICAicGF0dGVybiI6ICIuIiwKICAgICAiYWN0aW9uIjogWyJweXRob24iLCAiYnVpbGQvZ3lwX2Fu
Z2xlIl0sCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9SRUFETUUubWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvUkVBRE1FLm1kCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9SRUFETUUubWQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMjIgKzEsNDQgQEAKICNBTkdMRQotVGhlIGdvYWwgb2YgQU5HTEUgaXMgdG8gYWxsb3cgV2lu
ZG93cyB1c2VycyB0byBzZWFtbGVzc2x5IHJ1biBXZWJHTCBhbmQgb3RoZXIgT3BlbkdMIEVTIGNv
bnRlbnQgYnkgdHJhbnNsYXRpbmcgT3BlbkdMIEVTIEFQSSBjYWxscyB0byBEaXJlY3RYIDkgb3Ig
RGlyZWN0WCAxMSBBUEkgY2FsbHMuCitUaGUgZ29hbCBvZiBBTkdMRSBpcyB0byBhbGxvdyB1c2Vy
cyBvZiBtdWx0aXBsZSBvcGVyYXRpbmcgc3lzdGVtcyB0byBzZWFtbGVzc2x5IHJ1biBXZWJHTCBh
bmQgb3RoZXIgT3BlbkdMIEVTIGNvbnRlbnQgYnkgdHJhbnNsYXRpbmcgT3BlbkdMIEVTIEFQSSBj
YWxscyB0byBvbmUgb2YgdGhlIGhhcmR3YXJlLXN1cHBvcnRlZCBBUElzIGF2YWlsYWJsZSBmb3Ig
dGhhdCBwbGF0Zm9ybS4gQU5HTEUgY3VycmVudGx5IHByb3ZpZGVzIHRyYW5zbGF0aW9uIGZyb20g
T3BlbkdMIEVTIDIuMCB0byBkZXNrdG9wIE9wZW5HTCwgRGlyZWN0M0QgOSwgYW5kIERpcmVjdDNE
IDExLiBTdXBwb3J0IGZvciB0cmFuc2xhdGlvbiBmcm9tIE9wZW5HTCBFUyAzLjAgdG8gYWxsIG9m
IHRoZXNlIEFQSXMgaXMgbmVhcmluZyBjb21wbGV0aW9uLCBhbmQgZnV0dXJlIHBsYW5zIGluY2x1
ZGUgZW5hYmxpbmcgdmFsaWRhdGVkIEVTLXRvLUVTIHN1cHBvcnQuCiAKLUFOR0xFIGlzIGEgY29u
Zm9ybWFudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgT3BlbkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9u
IHRoYXQgaXMgaGFyZHdhcmXigJBhY2NlbGVyYXRlZCB2aWEgRGlyZWN0M0QuIEFOR0xFIHYxLjAu
NzcyIHdhcyBjZXJ0aWZpZWQgY29tcGxpYW50IGJ5IHBhc3NpbmcgdGhlIEVTIDIuMC4zIGNvbmZv
cm1hbmNlIHRlc3RzIGluIE9jdG9iZXIgMjAxMS4gQU5HTEUgYWxzbyBwcm92aWRlcyBhbiBpbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgRUdMIDEuNCBzcGVjaWZpY2F0aW9uLiBXb3JrIG9uIEFOR0xFJ3Mg
T3BlbkdMIEVTIDMuMCBpbXBsZW1lbnRhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MsIGJ1
dCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgc3RhYmxlLgorfCAgICAgICAgICAgICAgICB8ICBE
aXJlY3QzRCA5ICAgfCAgICBEaXJlY3QzRCAxMSAgICAgIHwgICAgRGVza3RvcCBHTCAgICAgIHwg
ICAgR0wgRVMgIHwKK3wtLS0tLS0tLS0tLS0tLS0tfDotLS0tLS0tLS0tLS0tOnw6LS0tLS0tLS0t
LS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLTp8Cit8IE9wZW5HTCBF
UyAyLjAgIHwgICAgY29tcGxldGUgICB8ICAgICAgY29tcGxldGUgICAgICAgfCAgICAgY29tcGxl
dGUgICAgICAgfCAgIHBsYW5uZWQgfAorfCBPcGVuR0wgRVMgMy4wICB8ICAgICAgICAgICAgICAg
fCAgbmVhcmluZyBjb21wbGV0aW9uIHwgbmVhcmluZyBjb21wbGV0aW9uIHwgICBwbGFubmVkIHwK
K1tMZXZlbCBvZiBPcGVuR0wgRVMgc3VwcG9ydCB2aWEgYmFja2luZyByZW5kZXJlcnNdCiAKKwor
fCAgICAgICAgICAgICB8ICAgIERpcmVjdDNEIDkgIHwgICBEaXJlY3QzRCAxMSAgfCAgIERlc2t0
b3AgR0wgIHwKK3wtLS0tLS0tLS0tLS06fDotLS0tLS0tLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLS0t
Onw6LS0tLS0tLS0tLS0tLTp8Cit8IFdpbmRvd3MgICAgIHwgICAgICAgICogICAgICAgfCAgICAg
ICAgKiAgICAgICB8ICAgICAgICogICAgICAgfAorfCBMaW51eCAgICAgICB8ICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAqICAgICAgIHwKK3wgTWFjIE9TIFggICAgfCAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICBpbiBwcm9ncmVzcyB8CitbUGxhdGZv
cm0gc3VwcG9ydCB2aWEgYmFja2luZyByZW5kZXJlcnNdCisKK0FOR0xFIHYxLjAuNzcyIHdhcyBj
ZXJ0aWZpZWQgY29tcGxpYW50IGJ5IHBhc3NpbmcgdGhlIEVTIDIuMC4zIGNvbmZvcm1hbmNlIHRl
c3RzIGluIE9jdG9iZXIgMjAxMS4gQU5HTEUgYWxzbyBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgRUdMIDEuNCBzcGVjaWZpY2F0aW9uLgorCiBBTkdMRSBpcyB1c2VkIGFzIHRoZSBk
ZWZhdWx0IFdlYkdMIGJhY2tlbmQgZm9yIGJvdGggR29vZ2xlIENocm9tZSBhbmQgTW96aWxsYSBG
aXJlZm94IG9uIFdpbmRvd3MgcGxhdGZvcm1zLiBDaHJvbWUgdXNlcyBBTkdMRSBmb3IgYWxsIGdy
YXBoaWNzIHJlbmRlcmluZyBvbiBXaW5kb3dzLCBpbmNsdWRpbmcgdGhlIGFjY2VsZXJhdGVkIENh
bnZhczJEIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgTmF0aXZlIENsaWVudCBzYW5kYm94IGVudmly
b25tZW50LgogCiBQb3J0aW9ucyBvZiB0aGUgQU5HTEUgc2hhZGVyIGNvbXBpbGVyIGFyZSB1c2Vk
IGFzIGEgc2hhZGVyIHZhbGlkYXRvciBhbmQgdHJhbnNsYXRvciBieSBXZWJHTCBpbXBsZW1lbnRh
dGlvbnMgYWNyb3NzIG11bHRpcGxlIHBsYXRmb3Jtcy4gSXQgaXMgdXNlZCBvbiBNYWMgT1MgWCwg
TGludXgsIGFuZCBpbiBtb2JpbGUgdmFyaWFudHMgb2YgdGhlIGJyb3dzZXJzLiBIYXZpbmcgb25l
IHNoYWRlciB2YWxpZGF0b3IgaGVscHMgdG8gZW5zdXJlIHRoYXQgYSBjb25zaXN0ZW50IHNldCBv
ZiBHTFNMIEVTIHNoYWRlcnMgYXJlIGFjY2VwdGVkIGFjcm9zcyBicm93c2VycyBhbmQgcGxhdGZv
cm1zLiBUaGUgc2hhZGVyIHRyYW5zbGF0b3IgY2FuIGJlIHVzZWQgdG8gdHJhbnNsYXRlIHNoYWRl
cnMgdG8gb3RoZXIgc2hhZGluZyBsYW5ndWFnZXMsIGFuZCB0byBvcHRpb25hbGx5IGFwcGx5IHNo
YWRlciBtb2RpZmljYXRpb25zIHRvIHdvcmsgYXJvdW5kIGJ1Z3Mgb3IgcXVpcmtzIGluIHRoZSBu
YXRpdmUgZ3JhcGhpY3MgZHJpdmVycy4gVGhlIHRyYW5zbGF0b3IgdGFyZ2V0cyBEZXNrdG9wIEdM
U0wsIERpcmVjdDNEIEhMU0wsIGFuZCBldmVuIEVTU0wgZm9yIG5hdGl2ZSBHTEVTMiBwbGF0Zm9y
bXMuCiAKKyMjQnJvd3NpbmcKK0Jyb3dzZSBBTkdMRSdzIHNvdXJjZSBpbiB0aGUgW3JlcG9zaXRv
cnldKGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSkKKwogIyNC
dWlsZGluZwotRm9yIGJ1aWxkaW5nIGluc3RydWN0aW9ucywgdmlzaXQgdGhlIFtkZXYgc2V0dXAg
d2lraV0oaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3Qvd2lraS9EZXZTZXR1
cCkuCitWaWV3IHRoZSBbRGV2IHNldHVwIGluc3RydWN0aW9uc10oZG9jL0RldlNldHVwLm1kKS4g
Rm9yIGdlbmVyYXRpbmcgYSBXaW5kb3dzIFN0b3JlIHZlcnNpb24gb2YgQU5HTEUgdmlldyB0aGUg
W1dpbmRvd3MgU3RvcmUgaW5zdHJ1Y3Rpb25zXShkb2MvQnVpbGRpbmdBbmdsZUZvcldpbmRvd3NT
dG9yZS5tZCkKIAogIyNDb250cmlidXRpbmcKICogSm9pbiBvdXIgW0dvb2dsZSBncm91cF0oaHR0
cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9hbmdsZXByb2plY3QpIHRvIGtlZXAgdXAgdG8g
ZGF0ZS4KICogSm9pbiB1cyBvbiBJUkMgaW4gdGhlICNBTkdMRXByb2plY3QgY2hhbm5lbCBvbiBG
cmVlTm9kZS4KLSogUmVhZCBhYm91dCBBTkdMRSBkZXZlbG9wbWVudCBvbiB0aGUgW3dpa2ldKGh0
dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3Qvdy9saXN0KS4KLSogQmVjb21lIGEg
W2NvZGUgY29udHJpYnV0b3JdKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0
L3dpa2kvQ29udHJpYnV0aW5nQ29kZSkuCisqIFJlYWQgYWJvdXQgQU5HTEUgZGV2ZWxvcG1lbnQg
aW4gb3VyIFtkb2N1bWVudGF0aW9uXShkb2MpLgorKiBCZWNvbWUgYSBbY29kZSBjb250cmlidXRv
cl0oZG9jL0NvbnRyaWJ1dGluZ0NvZGUubWQpLgorKiBSZWZlciB0byBBTkdMRSdzIFtjb2Rpbmcg
c3RhbmRhcmRdKGRvYy9Db2RpbmdTdGFuZGFyZC5tZCkuCisqIExlYXJuIGhvdyB0byBbYnVpbGQg
QU5HTEUgZm9yIENocm9taXVtIGRldmVsb3BtZW50XShkb2MvQnVpbGRpbmdBbmdsZUZvckNocm9t
aXVtRGV2ZWxvcG1lbnQubWQpLgorKiBbQ2hvb3NlIGFuIEFOR0xFIGJyYW5jaF0oZG9jL0Nob29z
aW5nQU5HTEVCcmFuY2gubWQpIHRvIHRyYWNrIGluIHlvdXIgb3duIHByb2plY3QuCiAqIEZpbGUg
YnVncyBpbiB0aGUgW2lzc3VlIHRyYWNrZXJdKGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmds
ZXByb2plY3QvaXNzdWVzL2xpc3QpIChwcmVmZXJhYmx5IHdpdGggYW4gaXNvbGF0ZWQgdGVzdC1j
YXNlKS4KICogUmVhZCBhYm91dCBXZWJHTCBvbiB0aGUgW0tocm9ub3MgV2ViR0wgV2lraV0oaHR0
cDovL2tocm9ub3Mub3JnL3dlYmdsL3dpa2kvTWFpbl9QYWdlKS4KLSogTGVhcm4gYWJvdXQgaW1w
bGVtZW50YXRpb24gZGV0YWlscyBpbiB0aGUgW09wZW5HTCBJbnNpZ2h0cyBjaGFwdGVyIG9uIEFO
R0xFXShodHRwOi8vd3d3LnNlYXMudXBlbm4uZWR1L35wY296emkvT3BlbkdMSW5zaWdodHMvT3Bl
bkdMSW5zaWdodHMtQU5HTEUucGRmKSBhbmQgdGhpcyBbQU5HTEUgcHJlc2VudGF0aW9uXShodHRw
czovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9kb3dubG9hZHMvZGV0YWlsP25hbWU9
QU5HTEUlMjBhbmQlMjBDcm9zcy1QbGF0Zm9ybSUyMFdlYkdMJTIwU3VwcG9ydC5wZGYmY2FuPTIm
cT0pLgorKiBMZWFybiBhYm91dCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGluIHRoZSBbT3BlbkdM
IEluc2lnaHRzIGNoYXB0ZXIgb24gQU5HTEVdKGh0dHA6Ly93d3cuc2Vhcy51cGVubi5lZHUvfnBj
b3p6aS9PcGVuR0xJbnNpZ2h0cy9PcGVuR0xJbnNpZ2h0cy1BTkdMRS5wZGYpIGFuZCB0aGlzIFtB
TkdMRSBwcmVzZW50YXRpb25dKGh0dHBzOi8vZHJpdmUuZ29vZ2xlLmNvbS9maWxlL2QvMEJ3Mjlv
WWVDMDlRYmJIb3hORTVFVUZoMFJHcy92aWV3P3VzcD1zaGFyaW5nKS4KICogTGVhcm4gYWJvdXQg
dGhlIHBhc3QsIHByZXNlbnQsIGFuZCBmdXR1cmUgb2YgdGhlIEFOR0xFIGltcGxlbWVudGF0aW9u
IGluIFt0aGlzIHJlY2VudCBwcmVzZW50YXRpb25dKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3By
ZXNlbnRhdGlvbi9kLzFDdWNJc2RHVkRtZFRXUlViZzY4SXhMRTVqWHdDYjJ5MUU5WVZoUW8wdGhn
L3B1Yj9zdGFydD1mYWxzZSZsb29wPWZhbHNlKS4KLSogSWYgeW91IHVzZSBBTkdMRSBpbiB5b3Vy
IG93biBwcm9qZWN0LCB3ZSdkIGxvdmUgdG8gaGVhciBhYm91dCBpdCEKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCisqIE5vdGVzIG9uIFtkZWJ1Z2dpbmcgQU5HTEVdKGRvYy9EZWJ1Z2dpbmdU
aXBzLm1kKS4KKyogSWYgeW91IHVzZSBBTkdMRSBpbiB5b3VyIG93biBwcm9qZWN0LCB3ZSdkIGxv
dmUgdG8gaGVhciBhYm91dCBpdCEKKwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvYW5n
bGUuaXNvbGF0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmdsZS5p
c29sYXRlCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9hbmds
ZS5pc29sYXRlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsOSBAQAogIyBDb3B5cmlnaHQgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyMgVGhpcyBpc29sYXRl
IGV4cHJlc3NlcyB0aGUgQ2hyb21pdW0gcHJvamVjdCdzIGRlZmF1bHQgcnVudGltZQorIyBkZXBl
bmRlbmNpZXMuCiB7CiAgICdjb25kaXRpb25zJzogWwogICAgIFsnT1M9PSJ3aW4iJywgewpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY2hhbmdlcy5kaWZmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2NoYW5nZXMuZGlmZgkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvY2hhbmdlcy5kaWZmCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogZGlmZiAtLWdpdCBhL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmggYi9p
bmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCi1pbmRleCBlNzUwZTMyLi43ZDNmNDE1IDEwMDY0
NAoraW5kZXggNzhmOGVmNi4uYjdmZGY1NSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvR0xTTEFORy9T
aGFkZXJMYW5nLmgKICsrKyBiL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKIEBAIC0yNSw3
ICsyNSw3IEBACkBAIC0xMSwyMSArMTEsMTcgQEAKICAKICAjaW5jbHVkZSA8bWFwPgogICNpbmNs
dWRlIDxzdHJpbmc+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9tYXRodXRpbC5oIGIvc3JjL2Nv
bW1vbi9tYXRodXRpbC5oCi1pbmRleCA5ZjVjOWZkLi43OTU5ZGE4IDEwMDY0NAotLS0tIGEvc3Jj
L2NvbW1vbi9tYXRodXRpbC5oCi0rKysgYi9zcmMvY29tbW9uL21hdGh1dGlsLmgKLUBAIC00Nzgs
NyArNDc4LDcgQEAgaW5saW5lIHVuc2lnbmVkIGludCBhdmVyYWdlKHVuc2lnbmVkIGludCBhLCB1
bnNpZ25lZCBpbnQgYikKLSAKLSBpbmxpbmUgc2lnbmVkIGludCBhdmVyYWdlKHNpZ25lZCBpbnQg
YSwgc2lnbmVkIGludCBiKQotIHsKLS0gICAgcmV0dXJuICgobG9uZyBsb25nKWEgKyAobG9uZyBs
b25nKWIpIC8gMjsKLSsgICAgcmV0dXJuIChzaWduZWQgaW50KSgobG9uZyBsb25nKWEgKyAobG9u
ZyBsb25nKWIpIC8gMjsKLSB9Ci0gCi0gaW5saW5lIGZsb2F0IGF2ZXJhZ2UoZmxvYXQgYSwgZmxv
YXQgYikKK0BAIC0zNDMsNyArMzQzLDcgQEAgQ09NUElMRVJfRVhQT1JUIGNvbnN0IHN0ZDo6c3Ry
aW5nICZTaEdldEJ1aWx0SW5SZXNvdXJjZXNTdHJpbmcoY29uc3QgU2hIYW5kbGUgaGEKKyAvLyB0
eXBlOiBTcGVjaWZpZXMgdGhlIHR5cGUgb2Ygc2hhZGVyIC0gR0xfRlJBR01FTlRfU0hBREVSIG9y
IEdMX1ZFUlRFWF9TSEFERVIuCisgLy8gc3BlYzogU3BlY2lmaWVzIHRoZSBsYW5ndWFnZSBzcGVj
IHRoZSBjb21waWxlciBtdXN0IGNvbmZvcm0gdG8gLQorIC8vICAgICAgIFNIX0dMRVMyX1NQRUMg
b3IgU0hfV0VCR0xfU1BFQy4KKy0vLyBvdXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0cHV0IGNvZGUg
dHlwZSAtIGZvciBleGFtcGxlIFNIX0VTU0xfT1VUUFVULCBTSF9HTFNMX09VVFBVVCwKKysvLyBv
dXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0cHV0IGNvZGUgdHlwZSAtIGZvciBleGFtcGxlIFNIX0VT
U0xfT1VUUFVULCBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULAorIC8vICAgICAgICAgU0hf
SExTTF8zXzBfT1VUUFVUIG9yIFNIX0hMU0xfNF8xX09VVFBVVC4gTm90ZTogRWFjaCBvdXRwdXQg
dHlwZSBtYXkgb25seQorIC8vICAgICAgICAgYmUgc3VwcG9ydGVkIGluIHNvbWUgY29uZmlndXJh
dGlvbnMuCisgLy8gcmVzb3VyY2VzOiBTcGVjaWZpZXMgdGhlIGJ1aWx0LWluIHJlc291cmNlcy4K
IGRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3ZlcnNpb24uaCBiL3NyYy9jb21tb24vdmVyc2lvbi5o
Ci1pbmRleCA3NThjNzhkLi4yYTQ0NzA5IDEwMDY0NAoraW5kZXggZTdmZmE3Yy4uYjY1M2FlMyAx
MDA2NDQKIC0tLSBhL3NyYy9jb21tb24vdmVyc2lvbi5oCiArKysgYi9zcmMvY29tbW9uL3ZlcnNp
b24uaAogQEAgLTcsNyArNyw3IEBACkBAIC0zOCw1MjQgKzM0LDE0MiBAQAogICNkZWZpbmUgQU5H
TEVfTUFKT1JfVkVSU0lPTiAyCiAgI2RlZmluZSBBTkdMRV9NSU5PUl9WRVJTSU9OIDEKIGRpZmYg
LS1naXQgYS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwIGIv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcAotaW5kZXggNjgz
MTk1Yy4uODUxMTgzZSAxMDA2NDQKK2luZGV4IDE5M2IxNTAuLmIzOGI3YWUgMTAwNjQ0CiAtLS0g
YS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCiArKysgYi9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCiBAQCAtMSw1ICsx
LDcgQEAKICAvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24gMy4wLjQuICAqLwog
IAotKy8qIEFwcGxlIE5vdGU6IEZvciB0aGUgYXZvaWRhbmNlIG9mIGRvdWJ0LCBBcHBsZSBlbGVj
dHMgdG8gZGlzdHJpYnV0ZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGlj
ZW5zZS4gKi8gCisrLyogQXBwbGUgTm90ZTogRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIEFw
cGxlIGVsZWN0cyB0byBkaXN0cmlidXRlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEJTRCBsaWNlbnNlLiAqLwogKwogIC8qIEJpc29uIGltcGxlbWVudGF0aW9uIGZvciBZYWNjLWxp
a2UgcGFyc2VycyBpbiBDCiAgCiAgICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LTE5OTAsIDIw
MDAtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIGRpZmYgLS1naXQgYS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAgYi9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL1Rva2VuaXplci5jcHAKLWluZGV4IDc1ZGY0MzQuLmRkOWQ0MWEgMTAwNjQ0CitpbmRl
eCBlYjYxNTZmLi4xY2FlZTQ3IDEwMDY0NAogLS0tIGEvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9Ub2tlbml6ZXIuY3BwCiArKysgYi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXpl
ci5jcHAKLUBAIC02LDYgKzYsMTEgQEAKLSAvLworQEAgLTcxMiw3ICs3MTIsNyBAQCBzdGF0aWMg
dm9pZCB5eV9mbGV4X3N0cm5jcHkgKGNoYXIgKix5eWNvbnN0IGNoYXIgKixpbnQgLHl5c2Nhbl90
IHl5c2Nhbm5lcik7Cisgc3RhdGljIGludCB5eV9mbGV4X3N0cmxlbiAoeXljb25zdCBjaGFyICog
LHl5c2Nhbl90IHl5c2Nhbm5lcik7CisgI2VuZGlmCiAgCi0gLy8gVGhpcyBmaWxlIGlzIGF1dG8t
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCi0rLy8gVGhpcyBm
aWxlIHdhcyBlZGl0ZWQgYW55d2F5cyB0byBpZ25vcmUgY2xhbmcgd2FybmluZ3MuCi0rI2lmIGRl
ZmluZWQoX19jbGFuZ19fKQotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdt
YSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VubmVlZGVkLWludGVybmFsLWRlY2xhcmF0aW9u
IgotKyNlbmRpZgorLSNpZm5kZWYgWVlfTk9fSU5QVVQKKysjaWYgMCAvLyNpZm5kZWYgWVlfTk9f
SU5QVVQKICAKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBzdGF0aWMgaW50IHl5aW5wdXQgKHl5c2Nh
bl90IHl5c2Nhbm5lciApOworQEAgLTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0
X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgICAgICAgIHJldHVybiB5eV9pc19q
YW0gPyAwIDogeXlfY3VycmVudF9zdGF0ZTsKKyB9CiAgCistI2lmbmRlZiBZWV9OT19JTlBVVAor
KyNpZiAwIC8vI2lmbmRlZiBZWV9OT19JTlBVVAorICNpZmRlZiBfX2NwbHVzcGx1cworICAgICBz
dGF0aWMgaW50IHl5aW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAjZWxzZQorZGlmZiAtLWdp
dCBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvZGVHZW4uY3BwIGIvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQ29kZUdlbi5jcHAKK2luZGV4IGYwOTliY2MuLmZlN2M0ZjEgMTAwNjQ0CistLS0g
YS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAorKysrIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAKK0BAIC00LDYgKzQsOCBAQAorIC8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisgLy8KICAKLWRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9DYWxsREFHLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuY3BwCi1p
bmRleCAxZDFlYjhiLi45NWRiZWExIDEwMDY0NAotLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ2FsbERBRy5jcHAKLSsrKyBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuY3Bw
Ci1AQCAtNzEsMTAgKzcxLDEwIEBAIGNsYXNzIENhbGxEQUc6OkNhbGxEQUdDcmVhdG9yIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKLSAgICAgICAgICAgICByZWNvcmQuY2FsbGVlcy5yZXNlcnZl
KGRhdGEuY2FsbGVlcy5zaXplKCkpOwotICAgICAgICAgICAgIGZvciAoYXV0byAmY2FsbGVlIDog
ZGF0YS5jYWxsZWVzKQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgcmVjb3JkLmNh
bGxlZXMucHVzaF9iYWNrKGNhbGxlZS0+aW5kZXgpOwotKyAgICAgICAgICAgICAgICByZWNvcmQu
Y2FsbGVlcy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8aW50PihjYWxsZWUtPmluZGV4KSk7Ci0gICAg
ICAgICAgICAgfQotIAotLSAgICAgICAgICAgICgqaWRUb0luZGV4KVtkYXRhLm5vZGUtPmdldEZ1
bmN0aW9uSWQoKV0gPSBkYXRhLmluZGV4OwotKyAgICAgICAgICAgICgqaWRUb0luZGV4KVtkYXRh
Lm5vZGUtPmdldEZ1bmN0aW9uSWQoKV0gPSBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEuaW5kZXgpOwot
ICAgICAgICAgfQotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tcGlsZXIuY3BwIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCi1p
bmRleCA4YjViMTJmLi41YzAyOWJhIDEwMDY0NAotLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tcGlsZXIuY3BwCi0rKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5j
cHAKLUBAIC01MjgsMTUgKzUyOCwxNSBAQCBib29sIFRDb21waWxlcjo6Y2hlY2tDYWxsRGVwdGgo
KQotICAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkNhbGwgc3RhY2sgdG9vIGRlZXAgKGxh
cmdlciB0aGFuICIgPDwgbWF4Q2FsbFN0YWNrRGVwdGgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICIpIHdpdGggdGhlIGZvbGxvd2luZyBjYWxsIGNoYWluOiAiIDw8IHJlY29yZC5uYW1l
OwotIAotLSAgICAgICAgICAgIGludCBjdXJyZW50RnVuY3Rpb24gPSBpOwotKyAgICAgICAgICAg
IHNpZ25lZCBsb25nIGxvbmcgY3VycmVudEZ1bmN0aW9uID0gaTsKLSAgICAgICAgICAgICBpbnQg
Y3VycmVudERlcHRoID0gZGVwdGg7Ci0gCi0gICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRGdW5j
dGlvbiAhPSAtMSkKLSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGluZm9TaW5rLmlu
Zm8gPDwgIiAtPiAiIDw8IG1DYWxsRGFnLmdldFJlY29yZEZyb21JbmRleChjdXJyZW50RnVuY3Rp
b24pLm5hbWU7Ci0rICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIiAtPiAiIDw8IG1D
YWxsRGFnLmdldFJlY29yZEZyb21JbmRleChzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnJlbnRGdW5j
dGlvbikpLm5hbWU7Ci0gCi0gICAgICAgICAgICAgICAgIGludCBuZXh0RnVuY3Rpb24gPSAtMTsK
LS0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBjYWxsZWVJbmRleCA6IG1DYWxsRGFnLmdldFJl
Y29yZEZyb21JbmRleChjdXJyZW50RnVuY3Rpb24pLmNhbGxlZXMpCi0rICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgY2FsbGVlSW5kZXggOiBtQ2FsbERhZy5nZXRSZWNvcmRGcm9tSW5kZXgoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihjdXJyZW50RnVuY3Rpb24pKS5jYWxsZWVzKQotICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoZGVwdGhzW2NhbGxlZUluZGV4XSA9PSBj
dXJyZW50RGVwdGggLSAxKQotICAgICAgICAgICAgICAgICAgICAgewotQEAgLTU1OCw3ICs1NTgs
NyBAQCBib29sIFRDb21waWxlcjo6Y2hlY2tDYWxsRGVwdGgoKQotIGJvb2wgVENvbXBpbGVyOjp0
YWdVc2VkRnVuY3Rpb25zKCkKKysjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxl
ci5oIgorKworICNpZmRlZiBBTkdMRV9FTkFCTEVfRVNTTAorICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9TaGFkZXJMYW5nLmNwcAoraW5kZXggNDIxNTk3Yi4uYTU4ZTkxNyAxMDA2NDQKKy0tLSBhL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCisrKysgYi9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcAorQEAgLTM3NCw0ICszNzQsNCBAQCBjb25zdCBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiAqU2hHZXRVbmlmb3JtUmVnaXN0ZXJNYXAo
Y29uc3QgU2hIYW5kbAorICAgICBzdGF0aWMgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVk
IGludD4gbWFwOworICAgICByZXR1cm4gJm1hcDsKKyAjZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9I
TFNMCistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorZGlmZiAtLWdpdCBhL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcCBiL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAoraW5kZXggMTExYTM4Yi4uMjk0MDI2MCAxMDA2
NDQKKy0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAorKysr
IGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3BwCitAQCAtNzUsNCAr
NzUsNCBAQCB1bnNpZ25lZCBpbnQgVHJhbnNsYXRvckhMU0w6OmdldEludGVyZmFjZUJsb2NrUmVn
aXN0ZXIoY29uc3Qgc3RkOjpzdHJpbmcgJmludGVyZgorIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCB1bnNpZ25lZCBpbnQ+ICpUcmFuc2xhdG9ySExTTDo6Z2V0VW5pZm9ybVJlZ2lzdGVyTWFw
KCkgY29uc3QKICB7Ci0gICAgIC8vIFNlYXJjaCBmcm9tIG1haW4sIHN0YXJ0aW5nIGZyb20gdGhl
IGVuZCBvZiB0aGUgREFHIGFzIGl0IHVzdWFsbHkgaXMgdGhlIHJvb3QuCi0tICAgIGZvciAoaW50
IGkgPSBtQ2FsbERhZy5zaXplKCk7IGktLSA+IDA7KQotKyAgICBmb3IgKHNpemVfdCBpID0gbUNh
bGxEYWcuc2l6ZSgpOyBpLS07KQotICAgICB7Ci0gICAgICAgICBpZiAobUNhbGxEYWcuZ2V0UmVj
b3JkRnJvbUluZGV4KGkpLm5hbWUgPT0gIm1haW4oIikKLSAgICAgICAgIHsKLWRpZmYgLS1naXQg
YS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcAotaW5kZXggY2Q3ZmZjNC4uMWNkNzg3YyAxMDA2
NDQKLS0tLSBhL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKLSsrKyBi
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5jcHAKLUBAIC01MTEsNyArNTEx
LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIG4KLSAgICAgewotICAgICAgICAgaWYgKHR5cGUt
PmlzVW5zaXplZEFycmF5KCkpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgdHlwZS0+c2V0QXJy
YXlTaXplKGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSk7Ci0rICAgICAgICAgICAgdHlwZS0+c2V0
QXJyYXlTaXplKHN0YXRpY19jYXN0PGludD4oZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKSk7Ci0g
ICAgICAgICB9Ci0gICAgICAgICBlbHNlIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUtPmdl
dEFycmF5U2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpCi0gICAgICAgICB7Ci1k
aWZmIC0tZ2l0IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNwcCBiL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5jcHAKLWluZGV4IDgwOGRiOTUuLjFh
YTllNTkgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8u
Y3BwCi0rKysgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uY3BwCi1AQCAt
NTUsNyArNTUsNyBAQCB2b2lkIEV4cGFuZFZhcmlhYmxlKGNvbnN0IFNoYWRlclZhcmlhYmxlICZ2
YXJpYWJsZSwKLSAgICAgewotICAgICAgICAgaWYgKHZhcmlhYmxlLmlzQXJyYXkoKSkKLSAgICAg
ICAgIHsKLS0gICAgICAgICAgICBmb3IgKHNpemVfdCBlbGVtZW50SW5kZXggPSAwOyBlbGVtZW50
SW5kZXggPCB2YXJpYWJsZS5lbGVtZW50Q291bnQoKTsgZWxlbWVudEluZGV4KyspCi0rICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwg
dmFyaWFibGUuZWxlbWVudENvdW50KCk7IGVsZW1lbnRJbmRleCsrKQotICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG5hbWUgPSBuYW1lICsgOjpBcnJheVN0cmlu
ZyhlbGVtZW50SW5kZXgpOwotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBsbWFwcGVkTmFt
ZSA9IG1hcHBlZE5hbWUgKyA6OkFycmF5U3RyaW5nKGVsZW1lbnRJbmRleCk7Ci1kaWZmIC0tZ2l0
IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwCi1pbmRleCA3Yzc0MTA1Li43Y2M2MzE1IDEwMDY0
NAotLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwCi0rKysgYi9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5jcHAKLUBAIC0yNyw3ICsyNyw3IEBA
IEJsb2NrTWVtYmVySW5mbyBCbG9ja0xheW91dEVuY29kZXI6OmVuY29kZVR5cGUoR0xlbnVtIHR5
cGUsIHVuc2lnbmVkIGludCBhcnJheVNpCisgICAgIHJldHVybiAmbVVuaWZvcm1SZWdpc3Rlck1h
cDsKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyt9CitkaWZmIC0tZ2l0IGEvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCBiL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JITFNMLmgKK2luZGV4IDQwY2ZkNzAuLjRlODQ2MTIgMTAwNjQ0Cist
LS0gYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5oCisrKysgYi9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5oCitAQCAtMTMsNyArMTMsOSBAQCBj
bGFzcyBUcmFuc2xhdG9ySExTTCA6IHB1YmxpYyBUQ29tcGlsZXIKKyB7CisgICBwdWJsaWM6Cisg
ICAgIFRyYW5zbGF0b3JITFNMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNo
U2hhZGVyT3V0cHV0IG91dHB1dCk7CisrI2lmZGVmIEFOR0xFX0VOQUJMRV9ITFNMCisgICAgIFRy
YW5zbGF0b3JITFNMICpnZXRBc1RyYW5zbGF0b3JITFNMKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhp
czsgfQorKyNlbmRpZgogIAotICAgICBnZXRCbG9ja0xheW91dEluZm8odHlwZSwgYXJyYXlTaXpl
LCBpc1Jvd01ham9yTWF0cml4LCAmYXJyYXlTdHJpZGUsICZtYXRyaXhTdHJpZGUpOwotIAotLSAg
ICBjb25zdCBCbG9ja01lbWJlckluZm8gbWVtYmVySW5mbyhtQ3VycmVudE9mZnNldCAqIEJ5dGVz
UGVyQ29tcG9uZW50LCBhcnJheVN0cmlkZSAqIEJ5dGVzUGVyQ29tcG9uZW50LCBtYXRyaXhTdHJp
ZGUgKiBCeXRlc1BlckNvbXBvbmVudCwgaXNSb3dNYWpvck1hdHJpeCk7Ci0rICAgIGNvbnN0IEJs
b2NrTWVtYmVySW5mbyBtZW1iZXJJbmZvKHN0YXRpY19jYXN0PGludD4obUN1cnJlbnRPZmZzZXQg
KiBCeXRlc1BlckNvbXBvbmVudCksIGFycmF5U3RyaWRlICogQnl0ZXNQZXJDb21wb25lbnQsIG1h
dHJpeFN0cmlkZSAqIEJ5dGVzUGVyQ29tcG9uZW50LCBpc1Jvd01ham9yTWF0cml4KTsKLSAKLSAg
ICAgYWR2YW5jZU9mZnNldCh0eXBlLCBhcnJheVNpemUsIGlzUm93TWFqb3JNYXRyaXgsIGFycmF5
U3RyaWRlLCBtYXRyaXhTdHJpZGUpOwotIAorICAgICBib29sIGhhc0ludGVyZmFjZUJsb2NrKGNv
bnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9ja05hbWUpIGNvbnN0OworICAgICB1bnNpZ25l
ZCBpbnQgZ2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJm
YWNlQmxvY2tOYW1lKSBjb25zdDsKK2RpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9nbHNsYW5nX2xleC5jcHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX2xleC5j
cHAKK2luZGV4IGZmNmMyZDYuLjFhZjg3NmIgMTAwNjQ0CistLS0gYS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9nbHNsYW5nX2xleC5jcHAKKysrKyBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ds
c2xhbmdfbGV4LmNwcAorQEAgLTIwOTAsNyArMjA5MCw3IEBAIGNhc2UgWVlfU1RBVEVfRU9GKEZJ
RUxEUyk6CisgICAgICAgIFlZX0JSRUFLCisgY2FzZSAyMzk6CisgWVlfUlVMRV9TRVRVUAorLXsg
YXNzZXJ0KGZhbHNlKTsgcmV0dXJuIDA7IH0KKyt7IHJldHVybiAwOyB9CisgICAgICAgIFlZX0JS
RUFLCisgY2FzZSAyNDA6CisgWVlfUlVMRV9TRVRVUAogZGlmZiAtLWdpdCBhL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcCBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ds
c2xhbmdfdGFiLmNwcAotaW5kZXggMDNjZWY5My4uNmZiMGQ0NiAxMDA2NDQKK2luZGV4IDhiNGZi
ZDIuLmE3OTlkMjkgMTAwNjQ0CiAtLS0gYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5n
X3RhYi5jcHAKICsrKyBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcAog
QEAgLTEsNSArMSw3IEBACiAgLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDMu
MC40LiAgKi8KICAKLSsvKiBBcHBsZSBOb3RlOiBGb3IgdGhlIGF2b2lkYW5jZSBvZiBkb3VidCwg
QXBwbGUgZWxlY3RzIHRvIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgQlNEIGxpY2Vuc2UuICovIAorKy8qIEFwcGxlIE5vdGU6IEZvciB0aGUgYXZvaWRhbmNlIG9m
IGRvdWJ0LCBBcHBsZSBlbGVjdHMgdG8gZGlzdHJpYnV0ZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBCU0QgbGljZW5zZS4gKi8KICsKICAvKiBCaXNvbiBpbXBsZW1lbnRhdGlvbiBm
b3IgWWFjYy1saWtlIHBhcnNlcnMgaW4gQwogIAogICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4
OS0xOTkwLCAyMDAwLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1kaWZmIC0t
Z2l0IGEvc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHAgYi9zcmMvbGliQU5HTEUvQ29uZmlnLmNwcAot
aW5kZXggMWIxZmM1MC4uMmE2OGQ1YiAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9Db25maWcu
Y3BwCi0rKysgYi9zcmMvbGliQU5HTEUvQ29uZmlnLmNwcAotQEAgLTY0LDcgKzY0LDcgQEAgQ29u
ZmlnOjpDb25maWcoKQotIEVHTGludCBDb25maWdTZXQ6OmFkZChjb25zdCBDb25maWcgJmNvbmZp
ZykKLSB7Ci0gICAgIC8vIFNldCB0aGUgY29uZmlnJ3MgSUQgdG8gYSBzbWFsbCBudW1iZXIgdGhh
dCBzdGFydHMgYXQgMSAoW0VHTCAxLjVdIHNlY3Rpb24gMy40KQotLSAgICBFR0xpbnQgaWQgPSBt
Q29uZmlncy5zaXplKCkgKyAxOwotKyAgICBFR0xpbnQgaWQgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+
KG1Db25maWdzLnNpemUoKSArIDEpOworZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL2dsc2xhbmdfdGFiLmggYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5o
CitpbmRleCA3MzMxNTk0Li5lYjdlZjM5IDEwMDY0NAorLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvZ2xzbGFuZ190YWIuaAorKysrIGIvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFu
Z190YWIuaAorQEAgLTEsNSArMSw3IEBACisgLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05V
IEJpc29uIDMuMC40LiAgKi8KICAKLSAgICAgQ29uZmlnIGNvcHlDb25maWcoY29uZmlnKTsKLSAg
ICAgY29weUNvbmZpZy5jb25maWdJRCA9IGlkOwotZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9D
b250ZXh0LmNwcCBiL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAotaW5kZXggNTQ1Mjg0YS4uYzhl
YTk5MyAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAotKysrIGIvc3JjL2xp
YkFOR0xFL0NvbnRleHQuY3BwCi1AQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgQ29udGV4dDo6Z2V0
SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQotICAgICAgIGNhc2UgR0xfTUFY
X1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTOiAqcGFyYW1zID0gbUNh
cHMubWF4VHJhbnNmb3JtRmVlZGJhY2tJbnRlcmxlYXZlZENvbXBvbmVudHM7IGJyZWFrOwotICAg
ICAgIGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTOiAgICAg
ICAqcGFyYW1zID0gbUNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXM7
ICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFU
RV9DT01QT05FTlRTOiAgICAqcGFyYW1zID0gbUNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBh
cmF0ZUNvbXBvbmVudHM7ICAgIGJyZWFrOwotLSAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURf
VEVYVFVSRV9GT1JNQVRTOiAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLmNvbXByZXNzZWRUZXh0
dXJlRm9ybWF0cy5zaXplKCk7ICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2UgR0xf
TlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOiAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRp
Y19jYXN0PEdMaW50PihtQ2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMuc2l6ZSgpKTsgIGJy
ZWFrOwotICAgICAgIGNhc2UgR0xfTUFYX1NBTVBMRVNfQU5HTEU6ICAgICAgICAgICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heFNhbXBsZXM7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfTUFYX1ZJRVdQT1JUX0RJTVM6Ci0g
ICAgICAgICB7Ci1AQCAtODUzLDEzICs4NTMsMTMgQEAgdm9pZCBDb250ZXh0OjpnZXRJbnRlZ2Vy
dihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi0gICAgICAgICAqcGFyYW1zID0gbVJlc2V0
U3RyYXRlZ3k7Ci0gICAgICAgICBicmVhazsKLSAgICAgICBjYXNlIEdMX05VTV9TSEFERVJfQklO
QVJZX0ZPUk1BVFM6Ci0tICAgICAgICAqcGFyYW1zID0gbUNhcHMuc2hhZGVyQmluYXJ5Rm9ybWF0
cy5zaXplKCk7Ci0rICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1DYXBzLnNo
YWRlckJpbmFyeUZvcm1hdHMuc2l6ZSgpKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2Ug
R0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOgotICAgICAgICAgc3RkOjpjb3B5KG1DYXBzLnNoYWRl
ckJpbmFyeUZvcm1hdHMuYmVnaW4oKSwgbUNhcHMuc2hhZGVyQmluYXJ5Rm9ybWF0cy5lbmQoKSwg
cGFyYW1zKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfTlVNX1BST0dSQU1fQklO
QVJZX0ZPUk1BVFM6Ci0tICAgICAgICAqcGFyYW1zID0gbUNhcHMucHJvZ3JhbUJpbmFyeUZvcm1h
dHMuc2l6ZSgpOwotKyAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihtQ2Fwcy5w
cm9ncmFtQmluYXJ5Rm9ybWF0cy5zaXplKCkpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2Fz
ZSBHTF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTOgotICAgICAgICAgc3RkOjpjb3B5KG1DYXBzLnBy
b2dyYW1CaW5hcnlGb3JtYXRzLmJlZ2luKCksIG1DYXBzLnByb2dyYW1CaW5hcnlGb3JtYXRzLmVu
ZCgpLCBwYXJhbXMpOwotQEAgLTkzOSwxOSArOTM5LDE5IEBAIGJvb2wgQ29udGV4dDo6Z2V0UXVl
cnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQg
Km51Ci0gICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKLSAgICAgICAg
IHsKLSAgICAgICAgICAgICAqdHlwZSA9IEdMX0lOVDsKLS0gICAgICAgICAgICAqbnVtUGFyYW1z
ID0gbUNhcHMuY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKTsKLSsgICAgICAgICAgICAq
bnVtUGFyYW1zID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQ2Fwcy5jb21wcmVzc2VkVGV4
dHVyZUZvcm1hdHMuc2l6ZSgpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfRk9STUFUU19PRVM6Ci0gICAgICAgICB7Ci0g
ICAgICAgICAgICAgKnR5cGUgPSBHTF9JTlQ7Ci0tICAgICAgICAgICAgKm51bVBhcmFtcyA9IG1D
YXBzLnByb2dyYW1CaW5hcnlGb3JtYXRzLnNpemUoKTsKLSsgICAgICAgICAgICAqbnVtUGFyYW1z
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQ2Fwcy5wcm9ncmFtQmluYXJ5Rm9ybWF0cy5z
aXplKCkpOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgY2FzZSBH
TF9TSEFERVJfQklOQVJZX0ZPUk1BVFM6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICAgKnR5cGUg
PSBHTF9JTlQ7Ci0tICAgICAgICAgICAgKm51bVBhcmFtcyA9IG1DYXBzLnNoYWRlckJpbmFyeUZv
cm1hdHMuc2l6ZSgpOwotKyAgICAgICAgICAgICpudW1QYXJhbXMgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KG1DYXBzLnNoYWRlckJpbmFyeUZvcm1hdHMuc2l6ZSgpKTsKLSAgICAgICAgIH0K
LSAgICAgICAgIHJldHVybiB0cnVlOworKy8qIEFwcGxlIE5vdGU6IEZvciB0aGUgYXZvaWRhbmNl
IG9mIGRvdWJ0LCBBcHBsZSBlbGVjdHMgdG8gZGlzdHJpYnV0ZSB0aGlzIGZpbGUgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBCU0QgbGljZW5zZS4gKi8KKysKKyAvKiBCaXNvbiBpbnRlcmZhY2UgZm9y
IFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKICAKLWRpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvRnJh
bWVidWZmZXIuY3BwIGIvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcAotaW5kZXggZmFlZTgz
Yy4uMzg3MGU2OSAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAKLSsr
KyBiL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAKLUBAIC0yNjksNyArMjY5LDcgQEAgYm9v
bCBGcmFtZWJ1ZmZlcjo6aGFzRW5hYmxlZENvbG9yQXR0YWNobWVudCgpIGNvbnN0Ci0gewotICAg
ICBmb3IgKHNpemVfdCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBtRGF0
YS5tQ29sb3JBdHRhY2htZW50cy5zaXplKCk7ICsrY29sb3JBdHRhY2htZW50KQorICAgIENvcHly
aWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAwLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuCitkaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwIGIvc3JjL2xp
YkFOR0xFL0Rpc3BsYXkuY3BwCitpbmRleCBjOTRkZmYyLi40ZGU1NzliIDEwMDY0NAorLS0tIGEv
c3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCisrKysgYi9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAK
K0BAIC0xMzksNiArMTM5LDcgQEAgcng6OkRpc3BsYXlJbXBsICpDcmVhdGVEaXNwbGF5RnJvbUF0
dHJpYnMoY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApCisgICAgIHN3aXRjaCAoZGlzcGxh
eVR5cGUpCiAgICAgIHsKLS0gICAgICAgIGlmIChpc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoY29s
b3JBdHRhY2htZW50KSkKLSsgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGlz
RW5hYmxlZENvbG9yQXR0YWNobWVudChjb2xvckF0dGFjaG1lbnQpKSkKLSAgICAgICAgIHsKLSAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLUBAIC0yODcsNyArMjg3LDcgQEAg
Ym9vbCBGcmFtZWJ1ZmZlcjo6dXNpbmdFeHRlbmRlZERyYXdCdWZmZXJzKCkgY29uc3QKLSB7Ci0g
ICAgIGZvciAoc2l6ZV90IGNvbG9yQXR0YWNobWVudCA9IDE7IGNvbG9yQXR0YWNobWVudCA8IG1E
YXRhLm1Db2xvckF0dGFjaG1lbnRzLnNpemUoKTsgKytjb2xvckF0dGFjaG1lbnQpCi0gICAgIHsK
LS0gICAgICAgIGlmIChpc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoY29sb3JBdHRhY2htZW50KSkK
LSsgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGlzRW5hYmxlZENvbG9yQXR0
YWNobWVudChjb2xvckF0dGFjaG1lbnQpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgIH0KLWRpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRl
eC5jcHAgYi9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKLWluZGV4IGFjNzMwMmQuLjUzODI1
OGYgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKLSsrKyBiL3NyYy9s
aWJBTkdMRS9JbWFnZUluZGV4LmNwcAotQEAgLTM1LDcgKzM1LDcgQEAgSW1hZ2VJbmRleCBJbWFn
ZUluZGV4OjpNYWtlMkQoR0xpbnQgbWlwSW5kZXgpCi0gSW1hZ2VJbmRleCBJbWFnZUluZGV4OjpN
YWtlQ3ViZShHTGVudW0gdGFyZ2V0LCBHTGludCBtaXBJbmRleCkKLSB7Ci0gICAgIEFTU0VSVChn
bDo6SXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKTsKLS0gICAgcmV0dXJuIEltYWdlSW5k
ZXgodGFyZ2V0LCBtaXBJbmRleCwgQ3ViZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5kZXgodGFy
Z2V0KSk7Ci0rICAgIHJldHVybiBJbWFnZUluZGV4KHRhcmdldCwgbWlwSW5kZXgsIHN0YXRpY19j
YXN0PGludD4oQ3ViZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5kZXgodGFyZ2V0KSkpOwotIH0K
LSAKLSBJbWFnZUluZGV4IEltYWdlSW5kZXg6Ok1ha2UyREFycmF5KEdMaW50IG1pcEluZGV4LCBH
TGludCBsYXllckluZGV4KQotQEAgLTUwLDcgKzUwLDcgQEAgSW1hZ2VJbmRleCBJbWFnZUluZGV4
OjpNYWtlM0QoR0xpbnQgbWlwSW5kZXgsIEdMaW50IGxheWVySW5kZXgpCi0gCi0gSW1hZ2VJbmRl
eCBJbWFnZUluZGV4OjpNYWtlR2VuZXJpYyhHTGVudW0gdGFyZ2V0LCBHTGludCBtaXBJbmRleCkK
LSB7Ci0tICAgIEdMaW50IGxheWVySW5kZXggPSBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdl
dCkgPyBDdWJlTWFwVGV4dHVyZVRhcmdldFRvTGF5ZXJJbmRleCh0YXJnZXQpIDogRU5USVJFX0xF
VkVMOwotKyAgICBHTGludCBsYXllckluZGV4ID0gSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpID8gc3RhdGljX2Nhc3Q8R0xpbnQ+KEN1YmVNYXBUZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4
KHRhcmdldCkpIDogRU5USVJFX0xFVkVMOwotICAgICByZXR1cm4gSW1hZ2VJbmRleCh0YXJnZXQs
IG1pcEluZGV4LCBsYXllckluZGV4KTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xF
L1Byb2dyYW0uY3BwIGIvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCi1pbmRleCBlMjE1Mzc5Li40
MmYwOWI5IDEwMDY0NAotLS0tIGEvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCi0rKysgYi9zcmMv
bGliQU5HTEUvUHJvZ3JhbS5jcHAKLUBAIC00ODMsNyArNDgzLDcgQEAgRXJyb3IgUHJvZ3JhbTo6
c2F2ZUJpbmFyeShHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGJ1
ZlNpemUsIEcKLSAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgfQotIAotLSAgICBHTHNpemVp
IHN0cmVhbUxlbmd0aCA9IHN0cmVhbS5sZW5ndGgoKTsKLSsgICAgR0xzaXplaSBzdHJlYW1MZW5n
dGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJlYW0ubGVuZ3RoKCkpOwotICAgICBjb25zdCB2
b2lkICpzdHJlYW1EYXRhID0gc3RyZWFtLmRhdGEoKTsKLSAKLSAgICAgaWYgKHN0cmVhbUxlbmd0
aCA+IGJ1ZlNpemUpCi1AQCAtNjQ1LDcgKzY0NSw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZl
QXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgs
Ci0gCi0gICAgICAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgICAgICB7Ci0tICAgICAgICAg
ICAgICAgICpsZW5ndGggPSBzdHJsZW4obmFtZSk7Ci0rICAgICAgICAgICAgICAgICpsZW5ndGgg
PSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJsZW4obmFtZSkpOwotICAgICAgICAgICAgIH0KLSAg
ICAgICAgIH0KLSAKLUBAIC03NjIsNyArNzYyLDcgQEAgdm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVV
bmlmb3JtKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEcK
LSAKLSAgICAgICAgICAgICBpZiAobGVuZ3RoKQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAg
ICAgICAgKmxlbmd0aCA9IHN0cmxlbihuYW1lKTsKLSsgICAgICAgICAgICAgICAgKmxlbmd0aCA9
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHN0cmxlbihuYW1lKSk7Ci0gICAgICAgICAgICAgfQotICAg
ICAgICAgfQotIAotQEAgLTc5MCw3ICs3OTAsNyBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVV
bmlmb3JtQ291bnQoKQotIHsKLSAgICAgaWYgKG1MaW5rZWQpCi0gICAgIHsKLS0gICAgICAgIHJl
dHVybiBtUHJvZ3JhbS0+Z2V0VW5pZm9ybXMoKS5zaXplKCk7Ci0rICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R0xpbnQ+KG1Qcm9ncmFtLT5nZXRVbmlmb3JtcygpLnNpemUoKSk7Ci0gICAgIH0K
LSAgICAgZWxzZQotICAgICB7Ci1AQCAtODA0LDcgKzgwNCw3IEBAIEdMaW50IFByb2dyYW06Omdl
dEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKQotIAotICAgICBpZiAobUxpbmtlZCkKLSAgICAgewot
LSAgICAgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gbVByb2dyYW0tPmdldFVuaWZvcm1z
KCkuc2l6ZSgpOwotKyAgICAgICAgdW5zaWduZWQgaW50IG51bVVuaWZvcm1zID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihtUHJvZ3JhbS0+Z2V0VW5pZm9ybXMoKS5zaXplKCkpOwotICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwgbnVt
VW5pZm9ybXM7IHVuaWZvcm1JbmRleCsrKQotICAgICAgICAgewotICAgICAgICAgICAgIGlmICgh
bVByb2dyYW0tPmdldFVuaWZvcm1zKClbdW5pZm9ybUluZGV4XS0+bmFtZS5lbXB0eSgpKQotQEAg
LTEwNDIsNyArMTA0Miw3IEBAIHZvaWQgUHJvZ3JhbTo6dXBkYXRlU2FtcGxlck1hcHBpbmcoKQot
IAotIEdMdWludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpCi0gewotLSAg
ICByZXR1cm4gbVByb2dyYW0tPmdldFVuaWZvcm1CbG9ja3MoKS5zaXplKCk7Ci0rICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1Qcm9ncmFtLT5nZXRVbmlmb3JtQmxvY2tzKCkuc2l6ZSgp
KTsKLSB9Ci0gCi0gdm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKEdMdWlu
dCB1bmlmb3JtQmxvY2tJbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
Y2hhciAqdW5pZm9ybUJsb2NrTmFtZSkgY29uc3QKLUBAIC0xMDY1LDcgKzEwNjUsNyBAQCB2b2lk
IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoR0x1aW50IHVuaWZvcm1CbG9ja0lu
ZGV4LCBHTHNpemVpIGJ1ZlNpegotIAotICAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgIHsK
LS0gICAgICAgICAgICAqbGVuZ3RoID0gc3RybGVuKHVuaWZvcm1CbG9ja05hbWUpOwotKyAgICAg
ICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJsZW4odW5pZm9ybUJsb2Nr
TmFtZSkpOwotICAgICAgICAgfQotICAgICB9Ci0gfQotQEAgLTExMTEsMTMgKzExMTEsMTMgQEAg
R0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybUJsb2NrTWF4TGVuZ3RoKCkKLSAKLSAgICAg
aWYgKG1MaW5rZWQpCi0gICAgIHsKLS0gICAgICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxv
Y2tzID0gbVByb2dyYW0tPmdldFVuaWZvcm1CbG9ja3MoKS5zaXplKCk7Ci0rICAgICAgICB1bnNp
Z25lZCBpbnQgbnVtVW5pZm9ybUJsb2NrcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVBy
b2dyYW0tPmdldFVuaWZvcm1CbG9ja3MoKS5zaXplKCkpOwotICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgdW5pZm9ybUJsb2NrSW5kZXggPSAwOyB1bmlmb3JtQmxvY2tJbmRleCA8IG51bVVuaWZv
cm1CbG9ja3M7IHVuaWZvcm1CbG9ja0luZGV4KyspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAg
Y29uc3QgVW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSAqbVByb2dyYW0tPmdldFVuaWZvcm1C
bG9ja3MoKVt1bmlmb3JtQmxvY2tJbmRleF07Ci0gICAgICAgICAgICAgaWYgKCF1bmlmb3JtQmxv
Y2submFtZS5lbXB0eSgpKQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgY29uc3Qg
aW50IGxlbmd0aCA9IHVuaWZvcm1CbG9jay5uYW1lLmxlbmd0aCgpICsgMTsKLSsgICAgICAgICAg
ICAgICAgY29uc3QgaW50IGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4odW5pZm9ybUJsb2NrLm5h
bWUubGVuZ3RoKCkgKyAxKTsKLSAKLSAgICAgICAgICAgICAgICAgLy8gQ291bnRpbmcgaW4gIlsw
XSIuCi0gICAgICAgICAgICAgICAgIGNvbnN0IGludCBhcnJheUxlbmd0aCA9ICh1bmlmb3JtQmxv
Y2suaXNBcnJheUVsZW1lbnQoKSA/IDMgOiAwKTsKLUBAIC0xNDY2LDcgKzE0NjYsNyBAQCBib29s
IFByb2dyYW06OmFyZU1hdGNoaW5nSW50ZXJmYWNlQmxvY2tzKGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBjb25zdCBzaDo6SW50ZXJmYQotICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkxheW91dCBxdWFs
aWZpZXJzIGRpZmZlciBmb3IgaW50ZXJmYWNlIGJsb2NrICclcycgYmV0d2VlbiB2ZXJ0ZXggYW5k
IGZyYWdtZW50IHNoYWRlcnMiLCBibG9ja05hbWUpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICB9Ci0tICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1CbG9ja01lbWJlcnMgPSB2ZXJ0ZXhJ
bnRlcmZhY2VCbG9jay5maWVsZHMuc2l6ZSgpOwotKyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVt
QmxvY2tNZW1iZXJzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2ZXJ0ZXhJbnRlcmZhY2VC
bG9jay5maWVsZHMuc2l6ZSgpKTsKLSAgICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tNZW1iZXJJ
bmRleCA9IDA7IGJsb2NrTWVtYmVySW5kZXggPCBudW1CbG9ja01lbWJlcnM7IGJsb2NrTWVtYmVy
SW5kZXgrKykKLSAgICAgewotICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQg
JnZlcnRleE1lbWJlciA9IHZlcnRleEludGVyZmFjZUJsb2NrLmZpZWxkc1tibG9ja01lbWJlcklu
ZGV4XTsKLUBAIC0xNTEwLDcgKzE1MTAsNyBAQCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVZh
cmlhYmxlc0Jhc2UoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcgotICAg
ICAgICAgaW5mb0xvZy5hcHBlbmQoIlN0cnVjdHVyZSBsZW5ndGhzIGZvciAlcyBkaWZmZXIgYmV0
d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMiLCB2YXJpYWJsZU5hbWUuY19zdHIoKSk7
Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgIH0KLS0gICAgY29uc3QgdW5zaWduZWQgaW50
IG51bU1lbWJlcnMgPSB2ZXJ0ZXhWYXJpYWJsZS5maWVsZHMuc2l6ZSgpOwotKyAgICBjb25zdCB1
bnNpZ25lZCBpbnQgbnVtTWVtYmVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmVydGV4
VmFyaWFibGUuZmllbGRzLnNpemUoKSk7Ci0gICAgIGZvciAodW5zaWduZWQgaW50IG1lbWJlcklu
ZGV4ID0gMDsgbWVtYmVySW5kZXggPCBudW1NZW1iZXJzOyBtZW1iZXJJbmRleCsrKQotICAgICB7
Ci0gICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZlcnRleE1lbWJlciA9IHZlcnRl
eFZhcmlhYmxlLmZpZWxkc1ttZW1iZXJJbmRleF07Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xF
L1JlbmRlcmJ1ZmZlci5jcHAgYi9zcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcAotaW5kZXgg
ODViOTIwYi4uMzRjYzM2NSAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIu
Y3BwCi0rKysgYi9zcmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNwcAotQEAgLTQyLDggKzQyLDgg
QEAgRXJyb3IgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
c2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2gKLSAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAg
fQotIAotLSAgICBtV2lkdGggPSB3aWR0aDsKLS0gICAgbUhlaWdodCA9IGhlaWdodDsKLSsgICAg
bVdpZHRoID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lkdGgpOwotKyAgICBtSGVpZ2h0ID0gc3Rh
dGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KTsKLSAgICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJu
YWxmb3JtYXQ7Ci0gICAgIG1TYW1wbGVzID0gMDsKLSAKLUBAIC01OCwxMCArNTgsMTAgQEAgRXJy
b3IgUmVuZGVyYnVmZmVyOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgfQotIAot
LSAgICBtV2lkdGggPSB3aWR0aDsKLS0gICAgbUhlaWdodCA9IGhlaWdodDsKLSsgICAgbVdpZHRo
ID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lkdGgpOwotKyAgICBtSGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8R0xzaXplaT4oaGVpZ2h0KTsKLSAgICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3Jt
YXQ7Ci0tICAgIG1TYW1wbGVzID0gc2FtcGxlczsKLSsgICAgbVNhbXBsZXMgPSBzdGF0aWNfY2Fz
dDxHTHNpemVpPihzYW1wbGVzKTsKLSAKLSAgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsK
LSB9Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xFL1NoYWRlci5jcHAgYi9zcmMvbGliQU5HTEUv
U2hhZGVyLmNwcAotaW5kZXggN2FmNGZmMy4uNTEwNmU5NSAxMDA2NDQKLS0tLSBhL3NyYy9saWJB
TkdMRS9TaGFkZXIuY3BwCi0rKysgYi9zcmMvbGliQU5HTEUvU2hhZGVyLmNwcAotQEAgLTY2LDcg
KzY2LDcgQEAgdm9pZCBTaGFkZXI6OnNldFNvdXJjZShHTHNpemVpIGNvdW50LCBjb25zdCBjaGFy
ICpjb25zdCAqc3RyaW5nLCBjb25zdCBHTGludCAqbGUKLSAKLSBpbnQgU2hhZGVyOjpnZXRJbmZv
TG9nTGVuZ3RoKCkgY29uc3QKLSB7Ci0tICAgIHJldHVybiAgbVNoYWRlci0+Z2V0SW5mb0xvZygp
LmVtcHR5KCkgPyAwIDogKG1TaGFkZXItPmdldEluZm9Mb2coKS5sZW5ndGgoKSArIDEpOwotKyAg
ICByZXR1cm4gIG1TaGFkZXItPmdldEluZm9Mb2coKS5lbXB0eSgpID8gMCA6IHN0YXRpY19jYXN0
PGludD4obVNoYWRlci0+Z2V0SW5mb0xvZygpLmxlbmd0aCgpICsgMSk7Ci0gfQotIAotIHZvaWQg
U2hhZGVyOjpnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFy
ICppbmZvTG9nKSBjb25zdAotQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIFNoYWRlcjo6Z2V0SW5m
b0xvZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykgY29u
c3QKLSAKLSBpbnQgU2hhZGVyOjpnZXRTb3VyY2VMZW5ndGgoKSBjb25zdAotIHsKLS0gICAgcmV0
dXJuIG1Tb3VyY2UuZW1wdHkoKSA/IDAgOiAobVNvdXJjZS5sZW5ndGgoKSArIDEpOwotKyAgICBy
ZXR1cm4gbVNvdXJjZS5lbXB0eSgpID8gMCA6IHN0YXRpY19jYXN0PGludD4obVNvdXJjZS5sZW5n
dGgoKSArIDEpOwotIH0KLSAKLSBpbnQgU2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlTGVuZ3Ro
KCkgY29uc3QKLSB7Ci0tICAgIHJldHVybiBtU2hhZGVyLT5nZXRUcmFuc2xhdGVkU291cmNlKCku
ZW1wdHkoKSA/IDAgOiAobVNoYWRlci0+Z2V0VHJhbnNsYXRlZFNvdXJjZSgpLmxlbmd0aCgpICsg
MSk7Ci0rICAgIHJldHVybiBtU2hhZGVyLT5nZXRUcmFuc2xhdGVkU291cmNlKCkuZW1wdHkoKSA/
IDAgOiBzdGF0aWNfY2FzdDxpbnQ+KG1TaGFkZXItPmdldFRyYW5zbGF0ZWRTb3VyY2UoKS5sZW5n
dGgoKSArIDEpOwotIH0KLSAKLSB2b2lkIFNoYWRlcjo6Z2V0U291cmNlSW1wbChjb25zdCBzdGQ6
OnN0cmluZyAmc291cmNlLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAq
YnVmZmVyKQotZGlmZiAtLWdpdCBhL3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAgYi9zcmMvbGliQU5H
TEUvU3RhdGUuY3BwCi1pbmRleCBmNzMxNzc0Li5mNjgzN2Y0IDEwMDY0NAotLS0tIGEvc3JjL2xp
YkFOR0xFL1N0YXRlLmNwcAotKysrIGIvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcAotQEAgLTU2OSw3
ICs1NjksNyBAQCB2b2lkIFN0YXRlOjpzZXRBY3RpdmVTYW1wbGVyKHVuc2lnbmVkIGludCBhY3Rp
dmUpCi0gCi0gdW5zaWduZWQgaW50IFN0YXRlOjpnZXRBY3RpdmVTYW1wbGVyKCkgY29uc3QKLSB7
Ci0tICAgIHJldHVybiBtQWN0aXZlU2FtcGxlcjsKLSsgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4obUFjdGl2ZVNhbXBsZXIpOwotIH0KLSAKLSB2b2lkIFN0YXRlOjpzZXRTYW1w
bGVyVGV4dHVyZShHTGVudW0gdHlwZSwgVGV4dHVyZSAqdGV4dHVyZSkKLUBAIC0xMTkyLDcgKzEx
OTIsNyBAQCB2b2lkIFN0YXRlOjpnZXRJbnRlZ2Vydihjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQotICAgICAgIGNhc2UgR0xfVU5QQUNLX1JPV19MRU5H
VEg6ICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1VbnBhY2sucm93TGVuZ3RoOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfR0VORVJB
VEVfTUlQTUFQX0hJTlQ6ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1HZW5lcmF0ZU1p
cG1hcEhpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2Ug
R0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVF9PRVM6ICAgICAgKnBhcmFtcyA9IG1G
cmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50OyAgICAgICAgICAgICAgICAgIGJyZWFrOwotLSAg
ICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBh
cmFtcyA9IChtQWN0aXZlU2FtcGxlciArIEdMX1RFWFRVUkUwKTsgICAgICAgICAgICAgICAgIGJy
ZWFrOwotKyAgICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihtQWN0aXZlU2FtcGxlciArIEdMX1RF
WFRVUkUwKTsgICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1EZXB0aFN0ZW5jaWwuc3RlbmNpbEZ1bmM7
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfU1RFTkNJTF9SRUY6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1TdGVuY2lsUmVmOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9WQUxVRV9NQVNLOiAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGNsYW1wVG9J
bnQobURlcHRoU3RlbmNpbC5zdGVuY2lsTWFzayk7ICAgICAgICAgIGJyZWFrOwotQEAgLTEzMTYs
MTkgKzEzMTYsMTkgQEAgdm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcnYoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKKyAgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6CisrI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX09Q
RU5HTCkKKyAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkgfHwgZGVmaW5lZChBTkdMRV9F
TkFCTEVfRDNEMTEpCisgICAgICAgICAvLyBEZWZhdWx0IHRvIEQzRCBkaXNwbGF5cworICAgICAg
ICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUQzRCgpOworQEAgLTE1MCw2ICsxNTEsNyBAQCByeDo6
RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhjb25zdCBBdHRyaWJ1dGVNYXAg
JmF0dHJpYk1hcCkKKyAgICAgICAgIC8vIE5vIGRpc3BsYXkgYXZhaWxhYmxlCisgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICNlbmRpZgorKyNlbmRpZgogICAgICAgICAgYnJlYWs7Ci0gICAgICAg
Y2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfMkQ6Ci0gICAgICAgICBBU1NFUlQobUFjdGl2ZVNhbXBs
ZXIgPCBtTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0tICAgICAgICAqcGFyYW1zID0g
Z2V0U2FtcGxlclRleHR1cmVJZChtQWN0aXZlU2FtcGxlciwgR0xfVEVYVFVSRV8yRCkgOwotKyAg
ICAgICAgKnBhcmFtcyA9IGdldFNhbXBsZXJUZXh0dXJlSWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihtQWN0aXZlU2FtcGxlciksIEdMX1RFWFRVUkVfMkQpIDsKLSAgICAgICAgIGJyZWFrOwot
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOgotICAgICAgICAgQVNTRVJU
KG1BY3RpdmVTYW1wbGVyIDwgbU1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwotLSAgICAg
ICAgKnBhcmFtcyA9IGdldFNhbXBsZXJUZXh0dXJlSWQobUFjdGl2ZVNhbXBsZXIsIEdMX1RFWFRV
UkVfQ1VCRV9NQVApOwotKyAgICAgICAgKnBhcmFtcyA9IGdldFNhbXBsZXJUZXh0dXJlSWQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQWN0aXZlU2FtcGxlciksIEdMX1RFWFRVUkVfQ1VCRV9N
QVApOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfM0Q6
Ci0gICAgICAgICBBU1NFUlQobUFjdGl2ZVNhbXBsZXIgPCBtTWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0cyk7Ci0tICAgICAgICAqcGFyYW1zID0gZ2V0U2FtcGxlclRleHR1cmVJZChtQWN0aXZl
U2FtcGxlciwgR0xfVEVYVFVSRV8zRCk7Ci0rICAgICAgICAqcGFyYW1zID0gZ2V0U2FtcGxlclRl
eHR1cmVJZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BY3RpdmVTYW1wbGVyKSwgR0xfVEVY
VFVSRV8zRCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElO
R18yRF9BUlJBWToKLSAgICAgICAgIEFTU0VSVChtQWN0aXZlU2FtcGxlciA8IG1NYXhDb21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzKTsKLS0gICAgICAgICpwYXJhbXMgPSBnZXRTYW1wbGVyVGV4dHVy
ZUlkKG1BY3RpdmVTYW1wbGVyLCBHTF9URVhUVVJFXzJEX0FSUkFZKTsKLSsgICAgICAgICpwYXJh
bXMgPSBnZXRTYW1wbGVyVGV4dHVyZUlkKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obUFjdGl2
ZVNhbXBsZXIpLCBHTF9URVhUVVJFXzJEX0FSUkFZKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAg
IGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfQklORElORzoKLSAgICAgICAgICpwYXJhbXMgPSBtR2Vu
ZXJpY1VuaWZvcm1CdWZmZXIuaWQoKTsKLWRpZmYgLS1naXQgYS9zcmMvbGliQU5HTEUvU3VyZmFj
ZS5jcHAgYi9zcmMvbGliQU5HTEUvU3VyZmFjZS5jcHAKLWluZGV4IGM0MmI2OWQuLjk3NDJmNWQg
MTAwNjQ0Ci0tLS0gYS9zcmMvbGliQU5HTEUvU3VyZmFjZS5jcHAKLSsrKyBiL3NyYy9saWJBTkdM
RS9TdXJmYWNlLmNwcAotQEAgLTEzNSwxMiArMTM1LDEyIEBAIEVHTGludCBTdXJmYWNlOjppc0Zp
eGVkU2l6ZSgpIGNvbnN0CiAgCi0gRUdMaW50IFN1cmZhY2U6OmdldFdpZHRoKCkgY29uc3QKLSB7
Ci0tICAgIHJldHVybiBtRml4ZWRTaXplID8gbUZpeGVkV2lkdGggOiBtSW1wbGVtZW50YXRpb24t
PmdldFdpZHRoKCk7Ci0rICAgIHJldHVybiBtRml4ZWRTaXplID8gc3RhdGljX2Nhc3Q8RUdMaW50
PihtRml4ZWRXaWR0aCkgOiBtSW1wbGVtZW50YXRpb24tPmdldFdpZHRoKCk7Ci0gfQotIAotIEVH
TGludCBTdXJmYWNlOjpnZXRIZWlnaHQoKSBjb25zdAotIHsKLS0gICAgcmV0dXJuIG1GaXhlZFNp
emUgPyBtRml4ZWRIZWlnaHQgOiBtSW1wbGVtZW50YXRpb24tPmdldEhlaWdodCgpOwotKyAgICBy
ZXR1cm4gbUZpeGVkU2l6ZSA/IHN0YXRpY19jYXN0PEVHTGludD4obUZpeGVkSGVpZ2h0KSA6IG1J
bXBsZW1lbnRhdGlvbi0+Z2V0SGVpZ2h0KCk7Ci0gfQotIAotIEVycm9yIFN1cmZhY2U6OmJpbmRU
ZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKLWRpZmYgLS1naXQg
YS9zcmMvbGliQU5HTEUvVGV4dHVyZS5jcHAgYi9zcmMvbGliQU5HTEUvVGV4dHVyZS5jcHAKLWlu
ZGV4IDFhYjVjN2QuLjQzN2JhMGQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliQU5HTEUvVGV4dHVyZS5j
cHAKLSsrKyBiL3NyYy9saWJBTkdMRS9UZXh0dXJlLmNwcAotQEAgLTI2Niw3ICsyNjYsNyBAQCBF
cnJvciBUZXh0dXJlOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgYwotIAotICAgICByZWxlYXNlVGV4SW1hZ2UoKTsKLSAKLS0g
ICAgbUltbXV0YWJsZUxldmVsQ291bnQgPSBsZXZlbHM7Ci0rICAgIG1JbW11dGFibGVMZXZlbENv
dW50ID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4obGV2ZWxzKTsKLSAgICAgY2xlYXJJbWFnZURlc2Nz
KCk7Ci0gICAgIHNldEltYWdlRGVzY0NoYWluKGxldmVscywgc2l6ZSwgaW50ZXJuYWxGb3JtYXQp
OwotIAotQEAgLTI5NSwxNiArMjk1LDE2IEBAIHZvaWQgVGV4dHVyZTo6c2V0SW1hZ2VEZXNjQ2hh
aW4oc2l6ZV90IGxldmVscywgRXh0ZW50cyBiYXNlU2l6ZSwgR0xlbnVtIHNpemVkSW50Ci0gewot
ICAgICBmb3IgKHNpemVfdCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyBsZXZlbCsrKQotICAg
ICB7Ci0tICAgICAgICBFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heDxzaXplX3Q+KGJhc2VTaXpl
LndpZHRoID4+IGxldmVsLCAxKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4
PHNpemVfdD4oYmFzZVNpemUuaGVpZ2h0ID4+IGxldmVsLCAxKSwKLS0gICAgICAgICAgICAgICAg
ICAgICAgICAgIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkRfQVJSQVkpID8gYmFzZVNpemUuZGVw
dGggOiBzdGQ6Om1heDxzaXplX3Q+KGJhc2VTaXplLmRlcHRoID4+IGxldmVsLCAxKSk7Ci0rICAg
ICAgICBFeHRlbnRzIGxldmVsU2l6ZShzdGQ6Om1heDxpbnQ+KGJhc2VTaXplLndpZHRoID4+IGxl
dmVsLCAxKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4PGludD4oYmFzZVNp
emUuaGVpZ2h0ID4+IGxldmVsLCAxKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIChtVGFy
Z2V0ID09IEdMX1RFWFRVUkVfMkRfQVJSQVkpID8gYmFzZVNpemUuZGVwdGggOiBzdGQ6Om1heDxp
bnQ+KGJhc2VTaXplLmRlcHRoID4+IGxldmVsLCAxKSk7Ci0gICAgICAgICBJbWFnZURlc2MgbGV2
ZWxJbmZvKGxldmVsU2l6ZSwgc2l6ZWRJbnRlcm5hbEZvcm1hdCk7Ci0gCi0gICAgICAgICBpZiAo
bVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQotICAgICAgICAgewotICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGZhY2UgPSBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExh
c3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQotICAgICAgICAgICAgIHsKLS0gICAgICAg
ICAgICAgICAgc2V0SW1hZ2VEZXNjKGZhY2UsIGxldmVsLCBsZXZlbEluZm8pOwotKyAgICAgICAg
ICAgICAgICBzZXRJbWFnZURlc2Moc3RhdGljX2Nhc3Q8R0xlbnVtPihmYWNlKSwgbGV2ZWwsIGxl
dmVsSW5mbyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgZWxzZQotQEAg
LTU3MSwxMiArNTcxLDEyIEBAIFRleHR1cmU6OlNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZTo6U2Ft
cGxlckNvbXBsZXRlbmVzc0NhY2hlKCkKLSAKLSBHTHNpemVpIFRleHR1cmU6OmdldEF0dGFjaG1l
bnRXaWR0aChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkg
Y29uc3QKLSB7Ci0tICAgIHJldHVybiBnZXRXaWR0aCh0YXJnZXQudGV4dHVyZUluZGV4KCkudHlw
ZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1pcEluZGV4KTsKLSsgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGdldFdpZHRoKHRhcmdldC50ZXh0dXJlSW5kZXgoKS50eXBlLCB0YXJnZXQu
dGV4dHVyZUluZGV4KCkubWlwSW5kZXgpKTsKLSB9Ci0gCi0gR0xzaXplaSBUZXh0dXJlOjpnZXRB
dHRhY2htZW50SGVpZ2h0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAm
dGFyZ2V0KSBjb25zdAotIHsKLS0gICAgcmV0dXJuIGdldEhlaWdodCh0YXJnZXQudGV4dHVyZUlu
ZGV4KCkudHlwZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1pcEluZGV4KTsKLSsgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGdldEhlaWdodCh0YXJnZXQudGV4dHVyZUluZGV4KCkudHlw
ZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1pcEluZGV4KSk7Ci0gfQotIAotIEdMZW51bSBUZXh0
dXJlOjpnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYkFOR0xF
L3ZhbGlkYXRpb25FUy5jcHAgYi9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAotaW5kZXgg
MTg5NjEzOC4uMmEyODhhMiAxMDA2NDQKLS0tLSBhL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMu
Y3BwCi0rKysgYi9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAotQEAgLTE3NCw3ICsxNzQs
NyBAQCBib29sIFZhbGlkTWlwTGV2ZWwoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwpCi0gICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAg
fQotIAotLSAgICByZXR1cm4gbGV2ZWwgPD0gZ2w6OmxvZzIobWF4RGltZW5zaW9uKTsKLSsgICAg
cmV0dXJuIGxldmVsIDw9IGdsOjpsb2cyKHN0YXRpY19jYXN0PGludD4obWF4RGltZW5zaW9uKSk7
Ci0gfQotIAotIGJvb2wgVmFsaWRJbWFnZVNpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsCisgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0Q5X0FOR0xFOgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvY29kZXJldmll
dy5zZXR0aW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9jb2RlcmV2
aWV3LnNldHRpbmdzCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9jb2RlcmV2aWV3LnNldHRpbmdzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBU
aGlzIGZpbGUgaXMgdXNlZCBieSBnY2wgdG8gZ2V0IHJlcG9zaXRvcnkgc3BlY2lmaWMgaW5mb3Jt
YXRpb24uDQotR0VSUklUX0hPU1Q6IGNocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tDQot
R0VSUklUX1BPUlQ6IDI5NDE4DQotQ09ERV9SRVZJRVdfU0VSVkVSOiBjaHJvbWl1bS1yZXZpZXcu
Z29vZ2xlc291cmNlLmNvbQ0KKyMgVGhpcyBmaWxlIGlzIHVzZWQgYnkgZ2l0IGNsIHRvIGdldCBy
ZXBvc2l0b3J5IHNwZWNpZmljIGluZm9ybWF0aW9uLgorQ09ERV9SRVZJRVdfU0VSVkVSOiBodHRw
czovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tCitHRVJSSVRfSE9TVDogVHJ1ZQor
VFJZU0VSVkVSX0dFUlJJVF9VUkw6IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJj
ZS5jb20KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4
dC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0VHTC9lZ2xleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKICNlbmRpZgogCiAv
KgotKiogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTQgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKiog
Q29weXJpZ2h0IChjKSAyMDEzLTIwMTYgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoqIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZyBhCiAqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCkBAIC0zMywxMiArMzMsMTIgQEAKICoqIHVzZWQgdG8g
bWFrZSB0aGUgaGVhZGVyLCBhbmQgdGhlIGhlYWRlciBjYW4gYmUgZm91bmQgYXQKICoqICAgaHR0
cDovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5LwogKioKLSoqIEtocm9ub3MgJFJldmlzaW9uOiAy
NzAxOCAkIG9uICREYXRlOiAyMDE0LTA2LTEwIDA4OjA2OjEyIC0wNzAwIChUdWUsIDEwIEp1biAy
MDE0KSAkCisqKiBLaHJvbm9zICRSZXZpc2lvbjogMzI0MzIgJCBvbiAkRGF0ZTogMjAxNi0wMi0w
OSAyMzowMTowNyAtMDgwMCAoVHVlLCAwOSBGZWIgMjAxNikgJAogKi8KIAogI2luY2x1ZGUgPEVH
TC9lZ2xwbGF0Zm9ybS5oPgogCi0jZGVmaW5lIEVHTF9FR0xFWFRfVkVSU0lPTiAyMDE0MDYxMAor
I2RlZmluZSBFR0xfRUdMRVhUX1ZFUlNJT04gMjAxNjAyMDkKIAogLyogR2VuZXJhdGVkIEMgaGVh
ZGVyIGZvcjoKICAqIEFQSTogZWdsCkBAIC05NCwxMiArOTQsNTUgQEAKICNkZWZpbmUgRUdMX09Q
RU5HTF9FUzNfQklUX0tIUiAgICAgICAgICAgIDB4MDAwMDAwNDAKICNlbmRpZiAvKiBFR0xfS0hS
X2NyZWF0ZV9jb250ZXh0ICovCiAKKyNpZm5kZWYgRUdMX0tIUl9jcmVhdGVfY29udGV4dF9ub19l
cnJvcgorI2RlZmluZSBFR0xfS0hSX2NyZWF0ZV9jb250ZXh0X25vX2Vycm9yIDEKKyNkZWZpbmUg
RUdMX0NPTlRFWFRfT1BFTkdMX05PX0VSUk9SX0tIUiAgIDB4MzFCMworI2VuZGlmIC8qIEVHTF9L
SFJfY3JlYXRlX2NvbnRleHRfbm9fZXJyb3IgKi8KKworI2lmbmRlZiBFR0xfS0hSX2RlYnVnCisj
ZGVmaW5lIEVHTF9LSFJfZGVidWcgMQordHlwZWRlZiB2b2lkICpFR0xMYWJlbEtIUjsKK3R5cGVk
ZWYgdm9pZCAqRUdMT2JqZWN0S0hSOwordHlwZWRlZiB2b2lkIChFR0xBUElFTlRSWSAgKkVHTERF
QlVHUFJPQ0tIUikoRUdMZW51bSBlcnJvcixjb25zdCBjaGFyICpjb21tYW5kLEVHTGludCBtZXNz
YWdlVHlwZSxFR0xMYWJlbEtIUiB0aHJlYWRMYWJlbCxFR0xMYWJlbEtIUiBvYmplY3RMYWJlbCxj
b25zdCBjaGFyKiBtZXNzYWdlKTsKKyNkZWZpbmUgRUdMX09CSkVDVF9USFJFQURfS0hSICAgICAg
ICAgICAgIDB4MzNCMAorI2RlZmluZSBFR0xfT0JKRUNUX0RJU1BMQVlfS0hSICAgICAgICAgICAg
MHgzM0IxCisjZGVmaW5lIEVHTF9PQkpFQ1RfQ09OVEVYVF9LSFIgICAgICAgICAgICAweDMzQjIK
KyNkZWZpbmUgRUdMX09CSkVDVF9TVVJGQUNFX0tIUiAgICAgICAgICAgIDB4MzNCMworI2RlZmlu
ZSBFR0xfT0JKRUNUX0lNQUdFX0tIUiAgICAgICAgICAgICAgMHgzM0I0CisjZGVmaW5lIEVHTF9P
QkpFQ1RfU1lOQ19LSFIgICAgICAgICAgICAgICAweDMzQjUKKyNkZWZpbmUgRUdMX09CSkVDVF9T
VFJFQU1fS0hSICAgICAgICAgICAgIDB4MzNCNgorI2RlZmluZSBFR0xfREVCVUdfTVNHX0NSSVRJ
Q0FMX0tIUiAgICAgICAgMHgzM0I5CisjZGVmaW5lIEVHTF9ERUJVR19NU0dfRVJST1JfS0hSICAg
ICAgICAgICAweDMzQkEKKyNkZWZpbmUgRUdMX0RFQlVHX01TR19XQVJOX0tIUiAgICAgICAgICAg
IDB4MzNCQgorI2RlZmluZSBFR0xfREVCVUdfTVNHX0lORk9fS0hSICAgICAgICAgICAgMHgzM0JD
CisjZGVmaW5lIEVHTF9ERUJVR19DQUxMQkFDS19LSFIgICAgICAgICAgICAweDMzQjgKK3R5cGVk
ZWYgRUdMaW50IChFR0xBUElFTlRSWVAgUEZORUdMREVCVUdNRVNTQUdFQ09OVFJPTEtIUlBST0Mp
IChFR0xERUJVR1BST0NLSFIgY2FsbGJhY2ssIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3Qp
OwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUVVFUllERUJVR0tIUlBS
T0MpIChFR0xpbnQgYXR0cmlidXRlLCBFR0xBdHRyaWIgKnZhbHVlKTsKK3R5cGVkZWYgRUdMaW50
IChFR0xBUElFTlRSWVAgUEZORUdMTEFCRUxPQkpFQ1RLSFJQUk9DKSAoRUdMRGlzcGxheSBkaXNw
bGF5LCBFR0xlbnVtIG9iamVjdFR5cGUsIEVHTE9iamVjdEtIUiBvYmplY3QsIEVHTExhYmVsS0hS
IGxhYmVsKTsKKyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xpbnQgRUdM
QVBJRU5UUlkgZWdsRGVidWdNZXNzYWdlQ29udHJvbEtIUiAoRUdMREVCVUdQUk9DS0hSIGNhbGxi
YWNrLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKK0VHTEFQSSBFR0xCb29sZWFuIEVH
TEFQSUVOVFJZIGVnbFF1ZXJ5RGVidWdLSFIgKEVHTGludCBhdHRyaWJ1dGUsIEVHTEF0dHJpYiAq
dmFsdWUpOworRUdMQVBJIEVHTGludCBFR0xBUElFTlRSWSBlZ2xMYWJlbE9iamVjdEtIUiAoRUdM
RGlzcGxheSBkaXNwbGF5LCBFR0xlbnVtIG9iamVjdFR5cGUsIEVHTE9iamVjdEtIUiBvYmplY3Qs
IEVHTExhYmVsS0hSIGxhYmVsKTsKKyNlbmRpZgorI2VuZGlmIC8qIEVHTF9LSFJfZGVidWcgKi8K
KwogI2lmbmRlZiBFR0xfS0hSX2ZlbmNlX3N5bmMKICNkZWZpbmUgRUdMX0tIUl9mZW5jZV9zeW5j
IDEKK3R5cGVkZWYga2hyb25vc191dGltZV9uYW5vc2Vjb25kc190IEVHTFRpbWVLSFI7CiAjaWZk
ZWYgS0hST05PU19TVVBQT1JUX0lOVDY0CiAjZGVmaW5lIEVHTF9TWU5DX1BSSU9SX0NPTU1BTkRT
X0NPTVBMRVRFX0tIUiAweDMwRjAKICNkZWZpbmUgRUdMX1NZTkNfQ09ORElUSU9OX0tIUiAgICAg
ICAgICAgIDB4MzBGOAogI2RlZmluZSBFR0xfU1lOQ19GRU5DRV9LSFIgICAgICAgICAgICAgICAg
MHgzMEY5Cit0eXBlZGVmIEVHTFN5bmNLSFIgKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVTWU5D
S0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGludCAqYXR0
cmliX2xpc3QpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMREVTVFJP
WVNZTkNLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYyk7Cit0eXBlZGVm
IEVHTGludCAoRUdMQVBJRU5UUllQIFBGTkVHTENMSUVOVFdBSVRTWU5DS0hSUFJPQykgKEVHTERp
c3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZUtIUiB0aW1l
b3V0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNBVFRS
SUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJp
YnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xB
UEkgRUdMU3luY0tIUiBFR0xBUElFTlRSWSBlZ2xDcmVhdGVTeW5jS0hSIChFR0xEaXNwbGF5IGRw
eSwgRUdMZW51bSB0eXBlLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK0VHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbERlc3Ryb3lTeW5jS0hSIChFR0xEaXNwbGF5IGRweSwgRUdM
U3luY0tIUiBzeW5jKTsKK0VHTEFQSSBFR0xpbnQgRUdMQVBJRU5UUlkgZWdsQ2xpZW50V2FpdFN5
bmNLSFIgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBmbGFncywgRUdM
VGltZUtIUiB0aW1lb3V0KTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbEdldFN5
bmNBdHRyaWJLSFIgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBhdHRy
aWJ1dGUsIEVHTGludCAqdmFsdWUpOworI2VuZGlmCiAjZW5kaWYgLyogS0hST05PU19TVVBQT1JU
X0lOVDY0ICovCiAjZW5kaWYgLyogRUdMX0tIUl9mZW5jZV9zeW5jICovCiAKQEAgLTIwNyw2ICsy
NTAsMTUgQEAKICNlbmRpZgogI2VuZGlmIC8qIEVHTF9LSFJfbG9ja19zdXJmYWNlMyAqLwogCisj
aWZuZGVmIEVHTF9LSFJfcGFydGlhbF91cGRhdGUKKyNkZWZpbmUgRUdMX0tIUl9wYXJ0aWFsX3Vw
ZGF0ZSAxCisjZGVmaW5lIEVHTF9CVUZGRVJfQUdFX0tIUiAgICAgICAgICAgICAgICAweDMxM0QK
K3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNFVERBTUFHRVJFR0lPTktI
UlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgKnJlY3Rz
LCBFR0xpbnQgbl9yZWN0cyk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkg
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTZXREYW1hZ2VSZWdpb25LSFIgKEVHTERpc3BsYXkg
ZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCAqcmVjdHMsIEVHTGludCBuX3JlY3RzKTsK
KyNlbmRpZgorI2VuZGlmIC8qIEVHTF9LSFJfcGFydGlhbF91cGRhdGUgKi8KKwogI2lmbmRlZiBF
R0xfS0hSX3BsYXRmb3JtX2FuZHJvaWQKICNkZWZpbmUgRUdMX0tIUl9wbGF0Zm9ybV9hbmRyb2lk
IDEKICNkZWZpbmUgRUdMX1BMQVRGT1JNX0FORFJPSURfS0hSICAgICAgICAgIDB4MzE0MQpAQCAt
MjMwLDcgKzI4Miw2IEBACiAKICNpZm5kZWYgRUdMX0tIUl9yZXVzYWJsZV9zeW5jCiAjZGVmaW5l
IEVHTF9LSFJfcmV1c2FibGVfc3luYyAxCi10eXBlZGVmIGtocm9ub3NfdXRpbWVfbmFub3NlY29u
ZHNfdCBFR0xUaW1lS0hSOwogI2lmZGVmIEtIUk9OT1NfU1VQUE9SVF9JTlQ2NAogI2RlZmluZSBF
R0xfU1lOQ19TVEFUVVNfS0hSICAgICAgICAgICAgICAgMHgzMEYxCiAjZGVmaW5lIEVHTF9TSUdO
QUxFRF9LSFIgICAgICAgICAgICAgICAgICAweDMwRjIKQEAgLTI0MiwxNyArMjkzLDkgQEAKICNk
ZWZpbmUgRUdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUX0tIUiAgIDB4MDAwMQogI2RlZmluZSBF
R0xfRk9SRVZFUl9LSFIgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRkZGRkZGRkZGdWxsCiAj
ZGVmaW5lIEVHTF9OT19TWU5DX0tIUiAgICAgICAgICAgICAgICAgICAoKEVHTFN5bmNLSFIpMCkK
LXR5cGVkZWYgRUdMU3luY0tIUiAoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURVNZTkNLSFJQUk9D
KSAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gdHlwZSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlz
dCk7Ci10eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xERVNUUk9ZU1lOQ0tI
UlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUiBzeW5jKTsKLXR5cGVkZWYgRUdMaW50
IChFR0xBUElFTlRSWVAgUEZORUdMQ0xJRU5UV0FJVFNZTkNLSFJQUk9DKSAoRUdMRGlzcGxheSBk
cHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGZsYWdzLCBFR0xUaW1lS0hSIHRpbWVvdXQpOwog
dHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMU0lHTkFMU1lOQ0tIUlBST0Mp
IChFR0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUiBzeW5jLCBFR0xlbnVtIG1vZGUpOwotdHlwZWRl
ZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lOQ0FUVFJJQktIUlBST0MpIChF
R0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUiBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQg
KnZhbHVlKTsKICNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKLUVHTEFQSSBFR0xTeW5jS0hS
IEVHTEFQSUVOVFJZIGVnbENyZWF0ZVN5bmNLSFIgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIHR5
cGUsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwotRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgZWdsRGVzdHJveVN5bmNLSFIgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMp
OwotRUdMQVBJIEVHTGludCBFR0xBUElFTlRSWSBlZ2xDbGllbnRXYWl0U3luY0tIUiAoRUdMRGlz
cGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGZsYWdzLCBFR0xUaW1lS0hSIHRpbWVv
dXQpOwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU2lnbmFsU3luY0tIUiAoRUdM
RGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMZW51bSBtb2RlKTsKLUVHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbEdldFN5bmNBdHRyaWJLSFIgKEVHTERpc3BsYXkgZHB5LCBF
R0xTeW5jS0hSIHN5bmMsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpOwogI2VuZGlm
CiAjZW5kaWYgLyogS0hST05PU19TVVBQT1JUX0lOVDY0ICovCiAjZW5kaWYgLyogRUdMX0tIUl9y
ZXVzYWJsZV9zeW5jICovCkBAIC0zNTQsNiArMzk3LDE0IEBACiAjZGVmaW5lIEVHTF9LSFJfc3Vy
ZmFjZWxlc3NfY29udGV4dCAxCiAjZW5kaWYgLyogRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0
ICovCiAKKyNpZm5kZWYgRUdMX0tIUl9zd2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UKKyNkZWZpbmUg
RUdMX0tIUl9zd2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UgMQordHlwZWRlZiBFR0xCb29sZWFuIChF
R0xBUElFTlRSWVAgUEZORUdMU1dBUEJVRkZFUlNXSVRIREFNQUdFS0hSUFJPQykgKEVHTERpc3Bs
YXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCAqcmVjdHMsIEVHTGludCBuX3JlY3Rz
KTsKKyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIGVnbFN3YXBCdWZmZXJzV2l0aERhbWFnZUtIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN1
cmZhY2Ugc3VyZmFjZSwgRUdMaW50ICpyZWN0cywgRUdMaW50IG5fcmVjdHMpOworI2VuZGlmCisj
ZW5kaWYgLyogRUdMX0tIUl9zd2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UgKi8KKwogI2lmbmRlZiBF
R0xfS0hSX3ZnX3BhcmVudF9pbWFnZQogI2RlZmluZSBFR0xfS0hSX3ZnX3BhcmVudF9pbWFnZSAx
CiAjZGVmaW5lIEVHTF9WR19QQVJFTlRfSU1BR0VfS0hSICAgICAgICAgICAweDMwQkEKQEAgLTQx
MCwxMSArNDYxLDE3IEBACiAjZGVmaW5lIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVf
QU5HTEUgMHgzMjAwCiAjZW5kaWYgLyogRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50
X2J1ZmZlciAqLwogCi0jaWZuZGVmIEVHTF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZQotI2RlZmlu
ZSBFR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUgMQotI2RlZmluZSBFR0xfRklYRURfU0laRV9B
TkdMRSAgICAgICAgMHgzMjAxCi0jZW5kaWYgLyogRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXpl
ICovCisjaWZuZGVmIEVHTF9BTkdMRV9kZXZpY2VfZDNkCisjZGVmaW5lIEVHTF9BTkdMRV9kZXZp
Y2VfZDNkIDEKKyNkZWZpbmUgRUdMX0QzRDlfREVWSUNFX0FOR0xFICAgICAgICAgICAgIDB4MzNB
MAorI2RlZmluZSBFR0xfRDNEMTFfREVWSUNFX0FOR0xFICAgICAgICAgICAgMHgzM0ExCisjZW5k
aWYgLyogRUdMX0FOR0xFX2RldmljZV9kM2QgKi8KIAorI2lmbmRlZiBFR0xfQU5HTEVfa2V5ZWRf
bXV0ZXgKKyNkZWZpbmUgRUdMX0FOR0xFX2tleWVkX211dGV4IDEKKyNkZWZpbmUgRUdMX0RYR0lf
S0VZRURfTVVURVhfQU5HTEUgICAgICAgIDB4MzNBMgorI2VuZGlmIC8qIEVHTF9BTkdMRV9rZXll
ZF9tdXRleCAqLworCiAjaWZuZGVmIEVHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIKICNk
ZWZpbmUgRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciAxCiB0eXBlZGVmIEVHTEJvb2xl
YW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xRVUVSWVNVUkZBQ0VQT0lOVEVSQU5HTEVQUk9DKSAoRUdM
RGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAq
KnZhbHVlKTsKQEAgLTQzOCw2ICs0OTUsMTEgQEAKICNkZWZpbmUgRUdMX0FOR0xFX3N1cmZhY2Vf
ZDNkX3RleHR1cmVfMmRfc2hhcmVfaGFuZGxlIDEKICNlbmRpZiAvKiBFR0xfQU5HTEVfc3VyZmFj
ZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgKi8KIAorI2lmbmRlZiBFR0xfQU5HTEVfZGly
ZWN0X2NvbXBvc2l0aW9uCisjZGVmaW5lIEVHTF9BTkdMRV9kaXJlY3RfY29tcG9zaXRpb24gMQor
I2RlZmluZSBFR0xfRElSRUNUX0NPTVBPU0lUSU9OX0FOR0xFIDB4MzNBNQorI2VuZGlmIC8qIEVH
TF9BTkdMRV9kaXJlY3RfY29tcG9zaXRpb24gKi8KKwogI2lmbmRlZiBFR0xfQU5HTEVfcGxhdGZv
cm1fYW5nbGUKICNkZWZpbmUgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlIDEKICNkZWZpbmUgRUdM
X1BMQVRGT1JNX0FOR0xFX0FOR0xFICAgICAgICAgIDB4MzIwMgpAQCAtNDY0LDEyICs1MjYsNDcg
QEAKICNkZWZpbmUgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgMHgzMjBF
CiAjZW5kaWYgLyogRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX29wZW5nbCAqLwogCi0jaWZuZGVm
IEVHTF9BTkdMRV9kZXZpY2VfZDNkCi0jZGVmaW5lIEVHTF9BTkdMRV9kZXZpY2VfZDNkIDEKLSNk
ZWZpbmUgRUdMX0QzRDlfREVWSUNFX0FOR0xFICAgICAgICAgICAgIDB4MzNBMAotI2RlZmluZSBF
R0xfRDNEMTFfREVWSUNFX0FOR0xFICAgICAgICAgICAgMHgzM0ExCi0jZW5kaWYgLyogRUdMX0FO
R0xFX2RldmljZV9kM2QgKi8KKyNpZm5kZWYgRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXplCisj
ZGVmaW5lIEVHTF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZSAxCisjZGVmaW5lIEVHTF9GSVhFRF9T
SVpFX0FOR0xFICAgICAgICAgICAgICAweDMyMDEKKyNlbmRpZiAvKiBFR0xfQU5HTEVfd2luZG93
X2ZpeGVkX3NpemUgKi8KIAorI2lmbmRlZiBFR0xfQU5HTEVfeDExX3Zpc3VhbAorI2RlZmluZSBF
R0xfQU5HTEVfeDExX3Zpc3VhbAorI2RlZmluZSBFR0xfWDExX1ZJU1VBTF9JRF9BTkdMRSAweDMz
QTMKKyNlbmRpZiAvKiBFR0xfQU5HTEVfeDExX3Zpc3VhbCAqLworCisjaWZuZGVmIEVHTF9BTkdM
RV9mbGV4aWJsZV9zdXJmYWNlX2NvbXBhdGliaWxpdHkKKyNkZWZpbmUgRUdMX0FOR0xFX2ZsZXhp
YmxlX3N1cmZhY2VfY29tcGF0aWJpbGl0eSAxCisjZGVmaW5lIEVHTF9GTEVYSUJMRV9TVVJGQUNF
X0NPTVBBVElCSUxJVFlfU1VQUE9SVEVEX0FOR0xFIDB4MzNBNgorI2VuZGlmIC8qIEVHTF9BTkdM
RV9mbGV4aWJsZV9zdXJmYWNlX2NvbXBhdGliaWxpdHkgKi8KKworI2lmbmRlZiBFR0xfQU5HTEVf
c3VyZmFjZV9vcmllbnRhdGlvbgorI2RlZmluZSBFR0xfQU5HTEVfc3VyZmFjZV9vcmllbnRhdGlv
bgorI2RlZmluZSBFR0xfT1BUSU1BTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFIDB4MzNBNwor
I2RlZmluZSBFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRSAweDMzQTgKKyNkZWZpbmUgRUdM
X1NVUkZBQ0VfT1JJRU5UQVRJT05fSU5WRVJUX1hfQU5HTEUgMHgwMDAxCisjZGVmaW5lIEVHTF9T
VVJGQUNFX09SSUVOVEFUSU9OX0lOVkVSVF9ZX0FOR0xFIDB4MDAwMgorI2VuZGlmIC8qIEVHTF9B
TkdMRV9zdXJmYWNlX29yaWVudGF0aW9uICovCisKKyNpZm5kZWYgRUdMX0FOR0xFX2V4cGVyaW1l
bnRhbF9wcmVzZW50X3BhdGgKKyNkZWZpbmUgRUdMX0FOR0xFX2V4cGVyaW1lbnRhbF9wcmVzZW50
X3BhdGgKKyNkZWZpbmUgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQU5HTEUgMHgzM0E0
CisjZGVmaW5lIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUgMHgzM0E5
CisjZGVmaW5lIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlfQU5HTEUgMHgzM0FB
CisjZW5kaWYgLyogRUdMX0FOR0xFX2V4cGVyaW1lbnRhbF9wcmVzZW50X3BhdGggKi8KKworI2lm
bmRlZiBFR0xfQU5HTEVfc3RyZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJlX252MTIKKyNkZWZpbmUg
RUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyCisjZGVmaW5lIEVHTF9E
M0RfVEVYVFVSRV9TVUJSRVNPVVJDRV9JRF9BTkdMRSAweDNBQUIKK3R5cGVkZWYgRUdMQm9vbGVh
bihFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFU1RSRUFNUFJPRFVDRVJEM0RURVhUVVJFTlYxMkFO
R0xFUFJPQykoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIGNvbnN0IEVHTEF0
dHJpYiAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xCb29sZWFuKEVHTEFQSUVOVFJZUCBQRk5F
R0xTVFJFQU1QT1NURDNEVEVYVFVSRU5WMTJBTkdMRVBST0MpKEVHTERpc3BsYXkgZHB5LCBFR0xT
dHJlYW1LSFIgc3RyZWFtLCB2b2lkICp0ZXh0dXJlLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9s
aXN0KTsKKyNpZmRlZiBFR0xfRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIGVnbENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShFR0xEaXNw
bGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlz
dCk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1Qb3N0RDNEVGV4dHVy
ZU5WMTJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgdm9pZCAqdGV4
dHVyZSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7CisjZW5kaWYKKyNlbmRpZiAvKiBF
R0xfQU5HTEVfc3RyZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJlX252MTIgKi8KKwogI2lmbmRlZiBF
R0xfQVJNX3BpeG1hcF9tdWx0aXNhbXBsZV9kaXNjYXJkCiAjZGVmaW5lIEVHTF9BUk1fcGl4bWFw
X211bHRpc2FtcGxlX2Rpc2NhcmQgMQogI2RlZmluZSBFR0xfRElTQ0FSRF9TQU1QTEVTX0FSTSAg
ICAgICAgICAgMHgzMjg2CkBAIC01MTAsNiArNjA3LDMwIEBACiAjZW5kaWYKICNlbmRpZiAvKiBF
R0xfRVhUX2RldmljZV9iYXNlICovCiAKKyNpZm5kZWYgRUdMX0FOR0xFX2RldmljZV9jcmVhdGlv
bgorI2RlZmluZSBFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uIDEKK3R5cGVkZWYgRUdMRGV2aWNl
RVhUIChFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFREVWSUNFQU5HTEVQUk9DKSAoRUdMaW50IGRl
dmljZV90eXBlLCB2b2lkICpuYXRpdmVfZGV2aWNlLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9s
aXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFJFTEVBU0VERVZJ
Q0VBTkdMRVBST0MpIChFR0xEZXZpY2VFWFQgZGV2aWNlKTsKKyNpZmRlZiBFR0xfRUdMRVhUX1BS
T1RPVFlQRVMKK0VHTEFQSSBFR0xEZXZpY2VFWFQgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlRGV2aWNl
QU5HTEUgKEVHTGludCBkZXZpY2VfdHlwZSwgdm9pZCAqbmF0aXZlX2RldmljZSwgY29uc3QgRUdM
QXR0cmliICphdHRyaWJfbGlzdCk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xS
ZWxlYXNlRGV2aWNlQU5HTEUgKEVHTERldmljZUVYVCBkZXZpY2UpOworI2VuZGlmCisjZW5kaWYg
LyogRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbiAqLworCisjaWZuZGVmIEVHTF9FWFRfZGV2aWNl
X2RybQorI2RlZmluZSBFR0xfRVhUX2RldmljZV9kcm0gMQorI2RlZmluZSBFR0xfRFJNX0RFVklD
RV9GSUxFX0VYVCAgICAgICAgICAgMHgzMjMzCisjZW5kaWYgLyogRUdMX0VYVF9kZXZpY2VfZHJt
ICovCisKKyNpZm5kZWYgRUdMX0VYVF9kZXZpY2VfZW51bWVyYXRpb24KKyNkZWZpbmUgRUdMX0VY
VF9kZXZpY2VfZW51bWVyYXRpb24gMQorI2VuZGlmIC8qIEVHTF9FWFRfZGV2aWNlX2VudW1lcmF0
aW9uICovCisKKyNpZm5kZWYgRUdMX0VYVF9kZXZpY2Vfb3BlbndmCisjZGVmaW5lIEVHTF9FWFRf
ZGV2aWNlX29wZW53ZiAxCisjZGVmaW5lIEVHTF9PUEVOV0ZfREVWSUNFX0lEX0VYVCAgICAgICAg
ICAweDMyMzcKKyNlbmRpZiAvKiBFR0xfRVhUX2RldmljZV9vcGVud2YgKi8KKwogI2lmbmRlZiBF
R0xfRVhUX2RldmljZV9xdWVyeQogI2RlZmluZSBFR0xfRVhUX2RldmljZV9xdWVyeSAxCiAjZW5k
aWYgLyogRUdMX0VYVF9kZXZpY2VfcXVlcnkgKi8KQEAgLTU0NSw2ICs2NjYsNDggQEAKICNkZWZp
bmUgRUdMX01VTFRJVklFV19WSUVXX0NPVU5UX0VYVCAgICAgIDB4MzEzNAogI2VuZGlmIC8qIEVH
TF9FWFRfbXVsdGl2aWV3X3dpbmRvdyAqLwogCisjaWZuZGVmIEVHTF9FWFRfb3V0cHV0X2Jhc2UK
KyNkZWZpbmUgRUdMX0VYVF9vdXRwdXRfYmFzZSAxCit0eXBlZGVmIHZvaWQgKkVHTE91dHB1dExh
eWVyRVhUOwordHlwZWRlZiB2b2lkICpFR0xPdXRwdXRQb3J0RVhUOworI2RlZmluZSBFR0xfTk9f
T1VUUFVUX0xBWUVSX0VYVCAgICAgICAgICAgKChFR0xPdXRwdXRMYXllckVYVCkwKQorI2RlZmlu
ZSBFR0xfTk9fT1VUUFVUX1BPUlRfRVhUICAgICAgICAgICAgKChFR0xPdXRwdXRQb3J0RVhUKTAp
CisjZGVmaW5lIEVHTF9CQURfT1VUUFVUX0xBWUVSX0VYVCAgICAgICAgICAweDMyMkQKKyNkZWZp
bmUgRUdMX0JBRF9PVVRQVVRfUE9SVF9FWFQgICAgICAgICAgIDB4MzIyRQorI2RlZmluZSBFR0xf
U1dBUF9JTlRFUlZBTF9FWFQgICAgICAgICAgICAgMHgzMjJGCit0eXBlZGVmIEVHTEJvb2xlYW4g
KEVHTEFQSUVOVFJZUCBQRk5FR0xHRVRPVVRQVVRMQVlFUlNFWFRQUk9DKSAoRUdMRGlzcGxheSBk
cHksIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QsIEVHTE91dHB1dExheWVyRVhUICpsYXll
cnMsIEVHTGludCBtYXhfbGF5ZXJzLCBFR0xpbnQgKm51bV9sYXllcnMpOwordHlwZWRlZiBFR0xC
b29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUT1VUUFVUUE9SVFNFWFRQUk9DKSAoRUdMRGlz
cGxheSBkcHksIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QsIEVHTE91dHB1dFBvcnRFWFQg
KnBvcnRzLCBFR0xpbnQgbWF4X3BvcnRzLCBFR0xpbnQgKm51bV9wb3J0cyk7Cit0eXBlZGVmIEVH
TEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xPVVRQVVRMQVlFUkFUVFJJQkVYVFBST0MpIChF
R0xEaXNwbGF5IGRweSwgRUdMT3V0cHV0TGF5ZXJFWFQgbGF5ZXIsIEVHTGludCBhdHRyaWJ1dGUs
IEVHTEF0dHJpYiB2YWx1ZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5F
R0xRVUVSWU9VVFBVVExBWUVSQVRUUklCRVhUUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xPdXRw
dXRMYXllckVYVCBsYXllciwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMQXR0cmliICp2YWx1ZSk7Cit0
eXBlZGVmIGNvbnN0IGNoYXIgKihFR0xBUElFTlRSWVAgUEZORUdMUVVFUllPVVRQVVRMQVlFUlNU
UklOR0VYVFBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMT3V0cHV0TGF5ZXJFWFQgbGF5ZXIsIEVH
TGludCBuYW1lKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTE9VVFBV
VFBPUlRBVFRSSUJFWFRQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTE91dHB1dFBvcnRFWFQgcG9y
dCwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMQXR0cmliIHZhbHVlKTsKK3R5cGVkZWYgRUdMQm9vbGVh
biAoRUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZT1VUUFVUUE9SVEFUVFJJQkVYVFBST0MpIChFR0xE
aXNwbGF5IGRweSwgRUdMT3V0cHV0UG9ydEVYVCBwb3J0LCBFR0xpbnQgYXR0cmlidXRlLCBFR0xB
dHRyaWIgKnZhbHVlKTsKK3R5cGVkZWYgY29uc3QgY2hhciAqKEVHTEFQSUVOVFJZUCBQRk5FR0xR
VUVSWU9VVFBVVFBPUlRTVFJJTkdFWFRQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTE91dHB1dFBv
cnRFWFQgcG9ydCwgRUdMaW50IG5hbWUpOworI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9UWVBFUwor
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsR2V0T3V0cHV0TGF5ZXJzRVhUIChFR0xE
aXNwbGF5IGRweSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCwgRUdMT3V0cHV0TGF5ZXJF
WFQgKmxheWVycywgRUdMaW50IG1heF9sYXllcnMsIEVHTGludCAqbnVtX2xheWVycyk7CitFR0xB
UEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xHZXRPdXRwdXRQb3J0c0VYVCAoRUdMRGlzcGxh
eSBkcHksIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QsIEVHTE91dHB1dFBvcnRFWFQgKnBv
cnRzLCBFR0xpbnQgbWF4X3BvcnRzLCBFR0xpbnQgKm51bV9wb3J0cyk7CitFR0xBUEkgRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBlZ2xPdXRwdXRMYXllckF0dHJpYkVYVCAoRUdMRGlzcGxheSBkcHks
IEVHTE91dHB1dExheWVyRVhUIGxheWVyLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xBdHRyaWIgdmFs
dWUpOworRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUXVlcnlPdXRwdXRMYXllckF0
dHJpYkVYVCAoRUdMRGlzcGxheSBkcHksIEVHTE91dHB1dExheWVyRVhUIGxheWVyLCBFR0xpbnQg
YXR0cmlidXRlLCBFR0xBdHRyaWIgKnZhbHVlKTsKK0VHTEFQSSBjb25zdCBjaGFyICpFR0xBUElF
TlRSWSBlZ2xRdWVyeU91dHB1dExheWVyU3RyaW5nRVhUIChFR0xEaXNwbGF5IGRweSwgRUdMT3V0
cHV0TGF5ZXJFWFQgbGF5ZXIsIEVHTGludCBuYW1lKTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIGVnbE91dHB1dFBvcnRBdHRyaWJFWFQgKEVHTERpc3BsYXkgZHB5LCBFR0xPdXRwdXRQ
b3J0RVhUIHBvcnQsIEVHTGludCBhdHRyaWJ1dGUsIEVHTEF0dHJpYiB2YWx1ZSk7CitFR0xBUEkg
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeU91dHB1dFBvcnRBdHRyaWJFWFQgKEVHTERp
c3BsYXkgZHB5LCBFR0xPdXRwdXRQb3J0RVhUIHBvcnQsIEVHTGludCBhdHRyaWJ1dGUsIEVHTEF0
dHJpYiAqdmFsdWUpOworRUdMQVBJIGNvbnN0IGNoYXIgKkVHTEFQSUVOVFJZIGVnbFF1ZXJ5T3V0
cHV0UG9ydFN0cmluZ0VYVCAoRUdMRGlzcGxheSBkcHksIEVHTE91dHB1dFBvcnRFWFQgcG9ydCwg
RUdMaW50IG5hbWUpOworI2VuZGlmCisjZW5kaWYgLyogRUdMX0VYVF9vdXRwdXRfYmFzZSAqLwor
CisjaWZuZGVmIEVHTF9FWFRfb3V0cHV0X2RybQorI2RlZmluZSBFR0xfRVhUX291dHB1dF9kcm0g
MQorI2RlZmluZSBFR0xfRFJNX0NSVENfRVhUICAgICAgICAgICAgICAgICAgMHgzMjM0CisjZGVm
aW5lIEVHTF9EUk1fUExBTkVfRVhUICAgICAgICAgICAgICAgICAweDMyMzUKKyNkZWZpbmUgRUdM
X0RSTV9DT05ORUNUT1JfRVhUICAgICAgICAgICAgIDB4MzIzNgorI2VuZGlmIC8qIEVHTF9FWFRf
b3V0cHV0X2RybSAqLworCisjaWZuZGVmIEVHTF9FWFRfb3V0cHV0X29wZW53ZgorI2RlZmluZSBF
R0xfRVhUX291dHB1dF9vcGVud2YgMQorI2RlZmluZSBFR0xfT1BFTldGX1BJUEVMSU5FX0lEX0VY
VCAgICAgICAgMHgzMjM4CisjZGVmaW5lIEVHTF9PUEVOV0ZfUE9SVF9JRF9FWFQgICAgICAgICAg
ICAweDMyMzkKKyNlbmRpZiAvKiBFR0xfRVhUX291dHB1dF9vcGVud2YgKi8KKwogI2lmbmRlZiBF
R0xfRVhUX3BsYXRmb3JtX2Jhc2UKICNkZWZpbmUgRUdMX0VYVF9wbGF0Zm9ybV9iYXNlIDEKIHR5
cGVkZWYgRUdMRGlzcGxheSAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVY
VFBST0MpIChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcGxheSwgY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCk7CkBAIC01NzgsNiArNzQxLDE0IEBACiAjZGVmaW5lIEVHTF9QUk9U
RUNURURfQ09OVEVOVF9FWFQgICAgICAgICAweDMyQzAKICNlbmRpZiAvKiBFR0xfRVhUX3Byb3Rl
Y3RlZF9zdXJmYWNlICovCiAKKyNpZm5kZWYgRUdMX0VYVF9zdHJlYW1fY29uc3VtZXJfZWdsb3V0
cHV0CisjZGVmaW5lIEVHTF9FWFRfc3RyZWFtX2NvbnN1bWVyX2VnbG91dHB1dCAxCit0eXBlZGVm
IEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xTVFJFQU1DT05TVU1FUk9VVFBVVEVYVFBS
T0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgRUdMT3V0cHV0TGF5ZXJF
WFQgbGF5ZXIpOworI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9UWVBFUworRUdMQVBJIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgZWdsU3RyZWFtQ29uc3VtZXJPdXRwdXRFWFQgKEVHTERpc3BsYXkgZHB5
LCBFR0xTdHJlYW1LSFIgc3RyZWFtLCBFR0xPdXRwdXRMYXllckVYVCBsYXllcik7CisjZW5kaWYK
KyNlbmRpZiAvKiBFR0xfRVhUX3N0cmVhbV9jb25zdW1lcl9lZ2xvdXRwdXQgKi8KKwogI2lmbmRl
ZiBFR0xfRVhUX3N3YXBfYnVmZmVyc193aXRoX2RhbWFnZQogI2RlZmluZSBFR0xfRVhUX3N3YXBf
YnVmZmVyc193aXRoX2RhbWFnZSAxCiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQ
Rk5FR0xTV0FQQlVGRkVSU1dJVEhEQU1BR0VFWFRQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN1
cmZhY2Ugc3VyZmFjZSwgRUdMaW50ICpyZWN0cywgRUdMaW50IG5fcmVjdHMpOwpAQCAtNTg2LDYg
Kzc1NywzNSBAQAogI2VuZGlmCiAjZW5kaWYgLyogRUdMX0VYVF9zd2FwX2J1ZmZlcnNfd2l0aF9k
YW1hZ2UgKi8KIAorI2lmbmRlZiBFR0xfRVhUX3l1dl9zdXJmYWNlCisjZGVmaW5lIEVHTF9FWFRf
eXV2X3N1cmZhY2UgMQorI2RlZmluZSBFR0xfWVVWX09SREVSX0VYVCAgICAgICAgICAgICAgICAg
MHgzMzAxCisjZGVmaW5lIEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19FWFQgICAgICAweDMzMTEK
KyNkZWZpbmUgRUdMX1lVVl9TVUJTQU1QTEVfRVhUICAgICAgICAgICAgIDB4MzMxMgorI2RlZmlu
ZSBFR0xfWVVWX0RFUFRIX1JBTkdFX0VYVCAgICAgICAgICAgMHgzMzE3CisjZGVmaW5lIEVHTF9Z
VVZfQ1NDX1NUQU5EQVJEX0VYVCAgICAgICAgICAweDMzMEEKKyNkZWZpbmUgRUdMX1lVVl9QTEFO
RV9CUFBfRVhUICAgICAgICAgICAgIDB4MzMxQQorI2RlZmluZSBFR0xfWVVWX0JVRkZFUl9FWFQg
ICAgICAgICAgICAgICAgMHgzMzAwCisjZGVmaW5lIEVHTF9ZVVZfT1JERVJfWVVWX0VYVCAgICAg
ICAgICAgICAweDMzMDIKKyNkZWZpbmUgRUdMX1lVVl9PUkRFUl9ZVlVfRVhUICAgICAgICAgICAg
IDB4MzMwMworI2RlZmluZSBFR0xfWVVWX09SREVSX1lVWVZfRVhUICAgICAgICAgICAgMHgzMzA0
CisjZGVmaW5lIEVHTF9ZVVZfT1JERVJfVVlWWV9FWFQgICAgICAgICAgICAweDMzMDUKKyNkZWZp
bmUgRUdMX1lVVl9PUkRFUl9ZVllVX0VYVCAgICAgICAgICAgIDB4MzMwNgorI2RlZmluZSBFR0xf
WVVWX09SREVSX1ZZVVlfRVhUICAgICAgICAgICAgMHgzMzA3CisjZGVmaW5lIEVHTF9ZVVZfT1JE
RVJfQVlVVl9FWFQgICAgICAgICAgICAweDMzMDgKKyNkZWZpbmUgRUdMX1lVVl9TVUJTQU1QTEVf
NF8yXzBfRVhUICAgICAgIDB4MzMxMworI2RlZmluZSBFR0xfWVVWX1NVQlNBTVBMRV80XzJfMl9F
WFQgICAgICAgMHgzMzE0CisjZGVmaW5lIEVHTF9ZVVZfU1VCU0FNUExFXzRfNF80X0VYVCAgICAg
ICAweDMzMTUKKyNkZWZpbmUgRUdMX1lVVl9ERVBUSF9SQU5HRV9MSU1JVEVEX0VYVCAgIDB4MzMx
OAorI2RlZmluZSBFR0xfWVVWX0RFUFRIX1JBTkdFX0ZVTExfRVhUICAgICAgMHgzMzE5CisjZGVm
aW5lIEVHTF9ZVVZfQ1NDX1NUQU5EQVJEXzYwMV9FWFQgICAgICAweDMzMEIKKyNkZWZpbmUgRUdM
X1lVVl9DU0NfU1RBTkRBUkRfNzA5X0VYVCAgICAgIDB4MzMwQworI2RlZmluZSBFR0xfWVVWX0NT
Q19TVEFOREFSRF8yMDIwX0VYVCAgICAgMHgzMzBECisjZGVmaW5lIEVHTF9ZVVZfUExBTkVfQlBQ
XzBfRVhUICAgICAgICAgICAweDMzMUIKKyNkZWZpbmUgRUdMX1lVVl9QTEFORV9CUFBfOF9FWFQg
ICAgICAgICAgIDB4MzMxQworI2RlZmluZSBFR0xfWVVWX1BMQU5FX0JQUF8xMF9FWFQgICAgICAg
ICAgMHgzMzFECisjZW5kaWYgLyogRUdMX0VYVF95dXZfc3VyZmFjZSAqLworCiAjaWZuZGVmIEVH
TF9ISV9jbGllbnRwaXhtYXAKICNkZWZpbmUgRUdMX0hJX2NsaWVudHBpeG1hcCAxCiBzdHJ1Y3Qg
RUdMQ2xpZW50UGl4bWFwSEkgewpAQCAtNjE3LDYgKzgxNywxMiBAQAogI2RlZmluZSBFR0xfQ09O
VEVYVF9QUklPUklUWV9MT1dfSU1HICAgICAgMHgzMTAzCiAjZW5kaWYgLyogRUdMX0lNR19jb250
ZXh0X3ByaW9yaXR5ICovCiAKKyNpZm5kZWYgRUdMX0lNR19pbWFnZV9wbGFuZV9hdHRyaWJzCisj
ZGVmaW5lIEVHTF9JTUdfaW1hZ2VfcGxhbmVfYXR0cmlicyAxCisjZGVmaW5lIEVHTF9OQVRJVkVf
QlVGRkVSX01VTFRJUExBTkVfU0VQQVJBVEVfSU1HIDB4MzEwNQorI2RlZmluZSBFR0xfTkFUSVZF
X0JVRkZFUl9QTEFORV9PRkZTRVRfSU1HIDB4MzEwNgorI2VuZGlmIC8qIEVHTF9JTUdfaW1hZ2Vf
cGxhbmVfYXR0cmlicyAqLworCiAjaWZuZGVmIEVHTF9NRVNBX2RybV9pbWFnZQogI2RlZmluZSBF
R0xfTUVTQV9kcm1faW1hZ2UgMQogI2RlZmluZSBFR0xfRFJNX0JVRkZFUl9GT1JNQVRfTUVTQSAg
ICAgICAgMHgzMUQwCkBAIC02MzQsNiArODQwLDE2IEBACiAjZW5kaWYKICNlbmRpZiAvKiBFR0xf
TUVTQV9kcm1faW1hZ2UgKi8KIAorI2lmbmRlZiBFR0xfTUVTQV9pbWFnZV9kbWFfYnVmX2V4cG9y
dAorI2RlZmluZSBFR0xfTUVTQV9pbWFnZV9kbWFfYnVmX2V4cG9ydCAxCit0eXBlZGVmIEVHTEJv
b2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xFWFBPUlRETUFCVUZJTUFHRVFVRVJZTUVTQVBST0Mp
IChFR0xEaXNwbGF5IGRweSwgRUdMSW1hZ2VLSFIgaW1hZ2UsIGludCAqZm91cmNjLCBpbnQgKm51
bV9wbGFuZXMsIEVHTHVpbnQ2NEtIUiAqbW9kaWZpZXJzKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAo
RUdMQVBJRU5UUllQIFBGTkVHTEVYUE9SVERNQUJVRklNQUdFTUVTQVBST0MpIChFR0xEaXNwbGF5
IGRweSwgRUdMSW1hZ2VLSFIgaW1hZ2UsIGludCAqZmRzLCBFR0xpbnQgKnN0cmlkZXMsIEVHTGlu
dCAqb2Zmc2V0cyk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBlZ2xFeHBvcnRETUFCVUZJbWFnZVF1ZXJ5TUVTQSAoRUdMRGlzcGxh
eSBkcHksIEVHTEltYWdlS0hSIGltYWdlLCBpbnQgKmZvdXJjYywgaW50ICpudW1fcGxhbmVzLCBF
R0x1aW50NjRLSFIgKm1vZGlmaWVycyk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBl
Z2xFeHBvcnRETUFCVUZJbWFnZU1FU0EgKEVHTERpc3BsYXkgZHB5LCBFR0xJbWFnZUtIUiBpbWFn
ZSwgaW50ICpmZHMsIEVHTGludCAqc3RyaWRlcywgRUdMaW50ICpvZmZzZXRzKTsKKyNlbmRpZgor
I2VuZGlmIC8qIEVHTF9NRVNBX2ltYWdlX2RtYV9idWZfZXhwb3J0ICovCisKICNpZm5kZWYgRUdM
X01FU0FfcGxhdGZvcm1fZ2JtCiAjZGVmaW5lIEVHTF9NRVNBX3BsYXRmb3JtX2dibSAxCiAjZGVm
aW5lIEVHTF9QTEFURk9STV9HQk1fTUVTQSAgICAgICAgICAgICAweDMxRDcKQEAgLTY3OCw2ICs4
OTQsMTMgQEAKICNkZWZpbmUgRUdMX0NPVkVSQUdFX1NBTVBMRV9SRVNPTFZFX05PTkVfTlYgMHgz
MTMzCiAjZW5kaWYgLyogRUdMX05WX2NvdmVyYWdlX3NhbXBsZV9yZXNvbHZlICovCiAKKyNpZm5k
ZWYgRUdMX05WX2N1ZGFfZXZlbnQKKyNkZWZpbmUgRUdMX05WX2N1ZGFfZXZlbnQgMQorI2RlZmlu
ZSBFR0xfQ1VEQV9FVkVOVF9IQU5ETEVfTlYgICAgICAgICAgMHgzMjNCCisjZGVmaW5lIEVHTF9T
WU5DX0NVREFfRVZFTlRfTlYgICAgICAgICAgICAweDMyM0MKKyNkZWZpbmUgRUdMX1NZTkNfQ1VE
QV9FVkVOVF9DT01QTEVURV9OViAgIDB4MzIzRAorI2VuZGlmIC8qIEVHTF9OVl9jdWRhX2V2ZW50
ICovCisKICNpZm5kZWYgRUdMX05WX2RlcHRoX25vbmxpbmVhcgogI2RlZmluZSBFR0xfTlZfZGVw
dGhfbm9ubGluZWFyIDEKICNkZWZpbmUgRUdMX0RFUFRIX0VOQ09ESU5HX05WICAgICAgICAgICAg
IDB4MzBFMgpAQCAtNjg1LDYgKzkwOCwxMSBAQAogI2RlZmluZSBFR0xfREVQVEhfRU5DT0RJTkdf
Tk9OTElORUFSX05WICAgMHgzMEUzCiAjZW5kaWYgLyogRUdMX05WX2RlcHRoX25vbmxpbmVhciAq
LwogCisjaWZuZGVmIEVHTF9OVl9kZXZpY2VfY3VkYQorI2RlZmluZSBFR0xfTlZfZGV2aWNlX2N1
ZGEgMQorI2RlZmluZSBFR0xfQ1VEQV9ERVZJQ0VfTlYgICAgICAgICAgICAgICAgMHgzMjNBCisj
ZW5kaWYgLyogRUdMX05WX2RldmljZV9jdWRhICovCisKICNpZm5kZWYgRUdMX05WX25hdGl2ZV9x
dWVyeQogI2RlZmluZSBFR0xfTlZfbmF0aXZlX3F1ZXJ5IDEKIHR5cGVkZWYgRUdMQm9vbGVhbiAo
RUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZTkFUSVZFRElTUExBWU5WUFJPQykgKEVHTERpc3BsYXkg
ZHB5LCBFR0xOYXRpdmVEaXNwbGF5VHlwZSAqZGlzcGxheV9pZCk7CkBAIC03MTAsNiArOTM4LDQz
IEBACiAjZW5kaWYKICNlbmRpZiAvKiBFR0xfTlZfcG9zdF9zdWJfYnVmZmVyICovCiAKKyNpZm5k
ZWYgRUdMX05WX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2CisjZGVmaW5lIEVHTF9OVl9z
dHJlYW1fY29uc3VtZXJfZ2x0ZXh0dXJlX3l1diAxCisjZGVmaW5lIEVHTF9ZVVZfUExBTkUwX1RF
WFRVUkVfVU5JVF9OViAgICAweDMzMkMKKyNkZWZpbmUgRUdMX1lVVl9QTEFORTFfVEVYVFVSRV9V
TklUX05WICAgIDB4MzMyRAorI2RlZmluZSBFR0xfWVVWX1BMQU5FMl9URVhUVVJFX1VOSVRfTlYg
ICAgMHgzMzJFCit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xTVFJFQU1D
T05TVU1FUkdMVEVYVFVSRUVYVEVSTkFMQVRUUklCU05WUFJPQykgKEVHTERpc3BsYXkgZHB5LCBF
R0xTdHJlYW1LSFIgc3RyZWFtLCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKKyNpZmRlZiBFR0xf
RUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVh
bUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYgKEVHTERpc3BsYXkgZHB5LCBFR0xT
dHJlYW1LSFIgc3RyZWFtLCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKKyNlbmRpZgorI2VuZGlm
IC8qIEVHTF9OVl9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0dXJlX3l1diAqLworCisjaWZuZGVmIEVH
TF9OVl9zdHJlYW1fbWV0YWRhdGEKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9tZXRhZGF0YSAxCisj
ZGVmaW5lIEVHTF9NQVhfU1RSRUFNX01FVEFEQVRBX0JMT0NLU19OViAweDMyNTAKKyNkZWZpbmUg
RUdMX01BWF9TVFJFQU1fTUVUQURBVEFfQkxPQ0tfU0laRV9OViAweDMyNTEKKyNkZWZpbmUgRUdM
X01BWF9TVFJFQU1fTUVUQURBVEFfVE9UQUxfU0laRV9OViAweDMyNTIKKyNkZWZpbmUgRUdMX1BS
T0RVQ0VSX01FVEFEQVRBX05WICAgICAgICAgIDB4MzI1MworI2RlZmluZSBFR0xfQ09OU1VNRVJf
TUVUQURBVEFfTlYgICAgICAgICAgMHgzMjU0CisjZGVmaW5lIEVHTF9QRU5ESU5HX01FVEFEQVRB
X05WICAgICAgICAgICAweDMzMjgKKyNkZWZpbmUgRUdMX01FVEFEQVRBMF9TSVpFX05WICAgICAg
ICAgICAgIDB4MzI1NQorI2RlZmluZSBFR0xfTUVUQURBVEExX1NJWkVfTlYgICAgICAgICAgICAg
MHgzMjU2CisjZGVmaW5lIEVHTF9NRVRBREFUQTJfU0laRV9OViAgICAgICAgICAgICAweDMyNTcK
KyNkZWZpbmUgRUdMX01FVEFEQVRBM19TSVpFX05WICAgICAgICAgICAgIDB4MzI1OAorI2RlZmlu
ZSBFR0xfTUVUQURBVEEwX1RZUEVfTlYgICAgICAgICAgICAgMHgzMjU5CisjZGVmaW5lIEVHTF9N
RVRBREFUQTFfVFlQRV9OViAgICAgICAgICAgICAweDMyNUEKKyNkZWZpbmUgRUdMX01FVEFEQVRB
Ml9UWVBFX05WICAgICAgICAgICAgIDB4MzI1QgorI2RlZmluZSBFR0xfTUVUQURBVEEzX1RZUEVf
TlYgICAgICAgICAgICAgMHgzMjVDCit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQ
Rk5FR0xRVUVSWURJU1BMQVlBVFRSSUJOVlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IGF0
dHJpYnV0ZSwgRUdMQXR0cmliICp2YWx1ZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVO
VFJZUCBQRk5FR0xTRVRTVFJFQU1NRVRBREFUQU5WUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xT
dHJlYW1LSFIgc3RyZWFtLCBFR0xpbnQgbiwgRUdMaW50IG9mZnNldCwgRUdMaW50IHNpemUsIGNv
bnN0IHZvaWQgKmRhdGEpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdM
UVVFUllTVFJFQU1NRVRBREFUQU5WUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIg
c3RyZWFtLCBFR0xlbnVtIG5hbWUsIEVHTGludCBuLCBFR0xpbnQgb2Zmc2V0LCBFR0xpbnQgc2l6
ZSwgdm9pZCAqZGF0YSk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeURpc3BsYXlBdHRyaWJOViAoRUdMRGlzcGxheSBk
cHksIEVHTGludCBhdHRyaWJ1dGUsIEVHTEF0dHJpYiAqdmFsdWUpOworRUdMQVBJIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgZWdsU2V0U3RyZWFtTWV0YWRhdGFOViAoRUdMRGlzcGxheSBkcHksIEVH
TFN0cmVhbUtIUiBzdHJlYW0sIEVHTGludCBuLCBFR0xpbnQgb2Zmc2V0LCBFR0xpbnQgc2l6ZSwg
Y29uc3Qgdm9pZCAqZGF0YSk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVy
eVN0cmVhbU1ldGFkYXRhTlYgKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3RyZWFtLCBF
R0xlbnVtIG5hbWUsIEVHTGludCBuLCBFR0xpbnQgb2Zmc2V0LCBFR0xpbnQgc2l6ZSwgdm9pZCAq
ZGF0YSk7CisjZW5kaWYKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX21ldGFkYXRhICovCisKICNp
Zm5kZWYgRUdMX05WX3N0cmVhbV9zeW5jCiAjZGVmaW5lIEVHTF9OVl9zdHJlYW1fc3luYyAxCiAj
ZGVmaW5lIEVHTF9TWU5DX05FV19GUkFNRV9OViAgICAgICAgICAgICAweDMyMUYKQEAgLTc2Nyw2
ICsxMDMyLDE2IEBACiAjZW5kaWYgLyogS0hST05PU19TVVBQT1JUX0lOVDY0ICovCiAjZW5kaWYg
LyogRUdMX05WX3N5c3RlbV90aW1lICovCiAKKyNpZm5kZWYgRUdMX1RJWkVOX2ltYWdlX25hdGl2
ZV9idWZmZXIKKyNkZWZpbmUgRUdMX1RJWkVOX2ltYWdlX25hdGl2ZV9idWZmZXIgMQorI2RlZmlu
ZSBFR0xfTkFUSVZFX0JVRkZFUl9USVpFTiAgICAgICAgICAgMHgzMkEwCisjZW5kaWYgLyogRUdM
X1RJWkVOX2ltYWdlX25hdGl2ZV9idWZmZXIgKi8KKworI2lmbmRlZiBFR0xfVElaRU5faW1hZ2Vf
bmF0aXZlX3N1cmZhY2UKKyNkZWZpbmUgRUdMX1RJWkVOX2ltYWdlX25hdGl2ZV9zdXJmYWNlIDEK
KyNkZWZpbmUgRUdMX05BVElWRV9TVVJGQUNFX1RJWkVOICAgICAgICAgIDB4MzJBMQorI2VuZGlm
IC8qIEVHTF9USVpFTl9pbWFnZV9uYXRpdmVfc3VyZmFjZSAqLworCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wv
ZWdscGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw3ICsyNSw3IEBACiAqLwogCiAvKiBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlcyBhbmQgZGVmaW5p
dGlvbnMgZm9yIGVnbC5oCi0gKiAkUmV2aXNpb246IDIzNDMyICQgb24gJERhdGU6IDIwMTMtMTAt
MDkgMDA6NTc6MjQgLTA3MDAgKFdlZCwgMDkgT2N0IDIwMTMpICQKKyAqICRSZXZpc2lvbjogMzA5
OTQgJCBvbiAkRGF0ZTogMjAxNS0wNC0zMCAxMzozNjo0OCAtMDcwMCAoVGh1LCAzMCBBcHIgMjAx
NSkgJAogICoKICAqIEFkb3B0ZXJzIG1heSBtb2RpZnkga2hycGxhdGZvcm0uaCBhbmQgdGhpcyBm
aWxlIHRvIHN1aXQgdGhlaXIgcGxhdGZvcm0uCiAgKiBZb3UgYXJlIGVuY291cmFnZWQgdG8gc3Vi
bWl0IGFsbCBtb2RpZmljYXRpb25zIHRvIHRoZSBLaHJvbm9zIGdyb3VwIHNvIHRoYXQKQEAgLTk5
LDYgKzk5LDEyIEBACiB0eXBlZGVmIHN0cnVjdCBlZ2xfbmF0aXZlX3BpeG1hcF90KiAgICAgRUdM
TmF0aXZlUGl4bWFwVHlwZTsKIHR5cGVkZWYgdm9pZCogICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xOYXRpdmVEaXNwbGF5VHlwZTsKIAorI2VsaWYgZGVmaW5lZChVU0VfT1pPTkUpCisKK3R5
cGVkZWYgaW50cHRyX3QgRUdMTmF0aXZlRGlzcGxheVR5cGU7Cit0eXBlZGVmIGludHB0cl90IEVH
TE5hdGl2ZVdpbmRvd1R5cGU7Cit0eXBlZGVmIGludHB0cl90IEVHTE5hdGl2ZVBpeG1hcFR5cGU7
CisKICNlbGlmIGRlZmluZWQoX191bml4X18pCiAKIC8qIFgxMSAodGVudGF0aXZlKSAgKi8KQEAg
LTExMSwxMSArMTE3LDE1IEBACiAKICNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICggZGVmaW5l
ZChfX0FQUExFX0NQUF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgfHwgZGVmaW5lZChfX01B
Q09TX0NMQVNTSUNfXykgKQogCi0vLyBUT0RPKGptYWRpbGwpOiBuYXRpdmUgaW1wbGVtZW50YXRp
b24gZm9yIE9TWAorI2lmIGRlZmluZWQoX19PQkpDX18pCitAY2xhc3MgQ0FMYXllcjsKKyNlbHNl
CitjbGFzcyBDQUxheWVyOworI2VuZGlmCiAKIHR5cGVkZWYgdm9pZCAqRUdMTmF0aXZlRGlzcGxh
eVR5cGU7CiB0eXBlZGVmIHZvaWQgKkVHTE5hdGl2ZVBpeG1hcFR5cGU7Ci10eXBlZGVmIHZvaWQg
KkVHTE5hdGl2ZVdpbmRvd1R5cGU7Cit0eXBlZGVmIENBTGF5ZXIgKkVHTE5hdGl2ZVdpbmRvd1R5
cGU7CiAKICNlbHNlCiAjZXJyb3IgIlBsYXRmb3JtIG5vdCByZWNvZ25pemVkIgpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5oCShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDU2ICsxLDg3IEBACiAjaWZuZGVmIF9fZ2wyX2hfCi0jZGVmaW5lIF9f
Z2wyX2hfCisjZGVmaW5lIF9fZ2wyX2hfIDEKIAotLyogJFJldmlzaW9uOiAyMDU1NSAkIG9uICRE
YXRlOjogMjAxMy0wMi0xMiAxNDozMjo0NyAtMDgwMCAjJCAqLwotCi0jaW5jbHVkZSA8R0xFUzIv
Z2wycGxhdGZvcm0uaD4KLQogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRp
ZgogCiAvKgotICogVGhpcyBkb2N1bWVudCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgU0dJIEZyZWUg
U29mdHdhcmUgQiBMaWNlbnNlIFZlcnNpb24KLSAqIDIuMC4gRm9yIGRldGFpbHMsIHNlZSBodHRw
Oi8vb3NzLnNnaS5jb20vcHJvamVjdHMvRnJlZUIvIC4KLSAqLworKiogQ29weXJpZ2h0IChjKSAy
MDEzLTIwMTUgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKioKKyoqIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisq
KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm
aWxlcyAodGhlCisqKiAiTWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyoqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmln
aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKKyoqIGRpc3RyaWJ1dGUs
IHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8K
KyoqIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvCisqKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisqKgorKiog
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQKKyoqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIE1hdGVyaWFscy4KKyoqCisqKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMg
SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorKiogRVhQUkVTUyBPUiBJTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisqKiBNRVJD
SEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS
SU5HRU1FTlQuCisqKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQorKiogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElB
QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyoqIFRPUlQgT1IgT1RI
RVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisq
KiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxT
LgorKi8KKy8qCisqKiBUaGlzIGhlYWRlciBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgS2hyb25vcyBP
cGVuR0wgLyBPcGVuR0wgRVMgWE1MCisqKiBBUEkgUmVnaXN0cnkuIFRoZSBjdXJyZW50IHZlcnNp
b24gb2YgdGhlIFJlZ2lzdHJ5LCBnZW5lcmF0b3Igc2NyaXB0cworKiogdXNlZCB0byBtYWtlIHRo
ZSBoZWFkZXIsIGFuZCB0aGUgaGVhZGVyIGNhbiBiZSBmb3VuZCBhdAorKiogICBodHRwOi8vd3d3
Lm9wZW5nbC5vcmcvcmVnaXN0cnkvCisqKgorKiogS2hyb25vcyAkUmV2aXNpb246IDMxODExICQg
b24gJERhdGU6IDIwMTUtMDgtMTAgMDA6MDE6MTEgLTA3MDAgKE1vbiwgMTAgQXVnIDIwMTUpICQK
KyovCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogRGF0YSB0eXBlIGRlZmluaXRpb25zCi0gKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlIDxHTEVTMi9nbDJwbGF0Zm9ybS5oPgogCi10eXBlZGVm
IHZvaWQgICAgICAgICAgICAgR0x2b2lkOwotdHlwZWRlZiBjaGFyICAgICAgICAgICAgIEdMY2hh
cjsKLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgICBHTGVudW07Ci10eXBlZGVmIHVuc2lnbmVkIGNo
YXIgICAgR0xib29sZWFuOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIEdMYml0ZmllbGQ7Ci10
eXBlZGVmIGtocm9ub3NfaW50OF90ICAgR0xieXRlOwotdHlwZWRlZiBzaG9ydCAgICAgICAgICAg
IEdMc2hvcnQ7Ci10eXBlZGVmIGludCAgICAgICAgICAgICAgR0xpbnQ7Ci10eXBlZGVmIGludCAg
ICAgICAgICAgICAgR0xzaXplaTsKLXR5cGVkZWYga2hyb25vc191aW50OF90ICBHTHVieXRlOwot
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgIEdMdXNob3J0OwotdHlwZWRlZiB1bnNpZ25lZCBpbnQg
ICAgIEdMdWludDsKLXR5cGVkZWYga2hyb25vc19mbG9hdF90ICBHTGZsb2F0OwotdHlwZWRlZiBr
aHJvbm9zX2Zsb2F0X3QgIEdMY2xhbXBmOwotdHlwZWRlZiBraHJvbm9zX2ludDMyX3QgIEdMZml4
ZWQ7CisjaWZuZGVmIEdMX0FQSUVOVFJZUAorI2RlZmluZSBHTF9BUElFTlRSWVAgR0xfQVBJRU5U
UlkqCisjZW5kaWYKIAotLyogR0wgdHlwZXMgZm9yIGhhbmRsaW5nIGxhcmdlIHZlcnRleCBidWZm
ZXIgb2JqZWN0cyAqLwotdHlwZWRlZiBraHJvbm9zX2ludHB0cl90IEdMaW50cHRyOwotdHlwZWRl
ZiBraHJvbm9zX3NzaXplX3QgIEdMc2l6ZWlwdHI7CisvKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE1
MDgwOSAqLwogCi0vKiBPcGVuR0wgRVMgY29yZSB2ZXJzaW9ucyAqLwotI2RlZmluZSBHTF9FU19W
RVJTSU9OXzJfMCAgICAgICAgICAgICAgICAgMQorLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoK
KyAqIEFQSTogZ2xlczIKKyAqIFByb2ZpbGU6IGNvbW1vbgorICogVmVyc2lvbnMgY29uc2lkZXJl
ZDogMlwuWzAtOV0KKyAqIFZlcnNpb25zIGVtaXR0ZWQ6IC4qCisgKiBEZWZhdWx0IGV4dGVuc2lv
bnMgaW5jbHVkZWQ6IE5vbmUKKyAqIEFkZGl0aW9uYWwgZXh0ZW5zaW9ucyBpbmNsdWRlZDogX25v
bWF0Y2hfXgorICogRXh0ZW5zaW9ucyByZW1vdmVkOiBfbm9tYXRjaF9eCisgKi8KIAotLyogQ2xl
YXJCdWZmZXJNYXNrICovCisjaWZuZGVmIEdMX0VTX1ZFUlNJT05fMl8wCisjZGVmaW5lIEdMX0VT
X1ZFUlNJT05fMl8wIDEKKyNpbmNsdWRlIDxLSFIva2hycGxhdGZvcm0uaD4KK3R5cGVkZWYga2hy
b25vc19pbnQ4X3QgR0xieXRlOwordHlwZWRlZiBraHJvbm9zX2Zsb2F0X3QgR0xjbGFtcGY7Cit0
eXBlZGVmIGtocm9ub3NfaW50MzJfdCBHTGZpeGVkOwordHlwZWRlZiBzaG9ydCBHTHNob3J0Owor
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHTHVzaG9ydDsKK3R5cGVkZWYgdm9pZCBHTHZvaWQ7Cit0
eXBlZGVmIHN0cnVjdCBfX0dMc3luYyAqR0xzeW5jOwordHlwZWRlZiBraHJvbm9zX2ludDY0X3Qg
R0xpbnQ2NDsKK3R5cGVkZWYga2hyb25vc191aW50NjRfdCBHTHVpbnQ2NDsKK3R5cGVkZWYgdW5z
aWduZWQgaW50IEdMZW51bTsKK3R5cGVkZWYgdW5zaWduZWQgaW50IEdMdWludDsKK3R5cGVkZWYg
Y2hhciBHTGNoYXI7Cit0eXBlZGVmIGtocm9ub3NfZmxvYXRfdCBHTGZsb2F0OwordHlwZWRlZiBr
aHJvbm9zX3NzaXplX3QgR0xzaXplaXB0cjsKK3R5cGVkZWYga2hyb25vc19pbnRwdHJfdCBHTGlu
dHB0cjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IEdMYml0ZmllbGQ7Cit0eXBlZGVmIGludCBHTGlu
dDsKK3R5cGVkZWYgdW5zaWduZWQgY2hhciBHTGJvb2xlYW47Cit0eXBlZGVmIGludCBHTHNpemVp
OwordHlwZWRlZiBraHJvbm9zX3VpbnQ4X3QgR0x1Ynl0ZTsKICNkZWZpbmUgR0xfREVQVEhfQlVG
RkVSX0JJVCAgICAgICAgICAgICAgIDB4MDAwMDAxMDAKICNkZWZpbmUgR0xfU1RFTkNJTF9CVUZG
RVJfQklUICAgICAgICAgICAgIDB4MDAwMDA0MDAKICNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJ
VCAgICAgICAgICAgICAgIDB4MDAwMDQwMDAKLQotLyogQm9vbGVhbiAqLwogI2RlZmluZSBHTF9G
QUxTRSAgICAgICAgICAgICAgICAgICAgICAgICAgMAogI2RlZmluZSBHTF9UUlVFICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMQotCi0vKiBCZWdpbk1vZGUgKi8KICNkZWZpbmUgR0xfUE9JTlRT
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMAogI2RlZmluZSBHTF9MSU5FUyAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgwMDAxCiAjZGVmaW5lIEdMX0xJTkVfTE9PUCAgICAgICAgICAg
ICAgICAgICAgICAweDAwMDIKQEAgLTU4LDE4ICs4OSw2IEBACiAjZGVmaW5lIEdMX1RSSUFOR0xF
UyAgICAgICAgICAgICAgICAgICAgICAweDAwMDQKICNkZWZpbmUgR0xfVFJJQU5HTEVfU1RSSVAg
ICAgICAgICAgICAgICAgIDB4MDAwNQogI2RlZmluZSBHTF9UUklBTkdMRV9GQU4gICAgICAgICAg
ICAgICAgICAgMHgwMDA2Ci0KLS8qIEFscGhhRnVuY3Rpb24gKG5vdCBzdXBwb3J0ZWQgaW4gRVMy
MCkgKi8KLS8qICAgICAgR0xfTkVWRVIgKi8KLS8qICAgICAgR0xfTEVTUyAqLwotLyogICAgICBH
TF9FUVVBTCAqLwotLyogICAgICBHTF9MRVFVQUwgKi8KLS8qICAgICAgR0xfR1JFQVRFUiAqLwot
LyogICAgICBHTF9OT1RFUVVBTCAqLwotLyogICAgICBHTF9HRVFVQUwgKi8KLS8qICAgICAgR0xf
QUxXQVlTICovCi0KLS8qIEJsZW5kaW5nRmFjdG9yRGVzdCAqLwogI2RlZmluZSBHTF9aRVJPICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMAogI2RlZmluZSBHTF9PTkUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMQogI2RlZmluZSBHTF9TUkNfQ09MT1IgICAgICAgICAgICAgICAgICAgICAg
MHgwMzAwCkBAIC03OCwyOSArOTcsMTUgQEAKICNkZWZpbmUgR0xfT05FX01JTlVTX1NSQ19BTFBI
QSAgICAgICAgICAgIDB4MDMwMwogI2RlZmluZSBHTF9EU1RfQUxQSEEgICAgICAgICAgICAgICAg
ICAgICAgMHgwMzA0CiAjZGVmaW5lIEdMX09ORV9NSU5VU19EU1RfQUxQSEEgICAgICAgICAgICAw
eDAzMDUKLQotLyogQmxlbmRpbmdGYWN0b3JTcmMgKi8KLS8qICAgICAgR0xfWkVSTyAqLwotLyog
ICAgICBHTF9PTkUgKi8KICNkZWZpbmUgR0xfRFNUX0NPTE9SICAgICAgICAgICAgICAgICAgICAg
IDB4MDMwNgogI2RlZmluZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SICAgICAgICAgICAgMHgwMzA3
CiAjZGVmaW5lIEdMX1NSQ19BTFBIQV9TQVRVUkFURSAgICAgICAgICAgICAweDAzMDgKLS8qICAg
ICAgR0xfU1JDX0FMUEhBICovCi0vKiAgICAgIEdMX09ORV9NSU5VU19TUkNfQUxQSEEgKi8KLS8q
ICAgICAgR0xfRFNUX0FMUEhBICovCi0vKiAgICAgIEdMX09ORV9NSU5VU19EU1RfQUxQSEEgKi8K
LQotLyogQmxlbmRFcXVhdGlvblNlcGFyYXRlICovCiAjZGVmaW5lIEdMX0ZVTkNfQUREICAgICAg
ICAgICAgICAgICAgICAgICAweDgwMDYKICNkZWZpbmUgR0xfQkxFTkRfRVFVQVRJT04gICAgICAg
ICAgICAgICAgIDB4ODAwOQotI2RlZmluZSBHTF9CTEVORF9FUVVBVElPTl9SR0IgICAgICAgICAg
ICAgMHg4MDA5ICAgIC8qIHNhbWUgYXMgQkxFTkRfRVFVQVRJT04gKi8KKyNkZWZpbmUgR0xfQkxF
TkRfRVFVQVRJT05fUkdCICAgICAgICAgICAgIDB4ODAwOQogI2RlZmluZSBHTF9CTEVORF9FUVVB
VElPTl9BTFBIQSAgICAgICAgICAgMHg4ODNECi0KLS8qIEJsZW5kU3VidHJhY3QgKi8KICNkZWZp
bmUgR0xfRlVOQ19TVUJUUkFDVCAgICAgICAgICAgICAgICAgIDB4ODAwQQogI2RlZmluZSBHTF9G
VU5DX1JFVkVSU0VfU1VCVFJBQ1QgICAgICAgICAgMHg4MDBCCi0KLS8qIFNlcGFyYXRlIEJsZW5k
IEZ1bmN0aW9ucyAqLwogI2RlZmluZSBHTF9CTEVORF9EU1RfUkdCICAgICAgICAgICAgICAgICAg
MHg4MEM4CiAjZGVmaW5lIEdMX0JMRU5EX1NSQ19SR0IgICAgICAgICAgICAgICAgICAweDgwQzkK
ICNkZWZpbmUgR0xfQkxFTkRfRFNUX0FMUEhBICAgICAgICAgICAgICAgIDB4ODBDQQpAQCAtMTEw
LDM4ICsxMTUsMTkgQEAKICNkZWZpbmUgR0xfQ09OU1RBTlRfQUxQSEEgICAgICAgICAgICAgICAg
IDB4ODAwMwogI2RlZmluZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgICAgICAgMHg4MDA0
CiAjZGVmaW5lIEdMX0JMRU5EX0NPTE9SICAgICAgICAgICAgICAgICAgICAweDgwMDUKLQotLyog
QnVmZmVyIE9iamVjdHMgKi8KICNkZWZpbmUgR0xfQVJSQVlfQlVGRkVSICAgICAgICAgICAgICAg
ICAgIDB4ODg5MgogI2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiAgICAgICAgICAgMHg4
ODkzCiAjZGVmaW5lIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICAweDg4OTQKICNk
ZWZpbmUgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyAgIDB4ODg5NQotCiAjZGVmaW5l
IEdMX1NUUkVBTV9EUkFXICAgICAgICAgICAgICAgICAgICAweDg4RTAKICNkZWZpbmUgR0xfU1RB
VElDX0RSQVcgICAgICAgICAgICAgICAgICAgIDB4ODhFNAogI2RlZmluZSBHTF9EWU5BTUlDX0RS
QVcgICAgICAgICAgICAgICAgICAgMHg4OEU4Ci0KICNkZWZpbmUgR0xfQlVGRkVSX1NJWkUgICAg
ICAgICAgICAgICAgICAgIDB4ODc2NAogI2RlZmluZSBHTF9CVUZGRVJfVVNBR0UgICAgICAgICAg
ICAgICAgICAgMHg4NzY1Ci0KICNkZWZpbmUgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCICAgICAg
ICAgIDB4ODYyNgotCi0vKiBDdWxsRmFjZU1vZGUgKi8KICNkZWZpbmUgR0xfRlJPTlQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDQwNAogI2RlZmluZSBHTF9CQUNLICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwNDA1CiAjZGVmaW5lIEdMX0ZST05UX0FORF9CQUNLICAgICAgICAgICAg
ICAgICAweDA0MDgKLQotLyogRGVwdGhGdW5jdGlvbiAqLwotLyogICAgICBHTF9ORVZFUiAqLwot
LyogICAgICBHTF9MRVNTICovCi0vKiAgICAgIEdMX0VRVUFMICovCi0vKiAgICAgIEdMX0xFUVVB
TCAqLwotLyogICAgICBHTF9HUkVBVEVSICovCi0vKiAgICAgIEdMX05PVEVRVUFMICovCi0vKiAg
ICAgIEdMX0dFUVVBTCAqLwotLyogICAgICBHTF9BTFdBWVMgKi8KLQotLyogRW5hYmxlQ2FwICov
CiAjZGVmaW5lIEdMX1RFWFRVUkVfMkQgICAgICAgICAgICAgICAgICAgICAweDBERTEKICNkZWZp
bmUgR0xfQ1VMTF9GQUNFICAgICAgICAgICAgICAgICAgICAgIDB4MEI0NAogI2RlZmluZSBHTF9C
TEVORCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQkUyCkBAIC0xNTIsMTkgKzEzOCwxMyBA
QAogI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMICAgICAgICAgICAgMHg4MDM3CiAjZGVm
aW5lIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSAgICAgICAweDgwOUUKICNkZWZpbmUgR0xf
U0FNUExFX0NPVkVSQUdFICAgICAgICAgICAgICAgIDB4ODBBMAotCi0vKiBFcnJvckNvZGUgKi8K
ICNkZWZpbmUgR0xfTk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgIDAKICNkZWZpbmUgR0xf
SU5WQUxJRF9FTlVNICAgICAgICAgICAgICAgICAgIDB4MDUwMAogI2RlZmluZSBHTF9JTlZBTElE
X1ZBTFVFICAgICAgICAgICAgICAgICAgMHgwNTAxCiAjZGVmaW5lIEdMX0lOVkFMSURfT1BFUkFU
SU9OICAgICAgICAgICAgICAweDA1MDIKICNkZWZpbmUgR0xfT1VUX09GX01FTU9SWSAgICAgICAg
ICAgICAgICAgIDB4MDUwNQotCi0vKiBGcm9udEZhY2VEaXJlY3Rpb24gKi8KICNkZWZpbmUgR0xf
Q1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDkwMAogI2RlZmluZSBHTF9DQ1cgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHgwOTAxCi0KLS8qIEdldFBOYW1lICovCiAjZGVmaW5l
IEdMX0xJTkVfV0lEVEggICAgICAgICAgICAgICAgICAgICAweDBCMjEKICNkZWZpbmUgR0xfQUxJ
QVNFRF9QT0lOVF9TSVpFX1JBTkdFICAgICAgIDB4ODQ2RAogI2RlZmluZSBHTF9BTElBU0VEX0xJ
TkVfV0lEVEhfUkFOR0UgICAgICAgMHg4NDZFCkBAIC0xOTEsNyArMTcxLDYgQEAKICNkZWZpbmUg
R0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAgICAgICAgIDB4OENBNQogI2RlZmluZSBHTF9WSUVX
UE9SVCAgICAgICAgICAgICAgICAgICAgICAgMHgwQkEyCiAjZGVmaW5lIEdMX1NDSVNTT1JfQk9Y
ICAgICAgICAgICAgICAgICAgICAweDBDMTAKLS8qICAgICAgR0xfU0NJU1NPUl9URVNUICovCiAj
ZGVmaW5lIEdMX0NPTE9SX0NMRUFSX1ZBTFVFICAgICAgICAgICAgICAweDBDMjIKICNkZWZpbmUg
R0xfQ09MT1JfV1JJVEVNQVNLICAgICAgICAgICAgICAgIDB4MEMyMwogI2RlZmluZSBHTF9VTlBB
Q0tfQUxJR05NRU5UICAgICAgICAgICAgICAgMHgwQ0Y1CkBAIC0yMDYsMzIgKzE4NSwxOCBAQAog
I2RlZmluZSBHTF9ERVBUSF9CSVRTICAgICAgICAgICAgICAgICAgICAgMHgwRDU2CiAjZGVmaW5l
IEdMX1NURU5DSUxfQklUUyAgICAgICAgICAgICAgICAgICAweDBENTcKICNkZWZpbmUgR0xfUE9M
WUdPTl9PRkZTRVRfVU5JVFMgICAgICAgICAgIDB4MkEwMAotLyogICAgICBHTF9QT0xZR09OX09G
RlNFVF9GSUxMICovCiAjZGVmaW5lIEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUiAgICAgICAgICAw
eDgwMzgKICNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzJEICAgICAgICAgICAgIDB4ODA2OQog
I2RlZmluZSBHTF9TQU1QTEVfQlVGRkVSUyAgICAgICAgICAgICAgICAgMHg4MEE4CiAjZGVmaW5l
IEdMX1NBTVBMRVMgICAgICAgICAgICAgICAgICAgICAgICAweDgwQTkKICNkZWZpbmUgR0xfU0FN
UExFX0NPVkVSQUdFX1ZBTFVFICAgICAgICAgIDB4ODBBQQogI2RlZmluZSBHTF9TQU1QTEVfQ09W
RVJBR0VfSU5WRVJUICAgICAgICAgMHg4MEFCCi0KLS8qIEdldFRleHR1cmVQYXJhbWV0ZXIgKi8K
LS8qICAgICAgR0xfVEVYVFVSRV9NQUdfRklMVEVSICovCi0vKiAgICAgIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiAqLwotLyogICAgICBHTF9URVhUVVJFX1dSQVBfUyAqLwotLyogICAgICBHTF9URVhU
VVJFX1dSQVBfVCAqLwotCiAjZGVmaW5lIEdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFU
UyAweDg2QTIKICNkZWZpbmUgR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgICAgIDB4ODZB
MwotCi0vKiBIaW50TW9kZSAqLwogI2RlZmluZSBHTF9ET05UX0NBUkUgICAgICAgICAgICAgICAg
ICAgICAgMHgxMTAwCiAjZGVmaW5lIEdMX0ZBU1RFU1QgICAgICAgICAgICAgICAgICAgICAgICAw
eDExMDEKICNkZWZpbmUgR0xfTklDRVNUICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEwMgot
Ci0vKiBIaW50VGFyZ2V0ICovCi0jZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UICAgICAg
ICAgICAgMHg4MTkyCi0KLS8qIERhdGFUeXBlICovCisjZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1B
UF9ISU5UICAgICAgICAgICAweDgxOTIKICNkZWZpbmUgR0xfQllURSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4MTQwMAogI2RlZmluZSBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAg
ICAgMHgxNDAxCiAjZGVmaW5lIEdMX1NIT1JUICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0
MDIKQEAgLTI0MCw0NCArMjA1LDM1IEBACiAjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVCAgICAgICAg
ICAgICAgICAgICAweDE0MDUKICNkZWZpbmUgR0xfRkxPQVQgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MTQwNgogI2RlZmluZSBHTF9GSVhFRCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx
NDBDCi0KLS8qIFBpeGVsRm9ybWF0ICovCiAjZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVCAgICAg
ICAgICAgICAgICAweDE5MDIKICNkZWZpbmUgR0xfQUxQSEEgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MTkwNgogI2RlZmluZSBHTF9SR0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgx
OTA3CiAjZGVmaW5lIEdMX1JHQkEgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MDgKICNk
ZWZpbmUgR0xfTFVNSU5BTkNFICAgICAgICAgICAgICAgICAgICAgIDB4MTkwOQogI2RlZmluZSBH
TF9MVU1JTkFOQ0VfQUxQSEEgICAgICAgICAgICAgICAgMHgxOTBBCi0KLS8qIFBpeGVsVHlwZSAq
LwotLyogICAgICBHTF9VTlNJR05FRF9CWVRFICovCiAjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JU
XzRfNF80XzQgICAgICAgICAweDgwMzMKICNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNV81XzVf
MSAgICAgICAgIDB4ODAzNAogI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSAgICAgICAg
ICAgMHg4MzYzCi0KLS8qIFNoYWRlcnMgKi8KLSNkZWZpbmUgR0xfRlJBR01FTlRfU0hBREVSICAg
ICAgICAgICAgICAgICAgMHg4QjMwCi0jZGVmaW5lIEdMX1ZFUlRFWF9TSEFERVIgICAgICAgICAg
ICAgICAgICAgIDB4OEIzMQotI2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlMgICAgICAgICAg
ICAgICAweDg4NjkKLSNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgICAgICAg
MHg4REZCCi0jZGVmaW5lIEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMgICAgICAgICAgICAgIDB4OERG
QworI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVIgICAgICAgICAgICAgICAgMHg4QjMwCisjZGVm
aW5lIEdMX1ZFUlRFWF9TSEFERVIgICAgICAgICAgICAgICAgICAweDhCMzEKKyNkZWZpbmUgR0xf
TUFYX1ZFUlRFWF9BVFRSSUJTICAgICAgICAgICAgIDB4ODg2OQorI2RlZmluZSBHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUyAgICAgMHg4REZCCisjZGVmaW5lIEdMX01BWF9WQVJZSU5HX1ZF
Q1RPUlMgICAgICAgICAgICAweDhERkMKICNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVf
SU1BR0VfVU5JVFMgMHg4QjRECi0jZGVmaW5lIEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUUyAgIDB4OEI0QwotI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyAgICAgICAg
ICAweDg4NzIKLSNkZWZpbmUgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyAgICAgMHg4
REZECi0jZGVmaW5lIEdMX1NIQURFUl9UWVBFICAgICAgICAgICAgICAgICAgICAgIDB4OEI0Rgot
I2RlZmluZSBHTF9ERUxFVEVfU1RBVFVTICAgICAgICAgICAgICAgICAgICAweDhCODAKLSNkZWZp
bmUgR0xfTElOS19TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgMHg4QjgyCi0jZGVmaW5lIEdM
X1ZBTElEQVRFX1NUQVRVUyAgICAgICAgICAgICAgICAgIDB4OEI4MwotI2RlZmluZSBHTF9BVFRB
Q0hFRF9TSEFERVJTICAgICAgICAgICAgICAgICAweDhCODUKLSNkZWZpbmUgR0xfQUNUSVZFX1VO
SUZPUk1TICAgICAgICAgICAgICAgICAgMHg4Qjg2Ci0jZGVmaW5lIEdMX0FDVElWRV9VTklGT1JN
X01BWF9MRU5HVEggICAgICAgIDB4OEI4NwotI2RlZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFUyAg
ICAgICAgICAgICAgICAweDhCODkKLSNkZWZpbmUgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVO
R1RIICAgICAgMHg4QjhBCi0jZGVmaW5lIEdMX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTiAgICAg
ICAgIDB4OEI4QwotI2RlZmluZSBHTF9DVVJSRU5UX1BST0dSQU0gICAgICAgICAgICAgICAgICAw
eDhCOEQKLQotLyogU3RlbmNpbEZ1bmN0aW9uICovCisjZGVmaW5lIEdMX01BWF9WRVJURVhfVEVY
VFVSRV9JTUFHRV9VTklUUyAweDhCNEMKKyNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5J
VFMgICAgICAgIDB4ODg3MgorI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
ICAgMHg4REZECisjZGVmaW5lIEdMX1NIQURFUl9UWVBFICAgICAgICAgICAgICAgICAgICAweDhC
NEYKKyNkZWZpbmUgR0xfREVMRVRFX1NUQVRVUyAgICAgICAgICAgICAgICAgIDB4OEI4MAorI2Rl
ZmluZSBHTF9MSU5LX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgMHg4QjgyCisjZGVmaW5lIEdM
X1ZBTElEQVRFX1NUQVRVUyAgICAgICAgICAgICAgICAweDhCODMKKyNkZWZpbmUgR0xfQVRUQUNI
RURfU0hBREVSUyAgICAgICAgICAgICAgIDB4OEI4NQorI2RlZmluZSBHTF9BQ1RJVkVfVU5JRk9S
TVMgICAgICAgICAgICAgICAgMHg4Qjg2CisjZGVmaW5lIEdMX0FDVElWRV9VTklGT1JNX01BWF9M
RU5HVEggICAgICAweDhCODcKKyNkZWZpbmUgR0xfQUNUSVZFX0FUVFJJQlVURVMgICAgICAgICAg
ICAgIDB4OEI4OQorI2RlZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggICAgMHg4
QjhBCisjZGVmaW5lIEdMX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTiAgICAgICAweDhCOEMKKyNk
ZWZpbmUgR0xfQ1VSUkVOVF9QUk9HUkFNICAgICAgICAgICAgICAgIDB4OEI4RAogI2RlZmluZSBH
TF9ORVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAwCiAjZGVmaW5lIEdMX0xFU1Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDEKICNkZWZpbmUgR0xfRVFVQUwgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDIwMgpAQCAtMjg2LDkgKzI0Miw2IEBACiAjZGVmaW5lIEdM
X05PVEVRVUFMICAgICAgICAgICAgICAgICAgICAgICAweDAyMDUKICNkZWZpbmUgR0xfR0VRVUFM
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwNgogI2RlZmluZSBHTF9BTFdBWVMgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgwMjA3Ci0KLS8qIFN0ZW5jaWxPcCAqLwotLyogICAgICBHTF9a
RVJPICovCiAjZGVmaW5lIEdMX0tFRVAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFFMDAK
ICNkZWZpbmUgR0xfUkVQTEFDRSAgICAgICAgICAgICAgICAgICAgICAgIDB4MUUwMQogI2RlZmlu
ZSBHTF9JTkNSICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRTAyCkBAIC0yOTYsMzUgKzI0
OSwyMSBAQAogI2RlZmluZSBHTF9JTlZFUlQgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNTBB
CiAjZGVmaW5lIEdMX0lOQ1JfV1JBUCAgICAgICAgICAgICAgICAgICAgICAweDg1MDcKICNkZWZp
bmUgR0xfREVDUl9XUkFQICAgICAgICAgICAgICAgICAgICAgIDB4ODUwOAotCi0vKiBTdHJpbmdO
YW1lICovCiAjZGVmaW5lIEdMX1ZFTkRPUiAgICAgICAgICAgICAgICAgICAgICAgICAweDFGMDAK
ICNkZWZpbmUgR0xfUkVOREVSRVIgICAgICAgICAgICAgICAgICAgICAgIDB4MUYwMQogI2RlZmlu
ZSBHTF9WRVJTSU9OICAgICAgICAgICAgICAgICAgICAgICAgMHgxRjAyCiAjZGVmaW5lIEdMX0VY
VEVOU0lPTlMgICAgICAgICAgICAgICAgICAgICAweDFGMDMKLQotLyogVGV4dHVyZU1hZ0ZpbHRl
ciAqLwogI2RlZmluZSBHTF9ORUFSRVNUICAgICAgICAgICAgICAgICAgICAgICAgMHgyNjAwCiAj
ZGVmaW5lIEdMX0xJTkVBUiAgICAgICAgICAgICAgICAgICAgICAgICAweDI2MDEKLQotLyogVGV4
dHVyZU1pbkZpbHRlciAqLwotLyogICAgICBHTF9ORUFSRVNUICovCi0vKiAgICAgIEdMX0xJTkVB
UiAqLwogI2RlZmluZSBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUICAgICAgICAgMHgyNzAwCiAj
ZGVmaW5lIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCAgICAgICAgICAweDI3MDEKICNkZWZpbmUg
R0xfTkVBUkVTVF9NSVBNQVBfTElORUFSICAgICAgICAgIDB4MjcwMgogI2RlZmluZSBHTF9MSU5F
QVJfTUlQTUFQX0xJTkVBUiAgICAgICAgICAgMHgyNzAzCi0KLS8qIFRleHR1cmVQYXJhbWV0ZXJO
YW1lICovCiAjZGVmaW5lIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiAgICAgICAgICAgICAweDI4MDAK
ICNkZWZpbmUgR0xfVEVYVFVSRV9NSU5fRklMVEVSICAgICAgICAgICAgIDB4MjgwMQogI2RlZmlu
ZSBHTF9URVhUVVJFX1dSQVBfUyAgICAgICAgICAgICAgICAgMHgyODAyCiAjZGVmaW5lIEdMX1RF
WFRVUkVfV1JBUF9UICAgICAgICAgICAgICAgICAweDI4MDMKLQotLyogVGV4dHVyZVRhcmdldCAq
LwotLyogICAgICBHTF9URVhUVVJFXzJEICovCiAjZGVmaW5lIEdMX1RFWFRVUkUgICAgICAgICAg
ICAgICAgICAgICAgICAweDE3MDIKLQogI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQICAgICAg
ICAgICAgICAgMHg4NTEzCiAjZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCAgICAg
ICAweDg1MTQKICNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICAgIDB4ODUx
NQpAQCAtMzM0LDggKzI3Myw2IEBACiAjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWiAgICAweDg1MTkKICNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aICAg
IDB4ODUxQQogI2RlZmluZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICAgICAgMHg4NTFD
Ci0KLS8qIFRleHR1cmVVbml0ICovCiAjZGVmaW5lIEdMX1RFWFRVUkUwICAgICAgICAgICAgICAg
ICAgICAgICAweDg0QzAKICNkZWZpbmUgR0xfVEVYVFVSRTEgICAgICAgICAgICAgICAgICAgICAg
IDB4ODRDMQogI2RlZmluZSBHTF9URVhUVVJFMiAgICAgICAgICAgICAgICAgICAgICAgMHg4NEMy
CkBAIC0zNjksMTMgKzMwNiw5IEBACiAjZGVmaW5lIEdMX1RFWFRVUkUzMCAgICAgICAgICAgICAg
ICAgICAgICAweDg0REUKICNkZWZpbmUgR0xfVEVYVFVSRTMxICAgICAgICAgICAgICAgICAgICAg
IDB4ODRERgogI2RlZmluZSBHTF9BQ1RJVkVfVEVYVFVSRSAgICAgICAgICAgICAgICAgMHg4NEUw
Ci0KLS8qIFRleHR1cmVXcmFwTW9kZSAqLwogI2RlZmluZSBHTF9SRVBFQVQgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgyOTAxCiAjZGVmaW5lIEdMX0NMQU1QX1RPX0VER0UgICAgICAgICAgICAg
ICAgICAweDgxMkYKICNkZWZpbmUgR0xfTUlSUk9SRURfUkVQRUFUICAgICAgICAgICAgICAgIDB4
ODM3MAotCi0vKiBVbmlmb3JtIFR5cGVzICovCiAjZGVmaW5lIEdMX0ZMT0FUX1ZFQzIgICAgICAg
ICAgICAgICAgICAgICAweDhCNTAKICNkZWZpbmUgR0xfRkxPQVRfVkVDMyAgICAgICAgICAgICAg
ICAgICAgIDB4OEI1MQogI2RlZmluZSBHTF9GTE9BVF9WRUM0ICAgICAgICAgICAgICAgICAgICAg
MHg4QjUyCkBAIC0zOTEsNDggKzMyNCwzNCBAQAogI2RlZmluZSBHTF9GTE9BVF9NQVQ0ICAgICAg
ICAgICAgICAgICAgICAgMHg4QjVDCiAjZGVmaW5lIEdMX1NBTVBMRVJfMkQgICAgICAgICAgICAg
ICAgICAgICAweDhCNUUKICNkZWZpbmUgR0xfU0FNUExFUl9DVUJFICAgICAgICAgICAgICAgICAg
IDB4OEI2MAotCi0vKiBWZXJ0ZXggQXJyYXlzICovCi0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfRU5BQkxFRCAgICAgICAgMHg4NjIyCi0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfU0laRSAgICAgICAgICAgMHg4NjIzCi0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlf
U1RSSURFICAgICAgICAgMHg4NjI0Ci0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQ
RSAgICAgICAgICAgMHg4NjI1Ci0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFM
SVpFRCAgICAgMHg4ODZBCi0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUiAg
ICAgICAgMHg4NjQ1CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCAgICAw
eDg2MjIKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFICAgICAgIDB4ODYyMwor
I2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSAgICAgMHg4NjI0CisjZGVmaW5l
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSAgICAgICAweDg2MjUKKyNkZWZpbmUgR0xfVkVS
VEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEIDB4ODg2QQorI2RlZmluZSBHTF9WRVJURVhfQVRU
UklCX0FSUkFZX1BPSU5URVIgICAgMHg4NjQ1CiAjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlGCi0KLS8qIFJlYWQgRm9ybWF0ICovCi0jZGVmaW5lIEdM
X0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSAgIDB4OEI5QQorI2RlZmluZSBHTF9JTVBM
RU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEUgMHg4QjlBCiAjZGVmaW5lIEdMX0lNUExFTUVOVEFU
SU9OX0NPTE9SX1JFQURfRk9STUFUIDB4OEI5QgotCi0vKiBTaGFkZXIgU291cmNlICovCiAjZGVm
aW5lIEdMX0NPTVBJTEVfU1RBVFVTICAgICAgICAgICAgICAgICAweDhCODEKICNkZWZpbmUgR0xf
SU5GT19MT0dfTEVOR1RIICAgICAgICAgICAgICAgIDB4OEI4NAogI2RlZmluZSBHTF9TSEFERVJf
U09VUkNFX0xFTkdUSCAgICAgICAgICAgMHg4Qjg4CiAjZGVmaW5lIEdMX1NIQURFUl9DT01QSUxF
UiAgICAgICAgICAgICAgICAweDhERkEKLQotLyogU2hhZGVyIEJpbmFyeSAqLwogI2RlZmluZSBH
TF9TSEFERVJfQklOQVJZX0ZPUk1BVFMgICAgICAgICAgMHg4REY4CiAjZGVmaW5lIEdMX05VTV9T
SEFERVJfQklOQVJZX0ZPUk1BVFMgICAgICAweDhERjkKLQotLyogU2hhZGVyIFByZWNpc2lvbi1T
cGVjaWZpZWQgVHlwZXMgKi8KICNkZWZpbmUgR0xfTE9XX0ZMT0FUICAgICAgICAgICAgICAgICAg
ICAgIDB4OERGMAogI2RlZmluZSBHTF9NRURJVU1fRkxPQVQgICAgICAgICAgICAgICAgICAgMHg4
REYxCiAjZGVmaW5lIEdMX0hJR0hfRkxPQVQgICAgICAgICAgICAgICAgICAgICAweDhERjIKICNk
ZWZpbmUgR0xfTE9XX0lOVCAgICAgICAgICAgICAgICAgICAgICAgIDB4OERGMwogI2RlZmluZSBH
TF9NRURJVU1fSU5UICAgICAgICAgICAgICAgICAgICAgMHg4REY0CiAjZGVmaW5lIEdMX0hJR0hf
SU5UICAgICAgICAgICAgICAgICAgICAgICAweDhERjUKLQotLyogRnJhbWVidWZmZXIgT2JqZWN0
LiAqLwogI2RlZmluZSBHTF9GUkFNRUJVRkZFUiAgICAgICAgICAgICAgICAgICAgMHg4RDQwCiAj
ZGVmaW5lIEdMX1JFTkRFUkJVRkZFUiAgICAgICAgICAgICAgICAgICAweDhENDEKLQogI2RlZmlu
ZSBHTF9SR0JBNCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU2CiAjZGVmaW5lIEdMX1JH
QjVfQTEgICAgICAgICAgICAgICAgICAgICAgICAweDgwNTcKICNkZWZpbmUgR0xfUkdCNTY1ICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2MgogI2RlZmluZSBHTF9ERVBUSF9DT01QT05FTlQx
NiAgICAgICAgICAgICAgMHg4MUE1CiAjZGVmaW5lIEdMX1NURU5DSUxfSU5ERVg4ICAgICAgICAg
ICAgICAgICAweDhENDgKLQogI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfV0lEVEggICAgICAgICAg
ICAgMHg4RDQyCiAjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9IRUlHSFQgICAgICAgICAgICAweDhE
NDMKICNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCAgIDB4OEQ0NApAQCAt
NDQyLDE4NSArMzYxLDMxOSBAQAogI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfQUxQSEFfU0laRSAg
ICAgICAgMHg4RDUzCiAjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9ERVBUSF9TSVpFICAgICAgICAw
eDhENTQKICNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSAgICAgIDB4OEQ1NQot
Ci0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUgICAgICAgICAg
IDB4OENEMAotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FICAg
ICAgICAgICAweDhDRDEKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0xFVkVMICAgICAgICAgMHg4Q0QyCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
T0JKRUNUX1RZUEUgMHg4Q0QwCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX05BTUUgMHg4Q0QxCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVS
RV9MRVZFTCAweDhDRDIKICNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0NVQkVfTUFQX0ZBQ0UgMHg4Q0QzCi0KICNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDAgICAg
ICAgICAgICAgIDB4OENFMAogI2RlZmluZSBHTF9ERVBUSF9BVFRBQ0hNRU5UICAgICAgICAgICAg
ICAgMHg4RDAwCiAjZGVmaW5lIEdMX1NURU5DSUxfQVRUQUNITUVOVCAgICAgICAgICAgICAweDhE
MjAKLQogI2RlZmluZSBHTF9OT05FICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotCi0jZGVm
aW5lIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFICAgICAgICAgICAgICAgICAgICAgIDB4OENENQot
I2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgICAgICAgICAweDhD
RDYKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUgICAgICAgICAgIDB4OENENQorI2Rl
ZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgMHg4Q0Q2CiAjZGVmaW5l
IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UIDB4OENENwotI2Rl
ZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMgICAgICAgICAweDhDRDkK
LSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQgICAgICAgICAgICAgICAgICAgMHg4
Q0RECi0KKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIDB4OENE
OQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCAgICAgICAgMHg4Q0RECiAjZGVm
aW5lIEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAweDhDQTYKICNkZWZpbmUgR0xf
UkVOREVSQlVGRkVSX0JJTkRJTkcgICAgICAgICAgIDB4OENBNwogI2RlZmluZSBHTF9NQVhfUkVO
REVSQlVGRkVSX1NJWkUgICAgICAgICAgMHg4NEU4Ci0KICNkZWZpbmUgR0xfSU5WQUxJRF9GUkFN
RUJVRkZFUl9PUEVSQVRJT04gIDB4MDUwNgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xBQ1RJVkVURVhUVVJFUFJPQykgKEdMZW51bSB0ZXh0dXJlKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMQVRUQUNIU0hBREVSUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQg
c2hhZGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREFUVFJJQkxPQ0FU
SU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqbmFt
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRCVUZGRVJQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEJJTkRGUkFNRUJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZm
ZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EUkVOREVSQlVGRkVSUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xCSU5EVEVYVFVSRVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
dGV4dHVyZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5EQ09MT1JQUk9D
KSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBo
YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERVFVQVRJT05QUk9DKSAo
R0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFU
SU9OU0VQQVJBVEVQUk9DKSAoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREZVTkNQUk9DKSAoR0xlbnVtIHNmYWN0
b3IsIEdMZW51bSBkZmFjdG9yKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxF
TkRGVU5DU0VQQVJBVEVQUk9DKSAoR0xlbnVtIHNmYWN0b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdC
LCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZhY3RvckFscGhhKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMQlVGRkVSREFUQVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNp
emVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEsIEdMZW51bSB1c2FnZSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJVRkZFUlNVQkRBVEFQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOwordHlw
ZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTENIRUNLRlJBTUVCVUZGRVJTVEFUVVNQUk9D
KSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFS
UFJPQykgKEdMYml0ZmllbGQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENMRUFSQ09MT1JQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1
ZSwgR0xmbG9hdCBhbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFS
REVQVEhGUFJPQykgKEdMZmxvYXQgZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENMRUFSU1RFTkNJTFBST0MpIChHTGludCBzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMQ09MT1JNQVNLUFJPQykgKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xi
b29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTENPTVBJTEVTSEFERVJQUk9DKSAoR0x1aW50IHNoYWRlcik7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhJTUFHRTJEUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lk
ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWFNV
QklNQUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQs
IEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTENPUFlURVhJTUFHRTJEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VCSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiBHTHVpbnQgKEdMX0FQ
SUVOVFJZUCBQRk5HTENSRUFURVBST0dSQU1QUk9DKSAodm9pZCk7Cit0eXBlZGVmIEdMdWludCAo
R0xfQVBJRU5UUllQIFBGTkdMQ1JFQVRFU0hBREVSUFJPQykgKEdMZW51bSB0eXBlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ1VMTEZBQ0VQUk9DKSAoR0xlbnVtIG1vZGUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVCVUZGRVJTUFJPQykgKEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpm
cmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVQUk9H
UkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMREVMRVRFUkVOREVSQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqcmVu
ZGVyYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVNIQURF
UlBST0MpIChHTHVpbnQgc2hhZGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
REVMRVRFVEVYVFVSRVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVQVEhGVU5DUFJPQykgKEdMZW51bSBm
dW5jKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVQVEhNQVNLUFJPQykgKEdM
Ym9vbGVhbiBmbGFnKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVQVEhSQU5H
RUZQUk9DKSAoR0xmbG9hdCBuLCBHTGZsb2F0IGYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xERVRBQ0hTSEFERVJQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFUFJPQykgKEdMZW51bSBj
YXApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFVkVSVEVYQVRUUklC
QVJSQVlQUk9DKSAoR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRFJBV0FSUkFZU1BST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXRUxFTUVOVFNQUk9DKSAo
R0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRp
Y2VzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5BQkxFUFJPQykgKEdMZW51
bSBjYXApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVWRVJURVhBVFRS
SUJBUlJBWVBST0MpIChHTHVpbnQgaW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xGSU5JU0hQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEZMVVNIUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFN
RUJVRkZFUlJFTkRFUkJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVu
dCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcik7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQg
dGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xG
Uk9OVEZBQ0VQUk9DKSAoR0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRU5CVUZGRVJTUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VORVJBVEVNSVBNQVBQUk9DKSAoR0xlbnVtIHRh
cmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTkZSQU1FQlVGRkVSU1BS
T0MpIChHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VOUkVOREVSQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAq
cmVuZGVyYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlRFWFRV
UkVTUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRUFUVFJJQlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0x1
aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUs
IEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUQUNUSVZFVU5JRk9STVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAq
dHlwZSwgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
QVRUQUNIRURTSEFERVJTUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heENvdW50LCBH
THNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJzKTsKK3R5cGVkZWYgR0xpbnQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFVEFUVFJJQkxPQ0FUSU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBjb25zdCBH
TGNoYXIgKm5hbWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCT09MRUFO
VlBST0MpIChHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUklWUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5U
UllQIFBGTkdMR0VURVJST1JQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVEZMT0FUVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKmRhdGEpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFNRUJVRkZFUkFUVEFDSE1FTlRQQVJB
TUVURVJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
SU5URUdFUlZQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1JVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUUFJPR1JBTUlORk9MT0dQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRSRU5ERVJCVUZGRVJQQVJBTUVURVJJVlBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRTSEFERVJJVlBST0MpIChHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTSEFE
RVJJTkZPTE9HUFJPQykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRVRTSEFERVJQUkVDSVNJT05GT1JNQVRQUk9DKSAoR0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51
bSBwcmVjaXNpb250eXBlLCBHTGludCAqcmFuZ2UsIEdMaW50ICpwcmVjaXNpb24pOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTSEFERVJTT1VSQ0VQUk9DKSAoR0x1aW50IHNo
YWRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqc291cmNlKTsK
K3R5cGVkZWYgY29uc3QgR0x1Ynl0ZSAqKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNUUklOR1BST0Mp
IChHTGVudW0gbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWFBB
UkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVEVYUEFSQU1FVEVSSVZQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUZWUFJPQykgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUlWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIEdMaW50IChHTF9BUElFTlRSWVAgUEZO
R0xHRVRVTklGT1JNTE9DQVRJT05QUk9DKSAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAq
bmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQkZW
UFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRWRVJURVhBVFRSSUJJVlBST0MpIChHTHVp
bnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQlBPSU5URVJWUFJPQykgKEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbnRlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEhJTlRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOwordHlwZWRl
ZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTQlVGRkVSUFJPQykgKEdMdWludCBidWZm
ZXIpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTRU5BQkxFRFBST0Mp
IChHTGVudW0gY2FwKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0ZS
QU1FQlVGRkVSUFJPQykgKEdMdWludCBmcmFtZWJ1ZmZlcik7Cit0eXBlZGVmIEdMYm9vbGVhbiAo
R0xfQVBJRU5UUllQIFBGTkdMSVNQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVk
ZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1JFTkRFUkJVRkZFUlBST0MpIChHTHVp
bnQgcmVuZGVyYnVmZmVyKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJ
U1NIQURFUlBST0MpIChHTHVpbnQgc2hhZGVyKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElF
TlRSWVAgUEZOR0xJU1RFWFRVUkVQUk9DKSAoR0x1aW50IHRleHR1cmUpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xMSU5FV0lEVEhQUk9DKSAoR0xmbG9hdCB3aWR0aCk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTExJTktQUk9HUkFNUFJPQykgKEdMdWludCBwcm9n
cmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUElYRUxTVE9SRUlQUk9DKSAo
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFBPTFlHT05PRkZTRVRQUk9DKSAoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFEUElYRUxTUFJPQykgKEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMUkVMRUFTRVNIQURFUkNPTVBJTEVSUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xSRU5ERVJCVUZGRVJTVE9SQUdFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQU1QTEVDT1ZFUkFHRVBST0MpIChHTGZsb2F0
IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMU0NJU1NPUlBST0MpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNIQURFUkJJTkFSWVBS
T0MpIChHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnNoYWRlcnMsIEdMZW51bSBiaW5hcnlm
b3JtYXQsIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndGgpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xTSEFERVJTT1VSQ0VQUk9DKSAoR0x1aW50IHNoYWRlciwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25zdCpzdHJpbmcsIGNvbnN0IEdMaW50ICpsZW5n
dGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRlVOQ1BST0MpIChH
TGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFNURU5DSUxGVU5DU0VQQVJBVEVQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51
bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMU1RFTkNJTE1BU0tQUk9DKSAoR0x1aW50IG1hc2spOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMTUFTS1NFUEFSQVRFUFJPQykgKEdMZW51bSBmYWNlLCBH
THVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxPUFBS
T0MpIChHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMT1BTRVBBUkFURVBST0MpIChHTGVudW0gZmFj
ZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWlsLCBHTGVudW0gZHBwYXNzKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2
b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVU
RVJGUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUkZWUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSSVBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVEVYUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBj
b25zdCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVY
U1VCSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
djApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUZWUFJPQykgKEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0xSVBST0MpIChHTGludCBsb2NhdGlv
biwgR0xpbnQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUlW
UFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMkZQUk9DKSAoR0xpbnQg
bG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xVTklGT1JNMkZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFVOSUZPUk0ySVBST0MpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTJJVlBST0MpIChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNGUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVU5JRk9STTNGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklG
T1JNM0lQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNM0lWUFJPQykgKEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNEZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNEZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFVOSUZPUk00SVBST0MpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdM
aW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xVTklGT1JNNElWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JN
TUFUUklYMkZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzRlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJWDRGVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVU0VQUk9HUkFNUFJP
QykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkFM
SURBVEVQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVkVSVEVYQVRUUklCMUZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIxRlZQUk9DKSAo
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMVkVSVEVYQVRUUklCMkZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQjJG
VlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIzRlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xWRVJURVhBVFRSSUIzRlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCNEZQUk9DKSAo
R0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUI0RlZQUk9DKSAo
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMVkVSVEVYQVRUUklCUE9JTlRFUlBST0MpIChHTHVpbnQgaW5kZXgsIEdMaW50IHNp
emUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNv
bnN0IHZvaWQgKnBvaW50ZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWSUVX
UE9SVFBST0MpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogR0wgY29yZSBmdW5jdGlvbnMuCi0gKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKi8KLQogI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKEFOR0xFX1dF
QktJVF9XSU4pCiAjaW5jbHVkZSA8R0xFUzIvZ2wyc29mdGxpbmtpbmcuaD4KICNlbHNlCiAKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQWN0aXZlVGV4dHVyZSAoR0xlbnVt
IHRleHR1cmUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xBdHRhY2hT
aGFkZXIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsQmluZEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwg
R0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAg
ICAgR0xfQVBJRU5UUlkgZ2xCaW5kQnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVy
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmluZEZyYW1lYnVmZmVy
IChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAg
ICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kUmVuZGVyYnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgcmVuZGVyYnVmZmVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGds
QmluZFRleHR1cmUgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmxlbmRDb2xvciAoR0xjbGFtcGYgcmVkLCBHTGNs
YW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uICggR0xlbnVtIG1vZGUgKTsK
LUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvblNlcGFy
YXRlIChHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7Ci1HTF9BUElDQUxMIHZvaWQg
ICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kRnVuYyAoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBk
ZmFjdG9yKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5j
U2VwYXJhdGUgKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwg
R0xlbnVtIGRzdEFscGhhKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGds
QnVmZmVyRGF0YSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQq
IGRhdGEsIEdMZW51bSB1c2FnZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRS
WSBnbEJ1ZmZlclN1YkRhdGEgKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXpl
aXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCBHTGVudW0gICAgICAg
R0xfQVBJRU5UUlkgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzIChHTGVudW0gdGFyZ2V0KTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xlYXIgKEdMYml0ZmllbGQgbWFz
ayk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENsZWFyQ29sb3IgKEdM
Y2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhh
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xlYXJEZXB0aGYgKEdM
Y2xhbXBmIGRlcHRoKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xl
YXJTdGVuY2lsIChHTGludCBzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsQ29sb3JNYXNrIChHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBi
bHVlLCBHTGJvb2xlYW4gYWxwaGEpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xDb21waWxlU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRh
dGEpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4
U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29weVRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwotR0xfQVBJQ0FMTCB2b2lk
ICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb3B5VGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLUdMX0FQSUNBTEwgR0x1aW50ICAg
ICAgIEdMX0FQSUVOVFJZIGdsQ3JlYXRlUHJvZ3JhbSAodm9pZCk7Ci1HTF9BUElDQUxMIEdMdWlu
dCAgICAgICBHTF9BUElFTlRSWSBnbENyZWF0ZVNoYWRlciAoR0xlbnVtIHR5cGUpOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDdWxsRmFjZSAoR0xlbnVtIG1vZGUpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEZWxldGVCdWZmZXJzIChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVycyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbERlbGV0ZUZyYW1lYnVmZmVycyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQq
IGZyYW1lYnVmZmVycyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbERl
bGV0ZVByb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdM
X0FQSUVOVFJZIGdsRGVsZXRlUmVuZGVyYnVmZmVycyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQq
IHJlbmRlcmJ1ZmZlcnMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xE
ZWxldGVTaGFkZXIgKEdMdWludCBzaGFkZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xEZWxldGVUZXh0dXJlcyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHRleHR1
cmVzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRGVwdGhGdW5jIChH
TGVudW0gZnVuYyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbERlcHRo
TWFzayAoR0xib29sZWFuIGZsYWcpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xEZXB0aFJhbmdlZiAoR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEZXRhY2hTaGFkZXIgKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgc2hhZGVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsRGlzYWJsZSAoR0xlbnVtIGNhcCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElF
TlRSWSBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKLUdMX0FQSUNB
TEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5cyAoR0xlbnVtIG1vZGUsIEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsRHJhd0VsZW1lbnRzIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCogaW5kaWNlcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbEVuYWJsZSAoR0xlbnVtIGNhcCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAg
ICBHTF9BUElFTlRSWSBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IChHTHVpbnQgaW5kZXgpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xGaW5pc2ggKHZvaWQpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xGbHVzaCAodm9pZCk7Ci1HTF9BUElD
QUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgR0x1aW50IHJlbmRlcmJ1ZmZlcik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElF
TlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNo
bWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsKTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRnJvbnRGYWNlIChHTGVudW0gbW9k
ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdlbkJ1ZmZlcnMgKEdM
c2l6ZWkgbiwgR0x1aW50KiBidWZmZXJzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsR2VuZXJhdGVNaXBtYXAgKEdMZW51bSB0YXJnZXQpOwotR0xfQVBJQ0FMTCB2b2lk
ICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50
KiBmcmFtZWJ1ZmZlcnMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xH
ZW5SZW5kZXJidWZmZXJzIChHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycyk7Ci1HTF9B
UElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdlblRleHR1cmVzIChHTHNpemVpIG4s
IEdMdWludCogdGV4dHVyZXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkg
Z2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkg
YnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNo
YXIqIG5hbWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3Rp
dmVVbmlmb3JtIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUs
IEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1l
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QXR0YWNoZWRTaGFk
ZXJzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdM
dWludCogc2hhZGVycyk7Ci1HTF9BUElDQUxMIEdMaW50ICAgICAgICBHTF9BUElFTlRSWSBnbEdl
dEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0Qm9vbGVhbnYgKEdMZW51bSBw
bmFtZSwgR0xib29sZWFuKiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJ
RU5UUlkgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgR0xlbnVtICAgICAgIEdMX0FQSUVOVFJZIGds
R2V0RXJyb3IgKHZvaWQpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xH
ZXRGbG9hdHYgKEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcG5hbWUsIEdMaW50
KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRJbnRl
Z2VydiAoR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbWl2IChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBu
YW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsR2V0UHJvZ3JhbUluZm9Mb2cgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdM
c2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAg
IEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBH
TF9BUElFTlRSWSBnbEdldFNoYWRlcml2IChHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdM
aW50KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRT
aGFkZXJJbmZvTG9nIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxl
bmd0aCwgR0xjaGFyKiBpbmZvbG9nKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVO
VFJZIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVt
IHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbik7Ci1HTF9BUElD
QUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFNoYWRlclNvdXJjZSAoR0x1aW50IHNo
YWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKTsK
LUdMX0FQSUNBTEwgY29uc3QgR0x1Ynl0ZSogR0xfQVBJRU5UUlkgZ2xHZXRTdHJpbmcgKEdMZW51
bSBuYW1lKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFy
YW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKTsK
LUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyaXYg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxM
IHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1mdiAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAg
ICAgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtaXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIEdMaW50ICAgICAgICBHTF9BUElFTlRS
WSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFt
ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJp
YmZ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKTsKLUdMX0FQ
SUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliaXYgKEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYgKEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwb2ludGVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsSGludCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOwotR0xf
QVBJQ0FMTCBHTGJvb2xlYW4gICAgR0xfQVBJRU5UUlkgZ2xJc0J1ZmZlciAoR0x1aW50IGJ1ZmZl
cik7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiAgICBHTF9BUElFTlRSWSBnbElzRW5hYmxlZCAoR0xl
bnVtIGNhcCk7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiAgICBHTF9BUElFTlRSWSBnbElzRnJhbWVi
dWZmZXIgKEdMdWludCBmcmFtZWJ1ZmZlcik7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiAgICBHTF9B
UElFTlRSWSBnbElzUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOwotR0xfQVBJQ0FMTCBHTGJvb2xl
YW4gICAgR0xfQVBJRU5UUlkgZ2xJc1JlbmRlcmJ1ZmZlciAoR0x1aW50IHJlbmRlcmJ1ZmZlcik7
Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiAgICBHTF9BUElFTlRSWSBnbElzU2hhZGVyIChHTHVpbnQg
c2hhZGVyKTsKLUdMX0FQSUNBTEwgR0xib29sZWFuICAgIEdMX0FQSUVOVFJZIGdsSXNUZXh0dXJl
IChHTHVpbnQgdGV4dHVyZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBn
bExpbmVXaWR0aCAoR0xmbG9hdCB3aWR0aCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9B
UElFTlRSWSBnbExpbmtQcm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7Ci1HTF9BUElDQUxMIHZvaWQg
ICAgICAgICBHTF9BUElFTlRSWSBnbFBpeGVsU3RvcmVpIChHTGVudW0gcG5hbWUsIEdMaW50IHBh
cmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsUG9seWdvbk9mZnNl
dCAoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAg
ICAgR0xfQVBJRU5UUlkgZ2xSZWFkUGl4ZWxzIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCog
cGl4ZWxzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsUmVsZWFzZVNo
YWRlckNvbXBpbGVyICh2b2lkKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1HTF9BUElDQUxMIHZvaWQgICAg
ICAgICBHTF9BUElFTlRSWSBnbFNhbXBsZUNvdmVyYWdlIChHTGNsYW1wZiB2YWx1ZSwgR0xib29s
ZWFuIGludmVydCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFNjaXNz
b3IgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyQmluYXJ5IChHTHNpemVp
IG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2
b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdM
X0FQSUVOVFJZIGdsU2hhZGVyU291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGNoYXIqIGNvbnN0KiBzdHJpbmcsIGNvbnN0IEdMaW50KiBsZW5ndGgpOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuYyAoR0xlbnVtIGZ1bmMs
IEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJ
RU5UUlkgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdM
aW50IHJlZiwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xTdGVuY2lsTWFzayAoR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
R0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFza1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0x1aW50IG1h
c2spOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsT3AgKEdM
ZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7Ci1HTF9BUElDQUxMIHZvaWQg
ICAgICAgICBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xl
bnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBw
aXhlbHMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0
ZXJmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsVGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBn
bFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmIChHTGludCBsb2NhdGlvbiwgR0xmbG9h
dCB4KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmdiAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWkgKEdMaW50IGxvY2F0aW9u
LCBHTGludCB4KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bTFpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJmIChHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xVbmlmb3JtMmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCogdik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFVu
aWZvcm0yaSAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMml2IChHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xVbmlmb3JtM2YgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5p
Zm9ybTNmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYp
OwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2kgKEdMaW50
IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTNpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50KiB2KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVO
VFJZIGdsVW5pZm9ybTRmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdM
ZmxvYXQgeiwgR0xmbG9hdCB3KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsVW5pZm9ybTRmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQqIHYpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtNGkg
KEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpdiAoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDJmdiAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKTsK
LUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDNmdiAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdMZmxvYXQqIHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGds
VW5pZm9ybU1hdHJpeDRmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsVXNlUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOwotR0xfQVBJQ0FM
TCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWYWxpZGF0ZVByb2dyYW0gKEdMdWludCBwcm9n
cmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmli
MWYgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIxZnYgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2
YWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRy
aWIyZiAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliMmZ2IChHTHVpbnQgaW5keCwgY29u
c3QgR0xmbG9hdCogdmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsVmVydGV4QXR0cmliM2YgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xm
bG9hdCB6KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0
cmliM2Z2IChHTHVpbnQgaW5keCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliNGYgKEdMdWludCBpbmR4LCBH
TGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWI0ZnYgKEdMdWludCBpbmR4LCBj
b25zdCBHTGZsb2F0KiB2YWx1ZXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVt
IHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lk
KiBwdHIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydCAo
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotCisjaWZk
ZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQWN0
aXZlVGV4dHVyZSAoR0xlbnVtIHRleHR1cmUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsQXR0YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFt
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xCaW5kQnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFtZWJ1ZmZlciAoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGZyYW1lYnVmZmVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJp
bmRSZW5kZXJidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFRleHR1cmUgKEdMZW51bSB0YXJnZXQsIEdM
dWludCB0ZXh0dXJlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kQ29sb3Ig
KEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbiAoR0xlbnVtIG1v
ZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRl
IChHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xCbGVuZEZ1bmMgKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSAoR0xlbnVtIHNm
YWN0b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0g
ZGZhY3RvckFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlckRhdGEg
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSwgR0xlbnVt
IHVzYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlclN1YkRhdGEgKEdM
ZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lk
ICpkYXRhKTsKK0dMX0FQSUNBTEwgR0xlbnVtIEdMX0FQSUVOVFJZIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyAoR0xlbnVtIHRhcmdldCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xD
bGVhciAoR0xiaXRmaWVsZCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENs
ZWFyQ29sb3IgKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxv
YXQgYWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJEZXB0aGYgKEdM
ZmxvYXQgZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhclN0ZW5jaWwgKEdM
aW50IHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JNYXNrIChHTGJvb2xl
YW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvb2xlYW4gYWxwaGEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcGlsZVNoYWRlciAoR0x1aW50IHNo
YWRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4SW1hZ2Uy
RCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNp
emUsIGNvbnN0IHZvaWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29t
cHJlc3NlZFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4
b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQ29weVRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIEdMdWludCBHTF9BUElFTlRS
WSBnbENyZWF0ZVByb2dyYW0gKHZvaWQpOworR0xfQVBJQ0FMTCBHTHVpbnQgR0xfQVBJRU5UUlkg
Z2xDcmVhdGVTaGFkZXIgKEdMZW51bSB0eXBlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEN1bGxGYWNlIChHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xEZWxldGVCdWZmZXJzIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYnVmZmVycyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwg
Y29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRGVsZXRlUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsRGVsZXRlUmVuZGVyYnVmZmVycyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJl
bmRlcmJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlU2hhZGVy
IChHTHVpbnQgc2hhZGVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVRl
eHR1cmVzIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRGVwdGhGdW5jIChHTGVudW0gZnVuYyk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xEZXB0aE1hc2sgKEdMYm9vbGVhbiBmbGFnKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbERlcHRoUmFuZ2VmIChHTGZsb2F0IG4sIEdMZmxvYXQgZik7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXRhY2hTaGFkZXIgKEdMdWludCBwcm9ncmFt
LCBHTHVpbnQgc2hhZGVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGUg
KEdMZW51bSBjYXApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5IChHTHVpbnQgaW5kZXgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRHJhd0FycmF5cyAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50cyAoR0xlbnVtIG1vZGUs
IEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZSAoR0xlbnVtIGNhcCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZpbmlzaCAodm9pZCk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGbHVzaCAodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGF0dGFjaG1lbnQsIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZm
ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVp
bnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
RnJvbnRGYWNlIChHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZW5CdWZmZXJzIChHTHNpemVpIG4sIEdMdWludCAqYnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZW5lcmF0ZU1pcG1hcCAoR0xlbnVtIHRhcmdldCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50ICpm
cmFtZWJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuUmVuZGVyYnVm
ZmVycyAoR0xzaXplaSBuLCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2VuVGV4dHVyZXMgKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBw
cm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBH
TGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBp
bmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVu
dW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRBdHRhY2hlZFNoYWRlcnMgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heENvdW50LCBHTHNp
emVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJzKTsKK0dMX0FQSUNBTEwgR0xpbnQgR0xfQVBJRU5U
UlkgZ2xHZXRBdHRyaWJMb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFt
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCb29sZWFudiAoR0xlbnVtIHBu
YW1lLCBHTGJvb2xlYW4gKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
QnVmZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbEdldEVycm9yICh2b2lkKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZsb2F0diAoR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVu
dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldEludGVnZXJ2IChHTGVudW0gcG5hbWUsIEdMaW50ICpkYXRhKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1pdiAoR0x1aW50IHByb2dyYW0sIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRQcm9ncmFtSW5mb0xvZyAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTaGFk
ZXJpdiAoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNoYWRlckluZm9Mb2cgKEdMdWludCBzaGFkZXIs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVu
dW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50ICpyYW5nZSwgR0xpbnQg
KnByZWNpc2lvbik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJTb3Vy
Y2UgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNo
YXIgKnNvdXJjZSk7CitHTF9BUElDQUxMIGNvbnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIGdsR2V0
U3RyaW5nIChHTGVudW0gbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRU
ZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJh
bXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyaXYgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtZnYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dFVuaWZvcm1pdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1z
KTsKK0dMX0FQSUNBTEwgR0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gKEdM
dWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsR2V0VmVydGV4QXR0cmliZnYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4
QXR0cmliaXYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2IChHTHVp
bnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsSGludCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOworR0xfQVBJ
Q0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0J1ZmZlciAoR0x1aW50IGJ1ZmZlcik7CitH
TF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxlZCAoR0xlbnVtIGNhcCk7
CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRnJhbWVidWZmZXIgKEdMdWlu
dCBmcmFtZWJ1ZmZlcik7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUHJv
Z3JhbSAoR0x1aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkg
Z2xJc1JlbmRlcmJ1ZmZlciAoR0x1aW50IHJlbmRlcmJ1ZmZlcik7CitHTF9BUElDQUxMIEdMYm9v
bGVhbiBHTF9BUElFTlRSWSBnbElzU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKK0dMX0FQSUNBTEwg
R0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNUZXh0dXJlIChHTHVpbnQgdGV4dHVyZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xMaW5lV2lkdGggKEdMZmxvYXQgd2lkdGgpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTGlua1Byb2dyYW0gKEdMdWludCBwcm9ncmFtKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBpeGVsU3RvcmVpIChHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBvbHlnb25PZmZz
ZXQgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFJlYWRQaXhlbHMgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxzKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbGVhc2VTaGFkZXJDb21waWxlciAodm9p
ZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNhbXBsZUNvdmVyYWdl
IChHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFNjaXNzb3IgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNoYWRlckJpbmFyeSAo
R0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0
LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xjaGFyICpjb25zdCpzdHJpbmcsIGNvbnN0IEdMaW50ICpsZW5ndGgpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZ1bmMgKEdMZW51bSBmdW5jLCBHTGludCBy
ZWYsIEdMdWludCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxG
dW5jU2VwYXJhdGUgKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQg
bWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFzayAoR0x1aW50
IG1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbE1hc2tTZXBhcmF0
ZSAoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFN0ZW5jaWxPcCAoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlIChHTGVudW0g
ZmFjZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWlsLCBHTGVudW0gZHBwYXNzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQg
KnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFRleFBhcmFtZXRlcmkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVyaXYgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmIChHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB2MCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWZ2
IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFpIChHTGludCBsb2NhdGlvbiwg
R0xpbnQgdjApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFpdiAoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMmYgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwLCBHTGZsb2F0IHYxKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0y
ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMmkgKEdMaW50IGxvY2F0aW9u
LCBHTGludCB2MCwgR0xpbnQgdjEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5p
Zm9ybTJpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2YgKEdMaW50IGxvY2F0
aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xV
bmlmb3JtM2kgKEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zaXYgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsVW5pZm9ybTRmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9h
dCB2MSwgR0xmbG9hdCB2MiwgR0xmbG9hdCB2Myk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xVbmlmb3JtNGZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpIChH
TGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpdiAoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4MmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDNmdiAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1NYXRyaXg0ZnYgKEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtIChHTHVp
bnQgcHJvZ3JhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWYWxpZGF0ZVByb2dy
YW0gKEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRl
eEF0dHJpYjFmIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIxZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAq
dik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIyZiAoR0x1aW50
IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xWZXJ0ZXhBdHRyaWIyZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIzZiAoR0x1aW50IGluZGV4
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFZlcnRleEF0dHJpYjNmdiAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjRmIChHTHVpbnQg
aW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWI0ZnYgKEdMdWludCBpbmRleCwg
Y29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJv
b2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmlld3BvcnQgKEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKICNlbmRpZgorI2VuZGlmCisjZW5kaWYg
LyogR0xfRVNfVkVSU0lPTl8yXzAgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYK
IAotI2VuZGlmIC8qIF9fZ2wyX2hfICovCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMzcwICsxLDk2MCBAQAogI2lmbmRlZiBfX2dsMmV4dF9oXwotI2RlZmluZSBf
X2dsMmV4dF9oXworI2RlZmluZSBfX2dsMmV4dF9oXyAxCiAKLS8qICRSZXZpc2lvbjogMjA3OTUg
JCBvbiAkRGF0ZTo6IDIwMTMtMDMtMDcgMDE6MDE6NTggLTA4MDAgIyQgKi8KLQogI2lmZGVmIF9f
Y3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvKgotICogVGhpcyBkb2N1bWVudCBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgU0dJIEZyZWUgU29mdHdhcmUgQiBMaWNlbnNlIFZlcnNpb24K
LSAqIDIuMC4gRm9yIGRldGFpbHMsIHNlZSBodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMvRnJl
ZUIvIC4KLSAqLworKiogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEtocm9ub3MgR3JvdXAg
SW5jLgorKioKKyoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k
L29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisqKiAiTWF0ZXJpYWxzIiks
IHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcK
KyoqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt
ZXJnZSwgcHVibGlzaCwKKyoqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNv
cGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8KKyoqIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisqKiB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6CisqKgorKiogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyoqIGluIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIE1hdGVyaWFscy4KKyoqCisqKiBU
SEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELAorKiogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GCisqKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCisqKiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQor
KiogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwKKyoqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCisqKiBNQVRFUklBTFMgT1IgVEhFIFVTRSBPUiBP
VEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgorKi8KKy8qCisqKiBUaGlzIGhlYWRlciBp
cyBnZW5lcmF0ZWQgZnJvbSB0aGUgS2hyb25vcyBPcGVuR0wgLyBPcGVuR0wgRVMgWE1MCisqKiBB
UEkgUmVnaXN0cnkuIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIFJlZ2lzdHJ5LCBnZW5lcmF0
b3Igc2NyaXB0cworKiogdXNlZCB0byBtYWtlIHRoZSBoZWFkZXIsIGFuZCB0aGUgaGVhZGVyIGNh
biBiZSBmb3VuZCBhdAorKiogICBodHRwOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvCisqKgor
KiogS2hyb25vcyAkUmV2aXNpb246IDMxOTAyICQgb24gJERhdGU6IDIwMTUtMDktMDMgMTU6NDQ6
NTMgLTA3MDAgKFRodSwgMDMgU2VwIDIwMTUpICQKKyovCiAKICNpZm5kZWYgR0xfQVBJRU5UUllQ
Ci0jICAgZGVmaW5lIEdMX0FQSUVOVFJZUCBHTF9BUElFTlRSWSoKKyNkZWZpbmUgR0xfQVBJRU5U
UllQIEdMX0FQSUVOVFJZKgogI2VuZGlmCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgotICogT0VTIGV4
dGVuc2lvbiB0b2tlbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEdlbmVyYXRlZCBvbiBkYXRl
IDIwMTUwOTAzICovCiAKLS8qIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlICov
Ci0jaWZuZGVmIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCi0jZGVmaW5lIEdM
X0VUQzFfUkdCOF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
RDY0Ci0jZW5kaWYKKy8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CisgKiBBUEk6IGdsZXMyCisg
KiBQcm9maWxlOiBjb21tb24KKyAqIFZlcnNpb25zIGNvbnNpZGVyZWQ6IDJcLlswLTldCisgKiBW
ZXJzaW9ucyBlbWl0dGVkOiBfbm9tYXRjaF9eCisgKiBEZWZhdWx0IGV4dGVuc2lvbnMgaW5jbHVk
ZWQ6IGdsZXMyCisgKiBBZGRpdGlvbmFsIGV4dGVuc2lvbnMgaW5jbHVkZWQ6IF9ub21hdGNoX14K
KyAqIEV4dGVuc2lvbnMgcmVtb3ZlZDogX25vbWF0Y2hfXgorICovCiAKLS8qIEdMX09FU19jb21w
cmVzc2VkX3BhbGV0dGVkX3RleHR1cmUgKi8KLSNpZm5kZWYgR0xfT0VTX2NvbXByZXNzZWRfcGFs
ZXR0ZWRfdGV4dHVyZQotI2RlZmluZSBHTF9QQUxFVFRFNF9SR0I4X09FUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OEI5MAotI2RlZmluZSBHTF9QQUxFVFRFNF9SR0JBOF9P
RVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI5MQotI2RlZmluZSBHTF9Q
QUxFVFRFNF9SNV9HNl9CNV9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI5
MgotI2RlZmluZSBHTF9QQUxFVFRFNF9SR0JBNF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEI5MwotI2RlZmluZSBHTF9QQUxFVFRFNF9SR0I1X0ExX09FUyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI5NAotI2RlZmluZSBHTF9QQUxFVFRFOF9SR0I4
X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI5NQotI2RlZmluZSBH
TF9QQUxFVFRFOF9SR0JBOF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEI5NgotI2RlZmluZSBHTF9QQUxFVFRFOF9SNV9HNl9CNV9PRVMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OEI5NwotI2RlZmluZSBHTF9QQUxFVFRFOF9SR0JBNF9PRVMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI5OAotI2RlZmluZSBHTF9QQUxFVFRFOF9S
R0I1X0ExX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI5OQorI2lmbmRl
ZiBHTF9LSFJfYmxlbmRfZXF1YXRpb25fYWR2YW5jZWQKKyNkZWZpbmUgR0xfS0hSX2JsZW5kX2Vx
dWF0aW9uX2FkdmFuY2VkIDEKKyNkZWZpbmUgR0xfTVVMVElQTFlfS0hSICAgICAgICAgICAgICAg
ICAgIDB4OTI5NAorI2RlZmluZSBHTF9TQ1JFRU5fS0hSICAgICAgICAgICAgICAgICAgICAgMHg5
Mjk1CisjZGVmaW5lIEdMX09WRVJMQVlfS0hSICAgICAgICAgICAgICAgICAgICAweDkyOTYKKyNk
ZWZpbmUgR0xfREFSS0VOX0tIUiAgICAgICAgICAgICAgICAgICAgIDB4OTI5NworI2RlZmluZSBH
TF9MSUdIVEVOX0tIUiAgICAgICAgICAgICAgICAgICAgMHg5Mjk4CisjZGVmaW5lIEdMX0NPTE9S
RE9ER0VfS0hSICAgICAgICAgICAgICAgICAweDkyOTkKKyNkZWZpbmUgR0xfQ09MT1JCVVJOX0tI
UiAgICAgICAgICAgICAgICAgIDB4OTI5QQorI2RlZmluZSBHTF9IQVJETElHSFRfS0hSICAgICAg
ICAgICAgICAgICAgMHg5MjlCCisjZGVmaW5lIEdMX1NPRlRMSUdIVF9LSFIgICAgICAgICAgICAg
ICAgICAweDkyOUMKKyNkZWZpbmUgR0xfRElGRkVSRU5DRV9LSFIgICAgICAgICAgICAgICAgIDB4
OTI5RQorI2RlZmluZSBHTF9FWENMVVNJT05fS0hSICAgICAgICAgICAgICAgICAgMHg5MkEwCisj
ZGVmaW5lIEdMX0hTTF9IVUVfS0hSICAgICAgICAgICAgICAgICAgICAweDkyQUQKKyNkZWZpbmUg
R0xfSFNMX1NBVFVSQVRJT05fS0hSICAgICAgICAgICAgIDB4OTJBRQorI2RlZmluZSBHTF9IU0xf
Q09MT1JfS0hSICAgICAgICAgICAgICAgICAgMHg5MkFGCisjZGVmaW5lIEdMX0hTTF9MVU1JTk9T
SVRZX0tIUiAgICAgICAgICAgICAweDkyQjAKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQkxFTkRCQVJSSUVSS0hSUFJPQykgKHZvaWQpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQ
RVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kQmFycmllcktIUiAodm9pZCk7
CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9LSFJfYmxlbmRfZXF1YXRpb25fYWR2YW5jZWQgKi8KIAot
LyogR0xfT0VTX2RlcHRoMjQgKi8KLSNpZm5kZWYgR0xfT0VTX2RlcHRoMjQKLSNkZWZpbmUgR0xf
REVQVEhfQ09NUE9ORU5UMjRfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgx
QTYKLSNlbmRpZgorI2lmbmRlZiBHTF9LSFJfYmxlbmRfZXF1YXRpb25fYWR2YW5jZWRfY29oZXJl
bnQKKyNkZWZpbmUgR0xfS0hSX2JsZW5kX2VxdWF0aW9uX2FkdmFuY2VkX2NvaGVyZW50IDEKKyNk
ZWZpbmUgR0xfQkxFTkRfQURWQU5DRURfQ09IRVJFTlRfS0hSICAgIDB4OTI4NQorI2VuZGlmIC8q
IEdMX0tIUl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZF9jb2hlcmVudCAqLwogCi0vKiBHTF9PRVNf
ZGVwdGgzMiAqLwotI2lmbmRlZiBHTF9PRVNfZGVwdGgzMgotI2RlZmluZSBHTF9ERVBUSF9DT01Q
T05FTlQzMl9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODFBNwotI2VuZGlm
CisjaWZuZGVmIEdMX0tIUl9jb250ZXh0X2ZsdXNoX2NvbnRyb2wKKyNkZWZpbmUgR0xfS0hSX2Nv
bnRleHRfZmx1c2hfY29udHJvbCAxCisjZGVmaW5lIEdMX0NPTlRFWFRfUkVMRUFTRV9CRUhBVklP
Ul9LSFIgICAweDgyRkIKKyNkZWZpbmUgR0xfQ09OVEVYVF9SRUxFQVNFX0JFSEFWSU9SX0ZMVVNI
X0tIUiAweDgyRkMKKyNlbmRpZiAvKiBHTF9LSFJfY29udGV4dF9mbHVzaF9jb250cm9sICovCiAK
LS8qIEdMX09FU19kZXB0aF90ZXh0dXJlICovCi0vKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQg
YnkgdGhpcyBleHRlbnNpb24uICovCi0KLS8qIEdMX09FU19FR0xfaW1hZ2UgKi8KLSNpZm5kZWYg
R0xfT0VTX0VHTF9pbWFnZQotdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOworI2lmbmRlZiBH
TF9LSFJfZGVidWcKKyNkZWZpbmUgR0xfS0hSX2RlYnVnIDEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUlkgICpHTERFQlVHUFJPQ0tIUikoR0xlbnVtIHNvdXJjZSxHTGVudW0gdHlwZSxHTHVpbnQg
aWQsR0xlbnVtIHNldmVyaXR5LEdMc2l6ZWkgbGVuZ3RoLGNvbnN0IEdMY2hhciAqbWVzc2FnZSxj
b25zdCB2b2lkICp1c2VyUGFyYW0pOworI2RlZmluZSBHTF9TQU1QTEVSICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4MkU2CisjZGVmaW5lIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VU19LSFIg
ICAweDgyNDIKKyNkZWZpbmUgR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEhfS0hS
IDB4ODI0MworI2RlZmluZSBHTF9ERUJVR19DQUxMQkFDS19GVU5DVElPTl9LSFIgICAgMHg4MjQ0
CisjZGVmaW5lIEdMX0RFQlVHX0NBTExCQUNLX1VTRVJfUEFSQU1fS0hSICAweDgyNDUKKyNkZWZp
bmUgR0xfREVCVUdfU09VUkNFX0FQSV9LSFIgICAgICAgICAgIDB4ODI0NgorI2RlZmluZSBHTF9E
RUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTV9LSFIgMHg4MjQ3CisjZGVmaW5lIEdMX0RFQlVHX1NP
VVJDRV9TSEFERVJfQ09NUElMRVJfS0hSIDB4ODI0OAorI2RlZmluZSBHTF9ERUJVR19TT1VSQ0Vf
VEhJUkRfUEFSVFlfS0hSICAgMHg4MjQ5CisjZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNB
VElPTl9LSFIgICAweDgyNEEKKyNkZWZpbmUgR0xfREVCVUdfU09VUkNFX09USEVSX0tIUiAgICAg
ICAgIDB4ODI0QgorI2RlZmluZSBHTF9ERUJVR19UWVBFX0VSUk9SX0tIUiAgICAgICAgICAgMHg4
MjRDCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUl9LSFIgMHg4MjRE
CisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SX0tIUiAweDgyNEUKKyNk
ZWZpbmUgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWV9LSFIgICAgIDB4ODI0RgorI2RlZmluZSBH
TF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFX0tIUiAgICAgMHg4MjUwCisjZGVmaW5lIEdMX0RFQlVH
X1RZUEVfT1RIRVJfS0hSICAgICAgICAgICAweDgyNTEKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9N
QVJLRVJfS0hSICAgICAgICAgIDB4ODI2OAorI2RlZmluZSBHTF9ERUJVR19UWVBFX1BVU0hfR1JP
VVBfS0hSICAgICAgMHg4MjY5CisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfUE9QX0dST1VQX0tIUiAg
ICAgICAweDgyNkEKKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OX0tIUiAw
eDgyNkIKKyNkZWZpbmUgR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIX0tIUiAweDgyNkMK
KyNkZWZpbmUgR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEhfS0hSICAgIDB4ODI2RAorI2RlZmlu
ZSBHTF9CVUZGRVJfS0hSICAgICAgICAgICAgICAgICAgICAgMHg4MkUwCisjZGVmaW5lIEdMX1NI
QURFUl9LSFIgICAgICAgICAgICAgICAgICAgICAweDgyRTEKKyNkZWZpbmUgR0xfUFJPR1JBTV9L
SFIgICAgICAgICAgICAgICAgICAgIDB4ODJFMgorI2RlZmluZSBHTF9WRVJURVhfQVJSQVlfS0hS
ICAgICAgICAgICAgICAgMHg4MDc0CisjZGVmaW5lIEdMX1FVRVJZX0tIUiAgICAgICAgICAgICAg
ICAgICAgICAweDgyRTMKKyNkZWZpbmUgR0xfUFJPR1JBTV9QSVBFTElORV9LSFIgICAgICAgICAg
IDB4ODJFNAorI2RlZmluZSBHTF9TQU1QTEVSX0tIUiAgICAgICAgICAgICAgICAgICAgMHg4MkU2
CisjZGVmaW5lIEdMX01BWF9MQUJFTF9MRU5HVEhfS0hSICAgICAgICAgICAweDgyRTgKKyNkZWZp
bmUgR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIX0tIUiAgIDB4OTE0MworI2RlZmluZSBHTF9N
QVhfREVCVUdfTE9HR0VEX01FU1NBR0VTX0tIUiAgMHg5MTQ0CisjZGVmaW5lIEdMX0RFQlVHX0xP
R0dFRF9NRVNTQUdFU19LSFIgICAgICAweDkxNDUKKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlf
SElHSF9LSFIgICAgICAgIDB4OTE0NgorI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9NRURJVU1f
S0hSICAgICAgMHg5MTQ3CisjZGVmaW5lIEdMX0RFQlVHX1NFVkVSSVRZX0xPV19LSFIgICAgICAg
ICAweDkxNDgKKyNkZWZpbmUgR0xfREVCVUdfT1VUUFVUX0tIUiAgICAgICAgICAgICAgIDB4OTJF
MAorI2RlZmluZSBHTF9DT05URVhUX0ZMQUdfREVCVUdfQklUX0tIUiAgICAgMHgwMDAwMDAwMgor
I2RlZmluZSBHTF9TVEFDS19PVkVSRkxPV19LSFIgICAgICAgICAgICAgMHgwNTAzCisjZGVmaW5l
IEdMX1NUQUNLX1VOREVSRkxPV19LSFIgICAgICAgICAgICAweDA1MDQKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMREVCVUdNRVNTQUdFQ09OVFJPTEtIUlBST0MpIChHTGVudW0gc291
cmNlLCBHTGVudW0gdHlwZSwgR0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQgKmlkcywgR0xib29sZWFuIGVuYWJsZWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xERUJVR01FU1NBR0VJTlNFUlRLSFJQUk9DKSAoR0xlbnVtIHNvdXJjZSwgR0xlbnVt
IHR5cGUsIEdMdWludCBpZCwgR0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGxlbmd0aCwgY29uc3Qg
R0xjaGFyICpidWYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUJVR01FU1NB
R0VDQUxMQkFDS0tIUlBST0MpIChHTERFQlVHUFJPQ0tIUiBjYWxsYmFjaywgY29uc3Qgdm9pZCAq
dXNlclBhcmFtKTsKK3R5cGVkZWYgR0x1aW50IChHTF9BUElFTlRSWVAgUEZOR0xHRVRERUJVR01F
U1NBR0VMT0dLSFJQUk9DKSAoR0x1aW50IGNvdW50LCBHTHNpemVpIGJ1ZlNpemUsIEdMZW51bSAq
c291cmNlcywgR0xlbnVtICp0eXBlcywgR0x1aW50ICppZHMsIEdMZW51bSAqc2V2ZXJpdGllcywg
R0xzaXplaSAqbGVuZ3RocywgR0xjaGFyICptZXNzYWdlTG9nKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMUFVTSERFQlVHR1JPVVBLSFJQUk9DKSAoR0xlbnVtIHNvdXJjZSwgR0x1
aW50IGlkLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptZXNzYWdlKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUE9QREVCVUdHUk9VUEtIUlBST0MpICh2b2lkKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMT0JKRUNUTEFCRUxLSFJQUk9DKSAoR0xlbnVt
IGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICps
YWJlbCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE9CSkVDVExBQkVMS0hS
UFJPQykgKEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xPQkpFQ1RQVFJMQUJFTEtIUlBST0MpIChjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUT0JKRUNUUFRSTEFCRUxLSFJQUk9DKSAoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpsYWJlbCk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBPSU5URVJWS0hSUFJPQykgKEdMZW51bSBwbmFtZSwgdm9p
ZCAqKnBhcmFtcyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUiAoR0xlbnVtIHNvdXJjZSwgR0xl
bnVtIHR5cGUsIEdMZW51bSBzZXZlcml0eSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpp
ZHMsIEdMYm9vbGVhbiBlbmFibGVkKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERl
YnVnTWVzc2FnZUluc2VydEtIUiAoR0xlbnVtIHNvdXJjZSwgR0xlbnVtIHR5cGUsIEdMdWludCBp
ZCwgR0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpidWYpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIgKEdM
REVCVUdQUk9DS0hSIGNhbGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYW0pOworR0xfQVBJQ0FM
TCBHTHVpbnQgR0xfQVBJRU5UUlkgZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIgKEdMdWludCBjb3Vu
dCwgR0xzaXplaSBidWZTaXplLCBHTGVudW0gKnNvdXJjZXMsIEdMZW51bSAqdHlwZXMsIEdMdWlu
dCAqaWRzLCBHTGVudW0gKnNldmVyaXRpZXMsIEdMc2l6ZWkgKmxlbmd0aHMsIEdMY2hhciAqbWVz
c2FnZUxvZyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQdXNoRGVidWdHcm91cEtI
UiAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFy
ICptZXNzYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBvcERlYnVnR3JvdXBL
SFIgKHZvaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsT2JqZWN0TGFiZWxLSFIg
KEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdM
Y2hhciAqbGFiZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0T2JqZWN0TGFi
ZWxLSFIgKEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsT2JqZWN0UHRyTGFiZWxLSFIgKGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBsZW5ndGgs
IGNvbnN0IEdMY2hhciAqbGFiZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
T2JqZWN0UHRyTGFiZWxLSFIgKGNvbnN0IHZvaWQgKnB0ciwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0UG9pbnRlcnZLSFIgKEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7CiAjZW5kaWYK
KyNlbmRpZiAvKiBHTF9LSFJfZGVidWcgKi8KIAotLyogR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCAqLwotI2lmbmRlZiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCi0vKiBHTGVnbEltYWdlT0VT
IGRlZmluZWQgaW4gR0xfT0VTX0VHTF9pbWFnZSBhbHJlYWR5LiAqLwotI2RlZmluZSBHTF9URVhU
VVJFX0VYVEVSTkFMX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2NQot
I2RlZmluZSBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OEQ2NgotI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2NwotI2RlZmluZSBHTF9SRVFVSVJFRF9URVhUVVJF
X0lNQUdFX1VOSVRTX09FUyAgICAgICAgICAgICAgICAgICAgIDB4OEQ2OAotI2VuZGlmCisjaWZu
ZGVmIEdMX0tIUl9ub19lcnJvcgorI2RlZmluZSBHTF9LSFJfbm9fZXJyb3IgMQorI2RlZmluZSBH
TF9DT05URVhUX0ZMQUdfTk9fRVJST1JfQklUX0tIUiAgMHgwMDAwMDAwOAorI2VuZGlmIC8qIEdM
X0tIUl9ub19lcnJvciAqLwogCi0vKiBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50ICovCi0jaWZu
ZGVmIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQKLSNkZWZpbmUgR0xfVU5TSUdORURfSU5UICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDUKLSNlbmRpZgorI2lm
bmRlZiBHTF9LSFJfcm9idXN0X2J1ZmZlcl9hY2Nlc3NfYmVoYXZpb3IKKyNkZWZpbmUgR0xfS0hS
X3JvYnVzdF9idWZmZXJfYWNjZXNzX2JlaGF2aW9yIDEKKyNlbmRpZiAvKiBHTF9LSFJfcm9idXN0
X2J1ZmZlcl9hY2Nlc3NfYmVoYXZpb3IgKi8KIAotLyogR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFy
eSAqLwotI2lmbmRlZiBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5Ci0jZGVmaW5lIEdMX1BST0dS
QU1fQklOQVJZX0xFTkdUSF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NzQxCi0j
ZGVmaW5lIEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUyAgICAgICAgICAgICAgICAg
ICAgICAgMHg4N0ZFCi0jZGVmaW5lIEdMX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4N0ZGCisjaWZuZGVmIEdMX0tIUl9yb2J1c3RuZXNzCisj
ZGVmaW5lIEdMX0tIUl9yb2J1c3RuZXNzIDEKKyNkZWZpbmUgR0xfQ09OVEVYVF9ST0JVU1RfQUND
RVNTX0tIUiAgICAgIDB4OTBGMworI2RlZmluZSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfS0hS
ICAgICAgMHg4MjUyCisjZGVmaW5lIEdMX0dVSUxUWV9DT05URVhUX1JFU0VUX0tIUiAgICAgICAw
eDgyNTMKKyNkZWZpbmUgR0xfSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9LSFIgICAgIDB4ODI1NAor
I2RlZmluZSBHTF9VTktOT1dOX0NPTlRFWFRfUkVTRVRfS0hSICAgICAgMHg4MjU1CisjZGVmaW5l
IEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9LSFIgMHg4MjU2CisjZGVmaW5lIEdMX05P
X1JFU0VUX05PVElGSUNBVElPTl9LSFIgICAgICAweDgyNjEKKyNkZWZpbmUgR0xfQ09OVEVYVF9M
T1NUX0tIUiAgICAgICAgICAgICAgIDB4MDUwNwordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNLSFJQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQUROUElYRUxTS0hSUFJPQykgKEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUTlVOSUZPUk1GVktIUlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1JVktIUlBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNVUlWS0hSUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHVpbnQgKnBhcmFt
cyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJ
RU5UUlkgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzS0hSICh2b2lkKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFJlYWRuUGl4ZWxzS0hSIChHTGludCB4LCBHTGludCB5LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRuVW5pZm9ybWZ2S0hSIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldG5Vbmlmb3JtaXZLSFIgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldG5Vbmlmb3JtdWl2S0hSIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgYnVmU2l6ZSwgR0x1aW50ICpwYXJhbXMpOwogI2VuZGlmCisjZW5kaWYgLyogR0xfS0hSX3Jv
YnVzdG5lc3MgKi8KIAotLyogR0xfT0VTX21hcGJ1ZmZlciAqLwotI2lmbmRlZiBHTF9PRVNfbWFw
YnVmZmVyCi0jZGVmaW5lIEdMX1dSSVRFX09OTFlfT0VTICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4OEI5Ci0jZGVmaW5lIEdMX0JVRkZFUl9BQ0NFU1NfT0VTICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEJCCi0jZGVmaW5lIEdMX0JVRkZFUl9N
QVBQRURfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEJDCi0jZGVm
aW5lIEdMX0JVRkZFUl9NQVBfUE9JTlRFUl9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4OEJECi0jZW5kaWYKKyNpZm5kZWYgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19oZHIKKyNkZWZpbmUgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIgMQorI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSICAgMHg5M0IwCisjZGVmaW5lIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIgICAweDkzQjEKKyNkZWZpbmUgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfNXg1X0tIUiAgIDB4OTNCMgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ182eDVfS0hSICAgMHg5M0IzCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzZ4Nl9LSFIgICAweDkzQjQKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
UiAgIDB4OTNCNQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSICAgMHg5
M0I2CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIgICAweDkzQjcKKyNk
ZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIgIDB4OTNCOAorI2RlZmluZSBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiAgMHg5M0I5CisjZGVmaW5lIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDhfS0hSICAweDkzQkEKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfMTB4MTBfS0hSIDB4OTNCQgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIgMHg5M0JDCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEy
X0tIUiAweDkzQkQKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRf
S0hSIDB4OTNEMAorI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9L
SFIgMHg5M0QxCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tI
UiAweDkzRDIKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hS
IDB4OTNEMworI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIg
MHg5M0Q0CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiAw
eDkzRDUKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSIDB4
OTNENgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIgMHg5
M0Q3CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIgMHg5
M0Q4CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIgMHg5
M0Q5CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIgMHg5
M0RBCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSIDB4
OTNEQgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiAw
eDkzREMKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIg
MHg5M0RECisjZW5kaWYgLyogR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIgKi8K
IAotLyogR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsICovCi0jaWZuZGVmIEdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbAotI2RlZmluZSBHTF9ERVBUSF9TVEVOQ0lMX09FUyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGOQotI2RlZmluZSBHTF9VTlNJR05FRF9JTlRf
MjRfOF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGQQotI2RlZmluZSBH
TF9ERVBUSDI0X1NURU5DSUw4X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODhGMAotI2VuZGlmCi0KLS8qIEdMX09FU19yZXF1aXJlZF9pbnRlcm5hbGZvcm1hdCAqLwotI2lm
bmRlZiBHTF9PRVNfcmVxdWlyZWRfaW50ZXJuYWxmb3JtYXQgCi0jZGVmaW5lIEdMX0FMUEhBOF9P
RVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDNDCi0jZGVm
aW5lIEdMX0RFUFRIX0NPTVBPTkVOVDE2X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MUE1Ci0vKiByZXVzZSBHTF9ERVBUSF9DT01QT05FTlQyNF9PRVMgKi8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCi0vKiByZXVzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUyAqLyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0vKiByZXVzZSBHTF9ERVBUSF9DT01QT05FTlQz
Ml9PRVMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jZGVmaW5lIEdMX0xVTUlOQU5D
RTRfQUxQSEE0X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDQzCi0jZGVm
aW5lIEdMX0xVTUlOQU5DRThfQUxQSEE4X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MDQ1Ci0jZGVmaW5lIEdMX0xVTUlOQU5DRThfT0VTICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MDQwCi0jZGVmaW5lIEdMX1JHQkE0X09FUyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU2Ci0jZGVmaW5lIEdMX1JHQjVf
QTFfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU3Ci0j
ZGVmaW5lIEdMX1JHQjU2NV9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4RDYyCi0vKiByZXVzZSBHTF9SR0I4X09FUyAqLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAotLyogcmV1c2UgR0xfUkdCQThfT0VTICovICAKLS8qIHJldXNlIEdMX1JHQjEw
X0VYVCAqLwotLyogcmV1c2UgR0xfUkdCMTBfQTJfRVhUICovCi0jZW5kaWYgCi0KLS8qIEdMX09F
U19yZ2I4X3JnYmE4ICovCi0jaWZuZGVmIEdMX09FU19yZ2I4X3JnYmE4Ci0jZGVmaW5lIEdMX1JH
QjhfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDUx
Ci0jZGVmaW5lIEdMX1JHQkE4X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4MDU4Ci0jZW5kaWYKLQotLyogR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
ICovCi0jaWZuZGVmIEdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwotI2RlZmluZSBHTF9GUkFH
TUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyAgICAgICAgICAgICAgICAgIDB4OEI4Qgot
I2VuZGlmCi0KLS8qIEdMX09FU19zdGVuY2lsMSAqLwotI2lmbmRlZiBHTF9PRVNfc3RlbmNpbDEK
LSNkZWZpbmUgR0xfU1RFTkNJTF9JTkRFWDFfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhENDYKLSNlbmRpZgotCi0vKiBHTF9PRVNfc3RlbmNpbDQgKi8KLSNpZm5kZWYg
R0xfT0VTX3N0ZW5jaWw0Ci0jZGVmaW5lIEdMX1NURU5DSUxfSU5ERVg0X09FUyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDQ3Ci0jZW5kaWYKLQotI2lmbmRlZiBHTF9PRVNf
c3VyZmFjZWxlc3NfY29udGV4dAotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9VTkRFRklORURfT0VT
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIxOQotI2VuZGlmCi0KLS8qIEdMX09FU190
ZXh0dXJlXzNEICovCi0jaWZuZGVmIEdMX09FU190ZXh0dXJlXzNECi0jZGVmaW5lIEdMX1RFWFRV
UkVfV1JBUF9SX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDcyCi0j
ZGVmaW5lIEdMX1RFWFRVUkVfM0RfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MDZGCi0jZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR18zRF9PRVMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MDZBCi0jZGVmaW5lIEdMX01BWF8zRF9URVhUVVJFX1NJ
WkVfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDczCi0jZGVmaW5lIEdMX1NB
TVBMRVJfM0RfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjVG
Ci0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV8zRF9aT0ZGU0VUX09F
UyAgICAgICAgMHg4Q0Q0Ci0jZW5kaWYKLQotLyogR0xfT0VTX3RleHR1cmVfZmxvYXQgKi8KLS8q
IE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KLQotLyogR0xf
T0VTX3RleHR1cmVfZmxvYXRfbGluZWFyICovCi0vKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQg
YnkgdGhpcyBleHRlbnNpb24uICovCi0KLS8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQgKi8K
LSNpZm5kZWYgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdAotI2RlZmluZSBHTF9IQUxGX0ZMT0FU
X09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2MQotI2VuZGlm
Ci0KLS8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyICovCi0vKiBObyBuZXcgdG9r
ZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCi0KLS8qIEdMX09FU190ZXh0dXJl
X25wb3QgKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4g
Ki8KLQotLyogR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgKi8KLSNpZm5kZWYgR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QKLSNkZWZpbmUgR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1QjUKLSNlbmRpZgotCi0vKiBHTF9PRVNfdmVy
dGV4X2hhbGZfZmxvYXQgKi8KLS8qIEdMX0hBTEZfRkxPQVRfT0VTIGRlZmluZWQgaW4gR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCBhbHJlYWR5LiAqLwotCi0vKiBHTF9PRVNfdmVydGV4X3R5cGVf
MTBfMTBfMTBfMiAqLwotI2lmbmRlZiBHTF9PRVNfdmVydGV4X3R5cGVfMTBfMTBfMTBfMgotI2Rl
ZmluZSBHTF9VTlNJR05FRF9JTlRfMTBfMTBfMTBfMl9PRVMgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OERGNgotI2RlZmluZSBHTF9JTlRfMTBfMTBfMTBfMl9PRVMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OERGNwotI2VuZGlmCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgot
ICogS0hSIGV4dGVuc2lvbiB0b2tlbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotI2lmbmRlZiBH
TF9LSFJfZGVidWcKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIEdMREVCVUdQUk9DKShHTGVu
dW0gc291cmNlLEdMZW51bSB0eXBlLEdMdWludCBpZCxHTGVudW0gc2V2ZXJpdHksR0xzaXplaSBs
ZW5ndGgsY29uc3QgR0xjaGFyICptZXNzYWdlLEdMdm9pZCAqdXNlclBhcmFtKTsKLSNkZWZpbmUg
R0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgyNDIKLSNkZWZpbmUgR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEggICAgICAg
ICAgICAgICAgICAgICAweDgyNDMKLSNkZWZpbmUgR0xfREVCVUdfQ0FMTEJBQ0tfRlVOQ1RJT04g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNDQKLSNkZWZpbmUgR0xfREVCVUdfQ0FM
TEJBQ0tfVVNFUl9QQVJBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNDUKLSNkZWZp
bmUgR0xfREVCVUdfU09VUkNFX0FQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDgyNDYKLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX1dJTkRPV19TWVNURU0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDgyNDcKLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX1NIQURFUl9D
T01QSUxFUiAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNDgKLSNkZWZpbmUgR0xfREVCVUdf
U09VUkNFX1RISVJEX1BBUlRZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNDkKLSNk
ZWZpbmUgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDgyNEEKLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX09USEVSICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDgyNEIKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9FUlJPUiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNEMKLSNkZWZpbmUgR0xfREVC
VUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SICAgICAgICAgICAgICAgICAgICAgICAweDgyNEQK
LSNkZWZpbmUgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1IgICAgICAgICAgICAgICAg
ICAgICAgICAweDgyNEUKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDgyNEYKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9QRVJG
T1JNQU5DRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNTAKLSNkZWZpbmUgR0xf
REVCVUdfVFlQRV9PVEhFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgy
NTEKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9NQVJLRVIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDgyNjgKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9QVVNIX0dST1VQICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNjkKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9Q
T1BfR1JPVVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNkEKLSNkZWZpbmUg
R0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgyNkIKLSNkZWZpbmUgR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgyNkMKLSNkZWZpbmUgR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNkQKLSNkZWZpbmUgR0xfQlVGRkVSICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyRTAKLSNkZWZp
bmUgR0xfU0hBREVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDgyRTEKLSNkZWZpbmUgR0xfUFJPR1JBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDgyRTIKLSNkZWZpbmUgR0xfUVVFUlkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyRTMKLS8qIFBST0dSQU1fUElQRUxJ
TkUgb25seSBpbiBHTCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUg
R0xfU0FNUExFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgyRTYKLS8qIERJU1BMQVlfTElTVCBvbmx5IGluIEdMICovICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKLSNkZWZpbmUgR0xfTUFYX0xBQkVMX0xFTkdUSCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDgyRTgKLSNkZWZpbmUgR0xfTUFYX0RFQlVHX01FU1NB
R0VfTEVOR1RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxNDMKLSNkZWZpbmUgR0xf
TUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkx
NDQKLSNkZWZpbmUgR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDkxNDUKLSNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfSElHSCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxNDYKLSNkZWZpbmUgR0xfREVCVUdfU0VWRVJJ
VFlfTUVESVVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxNDcKLSNkZWZpbmUg
R0xfREVCVUdfU0VWRVJJVFlfTE9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDkxNDgKLSNkZWZpbmUgR0xfREVCVUdfT1VUUFVUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDkyRTAKLSNkZWZpbmUgR0xfQ09OVEVYVF9GTEFHX0RFQlVHX0JJVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEdMX1NUQUNL
X09WRVJGTE9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNTAzCi0j
ZGVmaW5lIEdMX1NUQUNLX1VOREVSRkxPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwNTA0Ci0jZW5kaWYKLQogI2lmbmRlZiBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lv
bl9hc3RjX2xkcgotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OTNCMAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q181eDRfS0hSICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCMQotI2RlZmluZSBHTF9DT01Q
UkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCMgot
I2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OTNCMwotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OTNCNAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ184eDVfS0hSICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCNQotI2RlZmluZSBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNC
NgotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OTNCNwotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tI
UiAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCOAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg2X0tIUiAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCOQotI2RlZmluZSBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiAgICAgICAgICAgICAgICAgICAgICAgIDB4
OTNCQQotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIgICAgICAgICAg
ICAgICAgICAgICAgIDB4OTNCQgotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngx
MF9LSFIgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCQwotI2RlZmluZSBHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMl9LSFIgICAgICAgICAgICAgICAgICAgICAgIDB4OTNCRAotI2RlZmlu
ZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIgICAgICAgICAgICAgICAg
IDB4OTNEMAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIg
ICAgICAgICAgICAgICAgIDB4OTNEMQotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzV4NV9LSFIgICAgICAgICAgICAgICAgIDB4OTNEMgotI2RlZmluZSBHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIgICAgICAgICAgICAgICAgIDB4OTNEMwotI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIgICAgICAgICAgICAg
ICAgIDB4OTNENAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9L
SFIgICAgICAgICAgICAgICAgIDB4OTNENQotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzh4Nl9LSFIgICAgICAgICAgICAgICAgIDB4OTNENgotI2RlZmluZSBHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIgICAgICAgICAgICAgICAgIDB4OTNENwot
I2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSICAgICAgICAg
ICAgICAgIDB4OTNEOAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEw
eDZfS0hSICAgICAgICAgICAgICAgIDB4OTNEOQotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEweDhfS0hSICAgICAgICAgICAgICAgIDB4OTNEQQotI2RlZmluZSBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiAgICAgICAgICAgICAgIDB4OTNE
QgotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiAgICAg
ICAgICAgICAgIDB4OTNEQwotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzEyeDEyX0tIUiAgICAgICAgICAgICAgIDB4OTNERAotI2VuZGlmCisjZGVmaW5lIEdMX0tIUl90
ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIDEKKyNlbmRpZiAvKiBHTF9LSFJfdGV4dHVyZV9j
b21wcmVzc2lvbl9hc3RjX2xkciAqLwogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKLSAqIEFNRCBleHRl
bnNpb24gdG9rZW5zCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIEdMX0FNRF9jb21wcmVzc2Vk
XzNEQ190ZXh0dXJlICovCi0jaWZuZGVmIEdMX0FNRF9jb21wcmVzc2VkXzNEQ190ZXh0dXJlCi0j
ZGVmaW5lIEdMXzNEQ19YX0FNRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4N0Y5Ci0jZGVmaW5lIEdMXzNEQ19YWV9BTUQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4N0ZBCisjaWZuZGVmIEdMX09FU19FR0xfaW1hZ2UKKyNk
ZWZpbmUgR0xfT0VTX0VHTF9pbWFnZSAxCit0eXBlZGVmIHZvaWQgKkdMZWdsSW1hZ2VPRVM7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VT
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7CisjaWZkZWYgR0xfR0xF
WFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVMgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9y
YWdlT0VTIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKICNlbmRpZgorI2Vu
ZGlmIC8qIEdMX09FU19FR0xfaW1hZ2UgKi8KIAotLyogR0xfQU1EX2NvbXByZXNzZWRfQVRDX3Rl
eHR1cmUgKi8KLSNpZm5kZWYgR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUKLSNkZWZpbmUg
R0xfQVRDX1JHQl9BTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhDOTIKLSNkZWZpbmUgR0xfQVRDX1JHQkFfRVhQTElDSVRfQUxQSEFfQU1EICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhDOTMKLSNkZWZpbmUgR0xfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FM
UEhBX0FNRCAgICAgICAgICAgICAgICAgICAgICAweDg3RUUKLSNlbmRpZgorI2lmbmRlZiBHTF9P
RVNfRUdMX2ltYWdlX2V4dGVybmFsCisjZGVmaW5lIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwg
MQorI2RlZmluZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAgICAgICAgICAgMHg4RDY1CisjZGVm
aW5lIEdMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVMgICAweDhENjcKKyNkZWZpbmUgR0xf
UkVRVUlSRURfVEVYVFVSRV9JTUFHRV9VTklUU19PRVMgMHg4RDY4CisjZGVmaW5lIEdMX1NBTVBM
RVJfRVhURVJOQUxfT0VTICAgICAgICAgICAweDhENjYKKyNlbmRpZiAvKiBHTF9PRVNfRUdMX2lt
YWdlX2V4dGVybmFsICovCiAKLS8qIEdMX0FNRF9wZXJmb3JtYW5jZV9tb25pdG9yICovCi0jaWZu
ZGVmIEdMX0FNRF9wZXJmb3JtYW5jZV9tb25pdG9yCi0jZGVmaW5lIEdMX0NPVU5URVJfVFlQRV9B
TUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QkMwCi0jZGVmaW5lIEdM
X0NPVU5URVJfUkFOR0VfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
QkMxCi0jZGVmaW5lIEdMX1VOU0lHTkVEX0lOVDY0X0FNRCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4QkMyCi0jZGVmaW5lIEdMX1BFUkNFTlRBR0VfQU1EICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QkMzCi0jZGVmaW5lIEdMX1BFUkZNT05fUkVT
VUxUX0FWQUlMQUJMRV9BTUQgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QkM0Ci0jZGVmaW5l
IEdMX1BFUkZNT05fUkVTVUxUX1NJWkVfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4QkM1Ci0jZGVmaW5lIEdMX1BFUkZNT05fUkVTVUxUX0FNRCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4QkM2Ci0jZW5kaWYKKyNpZm5kZWYgR0xfT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbF9lc3NsMworI2RlZmluZSBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIDEK
KyNlbmRpZiAvKiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzICovCiAKLS8qIEdMX0FN
RF9wcm9ncmFtX2JpbmFyeV9aNDAwICovCi0jaWZuZGVmIEdMX0FNRF9wcm9ncmFtX2JpbmFyeV9a
NDAwCi0jZGVmaW5lIEdMX1o0MDBfQklOQVJZX0FNRCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4NzQwCi0jZW5kaWYKKyNpZm5kZWYgR0xfT0VTX2NvbXByZXNzZWRfRVRD
MV9SR0I4X3N1Yl90ZXh0dXJlCisjZGVmaW5lIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF9z
dWJfdGV4dHVyZSAxCisjZW5kaWYgLyogR0xfT0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3N1Yl90
ZXh0dXJlICovCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgotICogQU5HTEUgZXh0ZW5zaW9uIHRva2Vu
cwotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlICovCi0j
aWZuZGVmIEdMX0FOR0xFX2RlcHRoX3RleHR1cmUKLSNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5U
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MDIKLSNkZWZpbmUgR0xf
REVQVEhfU1RFTkNJTF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0
RjkKLSNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDE0MDMKLSNkZWZpbmUgR0xfVU5TSUdORURfSU5UICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDUKLSNkZWZpbmUgR0xfVU5TSUdORURfSU5U
XzI0XzhfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0RkEKLSNkZWZpbmUg
R0xfREVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgxQTUKLSNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgxQTcKLSNkZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4RjAKLSNlbmRpZgotCi0vKiBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0ICovCi0jaWZuZGVmIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQK
LSNkZWZpbmUgR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhDQTgKLSNkZWZpbmUgR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhDQTkKLSNkZWZpbmUgR0xfRFJBV19GUkFNRUJVRkZF
Ul9CSU5ESU5HX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAweDhDQTYKLSNkZWZpbmUgR0xf
UkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAweDhD
QUEKLSNlbmRpZgotCi0vKiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAqLwotI2lm
bmRlZiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotI2RlZmluZSBHTF9SRU5ERVJC
VUZGRVJfU0FNUExFU19BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENBQgotI2Rl
ZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFX0FOR0xFICAgICAgICAg
ICAgIDB4OEQ1NgotI2RlZmluZSBHTF9NQVhfU0FNUExFU19BTkdMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEQ1NwotI2VuZGlmCi0KLS8qIEdMX0FOR0xFX2luc3RhbmNl
ZF9hcnJheXMgKi8KLSNpZm5kZWYgR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyAKLSNkZWZpbmUg
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFICAgICAgICAgICAgICAgICAgICAw
eDg4RkUKLSNlbmRpZgotCi0vKiBHTF9BTkdMRV9wYWNrX3JldmVyc2Vfcm93X29yZGVyICovCi0j
aWZuZGVmIEdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIgCi0jZGVmaW5lIEdMX1BBQ0tf
UkVWRVJTRV9ST1dfT1JERVJfQU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgMHg5M0E0Ci0j
ZW5kaWYKLQotLyogR0xfQU5HTEVfcHJvZ3JhbV9iaW5hcnkgKi8KLSNpZm5kZWYgR0xfQU5HTEVf
cHJvZ3JhbV9iaW5hcnkKLSNkZWZpbmUgR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDkzQTYKLSNlbmRpZgotCi0vKiBHTF9BTkdMRV90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDMgKi8KLSNpZm5kZWYgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQzIAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFICAg
ICAgICAgICAgICAgICAgICAgIDB4ODNGMgotI2VuZGlmCi0KLS8qIEdMX0FOR0xFX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0NSAqLwotI2lmbmRlZiBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDUgCi0jZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUgICAgICAg
ICAgICAgICAgICAgICAgMHg4M0YzCi0jZW5kaWYKLQotLyogR0xfQU5HTEVfdGV4dHVyZV91c2Fn
ZSAqLwotI2lmbmRlZiBHTF9BTkdMRV90ZXh0dXJlX3VzYWdlIAotI2RlZmluZSBHTF9URVhUVVJF
X1VTQUdFX0FOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNBMgotI2Rl
ZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FOR0xFICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OTNBMwotI2VuZGlmCi0KLS8qIEdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZSAqLwotI2lmbmRlZiBHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UgCi0jZGVmaW5l
IEdMX1RSQU5TTEFURURfU0hBREVSX1NPVVJDRV9MRU5HVEhfQU5HTEUgICAgICAgICAgICAgICAg
MHg5M0EwCi0jZW5kaWYKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBBUFBMRSBleHRlbnNpb24g
dG9rZW5zCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIEdMX0FQUExFX2NvcHlfdGV4dHVyZV9s
ZXZlbHMgKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4g
Ki8KLSAgICAKLS8qIEdMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlICovCi0jaWZuZGVm
IEdMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCi0jZGVmaW5lIEdMX1JFTkRFUkJVRkZF
Ul9TQU1QTEVTX0FQUExFICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0FCCi0jZGVmaW5l
IEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQVBQTEUgICAgICAgICAgICAg
MHg4RDU2Ci0jZGVmaW5lIEdMX01BWF9TQU1QTEVTX0FQUExFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4RDU3Ci0jZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZGRVJfQVBQTEUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0E4Ci0jZGVmaW5lIEdMX0RSQVdfRlJB
TUVCVUZGRVJfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0E5Ci0jZGVm
aW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BUFBMRSAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0E2Ci0jZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZGRVJfQklORElOR19BUFBMRSAgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0FBCi0jZW5kaWYKLQotLyogR0xfQVBQTEVfcmdiXzQyMiAq
LwotI2lmbmRlZiBHTF9BUFBMRV9yZ2JfNDIyCi0jZGVmaW5lIEdMX1JHQl80MjJfQVBQTEUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QTFGCi0jZGVmaW5lIEdMX1VO
U0lHTkVEX1NIT1JUXzhfOF9BUFBMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NUJB
Ci0jZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzhfOF9SRVZfQVBQTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4NUJCCi0jZW5kaWYKLQotLyogR0xfQVBQTEVfc3luYyAqLwotI2lmbmRlZiBH
TF9BUFBMRV9zeW5jCi0KLSNpZm5kZWYgX19nbDNfaF8KLS8qIFRoZXNlIHR5cGVzIGFyZSBkZWZp
bmVkIHdpdGggcmVmZXJlbmNlIHRvIDxpbnR0eXBlcy5oPgotICogaW4gdGhlIEFwcGxlIGV4dGVu
c2lvbiBzcGVjLCBidXQgaGVyZSB3ZSB1c2UgdGhlIEtocm9ub3MKLSAqIHBvcnRhYmxlIHR5cGVz
IGluIGtocnBsYXRmb3JtLmgsIGFuZCBhc3N1bWUgdGhvc2UgdHlwZXMgCi0gKiBhcmUgYWx3YXlz
IGRlZmluZWQuCi0gKiBJZiBhbnkgb3RoZXIgZXh0ZW5zaW9ucyB1c2luZyB0aGVzZSB0eXBlcyBh
cmUgZGVmaW5lZCwgCi0gKiB0aGUgdHlwZWRlZnMgbXVzdCBtb3ZlIG91dCBvZiB0aGlzIGJsb2Nr
IGFuZCBiZSBzaGFyZWQuCi0gKi8KLXR5cGVkZWYga2hyb25vc19pbnQ2NF90IEdMaW50NjQ7Ci10
eXBlZGVmIGtocm9ub3NfdWludDY0X3QgR0x1aW50NjQ7Ci10eXBlZGVmIHN0cnVjdCBfX0dMc3lu
YyAqR0xzeW5jOwotI2VuZGlmCi0KLSNkZWZpbmUgR0xfU1lOQ19PQkpFQ1RfQVBQTEUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhBNTMKLSNkZWZpbmUgR0xfTUFYX1NFUlZF
Ul9XQUlUX1RJTUVPVVRfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAweDkxMTEKLSNkZWZp
bmUgR0xfT0JKRUNUX1RZUEVfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDkxMTIKLSNkZWZpbmUgR0xfU1lOQ19DT05ESVRJT05fQVBQTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDkxMTMKLSNkZWZpbmUgR0xfU1lOQ19TVEFUVVNfQVBQTEUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMTQKLSNkZWZpbmUgR0xfU1lOQ19G
TEFHU19BUFBMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMTUKLSNk
ZWZpbmUgR0xfU1lOQ19GRU5DRV9BUFBMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDkxMTYKLSNkZWZpbmUgR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEVfQVBQTEUg
ICAgICAgICAgICAgICAgICAgICAweDkxMTcKLSNkZWZpbmUgR0xfVU5TSUdOQUxFRF9BUFBMRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMTgKLSNkZWZpbmUgR0xfU0lH
TkFMRURfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMTkK
LSNkZWZpbmUgR0xfQUxSRUFEWV9TSUdOQUxFRF9BUFBMRSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDkxMUEKLSNkZWZpbmUgR0xfVElNRU9VVF9FWFBJUkVEX0FQUExFICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDkxMUIKLSNkZWZpbmUgR0xfQ09ORElUSU9OX1NBVElT
RklFRF9BUFBMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMUMKLSNkZWZpbmUgR0xf
V0FJVF9GQUlMRURfQVBQTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkx
MUQKLSNkZWZpbmUgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVRfQVBQTEUgICAgICAgICAgICAg
ICAgICAgICAgICAweDAwMDAwMDAxCi0jZGVmaW5lIEdMX1RJTUVPVVRfSUdOT1JFRF9BUFBMRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRkZGRkZGRkZGdWxsCi0jZW5k
aWYKLQotLyogR0xfQVBQTEVfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggKi8KLSNpZm5kZWYgR0xf
QVBQTEVfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSNkZWZpbmUgR0xfQkdSQV9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKLSNlbmRpZgotCi0v
KiBHTF9BUFBMRV90ZXh0dXJlX21heF9sZXZlbCAqLwotI2lmbmRlZiBHTF9BUFBMRV90ZXh0dXJl
X21heF9sZXZlbAotI2RlZmluZSBHTF9URVhUVVJFX01BWF9MRVZFTF9BUFBMRSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODEzRAotI2VuZGlmCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgot
ICogQVJNIGV4dGVuc2lvbiB0b2tlbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogR0xfQVJN
X21hbGlfcHJvZ3JhbV9iaW5hcnkgKi8KLSNpZm5kZWYgR0xfQVJNX21hbGlfcHJvZ3JhbV9iaW5h
cnkKLSNkZWZpbmUgR0xfTUFMSV9QUk9HUkFNX0JJTkFSWV9BUk0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhGNjEKLSNlbmRpZgotCi0vKiBHTF9BUk1fbWFsaV9zaGFkZXJfYmluYXJ5
ICovCi0jaWZuZGVmIEdMX0FSTV9tYWxpX3NoYWRlcl9iaW5hcnkKLSNkZWZpbmUgR0xfTUFMSV9T
SEFERVJfQklOQVJZX0FSTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhGNjAKLSNl
bmRpZgotCi0vKiBHTF9BUk1fcmdiYTggKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBi
eSB0aGlzIGV4dGVuc2lvbi4gKi8KLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBFWFQgZXh0ZW5z
aW9uIHRva2VucwotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBHTF9FWFRfYmxlbmRfbWlubWF4
ICovCi0jaWZuZGVmIEdMX0VYVF9ibGVuZF9taW5tYXgKLSNkZWZpbmUgR0xfTUlOX0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDcKLSNkZWZpbmUg
R0xfTUFYX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgwMDgKLSNlbmRpZgotCi0vKiBHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQgKi8KLSNp
Zm5kZWYgR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Ci0jZGVmaW5lIEdMX1JHQkExNkZf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODFBCi0jZGVm
aW5lIEdMX1JHQjE2Rl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4ODFCCi0jZGVmaW5lIEdMX1JHMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MjJGCi0jZGVmaW5lIEdMX1IxNkZfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJECi0jZGVmaW5lIEdMX0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEVfRVhUICAgICAgICAgICAgMHg4MjExCi0j
ZGVmaW5lIEdMX1VOU0lHTkVEX05PUk1BTElaRURfRVhUICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4QzE3Ci0jZW5kaWYKLQotLyogR0xfRVhUX2RlYnVnX2xhYmVsICovCi0jaWZuZGVm
IEdMX0VYVF9kZWJ1Z19sYWJlbAotI2RlZmluZSBHTF9QUk9HUkFNX1BJUEVMSU5FX09CSkVDVF9F
WFQgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEE0RgotI2RlZmluZSBHTF9QUk9HUkFNX09C
SkVDVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI0MAotI2RlZmlu
ZSBHTF9TSEFERVJfT0JKRUNUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OEI0OAotI2RlZmluZSBHTF9CVUZGRVJfT0JKRUNUX0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OTE1MQotI2RlZmluZSBHTF9RVUVSWV9PQkpFQ1RfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTE1MwotI2RlZmluZSBHTF9WRVJURVhf
QVJSQVlfT0JKRUNUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTE1NAotI2Vu
ZGlmCi0KLS8qIEdMX0VYVF9kZWJ1Z19tYXJrZXIgKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9k
dWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KLQotLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZm
ZXIgKi8KLSNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKLSNkZWZpbmUgR0xfQ09M
T1JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAK
LSNkZWZpbmUgR0xfREVQVEhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDE4MDEKLSNkZWZpbmUgR0xfU1RFTkNJTF9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDE4MDIKLSNlbmRpZgotCi0vKiBHTF9FWFRfbWFwX2J1
ZmZlcl9yYW5nZSAqLwotI2lmbmRlZiBHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZQotI2RlZmluZSBH
TF9NQVBfUkVBRF9CSVRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MDAwMQotI2RlZmluZSBHTF9NQVBfV1JJVEVfQklUX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MDAwMgotI2RlZmluZSBHTF9NQVBfSU5WQUxJREFURV9SQU5HRV9CSVRf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBHTF9NQVBfSU5WQUxJ
REFURV9CVUZGRVJfQklUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwOAotI2RlZmlu
ZSBHTF9NQVBfRkxVU0hfRVhQTElDSVRfQklUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MDAxMAotI2RlZmluZSBHTF9NQVBfVU5TWU5DSFJPTklaRURfQklUX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4MDAyMAotI2VuZGlmCi0KLS8qIEdMX0VYVF9tdWx0aXNhbXBsZWRf
cmVuZGVyX3RvX3RleHR1cmUgKi8KLSNpZm5kZWYgR0xfRVhUX211bHRpc2FtcGxlZF9yZW5kZXJf
dG9fdGV4dHVyZQotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfU0FN
UExFU19FWFQgICAgICAgICAgIDB4OEQ2QwotLyogcmV1c2UgdmFsdWVzIGZyb20gR0xfRVhUX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIChkZXNrdG9wIGV4dGVuc2lvbikgKi8gCi0jZGVmaW5lIEdM
X1JFTkRFUkJVRkZFUl9TQU1QTEVTX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
Q0FCCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfRVhUICAg
ICAgICAgICAgICAgMHg4RDU2Ci0jZGVmaW5lIEdMX01BWF9TQU1QTEVTX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDU3Ci0jZW5kaWYKLQotLyogR0xfRVhUX211
bHRpdmlld19kcmF3X2J1ZmZlcnMgKi8KLSNpZm5kZWYgR0xfRVhUX211bHRpdmlld19kcmF3X2J1
ZmZlcnMKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVF9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDkwRjAKLSNkZWZpbmUgR0xfTVVMVElWSUVXX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkwRjEKLSNkZWZpbmUgR0xfRFJBV19CVUZG
RVJfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDMDEKLSNkZWZp
bmUgR0xfUkVBRF9CVUZGRVJfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDBDMDIKLSNkZWZpbmUgR0xfTUFYX01VTFRJVklFV19CVUZGRVJTX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDkwRjIKLSNlbmRpZgotCi0vKiBHTF9FWFRfbXVsdGlfZHJhd19h
cnJheXMgKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4g
Ki8KLQotLyogR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuICovCi0jaWZuZGVmIEdMX0VY
VF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbgotI2RlZmluZSBHTF9BTllfU0FNUExFU19QQVNTRURf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEMyRgotI2RlZmluZSBHTF9BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCAgICAgICAgICAgICAgICAgIDB4OEQ2QQot
I2RlZmluZSBHTF9DVVJSRU5UX1FVRVJZX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODg2NQotI2RlZmluZSBHTF9RVUVSWV9SRVNVTFRfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODg2NgotI2RlZmluZSBHTF9RVUVSWV9SRVNVTFRfQVZB
SUxBQkxFX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODg2NwotI2VuZGlmCi0KLS8q
IEdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhICovCi0jaWZuZGVmIEdMX0VYVF9yZWFkX2Zvcm1hdF9i
Z3JhCi0jZGVmaW5lIEdMX0JHUkFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4MEUxCi0jZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVW
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4MzY1Ci0jZGVmaW5lIEdMX1VOU0lHTkVEX1NI
T1JUXzFfNV81XzVfUkVWX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4MzY2Ci0jZW5kaWYK
LQotLyogR0xfRVhUX3JvYnVzdG5lc3MgKi8KLSNpZm5kZWYgR0xfRVhUX3JvYnVzdG5lc3MKLS8q
IHJldXNlIEdMX05PX0VSUk9SICovCi0jZGVmaW5lIEdMX0dVSUxUWV9DT05URVhUX1JFU0VUX0VY
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjUzCi0jZGVmaW5lIEdMX0lOTk9DRU5U
X0NPTlRFWFRfUkVTRVRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjU0Ci0jZGVm
aW5lIEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MjU1Ci0jZGVmaW5lIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg5MEYzCi0jZGVmaW5lIEdMX1JFU0VUX05PVElGSUNBVElPTl9T
VFJBVEVHWV9FWFQgICAgICAgICAgICAgICAgICAgICAgMHg4MjU2Ci0jZGVmaW5lIEdMX0xPU0Vf
Q09OVEVYVF9PTl9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjUyCi0j
ZGVmaW5lIEdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MjYxCi0jZW5kaWYKLQotLyogR0xfRVhUX3NlcGFyYXRlX3NoYWRlcl9vYmplY3Rz
ICovCi0jaWZuZGVmIEdMX0VYVF9zZXBhcmF0ZV9zaGFkZXJfb2JqZWN0cwotI2RlZmluZSBHTF9W
RVJURVhfU0hBREVSX0JJVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAw
MDAwMDEKLSNkZWZpbmUgR0xfRlJBR01FTlRfU0hBREVSX0JJVF9FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIEdMX0FMTF9TSEFERVJfQklUU19FWFQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgotI2RlZmluZSBHTF9Q
Uk9HUkFNX1NFUEFSQUJMRV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1
OAotI2RlZmluZSBHTF9BQ1RJVkVfUFJPR1JBTV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODI1OQotI2RlZmluZSBHTF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkdfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1QQotI2VuZGlmCi0KLS8qIEdMX0VYVF9zaGFk
ZXJfZnJhbWVidWZmZXJfZmV0Y2ggKi8KLSNpZm5kZWYgR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaAotI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVJfRElTQ0FSRFNfU0FNUExFU19FWFQg
ICAgICAgICAgICAgICAgIDB4OEE1MgotI2VuZGlmCi0KLS8qIEdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QgKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4g
Ki8KLQotLyogR0xfRVhUX3NoYWRvd19zYW1wbGVycyAqLwotI2lmbmRlZiBHTF9FWFRfc2hhZG93
X3NhbXBsZXJzCi0jZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4ODRDCi0jZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5D
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODRECi0jZGVmaW5lIEdMX0NPTVBB
UkVfUkVGX1RPX1RFWFRVUkVfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODRFCi0j
ZGVmaW5lIEdMX1NBTVBMRVJfMkRfU0hBRE9XX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4QjYyCi0jZW5kaWYKLQotLyogR0xfRVhUX3NSR0IgKi8KLSNpZm5kZWYgR0xfRVhU
X3NSR0IKLSNkZWZpbmUgR0xfU1JHQl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhDNDAKLSNkZWZpbmUgR0xfU1JHQl9BTFBIQV9FWFQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDNDIKLSNkZWZpbmUgR0xfU1JHQjhfQUxQ
SEE4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDNDMKLSNkZWZp
bmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQgICAgICAgICAg
ICAweDgyMTAKLSNlbmRpZgotCi0vKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxICov
Ci0jaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLSNkZWZpbmUgR0xfQ09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAweDgzRjAK
LSNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAweDgzRjEKLSNlbmRpZgotCi0vKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMgKi8KLSNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCi0jZGVm
aW5lIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4NEZFCi0jZGVmaW5lIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgMHg4NEZGCi0jZW5kaWYKLQotLyogR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4ICovCi0jaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAot
I2RlZmluZSBHTF9CR1JBX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODBFMQotI2VuZGlmCi0KLS8qIEdMX0VYVF90ZXh0dXJlX3JnICovCi0jaWZuZGVm
IEdMX0VYVF90ZXh0dXJlX3JnCi0jZGVmaW5lIEdMX1JFRF9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTAzCi0jZGVmaW5lIEdMX1JHX0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjI3Ci0jZGVmaW5l
IEdMX1I4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4MjI5Ci0jZGVmaW5lIEdMX1JHOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4MjJCCi0jZW5kaWYKLQotLyogR0xfRVhUX3RleHR1cmVfc3RvcmFn
ZSAqLwotI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCi0jZGVmaW5lIEdMX1RFWFRVUkVf
SU1NVVRBQkxFX0ZPUk1BVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTJGCi0jZGVm
aW5lIEdMX0FMUEhBOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MDNDICAKLSNkZWZpbmUgR0xfTFVNSU5BTkNFOF9FWFQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDgwNDAKLSNkZWZpbmUgR0xfTFVNSU5BTkNFOF9BTFBIQThf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNDUKLSNkZWZpbmUgR0xfUkdC
QTMyRl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MTQg
IAotI2RlZmluZSBHTF9SR0IzMkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODgxNQotI2RlZmluZSBHTF9BTFBIQTMyRl9FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgxNgotI2RlZmluZSBHTF9MVU1JTkFOQ0UzMkZf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgxOAotI2RlZmluZSBH
TF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODgxOQotLyogcmV1c2UgR0xfUkdCQTE2Rl9FWFQgKi8KLS8qIHJldXNlIEdMX1JHQjE2Rl9FWFQg
Ki8KLSNkZWZpbmUgR0xfQUxQSEExNkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDg4MUMKLSNkZWZpbmUgR0xfTFVNSU5BTkNFMTZGX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUUKLSNkZWZpbmUgR0xfTFVNSU5BTkNFX0FM
UEhBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUYKLSNkZWZpbmUg
R0xfUkdCMTBfQTJfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgwNTkgIAotI2RlZmluZSBHTF9SR0IxMF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODA1MgotI2RlZmluZSBHTF9CR1JBOF9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTNBMQotI2RlZmluZSBHTF9SOF9FWFQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyOQotI2Rl
ZmluZSBHTF9SRzhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODIyQgotI2RlZmluZSBHTF9SMzJGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODIyRSAgCi0jZGVmaW5lIEdMX1JHMzJGX0VYVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjMwCi0jZGVmaW5lIEdMX1Ix
NkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJE
Ci0jZGVmaW5lIEdMX1JHMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4MjJGCi0jZW5kaWYKLQotLyogR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEw
XzEwX1JFViAqLwotI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWCi0j
ZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVl9FWFQgICAgICAgICAgICAgICAg
ICAgICAgMHg4MzY4Ci0jZW5kaWYKLQotLyogR0xfRVhUX3VucGFja19zdWJpbWFnZSAqLwotI2lm
bmRlZiBHTF9FWFRfdW5wYWNrX3N1YmltYWdlCi0jZGVmaW5lIEdMX1VOUEFDS19ST1dfTEVOR1RI
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQ0YyCi0jZGVmaW5lIEdMX1VO
UEFDS19TS0lQX1JPV1NfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQ0Yz
Ci0jZGVmaW5lIEdMX1VOUEFDS19TS0lQX1BJWEVMU19FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHgwQ0Y0Ci0jZW5kaWYKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBETVAgZXh0
ZW5zaW9uIHRva2VucwotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBHTF9ETVBfc2hhZGVyX2Jp
bmFyeSAqLwotI2lmbmRlZiBHTF9ETVBfc2hhZGVyX2JpbmFyeQotI2RlZmluZSBHTF9TSEFERVJf
QklOQVJZX0RNUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTI1MAotI2Vu
ZGlmCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgotICogRkogZXh0ZW5zaW9uIHRva2VucwotICotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0qLwotCi0vKiBHTF9GSl9zaGFkZXJfYmluYXJ5X0dDQ1NPICovCi0jaWZuZGVm
IEdMX0ZKX3NoYWRlcl9iaW5hcnlfR0NDU08KLSNkZWZpbmUgR0xfR0NDU09fU0hBREVSX0JJTkFS
WV9GICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkyNjAKLSNlbmRpZgotCi0vKi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSoKLSAqIElNRyBleHRlbnNpb24gdG9rZW5zCi0gKi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCi0KLS8qIEdMX0lNR19wcm9ncmFtX2JpbmFyeSAqLwotI2lmbmRlZiBHTF9JTUdfcHJvZ3Jh
bV9iaW5hcnkKLSNkZWZpbmUgR0xfU0dYX1BST0dSQU1fQklOQVJZX0lNRyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDkxMzAKLSNlbmRpZgotCi0vKiBHTF9JTUdfcmVhZF9mb3JtYXQg
Ki8KLSNpZm5kZWYgR0xfSU1HX3JlYWRfZm9ybWF0Ci0jZGVmaW5lIEdMX0JHUkFfSU1HICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MEUxCi0jZGVmaW5lIEdM
X1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0lNRyAgICAgICAgICAgICAgICAgICAgICAgMHg4
MzY1Ci0jZW5kaWYKLQotLyogR0xfSU1HX3NoYWRlcl9iaW5hcnkgKi8KLSNpZm5kZWYgR0xfSU1H
X3NoYWRlcl9iaW5hcnkKLSNkZWZpbmUgR0xfU0dYX0JJTkFSWV9JTUcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhDMEEKLSNlbmRpZgotCi0vKiBHTF9JTUdfdGV4dHVy
ZV9jb21wcmVzc2lvbl9wdnJ0YyAqLwotI2lmbmRlZiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lv
bl9wdnJ0YwotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HICAgICAg
ICAgICAgICAgICAgICAgIDB4OEMwMAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQl9QVlJUQ18y
QlBQVjFfSU1HICAgICAgICAgICAgICAgICAgICAgIDB4OEMwMQotI2RlZmluZSBHTF9DT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyAgICAgICAgICAgICAgICAgICAgIDB4OEMwMgotI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyAgICAgICAgICAgICAgICAg
ICAgIDB4OEMwMwotI2VuZGlmCi0KLS8qIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRj
MiAqLwotI2lmbmRlZiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YzIKLSNkZWZpbmUg
R0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMl9JTUcgICAgICAgICAgICAgICAgICAgICAw
eDkxMzcKLSNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMl9JTUcgICAgICAg
ICAgICAgICAgICAgICAweDkxMzgKLSNlbmRpZgotCi0vKiBHTF9JTUdfbXVsdGlzYW1wbGVkX3Jl
bmRlcl90b190ZXh0dXJlICovCi0jaWZuZGVmIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3Rv
X3RleHR1cmUKLSNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1HICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDkxMzMKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVU
RV9NVUxUSVNBTVBMRV9JTUcgICAgICAgICAgICAgICAweDkxMzQKLSNkZWZpbmUgR0xfTUFYX1NB
TVBMRVNfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMzUKLSNk
ZWZpbmUgR0xfVEVYVFVSRV9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDkxMzYKLSNlbmRpZgotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKLSAqIE5WIGV4dGVuc2lv
biB0b2tlbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogR0xfTlZfY292ZXJhZ2Vfc2FtcGxl
ICovCi0jaWZuZGVmIEdMX05WX2NvdmVyYWdlX3NhbXBsZQotI2RlZmluZSBHTF9DT1ZFUkFHRV9D
T01QT05FTlRfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMAotI2RlZmlu
ZSBHTF9DT1ZFUkFHRV9DT01QT05FTlQ0X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OEVEMQotI2RlZmluZSBHTF9DT1ZFUkFHRV9BVFRBQ0hNRU5UX05WICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OEVEMgotI2RlZmluZSBHTF9DT1ZFUkFHRV9CVUZGRVJTX05WICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMwotI2RlZmluZSBHTF9DT1ZFUkFH
RV9TQU1QTEVTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENAotI2Rl
ZmluZSBHTF9DT1ZFUkFHRV9BTExfRlJBR01FTlRTX05WICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OEVENQotI2RlZmluZSBHTF9DT1ZFUkFHRV9FREdFX0ZSQUdNRU5UU19OViAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEVENgotI2RlZmluZSBHTF9DT1ZFUkFHRV9BVVRPTUFUSUNf
TlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENwotI2RlZmluZSBHTF9DT1ZF
UkFHRV9CVUZGRVJfQklUX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMAot
I2VuZGlmCi0KLS8qIEdMX05WX2RlcHRoX25vbmxpbmVhciAqLwotI2lmbmRlZiBHTF9OVl9kZXB0
aF9ub25saW5lYXIKLSNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMTZfTk9OTElORUFSX05WICAg
ICAgICAgICAgICAgICAgICAgICAweDhFMkMKLSNlbmRpZgotCi0vKiBHTF9OVl9kcmF3X2J1ZmZl
cnMgKi8KLSNpZm5kZWYgR0xfTlZfZHJhd19idWZmZXJzCi0jZGVmaW5lIEdMX01BWF9EUkFXX0JV
RkZFUlNfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI0Ci0jZGVmaW5l
IEdMX0RSQVdfQlVGRkVSMF9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4ODI1Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMV9OViAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4ODI2Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMl9OViAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI3Ci0jZGVmaW5lIEdMX0RSQVdfQlVG
RkVSM19OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI4Ci0jZGVm
aW5lIEdMX0RSQVdfQlVGRkVSNF9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4ODI5Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSNV9OViAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4ODJBCi0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSNl9OViAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJCCi0jZGVmaW5lIEdMX0RSQVdf
QlVGRkVSN19OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJDCi0j
ZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4ODJECi0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSOV9OViAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4ODJFCi0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTBfTlYg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJGCi0jZGVmaW5lIEdMX0RS
QVdfQlVGRkVSMTFfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMw
Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTJfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4ODMxCi0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTNfTlYgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMyCi0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTRf
TlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMzCi0jZGVmaW5lIEdM
X0RSQVdfQlVGRkVSMTVfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
ODM0Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQwX05WICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0UwCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxX05WICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UxCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQyX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UyCi0jZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQzX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4Q0UzCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ0X05WICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4Q0U0Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ1X05WICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U1Ci0jZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQ2X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U2Ci0jZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ3X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0U3Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ4X05WICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0U4Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ5X05W
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U5Ci0jZGVmaW5lIEdMX0NPTE9S
X0FUVEFDSE1FTlQxMF9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VBCi0j
ZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMV9OViAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4Q0VCCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMl9OViAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4Q0VDCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
M19OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VECi0jZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQxNF9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VF
Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNV9OViAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4Q0VGCi0jZW5kaWYKLQotLyogR0xfRVhUX2RyYXdfYnVmZmVycyAqLwotI2lm
bmRlZiBHTF9FWFRfZHJhd19idWZmZXJzCi0jZGVmaW5lIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNAotI2RlZmluZSBHTF9EUkFX
X0JVRkZFUjBfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjUK
LSNkZWZpbmUgR0xfRFJBV19CVUZGRVIxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4ODI2Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMl9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyNwotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjNf
RVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjgKLSNkZWZpbmUg
R0xfRFJBV19CVUZGRVI0X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4ODI5Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSNV9FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODgyQQotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjZfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkIKLSNkZWZpbmUgR0xfRFJBV19C
VUZGRVI3X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJDCi0j
ZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODgyRAotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjlfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDg4MkUKLSNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMF9F
WFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJGCi0jZGVmaW5lIEdM
X0RSQVdfQlVGRkVSMTFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODgzMAotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEyX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDg4MzEKLSNkZWZpbmUgR0xfRFJBV19CVUZGRVIxM19FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMyCi0jZGVmaW5lIEdMX0RSQVdfQlVG
RkVSMTRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgzMwotI2Rl
ZmluZSBHTF9EUkFXX0JVRkZFUjE1X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDg4MzQKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4Q0UwCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFMQotI2RlZmluZSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhD
RTIKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDNfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0UzCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ0X0VYVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFNAotI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UNV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTUKLSNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0U2Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ3X0VYVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OENFNwotI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOF9F
WFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTgKLSNkZWZpbmUgR0xfQ09M
T1JfQVRUQUNITUVOVDlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U5
Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMF9FWFQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OENFQQotI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTFfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUIKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNI
TUVOVDEyX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VDCi0jZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQxM19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OENFRAotI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTRfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDhDRUUKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDE1X0VY
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VGCi0jZGVmaW5lIEdMX01BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENERgot
I2VuZGlmCi0KLS8qIEdMX05WX2RyYXdfaW5zdGFuY2VkICovCi0vKiBObyBuZXcgdG9rZW5zIGlu
dHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCi0KLS8qIEdMX05WX2Zib19jb2xvcl9hdHRh
Y2htZW50cyAqLwotI2lmbmRlZiBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMKLSNkZWZpbmUg
R0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhDREYKLS8qIEdMX0NPTE9SX0FUVEFDSE1FTlR7MC0xNX1fTlYgZGVmaW5lZCBpbiBHTF9OVl9k
cmF3X2J1ZmZlcnMgYWxyZWFkeS4gKi8KLSNlbmRpZgotCi0vKiBHTF9OVl9mZW5jZSAqLwotI2lm
bmRlZiBHTF9OVl9mZW5jZQotI2RlZmluZSBHTF9BTExfQ09NUExFVEVEX05WICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGMgotI2RlZmluZSBHTF9GRU5DRV9TVEFUVVNf
TlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGMwotI2RlZmluZSBH
TF9GRU5DRV9DT05ESVRJT05fTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODRGNAotI2VuZGlmCi0KLS8qIEdMX05WX2ZyYW1lYnVmZmVyX2JsaXQgKi8KLSNpZm5kZWYgR0xf
TlZfZnJhbWVidWZmZXJfYmxpdAotI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX05WICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENBOAotI2RlZmluZSBHTF9EUkFXX0ZSQU1F
QlVGRkVSX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENBOQotI2RlZmlu
ZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfTlYgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OENBNiAKLSNkZWZpbmUgR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HX05WICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDhDQUEKLSNlbmRpZgotCi0vKiBHTF9OVl9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSAqLwotI2lmbmRlZiBHTF9OVl9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQotI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfU0FNUExFU19OViAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OENBQgotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
X05WICAgICAgICAgICAgICAgIDB4OEQ1NgotI2RlZmluZSBHTF9NQVhfU0FNUExFU19OViAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ1NwotI2VuZGlmCi0KLS8qIEdM
X05WX2dlbmVyYXRlX21pcG1hcF9zUkdCICovCi0vKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQg
YnkgdGhpcyBleHRlbnNpb24uICovCi0KLS8qIEdMX05WX2luc3RhbmNlZF9hcnJheXMgKi8KLSNp
Zm5kZWYgR0xfTlZfaW5zdGFuY2VkX2FycmF5cwotI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX0RJVklTT1JfTlYgICAgICAgICAgICAgICAgICAgICAgIDB4ODhGRQotI2VuZGlmCi0KLS8q
IEdMX05WX3JlYWRfYnVmZmVyICovCi0jaWZuZGVmIEdMX05WX3JlYWRfYnVmZmVyCi0jZGVmaW5l
IEdMX1JFQURfQlVGRkVSX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgwQzAyCi0jZW5kaWYKLQotLyogR0xfTlZfcmVhZF9idWZmZXJfZnJvbnQgKi8KLS8qIE5vIG5l
dyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KLQotLyogR0xfTlZfcmVh
ZF9kZXB0aCAqLwotLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9u
LiAqLwotCi0vKiBHTF9OVl9yZWFkX2RlcHRoX3N0ZW5jaWwgKi8KLS8qIE5vIG5ldyB0b2tlbnMg
aW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KLQotLyogR0xfTlZfcmVhZF9zdGVuY2ls
ICovCi0vKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCi0K
LS8qIEdMX05WX3NoYWRvd19zYW1wbGVyc19hcnJheSAqLwotI2lmbmRlZiBHTF9OVl9zaGFkb3df
c2FtcGxlcnNfYXJyYXkKLSNkZWZpbmUgR0xfU0FNUExFUl8yRF9BUlJBWV9TSEFET1dfTlYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhEQzQKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCi0vKiBHTF9OVl9zaGFkb3dfc2FtcGxlcnNfY3ViZSAqLwot
I2lmbmRlZiBHTF9OVl9zaGFkb3dfc2FtcGxlcnNfY3ViZSAgICAgICAgICAgICAgICAgCi0jZGVm
aW5lIEdMX1NBTVBMRVJfQ1VCRV9TSEFET1dfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4REM1Ci0jZW5kaWYKLQotLyogR0xfTlZfc1JHQl9mb3JtYXRzICovCi0jaWZuZGVmIEdM
X05WX3NSR0JfZm9ybWF0cwotI2RlZmluZSBHTF9TTFVNSU5BTkNFX05WICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEM0NgotI2RlZmluZSBHTF9TTFVNSU5BTkNFX0FM
UEhBX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEM0NAotI2RlZmluZSBH
TF9TUkdCOF9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEM0MQotI2RlZmluZSBHTF9TTFVNSU5BTkNFOF9OViAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OEM0NwotI2RlZmluZSBHTF9TTFVNSU5BTkNFOF9BTFBIQThfTlYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEM0NQotI2RlZmluZSBHTF9DT01QUkVTU0VE
X1NSR0JfUzNUQ19EWFQxX05WICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEM0QwotI2RlZmlu
ZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX05WICAgICAgICAgICAgICAgICAg
IDB4OEM0RAotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX05WICAg
ICAgICAgICAgICAgICAgIDB4OEM0RQotI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X05WICAgICAgICAgICAgICAgICAgIDB4OEM0RgotI2RlZmluZSBHTF9FVEMxX1NS
R0I4X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODhFRQotI2Vu
ZGlmCi0KLS8qIEdMX05WX3RleHR1cmVfYm9yZGVyX2NsYW1wICovCi0jaWZuZGVmIEdMX05WX3Rl
eHR1cmVfYm9yZGVyX2NsYW1wCi0jZGVmaW5lIEdMX1RFWFRVUkVfQk9SREVSX0NPTE9SX05WICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMDA0Ci0jZGVmaW5lIEdMX0NMQU1QX1RPX0JP
UkRFUl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MTJECi0jZW5kaWYK
LQotLyogR0xfTlZfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3VwZGF0ZSAqLwotLyogTm8gbmV3
IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLwotCi0vKiBHTF9OVl90ZXh0
dXJlX25wb3RfMkRfbWlwbWFwICovCi0vKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhp
cyBleHRlbnNpb24uICovCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgotICogUUNPTSBleHRlbnNpb24g
dG9rZW5zCi0gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIEdMX1FDT01fYWxwaGFfdGVzdCAqLwot
I2lmbmRlZiBHTF9RQ09NX2FscGhhX3Rlc3QKLSNkZWZpbmUgR0xfQUxQSEFfVEVTVF9RQ09NICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCQzAKLSNkZWZpbmUgR0xfQUxQ
SEFfVEVTVF9GVU5DX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCQzEK
LSNkZWZpbmUgR0xfQUxQSEFfVEVTVF9SRUZfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDBCQzIKLSNlbmRpZgotCi0vKiBHTF9RQ09NX2Jpbm5pbmdfY29udHJvbCAqLwot
I2lmbmRlZiBHTF9RQ09NX2Jpbm5pbmdfY29udHJvbAotI2RlZmluZSBHTF9CSU5OSU5HX0NPTlRS
T0xfSElOVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEZCMAotI2RlZmluZSBH
TF9DUFVfT1BUSU1JWkVEX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEZCMQotI2RlZmluZSBHTF9HUFVfT1BUSU1JWkVEX1FDT00gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OEZCMgotI2RlZmluZSBHTF9SRU5ERVJfRElSRUNUX1RPX0ZSQU1FQlVG
RkVSX1FDT00gICAgICAgICAgICAgICAgICAgIDB4OEZCMwotI2VuZGlmCi0KLS8qIEdMX1FDT01f
ZHJpdmVyX2NvbnRyb2wgKi8KLS8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4
dGVuc2lvbi4gKi8KLQotLyogR0xfUUNPTV9leHRlbmRlZF9nZXQgKi8KLSNpZm5kZWYgR0xfUUNP
TV9leHRlbmRlZF9nZXQKLSNkZWZpbmUgR0xfVEVYVFVSRV9XSURUSF9RQ09NICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhCRDIKLSNkZWZpbmUgR0xfVEVYVFVSRV9IRUlHSFRf
UUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDMKLSNkZWZpbmUgR0xf
VEVYVFVSRV9ERVBUSF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhC
RDQKLSNkZWZpbmUgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfUUNPTSAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhCRDUKLSNkZWZpbmUgR0xfVEVYVFVSRV9GT1JNQVRfUUNPTSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDYKLSNkZWZpbmUgR0xfVEVYVFVSRV9UWVBF
X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDcKLSNkZWZpbmUg
R0xfVEVYVFVSRV9JTUFHRV9WQUxJRF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhCRDgKLSNkZWZpbmUgR0xfVEVYVFVSRV9OVU1fTEVWRUxTX1FDT00gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhCRDkKLSNkZWZpbmUgR0xfVEVYVFVSRV9UQVJHRVRfUUNPTSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREEKLSNkZWZpbmUgR0xfVEVYVFVSRV9P
QkpFQ1RfVkFMSURfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREIKLSNkZWZp
bmUgR0xfU1RBVEVfUkVTVE9SRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhCREMKLSNlbmRpZgotCi0vKiBHTF9RQ09NX2V4dGVuZGVkX2dldDIgKi8KLS8qIE5vIG5l
dyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KLQotLyogR0xfUUNPTV9w
ZXJmbW9uX2dsb2JhbF9tb2RlICovCi0jaWZuZGVmIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9k
ZQotI2RlZmluZSBHTF9QRVJGTU9OX0dMT0JBTF9NT0RFX1FDT00gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEZBMAotI2VuZGlmCi0KLS8qIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmlu
ZyAqLwotI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKLSNkZWZpbmUgR0xfV1JJ
VEVPTkxZX1JFTkRFUklOR19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjMK
LSNlbmRpZgotCi0vKiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAqLwotI2lmbmRlZiBHTF9RQ09N
X3RpbGVkX3JlbmRlcmluZwotI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUMF9RQ09NICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKLSNkZWZpbmUgR0xfQ09MT1JfQlVG
RkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCi0j
ZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDAwMDAwNAotI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUM19RQ09NICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKLSNkZWZpbmUgR0xfQ09MT1JfQlVG
RkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCi0j
ZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDAwMDAyMAotI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUNl9RQ09NICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKLSNkZWZpbmUgR0xfQ09MT1JfQlVG
RkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCi0j
ZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDAwMDEwMAotI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUMV9RQ09NICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKLSNkZWZpbmUgR0xfREVQVEhfQlVG
RkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCi0j
ZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDAwMDgwMAotI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUNF9RQ09NICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKLSNkZWZpbmUgR0xfREVQVEhfQlVG
RkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCi0j
ZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDAwNDAwMAotI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUN19RQ09NICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKLSNkZWZpbmUgR0xfU1RFTkNJTF9C
VUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCi0j
ZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDAyMDAwMAotI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQyX1FDT00gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKLSNkZWZpbmUgR0xfU1RFTkNJTF9C
VUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwCi0j
ZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDEwMDAwMAotI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ1X1FDT00gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKLSNkZWZpbmUgR0xfU1RFTkNJTF9C
VUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCi0j
ZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwMDgwMDAwMAotI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUMF9RQ09N
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKLSNkZWZpbmUgR0xfTVVMVElTQU1Q
TEVfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCi0j
ZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAg
ICAgICAgMHgwNDAwMDAwMAotI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUM19RQ09N
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMDAwMDAKLSNkZWZpbmUgR0xfTVVMVElTQU1Q
TEVfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwCi0j
ZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAg
ICAgICAgMHgyMDAwMDAwMAotI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUNl9RQ09N
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKLSNkZWZpbmUgR0xfTVVMVElTQU1Q
TEVfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCi0j
ZW5kaWYKLQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBWSVYgZXh0ZW5zaW9uIHRva2VucwotICot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwotCi0vKiBHTF9WSVZfc2hhZGVyX2JpbmFyeSAqLwotI2lmbmRlZiBH
TF9WSVZfc2hhZGVyX2JpbmFyeQotI2RlZmluZSBHTF9TSEFERVJfQklOQVJZX1ZJViAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEZDNAotI2VuZGlmCi0KLS8qLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKgotICogRW5kIG9mIGV4dGVuc2lvbiB0b2tlbnMsIHN0YXJ0IG9mIGNvcnJlc3BvbmRp
bmcgZXh0ZW5zaW9uIGZ1bmN0aW9ucwotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSoKLSAqIE9FUyBleHRlbnNpb24gZnVuY3Rpb25zCi0gKi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
Ci0KLS8qIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlICovCiAjaWZuZGVmIEdM
X09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCiAjZGVmaW5lIEdMX09FU19jb21wcmVz
c2VkX0VUQzFfUkdCOF90ZXh0dXJlIDEKLSNlbmRpZgorI2RlZmluZSBHTF9FVEMxX1JHQjhfT0VT
ICAgICAgICAgICAgICAgICAgMHg4RDY0CisjZW5kaWYgLyogR0xfT0VTX2NvbXByZXNzZWRfRVRD
MV9SR0I4X3RleHR1cmUgKi8KIAotLyogR0xfT0VTX2NvbXByZXNzZWRfcGFsZXR0ZWRfdGV4dHVy
ZSAqLwogI2lmbmRlZiBHTF9PRVNfY29tcHJlc3NlZF9wYWxldHRlZF90ZXh0dXJlCiAjZGVmaW5l
IEdMX09FU19jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUgMQorI2RlZmluZSBHTF9QQUxFVFRF
NF9SR0I4X09FUyAgICAgICAgICAgICAgMHg4QjkwCisjZGVmaW5lIEdMX1BBTEVUVEU0X1JHQkE4
X09FUyAgICAgICAgICAgICAweDhCOTEKKyNkZWZpbmUgR0xfUEFMRVRURTRfUjVfRzZfQjVfT0VT
ICAgICAgICAgIDB4OEI5MgorI2RlZmluZSBHTF9QQUxFVFRFNF9SR0JBNF9PRVMgICAgICAgICAg
ICAgMHg4QjkzCisjZGVmaW5lIEdMX1BBTEVUVEU0X1JHQjVfQTFfT0VTICAgICAgICAgICAweDhC
OTQKKyNkZWZpbmUgR0xfUEFMRVRURThfUkdCOF9PRVMgICAgICAgICAgICAgIDB4OEI5NQorI2Rl
ZmluZSBHTF9QQUxFVFRFOF9SR0JBOF9PRVMgICAgICAgICAgICAgMHg4Qjk2CisjZGVmaW5lIEdM
X1BBTEVUVEU4X1I1X0c2X0I1X09FUyAgICAgICAgICAweDhCOTcKKyNkZWZpbmUgR0xfUEFMRVRU
RThfUkdCQTRfT0VTICAgICAgICAgICAgIDB4OEI5OAorI2RlZmluZSBHTF9QQUxFVFRFOF9SR0I1
X0ExX09FUyAgICAgICAgICAgMHg4Qjk5CisjZW5kaWYgLyogR0xfT0VTX2NvbXByZXNzZWRfcGFs
ZXR0ZWRfdGV4dHVyZSAqLworCisjaWZuZGVmIEdMX09FU19jb3B5X2ltYWdlCisjZGVmaW5lIEdM
X09FU19jb3B5X2ltYWdlIDEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09QWUlN
QUdFU1VCREFUQU9FU1BST0MpIChHTHVpbnQgc3JjTmFtZSwgR0xlbnVtIHNyY1RhcmdldCwgR0xp
bnQgc3JjTGV2ZWwsIEdMaW50IHNyY1gsIEdMaW50IHNyY1ksIEdMaW50IHNyY1osIEdMdWludCBk
c3ROYW1lLCBHTGVudW0gZHN0VGFyZ2V0LCBHTGludCBkc3RMZXZlbCwgR0xpbnQgZHN0WCwgR0xp
bnQgZHN0WSwgR0xpbnQgZHN0WiwgR0xzaXplaSBzcmNXaWR0aCwgR0xzaXplaSBzcmNIZWlnaHQs
IEdMc2l6ZWkgc3JjRGVwdGgpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlJbWFnZVN1YkRhdGFPRVMgKEdMdWludCBzcmNOYW1l
LCBHTGVudW0gc3JjVGFyZ2V0LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xpbnQgc3Jj
WSwgR0xpbnQgc3JjWiwgR0x1aW50IGRzdE5hbWUsIEdMZW51bSBkc3RUYXJnZXQsIEdMaW50IGRz
dExldmVsLCBHTGludCBkc3RYLCBHTGludCBkc3RZLCBHTGludCBkc3RaLCBHTHNpemVpIHNyY1dp
ZHRoLCBHTHNpemVpIHNyY0hlaWdodCwgR0xzaXplaSBzcmNEZXB0aCk7CiAjZW5kaWYKKyNlbmRp
ZiAvKiBHTF9PRVNfY29weV9pbWFnZSAqLwogCi0vKiBHTF9PRVNfZGVwdGgyNCAqLwogI2lmbmRl
ZiBHTF9PRVNfZGVwdGgyNAogI2RlZmluZSBHTF9PRVNfZGVwdGgyNCAxCi0jZW5kaWYKKyNkZWZp
bmUgR0xfREVQVEhfQ09NUE9ORU5UMjRfT0VTICAgICAgICAgIDB4ODFBNgorI2VuZGlmIC8qIEdM
X09FU19kZXB0aDI0ICovCiAKLS8qIEdMX09FU19kZXB0aDMyICovCiAjaWZuZGVmIEdMX09FU19k
ZXB0aDMyCiAjZGVmaW5lIEdMX09FU19kZXB0aDMyIDEKLSNlbmRpZgorI2RlZmluZSBHTF9ERVBU
SF9DT01QT05FTlQzMl9PRVMgICAgICAgICAgMHg4MUE3CisjZW5kaWYgLyogR0xfT0VTX2RlcHRo
MzIgKi8KIAotLyogR0xfT0VTX2RlcHRoX3RleHR1cmUgKi8KICNpZm5kZWYgR0xfT0VTX2RlcHRo
X3RleHR1cmUKICNkZWZpbmUgR0xfT0VTX2RlcHRoX3RleHR1cmUgMQotI2VuZGlmCisjZW5kaWYg
LyogR0xfT0VTX2RlcHRoX3RleHR1cmUgKi8KIAotLyogR0xfT0VTX0VHTF9pbWFnZSAqLwotI2lm
bmRlZiBHTF9PRVNfRUdMX2ltYWdlCi0jZGVmaW5lIEdMX09FU19FR0xfaW1hZ2UgMQorI2lmbmRl
ZiBHTF9PRVNfZHJhd19idWZmZXJzX2luZGV4ZWQKKyNkZWZpbmUgR0xfT0VTX2RyYXdfYnVmZmVy
c19pbmRleGVkIDEKKyNkZWZpbmUgR0xfTUlOICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODAwNworI2RlZmluZSBHTF9NQVggICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVOQUJMRUlPRVNQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElT
QUJMRUlPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRFUVVBVElPTklPRVNQUk9DKSAoR0x1aW50IGJ1Ziwg
R0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFU
SU9OU0VQQVJBVEVJT0VTUFJPQykgKEdMdWludCBidWYsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0g
bW9kZUFscGhhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRGVU5DSU9F
U1BST0MpIChHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVJT0VTUFJPQykgKEdMdWludCBi
dWYsIEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVt
IGRzdEFscGhhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09MT1JNQVNLSU9F
U1BST0MpIChHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiByLCBHTGJvb2xlYW4gZywgR0xib29sZWFu
IGIsIEdMYm9vbGVhbiBhKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJ
U0VOQUJMRURJT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiAjaWZkZWYg
R0xfR0xFWFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2Up
OwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZm
ZXJTdG9yYWdlT0VTIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZWlPRVMgKEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNhYmxlaU9FUyAoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEJsZW5kRXF1YXRpb25pT0VTIChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGVpT0VTIChHTHVpbnQgYnVm
LCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xCbGVuZEZ1bmNpT0VTIChHTHVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0g
ZHN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlaU9F
UyAoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0Fs
cGhhLCBHTGVudW0gZHN0QWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29s
b3JNYXNraU9FUyAoR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9v
bGVhbiBiLCBHTGJvb2xlYW4gYSk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBn
bElzRW5hYmxlZGlPRVMgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CiAjZW5kaWYKLXR5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQ
Uk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci10eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUUkVOREVSQlVGRkVSU1RPUkFHRU9FU1BS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKLSNlbmRpZgorI2VuZGlm
IC8qIEdMX09FU19kcmF3X2J1ZmZlcnNfaW5kZXhlZCAqLwogCi0vKiBHTF9PRVNfRUdMX2ltYWdl
X2V4dGVybmFsICovCi0jaWZuZGVmIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwKLSNkZWZpbmUg
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCAxCi0vKiBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJE
T0VTIGRlZmluZWQgaW4gR0xfT0VTX0VHTF9pbWFnZSBhbHJlYWR5LiAqLworI2lmbmRlZiBHTF9P
RVNfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleAorI2RlZmluZSBHTF9PRVNfZHJhd19lbGVtZW50
c19iYXNlX3ZlcnRleCAxCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdFTEVN
RU5UU0JBU0VWRVJURVhPRVNQUk9DKSAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51
bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTGludCBiYXNldmVydGV4KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV1JBTkdFRUxFTUVOVFNCQVNFVkVSVEVYT0VTUFJP
QykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTGludCBiYXNldmVydGV4KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZF
UlRFWE9FU1BST0MpIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwgR0xpbnQgYmFzZXZlcnRl
eCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTQkFT
RVZFUlRFWE9FU1BST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51
bSB0eXBlLCBjb25zdCB2b2lkICpjb25zdCppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCwgY29u
c3QgR0xpbnQgKmJhc2V2ZXJ0ZXgpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMgKEdMZW51
bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywg
R0xpbnQgYmFzZXZlcnRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3UmFu
Z2VFbGVtZW50c0Jhc2VWZXJ0ZXhPRVMgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWlu
dCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBH
TGludCBiYXNldmVydGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVt
ZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhPRVMgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBH
TGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0YW5jZWNvdW50LCBH
TGludCBiYXNldmVydGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJh
d0VsZW1lbnRzQmFzZVZlcnRleE9FUyAoR0xlbnVtIG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50
LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqY29uc3QqaW5kaWNlcywgR0xzaXplaSBwcmltY291
bnQsIGNvbnN0IEdMaW50ICpiYXNldmVydGV4KTsKICNlbmRpZgorI2VuZGlmIC8qIEdMX09FU19k
cmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4ICovCiAKLS8qIEdMX09FU19lbGVtZW50X2luZGV4X3Vp
bnQgKi8KICNpZm5kZWYgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludAogI2RlZmluZSBHTF9PRVNf
ZWxlbWVudF9pbmRleF91aW50IDEKLSNlbmRpZgorI2VuZGlmIC8qIEdMX09FU19lbGVtZW50X2lu
ZGV4X3VpbnQgKi8KIAotLyogR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwICovCiAjaWZuZGVmIEdM
X09FU19mYm9fcmVuZGVyX21pcG1hcAogI2RlZmluZSBHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAg
MQotI2VuZGlmCisjZW5kaWYgLyogR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwICovCiAKLS8qIEdM
X09FU19mcmFnbWVudF9wcmVjaXNpb25faGlnaCAqLwogI2lmbmRlZiBHTF9PRVNfZnJhZ21lbnRf
cHJlY2lzaW9uX2hpZ2gKICNkZWZpbmUgR0xfT0VTX2ZyYWdtZW50X3ByZWNpc2lvbl9oaWdoIDEK
KyNlbmRpZiAvKiBHTF9PRVNfZnJhZ21lbnRfcHJlY2lzaW9uX2hpZ2ggKi8KKworI2lmbmRlZiBH
TF9PRVNfZ2VvbWV0cnlfcG9pbnRfc2l6ZQorI2RlZmluZSBHTF9PRVNfZ2VvbWV0cnlfcG9pbnRf
c2l6ZSAxCisjZW5kaWYgLyogR0xfT0VTX2dlb21ldHJ5X3BvaW50X3NpemUgKi8KKworI2lmbmRl
ZiBHTF9PRVNfZ2VvbWV0cnlfc2hhZGVyCisjZGVmaW5lIEdMX09FU19nZW9tZXRyeV9zaGFkZXIg
MQorI2RlZmluZSBHTF9HRU9NRVRSWV9TSEFERVJfT0VTICAgICAgICAgICAgMHg4REQ5CisjZGVm
aW5lIEdMX0dFT01FVFJZX1NIQURFUl9CSVRfT0VTICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5l
IEdMX0dFT01FVFJZX0xJTktFRF9WRVJUSUNFU19PVVRfT0VTIDB4ODkxNgorI2RlZmluZSBHTF9H
RU9NRVRSWV9MSU5LRURfSU5QVVRfVFlQRV9PRVMgMHg4OTE3CisjZGVmaW5lIEdMX0dFT01FVFJZ
X0xJTktFRF9PVVRQVVRfVFlQRV9PRVMgMHg4OTE4CisjZGVmaW5lIEdMX0dFT01FVFJZX1NIQURF
Ul9JTlZPQ0FUSU9OU19PRVMgMHg4ODdGCisjZGVmaW5lIEdMX0xBWUVSX1BST1ZPS0lOR19WRVJU
RVhfT0VTICAgICAweDgyNUUKKyNkZWZpbmUgR0xfTElORVNfQURKQUNFTkNZX09FUyAgICAgICAg
ICAgIDB4MDAwQQorI2RlZmluZSBHTF9MSU5FX1NUUklQX0FESkFDRU5DWV9PRVMgICAgICAgMHgw
MDBCCisjZGVmaW5lIEdMX1RSSUFOR0xFU19BREpBQ0VOQ1lfT0VTICAgICAgICAweDAwMEMKKyNk
ZWZpbmUgR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZX09FUyAgIDB4MDAwRAorI2RlZmluZSBH
TF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRTX09FUyAweDhEREYKKyNkZWZpbmUgR0xf
TUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTX09FUyAweDhBMkMKKyNkZWZpbmUgR0xfTUFYX0NP
TUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5UU19PRVMgMHg4QTMyCisjZGVmaW5lIEdM
X01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTX09FUyAweDkxMjMKKyNkZWZpbmUgR0xfTUFY
X0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTX09FUyAweDkxMjQKKyNkZWZpbmUgR0xfTUFYX0dF
T01FVFJZX09VVFBVVF9WRVJUSUNFU19PRVMgMHg4REUwCisjZGVmaW5lIEdMX01BWF9HRU9NRVRS
WV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UU19PRVMgMHg4REUxCisjZGVmaW5lIEdMX01BWF9HRU9N
RVRSWV9TSEFERVJfSU5WT0NBVElPTlNfT0VTIDB4OEU1QQorI2RlZmluZSBHTF9NQVhfR0VPTUVU
UllfVEVYVFVSRV9JTUFHRV9VTklUU19PRVMgMHg4QzI5CisjZGVmaW5lIEdMX01BWF9HRU9NRVRS
WV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTX09FUyAweDkyQ0YKKyNkZWZpbmUgR0xfTUFYX0dFT01F
VFJZX0FUT01JQ19DT1VOVEVSU19PRVMgMHg5MkQ1CisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9J
TUFHRV9VTklGT1JNU19PRVMgMHg5MENECisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9TSEFERVJf
U1RPUkFHRV9CTE9DS1NfT0VTIDB4OTBENworI2RlZmluZSBHTF9GSVJTVF9WRVJURVhfQ09OVkVO
VElPTl9PRVMgICAgMHg4RTRECisjZGVmaW5lIEdMX0xBU1RfVkVSVEVYX0NPTlZFTlRJT05fT0VT
ICAgICAweDhFNEUKKyNkZWZpbmUgR0xfVU5ERUZJTkVEX1ZFUlRFWF9PRVMgICAgICAgICAgIDB4
ODI2MAorI2RlZmluZSBHTF9QUklNSVRJVkVTX0dFTkVSQVRFRF9PRVMgICAgICAgMHg4Qzg3Cisj
ZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZRVJTX09FUyAweDkzMTIKKyNkZWZpbmUg
R0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSU19PRVMgICAgIDB4OTMxNworI2RlZmluZSBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0xBWUVSX1RBUkdFVFNfT0VTIDB4OERBOAorI2RlZmluZSBHTF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRURfT0VTIDB4OERBNworI2RlZmluZSBHTF9SRUZF
UkVOQ0VEX0JZX0dFT01FVFJZX1NIQURFUl9PRVMgMHg5MzA5Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRU9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gYXR0YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsKTsKKyNpZmRlZiBH
TF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1
ZmZlclRleHR1cmVPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQg
dGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwogI2VuZGlmCisjZW5kaWYgLyogR0xfT0VTX2dlb21ldHJ5
X3NoYWRlciAqLwogCi0vKiBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5ICovCiAjaWZuZGVmIEdM
X09FU19nZXRfcHJvZ3JhbV9iaW5hcnkKICNkZWZpbmUgR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFy
eSAxCisjZGVmaW5lIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSF9PRVMgICAgICAweDg3NDEKKyNk
ZWZpbmUgR0xfTlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFNfT0VTIDB4ODdGRQorI2RlZmluZSBH
TF9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUyAgICAgMHg4N0ZGCit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1CSU5BUllPRVNQUk9DKSAoR0x1aW50IHByb2dyYW0s
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwg
dm9pZCAqYmluYXJ5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTUJJ
TkFSWU9FU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qg
dm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMK
LUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1CaW5hcnlPRVMgKEdMdWlu
dCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5h
cnlGb3JtYXQsIEdMdm9pZCAqYmluYXJ5KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1CaW5hcnlPRVMgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBj
b25zdCBHTHZvaWQgKmJpbmFyeSwgR0xpbnQgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFByb2dyYW1CaW5hcnlPRVMgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFy
eSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtQmluYXJ5T0VTIChHTHVp
bnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGlu
dCBsZW5ndGgpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBS
T0dSQU1CSU5BUllPRVNQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgR0x2b2lkICpiaW5hcnkpOwotdHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNQklOQVJZT0VTUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCBHTHZvaWQgKmJpbmFyeSwgR0xp
bnQgbGVuZ3RoKTsKLSNlbmRpZgorI2VuZGlmIC8qIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkg
Ki8KIAotLyogR0xfT0VTX21hcGJ1ZmZlciAqLworI2lmbmRlZiBHTF9PRVNfZ3B1X3NoYWRlcjUK
KyNkZWZpbmUgR0xfT0VTX2dwdV9zaGFkZXI1IDEKKyNlbmRpZiAvKiBHTF9PRVNfZ3B1X3NoYWRl
cjUgKi8KKwogI2lmbmRlZiBHTF9PRVNfbWFwYnVmZmVyCiAjZGVmaW5lIEdMX09FU19tYXBidWZm
ZXIgMQorI2RlZmluZSBHTF9XUklURV9PTkxZX09FUyAgICAgICAgICAgICAgICAgMHg4OEI5Cisj
ZGVmaW5lIEdMX0JVRkZFUl9BQ0NFU1NfT0VTICAgICAgICAgICAgICAweDg4QkIKKyNkZWZpbmUg
R0xfQlVGRkVSX01BUFBFRF9PRVMgICAgICAgICAgICAgIDB4ODhCQworI2RlZmluZSBHTF9CVUZG
RVJfTUFQX1BPSU5URVJfT0VTICAgICAgICAgMHg4OEJECit0eXBlZGVmIHZvaWQgKihHTF9BUElF
TlRSWVAgUEZOR0xNQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vz
cyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJPRVNQ
Uk9DKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdF
VEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9p
ZCAqKnBhcmFtcyk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lk
KiBHTF9BUElFTlRSWSBnbE1hcEJ1ZmZlck9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vz
cyk7CitHTF9BUElDQUxMIHZvaWQgKkdMX0FQSUVOVFJZIGdsTWFwQnVmZmVyT0VTIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gYWNjZXNzKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZ
IGdsVW5tYXBCdWZmZXJPRVMgKEdMZW51bSB0YXJnZXQpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0x2b2lkKiogcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEJ1
ZmZlclBvaW50ZXJ2T0VTIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJh
bXMpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQqIChHTF9BUElFTlRSWVAgUEZOR0xNQVBCVUZGRVJP
RVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vzcyk7Ci10eXBlZGVmIEdMYm9vbGVh
biAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7
Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcGFyYW1zKTsKLSNlbmRp
ZgorI2VuZGlmIC8qIEdMX09FU19tYXBidWZmZXIgKi8KIAotLyogR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsICovCiAjaWZuZGVmIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbAogI2RlZmlu
ZSBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgMQorI2RlZmluZSBHTF9ERVBUSF9TVEVOQ0lM
X09FUyAgICAgICAgICAgICAgMHg4NEY5CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yNF84X09F
UyAgICAgICAgICAweDg0RkEKKyNkZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMgICAgICAg
ICAgIDB4ODhGMAorI2VuZGlmIC8qIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCAqLworCisj
aWZuZGVmIEdMX09FU19wcmltaXRpdmVfYm91bmRpbmdfYm94CisjZGVmaW5lIEdMX09FU19wcmlt
aXRpdmVfYm91bmRpbmdfYm94IDEKKyNkZWZpbmUgR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWF9P
RVMgICAgIDB4OTJCRQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUklNSVRJVkVC
T1VORElOR0JPWE9FU1BST0MpIChHTGZsb2F0IG1pblgsIEdMZmxvYXQgbWluWSwgR0xmbG9hdCBt
aW5aLCBHTGZsb2F0IG1pblcsIEdMZmxvYXQgbWF4WCwgR0xmbG9hdCBtYXhZLCBHTGZsb2F0IG1h
eFosIEdMZmxvYXQgbWF4Vyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJpbWl0aXZlQm91bmRpbmdCb3hPRVMgKEdMZmxvYXQgbWlu
WCwgR0xmbG9hdCBtaW5ZLCBHTGZsb2F0IG1pblosIEdMZmxvYXQgbWluVywgR0xmbG9hdCBtYXhY
LCBHTGZsb2F0IG1heFksIEdMZmxvYXQgbWF4WiwgR0xmbG9hdCBtYXhXKTsKICNlbmRpZgorI2Vu
ZGlmIC8qIEdMX09FU19wcmltaXRpdmVfYm91bmRpbmdfYm94ICovCiAKLS8qIEdMX09FU19yZXF1
aXJlZF9pbnRlcm5hbGZvcm1hdCAqLwogI2lmbmRlZiBHTF9PRVNfcmVxdWlyZWRfaW50ZXJuYWxm
b3JtYXQKICNkZWZpbmUgR0xfT0VTX3JlcXVpcmVkX2ludGVybmFsZm9ybWF0IDEKLSNlbmRpZgor
I2RlZmluZSBHTF9BTFBIQThfT0VTICAgICAgICAgICAgICAgICAgICAgMHg4MDNDCisjZGVmaW5l
IEdMX0RFUFRIX0NPTVBPTkVOVDE2X09FUyAgICAgICAgICAweDgxQTUKKyNkZWZpbmUgR0xfTFVN
SU5BTkNFNF9BTFBIQTRfT0VTICAgICAgICAgIDB4ODA0MworI2RlZmluZSBHTF9MVU1JTkFOQ0U4
X0FMUEhBOF9PRVMgICAgICAgICAgMHg4MDQ1CisjZGVmaW5lIEdMX0xVTUlOQU5DRThfT0VTICAg
ICAgICAgICAgICAgICAweDgwNDAKKyNkZWZpbmUgR0xfUkdCQTRfT0VTICAgICAgICAgICAgICAg
ICAgICAgIDB4ODA1NgorI2RlZmluZSBHTF9SR0I1X0ExX09FUyAgICAgICAgICAgICAgICAgICAg
MHg4MDU3CisjZGVmaW5lIEdMX1JHQjU2NV9PRVMgICAgICAgICAgICAgICAgICAgICAweDhENjIK
KyNkZWZpbmUgR0xfUkdCOF9PRVMgICAgICAgICAgICAgICAgICAgICAgIDB4ODA1MQorI2RlZmlu
ZSBHTF9SR0JBOF9PRVMgICAgICAgICAgICAgICAgICAgICAgMHg4MDU4CisjZGVmaW5lIEdMX1JH
QjEwX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDgwNTIKKyNkZWZpbmUgR0xfUkdCMTBfQTJf
RVhUICAgICAgICAgICAgICAgICAgIDB4ODA1OQorI2VuZGlmIC8qIEdMX09FU19yZXF1aXJlZF9p
bnRlcm5hbGZvcm1hdCAqLwogCi0vKiBHTF9PRVNfcmdiOF9yZ2JhOCAqLwogI2lmbmRlZiBHTF9P
RVNfcmdiOF9yZ2JhOAogI2RlZmluZSBHTF9PRVNfcmdiOF9yZ2JhOCAxCisjZW5kaWYgLyogR0xf
T0VTX3JnYjhfcmdiYTggKi8KKworI2lmbmRlZiBHTF9PRVNfc2FtcGxlX3NoYWRpbmcKKyNkZWZp
bmUgR0xfT0VTX3NhbXBsZV9zaGFkaW5nIDEKKyNkZWZpbmUgR0xfU0FNUExFX1NIQURJTkdfT0VT
ICAgICAgICAgICAgIDB4OEMzNgorI2RlZmluZSBHTF9NSU5fU0FNUExFX1NIQURJTkdfVkFMVUVf
T0VTICAgMHg4QzM3Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1JTlNBTVBMRVNI
QURJTkdPRVNQUk9DKSAoR0xmbG9hdCB2YWx1ZSk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBF
UworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWluU2FtcGxlU2hhZGluZ09FUyAoR0xm
bG9hdCB2YWx1ZSk7CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9PRVNfc2FtcGxlX3NoYWRpbmcgKi8K
IAotLyogR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICovCisjaWZuZGVmIEdMX09FU19zYW1w
bGVfdmFyaWFibGVzCisjZGVmaW5lIEdMX09FU19zYW1wbGVfdmFyaWFibGVzIDEKKyNlbmRpZiAv
KiBHTF9PRVNfc2FtcGxlX3ZhcmlhYmxlcyAqLworCisjaWZuZGVmIEdMX09FU19zaGFkZXJfaW1h
Z2VfYXRvbWljCisjZGVmaW5lIEdMX09FU19zaGFkZXJfaW1hZ2VfYXRvbWljIDEKKyNlbmRpZiAv
KiBHTF9PRVNfc2hhZGVyX2ltYWdlX2F0b21pYyAqLworCisjaWZuZGVmIEdMX09FU19zaGFkZXJf
aW9fYmxvY2tzCisjZGVmaW5lIEdMX09FU19zaGFkZXJfaW9fYmxvY2tzIDEKKyNlbmRpZiAvKiBH
TF9PRVNfc2hhZGVyX2lvX2Jsb2NrcyAqLworCisjaWZuZGVmIEdMX09FU19zaGFkZXJfbXVsdGlz
YW1wbGVfaW50ZXJwb2xhdGlvbgorI2RlZmluZSBHTF9PRVNfc2hhZGVyX211bHRpc2FtcGxlX2lu
dGVycG9sYXRpb24gMQorI2RlZmluZSBHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZT
RVRfT0VTIDB4OEU1QgorI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZT
RVRfT0VTIDB4OEU1QworI2RlZmluZSBHTF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVF9C
SVRTX09FUyAweDhFNUQKKyNlbmRpZiAvKiBHTF9PRVNfc2hhZGVyX211bHRpc2FtcGxlX2ludGVy
cG9sYXRpb24gKi8KKwogI2lmbmRlZiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKICNkZWZp
bmUgR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDEKLSNlbmRpZgorI2RlZmluZSBHTF9GUkFH
TUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUyAweDhCOEIKKyNlbmRpZiAvKiBHTF9PRVNf
c3RhbmRhcmRfZGVyaXZhdGl2ZXMgKi8KIAotLyogR0xfT0VTX3N0ZW5jaWwxICovCiAjaWZuZGVm
IEdMX09FU19zdGVuY2lsMQogI2RlZmluZSBHTF9PRVNfc3RlbmNpbDEgMQotI2VuZGlmCisjZGVm
aW5lIEdMX1NURU5DSUxfSU5ERVgxX09FUyAgICAgICAgICAgICAweDhENDYKKyNlbmRpZiAvKiBH
TF9PRVNfc3RlbmNpbDEgKi8KIAotLyogR0xfT0VTX3N0ZW5jaWw0ICovCiAjaWZuZGVmIEdMX09F
U19zdGVuY2lsNAogI2RlZmluZSBHTF9PRVNfc3RlbmNpbDQgMQotI2VuZGlmCisjZGVmaW5lIEdM
X1NURU5DSUxfSU5ERVg0X09FUyAgICAgICAgICAgICAweDhENDcKKyNlbmRpZiAvKiBHTF9PRVNf
c3RlbmNpbDQgKi8KIAogI2lmbmRlZiBHTF9PRVNfc3VyZmFjZWxlc3NfY29udGV4dAogI2RlZmlu
ZSBHTF9PRVNfc3VyZmFjZWxlc3NfY29udGV4dCAxCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX1VO
REVGSU5FRF9PRVMgICAgICAweDgyMTkKKyNlbmRpZiAvKiBHTF9PRVNfc3VyZmFjZWxlc3NfY29u
dGV4dCAqLworCisjaWZuZGVmIEdMX09FU190ZXNzZWxsYXRpb25fcG9pbnRfc2l6ZQorI2RlZmlu
ZSBHTF9PRVNfdGVzc2VsbGF0aW9uX3BvaW50X3NpemUgMQorI2VuZGlmIC8qIEdMX09FU190ZXNz
ZWxsYXRpb25fcG9pbnRfc2l6ZSAqLworCisjaWZuZGVmIEdMX09FU190ZXNzZWxsYXRpb25fc2hh
ZGVyCisjZGVmaW5lIEdMX09FU190ZXNzZWxsYXRpb25fc2hhZGVyIDEKKyNkZWZpbmUgR0xfUEFU
Q0hFU19PRVMgICAgICAgICAgICAgICAgICAgIDB4MDAwRQorI2RlZmluZSBHTF9QQVRDSF9WRVJU
SUNFU19PRVMgICAgICAgICAgICAgMHg4RTcyCisjZGVmaW5lIEdMX1RFU1NfQ09OVFJPTF9PVVRQ
VVRfVkVSVElDRVNfT0VTIDB4OEU3NQorI2RlZmluZSBHTF9URVNTX0dFTl9NT0RFX09FUyAgICAg
ICAgICAgICAgMHg4RTc2CisjZGVmaW5lIEdMX1RFU1NfR0VOX1NQQUNJTkdfT0VTICAgICAgICAg
ICAweDhFNzcKKyNkZWZpbmUgR0xfVEVTU19HRU5fVkVSVEVYX09SREVSX09FUyAgICAgIDB4OEU3
OAorI2RlZmluZSBHTF9URVNTX0dFTl9QT0lOVF9NT0RFX09FUyAgICAgICAgMHg4RTc5CisjZGVm
aW5lIEdMX0lTT0xJTkVTX09FUyAgICAgICAgICAgICAgICAgICAweDhFN0EKKyNkZWZpbmUgR0xf
UVVBRFNfT0VTICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNworI2RlZmluZSBHTF9GUkFDVElP
TkFMX09ERF9PRVMgICAgICAgICAgICAgMHg4RTdCCisjZGVmaW5lIEdMX0ZSQUNUSU9OQUxfRVZF
Tl9PRVMgICAgICAgICAgICAweDhFN0MKKyNkZWZpbmUgR0xfTUFYX1BBVENIX1ZFUlRJQ0VTX09F
UyAgICAgICAgIDB4OEU3RAorI2RlZmluZSBHTF9NQVhfVEVTU19HRU5fTEVWRUxfT0VTICAgICAg
ICAgMHg4RTdFCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9DT01QT05FTlRT
X09FUyAweDhFN0YKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBP
TkVOVFNfT0VTIDB4OEU4MAorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX1RFWFRVUkVfSU1B
R0VfVU5JVFNfT0VTIDB4OEU4MQorI2RlZmluZSBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1RFWFRV
UkVfSU1BR0VfVU5JVFNfT0VTIDB4OEU4MgorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX09V
VFBVVF9DT01QT05FTlRTX09FUyAweDhFODMKKyNkZWZpbmUgR0xfTUFYX1RFU1NfUEFUQ0hfQ09N
UE9ORU5UU19PRVMgIDB4OEU4NAorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX1RPVEFMX09V
VFBVVF9DT01QT05FTlRTX09FUyAweDhFODUKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElP
Tl9PVVRQVVRfQ09NUE9ORU5UU19PRVMgMHg4RTg2CisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRS
T0xfVU5JRk9STV9CTE9DS1NfT0VTIDB4OEU4OQorI2RlZmluZSBHTF9NQVhfVEVTU19FVkFMVUFU
SU9OX1VOSUZPUk1fQkxPQ0tTX09FUyAweDhFOEEKKyNkZWZpbmUgR0xfTUFYX1RFU1NfQ09OVFJP
TF9JTlBVVF9DT01QT05FTlRTX09FUyAweDg4NkMKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVB
VElPTl9JTlBVVF9DT01QT05FTlRTX09FUyAweDg4NkQKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVE
X1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBPTkVOVFNfT0VTIDB4OEUxRQorI2RlZmluZSBHTF9N
QVhfQ09NQklORURfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1fQ09NUE9ORU5UU19PRVMgMHg4RTFG
CisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSU19PRVMg
MHg5MkNECisjZGVmaW5lIEdMX01BWF9URVNTX0VWQUxVQVRJT05fQVRPTUlDX0NPVU5URVJfQlVG
RkVSU19PRVMgMHg5MkNFCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5U
RVJTX09FUyAweDkyRDMKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09V
TlRFUlNfT0VTIDB4OTJENAorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX0lNQUdFX1VOSUZP
Uk1TX09FUyAweDkwQ0IKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9JTUFHRV9VTklG
T1JNU19PRVMgMHg5MENDCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JB
R0VfQkxPQ0tTX09FUyAweDkwRDgKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9TSEFE
RVJfU1RPUkFHRV9CTE9DS1NfT0VTIDB4OTBEOQorI2RlZmluZSBHTF9QUklNSVRJVkVfUkVTVEFS
VF9GT1JfUEFUQ0hFU19TVVBQT1JURURfT0VTIDB4ODIyMQorI2RlZmluZSBHTF9JU19QRVJfUEFU
Q0hfT0VTICAgICAgICAgICAgICAgMHg5MkU3CisjZGVmaW5lIEdMX1JFRkVSRU5DRURfQllfVEVT
U19DT05UUk9MX1NIQURFUl9PRVMgMHg5MzA3CisjZGVmaW5lIEdMX1JFRkVSRU5DRURfQllfVEVT
U19FVkFMVUFUSU9OX1NIQURFUl9PRVMgMHg5MzA4CisjZGVmaW5lIEdMX1RFU1NfQ09OVFJPTF9T
SEFERVJfT0VTICAgICAgICAweDhFODgKKyNkZWZpbmUgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURF
Ul9PRVMgICAgIDB4OEU4NworI2RlZmluZSBHTF9URVNTX0NPTlRST0xfU0hBREVSX0JJVF9PRVMg
ICAgMHgwMDAwMDAwOAorI2RlZmluZSBHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSX0JJVF9PRVMg
MHgwMDAwMDAxMAordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQQVRDSFBBUkFNRVRF
UklPRVNQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7CisjaWZkZWYgR0xfR0xFWFRf
UFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0Y2hQYXJhbWV0ZXJp
T0VTIChHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKICNlbmRpZgorI2VuZGlmIC8qIEdMX09F
U190ZXNzZWxsYXRpb25fc2hhZGVyICovCiAKLS8qIEdMX09FU190ZXh0dXJlXzNEICovCiAjaWZu
ZGVmIEdMX09FU190ZXh0dXJlXzNECiAjZGVmaW5lIEdMX09FU190ZXh0dXJlXzNEIDEKKyNkZWZp
bmUgR0xfVEVYVFVSRV9XUkFQX1JfT0VTICAgICAgICAgICAgIDB4ODA3MgorI2RlZmluZSBHTF9U
RVhUVVJFXzNEX09FUyAgICAgICAgICAgICAgICAgMHg4MDZGCisjZGVmaW5lIEdMX1RFWFRVUkVf
QklORElOR18zRF9PRVMgICAgICAgICAweDgwNkEKKyNkZWZpbmUgR0xfTUFYXzNEX1RFWFRVUkVf
U0laRV9PRVMgICAgICAgIDB4ODA3MworI2RlZmluZSBHTF9TQU1QTEVSXzNEX09FUyAgICAgICAg
ICAgICAgICAgMHg4QjVGCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVS
RV8zRF9aT0ZGU0VUX09FUyAweDhDRDQKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0
aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1VCSU1BR0UzRE9F
U1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
c2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhl
bHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VCSU1BR0UzRE9F
U1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQg
eW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT01QUkVT
U0VEVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk
ZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTNE
T0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlRF
WFRVUkUzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVt
IHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCB6b2Zmc2V0KTsK
ICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xUZXhJbWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwg
R0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBw
aXhlbHMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UzRE9FUyAo
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQs
IEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRl
cHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UzRE9FUyAoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xUZXhTdWJJbWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCB2b2lkICpwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29w
eVRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCog
ZGF0YSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4U3ViSW1h
Z2UzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2
b2lkKiBkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhJ
bWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQg
Ym9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUyAoR0xlbnVtIHRh
cmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpv
ZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVu
dW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7CiBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJl
LCBHTGludCBsZXZlbCwgR0xpbnQgem9mZnNldCk7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xURVhTVUJJTUFHRTNET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
Q09QWVRFWFNVQklNQUdFM0RPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdM
aW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWElNQUdFM0RPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUs
IGNvbnN0IEdMdm9pZCogZGF0YSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENP
TVBSRVNTRURURVhTVUJJTUFHRTNET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVs
LCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXpl
aSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTNET0VTKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZl
bCwgR0xpbnQgem9mZnNldCk7CisjZW5kaWYgLyogR0xfT0VTX3RleHR1cmVfM0QgKi8KKworI2lm
bmRlZiBHTF9PRVNfdGV4dHVyZV9ib3JkZXJfY2xhbXAKKyNkZWZpbmUgR0xfT0VTX3RleHR1cmVf
Ym9yZGVyX2NsYW1wIDEKKyNkZWZpbmUgR0xfVEVYVFVSRV9CT1JERVJfQ09MT1JfT0VTICAgICAg
IDB4MTAwNAorI2RlZmluZSBHTF9DTEFNUF9UT19CT1JERVJfT0VTICAgICAgICAgICAgMHg4MTJE
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUklJVk9FU1BST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVURVJJVUlWT0VTUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50ICpwYXJhbXMpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhQQVJBTUVURVJJSVZPRVNQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMR0VUVEVYUEFSQU1FVEVSSVVJVk9FU1BST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMU0FNUExFUlBBUkFNRVRFUklJVk9FU1BST0MpIChHTHVpbnQgc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSSVVJVk9FU1BST0MpIChHTHVpbnQgc2FtcGxlciwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQgKnBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUklJVk9FU1BST0MpIChHTHVpbnQgc2FtcGxl
ciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUklVSVZPRVNQUk9DKSAoR0x1aW50IHNhbXBsZXIs
IEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQ
RVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcklpdk9FUyAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlckl1aXZPRVMgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVySWl2T0VTIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
VGV4UGFyYW1ldGVySXVpdk9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQg
KnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVyUGFyYW1ldGVy
SWl2T0VTIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0p
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlckl1aXZPRVMg
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW0pOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdk9FUyAoR0x1
aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdk9FUyAoR0x1aW50IHNhbXBs
ZXIsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwogI2VuZGlmCisjZW5kaWYgLyogR0xf
T0VTX3RleHR1cmVfYm9yZGVyX2NsYW1wICovCiAKLS8qIEdMX09FU190ZXh0dXJlX2Zsb2F0ICov
CisjaWZuZGVmIEdMX09FU190ZXh0dXJlX2J1ZmZlcgorI2RlZmluZSBHTF9PRVNfdGV4dHVyZV9i
dWZmZXIgMQorI2RlZmluZSBHTF9URVhUVVJFX0JVRkZFUl9PRVMgICAgICAgICAgICAgMHg4QzJB
CisjZGVmaW5lIEdMX1RFWFRVUkVfQlVGRkVSX0JJTkRJTkdfT0VTICAgICAweDhDMkEKKyNkZWZp
bmUgR0xfTUFYX1RFWFRVUkVfQlVGRkVSX1NJWkVfT0VTICAgIDB4OEMyQgorI2RlZmluZSBHTF9U
RVhUVVJFX0JJTkRJTkdfQlVGRkVSX09FUyAgICAgMHg4QzJDCisjZGVmaW5lIEdMX1RFWFRVUkVf
QlVGRkVSX0RBVEFfU1RPUkVfQklORElOR19PRVMgMHg4QzJECisjZGVmaW5lIEdMX1RFWFRVUkVf
QlVGRkVSX09GRlNFVF9BTElHTk1FTlRfT0VTIDB4OTE5RgorI2RlZmluZSBHTF9TQU1QTEVSX0JV
RkZFUl9PRVMgICAgICAgICAgICAgMHg4REMyCisjZGVmaW5lIEdMX0lOVF9TQU1QTEVSX0JVRkZF
Ul9PRVMgICAgICAgICAweDhERDAKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQlVG
RkVSX09FUyAweDhERDgKKyNkZWZpbmUgR0xfSU1BR0VfQlVGRkVSX09FUyAgICAgICAgICAgICAg
IDB4OTA1MQorI2RlZmluZSBHTF9JTlRfSU1BR0VfQlVGRkVSX09FUyAgICAgICAgICAgMHg5MDVD
CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9CVUZGRVJfT0VTICAweDkwNjcKKyNkZWZp
bmUgR0xfVEVYVFVSRV9CVUZGRVJfT0ZGU0VUX09FUyAgICAgIDB4OTE5RAorI2RlZmluZSBHTF9U
RVhUVVJFX0JVRkZFUl9TSVpFX09FUyAgICAgICAgMHg5MTlFCit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFRFWEJVRkZFUk9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMdWludCBidWZmZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xURVhCVUZGRVJSQU5HRU9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXpl
KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xUZXhCdWZmZXJPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0x1aW50IGJ1ZmZlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhCdWZmZXJS
YW5nZU9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHVpbnQgYnVm
ZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7CisjZW5kaWYKKyNlbmRpZiAv
KiBHTF9PRVNfdGV4dHVyZV9idWZmZXIgKi8KKworI2lmbmRlZiBHTF9PRVNfdGV4dHVyZV9jb21w
cmVzc2lvbl9hc3RjCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGMgMQor
I2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18zeDN4M19PRVMgMHg5M0MwCisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4M3gzX09FUyAweDkzQzEKKyNkZWZpbmUgR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfNHg0eDNfT0VTIDB4OTNDMgorI2RlZmluZSBHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ180eDR4NF9PRVMgMHg5M0MzCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzV4NHg0X09FUyAweDkzQzQKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1
eDRfT0VTIDB4OTNDNQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDV4NV9PRVMg
MHg5M0M2CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NXg1X09FUyAweDkzQzcK
KyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2eDVfT0VTIDB4OTNDOAorI2RlZmlu
ZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZ4Nl9PRVMgMHg5M0M5CisjZGVmaW5lIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfM3gzeDNfT0VTIDB4OTNFMAorI2RlZmluZSBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4M3gzX09FUyAweDkzRTEKKyNkZWZpbmUgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDR4M19PRVMgMHg5M0UyCisjZGVmaW5lIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0eDRfT0VTIDB4OTNFMworI2RlZmluZSBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NHg0X09FUyAweDkzRTQKKyNkZWZpbmUg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDV4NF9PRVMgMHg5M0U1CisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1eDVfT0VTIDB4OTNFNgorI2RlZmlu
ZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NXg1X09FUyAweDkzRTcKKyNkZWZp
bmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZ4NV9PRVMgMHg5M0U4CisjZGVm
aW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2eDZfT0VTIDB4OTNFOQorI2Vu
ZGlmIC8qIEdMX09FU190ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGMgKi8KKworI2lmbmRlZiBHTF9P
RVNfdGV4dHVyZV9jdWJlX21hcF9hcnJheQorI2RlZmluZSBHTF9PRVNfdGV4dHVyZV9jdWJlX21h
cF9hcnJheSAxCisjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVlfT0VTICAgICAweDkw
MDkKKyNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQX0FSUkFZX09FUyAweDkwMEEK
KyNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX01BUF9BUlJBWV9PRVMgICAgIDB4OTAwQworI2RlZmlu
ZSBHTF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZX1NIQURPV19PRVMgMHg5MDBECisjZGVmaW5lIEdM
X0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZX09FUyAweDkwMEUKKyNkZWZpbmUgR0xfVU5TSUdO
RURfSU5UX1NBTVBMRVJfQ1VCRV9NQVBfQVJSQVlfT0VTIDB4OTAwRgorI2RlZmluZSBHTF9JTUFH
RV9DVUJFX01BUF9BUlJBWV9PRVMgICAgICAgMHg5MDU0CisjZGVmaW5lIEdMX0lOVF9JTUFHRV9D
VUJFX01BUF9BUlJBWV9PRVMgICAweDkwNUYKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX0lNQUdF
X0NVQkVfTUFQX0FSUkFZX09FUyAweDkwNkEKKyNlbmRpZiAvKiBHTF9PRVNfdGV4dHVyZV9jdWJl
X21hcF9hcnJheSAqLworCiAjaWZuZGVmIEdMX09FU190ZXh0dXJlX2Zsb2F0CiAjZGVmaW5lIEdM
X09FU190ZXh0dXJlX2Zsb2F0IDEKLSNlbmRpZgorI2VuZGlmIC8qIEdMX09FU190ZXh0dXJlX2Zs
b2F0ICovCiAKLS8qIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciAqLwogI2lmbmRlZiBHTF9P
RVNfdGV4dHVyZV9mbG9hdF9saW5lYXIKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGlu
ZWFyIDEKLSNlbmRpZgorI2VuZGlmIC8qIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciAqLwog
Ci0vKiBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0ICovCiAjaWZuZGVmIEdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXQKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCAxCi0jZW5kaWYK
KyNkZWZpbmUgR0xfSEFMRl9GTE9BVF9PRVMgICAgICAgICAgICAgICAgIDB4OEQ2MQorI2VuZGlm
IC8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQgKi8KIAotLyogR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdF9saW5lYXIgKi8KICNpZm5kZWYgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgMQotI2VuZGlmCisj
ZW5kaWYgLyogR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgKi8KIAotLyogR0xfT0VT
X3RleHR1cmVfbnBvdCAqLwogI2lmbmRlZiBHTF9PRVNfdGV4dHVyZV9ucG90CiAjZGVmaW5lIEdM
X09FU190ZXh0dXJlX25wb3QgMQorI2VuZGlmIC8qIEdMX09FU190ZXh0dXJlX25wb3QgKi8KKwor
I2lmbmRlZiBHTF9PRVNfdGV4dHVyZV9zdGVuY2lsOAorI2RlZmluZSBHTF9PRVNfdGV4dHVyZV9z
dGVuY2lsOCAxCisjZGVmaW5lIEdMX1NURU5DSUxfSU5ERVhfT0VTICAgICAgICAgICAgICAweDE5
MDEKKyNkZWZpbmUgR0xfU1RFTkNJTF9JTkRFWDhfT0VTICAgICAgICAgICAgIDB4OEQ0OAorI2Vu
ZGlmIC8qIEdMX09FU190ZXh0dXJlX3N0ZW5jaWw4ICovCisKKyNpZm5kZWYgR0xfT0VTX3RleHR1
cmVfc3RvcmFnZV9tdWx0aXNhbXBsZV8yZF9hcnJheQorI2RlZmluZSBHTF9PRVNfdGV4dHVyZV9z
dG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5IDEKKyNkZWZpbmUgR0xfVEVYVFVSRV8yRF9NVUxU
SVNBTVBMRV9BUlJBWV9PRVMgMHg5MTAyCisjZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR18yRF9N
VUxUSVNBTVBMRV9BUlJBWV9PRVMgMHg5MTA1CisjZGVmaW5lIEdMX1NBTVBMRVJfMkRfTVVMVElT
QU1QTEVfQVJSQVlfT0VTIDB4OTEwQgorI2RlZmluZSBHTF9JTlRfU0FNUExFUl8yRF9NVUxUSVNB
TVBMRV9BUlJBWV9PRVMgMHg5MTBDCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJE
X01VTFRJU0FNUExFX0FSUkFZX09FUyAweDkxMEQKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVEVYU1RPUkFHRTNETVVMVElTQU1QTEVPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xz
aXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlvbnMp
OworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlT0VTIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNh
bXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgsIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7CiAjZW5k
aWYKKyNlbmRpZiAvKiBHTF9PRVNfdGV4dHVyZV9zdG9yYWdlX211bHRpc2FtcGxlXzJkX2FycmF5
ICovCiAKLS8qIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0ICovCisjaWZuZGVmIEdMX09FU190
ZXh0dXJlX3ZpZXcKKyNkZWZpbmUgR0xfT0VTX3RleHR1cmVfdmlldyAxCisjZGVmaW5lIEdMX1RF
WFRVUkVfVklFV19NSU5fTEVWRUxfT0VTICAgICAweDgyREIKKyNkZWZpbmUgR0xfVEVYVFVSRV9W
SUVXX05VTV9MRVZFTFNfT0VTICAgIDB4ODJEQworI2RlZmluZSBHTF9URVhUVVJFX1ZJRVdfTUlO
X0xBWUVSX09FUyAgICAgMHg4MkRECisjZGVmaW5lIEdMX1RFWFRVUkVfVklFV19OVU1fTEFZRVJT
X09FUyAgICAweDgyREUKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTICAgICAg
IDB4ODJERgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhUVVJFVklFV09FU1BS
T0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHRhcmdldCwgR0x1aW50IG9yaWd0ZXh0dXJlLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBtaW5sZXZlbCwgR0x1aW50IG51bWxldmVscywg
R0x1aW50IG1pbmxheWVyLCBHTHVpbnQgbnVtbGF5ZXJzKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9U
T1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXh0dXJlVmlld09FUyAoR0x1
aW50IHRleHR1cmUsIEdMZW51bSB0YXJnZXQsIEdMdWludCBvcmlndGV4dHVyZSwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHVpbnQgbWlubGV2ZWwsIEdMdWludCBudW1sZXZlbHMsIEdMdWludCBt
aW5sYXllciwgR0x1aW50IG51bWxheWVycyk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9PRVNfdGV4
dHVyZV92aWV3ICovCisKICNpZm5kZWYgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICNkZWZp
bmUgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgMQorI2RlZmluZSBHTF9WRVJURVhfQVJSQVlf
QklORElOR19PRVMgICAgICAgMHg4NUI1Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEJJTkRWRVJURVhBUlJBWU9FU1BST0MpIChHTHVpbnQgYXJyYXkpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xERUxFVEVWRVJURVhBUlJBWVNPRVNQUk9DKSAoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKmFycmF5cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdF
TlZFUlRFWEFSUkFZU09FU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKTsKK3R5cGVk
ZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1ZFUlRFWEFSUkFZT0VTUFJPQykgKEdM
dWludCBhcnJheSk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQmluZFZlcnRleEFycmF5T0VTIChHTHVpbnQgYXJyYXkpOwogR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlVmVydGV4QXJyYXlzT0VTIChHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqYXJyYXlzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
blZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7CiBHTF9BUElDQUxM
IEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzVmVydGV4QXJyYXlPRVMgKEdMdWludCBhcnJheSk7
CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklORFZFUlRFWEFSUkFZ
T0VTUFJPQykgKEdMdWludCBhcnJheSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TERFTEVURVZFUlRFWEFSUkFZU09FU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJy
YXlzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOVkVSVEVYQVJSQVlTT0VT
UFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEdM
X0FQSUVOVFJZUCBQRk5HTElTVkVSVEVYQVJSQVlPRVNQUk9DKSAoR0x1aW50IGFycmF5KTsKLSNl
bmRpZgorI2VuZGlmIC8qIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0ICovCiAKLS8qIEdMX09F
U192ZXJ0ZXhfaGFsZl9mbG9hdCAqLwogI2lmbmRlZiBHTF9PRVNfdmVydGV4X2hhbGZfZmxvYXQK
ICNkZWZpbmUgR0xfT0VTX3ZlcnRleF9oYWxmX2Zsb2F0IDEKLSNlbmRpZgorI2VuZGlmIC8qIEdM
X09FU192ZXJ0ZXhfaGFsZl9mbG9hdCAqLwogCi0vKiBHTF9PRVNfdmVydGV4X3R5cGVfMTBfMTBf
MTBfMiAqLwogI2lmbmRlZiBHTF9PRVNfdmVydGV4X3R5cGVfMTBfMTBfMTBfMgogI2RlZmluZSBH
TF9PRVNfdmVydGV4X3R5cGVfMTBfMTBfMTBfMiAxCi0jZW5kaWYKKyNkZWZpbmUgR0xfVU5TSUdO
RURfSU5UXzEwXzEwXzEwXzJfT0VTICAgIDB4OERGNgorI2RlZmluZSBHTF9JTlRfMTBfMTBfMTBf
Ml9PRVMgICAgICAgICAgICAgMHg4REY3CisjZW5kaWYgLyogR0xfT0VTX3ZlcnRleF90eXBlXzEw
XzEwXzEwXzIgKi8KIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBLSFIgZXh0ZW5zaW9uIGZ1bmN0
aW9ucwotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0jaWZuZGVmIEdMX0tIUl9kZWJ1ZwotI2RlZmlu
ZSBHTF9LSFJfZGVidWcgMQotI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbERlYnVnTWVzc2FnZUNvbnRyb2wgKEdMZW51bSBzb3VyY2UsIEdM
ZW51bSB0eXBlLCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAq
aWRzLCBHTGJvb2xlYW4gZW5hYmxlZCk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xE
ZWJ1Z01lc3NhZ2VJbnNlcnQgKEdMZW51bSBzb3VyY2UsIEdMZW51bSB0eXBlLCBHTHVpbnQgaWQs
IEdMZW51bSBzZXZlcml0eSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqYnVmKTsKLUdM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlYnVnTWVzc2FnZUNhbGxiYWNrIChHTERFQlVH
UFJPQyBjYWxsYmFjaywgY29uc3Qgdm9pZCAqdXNlclBhcmFtKTsKLUdMX0FQSUNBTEwgR0x1aW50
IEdMX0FQSUVOVFJZIGdsR2V0RGVidWdNZXNzYWdlTG9nIChHTHVpbnQgY291bnQsIEdMc2l6ZWkg
YnVmc2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBHTHVpbnQgKmlkcywgR0xl
bnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIgKm1lc3NhZ2VMb2cpOwot
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHVzaERlYnVnR3JvdXAgKEdMZW51bSBzb3Vy
Y2UsIEdMdWludCBpZCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWVzc2FnZSk7Ci1H
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQb3BEZWJ1Z0dyb3VwICh2b2lkKTsKLUdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE9iamVjdExhYmVsIChHTGVudW0gaWRlbnRpZmllciwg
R0x1aW50IG5hbWUsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKLUdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldE9iamVjdExhYmVsIChHTGVudW0gaWRlbnRpZmll
ciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIg
KmxhYmVsKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE9iamVjdFB0ckxhYmVsIChj
b25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKLUdM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldE9iamVjdFB0ckxhYmVsIChjb25zdCB2b2lk
ICpwdHIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsK
LUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBvaW50ZXJ2IChHTGVudW0gcG5hbWUs
IHZvaWQgKipwYXJhbXMpOwotI2VuZGlmIAotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xERUJVR01FU1NBR0VDT05UUk9MUFJPQykgKEdMZW51bSBzb3VyY2UsIEdMZW51bSB0eXBlLCBH
TGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqaWRzLCBHTGJvb2xl
YW4gZW5hYmxlZCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFQlVHTUVTU0FH
RUlOU0VSVFBST0MpIChHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50IGlkLCBHTGVu
dW0gc2V2ZXJpdHksIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmJ1Zik7Ci10eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFQlVHTUVTU0FHRUNBTExCQUNLUFJPQykgKEdMREVC
VUdQUk9DIGNhbGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYW0pOwotdHlwZWRlZiBHTHVpbnQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVERFQlVHTUVTU0FHRUxPR1BST0MpIChHTHVpbnQgY291bnQs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBHTHVpbnQg
KmlkcywgR0xlbnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIgKm1lc3Nh
Z2VMb2cpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQVVNIREVCVUdHUk9VUFBS
T0MpIChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNo
YXIgKm1lc3NhZ2UpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQT1BERUJVR0dS
T1VQUFJPQykgKHZvaWQpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xPQkpFQ1RM
QUJFTFBST0MpIChHTGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VUT0JKRUNUTEFCRUxQUk9DKSAoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1lLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpsYWJlbCk7Ci10eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTE9CSkVDVFBUUkxBQkVMUFJPQykgKGNvbnN0IHZvaWQgKnB0
ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpOwotdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVRPQkpFQ1RQVFJMQUJFTFBST0MpIChjb25zdCB2b2lkICpwdHIs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsKLXR5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUE9JTlRFUlZQUk9DKSAoR0xlbnVtIHBuYW1l
LCB2b2lkICoqcGFyYW1zKTsKLSNlbmRpZgotCi0jaWZuZGVmIEdMX0tIUl90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2FzdGNfbGRyCi0jZGVmaW5lIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNf
bGRyIDEKLSNlbmRpZgotCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgotICogQU1EIGV4dGVuc2lvbiBm
dW5jdGlvbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotLyogR0xfQU1EX2NvbXByZXNzZWRfM0RD
X3RleHR1cmUgKi8KICNpZm5kZWYgR0xfQU1EX2NvbXByZXNzZWRfM0RDX3RleHR1cmUKICNkZWZp
bmUgR0xfQU1EX2NvbXByZXNzZWRfM0RDX3RleHR1cmUgMQotI2VuZGlmCisjZGVmaW5lIEdMXzNE
Q19YX0FNRCAgICAgICAgICAgICAgICAgICAgICAweDg3RjkKKyNkZWZpbmUgR0xfM0RDX1hZX0FN
RCAgICAgICAgICAgICAgICAgICAgIDB4ODdGQQorI2VuZGlmIC8qIEdMX0FNRF9jb21wcmVzc2Vk
XzNEQ190ZXh0dXJlICovCiAKLS8qIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlICovCiAj
aWZuZGVmIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlCiAjZGVmaW5lIEdMX0FNRF9jb21w
cmVzc2VkX0FUQ190ZXh0dXJlIDEKLSNlbmRpZgorI2RlZmluZSBHTF9BVENfUkdCX0FNRCAgICAg
ICAgICAgICAgICAgICAgMHg4QzkyCisjZGVmaW5lIEdMX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhB
X0FNRCAgICAweDhDOTMKKyNkZWZpbmUgR0xfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FN
RCAweDg3RUUKKyNlbmRpZiAvKiBHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSAqLwogCi0v
KiBBTURfcGVyZm9ybWFuY2VfbW9uaXRvciAqLwogI2lmbmRlZiBHTF9BTURfcGVyZm9ybWFuY2Vf
bW9uaXRvcgogI2RlZmluZSBHTF9BTURfcGVyZm9ybWFuY2VfbW9uaXRvciAxCisjZGVmaW5lIEdM
X0NPVU5URVJfVFlQRV9BTUQgICAgICAgICAgICAgICAweDhCQzAKKyNkZWZpbmUgR0xfQ09VTlRF
Ul9SQU5HRV9BTUQgICAgICAgICAgICAgIDB4OEJDMQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQ2
NF9BTUQgICAgICAgICAgICAgMHg4QkMyCisjZGVmaW5lIEdMX1BFUkNFTlRBR0VfQU1EICAgICAg
ICAgICAgICAgICAweDhCQzMKKyNkZWZpbmUgR0xfUEVSRk1PTl9SRVNVTFRfQVZBSUxBQkxFX0FN
RCAgIDB4OEJDNAorI2RlZmluZSBHTF9QRVJGTU9OX1JFU1VMVF9TSVpFX0FNRCAgICAgICAgMHg4
QkM1CisjZGVmaW5lIEdMX1BFUkZNT05fUkVTVUxUX0FNRCAgICAgICAgICAgICAweDhCQzYKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JHUk9VUFNBTURQUk9D
KSAoR0xpbnQgKm51bUdyb3VwcywgR0xzaXplaSBncm91cHNTaXplLCBHTHVpbnQgKmdyb3Vwcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SQ09VTlRFUlNB
TURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTGludCAqbnVtQ291bnRlcnMsIEdMaW50ICptYXhBY3Rp
dmVDb3VudGVycywgR0xzaXplaSBjb3VudGVyU2l6ZSwgR0x1aW50ICpjb3VudGVycyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SR1JPVVBTVFJJTkdBTURQ
Uk9DKSAoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xj
aGFyICpncm91cFN0cmluZyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBF
UkZNT05JVE9SQ09VTlRFUlNUUklOR0FNRFBST0MpIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3Vu
dGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpjb3VudGVyU3Ry
aW5nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JDT1VO
VEVSSU5GT0FNRFBST0MpIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5h
bWUsIHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5QRVJG
TU9OSVRPUlNBTURQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKm1vbml0b3JzKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUEVSRk1PTklUT1JTQU1EUFJPQykgKEdMc2l6
ZWkgbiwgR0x1aW50ICptb25pdG9ycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFNFTEVDVFBFUkZNT05JVE9SQ09VTlRFUlNBTURQUk9DKSAoR0x1aW50IG1vbml0b3IsIEdMYm9v
bGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdMdWludCAqY291
bnRlckxpc3QpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCRUdJTlBFUkZNT05J
VE9SQU1EUFJPQykgKEdMdWludCBtb25pdG9yKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRU5EUEVSRk1PTklUT1JBTURQUk9DKSAoR0x1aW50IG1vbml0b3IpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkNPVU5URVJEQVRBQU1EUFJPQykg
KEdMdWludCBtb25pdG9yLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgZGF0YVNpemUsIEdMdWludCAq
ZGF0YSwgR0xpbnQgKmJ5dGVzV3JpdHRlbik7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwog
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JHcm91cHNBTUQgKEdM
aW50ICpudW1Hcm91cHMsIEdMc2l6ZWkgZ3JvdXBzU2l6ZSwgR0x1aW50ICpncm91cHMpOwogR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JDb3VudGVyc0FNRCAoR0x1
aW50IGdyb3VwLCBHTGludCAqbnVtQ291bnRlcnMsIEdMaW50ICptYXhBY3RpdmVDb3VudGVycywg
R0xzaXplaSBjb3VudGVyU2l6ZSwgR0x1aW50ICpjb3VudGVycyk7CiBHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckdyb3VwU3RyaW5nQU1EIChHTHVpbnQgZ3JvdXAs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmdyb3VwU3RyaW5nKTsK
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBlcmZNb25pdG9yQ291bnRlclN0cmlu
Z0FNRCAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqY291bnRlclN0cmluZyk7Ci1HTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1EIChHTHVpbnQgZ3JvdXAsIEdM
dWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIEdMdm9pZCAqZGF0YSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1EIChHTHVpbnQgZ3Jv
dXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpOwogR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuUGVyZk1vbml0b3JzQU1EIChHTHNpemVpIG4sIEdMdWlu
dCAqbW9uaXRvcnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUGVyZk1v
bml0b3JzQU1EIChHTHNpemVpIG4sIEdMdWludCAqbW9uaXRvcnMpOwotR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsU2VsZWN0UGVyZk1vbml0b3JDb3VudGVyc0FNRCAoR0x1aW50IG1vbml0
b3IsIEdMYm9vbGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdM
dWludCAqY291bnRlcnNMaXN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNlbGVj
dFBlcmZNb25pdG9yQ291bnRlcnNBTUQgKEdMdWludCBtb25pdG9yLCBHTGJvb2xlYW4gZW5hYmxl
LCBHTHVpbnQgZ3JvdXAsIEdMaW50IG51bUNvdW50ZXJzLCBHTHVpbnQgKmNvdW50ZXJMaXN0KTsK
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJlZ2luUGVyZk1vbml0b3JBTUQgKEdMdWlu
dCBtb25pdG9yKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuZFBlcmZNb25pdG9y
QU1EIChHTHVpbnQgbW9uaXRvcik7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQ
ZXJmTW9uaXRvckNvdW50ZXJEYXRhQU1EIChHTHVpbnQgbW9uaXRvciwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGRhdGFTaXplLCBHTHVpbnQgKmRhdGEsIEdMaW50ICpieXRlc1dyaXR0ZW4pOwogI2Vu
ZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SR1JPVVBT
QU1EUFJPQykgKEdMaW50ICpudW1Hcm91cHMsIEdMc2l6ZWkgZ3JvdXBzU2l6ZSwgR0x1aW50ICpn
cm91cHMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkNP
VU5URVJTQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAq
bWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMp
OwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkdST1VQU1RS
SU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5n
dGgsIEdMY2hhciAqZ3JvdXBTdHJpbmcpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRVRQRVJGTU9OSVRPUkNPVU5URVJTVFJJTkdBTURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTHVp
bnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqY291
bnRlclN0cmluZyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05J
VE9SQ09VTlRFUklORk9BTURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xl
bnVtIHBuYW1lLCBHTHZvaWQgKmRhdGEpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRU5QRVJGTU9OSVRPUlNBTURQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKm1vbml0b3JzKTsK
LXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUEVSRk1PTklUT1JTQU1EUFJP
QykgKEdMc2l6ZWkgbiwgR0x1aW50ICptb25pdG9ycyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFNFTEVDVFBFUkZNT05JVE9SQ09VTlRFUlNBTURQUk9DKSAoR0x1aW50IG1vbml0
b3IsIEdMYm9vbGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdM
dWludCAqY291bnRlcnNMaXN0KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkVH
SU5QRVJGTU9OSVRPUkFNRFBST0MpIChHTHVpbnQgbW9uaXRvcik7Ci10eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEVORFBFUkZNT05JVE9SQU1EUFJPQykgKEdMdWludCBtb25pdG9yKTsK
LXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JDT1VOVEVSREFU
QUFNRFBST0MpIChHTHVpbnQgbW9uaXRvciwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGRhdGFTaXpl
LCBHTHVpbnQgKmRhdGEsIEdMaW50ICpieXRlc1dyaXR0ZW4pOwotI2VuZGlmCisjZW5kaWYgLyog
R0xfQU1EX3BlcmZvcm1hbmNlX21vbml0b3IgKi8KIAotLyogR0xfQU1EX3Byb2dyYW1fYmluYXJ5
X1o0MDAgKi8KICNpZm5kZWYgR0xfQU1EX3Byb2dyYW1fYmluYXJ5X1o0MDAKICNkZWZpbmUgR0xf
QU1EX3Byb2dyYW1fYmluYXJ5X1o0MDAgMQotI2VuZGlmCisjZGVmaW5lIEdMX1o0MDBfQklOQVJZ
X0FNRCAgICAgICAgICAgICAgICAweDg3NDAKKyNlbmRpZiAvKiBHTF9BTURfcHJvZ3JhbV9iaW5h
cnlfWjQwMCAqLwogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKLSAqIEFOR0xFIGV4dGVuc2lvbiBmdW5j
dGlvbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgR0xfQU5EUk9JRF9leHRlbnNpb25f
cGFja19lczMxYQorI2RlZmluZSBHTF9BTkRST0lEX2V4dGVuc2lvbl9wYWNrX2VzMzFhIDEKKyNl
bmRpZiAvKiBHTF9BTkRST0lEX2V4dGVuc2lvbl9wYWNrX2VzMzFhICovCiAKLS8qIEdMX0FOR0xF
X2RlcHRoX3RleHR1cmUgKi8KICNpZm5kZWYgR0xfQU5HTEVfZGVwdGhfdGV4dHVyZQogI2RlZmlu
ZSBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIDEKLSNlbmRpZgorI2VuZGlmIC8qIEdMX0FOR0xFX2Rl
cHRoX3RleHR1cmUgKi8KIAotLyogR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAqLwogI2lmbmRl
ZiBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0CiAjZGVmaW5lIEdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQgMQorI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFICAgICAgICAgMHg4Q0E4
CisjZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUgICAgICAgICAweDhDQTkKKyNkZWZp
bmUgR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFIDB4OENBNgorI2RlZmluZSBHTF9S
RUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUgMHg4Q0FBCit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEJMSVRGUkFNRUJVRkZFUkFOR0xFUFJPQykgKEdMaW50IHNyY1gwLCBHTGlu
dCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0
WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmls
dGVyKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSAoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBH
TGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQg
ZHN0WDEsIEdMaW50IGRzdFkxLCBHTGJpdGZpZWxkIG1hc2ssIEdMZW51bSBmaWx0ZXIpOwogI2Vu
ZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMSVRGUkFNRUJVRkZFUkFOR0xF
UFJPQykgKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kx
LCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xi
aXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKLSNlbmRpZgorI2VuZGlmIC8qIEdMX0FOR0xF
X2ZyYW1lYnVmZmVyX2JsaXQgKi8KIAotLyogR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUgKi8KICNpZm5kZWYgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKICNkZWZpbmUg
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgMQorI2RlZmluZSBHTF9SRU5ERVJCVUZG
RVJfU0FNUExFU19BTkdMRSAgICAgMHg4Q0FCCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfTVVMVElTQU1QTEVfQU5HTEUgMHg4RDU2CisjZGVmaW5lIEdMX01BWF9TQU1QTEVTX0FO
R0xFICAgICAgICAgICAgICAweDhENTcKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
UkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFQU5HTEVQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSAoR0xl
bnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKICNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xSRU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVBTkdMRVBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotI2VuZGlmCisjZW5kaWYgLyogR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUgKi8KIAotI2lmbmRlZiBHTF9BTkdMRV9pbnN0YW5jZWRfYXJy
YXlzIAorI2lmbmRlZiBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzCiAjZGVmaW5lIEdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMgMQorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklT
T1JfQU5HTEUgMHg4OEZFCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdBUlJB
WVNJTlNUQU5DRURBTkdMRVBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DKSAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3Vu
dCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JB
TkdMRVBST0MpIChHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKICNpZmRlZiBHTF9HTEVY
VF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xz
aXplaSBwcmltY291bnQpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOwogR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFIChHTHVpbnQgaW5kZXgs
IEdMdWludCBkaXZpc29yKTsKICNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0
LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQykgKEdMZW51bSBtb2Rl
LCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBwcmltY291bnQpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRS
SUJESVZJU09SQU5HTEVQUk9DKSAoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7Ci0jZW5k
aWYKKyNlbmRpZiAvKiBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzICovCiAKLS8qIEdMX0FOR0xF
X3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIgKi8KLSNpZm5kZWYgR0xfQU5HTEVfcGFja19yZXZlcnNl
X3Jvd19vcmRlciAKKyNpZm5kZWYgR0xfQU5HTEVfcGFja19yZXZlcnNlX3Jvd19vcmRlcgogI2Rl
ZmluZSBHTF9BTkdMRV9wYWNrX3JldmVyc2Vfcm93X29yZGVyIDEKLSNlbmRpZgorI2RlZmluZSBH
TF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFICAgMHg5M0E0CisjZW5kaWYgLyogR0xfQU5H
TEVfcGFja19yZXZlcnNlX3Jvd19vcmRlciAqLwogCi0vKiBHTF9BTkdMRV9wcm9ncmFtX2JpbmFy
eSAqLwogI2lmbmRlZiBHTF9BTkdMRV9wcm9ncmFtX2JpbmFyeQogI2RlZmluZSBHTF9BTkdMRV9w
cm9ncmFtX2JpbmFyeSAxCi0jZW5kaWYKKyNkZWZpbmUgR0xfUFJPR1JBTV9CSU5BUllfQU5HTEUg
ICAgICAgICAgIDB4OTNBNgorI2VuZGlmIC8qIEdMX0FOR0xFX3Byb2dyYW1fYmluYXJ5ICovCiAK
LS8qIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyAqLwotI2lmbmRlZiBHTF9BTkdM
RV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMgCisjaWZuZGVmIEdMX0FOR0xFX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MwogI2RlZmluZSBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMg
MQotI2VuZGlmCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUgMHg4
M0YyCisjZW5kaWYgLyogR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzICovCiAKLS8q
IEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSAqLwotI2lmbmRlZiBHTF9BTkdMRV90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUgCisjaWZuZGVmIEdMX0FOR0xFX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0NQogI2RlZmluZSBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUgMQot
I2VuZGlmCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUgMHg4M0Yz
CisjZW5kaWYgLyogR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1ICovCiAKLS8qIEdM
X0FOR0xFX3RleHR1cmVfdXNhZ2UgKi8KLSNpZm5kZWYgR0xfQU5HTEVfdGV4dHVyZV91c2FnZSAK
KyNpZm5kZWYgR0xfQU5HTEVfdGV4dHVyZV91c2FnZQogI2RlZmluZSBHTF9BTkdMRV90ZXh0dXJl
X3VzYWdlIDEKLSNlbmRpZgorI2RlZmluZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFICAgICAgICAg
ICAgMHg5M0EyCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQU5HTEUgICAweDkz
QTMKKyNlbmRpZiAvKiBHTF9BTkdMRV90ZXh0dXJlX3VzYWdlICovCiAKLSNpZm5kZWYgR0xfQU5H
TEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIAorI2lmbmRlZiBHTF9BTkdMRV90cmFuc2xhdGVk
X3NoYWRlcl9zb3VyY2UKICNkZWZpbmUgR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNl
IDEKKyNkZWZpbmUgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRSAweDkz
QTAKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVFJBTlNMQVRFRFNIQURFUlNP
VVJDRUFOR0xFUFJPQykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
IChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFy
ICpzb3VyY2UpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRS
QU5TTEFURURTSEFERVJTT1VSQ0VBTkdMRVBST0MpIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1
ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpzb3VyY2UpOwotI2VuZGlmCisjZW5kaWYg
LyogR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlICovCiAKLS8qLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKgotICogQVBQTEUgZXh0ZW5zaW9uIGZ1bmN0aW9ucwotICotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor
I2lmbmRlZiBHTF9BUFBMRV9jbGlwX2Rpc3RhbmNlCisjZGVmaW5lIEdMX0FQUExFX2NsaXBfZGlz
dGFuY2UgMQorI2RlZmluZSBHTF9NQVhfQ0xJUF9ESVNUQU5DRVNfQVBQTEUgICAgICAgMHgwRDMy
CisjZGVmaW5lIEdMX0NMSVBfRElTVEFOQ0UwX0FQUExFICAgICAgICAgICAweDMwMDAKKyNkZWZp
bmUgR0xfQ0xJUF9ESVNUQU5DRTFfQVBQTEUgICAgICAgICAgIDB4MzAwMQorI2RlZmluZSBHTF9D
TElQX0RJU1RBTkNFMl9BUFBMRSAgICAgICAgICAgMHgzMDAyCisjZGVmaW5lIEdMX0NMSVBfRElT
VEFOQ0UzX0FQUExFICAgICAgICAgICAweDMwMDMKKyNkZWZpbmUgR0xfQ0xJUF9ESVNUQU5DRTRf
QVBQTEUgICAgICAgICAgIDB4MzAwNAorI2RlZmluZSBHTF9DTElQX0RJU1RBTkNFNV9BUFBMRSAg
ICAgICAgICAgMHgzMDA1CisjZGVmaW5lIEdMX0NMSVBfRElTVEFOQ0U2X0FQUExFICAgICAgICAg
ICAweDMwMDYKKyNkZWZpbmUgR0xfQ0xJUF9ESVNUQU5DRTdfQVBQTEUgICAgICAgICAgIDB4MzAw
NworI2VuZGlmIC8qIEdMX0FQUExFX2NsaXBfZGlzdGFuY2UgKi8KIAotLyogR0xfQVBQTEVfY29w
eV90ZXh0dXJlX2xldmVscyAqLworI2lmbmRlZiBHTF9BUFBMRV9jb2xvcl9idWZmZXJfcGFja2Vk
X2Zsb2F0CisjZGVmaW5lIEdMX0FQUExFX2NvbG9yX2J1ZmZlcl9wYWNrZWRfZmxvYXQgMQorI2Vu
ZGlmIC8qIEdMX0FQUExFX2NvbG9yX2J1ZmZlcl9wYWNrZWRfZmxvYXQgKi8KKwogI2lmbmRlZiBH
TF9BUFBMRV9jb3B5X3RleHR1cmVfbGV2ZWxzCiAjZGVmaW5lIEdMX0FQUExFX2NvcHlfdGV4dHVy
ZV9sZXZlbHMgMQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYVFVSRUxF
VkVMU0FQUExFUFJPQykgKEdMdWludCBkZXN0aW5hdGlvblRleHR1cmUsIEdMdWludCBzb3VyY2VU
ZXh0dXJlLCBHTGludCBzb3VyY2VCYXNlTGV2ZWwsIEdMc2l6ZWkgc291cmNlTGV2ZWxDb3VudCk7
CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsQ29weVRleHR1cmVMZXZlbHNBUFBMRSAoR0x1aW50IGRlc3RpbmF0aW9uVGV4dHVyZSwgR0x1
aW50IHNvdXJjZVRleHR1cmUsIEdMaW50IHNvdXJjZUJhc2VMZXZlbCwgR0xzaXplaSBzb3VyY2VM
ZXZlbENvdW50KTsKICNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZ
VEVYVFVSRUxFVkVMU0FQUExFUFJPQykgKEdMdWludCBkZXN0aW5hdGlvblRleHR1cmUsIEdMdWlu
dCBzb3VyY2VUZXh0dXJlLCBHTGludCBzb3VyY2VCYXNlTGV2ZWwsIEdMc2l6ZWkgc291cmNlTGV2
ZWxDb3VudCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBHTF9BUFBMRV9jb3B5X3RleHR1cmVfbGV2ZWxz
ICovCiAKLS8qIEdMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlICovCiAjaWZuZGVmIEdM
X0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlCiAjZGVmaW5lIEdMX0FQUExFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIDEKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfQVBQTEUg
ICAgIDB4OENBQgorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
X0FQUExFIDB4OEQ1NgorI2RlZmluZSBHTF9NQVhfU0FNUExFU19BUFBMRSAgICAgICAgICAgICAg
MHg4RDU3CisjZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZGRVJfQVBQTEUgICAgICAgICAweDhDQTgK
KyNkZWZpbmUgR0xfRFJBV19GUkFNRUJVRkZFUl9BUFBMRSAgICAgICAgIDB4OENBOQorI2RlZmlu
ZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQVBQTEUgMHg4Q0E2CisjZGVmaW5lIEdMX1JF
QURfRlJBTUVCVUZGRVJfQklORElOR19BUFBMRSAweDhDQUEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFQVBQTEVQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMUkVTT0xWRU1VTFRJU0FNUExFRlJBTUVCVUZGRVJBUFBMRVBST0MpICh2b2lkKTsKICNpZmRl
ZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBUFBMRSAoR0xlbnVtLCBHTHNpemVpLCBHTGVudW0s
IEdMc2l6ZWksIEdMc2l6ZWkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQVBQTEUgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2Ft
cGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZXNvbHZlTXVsdGlzYW1wbGVGcmFt
ZWJ1ZmZlckFQUExFICh2b2lkKTsKLSNlbmRpZiAvKiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCi10
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNB
TVBMRUFQUExFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci10eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFU09MVkVNVUxUSVNBTVBMRUZSQU1FQlVGRkVSQVBQTEVQ
Uk9DKSAodm9pZCk7CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSAqLwogCi0vKiBHTF9BUFBMRV9yZ2JfNDIyICovCiAjaWZuZGVmIEdMX0FQUExFX3Jn
Yl80MjIKICNkZWZpbmUgR0xfQVBQTEVfcmdiXzQyMiAxCi0jZW5kaWYKKyNkZWZpbmUgR0xfUkdC
XzQyMl9BUFBMRSAgICAgICAgICAgICAgICAgIDB4OEExRgorI2RlZmluZSBHTF9VTlNJR05FRF9T
SE9SVF84XzhfQVBQTEUgICAgICAgMHg4NUJBCisjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzhf
OF9SRVZfQVBQTEUgICAweDg1QkIKKyNkZWZpbmUgR0xfUkdCX1JBV180MjJfQVBQTEUgICAgICAg
ICAgICAgIDB4OEE1MQorI2VuZGlmIC8qIEdMX0FQUExFX3JnYl80MjIgKi8KIAotLyogR0xfQVBQ
TEVfc3luYyAqLwogI2lmbmRlZiBHTF9BUFBMRV9zeW5jCiAjZGVmaW5lIEdMX0FQUExFX3N5bmMg
MQorI2RlZmluZSBHTF9TWU5DX09CSkVDVF9BUFBMRSAgICAgICAgICAgICAgMHg4QTUzCisjZGVm
aW5lIEdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUX0FQUExFICAweDkxMTEKKyNkZWZpbmUgR0xf
T0JKRUNUX1RZUEVfQVBQTEUgICAgICAgICAgICAgIDB4OTExMgorI2RlZmluZSBHTF9TWU5DX0NP
TkRJVElPTl9BUFBMRSAgICAgICAgICAgMHg5MTEzCisjZGVmaW5lIEdMX1NZTkNfU1RBVFVTX0FQ
UExFICAgICAgICAgICAgICAweDkxMTQKKyNkZWZpbmUgR0xfU1lOQ19GTEFHU19BUFBMRSAgICAg
ICAgICAgICAgIDB4OTExNQorI2RlZmluZSBHTF9TWU5DX0ZFTkNFX0FQUExFICAgICAgICAgICAg
ICAgMHg5MTE2CisjZGVmaW5lIEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFX0FQUExFIDB4
OTExNworI2RlZmluZSBHTF9VTlNJR05BTEVEX0FQUExFICAgICAgICAgICAgICAgMHg5MTE4Cisj
ZGVmaW5lIEdMX1NJR05BTEVEX0FQUExFICAgICAgICAgICAgICAgICAweDkxMTkKKyNkZWZpbmUg
R0xfQUxSRUFEWV9TSUdOQUxFRF9BUFBMRSAgICAgICAgIDB4OTExQQorI2RlZmluZSBHTF9USU1F
T1VUX0VYUElSRURfQVBQTEUgICAgICAgICAgMHg5MTFCCisjZGVmaW5lIEdMX0NPTkRJVElPTl9T
QVRJU0ZJRURfQVBQTEUgICAgICAweDkxMUMKKyNkZWZpbmUgR0xfV0FJVF9GQUlMRURfQVBQTEUg
ICAgICAgICAgICAgIDB4OTExRAorI2RlZmluZSBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVF9B
UFBMRSAgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9USU1FT1VUX0lHTk9SRURfQVBQTEUgICAgICAg
ICAgMHhGRkZGRkZGRkZGRkZGRkZGdWxsCit0eXBlZGVmIEdMc3luYyAoR0xfQVBJRU5UUllQIFBG
TkdMRkVOQ0VTWU5DQVBQTEVQUk9DKSAoR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFn
cyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNTWU5DQVBQTEVQUk9D
KSAoR0xzeW5jIHN5bmMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVT
WU5DQVBQTEVQUk9DKSAoR0xzeW5jIHN5bmMpOwordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZ
UCBQRk5HTENMSUVOVFdBSVRTWU5DQVBQTEVQUk9DKSAoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQg
ZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xXQUlUU1lOQ0FQUExFUFJPQykgKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVp
bnQ2NCB0aW1lb3V0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdF
UjY0VkFQUExFUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU1lOQ0lWQVBQTEVQUk9DKSAoR0xzeW5jIHN5bmMs
IEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICp2
YWx1ZXMpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgR0xzeW5jIEdM
X0FQSUVOVFJZIGdsRmVuY2VTeW5jQVBQTEUgKEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQg
ZmxhZ3MpOwogR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1N5bmNBUFBMRSAo
R0xzeW5jIHN5bmMpOwpAQCAtMTM3NCwyODcgKzk2NCw4OTIgQEAKIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldEludGVnZXI2NHZBUFBMRSAoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpw
YXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U3luY2l2QVBQTEUgKEdM
c3luYyBzeW5jLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqdmFsdWVzKTsKICNlbmRpZgotdHlwZWRlZiBHTHN5bmMgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEZFTkNFU1lOQ0FQUExFUFJPQykgKEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxh
Z3MpOwotdHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTU1lOQ0FQUExFUFJP
QykgKEdMc3luYyBzeW5jKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRF
U1lOQ0FQUExFUFJPQykgKEdMc3luYyBzeW5jKTsKLXR5cGVkZWYgR0xlbnVtIChHTF9BUElFTlRS
WVAgUEZOR0xDTElFTlRXQUlUU1lOQ0FQUExFUFJPQykgKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxk
IGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMV0FJVFNZTkNBUFBMRVBST0MpIChHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywgR0x1
aW50NjQgdGltZW91dCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVElOVEVH
RVI2NFZBUFBMRVBST0MpIChHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7Ci10eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNZTkNJVkFQUExFUFJPQykgKEdMc3luYyBzeW5j
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAq
dmFsdWVzKTsKLSNlbmRpZgorI2VuZGlmIC8qIEdMX0FQUExFX3N5bmMgKi8KIAotLyogR0xfQVBQ
TEVfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggKi8KICNpZm5kZWYgR0xfQVBQTEVfdGV4dHVyZV9m
b3JtYXRfQkdSQTg4ODgKICNkZWZpbmUgR0xfQVBQTEVfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgg
MQotI2VuZGlmCisjZGVmaW5lIEdMX0JHUkFfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgw
RTEKKyNkZWZpbmUgR0xfQkdSQThfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4OTNBMQorI2Vu
ZGlmIC8qIEdMX0FQUExFX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCiAKLS8qIEdMX0FQUExF
X3RleHR1cmVfbWF4X2xldmVsICovCiAjaWZuZGVmIEdMX0FQUExFX3RleHR1cmVfbWF4X2xldmVs
CiAjZGVmaW5lIEdMX0FQUExFX3RleHR1cmVfbWF4X2xldmVsIDEKLSNlbmRpZgorI2RlZmluZSBH
TF9URVhUVVJFX01BWF9MRVZFTF9BUFBMRSAgICAgICAgMHg4MTNECisjZW5kaWYgLyogR0xfQVBQ
TEVfdGV4dHVyZV9tYXhfbGV2ZWwgKi8KIAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBBUk0gZXh0
ZW5zaW9uIGZ1bmN0aW9ucwotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBHTF9BUFBMRV90
ZXh0dXJlX3BhY2tlZF9mbG9hdAorI2RlZmluZSBHTF9BUFBMRV90ZXh0dXJlX3BhY2tlZF9mbG9h
dCAxCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVZfQVBQTEUgMHg4QzNC
CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVl9BUFBMRSAweDhDM0UKKyNkZWZp
bmUgR0xfUjExRl9HMTFGX0IxMEZfQVBQTEUgICAgICAgICAgIDB4OEMzQQorI2RlZmluZSBHTF9S
R0I5X0U1X0FQUExFICAgICAgICAgICAgICAgICAgMHg4QzNECisjZW5kaWYgLyogR0xfQVBQTEVf
dGV4dHVyZV9wYWNrZWRfZmxvYXQgKi8KIAotLyogR0xfQVJNX21hbGlfcHJvZ3JhbV9iaW5hcnkg
Ki8KICNpZm5kZWYgR0xfQVJNX21hbGlfcHJvZ3JhbV9iaW5hcnkKICNkZWZpbmUgR0xfQVJNX21h
bGlfcHJvZ3JhbV9iaW5hcnkgMQotI2VuZGlmCisjZGVmaW5lIEdMX01BTElfUFJPR1JBTV9CSU5B
UllfQVJNICAgICAgICAweDhGNjEKKyNlbmRpZiAvKiBHTF9BUk1fbWFsaV9wcm9ncmFtX2JpbmFy
eSAqLwogCi0vKiBHTF9BUk1fbWFsaV9zaGFkZXJfYmluYXJ5ICovCiAjaWZuZGVmIEdMX0FSTV9t
YWxpX3NoYWRlcl9iaW5hcnkKICNkZWZpbmUgR0xfQVJNX21hbGlfc2hhZGVyX2JpbmFyeSAxCi0j
ZW5kaWYKKyNkZWZpbmUgR0xfTUFMSV9TSEFERVJfQklOQVJZX0FSTSAgICAgICAgIDB4OEY2MAor
I2VuZGlmIC8qIEdMX0FSTV9tYWxpX3NoYWRlcl9iaW5hcnkgKi8KIAotLyogR0xfQVJNX3JnYmE4
ICovCiAjaWZuZGVmIEdMX0FSTV9yZ2JhOAogI2RlZmluZSBHTF9BUk1fcmdiYTggMQorI2VuZGlm
IC8qIEdMX0FSTV9yZ2JhOCAqLworCisjaWZuZGVmIEdMX0FSTV9zaGFkZXJfZnJhbWVidWZmZXJf
ZmV0Y2gKKyNkZWZpbmUgR0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAxCisjZGVmaW5l
IEdMX0ZFVENIX1BFUl9TQU1QTEVfQVJNICAgICAgICAgICAweDhGNjUKKyNkZWZpbmUgR0xfRlJB
R01FTlRfU0hBREVSX0ZSQU1FQlVGRkVSX0ZFVENIX01SVF9BUk0gMHg4RjY2CisjZW5kaWYgLyog
R0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAqLworCisjaWZuZGVmIEdMX0FSTV9zaGFk
ZXJfZnJhbWVidWZmZXJfZmV0Y2hfZGVwdGhfc3RlbmNpbAorI2RlZmluZSBHTF9BUk1fc2hhZGVy
X2ZyYW1lYnVmZmVyX2ZldGNoX2RlcHRoX3N0ZW5jaWwgMQorI2VuZGlmIC8qIEdMX0FSTV9zaGFk
ZXJfZnJhbWVidWZmZXJfZmV0Y2hfZGVwdGhfc3RlbmNpbCAqLworCisjaWZuZGVmIEdMX0RNUF9w
cm9ncmFtX2JpbmFyeQorI2RlZmluZSBHTF9ETVBfcHJvZ3JhbV9iaW5hcnkgMQorI2RlZmluZSBH
TF9TTUFQSFMzMF9QUk9HUkFNX0JJTkFSWV9ETVAgICAgMHg5MjUxCisjZGVmaW5lIEdMX1NNQVBI
U19QUk9HUkFNX0JJTkFSWV9ETVAgICAgICAweDkyNTIKKyNkZWZpbmUgR0xfRE1QX1BST0dSQU1f
QklOQVJZX0RNUCAgICAgICAgIDB4OTI1MworI2VuZGlmIC8qIEdMX0RNUF9wcm9ncmFtX2JpbmFy
eSAqLworCisjaWZuZGVmIEdMX0RNUF9zaGFkZXJfYmluYXJ5CisjZGVmaW5lIEdMX0RNUF9zaGFk
ZXJfYmluYXJ5IDEKKyNkZWZpbmUgR0xfU0hBREVSX0JJTkFSWV9ETVAgICAgICAgICAgICAgIDB4
OTI1MAorI2VuZGlmIC8qIEdMX0RNUF9zaGFkZXJfYmluYXJ5ICovCisKKyNpZm5kZWYgR0xfRVhU
X1lVVl90YXJnZXQKKyNkZWZpbmUgR0xfRVhUX1lVVl90YXJnZXQgMQorI2RlZmluZSBHTF9TQU1Q
TEVSX0VYVEVSTkFMXzJEX1kyWV9FWFQgICAgMHg4QkU3CisjZW5kaWYgLyogR0xfRVhUX1lVVl90
YXJnZXQgKi8KKworI2lmbmRlZiBHTF9FWFRfYmFzZV9pbnN0YW5jZQorI2RlZmluZSBHTF9FWFRf
YmFzZV9pbnN0YW5jZSAxCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdBUlJB
WVNJTlNUQU5DRURCQVNFSU5TVEFOQ0VFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0
LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlY291bnQsIEdMdWludCBiYXNlaW5zdGFu
Y2UpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5D
RURCQVNFSU5TVEFOQ0VFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51
bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlY291bnQsIEdMdWlu
dCBiYXNlaW5zdGFuY2UpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXRUxF
TUVOVFNJTlNUQU5DRURCQVNFVkVSVEVYQkFTRUlOU1RBTkNFRVhUUFJPQykgKEdMZW51bSBtb2Rl
LCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBpbnN0YW5jZWNvdW50LCBHTGludCBiYXNldmVydGV4LCBHTHVpbnQgYmFzZWluc3RhbmNlKTsK
KyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlRVhUIChHTGVudW0gbW9kZSwgR0xpbnQg
Zmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwgR0x1aW50IGJhc2Vp
bnN0YW5jZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlSW5zdGFuY2VFWFQgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0YW5jZWNvdW50LCBHTHVpbnQg
YmFzZWluc3RhbmNlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50
c0luc3RhbmNlZEJhc2VWZXJ0ZXhCYXNlSW5zdGFuY2VFWFQgKEdMZW51bSBtb2RlLCBHTHNpemVp
IGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0YW5j
ZWNvdW50LCBHTGludCBiYXNldmVydGV4LCBHTHVpbnQgYmFzZWluc3RhbmNlKTsKICNlbmRpZgor
I2VuZGlmIC8qIEdMX0VYVF9iYXNlX2luc3RhbmNlICovCiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgot
ICogRVhUIGV4dGVuc2lvbiBmdW5jdGlvbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYg
R0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQKKyNkZWZpbmUgR0xfRVhUX2JsZW5kX2Z1bmNfZXh0
ZW5kZWQgMQorI2RlZmluZSBHTF9TUkMxX0NPTE9SX0VYVCAgICAgICAgICAgICAgICAgMHg4OEY5
CisjZGVmaW5lIEdMX1NSQzFfQUxQSEFfRVhUICAgICAgICAgICAgICAgICAweDg1ODkKKyNkZWZp
bmUgR0xfT05FX01JTlVTX1NSQzFfQ09MT1JfRVhUICAgICAgIDB4ODhGQQorI2RlZmluZSBHTF9P
TkVfTUlOVVNfU1JDMV9BTFBIQV9FWFQgICAgICAgMHg4OEZCCisjZGVmaW5lIEdMX1NSQ19BTFBI
QV9TQVRVUkFURV9FWFQgICAgICAgICAweDAzMDgKKyNkZWZpbmUgR0xfTE9DQVRJT05fSU5ERVhf
RVhUICAgICAgICAgICAgIDB4OTMwRgorI2RlZmluZSBHTF9NQVhfRFVBTF9TT1VSQ0VfRFJBV19C
VUZGRVJTX0VYVCAweDg4RkMKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREZS
QUdEQVRBTE9DQVRJT05JTkRFWEVERVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgY29s
b3JOdW1iZXIsIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREZSQUdEQVRBTE9DQVRJT05FWFRQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMdWludCBjb2xvciwgY29uc3QgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgR0xp
bnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1SRVNPVVJDRUxPQ0FUSU9OSU5ERVhFWFRQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBjb25zdCBHTGNo
YXIgKm5hbWUpOwordHlwZWRlZiBHTGludCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURlJBR0RBVEFJ
TkRFWEVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKKyNpZmRl
ZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5k
RnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWRFWFQgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgY29sb3JO
dW1iZXIsIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFnRGF0YUxvY2F0aW9uRVhUIChHTHVpbnQgcHJvZ3JhbSwg
R0x1aW50IGNvbG9yLCBjb25zdCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCBHTGludCBHTF9B
UElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uSW5kZXhFWFQgKEdMdWludCBwcm9n
cmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgY29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQ
SUNBTEwgR0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRGcmFnRGF0YUluZGV4RVhUIChHTHVpbnQgcHJv
Z3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9ibGVu
ZF9mdW5jX2V4dGVuZGVkICovCiAKLS8qIEdMX0VYVF9ibGVuZF9taW5tYXggKi8KICNpZm5kZWYg
R0xfRVhUX2JsZW5kX21pbm1heAogI2RlZmluZSBHTF9FWFRfYmxlbmRfbWlubWF4IDEKKyNkZWZp
bmUgR0xfTUlOX0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNworI2RlZmluZSBHTF9N
QVhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4CisjZW5kaWYgLyogR0xfRVhUX2Js
ZW5kX21pbm1heCAqLworCisjaWZuZGVmIEdMX0VYVF9idWZmZXJfc3RvcmFnZQorI2RlZmluZSBH
TF9FWFRfYnVmZmVyX3N0b3JhZ2UgMQorI2RlZmluZSBHTF9NQVBfUkVBRF9CSVQgICAgICAgICAg
ICAgICAgICAgMHgwMDAxCisjZGVmaW5lIEdMX01BUF9XUklURV9CSVQgICAgICAgICAgICAgICAg
ICAweDAwMDIKKyNkZWZpbmUgR0xfTUFQX1BFUlNJU1RFTlRfQklUX0VYVCAgICAgICAgIDB4MDA0
MAorI2RlZmluZSBHTF9NQVBfQ09IRVJFTlRfQklUX0VYVCAgICAgICAgICAgMHgwMDgwCisjZGVm
aW5lIEdMX0RZTkFNSUNfU1RPUkFHRV9CSVRfRVhUICAgICAgICAweDAxMDAKKyNkZWZpbmUgR0xf
Q0xJRU5UX1NUT1JBR0VfQklUX0VYVCAgICAgICAgIDB4MDIwMAorI2RlZmluZSBHTF9DTElFTlRf
TUFQUEVEX0JVRkZFUl9CQVJSSUVSX0JJVF9FWFQgMHgwMDAwNDAwMAorI2RlZmluZSBHTF9CVUZG
RVJfSU1NVVRBQkxFX1NUT1JBR0VfRVhUICAgMHg4MjFGCisjZGVmaW5lIEdMX0JVRkZFUl9TVE9S
QUdFX0ZMQUdTX0VYVCAgICAgICAweDgyMjAKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQlVGRkVSU1RPUkFHRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUs
IGNvbnN0IHZvaWQgKmRhdGEsIEdMYml0ZmllbGQgZmxhZ3MpOworI2lmZGVmIEdMX0dMRVhUX1BS
T1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlclN0b3JhZ2VFWFQg
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSwgR0xiaXRm
aWVsZCBmbGFncyk7CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfYnVmZmVyX3N0b3JhZ2UgKi8K
IAotLyogR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0ICovCisjaWZuZGVmIEdMX0VYVF9j
b2xvcl9idWZmZXJfZmxvYXQKKyNkZWZpbmUgR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCAxCisj
ZW5kaWYgLyogR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCAqLworCiAjaWZuZGVmIEdMX0VYVF9j
b2xvcl9idWZmZXJfaGFsZl9mbG9hdAogI2RlZmluZSBHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZf
ZmxvYXQgMQorI2RlZmluZSBHTF9SR0JBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgMHg4ODFB
CisjZGVmaW5lIEdMX1JHQjE2Rl9FWFQgICAgICAgICAgICAgICAgICAgICAweDg4MUIKKyNkZWZp
bmUgR0xfUkcxNkZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODIyRgorI2RlZmluZSBHTF9S
MTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJECisjZGVmaW5lIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEVfRVhUIDB4ODIxMQorI2RlZmluZSBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVEX0VYVCAgICAgICAgMHg4QzE3CisjZW5kaWYgLyogR0xfRVhUX2NvbG9y
X2J1ZmZlcl9oYWxmX2Zsb2F0ICovCisKKyNpZm5kZWYgR0xfRVhUX2NvcHlfaW1hZ2UKKyNkZWZp
bmUgR0xfRVhUX2NvcHlfaW1hZ2UgMQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xD
T1BZSU1BR0VTVUJEQVRBRVhUUFJPQykgKEdMdWludCBzcmNOYW1lLCBHTGVudW0gc3JjVGFyZ2V0
LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xpbnQgc3JjWSwgR0xpbnQgc3JjWiwgR0x1
aW50IGRzdE5hbWUsIEdMZW51bSBkc3RUYXJnZXQsIEdMaW50IGRzdExldmVsLCBHTGludCBkc3RY
LCBHTGludCBkc3RZLCBHTGludCBkc3RaLCBHTHNpemVpIHNyY1dpZHRoLCBHTHNpemVpIHNyY0hl
aWdodCwgR0xzaXplaSBzcmNEZXB0aCk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weUltYWdlU3ViRGF0YUVYVCAoR0x1aW50IHNy
Y05hbWUsIEdMZW51bSBzcmNUYXJnZXQsIEdMaW50IHNyY0xldmVsLCBHTGludCBzcmNYLCBHTGlu
dCBzcmNZLCBHTGludCBzcmNaLCBHTHVpbnQgZHN0TmFtZSwgR0xlbnVtIGRzdFRhcmdldCwgR0xp
bnQgZHN0TGV2ZWwsIEdMaW50IGRzdFgsIEdMaW50IGRzdFksIEdMaW50IGRzdFosIEdMc2l6ZWkg
c3JjV2lkdGgsIEdMc2l6ZWkgc3JjSGVpZ2h0LCBHTHNpemVpIHNyY0RlcHRoKTsKICNlbmRpZgor
I2VuZGlmIC8qIEdMX0VYVF9jb3B5X2ltYWdlICovCiAKLS8qIEdMX0VYVF9kZWJ1Z19sYWJlbCAq
LwogI2lmbmRlZiBHTF9FWFRfZGVidWdfbGFiZWwKICNkZWZpbmUgR0xfRVhUX2RlYnVnX2xhYmVs
IDEKKyNkZWZpbmUgR0xfUFJPR1JBTV9QSVBFTElORV9PQkpFQ1RfRVhUICAgIDB4OEE0RgorI2Rl
ZmluZSBHTF9QUk9HUkFNX09CSkVDVF9FWFQgICAgICAgICAgICAgMHg4QjQwCisjZGVmaW5lIEdM
X1NIQURFUl9PQkpFQ1RfRVhUICAgICAgICAgICAgICAweDhCNDgKKyNkZWZpbmUgR0xfQlVGRkVS
X09CSkVDVF9FWFQgICAgICAgICAgICAgIDB4OTE1MQorI2RlZmluZSBHTF9RVUVSWV9PQkpFQ1Rf
RVhUICAgICAgICAgICAgICAgMHg5MTUzCisjZGVmaW5lIEdMX1ZFUlRFWF9BUlJBWV9PQkpFQ1Rf
RVhUICAgICAgICAweDkxNTQKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLICAgICAgICAg
ICAgIDB4OEUyMgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xMQUJFTE9CSkVDVEVY
VFBST0MpIChHTGVudW0gdHlwZSwgR0x1aW50IG9iamVjdCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0
IEdMY2hhciAqbGFiZWwpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRPQkpF
Q1RMQUJFTEVYVFBST0MpIChHTGVudW0gdHlwZSwgR0x1aW50IG9iamVjdCwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpOwogI2lmZGVmIEdMX0dMRVhUX1BS
T1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbExhYmVsT2JqZWN0RVhUIChH
TGVudW0gdHlwZSwgR0x1aW50IG9iamVjdCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAq
bGFiZWwpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0T2JqZWN0TGFiZWxFWFQg
KEdMZW51bSB0eXBlLCBHTHVpbnQgb2JqZWN0LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0xjaGFyICpsYWJlbCk7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMTEFCRUxPQkpFQ1RFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMdWludCBvYmplY3QsIEdM
c2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUT0JKRUNUTEFCRUxFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMdWludCBv
YmplY3QsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsK
LSNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9kZWJ1Z19sYWJlbCAqLwogCi0vKiBHTF9FWFRfZGVi
dWdfbWFya2VyICovCiAjaWZuZGVmIEdMX0VYVF9kZWJ1Z19tYXJrZXIKICNkZWZpbmUgR0xfRVhU
X2RlYnVnX21hcmtlciAxCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTElOU0VSVEVW
RU5UTUFSS0VSRVhUUFJPQykgKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1hcmtlcik7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBVU0hHUk9VUE1BUktFUkVYVFBST0Mp
IChHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICptYXJrZXIpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQT1BHUk9VUE1BUktFUkVYVFBST0MpICh2b2lkKTsKICNpZmRlZiBH
TF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbnNlcnRF
dmVudE1hcmtlckVYVCAoR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFya2VyKTsKIEdM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFB1c2hHcm91cE1hcmtlckVYVCAoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFya2VyKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFBvcEdyb3VwTWFya2VyRVhUICh2b2lkKTsKICNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xJTlNFUlRFVkVOVE1BUktFUkVYVFBST0MpIChHTHNpemVpIGxlbmd0aCwg
Y29uc3QgR0xjaGFyICptYXJrZXIpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQ
VVNIR1JPVVBNQVJLRVJFWFRQUk9DKSAoR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbWFy
a2VyKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUE9QR1JPVVBNQVJLRVJFWFRQ
Uk9DKSAodm9pZCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfZGVidWdfbWFya2VyICovCiAK
LS8qIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyICovCiAjaWZuZGVmIEdMX0VYVF9kaXNjYXJk
X2ZyYW1lYnVmZmVyCiAjZGVmaW5lIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIDEKKyNkZWZp
bmUgR0xfQ09MT1JfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4MTgwMAorI2RlZmluZSBHTF9E
RVBUSF9FWFQgICAgICAgICAgICAgICAgICAgICAgMHgxODAxCisjZGVmaW5lIEdMX1NURU5DSUxf
RVhUICAgICAgICAgICAgICAgICAgICAweDE4MDIKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkg
bnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwogI2lmZGVmIEdMX0dM
RVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2NhcmRGcmFt
ZWJ1ZmZlckVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3Qg
R0xlbnVtICphdHRhY2htZW50cyk7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkg
bnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworI2VuZGlmIC8qIEdM
X0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyICovCisKKyNpZm5kZWYgR0xfRVhUX2Rpc2pvaW50X3Rp
bWVyX3F1ZXJ5CisjZGVmaW5lIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSAxCisjZGVmaW5l
IEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQgICAgICAgICAweDg4NjQKKyNkZWZpbmUgR0xfQ1VS
UkVOVF9RVUVSWV9FWFQgICAgICAgICAgICAgIDB4ODg2NQorI2RlZmluZSBHTF9RVUVSWV9SRVNV
TFRfRVhUICAgICAgICAgICAgICAgMHg4ODY2CisjZGVmaW5lIEdMX1FVRVJZX1JFU1VMVF9BVkFJ
TEFCTEVfRVhUICAgICAweDg4NjcKKyNkZWZpbmUgR0xfVElNRV9FTEFQU0VEX0VYVCAgICAgICAg
ICAgICAgIDB4ODhCRgorI2RlZmluZSBHTF9USU1FU1RBTVBfRVhUICAgICAgICAgICAgICAgICAg
MHg4RTI4CisjZGVmaW5lIEdMX0dQVV9ESVNKT0lOVF9FWFQgICAgICAgICAgICAgICAweDhGQkIK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOUVVFUklFU0VYVFBST0MpIChHTHNp
emVpIG4sIEdMdWludCAqaWRzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVM
RVRFUVVFUklFU0VYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqaWRzKTsKK3R5cGVk
ZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1FVRVJZRVhUUFJPQykgKEdMdWludCBp
ZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJFR0lOUVVFUllFWFRQUk9DKSAo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRU5EUVVFUllFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFFVRVJZQ09VTlRFUkVYVFBST0MpIChHTHVpbnQgaWQsIEdMZW51bSB0YXJn
ZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWUlWRVhUUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNUSVZFWFRQUk9DKSAoR0x1aW50IGlk
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xHRVRRVUVSWU9CSkVDVFVJVkVYVFBST0MpIChHTHVpbnQgaWQsIEdMZW51bSBwbmFt
ZSwgR0x1aW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRR
VUVSWU9CSkVDVEk2NFZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQg
KnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNU
VUk2NFZFWFRQUk9DKSAoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMp
OworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdlblF1ZXJpZXNFWFQgKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUXVlcmllc0VYVCAoR0xzaXplaSBuLCBjb25zdCBHTHVp
bnQgKmlkcyk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUXVlcnlFWFQg
KEdMdWludCBpZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCZWdpblF1ZXJ5RVhU
IChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRW5kUXVlcnlFWFQgKEdMZW51bSB0YXJnZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsUXVlcnlDb3VudGVyRVhUIChHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UXVlcnlpdkVYVCAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFF1ZXJ5T2JqZWN0aXZFWFQgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhU
IChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2V0UXVlcnlPYmplY3RpNjR2RVhUIChHTHVpbnQgaWQsIEdMZW51
bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2
NCAqcGFyYW1zKTsKICNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVy
eSAqLwogCi0vKiBHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZSAqLworI2lmbmRlZiBHTF9FWFRfZHJh
d19idWZmZXJzCisjZGVmaW5lIEdMX0VYVF9kcmF3X2J1ZmZlcnMgMQorI2RlZmluZSBHTF9NQVhf
Q09MT1JfQVRUQUNITUVOVFNfRVhUICAgICAgMHg4Q0RGCisjZGVmaW5lIEdMX01BWF9EUkFXX0JV
RkZFUlNfRVhUICAgICAgICAgICAweDg4MjQKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIwX0VYVCAg
ICAgICAgICAgICAgIDB4ODgyNQorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjFfRVhUICAgICAgICAg
ICAgICAgMHg4ODI2CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMl9FWFQgICAgICAgICAgICAgICAw
eDg4MjcKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIzX0VYVCAgICAgICAgICAgICAgIDB4ODgyOAor
I2RlZmluZSBHTF9EUkFXX0JVRkZFUjRfRVhUICAgICAgICAgICAgICAgMHg4ODI5CisjZGVmaW5l
IEdMX0RSQVdfQlVGRkVSNV9FWFQgICAgICAgICAgICAgICAweDg4MkEKKyNkZWZpbmUgR0xfRFJB
V19CVUZGRVI2X0VYVCAgICAgICAgICAgICAgIDB4ODgyQgorI2RlZmluZSBHTF9EUkFXX0JVRkZF
UjdfRVhUICAgICAgICAgICAgICAgMHg4ODJDCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9FWFQg
ICAgICAgICAgICAgICAweDg4MkQKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI5X0VYVCAgICAgICAg
ICAgICAgIDB4ODgyRQorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEwX0VYVCAgICAgICAgICAgICAg
MHg4ODJGCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTFfRVhUICAgICAgICAgICAgICAweDg4MzAK
KyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMl9FWFQgICAgICAgICAgICAgIDB4ODgzMQorI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjEzX0VYVCAgICAgICAgICAgICAgMHg4ODMyCisjZGVmaW5lIEdMX0RS
QVdfQlVGRkVSMTRfRVhUICAgICAgICAgICAgICAweDg4MzMKKyNkZWZpbmUgR0xfRFJBV19CVUZG
RVIxNV9FWFQgICAgICAgICAgICAgIDB4ODgzNAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MF9FWFQgICAgICAgICAgMHg4Q0UwCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCAg
ICAgICAgICAweDhDRTEKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDJfRVhUICAgICAgICAg
IDB4OENFMgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UM19FWFQgICAgICAgICAgMHg4Q0Uz
CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ0X0VYVCAgICAgICAgICAweDhDRTQKKyNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDVfRVhUICAgICAgICAgIDB4OENFNQorI2RlZmluZSBHTF9D
T0xPUl9BVFRBQ0hNRU5UNl9FWFQgICAgICAgICAgMHg4Q0U2CisjZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQ3X0VYVCAgICAgICAgICAweDhDRTcKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVO
VDhfRVhUICAgICAgICAgIDB4OENFOAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOV9FWFQg
ICAgICAgICAgMHg4Q0U5CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMF9FWFQgICAgICAg
ICAweDhDRUEKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDExX0VYVCAgICAgICAgIDB4OENF
QgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTJfRVhUICAgICAgICAgMHg4Q0VDCisjZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxM19FWFQgICAgICAgICAweDhDRUQKKyNkZWZpbmUgR0xf
Q09MT1JfQVRUQUNITUVOVDE0X0VYVCAgICAgICAgIDB4OENFRQorI2RlZmluZSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMTVfRVhUICAgICAgICAgMHg4Q0VGCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTERSQVdCVUZGRVJTRVhUUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZz
KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEcmF3QnVmZmVyc0VYVCAoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOworI2Vu
ZGlmCisjZW5kaWYgLyogR0xfRVhUX2RyYXdfYnVmZmVycyAqLworCisjaWZuZGVmIEdMX0VYVF9k
cmF3X2J1ZmZlcnNfaW5kZXhlZAorI2RlZmluZSBHTF9FWFRfZHJhd19idWZmZXJzX2luZGV4ZWQg
MQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVJRVhUUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TERJU0FCTEVJRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERVFVQVRJT05JRVhUUFJPQykgKEdMdWludCBi
dWYsIEdMZW51bSBtb2RlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRF
UVVBVElPTlNFUEFSQVRFSUVYVFBST0MpIChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xl
bnVtIG1vZGVBbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERlVO
Q0lFWFRQUk9DKSAoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyYywgR0xlbnVtIGRzdCk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERlVOQ1NFUEFSQVRFSUVYVFBST0MpIChHTHVp
bnQgYnVmLCBHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdM
ZW51bSBkc3RBbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTE9STUFT
S0lFWFRQUk9DKSAoR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9v
bGVhbiBiLCBHTGJvb2xlYW4gYSk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBG
TkdMSVNFTkFCTEVESUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOworI2lm
ZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVu
YWJsZWlFWFQgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xEaXNhYmxlaUVYVCAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25pRVhUIChHTHVpbnQg
YnVmLCBHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVx
dWF0aW9uU2VwYXJhdGVpRVhUIChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1v
ZGVBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNpRVhUIChH
THVpbnQgYnVmLCBHTGVudW0gc3JjLCBHTGVudW0gZHN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlaUVYVCAoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JH
QiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JNYXNraUVYVCAoR0x1aW50IGluZGV4LCBH
TGJvb2xlYW4gciwgR0xib29sZWFuIGcsIEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSk7CitHTF9B
UElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxlZGlFWFQgKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfZHJhd19idWZmZXJz
X2luZGV4ZWQgKi8KKworI2lmbmRlZiBHTF9FWFRfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleAor
I2RlZmluZSBHTF9FWFRfZHJhd19lbGVtZW50c19iYXNlX3ZlcnRleCAxCit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTERSQVdFTEVNRU5UU0JBU0VWRVJURVhFWFRQUk9DKSAoR0xlbnVt
IG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBH
TGludCBiYXNldmVydGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV1JB
TkdFRUxFTUVOVFNCQVNFVkVSVEVYRVhUUFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQs
IEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRp
Y2VzLCBHTGludCBiYXNldmVydGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
RFJBV0VMRU1FTlRTSU5TVEFOQ0VEQkFTRVZFUlRFWEVYVFBST0MpIChHTGVudW0gbW9kZSwgR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgaW5z
dGFuY2Vjb3VudCwgR0xpbnQgYmFzZXZlcnRleCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTE1VTFRJRFJBV0VMRU1FTlRTQkFTRVZFUlRFWEVYVFBST0MpIChHTGVudW0gbW9kZSwg
Y29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpjb25zdCppbmRp
Y2VzLCBHTHNpemVpIHByaW1jb3VudCwgY29uc3QgR0xpbnQgKmJhc2V2ZXJ0ZXgpOworI2lmZGVm
IEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdF
bGVtZW50c0Jhc2VWZXJ0ZXhFWFQgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0g
dHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xpbnQgYmFzZXZlcnRleCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3UmFuZ2VFbGVtZW50c0Jhc2VWZXJ0ZXhFWFQgKEdMZW51
bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTGludCBiYXNldmVydGV4KTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0luc3RhbmNlZEJhc2VWZXJ0ZXhFWFQgKEdM
ZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNl
cywgR0xzaXplaSBpbnN0YW5jZWNvdW50LCBHTGludCBiYXNldmVydGV4KTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJhd0VsZW1lbnRzQmFzZVZlcnRleEVYVCAoR0xlbnVt
IG1vZGUsIGNvbnN0IEdMc2l6ZWkgKmNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqY29u
c3QqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQsIGNvbnN0IEdMaW50ICpiYXNldmVydGV4KTsK
KyNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9kcmF3X2VsZW1lbnRzX2Jhc2VfdmVydGV4ICovCisK
KyNpZm5kZWYgR0xfRVhUX2RyYXdfaW5zdGFuY2VkCisjZGVmaW5lIEdMX0VYVF9kcmF3X2luc3Rh
bmNlZCAxCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdBUlJBWVNJTlNUQU5D
RURFWFRQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBHTHNp
emVpIHByaW1jb3VudCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdFTEVN
RU5UU0lOU1RBTkNFREVYVFBST0MpIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVt
IHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKKyNpZmRlZiBH
TF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QXJy
YXlzSW5zdGFuY2VkRVhUIChHTGVudW0gbW9kZSwgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQs
IEdMc2l6ZWkgcHJpbWNvdW50KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdF
bGVtZW50c0luc3RhbmNlZEVYVCAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CisjZW5kaWYKKyNl
bmRpZiAvKiBHTF9FWFRfZHJhd19pbnN0YW5jZWQgKi8KKworI2lmbmRlZiBHTF9FWFRfZmxvYXRf
YmxlbmQKKyNkZWZpbmUgR0xfRVhUX2Zsb2F0X2JsZW5kIDEKKyNlbmRpZiAvKiBHTF9FWFRfZmxv
YXRfYmxlbmQgKi8KKworI2lmbmRlZiBHTF9FWFRfZ2VvbWV0cnlfcG9pbnRfc2l6ZQorI2RlZmlu
ZSBHTF9FWFRfZ2VvbWV0cnlfcG9pbnRfc2l6ZSAxCisjZW5kaWYgLyogR0xfRVhUX2dlb21ldHJ5
X3BvaW50X3NpemUgKi8KKworI2lmbmRlZiBHTF9FWFRfZ2VvbWV0cnlfc2hhZGVyCisjZGVmaW5l
IEdMX0VYVF9nZW9tZXRyeV9zaGFkZXIgMQorI2RlZmluZSBHTF9HRU9NRVRSWV9TSEFERVJfRVhU
ICAgICAgICAgICAgMHg4REQ5CisjZGVmaW5lIEdMX0dFT01FVFJZX1NIQURFUl9CSVRfRVhUICAg
ICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEdMX0dFT01FVFJZX0xJTktFRF9WRVJUSUNFU19PVVRf
RVhUIDB4ODkxNgorI2RlZmluZSBHTF9HRU9NRVRSWV9MSU5LRURfSU5QVVRfVFlQRV9FWFQgMHg4
OTE3CisjZGVmaW5lIEdMX0dFT01FVFJZX0xJTktFRF9PVVRQVVRfVFlQRV9FWFQgMHg4OTE4Cisj
ZGVmaW5lIEdMX0dFT01FVFJZX1NIQURFUl9JTlZPQ0FUSU9OU19FWFQgMHg4ODdGCisjZGVmaW5l
IEdMX0xBWUVSX1BST1ZPS0lOR19WRVJURVhfRVhUICAgICAweDgyNUUKKyNkZWZpbmUgR0xfTElO
RVNfQURKQUNFTkNZX0VYVCAgICAgICAgICAgIDB4MDAwQQorI2RlZmluZSBHTF9MSU5FX1NUUklQ
X0FESkFDRU5DWV9FWFQgICAgICAgMHgwMDBCCisjZGVmaW5lIEdMX1RSSUFOR0xFU19BREpBQ0VO
Q1lfRVhUICAgICAgICAweDAwMEMKKyNkZWZpbmUgR0xfVFJJQU5HTEVfU1RSSVBfQURKQUNFTkNZ
X0VYVCAgIDB4MDAwRAorI2RlZmluZSBHTF9NQVhfR0VPTUVUUllfVU5JRk9STV9DT01QT05FTlRT
X0VYVCAweDhEREYKKyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tTX0VYVCAw
eDhBMkMKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX0dFT01FVFJZX1VOSUZPUk1fQ09NUE9ORU5U
U19FWFQgMHg4QTMyCisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9JTlBVVF9DT01QT05FTlRTX0VY
VCAweDkxMjMKKyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX09VVFBVVF9DT01QT05FTlRTX0VYVCAw
eDkxMjQKKyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFU19FWFQgMHg4REUw
CisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9UT1RBTF9PVVRQVVRfQ09NUE9ORU5UU19FWFQgMHg4
REUxCisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlNfRVhUIDB4OEU1
QQorI2RlZmluZSBHTF9NQVhfR0VPTUVUUllfVEVYVFVSRV9JTUFHRV9VTklUU19FWFQgMHg4QzI5
CisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTX0VYVCAweDky
Q0YKKyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX0FUT01JQ19DT1VOVEVSU19FWFQgMHg5MkQ1Cisj
ZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9JTUFHRV9VTklGT1JNU19FWFQgMHg5MENECisjZGVmaW5l
IEdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RPUkFHRV9CTE9DS1NfRVhUIDB4OTBENworI2RlZmlu
ZSBHTF9GSVJTVF9WRVJURVhfQ09OVkVOVElPTl9FWFQgICAgMHg4RTRECisjZGVmaW5lIEdMX0xB
U1RfVkVSVEVYX0NPTlZFTlRJT05fRVhUICAgICAweDhFNEUKKyNkZWZpbmUgR0xfVU5ERUZJTkVE
X1ZFUlRFWF9FWFQgICAgICAgICAgIDB4ODI2MAorI2RlZmluZSBHTF9QUklNSVRJVkVTX0dFTkVS
QVRFRF9FWFQgICAgICAgMHg4Qzg3CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfTEFZ
RVJTX0VYVCAweDkzMTIKKyNkZWZpbmUgR0xfTUFYX0ZSQU1FQlVGRkVSX0xBWUVSU19FWFQgICAg
IDB4OTMxNworI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0xBWUVSX1RBUkdFVFNf
RVhUIDB4OERBOAorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0xBWUVSRURfRVhU
IDB4OERBNworI2RlZmluZSBHTF9SRUZFUkVOQ0VEX0JZX0dFT01FVFJZX1NIQURFUl9FWFQgMHg5
MzA5Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRUVY
VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0x1aW50IHRleHR1cmUs
IEdMaW50IGxldmVsKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmVFWFQgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOworI2VuZGlmCisj
ZW5kaWYgLyogR0xfRVhUX2dlb21ldHJ5X3NoYWRlciAqLworCisjaWZuZGVmIEdMX0VYVF9ncHVf
c2hhZGVyNQorI2RlZmluZSBHTF9FWFRfZ3B1X3NoYWRlcjUgMQorI2VuZGlmIC8qIEdMX0VYVF9n
cHVfc2hhZGVyNSAqLworCisjaWZuZGVmIEdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzCisjZGVmaW5l
IEdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIDEKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9ESVZJU09SX0VYVCAweDg4RkUKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVS
VEVYQVRUUklCRElWSVNPUkVYVFBST0MpIChHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsK
KyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yRVhUIChHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsK
KyNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzICovCisKICNpZm5kZWYg
R0xfRVhUX21hcF9idWZmZXJfcmFuZ2UKICNkZWZpbmUgR0xfRVhUX21hcF9idWZmZXJfcmFuZ2Ug
MQorI2RlZmluZSBHTF9NQVBfUkVBRF9CSVRfRVhUICAgICAgICAgICAgICAgMHgwMDAxCisjZGVm
aW5lIEdMX01BUF9XUklURV9CSVRfRVhUICAgICAgICAgICAgICAweDAwMDIKKyNkZWZpbmUgR0xf
TUFQX0lOVkFMSURBVEVfUkFOR0VfQklUX0VYVCAgIDB4MDAwNAorI2RlZmluZSBHTF9NQVBfSU5W
QUxJREFURV9CVUZGRVJfQklUX0VYVCAgMHgwMDA4CisjZGVmaW5lIEdMX01BUF9GTFVTSF9FWFBM
SUNJVF9CSVRfRVhUICAgICAweDAwMTAKKyNkZWZpbmUgR0xfTUFQX1VOU1lOQ0hST05JWkVEX0JJ
VF9FWFQgICAgIDB4MDAyMAordHlwZWRlZiB2b2lkICooR0xfQVBJRU5UUllQIFBGTkdMTUFQQlVG
RkVSUkFOR0VFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVp
cHRyIGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xGTFVTSE1BUFBFREJVRkZFUlJBTkdFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
aW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RP
VFlQRVMKLUdMX0FQSUNBTEwgdm9pZCogR0xfQVBJRU5UUlkgZ2xNYXBCdWZmZXJSYW5nZUVYVCAo
R0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCwgR0xiaXRm
aWVsZCBhY2Nlc3MpOworR0xfQVBJQ0FMTCB2b2lkICpHTF9BUElFTlRSWSBnbE1hcEJ1ZmZlclJh
bmdlRVhUIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3Ro
LCBHTGJpdGZpZWxkIGFjY2Vzcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGbHVz
aE1hcHBlZEJ1ZmZlclJhbmdlRVhUIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdM
c2l6ZWlwdHIgbGVuZ3RoKTsKICNlbmRpZgotdHlwZWRlZiB2b2lkKiAoR0xfQVBJRU5UUllQIFBG
TkdMTUFQQlVGRkVSUkFOR0VFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0
LCBHTHNpemVpcHRyIGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MpOwotdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xGTFVTSE1BUFBFREJVRkZFUlJBTkdFRVhUUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgpOworI2VuZGlmIC8qIEdM
X0VYVF9tYXBfYnVmZmVyX3JhbmdlICovCisKKyNpZm5kZWYgR0xfRVhUX211bHRpX2RyYXdfYXJy
YXlzCisjZGVmaW5lIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAxCit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgY29u
c3QgR0xpbnQgKmZpcnN0LCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBS
T0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25z
dCB2b2lkICpjb25zdCppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CisjaWZkZWYgR0xfR0xF
WFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3QXJy
YXlzRVhUIChHTGVudW0gbW9kZSwgY29uc3QgR0xpbnQgKmZpcnN0LCBjb25zdCBHTHNpemVpICpj
b3VudCwgR0xzaXplaSBwcmltY291bnQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
TXVsdGlEcmF3RWxlbWVudHNFWFQgKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwg
R0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmNvbnN0KmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50
KTsKICNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAqLwogCi0vKiBH
TF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlICovCisjaWZuZGVmIEdMX0VYVF9t
dWx0aV9kcmF3X2luZGlyZWN0CisjZGVmaW5lIEdMX0VYVF9tdWx0aV9kcmF3X2luZGlyZWN0IDEK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTVVMVElEUkFXQVJSQVlTSU5ESVJFQ1RF
WFRQUk9DKSAoR0xlbnVtIG1vZGUsIGNvbnN0IHZvaWQgKmluZGlyZWN0LCBHTHNpemVpIGRyYXdj
b3VudCwgR0xzaXplaSBzdHJpZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xN
VUxUSURSQVdFTEVNRU5UU0lORElSRUNURVhUUFJPQykgKEdMZW51bSBtb2RlLCBHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QsIEdMc2l6ZWkgZHJhd2NvdW50LCBHTHNpemVpIHN0cmlk
ZSk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsTXVsdGlEcmF3QXJyYXlzSW5kaXJlY3RFWFQgKEdMZW51bSBtb2RlLCBjb25zdCB2b2lk
ICppbmRpcmVjdCwgR0xzaXplaSBkcmF3Y291bnQsIEdMc2l6ZWkgc3RyaWRlKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJhd0VsZW1lbnRzSW5kaXJlY3RFWFQgKEdMZW51
bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QsIEdMc2l6ZWkgZHJhd2Nv
dW50LCBHTHNpemVpIHN0cmlkZSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfbXVsdGlfZHJh
d19pbmRpcmVjdCAqLworCisjaWZuZGVmIEdMX0VYVF9tdWx0aXNhbXBsZWRfY29tcGF0aWJpbGl0
eQorI2RlZmluZSBHTF9FWFRfbXVsdGlzYW1wbGVkX2NvbXBhdGliaWxpdHkgMQorI2RlZmluZSBH
TF9NVUxUSVNBTVBMRV9FWFQgICAgICAgICAgICAgICAgMHg4MDlECisjZGVmaW5lIEdMX1NBTVBM
RV9BTFBIQV9UT19PTkVfRVhUICAgICAgICAweDgwOUYKKyNlbmRpZiAvKiBHTF9FWFRfbXVsdGlz
YW1wbGVkX2NvbXBhdGliaWxpdHkgKi8KKwogI2lmbmRlZiBHTF9FWFRfbXVsdGlzYW1wbGVkX3Jl
bmRlcl90b190ZXh0dXJlCiAjZGVmaW5lIEdMX0VYVF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3Rl
eHR1cmUgMQotI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCAoR0xlbnVtLCBHTHNp
emVpLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCAoR0xlbnVtLCBHTGVudW0s
IEdMZW51bSwgR0x1aW50LCBHTGludCwgR0xzaXplaSk7Ci0jZW5kaWYKKyNkZWZpbmUgR0xfRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX1NBTVBMRVNfRVhUIDB4OEQ2QworI2RlZmluZSBH
TF9SRU5ERVJCVUZGRVJfU0FNUExFU19FWFQgICAgICAgMHg4Q0FCCisjZGVmaW5lIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfRVhUIDB4OEQ1NgorI2RlZmluZSBHTF9NQVhf
U0FNUExFU19FWFQgICAgICAgICAgICAgICAgMHg4RDU3CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUVYVFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xG
UkFNRUJVRkZFUlRFWFRVUkUyRE1VTFRJU0FNUExFRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQg
bGV2ZWwsIEdMc2l6ZWkgc2FtcGxlcyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
RVhUIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUVYVCAoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBH
TGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzKTsKICNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgKi8KIAotLyogR0xfRVhUX211bHRpdmlld19k
cmF3X2J1ZmZlcnMgKi8KICNpZm5kZWYgR0xfRVhUX211bHRpdmlld19kcmF3X2J1ZmZlcnMKICNk
ZWZpbmUgR0xfRVhUX211bHRpdmlld19kcmF3X2J1ZmZlcnMgMQorI2RlZmluZSBHTF9DT0xPUl9B
VFRBQ0hNRU5UX0VYVCAgICAgICAgICAgMHg5MEYwCisjZGVmaW5lIEdMX01VTFRJVklFV19FWFQg
ICAgICAgICAgICAgICAgICAweDkwRjEKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVJfRVhUICAgICAg
ICAgICAgICAgIDB4MEMwMQorI2RlZmluZSBHTF9SRUFEX0JVRkZFUl9FWFQgICAgICAgICAgICAg
ICAgMHgwQzAyCisjZGVmaW5lIEdMX01BWF9NVUxUSVZJRVdfQlVGRkVSU19FWFQgICAgICAweDkw
RjIKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVBREJVRkZFUklOREVYRURFWFRQ
Uk9DKSAoR0xlbnVtIHNyYywgR0xpbnQgaW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xEUkFXQlVGRkVSU0lOREVYRURFWFRQUk9DKSAoR0xpbnQgbiwgY29uc3QgR0xlbnVt
ICpsb2NhdGlvbiwgY29uc3QgR0xpbnQgKmluZGljZXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRJTlRFR0VSSV9WRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCwgR0xpbnQgKmRhdGEpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlYWRCdWZmZXJJbmRleGVkRVhUIChHTGVudW0gc3JjLCBH
TGludCBpbmRleCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QnVmZmVyc0lu
ZGV4ZWRFWFQgKEdMaW50IG4sIGNvbnN0IEdMZW51bSAqbG9jYXRpb24sIGNvbnN0IEdMaW50ICpp
bmRpY2VzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXJpX3ZFWFQg
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpOwogI2VuZGlmCi10eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQURCVUZGRVJJTkRFWEVERVhUUFJPQykgKEdM
ZW51bSBzcmMsIEdMaW50IGluZGV4KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
RFJBV0JVRkZFUlNJTkRFWEVERVhUUFJPQykgKEdMaW50IG4sIGNvbnN0IEdMZW51bSAqbG9jYXRp
b24sIGNvbnN0IEdMaW50ICppbmRpY2VzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUSU5URUdFUklfVkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdM
aW50ICpkYXRhKTsKLSNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9tdWx0aXZpZXdfZHJhd19idWZm
ZXJzICovCiAKLSNpZm5kZWYgR0xfRVhUX211bHRpX2RyYXdfYXJyYXlzCi0jZGVmaW5lIEdMX0VY
VF9tdWx0aV9kcmF3X2FycmF5cyAxCisjaWZuZGVmIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9v
bGVhbgorI2RlZmluZSBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4gMQorI2RlZmluZSBH
TF9BTllfU0FNUExFU19QQVNTRURfRVhUICAgICAgICAgMHg4QzJGCisjZGVmaW5lIEdMX0FOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUIDB4OEQ2QQorI2VuZGlmIC8qIEdMX0VYVF9v
Y2NsdXNpb25fcXVlcnlfYm9vbGVhbiAqLworCisjaWZuZGVmIEdMX0VYVF9wb3N0X2RlcHRoX2Nv
dmVyYWdlCisjZGVmaW5lIEdMX0VYVF9wb3N0X2RlcHRoX2NvdmVyYWdlIDEKKyNlbmRpZiAvKiBH
TF9FWFRfcG9zdF9kZXB0aF9jb3ZlcmFnZSAqLworCisjaWZuZGVmIEdMX0VYVF9wcmltaXRpdmVf
Ym91bmRpbmdfYm94CisjZGVmaW5lIEdMX0VYVF9wcmltaXRpdmVfYm91bmRpbmdfYm94IDEKKyNk
ZWZpbmUgR0xfUFJJTUlUSVZFX0JPVU5ESU5HX0JPWF9FWFQgICAgIDB4OTJCRQordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUklNSVRJVkVCT1VORElOR0JPWEVYVFBST0MpIChHTGZs
b2F0IG1pblgsIEdMZmxvYXQgbWluWSwgR0xmbG9hdCBtaW5aLCBHTGZsb2F0IG1pblcsIEdMZmxv
YXQgbWF4WCwgR0xmbG9hdCBtYXhZLCBHTGZsb2F0IG1heFosIEdMZmxvYXQgbWF4Vyk7CiAjaWZk
ZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTXVs
dGlEcmF3QXJyYXlzRVhUIChHTGVudW0sIGNvbnN0IEdMaW50ICosIGNvbnN0IEdMc2l6ZWkgKiwg
R0xzaXplaSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xNdWx0aURyYXdFbGVtZW50
c0VYVCAoR0xlbnVtLCBjb25zdCBHTHNpemVpICosIEdMZW51bSwgY29uc3QgR0x2b2lkKiAqLCBH
THNpemVpKTsKLSNlbmRpZiAvKiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCi10eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwg
R0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwotdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0MpIChHTGVu
dW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQq
ICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xQcmltaXRpdmVCb3VuZGluZ0JveEVYVCAoR0xmbG9hdCBtaW5YLCBHTGZsb2F0IG1pblks
IEdMZmxvYXQgbWluWiwgR0xmbG9hdCBtaW5XLCBHTGZsb2F0IG1heFgsIEdMZmxvYXQgbWF4WSwg
R0xmbG9hdCBtYXhaLCBHTGZsb2F0IG1heFcpOwogI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3By
aW1pdGl2ZV9ib3VuZGluZ19ib3ggKi8KIAotLyogR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29s
ZWFuICovCi0jaWZuZGVmIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbgotI2RlZmluZSBH
TF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4gMQorI2lmbmRlZiBHTF9FWFRfcHZydGNfc1JH
QgorI2RlZmluZSBHTF9FWFRfcHZydGNfc1JHQiAxCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JH
Ql9QVlJUQ18yQlBQVjFfRVhUIDB4OEE1NAorI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0JfUFZS
VENfNEJQUFYxX0VYVCAweDhBNTUKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1BW
UlRDXzJCUFBWMV9FWFQgMHg4QTU2CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9Q
VlJUQ180QlBQVjFfRVhUIDB4OEE1NworI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFf
UFZSVENfMkJQUFYyX0lNRyAweDkzRjAKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhB
X1BWUlRDXzRCUFBWMl9JTUcgMHg5M0YxCisjZW5kaWYgLyogR0xfRVhUX3B2cnRjX3NSR0IgKi8K
KworI2lmbmRlZiBHTF9FWFRfcmFzdGVyX211bHRpc2FtcGxlCisjZGVmaW5lIEdMX0VYVF9yYXN0
ZXJfbXVsdGlzYW1wbGUgMQorI2RlZmluZSBHTF9SQVNURVJfTVVMVElTQU1QTEVfRVhUICAgICAg
ICAgMHg5MzI3CisjZGVmaW5lIEdMX1JBU1RFUl9TQU1QTEVTX0VYVCAgICAgICAgICAgICAweDkz
MjgKKyNkZWZpbmUgR0xfTUFYX1JBU1RFUl9TQU1QTEVTX0VYVCAgICAgICAgIDB4OTMyOQorI2Rl
ZmluZSBHTF9SQVNURVJfRklYRURfU0FNUExFX0xPQ0FUSU9OU19FWFQgMHg5MzJBCisjZGVmaW5l
IEdMX01VTFRJU0FNUExFX1JBU1RFUklaQVRJT05fQUxMT1dFRF9FWFQgMHg5MzJCCisjZGVmaW5l
IEdMX0VGRkVDVElWRV9SQVNURVJfU0FNUExFU19FWFQgICAweDkzMkMKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUkFTVEVSU0FNUExFU0VYVFBST0MpIChHTHVpbnQgc2FtcGxlcywg
R0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZ
UEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5RdWVyaWVzRVhUIChHTHNpemVp
IG4sIEdMdWludCAqaWRzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVF1
ZXJpZXNFWFQgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpOwotR0xfQVBJQ0FMTCBHTGJv
b2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1F1ZXJ5RVhUIChHTHVpbnQgaWQpOwotR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQmVnaW5RdWVyeUVYVCAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlk
KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuZFF1ZXJ5RVhUIChHTGVudW0gdGFy
Z2V0KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5aXZFWFQgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCAoR0x1aW50IGlkLCBHTGVudW0gcG5h
bWUsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJhc3Rl
clNhbXBsZXNFWFQgKEdMdWludCBzYW1wbGVzLCBHTGJvb2xlYW4gZml4ZWRzYW1wbGVsb2NhdGlv
bnMpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlFVRVJJRVNF
WFRQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTERFTEVURVFVRVJJRVNFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg
Kmlkcyk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNRVUVSWUVYVFBS
T0MpIChHTHVpbnQgaWQpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCRUdJTlFV
RVJZRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7Ci10eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEVORFFVRVJZRVhUUFJPQykgKEdMZW51bSB0YXJnZXQpOwotdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWUlWRVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFVFFVRVJZT0JKRUNUVUlWRVhUUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBu
YW1lLCBHTHVpbnQgKnBhcmFtcyk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfcmFzdGVyX211
bHRpc2FtcGxlICovCiAKLS8qIEdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhICovCiAjaWZuZGVmIEdM
X0VYVF9yZWFkX2Zvcm1hdF9iZ3JhCiAjZGVmaW5lIEdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIDEK
LSNlbmRpZgorI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQgMHg4MzY1
CisjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVCAweDgzNjYKKyNlbmRp
ZiAvKiBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSAqLwogCi0vKiBHTF9FWFRfcm9idXN0bmVzcyAq
LworI2lmbmRlZiBHTF9FWFRfcmVuZGVyX3Nub3JtCisjZGVmaW5lIEdMX0VYVF9yZW5kZXJfc25v
cm0gMQorI2RlZmluZSBHTF9SOF9TTk9STSAgICAgICAgICAgICAgICAgICAgICAgMHg4Rjk0Cisj
ZGVmaW5lIEdMX1JHOF9TTk9STSAgICAgICAgICAgICAgICAgICAgICAweDhGOTUKKyNkZWZpbmUg
R0xfUkdCQThfU05PUk0gICAgICAgICAgICAgICAgICAgIDB4OEY5NworI2RlZmluZSBHTF9SMTZf
U05PUk1fRVhUICAgICAgICAgICAgICAgICAgMHg4Rjk4CisjZGVmaW5lIEdMX1JHMTZfU05PUk1f
RVhUICAgICAgICAgICAgICAgICAweDhGOTkKKyNkZWZpbmUgR0xfUkdCQTE2X1NOT1JNX0VYVCAg
ICAgICAgICAgICAgIDB4OEY5QgorI2VuZGlmIC8qIEdMX0VYVF9yZW5kZXJfc25vcm0gKi8KKwog
I2lmbmRlZiBHTF9FWFRfcm9idXN0bmVzcwogI2RlZmluZSBHTF9FWFRfcm9idXN0bmVzcyAxCisj
ZGVmaW5lIEdMX0dVSUxUWV9DT05URVhUX1JFU0VUX0VYVCAgICAgICAweDgyNTMKKyNkZWZpbmUg
R0xfSU5OT0NFTlRfQ09OVEVYVF9SRVNFVF9FWFQgICAgIDB4ODI1NAorI2RlZmluZSBHTF9VTktO
T1dOX0NPTlRFWFRfUkVTRVRfRVhUICAgICAgMHg4MjU1CisjZGVmaW5lIEdMX0NPTlRFWFRfUk9C
VVNUX0FDQ0VTU19FWFQgICAgICAweDkwRjMKKyNkZWZpbmUgR0xfUkVTRVRfTk9USUZJQ0FUSU9O
X1NUUkFURUdZX0VYVCAweDgyNTYKKyNkZWZpbmUgR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VY
VCAgICAgIDB4ODI1MgorI2RlZmluZSBHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUICAgICAg
MHg4MjYxCit0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMR0VUR1JBUEhJQ1NSRVNF
VFNUQVRVU0VYVFBST0MpICh2b2lkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
UkVBRE5QSVhFTFNFWFRQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUs
IHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9S
TUZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZT
aXplLCBHTGZsb2F0ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xH
RVROVU5JRk9STUlWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVT
CiBHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNF
WFQgKHZvaWQpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZG5QaXhlbHNFWFQg
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKLUdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtZnZFWFQgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtZnZFWFQgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICpwYXJhbXMpOwogR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm1pdkVYVCAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOwogI2Vu
ZGlmCi10eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNU
QVRVU0VYVFBST0MpICh2b2lkKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVB
RE5QSVhFTFNFWFRQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIHZv
aWQgKmRhdGEpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STUZW
RVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXpl
LCBmbG9hdCAqcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVO
SUZPUk1JVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfcm9idXN0
bmVzcyAqLwogCi0vKiBHTF9FWFRfc2VwYXJhdGVfc2hhZGVyX29iamVjdHMgKi8KKyNpZm5kZWYg
R0xfRVhUX3NSR0IKKyNkZWZpbmUgR0xfRVhUX3NSR0IgMQorI2RlZmluZSBHTF9TUkdCX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgMHg4QzQwCisjZGVmaW5lIEdMX1NSR0JfQUxQSEFfRVhUICAg
ICAgICAgICAgICAgICAweDhDNDIKKyNkZWZpbmUgR0xfU1JHQjhfQUxQSEE4X0VYVCAgICAgICAg
ICAgICAgIDB4OEM0MworI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HX0VYVCAweDgyMTAKKyNlbmRpZiAvKiBHTF9FWFRfc1JHQiAqLworCisjaWZuZGVmIEdM
X0VYVF9zUkdCX3dyaXRlX2NvbnRyb2wKKyNkZWZpbmUgR0xfRVhUX3NSR0Jfd3JpdGVfY29udHJv
bCAxCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUICAgICAgICAgICAweDhEQjkKKyNl
bmRpZiAvKiBHTF9FWFRfc1JHQl93cml0ZV9jb250cm9sICovCisKICNpZm5kZWYgR0xfRVhUX3Nl
cGFyYXRlX3NoYWRlcl9vYmplY3RzCiAjZGVmaW5lIEdMX0VYVF9zZXBhcmF0ZV9zaGFkZXJfb2Jq
ZWN0cyAxCisjZGVmaW5lIEdMX0FDVElWRV9QUk9HUkFNX0VYVCAgICAgICAgICAgICAweDgyNTkK
KyNkZWZpbmUgR0xfVkVSVEVYX1NIQURFUl9CSVRfRVhUICAgICAgICAgIDB4MDAwMDAwMDEKKyNk
ZWZpbmUgR0xfRlJBR01FTlRfU0hBREVSX0JJVF9FWFQgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZp
bmUgR0xfQUxMX1NIQURFUl9CSVRTX0VYVCAgICAgICAgICAgIDB4RkZGRkZGRkYKKyNkZWZpbmUg
R0xfUFJPR1JBTV9TRVBBUkFCTEVfRVhUICAgICAgICAgIDB4ODI1OAorI2RlZmluZSBHTF9QUk9H
UkFNX1BJUEVMSU5FX0JJTkRJTkdfRVhUICAgMHg4MjVBCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEFDVElWRVNIQURFUlBST0dSQU1FWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBH
THVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRQUk9H
UkFNUElQRUxJTkVFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lKTsKK3R5cGVkZWYgR0x1aW50IChH
TF9BUElFTlRSWVAgUEZOR0xDUkVBVEVTSEFERVJQUk9HUkFNVkVYVFBST0MpIChHTGVudW0gdHlw
ZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICoqc3RyaW5ncyk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVBST0dSQU1QSVBFTElORVNFWFRQUk9DKSAoR0xzaXpl
aSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFTlBST0dSQU1QSVBFTElORVNFWFRQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKnBp
cGVsaW5lcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1QSVBF
TElORUlORk9MT0dFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xjaGFyICppbmZvTG9nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUUFJPR1JBTVBJUEVMSU5FSVZFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVO
VFJZUCBQRk5HTElTUFJPR1JBTVBJUEVMSU5FRVhUUFJPQykgKEdMdWludCBwaXBlbGluZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1QQVJBTUVURVJJRVhUUFJPQykg
KEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0xRkVYVFBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0xSUVYVFBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0xSVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJGRVhUUFJPQykgKEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMkZWRVhUUFJPQykg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5J
Rk9STTJJRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAs
IEdMaW50IHYxKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZP
Uk0ySVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xQUk9HUkFNVU5JRk9STTNGRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2Mik7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0ZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNJRVhUUFJPQykg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGlu
dCB2Mik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0lW
RVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJP
R1JBTVVOSUZPUk00RkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRGVkVYVFBST0MpIChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00SUVY
VFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2
MSwgR0xpbnQgdjIsIEdMaW50IHYzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
UFJPR1JBTVVOSUZPUk00SVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STU1BVFJJWDJGVkVYVFBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
UFJPR1JBTVVOSUZPUk1NQVRSSVgzRlZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JN
TUFUUklYNEZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVU0VQUk9HUkFNU1RBR0VTRVhUUFJPQykgKEdM
dWludCBwaXBlbGluZSwgR0xiaXRmaWVsZCBzdGFnZXMsIEdMdWludCBwcm9ncmFtKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkFMSURBVEVQUk9HUkFNUElQRUxJTkVFWFRQUk9D
KSAoR0x1aW50IHBpcGVsaW5lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJP
R1JBTVVOSUZPUk0xVUlFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
THVpbnQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9S
TTJVSUVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwg
R0x1aW50IHYxKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZP
Uk0zVUlFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAs
IEdMdWludCB2MSwgR0x1aW50IHYyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
UFJPR1JBTVVOSUZPUk00VUlFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyLCBHTHVpbnQgdjMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFVSVZFWFRQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0yVUlW
RVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0x1aW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBS
T0dSQU1VTklGT1JNM1VJVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRVSVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVgyWDNGVkVY
VFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVgzWDJGVkVYVFBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVgyWDRGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JB
TVVOSUZPUk1NQVRSSVg0WDJGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRS
SVgzWDRGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVg0WDNGVkVYVFBS
T0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKICNpZmRlZiBHTF9HTEVYVF9Q
Uk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtU3RhZ2Vz
RVhUIChHTHVpbnQgcGlwZWxpbmUsIEdMYml0ZmllbGQgc3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSk7
CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xBY3RpdmVTaGFkZXJQcm9ncmFtRVhUIChH
THVpbnQgcGlwZWxpbmUsIEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEJpbmRQcm9ncmFtUGlwZWxpbmVFWFQgKEdMdWludCBwaXBlbGluZSk7CiBHTF9BUElD
QUxMIEdMdWludCBHTF9BUElFTlRSWSBnbENyZWF0ZVNoYWRlclByb2dyYW12RVhUIChHTGVudW0g
dHlwZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICoqc3RyaW5ncyk7Ci1HTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kUHJvZ3JhbVBpcGVsaW5lRVhUIChHTHVpbnQgcGlwZWxp
bmUpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5l
c0VYVCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7CiBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZW5Qcm9ncmFtUGlwZWxpbmVzRVhUIChHTHNpemVpIG4sIEdMdWlu
dCAqcGlwZWxpbmVzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1Q
aXBlbGluZUluZm9Mb2dFWFQgKEdMdWludCBwaXBlbGluZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqaW5mb0xvZyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRQcm9ncmFtUGlwZWxpbmVpdkVYVCAoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOwogR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJ
c1Byb2dyYW1QaXBlbGluZUVYVCAoR0x1aW50IHBpcGVsaW5lKTsKIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFByb2dyYW1QYXJhbWV0ZXJpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVt
IHBuYW1lLCBHTGludCB2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQ
cm9ncmFtUGlwZWxpbmVpdkVYVCAoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0x
aUVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB4KTsKLUdMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMmlFWFQgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm00aUVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtMmZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9h
dCB4LCBHTGZsb2F0IHkpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVu
aWZvcm0zZkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB6KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dy
YW1Vbmlmb3JtNGZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4
LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCB2MCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFt
VW5pZm9ybTFmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xQcm9ncmFtVW5pZm9ybTFpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
aW50IHYwKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWl2
RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5p
Zm9ybTJmRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdM
ZmxvYXQgdjEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0y
ZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3Jh
bVVuaWZvcm0yaUVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwg
R0xpbnQgdjEpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0y
aXZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1V
bmlmb3JtM2ZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwg
R0xmbG9hdCB2MSwgR0xmbG9hdCB2Mik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtVW5pZm9ybTNmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zaXZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNGZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xmbG9hdCB2
Myk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRmdkVYVCAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9y
bTRpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2
MSwgR0xpbnQgdjIsIEdMaW50IHYzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtNGl2RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xQcm9ncmFtVW5pZm9ybTFmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci1HTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNmdkVYVCAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRmdkVYVCAoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1h
dHJpeDJmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdkVYVCAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtVW5pZm9ybU1hdHJpeDRmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtU3RhZ2VzRVhUIChH
THVpbnQgcGlwZWxpbmUsIEdMYml0ZmllbGQgc3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSk7CiBHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWYWxpZGF0ZVByb2dyYW1QaXBlbGluZUVYVCAoR0x1
aW50IHBpcGVsaW5lKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1Q
aXBlbGluZUluZm9Mb2dFWFQgKEdMdWludCBwaXBlbGluZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqaW5mb0xvZyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xQcm9ncmFtVW5pZm9ybTF1aUVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHVpbnQgdjApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZv
cm0ydWlFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVp
bnQgdjEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zdWlF
WFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEs
IEdMdWludCB2Mik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9y
bTR1aUVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWlu
dCB2MSwgR0x1aW50IHYyLCBHTHVpbnQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUHJvZ3JhbVVuaWZvcm0xdWl2RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0ydWl2RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zdWl2RVhUIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm00dWl2RVhUIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAq
dmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRy
aXgyeDNmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2RVhUIChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRy
aXg0eDJmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2RVhUIChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVTRVBST0dS
QU1TVEFHRVNFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTGJpdGZpZWxkIHN0YWdlcywgR0x1
aW50IHByb2dyYW0pOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xBQ1RJVkVTSEFE
RVJQUk9HUkFNRVhUUFJPQykgKEdMdWludCBwaXBlbGluZSwgR0x1aW50IHByb2dyYW0pOwotdHlw
ZWRlZiBHTHVpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTENSRUFURVNIQURFUlBST0dSQU1WRVhUUFJP
QykgKEdMZW51bSB0eXBlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKipzdHJpbmdzKTsK
LXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklORFBST0dSQU1QSVBFTElORUVYVFBS
T0MpIChHTHVpbnQgcGlwZWxpbmUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xE
RUxFVEVQUk9HUkFNUElQRUxJTkVTRVhUUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpw
aXBlbGluZXMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5QUk9HUkFNUElQ
RUxJTkVTRVhUUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpOwotdHlwZWRlZiBH
TGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTUFJPR1JBTVBJUEVMSU5FRVhUUFJPQykgKEdM
dWludCBwaXBlbGluZSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1Q
QVJBTUVURVJJRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50IHZh
bHVlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JBTVBJUEVMSU5F
SVZFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
OwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFJRVhUUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCk7Ci10eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMklFWFRQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KTsKLXR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zSUVYVFBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOwotdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRJRVhUUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQg
dyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMUZFWFRQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgpOwotdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJGRVhUUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOwotdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNGRVhUUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eik7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNEZFWFRQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xQUk9HUkFNVU5JRk9STTFJVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci10eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMklWRVhUUFJPQykgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKLXR5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zSVZFWFRQUk9DKSAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdmFsdWUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9S
TTRJVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFBST0dSQU1VTklGT1JNMUZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
LXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zRlZFWFRQUk9D
KSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1V
TklGT1JNNEZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xQUk9HUkFNVU5JRk9STU1BVFJJWDJGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JB
TVVOSUZPUk1NQVRSSVgzRlZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNTUFUUklY
NEZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWQUxJREFURVBST0dSQU1QSVBFTElORUVYVFBST0MpIChH
THVpbnQgcGlwZWxpbmUpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9H
UkFNUElQRUxJTkVJTkZPTE9HRVhUUFJPQykgKEdMdWludCBwaXBlbGluZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqaW5mb0xvZyk7Ci0jZW5kaWYKKyNlbmRpZiAv
KiBHTF9FWFRfc2VwYXJhdGVfc2hhZGVyX29iamVjdHMgKi8KIAotLyogR0xfRVhUX3NoYWRlcl9m
cmFtZWJ1ZmZlcl9mZXRjaCAqLwogI2lmbmRlZiBHTF9FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2Zl
dGNoCiAjZGVmaW5lIEdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggMQotI2VuZGlmCisj
ZGVmaW5lIEdMX0ZSQUdNRU5UX1NIQURFUl9ESVNDQVJEU19TQU1QTEVTX0VYVCAweDhBNTIKKyNl
bmRpZiAvKiBHTF9FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICovCiAKLS8qIEdMX0VYVF9z
aGFkZXJfdGV4dHVyZV9sb2QgKi8KKyNpZm5kZWYgR0xfRVhUX3NoYWRlcl9pbXBsaWNpdF9jb252
ZXJzaW9ucworI2RlZmluZSBHTF9FWFRfc2hhZGVyX2ltcGxpY2l0X2NvbnZlcnNpb25zIDEKKyNl
bmRpZiAvKiBHTF9FWFRfc2hhZGVyX2ltcGxpY2l0X2NvbnZlcnNpb25zICovCisKKyNpZm5kZWYg
R0xfRVhUX3NoYWRlcl9pbnRlZ2VyX21peAorI2RlZmluZSBHTF9FWFRfc2hhZGVyX2ludGVnZXJf
bWl4IDEKKyNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX2ludGVnZXJfbWl4ICovCisKKyNpZm5kZWYg
R0xfRVhUX3NoYWRlcl9pb19ibG9ja3MKKyNkZWZpbmUgR0xfRVhUX3NoYWRlcl9pb19ibG9ja3Mg
MQorI2VuZGlmIC8qIEdMX0VYVF9zaGFkZXJfaW9fYmxvY2tzICovCisKKyNpZm5kZWYgR0xfRVhU
X3NoYWRlcl9waXhlbF9sb2NhbF9zdG9yYWdlCisjZGVmaW5lIEdMX0VYVF9zaGFkZXJfcGl4ZWxf
bG9jYWxfc3RvcmFnZSAxCisjZGVmaW5lIEdMX01BWF9TSEFERVJfUElYRUxfTE9DQUxfU1RPUkFH
RV9GQVNUX1NJWkVfRVhUIDB4OEY2MworI2RlZmluZSBHTF9NQVhfU0hBREVSX1BJWEVMX0xPQ0FM
X1NUT1JBR0VfU0laRV9FWFQgMHg4RjY3CisjZGVmaW5lIEdMX1NIQURFUl9QSVhFTF9MT0NBTF9T
VE9SQUdFX0VYVCAweDhGNjQKKyNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX3BpeGVsX2xvY2FsX3N0
b3JhZ2UgKi8KKwogI2lmbmRlZiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kCiAjZGVmaW5lIEdM
X0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgMQotI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCAqLwogCi0vKiBHTF9FWFRfc2hhZG93X3NhbXBsZXJzICovCiAjaWZuZGVm
IEdMX0VYVF9zaGFkb3dfc2FtcGxlcnMKICNkZWZpbmUgR0xfRVhUX3NoYWRvd19zYW1wbGVycyAx
CisjZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFX0VYVCAgICAgICAweDg4NEMKKyNkZWZp
bmUgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkNfRVhUICAgICAgIDB4ODg0RAorI2RlZmluZSBHTF9D
T01QQVJFX1JFRl9UT19URVhUVVJFX0VYVCAgICAgMHg4ODRFCisjZGVmaW5lIEdMX1NBTVBMRVJf
MkRfU0hBRE9XX0VYVCAgICAgICAgICAweDhCNjIKKyNlbmRpZiAvKiBHTF9FWFRfc2hhZG93X3Nh
bXBsZXJzICovCisKKyNpZm5kZWYgR0xfRVhUX3NwYXJzZV90ZXh0dXJlCisjZGVmaW5lIEdMX0VY
VF9zcGFyc2VfdGV4dHVyZSAxCisjZGVmaW5lIEdMX1RFWFRVUkVfU1BBUlNFX0VYVCAgICAgICAg
ICAgICAweDkxQTYKKyNkZWZpbmUgR0xfVklSVFVBTF9QQUdFX1NJWkVfSU5ERVhfRVhUICAgIDB4
OTFBNworI2RlZmluZSBHTF9OVU1fU1BBUlNFX0xFVkVMU19FWFQgICAgICAgICAgMHg5MUFBCisj
ZGVmaW5lIEdMX05VTV9WSVJUVUFMX1BBR0VfU0laRVNfRVhUICAgICAweDkxQTgKKyNkZWZpbmUg
R0xfVklSVFVBTF9QQUdFX1NJWkVfWF9FWFQgICAgICAgIDB4OTE5NQorI2RlZmluZSBHTF9WSVJU
VUFMX1BBR0VfU0laRV9ZX0VYVCAgICAgICAgMHg5MTk2CisjZGVmaW5lIEdMX1ZJUlRVQUxfUEFH
RV9TSVpFX1pfRVhUICAgICAgICAweDkxOTcKKyNkZWZpbmUgR0xfVEVYVFVSRV8yRF9BUlJBWSAg
ICAgICAgICAgICAgIDB4OEMxQQorI2RlZmluZSBHTF9URVhUVVJFXzNEICAgICAgICAgICAgICAg
ICAgICAgMHg4MDZGCisjZGVmaW5lIEdMX01BWF9TUEFSU0VfVEVYVFVSRV9TSVpFX0VYVCAgICAw
eDkxOTgKKyNkZWZpbmUgR0xfTUFYX1NQQVJTRV8zRF9URVhUVVJFX1NJWkVfRVhUIDB4OTE5OQor
I2RlZmluZSBHTF9NQVhfU1BBUlNFX0FSUkFZX1RFWFRVUkVfTEFZRVJTX0VYVCAweDkxOUEKKyNk
ZWZpbmUgR0xfU1BBUlNFX1RFWFRVUkVfRlVMTF9BUlJBWV9DVUJFX01JUE1BUFNfRVhUIDB4OTFB
OQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQQUdFQ09NTUlUTUVOVEVYVFBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9m
ZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgsIEdMYm9vbGVhbiBjb21taXQpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhZ2VDb21taXRtZW50RVhUIChHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xp
bnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgs
IEdMYm9vbGVhbiBjb21taXQpOwogI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3NwYXJzZV90ZXh0
dXJlICovCiAKLS8qIEdMX0VYVF9zUkdCICovCi0jaWZuZGVmIEdMX0VYVF9zUkdCCi0jZGVmaW5l
IEdMX0VYVF9zUkdCIDEKKyNpZm5kZWYgR0xfRVhUX3Rlc3NlbGxhdGlvbl9wb2ludF9zaXplCisj
ZGVmaW5lIEdMX0VYVF90ZXNzZWxsYXRpb25fcG9pbnRfc2l6ZSAxCisjZW5kaWYgLyogR0xfRVhU
X3Rlc3NlbGxhdGlvbl9wb2ludF9zaXplICovCisKKyNpZm5kZWYgR0xfRVhUX3Rlc3NlbGxhdGlv
bl9zaGFkZXIKKyNkZWZpbmUgR0xfRVhUX3Rlc3NlbGxhdGlvbl9zaGFkZXIgMQorI2RlZmluZSBH
TF9QQVRDSEVTX0VYVCAgICAgICAgICAgICAgICAgICAgMHgwMDBFCisjZGVmaW5lIEdMX1BBVENI
X1ZFUlRJQ0VTX0VYVCAgICAgICAgICAgICAweDhFNzIKKyNkZWZpbmUgR0xfVEVTU19DT05UUk9M
X09VVFBVVF9WRVJUSUNFU19FWFQgMHg4RTc1CisjZGVmaW5lIEdMX1RFU1NfR0VOX01PREVfRVhU
ICAgICAgICAgICAgICAweDhFNzYKKyNkZWZpbmUgR0xfVEVTU19HRU5fU1BBQ0lOR19FWFQgICAg
ICAgICAgIDB4OEU3NworI2RlZmluZSBHTF9URVNTX0dFTl9WRVJURVhfT1JERVJfRVhUICAgICAg
MHg4RTc4CisjZGVmaW5lIEdMX1RFU1NfR0VOX1BPSU5UX01PREVfRVhUICAgICAgICAweDhFNzkK
KyNkZWZpbmUgR0xfSVNPTElORVNfRVhUICAgICAgICAgICAgICAgICAgIDB4OEU3QQorI2RlZmlu
ZSBHTF9RVUFEU19FWFQgICAgICAgICAgICAgICAgICAgICAgMHgwMDA3CisjZGVmaW5lIEdMX0ZS
QUNUSU9OQUxfT0REX0VYVCAgICAgICAgICAgICAweDhFN0IKKyNkZWZpbmUgR0xfRlJBQ1RJT05B
TF9FVkVOX0VYVCAgICAgICAgICAgIDB4OEU3QworI2RlZmluZSBHTF9NQVhfUEFUQ0hfVkVSVElD
RVNfRVhUICAgICAgICAgMHg4RTdECisjZGVmaW5lIEdMX01BWF9URVNTX0dFTl9MRVZFTF9FWFQg
ICAgICAgICAweDhFN0UKKyNkZWZpbmUgR0xfTUFYX1RFU1NfQ09OVFJPTF9VTklGT1JNX0NPTVBP
TkVOVFNfRVhUIDB4OEU3RgorI2RlZmluZSBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1VOSUZPUk1f
Q09NUE9ORU5UU19FWFQgMHg4RTgwCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfVEVYVFVS
RV9JTUFHRV9VTklUU19FWFQgMHg4RTgxCisjZGVmaW5lIEdMX01BWF9URVNTX0VWQUxVQVRJT05f
VEVYVFVSRV9JTUFHRV9VTklUU19FWFQgMHg4RTgyCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRS
T0xfT1VUUFVUX0NPTVBPTkVOVFNfRVhUIDB4OEU4MworI2RlZmluZSBHTF9NQVhfVEVTU19QQVRD
SF9DT01QT05FTlRTX0VYVCAgMHg4RTg0CisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfVE9U
QUxfT1VUUFVUX0NPTVBPTkVOVFNfRVhUIDB4OEU4NQorI2RlZmluZSBHTF9NQVhfVEVTU19FVkFM
VUFUSU9OX09VVFBVVF9DT01QT05FTlRTX0VYVCAweDhFODYKKyNkZWZpbmUgR0xfTUFYX1RFU1Nf
Q09OVFJPTF9VTklGT1JNX0JMT0NLU19FWFQgMHg4RTg5CisjZGVmaW5lIEdMX01BWF9URVNTX0VW
QUxVQVRJT05fVU5JRk9STV9CTE9DS1NfRVhUIDB4OEU4QQorI2RlZmluZSBHTF9NQVhfVEVTU19D
T05UUk9MX0lOUFVUX0NPTVBPTkVOVFNfRVhUIDB4ODg2QworI2RlZmluZSBHTF9NQVhfVEVTU19F
VkFMVUFUSU9OX0lOUFVUX0NPTVBPTkVOVFNfRVhUIDB4ODg2RAorI2RlZmluZSBHTF9NQVhfQ09N
QklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UU19FWFQgMHg4RTFFCisjZGVmaW5l
IEdMX01BWF9DT01CSU5FRF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9DT01QT05FTlRTX0VYVCAw
eDhFMUYKKyNkZWZpbmUgR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJT
X0VYVCAweDkyQ0QKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRF
Ul9CVUZGRVJTX0VYVCAweDkyQ0UKKyNkZWZpbmUgR0xfTUFYX1RFU1NfQ09OVFJPTF9BVE9NSUNf
Q09VTlRFUlNfRVhUIDB4OTJEMworI2RlZmluZSBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0FUT01J
Q19DT1VOVEVSU19FWFQgMHg5MkQ0CisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfSU1BR0Vf
VU5JRk9STVNfRVhUIDB4OTBDQgorI2RlZmluZSBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX0lNQUdF
X1VOSUZPUk1TX0VYVCAweDkwQ0MKKyNkZWZpbmUgR0xfTUFYX1RFU1NfQ09OVFJPTF9TSEFERVJf
U1RPUkFHRV9CTE9DS1NfRVhUIDB4OTBEOAorI2RlZmluZSBHTF9NQVhfVEVTU19FVkFMVUFUSU9O
X1NIQURFUl9TVE9SQUdFX0JMT0NLU19FWFQgMHg5MEQ5CisjZGVmaW5lIEdMX1BSSU1JVElWRV9S
RVNUQVJUX0ZPUl9QQVRDSEVTX1NVUFBPUlRFRCAweDgyMjEKKyNkZWZpbmUgR0xfSVNfUEVSX1BB
VENIX0VYVCAgICAgICAgICAgICAgIDB4OTJFNworI2RlZmluZSBHTF9SRUZFUkVOQ0VEX0JZX1RF
U1NfQ09OVFJPTF9TSEFERVJfRVhUIDB4OTMwNworI2RlZmluZSBHTF9SRUZFUkVOQ0VEX0JZX1RF
U1NfRVZBTFVBVElPTl9TSEFERVJfRVhUIDB4OTMwOAorI2RlZmluZSBHTF9URVNTX0NPTlRST0xf
U0hBREVSX0VYVCAgICAgICAgMHg4RTg4CisjZGVmaW5lIEdMX1RFU1NfRVZBTFVBVElPTl9TSEFE
RVJfRVhUICAgICAweDhFODcKKyNkZWZpbmUgR0xfVEVTU19DT05UUk9MX1NIQURFUl9CSVRfRVhU
ICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9CSVRfRVhU
IDB4MDAwMDAwMTAKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUQ0hQQVJBTUVU
RVJJRVhUUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOworI2lmZGVmIEdMX0dMRVhU
X1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdGNoUGFyYW1ldGVy
aUVYVCAoR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9F
WFRfdGVzc2VsbGF0aW9uX3NoYWRlciAqLwogCi0vKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQxICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2JvcmRlcl9jbGFtcAorI2RlZmluZSBH
TF9FWFRfdGV4dHVyZV9ib3JkZXJfY2xhbXAgMQorI2RlZmluZSBHTF9URVhUVVJFX0JPUkRFUl9D
T0xPUl9FWFQgICAgICAgMHgxMDA0CisjZGVmaW5lIEdMX0NMQU1QX1RPX0JPUkRFUl9FWFQgICAg
ICAgICAgICAweDgxMkQKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFSQU1F
VEVSSUlWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQg
KnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUklV
SVZFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQgKnBh
cmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWFBBUkFNRVRFUklJ
VkVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhQQVJBTUVURVJJVUlWRVhUUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSSUlWRVhUUFJPQykgKEdM
dWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQQVJBTUVURVJJVUlWRVhUUFJPQykgKEdM
dWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW0pOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSUlWRVhUUFJPQykg
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSVVJVkVYVFBST0MpIChH
THVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7CisjaWZkZWYgR0xf
R0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1l
dGVySWl2RVhUIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJh
bXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVySXVpdkVYVCAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTHVpbnQgKnBhcmFtcyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhQYXJhbWV0ZXJJaXZFWFQgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2RVhUIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNh
bXBsZXJQYXJhbWV0ZXJJaXZFWFQgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMaW50ICpwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVyUGFy
YW1ldGVySXVpdkVYVCAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50
ICpwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVyUGFyYW1l
dGVySWl2RVhUIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2RVhU
IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7CisjZW5kaWYK
KyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9ib3JkZXJfY2xhbXAgKi8KKworI2lmbmRlZiBHTF9F
WFRfdGV4dHVyZV9idWZmZXIKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfYnVmZmVyIDEKKyNkZWZp
bmUgR0xfVEVYVFVSRV9CVUZGRVJfRVhUICAgICAgICAgICAgIDB4OEMyQQorI2RlZmluZSBHTF9U
RVhUVVJFX0JVRkZFUl9CSU5ESU5HX0VYVCAgICAgMHg4QzJBCisjZGVmaW5lIEdMX01BWF9URVhU
VVJFX0JVRkZFUl9TSVpFX0VYVCAgICAweDhDMkIKKyNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5H
X0JVRkZFUl9FWFQgICAgIDB4OEMyQworI2RlZmluZSBHTF9URVhUVVJFX0JVRkZFUl9EQVRBX1NU
T1JFX0JJTkRJTkdfRVhUIDB4OEMyRAorI2RlZmluZSBHTF9URVhUVVJFX0JVRkZFUl9PRkZTRVRf
QUxJR05NRU5UX0VYVCAweDkxOUYKKyNkZWZpbmUgR0xfU0FNUExFUl9CVUZGRVJfRVhUICAgICAg
ICAgICAgIDB4OERDMgorI2RlZmluZSBHTF9JTlRfU0FNUExFUl9CVUZGRVJfRVhUICAgICAgICAg
MHg4REQwCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0JVRkZFUl9FWFQgMHg4REQ4
CisjZGVmaW5lIEdMX0lNQUdFX0JVRkZFUl9FWFQgICAgICAgICAgICAgICAweDkwNTEKKyNkZWZp
bmUgR0xfSU5UX0lNQUdFX0JVRkZFUl9FWFQgICAgICAgICAgIDB4OTA1QworI2RlZmluZSBHTF9V
TlNJR05FRF9JTlRfSU1BR0VfQlVGRkVSX0VYVCAgMHg5MDY3CisjZGVmaW5lIEdMX1RFWFRVUkVf
QlVGRkVSX09GRlNFVF9FWFQgICAgICAweDkxOUQKKyNkZWZpbmUgR0xfVEVYVFVSRV9CVUZGRVJf
U0laRV9FWFQgICAgICAgIDB4OTE5RQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xU
RVhCVUZGRVJFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
THVpbnQgYnVmZmVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYQlVGRkVS
UkFOR0VFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHVp
bnQgYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7CisjaWZkZWYgR0xf
R0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4QnVmZmVy
RVhUIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBidWZmZXIp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4QnVmZmVyUmFuZ2VFWFQgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIg
b2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOworI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3RleHR1
cmVfYnVmZmVyICovCisKICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQog
I2RlZmluZSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIDEKLSNlbmRpZgorI2RlZmlu
ZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgMHg4M0YwCisjZGVmaW5lIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUICAweDgzRjEKKyNlbmRpZiAvKiBHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQxICovCiAKLS8qIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyAqLworI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjCisjZGVm
aW5lIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMgMQorI2RlZmluZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQzX0VYVCAgMHg4M0YyCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDVfRVhUICAweDgzRjMKKyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9zM3RjICovCisKKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfY3ViZV9tYXBfYXJyYXkKKyNk
ZWZpbmUgR0xfRVhUX3RleHR1cmVfY3ViZV9tYXBfYXJyYXkgMQorI2RlZmluZSBHTF9URVhUVVJF
X0NVQkVfTUFQX0FSUkFZX0VYVCAgICAgMHg5MDA5CisjZGVmaW5lIEdMX1RFWFRVUkVfQklORElO
R19DVUJFX01BUF9BUlJBWV9FWFQgMHg5MDBBCisjZGVmaW5lIEdMX1NBTVBMRVJfQ1VCRV9NQVBf
QVJSQVlfRVhUICAgICAweDkwMEMKKyNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX01BUF9BUlJBWV9T
SEFET1dfRVhUIDB4OTAwRAorI2RlZmluZSBHTF9JTlRfU0FNUExFUl9DVUJFX01BUF9BUlJBWV9F
WFQgMHg5MDBFCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZ
X0VYVCAweDkwMEYKKyNkZWZpbmUgR0xfSU1BR0VfQ1VCRV9NQVBfQVJSQVlfRVhUICAgICAgIDB4
OTA1NAorI2RlZmluZSBHTF9JTlRfSU1BR0VfQ1VCRV9NQVBfQVJSQVlfRVhUICAgMHg5MDVGCisj
ZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWV9FWFQgMHg5MDZBCisj
ZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfY3ViZV9tYXBfYXJyYXkgKi8KKwogI2lmbmRlZiBHTF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIDEKLSNlbmRpZgorI2RlZmluZSBHTF9URVhUVVJFX01BWF9BTklTT1RS
T1BZX0VYVCAgICAgMHg4NEZFCisjZGVmaW5lIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVCAweDg0RkYKKyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMg
Ki8KIAotLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCisjaWZuZGVmIEdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9taW5tYXgKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfZmlsdGVyX21p
bm1heCAxCisjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfZmlsdGVyX21pbm1heCAqLworCiAjaWZu
ZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAogI2RlZmluZSBHTF9FWFRfdGV4dHVy
ZV9mb3JtYXRfQkdSQTg4ODggMQotI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfZm9y
bWF0X0JHUkE4ODg4ICovCiAKLS8qIEdMX0VYVF90ZXh0dXJlX3JnICovCisjaWZuZGVmIEdMX0VY
VF90ZXh0dXJlX25vcm0xNgorI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9ub3JtMTYgMQorI2RlZmlu
ZSBHTF9SMTZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJBCisjZGVmaW5lIEdMX1JH
MTZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgyMkMKKyNkZWZpbmUgR0xfUkdCQTE2X0VY
VCAgICAgICAgICAgICAgICAgICAgIDB4ODA1QgorI2RlZmluZSBHTF9SR0IxNl9FWFQgICAgICAg
ICAgICAgICAgICAgICAgMHg4MDU0CisjZGVmaW5lIEdMX1JHQjE2X1NOT1JNX0VYVCAgICAgICAg
ICAgICAgICAweDhGOUEKKyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9ub3JtMTYgKi8KKwogI2lm
bmRlZiBHTF9FWFRfdGV4dHVyZV9yZwogI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9yZyAxCi0jZW5k
aWYKKyNkZWZpbmUgR0xfUkVEX0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4MTkwMworI2Rl
ZmluZSBHTF9SR19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjI3CisjZGVmaW5lIEdM
X1I4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMjkKKyNkZWZpbmUgR0xfUkc4X0VY
VCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyQgorI2VuZGlmIC8qIEdMX0VYVF90ZXh0dXJl
X3JnICovCiAKLS8qIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UgKi8KKyNpZm5kZWYgR0xfRVhUX3Rl
eHR1cmVfc1JHQl9SOAorI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9zUkdCX1I4IDEKKyNkZWZpbmUg
R0xfU1I4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4OEZCRAorI2VuZGlmIC8qIEdMX0VY
VF90ZXh0dXJlX3NSR0JfUjggKi8KKworI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9zUkdCX1JHOAor
I2RlZmluZSBHTF9FWFRfdGV4dHVyZV9zUkdCX1JHOCAxCisjZGVmaW5lIEdMX1NSRzhfRVhUICAg
ICAgICAgICAgICAgICAgICAgICAweDhGQkUKKyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9zUkdC
X1JHOCAqLworCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX3NSR0JfZGVjb2RlCisjZGVmaW5lIEdM
X0VYVF90ZXh0dXJlX3NSR0JfZGVjb2RlIDEKKyNkZWZpbmUgR0xfVEVYVFVSRV9TUkdCX0RFQ09E
RV9FWFQgICAgICAgIDB4OEE0OAorI2RlZmluZSBHTF9ERUNPREVfRVhUICAgICAgICAgICAgICAg
ICAgICAgMHg4QTQ5CisjZGVmaW5lIEdMX1NLSVBfREVDT0RFX0VYVCAgICAgICAgICAgICAgICAw
eDhBNEEKKyNlbmRpZiAvKiBHTF9FWFRfdGV4dHVyZV9zUkdCX2RlY29kZSAqLworCiAjaWZuZGVm
IEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfc3RvcmFnZSAx
CisjZGVmaW5lIEdMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVF9FWFQgICAweDkxMkYKKyNkZWZp
bmUgR0xfQUxQSEE4X0VYVCAgICAgICAgICAgICAgICAgICAgIDB4ODAzQworI2RlZmluZSBHTF9M
VU1JTkFOQ0U4X0VYVCAgICAgICAgICAgICAgICAgMHg4MDQwCisjZGVmaW5lIEdMX0xVTUlOQU5D
RThfQUxQSEE4X0VYVCAgICAgICAgICAweDgwNDUKKyNkZWZpbmUgR0xfUkdCQTMyRl9FWFQgICAg
ICAgICAgICAgICAgICAgIDB4ODgxNAorI2RlZmluZSBHTF9SR0IzMkZfRVhUICAgICAgICAgICAg
ICAgICAgICAgMHg4ODE1CisjZGVmaW5lIEdMX0FMUEhBMzJGX0VYVCAgICAgICAgICAgICAgICAg
ICAweDg4MTYKKyNkZWZpbmUgR0xfTFVNSU5BTkNFMzJGX0VYVCAgICAgICAgICAgICAgIDB4ODgx
OAorI2RlZmluZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUICAgICAgICAgMHg4ODE5CisjZGVm
aW5lIEdMX0FMUEhBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAweDg4MUMKKyNkZWZpbmUgR0xf
TFVNSU5BTkNFMTZGX0VYVCAgICAgICAgICAgICAgIDB4ODgxRQorI2RlZmluZSBHTF9MVU1JTkFO
Q0VfQUxQSEExNkZfRVhUICAgICAgICAgMHg4ODFGCisjZGVmaW5lIEdMX1IzMkZfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAweDgyMkUKKyNkZWZpbmUgR0xfUkczMkZfRVhUICAgICAgICAgICAg
ICAgICAgICAgIDB4ODIzMAordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhTVE9S
QUdFMURFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFRFWFNUT1JBR0UyREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNUT1JBR0UzREVYVFBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFRFWFRVUkVTVE9SQUdFMURFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUs
IEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
c2l6ZWkgd2lkdGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhUVVJFU1RP
UkFHRTJERVhUUFJPQykgKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxl
dmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFRVUkVTVE9SQUdFM0RFWFRQ
Uk9DKSAoR0x1aW50IHRleHR1cmUsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVp
IGRlcHRoKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xUZXhTdG9yYWdlMURFWFQgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxz
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgpOwogR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVGV4U3RvcmFnZTJERVhUIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxl
dmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CkBAIC0xNjYzLDE0OCArMTg1OCwzNTYgQEAKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFRleHR1cmVTdG9yYWdlMkRFWFQgKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBH
THNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXh0dXJlU3RvcmFn
ZTNERVhUIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNU
T1JBR0UxREVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVEVYU1RPUkFHRTJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxz
LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
LXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1RPUkFHRTNERVhUUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKLXR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVEVYVFVSRVNUT1JBR0UxREVYVFBST0MpIChHTHVpbnQgdGV4dHVy
ZSwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSB3aWR0aCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFRVUkVT
VE9SQUdFMkRFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkg
bGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYVFVSRVNUT1JBR0UzREVY
VFBST0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgpOwotI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfc3RvcmFnZSAqLwog
Ci0vKiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWICovCiAjaWZuZGVmIEdMX0VY
VF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfdHlw
ZV8yXzEwXzEwXzEwX1JFViAxCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
Vl9FWFQgMHg4MzY4CisjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JF
ViAqLworCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX3ZpZXcKKyNkZWZpbmUgR0xfRVhUX3RleHR1
cmVfdmlldyAxCisjZGVmaW5lIEdMX1RFWFRVUkVfVklFV19NSU5fTEVWRUxfRVhUICAgICAweDgy
REIKKyNkZWZpbmUgR0xfVEVYVFVSRV9WSUVXX05VTV9MRVZFTFNfRVhUICAgIDB4ODJEQworI2Rl
ZmluZSBHTF9URVhUVVJFX1ZJRVdfTUlOX0xBWUVSX0VYVCAgICAgMHg4MkRECisjZGVmaW5lIEdM
X1RFWFRVUkVfVklFV19OVU1fTEFZRVJTX0VYVCAgICAweDgyREUKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVEVYVFVSRVZJRVdFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMZW51
bSB0YXJnZXQsIEdMdWludCBvcmlndGV4dHVyZSwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHVp
bnQgbWlubGV2ZWwsIEdMdWludCBudW1sZXZlbHMsIEdMdWludCBtaW5sYXllciwgR0x1aW50IG51
bWxheWVycyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsVGV4dHVyZVZpZXdFWFQgKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgb3JpZ3RleHR1cmUsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IG1pbmxl
dmVsLCBHTHVpbnQgbnVtbGV2ZWxzLCBHTHVpbnQgbWlubGF5ZXIsIEdMdWludCBudW1sYXllcnMp
OwogI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3RleHR1cmVfdmlldyAqLwogCi0vKiBHTF9FWFRf
dW5wYWNrX3N1YmltYWdlICovCiAjaWZuZGVmIEdMX0VYVF91bnBhY2tfc3ViaW1hZ2UKICNkZWZp
bmUgR0xfRVhUX3VucGFja19zdWJpbWFnZSAxCi0jZW5kaWYKKyNkZWZpbmUgR0xfVU5QQUNLX1JP
V19MRU5HVEhfRVhUICAgICAgICAgIDB4MENGMgorI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9ST1dT
X0VYVCAgICAgICAgICAgMHgwQ0YzCisjZGVmaW5lIEdMX1VOUEFDS19TS0lQX1BJWEVMU19FWFQg
ICAgICAgICAweDBDRjQKKyNlbmRpZiAvKiBHTF9FWFRfdW5wYWNrX3N1YmltYWdlICovCiAKLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKgotICogRE1QIGV4dGVuc2lvbiBmdW5jdGlvbnMKLSAqLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KLQotLyogR0xfRE1QX3NoYWRlcl9iaW5hcnkgKi8KLSNpZm5kZWYgR0xfRE1QX3No
YWRlcl9iaW5hcnkKLSNkZWZpbmUgR0xfRE1QX3NoYWRlcl9iaW5hcnkgMQotI2VuZGlmCi0KLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKgotICogRkogZXh0ZW5zaW9uIGZ1bmN0aW9ucwotICotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwotCi0vKiBHTF9GSl9zaGFkZXJfYmluYXJ5X0dDQ1NPICovCiAjaWZuZGVmIEdMX0ZK
X3NoYWRlcl9iaW5hcnlfR0NDU08KICNkZWZpbmUgR0xfRkpfc2hhZGVyX2JpbmFyeV9HQ0NTTyAx
CisjZGVmaW5lIEdMX0dDQ1NPX1NIQURFUl9CSU5BUllfRkogICAgICAgICAweDkyNjAKKyNlbmRp
ZiAvKiBHTF9GSl9zaGFkZXJfYmluYXJ5X0dDQ1NPICovCisKKyNpZm5kZWYgR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQorI2RlZmluZSBHTF9JTUdfbXVsdGlzYW1wbGVkX3Jl
bmRlcl90b190ZXh0dXJlIDEKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVNfSU1HICAg
ICAgIDB4OTEzMworI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
X0lNRyAweDkxMzQKKyNkZWZpbmUgR0xfTUFYX1NBTVBMRVNfSU1HICAgICAgICAgICAgICAgIDB4
OTEzNQorI2RlZmluZSBHTF9URVhUVVJFX1NBTVBMRVNfSU1HICAgICAgICAgICAgMHg5MTM2Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNB
TVBMRUlNR1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRE1VTFRJU0FNUExFSU1HUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBH
THVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgc2FtcGxlcyk7CisjaWZkZWYgR0xf
R0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMs
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNh
bXBsZUlNRyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJn
ZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzKTsKICNlbmRp
ZgorI2VuZGlmIC8qIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgKi8KIAot
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBJTUcgZXh0ZW5zaW9uIGZ1bmN0aW9ucwotICotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwotCi0vKiBHTF9JTUdfcHJvZ3JhbV9iaW5hcnkgKi8KICNpZm5kZWYgR0xfSU1H
X3Byb2dyYW1fYmluYXJ5CiAjZGVmaW5lIEdMX0lNR19wcm9ncmFtX2JpbmFyeSAxCi0jZW5kaWYK
KyNkZWZpbmUgR0xfU0dYX1BST0dSQU1fQklOQVJZX0lNRyAgICAgICAgIDB4OTEzMAorI2VuZGlm
IC8qIEdMX0lNR19wcm9ncmFtX2JpbmFyeSAqLwogCi0vKiBHTF9JTUdfcmVhZF9mb3JtYXQgKi8K
ICNpZm5kZWYgR0xfSU1HX3JlYWRfZm9ybWF0CiAjZGVmaW5lIEdMX0lNR19yZWFkX2Zvcm1hdCAx
Ci0jZW5kaWYKKyNkZWZpbmUgR0xfQkdSQV9JTUcgICAgICAgICAgICAgICAgICAgICAgIDB4ODBF
MQorI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9JTUcgMHg4MzY1CisjZW5k
aWYgLyogR0xfSU1HX3JlYWRfZm9ybWF0ICovCiAKLS8qIEdMX0lNR19zaGFkZXJfYmluYXJ5ICov
CiAjaWZuZGVmIEdMX0lNR19zaGFkZXJfYmluYXJ5CiAjZGVmaW5lIEdMX0lNR19zaGFkZXJfYmlu
YXJ5IDEKLSNlbmRpZgorI2RlZmluZSBHTF9TR1hfQklOQVJZX0lNRyAgICAgICAgICAgICAgICAg
MHg4QzBBCisjZW5kaWYgLyogR0xfSU1HX3NoYWRlcl9iaW5hcnkgKi8KIAotLyogR0xfSU1HX3Rl
eHR1cmVfY29tcHJlc3Npb25fcHZydGMgKi8KICNpZm5kZWYgR0xfSU1HX3RleHR1cmVfY29tcHJl
c3Npb25fcHZydGMKICNkZWZpbmUgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMgMQot
I2VuZGlmCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcgMHg4QzAw
CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcgMHg4QzAxCisjZGVm
aW5lIEdMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1HIDB4OEMwMgorI2RlZmluZSBH
TF9DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNRyAweDhDMDMKKyNlbmRpZiAvKiBHTF9J
TUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyAqLwogCi0vKiBHTF9JTUdfdGV4dHVyZV9jb21w
cmVzc2lvbl9wdnJ0YzIgKi8KICNpZm5kZWYgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZy
dGMyCiAjZGVmaW5lIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjMiAxCisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjJfSU1HIDB4OTEzNworI2RlZmluZSBHTF9D
T01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYyX0lNRyAweDkxMzgKKyNlbmRpZiAvKiBHTF9JTUdf
dGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YzIgKi8KKworI2lmbmRlZiBHTF9JTlRFTF9mcmFtZWJ1
ZmZlcl9DTUFBCisjZGVmaW5lIEdMX0lOVEVMX2ZyYW1lYnVmZmVyX0NNQUEgMQordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xBUFBMWUZSQU1FQlVGRkVSQVRUQUNITUVOVENNQUFJTlRF
TFBST0MpICh2b2lkKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xBcHBseUZyYW1lYnVmZmVyQXR0YWNobWVudENNQUFJTlRFTCAodm9p
ZCk7CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9JTlRFTF9mcmFtZWJ1ZmZlcl9DTUFBICovCiAKLS8q
IEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgKi8KLSNpZm5kZWYgR0xfSU1H
X211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQotI2RlZmluZSBHTF9JTUdfbXVsdGlzYW1w
bGVkX3JlbmRlcl90b190ZXh0dXJlIDEKKyNpZm5kZWYgR0xfSU5URUxfcGVyZm9ybWFuY2VfcXVl
cnkKKyNkZWZpbmUgR0xfSU5URUxfcGVyZm9ybWFuY2VfcXVlcnkgMQorI2RlZmluZSBHTF9QRVJG
UVVFUllfU0lOR0xFX0NPTlRFWFRfSU5URUwgMHgwMDAwMDAwMAorI2RlZmluZSBHTF9QRVJGUVVF
UllfR0xPQkFMX0NPTlRFWFRfSU5URUwgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9QRVJGUVVFUllf
V0FJVF9JTlRFTCAgICAgICAgICAgMHg4M0ZCCisjZGVmaW5lIEdMX1BFUkZRVUVSWV9GTFVTSF9J
TlRFTCAgICAgICAgICAweDgzRkEKKyNkZWZpbmUgR0xfUEVSRlFVRVJZX0RPTk9UX0ZMVVNIX0lO
VEVMICAgIDB4ODNGOQorI2RlZmluZSBHTF9QRVJGUVVFUllfQ09VTlRFUl9FVkVOVF9JTlRFTCAg
MHg5NEYwCisjZGVmaW5lIEdMX1BFUkZRVUVSWV9DT1VOVEVSX0RVUkFUSU9OX05PUk1fSU5URUwg
MHg5NEYxCisjZGVmaW5lIEdMX1BFUkZRVUVSWV9DT1VOVEVSX0RVUkFUSU9OX1JBV19JTlRFTCAw
eDk0RjIKKyNkZWZpbmUgR0xfUEVSRlFVRVJZX0NPVU5URVJfVEhST1VHSFBVVF9JTlRFTCAweDk0
RjMKKyNkZWZpbmUgR0xfUEVSRlFVRVJZX0NPVU5URVJfUkFXX0lOVEVMICAgIDB4OTRGNAorI2Rl
ZmluZSBHTF9QRVJGUVVFUllfQ09VTlRFUl9USU1FU1RBTVBfSU5URUwgMHg5NEY1CisjZGVmaW5l
IEdMX1BFUkZRVUVSWV9DT1VOVEVSX0RBVEFfVUlOVDMyX0lOVEVMIDB4OTRGOAorI2RlZmluZSBH
TF9QRVJGUVVFUllfQ09VTlRFUl9EQVRBX1VJTlQ2NF9JTlRFTCAweDk0RjkKKyNkZWZpbmUgR0xf
UEVSRlFVRVJZX0NPVU5URVJfREFUQV9GTE9BVF9JTlRFTCAweDk0RkEKKyNkZWZpbmUgR0xfUEVS
RlFVRVJZX0NPVU5URVJfREFUQV9ET1VCTEVfSU5URUwgMHg5NEZCCisjZGVmaW5lIEdMX1BFUkZR
VUVSWV9DT1VOVEVSX0RBVEFfQk9PTDMyX0lOVEVMIDB4OTRGQworI2RlZmluZSBHTF9QRVJGUVVF
UllfUVVFUllfTkFNRV9MRU5HVEhfTUFYX0lOVEVMIDB4OTRGRAorI2RlZmluZSBHTF9QRVJGUVVF
UllfQ09VTlRFUl9OQU1FX0xFTkdUSF9NQVhfSU5URUwgMHg5NEZFCisjZGVmaW5lIEdMX1BFUkZR
VUVSWV9DT1VOVEVSX0RFU0NfTEVOR1RIX01BWF9JTlRFTCAweDk0RkYKKyNkZWZpbmUgR0xfUEVS
RlFVRVJZX0dQQV9FWFRFTkRFRF9DT1VOVEVSU19JTlRFTCAweDk1MDAKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMQkVHSU5QRVJGUVVFUllJTlRFTFBST0MpIChHTHVpbnQgcXVlcnlI
YW5kbGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDUkVBVEVQRVJGUVVFUllJ
TlRFTFBST0MpIChHTHVpbnQgcXVlcnlJZCwgR0x1aW50ICpxdWVyeUhhbmRsZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVBFUkZRVUVSWUlOVEVMUFJPQykgKEdMdWlu
dCBxdWVyeUhhbmRsZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVORFBFUkZR
VUVSWUlOVEVMUFJPQykgKEdMdWludCBxdWVyeUhhbmRsZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVEZJUlNUUEVSRlFVRVJZSURJTlRFTFBST0MpIChHTHVpbnQgKnF1ZXJ5
SWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRORVhUUEVSRlFVRVJZSURJ
TlRFTFBST0MpIChHTHVpbnQgcXVlcnlJZCwgR0x1aW50ICpuZXh0UXVlcnlJZCk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZDT1VOVEVSSU5GT0lOVEVMUFJPQykgKEdM
dWludCBxdWVyeUlkLCBHTHVpbnQgY291bnRlcklkLCBHTHVpbnQgY291bnRlck5hbWVMZW5ndGgs
IEdMY2hhciAqY291bnRlck5hbWUsIEdMdWludCBjb3VudGVyRGVzY0xlbmd0aCwgR0xjaGFyICpj
b3VudGVyRGVzYywgR0x1aW50ICpjb3VudGVyT2Zmc2V0LCBHTHVpbnQgKmNvdW50ZXJEYXRhU2l6
ZSwgR0x1aW50ICpjb3VudGVyVHlwZUVudW0sIEdMdWludCAqY291bnRlckRhdGFUeXBlRW51bSwg
R0x1aW50NjQgKnJhd0NvdW50ZXJNYXhWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVFBFUkZRVUVSWURBVEFJTlRFTFBST0MpIChHTHVpbnQgcXVlcnlIYW5kbGUsIEdM
dWludCBmbGFncywgR0xzaXplaSBkYXRhU2l6ZSwgR0x2b2lkICpkYXRhLCBHTHVpbnQgKmJ5dGVz
V3JpdHRlbik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZRVUVSWUlE
QllOQU1FSU5URUxQUk9DKSAoR0xjaGFyICpxdWVyeU5hbWUsIEdMdWludCAqcXVlcnlJZCk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZRVUVSWUlORk9JTlRFTFBST0Mp
IChHTHVpbnQgcXVlcnlJZCwgR0x1aW50IHF1ZXJ5TmFtZUxlbmd0aCwgR0xjaGFyICpxdWVyeU5h
bWUsIEdMdWludCAqZGF0YVNpemUsIEdMdWludCAqbm9Db3VudGVycywgR0x1aW50ICpub0luc3Rh
bmNlcywgR0x1aW50ICpjYXBzTWFzayk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwotR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
SU1HIChHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSk7Ci1HTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1H
IChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50LCBHTHNpemVpKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJlZ2luUGVyZlF1ZXJ5SU5URUwgKEdMdWludCBxdWVy
eUhhbmRsZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDcmVhdGVQZXJmUXVlcnlJ
TlRFTCAoR0x1aW50IHF1ZXJ5SWQsIEdMdWludCAqcXVlcnlIYW5kbGUpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUGVyZlF1ZXJ5SU5URUwgKEdMdWludCBxdWVyeUhhbmRs
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmRQZXJmUXVlcnlJTlRFTCAoR0x1
aW50IHF1ZXJ5SGFuZGxlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZpcnN0
UGVyZlF1ZXJ5SWRJTlRFTCAoR0x1aW50ICpxdWVyeUlkKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldE5leHRQZXJmUXVlcnlJZElOVEVMIChHTHVpbnQgcXVlcnlJZCwgR0x1aW50
ICpuZXh0UXVlcnlJZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmQ291
bnRlckluZm9JTlRFTCAoR0x1aW50IHF1ZXJ5SWQsIEdMdWludCBjb3VudGVySWQsIEdMdWludCBj
b3VudGVyTmFtZUxlbmd0aCwgR0xjaGFyICpjb3VudGVyTmFtZSwgR0x1aW50IGNvdW50ZXJEZXNj
TGVuZ3RoLCBHTGNoYXIgKmNvdW50ZXJEZXNjLCBHTHVpbnQgKmNvdW50ZXJPZmZzZXQsIEdMdWlu
dCAqY291bnRlckRhdGFTaXplLCBHTHVpbnQgKmNvdW50ZXJUeXBlRW51bSwgR0x1aW50ICpjb3Vu
dGVyRGF0YVR5cGVFbnVtLCBHTHVpbnQ2NCAqcmF3Q291bnRlck1heFZhbHVlKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBlcmZRdWVyeURhdGFJTlRFTCAoR0x1aW50IHF1ZXJ5
SGFuZGxlLCBHTHVpbnQgZmxhZ3MsIEdMc2l6ZWkgZGF0YVNpemUsIEdMdm9pZCAqZGF0YSwgR0x1
aW50ICpieXRlc1dyaXR0ZW4pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVy
ZlF1ZXJ5SWRCeU5hbWVJTlRFTCAoR0xjaGFyICpxdWVyeU5hbWUsIEdMdWludCAqcXVlcnlJZCk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmUXVlcnlJbmZvSU5URUwgKEdM
dWludCBxdWVyeUlkLCBHTHVpbnQgcXVlcnlOYW1lTGVuZ3RoLCBHTGNoYXIgKnF1ZXJ5TmFtZSwg
R0x1aW50ICpkYXRhU2l6ZSwgR0x1aW50ICpub0NvdW50ZXJzLCBHTHVpbnQgKm5vSW5zdGFuY2Vz
LCBHTHVpbnQgKmNhcHNNYXNrKTsKICNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xSRU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVJTUdQUk9DKSAoR0xlbnVtIHRhcmdl
dCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVC
VUZGRVJURVhUVVJFMkRNVUxUSVNBTVBMRUlNR1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
YXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVs
LCBHTHNpemVpIHNhbXBsZXMpOworI2VuZGlmIC8qIEdMX0lOVEVMX3BlcmZvcm1hbmNlX3F1ZXJ5
ICovCisKKyNpZm5kZWYgR0xfTlZfYmluZGxlc3NfdGV4dHVyZQorI2RlZmluZSBHTF9OVl9iaW5k
bGVzc190ZXh0dXJlIDEKK3R5cGVkZWYgR0x1aW50NjQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRF
WFRVUkVIQU5ETEVOVlBST0MpIChHTHVpbnQgdGV4dHVyZSk7Cit0eXBlZGVmIEdMdWludDY0IChH
TF9BUElFTlRSWVAgUEZOR0xHRVRURVhUVVJFU0FNUExFUkhBTkRMRU5WUFJPQykgKEdMdWludCB0
ZXh0dXJlLCBHTHVpbnQgc2FtcGxlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TE1BS0VURVhUVVJFSEFORExFUkVTSURFTlROVlBST0MpIChHTHVpbnQ2NCBoYW5kbGUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNQUtFVEVYVFVSRUhBTkRMRU5PTlJFU0lERU5U
TlZQUk9DKSAoR0x1aW50NjQgaGFuZGxlKTsKK3R5cGVkZWYgR0x1aW50NjQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVElNQUdFSEFORExFTlZQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVs
LCBHTGJvb2xlYW4gbGF5ZXJlZCwgR0xpbnQgbGF5ZXIsIEdMZW51bSBmb3JtYXQpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNQUtFSU1BR0VIQU5ETEVSRVNJREVOVE5WUFJPQykg
KEdMdWludDY0IGhhbmRsZSwgR0xlbnVtIGFjY2Vzcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTE1BS0VJTUFHRUhBTkRMRU5PTlJFU0lERU5UTlZQUk9DKSAoR0x1aW50NjQgaGFu
ZGxlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STUhBTkRMRVVJNjRO
VlBST0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50NjQgdmFsdWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xVTklGT1JNSEFORExFVUk2NFZOVlBST0MpIChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1IQU5ETEVVSTY0TlZQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NCB2YWx1ZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNSEFORExFVUk2NFZOVlBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludDY0
ICp2YWx1ZXMpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTVEVYVFVS
RUhBTkRMRVJFU0lERU5UTlZQUk9DKSAoR0x1aW50NjQgaGFuZGxlKTsKK3R5cGVkZWYgR0xib29s
ZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0lNQUdFSEFORExFUkVTSURFTlROVlBST0MpIChHTHVp
bnQ2NCBoYW5kbGUpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgR0x1
aW50NjQgR0xfQVBJRU5UUlkgZ2xHZXRUZXh0dXJlSGFuZGxlTlYgKEdMdWludCB0ZXh0dXJlKTsK
K0dMX0FQSUNBTEwgR0x1aW50NjQgR0xfQVBJRU5UUlkgZ2xHZXRUZXh0dXJlU2FtcGxlckhhbmRs
ZU5WIChHTHVpbnQgdGV4dHVyZSwgR0x1aW50IHNhbXBsZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsTWFrZVRleHR1cmVIYW5kbGVSZXNpZGVudE5WIChHTHVpbnQ2NCBoYW5kbGUp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWFrZVRleHR1cmVIYW5kbGVOb25SZXNp
ZGVudE5WIChHTHVpbnQ2NCBoYW5kbGUpOworR0xfQVBJQ0FMTCBHTHVpbnQ2NCBHTF9BUElFTlRS
WSBnbEdldEltYWdlSGFuZGxlTlYgKEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xib29s
ZWFuIGxheWVyZWQsIEdMaW50IGxheWVyLCBHTGVudW0gZm9ybWF0KTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbE1ha2VJbWFnZUhhbmRsZVJlc2lkZW50TlYgKEdMdWludDY0IGhhbmRs
ZSwgR0xlbnVtIGFjY2Vzcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xNYWtlSW1h
Z2VIYW5kbGVOb25SZXNpZGVudE5WIChHTHVpbnQ2NCBoYW5kbGUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVW5pZm9ybUhhbmRsZXVpNjROViAoR0xpbnQgbG9jYXRpb24sIEdMdWlu
dDY0IHZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1IYW5kbGV1
aTY0dk5WIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjQgKnZh
bHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtSGFuZGxl
dWk2NE5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludDY0IHZhbHVlKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtSGFuZGxldWk2NHZO
ViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQ2NCAqdmFsdWVzKTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNU
ZXh0dXJlSGFuZGxlUmVzaWRlbnROViAoR0x1aW50NjQgaGFuZGxlKTsKK0dMX0FQSUNBTEwgR0xi
b29sZWFuIEdMX0FQSUVOVFJZIGdsSXNJbWFnZUhhbmRsZVJlc2lkZW50TlYgKEdMdWludDY0IGhh
bmRsZSk7CiAjZW5kaWYKKyNlbmRpZiAvKiBHTF9OVl9iaW5kbGVzc190ZXh0dXJlICovCiAKLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKgotICogTlYgZXh0ZW5zaW9uIGZ1bmN0aW9ucwotICotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLworI2lmbmRlZiBHTF9OVl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZAorI2RlZmluZSBH
TF9OVl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZCAxCisjZGVmaW5lIEdMX0JMRU5EX09WRVJMQVBf
TlYgICAgICAgICAgICAgICAweDkyODEKKyNkZWZpbmUgR0xfQkxFTkRfUFJFTVVMVElQTElFRF9T
UkNfTlYgICAgIDB4OTI4MAorI2RlZmluZSBHTF9CTFVFX05WICAgICAgICAgICAgICAgICAgICAg
ICAgMHgxOTA1CisjZGVmaW5lIEdMX0NPTE9SQlVSTl9OViAgICAgICAgICAgICAgICAgICAweDky
OUEKKyNkZWZpbmUgR0xfQ09MT1JET0RHRV9OViAgICAgICAgICAgICAgICAgIDB4OTI5OQorI2Rl
ZmluZSBHTF9DT05KT0lOVF9OViAgICAgICAgICAgICAgICAgICAgMHg5Mjg0CisjZGVmaW5lIEdM
X0NPTlRSQVNUX05WICAgICAgICAgICAgICAgICAgICAweDkyQTEKKyNkZWZpbmUgR0xfREFSS0VO
X05WICAgICAgICAgICAgICAgICAgICAgIDB4OTI5NworI2RlZmluZSBHTF9ESUZGRVJFTkNFX05W
ICAgICAgICAgICAgICAgICAgMHg5MjlFCisjZGVmaW5lIEdMX0RJU0pPSU5UX05WICAgICAgICAg
ICAgICAgICAgICAweDkyODMKKyNkZWZpbmUgR0xfRFNUX0FUT1BfTlYgICAgICAgICAgICAgICAg
ICAgIDB4OTI4RgorI2RlZmluZSBHTF9EU1RfSU5fTlYgICAgICAgICAgICAgICAgICAgICAgMHg5
MjhCCisjZGVmaW5lIEdMX0RTVF9OViAgICAgICAgICAgICAgICAgICAgICAgICAweDkyODcKKyNk
ZWZpbmUgR0xfRFNUX09VVF9OViAgICAgICAgICAgICAgICAgICAgIDB4OTI4RAorI2RlZmluZSBH
TF9EU1RfT1ZFUl9OViAgICAgICAgICAgICAgICAgICAgMHg5Mjg5CisjZGVmaW5lIEdMX0VYQ0xV
U0lPTl9OViAgICAgICAgICAgICAgICAgICAweDkyQTAKKyNkZWZpbmUgR0xfR1JFRU5fTlYgICAg
ICAgICAgICAgICAgICAgICAgIDB4MTkwNAorI2RlZmluZSBHTF9IQVJETElHSFRfTlYgICAgICAg
ICAgICAgICAgICAgMHg5MjlCCisjZGVmaW5lIEdMX0hBUkRNSVhfTlYgICAgICAgICAgICAgICAg
ICAgICAweDkyQTkKKyNkZWZpbmUgR0xfSFNMX0NPTE9SX05WICAgICAgICAgICAgICAgICAgIDB4
OTJBRgorI2RlZmluZSBHTF9IU0xfSFVFX05WICAgICAgICAgICAgICAgICAgICAgMHg5MkFECisj
ZGVmaW5lIEdMX0hTTF9MVU1JTk9TSVRZX05WICAgICAgICAgICAgICAweDkyQjAKKyNkZWZpbmUg
R0xfSFNMX1NBVFVSQVRJT05fTlYgICAgICAgICAgICAgIDB4OTJBRQorI2RlZmluZSBHTF9JTlZF
UlRfT1ZHX05WICAgICAgICAgICAgICAgICAgMHg5MkI0CisjZGVmaW5lIEdMX0lOVkVSVF9SR0Jf
TlYgICAgICAgICAgICAgICAgICAweDkyQTMKKyNkZWZpbmUgR0xfTElHSFRFTl9OViAgICAgICAg
ICAgICAgICAgICAgIDB4OTI5OAorI2RlZmluZSBHTF9MSU5FQVJCVVJOX05WICAgICAgICAgICAg
ICAgICAgMHg5MkE1CisjZGVmaW5lIEdMX0xJTkVBUkRPREdFX05WICAgICAgICAgICAgICAgICAw
eDkyQTQKKyNkZWZpbmUgR0xfTElORUFSTElHSFRfTlYgICAgICAgICAgICAgICAgIDB4OTJBNwor
I2RlZmluZSBHTF9NSU5VU19DTEFNUEVEX05WICAgICAgICAgICAgICAgMHg5MkIzCisjZGVmaW5l
IEdMX01JTlVTX05WICAgICAgICAgICAgICAgICAgICAgICAweDkyOUYKKyNkZWZpbmUgR0xfTVVM
VElQTFlfTlYgICAgICAgICAgICAgICAgICAgIDB4OTI5NAorI2RlZmluZSBHTF9PVkVSTEFZX05W
ICAgICAgICAgICAgICAgICAgICAgMHg5Mjk2CisjZGVmaW5lIEdMX1BJTkxJR0hUX05WICAgICAg
ICAgICAgICAgICAgICAweDkyQTgKKyNkZWZpbmUgR0xfUExVU19DTEFNUEVEX0FMUEhBX05WICAg
ICAgICAgIDB4OTJCMgorI2RlZmluZSBHTF9QTFVTX0NMQU1QRURfTlYgICAgICAgICAgICAgICAg
MHg5MkIxCisjZGVmaW5lIEdMX1BMVVNfREFSS0VSX05WICAgICAgICAgICAgICAgICAweDkyOTIK
KyNkZWZpbmUgR0xfUExVU19OViAgICAgICAgICAgICAgICAgICAgICAgIDB4OTI5MQorI2RlZmlu
ZSBHTF9SRURfTlYgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTAzCisjZGVmaW5lIEdMX1ND
UkVFTl9OViAgICAgICAgICAgICAgICAgICAgICAweDkyOTUKKyNkZWZpbmUgR0xfU09GVExJR0hU
X05WICAgICAgICAgICAgICAgICAgIDB4OTI5QworI2RlZmluZSBHTF9TUkNfQVRPUF9OViAgICAg
ICAgICAgICAgICAgICAgMHg5MjhFCisjZGVmaW5lIEdMX1NSQ19JTl9OViAgICAgICAgICAgICAg
ICAgICAgICAweDkyOEEKKyNkZWZpbmUgR0xfU1JDX05WICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OTI4NgorI2RlZmluZSBHTF9TUkNfT1VUX05WICAgICAgICAgICAgICAgICAgICAgMHg5MjhD
CisjZGVmaW5lIEdMX1NSQ19PVkVSX05WICAgICAgICAgICAgICAgICAgICAweDkyODgKKyNkZWZp
bmUgR0xfVU5DT1JSRUxBVEVEX05WICAgICAgICAgICAgICAgIDB4OTI4MgorI2RlZmluZSBHTF9W
SVZJRExJR0hUX05WICAgICAgICAgICAgICAgICAgMHg5MkE2CisjZGVmaW5lIEdMX1hPUl9OViAg
ICAgICAgICAgICAgICAgICAgICAgICAweDE1MDYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMQkxFTkRQQVJBTUVURVJJTlZQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5EQkFSUklFUk5WUFJPQykgKHZv
aWQpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEJsZW5kUGFyYW1ldGVyaU5WIChHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kQmFycmllck5WICh2b2lkKTsKKyNlbmRp
ZgorI2VuZGlmIC8qIEdMX05WX2JsZW5kX2VxdWF0aW9uX2FkdmFuY2VkICovCiAKLS8qIEdMX05W
X2NvdmVyYWdlX3NhbXBsZSAqLworI2lmbmRlZiBHTF9OVl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNl
ZF9jb2hlcmVudAorI2RlZmluZSBHTF9OVl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZF9jb2hlcmVu
dCAxCisjZGVmaW5lIEdMX0JMRU5EX0FEVkFOQ0VEX0NPSEVSRU5UX05WICAgICAweDkyODUKKyNl
bmRpZiAvKiBHTF9OVl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZF9jb2hlcmVudCAqLworCisjaWZu
ZGVmIEdMX05WX2NvbmRpdGlvbmFsX3JlbmRlcgorI2RlZmluZSBHTF9OVl9jb25kaXRpb25hbF9y
ZW5kZXIgMQorI2RlZmluZSBHTF9RVUVSWV9XQUlUX05WICAgICAgICAgICAgICAgICAgMHg4RTEz
CisjZGVmaW5lIEdMX1FVRVJZX05PX1dBSVRfTlYgICAgICAgICAgICAgICAweDhFMTQKKyNkZWZp
bmUgR0xfUVVFUllfQllfUkVHSU9OX1dBSVRfTlYgICAgICAgIDB4OEUxNQorI2RlZmluZSBHTF9R
VUVSWV9CWV9SRUdJT05fTk9fV0FJVF9OViAgICAgMHg4RTE2Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEJFR0lOQ09ORElUSU9OQUxSRU5ERVJOVlBST0MpIChHTHVpbnQgaWQsIEdM
ZW51bSBtb2RlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5EQ09ORElUSU9O
QUxSRU5ERVJOVlBST0MpICh2b2lkKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCZWdpbkNvbmRpdGlvbmFsUmVuZGVyTlYgKEdMdWlu
dCBpZCwgR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kQ29u
ZGl0aW9uYWxSZW5kZXJOViAodm9pZCk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9OVl9jb25kaXRp
b25hbF9yZW5kZXIgKi8KKworI2lmbmRlZiBHTF9OVl9jb25zZXJ2YXRpdmVfcmFzdGVyCisjZGVm
aW5lIEdMX05WX2NvbnNlcnZhdGl2ZV9yYXN0ZXIgMQorI2RlZmluZSBHTF9DT05TRVJWQVRJVkVf
UkFTVEVSSVpBVElPTl9OViAgMHg5MzQ2CisjZGVmaW5lIEdMX1NVQlBJWEVMX1BSRUNJU0lPTl9C
SUFTX1hfQklUU19OViAweDkzNDcKKyNkZWZpbmUgR0xfU1VCUElYRUxfUFJFQ0lTSU9OX0JJQVNf
WV9CSVRTX05WIDB4OTM0OAorI2RlZmluZSBHTF9NQVhfU1VCUElYRUxfUFJFQ0lTSU9OX0JJQVNf
QklUU19OViAweDkzNDkKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU1VCUElYRUxQ
UkVDSVNJT05CSUFTTlZQUk9DKSAoR0x1aW50IHhiaXRzLCBHTHVpbnQgeWJpdHMpOworI2lmZGVm
IEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN1YnBp
eGVsUHJlY2lzaW9uQmlhc05WIChHTHVpbnQgeGJpdHMsIEdMdWludCB5Yml0cyk7CisjZW5kaWYK
KyNlbmRpZiAvKiBHTF9OVl9jb25zZXJ2YXRpdmVfcmFzdGVyICovCisKKyNpZm5kZWYgR0xfTlZf
Y29weV9idWZmZXIKKyNkZWZpbmUgR0xfTlZfY29weV9idWZmZXIgMQorI2RlZmluZSBHTF9DT1BZ
X1JFQURfQlVGRkVSX05WICAgICAgICAgICAgMHg4RjM2CisjZGVmaW5lIEdMX0NPUFlfV1JJVEVf
QlVGRkVSX05WICAgICAgICAgICAweDhGMzcKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQ09QWUJVRkZFUlNVQkRBVEFOVlBST0MpIChHTGVudW0gcmVhZFRhcmdldCwgR0xlbnVtIHdy
aXRlVGFyZ2V0LCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwgR0xz
aXplaXB0ciBzaXplKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xDb3B5QnVmZmVyU3ViRGF0YU5WIChHTGVudW0gcmVhZFRhcmdldCwg
R0xlbnVtIHdyaXRlVGFyZ2V0LCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9m
ZnNldCwgR0xzaXplaXB0ciBzaXplKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX05WX2NvcHlfYnVm
ZmVyICovCisKICNpZm5kZWYgR0xfTlZfY292ZXJhZ2Vfc2FtcGxlCiAjZGVmaW5lIEdMX05WX2Nv
dmVyYWdlX3NhbXBsZSAxCisjZGVmaW5lIEdMX0NPVkVSQUdFX0NPTVBPTkVOVF9OViAgICAgICAg
ICAweDhFRDAKKyNkZWZpbmUgR0xfQ09WRVJBR0VfQ09NUE9ORU5UNF9OViAgICAgICAgIDB4OEVE
MQorI2RlZmluZSBHTF9DT1ZFUkFHRV9BVFRBQ0hNRU5UX05WICAgICAgICAgMHg4RUQyCisjZGVm
aW5lIEdMX0NPVkVSQUdFX0JVRkZFUlNfTlYgICAgICAgICAgICAweDhFRDMKKyNkZWZpbmUgR0xf
Q09WRVJBR0VfU0FNUExFU19OViAgICAgICAgICAgIDB4OEVENAorI2RlZmluZSBHTF9DT1ZFUkFH
RV9BTExfRlJBR01FTlRTX05WICAgICAgMHg4RUQ1CisjZGVmaW5lIEdMX0NPVkVSQUdFX0VER0Vf
RlJBR01FTlRTX05WICAgICAweDhFRDYKKyNkZWZpbmUgR0xfQ09WRVJBR0VfQVVUT01BVElDX05W
ICAgICAgICAgIDB4OEVENworI2RlZmluZSBHTF9DT1ZFUkFHRV9CVUZGRVJfQklUX05WICAgICAg
ICAgMHgwMDAwODAwMAordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUkFHRU1B
U0tOVlBST0MpIChHTGJvb2xlYW4gbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTENPVkVSQUdFT1BFUkFUSU9OTlZQUk9DKSAoR0xlbnVtIG9wZXJhdGlvbik7CiAjaWZkZWYg
R0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJh
Z2VNYXNrTlYgKEdMYm9vbGVhbiBtYXNrKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bENvdmVyYWdlT3BlcmF0aW9uTlYgKEdMZW51bSBvcGVyYXRpb24pOwogI2VuZGlmCi10eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTUFTS05WUFJPQykgKEdMYm9vbGVhbiBt
YXNrKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJBR0VPUEVSQVRJT05O
VlBST0MpIChHTGVudW0gb3BlcmF0aW9uKTsKLSNlbmRpZgorI2VuZGlmIC8qIEdMX05WX2NvdmVy
YWdlX3NhbXBsZSAqLwogCi0vKiBHTF9OVl9kZXB0aF9ub25saW5lYXIgKi8KICNpZm5kZWYgR0xf
TlZfZGVwdGhfbm9ubGluZWFyCiAjZGVmaW5lIEdMX05WX2RlcHRoX25vbmxpbmVhciAxCi0jZW5k
aWYKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMTZfTk9OTElORUFSX05WIDB4OEUyQworI2Vu
ZGlmIC8qIEdMX05WX2RlcHRoX25vbmxpbmVhciAqLwogCi0vKiBHTF9OVl9kcmF3X2J1ZmZlcnMg
Ki8KICNpZm5kZWYgR0xfTlZfZHJhd19idWZmZXJzCiAjZGVmaW5lIEdMX05WX2RyYXdfYnVmZmVy
cyAxCisjZGVmaW5lIEdMX01BWF9EUkFXX0JVRkZFUlNfTlYgICAgICAgICAgICAweDg4MjQKKyNk
ZWZpbmUgR0xfRFJBV19CVUZGRVIwX05WICAgICAgICAgICAgICAgIDB4ODgyNQorI2RlZmluZSBH
TF9EUkFXX0JVRkZFUjFfTlYgICAgICAgICAgICAgICAgMHg4ODI2CisjZGVmaW5lIEdMX0RSQVdf
QlVGRkVSMl9OViAgICAgICAgICAgICAgICAweDg4MjcKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIz
X05WICAgICAgICAgICAgICAgIDB4ODgyOAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjRfTlYgICAg
ICAgICAgICAgICAgMHg4ODI5CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSNV9OViAgICAgICAgICAg
ICAgICAweDg4MkEKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI2X05WICAgICAgICAgICAgICAgIDB4
ODgyQgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjdfTlYgICAgICAgICAgICAgICAgMHg4ODJDCisj
ZGVmaW5lIEdMX0RSQVdfQlVGRkVSOF9OViAgICAgICAgICAgICAgICAweDg4MkQKKyNkZWZpbmUg
R0xfRFJBV19CVUZGRVI5X05WICAgICAgICAgICAgICAgIDB4ODgyRQorI2RlZmluZSBHTF9EUkFX
X0JVRkZFUjEwX05WICAgICAgICAgICAgICAgMHg4ODJGCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVS
MTFfTlYgICAgICAgICAgICAgICAweDg4MzAKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMl9OViAg
ICAgICAgICAgICAgIDB4ODgzMQorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEzX05WICAgICAgICAg
ICAgICAgMHg4ODMyCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTRfTlYgICAgICAgICAgICAgICAw
eDg4MzMKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxNV9OViAgICAgICAgICAgICAgIDB4ODgzNAor
I2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9OViAgICAgICAgICAgMHg4Q0UwCisjZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQxX05WICAgICAgICAgICAweDhDRTEKKyNkZWZpbmUgR0xfQ09M
T1JfQVRUQUNITUVOVDJfTlYgICAgICAgICAgIDB4OENFMgorI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UM19OViAgICAgICAgICAgMHg4Q0UzCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ0
X05WICAgICAgICAgICAweDhDRTQKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDVfTlYgICAg
ICAgICAgIDB4OENFNQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNl9OViAgICAgICAgICAg
MHg4Q0U2CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ3X05WICAgICAgICAgICAweDhDRTcK
KyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDhfTlYgICAgICAgICAgIDB4OENFOAorI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOV9OViAgICAgICAgICAgMHg4Q0U5CisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQxMF9OViAgICAgICAgICAweDhDRUEKKyNkZWZpbmUgR0xfQ09MT1JfQVRU
QUNITUVOVDExX05WICAgICAgICAgIDB4OENFQgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MTJfTlYgICAgICAgICAgMHg4Q0VDCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxM19OViAg
ICAgICAgICAweDhDRUQKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDE0X05WICAgICAgICAg
IDB4OENFRQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTVfTlYgICAgICAgICAgMHg4Q0VG
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZGRVJTTlZQUk9DKSAoR0xz
aXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMK
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdCdWZmZXJzTlYgKEdMc2l6ZWkgbiwg
Y29uc3QgR0xlbnVtICpidWZzKTsKICNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xEUkFXQlVGRkVSU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsK
LSNlbmRpZgorI2VuZGlmIC8qIEdMX05WX2RyYXdfYnVmZmVycyAqLwogCi0vKiBHTF9FWFRfZHJh
d19idWZmZXJzICovCi0jaWZuZGVmIEdMX0VYVF9kcmF3X2J1ZmZlcnMKLSNkZWZpbmUgR0xfRVhU
X2RyYXdfYnVmZmVycyAxCi0jaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0J1ZmZlcnNFWFQgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVt
ICpidWZzKTsKLSNlbmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXQlVG
RkVSU0VYVFBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7Ci0jZW5kaWYKLQot
LyogR0xfTlZfZHJhd19pbnN0YW5jZWQgKi8KICNpZm5kZWYgR0xfTlZfZHJhd19pbnN0YW5jZWQK
ICNkZWZpbmUgR0xfTlZfZHJhd19pbnN0YW5jZWQgMQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VETlZQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFRE5WUFJPQykgKEdMZW51bSBtb2Rl
LCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBwcmltY291bnQpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbERyYXdBcnJheXNJbnN0YW5jZWROViAoR0xlbnVtIG1vZGUsIEdMaW50
IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7Ci1HTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWROViAoR0xlbnVtIG1vZGUsIEdM
c2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkg
cHJpbWNvdW50KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0lu
c3RhbmNlZE5WIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKICNlbmRpZgotdHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZORFJBV0FSUkFZU0lOU1RBTkNFRE5WUFJPQykgKEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwotdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZORFJBV0VMRU1FTlRTSU5TVEFOQ0VETlZQUk9DKSAoR0xl
bnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlj
ZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKLSNlbmRpZgorI2VuZGlmIC8qIEdMX05WX2RyYXdfaW5z
dGFuY2VkICovCiAKLS8qIEdMX05WX2Zib19jb2xvcl9hdHRhY2htZW50cyAqLworI2lmbmRlZiBH
TF9OVl9leHBsaWNpdF9hdHRyaWJfbG9jYXRpb24KKyNkZWZpbmUgR0xfTlZfZXhwbGljaXRfYXR0
cmliX2xvY2F0aW9uIDEKKyNlbmRpZiAvKiBHTF9OVl9leHBsaWNpdF9hdHRyaWJfbG9jYXRpb24g
Ki8KKwogI2lmbmRlZiBHTF9OVl9mYm9fY29sb3JfYXR0YWNobWVudHMKICNkZWZpbmUgR0xfTlZf
ZmJvX2NvbG9yX2F0dGFjaG1lbnRzIDEKLSNlbmRpZgorI2RlZmluZSBHTF9NQVhfQ09MT1JfQVRU
QUNITUVOVFNfTlYgICAgICAgMHg4Q0RGCisjZW5kaWYgLyogR0xfTlZfZmJvX2NvbG9yX2F0dGFj
aG1lbnRzICovCiAKLS8qIEdMX05WX2ZlbmNlICovCiAjaWZuZGVmIEdMX05WX2ZlbmNlCiAjZGVm
aW5lIEdMX05WX2ZlbmNlIDEKLSNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVGZW5jZXNOViAoR0xzaXplaSwgY29uc3QgR0x1aW50
ICopOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuRmVuY2VzTlYgKEdMc2l6ZWks
IEdMdWludCAqKTsKLUdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNGZW5jZU5W
IChHTHVpbnQpOwotR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xUZXN0RmVuY2VO
ViAoR0x1aW50KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZlbmNlaXZOViAo
R0x1aW50LCBHTGVudW0sIEdMaW50ICopOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
RmluaXNoRmVuY2VOViAoR0x1aW50KTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNl
dEZlbmNlTlYgKEdMdWludCwgR0xlbnVtKTsKLSNlbmRpZgorI2RlZmluZSBHTF9BTExfQ09NUExF
VEVEX05WICAgICAgICAgICAgICAgMHg4NEYyCisjZGVmaW5lIEdMX0ZFTkNFX1NUQVRVU19OViAg
ICAgICAgICAgICAgICAweDg0RjMKKyNkZWZpbmUgR0xfRkVOQ0VfQ09ORElUSU9OX05WICAgICAg
ICAgICAgIDB4ODRGNAogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVGRU5D
RVNOVlBST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZmVuY2VzKTsKIHR5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VORkVOQ0VTTlZQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQg
KmZlbmNlcyk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNGRU5DRU5W
UFJPQykgKEdMdWludCBmZW5jZSk7CkBAIC0xODEyLDEzNSArMjIxNSw2MjggQEAKIHR5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURkVOQ0VJVk5WUFJPQykgKEdMdWludCBmZW5jZSwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRklOSVNIRkVOQ0VOVlBST0MpIChHTHVpbnQgZmVuY2UpOwogdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xTRVRGRU5DRU5WUFJPQykgKEdMdWludCBmZW5jZSwgR0xlbnVtIGNv
bmRpdGlvbik7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsRGVsZXRlRmVuY2VzTlYgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmZW5j
ZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuRmVuY2VzTlYgKEdMc2l6ZWkg
biwgR0x1aW50ICpmZW5jZXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJ
c0ZlbmNlTlYgKEdMdWludCBmZW5jZSk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRS
WSBnbFRlc3RGZW5jZU5WIChHTHVpbnQgZmVuY2UpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0RmVuY2Vpdk5WIChHTHVpbnQgZmVuY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGaW5pc2hGZW5jZU5WIChHTHVp
bnQgZmVuY2UpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2V0RmVuY2VOViAoR0x1
aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKTsKICNlbmRpZgorI2VuZGlmIC8qIEdMX05WX2Zl
bmNlICovCiAKLS8qIEdMX05WX2ZyYW1lYnVmZmVyX2JsaXQgKi8KKyNpZm5kZWYgR0xfTlZfZmls
bF9yZWN0YW5nbGUKKyNkZWZpbmUgR0xfTlZfZmlsbF9yZWN0YW5nbGUgMQorI2RlZmluZSBHTF9G
SUxMX1JFQ1RBTkdMRV9OViAgICAgICAgICAgICAgMHg5MzNDCisjZW5kaWYgLyogR0xfTlZfZmls
bF9yZWN0YW5nbGUgKi8KKworI2lmbmRlZiBHTF9OVl9mcmFnbWVudF9jb3ZlcmFnZV90b19jb2xv
cgorI2RlZmluZSBHTF9OVl9mcmFnbWVudF9jb3ZlcmFnZV90b19jb2xvciAxCisjZGVmaW5lIEdM
X0ZSQUdNRU5UX0NPVkVSQUdFX1RPX0NPTE9SX05WICAweDkyREQKKyNkZWZpbmUgR0xfRlJBR01F
TlRfQ09WRVJBR0VfQ09MT1JfTlYgICAgIDB4OTJERQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xGUkFHTUVOVENPVkVSQUdFQ09MT1JOVlBST0MpIChHTHVpbnQgY29sb3IpOworI2lm
ZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZy
YWdtZW50Q292ZXJhZ2VDb2xvck5WIChHTHVpbnQgY29sb3IpOworI2VuZGlmCisjZW5kaWYgLyog
R0xfTlZfZnJhZ21lbnRfY292ZXJhZ2VfdG9fY29sb3IgKi8KKworI2lmbmRlZiBHTF9OVl9mcmFn
bWVudF9zaGFkZXJfaW50ZXJsb2NrCisjZGVmaW5lIEdMX05WX2ZyYWdtZW50X3NoYWRlcl9pbnRl
cmxvY2sgMQorI2VuZGlmIC8qIEdMX05WX2ZyYWdtZW50X3NoYWRlcl9pbnRlcmxvY2sgKi8KKwog
I2lmbmRlZiBHTF9OVl9mcmFtZWJ1ZmZlcl9ibGl0CiAjZGVmaW5lIEdMX05WX2ZyYW1lYnVmZmVy
X2JsaXQgMQorI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX05WICAgICAgICAgICAgMHg4Q0E4
CisjZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVJfTlYgICAgICAgICAgICAweDhDQTkKKyNkZWZp
bmUgR0xfRFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HX05WICAgIDB4OENBNgorI2RlZmluZSBHTF9S
RUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfTlYgICAgMHg4Q0FBCit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEJMSVRGUkFNRUJVRkZFUk5WUFJPQykgKEdMaW50IHNyY1gwLCBHTGludCBz
cmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAs
IEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVy
KTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xCbGl0RnJhbWVidWZmZXJOViAoaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3Jj
WDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBH
TGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEJsaXRGcmFtZWJ1ZmZlck5WIChHTGludCBzcmNYMCwgR0xpbnQg
c3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkw
LCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRl
cik7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkJMSVRGUkFNRUJVRkZF
Uk5WUFJPQykgKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNy
Y1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwg
R0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKKyNlbmRpZiAvKiBHTF9OVl9mcmFtZWJ1
ZmZlcl9ibGl0ICovCisKKyNpZm5kZWYgR0xfTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcwor
I2RlZmluZSBHTF9OVl9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIDEKKyNkZWZpbmUgR0xfQ09W
RVJBR0VfTU9EVUxBVElPTl9UQUJMRV9OViAgIDB4OTMzMQorI2RlZmluZSBHTF9DT0xPUl9TQU1Q
TEVTX05WICAgICAgICAgICAgICAgMHg4RTIwCisjZGVmaW5lIEdMX0RFUFRIX1NBTVBMRVNfTlYg
ICAgICAgICAgICAgICAweDkzMkQKKyNkZWZpbmUgR0xfU1RFTkNJTF9TQU1QTEVTX05WICAgICAg
ICAgICAgIDB4OTMyRQorI2RlZmluZSBHTF9NSVhFRF9ERVBUSF9TQU1QTEVTX1NVUFBPUlRFRF9O
ViAweDkzMkYKKyNkZWZpbmUgR0xfTUlYRURfU1RFTkNJTF9TQU1QTEVTX1NVUFBPUlRFRF9OViAw
eDkzMzAKKyNkZWZpbmUgR0xfQ09WRVJBR0VfTU9EVUxBVElPTl9OViAgICAgICAgIDB4OTMzMgor
I2RlZmluZSBHTF9DT1ZFUkFHRV9NT0RVTEFUSU9OX1RBQkxFX1NJWkVfTlYgMHg5MzMzCit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTU9EVUxBVElPTlRBQkxFTlZQUk9D
KSAoR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUQ09WRVJBR0VNT0RVTEFUSU9OVEFCTEVOVlBST0MpIChHTHNpemVpIGJ1ZnNp
emUsIEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1ZFUkFH
RU1PRFVMQVRJT05OVlBST0MpIChHTGVudW0gY29tcG9uZW50cyk7CisjaWZkZWYgR0xfR0xFWFRf
UFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNb2R1bGF0
aW9uVGFibGVOViAoR0xzaXplaSBuLCBjb25zdCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEdldENvdmVyYWdlTW9kdWxhdGlvblRhYmxlTlYgKEdMc2l6ZWkgYnVm
c2l6ZSwgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlcmFn
ZU1vZHVsYXRpb25OViAoR0xlbnVtIGNvbXBvbmVudHMpOwogI2VuZGlmCisjZW5kaWYgLyogR0xf
TlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyAqLwogCi0vKiBHTF9OVl9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSAqLwogI2lmbmRlZiBHTF9OVl9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQogI2Rl
ZmluZSBHTF9OVl9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSAxCisjZGVmaW5lIEdMX1JFTkRFUkJV
RkZFUl9TQU1QTEVTX05WICAgICAgICAweDhDQUIKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9NVUxUSVNBTVBMRV9OViAweDhENTYKKyNkZWZpbmUgR0xfTUFYX1NBTVBMRVNfTlYg
ICAgICAgICAgICAgICAgIDB4OEQ1NwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xS
RU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZU5WICggR0xlbnVtIHRh
cmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRl
cmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZU5WIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBs
ZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5SRU5ERVJCVUZGRVJTVE9S
QUdFTVVMVElTQU1QTEVOVlBST0MpICggR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLSNl
bmRpZgorI2VuZGlmIC8qIEdMX05WX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlICovCiAKLS8qIEdM
X05WX2dlbmVyYXRlX21pcG1hcF9zUkdCICovCiAjaWZuZGVmIEdMX05WX2dlbmVyYXRlX21pcG1h
cF9zUkdCCiAjZGVmaW5lIEdMX05WX2dlbmVyYXRlX21pcG1hcF9zUkdCIDEKLSNlbmRpZgorI2Vu
ZGlmIC8qIEdMX05WX2dlbmVyYXRlX21pcG1hcF9zUkdCICovCiAKLS8qIEdMX05WX2luc3RhbmNl
ZF9hcnJheXMgKi8KKyNpZm5kZWYgR0xfTlZfZ2VvbWV0cnlfc2hhZGVyX3Bhc3N0aHJvdWdoCisj
ZGVmaW5lIEdMX05WX2dlb21ldHJ5X3NoYWRlcl9wYXNzdGhyb3VnaCAxCisjZW5kaWYgLyogR0xf
TlZfZ2VvbWV0cnlfc2hhZGVyX3Bhc3N0aHJvdWdoICovCisKKyNpZm5kZWYgR0xfTlZfaW1hZ2Vf
Zm9ybWF0cworI2RlZmluZSBHTF9OVl9pbWFnZV9mb3JtYXRzIDEKKyNlbmRpZiAvKiBHTF9OVl9p
bWFnZV9mb3JtYXRzICovCisKICNpZm5kZWYgR0xfTlZfaW5zdGFuY2VkX2FycmF5cwogI2RlZmlu
ZSBHTF9OVl9pbnN0YW5jZWRfYXJyYXlzIDEKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9ESVZJU09SX05WIDB4ODhGRQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJU
RVhBVFRSSUJESVZJU09STlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7CiAj
aWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VmVydGV4QXR0cmliRGl2aXNvck5WIChHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKICNl
bmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOVkVSVEVYQVRUUklCRElWSVNPUk5W
UFJPQykgKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworI2VuZGlmIC8qIEdMX05WX2lu
c3RhbmNlZF9hcnJheXMgKi8KKworI2lmbmRlZiBHTF9OVl9pbnRlcm5hbGZvcm1hdF9zYW1wbGVf
cXVlcnkKKyNkZWZpbmUgR0xfTlZfaW50ZXJuYWxmb3JtYXRfc2FtcGxlX3F1ZXJ5IDEKKyNkZWZp
bmUgR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSAgICAgICAgIDB4OTEwMAorI2RlZmluZSBHTF9U
RVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZICAgMHg5MTAyCisjZGVmaW5lIEdMX01VTFRJU0FN
UExFU19OViAgICAgICAgICAgICAgICAweDkzNzEKKyNkZWZpbmUgR0xfU1VQRVJTQU1QTEVfU0NB
TEVfWF9OViAgICAgICAgIDB4OTM3MgorI2RlZmluZSBHTF9TVVBFUlNBTVBMRV9TQ0FMRV9ZX05W
ICAgICAgICAgMHg5MzczCisjZGVmaW5lIEdMX0NPTkZPUk1BTlRfTlYgICAgICAgICAgICAgICAg
ICAweDkzNzQKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URVJOQUxGT1JN
QVRTQU1QTEVJVk5WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
R0xzaXplaSBzYW1wbGVzLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBh
cmFtcyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsR2V0SW50ZXJuYWxmb3JtYXRTYW1wbGVpdk5WIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIHBuYW1lLCBHTHNpemVp
IGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOwogI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfaW50ZXJu
YWxmb3JtYXRfc2FtcGxlX3F1ZXJ5ICovCiAKLS8qIEdMX05WX3JlYWRfYnVmZmVyICovCisjaWZu
ZGVmIEdMX05WX25vbl9zcXVhcmVfbWF0cmljZXMKKyNkZWZpbmUgR0xfTlZfbm9uX3NxdWFyZV9t
YXRyaWNlcyAxCisjZGVmaW5lIEdMX0ZMT0FUX01BVDJ4M19OViAgICAgICAgICAgICAgICAweDhC
NjUKKyNkZWZpbmUgR0xfRkxPQVRfTUFUMng0X05WICAgICAgICAgICAgICAgIDB4OEI2NgorI2Rl
ZmluZSBHTF9GTE9BVF9NQVQzeDJfTlYgICAgICAgICAgICAgICAgMHg4QjY3CisjZGVmaW5lIEdM
X0ZMT0FUX01BVDN4NF9OViAgICAgICAgICAgICAgICAweDhCNjgKKyNkZWZpbmUgR0xfRkxPQVRf
TUFUNHgyX05WICAgICAgICAgICAgICAgIDB4OEI2OQorI2RlZmluZSBHTF9GTE9BVF9NQVQ0eDNf
TlYgICAgICAgICAgICAgICAgMHg4QjZBCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFVOSUZPUk1NQVRSSVgyWDNGVk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzWDJGVk5WUFJPQykgKEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgy
WDRGVk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTFVOSUZPUk1NQVRSSVg0WDJGVk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzWDRGVk5WUFJPQykgKEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1N
QVRSSVg0WDNGVk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CisjaWZkZWYgR0xfR0xFWFRfUFJP
VE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDJ4M2Z2
TlYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlm
b3JtTWF0cml4M3gyZnZOViAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFVuaWZvcm1NYXRyaXgyeDRmdk5WIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDR4MmZ2TlYgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4M3g0ZnZO
ViAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZv
cm1NYXRyaXg0eDNmdk5WIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworI2VuZGlmCisjZW5kaWYgLyogR0xf
TlZfbm9uX3NxdWFyZV9tYXRyaWNlcyAqLworCisjaWZuZGVmIEdMX05WX3BhdGhfcmVuZGVyaW5n
CisjZGVmaW5lIEdMX05WX3BhdGhfcmVuZGVyaW5nIDEKKyNkZWZpbmUgR0xfUEFUSF9GT1JNQVRf
U1ZHX05WICAgICAgICAgICAgIDB4OTA3MAorI2RlZmluZSBHTF9QQVRIX0ZPUk1BVF9QU19OViAg
ICAgICAgICAgICAgMHg5MDcxCisjZGVmaW5lIEdMX1NUQU5EQVJEX0ZPTlRfTkFNRV9OViAgICAg
ICAgICAweDkwNzIKKyNkZWZpbmUgR0xfU1lTVEVNX0ZPTlRfTkFNRV9OViAgICAgICAgICAgIDB4
OTA3MworI2RlZmluZSBHTF9GSUxFX05BTUVfTlYgICAgICAgICAgICAgICAgICAgMHg5MDc0Cisj
ZGVmaW5lIEdMX1BBVEhfU1RST0tFX1dJRFRIX05WICAgICAgICAgICAweDkwNzUKKyNkZWZpbmUg
R0xfUEFUSF9FTkRfQ0FQU19OViAgICAgICAgICAgICAgIDB4OTA3NgorI2RlZmluZSBHTF9QQVRI
X0lOSVRJQUxfRU5EX0NBUF9OViAgICAgICAgMHg5MDc3CisjZGVmaW5lIEdMX1BBVEhfVEVSTUlO
QUxfRU5EX0NBUF9OViAgICAgICAweDkwNzgKKyNkZWZpbmUgR0xfUEFUSF9KT0lOX1NUWUxFX05W
ICAgICAgICAgICAgIDB4OTA3OQorI2RlZmluZSBHTF9QQVRIX01JVEVSX0xJTUlUX05WICAgICAg
ICAgICAgMHg5MDdBCisjZGVmaW5lIEdMX1BBVEhfREFTSF9DQVBTX05WICAgICAgICAgICAgICAw
eDkwN0IKKyNkZWZpbmUgR0xfUEFUSF9JTklUSUFMX0RBU0hfQ0FQX05WICAgICAgIDB4OTA3Qwor
I2RlZmluZSBHTF9QQVRIX1RFUk1JTkFMX0RBU0hfQ0FQX05WICAgICAgMHg5MDdECisjZGVmaW5l
IEdMX1BBVEhfREFTSF9PRkZTRVRfTlYgICAgICAgICAgICAweDkwN0UKKyNkZWZpbmUgR0xfUEFU
SF9DTElFTlRfTEVOR1RIX05WICAgICAgICAgIDB4OTA3RgorI2RlZmluZSBHTF9QQVRIX0ZJTExf
TU9ERV9OViAgICAgICAgICAgICAgMHg5MDgwCisjZGVmaW5lIEdMX1BBVEhfRklMTF9NQVNLX05W
ICAgICAgICAgICAgICAweDkwODEKKyNkZWZpbmUgR0xfUEFUSF9GSUxMX0NPVkVSX01PREVfTlYg
ICAgICAgIDB4OTA4MgorI2RlZmluZSBHTF9QQVRIX1NUUk9LRV9DT1ZFUl9NT0RFX05WICAgICAg
MHg5MDgzCisjZGVmaW5lIEdMX1BBVEhfU1RST0tFX01BU0tfTlYgICAgICAgICAgICAweDkwODQK
KyNkZWZpbmUgR0xfQ09VTlRfVVBfTlYgICAgICAgICAgICAgICAgICAgIDB4OTA4OAorI2RlZmlu
ZSBHTF9DT1VOVF9ET1dOX05WICAgICAgICAgICAgICAgICAgMHg5MDg5CisjZGVmaW5lIEdMX1BB
VEhfT0JKRUNUX0JPVU5ESU5HX0JPWF9OViAgICAweDkwOEEKKyNkZWZpbmUgR0xfQ09OVkVYX0hV
TExfTlYgICAgICAgICAgICAgICAgIDB4OTA4QgorI2RlZmluZSBHTF9CT1VORElOR19CT1hfTlYg
ICAgICAgICAgICAgICAgMHg5MDhECisjZGVmaW5lIEdMX1RSQU5TTEFURV9YX05WICAgICAgICAg
ICAgICAgICAweDkwOEUKKyNkZWZpbmUgR0xfVFJBTlNMQVRFX1lfTlYgICAgICAgICAgICAgICAg
IDB4OTA4RgorI2RlZmluZSBHTF9UUkFOU0xBVEVfMkRfTlYgICAgICAgICAgICAgICAgMHg5MDkw
CisjZGVmaW5lIEdMX1RSQU5TTEFURV8zRF9OViAgICAgICAgICAgICAgICAweDkwOTEKKyNkZWZp
bmUgR0xfQUZGSU5FXzJEX05WICAgICAgICAgICAgICAgICAgIDB4OTA5MgorI2RlZmluZSBHTF9B
RkZJTkVfM0RfTlYgICAgICAgICAgICAgICAgICAgMHg5MDk0CisjZGVmaW5lIEdMX1RSQU5TUE9T
RV9BRkZJTkVfMkRfTlYgICAgICAgICAweDkwOTYKKyNkZWZpbmUgR0xfVFJBTlNQT1NFX0FGRklO
RV8zRF9OViAgICAgICAgIDB4OTA5OAorI2RlZmluZSBHTF9VVEY4X05WICAgICAgICAgICAgICAg
ICAgICAgICAgMHg5MDlBCisjZGVmaW5lIEdMX1VURjE2X05WICAgICAgICAgICAgICAgICAgICAg
ICAweDkwOUIKKyNkZWZpbmUgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX05WIDB4
OTA5QworI2RlZmluZSBHTF9QQVRIX0NPTU1BTkRfQ09VTlRfTlYgICAgICAgICAgMHg5MDlECisj
ZGVmaW5lIEdMX1BBVEhfQ09PUkRfQ09VTlRfTlYgICAgICAgICAgICAweDkwOUUKKyNkZWZpbmUg
R0xfUEFUSF9EQVNIX0FSUkFZX0NPVU5UX05WICAgICAgIDB4OTA5RgorI2RlZmluZSBHTF9QQVRI
X0NPTVBVVEVEX0xFTkdUSF9OViAgICAgICAgMHg5MEEwCisjZGVmaW5lIEdMX1BBVEhfRklMTF9C
T1VORElOR19CT1hfTlYgICAgICAweDkwQTEKKyNkZWZpbmUgR0xfUEFUSF9TVFJPS0VfQk9VTkRJ
TkdfQk9YX05WICAgIDB4OTBBMgorI2RlZmluZSBHTF9TUVVBUkVfTlYgICAgICAgICAgICAgICAg
ICAgICAgMHg5MEEzCisjZGVmaW5lIEdMX1JPVU5EX05WICAgICAgICAgICAgICAgICAgICAgICAw
eDkwQTQKKyNkZWZpbmUgR0xfVFJJQU5HVUxBUl9OViAgICAgICAgICAgICAgICAgIDB4OTBBNQor
I2RlZmluZSBHTF9CRVZFTF9OViAgICAgICAgICAgICAgICAgICAgICAgMHg5MEE2CisjZGVmaW5l
IEdMX01JVEVSX1JFVkVSVF9OViAgICAgICAgICAgICAgICAweDkwQTcKKyNkZWZpbmUgR0xfTUlU
RVJfVFJVTkNBVEVfTlYgICAgICAgICAgICAgIDB4OTBBOAorI2RlZmluZSBHTF9TS0lQX01JU1NJ
TkdfR0xZUEhfTlYgICAgICAgICAgMHg5MEE5CisjZGVmaW5lIEdMX1VTRV9NSVNTSU5HX0dMWVBI
X05WICAgICAgICAgICAweDkwQUEKKyNkZWZpbmUgR0xfUEFUSF9FUlJPUl9QT1NJVElPTl9OViAg
ICAgICAgIDB4OTBBQgorI2RlZmluZSBHTF9BQ0NVTV9BREpBQ0VOVF9QQUlSU19OViAgICAgICAg
MHg5MEFECisjZGVmaW5lIEdMX0FESkFDRU5UX1BBSVJTX05WICAgICAgICAgICAgICAweDkwQUUK
KyNkZWZpbmUgR0xfRklSU1RfVE9fUkVTVF9OViAgICAgICAgICAgICAgIDB4OTBBRgorI2RlZmlu
ZSBHTF9QQVRIX0dFTl9NT0RFX05WICAgICAgICAgICAgICAgMHg5MEIwCisjZGVmaW5lIEdMX1BB
VEhfR0VOX0NPRUZGX05WICAgICAgICAgICAgICAweDkwQjEKKyNkZWZpbmUgR0xfUEFUSF9HRU5f
Q09NUE9ORU5UU19OViAgICAgICAgIDB4OTBCMworI2RlZmluZSBHTF9QQVRIX1NURU5DSUxfRlVO
Q19OViAgICAgICAgICAgMHg5MEI3CisjZGVmaW5lIEdMX1BBVEhfU1RFTkNJTF9SRUZfTlYgICAg
ICAgICAgICAweDkwQjgKKyNkZWZpbmUgR0xfUEFUSF9TVEVOQ0lMX1ZBTFVFX01BU0tfTlYgICAg
IDB4OTBCOQorI2RlZmluZSBHTF9QQVRIX1NURU5DSUxfREVQVEhfT0ZGU0VUX0ZBQ1RPUl9OViAw
eDkwQkQKKyNkZWZpbmUgR0xfUEFUSF9TVEVOQ0lMX0RFUFRIX09GRlNFVF9VTklUU19OViAweDkw
QkUKKyNkZWZpbmUgR0xfUEFUSF9DT1ZFUl9ERVBUSF9GVU5DX05WICAgICAgIDB4OTBCRgorI2Rl
ZmluZSBHTF9QQVRIX0RBU0hfT0ZGU0VUX1JFU0VUX05WICAgICAgMHg5MEI0CisjZGVmaW5lIEdM
X01PVkVfVE9fUkVTRVRTX05WICAgICAgICAgICAgICAweDkwQjUKKyNkZWZpbmUgR0xfTU9WRV9U
T19DT05USU5VRVNfTlYgICAgICAgICAgIDB4OTBCNgorI2RlZmluZSBHTF9DTE9TRV9QQVRIX05W
ICAgICAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBHTF9NT1ZFX1RPX05WICAgICAgICAgICAg
ICAgICAgICAgMHgwMgorI2RlZmluZSBHTF9SRUxBVElWRV9NT1ZFX1RPX05WICAgICAgICAgICAg
MHgwMworI2RlZmluZSBHTF9MSU5FX1RPX05WICAgICAgICAgICAgICAgICAgICAgMHgwNAorI2Rl
ZmluZSBHTF9SRUxBVElWRV9MSU5FX1RPX05WICAgICAgICAgICAgMHgwNQorI2RlZmluZSBHTF9I
T1JJWk9OVEFMX0xJTkVfVE9fTlYgICAgICAgICAgMHgwNgorI2RlZmluZSBHTF9SRUxBVElWRV9I
T1JJWk9OVEFMX0xJTkVfVE9fTlYgMHgwNworI2RlZmluZSBHTF9WRVJUSUNBTF9MSU5FX1RPX05W
ICAgICAgICAgICAgMHgwOAorI2RlZmluZSBHTF9SRUxBVElWRV9WRVJUSUNBTF9MSU5FX1RPX05W
ICAgMHgwOQorI2RlZmluZSBHTF9RVUFEUkFUSUNfQ1VSVkVfVE9fTlYgICAgICAgICAgMHgwQQor
I2RlZmluZSBHTF9SRUxBVElWRV9RVUFEUkFUSUNfQ1VSVkVfVE9fTlYgMHgwQgorI2RlZmluZSBH
TF9DVUJJQ19DVVJWRV9UT19OViAgICAgICAgICAgICAgMHgwQworI2RlZmluZSBHTF9SRUxBVElW
RV9DVUJJQ19DVVJWRV9UT19OViAgICAgMHgwRAorI2RlZmluZSBHTF9TTU9PVEhfUVVBRFJBVElD
X0NVUlZFX1RPX05WICAgMHgwRQorI2RlZmluZSBHTF9SRUxBVElWRV9TTU9PVEhfUVVBRFJBVElD
X0NVUlZFX1RPX05WIDB4MEYKKyNkZWZpbmUgR0xfU01PT1RIX0NVQklDX0NVUlZFX1RPX05WICAg
ICAgIDB4MTAKKyNkZWZpbmUgR0xfUkVMQVRJVkVfU01PT1RIX0NVQklDX0NVUlZFX1RPX05WIDB4
MTEKKyNkZWZpbmUgR0xfU01BTExfQ0NXX0FSQ19UT19OViAgICAgICAgICAgIDB4MTIKKyNkZWZp
bmUgR0xfUkVMQVRJVkVfU01BTExfQ0NXX0FSQ19UT19OViAgIDB4MTMKKyNkZWZpbmUgR0xfU01B
TExfQ1dfQVJDX1RPX05WICAgICAgICAgICAgIDB4MTQKKyNkZWZpbmUgR0xfUkVMQVRJVkVfU01B
TExfQ1dfQVJDX1RPX05WICAgIDB4MTUKKyNkZWZpbmUgR0xfTEFSR0VfQ0NXX0FSQ19UT19OViAg
ICAgICAgICAgIDB4MTYKKyNkZWZpbmUgR0xfUkVMQVRJVkVfTEFSR0VfQ0NXX0FSQ19UT19OViAg
IDB4MTcKKyNkZWZpbmUgR0xfTEFSR0VfQ1dfQVJDX1RPX05WICAgICAgICAgICAgIDB4MTgKKyNk
ZWZpbmUgR0xfUkVMQVRJVkVfTEFSR0VfQ1dfQVJDX1RPX05WICAgIDB4MTkKKyNkZWZpbmUgR0xf
UkVTVEFSVF9QQVRIX05WICAgICAgICAgICAgICAgIDB4RjAKKyNkZWZpbmUgR0xfRFVQX0ZJUlNU
X0NVQklDX0NVUlZFX1RPX05WICAgIDB4RjIKKyNkZWZpbmUgR0xfRFVQX0xBU1RfQ1VCSUNfQ1VS
VkVfVE9fTlYgICAgIDB4RjQKKyNkZWZpbmUgR0xfUkVDVF9OViAgICAgICAgICAgICAgICAgICAg
ICAgIDB4RjYKKyNkZWZpbmUgR0xfQ0lSQ1VMQVJfQ0NXX0FSQ19UT19OViAgICAgICAgIDB4RjgK
KyNkZWZpbmUgR0xfQ0lSQ1VMQVJfQ1dfQVJDX1RPX05WICAgICAgICAgIDB4RkEKKyNkZWZpbmUg
R0xfQ0lSQ1VMQVJfVEFOR0VOVF9BUkNfVE9fTlYgICAgIDB4RkMKKyNkZWZpbmUgR0xfQVJDX1RP
X05WICAgICAgICAgICAgICAgICAgICAgIDB4RkUKKyNkZWZpbmUgR0xfUkVMQVRJVkVfQVJDX1RP
X05WICAgICAgICAgICAgIDB4RkYKKyNkZWZpbmUgR0xfQk9MRF9CSVRfTlYgICAgICAgICAgICAg
ICAgICAgIDB4MDEKKyNkZWZpbmUgR0xfSVRBTElDX0JJVF9OViAgICAgICAgICAgICAgICAgIDB4
MDIKKyNkZWZpbmUgR0xfR0xZUEhfV0lEVEhfQklUX05WICAgICAgICAgICAgIDB4MDEKKyNkZWZp
bmUgR0xfR0xZUEhfSEVJR0hUX0JJVF9OViAgICAgICAgICAgIDB4MDIKKyNkZWZpbmUgR0xfR0xZ
UEhfSE9SSVpPTlRBTF9CRUFSSU5HX1hfQklUX05WIDB4MDQKKyNkZWZpbmUgR0xfR0xZUEhfSE9S
SVpPTlRBTF9CRUFSSU5HX1lfQklUX05WIDB4MDgKKyNkZWZpbmUgR0xfR0xZUEhfSE9SSVpPTlRB
TF9CRUFSSU5HX0FEVkFOQ0VfQklUX05WIDB4MTAKKyNkZWZpbmUgR0xfR0xZUEhfVkVSVElDQUxf
QkVBUklOR19YX0JJVF9OViAweDIwCisjZGVmaW5lIEdMX0dMWVBIX1ZFUlRJQ0FMX0JFQVJJTkdf
WV9CSVRfTlYgMHg0MAorI2RlZmluZSBHTF9HTFlQSF9WRVJUSUNBTF9CRUFSSU5HX0FEVkFOQ0Vf
QklUX05WIDB4ODAKKyNkZWZpbmUgR0xfR0xZUEhfSEFTX0tFUk5JTkdfQklUX05WICAgICAgIDB4
MTAwCisjZGVmaW5lIEdMX0ZPTlRfWF9NSU5fQk9VTkRTX0JJVF9OViAgICAgICAweDAwMDEwMDAw
CisjZGVmaW5lIEdMX0ZPTlRfWV9NSU5fQk9VTkRTX0JJVF9OViAgICAgICAweDAwMDIwMDAwCisj
ZGVmaW5lIEdMX0ZPTlRfWF9NQVhfQk9VTkRTX0JJVF9OViAgICAgICAweDAwMDQwMDAwCisjZGVm
aW5lIEdMX0ZPTlRfWV9NQVhfQk9VTkRTX0JJVF9OViAgICAgICAweDAwMDgwMDAwCisjZGVmaW5l
IEdMX0ZPTlRfVU5JVFNfUEVSX0VNX0JJVF9OViAgICAgICAweDAwMTAwMDAwCisjZGVmaW5lIEdM
X0ZPTlRfQVNDRU5ERVJfQklUX05WICAgICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIEdMX0ZP
TlRfREVTQ0VOREVSX0JJVF9OViAgICAgICAgICAweDAwNDAwMDAwCisjZGVmaW5lIEdMX0ZPTlRf
SEVJR0hUX0JJVF9OViAgICAgICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIEdMX0ZPTlRfTUFY
X0FEVkFOQ0VfV0lEVEhfQklUX05WICAweDAxMDAwMDAwCisjZGVmaW5lIEdMX0ZPTlRfTUFYX0FE
VkFOQ0VfSEVJR0hUX0JJVF9OViAweDAyMDAwMDAwCisjZGVmaW5lIEdMX0ZPTlRfVU5ERVJMSU5F
X1BPU0lUSU9OX0JJVF9OViAweDA0MDAwMDAwCisjZGVmaW5lIEdMX0ZPTlRfVU5ERVJMSU5FX1RI
SUNLTkVTU19CSVRfTlYgMHgwODAwMDAwMAorI2RlZmluZSBHTF9GT05UX0hBU19LRVJOSU5HX0JJ
VF9OViAgICAgICAgMHgxMDAwMDAwMAorI2RlZmluZSBHTF9ST1VOREVEX1JFQ1RfTlYgICAgICAg
ICAgICAgICAgMHhFOAorI2RlZmluZSBHTF9SRUxBVElWRV9ST1VOREVEX1JFQ1RfTlYgICAgICAg
MHhFOQorI2RlZmluZSBHTF9ST1VOREVEX1JFQ1QyX05WICAgICAgICAgICAgICAgMHhFQQorI2Rl
ZmluZSBHTF9SRUxBVElWRV9ST1VOREVEX1JFQ1QyX05WICAgICAgMHhFQgorI2RlZmluZSBHTF9S
T1VOREVEX1JFQ1Q0X05WICAgICAgICAgICAgICAgMHhFQworI2RlZmluZSBHTF9SRUxBVElWRV9S
T1VOREVEX1JFQ1Q0X05WICAgICAgMHhFRAorI2RlZmluZSBHTF9ST1VOREVEX1JFQ1Q4X05WICAg
ICAgICAgICAgICAgMHhFRQorI2RlZmluZSBHTF9SRUxBVElWRV9ST1VOREVEX1JFQ1Q4X05WICAg
ICAgMHhFRgorI2RlZmluZSBHTF9SRUxBVElWRV9SRUNUX05WICAgICAgICAgICAgICAgMHhGNwor
I2RlZmluZSBHTF9GT05UX0dMWVBIU19BVkFJTEFCTEVfTlYgICAgICAgMHg5MzY4CisjZGVmaW5l
IEdMX0ZPTlRfVEFSR0VUX1VOQVZBSUxBQkxFX05WICAgICAweDkzNjkKKyNkZWZpbmUgR0xfRk9O
VF9VTkFWQUlMQUJMRV9OViAgICAgICAgICAgIDB4OTM2QQorI2RlZmluZSBHTF9GT05UX1VOSU5U
RUxMSUdJQkxFX05WICAgICAgICAgMHg5MzZCCisjZGVmaW5lIEdMX0NPTklDX0NVUlZFX1RPX05W
ICAgICAgICAgICAgICAweDFBCisjZGVmaW5lIEdMX1JFTEFUSVZFX0NPTklDX0NVUlZFX1RPX05W
ICAgICAweDFCCisjZGVmaW5lIEdMX0ZPTlRfTlVNX0dMWVBIX0lORElDRVNfQklUX05WICAweDIw
MDAwMDAwCisjZGVmaW5lIEdMX1NUQU5EQVJEX0ZPTlRfRk9STUFUX05WICAgICAgICAweDkzNkMK
KyNkZWZpbmUgR0xfUEFUSF9QUk9KRUNUSU9OX05WICAgICAgICAgICAgIDB4MTcwMQorI2RlZmlu
ZSBHTF9QQVRIX01PREVMVklFV19OViAgICAgICAgICAgICAgMHgxNzAwCisjZGVmaW5lIEdMX1BB
VEhfTU9ERUxWSUVXX1NUQUNLX0RFUFRIX05WICAweDBCQTMKKyNkZWZpbmUgR0xfUEFUSF9NT0RF
TFZJRVdfTUFUUklYX05WICAgICAgIDB4MEJBNgorI2RlZmluZSBHTF9QQVRIX01BWF9NT0RFTFZJ
RVdfU1RBQ0tfREVQVEhfTlYgMHgwRDM2CisjZGVmaW5lIEdMX1BBVEhfVFJBTlNQT1NFX01PREVM
VklFV19NQVRSSVhfTlYgMHg4NEUzCisjZGVmaW5lIEdMX1BBVEhfUFJPSkVDVElPTl9TVEFDS19E
RVBUSF9OViAweDBCQTQKKyNkZWZpbmUgR0xfUEFUSF9QUk9KRUNUSU9OX01BVFJJWF9OViAgICAg
IDB4MEJBNworI2RlZmluZSBHTF9QQVRIX01BWF9QUk9KRUNUSU9OX1NUQUNLX0RFUFRIX05WIDB4
MEQzOAorI2RlZmluZSBHTF9QQVRIX1RSQU5TUE9TRV9QUk9KRUNUSU9OX01BVFJJWF9OViAweDg0
RTQKKyNkZWZpbmUgR0xfRlJBR01FTlRfSU5QVVRfTlYgICAgICAgICAgICAgIDB4OTM2RAordHlw
ZWRlZiBHTHVpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlBBVEhTTlZQUk9DKSAoR0xzaXplaSBy
YW5nZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVBBVEhTTlZQUk9D
KSAoR0x1aW50IHBhdGgsIEdMc2l6ZWkgcmFuZ2UpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQ
SUVOVFJZUCBQRk5HTElTUEFUSE5WUFJPQykgKEdMdWludCBwYXRoKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUEFUSENPTU1BTkRTTlZQUk9DKSAoR0x1aW50IHBhdGgsIEdMc2l6
ZWkgbnVtQ29tbWFuZHMsIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLCBHTHNpemVpIG51bUNvb3Jk
cywgR0xlbnVtIGNvb3JkVHlwZSwgY29uc3Qgdm9pZCAqY29vcmRzKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUEFUSENPT1JEU05WUFJPQykgKEdMdWludCBwYXRoLCBHTHNpemVp
IG51bUNvb3JkcywgR0xlbnVtIGNvb3JkVHlwZSwgY29uc3Qgdm9pZCAqY29vcmRzKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUSFNVQkNPTU1BTkRTTlZQUk9DKSAoR0x1aW50
IHBhdGgsIEdMc2l6ZWkgY29tbWFuZFN0YXJ0LCBHTHNpemVpIGNvbW1hbmRzVG9EZWxldGUsIEdM
c2l6ZWkgbnVtQ29tbWFuZHMsIGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLCBHTHNpemVpIG51bUNv
b3JkcywgR0xlbnVtIGNvb3JkVHlwZSwgY29uc3Qgdm9pZCAqY29vcmRzKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUSFNVQkNPT1JEU05WUFJPQykgKEdMdWludCBwYXRoLCBH
THNpemVpIGNvb3JkU3RhcnQsIEdMc2l6ZWkgbnVtQ29vcmRzLCBHTGVudW0gY29vcmRUeXBlLCBj
b25zdCB2b2lkICpjb29yZHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQQVRI
U1RSSU5HTlZQUk9DKSAoR0x1aW50IHBhdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCB2b2lkICpwYXRoU3RyaW5nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMUEFUSEdMWVBIU05WUFJPQykgKEdMdWludCBmaXJzdFBhdGhOYW1lLCBHTGVudW0gZm9udFRh
cmdldCwgY29uc3Qgdm9pZCAqZm9udE5hbWUsIEdMYml0ZmllbGQgZm9udFN0eWxlLCBHTHNpemVp
IG51bUdseXBocywgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmNoYXJjb2RlcywgR0xlbnVtIGhh
bmRsZU1pc3NpbmdHbHlwaHMsIEdMdWludCBwYXRoUGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQg
ZW1TY2FsZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhHTFlQSFJBTkdF
TlZQUk9DKSAoR0x1aW50IGZpcnN0UGF0aE5hbWUsIEdMZW51bSBmb250VGFyZ2V0LCBjb25zdCB2
b2lkICpmb250TmFtZSwgR0xiaXRmaWVsZCBmb250U3R5bGUsIEdMdWludCBmaXJzdEdseXBoLCBH
THNpemVpIG51bUdseXBocywgR0xlbnVtIGhhbmRsZU1pc3NpbmdHbHlwaHMsIEdMdWludCBwYXRo
UGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2FsZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFdFSUdIVFBBVEhTTlZQUk9DKSAoR0x1aW50IHJlc3VsdFBhdGgsIEdMc2l6
ZWkgbnVtUGF0aHMsIGNvbnN0IEdMdWludCAqcGF0aHMsIGNvbnN0IEdMZmxvYXQgKndlaWdodHMp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZUEFUSE5WUFJPQykgKEdMdWlu
dCByZXN1bHRQYXRoLCBHTHVpbnQgc3JjUGF0aCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTElOVEVSUE9MQVRFUEFUSFNOVlBST0MpIChHTHVpbnQgcmVzdWx0UGF0aCwgR0x1aW50
IHBhdGhBLCBHTHVpbnQgcGF0aEIsIEdMZmxvYXQgd2VpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVFJBTlNGT1JNUEFUSE5WUFJPQykgKEdMdWludCByZXN1bHRQYXRoLCBH
THVpbnQgc3JjUGF0aCwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVU
RVJJVk5WUFJPQykgKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICp2YWx1
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVURVJJTlZQUk9D
KSAoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xQQVRIUEFSQU1FVEVSRlZOVlBST0MpIChHTHVpbnQgcGF0aCwg
R0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFBBVEhQQVJBTUVURVJGTlZQUk9DKSAoR0x1aW50IHBhdGgsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCB2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBB
VEhEQVNIQVJSQVlOVlBST0MpIChHTHVpbnQgcGF0aCwgR0xzaXplaSBkYXNoQ291bnQsIGNvbnN0
IEdMZmxvYXQgKmRhc2hBcnJheSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBB
VEhTVEVOQ0lMRlVOQ05WUFJPQykgKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNr
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUSFNURU5DSUxERVBUSE9GRlNF
VE5WUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTEZJTExQQVRITlZQUk9DKSAoR0x1aW50IHBhdGgsIEdM
ZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xTVEVOQ0lMU1RST0tFUEFUSE5WUFJPQykgKEdMdWludCBwYXRoLCBHTGludCByZWZlcmVu
Y2UsIEdMdWludCBtYXNrKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJ
TEZJTExQQVRISU5TVEFOQ0VETlZQUk9DKSAoR0xzaXplaSBudW1QYXRocywgR0xlbnVtIHBhdGhO
YW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xlbnVtIGZpbGxN
b2RlLCBHTHVpbnQgbWFzaywgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxT
VFJPS0VQQVRISU5TVEFOQ0VETlZQUk9DKSAoR0xzaXplaSBudW1QYXRocywgR0xlbnVtIHBhdGhO
YW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xpbnQgcmVmZXJl
bmNlLCBHTHVpbnQgbWFzaywgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhDT1ZF
UkRFUFRIRlVOQ05WUFJPQykgKEdMZW51bSBmdW5jKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMQ09WRVJGSUxMUEFUSE5WUFJPQykgKEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJN
b2RlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJTVFJPS0VQQVRITlZQ
Uk9DKSAoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xDT1ZFUkZJTExQQVRISU5TVEFOQ0VETlZQUk9DKSAoR0xzaXplaSBudW1Q
YXRocywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIEdMdWludCBwYXRo
QmFzZSwgR0xlbnVtIGNvdmVyTW9kZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENP
VkVSU1RST0tFUEFUSElOU1RBTkNFRE5WUFJPQykgKEdMc2l6ZWkgbnVtUGF0aHMsIEdMZW51bSBw
YXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZW51bSBj
b3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1W
YWx1ZXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQQVRIUEFSQU1FVEVS
SVZOVlBST0MpIChHTHVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGludCAqdmFsdWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQQVRIUEFSQU1FVEVSRlZOVlBST0MpIChH
THVpbnQgcGF0aCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBBVEhDT01NQU5EU05WUFJPQykgKEdMdWludCBwYXRoLCBH
THVieXRlICpjb21tYW5kcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBB
VEhDT09SRFNOVlBST0MpIChHTHVpbnQgcGF0aCwgR0xmbG9hdCAqY29vcmRzKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEFUSERBU0hBUlJBWU5WUFJPQykgKEdMdWludCBw
YXRoLCBHTGZsb2F0ICpkYXNoQXJyYXkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRVRQQVRITUVUUklDU05WUFJPQykgKEdMYml0ZmllbGQgbWV0cmljUXVlcnlNYXNrLCBHTHNp
emVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICpwYXRocywgR0x1
aW50IHBhdGhCYXNlLCBHTHNpemVpIHN0cmlkZSwgR0xmbG9hdCAqbWV0cmljcyk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBBVEhNRVRSSUNSQU5HRU5WUFJPQykgKEdMYml0
ZmllbGQgbWV0cmljUXVlcnlNYXNrLCBHTHVpbnQgZmlyc3RQYXRoTmFtZSwgR0xzaXplaSBudW1Q
YXRocywgR0xzaXplaSBzdHJpZGUsIEdMZmxvYXQgKm1ldHJpY3MpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVRQQVRIU1BBQ0lOR05WUFJPQykgKEdMZW51bSBwYXRoTGlzdE1v
ZGUsIEdMc2l6ZWkgbnVtUGF0aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBh
dGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZmxvYXQgYWR2YW5jZVNjYWxlLCBHTGZsb2F0IGtlcm5p
bmdTY2FsZSwgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIEdMZmxvYXQgKnJldHVybmVkU3BhY2luZyk7
Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNQT0lOVElORklMTFBBVEhO
VlBST0MpIChHTHVpbnQgcGF0aCwgR0x1aW50IG1hc2ssIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsK
K3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1BPSU5USU5TVFJPS0VQQVRI
TlZQUk9DKSAoR0x1aW50IHBhdGgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKK3R5cGVkZWYgR0xm
bG9hdCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEFUSExFTkdUSE5WUFJPQykgKEdMdWludCBwYXRo
LCBHTHNpemVpIHN0YXJ0U2VnbWVudCwgR0xzaXplaSBudW1TZWdtZW50cyk7Cit0eXBlZGVmIEdM
Ym9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMUE9JTlRBTE9OR1BBVEhOVlBST0MpIChHTHVpbnQg
cGF0aCwgR0xzaXplaSBzdGFydFNlZ21lbnQsIEdMc2l6ZWkgbnVtU2VnbWVudHMsIEdMZmxvYXQg
ZGlzdGFuY2UsIEdMZmxvYXQgKngsIEdMZmxvYXQgKnksIEdMZmxvYXQgKnRhbmdlbnRYLCBHTGZs
b2F0ICp0YW5nZW50WSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1BVFJJWExP
QUQzWDJGTlZQUk9DKSAoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNQVRSSVhMT0FEM1gzRk5WUFJPQykgKEdMZW51
bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMTUFUUklYTE9BRFRSQU5TUE9TRTNYM0ZOVlBST0MpIChHTGVudW0gbWF0cml4TW9k
ZSwgY29uc3QgR0xmbG9hdCAqbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1B
VFJJWE1VTFQzWDJGTlZQUk9DKSAoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0p
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNQVRSSVhNVUxUM1gzRk5WUFJPQykg
KEdMZW51bSBtYXRyaXhNb2RlLCBjb25zdCBHTGZsb2F0ICptKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMTUFUUklYTVVMVFRSQU5TUE9TRTNYM0ZOVlBST0MpIChHTGVudW0gbWF0
cml4TW9kZSwgY29uc3QgR0xmbG9hdCAqbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFUSE5WUFJPQykgKEdMdWludCBwYXRoLCBHTGVudW0g
ZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTFRIRU5DT1ZFUlNUUk9LRVBBVEhOVlBST0MpIChHTHVp
bnQgcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywgR0xlbnVtIGNvdmVyTW9kZSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxUSEVOQ09WRVJGSUxMUEFU
SElOU1RBTkNFRE5WUFJPQykgKEdMc2l6ZWkgbnVtUGF0aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUs
IGNvbnN0IHZvaWQgKnBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdMZW51bSBmaWxsTW9kZSwgR0x1
aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xTVEVOQ0lMVEhFTkNPVkVSU1RST0tFUEFUSElOU1RBTkNFRE5WUFJPQykgKEdMc2l6ZWkgbnVt
UGF0aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBhdGhzLCBHTHVpbnQgcGF0
aEJhc2UsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUsIEdM
ZW51bSB0cmFuc2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOwordHlw
ZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTFBBVEhHTFlQSElOREVYUkFOR0VOVlBST0Mp
IChHTGVudW0gZm9udFRhcmdldCwgY29uc3Qgdm9pZCAqZm9udE5hbWUsIEdMYml0ZmllbGQgZm9u
dFN0eWxlLCBHTHVpbnQgcGF0aFBhcmFtZXRlclRlbXBsYXRlLCBHTGZsb2F0IGVtU2NhbGUsIEdM
dWludCBiYXNlQW5kQ291bnRbMl0pOwordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5H
TFBBVEhHTFlQSElOREVYQVJSQVlOVlBST0MpIChHTHVpbnQgZmlyc3RQYXRoTmFtZSwgR0xlbnVt
IGZvbnRUYXJnZXQsIGNvbnN0IHZvaWQgKmZvbnROYW1lLCBHTGJpdGZpZWxkIGZvbnRTdHlsZSwg
R0x1aW50IGZpcnN0R2x5cGhJbmRleCwgR0xzaXplaSBudW1HbHlwaHMsIEdMdWludCBwYXRoUGFy
YW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2FsZSk7Cit0eXBlZGVmIEdMZW51bSAoR0xfQVBJ
RU5UUllQIFBGTkdMUEFUSE1FTU9SWUdMWVBISU5ERVhBUlJBWU5WUFJPQykgKEdMdWludCBmaXJz
dFBhdGhOYW1lLCBHTGVudW0gZm9udFRhcmdldCwgR0xzaXplaXB0ciBmb250U2l6ZSwgY29uc3Qg
dm9pZCAqZm9udERhdGEsIEdMc2l6ZWkgZmFjZUluZGV4LCBHTHVpbnQgZmlyc3RHbHlwaEluZGV4
LCBHTHNpemVpIG51bUdseXBocywgR0x1aW50IHBhdGhQYXJhbWV0ZXJUZW1wbGF0ZSwgR0xmbG9h
dCBlbVNjYWxlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVBBVEhG
UkFHTUVOVElOUFVUR0VOTlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGVudW0gZ2VuTW9kZSwgR0xpbnQgY29tcG9uZW50cywgY29uc3QgR0xmbG9hdCAqY29lZmZzKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JBTVJFU09VUkNFRlZOVlBS
T0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRl
eCwgR0xzaXplaSBwcm9wQ291bnQsIGNvbnN0IEdMZW51bSAqcHJvcHMsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOworI2lmZGVmIEdMX0dMRVhUX1BS
T1RPVFlQRVMKK0dMX0FQSUNBTEwgR0x1aW50IEdMX0FQSUVOVFJZIGdsR2VuUGF0aHNOViAoR0xz
aXplaSByYW5nZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQYXRoc05W
IChHTHVpbnQgcGF0aCwgR0xzaXplaSByYW5nZSk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9B
UElFTlRSWSBnbElzUGF0aE5WIChHTHVpbnQgcGF0aCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQYXRoQ29tbWFuZHNOViAoR0x1aW50IHBhdGgsIEdMc2l6ZWkgbnVtQ29tbWFuZHMs
IGNvbnN0IEdMdWJ5dGUgKmNvbW1hbmRzLCBHTHNpemVpIG51bUNvb3JkcywgR0xlbnVtIGNvb3Jk
VHlwZSwgY29uc3Qgdm9pZCAqY29vcmRzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFBhdGhDb29yZHNOViAoR0x1aW50IHBhdGgsIEdMc2l6ZWkgbnVtQ29vcmRzLCBHTGVudW0gY29v
cmRUeXBlLCBjb25zdCB2b2lkICpjb29yZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUGF0aFN1YkNvbW1hbmRzTlYgKEdMdWludCBwYXRoLCBHTHNpemVpIGNvbW1hbmRTdGFydCwg
R0xzaXplaSBjb21tYW5kc1RvRGVsZXRlLCBHTHNpemVpIG51bUNvbW1hbmRzLCBjb25zdCBHTHVi
eXRlICpjb21tYW5kcywgR0xzaXplaSBudW1Db29yZHMsIEdMZW51bSBjb29yZFR5cGUsIGNvbnN0
IHZvaWQgKmNvb3Jkcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoU3ViQ29v
cmRzTlYgKEdMdWludCBwYXRoLCBHTHNpemVpIGNvb3JkU3RhcnQsIEdMc2l6ZWkgbnVtQ29vcmRz
LCBHTGVudW0gY29vcmRUeXBlLCBjb25zdCB2b2lkICpjb29yZHMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsUGF0aFN0cmluZ05WIChHTHVpbnQgcGF0aCwgR0xlbnVtIGZvcm1hdCwg
R0xzaXplaSBsZW5ndGgsIGNvbnN0IHZvaWQgKnBhdGhTdHJpbmcpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsUGF0aEdseXBoc05WIChHTHVpbnQgZmlyc3RQYXRoTmFtZSwgR0xlbnVt
IGZvbnRUYXJnZXQsIGNvbnN0IHZvaWQgKmZvbnROYW1lLCBHTGJpdGZpZWxkIGZvbnRTdHlsZSwg
R0xzaXplaSBudW1HbHlwaHMsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpjaGFyY29kZXMsIEdM
ZW51bSBoYW5kbGVNaXNzaW5nR2x5cGhzLCBHTHVpbnQgcGF0aFBhcmFtZXRlclRlbXBsYXRlLCBH
TGZsb2F0IGVtU2NhbGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0aEdseXBo
UmFuZ2VOViAoR0x1aW50IGZpcnN0UGF0aE5hbWUsIEdMZW51bSBmb250VGFyZ2V0LCBjb25zdCB2
b2lkICpmb250TmFtZSwgR0xiaXRmaWVsZCBmb250U3R5bGUsIEdMdWludCBmaXJzdEdseXBoLCBH
THNpemVpIG51bUdseXBocywgR0xlbnVtIGhhbmRsZU1pc3NpbmdHbHlwaHMsIEdMdWludCBwYXRo
UGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2FsZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xXZWlnaHRQYXRoc05WIChHTHVpbnQgcmVzdWx0UGF0aCwgR0xzaXplaSBudW1Q
YXRocywgY29uc3QgR0x1aW50ICpwYXRocywgY29uc3QgR0xmbG9hdCAqd2VpZ2h0cyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3B5UGF0aE5WIChHTHVpbnQgcmVzdWx0UGF0aCwg
R0x1aW50IHNyY1BhdGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW50ZXJwb2xh
dGVQYXRoc05WIChHTHVpbnQgcmVzdWx0UGF0aCwgR0x1aW50IHBhdGhBLCBHTHVpbnQgcGF0aEIs
IEdMZmxvYXQgd2VpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRyYW5zZm9y
bVBhdGhOViAoR0x1aW50IHJlc3VsdFBhdGgsIEdMdWludCBzcmNQYXRoLCBHTGVudW0gdHJhbnNm
b3JtVHlwZSwgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJpdk5WIChHTHVpbnQgcGF0aCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
UGF0aFBhcmFtZXRlcmlOViAoR0x1aW50IHBhdGgsIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0aFBhcmFtZXRlcmZ2TlYgKEdMdWlu
dCBwYXRoLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFBhdGhQYXJhbWV0ZXJmTlYgKEdMdWludCBwYXRoLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0
aERhc2hBcnJheU5WIChHTHVpbnQgcGF0aCwgR0xzaXplaSBkYXNoQ291bnQsIGNvbnN0IEdMZmxv
YXQgKmRhc2hBcnJheSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXRoU3RlbmNp
bEZ1bmNOViAoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0aFN0ZW5jaWxEZXB0aE9mZnNldE5WIChHTGZsb2F0IGZh
Y3RvciwgR0xmbG9hdCB1bml0cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsRmlsbFBhdGhOViAoR0x1aW50IHBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2sp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhOViAoR0x1
aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkTlYgKEdMc2l6ZWkgbnVtUGF0
aHMsIEdMZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBhdGhzLCBHTHVpbnQgcGF0aEJh
c2UsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2ssIEdMZW51bSB0cmFuc2Zvcm1UeXBlLCBj
b25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWROViAoR0xzaXplaSBudW1QYXRocywgR0xl
bnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xp
bnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaywgR0xlbnVtIHRyYW5zZm9ybVR5cGUsIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQ
YXRoQ292ZXJEZXB0aEZ1bmNOViAoR0xlbnVtIGZ1bmMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsQ292ZXJGaWxsUGF0aE5WIChHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3ZlclN0cm9rZVBhdGhOViAoR0x1aW50
IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
Q292ZXJGaWxsUGF0aEluc3RhbmNlZE5WIChHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5h
bWVUeXBlLCBjb25zdCB2b2lkICpwYXRocywgR0x1aW50IHBhdGhCYXNlLCBHTGVudW0gY292ZXJN
b2RlLCBHTGVudW0gdHJhbnNmb3JtVHlwZSwgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZE5WIChHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBjb25zdCB2b2lkICpw
YXRocywgR0x1aW50IHBhdGhCYXNlLCBHTGVudW0gY292ZXJNb2RlLCBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFBhdGhQYXJhbWV0ZXJpdk5WIChHTHVpbnQgcGF0aCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGF0
aFBhcmFtZXRlcmZ2TlYgKEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnZhbHVl
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhDb21tYW5kc05WIChHTHVp
bnQgcGF0aCwgR0x1Ynl0ZSAqY29tbWFuZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0UGF0aENvb3Jkc05WIChHTHVpbnQgcGF0aCwgR0xmbG9hdCAqY29vcmRzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBhdGhEYXNoQXJyYXlOViAoR0x1aW50IHBhdGgs
IEdMZmxvYXQgKmRhc2hBcnJheSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQ
YXRoTWV0cmljc05WIChHTGJpdGZpZWxkIG1ldHJpY1F1ZXJ5TWFzaywgR0xzaXplaSBudW1QYXRo
cywgR0xlbnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIEdMdWludCBwYXRoQmFz
ZSwgR0xzaXplaSBzdHJpZGUsIEdMZmxvYXQgKm1ldHJpY3MpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0UGF0aE1ldHJpY1JhbmdlTlYgKEdMYml0ZmllbGQgbWV0cmljUXVlcnlN
YXNrLCBHTHVpbnQgZmlyc3RQYXRoTmFtZSwgR0xzaXplaSBudW1QYXRocywgR0xzaXplaSBzdHJp
ZGUsIEdMZmxvYXQgKm1ldHJpY3MpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
UGF0aFNwYWNpbmdOViAoR0xlbnVtIHBhdGhMaXN0TW9kZSwgR0xzaXplaSBudW1QYXRocywgR0xl
bnVtIHBhdGhOYW1lVHlwZSwgY29uc3Qgdm9pZCAqcGF0aHMsIEdMdWludCBwYXRoQmFzZSwgR0xm
bG9hdCBhZHZhbmNlU2NhbGUsIEdMZmxvYXQga2VybmluZ1NjYWxlLCBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwgR0xmbG9hdCAqcmV0dXJuZWRTcGFjaW5nKTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdM
X0FQSUVOVFJZIGdsSXNQb2ludEluRmlsbFBhdGhOViAoR0x1aW50IHBhdGgsIEdMdWludCBtYXNr
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRS
WSBnbElzUG9pbnRJblN0cm9rZVBhdGhOViAoR0x1aW50IHBhdGgsIEdMZmxvYXQgeCwgR0xmbG9h
dCB5KTsKK0dMX0FQSUNBTEwgR0xmbG9hdCBHTF9BUElFTlRSWSBnbEdldFBhdGhMZW5ndGhOViAo
R0x1aW50IHBhdGgsIEdMc2l6ZWkgc3RhcnRTZWdtZW50LCBHTHNpemVpIG51bVNlZ21lbnRzKTsK
K0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsUG9pbnRBbG9uZ1BhdGhOViAoR0x1
aW50IHBhdGgsIEdMc2l6ZWkgc3RhcnRTZWdtZW50LCBHTHNpemVpIG51bVNlZ21lbnRzLCBHTGZs
b2F0IGRpc3RhbmNlLCBHTGZsb2F0ICp4LCBHTGZsb2F0ICp5LCBHTGZsb2F0ICp0YW5nZW50WCwg
R0xmbG9hdCAqdGFuZ2VudFkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4
TG9hZDN4MmZOViAoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TG9hZDN4M2ZOViAoR0xlbnVtIG1hdHJpeE1v
ZGUsIGNvbnN0IEdMZmxvYXQgKm0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0
cml4TG9hZFRyYW5zcG9zZTN4M2ZOViAoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQg
Km0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TXVsdDN4MmZOViAoR0xl
bnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsTWF0cml4TXVsdDN4M2ZOViAoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxv
YXQgKm0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTWF0cml4TXVsdFRyYW5zcG9z
ZTN4M2ZOViAoR0xlbnVtIG1hdHJpeE1vZGUsIGNvbnN0IEdMZmxvYXQgKm0pOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoTlYgKEdMdWludCBw
YXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoTlYg
KEdMdWludCBwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJN
b2RlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxs
UGF0aEluc3RhbmNlZE5WIChHTHNpemVpIG51bVBhdGhzLCBHTGVudW0gcGF0aE5hbWVUeXBlLCBj
b25zdCB2b2lkICpwYXRocywgR0x1aW50IHBhdGhCYXNlLCBHTGVudW0gZmlsbE1vZGUsIEdMdWlu
dCBtYXNrLCBHTGVudW0gY292ZXJNb2RlLCBHTGVudW0gdHJhbnNmb3JtVHlwZSwgY29uc3QgR0xm
bG9hdCAqdHJhbnNmb3JtVmFsdWVzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkTlYgKEdMc2l6ZWkgbnVtUGF0aHMsIEdM
ZW51bSBwYXRoTmFtZVR5cGUsIGNvbnN0IHZvaWQgKnBhdGhzLCBHTHVpbnQgcGF0aEJhc2UsIEdM
aW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2ssIEdMZW51bSBjb3Zlck1vZGUsIEdMZW51bSB0cmFu
c2Zvcm1UeXBlLCBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpOworR0xfQVBJQ0FMTCBH
TGVudW0gR0xfQVBJRU5UUlkgZ2xQYXRoR2x5cGhJbmRleFJhbmdlTlYgKEdMZW51bSBmb250VGFy
Z2V0LCBjb25zdCB2b2lkICpmb250TmFtZSwgR0xiaXRmaWVsZCBmb250U3R5bGUsIEdMdWludCBw
YXRoUGFyYW1ldGVyVGVtcGxhdGUsIEdMZmxvYXQgZW1TY2FsZSwgR0x1aW50IGJhc2VBbmRDb3Vu
dFsyXSk7CitHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbFBhdGhHbHlwaEluZGV4QXJy
YXlOViAoR0x1aW50IGZpcnN0UGF0aE5hbWUsIEdMZW51bSBmb250VGFyZ2V0LCBjb25zdCB2b2lk
ICpmb250TmFtZSwgR0xiaXRmaWVsZCBmb250U3R5bGUsIEdMdWludCBmaXJzdEdseXBoSW5kZXgs
IEdMc2l6ZWkgbnVtR2x5cGhzLCBHTHVpbnQgcGF0aFBhcmFtZXRlclRlbXBsYXRlLCBHTGZsb2F0
IGVtU2NhbGUpOworR0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJRU5UUlkgZ2xQYXRoTWVtb3J5R2x5
cGhJbmRleEFycmF5TlYgKEdMdWludCBmaXJzdFBhdGhOYW1lLCBHTGVudW0gZm9udFRhcmdldCwg
R0xzaXplaXB0ciBmb250U2l6ZSwgY29uc3Qgdm9pZCAqZm9udERhdGEsIEdMc2l6ZWkgZmFjZUlu
ZGV4LCBHTHVpbnQgZmlyc3RHbHlwaEluZGV4LCBHTHNpemVpIG51bUdseXBocywgR0x1aW50IHBh
dGhQYXJhbWV0ZXJUZW1wbGF0ZSwgR0xmbG9hdCBlbVNjYWxlKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbk5WIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMZW51bSBnZW5Nb2RlLCBHTGludCBjb21wb25lbnRzLCBjb25z
dCBHTGZsb2F0ICpjb2VmZnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJv
Z3JhbVJlc291cmNlZnZOViAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNl
LCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgcHJvcENvdW50LCBjb25zdCBHTGVudW0gKnByb3BzLCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKKyNlbmRp
ZgorI2VuZGlmIC8qIEdMX05WX3BhdGhfcmVuZGVyaW5nICovCisKKyNpZm5kZWYgR0xfTlZfcGF0
aF9yZW5kZXJpbmdfc2hhcmVkX2VkZ2UKKyNkZWZpbmUgR0xfTlZfcGF0aF9yZW5kZXJpbmdfc2hh
cmVkX2VkZ2UgMQorI2RlZmluZSBHTF9TSEFSRURfRURHRV9OViAgICAgICAgICAgICAgICAgMHhD
MAorI2VuZGlmIC8qIEdMX05WX3BhdGhfcmVuZGVyaW5nX3NoYXJlZF9lZGdlICovCisKKyNpZm5k
ZWYgR0xfTlZfcG9seWdvbl9tb2RlCisjZGVmaW5lIEdMX05WX3BvbHlnb25fbW9kZSAxCisjZGVm
aW5lIEdMX1BPTFlHT05fTU9ERV9OViAgICAgICAgICAgICAgICAweDBCNDAKKyNkZWZpbmUgR0xf
UE9MWUdPTl9PRkZTRVRfUE9JTlRfTlYgICAgICAgIDB4MkEwMQorI2RlZmluZSBHTF9QT0xZR09O
X09GRlNFVF9MSU5FX05WICAgICAgICAgMHgyQTAyCisjZGVmaW5lIEdMX1BPSU5UX05WICAgICAg
ICAgICAgICAgICAgICAgICAweDFCMDAKKyNkZWZpbmUgR0xfTElORV9OViAgICAgICAgICAgICAg
ICAgICAgICAgIDB4MUIwMQorI2RlZmluZSBHTF9GSUxMX05WICAgICAgICAgICAgICAgICAgICAg
ICAgMHgxQjAyCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBPTFlHT05NT0RFTlZQ
Uk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBtb2RlKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZ
UEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQb2x5Z29uTW9kZU5WIChHTGVudW0g
ZmFjZSwgR0xlbnVtIG1vZGUpOworI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfcG9seWdvbl9tb2Rl
ICovCisKICNpZm5kZWYgR0xfTlZfcmVhZF9idWZmZXIKICNkZWZpbmUgR0xfTlZfcmVhZF9idWZm
ZXIgMQorI2RlZmluZSBHTF9SRUFEX0JVRkZFUl9OViAgICAgICAgICAgICAgICAgMHgwQzAyCit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQURCVUZGRVJOVlBST0MpIChHTGVudW0g
bW9kZSk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsUmVhZEJ1ZmZlck5WIChHTGVudW0gbW9kZSk7CiAjZW5kaWYKLXR5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVBREJVRkZFUk5WUFJPQykgKEdMZW51bSBtb2RlKTsKLSNl
bmRpZgorI2VuZGlmIC8qIEdMX05WX3JlYWRfYnVmZmVyICovCiAKLS8qIEdMX05WX3JlYWRfYnVm
ZmVyX2Zyb250ICovCiAjaWZuZGVmIEdMX05WX3JlYWRfYnVmZmVyX2Zyb250CiAjZGVmaW5lIEdM
X05WX3JlYWRfYnVmZmVyX2Zyb250IDEKLSNlbmRpZgorI2VuZGlmIC8qIEdMX05WX3JlYWRfYnVm
ZmVyX2Zyb250ICovCiAKLS8qIEdMX05WX3JlYWRfZGVwdGggKi8KICNpZm5kZWYgR0xfTlZfcmVh
ZF9kZXB0aAogI2RlZmluZSBHTF9OVl9yZWFkX2RlcHRoIDEKLSNlbmRpZgorI2VuZGlmIC8qIEdM
X05WX3JlYWRfZGVwdGggKi8KIAotLyogR0xfTlZfcmVhZF9kZXB0aF9zdGVuY2lsICovCiAjaWZu
ZGVmIEdMX05WX3JlYWRfZGVwdGhfc3RlbmNpbAogI2RlZmluZSBHTF9OVl9yZWFkX2RlcHRoX3N0
ZW5jaWwgMQotI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfcmVhZF9kZXB0aF9zdGVuY2lsICovCiAK
LS8qIEdMX05WX3JlYWRfc3RlbmNpbCAqLwogI2lmbmRlZiBHTF9OVl9yZWFkX3N0ZW5jaWwKICNk
ZWZpbmUgR0xfTlZfcmVhZF9zdGVuY2lsIDEKKyNlbmRpZiAvKiBHTF9OVl9yZWFkX3N0ZW5jaWwg
Ki8KKworI2lmbmRlZiBHTF9OVl9zUkdCX2Zvcm1hdHMKKyNkZWZpbmUgR0xfTlZfc1JHQl9mb3Jt
YXRzIDEKKyNkZWZpbmUgR0xfU0xVTUlOQU5DRV9OViAgICAgICAgICAgICAgICAgIDB4OEM0Ngor
I2RlZmluZSBHTF9TTFVNSU5BTkNFX0FMUEhBX05WICAgICAgICAgICAgMHg4QzQ0CisjZGVmaW5l
IEdMX1NSR0I4X05WICAgICAgICAgICAgICAgICAgICAgICAweDhDNDEKKyNkZWZpbmUgR0xfU0xV
TUlOQU5DRThfTlYgICAgICAgICAgICAgICAgIDB4OEM0NworI2RlZmluZSBHTF9TTFVNSU5BTkNF
OF9BTFBIQThfTlYgICAgICAgICAgMHg4QzQ1CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9T
M1RDX0RYVDFfTlYgICAweDhDNEMKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUMV9OViAweDhDNEQKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENf
RFhUM19OViAweDhDNEUKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
NV9OViAweDhDNEYKKyNkZWZpbmUgR0xfRVRDMV9TUkdCOF9OViAgICAgICAgICAgICAgICAgIDB4
ODhFRQorI2VuZGlmIC8qIEdMX05WX3NSR0JfZm9ybWF0cyAqLworCisjaWZuZGVmIEdMX05WX3Nh
bXBsZV9sb2NhdGlvbnMKKyNkZWZpbmUgR0xfTlZfc2FtcGxlX2xvY2F0aW9ucyAxCisjZGVmaW5l
IEdMX1NBTVBMRV9MT0NBVElPTl9TVUJQSVhFTF9CSVRTX05WIDB4OTMzRAorI2RlZmluZSBHTF9T
QU1QTEVfTE9DQVRJT05fUElYRUxfR1JJRF9XSURUSF9OViAweDkzM0UKKyNkZWZpbmUgR0xfU0FN
UExFX0xPQ0FUSU9OX1BJWEVMX0dSSURfSEVJR0hUX05WIDB4OTMzRgorI2RlZmluZSBHTF9QUk9H
UkFNTUFCTEVfU0FNUExFX0xPQ0FUSU9OX1RBQkxFX1NJWkVfTlYgMHg5MzQwCisjZGVmaW5lIEdM
X1NBTVBMRV9MT0NBVElPTl9OViAgICAgICAgICAgICAweDhFNTAKKyNkZWZpbmUgR0xfUFJPR1JB
TU1BQkxFX1NBTVBMRV9MT0NBVElPTl9OViAweDkzNDEKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJf
UFJPR1JBTU1BQkxFX1NBTVBMRV9MT0NBVElPTlNfTlYgMHg5MzQyCisjZGVmaW5lIEdMX0ZSQU1F
QlVGRkVSX1NBTVBMRV9MT0NBVElPTl9QSVhFTF9HUklEX05WIDB4OTM0MwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlNBTVBMRUxPQ0FUSU9OU0ZWTlZQUk9DKSAo
R0xlbnVtIHRhcmdldCwgR0x1aW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTkFNRURGUkFNRUJVRkZFUlNB
TVBMRUxPQ0FUSU9OU0ZWTlZQUk9DKSAoR0x1aW50IGZyYW1lYnVmZmVyLCBHTHVpbnQgc3RhcnQs
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xSRVNPTFZFREVQVEhWQUxVRVNOVlBST0MpICh2b2lkKTsKKyNpZmRlZiBHTF9H
TEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZl
clNhbXBsZUxvY2F0aW9uc2Z2TlYgKEdMZW51bSB0YXJnZXQsIEdMdWludCBzdGFydCwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xOYW1lZEZyYW1lYnVmZmVyU2FtcGxlTG9jYXRpb25zZnZOViAoR0x1aW50IGZyYW1lYnVmZmVy
LCBHTHVpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVzb2x2ZURlcHRoVmFsdWVzTlYgKHZvaWQpOwogI2Vu
ZGlmCisjZW5kaWYgLyogR0xfTlZfc2FtcGxlX2xvY2F0aW9ucyAqLwogCi0vKiBHTF9OVl9zaGFk
b3dfc2FtcGxlcnNfYXJyYXkgKi8KKyNpZm5kZWYgR0xfTlZfc2FtcGxlX21hc2tfb3ZlcnJpZGVf
Y292ZXJhZ2UKKyNkZWZpbmUgR0xfTlZfc2FtcGxlX21hc2tfb3ZlcnJpZGVfY292ZXJhZ2UgMQor
I2VuZGlmIC8qIEdMX05WX3NhbXBsZV9tYXNrX292ZXJyaWRlX2NvdmVyYWdlICovCisKKyNpZm5k
ZWYgR0xfTlZfc2hhZGVyX25vcGVyc3BlY3RpdmVfaW50ZXJwb2xhdGlvbgorI2RlZmluZSBHTF9O
Vl9zaGFkZXJfbm9wZXJzcGVjdGl2ZV9pbnRlcnBvbGF0aW9uIDEKKyNlbmRpZiAvKiBHTF9OVl9z
aGFkZXJfbm9wZXJzcGVjdGl2ZV9pbnRlcnBvbGF0aW9uICovCisKICNpZm5kZWYgR0xfTlZfc2hh
ZG93X3NhbXBsZXJzX2FycmF5CiAjZGVmaW5lIEdMX05WX3NoYWRvd19zYW1wbGVyc19hcnJheSAx
Ci0jZW5kaWYKKyNkZWZpbmUgR0xfU0FNUExFUl8yRF9BUlJBWV9TSEFET1dfTlYgICAgIDB4OERD
NAorI2VuZGlmIC8qIEdMX05WX3NoYWRvd19zYW1wbGVyc19hcnJheSAqLwogCi0vKiBHTF9OVl9z
aGFkb3dfc2FtcGxlcnNfY3ViZSAqLwogI2lmbmRlZiBHTF9OVl9zaGFkb3dfc2FtcGxlcnNfY3Vi
ZQogI2RlZmluZSBHTF9OVl9zaGFkb3dfc2FtcGxlcnNfY3ViZSAxCi0jZW5kaWYKKyNkZWZpbmUg
R0xfU0FNUExFUl9DVUJFX1NIQURPV19OViAgICAgICAgIDB4OERDNQorI2VuZGlmIC8qIEdMX05W
X3NoYWRvd19zYW1wbGVyc19jdWJlICovCiAKLS8qIEdMX05WX3NSR0JfZm9ybWF0cyAqLwotI2lm
bmRlZiBHTF9OVl9zUkdCX2Zvcm1hdHMKLSNkZWZpbmUgR0xfTlZfc1JHQl9mb3JtYXRzIDEKLSNl
bmRpZgotCi0vKiBHTF9OVl90ZXh0dXJlX2JvcmRlcl9jbGFtcCAqLwogI2lmbmRlZiBHTF9OVl90
ZXh0dXJlX2JvcmRlcl9jbGFtcAogI2RlZmluZSBHTF9OVl90ZXh0dXJlX2JvcmRlcl9jbGFtcCAx
Ci0jZW5kaWYKKyNkZWZpbmUgR0xfVEVYVFVSRV9CT1JERVJfQ09MT1JfTlYgICAgICAgIDB4MTAw
NAorI2RlZmluZSBHTF9DTEFNUF9UT19CT1JERVJfTlYgICAgICAgICAgICAgMHg4MTJECisjZW5k
aWYgLyogR0xfTlZfdGV4dHVyZV9ib3JkZXJfY2xhbXAgKi8KIAotLyogR0xfTlZfdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjX3VwZGF0ZSAqLwogI2lmbmRlZiBHTF9OVl90ZXh0dXJlX2NvbXByZXNz
aW9uX3MzdGNfdXBkYXRlCiAjZGVmaW5lIEdMX05WX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y191
cGRhdGUgMQotI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3Rj
X3VwZGF0ZSAqLwogCi0vKiBHTF9OVl90ZXh0dXJlX25wb3RfMkRfbWlwbWFwICovCiAjaWZuZGVm
IEdMX05WX3RleHR1cmVfbnBvdF8yRF9taXBtYXAKICNkZWZpbmUgR0xfTlZfdGV4dHVyZV9ucG90
XzJEX21pcG1hcCAxCisjZW5kaWYgLyogR0xfTlZfdGV4dHVyZV9ucG90XzJEX21pcG1hcCAqLwor
CisjaWZuZGVmIEdMX05WX3ZpZXdwb3J0X2FycmF5CisjZGVmaW5lIEdMX05WX3ZpZXdwb3J0X2Fy
cmF5IDEKKyNkZWZpbmUgR0xfTUFYX1ZJRVdQT1JUU19OViAgICAgICAgICAgICAgIDB4ODI1Qgor
I2RlZmluZSBHTF9WSUVXUE9SVF9TVUJQSVhFTF9CSVRTX05WICAgICAgMHg4MjVDCisjZGVmaW5l
IEdMX1ZJRVdQT1JUX0JPVU5EU19SQU5HRV9OViAgICAgICAweDgyNUQKKyNkZWZpbmUgR0xfVklF
V1BPUlRfSU5ERVhfUFJPVk9LSU5HX1ZFUlRFWF9OViAweDgyNUYKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVklFV1BPUlRBUlJBWVZOVlBST0MpIChHTHVpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xWSUVXUE9SVElOREVYRURGTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB3LCBHTGZsb2F0IGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xWSUVXUE9SVElOREVYRURGVk5WUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xm
bG9hdCAqdik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNDSVNTT1JBUlJBWVZO
VlBST0MpIChHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUklOREVYRUROVlBST0MpIChHTHVp
bnQgaW5kZXgsIEdMaW50IGxlZnQsIEdMaW50IGJvdHRvbSwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQ0lTU09SSU5ERVhF
RFZOVlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMREVQVEhSQU5HRUFSUkFZRlZOVlBST0MpIChHTHVpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xERVBUSFJBTkdFSU5ERVhFREZOVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxv
YXQgbiwgR0xmbG9hdCBmKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURkxP
QVRJX1ZOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKmRhdGEp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVJTlZQUk9DKSAoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
RElTQUJMRUlOVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwordHlwZWRlZiBH
TGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTRU5BQkxFRElOVlBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdwb3J0QXJyYXl2TlYgKEdMdWludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xWaWV3cG9ydEluZGV4ZWRmTlYgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgdywgR0xmbG9hdCBoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFZpZXdwb3J0SW5kZXhlZGZ2TlYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTY2lzc29yQXJyYXl2TlYgKEdMdWludCBmaXJz
dCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsU2Npc3NvckluZGV4ZWROViAoR0x1aW50IGluZGV4LCBHTGludCBsZWZ0LCBHTGlu
dCBib3R0b20sIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFNjaXNzb3JJbmRleGVkdk5WIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
aW50ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlcHRoUmFuZ2VBcnJheWZ2
TlYgKEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXB0aFJhbmdlSW5kZXhlZGZOViAoR0x1aW50IGlu
ZGV4LCBHTGZsb2F0IG4sIEdMZmxvYXQgZik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRGbG9hdGlfdk5WIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKmRh
dGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5hYmxlaU5WIChHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJs
ZWlOViAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK0dMX0FQSUNBTEwgR0xib29sZWFu
IEdMX0FQSUVOVFJZIGdsSXNFbmFibGVkaU5WIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgp
OwogI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfdmlld3BvcnRfYXJyYXkgKi8KIAotLyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qCi0gKiBRQ09NIGV4dGVuc2lvbiBmdW5jdGlvbnMKLSAqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKyNpZm5kZWYgR0xfTlZfdmlld3BvcnRfYXJyYXkyCisjZGVmaW5lIEdMX05WX3ZpZXdwb3J0
X2FycmF5MiAxCisjZW5kaWYgLyogR0xfTlZfdmlld3BvcnRfYXJyYXkyICovCiAKLS8qIEdMX1FD
T01fYWxwaGFfdGVzdCAqLworI2lmbmRlZiBHTF9PVlJfbXVsdGl2aWV3CisjZGVmaW5lIEdMX09W
Ul9tdWx0aXZpZXcgMQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
TlVNX1ZJRVdTX09WUiAweDk2MzAKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9U
RVhUVVJFX0JBU0VfVklFV19JTkRFWF9PVlIgMHg5NjMyCisjZGVmaW5lIEdMX01BWF9WSUVXU19P
VlIgICAgICAgICAgICAgICAgICAweDk2MzEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRlJBTUVCVUZGRVJURVhUVVJFTVVMVElWSUVXT1ZSUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGJhc2VW
aWV3SW5kZXgsIEdMc2l6ZWkgbnVtVmlld3MpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpdmll
d09WUiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJlLCBH
TGludCBsZXZlbCwgR0xpbnQgYmFzZVZpZXdJbmRleCwgR0xzaXplaSBudW1WaWV3cyk7CisjZW5k
aWYKKyNlbmRpZiAvKiBHTF9PVlJfbXVsdGl2aWV3ICovCisKKyNpZm5kZWYgR0xfT1ZSX211bHRp
dmlldzIKKyNkZWZpbmUgR0xfT1ZSX211bHRpdmlldzIgMQorI2VuZGlmIC8qIEdMX09WUl9tdWx0
aXZpZXcyICovCisKICNpZm5kZWYgR0xfUUNPTV9hbHBoYV90ZXN0CiAjZGVmaW5lIEdMX1FDT01f
YWxwaGFfdGVzdCAxCisjZGVmaW5lIEdMX0FMUEhBX1RFU1RfUUNPTSAgICAgICAgICAgICAgICAw
eDBCQzAKKyNkZWZpbmUgR0xfQUxQSEFfVEVTVF9GVU5DX1FDT00gICAgICAgICAgIDB4MEJDMQor
I2RlZmluZSBHTF9BTFBIQV9URVNUX1JFRl9RQ09NICAgICAgICAgICAgMHgwQkMyCit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEFMUEhBRlVOQ1FDT01QUk9DKSAoR0xlbnVtIGZ1bmMs
IEdMY2xhbXBmIHJlZik7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQWxwaGFGdW5jUUNPTSAoR0xlbnVtIGZ1bmMsIEdMY2xhbXBmIHJl
Zik7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQUxQSEFGVU5DUUNP
TVBST0MpIChHTGVudW0gZnVuYywgR0xjbGFtcGYgcmVmKTsKLSNlbmRpZgorI2VuZGlmIC8qIEdM
X1FDT01fYWxwaGFfdGVzdCAqLwogCi0vKiBHTF9RQ09NX2Jpbm5pbmdfY29udHJvbCAqLwogI2lm
bmRlZiBHTF9RQ09NX2Jpbm5pbmdfY29udHJvbAogI2RlZmluZSBHTF9RQ09NX2Jpbm5pbmdfY29u
dHJvbCAxCi0jZW5kaWYKKyNkZWZpbmUgR0xfQklOTklOR19DT05UUk9MX0hJTlRfUUNPTSAgICAg
IDB4OEZCMAorI2RlZmluZSBHTF9DUFVfT1BUSU1JWkVEX1FDT00gICAgICAgICAgICAgMHg4RkIx
CisjZGVmaW5lIEdMX0dQVV9PUFRJTUlaRURfUUNPTSAgICAgICAgICAgICAweDhGQjIKKyNkZWZp
bmUgR0xfUkVOREVSX0RJUkVDVF9UT19GUkFNRUJVRkZFUl9RQ09NIDB4OEZCMworI2VuZGlmIC8q
IEdMX1FDT01fYmlubmluZ19jb250cm9sICovCiAKLS8qIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wg
Ki8KICNpZm5kZWYgR0xfUUNPTV9kcml2ZXJfY29udHJvbAogI2RlZmluZSBHTF9RQ09NX2RyaXZl
cl9jb250cm9sIDEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURFJJVkVSQ09O
VFJPTFNRQ09NUFJPQykgKEdMaW50ICpudW0sIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpkcml2ZXJD
b250cm9scyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVERSSVZFUkNPTlRS
T0xTVFJJTkdRQ09NUFJPQykgKEdMdWludCBkcml2ZXJDb250cm9sLCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5BQkxFRFJJVkVSQ09OVFJPTFFDT01QUk9DKSAoR0x1
aW50IGRyaXZlckNvbnRyb2wpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNB
QkxFRFJJVkVSQ09OVFJPTFFDT01QUk9DKSAoR0x1aW50IGRyaXZlckNvbnRyb2wpOwogI2lmZGVm
IEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldERy
aXZlckNvbnRyb2xzUUNPTSAoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZl
ckNvbnRyb2xzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRy
b2xTdHJpbmdRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZyk7CiBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVEcml2ZXJDb250cm9sUUNPTSAoR0x1aW50IGRyaXZlckNv
bnRyb2wpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZURyaXZlckNvbnRy
b2xRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VURFJJVkVSQ09OVFJPTFNRQ09NUFJPQykgKEdMaW50ICpudW0sIEdM
c2l6ZWkgc2l6ZSwgR0x1aW50ICpkcml2ZXJDb250cm9scyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVERSSVZFUkNPTlRST0xTVFJJTkdRQ09NUFJPQykgKEdMdWludCBkcml2
ZXJDb250cm9sLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpkcml2
ZXJDb250cm9sU3RyaW5nKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5BQkxF
RFJJVkVSQ09OVFJPTFFDT01QUk9DKSAoR0x1aW50IGRyaXZlckNvbnRyb2wpOwotdHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFRFJJVkVSQ09OVFJPTFFDT01QUk9DKSAoR0x1
aW50IGRyaXZlckNvbnRyb2wpOwotI2VuZGlmCisjZW5kaWYgLyogR0xfUUNPTV9kcml2ZXJfY29u
dHJvbCAqLwogCi0vKiBHTF9RQ09NX2V4dGVuZGVkX2dldCAqLwogI2lmbmRlZiBHTF9RQ09NX2V4
dGVuZGVkX2dldAogI2RlZmluZSBHTF9RQ09NX2V4dGVuZGVkX2dldCAxCisjZGVmaW5lIEdMX1RF
WFRVUkVfV0lEVEhfUUNPTSAgICAgICAgICAgICAweDhCRDIKKyNkZWZpbmUgR0xfVEVYVFVSRV9I
RUlHSFRfUUNPTSAgICAgICAgICAgIDB4OEJEMworI2RlZmluZSBHTF9URVhUVVJFX0RFUFRIX1FD
T00gICAgICAgICAgICAgMHg4QkQ0CisjZGVmaW5lIEdMX1RFWFRVUkVfSU5URVJOQUxfRk9STUFU
X1FDT00gICAweDhCRDUKKyNkZWZpbmUgR0xfVEVYVFVSRV9GT1JNQVRfUUNPTSAgICAgICAgICAg
IDB4OEJENgorI2RlZmluZSBHTF9URVhUVVJFX1RZUEVfUUNPTSAgICAgICAgICAgICAgMHg4QkQ3
CisjZGVmaW5lIEdMX1RFWFRVUkVfSU1BR0VfVkFMSURfUUNPTSAgICAgICAweDhCRDgKKyNkZWZp
bmUgR0xfVEVYVFVSRV9OVU1fTEVWRUxTX1FDT00gICAgICAgIDB4OEJEOQorI2RlZmluZSBHTF9U
RVhUVVJFX1RBUkdFVF9RQ09NICAgICAgICAgICAgMHg4QkRBCisjZGVmaW5lIEdMX1RFWFRVUkVf
T0JKRUNUX1ZBTElEX1FDT00gICAgICAweDhCREIKKyNkZWZpbmUgR0xfU1RBVEVfUkVTVE9SRSAg
ICAgICAgICAgICAgICAgIDB4OEJEQwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xF
WFRHRVRURVhUVVJFU1FDT01QUk9DKSAoR0x1aW50ICp0ZXh0dXJlcywgR0xpbnQgbWF4VGV4dHVy
ZXMsIEdMaW50ICpudW1UZXh0dXJlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEVYVEdFVEJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqYnVmZmVycywgR0xpbnQgbWF4QnVmZmVy
cywgR0xpbnQgKm51bUJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xF
WFRHRVRSRU5ERVJCVUZGRVJTUUNPTVBST0MpIChHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMsIEdMaW50
IG1heFJlbmRlcmJ1ZmZlcnMsIEdMaW50ICpudW1SZW5kZXJidWZmZXJzKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VURlJBTUVCVUZGRVJTUUNPTVBST0MpIChHTHVpbnQg
KmZyYW1lYnVmZmVycywgR0xpbnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZm
ZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUVEVYTEVWRUxQQVJB
TUVURVJJVlFDT01QUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMZW51bSBmYWNlLCBHTGludCBsZXZl
bCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMRVhUVEVYT0JKRUNUU1RBVEVPVkVSUklERUlRQ09NUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xFWFRHRVRURVhTVUJJTUFHRVFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgdm9pZCAqdGV4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRVhUR0VUQlVGRkVSUE9JTlRFUlZRQ09NUFJPQykgKEdMZW51bSB0YXJnZXQsIHZvaWQgKipw
YXJhbXMpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEV4dEdldFRleHR1cmVzUUNPTSAoR0x1aW50ICp0ZXh0dXJlcywgR0xpbnQgbWF4
VGV4dHVyZXMsIEdMaW50ICpudW1UZXh0dXJlcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xFeHRHZXRCdWZmZXJzUUNPTSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJz
LCBHTGludCAqbnVtQnVmZmVycyk7CkBAIC0xOTQ4LDY2ICsyODQ0LDk5IEBACiBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NIChHTHVpbnQgKmZyYW1l
YnVmZmVycywgR0xpbnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZmZXJzKTsK
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleExldmVsUGFyYW1ldGVyaXZR
Q09NIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0VGV4
T2JqZWN0U3RhdGVPdmVycmlkZWlRQ09NIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50IHBhcmFtKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleFN1Yklt
YWdlUUNPTSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0ZXhlbHMp
OwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09N
IChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsRXh0R2V0VGV4U3ViSW1hZ2VRQ09NIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCB2b2lkICp0ZXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0
R2V0QnVmZmVyUG9pbnRlcnZRQ09NIChHTGVudW0gdGFyZ2V0LCB2b2lkICoqcGFyYW1zKTsKICNl
bmRpZgotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRURVhUVVJFU1FDT01Q
Uk9DKSAoR0x1aW50ICp0ZXh0dXJlcywgR0xpbnQgbWF4VGV4dHVyZXMsIEdMaW50ICpudW1UZXh0
dXJlcyk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVEJVRkZFUlNRQ09N
UFJPQykgKEdMdWludCAqYnVmZmVycywgR0xpbnQgbWF4QnVmZmVycywgR0xpbnQgKm51bUJ1ZmZl
cnMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRSRU5ERVJCVUZGRVJT
UUNPTVBST0MpIChHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMsIEdMaW50IG1heFJlbmRlcmJ1ZmZlcnMs
IEdMaW50ICpudW1SZW5kZXJidWZmZXJzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRVhUR0VURlJBTUVCVUZGRVJTUUNPTVBST0MpIChHTHVpbnQgKmZyYW1lYnVmZmVycywgR0xp
bnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZmZXJzKTsKLXR5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUVEVYTEVWRUxQQVJBTUVURVJJVlFDT01QUk9DKSAo
R0x1aW50IHRleHR1cmUsIEdMZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUVEVYT0JK
RUNUU1RBVEVPVkVSUklERUlRQ09NUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRURVhT
VUJJTUFHRVFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lk
ICp0ZXhlbHMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRCVUZGRVJQ
T0lOVEVSVlFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x2b2lkICoqcGFyYW1zKTsKLSNlbmRp
ZgorI2VuZGlmIC8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0ICovCiAKLS8qIEdMX1FDT01fZXh0ZW5k
ZWRfZ2V0MiAqLwogI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldDIKICNkZWZpbmUgR0xfUUNP
TV9leHRlbmRlZF9nZXQyIDEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VU
U0hBREVSU1FDT01QUk9DKSAoR0x1aW50ICpzaGFkZXJzLCBHTGludCBtYXhTaGFkZXJzLCBHTGlu
dCAqbnVtU2hhZGVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFBS
T0dSQU1TUUNPTVBST0MpIChHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xp
bnQgKm51bVByb2dyYW1zKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xF
WFRJU1BST0dSQU1CSU5BUllRQ09NUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUUFJPR1JBTUJJTkFSWVNPVVJDRVFDT01QUk9DKSAo
R0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQg
Kmxlbmd0aCk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsRXh0R2V0U2hhZGVyc1FDT00gKEdMdWludCAqc2hhZGVycywgR0xpbnQgbWF4
U2hhZGVycywgR0xpbnQgKm51bVNoYWRlcnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRXh0R2V0UHJvZ3JhbXNRQ09NIChHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFt
cywgR0xpbnQgKm51bVByb2dyYW1zKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZ
IGdsRXh0SXNQcm9ncmFtQmluYXJ5UUNPTSAoR0x1aW50IHByb2dyYW0pOwogR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0UHJvZ3JhbUJpbmFyeVNvdXJjZVFDT00gKEdMdWludCBw
cm9ncmFtLCBHTGVudW0gc2hhZGVydHlwZSwgR0xjaGFyICpzb3VyY2UsIEdMaW50ICpsZW5ndGgp
OwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFNIQURFUlNR
Q09NUFJPQykgKEdMdWludCAqc2hhZGVycywgR0xpbnQgbWF4U2hhZGVycywgR0xpbnQgKm51bVNo
YWRlcnMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRQUk9HUkFNU1FD
T01QUk9DKSAoR0x1aW50ICpwcm9ncmFtcywgR0xpbnQgbWF4UHJvZ3JhbXMsIEdMaW50ICpudW1Q
cm9ncmFtcyk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMRVhUSVNQUk9H
UkFNQklOQVJZUUNPTVBST0MpIChHTHVpbnQgcHJvZ3JhbSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEVYVEdFVFBST0dSQU1CSU5BUllTT1VSQ0VRQ09NUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTGVudW0gc2hhZGVydHlwZSwgR0xjaGFyICpzb3VyY2UsIEdMaW50ICpsZW5ndGgp
OwotI2VuZGlmCisjZW5kaWYgLyogR0xfUUNPTV9leHRlbmRlZF9nZXQyICovCiAKLS8qIEdMX1FD
T01fcGVyZm1vbl9nbG9iYWxfbW9kZSAqLwogI2lmbmRlZiBHTF9RQ09NX3BlcmZtb25fZ2xvYmFs
X21vZGUKICNkZWZpbmUgR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlIDEKLSNlbmRpZgorI2Rl
ZmluZSBHTF9QRVJGTU9OX0dMT0JBTF9NT0RFX1FDT00gICAgICAgMHg4RkEwCisjZW5kaWYgLyog
R0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlICovCiAKLS8qIEdMX1FDT01fd3JpdGVvbmx5X3Jl
bmRlcmluZyAqLwotI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKLSNkZWZpbmUg
R0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nIDEKLSNlbmRpZgotCi0vKiBHTF9RQ09NX3RpbGVk
X3JlbmRlcmluZyAqLwogI2lmbmRlZiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZwogI2RlZmluZSBH
TF9RQ09NX3RpbGVkX3JlbmRlcmluZyAxCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQwX1FD
T00gICAgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQxX1FDT00g
ICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQyX1FDT00gICAg
ICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQzX1FDT00gICAgICAg
ICAweDAwMDAwMDA4CisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ0X1FDT00gICAgICAgICAw
eDAwMDAwMDEwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAweDAw
MDAwMDIwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAweDAwMDAw
MDQwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ3X1FDT00gICAgICAgICAweDAwMDAwMDgw
CisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAweDAwMDAwMTAwCisj
ZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQxX1FDT00gICAgICAgICAweDAwMDAwMjAwCisjZGVm
aW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAweDAwMDAwNDAwCisjZGVmaW5l
IEdMX0RFUFRIX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAweDAwMDAwODAwCisjZGVmaW5lIEdM
X0RFUFRIX0JVRkZFUl9CSVQ0X1FDT00gICAgICAgICAweDAwMDAxMDAwCisjZGVmaW5lIEdMX0RF
UFRIX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAweDAwMDAyMDAwCisjZGVmaW5lIEdMX0RFUFRI
X0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIEdMX0RFUFRIX0JV
RkZFUl9CSVQ3X1FDT00gICAgICAgICAweDAwMDA4MDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVG
RkVSX0JJVDBfUUNPTSAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVS
X0JJVDFfUUNPTSAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJ
VDJfUUNPTSAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDNf
UUNPTSAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDRfUUNP
TSAgICAgICAweDAwMTAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDVfUUNPTSAg
ICAgICAweDAwMjAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDZfUUNPTSAgICAg
ICAweDAwNDAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAw
eDAwODAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQwX1FDT00gICAweDAx
MDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQxX1FDT00gICAweDAyMDAw
MDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQyX1FDT00gICAweDA0MDAwMDAw
CisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQzX1FDT00gICAweDA4MDAwMDAwCisj
ZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ0X1FDT00gICAweDEwMDAwMDAwCisjZGVm
aW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ1X1FDT00gICAweDIwMDAwMDAwCisjZGVmaW5l
IEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ2X1FDT00gICAweDQwMDAwMDAwCisjZGVmaW5lIEdM
X01VTFRJU0FNUExFX0JVRkZFUl9CSVQ3X1FDT00gICAweDgwMDAwMDAwCit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFNUQVJUVElMSU5HUUNPTVBST0MpIChHTHVpbnQgeCwgR0x1aW50
IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2sp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUSUxJTkdRQ09NUFJPQykgKEdM
Yml0ZmllbGQgcHJlc2VydmVNYXNrKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGFydFRpbGluZ1FDT00gKEdMdWludCB4LCBHTHVp
bnQgeSwgR0x1aW50IHdpZHRoLCBHTHVpbnQgaGVpZ2h0LCBHTGJpdGZpZWxkIHByZXNlcnZlTWFz
ayk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmRUaWxpbmdRQ09NIChHTGJpdGZp
ZWxkIHByZXNlcnZlTWFzayk7CiAjZW5kaWYKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMU1RBUlRUSUxJTkdRQ09NUFJPQykgKEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHdpZHRo
LCBHTHVpbnQgaGVpZ2h0LCBHTGJpdGZpZWxkIHByZXNlcnZlTWFzayk7Ci10eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEVORFRJTElOR1FDT01QUk9DKSAoR0xiaXRmaWVsZCBwcmVzZXJ2
ZU1hc2spOwotI2VuZGlmCisjZW5kaWYgLyogR0xfUUNPTV90aWxlZF9yZW5kZXJpbmcgKi8KIAot
LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qCi0gKiBWSVYgZXh0ZW5zaW9uIHRva2VucwotICotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLworI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKKyNkZWZpbmUgR0xf
UUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nIDEKKyNkZWZpbmUgR0xfV1JJVEVPTkxZX1JFTkRFUklO
R19RQ09NICAgICAgIDB4ODgyMworI2VuZGlmIC8qIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmlu
ZyAqLwogCi0vKiBHTF9WSVZfc2hhZGVyX2JpbmFyeSAqLwogI2lmbmRlZiBHTF9WSVZfc2hhZGVy
X2JpbmFyeQogI2RlZmluZSBHTF9WSVZfc2hhZGVyX2JpbmFyeSAxCi0jZW5kaWYKKyNkZWZpbmUg
R0xfU0hBREVSX0JJTkFSWV9WSVYgICAgICAgICAgICAgIDB4OEZDNAorI2VuZGlmIC8qIEdMX1ZJ
Vl9zaGFkZXJfYmluYXJ5ICovCiAKKyNpZm5kZWYgR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29kZQor
I2RlZmluZSBHTF9BTkdMRV9sb3NzeV9ldGNfZGVjb2RlIDEKKyNkZWZpbmUgR0xfRVRDMV9SR0I4
X0xPU1NZX0RFQ09ERV9BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDk2
OTAKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SMTFfTE9TU1lfREVDT0RFX0VBQ19BTkdMRSAgICAg
ICAgICAgICAgICAgICAgICAgICAweDk2OTEKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURf
UjExX0xPU1NZX0RFQ09ERV9FQUNfQU5HTEUgICAgICAgICAgICAgICAgICAweDk2OTIKKyNkZWZp
bmUgR0xfQ09NUFJFU1NFRF9SRzExX0xPU1NZX0RFQ09ERV9FQUNfQU5HTEUgICAgICAgICAgICAg
ICAgICAgICAgICAweDk2OTMKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9MT1NT
WV9ERUNPREVfRUFDX0FOR0xFICAgICAgICAgICAgICAgICAweDk2OTQKKyNkZWZpbmUgR0xfQ09N
UFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFICAgICAgICAgICAgICAgICAgICAg
ICAweDk2OTUKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9MT1NTWV9ERUNPREVfRVRDMl9B
TkdMRSAgICAgICAgICAgICAgICAgICAgICAweDk2OTYKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEUgICAweDk2OTcK
KyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RF
Q09ERV9FVEMyX0FOR0xFICAweDk2OTgKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBOF9MT1NT
WV9ERUNPREVfRVRDMl9FQUNfQU5HTEUgICAgICAgICAgICAgICAgICAweDk2OTkKKyNkZWZpbmUg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfTE9TU1lfREVDT0RFX0VUQzJfRUFDX0FOR0xFICAg
ICAgICAgICAweDk2OUEKKyNlbmRpZiAvKiBHTF9BTkdMRV9sb3NzeV9ldGNfZGVjb2RlICovCisK
ICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfX2dsMmV4dF9oXyAq
LworI2VuZGlmCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2ds
MnBsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9HTEVTMi9nbDJwbGF0Zm9ybS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAjaWZuZGVmIF9fZ2wycGxhdGZvcm1faF8KICNkZWZpbmUgX19nbDJwbGF0
Zm9ybV9oXwogCi0vKiAkUmV2aXNpb246IDEwNjAyICQgb24gJERhdGU6OiAyMDEwLTAzLTA0IDIy
OjM1OjM0IC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDIzMzI4ICQgb24gJERhdGU6OiAyMDEz
LTEwLTAyIDAyOjI4OjI4IC0wNzAwICMkICovCiAKIC8qCiAgKiBUaGlzIGRvY3VtZW50IGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBTR0kgRnJlZSBTb2Z0d2FyZSBCIExpY2Vuc2UgVmVyc2lvbgpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsMy5oCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsMy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4ICsxLDEyIEBACiAjaWZuZGVmIF9fZ2wzX2hfCi0jZGVm
aW5lIF9fZ2wzX2hfCisjZGVmaW5lIF9fZ2wzX2hfIDEKIAotLyogCi0gKiBnbDMuaCBsYXN0IHVw
ZGF0ZWQgb24gJERhdGU6IDIwMTMtMDItMTIgMTQ6Mzc6MjQgLTA4MDAgKFR1ZSwgMTIgRmViIDIw
MTMpICQKLSAqLwotCi0jaW5jbHVkZSA8R0xFUzMvZ2wzcGxhdGZvcm0uaD4KLQogI2lmZGVmIF9f
Y3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvKgotKiogQ29weXJpZ2h0IChjKSAy
MDA3LTIwMTMgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKiogQ29weXJpZ2h0IChjKSAyMDEzLTIw
MTUgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqKiBjb3B5
IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo
dGhlCkBAIC0zMywxMDI3ICsyNywxMTgxIEBACiAqKiBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRQogKiogTUFURVJJQUxTIE9S
IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIE1BVEVSSUFMUy4KICovCisvKgorKiog
VGhpcyBoZWFkZXIgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIEtocm9ub3MgT3BlbkdMIC8gT3BlbkdM
IEVTIFhNTAorKiogQVBJIFJlZ2lzdHJ5LiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBSZWdp
c3RyeSwgZ2VuZXJhdG9yIHNjcmlwdHMKKyoqIHVzZWQgdG8gbWFrZSB0aGUgaGVhZGVyLCBhbmQg
dGhlIGhlYWRlciBjYW4gYmUgZm91bmQgYXQKKyoqICAgaHR0cDovL3d3dy5vcGVuZ2wub3JnL3Jl
Z2lzdHJ5LworKioKKyoqIEtocm9ub3MgJFJldmlzaW9uOiAzMTgxMSAkIG9uICREYXRlOiAyMDE1
LTA4LTEwIDAwOjAxOjExIC0wNzAwIChNb24sIDEwIEF1ZyAyMDE1KSAkCisqLwogCi0vKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSAqIERhdGEgdHlwZSBkZWZpbml0aW9ucwotICotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CisjaW5jbHVkZSA8R0xFUzMvZ2wzcGxhdGZvcm0uaD4KIAotLyogT3BlbkdMIEVTIDIuMCAqLwor
I2lmbmRlZiBHTF9BUElFTlRSWVAKKyNkZWZpbmUgR0xfQVBJRU5UUllQIEdMX0FQSUVOVFJZKgor
I2VuZGlmCiAKLXR5cGVkZWYgdm9pZCAgICAgICAgICAgICBHTHZvaWQ7Ci10eXBlZGVmIGNoYXIg
ICAgICAgICAgICAgR0xjaGFyOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIEdMZW51bTsKLXR5
cGVkZWYgdW5zaWduZWQgY2hhciAgICBHTGJvb2xlYW47Ci10eXBlZGVmIHVuc2lnbmVkIGludCAg
ICAgR0xiaXRmaWVsZDsKLXR5cGVkZWYga2hyb25vc19pbnQ4X3QgICBHTGJ5dGU7Ci10eXBlZGVm
IHNob3J0ICAgICAgICAgICAgR0xzaG9ydDsKLXR5cGVkZWYgaW50ICAgICAgICAgICAgICBHTGlu
dDsKLXR5cGVkZWYgaW50ICAgICAgICAgICAgICBHTHNpemVpOwotdHlwZWRlZiBraHJvbm9zX3Vp
bnQ4X3QgIEdMdWJ5dGU7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgR0x1c2hvcnQ7Ci10eXBl
ZGVmIHVuc2lnbmVkIGludCAgICAgR0x1aW50OwotdHlwZWRlZiBraHJvbm9zX2Zsb2F0X3QgIEdM
ZmxvYXQ7Ci10eXBlZGVmIGtocm9ub3NfZmxvYXRfdCAgR0xjbGFtcGY7Ci10eXBlZGVmIGtocm9u
b3NfaW50MzJfdCAgR0xmaXhlZDsKLXR5cGVkZWYga2hyb25vc19pbnRwdHJfdCBHTGludHB0cjsK
LXR5cGVkZWYga2hyb25vc19zc2l6ZV90ICBHTHNpemVpcHRyOworLyogR2VuZXJhdGVkIG9uIGRh
dGUgMjAxNTA4MDkgKi8KIAotLyogT3BlbkdMIEVTIDMuMCAqLworLyogR2VuZXJhdGVkIEMgaGVh
ZGVyIGZvcjoKKyAqIEFQSTogZ2xlczIKKyAqIFByb2ZpbGU6IGNvbW1vbgorICogVmVyc2lvbnMg
Y29uc2lkZXJlZDogMlwuWzAtOV18M1wuMAorICogVmVyc2lvbnMgZW1pdHRlZDogLioKKyAqIERl
ZmF1bHQgZXh0ZW5zaW9ucyBpbmNsdWRlZDogTm9uZQorICogQWRkaXRpb25hbCBleHRlbnNpb25z
IGluY2x1ZGVkOiBfbm9tYXRjaF9eCisgKiBFeHRlbnNpb25zIHJlbW92ZWQ6IF9ub21hdGNoX14K
KyAqLwogCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgR0xoYWxmOwotdHlwZWRlZiBraHJvbm9z
X2ludDY0X3QgIEdMaW50NjQ7CisjaWZuZGVmIEdMX0VTX1ZFUlNJT05fMl8wCisjZGVmaW5lIEdM
X0VTX1ZFUlNJT05fMl8wIDEKKyNpbmNsdWRlIDxLSFIva2hycGxhdGZvcm0uaD4KK3R5cGVkZWYg
a2hyb25vc19pbnQ4X3QgR0xieXRlOwordHlwZWRlZiBraHJvbm9zX2Zsb2F0X3QgR0xjbGFtcGY7
Cit0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBHTGZpeGVkOwordHlwZWRlZiBzaG9ydCBHTHNob3J0
OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBHTHVzaG9ydDsKK3R5cGVkZWYgdm9pZCBHTHZvaWQ7
Cit0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyAqR0xzeW5jOwordHlwZWRlZiBraHJvbm9zX2ludDY0
X3QgR0xpbnQ2NDsKIHR5cGVkZWYga2hyb25vc191aW50NjRfdCBHTHVpbnQ2NDsKLXR5cGVkZWYg
c3RydWN0IF9fR0xzeW5jICpHTHN5bmM7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBHTGVudW07Cit0
eXBlZGVmIHVuc2lnbmVkIGludCBHTHVpbnQ7Cit0eXBlZGVmIGNoYXIgR0xjaGFyOwordHlwZWRl
ZiBraHJvbm9zX2Zsb2F0X3QgR0xmbG9hdDsKK3R5cGVkZWYga2hyb25vc19zc2l6ZV90IEdMc2l6
ZWlwdHI7Cit0eXBlZGVmIGtocm9ub3NfaW50cHRyX3QgR0xpbnRwdHI7Cit0eXBlZGVmIHVuc2ln
bmVkIGludCBHTGJpdGZpZWxkOwordHlwZWRlZiBpbnQgR0xpbnQ7Cit0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgR0xib29sZWFuOwordHlwZWRlZiBpbnQgR0xzaXplaTsKK3R5cGVkZWYga2hyb25vc191
aW50OF90IEdMdWJ5dGU7CisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQgICAgICAgICAgICAg
ICAweDAwMDAwMTAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVCAgICAgICAgICAgICAw
eDAwMDAwNDAwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQgICAgICAgICAgICAgICAweDAw
MDA0MDAwCisjZGVmaW5lIEdMX0ZBTFNFICAgICAgICAgICAgICAgICAgICAgICAgICAwCisjZGVm
aW5lIEdMX1RSVUUgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIEdMX1BPSU5U
UyAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgR0xfTElORVMgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBHTF9MSU5FX0xPT1AgICAgICAgICAg
ICAgICAgICAgICAgMHgwMDAyCisjZGVmaW5lIEdMX0xJTkVfU1RSSVAgICAgICAgICAgICAgICAg
ICAgICAweDAwMDMKKyNkZWZpbmUgR0xfVFJJQU5HTEVTICAgICAgICAgICAgICAgICAgICAgIDB4
MDAwNAorI2RlZmluZSBHTF9UUklBTkdMRV9TVFJJUCAgICAgICAgICAgICAgICAgMHgwMDA1Cisj
ZGVmaW5lIEdMX1RSSUFOR0xFX0ZBTiAgICAgICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUg
R0xfWkVSTyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgR0xfT05FICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgR0xfU1JDX0NPTE9SICAgICAgICAgICAg
ICAgICAgICAgIDB4MDMwMAorI2RlZmluZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SICAgICAgICAg
ICAgMHgwMzAxCisjZGVmaW5lIEdMX1NSQ19BTFBIQSAgICAgICAgICAgICAgICAgICAgICAweDAz
MDIKKyNkZWZpbmUgR0xfT05FX01JTlVTX1NSQ19BTFBIQSAgICAgICAgICAgIDB4MDMwMworI2Rl
ZmluZSBHTF9EU1RfQUxQSEEgICAgICAgICAgICAgICAgICAgICAgMHgwMzA0CisjZGVmaW5lIEdM
X09ORV9NSU5VU19EU1RfQUxQSEEgICAgICAgICAgICAweDAzMDUKKyNkZWZpbmUgR0xfRFNUX0NP
TE9SICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNgorI2RlZmluZSBHTF9PTkVfTUlOVVNfRFNU
X0NPTE9SICAgICAgICAgICAgMHgwMzA3CisjZGVmaW5lIEdMX1NSQ19BTFBIQV9TQVRVUkFURSAg
ICAgICAgICAgICAweDAzMDgKKyNkZWZpbmUgR0xfRlVOQ19BREQgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODAwNgorI2RlZmluZSBHTF9CTEVORF9FUVVBVElPTiAgICAgICAgICAgICAgICAgMHg4
MDA5CisjZGVmaW5lIEdMX0JMRU5EX0VRVUFUSU9OX1JHQiAgICAgICAgICAgICAweDgwMDkKKyNk
ZWZpbmUgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEEgICAgICAgICAgIDB4ODgzRAorI2RlZmluZSBH
TF9GVU5DX1NVQlRSQUNUICAgICAgICAgICAgICAgICAgMHg4MDBBCisjZGVmaW5lIEdMX0ZVTkNf
UkVWRVJTRV9TVUJUUkFDVCAgICAgICAgICAweDgwMEIKKyNkZWZpbmUgR0xfQkxFTkRfRFNUX1JH
QiAgICAgICAgICAgICAgICAgIDB4ODBDOAorI2RlZmluZSBHTF9CTEVORF9TUkNfUkdCICAgICAg
ICAgICAgICAgICAgMHg4MEM5CisjZGVmaW5lIEdMX0JMRU5EX0RTVF9BTFBIQSAgICAgICAgICAg
ICAgICAweDgwQ0EKKyNkZWZpbmUgR0xfQkxFTkRfU1JDX0FMUEhBICAgICAgICAgICAgICAgIDB4
ODBDQgorI2RlZmluZSBHTF9DT05TVEFOVF9DT0xPUiAgICAgICAgICAgICAgICAgMHg4MDAxCisj
ZGVmaW5lIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiAgICAgICAweDgwMDIKKyNkZWZpbmUg
R0xfQ09OU1RBTlRfQUxQSEEgICAgICAgICAgICAgICAgIDB4ODAwMworI2RlZmluZSBHTF9PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEgICAgICAgMHg4MDA0CisjZGVmaW5lIEdMX0JMRU5EX0NPTE9S
ICAgICAgICAgICAgICAgICAgICAweDgwMDUKKyNkZWZpbmUgR0xfQVJSQVlfQlVGRkVSICAgICAg
ICAgICAgICAgICAgIDB4ODg5MgorI2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiAgICAg
ICAgICAgMHg4ODkzCisjZGVmaW5lIEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICAw
eDg4OTQKKyNkZWZpbmUgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyAgIDB4ODg5NQor
I2RlZmluZSBHTF9TVFJFQU1fRFJBVyAgICAgICAgICAgICAgICAgICAgMHg4OEUwCisjZGVmaW5l
IEdMX1NUQVRJQ19EUkFXICAgICAgICAgICAgICAgICAgICAweDg4RTQKKyNkZWZpbmUgR0xfRFlO
QU1JQ19EUkFXICAgICAgICAgICAgICAgICAgIDB4ODhFOAorI2RlZmluZSBHTF9CVUZGRVJfU0la
RSAgICAgICAgICAgICAgICAgICAgMHg4NzY0CisjZGVmaW5lIEdMX0JVRkZFUl9VU0FHRSAgICAg
ICAgICAgICAgICAgICAweDg3NjUKKyNkZWZpbmUgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCICAg
ICAgICAgIDB4ODYyNgorI2RlZmluZSBHTF9GUk9OVCAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgwNDA0CisjZGVmaW5lIEdMX0JBQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDUK
KyNkZWZpbmUgR0xfRlJPTlRfQU5EX0JBQ0sgICAgICAgICAgICAgICAgIDB4MDQwOAorI2RlZmlu
ZSBHTF9URVhUVVJFXzJEICAgICAgICAgICAgICAgICAgICAgMHgwREUxCisjZGVmaW5lIEdMX0NV
TExfRkFDRSAgICAgICAgICAgICAgICAgICAgICAweDBCNDQKKyNkZWZpbmUgR0xfQkxFTkQgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MEJFMgorI2RlZmluZSBHTF9ESVRIRVIgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwQkQwCisjZGVmaW5lIEdMX1NURU5DSUxfVEVTVCAgICAgICAgICAg
ICAgICAgICAweDBCOTAKKyNkZWZpbmUgR0xfREVQVEhfVEVTVCAgICAgICAgICAgICAgICAgICAg
IDB4MEI3MQorI2RlZmluZSBHTF9TQ0lTU09SX1RFU1QgICAgICAgICAgICAgICAgICAgMHgwQzEx
CisjZGVmaW5lIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwgICAgICAgICAgICAweDgwMzcKKyNkZWZp
bmUgR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFICAgICAgIDB4ODA5RQorI2RlZmluZSBHTF9T
QU1QTEVfQ09WRVJBR0UgICAgICAgICAgICAgICAgMHg4MEEwCisjZGVmaW5lIEdMX05PX0VSUk9S
ICAgICAgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIEdMX0lOVkFMSURfRU5VTSAgICAgICAg
ICAgICAgICAgICAweDA1MDAKKyNkZWZpbmUgR0xfSU5WQUxJRF9WQUxVRSAgICAgICAgICAgICAg
ICAgIDB4MDUwMQorI2RlZmluZSBHTF9JTlZBTElEX09QRVJBVElPTiAgICAgICAgICAgICAgMHgw
NTAyCisjZGVmaW5lIEdMX09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICAgICAweDA1MDUKKyNk
ZWZpbmUgR0xfQ1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDkwMAorI2RlZmluZSBH
TF9DQ1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwOTAxCisjZGVmaW5lIEdMX0xJTkVf
V0lEVEggICAgICAgICAgICAgICAgICAgICAweDBCMjEKKyNkZWZpbmUgR0xfQUxJQVNFRF9QT0lO
VF9TSVpFX1JBTkdFICAgICAgIDB4ODQ2RAorI2RlZmluZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhf
UkFOR0UgICAgICAgMHg4NDZFCisjZGVmaW5lIEdMX0NVTExfRkFDRV9NT0RFICAgICAgICAgICAg
ICAgICAweDBCNDUKKyNkZWZpbmUgR0xfRlJPTlRfRkFDRSAgICAgICAgICAgICAgICAgICAgIDB4
MEI0NgorI2RlZmluZSBHTF9ERVBUSF9SQU5HRSAgICAgICAgICAgICAgICAgICAgMHgwQjcwCisj
ZGVmaW5lIEdMX0RFUFRIX1dSSVRFTUFTSyAgICAgICAgICAgICAgICAweDBCNzIKKyNkZWZpbmUg
R0xfREVQVEhfQ0xFQVJfVkFMVUUgICAgICAgICAgICAgIDB4MEI3MworI2RlZmluZSBHTF9ERVBU
SF9GVU5DICAgICAgICAgICAgICAgICAgICAgMHgwQjc0CisjZGVmaW5lIEdMX1NURU5DSUxfQ0xF
QVJfVkFMVUUgICAgICAgICAgICAweDBCOTEKKyNkZWZpbmUgR0xfU1RFTkNJTF9GVU5DICAgICAg
ICAgICAgICAgICAgIDB4MEI5MgorI2RlZmluZSBHTF9TVEVOQ0lMX0ZBSUwgICAgICAgICAgICAg
ICAgICAgMHgwQjk0CisjZGVmaW5lIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMICAgICAgICAw
eDBCOTUKKyNkZWZpbmUgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgICAgICAgIDB4MEI5Ngor
I2RlZmluZSBHTF9TVEVOQ0lMX1JFRiAgICAgICAgICAgICAgICAgICAgMHgwQjk3CisjZGVmaW5l
IEdMX1NURU5DSUxfVkFMVUVfTUFTSyAgICAgICAgICAgICAweDBCOTMKKyNkZWZpbmUgR0xfU1RF
TkNJTF9XUklURU1BU0sgICAgICAgICAgICAgIDB4MEI5OAorI2RlZmluZSBHTF9TVEVOQ0lMX0JB
Q0tfRlVOQyAgICAgICAgICAgICAgMHg4ODAwCisjZGVmaW5lIEdMX1NURU5DSUxfQkFDS19GQUlM
ICAgICAgICAgICAgICAweDg4MDEKKyNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhf
RkFJTCAgIDB4ODgwMgorI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTICAg
MHg4ODAzCisjZGVmaW5lIEdMX1NURU5DSUxfQkFDS19SRUYgICAgICAgICAgICAgICAweDhDQTMK
KyNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sgICAgICAgIDB4OENBNAorI2RlZmlu
ZSBHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLICAgICAgICAgMHg4Q0E1CisjZGVmaW5lIEdMX1ZJ
RVdQT1JUICAgICAgICAgICAgICAgICAgICAgICAweDBCQTIKKyNkZWZpbmUgR0xfU0NJU1NPUl9C
T1ggICAgICAgICAgICAgICAgICAgIDB4MEMxMAorI2RlZmluZSBHTF9DT0xPUl9DTEVBUl9WQUxV
RSAgICAgICAgICAgICAgMHgwQzIyCisjZGVmaW5lIEdMX0NPTE9SX1dSSVRFTUFTSyAgICAgICAg
ICAgICAgICAweDBDMjMKKyNkZWZpbmUgR0xfVU5QQUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAg
IDB4MENGNQorI2RlZmluZSBHTF9QQUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAgMHgwRDA1
CisjZGVmaW5lIEdMX01BWF9URVhUVVJFX1NJWkUgICAgICAgICAgICAgICAweDBEMzMKKyNkZWZp
bmUgR0xfTUFYX1ZJRVdQT1JUX0RJTVMgICAgICAgICAgICAgIDB4MEQzQQorI2RlZmluZSBHTF9T
VUJQSVhFTF9CSVRTICAgICAgICAgICAgICAgICAgMHgwRDUwCisjZGVmaW5lIEdMX1JFRF9CSVRT
ICAgICAgICAgICAgICAgICAgICAgICAweDBENTIKKyNkZWZpbmUgR0xfR1JFRU5fQklUUyAgICAg
ICAgICAgICAgICAgICAgIDB4MEQ1MworI2RlZmluZSBHTF9CTFVFX0JJVFMgICAgICAgICAgICAg
ICAgICAgICAgMHgwRDU0CisjZGVmaW5lIEdMX0FMUEhBX0JJVFMgICAgICAgICAgICAgICAgICAg
ICAweDBENTUKKyNkZWZpbmUgR0xfREVQVEhfQklUUyAgICAgICAgICAgICAgICAgICAgIDB4MEQ1
NgorI2RlZmluZSBHTF9TVEVOQ0lMX0JJVFMgICAgICAgICAgICAgICAgICAgMHgwRDU3CisjZGVm
aW5lIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTICAgICAgICAgICAweDJBMDAKKyNkZWZpbmUgR0xf
UE9MWUdPTl9PRkZTRVRfRkFDVE9SICAgICAgICAgIDB4ODAzOAorI2RlZmluZSBHTF9URVhUVVJF
X0JJTkRJTkdfMkQgICAgICAgICAgICAgMHg4MDY5CisjZGVmaW5lIEdMX1NBTVBMRV9CVUZGRVJT
ICAgICAgICAgICAgICAgICAweDgwQTgKKyNkZWZpbmUgR0xfU0FNUExFUyAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODBBOQorI2RlZmluZSBHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUgICAgICAg
ICAgMHg4MEFBCisjZGVmaW5lIEdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQgICAgICAgICAweDgw
QUIKKyNkZWZpbmUgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIDB4ODZBMgorI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyAgICAgMHg4NkEzCisjZGVmaW5lIEdM
X0RPTlRfQ0FSRSAgICAgICAgICAgICAgICAgICAgICAweDExMDAKKyNkZWZpbmUgR0xfRkFTVEVT
VCAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEwMQorI2RlZmluZSBHTF9OSUNFU1QgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgxMTAyCisjZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5U
ICAgICAgICAgICAweDgxOTIKKyNkZWZpbmUgR0xfQllURSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MTQwMAorI2RlZmluZSBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICAgMHgx
NDAxCisjZGVmaW5lIEdMX1NIT1JUICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDIKKyNk
ZWZpbmUgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAgICAgICAgIDB4MTQwMworI2RlZmluZSBH
TF9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNDA0CisjZGVmaW5lIEdMX1VOU0lH
TkVEX0lOVCAgICAgICAgICAgICAgICAgICAweDE0MDUKKyNkZWZpbmUgR0xfRkxPQVQgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MTQwNgorI2RlZmluZSBHTF9GSVhFRCAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgxNDBDCisjZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVCAgICAgICAgICAg
ICAgICAweDE5MDIKKyNkZWZpbmUgR0xfQUxQSEEgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MTkwNgorI2RlZmluZSBHTF9SR0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTA3Cisj
ZGVmaW5lIEdMX1JHQkEgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MDgKKyNkZWZpbmUg
R0xfTFVNSU5BTkNFICAgICAgICAgICAgICAgICAgICAgIDB4MTkwOQorI2RlZmluZSBHTF9MVU1J
TkFOQ0VfQUxQSEEgICAgICAgICAgICAgICAgMHgxOTBBCisjZGVmaW5lIEdMX1VOU0lHTkVEX1NI
T1JUXzRfNF80XzQgICAgICAgICAweDgwMzMKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNV81
XzVfMSAgICAgICAgIDB4ODAzNAorI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSAgICAg
ICAgICAgMHg4MzYzCisjZGVmaW5lIEdMX0ZSQUdNRU5UX1NIQURFUiAgICAgICAgICAgICAgICAw
eDhCMzAKKyNkZWZpbmUgR0xfVkVSVEVYX1NIQURFUiAgICAgICAgICAgICAgICAgIDB4OEIzMQor
I2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlMgICAgICAgICAgICAgMHg4ODY5CisjZGVmaW5l
IEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICAgICAweDhERkIKKyNkZWZpbmUgR0xfTUFY
X1ZBUllJTkdfVkVDVE9SUyAgICAgICAgICAgIDB4OERGQworI2RlZmluZSBHTF9NQVhfQ09NQklO
RURfVEVYVFVSRV9JTUFHRV9VTklUUyAweDhCNEQKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9URVhU
VVJFX0lNQUdFX1VOSVRTIDB4OEI0QworI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklU
UyAgICAgICAgMHg4ODcyCisjZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMg
ICAweDhERkQKKyNkZWZpbmUgR0xfU0hBREVSX1RZUEUgICAgICAgICAgICAgICAgICAgIDB4OEI0
RgorI2RlZmluZSBHTF9ERUxFVEVfU1RBVFVTICAgICAgICAgICAgICAgICAgMHg4QjgwCisjZGVm
aW5lIEdMX0xJTktfU1RBVFVTICAgICAgICAgICAgICAgICAgICAweDhCODIKKyNkZWZpbmUgR0xf
VkFMSURBVEVfU1RBVFVTICAgICAgICAgICAgICAgIDB4OEI4MworI2RlZmluZSBHTF9BVFRBQ0hF
RF9TSEFERVJTICAgICAgICAgICAgICAgMHg4Qjg1CisjZGVmaW5lIEdMX0FDVElWRV9VTklGT1JN
UyAgICAgICAgICAgICAgICAweDhCODYKKyNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xF
TkdUSCAgICAgIDB4OEI4NworI2RlZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFUyAgICAgICAgICAg
ICAgMHg4Qjg5CisjZGVmaW5lIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCAgICAweDhC
OEEKKyNkZWZpbmUgR0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OICAgICAgIDB4OEI4QworI2Rl
ZmluZSBHTF9DVVJSRU5UX1BST0dSQU0gICAgICAgICAgICAgICAgMHg4QjhECisjZGVmaW5lIEdM
X05FVkVSICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAKKyNkZWZpbmUgR0xfTEVTUyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMQorI2RlZmluZSBHTF9FUVVBTCAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgwMjAyCisjZGVmaW5lIEdMX0xFUVVBTCAgICAgICAgICAgICAg
ICAgICAgICAgICAweDAyMDMKKyNkZWZpbmUgR0xfR1JFQVRFUiAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MDIwNAorI2RlZmluZSBHTF9OT1RFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgMHgw
MjA1CisjZGVmaW5lIEdMX0dFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDYKKyNk
ZWZpbmUgR0xfQUxXQVlTICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwNworI2RlZmluZSBH
TF9LRUVQICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRTAwCisjZGVmaW5lIEdMX1JFUExB
Q0UgICAgICAgICAgICAgICAgICAgICAgICAweDFFMDEKKyNkZWZpbmUgR0xfSU5DUiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MUUwMgorI2RlZmluZSBHTF9ERUNSICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgxRTAzCisjZGVmaW5lIEdMX0lOVkVSVCAgICAgICAgICAgICAgICAgICAg
ICAgICAweDE1MEEKKyNkZWZpbmUgR0xfSU5DUl9XUkFQICAgICAgICAgICAgICAgICAgICAgIDB4
ODUwNworI2RlZmluZSBHTF9ERUNSX1dSQVAgICAgICAgICAgICAgICAgICAgICAgMHg4NTA4Cisj
ZGVmaW5lIEdMX1ZFTkRPUiAgICAgICAgICAgICAgICAgICAgICAgICAweDFGMDAKKyNkZWZpbmUg
R0xfUkVOREVSRVIgICAgICAgICAgICAgICAgICAgICAgIDB4MUYwMQorI2RlZmluZSBHTF9WRVJT
SU9OICAgICAgICAgICAgICAgICAgICAgICAgMHgxRjAyCisjZGVmaW5lIEdMX0VYVEVOU0lPTlMg
ICAgICAgICAgICAgICAgICAgICAweDFGMDMKKyNkZWZpbmUgR0xfTkVBUkVTVCAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MjYwMAorI2RlZmluZSBHTF9MSU5FQVIgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgyNjAxCisjZGVmaW5lIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QgICAgICAgICAw
eDI3MDAKKyNkZWZpbmUgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUICAgICAgICAgIDB4MjcwMQor
I2RlZmluZSBHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIgICAgICAgICAgMHgyNzAyCisjZGVmaW5l
IEdMX0xJTkVBUl9NSVBNQVBfTElORUFSICAgICAgICAgICAweDI3MDMKKyNkZWZpbmUgR0xfVEVY
VFVSRV9NQUdfRklMVEVSICAgICAgICAgICAgIDB4MjgwMAorI2RlZmluZSBHTF9URVhUVVJFX01J
Tl9GSUxURVIgICAgICAgICAgICAgMHgyODAxCisjZGVmaW5lIEdMX1RFWFRVUkVfV1JBUF9TICAg
ICAgICAgICAgICAgICAweDI4MDIKKyNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1QgICAgICAgICAg
ICAgICAgIDB4MjgwMworI2RlZmluZSBHTF9URVhUVVJFICAgICAgICAgICAgICAgICAgICAgICAg
MHgxNzAyCisjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVAgICAgICAgICAgICAgICAweDg1MTMK
KyNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQICAgICAgIDB4ODUxNAorI2RlZmlu
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggICAgMHg4NTE1CisjZGVmaW5lIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCAgICAweDg1MTYKKyNkZWZpbmUgR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9ZICAgIDB4ODUxNworI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1kgICAgMHg4NTE4CisjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWiAgICAweDg1MTkKKyNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aICAg
IDB4ODUxQQorI2RlZmluZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICAgICAgMHg4NTFD
CisjZGVmaW5lIEdMX1RFWFRVUkUwICAgICAgICAgICAgICAgICAgICAgICAweDg0QzAKKyNkZWZp
bmUgR0xfVEVYVFVSRTEgICAgICAgICAgICAgICAgICAgICAgIDB4ODRDMQorI2RlZmluZSBHTF9U
RVhUVVJFMiAgICAgICAgICAgICAgICAgICAgICAgMHg4NEMyCisjZGVmaW5lIEdMX1RFWFRVUkUz
ICAgICAgICAgICAgICAgICAgICAgICAweDg0QzMKKyNkZWZpbmUgR0xfVEVYVFVSRTQgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODRDNAorI2RlZmluZSBHTF9URVhUVVJFNSAgICAgICAgICAgICAg
ICAgICAgICAgMHg4NEM1CisjZGVmaW5lIEdMX1RFWFRVUkU2ICAgICAgICAgICAgICAgICAgICAg
ICAweDg0QzYKKyNkZWZpbmUgR0xfVEVYVFVSRTcgICAgICAgICAgICAgICAgICAgICAgIDB4ODRD
NworI2RlZmluZSBHTF9URVhUVVJFOCAgICAgICAgICAgICAgICAgICAgICAgMHg4NEM4CisjZGVm
aW5lIEdMX1RFWFRVUkU5ICAgICAgICAgICAgICAgICAgICAgICAweDg0QzkKKyNkZWZpbmUgR0xf
VEVYVFVSRTEwICAgICAgICAgICAgICAgICAgICAgIDB4ODRDQQorI2RlZmluZSBHTF9URVhUVVJF
MTEgICAgICAgICAgICAgICAgICAgICAgMHg4NENCCisjZGVmaW5lIEdMX1RFWFRVUkUxMiAgICAg
ICAgICAgICAgICAgICAgICAweDg0Q0MKKyNkZWZpbmUgR0xfVEVYVFVSRTEzICAgICAgICAgICAg
ICAgICAgICAgIDB4ODRDRAorI2RlZmluZSBHTF9URVhUVVJFMTQgICAgICAgICAgICAgICAgICAg
ICAgMHg4NENFCisjZGVmaW5lIEdMX1RFWFRVUkUxNSAgICAgICAgICAgICAgICAgICAgICAweDg0
Q0YKKyNkZWZpbmUgR0xfVEVYVFVSRTE2ICAgICAgICAgICAgICAgICAgICAgIDB4ODREMAorI2Rl
ZmluZSBHTF9URVhUVVJFMTcgICAgICAgICAgICAgICAgICAgICAgMHg4NEQxCisjZGVmaW5lIEdM
X1RFWFRVUkUxOCAgICAgICAgICAgICAgICAgICAgICAweDg0RDIKKyNkZWZpbmUgR0xfVEVYVFVS
RTE5ICAgICAgICAgICAgICAgICAgICAgIDB4ODREMworI2RlZmluZSBHTF9URVhUVVJFMjAgICAg
ICAgICAgICAgICAgICAgICAgMHg4NEQ0CisjZGVmaW5lIEdMX1RFWFRVUkUyMSAgICAgICAgICAg
ICAgICAgICAgICAweDg0RDUKKyNkZWZpbmUgR0xfVEVYVFVSRTIyICAgICAgICAgICAgICAgICAg
ICAgIDB4ODRENgorI2RlZmluZSBHTF9URVhUVVJFMjMgICAgICAgICAgICAgICAgICAgICAgMHg4
NEQ3CisjZGVmaW5lIEdMX1RFWFRVUkUyNCAgICAgICAgICAgICAgICAgICAgICAweDg0RDgKKyNk
ZWZpbmUgR0xfVEVYVFVSRTI1ICAgICAgICAgICAgICAgICAgICAgIDB4ODREOQorI2RlZmluZSBH
TF9URVhUVVJFMjYgICAgICAgICAgICAgICAgICAgICAgMHg4NERBCisjZGVmaW5lIEdMX1RFWFRV
UkUyNyAgICAgICAgICAgICAgICAgICAgICAweDg0REIKKyNkZWZpbmUgR0xfVEVYVFVSRTI4ICAg
ICAgICAgICAgICAgICAgICAgIDB4ODREQworI2RlZmluZSBHTF9URVhUVVJFMjkgICAgICAgICAg
ICAgICAgICAgICAgMHg4NERECisjZGVmaW5lIEdMX1RFWFRVUkUzMCAgICAgICAgICAgICAgICAg
ICAgICAweDg0REUKKyNkZWZpbmUgR0xfVEVYVFVSRTMxICAgICAgICAgICAgICAgICAgICAgIDB4
ODRERgorI2RlZmluZSBHTF9BQ1RJVkVfVEVYVFVSRSAgICAgICAgICAgICAgICAgMHg4NEUwCisj
ZGVmaW5lIEdMX1JFUEVBVCAgICAgICAgICAgICAgICAgICAgICAgICAweDI5MDEKKyNkZWZpbmUg
R0xfQ0xBTVBfVE9fRURHRSAgICAgICAgICAgICAgICAgIDB4ODEyRgorI2RlZmluZSBHTF9NSVJS
T1JFRF9SRVBFQVQgICAgICAgICAgICAgICAgMHg4MzcwCisjZGVmaW5lIEdMX0ZMT0FUX1ZFQzIg
ICAgICAgICAgICAgICAgICAgICAweDhCNTAKKyNkZWZpbmUgR0xfRkxPQVRfVkVDMyAgICAgICAg
ICAgICAgICAgICAgIDB4OEI1MQorI2RlZmluZSBHTF9GTE9BVF9WRUM0ICAgICAgICAgICAgICAg
ICAgICAgMHg4QjUyCisjZGVmaW5lIEdMX0lOVF9WRUMyICAgICAgICAgICAgICAgICAgICAgICAw
eDhCNTMKKyNkZWZpbmUgR0xfSU5UX1ZFQzMgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1NAor
I2RlZmluZSBHTF9JTlRfVkVDNCAgICAgICAgICAgICAgICAgICAgICAgMHg4QjU1CisjZGVmaW5l
IEdMX0JPT0wgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCNTYKKyNkZWZpbmUgR0xfQk9P
TF9WRUMyICAgICAgICAgICAgICAgICAgICAgIDB4OEI1NworI2RlZmluZSBHTF9CT09MX1ZFQzMg
ICAgICAgICAgICAgICAgICAgICAgMHg4QjU4CisjZGVmaW5lIEdMX0JPT0xfVkVDNCAgICAgICAg
ICAgICAgICAgICAgICAweDhCNTkKKyNkZWZpbmUgR0xfRkxPQVRfTUFUMiAgICAgICAgICAgICAg
ICAgICAgIDB4OEI1QQorI2RlZmluZSBHTF9GTE9BVF9NQVQzICAgICAgICAgICAgICAgICAgICAg
MHg4QjVCCisjZGVmaW5lIEdMX0ZMT0FUX01BVDQgICAgICAgICAgICAgICAgICAgICAweDhCNUMK
KyNkZWZpbmUgR0xfU0FNUExFUl8yRCAgICAgICAgICAgICAgICAgICAgIDB4OEI1RQorI2RlZmlu
ZSBHTF9TQU1QTEVSX0NVQkUgICAgICAgICAgICAgICAgICAgMHg4QjYwCisjZGVmaW5lIEdMX1ZF
UlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCAgICAweDg2MjIKKyNkZWZpbmUgR0xfVkVSVEVYX0FU
VFJJQl9BUlJBWV9TSVpFICAgICAgIDB4ODYyMworI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX1NUUklERSAgICAgMHg4NjI0CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQ
RSAgICAgICAweDg2MjUKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVE
IDB4ODg2QQorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgICAgMHg4NjQ1
CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlGCisj
ZGVmaW5lIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSAweDhCOUEKKyNkZWZpbmUg
R0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQgMHg4QjlCCisjZGVmaW5lIEdMX0NP
TVBJTEVfU1RBVFVTICAgICAgICAgICAgICAgICAweDhCODEKKyNkZWZpbmUgR0xfSU5GT19MT0df
TEVOR1RIICAgICAgICAgICAgICAgIDB4OEI4NAorI2RlZmluZSBHTF9TSEFERVJfU09VUkNFX0xF
TkdUSCAgICAgICAgICAgMHg4Qjg4CisjZGVmaW5lIEdMX1NIQURFUl9DT01QSUxFUiAgICAgICAg
ICAgICAgICAweDhERkEKKyNkZWZpbmUgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgICAg
IDB4OERGOAorI2RlZmluZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgMHg4REY5
CisjZGVmaW5lIEdMX0xPV19GTE9BVCAgICAgICAgICAgICAgICAgICAgICAweDhERjAKKyNkZWZp
bmUgR0xfTUVESVVNX0ZMT0FUICAgICAgICAgICAgICAgICAgIDB4OERGMQorI2RlZmluZSBHTF9I
SUdIX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgMHg4REYyCisjZGVmaW5lIEdMX0xPV19JTlQg
ICAgICAgICAgICAgICAgICAgICAgICAweDhERjMKKyNkZWZpbmUgR0xfTUVESVVNX0lOVCAgICAg
ICAgICAgICAgICAgICAgIDB4OERGNAorI2RlZmluZSBHTF9ISUdIX0lOVCAgICAgICAgICAgICAg
ICAgICAgICAgMHg4REY1CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSICAgICAgICAgICAgICAgICAg
ICAweDhENDAKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSICAgICAgICAgICAgICAgICAgIDB4OEQ0
MQorI2RlZmluZSBHTF9SR0JBNCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU2CisjZGVm
aW5lIEdMX1JHQjVfQTEgICAgICAgICAgICAgICAgICAgICAgICAweDgwNTcKKyNkZWZpbmUgR0xf
UkdCNTY1ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2MgorI2RlZmluZSBHTF9ERVBUSF9D
T01QT05FTlQxNiAgICAgICAgICAgICAgMHg4MUE1CisjZGVmaW5lIEdMX1NURU5DSUxfSU5ERVg4
ICAgICAgICAgICAgICAgICAweDhENDgKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1dJRFRIICAg
ICAgICAgICAgIDB4OEQ0MgorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAg
ICAgMHg4RDQzCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQgICAweDhE
NDQKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFICAgICAgICAgIDB4OEQ1MAorI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSAgICAgICAgMHg4RDUxCisjZGVmaW5lIEdM
X1JFTkRFUkJVRkZFUl9CTFVFX1NJWkUgICAgICAgICAweDhENTIKKyNkZWZpbmUgR0xfUkVOREVS
QlVGRkVSX0FMUEhBX1NJWkUgICAgICAgIDB4OEQ1MworI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJf
REVQVEhfU0laRSAgICAgICAgMHg4RDU0CisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TVEVOQ0lM
X1NJWkUgICAgICAweDhENTUKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpF
Q1RfVFlQRSAweDhDRDAKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
TkFNRSAweDhDRDEKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xF
VkVMIDB4OENEMgorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VC
RV9NQVBfRkFDRSAweDhDRDMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDAgICAgICAgICAg
ICAgIDB4OENFMAorI2RlZmluZSBHTF9ERVBUSF9BVFRBQ0hNRU5UICAgICAgICAgICAgICAgMHg4
RDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQVRUQUNITUVOVCAgICAgICAgICAgICAweDhEMjAKKyNk
ZWZpbmUgR0xfTk9ORSAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUgICAgICAgICAgIDB4OENENQorI2RlZmluZSBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgMHg4Q0Q2CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UIDB4OENENworI2RlZmluZSBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0RJTUVOU0lPTlMgMHg4Q0Q5CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX1VO
U1VQUE9SVEVEICAgICAgICAweDhDREQKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQklORElORyAg
ICAgICAgICAgIDB4OENBNgorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfQklORElORyAgICAgICAg
ICAgMHg4Q0E3CisjZGVmaW5lIEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRSAgICAgICAgICAweDg0
RTgKKyNkZWZpbmUgR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gIDB4MDUwNgordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xBQ1RJVkVURVhUVVJFUFJPQykgKEdMZW51bSB0
ZXh0dXJlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQVRUQUNIU0hBREVSUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMQklOREFUVFJJQkxPQ0FUSU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEJJTkRCVUZGRVJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlcik7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xCSU5EUkVOREVSQlVGRkVSUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5k
ZXJidWZmZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVEVYVFVSRVBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEJMRU5EQ09MT1JQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4s
IEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEJMRU5ERVFVQVRJT05QUk9DKSAoR0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFUSU9OU0VQQVJBVEVQUk9DKSAoR0xlbnVtIG1vZGVS
R0IsIEdMZW51bSBtb2RlQWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xC
TEVOREZVTkNQUk9DKSAoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRGVU5DU0VQQVJBVEVQUk9DKSAoR0xlbnVtIHNm
YWN0b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0g
ZGZhY3RvckFscGhhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQlVGRkVSREFU
QVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEs
IEdMZW51bSB1c2FnZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJVRkZFUlNV
QkRBVEFQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNp
emUsIGNvbnN0IHZvaWQgKmRhdGEpOwordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5H
TENIRUNLRlJBTUVCVUZGRVJTVEFUVVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSUFJPQykgKEdMYml0ZmllbGQgbWFzayk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSQ09MT1JQUk9DKSAoR0xmbG9hdCByZWQs
IEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSREVQVEhGUFJPQykgKEdMZmxvYXQgZCk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSU1RFTkNJTFBST0MpIChHTGludCBzKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09MT1JNQVNLUFJPQykgKEdMYm9vbGVh
biByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBJTEVTSEFERVJQUk9DKSAoR0x1
aW50IHNoYWRlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURU
RVhJTUFHRTJEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPUFlURVhJTUFH
RTJEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGlu
dCBib3JkZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VCSU1B
R0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOwordHlwZWRlZiBHTHVpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTENSRUFURVBST0dSQU1QUk9D
KSAodm9pZCk7Cit0eXBlZGVmIEdMdWludCAoR0xfQVBJRU5UUllQIFBGTkdMQ1JFQVRFU0hBREVS
UFJPQykgKEdMZW51bSB0eXBlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ1VM
TEZBQ0VQUk9DKSAoR0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xERUxFVEVCVUZGRVJTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJPQykg
KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xERUxFVEVQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUkVOREVSQlVGRkVSU1BST0MpIChH
THNpemVpIG4sIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTERFTEVURVNIQURFUlBST0MpIChHTHVpbnQgc2hhZGVyKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFVEVYVFVSRVNQUk9DKSAoR0xzaXplaSBu
LCBjb25zdCBHTHVpbnQgKnRleHR1cmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMREVQVEhGVU5DUFJPQykgKEdMZW51bSBmdW5jKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMREVQVEhNQVNLUFJPQykgKEdMYm9vbGVhbiBmbGFnKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMREVQVEhSQU5HRUZQUk9DKSAoR0xmbG9hdCBuLCBHTGZsb2F0IGYp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERVRBQ0hTSEFERVJQUk9DKSAoR0x1
aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xESVNBQkxFUFJPQykgKEdMZW51bSBjYXApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xESVNBQkxFVkVSVEVYQVRUUklCQVJSQVlQUk9DKSAoR0x1aW50IGluZGV4KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0FSUkFZU1BST0MpIChHTGVudW0gbW9k
ZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xEUkFXRUxFTUVOVFNQUk9DKSAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdM
ZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMRU5BQkxFUFJPQykgKEdMZW51bSBjYXApOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xFTkFCTEVWRVJURVhBVFRSSUJBUlJBWVBST0MpIChHTHVpbnQgaW5kZXgpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGSU5JU0hQUk9DKSAodm9pZCk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZMVVNIUFJPQykgKHZvaWQpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlJFTkRFUkJVRkZFUlBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
R0x1aW50IHJlbmRlcmJ1ZmZlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZS
QU1FQlVGRkVSVEVYVFVSRTJEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50
LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUk9OVEZBQ0VQUk9DKSAoR0xlbnVtIG1vZGUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5CVUZGRVJTUFJPQykgKEdMc2l6ZWkg
biwgR0x1aW50ICpidWZmZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VO
RVJBVEVNSVBNQVBQUk9DKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFTkZSQU1FQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqZnJhbWVi
dWZmZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOUkVOREVSQlVGRkVS
U1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFTlRFWFRVUkVTUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICp0
ZXh0dXJlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRUFUVFJJ
QlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQUNUSVZFVU5JRk9STVBST0MpIChH
THVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQVRUQUNIRURTSEFERVJTUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTHNpemVpIG1heENvdW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJz
KTsKK3R5cGVkZWYgR0xpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFUVFJJQkxPQ0FUSU9OUFJP
QykgKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVRCT09MRUFOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMYm9vbGVh
biAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBBUkFN
RVRFUklWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
Cit0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMR0VURVJST1JQUk9DKSAodm9pZCk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEZMT0FUVlBST0MpIChHTGVudW0g
cG5hbWUsIEdMZmxvYXQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xH
RVRGUkFNRUJVRkZFUkFUVEFDSE1FTlRQQVJBTUVURVJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUlZQUk9DKSAoR0xlbnVtIHBuYW1lLCBH
TGludCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1J
VlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JBTUlORk9MT0dQUk9DKSAoR0x1
aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmlu
Zm9Mb2cpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRSRU5ERVJCVUZGRVJQ
QVJBTUVURVJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTSEFERVJJVlBST0MpIChH
THVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xHRVRTSEFERVJJTkZPTE9HUFJPQykgKEdMdWludCBzaGFkZXIs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTSEFERVJQUkVDSVNJT05GT1JNQVRQUk9D
KSAoR0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCAqcmFuZ2Us
IEdMaW50ICpwcmVjaXNpb24pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRT
SEFERVJTT1VSQ0VQUk9DKSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMY2hhciAqc291cmNlKTsKK3R5cGVkZWYgY29uc3QgR0x1Ynl0ZSAqKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVFNUUklOR1BST0MpIChHTGVudW0gbmFtZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWFBBUkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUVEVYUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VU5JRk9STUZWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAq
cGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUlWUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIEdMaW50IChHTF9BUElFTlRSWVAgUEZOR0xHRVRVTklGT1JNTE9DQVRJT05QUk9DKSAoR0x1
aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQkZWUFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBu
YW1lLCBHTGZsb2F0ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xH
RVRWRVJURVhBVFRSSUJJVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJ
QlBPSU5URVJWUFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbnRl
cik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEhJTlRQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIG1vZGUpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5H
TElTQlVGRkVSUFJPQykgKEdMdWludCBidWZmZXIpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQ
SUVOVFJZUCBQRk5HTElTRU5BQkxFRFBST0MpIChHTGVudW0gY2FwKTsKK3R5cGVkZWYgR0xib29s
ZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0ZSQU1FQlVGRkVSUFJPQykgKEdMdWludCBmcmFtZWJ1
ZmZlcik7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNQUk9HUkFNUFJP
QykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZO
R0xJU1JFTkRFUkJVRkZFUlBST0MpIChHTHVpbnQgcmVuZGVyYnVmZmVyKTsKK3R5cGVkZWYgR0xi
b29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1NIQURFUlBST0MpIChHTHVpbnQgc2hhZGVyKTsK
K3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1RFWFRVUkVQUk9DKSAoR0x1
aW50IHRleHR1cmUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xMSU5FV0lEVEhQ
Uk9DKSAoR0xmbG9hdCB3aWR0aCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTExJ
TktQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUElYRUxTVE9SRUlQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBPTFlHT05PRkZTRVRQUk9DKSAoR0xmbG9h
dCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xSRUFEUElYRUxTUFJPQykgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxzKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVMRUFTRVNIQURFUkNPTVBJTEVSUFJPQykg
KHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRU5ERVJCVUZGRVJTVE9S
QUdFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xT
QU1QTEVDT1ZFUkFHRVBST0MpIChHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUlBST0MpIChHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFNIQURFUkJJTkFSWVBST0MpIChHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnNoYWRlcnMsIEdMZW51bSBiaW5hcnlmb3JtYXQsIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xz
aXplaSBsZW5ndGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTSEFERVJTT1VS
Q0VQUk9DKSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25z
dCpzdHJpbmcsIGNvbnN0IEdMaW50ICpsZW5ndGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xTVEVOQ0lMRlVOQ1BST0MpIChHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQg
bWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxGVU5DU0VQQVJB
VEVQUk9DKSAoR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNr
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTE1BU0tQUk9DKSAoR0x1
aW50IG1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMTUFTS1NF
UEFSQVRFUFJPQykgKEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFNURU5DSUxPUFBST0MpIChHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWls
LCBHTGVudW0genBhc3MpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lM
T1BTRVBBUkFURVBST0MpIChHTGVudW0gZmFjZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWls
LCBHTGVudW0gZHBwYXNzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1B
R0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBm
b3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVURVJGUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFRFWFBBUkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFS
QU1FVEVSSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSSVZQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1VCSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lk
ICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUZQUk9D
KSAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xVTklGT1JNMUZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVO
SUZPUk0xSVBST0MpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUlWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xVTklGT1JNMkZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQg
djEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMkZWUFJPQykgKEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0ySVBST0MpIChHTGludCBsb2NhdGlv
biwgR0xpbnQgdjAsIEdMaW50IHYxKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VU5JRk9STTJJVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNGUFJP
QykgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNGVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNM0lQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdM
aW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xVTklGT1JNM0lWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JN
NEZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQg
djIsIEdMZmxvYXQgdjMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JN
NEZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk00SVBST0MpIChH
TGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNElWUFJPQykgKEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNTUFUUklYMkZWUFJPQykgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzRlZQUk9D
KSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5J
Rk9STU1BVFJJWDRGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29s
ZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xVU0VQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkFMSURBVEVQUk9HUkFNUFJPQykgKEdMdWludCBwcm9n
cmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCMUZQUk9D
KSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xWRVJURVhBVFRSSUIxRlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCMkZQUk9DKSAo
R0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQjJGVlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
ZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIz
RlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIzRlZQUk9DKSAoR0x1
aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVkVSVEVYQVRUUklCNEZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xWRVJURVhBVFRSSUI0RlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCUE9JTlRFUlBS
T0MpIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9y
bWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWSUVXUE9SVFBST0MpIChHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBF
UworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQWN0aXZlVGV4dHVyZSAoR0xlbnVtIHRl
eHR1cmUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVyIChHTHVp
bnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xCaW5kQXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQnVmZmVy
IChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEJpbmRGcmFtZWJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVy
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRSZW5kZXJidWZmZXIgKEdMZW51
bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsQmluZFRleHR1cmUgKEdMZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kQ29sb3IgKEdMZmxvYXQgcmVkLCBHTGZsb2F0
IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvbiAoR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlIChHTGVudW0gbW9kZVJHQiwgR0xl
bnVtIG1vZGVBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmMg
KEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSAoR0xlbnVtIHNmYWN0b3JSR0IsIEdMZW51bSBkZmFj
dG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZhY3RvckFscGhhKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlckRhdGEgKEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSwgR0xlbnVtIHVzYWdlKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlclN1YkRhdGEgKEdMZW51bSB0YXJnZXQsIEdMaW50cHRy
IG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwg
R0xlbnVtIEdMX0FQSUVOVFJZIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAoR0xlbnVtIHRhcmdl
dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhciAoR0xiaXRmaWVsZCBtYXNr
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENsZWFyQ29sb3IgKEdMZmxvYXQgcmVk
LCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJEZXB0aGYgKEdMZmxvYXQgZCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhclN0ZW5jaWwgKEdMaW50IHMpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQ29sb3JNYXNrIChHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3Jl
ZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvb2xlYW4gYWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQ29tcGlsZVNoYWRlciAoR0x1aW50IHNoYWRlcik7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQg
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBp
bWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsQ29weVRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTGludCBib3JkZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRl
eFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBH
TGludCB5b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CitHTF9BUElDQUxMIEdMdWludCBHTF9BUElFTlRSWSBnbENyZWF0ZVByb2dyYW0gKHZv
aWQpOworR0xfQVBJQ0FMTCBHTHVpbnQgR0xfQVBJRU5UUlkgZ2xDcmVhdGVTaGFkZXIgKEdMZW51
bSB0eXBlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEN1bGxGYWNlIChHTGVudW0g
bW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVCdWZmZXJzIChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqYnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1
ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUHJvZ3JhbSAoR0x1
aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUmVuZGVy
YnVmZmVycyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVRleHR1cmVzIChHTHNpemVpIG4sIGNv
bnN0IEdMdWludCAqdGV4dHVyZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVw
dGhGdW5jIChHTGVudW0gZnVuYyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXB0
aE1hc2sgKEdMYm9vbGVhbiBmbGFnKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERl
cHRoUmFuZ2VmIChHTGZsb2F0IG4sIEdMZmxvYXQgZik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xEZXRhY2hTaGFkZXIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGUgKEdMZW51bSBjYXApOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChHTHVpbnQg
aW5kZXgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5cyAoR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbERyYXdFbGVtZW50cyAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51
bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEVuYWJsZSAoR0xlbnVtIGNhcCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEZpbmlzaCAodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xGbHVzaCAodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSBy
ZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2
ZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJvbnRGYWNlIChHTGVudW0gbW9k
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5CdWZmZXJzIChHTHNpemVpIG4s
IEdMdWludCAqYnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5lcmF0
ZU1pcG1hcCAoR0xlbnVtIHRhcmdldCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuUmVuZGVyYnVmZmVycyAoR0xzaXplaSBuLCBHTHVp
bnQgKnJlbmRlcmJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuVGV4
dHVyZXMgKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0
eXBlLCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QWN0
aXZlVW5pZm9ybSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFt
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRBdHRhY2hlZFNoYWRlcnMgKEdM
dWludCBwcm9ncmFtLCBHTHNpemVpIG1heENvdW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpz
aGFkZXJzKTsKK0dMX0FQSUNBTEwgR0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRBdHRyaWJMb2NhdGlv
biAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRCb29sZWFudiAoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKmRhdGEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIEdM
ZW51bSBHTF9BUElFTlRSWSBnbEdldEVycm9yICh2b2lkKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldEZsb2F0diAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpkYXRhKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXJ2IChH
TGVudW0gcG5hbWUsIEdMaW50ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFByb2dyYW1pdiAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtSW5mb0xvZyAoR0x1
aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmlu
Zm9Mb2cpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJpdiAoR0x1aW50IHNoYWRlciwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldFNoYWRlckluZm9Mb2cgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVt
IHByZWNpc2lvbnR5cGUsIEdMaW50ICpyYW5nZSwgR0xpbnQgKnByZWNpc2lvbik7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJTb3VyY2UgKEdMdWludCBzaGFkZXIsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7CitHTF9BUElD
QUxMIGNvbnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIGdsR2V0U3RyaW5nIChHTGVudW0gbmFtZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhQYXJhbWV0ZXJmdiAoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRV
bmlmb3JtZnYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1z
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1pdiAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgR0xpbnQg
R0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBjb25zdCBH
TGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0
cmliZnYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliaXYgKEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgdm9pZCAqKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSGludCAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJ
RU5UUlkgZ2xJc0J1ZmZlciAoR0x1aW50IGJ1ZmZlcik7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBH
TF9BUElFTlRSWSBnbElzRW5hYmxlZCAoR0xlbnVtIGNhcCk7CitHTF9BUElDQUxMIEdMYm9vbGVh
biBHTF9BUElFTlRSWSBnbElzRnJhbWVidWZmZXIgKEdMdWludCBmcmFtZWJ1ZmZlcik7CitHTF9B
UElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0p
OworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1JlbmRlcmJ1ZmZlciAoR0x1
aW50IHJlbmRlcmJ1ZmZlcik7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElz
U2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZ
IGdsSXNUZXh0dXJlIChHTHVpbnQgdGV4dHVyZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xMaW5lV2lkdGggKEdMZmxvYXQgd2lkdGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsTGlua1Byb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFBpeGVsU3RvcmVpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBvbHlnb25PZmZzZXQgKEdMZmxvYXQgZmFjdG9yLCBH
TGZsb2F0IHVuaXRzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlYWRQaXhlbHMg
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFJlbGVhc2VTaGFkZXJDb21waWxlciAodm9pZCk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFNhbXBsZUNvdmVyYWdlIChHTGZsb2F0IHZhbHVlLCBHTGJv
b2xlYW4gaW52ZXJ0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNjaXNzb3IgKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFNoYWRlckJpbmFyeSAoR0xzaXplaSBjb3VudCwgY29uc3Qg
R0x1aW50ICpzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnks
IEdMc2l6ZWkgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNoYWRlclNv
dXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25zdCpz
dHJpbmcsIGNvbnN0IEdMaW50ICpsZW5ndGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsU3RlbmNpbEZ1bmMgKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUgKEdMZW51bSBm
YWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFzayAoR0x1aW50IG1hc2spOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSAoR0xlbnVtIGZhY2UsIEdMdWlu
dCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcCAoR0xlbnVt
IGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIHNmYWlsLCBH
TGVudW0gZHBmYWlsLCBHTGVudW0gZHBwYXNzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5h
bGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4
UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcmkgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xU
ZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsVW5pZm9ybTFmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWZ2IChHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybTFpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xVbmlmb3JtMmYgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0yZnYgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xVbmlmb3JtMmkgKEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJpdiAoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2YgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZs
b2F0IHYxLCBHTGZsb2F0IHYyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZv
cm0zZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2kgKEdMaW50IGxvY2F0
aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFVuaWZvcm0zaXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRm
IChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xm
bG9hdCB2Myk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtNGZ2IChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpIChHTGludCBsb2NhdGlvbiwgR0xpbnQg
djAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybTRpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0
cml4MmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VW5pZm9ybU1hdHJpeDNmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFVuaWZvcm1NYXRyaXg0ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWYWxpZGF0ZVByb2dyYW0gKEdMdWludCBwcm9ncmFtKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjFmIChHTHVpbnQgaW5k
ZXgsIEdMZmxvYXQgeCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRy
aWIxZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIyZiAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIyZnYg
KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xWZXJ0ZXhBdHRyaWIzZiAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJp
YjNmdiAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjRmIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xm
bG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xWZXJ0ZXhBdHRyaWI0ZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQg
aW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xz
aXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVmlld3BvcnQgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0VTX1ZFUlNJT05fMl8wICovCiAKLS8q
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotICogVG9rZW4gZGVmaW5pdGlvbnMKLSAqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0q
LwotCi0vKiBPcGVuR0wgRVMgY29yZSB2ZXJzaW9ucyAqLwotI2RlZmluZSBHTF9FU19WRVJTSU9O
XzNfMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQotI2RlZmluZSBHTF9FU19WRVJT
SU9OXzJfMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQotCi0vKiBPcGVuR0wgRVMg
Mi4wICovCi0KLS8qIENsZWFyQnVmZmVyTWFzayAqLwotI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJf
QklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAotI2RlZmluZSBHTF9T
VEVOQ0lMX0JVRkZFUl9CSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDQwMAot
I2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgwMDAwNDAwMAotCi0vKiBCb29sZWFuICovCi0jZGVmaW5lIEdMX0ZBTFNFICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCi0jZGVmaW5lIEdMX1RSVUUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCi0KLS8qIEJlZ2luTW9kZSAqLwotI2Rl
ZmluZSBHTF9QT0lOVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw
MDAwCi0jZGVmaW5lIEdMX0xJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDAwMDEKLSNkZWZpbmUgR0xfTElORV9MT09QICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MDAwMgotI2RlZmluZSBHTF9MSU5FX1NUUklQICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwMDAzCi0jZGVmaW5lIEdMX1RSSUFOR0xFUyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDQKLSNkZWZpbmUgR0xfVFJJQU5HTEVf
U1RSSVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNQotI2RlZmluZSBHTF9U
UklBTkdMRV9GQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA2Ci0KLS8q
IEJsZW5kaW5nRmFjdG9yRGVzdCAqLwotI2RlZmluZSBHTF9aRVJPICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMAotI2RlZmluZSBHTF9PTkUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMQotI2RlZmluZSBHTF9TUkNfQ09MT1IgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzAwCi0jZGVmaW5lIEdMX09ORV9NSU5V
U19TUkNfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDEKLSNkZWZpbmUgR0xf
U1JDX0FMUEhBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMgotI2Rl
ZmluZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw
MzAzCi0jZGVmaW5lIEdMX0RTVF9BTFBIQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDAzMDQKLSNkZWZpbmUgR0xfT05FX01JTlVTX0RTVF9BTFBIQSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MDMwNQotCi0vKiBCbGVuZGluZ0ZhY3RvclNyYyAqLwotLyogICAgICBH
TF9aRVJPICovCi0vKiAgICAgIEdMX09ORSAqLwotI2RlZmluZSBHTF9EU1RfQ09MT1IgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzA2Ci0jZGVmaW5lIEdMX09ORV9NSU5V
U19EU1RfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDcKLSNkZWZpbmUgR0xf
U1JDX0FMUEhBX1NBVFVSQVRFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwOAotLyog
ICAgICBHTF9TUkNfQUxQSEEgKi8KLS8qICAgICAgR0xfT05FX01JTlVTX1NSQ19BTFBIQSAqLwot
LyogICAgICBHTF9EU1RfQUxQSEEgKi8KLS8qICAgICAgR0xfT05FX01JTlVTX0RTVF9BTFBIQSAq
LwotCi0vKiBCbGVuZEVxdWF0aW9uU2VwYXJhdGUgKi8KLSNkZWZpbmUgR0xfRlVOQ19BREQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNgotI2RlZmluZSBHTF9CTEVO
RF9FUVVBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA5Ci0jZGVmaW5l
IEdMX0JMRU5EX0VRVUFUSU9OX1JHQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDkg
ICAgLyogc2FtZSBhcyBCTEVORF9FUVVBVElPTiAqLwotI2RlZmluZSBHTF9CTEVORF9FUVVBVElP
Tl9BTFBIQSAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODNECi0KLS8qIEJsZW5kU3VidHJh
Y3QgKi8KLSNkZWZpbmUgR0xfRlVOQ19TVUJUUkFDVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODAwQQotI2RlZmluZSBHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4MDBCCi0KLS8qIFNlcGFyYXRlIEJsZW5kIEZ1bmN0aW9ucyAqLwot
I2RlZmluZSBHTF9CTEVORF9EU1RfUkdCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4MEM4Ci0jZGVmaW5lIEdMX0JMRU5EX1NSQ19SR0IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDgwQzkKLSNkZWZpbmUgR0xfQkxFTkRfRFNUX0FMUEhBICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODBDQQotI2RlZmluZSBHTF9CTEVORF9TUkNfQUxQSEEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MENCCi0jZGVmaW5lIEdMX0NPTlNUQU5UX0NPTE9S
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDEKLSNkZWZpbmUgR0xfT05FX01J
TlVTX0NPTlNUQU5UX0NPTE9SICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMgotI2RlZmluZSBH
TF9DT05TVEFOVF9BTFBIQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDAzCi0j
ZGVmaW5lIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAgICAgICAgICAgICAgICAgICAgICAw
eDgwMDQKLSNkZWZpbmUgR0xfQkxFTkRfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODAwNQotCi0vKiBCdWZmZXIgT2JqZWN0cyAqLwotI2RlZmluZSBHTF9BUlJBWV9C
VUZGRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODkyCi0jZGVmaW5lIEdM
X0VMRU1FTlRfQVJSQVlfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4OTMKLSNk
ZWZpbmUgR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODg5NAotI2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICAg
ICAgICAgMHg4ODk1Ci0KLSNkZWZpbmUgR0xfU1RSRUFNX0RSQVcgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODhFMAotI2RlZmluZSBHTF9TVEFUSUNfRFJBVyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEU0Ci0jZGVmaW5lIEdMX0RZTkFNSUNfRFJBVyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4RTgKLQotI2RlZmluZSBHTF9CVUZG
RVJfU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NzY0Ci0jZGVmaW5l
IEdMX0JVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3NjUK
LQotI2RlZmluZSBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4NjI2Ci0KLS8qIEN1bGxGYWNlTW9kZSAqLwotI2RlZmluZSBHTF9GUk9OVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDA0Ci0jZGVmaW5lIEdMX0JBQ0sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDUKLSNkZWZpbmUg
R0xfRlJPTlRfQU5EX0JBQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwOAot
Ci0vKiBEZXB0aEZ1bmN0aW9uICovCi0vKiAgICAgIEdMX05FVkVSICovCi0vKiAgICAgIEdMX0xF
U1MgKi8KLS8qICAgICAgR0xfRVFVQUwgKi8KLS8qICAgICAgR0xfTEVRVUFMICovCi0vKiAgICAg
IEdMX0dSRUFURVIgKi8KLS8qICAgICAgR0xfTk9URVFVQUwgKi8KLS8qICAgICAgR0xfR0VRVUFM
ICovCi0vKiAgICAgIEdMX0FMV0FZUyAqLwotCi0vKiBFbmFibGVDYXAgKi8KLSNkZWZpbmUgR0xf
VEVYVFVSRV8yRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MERFMQotI2Rl
ZmluZSBHTF9DVUxMX0ZBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw
QjQ0Ci0jZGVmaW5lIEdMX0JMRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDBCRTIKLSNkZWZpbmUgR0xfRElUSEVSICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MEJEMAotI2RlZmluZSBHTF9TVEVOQ0lMX1RFU1QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwQjkwCi0jZGVmaW5lIEdMX0RFUFRIX1RFU1QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCNzEKLSNkZWZpbmUgR0xfU0NJU1NPUl9U
RVNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEMxMQotI2RlZmluZSBHTF9Q
T0xZR09OX09GRlNFVF9GSUxMICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDM3Ci0jZGVm
aW5lIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSAgICAgICAgICAgICAgICAgICAgICAweDgw
OUUKLSNkZWZpbmUgR0xfU0FNUExFX0NPVkVSQUdFICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODBBMAotCi0vKiBFcnJvckNvZGUgKi8KLSNkZWZpbmUgR0xfTk9fRVJST1IgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKLSNkZWZpbmUgR0xfSU5WQUxJRF9FTlVN
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDUwMAotI2RlZmluZSBHTF9JTlZB
TElEX1ZBTFVFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNTAxCi0jZGVmaW5l
IEdMX0lOVkFMSURfT1BFUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA1MDIK
LSNkZWZpbmUgR0xfT1VUX09GX01FTU9SWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MDUwNQotCi0vKiBGcm9udEZhY2VEaXJlY3Rpb24gKi8KLSNkZWZpbmUgR0xfQ1cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDkwMAotI2RlZmluZSBHTF9D
Q1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwOTAxCi0KLS8q
IEdldFBOYW1lICovCi0jZGVmaW5lIEdMX0xJTkVfV0lEVEggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDBCMjEKLSNkZWZpbmUgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdF
ICAgICAgICAgICAgICAgICAgICAgIDB4ODQ2RAotI2RlZmluZSBHTF9BTElBU0VEX0xJTkVfV0lE
VEhfUkFOR0UgICAgICAgICAgICAgICAgICAgICAgMHg4NDZFCi0jZGVmaW5lIEdMX0NVTExfRkFD
RV9NT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCNDUKLSNkZWZpbmUgR0xf
RlJPTlRfRkFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEI0NgotI2Rl
ZmluZSBHTF9ERVBUSF9SQU5HRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw
QjcwCi0jZGVmaW5lIEdMX0RFUFRIX1dSSVRFTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDBCNzIKLSNkZWZpbmUgR0xfREVQVEhfQ0xFQVJfVkFMVUUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MEI3MwotI2RlZmluZSBHTF9ERVBUSF9GVU5DICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwQjc0Ci0jZGVmaW5lIEdMX1NURU5DSUxfQ0xFQVJfVkFM
VUUgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCOTEKLSNkZWZpbmUgR0xfU1RFTkNJTF9G
VU5DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEI5MgotI2RlZmluZSBHTF9T
VEVOQ0lMX0ZBSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQjk0Ci0jZGVm
aW5lIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMICAgICAgICAgICAgICAgICAgICAgICAweDBC
OTUKLSNkZWZpbmUgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgICAgICAgICAgICAgICAgICAg
ICAgIDB4MEI5NgotI2RlZmluZSBHTF9TVEVOQ0lMX1JFRiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwQjk3Ci0jZGVmaW5lIEdMX1NURU5DSUxfVkFMVUVfTUFTSyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDBCOTMKLSNkZWZpbmUgR0xfU1RFTkNJTF9XUklURU1BU0sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEI5OAotI2RlZmluZSBHTF9TVEVOQ0lMX0JB
Q0tfRlVOQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODAwCi0jZGVmaW5lIEdMX1NU
RU5DSUxfQkFDS19GQUlMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MDEKLSNkZWZp
bmUgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCAgICAgICAgICAgICAgICAgIDB4ODgw
MgotI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTICAgICAgICAgICAgICAg
ICAgMHg4ODAzCi0jZGVmaW5lIEdMX1NURU5DSUxfQkFDS19SRUYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhDQTMKLSNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sgICAg
ICAgICAgICAgICAgICAgICAgIDB4OENBNAotI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfV1JJVEVN
QVNLICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0E1Ci0jZGVmaW5lIEdMX1ZJRVdQT1JUICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCQTIKLSNkZWZpbmUgR0xfU0NJ
U1NPUl9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEMxMAotLyogICAg
ICBHTF9TQ0lTU09SX1RFU1QgKi8KLSNkZWZpbmUgR0xfQ09MT1JfQ0xFQVJfVkFMVUUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MEMyMgotI2RlZmluZSBHTF9DT0xPUl9XUklURU1BU0sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQzIzCi0jZGVmaW5lIEdMX1VOUEFDS19B
TElHTk1FTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDRjUKLSNkZWZpbmUgR0xf
UEFDS19BTElHTk1FTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQwNQotI2Rl
ZmluZSBHTF9NQVhfVEVYVFVSRV9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw
RDMzCi0jZGVmaW5lIEdMX01BWF9WSUVXUE9SVF9ESU1TICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDBEM0EKLSNkZWZpbmUgR0xfU1VCUElYRUxfQklUUyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MEQ1MAotI2RlZmluZSBHTF9SRURfQklUUyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgwRDUyCi0jZGVmaW5lIEdMX0dSRUVOX0JJVFMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBENTMKLSNkZWZpbmUgR0xfQkxVRV9CSVRT
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQ1NAotI2RlZmluZSBHTF9B
TFBIQV9CSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRDU1Ci0jZGVm
aW5lIEdMX0RFUFRIX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBE
NTYKLSNkZWZpbmUgR0xfU1RFTkNJTF9CSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MEQ1NwotI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9VTklUUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgyQTAwCi0vKiAgICAgIEdMX1BPTFlHT05fT0ZGU0VUX0ZJTEwgKi8KLSNk
ZWZpbmUgR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODAzOAotI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdfMkQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MDY5Ci0jZGVmaW5lIEdMX1NBTVBMRV9CVUZGRVJTICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgwQTgKLSNkZWZpbmUgR0xfU0FNUExFUyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODBBOQotI2RlZmluZSBHTF9TQU1QTEVfQ09WRVJBR0Vf
VkFMVUUgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MEFBCi0jZGVmaW5lIEdMX1NBTVBMRV9D
T1ZFUkFHRV9JTlZFUlQgICAgICAgICAgICAgICAgICAgICAgICAweDgwQUIKLQotLyogR2V0VGV4
dHVyZVBhcmFtZXRlciAqLwotLyogICAgICBHTF9URVhUVVJFX01BR19GSUxURVIgKi8KLS8qICAg
ICAgR0xfVEVYVFVSRV9NSU5fRklMVEVSICovCi0vKiAgICAgIEdMX1RFWFRVUkVfV1JBUF9TICov
Ci0vKiAgICAgIEdMX1RFWFRVUkVfV1JBUF9UICovCi0KLSNkZWZpbmUgR0xfTlVNX0NPTVBSRVNT
RURfVEVYVFVSRV9GT1JNQVRTICAgICAgICAgICAgICAgIDB4ODZBMgotI2RlZmluZSBHTF9DT01Q
UkVTU0VEX1RFWFRVUkVfRk9STUFUUyAgICAgICAgICAgICAgICAgICAgMHg4NkEzCi0KLS8qIEhp
bnRNb2RlICovCi0jZGVmaW5lIEdMX0RPTlRfQ0FSRSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDExMDAKLSNkZWZpbmUgR0xfRkFTVEVTVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MTEwMQotI2RlZmluZSBHTF9OSUNFU1QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMTAyCi0KLS8qIEhpbnRUYXJnZXQgKi8KLSNk
ZWZpbmUgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODE5MgotCi0vKiBEYXRhVHlwZSAqLwotI2RlZmluZSBHTF9CWVRFICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHgxNDAwCi0jZGVmaW5lIEdMX1VOU0lHTkVEX0JZVEUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDEKLSNkZWZpbmUgR0xfU0hPUlQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQwMgotI2RlZmluZSBH
TF9VTlNJR05FRF9TSE9SVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNDAzCi0j
ZGVmaW5lIEdMX0lOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDE0MDQKLSNkZWZpbmUgR0xfVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MTQwNQotI2RlZmluZSBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgxNDA2Ci0jZGVmaW5lIEdMX0ZJWEVEICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDE0MEMKLQotLyogUGl4ZWxGb3JtYXQgKi8KLSNkZWZp
bmUgR0xfREVQVEhfQ09NUE9ORU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTkw
MgotI2RlZmluZSBHTF9BTFBIQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHgxOTA2Ci0jZGVmaW5lIEdMX1JHQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDE5MDcKLSNkZWZpbmUgR0xfUkdCQSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MTkwOAotI2RlZmluZSBHTF9MVU1JTkFOQ0UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTA5Ci0jZGVmaW5lIEdMX0xVTUlOQU5DRV9B
TFBIQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MEEKLQotLyogUGl4ZWxUeXBl
ICovCi0vKiAgICAgIEdMX1VOU0lHTkVEX0JZVEUgKi8KLSNkZWZpbmUgR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAzMwotI2RlZmluZSBHTF9VTlNJ
R05FRF9TSE9SVF81XzVfNV8xICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDM0Ci0jZGVmaW5l
IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81ICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNjMK
LQotLyogU2hhZGVycyAqLwotI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4QjMwCi0jZGVmaW5lIEdMX1ZFUlRFWF9TSEFERVIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCMzEKLSNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9B
VFRSSUJTICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODg2OQotI2RlZmluZSBHTF9NQVhf
VkVSVEVYX1VOSUZPUk1fVkVDVE9SUyAgICAgICAgICAgICAgICAgICAgMHg4REZCCi0jZGVmaW5l
IEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhERkMK
LSNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgICAgICAgICAgICAg
IDB4OEI0RAotI2RlZmluZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgICAgICAg
ICAgICAgICAgMHg4QjRDCi0jZGVmaW5lIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTICAgICAg
ICAgICAgICAgICAgICAgICAweDg4NzIKLSNkZWZpbmUgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
VkVDVE9SUyAgICAgICAgICAgICAgICAgIDB4OERGRAotI2RlZmluZSBHTF9TSEFERVJfVFlQRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjRGCi0jZGVmaW5lIEdMX0RFTEVU
RV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCODAKLSNkZWZpbmUg
R0xfTElOS19TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI4Mgot
I2RlZmluZSBHTF9WQUxJREFURV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4QjgzCi0jZGVmaW5lIEdMX0FUVEFDSEVEX1NIQURFUlMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhCODUKLSNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1TICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OEI4NgotI2RlZmluZSBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVO
R1RIICAgICAgICAgICAgICAgICAgICAgMHg4Qjg3Ci0jZGVmaW5lIEdMX0FDVElWRV9BVFRSSUJV
VEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCODkKLSNkZWZpbmUgR0xfQUNUSVZF
X0FUVFJJQlVURV9NQVhfTEVOR1RIICAgICAgICAgICAgICAgICAgIDB4OEI4QQotI2RlZmluZSBH
TF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgMHg4QjhDCi0j
ZGVmaW5lIEdMX0NVUlJFTlRfUFJPR1JBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhCOEQKLQotLyogU3RlbmNpbEZ1bmN0aW9uICovCi0jZGVmaW5lIEdMX05FVkVSICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAKLSNkZWZpbmUgR0xfTEVTUyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMQotI2RlZmluZSBH
TF9FUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAyCi0j
ZGVmaW5lIEdMX0xFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDAyMDMKLSNkZWZpbmUgR0xfR1JFQVRFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MDIwNAotI2RlZmluZSBHTF9OT1RFUVVBTCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwMjA1Ci0jZGVmaW5lIEdMX0dFUVVBTCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDAyMDYKLSNkZWZpbmUgR0xfQUxXQVlTICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwNwotCi0vKiBTdGVuY2lsT3AgKi8K
LS8qICAgICAgR0xfWkVSTyAqLwotI2RlZmluZSBHTF9LRUVQICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHgxRTAwCi0jZGVmaW5lIEdMX1JFUExBQ0UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFFMDEKLSNkZWZpbmUgR0xfSU5DUiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUUwMgotI2RlZmluZSBHTF9E
RUNSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRTAzCi0jZGVm
aW5lIEdMX0lOVkVSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE1
MEEKLSNkZWZpbmUgR0xfSU5DUl9XUkFQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODUwNwotI2RlZmluZSBHTF9ERUNSX1dSQVAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4NTA4Ci0KLS8qIFN0cmluZ05hbWUgKi8KLSNkZWZpbmUgR0xfVkVORE9S
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUYwMAotI2RlZmluZSBH
TF9SRU5ERVJFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRjAxCi0j
ZGVmaW5lIEdMX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDFGMDIKLSNkZWZpbmUgR0xfRVhURU5TSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MUYwMwotCi0vKiBUZXh0dXJlTWFnRmlsdGVyICovCi0jZGVmaW5lIEdMX05FQVJF
U1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2MDAKLSNkZWZpbmUg
R0xfTElORUFSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYwMQot
Ci0vKiBUZXh0dXJlTWluRmlsdGVyICovCi0vKiAgICAgIEdMX05FQVJFU1QgKi8KLS8qICAgICAg
R0xfTElORUFSICovCi0jZGVmaW5lIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QgICAgICAgICAg
ICAgICAgICAgICAgICAweDI3MDAKLSNkZWZpbmUgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4MjcwMQotI2RlZmluZSBHTF9ORUFSRVNUX01JUE1BUF9M
SU5FQVIgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNzAyCi0jZGVmaW5lIEdMX0xJTkVBUl9N
SVBNQVBfTElORUFSICAgICAgICAgICAgICAgICAgICAgICAgICAweDI3MDMKLQotLyogVGV4dHVy
ZVBhcmFtZXRlck5hbWUgKi8KLSNkZWZpbmUgR0xfVEVYVFVSRV9NQUdfRklMVEVSICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MjgwMAotI2RlZmluZSBHTF9URVhUVVJFX01JTl9GSUxURVIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyODAxCi0jZGVmaW5lIEdMX1RFWFRVUkVfV1JB
UF9TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI4MDIKLSNkZWZpbmUgR0xfVEVY
VFVSRV9XUkFQX1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjgwMwotCi0vKiBU
ZXh0dXJlVGFyZ2V0ICovCi0vKiAgICAgIEdMX1RFWFRVUkVfMkQgKi8KLSNkZWZpbmUgR0xfVEVY
VFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcwMgotCi0jZGVm
aW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1
MTMKLSNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQICAgICAgICAgICAgICAgICAg
ICAgIDB4ODUxNAotI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggICAgICAg
ICAgICAgICAgICAgMHg4NTE1Ci0jZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WCAgICAgICAgICAgICAgICAgICAweDg1MTYKLSNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9Q
T1NJVElWRV9ZICAgICAgICAgICAgICAgICAgIDB4ODUxNwotI2RlZmluZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1kgICAgICAgICAgICAgICAgICAgMHg4NTE4Ci0jZGVmaW5lIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAgICAgICAgICAgICAgICAgICAweDg1MTkKLSNkZWZp
bmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aICAgICAgICAgICAgICAgICAgIDB4ODUx
QQotI2RlZmluZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICAgICAgICAgICAgICAgICAg
ICAgMHg4NTFDCi0KLS8qIFRleHR1cmVVbml0ICovCi0jZGVmaW5lIEdMX1RFWFRVUkUwICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0QzAKLSNkZWZpbmUgR0xfVEVYVFVS
RTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRDMQotI2RlZmluZSBH
TF9URVhUVVJFMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEMyCi0j
ZGVmaW5lIEdMX1RFWFRVUkUzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDg0QzMKLSNkZWZpbmUgR0xfVEVYVFVSRTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODRDNAotI2RlZmluZSBHTF9URVhUVVJFNSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4NEM1Ci0jZGVmaW5lIEdMX1RFWFRVUkU2ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDg0QzYKLSNkZWZpbmUgR0xfVEVYVFVSRTcgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRDNwotI2RlZmluZSBHTF9URVhUVVJF
OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEM4Ci0jZGVmaW5lIEdM
X1RFWFRVUkU5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0QzkKLSNk
ZWZpbmUgR0xfVEVYVFVSRTEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODRDQQotI2RlZmluZSBHTF9URVhUVVJFMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4NENCCi0jZGVmaW5lIEdMX1RFWFRVUkUxMiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDg0Q0MKLSNkZWZpbmUgR0xfVEVYVFVSRTEzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODRDRAotI2RlZmluZSBHTF9URVhUVVJFMTQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NENFCi0jZGVmaW5lIEdMX1RFWFRVUkUx
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0Q0YKLSNkZWZpbmUgR0xf
VEVYVFVSRTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODREMAotI2Rl
ZmluZSBHTF9URVhUVVJFMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
NEQxCi0jZGVmaW5lIEdMX1RFWFRVUkUxOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDg0RDIKLSNkZWZpbmUgR0xfVEVYVFVSRTE5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODREMwotI2RlZmluZSBHTF9URVhUVVJFMjAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4NEQ0Ci0jZGVmaW5lIEdMX1RFWFRVUkUyMSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0RDUKLSNkZWZpbmUgR0xfVEVYVFVSRTIy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRENgotI2RlZmluZSBHTF9U
RVhUVVJFMjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEQ3Ci0jZGVm
aW5lIEdMX1RFWFRVUkUyNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0
RDgKLSNkZWZpbmUgR0xfVEVYVFVSRTI1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODREOQotI2RlZmluZSBHTF9URVhUVVJFMjYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4NERBCi0jZGVmaW5lIEdMX1RFWFRVUkUyNyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg0REIKLSNkZWZpbmUgR0xfVEVYVFVSRTI4ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODREQwotI2RlZmluZSBHTF9URVhUVVJFMjkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NERECi0jZGVmaW5lIEdMX1RF
WFRVUkUzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg0REUKLSNkZWZp
bmUgR0xfVEVYVFVSRTMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRE
RgotI2RlZmluZSBHTF9BQ1RJVkVfVEVYVFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4NEUwCi0KLS8qIFRleHR1cmVXcmFwTW9kZSAqLwotI2RlZmluZSBHTF9SRVBFQVQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyOTAxCi0jZGVmaW5lIEdMX0NM
QU1QX1RPX0VER0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxMkYKLSNkZWZp
bmUgR0xfTUlSUk9SRURfUkVQRUFUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODM3
MAotCi0vKiBVbmlmb3JtIFR5cGVzICovCi0jZGVmaW5lIEdMX0ZMT0FUX1ZFQzIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCNTAKLSNkZWZpbmUgR0xfRkxPQVRfVkVDMyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1MQotI2RlZmluZSBHTF9GTE9B
VF9WRUM0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjUyCi0jZGVmaW5l
IEdMX0lOVF9WRUMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCNTMK
LSNkZWZpbmUgR0xfSU5UX1ZFQzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OEI1NAotI2RlZmluZSBHTF9JTlRfVkVDNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4QjU1Ci0jZGVmaW5lIEdMX0JPT0wgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDhCNTYKLSNkZWZpbmUgR0xfQk9PTF9WRUMyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1NwotI2RlZmluZSBHTF9CT09MX1ZFQzMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjU4Ci0jZGVmaW5lIEdMX0JPT0xf
VkVDNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCNTkKLSNkZWZpbmUg
R0xfRkxPQVRfTUFUMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1QQot
I2RlZmluZSBHTF9GTE9BVF9NQVQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4QjVCCi0jZGVmaW5lIEdMX0ZMT0FUX01BVDQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhCNUMKLSNkZWZpbmUgR0xfU0FNUExFUl8yRCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OEI1RQotI2RlZmluZSBHTF9TQU1QTEVSX0NVQkUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjYwCi0KLS8qIFZlcnRleCBBcnJheXMgKi8KLSNk
ZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEICAgICAgICAgICAgICAgICAgIDB4
ODYyMgotI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUgICAgICAgICAgICAgICAg
ICAgICAgMHg4NjIzCi0jZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFICAgICAg
ICAgICAgICAgICAgICAweDg2MjQKLSNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBF
ICAgICAgICAgICAgICAgICAgICAgIDB4ODYyNQotI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX05PUk1BTElaRUQgICAgICAgICAgICAgICAgMHg4ODZBCi0jZGVmaW5lIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfUE9JTlRFUiAgICAgICAgICAgICAgICAgICAweDg2NDUKLSNkZWZpbmUgR0xf
VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyAgICAgICAgICAgIDB4ODg5RgotCi0v
KiBSZWFkIEZvcm1hdCAqLwotI2RlZmluZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZ
UEUgICAgICAgICAgICAgICAgMHg4QjlBCi0jZGVmaW5lIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9S
X1JFQURfRk9STUFUICAgICAgICAgICAgICAweDhCOUIKLQotLyogU2hhZGVyIFNvdXJjZSAqLwot
I2RlZmluZSBHTF9DT01QSUxFX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4QjgxCi0jZGVmaW5lIEdMX0lORk9fTE9HX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhCODQKLSNkZWZpbmUgR0xfU0hBREVSX1NPVVJDRV9MRU5HVEggICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OEI4OAotI2RlZmluZSBHTF9TSEFERVJfQ09NUElMRVIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4REZBCi0KLS8qIFNoYWRlciBCaW5hcnkgKi8KLSNk
ZWZpbmUgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OERGOAotI2RlZmluZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgICAgICAgICAg
ICAgICAgMHg4REY5Ci0KLS8qIFNoYWRlciBQcmVjaXNpb24tU3BlY2lmaWVkIFR5cGVzICovCi0j
ZGVmaW5lIEdMX0xPV19GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhERjAKLSNkZWZpbmUgR0xfTUVESVVNX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OERGMQotI2RlZmluZSBHTF9ISUdIX0ZMT0FUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4REYyCi0jZGVmaW5lIEdMX0xPV19JTlQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhERjMKLSNkZWZpbmUgR0xfTUVESVVNX0lOVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OERGNAotI2RlZmluZSBHTF9ISUdIX0lO
VCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4REY1Ci0KLS8qIEZyYW1l
YnVmZmVyIE9iamVjdC4gKi8KLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEQ0MAotI2RlZmluZSBHTF9SRU5ERVJCVUZGRVIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDQxCi0KLSNkZWZpbmUgR0xfUkdCQTQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODA1NgotI2RlZmluZSBHTF9S
R0I1X0ExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU3Ci0jZGVm
aW5lIEdMX1JHQjU2NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhE
NjIKLSNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODFBNQotI2RlZmluZSBHTF9TVEVOQ0lMX0lOREVYOCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4RDQ4Ci0KLSNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1dJRFRIICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OEQ0MgotI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfSEVJ
R0hUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDQzCi0jZGVmaW5lIEdMX1JFTkRFUkJV
RkZFUl9JTlRFUk5BTF9GT1JNQVQgICAgICAgICAgICAgICAgICAweDhENDQKLSNkZWZpbmUgR0xf
UkVOREVSQlVGRkVSX1JFRF9TSVpFICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ1MAotI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSAgICAgICAgICAgICAgICAgICAgICAgMHg4
RDUxCi0jZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkUgICAgICAgICAgICAgICAgICAg
ICAgICAweDhENTIKLSNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgICAgICAgICAg
ICAgICAgICAgICAgIDB4OEQ1MwotI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRSAg
ICAgICAgICAgICAgICAgICAgICAgMHg4RDU0Ci0jZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TVEVO
Q0lMX1NJWkUgICAgICAgICAgICAgICAgICAgICAweDhENTUKLQotI2RlZmluZSBHTF9GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFICAgICAgICAgICAgMHg4Q0QwCi0jZGVmaW5lIEdM
X0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUgICAgICAgICAgICAweDhDRDEKLSNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMICAgICAgICAgIDB4
OENEMgotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBf
RkFDRSAgMHg4Q0QzCi0KLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4OENFMAotI2RlZmluZSBHTF9ERVBUSF9BVFRBQ0hNRU5UICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDAwCi0jZGVmaW5lIEdMX1NURU5DSUxfQVRUQUNI
TUVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhEMjAKLQotI2RlZmluZSBHTF9OT05F
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotCi0jZGVmaW5lIEdM
X0ZSQU1FQlVGRkVSX0NPTVBMRVRFICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRDUKLSNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UICAgICAgICAgICAgIDB4
OENENgotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVO
VCAgICAgMHg4Q0Q3Ci0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9O
UyAgICAgICAgICAgICAweDhDRDkKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQg
ICAgICAgICAgICAgICAgICAgICAgIDB4OENERAotCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0JJ
TkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDQTYKLSNkZWZpbmUgR0xfUkVOREVS
QlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENBNwotI2RlZmluZSBH
TF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEU4Ci0K
LSNkZWZpbmUgR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gICAgICAgICAgICAgICAg
IDB4MDUwNgotCi0vKiBPcGVuR0wgRVMgMy4wICovCi0KLSNkZWZpbmUgR0xfUkVBRF9CVUZGRVIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEMwMgotI2RlZmluZSBHTF9VTlBB
Q0tfUk9XX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQ0YyCi0jZGVmaW5l
IEdMX1VOUEFDS19TS0lQX1JPV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDRjMK
LSNkZWZpbmUgR0xfVU5QQUNLX1NLSVBfUElYRUxTICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MENGNAotI2RlZmluZSBHTF9QQUNLX1JPV19MRU5HVEggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHgwRDAyCi0jZGVmaW5lIEdMX1BBQ0tfU0tJUF9ST1dTICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDBEMDMKLSNkZWZpbmUgR0xfUEFDS19TS0lQX1BJWEVMUyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQwNAotI2RlZmluZSBHTF9DT0xPUiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxODAwCi0jZGVmaW5lIEdMX0RFUFRI
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDEKLSNkZWZpbmUg
R0xfU1RFTkNJTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgwMgot
I2RlZmluZSBHTF9SRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgxOTAzCi0jZGVmaW5lIEdMX1JHQjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDgwNTEKLSNkZWZpbmUgR0xfUkdCQTggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODA1OAotI2RlZmluZSBHTF9SR0IxMF9BMiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU5Ci0jZGVmaW5lIEdMX1RFWFRVUkVfQklORElO
R18zRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNkEKLSNkZWZpbmUgR0xfVU5QQUNL
X1NLSVBfSU1BR0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODA2RAotI2RlZmluZSBH
TF9VTlBBQ0tfSU1BR0VfSEVJR0hUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDZFCi0j
ZGVmaW5lIEdMX1RFWFRVUkVfM0QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgwNkYKLSNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1IgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODA3MgotI2RlZmluZSBHTF9NQVhfM0RfVEVYVFVSRV9TSVpFICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4MDczCi0jZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEw
X1JFViAgICAgICAgICAgICAgICAgICAweDgzNjgKLSNkZWZpbmUgR0xfTUFYX0VMRU1FTlRTX1ZF
UlRJQ0VTICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFOAotI2RlZmluZSBHTF9NQVhfRUxF
TUVOVFNfSU5ESUNFUyAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MEU5Ci0jZGVmaW5lIEdM
X1RFWFRVUkVfTUlOX0xPRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxM0EKLSNk
ZWZpbmUgR0xfVEVYVFVSRV9NQVhfTE9EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODEzQgotI2RlZmluZSBHTF9URVhUVVJFX0JBU0VfTEVWRUwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MTNDCi0jZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0xFVkVMICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgxM0QKLSNkZWZpbmUgR0xfTUlOICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNwotI2RlZmluZSBHTF9NQVggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4Ci0jZGVmaW5lIEdMX0RFUFRIX0NP
TVBPTkVOVDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgxQTYKLSNkZWZpbmUgR0xf
TUFYX1RFWFRVUkVfTE9EX0JJQVMgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGRAotI2Rl
ZmluZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERSAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
ODRDCi0jZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDg4NEQKLSNkZWZpbmUgR0xfQ1VSUkVOVF9RVUVSWSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODg2NQotI2RlZmluZSBHTF9RVUVSWV9SRVNVTFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4ODY2Ci0jZGVmaW5lIEdMX1FVRVJZX1JFU1VMVF9BVkFJ
TEFCTEUgICAgICAgICAgICAgICAgICAgICAgICAweDg4NjcKLSNkZWZpbmUgR0xfQlVGRkVSX01B
UFBFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODhCQwotI2RlZmluZSBHTF9C
VUZGRVJfTUFQX1BPSU5URVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEJECi0jZGVm
aW5lIEdMX1NUUkVBTV9SRUFEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4
RTEKLSNkZWZpbmUgR0xfU1RSRUFNX0NPUFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODhFMgotI2RlZmluZSBHTF9TVEFUSUNfUkVBRCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4OEU1Ci0jZGVmaW5lIEdMX1NUQVRJQ19DT1BZICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4RTYKLSNkZWZpbmUgR0xfRFlOQU1JQ19SRUFEICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODhFOQotI2RlZmluZSBHTF9EWU5BTUlDX0NP
UFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4OEVBCi0jZGVmaW5lIEdMX01B
WF9EUkFXX0JVRkZFUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjQKLSNkZWZp
bmUgR0xfRFJBV19CVUZGRVIwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgy
NQotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4ODI2Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDg4MjcKLSNkZWZpbmUgR0xfRFJBV19CVUZGRVIzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODgyOAotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODI5Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVS
NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MkEKLSNkZWZpbmUgR0xfRFJB
V19CVUZGRVI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyQgotI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODJD
Ci0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDg4MkQKLSNkZWZpbmUgR0xfRFJBV19CVUZGRVI5ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODgyRQotI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4ODJGCi0jZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzAKLSNkZWZpbmUgR0xfRFJBV19CVUZGRVIx
MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgzMQotI2RlZmluZSBHTF9EUkFX
X0JVRkZFUjEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODMyCi0jZGVmaW5l
IEdMX0RSQVdfQlVGRkVSMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MzMK
LSNkZWZpbmUgR0xfRFJBV19CVUZGRVIxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ODgzNAotI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTICAgICAg
ICAgICAgICAgMHg4QjQ5Ci0jZGVmaW5lIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRT
ICAgICAgICAgICAgICAgICAweDhCNEEKLSNkZWZpbmUgR0xfU0FNUExFUl8zRCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1RgotI2RlZmluZSBHTF9TQU1QTEVSXzJEX1NI
QURPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjYyCi0jZGVmaW5lIEdMX0ZSQUdN
RU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQgICAgICAgICAgICAgICAweDhCOEIKLSNkZWZpbmUg
R0xfUElYRUxfUEFDS19CVUZGRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODhFQgot
I2RlZmluZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4OEVDCi0jZGVmaW5lIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAg
ICAgICAgICAweDg4RUQKLSNkZWZpbmUgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HICAg
ICAgICAgICAgICAgICAgIDB4ODhFRgotI2RlZmluZSBHTF9GTE9BVF9NQVQyeDMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjY1Ci0jZGVmaW5lIEdMX0ZMT0FUX01BVDJ4NCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCNjYKLSNkZWZpbmUgR0xfRkxPQVRf
TUFUM3gyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEI2NwotI2RlZmluZSBH
TF9GTE9BVF9NQVQzeDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjY4Ci0j
ZGVmaW5lIEdMX0ZMT0FUX01BVDR4MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhCNjkKLSNkZWZpbmUgR0xfRkxPQVRfTUFUNHgzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OEI2QQotI2RlZmluZSBHTF9TUkdCICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4QzQwCi0jZGVmaW5lIEdMX1NSR0I4ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDhDNDEKLSNkZWZpbmUgR0xfU1JHQjhfQUxQSEE4ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEM0MwotI2RlZmluZSBHTF9DT01QQVJF
X1JFRl9UT19URVhUVVJFICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODRFCi0jZGVmaW5lIEdM
X01BSk9SX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMUIKLSNk
ZWZpbmUgR0xfTUlOT1JfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODIxQwotI2RlZmluZSBHTF9OVU1fRVhURU5TSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MjFECi0jZGVmaW5lIEdMX1JHQkEzMkYgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDg4MTQKLSNkZWZpbmUgR0xfUkdCMzJGICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODgxNQotI2RlZmluZSBHTF9SR0JBMTZGICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODFBCi0jZGVmaW5lIEdMX1JHQjE2RiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUIKLSNkZWZpbmUgR0xf
VkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSICAgICAgICAgICAgICAgICAgIDB4ODhGRAotI2Rl
ZmluZSBHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMgICAgICAgICAgICAgICAgICAgICAgMHg4
OEZGCi0jZGVmaW5lIEdMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVCAgICAgICAgICAgICAgICAg
ICAgICAweDg5MDQKLSNkZWZpbmUgR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUICAgICAgICAg
ICAgICAgICAgICAgIDB4ODkwNQotI2RlZmluZSBHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4QjRCCi0jZGVmaW5lIEdMX1RFWFRVUkVfMkRfQVJSQVkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDMUEKLSNkZWZpbmUgR0xfVEVYVFVSRV9C
SU5ESU5HXzJEX0FSUkFZICAgICAgICAgICAgICAgICAgICAgIDB4OEMxRAotI2RlZmluZSBHTF9S
MTFGX0cxMUZfQjEwRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzNBCi0jZGVm
aW5lIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYgICAgICAgICAgICAgICAgICAweDhD
M0IKLSNkZWZpbmUgR0xfUkdCOV9FNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OEMzRAotI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYgICAgICAgICAg
ICAgICAgICAgICAgMHg4QzNFCi0jZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5H
X01BWF9MRU5HVEggICAgICAgICAweDhDNzYKLSNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUl9NT0RFICAgICAgICAgICAgICAgIDB4OEM3RgotI2RlZmluZSBHTF9NQVhfVFJBTlNG
T1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMgICAgMHg4QzgwCi0jZGVmaW5lIEdMX1RS
QU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyAgICAgICAgICAgICAgICAgICAweDhDODMKLSNkZWZp
bmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVCAgICAgICAgICAgICAgIDB4OEM4
NAotI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUgICAgICAgICAgICAg
ICAgMHg4Qzg1Ci0jZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRU
RU4gICAgICAgICAweDhDODgKLSNkZWZpbmUgR0xfUkFTVEVSSVpFUl9ESVNDQVJEICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEM4OQorI2lmbmRlZiBHTF9FU19WRVJTSU9OXzNfMAorI2Rl
ZmluZSBHTF9FU19WRVJTSU9OXzNfMCAxCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdMaGFsZjsK
KyNkZWZpbmUgR0xfUkVBRF9CVUZGRVIgICAgICAgICAgICAgICAgICAgIDB4MEMwMgorI2RlZmlu
ZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSCAgICAgICAgICAgICAgMHgwQ0YyCisjZGVmaW5lIEdMX1VO
UEFDS19TS0lQX1JPV1MgICAgICAgICAgICAgICAweDBDRjMKKyNkZWZpbmUgR0xfVU5QQUNLX1NL
SVBfUElYRUxTICAgICAgICAgICAgIDB4MENGNAorI2RlZmluZSBHTF9QQUNLX1JPV19MRU5HVEgg
ICAgICAgICAgICAgICAgMHgwRDAyCisjZGVmaW5lIEdMX1BBQ0tfU0tJUF9ST1dTICAgICAgICAg
ICAgICAgICAweDBEMDMKKyNkZWZpbmUgR0xfUEFDS19TS0lQX1BJWEVMUyAgICAgICAgICAgICAg
IDB4MEQwNAorI2RlZmluZSBHTF9DT0xPUiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxODAw
CisjZGVmaW5lIEdMX0RFUFRIICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDEKKyNkZWZp
bmUgR0xfU1RFTkNJTCAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgwMgorI2RlZmluZSBHTF9S
RUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTAzCisjZGVmaW5lIEdMX1JHQjggICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDgwNTEKKyNkZWZpbmUgR0xfUkdCQTggICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODA1OAorI2RlZmluZSBHTF9SR0IxMF9BMiAgICAgICAgICAgICAg
ICAgICAgICAgMHg4MDU5CisjZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR18zRCAgICAgICAgICAg
ICAweDgwNkEKKyNkZWZpbmUgR0xfVU5QQUNLX1NLSVBfSU1BR0VTICAgICAgICAgICAgIDB4ODA2
RAorI2RlZmluZSBHTF9VTlBBQ0tfSU1BR0VfSEVJR0hUICAgICAgICAgICAgMHg4MDZFCisjZGVm
aW5lIEdMX1RFWFRVUkVfM0QgICAgICAgICAgICAgICAgICAgICAweDgwNkYKKyNkZWZpbmUgR0xf
VEVYVFVSRV9XUkFQX1IgICAgICAgICAgICAgICAgIDB4ODA3MgorI2RlZmluZSBHTF9NQVhfM0Rf
VEVYVFVSRV9TSVpFICAgICAgICAgICAgMHg4MDczCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8y
XzEwXzEwXzEwX1JFViAgICAweDgzNjgKKyNkZWZpbmUgR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VT
ICAgICAgICAgIDB4ODBFOAorI2RlZmluZSBHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUyAgICAgICAg
ICAgMHg4MEU5CisjZGVmaW5lIEdMX1RFWFRVUkVfTUlOX0xPRCAgICAgICAgICAgICAgICAweDgx
M0EKKyNkZWZpbmUgR0xfVEVYVFVSRV9NQVhfTE9EICAgICAgICAgICAgICAgIDB4ODEzQgorI2Rl
ZmluZSBHTF9URVhUVVJFX0JBU0VfTEVWRUwgICAgICAgICAgICAgMHg4MTNDCisjZGVmaW5lIEdM
X1RFWFRVUkVfTUFYX0xFVkVMICAgICAgICAgICAgICAweDgxM0QKKyNkZWZpbmUgR0xfTUlOICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNworI2RlZmluZSBHTF9NQVggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MDA4CisjZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVDI0ICAg
ICAgICAgICAgICAweDgxQTYKKyNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfTE9EX0JJQVMgICAgICAg
ICAgIDB4ODRGRAorI2RlZmluZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERSAgICAgICAgICAgMHg4
ODRDCisjZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DICAgICAgICAgICAweDg4NEQKKyNk
ZWZpbmUgR0xfQ1VSUkVOVF9RVUVSWSAgICAgICAgICAgICAgICAgIDB4ODg2NQorI2RlZmluZSBH
TF9RVUVSWV9SRVNVTFQgICAgICAgICAgICAgICAgICAgMHg4ODY2CisjZGVmaW5lIEdMX1FVRVJZ
X1JFU1VMVF9BVkFJTEFCTEUgICAgICAgICAweDg4NjcKKyNkZWZpbmUgR0xfQlVGRkVSX01BUFBF
RCAgICAgICAgICAgICAgICAgIDB4ODhCQworI2RlZmluZSBHTF9CVUZGRVJfTUFQX1BPSU5URVIg
ICAgICAgICAgICAgMHg4OEJECisjZGVmaW5lIEdMX1NUUkVBTV9SRUFEICAgICAgICAgICAgICAg
ICAgICAweDg4RTEKKyNkZWZpbmUgR0xfU1RSRUFNX0NPUFkgICAgICAgICAgICAgICAgICAgIDB4
ODhFMgorI2RlZmluZSBHTF9TVEFUSUNfUkVBRCAgICAgICAgICAgICAgICAgICAgMHg4OEU1Cisj
ZGVmaW5lIEdMX1NUQVRJQ19DT1BZICAgICAgICAgICAgICAgICAgICAweDg4RTYKKyNkZWZpbmUg
R0xfRFlOQU1JQ19SRUFEICAgICAgICAgICAgICAgICAgIDB4ODhFOQorI2RlZmluZSBHTF9EWU5B
TUlDX0NPUFkgICAgICAgICAgICAgICAgICAgMHg4OEVBCisjZGVmaW5lIEdMX01BWF9EUkFXX0JV
RkZFUlMgICAgICAgICAgICAgICAweDg4MjQKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIwICAgICAg
ICAgICAgICAgICAgIDB4ODgyNQorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEgICAgICAgICAgICAg
ICAgICAgMHg4ODI2CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMiAgICAgICAgICAgICAgICAgICAw
eDg4MjcKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIzICAgICAgICAgICAgICAgICAgIDB4ODgyOAor
I2RlZmluZSBHTF9EUkFXX0JVRkZFUjQgICAgICAgICAgICAgICAgICAgMHg4ODI5CisjZGVmaW5l
IEdMX0RSQVdfQlVGRkVSNSAgICAgICAgICAgICAgICAgICAweDg4MkEKKyNkZWZpbmUgR0xfRFJB
V19CVUZGRVI2ICAgICAgICAgICAgICAgICAgIDB4ODgyQgorI2RlZmluZSBHTF9EUkFXX0JVRkZF
UjcgICAgICAgICAgICAgICAgICAgMHg4ODJDCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSOCAgICAg
ICAgICAgICAgICAgICAweDg4MkQKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI5ICAgICAgICAgICAg
ICAgICAgIDB4ODgyRQorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjEwICAgICAgICAgICAgICAgICAg
MHg4ODJGCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTEgICAgICAgICAgICAgICAgICAweDg4MzAK
KyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMiAgICAgICAgICAgICAgICAgIDB4ODgzMQorI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjEzICAgICAgICAgICAgICAgICAgMHg4ODMyCisjZGVmaW5lIEdMX0RS
QVdfQlVGRkVSMTQgICAgICAgICAgICAgICAgICAweDg4MzMKKyNkZWZpbmUgR0xfRFJBV19CVUZG
RVIxNSAgICAgICAgICAgICAgICAgIDB4ODgzNAorI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfVU5J
Rk9STV9DT01QT05FTlRTIDB4OEI0OQorI2RlZmluZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09N
UE9ORU5UUyAgMHg4QjRBCisjZGVmaW5lIEdMX1NBTVBMRVJfM0QgICAgICAgICAgICAgICAgICAg
ICAweDhCNUYKKyNkZWZpbmUgR0xfU0FNUExFUl8yRF9TSEFET1cgICAgICAgICAgICAgIDB4OEI2
MgorI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9ISU5UIDB4OEI4QgorI2Rl
ZmluZSBHTF9QSVhFTF9QQUNLX0JVRkZFUiAgICAgICAgICAgICAgMHg4OEVCCisjZGVmaW5lIEdM
X1BJWEVMX1VOUEFDS19CVUZGRVIgICAgICAgICAgICAweDg4RUMKKyNkZWZpbmUgR0xfUElYRUxf
UEFDS19CVUZGRVJfQklORElORyAgICAgIDB4ODhFRAorI2RlZmluZSBHTF9QSVhFTF9VTlBBQ0tf
QlVGRkVSX0JJTkRJTkcgICAgMHg4OEVGCisjZGVmaW5lIEdMX0ZMT0FUX01BVDJ4MyAgICAgICAg
ICAgICAgICAgICAweDhCNjUKKyNkZWZpbmUgR0xfRkxPQVRfTUFUMng0ICAgICAgICAgICAgICAg
ICAgIDB4OEI2NgorI2RlZmluZSBHTF9GTE9BVF9NQVQzeDIgICAgICAgICAgICAgICAgICAgMHg4
QjY3CisjZGVmaW5lIEdMX0ZMT0FUX01BVDN4NCAgICAgICAgICAgICAgICAgICAweDhCNjgKKyNk
ZWZpbmUgR0xfRkxPQVRfTUFUNHgyICAgICAgICAgICAgICAgICAgIDB4OEI2OQorI2RlZmluZSBH
TF9GTE9BVF9NQVQ0eDMgICAgICAgICAgICAgICAgICAgMHg4QjZBCisjZGVmaW5lIEdMX1NSR0Ig
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDNDAKKyNkZWZpbmUgR0xfU1JHQjggICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEM0MQorI2RlZmluZSBHTF9TUkdCOF9BTFBIQTggICAgICAg
ICAgICAgICAgICAgMHg4QzQzCisjZGVmaW5lIEdMX0NPTVBBUkVfUkVGX1RPX1RFWFRVUkUgICAg
ICAgICAweDg4NEUKKyNkZWZpbmUgR0xfTUFKT1JfVkVSU0lPTiAgICAgICAgICAgICAgICAgIDB4
ODIxQgorI2RlZmluZSBHTF9NSU5PUl9WRVJTSU9OICAgICAgICAgICAgICAgICAgMHg4MjFDCisj
ZGVmaW5lIEdMX05VTV9FWFRFTlNJT05TICAgICAgICAgICAgICAgICAweDgyMUQKKyNkZWZpbmUg
R0xfUkdCQTMyRiAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgxNAorI2RlZmluZSBHTF9SR0Iz
MkYgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODE1CisjZGVmaW5lIEdMX1JHQkExNkYgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4MUEKKyNkZWZpbmUgR0xfUkdCMTZGICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODgxQgorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVH
RVIgICAgMHg4OEZECisjZGVmaW5lIEdMX01BWF9BUlJBWV9URVhUVVJFX0xBWUVSUyAgICAgICAw
eDg4RkYKKyNkZWZpbmUgR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUICAgICAgIDB4ODkwNAor
I2RlZmluZSBHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQgICAgICAgMHg4OTA1CisjZGVmaW5l
IEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFMgICAgICAgICAweDhCNEIKKyNkZWZpbmUgR0xfVEVY
VFVSRV8yRF9BUlJBWSAgICAgICAgICAgICAgIDB4OEMxQQorI2RlZmluZSBHTF9URVhUVVJFX0JJ
TkRJTkdfMkRfQVJSQVkgICAgICAgMHg4QzFECisjZGVmaW5lIEdMX1IxMUZfRzExRl9CMTBGICAg
ICAgICAgICAgICAgICAweDhDM0EKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFG
X1JFViAgIDB4OEMzQgorI2RlZmluZSBHTF9SR0I5X0U1ICAgICAgICAgICAgICAgICAgICAgICAg
MHg4QzNECisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViAgICAgICAweDhDM0UK
KyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdfTUFYX0xFTkdUSCAweDhDNzYK
KyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFIDB4OEM3RgorI2RlZmlu
ZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNLX1NFUEFSQVRFX0NPTVBPTkVOVFMgMHg4QzgwCisj
ZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HUyAgICAweDhDODMKKyNkZWZpbmUg
R0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVCAweDhDODQKKyNkZWZpbmUgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFIDB4OEM4NQorI2RlZmluZSBHTF9UUkFOU0ZPUk1f
RkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOIDB4OEM4OAorI2RlZmluZSBHTF9SQVNURVJJWkVS
X0RJU0NBUkQgICAgICAgICAgICAgMHg4Qzg5CiAjZGVmaW5lIEdMX01BWF9UUkFOU0ZPUk1fRkVF
REJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUyAweDhDOEEKLSNkZWZpbmUgR0xfTUFYX1RSQU5T
Rk9STV9GRUVEQkFDS19TRVBBUkFURV9BVFRSSUJTICAgICAgIDB4OEM4QgotI2RlZmluZSBHTF9J
TlRFUkxFQVZFRF9BVFRSSUJTICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzhDCi0jZGVm
aW5lIEdMX1NFUEFSQVRFX0FUVFJJQlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhD
OEQKLSNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiAgICAgICAgICAgICAgICAg
ICAgIDB4OEM4RQotI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcg
ICAgICAgICAgICAgMHg4QzhGCi0jZGVmaW5lIEdMX1JHQkEzMlVJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDhENzAKLSNkZWZpbmUgR0xfUkdCMzJVSSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3MQotI2RlZmluZSBHTF9SR0JBMTZVSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDc2Ci0jZGVmaW5lIEdMX1JH
QjE2VUkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhENzcKLSNkZWZp
bmUgR0xfUkdCQThVSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3
QwotI2RlZmluZSBHTF9SR0I4VUkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4RDdECi0jZGVmaW5lIEdMX1JHQkEzMkkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhEODIKLSNkZWZpbmUgR0xfUkdCMzJJICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEQ4MwotI2RlZmluZSBHTF9SR0JBMTZJICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDg4Ci0jZGVmaW5lIEdMX1JHQjE2SSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhEODkKLSNkZWZpbmUgR0xfUkdC
QThJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ4RQotI2RlZmlu
ZSBHTF9SR0I4SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDhG
Ci0jZGVmaW5lIEdMX1JFRF9JTlRFR0VSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhEOTQKLSNkZWZpbmUgR0xfUkdCX0lOVEVHRVIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEQ5OAotI2RlZmluZSBHTF9SR0JBX0lOVEVHRVIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4RDk5Ci0jZGVmaW5lIEdMX1NBTVBMRVJfMkRfQVJSQVkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhEQzEKLSNkZWZpbmUgR0xfU0FNUExFUl8yRF9B
UlJBWV9TSEFET1cgICAgICAgICAgICAgICAgICAgICAgIDB4OERDNAotI2RlZmluZSBHTF9TQU1Q
TEVSX0NVQkVfU0hBRE9XICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4REM1Ci0jZGVmaW5l
IEdMX1VOU0lHTkVEX0lOVF9WRUMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhEQzYK
LSNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1ZFQzMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4OERDNwotI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfVkVDNCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4REM4Ci0jZGVmaW5lIEdMX0lOVF9TQU1QTEVSXzJEICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDhEQ0EKLSNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfM0QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4OERDQgotI2RlZmluZSBHTF9JTlRfU0FNUExFUl9D
VUJFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RENDCi0jZGVmaW5lIEdMX0lOVF9T
QU1QTEVSXzJEX0FSUkFZICAgICAgICAgICAgICAgICAgICAgICAgICAweDhEQ0YKLSNkZWZpbmUg
R0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkQgICAgICAgICAgICAgICAgICAgICAgIDB4OEREMgot
I2RlZmluZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8zRCAgICAgICAgICAgICAgICAgICAgICAg
MHg4REQzCi0jZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkUgICAgICAgICAgICAg
ICAgICAgICAweDhERDQKLSNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVkg
ICAgICAgICAgICAgICAgIDB4OERENwotI2RlZmluZSBHTF9CVUZGRVJfQUNDRVNTX0ZMQUdTICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTFGCi0jZGVmaW5lIEdMX0JVRkZFUl9NQVBfTEVO
R1RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMjAKLSNkZWZpbmUgR0xfQlVGRkVS
X01BUF9PRkZTRVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEyMQotI2RlZmluZSBH
TF9ERVBUSF9DT01QT05FTlQzMkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0FDCi0j
ZGVmaW5lIEdMX0RFUFRIMzJGX1NURU5DSUw4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhDQUQKLSNkZWZpbmUgR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWICAgICAgICAg
ICAgICAgIDB4OERBRAotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VO
Q09ESU5HICAgICAgICAgMHg4MjEwCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
Q09NUE9ORU5UX1RZUEUgICAgICAgICAweDgyMTEKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9SRURfU0laRSAgICAgICAgICAgICAgIDB4ODIxMgotI2RlZmluZSBHTF9GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX0dSRUVOX1NJWkUgICAgICAgICAgICAgMHg4MjEzCi0jZGVmaW5lIEdM
X0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQkxVRV9TSVpFICAgICAgICAgICAgICAweDgyMTQKLSNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFICAgICAgICAgICAgIDB4
ODIxNQotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkUgICAgICAg
ICAgICAgMHg4MjE2Ci0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9T
SVpFICAgICAgICAgICAweDgyMTcKLSNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfREVGQVVMVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODIxOAotI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9VTkRF
RklORUQgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjE5Ci0jZGVmaW5lIEdMX0RFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVCAgICAgICAgICAgICAgICAgICAgICAweDgyMUEKLSNkZWZpbmUgR0xf
REVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGOQotI2Rl
ZmluZSBHTF9VTlNJR05FRF9JTlRfMjRfOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
NEZBCi0jZGVmaW5lIEdMX0RFUFRIMjRfU1RFTkNJTDggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDg4RjAKLSNkZWZpbmUgR0xfVU5TSUdORURfTk9STUFMSVpFRCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OEMxNwotI2RlZmluZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcg
ICAgICAgICAgICAgICAgICAgICAgR0xfRlJBTUVCVUZGRVJfQklORElORwotI2RlZmluZSBHTF9S
RUFEX0ZSQU1FQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0E4Ci0jZGVm
aW5lIEdMX0RSQVdfRlJBTUVCVUZGRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhD
QTkKLSNkZWZpbmUgR0xfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HICAgICAgICAgICAgICAgICAg
ICAgIDB4OENBQQotI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfU0FNUExFUyAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4Q0FCCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVY
VFVSRV9MQVlFUiAgICAgICAgICAweDhDRDQKLSNkZWZpbmUgR0xfTUFYX0NPTE9SX0FUVEFDSE1F
TlRTICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENERgotI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0UxCi0jZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTIKLSNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENF
MwotI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4Q0U0Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ1ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhDRTUKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OENFNgotI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0U3Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRTgKLSNkZWZpbmUgR0xfQ09M
T1JfQVRUQUNITUVOVDkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFOQotI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4Q0VB
Ci0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDhDRUIKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEyICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OENFQwotI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4Q0VECi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDRUUKLSNkZWZpbmUgR0xfQ09MT1JfQVRUQUNI
TUVOVDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OENFRgotI2RlZmluZSBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFICAgICAgICAgICAgMHg4RDU2Ci0jZGVmaW5l
IEdMX01BWF9TQU1QTEVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhENTcK
LSNkZWZpbmUgR0xfSEFMRl9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MTQwQgotI2RlZmluZSBHTF9NQVBfUkVBRF9CSVQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHgwMDAxCi0jZGVmaW5lIEdMX01BUF9XUklURV9CSVQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDAwMDIKLSNkZWZpbmUgR0xfTUFQX0lOVkFMSURBVEVfUkFOR0Vf
QklUICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNAotI2RlZmluZSBHTF9NQVBfSU5WQUxJREFU
RV9CVUZGRVJfQklUICAgICAgICAgICAgICAgICAgICAgMHgwMDA4Ci0jZGVmaW5lIEdMX01BUF9G
TFVTSF9FWFBMSUNJVF9CSVQgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAKLSNkZWZpbmUg
R0xfTUFQX1VOU1lOQ0hST05JWkVEX0JJVCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMAot
I2RlZmluZSBHTF9SRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4MjI3Ci0jZGVmaW5lIEdMX1JHX0lOVEVHRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDgyMjgKLSNkZWZpbmUgR0xfUjggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODIyOQotI2RlZmluZSBHTF9SRzggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJCCi0jZGVmaW5lIEdMX1IxNkYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMkQKLSNkZWZpbmUgR0xfUjMyRiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyRQotI2RlZmluZSBH
TF9SRzE2RiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJGCi0j
ZGVmaW5lIEdMX1JHMzJGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgyMzAKLSNkZWZpbmUgR0xfUjhJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODIzMQotI2RlZmluZSBHTF9SOFVJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4MjMyCi0jZGVmaW5lIEdMX1IxNkkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDgyMzMKLSNkZWZpbmUgR0xfUjE2VUkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzNAotI2RlZmluZSBHTF9SMzJJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjM1Ci0jZGVmaW5lIEdM
X1IzMlVJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMzYKLSNk
ZWZpbmUgR0xfUkc4SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODIzNwotI2RlZmluZSBHTF9SRzhVSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MjM4Ci0jZGVmaW5lIEdMX1JHMTZJICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgyMzkKLSNkZWZpbmUgR0xfUkcxNlVJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODIzQQotI2RlZmluZSBHTF9SRzMySSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjNCCi0jZGVmaW5lIEdMX1JHMzJVSSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyM0MKLSNkZWZpbmUgR0xf
VkVSVEVYX0FSUkFZX0JJTkRJTkcgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODVCNQotI2Rl
ZmluZSBHTF9SOF9TTk9STSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
Rjk0Ci0jZGVmaW5lIEdMX1JHOF9TTk9STSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDhGOTUKLSNkZWZpbmUgR0xfUkdCOF9TTk9STSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4OEY5NgotI2RlZmluZSBHTF9SR0JBOF9TTk9STSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4Rjk3Ci0jZGVmaW5lIEdMX1NJR05FRF9OT1JNQUxJWkVE
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhGOUMKLSNkZWZpbmUgR0xfUFJJTUlUSVZF
X1JFU1RBUlRfRklYRURfSU5ERVggICAgICAgICAgICAgICAgIDB4OEQ2OQotI2RlZmluZSBHTF9D
T1BZX1JFQURfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RjM2Ci0jZGVm
aW5lIEdMX0NPUFlfV1JJVEVfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhG
MzcKLSNkZWZpbmUgR0xfQ09QWV9SRUFEX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPUFlfUkVBRF9CVUZGRVIKLSNkZWZpbmUgR0xfQ09QWV9XUklURV9CVUZGRVJfQklO
RElORyAgICAgICAgICAgICAgICAgICAgIEdMX0NPUFlfV1JJVEVfQlVGRkVSCi0jZGVmaW5lIEdM
X1VOSUZPUk1fQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhBMTEKLSNk
ZWZpbmUgR0xfVU5JRk9STV9CVUZGRVJfQklORElORyAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEEyOAotI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUl9TVEFSVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4QTI5Ci0jZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX1NJWkUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhBMkEKLSNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NL
UyAgICAgICAgICAgICAgICAgICAgIDB4OEEyQgotI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfVU5J
Rk9STV9CTE9DS1MgICAgICAgICAgICAgICAgICAgMHg4QTJECi0jZGVmaW5lIEdMX01BWF9DT01C
SU5FRF9VTklGT1JNX0JMT0NLUyAgICAgICAgICAgICAgICAgICAweDhBMkUKLSNkZWZpbmUgR0xf
TUFYX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkdTICAgICAgICAgICAgICAgICAgIDB4OEEyRgotI2Rl
ZmluZSBHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFICAgICAgICAgICAgICAgICAgICAgICAgMHg4
QTMwCi0jZGVmaW5lIEdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTICAg
ICAgICAweDhBMzEKLSNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09N
UE9ORU5UUyAgICAgIDB4OEEzMwotI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJ
R05NRU5UICAgICAgICAgICAgICAgMHg4QTM0Ci0jZGVmaW5lIEdMX0FDVElWRV9VTklGT1JNX0JM
T0NLX01BWF9OQU1FX0xFTkdUSCAgICAgICAgICAweDhBMzUKLSNkZWZpbmUgR0xfQUNUSVZFX1VO
SUZPUk1fQkxPQ0tTICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEEzNgotI2RlZmluZSBHTF9V
TklGT1JNX1RZUEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QTM3Ci0jZGVm
aW5lIEdMX1VOSUZPUk1fU0laRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhB
MzgKLSNkZWZpbmUgR0xfVU5JRk9STV9OQU1FX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4OEEzOQotI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0lOREVYICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4QTNBCi0jZGVmaW5lIEdMX1VOSUZPUk1fT0ZGU0VUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDhBM0IKLSNkZWZpbmUgR0xfVU5JRk9STV9BUlJBWV9TVFJJ
REUgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEEzQwotI2RlZmluZSBHTF9VTklGT1JNX01B
VFJJWF9TVFJJREUgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QTNECi0jZGVmaW5lIEdMX1VO
SUZPUk1fSVNfUk9XX01BSk9SICAgICAgICAgICAgICAgICAgICAgICAgICAweDhBM0UKLSNkZWZp
bmUgR0xfVU5JRk9STV9CTE9DS19CSU5ESU5HICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEEz
RgotI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0RBVEFfU0laRSAgICAgICAgICAgICAgICAgICAg
ICAgMHg4QTQwCi0jZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tfTkFNRV9MRU5HVEggICAgICAgICAg
ICAgICAgICAgICAweDhBNDEKLSNkZWZpbmUgR0xfVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9S
TVMgICAgICAgICAgICAgICAgIDB4OEE0MgotI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0FDVElW
RV9VTklGT1JNX0lORElDRVMgICAgICAgICAgMHg4QTQzCi0jZGVmaW5lIEdMX1VOSUZPUk1fQkxP
Q0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSICAgICAweDhBNDQKLSNkZWZpbmUgR0xfVU5J
Rk9STV9CTE9DS19SRUZFUkVOQ0VEX0JZX0ZSQUdNRU5UX1NIQURFUiAgIDB4OEE0NgotI2RlZmlu
ZSBHTF9JTlZBTElEX0lOREVYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZG
RkZGRnUKLSNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5UUyAgICAgICAgICAg
ICAgICAgIDB4OTEyMgotI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09NUE9ORU5UUyAg
ICAgICAgICAgICAgICAgMHg5MTI1Ci0jZGVmaW5lIEdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VU
ICAgICAgICAgICAgICAgICAgICAgICAweDkxMTEKLSNkZWZpbmUgR0xfT0JKRUNUX1RZUEUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTExMgotI2RlZmluZSBHTF9TWU5DX0NP
TkRJVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTEzCi0jZGVmaW5lIEdM
X1NZTkNfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMTQKLSNk
ZWZpbmUgR0xfU1lOQ19GTEFHUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OTExNQotI2RlZmluZSBHTF9TWU5DX0ZFTkNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg5MTE2Ci0jZGVmaW5lIEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFICAgICAg
ICAgICAgICAgICAgICAweDkxMTcKLSNkZWZpbmUgR0xfVU5TSUdOQUxFRCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OTExOAotI2RlZmluZSBHTF9TSUdOQUxFRCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTE5Ci0jZGVmaW5lIEdMX0FMUkVBRFlf
U0lHTkFMRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkxMUEKLSNkZWZpbmUgR0xf
VElNRU9VVF9FWFBJUkVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTExQgotI2Rl
ZmluZSBHTF9DT05ESVRJT05fU0FUSVNGSUVEICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5
MTFDCi0jZGVmaW5lIEdMX1dBSVRfRkFJTEVEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDkxMUQKLSNkZWZpbmUgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQgICAgICAgICAg
ICAgICAgICAgICAgIDB4MDAwMDAwMDEKLSNkZWZpbmUgR0xfVElNRU9VVF9JR05PUkVEICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkZGRkZGRkZGRnVsbAotI2RlZmluZSBH
TF9WRVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IgICAgICAgICAgICAgICAgICAgMHg4OEZFCi0j
ZGVmaW5lIEdMX0FOWV9TQU1QTEVTX1BBU1NFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhDMkYKLSNkZWZpbmUgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSAgICAgICAg
ICAgICAgIDB4OEQ2QQotI2RlZmluZSBHTF9TQU1QTEVSX0JJTkRJTkcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4OTE5Ci0jZGVmaW5lIEdMX1JHQjEwX0EyVUkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDkwNkYKLSNkZWZpbmUgR0xfVEVYVFVSRV9TV0laWkxF
X1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEU0MgotI2RlZmluZSBHTF9URVhUVVJF
X1NXSVpaTEVfRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RTQzCi0jZGVmaW5lIEdM
X1RFWFRVUkVfU1dJWlpMRV9CICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhFNDQKLSNk
ZWZpbmUgR0xfVEVYVFVSRV9TV0laWkxFX0EgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEU0NQotI2RlZmluZSBHTF9HUkVFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHgxOTA0Ci0jZGVmaW5lIEdMX0JMVUUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDE5MDUKLSNkZWZpbmUgR0xfSU5UXzJfMTBfMTBfMTBfUkVWICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OEQ5RgotI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJB
Q0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RTIyCi0jZGVmaW5lIEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19QQVVTRUQgICAgICAgICAgICAgICAgICAgICAweDhFMjMKLSNkZWZpbmUgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRSAgICAgICAgICAgICAgICAgICAgIDB4OEUyNAotI2Rl
ZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyAgICAgICAgICAgICAgICAgICAgMHg4
RTI1Ci0jZGVmaW5lIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQgICAgICAgICAg
ICAgICAweDgyNTcKLSNkZWZpbmUgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODc0MQotI2RlZmluZSBHTF9OVU1fUFJPR1JBTV9CSU5BUllfRk9STUFU
UyAgICAgICAgICAgICAgICAgICAgMHg4N0ZFCi0jZGVmaW5lIEdMX1BST0dSQU1fQklOQVJZX0ZP
Uk1BVFMgICAgICAgICAgICAgICAgICAgICAgICAweDg3RkYKLSNkZWZpbmUgR0xfQ09NUFJFU1NF
RF9SMTFfRUFDICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTI3MAotI2RlZmluZSBHTF9D
T01QUkVTU0VEX1NJR05FRF9SMTFfRUFDICAgICAgICAgICAgICAgICAgICAgMHg5MjcxCi0jZGVm
aW5lIEdMX0NPTVBSRVNTRURfUkcxMV9FQUMgICAgICAgICAgICAgICAgICAgICAgICAgICAweDky
NzIKLSNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMgICAgICAgICAgICAgICAg
ICAgIDB4OTI3MwotI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg5Mjc0Ci0jZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiAgICAg
ICAgICAgICAgICAgICAgICAgICAweDkyNzUKLSNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfRVRDMiAgICAgIDB4OTI3NgotI2RlZmluZSBHTF9DT01QUkVTU0VE
X1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiAgICAgMHg5Mjc3Ci0jZGVmaW5lIEdMX0NP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUMgICAgICAgICAgICAgICAgICAgICAweDkyNzgKLSNkZWZp
bmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMgICAgICAgICAgICAgIDB4OTI3
OQotI2RlZmluZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQgICAgICAgICAgICAgICAgICAg
ICAgMHg5MTJGCi0jZGVmaW5lIEdMX01BWF9FTEVNRU5UX0lOREVYICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDhENkIKLSNkZWZpbmUgR0xfTlVNX1NBTVBMRV9DT1VOVFMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OTM4MAotI2RlZmluZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9M
RVZFTFMgICAgICAgICAgICAgICAgICAgICAgMHg4MkRGCisjZGVmaW5lIEdMX01BWF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyAweDhDOEIKKyNkZWZpbmUgR0xfSU5URVJMRUFW
RURfQVRUUklCUyAgICAgICAgICAgIDB4OEM4QworI2RlZmluZSBHTF9TRVBBUkFURV9BVFRSSUJT
ICAgICAgICAgICAgICAgMHg4QzhECisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZG
RVIgICAgICAweDhDOEUKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5E
SU5HIDB4OEM4RgorI2RlZmluZSBHTF9SR0JBMzJVSSAgICAgICAgICAgICAgICAgICAgICAgMHg4
RDcwCisjZGVmaW5lIEdMX1JHQjMyVUkgICAgICAgICAgICAgICAgICAgICAgICAweDhENzEKKyNk
ZWZpbmUgR0xfUkdCQTE2VUkgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3NgorI2RlZmluZSBH
TF9SR0IxNlVJICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDc3CisjZGVmaW5lIEdMX1JHQkE4
VUkgICAgICAgICAgICAgICAgICAgICAgICAweDhEN0MKKyNkZWZpbmUgR0xfUkdCOFVJICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4OEQ3RAorI2RlZmluZSBHTF9SR0JBMzJJICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4RDgyCisjZGVmaW5lIEdMX1JHQjMySSAgICAgICAgICAgICAgICAgICAg
ICAgICAweDhEODMKKyNkZWZpbmUgR0xfUkdCQTE2SSAgICAgICAgICAgICAgICAgICAgICAgIDB4
OEQ4OAorI2RlZmluZSBHTF9SR0IxNkkgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDg5Cisj
ZGVmaW5lIEdMX1JHQkE4SSAgICAgICAgICAgICAgICAgICAgICAgICAweDhEOEUKKyNkZWZpbmUg
R0xfUkdCOEkgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ4RgorI2RlZmluZSBHTF9SRURf
SU5URUdFUiAgICAgICAgICAgICAgICAgICAgMHg4RDk0CisjZGVmaW5lIEdMX1JHQl9JTlRFR0VS
ICAgICAgICAgICAgICAgICAgICAweDhEOTgKKyNkZWZpbmUgR0xfUkdCQV9JTlRFR0VSICAgICAg
ICAgICAgICAgICAgIDB4OEQ5OQorI2RlZmluZSBHTF9TQU1QTEVSXzJEX0FSUkFZICAgICAgICAg
ICAgICAgMHg4REMxCisjZGVmaW5lIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XICAgICAgICAw
eDhEQzQKKyNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX1NIQURPVyAgICAgICAgICAgIDB4OERDNQor
I2RlZmluZSBHTF9VTlNJR05FRF9JTlRfVkVDMiAgICAgICAgICAgICAgMHg4REM2CisjZGVmaW5l
IEdMX1VOU0lHTkVEX0lOVF9WRUMzICAgICAgICAgICAgICAweDhEQzcKKyNkZWZpbmUgR0xfVU5T
SUdORURfSU5UX1ZFQzQgICAgICAgICAgICAgIDB4OERDOAorI2RlZmluZSBHTF9JTlRfU0FNUExF
Ul8yRCAgICAgICAgICAgICAgICAgMHg4RENBCisjZGVmaW5lIEdMX0lOVF9TQU1QTEVSXzNEICAg
ICAgICAgICAgICAgICAweDhEQ0IKKyNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfQ1VCRSAgICAgICAg
ICAgICAgIDB4OERDQworI2RlZmluZSBHTF9JTlRfU0FNUExFUl8yRF9BUlJBWSAgICAgICAgICAg
MHg4RENGCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEICAgICAgICAweDhERDIK
KyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfM0QgICAgICAgIDB4OEREMworI2RlZmlu
ZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFICAgICAgMHg4REQ0CisjZGVmaW5lIEdMX1VO
U0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZICAweDhERDcKKyNkZWZpbmUgR0xfQlVGRkVSX0FD
Q0VTU19GTEFHUyAgICAgICAgICAgIDB4OTExRgorI2RlZmluZSBHTF9CVUZGRVJfTUFQX0xFTkdU
SCAgICAgICAgICAgICAgMHg5MTIwCisjZGVmaW5lIEdMX0JVRkZFUl9NQVBfT0ZGU0VUICAgICAg
ICAgICAgICAweDkxMjEKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMzJGICAgICAgICAgICAg
IDB4OENBQworI2RlZmluZSBHTF9ERVBUSDMyRl9TVEVOQ0lMOCAgICAgICAgICAgICAgMHg4Q0FE
CisjZGVmaW5lIEdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFViAweDhEQUQKKyNkZWZp
bmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyAweDgyMTAKKyNkZWZp
bmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRSAweDgyMTEKKyNkZWZp
bmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRSAweDgyMTIKKyNkZWZpbmUgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9TSVpFIDB4ODIxMworI2RlZmluZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSAweDgyMTQKKyNkZWZpbmUgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFIDB4ODIxNQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX0RFUFRIX1NJWkUgMHg4MjE2CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfU1RFTkNJTF9TSVpFIDB4ODIxNworI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxU
ICAgICAgICAgICAgMHg4MjE4CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX1VOREVGSU5FRCAgICAg
ICAgICAweDgyMTkKKyNkZWZpbmUgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UICAgICAgIDB4
ODIxQQorI2RlZmluZSBHTF9ERVBUSF9TVEVOQ0lMICAgICAgICAgICAgICAgICAgMHg4NEY5Cisj
ZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yNF84ICAgICAgICAgICAgICAweDg0RkEKKyNkZWZpbmUg
R0xfREVQVEgyNF9TVEVOQ0lMOCAgICAgICAgICAgICAgIDB4ODhGMAorI2RlZmluZSBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVEICAgICAgICAgICAgMHg4QzE3CisjZGVmaW5lIEdMX0RSQVdfRlJBTUVC
VUZGRVJfQklORElORyAgICAgICAweDhDQTYKKyNkZWZpbmUgR0xfUkVBRF9GUkFNRUJVRkZFUiAg
ICAgICAgICAgICAgIDB4OENBOAorI2RlZmluZSBHTF9EUkFXX0ZSQU1FQlVGRkVSICAgICAgICAg
ICAgICAgMHg4Q0E5CisjZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZGRVJfQklORElORyAgICAgICAw
eDhDQUEKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVMgICAgICAgICAgIDB4OENBQgor
I2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIgMHg4Q0Q0Cisj
ZGVmaW5lIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUyAgICAgICAgICAweDhDREYKKyNkZWZpbmUg
R0xfQ09MT1JfQVRUQUNITUVOVDEgICAgICAgICAgICAgIDB4OENFMQorI2RlZmluZSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMiAgICAgICAgICAgICAgMHg4Q0UyCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQzICAgICAgICAgICAgICAweDhDRTMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDQg
ICAgICAgICAgICAgIDB4OENFNAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNSAgICAgICAg
ICAgICAgMHg4Q0U1CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ2ICAgICAgICAgICAgICAw
eDhDRTYKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDcgICAgICAgICAgICAgIDB4OENFNwor
I2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOCAgICAgICAgICAgICAgMHg4Q0U4CisjZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQ5ICAgICAgICAgICAgICAweDhDRTkKKyNkZWZpbmUgR0xfQ09M
T1JfQVRUQUNITUVOVDEwICAgICAgICAgICAgIDB4OENFQQorI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMTEgICAgICAgICAgICAgMHg4Q0VCCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQx
MiAgICAgICAgICAgICAweDhDRUMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEzICAgICAg
ICAgICAgIDB4OENFRAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTQgICAgICAgICAgICAg
MHg4Q0VFCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNSAgICAgICAgICAgICAweDhDRUYK
KyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDE2ICAgICAgICAgICAgIDB4OENGMAorI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTcgICAgICAgICAgICAgMHg4Q0YxCisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQxOCAgICAgICAgICAgICAweDhDRjIKKyNkZWZpbmUgR0xfQ09MT1JfQVRU
QUNITUVOVDE5ICAgICAgICAgICAgIDB4OENGMworI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MjAgICAgICAgICAgICAgMHg4Q0Y0CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyMSAgICAg
ICAgICAgICAweDhDRjUKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDIyICAgICAgICAgICAg
IDB4OENGNgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMjMgICAgICAgICAgICAgMHg4Q0Y3
CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyNCAgICAgICAgICAgICAweDhDRjgKKyNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDI1ICAgICAgICAgICAgIDB4OENGOQorI2RlZmluZSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMjYgICAgICAgICAgICAgMHg4Q0ZBCisjZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQyNyAgICAgICAgICAgICAweDhDRkIKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVO
VDI4ICAgICAgICAgICAgIDB4OENGQworI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMjkgICAg
ICAgICAgICAgMHg4Q0ZECisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQzMCAgICAgICAgICAg
ICAweDhDRkUKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDMxICAgICAgICAgICAgIDB4OENG
RgorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExFIDB4OEQ1Ngor
I2RlZmluZSBHTF9NQVhfU0FNUExFUyAgICAgICAgICAgICAgICAgICAgMHg4RDU3CisjZGVmaW5l
IEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICAweDE0MEIKKyNkZWZpbmUgR0xfTUFQ
X1JFQURfQklUICAgICAgICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBHTF9NQVBfV1JJVEVf
QklUICAgICAgICAgICAgICAgICAgMHgwMDAyCisjZGVmaW5lIEdMX01BUF9JTlZBTElEQVRFX1JB
TkdFX0JJVCAgICAgICAweDAwMDQKKyNkZWZpbmUgR0xfTUFQX0lOVkFMSURBVEVfQlVGRkVSX0JJ
VCAgICAgIDB4MDAwOAorI2RlZmluZSBHTF9NQVBfRkxVU0hfRVhQTElDSVRfQklUICAgICAgICAg
MHgwMDEwCisjZGVmaW5lIEdMX01BUF9VTlNZTkNIUk9OSVpFRF9CSVQgICAgICAgICAweDAwMjAK
KyNkZWZpbmUgR0xfUkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyNworI2RlZmlu
ZSBHTF9SR19JTlRFR0VSICAgICAgICAgICAgICAgICAgICAgMHg4MjI4CisjZGVmaW5lIEdMX1I4
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMjkKKyNkZWZpbmUgR0xfUkc4ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODIyQgorI2RlZmluZSBHTF9SMTZGICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4MjJECisjZGVmaW5lIEdMX1IzMkYgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDgyMkUKKyNkZWZpbmUgR0xfUkcxNkYgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ODIyRgorI2RlZmluZSBHTF9SRzMyRiAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjMw
CisjZGVmaW5lIEdMX1I4SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMzEKKyNkZWZp
bmUgR0xfUjhVSSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzMgorI2RlZmluZSBHTF9S
MTZJICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjMzCisjZGVmaW5lIEdMX1IxNlVJICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDgyMzQKKyNkZWZpbmUgR0xfUjMySSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODIzNQorI2RlZmluZSBHTF9SMzJVSSAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4MjM2CisjZGVmaW5lIEdMX1JHOEkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDgyMzcKKyNkZWZpbmUgR0xfUkc4VUkgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIz
OAorI2RlZmluZSBHTF9SRzE2SSAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjM5CisjZGVm
aW5lIEdMX1JHMTZVSSAgICAgICAgICAgICAgICAgICAgICAgICAweDgyM0EKKyNkZWZpbmUgR0xf
UkczMkkgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzQgorI2RlZmluZSBHTF9SRzMyVUkg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjNDCisjZGVmaW5lIEdMX1ZFUlRFWF9BUlJBWV9C
SU5ESU5HICAgICAgICAgICAweDg1QjUKKyNkZWZpbmUgR0xfUjhfU05PUk0gICAgICAgICAgICAg
ICAgICAgICAgIDB4OEY5NAorI2RlZmluZSBHTF9SRzhfU05PUk0gICAgICAgICAgICAgICAgICAg
ICAgMHg4Rjk1CisjZGVmaW5lIEdMX1JHQjhfU05PUk0gICAgICAgICAgICAgICAgICAgICAweDhG
OTYKKyNkZWZpbmUgR0xfUkdCQThfU05PUk0gICAgICAgICAgICAgICAgICAgIDB4OEY5NworI2Rl
ZmluZSBHTF9TSUdORURfTk9STUFMSVpFRCAgICAgICAgICAgICAgMHg4RjlDCisjZGVmaW5lIEdM
X1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYICAweDhENjkKKyNkZWZpbmUgR0xfQ09QWV9S
RUFEX0JVRkZFUiAgICAgICAgICAgICAgIDB4OEYzNgorI2RlZmluZSBHTF9DT1BZX1dSSVRFX0JV
RkZFUiAgICAgICAgICAgICAgMHg4RjM3CisjZGVmaW5lIEdMX0NPUFlfUkVBRF9CVUZGRVJfQklO
RElORyAgICAgICAweDhGMzYKKyNkZWZpbmUgR0xfQ09QWV9XUklURV9CVUZGRVJfQklORElORyAg
ICAgIDB4OEYzNworI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUiAgICAgICAgICAgICAgICAgMHg4
QTExCisjZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkcgICAgICAgICAweDhBMjgKKyNk
ZWZpbmUgR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQgICAgICAgICAgIDB4OEEyOQorI2RlZmluZSBH
TF9VTklGT1JNX0JVRkZFUl9TSVpFICAgICAgICAgICAgMHg4QTJBCisjZGVmaW5lIEdMX01BWF9W
RVJURVhfVU5JRk9STV9CTE9DS1MgICAgICAweDhBMkIKKyNkZWZpbmUgR0xfTUFYX0ZSQUdNRU5U
X1VOSUZPUk1fQkxPQ0tTICAgIDB4OEEyRAorI2RlZmluZSBHTF9NQVhfQ09NQklORURfVU5JRk9S
TV9CTE9DS1MgICAgMHg4QTJFCisjZGVmaW5lIEdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5H
UyAgICAweDhBMkYKKyNkZWZpbmUgR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSAgICAgICAgIDB4
OEEzMAorI2RlZmluZSBHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyAw
eDhBMzEKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5U
UyAweDhBMzMKKyNkZWZpbmUgR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCAweDhB
MzQKKyNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVOR1RIIDB4OEEz
NQorI2RlZmluZSBHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1MgICAgICAgICAgMHg4QTM2CisjZGVm
aW5lIEdMX1VOSUZPUk1fVFlQRSAgICAgICAgICAgICAgICAgICAweDhBMzcKKyNkZWZpbmUgR0xf
VU5JRk9STV9TSVpFICAgICAgICAgICAgICAgICAgIDB4OEEzOAorI2RlZmluZSBHTF9VTklGT1JN
X05BTUVfTEVOR1RIICAgICAgICAgICAgMHg4QTM5CisjZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tf
SU5ERVggICAgICAgICAgICAweDhBM0EKKyNkZWZpbmUgR0xfVU5JRk9STV9PRkZTRVQgICAgICAg
ICAgICAgICAgIDB4OEEzQgorI2RlZmluZSBHTF9VTklGT1JNX0FSUkFZX1NUUklERSAgICAgICAg
ICAgMHg4QTNDCisjZGVmaW5lIEdMX1VOSUZPUk1fTUFUUklYX1NUUklERSAgICAgICAgICAweDhB
M0QKKyNkZWZpbmUgR0xfVU5JRk9STV9JU19ST1dfTUFKT1IgICAgICAgICAgIDB4OEEzRQorI2Rl
ZmluZSBHTF9VTklGT1JNX0JMT0NLX0JJTkRJTkcgICAgICAgICAgMHg4QTNGCisjZGVmaW5lIEdM
X1VOSUZPUk1fQkxPQ0tfREFUQV9TSVpFICAgICAgICAweDhBNDAKKyNkZWZpbmUgR0xfVU5JRk9S
TV9CTE9DS19OQU1FX0xFTkdUSCAgICAgIDB4OEE0MQorI2RlZmluZSBHTF9VTklGT1JNX0JMT0NL
X0FDVElWRV9VTklGT1JNUyAgMHg4QTQyCisjZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tfQUNUSVZF
X1VOSUZPUk1fSU5ESUNFUyAweDhBNDMKKyNkZWZpbmUgR0xfVU5JRk9STV9CTE9DS19SRUZFUkVO
Q0VEX0JZX1ZFUlRFWF9TSEFERVIgMHg4QTQ0CisjZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tfUkVG
RVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVIgMHg4QTQ2CisjZGVmaW5lIEdMX0lOVkFMSURfSU5E
RVggICAgICAgICAgICAgICAgICAweEZGRkZGRkZGdQorI2RlZmluZSBHTF9NQVhfVkVSVEVYX09V
VFBVVF9DT01QT05FTlRTICAgMHg5MTIyCisjZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9D
T01QT05FTlRTICAweDkxMjUKKyNkZWZpbmUgR0xfTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQgICAg
ICAgIDB4OTExMQorI2RlZmluZSBHTF9PQkpFQ1RfVFlQRSAgICAgICAgICAgICAgICAgICAgMHg5
MTEyCisjZGVmaW5lIEdMX1NZTkNfQ09ORElUSU9OICAgICAgICAgICAgICAgICAweDkxMTMKKyNk
ZWZpbmUgR0xfU1lOQ19TVEFUVVMgICAgICAgICAgICAgICAgICAgIDB4OTExNAorI2RlZmluZSBH
TF9TWU5DX0ZMQUdTICAgICAgICAgICAgICAgICAgICAgMHg5MTE1CisjZGVmaW5lIEdMX1NZTkNf
RkVOQ0UgICAgICAgICAgICAgICAgICAgICAweDkxMTYKKyNkZWZpbmUgR0xfU1lOQ19HUFVfQ09N
TUFORFNfQ09NUExFVEUgICAgIDB4OTExNworI2RlZmluZSBHTF9VTlNJR05BTEVEICAgICAgICAg
ICAgICAgICAgICAgMHg5MTE4CisjZGVmaW5lIEdMX1NJR05BTEVEICAgICAgICAgICAgICAgICAg
ICAgICAweDkxMTkKKyNkZWZpbmUgR0xfQUxSRUFEWV9TSUdOQUxFRCAgICAgICAgICAgICAgIDB4
OTExQQorI2RlZmluZSBHTF9USU1FT1VUX0VYUElSRUQgICAgICAgICAgICAgICAgMHg5MTFCCisj
ZGVmaW5lIEdMX0NPTkRJVElPTl9TQVRJU0ZJRUQgICAgICAgICAgICAweDkxMUMKKyNkZWZpbmUg
R0xfV0FJVF9GQUlMRUQgICAgICAgICAgICAgICAgICAgIDB4OTExRAorI2RlZmluZSBHTF9TWU5D
X0ZMVVNIX0NPTU1BTkRTX0JJVCAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9USU1FT1VU
X0lHTk9SRUQgICAgICAgICAgICAgICAgMHhGRkZGRkZGRkZGRkZGRkZGdWxsCisjZGVmaW5lIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUiAgICAweDg4RkUKKyNkZWZpbmUgR0xfQU5ZX1NB
TVBMRVNfUEFTU0VEICAgICAgICAgICAgIDB4OEMyRgorI2RlZmluZSBHTF9BTllfU0FNUExFU19Q
QVNTRURfQ09OU0VSVkFUSVZFIDB4OEQ2QQorI2RlZmluZSBHTF9TQU1QTEVSX0JJTkRJTkcgICAg
ICAgICAgICAgICAgMHg4OTE5CisjZGVmaW5lIEdMX1JHQjEwX0EyVUkgICAgICAgICAgICAgICAg
ICAgICAweDkwNkYKKyNkZWZpbmUgR0xfVEVYVFVSRV9TV0laWkxFX1IgICAgICAgICAgICAgIDB4
OEU0MgorI2RlZmluZSBHTF9URVhUVVJFX1NXSVpaTEVfRyAgICAgICAgICAgICAgMHg4RTQzCisj
ZGVmaW5lIEdMX1RFWFRVUkVfU1dJWlpMRV9CICAgICAgICAgICAgICAweDhFNDQKKyNkZWZpbmUg
R0xfVEVYVFVSRV9TV0laWkxFX0EgICAgICAgICAgICAgIDB4OEU0NQorI2RlZmluZSBHTF9HUkVF
TiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTA0CisjZGVmaW5lIEdMX0JMVUUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDE5MDUKKyNkZWZpbmUgR0xfSU5UXzJfMTBfMTBfMTBfUkVW
ICAgICAgICAgICAgIDB4OEQ5RgorI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0sgICAgICAg
ICAgICAgMHg4RTIyCisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQgICAgICAw
eDhFMjMKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRSAgICAgIDB4OEUyNAor
I2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyAgICAgMHg4RTI1CisjZGVmaW5l
IEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQgMHg4MjU3CisjZGVmaW5lIEdMX1BS
T0dSQU1fQklOQVJZX0xFTkdUSCAgICAgICAgICAweDg3NDEKKyNkZWZpbmUgR0xfTlVNX1BST0dS
QU1fQklOQVJZX0ZPUk1BVFMgICAgIDB4ODdGRQorI2RlZmluZSBHTF9QUk9HUkFNX0JJTkFSWV9G
T1JNQVRTICAgICAgICAgMHg4N0ZGCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUjExX0VBQyAgICAg
ICAgICAgICAweDkyNzAKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQyAgICAg
IDB4OTI3MQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHMTFfRUFDICAgICAgICAgICAgMHg5Mjcy
CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDICAgICAweDkyNzMKKyNkZWZp
bmUgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIgICAgICAgICAgIDB4OTI3NAorI2RlZmluZSBHTF9D
T01QUkVTU0VEX1NSR0I4X0VUQzIgICAgICAgICAgMHg5Mjc1CisjZGVmaW5lIEdMX0NPTVBSRVNT
RURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgMHg5Mjc2CisjZGVmaW5lIEdMX0NPTVBS
RVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIDB4OTI3NworI2RlZmluZSBHTF9D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDICAgICAgMHg5Mjc4CisjZGVmaW5lIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDIDB4OTI3OQorI2RlZmluZSBHTF9URVhUVVJFX0lNTVVU
QUJMRV9GT1JNQVQgICAgICAgMHg5MTJGCisjZGVmaW5lIEdMX01BWF9FTEVNRU5UX0lOREVYICAg
ICAgICAgICAgICAweDhENkIKKyNkZWZpbmUgR0xfTlVNX1NBTVBMRV9DT1VOVFMgICAgICAgICAg
ICAgIDB4OTM4MAorI2RlZmluZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMgICAgICAgMHg4
MkRGCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQURCVUZGRVJQUk9DKSAoR0xl
bnVtIHNyYyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdSQU5HRUVMRU1F
TlRTUFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UzRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xU
RVhTVUJJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zm
c2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0
IHZvaWQgKnBpeGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPUFlURVhT
VUJJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0
LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENPTVBSRVNTRURURVhJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp
emVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpk
YXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklN
QUdFM0RQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlFVRVJJRVNQ
Uk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTERFTEVURVFVRVJJRVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7
Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNRVUVSWVBST0MpIChHTHVp
bnQgaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCRUdJTlFVRVJZUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEVORFFVRVJZUFJPQykgKEdMZW51bSB0YXJnZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRRVUVSWUlWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFVRVJZ
T0JKRUNUVUlWUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7
Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJQUk9DKSAo
R0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZF
UlBPSU5URVJWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFt
cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZGRVJTUFJPQykgKEdM
c2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVU5JRk9STU1BVFJJWDJYM0ZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzWDJGVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNTUFUUklY
Mlg0RlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVU5JRk9STU1BVFJJWDRYMkZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzWDRGVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNTUFUUklY
NFgzRlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMQkxJVEZSQU1FQlVGRkVSUFJPQykgKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xp
bnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRz
dFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExF
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRUxBWUVSUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGxh
eWVyKTsKK3R5cGVkZWYgdm9pZCAqKEdMX0FQSUVOVFJZUCBQRk5HTE1BUEJVRkZFUlJBTkdFUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsIEdM
Yml0ZmllbGQgYWNjZXNzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRkxVU0hN
QVBQRURCVUZGRVJSQU5HRVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdM
c2l6ZWlwdHIgbGVuZ3RoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklORFZF
UlRFWEFSUkFZUFJPQykgKEdMdWludCBhcnJheSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTERFTEVURVZFUlRFWEFSUkFZU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAq
YXJyYXlzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOVkVSVEVYQVJSQVlT
UFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdM
X0FQSUVOVFJZUCBQRk5HTElTVkVSVEVYQVJSQVlQUk9DKSAoR0x1aW50IGFycmF5KTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUklfVlBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMQkVHSU5UUkFOU0ZPUk1GRUVEQkFDS1BST0MpIChHTGVudW0gcHJpbWl0aXZlTW9k
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVORFRSQU5TRk9STUZFRURCQUNL
UFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EQlVGRkVS
UkFOR0VQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyLCBH
TGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEJJTkRCVUZGRVJCQVNFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRl
eCwgR0x1aW50IGJ1ZmZlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRSQU5T
Rk9STUZFRURCQUNLVkFSWUlOR1NQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMY2hhciAqY29uc3QqdmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2RlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVFJBTlNGT1JNRkVFREJBQ0tWQVJZSU5HUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQklQT0lOVEVSUFJPQykg
KEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBj
b25zdCB2b2lkICpwb2ludGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VkVSVEVYQVRUUklCSUlWUFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVkVSVEVYQVRUUklC
SVVJVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUJJNElQUk9DKSAoR0x1
aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCSTRVSVBST0MpIChHTHVpbnQgaW5k
ZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHosIEdMdWludCB3KTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCSTRJVlBST0MpIChHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMaW50ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVY
QVRUUklCSTRVSVZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRVTklGT1JNVUlWUFJPQykgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpOwordHlwZWRlZiBHTGludCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VURlJBR0RBVEFMT0NBVElPTlBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
Y29uc3QgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5J
Rk9STTFVSVBST0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTJVSVBST0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50
IHYwLCBHTHVpbnQgdjEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JN
M1VJUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYy
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTRVSVBST0MpIChHTGlu
dCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYzKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTFVSVZQUk9DKSAoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMlVJVlBST0MpIChHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFVOSUZPUk0zVUlWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMVU5JRk9STTRVSVZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUkJV
RkZFUklWUFJPQykgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50
ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSQlVGRkVSVUlW
UFJPQykgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMdWludCAqdmFs
dWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUkJVRkZFUkZWUFJPQykg
KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ0xFQVJCVUZGRVJGSVBST0MpIChHTGVu
dW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBHTGZsb2F0IGRlcHRoLCBHTGludCBzdGVuY2ls
KTsKK3R5cGVkZWYgY29uc3QgR0x1Ynl0ZSAqKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNUUklOR0lQ
Uk9DKSAoR0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTENPUFlCVUZGRVJTVUJEQVRBUFJPQykgKEdMZW51bSByZWFkVGFyZ2V0LCBHTGVu
dW0gd3JpdGVUYXJnZXQsIEdMaW50cHRyIHJlYWRPZmZzZXQsIEdMaW50cHRyIHdyaXRlT2Zmc2V0
LCBHTHNpemVpcHRyIHNpemUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRV
TklGT1JNSU5ESUNFU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlmb3JtQ291bnQs
IGNvbnN0IEdMY2hhciAqY29uc3QqdW5pZm9ybU5hbWVzLCBHTHVpbnQgKnVuaWZvcm1JbmRpY2Vz
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQUNUSVZFVU5JRk9STVNJVlBS
T0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlmb3JtQ291bnQsIGNvbnN0IEdMdWludCAq
dW5pZm9ybUluZGljZXMsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIEdM
dWludCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUJMT0NLSU5ERVhQUk9DKSAoR0x1aW50
IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRVVOSUZPUk1CTE9DS0lWUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRVVOSUZPUk1C
TE9DS05BTUVQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqdW5pZm9ybUJsb2NrTmFt
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1CTE9DS0JJTkRJTkdQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50IHVu
aWZvcm1CbG9ja0JpbmRpbmcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFX
QVJSQVlTSU5TVEFOQ0VEUFJPQykgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBj
b3VudCwgR0xzaXplaSBpbnN0YW5jZWNvdW50KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEUFJPQykgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNv
dW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0YW5jZWNv
dW50KTsKK3R5cGVkZWYgR0xzeW5jIChHTF9BUElFTlRSWVAgUEZOR0xGRU5DRVNZTkNQUk9DKSAo
R0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAo
R0xfQVBJRU5UUllQIFBGTkdMSVNTWU5DUFJPQykgKEdMc3luYyBzeW5jKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFU1lOQ1BST0MpIChHTHN5bmMgc3luYyk7Cit0eXBl
ZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMQ0xJRU5UV0FJVFNZTkNQUk9DKSAoR0xzeW5j
IHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xXQUlUU1lOQ1BST0MpIChHTHN5bmMgc3luYywgR0xiaXRmaWVs
ZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVElOVEVHRVI2NFZQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpkYXRhKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU1lOQ0lWUFJPQykgKEdMc3luYyBzeW5j
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAq
dmFsdWVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUjY0SV9W
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUkk2NFZQUk9DKSAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5TQU1QTEVSU1BST0MpIChHTHNpemVpIGNvdW50LCBH
THVpbnQgKnNhbXBsZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRF
U0FNUExFUlNQUk9DKSAoR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVycyk7Cit0
eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNTQU1QTEVSUFJPQykgKEdMdWlu
dCBzYW1wbGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklORFNBTVBMRVJQ
Uk9DKSAoR0x1aW50IHVuaXQsIEdMdWludCBzYW1wbGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMU0FNUExFUlBBUkFNRVRFUklQUk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xT
QU1QTEVSUEFSQU1FVEVSSVZQUk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExF
UlBBUkFNRVRFUkZQUk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBw
YXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQQVJBTUVURVJG
VlBST0MpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJh
bSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJ
VlBST0MpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUkZWUFJPQykg
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JQUk9DKSAoR0x1aW50
IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEJJTkRUUkFOU0ZPUk1GRUVEQkFDS1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVUUkFOU0ZPUk1GRUVEQkFDS1NQ
Uk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFTlRSQU5TRk9STUZFRURCQUNLU1BST0MpIChHTHNpemVpIG4sIEdMdWlu
dCAqaWRzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1RSQU5TRk9S
TUZFRURCQUNLUFJPQykgKEdMdWludCBpZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFBBVVNFVFJBTlNGT1JNRkVFREJBQ0tQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFJFU1VNRVRSQU5TRk9STUZFRURCQUNLUFJPQykgKHZvaWQpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNQklOQVJZUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5h
cnlGb3JtYXQsIHZvaWQgKmJpbmFyeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFBST0dSQU1CSU5BUllQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQs
IGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndGgpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNUEFSQU1FVEVSSVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xl
bnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TElOVkFMSURBVEVGUkFNRUJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0
dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMSU5WQUxJREFURVNVQkZSQU1FQlVGRkVSUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1RPUkFHRTJEUFJPQykgKEdMZW51bSB0YXJnZXQs
IEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1RPUkFH
RTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URVJOQUxGT1JNQVRJVlBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBwbmFtZSwgR0xzaXpl
aSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWFkQnVmZmVyIChHTGVudW0gc3JjKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdSYW5nZUVsZW1lbnRzIChHTGVudW0gbW9k
ZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCAqaW5kaWNlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJ
bWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3Jk
ZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UzRCAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbENvcHlUZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRU
ZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdlblF1ZXJpZXMg
KEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
RGVsZXRlUXVlcmllcyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7CitHTF9BUElDQUxM
IEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUXVlcnkgKEdMdWludCBpZCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCZWdpblF1ZXJ5IChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kUXVlcnkgKEdMZW51bSB0YXJnZXQp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UXVlcnlpdiAoR0xlbnVtIHRhcmdl
dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldFF1ZXJ5T2JqZWN0dWl2IChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50
ICpwYXJhbXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xVbm1hcEJ1ZmZl
ciAoR0xlbnVtIHRhcmdldCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCdWZm
ZXJQb2ludGVydiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdCdWZmZXJzIChHTHNpemVpIG4sIGNv
bnN0IEdMZW51bSAqYnVmcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3Jt
TWF0cml4MngzZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xVbmlmb3JtTWF0cml4M3gyZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4Mng0ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4NHgyZnYgKEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4M3g0
ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlm
b3JtTWF0cml4NHgzZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xCbGl0RnJhbWVidWZmZXIgKEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQg
c3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgx
LCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSAoR0xl
bnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVu
dCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBsYXllcik7CitHTF9BUElDQUxM
IHZvaWQgKkdMX0FQSUVOVFJZIGdsTWFwQnVmZmVyUmFuZ2UgKEdMZW51bSB0YXJnZXQsIEdMaW50
cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UgKEdMZW51bSB0
YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQmluZFZlcnRleEFycmF5IChHTHVpbnQgYXJyYXkpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlVmVydGV4QXJyYXlzIChHTHNpemVpIG4sIGNv
bnN0IEdMdWludCAqYXJyYXlzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdlblZl
cnRleEFycmF5cyAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUElDQUxMIEdMYm9v
bGVhbiBHTF9BUElFTlRSWSBnbElzVmVydGV4QXJyYXkgKEdMdWludCBhcnJheSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyaV92IChHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJl
Z2luVHJhbnNmb3JtRmVlZGJhY2sgKEdMZW51bSBwcmltaXRpdmVNb2RlKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrICh2b2lkKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRCdWZmZXJSYW5nZSAoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQnVmZmVyQmFzZSAoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MgKEdMdWludCBwcm9ncmFtLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKmNvbnN0KnZhcnlpbmdzLCBHTGVudW0gYnVmZmVy
TW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmcgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFt
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlciAo
R0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNv
bnN0IHZvaWQgKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVy
dGV4QXR0cmliSWl2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2IChHTHVp
bnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliSTRpIChHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHosIEdMaW50IHcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VmVydGV4QXR0cmliSTR1aSAoR0x1aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWlu
dCB6LCBHTHVpbnQgdyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRy
aWJJNGl2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkk0dWl2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWlu
dCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtdWl2IChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwg
R0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRGcmFnRGF0YUxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwg
Y29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZv
cm0xdWkgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybTJ1aSAoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYx
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zdWkgKEdMaW50IGxvY2F0
aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFVuaWZvcm00dWkgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWlu
dCB2MSwgR0x1aW50IHYyLCBHTHVpbnQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsVW5pZm9ybTF1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0ydWl2IChH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM3VpdiAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybTR1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENsZWFyQnVm
ZmVyaXYgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcnVpdiAoR0xlbnVt
IGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcmZ2IChHTGVudW0gYnVmZmVyLCBHTGlu
dCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcmZpIChHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVy
LCBHTGZsb2F0IGRlcHRoLCBHTGludCBzdGVuY2lsKTsKK0dMX0FQSUNBTEwgY29uc3QgR0x1Ynl0
ZSAqR0xfQVBJRU5UUlkgZ2xHZXRTdHJpbmdpIChHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlCdWZmZXJTdWJEYXRhIChHTGVudW0g
cmVhZFRhcmdldCwgR0xlbnVtIHdyaXRlVGFyZ2V0LCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGlu
dHB0ciB3cml0ZU9mZnNldCwgR0xzaXplaXB0ciBzaXplKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFVuaWZvcm1JbmRpY2VzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlm
b3JtQ291bnQsIGNvbnN0IEdMY2hhciAqY29uc3QqdW5pZm9ybU5hbWVzLCBHTHVpbnQgKnVuaWZv
cm1JbmRpY2VzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEFjdGl2ZVVuaWZv
cm1zaXYgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIHVuaWZvcm1Db3VudCwgY29uc3QgR0x1aW50
ICp1bmlmb3JtSW5kaWNlcywgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNB
TEwgR0x1aW50IEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybUJsb2NrSW5kZXggKEdMdWludCBwcm9n
cmFtLCBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYgKEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lIChHTHVp
bnQgcHJvZ3JhbSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1CbG9ja0JpbmRpbmcgKEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdBcnJheXNJbnN0YW5jZWQgKEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZWNvdW50KTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0luc3RhbmNlZCAoR0xlbnVt
IG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzLCBH
THNpemVpIGluc3RhbmNlY291bnQpOworR0xfQVBJQ0FMTCBHTHN5bmMgR0xfQVBJRU5UUlkgZ2xG
ZW5jZVN5bmMgKEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpOworR0xfQVBJQ0FM
TCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1N5bmMgKEdMc3luYyBzeW5jKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVN5bmMgKEdMc3luYyBzeW5jKTsKK0dMX0FQSUNB
TEwgR0xlbnVtIEdMX0FQSUVOVFJZIGdsQ2xpZW50V2FpdFN5bmMgKEdMc3luYyBzeW5jLCBHTGJp
dGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFdhaXRTeW5jIChHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQg
dGltZW91dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyNjR2IChH
TGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0U3luY2l2IChHTHN5bmMgc3luYywgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnZhbHVlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRJbnRlZ2VyNjRpX3YgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xp
bnQ2NCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCdWZmZXJQYXJh
bWV0ZXJpNjR2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5TYW1wbGVycyAoR0xzaXplaSBjb3Vu
dCwgR0x1aW50ICpzYW1wbGVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxl
dGVTYW1wbGVycyAoR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVycyk7CitHTF9B
UElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzU2FtcGxlciAoR0x1aW50IHNhbXBsZXIp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFNhbXBsZXIgKEdMdWludCB1bml0
LCBHTHVpbnQgc2FtcGxlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVy
UGFyYW1ldGVyaSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcml2IChHTHVpbnQg
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0pOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcmYgKEdMdWludCBzYW1wbGVyLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
U2FtcGxlclBhcmFtZXRlcmZ2IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBH
TGZsb2F0ICpwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTYW1wbGVy
UGFyYW1ldGVyaXYgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBhcmFtZXRlcmZ2IChH
THVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliRGl2aXNvciAoR0x1aW50IGluZGV4LCBH
THVpbnQgZGl2aXNvcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVHJhbnNm
b3JtRmVlZGJhY2sgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MgKEdMc2l6ZWkgbiwgY29uc3Qg
R0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuVHJhbnNmb3Jt
RmVlZGJhY2tzIChHTHNpemVpIG4sIEdMdWludCAqaWRzKTsKK0dMX0FQSUNBTEwgR0xib29sZWFu
IEdMX0FQSUVOVFJZIGdsSXNUcmFuc2Zvcm1GZWVkYmFjayAoR0x1aW50IGlkKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2sgKHZvaWQpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2sgKHZvaWQp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUJpbmFyeSAoR0x1aW50
IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFy
eUZvcm1hdCwgdm9pZCAqYmluYXJ5KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1CaW5hcnkgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2
b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFByb2dyYW1QYXJhbWV0ZXJpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGlu
dCB2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbnZhbGlkYXRlRnJhbWVi
dWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51
bSAqYXR0YWNobWVudHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW52YWxpZGF0
ZVN1YkZyYW1lYnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBj
b25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhTdG9y
YWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFRleFN0b3JhZ2UzRCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6
ZWkgZGVwdGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZXJuYWxmb3Jt
YXRpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gcG5hbWUs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9F
U19WRVJTSU9OXzNfMCAqLwogCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIEVudHJ5cG9pbnQgZGVm
aW5pdGlvbnMKLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBPcGVuR0wgRVMgMi4wICovCi0KLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xBY3RpdmVUZXh0dXJlIChHTGVu
dW0gdGV4dHVyZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQXR0
YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7Ci1HTF9BUElDQUxMIHZv
aWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmluZEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJv
Z3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpOwotR0xfQVBJQ0FMTCB2b2lk
ICAgICAgICAgICBHTF9BUElFTlRSWSBnbEJpbmRCdWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBidWZmZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEJpbmRG
cmFtZWJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKTsKLUdMX0FQSUNB
TEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kUmVuZGVyYnVmZmVyIChHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAg
R0xfQVBJRU5UUlkgZ2xCaW5kVGV4dHVyZSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUp
OwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kQ29sb3IgKEdM
ZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb24gKEdM
ZW51bSBtb2RlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCbGVu
ZEVxdWF0aW9uU2VwYXJhdGUgKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmMgKEdMZW51bSBz
ZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsQmxlbmRGdW5jU2VwYXJhdGUgKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0Is
IEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgICAgR0xfQVBJRU5UUlkgZ2xCdWZmZXJEYXRhIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRy
IHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCdWZmZXJTdWJEYXRhIChHTGVudW0gdGFyZ2V0LCBH
TGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKLUdM
X0FQSUNBTEwgR0xlbnVtICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzIChHTGVudW0gdGFyZ2V0KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xDbGVhciAoR0xiaXRmaWVsZCBtYXNrKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAg
R0xfQVBJRU5UUlkgZ2xDbGVhckNvbG9yIChHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xm
bG9hdCBibHVlLCBHTGZsb2F0IGFscGhhKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xDbGVhckRlcHRoZiAoR0xmbG9hdCBkZXB0aCk7Ci1HTF9BUElDQUxMIHZvaWQg
ICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xlYXJTdGVuY2lsIChHTGludCBzKTsKLUdMX0FQSUNB
TEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb2xvck1hc2sgKEdMYm9vbGVhbiByZWQs
IEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7Ci1HTF9B
UElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcGlsZVNoYWRlciAoR0x1aW50
IHNoYWRlcik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcHJl
c3NlZFRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdM
c2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCB2b2lkICAg
ICAgICAgICBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBj
b25zdCBHTHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRS
WSBnbENvcHlUZXhJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCwgR0xpbnQgYm9yZGVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xDb3B5VGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0KTsKLUdMX0FQSUNBTEwgR0x1aW50ICAgICAgICAgR0xfQVBJRU5UUlkg
Z2xDcmVhdGVQcm9ncmFtICh2b2lkKTsKLUdMX0FQSUNBTEwgR0x1aW50ICAgICAgICAgR0xfQVBJ
RU5UUlkgZ2xDcmVhdGVTaGFkZXIgKEdMZW51bSB0eXBlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgICAgR0xfQVBJRU5UUlkgZ2xDdWxsRmFjZSAoR0xlbnVtIG1vZGUpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbERlbGV0ZUJ1ZmZlcnMgKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50KiBidWZmZXJzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBmcmFtZWJ1
ZmZlcnMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbERlbGV0ZVBy
b2dyYW0gKEdMdWludCBwcm9ncmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJ
RU5UUlkgZ2xEZWxldGVSZW5kZXJidWZmZXJzIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogcmVu
ZGVyYnVmZmVycyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsRGVs
ZXRlU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xEZWxldGVUZXh0dXJlcyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHRleHR1
cmVzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEZXB0aEZ1bmMg
KEdMZW51bSBmdW5jKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xE
ZXB0aE1hc2sgKEdMYm9vbGVhbiBmbGFnKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xEZXB0aFJhbmdlZiAoR0xmbG9hdCBuLCBHTGZsb2F0IGYpOwotR0xfQVBJQ0FM
TCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbERldGFjaFNoYWRlciAoR0x1aW50IHByb2dy
YW0sIEdMdWludCBzaGFkZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRS
WSBnbERpc2FibGUgKEdMZW51bSBjYXApOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9B
UElFTlRSWSBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKLUdMX0FQ
SUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEcmF3QXJyYXlzIChHTGVudW0gbW9k
ZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
ICBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50cyAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGluZGljZXMpOwotR0xfQVBJQ0FMTCB2b2lkICAg
ICAgICAgICBHTF9BUElFTlRSWSBnbEVuYWJsZSAoR0xlbnVtIGNhcCk7Ci1HTF9BUElDQUxMIHZv
aWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKEdMdWlu
dCBpbmRleCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsRmluaXNo
ICh2b2lkKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xGbHVzaCAo
dm9pZCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0g
cmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJl
LCBHTGludCBsZXZlbCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGds
RnJvbnRGYWNlIChHTGVudW0gbW9kZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsR2VuQnVmZmVycyAoR0xzaXplaSBuLCBHTHVpbnQqIGJ1ZmZlcnMpOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdlbmVyYXRlTWlwbWFwIChHTGVudW0g
dGFyZ2V0KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZW5GcmFt
ZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdlblJlbmRlcmJ1ZmZlcnMgKEdMc2l6ZWkgbiwg
R0x1aW50KiByZW5kZXJidWZmZXJzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJ
RU5UUlkgZ2xHZW5UZXh0dXJlcyAoR0xzaXplaSBuLCBHTHVpbnQqIHRleHR1cmVzKTsKLUdMX0FQ
SUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWlu
dCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3Ro
LCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEFjdGl2ZVVuaWZvcm0gKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGlu
dCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpOwotR0xfQVBJQ0FMTCB2b2lkICAg
ICAgICAgICBHTF9BUElFTlRSWSBnbEdldEF0dGFjaGVkU2hhZGVycyAoR0x1aW50IHByb2dyYW0s
IEdMc2l6ZWkgbWF4Y291bnQsIEdMc2l6ZWkqIGNvdW50LCBHTHVpbnQqIHNoYWRlcnMpOwotR0xf
QVBJQ0FMTCBHTGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEF0dHJpYkxvY2F0aW9uIChH
THVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRCb29sZWFudiAoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4q
IHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QnVm
ZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFt
cyk7Ci1HTF9BUElDQUxMIEdMZW51bSAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RXJyb3IgKHZv
aWQpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEZsb2F0diAo
R0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
ICBHTF9BUElFTlRSWSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1z
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VydiAo
R0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAg
R0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtaXYgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUs
IEdMaW50KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBn
bEdldFByb2dyYW1JbmZvTG9nIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNp
emVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVyaXYgKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwg
R0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGds
R2V0U2hhZGVySW5mb0xvZyAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVp
KiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdM
X0FQSUVOVFJZIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwg
R0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbik7Ci1H
TF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVyU291cmNlIChH
THVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBz
b3VyY2UpOwotR0xfQVBJQ0FMTCBjb25zdCBHTHVieXRlKiBHTF9BUElFTlRSWSBnbEdldFN0cmlu
ZyAoR0xlbnVtIG5hbWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBn
bEdldFRleFBhcmFtZXRlcmZ2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQq
IHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4
UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7
Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybWZ2IChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQqIHBhcmFtcyk7Ci1HTF9BUElD
QUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybWl2IChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCBHTGludCAg
ICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAoR0x1aW50IHByb2dyYW0s
IGNvbnN0IEdMY2hhciogbmFtZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVO
VFJZIGdsR2V0VmVydGV4QXR0cmliZnYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZs
b2F0KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdl
dFZlcnRleEF0dHJpYml2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFt
cyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0
cmliUG9pbnRlcnYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwb2ludGVy
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xIaW50IChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gbW9kZSk7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiAgICAgIEdMX0FQSUVO
VFJZIGdsSXNCdWZmZXIgKEdMdWludCBidWZmZXIpOwotR0xfQVBJQ0FMTCBHTGJvb2xlYW4gICAg
ICBHTF9BUElFTlRSWSBnbElzRW5hYmxlZCAoR0xlbnVtIGNhcCk7Ci1HTF9BUElDQUxMIEdMYm9v
bGVhbiAgICAgIEdMX0FQSUVOVFJZIGdsSXNGcmFtZWJ1ZmZlciAoR0x1aW50IGZyYW1lYnVmZmVy
KTsKLUdMX0FQSUNBTEwgR0xib29sZWFuICAgICAgR0xfQVBJRU5UUlkgZ2xJc1Byb2dyYW0gKEdM
dWludCBwcm9ncmFtKTsKLUdMX0FQSUNBTEwgR0xib29sZWFuICAgICAgR0xfQVBJRU5UUlkgZ2xJ
c1JlbmRlcmJ1ZmZlciAoR0x1aW50IHJlbmRlcmJ1ZmZlcik7Ci1HTF9BUElDQUxMIEdMYm9vbGVh
biAgICAgIEdMX0FQSUVOVFJZIGdsSXNTaGFkZXIgKEdMdWludCBzaGFkZXIpOwotR0xfQVBJQ0FM
TCBHTGJvb2xlYW4gICAgICBHTF9BUElFTlRSWSBnbElzVGV4dHVyZSAoR0x1aW50IHRleHR1cmUp
OwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbExpbmVXaWR0aCAoR0xm
bG9hdCB3aWR0aCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsTGlu
a1Byb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xQaXhlbFN0b3JlaSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Ci1HTF9B
UElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsUG9seWdvbk9mZnNldCAoR0xmbG9h
dCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9B
UElFTlRSWSBnbFJlYWRQaXhlbHMgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkKiBwaXhlbHMp
OwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFJlbGVhc2VTaGFkZXJD
b21waWxlciAodm9pZCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGds
UmVuZGVyYnVmZmVyU3RvcmFnZSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsU2FtcGxlQ292ZXJhZ2UgKEdMZmxvYXQgdmFsdWUsIEdMYm9vbGVh
biBpbnZlcnQpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFNjaXNz
b3IgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTaGFkZXJCaW5hcnkgKEdMc2l6
ZWkgbiwgY29uc3QgR0x1aW50KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCBH
THZvaWQqIGJpbmFyeSwgR0xzaXplaSBsZW5ndGgpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
ICBHTF9BUElFTlRSWSBnbFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xjaGFyKiBjb25zdCogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuYyAoR0xlbnVt
IGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
ICBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUgKEdMZW51bSBmYWNlLCBHTGVudW0g
ZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsU3RlbmNpbE1hc2sgKEdMdWludCBtYXNrKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFza1NlcGFyYXRlIChHTGVudW0gZmFj
ZSwgR0x1aW50IG1hc2spOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBn
bFN0ZW5jaWxPcCAoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsT3BTZXBhcmF0ZSAo
R0xlbnVtIGZhY2UsIEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7Ci1H
TF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRCAoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9B
UElFTlRSWSBnbFRleFBhcmFtZXRlcmYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCBwYXJhbSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4
UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCog
cGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJh
bWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKLUdMX0FQ
SUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJpdiAoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQqIHBpeGVscyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5p
Zm9ybTFmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCogdik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybTFpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgeCk7Ci1HTF9BUElDQUxM
IHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFpdiAoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAg
ICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMmYgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bTJmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFVuaWZvcm0yaSAoR0xpbnQg
bG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBH
TF9BUElFTlRSWSBnbFVuaWZvcm0yaXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCogdik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGds
VW5pZm9ybTNmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTNmdiAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpOwotR0xfQVBJ
Q0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFVuaWZvcm0zaSAoR0xpbnQgbG9jYXRp
b24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
ICBHTF9BUElFTlRSWSBnbFVuaWZvcm0zaXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCogdik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsVW5pZm9ybTRmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgeiwgR0xmbG9hdCB3KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkg
Z2xVbmlmb3JtNGZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9h
dCogdik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRp
IChHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7Ci1H
TF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpdiAoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4MmZ2IChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFs
dWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFVuaWZvcm1NYXRy
aXgzZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0KiB2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybU1hdHJpeDRmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7
Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmFsaWRhdGVQcm9ncmFt
IChHTHVpbnQgcHJvZ3JhbSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsVmVydGV4QXR0cmliMWYgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjFmdiAoR0x1aW50IGluZHgs
IGNvbnN0IEdMZmxvYXQqIHZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsVmVydGV4QXR0cmliMmYgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmli
MmZ2IChHTHVpbnQgaW5keCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIzZiAoR0x1aW50IGluZHgsIEdM
ZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAg
ICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjNmdiAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxv
YXQqIHZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVy
dGV4QXR0cmliNGYgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6
LCBHTGZsb2F0IHcpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYjRmdiAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyk7Ci1HTF9B
UElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliUG9pbnRlciAo
R0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXpl
ZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogcHRyKTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydCAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotCi0vKiBPcGVuR0wgRVMgMy4wICovCi0KLUdMX0FQ
SUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZWFkQnVmZmVyIChHTGVudW0gbW9k
ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsRHJhd1JhbmdlRWxl
bWVudHMgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQsIEdMc2l6ZWkgY291
bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGluZGljZXMpOwotR0xfQVBJQ0FMTCB2b2lk
ICAgICAgICAgICBHTF9BUElFTlRSWSBnbFRleEltYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xUZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQqIHBpeGVscyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsQ29weVRleFN1YkltYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1HTF9BUElDQUxMIHZvaWQgICAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlM0QgKEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCBHTHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElF
TlRSWSBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZl
bCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6
ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAg
ICAgICBHTF9BUElFTlRSWSBnbEdlblF1ZXJpZXMgKEdMc2l6ZWkgbiwgR0x1aW50KiBpZHMpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbERlbGV0ZVF1ZXJpZXMgKEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50KiBpZHMpOwotR0xfQVBJQ0FMTCBHTGJvb2xlYW4gICAgICBH
TF9BUElFTlRSWSBnbElzUXVlcnkgKEdMdWludCBpZCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsQmVnaW5RdWVyeSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKTsK
LUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xFbmRRdWVyeSAoR0xlbnVt
IHRhcmdldCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0UXVl
cnlpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQ
SUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdHVpdiAoR0x1
aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgR0xib29s
ZWFuICAgICAgR0xfQVBJRU5UUlkgZ2xVbm1hcEJ1ZmZlciAoR0xlbnVtIHRhcmdldCk7Ci1HTF9B
UElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUG9pbnRlcnYgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcGFyYW1zKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEcmF3QnVmZmVycyAoR0xzaXplaSBuLCBjb25z
dCBHTGVudW0qIGJ1ZnMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBn
bFVuaWZvcm1NYXRyaXgyeDNmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4M3gyZnYgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1
ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJp
eDJ4NGZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0xmbG9hdCogdmFsdWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9B
UElFTlRSWSBnbFVuaWZvcm1NYXRyaXg0eDJmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKTsKLUdMX0FQSUNB
TEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4M3g0ZnYgKEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZs
b2F0KiB2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5p
Zm9ybU1hdHJpeDR4M2Z2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFsdWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAg
ICAgICBHTF9BUElFTlRSWSBnbEJsaXRGcmFtZWJ1ZmZlciAoR0xpbnQgc3JjWDAsIEdMaW50IHNy
Y1kwLCBHTGludCBzcmNYMSwgR0xpbnQgc3JjWTEsIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwg
R0xpbnQgZHN0WDEsIEdMaW50IGRzdFkxLCBHTGJpdGZpZWxkIG1hc2ssIEdMZW51bSBmaWx0ZXIp
OwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLUdMX0FQSUNB
TEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllciAo
R0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBs
ZXZlbCwgR0xpbnQgbGF5ZXIpOwotR0xfQVBJQ0FMTCBHTHZvaWQqICAgICAgICBHTF9BUElFTlRS
WSBnbE1hcEJ1ZmZlclJhbmdlIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2Vzcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZSAoR0xlbnVtIHRhcmdldCwg
R0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCk7Ci1HTF9BUElDQUxMIHZvaWQgICAg
ICAgICAgIEdMX0FQSUVOVFJZIGdsQmluZFZlcnRleEFycmF5IChHTHVpbnQgYXJyYXkpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5cyAo
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGFycmF5cyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAg
ICAgIEdMX0FQSUVOVFJZIGdsR2VuVmVydGV4QXJyYXlzIChHTHNpemVpIG4sIEdMdWludCogYXJy
YXlzKTsKLUdMX0FQSUNBTEwgR0xib29sZWFuICAgICAgR0xfQVBJRU5UUlkgZ2xJc1ZlcnRleEFy
cmF5IChHTHVpbnQgYXJyYXkpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRS
WSBnbEdldEludGVnZXJpX3YgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQqIGRh
dGEpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEJlZ2luVHJhbnNm
b3JtRmVlZGJhY2sgKEdMZW51bSBwcmltaXRpdmVNb2RlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAg
ICAgICAgR0xfQVBJRU5UUlkgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjayAodm9pZCk7Ci1HTF9BUElD
QUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmluZEJ1ZmZlclJhbmdlIChHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZmZXIsIEdMaW50cHRyIG9mZnNldCwgR0xz
aXplaXB0ciBzaXplKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xC
aW5kQnVmZmVyQmFzZSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVy
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFy
KiBjb25zdCogdmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2RlKTsKLUdMX0FQSUNBTEwgdm9pZCAg
ICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcgKEdMdWlu
dCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSogbGVuZ3Ro
LCBHTHNpemVpKiBzaXplLCBHTGVudW0qIHR5cGUsIEdMY2hhciogbmFtZSk7Ci1HTF9BUElDQUxM
IHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliSVBvaW50ZXIgKEdMdWlu
dCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBH
THZvaWQqIHBvaW50ZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBn
bEdldFZlcnRleEF0dHJpYklpdiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50KiBw
YXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFZlcnRl
eEF0dHJpYkl1aXYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQqIHBhcmFtcyk7
Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliSTRp
IChHTHVpbnQgaW5kZXgsIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkk0dWkgKEdM
dWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0x1aW50IHcpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkk0aXYgKEdM
dWludCBpbmRleCwgY29uc3QgR0xpbnQqIHYpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBH
TF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkk0dWl2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWlu
dCogdik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9y
bXVpdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQqIHBhcmFtcyk7Ci1H
TF9BUElDQUxMIEdMaW50ICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RnJhZ0RhdGFMb2NhdGlv
biAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci1HTF9BUElDQUxMIHZvaWQg
ICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTF1aSAoR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCB2MCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJ1
aSAoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM3VpIChHTGludCBsb2NhdGlvbiwgR0x1
aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsVW5pZm9ybTR1aSAoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1
aW50IHYxLCBHTHVpbnQgdjIsIEdMdWludCB2Myk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsVW5pZm9ybTF1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTHVpbnQqIHZhbHVlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJ
RU5UUlkgZ2xVbmlmb3JtMnVpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdWludCogdmFsdWUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBn
bFVuaWZvcm0zdWl2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
KiB2YWx1ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bTR1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQqIHZhbHVl
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcml2
IChHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGludCogdmFsdWUpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbENsZWFyQnVmZmVydWl2IChH
TGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTHVpbnQqIHZhbHVlKTsKLUdM
X0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcmZ2IChHTGVu
dW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSk7Ci1HTF9B
UElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xlYXJCdWZmZXJmaSAoR0xlbnVt
IGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgR0xmbG9hdCBkZXB0aCwgR0xpbnQgc3RlbmNpbCk7
Ci1HTF9BUElDQUxMIGNvbnN0IEdMdWJ5dGUqIEdMX0FQSUVOVFJZIGdsR2V0U3RyaW5naSAoR0xl
bnVtIG5hbWUsIEdMdWludCBpbmRleCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsQ29weUJ1ZmZlclN1YkRhdGEgKEdMZW51bSByZWFkVGFyZ2V0LCBHTGVudW0gd3Jp
dGVUYXJnZXQsIEdMaW50cHRyIHJlYWRPZmZzZXQsIEdMaW50cHRyIHdyaXRlT2Zmc2V0LCBHTHNp
emVpcHRyIHNpemUpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdl
dFVuaWZvcm1JbmRpY2VzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlmb3JtQ291bnQsIGNv
bnN0IEdMY2hhciogY29uc3QqIHVuaWZvcm1OYW1lcywgR0x1aW50KiB1bmlmb3JtSW5kaWNlcyk7
Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9y
bXNpdiAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgdW5pZm9ybUNvdW50LCBjb25zdCBHTHVpbnQq
IHVuaWZvcm1JbmRpY2VzLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpOwotR0xfQVBJQ0FM
TCBHTHVpbnQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1CbG9ja0luZGV4IChHTHVp
bnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiB1bmlmb3JtQmxvY2tOYW1lKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdiAoR0x1
aW50IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHVuaWZvcm1CbG9j
a0luZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiB1bmlmb3Jt
QmxvY2tOYW1lKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlm
b3JtQmxvY2tCaW5kaW5nIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4
LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5c0luc3RhbmNlZCAoR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlQ291bnQpOwotR0xfQVBJQ0FMTCB2
b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0luc3RhbmNlZCAoR0xlbnVt
IG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGluZGljZXMs
IEdMc2l6ZWkgaW5zdGFuY2VDb3VudCk7Ci1HTF9BUElDQUxMIEdMc3luYyAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsRmVuY2VTeW5jIChHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKTsK
LUdMX0FQSUNBTEwgR0xib29sZWFuICAgICAgR0xfQVBJRU5UUlkgZ2xJc1N5bmMgKEdMc3luYyBz
eW5jKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEZWxldGVTeW5j
IChHTHN5bmMgc3luYyk7Ci1HTF9BUElDQUxMIEdMZW51bSAgICAgICAgIEdMX0FQSUVOVFJZIGds
Q2xpZW50V2FpdFN5bmMgKEdMc3luYyBzeW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0
aW1lb3V0KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xXYWl0U3lu
YyAoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEludGVnZXI2NHYgKEdMZW51
bSBwbmFtZSwgR0xpbnQ2NCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xf
QVBJRU5UUlkgZ2xHZXRTeW5jaXYgKEdMc3luYyBzeW5jLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogdmFsdWVzKTsKLUdMX0FQSUNBTEwgdm9p
ZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyNjRpX3YgKEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xpbnQ2NCogZGF0YSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAg
IEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUGFyYW1ldGVyaTY0diAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludDY0KiBwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBH
TF9BUElFTlRSWSBnbEdlblNhbXBsZXJzIChHTHNpemVpIGNvdW50LCBHTHVpbnQqIHNhbXBsZXJz
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEZWxldGVTYW1wbGVy
cyAoR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50KiBzYW1wbGVycyk7Ci1HTF9BUElDQUxMIEdM
Ym9vbGVhbiAgICAgIEdMX0FQSUVOVFJZIGdsSXNTYW1wbGVyIChHTHVpbnQgc2FtcGxlcik7Ci1H
TF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsQmluZFNhbXBsZXIgKEdMdWlu
dCB1bml0LCBHTHVpbnQgc2FtcGxlcik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQ
SUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcmkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUs
IEdMaW50IHBhcmFtKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xT
YW1wbGVyUGFyYW1ldGVyaXYgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50KiBwYXJhbSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2Ft
cGxlclBhcmFtZXRlcmYgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFNhbXBsZXJQYXJh
bWV0ZXJmdiAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCogcGFy
YW0pOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFNhbXBsZXJQ
YXJhbWV0ZXJpdiAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7
Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJhbXMpOwot
R0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkRpdmlz
b3IgKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAg
ICAgICBHTF9BUElFTlRSWSBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayAoR0xlbnVtIHRhcmdldCwg
R0x1aW50IGlkKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEZWxl
dGVUcmFuc2Zvcm1GZWVkYmFja3MgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBpZHMpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbEdlblRyYW5zZm9ybUZlZWRiYWNr
cyAoR0xzaXplaSBuLCBHTHVpbnQqIGlkcyk7Ci1HTF9BUElDQUxMIEdMYm9vbGVhbiAgICAgIEdM
X0FQSUVOVFJZIGdsSXNUcmFuc2Zvcm1GZWVkYmFjayAoR0x1aW50IGlkKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrICh2b2lk
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZXN1bWVUcmFuc2Zv
cm1GZWVkYmFjayAodm9pZCk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZ
IGdsR2V0UHJvZ3JhbUJpbmFyeSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSogbGVuZ3RoLCBHTGVudW0qIGJpbmFyeUZvcm1hdCwgR0x2b2lkKiBiaW5hcnkpOwotR0xf
QVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFByb2dyYW1CaW5hcnkgKEdMdWlu
dCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCBHTHZvaWQqIGJpbmFyeSwgR0xz
aXplaSBsZW5ndGgpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgICBHTF9BUElFTlRSWSBnbFBy
b2dyYW1QYXJhbWV0ZXJpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1
ZSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICAgIEdMX0FQSUVOVFJZIGdsSW52YWxpZGF0ZUZy
YW1lYnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBH
TGVudW0qIGF0dGFjaG1lbnRzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5U
UlkgZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVt
QXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSogYXR0YWNobWVudHMsIEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAg
ICAgR0xfQVBJRU5UUlkgZ2xUZXhTdG9yYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2
ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhTdG9yYWdlM0Qg
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKLUdMX0FQSUNBTEwg
dm9pZCAgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlcm5hbGZvcm1hdGl2IChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZT
aXplLCBHTGludCogcGFyYW1zKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzMS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzMS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMxLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTI0IEBACisjaWZuZGVmIF9fZ2wzMV9oXworI2Rl
ZmluZSBfX2dsMzFfaF8gMQorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKKy8qCisqKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSBUaGUgS2hyb25vcyBHcm91cCBJ
bmMuCisqKgorKiogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQv
b3IgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyoqICJNYXRlcmlhbHMiKSwg
dG8gZGVhbCBpbiB0aGUgTWF0ZXJpYWxzIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwor
Kiogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLAorKiogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29w
aWVzIG9mIHRoZSBNYXRlcmlhbHMsIGFuZCB0bworKiogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgTWF0ZXJpYWxzIGFyZSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyoqIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKKyoqCisqKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorKiogaW4gYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgorKioKKyoqIFRI
RSBNQVRFUklBTFMgQVJFIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsCisqKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YKKyoqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyoqIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisq
KiBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULAorKiogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUKKyoqIE1BVEVSSUFMUyBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOIFRIRSBNQVRFUklBTFMuCisqLworLyoKKyoqIFRoaXMgaGVhZGVyIGlz
IGdlbmVyYXRlZCBmcm9tIHRoZSBLaHJvbm9zIE9wZW5HTCAvIE9wZW5HTCBFUyBYTUwKKyoqIEFQ
SSBSZWdpc3RyeS4gVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgUmVnaXN0cnksIGdlbmVyYXRv
ciBzY3JpcHRzCisqKiB1c2VkIHRvIG1ha2UgdGhlIGhlYWRlciwgYW5kIHRoZSBoZWFkZXIgY2Fu
IGJlIGZvdW5kIGF0CisqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS8KKyoqCisq
KiBLaHJvbm9zICRSZXZpc2lvbiQgb24gJERhdGUkCisqLworCisjaW5jbHVkZSA8R0xFUzMvZ2wz
cGxhdGZvcm0uaD4KKworI2lmbmRlZiBHTF9BUElFTlRSWVAKKyNkZWZpbmUgR0xfQVBJRU5UUllQ
IEdMX0FQSUVOVFJZKgorI2VuZGlmCisKKy8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTUwODA5ICov
CisKKy8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CisgKiBBUEk6IGdsZXMyCisgKiBQcm9maWxl
OiBjb21tb24KKyAqIFZlcnNpb25zIGNvbnNpZGVyZWQ6IDJcLlswLTldfDNcLlswMV0KKyAqIFZl
cnNpb25zIGVtaXR0ZWQ6IC4qCisgKiBEZWZhdWx0IGV4dGVuc2lvbnMgaW5jbHVkZWQ6IE5vbmUK
KyAqIEFkZGl0aW9uYWwgZXh0ZW5zaW9ucyBpbmNsdWRlZDogX25vbWF0Y2hfXgorICogRXh0ZW5z
aW9ucyByZW1vdmVkOiBfbm9tYXRjaF9eCisgKi8KKworI2lmbmRlZiBHTF9FU19WRVJTSU9OXzJf
MAorI2RlZmluZSBHTF9FU19WRVJTSU9OXzJfMCAxCisjaW5jbHVkZSA8S0hSL2tocnBsYXRmb3Jt
Lmg+Cit0eXBlZGVmIGtocm9ub3NfaW50OF90IEdMYnl0ZTsKK3R5cGVkZWYga2hyb25vc19mbG9h
dF90IEdMY2xhbXBmOwordHlwZWRlZiBraHJvbm9zX2ludDMyX3QgR0xmaXhlZDsKK3R5cGVkZWYg
c2hvcnQgR0xzaG9ydDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0x1c2hvcnQ7Cit0eXBlZGVm
IHZvaWQgR0x2b2lkOwordHlwZWRlZiBzdHJ1Y3QgX19HTHN5bmMgKkdMc3luYzsKK3R5cGVkZWYg
a2hyb25vc19pbnQ2NF90IEdMaW50NjQ7Cit0eXBlZGVmIGtocm9ub3NfdWludDY0X3QgR0x1aW50
NjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBHTGVudW07Cit0eXBlZGVmIHVuc2lnbmVkIGludCBH
THVpbnQ7Cit0eXBlZGVmIGNoYXIgR0xjaGFyOwordHlwZWRlZiBraHJvbm9zX2Zsb2F0X3QgR0xm
bG9hdDsKK3R5cGVkZWYga2hyb25vc19zc2l6ZV90IEdMc2l6ZWlwdHI7Cit0eXBlZGVmIGtocm9u
b3NfaW50cHRyX3QgR0xpbnRwdHI7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBHTGJpdGZpZWxkOwor
dHlwZWRlZiBpbnQgR0xpbnQ7Cit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgR0xib29sZWFuOwordHlw
ZWRlZiBpbnQgR0xzaXplaTsKK3R5cGVkZWYga2hyb25vc191aW50OF90IEdMdWJ5dGU7CisjZGVm
aW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQgICAgICAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5l
IEdMX1NURU5DSUxfQlVGRkVSX0JJVCAgICAgICAgICAgICAweDAwMDAwNDAwCisjZGVmaW5lIEdM
X0NPTE9SX0JVRkZFUl9CSVQgICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIEdMX0ZB
TFNFICAgICAgICAgICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIEdMX1RSVUUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIEdMX1BPSU5UUyAgICAgICAgICAgICAgICAgICAg
ICAgICAweDAwMDAKKyNkZWZpbmUgR0xfTElORVMgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MDAwMQorI2RlZmluZSBHTF9MSU5FX0xPT1AgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyCisj
ZGVmaW5lIEdMX0xJTkVfU1RSSVAgICAgICAgICAgICAgICAgICAgICAweDAwMDMKKyNkZWZpbmUg
R0xfVFJJQU5HTEVTICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNAorI2RlZmluZSBHTF9UUklB
TkdMRV9TVFJJUCAgICAgICAgICAgICAgICAgMHgwMDA1CisjZGVmaW5lIEdMX1RSSUFOR0xFX0ZB
TiAgICAgICAgICAgICAgICAgICAweDAwMDYKKyNkZWZpbmUgR0xfWkVSTyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAKKyNkZWZpbmUgR0xfT05FICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEKKyNkZWZpbmUgR0xfU1JDX0NPTE9SICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMAorI2Rl
ZmluZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SICAgICAgICAgICAgMHgwMzAxCisjZGVmaW5lIEdM
X1NSQ19BTFBIQSAgICAgICAgICAgICAgICAgICAgICAweDAzMDIKKyNkZWZpbmUgR0xfT05FX01J
TlVTX1NSQ19BTFBIQSAgICAgICAgICAgIDB4MDMwMworI2RlZmluZSBHTF9EU1RfQUxQSEEgICAg
ICAgICAgICAgICAgICAgICAgMHgwMzA0CisjZGVmaW5lIEdMX09ORV9NSU5VU19EU1RfQUxQSEEg
ICAgICAgICAgICAweDAzMDUKKyNkZWZpbmUgR0xfRFNUX0NPTE9SICAgICAgICAgICAgICAgICAg
ICAgIDB4MDMwNgorI2RlZmluZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SICAgICAgICAgICAgMHgw
MzA3CisjZGVmaW5lIEdMX1NSQ19BTFBIQV9TQVRVUkFURSAgICAgICAgICAgICAweDAzMDgKKyNk
ZWZpbmUgR0xfRlVOQ19BREQgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwNgorI2RlZmluZSBH
TF9CTEVORF9FUVVBVElPTiAgICAgICAgICAgICAgICAgMHg4MDA5CisjZGVmaW5lIEdMX0JMRU5E
X0VRVUFUSU9OX1JHQiAgICAgICAgICAgICAweDgwMDkKKyNkZWZpbmUgR0xfQkxFTkRfRVFVQVRJ
T05fQUxQSEEgICAgICAgICAgIDB4ODgzRAorI2RlZmluZSBHTF9GVU5DX1NVQlRSQUNUICAgICAg
ICAgICAgICAgICAgMHg4MDBBCisjZGVmaW5lIEdMX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVCAgICAg
ICAgICAweDgwMEIKKyNkZWZpbmUgR0xfQkxFTkRfRFNUX1JHQiAgICAgICAgICAgICAgICAgIDB4
ODBDOAorI2RlZmluZSBHTF9CTEVORF9TUkNfUkdCICAgICAgICAgICAgICAgICAgMHg4MEM5Cisj
ZGVmaW5lIEdMX0JMRU5EX0RTVF9BTFBIQSAgICAgICAgICAgICAgICAweDgwQ0EKKyNkZWZpbmUg
R0xfQkxFTkRfU1JDX0FMUEhBICAgICAgICAgICAgICAgIDB4ODBDQgorI2RlZmluZSBHTF9DT05T
VEFOVF9DT0xPUiAgICAgICAgICAgICAgICAgMHg4MDAxCisjZGVmaW5lIEdMX09ORV9NSU5VU19D
T05TVEFOVF9DT0xPUiAgICAgICAweDgwMDIKKyNkZWZpbmUgR0xfQ09OU1RBTlRfQUxQSEEgICAg
ICAgICAgICAgICAgIDB4ODAwMworI2RlZmluZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEg
ICAgICAgMHg4MDA0CisjZGVmaW5lIEdMX0JMRU5EX0NPTE9SICAgICAgICAgICAgICAgICAgICAw
eDgwMDUKKyNkZWZpbmUgR0xfQVJSQVlfQlVGRkVSICAgICAgICAgICAgICAgICAgIDB4ODg5Mgor
I2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiAgICAgICAgICAgMHg4ODkzCisjZGVmaW5l
IEdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HICAgICAgICAgICAweDg4OTQKKyNkZWZpbmUgR0xfRUxF
TUVOVF9BUlJBWV9CVUZGRVJfQklORElORyAgIDB4ODg5NQorI2RlZmluZSBHTF9TVFJFQU1fRFJB
VyAgICAgICAgICAgICAgICAgICAgMHg4OEUwCisjZGVmaW5lIEdMX1NUQVRJQ19EUkFXICAgICAg
ICAgICAgICAgICAgICAweDg4RTQKKyNkZWZpbmUgR0xfRFlOQU1JQ19EUkFXICAgICAgICAgICAg
ICAgICAgIDB4ODhFOAorI2RlZmluZSBHTF9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAg
MHg4NzY0CisjZGVmaW5lIEdMX0JVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICAweDg3NjUK
KyNkZWZpbmUgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCICAgICAgICAgIDB4ODYyNgorI2RlZmlu
ZSBHTF9GUk9OVCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDA0CisjZGVmaW5lIEdMX0JB
Q0sgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDUKKyNkZWZpbmUgR0xfRlJPTlRfQU5E
X0JBQ0sgICAgICAgICAgICAgICAgIDB4MDQwOAorI2RlZmluZSBHTF9URVhUVVJFXzJEICAgICAg
ICAgICAgICAgICAgICAgMHgwREUxCisjZGVmaW5lIEdMX0NVTExfRkFDRSAgICAgICAgICAgICAg
ICAgICAgICAweDBCNDQKKyNkZWZpbmUgR0xfQkxFTkQgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MEJFMgorI2RlZmluZSBHTF9ESVRIRVIgICAgICAgICAgICAgICAgICAgICAgICAgMHgwQkQw
CisjZGVmaW5lIEdMX1NURU5DSUxfVEVTVCAgICAgICAgICAgICAgICAgICAweDBCOTAKKyNkZWZp
bmUgR0xfREVQVEhfVEVTVCAgICAgICAgICAgICAgICAgICAgIDB4MEI3MQorI2RlZmluZSBHTF9T
Q0lTU09SX1RFU1QgICAgICAgICAgICAgICAgICAgMHgwQzExCisjZGVmaW5lIEdMX1BPTFlHT05f
T0ZGU0VUX0ZJTEwgICAgICAgICAgICAweDgwMzcKKyNkZWZpbmUgR0xfU0FNUExFX0FMUEhBX1RP
X0NPVkVSQUdFICAgICAgIDB4ODA5RQorI2RlZmluZSBHTF9TQU1QTEVfQ09WRVJBR0UgICAgICAg
ICAgICAgICAgMHg4MEEwCisjZGVmaW5lIEdMX05PX0VSUk9SICAgICAgICAgICAgICAgICAgICAg
ICAwCisjZGVmaW5lIEdMX0lOVkFMSURfRU5VTSAgICAgICAgICAgICAgICAgICAweDA1MDAKKyNk
ZWZpbmUgR0xfSU5WQUxJRF9WQUxVRSAgICAgICAgICAgICAgICAgIDB4MDUwMQorI2RlZmluZSBH
TF9JTlZBTElEX09QRVJBVElPTiAgICAgICAgICAgICAgMHgwNTAyCisjZGVmaW5lIEdMX09VVF9P
Rl9NRU1PUlkgICAgICAgICAgICAgICAgICAweDA1MDUKKyNkZWZpbmUgR0xfQ1cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDkwMAorI2RlZmluZSBHTF9DQ1cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgwOTAxCisjZGVmaW5lIEdMX0xJTkVfV0lEVEggICAgICAgICAgICAgICAg
ICAgICAweDBCMjEKKyNkZWZpbmUgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFICAgICAgIDB4
ODQ2RAorI2RlZmluZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UgICAgICAgMHg4NDZFCisj
ZGVmaW5lIEdMX0NVTExfRkFDRV9NT0RFICAgICAgICAgICAgICAgICAweDBCNDUKKyNkZWZpbmUg
R0xfRlJPTlRfRkFDRSAgICAgICAgICAgICAgICAgICAgIDB4MEI0NgorI2RlZmluZSBHTF9ERVBU
SF9SQU5HRSAgICAgICAgICAgICAgICAgICAgMHgwQjcwCisjZGVmaW5lIEdMX0RFUFRIX1dSSVRF
TUFTSyAgICAgICAgICAgICAgICAweDBCNzIKKyNkZWZpbmUgR0xfREVQVEhfQ0xFQVJfVkFMVUUg
ICAgICAgICAgICAgIDB4MEI3MworI2RlZmluZSBHTF9ERVBUSF9GVU5DICAgICAgICAgICAgICAg
ICAgICAgMHgwQjc0CisjZGVmaW5lIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUUgICAgICAgICAgICAw
eDBCOTEKKyNkZWZpbmUgR0xfU1RFTkNJTF9GVU5DICAgICAgICAgICAgICAgICAgIDB4MEI5Mgor
I2RlZmluZSBHTF9TVEVOQ0lMX0ZBSUwgICAgICAgICAgICAgICAgICAgMHgwQjk0CisjZGVmaW5l
IEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMICAgICAgICAweDBCOTUKKyNkZWZpbmUgR0xfU1RF
TkNJTF9QQVNTX0RFUFRIX1BBU1MgICAgICAgIDB4MEI5NgorI2RlZmluZSBHTF9TVEVOQ0lMX1JF
RiAgICAgICAgICAgICAgICAgICAgMHgwQjk3CisjZGVmaW5lIEdMX1NURU5DSUxfVkFMVUVfTUFT
SyAgICAgICAgICAgICAweDBCOTMKKyNkZWZpbmUgR0xfU1RFTkNJTF9XUklURU1BU0sgICAgICAg
ICAgICAgIDB4MEI5OAorI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfRlVOQyAgICAgICAgICAgICAg
MHg4ODAwCisjZGVmaW5lIEdMX1NURU5DSUxfQkFDS19GQUlMICAgICAgICAgICAgICAweDg4MDEK
KyNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCAgIDB4ODgwMgorI2RlZmlu
ZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTICAgMHg4ODAzCisjZGVmaW5lIEdMX1NU
RU5DSUxfQkFDS19SRUYgICAgICAgICAgICAgICAweDhDQTMKKyNkZWZpbmUgR0xfU1RFTkNJTF9C
QUNLX1ZBTFVFX01BU0sgICAgICAgIDB4OENBNAorI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfV1JJ
VEVNQVNLICAgICAgICAgMHg4Q0E1CisjZGVmaW5lIEdMX1ZJRVdQT1JUICAgICAgICAgICAgICAg
ICAgICAgICAweDBCQTIKKyNkZWZpbmUgR0xfU0NJU1NPUl9CT1ggICAgICAgICAgICAgICAgICAg
IDB4MEMxMAorI2RlZmluZSBHTF9DT0xPUl9DTEVBUl9WQUxVRSAgICAgICAgICAgICAgMHgwQzIy
CisjZGVmaW5lIEdMX0NPTE9SX1dSSVRFTUFTSyAgICAgICAgICAgICAgICAweDBDMjMKKyNkZWZp
bmUgR0xfVU5QQUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgIDB4MENGNQorI2RlZmluZSBHTF9Q
QUNLX0FMSUdOTUVOVCAgICAgICAgICAgICAgICAgMHgwRDA1CisjZGVmaW5lIEdMX01BWF9URVhU
VVJFX1NJWkUgICAgICAgICAgICAgICAweDBEMzMKKyNkZWZpbmUgR0xfTUFYX1ZJRVdQT1JUX0RJ
TVMgICAgICAgICAgICAgIDB4MEQzQQorI2RlZmluZSBHTF9TVUJQSVhFTF9CSVRTICAgICAgICAg
ICAgICAgICAgMHgwRDUwCisjZGVmaW5lIEdMX1JFRF9CSVRTICAgICAgICAgICAgICAgICAgICAg
ICAweDBENTIKKyNkZWZpbmUgR0xfR1JFRU5fQklUUyAgICAgICAgICAgICAgICAgICAgIDB4MEQ1
MworI2RlZmluZSBHTF9CTFVFX0JJVFMgICAgICAgICAgICAgICAgICAgICAgMHgwRDU0CisjZGVm
aW5lIEdMX0FMUEhBX0JJVFMgICAgICAgICAgICAgICAgICAgICAweDBENTUKKyNkZWZpbmUgR0xf
REVQVEhfQklUUyAgICAgICAgICAgICAgICAgICAgIDB4MEQ1NgorI2RlZmluZSBHTF9TVEVOQ0lM
X0JJVFMgICAgICAgICAgICAgICAgICAgMHgwRDU3CisjZGVmaW5lIEdMX1BPTFlHT05fT0ZGU0VU
X1VOSVRTICAgICAgICAgICAweDJBMDAKKyNkZWZpbmUgR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9S
ICAgICAgICAgIDB4ODAzOAorI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdfMkQgICAgICAgICAg
ICAgMHg4MDY5CisjZGVmaW5lIEdMX1NBTVBMRV9CVUZGRVJTICAgICAgICAgICAgICAgICAweDgw
QTgKKyNkZWZpbmUgR0xfU0FNUExFUyAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBBOQorI2Rl
ZmluZSBHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUgICAgICAgICAgMHg4MEFBCisjZGVmaW5lIEdM
X1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQgICAgICAgICAweDgwQUIKKyNkZWZpbmUgR0xfTlVNX0NP
TVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIDB4ODZBMgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1RF
WFRVUkVfRk9STUFUUyAgICAgMHg4NkEzCisjZGVmaW5lIEdMX0RPTlRfQ0FSRSAgICAgICAgICAg
ICAgICAgICAgICAweDExMDAKKyNkZWZpbmUgR0xfRkFTVEVTVCAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MTEwMQorI2RlZmluZSBHTF9OSUNFU1QgICAgICAgICAgICAgICAgICAgICAgICAgMHgx
MTAyCisjZGVmaW5lIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UICAgICAgICAgICAweDgxOTIKKyNk
ZWZpbmUgR0xfQllURSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQwMAorI2RlZmluZSBH
TF9VTlNJR05FRF9CWVRFICAgICAgICAgICAgICAgICAgMHgxNDAxCisjZGVmaW5lIEdMX1NIT1JU
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDIKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hP
UlQgICAgICAgICAgICAgICAgIDB4MTQwMworI2RlZmluZSBHTF9JTlQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgxNDA0CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVCAgICAgICAgICAgICAg
ICAgICAweDE0MDUKKyNkZWZpbmUgR0xfRkxPQVQgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MTQwNgorI2RlZmluZSBHTF9GSVhFRCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNDBDCisj
ZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVCAgICAgICAgICAgICAgICAweDE5MDIKKyNkZWZpbmUg
R0xfQUxQSEEgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTkwNgorI2RlZmluZSBHTF9SR0Ig
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTA3CisjZGVmaW5lIEdMX1JHQkEgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDE5MDgKKyNkZWZpbmUgR0xfTFVNSU5BTkNFICAgICAgICAg
ICAgICAgICAgICAgIDB4MTkwOQorI2RlZmluZSBHTF9MVU1JTkFOQ0VfQUxQSEEgICAgICAgICAg
ICAgICAgMHgxOTBBCisjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQgICAgICAgICAw
eDgwMzMKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSAgICAgICAgIDB4ODAzNAor
I2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSAgICAgICAgICAgMHg4MzYzCisjZGVmaW5l
IEdMX0ZSQUdNRU5UX1NIQURFUiAgICAgICAgICAgICAgICAweDhCMzAKKyNkZWZpbmUgR0xfVkVS
VEVYX1NIQURFUiAgICAgICAgICAgICAgICAgIDB4OEIzMQorI2RlZmluZSBHTF9NQVhfVkVSVEVY
X0FUVFJJQlMgICAgICAgICAgICAgMHg4ODY5CisjZGVmaW5lIEdMX01BWF9WRVJURVhfVU5JRk9S
TV9WRUNUT1JTICAgICAweDhERkIKKyNkZWZpbmUgR0xfTUFYX1ZBUllJTkdfVkVDVE9SUyAgICAg
ICAgICAgIDB4OERGQworI2RlZmluZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklU
UyAweDhCNEQKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTIDB4OEI0
QworI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUyAgICAgICAgMHg4ODcyCisjZGVm
aW5lIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgICAweDhERkQKKyNkZWZpbmUgR0xf
U0hBREVSX1RZUEUgICAgICAgICAgICAgICAgICAgIDB4OEI0RgorI2RlZmluZSBHTF9ERUxFVEVf
U1RBVFVTICAgICAgICAgICAgICAgICAgMHg4QjgwCisjZGVmaW5lIEdMX0xJTktfU1RBVFVTICAg
ICAgICAgICAgICAgICAgICAweDhCODIKKyNkZWZpbmUgR0xfVkFMSURBVEVfU1RBVFVTICAgICAg
ICAgICAgICAgIDB4OEI4MworI2RlZmluZSBHTF9BVFRBQ0hFRF9TSEFERVJTICAgICAgICAgICAg
ICAgMHg4Qjg1CisjZGVmaW5lIEdMX0FDVElWRV9VTklGT1JNUyAgICAgICAgICAgICAgICAweDhC
ODYKKyNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCAgICAgIDB4OEI4NworI2Rl
ZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFUyAgICAgICAgICAgICAgMHg4Qjg5CisjZGVmaW5lIEdM
X0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCAgICAweDhCOEEKKyNkZWZpbmUgR0xfU0hBRElO
R19MQU5HVUFHRV9WRVJTSU9OICAgICAgIDB4OEI4QworI2RlZmluZSBHTF9DVVJSRU5UX1BST0dS
QU0gICAgICAgICAgICAgICAgMHg4QjhECisjZGVmaW5lIEdMX05FVkVSICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDAyMDAKKyNkZWZpbmUgR0xfTEVTUyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MDIwMQorI2RlZmluZSBHTF9FUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgw
MjAyCisjZGVmaW5lIEdMX0xFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDMKKyNk
ZWZpbmUgR0xfR1JFQVRFUiAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwNAorI2RlZmluZSBH
TF9OT1RFUVVBTCAgICAgICAgICAgICAgICAgICAgICAgMHgwMjA1CisjZGVmaW5lIEdMX0dFUVVB
TCAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDYKKyNkZWZpbmUgR0xfQUxXQVlTICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4MDIwNworI2RlZmluZSBHTF9LRUVQICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHgxRTAwCisjZGVmaW5lIEdMX1JFUExBQ0UgICAgICAgICAgICAgICAgICAg
ICAgICAweDFFMDEKKyNkZWZpbmUgR0xfSU5DUiAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
MUUwMgorI2RlZmluZSBHTF9ERUNSICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxRTAzCisj
ZGVmaW5lIEdMX0lOVkVSVCAgICAgICAgICAgICAgICAgICAgICAgICAweDE1MEEKKyNkZWZpbmUg
R0xfSU5DUl9XUkFQICAgICAgICAgICAgICAgICAgICAgIDB4ODUwNworI2RlZmluZSBHTF9ERUNS
X1dSQVAgICAgICAgICAgICAgICAgICAgICAgMHg4NTA4CisjZGVmaW5lIEdMX1ZFTkRPUiAgICAg
ICAgICAgICAgICAgICAgICAgICAweDFGMDAKKyNkZWZpbmUgR0xfUkVOREVSRVIgICAgICAgICAg
ICAgICAgICAgICAgIDB4MUYwMQorI2RlZmluZSBHTF9WRVJTSU9OICAgICAgICAgICAgICAgICAg
ICAgICAgMHgxRjAyCisjZGVmaW5lIEdMX0VYVEVOU0lPTlMgICAgICAgICAgICAgICAgICAgICAw
eDFGMDMKKyNkZWZpbmUgR0xfTkVBUkVTVCAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYwMAor
I2RlZmluZSBHTF9MSU5FQVIgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNjAxCisjZGVmaW5l
IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QgICAgICAgICAweDI3MDAKKyNkZWZpbmUgR0xfTElO
RUFSX01JUE1BUF9ORUFSRVNUICAgICAgICAgIDB4MjcwMQorI2RlZmluZSBHTF9ORUFSRVNUX01J
UE1BUF9MSU5FQVIgICAgICAgICAgMHgyNzAyCisjZGVmaW5lIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSICAgICAgICAgICAweDI3MDMKKyNkZWZpbmUgR0xfVEVYVFVSRV9NQUdfRklMVEVSICAgICAg
ICAgICAgIDB4MjgwMAorI2RlZmluZSBHTF9URVhUVVJFX01JTl9GSUxURVIgICAgICAgICAgICAg
MHgyODAxCisjZGVmaW5lIEdMX1RFWFRVUkVfV1JBUF9TICAgICAgICAgICAgICAgICAweDI4MDIK
KyNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1QgICAgICAgICAgICAgICAgIDB4MjgwMworI2RlZmlu
ZSBHTF9URVhUVVJFICAgICAgICAgICAgICAgICAgICAgICAgMHgxNzAyCisjZGVmaW5lIEdMX1RF
WFRVUkVfQ1VCRV9NQVAgICAgICAgICAgICAgICAweDg1MTMKKyNkZWZpbmUgR0xfVEVYVFVSRV9C
SU5ESU5HX0NVQkVfTUFQICAgICAgIDB4ODUxNAorI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ggICAgMHg4NTE1CisjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWCAgICAweDg1MTYKKyNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZICAg
IDB4ODUxNworI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgICAgMHg4NTE4
CisjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAgICAweDg1MTkKKyNkZWZp
bmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aICAgIDB4ODUxQQorI2RlZmluZSBHTF9N
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICAgICAgMHg4NTFDCisjZGVmaW5lIEdMX1RFWFRVUkUw
ICAgICAgICAgICAgICAgICAgICAgICAweDg0QzAKKyNkZWZpbmUgR0xfVEVYVFVSRTEgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODRDMQorI2RlZmluZSBHTF9URVhUVVJFMiAgICAgICAgICAgICAg
ICAgICAgICAgMHg4NEMyCisjZGVmaW5lIEdMX1RFWFRVUkUzICAgICAgICAgICAgICAgICAgICAg
ICAweDg0QzMKKyNkZWZpbmUgR0xfVEVYVFVSRTQgICAgICAgICAgICAgICAgICAgICAgIDB4ODRD
NAorI2RlZmluZSBHTF9URVhUVVJFNSAgICAgICAgICAgICAgICAgICAgICAgMHg4NEM1CisjZGVm
aW5lIEdMX1RFWFRVUkU2ICAgICAgICAgICAgICAgICAgICAgICAweDg0QzYKKyNkZWZpbmUgR0xf
VEVYVFVSRTcgICAgICAgICAgICAgICAgICAgICAgIDB4ODRDNworI2RlZmluZSBHTF9URVhUVVJF
OCAgICAgICAgICAgICAgICAgICAgICAgMHg4NEM4CisjZGVmaW5lIEdMX1RFWFRVUkU5ICAgICAg
ICAgICAgICAgICAgICAgICAweDg0QzkKKyNkZWZpbmUgR0xfVEVYVFVSRTEwICAgICAgICAgICAg
ICAgICAgICAgIDB4ODRDQQorI2RlZmluZSBHTF9URVhUVVJFMTEgICAgICAgICAgICAgICAgICAg
ICAgMHg4NENCCisjZGVmaW5lIEdMX1RFWFRVUkUxMiAgICAgICAgICAgICAgICAgICAgICAweDg0
Q0MKKyNkZWZpbmUgR0xfVEVYVFVSRTEzICAgICAgICAgICAgICAgICAgICAgIDB4ODRDRAorI2Rl
ZmluZSBHTF9URVhUVVJFMTQgICAgICAgICAgICAgICAgICAgICAgMHg4NENFCisjZGVmaW5lIEdM
X1RFWFRVUkUxNSAgICAgICAgICAgICAgICAgICAgICAweDg0Q0YKKyNkZWZpbmUgR0xfVEVYVFVS
RTE2ICAgICAgICAgICAgICAgICAgICAgIDB4ODREMAorI2RlZmluZSBHTF9URVhUVVJFMTcgICAg
ICAgICAgICAgICAgICAgICAgMHg4NEQxCisjZGVmaW5lIEdMX1RFWFRVUkUxOCAgICAgICAgICAg
ICAgICAgICAgICAweDg0RDIKKyNkZWZpbmUgR0xfVEVYVFVSRTE5ICAgICAgICAgICAgICAgICAg
ICAgIDB4ODREMworI2RlZmluZSBHTF9URVhUVVJFMjAgICAgICAgICAgICAgICAgICAgICAgMHg4
NEQ0CisjZGVmaW5lIEdMX1RFWFRVUkUyMSAgICAgICAgICAgICAgICAgICAgICAweDg0RDUKKyNk
ZWZpbmUgR0xfVEVYVFVSRTIyICAgICAgICAgICAgICAgICAgICAgIDB4ODRENgorI2RlZmluZSBH
TF9URVhUVVJFMjMgICAgICAgICAgICAgICAgICAgICAgMHg4NEQ3CisjZGVmaW5lIEdMX1RFWFRV
UkUyNCAgICAgICAgICAgICAgICAgICAgICAweDg0RDgKKyNkZWZpbmUgR0xfVEVYVFVSRTI1ICAg
ICAgICAgICAgICAgICAgICAgIDB4ODREOQorI2RlZmluZSBHTF9URVhUVVJFMjYgICAgICAgICAg
ICAgICAgICAgICAgMHg4NERBCisjZGVmaW5lIEdMX1RFWFRVUkUyNyAgICAgICAgICAgICAgICAg
ICAgICAweDg0REIKKyNkZWZpbmUgR0xfVEVYVFVSRTI4ICAgICAgICAgICAgICAgICAgICAgIDB4
ODREQworI2RlZmluZSBHTF9URVhUVVJFMjkgICAgICAgICAgICAgICAgICAgICAgMHg4NERECisj
ZGVmaW5lIEdMX1RFWFRVUkUzMCAgICAgICAgICAgICAgICAgICAgICAweDg0REUKKyNkZWZpbmUg
R0xfVEVYVFVSRTMxICAgICAgICAgICAgICAgICAgICAgIDB4ODRERgorI2RlZmluZSBHTF9BQ1RJ
VkVfVEVYVFVSRSAgICAgICAgICAgICAgICAgMHg4NEUwCisjZGVmaW5lIEdMX1JFUEVBVCAgICAg
ICAgICAgICAgICAgICAgICAgICAweDI5MDEKKyNkZWZpbmUgR0xfQ0xBTVBfVE9fRURHRSAgICAg
ICAgICAgICAgICAgIDB4ODEyRgorI2RlZmluZSBHTF9NSVJST1JFRF9SRVBFQVQgICAgICAgICAg
ICAgICAgMHg4MzcwCisjZGVmaW5lIEdMX0ZMT0FUX1ZFQzIgICAgICAgICAgICAgICAgICAgICAw
eDhCNTAKKyNkZWZpbmUgR0xfRkxPQVRfVkVDMyAgICAgICAgICAgICAgICAgICAgIDB4OEI1MQor
I2RlZmluZSBHTF9GTE9BVF9WRUM0ICAgICAgICAgICAgICAgICAgICAgMHg4QjUyCisjZGVmaW5l
IEdMX0lOVF9WRUMyICAgICAgICAgICAgICAgICAgICAgICAweDhCNTMKKyNkZWZpbmUgR0xfSU5U
X1ZFQzMgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1NAorI2RlZmluZSBHTF9JTlRfVkVDNCAg
ICAgICAgICAgICAgICAgICAgICAgMHg4QjU1CisjZGVmaW5lIEdMX0JPT0wgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhCNTYKKyNkZWZpbmUgR0xfQk9PTF9WRUMyICAgICAgICAgICAgICAg
ICAgICAgIDB4OEI1NworI2RlZmluZSBHTF9CT09MX1ZFQzMgICAgICAgICAgICAgICAgICAgICAg
MHg4QjU4CisjZGVmaW5lIEdMX0JPT0xfVkVDNCAgICAgICAgICAgICAgICAgICAgICAweDhCNTkK
KyNkZWZpbmUgR0xfRkxPQVRfTUFUMiAgICAgICAgICAgICAgICAgICAgIDB4OEI1QQorI2RlZmlu
ZSBHTF9GTE9BVF9NQVQzICAgICAgICAgICAgICAgICAgICAgMHg4QjVCCisjZGVmaW5lIEdMX0ZM
T0FUX01BVDQgICAgICAgICAgICAgICAgICAgICAweDhCNUMKKyNkZWZpbmUgR0xfU0FNUExFUl8y
RCAgICAgICAgICAgICAgICAgICAgIDB4OEI1RQorI2RlZmluZSBHTF9TQU1QTEVSX0NVQkUgICAg
ICAgICAgICAgICAgICAgMHg4QjYwCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5B
QkxFRCAgICAweDg2MjIKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFICAgICAg
IDB4ODYyMworI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSAgICAgMHg4NjI0
CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSAgICAgICAweDg2MjUKKyNkZWZp
bmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEIDB4ODg2QQorI2RlZmluZSBHTF9W
RVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIgICAgMHg4NjQ1CisjZGVmaW5lIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlGCisjZGVmaW5lIEdMX0lNUExFTUVOVEFU
SU9OX0NPTE9SX1JFQURfVFlQRSAweDhCOUEKKyNkZWZpbmUgR0xfSU1QTEVNRU5UQVRJT05fQ09M
T1JfUkVBRF9GT1JNQVQgMHg4QjlCCisjZGVmaW5lIEdMX0NPTVBJTEVfU1RBVFVTICAgICAgICAg
ICAgICAgICAweDhCODEKKyNkZWZpbmUgR0xfSU5GT19MT0dfTEVOR1RIICAgICAgICAgICAgICAg
IDB4OEI4NAorI2RlZmluZSBHTF9TSEFERVJfU09VUkNFX0xFTkdUSCAgICAgICAgICAgMHg4Qjg4
CisjZGVmaW5lIEdMX1NIQURFUl9DT01QSUxFUiAgICAgICAgICAgICAgICAweDhERkEKKyNkZWZp
bmUgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgICAgIDB4OERGOAorI2RlZmluZSBHTF9O
VU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTICAgICAgMHg4REY5CisjZGVmaW5lIEdMX0xPV19GTE9B
VCAgICAgICAgICAgICAgICAgICAgICAweDhERjAKKyNkZWZpbmUgR0xfTUVESVVNX0ZMT0FUICAg
ICAgICAgICAgICAgICAgIDB4OERGMQorI2RlZmluZSBHTF9ISUdIX0ZMT0FUICAgICAgICAgICAg
ICAgICAgICAgMHg4REYyCisjZGVmaW5lIEdMX0xPV19JTlQgICAgICAgICAgICAgICAgICAgICAg
ICAweDhERjMKKyNkZWZpbmUgR0xfTUVESVVNX0lOVCAgICAgICAgICAgICAgICAgICAgIDB4OERG
NAorI2RlZmluZSBHTF9ISUdIX0lOVCAgICAgICAgICAgICAgICAgICAgICAgMHg4REY1CisjZGVm
aW5lIEdMX0ZSQU1FQlVGRkVSICAgICAgICAgICAgICAgICAgICAweDhENDAKKyNkZWZpbmUgR0xf
UkVOREVSQlVGRkVSICAgICAgICAgICAgICAgICAgIDB4OEQ0MQorI2RlZmluZSBHTF9SR0JBNCAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDU2CisjZGVmaW5lIEdMX1JHQjVfQTEgICAgICAg
ICAgICAgICAgICAgICAgICAweDgwNTcKKyNkZWZpbmUgR0xfUkdCNTY1ICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEQ2MgorI2RlZmluZSBHTF9ERVBUSF9DT01QT05FTlQxNiAgICAgICAgICAg
ICAgMHg4MUE1CisjZGVmaW5lIEdMX1NURU5DSUxfSU5ERVg4ICAgICAgICAgICAgICAgICAweDhE
NDgKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1dJRFRIICAgICAgICAgICAgIDB4OEQ0MgorI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfSEVJR0hUICAgICAgICAgICAgMHg4RDQzCisjZGVmaW5lIEdM
X1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQgICAweDhENDQKKyNkZWZpbmUgR0xfUkVOREVS
QlVGRkVSX1JFRF9TSVpFICAgICAgICAgIDB4OEQ1MAorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJf
R1JFRU5fU0laRSAgICAgICAgMHg4RDUxCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9CTFVFX1NJ
WkUgICAgICAgICAweDhENTIKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUgICAg
ICAgIDB4OEQ1MworI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRSAgICAgICAgMHg4
RDU0CisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkUgICAgICAweDhENTUKKyNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSAweDhDRDAKKyNkZWZp
bmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSAweDhDRDEKKyNkZWZpbmUg
R0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMIDB4OENEMgorI2RlZmluZSBH
TF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSAweDhDRDMKKyNk
ZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDAgICAgICAgICAgICAgIDB4OENFMAorI2RlZmluZSBH
TF9ERVBUSF9BVFRBQ0hNRU5UICAgICAgICAgICAgICAgMHg4RDAwCisjZGVmaW5lIEdMX1NURU5D
SUxfQVRUQUNITUVOVCAgICAgICAgICAgICAweDhEMjAKKyNkZWZpbmUgR0xfTk9ORSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUgICAg
ICAgICAgIDB4OENENQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1F
TlQgMHg4Q0Q2CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRB
Q0hNRU5UIDB4OENENworI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lP
TlMgMHg4Q0Q5CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEICAgICAgICAweDhD
REQKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQklORElORyAgICAgICAgICAgIDB4OENBNgorI2Rl
ZmluZSBHTF9SRU5ERVJCVUZGRVJfQklORElORyAgICAgICAgICAgMHg4Q0E3CisjZGVmaW5lIEdM
X01BWF9SRU5ERVJCVUZGRVJfU0laRSAgICAgICAgICAweDg0RTgKKyNkZWZpbmUgR0xfSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gIDB4MDUwNgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xBQ1RJVkVURVhUVVJFUFJPQykgKEdMZW51bSB0ZXh0dXJlKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMQVRUQUNIU0hBREVSUFJPQykgKEdMdWludCBwcm9ncmFtLCBH
THVpbnQgc2hhZGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREFUVFJJ
QkxPQ0FUSU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hh
ciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRCVUZGRVJQUk9D
KSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEJJTkRGUkFNRUJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJh
bWVidWZmZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EUkVOREVSQlVG
RkVSUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVEVYVFVSRVBST0MpIChHTGVudW0gdGFyZ2V0LCBH
THVpbnQgdGV4dHVyZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5EQ09M
T1JQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxvYXQgYmx1ZSwgR0xmbG9h
dCBhbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERVFVQVRJT05Q
Uk9DKSAoR0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVO
REVRVUFUSU9OU0VQQVJBVEVQUk9DKSAoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREZVTkNQUk9DKSAoR0xlbnVt
IHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQkxFTkRGVU5DU0VQQVJBVEVQUk9DKSAoR0xlbnVtIHNmYWN0b3JSR0IsIEdMZW51bSBkZmFj
dG9yUkdCLCBHTGVudW0gc2ZhY3RvckFscGhhLCBHTGVudW0gZGZhY3RvckFscGhhKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQlVGRkVSREFUQVBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEsIEdMZW51bSB1c2FnZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJVRkZFUlNVQkRBVEFQUk9DKSAoR0xlbnVtIHRh
cmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEp
OwordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTENIRUNLRlJBTUVCVUZGRVJTVEFU
VVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENMRUFSUFJPQykgKEdMYml0ZmllbGQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTENMRUFSQ09MT1JQUk9DKSAoR0xmbG9hdCByZWQsIEdMZmxvYXQgZ3JlZW4sIEdMZmxv
YXQgYmx1ZSwgR0xmbG9hdCBhbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENMRUFSREVQVEhGUFJPQykgKEdMZmxvYXQgZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTENMRUFSU1RFTkNJTFBST0MpIChHTGludCBzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMQ09MT1JNQVNLUFJPQykgKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVl
biwgR0xib29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTENPTVBJTEVTSEFERVJQUk9DKSAoR0x1aW50IHNoYWRlcik7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhJTUFHRTJEUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NF
RFRFWFNVQklNQUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVu
dW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0YSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPUFlURVhJTUFHRTJEUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VCSU1BR0UyRFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiBHTHVpbnQg
KEdMX0FQSUVOVFJZUCBQRk5HTENSRUFURVBST0dSQU1QUk9DKSAodm9pZCk7Cit0eXBlZGVmIEdM
dWludCAoR0xfQVBJRU5UUllQIFBGTkdMQ1JFQVRFU0hBREVSUFJPQykgKEdMZW51bSB0eXBlKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ1VMTEZBQ0VQUk9DKSAoR0xlbnVtIG1v
ZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVCVUZGRVJTUFJPQykg
KEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpidWZmZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1
aW50ICpmcmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxF
VEVQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMREVMRVRFUkVOREVSQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqcmVuZGVyYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVU
RVNIQURFUlBST0MpIChHTHVpbnQgc2hhZGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMREVMRVRFVEVYVFVSRVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1
cmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVQVEhGVU5DUFJPQykgKEdM
ZW51bSBmdW5jKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVQVEhNQVNLUFJP
QykgKEdMYm9vbGVhbiBmbGFnKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVQ
VEhSQU5HRUZQUk9DKSAoR0xmbG9hdCBuLCBHTGZsb2F0IGYpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xERVRBQ0hTSEFERVJQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBz
aGFkZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFUFJPQykgKEdM
ZW51bSBjYXApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFVkVSVEVY
QVRUUklCQVJSQVlQUk9DKSAoR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMRFJBV0FSUkFZU1BST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXRUxFTUVOVFNQ
Uk9DKSAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lk
ICppbmRpY2VzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5BQkxFUFJPQykg
KEdMZW51bSBjYXApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVWRVJU
RVhBVFRSSUJBUlJBWVBST0MpIChHTHVpbnQgaW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xGSU5JU0hQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEZMVVNIUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xGUkFNRUJVRkZFUlJFTkRFUkJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0
YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcik7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBH
THVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xGUk9OVEZBQ0VQUk9DKSAoR0xlbnVtIG1vZGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRU5CVUZGRVJTUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICpidWZmZXJzKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VORVJBVEVNSVBNQVBQUk9DKSAoR0xl
bnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTkZSQU1FQlVG
RkVSU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOUkVOREVSQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIEdM
dWludCAqcmVuZGVyYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdF
TlRFWFRVUkVTUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRUFUVFJJQlBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQg
KnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUQUNUSVZFVU5JRk9STVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50
IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdM
ZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUQVRUQUNIRURTSEFERVJTUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heENv
dW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJzKTsKK3R5cGVkZWYgR0xpbnQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVEFUVFJJQkxPQ0FUSU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBj
b25zdCBHTGNoYXIgKm5hbWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRC
T09MRUFOVlBST0MpIChHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqZGF0YSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUklWUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIEdMZW51bSAoR0xf
QVBJRU5UUllQIFBGTkdMR0VURVJST1JQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVEZMT0FUVlBST0MpIChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKmRhdGEp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFNRUJVRkZFUkFUVEFDSE1F
TlRQQVJBTUVURVJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUSU5URUdFUlZQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCAqZGF0YSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1JVlBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUUFJPR1JBTUlORk9MT0dQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xHRVRSRU5ERVJCVUZGRVJQQVJBTUVURVJJVlBST0MpIChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVRTSEFERVJJVlBST0MpIChHTHVpbnQgc2hhZGVyLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xH
RVRTSEFERVJJTkZPTE9HUFJPQykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xHRVRTSEFERVJQUkVDSVNJT05GT1JNQVRQUk9DKSAoR0xlbnVtIHNoYWRlcnR5cGUs
IEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCAqcmFuZ2UsIEdMaW50ICpwcmVjaXNpb24pOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTSEFERVJTT1VSQ0VQUk9DKSAoR0x1
aW50IHNoYWRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqc291
cmNlKTsKK3R5cGVkZWYgY29uc3QgR0x1Ynl0ZSAqKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNUUklO
R1BST0MpIChHTGVudW0gbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdF
VFRFWFBBUkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVEVYUEFSQU1F
VEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUZWUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUlWUFJPQykgKEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIEdMaW50IChHTF9BUElFTlRS
WVAgUEZOR0xHRVRVTklGT1JNTE9DQVRJT05QUk9DKSAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdM
Y2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFU
VFJJQkZWUFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRWRVJURVhBVFRSSUJJVlBST0Mp
IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQlBPSU5URVJWUFJPQykgKEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcG9pbnRlcik7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEhJTlRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUpOwor
dHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTQlVGRkVSUFJPQykgKEdMdWlu
dCBidWZmZXIpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTRU5BQkxF
RFBST0MpIChHTGVudW0gY2FwKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZO
R0xJU0ZSQU1FQlVGRkVSUFJPQykgKEdMdWludCBmcmFtZWJ1ZmZlcik7Cit0eXBlZGVmIEdMYm9v
bGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsK
K3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1JFTkRFUkJVRkZFUlBST0Mp
IChHTHVpbnQgcmVuZGVyYnVmZmVyKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAg
UEZOR0xJU1NIQURFUlBST0MpIChHTHVpbnQgc2hhZGVyKTsKK3R5cGVkZWYgR0xib29sZWFuIChH
TF9BUElFTlRSWVAgUEZOR0xJU1RFWFRVUkVQUk9DKSAoR0x1aW50IHRleHR1cmUpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xMSU5FV0lEVEhQUk9DKSAoR0xmbG9hdCB3aWR0aCk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTExJTktQUk9HUkFNUFJPQykgKEdMdWlu
dCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUElYRUxTVE9SRUlQ
Uk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFBPTFlHT05PRkZTRVRQUk9DKSAoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5p
dHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFEUElYRUxTUFJPQykgKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgdm9pZCAqcGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUkVMRUFTRVNIQURFUkNPTVBJTEVSUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xSRU5ERVJCVUZGRVJTVE9SQUdFUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQU1QTEVDT1ZFUkFHRVBST0MpIChH
TGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMU0NJU1NPUlBST0MpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNIQURFUkJJ
TkFSWVBST0MpIChHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnNoYWRlcnMsIEdMZW51bSBi
aW5hcnlmb3JtYXQsIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndGgpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTSEFERVJTT1VSQ0VQUk9DKSAoR0x1aW50IHNoYWRl
ciwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25zdCpzdHJpbmcsIGNvbnN0IEdMaW50
ICpsZW5ndGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMRlVOQ1BS
T0MpIChHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFNURU5DSUxGVU5DU0VQQVJBVEVQUk9DKSAoR0xlbnVtIGZhY2Us
IEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMU1RFTkNJTE1BU0tQUk9DKSAoR0x1aW50IG1hc2spOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMTUFTS1NFUEFSQVRFUFJPQykgKEdMZW51bSBm
YWNlLCBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNURU5D
SUxPUFBST0MpIChHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMT1BTRVBBUkFURVBST0MpIChHTGVu
dW0gZmFjZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWlsLCBHTGVudW0gZHBwYXNzKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UyRFBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBj
b25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQ
QVJBTUVURVJGUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJh
bSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUkZWUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSSVBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMVEVYU1VCSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUZWUFJP
QykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0xSVBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xpbnQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklG
T1JNMUlWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMkZQUk9DKSAo
R0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMkZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTFVOSUZPUk0ySVBST0MpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYx
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTJJVlBST0MpIChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNGUFJPQykgKEdMaW50IGxvY2F0aW9uLCBH
TGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVU5JRk9STTNGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xVTklGT1JNM0lQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xp
bnQgdjIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNM0lWUFJPQykg
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNEZQUk9DKSAoR0xpbnQgbG9jYXRp
b24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNEZWUFJPQykgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk00SVBST0MpIChHTGludCBsb2NhdGlvbiwgR0xpbnQg
djAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xVTklGT1JNNElWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xV
TklGT1JNTUFUUklYMkZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzRlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJWDRGVlBST0MpIChH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVU0VQUk9H
UkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMVkFMSURBVEVQUk9HUkFNUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCMUZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIxRlZQ
Uk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCMkZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFU
VFJJQjJGVlBST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIzRlBST0MpIChHTHVpbnQgaW5kZXgs
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xWRVJURVhBVFRSSUIzRlZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZs
b2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCNEZQ
Uk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZs
b2F0IHcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUI0RlZQ
Uk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCUE9JTlRFUlBST0MpIChHTHVpbnQgaW5kZXgsIEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJp
ZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xWSUVXUE9SVFBST0MpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQWN0aXZlVGV4dHVyZSAoR0xlbnVtIHRleHR1cmUpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVyIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNo
YWRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQXR0cmliTG9jYXRpb24g
KEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqbmFtZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgYnVmZmVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRGcmFtZWJ1ZmZl
ciAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEJpbmRSZW5kZXJidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5k
ZXJidWZmZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFRleHR1cmUgKEdM
ZW51bSB0YXJnZXQsIEdMdWludCB0ZXh0dXJlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEJsZW5kQ29sb3IgKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUs
IEdMZmxvYXQgYWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRFcXVh
dGlvbiAoR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRF
cXVhdGlvblNlcGFyYXRlIChHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmMgKEdMZW51bSBzZmFjdG9yLCBHTGVu
dW0gZGZhY3Rvcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNTZXBh
cmF0ZSAoR0xlbnVtIHNmYWN0b3JSR0IsIEdMZW51bSBkZmFjdG9yUkdCLCBHTGVudW0gc2ZhY3Rv
ckFscGhhLCBHTGVudW0gZGZhY3RvckFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEJ1ZmZlckRhdGEgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9p
ZCAqZGF0YSwgR0xlbnVtIHVzYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1
ZmZlclN1YkRhdGEgKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBz
aXplLCBjb25zdCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgR0xlbnVtIEdMX0FQSUVOVFJZIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyAoR0xlbnVtIHRhcmdldCk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xDbGVhciAoR0xiaXRmaWVsZCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbENsZWFyQ29sb3IgKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZs
b2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
Q2xlYXJEZXB0aGYgKEdMZmxvYXQgZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xD
bGVhclN0ZW5jaWwgKEdMaW50IHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29s
b3JNYXNrIChHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBH
TGJvb2xlYW4gYWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcGlsZVNo
YWRlciAoR0x1aW50IHNoYWRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21w
cmVzc2VkVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwg
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQg
KmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleEltYWdlMkQgKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleFN1YkltYWdlMkQgKEdMZW51bSB0
YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIEdM
dWludCBHTF9BUElFTlRSWSBnbENyZWF0ZVByb2dyYW0gKHZvaWQpOworR0xfQVBJQ0FMTCBHTHVp
bnQgR0xfQVBJRU5UUlkgZ2xDcmVhdGVTaGFkZXIgKEdMZW51bSB0eXBlKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEN1bGxGYWNlIChHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVCdWZmZXJzIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAq
YnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUmVuZGVyYnVmZmVycyAoR0xzaXplaSBuLCBj
b25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRGVsZXRlU2hhZGVyIChHTHVpbnQgc2hhZGVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbERlbGV0ZVRleHR1cmVzIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVwdGhGdW5jIChHTGVudW0gZnVuYyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXB0aE1hc2sgKEdMYm9vbGVhbiBmbGFn
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlcHRoUmFuZ2VmIChHTGZsb2F0IG4s
IEdMZmxvYXQgZik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXRhY2hTaGFkZXIg
KEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbERpc2FibGUgKEdMZW51bSBjYXApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChHTHVpbnQgaW5kZXgpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5cyAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBH
THNpemVpIGNvdW50KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50
cyAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpp
bmRpY2VzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZSAoR0xlbnVtIGNh
cCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSAoR0x1aW50IGluZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZpbmlzaCAo
dm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGbHVzaCAodm9pZCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciAoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdM
dWludCByZW5kZXJidWZmZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0g
dGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRnJvbnRGYWNlIChHTGVudW0gbW9kZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZW5CdWZmZXJzIChHTHNpemVpIG4sIEdMdWludCAqYnVmZmVycyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5lcmF0ZU1pcG1hcCAoR0xlbnVtIHRhcmdl
dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6
ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2VuUmVuZGVyYnVmZmVycyAoR0xzaXplaSBuLCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuVGV4dHVyZXMgKEdMc2l6ZWkgbiwgR0x1
aW50ICp0ZXh0dXJlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVB
dHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybSAoR0x1aW50IHBy
b2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRBdHRhY2hlZFNoYWRlcnMgKEdMdWludCBwcm9ncmFtLCBHTHNpemVp
IG1heENvdW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJzKTsKK0dMX0FQSUNBTEwg
R0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRBdHRyaWJMb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIGNv
bnN0IEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCb29s
ZWFudiAoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbEdl
dEVycm9yICh2b2lkKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZsb2F0diAo
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVnZXJ2IChHTGVudW0gcG5hbWUsIEdMaW50ICpk
YXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1pdiAoR0x1aW50
IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtSW5mb0xvZyAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRTaGFkZXJpdiAoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNoYWRlckluZm9Mb2cg
KEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIg
KmluZm9Mb2cpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50
ICpyYW5nZSwgR0xpbnQgKnByZWNpc2lvbik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRTaGFkZXJTb3VyY2UgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7CitHTF9BUElDQUxMIGNvbnN0IEdMdWJ5dGUgKkdM
X0FQSUVOVFJZIGdsR2V0U3RyaW5nIChHTGVudW0gbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRUZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4
UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtZnYgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFVuaWZvcm1pdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgR0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlm
b3JtTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliZnYgKEdMdWludCBpbmRleCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0VmVydGV4QXR0cmliaXYgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJp
YlBvaW50ZXJ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBvaW50ZXIpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSGludCAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IG1vZGUpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0J1ZmZlciAoR0x1
aW50IGJ1ZmZlcik7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRW5hYmxl
ZCAoR0xlbnVtIGNhcCk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzRnJh
bWVidWZmZXIgKEdMdWludCBmcmFtZWJ1ZmZlcik7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9B
UElFTlRSWSBnbElzUHJvZ3JhbSAoR0x1aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCBHTGJvb2xl
YW4gR0xfQVBJRU5UUlkgZ2xJc1JlbmRlcmJ1ZmZlciAoR0x1aW50IHJlbmRlcmJ1ZmZlcik7CitH
TF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzU2hhZGVyIChHTHVpbnQgc2hhZGVy
KTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNUZXh0dXJlIChHTHVpbnQg
dGV4dHVyZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xMaW5lV2lkdGggKEdMZmxv
YXQgd2lkdGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTGlua1Byb2dyYW0gKEdM
dWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBpeGVsU3RvcmVp
IChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFBvbHlnb25PZmZzZXQgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlYWRQaXhlbHMgKEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
dm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbGVhc2VTaGFk
ZXJDb21waWxlciAodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFNhbXBsZUNvdmVyYWdlIChHTGZsb2F0IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNjaXNzb3IgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFNoYWRlckJpbmFyeSAoR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzaGFkZXJzLCBHTGVu
dW0gYmluYXJ5Zm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25zdCpzdHJpbmcsIGNvbnN0IEdMaW50ICps
ZW5ndGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbEZ1bmMgKEdMZW51
bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUgKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xp
bnQgcmVmLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsTWFzayAoR0x1aW50IG1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3Rl
bmNpbE1hc2tTZXBhcmF0ZSAoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcCAoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwg
R0xlbnVtIHpwYXNzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNl
cGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIHNmYWlsLCBHTGVudW0gZHBmYWlsLCBHTGVudW0g
ZHBwYXNzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleEltYWdlMkQgKEdMZW51
bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xU
ZXhQYXJhbWV0ZXJmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0p
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVyZnYgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcmkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFy
YW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhTdWJJbWFnZTJEIChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25z
dCB2b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFm
IChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xVbmlmb3JtMWZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFpIChH
TGludCBsb2NhdGlvbiwgR0xpbnQgdjApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VW5pZm9ybTFpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2
YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMmYgKEdMaW50IGxv
Y2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFVuaWZvcm0yZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMmkg
KEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsVW5pZm9ybTJpdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3Jt
M2YgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zZnYgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2kgKEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQg
djEsIEdMaW50IHYyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zaXYg
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRmIChHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2MiwgR0xmbG9hdCB2Myk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtNGZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsVW5pZm9ybTRpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2
MiwgR0xpbnQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpdiAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4MmZ2IChHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDNmdiAoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1NYXRy
aXg0ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xV
c2VQcm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xWYWxpZGF0ZVByb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFZlcnRleEF0dHJpYjFmIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIxZnYgKEdMdWludCBpbmRleCwg
Y29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhB
dHRyaWIyZiAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIyZnYgKEdMdWludCBpbmRleCwgY29uc3Qg
R0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIz
ZiAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjNmdiAoR0x1aW50IGluZGV4LCBj
b25zdCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0
dHJpYjRmIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdM
ZmxvYXQgdyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWI0ZnYg
KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdM
ZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZv
aWQgKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmlld3BvcnQgKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKKyNlbmRpZgor
I2VuZGlmIC8qIEdMX0VTX1ZFUlNJT05fMl8wICovCisKKyNpZm5kZWYgR0xfRVNfVkVSU0lPTl8z
XzAKKyNkZWZpbmUgR0xfRVNfVkVSU0lPTl8zXzAgMQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBH
TGhhbGY7CisjZGVmaW5lIEdMX1JFQURfQlVGRkVSICAgICAgICAgICAgICAgICAgICAweDBDMDIK
KyNkZWZpbmUgR0xfVU5QQUNLX1JPV19MRU5HVEggICAgICAgICAgICAgIDB4MENGMgorI2RlZmlu
ZSBHTF9VTlBBQ0tfU0tJUF9ST1dTICAgICAgICAgICAgICAgMHgwQ0YzCisjZGVmaW5lIEdMX1VO
UEFDS19TS0lQX1BJWEVMUyAgICAgICAgICAgICAweDBDRjQKKyNkZWZpbmUgR0xfUEFDS19ST1df
TEVOR1RIICAgICAgICAgICAgICAgIDB4MEQwMgorI2RlZmluZSBHTF9QQUNLX1NLSVBfUk9XUyAg
ICAgICAgICAgICAgICAgMHgwRDAzCisjZGVmaW5lIEdMX1BBQ0tfU0tJUF9QSVhFTFMgICAgICAg
ICAgICAgICAweDBEMDQKKyNkZWZpbmUgR0xfQ09MT1IgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MTgwMAorI2RlZmluZSBHTF9ERVBUSCAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxODAx
CisjZGVmaW5lIEdMX1NURU5DSUwgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDIKKyNkZWZp
bmUgR0xfUkVEICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTkwMworI2RlZmluZSBHTF9S
R0I4ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDUxCisjZGVmaW5lIEdMX1JHQkE4ICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDgwNTgKKyNkZWZpbmUgR0xfUkdCMTBfQTIgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODA1OQorI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdfM0QgICAg
ICAgICAgICAgMHg4MDZBCisjZGVmaW5lIEdMX1VOUEFDS19TS0lQX0lNQUdFUyAgICAgICAgICAg
ICAweDgwNkQKKyNkZWZpbmUgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVCAgICAgICAgICAgIDB4ODA2
RQorI2RlZmluZSBHTF9URVhUVVJFXzNEICAgICAgICAgICAgICAgICAgICAgMHg4MDZGCisjZGVm
aW5lIEdMX1RFWFRVUkVfV1JBUF9SICAgICAgICAgICAgICAgICAweDgwNzIKKyNkZWZpbmUgR0xf
TUFYXzNEX1RFWFRVUkVfU0laRSAgICAgICAgICAgIDB4ODA3MworI2RlZmluZSBHTF9VTlNJR05F
RF9JTlRfMl8xMF8xMF8xMF9SRVYgICAgMHg4MzY4CisjZGVmaW5lIEdMX01BWF9FTEVNRU5UU19W
RVJUSUNFUyAgICAgICAgICAweDgwRTgKKyNkZWZpbmUgR0xfTUFYX0VMRU1FTlRTX0lORElDRVMg
ICAgICAgICAgIDB4ODBFOQorI2RlZmluZSBHTF9URVhUVVJFX01JTl9MT0QgICAgICAgICAgICAg
ICAgMHg4MTNBCisjZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0xPRCAgICAgICAgICAgICAgICAweDgx
M0IKKyNkZWZpbmUgR0xfVEVYVFVSRV9CQVNFX0xFVkVMICAgICAgICAgICAgIDB4ODEzQworI2Rl
ZmluZSBHTF9URVhUVVJFX01BWF9MRVZFTCAgICAgICAgICAgICAgMHg4MTNECisjZGVmaW5lIEdM
X01JTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDcKKyNkZWZpbmUgR0xfTUFYICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwOAorI2RlZmluZSBHTF9ERVBUSF9DT01QT05F
TlQyNCAgICAgICAgICAgICAgMHg4MUE2CisjZGVmaW5lIEdMX01BWF9URVhUVVJFX0xPRF9CSUFT
ICAgICAgICAgICAweDg0RkQKKyNkZWZpbmUgR0xfVEVYVFVSRV9DT01QQVJFX01PREUgICAgICAg
ICAgIDB4ODg0QworI2RlZmluZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQyAgICAgICAgICAgMHg4
ODRECisjZGVmaW5lIEdMX0NVUlJFTlRfUVVFUlkgICAgICAgICAgICAgICAgICAweDg4NjUKKyNk
ZWZpbmUgR0xfUVVFUllfUkVTVUxUICAgICAgICAgICAgICAgICAgIDB4ODg2NgorI2RlZmluZSBH
TF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFICAgICAgICAgMHg4ODY3CisjZGVmaW5lIEdMX0JVRkZF
Ul9NQVBQRUQgICAgICAgICAgICAgICAgICAweDg4QkMKKyNkZWZpbmUgR0xfQlVGRkVSX01BUF9Q
T0lOVEVSICAgICAgICAgICAgIDB4ODhCRAorI2RlZmluZSBHTF9TVFJFQU1fUkVBRCAgICAgICAg
ICAgICAgICAgICAgMHg4OEUxCisjZGVmaW5lIEdMX1NUUkVBTV9DT1BZICAgICAgICAgICAgICAg
ICAgICAweDg4RTIKKyNkZWZpbmUgR0xfU1RBVElDX1JFQUQgICAgICAgICAgICAgICAgICAgIDB4
ODhFNQorI2RlZmluZSBHTF9TVEFUSUNfQ09QWSAgICAgICAgICAgICAgICAgICAgMHg4OEU2Cisj
ZGVmaW5lIEdMX0RZTkFNSUNfUkVBRCAgICAgICAgICAgICAgICAgICAweDg4RTkKKyNkZWZpbmUg
R0xfRFlOQU1JQ19DT1BZICAgICAgICAgICAgICAgICAgIDB4ODhFQQorI2RlZmluZSBHTF9NQVhf
RFJBV19CVUZGRVJTICAgICAgICAgICAgICAgMHg4ODI0CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVS
MCAgICAgICAgICAgICAgICAgICAweDg4MjUKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxICAgICAg
ICAgICAgICAgICAgIDB4ODgyNgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjIgICAgICAgICAgICAg
ICAgICAgMHg4ODI3CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMyAgICAgICAgICAgICAgICAgICAw
eDg4MjgKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI0ICAgICAgICAgICAgICAgICAgIDB4ODgyOQor
I2RlZmluZSBHTF9EUkFXX0JVRkZFUjUgICAgICAgICAgICAgICAgICAgMHg4ODJBCisjZGVmaW5l
IEdMX0RSQVdfQlVGRkVSNiAgICAgICAgICAgICAgICAgICAweDg4MkIKKyNkZWZpbmUgR0xfRFJB
V19CVUZGRVI3ICAgICAgICAgICAgICAgICAgIDB4ODgyQworI2RlZmluZSBHTF9EUkFXX0JVRkZF
UjggICAgICAgICAgICAgICAgICAgMHg4ODJECisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSOSAgICAg
ICAgICAgICAgICAgICAweDg4MkUKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMCAgICAgICAgICAg
ICAgICAgIDB4ODgyRgorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjExICAgICAgICAgICAgICAgICAg
MHg4ODMwCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTIgICAgICAgICAgICAgICAgICAweDg4MzEK
KyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMyAgICAgICAgICAgICAgICAgIDB4ODgzMgorI2RlZmlu
ZSBHTF9EUkFXX0JVRkZFUjE0ICAgICAgICAgICAgICAgICAgMHg4ODMzCisjZGVmaW5lIEdMX0RS
QVdfQlVGRkVSMTUgICAgICAgICAgICAgICAgICAweDg4MzQKKyNkZWZpbmUgR0xfTUFYX0ZSQUdN
RU5UX1VOSUZPUk1fQ09NUE9ORU5UUyAweDhCNDkKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9VTklG
T1JNX0NPTVBPTkVOVFMgIDB4OEI0QQorI2RlZmluZSBHTF9TQU1QTEVSXzNEICAgICAgICAgICAg
ICAgICAgICAgMHg4QjVGCisjZGVmaW5lIEdMX1NBTVBMRVJfMkRfU0hBRE9XICAgICAgICAgICAg
ICAweDhCNjIKKyNkZWZpbmUgR0xfRlJBR01FTlRfU0hBREVSX0RFUklWQVRJVkVfSElOVCAweDhC
OEIKKyNkZWZpbmUgR0xfUElYRUxfUEFDS19CVUZGRVIgICAgICAgICAgICAgIDB4ODhFQgorI2Rl
ZmluZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSICAgICAgICAgICAgMHg4OEVDCisjZGVmaW5lIEdM
X1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkcgICAgICAweDg4RUQKKyNkZWZpbmUgR0xfUElYRUxf
VU5QQUNLX0JVRkZFUl9CSU5ESU5HICAgIDB4ODhFRgorI2RlZmluZSBHTF9GTE9BVF9NQVQyeDMg
ICAgICAgICAgICAgICAgICAgMHg4QjY1CisjZGVmaW5lIEdMX0ZMT0FUX01BVDJ4NCAgICAgICAg
ICAgICAgICAgICAweDhCNjYKKyNkZWZpbmUgR0xfRkxPQVRfTUFUM3gyICAgICAgICAgICAgICAg
ICAgIDB4OEI2NworI2RlZmluZSBHTF9GTE9BVF9NQVQzeDQgICAgICAgICAgICAgICAgICAgMHg4
QjY4CisjZGVmaW5lIEdMX0ZMT0FUX01BVDR4MiAgICAgICAgICAgICAgICAgICAweDhCNjkKKyNk
ZWZpbmUgR0xfRkxPQVRfTUFUNHgzICAgICAgICAgICAgICAgICAgIDB4OEI2QQorI2RlZmluZSBH
TF9TUkdCICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzQwCisjZGVmaW5lIEdMX1NSR0I4
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDhDNDEKKyNkZWZpbmUgR0xfU1JHQjhfQUxQSEE4
ICAgICAgICAgICAgICAgICAgIDB4OEM0MworI2RlZmluZSBHTF9DT01QQVJFX1JFRl9UT19URVhU
VVJFICAgICAgICAgMHg4ODRFCisjZGVmaW5lIEdMX01BSk9SX1ZFUlNJT04gICAgICAgICAgICAg
ICAgICAweDgyMUIKKyNkZWZpbmUgR0xfTUlOT1JfVkVSU0lPTiAgICAgICAgICAgICAgICAgIDB4
ODIxQworI2RlZmluZSBHTF9OVU1fRVhURU5TSU9OUyAgICAgICAgICAgICAgICAgMHg4MjFECisj
ZGVmaW5lIEdMX1JHQkEzMkYgICAgICAgICAgICAgICAgICAgICAgICAweDg4MTQKKyNkZWZpbmUg
R0xfUkdCMzJGICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgxNQorI2RlZmluZSBHTF9SR0JB
MTZGICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODFBCisjZGVmaW5lIEdMX1JHQjE2RiAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4MUIKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJB
WV9JTlRFR0VSICAgIDB4ODhGRAorI2RlZmluZSBHTF9NQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlMg
ICAgICAgMHg4OEZGCisjZGVmaW5lIEdMX01JTl9QUk9HUkFNX1RFWEVMX09GRlNFVCAgICAgICAw
eDg5MDQKKyNkZWZpbmUgR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZGU0VUICAgICAgIDB4ODkwNQor
I2RlZmluZSBHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTICAgICAgICAgMHg4QjRCCisjZGVmaW5l
IEdMX1RFWFRVUkVfMkRfQVJSQVkgICAgICAgICAgICAgICAweDhDMUEKKyNkZWZpbmUgR0xfVEVY
VFVSRV9CSU5ESU5HXzJEX0FSUkFZICAgICAgIDB4OEMxRAorI2RlZmluZSBHTF9SMTFGX0cxMUZf
QjEwRiAgICAgICAgICAgICAgICAgMHg4QzNBCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8xMEZf
MTFGXzExRl9SRVYgICAweDhDM0IKKyNkZWZpbmUgR0xfUkdCOV9FNSAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OEMzRAorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYgICAgICAg
MHg4QzNFCisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HX01BWF9MRU5HVEgg
MHg4Qzc2CisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfTU9ERSAweDhDN0YK
KyNkZWZpbmUgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9DT01QT05FTlRTIDB4
OEM4MAorI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1MgICAgMHg4QzgzCisj
ZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU1RBUlQgMHg4Qzg0CisjZGVmaW5l
IEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfU0laRSAweDhDODUKKyNkZWZpbmUgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiAweDhDODgKKyNkZWZpbmUgR0xfUkFT
VEVSSVpFUl9ESVNDQVJEICAgICAgICAgICAgIDB4OEM4OQorI2RlZmluZSBHTF9NQVhfVFJBTlNG
T1JNX0ZFRURCQUNLX0lOVEVSTEVBVkVEX0NPTVBPTkVOVFMgMHg4QzhBCisjZGVmaW5lIEdMX01B
WF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyAweDhDOEIKKyNkZWZpbmUgR0xf
SU5URVJMRUFWRURfQVRUUklCUyAgICAgICAgICAgIDB4OEM4QworI2RlZmluZSBHTF9TRVBBUkFU
RV9BVFRSSUJTICAgICAgICAgICAgICAgMHg4QzhECisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIgICAgICAweDhDOEUKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9CSU5ESU5HIDB4OEM4RgorI2RlZmluZSBHTF9SR0JBMzJVSSAgICAgICAgICAgICAgICAg
ICAgICAgMHg4RDcwCisjZGVmaW5lIEdMX1JHQjMyVUkgICAgICAgICAgICAgICAgICAgICAgICAw
eDhENzEKKyNkZWZpbmUgR0xfUkdCQTE2VUkgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3Ngor
I2RlZmluZSBHTF9SR0IxNlVJICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDc3CisjZGVmaW5l
IEdMX1JHQkE4VUkgICAgICAgICAgICAgICAgICAgICAgICAweDhEN0MKKyNkZWZpbmUgR0xfUkdC
OFVJICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3RAorI2RlZmluZSBHTF9SR0JBMzJJICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4RDgyCisjZGVmaW5lIEdMX1JHQjMySSAgICAgICAgICAg
ICAgICAgICAgICAgICAweDhEODMKKyNkZWZpbmUgR0xfUkdCQTE2SSAgICAgICAgICAgICAgICAg
ICAgICAgIDB4OEQ4OAorI2RlZmluZSBHTF9SR0IxNkkgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4RDg5CisjZGVmaW5lIEdMX1JHQkE4SSAgICAgICAgICAgICAgICAgICAgICAgICAweDhEOEUK
KyNkZWZpbmUgR0xfUkdCOEkgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ4RgorI2RlZmlu
ZSBHTF9SRURfSU5URUdFUiAgICAgICAgICAgICAgICAgICAgMHg4RDk0CisjZGVmaW5lIEdMX1JH
Ql9JTlRFR0VSICAgICAgICAgICAgICAgICAgICAweDhEOTgKKyNkZWZpbmUgR0xfUkdCQV9JTlRF
R0VSICAgICAgICAgICAgICAgICAgIDB4OEQ5OQorI2RlZmluZSBHTF9TQU1QTEVSXzJEX0FSUkFZ
ICAgICAgICAgICAgICAgMHg4REMxCisjZGVmaW5lIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9X
ICAgICAgICAweDhEQzQKKyNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX1NIQURPVyAgICAgICAgICAg
IDB4OERDNQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfVkVDMiAgICAgICAgICAgICAgMHg4REM2
CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9WRUMzICAgICAgICAgICAgICAweDhEQzcKKyNkZWZp
bmUgR0xfVU5TSUdORURfSU5UX1ZFQzQgICAgICAgICAgICAgIDB4OERDOAorI2RlZmluZSBHTF9J
TlRfU0FNUExFUl8yRCAgICAgICAgICAgICAgICAgMHg4RENBCisjZGVmaW5lIEdMX0lOVF9TQU1Q
TEVSXzNEICAgICAgICAgICAgICAgICAweDhEQ0IKKyNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfQ1VC
RSAgICAgICAgICAgICAgIDB4OERDQworI2RlZmluZSBHTF9JTlRfU0FNUExFUl8yRF9BUlJBWSAg
ICAgICAgICAgMHg4RENGCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEICAgICAg
ICAweDhERDIKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfM0QgICAgICAgIDB4OERE
MworI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFICAgICAgMHg4REQ0CisjZGVm
aW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZICAweDhERDcKKyNkZWZpbmUgR0xf
QlVGRkVSX0FDQ0VTU19GTEFHUyAgICAgICAgICAgIDB4OTExRgorI2RlZmluZSBHTF9CVUZGRVJf
TUFQX0xFTkdUSCAgICAgICAgICAgICAgMHg5MTIwCisjZGVmaW5lIEdMX0JVRkZFUl9NQVBfT0ZG
U0VUICAgICAgICAgICAgICAweDkxMjEKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMzJGICAg
ICAgICAgICAgIDB4OENBQworI2RlZmluZSBHTF9ERVBUSDMyRl9TVEVOQ0lMOCAgICAgICAgICAg
ICAgMHg4Q0FECisjZGVmaW5lIEdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFViAweDhE
QUQKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyAweDgy
MTAKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRSAweDgy
MTEKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9SRURfU0laRSAweDgyMTIKKyNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9HUkVFTl9TSVpFIDB4ODIxMworI2RlZmlu
ZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRSAweDgyMTQKKyNkZWZpbmUgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9BTFBIQV9TSVpFIDB4ODIxNQorI2RlZmluZSBHTF9GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX0RFUFRIX1NJWkUgMHg4MjE2CisjZGVmaW5lIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFIDB4ODIxNworI2RlZmluZSBHTF9GUkFNRUJVRkZF
Ul9ERUZBVUxUICAgICAgICAgICAgMHg4MjE4CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX1VOREVG
SU5FRCAgICAgICAgICAweDgyMTkKKyNkZWZpbmUgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5U
ICAgICAgIDB4ODIxQQorI2RlZmluZSBHTF9ERVBUSF9TVEVOQ0lMICAgICAgICAgICAgICAgICAg
MHg4NEY5CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF8yNF84ICAgICAgICAgICAgICAweDg0RkEK
KyNkZWZpbmUgR0xfREVQVEgyNF9TVEVOQ0lMOCAgICAgICAgICAgICAgIDB4ODhGMAorI2RlZmlu
ZSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEICAgICAgICAgICAgMHg4QzE3CisjZGVmaW5lIEdMX0RS
QVdfRlJBTUVCVUZGRVJfQklORElORyAgICAgICAweDhDQTYKKyNkZWZpbmUgR0xfUkVBRF9GUkFN
RUJVRkZFUiAgICAgICAgICAgICAgIDB4OENBOAorI2RlZmluZSBHTF9EUkFXX0ZSQU1FQlVGRkVS
ICAgICAgICAgICAgICAgMHg4Q0E5CisjZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZGRVJfQklORElO
RyAgICAgICAweDhDQUEKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX1NBTVBMRVMgICAgICAgICAg
IDB4OENBQgorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEFZRVIg
MHg4Q0Q0CisjZGVmaW5lIEdMX01BWF9DT0xPUl9BVFRBQ0hNRU5UUyAgICAgICAgICAweDhDREYK
KyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDEgICAgICAgICAgICAgIDB4OENFMQorI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMiAgICAgICAgICAgICAgMHg4Q0UyCisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQzICAgICAgICAgICAgICAweDhDRTMKKyNkZWZpbmUgR0xfQ09MT1JfQVRU
QUNITUVOVDQgICAgICAgICAgICAgIDB4OENFNAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
NSAgICAgICAgICAgICAgMHg4Q0U1CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ2ICAgICAg
ICAgICAgICAweDhDRTYKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDcgICAgICAgICAgICAg
IDB4OENFNworI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UOCAgICAgICAgICAgICAgMHg4Q0U4
CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ5ICAgICAgICAgICAgICAweDhDRTkKKyNkZWZp
bmUgR0xfQ09MT1JfQVRUQUNITUVOVDEwICAgICAgICAgICAgIDB4OENFQQorI2RlZmluZSBHTF9D
T0xPUl9BVFRBQ0hNRU5UMTEgICAgICAgICAgICAgMHg4Q0VCCisjZGVmaW5lIEdMX0NPTE9SX0FU
VEFDSE1FTlQxMiAgICAgICAgICAgICAweDhDRUMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVO
VDEzICAgICAgICAgICAgIDB4OENFRAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTQgICAg
ICAgICAgICAgMHg4Q0VFCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNSAgICAgICAgICAg
ICAweDhDRUYKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDE2ICAgICAgICAgICAgIDB4OENG
MAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTcgICAgICAgICAgICAgMHg4Q0YxCisjZGVm
aW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxOCAgICAgICAgICAgICAweDhDRjIKKyNkZWZpbmUgR0xf
Q09MT1JfQVRUQUNITUVOVDE5ICAgICAgICAgICAgIDB4OENGMworI2RlZmluZSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMjAgICAgICAgICAgICAgMHg4Q0Y0CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1F
TlQyMSAgICAgICAgICAgICAweDhDRjUKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDIyICAg
ICAgICAgICAgIDB4OENGNgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMjMgICAgICAgICAg
ICAgMHg4Q0Y3CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyNCAgICAgICAgICAgICAweDhD
RjgKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDI1ICAgICAgICAgICAgIDB4OENGOQorI2Rl
ZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMjYgICAgICAgICAgICAgMHg4Q0ZBCisjZGVmaW5lIEdM
X0NPTE9SX0FUVEFDSE1FTlQyNyAgICAgICAgICAgICAweDhDRkIKKyNkZWZpbmUgR0xfQ09MT1Jf
QVRUQUNITUVOVDI4ICAgICAgICAgICAgIDB4OENGQworI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMjkgICAgICAgICAgICAgMHg4Q0ZECisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQzMCAg
ICAgICAgICAgICAweDhDRkUKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDMxICAgICAgICAg
ICAgIDB4OENGRgorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01VTFRJU0FNUExF
IDB4OEQ1NgorI2RlZmluZSBHTF9NQVhfU0FNUExFUyAgICAgICAgICAgICAgICAgICAgMHg4RDU3
CisjZGVmaW5lIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICAweDE0MEIKKyNkZWZp
bmUgR0xfTUFQX1JFQURfQklUICAgICAgICAgICAgICAgICAgIDB4MDAwMQorI2RlZmluZSBHTF9N
QVBfV1JJVEVfQklUICAgICAgICAgICAgICAgICAgMHgwMDAyCisjZGVmaW5lIEdMX01BUF9JTlZB
TElEQVRFX1JBTkdFX0JJVCAgICAgICAweDAwMDQKKyNkZWZpbmUgR0xfTUFQX0lOVkFMSURBVEVf
QlVGRkVSX0JJVCAgICAgIDB4MDAwOAorI2RlZmluZSBHTF9NQVBfRkxVU0hfRVhQTElDSVRfQklU
ICAgICAgICAgMHgwMDEwCisjZGVmaW5lIEdMX01BUF9VTlNZTkNIUk9OSVpFRF9CSVQgICAgICAg
ICAweDAwMjAKKyNkZWZpbmUgR0xfUkcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIy
NworI2RlZmluZSBHTF9SR19JTlRFR0VSICAgICAgICAgICAgICAgICAgICAgMHg4MjI4CisjZGVm
aW5lIEdMX1I4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMjkKKyNkZWZpbmUgR0xf
Ukc4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyQgorI2RlZmluZSBHTF9SMTZGICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJECisjZGVmaW5lIEdMX1IzMkYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDgyMkUKKyNkZWZpbmUgR0xfUkcxNkYgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODIyRgorI2RlZmluZSBHTF9SRzMyRiAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4MjMwCisjZGVmaW5lIEdMX1I4SSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgy
MzEKKyNkZWZpbmUgR0xfUjhVSSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzMgorI2Rl
ZmluZSBHTF9SMTZJICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjMzCisjZGVmaW5lIEdM
X1IxNlVJICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMzQKKyNkZWZpbmUgR0xfUjMySSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzNQorI2RlZmluZSBHTF9SMzJVSSAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MjM2CisjZGVmaW5lIEdMX1JHOEkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDgyMzcKKyNkZWZpbmUgR0xfUkc4VUkgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODIzOAorI2RlZmluZSBHTF9SRzE2SSAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4
MjM5CisjZGVmaW5lIEdMX1JHMTZVSSAgICAgICAgICAgICAgICAgICAgICAgICAweDgyM0EKKyNk
ZWZpbmUgR0xfUkczMkkgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzQgorI2RlZmluZSBH
TF9SRzMyVUkgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjNDCisjZGVmaW5lIEdMX1ZFUlRF
WF9BUlJBWV9CSU5ESU5HICAgICAgICAgICAweDg1QjUKKyNkZWZpbmUgR0xfUjhfU05PUk0gICAg
ICAgICAgICAgICAgICAgICAgIDB4OEY5NAorI2RlZmluZSBHTF9SRzhfU05PUk0gICAgICAgICAg
ICAgICAgICAgICAgMHg4Rjk1CisjZGVmaW5lIEdMX1JHQjhfU05PUk0gICAgICAgICAgICAgICAg
ICAgICAweDhGOTYKKyNkZWZpbmUgR0xfUkdCQThfU05PUk0gICAgICAgICAgICAgICAgICAgIDB4
OEY5NworI2RlZmluZSBHTF9TSUdORURfTk9STUFMSVpFRCAgICAgICAgICAgICAgMHg4RjlDCisj
ZGVmaW5lIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYICAweDhENjkKKyNkZWZpbmUg
R0xfQ09QWV9SRUFEX0JVRkZFUiAgICAgICAgICAgICAgIDB4OEYzNgorI2RlZmluZSBHTF9DT1BZ
X1dSSVRFX0JVRkZFUiAgICAgICAgICAgICAgMHg4RjM3CisjZGVmaW5lIEdMX0NPUFlfUkVBRF9C
VUZGRVJfQklORElORyAgICAgICAweDhGMzYKKyNkZWZpbmUgR0xfQ09QWV9XUklURV9CVUZGRVJf
QklORElORyAgICAgIDB4OEYzNworI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUiAgICAgICAgICAg
ICAgICAgMHg4QTExCisjZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkcgICAgICAgICAw
eDhBMjgKKyNkZWZpbmUgR0xfVU5JRk9STV9CVUZGRVJfU1RBUlQgICAgICAgICAgIDB4OEEyOQor
I2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUl9TSVpFICAgICAgICAgICAgMHg4QTJBCisjZGVmaW5l
IEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgICAgICAweDhBMkIKKyNkZWZpbmUgR0xfTUFY
X0ZSQUdNRU5UX1VOSUZPUk1fQkxPQ0tTICAgIDB4OEEyRAorI2RlZmluZSBHTF9NQVhfQ09NQklO
RURfVU5JRk9STV9CTE9DS1MgICAgMHg4QTJFCisjZGVmaW5lIEdMX01BWF9VTklGT1JNX0JVRkZF
Ul9CSU5ESU5HUyAgICAweDhBMkYKKyNkZWZpbmUgR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSAg
ICAgICAgIDB4OEEzMAorI2RlZmluZSBHTF9NQVhfQ09NQklORURfVkVSVEVYX1VOSUZPUk1fQ09N
UE9ORU5UUyAweDhBMzEKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1f
Q09NUE9ORU5UUyAweDhBMzMKKyNkZWZpbmUgR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdO
TUVOVCAweDhBMzQKKyNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tfTUFYX05BTUVfTEVO
R1RIIDB4OEEzNQorI2RlZmluZSBHTF9BQ1RJVkVfVU5JRk9STV9CTE9DS1MgICAgICAgICAgMHg4
QTM2CisjZGVmaW5lIEdMX1VOSUZPUk1fVFlQRSAgICAgICAgICAgICAgICAgICAweDhBMzcKKyNk
ZWZpbmUgR0xfVU5JRk9STV9TSVpFICAgICAgICAgICAgICAgICAgIDB4OEEzOAorI2RlZmluZSBH
TF9VTklGT1JNX05BTUVfTEVOR1RIICAgICAgICAgICAgMHg4QTM5CisjZGVmaW5lIEdMX1VOSUZP
Uk1fQkxPQ0tfSU5ERVggICAgICAgICAgICAweDhBM0EKKyNkZWZpbmUgR0xfVU5JRk9STV9PRkZT
RVQgICAgICAgICAgICAgICAgIDB4OEEzQgorI2RlZmluZSBHTF9VTklGT1JNX0FSUkFZX1NUUklE
RSAgICAgICAgICAgMHg4QTNDCisjZGVmaW5lIEdMX1VOSUZPUk1fTUFUUklYX1NUUklERSAgICAg
ICAgICAweDhBM0QKKyNkZWZpbmUgR0xfVU5JRk9STV9JU19ST1dfTUFKT1IgICAgICAgICAgIDB4
OEEzRQorI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0JJTkRJTkcgICAgICAgICAgMHg4QTNGCisj
ZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tfREFUQV9TSVpFICAgICAgICAweDhBNDAKKyNkZWZpbmUg
R0xfVU5JRk9STV9CTE9DS19OQU1FX0xFTkdUSCAgICAgIDB4OEE0MQorI2RlZmluZSBHTF9VTklG
T1JNX0JMT0NLX0FDVElWRV9VTklGT1JNUyAgMHg4QTQyCisjZGVmaW5lIEdMX1VOSUZPUk1fQkxP
Q0tfQUNUSVZFX1VOSUZPUk1fSU5ESUNFUyAweDhBNDMKKyNkZWZpbmUgR0xfVU5JRk9STV9CTE9D
S19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVIgMHg4QTQ0CisjZGVmaW5lIEdMX1VOSUZPUk1f
QkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVIgMHg4QTQ2CisjZGVmaW5lIEdMX0lO
VkFMSURfSU5ERVggICAgICAgICAgICAgICAgICAweEZGRkZGRkZGdQorI2RlZmluZSBHTF9NQVhf
VkVSVEVYX09VVFBVVF9DT01QT05FTlRTICAgMHg5MTIyCisjZGVmaW5lIEdMX01BWF9GUkFHTUVO
VF9JTlBVVF9DT01QT05FTlRTICAweDkxMjUKKyNkZWZpbmUgR0xfTUFYX1NFUlZFUl9XQUlUX1RJ
TUVPVVQgICAgICAgIDB4OTExMQorI2RlZmluZSBHTF9PQkpFQ1RfVFlQRSAgICAgICAgICAgICAg
ICAgICAgMHg5MTEyCisjZGVmaW5lIEdMX1NZTkNfQ09ORElUSU9OICAgICAgICAgICAgICAgICAw
eDkxMTMKKyNkZWZpbmUgR0xfU1lOQ19TVEFUVVMgICAgICAgICAgICAgICAgICAgIDB4OTExNAor
I2RlZmluZSBHTF9TWU5DX0ZMQUdTICAgICAgICAgICAgICAgICAgICAgMHg5MTE1CisjZGVmaW5l
IEdMX1NZTkNfRkVOQ0UgICAgICAgICAgICAgICAgICAgICAweDkxMTYKKyNkZWZpbmUgR0xfU1lO
Q19HUFVfQ09NTUFORFNfQ09NUExFVEUgICAgIDB4OTExNworI2RlZmluZSBHTF9VTlNJR05BTEVE
ICAgICAgICAgICAgICAgICAgICAgMHg5MTE4CisjZGVmaW5lIEdMX1NJR05BTEVEICAgICAgICAg
ICAgICAgICAgICAgICAweDkxMTkKKyNkZWZpbmUgR0xfQUxSRUFEWV9TSUdOQUxFRCAgICAgICAg
ICAgICAgIDB4OTExQQorI2RlZmluZSBHTF9USU1FT1VUX0VYUElSRUQgICAgICAgICAgICAgICAg
MHg5MTFCCisjZGVmaW5lIEdMX0NPTkRJVElPTl9TQVRJU0ZJRUQgICAgICAgICAgICAweDkxMUMK
KyNkZWZpbmUgR0xfV0FJVF9GQUlMRUQgICAgICAgICAgICAgICAgICAgIDB4OTExRAorI2RlZmlu
ZSBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBH
TF9USU1FT1VUX0lHTk9SRUQgICAgICAgICAgICAgICAgMHhGRkZGRkZGRkZGRkZGRkZGdWxsCisj
ZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUiAgICAweDg4RkUKKyNkZWZpbmUg
R0xfQU5ZX1NBTVBMRVNfUEFTU0VEICAgICAgICAgICAgIDB4OEMyRgorI2RlZmluZSBHTF9BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFIDB4OEQ2QQorI2RlZmluZSBHTF9TQU1QTEVSX0JJ
TkRJTkcgICAgICAgICAgICAgICAgMHg4OTE5CisjZGVmaW5lIEdMX1JHQjEwX0EyVUkgICAgICAg
ICAgICAgICAgICAgICAweDkwNkYKKyNkZWZpbmUgR0xfVEVYVFVSRV9TV0laWkxFX1IgICAgICAg
ICAgICAgIDB4OEU0MgorI2RlZmluZSBHTF9URVhUVVJFX1NXSVpaTEVfRyAgICAgICAgICAgICAg
MHg4RTQzCisjZGVmaW5lIEdMX1RFWFRVUkVfU1dJWlpMRV9CICAgICAgICAgICAgICAweDhFNDQK
KyNkZWZpbmUgR0xfVEVYVFVSRV9TV0laWkxFX0EgICAgICAgICAgICAgIDB4OEU0NQorI2RlZmlu
ZSBHTF9HUkVFTiAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTA0CisjZGVmaW5lIEdMX0JM
VUUgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MDUKKyNkZWZpbmUgR0xfSU5UXzJfMTBf
MTBfMTBfUkVWICAgICAgICAgICAgIDB4OEQ5RgorI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJB
Q0sgICAgICAgICAgICAgMHg4RTIyCisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVT
RUQgICAgICAweDhFMjMKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRSAgICAg
IDB4OEUyNAorI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORyAgICAgMHg4RTI1
CisjZGVmaW5lIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQgMHg4MjU3CisjZGVm
aW5lIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSCAgICAgICAgICAweDg3NDEKKyNkZWZpbmUgR0xf
TlVNX1BST0dSQU1fQklOQVJZX0ZPUk1BVFMgICAgIDB4ODdGRQorI2RlZmluZSBHTF9QUk9HUkFN
X0JJTkFSWV9GT1JNQVRTICAgICAgICAgMHg4N0ZGCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUjEx
X0VBQyAgICAgICAgICAgICAweDkyNzAKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQyAgICAgIDB4OTI3MQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHMTFfRUFDICAgICAgICAg
ICAgMHg5MjcyCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDICAgICAweDky
NzMKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIgICAgICAgICAgIDB4OTI3NAorI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIgICAgICAgICAgMHg5Mjc1CisjZGVmaW5lIEdM
X0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIgMHg5Mjc2CisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIDB4OTI3NworI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDICAgICAgMHg5Mjc4CisjZGVmaW5lIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDIDB4OTI3OQorI2RlZmluZSBHTF9URVhU
VVJFX0lNTVVUQUJMRV9GT1JNQVQgICAgICAgMHg5MTJGCisjZGVmaW5lIEdMX01BWF9FTEVNRU5U
X0lOREVYICAgICAgICAgICAgICAweDhENkIKKyNkZWZpbmUgR0xfTlVNX1NBTVBMRV9DT1VOVFMg
ICAgICAgICAgICAgIDB4OTM4MAorI2RlZmluZSBHTF9URVhUVVJFX0lNTVVUQUJMRV9MRVZFTFMg
ICAgICAgMHg4MkRGCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQURCVUZGRVJQ
Uk9DKSAoR0xlbnVtIHNyYyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdS
QU5HRUVMRU1FTlRTUFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgc3RhcnQsIEdMdWludCBlbmQs
IEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRpY2VzKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UzRFBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xURVhTVUJJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBH
TGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IHZvaWQgKnBpeGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENPUFlURVhTVUJJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGlu
dCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTENPTVBSRVNTRURURVhJTUFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25z
dCB2b2lkICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NF
RFRFWFNVQklNQUdFM0RQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhv
ZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6
ZSwgY29uc3Qgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdF
TlFVRVJJRVNQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTERFTEVURVFVRVJJRVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVp
bnQgKmlkcyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNRVUVSWVBS
T0MpIChHTHVpbnQgaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCRUdJTlFV
RVJZUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEVORFFVRVJZUFJPQykgKEdMZW51bSB0YXJnZXQpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWUlWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVFFVRVJZT0JKRUNUVUlWUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQg
KnBhcmFtcyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZG
RVJQUk9DKSAoR0xlbnVtIHRhcmdldCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVEJVRkZFUlBPSU5URVJWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9p
ZCAqKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdCVUZGRVJT
UFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJWDJYM0ZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzWDJGVlBST0Mp
IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklG
T1JNTUFUUklYMlg0RlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJWDRYMkZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVgzWDRGVlBST0Mp
IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklG
T1JNTUFUUklYNFgzRlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMQkxJVEZSQU1FQlVGRkVSUFJPQykgKEdMaW50IHNyY1gwLCBHTGludCBz
cmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAs
IEdMaW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVy
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1V
TFRJU0FNUExFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRUxBWUVSUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWws
IEdMaW50IGxheWVyKTsKK3R5cGVkZWYgdm9pZCAqKEdMX0FQSUVOVFJZUCBQRk5HTE1BUEJVRkZF
UlJBTkdFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBs
ZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMRkxVU0hNQVBQRURCVUZGRVJSQU5HRVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMQklORFZFUlRFWEFSUkFZUFJPQykgKEdMdWludCBhcnJheSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTERFTEVURVZFUlRFWEFSUkFZU1BST0MpIChHTHNpemVpIG4sIGNvbnN0
IEdMdWludCAqYXJyYXlzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOVkVS
VEVYQVJSQVlTUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpOwordHlwZWRlZiBHTGJv
b2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTVkVSVEVYQVJSQVlQUk9DKSAoR0x1aW50IGFycmF5
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URUdFUklfVlBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMQkVHSU5UUkFOU0ZPUk1GRUVEQkFDS1BST0MpIChHTGVudW0gcHJp
bWl0aXZlTW9kZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVORFRSQU5TRk9S
TUZFRURCQUNLUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xC
SU5EQlVGRkVSUkFOR0VQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQg
YnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRCVUZGRVJCQVNFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0x1aW50IGJ1ZmZlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFRSQU5TRk9STUZFRURCQUNLVkFSWUlOR1NQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMY2hhciAqY29uc3QqdmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2Rl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVFJBTlNGT1JNRkVFREJBQ0tW
QVJZSU5HUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAq
bmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQklQT0lO
VEVSUFJPQykgKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkg
c3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUVkVSVEVYQVRUUklCSUlWUFJPQykgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVkVS
VEVYQVRUUklCSVVJVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpw
YXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUJJNElQ
Uk9DKSAoR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCSTRVSVBST0MpIChH
THVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHosIEdMdWludCB3KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCSTRJVlBST0MpIChHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMVkVSVEVYQVRUUklCSTRVSVZQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRVTklGT1JNVUlWUFJPQykgKEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpOwordHlwZWRlZiBH
TGludCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURlJBR0RBVEFMT0NBVElPTlBST0MpIChHTHVpbnQg
cHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVU5JRk9STTFVSVBST0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTJVSVBST0MpIChHTGludCBsb2NhdGlv
biwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xVTklGT1JNM1VJUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwg
R0x1aW50IHYyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTRVSVBS
T0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1
aW50IHYzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTFVSVZQUk9D
KSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMlVJVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0zVUlWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVU5JRk9STTRVSVZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xDTEVBUkJVRkZFUklWUFJPQykgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNv
bnN0IEdMaW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFS
QlVGRkVSVUlWUFJPQykgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdM
dWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUkJVRkZF
UkZWUFJPQykgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ0xFQVJCVUZGRVJGSVBS
T0MpIChHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBHTGZsb2F0IGRlcHRoLCBHTGlu
dCBzdGVuY2lsKTsKK3R5cGVkZWYgY29uc3QgR0x1Ynl0ZSAqKEdMX0FQSUVOVFJZUCBQRk5HTEdF
VFNUUklOR0lQUk9DKSAoR0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTENPUFlCVUZGRVJTVUJEQVRBUFJPQykgKEdMZW51bSByZWFkVGFy
Z2V0LCBHTGVudW0gd3JpdGVUYXJnZXQsIEdMaW50cHRyIHJlYWRPZmZzZXQsIEdMaW50cHRyIHdy
aXRlT2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRVTklGT1JNSU5ESUNFU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlm
b3JtQ291bnQsIGNvbnN0IEdMY2hhciAqY29uc3QqdW5pZm9ybU5hbWVzLCBHTHVpbnQgKnVuaWZv
cm1JbmRpY2VzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQUNUSVZFVU5J
Rk9STVNJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlmb3JtQ291bnQsIGNvbnN0
IEdMdWludCAqdW5pZm9ybUluZGljZXMsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0
eXBlZGVmIEdMdWludCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUJMT0NLSU5ERVhQUk9D
KSAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRVVOSUZPUk1CTE9DS0lWUFJPQykg
KEdMdWludCBwcm9ncmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElW
RVVOSUZPUk1CTE9DS05BTUVQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqdW5pZm9y
bUJsb2NrTmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1CTE9D
S0JJTkRJTkdQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwg
R0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEUFJPQykgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZWNvdW50KTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEUFJPQykgKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBp
bnN0YW5jZWNvdW50KTsKK3R5cGVkZWYgR0xzeW5jIChHTF9BUElFTlRSWVAgUEZOR0xGRU5DRVNZ
TkNQUk9DKSAoR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncyk7Cit0eXBlZGVmIEdM
Ym9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNTWU5DUFJPQykgKEdMc3luYyBzeW5jKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFU1lOQ1BST0MpIChHTHN5bmMgc3lu
Yyk7Cit0eXBlZGVmIEdMZW51bSAoR0xfQVBJRU5UUllQIFBGTkdMQ0xJRU5UV0FJVFNZTkNQUk9D
KSAoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xXQUlUU1lOQ1BST0MpIChHTHN5bmMgc3luYywg
R0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVElOVEVHRVI2NFZQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGludDY0ICpk
YXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU1lOQ0lWUFJPQykgKEdM
c3luYyBzeW5jLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGludCAqdmFsdWVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5U
RUdFUjY0SV9WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0
YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUkk2
NFZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5TQU1QTEVSU1BST0MpIChHTHNpemVp
IGNvdW50LCBHTHVpbnQgKnNhbXBsZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMREVMRVRFU0FNUExFUlNQUk9DKSAoR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1w
bGVycyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNTQU1QTEVSUFJP
QykgKEdMdWludCBzYW1wbGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklO
RFNBTVBMRVJQUk9DKSAoR0x1aW50IHVuaXQsIEdMdWludCBzYW1wbGVyKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFUlBBUkFNRVRFUklQUk9DKSAoR0x1aW50IHNhbXBs
ZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSSVZQUk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBw
bmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMU0FNUExFUlBBUkFNRVRFUkZQUk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwg
R0xmbG9hdCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQ
QVJBTUVURVJGVlBST0MpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZs
b2F0ICpwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQ
QVJBTUVURVJJVlBST0MpIChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0FNUExFUlBBUkFNRVRF
UkZWUFJPQykgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JQUk9D
KSAoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEJJTkRUUkFOU0ZPUk1GRUVEQkFDS1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVUUkFOU0ZPUk1G
RUVEQkFDS1NQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlRSQU5TRk9STUZFRURCQUNLU1BST0MpIChHTHNpemVp
IG4sIEdMdWludCAqaWRzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJ
U1RSQU5TRk9STUZFRURCQUNLUFJPQykgKEdMdWludCBpZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFBBVVNFVFJBTlNGT1JNRkVFREJBQ0tQUk9DKSAodm9pZCk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFU1VNRVRSQU5TRk9STUZFRURCQUNLUFJPQykgKHZv
aWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNQklOQVJZUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xl
bnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFyeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFBST0dSQU1CSU5BUllQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5h
cnlGb3JtYXQsIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndGgpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNUEFSQU1FVEVSSVBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTElOVkFMSURBVEVGUkFNRUJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMSU5WQUxJREFURVNVQkZSQU1FQlVGRkVSUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1RPUkFHRTJEUFJPQykgKEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VEVYU1RPUkFHRTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRl
cHRoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUSU5URVJOQUxGT1JNQVRJ
VlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBwbmFt
ZSwgR0xzaXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9U
T1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWFkQnVmZmVyIChHTGVudW0g
c3JjKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdSYW5nZUVsZW1lbnRzIChH
TGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNvdW50LCBHTGVu
dW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xUZXhJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBH
TGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpwaXhl
bHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UzRCAoR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50
IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlUZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlM0QgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENv
bXByZXNzZWRUZXhTdWJJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQg
eG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VT
aXplLCBjb25zdCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
blF1ZXJpZXMgKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsRGVsZXRlUXVlcmllcyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7CitH
TF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUXVlcnkgKEdMdWludCBpZCk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCZWdpblF1ZXJ5IChHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kUXVlcnkgKEdMZW51
bSB0YXJnZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UXVlcnlpdiAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0dWl2IChHTHVpbnQgaWQsIEdMZW51bSBwbmFt
ZSwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xV
bm1hcEJ1ZmZlciAoR0xlbnVtIHRhcmdldCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRCdWZmZXJQb2ludGVydiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCB2b2lkICoq
cGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdCdWZmZXJzIChHTHNp
emVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xVbmlmb3JtTWF0cml4MngzZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4M3gyZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4Mng0ZnYgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4NHgyZnYg
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3Jt
TWF0cml4M3g0ZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xVbmlmb3JtTWF0cml4NHgzZnYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xCbGl0RnJhbWVidWZmZXIgKEdMaW50IHNyY1gwLCBHTGludCBzcmNZ
MCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdM
aW50IGRzdFgxLCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNh
bXBsZSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
YXR0YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBsYXllcik7CitH
TF9BUElDQUxMIHZvaWQgKkdMX0FQSUVOVFJZIGdsTWFwQnVmZmVyUmFuZ2UgKEdMZW51bSB0YXJn
ZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNz
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2Ug
KEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFZlcnRleEFycmF5IChHTHVpbnQgYXJyYXkp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlVmVydGV4QXJyYXlzIChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdlblZlcnRleEFycmF5cyAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUElD
QUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzVmVydGV4QXJyYXkgKEdMdWludCBhcnJheSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyaV92IChHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2sgKEdMZW51bSBwcmltaXRpdmVNb2RlKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrICh2b2lkKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRCdWZmZXJSYW5nZSAoR0xlbnVtIHRh
cmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgc2l6ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQnVmZmVyQmFz
ZSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MgKEdMdWludCBw
cm9ncmFtLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKmNvbnN0KnZhcnlpbmdzLCBHTGVu
dW0gYnVmZmVyTW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdM
Y2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJJ
UG9pbnRlciAoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBz
dHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0VmVydGV4QXR0cmliSWl2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJJ
dWl2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliSTRpIChHTHVpbnQgaW5kZXgsIEdM
aW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVmVydGV4QXR0cmliSTR1aSAoR0x1aW50IGluZGV4LCBHTHVpbnQgeCwgR0x1aW50
IHksIEdMdWludCB6LCBHTHVpbnQgdyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xW
ZXJ0ZXhBdHRyaWJJNGl2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50ICp2KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkk0dWl2IChHTHVpbnQgaW5kZXgsIGNv
bnN0IEdMdWludCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3Jt
dWl2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKTsKK0dM
X0FQSUNBTEwgR0xpbnQgR0xfQVBJRU5UUlkgZ2xHZXRGcmFnRGF0YUxvY2F0aW9uIChHTHVpbnQg
cHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFVuaWZvcm0xdWkgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjApOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJ1aSAoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwg
R0x1aW50IHYxKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zdWkgKEdM
aW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYyKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm00dWkgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQg
djAsIEdMdWludCB2MSwgR0x1aW50IHYyLCBHTHVpbnQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsVW5pZm9ybTF1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZv
cm0ydWl2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM3VpdiAoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTR1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bENsZWFyQnVmZmVyaXYgKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdM
aW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcnVp
diAoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2YWx1ZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcmZ2IChHTGVudW0gYnVm
ZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZlcmZpIChHTGVudW0gYnVmZmVyLCBHTGludCBk
cmF3YnVmZmVyLCBHTGZsb2F0IGRlcHRoLCBHTGludCBzdGVuY2lsKTsKK0dMX0FQSUNBTEwgY29u
c3QgR0x1Ynl0ZSAqR0xfQVBJRU5UUlkgZ2xHZXRTdHJpbmdpIChHTGVudW0gbmFtZSwgR0x1aW50
IGluZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlCdWZmZXJTdWJEYXRh
IChHTGVudW0gcmVhZFRhcmdldCwgR0xlbnVtIHdyaXRlVGFyZ2V0LCBHTGludHB0ciByZWFkT2Zm
c2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwgR0xzaXplaXB0ciBzaXplKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1JbmRpY2VzIChHTHVpbnQgcHJvZ3JhbSwgR0xz
aXplaSB1bmlmb3JtQ291bnQsIGNvbnN0IEdMY2hhciAqY29uc3QqdW5pZm9ybU5hbWVzLCBHTHVp
bnQgKnVuaWZvcm1JbmRpY2VzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEFj
dGl2ZVVuaWZvcm1zaXYgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIHVuaWZvcm1Db3VudCwgY29u
c3QgR0x1aW50ICp1bmlmb3JtSW5kaWNlcywgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgR0x1aW50IEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybUJsb2NrSW5kZXggKEdM
dWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYgKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1CbG9ja0JpbmRpbmcgKEdMdWludCBwcm9n
cmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5n
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdBcnJheXNJbnN0YW5jZWQgKEdM
ZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZWNv
dW50KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdFbGVtZW50c0luc3RhbmNl
ZCAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpp
bmRpY2VzLCBHTHNpemVpIGluc3RhbmNlY291bnQpOworR0xfQVBJQ0FMTCBHTHN5bmMgR0xfQVBJ
RU5UUlkgZ2xGZW5jZVN5bmMgKEdMZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpOwor
R0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1N5bmMgKEdMc3luYyBzeW5jKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVN5bmMgKEdMc3luYyBzeW5jKTsK
K0dMX0FQSUNBTEwgR0xlbnVtIEdMX0FQSUVOVFJZIGdsQ2xpZW50V2FpdFN5bmMgKEdMc3luYyBz
eW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFdhaXRTeW5jIChHTHN5bmMgc3luYywgR0xiaXRmaWVsZCBmbGFncywg
R0x1aW50NjQgdGltZW91dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRl
Z2VyNjR2IChHTGVudW0gcG5hbWUsIEdMaW50NjQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0U3luY2l2IChHTHN5bmMgc3luYywgR0xlbnVtIHBuYW1lLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnZhbHVlcyk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VyNjRpX3YgKEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCwgR0xpbnQ2NCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRC
dWZmZXJQYXJhbWV0ZXJpNjR2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50NjQg
KnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5TYW1wbGVycyAoR0xz
aXplaSBjb3VudCwgR0x1aW50ICpzYW1wbGVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEZWxldGVTYW1wbGVycyAoR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzYW1wbGVy
cyk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzU2FtcGxlciAoR0x1aW50
IHNhbXBsZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFNhbXBsZXIgKEdM
dWludCB1bml0LCBHTHVpbnQgc2FtcGxlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xTYW1wbGVyUGFyYW1ldGVyaSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcml2
IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0pOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcmYgKEdMdWludCBzYW1w
bGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlcmZ2IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1l
LCBjb25zdCBHTGZsb2F0ICpwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRTYW1wbGVyUGFyYW1ldGVyaXYgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBhcmFt
ZXRlcmZ2IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliRGl2aXNvciAoR0x1aW50
IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xC
aW5kVHJhbnNmb3JtRmVlZGJhY2sgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MgKEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2Vu
VHJhbnNmb3JtRmVlZGJhY2tzIChHTHNpemVpIG4sIEdMdWludCAqaWRzKTsKK0dMX0FQSUNBTEwg
R0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNUcmFuc2Zvcm1GZWVkYmFjayAoR0x1aW50IGlkKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBhdXNlVHJhbnNmb3JtRmVlZGJhY2sgKHZv
aWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVzdW1lVHJhbnNmb3JtRmVlZGJh
Y2sgKHZvaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUJpbmFy
eSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVu
dW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFByb2dyYW1CaW5hcnkgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0
LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFByb2dyYW1QYXJhbWV0ZXJpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBu
YW1lLCBHTGludCB2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xJbnZhbGlk
YXRlRnJhbWVidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNv
bnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
SW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFj
aG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xUZXhTdG9yYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFRleFN0b3JhZ2UzRCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBs
ZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMc2l6ZWkgZGVwdGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50
ZXJuYWxmb3JtYXRpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CisjZW5kaWYKKyNlbmRp
ZiAvKiBHTF9FU19WRVJTSU9OXzNfMCAqLworCisjaWZuZGVmIEdMX0VTX1ZFUlNJT05fM18xCisj
ZGVmaW5lIEdMX0VTX1ZFUlNJT05fM18xIDEKKyNkZWZpbmUgR0xfQ09NUFVURV9TSEFERVIgICAg
ICAgICAgICAgICAgIDB4OTFCOQorI2RlZmluZSBHTF9NQVhfQ09NUFVURV9VTklGT1JNX0JMT0NL
UyAgICAgMHg5MUJCCisjZGVmaW5lIEdMX01BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMg
MHg5MUJDCisjZGVmaW5lIEdMX01BWF9DT01QVVRFX0lNQUdFX1VOSUZPUk1TICAgICAweDkxQkQK
KyNkZWZpbmUgR0xfTUFYX0NPTVBVVEVfU0hBUkVEX01FTU9SWV9TSVpFIDB4ODI2MgorI2RlZmlu
ZSBHTF9NQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMgMHg4MjYzCisjZGVmaW5lIEdMX01B
WF9DT01QVVRFX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgMHg4MjY0CisjZGVmaW5lIEdMX01BWF9D
T01QVVRFX0FUT01JQ19DT1VOVEVSUyAgICAweDgyNjUKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVE
X0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTIDB4ODI2NgorI2RlZmluZSBHTF9NQVhfQ09NUFVU
RV9XT1JLX0dST1VQX0lOVk9DQVRJT05TIDB4OTBFQgorI2RlZmluZSBHTF9NQVhfQ09NUFVURV9X
T1JLX0dST1VQX0NPVU5UICAgMHg5MUJFCisjZGVmaW5lIEdMX01BWF9DT01QVVRFX1dPUktfR1JP
VVBfU0laRSAgICAweDkxQkYKKyNkZWZpbmUgR0xfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUgICAg
ICAgIDB4ODI2NworI2RlZmluZSBHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVIgICAgICAgMHg5
MEVFCisjZGVmaW5lIEdMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUl9CSU5ESU5HIDB4OTBFRgor
I2RlZmluZSBHTF9DT01QVVRFX1NIQURFUl9CSVQgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2Rl
ZmluZSBHTF9EUkFXX0lORElSRUNUX0JVRkZFUiAgICAgICAgICAgMHg4RjNGCisjZGVmaW5lIEdM
X0RSQVdfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkcgICAweDhGNDMKKyNkZWZpbmUgR0xfTUFYX1VO
SUZPUk1fTE9DQVRJT05TICAgICAgICAgIDB4ODI2RQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9E
RUZBVUxUX1dJRFRIICAgICAgMHg5MzEwCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRf
SEVJR0hUICAgICAweDkzMTEKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9TQU1QTEVT
ICAgIDB4OTMxMworI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9M
T0NBVElPTlMgMHg5MzE0CisjZGVmaW5lIEdMX01BWF9GUkFNRUJVRkZFUl9XSURUSCAgICAgICAg
ICAweDkzMTUKKyNkZWZpbmUgR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVCAgICAgICAgIDB4OTMx
NgorI2RlZmluZSBHTF9NQVhfRlJBTUVCVUZGRVJfU0FNUExFUyAgICAgICAgMHg5MzE4CisjZGVm
aW5lIEdMX1VOSUZPUk0gICAgICAgICAgICAgICAgICAgICAgICAweDkyRTEKKyNkZWZpbmUgR0xf
VU5JRk9STV9CTE9DSyAgICAgICAgICAgICAgICAgIDB4OTJFMgorI2RlZmluZSBHTF9QUk9HUkFN
X0lOUFVUICAgICAgICAgICAgICAgICAgMHg5MkUzCisjZGVmaW5lIEdMX1BST0dSQU1fT1VUUFVU
ICAgICAgICAgICAgICAgICAweDkyRTQKKyNkZWZpbmUgR0xfQlVGRkVSX1ZBUklBQkxFICAgICAg
ICAgICAgICAgIDB4OTJFNQorI2RlZmluZSBHTF9TSEFERVJfU1RPUkFHRV9CTE9DSyAgICAgICAg
ICAgMHg5MkU2CisjZGVmaW5lIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUiAgICAgICAgICAweDky
QzAKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkcgICAgIDB4OTJGNAorI2Rl
ZmluZSBHTF9BQ1RJVkVfUkVTT1VSQ0VTICAgICAgICAgICAgICAgMHg5MkY1CisjZGVmaW5lIEdM
X01BWF9OQU1FX0xFTkdUSCAgICAgICAgICAgICAgICAweDkyRjYKKyNkZWZpbmUgR0xfTUFYX05V
TV9BQ1RJVkVfVkFSSUFCTEVTICAgICAgIDB4OTJGNworI2RlZmluZSBHTF9OQU1FX0xFTkdUSCAg
ICAgICAgICAgICAgICAgICAgMHg5MkY5CisjZGVmaW5lIEdMX1RZUEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDkyRkEKKyNkZWZpbmUgR0xfQVJSQVlfU0laRSAgICAgICAgICAgICAgICAg
ICAgIDB4OTJGQgorI2RlZmluZSBHTF9PRkZTRVQgICAgICAgICAgICAgICAgICAgICAgICAgMHg5
MkZDCisjZGVmaW5lIEdMX0JMT0NLX0lOREVYICAgICAgICAgICAgICAgICAgICAweDkyRkQKKyNk
ZWZpbmUgR0xfQVJSQVlfU1RSSURFICAgICAgICAgICAgICAgICAgIDB4OTJGRQorI2RlZmluZSBH
TF9NQVRSSVhfU1RSSURFICAgICAgICAgICAgICAgICAgMHg5MkZGCisjZGVmaW5lIEdMX0lTX1JP
V19NQUpPUiAgICAgICAgICAgICAgICAgICAweDkzMDAKKyNkZWZpbmUgR0xfQVRPTUlDX0NPVU5U
RVJfQlVGRkVSX0lOREVYICAgIDB4OTMwMQorI2RlZmluZSBHTF9CVUZGRVJfQklORElORyAgICAg
ICAgICAgICAgICAgMHg5MzAyCisjZGVmaW5lIEdMX0JVRkZFUl9EQVRBX1NJWkUgICAgICAgICAg
ICAgICAweDkzMDMKKyNkZWZpbmUgR0xfTlVNX0FDVElWRV9WQVJJQUJMRVMgICAgICAgICAgIDB4
OTMwNAorI2RlZmluZSBHTF9BQ1RJVkVfVkFSSUFCTEVTICAgICAgICAgICAgICAgMHg5MzA1Cisj
ZGVmaW5lIEdMX1JFRkVSRU5DRURfQllfVkVSVEVYX1NIQURFUiAgICAweDkzMDYKKyNkZWZpbmUg
R0xfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVIgIDB4OTMwQQorI2RlZmluZSBHTF9SRUZF
UkVOQ0VEX0JZX0NPTVBVVEVfU0hBREVSICAgMHg5MzBCCisjZGVmaW5lIEdMX1RPUF9MRVZFTF9B
UlJBWV9TSVpFICAgICAgICAgICAweDkzMEMKKyNkZWZpbmUgR0xfVE9QX0xFVkVMX0FSUkFZX1NU
UklERSAgICAgICAgIDB4OTMwRAorI2RlZmluZSBHTF9MT0NBVElPTiAgICAgICAgICAgICAgICAg
ICAgICAgMHg5MzBFCisjZGVmaW5lIEdMX1ZFUlRFWF9TSEFERVJfQklUICAgICAgICAgICAgICAw
eDAwMDAwMDAxCisjZGVmaW5lIEdMX0ZSQUdNRU5UX1NIQURFUl9CSVQgICAgICAgICAgICAweDAw
MDAwMDAyCisjZGVmaW5lIEdMX0FMTF9TSEFERVJfQklUUyAgICAgICAgICAgICAgICAweEZGRkZG
RkZGCisjZGVmaW5lIEdMX1BST0dSQU1fU0VQQVJBQkxFICAgICAgICAgICAgICAweDgyNTgKKyNk
ZWZpbmUgR0xfQUNUSVZFX1BST0dSQU0gICAgICAgICAgICAgICAgIDB4ODI1OQorI2RlZmluZSBH
TF9QUk9HUkFNX1BJUEVMSU5FX0JJTkRJTkcgICAgICAgMHg4MjVBCisjZGVmaW5lIEdMX0FUT01J
Q19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HICAweDkyQzEKKyNkZWZpbmUgR0xfQVRPTUlDX0NPVU5U
RVJfQlVGRkVSX1NUQVJUICAgIDB4OTJDMgorI2RlZmluZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZG
RVJfU0laRSAgICAgMHg5MkMzCisjZGVmaW5lIEdMX01BWF9WRVJURVhfQVRPTUlDX0NPVU5URVJf
QlVGRkVSUyAweDkyQ0MKKyNkZWZpbmUgR0xfTUFYX0ZSQUdNRU5UX0FUT01JQ19DT1VOVEVSX0JV
RkZFUlMgMHg5MkQwCisjZGVmaW5lIEdMX01BWF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUl9CVUZG
RVJTIDB4OTJEMQorI2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSUyAgICAgMHg5
MkQyCisjZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUlMgICAweDkyRDYKKyNk
ZWZpbmUgR0xfTUFYX0NPTUJJTkVEX0FUT01JQ19DT1VOVEVSUyAgIDB4OTJENworI2RlZmluZSBH
TF9NQVhfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUgMHg5MkQ4CisjZGVmaW5lIEdMX01BWF9B
VE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElOR1MgMHg5MkRDCisjZGVmaW5lIEdMX0FDVElWRV9B
VE9NSUNfQ09VTlRFUl9CVUZGRVJTICAweDkyRDkKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX0FU
T01JQ19DT1VOVEVSICAgIDB4OTJEQgorI2RlZmluZSBHTF9NQVhfSU1BR0VfVU5JVFMgICAgICAg
ICAgICAgICAgMHg4RjM4CisjZGVmaW5lIEdMX01BWF9WRVJURVhfSU1BR0VfVU5JRk9STVMgICAg
ICAweDkwQ0EKKyNkZWZpbmUgR0xfTUFYX0ZSQUdNRU5UX0lNQUdFX1VOSUZPUk1TICAgIDB4OTBD
RQorI2RlZmluZSBHTF9NQVhfQ09NQklORURfSU1BR0VfVU5JRk9STVMgICAgMHg5MENGCisjZGVm
aW5lIEdMX0lNQUdFX0JJTkRJTkdfTkFNRSAgICAgICAgICAgICAweDhGM0EKKyNkZWZpbmUgR0xf
SU1BR0VfQklORElOR19MRVZFTCAgICAgICAgICAgIDB4OEYzQgorI2RlZmluZSBHTF9JTUFHRV9C
SU5ESU5HX0xBWUVSRUQgICAgICAgICAgMHg4RjNDCisjZGVmaW5lIEdMX0lNQUdFX0JJTkRJTkdf
TEFZRVIgICAgICAgICAgICAweDhGM0QKKyNkZWZpbmUgR0xfSU1BR0VfQklORElOR19BQ0NFU1Mg
ICAgICAgICAgIDB4OEYzRQorI2RlZmluZSBHTF9JTUFHRV9CSU5ESU5HX0ZPUk1BVCAgICAgICAg
ICAgMHg5MDZFCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQkFSUklFUl9CSVQgMHgw
MDAwMDAwMQorI2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JBUlJJRVJfQklUICAgICAgMHgwMDAw
MDAwMgorI2RlZmluZSBHTF9VTklGT1JNX0JBUlJJRVJfQklUICAgICAgICAgICAgMHgwMDAwMDAw
NAorI2RlZmluZSBHTF9URVhUVVJFX0ZFVENIX0JBUlJJRVJfQklUICAgICAgMHgwMDAwMDAwOAor
I2RlZmluZSBHTF9TSEFERVJfSU1BR0VfQUNDRVNTX0JBUlJJRVJfQklUIDB4MDAwMDAwMjAKKyNk
ZWZpbmUgR0xfQ09NTUFORF9CQVJSSUVSX0JJVCAgICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZp
bmUgR0xfUElYRUxfQlVGRkVSX0JBUlJJRVJfQklUICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUg
R0xfVEVYVFVSRV9VUERBVEVfQkFSUklFUl9CSVQgICAgIDB4MDAwMDAxMDAKKyNkZWZpbmUgR0xf
QlVGRkVSX1VQREFURV9CQVJSSUVSX0JJVCAgICAgIDB4MDAwMDAyMDAKKyNkZWZpbmUgR0xfRlJB
TUVCVUZGRVJfQkFSUklFUl9CSVQgICAgICAgIDB4MDAwMDA0MDAKKyNkZWZpbmUgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX0JBUlJJRVJfQklUIDB4MDAwMDA4MDAKKyNkZWZpbmUgR0xfQVRPTUlDX0NP
VU5URVJfQkFSUklFUl9CSVQgICAgIDB4MDAwMDEwMDAKKyNkZWZpbmUgR0xfQUxMX0JBUlJJRVJf
QklUUyAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKyNkZWZpbmUgR0xfSU1BR0VfMkQgICAgICAg
ICAgICAgICAgICAgICAgIDB4OTA0RAorI2RlZmluZSBHTF9JTUFHRV8zRCAgICAgICAgICAgICAg
ICAgICAgICAgMHg5MDRFCisjZGVmaW5lIEdMX0lNQUdFX0NVQkUgICAgICAgICAgICAgICAgICAg
ICAweDkwNTAKKyNkZWZpbmUgR0xfSU1BR0VfMkRfQVJSQVkgICAgICAgICAgICAgICAgIDB4OTA1
MworI2RlZmluZSBHTF9JTlRfSU1BR0VfMkQgICAgICAgICAgICAgICAgICAgMHg5MDU4CisjZGVm
aW5lIEdMX0lOVF9JTUFHRV8zRCAgICAgICAgICAgICAgICAgICAweDkwNTkKKyNkZWZpbmUgR0xf
SU5UX0lNQUdFX0NVQkUgICAgICAgICAgICAgICAgIDB4OTA1QgorI2RlZmluZSBHTF9JTlRfSU1B
R0VfMkRfQVJSQVkgICAgICAgICAgICAgMHg5MDVFCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9J
TUFHRV8yRCAgICAgICAgICAweDkwNjMKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX0lNQUdFXzNE
ICAgICAgICAgIDB4OTA2NAorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfQ1VCRSAgICAg
ICAgMHg5MDY2CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8yRF9BUlJBWSAgICAweDkw
NjkKKyNkZWZpbmUgR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfVFlQRSAweDkwQzcKKyNk
ZWZpbmUgR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfQllfU0laRSAweDkwQzgKKyNkZWZp
bmUgR0xfSU1BR0VfRk9STUFUX0NPTVBBVElCSUxJVFlfQllfQ0xBU1MgMHg5MEM5CisjZGVmaW5l
IEdMX1JFQURfT05MWSAgICAgICAgICAgICAgICAgICAgICAweDg4QjgKKyNkZWZpbmUgR0xfV1JJ
VEVfT05MWSAgICAgICAgICAgICAgICAgICAgIDB4ODhCOQorI2RlZmluZSBHTF9SRUFEX1dSSVRF
ICAgICAgICAgICAgICAgICAgICAgMHg4OEJBCisjZGVmaW5lIEdMX1NIQURFUl9TVE9SQUdFX0JV
RkZFUiAgICAgICAgICAweDkwRDIKKyNkZWZpbmUgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJ
TkRJTkcgIDB4OTBEMworI2RlZmluZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU1RBUlQgICAg
MHg5MEQ0CisjZGVmaW5lIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFICAgICAweDkwRDUK
KyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9TSEFERVJfU1RPUkFHRV9CTE9DS1MgMHg5MEQ2CisjZGVm
aW5lIEdMX01BWF9GUkFHTUVOVF9TSEFERVJfU1RPUkFHRV9CTE9DS1MgMHg5MERBCisjZGVmaW5l
IEdMX01BWF9DT01QVVRFX1NIQURFUl9TVE9SQUdFX0JMT0NLUyAweDkwREIKKyNkZWZpbmUgR0xf
TUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NLUyAweDkwREMKKyNkZWZpbmUgR0xfTUFY
X1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HUyAweDkwREQKKyNkZWZpbmUgR0xfTUFYX1NI
QURFUl9TVE9SQUdFX0JMT0NLX1NJWkUgIDB4OTBERQorI2RlZmluZSBHTF9TSEFERVJfU1RPUkFH
RV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCAweDkwREYKKyNkZWZpbmUgR0xfU0hBREVSX1NUT1JB
R0VfQkFSUklFUl9CSVQgICAgIDB4MDAwMDIwMDAKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1NI
QURFUl9PVVRQVVRfUkVTT1VSQ0VTIDB4OEYzOQorI2RlZmluZSBHTF9ERVBUSF9TVEVOQ0lMX1RF
WFRVUkVfTU9ERSAgICAgMHg5MEVBCisjZGVmaW5lIEdMX1NURU5DSUxfSU5ERVggICAgICAgICAg
ICAgICAgICAweDE5MDEKKyNkZWZpbmUgR0xfTUlOX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZG
U0VUIDB4OEU1RQorI2RlZmluZSBHTF9NQVhfUFJPR1JBTV9URVhUVVJFX0dBVEhFUl9PRkZTRVQg
MHg4RTVGCisjZGVmaW5lIEdMX1NBTVBMRV9QT1NJVElPTiAgICAgICAgICAgICAgICAweDhFNTAK
KyNkZWZpbmUgR0xfU0FNUExFX01BU0sgICAgICAgICAgICAgICAgICAgIDB4OEU1MQorI2RlZmlu
ZSBHTF9TQU1QTEVfTUFTS19WQUxVRSAgICAgICAgICAgICAgMHg4RTUyCisjZGVmaW5lIEdMX1RF
WFRVUkVfMkRfTVVMVElTQU1QTEUgICAgICAgICAweDkxMDAKKyNkZWZpbmUgR0xfTUFYX1NBTVBM
RV9NQVNLX1dPUkRTICAgICAgICAgIDB4OEU1OQorI2RlZmluZSBHTF9NQVhfQ09MT1JfVEVYVFVS
RV9TQU1QTEVTICAgICAgMHg5MTBFCisjZGVmaW5lIEdMX01BWF9ERVBUSF9URVhUVVJFX1NBTVBM
RVMgICAgICAweDkxMEYKKyNkZWZpbmUgR0xfTUFYX0lOVEVHRVJfU0FNUExFUyAgICAgICAgICAg
IDB4OTExMAorI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdfMkRfTVVMVElTQU1QTEUgMHg5MTA0
CisjZGVmaW5lIEdMX1RFWFRVUkVfU0FNUExFUyAgICAgICAgICAgICAgICAweDkxMDYKKyNkZWZp
bmUgR0xfVEVYVFVSRV9GSVhFRF9TQU1QTEVfTE9DQVRJT05TIDB4OTEwNworI2RlZmluZSBHTF9U
RVhUVVJFX1dJRFRIICAgICAgICAgICAgICAgICAgMHgxMDAwCisjZGVmaW5lIEdMX1RFWFRVUkVf
SEVJR0hUICAgICAgICAgICAgICAgICAweDEwMDEKKyNkZWZpbmUgR0xfVEVYVFVSRV9ERVBUSCAg
ICAgICAgICAgICAgICAgIDB4ODA3MQorI2RlZmluZSBHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1B
VCAgICAgICAgMHgxMDAzCisjZGVmaW5lIEdMX1RFWFRVUkVfUkVEX1NJWkUgICAgICAgICAgICAg
ICAweDgwNUMKKyNkZWZpbmUgR0xfVEVYVFVSRV9HUkVFTl9TSVpFICAgICAgICAgICAgIDB4ODA1
RAorI2RlZmluZSBHTF9URVhUVVJFX0JMVUVfU0laRSAgICAgICAgICAgICAgMHg4MDVFCisjZGVm
aW5lIEdMX1RFWFRVUkVfQUxQSEFfU0laRSAgICAgICAgICAgICAweDgwNUYKKyNkZWZpbmUgR0xf
VEVYVFVSRV9ERVBUSF9TSVpFICAgICAgICAgICAgIDB4ODg0QQorI2RlZmluZSBHTF9URVhUVVJF
X1NURU5DSUxfU0laRSAgICAgICAgICAgMHg4OEYxCisjZGVmaW5lIEdMX1RFWFRVUkVfU0hBUkVE
X1NJWkUgICAgICAgICAgICAweDhDM0YKKyNkZWZpbmUgR0xfVEVYVFVSRV9SRURfVFlQRSAgICAg
ICAgICAgICAgIDB4OEMxMAorI2RlZmluZSBHTF9URVhUVVJFX0dSRUVOX1RZUEUgICAgICAgICAg
ICAgMHg4QzExCisjZGVmaW5lIEdMX1RFWFRVUkVfQkxVRV9UWVBFICAgICAgICAgICAgICAweDhD
MTIKKyNkZWZpbmUgR0xfVEVYVFVSRV9BTFBIQV9UWVBFICAgICAgICAgICAgIDB4OEMxMworI2Rl
ZmluZSBHTF9URVhUVVJFX0RFUFRIX1RZUEUgICAgICAgICAgICAgMHg4QzE2CisjZGVmaW5lIEdM
X1RFWFRVUkVfQ09NUFJFU1NFRCAgICAgICAgICAgICAweDg2QTEKKyNkZWZpbmUgR0xfU0FNUExF
Ul8yRF9NVUxUSVNBTVBMRSAgICAgICAgIDB4OTEwOAorI2RlZmluZSBHTF9JTlRfU0FNUExFUl8y
RF9NVUxUSVNBTVBMRSAgICAgMHg5MTA5CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVS
XzJEX01VTFRJU0FNUExFIDB4OTEwQQorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0JJTkRJTkcg
ICAgICAgICAgMHg4MkQ0CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VU
ICAweDgyRDUKKyNkZWZpbmUgR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUiAgICAgICAgIDB4ODJE
NgorI2RlZmluZSBHTF9WRVJURVhfQklORElOR19PRkZTRVQgICAgICAgICAgMHg4MkQ3CisjZGVm
aW5lIEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERSAgICAgICAgICAweDgyRDgKKyNkZWZpbmUgR0xf
VkVSVEVYX0JJTkRJTkdfQlVGRkVSICAgICAgICAgIDB4OEY0RgorI2RlZmluZSBHTF9NQVhfVkVS
VEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQgMHg4MkQ5CisjZGVmaW5lIEdMX01BWF9WRVJURVhf
QVRUUklCX0JJTkRJTkdTICAgICAweDgyREEKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9BVFRSSUJf
U1RSSURFICAgICAgIDB4ODJFNQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNQ
QVRDSENPTVBVVEVQUk9DKSAoR0x1aW50IG51bV9ncm91cHNfeCwgR0x1aW50IG51bV9ncm91cHNf
eSwgR0x1aW50IG51bV9ncm91cHNfeik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TERJU1BBVENIQ09NUFVURUlORElSRUNUUFJPQykgKEdMaW50cHRyIGluZGlyZWN0KTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0FSUkFZU0lORElSRUNUUFJPQykgKEdMZW51
bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTERSQVdFTEVNRU5UU0lORElSRUNUUFJPQykgKEdMZW51bSBtb2RlLCBHTGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xGUkFNRUJVRkZFUlBBUkFNRVRFUklQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEZSQU1F
QlVGRkVSUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JBTUlO
VEVSRkFDRUlWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgR0x1aW50IChHTF9BUElFTlRS
WVAgUEZOR0xHRVRQUk9HUkFNUkVTT1VSQ0VJTkRFWFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xl
bnVtIHByb2dyYW1JbnRlcmZhY2UsIGNvbnN0IEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1SRVNPVVJDRU5BTUVQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKm5hbWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNUkVTT1VSQ0VJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
R0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRleCwgR0xzaXplaSBwcm9wQ291bnQs
IGNvbnN0IEdMZW51bSAqcHJvcHMsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBH
TGludCAqcGFyYW1zKTsKK3R5cGVkZWYgR0xpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dS
QU1SRVNPVVJDRUxPQ0FUSU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwgY29uc3QgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVVNFUFJPR1JBTVNUQUdFU1BST0MpIChHTHVpbnQgcGlwZWxpbmUsIEdMYml0ZmllbGQg
c3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEFDVElWRVNIQURFUlBST0dSQU1QUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTHVpbnQgcHJvZ3Jh
bSk7Cit0eXBlZGVmIEdMdWludCAoR0xfQVBJRU5UUllQIFBGTkdMQ1JFQVRFU0hBREVSUFJPR1JB
TVZQUk9DKSAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhciAqY29uc3Qq
c3RyaW5ncyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRQUk9HUkFNUElQ
RUxJTkVQUk9DKSAoR0x1aW50IHBpcGVsaW5lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMREVMRVRFUFJPR1JBTVBJUEVMSU5FU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqcGlwZWxpbmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOUFJPR1JB
TVBJUEVMSU5FU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqcGlwZWxpbmVzKTsKK3R5cGVkZWYg
R0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1BST0dSQU1QSVBFTElORVBST0MpIChHTHVp
bnQgcGlwZWxpbmUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFN
UElQRUxJTkVJVlBST0MpIChHTHVpbnQgcGlwZWxpbmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMUlQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMklQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNJUFJPQykgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2Mik7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNElQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGlu
dCB2Myk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMVVJ
UFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0yVUlQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM1VJUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNFVJUFJPQykg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdM
dWludCB2MiwgR0x1aW50IHYzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJP
R1JBTVVOSUZPUk0xRlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQgdjApOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJG
UFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9h
dCB2MSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0ZQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0
IHYxLCBHTGZsb2F0IHYyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JB
TVVOSUZPUk00RlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
djAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMklWUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zSVZQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFN
VU5JRk9STTRJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFBST0dSQU1VTklGT1JNMVVJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJVSVZQUk9DKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zVUlWUFJPQykgKEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JN
NFVJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQ
Uk9HUkFNVU5JRk9STTFGVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0yRlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0ZWUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRGVlBS
T0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JB
TVVOSUZPUk1NQVRSSVgyRlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNTUFUUklYM0ZW
UFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STU1BVFJJWDRGVlBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
UFJPR1JBTVVOSUZPUk1NQVRSSVgyWDNGVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1N
QVRSSVgzWDJGVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVgyWDRGVlBST0Mp
IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVg0WDJGVlBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJP
R1JBTVVOSUZPUk1NQVRSSVgzWDRGVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRS
SVg0WDNGVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkFMSURBVEVQUk9HUkFNUElQRUxJTkVQUk9DKSAoR0x1
aW50IHBpcGVsaW5lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JB
TVBJUEVMSU5FSU5GT0xPR1BST0MpIChHTHVpbnQgcGlwZWxpbmUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9Mb2cpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xCSU5ESU1BR0VURVhUVVJFUFJPQykgKEdMdWludCB1bml0LCBHTHVpbnQgdGV4
dHVyZSwgR0xpbnQgbGV2ZWwsIEdMYm9vbGVhbiBsYXllcmVkLCBHTGludCBsYXllciwgR0xlbnVt
IGFjY2VzcywgR0xlbnVtIGZvcm1hdCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVEJPT0xFQU5JX1ZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xl
YW4gKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNRU1PUllCQVJSSUVS
UFJPQykgKEdMYml0ZmllbGQgYmFycmllcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xNRU1PUllCQVJSSUVSQllSRUdJT05QUk9DKSAoR0xiaXRmaWVsZCBiYXJyaWVycyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNUT1JBR0UyRE1VTFRJU0FNUExFUFJP
QykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9j
YXRpb25zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTVVMVElTQU1QTEVG
VlBST0MpIChHTGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFTUFTS0lQUk9DKSAoR0x1aW50IG1hc2tO
dW1iZXIsIEdMYml0ZmllbGQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVFRFWExFVkVMUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSRlZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMQklORFZFUlRFWEJVRkZFUlBST0MpIChHTHVpbnQgYmluZGluZ2luZGV4
LCBHTHVpbnQgYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWkgc3RyaWRlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCRk9STUFUUFJPQykgKEdMdWlu
dCBhdHRyaWJpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxp
emVkLCBHTHVpbnQgcmVsYXRpdmVvZmZzZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xWRVJURVhBVFRSSUJJRk9STUFUUFJPQykgKEdMdWludCBhdHRyaWJpbmRleCwgR0xpbnQg
c2l6ZSwgR0xlbnVtIHR5cGUsIEdMdWludCByZWxhdGl2ZW9mZnNldCk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkJJTkRJTkdQUk9DKSAoR0x1aW50IGF0dHJp
YmluZGV4LCBHTHVpbnQgYmluZGluZ2luZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVkVSVEVYQklORElOR0RJVklTT1JQUk9DKSAoR0x1aW50IGJpbmRpbmdpbmRleCwgR0x1
aW50IGRpdmlzb3IpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbERpc3BhdGNoQ29tcHV0ZSAoR0x1aW50IG51bV9ncm91cHNfeCwgR0x1
aW50IG51bV9ncm91cHNfeSwgR0x1aW50IG51bV9ncm91cHNfeik7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xEaXNwYXRjaENvbXB1dGVJbmRpcmVjdCAoR0xpbnRwdHIgaW5kaXJlY3Qp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5c0luZGlyZWN0IChHTGVu
dW0gbW9kZSwgY29uc3Qgdm9pZCAqaW5kaXJlY3QpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsRHJhd0VsZW1lbnRzSW5kaXJlY3QgKEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29u
c3Qgdm9pZCAqaW5kaXJlY3QpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJhbWVi
dWZmZXJQYXJhbWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZyYW1lYnVmZmVyUGFyYW1ldGVy
aXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXYgKEdMdWludCBwcm9n
cmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKK0dMX0FQSUNBTEwgR0x1aW50IEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVJlc291cmNlSW5k
ZXggKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgY29uc3QgR0xjaGFy
ICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJj
ZU5hbWUgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwgR0x1aW50IGlu
ZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpuYW1lKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZWl2IChHTHVpbnQg
cHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRleCwgR0xzaXplaSBw
cm9wQ291bnQsIGNvbnN0IEdMZW51bSAqcHJvcHMsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgR0xpbnQgR0xfQVBJRU5UUlkgZ2xH
ZXRQcm9ncmFtUmVzb3VyY2VMb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlLCBjb25zdCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsVXNlUHJvZ3JhbVN0YWdlcyAoR0x1aW50IHBpcGVsaW5lLCBHTGJpdGZpZWxkIHN0YWdl
cywgR0x1aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQWN0aXZl
U2hhZGVyUHJvZ3JhbSAoR0x1aW50IHBpcGVsaW5lLCBHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUElD
QUxMIEdMdWludCBHTF9BUElFTlRSWSBnbENyZWF0ZVNoYWRlclByb2dyYW12IChHTGVudW0gdHlw
ZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25zdCpzdHJpbmdzKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRQcm9ncmFtUGlwZWxpbmUgKEdMdWludCBwaXBlbGlu
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVz
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdlblByb2dyYW1QaXBlbGluZXMgKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBl
bGluZXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1Byb2dyYW1QaXBl
bGluZSAoR0x1aW50IHBpcGVsaW5lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dFByb2dyYW1QaXBlbGluZWl2IChHTHVpbnQgcGlwZWxpbmUsIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFp
IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMmkgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFByb2dyYW1Vbmlmb3JtM2kgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2Mik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xQcm9ncmFtVW5pZm9ybTRpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
aW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIsIEdMaW50IHYzKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMXVpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMdWludCB2MCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFt
VW5pZm9ybTJ1aSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdM
dWludCB2MSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTN1
aSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwg
R0x1aW50IHYyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3Jt
NHVpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYx
LCBHTHVpbnQgdjIsIEdMdWludCB2Myk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtVW5pZm9ybTFmIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
djApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0yZiAoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtM2YgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2Mik7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRmIChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQg
djIsIEdMZmxvYXQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVu
aWZvcm0xaXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dy
YW1Vbmlmb3JtMml2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQ
cm9ncmFtVW5pZm9ybTNpdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUHJvZ3JhbVVuaWZvcm00aXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFByb2dyYW1Vbmlmb3JtMXVpdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMnVpdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtM3VpdiAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNHVpdiAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWZ2IChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMmZ2IChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3Jt
M2Z2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1V
bmlmb3JtNGZ2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtTWF0cml4MmZ2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2IChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0
cml4MngzZnYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdiAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybU1hdHJpeDJ4NGZ2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdiAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4M2Z2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFZhbGlkYXRlUHJvZ3JhbVBpcGVsaW5lIChHTHVpbnQgcGlw
ZWxpbmUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVBpcGVsaW5l
SW5mb0xvZyAoR0x1aW50IHBpcGVsaW5lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xjaGFyICppbmZvTG9nKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRJ
bWFnZVRleHR1cmUgKEdMdWludCB1bml0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdM
Ym9vbGVhbiBsYXllcmVkLCBHTGludCBsYXllciwgR0xlbnVtIGFjY2VzcywgR0xlbnVtIGZvcm1h
dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCb29sZWFuaV92IChHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xNZW1vcnlCYXJyaWVyIChHTGJpdGZpZWxkIGJhcnJpZXJzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbE1lbW9yeUJhcnJpZXJCeVJlZ2lvbiAoR0xiaXRmaWVs
ZCBiYXJyaWVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhTdG9yYWdlMkRN
dWx0aXNhbXBsZSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGJvb2xlYW4gZml4ZWRz
YW1wbGVsb2NhdGlvbnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0TXVsdGlz
YW1wbGVmdiAoR0xlbnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZhbCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVNYXNraSAoR0x1aW50IG1hc2tOdW1iZXIs
IEdMYml0ZmllbGQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhM
ZXZlbFBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFRleExl
dmVsUGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUs
IEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVmVy
dGV4QnVmZmVyIChHTHVpbnQgYmluZGluZ2luZGV4LCBHTHVpbnQgYnVmZmVyLCBHTGludHB0ciBv
ZmZzZXQsIEdMc2l6ZWkgc3RyaWRlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYkZvcm1hdCAoR0x1aW50IGF0dHJpYmluZGV4LCBHTGludCBzaXplLCBHTGVudW0g
dHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMdWludCByZWxhdGl2ZW9mZnNldCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJJRm9ybWF0IChHTHVpbnQgYXR0
cmliaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHVpbnQgcmVsYXRpdmVvZmZzZXQp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliQmluZGluZyAoR0x1
aW50IGF0dHJpYmluZGV4LCBHTHVpbnQgYmluZGluZ2luZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFZlcnRleEJpbmRpbmdEaXZpc29yIChHTHVpbnQgYmluZGluZ2luZGV4LCBH
THVpbnQgZGl2aXNvcik7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FU19WRVJTSU9OXzNfMSAqLwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzMi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzMi5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxODI1IEBACisjaWZuZGVmIF9fZ2wzMl9oXworI2RlZmluZSBfX2dsMzJf
aF8gMQorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qCisq
KiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCisqKgorKiog
UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz
b24gb2J0YWluaW5nIGEKKyoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyoqICJNYXRlcmlhbHMiKSwgdG8gZGVhbCBpbiB0
aGUgTWF0ZXJpYWxzIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZworKiogd2l0aG91dCBs
aW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo
LAorKiogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBN
YXRlcmlhbHMsIGFuZCB0bworKiogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgTWF0ZXJpYWxz
IGFyZSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KKyoqIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKKyoqCisqKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAorKiogaW4gYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgorKioKKyoqIFRIRSBNQVRFUklBTFMg
QVJFIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisqKiBF
WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YKKyoqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KKyoqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCisqKiBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LAorKiogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUKKyoqIE1BVEVSSUFMUyBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT
IElOIFRIRSBNQVRFUklBTFMuCisqLworLyoKKyoqIFRoaXMgaGVhZGVyIGlzIGdlbmVyYXRlZCBm
cm9tIHRoZSBLaHJvbm9zIE9wZW5HTCAvIE9wZW5HTCBFUyBYTUwKKyoqIEFQSSBSZWdpc3RyeS4g
VGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgUmVnaXN0cnksIGdlbmVyYXRvciBzY3JpcHRzCisq
KiB1c2VkIHRvIG1ha2UgdGhlIGhlYWRlciwgYW5kIHRoZSBoZWFkZXIgY2FuIGJlIGZvdW5kIGF0
CisqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS8KKyoqCisqKiBLaHJvbm9zICRS
ZXZpc2lvbiQgb24gJERhdGUkCisqLworCisjaW5jbHVkZSA8R0xFUzMvZ2wzcGxhdGZvcm0uaD4K
KworI2lmbmRlZiBHTF9BUElFTlRSWVAKKyNkZWZpbmUgR0xfQVBJRU5UUllQIEdMX0FQSUVOVFJZ
KgorI2VuZGlmCisKKy8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTUwODA5ICovCisKKy8qIEdlbmVy
YXRlZCBDIGhlYWRlciBmb3I6CisgKiBBUEk6IGdsZXMyCisgKiBQcm9maWxlOiBjb21tb24KKyAq
IFZlcnNpb25zIGNvbnNpZGVyZWQ6IDJcLlswLTldfDNcLlswMTJdCisgKiBWZXJzaW9ucyBlbWl0
dGVkOiAuKgorICogRGVmYXVsdCBleHRlbnNpb25zIGluY2x1ZGVkOiBOb25lCisgKiBBZGRpdGlv
bmFsIGV4dGVuc2lvbnMgaW5jbHVkZWQ6IF9ub21hdGNoX14KKyAqIEV4dGVuc2lvbnMgcmVtb3Zl
ZDogX25vbWF0Y2hfXgorICovCisKKyNpZm5kZWYgR0xfRVNfVkVSU0lPTl8yXzAKKyNkZWZpbmUg
R0xfRVNfVkVSU0lPTl8yXzAgMQorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgordHlwZWRl
ZiBraHJvbm9zX2ludDhfdCBHTGJ5dGU7Cit0eXBlZGVmIGtocm9ub3NfZmxvYXRfdCBHTGNsYW1w
ZjsKK3R5cGVkZWYga2hyb25vc19pbnQzMl90IEdMZml4ZWQ7Cit0eXBlZGVmIHNob3J0IEdMc2hv
cnQ7Cit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdMdXNob3J0OwordHlwZWRlZiB2b2lkIEdMdm9p
ZDsKK3R5cGVkZWYgc3RydWN0IF9fR0xzeW5jICpHTHN5bmM7Cit0eXBlZGVmIGtocm9ub3NfaW50
NjRfdCBHTGludDY0OwordHlwZWRlZiBraHJvbm9zX3VpbnQ2NF90IEdMdWludDY0OwordHlwZWRl
ZiB1bnNpZ25lZCBpbnQgR0xlbnVtOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgR0x1aW50OwordHlw
ZWRlZiBjaGFyIEdMY2hhcjsKK3R5cGVkZWYga2hyb25vc19mbG9hdF90IEdMZmxvYXQ7Cit0eXBl
ZGVmIGtocm9ub3Nfc3NpemVfdCBHTHNpemVpcHRyOwordHlwZWRlZiBraHJvbm9zX2ludHB0cl90
IEdMaW50cHRyOwordHlwZWRlZiB1bnNpZ25lZCBpbnQgR0xiaXRmaWVsZDsKK3R5cGVkZWYgaW50
IEdMaW50OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEdMYm9vbGVhbjsKK3R5cGVkZWYgaW50IEdM
c2l6ZWk7Cit0eXBlZGVmIGtocm9ub3NfdWludDhfdCBHTHVieXRlOworI2RlZmluZSBHTF9ERVBU
SF9CVUZGRVJfQklUICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorI2RlZmluZSBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQgICAgICAgICAgICAgMHgwMDAwMDQwMAorI2RlZmluZSBHTF9DT0xPUl9CVUZG
RVJfQklUICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBHTF9GQUxTRSAgICAgICAg
ICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBHTF9UUlVFICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMQorI2RlZmluZSBHTF9QT0lOVFMgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAw
CisjZGVmaW5lIEdMX0xJTkVTICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEKKyNkZWZp
bmUgR0xfTElORV9MT09QICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMgorI2RlZmluZSBHTF9M
SU5FX1NUUklQICAgICAgICAgICAgICAgICAgICAgMHgwMDAzCisjZGVmaW5lIEdMX1RSSUFOR0xF
UyAgICAgICAgICAgICAgICAgICAgICAweDAwMDQKKyNkZWZpbmUgR0xfVFJJQU5HTEVfU1RSSVAg
ICAgICAgICAgICAgICAgIDB4MDAwNQorI2RlZmluZSBHTF9UUklBTkdMRV9GQU4gICAgICAgICAg
ICAgICAgICAgMHgwMDA2CisjZGVmaW5lIEdMX1pFUk8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAwCisjZGVmaW5lIEdMX09ORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5l
IEdMX1NSQ19DT0xPUiAgICAgICAgICAgICAgICAgICAgICAweDAzMDAKKyNkZWZpbmUgR0xfT05F
X01JTlVTX1NSQ19DT0xPUiAgICAgICAgICAgIDB4MDMwMQorI2RlZmluZSBHTF9TUkNfQUxQSEEg
ICAgICAgICAgICAgICAgICAgICAgMHgwMzAyCisjZGVmaW5lIEdMX09ORV9NSU5VU19TUkNfQUxQ
SEEgICAgICAgICAgICAweDAzMDMKKyNkZWZpbmUgR0xfRFNUX0FMUEhBICAgICAgICAgICAgICAg
ICAgICAgIDB4MDMwNAorI2RlZmluZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBICAgICAgICAgICAg
MHgwMzA1CisjZGVmaW5lIEdMX0RTVF9DT0xPUiAgICAgICAgICAgICAgICAgICAgICAweDAzMDYK
KyNkZWZpbmUgR0xfT05FX01JTlVTX0RTVF9DT0xPUiAgICAgICAgICAgIDB4MDMwNworI2RlZmlu
ZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEUgICAgICAgICAgICAgMHgwMzA4CisjZGVmaW5lIEdMX0ZV
TkNfQUREICAgICAgICAgICAgICAgICAgICAgICAweDgwMDYKKyNkZWZpbmUgR0xfQkxFTkRfRVFV
QVRJT04gICAgICAgICAgICAgICAgIDB4ODAwOQorI2RlZmluZSBHTF9CTEVORF9FUVVBVElPTl9S
R0IgICAgICAgICAgICAgMHg4MDA5CisjZGVmaW5lIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBICAg
ICAgICAgICAweDg4M0QKKyNkZWZpbmUgR0xfRlVOQ19TVUJUUkFDVCAgICAgICAgICAgICAgICAg
IDB4ODAwQQorI2RlZmluZSBHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QgICAgICAgICAgMHg4MDBC
CisjZGVmaW5lIEdMX0JMRU5EX0RTVF9SR0IgICAgICAgICAgICAgICAgICAweDgwQzgKKyNkZWZp
bmUgR0xfQkxFTkRfU1JDX1JHQiAgICAgICAgICAgICAgICAgIDB4ODBDOQorI2RlZmluZSBHTF9C
TEVORF9EU1RfQUxQSEEgICAgICAgICAgICAgICAgMHg4MENBCisjZGVmaW5lIEdMX0JMRU5EX1NS
Q19BTFBIQSAgICAgICAgICAgICAgICAweDgwQ0IKKyNkZWZpbmUgR0xfQ09OU1RBTlRfQ09MT1Ig
ICAgICAgICAgICAgICAgIDB4ODAwMQorI2RlZmluZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09M
T1IgICAgICAgMHg4MDAyCisjZGVmaW5lIEdMX0NPTlNUQU5UX0FMUEhBICAgICAgICAgICAgICAg
ICAweDgwMDMKKyNkZWZpbmUgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBICAgICAgIDB4ODAw
NAorI2RlZmluZSBHTF9CTEVORF9DT0xPUiAgICAgICAgICAgICAgICAgICAgMHg4MDA1CisjZGVm
aW5lIEdMX0FSUkFZX0JVRkZFUiAgICAgICAgICAgICAgICAgICAweDg4OTIKKyNkZWZpbmUgR0xf
RUxFTUVOVF9BUlJBWV9CVUZGRVIgICAgICAgICAgIDB4ODg5MworI2RlZmluZSBHTF9BUlJBWV9C
VUZGRVJfQklORElORyAgICAgICAgICAgMHg4ODk0CisjZGVmaW5lIEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSX0JJTkRJTkcgICAweDg4OTUKKyNkZWZpbmUgR0xfU1RSRUFNX0RSQVcgICAgICAgICAg
ICAgICAgICAgIDB4ODhFMAorI2RlZmluZSBHTF9TVEFUSUNfRFJBVyAgICAgICAgICAgICAgICAg
ICAgMHg4OEU0CisjZGVmaW5lIEdMX0RZTkFNSUNfRFJBVyAgICAgICAgICAgICAgICAgICAweDg4
RTgKKyNkZWZpbmUgR0xfQlVGRkVSX1NJWkUgICAgICAgICAgICAgICAgICAgIDB4ODc2NAorI2Rl
ZmluZSBHTF9CVUZGRVJfVVNBR0UgICAgICAgICAgICAgICAgICAgMHg4NzY1CisjZGVmaW5lIEdM
X0NVUlJFTlRfVkVSVEVYX0FUVFJJQiAgICAgICAgICAweDg2MjYKKyNkZWZpbmUgR0xfRlJPTlQg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQwNAorI2RlZmluZSBHTF9CQUNLICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgwNDA1CisjZGVmaW5lIEdMX0ZST05UX0FORF9CQUNLICAgICAg
ICAgICAgICAgICAweDA0MDgKKyNkZWZpbmUgR0xfVEVYVFVSRV8yRCAgICAgICAgICAgICAgICAg
ICAgIDB4MERFMQorI2RlZmluZSBHTF9DVUxMX0ZBQ0UgICAgICAgICAgICAgICAgICAgICAgMHgw
QjQ0CisjZGVmaW5lIEdMX0JMRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCRTIKKyNk
ZWZpbmUgR0xfRElUSEVSICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEJEMAorI2RlZmluZSBH
TF9TVEVOQ0lMX1RFU1QgICAgICAgICAgICAgICAgICAgMHgwQjkwCisjZGVmaW5lIEdMX0RFUFRI
X1RFU1QgICAgICAgICAgICAgICAgICAgICAweDBCNzEKKyNkZWZpbmUgR0xfU0NJU1NPUl9URVNU
ICAgICAgICAgICAgICAgICAgIDB4MEMxMQorI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9GSUxM
ICAgICAgICAgICAgMHg4MDM3CisjZGVmaW5lIEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSAg
ICAgICAweDgwOUUKKyNkZWZpbmUgR0xfU0FNUExFX0NPVkVSQUdFICAgICAgICAgICAgICAgIDB4
ODBBMAorI2RlZmluZSBHTF9OT19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmlu
ZSBHTF9JTlZBTElEX0VOVU0gICAgICAgICAgICAgICAgICAgMHgwNTAwCisjZGVmaW5lIEdMX0lO
VkFMSURfVkFMVUUgICAgICAgICAgICAgICAgICAweDA1MDEKKyNkZWZpbmUgR0xfSU5WQUxJRF9P
UEVSQVRJT04gICAgICAgICAgICAgIDB4MDUwMgorI2RlZmluZSBHTF9PVVRfT0ZfTUVNT1JZICAg
ICAgICAgICAgICAgICAgMHgwNTA1CisjZGVmaW5lIEdMX0NXICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDA5MDAKKyNkZWZpbmUgR0xfQ0NXICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MDkwMQorI2RlZmluZSBHTF9MSU5FX1dJRFRIICAgICAgICAgICAgICAgICAgICAgMHgwQjIx
CisjZGVmaW5lIEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSAgICAgICAweDg0NkQKKyNkZWZp
bmUgR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFICAgICAgIDB4ODQ2RQorI2RlZmluZSBHTF9D
VUxMX0ZBQ0VfTU9ERSAgICAgICAgICAgICAgICAgMHgwQjQ1CisjZGVmaW5lIEdMX0ZST05UX0ZB
Q0UgICAgICAgICAgICAgICAgICAgICAweDBCNDYKKyNkZWZpbmUgR0xfREVQVEhfUkFOR0UgICAg
ICAgICAgICAgICAgICAgIDB4MEI3MAorI2RlZmluZSBHTF9ERVBUSF9XUklURU1BU0sgICAgICAg
ICAgICAgICAgMHgwQjcyCisjZGVmaW5lIEdMX0RFUFRIX0NMRUFSX1ZBTFVFICAgICAgICAgICAg
ICAweDBCNzMKKyNkZWZpbmUgR0xfREVQVEhfRlVOQyAgICAgICAgICAgICAgICAgICAgIDB4MEI3
NAorI2RlZmluZSBHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFICAgICAgICAgICAgMHgwQjkxCisjZGVm
aW5lIEdMX1NURU5DSUxfRlVOQyAgICAgICAgICAgICAgICAgICAweDBCOTIKKyNkZWZpbmUgR0xf
U1RFTkNJTF9GQUlMICAgICAgICAgICAgICAgICAgIDB4MEI5NAorI2RlZmluZSBHTF9TVEVOQ0lM
X1BBU1NfREVQVEhfRkFJTCAgICAgICAgMHgwQjk1CisjZGVmaW5lIEdMX1NURU5DSUxfUEFTU19E
RVBUSF9QQVNTICAgICAgICAweDBCOTYKKyNkZWZpbmUgR0xfU1RFTkNJTF9SRUYgICAgICAgICAg
ICAgICAgICAgIDB4MEI5NworI2RlZmluZSBHTF9TVEVOQ0lMX1ZBTFVFX01BU0sgICAgICAgICAg
ICAgMHgwQjkzCisjZGVmaW5lIEdMX1NURU5DSUxfV1JJVEVNQVNLICAgICAgICAgICAgICAweDBC
OTgKKyNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX0ZVTkMgICAgICAgICAgICAgIDB4ODgwMAorI2Rl
ZmluZSBHTF9TVEVOQ0lMX0JBQ0tfRkFJTCAgICAgICAgICAgICAgMHg4ODAxCisjZGVmaW5lIEdM
X1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwgICAweDg4MDIKKyNkZWZpbmUgR0xfU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfUEFTUyAgIDB4ODgwMworI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tf
UkVGICAgICAgICAgICAgICAgMHg4Q0EzCisjZGVmaW5lIEdMX1NURU5DSUxfQkFDS19WQUxVRV9N
QVNLICAgICAgICAweDhDQTQKKyNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyAgICAg
ICAgIDB4OENBNQorI2RlZmluZSBHTF9WSUVXUE9SVCAgICAgICAgICAgICAgICAgICAgICAgMHgw
QkEyCisjZGVmaW5lIEdMX1NDSVNTT1JfQk9YICAgICAgICAgICAgICAgICAgICAweDBDMTAKKyNk
ZWZpbmUgR0xfQ09MT1JfQ0xFQVJfVkFMVUUgICAgICAgICAgICAgIDB4MEMyMgorI2RlZmluZSBH
TF9DT0xPUl9XUklURU1BU0sgICAgICAgICAgICAgICAgMHgwQzIzCisjZGVmaW5lIEdMX1VOUEFD
S19BTElHTk1FTlQgICAgICAgICAgICAgICAweDBDRjUKKyNkZWZpbmUgR0xfUEFDS19BTElHTk1F
TlQgICAgICAgICAgICAgICAgIDB4MEQwNQorI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9TSVpFICAg
ICAgICAgICAgICAgMHgwRDMzCisjZGVmaW5lIEdMX01BWF9WSUVXUE9SVF9ESU1TICAgICAgICAg
ICAgICAweDBEM0EKKyNkZWZpbmUgR0xfU1VCUElYRUxfQklUUyAgICAgICAgICAgICAgICAgIDB4
MEQ1MAorI2RlZmluZSBHTF9SRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgMHgwRDUyCisj
ZGVmaW5lIEdMX0dSRUVOX0JJVFMgICAgICAgICAgICAgICAgICAgICAweDBENTMKKyNkZWZpbmUg
R0xfQkxVRV9CSVRTICAgICAgICAgICAgICAgICAgICAgIDB4MEQ1NAorI2RlZmluZSBHTF9BTFBI
QV9CSVRTICAgICAgICAgICAgICAgICAgICAgMHgwRDU1CisjZGVmaW5lIEdMX0RFUFRIX0JJVFMg
ICAgICAgICAgICAgICAgICAgICAweDBENTYKKyNkZWZpbmUgR0xfU1RFTkNJTF9CSVRTICAgICAg
ICAgICAgICAgICAgIDB4MEQ1NworI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9VTklUUyAgICAg
ICAgICAgMHgyQTAwCisjZGVmaW5lIEdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUiAgICAgICAgICAw
eDgwMzgKKyNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzJEICAgICAgICAgICAgIDB4ODA2OQor
I2RlZmluZSBHTF9TQU1QTEVfQlVGRkVSUyAgICAgICAgICAgICAgICAgMHg4MEE4CisjZGVmaW5l
IEdMX1NBTVBMRVMgICAgICAgICAgICAgICAgICAgICAgICAweDgwQTkKKyNkZWZpbmUgR0xfU0FN
UExFX0NPVkVSQUdFX1ZBTFVFICAgICAgICAgIDB4ODBBQQorI2RlZmluZSBHTF9TQU1QTEVfQ09W
RVJBR0VfSU5WRVJUICAgICAgICAgMHg4MEFCCisjZGVmaW5lIEdMX05VTV9DT01QUkVTU0VEX1RF
WFRVUkVfRk9STUFUUyAweDg2QTIKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1B
VFMgICAgIDB4ODZBMworI2RlZmluZSBHTF9ET05UX0NBUkUgICAgICAgICAgICAgICAgICAgICAg
MHgxMTAwCisjZGVmaW5lIEdMX0ZBU1RFU1QgICAgICAgICAgICAgICAgICAgICAgICAweDExMDEK
KyNkZWZpbmUgR0xfTklDRVNUICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEwMgorI2RlZmlu
ZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVCAgICAgICAgICAgMHg4MTkyCisjZGVmaW5lIEdMX0JZ
VEUgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDAKKyNkZWZpbmUgR0xfVU5TSUdORURf
QllURSAgICAgICAgICAgICAgICAgIDB4MTQwMQorI2RlZmluZSBHTF9TSE9SVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgxNDAyCisjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUICAgICAgICAg
ICAgICAgICAweDE0MDMKKyNkZWZpbmUgR0xfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MTQwNAorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICAgMHgxNDA1
CisjZGVmaW5lIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDYKKyNkZWZp
bmUgR0xfRklYRUQgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQwQworI2RlZmluZSBHTF9E
RVBUSF9DT01QT05FTlQgICAgICAgICAgICAgICAgMHgxOTAyCisjZGVmaW5lIEdMX0FMUEhBICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDE5MDYKKyNkZWZpbmUgR0xfUkdCICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4MTkwNworI2RlZmluZSBHTF9SR0JBICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHgxOTA4CisjZGVmaW5lIEdMX0xVTUlOQU5DRSAgICAgICAgICAgICAgICAgICAg
ICAweDE5MDkKKyNkZWZpbmUgR0xfTFVNSU5BTkNFX0FMUEhBICAgICAgICAgICAgICAgIDB4MTkw
QQorI2RlZmluZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80ICAgICAgICAgMHg4MDMzCisjZGVm
aW5lIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEgICAgICAgICAweDgwMzQKKyNkZWZpbmUgR0xf
VU5TSUdORURfU0hPUlRfNV82XzUgICAgICAgICAgIDB4ODM2MworI2RlZmluZSBHTF9GUkFHTUVO
VF9TSEFERVIgICAgICAgICAgICAgICAgMHg4QjMwCisjZGVmaW5lIEdMX1ZFUlRFWF9TSEFERVIg
ICAgICAgICAgICAgICAgICAweDhCMzEKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTICAg
ICAgICAgICAgIDB4ODg2OQorI2RlZmluZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyAg
ICAgMHg4REZCCisjZGVmaW5lIEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMgICAgICAgICAgICAweDhE
RkMKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMgMHg4QjRECisj
ZGVmaW5lIEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyAweDhCNEMKKyNkZWZpbmUg
R0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgICAgICAgIDB4ODg3MgorI2RlZmluZSBHTF9NQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTICAgMHg4REZECisjZGVmaW5lIEdMX1NIQURFUl9UWVBF
ICAgICAgICAgICAgICAgICAgICAweDhCNEYKKyNkZWZpbmUgR0xfREVMRVRFX1NUQVRVUyAgICAg
ICAgICAgICAgICAgIDB4OEI4MAorI2RlZmluZSBHTF9MSU5LX1NUQVRVUyAgICAgICAgICAgICAg
ICAgICAgMHg4QjgyCisjZGVmaW5lIEdMX1ZBTElEQVRFX1NUQVRVUyAgICAgICAgICAgICAgICAw
eDhCODMKKyNkZWZpbmUgR0xfQVRUQUNIRURfU0hBREVSUyAgICAgICAgICAgICAgIDB4OEI4NQor
I2RlZmluZSBHTF9BQ1RJVkVfVU5JRk9STVMgICAgICAgICAgICAgICAgMHg4Qjg2CisjZGVmaW5l
IEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggICAgICAweDhCODcKKyNkZWZpbmUgR0xfQUNU
SVZFX0FUVFJJQlVURVMgICAgICAgICAgICAgIDB4OEI4OQorI2RlZmluZSBHTF9BQ1RJVkVfQVRU
UklCVVRFX01BWF9MRU5HVEggICAgMHg4QjhBCisjZGVmaW5lIEdMX1NIQURJTkdfTEFOR1VBR0Vf
VkVSU0lPTiAgICAgICAweDhCOEMKKyNkZWZpbmUgR0xfQ1VSUkVOVF9QUk9HUkFNICAgICAgICAg
ICAgICAgIDB4OEI4RAorI2RlZmluZSBHTF9ORVZFUiAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgwMjAwCisjZGVmaW5lIEdMX0xFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDEK
KyNkZWZpbmUgR0xfRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMgorI2RlZmlu
ZSBHTF9MRVFVQUwgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAzCisjZGVmaW5lIEdMX0dS
RUFURVIgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDQKKyNkZWZpbmUgR0xfTk9URVFVQUwg
ICAgICAgICAgICAgICAgICAgICAgIDB4MDIwNQorI2RlZmluZSBHTF9HRVFVQUwgICAgICAgICAg
ICAgICAgICAgICAgICAgMHgwMjA2CisjZGVmaW5lIEdMX0FMV0FZUyAgICAgICAgICAgICAgICAg
ICAgICAgICAweDAyMDcKKyNkZWZpbmUgR0xfS0VFUCAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MUUwMAorI2RlZmluZSBHTF9SRVBMQUNFICAgICAgICAgICAgICAgICAgICAgICAgMHgxRTAx
CisjZGVmaW5lIEdMX0lOQ1IgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFFMDIKKyNkZWZp
bmUgR0xfREVDUiAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUUwMworI2RlZmluZSBHTF9J
TlZFUlQgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNTBBCisjZGVmaW5lIEdMX0lOQ1JfV1JB
UCAgICAgICAgICAgICAgICAgICAgICAweDg1MDcKKyNkZWZpbmUgR0xfREVDUl9XUkFQICAgICAg
ICAgICAgICAgICAgICAgIDB4ODUwOAorI2RlZmluZSBHTF9WRU5ET1IgICAgICAgICAgICAgICAg
ICAgICAgICAgMHgxRjAwCisjZGVmaW5lIEdMX1JFTkRFUkVSICAgICAgICAgICAgICAgICAgICAg
ICAweDFGMDEKKyNkZWZpbmUgR0xfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgIDB4MUYw
MgorI2RlZmluZSBHTF9FWFRFTlNJT05TICAgICAgICAgICAgICAgICAgICAgMHgxRjAzCisjZGVm
aW5lIEdMX05FQVJFU1QgICAgICAgICAgICAgICAgICAgICAgICAweDI2MDAKKyNkZWZpbmUgR0xf
TElORUFSICAgICAgICAgICAgICAgICAgICAgICAgIDB4MjYwMQorI2RlZmluZSBHTF9ORUFSRVNU
X01JUE1BUF9ORUFSRVNUICAgICAgICAgMHgyNzAwCisjZGVmaW5lIEdMX0xJTkVBUl9NSVBNQVBf
TkVBUkVTVCAgICAgICAgICAweDI3MDEKKyNkZWZpbmUgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFS
ICAgICAgICAgIDB4MjcwMgorI2RlZmluZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiAgICAgICAg
ICAgMHgyNzAzCisjZGVmaW5lIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiAgICAgICAgICAgICAweDI4
MDAKKyNkZWZpbmUgR0xfVEVYVFVSRV9NSU5fRklMVEVSICAgICAgICAgICAgIDB4MjgwMQorI2Rl
ZmluZSBHTF9URVhUVVJFX1dSQVBfUyAgICAgICAgICAgICAgICAgMHgyODAyCisjZGVmaW5lIEdM
X1RFWFRVUkVfV1JBUF9UICAgICAgICAgICAgICAgICAweDI4MDMKKyNkZWZpbmUgR0xfVEVYVFVS
RSAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcwMgorI2RlZmluZSBHTF9URVhUVVJFX0NVQkVf
TUFQICAgICAgICAgICAgICAgMHg4NTEzCisjZGVmaW5lIEdMX1RFWFRVUkVfQklORElOR19DVUJF
X01BUCAgICAgICAweDg1MTQKKyNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
ICAgIDB4ODUxNQorI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ggICAgMHg4
NTE2CisjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSAgICAweDg1MTcKKyNk
ZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZICAgIDB4ODUxOAorI2RlZmluZSBH
TF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogICAgMHg4NTE5CisjZGVmaW5lIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiAgICAweDg1MUEKKyNkZWZpbmUgR0xfTUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRSAgICAgIDB4ODUxQworI2RlZmluZSBHTF9URVhUVVJFMCAgICAgICAgICAg
ICAgICAgICAgICAgMHg4NEMwCisjZGVmaW5lIEdMX1RFWFRVUkUxICAgICAgICAgICAgICAgICAg
ICAgICAweDg0QzEKKyNkZWZpbmUgR0xfVEVYVFVSRTIgICAgICAgICAgICAgICAgICAgICAgIDB4
ODRDMgorI2RlZmluZSBHTF9URVhUVVJFMyAgICAgICAgICAgICAgICAgICAgICAgMHg4NEMzCisj
ZGVmaW5lIEdMX1RFWFRVUkU0ICAgICAgICAgICAgICAgICAgICAgICAweDg0QzQKKyNkZWZpbmUg
R0xfVEVYVFVSRTUgICAgICAgICAgICAgICAgICAgICAgIDB4ODRDNQorI2RlZmluZSBHTF9URVhU
VVJFNiAgICAgICAgICAgICAgICAgICAgICAgMHg4NEM2CisjZGVmaW5lIEdMX1RFWFRVUkU3ICAg
ICAgICAgICAgICAgICAgICAgICAweDg0QzcKKyNkZWZpbmUgR0xfVEVYVFVSRTggICAgICAgICAg
ICAgICAgICAgICAgIDB4ODRDOAorI2RlZmluZSBHTF9URVhUVVJFOSAgICAgICAgICAgICAgICAg
ICAgICAgMHg4NEM5CisjZGVmaW5lIEdMX1RFWFRVUkUxMCAgICAgICAgICAgICAgICAgICAgICAw
eDg0Q0EKKyNkZWZpbmUgR0xfVEVYVFVSRTExICAgICAgICAgICAgICAgICAgICAgIDB4ODRDQgor
I2RlZmluZSBHTF9URVhUVVJFMTIgICAgICAgICAgICAgICAgICAgICAgMHg4NENDCisjZGVmaW5l
IEdMX1RFWFRVUkUxMyAgICAgICAgICAgICAgICAgICAgICAweDg0Q0QKKyNkZWZpbmUgR0xfVEVY
VFVSRTE0ICAgICAgICAgICAgICAgICAgICAgIDB4ODRDRQorI2RlZmluZSBHTF9URVhUVVJFMTUg
ICAgICAgICAgICAgICAgICAgICAgMHg4NENGCisjZGVmaW5lIEdMX1RFWFRVUkUxNiAgICAgICAg
ICAgICAgICAgICAgICAweDg0RDAKKyNkZWZpbmUgR0xfVEVYVFVSRTE3ICAgICAgICAgICAgICAg
ICAgICAgIDB4ODREMQorI2RlZmluZSBHTF9URVhUVVJFMTggICAgICAgICAgICAgICAgICAgICAg
MHg4NEQyCisjZGVmaW5lIEdMX1RFWFRVUkUxOSAgICAgICAgICAgICAgICAgICAgICAweDg0RDMK
KyNkZWZpbmUgR0xfVEVYVFVSRTIwICAgICAgICAgICAgICAgICAgICAgIDB4ODRENAorI2RlZmlu
ZSBHTF9URVhUVVJFMjEgICAgICAgICAgICAgICAgICAgICAgMHg4NEQ1CisjZGVmaW5lIEdMX1RF
WFRVUkUyMiAgICAgICAgICAgICAgICAgICAgICAweDg0RDYKKyNkZWZpbmUgR0xfVEVYVFVSRTIz
ICAgICAgICAgICAgICAgICAgICAgIDB4ODRENworI2RlZmluZSBHTF9URVhUVVJFMjQgICAgICAg
ICAgICAgICAgICAgICAgMHg4NEQ4CisjZGVmaW5lIEdMX1RFWFRVUkUyNSAgICAgICAgICAgICAg
ICAgICAgICAweDg0RDkKKyNkZWZpbmUgR0xfVEVYVFVSRTI2ICAgICAgICAgICAgICAgICAgICAg
IDB4ODREQQorI2RlZmluZSBHTF9URVhUVVJFMjcgICAgICAgICAgICAgICAgICAgICAgMHg4NERC
CisjZGVmaW5lIEdMX1RFWFRVUkUyOCAgICAgICAgICAgICAgICAgICAgICAweDg0REMKKyNkZWZp
bmUgR0xfVEVYVFVSRTI5ICAgICAgICAgICAgICAgICAgICAgIDB4ODRERAorI2RlZmluZSBHTF9U
RVhUVVJFMzAgICAgICAgICAgICAgICAgICAgICAgMHg4NERFCisjZGVmaW5lIEdMX1RFWFRVUkUz
MSAgICAgICAgICAgICAgICAgICAgICAweDg0REYKKyNkZWZpbmUgR0xfQUNUSVZFX1RFWFRVUkUg
ICAgICAgICAgICAgICAgIDB4ODRFMAorI2RlZmluZSBHTF9SRVBFQVQgICAgICAgICAgICAgICAg
ICAgICAgICAgMHgyOTAxCisjZGVmaW5lIEdMX0NMQU1QX1RPX0VER0UgICAgICAgICAgICAgICAg
ICAweDgxMkYKKyNkZWZpbmUgR0xfTUlSUk9SRURfUkVQRUFUICAgICAgICAgICAgICAgIDB4ODM3
MAorI2RlZmluZSBHTF9GTE9BVF9WRUMyICAgICAgICAgICAgICAgICAgICAgMHg4QjUwCisjZGVm
aW5lIEdMX0ZMT0FUX1ZFQzMgICAgICAgICAgICAgICAgICAgICAweDhCNTEKKyNkZWZpbmUgR0xf
RkxPQVRfVkVDNCAgICAgICAgICAgICAgICAgICAgIDB4OEI1MgorI2RlZmluZSBHTF9JTlRfVkVD
MiAgICAgICAgICAgICAgICAgICAgICAgMHg4QjUzCisjZGVmaW5lIEdMX0lOVF9WRUMzICAgICAg
ICAgICAgICAgICAgICAgICAweDhCNTQKKyNkZWZpbmUgR0xfSU5UX1ZFQzQgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEI1NQorI2RlZmluZSBHTF9CT09MICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4QjU2CisjZGVmaW5lIEdMX0JPT0xfVkVDMiAgICAgICAgICAgICAgICAgICAgICAweDhC
NTcKKyNkZWZpbmUgR0xfQk9PTF9WRUMzICAgICAgICAgICAgICAgICAgICAgIDB4OEI1OAorI2Rl
ZmluZSBHTF9CT09MX1ZFQzQgICAgICAgICAgICAgICAgICAgICAgMHg4QjU5CisjZGVmaW5lIEdM
X0ZMT0FUX01BVDIgICAgICAgICAgICAgICAgICAgICAweDhCNUEKKyNkZWZpbmUgR0xfRkxPQVRf
TUFUMyAgICAgICAgICAgICAgICAgICAgIDB4OEI1QgorI2RlZmluZSBHTF9GTE9BVF9NQVQ0ICAg
ICAgICAgICAgICAgICAgICAgMHg4QjVDCisjZGVmaW5lIEdMX1NBTVBMRVJfMkQgICAgICAgICAg
ICAgICAgICAgICAweDhCNUUKKyNkZWZpbmUgR0xfU0FNUExFUl9DVUJFICAgICAgICAgICAgICAg
ICAgIDB4OEI2MAorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQgICAgMHg4
NjIyCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSAgICAgICAweDg2MjMKKyNk
ZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUgICAgIDB4ODYyNAorI2RlZmluZSBH
TF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUgICAgICAgMHg4NjI1CisjZGVmaW5lIEdMX1ZFUlRF
WF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCAweDg4NkEKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9QT0lOVEVSICAgIDB4ODY0NQorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HIDB4ODg5RgorI2RlZmluZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX1RZUEUgMHg4QjlBCisjZGVmaW5lIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9S
TUFUIDB4OEI5QgorI2RlZmluZSBHTF9DT01QSUxFX1NUQVRVUyAgICAgICAgICAgICAgICAgMHg4
QjgxCisjZGVmaW5lIEdMX0lORk9fTE9HX0xFTkdUSCAgICAgICAgICAgICAgICAweDhCODQKKyNk
ZWZpbmUgR0xfU0hBREVSX1NPVVJDRV9MRU5HVEggICAgICAgICAgIDB4OEI4OAorI2RlZmluZSBH
TF9TSEFERVJfQ09NUElMRVIgICAgICAgICAgICAgICAgMHg4REZBCisjZGVmaW5lIEdMX1NIQURF
Ul9CSU5BUllfRk9STUFUUyAgICAgICAgICAweDhERjgKKyNkZWZpbmUgR0xfTlVNX1NIQURFUl9C
SU5BUllfRk9STUFUUyAgICAgIDB4OERGOQorI2RlZmluZSBHTF9MT1dfRkxPQVQgICAgICAgICAg
ICAgICAgICAgICAgMHg4REYwCisjZGVmaW5lIEdMX01FRElVTV9GTE9BVCAgICAgICAgICAgICAg
ICAgICAweDhERjEKKyNkZWZpbmUgR0xfSElHSF9GTE9BVCAgICAgICAgICAgICAgICAgICAgIDB4
OERGMgorI2RlZmluZSBHTF9MT1dfSU5UICAgICAgICAgICAgICAgICAgICAgICAgMHg4REYzCisj
ZGVmaW5lIEdMX01FRElVTV9JTlQgICAgICAgICAgICAgICAgICAgICAweDhERjQKKyNkZWZpbmUg
R0xfSElHSF9JTlQgICAgICAgICAgICAgICAgICAgICAgIDB4OERGNQorI2RlZmluZSBHTF9GUkFN
RUJVRkZFUiAgICAgICAgICAgICAgICAgICAgMHg4RDQwCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZF
UiAgICAgICAgICAgICAgICAgICAweDhENDEKKyNkZWZpbmUgR0xfUkdCQTQgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODA1NgorI2RlZmluZSBHTF9SR0I1X0ExICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MDU3CisjZGVmaW5lIEdMX1JHQjU2NSAgICAgICAgICAgICAgICAgICAgICAgICAw
eDhENjIKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMTYgICAgICAgICAgICAgIDB4ODFBNQor
I2RlZmluZSBHTF9TVEVOQ0lMX0lOREVYOCAgICAgICAgICAgICAgICAgMHg4RDQ4CisjZGVmaW5l
IEdMX1JFTkRFUkJVRkZFUl9XSURUSCAgICAgICAgICAgICAweDhENDIKKyNkZWZpbmUgR0xfUkVO
REVSQlVGRkVSX0hFSUdIVCAgICAgICAgICAgIDB4OEQ0MworI2RlZmluZSBHTF9SRU5ERVJCVUZG
RVJfSU5URVJOQUxfRk9STUFUICAgMHg4RDQ0CisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9SRURf
U0laRSAgICAgICAgICAweDhENTAKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUg
ICAgICAgIDB4OEQ1MQorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFICAgICAgICAg
MHg4RDUyCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFICAgICAgICAweDhENTMK
KyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgICAgICAgIDB4OEQ1NAorI2RlZmlu
ZSBHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFICAgICAgMHg4RDU1CisjZGVmaW5lIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUgMHg4Q0QwCisjZGVmaW5lIEdMX0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUgMHg4Q0QxCisjZGVmaW5lIEdMX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCAweDhDRDIKKyNkZWZpbmUgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UgMHg4Q0QzCisjZGVmaW5lIEdMX0NP
TE9SX0FUVEFDSE1FTlQwICAgICAgICAgICAgICAweDhDRTAKKyNkZWZpbmUgR0xfREVQVEhfQVRU
QUNITUVOVCAgICAgICAgICAgICAgIDB4OEQwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlQgICAgICAgICAgICAgMHg4RDIwCisjZGVmaW5lIEdMX05PTkUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFICAgICAgICAgICAweDhD
RDUKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIDB4OENENgor
I2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCAweDhD
RDcKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIDB4OENEOQor
I2RlZmluZSBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCAgICAgICAgMHg4Q0RECisjZGVmaW5l
IEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAweDhDQTYKKyNkZWZpbmUgR0xfUkVO
REVSQlVGRkVSX0JJTkRJTkcgICAgICAgICAgIDB4OENBNworI2RlZmluZSBHTF9NQVhfUkVOREVS
QlVGRkVSX1NJWkUgICAgICAgICAgMHg4NEU4CisjZGVmaW5lIEdMX0lOVkFMSURfRlJBTUVCVUZG
RVJfT1BFUkFUSU9OICAweDA1MDYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQUNU
SVZFVEVYVFVSRVBST0MpIChHTGVudW0gdGV4dHVyZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEFUVEFDSFNIQURFUlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRl
cik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRBVFRSSUJMT0NBVElPTlBS
T0MpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIgKm5hbWUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EQlVGRkVSUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMdWludCBidWZmZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xC
SU5ERlJBTUVCVUZGRVJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklORFJFTkRFUkJVRkZFUlBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMQklORFRFWFRVUkVQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1
cmUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVORENPTE9SUFJPQykgKEdM
ZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFUSU9OUFJPQykgKEdMZW51
bSBtb2RlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRFUVVBVElPTlNF
UEFSQVRFUFJPQykgKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkxFTkRGVU5DUFJPQykgKEdMZW51bSBzZmFjdG9yLCBH
TGVudW0gZGZhY3Rvcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJMRU5ERlVO
Q1NFUEFSQVRFUFJPQykgKEdMZW51bSBzZmFjdG9yUkdCLCBHTGVudW0gZGZhY3RvclJHQiwgR0xl
bnVtIHNmYWN0b3JBbHBoYSwgR0xlbnVtIGRmYWN0b3JBbHBoYSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEJVRkZFUkRBVEFQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0
ciBzaXplLCBjb25zdCB2b2lkICpkYXRhLCBHTGVudW0gdXNhZ2UpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xCVUZGRVJTVUJEQVRBUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50
cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkICpkYXRhKTsKK3R5cGVkZWYg
R0xlbnVtIChHTF9BUElFTlRSWVAgUEZOR0xDSEVDS0ZSQU1FQlVGRkVSU1RBVFVTUFJPQykgKEdM
ZW51bSB0YXJnZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUlBST0Mp
IChHTGJpdGZpZWxkIG1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVB
UkNPTE9SUFJPQykgKEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdM
ZmxvYXQgYWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUkRFUFRI
RlBST0MpIChHTGZsb2F0IGQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVB
UlNURU5DSUxQUk9DKSAoR0xpbnQgcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TENPTE9STUFTS1BST0MpIChHTGJvb2xlYW4gcmVkLCBHTGJvb2xlYW4gZ3JlZW4sIEdMYm9vbGVh
biBibHVlLCBHTGJvb2xlYW4gYWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xDT01QSUxFU0hBREVSUFJPQykgKEdMdWludCBzaGFkZXIpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0
YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFH
RTJEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xDT1BZVEVYSU1BR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMQ09QWVRFWFNVQklNQUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgR0x1aW50IChHTF9BUElFTlRS
WVAgUEZOR0xDUkVBVEVQUk9HUkFNUFJPQykgKHZvaWQpOwordHlwZWRlZiBHTHVpbnQgKEdMX0FQ
SUVOVFJZUCBQRk5HTENSRUFURVNIQURFUlBST0MpIChHTGVudW0gdHlwZSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTENVTExGQUNFUFJPQykgKEdMZW51bSBtb2RlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFQlVGRkVSU1BST0MpIChHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TERFTEVURUZSQU1FQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZnJhbWVi
dWZmZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUFJPR1JBTVBS
T0MpIChHTHVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERF
TEVURVJFTkRFUkJVRkZFUlNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1
ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVTSEFERVJQUk9D
KSAoR0x1aW50IHNoYWRlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVU
RVRFWFRVUkVTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFUFRIRlVOQ1BST0MpIChHTGVudW0gZnVuYyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFUFRITUFTS1BST0MpIChHTGJvb2xl
YW4gZmxhZyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFUFRIUkFOR0VGUFJP
QykgKEdMZmxvYXQgbiwgR0xmbG9hdCBmKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMREVUQUNIU0hBREVSUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQUJMRVBST0MpIChHTGVudW0gY2FwKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQUJMRVZFUlRFWEFUVFJJQkFSUkFZ
UFJPQykgKEdMdWludCBpbmRleCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERS
QVdBUlJBWVNQUk9DKSAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0VMRU1FTlRTUFJPQykgKEdMZW51
bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVOQUJMRVBST0MpIChHTGVudW0gY2Fw
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRU5BQkxFVkVSVEVYQVRUUklCQVJS
QVlQUk9DKSAoR0x1aW50IGluZGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
RklOSVNIUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGTFVT
SFBST0MpICh2b2lkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZG
RVJSRU5ERVJCVUZGRVJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdM
ZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRFBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1
cmUsIEdMaW50IGxldmVsKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJPTlRG
QUNFUFJPQykgKEdMZW51bSBtb2RlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VOQlVGRkVSU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqYnVmZmVycyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTkVSQVRFTUlQTUFQUFJPQykgKEdMZW51bSB0YXJnZXQp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5GUkFNRUJVRkZFUlNQUk9DKSAo
R0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFTlJFTkRFUkJVRkZFUlNQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKnJlbmRl
cmJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5URVhUVVJFU1BS
T0MpIChHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRBQ1RJVkVBVFRSSUJQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBp
bmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVu
dW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVEFDVElWRVVOSUZPUk1QUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUs
IEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFUVEFD
SEVEU0hBREVSU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhDb3VudCwgR0xzaXpl
aSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7Cit0eXBlZGVmIEdMaW50IChHTF9BUElFTlRSWVAg
UEZOR0xHRVRBVFRSSUJMT0NBVElPTlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFy
ICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUQk9PTEVBTlZQUk9D
KSAoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRCVUZGRVJQQVJBTUVURVJJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVEVSUk9SUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRVRGTE9BVFZQUk9DKSAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpkYXRhKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURlJBTUVCVUZGRVJBVFRBQ0hNRU5UUEFSQU1FVEVS
SVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVElOVEVH
RVJWUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNSVZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdF
VFBST0dSQU1JTkZPTE9HUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xjaGFyICppbmZvTG9nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUUkVOREVSQlVGRkVSUEFSQU1FVEVSSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUU0hBREVSSVZQUk9DKSAoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0hBREVSSU5G
T0xPR1BST0MpIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xjaGFyICppbmZvTG9nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
U0hBREVSUFJFQ0lTSU9ORk9STUFUUFJPQykgKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJl
Y2lzaW9udHlwZSwgR0xpbnQgKnJhbmdlLCBHTGludCAqcHJlY2lzaW9uKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUU0hBREVSU09VUkNFUFJPQykgKEdMdWludCBzaGFkZXIs
IEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7Cit0eXBl
ZGVmIGNvbnN0IEdMdWJ5dGUgKihHTF9BUElFTlRSWVAgUEZOR0xHRVRTVFJJTkdQUk9DKSAoR0xl
bnVtIG5hbWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhQQVJBTUVU
RVJGVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWFBBUkFNRVRFUklWUFJPQykg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFVOSUZPUk1GVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTEdFVFVOSUZPUk1JVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiBHTGludCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VU5JRk9STUxPQ0FUSU9OUFJPQykgKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRWRVJURVhBVFRSSUJGVlBST0Mp
IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVkVSVEVYQVRUUklCSVZQUk9DKSAoR0x1aW50IGlu
ZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRWRVJURVhBVFRSSUJQT0lOVEVSVlBST0MpIChHTHVpbnQgaW5kZXgsIEdM
ZW51bSBwbmFtZSwgdm9pZCAqKnBvaW50ZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xISU5UUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKK3R5cGVkZWYgR0xi
b29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0JVRkZFUlBST0MpIChHTHVpbnQgYnVmZmVyKTsK
K3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0VOQUJMRURQUk9DKSAoR0xl
bnVtIGNhcCk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNGUkFNRUJV
RkZFUlBST0MpIChHTHVpbnQgZnJhbWVidWZmZXIpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQ
SUVOVFJZUCBQRk5HTElTUFJPR1JBTVBST0MpIChHTHVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIEdM
Ym9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNSRU5ERVJCVUZGRVJQUk9DKSAoR0x1aW50IHJl
bmRlcmJ1ZmZlcik7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNTSEFE
RVJQUk9DKSAoR0x1aW50IHNoYWRlcik7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQ
IFBGTkdMSVNURVhUVVJFUFJPQykgKEdMdWludCB0ZXh0dXJlKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMTElORVdJRFRIUFJPQykgKEdMZmxvYXQgd2lkdGgpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xMSU5LUFJPR1JBTVBST0MpIChHTHVpbnQgcHJvZ3JhbSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBJWEVMU1RPUkVJUFJPQykgKEdMZW51
bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQ
T0xZR09OT0ZGU0VUUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVBRFBJWEVMU1BST0MpIChHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIHZvaWQgKnBpeGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJF
TEVBU0VTSEFERVJDT01QSUxFUlBST0MpICh2b2lkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFQ09WRVJBR0VQUk9DKSAoR0xmbG9hdCB2YWx1
ZSwgR0xib29sZWFuIGludmVydCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFND
SVNTT1JQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTSEFERVJCSU5BUllQUk9DKSAo
R0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICpzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0
LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMU0hBREVSU09VUkNFUFJPQykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMY2hhciAqY29uc3Qqc3RyaW5nLCBjb25zdCBHTGludCAqbGVuZ3RoKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTEZVTkNQUk9DKSAoR0xlbnVt
IGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xTVEVOQ0lMRlVOQ1NFUEFSQVRFUFJPQykgKEdMZW51bSBmYWNlLCBHTGVudW0gZnVu
YywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFNURU5DSUxNQVNLUFJPQykgKEdMdWludCBtYXNrKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMU1RFTkNJTE1BU0tTRVBBUkFURVBST0MpIChHTGVudW0gZmFjZSwgR0x1aW50
IG1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTVEVOQ0lMT1BQUk9DKSAo
R0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMU1RFTkNJTE9QU0VQQVJBVEVQUk9DKSAoR0xlbnVtIGZhY2UsIEdM
ZW51bSBzZmFpbCwgR0xlbnVtIGRwZmFpbCwgR0xlbnVtIGRwcGFzcyk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFRFWElNQUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQg
bGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAq
cGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSRlBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVURVJGVlBST0MpIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUklQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFRFWFBBUkFNRVRFUklWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNVQklN
QUdFMkRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0
LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVU5JRk9STTFGUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTFGVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUlQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdM
aW50IHYwKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTFJVlBST0Mp
IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTJGUFJPQykgKEdMaW50IGxvY2F0
aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMVU5JRk9STTJGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklG
T1JNMklQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0ySVZQUk9DKSAoR0xpbnQgbG9jYXRpb24s
IEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFVOSUZPUk0zRlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwg
R0xmbG9hdCB2MSwgR0xmbG9hdCB2Mik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFVOSUZPUk0zRlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNJ
UFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNJVlBST0MpIChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTRGUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTRGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xVTklGT1JNNElQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2
MSwgR0xpbnQgdjIsIEdMaW50IHYzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VU5JRk9STTRJVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJ
WDJGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xVTklGT1JNTUFUUklYM0ZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1NQVRSSVg0RlZQUk9DKSAoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVVNFUFJPR1JBTVBST0MpIChH
THVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZBTElEQVRF
UFJPR1JBTVBST0MpIChHTHVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTFZFUlRFWEFUVFJJQjFGUFJPQykgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCMUZWUFJPQykgKEdMdWlu
dCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFZFUlRFWEFUVFJJQjJGUFJPQykgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0
IHkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUIyRlZQUk9D
KSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVkVSVEVYQVRUUklCM0ZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VkVSVEVYQVRUUklCM0ZWUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQjRGUFJPQykgKEdMdWlu
dCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCNEZWUFJPQykgKEdMdWlu
dCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFZFUlRFWEFUVFJJQlBPSU5URVJQUk9DKSAoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBH
TGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2
b2lkICpwb2ludGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVklFV1BPUlRQ
Uk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwor
I2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEFjdGl2ZVRleHR1cmUgKEdMZW51bSB0ZXh0dXJlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEF0dGFjaFNoYWRlciAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJv
Z3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQmluZEJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGJ1ZmZlcik7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kRnJhbWVidWZmZXIgKEdMZW51bSB0
YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xCaW5kUmVuZGVyYnVmZmVyIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRUZXh0dXJlIChHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgdGV4dHVyZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZENv
bG9yIChHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBHTGZsb2F0IGFs
cGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb24gKEdMZW51
bSBtb2RlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBh
cmF0ZSAoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jIChHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3Ip
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRGdW5jU2VwYXJhdGUgKEdMZW51
bSBzZmFjdG9yUkdCLCBHTGVudW0gZGZhY3RvclJHQiwgR0xlbnVtIHNmYWN0b3JBbHBoYSwgR0xl
bnVtIGRmYWN0b3JBbHBoYSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCdWZmZXJE
YXRhIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQgKmRhdGEsIEdM
ZW51bSB1c2FnZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCdWZmZXJTdWJEYXRh
IChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qg
dm9pZCAqZGF0YSk7CitHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbENoZWNrRnJhbWVi
dWZmZXJTdGF0dXMgKEdMZW51bSB0YXJnZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsQ2xlYXIgKEdMYml0ZmllbGQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xDbGVhckNvbG9yIChHTGZsb2F0IHJlZCwgR0xmbG9hdCBncmVlbiwgR0xmbG9hdCBibHVlLCBH
TGZsb2F0IGFscGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENsZWFyRGVwdGhm
IChHTGZsb2F0IGQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJTdGVuY2ls
IChHTGludCBzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbG9yTWFzayAoR0xi
b29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFs
cGhhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvbXBpbGVTaGFkZXIgKEdMdWlu
dCBzaGFkZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleElt
YWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1h
Z2VTaXplLCBjb25zdCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bENvbXByZXNzZWRUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkICpkYXRhKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlUZXhJbWFnZTJEIChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbENvcHlUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xfQVBJQ0FMTCBHTHVpbnQgR0xfQVBJ
RU5UUlkgZ2xDcmVhdGVQcm9ncmFtICh2b2lkKTsKK0dMX0FQSUNBTEwgR0x1aW50IEdMX0FQSUVO
VFJZIGdsQ3JlYXRlU2hhZGVyIChHTGVudW0gdHlwZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xDdWxsRmFjZSAoR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsRGVsZXRlQnVmZmVycyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlRnJhbWVidWZmZXJzIChHTHNpemVp
IG4sIGNvbnN0IEdMdWludCAqZnJhbWVidWZmZXJzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbERlbGV0ZVByb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
ICpyZW5kZXJidWZmZXJzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVNo
YWRlciAoR0x1aW50IHNoYWRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxl
dGVUZXh0dXJlcyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnRleHR1cmVzKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbERlcHRoRnVuYyAoR0xlbnVtIGZ1bmMpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVwdGhNYXNrIChHTGJvb2xlYW4gZmxhZyk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXB0aFJhbmdlZiAoR0xmbG9hdCBuLCBHTGZsb2F0IGYp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGV0YWNoU2hhZGVyIChHTHVpbnQgcHJv
Z3JhbSwgR0x1aW50IHNoYWRlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNh
YmxlIChHTGVudW0gY2FwKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbERyYXdBcnJheXMgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3Vu
dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHMgKEdMZW51bSBt
b2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFbmFibGUgKEdMZW51bSBjYXApOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKEdMdWludCBp
bmRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGaW5pc2ggKHZvaWQpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRmx1c2ggKHZvaWQpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVy
YnVmZmVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwg
R0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEZyb250RmFjZSAoR0xlbnVtIG1vZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2VuQnVmZmVycyAoR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZlcnMpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2VuZXJhdGVNaXBtYXAgKEdMZW51bSB0YXJnZXQpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuRnJhbWVidWZmZXJzIChHTHNpemVpIG4sIEdMdWlu
dCAqZnJhbWVidWZmZXJzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdlblJlbmRl
cmJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdlblRleHR1cmVzIChHTHNpemVpIG4sIEdMdWludCAqdGV4dHVy
ZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlQXR0cmliIChHTHVp
bnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEdldEFjdGl2ZVVuaWZvcm0gKEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwg
R0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0QXR0YWNoZWRTaGFkZXJzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhDb3VudCwg
R0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7CitHTF9BUElDQUxMIEdMaW50IEdMX0FQ
SUVOVFJZIGdsR2V0QXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIg
Km5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0Qm9vbGVhbnYgKEdMZW51
bSBwbmFtZSwgR0xib29sZWFuICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldEJ1ZmZlclBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50
ICpwYXJhbXMpOworR0xfQVBJQ0FMTCBHTGVudW0gR0xfQVBJRU5UUlkgZ2xHZXRFcnJvciAodm9p
ZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRGbG9hdHYgKEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFj
aG1lbnQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRJbnRlZ2VydiAoR0xlbnVtIHBuYW1lLCBHTGludCAqZGF0YSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtaXYgKEdMdWludCBwcm9ncmFtLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0UHJvZ3JhbUluZm9Mb2cgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xjaGFyICppbmZvTG9nKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
U2hhZGVyaXYgKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJJbmZvTG9nIChHTHVpbnQgc2hh
ZGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICppbmZvTG9nKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAo
R0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCAqcmFuZ2UsIEdM
aW50ICpwcmVjaXNpb24pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVy
U291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
R0xjaGFyICpzb3VyY2UpOworR0xfQVBJQ0FMTCBjb25zdCBHTHVieXRlICpHTF9BUElFTlRSWSBn
bEdldFN0cmluZyAoR0xlbnVtIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
R2V0VGV4UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAq
cGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFRleFBhcmFtZXRlcml2
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybWZ2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRVbmlmb3JtaXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIEdMaW50IEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybUxvY2F0aW9u
IChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYmZ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFZl
cnRleEF0dHJpYml2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAo
R0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwb2ludGVyKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbEhpbnQgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKTsKK0dM
X0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNCdWZmZXIgKEdMdWludCBidWZmZXIp
OworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0VuYWJsZWQgKEdMZW51bSBj
YXApOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0ZyYW1lYnVmZmVyIChH
THVpbnQgZnJhbWVidWZmZXIpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJ
c1Byb2dyYW0gKEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVO
VFJZIGdsSXNSZW5kZXJidWZmZXIgKEdMdWludCByZW5kZXJidWZmZXIpOworR0xfQVBJQ0FMTCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1NoYWRlciAoR0x1aW50IHNoYWRlcik7CitHTF9BUElD
QUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzVGV4dHVyZSAoR0x1aW50IHRleHR1cmUpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTGluZVdpZHRoIChHTGZsb2F0IHdpZHRoKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbExpbmtQcm9ncmFtIChHTHVpbnQgcHJvZ3Jh
bSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQaXhlbFN0b3JlaSAoR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQb2x5Z29u
T2Zmc2V0IChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xSZWFkUGl4ZWxzIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQgKnBpeGVs
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIg
KHZvaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVDb3Zl
cmFnZSAoR0xmbG9hdCB2YWx1ZSwgR0xib29sZWFuIGludmVydCk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xTY2lzc29yIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTaGFkZXJCaW5h
cnkgKEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqc2hhZGVycywgR0xlbnVtIGJpbmFyeWZv
cm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xTaGFkZXJTb3VyY2UgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMY2hhciAqY29uc3Qqc3RyaW5nLCBjb25zdCBHTGludCAqbGVuZ3RoKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxGdW5jIChHTGVudW0gZnVuYywgR0xp
bnQgcmVmLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVu
Y2lsRnVuY1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1
aW50IG1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RlbmNpbE1hc2sgKEdM
dWludCBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFN0ZW5jaWxNYXNrU2Vw
YXJhdGUgKEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzayk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xTdGVuY2lsT3AgKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFz
cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsT3BTZXBhcmF0ZSAoR0xl
bnVtIGZhY2UsIEdMZW51bSBzZmFpbCwgR0xlbnVtIGRwZmFpbCwgR0xlbnVtIGRwcGFzcyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBH
TGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2
b2lkICpwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVy
ZiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcmZ2IChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xUZXhQYXJhbWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50
IHBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcml2IChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xp
bnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqcGl4
ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0xZiAoR0xpbnQgbG9j
YXRpb24sIEdMZmxvYXQgdjApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bTFmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0xaSAoR0xpbnQgbG9jYXRp
b24sIEdMaW50IHYwKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0xaXYg
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJmIChHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCB2MCwgR0xmbG9hdCB2MSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlm
b3JtMmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJpIChHTGludCBsb2Nh
dGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFVuaWZvcm0yaXYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTNmIChHTGludCBs
b2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9hdCB2Mik7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2Z2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsVW5pZm9ybTNpIChHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2
Mik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2l2IChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFVuaWZvcm00ZiAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdM
ZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVW5pZm9ybTRmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm00
aSAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIsIEdMaW50IHYz
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm00aXYgKEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDJmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1NYXRyaXgzZnYgKEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtTWF0cml4NGZ2IChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVXNlUHJvZ3JhbSAo
R0x1aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmFsaWRhdGVQ
cm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xW
ZXJ0ZXhBdHRyaWIxZiAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliMWZ2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxv
YXQgKnYpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliMmYgKEdM
dWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsVmVydGV4QXR0cmliMmZ2IChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliM2YgKEdMdWludCBp
bmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeik7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIzZnYgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9h
dCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWI0ZiAoR0x1
aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliNGZ2IChHTHVpbnQgaW5k
ZXgsIGNvbnN0IEdMZmxvYXQgKnYpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVy
dGV4QXR0cmliUG9pbnRlciAoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwg
R0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVy
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdwb3J0IChHTGludCB4LCBHTGlu
dCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisjZW5kaWYKKyNlbmRpZiAvKiBH
TF9FU19WRVJTSU9OXzJfMCAqLworCisjaWZuZGVmIEdMX0VTX1ZFUlNJT05fM18wCisjZGVmaW5l
IEdMX0VTX1ZFUlNJT05fM18wIDEKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgR0xoYWxmOworI2Rl
ZmluZSBHTF9SRUFEX0JVRkZFUiAgICAgICAgICAgICAgICAgICAgMHgwQzAyCisjZGVmaW5lIEdM
X1VOUEFDS19ST1dfTEVOR1RIICAgICAgICAgICAgICAweDBDRjIKKyNkZWZpbmUgR0xfVU5QQUNL
X1NLSVBfUk9XUyAgICAgICAgICAgICAgIDB4MENGMworI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9Q
SVhFTFMgICAgICAgICAgICAgMHgwQ0Y0CisjZGVmaW5lIEdMX1BBQ0tfUk9XX0xFTkdUSCAgICAg
ICAgICAgICAgICAweDBEMDIKKyNkZWZpbmUgR0xfUEFDS19TS0lQX1JPV1MgICAgICAgICAgICAg
ICAgIDB4MEQwMworI2RlZmluZSBHTF9QQUNLX1NLSVBfUElYRUxTICAgICAgICAgICAgICAgMHgw
RDA0CisjZGVmaW5lIEdMX0NPTE9SICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAKKyNk
ZWZpbmUgR0xfREVQVEggICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgwMQorI2RlZmluZSBH
TF9TVEVOQ0lMICAgICAgICAgICAgICAgICAgICAgICAgMHgxODAyCisjZGVmaW5lIEdMX1JFRCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MDMKKyNkZWZpbmUgR0xfUkdCOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDB4ODA1MQorI2RlZmluZSBHTF9SR0JBOCAgICAgICAgICAgICAg
ICAgICAgICAgICAgMHg4MDU4CisjZGVmaW5lIEdMX1JHQjEwX0EyICAgICAgICAgICAgICAgICAg
ICAgICAweDgwNTkKKyNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzNEICAgICAgICAgICAgIDB4
ODA2QQorI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9JTUFHRVMgICAgICAgICAgICAgMHg4MDZECisj
ZGVmaW5lIEdMX1VOUEFDS19JTUFHRV9IRUlHSFQgICAgICAgICAgICAweDgwNkUKKyNkZWZpbmUg
R0xfVEVYVFVSRV8zRCAgICAgICAgICAgICAgICAgICAgIDB4ODA2RgorI2RlZmluZSBHTF9URVhU
VVJFX1dSQVBfUiAgICAgICAgICAgICAgICAgMHg4MDcyCisjZGVmaW5lIEdMX01BWF8zRF9URVhU
VVJFX1NJWkUgICAgICAgICAgICAweDgwNzMKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzJfMTBf
MTBfMTBfUkVWICAgIDB4ODM2OAorI2RlZmluZSBHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMgICAg
ICAgICAgMHg4MEU4CisjZGVmaW5lIEdMX01BWF9FTEVNRU5UU19JTkRJQ0VTICAgICAgICAgICAw
eDgwRTkKKyNkZWZpbmUgR0xfVEVYVFVSRV9NSU5fTE9EICAgICAgICAgICAgICAgIDB4ODEzQQor
I2RlZmluZSBHTF9URVhUVVJFX01BWF9MT0QgICAgICAgICAgICAgICAgMHg4MTNCCisjZGVmaW5l
IEdMX1RFWFRVUkVfQkFTRV9MRVZFTCAgICAgICAgICAgICAweDgxM0MKKyNkZWZpbmUgR0xfVEVY
VFVSRV9NQVhfTEVWRUwgICAgICAgICAgICAgIDB4ODEzRAorI2RlZmluZSBHTF9NSU4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MDA3CisjZGVmaW5lIEdMX01BWCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgwMDgKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMjQgICAgICAg
ICAgICAgIDB4ODFBNgorI2RlZmluZSBHTF9NQVhfVEVYVFVSRV9MT0RfQklBUyAgICAgICAgICAg
MHg4NEZECisjZGVmaW5lIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFICAgICAgICAgICAweDg4NEMK
KyNkZWZpbmUgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMgICAgICAgICAgIDB4ODg0RAorI2RlZmlu
ZSBHTF9DVVJSRU5UX1FVRVJZICAgICAgICAgICAgICAgICAgMHg4ODY1CisjZGVmaW5lIEdMX1FV
RVJZX1JFU1VMVCAgICAgICAgICAgICAgICAgICAweDg4NjYKKyNkZWZpbmUgR0xfUVVFUllfUkVT
VUxUX0FWQUlMQUJMRSAgICAgICAgIDB4ODg2NworI2RlZmluZSBHTF9CVUZGRVJfTUFQUEVEICAg
ICAgICAgICAgICAgICAgMHg4OEJDCisjZGVmaW5lIEdMX0JVRkZFUl9NQVBfUE9JTlRFUiAgICAg
ICAgICAgICAweDg4QkQKKyNkZWZpbmUgR0xfU1RSRUFNX1JFQUQgICAgICAgICAgICAgICAgICAg
IDB4ODhFMQorI2RlZmluZSBHTF9TVFJFQU1fQ09QWSAgICAgICAgICAgICAgICAgICAgMHg4OEUy
CisjZGVmaW5lIEdMX1NUQVRJQ19SRUFEICAgICAgICAgICAgICAgICAgICAweDg4RTUKKyNkZWZp
bmUgR0xfU1RBVElDX0NPUFkgICAgICAgICAgICAgICAgICAgIDB4ODhFNgorI2RlZmluZSBHTF9E
WU5BTUlDX1JFQUQgICAgICAgICAgICAgICAgICAgMHg4OEU5CisjZGVmaW5lIEdMX0RZTkFNSUNf
Q09QWSAgICAgICAgICAgICAgICAgICAweDg4RUEKKyNkZWZpbmUgR0xfTUFYX0RSQVdfQlVGRkVS
UyAgICAgICAgICAgICAgIDB4ODgyNAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjAgICAgICAgICAg
ICAgICAgICAgMHg4ODI1CisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMSAgICAgICAgICAgICAgICAg
ICAweDg4MjYKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIyICAgICAgICAgICAgICAgICAgIDB4ODgy
NworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjMgICAgICAgICAgICAgICAgICAgMHg4ODI4CisjZGVm
aW5lIEdMX0RSQVdfQlVGRkVSNCAgICAgICAgICAgICAgICAgICAweDg4MjkKKyNkZWZpbmUgR0xf
RFJBV19CVUZGRVI1ICAgICAgICAgICAgICAgICAgIDB4ODgyQQorI2RlZmluZSBHTF9EUkFXX0JV
RkZFUjYgICAgICAgICAgICAgICAgICAgMHg4ODJCCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSNyAg
ICAgICAgICAgICAgICAgICAweDg4MkMKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVI4ICAgICAgICAg
ICAgICAgICAgIDB4ODgyRAorI2RlZmluZSBHTF9EUkFXX0JVRkZFUjkgICAgICAgICAgICAgICAg
ICAgMHg4ODJFCisjZGVmaW5lIEdMX0RSQVdfQlVGRkVSMTAgICAgICAgICAgICAgICAgICAweDg4
MkYKKyNkZWZpbmUgR0xfRFJBV19CVUZGRVIxMSAgICAgICAgICAgICAgICAgIDB4ODgzMAorI2Rl
ZmluZSBHTF9EUkFXX0JVRkZFUjEyICAgICAgICAgICAgICAgICAgMHg4ODMxCisjZGVmaW5lIEdM
X0RSQVdfQlVGRkVSMTMgICAgICAgICAgICAgICAgICAweDg4MzIKKyNkZWZpbmUgR0xfRFJBV19C
VUZGRVIxNCAgICAgICAgICAgICAgICAgIDB4ODgzMworI2RlZmluZSBHTF9EUkFXX0JVRkZFUjE1
ICAgICAgICAgICAgICAgICAgMHg4ODM0CisjZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9VTklGT1JN
X0NPTVBPTkVOVFMgMHg4QjQ5CisjZGVmaW5lIEdMX01BWF9WRVJURVhfVU5JRk9STV9DT01QT05F
TlRTICAweDhCNEEKKyNkZWZpbmUgR0xfU0FNUExFUl8zRCAgICAgICAgICAgICAgICAgICAgIDB4
OEI1RgorI2RlZmluZSBHTF9TQU1QTEVSXzJEX1NIQURPVyAgICAgICAgICAgICAgMHg4QjYyCisj
ZGVmaW5lIEdMX0ZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQgMHg4QjhCCisjZGVmaW5l
IEdMX1BJWEVMX1BBQ0tfQlVGRkVSICAgICAgICAgICAgICAweDg4RUIKKyNkZWZpbmUgR0xfUElY
RUxfVU5QQUNLX0JVRkZFUiAgICAgICAgICAgIDB4ODhFQworI2RlZmluZSBHTF9QSVhFTF9QQUNL
X0JVRkZFUl9CSU5ESU5HICAgICAgMHg4OEVECisjZGVmaW5lIEdMX1BJWEVMX1VOUEFDS19CVUZG
RVJfQklORElORyAgICAweDg4RUYKKyNkZWZpbmUgR0xfRkxPQVRfTUFUMngzICAgICAgICAgICAg
ICAgICAgIDB4OEI2NQorI2RlZmluZSBHTF9GTE9BVF9NQVQyeDQgICAgICAgICAgICAgICAgICAg
MHg4QjY2CisjZGVmaW5lIEdMX0ZMT0FUX01BVDN4MiAgICAgICAgICAgICAgICAgICAweDhCNjcK
KyNkZWZpbmUgR0xfRkxPQVRfTUFUM3g0ICAgICAgICAgICAgICAgICAgIDB4OEI2OAorI2RlZmlu
ZSBHTF9GTE9BVF9NQVQ0eDIgICAgICAgICAgICAgICAgICAgMHg4QjY5CisjZGVmaW5lIEdMX0ZM
T0FUX01BVDR4MyAgICAgICAgICAgICAgICAgICAweDhCNkEKKyNkZWZpbmUgR0xfU1JHQiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4OEM0MAorI2RlZmluZSBHTF9TUkdCOCAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4QzQxCisjZGVmaW5lIEdMX1NSR0I4X0FMUEhBOCAgICAgICAgICAg
ICAgICAgICAweDhDNDMKKyNkZWZpbmUgR0xfQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSAgICAgICAg
IDB4ODg0RQorI2RlZmluZSBHTF9NQUpPUl9WRVJTSU9OICAgICAgICAgICAgICAgICAgMHg4MjFC
CisjZGVmaW5lIEdMX01JTk9SX1ZFUlNJT04gICAgICAgICAgICAgICAgICAweDgyMUMKKyNkZWZp
bmUgR0xfTlVNX0VYVEVOU0lPTlMgICAgICAgICAgICAgICAgIDB4ODIxRAorI2RlZmluZSBHTF9S
R0JBMzJGICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODE0CisjZGVmaW5lIEdMX1JHQjMyRiAg
ICAgICAgICAgICAgICAgICAgICAgICAweDg4MTUKKyNkZWZpbmUgR0xfUkdCQTE2RiAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODgxQQorI2RlZmluZSBHTF9SR0IxNkYgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4ODFCCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUiAg
ICAweDg4RkQKKyNkZWZpbmUgR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZRVJTICAgICAgIDB4ODhG
RgorI2RlZmluZSBHTF9NSU5fUFJPR1JBTV9URVhFTF9PRkZTRVQgICAgICAgMHg4OTA0CisjZGVm
aW5lIEdMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVCAgICAgICAweDg5MDUKKyNkZWZpbmUgR0xf
TUFYX1ZBUllJTkdfQ09NUE9ORU5UUyAgICAgICAgIDB4OEI0QgorI2RlZmluZSBHTF9URVhUVVJF
XzJEX0FSUkFZICAgICAgICAgICAgICAgMHg4QzFBCisjZGVmaW5lIEdMX1RFWFRVUkVfQklORElO
R18yRF9BUlJBWSAgICAgICAweDhDMUQKKyNkZWZpbmUgR0xfUjExRl9HMTFGX0IxMEYgICAgICAg
ICAgICAgICAgIDB4OEMzQQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVW
ICAgMHg4QzNCCisjZGVmaW5lIEdMX1JHQjlfRTUgICAgICAgICAgICAgICAgICAgICAgICAweDhD
M0QKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWICAgICAgIDB4OEMzRQorI2Rl
ZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR19NQVhfTEVOR1RIIDB4OEM3NgorI2Rl
ZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX01PREUgMHg4QzdGCisjZGVmaW5lIEdM
X01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUyAweDhDODAKKyNkZWZp
bmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkdTICAgIDB4OEM4MworI2RlZmluZSBHTF9U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NUQVJUIDB4OEM4NAorI2RlZmluZSBHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSX1NJWkUgMHg4Qzg1CisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVE
QkFDS19QUklNSVRJVkVTX1dSSVRURU4gMHg4Qzg4CisjZGVmaW5lIEdMX1JBU1RFUklaRVJfRElT
Q0FSRCAgICAgICAgICAgICAweDhDODkKKyNkZWZpbmUgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFD
S19JTlRFUkxFQVZFRF9DT01QT05FTlRTIDB4OEM4QQorI2RlZmluZSBHTF9NQVhfVFJBTlNGT1JN
X0ZFRURCQUNLX1NFUEFSQVRFX0FUVFJJQlMgMHg4QzhCCisjZGVmaW5lIEdMX0lOVEVSTEVBVkVE
X0FUVFJJQlMgICAgICAgICAgICAweDhDOEMKKyNkZWZpbmUgR0xfU0VQQVJBVEVfQVRUUklCUyAg
ICAgICAgICAgICAgIDB4OEM4RAorI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
ICAgICAgMHg4QzhFCisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElO
RyAweDhDOEYKKyNkZWZpbmUgR0xfUkdCQTMyVUkgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3
MAorI2RlZmluZSBHTF9SR0IzMlVJICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDcxCisjZGVm
aW5lIEdMX1JHQkExNlVJICAgICAgICAgICAgICAgICAgICAgICAweDhENzYKKyNkZWZpbmUgR0xf
UkdCMTZVSSAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ3NworI2RlZmluZSBHTF9SR0JBOFVJ
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDdDCisjZGVmaW5lIEdMX1JHQjhVSSAgICAgICAg
ICAgICAgICAgICAgICAgICAweDhEN0QKKyNkZWZpbmUgR0xfUkdCQTMySSAgICAgICAgICAgICAg
ICAgICAgICAgIDB4OEQ4MgorI2RlZmluZSBHTF9SR0IzMkkgICAgICAgICAgICAgICAgICAgICAg
ICAgMHg4RDgzCisjZGVmaW5lIEdMX1JHQkExNkkgICAgICAgICAgICAgICAgICAgICAgICAweDhE
ODgKKyNkZWZpbmUgR0xfUkdCMTZJICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ4OQorI2Rl
ZmluZSBHTF9SR0JBOEkgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDhFCisjZGVmaW5lIEdM
X1JHQjhJICAgICAgICAgICAgICAgICAgICAgICAgICAweDhEOEYKKyNkZWZpbmUgR0xfUkVEX0lO
VEVHRVIgICAgICAgICAgICAgICAgICAgIDB4OEQ5NAorI2RlZmluZSBHTF9SR0JfSU5URUdFUiAg
ICAgICAgICAgICAgICAgICAgMHg4RDk4CisjZGVmaW5lIEdMX1JHQkFfSU5URUdFUiAgICAgICAg
ICAgICAgICAgICAweDhEOTkKKyNkZWZpbmUgR0xfU0FNUExFUl8yRF9BUlJBWSAgICAgICAgICAg
ICAgIDB4OERDMQorI2RlZmluZSBHTF9TQU1QTEVSXzJEX0FSUkFZX1NIQURPVyAgICAgICAgMHg4
REM0CisjZGVmaW5lIEdMX1NBTVBMRVJfQ1VCRV9TSEFET1cgICAgICAgICAgICAweDhEQzUKKyNk
ZWZpbmUgR0xfVU5TSUdORURfSU5UX1ZFQzIgICAgICAgICAgICAgIDB4OERDNgorI2RlZmluZSBH
TF9VTlNJR05FRF9JTlRfVkVDMyAgICAgICAgICAgICAgMHg4REM3CisjZGVmaW5lIEdMX1VOU0lH
TkVEX0lOVF9WRUM0ICAgICAgICAgICAgICAweDhEQzgKKyNkZWZpbmUgR0xfSU5UX1NBTVBMRVJf
MkQgICAgICAgICAgICAgICAgIDB4OERDQQorI2RlZmluZSBHTF9JTlRfU0FNUExFUl8zRCAgICAg
ICAgICAgICAgICAgMHg4RENCCisjZGVmaW5lIEdMX0lOVF9TQU1QTEVSX0NVQkUgICAgICAgICAg
ICAgICAweDhEQ0MKKyNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfMkRfQVJSQVkgICAgICAgICAgIDB4
OERDRgorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRCAgICAgICAgMHg4REQyCisj
ZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzNEICAgICAgICAweDhERDMKKyNkZWZpbmUg
R0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRSAgICAgIDB4OERENAorI2RlZmluZSBHTF9VTlNJ
R05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWSAgMHg4REQ3CisjZGVmaW5lIEdMX0JVRkZFUl9BQ0NF
U1NfRkxBR1MgICAgICAgICAgICAweDkxMUYKKyNkZWZpbmUgR0xfQlVGRkVSX01BUF9MRU5HVEgg
ICAgICAgICAgICAgIDB4OTEyMAorI2RlZmluZSBHTF9CVUZGRVJfTUFQX09GRlNFVCAgICAgICAg
ICAgICAgMHg5MTIxCisjZGVmaW5lIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiAgICAgICAgICAgICAw
eDhDQUMKKyNkZWZpbmUgR0xfREVQVEgzMkZfU1RFTkNJTDggICAgICAgICAgICAgIDB4OENBRAor
I2RlZmluZSBHTF9GTE9BVF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYgMHg4REFECisjZGVmaW5l
IEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcgMHg4MjEwCisjZGVmaW5l
IEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09NUE9ORU5UX1RZUEUgMHg4MjExCisjZGVmaW5l
IEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfUkVEX1NJWkUgMHg4MjEyCisjZGVmaW5lIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRSAweDgyMTMKKyNkZWZpbmUgR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9CTFVFX1NJWkUgMHg4MjE0CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfQUxQSEFfU0laRSAweDgyMTUKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9ERVBUSF9TSVpFIDB4ODIxNgorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX1NURU5DSUxfU0laRSAweDgyMTcKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfREVGQVVMVCAg
ICAgICAgICAgIDB4ODIxOAorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9VTkRFRklORUQgICAgICAg
ICAgMHg4MjE5CisjZGVmaW5lIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCAgICAgICAweDgy
MUEKKyNkZWZpbmUgR0xfREVQVEhfU1RFTkNJTCAgICAgICAgICAgICAgICAgIDB4ODRGOQorI2Rl
ZmluZSBHTF9VTlNJR05FRF9JTlRfMjRfOCAgICAgICAgICAgICAgMHg4NEZBCisjZGVmaW5lIEdM
X0RFUFRIMjRfU1RFTkNJTDggICAgICAgICAgICAgICAweDg4RjAKKyNkZWZpbmUgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCAgICAgICAgICAgIDB4OEMxNworI2RlZmluZSBHTF9EUkFXX0ZSQU1FQlVG
RkVSX0JJTkRJTkcgICAgICAgMHg4Q0E2CisjZGVmaW5lIEdMX1JFQURfRlJBTUVCVUZGRVIgICAg
ICAgICAgICAgICAweDhDQTgKKyNkZWZpbmUgR0xfRFJBV19GUkFNRUJVRkZFUiAgICAgICAgICAg
ICAgIDB4OENBOQorI2RlZmluZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkcgICAgICAgMHg4
Q0FBCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTICAgICAgICAgICAweDhDQUIKKyNk
ZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xBWUVSIDB4OENENAorI2Rl
ZmluZSBHTF9NQVhfQ09MT1JfQVRUQUNITUVOVFMgICAgICAgICAgMHg4Q0RGCisjZGVmaW5lIEdM
X0NPTE9SX0FUVEFDSE1FTlQxICAgICAgICAgICAgICAweDhDRTEKKyNkZWZpbmUgR0xfQ09MT1Jf
QVRUQUNITUVOVDIgICAgICAgICAgICAgIDB4OENFMgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMyAgICAgICAgICAgICAgMHg4Q0UzCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ0ICAg
ICAgICAgICAgICAweDhDRTQKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDUgICAgICAgICAg
ICAgIDB4OENFNQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UNiAgICAgICAgICAgICAgMHg4
Q0U2CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQ3ICAgICAgICAgICAgICAweDhDRTcKKyNk
ZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDggICAgICAgICAgICAgIDB4OENFOAorI2RlZmluZSBH
TF9DT0xPUl9BVFRBQ0hNRU5UOSAgICAgICAgICAgICAgMHg4Q0U5CisjZGVmaW5lIEdMX0NPTE9S
X0FUVEFDSE1FTlQxMCAgICAgICAgICAgICAweDhDRUEKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNI
TUVOVDExICAgICAgICAgICAgIDB4OENFQgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTIg
ICAgICAgICAgICAgMHg4Q0VDCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxMyAgICAgICAg
ICAgICAweDhDRUQKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDE0ICAgICAgICAgICAgIDB4
OENFRQorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTUgICAgICAgICAgICAgMHg4Q0VGCisj
ZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQxNiAgICAgICAgICAgICAweDhDRjAKKyNkZWZpbmUg
R0xfQ09MT1JfQVRUQUNITUVOVDE3ICAgICAgICAgICAgIDB4OENGMQorI2RlZmluZSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMTggICAgICAgICAgICAgMHg4Q0YyCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFD
SE1FTlQxOSAgICAgICAgICAgICAweDhDRjMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDIw
ICAgICAgICAgICAgIDB4OENGNAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMjEgICAgICAg
ICAgICAgMHg4Q0Y1CisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQyMiAgICAgICAgICAgICAw
eDhDRjYKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDIzICAgICAgICAgICAgIDB4OENGNwor
I2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMjQgICAgICAgICAgICAgMHg4Q0Y4CisjZGVmaW5l
IEdMX0NPTE9SX0FUVEFDSE1FTlQyNSAgICAgICAgICAgICAweDhDRjkKKyNkZWZpbmUgR0xfQ09M
T1JfQVRUQUNITUVOVDI2ICAgICAgICAgICAgIDB4OENGQQorI2RlZmluZSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMjcgICAgICAgICAgICAgMHg4Q0ZCCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQy
OCAgICAgICAgICAgICAweDhDRkMKKyNkZWZpbmUgR0xfQ09MT1JfQVRUQUNITUVOVDI5ICAgICAg
ICAgICAgIDB4OENGRAorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMzAgICAgICAgICAgICAg
MHg4Q0ZFCisjZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1FTlQzMSAgICAgICAgICAgICAweDhDRkYK
KyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRSAweDhENTYKKyNk
ZWZpbmUgR0xfTUFYX1NBTVBMRVMgICAgICAgICAgICAgICAgICAgIDB4OEQ1NworI2RlZmluZSBH
TF9IQUxGX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgMHgxNDBCCisjZGVmaW5lIEdMX01BUF9S
RUFEX0JJVCAgICAgICAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgR0xfTUFQX1dSSVRFX0JJ
VCAgICAgICAgICAgICAgICAgIDB4MDAwMgorI2RlZmluZSBHTF9NQVBfSU5WQUxJREFURV9SQU5H
RV9CSVQgICAgICAgMHgwMDA0CisjZGVmaW5lIEdMX01BUF9JTlZBTElEQVRFX0JVRkZFUl9CSVQg
ICAgICAweDAwMDgKKyNkZWZpbmUgR0xfTUFQX0ZMVVNIX0VYUExJQ0lUX0JJVCAgICAgICAgIDB4
MDAxMAorI2RlZmluZSBHTF9NQVBfVU5TWU5DSFJPTklaRURfQklUICAgICAgICAgMHgwMDIwCisj
ZGVmaW5lIEdMX1JHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMjcKKyNkZWZpbmUg
R0xfUkdfSU5URUdFUiAgICAgICAgICAgICAgICAgICAgIDB4ODIyOAorI2RlZmluZSBHTF9SOCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjI5CisjZGVmaW5lIEdMX1JHOCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDgyMkIKKyNkZWZpbmUgR0xfUjE2RiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODIyRAorI2RlZmluZSBHTF9SMzJGICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MjJFCisjZGVmaW5lIEdMX1JHMTZGICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgyMkYKKyNkZWZpbmUgR0xfUkczMkYgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzMAor
I2RlZmluZSBHTF9SOEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjMxCisjZGVmaW5l
IEdMX1I4VUkgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMzIKKyNkZWZpbmUgR0xfUjE2
SSAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzMworI2RlZmluZSBHTF9SMTZVSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MjM0CisjZGVmaW5lIEdMX1IzMkkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgyMzUKKyNkZWZpbmUgR0xfUjMyVUkgICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4ODIzNgorI2RlZmluZSBHTF9SRzhJICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4MjM3CisjZGVmaW5lIEdMX1JHOFVJICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMzgK
KyNkZWZpbmUgR0xfUkcxNkkgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIzOQorI2RlZmlu
ZSBHTF9SRzE2VUkgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjNBCisjZGVmaW5lIEdMX1JH
MzJJICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyM0IKKyNkZWZpbmUgR0xfUkczMlVJICAg
ICAgICAgICAgICAgICAgICAgICAgIDB4ODIzQworI2RlZmluZSBHTF9WRVJURVhfQVJSQVlfQklO
RElORyAgICAgICAgICAgMHg4NUI1CisjZGVmaW5lIEdMX1I4X1NOT1JNICAgICAgICAgICAgICAg
ICAgICAgICAweDhGOTQKKyNkZWZpbmUgR0xfUkc4X1NOT1JNICAgICAgICAgICAgICAgICAgICAg
IDB4OEY5NQorI2RlZmluZSBHTF9SR0I4X1NOT1JNICAgICAgICAgICAgICAgICAgICAgMHg4Rjk2
CisjZGVmaW5lIEdMX1JHQkE4X1NOT1JNICAgICAgICAgICAgICAgICAgICAweDhGOTcKKyNkZWZp
bmUgR0xfU0lHTkVEX05PUk1BTElaRUQgICAgICAgICAgICAgIDB4OEY5QworI2RlZmluZSBHTF9Q
UklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCAgMHg4RDY5CisjZGVmaW5lIEdMX0NPUFlfUkVB
RF9CVUZGRVIgICAgICAgICAgICAgICAweDhGMzYKKyNkZWZpbmUgR0xfQ09QWV9XUklURV9CVUZG
RVIgICAgICAgICAgICAgIDB4OEYzNworI2RlZmluZSBHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJ
TkcgICAgICAgMHg4RjM2CisjZGVmaW5lIEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkcgICAg
ICAweDhGMzcKKyNkZWZpbmUgR0xfVU5JRk9STV9CVUZGRVIgICAgICAgICAgICAgICAgIDB4OEEx
MQorI2RlZmluZSBHTF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HICAgICAgICAgMHg4QTI4CisjZGVm
aW5lIEdMX1VOSUZPUk1fQlVGRkVSX1NUQVJUICAgICAgICAgICAweDhBMjkKKyNkZWZpbmUgR0xf
VU5JRk9STV9CVUZGRVJfU0laRSAgICAgICAgICAgIDB4OEEyQQorI2RlZmluZSBHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fQkxPQ0tTICAgICAgMHg4QTJCCisjZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9V
TklGT1JNX0JMT0NLUyAgICAweDhBMkQKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1VOSUZPUk1f
QkxPQ0tTICAgIDB4OEEyRQorI2RlZmluZSBHTF9NQVhfVU5JRk9STV9CVUZGRVJfQklORElOR1Mg
ICAgMHg4QTJGCisjZGVmaW5lIEdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUgICAgICAgICAweDhB
MzAKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMgMHg4
QTMxCisjZGVmaW5lIEdMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMg
MHg4QTMzCisjZGVmaW5lIEdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQgMHg4QTM0
CisjZGVmaW5lIEdMX0FDVElWRV9VTklGT1JNX0JMT0NLX01BWF9OQU1FX0xFTkdUSCAweDhBMzUK
KyNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1fQkxPQ0tTICAgICAgICAgIDB4OEEzNgorI2RlZmlu
ZSBHTF9VTklGT1JNX1RZUEUgICAgICAgICAgICAgICAgICAgMHg4QTM3CisjZGVmaW5lIEdMX1VO
SUZPUk1fU0laRSAgICAgICAgICAgICAgICAgICAweDhBMzgKKyNkZWZpbmUgR0xfVU5JRk9STV9O
QU1FX0xFTkdUSCAgICAgICAgICAgIDB4OEEzOQorI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0lO
REVYICAgICAgICAgICAgMHg4QTNBCisjZGVmaW5lIEdMX1VOSUZPUk1fT0ZGU0VUICAgICAgICAg
ICAgICAgICAweDhBM0IKKyNkZWZpbmUgR0xfVU5JRk9STV9BUlJBWV9TVFJJREUgICAgICAgICAg
IDB4OEEzQworI2RlZmluZSBHTF9VTklGT1JNX01BVFJJWF9TVFJJREUgICAgICAgICAgMHg4QTNE
CisjZGVmaW5lIEdMX1VOSUZPUk1fSVNfUk9XX01BSk9SICAgICAgICAgICAweDhBM0UKKyNkZWZp
bmUgR0xfVU5JRk9STV9CTE9DS19CSU5ESU5HICAgICAgICAgIDB4OEEzRgorI2RlZmluZSBHTF9V
TklGT1JNX0JMT0NLX0RBVEFfU0laRSAgICAgICAgMHg4QTQwCisjZGVmaW5lIEdMX1VOSUZPUk1f
QkxPQ0tfTkFNRV9MRU5HVEggICAgICAweDhBNDEKKyNkZWZpbmUgR0xfVU5JRk9STV9CTE9DS19B
Q1RJVkVfVU5JRk9STVMgIDB4OEE0MgorI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX0FDVElWRV9V
TklGT1JNX0lORElDRVMgMHg4QTQzCisjZGVmaW5lIEdMX1VOSUZPUk1fQkxPQ0tfUkVGRVJFTkNF
RF9CWV9WRVJURVhfU0hBREVSIDB4OEE0NAorI2RlZmluZSBHTF9VTklGT1JNX0JMT0NLX1JFRkVS
RU5DRURfQllfRlJBR01FTlRfU0hBREVSIDB4OEE0NgorI2RlZmluZSBHTF9JTlZBTElEX0lOREVY
ICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRnUKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9PVVRQ
VVRfQ09NUE9ORU5UUyAgIDB4OTEyMgorI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfSU5QVVRfQ09N
UE9ORU5UUyAgMHg5MTI1CisjZGVmaW5lIEdMX01BWF9TRVJWRVJfV0FJVF9USU1FT1VUICAgICAg
ICAweDkxMTEKKyNkZWZpbmUgR0xfT0JKRUNUX1RZUEUgICAgICAgICAgICAgICAgICAgIDB4OTEx
MgorI2RlZmluZSBHTF9TWU5DX0NPTkRJVElPTiAgICAgICAgICAgICAgICAgMHg5MTEzCisjZGVm
aW5lIEdMX1NZTkNfU1RBVFVTICAgICAgICAgICAgICAgICAgICAweDkxMTQKKyNkZWZpbmUgR0xf
U1lOQ19GTEFHUyAgICAgICAgICAgICAgICAgICAgIDB4OTExNQorI2RlZmluZSBHTF9TWU5DX0ZF
TkNFICAgICAgICAgICAgICAgICAgICAgMHg5MTE2CisjZGVmaW5lIEdMX1NZTkNfR1BVX0NPTU1B
TkRTX0NPTVBMRVRFICAgICAweDkxMTcKKyNkZWZpbmUgR0xfVU5TSUdOQUxFRCAgICAgICAgICAg
ICAgICAgICAgIDB4OTExOAorI2RlZmluZSBHTF9TSUdOQUxFRCAgICAgICAgICAgICAgICAgICAg
ICAgMHg5MTE5CisjZGVmaW5lIEdMX0FMUkVBRFlfU0lHTkFMRUQgICAgICAgICAgICAgICAweDkx
MUEKKyNkZWZpbmUgR0xfVElNRU9VVF9FWFBJUkVEICAgICAgICAgICAgICAgIDB4OTExQgorI2Rl
ZmluZSBHTF9DT05ESVRJT05fU0FUSVNGSUVEICAgICAgICAgICAgMHg5MTFDCisjZGVmaW5lIEdM
X1dBSVRfRkFJTEVEICAgICAgICAgICAgICAgICAgICAweDkxMUQKKyNkZWZpbmUgR0xfU1lOQ19G
TFVTSF9DT01NQU5EU19CSVQgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgR0xfVElNRU9VVF9J
R05PUkVEICAgICAgICAgICAgICAgIDB4RkZGRkZGRkZGRkZGRkZGRnVsbAorI2RlZmluZSBHTF9W
RVJURVhfQVRUUklCX0FSUkFZX0RJVklTT1IgICAgMHg4OEZFCisjZGVmaW5lIEdMX0FOWV9TQU1Q
TEVTX1BBU1NFRCAgICAgICAgICAgICAweDhDMkYKKyNkZWZpbmUgR0xfQU5ZX1NBTVBMRVNfUEFT
U0VEX0NPTlNFUlZBVElWRSAweDhENkEKKyNkZWZpbmUgR0xfU0FNUExFUl9CSU5ESU5HICAgICAg
ICAgICAgICAgIDB4ODkxOQorI2RlZmluZSBHTF9SR0IxMF9BMlVJICAgICAgICAgICAgICAgICAg
ICAgMHg5MDZGCisjZGVmaW5lIEdMX1RFWFRVUkVfU1dJWlpMRV9SICAgICAgICAgICAgICAweDhF
NDIKKyNkZWZpbmUgR0xfVEVYVFVSRV9TV0laWkxFX0cgICAgICAgICAgICAgIDB4OEU0MworI2Rl
ZmluZSBHTF9URVhUVVJFX1NXSVpaTEVfQiAgICAgICAgICAgICAgMHg4RTQ0CisjZGVmaW5lIEdM
X1RFWFRVUkVfU1dJWlpMRV9BICAgICAgICAgICAgICAweDhFNDUKKyNkZWZpbmUgR0xfR1JFRU4g
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTkwNAorI2RlZmluZSBHTF9CTFVFICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHgxOTA1CisjZGVmaW5lIEdMX0lOVF8yXzEwXzEwXzEwX1JFViAg
ICAgICAgICAgICAweDhEOUYKKyNkZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLICAgICAgICAg
ICAgIDB4OEUyMgorI2RlZmluZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEICAgICAgMHg4
RTIzCisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkUgICAgICAweDhFMjQKKyNk
ZWZpbmUgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkcgICAgIDB4OEUyNQorI2RlZmluZSBH
TF9QUk9HUkFNX0JJTkFSWV9SRVRSSUVWQUJMRV9ISU5UIDB4ODI1NworI2RlZmluZSBHTF9QUk9H
UkFNX0JJTkFSWV9MRU5HVEggICAgICAgICAgMHg4NzQxCisjZGVmaW5lIEdMX05VTV9QUk9HUkFN
X0JJTkFSWV9GT1JNQVRTICAgICAweDg3RkUKKyNkZWZpbmUgR0xfUFJPR1JBTV9CSU5BUllfRk9S
TUFUUyAgICAgICAgIDB4ODdGRgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1IxMV9FQUMgICAgICAg
ICAgICAgMHg5MjcwCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMgICAgICAw
eDkyNzEKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SRzExX0VBQyAgICAgICAgICAgIDB4OTI3Mgor
I2RlZmluZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyAgICAgMHg5MjczCisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyICAgICAgICAgICAweDkyNzQKKyNkZWZpbmUgR0xfQ09N
UFJFU1NFRF9TUkdCOF9FVEMyICAgICAgICAgIDB4OTI3NQorI2RlZmluZSBHTF9DT01QUkVTU0VE
X1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIDB4OTI3NgorI2RlZmluZSBHTF9DT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiAweDkyNzcKKyNkZWZpbmUgR0xfQ09N
UFJFU1NFRF9SR0JBOF9FVEMyX0VBQyAgICAgIDB4OTI3OAorI2RlZmluZSBHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9FVEMyX0VBQyAweDkyNzkKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTU1VVEFC
TEVfRk9STUFUICAgICAgIDB4OTEyRgorI2RlZmluZSBHTF9NQVhfRUxFTUVOVF9JTkRFWCAgICAg
ICAgICAgICAgMHg4RDZCCisjZGVmaW5lIEdMX05VTV9TQU1QTEVfQ09VTlRTICAgICAgICAgICAg
ICAweDkzODAKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTU1VVEFCTEVfTEVWRUxTICAgICAgIDB4ODJE
RgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFEQlVGRkVSUFJPQykgKEdMZW51
bSBzcmMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXUkFOR0VFTEVNRU5U
U1BST0MpIChHTGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemVpIGNv
dW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFRFWElNQUdFM0RQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
Y29uc3Qgdm9pZCAqcGl4ZWxzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVY
U1VCSU1BR0UzRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNl
dCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2
b2lkICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VC
SU1BR0UzRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwg
R0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xD
T01QUkVTU0VEVEVYSU1BR0UzRFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXpl
aSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCAqZGF0
YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFH
RTNEUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGlu
dCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZv
aWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5RVUVSSUVTUFJP
QykgKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xERUxFVEVRVUVSSUVTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpOwor
dHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTUVVFUllQUk9DKSAoR0x1aW50
IGlkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQkVHSU5RVUVSWVBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xFTkRRVUVSWVBST0MpIChHTGVudW0gdGFyZ2V0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUUVVFUllJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRRVUVSWU9C
SkVDVFVJVlBST0MpIChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOwor
dHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTFVOTUFQQlVGRkVSUFJPQykgKEdM
ZW51bSB0YXJnZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCVUZGRVJQ
T0lOVEVSVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXQlVGRkVSU1BST0MpIChHTHNp
emVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFVOSUZPUk1NQVRSSVgyWDNGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNTUFUUklYM1gyRlZQUk9DKSAoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJWDJY
NEZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFVOSUZPUk1NQVRSSVg0WDJGVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNTUFUUklYM1g0RlZQUk9DKSAoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STU1BVFJJWDRY
M0ZWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEJMSVRGUkFNRUJVRkZFUlBST0MpIChHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50
IHNyY1gxLCBHTGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RY
MSwgR0xpbnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlcik7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRVBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkVMQVlFUlBST0MpIChHTGVudW0gdGFyZ2V0LCBH
TGVudW0gYXR0YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBsYXll
cik7Cit0eXBlZGVmIHZvaWQgKihHTF9BUElFTlRSWVAgUEZOR0xNQVBCVUZGRVJSQU5HRVBST0Mp
IChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoLCBHTGJp
dGZpZWxkIGFjY2Vzcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZMVVNITUFQ
UEVEQlVGRkVSUkFOR0VQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNp
emVpcHRyIGxlbmd0aCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRWRVJU
RVhBUlJBWVBST0MpIChHTHVpbnQgYXJyYXkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xERUxFVEVWRVJURVhBUlJBWVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFy
cmF5cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlZFUlRFWEFSUkFZU1BS
T0MpIChHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9B
UElFTlRSWVAgUEZOR0xJU1ZFUlRFWEFSUkFZUFJPQykgKEdMdWludCBhcnJheSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVElOVEVHRVJJX1ZQUk9DKSAoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEJFR0lOVFJBTlNGT1JNRkVFREJBQ0tQUk9DKSAoR0xlbnVtIHByaW1pdGl2ZU1vZGUp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUUkFOU0ZPUk1GRUVEQkFDS1BS
T0MpICh2b2lkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQklOREJVRkZFUlJB
TkdFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlciwgR0xp
bnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xCSU5EQlVGRkVSQkFTRVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgs
IEdMdWludCBidWZmZXIpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xUUkFOU0ZP
Uk1GRUVEQkFDS1ZBUllJTkdTUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGNoYXIgKmNvbnN0KnZhcnlpbmdzLCBHTGVudW0gYnVmZmVyTW9kZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRSQU5TRk9STUZFRURCQUNLVkFSWUlOR1BST0Mp
IChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xzaXplaSAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUJJUE9JTlRFUlBST0MpIChH
THVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHN0cmlkZSwgY29u
c3Qgdm9pZCAqcG9pbnRlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZF
UlRFWEFUVFJJQklJVlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQklV
SVZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCSTRJUFJPQykgKEdMdWlu
dCBpbmRleCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkk0VUlQUk9DKSAoR0x1aW50IGluZGV4
LCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB6LCBHTHVpbnQgdyk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkk0SVZQUk9DKSAoR0x1aW50IGluZGV4LCBj
b25zdCBHTGludCAqdik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFU
VFJJQkk0VUlWUFJPQykgKEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50ICp2KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STVVJVlBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYgR0xpbnQgKEdMX0FQ
SUVOVFJZUCBQRk5HTEdFVEZSQUdEQVRBTE9DQVRJT05QUk9DKSAoR0x1aW50IHByb2dyYW0sIGNv
bnN0IEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZP
Uk0xVUlQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0yVUlQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMdWludCB2
MCwgR0x1aW50IHYxKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNV
SVBST0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk00VUlQUk9DKSAoR0xpbnQg
bG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIsIEdMdWludCB2Myk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0xVUlWUFJPQykgKEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTJVSVZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xVTklGT1JNM1VJVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFVOSUZPUk00VUlWUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ0xFQVJCVUZG
RVJJVlBST0MpIChHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGludCAq
dmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUkJVRkZFUlVJVlBS
T0MpIChHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTHVpbnQgKnZhbHVl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ0xFQVJCVUZGRVJGVlBST0MpIChH
TGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSQlVGRkVSRklQUk9DKSAoR0xlbnVt
IGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgR0xmbG9hdCBkZXB0aCwgR0xpbnQgc3RlbmNpbCk7
Cit0eXBlZGVmIGNvbnN0IEdMdWJ5dGUgKihHTF9BUElFTlRSWVAgUEZOR0xHRVRTVFJJTkdJUFJP
QykgKEdMZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xDT1BZQlVGRkVSU1VCREFUQVBST0MpIChHTGVudW0gcmVhZFRhcmdldCwgR0xlbnVt
IHdyaXRlVGFyZ2V0LCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwg
R0xzaXplaXB0ciBzaXplKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVU5J
Rk9STUlORElDRVNQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgdW5pZm9ybUNvdW50LCBj
b25zdCBHTGNoYXIgKmNvbnN0KnVuaWZvcm1OYW1lcywgR0x1aW50ICp1bmlmb3JtSW5kaWNlcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEFDVElWRVVOSUZPUk1TSVZQUk9D
KSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgdW5pZm9ybUNvdW50LCBjb25zdCBHTHVpbnQgKnVu
aWZvcm1JbmRpY2VzLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiBHTHVp
bnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFVOSUZPUk1CTE9DS0lOREVYUFJPQykgKEdMdWludCBw
cm9ncmFtLCBjb25zdCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVRBQ1RJVkVVTklGT1JNQkxPQ0tJVlBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
bXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRBQ1RJVkVVTklGT1JNQkxP
Q0tOQU1FUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKnVuaWZvcm1CbG9ja05hbWUp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNQkxPQ0tCSU5ESU5HUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlm
b3JtQmxvY2tCaW5kaW5nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0FS
UkFZU0lOU1RBTkNFRFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFRFBST0MpIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgaW5zdGFuY2Vjb3Vu
dCk7Cit0eXBlZGVmIEdMc3luYyAoR0xfQVBJRU5UUllQIFBGTkdMRkVOQ0VTWU5DUFJPQykgKEdM
ZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdM
X0FQSUVOVFJZUCBQRk5HTElTU1lOQ1BST0MpIChHTHN5bmMgc3luYyk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVNZTkNQUk9DKSAoR0xzeW5jIHN5bmMpOwordHlwZWRl
ZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTENMSUVOVFdBSVRTWU5DUFJPQykgKEdMc3luYyBz
eW5jLCBHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMV0FJVFNZTkNQUk9DKSAoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQg
ZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xHRVRJTlRFR0VSNjRWUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqZGF0YSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNZTkNJVlBST0MpIChHTHN5bmMgc3luYywg
R0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnZh
bHVlcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVElOVEVHRVI2NElfVlBS
T0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRhdGEpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCVUZGRVJQQVJBTUVURVJJNjRWUFJPQykgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VOU0FNUExFUlNQUk9DKSAoR0xzaXplaSBjb3VudCwgR0x1
aW50ICpzYW1wbGVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVNB
TVBMRVJTUFJPQykgKEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqc2FtcGxlcnMpOwordHlw
ZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTElTU0FNUExFUlBST0MpIChHTHVpbnQg
c2FtcGxlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRTQU1QTEVSUFJP
QykgKEdMdWludCB1bml0LCBHTHVpbnQgc2FtcGxlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFNBTVBMRVJQQVJBTUVURVJJUFJPQykgKEdMdWludCBzYW1wbGVyLCBHTGVudW0g
cG5hbWUsIEdMaW50IHBhcmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FN
UExFUlBBUkFNRVRFUklWUFJPQykgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0
IEdMaW50ICpwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQ
QVJBTUVURVJGUFJPQykgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQU1QTEVSUEFSQU1FVEVSRlZQ
Uk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW0p
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRTQU1QTEVSUEFSQU1FVEVSSVZQ
Uk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJGVlBST0MpIChH
THVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUJESVZJU09SUFJPQykgKEdMdWludCBp
bmRleCwgR0x1aW50IGRpdmlzb3IpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xC
SU5EVFJBTlNGT1JNRkVFREJBQ0tQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFVFJBTlNGT1JNRkVFREJBQ0tTUFJP
QykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRU5UUkFOU0ZPUk1GRUVEQkFDS1NQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQg
Kmlkcyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNUUkFOU0ZPUk1G
RUVEQkFDS1BST0MpIChHTHVpbnQgaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xQQVVTRVRSQU5TRk9STUZFRURCQUNLUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xSRVNVTUVUUkFOU0ZPUk1GRUVEQkFDS1BST0MpICh2b2lkKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JBTUJJTkFSWVBST0MpIChHTHVpbnQg
cHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZW51bSAqYmluYXJ5
Rm9ybWF0LCB2b2lkICpiaW5hcnkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQ
Uk9HUkFNQklOQVJZUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBj
b25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMUFJPR1JBTVBBUkFNRVRFUklQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51
bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xJ
TlZBTElEQVRFRlJBTUVCVUZGRVJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRh
Y2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTElOVkFMSURBVEVTVUJGUkFNRUJVRkZFUlBST0MpIChHTGVudW0gdGFyZ2V0
LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNUT1JBR0UyRFBST0MpIChHTGVudW0gdGFyZ2V0LCBH
THNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNp
emVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNUT1JBR0Uz
RFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVElOVEVSTkFMRk9STUFUSVZQUk9DKSAoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZEJ1ZmZlciAoR0xlbnVtIHNyYyk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3UmFuZ2VFbGVtZW50cyAoR0xlbnVtIG1vZGUs
IEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmluZGljZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4SW1h
Z2UzRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVy
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xDb3B5VGV4U3ViSW1hZ2UzRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhJbWFnZTNEIChHTGVudW0gdGFyZ2V0LCBHTGludCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4
U3ViSW1hZ2UzRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdM
aW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qg
dm9pZCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5RdWVyaWVzIChH
THNpemVpIG4sIEdMdWludCAqaWRzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERl
bGV0ZVF1ZXJpZXMgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCBH
TGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1F1ZXJ5IChHTHVpbnQgaWQpOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsQmVnaW5RdWVyeSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuZFF1ZXJ5IChHTGVudW0gdGFyZ2V0KTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5aXYgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRRdWVyeU9iamVjdHVpdiAoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludCAq
cGFyYW1zKTsKK0dMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsVW5tYXBCdWZmZXIg
KEdMZW51bSB0YXJnZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVy
UG9pbnRlcnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QnVmZmVycyAoR0xzaXplaSBuLCBjb25z
dCBHTGVudW0gKmJ1ZnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1h
dHJpeDJ4M2Z2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5z
cG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsVW5pZm9ybU1hdHJpeDN4MmZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDJ4NGZ2IChHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDR4MmZ2IChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybU1hdHJpeDN4NGZ2
IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bU1hdHJpeDR4M2Z2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRy
YW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsQmxpdEZyYW1lYnVmZmVyIChHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNy
Y1gxLCBHTGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwg
R0xpbnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlcik7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUgKEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xG
cmFtZWJ1ZmZlclRleHR1cmVMYXllciAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQs
IEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIpOworR0xfQVBJQ0FMTCB2
b2lkICpHTF9BUElFTlRSWSBnbE1hcEJ1ZmZlclJhbmdlIChHTGVudW0gdGFyZ2V0LCBHTGludHB0
ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2Vzcyk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlIChHTGVudW0gdGFy
Z2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEJpbmRWZXJ0ZXhBcnJheSAoR0x1aW50IGFycmF5KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5cyAoR0xzaXplaSBuLCBjb25z
dCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5WZXJ0
ZXhBcnJheXMgKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpOworR0xfQVBJQ0FMTCBHTGJvb2xl
YW4gR0xfQVBJRU5UUlkgZ2xJc1ZlcnRleEFycmF5IChHTHVpbnQgYXJyYXkpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZWdlcmlfdiAoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGludCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCZWdp
blRyYW5zZm9ybUZlZWRiYWNrIChHTGVudW0gcHJpbWl0aXZlTW9kZSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjayAodm9pZCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kQnVmZmVyUmFuZ2UgKEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZEJ1ZmZlckJhc2UgKEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlcik7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzIChHTHVpbnQgcHJvZ3JhbSwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpjb25zdCp2YXJ5aW5ncywgR0xlbnVtIGJ1ZmZlck1v
ZGUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdM
c2l6ZWkgKmxlbmd0aCwgR0xzaXplaSAqc2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliSVBvaW50ZXIgKEdM
dWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25z
dCB2b2lkICpwb2ludGVyKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFZlcnRl
eEF0dHJpYklpdiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliSXVpdiAoR0x1aW50
IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkk0aSAoR0x1aW50IGluZGV4LCBHTGludCB4LCBHTGlu
dCB5LCBHTGludCB6LCBHTGludCB3KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZl
cnRleEF0dHJpYkk0dWkgKEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQg
eiwgR0x1aW50IHcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmli
STRpdiAoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJJNHVpdiAoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQg
KnYpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybXVpdiAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIEdM
aW50IEdMX0FQSUVOVFJZIGdsR2V0RnJhZ0RhdGFMb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIGNv
bnN0IEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3Jt
MXVpIChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFVuaWZvcm0ydWkgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM3VpIChHTGludCBsb2NhdGlv
biwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xVbmlmb3JtNHVpIChHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQg
djEsIEdMdWludCB2MiwgR0x1aW50IHYzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFVuaWZvcm0xdWl2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMnVpdiAoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTN1aXYgKEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFVuaWZvcm00dWl2IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0x1aW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDbGVhckJ1ZmZl
cml2IChHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGludCAqdmFsdWUp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJCdWZmZXJ1aXYgKEdMZW51bSBi
dWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMdWludCAqdmFsdWUpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJCdWZmZXJmdiAoR0xlbnVtIGJ1ZmZlciwgR0xpbnQg
ZHJhd2J1ZmZlciwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsQ2xlYXJCdWZmZXJmaSAoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwg
R0xmbG9hdCBkZXB0aCwgR0xpbnQgc3RlbmNpbCk7CitHTF9BUElDQUxMIGNvbnN0IEdMdWJ5dGUg
KkdMX0FQSUVOVFJZIGdsR2V0U3RyaW5naSAoR0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb3B5QnVmZmVyU3ViRGF0YSAoR0xlbnVtIHJl
YWRUYXJnZXQsIEdMZW51bSB3cml0ZVRhcmdldCwgR0xpbnRwdHIgcmVhZE9mZnNldCwgR0xpbnRw
dHIgd3JpdGVPZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRVbmlmb3JtSW5kaWNlcyAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgdW5pZm9y
bUNvdW50LCBjb25zdCBHTGNoYXIgKmNvbnN0KnVuaWZvcm1OYW1lcywgR0x1aW50ICp1bmlmb3Jt
SW5kaWNlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVVbmlmb3Jt
c2l2IChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSB1bmlmb3JtQ291bnQsIGNvbnN0IEdMdWludCAq
dW5pZm9ybUluZGljZXMsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxM
IEdMdWludCBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1CbG9ja0luZGV4IChHTHVpbnQgcHJvZ3Jh
bSwgY29uc3QgR0xjaGFyICp1bmlmb3JtQmxvY2tOYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2IChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybUJsb2NrTmFtZSAoR0x1aW50
IHByb2dyYW0sIEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xVbmlmb3JtQmxvY2tCaW5kaW5nIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50
IHVuaWZvcm1CbG9ja0luZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZyk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkIChHTGVudW0gbW9kZSwg
R0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWQgKEdMZW51bSBt
b2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xz
aXplaSBpbnN0YW5jZWNvdW50KTsKK0dMX0FQSUNBTEwgR0xzeW5jIEdMX0FQSUVOVFJZIGdsRmVu
Y2VTeW5jIChHTGVudW0gY29uZGl0aW9uLCBHTGJpdGZpZWxkIGZsYWdzKTsKK0dMX0FQSUNBTEwg
R0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNTeW5jIChHTHN5bmMgc3luYyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVTeW5jIChHTHN5bmMgc3luYyk7CitHTF9BUElDQUxM
IEdMZW51bSBHTF9BUElFTlRSWSBnbENsaWVudFdhaXRTeW5jIChHTHN5bmMgc3luYywgR0xiaXRm
aWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xXYWl0U3luYyAoR0xzeW5jIHN5bmMsIEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRp
bWVvdXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZWdlcjY0diAoR0xl
bnVtIHBuYW1lLCBHTGludDY0ICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFN5bmNpdiAoR0xzeW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBH
THNpemVpICpsZW5ndGgsIEdMaW50ICp2YWx1ZXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsR2V0SW50ZWdlcjY0aV92IChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50
NjQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUGFyYW1l
dGVyaTY0diAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuU2FtcGxlcnMgKEdMc2l6ZWkgY291bnQs
IEdMdWludCAqc2FtcGxlcnMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRl
U2FtcGxlcnMgKEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqc2FtcGxlcnMpOworR0xfQVBJ
Q0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1NhbXBsZXIgKEdMdWludCBzYW1wbGVyKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRTYW1wbGVyIChHTHVpbnQgdW5pdCwg
R0x1aW50IHNhbXBsZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBh
cmFtZXRlcmkgKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNhbXBsZXJQYXJhbWV0ZXJpdiAoR0x1aW50IHNh
bXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFNhbXBsZXJQYXJhbWV0ZXJmIChHTHVpbnQgc2FtcGxlciwgR0xlbnVt
IHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFNh
bXBsZXJQYXJhbWV0ZXJmdiAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xm
bG9hdCAqcGFyYW0pOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBh
cmFtZXRlcml2IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdiAoR0x1
aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwg
dm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkRpdmlzb3IgKEdMdWludCBpbmRleCwgR0x1
aW50IGRpdmlzb3IpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFRyYW5zZm9y
bUZlZWRiYWNrIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzIChHTHNpemVpIG4sIGNvbnN0IEdM
dWludCAqaWRzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdlblRyYW5zZm9ybUZl
ZWRiYWNrcyAoR0xzaXplaSBuLCBHTHVpbnQgKmlkcyk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBH
TF9BUElFTlRSWSBnbElzVHJhbnNmb3JtRmVlZGJhY2sgKEdMdWludCBpZCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrICh2b2lkKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrICh2b2lkKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1CaW5hcnkgKEdMdWludCBw
cm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlG
b3JtYXQsIHZvaWQgKmJpbmFyeSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtQmluYXJ5IChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9p
ZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xQcm9ncmFtUGFyYW1ldGVyaSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQg
dmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW52YWxpZGF0ZUZyYW1lYnVm
ZmVyIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEludmFsaWRhdGVT
dWJGcmFtZWJ1ZmZlciAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29u
c3QgR0xlbnVtICphdHRhY2htZW50cywgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3RvcmFn
ZTJEIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xUZXhTdG9yYWdlM0QgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVp
IGRlcHRoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldEludGVybmFsZm9ybWF0
aXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOworI2VuZGlmCisjZW5kaWYgLyogR0xfRVNf
VkVSU0lPTl8zXzAgKi8KKworI2lmbmRlZiBHTF9FU19WRVJTSU9OXzNfMQorI2RlZmluZSBHTF9F
U19WRVJTSU9OXzNfMSAxCisjZGVmaW5lIEdMX0NPTVBVVEVfU0hBREVSICAgICAgICAgICAgICAg
ICAweDkxQjkKKyNkZWZpbmUgR0xfTUFYX0NPTVBVVEVfVU5JRk9STV9CTE9DS1MgICAgIDB4OTFC
QgorI2RlZmluZSBHTF9NQVhfQ09NUFVURV9URVhUVVJFX0lNQUdFX1VOSVRTIDB4OTFCQworI2Rl
ZmluZSBHTF9NQVhfQ09NUFVURV9JTUFHRV9VTklGT1JNUyAgICAgMHg5MUJECisjZGVmaW5lIEdM
X01BWF9DT01QVVRFX1NIQVJFRF9NRU1PUllfU0laRSAweDgyNjIKKyNkZWZpbmUgR0xfTUFYX0NP
TVBVVEVfVU5JRk9STV9DT01QT05FTlRTIDB4ODI2MworI2RlZmluZSBHTF9NQVhfQ09NUFVURV9B
VE9NSUNfQ09VTlRFUl9CVUZGRVJTIDB4ODI2NAorI2RlZmluZSBHTF9NQVhfQ09NUFVURV9BVE9N
SUNfQ09VTlRFUlMgICAgMHg4MjY1CisjZGVmaW5lIEdMX01BWF9DT01CSU5FRF9DT01QVVRFX1VO
SUZPUk1fQ09NUE9ORU5UUyAweDgyNjYKKyNkZWZpbmUgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9V
UF9JTlZPQ0FUSU9OUyAweDkwRUIKKyNkZWZpbmUgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9D
T1VOVCAgIDB4OTFCRQorI2RlZmluZSBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkUgICAg
MHg5MUJGCisjZGVmaW5lIEdMX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFICAgICAgICAweDgyNjcK
KyNkZWZpbmUgR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSICAgICAgIDB4OTBFRQorI2RlZmlu
ZSBHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVJfQklORElORyAweDkwRUYKKyNkZWZpbmUgR0xf
Q09NUFVURV9TSEFERVJfQklUICAgICAgICAgICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgR0xfRFJB
V19JTkRJUkVDVF9CVUZGRVIgICAgICAgICAgIDB4OEYzRgorI2RlZmluZSBHTF9EUkFXX0lORElS
RUNUX0JVRkZFUl9CSU5ESU5HICAgMHg4RjQzCisjZGVmaW5lIEdMX01BWF9VTklGT1JNX0xPQ0FU
SU9OUyAgICAgICAgICAweDgyNkUKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9XSURU
SCAgICAgIDB4OTMxMAorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0hFSUdIVCAgICAg
MHg5MzExCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUyAgICAweDkzMTMK
KyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05TIDB4
OTMxNAorI2RlZmluZSBHTF9NQVhfRlJBTUVCVUZGRVJfV0lEVEggICAgICAgICAgMHg5MzE1Cisj
ZGVmaW5lIEdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQgICAgICAgICAweDkzMTYKKyNkZWZpbmUg
R0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVMgICAgICAgIDB4OTMxOAorI2RlZmluZSBHTF9VTklG
T1JNICAgICAgICAgICAgICAgICAgICAgICAgMHg5MkUxCisjZGVmaW5lIEdMX1VOSUZPUk1fQkxP
Q0sgICAgICAgICAgICAgICAgICAweDkyRTIKKyNkZWZpbmUgR0xfUFJPR1JBTV9JTlBVVCAgICAg
ICAgICAgICAgICAgIDB4OTJFMworI2RlZmluZSBHTF9QUk9HUkFNX09VVFBVVCAgICAgICAgICAg
ICAgICAgMHg5MkU0CisjZGVmaW5lIEdMX0JVRkZFUl9WQVJJQUJMRSAgICAgICAgICAgICAgICAw
eDkyRTUKKyNkZWZpbmUgR0xfU0hBREVSX1NUT1JBR0VfQkxPQ0sgICAgICAgICAgIDB4OTJFNgor
I2RlZmluZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVIgICAgICAgICAgMHg5MkMwCisjZGVmaW5l
IEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HICAgICAweDkyRjQKKyNkZWZpbmUgR0xfQUNU
SVZFX1JFU09VUkNFUyAgICAgICAgICAgICAgIDB4OTJGNQorI2RlZmluZSBHTF9NQVhfTkFNRV9M
RU5HVEggICAgICAgICAgICAgICAgMHg5MkY2CisjZGVmaW5lIEdMX01BWF9OVU1fQUNUSVZFX1ZB
UklBQkxFUyAgICAgICAweDkyRjcKKyNkZWZpbmUgR0xfTkFNRV9MRU5HVEggICAgICAgICAgICAg
ICAgICAgIDB4OTJGOQorI2RlZmluZSBHTF9UWVBFICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg5MkZBCisjZGVmaW5lIEdMX0FSUkFZX1NJWkUgICAgICAgICAgICAgICAgICAgICAweDkyRkIK
KyNkZWZpbmUgR0xfT0ZGU0VUICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTJGQworI2RlZmlu
ZSBHTF9CTE9DS19JTkRFWCAgICAgICAgICAgICAgICAgICAgMHg5MkZECisjZGVmaW5lIEdMX0FS
UkFZX1NUUklERSAgICAgICAgICAgICAgICAgICAweDkyRkUKKyNkZWZpbmUgR0xfTUFUUklYX1NU
UklERSAgICAgICAgICAgICAgICAgIDB4OTJGRgorI2RlZmluZSBHTF9JU19ST1dfTUFKT1IgICAg
ICAgICAgICAgICAgICAgMHg5MzAwCisjZGVmaW5lIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9J
TkRFWCAgICAweDkzMDEKKyNkZWZpbmUgR0xfQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAgICAg
IDB4OTMwMgorI2RlZmluZSBHTF9CVUZGRVJfREFUQV9TSVpFICAgICAgICAgICAgICAgMHg5MzAz
CisjZGVmaW5lIEdMX05VTV9BQ1RJVkVfVkFSSUFCTEVTICAgICAgICAgICAweDkzMDQKKyNkZWZp
bmUgR0xfQUNUSVZFX1ZBUklBQkxFUyAgICAgICAgICAgICAgIDB4OTMwNQorI2RlZmluZSBHTF9S
RUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVIgICAgMHg5MzA2CisjZGVmaW5lIEdMX1JFRkVSRU5D
RURfQllfRlJBR01FTlRfU0hBREVSICAweDkzMEEKKyNkZWZpbmUgR0xfUkVGRVJFTkNFRF9CWV9D
T01QVVRFX1NIQURFUiAgIDB4OTMwQgorI2RlZmluZSBHTF9UT1BfTEVWRUxfQVJSQVlfU0laRSAg
ICAgICAgICAgMHg5MzBDCisjZGVmaW5lIEdMX1RPUF9MRVZFTF9BUlJBWV9TVFJJREUgICAgICAg
ICAweDkzMEQKKyNkZWZpbmUgR0xfTE9DQVRJT04gICAgICAgICAgICAgICAgICAgICAgIDB4OTMw
RQorI2RlZmluZSBHTF9WRVJURVhfU0hBREVSX0JJVCAgICAgICAgICAgICAgMHgwMDAwMDAwMQor
I2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVJfQklUICAgICAgICAgICAgMHgwMDAwMDAwMgorI2Rl
ZmluZSBHTF9BTExfU0hBREVSX0JJVFMgICAgICAgICAgICAgICAgMHhGRkZGRkZGRgorI2RlZmlu
ZSBHTF9QUk9HUkFNX1NFUEFSQUJMRSAgICAgICAgICAgICAgMHg4MjU4CisjZGVmaW5lIEdMX0FD
VElWRV9QUk9HUkFNICAgICAgICAgICAgICAgICAweDgyNTkKKyNkZWZpbmUgR0xfUFJPR1JBTV9Q
SVBFTElORV9CSU5ESU5HICAgICAgIDB4ODI1QQorI2RlZmluZSBHTF9BVE9NSUNfQ09VTlRFUl9C
VUZGRVJfQklORElORyAgMHg5MkMxCisjZGVmaW5lIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9T
VEFSVCAgICAweDkyQzIKKyNkZWZpbmUgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkUgICAg
IDB4OTJDMworI2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUT01JQ19DT1VOVEVSX0JVRkZFUlMgMHg5
MkNDCisjZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJTIDB4OTJE
MAorI2RlZmluZSBHTF9NQVhfQ09NQklORURfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyAweDkyRDEK
KyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9BVE9NSUNfQ09VTlRFUlMgICAgIDB4OTJEMgorI2RlZmlu
ZSBHTF9NQVhfRlJBR01FTlRfQVRPTUlDX0NPVU5URVJTICAgMHg5MkQ2CisjZGVmaW5lIEdMX01B
WF9DT01CSU5FRF9BVE9NSUNfQ09VTlRFUlMgICAweDkyRDcKKyNkZWZpbmUgR0xfTUFYX0FUT01J
Q19DT1VOVEVSX0JVRkZFUl9TSVpFIDB4OTJEOAorI2RlZmluZSBHTF9NQVhfQVRPTUlDX0NPVU5U
RVJfQlVGRkVSX0JJTkRJTkdTIDB4OTJEQworI2RlZmluZSBHTF9BQ1RJVkVfQVRPTUlDX0NPVU5U
RVJfQlVGRkVSUyAgMHg5MkQ5CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9BVE9NSUNfQ09VTlRF
UiAgICAweDkyREIKKyNkZWZpbmUgR0xfTUFYX0lNQUdFX1VOSVRTICAgICAgICAgICAgICAgIDB4
OEYzOAorI2RlZmluZSBHTF9NQVhfVkVSVEVYX0lNQUdFX1VOSUZPUk1TICAgICAgMHg5MENBCisj
ZGVmaW5lIEdMX01BWF9GUkFHTUVOVF9JTUFHRV9VTklGT1JNUyAgICAweDkwQ0UKKyNkZWZpbmUg
R0xfTUFYX0NPTUJJTkVEX0lNQUdFX1VOSUZPUk1TICAgIDB4OTBDRgorI2RlZmluZSBHTF9JTUFH
RV9CSU5ESU5HX05BTUUgICAgICAgICAgICAgMHg4RjNBCisjZGVmaW5lIEdMX0lNQUdFX0JJTkRJ
TkdfTEVWRUwgICAgICAgICAgICAweDhGM0IKKyNkZWZpbmUgR0xfSU1BR0VfQklORElOR19MQVlF
UkVEICAgICAgICAgIDB4OEYzQworI2RlZmluZSBHTF9JTUFHRV9CSU5ESU5HX0xBWUVSICAgICAg
ICAgICAgMHg4RjNECisjZGVmaW5lIEdMX0lNQUdFX0JJTkRJTkdfQUNDRVNTICAgICAgICAgICAw
eDhGM0UKKyNkZWZpbmUgR0xfSU1BR0VfQklORElOR19GT1JNQVQgICAgICAgICAgIDB4OTA2RQor
I2RlZmluZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0JBUlJJRVJfQklUIDB4MDAwMDAwMDEKKyNk
ZWZpbmUgR0xfRUxFTUVOVF9BUlJBWV9CQVJSSUVSX0JJVCAgICAgIDB4MDAwMDAwMDIKKyNkZWZp
bmUgR0xfVU5JRk9STV9CQVJSSUVSX0JJVCAgICAgICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUg
R0xfVEVYVFVSRV9GRVRDSF9CQVJSSUVSX0JJVCAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgR0xf
U0hBREVSX0lNQUdFX0FDQ0VTU19CQVJSSUVSX0JJVCAweDAwMDAwMDIwCisjZGVmaW5lIEdMX0NP
TU1BTkRfQkFSUklFUl9CSVQgICAgICAgICAgICAweDAwMDAwMDQwCisjZGVmaW5lIEdMX1BJWEVM
X0JVRkZFUl9CQVJSSUVSX0JJVCAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIEdMX1RFWFRVUkVf
VVBEQVRFX0JBUlJJRVJfQklUICAgICAweDAwMDAwMTAwCisjZGVmaW5lIEdMX0JVRkZFUl9VUERB
VEVfQkFSUklFUl9CSVQgICAgICAweDAwMDAwMjAwCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0JB
UlJJRVJfQklUICAgICAgICAweDAwMDAwNDAwCisjZGVmaW5lIEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CQVJSSUVSX0JJVCAweDAwMDAwODAwCisjZGVmaW5lIEdMX0FUT01JQ19DT1VOVEVSX0JBUlJJ
RVJfQklUICAgICAweDAwMDAxMDAwCisjZGVmaW5lIEdMX0FMTF9CQVJSSUVSX0JJVFMgICAgICAg
ICAgICAgICAweEZGRkZGRkZGCisjZGVmaW5lIEdMX0lNQUdFXzJEICAgICAgICAgICAgICAgICAg
ICAgICAweDkwNEQKKyNkZWZpbmUgR0xfSU1BR0VfM0QgICAgICAgICAgICAgICAgICAgICAgIDB4
OTA0RQorI2RlZmluZSBHTF9JTUFHRV9DVUJFICAgICAgICAgICAgICAgICAgICAgMHg5MDUwCisj
ZGVmaW5lIEdMX0lNQUdFXzJEX0FSUkFZICAgICAgICAgICAgICAgICAweDkwNTMKKyNkZWZpbmUg
R0xfSU5UX0lNQUdFXzJEICAgICAgICAgICAgICAgICAgIDB4OTA1OAorI2RlZmluZSBHTF9JTlRf
SU1BR0VfM0QgICAgICAgICAgICAgICAgICAgMHg5MDU5CisjZGVmaW5lIEdMX0lOVF9JTUFHRV9D
VUJFICAgICAgICAgICAgICAgICAweDkwNUIKKyNkZWZpbmUgR0xfSU5UX0lNQUdFXzJEX0FSUkFZ
ICAgICAgICAgICAgIDB4OTA1RQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfMkQgICAg
ICAgICAgMHg5MDYzCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8zRCAgICAgICAgICAw
eDkwNjQKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX0lNQUdFX0NVQkUgICAgICAgIDB4OTA2Ngor
I2RlZmluZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfMkRfQVJSQVkgICAgMHg5MDY5CisjZGVmaW5l
IEdMX0lNQUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX1RZUEUgMHg5MEM3CisjZGVmaW5lIEdMX0lN
QUdFX0ZPUk1BVF9DT01QQVRJQklMSVRZX0JZX1NJWkUgMHg5MEM4CisjZGVmaW5lIEdMX0lNQUdF
X0ZPUk1BVF9DT01QQVRJQklMSVRZX0JZX0NMQVNTIDB4OTBDOQorI2RlZmluZSBHTF9SRUFEX09O
TFkgICAgICAgICAgICAgICAgICAgICAgMHg4OEI4CisjZGVmaW5lIEdMX1dSSVRFX09OTFkgICAg
ICAgICAgICAgICAgICAgICAweDg4QjkKKyNkZWZpbmUgR0xfUkVBRF9XUklURSAgICAgICAgICAg
ICAgICAgICAgIDB4ODhCQQorI2RlZmluZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVIgICAgICAg
ICAgMHg5MEQyCisjZGVmaW5lIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HICAweDkw
RDMKKyNkZWZpbmUgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NUQVJUICAgIDB4OTBENAorI2Rl
ZmluZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfU0laRSAgICAgMHg5MEQ1CisjZGVmaW5lIEdM
X01BWF9WRVJURVhfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIDB4OTBENgorI2RlZmluZSBHTF9NQVhf
RlJBR01FTlRfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIDB4OTBEQQorI2RlZmluZSBHTF9NQVhfQ09N
UFVURV9TSEFERVJfU1RPUkFHRV9CTE9DS1MgMHg5MERCCisjZGVmaW5lIEdMX01BWF9DT01CSU5F
RF9TSEFERVJfU1RPUkFHRV9CTE9DS1MgMHg5MERDCisjZGVmaW5lIEdMX01BWF9TSEFERVJfU1RP
UkFHRV9CVUZGRVJfQklORElOR1MgMHg5MERECisjZGVmaW5lIEdMX01BWF9TSEFERVJfU1RPUkFH
RV9CTE9DS19TSVpFICAweDkwREUKKyNkZWZpbmUgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX09G
RlNFVF9BTElHTk1FTlQgMHg5MERGCisjZGVmaW5lIEdMX1NIQURFUl9TVE9SQUdFX0JBUlJJRVJf
QklUICAgICAweDAwMDAyMDAwCisjZGVmaW5lIEdMX01BWF9DT01CSU5FRF9TSEFERVJfT1VUUFVU
X1JFU09VUkNFUyAweDhGMzkKKyNkZWZpbmUgR0xfREVQVEhfU1RFTkNJTF9URVhUVVJFX01PREUg
ICAgIDB4OTBFQQorI2RlZmluZSBHTF9TVEVOQ0lMX0lOREVYICAgICAgICAgICAgICAgICAgMHgx
OTAxCisjZGVmaW5lIEdMX01JTl9QUk9HUkFNX1RFWFRVUkVfR0FUSEVSX09GRlNFVCAweDhFNUUK
KyNkZWZpbmUgR0xfTUFYX1BST0dSQU1fVEVYVFVSRV9HQVRIRVJfT0ZGU0VUIDB4OEU1RgorI2Rl
ZmluZSBHTF9TQU1QTEVfUE9TSVRJT04gICAgICAgICAgICAgICAgMHg4RTUwCisjZGVmaW5lIEdM
X1NBTVBMRV9NQVNLICAgICAgICAgICAgICAgICAgICAweDhFNTEKKyNkZWZpbmUgR0xfU0FNUExF
X01BU0tfVkFMVUUgICAgICAgICAgICAgIDB4OEU1MgorI2RlZmluZSBHTF9URVhUVVJFXzJEX01V
TFRJU0FNUExFICAgICAgICAgMHg5MTAwCisjZGVmaW5lIEdMX01BWF9TQU1QTEVfTUFTS19XT1JE
UyAgICAgICAgICAweDhFNTkKKyNkZWZpbmUgR0xfTUFYX0NPTE9SX1RFWFRVUkVfU0FNUExFUyAg
ICAgIDB4OTEwRQorI2RlZmluZSBHTF9NQVhfREVQVEhfVEVYVFVSRV9TQU1QTEVTICAgICAgMHg5
MTBGCisjZGVmaW5lIEdMX01BWF9JTlRFR0VSX1NBTVBMRVMgICAgICAgICAgICAweDkxMTAKKyNk
ZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzJEX01VTFRJU0FNUExFIDB4OTEwNAorI2RlZmluZSBH
TF9URVhUVVJFX1NBTVBMRVMgICAgICAgICAgICAgICAgMHg5MTA2CisjZGVmaW5lIEdMX1RFWFRV
UkVfRklYRURfU0FNUExFX0xPQ0FUSU9OUyAweDkxMDcKKyNkZWZpbmUgR0xfVEVYVFVSRV9XSURU
SCAgICAgICAgICAgICAgICAgIDB4MTAwMAorI2RlZmluZSBHTF9URVhUVVJFX0hFSUdIVCAgICAg
ICAgICAgICAgICAgMHgxMDAxCisjZGVmaW5lIEdMX1RFWFRVUkVfREVQVEggICAgICAgICAgICAg
ICAgICAweDgwNzEKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQgICAgICAgIDB4
MTAwMworI2RlZmluZSBHTF9URVhUVVJFX1JFRF9TSVpFICAgICAgICAgICAgICAgMHg4MDVDCisj
ZGVmaW5lIEdMX1RFWFRVUkVfR1JFRU5fU0laRSAgICAgICAgICAgICAweDgwNUQKKyNkZWZpbmUg
R0xfVEVYVFVSRV9CTFVFX1NJWkUgICAgICAgICAgICAgIDB4ODA1RQorI2RlZmluZSBHTF9URVhU
VVJFX0FMUEhBX1NJWkUgICAgICAgICAgICAgMHg4MDVGCisjZGVmaW5lIEdMX1RFWFRVUkVfREVQ
VEhfU0laRSAgICAgICAgICAgICAweDg4NEEKKyNkZWZpbmUgR0xfVEVYVFVSRV9TVEVOQ0lMX1NJ
WkUgICAgICAgICAgIDB4ODhGMQorI2RlZmluZSBHTF9URVhUVVJFX1NIQVJFRF9TSVpFICAgICAg
ICAgICAgMHg4QzNGCisjZGVmaW5lIEdMX1RFWFRVUkVfUkVEX1RZUEUgICAgICAgICAgICAgICAw
eDhDMTAKKyNkZWZpbmUgR0xfVEVYVFVSRV9HUkVFTl9UWVBFICAgICAgICAgICAgIDB4OEMxMQor
I2RlZmluZSBHTF9URVhUVVJFX0JMVUVfVFlQRSAgICAgICAgICAgICAgMHg4QzEyCisjZGVmaW5l
IEdMX1RFWFRVUkVfQUxQSEFfVFlQRSAgICAgICAgICAgICAweDhDMTMKKyNkZWZpbmUgR0xfVEVY
VFVSRV9ERVBUSF9UWVBFICAgICAgICAgICAgIDB4OEMxNgorI2RlZmluZSBHTF9URVhUVVJFX0NP
TVBSRVNTRUQgICAgICAgICAgICAgMHg4NkExCisjZGVmaW5lIEdMX1NBTVBMRVJfMkRfTVVMVElT
QU1QTEUgICAgICAgICAweDkxMDgKKyNkZWZpbmUgR0xfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1Q
TEUgICAgIDB4OTEwOQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNB
TVBMRSAweDkxMEEKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HICAgICAgICAgIDB4
ODJENAorI2RlZmluZSBHTF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVCAgMHg4MkQ1Cisj
ZGVmaW5lIEdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1IgICAgICAgICAweDgyRDYKKyNkZWZpbmUg
R0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUICAgICAgICAgIDB4ODJENworI2RlZmluZSBHTF9WRVJU
RVhfQklORElOR19TVFJJREUgICAgICAgICAgMHg4MkQ4CisjZGVmaW5lIEdMX1ZFUlRFWF9CSU5E
SU5HX0JVRkZFUiAgICAgICAgICAweDhGNEYKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9BVFRSSUJf
UkVMQVRJVkVfT0ZGU0VUIDB4ODJEOQorI2RlZmluZSBHTF9NQVhfVkVSVEVYX0FUVFJJQl9CSU5E
SU5HUyAgICAgMHg4MkRBCisjZGVmaW5lIEdMX01BWF9WRVJURVhfQVRUUklCX1NUUklERSAgICAg
ICAweDgyRTUKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTUEFUQ0hDT01QVVRF
UFJPQykgKEdMdWludCBudW1fZ3JvdXBzX3gsIEdMdWludCBudW1fZ3JvdXBzX3ksIEdMdWludCBu
dW1fZ3JvdXBzX3opOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xESVNQQVRDSENP
TVBVVEVJTkRJUkVDVFBST0MpIChHTGludHB0ciBpbmRpcmVjdCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTERSQVdBUlJBWVNJTkRJUkVDVFBST0MpIChHTGVudW0gbW9kZSwgY29u
c3Qgdm9pZCAqaW5kaXJlY3QpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFX
RUxFTUVOVFNJTkRJUkVDVFBST0MpIChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQgKmluZGlyZWN0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZG
RVJQQVJBTUVURVJJUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFy
YW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGUkFNRUJVRkZFUlBBUkFN
RVRFUklWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1JTlRFUkZBQ0VJVlBS
T0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIEdMdWludCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
UFJPR1JBTVJFU09VUkNFSU5ERVhQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwcm9ncmFt
SW50ZXJmYWNlLCBjb25zdCBHTGNoYXIgKm5hbWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xHRVRQUk9HUkFNUkVTT1VSQ0VOQU1FUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgR0xjaGFyICpuYW1lKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUUFJPR1JBTVJFU09VUkNFSVZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwcm9n
cmFtSW50ZXJmYWNlLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgcHJvcENvdW50LCBjb25zdCBHTGVu
dW0gKnByb3BzLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFt
cyk7Cit0eXBlZGVmIEdMaW50IChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNUkVTT1VSQ0VM
T0NBVElPTlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIGNv
bnN0IEdMY2hhciAqbmFtZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVTRVBS
T0dSQU1TVEFHRVNQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTGJpdGZpZWxkIHN0YWdlcywgR0x1
aW50IHByb2dyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xBQ1RJVkVTSEFE
RVJQUk9HUkFNUFJPQykgKEdMdWludCBwaXBlbGluZSwgR0x1aW50IHByb2dyYW0pOwordHlwZWRl
ZiBHTHVpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTENSRUFURVNIQURFUlBST0dSQU1WUFJPQykgKEdM
ZW51bSB0eXBlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKmNvbnN0KnN0cmluZ3MpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EUFJPR1JBTVBJUEVMSU5FUFJPQykg
KEdMdWludCBwaXBlbGluZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVU
RVBST0dSQU1QSVBFTElORVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5l
cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlBST0dSQU1QSVBFTElORVNQ
Uk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAo
R0xfQVBJRU5UUllQIFBGTkdMSVNQUk9HUkFNUElQRUxJTkVQUk9DKSAoR0x1aW50IHBpcGVsaW5l
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUFJPR1JBTVBJUEVMSU5FSVZQ
Uk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFJUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjApOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJJUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zSVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRJUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxLCBHTGludCB2MiwgR0xpbnQgdjMpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFVSVBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMlVJUFJPQykgKEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNVSVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRVSVBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxLCBHTHVpbnQgdjIsIEdM
dWludCB2Myk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JN
MUZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0yRlBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNGUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSwgR0xmbG9h
dCB2Mik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNEZQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0
IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0IHYzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk0xSVZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJJVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0lWUFJPQykgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00SVZQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFN
VU5JRk9STTFVSVZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTHVpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk0yVUlWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM1VJVlBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdmFsdWUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTRVSVZQUk9DKSAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZP
Uk0xRlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFBST0dSQU1VTklGT1JNMkZWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNGVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00RlZQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNTUFU
UklYMkZWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STU1BVFJJWDNGVlBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVg0RlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklG
T1JNTUFUUklYMlgzRlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNTUFUUklYM1gyRlZQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNTUFUUklYMlg0RlZQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFBST0dSQU1VTklGT1JNTUFUUklYNFgyRlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JN
TUFUUklYM1g0RlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNTUFUUklYNFgzRlZQUk9D
KSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFZBTElEQVRFUFJPR1JBTVBJUEVMSU5FUFJPQykgKEdMdWludCBwaXBlbGlu
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1QSVBFTElORUlO
Rk9MT0dQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0xjaGFyICppbmZvTG9nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
QklORElNQUdFVEVYVFVSRVBST0MpIChHTHVpbnQgdW5pdCwgR0x1aW50IHRleHR1cmUsIEdMaW50
IGxldmVsLCBHTGJvb2xlYW4gbGF5ZXJlZCwgR0xpbnQgbGF5ZXIsIEdMZW51bSBhY2Nlc3MsIEdM
ZW51bSBmb3JtYXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRCT09MRUFO
SV9WUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTUVNT1JZQkFSUklFUlBST0MpIChHTGJp
dGZpZWxkIGJhcnJpZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTUVNT1JZ
QkFSUklFUkJZUkVHSU9OUFJPQykgKEdMYml0ZmllbGQgYmFycmllcnMpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xURVhTVE9SQUdFMkRNVUxUSVNBTVBMRVBST0MpIChHTGVudW0g
dGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE1VTFRJU0FNUExFRlZQUk9DKSAoR0xl
bnVtIHBuYW1lLCBHTHVpbnQgaW5kZXgsIEdMZmxvYXQgKnZhbCk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFNBTVBMRU1BU0tJUFJPQykgKEdMdWludCBtYXNrTnVtYmVyLCBHTGJp
dGZpZWxkIG1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhMRVZF
TFBBUkFNRVRFUklWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5h
bWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRU
RVhMRVZFTFBBUkFNRVRFUkZWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEJJTkRWRVJURVhCVUZGRVJQUk9DKSAoR0x1aW50IGJpbmRpbmdpbmRleCwgR0x1aW50IGJ1
ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpIHN0cmlkZSk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQkZPUk1BVFBST0MpIChHTHVpbnQgYXR0cmliaW5k
ZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0x1aW50
IHJlbGF0aXZlb2Zmc2V0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVY
QVRUUklCSUZPUk1BVFBST0MpIChHTHVpbnQgYXR0cmliaW5kZXgsIEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLCBHTHVpbnQgcmVsYXRpdmVvZmZzZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xWRVJURVhBVFRSSUJCSU5ESU5HUFJPQykgKEdMdWludCBhdHRyaWJpbmRleCwgR0x1
aW50IGJpbmRpbmdpbmRleCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZFUlRF
WEJJTkRJTkdESVZJU09SUFJPQykgKEdMdWludCBiaW5kaW5naW5kZXgsIEdMdWludCBkaXZpc29y
KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xEaXNwYXRjaENvbXB1dGUgKEdMdWludCBudW1fZ3JvdXBzX3gsIEdMdWludCBudW1fZ3Jv
dXBzX3ksIEdMdWludCBudW1fZ3JvdXBzX3opOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRGlzcGF0Y2hDb21wdXRlSW5kaXJlY3QgKEdMaW50cHRyIGluZGlyZWN0KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdBcnJheXNJbmRpcmVjdCAoR0xlbnVtIG1vZGUsIGNv
bnN0IHZvaWQgKmluZGlyZWN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERyYXdF
bGVtZW50c0luZGlyZWN0IChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmlu
ZGlyZWN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyUGFyYW1l
dGVyaSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2IChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUludGVyZmFjZWl2IChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVt
IHByb2dyYW1JbnRlcmZhY2UsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElD
QUxMIEdMdWludCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1SZXNvdXJjZUluZGV4IChHTHVpbnQg
cHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIGNvbnN0IEdMY2hhciAqbmFtZSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUmVzb3VyY2VOYW1lIChHTHVp
bnQgcHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIEdMdWludCBpbmRleCwgR0xzaXpl
aSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbmFtZSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUmVzb3VyY2VpdiAoR0x1aW50IHByb2dyYW0sIEdM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgcHJvcENvdW50LCBj
b25zdCBHTGVudW0gKnByb3BzLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xp
bnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIEdMaW50IEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbVJl
c291cmNlTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwg
Y29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVzZVBy
b2dyYW1TdGFnZXMgKEdMdWludCBwaXBlbGluZSwgR0xiaXRmaWVsZCBzdGFnZXMsIEdMdWludCBw
cm9ncmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEFjdGl2ZVNoYWRlclByb2dy
YW0gKEdMdWludCBwaXBlbGluZSwgR0x1aW50IHByb2dyYW0pOworR0xfQVBJQ0FMTCBHTHVpbnQg
R0xfQVBJRU5UUlkgZ2xDcmVhdGVTaGFkZXJQcm9ncmFtdiAoR0xlbnVtIHR5cGUsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMY2hhciAqY29uc3Qqc3RyaW5ncyk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xCaW5kUHJvZ3JhbVBpcGVsaW5lIChHTHVpbnQgcGlwZWxpbmUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUHJvZ3JhbVBpcGVsaW5lcyAoR0xzaXplaSBu
LCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZW5Qcm9ncmFtUGlwZWxpbmVzIChHTHNpemVpIG4sIEdMdWludCAqcGlwZWxpbmVzKTsKK0dM
X0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNQcm9ncmFtUGlwZWxpbmUgKEdMdWlu
dCBwaXBlbGluZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUGlw
ZWxpbmVpdiAoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0xaSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24s
IEdMaW50IHYwLCBHTGludCB2MSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybTNpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBH
TGludCB2MSwgR0xpbnQgdjIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3Jh
bVVuaWZvcm00aSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xp
bnQgdjEsIEdMaW50IHYyLCBHTGludCB2Myk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xQcm9ncmFtVW5pZm9ybTF1aSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgdjApOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0ydWkg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zdWkgKEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2Mik7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTR1aSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgdjAsIEdMdWludCB2MSwgR0x1aW50IHYy
LCBHTHVpbnQgdjMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZv
cm0xZiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMmYgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB2MCwgR0xmbG9hdCB2MSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNmIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm00ZiAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyLCBHTGZsb2F0
IHYzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWl2IChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJp
diAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZv
cm0zaXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1V
bmlmb3JtNGl2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybTF1aXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xQcm9ncmFtVW5pZm9ybTJ1aXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTN1aXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTR1aXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFmdiAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJmdiAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNmdiAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRmdiAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9y
bU1hdHJpeDJmdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdiAoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybU1hdHJpeDRmdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2IChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1N
YXRyaXgyeDRmdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2IChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNm
diAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xWYWxpZGF0ZVByb2dyYW1QaXBlbGluZSAoR0x1aW50IHBpcGVsaW5lKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2cgKEdM
dWludCBwaXBlbGluZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAq
aW5mb0xvZyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kSW1hZ2VUZXh0dXJl
IChHTHVpbnQgdW5pdCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGJvb2xlYW4gbGF5
ZXJlZCwgR0xpbnQgbGF5ZXIsIEdMZW51bSBhY2Nlc3MsIEdMZW51bSBmb3JtYXQpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0Qm9vbGVhbmlfdiAoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsTWVtb3J5QmFycmllciAoR0xiaXRmaWVsZCBiYXJyaWVycyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xNZW1vcnlCYXJyaWVyQnlSZWdpb24gKEdMYml0ZmllbGQgYmFycmllcnMp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUg
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRp
b25zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldE11bHRpc2FtcGxlZnYgKEdM
ZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsU2FtcGxlTWFza2kgKEdMdWludCBtYXNrTnVtYmVyLCBHTGJpdGZpZWxk
IG1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdiAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhMZXZlbFBhcmFtZXRl
cmZ2IChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpw
YXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmluZFZlcnRleEJ1ZmZlciAo
R0x1aW50IGJpbmRpbmdpbmRleCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNp
emVpIHN0cmlkZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJG
b3JtYXQgKEdMdWludCBhdHRyaWJpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9v
bGVhbiBub3JtYWxpemVkLCBHTHVpbnQgcmVsYXRpdmVvZmZzZXQpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliSUZvcm1hdCAoR0x1aW50IGF0dHJpYmluZGV4LCBH
TGludCBzaXplLCBHTGVudW0gdHlwZSwgR0x1aW50IHJlbGF0aXZlb2Zmc2V0KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYkJpbmRpbmcgKEdMdWludCBhdHRyaWJp
bmRleCwgR0x1aW50IGJpbmRpbmdpbmRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xWZXJ0ZXhCaW5kaW5nRGl2aXNvciAoR0x1aW50IGJpbmRpbmdpbmRleCwgR0x1aW50IGRpdmlz
b3IpOworI2VuZGlmCisjZW5kaWYgLyogR0xfRVNfVkVSU0lPTl8zXzEgKi8KKworI2lmbmRlZiBH
TF9FU19WRVJTSU9OXzNfMgorI2RlZmluZSBHTF9FU19WRVJTSU9OXzNfMiAxCit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZICAqR0xERUJVR1BST0MpKEdMZW51bSBzb3VyY2UsR0xlbnVtIHR5cGUs
R0x1aW50IGlkLEdMZW51bSBzZXZlcml0eSxHTHNpemVpIGxlbmd0aCxjb25zdCBHTGNoYXIgKm1l
c3NhZ2UsY29uc3Qgdm9pZCAqdXNlclBhcmFtKTsKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfTElO
RV9XSURUSF9SQU5HRSAgIDB4OTM4MQorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9MSU5FX1dJRFRI
X0dSQU5VTEFSSVRZIDB4OTM4MgorI2RlZmluZSBHTF9NVUxUSVBMWSAgICAgICAgICAgICAgICAg
ICAgICAgMHg5Mjk0CisjZGVmaW5lIEdMX1NDUkVFTiAgICAgICAgICAgICAgICAgICAgICAgICAw
eDkyOTUKKyNkZWZpbmUgR0xfT1ZFUkxBWSAgICAgICAgICAgICAgICAgICAgICAgIDB4OTI5Ngor
I2RlZmluZSBHTF9EQVJLRU4gICAgICAgICAgICAgICAgICAgICAgICAgMHg5Mjk3CisjZGVmaW5l
IEdMX0xJR0hURU4gICAgICAgICAgICAgICAgICAgICAgICAweDkyOTgKKyNkZWZpbmUgR0xfQ09M
T1JET0RHRSAgICAgICAgICAgICAgICAgICAgIDB4OTI5OQorI2RlZmluZSBHTF9DT0xPUkJVUk4g
ICAgICAgICAgICAgICAgICAgICAgMHg5MjlBCisjZGVmaW5lIEdMX0hBUkRMSUdIVCAgICAgICAg
ICAgICAgICAgICAgICAweDkyOUIKKyNkZWZpbmUgR0xfU09GVExJR0hUICAgICAgICAgICAgICAg
ICAgICAgIDB4OTI5QworI2RlZmluZSBHTF9ESUZGRVJFTkNFICAgICAgICAgICAgICAgICAgICAg
MHg5MjlFCisjZGVmaW5lIEdMX0VYQ0xVU0lPTiAgICAgICAgICAgICAgICAgICAgICAweDkyQTAK
KyNkZWZpbmUgR0xfSFNMX0hVRSAgICAgICAgICAgICAgICAgICAgICAgIDB4OTJBRAorI2RlZmlu
ZSBHTF9IU0xfU0FUVVJBVElPTiAgICAgICAgICAgICAgICAgMHg5MkFFCisjZGVmaW5lIEdMX0hT
TF9DT0xPUiAgICAgICAgICAgICAgICAgICAgICAweDkyQUYKKyNkZWZpbmUgR0xfSFNMX0xVTUlO
T1NJVFkgICAgICAgICAgICAgICAgIDB4OTJCMAorI2RlZmluZSBHTF9ERUJVR19PVVRQVVRfU1lO
Q0hST05PVVMgICAgICAgMHg4MjQyCisjZGVmaW5lIEdMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NB
R0VfTEVOR1RIIDB4ODI0MworI2RlZmluZSBHTF9ERUJVR19DQUxMQkFDS19GVU5DVElPTiAgICAg
ICAgMHg4MjQ0CisjZGVmaW5lIEdMX0RFQlVHX0NBTExCQUNLX1VTRVJfUEFSQU0gICAgICAweDgy
NDUKKyNkZWZpbmUgR0xfREVCVUdfU09VUkNFX0FQSSAgICAgICAgICAgICAgIDB4ODI0NgorI2Rl
ZmluZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTSAgICAgMHg4MjQ3CisjZGVmaW5lIEdM
X0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIgICAweDgyNDgKKyNkZWZpbmUgR0xfREVCVUdf
U09VUkNFX1RISVJEX1BBUlRZICAgICAgIDB4ODI0OQorI2RlZmluZSBHTF9ERUJVR19TT1VSQ0Vf
QVBQTElDQVRJT04gICAgICAgMHg4MjRBCisjZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9PVEhFUiAg
ICAgICAgICAgICAweDgyNEIKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9FUlJPUiAgICAgICAgICAg
ICAgIDB4ODI0QworI2RlZmluZSBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1IgMHg4
MjRECisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SICAweDgyNEUKKyNk
ZWZpbmUgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSAgICAgICAgIDB4ODI0RgorI2RlZmluZSBH
TF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFICAgICAgICAgMHg4MjUwCisjZGVmaW5lIEdMX0RFQlVH
X1RZUEVfT1RIRVIgICAgICAgICAgICAgICAweDgyNTEKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9N
QVJLRVIgICAgICAgICAgICAgIDB4ODI2OAorI2RlZmluZSBHTF9ERUJVR19UWVBFX1BVU0hfR1JP
VVAgICAgICAgICAgMHg4MjY5CisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfUE9QX0dST1VQICAgICAg
ICAgICAweDgyNkEKKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OICAgIDB4
ODI2QgorI2RlZmluZSBHTF9NQVhfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEggICAgMHg4MjZDCisj
ZGVmaW5lIEdMX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIICAgICAgICAweDgyNkQKKyNkZWZpbmUg
R0xfQlVGRkVSICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODJFMAorI2RlZmluZSBHTF9TSEFE
RVIgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MkUxCisjZGVmaW5lIEdMX1BST0dSQU0gICAg
ICAgICAgICAgICAgICAgICAgICAweDgyRTIKKyNkZWZpbmUgR0xfVkVSVEVYX0FSUkFZICAgICAg
ICAgICAgICAgICAgIDB4ODA3NAorI2RlZmluZSBHTF9RVUVSWSAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MkUzCisjZGVmaW5lIEdMX1BST0dSQU1fUElQRUxJTkUgICAgICAgICAgICAgICAw
eDgyRTQKKyNkZWZpbmUgR0xfU0FNUExFUiAgICAgICAgICAgICAgICAgICAgICAgIDB4ODJFNgor
I2RlZmluZSBHTF9NQVhfTEFCRUxfTEVOR1RIICAgICAgICAgICAgICAgMHg4MkU4CisjZGVmaW5l
IEdMX01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCAgICAgICAweDkxNDMKKyNkZWZpbmUgR0xfTUFY
X0RFQlVHX0xPR0dFRF9NRVNTQUdFUyAgICAgIDB4OTE0NAorI2RlZmluZSBHTF9ERUJVR19MT0dH
RURfTUVTU0FHRVMgICAgICAgICAgMHg5MTQ1CisjZGVmaW5lIEdMX0RFQlVHX1NFVkVSSVRZX0hJ
R0ggICAgICAgICAgICAweDkxNDYKKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNICAg
ICAgICAgIDB4OTE0NworI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9MT1cgICAgICAgICAgICAg
MHg5MTQ4CisjZGVmaW5lIEdMX0RFQlVHX09VVFBVVCAgICAgICAgICAgICAgICAgICAweDkyRTAK
KyNkZWZpbmUgR0xfQ09OVEVYVF9GTEFHX0RFQlVHX0JJVCAgICAgICAgIDB4MDAwMDAwMDIKKyNk
ZWZpbmUgR0xfU1RBQ0tfT1ZFUkZMT1cgICAgICAgICAgICAgICAgIDB4MDUwMworI2RlZmluZSBH
TF9TVEFDS19VTkRFUkZMT1cgICAgICAgICAgICAgICAgMHgwNTA0CisjZGVmaW5lIEdMX0dFT01F
VFJZX1NIQURFUiAgICAgICAgICAgICAgICAweDhERDkKKyNkZWZpbmUgR0xfR0VPTUVUUllfU0hB
REVSX0JJVCAgICAgICAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgR0xfR0VPTUVUUllfVkVSVElD
RVNfT1VUICAgICAgICAgIDB4ODkxNgorI2RlZmluZSBHTF9HRU9NRVRSWV9JTlBVVF9UWVBFICAg
ICAgICAgICAgMHg4OTE3CisjZGVmaW5lIEdMX0dFT01FVFJZX09VVFBVVF9UWVBFICAgICAgICAg
ICAweDg5MTgKKyNkZWZpbmUgR0xfR0VPTUVUUllfU0hBREVSX0lOVk9DQVRJT05TICAgIDB4ODg3
RgorI2RlZmluZSBHTF9MQVlFUl9QUk9WT0tJTkdfVkVSVEVYICAgICAgICAgMHg4MjVFCisjZGVm
aW5lIEdMX0xJTkVTX0FESkFDRU5DWSAgICAgICAgICAgICAgICAweDAwMEEKKyNkZWZpbmUgR0xf
TElORV9TVFJJUF9BREpBQ0VOQ1kgICAgICAgICAgIDB4MDAwQgorI2RlZmluZSBHTF9UUklBTkdM
RVNfQURKQUNFTkNZICAgICAgICAgICAgMHgwMDBDCisjZGVmaW5lIEdMX1RSSUFOR0xFX1NUUklQ
X0FESkFDRU5DWSAgICAgICAweDAwMEQKKyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1f
Q09NUE9ORU5UUyAweDhEREYKKyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX1VOSUZPUk1fQkxPQ0tT
ICAgIDB4OEEyQworI2RlZmluZSBHTF9NQVhfQ09NQklORURfR0VPTUVUUllfVU5JRk9STV9DT01Q
T05FTlRTIDB4OEEzMgorI2RlZmluZSBHTF9NQVhfR0VPTUVUUllfSU5QVVRfQ09NUE9ORU5UUyAg
MHg5MTIzCisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9PVVRQVVRfQ09NUE9ORU5UUyAweDkxMjQK
KyNkZWZpbmUgR0xfTUFYX0dFT01FVFJZX09VVFBVVF9WRVJUSUNFUyAgIDB4OERFMAorI2RlZmlu
ZSBHTF9NQVhfR0VPTUVUUllfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgMHg4REUxCisjZGVmaW5l
IEdMX01BWF9HRU9NRVRSWV9TSEFERVJfSU5WT0NBVElPTlMgMHg4RTVBCisjZGVmaW5lIEdMX01B
WF9HRU9NRVRSWV9URVhUVVJFX0lNQUdFX1VOSVRTIDB4OEMyOQorI2RlZmluZSBHTF9NQVhfR0VP
TUVUUllfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyAweDkyQ0YKKyNkZWZpbmUgR0xfTUFYX0dFT01F
VFJZX0FUT01JQ19DT1VOVEVSUyAgIDB4OTJENQorI2RlZmluZSBHTF9NQVhfR0VPTUVUUllfSU1B
R0VfVU5JRk9STVMgICAgMHg5MENECisjZGVmaW5lIEdMX01BWF9HRU9NRVRSWV9TSEFERVJfU1RP
UkFHRV9CTE9DS1MgMHg5MEQ3CisjZGVmaW5lIEdMX0ZJUlNUX1ZFUlRFWF9DT05WRU5USU9OICAg
ICAgICAweDhFNEQKKyNkZWZpbmUgR0xfTEFTVF9WRVJURVhfQ09OVkVOVElPTiAgICAgICAgIDB4
OEU0RQorI2RlZmluZSBHTF9VTkRFRklORURfVkVSVEVYICAgICAgICAgICAgICAgMHg4MjYwCisj
ZGVmaW5lIEdMX1BSSU1JVElWRVNfR0VORVJBVEVEICAgICAgICAgICAweDhDODcKKyNkZWZpbmUg
R0xfRlJBTUVCVUZGRVJfREVGQVVMVF9MQVlFUlMgICAgIDB4OTMxMgorI2RlZmluZSBHTF9NQVhf
RlJBTUVCVUZGRVJfTEFZRVJTICAgICAgICAgMHg5MzE3CisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfTEFZRVJfVEFSR0VUUyAweDhEQTgKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9MQVlFUkVEIDB4OERBNworI2RlZmluZSBHTF9SRUZFUkVOQ0VEX0JZX0dFT01F
VFJZX1NIQURFUiAgMHg5MzA5CisjZGVmaW5lIEdMX1BSSU1JVElWRV9CT1VORElOR19CT1ggICAg
ICAgICAweDkyQkUKKyNkZWZpbmUgR0xfQ09OVEVYVF9GTEFHX1JPQlVTVF9BQ0NFU1NfQklUIDB4
MDAwMDAwMDQKKyNkZWZpbmUgR0xfQ09OVEVYVF9GTEFHUyAgICAgICAgICAgICAgICAgIDB4ODIx
RQorI2RlZmluZSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVQgICAgICAgICAgMHg4MjUyCisjZGVm
aW5lIEdMX0dVSUxUWV9DT05URVhUX1JFU0VUICAgICAgICAgICAweDgyNTMKKyNkZWZpbmUgR0xf
SU5OT0NFTlRfQ09OVEVYVF9SRVNFVCAgICAgICAgIDB4ODI1NAorI2RlZmluZSBHTF9VTktOT1dO
X0NPTlRFWFRfUkVTRVQgICAgICAgICAgMHg4MjU1CisjZGVmaW5lIEdMX1JFU0VUX05PVElGSUNB
VElPTl9TVFJBVEVHWSAgICAweDgyNTYKKyNkZWZpbmUgR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9O
ICAgICAgICAgIDB4ODI2MQorI2RlZmluZSBHTF9DT05URVhUX0xPU1QgICAgICAgICAgICAgICAg
ICAgMHgwNTA3CisjZGVmaW5lIEdMX1NBTVBMRV9TSEFESU5HICAgICAgICAgICAgICAgICAweDhD
MzYKKyNkZWZpbmUgR0xfTUlOX1NBTVBMRV9TSEFESU5HX1ZBTFVFICAgICAgIDB4OEMzNworI2Rl
ZmluZSBHTF9NSU5fRlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVQgMHg4RTVCCisjZGVmaW5l
IEdMX01BWF9GUkFHTUVOVF9JTlRFUlBPTEFUSU9OX09GRlNFVCAweDhFNUMKKyNkZWZpbmUgR0xf
RlJBR01FTlRfSU5URVJQT0xBVElPTl9PRkZTRVRfQklUUyAweDhFNUQKKyNkZWZpbmUgR0xfUEFU
Q0hFUyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRQorI2RlZmluZSBHTF9QQVRDSF9WRVJU
SUNFUyAgICAgICAgICAgICAgICAgMHg4RTcyCisjZGVmaW5lIEdMX1RFU1NfQ09OVFJPTF9PVVRQ
VVRfVkVSVElDRVMgICAweDhFNzUKKyNkZWZpbmUgR0xfVEVTU19HRU5fTU9ERSAgICAgICAgICAg
ICAgICAgIDB4OEU3NgorI2RlZmluZSBHTF9URVNTX0dFTl9TUEFDSU5HICAgICAgICAgICAgICAg
MHg4RTc3CisjZGVmaW5lIEdMX1RFU1NfR0VOX1ZFUlRFWF9PUkRFUiAgICAgICAgICAweDhFNzgK
KyNkZWZpbmUgR0xfVEVTU19HRU5fUE9JTlRfTU9ERSAgICAgICAgICAgIDB4OEU3OQorI2RlZmlu
ZSBHTF9JU09MSU5FUyAgICAgICAgICAgICAgICAgICAgICAgMHg4RTdBCisjZGVmaW5lIEdMX1FV
QURTICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDcKKyNkZWZpbmUgR0xfRlJBQ1RJT05B
TF9PREQgICAgICAgICAgICAgICAgIDB4OEU3QgorI2RlZmluZSBHTF9GUkFDVElPTkFMX0VWRU4g
ICAgICAgICAgICAgICAgMHg4RTdDCisjZGVmaW5lIEdMX01BWF9QQVRDSF9WRVJUSUNFUyAgICAg
ICAgICAgICAweDhFN0QKKyNkZWZpbmUgR0xfTUFYX1RFU1NfR0VOX0xFVkVMICAgICAgICAgICAg
IDB4OEU3RQorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUyAw
eDhFN0YKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMg
MHg4RTgwCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfVEVYVFVSRV9JTUFHRV9VTklUUyAw
eDhFODEKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9URVhUVVJFX0lNQUdFX1VOSVRT
IDB4OEU4MgorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX09VVFBVVF9DT01QT05FTlRTIDB4
OEU4MworI2RlZmluZSBHTF9NQVhfVEVTU19QQVRDSF9DT01QT05FTlRTICAgICAgMHg4RTg0Cisj
ZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfVE9UQUxfT1VUUFVUX0NPTVBPTkVOVFMgMHg4RTg1
CisjZGVmaW5lIEdMX01BWF9URVNTX0VWQUxVQVRJT05fT1VUUFVUX0NPTVBPTkVOVFMgMHg4RTg2
CisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfVU5JRk9STV9CTE9DS1MgMHg4RTg5CisjZGVm
aW5lIEdMX01BWF9URVNTX0VWQUxVQVRJT05fVU5JRk9STV9CTE9DS1MgMHg4RThBCisjZGVmaW5l
IEdMX01BWF9URVNTX0NPTlRST0xfSU5QVVRfQ09NUE9ORU5UUyAweDg4NkMKKyNkZWZpbmUgR0xf
TUFYX1RFU1NfRVZBTFVBVElPTl9JTlBVVF9DT01QT05FTlRTIDB4ODg2RAorI2RlZmluZSBHTF9N
QVhfQ09NQklORURfVEVTU19DT05UUk9MX1VOSUZPUk1fQ09NUE9ORU5UUyAweDhFMUUKKyNkZWZp
bmUgR0xfTUFYX0NPTUJJTkVEX1RFU1NfRVZBTFVBVElPTl9VTklGT1JNX0NPTVBPTkVOVFMgMHg4
RTFGCisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSUyAw
eDkyQ0QKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUl9CVUZG
RVJTIDB4OTJDRQorI2RlZmluZSBHTF9NQVhfVEVTU19DT05UUk9MX0FUT01JQ19DT1VOVEVSUyAw
eDkyRDMKKyNkZWZpbmUgR0xfTUFYX1RFU1NfRVZBTFVBVElPTl9BVE9NSUNfQ09VTlRFUlMgMHg5
MkQ0CisjZGVmaW5lIEdMX01BWF9URVNTX0NPTlRST0xfSU1BR0VfVU5JRk9STVMgMHg5MENCCisj
ZGVmaW5lIEdMX01BWF9URVNTX0VWQUxVQVRJT05fSU1BR0VfVU5JRk9STVMgMHg5MENDCisjZGVm
aW5lIEdMX01BWF9URVNTX0NPTlRST0xfU0hBREVSX1NUT1JBR0VfQkxPQ0tTIDB4OTBEOAorI2Rl
ZmluZSBHTF9NQVhfVEVTU19FVkFMVUFUSU9OX1NIQURFUl9TVE9SQUdFX0JMT0NLUyAweDkwRDkK
KyNkZWZpbmUgR0xfUFJJTUlUSVZFX1JFU1RBUlRfRk9SX1BBVENIRVNfU1VQUE9SVEVEIDB4ODIy
MQorI2RlZmluZSBHTF9JU19QRVJfUEFUQ0ggICAgICAgICAgICAgICAgICAgMHg5MkU3CisjZGVm
aW5lIEdMX1JFRkVSRU5DRURfQllfVEVTU19DT05UUk9MX1NIQURFUiAweDkzMDcKKyNkZWZpbmUg
R0xfUkVGRVJFTkNFRF9CWV9URVNTX0VWQUxVQVRJT05fU0hBREVSIDB4OTMwOAorI2RlZmluZSBH
TF9URVNTX0NPTlRST0xfU0hBREVSICAgICAgICAgICAgMHg4RTg4CisjZGVmaW5lIEdMX1RFU1Nf
RVZBTFVBVElPTl9TSEFERVIgICAgICAgICAweDhFODcKKyNkZWZpbmUgR0xfVEVTU19DT05UUk9M
X1NIQURFUl9CSVQgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgR0xfVEVTU19FVkFMVUFUSU9O
X1NIQURFUl9CSVQgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgR0xfVEVYVFVSRV9CT1JERVJfQ09M
T1IgICAgICAgICAgIDB4MTAwNAorI2RlZmluZSBHTF9DTEFNUF9UT19CT1JERVIgICAgICAgICAg
ICAgICAgMHg4MTJECisjZGVmaW5lIEdMX1RFWFRVUkVfQlVGRkVSICAgICAgICAgICAgICAgICAw
eDhDMkEKKyNkZWZpbmUgR0xfVEVYVFVSRV9CVUZGRVJfQklORElORyAgICAgICAgIDB4OEMyQQor
I2RlZmluZSBHTF9NQVhfVEVYVFVSRV9CVUZGRVJfU0laRSAgICAgICAgMHg4QzJCCisjZGVmaW5l
IEdMX1RFWFRVUkVfQklORElOR19CVUZGRVIgICAgICAgICAweDhDMkMKKyNkZWZpbmUgR0xfVEVY
VFVSRV9CVUZGRVJfREFUQV9TVE9SRV9CSU5ESU5HIDB4OEMyRAorI2RlZmluZSBHTF9URVhUVVJF
X0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UIDB4OTE5RgorI2RlZmluZSBHTF9TQU1QTEVSX0JVRkZF
UiAgICAgICAgICAgICAgICAgMHg4REMyCisjZGVmaW5lIEdMX0lOVF9TQU1QTEVSX0JVRkZFUiAg
ICAgICAgICAgICAweDhERDAKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQlVGRkVS
ICAgIDB4OEREOAorI2RlZmluZSBHTF9JTUFHRV9CVUZGRVIgICAgICAgICAgICAgICAgICAgMHg5
MDUxCisjZGVmaW5lIEdMX0lOVF9JTUFHRV9CVUZGRVIgICAgICAgICAgICAgICAweDkwNUMKKyNk
ZWZpbmUgR0xfVU5TSUdORURfSU5UX0lNQUdFX0JVRkZFUiAgICAgIDB4OTA2NworI2RlZmluZSBH
TF9URVhUVVJFX0JVRkZFUl9PRkZTRVQgICAgICAgICAgMHg5MTlECisjZGVmaW5lIEdMX1RFWFRV
UkVfQlVGRkVSX1NJWkUgICAgICAgICAgICAweDkxOUUKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfNHg0ICAgICAgIDB4OTNCMAorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q181eDQgICAgICAgMHg5M0IxCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NSAg
ICAgICAweDkzQjIKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1ICAgICAgIDB4
OTNCMworI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDYgICAgICAgMHg5M0I0Cisj
ZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NSAgICAgICAweDkzQjUKKyNkZWZpbmUg
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2ICAgICAgIDB4OTNCNgorI2RlZmluZSBHTF9DT01Q
UkVTU0VEX1JHQkFfQVNUQ184eDggICAgICAgMHg5M0I3CisjZGVmaW5lIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDUgICAgICAweDkzQjgKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4NiAgICAgIDB4OTNCOQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4
ICAgICAgMHg5M0JBCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwICAgICAw
eDkzQkIKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTAgICAgIDB4OTNCQwor
I2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMiAgICAgMHg5M0JECisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0IDB4OTNEMAorI2RlZmluZSBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NCAweDkzRDEKKyNkZWZpbmUgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDUgMHg5M0QyCisjZGVmaW5lIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfNng1IDB4OTNEMworI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzZ4NiAweDkzRDQKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ184eDUgMHg5M0Q1CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfOHg2IDB4OTNENgorI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4
OCAweDkzRDcKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1IDB4
OTNEOAorI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDYgMHg5M0Q5
CisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OCAweDkzREEKKyNk
ZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMCAweDkzREIKKyNkZWZp
bmUgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMCAweDkzREMKKyNkZWZpbmUg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMiAweDkzREQKKyNkZWZpbmUgR0xf
VEVYVFVSRV9DVUJFX01BUF9BUlJBWSAgICAgICAgIDB4OTAwOQorI2RlZmluZSBHTF9URVhUVVJF
X0JJTkRJTkdfQ1VCRV9NQVBfQVJSQVkgMHg5MDBBCisjZGVmaW5lIEdMX1NBTVBMRVJfQ1VCRV9N
QVBfQVJSQVkgICAgICAgICAweDkwMEMKKyNkZWZpbmUgR0xfU0FNUExFUl9DVUJFX01BUF9BUlJB
WV9TSEFET1cgIDB4OTAwRAorI2RlZmluZSBHTF9JTlRfU0FNUExFUl9DVUJFX01BUF9BUlJBWSAg
ICAgMHg5MDBFCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkVfTUFQX0FSUkFZ
IDB4OTAwRgorI2RlZmluZSBHTF9JTUFHRV9DVUJFX01BUF9BUlJBWSAgICAgICAgICAgMHg5MDU0
CisjZGVmaW5lIEdMX0lOVF9JTUFHRV9DVUJFX01BUF9BUlJBWSAgICAgICAweDkwNUYKKyNkZWZp
bmUgR0xfVU5TSUdORURfSU5UX0lNQUdFX0NVQkVfTUFQX0FSUkFZIDB4OTA2QQorI2RlZmluZSBH
TF9URVhUVVJFXzJEX01VTFRJU0FNUExFX0FSUkFZICAgMHg5MTAyCisjZGVmaW5lIEdMX1RFWFRV
UkVfQklORElOR18yRF9NVUxUSVNBTVBMRV9BUlJBWSAweDkxMDUKKyNkZWZpbmUgR0xfU0FNUExF
Ul8yRF9NVUxUSVNBTVBMRV9BUlJBWSAgIDB4OTEwQgorI2RlZmluZSBHTF9JTlRfU0FNUExFUl8y
RF9NVUxUSVNBTVBMRV9BUlJBWSAweDkxMEMKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UX1NBTVBM
RVJfMkRfTVVMVElTQU1QTEVfQVJSQVkgMHg5MTBECit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEJMRU5EQkFSUklFUlBST0MpICh2b2lkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMQ09QWUlNQUdFU1VCREFUQVBST0MpIChHTHVpbnQgc3JjTmFtZSwgR0xlbnVtIHNy
Y1RhcmdldCwgR0xpbnQgc3JjTGV2ZWwsIEdMaW50IHNyY1gsIEdMaW50IHNyY1ksIEdMaW50IHNy
Y1osIEdMdWludCBkc3ROYW1lLCBHTGVudW0gZHN0VGFyZ2V0LCBHTGludCBkc3RMZXZlbCwgR0xp
bnQgZHN0WCwgR0xpbnQgZHN0WSwgR0xpbnQgZHN0WiwgR0xzaXplaSBzcmNXaWR0aCwgR0xzaXpl
aSBzcmNIZWlnaHQsIEdMc2l6ZWkgc3JjRGVwdGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xERUJVR01FU1NBR0VDT05UUk9MUFJPQykgKEdMZW51bSBzb3VyY2UsIEdMZW51bSB0
eXBlLCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqaWRzLCBH
TGJvb2xlYW4gZW5hYmxlZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFQlVH
TUVTU0FHRUlOU0VSVFBST0MpIChHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50IGlk
LCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmJ1Zik7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFQlVHTUVTU0FHRUNBTExCQUNLUFJPQykg
KEdMREVCVUdQUk9DIGNhbGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYW0pOwordHlwZWRlZiBH
THVpbnQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVERFQlVHTUVTU0FHRUxPR1BST0MpIChHTHVpbnQg
Y291bnQsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xlbnVtICpzb3VyY2VzLCBHTGVudW0gKnR5cGVzLCBH
THVpbnQgKmlkcywgR0xlbnVtICpzZXZlcml0aWVzLCBHTHNpemVpICpsZW5ndGhzLCBHTGNoYXIg
Km1lc3NhZ2VMb2cpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQVVNIREVCVUdH
Uk9VUFBST0MpIChHTGVudW0gc291cmNlLCBHTHVpbnQgaWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBHTGNoYXIgKm1lc3NhZ2UpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQT1BE
RUJVR0dST1VQUFJPQykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xP
QkpFQ1RMQUJFTFBST0MpIChHTGVudW0gaWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkg
bGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMR0VUT0JKRUNUTEFCRUxQUk9DKSAoR0xlbnVtIGlkZW50aWZpZXIsIEdMdWludCBuYW1l
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpsYWJlbCk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE9CSkVDVFBUUkxBQkVMUFJPQykgKGNvbnN0IHZv
aWQgKnB0ciwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRPQkpFQ1RQVFJMQUJFTFBST0MpIChjb25zdCB2b2lk
ICpwdHIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUE9JTlRFUlZQUk9DKSAoR0xlbnVt
IHBuYW1lLCB2b2lkICoqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
RU5BQkxFSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xESVNBQkxFSVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREVRVUFUSU9OSVBS
T0MpIChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEJMRU5ERVFVQVRJT05TRVBBUkFURUlQUk9DKSAoR0x1aW50IGJ1ZiwgR0xlbnVtIG1v
ZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xCTEVOREZVTkNJUFJPQykgKEdMdWludCBidWYsIEdMZW51bSBzcmMsIEdMZW51bSBkc3QpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCTEVOREZVTkNTRVBBUkFURUlQUk9DKSAo
R0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhh
LCBHTGVudW0gZHN0QWxwaGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT0xP
Uk1BU0tJUFJPQykgKEdMdWludCBpbmRleCwgR0xib29sZWFuIHIsIEdMYm9vbGVhbiBnLCBHTGJv
b2xlYW4gYiwgR0xib29sZWFuIGEpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQ
Rk5HTElTRU5BQkxFRElQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0VMRU1FTlRTQkFTRVZFUlRFWFBST0MpIChH
TGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGlj
ZXMsIEdMaW50IGJhc2V2ZXJ0ZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xE
UkFXUkFOR0VFTEVNRU5UU0JBU0VWRVJURVhQUk9DKSAoR0xlbnVtIG1vZGUsIEdMdWludCBzdGFy
dCwgR0x1aW50IGVuZCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmlu
ZGljZXMsIEdMaW50IGJhc2V2ZXJ0ZXgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xEUkFXRUxFTUVOVFNJTlNUQU5DRURCQVNFVkVSVEVYUFJPQykgKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0
YW5jZWNvdW50LCBHTGludCBiYXNldmVydGV4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRh
Y2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUklNSVRJVkVCT1VORElOR0JPWFBST0MpIChHTGZsb2F0IG1pblgsIEdM
ZmxvYXQgbWluWSwgR0xmbG9hdCBtaW5aLCBHTGZsb2F0IG1pblcsIEdMZmxvYXQgbWF4WCwgR0xm
bG9hdCBtYXhZLCBHTGZsb2F0IG1heFosIEdMZmxvYXQgbWF4Vyk7Cit0eXBlZGVmIEdMZW51bSAo
R0xfQVBJRU5UUllQIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU1BST0MpICh2b2lkKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVBRE5QSVhFTFNQUk9DKSAoR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STUZWUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICpwYXJhbXMpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STUlWUFJPQykgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1VSVZQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMdWludCAqcGFyYW1zKTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMTUlOU0FNUExFU0hBRElOR1BST0MpIChH
TGZsb2F0IHZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUEFUQ0hQQVJB
TUVURVJJUFJPQykgKEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xURVhQQVJBTUVURVJJSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMVEVYUEFSQU1FVEVSSVVJVlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMR0VUVEVYUEFSQU1FVEVSSUlWUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWFBB
UkFNRVRFUklVSVZQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBh
cmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNBTVBMRVJQQVJBTUVURVJJ
SVZQUk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0FNUExFUlBBUkFNRVRFUklVSVZQ
Uk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50ICpwYXJhbSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJSVZQ
Uk9DKSAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJVUlWUFJPQykg
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMdWludCAqcGFyYW1zKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYQlVGRkVSUFJPQykgKEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFRFWEJVRkZFUlJBTkdFUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRy
IHNpemUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhTVE9SQUdFM0RNVUxU
SVNBTVBMRVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgs
IEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9U
WVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxlbmRCYXJyaWVyICh2b2lkKTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvcHlJbWFnZVN1YkRhdGEgKEdMdWludCBz
cmNOYW1lLCBHTGVudW0gc3JjVGFyZ2V0LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xp
bnQgc3JjWSwgR0xpbnQgc3JjWiwgR0x1aW50IGRzdE5hbWUsIEdMZW51bSBkc3RUYXJnZXQsIEdM
aW50IGRzdExldmVsLCBHTGludCBkc3RYLCBHTGludCBkc3RZLCBHTGludCBkc3RaLCBHTHNpemVp
IHNyY1dpZHRoLCBHTHNpemVpIHNyY0hlaWdodCwgR0xzaXplaSBzcmNEZXB0aCk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sIChHTGVudW0gc291cmNl
LCBHTGVudW0gdHlwZSwgR0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQgKmlkcywgR0xib29sZWFuIGVuYWJsZWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsRGVidWdNZXNzYWdlSW5zZXJ0IChHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50
IGlkLCBHTGVudW0gc2V2ZXJpdHksIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmJ1Zik7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFjayAoR0xE
RUJVR1BST0MgY2FsbGJhY2ssIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSk7CitHTF9BUElDQUxMIEdM
dWludCBHTF9BUElFTlRSWSBnbEdldERlYnVnTWVzc2FnZUxvZyAoR0x1aW50IGNvdW50LCBHTHNp
emVpIGJ1ZlNpemUsIEdMZW51bSAqc291cmNlcywgR0xlbnVtICp0eXBlcywgR0x1aW50ICppZHMs
IEdMZW51bSAqc2V2ZXJpdGllcywgR0xzaXplaSAqbGVuZ3RocywgR0xjaGFyICptZXNzYWdlTG9n
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFB1c2hEZWJ1Z0dyb3VwIChHTGVudW0g
c291cmNlLCBHTHVpbnQgaWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1lc3NhZ2Up
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUG9wRGVidWdHcm91cCAodm9pZCk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xPYmplY3RMYWJlbCAoR0xlbnVtIGlkZW50aWZp
ZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCk7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRPYmplY3RMYWJlbCAoR0xlbnVtIGlkZW50
aWZpZXIsIEdMdWludCBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xj
aGFyICpsYWJlbCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xPYmplY3RQdHJMYWJl
bCAoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGxlbmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRPYmplY3RQdHJMYWJlbCAoY29uc3Qg
dm9pZCAqcHRyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpsYWJl
bCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQb2ludGVydiAoR0xlbnVtIHBu
YW1lLCB2b2lkICoqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJs
ZWkgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xEaXNhYmxlaSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25pIChHTHVpbnQgYnVmLCBHTGVudW0g
bW9kZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEVxdWF0aW9uU2VwYXJh
dGVpIChHTHVpbnQgYnVmLCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmNpIChHTHVpbnQgYnVmLCBHTGVudW0g
c3JjLCBHTGVudW0gZHN0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJsZW5kRnVu
Y1NlcGFyYXRlaSAoR0x1aW50IGJ1ZiwgR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xl
bnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsQ29sb3JNYXNraSAoR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gciwgR0xib29sZWFuIGcs
IEdMYm9vbGVhbiBiLCBHTGJvb2xlYW4gYSk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElF
TlRSWSBnbElzRW5hYmxlZGkgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNCYXNlVmVydGV4IChHTGVudW0gbW9k
ZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIEdMaW50
IGJhc2V2ZXJ0ZXgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd1JhbmdlRWxl
bWVudHNCYXNlVmVydGV4IChHTGVudW0gbW9kZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBH
THNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xpbnQgYmFz
ZXZlcnRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNJbnN0
YW5jZWRCYXNlVmVydGV4IChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs
IGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCwgR0xpbnQgYmFzZXZl
cnRleCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQg
bGV2ZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJpbWl0aXZlQm91bmRpbmdC
b3ggKEdMZmxvYXQgbWluWCwgR0xmbG9hdCBtaW5ZLCBHTGZsb2F0IG1pblosIEdMZmxvYXQgbWlu
VywgR0xmbG9hdCBtYXhYLCBHTGZsb2F0IG1heFksIEdMZmxvYXQgbWF4WiwgR0xmbG9hdCBtYXhX
KTsKK0dMX0FQSUNBTEwgR0xlbnVtIEdMX0FQSUVOVFJZIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1
cyAodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWFkblBpeGVscyAoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm1mdiAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybWl2IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybXVpdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMdWludCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbE1pblNhbXBsZVNoYWRpbmcgKEdMZmxvYXQgdmFsdWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUGF0Y2hQYXJhbWV0ZXJpIChHTGVudW0gcG5hbWUsIEdM
aW50IHZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcklp
diAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlckl1aXYgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVySWl2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
VGV4UGFyYW1ldGVySXVpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBh
cmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTYW1wbGVyUGFyYW1ldGVySWl2
IChHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0pOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2FtcGxlclBhcmFtZXRlckl1aXYgKEdMdWludCBz
YW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMdWludCAqcGFyYW0pOworR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2V0U2FtcGxlclBhcmFtZXRlcklpdiAoR0x1aW50IHNhbXBsZXIs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5U
UlkgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdiAoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFt
ZSwgR0x1aW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4QnVm
ZmVyIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMdWludCBidWZmZXIp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4QnVmZmVyUmFuZ2UgKEdMZW51bSB0
YXJnZXQsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0x1aW50IGJ1ZmZlciwgR0xpbnRwdHIgb2Zm
c2V0LCBHTHNpemVpcHRyIHNpemUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4
U3RvcmFnZTNETXVsdGlzYW1wbGUgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXpl
aSBkZXB0aCwgR0xib29sZWFuIGZpeGVkc2FtcGxlbG9jYXRpb25zKTsKKyNlbmRpZgorI2VuZGlm
IC8qIEdMX0VTX1ZFUlNJT05fM18yICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9n
bDNwbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xFUzMvZ2wzcGxhdGZvcm0uaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDNwbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsM3BsYXRmb3JtX2hfCiAjZGVmaW5lIF9fZ2wzcGxh
dGZvcm1faF8KIAotLyogJFJldmlzaW9uOiAxODQzNyAkIG9uICREYXRlOjogMjAxMi0wNy0wOCAy
MzozMTozOSAtMDcwMCAjJCAqLworLyogJFJldmlzaW9uOiAyMzMyOCAkIG9uICREYXRlOjogMjAx
My0xMC0wMiAwMjoyODoyOCAtMDcwMCAjJCAqLwogCiAvKgogICogVGhpcyBkb2N1bWVudCBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgU0dJIEZyZWUgU29mdHdhcmUgQiBMaWNlbnNlIFZlcnNpb24KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1No
YWRlckxhbmcuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
aW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQAogCiAvLyBWZXJzaW9uIG51bWJlciBmb3Igc2hhZGVyIHRyYW5zbGF0aW9uIEFQSS4KIC8v
IEl0IGlzIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgdGhlIEFQSSBjaGFuZ2VzLgotI2RlZmluZSBB
TkdMRV9TSF9WRVJTSU9OIDEzNQorI2RlZmluZSBBTkdMRV9TSF9WRVJTSU9OIDE0NQogCiB0eXBl
ZGVmIGVudW0gewogICBTSF9HTEVTMl9TUEVDID0gMHg4QjQwLApAQCAtODAsMjMgKzgwLDM1IEBA
CiAgIFNIX0NTU19TSEFERVJTX1NQRUMgPSAweDhCNDIKIH0gU2hTaGFkZXJTcGVjOwogCi10eXBl
ZGVmIGVudW0gewotICBTSF9FU1NMX09VVFBVVCAgICAgICAgICAgICAgID0gMHg4QjQ1LAotICAv
LyBTSF9HTFNMX09VVFBVVCBpcyBkZXByZWNhdGVkLiBUaGlzIGlzIHRvIG5vdCBicmVhayB0aGUg
YnVpbGQuCi0gIFNIX0dMU0xfT1VUUFVUICAgICAgICAgICAgICAgPSAweDhCNDYsCi0gIFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQgPSAweDhCNDYsCi0gIC8vIFNIX0dMU0xfQ09SRV9PVVRQ
VVQgaXMgZGVwcmVjYXRlZC4KLSAgU0hfR0xTTF9DT1JFX09VVFBVVCAgICAgICAgICA9IDB4OEI0
NywKLSAgLy9Ob3RlOiBHTCBpbnRyb2R1Y2VkIGNvcmUgcHJvZmlsZXMgaW4gMS41LiBIb3dldmVy
LCBmb3IgY29tcGF0aWJsaXR5IHdpdGggQ2hyb21pdW0sIHdlIHRyZWF0IFNIX0dMU0xfQ09SRV9P
VVRQVVQgYXMgR0xTTF8xMzBfT1VUUFVULgotICAvL1RPRE86IFJlbW92ZSBTSF9HTFNMX0NPUkVf
T1VUUFVUCi0gIFNIX0dMU0xfMTMwX09VVFBVVCAgICAgICAgICAgPSAweDhCNDcsCi0gIFNIX0dM
U0xfNDEwX0NPUkVfT1VUUFVUICAgICAgPSAweDhCODQsCi0gIFNIX0dMU0xfNDIwX0NPUkVfT1VU
UFVUICAgICAgPSAweDhCODUsCit0eXBlZGVmIGVudW0KK3sKKyAgICAvLyBFU1NMIG91dHB1dCBv
bmx5IHN1cHBvcnRlZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zLgorICAgIFNIX0VTU0xfT1VUUFVU
ID0gMHg4QjQ1LAogCi0gIC8vIEhMU0wgb3V0cHV0IG9ubHkgc3VwcG9ydGVkIGluIHNvbWUgY29u
ZmlndXJhdGlvbnMuCi0gIFNIX0hMU0xfT1VUUFVUICAgPSAweDhCNDgsCi0gIFNIX0hMU0w5X09V
VFBVVCAgPSAweDhCNDgsCi0gIFNIX0hMU0wxMV9PVVRQVVQgPSAweDhCNDkKKyAgICAvLyBHTFNM
IG91dHB1dCBvbmx5IHN1cHBvcnRlZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zLgorICAgIFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQgPSAweDhCNDYsCisgICAgLy8gTm90ZTogR0wgaW50cm9k
dWNlZCBjb3JlIHByb2ZpbGVzIGluIDEuNS4KKyAgICBTSF9HTFNMXzEzMF9PVVRQVVQgICAgICA9
IDB4OEI0NywKKyAgICBTSF9HTFNMXzE0MF9PVVRQVVQgICAgICA9IDB4OEI4MCwKKyAgICBTSF9H
TFNMXzE1MF9DT1JFX09VVFBVVCA9IDB4OEI4MSwKKyAgICBTSF9HTFNMXzMzMF9DT1JFX09VVFBV
VCA9IDB4OEI4MiwKKyAgICBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVCA9IDB4OEI4MywKKyAgICBT
SF9HTFNMXzQxMF9DT1JFX09VVFBVVCA9IDB4OEI4NCwKKyAgICBTSF9HTFNMXzQyMF9DT1JFX09V
VFBVVCA9IDB4OEI4NSwKKyAgICBTSF9HTFNMXzQzMF9DT1JFX09VVFBVVCA9IDB4OEI4NiwKKyAg
ICBTSF9HTFNMXzQ0MF9DT1JFX09VVFBVVCA9IDB4OEI4NywKKyAgICBTSF9HTFNMXzQ1MF9DT1JF
X09VVFBVVCA9IDB4OEI4OCwKKworICAgIC8vIEhMU0wgb3V0cHV0IG9ubHkgc3VwcG9ydGVkIGlu
IHNvbWUgY29uZmlndXJhdGlvbnMuCisgICAgLy8gRGVwcmVjYXRlZDoKKyAgICBTSF9ITFNMX09V
VFBVVCAgID0gMHg4QjQ4LAorICAgIFNIX0hMU0w5X09VVFBVVCAgPSAweDhCNDgsCisgICAgU0hf
SExTTDExX09VVFBVVCA9IDB4OEI0OSwKKworICAgIC8vIFByZWZlciB1c2luZyB0aGVzZSB0byBz
cGVjaWZ5IEhMU0wgb3V0cHV0IHR5cGU6CisgICAgU0hfSExTTF8zXzBfT1VUUFVUICAgICAgID0g
MHg4QjQ4LCAgLy8gRDNEIDkKKyAgICBTSF9ITFNMXzRfMV9PVVRQVVQgICAgICAgPSAweDhCNDks
ICAvLyBEM0QgMTEKKyAgICBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQgPSAweDhCNEEgICAvLyBE
M0QgMTEgZmVhdHVyZSBsZXZlbCA5XzMKIH0gU2hTaGFkZXJPdXRwdXQ7CiAKIC8vIENvbXBpbGUg
b3B0aW9ucy4KQEAgLTE4OCw2ICsyMDAsMTQgQEAKICAgLy8gY29tcGlsYXRpb24gcHJvY2Vzcy4g
UHJ1bmluZyBjb3VwbGVkIHdpdGggU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSAogICAvLyBoZWxw
cyBhdm9pZCBiYWQgc2hhZGVycyBjYXVzaW5nIHN0YWNrIG92ZXJmbG93cy4KICAgU0hfRE9OVF9Q
UlVORV9VTlVTRURfRlVOQ1RJT05TID0gMHgxMDAwMDAsCisKKyAgLy8gVGhpcyBmbGFnIHdvcmtz
IGFyb3VuZCBhIGJ1ZyBpbiBOVklESUEgMzMxIHNlcmllcyBkcml2ZXJzIHJlbGF0ZWQKKyAgLy8g
dG8gcG93KHgsIHkpIHdoZXJlIHkgaXMgYSBjb25zdGFudCB2ZWN0b3IuCisgIFNIX1JFTU9WRV9Q
T1dfV0lUSF9DT05TVEFOVF9FWFBPTkVOVCA9IDB4MjAwMDAwLAorCisgIC8vIFRoaXMgZmxhZyB3
b3JrcyBhcm91bmQgYnVncyBpbiBNYWMgZHJpdmVycyByZWxhdGVkIHRvIGRvLXdoaWxlIGJ5Cisg
IC8vIHRyYW5zZm9ybWluZyB0aGVtIGludG8gYW4gb3RoZXIgY29uc3RydWN0LgorICBTSF9SRVdS
SVRFX0RPX1dISUxFX0xPT1BTID0gMHg0MDAwMDAsCiB9IFNoQ29tcGlsZU9wdGlvbnM7CiAKIC8v
IERlZmluZXMgYWx0ZXJuYXRlIHN0cmF0ZWdpZXMgZm9yIGltcGxlbWVudGluZyBhcnJheSBpbmRl
eCBjbGFtcGluZy4KQEAgLTIzNiw2ICsyNTYsNyBAQAogICAgIGludCBPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXM7CiAgICAgaW50IE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw7CiAgICAgaW50IEFSQl90
ZXh0dXJlX3JlY3RhbmdsZTsKKyAgICBpbnQgRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQ7CiAgICAg
aW50IEVYVF9kcmF3X2J1ZmZlcnM7CiAgICAgaW50IEVYVF9mcmFnX2RlcHRoOwogICAgIGludCBF
WFRfc2hhZGVyX3RleHR1cmVfbG9kOwpAQCAtMjUwLDcgKzI3MSw5IEBACiAgICAgLy8gZnVuY3Rp
b24uIFRoaXMgYXBwbGllcyB0byBUZWdyYSBLMSBkZXZpY2VzLgogICAgIGludCBOVl9kcmF3X2J1
ZmZlcnM7CiAKLSAgICAvLyBTZXQgdG8gMSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVk
IGluIHRoZSBmcmFnbWVudCBsYW5ndWFnZS4KKyAgICAvLyBTZXQgdG8gMSBpZiBoaWdocCBwcmVj
aXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBFU1NMIDEuMDAgdmVyc2lvbiBvZiB0aGUKKyAgICAv
LyBmcmFnbWVudCBsYW5ndWFnZS4gRG9lcyBub3QgYWZmZWN0IHZlcnNpb25zIG9mIHRoZSBsYW5n
dWFnZSB3aGVyZSBoaWdocAorICAgIC8vIHN1cHBvcnQgaXMgbWFuZGF0b3J5LgogICAgIC8vIERl
ZmF1bHQgaXMgMC4KICAgICBpbnQgRnJhZ21lbnRQcmVjaXNpb25IaWdoOwogCkBAIC0yNjAsNiAr
MjgzLDEzIEBACiAgICAgaW50IE1pblByb2dyYW1UZXhlbE9mZnNldDsKICAgICBpbnQgTWF4UHJv
Z3JhbVRleGVsT2Zmc2V0OwogCisgICAgLy8gRXh0ZW5zaW9uIGNvbnN0YW50cy4KKworICAgIC8v
IFZhbHVlIG9mIEdMX01BWF9EVUFMX1NPVVJDRV9EUkFXX0JVRkZFUlNfRVhUIGZvciBPcGVuR0wg
RVMgb3V0cHV0IGNvbnRleHQuCisgICAgLy8gVmFsdWUgb2YgR0xfTUFYX0RVQUxfU09VUkNFX0RS
QVdfQlVGRkVSUyBmb3IgT3BlbkdMIG91dHB1dCBjb250ZXh0LgorICAgIC8vIEdMRVMgU0wgdmVy
c2lvbiAxMDAgZ2xfTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzRVhUIHZhbHVlIGZvciBFWFRfYmxl
bmRfZnVuY19leHRlbmRlZC4KKyAgICBpbnQgTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzOworCiAg
ICAgLy8gTmFtZSBIYXNoaW5nLgogICAgIC8vIFNldCBhIDY0IGJpdCBoYXNoIGZ1bmN0aW9uIHRv
IGVuYWJsZSB1c2VyLWRlZmluZWQgbmFtZSBoYXNoaW5nLgogICAgIC8vIERlZmF1bHQgaXMgTlVM
TC4KQEAgLTI2OSwxMSArMjk5LDE1IEBACiAgICAgLy8gRGVmYXVsdCBpcyBTSF9DTEFNUF9XSVRI
X0NMQU1QX0lOVFJJTlNJQy4KICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IEFycmF5
SW5kZXhDbGFtcGluZ1N0cmF0ZWd5OwogCi0gICAgLy8gVGhlIG1heGltdW0gY29tcGxleGl0eSBh
biBleHByZXNzaW9uIGNhbiBiZS4KKyAgICAvLyBUaGUgbWF4aW11bSBjb21wbGV4aXR5IGFuIGV4
cHJlc3Npb24gY2FuIGJlIHdoZW4gU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZIGlzIHR1
cm5lZCBvbi4KICAgICBpbnQgTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CiAKICAgICAvLyBUaGUg
bWF4aW11bSBkZXB0aCBhIGNhbGwgc3RhY2sgY2FuIGJlLgogICAgIGludCBNYXhDYWxsU3RhY2tE
ZXB0aDsKKworICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbWV0ZXJzIGEgZnVuY3Rp
b24gY2FuIGhhdmUgd2hlbiBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkgaXMKKyAgICAv
LyB0dXJuZWQgb24uCisgICAgaW50IE1heEZ1bmN0aW9uUGFyYW1ldGVyczsKIH0gU2hCdWlsdElu
UmVzb3VyY2VzOwogCiAvLwpAQCAtMzA5LDkgKzM0Myw5IEBACiAvLyB0eXBlOiBTcGVjaWZpZXMg
dGhlIHR5cGUgb2Ygc2hhZGVyIC0gR0xfRlJBR01FTlRfU0hBREVSIG9yIEdMX1ZFUlRFWF9TSEFE
RVIuCiAvLyBzcGVjOiBTcGVjaWZpZXMgdGhlIGxhbmd1YWdlIHNwZWMgdGhlIGNvbXBpbGVyIG11
c3QgY29uZm9ybSB0byAtCiAvLyAgICAgICBTSF9HTEVTMl9TUEVDIG9yIFNIX1dFQkdMX1NQRUMu
Ci0vLyBvdXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0cHV0IGNvZGUgdHlwZSAtIFNIX0VTU0xfT1VU
UFVULCBTSF9HTFNMX09VVFBVVCwKLS8vICAgICAgICAgU0hfSExTTDlfT1VUUFVUIG9yIFNIX0hM
U0wxMV9PVVRQVVQuIE5vdGU6IEhMU0wgb3V0cHV0IGlzIG9ubHkKLS8vICAgICAgICAgc3VwcG9y
dGVkIGluIHNvbWUgY29uZmlndXJhdGlvbnMuCisvLyBvdXRwdXQ6IFNwZWNpZmllcyB0aGUgb3V0
cHV0IGNvZGUgdHlwZSAtIGZvciBleGFtcGxlIFNIX0VTU0xfT1VUUFVULCBTSF9HTFNMX0NPTVBB
VElCSUxJVFlfT1VUUFVULAorLy8gICAgICAgICBTSF9ITFNMXzNfMF9PVVRQVVQgb3IgU0hfSExT
TF80XzFfT1VUUFVULiBOb3RlOiBFYWNoIG91dHB1dCB0eXBlIG1heSBvbmx5CisvLyAgICAgICAg
IGJlIHN1cHBvcnRlZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zLgogLy8gcmVzb3VyY2VzOiBTcGVj
aWZpZXMgdGhlIGJ1aWx0LWluIHJlc291cmNlcy4KIENPTVBJTEVSX0VYUE9SVCBTaEhhbmRsZSBT
aENvbnN0cnVjdENvbXBpbGVyKAogICAgIHNoOjpHTGVudW0gdHlwZSwKQEAgLTM1MCw2ICszODQs
OSBAQAogICAgIHNpemVfdCBudW1TdHJpbmdzLAogICAgIGludCBjb21waWxlT3B0aW9ucyk7CiAK
Ky8vIENsZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbi4KK0NP
TVBJTEVSX0VYUE9SVCB2b2lkIFNoQ2xlYXJSZXN1bHRzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7
CisKIC8vIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgc2hhZGVyIGxhbmd1YWdlLgogQ09NUElM
RVJfRVhQT1JUIGludCBTaEdldFNoYWRlclZlcnNpb24oY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsK
IApAQCAtMzg0LDcgKzQyMSw3IEBACiBDT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OlVuaWZvcm0+ICpTaEdldFVuaWZvcm1zKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiBDT01Q
SUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICpTaEdldFZhcnlpbmdz
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiBDT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0
b3I8c2g6OkF0dHJpYnV0ZT4gKlNoR2V0QXR0cmlidXRlcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUp
OwotQ09NUElMRVJfRVhQT1JUIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICpTaEdl
dE91dHB1dFZhcmlhYmxlcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworQ09NUElMRVJfRVhQT1JU
IGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKlNoR2V0T3V0cHV0VmFyaWFi
bGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiBDT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAqU2hHZXRJbnRlcmZhY2VCbG9ja3MoY29uc3QgU2hI
YW5kbGUgaGFuZGxlKTsKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTQxNywxNiArNDU0LDEwIEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJmludGVyZmFjZUJsb2NrTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmluZGV4T3V0KTsKIAotLy8gR2l2
ZXMgdGhlIGNvbXBpbGVyLWFzc2lnbmVkIHJlZ2lzdGVyIGZvciB1bmlmb3JtcyBpbiB0aGUgZGVm
YXVsdAotLy8gaW50ZXJmYWNlIGJsb2NrLgotLy8gVGhlIG1ldGhvZCB3cml0ZXMgdGhlIHZhbHVl
IHRvIHRoZSBvdXRwdXQgdmFyaWFibGUgImluZGV4T3V0Ii4KLS8vIFJldHVybnMgdHJ1ZSBpZiBp
dCBmb3VuZCBhIHZhbGlkIGRlZmF1bHQgdW5pZm9ybSwgZmFsc2Ugb3RoZXJ3aXNlLgotLy8gUGFy
YW1ldGVyczoKLS8vIGhhbmRsZTogU3BlY2lmaWVzIHRoZSBjb21waWxlcgotLy8gaW50ZXJmYWNl
QmxvY2tOYW1lOiBTcGVjaWZpZXMgdGhlIHVuaWZvcm0KLS8vIGluZGV4T3V0OiBvdXRwdXQgdmFy
aWFibGUgdGhhdCBzdG9yZXMgdGhlIGFzc2lnbmVkIHJlZ2lzdGVyCi1DT01QSUxFUl9FWFBPUlQg
Ym9vbCBTaEdldFVuaWZvcm1SZWdpc3Rlcihjb25zdCBTaEhhbmRsZSBoYW5kbGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5p
Zm9ybU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgKmluZGV4T3V0KTsKKy8vIEdpdmVzIGEgbWFwIGZyb20gdW5pZm9ybSBuYW1lcyB0
byBjb21waWxlci1hc3NpZ25lZCByZWdpc3RlcnMgaW4gdGhlIGRlZmF1bHQKKy8vIGludGVyZmFj
ZSBibG9jay4gTm90ZSB0aGF0IHRoZSBtYXAgY29udGFpbnMgYWxzbyByZWdpc3RlcnMgb2Ygc2Ft
cGxlcnMgdGhhdAorLy8gaGF2ZSBiZWVuIGV4dHJhY3RlZCBmcm9tIHN0cnVjdHMuCitDT01QSUxF
Ul9FWFBPUlQgY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKlNoR2V0
VW5pZm9ybVJlZ2lzdGVyTWFwKAorICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiAKICNlbmRp
ZiAvLyBHTFNMQU5HX1NIQURFUkxBTkdfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZhcnMuaAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZhcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDE5ICsxMTAsMzkgQEAKICAgICBib29sIGlzU2FtZVVu
aWZvcm1BdExpbmtUaW1lKGNvbnN0IFVuaWZvcm0gJm90aGVyKSBjb25zdDsKIH07CiAKLXN0cnVj
dCBDT01QSUxFUl9FWFBPUlQgQXR0cmlidXRlIDogcHVibGljIFNoYWRlclZhcmlhYmxlCisvLyBB
biBpbnRlcmZhY2UgdmFyaWFibGUgaXMgYSB2YXJpYWJsZSB3aGljaCBwYXNzZXMgZGF0YSBiZXR3
ZWVuIHRoZSBHTCBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZQorLy8gc2hhZGVyIGV4ZWN1dGlvbjog
ZWl0aGVyIHZlcnRleCBzaGFkZXIgaW5wdXRzIG9yIGZyYWdtZW50IHNoYWRlciBvdXRwdXRzLiBU
aGVzZSB2YXJpYWJsZXMgY2FuCisvLyBoYXZlIGludGVnZXIgbG9jYXRpb25zIHRvIHBhc3MgYmFj
ayB0byB0aGUgR0wgQVBJLgorc3RydWN0IENPTVBJTEVSX0VYUE9SVCBJbnRlcmZhY2VWYXJpYWJs
ZSA6IHB1YmxpYyBTaGFkZXJWYXJpYWJsZQogeworICAgIEludGVyZmFjZVZhcmlhYmxlKCk7Cisg
ICAgfkludGVyZmFjZVZhcmlhYmxlKCk7CisgICAgSW50ZXJmYWNlVmFyaWFibGUoY29uc3QgSW50
ZXJmYWNlVmFyaWFibGUgJm90aGVyKTsKKyAgICBJbnRlcmZhY2VWYXJpYWJsZSAmb3BlcmF0b3I9
KGNvbnN0IEludGVyZmFjZVZhcmlhYmxlICZvdGhlcik7CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEludGVyZmFjZVZhcmlhYmxlICZvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEludGVyZmFjZVZhcmlhYmxlICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9y
PT0ob3RoZXIpOyB9CisKKyAgICBpbnQgbG9jYXRpb247Cit9OworCitzdHJ1Y3QgQ09NUElMRVJf
RVhQT1JUIEF0dHJpYnV0ZSA6IHB1YmxpYyBJbnRlcmZhY2VWYXJpYWJsZQorewogICAgIEF0dHJp
YnV0ZSgpOwogICAgIH5BdHRyaWJ1dGUoKTsKICAgICBBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
ICZvdGhlcik7CiAgICAgQXR0cmlidXRlICZvcGVyYXRvcj0oY29uc3QgQXR0cmlidXRlICZvdGhl
cik7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0dHJpYnV0ZSAmb3RoZXIpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdHRyaWJ1dGUgJm90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEF0dHJpYnV0ZSAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsgfQorfTsKIAotICAgIGludCBsb2NhdGlvbjsKK3N0cnVjdCBDT01QSUxFUl9FWFBP
UlQgT3V0cHV0VmFyaWFibGUgOiBwdWJsaWMgSW50ZXJmYWNlVmFyaWFibGUKK3sKKyAgICBPdXRw
dXRWYXJpYWJsZSgpOworICAgIH5PdXRwdXRWYXJpYWJsZSgpOworICAgIE91dHB1dFZhcmlhYmxl
KGNvbnN0IE91dHB1dFZhcmlhYmxlICZvdGhlcik7CisgICAgT3V0cHV0VmFyaWFibGUgJm9wZXJh
dG9yPShjb25zdCBPdXRwdXRWYXJpYWJsZSAmb3RoZXIpOworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBPdXRwdXRWYXJpYWJsZSAmb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBPdXRwdXRWYXJpYWJsZSAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90
aGVyKTsgfQogfTsKIAogc3RydWN0IENPTVBJTEVSX0VYUE9SVCBJbnRlcmZhY2VCbG9ja0ZpZWxk
IDogcHVibGljIFNoYWRlclZhcmlhYmxlCkBAIC0xNjEsNyArMTgxLDEyIEBACiAKICAgICAvLyBE
ZWNpZGUgd2hldGhlciB0d28gdmFyeWluZ3MgYXJlIHRoZSBzYW1lIGF0IHNoYWRlciBsaW5rIHRp
bWUsCiAgICAgLy8gYXNzdW1pbmcgb25lIGZyb20gdmVydGV4IHNoYWRlciBhbmQgdGhlIG90aGVy
IGZyb20gZnJhZ21lbnQgc2hhZGVyLgotICAgIC8vIFNlZSBHTFNMIEVTIFNwZWMgMy4wMC4zLCBz
ZWMgNC4zLjkuCisgICAgLy8gSW52YXJpYW5jZSBuZWVkcyB0byBtYXRjaCBvbmx5IGluIEVTU0wx
LiBSZWxldmFudCBzcGVjIHNlY3Rpb25zOgorICAgIC8vIEdMU0wgRVMgMy4wMC40LCBzZWN0aW9u
cyA0LjYuMSBhbmQgNC4zLjkuCisgICAgLy8gR0xTTCBFUyAxLjAwLjE3LCBzZWN0aW9uIDQuNi40
LgorICAgIGJvb2wgaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoY29uc3QgVmFyeWluZyAmb3RoZXIs
IGludCBzaGFkZXJWZXJzaW9uKSBjb25zdDsKKworICAgIC8vIERlcHJlY2F0ZWQgdmVyc2lvbiBv
ZiBpc1NhbWVWYXJ5aW5nQXRMaW5rVGltZSwgd2hpY2ggYXNzdW1lcyBFU1NMMS4KICAgICBib29s
IGlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGNvbnN0IFZhcnlpbmcgJm90aGVyKSBjb25zdDsKIAog
ICAgIEludGVycG9sYXRpb25UeXBlIGludGVycG9sYXRpb247CkBAIC0xNzUsNiArMjAwLDkgQEAK
ICAgICBJbnRlcmZhY2VCbG9jayhjb25zdCBJbnRlcmZhY2VCbG9jayAmb3RoZXIpOwogICAgIElu
dGVyZmFjZUJsb2NrICZvcGVyYXRvcj0oY29uc3QgSW50ZXJmYWNlQmxvY2sgJm90aGVyKTsKIAor
ICAgIC8vIEZpZWxkcyBmcm9tIGJsb2NrcyB3aXRoIG5vbi1lbXB0eSBpbnN0YW5jZSBuYW1lcyBh
cmUgcHJlZml4ZWQgd2l0aCB0aGUgYmxvY2sgbmFtZS4KKyAgICBzdGQ6OnN0cmluZyBmaWVsZFBy
ZWZpeCgpIGNvbnN0OworCiAgICAgc3RkOjpzdHJpbmcgbmFtZTsKICAgICBzdGQ6OnN0cmluZyBt
YXBwZWROYW1lOwogICAgIHN0ZDo6c3RyaW5nIGluc3RhbmNlTmFtZTsKQEAgLTE4NSw2ICsyMTMs
NiBAQAogICAgIHN0ZDo6dmVjdG9yPEludGVyZmFjZUJsb2NrRmllbGQ+IGZpZWxkczsKIH07CiAK
LX0KK30gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYgLy8gR0xTTEFOR19TSEFERVJWQVJTX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL2FuZ2xlX2dsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9hbmdsZV9nbC5oCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL2FuZ2xlX2ds
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDggQEAKICNpbmNsdWRlICJHTEVTMi9nbDIu
aCIKICNpbmNsdWRlICJHTEVTMi9nbDJleHQuaCIKICNpbmNsdWRlICJHTEVTMy9nbDMuaCIKLSNp
bmNsdWRlICJHTEVTMy9nbDNleHQuaCIKKyNpbmNsdWRlICJHTEVTMy9nbDMxLmgiCisjaW5jbHVk
ZSAiR0xFUzMvZ2wzMi5oIgogCiAvLyBUaGUgZm9sbG93aW5nIGVudW0gaXMgdXNlZCBpbiBBTkdM
RSwgYnV0IGlzIGZyb20gZGVza3RvcCBHTAogI2lmbmRlZiBHTF9TQU1QTEVSXzJEX1JFQ1RfQVJC
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL2FuZ2xlX3dpbmRvd3NzdG9y
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvYW5nbGVf
d2luZG93c3N0b3JlLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvYW5nbGVfd2luZG93c3N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEw
ICsyOCwyNCBAQAogLy8gRGVzY3JpcHRpb246IFNldCB0aGlzIHByb3BlcnR5IHRvIHNwZWNpZnkg
YSBwcmVmZXJyZWQgc2l6ZSBpbiBwaXhlbHMgb2YgdGhlIHJlbmRlciBzdXJmYWNlLgogLy8gICAg
ICAgICAgICAgIFRoZSByZW5kZXIgc3VyZmFjZSBzaXplIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBi
ZSBncmVhdGVyIHRoYW4gMC4KIC8vICAgICAgICAgICAgICBJZiB0aGlzIHByb3BlcnR5IGlzIHNl
dCwgdGhlbiB0aGUgcmVuZGVyIHN1cmZhY2Ugc2l6ZSBpcyBmaXhlZC4KKy8vICAgICAgICAgICAg
ICBUaGUgcmVuZGVyIHN1cmZhY2Ugd2lsbCB0aGVuIGJlIHNjYWxlZCB0byB0aGUgd2luZG93IGRp
bWVuc2lvbnMuCiAvLyAgICAgICAgICAgICAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBh
IGRlZmF1bHQgYmVoYXZpb3Igd2lsbCBiZSBwcm92aWRlZC4KIC8vICAgICAgICAgICAgICBUaGUg
ZGVmYXVsdCBiZWhhdmlvciB1c2VzIHRoZSB3aW5kb3cgc2l6ZSBpZiBhIENvcmVXaW5kb3cgaXMg
c3BlY2lmaWVkIG9yCiAvLyAgICAgICAgICAgICAgdGhlIHNpemUgb2YgdGhlIFN3YXBDaGFpblBh
bmVsIGNvbnRyb2wgaWYgb25lIGlzIHNwZWNpZmllZC4KIC8vCiBjb25zdCB3Y2hhcl90IEVHTFJl
bmRlclN1cmZhY2VTaXplUHJvcGVydHlbXSA9IEwiRUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0
eSI7CiAKKy8vCisvLyBQcm9wZXJ0eTogRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHkK
Ky8vIFR5cGU6IFNpbmdsZQorLy8gRGVzY3JpcHRpb246IFVzZSB0aGlzIHRvIHNwZWNpZnkgYSBw
cmVmZXJyZWQgc2NhbGUgZm9yIHRoZSByZW5kZXIgc3VyZmFjZSBjb21wYXJlZCB0byB0aGUgd2lu
ZG93LgorLy8gICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB0aGUgd2luZG93IGlzIDgwMHg0
ODAsIGFuZDoKKy8vICAgICAgICAgICAgICAgIC0gc2NhbGUgaXMgc2V0IHRvIDAuNWYgdGhlbiB0
aGUgc3VyZmFjZSB3aWxsIGJlIDQwMHgyNDAKKy8vICAgICAgICAgICAgICAgIC0gc2NhbGUgaXMg
c2V0IHRvIDEuMmYgdGhlbiB0aGUgc3VyZmFjZSB3aWxsIGJlIDk2MHg1NzYKKy8vICAgICAgICAg
ICAgICBJZiB0aGUgd2luZG93IHJlc2l6ZXMgb3Igcm90YXRlcyB0aGVuIHRoZSBzdXJmYWNlIHdp
bGwgcmVzaXplIGFjY29yZGluZ2x5LgorLy8gICAgICAgICAgICAgIEVHTFJlbmRlclJlc29sdXRp
b25TY2FsZVByb3BlcnR5IGFuZCBFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5IGNhbm5vdCBi
b3RoIGJlIHNldC4KKy8vICAgICAgICAgICAgICBUaGUgc2NhbGUgZmFjdG9yIHNob3VsZCBiZSA+
IDAuMGYuCisvLworY29uc3Qgd2NoYXJfdCBFR0xSZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9wZXJ0
eVtdID0gTCJFR0xSZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9wZXJ0eSI7CisKICNlbmRpZiAvLyBB
TkdMRV9XSU5ET1dTU1RPUkVfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsOCArMTEsMjUgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogCi0jaW5j
bHVkZSAiLi4vZXhwb3J0LmgiCisjaWYgZGVmaW5lZChfV0lOMzIpCisjICAgaWYgIWRlZmluZWQo
TElCQU5HTEVfSU1QTEVNRU5UQVRJT04pCisjICAgICAgIGRlZmluZSBBTkdMRV9QTEFURk9STV9F
WFBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjICAgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19H
TlVDX18pCisjICAgaWYgZGVmaW5lZChMSUJBTkdMRV9JTVBMRU1FTlRBVElPTikKKyMgICAgICAg
ZGVmaW5lIEFOR0xFX1BMQVRGT1JNX0VYUE9SVCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKKyMgICBlbmRpZgorI2VuZGlmCisjaWYgIWRlZmluZWQoQU5HTEVfUExBVEZP
Uk1fRVhQT1JUKQorIyAgIGRlZmluZSBBTkdMRV9QTEFURk9STV9FWFBPUlQKKyNlbmRpZgogCisj
aWYgZGVmaW5lZChfV0lOMzIpCisjICAgZGVmaW5lIEFOR0xFX0FQSUVOVFJZIF9fc3RkY2FsbAor
I2Vsc2UKKyMgICBkZWZpbmUgQU5HTEVfQVBJRU5UUlkKKyNlbmRpZgorCiBuYW1lc3BhY2UgYW5n
bGUKIHsKIApAQCAtMzEsNiArNDgsMTcgQEAKICAgICAvLyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0
IHRoZSBmaXhlZCBwb2ludCBiZSBubyBmdXJ0aGVyIGluIHRoZSBwYXN0IHRoYW4gdGhlIGVwb2No
LgogICAgIHZpcnR1YWwgZG91YmxlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIHsgcmV0
dXJuIDA7IH0KIAorICAgIC8vIExvZ2dpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBMb2cgYW4gZXJyb3IgbWVz
c2FnZSB3aXRoaW4gdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9p
ZCBsb2dFcnJvcihjb25zdCBjaGFyICplcnJvck1lc3NhZ2UpIHt9CisKKyAgICAvLyBMb2cgYSB3
YXJuaW5nIG1lc3NhZ2Ugd2l0aGluIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KKyAgICB2
aXJ0dWFsIHZvaWQgbG9nV2FybmluZyhjb25zdCBjaGFyICp3YXJuaW5nTWVzc2FnZSkge30KKwor
ICAgIC8vIExvZyBhbiBpbmZvIG1lc3NhZ2Ugd2l0aGluIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgbG9nSW5mbyhjb25zdCBjaGFyICppbmZvTWVzc2FnZSkg
e30KKwogICAgIC8vIFRyYWNpbmcgLS0tLS0tLS0KIAogICAgIC8vIEdldCBhIHBvaW50ZXIgdG8g
dGhlIGVuYWJsZWQgc3RhdGUgb2YgdGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBUaGUKQEAgLTEx
NCw2ICsxNDIsOCBAQAogICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1FbnVtZXJhdGlvbihjb25z
dCBjaGFyICpuYW1lLCBpbnQgc2FtcGxlLCBpbnQgYm91bmRhcnlWYWx1ZSkgeyB9CiAgICAgLy8g
VW5saWtlIGVudW1lcmF0aW9uIGhpc3RvZ3JhbXMsIHNwYXJzZSBoaXN0b2dyYW1zIG9ubHkgYWxs
b2NhdGUgbWVtb3J5IGZvciBub24tZW1wdHkgYnVja2V0cy4KICAgICB2aXJ0dWFsIHZvaWQgaGlz
dG9ncmFtU3BhcnNlKGNvbnN0IGNoYXIgKm5hbWUsIGludCBzYW1wbGUpIHsgfQorICAgIC8vIEJv
b2xlYW4gaGlzdG9ncmFtcyB0cmFjayB0d28tc3RhdGUgdmFyaWFibGVzLgorICAgIHZpcnR1YWwg
dm9pZCBoaXN0b2dyYW1Cb29sZWFuKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgc2FtcGxlKSB7IH0K
IAogICBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+UGxhdGZvcm0oKSB7IH0KQEAgLTEyMSwxMyAr
MTUxLDE4IEBACiAKIH0KIAotdHlwZWRlZiB2b2lkKCpBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZUZ1
bmMpKGFuZ2xlOjpQbGF0Zm9ybSopOwotQU5HTEVfRVhQT1JUIHZvaWQgQU5HTEVQbGF0Zm9ybUlu
aXRpYWxpemUoYW5nbGU6OlBsYXRmb3JtKik7CitleHRlcm4gIkMiCit7CiAKLXR5cGVkZWYgdm9p
ZCAoKkFOR0xFUGxhdGZvcm1TaHV0ZG93bkZ1bmMpKCk7Ci1BTkdMRV9FWFBPUlQgdm9pZCBBTkdM
RVBsYXRmb3JtU2h1dGRvd24oKTsKK3R5cGVkZWYgdm9pZCAoQU5HTEVfQVBJRU5UUlkgKkFOR0xF
UGxhdGZvcm1Jbml0aWFsaXplRnVuYykoYW5nbGU6OlBsYXRmb3JtKik7CitBTkdMRV9QTEFURk9S
TV9FWFBPUlQgdm9pZCBBTkdMRV9BUElFTlRSWSBBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZShhbmds
ZTo6UGxhdGZvcm0qKTsKIAotdHlwZWRlZiBhbmdsZTo6UGxhdGZvcm0gKigqQU5HTEVQbGF0Zm9y
bUN1cnJlbnRGdW5jKSgpOwotQU5HTEVfRVhQT1JUIGFuZ2xlOjpQbGF0Zm9ybSAqQU5HTEVQbGF0
Zm9ybUN1cnJlbnQoKTsKK3R5cGVkZWYgdm9pZCAoQU5HTEVfQVBJRU5UUlkgKkFOR0xFUGxhdGZv
cm1TaHV0ZG93bkZ1bmMpKCk7CitBTkdMRV9QTEFURk9STV9FWFBPUlQgdm9pZCBBTkdMRV9BUElF
TlRSWSBBTkdMRVBsYXRmb3JtU2h1dGRvd24oKTsKIAordHlwZWRlZiBhbmdsZTo6UGxhdGZvcm0g
KihBTkdMRV9BUElFTlRSWSAqQU5HTEVQbGF0Zm9ybUN1cnJlbnRGdW5jKSgpOworQU5HTEVfUExB
VEZPUk1fRVhQT1JUIGFuZ2xlOjpQbGF0Zm9ybSAqQU5HTEVfQVBJRU5UUlkgQU5HTEVQbGF0Zm9y
bUN1cnJlbnQoKTsKKworfQorCiAjZW5kaWYgLy8gQU5HTEVfUExBVEZPUk1fSApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZ2xlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5nbGUuZ3lwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvYW5nbGUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3
ICsxNiwxMSBAQAogICAgICAgICAnYW5nbGVfZW5hYmxlX2QzZDklJzogMCwKICAgICAgICAgJ2Fu
Z2xlX2VuYWJsZV9kM2QxMSUnOiAwLAogICAgICAgICAnYW5nbGVfZW5hYmxlX2dsJSc6IDAsCisg
ICAgICAgICdhbmdsZV9lbmFibGVfZXNzbCUnOiAxLCAjIEVuYWJsZSB0aGlzIGZvciBhbGwgY29u
ZmlncyBieSBkZWZhdWx0CisgICAgICAgICdhbmdsZV9lbmFibGVfZ2xzbCUnOiAxLCAjIEVuYWJs
ZSB0aGlzIGZvciBhbGwgY29uZmlncyBieSBkZWZhdWx0CiAgICAgICAgICdhbmdsZV9lbmFibGVf
aGxzbCUnOiAwLAorICAgICAgICAnYW5nbGVfbGlua19nbHglJzogMCwKKyAgICAgICAgJ2FuZ2xl
X2dsX2xpYnJhcnlfdHlwZSUnOiAnc2hhcmVkX2xpYnJhcnknLAogICAgICAgICAnY29uZGl0aW9u
cyc6CiAgICAgICAgIFsKICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywKQEAgLTI2LDYgKzMwLDE4
IEBACiAgICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9kM2QxMSUnOiAxLAogICAgICAgICAg
ICAgICAgICdhbmdsZV9lbmFibGVfaGxzbCUnOiAxLAogICAgICAgICAgICAgfV0sCisgICAgICAg
ICAgICBbJ09TPT0ibGludXgiIGFuZCB1c2VfeDExPT0xIGFuZCBjaHJvbWVvcz09MCcsCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9nbCUnOiAxLAorICAgICAg
ICAgICAgfV0sCisgICAgICAgICAgICBbJ09TPT0ibWFjIicsCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9nbCUnOiAxLAorICAgICAgICAgICAgfV0sCisgICAg
ICAgICAgICBbJ3VzZV9vem9uZT09MScsCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
J2FuZ2xlX2VuYWJsZV9nbCUnOiAxLAorICAgICAgICAgICAgfV0sCiAgICAgICAgIF0sCiAgICAg
fSwKICAgICAnaW5jbHVkZXMnOgpAQCAtNTAsNiArNjYsMTAgQEAKICAgICAgICAgICAgICAgICAn
LicsCiAgICAgICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAogICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICdkZXBlbmRlbmNpZXMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICdj
b21taXRfaWQnLAorICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50
X3NldHRpbmdzJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJz
JzoKQEAgLTU3LDE3ICs3NywzOCBAQAogICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMnLAogICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAg
ICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVi
dWdfQmFzZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVf
REVCVUdfQU5OT1RBVElPTlMnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgogICAgICAgICAgICAgWwotICAgICAgICAg
ICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAorICAgICAgICAgICAgICAgIFsnT1M9PSJ3
aW4iJywKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdtc3ZzX2VuYWJs
ZV93aW5ydCcgOiAnMScsCisgICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6Cisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdEZWJ1Z19CYXNl
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0RFQlVHX0FOTk9UQVRJT05TJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
ICAgIFsnYW5nbGVfYnVpbGRfd2lucGhvbmU9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgJ21zdnNfZW5hYmxlX3dpbnBob25lJyA6ICcxJywKLSAgICAgICAgICAg
ICAgICB9XSwKICAgICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAKQEAgLTg3LDEzICsxMjgsOCBA
QAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEn
LAogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ21zdnNfZW5hYmxlX3dp
bnJ0JyA6ICcxJywKICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ3NoYXJlZF9saWJyYXJ5
JywKICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dp
bnBob25lPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdtc3Zz
X2VuYWJsZV93aW5waG9uZScgOiAnMScsCi0gICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAg
ICBdLAogICAgICAgICB9LAogICAgIF0sCkBAIC0xMzUsMTMgKzE3MSw4IEBACiAgICAgICAgICAg
ICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9
PTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdtc3ZzX2VuYWJsZV93aW5ydCcgOiAnMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3R5cGUnIDogJ3NoYXJlZF9saWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgIH1d
LAotICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21z
dnNfZW5hYmxlX3dpbnBob25lJyA6ICcxJywKLSAgICAgICAgICAgICAgICAgICAgICAgIH1dLAog
ICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF0K
QEAgLTE3MiwxMyArMjAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAg
ICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScsCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfZW5hYmxlX3dpbnJ0JyA6
ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnc2hhcmVkX2xpYnJh
cnknLAogICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBbJ2FuZ2xlX2J1aWxkX3dpbnBob25lPT0xJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUnIDogJzEn
LAotICAgICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgXQpAQCAtMjE2LDEzICsyNDIsOCBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xl
X2J1aWxkX3dpbnJ0PT0xJywKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucnQnIDogJzEnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0eXBlJyA6ICdzaGFyZWRfbGlicmFyeScsCiAgICAgICAgICAgICAg
ICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lu
cGhvbmU9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdtc3ZzX2VuYWJsZV93aW5waG9uZScgOiAnMScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICBdLCAjIHRhcmdldHMKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vQml0U2V0SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNTYgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBCaXRTZXRJdGVyYXRvcjoKKy8v
ICAgQSBoZWxwZXIgY2xhc3MgdG8gcXVpY2tseSBiaXRzY2FuIGJpdHNldHMgZm9yIHNldCBiaXRz
LgorLy8KKworI2lmbmRlZiBDT01NT05fQklUU0VUSVRFUkFUT1JfSF8KKyNkZWZpbmUgQ09NTU9O
X0JJVFNFVElURVJBVE9SX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPGJp
dHNldD4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAiY29tbW9u
L3BsYXRmb3JtLmgiCisKK25hbWVzcGFjZSBhbmdsZQorewordGVtcGxhdGUgPHNpemVfdCBOPgor
Y2xhc3MgQml0U2V0SXRlcmF0b3IgZmluYWwKK3sKKyAgcHVibGljOgorICAgIEJpdFNldEl0ZXJh
dG9yKGNvbnN0IHN0ZDo6Yml0c2V0PE4+ICZiaXRzZXQpOworICAgIEJpdFNldEl0ZXJhdG9yKGNv
bnN0IEJpdFNldEl0ZXJhdG9yICZvdGhlcik7CisgICAgQml0U2V0SXRlcmF0b3IgJm9wZXJhdG9y
PShjb25zdCBCaXRTZXRJdGVyYXRvciAmb3RoZXIpOworCisgICAgY2xhc3MgSXRlcmF0b3IgZmlu
YWwKKyAgICB7CisgICAgICBwdWJsaWM6CisgICAgICAgIEl0ZXJhdG9yKGNvbnN0IHN0ZDo6Yml0
c2V0PE4+ICZiaXRzKTsKKyAgICAgICAgSXRlcmF0b3IgJm9wZXJhdG9yKysoKTsKKworICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3IgJm90aGVyKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yICZvdGhlcikgY29uc3Q7CisgICAgICAgIHVu
c2lnbmVkIGxvbmcgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbUN1cnJlbnRCaXQ7IH0KKwor
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbG9uZyBnZXROZXh0Qml0KCk7CisKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBCaXRzUGVyV29yZCA9IHNpemVvZih1bnNpZ25lZCBs
b25nKSAqIDg7CisgICAgICAgIHN0ZDo6Yml0c2V0PE4+IG1CaXRzOworICAgICAgICB1bnNpZ25l
ZCBsb25nIG1DdXJyZW50Qml0OworICAgICAgICB1bnNpZ25lZCBsb25nIG1PZmZzZXQ7CisgICAg
fTsKKworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3IobUJpdHMp
OyB9CisgICAgSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gSXRlcmF0b3Ioc3RkOjpiaXRz
ZXQ8Tj4oMCkpOyB9CisKKyAgcHJpdmF0ZToKKyAgICBjb25zdCBzdGQ6OmJpdHNldDxOPiBtQml0
czsKK307CisKK3RlbXBsYXRlIDxzaXplX3QgTj4KK0JpdFNldEl0ZXJhdG9yPE4+OjpCaXRTZXRJ
dGVyYXRvcihjb25zdCBzdGQ6OmJpdHNldDxOPiAmYml0c2V0KQorICAgIDogbUJpdHMoYml0c2V0
KQoreworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IE4+CitCaXRTZXRJdGVyYXRvcjxOPjo6Qml0U2V0
SXRlcmF0b3IoY29uc3QgQml0U2V0SXRlcmF0b3IgJm90aGVyKQorICAgIDogbUJpdHMob3RoZXIu
bUJpdHMpCit7Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgTj4KK0JpdFNldEl0ZXJhdG9yPE4+ICZC
aXRTZXRJdGVyYXRvcjxOPjo6b3BlcmF0b3I9KGNvbnN0IEJpdFNldEl0ZXJhdG9yICZvdGhlcikK
K3sKKyAgICBtQml0cyA9IG90aGVyLm1CaXRzOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVt
cGxhdGUgPHNpemVfdCBOPgorQml0U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yOjpJdGVyYXRvcihj
b25zdCBzdGQ6OmJpdHNldDxOPiAmYml0cykKKyAgICA6IG1CaXRzKGJpdHMpLCBtQ3VycmVudEJp
dCgwKSwgbU9mZnNldCgwKQoreworICAgIGlmIChiaXRzLmFueSgpKQorICAgIHsKKyAgICAgICAg
bUN1cnJlbnRCaXQgPSBnZXROZXh0Qml0KCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIG1PZmZzZXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyeDo6cm91bmRVcChOLCBC
aXRzUGVyV29yZCkpOworICAgIH0KK30KKwordGVtcGxhdGUgPHNpemVfdCBOPgordHlwZW5hbWUg
Qml0U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yICZCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6
Om9wZXJhdG9yKysoKQoreworICAgIEFTU0VSVChtQml0cy5hbnkoKSk7CisgICAgbUJpdHMuc2V0
KG1DdXJyZW50Qml0IC0gbU9mZnNldCwgMCk7CisgICAgbUN1cnJlbnRCaXQgPSBnZXROZXh0Qml0
KCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitpbmxpbmUgdW5zaWduZWQgbG9uZyBTY2FuRm9y
d2FyZCh1bnNpZ25lZCBsb25nIGJpdHMpCit7CisgICAgQVNTRVJUKGJpdHMgIT0gMCk7CisjaWYg
ZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQorICAgIHVuc2lnbmVkIGxvbmcgZmlyc3RC
aXRJbmRleCA9IDB1bDsKKyAgICB1bnNpZ25lZCBjaGFyIHJldCA9IF9CaXRTY2FuRm9yd2FyZCgm
Zmlyc3RCaXRJbmRleCwgYml0cyk7CisgICAgQVNTRVJUKHJldCAhPSAwKTsKKyAgICBVTlVTRURf
QVNTRVJUSU9OX1ZBUklBQkxFKHJldCk7CisgICAgcmV0dXJuIGZpcnN0Qml0SW5kZXg7CisjZWxp
ZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BPU0lYKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihfX2J1aWx0aW5fY3R6bChiaXRzKSk7CisjZWxzZQorI2Vycm9yIFBsZWFz
ZSBpbXBsZW1lbnQgYml0LXNjYW4tZm9yd2FyZCBmb3IgeW91ciBwbGF0Zm9ybSEKKyNlbmRpZgor
fQorCit0ZW1wbGF0ZSA8c2l6ZV90IE4+Citib29sIEJpdFNldEl0ZXJhdG9yPE4+OjpJdGVyYXRv
cjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1PZmZzZXQgPT0gb3RoZXIubU9mZnNldCAmJiBtQml0cyA9PSBvdGhlci5tQml0czsKK30KKwor
dGVtcGxhdGUgPHNpemVfdCBOPgorYm9vbCBCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6Om9w
ZXJhdG9yIT0oY29uc3QgSXRlcmF0b3IgJm90aGVyKSBjb25zdAoreworICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBOPgordW5zaWduZWQgbG9uZyBC
aXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6OmdldE5leHRCaXQoKQoreworICAgIHN0YXRpYyBz
dGQ6OmJpdHNldDxOPiB3b3JkTWFzayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+
OjptYXgoKSk7CisKKyAgICB3aGlsZSAobU9mZnNldCA8IE4pCisgICAgeworICAgICAgICB1bnNp
Z25lZCBsb25nIHdvcmRCaXRzID0gKG1CaXRzICYgd29yZE1hc2spLnRvX3Vsb25nKCk7CisgICAg
ICAgIGlmICh3b3JkQml0cyAhPSAwdWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBT
Y2FuRm9yd2FyZCh3b3JkQml0cykgKyBtT2Zmc2V0OworICAgICAgICB9CisKKyAgICAgICAgbUJp
dHMgPj49IEJpdHNQZXJXb3JkOworICAgICAgICBtT2Zmc2V0ICs9IEJpdHNQZXJXb3JkOworICAg
IH0KKyAgICByZXR1cm4gMDsKK30KKworLy8gSGVscGVyIHRvIGF2b2lkIG5lZWRpbmcgdG8gc3Bl
Y2lmeSB0aGUgdGVtcGxhdGUgcGFyYW1ldGVyIHNpemUKK3RlbXBsYXRlIDxzaXplX3QgTj4KK0Jp
dFNldEl0ZXJhdG9yPE4+IEl0ZXJhdGVCaXRTZXQoY29uc3Qgc3RkOjpiaXRzZXQ8Tj4gJmJpdHNl
dCkKK3sKKyAgICByZXR1cm4gQml0U2V0SXRlcmF0b3I8Tj4oYml0c2V0KTsKK30KKworfSAgLy8g
YW5nbGUKKworI2VuZGlmICAvLyBDT01NT05fQklUU0VUSVRFUkFUT1JfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0U2V0SXRlcmF0b3JfdW5pdHRlc3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0U2V0
SXRlcmF0b3JfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi9CaXRTZXRJdGVyYXRvcl91bml0dGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEJpdFNldEl0ZXJhdG9yVGVzdDoKKy8v
ICAgVGVzdCB0aGUgSXRlcmFibGVCaXRTZXQgY2xhc3MuCisvLworCisjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKworI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorCit1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworY2xhc3MgQml0U2V0SXRlcmF0b3JUZXN0
IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK3sKKyAgcHJvdGVjdGVkOgorICAgIHN0ZDo6Yml0c2V0
PDQwPiBtU3RhdGVCaXRzOworfTsKKworLy8gU2ltcGxlIGl0ZXJhdG9yIHRlc3QuCitURVNUX0Yo
Qml0U2V0SXRlcmF0b3JUZXN0LCBJdGVyYXRvcikKK3sKKyAgICBzdGQ6OnNldDx1bnNpZ25lZCBs
b25nPiBvcmlnaW5hbFZhbHVlczsKKyAgICBvcmlnaW5hbFZhbHVlcy5pbnNlcnQoMik7CisgICAg
b3JpZ2luYWxWYWx1ZXMuaW5zZXJ0KDYpOworICAgIG9yaWdpbmFsVmFsdWVzLmluc2VydCg4KTsK
KyAgICBvcmlnaW5hbFZhbHVlcy5pbnNlcnQoMzUpOworCisgICAgZm9yICh1bnNpZ25lZCBsb25n
IHZhbHVlIDogb3JpZ2luYWxWYWx1ZXMpCisgICAgeworICAgICAgICBtU3RhdGVCaXRzLnNldCh2
YWx1ZSk7CisgICAgfQorCisgICAgc3RkOjpzZXQ8dW5zaWduZWQgbG9uZz4gcmVhZFZhbHVlczsK
KyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgYml0IDogSXRlcmF0ZUJpdFNldChtU3RhdGVCaXRzKSkK
KyAgICB7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb3JpZ2luYWxWYWx1ZXMuY291bnQoYml0KSk7
CisgICAgICAgIEVYUEVDVF9FUSgwdSwgcmVhZFZhbHVlcy5jb3VudChiaXQpKTsKKyAgICAgICAg
cmVhZFZhbHVlcy5pbnNlcnQoYml0KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfRVEob3JpZ2luYWxW
YWx1ZXMuc2l6ZSgpLCByZWFkVmFsdWVzLnNpemUoKSk7Cit9CisKKy8vIFRlc3QgYW4gZW1wdHkg
aXRlcmF0b3IuCitURVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBFbXB0eVNldCkKK3sKKyAgICAv
LyBXZSBkb24ndCB1c2UgdGhlIEZBSUwgZ3Rlc3QgbWFjcm8gaGVyZSBzaW5jZSBpdCByZXR1cm5z
IGltbWVkaWF0ZWx5LAorICAgIC8vIGNhdXNpbmcgYW4gdW5yZWFjaGFibGUgY29kZSB3YXJuaW5n
IGluIE1TVlMKKyAgICBib29sIHNhd0JpdCA9IGZhbHNlOworICAgIGZvciAodW5zaWduZWQgbG9u
ZyBiaXQgOiBJdGVyYXRlQml0U2V0KG1TdGF0ZUJpdHMpKQorICAgIHsKKyAgICAgICAgc2F3Qml0
ID0gdHJ1ZTsKKyAgICAgICAgVU5VU0VEX1ZBUklBQkxFKGJpdCk7CisgICAgfQorICAgIEVYUEVD
VF9GQUxTRShzYXdCaXQpOworfQorCisvLyBUZXN0IGl0ZXJhdGluZyBhIHJlc3VsdCBvZiBjb21i
aW5pbmcgdHdvIGJpdHNldHMuCitURVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBOb25MVmFsdWVC
aXRzZXQpCit7CisgICAgc3RkOjpiaXRzZXQ8NDA+IG90aGVyQml0czsKKworICAgIG1TdGF0ZUJp
dHMuc2V0KDEpOworICAgIG1TdGF0ZUJpdHMuc2V0KDIpOworICAgIG1TdGF0ZUJpdHMuc2V0KDMp
OworICAgIG1TdGF0ZUJpdHMuc2V0KDQpOworCisgICAgb3RoZXJCaXRzLnNldCgwKTsKKyAgICBv
dGhlckJpdHMuc2V0KDEpOworICAgIG90aGVyQml0cy5zZXQoMyk7CisgICAgb3RoZXJCaXRzLnNl
dCg1KTsKKworICAgIHN0ZDo6c2V0PHVuc2lnbmVkIGxvbmc+IHNlZW5CaXRzOworCisgICAgZm9y
ICh1bnNpZ25lZCBsb25nIGJpdCA6IEl0ZXJhdGVCaXRTZXQobVN0YXRlQml0cyAmIG90aGVyQml0
cykpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoMHUsIHNlZW5CaXRzLmNvdW50KGJpdCkpOwor
ICAgICAgICBzZWVuQml0cy5pbnNlcnQoYml0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUobVN0YXRl
Qml0c1tiaXRdKTsKKyAgICAgICAgRVhQRUNUX1RSVUUob3RoZXJCaXRzW2JpdF0pOworICAgIH0K
KworICAgIEVYUEVDVF9FUSgobVN0YXRlQml0cyAmIG90aGVyQml0cykuY291bnQoKSwgc2VlbkJp
dHMuc2l6ZSgpKTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9GbG9hdDE2VG9GbG9hdDMyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL0Zsb2F0MTZUb0Zsb2F0
MzIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9GbG9hdDE2VG9GbG9hdDMyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyMDUgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQu
CisKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKworbmFtZXNwYWNlIGdsCit7CisKK2Nv
bnN0IHN0YXRpYyB1bnNpZ25lZCBnX21hbnRpc3NhWzIwNDhdID0geworICAgIDB4MDAwMDAwMDAs
CisgICAgMHgzMzgwMDAwMCwKKyAgICAweDM0MDAwMDAwLAorICAgIDB4MzQ0MDAwMDAsCisgICAg
MHgzNDgwMDAwMCwKKyAgICAweDM0YTAwMDAwLAorICAgIDB4MzRjMDAwMDAsCisgICAgMHgzNGUw
MDAwMCwKKyAgICAweDM1MDAwMDAwLAorICAgIDB4MzUxMDAwMDAsCisgICAgMHgzNTIwMDAwMCwK
KyAgICAweDM1MzAwMDAwLAorICAgIDB4MzU0MDAwMDAsCisgICAgMHgzNTUwMDAwMCwKKyAgICAw
eDM1NjAwMDAwLAorICAgIDB4MzU3MDAwMDAsCisgICAgMHgzNTgwMDAwMCwKKyAgICAweDM1ODgw
MDAwLAorICAgIDB4MzU5MDAwMDAsCisgICAgMHgzNTk4MDAwMCwKKyAgICAweDM1YTAwMDAwLAor
ICAgIDB4MzVhODAwMDAsCisgICAgMHgzNWIwMDAwMCwKKyAgICAweDM1YjgwMDAwLAorICAgIDB4
MzVjMDAwMDAsCisgICAgMHgzNWM4MDAwMCwKKyAgICAweDM1ZDAwMDAwLAorICAgIDB4MzVkODAw
MDAsCisgICAgMHgzNWUwMDAwMCwKKyAgICAweDM1ZTgwMDAwLAorICAgIDB4MzVmMDAwMDAsCisg
ICAgMHgzNWY4MDAwMCwKKyAgICAweDM2MDAwMDAwLAorICAgIDB4MzYwNDAwMDAsCisgICAgMHgz
NjA4MDAwMCwKKyAgICAweDM2MGMwMDAwLAorICAgIDB4MzYxMDAwMDAsCisgICAgMHgzNjE0MDAw
MCwKKyAgICAweDM2MTgwMDAwLAorICAgIDB4MzYxYzAwMDAsCisgICAgMHgzNjIwMDAwMCwKKyAg
ICAweDM2MjQwMDAwLAorICAgIDB4MzYyODAwMDAsCisgICAgMHgzNjJjMDAwMCwKKyAgICAweDM2
MzAwMDAwLAorICAgIDB4MzYzNDAwMDAsCisgICAgMHgzNjM4MDAwMCwKKyAgICAweDM2M2MwMDAw
LAorICAgIDB4MzY0MDAwMDAsCisgICAgMHgzNjQ0MDAwMCwKKyAgICAweDM2NDgwMDAwLAorICAg
IDB4MzY0YzAwMDAsCisgICAgMHgzNjUwMDAwMCwKKyAgICAweDM2NTQwMDAwLAorICAgIDB4MzY1
ODAwMDAsCisgICAgMHgzNjVjMDAwMCwKKyAgICAweDM2NjAwMDAwLAorICAgIDB4MzY2NDAwMDAs
CisgICAgMHgzNjY4MDAwMCwKKyAgICAweDM2NmMwMDAwLAorICAgIDB4MzY3MDAwMDAsCisgICAg
MHgzNjc0MDAwMCwKKyAgICAweDM2NzgwMDAwLAorICAgIDB4MzY3YzAwMDAsCisgICAgMHgzNjgw
MDAwMCwKKyAgICAweDM2ODIwMDAwLAorICAgIDB4MzY4NDAwMDAsCisgICAgMHgzNjg2MDAwMCwK
KyAgICAweDM2ODgwMDAwLAorICAgIDB4MzY4YTAwMDAsCisgICAgMHgzNjhjMDAwMCwKKyAgICAw
eDM2OGUwMDAwLAorICAgIDB4MzY5MDAwMDAsCisgICAgMHgzNjkyMDAwMCwKKyAgICAweDM2OTQw
MDAwLAorICAgIDB4MzY5NjAwMDAsCisgICAgMHgzNjk4MDAwMCwKKyAgICAweDM2OWEwMDAwLAor
ICAgIDB4MzY5YzAwMDAsCisgICAgMHgzNjllMDAwMCwKKyAgICAweDM2YTAwMDAwLAorICAgIDB4
MzZhMjAwMDAsCisgICAgMHgzNmE0MDAwMCwKKyAgICAweDM2YTYwMDAwLAorICAgIDB4MzZhODAw
MDAsCisgICAgMHgzNmFhMDAwMCwKKyAgICAweDM2YWMwMDAwLAorICAgIDB4MzZhZTAwMDAsCisg
ICAgMHgzNmIwMDAwMCwKKyAgICAweDM2YjIwMDAwLAorICAgIDB4MzZiNDAwMDAsCisgICAgMHgz
NmI2MDAwMCwKKyAgICAweDM2YjgwMDAwLAorICAgIDB4MzZiYTAwMDAsCisgICAgMHgzNmJjMDAw
MCwKKyAgICAweDM2YmUwMDAwLAorICAgIDB4MzZjMDAwMDAsCisgICAgMHgzNmMyMDAwMCwKKyAg
ICAweDM2YzQwMDAwLAorICAgIDB4MzZjNjAwMDAsCisgICAgMHgzNmM4MDAwMCwKKyAgICAweDM2
Y2EwMDAwLAorICAgIDB4MzZjYzAwMDAsCisgICAgMHgzNmNlMDAwMCwKKyAgICAweDM2ZDAwMDAw
LAorICAgIDB4MzZkMjAwMDAsCisgICAgMHgzNmQ0MDAwMCwKKyAgICAweDM2ZDYwMDAwLAorICAg
IDB4MzZkODAwMDAsCisgICAgMHgzNmRhMDAwMCwKKyAgICAweDM2ZGMwMDAwLAorICAgIDB4MzZk
ZTAwMDAsCisgICAgMHgzNmUwMDAwMCwKKyAgICAweDM2ZTIwMDAwLAorICAgIDB4MzZlNDAwMDAs
CisgICAgMHgzNmU2MDAwMCwKKyAgICAweDM2ZTgwMDAwLAorICAgIDB4MzZlYTAwMDAsCisgICAg
MHgzNmVjMDAwMCwKKyAgICAweDM2ZWUwMDAwLAorICAgIDB4MzZmMDAwMDAsCisgICAgMHgzNmYy
MDAwMCwKKyAgICAweDM2ZjQwMDAwLAorICAgIDB4MzZmNjAwMDAsCisgICAgMHgzNmY4MDAwMCwK
KyAgICAweDM2ZmEwMDAwLAorICAgIDB4MzZmYzAwMDAsCisgICAgMHgzNmZlMDAwMCwKKyAgICAw
eDM3MDAwMDAwLAorICAgIDB4MzcwMTAwMDAsCisgICAgMHgzNzAyMDAwMCwKKyAgICAweDM3MDMw
MDAwLAorICAgIDB4MzcwNDAwMDAsCisgICAgMHgzNzA1MDAwMCwKKyAgICAweDM3MDYwMDAwLAor
ICAgIDB4MzcwNzAwMDAsCisgICAgMHgzNzA4MDAwMCwKKyAgICAweDM3MDkwMDAwLAorICAgIDB4
MzcwYTAwMDAsCisgICAgMHgzNzBiMDAwMCwKKyAgICAweDM3MGMwMDAwLAorICAgIDB4MzcwZDAw
MDAsCisgICAgMHgzNzBlMDAwMCwKKyAgICAweDM3MGYwMDAwLAorICAgIDB4MzcxMDAwMDAsCisg
ICAgMHgzNzExMDAwMCwKKyAgICAweDM3MTIwMDAwLAorICAgIDB4MzcxMzAwMDAsCisgICAgMHgz
NzE0MDAwMCwKKyAgICAweDM3MTUwMDAwLAorICAgIDB4MzcxNjAwMDAsCisgICAgMHgzNzE3MDAw
MCwKKyAgICAweDM3MTgwMDAwLAorICAgIDB4MzcxOTAwMDAsCisgICAgMHgzNzFhMDAwMCwKKyAg
ICAweDM3MWIwMDAwLAorICAgIDB4MzcxYzAwMDAsCisgICAgMHgzNzFkMDAwMCwKKyAgICAweDM3
MWUwMDAwLAorICAgIDB4MzcxZjAwMDAsCisgICAgMHgzNzIwMDAwMCwKKyAgICAweDM3MjEwMDAw
LAorICAgIDB4MzcyMjAwMDAsCisgICAgMHgzNzIzMDAwMCwKKyAgICAweDM3MjQwMDAwLAorICAg
IDB4MzcyNTAwMDAsCisgICAgMHgzNzI2MDAwMCwKKyAgICAweDM3MjcwMDAwLAorICAgIDB4Mzcy
ODAwMDAsCisgICAgMHgzNzI5MDAwMCwKKyAgICAweDM3MmEwMDAwLAorICAgIDB4MzcyYjAwMDAs
CisgICAgMHgzNzJjMDAwMCwKKyAgICAweDM3MmQwMDAwLAorICAgIDB4MzcyZTAwMDAsCisgICAg
MHgzNzJmMDAwMCwKKyAgICAweDM3MzAwMDAwLAorICAgIDB4MzczMTAwMDAsCisgICAgMHgzNzMy
MDAwMCwKKyAgICAweDM3MzMwMDAwLAorICAgIDB4MzczNDAwMDAsCisgICAgMHgzNzM1MDAwMCwK
KyAgICAweDM3MzYwMDAwLAorICAgIDB4MzczNzAwMDAsCisgICAgMHgzNzM4MDAwMCwKKyAgICAw
eDM3MzkwMDAwLAorICAgIDB4MzczYTAwMDAsCisgICAgMHgzNzNiMDAwMCwKKyAgICAweDM3M2Mw
MDAwLAorICAgIDB4MzczZDAwMDAsCisgICAgMHgzNzNlMDAwMCwKKyAgICAweDM3M2YwMDAwLAor
ICAgIDB4Mzc0MDAwMDAsCisgICAgMHgzNzQxMDAwMCwKKyAgICAweDM3NDIwMDAwLAorICAgIDB4
Mzc0MzAwMDAsCisgICAgMHgzNzQ0MDAwMCwKKyAgICAweDM3NDUwMDAwLAorICAgIDB4Mzc0NjAw
MDAsCisgICAgMHgzNzQ3MDAwMCwKKyAgICAweDM3NDgwMDAwLAorICAgIDB4Mzc0OTAwMDAsCisg
ICAgMHgzNzRhMDAwMCwKKyAgICAweDM3NGIwMDAwLAorICAgIDB4Mzc0YzAwMDAsCisgICAgMHgz
NzRkMDAwMCwKKyAgICAweDM3NGUwMDAwLAorICAgIDB4Mzc0ZjAwMDAsCisgICAgMHgzNzUwMDAw
MCwKKyAgICAweDM3NTEwMDAwLAorICAgIDB4Mzc1MjAwMDAsCisgICAgMHgzNzUzMDAwMCwKKyAg
ICAweDM3NTQwMDAwLAorICAgIDB4Mzc1NTAwMDAsCisgICAgMHgzNzU2MDAwMCwKKyAgICAweDM3
NTcwMDAwLAorICAgIDB4Mzc1ODAwMDAsCisgICAgMHgzNzU5MDAwMCwKKyAgICAweDM3NWEwMDAw
LAorICAgIDB4Mzc1YjAwMDAsCisgICAgMHgzNzVjMDAwMCwKKyAgICAweDM3NWQwMDAwLAorICAg
IDB4Mzc1ZTAwMDAsCisgICAgMHgzNzVmMDAwMCwKKyAgICAweDM3NjAwMDAwLAorICAgIDB4Mzc2
MTAwMDAsCisgICAgMHgzNzYyMDAwMCwKKyAgICAweDM3NjMwMDAwLAorICAgIDB4Mzc2NDAwMDAs
CisgICAgMHgzNzY1MDAwMCwKKyAgICAweDM3NjYwMDAwLAorICAgIDB4Mzc2NzAwMDAsCisgICAg
MHgzNzY4MDAwMCwKKyAgICAweDM3NjkwMDAwLAorICAgIDB4Mzc2YTAwMDAsCisgICAgMHgzNzZi
MDAwMCwKKyAgICAweDM3NmMwMDAwLAorICAgIDB4Mzc2ZDAwMDAsCisgICAgMHgzNzZlMDAwMCwK
KyAgICAweDM3NmYwMDAwLAorICAgIDB4Mzc3MDAwMDAsCisgICAgMHgzNzcxMDAwMCwKKyAgICAw
eDM3NzIwMDAwLAorICAgIDB4Mzc3MzAwMDAsCisgICAgMHgzNzc0MDAwMCwKKyAgICAweDM3NzUw
MDAwLAorICAgIDB4Mzc3NjAwMDAsCisgICAgMHgzNzc3MDAwMCwKKyAgICAweDM3NzgwMDAwLAor
ICAgIDB4Mzc3OTAwMDAsCisgICAgMHgzNzdhMDAwMCwKKyAgICAweDM3N2IwMDAwLAorICAgIDB4
Mzc3YzAwMDAsCisgICAgMHgzNzdkMDAwMCwKKyAgICAweDM3N2UwMDAwLAorICAgIDB4Mzc3ZjAw
MDAsCisgICAgMHgzNzgwMDAwMCwKKyAgICAweDM3ODA4MDAwLAorICAgIDB4Mzc4MTAwMDAsCisg
ICAgMHgzNzgxODAwMCwKKyAgICAweDM3ODIwMDAwLAorICAgIDB4Mzc4MjgwMDAsCisgICAgMHgz
NzgzMDAwMCwKKyAgICAweDM3ODM4MDAwLAorICAgIDB4Mzc4NDAwMDAsCisgICAgMHgzNzg0ODAw
MCwKKyAgICAweDM3ODUwMDAwLAorICAgIDB4Mzc4NTgwMDAsCisgICAgMHgzNzg2MDAwMCwKKyAg
ICAweDM3ODY4MDAwLAorICAgIDB4Mzc4NzAwMDAsCisgICAgMHgzNzg3ODAwMCwKKyAgICAweDM3
ODgwMDAwLAorICAgIDB4Mzc4ODgwMDAsCisgICAgMHgzNzg5MDAwMCwKKyAgICAweDM3ODk4MDAw
LAorICAgIDB4Mzc4YTAwMDAsCisgICAgMHgzNzhhODAwMCwKKyAgICAweDM3OGIwMDAwLAorICAg
IDB4Mzc4YjgwMDAsCisgICAgMHgzNzhjMDAwMCwKKyAgICAweDM3OGM4MDAwLAorICAgIDB4Mzc4
ZDAwMDAsCisgICAgMHgzNzhkODAwMCwKKyAgICAweDM3OGUwMDAwLAorICAgIDB4Mzc4ZTgwMDAs
CisgICAgMHgzNzhmMDAwMCwKKyAgICAweDM3OGY4MDAwLAorICAgIDB4Mzc5MDAwMDAsCisgICAg
MHgzNzkwODAwMCwKKyAgICAweDM3OTEwMDAwLAorICAgIDB4Mzc5MTgwMDAsCisgICAgMHgzNzky
MDAwMCwKKyAgICAweDM3OTI4MDAwLAorICAgIDB4Mzc5MzAwMDAsCisgICAgMHgzNzkzODAwMCwK
KyAgICAweDM3OTQwMDAwLAorICAgIDB4Mzc5NDgwMDAsCisgICAgMHgzNzk1MDAwMCwKKyAgICAw
eDM3OTU4MDAwLAorICAgIDB4Mzc5NjAwMDAsCisgICAgMHgzNzk2ODAwMCwKKyAgICAweDM3OTcw
MDAwLAorICAgIDB4Mzc5NzgwMDAsCisgICAgMHgzNzk4MDAwMCwKKyAgICAweDM3OTg4MDAwLAor
ICAgIDB4Mzc5OTAwMDAsCisgICAgMHgzNzk5ODAwMCwKKyAgICAweDM3OWEwMDAwLAorICAgIDB4
Mzc5YTgwMDAsCisgICAgMHgzNzliMDAwMCwKKyAgICAweDM3OWI4MDAwLAorICAgIDB4Mzc5YzAw
MDAsCisgICAgMHgzNzljODAwMCwKKyAgICAweDM3OWQwMDAwLAorICAgIDB4Mzc5ZDgwMDAsCisg
ICAgMHgzNzllMDAwMCwKKyAgICAweDM3OWU4MDAwLAorICAgIDB4Mzc5ZjAwMDAsCisgICAgMHgz
NzlmODAwMCwKKyAgICAweDM3YTAwMDAwLAorICAgIDB4MzdhMDgwMDAsCisgICAgMHgzN2ExMDAw
MCwKKyAgICAweDM3YTE4MDAwLAorICAgIDB4MzdhMjAwMDAsCisgICAgMHgzN2EyODAwMCwKKyAg
ICAweDM3YTMwMDAwLAorICAgIDB4MzdhMzgwMDAsCisgICAgMHgzN2E0MDAwMCwKKyAgICAweDM3
YTQ4MDAwLAorICAgIDB4MzdhNTAwMDAsCisgICAgMHgzN2E1ODAwMCwKKyAgICAweDM3YTYwMDAw
LAorICAgIDB4MzdhNjgwMDAsCisgICAgMHgzN2E3MDAwMCwKKyAgICAweDM3YTc4MDAwLAorICAg
IDB4MzdhODAwMDAsCisgICAgMHgzN2E4ODAwMCwKKyAgICAweDM3YTkwMDAwLAorICAgIDB4Mzdh
OTgwMDAsCisgICAgMHgzN2FhMDAwMCwKKyAgICAweDM3YWE4MDAwLAorICAgIDB4MzdhYjAwMDAs
CisgICAgMHgzN2FiODAwMCwKKyAgICAweDM3YWMwMDAwLAorICAgIDB4MzdhYzgwMDAsCisgICAg
MHgzN2FkMDAwMCwKKyAgICAweDM3YWQ4MDAwLAorICAgIDB4MzdhZTAwMDAsCisgICAgMHgzN2Fl
ODAwMCwKKyAgICAweDM3YWYwMDAwLAorICAgIDB4MzdhZjgwMDAsCisgICAgMHgzN2IwMDAwMCwK
KyAgICAweDM3YjA4MDAwLAorICAgIDB4MzdiMTAwMDAsCisgICAgMHgzN2IxODAwMCwKKyAgICAw
eDM3YjIwMDAwLAorICAgIDB4MzdiMjgwMDAsCisgICAgMHgzN2IzMDAwMCwKKyAgICAweDM3YjM4
MDAwLAorICAgIDB4MzdiNDAwMDAsCisgICAgMHgzN2I0ODAwMCwKKyAgICAweDM3YjUwMDAwLAor
ICAgIDB4MzdiNTgwMDAsCisgICAgMHgzN2I2MDAwMCwKKyAgICAweDM3YjY4MDAwLAorICAgIDB4
MzdiNzAwMDAsCisgICAgMHgzN2I3ODAwMCwKKyAgICAweDM3YjgwMDAwLAorICAgIDB4MzdiODgw
MDAsCisgICAgMHgzN2I5MDAwMCwKKyAgICAweDM3Yjk4MDAwLAorICAgIDB4MzdiYTAwMDAsCisg
ICAgMHgzN2JhODAwMCwKKyAgICAweDM3YmIwMDAwLAorICAgIDB4MzdiYjgwMDAsCisgICAgMHgz
N2JjMDAwMCwKKyAgICAweDM3YmM4MDAwLAorICAgIDB4MzdiZDAwMDAsCisgICAgMHgzN2JkODAw
MCwKKyAgICAweDM3YmUwMDAwLAorICAgIDB4MzdiZTgwMDAsCisgICAgMHgzN2JmMDAwMCwKKyAg
ICAweDM3YmY4MDAwLAorICAgIDB4MzdjMDAwMDAsCisgICAgMHgzN2MwODAwMCwKKyAgICAweDM3
YzEwMDAwLAorICAgIDB4MzdjMTgwMDAsCisgICAgMHgzN2MyMDAwMCwKKyAgICAweDM3YzI4MDAw
LAorICAgIDB4MzdjMzAwMDAsCisgICAgMHgzN2MzODAwMCwKKyAgICAweDM3YzQwMDAwLAorICAg
IDB4MzdjNDgwMDAsCisgICAgMHgzN2M1MDAwMCwKKyAgICAweDM3YzU4MDAwLAorICAgIDB4Mzdj
NjAwMDAsCisgICAgMHgzN2M2ODAwMCwKKyAgICAweDM3YzcwMDAwLAorICAgIDB4MzdjNzgwMDAs
CisgICAgMHgzN2M4MDAwMCwKKyAgICAweDM3Yzg4MDAwLAorICAgIDB4MzdjOTAwMDAsCisgICAg
MHgzN2M5ODAwMCwKKyAgICAweDM3Y2EwMDAwLAorICAgIDB4MzdjYTgwMDAsCisgICAgMHgzN2Ni
MDAwMCwKKyAgICAweDM3Y2I4MDAwLAorICAgIDB4MzdjYzAwMDAsCisgICAgMHgzN2NjODAwMCwK
KyAgICAweDM3Y2QwMDAwLAorICAgIDB4MzdjZDgwMDAsCisgICAgMHgzN2NlMDAwMCwKKyAgICAw
eDM3Y2U4MDAwLAorICAgIDB4MzdjZjAwMDAsCisgICAgMHgzN2NmODAwMCwKKyAgICAweDM3ZDAw
MDAwLAorICAgIDB4MzdkMDgwMDAsCisgICAgMHgzN2QxMDAwMCwKKyAgICAweDM3ZDE4MDAwLAor
ICAgIDB4MzdkMjAwMDAsCisgICAgMHgzN2QyODAwMCwKKyAgICAweDM3ZDMwMDAwLAorICAgIDB4
MzdkMzgwMDAsCisgICAgMHgzN2Q0MDAwMCwKKyAgICAweDM3ZDQ4MDAwLAorICAgIDB4MzdkNTAw
MDAsCisgICAgMHgzN2Q1ODAwMCwKKyAgICAweDM3ZDYwMDAwLAorICAgIDB4MzdkNjgwMDAsCisg
ICAgMHgzN2Q3MDAwMCwKKyAgICAweDM3ZDc4MDAwLAorICAgIDB4MzdkODAwMDAsCisgICAgMHgz
N2Q4ODAwMCwKKyAgICAweDM3ZDkwMDAwLAorICAgIDB4MzdkOTgwMDAsCisgICAgMHgzN2RhMDAw
MCwKKyAgICAweDM3ZGE4MDAwLAorICAgIDB4MzdkYjAwMDAsCisgICAgMHgzN2RiODAwMCwKKyAg
ICAweDM3ZGMwMDAwLAorICAgIDB4MzdkYzgwMDAsCisgICAgMHgzN2RkMDAwMCwKKyAgICAweDM3
ZGQ4MDAwLAorICAgIDB4MzdkZTAwMDAsCisgICAgMHgzN2RlODAwMCwKKyAgICAweDM3ZGYwMDAw
LAorICAgIDB4MzdkZjgwMDAsCisgICAgMHgzN2UwMDAwMCwKKyAgICAweDM3ZTA4MDAwLAorICAg
IDB4MzdlMTAwMDAsCisgICAgMHgzN2UxODAwMCwKKyAgICAweDM3ZTIwMDAwLAorICAgIDB4Mzdl
MjgwMDAsCisgICAgMHgzN2UzMDAwMCwKKyAgICAweDM3ZTM4MDAwLAorICAgIDB4MzdlNDAwMDAs
CisgICAgMHgzN2U0ODAwMCwKKyAgICAweDM3ZTUwMDAwLAorICAgIDB4MzdlNTgwMDAsCisgICAg
MHgzN2U2MDAwMCwKKyAgICAweDM3ZTY4MDAwLAorICAgIDB4MzdlNzAwMDAsCisgICAgMHgzN2U3
ODAwMCwKKyAgICAweDM3ZTgwMDAwLAorICAgIDB4MzdlODgwMDAsCisgICAgMHgzN2U5MDAwMCwK
KyAgICAweDM3ZTk4MDAwLAorICAgIDB4MzdlYTAwMDAsCisgICAgMHgzN2VhODAwMCwKKyAgICAw
eDM3ZWIwMDAwLAorICAgIDB4MzdlYjgwMDAsCisgICAgMHgzN2VjMDAwMCwKKyAgICAweDM3ZWM4
MDAwLAorICAgIDB4MzdlZDAwMDAsCisgICAgMHgzN2VkODAwMCwKKyAgICAweDM3ZWUwMDAwLAor
ICAgIDB4MzdlZTgwMDAsCisgICAgMHgzN2VmMDAwMCwKKyAgICAweDM3ZWY4MDAwLAorICAgIDB4
MzdmMDAwMDAsCisgICAgMHgzN2YwODAwMCwKKyAgICAweDM3ZjEwMDAwLAorICAgIDB4MzdmMTgw
MDAsCisgICAgMHgzN2YyMDAwMCwKKyAgICAweDM3ZjI4MDAwLAorICAgIDB4MzdmMzAwMDAsCisg
ICAgMHgzN2YzODAwMCwKKyAgICAweDM3ZjQwMDAwLAorICAgIDB4MzdmNDgwMDAsCisgICAgMHgz
N2Y1MDAwMCwKKyAgICAweDM3ZjU4MDAwLAorICAgIDB4MzdmNjAwMDAsCisgICAgMHgzN2Y2ODAw
MCwKKyAgICAweDM3ZjcwMDAwLAorICAgIDB4MzdmNzgwMDAsCisgICAgMHgzN2Y4MDAwMCwKKyAg
ICAweDM3Zjg4MDAwLAorICAgIDB4MzdmOTAwMDAsCisgICAgMHgzN2Y5ODAwMCwKKyAgICAweDM3
ZmEwMDAwLAorICAgIDB4MzdmYTgwMDAsCisgICAgMHgzN2ZiMDAwMCwKKyAgICAweDM3ZmI4MDAw
LAorICAgIDB4MzdmYzAwMDAsCisgICAgMHgzN2ZjODAwMCwKKyAgICAweDM3ZmQwMDAwLAorICAg
IDB4MzdmZDgwMDAsCisgICAgMHgzN2ZlMDAwMCwKKyAgICAweDM3ZmU4MDAwLAorICAgIDB4Mzdm
ZjAwMDAsCisgICAgMHgzN2ZmODAwMCwKKyAgICAweDM4MDAwMDAwLAorICAgIDB4MzgwMDQwMDAs
CisgICAgMHgzODAwODAwMCwKKyAgICAweDM4MDBjMDAwLAorICAgIDB4MzgwMTAwMDAsCisgICAg
MHgzODAxNDAwMCwKKyAgICAweDM4MDE4MDAwLAorICAgIDB4MzgwMWMwMDAsCisgICAgMHgzODAy
MDAwMCwKKyAgICAweDM4MDI0MDAwLAorICAgIDB4MzgwMjgwMDAsCisgICAgMHgzODAyYzAwMCwK
KyAgICAweDM4MDMwMDAwLAorICAgIDB4MzgwMzQwMDAsCisgICAgMHgzODAzODAwMCwKKyAgICAw
eDM4MDNjMDAwLAorICAgIDB4MzgwNDAwMDAsCisgICAgMHgzODA0NDAwMCwKKyAgICAweDM4MDQ4
MDAwLAorICAgIDB4MzgwNGMwMDAsCisgICAgMHgzODA1MDAwMCwKKyAgICAweDM4MDU0MDAwLAor
ICAgIDB4MzgwNTgwMDAsCisgICAgMHgzODA1YzAwMCwKKyAgICAweDM4MDYwMDAwLAorICAgIDB4
MzgwNjQwMDAsCisgICAgMHgzODA2ODAwMCwKKyAgICAweDM4MDZjMDAwLAorICAgIDB4MzgwNzAw
MDAsCisgICAgMHgzODA3NDAwMCwKKyAgICAweDM4MDc4MDAwLAorICAgIDB4MzgwN2MwMDAsCisg
ICAgMHgzODA4MDAwMCwKKyAgICAweDM4MDg0MDAwLAorICAgIDB4MzgwODgwMDAsCisgICAgMHgz
ODA4YzAwMCwKKyAgICAweDM4MDkwMDAwLAorICAgIDB4MzgwOTQwMDAsCisgICAgMHgzODA5ODAw
MCwKKyAgICAweDM4MDljMDAwLAorICAgIDB4MzgwYTAwMDAsCisgICAgMHgzODBhNDAwMCwKKyAg
ICAweDM4MGE4MDAwLAorICAgIDB4MzgwYWMwMDAsCisgICAgMHgzODBiMDAwMCwKKyAgICAweDM4
MGI0MDAwLAorICAgIDB4MzgwYjgwMDAsCisgICAgMHgzODBiYzAwMCwKKyAgICAweDM4MGMwMDAw
LAorICAgIDB4MzgwYzQwMDAsCisgICAgMHgzODBjODAwMCwKKyAgICAweDM4MGNjMDAwLAorICAg
IDB4MzgwZDAwMDAsCisgICAgMHgzODBkNDAwMCwKKyAgICAweDM4MGQ4MDAwLAorICAgIDB4Mzgw
ZGMwMDAsCisgICAgMHgzODBlMDAwMCwKKyAgICAweDM4MGU0MDAwLAorICAgIDB4MzgwZTgwMDAs
CisgICAgMHgzODBlYzAwMCwKKyAgICAweDM4MGYwMDAwLAorICAgIDB4MzgwZjQwMDAsCisgICAg
MHgzODBmODAwMCwKKyAgICAweDM4MGZjMDAwLAorICAgIDB4MzgxMDAwMDAsCisgICAgMHgzODEw
NDAwMCwKKyAgICAweDM4MTA4MDAwLAorICAgIDB4MzgxMGMwMDAsCisgICAgMHgzODExMDAwMCwK
KyAgICAweDM4MTE0MDAwLAorICAgIDB4MzgxMTgwMDAsCisgICAgMHgzODExYzAwMCwKKyAgICAw
eDM4MTIwMDAwLAorICAgIDB4MzgxMjQwMDAsCisgICAgMHgzODEyODAwMCwKKyAgICAweDM4MTJj
MDAwLAorICAgIDB4MzgxMzAwMDAsCisgICAgMHgzODEzNDAwMCwKKyAgICAweDM4MTM4MDAwLAor
ICAgIDB4MzgxM2MwMDAsCisgICAgMHgzODE0MDAwMCwKKyAgICAweDM4MTQ0MDAwLAorICAgIDB4
MzgxNDgwMDAsCisgICAgMHgzODE0YzAwMCwKKyAgICAweDM4MTUwMDAwLAorICAgIDB4MzgxNTQw
MDAsCisgICAgMHgzODE1ODAwMCwKKyAgICAweDM4MTVjMDAwLAorICAgIDB4MzgxNjAwMDAsCisg
ICAgMHgzODE2NDAwMCwKKyAgICAweDM4MTY4MDAwLAorICAgIDB4MzgxNmMwMDAsCisgICAgMHgz
ODE3MDAwMCwKKyAgICAweDM4MTc0MDAwLAorICAgIDB4MzgxNzgwMDAsCisgICAgMHgzODE3YzAw
MCwKKyAgICAweDM4MTgwMDAwLAorICAgIDB4MzgxODQwMDAsCisgICAgMHgzODE4ODAwMCwKKyAg
ICAweDM4MThjMDAwLAorICAgIDB4MzgxOTAwMDAsCisgICAgMHgzODE5NDAwMCwKKyAgICAweDM4
MTk4MDAwLAorICAgIDB4MzgxOWMwMDAsCisgICAgMHgzODFhMDAwMCwKKyAgICAweDM4MWE0MDAw
LAorICAgIDB4MzgxYTgwMDAsCisgICAgMHgzODFhYzAwMCwKKyAgICAweDM4MWIwMDAwLAorICAg
IDB4MzgxYjQwMDAsCisgICAgMHgzODFiODAwMCwKKyAgICAweDM4MWJjMDAwLAorICAgIDB4Mzgx
YzAwMDAsCisgICAgMHgzODFjNDAwMCwKKyAgICAweDM4MWM4MDAwLAorICAgIDB4MzgxY2MwMDAs
CisgICAgMHgzODFkMDAwMCwKKyAgICAweDM4MWQ0MDAwLAorICAgIDB4MzgxZDgwMDAsCisgICAg
MHgzODFkYzAwMCwKKyAgICAweDM4MWUwMDAwLAorICAgIDB4MzgxZTQwMDAsCisgICAgMHgzODFl
ODAwMCwKKyAgICAweDM4MWVjMDAwLAorICAgIDB4MzgxZjAwMDAsCisgICAgMHgzODFmNDAwMCwK
KyAgICAweDM4MWY4MDAwLAorICAgIDB4MzgxZmMwMDAsCisgICAgMHgzODIwMDAwMCwKKyAgICAw
eDM4MjA0MDAwLAorICAgIDB4MzgyMDgwMDAsCisgICAgMHgzODIwYzAwMCwKKyAgICAweDM4MjEw
MDAwLAorICAgIDB4MzgyMTQwMDAsCisgICAgMHgzODIxODAwMCwKKyAgICAweDM4MjFjMDAwLAor
ICAgIDB4MzgyMjAwMDAsCisgICAgMHgzODIyNDAwMCwKKyAgICAweDM4MjI4MDAwLAorICAgIDB4
MzgyMmMwMDAsCisgICAgMHgzODIzMDAwMCwKKyAgICAweDM4MjM0MDAwLAorICAgIDB4MzgyMzgw
MDAsCisgICAgMHgzODIzYzAwMCwKKyAgICAweDM4MjQwMDAwLAorICAgIDB4MzgyNDQwMDAsCisg
ICAgMHgzODI0ODAwMCwKKyAgICAweDM4MjRjMDAwLAorICAgIDB4MzgyNTAwMDAsCisgICAgMHgz
ODI1NDAwMCwKKyAgICAweDM4MjU4MDAwLAorICAgIDB4MzgyNWMwMDAsCisgICAgMHgzODI2MDAw
MCwKKyAgICAweDM4MjY0MDAwLAorICAgIDB4MzgyNjgwMDAsCisgICAgMHgzODI2YzAwMCwKKyAg
ICAweDM4MjcwMDAwLAorICAgIDB4MzgyNzQwMDAsCisgICAgMHgzODI3ODAwMCwKKyAgICAweDM4
MjdjMDAwLAorICAgIDB4MzgyODAwMDAsCisgICAgMHgzODI4NDAwMCwKKyAgICAweDM4Mjg4MDAw
LAorICAgIDB4MzgyOGMwMDAsCisgICAgMHgzODI5MDAwMCwKKyAgICAweDM4Mjk0MDAwLAorICAg
IDB4MzgyOTgwMDAsCisgICAgMHgzODI5YzAwMCwKKyAgICAweDM4MmEwMDAwLAorICAgIDB4Mzgy
YTQwMDAsCisgICAgMHgzODJhODAwMCwKKyAgICAweDM4MmFjMDAwLAorICAgIDB4MzgyYjAwMDAs
CisgICAgMHgzODJiNDAwMCwKKyAgICAweDM4MmI4MDAwLAorICAgIDB4MzgyYmMwMDAsCisgICAg
MHgzODJjMDAwMCwKKyAgICAweDM4MmM0MDAwLAorICAgIDB4MzgyYzgwMDAsCisgICAgMHgzODJj
YzAwMCwKKyAgICAweDM4MmQwMDAwLAorICAgIDB4MzgyZDQwMDAsCisgICAgMHgzODJkODAwMCwK
KyAgICAweDM4MmRjMDAwLAorICAgIDB4MzgyZTAwMDAsCisgICAgMHgzODJlNDAwMCwKKyAgICAw
eDM4MmU4MDAwLAorICAgIDB4MzgyZWMwMDAsCisgICAgMHgzODJmMDAwMCwKKyAgICAweDM4MmY0
MDAwLAorICAgIDB4MzgyZjgwMDAsCisgICAgMHgzODJmYzAwMCwKKyAgICAweDM4MzAwMDAwLAor
ICAgIDB4MzgzMDQwMDAsCisgICAgMHgzODMwODAwMCwKKyAgICAweDM4MzBjMDAwLAorICAgIDB4
MzgzMTAwMDAsCisgICAgMHgzODMxNDAwMCwKKyAgICAweDM4MzE4MDAwLAorICAgIDB4MzgzMWMw
MDAsCisgICAgMHgzODMyMDAwMCwKKyAgICAweDM4MzI0MDAwLAorICAgIDB4MzgzMjgwMDAsCisg
ICAgMHgzODMyYzAwMCwKKyAgICAweDM4MzMwMDAwLAorICAgIDB4MzgzMzQwMDAsCisgICAgMHgz
ODMzODAwMCwKKyAgICAweDM4MzNjMDAwLAorICAgIDB4MzgzNDAwMDAsCisgICAgMHgzODM0NDAw
MCwKKyAgICAweDM4MzQ4MDAwLAorICAgIDB4MzgzNGMwMDAsCisgICAgMHgzODM1MDAwMCwKKyAg
ICAweDM4MzU0MDAwLAorICAgIDB4MzgzNTgwMDAsCisgICAgMHgzODM1YzAwMCwKKyAgICAweDM4
MzYwMDAwLAorICAgIDB4MzgzNjQwMDAsCisgICAgMHgzODM2ODAwMCwKKyAgICAweDM4MzZjMDAw
LAorICAgIDB4MzgzNzAwMDAsCisgICAgMHgzODM3NDAwMCwKKyAgICAweDM4Mzc4MDAwLAorICAg
IDB4MzgzN2MwMDAsCisgICAgMHgzODM4MDAwMCwKKyAgICAweDM4Mzg0MDAwLAorICAgIDB4Mzgz
ODgwMDAsCisgICAgMHgzODM4YzAwMCwKKyAgICAweDM4MzkwMDAwLAorICAgIDB4MzgzOTQwMDAs
CisgICAgMHgzODM5ODAwMCwKKyAgICAweDM4MzljMDAwLAorICAgIDB4MzgzYTAwMDAsCisgICAg
MHgzODNhNDAwMCwKKyAgICAweDM4M2E4MDAwLAorICAgIDB4MzgzYWMwMDAsCisgICAgMHgzODNi
MDAwMCwKKyAgICAweDM4M2I0MDAwLAorICAgIDB4MzgzYjgwMDAsCisgICAgMHgzODNiYzAwMCwK
KyAgICAweDM4M2MwMDAwLAorICAgIDB4MzgzYzQwMDAsCisgICAgMHgzODNjODAwMCwKKyAgICAw
eDM4M2NjMDAwLAorICAgIDB4MzgzZDAwMDAsCisgICAgMHgzODNkNDAwMCwKKyAgICAweDM4M2Q4
MDAwLAorICAgIDB4MzgzZGMwMDAsCisgICAgMHgzODNlMDAwMCwKKyAgICAweDM4M2U0MDAwLAor
ICAgIDB4MzgzZTgwMDAsCisgICAgMHgzODNlYzAwMCwKKyAgICAweDM4M2YwMDAwLAorICAgIDB4
MzgzZjQwMDAsCisgICAgMHgzODNmODAwMCwKKyAgICAweDM4M2ZjMDAwLAorICAgIDB4Mzg0MDAw
MDAsCisgICAgMHgzODQwNDAwMCwKKyAgICAweDM4NDA4MDAwLAorICAgIDB4Mzg0MGMwMDAsCisg
ICAgMHgzODQxMDAwMCwKKyAgICAweDM4NDE0MDAwLAorICAgIDB4Mzg0MTgwMDAsCisgICAgMHgz
ODQxYzAwMCwKKyAgICAweDM4NDIwMDAwLAorICAgIDB4Mzg0MjQwMDAsCisgICAgMHgzODQyODAw
MCwKKyAgICAweDM4NDJjMDAwLAorICAgIDB4Mzg0MzAwMDAsCisgICAgMHgzODQzNDAwMCwKKyAg
ICAweDM4NDM4MDAwLAorICAgIDB4Mzg0M2MwMDAsCisgICAgMHgzODQ0MDAwMCwKKyAgICAweDM4
NDQ0MDAwLAorICAgIDB4Mzg0NDgwMDAsCisgICAgMHgzODQ0YzAwMCwKKyAgICAweDM4NDUwMDAw
LAorICAgIDB4Mzg0NTQwMDAsCisgICAgMHgzODQ1ODAwMCwKKyAgICAweDM4NDVjMDAwLAorICAg
IDB4Mzg0NjAwMDAsCisgICAgMHgzODQ2NDAwMCwKKyAgICAweDM4NDY4MDAwLAorICAgIDB4Mzg0
NmMwMDAsCisgICAgMHgzODQ3MDAwMCwKKyAgICAweDM4NDc0MDAwLAorICAgIDB4Mzg0NzgwMDAs
CisgICAgMHgzODQ3YzAwMCwKKyAgICAweDM4NDgwMDAwLAorICAgIDB4Mzg0ODQwMDAsCisgICAg
MHgzODQ4ODAwMCwKKyAgICAweDM4NDhjMDAwLAorICAgIDB4Mzg0OTAwMDAsCisgICAgMHgzODQ5
NDAwMCwKKyAgICAweDM4NDk4MDAwLAorICAgIDB4Mzg0OWMwMDAsCisgICAgMHgzODRhMDAwMCwK
KyAgICAweDM4NGE0MDAwLAorICAgIDB4Mzg0YTgwMDAsCisgICAgMHgzODRhYzAwMCwKKyAgICAw
eDM4NGIwMDAwLAorICAgIDB4Mzg0YjQwMDAsCisgICAgMHgzODRiODAwMCwKKyAgICAweDM4NGJj
MDAwLAorICAgIDB4Mzg0YzAwMDAsCisgICAgMHgzODRjNDAwMCwKKyAgICAweDM4NGM4MDAwLAor
ICAgIDB4Mzg0Y2MwMDAsCisgICAgMHgzODRkMDAwMCwKKyAgICAweDM4NGQ0MDAwLAorICAgIDB4
Mzg0ZDgwMDAsCisgICAgMHgzODRkYzAwMCwKKyAgICAweDM4NGUwMDAwLAorICAgIDB4Mzg0ZTQw
MDAsCisgICAgMHgzODRlODAwMCwKKyAgICAweDM4NGVjMDAwLAorICAgIDB4Mzg0ZjAwMDAsCisg
ICAgMHgzODRmNDAwMCwKKyAgICAweDM4NGY4MDAwLAorICAgIDB4Mzg0ZmMwMDAsCisgICAgMHgz
ODUwMDAwMCwKKyAgICAweDM4NTA0MDAwLAorICAgIDB4Mzg1MDgwMDAsCisgICAgMHgzODUwYzAw
MCwKKyAgICAweDM4NTEwMDAwLAorICAgIDB4Mzg1MTQwMDAsCisgICAgMHgzODUxODAwMCwKKyAg
ICAweDM4NTFjMDAwLAorICAgIDB4Mzg1MjAwMDAsCisgICAgMHgzODUyNDAwMCwKKyAgICAweDM4
NTI4MDAwLAorICAgIDB4Mzg1MmMwMDAsCisgICAgMHgzODUzMDAwMCwKKyAgICAweDM4NTM0MDAw
LAorICAgIDB4Mzg1MzgwMDAsCisgICAgMHgzODUzYzAwMCwKKyAgICAweDM4NTQwMDAwLAorICAg
IDB4Mzg1NDQwMDAsCisgICAgMHgzODU0ODAwMCwKKyAgICAweDM4NTRjMDAwLAorICAgIDB4Mzg1
NTAwMDAsCisgICAgMHgzODU1NDAwMCwKKyAgICAweDM4NTU4MDAwLAorICAgIDB4Mzg1NWMwMDAs
CisgICAgMHgzODU2MDAwMCwKKyAgICAweDM4NTY0MDAwLAorICAgIDB4Mzg1NjgwMDAsCisgICAg
MHgzODU2YzAwMCwKKyAgICAweDM4NTcwMDAwLAorICAgIDB4Mzg1NzQwMDAsCisgICAgMHgzODU3
ODAwMCwKKyAgICAweDM4NTdjMDAwLAorICAgIDB4Mzg1ODAwMDAsCisgICAgMHgzODU4NDAwMCwK
KyAgICAweDM4NTg4MDAwLAorICAgIDB4Mzg1OGMwMDAsCisgICAgMHgzODU5MDAwMCwKKyAgICAw
eDM4NTk0MDAwLAorICAgIDB4Mzg1OTgwMDAsCisgICAgMHgzODU5YzAwMCwKKyAgICAweDM4NWEw
MDAwLAorICAgIDB4Mzg1YTQwMDAsCisgICAgMHgzODVhODAwMCwKKyAgICAweDM4NWFjMDAwLAor
ICAgIDB4Mzg1YjAwMDAsCisgICAgMHgzODViNDAwMCwKKyAgICAweDM4NWI4MDAwLAorICAgIDB4
Mzg1YmMwMDAsCisgICAgMHgzODVjMDAwMCwKKyAgICAweDM4NWM0MDAwLAorICAgIDB4Mzg1Yzgw
MDAsCisgICAgMHgzODVjYzAwMCwKKyAgICAweDM4NWQwMDAwLAorICAgIDB4Mzg1ZDQwMDAsCisg
ICAgMHgzODVkODAwMCwKKyAgICAweDM4NWRjMDAwLAorICAgIDB4Mzg1ZTAwMDAsCisgICAgMHgz
ODVlNDAwMCwKKyAgICAweDM4NWU4MDAwLAorICAgIDB4Mzg1ZWMwMDAsCisgICAgMHgzODVmMDAw
MCwKKyAgICAweDM4NWY0MDAwLAorICAgIDB4Mzg1ZjgwMDAsCisgICAgMHgzODVmYzAwMCwKKyAg
ICAweDM4NjAwMDAwLAorICAgIDB4Mzg2MDQwMDAsCisgICAgMHgzODYwODAwMCwKKyAgICAweDM4
NjBjMDAwLAorICAgIDB4Mzg2MTAwMDAsCisgICAgMHgzODYxNDAwMCwKKyAgICAweDM4NjE4MDAw
LAorICAgIDB4Mzg2MWMwMDAsCisgICAgMHgzODYyMDAwMCwKKyAgICAweDM4NjI0MDAwLAorICAg
IDB4Mzg2MjgwMDAsCisgICAgMHgzODYyYzAwMCwKKyAgICAweDM4NjMwMDAwLAorICAgIDB4Mzg2
MzQwMDAsCisgICAgMHgzODYzODAwMCwKKyAgICAweDM4NjNjMDAwLAorICAgIDB4Mzg2NDAwMDAs
CisgICAgMHgzODY0NDAwMCwKKyAgICAweDM4NjQ4MDAwLAorICAgIDB4Mzg2NGMwMDAsCisgICAg
MHgzODY1MDAwMCwKKyAgICAweDM4NjU0MDAwLAorICAgIDB4Mzg2NTgwMDAsCisgICAgMHgzODY1
YzAwMCwKKyAgICAweDM4NjYwMDAwLAorICAgIDB4Mzg2NjQwMDAsCisgICAgMHgzODY2ODAwMCwK
KyAgICAweDM4NjZjMDAwLAorICAgIDB4Mzg2NzAwMDAsCisgICAgMHgzODY3NDAwMCwKKyAgICAw
eDM4Njc4MDAwLAorICAgIDB4Mzg2N2MwMDAsCisgICAgMHgzODY4MDAwMCwKKyAgICAweDM4Njg0
MDAwLAorICAgIDB4Mzg2ODgwMDAsCisgICAgMHgzODY4YzAwMCwKKyAgICAweDM4NjkwMDAwLAor
ICAgIDB4Mzg2OTQwMDAsCisgICAgMHgzODY5ODAwMCwKKyAgICAweDM4NjljMDAwLAorICAgIDB4
Mzg2YTAwMDAsCisgICAgMHgzODZhNDAwMCwKKyAgICAweDM4NmE4MDAwLAorICAgIDB4Mzg2YWMw
MDAsCisgICAgMHgzODZiMDAwMCwKKyAgICAweDM4NmI0MDAwLAorICAgIDB4Mzg2YjgwMDAsCisg
ICAgMHgzODZiYzAwMCwKKyAgICAweDM4NmMwMDAwLAorICAgIDB4Mzg2YzQwMDAsCisgICAgMHgz
ODZjODAwMCwKKyAgICAweDM4NmNjMDAwLAorICAgIDB4Mzg2ZDAwMDAsCisgICAgMHgzODZkNDAw
MCwKKyAgICAweDM4NmQ4MDAwLAorICAgIDB4Mzg2ZGMwMDAsCisgICAgMHgzODZlMDAwMCwKKyAg
ICAweDM4NmU0MDAwLAorICAgIDB4Mzg2ZTgwMDAsCisgICAgMHgzODZlYzAwMCwKKyAgICAweDM4
NmYwMDAwLAorICAgIDB4Mzg2ZjQwMDAsCisgICAgMHgzODZmODAwMCwKKyAgICAweDM4NmZjMDAw
LAorICAgIDB4Mzg3MDAwMDAsCisgICAgMHgzODcwNDAwMCwKKyAgICAweDM4NzA4MDAwLAorICAg
IDB4Mzg3MGMwMDAsCisgICAgMHgzODcxMDAwMCwKKyAgICAweDM4NzE0MDAwLAorICAgIDB4Mzg3
MTgwMDAsCisgICAgMHgzODcxYzAwMCwKKyAgICAweDM4NzIwMDAwLAorICAgIDB4Mzg3MjQwMDAs
CisgICAgMHgzODcyODAwMCwKKyAgICAweDM4NzJjMDAwLAorICAgIDB4Mzg3MzAwMDAsCisgICAg
MHgzODczNDAwMCwKKyAgICAweDM4NzM4MDAwLAorICAgIDB4Mzg3M2MwMDAsCisgICAgMHgzODc0
MDAwMCwKKyAgICAweDM4NzQ0MDAwLAorICAgIDB4Mzg3NDgwMDAsCisgICAgMHgzODc0YzAwMCwK
KyAgICAweDM4NzUwMDAwLAorICAgIDB4Mzg3NTQwMDAsCisgICAgMHgzODc1ODAwMCwKKyAgICAw
eDM4NzVjMDAwLAorICAgIDB4Mzg3NjAwMDAsCisgICAgMHgzODc2NDAwMCwKKyAgICAweDM4NzY4
MDAwLAorICAgIDB4Mzg3NmMwMDAsCisgICAgMHgzODc3MDAwMCwKKyAgICAweDM4Nzc0MDAwLAor
ICAgIDB4Mzg3NzgwMDAsCisgICAgMHgzODc3YzAwMCwKKyAgICAweDM4NzgwMDAwLAorICAgIDB4
Mzg3ODQwMDAsCisgICAgMHgzODc4ODAwMCwKKyAgICAweDM4NzhjMDAwLAorICAgIDB4Mzg3OTAw
MDAsCisgICAgMHgzODc5NDAwMCwKKyAgICAweDM4Nzk4MDAwLAorICAgIDB4Mzg3OWMwMDAsCisg
ICAgMHgzODdhMDAwMCwKKyAgICAweDM4N2E0MDAwLAorICAgIDB4Mzg3YTgwMDAsCisgICAgMHgz
ODdhYzAwMCwKKyAgICAweDM4N2IwMDAwLAorICAgIDB4Mzg3YjQwMDAsCisgICAgMHgzODdiODAw
MCwKKyAgICAweDM4N2JjMDAwLAorICAgIDB4Mzg3YzAwMDAsCisgICAgMHgzODdjNDAwMCwKKyAg
ICAweDM4N2M4MDAwLAorICAgIDB4Mzg3Y2MwMDAsCisgICAgMHgzODdkMDAwMCwKKyAgICAweDM4
N2Q0MDAwLAorICAgIDB4Mzg3ZDgwMDAsCisgICAgMHgzODdkYzAwMCwKKyAgICAweDM4N2UwMDAw
LAorICAgIDB4Mzg3ZTQwMDAsCisgICAgMHgzODdlODAwMCwKKyAgICAweDM4N2VjMDAwLAorICAg
IDB4Mzg3ZjAwMDAsCisgICAgMHgzODdmNDAwMCwKKyAgICAweDM4N2Y4MDAwLAorICAgIDB4Mzg3
ZmMwMDAsCisgICAgMHgzODAwMDAwMCwKKyAgICAweDM4MDAyMDAwLAorICAgIDB4MzgwMDQwMDAs
CisgICAgMHgzODAwNjAwMCwKKyAgICAweDM4MDA4MDAwLAorICAgIDB4MzgwMGEwMDAsCisgICAg
MHgzODAwYzAwMCwKKyAgICAweDM4MDBlMDAwLAorICAgIDB4MzgwMTAwMDAsCisgICAgMHgzODAx
MjAwMCwKKyAgICAweDM4MDE0MDAwLAorICAgIDB4MzgwMTYwMDAsCisgICAgMHgzODAxODAwMCwK
KyAgICAweDM4MDFhMDAwLAorICAgIDB4MzgwMWMwMDAsCisgICAgMHgzODAxZTAwMCwKKyAgICAw
eDM4MDIwMDAwLAorICAgIDB4MzgwMjIwMDAsCisgICAgMHgzODAyNDAwMCwKKyAgICAweDM4MDI2
MDAwLAorICAgIDB4MzgwMjgwMDAsCisgICAgMHgzODAyYTAwMCwKKyAgICAweDM4MDJjMDAwLAor
ICAgIDB4MzgwMmUwMDAsCisgICAgMHgzODAzMDAwMCwKKyAgICAweDM4MDMyMDAwLAorICAgIDB4
MzgwMzQwMDAsCisgICAgMHgzODAzNjAwMCwKKyAgICAweDM4MDM4MDAwLAorICAgIDB4MzgwM2Ew
MDAsCisgICAgMHgzODAzYzAwMCwKKyAgICAweDM4MDNlMDAwLAorICAgIDB4MzgwNDAwMDAsCisg
ICAgMHgzODA0MjAwMCwKKyAgICAweDM4MDQ0MDAwLAorICAgIDB4MzgwNDYwMDAsCisgICAgMHgz
ODA0ODAwMCwKKyAgICAweDM4MDRhMDAwLAorICAgIDB4MzgwNGMwMDAsCisgICAgMHgzODA0ZTAw
MCwKKyAgICAweDM4MDUwMDAwLAorICAgIDB4MzgwNTIwMDAsCisgICAgMHgzODA1NDAwMCwKKyAg
ICAweDM4MDU2MDAwLAorICAgIDB4MzgwNTgwMDAsCisgICAgMHgzODA1YTAwMCwKKyAgICAweDM4
MDVjMDAwLAorICAgIDB4MzgwNWUwMDAsCisgICAgMHgzODA2MDAwMCwKKyAgICAweDM4MDYyMDAw
LAorICAgIDB4MzgwNjQwMDAsCisgICAgMHgzODA2NjAwMCwKKyAgICAweDM4MDY4MDAwLAorICAg
IDB4MzgwNmEwMDAsCisgICAgMHgzODA2YzAwMCwKKyAgICAweDM4MDZlMDAwLAorICAgIDB4Mzgw
NzAwMDAsCisgICAgMHgzODA3MjAwMCwKKyAgICAweDM4MDc0MDAwLAorICAgIDB4MzgwNzYwMDAs
CisgICAgMHgzODA3ODAwMCwKKyAgICAweDM4MDdhMDAwLAorICAgIDB4MzgwN2MwMDAsCisgICAg
MHgzODA3ZTAwMCwKKyAgICAweDM4MDgwMDAwLAorICAgIDB4MzgwODIwMDAsCisgICAgMHgzODA4
NDAwMCwKKyAgICAweDM4MDg2MDAwLAorICAgIDB4MzgwODgwMDAsCisgICAgMHgzODA4YTAwMCwK
KyAgICAweDM4MDhjMDAwLAorICAgIDB4MzgwOGUwMDAsCisgICAgMHgzODA5MDAwMCwKKyAgICAw
eDM4MDkyMDAwLAorICAgIDB4MzgwOTQwMDAsCisgICAgMHgzODA5NjAwMCwKKyAgICAweDM4MDk4
MDAwLAorICAgIDB4MzgwOWEwMDAsCisgICAgMHgzODA5YzAwMCwKKyAgICAweDM4MDllMDAwLAor
ICAgIDB4MzgwYTAwMDAsCisgICAgMHgzODBhMjAwMCwKKyAgICAweDM4MGE0MDAwLAorICAgIDB4
MzgwYTYwMDAsCisgICAgMHgzODBhODAwMCwKKyAgICAweDM4MGFhMDAwLAorICAgIDB4MzgwYWMw
MDAsCisgICAgMHgzODBhZTAwMCwKKyAgICAweDM4MGIwMDAwLAorICAgIDB4MzgwYjIwMDAsCisg
ICAgMHgzODBiNDAwMCwKKyAgICAweDM4MGI2MDAwLAorICAgIDB4MzgwYjgwMDAsCisgICAgMHgz
ODBiYTAwMCwKKyAgICAweDM4MGJjMDAwLAorICAgIDB4MzgwYmUwMDAsCisgICAgMHgzODBjMDAw
MCwKKyAgICAweDM4MGMyMDAwLAorICAgIDB4MzgwYzQwMDAsCisgICAgMHgzODBjNjAwMCwKKyAg
ICAweDM4MGM4MDAwLAorICAgIDB4MzgwY2EwMDAsCisgICAgMHgzODBjYzAwMCwKKyAgICAweDM4
MGNlMDAwLAorICAgIDB4MzgwZDAwMDAsCisgICAgMHgzODBkMjAwMCwKKyAgICAweDM4MGQ0MDAw
LAorICAgIDB4MzgwZDYwMDAsCisgICAgMHgzODBkODAwMCwKKyAgICAweDM4MGRhMDAwLAorICAg
IDB4MzgwZGMwMDAsCisgICAgMHgzODBkZTAwMCwKKyAgICAweDM4MGUwMDAwLAorICAgIDB4Mzgw
ZTIwMDAsCisgICAgMHgzODBlNDAwMCwKKyAgICAweDM4MGU2MDAwLAorICAgIDB4MzgwZTgwMDAs
CisgICAgMHgzODBlYTAwMCwKKyAgICAweDM4MGVjMDAwLAorICAgIDB4MzgwZWUwMDAsCisgICAg
MHgzODBmMDAwMCwKKyAgICAweDM4MGYyMDAwLAorICAgIDB4MzgwZjQwMDAsCisgICAgMHgzODBm
NjAwMCwKKyAgICAweDM4MGY4MDAwLAorICAgIDB4MzgwZmEwMDAsCisgICAgMHgzODBmYzAwMCwK
KyAgICAweDM4MGZlMDAwLAorICAgIDB4MzgxMDAwMDAsCisgICAgMHgzODEwMjAwMCwKKyAgICAw
eDM4MTA0MDAwLAorICAgIDB4MzgxMDYwMDAsCisgICAgMHgzODEwODAwMCwKKyAgICAweDM4MTBh
MDAwLAorICAgIDB4MzgxMGMwMDAsCisgICAgMHgzODEwZTAwMCwKKyAgICAweDM4MTEwMDAwLAor
ICAgIDB4MzgxMTIwMDAsCisgICAgMHgzODExNDAwMCwKKyAgICAweDM4MTE2MDAwLAorICAgIDB4
MzgxMTgwMDAsCisgICAgMHgzODExYTAwMCwKKyAgICAweDM4MTFjMDAwLAorICAgIDB4MzgxMWUw
MDAsCisgICAgMHgzODEyMDAwMCwKKyAgICAweDM4MTIyMDAwLAorICAgIDB4MzgxMjQwMDAsCisg
ICAgMHgzODEyNjAwMCwKKyAgICAweDM4MTI4MDAwLAorICAgIDB4MzgxMmEwMDAsCisgICAgMHgz
ODEyYzAwMCwKKyAgICAweDM4MTJlMDAwLAorICAgIDB4MzgxMzAwMDAsCisgICAgMHgzODEzMjAw
MCwKKyAgICAweDM4MTM0MDAwLAorICAgIDB4MzgxMzYwMDAsCisgICAgMHgzODEzODAwMCwKKyAg
ICAweDM4MTNhMDAwLAorICAgIDB4MzgxM2MwMDAsCisgICAgMHgzODEzZTAwMCwKKyAgICAweDM4
MTQwMDAwLAorICAgIDB4MzgxNDIwMDAsCisgICAgMHgzODE0NDAwMCwKKyAgICAweDM4MTQ2MDAw
LAorICAgIDB4MzgxNDgwMDAsCisgICAgMHgzODE0YTAwMCwKKyAgICAweDM4MTRjMDAwLAorICAg
IDB4MzgxNGUwMDAsCisgICAgMHgzODE1MDAwMCwKKyAgICAweDM4MTUyMDAwLAorICAgIDB4Mzgx
NTQwMDAsCisgICAgMHgzODE1NjAwMCwKKyAgICAweDM4MTU4MDAwLAorICAgIDB4MzgxNWEwMDAs
CisgICAgMHgzODE1YzAwMCwKKyAgICAweDM4MTVlMDAwLAorICAgIDB4MzgxNjAwMDAsCisgICAg
MHgzODE2MjAwMCwKKyAgICAweDM4MTY0MDAwLAorICAgIDB4MzgxNjYwMDAsCisgICAgMHgzODE2
ODAwMCwKKyAgICAweDM4MTZhMDAwLAorICAgIDB4MzgxNmMwMDAsCisgICAgMHgzODE2ZTAwMCwK
KyAgICAweDM4MTcwMDAwLAorICAgIDB4MzgxNzIwMDAsCisgICAgMHgzODE3NDAwMCwKKyAgICAw
eDM4MTc2MDAwLAorICAgIDB4MzgxNzgwMDAsCisgICAgMHgzODE3YTAwMCwKKyAgICAweDM4MTdj
MDAwLAorICAgIDB4MzgxN2UwMDAsCisgICAgMHgzODE4MDAwMCwKKyAgICAweDM4MTgyMDAwLAor
ICAgIDB4MzgxODQwMDAsCisgICAgMHgzODE4NjAwMCwKKyAgICAweDM4MTg4MDAwLAorICAgIDB4
MzgxOGEwMDAsCisgICAgMHgzODE4YzAwMCwKKyAgICAweDM4MThlMDAwLAorICAgIDB4MzgxOTAw
MDAsCisgICAgMHgzODE5MjAwMCwKKyAgICAweDM4MTk0MDAwLAorICAgIDB4MzgxOTYwMDAsCisg
ICAgMHgzODE5ODAwMCwKKyAgICAweDM4MTlhMDAwLAorICAgIDB4MzgxOWMwMDAsCisgICAgMHgz
ODE5ZTAwMCwKKyAgICAweDM4MWEwMDAwLAorICAgIDB4MzgxYTIwMDAsCisgICAgMHgzODFhNDAw
MCwKKyAgICAweDM4MWE2MDAwLAorICAgIDB4MzgxYTgwMDAsCisgICAgMHgzODFhYTAwMCwKKyAg
ICAweDM4MWFjMDAwLAorICAgIDB4MzgxYWUwMDAsCisgICAgMHgzODFiMDAwMCwKKyAgICAweDM4
MWIyMDAwLAorICAgIDB4MzgxYjQwMDAsCisgICAgMHgzODFiNjAwMCwKKyAgICAweDM4MWI4MDAw
LAorICAgIDB4MzgxYmEwMDAsCisgICAgMHgzODFiYzAwMCwKKyAgICAweDM4MWJlMDAwLAorICAg
IDB4MzgxYzAwMDAsCisgICAgMHgzODFjMjAwMCwKKyAgICAweDM4MWM0MDAwLAorICAgIDB4Mzgx
YzYwMDAsCisgICAgMHgzODFjODAwMCwKKyAgICAweDM4MWNhMDAwLAorICAgIDB4MzgxY2MwMDAs
CisgICAgMHgzODFjZTAwMCwKKyAgICAweDM4MWQwMDAwLAorICAgIDB4MzgxZDIwMDAsCisgICAg
MHgzODFkNDAwMCwKKyAgICAweDM4MWQ2MDAwLAorICAgIDB4MzgxZDgwMDAsCisgICAgMHgzODFk
YTAwMCwKKyAgICAweDM4MWRjMDAwLAorICAgIDB4MzgxZGUwMDAsCisgICAgMHgzODFlMDAwMCwK
KyAgICAweDM4MWUyMDAwLAorICAgIDB4MzgxZTQwMDAsCisgICAgMHgzODFlNjAwMCwKKyAgICAw
eDM4MWU4MDAwLAorICAgIDB4MzgxZWEwMDAsCisgICAgMHgzODFlYzAwMCwKKyAgICAweDM4MWVl
MDAwLAorICAgIDB4MzgxZjAwMDAsCisgICAgMHgzODFmMjAwMCwKKyAgICAweDM4MWY0MDAwLAor
ICAgIDB4MzgxZjYwMDAsCisgICAgMHgzODFmODAwMCwKKyAgICAweDM4MWZhMDAwLAorICAgIDB4
MzgxZmMwMDAsCisgICAgMHgzODFmZTAwMCwKKyAgICAweDM4MjAwMDAwLAorICAgIDB4MzgyMDIw
MDAsCisgICAgMHgzODIwNDAwMCwKKyAgICAweDM4MjA2MDAwLAorICAgIDB4MzgyMDgwMDAsCisg
ICAgMHgzODIwYTAwMCwKKyAgICAweDM4MjBjMDAwLAorICAgIDB4MzgyMGUwMDAsCisgICAgMHgz
ODIxMDAwMCwKKyAgICAweDM4MjEyMDAwLAorICAgIDB4MzgyMTQwMDAsCisgICAgMHgzODIxNjAw
MCwKKyAgICAweDM4MjE4MDAwLAorICAgIDB4MzgyMWEwMDAsCisgICAgMHgzODIxYzAwMCwKKyAg
ICAweDM4MjFlMDAwLAorICAgIDB4MzgyMjAwMDAsCisgICAgMHgzODIyMjAwMCwKKyAgICAweDM4
MjI0MDAwLAorICAgIDB4MzgyMjYwMDAsCisgICAgMHgzODIyODAwMCwKKyAgICAweDM4MjJhMDAw
LAorICAgIDB4MzgyMmMwMDAsCisgICAgMHgzODIyZTAwMCwKKyAgICAweDM4MjMwMDAwLAorICAg
IDB4MzgyMzIwMDAsCisgICAgMHgzODIzNDAwMCwKKyAgICAweDM4MjM2MDAwLAorICAgIDB4Mzgy
MzgwMDAsCisgICAgMHgzODIzYTAwMCwKKyAgICAweDM4MjNjMDAwLAorICAgIDB4MzgyM2UwMDAs
CisgICAgMHgzODI0MDAwMCwKKyAgICAweDM4MjQyMDAwLAorICAgIDB4MzgyNDQwMDAsCisgICAg
MHgzODI0NjAwMCwKKyAgICAweDM4MjQ4MDAwLAorICAgIDB4MzgyNGEwMDAsCisgICAgMHgzODI0
YzAwMCwKKyAgICAweDM4MjRlMDAwLAorICAgIDB4MzgyNTAwMDAsCisgICAgMHgzODI1MjAwMCwK
KyAgICAweDM4MjU0MDAwLAorICAgIDB4MzgyNTYwMDAsCisgICAgMHgzODI1ODAwMCwKKyAgICAw
eDM4MjVhMDAwLAorICAgIDB4MzgyNWMwMDAsCisgICAgMHgzODI1ZTAwMCwKKyAgICAweDM4MjYw
MDAwLAorICAgIDB4MzgyNjIwMDAsCisgICAgMHgzODI2NDAwMCwKKyAgICAweDM4MjY2MDAwLAor
ICAgIDB4MzgyNjgwMDAsCisgICAgMHgzODI2YTAwMCwKKyAgICAweDM4MjZjMDAwLAorICAgIDB4
MzgyNmUwMDAsCisgICAgMHgzODI3MDAwMCwKKyAgICAweDM4MjcyMDAwLAorICAgIDB4MzgyNzQw
MDAsCisgICAgMHgzODI3NjAwMCwKKyAgICAweDM4Mjc4MDAwLAorICAgIDB4MzgyN2EwMDAsCisg
ICAgMHgzODI3YzAwMCwKKyAgICAweDM4MjdlMDAwLAorICAgIDB4MzgyODAwMDAsCisgICAgMHgz
ODI4MjAwMCwKKyAgICAweDM4Mjg0MDAwLAorICAgIDB4MzgyODYwMDAsCisgICAgMHgzODI4ODAw
MCwKKyAgICAweDM4MjhhMDAwLAorICAgIDB4MzgyOGMwMDAsCisgICAgMHgzODI4ZTAwMCwKKyAg
ICAweDM4MjkwMDAwLAorICAgIDB4MzgyOTIwMDAsCisgICAgMHgzODI5NDAwMCwKKyAgICAweDM4
Mjk2MDAwLAorICAgIDB4MzgyOTgwMDAsCisgICAgMHgzODI5YTAwMCwKKyAgICAweDM4MjljMDAw
LAorICAgIDB4MzgyOWUwMDAsCisgICAgMHgzODJhMDAwMCwKKyAgICAweDM4MmEyMDAwLAorICAg
IDB4MzgyYTQwMDAsCisgICAgMHgzODJhNjAwMCwKKyAgICAweDM4MmE4MDAwLAorICAgIDB4Mzgy
YWEwMDAsCisgICAgMHgzODJhYzAwMCwKKyAgICAweDM4MmFlMDAwLAorICAgIDB4MzgyYjAwMDAs
CisgICAgMHgzODJiMjAwMCwKKyAgICAweDM4MmI0MDAwLAorICAgIDB4MzgyYjYwMDAsCisgICAg
MHgzODJiODAwMCwKKyAgICAweDM4MmJhMDAwLAorICAgIDB4MzgyYmMwMDAsCisgICAgMHgzODJi
ZTAwMCwKKyAgICAweDM4MmMwMDAwLAorICAgIDB4MzgyYzIwMDAsCisgICAgMHgzODJjNDAwMCwK
KyAgICAweDM4MmM2MDAwLAorICAgIDB4MzgyYzgwMDAsCisgICAgMHgzODJjYTAwMCwKKyAgICAw
eDM4MmNjMDAwLAorICAgIDB4MzgyY2UwMDAsCisgICAgMHgzODJkMDAwMCwKKyAgICAweDM4MmQy
MDAwLAorICAgIDB4MzgyZDQwMDAsCisgICAgMHgzODJkNjAwMCwKKyAgICAweDM4MmQ4MDAwLAor
ICAgIDB4MzgyZGEwMDAsCisgICAgMHgzODJkYzAwMCwKKyAgICAweDM4MmRlMDAwLAorICAgIDB4
MzgyZTAwMDAsCisgICAgMHgzODJlMjAwMCwKKyAgICAweDM4MmU0MDAwLAorICAgIDB4MzgyZTYw
MDAsCisgICAgMHgzODJlODAwMCwKKyAgICAweDM4MmVhMDAwLAorICAgIDB4MzgyZWMwMDAsCisg
ICAgMHgzODJlZTAwMCwKKyAgICAweDM4MmYwMDAwLAorICAgIDB4MzgyZjIwMDAsCisgICAgMHgz
ODJmNDAwMCwKKyAgICAweDM4MmY2MDAwLAorICAgIDB4MzgyZjgwMDAsCisgICAgMHgzODJmYTAw
MCwKKyAgICAweDM4MmZjMDAwLAorICAgIDB4MzgyZmUwMDAsCisgICAgMHgzODMwMDAwMCwKKyAg
ICAweDM4MzAyMDAwLAorICAgIDB4MzgzMDQwMDAsCisgICAgMHgzODMwNjAwMCwKKyAgICAweDM4
MzA4MDAwLAorICAgIDB4MzgzMGEwMDAsCisgICAgMHgzODMwYzAwMCwKKyAgICAweDM4MzBlMDAw
LAorICAgIDB4MzgzMTAwMDAsCisgICAgMHgzODMxMjAwMCwKKyAgICAweDM4MzE0MDAwLAorICAg
IDB4MzgzMTYwMDAsCisgICAgMHgzODMxODAwMCwKKyAgICAweDM4MzFhMDAwLAorICAgIDB4Mzgz
MWMwMDAsCisgICAgMHgzODMxZTAwMCwKKyAgICAweDM4MzIwMDAwLAorICAgIDB4MzgzMjIwMDAs
CisgICAgMHgzODMyNDAwMCwKKyAgICAweDM4MzI2MDAwLAorICAgIDB4MzgzMjgwMDAsCisgICAg
MHgzODMyYTAwMCwKKyAgICAweDM4MzJjMDAwLAorICAgIDB4MzgzMmUwMDAsCisgICAgMHgzODMz
MDAwMCwKKyAgICAweDM4MzMyMDAwLAorICAgIDB4MzgzMzQwMDAsCisgICAgMHgzODMzNjAwMCwK
KyAgICAweDM4MzM4MDAwLAorICAgIDB4MzgzM2EwMDAsCisgICAgMHgzODMzYzAwMCwKKyAgICAw
eDM4MzNlMDAwLAorICAgIDB4MzgzNDAwMDAsCisgICAgMHgzODM0MjAwMCwKKyAgICAweDM4MzQ0
MDAwLAorICAgIDB4MzgzNDYwMDAsCisgICAgMHgzODM0ODAwMCwKKyAgICAweDM4MzRhMDAwLAor
ICAgIDB4MzgzNGMwMDAsCisgICAgMHgzODM0ZTAwMCwKKyAgICAweDM4MzUwMDAwLAorICAgIDB4
MzgzNTIwMDAsCisgICAgMHgzODM1NDAwMCwKKyAgICAweDM4MzU2MDAwLAorICAgIDB4MzgzNTgw
MDAsCisgICAgMHgzODM1YTAwMCwKKyAgICAweDM4MzVjMDAwLAorICAgIDB4MzgzNWUwMDAsCisg
ICAgMHgzODM2MDAwMCwKKyAgICAweDM4MzYyMDAwLAorICAgIDB4MzgzNjQwMDAsCisgICAgMHgz
ODM2NjAwMCwKKyAgICAweDM4MzY4MDAwLAorICAgIDB4MzgzNmEwMDAsCisgICAgMHgzODM2YzAw
MCwKKyAgICAweDM4MzZlMDAwLAorICAgIDB4MzgzNzAwMDAsCisgICAgMHgzODM3MjAwMCwKKyAg
ICAweDM4Mzc0MDAwLAorICAgIDB4MzgzNzYwMDAsCisgICAgMHgzODM3ODAwMCwKKyAgICAweDM4
MzdhMDAwLAorICAgIDB4MzgzN2MwMDAsCisgICAgMHgzODM3ZTAwMCwKKyAgICAweDM4MzgwMDAw
LAorICAgIDB4MzgzODIwMDAsCisgICAgMHgzODM4NDAwMCwKKyAgICAweDM4Mzg2MDAwLAorICAg
IDB4MzgzODgwMDAsCisgICAgMHgzODM4YTAwMCwKKyAgICAweDM4MzhjMDAwLAorICAgIDB4Mzgz
OGUwMDAsCisgICAgMHgzODM5MDAwMCwKKyAgICAweDM4MzkyMDAwLAorICAgIDB4MzgzOTQwMDAs
CisgICAgMHgzODM5NjAwMCwKKyAgICAweDM4Mzk4MDAwLAorICAgIDB4MzgzOWEwMDAsCisgICAg
MHgzODM5YzAwMCwKKyAgICAweDM4MzllMDAwLAorICAgIDB4MzgzYTAwMDAsCisgICAgMHgzODNh
MjAwMCwKKyAgICAweDM4M2E0MDAwLAorICAgIDB4MzgzYTYwMDAsCisgICAgMHgzODNhODAwMCwK
KyAgICAweDM4M2FhMDAwLAorICAgIDB4MzgzYWMwMDAsCisgICAgMHgzODNhZTAwMCwKKyAgICAw
eDM4M2IwMDAwLAorICAgIDB4MzgzYjIwMDAsCisgICAgMHgzODNiNDAwMCwKKyAgICAweDM4M2I2
MDAwLAorICAgIDB4MzgzYjgwMDAsCisgICAgMHgzODNiYTAwMCwKKyAgICAweDM4M2JjMDAwLAor
ICAgIDB4MzgzYmUwMDAsCisgICAgMHgzODNjMDAwMCwKKyAgICAweDM4M2MyMDAwLAorICAgIDB4
MzgzYzQwMDAsCisgICAgMHgzODNjNjAwMCwKKyAgICAweDM4M2M4MDAwLAorICAgIDB4MzgzY2Ew
MDAsCisgICAgMHgzODNjYzAwMCwKKyAgICAweDM4M2NlMDAwLAorICAgIDB4MzgzZDAwMDAsCisg
ICAgMHgzODNkMjAwMCwKKyAgICAweDM4M2Q0MDAwLAorICAgIDB4MzgzZDYwMDAsCisgICAgMHgz
ODNkODAwMCwKKyAgICAweDM4M2RhMDAwLAorICAgIDB4MzgzZGMwMDAsCisgICAgMHgzODNkZTAw
MCwKKyAgICAweDM4M2UwMDAwLAorICAgIDB4MzgzZTIwMDAsCisgICAgMHgzODNlNDAwMCwKKyAg
ICAweDM4M2U2MDAwLAorICAgIDB4MzgzZTgwMDAsCisgICAgMHgzODNlYTAwMCwKKyAgICAweDM4
M2VjMDAwLAorICAgIDB4MzgzZWUwMDAsCisgICAgMHgzODNmMDAwMCwKKyAgICAweDM4M2YyMDAw
LAorICAgIDB4MzgzZjQwMDAsCisgICAgMHgzODNmNjAwMCwKKyAgICAweDM4M2Y4MDAwLAorICAg
IDB4MzgzZmEwMDAsCisgICAgMHgzODNmYzAwMCwKKyAgICAweDM4M2ZlMDAwLAorICAgIDB4Mzg0
MDAwMDAsCisgICAgMHgzODQwMjAwMCwKKyAgICAweDM4NDA0MDAwLAorICAgIDB4Mzg0MDYwMDAs
CisgICAgMHgzODQwODAwMCwKKyAgICAweDM4NDBhMDAwLAorICAgIDB4Mzg0MGMwMDAsCisgICAg
MHgzODQwZTAwMCwKKyAgICAweDM4NDEwMDAwLAorICAgIDB4Mzg0MTIwMDAsCisgICAgMHgzODQx
NDAwMCwKKyAgICAweDM4NDE2MDAwLAorICAgIDB4Mzg0MTgwMDAsCisgICAgMHgzODQxYTAwMCwK
KyAgICAweDM4NDFjMDAwLAorICAgIDB4Mzg0MWUwMDAsCisgICAgMHgzODQyMDAwMCwKKyAgICAw
eDM4NDIyMDAwLAorICAgIDB4Mzg0MjQwMDAsCisgICAgMHgzODQyNjAwMCwKKyAgICAweDM4NDI4
MDAwLAorICAgIDB4Mzg0MmEwMDAsCisgICAgMHgzODQyYzAwMCwKKyAgICAweDM4NDJlMDAwLAor
ICAgIDB4Mzg0MzAwMDAsCisgICAgMHgzODQzMjAwMCwKKyAgICAweDM4NDM0MDAwLAorICAgIDB4
Mzg0MzYwMDAsCisgICAgMHgzODQzODAwMCwKKyAgICAweDM4NDNhMDAwLAorICAgIDB4Mzg0M2Mw
MDAsCisgICAgMHgzODQzZTAwMCwKKyAgICAweDM4NDQwMDAwLAorICAgIDB4Mzg0NDIwMDAsCisg
ICAgMHgzODQ0NDAwMCwKKyAgICAweDM4NDQ2MDAwLAorICAgIDB4Mzg0NDgwMDAsCisgICAgMHgz
ODQ0YTAwMCwKKyAgICAweDM4NDRjMDAwLAorICAgIDB4Mzg0NGUwMDAsCisgICAgMHgzODQ1MDAw
MCwKKyAgICAweDM4NDUyMDAwLAorICAgIDB4Mzg0NTQwMDAsCisgICAgMHgzODQ1NjAwMCwKKyAg
ICAweDM4NDU4MDAwLAorICAgIDB4Mzg0NWEwMDAsCisgICAgMHgzODQ1YzAwMCwKKyAgICAweDM4
NDVlMDAwLAorICAgIDB4Mzg0NjAwMDAsCisgICAgMHgzODQ2MjAwMCwKKyAgICAweDM4NDY0MDAw
LAorICAgIDB4Mzg0NjYwMDAsCisgICAgMHgzODQ2ODAwMCwKKyAgICAweDM4NDZhMDAwLAorICAg
IDB4Mzg0NmMwMDAsCisgICAgMHgzODQ2ZTAwMCwKKyAgICAweDM4NDcwMDAwLAorICAgIDB4Mzg0
NzIwMDAsCisgICAgMHgzODQ3NDAwMCwKKyAgICAweDM4NDc2MDAwLAorICAgIDB4Mzg0NzgwMDAs
CisgICAgMHgzODQ3YTAwMCwKKyAgICAweDM4NDdjMDAwLAorICAgIDB4Mzg0N2UwMDAsCisgICAg
MHgzODQ4MDAwMCwKKyAgICAweDM4NDgyMDAwLAorICAgIDB4Mzg0ODQwMDAsCisgICAgMHgzODQ4
NjAwMCwKKyAgICAweDM4NDg4MDAwLAorICAgIDB4Mzg0OGEwMDAsCisgICAgMHgzODQ4YzAwMCwK
KyAgICAweDM4NDhlMDAwLAorICAgIDB4Mzg0OTAwMDAsCisgICAgMHgzODQ5MjAwMCwKKyAgICAw
eDM4NDk0MDAwLAorICAgIDB4Mzg0OTYwMDAsCisgICAgMHgzODQ5ODAwMCwKKyAgICAweDM4NDlh
MDAwLAorICAgIDB4Mzg0OWMwMDAsCisgICAgMHgzODQ5ZTAwMCwKKyAgICAweDM4NGEwMDAwLAor
ICAgIDB4Mzg0YTIwMDAsCisgICAgMHgzODRhNDAwMCwKKyAgICAweDM4NGE2MDAwLAorICAgIDB4
Mzg0YTgwMDAsCisgICAgMHgzODRhYTAwMCwKKyAgICAweDM4NGFjMDAwLAorICAgIDB4Mzg0YWUw
MDAsCisgICAgMHgzODRiMDAwMCwKKyAgICAweDM4NGIyMDAwLAorICAgIDB4Mzg0YjQwMDAsCisg
ICAgMHgzODRiNjAwMCwKKyAgICAweDM4NGI4MDAwLAorICAgIDB4Mzg0YmEwMDAsCisgICAgMHgz
ODRiYzAwMCwKKyAgICAweDM4NGJlMDAwLAorICAgIDB4Mzg0YzAwMDAsCisgICAgMHgzODRjMjAw
MCwKKyAgICAweDM4NGM0MDAwLAorICAgIDB4Mzg0YzYwMDAsCisgICAgMHgzODRjODAwMCwKKyAg
ICAweDM4NGNhMDAwLAorICAgIDB4Mzg0Y2MwMDAsCisgICAgMHgzODRjZTAwMCwKKyAgICAweDM4
NGQwMDAwLAorICAgIDB4Mzg0ZDIwMDAsCisgICAgMHgzODRkNDAwMCwKKyAgICAweDM4NGQ2MDAw
LAorICAgIDB4Mzg0ZDgwMDAsCisgICAgMHgzODRkYTAwMCwKKyAgICAweDM4NGRjMDAwLAorICAg
IDB4Mzg0ZGUwMDAsCisgICAgMHgzODRlMDAwMCwKKyAgICAweDM4NGUyMDAwLAorICAgIDB4Mzg0
ZTQwMDAsCisgICAgMHgzODRlNjAwMCwKKyAgICAweDM4NGU4MDAwLAorICAgIDB4Mzg0ZWEwMDAs
CisgICAgMHgzODRlYzAwMCwKKyAgICAweDM4NGVlMDAwLAorICAgIDB4Mzg0ZjAwMDAsCisgICAg
MHgzODRmMjAwMCwKKyAgICAweDM4NGY0MDAwLAorICAgIDB4Mzg0ZjYwMDAsCisgICAgMHgzODRm
ODAwMCwKKyAgICAweDM4NGZhMDAwLAorICAgIDB4Mzg0ZmMwMDAsCisgICAgMHgzODRmZTAwMCwK
KyAgICAweDM4NTAwMDAwLAorICAgIDB4Mzg1MDIwMDAsCisgICAgMHgzODUwNDAwMCwKKyAgICAw
eDM4NTA2MDAwLAorICAgIDB4Mzg1MDgwMDAsCisgICAgMHgzODUwYTAwMCwKKyAgICAweDM4NTBj
MDAwLAorICAgIDB4Mzg1MGUwMDAsCisgICAgMHgzODUxMDAwMCwKKyAgICAweDM4NTEyMDAwLAor
ICAgIDB4Mzg1MTQwMDAsCisgICAgMHgzODUxNjAwMCwKKyAgICAweDM4NTE4MDAwLAorICAgIDB4
Mzg1MWEwMDAsCisgICAgMHgzODUxYzAwMCwKKyAgICAweDM4NTFlMDAwLAorICAgIDB4Mzg1MjAw
MDAsCisgICAgMHgzODUyMjAwMCwKKyAgICAweDM4NTI0MDAwLAorICAgIDB4Mzg1MjYwMDAsCisg
ICAgMHgzODUyODAwMCwKKyAgICAweDM4NTJhMDAwLAorICAgIDB4Mzg1MmMwMDAsCisgICAgMHgz
ODUyZTAwMCwKKyAgICAweDM4NTMwMDAwLAorICAgIDB4Mzg1MzIwMDAsCisgICAgMHgzODUzNDAw
MCwKKyAgICAweDM4NTM2MDAwLAorICAgIDB4Mzg1MzgwMDAsCisgICAgMHgzODUzYTAwMCwKKyAg
ICAweDM4NTNjMDAwLAorICAgIDB4Mzg1M2UwMDAsCisgICAgMHgzODU0MDAwMCwKKyAgICAweDM4
NTQyMDAwLAorICAgIDB4Mzg1NDQwMDAsCisgICAgMHgzODU0NjAwMCwKKyAgICAweDM4NTQ4MDAw
LAorICAgIDB4Mzg1NGEwMDAsCisgICAgMHgzODU0YzAwMCwKKyAgICAweDM4NTRlMDAwLAorICAg
IDB4Mzg1NTAwMDAsCisgICAgMHgzODU1MjAwMCwKKyAgICAweDM4NTU0MDAwLAorICAgIDB4Mzg1
NTYwMDAsCisgICAgMHgzODU1ODAwMCwKKyAgICAweDM4NTVhMDAwLAorICAgIDB4Mzg1NWMwMDAs
CisgICAgMHgzODU1ZTAwMCwKKyAgICAweDM4NTYwMDAwLAorICAgIDB4Mzg1NjIwMDAsCisgICAg
MHgzODU2NDAwMCwKKyAgICAweDM4NTY2MDAwLAorICAgIDB4Mzg1NjgwMDAsCisgICAgMHgzODU2
YTAwMCwKKyAgICAweDM4NTZjMDAwLAorICAgIDB4Mzg1NmUwMDAsCisgICAgMHgzODU3MDAwMCwK
KyAgICAweDM4NTcyMDAwLAorICAgIDB4Mzg1NzQwMDAsCisgICAgMHgzODU3NjAwMCwKKyAgICAw
eDM4NTc4MDAwLAorICAgIDB4Mzg1N2EwMDAsCisgICAgMHgzODU3YzAwMCwKKyAgICAweDM4NTdl
MDAwLAorICAgIDB4Mzg1ODAwMDAsCisgICAgMHgzODU4MjAwMCwKKyAgICAweDM4NTg0MDAwLAor
ICAgIDB4Mzg1ODYwMDAsCisgICAgMHgzODU4ODAwMCwKKyAgICAweDM4NThhMDAwLAorICAgIDB4
Mzg1OGMwMDAsCisgICAgMHgzODU4ZTAwMCwKKyAgICAweDM4NTkwMDAwLAorICAgIDB4Mzg1OTIw
MDAsCisgICAgMHgzODU5NDAwMCwKKyAgICAweDM4NTk2MDAwLAorICAgIDB4Mzg1OTgwMDAsCisg
ICAgMHgzODU5YTAwMCwKKyAgICAweDM4NTljMDAwLAorICAgIDB4Mzg1OWUwMDAsCisgICAgMHgz
ODVhMDAwMCwKKyAgICAweDM4NWEyMDAwLAorICAgIDB4Mzg1YTQwMDAsCisgICAgMHgzODVhNjAw
MCwKKyAgICAweDM4NWE4MDAwLAorICAgIDB4Mzg1YWEwMDAsCisgICAgMHgzODVhYzAwMCwKKyAg
ICAweDM4NWFlMDAwLAorICAgIDB4Mzg1YjAwMDAsCisgICAgMHgzODViMjAwMCwKKyAgICAweDM4
NWI0MDAwLAorICAgIDB4Mzg1YjYwMDAsCisgICAgMHgzODViODAwMCwKKyAgICAweDM4NWJhMDAw
LAorICAgIDB4Mzg1YmMwMDAsCisgICAgMHgzODViZTAwMCwKKyAgICAweDM4NWMwMDAwLAorICAg
IDB4Mzg1YzIwMDAsCisgICAgMHgzODVjNDAwMCwKKyAgICAweDM4NWM2MDAwLAorICAgIDB4Mzg1
YzgwMDAsCisgICAgMHgzODVjYTAwMCwKKyAgICAweDM4NWNjMDAwLAorICAgIDB4Mzg1Y2UwMDAs
CisgICAgMHgzODVkMDAwMCwKKyAgICAweDM4NWQyMDAwLAorICAgIDB4Mzg1ZDQwMDAsCisgICAg
MHgzODVkNjAwMCwKKyAgICAweDM4NWQ4MDAwLAorICAgIDB4Mzg1ZGEwMDAsCisgICAgMHgzODVk
YzAwMCwKKyAgICAweDM4NWRlMDAwLAorICAgIDB4Mzg1ZTAwMDAsCisgICAgMHgzODVlMjAwMCwK
KyAgICAweDM4NWU0MDAwLAorICAgIDB4Mzg1ZTYwMDAsCisgICAgMHgzODVlODAwMCwKKyAgICAw
eDM4NWVhMDAwLAorICAgIDB4Mzg1ZWMwMDAsCisgICAgMHgzODVlZTAwMCwKKyAgICAweDM4NWYw
MDAwLAorICAgIDB4Mzg1ZjIwMDAsCisgICAgMHgzODVmNDAwMCwKKyAgICAweDM4NWY2MDAwLAor
ICAgIDB4Mzg1ZjgwMDAsCisgICAgMHgzODVmYTAwMCwKKyAgICAweDM4NWZjMDAwLAorICAgIDB4
Mzg1ZmUwMDAsCisgICAgMHgzODYwMDAwMCwKKyAgICAweDM4NjAyMDAwLAorICAgIDB4Mzg2MDQw
MDAsCisgICAgMHgzODYwNjAwMCwKKyAgICAweDM4NjA4MDAwLAorICAgIDB4Mzg2MGEwMDAsCisg
ICAgMHgzODYwYzAwMCwKKyAgICAweDM4NjBlMDAwLAorICAgIDB4Mzg2MTAwMDAsCisgICAgMHgz
ODYxMjAwMCwKKyAgICAweDM4NjE0MDAwLAorICAgIDB4Mzg2MTYwMDAsCisgICAgMHgzODYxODAw
MCwKKyAgICAweDM4NjFhMDAwLAorICAgIDB4Mzg2MWMwMDAsCisgICAgMHgzODYxZTAwMCwKKyAg
ICAweDM4NjIwMDAwLAorICAgIDB4Mzg2MjIwMDAsCisgICAgMHgzODYyNDAwMCwKKyAgICAweDM4
NjI2MDAwLAorICAgIDB4Mzg2MjgwMDAsCisgICAgMHgzODYyYTAwMCwKKyAgICAweDM4NjJjMDAw
LAorICAgIDB4Mzg2MmUwMDAsCisgICAgMHgzODYzMDAwMCwKKyAgICAweDM4NjMyMDAwLAorICAg
IDB4Mzg2MzQwMDAsCisgICAgMHgzODYzNjAwMCwKKyAgICAweDM4NjM4MDAwLAorICAgIDB4Mzg2
M2EwMDAsCisgICAgMHgzODYzYzAwMCwKKyAgICAweDM4NjNlMDAwLAorICAgIDB4Mzg2NDAwMDAs
CisgICAgMHgzODY0MjAwMCwKKyAgICAweDM4NjQ0MDAwLAorICAgIDB4Mzg2NDYwMDAsCisgICAg
MHgzODY0ODAwMCwKKyAgICAweDM4NjRhMDAwLAorICAgIDB4Mzg2NGMwMDAsCisgICAgMHgzODY0
ZTAwMCwKKyAgICAweDM4NjUwMDAwLAorICAgIDB4Mzg2NTIwMDAsCisgICAgMHgzODY1NDAwMCwK
KyAgICAweDM4NjU2MDAwLAorICAgIDB4Mzg2NTgwMDAsCisgICAgMHgzODY1YTAwMCwKKyAgICAw
eDM4NjVjMDAwLAorICAgIDB4Mzg2NWUwMDAsCisgICAgMHgzODY2MDAwMCwKKyAgICAweDM4NjYy
MDAwLAorICAgIDB4Mzg2NjQwMDAsCisgICAgMHgzODY2NjAwMCwKKyAgICAweDM4NjY4MDAwLAor
ICAgIDB4Mzg2NmEwMDAsCisgICAgMHgzODY2YzAwMCwKKyAgICAweDM4NjZlMDAwLAorICAgIDB4
Mzg2NzAwMDAsCisgICAgMHgzODY3MjAwMCwKKyAgICAweDM4Njc0MDAwLAorICAgIDB4Mzg2NzYw
MDAsCisgICAgMHgzODY3ODAwMCwKKyAgICAweDM4NjdhMDAwLAorICAgIDB4Mzg2N2MwMDAsCisg
ICAgMHgzODY3ZTAwMCwKKyAgICAweDM4NjgwMDAwLAorICAgIDB4Mzg2ODIwMDAsCisgICAgMHgz
ODY4NDAwMCwKKyAgICAweDM4Njg2MDAwLAorICAgIDB4Mzg2ODgwMDAsCisgICAgMHgzODY4YTAw
MCwKKyAgICAweDM4NjhjMDAwLAorICAgIDB4Mzg2OGUwMDAsCisgICAgMHgzODY5MDAwMCwKKyAg
ICAweDM4NjkyMDAwLAorICAgIDB4Mzg2OTQwMDAsCisgICAgMHgzODY5NjAwMCwKKyAgICAweDM4
Njk4MDAwLAorICAgIDB4Mzg2OWEwMDAsCisgICAgMHgzODY5YzAwMCwKKyAgICAweDM4NjllMDAw
LAorICAgIDB4Mzg2YTAwMDAsCisgICAgMHgzODZhMjAwMCwKKyAgICAweDM4NmE0MDAwLAorICAg
IDB4Mzg2YTYwMDAsCisgICAgMHgzODZhODAwMCwKKyAgICAweDM4NmFhMDAwLAorICAgIDB4Mzg2
YWMwMDAsCisgICAgMHgzODZhZTAwMCwKKyAgICAweDM4NmIwMDAwLAorICAgIDB4Mzg2YjIwMDAs
CisgICAgMHgzODZiNDAwMCwKKyAgICAweDM4NmI2MDAwLAorICAgIDB4Mzg2YjgwMDAsCisgICAg
MHgzODZiYTAwMCwKKyAgICAweDM4NmJjMDAwLAorICAgIDB4Mzg2YmUwMDAsCisgICAgMHgzODZj
MDAwMCwKKyAgICAweDM4NmMyMDAwLAorICAgIDB4Mzg2YzQwMDAsCisgICAgMHgzODZjNjAwMCwK
KyAgICAweDM4NmM4MDAwLAorICAgIDB4Mzg2Y2EwMDAsCisgICAgMHgzODZjYzAwMCwKKyAgICAw
eDM4NmNlMDAwLAorICAgIDB4Mzg2ZDAwMDAsCisgICAgMHgzODZkMjAwMCwKKyAgICAweDM4NmQ0
MDAwLAorICAgIDB4Mzg2ZDYwMDAsCisgICAgMHgzODZkODAwMCwKKyAgICAweDM4NmRhMDAwLAor
ICAgIDB4Mzg2ZGMwMDAsCisgICAgMHgzODZkZTAwMCwKKyAgICAweDM4NmUwMDAwLAorICAgIDB4
Mzg2ZTIwMDAsCisgICAgMHgzODZlNDAwMCwKKyAgICAweDM4NmU2MDAwLAorICAgIDB4Mzg2ZTgw
MDAsCisgICAgMHgzODZlYTAwMCwKKyAgICAweDM4NmVjMDAwLAorICAgIDB4Mzg2ZWUwMDAsCisg
ICAgMHgzODZmMDAwMCwKKyAgICAweDM4NmYyMDAwLAorICAgIDB4Mzg2ZjQwMDAsCisgICAgMHgz
ODZmNjAwMCwKKyAgICAweDM4NmY4MDAwLAorICAgIDB4Mzg2ZmEwMDAsCisgICAgMHgzODZmYzAw
MCwKKyAgICAweDM4NmZlMDAwLAorICAgIDB4Mzg3MDAwMDAsCisgICAgMHgzODcwMjAwMCwKKyAg
ICAweDM4NzA0MDAwLAorICAgIDB4Mzg3MDYwMDAsCisgICAgMHgzODcwODAwMCwKKyAgICAweDM4
NzBhMDAwLAorICAgIDB4Mzg3MGMwMDAsCisgICAgMHgzODcwZTAwMCwKKyAgICAweDM4NzEwMDAw
LAorICAgIDB4Mzg3MTIwMDAsCisgICAgMHgzODcxNDAwMCwKKyAgICAweDM4NzE2MDAwLAorICAg
IDB4Mzg3MTgwMDAsCisgICAgMHgzODcxYTAwMCwKKyAgICAweDM4NzFjMDAwLAorICAgIDB4Mzg3
MWUwMDAsCisgICAgMHgzODcyMDAwMCwKKyAgICAweDM4NzIyMDAwLAorICAgIDB4Mzg3MjQwMDAs
CisgICAgMHgzODcyNjAwMCwKKyAgICAweDM4NzI4MDAwLAorICAgIDB4Mzg3MmEwMDAsCisgICAg
MHgzODcyYzAwMCwKKyAgICAweDM4NzJlMDAwLAorICAgIDB4Mzg3MzAwMDAsCisgICAgMHgzODcz
MjAwMCwKKyAgICAweDM4NzM0MDAwLAorICAgIDB4Mzg3MzYwMDAsCisgICAgMHgzODczODAwMCwK
KyAgICAweDM4NzNhMDAwLAorICAgIDB4Mzg3M2MwMDAsCisgICAgMHgzODczZTAwMCwKKyAgICAw
eDM4NzQwMDAwLAorICAgIDB4Mzg3NDIwMDAsCisgICAgMHgzODc0NDAwMCwKKyAgICAweDM4NzQ2
MDAwLAorICAgIDB4Mzg3NDgwMDAsCisgICAgMHgzODc0YTAwMCwKKyAgICAweDM4NzRjMDAwLAor
ICAgIDB4Mzg3NGUwMDAsCisgICAgMHgzODc1MDAwMCwKKyAgICAweDM4NzUyMDAwLAorICAgIDB4
Mzg3NTQwMDAsCisgICAgMHgzODc1NjAwMCwKKyAgICAweDM4NzU4MDAwLAorICAgIDB4Mzg3NWEw
MDAsCisgICAgMHgzODc1YzAwMCwKKyAgICAweDM4NzVlMDAwLAorICAgIDB4Mzg3NjAwMDAsCisg
ICAgMHgzODc2MjAwMCwKKyAgICAweDM4NzY0MDAwLAorICAgIDB4Mzg3NjYwMDAsCisgICAgMHgz
ODc2ODAwMCwKKyAgICAweDM4NzZhMDAwLAorICAgIDB4Mzg3NmMwMDAsCisgICAgMHgzODc2ZTAw
MCwKKyAgICAweDM4NzcwMDAwLAorICAgIDB4Mzg3NzIwMDAsCisgICAgMHgzODc3NDAwMCwKKyAg
ICAweDM4Nzc2MDAwLAorICAgIDB4Mzg3NzgwMDAsCisgICAgMHgzODc3YTAwMCwKKyAgICAweDM4
NzdjMDAwLAorICAgIDB4Mzg3N2UwMDAsCisgICAgMHgzODc4MDAwMCwKKyAgICAweDM4NzgyMDAw
LAorICAgIDB4Mzg3ODQwMDAsCisgICAgMHgzODc4NjAwMCwKKyAgICAweDM4Nzg4MDAwLAorICAg
IDB4Mzg3OGEwMDAsCisgICAgMHgzODc4YzAwMCwKKyAgICAweDM4NzhlMDAwLAorICAgIDB4Mzg3
OTAwMDAsCisgICAgMHgzODc5MjAwMCwKKyAgICAweDM4Nzk0MDAwLAorICAgIDB4Mzg3OTYwMDAs
CisgICAgMHgzODc5ODAwMCwKKyAgICAweDM4NzlhMDAwLAorICAgIDB4Mzg3OWMwMDAsCisgICAg
MHgzODc5ZTAwMCwKKyAgICAweDM4N2EwMDAwLAorICAgIDB4Mzg3YTIwMDAsCisgICAgMHgzODdh
NDAwMCwKKyAgICAweDM4N2E2MDAwLAorICAgIDB4Mzg3YTgwMDAsCisgICAgMHgzODdhYTAwMCwK
KyAgICAweDM4N2FjMDAwLAorICAgIDB4Mzg3YWUwMDAsCisgICAgMHgzODdiMDAwMCwKKyAgICAw
eDM4N2IyMDAwLAorICAgIDB4Mzg3YjQwMDAsCisgICAgMHgzODdiNjAwMCwKKyAgICAweDM4N2I4
MDAwLAorICAgIDB4Mzg3YmEwMDAsCisgICAgMHgzODdiYzAwMCwKKyAgICAweDM4N2JlMDAwLAor
ICAgIDB4Mzg3YzAwMDAsCisgICAgMHgzODdjMjAwMCwKKyAgICAweDM4N2M0MDAwLAorICAgIDB4
Mzg3YzYwMDAsCisgICAgMHgzODdjODAwMCwKKyAgICAweDM4N2NhMDAwLAorICAgIDB4Mzg3Y2Mw
MDAsCisgICAgMHgzODdjZTAwMCwKKyAgICAweDM4N2QwMDAwLAorICAgIDB4Mzg3ZDIwMDAsCisg
ICAgMHgzODdkNDAwMCwKKyAgICAweDM4N2Q2MDAwLAorICAgIDB4Mzg3ZDgwMDAsCisgICAgMHgz
ODdkYTAwMCwKKyAgICAweDM4N2RjMDAwLAorICAgIDB4Mzg3ZGUwMDAsCisgICAgMHgzODdlMDAw
MCwKKyAgICAweDM4N2UyMDAwLAorICAgIDB4Mzg3ZTQwMDAsCisgICAgMHgzODdlNjAwMCwKKyAg
ICAweDM4N2U4MDAwLAorICAgIDB4Mzg3ZWEwMDAsCisgICAgMHgzODdlYzAwMCwKKyAgICAweDM4
N2VlMDAwLAorICAgIDB4Mzg3ZjAwMDAsCisgICAgMHgzODdmMjAwMCwKKyAgICAweDM4N2Y0MDAw
LAorICAgIDB4Mzg3ZjYwMDAsCisgICAgMHgzODdmODAwMCwKKyAgICAweDM4N2ZhMDAwLAorICAg
IDB4Mzg3ZmMwMDAsCisgICAgMHgzODdmZTAwMCwKK307CisKK2NvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBnX2V4cG9uZW50WzY0XSA9IHsKKyAgICAweDAwMDAwMDAwLAorICAgIDB4MDA4MDAwMDAsCisg
ICAgMHgwMTAwMDAwMCwKKyAgICAweDAxODAwMDAwLAorICAgIDB4MDIwMDAwMDAsCisgICAgMHgw
MjgwMDAwMCwKKyAgICAweDAzMDAwMDAwLAorICAgIDB4MDM4MDAwMDAsCisgICAgMHgwNDAwMDAw
MCwKKyAgICAweDA0ODAwMDAwLAorICAgIDB4MDUwMDAwMDAsCisgICAgMHgwNTgwMDAwMCwKKyAg
ICAweDA2MDAwMDAwLAorICAgIDB4MDY4MDAwMDAsCisgICAgMHgwNzAwMDAwMCwKKyAgICAweDA3
ODAwMDAwLAorICAgIDB4MDgwMDAwMDAsCisgICAgMHgwODgwMDAwMCwKKyAgICAweDA5MDAwMDAw
LAorICAgIDB4MDk4MDAwMDAsCisgICAgMHgwYTAwMDAwMCwKKyAgICAweDBhODAwMDAwLAorICAg
IDB4MGIwMDAwMDAsCisgICAgMHgwYjgwMDAwMCwKKyAgICAweDBjMDAwMDAwLAorICAgIDB4MGM4
MDAwMDAsCisgICAgMHgwZDAwMDAwMCwKKyAgICAweDBkODAwMDAwLAorICAgIDB4MGUwMDAwMDAs
CisgICAgMHgwZTgwMDAwMCwKKyAgICAweDBmMDAwMDAwLAorICAgIDB4NDc4MDAwMDAsCisgICAg
MHg4MDAwMDAwMCwKKyAgICAweDgwODAwMDAwLAorICAgIDB4ODEwMDAwMDAsCisgICAgMHg4MTgw
MDAwMCwKKyAgICAweDgyMDAwMDAwLAorICAgIDB4ODI4MDAwMDAsCisgICAgMHg4MzAwMDAwMCwK
KyAgICAweDgzODAwMDAwLAorICAgIDB4ODQwMDAwMDAsCisgICAgMHg4NDgwMDAwMCwKKyAgICAw
eDg1MDAwMDAwLAorICAgIDB4ODU4MDAwMDAsCisgICAgMHg4NjAwMDAwMCwKKyAgICAweDg2ODAw
MDAwLAorICAgIDB4ODcwMDAwMDAsCisgICAgMHg4NzgwMDAwMCwKKyAgICAweDg4MDAwMDAwLAor
ICAgIDB4ODg4MDAwMDAsCisgICAgMHg4OTAwMDAwMCwKKyAgICAweDg5ODAwMDAwLAorICAgIDB4
OGEwMDAwMDAsCisgICAgMHg4YTgwMDAwMCwKKyAgICAweDhiMDAwMDAwLAorICAgIDB4OGI4MDAw
MDAsCisgICAgMHg4YzAwMDAwMCwKKyAgICAweDhjODAwMDAwLAorICAgIDB4OGQwMDAwMDAsCisg
ICAgMHg4ZDgwMDAwMCwKKyAgICAweDhlMDAwMDAwLAorICAgIDB4OGU4MDAwMDAsCisgICAgMHg4
ZjAwMDAwMCwKKyAgICAweGM3ODAwMDAwLAorfTsKKworY29uc3Qgc3RhdGljIHVuc2lnbmVkIGdf
b2Zmc2V0WzY0XSA9IHsKKyAgICAweDAwMDAwMDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAg
ICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAw
MDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAw
LAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAg
IDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAw
MDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAs
CisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAg
MHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAw
MDAwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwK
KyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAw
eDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAw
NDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAor
ICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4
MDAwMDA0MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0
MDAsCisgICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisg
ICAgMHgwMDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgw
MDAwMDQwMCwKKyAgICAweDAwMDAwNDAwLAorICAgIDB4MDAwMDA0MDAsCisgICAgMHgwMDAwMDQw
MCwKKyAgICAweDAwMDAwNDAwLAorfTsKKworZmxvYXQgZmxvYXQxNlRvRmxvYXQzMih1bnNpZ25l
ZCBzaG9ydCBoKQoreworICAgIHVuc2lnbmVkIGkzMiA9IGdfbWFudGlzc2FbZ19vZmZzZXRbaCA+
PiAxMF0gKyAoaCAmIDB4M2ZmKV0gKyBnX2V4cG9uZW50W2ggPj4gMTBdOworICAgIHJldHVybiBi
aXRDYXN0PGZsb2F0PihpMzIpOworfQorfQorCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL0Zsb2F0MTZUb0Zsb2F0MzIucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9GbG9hdDE2VG9GbG9hdDMyLnB5CShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9GbG9hdDE2VG9GbG9hdDMy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEy
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKworIyBUaGlzIHNjcmlw
dCBnZW5lcmF0ZXMgYSBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIDE2LWJpdCBwcmVjaXNpb24gZmxv
YXRpbmcKKyMgcG9pbnQgbnVtYmVycyB0byAzMi1iaXQuCisjIEl0IGlzIGJhc2VkIG9uIGZ0cDov
L2Z0cC5mb3gtdG9vbGtpdC5vcmcvcHViL2Zhc3RoYWxmZmxvYXRjb252ZXJzaW9uLnBkZi4KKwor
I2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorCitkZWYgY29udmVydE1hbnRpc3NhKGkpOgor
ICAgIGlmIGkgPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBlbGlmIGkgPCAxMDI0OgorICAg
ICAgICBtID0gaSA8PCAxMworICAgICAgICBlID0gMAorICAgICAgICB3aGlsZSBub3QgKG0gJiAw
eDAwODAwMDAwKToKKyAgICAgICAgICAgIGUgLT0gMHgwMDgwMDAwMAorICAgICAgICAgICAgbSA9
IG0gPDwgMQorICAgICAgICBtICY9IH4weDAwODAwMDAwCisgICAgICAgIGUgKz0gMHgzODgwMDAw
MAorICAgICAgICByZXR1cm4gbSB8IGUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gMHgzODAw
MDAwMCArICgoaSAtIDEwMjQpIDw8IDEzKQorCitkZWYgY29udmVydEV4cG9uZW50KGkpOgorICAg
IGlmIGkgPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBlbGlmIGkgaW4gcmFuZ2UoMSwgMzEp
OgorICAgICAgICByZXR1cm4gaSA8PCAyMworICAgIGVsaWYgaSA9PSAzMToKKyAgICAgICAgcmV0
dXJuIDB4NDc4MDAwMDAKKyAgICBlbGlmIGkgPT0gMzI6CisgICAgICAgIHJldHVybiAweDgwMDAw
MDAwCisgICAgZWxpZiBpIGluIHJhbmdlKDMzLCA2Myk6CisgICAgICAgIHJldHVybiAweDgwMDAw
MDAwICsgKChpIC0gMzIpIDw8IDIzKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAweEM3ODAw
MDAwCisKK2RlZiBjb252ZXJ0T2Zmc2V0KGkpOgorICAgIGlmIGkgPT0gMCBvciBpID09IDMyOgor
ICAgICAgICByZXR1cm4gMAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAxMDI0CisKK3ByaW50
ICIiIi8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQuCisKK25hbWVzcGFjZSBnbAoreworIiIiCisKK3ByaW50ICJjb25zdCBzdGF0aWMgdW5zaWdu
ZWQgZ19tYW50aXNzYVsyMDQ4XSA9IHsiCitmb3IgaSBpbiByYW5nZSgwLCAyMDQ4KToKKyAgICBw
cmludCAiICAgICUjMDEweCwiICUgY29udmVydE1hbnRpc3NhKGkpCitwcmludCAifTtcbiIKKwor
cHJpbnQgImNvbnN0IHN0YXRpYyB1bnNpZ25lZCBnX2V4cG9uZW50WzY0XSA9IHsiCitmb3IgaSBp
biByYW5nZSgwLCA2NCk6CisgICAgcHJpbnQgIiAgICAlIzAxMHgsIiAlIGNvbnZlcnRFeHBvbmVu
dChpKQorcHJpbnQgIn07XG4iCisKK3ByaW50ICJjb25zdCBzdGF0aWMgdW5zaWduZWQgZ19vZmZz
ZXRbNjRdID0geyIKK2ZvciBpIGluIHJhbmdlKDAsIDY0KToKKyAgICBwcmludCAiICAgICUjMDEw
eCwiICUgY29udmVydE9mZnNldChpKQorcHJpbnQgIn07XG4iCisKK3ByaW50ICIiImZsb2F0IGZs
b2F0MTZUb0Zsb2F0MzIodW5zaWduZWQgc2hvcnQgaCkKK3sKKyAgICB1bnNpZ25lZCBpMzIgPSBn
X21hbnRpc3NhW2dfb2Zmc2V0W2ggPj4gMTBdICsgKGggJiAweDNmZildICsgZ19leHBvbmVudFto
ID4+IDEwXTsKKyAgICByZXR1cm4gYml0Q2FzdDxmbG9hdD4oaTMyKTsKK30KK30KKyIiIgpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9PcHRpb25hbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vT3B0aW9uYWwuaAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9PcHRp
b25hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNiArNDIsMjAgQEAKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIAotICAgIHZvaWQgcmVzZXQoKQorICAgIE9wdGlvbmFsICZvcGVyYXRv
cj0oVCAmJnZhbHVlKQogICAgIHsKLSAgICAgICAgbVZhbGlkID0gZmFsc2U7CisgICAgICAgIG1W
YWx1ZSA9IHN0ZDo6bW92ZSh2YWx1ZSk7CisgICAgICAgIG1WYWxpZCA9IHRydWU7CisgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBzdGF0aWMgT3B0aW9uYWwgTm9uZSgpCisgICAg
dm9pZCByZXNldCgpCiAgICAgewotICAgICAgICByZXR1cm4gT3B0aW9uYWwoKTsKKyAgICAgICAg
bVZhbGlkID0gZmFsc2U7CiAgICAgfQogCisgICAgc3RhdGljIE9wdGlvbmFsIEludmFsaWQoKSB7
IHJldHVybiBPcHRpb25hbCgpOyB9CisKICAgICBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4g
bVZhbGlkOyB9CiAgICAgY29uc3QgVCAmdmFsdWUoKSBjb25zdCB7IHJldHVybiBtVmFsdWU7IH0K
IApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9PcHRpb25hbF91bml0
dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9PcHRpb25hbF91bml0dGVzdC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vT3B0aW9uYWxfdW5pdHRlc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOCw3ICsxOCw3IEBACiB7CiAgICAgT3B0aW9uYWw8aW50PiB0ZXN0SW52YWxpZDsK
ICAgICBBU1NFUlRfRkFMU0UodGVzdEludmFsaWQudmFsaWQoKSk7Ci0gICAgQVNTRVJUX0VRKE9w
dGlvbmFsPGludD46Ok5vbmUoKSwgdGVzdEludmFsaWQpOworICAgIEFTU0VSVF9FUShPcHRpb25h
bDxpbnQ+OjpJbnZhbGlkKCksIHRlc3RJbnZhbGlkKTsKIH0KIAogVEVTVChPcHRpb25hbFRlc3Qs
IEJhc2ljVmFsaWQpCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgT3B0aW9uYWw8aW50PiB0ZXN0VmFs
aWQoMyk7CiAgICAgQVNTRVJUX1RSVUUodGVzdFZhbGlkLnZhbGlkKCkpOwogICAgIEFTU0VSVF9F
USgzLCB0ZXN0VmFsaWQudmFsdWUoKSk7Ci0gICAgQVNTRVJUX05FKE9wdGlvbmFsPGludD46Ok5v
bmUoKSwgdGVzdFZhbGlkKTsKKyAgICBBU1NFUlRfTkUoT3B0aW9uYWw8aW50Pjo6SW52YWxpZCgp
LCB0ZXN0VmFsaWQpOwogfQogCiBURVNUKE9wdGlvbmFsVGVzdCwgQ29waWVzKQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuY3BwCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsMTUgQEAKICNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8dmVjdG9yPgogCituYW1lc3BhY2UgYW5nbGUKK3sKK2NvbnN0IHVpbnRwdHJf
dCBEaXJ0eVBvaW50ZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnRwdHJfdD46Om1heCgpOwor
fQorCiBzaXplX3QgRm9ybWF0U3RyaW5nSW50b1ZlY3Rvcihjb25zdCBjaGFyICpmbXQsIHZhX2xp
c3QgdmFyYXJnLCBzdGQ6OnZlY3RvcjxjaGFyPiYgb3V0QnVmZmVyKQogewogICAgIC8vIEF0dGVt
cHQgdG8ganVzdCBwcmludCB0byB0aGUgY3VycmVudCBidWZmZXIKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0
IE5vbkNvcHlhYmxlJikgPSBkZWxldGU7CiB9OwogCitleHRlcm4gY29uc3QgdWludHB0cl90IERp
cnR5UG9pbnRlcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgpAQCAtNzAs
OSArNzEsOSBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIFNhZmVEZWxldGVDb250YWlu
ZXIoVCYgcmVzb3VyY2UpCiB7Ci0gICAgZm9yICh0eXBlbmFtZSBUOjppdGVyYXRvciBpID0gcmVz
b3VyY2UuYmVnaW4oKTsgaSAhPSByZXNvdXJjZS5lbmQoKTsgaSsrKQorICAgIGZvciAoYXV0byAm
ZWxlbWVudCA6IHJlc291cmNlKQogICAgIHsKLSAgICAgICAgU2FmZURlbGV0ZSgqaSk7CisgICAg
ICAgIFNhZmVEZWxldGUoZWxlbWVudCk7CiAgICAgfQogICAgIHJlc291cmNlLmNsZWFyKCk7CiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9k
ZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE2ICs0NCwxNiBAQAogICAgICAgICAgIGNh
c2UgRGVidWdUcmFjZU91dHB1dFR5cGVOb25lOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgY2FzZSBEZWJ1Z1RyYWNlT3V0cHV0VHlwZUJlZ2luRXZlbnQ6Ci0gICAgICAgICAgICBnX2Rl
YnVnQW5ub3RhdG9yLT5iZWdpbkV2ZW50KGZvcm1hdHRlZFdpZGVNZXNzYWdlKTsKKyAgICAgICAg
ICAgIGdfZGVidWdBbm5vdGF0b3ItPmJlZ2luRXZlbnQoZm9ybWF0dGVkV2lkZU1lc3NhZ2UuY19z
dHIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIERlYnVnVHJhY2VPdXRw
dXRUeXBlU2V0TWFya2VyOgotICAgICAgICAgICAgZ19kZWJ1Z0Fubm90YXRvci0+c2V0TWFya2Vy
KGZvcm1hdHRlZFdpZGVNZXNzYWdlKTsKKyAgICAgICAgICAgIGdfZGVidWdBbm5vdGF0b3ItPnNl
dE1hcmtlcihmb3JtYXR0ZWRXaWRlTWVzc2FnZS5jX3N0cigpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgc3RkOjpzdHJpbmcgZm9ybWF0dGVkTWVzc2FnZTsK
LSAgICBVTlVTRURfVFJBQ0VfVkFSSUFCTEUoZm9ybWF0dGVkTWVzc2FnZSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKGZvcm1hdHRlZE1lc3NhZ2UpOwogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBk
ZWZpbmVkKF9NU0NfVkVSKQogICAgIGlmIChtZXNzYWdlVHlwZSA9PSBNRVNTQUdFX0VSUikKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0
aWxzLmgiCiAKICNpZiAhZGVmaW5lZChUUkFDRV9PVVRQVVRfRklMRSkKLSNkZWZpbmUgVFJBQ0Vf
T1VUUFVUX0ZJTEUgImRlYnVnLnR4dCIKKyNkZWZpbmUgVFJBQ0VfT1VUUFVUX0ZJTEUgImFuZ2xl
X2RlYnVnLnR4dCIKICNlbmRpZgogCiBuYW1lc3BhY2UgZ2wKQEAgLTQ3LDkgKzQ3LDkgQEAKICAg
cHVibGljOgogICAgIERlYnVnQW5ub3RhdG9yKCkgeyB9OwogICAgIHZpcnR1YWwgfkRlYnVnQW5u
b3RhdG9yKCkgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkV2ZW50KGNvbnN0IHN0ZDo6d3N0
cmluZyAmZXZlbnROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGJlZ2luRXZlbnQoY29uc3Qg
d2NoYXJfdCAqZXZlbnROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZEV2ZW50KCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXJrZXIoY29uc3Qgc3RkOjp3c3RyaW5nICZtYXJrZXJO
YW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE1hcmtlcihjb25zdCB3Y2hhcl90ICptYXJr
ZXJOYW1lKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGdldFN0YXR1cygpID0gMDsKIH07CiAKQEAg
LTYzLDYgKzYzLDggQEAKICNkZWZpbmUgQU5HTEVfVFJBQ0VfRU5BQkxFRAogI2VuZGlmCiAKKyNk
ZWZpbmUgQU5HTEVfRU1QVFlfU1RBVEVNRU5UIGZvciAoOzspIGJyZWFrCisKIC8vIEEgbWFjcm8g
dG8gb3V0cHV0IGEgdHJhY2Ugb2YgYSBmdW5jdGlvbiBjYWxsIGFuZCBpdHMgYXJndW1lbnRzIHRv
IHRoZSBkZWJ1Z2dpbmcgbG9nCiAjaWYgZGVmaW5lZChBTkdMRV9UUkFDRV9FTkFCTEVEKQogI2Rl
ZmluZSBUUkFDRShtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZSh0cnVlLCBnbDo6TUVTU0FHRV9UUkFD
RSwgInRyYWNlOiAlcyglZCk6ICIgbWVzc2FnZSAiXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9f
LCAjI19fVkFfQVJHU19fKQpAQCAtODksNyArOTEsNyBAQAogI2lmIGRlZmluZWQoX01TQ19WRVIp
CiAjZGVmaW5lIEVWRU5UKG1lc3NhZ2UsIC4uLikgZ2w6OlNjb3BlZFBlcmZFdmVudEhlbHBlciBz
Y29wZWRQZXJmRXZlbnRIZWxwZXIgIyMgX19MSU5FX18oIiVzIiBtZXNzYWdlICJcbiIsIF9fRlVO
Q1RJT05fXywgX19WQV9BUkdTX18pOwogI2Vsc2UKLSNkZWZpbmUgRVZFTlQobWVzc2FnZSwgLi4u
KSBnbDo6U2NvcGVkUGVyZkV2ZW50SGVscGVyIHNjb3BlZFBlcmZFdmVudEhlbHBlcihtZXNzYWdl
ICJcbiIsICMjX19WQV9BUkdTX18pOworI2RlZmluZSBFVkVOVChtZXNzYWdlLCAuLi4pIGdsOjpT
Y29wZWRQZXJmRXZlbnRIZWxwZXIgc2NvcGVkUGVyZkV2ZW50SGVscGVyKCIlcyIgbWVzc2FnZSAi
XG4iLCBfX0ZVTkNUSU9OX18sICMjX19WQV9BUkdTX18pOwogI2VuZGlmIC8vIF9NU0NfVkVSCiAj
ZWxzZQogI2RlZmluZSBFVkVOVChtZXNzYWdlLCAuLi4pICh2b2lkKDApKQpAQCAtMTAxLDIyICsx
MDMsMTggQEAKIAogLy8gQSBtYWNybyBhc3NlcnRpbmcgYSBjb25kaXRpb24gYW5kIG91dHB1dHRp
bmcgZmFpbHVyZXMgdG8gdGhlIGRlYnVnIGxvZwogI2lmICFkZWZpbmVkKE5ERUJVRykKLSNkZWZp
bmUgQVNTRVJUKGV4cHJlc3Npb24pIGRvIHsgXAorI2RlZmluZSBBU1NFUlQoZXhwcmVzc2lvbikg
eyBcCiAgICAgaWYoIShleHByZXNzaW9uKSkgXAotICAgICAgICBFUlIoIlx0ISBBc3NlcnQgZmFp
bGVkIGluICVzKCVkKTogIiNleHByZXNzaW9uIlxuIiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7
IFwKKyAgICAgICAgRVJSKCJcdCEgQXNzZXJ0IGZhaWxlZCBpbiAlcyglZCk6ICVzXG4iLCBfX0ZV
TkNUSU9OX18sIF9fTElORV9fLCAjZXhwcmVzc2lvbik7IFwKICAgICAgICAgYXNzZXJ0KGV4cHJl
c3Npb24pOyBcCi0gICAgfSB3aGlsZSgwKQorICAgIH0gQU5HTEVfRU1QVFlfU1RBVEVNRU5UCiAj
ZGVmaW5lIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUodmFyaWFibGUpCiAjZWxzZQogI2RlZmlu
ZSBBU1NFUlQoZXhwcmVzc2lvbikgKHZvaWQoMCkpCiAjZGVmaW5lIFVOVVNFRF9BU1NFUlRJT05f
VkFSSUFCTEUodmFyaWFibGUpICgodm9pZCl2YXJpYWJsZSkKICNlbmRpZgogCi0jaWZuZGVmIEFO
R0xFX0VOQUJMRV9ERUJVR19UUkFDRQotI2RlZmluZSBVTlVTRURfVFJBQ0VfVkFSSUFCTEUodmFy
aWFibGUpICgodm9pZCl2YXJpYWJsZSkKLSNlbHNlCi0jZGVmaW5lIFVOVVNFRF9UUkFDRV9WQVJJ
QUJMRSh2YXJpYWJsZSkKLSNlbmRpZgorI2RlZmluZSBVTlVTRURfVkFSSUFCTEUodmFyaWFibGUp
ICgodm9pZCl2YXJpYWJsZSkKIAogLy8gQSBtYWNybyB0byBpbmRpY2F0ZSB1bmltcGxlbWVudGVk
IGZ1bmN0aW9uYWxpdHkKIApAQCAtMTMxLDIwICsxMjksMjAgQEAKICNlbmRpZgogCiAjaWYgIWRl
ZmluZWQoTkRFQlVHKQotI2RlZmluZSBVTklNUExFTUVOVEVEKCkgZG8geyBcCisjZGVmaW5lIFVO
SU1QTEVNRU5URUQoKSB7IFwKICAgICBGSVhNRSgiXHQhIFVuaW1wbGVtZW50ZWQ6ICVzKCVkKVxu
IiwgX19GVU5DVElPTl9fLCBfX0xJTkVfXyk7IFwKICAgICBhc3NlcnQoTk9BU1NFUlRfVU5JTVBM
RU1FTlRFRCk7IFwKLSAgICB9IHdoaWxlKDApCisgICAgfSBBTkdMRV9FTVBUWV9TVEFURU1FTlQK
ICNlbHNlCiAgICAgI2RlZmluZSBVTklNUExFTUVOVEVEKCkgRklYTUUoIlx0ISBVbmltcGxlbWVu
dGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pCiAjZW5kaWYKIAogLy8gQSBt
YWNybyBmb3IgY29kZSB3aGljaCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcmVhY2hlZCB1bmRlciB2
YWxpZCBhc3N1bXB0aW9ucwogI2lmICFkZWZpbmVkKE5ERUJVRykKLSNkZWZpbmUgVU5SRUFDSEFC
TEUoKSBkbyB7IFwKKyNkZWZpbmUgVU5SRUFDSEFCTEUoKSB7IFwKICAgICBFUlIoIlx0ISBVbnJl
YWNoYWJsZSByZWFjaGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pOyBcCiAg
ICAgYXNzZXJ0KGZhbHNlKTsgXAotICAgIH0gd2hpbGUoMCkKKyAgICB9IEFOR0xFX0VNUFRZX1NU
QVRFTUVOVAogI2Vsc2UKICAgICAjZGVmaW5lIFVOUkVBQ0hBQkxFKCkgRVJSKCJcdCEgVW5yZWFj
aGFibGUgcmVhY2hlZDogJXMoJWQpXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fKQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGls
LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi9tYXRodXRpbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAKICAgICBv
dXRwdXQuQiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZmxvb3IoKGJsdWVfYyAvIChwb3co
Mi4wZiwgZXhwX3MgLSBnX3NoYXJlZGV4cF9iaWFzIC0gZ19zaGFyZWRleHBfbWFudGlzc2FiaXRz
KSkpICsgMC41ZikpOwogICAgIG91dHB1dC5FID0gZXhwX3M7CiAKLSAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oJm91dHB1dCk7CisgICAgcmV0dXJuIGJpdENhc3Q8
dW5zaWduZWQgaW50PihvdXRwdXQpOwogfQogCiB2b2lkIGNvbnZlcnQ5OTlFNXRvUkdCRmxvYXRz
KHVuc2lnbmVkIGludCBpbnB1dCwgZmxvYXQgKnJlZCwgZmxvYXQgKmdyZWVuLCBmbG9hdCAqYmx1
ZSkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGls
LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vbWF0aHV0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQsNyArMTQsOSBAQAogCiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxtYXRoLmg+CiAjaW5j
bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAKIG5hbWVzcGFjZSBnbApAQCAtNjcsMTQgKzY5LDI5IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RGVzdFQsIHR5cGVuYW1lIFNyY1Q+CiBpbmxpbmUgRGVzdFQgY2xhbXBDYXN0KFNyY1QgdmFsdWUp
CiB7Ci0gICAgLy8gVGhpcyBhc3N1bWVzIFNyY1QgY2FuIHByb3Blcmx5IHJlcHJlc2VudCBEZXN0
VDo6bWluL21heAotICAgIC8vIFVuZm9ydHVuYXRlbHkgd2UgY2FuJ3QgdXNlIE1FVEFfQVNTRVJU
IHdpdGhvdXQgQysrMTEgY29uc3RleHByIHN1cHBvcnQKLSAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
RGVzdFQ+KHN0YXRpY19jYXN0PFNyY1Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8RGVzdFQ+OjptaW4o
KSkpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8RGVzdFQ+OjptaW4oKSk7Ci0gICAgQVNTRVJUKHN0
YXRpY19jYXN0PERlc3RUPihzdGF0aWNfY2FzdDxTcmNUPihzdGQ6Om51bWVyaWNfbGltaXRzPERl
c3RUPjo6bWF4KCkpKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPERlc3RUPjo6bWF4KCkpOworICAg
IHN0YXRpYyBjb25zdCBEZXN0VCBkZXN0TG8gPSBzdGQ6Om51bWVyaWNfbGltaXRzPERlc3RUPjo6
bWluKCk7CisgICAgc3RhdGljIGNvbnN0IERlc3RUIGRlc3RIaSA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8RGVzdFQ+OjptYXgoKTsKKyAgICBzdGF0aWMgY29uc3QgU3JjVCBzcmNMbyA9IHN0YXRpY19j
YXN0PFNyY1Q+KGRlc3RMbyk7CisgICAgc3RhdGljIGNvbnN0IFNyY1Qgc3JjSGkgPSBzdGF0aWNf
Y2FzdDxTcmNUPihkZXN0SGkpOwogCi0gICAgU3JjVCBsbyA9IHN0YXRpY19jYXN0PFNyY1Q+KHN0
ZDo6bnVtZXJpY19saW1pdHM8RGVzdFQ+OjptaW4oKSk7Ci0gICAgU3JjVCBoaSA9IHN0YXRpY19j
YXN0PFNyY1Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8RGVzdFQ+OjptYXgoKSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERlc3RUPih2YWx1ZSA+IGxvID8gKHZhbHVlID4gaGkgPyBoaSA6IHZhbHVl
KSA6IGxvKTsKKyAgICAvLyBXaGVuIHZhbHVlIGlzIG91dHNpZGUgb2Ygb3IgZXF1YWwgdG8gdGhl
IGxpbWl0cyBmb3IgRGVzdFQgd2UgdXNlIHRoZSBEZXN0VCBsaW1pdCBkaXJlY3RseS4KKyAgICAv
LyBUaGlzIGF2b2lkcyB1bmRlZmluZWQgYmVoYXZpb3JzIGR1ZSB0byBsb3NzIG9mIHByZWNpc2lv
biB3aGVuIGNvbnZlcnRpbmcgZnJvbSBmbG9hdHMgdG8KKyAgICAvLyBpbnRlZ2VyczoKKyAgICAv
LyAgICBkZXN0SGkgZm9yIGludHMgaXMgMjE0NzQ4MzY0NyBidXQgdGhlIGNsb3Nlc3QgZmxvYXQg
bnVtYmVyIGlzIGFyb3VuZCAyMTQ3NDgzNjQ4LCBzbyB3aGVuCisgICAgLy8gIGRvaW5nIGEgY29u
dmVyc2lvbiBmcm9tIGZsb2F0IHRvIGludCB3ZSBydW4gaW50byBhbiBVQiBiZWNhdXNlIHRoZSBm
bG9hdCBpcyBvdXRzaWRlIG9mIHRoZQorICAgIC8vICByYW5nZSByZXByZXNlbnRhYmxlIGJ5IHRo
ZSBpbnQuCisgICAgaWYgKHZhbHVlIDw9IHNyY0xvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRl
c3RMbzsKKyAgICB9CisgICAgZWxzZSBpZiAodmFsdWUgPj0gc3JjSGkpCisgICAgeworICAgICAg
ICByZXR1cm4gZGVzdEhpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RGVzdFQ+KHZhbHVlKTsKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIE1JTiwgdHlwZW5hbWUgTUFYPgpAQCAtMTQ5LDcgKzE2Niw3IEBACiAKIGlu
bGluZSB1bnNpZ25lZCBzaG9ydCBmbG9hdDMyVG9GbG9hdDE2KGZsb2F0IGZwMzIpCiB7Ci0gICAg
dW5zaWduZWQgaW50IGZwMzJpID0gKHVuc2lnbmVkIGludCYpZnAzMjsKKyAgICB1bnNpZ25lZCBp
bnQgZnAzMmkgPSBiaXRDYXN0PHVuc2lnbmVkIGludD4oZnAzMik7CiAgICAgdW5zaWduZWQgaW50
IHNpZ24gPSAoZnAzMmkgJiAweDgwMDAwMDAwKSA+PiAxNjsKICAgICB1bnNpZ25lZCBpbnQgYWJz
ID0gZnAzMmkgJiAweDdGRkZGRkZGOwogCkBAIC00NzYsOSArNDkzLDEwIEBACiAgICAgcmV0dXJu
ICgoYSBeIGIpID4+IDEpICsgKGEgJiBiKTsKIH0KIAotaW5saW5lIHNpZ25lZCBpbnQgYXZlcmFn
ZShzaWduZWQgaW50IGEsIHNpZ25lZCBpbnQgYikKK2lubGluZSBpbnQgYXZlcmFnZShpbnQgYSwg
aW50IGIpCiB7Ci0gICAgcmV0dXJuIChzaWduZWQgaW50KSgobG9uZyBsb25nKWEgKyAobG9uZyBs
b25nKWIpIC8gMjsKKyAgICBsb25nIGxvbmcgYXZlcmFnZSA9IChzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KGEpICsgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihiKSkgLyAybGw7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oYXZlcmFnZSk7CiB9CiAKIGlubGluZSBmbG9hdCBhdmVyYWdlKGZsb2F0
IGEsIGZsb2F0IGIpCkBAIC01MDEsMTIgKzUxOSw2IEBACiAgICAgcmV0dXJuIGZsb2F0MzJUb0Zs
b2F0MTAoKGZsb2F0MTBUb0Zsb2F0MzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGEpKSAr
IGZsb2F0MTBUb0Zsb2F0MzIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGIpKSkgKiAwLjVm
KTsKIH0KIAotfQotCi1uYW1lc3BhY2UgcngKLXsKLQotLy8gUmVwcmVzZW50cyBpbnRlcnZhbHMg
b2YgdGhlIHR5cGUgW2EsIGIpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0cnVjdCBSYW5nZQog
ewpAQCAtNTI5LDExICs1NDEsMTQ2IEBACiAgICAgICAgICAgICByZXR1cm4gc3RhcnQgPCBvdGhl
ci5lbmQ7CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGV4dGVuZChUIHZhbHVlKQorICAg
IHsKKyAgICAgICAgc3RhcnQgPSB2YWx1ZSA+IHN0YXJ0ID8gdmFsdWUgOiBzdGFydDsKKyAgICAg
ICAgZW5kID0gdmFsdWUgPCBlbmQgPyB2YWx1ZSA6IGVuZDsKKyAgICB9CisKKyAgICBib29sIGVt
cHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbmQgPD0gc3RhcnQ7CisgICAgfQog
fTsKIAogdHlwZWRlZiBSYW5nZTxpbnQ+IFJhbmdlSTsKIHR5cGVkZWYgUmFuZ2U8dW5zaWduZWQg
aW50PiBSYW5nZVVJOwogCitzdHJ1Y3QgSW5kZXhSYW5nZQoreworICAgIEluZGV4UmFuZ2UoKSA6
IEluZGV4UmFuZ2UoMCwgMCwgMCkge30KKyAgICBJbmRleFJhbmdlKHNpemVfdCBzdGFydF8sIHNp
emVfdCBlbmRfLCBzaXplX3QgdmVydGV4SW5kZXhDb3VudF8pCisgICAgICAgIDogc3RhcnQoc3Rh
cnRfKSwgZW5kKGVuZF8pLCB2ZXJ0ZXhJbmRleENvdW50KHZlcnRleEluZGV4Q291bnRfKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHN0YXJ0IDw9IGVuZCk7CisgICAgfQorCisgICAgLy8gTnVtYmVy
IG9mIHZlcnRpY2VzIGluIHRoZSByYW5nZS4KKyAgICBzaXplX3QgdmVydGV4Q291bnQoKSBjb25z
dCB7IHJldHVybiAoZW5kIC0gc3RhcnQpICsgMTsgfQorCisgICAgLy8gSW5jbHVzaXZlIHJhbmdl
IG9mIGluZGljZXMgdGhhdCBhcmUgbm90IHByaW1pdGl2ZSByZXN0YXJ0CisgICAgc2l6ZV90IHN0
YXJ0OworICAgIHNpemVfdCBlbmQ7CisKKyAgICAvLyBOdW1iZXIgb2Ygbm9uLXByaW1pdGl2ZSBy
ZXN0YXJ0IGluZGljZXMKKyAgICBzaXplX3QgdmVydGV4SW5kZXhDb3VudDsKK307CisKKy8vIEZp
cnN0LCBib3RoIG5vcm1hbGl6ZWQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSBjb252ZXJ0ZWQg
aW50byAxNi1iaXQgaW50ZWdlciB2YWx1ZXMuCisvLyBUaGVuLCB0aGUgcmVzdWx0cyBhcmUgcGFj
a2VkIGludG8gdGhlIHJldHVybmVkIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgorLy8gVGhlIGZp
cnN0IGZsb2F0IHZhbHVlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQg
Yml0cyBvZiB0aGUgb3V0cHV0OworLy8gdGhlIGxhc3QgZmxvYXQgdmFsdWUgd2lsbCBiZSB3cml0
dGVuIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMuCisvLyBUaGUgY29udmVyc2lvbiBvZiBl
YWNoIHZhbHVlIHRvIGZpeGVkIHBvaW50IGlzIGRvbmUgYXMgZm9sbG93cyA6CisvLyBwYWNrU25v
cm0yeDE2IDogcm91bmQoY2xhbXAoYywgLTEsICsxKSAqIDMyNzY3LjApCitpbmxpbmUgdWludDMy
X3QgcGFja1Nub3JtMngxNihmbG9hdCBmMSwgZmxvYXQgZjIpCit7CisgICAgaW50MTZfdCBsZWFz
dFNpZ25pZmljYW50Qml0cyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KHJvdW5kZihjbGFtcChmMSwg
LTEuMGYsIDEuMGYpICogMzI3NjcuMGYpKTsKKyAgICBpbnQxNl90IG1vc3RTaWduaWZpY2FudEJp
dHMgPSBzdGF0aWNfY2FzdDxpbnQxNl90Pihyb3VuZGYoY2xhbXAoZjIsIC0xLjBmLCAxLjBmKSAq
IDMyNzY3LjBmKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQzMl90Pihtb3N0U2lnbmlm
aWNhbnRCaXRzKSA8PCAxNiB8CisgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdD4obGVh
c3RTaWduaWZpY2FudEJpdHMpICYgMHhGRkZGKTsKK30KKworLy8gRmlyc3QsIHVucGFja3MgYSBz
aW5nbGUgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdSBpbnRvIGEgcGFpciBvZiAxNi1iaXQgdW5z
aWduZWQgaW50ZWdlcnMuIFRoZW4sIGVhY2gKKy8vIGNvbXBvbmVudCBpcyBjb252ZXJ0ZWQgdG8g
YSBub3JtYWxpemVkIGZsb2F0aW5nLXBvaW50IHZhbHVlIHRvIGdlbmVyYXRlIHRoZSByZXR1cm5l
ZCB0d28gZmxvYXQgdmFsdWVzLgorLy8gVGhlIGZpcnN0IGZsb2F0IHZhbHVlIHdpbGwgYmUgZXh0
cmFjdGVkIGZyb20gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGlucHV0OworLy8g
dGhlIGxhc3QgZmxvYXQgdmFsdWUgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgbW9zdC1zaWdu
aWZpY2FudCBiaXRzLgorLy8gVGhlIGNvbnZlcnNpb24gZm9yIHVucGFja2VkIGZpeGVkLXBvaW50
IHZhbHVlIHRvIGZsb2F0aW5nIHBvaW50IGlzIGRvbmUgYXMgZm9sbG93czoKKy8vIHVucGFja1Nu
b3JtMngxNiA6IGNsYW1wKGYgLyAzMjc2Ny4wLCAtMSwgKzEpCitpbmxpbmUgdm9pZCB1bnBhY2tT
bm9ybTJ4MTYodWludDMyX3QgdSwgZmxvYXQgKmYxLCBmbG9hdCAqZjIpCit7CisgICAgaW50MTZf
dCBsZWFzdFNpZ25pZmljYW50Qml0cyA9IHN0YXRpY19jYXN0PGludDE2X3Q+KHUgJiAweEZGRkYp
OworICAgIGludDE2X3QgbW9zdFNpZ25pZmljYW50Qml0cyA9IHN0YXRpY19jYXN0PGludDE2X3Q+
KHUgPj4gMTYpOworICAgICpmMSA9IGNsYW1wKHN0YXRpY19jYXN0PGZsb2F0PihsZWFzdFNpZ25p
ZmljYW50Qml0cykgLyAzMjc2Ny4wZiwgLTEuMGYsIDEuMGYpOworICAgICpmMiA9IGNsYW1wKHN0
YXRpY19jYXN0PGZsb2F0Pihtb3N0U2lnbmlmaWNhbnRCaXRzKSAvIDMyNzY3LjBmLCAtMS4wZiwg
MS4wZik7Cit9CisKKy8vIEZpcnN0LCBib3RoIG5vcm1hbGl6ZWQgZmxvYXRpbmctcG9pbnQgdmFs
dWVzIGFyZSBjb252ZXJ0ZWQgaW50byAxNi1iaXQgaW50ZWdlciB2YWx1ZXMuCisvLyBUaGVuLCB0
aGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gdGhlIHJldHVybmVkIDMyLWJpdCB1bnNpZ25lZCBp
bnRlZ2VyLgorLy8gVGhlIGZpcnN0IGZsb2F0IHZhbHVlIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUg
bGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgb3V0cHV0OworLy8gdGhlIGxhc3QgZmxvYXQg
dmFsdWUgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMuCisvLyBU
aGUgY29udmVyc2lvbiBvZiBlYWNoIHZhbHVlIHRvIGZpeGVkIHBvaW50IGlzIGRvbmUgYXMgZm9s
bG93czoKKy8vIHBhY2tVbm9ybTJ4MTYgOiByb3VuZChjbGFtcChjLCAwLCArMSkgKiA2NTUzNS4w
KQoraW5saW5lIHVpbnQzMl90IHBhY2tVbm9ybTJ4MTYoZmxvYXQgZjEsIGZsb2F0IGYyKQorewor
ICAgIHVpbnQxNl90IGxlYXN0U2lnbmlmaWNhbnRCaXRzID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHJvdW5kZihjbGFtcChmMSwgMC4wZiwgMS4wZikgKiA2NTUzNS4wZikpOworICAgIHVpbnQxNl90
IG1vc3RTaWduaWZpY2FudEJpdHMgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4ocm91bmRmKGNsYW1w
KGYyLCAwLjBmLCAxLjBmKSAqIDY1NTM1LjBmKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQzMl90Pihtb3N0U2lnbmlmaWNhbnRCaXRzKSA8PCAxNiB8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihsZWFzdFNpZ25pZmljYW50Qml0cyk7Cit9CisKKy8vIEZpcnN0LCB1bnBhY2tzIGEgc2luZ2xl
IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHUgaW50byBhIHBhaXIgb2YgMTYtYml0IHVuc2lnbmVk
IGludGVnZXJzLiBUaGVuLCBlYWNoCisvLyBjb21wb25lbnQgaXMgY29udmVydGVkIHRvIGEgbm9y
bWFsaXplZCBmbG9hdGluZy1wb2ludCB2YWx1ZSB0byBnZW5lcmF0ZSB0aGUgcmV0dXJuZWQgdHdv
IGZsb2F0IHZhbHVlcy4KKy8vIFRoZSBmaXJzdCBmbG9hdCB2YWx1ZSB3aWxsIGJlIGV4dHJhY3Rl
ZCBmcm9tIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBpbnB1dDsKKy8vIHRoZSBs
YXN0IGZsb2F0IHZhbHVlIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIG1vc3Qtc2lnbmlmaWNh
bnQgYml0cy4KKy8vIFRoZSBjb252ZXJzaW9uIGZvciB1bnBhY2tlZCBmaXhlZC1wb2ludCB2YWx1
ZSB0byBmbG9hdGluZyBwb2ludCBpcyBkb25lIGFzIGZvbGxvd3M6CisvLyB1bnBhY2tVbm9ybTJ4
MTYgOiBmIC8gNjU1MzUuMAoraW5saW5lIHZvaWQgdW5wYWNrVW5vcm0yeDE2KHVpbnQzMl90IHUs
IGZsb2F0ICpmMSwgZmxvYXQgKmYyKQoreworICAgIHVpbnQxNl90IGxlYXN0U2lnbmlmaWNhbnRC
aXRzID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHUgJiAweEZGRkYpOworICAgIHVpbnQxNl90IG1v
c3RTaWduaWZpY2FudEJpdHMgPSBzdGF0aWNfY2FzdDx1aW50MTZfdD4odSA+PiAxNik7CisgICAg
KmYxID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGxlYXN0U2lnbmlmaWNhbnRCaXRzKSAvIDY1NTM1LjBm
OworICAgICpmMiA9IHN0YXRpY19jYXN0PGZsb2F0Pihtb3N0U2lnbmlmaWNhbnRCaXRzKSAvIDY1
NTM1LjBmOworfQorCisvLyBSZXR1cm5zIGFuIHVuc2lnbmVkIGludGVnZXIgb2J0YWluZWQgYnkg
Y29udmVydGluZyB0aGUgdHdvIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB0byB0aGUgMTYtYml0Cisv
LyBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiBmb3VuZCBpbiB0aGUgT3BlbkdMIEVTIFNw
ZWNpZmljYXRpb24sIGFuZCB0aGVuIHBhY2tpbmcgdGhlc2UKKy8vIHR3byAxNi1iaXQgaW50ZWdl
cnMgaW50byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgorLy8gZjE6IFRoZSAxNiBsZWFzdC1z
aWduaWZpY2FudCBiaXRzIG9mIHRoZSByZXN1bHQ7CisvLyBmMjogVGhlIDE2IG1vc3Qtc2lnbmlm
aWNhbnQgYml0cy4KK2lubGluZSB1aW50MzJfdCBwYWNrSGFsZjJ4MTYoZmxvYXQgZjEsIGZsb2F0
IGYyKQoreworICAgIHVpbnQxNl90IGxlYXN0U2lnbmlmaWNhbnRCaXRzID0gc3RhdGljX2Nhc3Q8
dWludDE2X3Q+KGZsb2F0MzJUb0Zsb2F0MTYoZjEpKTsKKyAgICB1aW50MTZfdCBtb3N0U2lnbmlm
aWNhbnRCaXRzID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGZsb2F0MzJUb0Zsb2F0MTYoZjIpKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1vc3RTaWduaWZpY2FudEJpdHMpIDw8
IDE2IHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlYXN0U2lnbmlmaWNhbnRCaXRzKTsKK30KKwor
Ly8gUmV0dXJucyB0d28gZmxvYXRpbmctcG9pbnQgdmFsdWVzIG9idGFpbmVkIGJ5IHVucGFja2lu
ZyBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGludG8gYSBwYWlyIG9mIDE2LWJpdCB2YWx1ZXMs
CisvLyBpbnRlcnByZXRpbmcgdGhvc2UgdmFsdWVzIGFzIDE2LWJpdCBmbG9hdGluZy1wb2ludCBu
dW1iZXJzIGFjY29yZGluZyB0byB0aGUgT3BlbkdMIEVTIFNwZWNpZmljYXRpb24sCisvLyBhbmQg
Y29udmVydGluZyB0aGVtIHRvIDMyLWJpdCBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCisvLyBUaGUg
Zmlyc3QgZmxvYXQgdmFsdWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgMTYgbGVhc3Qtc2lnbmlmaWNh
bnQgYml0cyBvZiB1OworLy8gdGhlIHNlY29uZCBjb21wb25lbnQgaXMgb2J0YWluZWQgZnJvbSB0
aGUgMTYgbW9zdC1zaWduaWZpY2FudCBiaXRzIG9mIHUuCitpbmxpbmUgdm9pZCB1bnBhY2tIYWxm
MngxNih1aW50MzJfdCB1LCBmbG9hdCAqZjEsIGZsb2F0ICpmMikKK3sKKyAgICB1aW50MTZfdCBs
ZWFzdFNpZ25pZmljYW50Qml0cyA9IHN0YXRpY19jYXN0PHVpbnQxNl90Pih1ICYgMHhGRkZGKTsK
KyAgICB1aW50MTZfdCBtb3N0U2lnbmlmaWNhbnRCaXRzID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+
KHUgPj4gMTYpOworCisgICAgKmYxID0gZmxvYXQxNlRvRmxvYXQzMihsZWFzdFNpZ25pZmljYW50
Qml0cyk7CisgICAgKmYyID0gZmxvYXQxNlRvRmxvYXQzMihtb3N0U2lnbmlmaWNhbnRCaXRzKTsK
K30KKworLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBOb3QgYSBOdW1iZXIuCisv
LyBJRUVFIDc1NCBzaW5nbGUgcHJlY2lzaW9uIE5hTiByZXByZXNlbnRhdGlvbjogRXhwb25lbnQo
OCBiaXRzKSAtIDI1NSwgTWFudGlzc2EoMjMgYml0cykgLSBub24temVyby4KK2lubGluZSBib29s
IGlzTmFOKGZsb2F0IGYpCit7CisgICAgLy8gRXhwb25lbnQgbWFzazogKCgxdSA8PCA4KSAtIDF1
KSA8PCAyMyA9IDB4N2Y4MDAwMDB1CisgICAgLy8gTWFudGlzc2EgbWFzazogKCgxdSA8PCAyMykg
LSAxdSkgPSAweDdmZmZmZnUKKyAgICByZXR1cm4gKChiaXRDYXN0PHVpbnQzMl90PihmKSAmIDB4
N2Y4MDAwMDB1KSA9PSAweDdmODAwMDAwdSkgJiYgKGJpdENhc3Q8dWludDMyX3Q+KGYpICYgMHg3
ZmZmZmZ1KTsKK30KKworLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBpbmZpbml0
eS4KKy8vIElFRUUgNzU0IHNpbmdsZSBwcmVjaXNpb24gaW5maW5pdHkgcmVwcmVzZW50YXRpb246
IEV4cG9uZW50KDggYml0cykgLSAyNTUsIE1hbnRpc3NhKDIzIGJpdHMpIC0gemVyby4KK2lubGlu
ZSBib29sIGlzSW5mKGZsb2F0IGYpCit7CisgICAgLy8gRXhwb25lbnQgbWFzazogKCgxdSA8PCA4
KSAtIDF1KSA8PCAyMyA9IDB4N2Y4MDAwMDB1CisgICAgLy8gTWFudGlzc2EgbWFzazogKCgxdSA8
PCAyMykgLSAxdSkgPSAweDdmZmZmZnUKKyAgICByZXR1cm4gKChiaXRDYXN0PHVpbnQzMl90Pihm
KSAmIDB4N2Y4MDAwMDB1KSA9PSAweDdmODAwMDAwdSkgJiYgIShiaXRDYXN0PHVpbnQzMl90Pihm
KSAmIDB4N2ZmZmZmdSk7Cit9CisKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgogVCByb3VuZFVwKGNvbnN0IFQgdmFsdWUsIGNvbnN0IFQgYWxpZ25tZW50KQog
ewpAQCAtNTY5LDYgKzcxNiw3IEBACiAjaWYgZGVmaW5lZChfTVNDX1ZFUikKIAogI2RlZmluZSBB
TkdMRV9ST1RMKHgseSkgX3JvdGwoeCx5KQorI2RlZmluZSBBTkdMRV9ST1RSMTYoeCx5KSBfcm90
cjE2KHgseSkKIAogI2Vsc2UKIApAQCAtNTc3LDcgKzcyNSwxMyBAQAogICAgIHJldHVybiAoeCA8
PCByKSB8ICh4ID4+ICgzMiAtIHIpKTsKIH0KIAoraW5saW5lIHVpbnQxNl90IFJvdFIxNih1aW50
MTZfdCB4LCBpbnQ4X3QgcikKK3sKKyAgICByZXR1cm4gKHggPj4gcikgfCAoeCA8PCAoMTYgLSBy
KSk7Cit9CisKICNkZWZpbmUgQU5HTEVfUk9UTCh4LHkpIFJvdEwoeCx5KQorI2RlZmluZSBBTkdM
RV9ST1RSMTYoeCx5KSBSb3RSMTYoeCx5KQogCiAjZW5kaWYgLy8gbmFtZXNwYWNlIHJ4CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWxfdW5pdHRlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0
aHV0aWxfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNzIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBtYXRodXRpbF91bml0dGVzdDoKKy8vICAgVW5pdCB0
ZXN0cyBmb3IgdGhlIHV0aWxzIGRlZmluZWQgaW4gbWF0aHV0aWwuaAorLy8KKworI2luY2x1ZGUg
Im1hdGh1dGlsLmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgZ2w7CisKK25hbWVzcGFjZQoreworCisvLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNr
U25vcm0yeDE2IGFuZCB1bnBhY2tTbm9ybTJ4MTYgZnVuY3Rpb25zLgorLy8gRm9yIGZsb2F0cyBm
MSBhbmQgZjIsIHVucGFja1Nub3JtMngxNihwYWNrU25vcm0yeDE2KGYxLCBmMikpIHNob3VsZCBi
ZSBzYW1lIGFzIGYxIGFuZCBmMi4KK1RFU1QoTWF0aFV0aWxUZXN0LCBwYWNrQW5kVW5wYWNrU25v
cm0yeDE2KQoreworICAgIGNvbnN0IGZsb2F0IGlucHV0WzhdWzJdID0KKyAgICB7CisgICAgICAg
IHsgMC4wZiwgMC4wZiB9LAorICAgICAgICB7IDEuMGYsIDEuMGYgfSwKKyAgICAgICAgeyAtMS4w
ZiwgMS4wZiB9LAorICAgICAgICB7IC0xLjBmLCAtMS4wZiB9LAorICAgICAgICB7IDAuODc1Ziwg
MC43NWYgfSwKKyAgICAgICAgeyAwLjAwMzkyZiwgLTAuOTkyMTVmIH0sCisgICAgICAgIHsgLTAu
MDAwNjc1ZiwgMC4wMDQ5NTRmIH0sCisgICAgICAgIHsgLTAuNjkzN2YsIC0wLjAyMTQ2ZiB9Cisg
ICAgfTsKKyAgICBjb25zdCBmbG9hdCBmbG9hdEZhdWx0VG9sZXJhbmNlID0gMC4wMDAxZjsKKyAg
ICBmbG9hdCBvdXRwdXRWYWwxLCBvdXRwdXRWYWwyOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCA4OyBpKyspCisgICAgeworICAgICAgICB1bnBhY2tTbm9ybTJ4MTYocGFja1Nub3JtMngx
NihpbnB1dFtpXVswXSwgaW5wdXRbaV1bMV0pLCAmb3V0cHV0VmFsMSwgJm91dHB1dFZhbDIpOwor
ICAgICAgICBFWFBFQ1RfTkVBUihpbnB1dFtpXVswXSwgb3V0cHV0VmFsMSwgZmxvYXRGYXVsdFRv
bGVyYW5jZSk7CisgICAgICAgIEVYUEVDVF9ORUFSKGlucHV0W2ldWzFdLCBvdXRwdXRWYWwyLCBm
bG9hdEZhdWx0VG9sZXJhbmNlKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJlY3RuZXNz
IG9mIHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFja1Nub3JtMngxNiBmdW5jdGlvbnMgd2l0aCBpbmZp
bml0eSB2YWx1ZXMsCisvLyByZXN1bHQgc2hvdWxkIGJlIGNsYW1wZWQgdG8gWy0xLCAxXS4KK1RF
U1QoTWF0aFV0aWxUZXN0LCBwYWNrQW5kVW5wYWNrU25vcm0yeDE2SW5maW5pdHkpCit7CisgICAg
Y29uc3QgZmxvYXQgZmxvYXRGYXVsdFRvbGVyYW5jZSA9IDAuMDAwMWY7CisgICAgZmxvYXQgb3V0
cHV0VmFsMSwgb3V0cHV0VmFsMjsKKworICAgIHVucGFja1Nub3JtMngxNihwYWNrU25vcm0yeDE2
KHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgp
KSwgJm91dHB1dFZhbDEsICZvdXRwdXRWYWwyKTsKKyAgICBFWFBFQ1RfTkVBUigxLjBmLCBvdXRw
dXRWYWwxLCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKyAgICBFWFBFQ1RfTkVBUigxLjBmLCBvdXRw
dXRWYWwyLCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKworICAgIHVucGFja1Nub3JtMngxNihwYWNr
U25vcm0yeDE2KHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6
aW5maW5pdHkoKSksICZvdXRwdXRWYWwxLCAmb3V0cHV0VmFsMik7CisgICAgRVhQRUNUX05FQVIo
MS4wZiwgb3V0cHV0VmFsMSwgZmxvYXRGYXVsdFRvbGVyYW5jZSk7CisgICAgRVhQRUNUX05FQVIo
LTEuMGYsIG91dHB1dFZhbDIsIGZsb2F0RmF1bHRUb2xlcmFuY2UpOworCisgICAgdW5wYWNrU25v
cm0yeDE2KHBhY2tTbm9ybTJ4MTYoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0
eSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1zdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6aW5maW5pdHkoKSksICZvdXRwdXRWYWwxLCAmb3V0cHV0VmFsMik7CisgICAg
RVhQRUNUX05FQVIoLTEuMGYsIG91dHB1dFZhbDEsIGZsb2F0RmF1bHRUb2xlcmFuY2UpOworICAg
IEVYUEVDVF9ORUFSKC0xLjBmLCBvdXRwdXRWYWwyLCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKK30K
KworLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Vub3JtMngxNiBhbmQgdW5wYWNrVW5v
cm0yeDE2IGZ1bmN0aW9ucy4KKy8vIEZvciBmbG9hdHMgZjEgYW5kIGYyLCB1bnBhY2tVbm9ybTJ4
MTYocGFja1Vub3JtMngxNihmMSwgZjIpKSBzaG91bGQgYmUgc2FtZSBhcyBmMSBhbmQgZjIuCitU
RVNUKE1hdGhVdGlsVGVzdCwgcGFja0FuZFVucGFja1Vub3JtMngxNikKK3sKKyAgICBjb25zdCBm
bG9hdCBpbnB1dFs4XVsyXSA9CisgICAgeworICAgICAgICB7IDAuMGYsIDAuMGYgfSwKKyAgICAg
ICAgeyAxLjBmLCAxLjBmIH0sCisgICAgICAgIHsgLTEuMGYsIDEuMGYgfSwKKyAgICAgICAgeyAt
MS4wZiwgLTEuMGYgfSwKKyAgICAgICAgeyAwLjg3NWYsIDAuNzVmIH0sCisgICAgICAgIHsgMC4w
MDM5MmYsIC0wLjk5MjE1ZiB9LAorICAgICAgICB7IC0wLjAwMDY3NWYsIDAuMDA0OTU0ZiB9LAor
ICAgICAgICB7IC0wLjY5MzdmLCAtMC4wMjE0NmYgfQorICAgIH07CisgICAgY29uc3QgZmxvYXQg
ZmxvYXRGYXVsdFRvbGVyYW5jZSA9IDAuMDAwMWY7CisgICAgZmxvYXQgb3V0cHV0VmFsMSwgb3V0
cHV0VmFsMjsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKQorICAgIHsKKyAg
ICAgICAgdW5wYWNrVW5vcm0yeDE2KHBhY2tVbm9ybTJ4MTYoaW5wdXRbaV1bMF0sIGlucHV0W2ld
WzFdKSwgJm91dHB1dFZhbDEsICZvdXRwdXRWYWwyKTsKKyAgICAgICAgZmxvYXQgZXhwZWN0ZWQg
PSBpbnB1dFtpXVswXSA8IDAuMGYgPyAwLjBmIDogaW5wdXRbaV1bMF07CisgICAgICAgIEVYUEVD
VF9ORUFSKGV4cGVjdGVkLCBvdXRwdXRWYWwxLCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKyAgICAg
ICAgZXhwZWN0ZWQgPSBpbnB1dFtpXVsxXSA8IDAuMGYgPyAwLjBmIDogaW5wdXRbaV1bMV07Cisg
ICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkLCBvdXRwdXRWYWwyLCBmbG9hdEZhdWx0VG9sZXJh
bmNlKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tVbm9ybTJ4
MTYgYW5kIHVucGFja1Vub3JtMngxNiBmdW5jdGlvbnMgd2l0aCBpbmZpbml0eSB2YWx1ZXMsCisv
LyByZXN1bHQgc2hvdWxkIGJlIGNsYW1wZWQgdG8gWzAsIDFdLgorVEVTVChNYXRoVXRpbFRlc3Qs
IHBhY2tBbmRVbnBhY2tVbm9ybTJ4MTZJbmZpbml0eSkKK3sKKyAgICBjb25zdCBmbG9hdCBmbG9h
dEZhdWx0VG9sZXJhbmNlID0gMC4wMDAxZjsKKyAgICBmbG9hdCBvdXRwdXRWYWwxLCBvdXRwdXRW
YWwyOworCisgICAgdW5wYWNrVW5vcm0yeDE2KHBhY2tVbm9ybTJ4MTYoc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkpLCAmb3V0cHV0VmFsMSwg
Jm91dHB1dFZhbDIpOworICAgIEVYUEVDVF9ORUFSKDEuMGYsIG91dHB1dFZhbDEsIGZsb2F0RmF1
bHRUb2xlcmFuY2UpOworICAgIEVYUEVDVF9ORUFSKDEuMGYsIG91dHB1dFZhbDIsIGZsb2F0RmF1
bHRUb2xlcmFuY2UpOworCisgICAgdW5wYWNrVW5vcm0yeDE2KHBhY2tVbm9ybTJ4MTYoc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpKSwgJm91
dHB1dFZhbDEsICZvdXRwdXRWYWwyKTsKKyAgICBFWFBFQ1RfTkVBUigxLjBmLCBvdXRwdXRWYWwx
LCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKyAgICBFWFBFQ1RfTkVBUigwLjBmLCBvdXRwdXRWYWwy
LCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKworICAgIHVucGFja1Vub3JtMngxNihwYWNrVW5vcm0y
eDE2KC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmlu
aXR5KCkpLCAmb3V0cHV0VmFsMSwgJm91dHB1dFZhbDIpOworICAgIEVYUEVDVF9ORUFSKDAuMGYs
IG91dHB1dFZhbDEsIGZsb2F0RmF1bHRUb2xlcmFuY2UpOworICAgIEVYUEVDVF9ORUFSKDAuMGYs
IG91dHB1dFZhbDIsIGZsb2F0RmF1bHRUb2xlcmFuY2UpOworfQorCisvLyBUZXN0IHRoZSBjb3Jy
ZWN0bmVzcyBvZiBwYWNrSGFsZjJ4MTYgYW5kIHVucGFja0hhbGYyeDE2IGZ1bmN0aW9ucy4KKy8v
IEZvciBmbG9hdHMgZjEgYW5kIGYyLCB1bnBhY2tIYWxmMngxNihwYWNrSGFsZjJ4MTYoZjEsIGYy
KSkgc2hvdWxkIGJlIHNhbWUgYXMgZjEgYW5kIGYyLgorVEVTVChNYXRoVXRpbFRlc3QsIHBhY2tB
bmRVbnBhY2tIYWxmMngxNikKK3sKKyAgICBjb25zdCBmbG9hdCBpbnB1dFs4XVsyXSA9CisgICAg
eworICAgICAgICB7IDAuMGYsIDAuMGYgfSwKKyAgICAgICAgeyAxLjBmLCAxLjBmIH0sCisgICAg
ICAgIHsgLTEuMGYsIDEuMGYgfSwKKyAgICAgICAgeyAtMS4wZiwgLTEuMGYgfSwKKyAgICAgICAg
eyAwLjg3NWYsIDAuNzVmIH0sCisgICAgICAgIHsgMC4wMDM5MmYsIC0wLjk5MjE1ZiB9LAorICAg
ICAgICB7IC0wLjAwMDY3NWYsIDAuMDA0OTU0ZiB9LAorICAgICAgICB7IC0wLjY5MzdmLCAtMC4w
MjE0NmYgfSwKKyAgICB9OworICAgIGNvbnN0IGZsb2F0IGZsb2F0RmF1bHRUb2xlcmFuY2UgPSAw
LjAwMDVmOworICAgIGZsb2F0IG91dHB1dFZhbDEsIG91dHB1dFZhbDI7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDg7IGkrKykKKyAgICB7CisgICAgICAgIHVucGFja0hhbGYyeDE2KHBh
Y2tIYWxmMngxNihpbnB1dFtpXVswXSwgaW5wdXRbaV1bMV0pLCAmb3V0cHV0VmFsMSwgJm91dHB1
dFZhbDIpOworICAgICAgICBFWFBFQ1RfTkVBUihpbnB1dFtpXVswXSwgb3V0cHV0VmFsMSwgZmxv
YXRGYXVsdFRvbGVyYW5jZSk7CisgICAgICAgIEVYUEVDVF9ORUFSKGlucHV0W2ldWzFdLCBvdXRw
dXRWYWwyLCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKyAgICB9Cit9CisKKy8vIFRlc3QgdGhlIGNv
cnJlY3RuZXNzIG9mIGdsOjppc05hTiBmdW5jdGlvbi4KK1RFU1QoTWF0aFV0aWxUZXN0LCBpc05h
TikKK3sKKyAgICBFWFBFQ1RfVFJVRShpc05hTihiaXRDYXN0PGZsb2F0PigweGZmdSA8PCAyMyB8
IDF1KSkpOworICAgIEVYUEVDVF9UUlVFKGlzTmFOKGJpdENhc3Q8ZmxvYXQ+KDF1IDw8IDMxIHwg
MHhmZnUgPDwgMjMgfCAxdSkpKTsKKyAgICBFWFBFQ1RfVFJVRShpc05hTihiaXRDYXN0PGZsb2F0
PigxdSA8PCAzMSB8IDB4ZmZ1IDw8IDIzIHwgMHg0MDAwMDB1KSkpOworICAgIEVYUEVDVF9UUlVF
KGlzTmFOKGJpdENhc3Q8ZmxvYXQ+KDF1IDw8IDMxIHwgMHhmZnUgPDwgMjMgfCAweDdmZmZmZnUp
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzTmFOKDAuMGYpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNO
YU4oYml0Q2FzdDxmbG9hdD4oMXUgPDwgMzEgfCAweGZmdSA8PCAyMykpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNOYU4oYml0Q2FzdDxmbG9hdD4oMHhmZnUgPDwgMjMpKSk7Cit9CisKKy8vIFRlc3Qg
dGhlIGNvcnJlY3RuZXNzIG9mIGdsOjppc0luZiBmdW5jdGlvbi4KK1RFU1QoTWF0aFV0aWxUZXN0
LCBpc0luZikKK3sKKyAgICBFWFBFQ1RfVFJVRShpc0luZihiaXRDYXN0PGZsb2F0PigweGZmdSA8
PCAyMykpKTsKKyAgICBFWFBFQ1RfVFJVRShpc0luZihiaXRDYXN0PGZsb2F0PigxdSA8PCAzMSB8
IDB4ZmZ1IDw8IDIzKSkpOworICAgIEVYUEVDVF9GQUxTRShpc0luZigwLjBmKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzSW5mKGJpdENhc3Q8ZmxvYXQ+KDB4ZmZ1IDw8IDIzIHwgMXUpKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGlzSW5mKGJpdENhc3Q8ZmxvYXQ+KDF1IDw8IDMxIHwgMHhmZnUgPDwgMjMg
fCAxdSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNJbmYoYml0Q2FzdDxmbG9hdD4oMXUgPDwgMzEg
fCAweGZmdSA8PCAyMyB8IDB4NDAwMDAwdSkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNJbmYoYml0
Q2FzdDxmbG9hdD4oMXUgPDwgMzEgfCAweGZmdSA8PCAyMyB8IDB4N2ZmZmZmdSkpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoaXNJbmYoYml0Q2FzdDxmbG9hdD4oMHhmZXUgPDwgMjMgfCAweDdmZmZmZnUp
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzSW5mKGJpdENhc3Q8ZmxvYXQ+KDF1IDw8IDMxIHwgMHhm
ZXUgPDwgMjMgfCAweDdmZmZmZnUpKSk7Cit9CisKK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRyaXhfdXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdHJpeF91dGlscy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRyaXhfdXRpbHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM0OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIE1hdHJpeDoKKy8vICAg
VXRpbGl0eSBjbGFzcyBpbXBsZW1lbnRpbmcgdmFyaW91cyBtYXRyaXggb3BlcmF0aW9ucy4KKy8v
ICAgU3VwcG9ydHMgbWF0cmljZXMgd2l0aCBtaW5pbXVtIDIgYW5kIG1heGltdW0gNCBudW1iZXIg
b2Ygcm93cy9jb2x1bW5zLgorLy8KKy8vIFRPRE86IENoZWNrIGlmIHdlIGNhbiBtZXJnZSBNYXRy
aXguaCBpbiBzYW1wbGVfdXRpbCB3aXRoIHRoaXMgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGlzIGlt
cGxlbWVudGF0aW9uLgorLy8gVE9ETzogUmVuYW1lIHRoaXMgZmlsZSB0byBNYXRyaXguaCBvbmNl
IHdlIHJlbW92ZSBNYXRyaXguaCBpbiBzYW1wbGVfdXRpbC4KKworI2lmbmRlZiBDT01NT05fTUFU
UklYX1VUSUxTX0hfCisjZGVmaW5lIENPTU1PTl9NQVRSSVhfVVRJTFNfSF8KKworI2luY2x1ZGUg
PHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgYW5nbGUK
K3sKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIE1hdHJpeAoreworICBwdWJsaWM6Cisg
ICAgTWF0cml4KGNvbnN0IHN0ZDo6dmVjdG9yPFQ+ICZlbGVtZW50cywgY29uc3QgdW5zaWduZWQg
aW50ICZudW1Sb3dzLCBjb25zdCB1bnNpZ25lZCBpbnQgJm51bUNvbHMpCisgICAgICAgIDogbUVs
ZW1lbnRzKGVsZW1lbnRzKSwKKyAgICAgICAgICBtUm93cyhudW1Sb3dzKSwKKyAgICAgICAgICBt
Q29scyhudW1Db2xzKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJvd3MoKSA+PSAxICYmIHJvd3Mo
KSA8PSA0KTsKKyAgICAgICAgQVNTRVJUKGNvbHVtbnMoKSA+PSAxICYmIGNvbHVtbnMoKSA8PSA0
KTsKKyAgICB9CisKKyAgICBNYXRyaXgoY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJmVsZW1lbnRzLCBj
b25zdCB1bnNpZ25lZCBpbnQgJnNpemUpCisgICAgICAgIDogbUVsZW1lbnRzKGVsZW1lbnRzKSwK
KyAgICAgICAgICBtUm93cyhzaXplKSwKKyAgICAgICAgICBtQ29scyhzaXplKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJvd3MoKSA+PSAxICYmIHJvd3MoKSA8PSA0KTsKKyAgICAgICAgQVNTRVJU
KGNvbHVtbnMoKSA+PSAxICYmIGNvbHVtbnMoKSA8PSA0KTsKKyAgICB9CisKKyAgICBNYXRyaXgo
Y29uc3QgVCAqZWxlbWVudHMsIGNvbnN0IHVuc2lnbmVkIGludCAmc2l6ZSkKKyAgICAgICAgOiBt
Um93cyhzaXplKSwKKyAgICAgICAgICBtQ29scyhzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHJvd3MoKSA+PSAxICYmIHJvd3MoKSA8PSA0KTsKKyAgICAgICAgQVNTRVJUKGNvbHVtbnMoKSA+
PSAxICYmIGNvbHVtbnMoKSA8PSA0KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplICogc2l6ZTsgaSsrKQorICAgICAgICAgICAgbUVsZW1lbnRzLnB1c2hfYmFjayhlbGVtZW50
c1tpXSk7CisgICAgfQorCisgICAgY29uc3QgVCAmb3BlcmF0b3IoKShjb25zdCB1bnNpZ25lZCBp
bnQgJnJvd0luZGV4LCBjb25zdCB1bnNpZ25lZCBpbnQgJmNvbHVtbkluZGV4KSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1FbGVtZW50c1tyb3dJbmRleCAqIGNvbHVtbnMoKSArIGNvbHVt
bkluZGV4XTsKKyAgICB9CisKKyAgICBUICZvcGVyYXRvcigpKGNvbnN0IHVuc2lnbmVkIGludCAm
cm93SW5kZXgsIGNvbnN0IHVuc2lnbmVkIGludCAmY29sdW1uSW5kZXgpCisgICAgeworICAgICAg
ICByZXR1cm4gbUVsZW1lbnRzW3Jvd0luZGV4ICogY29sdW1ucygpICsgY29sdW1uSW5kZXhdOwor
ICAgIH0KKworICAgIGNvbnN0IFQgJmF0KGNvbnN0IHVuc2lnbmVkIGludCAmcm93SW5kZXgsIGNv
bnN0IHVuc2lnbmVkIGludCAmY29sdW1uSW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gb3BlcmF0b3IoKShyb3dJbmRleCwgY29sdW1uSW5kZXgpOworICAgIH0KKworICAgIE1hdHJp
eDxUPiBvcGVyYXRvciooY29uc3QgTWF0cml4PFQ+ICZtKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGNvbHVtbnMoKSA9PSBtLnJvd3MoKSk7CisKKyAgICAgICAgdW5zaWduZWQgaW50IHJlc3VsdFJv
d3MgPSByb3dzKCk7CisgICAgICAgIHVuc2lnbmVkIGludCByZXN1bHRDb2xzID0gbS5jb2x1bW5z
KCk7CisgICAgICAgIE1hdHJpeDxUPiByZXN1bHQoc3RkOjp2ZWN0b3I8VD4ocmVzdWx0Um93cyAq
IHJlc3VsdENvbHMpLCByZXN1bHRSb3dzLCByZXN1bHRDb2xzKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCByZXN1bHRSb3dzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgcmVzdWx0Q29sczsgaisrKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIFQgdG1wID0gMC4wZjsKKyAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBrID0gMDsgayA8IGNvbHVtbnMoKTsgaysrKQorICAgICAgICAgICAg
ICAgICAgICB0bXAgKz0gYXQoaSwgaykgKiBtKGssIGopOworICAgICAgICAgICAgICAgIHJlc3Vs
dChpLCBqKSA9IHRtcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IHNpemUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKHJvd3MoKSA9PSBjb2x1bW5zKCkpOworICAgICAgICByZXR1cm4gcm93
cygpOworICAgIH0KKworICAgIHVuc2lnbmVkIGludCByb3dzKCkgY29uc3QgeyByZXR1cm4gbVJv
d3M7IH0KKworICAgIHVuc2lnbmVkIGludCBjb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbUNvbHM7
IH0KKworICAgIHN0ZDo6dmVjdG9yPFQ+IGVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbUVsZW1l
bnRzOyB9CisKKyAgICBNYXRyaXg8VD4gY29tcE11bHQoY29uc3QgTWF0cml4PFQ+ICZtYXQxKSBj
b25zdAorICAgIHsKKyAgICAgICAgTWF0cml4IHJlc3VsdChzdGQ6OnZlY3RvcjxUPihtRWxlbWVu
dHMuc2l6ZSgpKSwgc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBjb2x1bW5zKCk7IGkrKykKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBq
IDwgcm93cygpOyBqKyspCisgICAgICAgICAgICAgICAgcmVzdWx0KGksIGopID0gYXQoaSwgaikg
KiBtYXQxKGksIGopOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgTWF0
cml4PFQ+IG91dGVyUHJvZHVjdChjb25zdCBNYXRyaXg8VD4gJm1hdDEpIGNvbnN0CisgICAgewor
ICAgICAgICB1bnNpZ25lZCBpbnQgY29scyA9IG1hdDEuY29sdW1ucygpOworICAgICAgICBNYXRy
aXggcmVzdWx0KHN0ZDo6dmVjdG9yPFQ+KHJvd3MoKSAqIGNvbHMpLCByb3dzKCksIGNvbHMpOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJvd3MoKTsgaSsrKQorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspCisgICAgICAgICAg
ICAgICAgcmVzdWx0KGksIGopID0gYXQoaSwgMCkgKiBtYXQxKDAsIGopOworCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgTWF0cml4PFQ+IHRyYW5zcG9zZSgpIGNvbnN0Cisg
ICAgeworICAgICAgICBNYXRyaXggcmVzdWx0KHN0ZDo6dmVjdG9yPFQ+KG1FbGVtZW50cy5zaXpl
KCkpLCBjb2x1bW5zKCksIHJvd3MoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAw
OyBpIDwgY29sdW1ucygpOyBpKyspCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0g
MDsgaiA8IHJvd3MoKTsgaisrKQorICAgICAgICAgICAgICAgIHJlc3VsdChpLCBqKSA9IGF0KGos
IGkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgVCBkZXRlcm1pbmFu
dCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQocm93cygpID09IGNvbHVtbnMoKSk7CisK
KyAgICAgICAgc3dpdGNoIChzaXplKCkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICByZXR1cm4gYXQoMCwgMCkgKiBhdCgxLCAxKSAtIGF0KDAsIDEpICogYXQoMSwg
MCk7CisKKyAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICByZXR1cm4gYXQoMCwgMCkgKiBh
dCgxLCAxKSAqIGF0KDIsIDIpICsKKyAgICAgICAgICAgICAgICBhdCgwLCAxKSAqIGF0KDEsIDIp
ICogYXQoMiwgMCkgKworICAgICAgICAgICAgICAgIGF0KDAsIDIpICogYXQoMSwgMCkgKiBhdCgy
LCAxKSAtCisgICAgICAgICAgICAgICAgYXQoMCwgMikgKiBhdCgxLCAxKSAqIGF0KDIsIDApIC0K
KyAgICAgICAgICAgICAgICBhdCgwLCAxKSAqIGF0KDEsIDApICogYXQoMiwgMikgLQorICAgICAg
ICAgICAgICAgIGF0KDAsIDApICogYXQoMSwgMikgKiBhdCgyLCAxKTsKKworICAgICAgICAgIGNh
c2UgNDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBtaW5vck1h
dHJpY2VzWzRdWzMgKiAzXSA9CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdCgxLCAxKSwgYXQoMiwgMSksIGF0KDMsIDEp
LAorICAgICAgICAgICAgICAgICAgICAgICAgYXQoMSwgMiksIGF0KDIsIDIpLCBhdCgzLCAyKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGF0KDEsIDMpLCBhdCgyLCAzKSwgYXQoMywgMyksCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF0KDEsIDApLCBhdCgyLCAwKSwgYXQoMywgMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICBhdCgxLCAyKSwgYXQoMiwgMiksIGF0KDMsIDIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgYXQoMSwgMyksIGF0KDIsIDMpLCBhdCgzLCAzKSwKKyAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgYXQo
MSwgMCksIGF0KDIsIDApLCBhdCgzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0KDEs
IDEpLCBhdCgyLCAxKSwgYXQoMywgMSksCisgICAgICAgICAgICAgICAgICAgICAgICBhdCgxLCAz
KSwgYXQoMiwgMyksIGF0KDMsIDMpLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdCgxLCAwKSwgYXQoMiwgMCks
IGF0KDMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgYXQoMSwgMSksIGF0KDIsIDEpLCBh
dCgzLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0KDEsIDIpLCBhdCgyLCAyKSwgYXQo
MywgMiksCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgcmV0dXJuIGF0KDAsIDApICogTWF0cml4PFQ+KG1pbm9yTWF0cmljZXNbMF0sIDMpLmRl
dGVybWluYW50KCkgLQorICAgICAgICAgICAgICAgICAgYXQoMCwgMSkgKiBNYXRyaXg8VD4obWlu
b3JNYXRyaWNlc1sxXSwgMykuZGV0ZXJtaW5hbnQoKSArCisgICAgICAgICAgICAgICAgICBhdCgw
LCAyKSAqIE1hdHJpeDxUPihtaW5vck1hdHJpY2VzWzJdLCAzKS5kZXRlcm1pbmFudCgpIC0KKyAg
ICAgICAgICAgICAgICAgIGF0KDAsIDMpICogTWF0cml4PFQ+KG1pbm9yTWF0cmljZXNbM10sIDMp
LmRldGVybWluYW50KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIFQoKTsKKyAgICB9CisKKyAgICBNYXRyaXg8VD4gaW52ZXJzZSgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQocm93cygpID09IGNvbHVtbnMoKSk7CisKKyAgICAg
ICAgTWF0cml4PFQ+IGNvZihzdGQ6OnZlY3RvcjxUPihtRWxlbWVudHMuc2l6ZSgpKSwgcm93cygp
LCBjb2x1bW5zKCkpOworICAgICAgICBzd2l0Y2ggKHNpemUoKSkKKyAgICAgICAgeworICAgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvZigwLCAwKSA9IGF0KDEsIDEpOworICAgICAgICAg
ICAgY29mKDAsIDEpID0gLWF0KDEsIDApOworICAgICAgICAgICAgY29mKDEsIDApID0gLWF0KDAs
IDEpOworICAgICAgICAgICAgY29mKDEsIDEpID0gYXQoMCwgMCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgIGNvZigwLCAwKSA9IGF0KDEsIDEp
ICogYXQoMiwgMikgLQorICAgICAgICAgICAgICAgIGF0KDIsIDEpICogYXQoMSwgMik7CisgICAg
ICAgICAgICBjb2YoMCwgMSkgPSAtKGF0KDEsIDApICogYXQoMiwgMikgLQorICAgICAgICAgICAg
ICAgIGF0KDIsIDApICogYXQoMSwgMikpOworICAgICAgICAgICAgY29mKDAsIDIpID0gYXQoMSwg
MCkgKiBhdCgyLCAxKSAtCisgICAgICAgICAgICAgICAgYXQoMiwgMCkgKiBhdCgxLCAxKTsKKyAg
ICAgICAgICAgIGNvZigxLCAwKSA9IC0oYXQoMCwgMSkgKiBhdCgyLCAyKSAtCisgICAgICAgICAg
ICAgICAgYXQoMiwgMSkgKiBhdCgwLCAyKSk7CisgICAgICAgICAgICBjb2YoMSwgMSkgPSBhdCgw
LCAwKSAqIGF0KDIsIDIpIC0KKyAgICAgICAgICAgICAgICBhdCgyLCAwKSAqIGF0KDAsIDIpOwor
ICAgICAgICAgICAgY29mKDEsIDIpID0gLShhdCgwLCAwKSAqIGF0KDIsIDEpIC0KKyAgICAgICAg
ICAgICAgICBhdCgyLCAwKSAqIGF0KDAsIDEpKTsKKyAgICAgICAgICAgIGNvZigyLCAwKSA9IGF0
KDAsIDEpICogYXQoMSwgMikgLQorICAgICAgICAgICAgICAgIGF0KDEsIDEpICogYXQoMCwgMik7
CisgICAgICAgICAgICBjb2YoMiwgMSkgPSAtKGF0KDAsIDApICogYXQoMSwgMikgLQorICAgICAg
ICAgICAgICAgIGF0KDEsIDApICogYXQoMCwgMikpOworICAgICAgICAgICAgY29mKDIsIDIpID0g
YXQoMCwgMCkgKiBhdCgxLCAxKSAtCisgICAgICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgwLCAx
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAg
Y29mKDAsIDApID0gYXQoMSwgMSkgKiBhdCgyLCAyKSAqIGF0KDMsIDMpICsKKyAgICAgICAgICAg
ICAgICBhdCgyLCAxKSAqIGF0KDMsIDIpICogYXQoMSwgMykgKworICAgICAgICAgICAgICAgIGF0
KDMsIDEpICogYXQoMSwgMikgKiBhdCgyLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMSwgMSkg
KiBhdCgzLCAyKSAqIGF0KDIsIDMpIC0KKyAgICAgICAgICAgICAgICBhdCgyLCAxKSAqIGF0KDEs
IDIpICogYXQoMywgMykgLQorICAgICAgICAgICAgICAgIGF0KDMsIDEpICogYXQoMiwgMikgKiBh
dCgxLCAzKTsKKyAgICAgICAgICAgIGNvZigwLCAxKSA9IC0oYXQoMSwgMCkgKiBhdCgyLCAyKSAq
IGF0KDMsIDMpICsKKyAgICAgICAgICAgICAgICBhdCgyLCAwKSAqIGF0KDMsIDIpICogYXQoMSwg
MykgKworICAgICAgICAgICAgICAgIGF0KDMsIDApICogYXQoMSwgMikgKiBhdCgyLCAzKSAtCisg
ICAgICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgzLCAyKSAqIGF0KDIsIDMpIC0KKyAgICAgICAg
ICAgICAgICBhdCgyLCAwKSAqIGF0KDEsIDIpICogYXQoMywgMykgLQorICAgICAgICAgICAgICAg
IGF0KDMsIDApICogYXQoMiwgMikgKiBhdCgxLCAzKSk7CisgICAgICAgICAgICBjb2YoMCwgMikg
PSBhdCgxLCAwKSAqIGF0KDIsIDEpICogYXQoMywgMykgKworICAgICAgICAgICAgICAgIGF0KDIs
IDApICogYXQoMywgMSkgKiBhdCgxLCAzKSArCisgICAgICAgICAgICAgICAgYXQoMywgMCkgKiBh
dCgxLCAxKSAqIGF0KDIsIDMpIC0KKyAgICAgICAgICAgICAgICBhdCgxLCAwKSAqIGF0KDMsIDEp
ICogYXQoMiwgMykgLQorICAgICAgICAgICAgICAgIGF0KDIsIDApICogYXQoMSwgMSkgKiBhdCgz
LCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMywgMCkgKiBhdCgyLCAxKSAqIGF0KDEsIDMpOwor
ICAgICAgICAgICAgY29mKDAsIDMpID0gLShhdCgxLCAwKSAqIGF0KDIsIDEpICogYXQoMywgMikg
KworICAgICAgICAgICAgICAgIGF0KDIsIDApICogYXQoMywgMSkgKiBhdCgxLCAyKSArCisgICAg
ICAgICAgICAgICAgYXQoMywgMCkgKiBhdCgxLCAxKSAqIGF0KDIsIDIpIC0KKyAgICAgICAgICAg
ICAgICBhdCgxLCAwKSAqIGF0KDMsIDEpICogYXQoMiwgMikgLQorICAgICAgICAgICAgICAgIGF0
KDIsIDApICogYXQoMSwgMSkgKiBhdCgzLCAyKSAtCisgICAgICAgICAgICAgICAgYXQoMywgMCkg
KiBhdCgyLCAxKSAqIGF0KDEsIDIpKTsKKyAgICAgICAgICAgIGNvZigxLCAwKSA9IC0oYXQoMCwg
MSkgKiBhdCgyLCAyKSAqIGF0KDMsIDMpICsKKyAgICAgICAgICAgICAgICBhdCgyLCAxKSAqIGF0
KDMsIDIpICogYXQoMCwgMykgKworICAgICAgICAgICAgICAgIGF0KDMsIDEpICogYXQoMCwgMikg
KiBhdCgyLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMCwgMSkgKiBhdCgzLCAyKSAqIGF0KDIs
IDMpIC0KKyAgICAgICAgICAgICAgICBhdCgyLCAxKSAqIGF0KDAsIDIpICogYXQoMywgMykgLQor
ICAgICAgICAgICAgICAgIGF0KDMsIDEpICogYXQoMiwgMikgKiBhdCgwLCAzKSk7CisgICAgICAg
ICAgICBjb2YoMSwgMSkgPSBhdCgwLCAwKSAqIGF0KDIsIDIpICogYXQoMywgMykgKworICAgICAg
ICAgICAgICAgIGF0KDIsIDApICogYXQoMywgMikgKiBhdCgwLCAzKSArCisgICAgICAgICAgICAg
ICAgYXQoMywgMCkgKiBhdCgwLCAyKSAqIGF0KDIsIDMpIC0KKyAgICAgICAgICAgICAgICBhdCgw
LCAwKSAqIGF0KDMsIDIpICogYXQoMiwgMykgLQorICAgICAgICAgICAgICAgIGF0KDIsIDApICog
YXQoMCwgMikgKiBhdCgzLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMywgMCkgKiBhdCgyLCAy
KSAqIGF0KDAsIDMpOworICAgICAgICAgICAgY29mKDEsIDIpID0gLShhdCgwLCAwKSAqIGF0KDIs
IDEpICogYXQoMywgMykgKworICAgICAgICAgICAgICAgIGF0KDIsIDApICogYXQoMywgMSkgKiBh
dCgwLCAzKSArCisgICAgICAgICAgICAgICAgYXQoMywgMCkgKiBhdCgwLCAxKSAqIGF0KDIsIDMp
IC0KKyAgICAgICAgICAgICAgICBhdCgwLCAwKSAqIGF0KDMsIDEpICogYXQoMiwgMykgLQorICAg
ICAgICAgICAgICAgIGF0KDIsIDApICogYXQoMCwgMSkgKiBhdCgzLCAzKSAtCisgICAgICAgICAg
ICAgICAgYXQoMywgMCkgKiBhdCgyLCAxKSAqIGF0KDAsIDMpKTsKKyAgICAgICAgICAgIGNvZigx
LCAzKSA9IGF0KDAsIDApICogYXQoMiwgMSkgKiBhdCgzLCAyKSArCisgICAgICAgICAgICAgICAg
YXQoMiwgMCkgKiBhdCgzLCAxKSAqIGF0KDAsIDIpICsKKyAgICAgICAgICAgICAgICBhdCgzLCAw
KSAqIGF0KDAsIDEpICogYXQoMiwgMikgLQorICAgICAgICAgICAgICAgIGF0KDAsIDApICogYXQo
MywgMSkgKiBhdCgyLCAyKSAtCisgICAgICAgICAgICAgICAgYXQoMiwgMCkgKiBhdCgwLCAxKSAq
IGF0KDMsIDIpIC0KKyAgICAgICAgICAgICAgICBhdCgzLCAwKSAqIGF0KDIsIDEpICogYXQoMCwg
Mik7CisgICAgICAgICAgICBjb2YoMiwgMCkgPSBhdCgwLCAxKSAqIGF0KDEsIDIpICogYXQoMywg
MykgKworICAgICAgICAgICAgICAgIGF0KDEsIDEpICogYXQoMywgMikgKiBhdCgwLCAzKSArCisg
ICAgICAgICAgICAgICAgYXQoMywgMSkgKiBhdCgwLCAyKSAqIGF0KDEsIDMpIC0KKyAgICAgICAg
ICAgICAgICBhdCgwLCAxKSAqIGF0KDMsIDIpICogYXQoMSwgMykgLQorICAgICAgICAgICAgICAg
IGF0KDEsIDEpICogYXQoMCwgMikgKiBhdCgzLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMywg
MSkgKiBhdCgxLCAyKSAqIGF0KDAsIDMpOworICAgICAgICAgICAgY29mKDIsIDEpID0gLShhdCgw
LCAwKSAqIGF0KDEsIDIpICogYXQoMywgMykgKworICAgICAgICAgICAgICAgIGF0KDEsIDApICog
YXQoMywgMikgKiBhdCgwLCAzKSArCisgICAgICAgICAgICAgICAgYXQoMywgMCkgKiBhdCgwLCAy
KSAqIGF0KDEsIDMpIC0KKyAgICAgICAgICAgICAgICBhdCgwLCAwKSAqIGF0KDMsIDIpICogYXQo
MSwgMykgLQorICAgICAgICAgICAgICAgIGF0KDEsIDApICogYXQoMCwgMikgKiBhdCgzLCAzKSAt
CisgICAgICAgICAgICAgICAgYXQoMywgMCkgKiBhdCgxLCAyKSAqIGF0KDAsIDMpKTsKKyAgICAg
ICAgICAgIGNvZigyLCAyKSA9IGF0KDAsIDApICogYXQoMSwgMSkgKiBhdCgzLCAzKSArCisgICAg
ICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgzLCAxKSAqIGF0KDAsIDMpICsKKyAgICAgICAgICAg
ICAgICBhdCgzLCAwKSAqIGF0KDAsIDEpICogYXQoMSwgMykgLQorICAgICAgICAgICAgICAgIGF0
KDAsIDApICogYXQoMywgMSkgKiBhdCgxLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMSwgMCkg
KiBhdCgwLCAxKSAqIGF0KDMsIDMpIC0KKyAgICAgICAgICAgICAgICBhdCgzLCAwKSAqIGF0KDEs
IDEpICogYXQoMCwgMyk7CisgICAgICAgICAgICBjb2YoMiwgMykgPSAtKGF0KDAsIDApICogYXQo
MSwgMSkgKiBhdCgzLCAyKSArCisgICAgICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgzLCAxKSAq
IGF0KDAsIDIpICsKKyAgICAgICAgICAgICAgICBhdCgzLCAwKSAqIGF0KDAsIDEpICogYXQoMSwg
MikgLQorICAgICAgICAgICAgICAgIGF0KDAsIDApICogYXQoMywgMSkgKiBhdCgxLCAyKSAtCisg
ICAgICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgwLCAxKSAqIGF0KDMsIDIpIC0KKyAgICAgICAg
ICAgICAgICBhdCgzLCAwKSAqIGF0KDEsIDEpICogYXQoMCwgMikpOworICAgICAgICAgICAgY29m
KDMsIDApID0gLShhdCgwLCAxKSAqIGF0KDEsIDIpICogYXQoMiwgMykgKworICAgICAgICAgICAg
ICAgIGF0KDEsIDEpICogYXQoMiwgMikgKiBhdCgwLCAzKSArCisgICAgICAgICAgICAgICAgYXQo
MiwgMSkgKiBhdCgwLCAyKSAqIGF0KDEsIDMpIC0KKyAgICAgICAgICAgICAgICBhdCgwLCAxKSAq
IGF0KDIsIDIpICogYXQoMSwgMykgLQorICAgICAgICAgICAgICAgIGF0KDEsIDEpICogYXQoMCwg
MikgKiBhdCgyLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMiwgMSkgKiBhdCgxLCAyKSAqIGF0
KDAsIDMpKTsKKyAgICAgICAgICAgIGNvZigzLCAxKSA9IGF0KDAsIDApICogYXQoMSwgMikgKiBh
dCgyLCAzKSArCisgICAgICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgyLCAyKSAqIGF0KDAsIDMp
ICsKKyAgICAgICAgICAgICAgICBhdCgyLCAwKSAqIGF0KDAsIDIpICogYXQoMSwgMykgLQorICAg
ICAgICAgICAgICAgIGF0KDAsIDApICogYXQoMiwgMikgKiBhdCgxLCAzKSAtCisgICAgICAgICAg
ICAgICAgYXQoMSwgMCkgKiBhdCgwLCAyKSAqIGF0KDIsIDMpIC0KKyAgICAgICAgICAgICAgICBh
dCgyLCAwKSAqIGF0KDEsIDIpICogYXQoMCwgMyk7CisgICAgICAgICAgICBjb2YoMywgMikgPSAt
KGF0KDAsIDApICogYXQoMSwgMSkgKiBhdCgyLCAzKSArCisgICAgICAgICAgICAgICAgYXQoMSwg
MCkgKiBhdCgyLCAxKSAqIGF0KDAsIDMpICsKKyAgICAgICAgICAgICAgICBhdCgyLCAwKSAqIGF0
KDAsIDEpICogYXQoMSwgMykgLQorICAgICAgICAgICAgICAgIGF0KDAsIDApICogYXQoMiwgMSkg
KiBhdCgxLCAzKSAtCisgICAgICAgICAgICAgICAgYXQoMSwgMCkgKiBhdCgwLCAxKSAqIGF0KDIs
IDMpIC0KKyAgICAgICAgICAgICAgICBhdCgyLCAwKSAqIGF0KDEsIDEpICogYXQoMCwgMykpOwor
ICAgICAgICAgICAgY29mKDMsIDMpID0gYXQoMCwgMCkgKiBhdCgxLCAxKSAqIGF0KDIsIDIpICsK
KyAgICAgICAgICAgICAgICBhdCgxLCAwKSAqIGF0KDIsIDEpICogYXQoMCwgMikgKworICAgICAg
ICAgICAgICAgIGF0KDIsIDApICogYXQoMCwgMSkgKiBhdCgxLCAyKSAtCisgICAgICAgICAgICAg
ICAgYXQoMCwgMCkgKiBhdCgyLCAxKSAqIGF0KDEsIDIpIC0KKyAgICAgICAgICAgICAgICBhdCgx
LCAwKSAqIGF0KDAsIDEpICogYXQoMiwgMikgLQorICAgICAgICAgICAgICAgIGF0KDIsIDApICog
YXQoMSwgMSkgKiBhdCgwLCAyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFRoZSBpbnZlcnNlIG9mIEEgaXMgdGhlIHRyYW5zcG9zZSBv
ZiB0aGUgY29mYWN0b3IgbWF0cml4IHRpbWVzIHRoZSByZWNpcHJvY2FsIG9mIHRoZSBkZXRlcm1p
bmFudCBvZiBBLgorICAgICAgICBNYXRyaXg8VD4gYWRqdWdhdGVNYXRyaXgoY29mLnRyYW5zcG9z
ZSgpKTsKKyAgICAgICAgVCBkZXQgPSBkZXRlcm1pbmFudCgpOworICAgICAgICBNYXRyaXg8VD4g
cmVzdWx0KHN0ZDo6dmVjdG9yPFQ+KG1FbGVtZW50cy5zaXplKCkpLCByb3dzKCksIGNvbHVtbnMo
KSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcm93cygpOyBpKyspCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGNvbHVtbnMoKTsgaisrKQor
ICAgICAgICAgICAgICAgIHJlc3VsdChpLCBqKSA9IGRldCA/IGFkanVnYXRlTWF0cml4KGksIGop
IC8gZGV0IDogVCgpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgIHByaXZh
dGU6CisgICAgc3RkOjp2ZWN0b3I8VD4gbUVsZW1lbnRzOworICAgIHVuc2lnbmVkIGludCBtUm93
czsKKyAgICB1bnNpZ25lZCBpbnQgbUNvbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmdsZQor
CisjZW5kaWYgICAvLyBDT01NT05fTUFUUklYX1VUSUxTX0hfCisKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0cml4X3V0aWxzX3VuaXR0ZXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdHJpeF91dGlsc191
bml0dGVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL21hdHJpeF91dGlsc191bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxODQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBtYXRyaXhfdXRpbHNfdW5pdHRlc3RzOgorLy8gICBVbml0
IHRlc3RzIGZvciB0aGUgbWF0cml4IHV0aWxzLgorLy8KKworI2luY2x1ZGUgIm1hdHJpeF91dGls
cy5oIgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OworCituYW1lc3BhY2UKK3sKKworY29uc3QgdW5zaWduZWQgaW50IG1pbkRpbWVuc2lvbnMgPSAy
OworY29uc3QgdW5zaWduZWQgaW50IG1heERpbWVuc2lvbnMgPSA0OworCitURVNUKE1hdHJpeFV0
aWxzVGVzdCwgTWF0cml4Q29uc3RydWN0b3JUZXN0KQoreworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSBtaW5EaW1lbnNpb25zOyBpIDw9IG1heERpbWVuc2lvbnM7IGkrKykKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGogPSBtaW5EaW1lbnNpb25zOyBqIDw9IG1heERpbWVuc2lv
bnM7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bUVsZW1lbnRz
ID0gaSAqIGo7CisgICAgICAgICAgICBNYXRyaXg8ZmxvYXQ+IG0oc3RkOjp2ZWN0b3I8ZmxvYXQ+
KG51bUVsZW1lbnRzLCAxLjBmKSwgaSwgaik7CisgICAgICAgICAgICBFWFBFQ1RfRVEobS5yb3dz
KCksIGkpOworICAgICAgICAgICAgRVhQRUNUX0VRKG0uY29sdW1ucygpLCBqKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShtLmVsZW1lbnRzKCksIHN0ZDo6dmVjdG9yPGZsb2F0PihudW1FbGVtZW50
cywgMS4wZikpOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IG1pbkRpbWVuc2lvbnM7IGkgPD0gbWF4RGltZW5zaW9uczsgaSsrKQorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgaW50IG51bUVsZW1lbnRzID0gaSAqIGk7CisgICAgICAgIE1hdHJpeDxmbG9hdD4g
bShzdGQ6OnZlY3RvcjxmbG9hdD4obnVtRWxlbWVudHMsIDEuMGYpLCBpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKG0uc2l6ZSgpLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKG0uY29sdW1ucygpLCBtLmNv
bHVtbnMoKSk7CisgICAgICAgIEVYUEVDVF9FUShtLmVsZW1lbnRzKCksIHN0ZDo6dmVjdG9yPGZs
b2F0PihudW1FbGVtZW50cywgMS4wZikpOworICAgIH0KK30KKworVEVTVChNYXRyaXhVdGlsc1Rl
c3QsIE1hdHJpeENvbXBNdWx0VGVzdCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gbWlu
RGltZW5zaW9uczsgaSA8PSBtYXhEaW1lbnNpb25zOyBpKyspCisgICAgeworICAgICAgICB1bnNp
Z25lZCBpbnQgbnVtRWxlbWVudHMgPSBpICogaTsKKyAgICAgICAgTWF0cml4PGZsb2F0PiBtMShz
dGQ6OnZlY3RvcjxmbG9hdD4obnVtRWxlbWVudHMsIDIuMGYpLCBpKTsKKyAgICAgICAgTWF0cml4
PGZsb2F0PiBhY3R1YWxSZXN1bHQgPSBtMS5jb21wTXVsdChtMSk7CisgICAgICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiBhY3R1YWxSZXN1bHRFbGVtZW50cyA9IGFjdHVhbFJlc3VsdC5lbGVtZW50cygp
OworICAgICAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gZXhwZWN0ZWRSZXN1bHRFbGVtZW50cyhudW1F
bGVtZW50cywgNC4wZik7CisgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFJlc3VsdEVsZW1lbnRz
LCBhY3R1YWxSZXN1bHRFbGVtZW50cyk7CisgICAgfQorfQorCitURVNUKE1hdHJpeFV0aWxzVGVz
dCwgTWF0cml4T3V0ZXJQcm9kdWN0VGVzdCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
bWluRGltZW5zaW9uczsgaSA8PSBtYXhEaW1lbnNpb25zOyBpKyspCisgICAgeworICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBqID0gbWluRGltZW5zaW9uczsgaiA8PSBtYXhEaW1lbnNpb25zOyBq
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50cyA9IGkg
KiBqOworICAgICAgICAgICAgTWF0cml4PGZsb2F0PiBtMShzdGQ6OnZlY3RvcjxmbG9hdD4obnVt
RWxlbWVudHMsIDIuMGYpLCBpLCAxKTsKKyAgICAgICAgICAgIE1hdHJpeDxmbG9hdD4gbTIoc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+KG51bUVsZW1lbnRzLCAyLjBmKSwgMSwgaik7CisgICAgICAgICAgICBN
YXRyaXg8ZmxvYXQ+IGFjdHVhbFJlc3VsdCA9IG0xLm91dGVyUHJvZHVjdChtMik7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoYWN0dWFsUmVzdWx0LnJvd3MoKSwgaSk7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoYWN0dWFsUmVzdWx0LmNvbHVtbnMoKSwgaik7CisgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxmbG9hdD4gYWN0dWFsUmVzdWx0RWxlbWVudHMgPSBhY3R1YWxSZXN1bHQuZWxlbWVudHMoKTsK
KyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBleHBlY3RlZFJlc3VsdEVsZW1lbnRzKG51
bUVsZW1lbnRzLCA0LjBmKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFJlc3VsdEVs
ZW1lbnRzLCBhY3R1YWxSZXN1bHRFbGVtZW50cyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RF
U1QoTWF0cml4VXRpbHNUZXN0LCBNYXRyaXhUcmFuc3Bvc2VUZXN0KQoreworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSBtaW5EaW1lbnNpb25zOyBpIDw9IG1heERpbWVuc2lvbnM7IGkrKykKKyAg
ICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSBtaW5EaW1lbnNpb25zOyBqIDw9IG1h
eERpbWVuc2lvbnM7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IG51
bUVsZW1lbnRzID0gaSAqIGo7CisgICAgICAgICAgICBNYXRyaXg8ZmxvYXQ+IG0xKHN0ZDo6dmVj
dG9yPGZsb2F0PihudW1FbGVtZW50cywgMi4wZiksIGksIGopOworICAgICAgICAgICAgTWF0cml4
PGZsb2F0PiBleHBlY3RlZFJlc3VsdCA9IE1hdHJpeDxmbG9hdD4oc3RkOjp2ZWN0b3I8ZmxvYXQ+
KG51bUVsZW1lbnRzLCAyLjBmKSwgaiwgaSk7CisgICAgICAgICAgICBNYXRyaXg8ZmxvYXQ+IGFj
dHVhbFJlc3VsdCA9IG0xLnRyYW5zcG9zZSgpOworICAgICAgICAgICAgRVhQRUNUX0VRKGV4cGVj
dGVkUmVzdWx0LmVsZW1lbnRzKCksIGFjdHVhbFJlc3VsdC5lbGVtZW50cygpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShhY3R1YWxSZXN1bHQucm93cygpLCBleHBlY3RlZFJlc3VsdC5yb3dzKCkp
OworICAgICAgICAgICAgRVhQRUNUX0VRKGFjdHVhbFJlc3VsdC5jb2x1bW5zKCksIGV4cGVjdGVk
UmVzdWx0LmNvbHVtbnMoKSk7CisgICAgICAgICAgICAvLyB0cmFuc3Bvc2UodHJhbnNwb3NlKEEp
KSA9IEEKKyAgICAgICAgICAgIE1hdHJpeDxmbG9hdD4gbTIgPSBhY3R1YWxSZXN1bHQudHJhbnNw
b3NlKCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEobTEuZWxlbWVudHMoKSwgbTIuZWxlbWVudHMo
KSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK1RFU1QoTWF0cml4VXRpbHNUZXN0LCBNYXRyaXhE
ZXRlcm1pbmFudFRlc3QpCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IG1pbkRpbWVuc2lv
bnM7IGkgPD0gbWF4RGltZW5zaW9uczsgaSsrKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50
IG51bUVsZW1lbnRzID0gaSAqIGk7CisgICAgICAgIE1hdHJpeDxmbG9hdD4gbShzdGQ6OnZlY3Rv
cjxmbG9hdD4obnVtRWxlbWVudHMsIDIuMGYpLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKG0uZGV0
ZXJtaW5hbnQoKSwgMC4wZik7CisgICAgfQorfQorCitURVNUKE1hdHJpeFV0aWxzVGVzdCwgMngy
TWF0cml4SW52ZXJzZVRlc3QpCit7CisgICAgZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KKyAgICB7
CisgICAgICAgIDIuMGYsIDUuMGYsCisgICAgICAgIDMuMGYsIDcuMGYKKyAgICB9OworICAgIHVu
c2lnbmVkIGludCBudW1FbGVtZW50cyA9IDQ7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0
KGlucHV0RWxlbWVudHMsIGlucHV0RWxlbWVudHMgKyBudW1FbGVtZW50cyk7CisgICAgTWF0cml4
PGZsb2F0PiBpbnB1dE1hdHJpeChpbnB1dCwgMik7CisgICAgZmxvYXQgaWRlbnRpdHlFbGVtZW50
c1tdID0KKyAgICB7CisgICAgICAgIDEuMGYsIDAuMGYsCisgICAgICAgIDAuMGYsIDEuMGYKKyAg
ICB9OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpZGVudGl0eU1hdHJpeChpZGVudGl0eUVsZW1l
bnRzLCBpZGVudGl0eUVsZW1lbnRzICsgbnVtRWxlbWVudHMpOworICAgIC8vIEEgKiBpbnZlcnNl
KEEpID0gSSwgd2hlcmUgSSBpcyBpZGVudGl0eSBtYXRyaXguCisgICAgTWF0cml4PGZsb2F0PiBy
ZXN1bHQgPSBpbnB1dE1hdHJpeCAqIGlucHV0TWF0cml4LmludmVyc2UoKTsKKyAgICBFWFBFQ1Rf
RVEoaWRlbnRpdHlNYXRyaXgsIHJlc3VsdC5lbGVtZW50cygpKTsKK30KKworVEVTVChNYXRyaXhV
dGlsc1Rlc3QsIDN4M01hdHJpeEludmVyc2VUZXN0KQoreworICAgIGZsb2F0IGlucHV0RWxlbWVu
dHNbXSA9CisgICAgeworICAgICAgICAxMS4wZiwgMjMuMGYsIDM3LjBmLAorICAgICAgICAxMy4w
ZiwgMjkuMGYsIDQxLjBmLAorICAgICAgICAxOS4wZiwgMzEuMGYsIDQzLjBmCisgICAgfTsKKyAg
ICB1bnNpZ25lZCBpbnQgbnVtRWxlbWVudHMgPSA5OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBp
bnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgbnVtRWxlbWVudHMpOworICAgIE1h
dHJpeDxmbG9hdD4gaW5wdXRNYXRyaXgoaW5wdXQsIDMpOworICAgIGZsb2F0IGlkZW50aXR5RWxl
bWVudHNbXSA9CisgICAgeworICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBm
LCAxLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAxLjBmCisgICAgfTsKKyAgICBzdGQ6
OnZlY3RvcjxmbG9hdD4gaWRlbnRpdHlNYXRyaXgoaWRlbnRpdHlFbGVtZW50cywgaWRlbnRpdHlF
bGVtZW50cyArIG51bUVsZW1lbnRzKTsKKyAgICAvLyBBICogaW52ZXJzZShBKSA9IEksIHdoZXJl
IEkgaXMgaWRlbnRpdHkgbWF0cml4LgorICAgIE1hdHJpeDxmbG9hdD4gcmVzdWx0ID0gaW5wdXRN
YXRyaXggKiBpbnB1dE1hdHJpeC5pbnZlcnNlKCk7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJl
c3VsdEVsZW1lbnRzID0gcmVzdWx0LmVsZW1lbnRzKCk7CisgICAgY29uc3QgZmxvYXQgZmxvYXRG
YXVsdFRvbGFyYW5jZSA9IDAuMDAwMDAxZjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUVsZW1lbnRzOyBpKyspCisgICAgICAgIEVYUEVDVF9ORUFSKHJlc3VsdEVsZW1lbnRzW2ldLCBp
ZGVudGl0eU1hdHJpeFtpXSwgZmxvYXRGYXVsdFRvbGFyYW5jZSk7Cit9CisKK1RFU1QoTWF0cml4
VXRpbHNUZXN0LCA0eDRNYXRyaXhJbnZlcnNlVGVzdCkKK3sKKyAgICBmbG9hdCBpbnB1dEVsZW1l
bnRzW10gPQorICAgIHsKKyAgICAgICAgMjkuMGYsIDQzLjBmLCA2MS4wZiwgNzkuMGYsCisgICAg
ICAgIDMxLjBmLCA0Ny4wZiwgNjcuMGYsIDgzLjBmLAorICAgICAgICAzNy4wZiwgNTMuMGYsIDcx
LjBmLCA4OS4wZiwKKyAgICAgICAgNDEuMGYsIDU5LjBmLCA3My4wZiwgOTcuMGYKKyAgICB9Owor
ICAgIHVuc2lnbmVkIGludCBudW1FbGVtZW50cyA9IDE2OworICAgIHN0ZDo6dmVjdG9yPGZsb2F0
PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgbnVtRWxlbWVudHMpOworICAg
IE1hdHJpeDxmbG9hdD4gaW5wdXRNYXRyaXgoaW5wdXQsIDQpOworICAgIGZsb2F0IGlkZW50aXR5
RWxlbWVudHNbXSA9CisgICAgeworICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAorICAg
ICAgICAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLCAw
LjBmLAorICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAorICAgIH07CisgICAgc3RkOjp2
ZWN0b3I8ZmxvYXQ+IGlkZW50aXR5TWF0cml4KGlkZW50aXR5RWxlbWVudHMsIGlkZW50aXR5RWxl
bWVudHMgKyBudW1FbGVtZW50cyk7CisgICAgLy8gQSAqIGludmVyc2UoQSkgPSBJLCB3aGVyZSBJ
IGlzIGlkZW50aXR5IG1hdHJpeC4KKyAgICBNYXRyaXg8ZmxvYXQ+IHJlc3VsdCA9IGlucHV0TWF0
cml4ICogaW5wdXRNYXRyaXguaW52ZXJzZSgpOworICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1
bHRFbGVtZW50cyA9IHJlc3VsdC5lbGVtZW50cygpOworICAgIGNvbnN0IGZsb2F0IGZsb2F0RmF1
bHRUb2xhcmFuY2UgPSAwLjAwMDAxZjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IG51bUVsZW1lbnRzOyBpKyspCisgICAgICAgIEVYUEVDVF9ORUFSKHJlc3VsdEVsZW1lbnRzW2ld
LCBpZGVudGl0eU1hdHJpeFtpXSwgZmxvYXRGYXVsdFRvbGFyYW5jZSk7Cit9CisKK30KKwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3RyaW5nX3V0
aWxzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vc3RyaW5nX3V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzNiBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIHN0cmluZ191dGlsczoKKy8vICAgU3RyaW5nIGhlbHBlciBmdW5jdGlvbnMuCisv
LworCisjaW5jbHVkZSAic3RyaW5nX3V0aWxzLmgiCisKKyNpbmNsdWRlIDxmc3RyZWFtPgorI2lu
Y2x1ZGUgPHNzdHJlYW0+CisKK25hbWVzcGFjZSBhbmdsZQoreworCitjb25zdCBjaGFyIGtXaGl0
ZXNwYWNlQVNDSUlbXSA9ICIgXGZcblxyXHRcdiI7CisKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBTcGxpdFN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmRlbGltaXRlcnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZUhhbmRsaW5nIHdoaXRl
c3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BsaXRSZXN1bHQg
cmVzdWx0VHlwZSkKK3sKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmVzdWx0OworICAg
IGlmIChpbnB1dC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIHN0YXJ0ID0gMDsKKyAgICB3aGlsZSAoc3Rh
cnQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgeworICAgICAgICBhdXRvIGVuZCA9IGlucHV0
LmZpbmRfZmlyc3Rfb2YoZGVsaW1pdGVycywgc3RhcnQpOworCisgICAgICAgIHN0ZDo6c3RyaW5n
IHBpZWNlOworICAgICAgICBpZiAoZW5kID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgICAgICB7
CisgICAgICAgICAgICBwaWVjZSA9IGlucHV0LnN1YnN0cihzdGFydCk7CisgICAgICAgICAgICBz
dGFydCA9IHN0ZDo6c3RyaW5nOjpucG9zOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgcGllY2UgPSBpbnB1dC5zdWJzdHIoc3RhcnQsIGVuZCAtIHN0YXJ0
KTsKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kICsgMTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh3aGl0ZXNwYWNlID09IFRSSU1fV0hJVEVTUEFDRSkKKyAgICAgICAgeworICAgICAgICAgICAg
cGllY2UgPSBUcmltU3RyaW5nKHBpZWNlLCBrV2hpdGVzcGFjZUFTQ0lJKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChyZXN1bHRUeXBlID09IFNQTElUX1dBTlRfQUxMIHx8ICFwaWVjZS5lbXB0
eSgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKHBpZWNlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgU3BsaXRTdHJp
bmdBbG9uZ1doaXRlc3BhY2UoY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gKnRva2Vuc091dCkK
K3sKKworICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBzdHJlYW0oaW5wdXQpOworICAgIHN0ZDo6c3Ry
aW5nIGxpbmU7CisKKyAgICB3aGlsZSAoc3RkOjpnZXRsaW5lKHN0cmVhbSwgbGluZSkpCisgICAg
eworICAgICAgICBzaXplX3QgcHJldiA9IDAsIHBvczsKKyAgICAgICAgd2hpbGUgKChwb3MgPSBs
aW5lLmZpbmRfZmlyc3Rfb2Yoa1doaXRlc3BhY2VBU0NJSSwgcHJldikpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocG9zID4gcHJldikKKyAgICAgICAg
ICAgICAgICB0b2tlbnNPdXQtPnB1c2hfYmFjayhsaW5lLnN1YnN0cihwcmV2LCBwb3MgLSBwcmV2
KSk7CisgICAgICAgICAgICBwcmV2ID0gcG9zICsgMTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
cHJldiA8IGxpbmUubGVuZ3RoKCkpCisgICAgICAgICAgICB0b2tlbnNPdXQtPnB1c2hfYmFjayhs
aW5lLnN1YnN0cihwcmV2LCBzdGQ6OnN0cmluZzo6bnBvcykpOworICAgIH0KK30KKworc3RkOjpz
dHJpbmcgVHJpbVN0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXQsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ0cmltQ2hhcnMpCit7CisgICAgYXV0byBiZWdpbiA9IGlucHV0LmZpbmRfZmlyc3Rfbm90
X29mKHRyaW1DaGFycyk7CisgICAgaWYgKGJlZ2luID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5
cGUgZW5kID0gaW5wdXQuZmluZF9sYXN0X25vdF9vZih0cmltQ2hhcnMpOworICAgIGlmIChlbmQg
PT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgeworICAgICAgICByZXR1cm4gaW5wdXQuc3Vic3Ry
KGJlZ2luKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW5wdXQuc3Vic3RyKGJlZ2luLCBlbmQgLSBi
ZWdpbiArIDEpOworfQorCitib29sIEhleFN0cmluZ1RvVUludChjb25zdCBzdGQ6OnN0cmluZyAm
aW5wdXQsIHVuc2lnbmVkIGludCAqdWludE91dCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0
ID0gMDsKKworICAgIGlmIChpbnB1dC5zaXplKCkgPj0gMiAmJiBpbnB1dFswXSA9PSAnMCcgJiYg
aW5wdXRbMV0gPT0gJ3gnKQorICAgIHsKKyAgICAgICAgb2Zmc2V0ID0gMnU7CisgICAgfQorCisg
ICAgLy8gU2ltcGxlIHZhbGlkaXR5IGNoZWNrCisgICAgaWYgKGlucHV0LmZpbmRfZmlyc3Rfbm90
X29mKCIwMTIzNDU2Nzg5QUJDREVGYWJjZGVmIiwgb2Zmc2V0KSAhPSBzdGQ6OnN0cmluZzo6bnBv
cykKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBpblN0cmVhbShpbnB1dCk7CisgICAgaW5TdHJlYW0gPj4gc3RkOjpoZXggPj4gKnVp
bnRPdXQ7CisgICAgcmV0dXJuICFpblN0cmVhbS5mYWlsKCk7Cit9CisKK2Jvb2wgUmVhZEZpbGVU
b1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmcGF0aCwgc3RkOjpzdHJpbmcgKnN0cmluZ091dCkK
K3sKKyAgICBzdGQ6Omlmc3RyZWFtIGluRmlsZShwYXRoLmNfc3RyKCkpOworICAgIGlmIChpbkZp
bGUuZmFpbCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlu
RmlsZS5zZWVrZygwLCBzdGQ6Omlvczo6ZW5kKTsKKyAgICBzdHJpbmdPdXQtPnJlc2VydmUoc3Rh
dGljX2Nhc3Q8c3RkOjpzdHJpbmc6OnNpemVfdHlwZT4oaW5GaWxlLnRlbGxnKCkpKTsKKyAgICBp
bkZpbGUuc2Vla2coMCwgc3RkOjppb3M6OmJlZyk7CisKKyAgICBzdHJpbmdPdXQtPmFzc2lnbihz
dGQ6OmlzdHJlYW1idWZfaXRlcmF0b3I8Y2hhcj4oaW5GaWxlKSwgc3RkOjppc3RyZWFtYnVmX2l0
ZXJhdG9yPGNoYXI+KCkpOworICAgIHJldHVybiAhaW5GaWxlLmZhaWwoKTsKK30KKworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N0cmluZ191dGls
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9z
dHJpbmdfdXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvLworLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gc3RyaW5nX3V0aWxzOgorLy8gICBTdHJpbmcgaGVscGVyIGZ1bmN0aW9ucy4KKy8vCisKKyNp
Zm5kZWYgTElCQU5HTEVfU1RSSU5HX1VUSUxTX0hfCisjZGVmaW5lIExJQkFOR0xFX1NUUklOR19V
VElMU19IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNw
YWNlIGFuZ2xlCit7CisKK2V4dGVybiBjb25zdCBjaGFyIGtXaGl0ZXNwYWNlQVNDSUlbXTsKKwor
ZW51bSBXaGl0ZXNwYWNlSGFuZGxpbmcKK3sKKyAgICBLRUVQX1dISVRFU1BBQ0UsCisgICAgVFJJ
TV9XSElURVNQQUNFLAorfTsKKworZW51bSBTcGxpdFJlc3VsdAoreworICAgIFNQTElUX1dBTlRf
QUxMLAorICAgIFNQTElUX1dBTlRfTk9ORU1QVFksCit9OworCitzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gU3BsaXRTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZkZWxpbWl0ZXJzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2VIYW5kbGluZyB3
aGl0ZXNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwbGl0UmVz
dWx0IHJlc3VsdFR5cGUpOworCit2b2lkIFNwbGl0U3RyaW5nQWxvbmdXaGl0ZXNwYWNlKGNvbnN0
IHN0ZDo6c3RyaW5nICZpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8c3RkOjpzdHJpbmc+ICp0b2tlbnNPdXQpOworCitzdGQ6OnN0cmluZyBUcmltU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dCwgY29uc3Qgc3RkOjpzdHJpbmcgJnRyaW1DaGFy
cyk7CisKK2Jvb2wgSGV4U3RyaW5nVG9VSW50KGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dCwgdW5z
aWduZWQgaW50ICp1aW50T3V0KTsKKworYm9vbCBSZWFkRmlsZVRvU3RyaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nICZwYXRoLCBzdGQ6OnN0cmluZyAqc3RyaW5nT3V0KTsKKworfQorCisjZW5kaWYgLy8g
TElCQU5HTEVfU1RSSU5HX1VUSUxTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbW9uL3N0cmluZ191dGlsc191bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdfdXRpbHNfdW5pdHRlc3QuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zdHJpbmdf
dXRpbHNfdW5pdHRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQxIEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gc3RyaW5nX3V0aWxzX3VuaXR0ZXN0czoKKy8vICAgVW5pdCB0ZXN0cyBmb3IgdGhl
IHN0cmluZyB1dGlscy4KKy8vCisKKyNpbmNsdWRlICJzdHJpbmdfdXRpbHMuaCIKKworI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNl
Cit7CisKKy8vIEJhc2ljIFNwbGl0U3RyaW5nIHRlc3RzCitURVNUKFN0cmluZ1V0aWxzVGVzdCwg
U3BsaXRTdHJpbmdfQmFzaWNzKQoreworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByOwor
CisgICAgciA9IFNwbGl0U3RyaW5nKHN0ZDo6c3RyaW5nKCksICIsOjsiLCBLRUVQX1dISVRFU1BB
Q0UsIFNQTElUX1dBTlRfQUxMKTsKKyAgICBFWFBFQ1RfVFJVRShyLmVtcHR5KCkpOworCisgICAg
Ly8gRW1wdHkgc2VwYXJhdG9yIGxpc3QKKyAgICByID0gU3BsaXRTdHJpbmcoImhlbGxvLCB3b3Js
ZCIsICIiLCBLRUVQX1dISVRFU1BBQ0UsIFNQTElUX1dBTlRfQUxMKTsKKyAgICBBU1NFUlRfRVEo
MXUsIHIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoImhlbGxvLCB3b3JsZCIsIHJbMF0pOworCisg
ICAgLy8gU2hvdWxkIHNwbGl0IG9uIGFueSBvZiB0aGUgc2VwYXJhdG9ycy4KKyAgICByID0gU3Bs
aXRTdHJpbmcoIjo6LCw7OyIsICIsOjsiLCBLRUVQX1dISVRFU1BBQ0UsIFNQTElUX1dBTlRfQUxM
KTsKKyAgICBBU1NFUlRfRVEoN3UsIHIuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gc3RyIDogcikK
KyAgICAgICAgQVNTRVJUX1RSVUUoc3RyLmVtcHR5KCkpOworCisgICAgciA9IFNwbGl0U3RyaW5n
KCJyZWQsIGdyZWVuOyBibHVlOiIsICIsOjsiLCBUUklNX1dISVRFU1BBQ0UsIFNQTElUX1dBTlRf
Tk9ORU1QVFkpOworICAgIEFTU0VSVF9FUSgzdSwgci5zaXplKCkpOworICAgIEVYUEVDVF9FUSgi
cmVkIiwgclswXSk7CisgICAgRVhQRUNUX0VRKCJncmVlbiIsIHJbMV0pOworICAgIEVYUEVDVF9F
USgiYmx1ZSIsIHJbMl0pOworCisgICAgLy8gV2FudCB0byBzcGxpdCBhIHN0cmluZyBhbG9uZyB3
aGl0ZXNwYWNlIHNlcXVlbmNlcy4KKyAgICByID0gU3BsaXRTdHJpbmcoIiAgcmVkIGdyZWVuICAg
XHRibHVlXG4iLCAiIFx0XG4iLCBUUklNX1dISVRFU1BBQ0UsIFNQTElUX1dBTlRfTk9ORU1QVFkp
OworICAgIEFTU0VSVF9FUSgzdSwgci5zaXplKCkpOworICAgIEVYUEVDVF9FUSgicmVkIiwgclsw
XSk7CisgICAgRVhQRUNUX0VRKCJncmVlbiIsIHJbMV0pOworICAgIEVYUEVDVF9FUSgiYmx1ZSIs
IHJbMl0pOworCisgICAgLy8gV2VpcmQgY2FzZSBvZiBzcGxpdHRpbmcgb24gc3BhY2VzIGJ1dCBu
b3QgdHJpbW1pbmcuCisgICAgciA9IFNwbGl0U3RyaW5nKCIgcmVkICIsICIgIiwgVFJJTV9XSElU
RVNQQUNFLCBTUExJVF9XQU5UX0FMTCk7CisgICAgQVNTRVJUX0VRKDN1LCByLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKCIiLCByWzBdKTsgIC8vIEJlZm9yZSB0aGUgZmlyc3Qgc3BhY2UuCisgICAg
RVhQRUNUX0VRKCJyZWQiLCByWzFdKTsKKyAgICBFWFBFQ1RfRVEoIiIsIHJbMl0pOyAgLy8gQWZ0
ZXIgdGhlIGxhc3Qgc3BhY2UuCit9CisKKy8vIENoZWNrIGRpZmZlcmVudCB3aGl0ZXNwYWNlIGFu
ZCByZXN1bHQgdHlwZXMgZm9yIFNwbGl0U3RyaW5nCitURVNUKFN0cmluZ1V0aWxzVGVzdCwgU3Bs
aXRTdHJpbmdfV2hpdGVzcGFjZUFuZFJlc3VsdFR5cGUpCit7CisgICAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IHI7CisKKyAgICAvLyBFbXB0eSBpbnB1dCBoYW5kbGluZy4KKyAgICByID0gU3Bs
aXRTdHJpbmcoc3RkOjpzdHJpbmcoKSwgIiwiLCBLRUVQX1dISVRFU1BBQ0UsIFNQTElUX1dBTlRf
QUxMKTsKKyAgICBFWFBFQ1RfVFJVRShyLmVtcHR5KCkpOworICAgIHIgPSBTcGxpdFN0cmluZyhz
dGQ6OnN0cmluZygpLCAiLCIsIEtFRVBfV0hJVEVTUEFDRSwgU1BMSVRfV0FOVF9OT05FTVBUWSk7
CisgICAgRVhQRUNUX1RSVUUoci5lbXB0eSgpKTsKKworICAgIC8vIElucHV0IHN0cmluZyBpcyBz
cGFjZSBhbmQgd2UncmUgdHJpbW1pbmcuCisgICAgciA9IFNwbGl0U3RyaW5nKCIgIiwgIiwiLCBU
UklNX1dISVRFU1BBQ0UsIFNQTElUX1dBTlRfQUxMKTsKKyAgICBBU1NFUlRfRVEoMXUsIHIuc2l6
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoIiIsIHJbMF0pOworICAgIHIgPSBTcGxpdFN0cmluZygiICIs
ICIsIiwgVFJJTV9XSElURVNQQUNFLCBTUExJVF9XQU5UX05PTkVNUFRZKTsKKyAgICBFWFBFQ1Rf
VFJVRShyLmVtcHR5KCkpOworCisgICAgLy8gVGVzdCBhbGwgNCBjb21iaW5hdGlvbnMgb2YgZmxh
Z3Mgb24gIiwgLCIuCisgICAgciA9IFNwbGl0U3RyaW5nKCIsICwiLCAiLCIsIEtFRVBfV0hJVEVT
UEFDRSwgU1BMSVRfV0FOVF9BTEwpOworICAgIEFTU0VSVF9FUSgzdSwgci5zaXplKCkpOworICAg
IEVYUEVDVF9FUSgiIiwgclswXSk7CisgICAgRVhQRUNUX0VRKCIgIiwgclsxXSk7CisgICAgRVhQ
RUNUX0VRKCIiLCByWzJdKTsKKyAgICByID0gU3BsaXRTdHJpbmcoIiwgLCIsICIsIiwgS0VFUF9X
SElURVNQQUNFLCBTUExJVF9XQU5UX05PTkVNUFRZKTsKKyAgICBBU1NFUlRfRVEoMXUsIHIuc2l6
ZSgpKTsKKyAgICBBU1NFUlRfRVEoIiAiLCByWzBdKTsKKyAgICByID0gU3BsaXRTdHJpbmcoIiwg
LCIsICIsIiwgVFJJTV9XSElURVNQQUNFLCBTUExJVF9XQU5UX0FMTCk7CisgICAgQVNTRVJUX0VR
KDN1LCByLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKCIiLCByWzBdKTsKKyAgICBFWFBFQ1RfRVEo
IiIsIHJbMV0pOworICAgIEVYUEVDVF9FUSgiIiwgclsyXSk7CisgICAgciA9IFNwbGl0U3RyaW5n
KCIsICwiLCAiLCIsIFRSSU1fV0hJVEVTUEFDRSwgU1BMSVRfV0FOVF9OT05FTVBUWSk7CisgICAg
QVNTRVJUX1RSVUUoci5lbXB0eSgpKTsKK30KKworLy8gVGVzdHMgZm9yIFRyaW1TdHJpbmcKK1RF
U1QoU3RyaW5nVXRpbHNUZXN0LCBUcmltU3RyaW5nKQoreworICAgIC8vIEJhc2ljIHRlc3RzCisg
ICAgRVhQRUNUX0VRKCJhIiwgVHJpbVN0cmluZygiYSIsIGtXaGl0ZXNwYWNlQVNDSUkpKTsKKyAg
ICBFWFBFQ1RfRVEoImEiLCBUcmltU3RyaW5nKCIgYSIsIGtXaGl0ZXNwYWNlQVNDSUkpKTsKKyAg
ICBFWFBFQ1RfRVEoImEiLCBUcmltU3RyaW5nKCJhICIsIGtXaGl0ZXNwYWNlQVNDSUkpKTsKKyAg
ICBFWFBFQ1RfRVEoImEiLCBUcmltU3RyaW5nKCIgYSAiLCBrV2hpdGVzcGFjZUFTQ0lJKSk7CisK
KyAgICAvLyBUZXN0cyB3aXRoIGVtcHR5IHN0cmluZ3MKKyAgICBFWFBFQ1RfRVEoIiIsIFRyaW1T
dHJpbmcoIiIsIGtXaGl0ZXNwYWNlQVNDSUkpKTsKKyAgICBFWFBFQ1RfRVEoIiIsIFRyaW1TdHJp
bmcoIiBcblxyXHQiLCBrV2hpdGVzcGFjZUFTQ0lJKSk7CisgICAgRVhQRUNUX0VRKCIgZm9vICIs
IFRyaW1TdHJpbmcoIiBmb28gIiwgIiIpKTsKKworICAgIC8vIFRlc3RzIGl0IGRvZXNuJ3QgcmVt
b3ZlcyBjaGFyYWN0ZXJzIGluIHRoZSBtaWRkbGUKKyAgICBFWFBFQ1RfRVEoImZvbyBiYXIiLCBU
cmltU3RyaW5nKCIgZm9vIGJhciAiLCBrV2hpdGVzcGFjZUFTQ0lJKSk7CisKKyAgICAvLyBUZXN0
IHdpdGggbm9uLXdoaXRlc3BhY2UgdHJpbUNoYXJzCisgICAgRVhQRUNUX0VRKCIgIiwgVHJpbVN0
cmluZygiZm9vIGJhciIsICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpKTsKK30KKworLy8g
QmFzaWMgZnVuY3Rpb25hbGl0eSB0ZXN0cyBmb3IgSGV4U3RyaW5nVG9VSW50CitURVNUKFN0cmlu
Z1V0aWxzVGVzdCwgSGV4U3RyaW5nVG9VSW50QmFzaWMpCit7CisgICAgdW5zaWduZWQgaW50IHVp
bnRWYWx1ZTsKKworICAgIHN0ZDo6c3RyaW5nIGVtcHR5U3RyaW5nOworICAgIEFTU0VSVF9GQUxT
RShIZXhTdHJpbmdUb1VJbnQoZW1wdHlTdHJpbmcsICZ1aW50VmFsdWUpKTsKKworICAgIHN0ZDo6
c3RyaW5nIHRlc3RTdHJpbmdBKCIweEJBREYwMEQiKTsKKyAgICBBU1NFUlRfVFJVRShIZXhTdHJp
bmdUb1VJbnQodGVzdFN0cmluZ0EsICZ1aW50VmFsdWUpKTsKKyAgICBFWFBFQ1RfRVEoMHhCQURG
MDBEdSwgdWludFZhbHVlKTsKKworICAgIHN0ZDo6c3RyaW5nIHRlc3RTdHJpbmdCKCIweEJBREZP
T0QiKTsKKyAgICBFWFBFQ1RfRkFMU0UoSGV4U3RyaW5nVG9VSW50KHRlc3RTdHJpbmdCLCAmdWlu
dFZhbHVlKSk7CisKKyAgICBzdGQ6OnN0cmluZyB0ZXN0U3RyaW5nQygiQkFERjAwRCIpOworICAg
IEVYUEVDVF9UUlVFKEhleFN0cmluZ1RvVUludCh0ZXN0U3RyaW5nQywgJnVpbnRWYWx1ZSkpOwor
ICAgIEVYUEVDVF9FUSgweEJBREYwMER1LCB1aW50VmFsdWUpOworCisgICAgc3RkOjpzdHJpbmcg
dGVzdFN0cmluZ0QoIjB4IEJBREYwMEQiKTsKKyAgICBFWFBFQ1RfRkFMU0UoSGV4U3RyaW5nVG9V
SW50KHRlc3RTdHJpbmdELCAmdWludFZhbHVlKSk7Cit9CisKKy8vIE5vdGU6IFJlYWRGaWxlVG9T
dHJpbmcgaXMgaGFyZGVyIHRvIHRlc3QKKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSw2ICsxOSw3OCBAQAogIyAgaW5jbHVkZSA8d2luZG93cy5ncmFwaGljcy5k
aXNwbGF5Lmg+CiAjZW5kaWYKIAorbmFtZXNwYWNlCit7CisKK3RlbXBsYXRlIDxjbGFzcyBJbmRl
eFR5cGU+CitnbDo6SW5kZXhSYW5nZSBDb21wdXRlVHlwZWRJbmRleFJhbmdlKGNvbnN0IEluZGV4
VHlwZSAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBy
aW1pdGl2ZVJlc3RhcnRFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJpbWl0aXZlUmVzdGFydEluZGV4KQoreworICAgIEFTU0VSVChjb3VudCA+
IDApOworCisgICAgSW5kZXhUeXBlIG1pbkluZGV4ICAgICAgICAgICAgICAgID0gMDsKKyAgICBJ
bmRleFR5cGUgbWF4SW5kZXggICAgICAgICAgICAgICAgPSAwOworICAgIHNpemVfdCBub25Qcmlt
aXRpdmVSZXN0YXJ0SW5kaWNlcyA9IDA7CisKKyAgICBpZiAocHJpbWl0aXZlUmVzdGFydEVuYWJs
ZWQpCisgICAgeworICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBub24tcHJpbWl0aXZlIHJlc3Rh
cnQgaW5kZXggdG8gaW5pdGlhbGl6ZSB0aGUgbWluIGFuZCBtYXggdmFsdWVzCisgICAgICAgIHNp
emVfdCBpID0gMDsKKyAgICAgICAgZm9yICg7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaW5kaWNlc1tpXSAhPSBwcmltaXRpdmVSZXN0YXJ0SW5kZXgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbWluSW5kZXggPSBpbmRpY2VzW2ldOworICAgICAg
ICAgICAgICAgIG1heEluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgICAgICAgICBub25Qcmlt
aXRpdmVSZXN0YXJ0SW5kaWNlcysrOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTG9vcCBvdmVyIHRoZSByZXN0IG9mIHRoZSBp
bmRpY2VzCisgICAgICAgIGZvciAoOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGluZGljZXNbaV0gIT0gcHJpbWl0aXZlUmVzdGFydEluZGV4KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChtaW5JbmRleCA+IGluZGljZXNbaV0pCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtaW5JbmRleCA9IGluZGljZXNbaV07Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtYXhJbmRleCA8IGluZGljZXNb
aV0pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtYXhJbmRleCA9IGlu
ZGljZXNbaV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5vblByaW1pdGl2
ZVJlc3RhcnRJbmRpY2VzKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgbWluSW5kZXggICAgICAgICAgICAgICAgICAgPSBpbmRpY2Vz
WzBdOworICAgICAgICBtYXhJbmRleCAgICAgICAgICAgICAgICAgICA9IGluZGljZXNbMF07Cisg
ICAgICAgIG5vblByaW1pdGl2ZVJlc3RhcnRJbmRpY2VzID0gY291bnQ7CisKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDE7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAobWluSW5kZXggPiBpbmRpY2VzW2ldKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG1pbkluZGV4ID0gaW5kaWNlc1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICht
YXhJbmRleCA8IGluZGljZXNbaV0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWF4
SW5kZXggPSBpbmRpY2VzW2ldOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIGdsOjpJbmRleFJhbmdlKHN0YXRpY19jYXN0PHNpemVfdD4obWluSW5kZXgpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KG1heEluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9uUHJpbWl0aXZlUmVzdGFydEluZGljZXMpOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKIG5hbWVzcGFjZSBnbAogewogCkBAIC0yNzksNiArMzUxLDM5IEBACiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitHTGVudW0gU2FtcGxlclR5cGVUb1RleHR1cmVUeXBlKEdMZW51bSBzYW1w
bGVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNhbXBsZXJUeXBlKQorICAgIHsKKyAgICAgIGNhc2Ug
R0xfU0FNUExFUl8yRDoKKyAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfMkQ6CisgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX1NI
QURPVzoKKyAgICAgICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7CisKKyAgICAgIGNhc2UgR0xfU0FN
UExFUl9DVUJFOgorICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl9DVUJFOgorICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFOgorICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkVf
U0hBRE9XOgorICAgICAgICByZXR1cm4gR0xfVEVYVFVSRV9DVUJFX01BUDsKKworICAgICAgY2Fz
ZSBHTF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRF9BUlJB
WToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBj
YXNlIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgorICAgICAgICByZXR1cm4gR0xfVEVYVFVS
RV8yRF9BUlJBWTsKKworICAgICAgY2FzZSBHTF9TQU1QTEVSXzNEOgorICAgICAgY2FzZSBHTF9J
TlRfU0FNUExFUl8zRDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfM0Q6Cisg
ICAgICAgIHJldHVybiBHTF9URVhUVVJFXzNEOworCisgICAgICBkZWZhdWx0OgorICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIGJvb2wgSXNNYXRy
aXhUeXBlKEdMZW51bSB0eXBlKQogewogICAgIHJldHVybiBWYXJpYWJsZVJvd0NvdW50KHR5cGUp
ID4gMTsKQEAgLTM2Niw2ICs0NzEsNDcgQEAKICAgICByZXR1cm4gRmlyc3RDdWJlTWFwVGV4dHVy
ZVRhcmdldCArIHN0YXRpY19jYXN0PEdMZW51bT4oaW5kZXgpOwogfQogCitJbmRleFJhbmdlIENv
bXB1dGVJbmRleFJhbmdlKEdMZW51bSBpbmRleFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByaW1p
dGl2ZVJlc3RhcnRFbmFibGVkKQoreworICAgIHN3aXRjaCAoaW5kZXhUeXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIENvbXB1dGVU
eXBlZEluZGV4UmFuZ2Uoc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPihpbmRpY2VzKSwgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmVS
ZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFByaW1pdGl2ZVJlc3RhcnRJbmRleChpbmRleFR5cGUpKTsKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9TSE9SVDoKKyAgICAgICAgICAgIHJldHVybiBDb21wdXRlVHlwZWRJbmRleFJhbmdl
KHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0ICo+KGluZGljZXMpLCBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UHJpbWl0aXZl
UmVzdGFydEluZGV4KGluZGV4VHlwZSkpOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoK
KyAgICAgICAgICAgIHJldHVybiBDb21wdXRlVHlwZWRJbmRleFJhbmdlKHN0YXRpY19jYXN0PGNv
bnN0IEdMdWludCAqPihpbmRpY2VzKSwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFByaW1pdGl2ZVJlc3RhcnRJbmRleChpbmRl
eFR5cGUpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gSW5kZXhSYW5nZSgpOworICAgIH0KK30KKworR0x1aW50IEdldFBy
aW1pdGl2ZVJlc3RhcnRJbmRleChHTGVudW0gaW5kZXhUeXBlKQoreworICAgIHN3aXRjaCAoaW5k
ZXhUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIDB4RkY7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAg
ICAgICByZXR1cm4gMHhGRkZGOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAg
ICAgICAgIHJldHVybiAweEZGRkZGRkZGOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogYm9vbCBJ
c1RyaWFuZ2xlTW9kZShHTGVudW0gZHJhd01vZGUpCiB7CiAgICAgc3dpdGNoIChkcmF3TW9kZSkK
QEAgLTQ5Myw4ICs2MzksMTE3IEBACiAgICAgcmV0dXJuIG5hbWUuc3Vic3RyKDAsIG9wZW4pOwog
fQogCit1bnNpZ25lZCBpbnQgUGFyc2VBbmRTdHJpcEFycmF5SW5kZXgoc3RkOjpzdHJpbmcgKm5h
bWUpCit7CisgICAgdW5zaWduZWQgaW50IHN1YnNjcmlwdCA9IEdMX0lOVkFMSURfSU5ERVg7CisK
KyAgICAvLyBTdHJpcCBhbnkgdHJhaWxpbmcgYXJyYXkgb3BlcmF0b3IgYW5kIHJldHJpZXZlIHRo
ZSBzdWJzY3JpcHQKKyAgICBzaXplX3Qgb3BlbiAgPSBuYW1lLT5maW5kX2xhc3Rfb2YoJ1snKTsK
KyAgICBzaXplX3QgY2xvc2UgPSBuYW1lLT5maW5kX2xhc3Rfb2YoJ10nKTsKKyAgICBpZiAob3Bl
biAhPSBzdGQ6OnN0cmluZzo6bnBvcyAmJiBjbG9zZSA9PSBuYW1lLT5sZW5ndGgoKSAtIDEpCisg
ICAgeworICAgICAgICBzdWJzY3JpcHQgPSBhdG9pKG5hbWUtPmNfc3RyKCkgKyBvcGVuICsgMSk7
CisgICAgICAgIG5hbWUtPmVyYXNlKG9wZW4pOworICAgIH0KKworICAgIHJldHVybiBzdWJzY3Jp
cHQ7CiB9CiAKK30gIC8vIG5hbWVzcGFjZSBnbAorCituYW1lc3BhY2UgZWdsCit7CitzdGF0aWNf
YXNzZXJ0KEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfS0hSIC0gRUdMX0dMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgPT0gMSwKKyAgICAgICAgICAgICAgIlVuZXhw
ZWN0ZWQgRUdMIGN1YmUgbWFwIGVudW0gdmFsdWUuIik7CitzdGF0aWNfYXNzZXJ0KEVHTF9HTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfS0hSIC0gRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWF9LSFIgPT0gMiwKKyAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgRUdMIGN1YmUg
bWFwIGVudW0gdmFsdWUuIik7CitzdGF0aWNfYXNzZXJ0KEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1lfS0hSIC0gRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIg
PT0gMywKKyAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgRUdMIGN1YmUgbWFwIGVudW0gdmFsdWUu
Iik7CitzdGF0aWNfYXNzZXJ0KEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1pfS0hS
IC0gRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgPT0gNCwKKyAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWQgRUdMIGN1YmUgbWFwIGVudW0gdmFsdWUuIik7CitzdGF0aWNfYXNz
ZXJ0KEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfS0hSIC0gRUdMX0dMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgPT0gNSwKKyAgICAgICAgICAgICAgIlVuZXhwZWN0
ZWQgRUdMIGN1YmUgbWFwIGVudW0gdmFsdWUuIik7CisKK2Jvb2wgSXNDdWJlTWFwVGV4dHVyZVRh
cmdldChFR0xlbnVtIHRhcmdldCkKK3sKKyAgICByZXR1cm4gKHRhcmdldCA+PSBGaXJzdEN1YmVN
YXBUZXh0dXJlVGFyZ2V0ICYmIHRhcmdldCA8PSBMYXN0Q3ViZU1hcFRleHR1cmVUYXJnZXQpOwor
fQorCitzaXplX3QgQ3ViZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5kZXgoRUdMZW51bSB0YXJn
ZXQpCit7CisgICAgQVNTRVJUKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSk7CisgICAg
cmV0dXJuIHRhcmdldCAtIHN0YXRpY19jYXN0PHNpemVfdD4oRmlyc3RDdWJlTWFwVGV4dHVyZVRh
cmdldCk7Cit9CisKK0VHTGVudW0gTGF5ZXJJbmRleFRvQ3ViZU1hcFRleHR1cmVUYXJnZXQoc2l6
ZV90IGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8PSAoTGFzdEN1YmVNYXBUZXh0dXJlVGFy
Z2V0IC0gRmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldCkpOworICAgIHJldHVybiBGaXJzdEN1YmVN
YXBUZXh0dXJlVGFyZ2V0ICsgc3RhdGljX2Nhc3Q8R0xlbnVtPihpbmRleCk7Cit9CisKK2Jvb2wg
SXNUZXh0dXJlVGFyZ2V0KEVHTGVudW0gdGFyZ2V0KQoreworICAgIHN3aXRjaCAodGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgY2FzZSBFR0xfR0xfVEVYVFVSRV8yRF9LSFI6CisgICAgICAgIGNhc2Ug
RUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFI6CisgICAgICAgIGNhc2UgRUdM
X0dMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWl9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfM0Rf
S0hSOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgSXNSZW5kZXJidWZmZXJUYXJn
ZXQoRUdMZW51bSB0YXJnZXQpCit7CisgICAgcmV0dXJuIHRhcmdldCA9PSBFR0xfR0xfUkVOREVS
QlVGRkVSX0tIUjsKK30KK30KKworbmFtZXNwYWNlIGVnbF9nbAoreworR0xlbnVtIEVHTEN1YmVN
YXBUYXJnZXRUb0dMQ3ViZU1hcFRhcmdldChFR0xlbnVtIGVnbFRhcmdldCkKK3sKKyAgICBBU1NF
UlQoZWdsOjpJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KGVnbFRhcmdldCkpOworICAgIHJldHVybiBn
bDo6TGF5ZXJJbmRleFRvQ3ViZU1hcFRleHR1cmVUYXJnZXQoZWdsOjpDdWJlTWFwVGV4dHVyZVRh
cmdldFRvTGF5ZXJJbmRleChlZ2xUYXJnZXQpKTsKK30KKworR0xlbnVtIEVHTEltYWdlVGFyZ2V0
VG9HTFRleHR1cmVUYXJnZXQoRUdMZW51bSBlZ2xUYXJnZXQpCit7CisgICAgc3dpdGNoIChlZ2xU
YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEVHTF9HTF9URVhUVVJFXzJEX0tIUjoKKyAgICAg
ICAgICAgIHJldHVybiBHTF9URVhUVVJFXzJEOworCisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWF9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWV9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWV9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWl9LSFI6CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWl9LSFI6CisgICAgICAgICAgICByZXR1cm4gRUdMQ3ViZU1hcFRhcmdldFRvR0xDdWJl
TWFwVGFyZ2V0KGVnbFRhcmdldCk7CisKKyAgICAgICAgY2FzZSBFR0xfR0xfVEVYVFVSRV8zRF9L
SFI6CisgICAgICAgICAgICByZXR1cm4gR0xfVEVYVFVSRV8zRDsKKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBHTF9OT05F
OworICAgIH0KK30KKworR0x1aW50IEVHTENsaWVudEJ1ZmZlclRvR0xPYmplY3RIYW5kbGUoRUdM
Q2xpZW50QnVmZmVyIGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50Pihy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oYnVmZmVyKSk7Cit9Cit9CisKICNpZiAhZGVmaW5l
ZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKIHN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCkK
IHsKQEAgLTU0MiwzMiArNzk3LDcgQEAKIC8vIHRvIHJ1biwgdGhlIGZ1bmN0aW9uIHJldHVybnMg
aW1tZWRpYXRlbHksIGFuZCB0aGUgdGhyZWFkIGNvbnRpbnVlcyBleGVjdXRpb24uCiB2b2lkIFNj
aGVkdWxlWWllbGQoKQogewotI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUp
Ci0gICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBTbGVlcCBleGlzdHMgYmVjYXVzZSBpdCBp
cyBub3QgYXZhaWxhYmxlIHByaW9yIHRvIFVwZGF0ZSA0LgotICAgIHN0YXRpYyBIQU5ETEUgc2lu
Z2xldG9uRXZlbnQgPSBudWxscHRyOwotICAgIEhBTkRMRSBzbGVlcEV2ZW50ID0gc2luZ2xldG9u
RXZlbnQ7Ci0gICAgaWYgKCFzbGVlcEV2ZW50KQotICAgIHsKLSAgICAgICAgc2xlZXBFdmVudCA9
IENyZWF0ZUV2ZW50RXgobnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX0VWRU5UX01BTlVBTF9SRVNF
VCwgRVZFTlRfQUxMX0FDQ0VTUyk7Ci0KLSAgICAgICAgaWYgKCFzbGVlcEV2ZW50KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIEhBTkRMRSBwcmV2aW91c0V2ZW50ID0gSW50ZXJsb2Nr
ZWRDb21wYXJlRXhjaGFuZ2VQb2ludGVyUmVsZWFzZSgmc2luZ2xldG9uRXZlbnQsIHNsZWVwRXZl
bnQsIG51bGxwdHIpOwotCi0gICAgICAgIGlmIChwcmV2aW91c0V2ZW50KQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBCYWNrIG91dCBpZiBtdWx0aXBsZSB0aHJlYWRzIHRyeSB0byBkZW1hbmQg
Y3JlYXRlIGF0IHRoZSBzYW1lIHRpbWUuCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShzbGVlcEV2
ZW50KTsKLSAgICAgICAgICAgIHNsZWVwRXZlbnQgPSBwcmV2aW91c0V2ZW50OwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgLy8gRW11bGF0ZSBzbGVlcCBieSB3YWl0aW5nIHdpdGggdGltZW91dCBv
biBhbiBldmVudCB0aGF0IGlzIG5ldmVyIHNpZ25hbGxlZC4KLSAgICBXYWl0Rm9yU2luZ2xlT2Jq
ZWN0RXgoc2xlZXBFdmVudCwgMCwgZmFsc2UpOwotI2Vsc2UKICAgICBTbGVlcCgwKTsKLSNlbmRp
ZgogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
dXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi91dGlsaXRpZXMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtOSwxMCArOSwx
NSBAQAogI2lmbmRlZiBDT01NT05fVVRJTElUSUVTX0hfCiAjZGVmaW5lIENPTU1PTl9VVElMSVRJ
RVNfSF8KIAorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisK
ICNpbmNsdWRlICJhbmdsZV9nbC5oIgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDxtYXRo
Lmg+CiAKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKwogbmFtZXNwYWNlIGdsCiB7CiAK
QEAgLTI1LDYgKzMwLDcgQEAKIGludCBWYXJpYWJsZVJvd0NvdW50KEdMZW51bSB0eXBlKTsKIGlu
dCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKTsKIGJvb2wgSXNTYW1wbGVyVHlwZShH
TGVudW0gdHlwZSk7CitHTGVudW0gU2FtcGxlclR5cGVUb1RleHR1cmVUeXBlKEdMZW51bSBzYW1w
bGVyVHlwZSk7CiBib29sIElzTWF0cml4VHlwZShHTGVudW0gdHlwZSk7CiBHTGVudW0gVHJhbnNw
b3NlTWF0cml4VHlwZShHTGVudW0gdHlwZSk7CiBpbnQgVmFyaWFibGVSZWdpc3RlckNvdW50KEdM
ZW51bSB0eXBlKTsKQEAgLTQ0LDYgKzUwLDE2IEBACiAvLyBzZXQgdG8gR0xfSU5WQUxJRF9JTkRF
WCBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBub3QgYW4gYXJyYXkgb3IgdGhlIGFycmF5IGluZGV4
IGlzIGludmFsaWQuCiBzdGQ6OnN0cmluZyBQYXJzZVVuaWZvcm1OYW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lLCBzaXplX3QgKm91dFN1YnNjcmlwdCk7CiAKKy8vIEZpbmQgdGhlIHJhbmdlIG9m
IGluZGV4IHZhbHVlcyBpbiB0aGUgcHJvdmlkZWQgaW5kaWNlcyBwb2ludGVyLiAgUHJpbWl0aXZl
IHJlc3RhcnQgaW5kaWNlcyBhcmUKKy8vIG9ubHkgY291bnRlZCBpbiB0aGUgcmFuZ2UgaWYgcHJp
bWl0aXZlIHJlc3RhcnQgaXMgZGlzYWJsZWQuCitJbmRleFJhbmdlIENvbXB1dGVJbmRleFJhbmdl
KEdMZW51bSBpbmRleFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFi
bGVkKTsKKworLy8gR2V0IHRoZSBwcmltaXRpdmUgcmVzdGFydCBpbmRleCB2YWx1ZSBmb3IgdGhl
IGdpdmVuIGluZGV4IHR5cGUuCitHTHVpbnQgR2V0UHJpbWl0aXZlUmVzdGFydEluZGV4KEdMZW51
bSBpbmRleFR5cGUpOworCiBib29sIElzVHJpYW5nbGVNb2RlKEdMZW51bSBkcmF3TW9kZSk7CiAK
IC8vIFtPcGVuR0wgRVMgMy4wLjJdIFNlY3Rpb24gMi4zLjEgcGFnZSAxNApAQCAtNTIsOCArNjgs
MjggQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBvdXRUPiBvdXRUIGlyb3VuZChHTGZsb2F0IHZhbHVl
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxvdXRUPih2YWx1ZSA+IDAuMGYgPyBmbG9vcih2YWx1ZSAr
IDAuNWYpIDogY2VpbCh2YWx1ZSAtIDAuNWYpKTsgfQogdGVtcGxhdGUgPHR5cGVuYW1lIG91dFQ+
IG91dFQgdWlyb3VuZChHTGZsb2F0IHZhbHVlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxvdXRUPih2
YWx1ZSArIDAuNWYpOyB9CiAKK3Vuc2lnbmVkIGludCBQYXJzZUFuZFN0cmlwQXJyYXlJbmRleChz
dGQ6OnN0cmluZyAqbmFtZSk7CisKK30gIC8vIG5hbWVzcGFjZSBnbAorCituYW1lc3BhY2UgZWds
Cit7CitzdGF0aWMgY29uc3QgRUdMZW51bSBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0ID0gRUdM
X0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFI7CitzdGF0aWMgY29uc3QgRUdMZW51
bSBMYXN0Q3ViZU1hcFRleHR1cmVUYXJnZXQgPSBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9aX0tIUjsKK2Jvb2wgSXNDdWJlTWFwVGV4dHVyZVRhcmdldChFR0xlbnVtIHRhcmdldCk7
CitzaXplX3QgQ3ViZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5kZXgoRUdMZW51bSB0YXJnZXQp
OworRUdMZW51bSBMYXllckluZGV4VG9DdWJlTWFwVGV4dHVyZVRhcmdldChzaXplX3QgaW5kZXgp
OworYm9vbCBJc1RleHR1cmVUYXJnZXQoRUdMZW51bSB0YXJnZXQpOworYm9vbCBJc1JlbmRlcmJ1
ZmZlclRhcmdldChFR0xlbnVtIHRhcmdldCk7CiB9CiAKK25hbWVzcGFjZSBlZ2xfZ2wKK3sKK0dM
ZW51bSBFR0xDdWJlTWFwVGFyZ2V0VG9HTEN1YmVNYXBUYXJnZXQoRUdMZW51bSBlZ2xUYXJnZXQp
OworR0xlbnVtIEVHTEltYWdlVGFyZ2V0VG9HTFRleHR1cmVUYXJnZXQoRUdMZW51bSBlZ2xUYXJn
ZXQpOworR0x1aW50IEVHTENsaWVudEJ1ZmZlclRvR0xPYmplY3RIYW5kbGUoRUdMQ2xpZW50QnVm
ZmVyIGJ1ZmZlcik7Cit9CisKICNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9S
RSkKIHN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCk7CiB2b2lkIHdyaXRlRmlsZShjb25zdCBjaGFy
KiBwYXRoLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSk7CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlcnNpb24uaAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZXJzaW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyLDEyICsxMiwxNyBAQAogI2RlZmluZSBBTkdMRV9NQUpPUl9WRVJTSU9OIDIK
ICNkZWZpbmUgQU5HTEVfTUlOT1JfVkVSU0lPTiAxCiAKKyNpZm5kZWYgQU5HTEVfUkVWSVNJT04K
KyNkZWZpbmUgQU5HTEVfUkVWSVNJT04gMAorI2VuZGlmCisKICNkZWZpbmUgQU5HTEVfU1RSSU5H
SUZZKHgpICAgICAgICN4CiAjZGVmaW5lIEFOR0xFX01BQ1JPX1NUUklOR0lGWSh4KSBBTkdMRV9T
VFJJTkdJRlkoeCkKIAogI2RlZmluZSBBTkdMRV9WRVJTSU9OX1NUUklORyAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIEFOR0xFX01BQ1JPX1NUUklOR0lGWShBTkdMRV9NQUpPUl9WRVJTSU9O
KSAiLiIgXAogICAgIEFOR0xFX01BQ1JPX1NUUklOR0lGWShBTkdMRV9NSU5PUl9WRVJTSU9OKSAi
LiIgXAorICAgIEFOR0xFX01BQ1JPX1NUUklOR0lGWShBTkdMRV9SRVZJU0lPTikgIi4iIFwKICAg
ICBBTkdMRV9DT01NSVRfSEFTSAogCiAjZW5kaWYgLy8gQ09NTU9OX1ZFUlNJT05fSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25v
c3RpY3NCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
RGlhZ25vc3RpY3NCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDE2ICsxMDUsMTYgQEAK
ICAgICAgIGNhc2UgUFBfVkVSU0lPTl9OT1RfRklSU1RfU1RBVEVNRU5UOgogICAgICAgICByZXR1
cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9yZSBhbnl0aGluZyBlbHNlLCAi
CiAgICAgICAgICAgICAgICAiZXhjZXB0IGZvciBjb21tZW50cyBhbmQgd2hpdGUgc3BhY2UiOwor
ICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9MSU5FX0VTU0wzOgorICAgICAgICByZXR1
cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIG9uIHRoZSBmaXJzdCBsaW5lIG9mIHRo
ZSBzaGFkZXIiOwogICAgICAgY2FzZSBQUF9JTlZBTElEX0xJTkVfTlVNQkVSOgogICAgICAgICBy
ZXR1cm4gImludmFsaWQgbGluZSBudW1iZXIiOwogICAgICAgY2FzZSBQUF9JTlZBTElEX0ZJTEVf
TlVNQkVSOgogICAgICAgICByZXR1cm4gImludmFsaWQgZmlsZSBudW1iZXIiOwogICAgICAgY2Fz
ZSBQUF9JTlZBTElEX0xJTkVfRElSRUNUSVZFOgogICAgICAgICByZXR1cm4gImludmFsaWQgbGlu
ZSBkaXJlY3RpdmUiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX1BSQUdNQToKLSAgICAgICAgcmV0
dXJuICJpbnZhbGlkIHByYWdtYSI7Ci0gICAgICBjYXNlIFBQX0lOVkFMSURfUFJBR01BX1ZBTFVF
OgotICAgICAgICByZXR1cm4gImludmFsaWQgcHJhZ21hIHZhbHVlLCBtdXN0IGJlICdvbicgb3Ig
J29mZiciOworICAgICAgY2FzZSBQUF9OT05fUFBfVE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NM
MzoKKyAgICAgICAgcmV0dXJuICJleHRlbnNpb24gZGlyZWN0aXZlIG11c3Qgb2NjdXIgYmVmb3Jl
IGFueSBub24tcHJlcHJvY2Vzc29yIHRva2VucyBpbiBFU1NMMyI7CiAgICAgICAvLyBFcnJvcnMg
ZW5kLgogICAgICAgLy8gV2FybmluZ3MgYmVnaW4uCiAgICAgICBjYXNlIFBQX0VPRl9JTl9ESVJF
Q1RJVkU6CkBAIC0xMjMsNiArMTIzLDEwIEBACiAgICAgICAgIHJldHVybiAidW5leHBlY3RlZCB0
b2tlbiBhZnRlciBjb25kaXRpb25hbCBleHByZXNzaW9uIjsKICAgICAgIGNhc2UgUFBfVU5SRUNP
R05JWkVEX1BSQUdNQToKICAgICAgICAgcmV0dXJuICJ1bnJlY29nbml6ZWQgcHJhZ21hIjsKKyAg
ICAgIGNhc2UgUFBfTk9OX1BQX1RPS0VOX0JFRk9SRV9FWFRFTlNJT05fRVNTTDE6CisgICAgICAg
IHJldHVybiAiZXh0ZW5zaW9uIGRpcmVjdGl2ZSBzaG91bGQgb2NjdXIgYmVmb3JlIGFueSBub24t
cHJlcHJvY2Vzc29yIHRva2VucyI7CisgICAgICBjYXNlIFBQX1dBUk5JTkdfTUFDUk9fTkFNRV9S
RVNFUlZFRDoKKyAgICAgICAgcmV0dXJuICJtYWNybyBuYW1lIHdpdGggYSBkb3VibGUgdW5kZXJz
Y29yZSBpcyByZXNlcnZlZCAtIHVuaW50ZW50ZWQgYmVoYXZpb3IgaXMgcG9zc2libGUiOwogICAg
ICAgLy8gV2FybmluZ3MgZW5kLgogICAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KGZhbHNl
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvRGlhZ25vc3RpY3NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaWFnbm9zdGljc0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTYgKzYwLDE4IEBA
CiAgICAgICAgIFBQX0lOVkFMSURfVkVSU0lPTl9OVU1CRVIsCiAgICAgICAgIFBQX0lOVkFMSURf
VkVSU0lPTl9ESVJFQ1RJVkUsCiAgICAgICAgIFBQX1ZFUlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVO
VCwKKyAgICAgICAgUFBfVkVSU0lPTl9OT1RfRklSU1RfTElORV9FU1NMMywKICAgICAgICAgUFBf
SU5WQUxJRF9MSU5FX05VTUJFUiwKICAgICAgICAgUFBfSU5WQUxJRF9GSUxFX05VTUJFUiwKICAg
ICAgICAgUFBfSU5WQUxJRF9MSU5FX0RJUkVDVElWRSwKLSAgICAgICAgUFBfSU5WQUxJRF9QUkFH
TUEsCi0gICAgICAgIFBQX0lOVkFMSURfUFJBR01BX1ZBTFVFLAorICAgICAgICBQUF9OT05fUFBf
VE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMywKICAgICAgICAgUFBfRVJST1JfRU5ELAogCiAg
ICAgICAgIFBQX1dBUk5JTkdfQkVHSU4sCiAgICAgICAgIFBQX0VPRl9JTl9ESVJFQ1RJVkUsCiAg
ICAgICAgIFBQX1VOUkVDT0dOSVpFRF9QUkFHTUEsCisgICAgICAgIFBQX05PTl9QUF9UT0tFTl9C
RUZPUkVfRVhURU5TSU9OX0VTU0wxLAorICAgICAgICBQUF9XQVJOSU5HX01BQ1JPX05BTUVfUkVT
RVJWRUQsCiAgICAgICAgIFBQX1dBUk5JTkdfRU5ECiAgICAgfTsKIApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMTQgKzExOSwxMiBAQAogYm9vbCBpc01h
Y3JvTmFtZVJlc2VydmVkKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQogewogICAgIC8vIE5hbWVz
IHByZWZpeGVkIHdpdGggIkdMXyIgYXJlIHJlc2VydmVkLgotICAgIGlmIChuYW1lLnN1YnN0cigw
LCAzKSA9PSAiR0xfIikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIChuYW1lLnN1
YnN0cigwLCAzKSA9PSAiR0xfIik7Cit9CiAKLSAgICAvLyBOYW1lcyBjb250YWluaW5nIHR3byBj
b25zZWN1dGl2ZSB1bmRlcnNjb3JlcyBhcmUgcmVzZXJ2ZWQuCi0gICAgaWYgKG5hbWUuZmluZCgi
X18iKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBy
ZXR1cm4gZmFsc2U7Citib29sIGhhc0RvdWJsZVVuZGVyc2NvcmVzKGNvbnN0IHN0ZDo6c3RyaW5n
ICZuYW1lKQoreworICAgIHJldHVybiAobmFtZS5maW5kKCJfXyIpICE9IHN0ZDo6c3RyaW5nOjpu
cG9zKTsKIH0KIAogYm9vbCBpc01hY3JvUHJlZGVmaW5lZChjb25zdCBzdGQ6OnN0cmluZyAmbmFt
ZSwKQEAgLTE0MSw4MCArMTM5LDE3IEBACiBuYW1lc3BhY2UgcHAKIHsKIAotY2xhc3MgRGVmaW5l
ZFBhcnNlciA6IHB1YmxpYyBMZXhlcgotewotICBwdWJsaWM6Ci0gICAgRGVmaW5lZFBhcnNlcihM
ZXhlciAqbGV4ZXIsCi0gICAgICAgICAgICAgICAgICBjb25zdCBNYWNyb1NldCAqbWFjcm9TZXQs
Ci0gICAgICAgICAgICAgICAgICBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCi0gICAgICAgIDog
bUxleGVyKGxleGVyKSwKLSAgICAgICAgICBtTWFjcm9TZXQobWFjcm9TZXQpLAotICAgICAgICAg
IG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcykKLSAgICB7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgbGV4KFRva2VuICp0b2tlbikKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGNoYXIga0RlZmluZWRbXSA9ICJkZWZpbmVkIjsKLQotICAgICAgICBtTGV4ZXItPmxleCh0b2tl
bik7Ci0gICAgICAgIGlmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHRva2VuLT50ZXh0ICE9IGtEZWZpbmVkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGJvb2wgcGFyZW4gPSBmYWxzZTsKLSAgICAgICAg
bUxleGVyLT5sZXgodG9rZW4pOwotICAgICAgICBpZiAodG9rZW4tPnR5cGUgPT0gJygnKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBwYXJlbiA9IHRydWU7Ci0gICAgICAgICAgICBtTGV4ZXItPmxl
eCh0b2tlbik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46
OklERU5USUZJRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0
KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAgICAgICAgICBz
a2lwVW50aWxFT0QobUxleGVyLCB0b2tlbik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgTWFjcm9TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtTWFjcm9TZXQtPmZp
bmQodG9rZW4tPnRleHQpOwotICAgICAgICBzdGQ6OnN0cmluZyBleHByZXNzaW9uID0gaXRlciAh
PSBtTWFjcm9TZXQtPmVuZCgpID8gIjEiIDogIjAiOwotCi0gICAgICAgIGlmIChwYXJlbikKLSAg
ICAgICAgewotICAgICAgICAgICAgbUxleGVyLT5sZXgodG9rZW4pOwotICAgICAgICAgICAgaWYg
KHRva2VuLT50eXBlICE9ICcpJykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRGlh
Z25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50
ZXh0KTsKLSAgICAgICAgICAgICAgICBza2lwVW50aWxFT0QobUxleGVyLCB0b2tlbik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gV2UgaGF2ZSBhIHZhbGlkIGRlZmluZWQgb3BlcmF0b3IuCi0gICAgICAgIC8vIENvbnZlcnQg
dGhlIGN1cnJlbnQgdG9rZW4gaW50byBhIENPTlNUX0lOVCB0b2tlbi4KLSAgICAgICAgdG9rZW4t
PnR5cGUgPSBUb2tlbjo6Q09OU1RfSU5UOwotICAgICAgICB0b2tlbi0+dGV4dCA9IGV4cHJlc3Np
b247Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgTGV4ZXIgKm1MZXhlcjsKLSAgICBjb25zdCBN
YWNyb1NldCAqbU1hY3JvU2V0OwotICAgIERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7Ci19Owot
CiBEaXJlY3RpdmVQYXJzZXI6OkRpcmVjdGl2ZVBhcnNlcihUb2tlbml6ZXIgKnRva2VuaXplciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvU2V0ICptYWNyb1NldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdub3N0aWNzICpkaWFnbm9zdGljcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVj
dGl2ZUhhbmRsZXIpCiAgICAgOiBtUGFzdEZpcnN0U3RhdGVtZW50KGZhbHNlKSwKKyAgICAgIG1T
ZWVuTm9uUHJlcHJvY2Vzc29yVG9rZW4oZmFsc2UpLAogICAgICAgbVRva2VuaXplcih0b2tlbml6
ZXIpLAogICAgICAgbU1hY3JvU2V0KG1hY3JvU2V0KSwKICAgICAgIG1EaWFnbm9zdGljcyhkaWFn
bm9zdGljcyksCi0gICAgICBtRGlyZWN0aXZlSGFuZGxlcihkaXJlY3RpdmVIYW5kbGVyKQorICAg
ICAgbURpcmVjdGl2ZUhhbmRsZXIoZGlyZWN0aXZlSGFuZGxlciksCisgICAgICBtU2hhZGVyVmVy
c2lvbigxMDApCiB7CiB9CiAKQEAgLTIyOSw2ICsxNjQsMTAgQEAKICAgICAgICAgICAgIHBhcnNl
RGlyZWN0aXZlKHRva2VuKTsKICAgICAgICAgICAgIG1QYXN0Rmlyc3RTdGF0ZW1lbnQgPSB0cnVl
OwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFpc0VPRCh0b2tlbikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1TZWVuTm9uUHJlcHJvY2Vzc29yVG9rZW4gPSB0cnVlOworICAgICAgICB9
CiAKICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpMQVNUKQogICAgICAgICB7CkBA
IC0zNTAsNiArMjg5LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIC8vIFVz
aW5nIGRvdWJsZSB1bmRlcnNjb3JlcyBpcyBhbGxvd2VkLCBidXQgbWF5IHJlc3VsdCBpbiB1bmlu
dGVuZGVkCisgICAgLy8gYmVoYXZpb3IsIHNvIGEgd2FybmluZyBpcyBpc3N1ZWQuIEF0IHRoZSB0
aW1lIG9mIHdyaXRpbmcgdGhpcyB3YXMKKyAgICAvLyBzcGVjaWZpZWQgaW4gRVNTTCAzLjEwLCBi
dXQgdGhlIGludGVudCBqdWRnaW5nIGZyb20gS2hyb25vcworICAgIC8vIGRpc2N1c3Npb25zIGFu
ZCBkRVFQIHRlc3RzIHdhcyB0aGF0IGRvdWJsZSB1bmRlcnNjb3JlcyBzaG91bGQgYmUKKyAgICAv
LyBhbGxvd2VkIGluIGVhcmxpZXIgRVNTTCB2ZXJzaW9ucyB0b28uCisgICAgaWYgKGhhc0RvdWJs
ZVVuZGVyc2NvcmVzKHRva2VuLT50ZXh0KSkKKyAgICB7CisgICAgICAgIG1EaWFnbm9zdGljcy0+
cmVwb3J0KERpYWdub3N0aWNzOjpQUF9XQVJOSU5HX01BQ1JPX05BTUVfUkVTRVJWRUQsIHRva2Vu
LT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwor
ICAgIH0KIAogICAgIE1hY3JvIG1hY3JvOwogICAgIG1hY3JvLnR5cGUgPSBNYWNybzo6a1R5cGVP
Ymo7CkBAIC02MjUsOCArNTc0LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNh
c2UgUFJBR01BX1ZBTFVFOgogICAgICAgICAgICAgdmFsdWUgPSB0b2tlbi0+dGV4dDsKLSAgICAg
ICAgICAgIC8vIFByYWdtYSB2YWx1ZSB2YWxpZGF0aW9uIGlzIGhhbmRsZWQgaW4gRGlyZWN0aXZl
SGFuZGxlcjo6aGFuZGxlUHJhZ21hCi0gICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSBwcm9wZXIg
cHJhZ21hIHZhbHVlIGlzIGRlcGVuZGVudCBvbiB0aGUgcHJhZ21hIG5hbWUuCisgICAgICAgICAg
ICB2YWxpZCA9IHZhbGlkICYmICh0b2tlbi0+dHlwZSA9PSBUb2tlbjo6SURFTlRJRklFUik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIFJJR0hUX1BBUkVOOgogICAgICAgICAg
ICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gJyknKTsKQEAgLTY0Myw3ICs1OTEs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSA9PSBSSUdIVF9QQVJFTiArIDEpKTsg
IC8vIFdpdGggdmFsdWUuCiAgICAgaWYgKCF2YWxpZCkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9z
dGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1BSQUdNQSwKKyAgICAgICAgbURp
YWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VOUkVDT0dOSVpFRF9QUkFHTUEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgbmFtZSk7CiAgICAg
fQogICAgIGVsc2UgaWYgKHN0YXRlID4gUFJBR01BX05BTUUpICAvLyBEbyBub3Qgbm90aWZ5IGZv
ciBlbXB0eSBwcmFnbWEuCkBAIC03MTUsNiArNjYzLDIwIEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwogICAgICAgICB2YWxpZCA9
IGZhbHNlOwogICAgIH0KKyAgICBpZiAodmFsaWQgJiYgbVNlZW5Ob25QcmVwcm9jZXNzb3JUb2tl
bikKKyAgICB7CisgICAgICAgIGlmIChtU2hhZGVyVmVyc2lvbiA+PSAzMDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9OT05fUFBf
VE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgdmFsaWQg
PSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9OT05fUFBfVE9LRU5fQkVGT1JF
X0VYVEVOU0lPTl9FU1NMMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICB9CisgICAgfQogICAgIGlmICh2YWxp
ZCkKICAgICAgICAgbURpcmVjdGl2ZUhhbmRsZXItPmhhbmRsZUV4dGVuc2lvbih0b2tlbi0+bG9j
YXRpb24sIG5hbWUsIGJlaGF2aW9yKTsKIH0KQEAgLTc5MSw5ICs3NTMsMTggQEAKICAgICAgICAg
dmFsaWQgPSBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAodmFsaWQgJiYgdmVyc2lvbiA+PSAzMDAg
JiYgdG9rZW4tPmxvY2F0aW9uLmxpbmUgPiAxKQorICAgIHsKKyAgICAgICAgbURpYWdub3N0aWNz
LT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1ZFUlNJT05fTk9UX0ZJUlNUX0xJTkVfRVNTTDMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQp
OworICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgIH0KKwogICAgIGlmICh2YWxpZCkKICAgICB7
CiAgICAgICAgIG1EaXJlY3RpdmVIYW5kbGVyLT5oYW5kbGVWZXJzaW9uKHRva2VuLT5sb2NhdGlv
biwgdmVyc2lvbik7CisgICAgICAgIG1TaGFkZXJWZXJzaW9uID0gdmVyc2lvbjsKKyAgICAgICAg
UHJlZGVmaW5lTWFjcm8obU1hY3JvU2V0LCAiX19WRVJTSU9OX18iLCB2ZXJzaW9uKTsKICAgICB9
CiB9CiAKQEAgLTgwMSw3MiArNzcyLDYwIEBACiB7CiAgICAgYXNzZXJ0KGdldERpcmVjdGl2ZSh0
b2tlbikgPT0gRElSRUNUSVZFX0xJTkUpOwogCi0gICAgZW51bSBTdGF0ZQotICAgIHsKLSAgICAg
ICAgTElORV9OVU1CRVIsCi0gICAgICAgIEZJTEVfTlVNQkVSCi0gICAgfTsKLQogICAgIGJvb2wg
dmFsaWQgPSB0cnVlOworICAgIGJvb2wgcGFyc2VkRmlsZU51bWJlciA9IGZhbHNlOwogICAgIGlu
dCBsaW5lID0gMCwgZmlsZSA9IDA7Ci0gICAgaW50IHN0YXRlID0gTElORV9OVU1CRVI7CiAKLSAg
ICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIobVRva2VuaXplciwgbU1hY3JvU2V0LCBtRGlh
Z25vc3RpY3MpOworICAgIE1hY3JvRXhwYW5kZXIgbWFjcm9FeHBhbmRlcihtVG9rZW5pemVyLCBt
TWFjcm9TZXQsIG1EaWFnbm9zdGljcywgZmFsc2UpOworCisgICAgLy8gTGV4IHRoZSBmaXJzdCB0
b2tlbiBhZnRlciAiI2xpbmUiIHNvIHdlIGNhbiBjaGVjayBpdCBmb3IgRU9ELgogICAgIG1hY3Jv
RXhwYW5kZXIubGV4KHRva2VuKTsKLSAgICB3aGlsZSAoKHRva2VuLT50eXBlICE9ICdcbicpICYm
ICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6TEFTVCkpCisKKyAgICBpZiAoaXNFT0QodG9rZW4pKQog
ICAgIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSsrKQorICAgICAgICBtRGlhZ25vc3RpY3MtPnJl
cG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5FX0RJUkVDVElWRSwgdG9rZW4tPmxvY2F0
aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIEV4cHJlc3Npb25QYXJzZXIgZXhwcmVzc2lvblBhcnNlcigmbWFj
cm9FeHBhbmRlciwgbURpYWdub3N0aWNzKTsKKyAgICAgICAgRXhwcmVzc2lvblBhcnNlcjo6RXJy
b3JTZXR0aW5ncyBlcnJvclNldHRpbmdzOworCisgICAgICAgIC8vIFNlZSBHTEVTMyBzZWN0aW9u
IDEyLjQyCisgICAgICAgIGVycm9yU2V0dGluZ3MuaW50ZWdlckxpdGVyYWxzTXVzdEZpdDMyQml0
U2lnbmVkUmFuZ2UgPSB0cnVlOworCisgICAgICAgIGVycm9yU2V0dGluZ3MudW5leHBlY3RlZElk
ZW50aWZpZXIgPSBEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5FX05VTUJFUjsKKyAgICAgICAg
Ly8gVGhlIGZpcnN0IHRva2VuIHdhcyBsZXhlZCBlYXJsaWVyIHRvIGNoZWNrIGlmIGl0IHdhcyBF
T0QuIEluY2x1ZGUKKyAgICAgICAgLy8gdGhlIHRva2VuIGluIHBhcnNpbmcgZm9yIGEgc2Vjb25k
IHRpbWUgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgLy8gcGFyc2VQcmVzZXRUb2tlbiBmbGFnIHRv
IHRydWUuCisgICAgICAgIGV4cHJlc3Npb25QYXJzZXIucGFyc2UodG9rZW4sICZsaW5lLCB0cnVl
LCBlcnJvclNldHRpbmdzLCAmdmFsaWQpOworICAgICAgICBpZiAoIWlzRU9EKHRva2VuKSAmJiB2
YWxpZCkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgTElORV9OVU1CRVI6Ci0gICAgICAgICAg
ICBpZiAodmFsaWQgJiYgKHRva2VuLT50eXBlICE9IFRva2VuOjpDT05TVF9JTlQpKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9JTlZBTElEX0xJTkVfTlVNQkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHZh
bGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsaWQgJiYgIXRv
a2VuLT5pVmFsdWUoJmxpbmUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRl
eHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEZJTEVfTlVNQkVSOgotICAgICAgICAgICAg
aWYgKHZhbGlkICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6Q09OU1RfSU5UKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6
UFBfSU5WQUxJRF9GSUxFX05VTUJFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgICAgICB2YWxp
ZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbGlkICYmICF0b2tl
bi0+aVZhbHVlKCZmaWxlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRGlhZ25v
c3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5URUdFUl9PVkVSRkxPVywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0
KTsKLSAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVycm9yU2V0dGlu
Z3MudW5leHBlY3RlZElkZW50aWZpZXIgPSBEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9GSUxFX05V
TUJFUjsKKyAgICAgICAgICAgIC8vIEFmdGVyIHBhcnNpbmcgdGhlIGxpbmUgZXhwcmVzc2lvbiBl
eHByZXNzaW9uUGFyc2VyIGhhcyBhbHNvCisgICAgICAgICAgICAvLyBhZHZhbmNlZCB0byB0aGUg
Zmlyc3QgdG9rZW4gb2YgdGhlIGZpbGUgZXhwcmVzc2lvbiAtIHRoaXMgaXMgdGhlCisgICAgICAg
ICAgICAvLyB0b2tlbiB0aGF0IG1ha2VzIHRoZSBwYXJzZXIgcmVkdWNlIHRoZSAiaW5wdXQiIHJ1
bGUgZm9yIHRoZSBsaW5lCisgICAgICAgICAgICAvLyBleHByZXNzaW9uIGFuZCBzdG9wLiBTbyB3
ZSdyZSB1c2luZyBwYXJzZVByZXNldFRva2VuID0gdHJ1ZSBoZXJlCisgICAgICAgICAgICAvLyBh
cyB3ZWxsLgorICAgICAgICAgICAgZXhwcmVzc2lvblBhcnNlci5wYXJzZSh0b2tlbiwgJmZpbGUs
IHRydWUsIGVycm9yU2V0dGluZ3MsICZ2YWxpZCk7CisgICAgICAgICAgICBwYXJzZWRGaWxlTnVt
YmVyID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWlzRU9EKHRva2VuKSkKKyAgICAg
ICAgewogICAgICAgICAgICAgaWYgKHZhbGlkKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VO
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwg
dG9rZW4tPnRleHQpOwogICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5p
emVyLCB0b2tlbik7CiAgICAgICAgIH0KLSAgICAgICAgbWFjcm9FeHBhbmRlci5sZXgodG9rZW4p
OwogICAgIH0KIAotICAgIGlmICh2YWxpZCAmJiAoc3RhdGUgIT0gRklMRV9OVU1CRVIpICYmIChz
dGF0ZSAhPSBGSUxFX05VTUJFUiArIDEpKQotICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5y
ZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfTElORV9ESVJFQ1RJVkUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAg
ICB2YWxpZCA9IGZhbHNlOwotICAgIH0KICAgICBpZiAodmFsaWQpCiAgICAgewogICAgICAgICBt
VG9rZW5pemVyLT5zZXRMaW5lTnVtYmVyKGxpbmUpOwotICAgICAgICBpZiAoc3RhdGUgPT0gRklM
RV9OVU1CRVIgKyAxKQorICAgICAgICBpZiAocGFyc2VkRmlsZU51bWJlcikKICAgICAgICAgICAg
IG1Ub2tlbml6ZXItPnNldEZpbGVOdW1iZXIoZmlsZSk7CiAgICAgfQogfQpAQCAtOTI2LDE0ICs4
ODUsMTcgQEAKICAgICBhc3NlcnQoKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lG
KSB8fAogICAgICAgICAgICAoZ2V0RGlyZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfRUxJRikp
OwogCi0gICAgRGVmaW5lZFBhcnNlciBkZWZpbmVkUGFyc2VyKG1Ub2tlbml6ZXIsIG1NYWNyb1Nl
dCwgbURpYWdub3N0aWNzKTsKLSAgICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIoJmRlZmlu
ZWRQYXJzZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKKyAgICBNYWNyb0V4cGFuZGVyIG1h
Y3JvRXhwYW5kZXIobVRva2VuaXplciwgbU1hY3JvU2V0LCBtRGlhZ25vc3RpY3MsIHRydWUpOwog
ICAgIEV4cHJlc3Npb25QYXJzZXIgZXhwcmVzc2lvblBhcnNlcigmbWFjcm9FeHBhbmRlciwgbURp
YWdub3N0aWNzKTsKIAogICAgIGludCBleHByZXNzaW9uID0gMDsKLSAgICBtYWNyb0V4cGFuZGVy
LmxleCh0b2tlbik7Ci0gICAgZXhwcmVzc2lvblBhcnNlci5wYXJzZSh0b2tlbiwgJmV4cHJlc3Np
b24pOworICAgIEV4cHJlc3Npb25QYXJzZXI6OkVycm9yU2V0dGluZ3MgZXJyb3JTZXR0aW5nczsK
KyAgICBlcnJvclNldHRpbmdzLmludGVnZXJMaXRlcmFsc011c3RGaXQzMkJpdFNpZ25lZFJhbmdl
ID0gZmFsc2U7CisgICAgZXJyb3JTZXR0aW5ncy51bmV4cGVjdGVkSWRlbnRpZmllciAgICAgICAg
ICAgICAgICAgICA9IERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VO
OwogCisgICAgYm9vbCB2YWxpZCA9IHRydWU7CisgICAgZXhwcmVzc2lvblBhcnNlci5wYXJzZSh0
b2tlbiwgJmV4cHJlc3Npb24sIGZhbHNlLCBlcnJvclNldHRpbmdzLCAmdmFsaWQpOworCiAgICAg
Ly8gQ2hlY2sgaWYgdGhlcmUgYXJlIHRva2VucyBhZnRlciAjaWYgZXhwcmVzc2lvbi4KICAgICBp
ZiAoIWlzRU9EKHRva2VuKSkKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0
aXZlUGFyc2VyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY3MgKmRp
YWdub3N0aWNzLAogICAgICAgICAgICAgICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3Rp
dmVIYW5kbGVyKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsZXgoVG9rZW4gKnRva2VuKTsKKyAgICB2
b2lkIGxleChUb2tlbiAqdG9rZW4pIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgUFBfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKERpcmVjdGl2ZVBhcnNlcik7CkBAIC03MCwxMSArNzAsMTQg
QEAKICAgICAgICAgfQogICAgIH07CiAgICAgYm9vbCBtUGFzdEZpcnN0U3RhdGVtZW50OworICAg
IGJvb2wgbVNlZW5Ob25QcmVwcm9jZXNzb3JUb2tlbjsgLy8gVHJhY2tzIGlmIGEgbm9uLXByZXBy
b2Nlc3NvciB0b2tlbiBoYXMgYmVlbiBzZWVuIHlldC4gIFNvbWUgbWFjcm9zLCBzdWNoIGFzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjZXh0ZW5zaW9uIG11c3QgYmUg
ZGVjbGFyZWQgYmVmb3JlIGFsbCBzaGFkZXIgY29kZS4KICAgICBzdGQ6OnZlY3RvcjxDb25kaXRp
b25hbEJsb2NrPiBtQ29uZGl0aW9uYWxTdGFjazsKICAgICBUb2tlbml6ZXIgKm1Ub2tlbml6ZXI7
CiAgICAgTWFjcm9TZXQgKm1NYWNyb1NldDsKICAgICBEaWFnbm9zdGljcyAqbURpYWdub3N0aWNz
OwogICAgIERpcmVjdGl2ZUhhbmRsZXIgKm1EaXJlY3RpdmVIYW5kbGVyOworICAgIGludCBtU2hh
ZGVyVmVyc2lvbjsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBwcApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25Q
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyogQSBCaXNvbiBwYXJz
ZXIsIG1hZGUgYnkgR05VIEJpc29uIDMuMC40LiAgKi8KIAotLyogQXBwbGUgTm90ZTogRm9yIHRo
ZSBhdm9pZGFuY2Ugb2YgZG91YnQsIEFwcGxlIGVsZWN0cyB0byBkaXN0cmlidXRlIHRoaXMgZmls
ZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEJTRCBsaWNlbnNlLiAqLyAKKy8qIEFwcGxlIE5vdGU6
IEZvciB0aGUgYXZvaWRhbmNlIG9mIGRvdWJ0LCBBcHBsZSBlbGVjdHMgdG8gZGlzdHJpYnV0ZSB0
aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0QgbGljZW5zZS4gKi8KIAogLyogQmlz
b24gaW1wbGVtZW50YXRpb24gZm9yIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKIApAQCAtMTEyLDYg
KzExMiw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiB0eXBlZGVmIGludG1heF90IFlZU1RZUEU7
CiAjZW5kaWYgIC8vIF9NU0NfVkVSCisKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKICNkZWZpbmUg
WVlMVFlQRV9JU19UUklWSUFMIDEKICNkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKQEAgLTEy
NCw2ICsxMjUsMTcgQEAKICAgICBwcDo6TGV4ZXIqIGxleGVyOwogICAgIHBwOjpUb2tlbiogdG9r
ZW47CiAgICAgaW50KiByZXN1bHQ7CisgICAgYm9vbCBwYXJzZVByZXNldFRva2VuOworCisgICAg
cHA6OkV4cHJlc3Npb25QYXJzZXI6OkVycm9yU2V0dGluZ3MgZXJyb3JTZXR0aW5nczsKKyAgICBi
b29sICp2YWxpZDsKKworICAgIHZvaWQgc3RhcnRJZ25vcmVFcnJvcnMoKSB7ICsraWdub3JlRXJy
b3JzOyB9CisgICAgdm9pZCBlbmRJZ25vcmVFcnJvcnMoKSB7IC0taWdub3JlRXJyb3JzOyB9CisK
KyAgICBib29sIGlzSWdub3JpbmdFcnJvcnMoKSB7IHJldHVybiBpZ25vcmVFcnJvcnMgPiAwOyB9
CisKKyAgICBpbnQgaWdub3JlRXJyb3JzOwogfTsKIH0gIC8vIG5hbWVzcGFjZQogCkBAIC0xNjQs
MTUgKzE3NiwxNiBAQAogICBlbnVtIHl5dG9rZW50eXBlCiAgIHsKICAgICBUT0tfQ09OU1RfSU5U
ID0gMjU4LAotICAgIFRPS19PUF9PUiA9IDI1OSwKLSAgICBUT0tfT1BfQU5EID0gMjYwLAotICAg
IFRPS19PUF9FUSA9IDI2MSwKLSAgICBUT0tfT1BfTkUgPSAyNjIsCi0gICAgVE9LX09QX0xFID0g
MjYzLAotICAgIFRPS19PUF9HRSA9IDI2NCwKLSAgICBUT0tfT1BfTEVGVCA9IDI2NSwKLSAgICBU
T0tfT1BfUklHSFQgPSAyNjYsCi0gICAgVE9LX1VOQVJZID0gMjY3CisgICAgVE9LX0lERU5USUZJ
RVIgPSAyNTksCisgICAgVE9LX09QX09SID0gMjYwLAorICAgIFRPS19PUF9BTkQgPSAyNjEsCisg
ICAgVE9LX09QX0VRID0gMjYyLAorICAgIFRPS19PUF9ORSA9IDI2MywKKyAgICBUT0tfT1BfTEUg
PSAyNjQsCisgICAgVE9LX09QX0dFID0gMjY1LAorICAgIFRPS19PUF9MRUZUID0gMjY2LAorICAg
IFRPS19PUF9SSUdIVCA9IDI2NywKKyAgICBUT0tfVU5BUlkgPSAyNjgKICAgfTsKICNlbmRpZgog
CkBAIC00MzEsMjMgKzQ0NCwyMyBAQAogI2VuZGlmIC8qICFZWUNPUFlfTkVFREVEICovCiAKIC8q
IFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0j
ZGVmaW5lIFlZRklOQUwgIDE0CisjZGVmaW5lIFlZRklOQUwgIDE1CiAvKiBZWUxBU1QgLS0gTGFz
dCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMTc1CisjZGVmaW5lIFlZ
TEFTVCAgIDE3NgogCiAvKiBZWU5UT0tFTlMgLS0gTnVtYmVyIG9mIHRlcm1pbmFscy4gICovCi0j
ZGVmaW5lIFlZTlRPS0VOUyAgMjcKKyNkZWZpbmUgWVlOVE9LRU5TICAyOAogLyogWVlOTlRTIC0t
IE51bWJlciBvZiBub250ZXJtaW5hbHMuICAqLwotI2RlZmluZSBZWU5OVFMgIDMKKyNkZWZpbmUg
WVlOTlRTICA1CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVsZXMuICAqLwotI2RlZmluZSBZ
WU5SVUxFUyAgMjYKKyNkZWZpbmUgWVlOUlVMRVMgIDI5CiAvKiBZWU5TVEFURVMgLS0gTnVtYmVy
IG9mIHN0YXRlcy4gICovCi0jZGVmaW5lIFlZTlNUQVRFUyAgNTIKKyNkZWZpbmUgWVlOU1RBVEVT
ICA1NQogCiAvKiBZWVRSQU5TTEFURVtZWVhdIC0tIFN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGlu
ZyB0byBZWVggYXMgcmV0dXJuZWQKICAgIGJ5IHl5bGV4LCB3aXRoIG91dC1vZi1ib3VuZHMgY2hl
Y2tpbmcuICAqLwogI2RlZmluZSBZWVVOREVGVE9LICAyCi0jZGVmaW5lIFlZTUFYVVRPSyAgIDI2
NworI2RlZmluZSBZWU1BWFVUT0sgICAyNjgKIAogI2RlZmluZSBZWVRSQU5TTEFURShZWVgpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoKHVuc2ln
bmVkIGludCkgKFlZWCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlYXSA6IFlZVU5ERUZU
T0spCkBAIC00NTksMTYgKzQ3MiwxNiBAQAogICAgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCiAgICAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwKICAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLAotICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgMjMsICAgICAy
LCAgICAgMiwgICAgIDIsICAgIDIxLCAgICAgOCwgICAgIDIsCi0gICAgICAyNSwgICAgMjYsICAg
IDE5LCAgICAxNywgICAgIDIsICAgIDE4LCAgICAgMiwgICAgMjAsICAgICAyLCAgICAgMiwKKyAg
ICAgICAyLCAgICAgMiwgICAgIDIsICAgIDI0LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAyMiwg
ICAgIDksICAgICAyLAorICAgICAgMjYsICAgIDI3LCAgICAyMCwgICAgMTgsICAgICAyLCAgICAx
OSwgICAgIDIsICAgIDIxLCAgICAgMiwgICAgIDIsCiAgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKLSAgICAgIDEx
LCAgICAgMiwgICAgMTIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLAorICAgICAgMTIsICAgICAyLCAgICAxMywgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsCiAgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKICAgICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LAotICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICA3LCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDgs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKICAgICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAogICAg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsCi0gICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDYsICAgICAy
LCAgICAyNCwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgNywgICAgIDIsICAgIDI1LCAgICAgMiwgICAgIDIsICAgICAyLAogICAgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsCiAgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwKICAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLApAQCAtNDgyLDE2ICs0OTUs
MTYgQEAKICAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLAogICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCiAgICAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwK
LSAgICAgICA1LCAgICAgOSwgICAgMTAsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAy
MgorICAgICAgIDUsICAgICA2LCAgICAxMCwgICAgMTEsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAyMwogfTsKIAogI2lmIFlZREVCVUcKICAgLyogWVlSTElORVtZWU5dIC0tIFNvdXJj
ZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gICovCi1zdGF0aWMgY29u
c3QgeXl0eXBlX3VpbnQ4IHl5cmxpbmVbXSA9CitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5
eXJsaW5lW10gPQogewotICAgICAgIDAsICAgIDk3LCAgICA5NywgICAxMDQsICAgMTA1LCAgIDEw
OCwgICAxMTEsICAgMTE0LCAgIDExNywgICAxMjAsCi0gICAgIDEyMywgICAxMjYsICAgMTI5LCAg
IDEzMiwgICAxMzUsICAgMTM4LCAgIDE0MSwgICAxNDQsICAgMTQ3LCAgIDE1MCwKLSAgICAgMTYz
LCAgIDE3NiwgICAxNzksICAgMTgyLCAgIDE4NSwgICAxODgsICAgMTkxCisgICAgICAgMCwgICAx
MTAsICAgMTEwLCAgIDExNywgICAxMTgsICAgMTI5LCAgIDEyOSwgICAxNTAsICAgMTUwLCAgIDE3
MSwKKyAgICAgMTc0LCAgIDE3NywgICAxODAsICAgMTgzLCAgIDE4NiwgICAxODksICAgMTkyLCAg
IDE5NSwgICAxOTgsICAgMjAxLAorICAgICAyMDQsICAgMjA3LCAgIDIxMCwgICAyMzAsICAgMjUw
LCAgIDI1MywgICAyNTYsICAgMjU5LCAgIDI2MiwgICAyNjUKIH07CiAjZW5kaWYKIApAQCAtNTAw
LDExICs1MTMsMTEgQEAKICAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBh
dCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFscy4gICovCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg
eXl0bmFtZVtdID0KIHsKLSAgIiRlbmQiLCAiZXJyb3IiLCAiJHVuZGVmaW5lZCIsICJUT0tfQ09O
U1RfSU5UIiwgIlRPS19PUF9PUiIsCi0gICJUT0tfT1BfQU5EIiwgIid8JyIsICInXiciLCAiJyYn
IiwgIlRPS19PUF9FUSIsICJUT0tfT1BfTkUiLCAiJzwnIiwKLSAgIic+JyIsICJUT0tfT1BfTEUi
LCAiVE9LX09QX0dFIiwgIlRPS19PUF9MRUZUIiwgIlRPS19PUF9SSUdIVCIsICInKyciLAotICAi
Jy0nIiwgIicqJyIsICInLyciLCAiJyUnIiwgIlRPS19VTkFSWSIsICInISciLCAiJ34nIiwgIico
JyIsICInKSciLAotICAiJGFjY2VwdCIsICJpbnB1dCIsICJleHByZXNzaW9uIiwgWVlfTlVMTFBU
UgorICAiJGVuZCIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIlRPS19DT05TVF9JTlQiLCAiVE9L
X0lERU5USUZJRVIiLAorICAiVE9LX09QX09SIiwgIlRPS19PUF9BTkQiLCAiJ3wnIiwgIideJyIs
ICInJiciLCAiVE9LX09QX0VRIiwgIlRPS19PUF9ORSIsCisgICInPCciLCAiJz4nIiwgIlRPS19P
UF9MRSIsICJUT0tfT1BfR0UiLCAiVE9LX09QX0xFRlQiLCAiVE9LX09QX1JJR0hUIiwKKyAgIicr
JyIsICInLSciLCAiJyonIiwgIicvJyIsICInJSciLCAiVE9LX1VOQVJZIiwgIichJyIsICInfici
LCAiJygnIiwKKyAgIicpJyIsICIkYWNjZXB0IiwgImlucHV0IiwgImV4cHJlc3Npb24iLCAiJEAx
IiwgIiRAMiIsIFlZX05VTExQVFIKIH07CiAjZW5kaWYKIApAQCAtNTEzLDE2ICs1MjYsMTYgQEAK
ICAgIChpbnRlcm5hbCkgc3ltYm9sIG51bWJlciBOVU0gKHdoaWNoIG11c3QgYmUgdGhhdCBvZiBh
IHRva2VuKS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eXRva251bVtdID0KIHsK
LSAgICAgICAwLCAgIDI1NiwgICAyNTcsICAgMjU4LCAgIDI1OSwgICAyNjAsICAgMTI0LCAgICA5
NCwgICAgMzgsICAgMjYxLAotICAgICAyNjIsICAgIDYwLCAgICA2MiwgICAyNjMsICAgMjY0LCAg
IDI2NSwgICAyNjYsICAgIDQzLCAgICA0NSwgICAgNDIsCi0gICAgICA0NywgICAgMzcsICAgMjY3
LCAgICAzMywgICAxMjYsICAgIDQwLCAgICA0MQorICAgICAgIDAsICAgMjU2LCAgIDI1NywgICAy
NTgsICAgMjU5LCAgIDI2MCwgICAyNjEsICAgMTI0LCAgICA5NCwgICAgMzgsCisgICAgIDI2Miwg
ICAyNjMsICAgIDYwLCAgICA2MiwgICAyNjQsICAgMjY1LCAgIDI2NiwgICAyNjcsICAgIDQzLCAg
ICA0NSwKKyAgICAgIDQyLCAgICA0NywgICAgMzcsICAgMjY4LCAgICAzMywgICAxMjYsICAgIDQw
LCAgICA0MQogfTsKICMgZW5kaWYKIAotI2RlZmluZSBZWVBBQ1RfTklORiAtMTEKKyNkZWZpbmUg
WVlQQUNUX05JTkYgLTEyCiAKICNkZWZpbmUgeXlwYWN0X3ZhbHVlX2lzX2RlZmF1bHQoWXlzdGF0
ZSkgXAotICAoISEoKFl5c3RhdGUpID09ICgtMTEpKSkKKyAgKCEhKChZeXN0YXRlKSA9PSAoLTEy
KSkpCiAKICNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xCiAKQEAgLTUzMywxMiArNTQ2LDEyIEBACiAg
ICAgIFNUQVRFLU5VTS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0K
IHsKLSAgICAgIDQ2LCAgIC0xMSwgICAgNDYsICAgIDQ2LCAgICA0NiwgICAgNDYsICAgIDQ2LCAg
ICAxMiwgICAgNjgsICAgLTExLAotICAgICAtMTEsICAgLTExLCAgIC0xMSwgICAgMjcsICAgLTEx
LCAgICA0NiwgICAgNDYsICAgIDQ2LCAgICA0NiwgICAgNDYsCi0gICAgICA0NiwgICAgNDYsICAg
IDQ2LCAgICA0NiwgICAgNDYsICAgIDQ2LCAgICA0NiwgICAgNDYsICAgIDQ2LCAgICA0NiwKLSAg
ICAgIDQ2LCAgICA0NiwgICAgNDYsICAgLTExLCAgICA4NSwgICAxMDEsICAgMTE2LCAgIDEzMCwg
ICAxNDMsICAgMTU0LAotICAgICAxNTQsICAgLTEwLCAgIC0xMCwgICAtMTAsICAgLTEwLCAgICAz
NywgICAgMzcsICAgIDMxLCAgICAzMSwgICAtMTEsCi0gICAgIC0xMSwgICAtMTEKKyAgICAgIDMx
LCAgIC0xMiwgICAtMTIsICAgIDMxLCAgICAzMSwgICAgMzEsICAgIDMxLCAgICAzMSwgICAgNTEs
ICAgIDc2LAorICAgICAtMTIsICAgLTEyLCAgIC0xMiwgICAtMTIsICAgIDUzLCAgIC0xMiwgICAt
MTIsICAgLTEyLCAgICAzMSwgICAgMzEsCisgICAgICAzMSwgICAgMzEsICAgIDMxLCAgICAzMSwg
ICAgMzEsICAgIDMxLCAgICAzMSwgICAgMzEsICAgIDMxLCAgICAzMSwKKyAgICAgIDMxLCAgICAz
MSwgICAgMzEsICAgIDMxLCAgIC0xMiwgICAgMzEsICAgIDMxLCAgIDEyNCwgICAxMzgsICAgIDI2
LAorICAgICAxNDksICAgMTQ5LCAgIC0xMSwgICAtMTEsICAgLTExLCAgIC0xMSwgICAxNTQsICAg
MTU0LCAgICAtOCwgICAgLTgsCisgICAgIC0xMiwgICAtMTIsICAgLTEyLCAgICA5MywgICAxMDkK
IH07CiAKICAgLyogWVlERUZBQ1RbU1RBVEUtTlVNXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1i
ZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgpAQCAtNTQ2LDI0ICs1NTksMjQgQEAKICAgICAgbWVhbnMg
dGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5
eWRlZmFjdFtdID0KIHsKLSAgICAgICAwLCAgICAgMywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDIsICAgIDI1LAotICAgICAgMjQsICAgIDIyLCAgICAyMywg
ICAgIDAsICAgICAxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMiwKKyAgICAgIDI4LCAgICAyNywgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDEsICAg
ICA1LCAgICAgNywgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAyNiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAx
MCwKLSAgICAgICA5LCAgICAxNCwgICAgMTMsICAgIDEyLCAgICAxMSwgICAgMTYsICAgIDE1LCAg
ICAxOCwgICAgMTcsICAgIDIxLAotICAgICAgMjAsICAgIDE5CisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMjksICAgICAwLCAgICAgMCwgICAgIDksICAgIDEwLCAgICAxMSwKKyAg
ICAgIDEzLCAgICAxMiwgICAgMTcsICAgIDE2LCAgICAxNSwgICAgMTQsICAgIDE5LCAgICAxOCwg
ICAgMjEsICAgIDIwLAorICAgICAgMjQsICAgIDIzLCAgICAyMiwgICAgIDYsICAgICA4CiB9Owog
CiAgIC8qIFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDgg
eXlwZ290b1tdID0KIHsKLSAgICAgLTExLCAgIC0xMSwgICAgLTIKKyAgICAgLTEyLCAgIC0xMiwg
ICAgLTMsICAgLTEyLCAgIC0xMgogfTsKIAogICAvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICov
CiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDggeXlkZWZnb3RvW10gPQogewotICAgICAgLTEsICAg
ICA3LCAgICAgOAorICAgICAgLTEsICAgICA4LCAgICAgOSwgICAgMzUsICAgIDM2CiB9OwogCiAg
IC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dIC0tIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RB
VEUtTlVNLiAgSWYKQEAgLTU3MSw3NCArNTg0LDc0IEBACiAgICAgIG51bWJlciBpcyB0aGUgb3Bw
b3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiBzdGF0aWMgY29uc3Qg
eXl0eXBlX3VpbnQ4IHl5dGFibGVbXSA9CiB7Ci0gICAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAg
ICAzMiwgICAgMTQsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsCi0gICAgICA1MSwgICAgMTUsICAgIDE2LCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKLSAgICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgICAxLAot
ICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMx
LCAgICAzMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMiwgICAgIDMsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgNCwKLSAgICAgICA1LCAgICAgNiwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsCisgICAgICAzMiwgICAgMzMsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAorICAgICAgNTIsICAg
ICAwLCAgICA1MywgICAgNTQsICAgICAxLCAgICAgMiwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIDMzLCAgICAgMywKKyAgICAgICA0LCAgICAxNSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDUsICAgICA2LCAgICAgNywgICAgMTYsICAgIDE3LAorICAgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCisg
ICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgIDM0LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMTcsCisgICAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAorICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCisgICAgICAzMiwgICAg
MzMsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAg
ICAyMCwgICAgMjEsICAgIDIyLAogICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAg
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAxNywg
ICAgMTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKLSAgICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMTks
ICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAgICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMgorICAgICAgMzMs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsCisgICAgICAzMiwgICAgMzMsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MwogfTsKIAogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5Y2hlY2tbXSA9CiB7Ci0gICAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgIDAsICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwKLSAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgICAzLAotICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAxNywgICAgMTgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMywKLSAg
ICAgIDI0LCAgICAyNSwgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgIDExLAorICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAx
NiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLAorICAgICAgMzMsICAgIC0xLCAgICAzNSwgICAgMzYsICAgICAzLCAgICAgNCwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAxOCwKKyAgICAgIDE5LCAgICAg
MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDUsICAgICA2
LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDI3LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAorICAg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgIDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKKyAgICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgOSwgICAgMTAsICAgIDExLAogICAgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
Ci0gICAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwKLSAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCi0gICAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgIDgsICAgICA5LAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwg
ICAgMjEsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwKLSAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMTEsICAgIDEy
LCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMQorICAgICAgMjIsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMgogfTsKIAogICAvKiBZWVNUT1NbU1RBVEUtTlVNXSAtLSBU
aGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwogICAgICBzeW1ib2wgb2Ygc3Rh
dGUgU1RBVEUtTlVNLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQog
ewotICAgICAgIDAsICAgICAzLCAgICAxNywgICAgMTgsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI4LCAgICAyOSwgICAgMjksCi0gICAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgIDAs
ICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAgICAwLCAgICAgMywgICAg
IDQsICAgIDE4LCAgICAxOSwgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjksICAgIDMwLAorICAg
ICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAsICAgIDMwLCAgICAgMCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsCiAgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKLSAgICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDI2LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LAotICAgICAgMjks
ICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwg
ICAgMjksCi0gICAgICAyOSwgICAgMjkKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAyNywgICAgMzEsICAgIDMyLCAgICAzMCwgICAgMzAsICAgIDMwLAorICAgICAgMzAsICAgIDMw
LCAgICAzMCwgICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAs
CisgICAgICAzMCwgICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAKIH07CiAKICAgLyogWVlSMVtZ
WU5dIC0tIFN5bWJvbCBudW1iZXIgb2Ygc3ltYm9sIHRoYXQgcnVsZSBZWU4gZGVyaXZlcy4gICov
CiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7Ci0gICAgICAgMCwgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwK
LSAgICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAgICAy
OSwgICAgMjksICAgIDI5LAotICAgICAgMjksICAgIDI5LCAgICAyOSwgICAgMjksICAgIDI5LCAg
ICAyOSwgICAgMjkKKyAgICAgICAwLCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMCwgICAgMzEs
ICAgIDMwLCAgICAzMiwgICAgMzAsICAgIDMwLAorICAgICAgMzAsICAgIDMwLCAgICAzMCwgICAg
MzAsICAgIDMwLCAgICAzMCwgICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAsCisgICAgICAzMCwg
ICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAsICAgIDMwLCAgICAzMCwgICAgMzAsICAgIDMwLCAg
ICAzMAogfTsKIAogICAvKiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIHJp
Z2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4
IHl5cjJbXSA9CiB7Ci0gICAgICAgMCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAz
LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywKKyAgICAgICAwLCAgICAgMiwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDAsICAgICA0LCAgICAgMCwgICAgIDQsICAgICAzLAogICAgICAgIDMs
ICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywg
ICAgIDMsCi0gICAgICAgMywgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MworICAgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDMKIH07CiAKIApAQCAtMTMzMiw3ICsxMzQ1LDE1IEBACiAgIGNhc2Ug
NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIHx8ICh5eXZzcFswXSk7
CisgICAgICAgIGlmICghY29udGV4dC0+aXNJZ25vcmluZ0Vycm9ycygpKQorICAgICAgICB7Cisg
ICAgICAgICAgICAvLyBUaGlzIHJ1bGUgc2hvdWxkIGJlIGFwcGxpZWQgcmlnaHQgYWZ0ZXIgdGhl
IHRva2VuIGlzIGxleGVkLCBzbyB3ZSBjYW4KKyAgICAgICAgICAgIC8vIHJlZmVyIHRvIGNvbnRl
eHQtPnRva2VuIGluIHRoZSBlcnJvciBtZXNzYWdlLgorICAgICAgICAgICAgY29udGV4dC0+ZGlh
Z25vc3RpY3MtPnJlcG9ydChjb250ZXh0LT5lcnJvclNldHRpbmdzLnVuZXhwZWN0ZWRJZGVudGlm
aWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT50
b2tlbi0+bG9jYXRpb24sIGNvbnRleHQtPnRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICooY29u
dGV4dC0+dmFsaWQpID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFswXSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0xMzQwLDcgKzEzNjEsMTUgQEAKICAgY2Fz
ZSA1OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJiYgKHl5dnNwWzBd
KTsKKyAgICAgICAgaWYgKCh5eXZzcFstMV0pICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIElnbm9yZSBlcnJvcnMgaW4gdGhlIHNob3J0LWNpcmN1aXRlZCBwYXJ0IG9mIHRoZSBleHBy
ZXNzaW9uLgorICAgICAgICAgICAgLy8gRVNTTDMuMDAgc2VjdGlvbiAzLjQ6CisgICAgICAgICAg
ICAvLyBJZiBhbiBvcGVyYW5kIGlzIG5vdCBldmFsdWF0ZWQsIHRoZSBwcmVzZW5jZSBvZiB1bmRl
ZmluZWQgaWRlbnRpZmllcnMKKyAgICAgICAgICAgIC8vIGluIHRoZSBvcGVyYW5kIHdpbGwgbm90
IGNhdXNlIGFuIGVycm9yLgorICAgICAgICAgICAgLy8gVW5ldmFsdWF0ZWQgZGl2aXNpb24gYnkg
emVybyBzaG91bGQgbm90IGNhdXNlIGFuIGVycm9yIGVpdGhlci4KKyAgICAgICAgICAgIGNvbnRl
eHQtPnN0YXJ0SWdub3JlRXJyb3JzKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBicmVhazsK
QEAgLTEzNDgsNyArMTM3NywxNSBAQAogICBjYXNlIDY6CiAKICAgICB7Ci0gICAgICAgICh5eXZh
bCkgPSAoeXl2c3BbLTJdKSB8ICh5eXZzcFswXSk7CisgICAgICAgIGlmICgoeXl2c3BbLTNdKSAh
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5lbmRJZ25vcmVFcnJvcnMoKTsK
KyAgICAgICAgICAgICh5eXZhbCkgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPigxKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
LTNdKSB8fCAoeXl2c3BbMF0pOworICAgICAgICB9CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0x
MzU2LDcgKzEzOTMsMTUgQEAKICAgY2FzZSA3OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWy0yXSkgXiAoeXl2c3BbMF0pOworICAgICAgICBpZiAoKHl5dnNwWy0xXSkgPT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gSWdub3JlIGVycm9ycyBpbiB0aGUgc2hvcnQtY2ly
Y3VpdGVkIHBhcnQgb2YgdGhlIGV4cHJlc3Npb24uCisgICAgICAgICAgICAvLyBFU1NMMy4wMCBz
ZWN0aW9uIDMuNDoKKyAgICAgICAgICAgIC8vIElmIGFuIG9wZXJhbmQgaXMgbm90IGV2YWx1YXRl
ZCwgdGhlIHByZXNlbmNlIG9mIHVuZGVmaW5lZCBpZGVudGlmaWVycworICAgICAgICAgICAgLy8g
aW4gdGhlIG9wZXJhbmQgd2lsbCBub3QgY2F1c2UgYW4gZXJyb3IuCisgICAgICAgICAgICAvLyBV
bmV2YWx1YXRlZCBkaXZpc2lvbiBieSB6ZXJvIHNob3VsZCBub3QgY2F1c2UgYW4gZXJyb3IgZWl0
aGVyLgorICAgICAgICAgICAgY29udGV4dC0+c3RhcnRJZ25vcmVFcnJvcnMoKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMTM2NCw3ICsxNDA5LDE1IEBACiAgIGNhc2UgODoK
IAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pICYgKHl5dnNwWzBdKTsKKyAg
ICAgICAgaWYgKCh5eXZzcFstM10pID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRl
eHQtPmVuZElnbm9yZUVycm9ycygpOworICAgICAgICAgICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0
PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFstM10pICYmICh5eXZzcFswXSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBicmVhazsKQEAgLTEzNzIsNyArMTQyNSw3IEBACiAgIGNhc2UgOToKIAogICAg
IHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pICE9ICh5eXZzcFswXSk7CisgICAgICAg
ICh5eXZhbCkgPSAoeXl2c3BbLTJdKSB8ICh5eXZzcFswXSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0xMzgwLDcgKzE0MzMsNyBAQAogICBjYXNlIDEwOgogCiAgICAgewotICAgICAgICAoeXl2
YWwpID0gKHl5dnNwWy0yXSkgPT0gKHl5dnNwWzBdKTsKKyAgICAgICAgKHl5dmFsKSA9ICh5eXZz
cFstMl0pIF4gKHl5dnNwWzBdKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTEzODgsNyArMTQ0
MSw3IEBACiAgIGNhc2UgMTE6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJd
KSA+PSAoeXl2c3BbMF0pOworICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJiAoeXl2c3Bb
MF0pOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMTM5Niw3ICsxNDQ5LDcgQEAKICAgY2FzZSAx
MjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pIDw9ICh5eXZzcFswXSk7
CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAhPSAoeXl2c3BbMF0pOwogICAgIH0KIAog
ICAgIGJyZWFrOwpAQCAtMTQwNCw3ICsxNDU3LDcgQEAKICAgY2FzZSAxMzoKIAogICAgIHsKLSAg
ICAgICAgKHl5dmFsKSA9ICh5eXZzcFstMl0pID4gKHl5dnNwWzBdKTsKKyAgICAgICAgKHl5dmFs
KSA9ICh5eXZzcFstMl0pID09ICh5eXZzcFswXSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0x
NDEyLDcgKzE0NjUsNyBAQAogICBjYXNlIDE0OgogCiAgICAgewotICAgICAgICAoeXl2YWwpID0g
KHl5dnNwWy0yXSkgPCAoeXl2c3BbMF0pOworICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkg
Pj0gKHl5dnNwWzBdKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTE0MjAsNyArMTQ3Myw3IEBA
CiAgIGNhc2UgMTU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA+PiAo
eXl2c3BbMF0pOworICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPD0gKHl5dnNwWzBdKTsK
ICAgICB9CiAKICAgICBicmVhazsKQEAgLTE0MjgsNyArMTQ4MSw3IEBACiAgIGNhc2UgMTY6CiAK
ICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA8PCAoeXl2c3BbMF0pOworICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgPiAoeXl2c3BbMF0pOwogICAgIH0KIAogICAgIGJy
ZWFrOwpAQCAtMTQzNiw3ICsxNDg5LDcgQEAKICAgY2FzZSAxNzoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFstMl0pIC0gKHl5dnNwWzBdKTsKKyAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFstMl0pIDwgKHl5dnNwWzBdKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTE0NDQsNyAr
MTQ5Nyw3IEBACiAgIGNhc2UgMTg6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbCkgPSAoeXl2c3Bb
LTJdKSArICh5eXZzcFswXSk7CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSA+PiAoeXl2
c3BbMF0pOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMTQ1Miw0MCArMTUwNSw3OCBAQAogICBj
YXNlIDE5OgogCiAgICAgewotICAgICAgICBpZiAoKHl5dnNwWzBdKSA9PSAwKSB7Ci0gICAgICAg
ICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOwotICAgICAgICAgICAgc3RyZWFtIDw8ICh5
eXZzcFstMl0pIDw8ICIgJSAiIDw8ICh5eXZzcFswXSk7Ci0gICAgICAgICAgICBzdGQ6OnN0cmlu
ZyB0ZXh0ID0gc3RyZWFtLnN0cigpOwotICAgICAgICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3Mt
PnJlcG9ydChwcDo6RGlhZ25vc3RpY3M6OlBQX0RJVklTSU9OX0JZX1pFUk8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnRva2VuLT5sb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigpKTsK
LSAgICAgICAgICAgIFlZQUJPUlQ7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICh5eXZhbCkg
PSAoeXl2c3BbLTJdKSA8PCAoeXl2c3BbMF0pOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNh
c2UgMjA6CisKKyAgICB7CisgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAtICh5eXZzcFsw
XSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMToKKworICAgIHsKKyAgICAgICAg
KHl5dmFsKSA9ICh5eXZzcFstMl0pICsgKHl5dnNwWzBdKTsKKyAgICB9CisKKyAgICBicmVhazsK
KworICBjYXNlIDIyOgorCisgICAgeworICAgICAgICBpZiAoKHl5dnNwWzBdKSA9PSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlzSWdub3JpbmdFcnJvcnMoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOwor
ICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAoeXl2c3BbLTJdKSA8PCAiICUgIiA8PCAoeXl2c3Bb
MF0pOworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHQgPSBzdHJlYW0uc3RyKCk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChwcDo6RGlhZ25vc3Rp
Y3M6OlBQX0RJVklTSU9OX0JZX1pFUk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgICooY29udGV4dC0+dmFsaWQpID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAoeXl2YWwpID0gc3RhdGljX2Nhc3Q8WVlTVFlQRT4oMCk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7CiAgICAgICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJSAoeXl2
c3BbMF0pOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDoKKyAg
Y2FzZSAyMzoKIAogICAgIHsKLSAgICAgICAgaWYgKCh5eXZzcFswXSkgPT0gMCkgewotICAgICAg
ICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICAgICAgICAgIHN0cmVhbSA8PCAo
eXl2c3BbLTJdKSA8PCAiIC8gIiA8PCAoeXl2c3BbMF0pOwotICAgICAgICAgICAgc3RkOjpzdHJp
bmcgdGV4dCA9IHN0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRpYWdub3N0aWNz
LT5yZXBvcnQocHA6OkRpYWdub3N0aWNzOjpQUF9ESVZJU0lPTl9CWV9aRVJPLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQuY19zdHIoKSk7
Ci0gICAgICAgICAgICBZWUFCT1JUOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoKHl5
dnNwWzBdKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmlzSWdu
b3JpbmdFcnJvcnMoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6Om9zdHJp
bmdzdHJlYW0gc3RyZWFtOworICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAoeXl2c3BbLTJdKSA8
PCAiIC8gIiA8PCAoeXl2c3BbMF0pOworICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHQg
PSBzdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJl
cG9ydChwcDo6RGlhZ25vc3RpY3M6OlBQX0RJVklTSU9OX0JZX1pFUk8sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnRva2VuLT5sb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICAqKGNvbnRleHQtPnZhbGlkKSA9IGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgKHl5dmFsKSA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewogICAgICAgICAgICAgKHl5dmFsKSA9ICh5
eXZzcFstMl0pIC8gKHl5dnNwWzBdKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMjE6CisgIGNhc2UgMjQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAoeXl2
c3BbLTJdKSAqICh5eXZzcFswXSk7CkBAIC0xNDkzLDcgKzE1ODQsNyBAQAogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyMjoKKyAgY2FzZSAyNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICEg
KHl5dnNwWzBdKTsKQEAgLTE1MDEsNyArMTU5Miw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNl
IDIzOgorICBjYXNlIDI2OgogCiAgICAgewogICAgICAgICAoeXl2YWwpID0gfiAoeXl2c3BbMF0p
OwpAQCAtMTUwOSw3ICsxNjAwLDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQ6CisgIGNh
c2UgMjc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbCkgPSAtICh5eXZzcFswXSk7CkBAIC0xNTE3
LDcgKzE2MDgsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNToKKyAgY2FzZSAyODoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsKSA9ICsgKHl5dnNwWzBdKTsKQEAgLTE1MjUsNyArMTYxNiw3
IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2OgorICBjYXNlIDI5OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwpID0gKHl5dnNwWy0xXSk7CkBAIC0xNzY3LDIyICsxODU4LDM1IEBACiAKIGlu
dCB5eWxleChZWVNUWVBFICpsdmFscCwgQ29udGV4dCAqY29udGV4dCkKIHsKKyAgICBwcDo6VG9r
ZW4gKnRva2VuID0gY29udGV4dC0+dG9rZW47CisgICAgaWYgKCFjb250ZXh0LT5wYXJzZVByZXNl
dFRva2VuKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+bGV4ZXItPmxleCh0b2tlbik7CisgICAg
fQorICAgIGNvbnRleHQtPnBhcnNlUHJlc2V0VG9rZW4gPSBmYWxzZTsKKwogICAgIGludCB0eXBl
ID0gMDsKIAotICAgIHBwOjpUb2tlbiAqdG9rZW4gPSBjb250ZXh0LT50b2tlbjsKICAgICBzd2l0
Y2ggKHRva2VuLT50eXBlKQogICAgIHsKICAgICAgIGNhc2UgcHA6OlRva2VuOjpDT05TVF9JTlQ6
IHsKICAgICAgICAgdW5zaWduZWQgaW50IHZhbCA9IDA7Ci0gICAgICAgIGlmICghdG9rZW4tPnVW
YWx1ZSgmdmFsKSkKKyAgICAgICAgaW50IHRlc3RWYWwgPSAwOworICAgICAgICBpZiAoIXRva2Vu
LT51VmFsdWUoJnZhbCkgfHwgKCF0b2tlbi0+aVZhbHVlKCZ0ZXN0VmFsKSAmJgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yU2V0dGluZ3MuaW50ZWdl
ckxpdGVyYWxzTXVzdEZpdDMyQml0U2lnbmVkUmFuZ2UpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBjb250ZXh0LT5kaWFnbm9zdGljcy0+cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6UFBfSU5URUdF
Ul9PVkVSRkxPVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAqKGNvbnRleHQtPnZhbGlk
KSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgICpsdmFscCA9IHN0YXRpY19jYXN0PFlZU1RZ
UEU+KHZhbCk7CiAgICAgICAgIHR5cGUgPSBUT0tfQ09OU1RfSU5UOwogICAgICAgICBicmVhazsK
ICAgICAgIH0KKyAgICAgIGNhc2UgcHA6OlRva2VuOjpJREVOVElGSUVSOgorICAgICAgICAqbHZh
bHAgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPigtMSk7CisgICAgICAgIHR5cGUgPSBUT0tfSURFTlRJ
RklFUjsKKyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIHBwOjpUb2tlbjo6T1BfT1I6CiAgICAg
ICAgIHR5cGUgPSBUT0tfT1BfT1I7CiAgICAgICAgIGJyZWFrOwpAQCAtMTgyOCwxMCArMTkzMiw2
IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQg
dG9rZW4gaWYgdGhlIGN1cnJlbnQgb25lIGlzIHZhbGlkLgotICAgIGlmICh0eXBlICE9IDApCi0g
ICAgICAgIGNvbnRleHQtPmxleGVyLT5sZXgodG9rZW4pOwotCiAgICAgcmV0dXJuIHR5cGU7CiB9
CiAKQEAgLTE4NTAsMTMgKzE5NTAsMjEgQEAKIHsKIH0KIAotYm9vbCBFeHByZXNzaW9uUGFyc2Vy
OjpwYXJzZShUb2tlbiAqdG9rZW4sIGludCAqcmVzdWx0KQorYm9vbCBFeHByZXNzaW9uUGFyc2Vy
OjpwYXJzZShUb2tlbiAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBhcnNlUHJlc2V0VG9r
ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVycm9yU2V0dGluZ3MgJmVy
cm9yU2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKnZhbGlkKQog
ewogICAgIENvbnRleHQgY29udGV4dDsKICAgICBjb250ZXh0LmRpYWdub3N0aWNzID0gbURpYWdu
b3N0aWNzOwogICAgIGNvbnRleHQubGV4ZXIgPSBtTGV4ZXI7CiAgICAgY29udGV4dC50b2tlbiA9
IHRva2VuOwogICAgIGNvbnRleHQucmVzdWx0ID0gcmVzdWx0OworICAgIGNvbnRleHQuaWdub3Jl
RXJyb3JzID0gMDsKKyAgICBjb250ZXh0LnBhcnNlUHJlc2V0VG9rZW4gPSBwYXJzZVByZXNldFRv
a2VuOworICAgIGNvbnRleHQuZXJyb3JTZXR0aW5ncyAgICA9IGVycm9yU2V0dGluZ3M7CisgICAg
Y29udGV4dC52YWxpZCAgICAgICAgICAgID0gdmFsaWQ7CiAgICAgaW50IHJldCA9IHl5cGFyc2Uo
JmNvbnRleHQpOwogICAgIHN3aXRjaCAocmV0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvRXhwcmVzc2lvblBhcnNlci5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNywyMSArNywzMSBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQ
Uk9DRVNTT1JfRVhQUkVTU0lPTlBBUlNFUl9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNT
T1JfRVhQUkVTU0lPTlBBUlNFUl9IXwogCisjaW5jbHVkZSAiRGlhZ25vc3RpY3NCYXNlLmgiCiAj
aW5jbHVkZSAicHBfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHBwCiB7CiAKLWNsYXNzIERpYWdub3N0
aWNzOwogY2xhc3MgTGV4ZXI7CiBzdHJ1Y3QgVG9rZW47CiAKIGNsYXNzIEV4cHJlc3Npb25QYXJz
ZXIKIHsKICAgcHVibGljOgorICAgIHN0cnVjdCBFcnJvclNldHRpbmdzCisgICAgeworICAgICAg
ICBEaWFnbm9zdGljczo6SUQgdW5leHBlY3RlZElkZW50aWZpZXI7CisgICAgICAgIGJvb2wgaW50
ZWdlckxpdGVyYWxzTXVzdEZpdDMyQml0U2lnbmVkUmFuZ2U7CisgICAgfTsKKwogICAgIEV4cHJl
c3Npb25QYXJzZXIoTGV4ZXIgKmxleGVyLCBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOwogCi0g
ICAgYm9vbCBwYXJzZShUb2tlbiAqdG9rZW4sIGludCAqcmVzdWx0KTsKKyAgICBib29sIHBhcnNl
KFRva2VuICp0b2tlbiwKKyAgICAgICAgICAgICAgIGludCAqcmVzdWx0LAorICAgICAgICAgICAg
ICAgYm9vbCBwYXJzZVByZXNldFRva2VuLAorICAgICAgICAgICAgICAgY29uc3QgRXJyb3JTZXR0
aW5ncyAmZXJyb3JTZXR0aW5ncywKKyAgICAgICAgICAgICAgIGJvb2wgKnZhbGlkKTsKIAogICBw
cml2YXRlOgogICAgIFBQX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihFeHByZXNzaW9uUGFyc2Vy
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvRXhwcmVzc2lvblBhcnNlci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55CShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueQkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBA
QAogI2luY2x1ZGUgPHN0ZGludC5oPgogdHlwZWRlZiBpbnRtYXhfdCBZWVNUWVBFOwogI2VuZGlm
ICAvLyBfTVNDX1ZFUgorCiAjZGVmaW5lIFlZRU5BQkxFX05MUyAwCiAjZGVmaW5lIFlZTFRZUEVf
SVNfVFJJVklBTCAxCiAjZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCkBAIC02NCw2ICs2NSwx
NyBAQAogICAgIHBwOjpMZXhlciogbGV4ZXI7CiAgICAgcHA6OlRva2VuKiB0b2tlbjsKICAgICBp
bnQqIHJlc3VsdDsKKyAgICBib29sIHBhcnNlUHJlc2V0VG9rZW47CisKKyAgICBwcDo6RXhwcmVz
c2lvblBhcnNlcjo6RXJyb3JTZXR0aW5ncyBlcnJvclNldHRpbmdzOworICAgIGJvb2wgKnZhbGlk
OworCisgICAgdm9pZCBzdGFydElnbm9yZUVycm9ycygpIHsgKytpZ25vcmVFcnJvcnM7IH0KKyAg
ICB2b2lkIGVuZElnbm9yZUVycm9ycygpIHsgLS1pZ25vcmVFcnJvcnM7IH0KKworICAgIGJvb2wg
aXNJZ25vcmluZ0Vycm9ycygpIHsgcmV0dXJuIGlnbm9yZUVycm9ycyA+IDA7IH0KKworICAgIGlu
dCBpZ25vcmVFcnJvcnM7CiB9OwogfSAgLy8gbmFtZXNwYWNlCiAlfQpAQCAtNzksNiArOTEsNyBA
QAogJX0KIAogJXRva2VuIFRPS19DT05TVF9JTlQKKyV0b2tlbiBUT0tfSURFTlRJRklFUgogJWxl
ZnQgVE9LX09QX09SCiAlbGVmdCBUT0tfT1BfQU5ECiAlbGVmdCAnfCcKQEAgLTEwMiwxMiArMTE1
LDU5IEBACiAKIGV4cHJlc3Npb24KICAgICA6IFRPS19DT05TVF9JTlQKLSAgICB8IGV4cHJlc3Np
b24gVE9LX09QX09SIGV4cHJlc3Npb24gewotICAgICAgICAkJCA9ICQxIHx8ICQzOworICAgIHwg
VE9LX0lERU5USUZJRVIgeworICAgICAgICBpZiAoIWNvbnRleHQtPmlzSWdub3JpbmdFcnJvcnMo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBydWxlIHNob3VsZCBiZSBhcHBsaWVk
IHJpZ2h0IGFmdGVyIHRoZSB0b2tlbiBpcyBsZXhlZCwgc28gd2UgY2FuCisgICAgICAgICAgICAv
LyByZWZlciB0byBjb250ZXh0LT50b2tlbiBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICAgICAg
ICAgIGNvbnRleHQtPmRpYWdub3N0aWNzLT5yZXBvcnQoY29udGV4dC0+ZXJyb3JTZXR0aW5ncy51
bmV4cGVjdGVkSWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLCBjb250ZXh0LT50b2tlbi0+dGV4dCk7Cisg
ICAgICAgICAgICAqKGNvbnRleHQtPnZhbGlkKSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAg
ICQkID0gJDE7CiAgICAgfQotICAgIHwgZXhwcmVzc2lvbiBUT0tfT1BfQU5EIGV4cHJlc3Npb24g
ewotICAgICAgICAkJCA9ICQxICYmICQzOworICAgIHwgZXhwcmVzc2lvbiBUT0tfT1BfT1Igewor
ICAgICAgICBpZiAoJDEgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSWdub3JlIGVy
cm9ycyBpbiB0aGUgc2hvcnQtY2lyY3VpdGVkIHBhcnQgb2YgdGhlIGV4cHJlc3Npb24uCisgICAg
ICAgICAgICAvLyBFU1NMMy4wMCBzZWN0aW9uIDMuNDoKKyAgICAgICAgICAgIC8vIElmIGFuIG9w
ZXJhbmQgaXMgbm90IGV2YWx1YXRlZCwgdGhlIHByZXNlbmNlIG9mIHVuZGVmaW5lZCBpZGVudGlm
aWVycworICAgICAgICAgICAgLy8gaW4gdGhlIG9wZXJhbmQgd2lsbCBub3QgY2F1c2UgYW4gZXJy
b3IuCisgICAgICAgICAgICAvLyBVbmV2YWx1YXRlZCBkaXZpc2lvbiBieSB6ZXJvIHNob3VsZCBu
b3QgY2F1c2UgYW4gZXJyb3IgZWl0aGVyLgorICAgICAgICAgICAgY29udGV4dC0+c3RhcnRJZ25v
cmVFcnJvcnMoKTsKKyAgICAgICAgfQorICAgIH0gZXhwcmVzc2lvbiB7CisgICAgICAgIGlmICgk
MSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5lbmRJZ25vcmVFcnJvcnMo
KTsKKyAgICAgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8WVlTVFlQRT4oMSk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAkJCA9ICQxIHx8ICQ0OworICAg
ICAgICB9CiAgICAgfQorICAgIHwgZXhwcmVzc2lvbiBUT0tfT1BfQU5EIHsKKyAgICAgICAgaWYg
KCQxID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIElnbm9yZSBlcnJvcnMgaW4gdGhl
IHNob3J0LWNpcmN1aXRlZCBwYXJ0IG9mIHRoZSBleHByZXNzaW9uLgorICAgICAgICAgICAgLy8g
RVNTTDMuMDAgc2VjdGlvbiAzLjQ6CisgICAgICAgICAgICAvLyBJZiBhbiBvcGVyYW5kIGlzIG5v
dCBldmFsdWF0ZWQsIHRoZSBwcmVzZW5jZSBvZiB1bmRlZmluZWQgaWRlbnRpZmllcnMKKyAgICAg
ICAgICAgIC8vIGluIHRoZSBvcGVyYW5kIHdpbGwgbm90IGNhdXNlIGFuIGVycm9yLgorICAgICAg
ICAgICAgLy8gVW5ldmFsdWF0ZWQgZGl2aXNpb24gYnkgemVybyBzaG91bGQgbm90IGNhdXNlIGFu
IGVycm9yIGVpdGhlci4KKyAgICAgICAgICAgIGNvbnRleHQtPnN0YXJ0SWdub3JlRXJyb3JzKCk7
CisgICAgICAgIH0KKyAgICB9IGV4cHJlc3Npb24geworICAgICAgICBpZiAoJDEgPT0gMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+ZW5kSWdub3JlRXJyb3JzKCk7CisgICAgICAg
ICAgICAkJCA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgJCQgPSAkMSAmJiAkNDsKKyAgICAgICAgfQorICAg
IH0KICAgICB8IGV4cHJlc3Npb24gJ3wnIGV4cHJlc3Npb24gewogICAgICAgICAkJCA9ICQxIHwg
JDM7CiAgICAgfQpAQCAtMTQ4LDI4ICsyMDgsNDIgQEAKICAgICAgICAgJCQgPSAkMSArICQzOwog
ICAgIH0KICAgICB8IGV4cHJlc3Npb24gJyUnIGV4cHJlc3Npb24gewotICAgICAgICBpZiAoJDMg
PT0gMCkgewotICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICAgICAg
ICAgIHN0cmVhbSA8PCAkMSA8PCAiICUgIiA8PCAkMzsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IHRleHQgPSBzdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kaWFnbm9zdGljcy0+
cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6UFBfRElWSVNJT05fQllfWkVSTywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+dG9rZW4tPmxvY2F0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOwot
ICAgICAgICAgICAgWVlBQk9SVDsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCQzID09
IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+aXNJZ25vcmluZ0Vycm9y
cygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBz
dHJlYW07CisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICQxIDw8ICIgJSAiIDw8ICQzOworICAg
ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHRleHQgPSBzdHJlYW0uc3RyKCk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChwcDo6RGlhZ25vc3RpY3M6OlBQX0RJ
VklTSU9OX0JZX1pFUk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0LmNfc3RyKCkpOworICAgICAgICAgICAgICAgICooY29u
dGV4dC0+dmFsaWQpID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkJCA9IHN0
YXRpY19jYXN0PFlZU1RZUEU+KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
ewogICAgICAgICAgICAgJCQgPSAkMSAlICQzOwogICAgICAgICB9CiAgICAgfQogICAgIHwgZXhw
cmVzc2lvbiAnLycgZXhwcmVzc2lvbiB7Ci0gICAgICAgIGlmICgkMyA9PSAwKSB7Ci0gICAgICAg
ICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3RyZWFtOwotICAgICAgICAgICAgc3RyZWFtIDw8ICQx
IDw8ICIgLyAiIDw8ICQzOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgdGV4dCA9IHN0cmVhbS5z
dHIoKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRpYWdub3N0aWNzLT5yZXBvcnQocHA6OkRpYWdu
b3N0aWNzOjpQUF9ESVZJU0lPTl9CWV9aRVJPLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT50b2tlbi0+bG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQuY19zdHIoKSk7Ci0gICAgICAgICAgICBZWUFC
T1JUOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAoJDMgPT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5pc0lnbm9yaW5nRXJyb3JzKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKKyAgICAgICAg
ICAgICAgICBzdHJlYW0gPDwgJDEgPDwgIiAvICIgPDwgJDM7CisgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgdGV4dCA9IHN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5k
aWFnbm9zdGljcy0+cmVwb3J0KHBwOjpEaWFnbm9zdGljczo6UFBfRElWSVNJT05fQllfWkVSTywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+dG9r
ZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXh0LmNfc3RyKCkpOworICAgICAgICAgICAgICAgICooY29udGV4dC0+dmFsaWQpID0gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkJCA9IHN0YXRpY19jYXN0PFlZU1RZUEU+
KDApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewogICAgICAgICAgICAgJCQg
PSAkMSAvICQzOwogICAgICAgICB9CiAgICAgfQpAQCAtMTk3LDIyICsyNzEsMzUgQEAKIAogaW50
IHl5bGV4KFlZU1RZUEUgKmx2YWxwLCBDb250ZXh0ICpjb250ZXh0KQogeworICAgIHBwOjpUb2tl
biAqdG9rZW4gPSBjb250ZXh0LT50b2tlbjsKKyAgICBpZiAoIWNvbnRleHQtPnBhcnNlUHJlc2V0
VG9rZW4pCisgICAgeworICAgICAgICBjb250ZXh0LT5sZXhlci0+bGV4KHRva2VuKTsKKyAgICB9
CisgICAgY29udGV4dC0+cGFyc2VQcmVzZXRUb2tlbiA9IGZhbHNlOworCiAgICAgaW50IHR5cGUg
PSAwOwogCi0gICAgcHA6OlRva2VuICp0b2tlbiA9IGNvbnRleHQtPnRva2VuOwogICAgIHN3aXRj
aCAodG9rZW4tPnR5cGUpCiAgICAgewogICAgICAgY2FzZSBwcDo6VG9rZW46OkNPTlNUX0lOVDog
ewogICAgICAgICB1bnNpZ25lZCBpbnQgdmFsID0gMDsKLSAgICAgICAgaWYgKCF0b2tlbi0+dVZh
bHVlKCZ2YWwpKQorICAgICAgICBpbnQgdGVzdFZhbCA9IDA7CisgICAgICAgIGlmICghdG9rZW4t
PnVWYWx1ZSgmdmFsKSB8fCAoIXRva2VuLT5pVmFsdWUoJnRlc3RWYWwpICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3JTZXR0aW5ncy5pbnRlZ2Vy
TGl0ZXJhbHNNdXN0Rml0MzJCaXRTaWduZWRSYW5nZSkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGNvbnRleHQtPmRpYWdub3N0aWNzLT5yZXBvcnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VS
X09WRVJGTE9XLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tl
bi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICooY29udGV4dC0+dmFsaWQp
ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgKmx2YWxwID0gc3RhdGljX2Nhc3Q8WVlTVFlQ
RT4odmFsKTsKICAgICAgICAgdHlwZSA9IFRPS19DT05TVF9JTlQ7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgfQorICAgICAgY2FzZSBwcDo6VG9rZW46OklERU5USUZJRVI6CisgICAgICAgICpsdmFs
cCA9IHN0YXRpY19jYXN0PFlZU1RZUEU+KC0xKTsKKyAgICAgICAgdHlwZSA9IFRPS19JREVOVElG
SUVSOworICAgICAgICBicmVhazsKICAgICAgIGNhc2UgcHA6OlRva2VuOjpPUF9PUjoKICAgICAg
ICAgdHlwZSA9IFRPS19PUF9PUjsKICAgICAgICAgYnJlYWs7CkBAIC0yNTgsMTAgKzM0NSw2IEBA
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgdG9r
ZW4gaWYgdGhlIGN1cnJlbnQgb25lIGlzIHZhbGlkLgotICAgIGlmICh0eXBlICE9IDApCi0gICAg
ICAgIGNvbnRleHQtPmxleGVyLT5sZXgodG9rZW4pOwotCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAK
QEAgLTI4MCwxMyArMzYzLDIxIEBACiB7CiB9CiAKLWJvb2wgRXhwcmVzc2lvblBhcnNlcjo6cGFy
c2UoVG9rZW4gKnRva2VuLCBpbnQgKnJlc3VsdCkKK2Jvb2wgRXhwcmVzc2lvblBhcnNlcjo6cGFy
c2UoVG9rZW4gKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnJlc3Vs
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwYXJzZVByZXNldFRva2VuLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFcnJvclNldHRpbmdzICZlcnJvclNl
dHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICp2YWxpZCkKIHsKICAg
ICBDb250ZXh0IGNvbnRleHQ7CiAgICAgY29udGV4dC5kaWFnbm9zdGljcyA9IG1EaWFnbm9zdGlj
czsKICAgICBjb250ZXh0LmxleGVyID0gbUxleGVyOwogICAgIGNvbnRleHQudG9rZW4gPSB0b2tl
bjsKICAgICBjb250ZXh0LnJlc3VsdCA9IHJlc3VsdDsKKyAgICBjb250ZXh0Lmlnbm9yZUVycm9y
cyA9IDA7CisgICAgY29udGV4dC5wYXJzZVByZXNldFRva2VuID0gcGFyc2VQcmVzZXRUb2tlbjsK
KyAgICBjb250ZXh0LmVycm9yU2V0dGluZ3MgICAgPSBlcnJvclNldHRpbmdzOworICAgIGNvbnRl
eHQudmFsaWQgICAgICAgICAgICA9IHZhbGlkOwogICAgIGludCByZXQgPSB5eXBhcnNlKCZjb250
ZXh0KTsKICAgICBzd2l0Y2ggKHJldCkKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNw
cAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSw3
NSBAQAogICAgIH0KIH0KIAotc2l6ZV90IElucHV0OjpyZWFkKGNoYXIgKmJ1Ziwgc2l6ZV90IG1h
eFNpemUpCitjb25zdCBjaGFyICpJbnB1dDo6c2tpcENoYXIoKQogeworICAgIC8vIFRoaXMgZnVu
Y3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgaXMgYSBjaGFyYWN0ZXIgdG8g
c2tpcC4KKyAgICBhc3NlcnQobVJlYWRMb2MuY0luZGV4IDwgbUxlbmd0aFttUmVhZExvYy5zSW5k
ZXhdKTsKKyAgICArK21SZWFkTG9jLmNJbmRleDsKKyAgICBpZiAobVJlYWRMb2MuY0luZGV4ID09
IG1MZW5ndGhbbVJlYWRMb2Muc0luZGV4XSkKKyAgICB7CisgICAgICAgICsrbVJlYWRMb2Muc0lu
ZGV4OworICAgICAgICBtUmVhZExvYy5jSW5kZXggPSAwOworICAgIH0KKyAgICBpZiAobVJlYWRM
b2Muc0luZGV4ID49IG1Db3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKyAgICByZXR1cm4gbVN0cmluZ1ttUmVhZExvYy5zSW5kZXhdICsgbVJlYWRMb2MuY0luZGV4
OworfQorCitzaXplX3QgSW5wdXQ6OnJlYWQoY2hhciAqYnVmLCBzaXplX3QgbWF4U2l6ZSwgaW50
ICpsaW5lTm8pCit7CiAgICAgc2l6ZV90IG5SZWFkID0gMDsKLSAgICB3aGlsZSAoKG5SZWFkIDwg
bWF4U2l6ZSkgJiYgKG1SZWFkTG9jLnNJbmRleCA8IG1Db3VudCkpCisgICAgLy8gVGhlIHByZXZp
b3VzIGNhbGwgdG8gcmVhZCBtaWdodCBoYXZlIHN0b3BwZWQgY29weWluZyB0aGUgc3RyaW5nIHdo
ZW4gZW5jb3VudGVyaW5nIGEgbGluZQorICAgIC8vIGNvbnRpbnVhdGlvbi4gQ2hlY2sgZm9yIHRo
aXMgcG9zc2liaWxpdHkgZmlyc3QuCisgICAgaWYgKG1SZWFkTG9jLnNJbmRleCA8IG1Db3VudCAm
JiBtYXhTaXplID4gMCkKICAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKmMgPSBtU3RyaW5nW21S
ZWFkTG9jLnNJbmRleF0gKyBtUmVhZExvYy5jSW5kZXg7CisgICAgICAgIGlmICgoKmMpID09ICdc
XCcpCisgICAgICAgIHsKKyAgICAgICAgICAgIGMgPSBza2lwQ2hhcigpOworICAgICAgICAgICAg
aWYgKGMgIT0gbnVsbHB0ciAmJiAoKmMpID09ICdcbicpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgLy8gTGluZSBjb250aW51YXRpb24gb2YgYmFja3NsYXNoICsgbmV3bGluZS4KKyAg
ICAgICAgICAgICAgICBza2lwQ2hhcigpOworICAgICAgICAgICAgICAgICsrKCpsaW5lTm8pOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyAhPSBudWxscHRyICYmICgqYykg
PT0gJ1xyJykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBMaW5lIGNvbnRpbnVh
dGlvbi4gQ291bGQgYmUgYmFja3NsYXNoICsgJ1xyXG4nIG9yIGp1c3QgYmFja3NsYXNoICsgJ1xy
Jy4KKyAgICAgICAgICAgICAgICBjID0gc2tpcENoYXIoKTsKKyAgICAgICAgICAgICAgICBpZiAo
YyAhPSBudWxscHRyICYmICgqYykgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHNraXBDaGFyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICsrKCpsaW5lTm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIC8vIE5vdCBsaW5lIGNvbnRpbnVhdGlvbiwgc28gd3Jp
dGUgdGhlIHNraXBwZWQgYmFja3NsYXNoIHRvIGJ1Zi4KKyAgICAgICAgICAgICAgICAqYnVmID0g
J1xcJzsKKyAgICAgICAgICAgICAgICArK25SZWFkOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgc2l6ZV90IG1heFJlYWQgPSBtYXhTaXplOworICAgIHdoaWxlICgoblJl
YWQgPCBtYXhSZWFkKSAmJiAobVJlYWRMb2Muc0luZGV4IDwgbUNvdW50KSkKKyAgICB7CiAgICAg
ICAgIHNpemVfdCBzaXplID0gbUxlbmd0aFttUmVhZExvYy5zSW5kZXhdIC0gbVJlYWRMb2MuY0lu
ZGV4OwogICAgICAgICBzaXplID0gc3RkOjptaW4oc2l6ZSwgbWF4U2l6ZSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBTdG9wIGlmIGEgcG9zc2libGUgbGluZSBjb250aW51YXRpb24gaXMgZW5jb3VudGVyZWQuCisg
ICAgICAgICAgICAvLyBJdCB3aWxsIGJlIHByb2Nlc3NlZCBvbiB0aGUgbmV4dCBjYWxsIG9uIGlu
cHV0LCB3aGljaCBza2lwcyBpdAorICAgICAgICAgICAgLy8gYW5kIGluY3JlbWVudHMgbGluZSBu
dW1iZXIgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgaWYgKCoobVN0cmluZ1ttUmVhZExvYy5z
SW5kZXhdICsgbVJlYWRMb2MuY0luZGV4ICsgaSkgPT0gJ1xcJykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzaXplID0gaTsKKyAgICAgICAgICAgICAgICBtYXhSZWFkID0gblJlYWQg
KyBzaXplOyAgLy8gU3RvcCByZWFkaW5nIHJpZ2h0IGJlZm9yZSB0aGUgYmFja3NsYXNoLgorICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHN0ZDo6bWVtY3B5KGJ1ZiArIG5SZWFkLCBt
U3RyaW5nW21SZWFkTG9jLnNJbmRleF0gKyBtUmVhZExvYy5jSW5kZXgsIHNpemUpOwogICAgICAg
ICBuUmVhZCArPSBzaXplOwogICAgICAgICBtUmVhZExvYy5jSW5kZXggKz0gc2l6ZTsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0lucHV0LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQAogICAgICAgICByZXR1cm4gbUxlbmd0aFtpbmRleF07CiAgICAgfQog
Ci0gICAgc2l6ZV90IHJlYWQoY2hhciAqYnVmLCBzaXplX3QgbWF4U2l6ZSk7CisgICAgc2l6ZV90
IHJlYWQoY2hhciAqYnVmLCBzaXplX3QgbWF4U2l6ZSwgaW50ICpsaW5lTm8pOwogCiAgICAgc3Ry
dWN0IExvY2F0aW9uCiAgICAgewpAQCAtNDksNiArNDksMTAgQEAKICAgICBjb25zdCBMb2NhdGlv
biAmcmVhZExvYygpIGNvbnN0IHsgcmV0dXJuIG1SZWFkTG9jOyB9CiAKICAgcHJpdmF0ZToKKyAg
ICAvLyBTa2lwIGEgY2hhcmFjdGVyIGFuZCByZXR1cm4gdGhlIG5leHQgY2hhcmFjdGVyIGFmdGVy
IHRoZSBvbmUgdGhhdCB3YXMgc2tpcHBlZC4KKyAgICAvLyBSZXR1cm4gbnVsbHB0ciBpZiBkYXRh
IHJ1bnMgb3V0LgorICAgIGNvbnN0IGNoYXIgKnNraXBDaGFyKCk7CisKICAgICAvLyBJbnB1dC4K
ICAgICBzaXplX3QgbUNvdW50OwogICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqbVN0cmluZzsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFj
cm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvTWFjcm8uY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw2ICs2LDggQEAKIAogI2luY2x1ZGUgIk1hY3JvLmgiCiAKKyNpbmNsdWRl
IDxzc3RyZWFtPgorCiAjaW5jbHVkZSAiVG9rZW4uaCIKIAogbmFtZXNwYWNlIHBwCkBAIC0xOSw1
ICsyMSwyMyBAQAogICAgICAgICAgICAocmVwbGFjZW1lbnRzID09IG90aGVyLnJlcGxhY2VtZW50
cyk7CiB9CiAKK3ZvaWQgUHJlZGVmaW5lTWFjcm8oTWFjcm9TZXQgKm1hY3JvU2V0LCBjb25zdCBj
aGFyICpuYW1lLCBpbnQgdmFsdWUpCit7CisgICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsK
KyAgICBzdHJlYW0gPDwgdmFsdWU7CisKKyAgICBUb2tlbiB0b2tlbjsKKyAgICB0b2tlbi50eXBl
ID0gVG9rZW46OkNPTlNUX0lOVDsKKyAgICB0b2tlbi50ZXh0ID0gc3RyZWFtLnN0cigpOworCisg
ICAgTWFjcm8gbWFjcm87CisgICAgbWFjcm8ucHJlZGVmaW5lZCA9IHRydWU7CisgICAgbWFjcm8u
dHlwZSAgICAgICA9IE1hY3JvOjprVHlwZU9iajsKKyAgICBtYWNyby5uYW1lID0gbmFtZTsKKyAg
ICBtYWNyby5yZXBsYWNlbWVudHMucHVzaF9iYWNrKHRva2VuKTsKKworICAgICgqbWFjcm9TZXQp
W25hbWVdID0gbWFjcm87Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBwcAogCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9NYWNyby5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDggQEAKIAogdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgTWFjcm8+IE1hY3JvU2V0
OwogCit2b2lkIFByZWRlZmluZU1hY3JvKE1hY3JvU2V0ICptYWNyb1NldCwgY29uc3QgY2hhciAq
bmFtZSwgaW50IHZhbHVlKTsKKwogfSAgLy8gbmFtZXNwYWNlIHBwCiAKICNlbmRpZiAgLy8gQ09N
UElMRVJfUFJFUFJPQ0VTU09SX01BQ1JPX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFj
cm9FeHBhbmRlci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgbUl0ZXIgPSBtVG9rZW5zLmJlZ2luKCk7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGxleChUb2tlbiAqdG9rZW4pCisgICAgdm9pZCBs
ZXgoVG9rZW4gKnRva2VuKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1JdGVyID09IG1U
b2tlbnMuZW5kKCkpCiAgICAgICAgIHsKQEAgLTQ4LDEwICs0OCw5IEBACiAKIE1hY3JvRXhwYW5k
ZXI6Ok1hY3JvRXhwYW5kZXIoTGV4ZXIgKmxleGVyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNYWNyb1NldCAqbWFjcm9TZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERp
YWdub3N0aWNzICpkaWFnbm9zdGljcykKLSAgICA6IG1MZXhlcihsZXhlciksCi0gICAgICBtTWFj
cm9TZXQobWFjcm9TZXQpLAotICAgICAgbURpYWdub3N0aWNzKGRpYWdub3N0aWNzKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcGFyc2VEZWZpbmVkKQorICAgIDogbUxleGVyKGxl
eGVyKSwgbU1hY3JvU2V0KG1hY3JvU2V0KSwgbURpYWdub3N0aWNzKGRpYWdub3N0aWNzKSwgbVBh
cnNlRGVmaW5lZChwYXJzZURlZmluZWQpCiB7CiB9CiAKQEAgLTY3LDExICs2Niw1NCBAQAogewog
ICAgIHdoaWxlICh0cnVlKQogICAgIHsKKyAgICAgICAgY29uc3QgY2hhciBrRGVmaW5lZFtdID0g
ImRlZmluZWQiOworCiAgICAgICAgIGdldFRva2VuKHRva2VuKTsKIAogICAgICAgICBpZiAodG9r
ZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJRVIpCiAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAvLyBEZWZpbmVkIG9wZXJhdG9yIGlzIHBhcnNlZCBoZXJlIHNpbmNlIGl0IG1heSBiZSBn
ZW5lcmF0ZWQgYnkgbWFjcm8gZXhwYW5zaW9uLgorICAgICAgICAvLyBEZWZpbmVkIG9wZXJhdG9y
IHByb2R1Y2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIGFjY29y
ZGluZyB0byBDKysKKyAgICAgICAgLy8gc3BlYywgd2hpY2ggdGhlIEdMU0wgc3BlYyByZWZlcmVu
Y2VzIChzZWUgQysrMTQgZHJhZnQgc3BlYyBzZWN0aW9uIDE2LjEuNCksIGJ1dCB0aGlzCisgICAg
ICAgIC8vIGJlaGF2aW9yIGlzIG5lZWRlZCBmb3IgcGFzc2luZyBkRVFQIHRlc3RzLCB3aGljaCBl
bmZvcmNlIHN0cmljdGVyIGNvbXBhdGliaWxpdHkgYmV0d2VlbgorICAgICAgICAvLyBpbXBsZW1l
bnRhdGlvbnMuCisgICAgICAgIGlmIChtUGFyc2VEZWZpbmVkICYmIHRva2VuLT50ZXh0ID09IGtE
ZWZpbmVkKQorICAgICAgICB7CisgICAgICAgICAgICBib29sIHBhcmVuID0gZmFsc2U7CisgICAg
ICAgICAgICBnZXRUb2tlbih0b2tlbik7CisgICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgPT0g
JygnKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBhcmVuID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBnZXRUb2tlbih0b2tlbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJRVIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNU
RURfVE9LRU4sIHRva2VuLT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBhdXRvIGl0ZXIgICAgICAgICAgICAgID0gbU1hY3JvU2V0LT5maW5k
KHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4cHJlc3Npb24gPSBpdGVy
ICE9IG1NYWNyb1NldC0+ZW5kKCkgPyAiMSIgOiAiMCI7CisKKyAgICAgICAgICAgIGlmIChwYXJl
bikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnZXRUb2tlbih0b2tlbik7CisgICAg
ICAgICAgICAgICAgaWYgKHRva2VuLT50eXBlICE9ICcpJykKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9V
TkVYUEVDVEVEX1RPS0VOLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBX
ZSBoYXZlIGEgdmFsaWQgZGVmaW5lZCBvcGVyYXRvci4KKyAgICAgICAgICAgIC8vIENvbnZlcnQg
dGhlIGN1cnJlbnQgdG9rZW4gaW50byBhIENPTlNUX0lOVCB0b2tlbi4KKyAgICAgICAgICAgIHRv
a2VuLT50eXBlID0gVG9rZW46OkNPTlNUX0lOVDsKKyAgICAgICAgICAgIHRva2VuLT50ZXh0ID0g
ZXhwcmVzc2lvbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgaWYg
KHRva2VuLT5leHBhbnNpb25EaXNhYmxlZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE4
Nyw2ICsyMjksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8VG9rZW4+ICpyZXBsYWNlbWVudHMpCiB7CiAgICAgcmVwbGFjZW1lbnRzLT5jbGVhcigpOwor
CisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYW4gb2JqZWN0LWxpa2UgbWFjcm8sIHRoZSByZXBsYWNl
bWVudCBsaXN0IGdldHMgaXRzIGxvY2F0aW9uCisgICAgLy8gZnJvbSB0aGUgaWRlbnRpZmllciwg
YnV0IGluIHRoZSBjYXNlIG9mIGEgZnVuY3Rpb24tbGlrZSBtYWNybywgdGhlIHJlcGxhY2VtZW50
CisgICAgLy8gbGlzdCBnZXRzIGl0cyBsb2NhdGlvbiBmcm9tIHRoZSBjbG9zaW5nIHBhcmVudGhl
c2lzIG9mIHRoZSBtYWNybyBpbnZvY2F0aW9uLgorICAgIC8vIFRoaXMgaXMgdGVzdGVkIGJ5IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5wcmVkZWZpbmVkX21hY3Jv
cy4qCisgICAgU291cmNlTG9jYXRpb24gcmVwbGFjZW1lbnRMb2NhdGlvbiA9IGlkZW50aWZpZXIu
bG9jYXRpb247CiAgICAgaWYgKG1hY3JvLnR5cGUgPT0gTWFjcm86OmtUeXBlT2JqKQogICAgIHsK
ICAgICAgICAgcmVwbGFjZW1lbnRzLT5hc3NpZ24obWFjcm8ucmVwbGFjZW1lbnRzLmJlZ2luKCks
CkBAIC0yMTgsNyArMjY2LDcgQEAKICAgICAgICAgYXNzZXJ0KG1hY3JvLnR5cGUgPT0gTWFjcm86
OmtUeXBlRnVuYyk7CiAgICAgICAgIHN0ZDo6dmVjdG9yPE1hY3JvQXJnPiBhcmdzOwogICAgICAg
ICBhcmdzLnJlc2VydmUobWFjcm8ucGFyYW1ldGVycy5zaXplKCkpOwotICAgICAgICBpZiAoIWNv
bGxlY3RNYWNyb0FyZ3MobWFjcm8sIGlkZW50aWZpZXIsICZhcmdzKSkKKyAgICAgICAgaWYgKCFj
b2xsZWN0TWFjcm9BcmdzKG1hY3JvLCBpZGVudGlmaWVyLCAmYXJncywgJnJlcGxhY2VtZW50TG9j
YXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJlcGxhY2VNYWNy
b1BhcmFtcyhtYWNybywgYXJncywgcmVwbGFjZW1lbnRzKTsKQEAgLTIzNCwxNCArMjgyLDE1IEBA
CiAgICAgICAgICAgICByZXBsLnNldEF0U3RhcnRPZkxpbmUoaWRlbnRpZmllci5hdFN0YXJ0T2ZM
aW5lKCkpOwogICAgICAgICAgICAgcmVwbC5zZXRIYXNMZWFkaW5nU3BhY2UoaWRlbnRpZmllci5o
YXNMZWFkaW5nU3BhY2UoKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmVwbC5sb2NhdGlvbiA9IGlk
ZW50aWZpZXIubG9jYXRpb247CisgICAgICAgIHJlcGwubG9jYXRpb24gPSByZXBsYWNlbWVudExv
Y2F0aW9uOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBNYWNyb0V4cGFuZGVy
Ojpjb2xsZWN0TWFjcm9BcmdzKGNvbnN0IE1hY3JvICZtYWNybywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUb2tlbiAmaWRlbnRpZmllciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxNYWNyb0FyZz4gKmFyZ3MpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TWFjcm9Bcmc+
ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0
aW9uICpjbG9zaW5nUGFyZW50aGVzaXNMb2NhdGlvbikKIHsKICAgICBUb2tlbiB0b2tlbjsKICAg
ICBnZXRUb2tlbigmdG9rZW4pOwpAQCAtMjcxLDYgKzMyMCw3IEBACiAgICAgICAgICAgY2FzZSAn
KSc6CiAgICAgICAgICAgICAtLW9wZW5QYXJlbnM7CiAgICAgICAgICAgICBpc0FyZyA9IG9wZW5Q
YXJlbnMgIT0gMDsKKyAgICAgICAgICAgICpjbG9zaW5nUGFyZW50aGVzaXNMb2NhdGlvbiA9IHRv
a2VuLmxvY2F0aW9uOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSAnLCc6CiAg
ICAgICAgICAgICAvLyBUaGUgaW5kaXZpZHVhbCBhcmd1bWVudHMgYXJlIHNlcGFyYXRlZCBieSBj
b21tYSB0b2tlbnMsIGJ1dApAQCAtMzE3LDcgKzM2Nyw3IEBACiAgICAgewogICAgICAgICBNYWNy
b0FyZyAmYXJnID0gYXJncy0+YXQoaSk7CiAgICAgICAgIFRva2VuTGV4ZXIgbGV4ZXIoJmFyZyk7
Ci0gICAgICAgIE1hY3JvRXhwYW5kZXIgZXhwYW5kZXIoJmxleGVyLCBtTWFjcm9TZXQsIG1EaWFn
bm9zdGljcyk7CisgICAgICAgIE1hY3JvRXhwYW5kZXIgZXhwYW5kZXIoJmxleGVyLCBtTWFjcm9T
ZXQsIG1EaWFnbm9zdGljcywgbVBhcnNlRGVmaW5lZCk7CiAKICAgICAgICAgYXJnLmNsZWFyKCk7
CiAgICAgICAgIGV4cGFuZGVyLmxleCgmdG9rZW4pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9N
YWNyb0V4cGFuZGVyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSwxNCArMTksMTUgQEAKIHsKIAogY2xhc3MgRGlhZ25vc3RpY3M7CitzdHJ1Y3Qg
U291cmNlTG9jYXRpb247CiAKIGNsYXNzIE1hY3JvRXhwYW5kZXIgOiBwdWJsaWMgTGV4ZXIKIHsK
ICAgcHVibGljOgotICAgIE1hY3JvRXhwYW5kZXIoTGV4ZXIgKmxleGVyLCBNYWNyb1NldCAqbWFj
cm9TZXQsIERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7Ci0gICAgdmlydHVhbCB+TWFjcm9FeHBh
bmRlcigpOworICAgIE1hY3JvRXhwYW5kZXIoTGV4ZXIgKmxleGVyLCBNYWNyb1NldCAqbWFjcm9T
ZXQsIERpYWdub3N0aWNzICpkaWFnbm9zdGljcywgYm9vbCBwYXJzZURlZmluZWQpOworICAgIH5N
YWNyb0V4cGFuZGVyKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGV4KFRva2VuICp0
b2tlbik7CisgICAgdm9pZCBsZXgoVG9rZW4gKnRva2VuKSBvdmVycmlkZTsKIAogICBwcml2YXRl
OgogICAgIFBQX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNYWNyb0V4cGFuZGVyKTsKQEAgLTQ1
LDcgKzQ2LDggQEAKICAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPFRva2VuPiBNYWNyb0FyZzsKICAg
ICBib29sIGNvbGxlY3RNYWNyb0FyZ3MoY29uc3QgTWFjcm8gJm1hY3JvLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUb2tlbiAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8TWFjcm9Bcmc+ICphcmdzKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8TWFjcm9Bcmc+ICphcmdzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBTb3VyY2VMb2NhdGlvbiAqY2xvc2luZ1BhcmVudGhlc2lzTG9jYXRpb24pOwogICAg
IHZvaWQgcmVwbGFjZU1hY3JvUGFyYW1zKGNvbnN0IE1hY3JvICZtYWNybywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxNYWNyb0FyZz4gJmFyZ3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VG9rZW4+ICpyZXBsYWNlbWVudHMp
OwpAQCAtNzksOCArODEsOSBAQAogICAgIExleGVyICptTGV4ZXI7CiAgICAgTWFjcm9TZXQgKm1N
YWNyb1NldDsKICAgICBEaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOworICAgIGJvb2wgbVBhcnNl
RGVmaW5lZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxUb2tlbj4gbVJlc2VydmVUb2tlbjsKKyAg
ICBzdGQ6OmF1dG9fcHRyPFRva2VuPiBtUmVzZXJ2ZVRva2VuOwogICAgIHN0ZDo6dmVjdG9yPE1h
Y3JvQ29udGV4dCAqPiBtQ29udGV4dFN0YWNrOwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvUHJlcHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDcgKzcsNiBAQAogI2luY2x1ZGUgIlByZXByb2Nlc3Nvci5oIgogCiAj
aW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxzc3RyZWFtPgogCiAjaW5jbHVkZSAiRGlhZ25v
c3RpY3NCYXNlLmgiCiAjaW5jbHVkZSAiRGlyZWN0aXZlUGFyc2VyLmgiCkBAIC0yNywxMiArMjYs
MTEgQEAKICAgICBEaXJlY3RpdmVQYXJzZXIgZGlyZWN0aXZlUGFyc2VyOwogICAgIE1hY3JvRXhw
YW5kZXIgbWFjcm9FeHBhbmRlcjsKIAotICAgIFByZXByb2Nlc3NvckltcGwoRGlhZ25vc3RpY3Mg
KmRpYWcsCi0gICAgICAgICAgICAgICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3RpdmVI
YW5kbGVyKQorICAgIFByZXByb2Nlc3NvckltcGwoRGlhZ25vc3RpY3MgKmRpYWcsIERpcmVjdGl2
ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIpCiAgICAgICAgIDogZGlhZ25vc3RpY3MoZGlhZyks
CiAgICAgICAgICAgdG9rZW5pemVyKGRpYWcpLAogICAgICAgICAgIGRpcmVjdGl2ZVBhcnNlcigm
dG9rZW5pemVyLCAmbWFjcm9TZXQsIGRpYWcsIGRpcmVjdGl2ZUhhbmRsZXIpLAotICAgICAgICAg
IG1hY3JvRXhwYW5kZXIoJmRpcmVjdGl2ZVBhcnNlciwgJm1hY3JvU2V0LCBkaWFnKQorICAgICAg
ICAgIG1hY3JvRXhwYW5kZXIoJmRpcmVjdGl2ZVBhcnNlciwgJm1hY3JvU2V0LCBkaWFnLCBmYWxz
ZSkKICAgICB7CiAgICAgfQogfTsKQEAgLTUyLDEyICs1MCwxMiBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0IHN0cmluZ1tdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgaW50IGxlbmd0aFtdKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQga0dMU0xW
ZXJzaW9uID0gMTAwOworICAgIHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRHTFNMVmVyc2lvbiA9
IDEwMDsKIAogICAgIC8vIEFkZCBzdGFuZGFyZCBwcmUtZGVmaW5lZCBtYWNyb3MuCiAgICAgcHJl
ZGVmaW5lTWFjcm8oIl9fTElORV9fIiwgMCk7CiAgICAgcHJlZGVmaW5lTWFjcm8oIl9fRklMRV9f
IiwgMCk7Ci0gICAgcHJlZGVmaW5lTWFjcm8oIl9fVkVSU0lPTl9fIiwga0dMU0xWZXJzaW9uKTsK
KyAgICBwcmVkZWZpbmVNYWNybygiX19WRVJTSU9OX18iLCBrRGVmYXVsdEdMU0xWZXJzaW9uKTsK
ICAgICBwcmVkZWZpbmVNYWNybygiR0xfRVMiLCAxKTsKIAogICAgIHJldHVybiBtSW1wbC0+dG9r
ZW5pemVyLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKTsKQEAgLTY1LDIwICs2Myw3IEBACiAK
IHZvaWQgUHJlcHJvY2Vzc29yOjpwcmVkZWZpbmVNYWNybyhjb25zdCBjaGFyICpuYW1lLCBpbnQg
dmFsdWUpCiB7Ci0gICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0cmVhbTsKLSAgICBzdHJlYW0gPDwg
dmFsdWU7Ci0KLSAgICBUb2tlbiB0b2tlbjsKLSAgICB0b2tlbi50eXBlID0gVG9rZW46OkNPTlNU
X0lOVDsKLSAgICB0b2tlbi50ZXh0ID0gc3RyZWFtLnN0cigpOwotCi0gICAgTWFjcm8gbWFjcm87
Ci0gICAgbWFjcm8ucHJlZGVmaW5lZCA9IHRydWU7Ci0gICAgbWFjcm8udHlwZSA9IE1hY3JvOjpr
VHlwZU9iajsKLSAgICBtYWNyby5uYW1lID0gbmFtZTsKLSAgICBtYWNyby5yZXBsYWNlbWVudHMu
cHVzaF9iYWNrKHRva2VuKTsKLQotICAgIG1JbXBsLT5tYWNyb1NldFtuYW1lXSA9IG1hY3JvOwor
ICAgIFByZWRlZmluZU1hY3JvKCZtSW1wbC0+bWFjcm9TZXQsIG5hbWUsIHZhbHVlKTsKIH0KIAog
dm9pZCBQcmVwcm9jZXNzb3I6OmxleChUb2tlbiAqdG9rZW4pCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9Ub2tlbml6ZXIuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYsMTEgKzYsNiBAQAogLy8KIAogLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCi0vLyBUaGlzIGZpbGUgd2FzIGVk
aXRlZCBhbnl3YXlzIHRvIGlnbm9yZSBjbGFuZyB3YXJuaW5ncy4KLSNpZiBkZWZpbmVkKF9fY2xh
bmdfXykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIEdDQyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XdW5uZWVkZWQtaW50ZXJuYWwtZGVjbGFyYXRpb24iCi0jZW5kaWYKIAog
CiAKQEAgLTU5OSw3ICs1OTQsNyBAQAogICAgIH0gd2hpbGUoMCk7CiAKICNkZWZpbmUgWVlfSU5Q
VVQoYnVmLCByZXN1bHQsIG1heFNpemUpIFwKLSAgICByZXN1bHQgPSB5eWV4dHJhLT5pbnB1dC5y
ZWFkKGJ1ZiwgbWF4U2l6ZSk7CisgICAgcmVzdWx0ID0geXlleHRyYS0+aW5wdXQucmVhZChidWYs
IG1heFNpemUsICZ5eWxpbmVubyk7CiAKICNkZWZpbmUgSU5JVElBTCAwCiAjZGVmaW5lIENPTU1F
TlQgMQpAQCAtNzE3LDcgKzcxMiw3IEBACiBzdGF0aWMgaW50IHl5X2ZsZXhfc3RybGVuICh5eWNv
bnN0IGNoYXIgKiAseXlzY2FuX3QgeXlzY2FubmVyKTsKICNlbmRpZgogCi0jaWZuZGVmIFlZX05P
X0lOUFVUCisjaWYgMCAvLyNpZm5kZWYgWVlfTk9fSU5QVVQKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiBzdGF0aWMgaW50IHl5aW5wdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwpAQCAtMTUzMSw3ICsx
NTI2LDcgQEAKIAlyZXR1cm4geXlfaXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7CiB9CiAK
LSNpZm5kZWYgWVlfTk9fSU5QVVQKKyNpZiAwIC8vI2lmbmRlZiBZWV9OT19JTlBVVAogI2lmZGVm
IF9fY3BsdXNwbHVzCiAgICAgc3RhdGljIGludCB5eWlucHV0ICh5eXNjYW5fdCB5eXNjYW5uZXIp
CiAjZWxzZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5oCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rv
a2VuaXplci5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAgICAgdm9pZCBzZXRM
aW5lTnVtYmVyKGludCBsaW5lKTsKICAgICB2b2lkIHNldE1heFRva2VuU2l6ZShzaXplX3QgbWF4
VG9rZW5TaXplKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsZXgoVG9rZW4gKnRva2VuKTsKKyAgICB2
b2lkIGxleChUb2tlbiAqdG9rZW4pIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgUFBfRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRva2VuaXplcik7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9r
ZW5pemVyLmwJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmwJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDcgKzc3LDcgQEAKICAgICB9IHdoaWxlKDApOwogCiAjZGVmaW5lIFlZX0lOUFVUKGJ1ZiwgcmVz
dWx0LCBtYXhTaXplKSBcCi0gICAgcmVzdWx0ID0geXlleHRyYS0+aW5wdXQucmVhZChidWYsIG1h
eFNpemUpOworICAgIHJlc3VsdCA9IHl5ZXh0cmEtPmlucHV0LnJlYWQoYnVmLCBtYXhTaXplLCAm
eXlsaW5lbm8pOwogCiAlfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9udW1lcmljX2xleC5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDE1
IEBACiB0ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdFR5cGU+CiBib29sIG51bWVyaWNfbGV4X2Zsb2F0
KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIsIEZsb2F0VHlwZSAqdmFsdWUpCiB7CisvLyBPbiA2NC1i
aXQgSW50ZWwgQW5kcm9pZCwgaXN0cmluZ3N0cmVhbSBpcyBicm9rZW4uICBVbnRpbCB0aGlzIGlz
IGZpeGVkIGluCisvLyBhIG5ld2VyIE5ESywgZG9uJ3QgdXNlIGl0LiAgQW5kcm9pZCBkb2Vzbid0
IGhhdmUgbG9jYWxlIHN1cHBvcnQsIHNvIHRoaXMKKy8vIGRvZXNuJ3QgaGF2ZSB0byBmb3JjZSB0
aGUgQyBsb2NhbGUuCisvLyBUT0RPKHRoYWtpcyk6IFJlbW92ZSB0aGlzIG9uY2UgdGhpcyBidWcg
aGFzIGJlZW4gZml4ZWQgaW4gdGhlIE5ESyBhbmQKKy8vIHRoYXQgTkRLIGhhcyBiZWVuIHJvbGxl
ZCBpbnRvIGNocm9taXVtLgorI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkgJiYg
X194ODZfNjRfXworICAgICp2YWx1ZSA9IHN0cnRvZChzdHIuY19zdHIoKSwgbnVsbHB0cik7Cisg
ICAgcmV0dXJuIGVycm5vICE9IEVSQU5HRTsKKyNlbHNlCiAgICAgc3RkOjppc3RyaW5nc3RyZWFt
IHN0cmVhbShzdHIpOwogICAgIC8vIEZvcmNlICJDIiBsb2NhbGUgc28gdGhhdCBkZWNpbWFsIGNo
YXJhY3RlciBpcyBhbHdheXMgJy4nLCBhbmQKICAgICAvLyBub3QgZGVwZW5kZW50IG9uIHRoZSBj
dXJyZW50IGxvY2FsZS4KQEAgLTU1LDYgKzY0LDcgQEAKIAogICAgIHN0cmVhbSA+PiAoKnZhbHVl
KTsKICAgICByZXR1cm4gIXN0cmVhbS5mYWlsKCk7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgcHAuCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9BU1RNZXRhZGF0YUhMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5jcHAJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0FTVE1ldGFkYXRhSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUs
NyBAQAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxl
ZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChjYWxsZWVJbmRleCAhPSBDYWxsREFHOjpJbnZhbGlkSW5kZXggJiYgY2FsbGVlSW5kZXggPCBt
SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKG1J
bmRleCk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCgqbU1ldGFkYXRhTGlzdClbY2FsbGVl
SW5kZXhdLm1Vc2VzR3JhZGllbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG9uR3JhZGll
bnQoKTsKQEAgLTEzOCwxMyArMTM5LDE2IEBACiAgICAgc3RkOjp2ZWN0b3I8VEludGVybU5vZGUq
PiBtUGFyZW50czsKIH07CiAKLS8vIFRyYXZlcnNlcyB0aGUgQVNUIG9mIGEgZnVuY3Rpb24gZGVm
aW5pdGlvbiwgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiB1c2VkIHRvCi0vLyB0cmF2ZXJz
ZSB0aGUgY2FsbGVlcyBvZiB0aGF0IGZ1bmN0aW9uOyBjb21wdXRlcyB0aGUgZGlzY29udGludW91
cyBsb29wcyBhbmQgdGhlIGlmCi0vLyBzdGF0ZW1lbnRzIHRoYXQgY29udGFpbiBhIGRpc2NvbnRp
bnVvdXMgbG9vcCBpbiB0aGVpciBjYWxsIGdyYXBoLgotY2xhc3MgUHVsbENvbXB1dGVEaXNjb250
aW51b3VzTG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgorLy8gVHJhdmVyc2VzIHRoZSBB
U1Qgb2YgYSBmdW5jdGlvbiBkZWZpbml0aW9uIHRvIGNvbXB1dGUgdGhlIHRoZSBkaXNjb250aW51
b3VzIGxvb3BzCisvLyBhbmQgdGhlIGlmIHN0YXRlbWVudHMgY29udGFpbmluZyBncmFkaWVudCBs
b29wcy4gSXQgYXNzdW1lcyB0aGF0IHRoZSBncmFkaWVudCBsb29wcworLy8gKGxvb3BzIHRoYXQg
Y29udGFpbiBhIGdyYWRpZW50KSBoYXZlIGFscmVhZHkgYmVlbiBjb21wdXRlZCBhbmQgdGhhdCBp
dCBoYXMgYWxyZWFkeQorLy8gdHJhdmVyc2VkIHRoZSBjdXJyZW50IGZ1bmN0aW9uJ3MgY2FsbGVl
cy4KK2NsYXNzIFB1bGxDb21wdXRlRGlzY29udGludW91c0FuZEdyYWRpZW50TG9vcHMgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgUHVsbENvbXB1dGVEaXNjb250
aW51b3VzTG9vcHMoTWV0YWRhdGFMaXN0ICptZXRhZGF0YUxpc3QsIHNpemVfdCBpbmRleCwgY29u
c3QgQ2FsbERBRyAmZGFnKQorICAgIFB1bGxDb21wdXRlRGlzY29udGludW91c0FuZEdyYWRpZW50
TG9vcHMoTWV0YWRhdGFMaXN0ICptZXRhZGF0YUxpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsREFHICZkYWcpCiAgICAgICAgIDog
VEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksCiAgICAgICAgICAgbU1ldGFkYXRh
TGlzdChtZXRhZGF0YUxpc3QpLAogICAgICAgICAgIG1NZXRhZGF0YSgmKCptZXRhZGF0YUxpc3Qp
W2luZGV4XSksCkBAIC0xNjAsMTUgKzE2NCwxNSBAQAogICAgICAgICBBU1NFUlQobUlmcy5lbXB0
eSgpKTsKICAgICB9CiAKLSAgICAvLyBDYWxsZWQgd2hlbiBhIGRpc2NvbnRpbnVvdXMgbG9vcCBv
ciBhIGNhbGwgdG8gYSBmdW5jdGlvbiB3aXRoIGEgZGlzY29udGludW91cyBsb29wCi0gICAgLy8g
aW4gaXRzIGNhbGwgZ3JhcGggaXMgZm91bmQuCi0gICAgdm9pZCBvbkRpc2NvbnRpbnVvdXNMb29w
KCkKKyAgICAvLyBDYWxsZWQgd2hlbiB0cmF2ZXJzaW5nIGEgZ3JhZGllbnQgbG9vcCBvciBhIGNh
bGwgdG8gYSBmdW5jdGlvbiB3aXRoIGEKKyAgICAvLyBncmFkaWVudCBsb29wIGluIGl0cyBjYWxs
IGdyYXBoLgorICAgIHZvaWQgb25HcmFkaWVudExvb3AoKQogICAgIHsKLSAgICAgICAgbU1ldGFk
YXRhLT5tSGFzRGlzY29udGludW91c0xvb3BJbkNhbGxHcmFwaCA9IHRydWU7CisgICAgICAgIG1N
ZXRhZGF0YS0+bUhhc0dyYWRpZW50TG9vcEluQ2FsbEdyYXBoID0gdHJ1ZTsKICAgICAgICAgLy8g
TWFyayB0aGUgbGF0ZXN0IGlmIGFzIHVzaW5nIGEgZGlzY29udGludW91cyBsb29wLgogICAgICAg
ICBpZiAoIW1JZnMuZW1wdHkoKSkKICAgICAgICAgewotICAgICAgICAgICAgbU1ldGFkYXRhLT5t
SWZzQ29udGFpbmluZ0Rpc2NvbnRpbnVvdXNMb29wLmluc2VydChtSWZzLmJhY2soKSk7CisgICAg
ICAgICAgICBtTWV0YWRhdGEtPm1JZnNDb250YWluaW5nR3JhZGllbnRMb29wLmluc2VydChtSWZz
LmJhY2soKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE3Nyw2ICsxODEsMTEgQEAKICAgICAg
ICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQogICAgICAgICB7CiAgICAgICAgICAgICBtTG9vcHNB
bmRTd2l0Y2hlcy5wdXNoX2JhY2sobG9vcCk7CisKKyAgICAgICAgICAgIGlmIChtTWV0YWRhdGEt
Pmhhc0dyYWRpZW50SW5DYWxsR3JhcGgobG9vcCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgb25HcmFkaWVudExvb3AoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBlbHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgICAgIHsKQEAgLTE5OCw5ICsyMDcs
OSBAQAogICAgICAgICAgICAgQVNTRVJUKG1JZnMuYmFjaygpID09IG5vZGUpOwogICAgICAgICAg
ICAgbUlmcy5wb3BfYmFjaygpOwogICAgICAgICAgICAgLy8gQW4gaWYgdXNpbmcgYSBkaXNjb250
aW51b3VzIGxvb3AgbWVhbnMgaXRzIHBhcmVudHMgaWZzIGFyZSBhbHNvIGRpc2NvbnRpbnVvdXMu
Ci0gICAgICAgICAgICBpZiAobU1ldGFkYXRhLT5tSWZzQ29udGFpbmluZ0Rpc2NvbnRpbnVvdXNM
b29wLmNvdW50KG5vZGUpID4gMCAmJiAhbUlmcy5lbXB0eSgpKQorICAgICAgICAgICAgaWYgKG1N
ZXRhZGF0YS0+bUlmc0NvbnRhaW5pbmdHcmFkaWVudExvb3AuY291bnQobm9kZSkgPiAwICYmICFt
SWZzLmVtcHR5KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbU1ldGFkYXRhLT5t
SWZzQ29udGFpbmluZ0Rpc2NvbnRpbnVvdXNMb29wLmluc2VydChtSWZzLmJhY2soKSk7CisgICAg
ICAgICAgICAgICAgbU1ldGFkYXRhLT5tSWZzQ29udGFpbmluZ0dyYWRpZW50TG9vcC5pbnNlcnQo
bUlmcy5iYWNrKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIyMCw3ICsyMjks
NiBAQAogICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCAhPSBudWxscHRyKQogICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtTWV0YWRhdGEtPm1EaXNjb250
aW51b3VzTG9vcHMuaW5zZXJ0KGxvb3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgb25EaXNj
b250aW51b3VzTG9vcCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM2LDcgKzI0NCw2IEBACiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxvb3AgIT0gbnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgICAgIG1NZXRhZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5pbnNl
cnQobG9vcCk7Ci0gICAgICAgICAgICAgICAgICAgIG9uRGlzY29udGludW91c0xvb3AoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNh
c2UgRU9wS2lsbDoKQEAgLTI0NCwxNSArMjUxLDE0IEBACiAgICAgICAgICAgICAgICAgLy8gQSBy
ZXR1cm4gb3IgZGlzY2FyZCBqdW1wcyBvdXQgb2YgYWxsIHRoZSBlbmNsb3NpbmcgbG9vcHMKICAg
ICAgICAgICAgICAgICBpZiAoIW1Mb29wc0FuZFN3aXRjaGVzLmVtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBmb3IgKFRJbnRlcm1Ob2RlKiBub2RlIDogbUxv
b3BzQW5kU3dpdGNoZXMpCisgICAgICAgICAgICAgICAgICAgIGZvciAoVEludGVybU5vZGUgKmlu
dGVybU5vZGUgOiBtTG9vcHNBbmRTd2l0Y2hlcykKICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybUxvb3AgKmxvb3AgPSBub2RlLT5nZXRBc0xvb3BO
b2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTG9vcCAqbG9vcCA9IGludGVy
bU5vZGUtPmdldEFzTG9vcE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29w
KQogICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1NZXRhZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5pbnNlcnQobG9vcCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgb25EaXNjb250aW51b3VzTG9vcCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTI3MSwxMCArMjc3LDExIEBA
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxlZUluZGV4ID0gbURh
Zy5maW5kSW5kZXgobm9kZSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUluZGV4ICE9
IENhbGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8IG1JbmRleCk7CisgICAgICAg
ICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShtSW5kZXgpOwogCi0gICAgICAgICAg
ICAgICAgaWYgKCgqbU1ldGFkYXRhTGlzdClbY2FsbGVlSW5kZXhdLm1IYXNEaXNjb250aW51b3Vz
TG9vcEluQ2FsbEdyYXBoKQorICAgICAgICAgICAgICAgIGlmICgoKm1NZXRhZGF0YUxpc3QpW2Nh
bGxlZUluZGV4XS5tSGFzR3JhZGllbnRMb29wSW5DYWxsR3JhcGgpCiAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBvbkRpc2NvbnRpbnVvdXNMb29wKCk7CisgICAgICAgICAg
ICAgICAgICAgIG9uR3JhZGllbnRMb29wKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0zNTEsNiArMzU4LDcgQEAKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJbmRleChub2RlKTsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoY2FsbGVlSW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4
ICYmIGNhbGxlZUluZGV4IDwgbUluZGV4KTsKKyAgICAgICAgICAgICAgICBVTlVTRURfQVNTRVJU
SU9OX1ZBUklBQkxFKG1JbmRleCk7CiAKICAgICAgICAgICAgICAgICAoKm1NZXRhZGF0YUxpc3Qp
W2NhbGxlZUluZGV4XS5tQ2FsbGVkSW5EaXNjb250aW51b3VzTG9vcCA9IHRydWU7CiAgICAgICAg
ICAgICB9CkBAIC0zNzIsMTkgKzM4MCwxNCBAQAogCiB9CiAKLWJvb2wgQVNUTWV0YWRhdGFITFNM
OjpoYXNHcmFkaWVudEluQ2FsbEdyYXBoKFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCi17Ci0gICAg
cmV0dXJuIG1Db250cm9sRmxvd3NDb250YWluaW5nR3JhZGllbnQuY291bnQobm9kZSkgPiAwOwot
fQotCiBib29sIEFTVE1ldGFkYXRhSExTTDo6aGFzR3JhZGllbnRJbkNhbGxHcmFwaChUSW50ZXJt
TG9vcCAqbm9kZSkKIHsKICAgICByZXR1cm4gbUNvbnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVu
dC5jb3VudChub2RlKSA+IDA7CiB9CiAKLWJvb2wgQVNUTWV0YWRhdGFITFNMOjpoYXNEaXNjb250
aW51b3VzTG9vcChUSW50ZXJtU2VsZWN0aW9uICpub2RlKQorYm9vbCBBU1RNZXRhZGF0YUhMU0w6
Omhhc0dyYWRpZW50TG9vcChUSW50ZXJtU2VsZWN0aW9uICpub2RlKQogewotICAgIHJldHVybiBt
SWZzQ29udGFpbmluZ0Rpc2NvbnRpbnVvdXNMb29wLmNvdW50KG5vZGUpID4gMDsKKyAgICByZXR1
cm4gbUlmc0NvbnRhaW5pbmdHcmFkaWVudExvb3AuY291bnQobm9kZSkgPiAwOwogfQogCiBNZXRh
ZGF0YUxpc3QgQ3JlYXRlQVNUTWV0YWRhdGFITFNMKFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBD
YWxsREFHICZjYWxsRGFnKQpAQCAtNDIxLDEwICs0MjQsMTAgQEAKICAgICAvLyBvZiBjYWxsZ3Jh
cGggYW5hbHlzaXMgYXMgZm9yIHRoZSBncmFkaWVudC4KIAogICAgIC8vIEZpcnN0IGNvbXB1dGUg
d2hpY2ggbG9vcHMgYXJlIGRpc2NvbnRpbnVvdXMgKG5vIHNwZWNpZmljIG9yZGVyKSBhbmQgcHVs
bAotICAgIC8vIHRoZSBpZnMgYW5kIGZ1bmN0aW9ucyB1c2luZyBhIGRpc2NvbnRpbnVvdXMgbG9v
cC4KKyAgICAvLyB0aGUgaWZzIGFuZCBmdW5jdGlvbnMgdXNpbmcgYSBncmFkaWVudCBsb29wLgog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbERhZy5zaXplKCk7IGkrKykKICAgICB7Ci0g
ICAgICAgIFB1bGxDb21wdXRlRGlzY29udGludW91c0xvb3BzIHB1bGwoJm1ldGFkYXRhTGlzdCwg
aSwgY2FsbERhZyk7CisgICAgICAgIFB1bGxDb21wdXRlRGlzY29udGludW91c0FuZEdyYWRpZW50
TG9vcHMgcHVsbCgmbWV0YWRhdGFMaXN0LCBpLCBjYWxsRGFnKTsKICAgICAgICAgcHVsbC50cmF2
ZXJzZShjYWxsRGFnLmdldFJlY29yZEZyb21JbmRleChpKS5ub2RlKTsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFk
YXRhSExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0
YUhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTYgKzIyLDE1IEBACiAgICAgQVNUTWV0YWRh
dGFITFNMKCkKICAgICAgICAgOiBtVXNlc0dyYWRpZW50KGZhbHNlKSwKICAgICAgICAgICBtQ2Fs
bGVkSW5EaXNjb250aW51b3VzTG9vcChmYWxzZSksCi0gICAgICAgICAgbUhhc0Rpc2NvbnRpbnVv
dXNMb29wSW5DYWxsR3JhcGgoZmFsc2UpLAorICAgICAgICAgIG1IYXNHcmFkaWVudExvb3BJbkNh
bGxHcmFwaChmYWxzZSksCiAgICAgICAgICAgbU5lZWRzTG9kMChmYWxzZSkKICAgICB7CiAgICAg
fQogCiAgICAgLy8gSGVyZSAic29tZXRoaW5nIHVzZXMgYSBncmFkaWVudCIgbWVhbnMgaGVyZSB0
aGF0IGl0IGVpdGhlciBjb250YWlucyBhCiAgICAgLy8gZ3JhZGllbnQgb3BlcmF0aW9uLCBvciBh
IGNhbGwgdG8gYSBmdW5jdGlvbiB0aGF0IHVzZXMgYSBncmFkaWVudC4KLSAgICBib29sIGhhc0dy
YWRpZW50SW5DYWxsR3JhcGgoVEludGVybVNlbGVjdGlvbiAqbm9kZSk7CiAgICAgYm9vbCBoYXNH
cmFkaWVudEluQ2FsbEdyYXBoKFRJbnRlcm1Mb29wICpub2RlKTsKLSAgICBib29sIGhhc0Rpc2Nv
bnRpbnVvdXNMb29wKFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpOworICAgIGJvb2wgaGFzR3JhZGll
bnRMb29wKFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpOwogCiAgICAgLy8gRG9lcyB0aGUgZnVuY3Rp
b24gdXNlIGEgZ3JhZGllbnQuCiAgICAgYm9vbCBtVXNlc0dyYWRpZW50OwpAQCAtNDMsOSArNDIs
OSBAQAogICAgIC8vIFJlbWVtYmVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkaXNjb250aW51b3Vz
IGxvb3BzIGFuZCB3aGljaCBmdW5jdGlvbnMKICAgICAvLyBhcmUgY2FsbGVkIGluIHN1Y2ggbG9v
cHMuCiAgICAgYm9vbCBtQ2FsbGVkSW5EaXNjb250aW51b3VzTG9vcDsKLSAgICBib29sIG1IYXNE
aXNjb250aW51b3VzTG9vcEluQ2FsbEdyYXBoOworICAgIGJvb2wgbUhhc0dyYWRpZW50TG9vcElu
Q2FsbEdyYXBoOwogICAgIHN0ZDo6c2V0PFRJbnRlcm1Mb29wKj4gbURpc2NvbnRpbnVvdXNMb29w
czsKLSAgICBzdGQ6OnNldDxUSW50ZXJtU2VsZWN0aW9uKj4gbUlmc0NvbnRhaW5pbmdEaXNjb250
aW51b3VzTG9vcDsKKyAgICBzdGQ6OnNldDxUSW50ZXJtU2VsZWN0aW9uICo+IG1JZnNDb250YWlu
aW5nR3JhZGllbnRMb29wOwogCiAgICAgLy8gV2lsbCB3ZSBuZWVkIHRvIGdlbmVyYXRlIGEgTG9k
MCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4KICAgICBib29sIG1OZWVkc0xvZDA7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFt
ZXRlci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwyOCBAQAogICAgIHJldHVybiBDcmVhdGVSZXR1
cm5WYWx1ZVN5bWJvbChvdXRUeXBlKTsKIH0KIAorVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlUmVw
bGFjZW1lbnRDYWxsKFRJbnRlcm1BZ2dyZWdhdGUgKm9yaWdpbmFsQ2FsbCwgVEludGVybVR5cGVk
ICpyZXR1cm5WYWx1ZVRhcmdldCkKK3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBsYWNlbWVu
dENhbGwgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbkNhbGwpOworICAgIHJlcGxh
Y2VtZW50Q2FsbC0+c2V0VHlwZShUVHlwZShFYnRWb2lkKSk7CisgICAgcmVwbGFjZW1lbnRDYWxs
LT5zZXRVc2VyRGVmaW5lZCgpOworICAgIHJlcGxhY2VtZW50Q2FsbC0+c2V0TmFtZU9iaihvcmln
aW5hbENhbGwtPmdldE5hbWVPYmooKSk7CisgICAgcmVwbGFjZW1lbnRDYWxsLT5zZXRGdW5jdGlv
bklkKG9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25JZCgpKTsKKyAgICByZXBsYWNlbWVudENhbGwt
PnNldExpbmUob3JpZ2luYWxDYWxsLT5nZXRMaW5lKCkpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAq
cmVwbGFjZW1lbnRQYXJhbWV0ZXJzID0gcmVwbGFjZW1lbnRDYWxsLT5nZXRTZXF1ZW5jZSgpOwor
ICAgIFRJbnRlcm1TZXF1ZW5jZSAqb3JpZ2luYWxQYXJhbWV0ZXJzID0gb3JpZ2luYWxDYWxsLT5n
ZXRTZXF1ZW5jZSgpOworICAgIGZvciAoYXV0byAmcGFyYW0gOiAqb3JpZ2luYWxQYXJhbWV0ZXJz
KQorICAgIHsKKyAgICAgICAgcmVwbGFjZW1lbnRQYXJhbWV0ZXJzLT5wdXNoX2JhY2socGFyYW0p
OworICAgIH0KKyAgICByZXBsYWNlbWVudFBhcmFtZXRlcnMtPnB1c2hfYmFjayhyZXR1cm5WYWx1
ZVRhcmdldCk7CisgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2FsbDsKK30KKwogY2xhc3MgQXJyYXlS
ZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyIDogcHJpdmF0ZSBUSW50ZXJtVHJhdmVy
c2VyCiB7CiAgIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBhcHBseShUSW50ZXJtTm9kZSAqcm9v
dCk7CisgICAgc3RhdGljIHZvaWQgYXBwbHkoVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGlu
dCAqdGVtcG9yYXJ5SW5kZXgpOwogICBwcml2YXRlOgogICAgIEFycmF5UmV0dXJuVmFsdWVUb091
dFBhcmFtZXRlclRyYXZlcnNlcigpOwogCkBAIC01MCw5ICs2OCwxMCBAQAogICAgIGJvb2wgbUlu
RnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZTsKIH07CiAKLXZvaWQgQXJyYXlSZXR1cm5WYWx1
ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjphcHBseShUSW50ZXJtTm9kZSAqcm9vdCkKK3ZvaWQg
QXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjphcHBseShUSW50ZXJtTm9k
ZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKIHsKICAgICBBcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZXJzZXIgYXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW07
CisgICAgYXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW0udXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9y
YXJ5SW5kZXgpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZhcnJheVJldHVyblZhbHVlVG9PdXRQYXJh
bSk7CiAgICAgYXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW0udXBkYXRlVHJlZSgpOwogfQpAQCAt
OTgsNyArMTE3LDcgQEAKICAgICAgICAgICAgICAgICBDb3B5QWdncmVnYXRlQ2hpbGRyZW4obm9k
ZSwgcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2soQ3JlYXRlUmV0dXJuVmFsdWVPdXRTeW1ib2wobm9kZS0+Z2V0VHlwZSgp
KSk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQtPnNldFVzZXJEZWZpbmVkKCk7Ci0gICAg
ICAgICAgICAgICAgcmVwbGFjZW1lbnQtPnNldE5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudC0+c2V0TmFtZU9iaihub2RlLT5nZXROYW1lT2JqKCkpOwog
ICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5zZXRGdW5jdGlvbklkKG5vZGUtPmdldEZ1bmN0
aW9uSWQoKSk7CiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQtPnNldExpbmUobm9kZS0+Z2V0
TGluZSgpKTsKICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC0+c2V0VHlwZShUVHlwZShFYnRW
b2lkKSk7CkBAIC0xMDcsMTggKzEyNiwzMiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbkNhbGwpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgLy8gVE9ETyAob2V0dWFob0BudmlkaWEuY29tKTogQ2FsbCBzaXRl
cyB3aGVyZSB0aGUgcmV0dXJuZWQgYXJyYXkgaXMgbm90IGFzc2lnbmVkIGFyZSBub3QgaGFuZGxl
ZCB5ZXQuCisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGNhbGwgc2l0ZXMgd2hlcmUgdGhlIHJl
dHVybmVkIGFycmF5IGlzIG5vdCBhc3NpZ25lZC4KICAgICAgICAgICAgICAgICAvLyBFeGFtcGxl
cyB3aGVyZSBmKCkgaXMgYSBmdW5jdGlvbiByZXR1cm5pbmcgYW4gYXJyYXk6Ci0gICAgICAgICAg
ICAgICAgLy8gZigpOwotICAgICAgICAgICAgICAgIC8vIGFub3RoZXJfZnVuY3Rpb24oZigpKTsK
LSAgICAgICAgICAgICAgICAvLyBhbm90aGVyX2FycmF5ID09IGYoKTsKLSAgICAgICAgICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICAgICAgLy8gMS4gZigpOworICAgICAgICAg
ICAgICAgIC8vIDIuIGFub3RoZXJfYXJyYXkgPT0gZigpOworICAgICAgICAgICAgICAgIC8vIDMu
IGFub3RoZXJfZnVuY3Rpb24oZigpKTsKKyAgICAgICAgICAgICAgICAvLyA0LiByZXR1cm4gZigp
OworICAgICAgICAgICAgICAgIC8vIENhc2VzIDIgdG8gNCBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQg
dG8gc2ltcGxlciBjYXNlcyBieSBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLCBz
byB3ZQorICAgICAgICAgICAgICAgIC8vIG9ubHkgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgY2Fz
ZSB3aGVyZSBhIGZ1bmN0aW9uIGNhbGwgcmV0dXJuaW5nIGFuIGFycmF5IGZvcm1zIGFuIGV4cHJl
c3Npb24gYnkKKyAgICAgICAgICAgICAgICAvLyBpdHNlbGYuCisgICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqcGFyZW50QWdnID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0FnZ3JlZ2F0
ZSgpOworICAgICAgICAgICAgICAgIGlmIChwYXJlbnRBZ2cgIT0gbnVsbHB0ciAmJiBwYXJlbnRB
Z2ctPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgVElu
dGVybVNlcXVlbmNlIHJlcGxhY2VtZW50czsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1l
bnRzLnB1c2hfYmFjayhjcmVhdGVUZW1wRGVjbGFyYXRpb24obm9kZS0+Z2V0VHlwZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnJldHVyblN5bWJvbCA9IGNyZWF0ZVRl
bXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1l
bnRzLnB1c2hfYmFjayhDcmVhdGVSZXBsYWNlbWVudENhbGwobm9kZSwgcmV0dXJuU3ltYm9sKSk7
CisgICAgICAgICAgICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVJl
cGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRBZ2csIG5vZGUsIHJlcGxhY2VtZW50cykpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0
KQogICAgIHsKLSAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb24gJiYgbm9k
ZS0+aXNBcnJheSgpKQorICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbikK
ICAgICAgICAgewogICAgICAgICAgICAgbUluRnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZSA9
IGZhbHNlOwogICAgICAgICB9CkBAIC0xNTgsMTkgKzE5MSw3IEBACiAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKnJpZ2h0QWdnID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsK
ICAgICAgICAgaWYgKHJpZ2h0QWdnICE9IG51bGxwdHIgJiYgcmlnaHRBZ2ctPmdldE9wKCkgPT0g
RU9wRnVuY3Rpb25DYWxsICYmIHJpZ2h0QWdnLT5pc1VzZXJEZWZpbmVkKCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50Q2FsbCA9IG5ldyBUSW50
ZXJtQWdncmVnYXRlKEVPcEZ1bmN0aW9uQ2FsbCk7Ci0gICAgICAgICAgICByZXBsYWNlbWVudENh
bGwtPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnRDYWxs
LT5zZXRVc2VyRGVmaW5lZCgpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnRDYWxsLT5zZXROYW1l
KHJpZ2h0QWdnLT5nZXROYW1lKCkpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnRDYWxsLT5zZXRG
dW5jdGlvbklkKHJpZ2h0QWdnLT5nZXRGdW5jdGlvbklkKCkpOwotICAgICAgICAgICAgcmVwbGFj
ZW1lbnRDYWxsLT5zZXRMaW5lKHJpZ2h0QWdnLT5nZXRMaW5lKCkpOwotICAgICAgICAgICAgVElu
dGVybVNlcXVlbmNlICpyZXBsYWNlbWVudFBhcmFtZXRlcnMgPSByZXBsYWNlbWVudENhbGwtPmdl
dFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKm9yaWdpbmFsUGFyYW1l
dGVycyA9IHJpZ2h0QWdnLT5nZXRTZXF1ZW5jZSgpOwotICAgICAgICAgICAgZm9yIChhdXRvICZw
YXJhbSA6ICpvcmlnaW5hbFBhcmFtZXRlcnMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmVwbGFjZW1lbnRQYXJhbWV0ZXJzLT5wdXNoX2JhY2socGFyYW0pOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmVwbGFjZW1lbnRQYXJhbWV0ZXJzLT5wdXNoX2JhY2sobm9kZS0+Z2V0
TGVmdCgpKTsKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50Q2FsbCA9
IENyZWF0ZVJlcGxhY2VtZW50Q2FsbChyaWdodEFnZywgbm9kZS0+Z2V0TGVmdCgpKTsKICAgICAg
ICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShnZXRQYXJlbnRO
b2RlKCksIG5vZGUsIHJlcGxhY2VtZW50Q2FsbCwgZmFsc2UpKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTE3OSw3ICsyMDAsNyBAQAogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIEFycmF5UmV0dXJu
VmFsdWVUb091dFBhcmFtZXRlcihUSW50ZXJtTm9kZSAqcm9vdCkKK3ZvaWQgQXJyYXlSZXR1cm5W
YWx1ZVRvT3V0UGFyYW1ldGVyKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBv
cmFyeUluZGV4KQogewotICAgIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNl
cjo6YXBwbHkocm9vdCk7CisgICAgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVy
c2VyOjphcHBseShyb290LCB0ZW1wb3JhcnlJbmRleCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQ
YXJhbWV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuaAkocmV2aXNp
b24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDYgQEAKIAogY2xhc3MgVEludGVybU5vZGU7CiAKLXZvaWQgQXJyYXlSZXR1cm5W
YWx1ZVRvT3V0UGFyYW1ldGVyKFRJbnRlcm1Ob2RlICpyb290KTsKK3ZvaWQgQXJyYXlSZXR1cm5W
YWx1ZVRvT3V0UGFyYW1ldGVyKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBv
cmFyeUluZGV4KTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0FSUkFZUkVUVVJO
VkFMVUVUT09VVFBBUkFNRVRFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0Jhc2VUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw3ICsxOCwxMCBAQAogICAg
IEVicFVuZGVmaW5lZCwKICAgICBFYnBMb3csCiAgICAgRWJwTWVkaXVtLAotICAgIEVicEhpZ2gK
KyAgICBFYnBIaWdoLAorCisgICAgLy8gZW5kIG9mIGxpc3QKKyAgICBFYnBMYXN0CiB9OwogCiBp
bmxpbmUgY29uc3QgY2hhciogZ2V0UHJlY2lzaW9uU3RyaW5nKFRQcmVjaXNpb24gcCkKQEAgLTc3
LDYgKzgwLDkgQEAKICAgICBFYnRTdHJ1Y3QsCiAgICAgRWJ0SW50ZXJmYWNlQmxvY2ssCiAgICAg
RWJ0QWRkcmVzcywgICAgICAgICAgICAvLyBzaG91bGQgYmUgZGVwcmVjYXRlZD8/CisKKyAgICAv
LyBlbmQgb2YgbGlzdAorICAgIEVidExhc3QKIH07CiAKIGNvbnN0IGNoYXIqIGdldEJhc2ljU3Ry
aW5nKFRCYXNpY1R5cGUgdCk7CkBAIC0yODQsMjAgKzI5MCwxOCBAQAogLy8KIGVudW0gVFF1YWxp
ZmllcgogewotICAgIEV2cVRlbXBvcmFyeSwgICAgIC8vIEZvciB0ZW1wb3JhcmllcyAod2l0aGlu
IGEgZnVuY3Rpb24pLCByZWFkL3dyaXRlCi0gICAgRXZxR2xvYmFsLCAgICAgICAgLy8gRm9yIGds
b2JhbHMgcmVhZC93cml0ZQotICAgIEV2cUNvbnN0LCAgICAgICAgIC8vIFVzZXIgZGVmaW5lZCBj
b25zdGFudHMgYW5kIG5vbi1vdXRwdXQgcGFyYW1ldGVycyBpbiBmdW5jdGlvbnMKLSAgICBFdnFB
dHRyaWJ1dGUsICAgICAvLyBSZWFkb25seQotICAgIEV2cVZhcnlpbmdJbiwgICAgIC8vIHJlYWRv
bmx5LCBmcmFnbWVudCBzaGFkZXJzIG9ubHkKLSAgICBFdnFWYXJ5aW5nT3V0LCAgICAvLyB2ZXJ0
ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCi0gICAgRXZxSW52YXJpYW50VmFyeWluZ0luLCAg
ICAgLy8gcmVhZG9ubHksIGZyYWdtZW50IHNoYWRlcnMgb25seQotICAgIEV2cUludmFyaWFudFZh
cnlpbmdPdXQsICAgIC8vIHZlcnRleCBzaGFkZXJzIG9ubHkgIHJlYWQvd3JpdGUKLSAgICBFdnFV
bmlmb3JtLCAgICAgICAvLyBSZWFkb25seSwgdmVydGV4IGFuZCBmcmFnbWVudAorICAgIEV2cVRl
bXBvcmFyeSwgICAvLyBGb3IgdGVtcG9yYXJpZXMgKHdpdGhpbiBhIGZ1bmN0aW9uKSwgcmVhZC93
cml0ZQorICAgIEV2cUdsb2JhbCwgICAgICAvLyBGb3IgZ2xvYmFscyByZWFkL3dyaXRlCisgICAg
RXZxQ29uc3QsICAgICAgIC8vIFVzZXIgZGVmaW5lZCBjb25zdGFudHMgYW5kIG5vbi1vdXRwdXQg
cGFyYW1ldGVycyBpbiBmdW5jdGlvbnMKKyAgICBFdnFBdHRyaWJ1dGUsICAgLy8gUmVhZG9ubHkK
KyAgICBFdnFWYXJ5aW5nSW4sICAgLy8gcmVhZG9ubHksIGZyYWdtZW50IHNoYWRlcnMgb25seQor
ICAgIEV2cVZhcnlpbmdPdXQsICAvLyB2ZXJ0ZXggc2hhZGVycyBvbmx5ICByZWFkL3dyaXRlCisg
ICAgRXZxVW5pZm9ybSwgICAgIC8vIFJlYWRvbmx5LCB2ZXJ0ZXggYW5kIGZyYWdtZW50CiAKLSAg
ICBFdnFWZXJ0ZXhJbiwgICAgICAvLyBWZXJ0ZXggc2hhZGVyIGlucHV0Ci0gICAgRXZxRnJhZ21l
bnRPdXQsICAgLy8gRnJhZ21lbnQgc2hhZGVyIG91dHB1dAotICAgIEV2cVZlcnRleE91dCwgICAg
IC8vIFZlcnRleCBzaGFkZXIgb3V0cHV0Ci0gICAgRXZxRnJhZ21lbnRJbiwgICAgLy8gRnJhZ21l
bnQgc2hhZGVyIGlucHV0CisgICAgRXZxVmVydGV4SW4sICAgICAvLyBWZXJ0ZXggc2hhZGVyIGlu
cHV0CisgICAgRXZxRnJhZ21lbnRPdXQsICAvLyBGcmFnbWVudCBzaGFkZXIgb3V0cHV0CisgICAg
RXZxVmVydGV4T3V0LCAgICAvLyBWZXJ0ZXggc2hhZGVyIG91dHB1dAorICAgIEV2cUZyYWdtZW50
SW4sICAgLy8gRnJhZ21lbnQgc2hhZGVyIGlucHV0CiAKICAgICAvLyBwYXJhbWV0ZXJzCiAgICAg
RXZxSW4sCkBAIC0zMDcsNiArMzExLDcgQEAKIAogICAgIC8vIGJ1aWx0LWlucyByZWFkIGJ5IHZl
cnRleCBzaGFkZXIKICAgICBFdnFJbnN0YW5jZUlELAorICAgIEV2cVZlcnRleElELAogCiAgICAg
Ly8gYnVpbHQtaW5zIHdyaXR0ZW4gYnkgdmVydGV4IHNoYWRlcgogICAgIEV2cVBvc2l0aW9uLApA
QCAtMzIwLDIxICszMjUsMjYgQEAKICAgICAvLyBidWlsdC1pbnMgd3JpdHRlbiBieSBmcmFnbWVu
dCBzaGFkZXIKICAgICBFdnFGcmFnQ29sb3IsCiAgICAgRXZxRnJhZ0RhdGEsCi0gICAgRXZxRnJh
Z0RlcHRoLAogCisgICAgRXZxRnJhZ0RlcHRoLCAgICAgLy8gZ2xfRnJhZ0RlcHRoIGZvciBFU1NM
MzAwLgorICAgIEV2cUZyYWdEZXB0aEVYVCwgIC8vIGdsX0ZyYWdEZXB0aEVYVCBmb3IgRVNTTDEw
MCwgRVhUX2ZyYWdfZGVwdGguCisKKyAgICBFdnFTZWNvbmRhcnlGcmFnQ29sb3JFWFQsICAvLyBF
WFRfYmxlbmRfZnVuY19leHRlbmRlZAorICAgIEV2cVNlY29uZGFyeUZyYWdEYXRhRVhULCAgIC8v
IEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkCisKICAgICAvLyBidWlsdC1pbnMgd3JpdHRlbiBieSB0
aGUgc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIGV4dGVuc2lvbihzKQogICAgIEV2cUxhc3RGcmFn
Q29sb3IsCiAgICAgRXZxTGFzdEZyYWdEYXRhLAogCiAgICAgLy8gR0xTTCBFUyAzLjAgdmVydGV4
IG91dHB1dCBhbmQgZnJhZ21lbnQgaW5wdXQKLSAgICBFdnFTbW9vdGgsICAgICAgICAvLyBJbmNv
bXBsZXRlIHF1YWxpZmllciwgc21vb3RoIGlzIHRoZSBkZWZhdWx0Ci0gICAgRXZxRmxhdCwgICAg
ICAgICAgLy8gSW5jb21wbGV0ZSBxdWFsaWZpZXIKKyAgICBFdnFTbW9vdGgsICAvLyBJbmNvbXBs
ZXRlIHF1YWxpZmllciwgc21vb3RoIGlzIHRoZSBkZWZhdWx0CisgICAgRXZxRmxhdCwgICAgLy8g
SW5jb21wbGV0ZSBxdWFsaWZpZXIKICAgICBFdnFTbW9vdGhPdXQgPSBFdnFTbW9vdGgsCi0gICAg
RXZxRmxhdE91dCA9IEV2cUZsYXQsCi0gICAgRXZxQ2VudHJvaWRPdXQsICAgLy8gSW1wbGllcyBz
bW9vdGgKKyAgICBFdnFGbGF0T3V0ICAgPSBFdnFGbGF0LAorICAgIEV2cUNlbnRyb2lkT3V0LCAg
Ly8gSW1wbGllcyBzbW9vdGgKICAgICBFdnFTbW9vdGhJbiwKICAgICBFdnFGbGF0SW4sCi0gICAg
RXZxQ2VudHJvaWRJbiwgICAgLy8gSW1wbGllcyBzbW9vdGgKKyAgICBFdnFDZW50cm9pZEluLCAg
Ly8gSW1wbGllcyBzbW9vdGgKIAogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRXZxTGFzdApAQCAt
MzgzLDQzICszOTMsNDggQEAKIC8vCiBpbmxpbmUgY29uc3QgY2hhciogZ2V0UXVhbGlmaWVyU3Ry
aW5nKFRRdWFsaWZpZXIgcSkKIHsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgc3dpdGNo
KHEpCiAgICAgewotICAgIGNhc2UgRXZxVGVtcG9yYXJ5OiAgICAgIHJldHVybiAiVGVtcG9yYXJ5
IjsgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUdsb2JhbDogICAgICAgICByZXR1cm4gIkdsb2Jh
bCI7ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFDb25zdDogICAgICAgICAgcmV0dXJuICJj
b25zdCI7ICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxQ29uc3RSZWFkT25seTogIHJldHVy
biAiY29uc3QiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUF0dHJpYnV0ZTogICAgICBy
ZXR1cm4gImF0dHJpYnV0ZSI7ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFWYXJ5aW5nSW46ICAg
ICAgcmV0dXJuICJ2YXJ5aW5nIjsgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxVmFyeWluZ091
dDogICAgIHJldHVybiAidmFyeWluZyI7ICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUludmFy
aWFudFZhcnlpbmdJbjogcmV0dXJuICJpbnZhcmlhbnQgdmFyeWluZyI7CWJyZWFrOwotICAgIGNh
c2UgRXZxSW52YXJpYW50VmFyeWluZ091dDpyZXR1cm4gImludmFyaWFudCB2YXJ5aW5nIjsJYnJl
YWs7Ci0gICAgY2FzZSBFdnFVbmlmb3JtOiAgICAgICAgcmV0dXJuICJ1bmlmb3JtIjsgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRXZxVmVydGV4SW46ICAgICAgIHJldHVybiAiaW4iOyAgICAgICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEV2cUZyYWdtZW50T3V0OiAgICByZXR1cm4gIm91dCI7ICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFWZXJ0ZXhPdXQ6ICAgICAgcmV0dXJuICJvdXQi
OyAgICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxRnJhZ21lbnRJbjogICAgIHJldHVybiAi
aW4iOyAgICAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUluOiAgICAgICAgICAgICByZXR1
cm4gImluIjsgICAgICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFPdXQ6ICAgICAgICAgICAg
cmV0dXJuICJvdXQiOyAgICAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxSW5PdXQ6ICAgICAg
ICAgIHJldHVybiAiaW5vdXQiOyAgICAgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUluc3RhbmNl
SUQ6ICAgICByZXR1cm4gIkluc3RhbmNlSUQiOyAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFQb3Np
dGlvbjogICAgICAgcmV0dXJuICJQb3NpdGlvbiI7ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZx
UG9pbnRTaXplOiAgICAgIHJldHVybiAiUG9pbnRTaXplIjsgICAgICBicmVhazsKLSAgICBjYXNl
IEV2cUZyYWdDb29yZDogICAgICByZXR1cm4gIkZyYWdDb29yZCI7ICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBFdnFGcm9udEZhY2luZzogICAgcmV0dXJuICJGcm9udEZhY2luZyI7ICAgIGJyZWFrOwot
ICAgIGNhc2UgRXZxRnJhZ0NvbG9yOiAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsgICAgICBicmVh
azsKLSAgICBjYXNlIEV2cUZyYWdEYXRhOiAgICAgICByZXR1cm4gIkZyYWdEYXRhIjsgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAgcmV0dXJuICJGcmFnRGVwdGgiOyAg
ICAgIGJyZWFrOwotICAgIGNhc2UgRXZxU21vb3RoT3V0OiAgICAgIHJldHVybiAic21vb3RoIG91
dCI7ICAgICBicmVhazsKLSAgICBjYXNlIEV2cUNlbnRyb2lkT3V0OiAgICByZXR1cm4gImNlbnRy
b2lkIG91dCI7ICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFGbGF0T3V0OiAgICAgICAgcmV0dXJuICJm
bGF0IG91dCI7ICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxU21vb3RoSW46ICAgICAgIHJldHVy
biAic21vb3RoIGluIjsgICAgICBicmVhazsKLSAgICBjYXNlIEV2cUNlbnRyb2lkSW46ICAgICBy
ZXR1cm4gImNlbnRyb2lkIGluIjsgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFGbGF0SW46ICAgICAg
ICAgcmV0dXJuICJmbGF0IGluIjsgICAgICAgIGJyZWFrOwotICAgIGNhc2UgRXZxTGFzdEZyYWdD
b2xvcjogIHJldHVybiAiTGFzdEZyYWdDb2xvciI7ICBicmVhazsKLSAgICBjYXNlIEV2cUxhc3RG
cmFnRGF0YTogICByZXR1cm4gIkxhc3RGcmFnRGF0YSI7ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsgcmV0dXJuICJ1bmtub3duIHF1YWxpZmllciI7CisgICAgY2FzZSBFdnFU
ZW1wb3Jhcnk6ICAgICAgICAgICAgICByZXR1cm4gIlRlbXBvcmFyeSI7CisgICAgY2FzZSBFdnFH
bG9iYWw6ICAgICAgICAgICAgICAgICByZXR1cm4gIkdsb2JhbCI7CisgICAgY2FzZSBFdnFDb25z
dDogICAgICAgICAgICAgICAgICByZXR1cm4gImNvbnN0IjsKKyAgICBjYXNlIEV2cUF0dHJpYnV0
ZTogICAgICAgICAgICAgIHJldHVybiAiYXR0cmlidXRlIjsKKyAgICBjYXNlIEV2cVZhcnlpbmdJ
bjogICAgICAgICAgICAgIHJldHVybiAidmFyeWluZyI7CisgICAgY2FzZSBFdnFWYXJ5aW5nT3V0
OiAgICAgICAgICAgICByZXR1cm4gInZhcnlpbmciOworICAgIGNhc2UgRXZxVW5pZm9ybTogICAg
ICAgICAgICAgICAgcmV0dXJuICJ1bmlmb3JtIjsKKyAgICBjYXNlIEV2cVZlcnRleEluOiAgICAg
ICAgICAgICAgIHJldHVybiAiaW4iOworICAgIGNhc2UgRXZxRnJhZ21lbnRPdXQ6ICAgICAgICAg
ICAgcmV0dXJuICJvdXQiOworICAgIGNhc2UgRXZxVmVydGV4T3V0OiAgICAgICAgICAgICAgcmV0
dXJuICJvdXQiOworICAgIGNhc2UgRXZxRnJhZ21lbnRJbjogICAgICAgICAgICAgcmV0dXJuICJp
biI7CisgICAgY2FzZSBFdnFJbjogICAgICAgICAgICAgICAgICAgICByZXR1cm4gImluIjsKKyAg
ICBjYXNlIEV2cU91dDogICAgICAgICAgICAgICAgICAgIHJldHVybiAib3V0IjsKKyAgICBjYXNl
IEV2cUluT3V0OiAgICAgICAgICAgICAgICAgIHJldHVybiAiaW5vdXQiOworICAgIGNhc2UgRXZx
Q29uc3RSZWFkT25seTogICAgICAgICAgcmV0dXJuICJjb25zdCI7CisgICAgY2FzZSBFdnFJbnN0
YW5jZUlEOiAgICAgICAgICAgICByZXR1cm4gIkluc3RhbmNlSUQiOworICAgIGNhc2UgRXZxVmVy
dGV4SUQ6ICAgICAgICAgICAgICAgcmV0dXJuICJWZXJ0ZXhJRCI7CisgICAgY2FzZSBFdnFQb3Np
dGlvbjogICAgICAgICAgICAgICByZXR1cm4gIlBvc2l0aW9uIjsKKyAgICBjYXNlIEV2cVBvaW50
U2l6ZTogICAgICAgICAgICAgIHJldHVybiAiUG9pbnRTaXplIjsKKyAgICBjYXNlIEV2cUZyYWdD
b29yZDogICAgICAgICAgICAgIHJldHVybiAiRnJhZ0Nvb3JkIjsKKyAgICBjYXNlIEV2cUZyb250
RmFjaW5nOiAgICAgICAgICAgIHJldHVybiAiRnJvbnRGYWNpbmciOworICAgIGNhc2UgRXZxUG9p
bnRDb29yZDogICAgICAgICAgICAgcmV0dXJuICJQb2ludENvb3JkIjsKKyAgICBjYXNlIEV2cUZy
YWdDb2xvcjogICAgICAgICAgICAgIHJldHVybiAiRnJhZ0NvbG9yIjsKKyAgICBjYXNlIEV2cUZy
YWdEYXRhOiAgICAgICAgICAgICAgIHJldHVybiAiRnJhZ0RhdGEiOworICAgIGNhc2UgRXZxRnJh
Z0RlcHRoRVhUOiAgICAgICAgICAgcmV0dXJuICJGcmFnRGVwdGgiOworICAgIGNhc2UgRXZxRnJh
Z0RlcHRoOiAgICAgICAgICAgICAgcmV0dXJuICJGcmFnRGVwdGgiOworICAgIGNhc2UgRXZxU2Vj
b25kYXJ5RnJhZ0NvbG9yRVhUOiAgcmV0dXJuICJTZWNvbmRhcnlGcmFnQ29sb3JFWFQiOworICAg
IGNhc2UgRXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQ6ICAgcmV0dXJuICJTZWNvbmRhcnlGcmFnRGF0
YUVYVCI7CisgICAgY2FzZSBFdnFMYXN0RnJhZ0NvbG9yOiAgICAgICAgICByZXR1cm4gIkxhc3RG
cmFnQ29sb3IiOworICAgIGNhc2UgRXZxTGFzdEZyYWdEYXRhOiAgICAgICAgICAgcmV0dXJuICJM
YXN0RnJhZ0RhdGEiOworICAgIGNhc2UgRXZxU21vb3RoT3V0OiAgICAgICAgICAgICAgcmV0dXJu
ICJzbW9vdGggb3V0IjsKKyAgICBjYXNlIEV2cUNlbnRyb2lkT3V0OiAgICAgICAgICAgIHJldHVy
biAiY2VudHJvaWQgb3V0IjsKKyAgICBjYXNlIEV2cUZsYXRPdXQ6ICAgICAgICAgICAgICAgIHJl
dHVybiAiZmxhdCBvdXQiOworICAgIGNhc2UgRXZxU21vb3RoSW46ICAgICAgICAgICAgICAgcmV0
dXJuICJzbW9vdGggaW4iOworICAgIGNhc2UgRXZxRmxhdEluOiAgICAgICAgICAgICAgICAgcmV0
dXJuICJmbGF0IGluIjsKKyAgICBjYXNlIEV2cUNlbnRyb2lkSW46ICAgICAgICAgICAgIHJldHVy
biAiY2VudHJvaWQgaW4iOworICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAgcmV0
dXJuICJ1bmtub3duIHF1YWxpZmllciI7CiAgICAgfQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgog
fQogCiBpbmxpbmUgY29uc3QgY2hhciogZ2V0TWF0cml4UGFja2luZ1N0cmluZyhUTGF5b3V0TWF0
cml4UGFja2luZyBtcHEpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDI4ICsxMSwzMSBAQAogY2xhc3MgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50
ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRpb25N
YXJrZXIoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3ImIGVtdWxhdG9yKQotICAgICAgICA6IG1FbXVs
YXRvcihlbXVsYXRvcikKKyAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRpb25NYXJrZXIoQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IgJmVtdWxhdG9yKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIo
dHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICBtRW11bGF0b3IoZW11bGF0b3IpCiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtVW5hcnkqIG5vZGUpCisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VW5hcnkgKm5vZGUpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlz
aXQpIHsKLSAgICAgICAgICAgIGJvb2wgbmVlZFRvRW11bGF0ZSA9IG1FbXVsYXRvci5TZXRGdW5j
dGlvbkNhbGxlZCgKLSAgICAgICAgICAgICAgICBub2RlLT5nZXRPcCgpLCBub2RlLT5nZXRPcGVy
YW5kKCktPmdldFR5cGUoKSk7CisgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgYm9vbCBuZWVkVG9FbXVsYXRlID0gbUVtdWxhdG9yLlNldEZ1bmN0
aW9uQ2FsbGVkKG5vZGUtPmdldE9wKCksIG5vZGUtPmdldE9wZXJhbmQoKS0+Z2V0VHlwZSgpKTsK
ICAgICAgICAgICAgIGlmIChuZWVkVG9FbXVsYXRlKQogICAgICAgICAgICAgICAgIG5vZGUtPnNl
dFVzZUVtdWxhdGVkRnVuY3Rpb24oKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUqIG5vZGUpCisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCkgeworICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIEhlcmUgd2UgaGFuZGxlIGFsbCB0aGUgYnVpbHQtaW4gZnVu
Y3Rpb25zIGluc3RlYWQgb2YgdGhlIG9uZXMgd2UKICAgICAgICAgICAgIC8vIGN1cnJlbnRseSBp
ZGVudGlmaWVkIGFzIHByb2JsZW1hdGljLgotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRP
cCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKICAgICAgICAgICAgICAgICBjYXNl
IEVPcEdyZWF0ZXJUaGFuOgogICAgICAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoK
QEAgLTU5LDE0ICs2MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UmIHNlcXVlbmNlID0g
Kihub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0
IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwogICAg
ICAgICAgICAgYm9vbCBuZWVkVG9FbXVsYXRlID0gZmFsc2U7CiAgICAgICAgICAgICAvLyBSaWdo
dCBub3cgd2Ugb25seSBoYW5kbGUgYnVpbHQtaW4gZnVuY3Rpb25zIHdpdGggdHdvIG9yIHRocmVl
IHBhcmFtZXRlcnMuCiAgICAgICAgICAgICBpZiAoc2VxdWVuY2Uuc2l6ZSgpID09IDIpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBwYXJhbTEgPSBzZXF1ZW5j
ZVswXS0+Z2V0QXNUeXBlZCgpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogcGFyYW0y
ID0gc2VxdWVuY2VbMV0tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKnBhcmFtMSA9IHNlcXVlbmNlWzBdLT5nZXRBc1R5cGVkKCk7CisgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkICpwYXJhbTIgPSBzZXF1ZW5jZVsxXS0+Z2V0QXNUeXBlZCgpOwogICAgICAg
ICAgICAgICAgIGlmICghcGFyYW0xIHx8ICFwYXJhbTIpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgICAgIG5lZWRUb0VtdWxhdGUgPSBtRW11bGF0b3IuU2V0
RnVuY3Rpb25DYWxsZWQoCkBAIC03NCw5ICs3Nyw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlIGlmIChzZXF1ZW5jZS5zaXplKCkgPT0gMykKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQqIHBhcmFtMSA9IHNlcXVlbmNlWzBdLT5nZXRBc1R5cGVk
KCk7Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkKiBwYXJhbTIgPSBzZXF1ZW5jZVsxXS0+
Z2V0QXNUeXBlZCgpOwotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogcGFyYW0zID0gc2Vx
dWVuY2VbMl0tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnBh
cmFtMSA9IHNlcXVlbmNlWzBdLT5nZXRBc1R5cGVkKCk7CisgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICpwYXJhbTIgPSBzZXF1ZW5jZVsxXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqcGFyYW0zID0gc2VxdWVuY2VbMl0tPmdldEFzVHlwZWQoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXBhcmFtMSB8fCAhcGFyYW0yIHx8ICFwYXJhbTMpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIG5lZWRUb0VtdWxhdGUg
PSBtRW11bGF0b3IuU2V0RnVuY3Rpb25DYWxsZWQoCkBAIC05NCwzNCArOTcsMjggQEAKICAgICB9
CiAKICAgcHJpdmF0ZToKLSAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYgbUVtdWxhdG9yOwor
ICAgIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICZtRW11bGF0b3I7CiB9OwogCiBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKQoge30KIAotdm9pZCBCdWls
dEluRnVuY3Rpb25FbXVsYXRvcjo6YWRkRW11bGF0ZWRGdW5jdGlvbigKLSAgICBUT3BlcmF0b3Ig
b3AsIGNvbnN0IFRUeXBlJiBwYXJhbSwKLSAgICBjb25zdCBjaGFyKiBlbXVsYXRlZEZ1bmN0aW9u
RGVmaW5pdGlvbikKK3ZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVu
Y3Rpb24oVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVu
Y3Rpb25EZWZpbml0aW9uKQogewotICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tGdW5jdGlvbklkKG9w
LCBwYXJhbSldID0KLSAgICAgICAgc3RkOjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRp
b24pOworICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tGdW5jdGlvbklkKG9wLCBwYXJhbSldID0gc3Rk
OjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOwogfQogCi12b2lkIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1bmN0aW9uKAotICAgIFRPcGVyYXRvciBvcCwg
Y29uc3QgVFR5cGUmIHBhcmFtMSwgY29uc3QgVFR5cGUmIHBhcmFtMiwKLSAgICBjb25zdCBjaGFy
KiBlbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbikKK3ZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3I6OmFkZEVtdWxhdGVkRnVuY3Rpb24oVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0x
LCBjb25zdCBUVHlwZSAqcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbikK
IHsKLSAgICBtRW11bGF0ZWRGdW5jdGlvbnNbRnVuY3Rpb25JZChvcCwgcGFyYW0xLCBwYXJhbTIp
XSA9Ci0gICAgICAgIHN0ZDo6c3RyaW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKyAg
ICBtRW11bGF0ZWRGdW5jdGlvbnNbRnVuY3Rpb25JZChvcCwgcGFyYW0xLCBwYXJhbTIpXSA9IHN0
ZDo6c3RyaW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKIH0KIAotdm9pZCBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvcjo6YWRkRW11bGF0ZWRGdW5jdGlvbigKLSAgICBUT3BlcmF0b3Igb3As
IGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBwYXJhbTIsIGNvbnN0IFRUeXBlJiBw
YXJhbTMsCi0gICAgY29uc3QgY2hhciogZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCit2b2lk
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBv
cCwgY29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFt
MywgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCiB7Ci0gICAgbUVtdWxh
dGVkRnVuY3Rpb25zW0Z1bmN0aW9uSWQob3AsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXSA9Ci0g
ICAgICAgIHN0ZDo6c3RyaW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICBtRW11
bGF0ZWRGdW5jdGlvbnNbRnVuY3Rpb25JZChvcCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMyldID0g
c3RkOjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOwogfQogCiBib29sIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yOjpJc091dHB1dEVtcHR5KCkgY29uc3QKQEAgLTEyOSw0OCArMTI2
LDQ4IEBACiAgICAgcmV0dXJuIChtRnVuY3Rpb25zLnNpemUoKSA9PSAwKTsKIH0KIAotdm9pZCBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6T3V0cHV0RW11bGF0ZWRGdW5jdGlvbnMoCi0gICAgVElu
Zm9TaW5rQmFzZSYgb3V0KSBjb25zdAordm9pZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6T3V0
cHV0RW11bGF0ZWRGdW5jdGlvbnMoVEluZm9TaW5rQmFzZSAmb3V0KSBjb25zdAogewotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZ1bmN0aW9ucy5zaXplKCk7ICsraSkgeworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbUZ1bmN0aW9ucy5zaXplKCk7ICsraSkKKyAgICB7CiAgICAgICAg
IG91dCA8PCBtRW11bGF0ZWRGdW5jdGlvbnMuZmluZChtRnVuY3Rpb25zW2ldKS0+c2Vjb25kIDw8
ICJcblxuIjsKICAgICB9CiB9CiAKLWJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1
bmN0aW9uQ2FsbGVkKAotICAgIFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUmIHBhcmFtKQorYm9v
bCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9w
LCBjb25zdCBUVHlwZSAmcGFyYW0pCiB7Ci0gICAgcmV0dXJuIFNldEZ1bmN0aW9uQ2FsbGVkKEZ1
bmN0aW9uSWQob3AsIHBhcmFtKSk7CisgICAgcmV0dXJuIFNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0
aW9uSWQob3AsICZwYXJhbSkpOwogfQogCi1ib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpT
ZXRGdW5jdGlvbkNhbGxlZCgKLSAgICBUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEs
IGNvbnN0IFRUeXBlJiBwYXJhbTIpCitib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpTZXRG
dW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICZwYXJhbTEsIGNvbnN0IFRU
eXBlICZwYXJhbTIpCiB7Ci0gICAgcmV0dXJuIFNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0aW9uSWQo
b3AsIHBhcmFtMSwgcGFyYW0yKSk7CisgICAgcmV0dXJuIFNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0
aW9uSWQob3AsICZwYXJhbTEsICZwYXJhbTIpKTsKIH0KIAotYm9vbCBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoCi0gICAgVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlw
ZSYgcGFyYW0xLCBjb25zdCBUVHlwZSYgcGFyYW0yLCBjb25zdCBUVHlwZSYgcGFyYW0zKQorYm9v
bCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFR5cGUgJnBhcmFtMSwgY29uc3QgVFR5cGUgJnBhcmFtMiwgY29uc3QgVFR5cGUgJnBhcmFtMykK
IHsKLSAgICByZXR1cm4gU2V0RnVuY3Rpb25DYWxsZWQoRnVuY3Rpb25JZChvcCwgcGFyYW0xLCBw
YXJhbTIsIHBhcmFtMykpOworICAgIHJldHVybiBTZXRGdW5jdGlvbkNhbGxlZChGdW5jdGlvbklk
KG9wLCAmcGFyYW0xLCAmcGFyYW0yLCAmcGFyYW0zKSk7CiB9CiAKLWJvb2wgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OlNldEZ1bmN0aW9uQ2FsbGVkKAotICAgIGNvbnN0IEZ1bmN0aW9uSWQmIGZ1
bmN0aW9uSWQpIHsKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1bmN0aW9uQ2Fs
bGVkKGNvbnN0IEZ1bmN0aW9uSWQgJmZ1bmN0aW9uSWQpCit7CiAgICAgaWYgKG1FbXVsYXRlZEZ1
bmN0aW9ucy5maW5kKGZ1bmN0aW9uSWQpICE9IG1FbXVsYXRlZEZ1bmN0aW9ucy5lbmQoKSkKICAg
ICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZ1bmN0aW9ucy5zaXplKCk7ICsr
aSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GdW5jdGlvbnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtRnVuY3Rpb25zW2ldID09IGZ1bmN0aW9u
SWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgbUZ1
bmN0aW9ucy5wdXNoX2JhY2soZnVuY3Rpb25JZCk7CisgICAgICAgIC8vIENvcHkgdGhlIGZ1bmN0
aW9uSWQgaWYgaXQgbmVlZHMgdG8gYmUgc3RvcmVkLCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgVFR5
cGUgcG9pbnRlcnMgaW5zaWRlCisgICAgICAgIC8vIHJlbWFpbiB2YWxpZCBhbmQgY29uc3RhbnQu
CisgICAgICAgIG1GdW5jdGlvbnMucHVzaF9iYWNrKGZ1bmN0aW9uSWQuZ2V0Q29weSgpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6TWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24o
Ci0gICAgVEludGVybU5vZGUqIHJvb3QpCit2b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpN
YXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxhdGlvbihUSW50ZXJtTm9kZSAqcm9vdCkKIHsKICAg
ICBBU1NFUlQocm9vdCk7CiAKQEAgLTE4OCwzMiArMTg1LDMwIEBACiAKIC8vc3RhdGljCiBUU3Ry
aW5nIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpHZXRFbXVsYXRlZEZ1bmN0aW9uTmFtZSgKLSAg
ICBjb25zdCBUU3RyaW5nJiBuYW1lKQorICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUpCiB7CiAgICAg
QVNTRVJUKG5hbWVbbmFtZS5sZW5ndGgoKSAtIDFdID09ICcoJyk7CiAgICAgcmV0dXJuICJ3ZWJn
bF8iICsgbmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGgoKSAtIDEpICsgIl9lbXUoIjsKIH0KIAot
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6OkZ1bmN0aW9uSWQKLSAgICAoVE9w
ZXJhdG9yIG9wLCBjb25zdCBUVHlwZSYgcGFyYW0pCitCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6
RnVuY3Rpb25JZDo6RnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICpwYXJhbSkK
ICAgICA6IG1PcChvcCksCiAgICAgICBtUGFyYW0xKHBhcmFtKSwKLSAgICAgIG1QYXJhbTIoRWJ0
Vm9pZCksCi0gICAgICBtUGFyYW0zKEVidFZvaWQpCisgICAgICBtUGFyYW0yKG5ldyBUVHlwZShF
YnRWb2lkKSksCisgICAgICBtUGFyYW0zKG5ldyBUVHlwZShFYnRWb2lkKSkKIHsKIH0KIAotQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6OkZ1bmN0aW9uSWQKLSAgICAoVE9wZXJh
dG9yIG9wLCBjb25zdCBUVHlwZSYgcGFyYW0xLCBjb25zdCBUVHlwZSYgcGFyYW0yKQorQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6OkZ1bmN0aW9uSWQoVE9wZXJhdG9yIG9wLCBj
b25zdCBUVHlwZSAqcGFyYW0xLCBjb25zdCBUVHlwZSAqcGFyYW0yKQogICAgIDogbU9wKG9wKSwK
ICAgICAgIG1QYXJhbTEocGFyYW0xKSwKICAgICAgIG1QYXJhbTIocGFyYW0yKSwKLSAgICAgIG1Q
YXJhbTMoRWJ0Vm9pZCkKKyAgICAgIG1QYXJhbTMobmV3IFRUeXBlKEVidFZvaWQpKQogewogfQog
Ci1CdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6RnVuY3Rpb25JZAotICAgIChU
T3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBwYXJhbTIsIGNv
bnN0IFRUeXBlJiBwYXJhbTMpCitCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6
RnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLCBjb25zdCBUVHlwZSAqcGFyYW0y
LCBjb25zdCBUVHlwZSAqcGFyYW0zKQogICAgIDogbU9wKG9wKSwKICAgICAgIG1QYXJhbTEocGFy
YW0xKSwKICAgICAgIG1QYXJhbTIocGFyYW0yKSwKQEAgLTIyMSwyNSArMjE2LDI4IEBACiB7CiB9
CiAKLWJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6Om9wZXJhdG9yPT0K
LSAgICAoY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQmIG90aGVyKSBj
b25zdAorYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6b3BlcmF0b3I9
PShjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCAmb3RoZXIpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIChtT3AgPT0gb3RoZXIubU9wICYmCi0gICAgICAgIG1QYXJhbTEgPT0g
b3RoZXIubVBhcmFtMSAmJgotICAgICAgICBtUGFyYW0yID09IG90aGVyLm1QYXJhbTIgJiYKLSAg
ICAgICAgbVBhcmFtMyA9PSBvdGhlci5tUGFyYW0zKTsKKyAgICAgICAgICAgICptUGFyYW0xID09
ICpvdGhlci5tUGFyYW0xICYmCisgICAgICAgICAgICAqbVBhcmFtMiA9PSAqb3RoZXIubVBhcmFt
MiAmJgorICAgICAgICAgICAgKm1QYXJhbTMgPT0gKm90aGVyLm1QYXJhbTMpOwogfQogCi1ib29s
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpvcGVyYXRvcjwKLSAgICAoY29u
c3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQmIG90aGVyKSBjb25zdAorYm9v
bCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6b3BlcmF0b3I8KGNvbnN0IEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkICZvdGhlcikgY29uc3QKIHsKICAgICBp
ZiAobU9wICE9IG90aGVyLm1PcCkKICAgICAgICAgcmV0dXJuIG1PcCA8IG90aGVyLm1PcDsKLSAg
ICBpZiAobVBhcmFtMSAhPSBvdGhlci5tUGFyYW0xKQotICAgICAgICByZXR1cm4gbVBhcmFtMSA8
IG90aGVyLm1QYXJhbTE7Ci0gICAgaWYgKG1QYXJhbTIgIT0gb3RoZXIubVBhcmFtMikKLSAgICAg
ICAgcmV0dXJuIG1QYXJhbTIgPCBvdGhlci5tUGFyYW0yOwotICAgIGlmIChtUGFyYW0zICE9IG90
aGVyLm1QYXJhbTMpCi0gICAgICAgcmV0dXJuIG1QYXJhbTMgPCBvdGhlci5tUGFyYW0zOworICAg
IGlmICgqbVBhcmFtMSAhPSAqb3RoZXIubVBhcmFtMSkKKyAgICAgICAgcmV0dXJuICptUGFyYW0x
IDwgKm90aGVyLm1QYXJhbTE7CisgICAgaWYgKCptUGFyYW0yICE9ICpvdGhlci5tUGFyYW0yKQor
ICAgICAgICByZXR1cm4gKm1QYXJhbTIgPCAqb3RoZXIubVBhcmFtMjsKKyAgICBpZiAoKm1QYXJh
bTMgIT0gKm90aGVyLm1QYXJhbTMpCisgICAgICAgcmV0dXJuICptUGFyYW0zIDwgKm90aGVyLm1Q
YXJhbTM7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyBhbGwgZmllbGRzIGFyZSBlcXVhbAogfQorCitC
dWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cjo6RnVuY3Rpb25JZDo6Z2V0Q29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEZ1bmN0aW9uSWQo
bU9wLCBuZXcgVFR5cGUoKm1QYXJhbTEpLCBuZXcgVFR5cGUoKm1QYXJhbTIpLCBuZXcgVFR5cGUo
Km1QYXJhbTMpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjEsMjMgKzIxLDI1IEBACiAgIHB1YmxpYzoKICAgICBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcigpOwogCi0gICAgdm9pZCBNYXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxh
dGlvbihUSW50ZXJtTm9kZSogcm9vdCk7CisgICAgdm9pZCBNYXJrQnVpbHRJbkZ1bmN0aW9uc0Zv
ckVtdWxhdGlvbihUSW50ZXJtTm9kZSAqcm9vdCk7CiAKICAgICB2b2lkIENsZWFudXAoKTsKIAog
ICAgIC8vICJuYW1lKCIgYmVjb21lcyAid2ViZ2xfbmFtZV9lbXUoIi4KLSAgICBzdGF0aWMgVFN0
cmluZyBHZXRFbXVsYXRlZEZ1bmN0aW9uTmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKKyAgICBz
dGF0aWMgVFN0cmluZyBHZXRFbXVsYXRlZEZ1bmN0aW9uTmFtZShjb25zdCBUU3RyaW5nICZuYW1l
KTsKIAogICAgIGJvb2wgSXNPdXRwdXRFbXB0eSgpIGNvbnN0OwogCiAgICAgLy8gT3V0cHV0IGZ1
bmN0aW9uIGVtdWxhdGlvbiBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBiZSBiZWZvcmUgYW55IG90
aGVyCiAgICAgLy8gc2hhZGVyIHNvdXJjZS4KLSAgICB2b2lkIE91dHB1dEVtdWxhdGVkRnVuY3Rp
b25zKFRJbmZvU2lua0Jhc2UmIG91dCkgY29uc3Q7CisgICAgdm9pZCBPdXRwdXRFbXVsYXRlZEZ1
bmN0aW9ucyhUSW5mb1NpbmtCYXNlICZvdXQpIGNvbnN0OwogCiAgICAgLy8gQWRkIGZ1bmN0aW9u
cyB0aGF0IG5lZWQgdG8gYmUgZW11bGF0ZWQuCi0gICAgdm9pZCBhZGRFbXVsYXRlZEZ1bmN0aW9u
KFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUmIHBhcmFtLCBjb25zdCBjaGFyKiBlbXVsYXRlZEZ1
bmN0aW9uRGVmaW5pdGlvbik7Ci0gICAgdm9pZCBhZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRv
ciBvcCwgY29uc3QgVFR5cGUmIHBhcmFtMSwgY29uc3QgVFR5cGUmIHBhcmFtMiwgY29uc3QgY2hh
ciogZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOwotICAgIHZvaWQgYWRkRW11bGF0ZWRGdW5j
dGlvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBwYXJh
bTIsIGNvbnN0IFRUeXBlJiBwYXJhbTMsIGNvbnN0IGNoYXIqIGVtdWxhdGVkRnVuY3Rpb25EZWZp
bml0aW9uKTsKKyAgICB2b2lkIGFkZEVtdWxhdGVkRnVuY3Rpb24oVE9wZXJhdG9yIG9wLCBjb25z
dCBUVHlwZSAqcGFyYW0sIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsK
KyAgICB2b2lkIGFkZEVtdWxhdGVkRnVuY3Rpb24oVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAq
cGFyYW0xLCBjb25zdCBUVHlwZSAqcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgdm9pZCBhZGRF
bXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3Qg
VFR5cGUgKnBhcmFtMiwgY29uc3QgVFR5cGUgKnBhcmFtMywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOwogCiAgIHBy
aXZhdGU6CiAgICAgY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uTWFya2VyOwpAQCAtNDYs
MjggKzQ4LDMyIEBACiAgICAgLy8gZW11bGF0ZWQuIElmIHRoZSBmdW5jdGlvbiBpcyBub3QgaW4g
bUVtdWxhdGVkRnVuY3Rpb25zLCB0aGlzIGJlY29tZXMgYQogICAgIC8vIG5vLW9wLiBSZXR1cm5z
IHRydWUgaWYgdGhlIGZ1bmN0aW9uIGNhbGwgbmVlZHMgdG8gYmUgcmVwbGFjZWQgd2l0aCBhbgog
ICAgIC8vIGVtdWxhdGVkIG9uZS4KLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVyYXRv
ciBvcCwgY29uc3QgVFR5cGUmIHBhcmFtKTsKLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVkKAot
ICAgICAgICBUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBw
YXJhbTIpOwotICAgIGJvb2wgU2V0RnVuY3Rpb25DYWxsZWQoCi0gICAgICAgIFRPcGVyYXRvciBv
cCwgY29uc3QgVFR5cGUmIHBhcmFtMSwgY29uc3QgVFR5cGUmIHBhcmFtMiwgY29uc3QgVFR5cGUm
IHBhcmFtMyk7CisgICAgYm9vbCBTZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsIGNvbnN0
IFRUeXBlICZwYXJhbSk7CisgICAgYm9vbCBTZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3As
IGNvbnN0IFRUeXBlICZwYXJhbTEsIGNvbnN0IFRUeXBlICZwYXJhbTIpOworICAgIGJvb2wgU2V0
RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAmcGFyYW0xLCBjb25zdCBU
VHlwZSAmcGFyYW0yLCBjb25zdCBUVHlwZSAmcGFyYW0zKTsKIAogICAgIGNsYXNzIEZ1bmN0aW9u
SWQgewogICAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbklkKFRPcGVyYXRvciBvcCwgY29u
c3QgVFR5cGUmIHBhcmFtKTsKLSAgICAgICAgRnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsIGNvbnN0
IFRUeXBlJiBwYXJhbTEsIGNvbnN0IFRUeXBlJiBwYXJhbTIpOwotICAgICAgICBGdW5jdGlvbklk
KFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUmIHBhcmFtMSwgY29uc3QgVFR5cGUmIHBhcmFtMiwg
Y29uc3QgVFR5cGUmIHBhcmFtMyk7CisgICAgICAgIEZ1bmN0aW9uSWQoVE9wZXJhdG9yIG9wLCBj
b25zdCBUVHlwZSAqcGFyYW0pOworICAgICAgICBGdW5jdGlvbklkKFRPcGVyYXRvciBvcCwgY29u
c3QgVFR5cGUgKnBhcmFtMSwgY29uc3QgVFR5cGUgKnBhcmFtMik7CisgICAgICAgIEZ1bmN0aW9u
SWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0xLCBjb25zdCBUVHlwZSAqcGFyYW0y
LCBjb25zdCBUVHlwZSAqcGFyYW0zKTsKIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RnVuY3Rpb25JZCYgb3RoZXIpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBG
dW5jdGlvbklkJiBvdGhlcikgY29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
dW5jdGlvbklkICZvdGhlcikgY29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEZ1
bmN0aW9uSWQgJm90aGVyKSBjb25zdDsKKworICAgICAgICBGdW5jdGlvbklkIGdldENvcHkoKSBj
b25zdDsKICAgICAgIHByaXZhdGU6CiAgICAgICAgIFRPcGVyYXRvciBtT3A7Ci0gICAgICAgIFRU
eXBlIG1QYXJhbTE7Ci0gICAgICAgIFRUeXBlIG1QYXJhbTI7Ci0gICAgICAgIFRUeXBlIG1QYXJh
bTM7CisKKyAgICAgICAgLy8gVGhlIG1lbW9yeSB0aGF0IHRoZXNlIFRUeXBlIG9iamVjdHMgdXNl
IGlzIGZyZWVkIGJ5IFBvb2xBbGxvY2F0b3IuIFRoZSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcidz
IGxpZmV0aW1lCisgICAgICAgIC8vIGNhbiBleHRlbmQgdW50aWwgYWZ0ZXIgdGhlIG1lbW9yeSBw
b29sIGlzIGZyZWVkLCBidXQgdGhhdCdzIG5vdCBhbiBpc3N1ZSBzaW5jZSB0aGlzIGNsYXNzIG5l
dmVyIGRlc3RydWN0cworICAgICAgICAvLyB0aGVzZSBvYmplY3RzLgorICAgICAgICBjb25zdCBU
VHlwZSAqbVBhcmFtMTsKKyAgICAgICAgY29uc3QgVFR5cGUgKm1QYXJhbTI7CisgICAgICAgIGNv
bnN0IFRUeXBlICptUGFyYW0zOwogICAgIH07CiAKLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVk
KGNvbnN0IEZ1bmN0aW9uSWQmIGZ1bmN0aW9uSWQpOworICAgIGJvb2wgU2V0RnVuY3Rpb25DYWxs
ZWQoY29uc3QgRnVuY3Rpb25JZCAmZnVuY3Rpb25JZCk7CiAKICAgICAvLyBNYXAgZnJvbSBmdW5j
dGlvbiBpZCB0byBlbXVsYXRlZCBmdW5jdGlvbiBkZWZpbml0aW9uCiAgICAgc3RkOjptYXA8RnVu
Y3Rpb25JZCwgc3RkOjpzdHJpbmc+IG1FbXVsYXRlZEZ1bmN0aW9uczsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yR0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNyw5ICs3LDExIEBACiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaCIKKyNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9TeW1ib2xUYWJsZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdM
U0wuaCIKIAotdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMKEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVyVHlwZSkKK3ZvaWQgSW5pdEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVyVHlwZSkKIHsKICAgICAvLyB3ZSB1c2UgbWFj
cm9zIGhlcmUgaW5zdGVhZCBvZiBmdW5jdGlvbiBkZWZpbml0aW9ucyB0byB3b3JrIGFyb3VuZCBt
b3JlIEdMU0wKICAgICAvLyBjb21waWxlciBidWdzLCBpbiBwYXJ0aWN1bGFyIG9uIE5WSURJQSBo
YXJkd2FyZSBvbiBNYWMgT1NYLiBNYWNyb3MgYXJlCkBAIC0xNywxMCArMTksMTAgQEAKICAgICAv
LyBldmFsdWF0ZWQuIFRoaXMgaXMgdW5saWtlbHkgdG8gc2hvdyB1cCBpbiByZWFsIHNoYWRlcnMs
IGJ1dCBpcyBzb21ldGhpbmcgdG8KICAgICAvLyBjb25zaWRlci4KIAotICAgIFRUeXBlIGZsb2F0
MShFYnRGbG9hdCk7Ci0gICAgVFR5cGUgZmxvYXQyKEVidEZsb2F0LCAyKTsKLSAgICBUVHlwZSBm
bG9hdDMoRWJ0RmxvYXQsIDMpOwotICAgIFRUeXBlIGZsb2F0NChFYnRGbG9hdCwgNCk7CisgICAg
Y29uc3QgVFR5cGUgKmZsb2F0MSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCk7CisgICAgY29u
c3QgVFR5cGUgKmZsb2F0MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMik7CisgICAgY29u
c3QgVFR5cGUgKmZsb2F0MyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMyk7CisgICAgY29u
c3QgVFR5cGUgKmZsb2F0NCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCk7CiAKICAgICBp
ZiAoc2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewpAQCAtMzUsMyArMzcs
MTUzIEBACiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE5vcm1hbGl6ZSwgZmxvYXQx
LCAiI2RlZmluZSB3ZWJnbF9ub3JtYWxpemVfZW11KHgpICgoeCkgPT0gMC4wID8gMC4wIDogKCh4
KSA+IDAuMCA/IDEuMCA6IC0xLjApKSIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihF
T3BSZWZsZWN0LCBmbG9hdDEsIGZsb2F0MSwgIiNkZWZpbmUgd2ViZ2xfcmVmbGVjdF9lbXUoSSwg
TikgKChJKSAtIDIuMCAqIChOKSAqIChJKSAqIChOKSkiKTsKIH0KKworLy8gRW11bGF0ZSBidWls
dC1pbiBmdW5jdGlvbnMgbWlzc2luZyBmcm9tIEdMU0wgMS4zMCBhbmQgaGlnaGVyCit2b2lkIElu
aXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckdMU0xNaXNzaW5nRnVuY3Rpb25zKEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEdM
U0xWZXJzaW9uKQoreworICAgIC8vIEVtdWxhdGUgcGFja1Nub3JtMngxNiwgcGFja0hhbGYyeDE2
LCB1bnBhY2tTbm9ybTJ4MTYsIGFuZCB1bnBhY2tIYWxmMngxNiAoR0xTTCA0LjIwKQorICAgIC8v
IGJ5IHVzaW5nIGZsb2F0Qml0c1RvSW50LCBmbG9hdEJpdHNUb1VpbnQsIGludEJpdHNUb0Zsb2F0
LCBhbmQgdWludEJpdHNUb0Zsb2F0IChHTFNMIDMuMzApLgorICAgIGlmICh0YXJnZXRHTFNMVmVy
c2lvbiA+PSBHTFNMX1ZFUlNJT05fMzMwICYmIHRhcmdldEdMU0xWZXJzaW9uIDwgR0xTTF9WRVJT
SU9OXzQyMCkKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICpmbG9hdDIgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0RmxvYXQsIDIpOworICAgICAgICBjb25zdCBUVHlwZSAqdWludDEgPSBUQ2FjaGU6
OmdldFR5cGUoRWJ0VUludCk7CisKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAg
ICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wUGFja1Nub3JtMngxNiwgZmxvYXQyLAorICAg
ICAgICAgICAgInVpbnQgd2ViZ2xfcGFja1Nub3JtMngxNl9lbXUodmVjMiB2KVxuIgorICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgI2lmIGRlZmluZWQoR0xfQVJCX3NoYWRpbmdf
bGFuZ3VhZ2VfcGFja2luZylcbiIKKyAgICAgICAgICAgICIgICAgICAgIHJldHVybiBwYWNrU25v
cm0yeDE2KHYpO1xuIgorICAgICAgICAgICAgIiAgICAjZWxzZVxuIgorICAgICAgICAgICAgIiAg
ICAgICAgaW50IHggPSBpbnQocm91bmQoY2xhbXAodi54LCAtMS4wLCAxLjApICogMzI3NjcuMCkp
O1xuIgorICAgICAgICAgICAgIiAgICAgICAgaW50IHkgPSBpbnQocm91bmQoY2xhbXAodi55LCAt
MS4wLCAxLjApICogMzI3NjcuMCkpO1xuIgorICAgICAgICAgICAgIiAgICAgICAgcmV0dXJuIHVp
bnQoKHkgPDwgMTYpIHwgKHggJiAweEZGRkYpKTtcbiIKKyAgICAgICAgICAgICIgICAgI2VuZGlm
XG4iCisgICAgICAgICAgICAifVxuIik7CisgICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlv
bihFT3BVbnBhY2tTbm9ybTJ4MTYsIHVpbnQxLAorICAgICAgICAgICAgIiNpZiAhZGVmaW5lZChH
TF9BUkJfc2hhZGluZ19sYW5ndWFnZV9wYWNraW5nKVxuIgorICAgICAgICAgICAgIiAgICBmbG9h
dCB3ZWJnbF9mcm9tU25vcm0odWludCB4KVxuIgorICAgICAgICAgICAgIiAgICB7XG4iCisgICAg
ICAgICAgICAiICAgICAgICBpbnQgeGkgPSAoaW50KHgpICYgMHg3RkZGKSAtIChpbnQoeCkgJiAw
eDgwMDApO1xuIgorICAgICAgICAgICAgIiAgICAgICAgcmV0dXJuIGNsYW1wKGZsb2F0KHhpKSAv
IDMyNzY3LjAsIC0xLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAg
ICAgICIjZW5kaWZcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2ZWMyIHdlYmds
X3VucGFja1Nub3JtMngxNl9lbXUodWludCB1KVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICIgICAgI2lmIGRlZmluZWQoR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfcGFja2luZylc
biIKKyAgICAgICAgICAgICIgICAgICAgIHJldHVybiB1bnBhY2tTbm9ybTJ4MTYodSk7XG4iCisg
ICAgICAgICAgICAiICAgICNlbHNlXG4iCisgICAgICAgICAgICAiICAgICAgICB1aW50IHkgPSAo
dSA+PiAxNik7XG4iCisgICAgICAgICAgICAiICAgICAgICB1aW50IHggPSB1O1xuIgorICAgICAg
ICAgICAgIiAgICAgICAgcmV0dXJuIHZlYzIod2ViZ2xfZnJvbVNub3JtKHgpLCB3ZWJnbF9mcm9t
U25vcm0oeSkpO1xuIgorICAgICAgICAgICAgIiAgICAjZW5kaWZcbiIKKyAgICAgICAgICAgICJ9
XG4iKTsKKyAgICAgICAgLy8gRnVuY3Rpb25zIHVpbnQgd2ViZ2xfZjMydG9mMTYoZmxvYXQgdmFs
KSBhbmQgZmxvYXQgd2ViZ2xfZjE2dG9mMzIodWludCB2YWwpIGFyZQorICAgICAgICAvLyBiYXNl
ZCBvbiB0aGUgT3BlbkdMIHJlZGJvb2sgQXBwZW5kaXggU2Vzc2lvbiAiRmxvYXRpbmctUG9pbnQg
Rm9ybWF0cyBVc2VkIGluIE9wZW5HTCIuCisgICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlv
bihFT3BQYWNrSGFsZjJ4MTYsIGZsb2F0MiwKKyAgICAgICAgICAgICIjaWYgIWRlZmluZWQoR0xf
QVJCX3NoYWRpbmdfbGFuZ3VhZ2VfcGFja2luZylcbiIKKyAgICAgICAgICAgICIgICAgdWludCB3
ZWJnbF9mMzJ0b2YxNihmbG9hdCB2YWwpXG4iCisgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAg
ICAgICAgICIgICAgICAgIHVpbnQgZjMyID0gZmxvYXRCaXRzVG9VaW50KHZhbCk7XG4iCisgICAg
ICAgICAgICAiICAgICAgICB1aW50IGYxNiA9IDB1O1xuIgorICAgICAgICAgICAgIiAgICAgICAg
dWludCBzaWduID0gKGYzMiA+PiAxNikgJiAweDgwMDB1O1xuIgorICAgICAgICAgICAgIiAgICAg
ICAgaW50IGV4cG9uZW50ID0gaW50KChmMzIgPj4gMjMpICYgMHhGRnUpIC0gMTI3O1xuIgorICAg
ICAgICAgICAgIiAgICAgICAgdWludCBtYW50aXNzYSA9IGYzMiAmIDB4MDA3RkZGRkZ1O1xuIgor
ICAgICAgICAgICAgIiAgICAgICAgaWYgKGV4cG9uZW50ID09IDEyOClcbiIKKyAgICAgICAgICAg
ICIgICAgICAgIHtcbiIKKyAgICAgICAgICAgICIgICAgICAgICAgICAvLyBJbmZpbml0eSBvciBO
YU5cbiIKKyAgICAgICAgICAgICIgICAgICAgICAgICAvLyBOYU4gYml0cyB0aGF0IGFyZSBtYXNr
ZWQgb3V0IGJ5IDB4M0ZGIGdldCBkaXNjYXJkZWQuXG4iCisgICAgICAgICAgICAiICAgICAgICAg
ICAgLy8gVGhpcyBjYW4gdHVybiBzb21lIE5hTnMgdG8gaW5maW5pdHksIGJ1dCB0aGlzIGlzIGFs
bG93ZWQgYnkgdGhlIHNwZWMuXG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgZjE2ID0gc2ln
biB8ICgweDFGdSA8PCAxMCk7XG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgZjE2IHw9ICht
YW50aXNzYSAmIDB4M0ZGdSk7XG4iCisgICAgICAgICAgICAiICAgICAgICB9XG4iCisgICAgICAg
ICAgICAiICAgICAgICBlbHNlIGlmIChleHBvbmVudCA+IDE1KVxuIgorICAgICAgICAgICAgIiAg
ICAgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIC8vIE92ZXJmbG93IC0gZmx1c2gg
dG8gSW5maW5pdHlcbiIKKyAgICAgICAgICAgICIgICAgICAgICAgICBmMTYgPSBzaWduIHwgKDB4
MUZ1IDw8IDEwKTtcbiIKKyAgICAgICAgICAgICIgICAgICAgIH1cbiIKKyAgICAgICAgICAgICIg
ICAgICAgIGVsc2UgaWYgKGV4cG9uZW50ID4gLTE1KVxuIgorICAgICAgICAgICAgIiAgICAgICAg
e1xuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIC8vIFJlcHJlc2VudGFibGUgdmFsdWVcbiIK
KyAgICAgICAgICAgICIgICAgICAgICAgICBleHBvbmVudCArPSAxNTtcbiIKKyAgICAgICAgICAg
ICIgICAgICAgICAgICBtYW50aXNzYSA+Pj0gMTM7XG4iCisgICAgICAgICAgICAiICAgICAgICAg
ICAgZjE2ID0gc2lnbiB8IHVpbnQoZXhwb25lbnQgPDwgMTApIHwgbWFudGlzc2E7XG4iCisgICAg
ICAgICAgICAiICAgICAgICB9XG4iCisgICAgICAgICAgICAiICAgICAgICBlbHNlXG4iCisgICAg
ICAgICAgICAiICAgICAgICB7XG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgZjE2ID0gc2ln
bjtcbiIKKyAgICAgICAgICAgICIgICAgICAgIH1cbiIKKyAgICAgICAgICAgICIgICAgICAgIHJl
dHVybiBmMTY7XG4iCisgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgICAgICIjZW5kaWZc
biIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ1aW50IHdlYmdsX3BhY2tIYWxmMngx
Nl9lbXUodmVjMiB2KVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgI2lm
IGRlZmluZWQoR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfcGFja2luZylcbiIKKyAgICAgICAgICAg
ICIgICAgICAgIHJldHVybiBwYWNrSGFsZjJ4MTYodik7XG4iCisgICAgICAgICAgICAiICAgICNl
bHNlXG4iCisgICAgICAgICAgICAiICAgICAgICB1aW50IHggPSB3ZWJnbF9mMzJ0b2YxNih2Lngp
O1xuIgorICAgICAgICAgICAgIiAgICAgICAgdWludCB5ID0gd2ViZ2xfZjMydG9mMTYodi55KTtc
biIKKyAgICAgICAgICAgICIgICAgICAgIHJldHVybiAoeSA8PCAxNikgfCB4O1xuIgorICAgICAg
ICAgICAgIiAgICAjZW5kaWZcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICAgICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVucGFja0hhbGYyeDE2LCB1aW50MSwKKyAgICAgICAgICAg
ICIjaWYgIWRlZmluZWQoR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfcGFja2luZylcbiIKKyAgICAg
ICAgICAgICIgICAgZmxvYXQgd2ViZ2xfZjE2dG9mMzIodWludCB2YWwpXG4iCisgICAgICAgICAg
ICAiICAgIHtcbiIKKyAgICAgICAgICAgICIgICAgICAgIHVpbnQgc2lnbiA9ICh2YWwgJiAweDgw
MDB1KSA8PCAxNjtcbiIKKyAgICAgICAgICAgICIgICAgICAgIGludCBleHBvbmVudCA9IGludCgo
dmFsICYgMHg3QzAwdSkgPj4gMTApO1xuIgorICAgICAgICAgICAgIiAgICAgICAgdWludCBtYW50
aXNzYSA9IHZhbCAmIDB4MDNGRnU7XG4iCisgICAgICAgICAgICAiICAgICAgICBmbG9hdCBmMzIg
PSAwLjA7XG4iCisgICAgICAgICAgICAiICAgICAgICBpZihleHBvbmVudCA9PSAwKVxuIgorICAg
ICAgICAgICAgIiAgICAgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIGlmIChtYW50
aXNzYSAhPSAwdSlcbiIKKyAgICAgICAgICAgICIgICAgICAgICAgICB7XG4iCisgICAgICAgICAg
ICAiICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHNjYWxlID0gMS4wIC8gKDEgPDwgMjQpO1xu
IgorICAgICAgICAgICAgIiAgICAgICAgICAgICAgICBmMzIgPSBzY2FsZSAqIG1hbnRpc3NhO1xu
IgorICAgICAgICAgICAgIiAgICAgICAgICAgIH1cbiIKKyAgICAgICAgICAgICIgICAgICAgIH1c
biIKKyAgICAgICAgICAgICIgICAgICAgIGVsc2UgaWYgKGV4cG9uZW50ID09IDMxKVxuIgorICAg
ICAgICAgICAgIiAgICAgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIHJldHVybiB1
aW50Qml0c1RvRmxvYXQoc2lnbiB8IDB4N0Y4MDAwMDB1IHwgbWFudGlzc2EpO1xuIgorICAgICAg
ICAgICAgIiAgICAgICAgfVxuIgorICAgICAgICAgICAgIiAgICAgICAgZWxzZVxuIgorICAgICAg
ICAgICAgIiAgICAgICAge1xuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIGV4cG9uZW50IC09
IDE1O1xuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIGZsb2F0IHNjYWxlO1xuIgorICAgICAg
ICAgICAgIiAgICAgICAgICAgIGlmKGV4cG9uZW50IDwgMClcbiIKKyAgICAgICAgICAgICIgICAg
ICAgICAgICB7XG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgIHNjYWxlID0gMS4wIC8g
KDEgPDwgLWV4cG9uZW50KTtcbiIKKyAgICAgICAgICAgICIgICAgICAgICAgICB9XG4iCisgICAg
ICAgICAgICAiICAgICAgICAgICAgZWxzZVxuIgorICAgICAgICAgICAgIiAgICAgICAgICAgIHtc
biIKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgc2NhbGUgPSAxIDw8IGV4cG9uZW50O1xu
IgorICAgICAgICAgICAgIiAgICAgICAgICAgIH1cbiIKKyAgICAgICAgICAgICIgICAgICAgICAg
ICBmbG9hdCBkZWNpbWFsID0gMS4wICsgZmxvYXQobWFudGlzc2EpIC8gZmxvYXQoMSA8PCAxMCk7
XG4iCisgICAgICAgICAgICAiICAgICAgICAgICAgZjMyID0gc2NhbGUgKiBkZWNpbWFsO1xuIgor
ICAgICAgICAgICAgIiAgICAgICAgfVxuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAg
IiAgICAgICAgaWYgKHNpZ24gIT0gMHUpXG4iCisgICAgICAgICAgICAiICAgICAgICB7XG4iCisg
ICAgICAgICAgICAiICAgICAgICAgICAgZjMyID0gLWYzMjtcbiIKKyAgICAgICAgICAgICIgICAg
ICAgIH1cbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICIgICAgICAgIHJldHVybiBm
MzI7XG4iCisgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgICAgICIjZW5kaWZcbiIKKyAg
ICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2ZWMyIHdlYmdsX3VucGFja0hhbGYyeDE2X2Vt
dSh1aW50IHUpXG4iCisgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgIiAgICAjaWYgZGVm
aW5lZChHTF9BUkJfc2hhZGluZ19sYW5ndWFnZV9wYWNraW5nKVxuIgorICAgICAgICAgICAgIiAg
ICAgICAgcmV0dXJuIHVucGFja0hhbGYyeDE2KHUpO1xuIgorICAgICAgICAgICAgIiAgICAjZWxz
ZVxuIgorICAgICAgICAgICAgIiAgICAgICAgdWludCB5ID0gKHUgPj4gMTYpO1xuIgorICAgICAg
ICAgICAgIiAgICAgICAgdWludCB4ID0gdSAmIDB4RkZGRnU7XG4iCisgICAgICAgICAgICAiICAg
ICAgICByZXR1cm4gdmVjMih3ZWJnbF9mMTZ0b2YzMih4KSwgd2ViZ2xfZjE2dG9mMzIoeSkpO1xu
IgorICAgICAgICAgICAgIiAgICAjZW5kaWZcbiIKKyAgICAgICAgICAgICJ9XG4iKTsKKyAgICAg
ICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgJKHJldmlzaW9uIDE5OTY4MikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCwxMiBA
QAogLy8KIC8vIFRoaXMgaXMgb25seSBhIHdvcmthcm91bmQgZm9yIE9wZW5HTCBkcml2ZXIgYnVn
cywgYW5kIGlzbid0IG5lZWRlZCBpbiBnZW5lcmFsLgogLy8KLXZvaWQgSW5pdEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yRm9yR0xTTChCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LCBzaDo6R0xl
bnVtIHNoYWRlclR5cGUpOwordm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNM
V29ya2Fyb3VuZHMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwgc2g6OkdMZW51bSBzaGFk
ZXJUeXBlKTsKIAorLy8KKy8vIFRoaXMgZnVuY3Rpb24gaXMgZW11bGF0aW5nIGJ1aWx0LWluIGZ1
bmN0aW9ucyBtaXNzaW5nIGZyb20gR0xTTCAxLjMwIGFuZCBoaWdoZXIuCisvLwordm9pZCBJbml0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMTWlzc2luZ0Z1bmN0aW9ucyhCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvciAqZW11LCBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNM
VmVyc2lvbik7CisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9CVUlMVElORlVOQ1RJ
T05FTVVMQVRPUkdMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3JITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTAgKzExLDEwIEBACiAKIHZv
aWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdEluRnVuY3Rpb25FbXVs
YXRvciAqZW11KQogewotICAgIFRUeXBlIGZsb2F0MShFYnRGbG9hdCk7Ci0gICAgVFR5cGUgZmxv
YXQyKEVidEZsb2F0LCAyKTsKLSAgICBUVHlwZSBmbG9hdDMoRWJ0RmxvYXQsIDMpOwotICAgIFRU
eXBlIGZsb2F0NChFYnRGbG9hdCwgNCk7CisgICAgVFR5cGUgKmZsb2F0MSA9IG5ldyBUVHlwZShF
YnRGbG9hdCk7CisgICAgVFR5cGUgKmZsb2F0MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMik7Cisg
ICAgVFR5cGUgKmZsb2F0MyA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMyk7CisgICAgVFR5cGUgKmZs
b2F0NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwgNCk7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wTW9kLCBmbG9hdDEsIGZsb2F0MSwKICAgICAgICAgImZsb2F0IHdlYmdsX21vZF9l
bXUoZmxvYXQgeCwgZmxvYXQgeSlcbiIKQEAgLTI1MCw3ICsyNTAsNyBAQAogICAgICAgICAiICAg
IHJldHVybiAoeSA8PCAxNikgfCB4O1xuIgogICAgICAgICAifVxuIik7CiAKLSAgICBUVHlwZSB1
aW50MShFYnRVSW50KTsKKyAgICBUVHlwZSAqdWludDEgPSBuZXcgVFR5cGUoRWJ0VUludCk7CiAK
ICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVW5wYWNrU25vcm0yeDE2LCB1aW50MSwK
ICAgICAgICAgImZsb2F0IHdlYmdsX2Zyb21Tbm9ybShpbiB1aW50IHgpIHtcbiIKQEAgLTMyNyw5
ICszMjcsOSBAQAogICAgICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQ0eDEociksIGZsb2F0MXgz
KGMpKTtcbiIKICAgICAgICAgIn1cbiIpOwogCi0gICAgVFR5cGUgbWF0MihFYnRGbG9hdCwgMiwg
Mik7Ci0gICAgVFR5cGUgbWF0MyhFYnRGbG9hdCwgMywgMyk7Ci0gICAgVFR5cGUgbWF0NChFYnRG
bG9hdCwgNCwgNCk7CisgICAgVFR5cGUgKm1hdDIgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIDIsIDIp
OworICAgIFRUeXBlICptYXQzID0gbmV3IFRUeXBlKEVidEZsb2F0LCAzLCAzKTsKKyAgICBUVHlw
ZSAqbWF0NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwgNCwgNCk7CiAKICAgICAvLyBSZW1lbWJlciBo
ZXJlIHRoYXQgdGhlIHBhcmFtZXRlciBtYXRyaXggaXMgYWN0dWFsbHkgdGhlIHRyYW5zcG9zZQog
ICAgIC8vIG9mIHRoZSBtYXRyaXggdGhhdCB3ZSdyZSB0cnlpbmcgdG8gaW52ZXJ0LCBhbmQgdGhl
IHJlc3VsdGluZyBtYXRyaXgKQEAgLTQwNyw0ICs0MDcsMzUgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiIGNvZjAyLCBjb2YxMiwgY29mMjIsIGNvZjMyLCBjb2YwMywgY29mMTMsIGNv
ZjIzLCBjb2YzMyB9O1xuIgogICAgICAgICAiICAgIHJldHVybiBjb2YgLyBkZXRlcm1pbmFudCh0
cmFuc3Bvc2UobSkpO1xuIgogICAgICAgICAifVxuIik7CisKKyAgICBUVHlwZSAqYm9vbDEgPSBu
ZXcgVFR5cGUoRWJ0Qm9vbCk7CisgICAgVFR5cGUgKmJvb2wyID0gbmV3IFRUeXBlKEVidEJvb2ws
IDIpOworICAgIFRUeXBlICpib29sMyA9IG5ldyBUVHlwZShFYnRCb29sLCAzKTsKKyAgICBUVHlw
ZSAqYm9vbDQgPSBuZXcgVFR5cGUoRWJ0Qm9vbCwgNCk7CisKKyAgICAvLyBFbXVsYXRlIEVTU0wz
IHZhcmlhbnQgb2YgbWl4IHRoYXQgdGFrZXMgbGFzdCBhcmd1bWVudCBhcyBib29sZWFuIHZlY3Rv
ci4KKyAgICAvLyBnZW5UeXBlIG1peCAoZ2VuVHlwZSB4LCBnZW5UeXBlIHksIGdlbkJUeXBlIGEp
OiBTZWxlY3RzIHdoaWNoIHZlY3RvciBlYWNoIHJldHVybmVkIGNvbXBvbmVudCBjb21lcyBmcm9t
LgorICAgIC8vIEZvciBhIGNvbXBvbmVudCBvZiAnYScgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJl
c3BvbmRpbmcgY29tcG9uZW50IG9mICd4JyBpcyByZXR1cm5lZC5Gb3IgYSBjb21wb25lbnQgb2Yg
J2EnIHRoYXQgaXMgdHJ1ZSwKKyAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgb2Yg
J3knIGlzIHJldHVybmVkLgorICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BNaXgsIGZs
b2F0MSwgZmxvYXQxLCBib29sMSwKKyAgICAgICAgImZsb2F0IHdlYmdsX21peF9lbXUoZmxvYXQg
eCwgZmxvYXQgeSwgYm9vbCBhKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHJldHVy
biBhID8geSA6IHg7XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wTWl4LCBmbG9hdDIsIGZsb2F0MiwgYm9vbDIsCisgICAgICAgICJmbG9hdDIgd2Vi
Z2xfbWl4X2VtdShmbG9hdDIgeCwgZmxvYXQyIHksIGJvb2wyIGEpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICAgcmV0dXJuIGEgPyB5IDogeDtcbiIKKyAgICAgICAgIn1cbiIpOworICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BNaXgsIGZsb2F0MywgZmxvYXQzLCBib29sMywK
KyAgICAgICAgImZsb2F0MyB3ZWJnbF9taXhfZW11KGZsb2F0MyB4LCBmbG9hdDMgeSwgYm9vbDMg
YSlcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICByZXR1cm4gYSA/IHkgOiB4O1xuIgor
ICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1peCwgZmxv
YXQ0LCBmbG9hdDQsIGJvb2w0LAorICAgICAgICAiZmxvYXQ0IHdlYmdsX21peF9lbXUoZmxvYXQ0
IHgsIGZsb2F0NCB5LCBib29sNCBhKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHJl
dHVybiBhID8geSA6IHg7XG4iCisgICAgICAgICJ9XG4iKTsKKwogfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Nh
Y2hlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIENhY2hlLmNwcDogSW1wbGVtZW50cyBhIGNhY2hlIGZvciB2
YXJpb3VzIGNvbW1vbmx5IGNyZWF0ZWQgb2JqZWN0cy4KKworI2luY2x1ZGUgPGxpbWl0cz4KKwor
I2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWNoZS5oIgorCituYW1lc3BhY2UKK3sK
KworY2xhc3MgVFNjb3BlZEFsbG9jYXRvciA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJs
aWM6CisgICAgVFNjb3BlZEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciAqYWxsb2NhdG9yKQorICAg
ICAgICA6IG1QcmV2aW91c0FsbG9jYXRvcihHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkpCisgICAg
eworICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKGFsbG9jYXRvcik7CisgICAgfQorICAg
IH5UU2NvcGVkQWxsb2NhdG9yKCkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0
b3IobVByZXZpb3VzQWxsb2NhdG9yKTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBUUG9vbEFs
bG9jYXRvciAqbVByZXZpb3VzQWxsb2NhdG9yOworfTsKKworfSAgLy8gbmFtZXNwYWNlCisKK1RD
YWNoZTo6VHlwZUtleTo6VHlwZUtleShUQmFzaWNUeXBlIGJhc2ljVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIHByaW1hcnlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgc2Vjb25kYXJ5U2l6ZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihjb21wb25l
bnRzKSA8PSBzaXplb2YodmFsdWUpLAorICAgICAgICAgICAgICAgICAgIlR5cGVLZXk6OnZhbHVl
IGlzIHRvbyBzbWFsbCIpOworCisgICAgY29uc3Qgc2l6ZV90IE1heEVudW1WYWx1ZSA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8RW51bUNvbXBvbmVudFR5cGU+OjptYXgoKTsKKyAgICBVTlVTRURfQVNT
RVJUSU9OX1ZBUklBQkxFKE1heEVudW1WYWx1ZSk7CisKKyAgICAvLyBUT0RPOiBjaGFuZ2UgdG8g
c3RhdGljX2Fzc2VydCgpIG9uY2Ugd2UgZGVwcmVjYXRlIE1TVkMgMjAxMyBzdXBwb3J0CisgICAg
QVNTRVJUKE1heEVudW1WYWx1ZSA+PSBFYnRMYXN0ICYmCisgICAgICAgICAgIE1heEVudW1WYWx1
ZSA+PSBFYnBMYXN0ICYmCisgICAgICAgICAgIE1heEVudW1WYWx1ZSA+PSBFdnFMYXN0ICYmCisg
ICAgICAgICAgICJUeXBlS2V5OjpFbnVtQ29tcG9uZW50VHlwZSBpcyB0b28gc21hbGwiKTsKKwor
ICAgIHZhbHVlID0gMDsKKyAgICBjb21wb25lbnRzLmJhc2ljVHlwZSA9IHN0YXRpY19jYXN0PEVu
dW1Db21wb25lbnRUeXBlPihiYXNpY1R5cGUpOworICAgIGNvbXBvbmVudHMucHJlY2lzaW9uID0g
c3RhdGljX2Nhc3Q8RW51bUNvbXBvbmVudFR5cGU+KHByZWNpc2lvbik7CisgICAgY29tcG9uZW50
cy5xdWFsaWZpZXIgPSBzdGF0aWNfY2FzdDxFbnVtQ29tcG9uZW50VHlwZT4ocXVhbGlmaWVyKTsK
KyAgICBjb21wb25lbnRzLnByaW1hcnlTaXplID0gcHJpbWFyeVNpemU7CisgICAgY29tcG9uZW50
cy5zZWNvbmRhcnlTaXplID0gc2Vjb25kYXJ5U2l6ZTsKK30KKworVENhY2hlICpUQ2FjaGU6OnND
YWNoZSA9IG51bGxwdHI7CisKK3ZvaWQgVENhY2hlOjppbml0aWFsaXplKCkKK3sKKyAgICBpZiAo
c0NhY2hlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBzQ2FjaGUgPSBuZXcgVENhY2hlKCk7
CisgICAgfQorfQorCit2b2lkIFRDYWNoZTo6ZGVzdHJveSgpCit7CisgICAgU2FmZURlbGV0ZShz
Q2FjaGUpOworfQorCitjb25zdCBUVHlwZSAqVENhY2hlOjpnZXRUeXBlKFRCYXNpY1R5cGUgYmFz
aWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUHJlY2lzaW9uIHByZWNpc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSkK
K3sKKyAgICBUeXBlS2V5IGtleShiYXNpY1R5cGUsIHByZWNpc2lvbiwgcXVhbGlmaWVyLAorICAg
ICAgICAgICAgICAgIHByaW1hcnlTaXplLCBzZWNvbmRhcnlTaXplKTsKKyAgICBhdXRvIGl0ID0g
c0NhY2hlLT5tVHlwZXMuZmluZChrZXkpOworICAgIGlmIChpdCAhPSBzQ2FjaGUtPm1UeXBlcy5l
bmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIH0KKworICAgIFRT
Y29wZWRBbGxvY2F0b3Igc2NvcGVkQWxsb2NhdG9yKCZzQ2FjaGUtPm1BbGxvY2F0b3IpOworCisg
ICAgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUoYmFzaWNUeXBlLCBwcmVjaXNpb24sIHF1YWxpZmll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6
ZSk7CisgICAgdHlwZS0+cmVhbGl6ZSgpOworICAgIHNDYWNoZS0+bVR5cGVzLmluc2VydChzdGQ6
Om1ha2VfcGFpcihrZXksIHR5cGUpKTsKKworICAgIHJldHVybiB0eXBlOworfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9DYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gQ2FjaGUuaDogSW1wbGVtZW50cyBhIGNhY2hlIGZvciB2YXJp
b3VzIGNvbW1vbmx5IGNyZWF0ZWQgb2JqZWN0cy4KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xB
VE9SX0NBQ0hFX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfQ0FDSEVfSF8KKworI2lu
Y2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPG1hcD4KKwor
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaCIKKyNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oIgorCitjbGFzcyBUQ2FjaGUKK3sKKyAgcHVibGljOgor
CisgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
KTsKKworICAgIHN0YXRpYyBjb25zdCBUVHlwZSAqZ2V0VHlwZShUQmFzaWNUeXBlIGJhc2ljVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFByZWNpc2lvbiBwcmVjaXNpb24p
CisgICAgeworICAgICAgICByZXR1cm4gZ2V0VHlwZShiYXNpY1R5cGUsIHByZWNpc2lvbiwgRXZx
VGVtcG9yYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAxLCAxKTsKKyAgICB9CisgICAgc3Rh
dGljIGNvbnN0IFRUeXBlICpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplID0gMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnlTaXpl
ID0gMSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRUeXBlKGJhc2ljVHlwZSwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWwsCisgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlTaXplLCBzZWNv
bmRhcnlTaXplKTsKKyAgICB9CisgICAgc3RhdGljIGNvbnN0IFRUeXBlICpnZXRUeXBlKFRCYXNp
Y1R5cGUgYmFzaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlm
aWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBwcmltYXJ5U2l6ZSA9IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSA9IDEpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0
VHlwZShiYXNpY1R5cGUsIEVicFVuZGVmaW5lZCwgcXVhbGlmaWVyLAorICAgICAgICAgICAgICAg
ICAgICAgICBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSk7CisgICAgfQorICAgIHN0YXRpYyBj
b25zdCBUVHlwZSAqZ2V0VHlwZShUQmFzaWNUeXBlIGJhc2ljVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFByZWNpc2lvbiBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemUpOworCisgIHByaXZh
dGU6CisgICAgVENhY2hlKCkKKyAgICB7CisgICAgfQorCisgICAgdW5pb24gVHlwZUtleQorICAg
IHsKKyAgICAgICAgVHlwZUtleShUQmFzaWNUeXBlIGJhc2ljVHlwZSwKKyAgICAgICAgICAgICAg
ICBUUHJlY2lzaW9uIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxp
ZmllciwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplLAorICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSk7CisKKyAgICAgICAgdHlwZWRl
ZiB1aW50OF90IEVudW1Db21wb25lbnRUeXBlOworICAgICAgICBzdHJ1Y3QKKyAgICAgICAgewor
ICAgICAgICAgICAgRW51bUNvbXBvbmVudFR5cGUgYmFzaWNUeXBlOworICAgICAgICAgICAgRW51
bUNvbXBvbmVudFR5cGUgcHJlY2lzaW9uOworICAgICAgICAgICAgRW51bUNvbXBvbmVudFR5cGUg
cXVhbGlmaWVyOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5U2l6ZTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZTsKKyAgICAgICAgfSBjb21wb25lbnRz
OworICAgICAgICB1aW50NjRfdCB2YWx1ZTsKKworICAgICAgICBib29sIG9wZXJhdG9yIDwgKGNv
bnN0IFR5cGVLZXkgJm90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
dmFsdWUgPCBvdGhlci52YWx1ZTsKKyAgICAgICAgfQorICAgIH07CisgICAgdHlwZWRlZiBzdGQ6
Om1hcDxUeXBlS2V5LCBjb25zdCBUVHlwZSo+IFR5cGVNYXA7CisKKyAgICBUeXBlTWFwIG1UeXBl
czsKKyAgICBUUG9vbEFsbG9jYXRvciBtQWxsb2NhdG9yOworCisgICAgc3RhdGljIFRDYWNoZSAq
c0NhY2hlOworfTsKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0NBQ0hFX0hfCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxs
REFHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4LDkgKzE4LDkgQEAKICAgcHVibGljOgogICAgIENhbGxEQUdDcmVhdG9y
KFRJbmZvU2lua0Jhc2UgKmluZm8pCiAgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBm
YWxzZSwgdHJ1ZSksCisgICAgICAgICAgbUNyZWF0aW9uSW5mbyhpbmZvKSwKICAgICAgICAgICBt
Q3VycmVudEZ1bmN0aW9uKG51bGxwdHIpLAotICAgICAgICAgIG1DdXJyZW50SW5kZXgoMCksCi0g
ICAgICAgICAgbUNyZWF0aW9uSW5mbyhpbmZvKQorICAgICAgICAgIG1DdXJyZW50SW5kZXgoMCkK
ICAgICB7CiAgICAgfQogCkBAIC0zNSw2ICszNSw3IEBACiAgICAgICAgICAgICAgICAgSW5pdFJl
c3VsdCByZXN1bHQgPSBhc3NpZ25JbmRpY2VzSW50ZXJuYWwoJml0LnNlY29uZCk7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCAhPSBJTklUREFHX1NVQ0NFU1MpCiAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAqbUNyZWF0aW9uSW5mbyA8PCAiXG4iOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTEwNyw3ICsxMDgsOCBAQAogICAgICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9u
LCBjcmVhdGUgYW4gZW1wdHkgcmVjb3JkLgotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnNbbm9k
ZS0+Z2V0TmFtZSgpXTsKKyAgICAgICAgICAgICAgICBhdXRvJiByZWNvcmQgPSBtRnVuY3Rpb25z
W25vZGUtPmdldE5hbWUoKV07CisgICAgICAgICAgICAgICAgcmVjb3JkLm5hbWUgPSBub2RlLT5n
ZXROYW1lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBj
YXNlIEVPcEZ1bmN0aW9uOgpAQCAtMTY5LDcgKzE3MSw4IEBACiAKICAgICAgICAgaWYgKCFmdW5j
dGlvbi0+bm9kZSkKICAgICAgICAgewotICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIlVu
ZGVmaW5lZCBmdW5jdGlvbjogIiA8PCBmdW5jdGlvbi0+bmFtZTsKKyAgICAgICAgICAgICptQ3Jl
YXRpb25JbmZvIDw8ICJVbmRlZmluZWQgZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24tPm5hbWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIpJyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgY2Fs
bCBjaGFpbjoiOwogICAgICAgICAgICAgcmV0dXJuIElOSVREQUdfVU5ERUZJTkVEOwogICAgICAg
ICB9CiAKQEAgLTE4Miw3ICsxODUsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobUNy
ZWF0aW9uSW5mbykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqbUNyZWF0aW9uSW5m
byA8PCAiUmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGwgaW4gdGhlIGZvbGxvd2luZyBjYWxsIGNoYWlu
OiAiIDw8IGZ1bmN0aW9uLT5uYW1lOworICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8
ICJSZWN1cnNpdmUgZnVuY3Rpb24gY2FsbCBpbiB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46IiA8
PCBmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBJTklU
REFHX1JFQ1VSU0lPTjsKICAgICAgICAgfQpAQCAtMTkxLDIwICsxOTQsMTYgQEAKICAgICAgICAg
Zm9yIChhdXRvICZjYWxsZWUgOiBmdW5jdGlvbi0+Y2FsbGVlcykKICAgICAgICAgewogICAgICAg
ICAgICAgSW5pdFJlc3VsdCByZXN1bHQgPSBhc3NpZ25JbmRpY2VzSW50ZXJuYWwoY2FsbGVlKTsK
LSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSU5JVERBR19SRUNVUlNJT04pCisgICAgICAgICAg
ICBpZiAocmVzdWx0ICE9IElOSVREQUdfU1VDQ0VTUykKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhlcmUgaXMgYSByZWN1cnNpdmUgZnVuY3Rpb24gY2Fs
bCBjaGFpbiBpbiB0aGUgQVNULAorICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCB0aGVy
ZSBpcyBhbiBpc3N1ZSB3aXRoIHRoZSBjYWxsIGNoYWluIGluIHRoZSBBU1QsCiAgICAgICAgICAg
ICAgICAgLy8gcHJpbnQgdGhlIGxpbmsgb2YgdGhlIGNoYWluIHdlIHdlcmUgcHJvY2Vzc2luZy4K
ICAgICAgICAgICAgICAgICBpZiAobUNyZWF0aW9uSW5mbykKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICIgPC0gIiA8PCBmdW5jdGlvbi0+
bmFtZTsKKyAgICAgICAgICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIiA8LSAiIDw8IGZ1
bmN0aW9uLT5uYW1lIDw8ICIpIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIElOSVREQUdfUkVDVVJTSU9OOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQgPT0gSU5JVERBR19V
TkRFRklORUQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIElOSVREQUdf
VU5ERUZJTkVEOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24t
PmluZGV4ID0gbUN1cnJlbnRJbmRleCsrOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NvZGVHZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsMTYgQEAKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCisjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9Db21waWxlci5oIgorCisjaWZkZWYgQU5HTEVfRU5BQkxFX0VTU0wKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCisjZW5kaWYKKworI2lmZGVm
IEFOR0xFX0VOQUJMRV9HTFNMCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yR0xTTC5oIgorI2VuZGlmCisKICNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCIKICNlbmRpZiAvLyBBTkdMRV9F
TkFCTEVfSExTTApAQCAtMjAsMjQgKzI4LDQ0IEBACiB7CiAgICAgc3dpdGNoIChvdXRwdXQpIHsK
ICAgICAgIGNhc2UgU0hfRVNTTF9PVVRQVVQ6CisjaWZkZWYgQU5HTEVfRU5BQkxFX0VTU0wKICAg
ICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9yRVNTTCh0eXBlLCBzcGVjKTsKKyNlbHNlCisgICAg
ICAgIC8vIFRoaXMgY29tcGlsZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzCisgICAgICAgIC8v
IGNvbmZpZ3VyYXRpb24uIFJldHVybiBOVUxMIHBlciB0aGUgU2hDb25zdHJ1Y3RDb21waWxlciBB
UEkuCisgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmIC8vIEFOR0xFX0VOQUJMRV9FU1NM
CiAgICAgICBjYXNlIFNIX0dMU0xfMTMwX09VVFBVVDoKKyAgICAgIGNhc2UgU0hfR0xTTF8xNDBf
T1VUUFVUOgorICAgICAgY2FzZSBTSF9HTFNMXzE1MF9DT1JFX09VVFBVVDoKKyAgICAgIGNhc2Ug
U0hfR0xTTF8zMzBfQ09SRV9PVVRQVVQ6CisgICAgICBjYXNlIFNIX0dMU0xfNDAwX0NPUkVfT1VU
UFVUOgogICAgICAgY2FzZSBTSF9HTFNMXzQxMF9DT1JFX09VVFBVVDoKICAgICAgIGNhc2UgU0hf
R0xTTF80MjBfQ09SRV9PVVRQVVQ6CisgICAgICBjYXNlIFNIX0dMU0xfNDMwX0NPUkVfT1VUUFVU
OgorICAgICAgY2FzZSBTSF9HTFNMXzQ0MF9DT1JFX09VVFBVVDoKKyAgICAgIGNhc2UgU0hfR0xT
TF80NTBfQ09SRV9PVVRQVVQ6CiAgICAgICBjYXNlIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQ
VVQ6CisjaWZkZWYgQU5HTEVfRU5BQkxFX0dMU0wKICAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xh
dG9yR0xTTCh0eXBlLCBzcGVjLCBvdXRwdXQpOwotICAgICAgY2FzZSBTSF9ITFNMOV9PVVRQVVQ6
Ci0gICAgICBjYXNlIFNIX0hMU0wxMV9PVVRQVVQ6CisjZWxzZQorICAgICAgICAvLyBUaGlzIGNv
bXBpbGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcworICAgICAgICAvLyBjb25maWd1cmF0aW9u
LiBSZXR1cm4gTlVMTCBwZXIgdGhlIFNoQ29uc3RydWN0Q29tcGlsZXIgQVBJLgorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfR0xTTAorICAgICAgY2FzZSBT
SF9ITFNMXzNfMF9PVVRQVVQ6CisgICAgICBjYXNlIFNIX0hMU0xfNF8xX09VVFBVVDoKKyAgICAg
IGNhc2UgU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUOgogI2lmZGVmIEFOR0xFX0VOQUJMRV9ITFNM
CiAgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckhMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsK
ICNlbHNlCiAgICAgICAgIC8vIFRoaXMgY29tcGlsZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlz
CiAgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24uIFJldHVybiBOVUxMIHBlciB0aGUgU2hDb25zdHJ1
Y3RDb21waWxlciBBUEkuCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAogICAgICAgZGVmYXVsdDoKICAgICAg
ICAgLy8gVW5rbm93biBmb3JtYXQuIFJldHVybiBOVUxMIHBlciB0aGUgU2hDb25zdHJ1Y3RDb21w
aWxlciBBUEkuCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbW1vbi5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db21tb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsMTggKzYwLDIxIEBACiAvLwogLy8gUG9vbCBhbGxvY2F0b3Ig
dmVyc2lvbnMgb2YgdmVjdG9ycywgbGlzdHMsIGFuZCBtYXBzCiAvLwotdGVtcGxhdGUgPGNsYXNz
IFQ+IGNsYXNzIFRWZWN0b3IgOiBwdWJsaWMgc3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxvY2F0b3I8
VD4gPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxULCBwb29s
X2FsbG9jYXRvcjxUPiA+OjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgIFRWZWN0b3IoKSA6IHN0
ZDo6dmVjdG9yPFQsIHBvb2xfYWxsb2NhdG9yPFQ+ID4oKSB7fQotICAgIFRWZWN0b3IoY29uc3Qg
cG9vbF9hbGxvY2F0b3I8VD4mIGEpIDogc3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxvY2F0b3I8VD4g
PihhKSB7fQotICAgIFRWZWN0b3Ioc2l6ZV90eXBlIGkpOiBzdGQ6OnZlY3RvcjxULCBwb29sX2Fs
bG9jYXRvcjxUPiA+KGkpIHt9Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIFRWZWN0b3IgOiBw
dWJsaWMgc3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxvY2F0b3I8VD4+Cit7CisgIHB1YmxpYzoKKyAg
ICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPFQsIHBvb2xfYWxsb2NhdG9yPFQ+Pjo6c2l6
ZV90eXBlIHNpemVfdHlwZTsKKyAgICBUVmVjdG9yKCkgOiBzdGQ6OnZlY3RvcjxULCBwb29sX2Fs
bG9jYXRvcjxUPj4oKSB7fQorICAgIFRWZWN0b3IoY29uc3QgcG9vbF9hbGxvY2F0b3I8VD4gJmEp
IDogc3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxvY2F0b3I8VD4+KGEpIHt9CisgICAgVFZlY3Rvcihz
aXplX3R5cGUgaSkgOiBzdGQ6OnZlY3RvcjxULCBwb29sX2FsbG9jYXRvcjxUPj4oaSkge30KIH07
CiAKLXRlbXBsYXRlIDxjbGFzcyBLLCBjbGFzcyBELCBjbGFzcyBDTVAgPSBzdGQ6Omxlc3M8Sz4g
PiAKLWNsYXNzIFRNYXAgOiBwdWJsaWMgc3RkOjptYXA8SywgRCwgQ01QLCBwb29sX2FsbG9jYXRv
cjxzdGQ6OnBhaXI8Y29uc3QgSywgRD4gPiA+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHBvb2xf
YWxsb2NhdG9yPHN0ZDo6cGFpcjxjb25zdCBLLCBEPiA+IHRBbGxvY2F0b3I7Cit0ZW1wbGF0ZSA8
Y2xhc3MgSywgY2xhc3MgRCwgY2xhc3MgQ01QID0gc3RkOjpsZXNzPEs+PgorY2xhc3MgVE1hcCA6
IHB1YmxpYyBzdGQ6Om1hcDxLLCBELCBDTVAsIHBvb2xfYWxsb2NhdG9yPHN0ZDo6cGFpcjxjb25z
dCBLLCBEPj4+Cit7CisgIHB1YmxpYzoKKyAgICB0eXBlZGVmIHBvb2xfYWxsb2NhdG9yPHN0ZDo6
cGFpcjxjb25zdCBLLCBEPj4gdEFsbG9jYXRvcjsKIAogICAgIFRNYXAoKSA6IHN0ZDo6bWFwPEss
IEQsIENNUCwgdEFsbG9jYXRvcj4oKSB7fQogICAgIC8vIHVzZSBjb3JyZWN0IHR3by1zdGFnZSBu
YW1lIGxvb2t1cCBzdXBwb3J0ZWQgaW4gZ2NjIDMuNCBhbmQgYWJvdmUKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Db21waWxlci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNCw4ICs0LDEwIEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAorI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0NvbXBpbGVyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWxs
REFHLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxp
emVycy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgpAQCAtMTMsMTAgKzE1
LDEzIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5oIgorI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9SZW5hbWVGdW5jdGlvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvUmV3cml0ZURvV2hpbGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Nj
YWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1ZhbGlkYXRlT3V0cHV0cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFy
aWFibGVQYWNrZXIuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaC5oIgpAQCAtMzcsOCArNDIsMTUgQEAKIGJvb2wgSXNHTFNMMTMwT3JOZXdl
cihTaFNoYWRlck91dHB1dCBvdXRwdXQpCiB7CiAgICAgcmV0dXJuIChvdXRwdXQgPT0gU0hfR0xT
TF8xMzBfT1VUUFVUIHx8CisgICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF8xNDBfT1VUUFVU
IHx8CisgICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF8xNTBfQ09SRV9PVVRQVVQgfHwKKyAg
ICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVCB8fAorICAgICAgICAg
ICAgb3V0cHV0ID09IFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUIHx8CiAgICAgICAgICAgICBvdXRw
dXQgPT0gU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQgfHwKLSAgICAgICAgICAgIG91dHB1dCA9PSBT
SF9HTFNMXzQyMF9DT1JFX09VVFBVVCk7CisgICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF80
MjBfQ09SRV9PVVRQVVQgfHwKKyAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzQzMF9DT1JF
X09VVFBVVCB8fAorICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfNDQwX0NPUkVfT1VUUFVU
IHx8CisgICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF80NTBfQ09SRV9PVVRQVVQpOwogfQog
CiBzaXplX3QgR2V0R2xvYmFsTWF4VG9rZW5TaXplKFNoU2hhZGVyU3BlYyBzcGVjKQpAQCAtMTMx
LDEwICsxNDMsMTIgQEAKICAgICAgIG1heFVuaWZvcm1WZWN0b3JzKDApLAogICAgICAgbWF4RXhw
cmVzc2lvbkNvbXBsZXhpdHkoMCksCiAgICAgICBtYXhDYWxsU3RhY2tEZXB0aCgwKSwKKyAgICAg
IG1heEZ1bmN0aW9uUGFyYW1ldGVycygwKSwKICAgICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaChm
YWxzZSksCiAgICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklO
U0lDKSwKICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCksCi0gICAgICBtU291cmNlUGF0
aChOVUxMKQorICAgICAgbVNvdXJjZVBhdGgoTlVMTCksCisgICAgICBtVGVtcG9yYXJ5SW5kZXgo
MCkKIHsKIH0KIApAQCAtMTQyLDYgKzE1NiwxNSBAQAogewogfQogCitib29sIFRDb21waWxlcjo6
c2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihpbnQgY29tcGlsZU9wdGlvbnMpIGNv
bnN0Cit7CisgICAgLy8gSWYgY29tcGlsaW5nIGFuIEVTU0wgMS4wMCBzaGFkZXIgZm9yIFdlYkdM
LCBvciBpZiBpdHMgYmVlbiByZXF1ZXN0ZWQgdGhyb3VnaCB0aGUgQVBJLAorICAgIC8vIHZhbGlk
YXRlIGxvb3AgYW5kIGluZGV4aW5nIGFzIHdlbGwgKHRvIHZlcmlmeSB0aGF0IHRoZSBzaGFkZXIg
b25seSB1c2VzIG1pbmltYWwgZnVuY3Rpb25hbGl0eQorICAgIC8vIG9mIEVTU0wgMS4wMCBhcyBp
biBBcHBlbmRpeCBBIG9mIHRoZSBzcGVjKS4KKyAgICByZXR1cm4gKElzV2ViR0xCYXNlZFNwZWMo
c2hhZGVyU3BlYykgJiYgc2hhZGVyVmVyc2lvbiA9PSAxMDApIHx8CisgICAgICAgICAgIChjb21w
aWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcpOworfQorCiBib29sIFRDb21w
aWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcykKIHsKICAgICBz
aGFkZXJWZXJzaW9uID0gMTAwOwpAQCAtMTQ5LDcgKzE3Miw4IEBACiAgICAgICAgIHJlc291cmNl
cy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6CiAgICAgICAgIHJlc291cmNlcy5NYXhGcmFnbWVu
dFVuaWZvcm1WZWN0b3JzOwogICAgIG1heEV4cHJlc3Npb25Db21wbGV4aXR5ID0gcmVzb3VyY2Vz
Lk1heEV4cHJlc3Npb25Db21wbGV4aXR5OwotICAgIG1heENhbGxTdGFja0RlcHRoID0gcmVzb3Vy
Y2VzLk1heENhbGxTdGFja0RlcHRoOworICAgIG1heENhbGxTdGFja0RlcHRoICAgICAgID0gcmVz
b3VyY2VzLk1heENhbGxTdGFja0RlcHRoOworICAgIG1heEZ1bmN0aW9uUGFyYW1ldGVycyAgID0g
cmVzb3VyY2VzLk1heEZ1bmN0aW9uUGFyYW1ldGVyczsKIAogICAgIFNldEdsb2JhbFBvb2xBbGxv
Y2F0b3IoJmFsbG9jYXRvcik7CiAKQEAgLTE3Myw4ICsxOTcsOSBAQAogICAgIHJldHVybiBjb21w
aWxlVHJlZUltcGwoc2hhZGVyU3RyaW5ncywgbnVtU3RyaW5ncywgY29tcGlsZU9wdGlvbnMpOwog
fQogCi1USW50ZXJtTm9kZSAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoY29uc3QgY2hhciog
Y29uc3Qgc2hhZGVyU3RyaW5nc1tdLAotICAgIHNpemVfdCBudW1TdHJpbmdzLCBpbnQgY29tcGls
ZU9wdGlvbnMpCitUSW50ZXJtTm9kZSAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoY29uc3Qg
Y2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBudW1TdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCBjb21waWxlT3B0aW9ucykKIHsKICAgICBjbGVhclJl
c3VsdHMoKTsKIApAQCAtMTg0LDEwICsyMDksNiBAQAogICAgIC8vIFJlc2V0IHRoZSBleHRlbnNp
b24gYmVoYXZpb3IgZm9yIGVhY2ggY29tcGlsYXRpb24gdW5pdC4KICAgICBSZXNldEV4dGVuc2lv
bkJlaGF2aW9yKGV4dGVuc2lvbkJlaGF2aW9yKTsKIAotICAgIC8vIElmIGNvbXBpbGluZyBmb3Ig
V2ViR0wsIHZhbGlkYXRlIGxvb3AgYW5kIGluZGV4aW5nIGFzIHdlbGwuCi0gICAgaWYgKElzV2Vi
R0xCYXNlZFNwZWMoc2hhZGVyU3BlYykpCi0gICAgICAgIGNvbXBpbGVPcHRpb25zIHw9IFNIX1ZB
TElEQVRFX0xPT1BfSU5ERVhJTkc7Ci0KICAgICAvLyBGaXJzdCBzdHJpbmcgaXMgcGF0aCBvZiBz
b3VyY2UgZmlsZSBpZiBmbGFnIGlzIHNldC4gVGhlIGFjdHVhbCBzb3VyY2UgZm9sbG93cy4KICAg
ICBzaXplX3QgZmlyc3RTb3VyY2UgPSAwOwogICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX1NP
VVJDRV9QQVRIKQpAQCAtMTk2LDEzICsyMTcsMTEgQEAKICAgICAgICAgKytmaXJzdFNvdXJjZTsK
ICAgICB9CiAKLSAgICBib29sIGRlYnVnU2hhZGVyUHJlY2lzaW9uID0gZ2V0UmVzb3VyY2VzKCku
V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiA9PSAxOwogICAgIFRJbnRlcm1lZGlhdGUgaW50
ZXJtZWRpYXRlKGluZm9TaW5rKTsKLSAgICBUUGFyc2VDb250ZXh0IHBhcnNlQ29udGV4dChzeW1i
b2xUYWJsZSwgZXh0ZW5zaW9uQmVoYXZpb3IsIGludGVybWVkaWF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaGFkZXJUeXBlLCBzaGFkZXJTcGVjLCBjb21waWxlT3B0aW9ucywg
dHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luaywgZGVidWdTaGFk
ZXJQcmVjaXNpb24pOworICAgIFRQYXJzZUNvbnRleHQgcGFyc2VDb250ZXh0KHN5bWJvbFRhYmxl
LCBleHRlbnNpb25CZWhhdmlvciwgaW50ZXJtZWRpYXRlLCBzaGFkZXJUeXBlLCBzaGFkZXJTcGVj
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zLCB0cnVlLCBp
bmZvU2luaywgZ2V0UmVzb3VyY2VzKCkpOwogCi0gICAgcGFyc2VDb250ZXh0LmZyYWdtZW50UHJl
Y2lzaW9uSGlnaCA9IGZyYWdtZW50UHJlY2lzaW9uSGlnaDsKKyAgICBwYXJzZUNvbnRleHQuc2V0
RnJhZ21lbnRQcmVjaXNpb25IaWdoT25FU1NMMShmcmFnbWVudFByZWNpc2lvbkhpZ2gpOwogICAg
IFNldEdsb2JhbFBhcnNlQ29udGV4dCgmcGFyc2VDb250ZXh0KTsKIAogICAgIC8vIFdlIHByZXNl
cnZlIHN5bWJvbHMgYXQgdGhlIGJ1aWx0LWluIGxldmVsIGZyb20gY29tcGlsZS10by1jb21waWxl
LgpAQCAtMjExLDggKzIzMCw4IEBACiAKICAgICAvLyBQYXJzZSBzaGFkZXIuCiAgICAgYm9vbCBz
dWNjZXNzID0KLSAgICAgICAgKFBhUGFyc2VTdHJpbmdzKG51bVN0cmluZ3MgLSBmaXJzdFNvdXJj
ZSwgJnNoYWRlclN0cmluZ3NbZmlyc3RTb3VyY2VdLCBOVUxMLCAmcGFyc2VDb250ZXh0KSA9PSAw
KSAmJgotICAgICAgICAocGFyc2VDb250ZXh0LnRyZWVSb290ICE9IE5VTEwpOworICAgICAgICAo
UGFQYXJzZVN0cmluZ3MobnVtU3RyaW5ncyAtIGZpcnN0U291cmNlLCAmc2hhZGVyU3RyaW5nc1tm
aXJzdFNvdXJjZV0sIG51bGxwdHIsICZwYXJzZUNvbnRleHQpID09IDApICYmCisgICAgICAgIChw
YXJzZUNvbnRleHQuZ2V0VHJlZVJvb3QoKSAhPSBudWxscHRyKTsKIAogICAgIHNoYWRlclZlcnNp
b24gPSBwYXJzZUNvbnRleHQuZ2V0U2hhZGVyVmVyc2lvbigpOwogICAgIGlmIChzdWNjZXNzICYm
IE1hcFNwZWNUb1NoYWRlclZlcnNpb24oc2hhZGVyU3BlYykgPCBzaGFkZXJWZXJzaW9uKQpAQCAt
MjIyLDcgKzI0MSw3IEBACiAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICB9CiAKLSAgICBU
SW50ZXJtTm9kZSAqcm9vdCA9IE5VTEw7CisgICAgVEludGVybU5vZGUgKnJvb3QgPSBudWxscHRy
OwogCiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgewpAQCAtMjMyLDkgKzI1MSwxMiBAQAogICAgICAg
ICAgICAgc3ltYm9sVGFibGUuc2V0R2xvYmFsSW52YXJpYW50KCk7CiAgICAgICAgIH0KIAotICAg
ICAgICByb290ID0gcGFyc2VDb250ZXh0LnRyZWVSb290OwotICAgICAgICBzdWNjZXNzID0gaW50
ZXJtZWRpYXRlLnBvc3RQcm9jZXNzKHJvb3QpOworICAgICAgICByb290ID0gcGFyc2VDb250ZXh0
LmdldFRyZWVSb290KCk7CisgICAgICAgIHJvb3QgPSBpbnRlcm1lZGlhdGUucG9zdFByb2Nlc3Mo
cm9vdCk7CiAKKyAgICAgICAgLy8gSGlnaHAgbWlnaHQgaGF2ZSBiZWVuIGF1dG8tZW5hYmxlZCBi
YXNlZCBvbiBzaGFkZXIgdmVyc2lvbgorICAgICAgICBmcmFnbWVudFByZWNpc2lvbkhpZ2ggPSBw
YXJzZUNvbnRleHQuZ2V0RnJhZ21lbnRQcmVjaXNpb25IaWdoKCk7CisKICAgICAgICAgLy8gRGlz
YWxsb3cgZXhwcmVzc2lvbnMgZGVlbWVkIHRvbyBjb21wbGV4LgogICAgICAgICBpZiAoc3VjY2Vz
cyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFkpKQog
ICAgICAgICAgICAgc3VjY2VzcyA9IGxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHkocm9vdCk7CkBA
IC0yNjQsNyArMjg2LDcgQEAKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgc2hhZGVyVmVyc2lvbiA9
PSAzMDAgJiYgc2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgICAgICAgICBz
dWNjZXNzID0gdmFsaWRhdGVPdXRwdXRzKHJvb3QpOwogCi0gICAgICAgIGlmIChzdWNjZXNzICYm
IChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJTkcpKQorICAgICAgICBp
ZiAoc3VjY2VzcyAmJiBzaG91bGRSdW5Mb29wQW5kSW5kZXhpbmdWYWxpZGF0aW9uKGNvbXBpbGVP
cHRpb25zKSkKICAgICAgICAgICAgIHN1Y2Nlc3MgPSB2YWxpZGF0ZUxpbWl0YXRpb25zKHJvb3Qp
OwogCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1RJTUlOR19S
RVNUUklDVElPTlMpKQpAQCAtMjc2LDEyICsyOTgsMTQgQEAKICAgICAgICAgLy8gVW5yb2xsIGZv
ci1sb29wIG1hcmt1cCBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdmFsaWRhdGVMaW1pdGF0aW9ucyBw
YXNzLgogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9VTlJPTExf
Rk9SX0xPT1BfV0lUSF9JTlRFR0VSX0lOREVYKSkKICAgICAgICAgewotICAgICAgICAgICAgRm9y
TG9vcFVucm9sbE1hcmtlciBtYXJrZXIoRm9yTG9vcFVucm9sbE1hcmtlcjo6a0ludGVnZXJJbmRl
eCk7CisgICAgICAgICAgICBGb3JMb29wVW5yb2xsTWFya2VyIG1hcmtlcihGb3JMb29wVW5yb2xs
TWFya2VyOjprSW50ZWdlckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihjb21waWxlT3B0aW9ucykp
OwogICAgICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJm1hcmtlcik7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVU5ST0xMX0ZPUl9MT09QX1dJ
VEhfU0FNUExFUl9BUlJBWV9JTkRFWCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEZvckxvb3BV
bnJvbGxNYXJrZXIgbWFya2VyKEZvckxvb3BVbnJvbGxNYXJrZXI6OmtTYW1wbGVyQXJyYXlJbmRl
eCk7CisgICAgICAgICAgICBGb3JMb29wVW5yb2xsTWFya2VyIG1hcmtlcihGb3JMb29wVW5yb2xs
TWFya2VyOjprU2FtcGxlckFycmF5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaG91bGRSdW5Mb29wQW5kSW5kZXhpbmdWYWxpZGF0aW9uKGNvbXBpbGVPcHRp
b25zKSk7CiAgICAgICAgICAgICByb290LT50cmF2ZXJzZSgmbWFya2VyKTsKICAgICAgICAgICAg
IGlmIChtYXJrZXIuc2FtcGxlckFycmF5SW5kZXhJc0Zsb2F0TG9vcEluZGV4KCkpCiAgICAgICAg
ICAgICB7CkBAIC0zMDIsOSArMzI2LDE2IEBACiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21w
aWxlT3B0aW9ucyAmIFNIX0NMQU1QX0lORElSRUNUX0FSUkFZX0JPVU5EUykpCiAgICAgICAgICAg
ICBhcnJheUJvdW5kc0NsYW1wZXIuTWFya0luZGlyZWN0QXJyYXlCb3VuZHNGb3JDbGFtcGluZyhy
b290KTsKIAotICAgICAgICBpZiAoc3VjY2VzcyAmJiBzaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9T
SEFERVIgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfSU5JVF9HTF9QT1NJVElPTikpCisgICAgICAg
IC8vIGdsX1Bvc2l0aW9uIGlzIGFsd2F5cyB3cml0dGVuIGluIGNvbXBhdGliaWxpdHkgb3V0cHV0
IG1vZGUKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hB
REVSICYmCisgICAgICAgICAgICAoKGNvbXBpbGVPcHRpb25zICYgU0hfSU5JVF9HTF9QT1NJVElP
TikgfHwKKyAgICAgICAgICAgICAob3V0cHV0VHlwZSA9PSBTSF9HTFNMX0NPTVBBVElCSUxJVFlf
T1VUUFVUKSkpCiAgICAgICAgICAgICBpbml0aWFsaXplR0xQb3NpdGlvbihyb290KTsKIAorICAg
ICAgICAvLyBUaGlzIHBhc3MgbWlnaHQgZW1pdCBzaG9ydCBjaXJjdWl0cyBzbyBrZWVwIGl0IGJl
Zm9yZSB0aGUgc2hvcnQgY2lyY3VpdCB1bmZvbGRpbmcKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYg
KGNvbXBpbGVPcHRpb25zICYgU0hfUkVXUklURV9ET19XSElMRV9MT09QUykpCisgICAgICAgICAg
ICBSZXdyaXRlRG9XaGlsZShyb290LCBnZXRUZW1wb3JhcnlJbmRleCgpKTsKKwogICAgICAgICBp
ZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlvbnMgJiBTSF9VTkZPTERfU0hPUlRfQ0lSQ1VJVCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCB1bmZvbGRTaG9y
dENpcmN1aXQ7CkBAIC0zMTIsOCArMzQzLDEzIEBACiAgICAgICAgICAgICB1bmZvbGRTaG9ydENp
cmN1aXQudXBkYXRlVHJlZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHN1Y2Nlc3MgJiYg
KGNvbXBpbGVPcHRpb25zICYgU0hfVkFSSUFCTEVTKSkKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYg
KGNvbXBpbGVPcHRpb25zICYgU0hfUkVNT1ZFX1BPV19XSVRIX0NPTlNUQU5UX0VYUE9ORU5UKSkK
ICAgICAgICAgeworICAgICAgICAgICAgUmVtb3ZlUG93KHJvb3QpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKHN1Y2Nlc3MgJiYgc2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhjb21waWxlT3B0aW9u
cykpCisgICAgICAgIHsKICAgICAgICAgICAgIGNvbGxlY3RWYXJpYWJsZXMocm9vdCk7CiAgICAg
ICAgICAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJ
T05TKQogICAgICAgICAgICAgewpAQCAtMzQxLDYgKzM3NywxMSBAQAogICAgICAgICAgICAgUmVn
ZW5lcmF0ZVN0cnVjdE5hbWVzIGdlbihzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7CiAgICAg
ICAgICAgICByb290LT50cmF2ZXJzZSgmZ2VuKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChz
dWNjZXNzKQorICAgICAgICB7CisgICAgICAgICAgICBEZWZlckdsb2JhbEluaXRpYWxpemVycyhy
b290KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIFNldEdsb2JhbFBhcnNlQ29udGV4dChOVUxM
KTsKQEAgLTM5NiwxMSArNDM3LDYgQEAKICAgICBmbG9hdGluZ1BvaW50LnNlY29uZGFyeVNpemUg
PSAxOwogICAgIGZsb2F0aW5nUG9pbnQuYXJyYXkgPSBmYWxzZTsKIAotICAgIFRQdWJsaWNUeXBl
IHNhbXBsZXI7Ci0gICAgc2FtcGxlci5wcmltYXJ5U2l6ZSA9IDE7Ci0gICAgc2FtcGxlci5zZWNv
bmRhcnlTaXplID0gMTsKLSAgICBzYW1wbGVyLmFycmF5ID0gZmFsc2U7Ci0KICAgICBzd2l0Y2go
c2hhZGVyVHlwZSkKICAgICB7CiAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKQEAgLTQx
MywxNCArNDQ5LDE1IEBACiAgICAgICBkZWZhdWx0OgogICAgICAgICBhc3NlcnQoZmFsc2UgJiYg
Ikxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKICAgICB9Ci0gICAgLy8gV2Ugc2V0IGRlZmF1bHRz
IGZvciBhbGwgdGhlIHNhbXBsZXIgdHlwZXMsIGV2ZW4gdGhvc2UgdGhhdCBhcmUKKyAgICAvLyBT
ZXQgZGVmYXVsdHMgZm9yIHNhbXBsZXIgdHlwZXMgdGhhdCBoYXZlIGRlZmF1bHQgcHJlY2lzaW9u
LCBldmVuIHRob3NlIHRoYXQgYXJlCiAgICAgLy8gb25seSBhdmFpbGFibGUgaWYgYW4gZXh0ZW5z
aW9uIGV4aXN0cy4KLSAgICBmb3IgKGludCBzYW1wbGVyVHlwZSA9IEVidEd1YXJkU2FtcGxlckJl
Z2luICsgMTsKLSAgICAgICAgIHNhbXBsZXJUeXBlIDwgRWJ0R3VhcmRTYW1wbGVyRW5kOyArK3Nh
bXBsZXJUeXBlKQotICAgIHsKLSAgICAgICAgc2FtcGxlci50eXBlID0gc3RhdGljX2Nhc3Q8VEJh
c2ljVHlwZT4oc2FtcGxlclR5cGUpOwotICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJl
Y2lzaW9uKHNhbXBsZXIsIEVicExvdyk7Ci0gICAgfQorICAgIC8vIE5ldyBzYW1wbGVyIHR5cGVz
IGluIEVTU0wzIGRvbid0IGhhdmUgZGVmYXVsdCBwcmVjaXNpb24uIEVTU0wxIHR5cGVzIGRvLgor
ICAgIGluaXRTYW1wbGVyRGVmYXVsdFByZWNpc2lvbihFYnRTYW1wbGVyMkQpOworICAgIGluaXRT
YW1wbGVyRGVmYXVsdFByZWNpc2lvbihFYnRTYW1wbGVyQ3ViZSk7CisgICAgLy8gU2FtcGxlckV4
dGVybmFsT0VTIGlzIHNwZWNpZmllZCBpbiB0aGUgZXh0ZW5zaW9uIHRvIGhhdmUgZGVmYXVsdCBw
cmVjaXNpb24uCisgICAgaW5pdFNhbXBsZXJEZWZhdWx0UHJlY2lzaW9uKEVidFNhbXBsZXJFeHRl
cm5hbE9FUyk7CisgICAgLy8gSXQgaXNuJ3Qgc3BlY2lmaWVkIHdoZXRoZXIgU2FtcGxlcjJEUmVj
dCBoYXMgZGVmYXVsdCBwcmVjaXNpb24uCisgICAgaW5pdFNhbXBsZXJEZWZhdWx0UHJlY2lzaW9u
KEVidFNhbXBsZXIyRFJlY3QpOwogCiAgICAgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaGFkZXJU
eXBlLCBzaGFkZXJTcGVjLCByZXNvdXJjZXMsIHN5bWJvbFRhYmxlKTsKIApAQCAtNDI5LDYgKzQ2
NiwxNyBAQAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFRDb21waWxlcjo6aW5pdFNhbXBs
ZXJEZWZhdWx0UHJlY2lzaW9uKFRCYXNpY1R5cGUgc2FtcGxlclR5cGUpCit7CisgICAgQVNTRVJU
KHNhbXBsZXJUeXBlID4gRWJ0R3VhcmRTYW1wbGVyQmVnaW4gJiYgc2FtcGxlclR5cGUgPCBFYnRH
dWFyZFNhbXBsZXJFbmQpOworICAgIFRQdWJsaWNUeXBlIHNhbXBsZXI7CisgICAgc2FtcGxlci5w
cmltYXJ5U2l6ZSAgID0gMTsKKyAgICBzYW1wbGVyLnNlY29uZGFyeVNpemUgPSAxOworICAgIHNh
bXBsZXIuYXJyYXkgICAgICAgICA9IGZhbHNlOworICAgIHNhbXBsZXIudHlwZSAgICAgICAgICA9
IHNhbXBsZXJUeXBlOworICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oc2FtcGxl
ciwgRWJwTG93KTsKK30KKwogdm9pZCBUQ29tcGlsZXI6OnNldFJlc291cmNlU3RyaW5nKCkKIHsK
ICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3Ryc3RyZWFtOwpAQCAtNDQ3LDYgKzQ5NSw4IEBACiAg
ICAgICAgICAgICAgIDw8ICI6RnJhZ21lbnRQcmVjaXNpb25IaWdoOiIgPDwgY29tcGlsZVJlc291
cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2gKICAgICAgICAgICAgICAgPDwgIjpNYXhFeHByZXNz
aW9uQ29tcGxleGl0eToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RXhwcmVzc2lvbkNvbXBsZXhp
dHkKICAgICAgICAgICAgICAgPDwgIjpNYXhDYWxsU3RhY2tEZXB0aDoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuTWF4Q2FsbFN0YWNrRGVwdGgKKyAgICAgICAgICAgICAgPDwgIjpNYXhGdW5jdGlvblBh
cmFtZXRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZ1bmN0aW9uUGFyYW1ldGVycworICAg
ICAgICAgICAgICA8PCAiOkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkOiIgPDwgY29tcGlsZVJlc291
cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZAogICAgICAgICAgICAgICA8PCAiOkVYVF9mcmFn
X2RlcHRoOiIgPDwgY29tcGlsZVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aAogICAgICAgICAgICAg
ICA8PCAiOkVYVF9zaGFkZXJfdGV4dHVyZV9sb2Q6IiA8PCBjb21waWxlUmVzb3VyY2VzLkVYVF9z
aGFkZXJfdGV4dHVyZV9sb2QKICAgICAgICAgICAgICAgPDwgIjpFWFRfc2hhZGVyX2ZyYW1lYnVm
ZmVyX2ZldGNoOiIgPDwgY29tcGlsZVJlc291cmNlcy5FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2Zl
dGNoCkBAIC00NTYsNiArNTA2LDcgQEAKICAgICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudElu
cHV0VmVjdG9yczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMK
ICAgICAgICAgICAgICAgPDwgIjpNaW5Qcm9ncmFtVGV4ZWxPZmZzZXQ6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1pblByb2dyYW1UZXhlbE9mZnNldAogICAgICAgICAgICAgICA8PCAiOk1heFByb2dy
YW1UZXhlbE9mZnNldDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4UHJvZ3JhbVRleGVsT2Zmc2V0
CisgICAgICAgICAgICAgIDw8ICI6TWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzOiIgPDwgY29tcGls
ZVJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMKICAgICAgICAgICAgICAgPDwgIjpO
Vl9kcmF3X2J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk5WX2RyYXdfYnVmZmVycwogICAg
ICAgICAgICAgICA8PCAiOldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb246IiA8PCBjb21waWxl
UmVzb3VyY2VzLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb247CiAKQEAgLTQ4MSw2ICs1MzIs
NyBAQAogICAgIG5hbWVNYXAuY2xlYXIoKTsKIAogICAgIG1Tb3VyY2VQYXRoID0gTlVMTDsKKyAg
ICBtVGVtcG9yYXJ5SW5kZXggPSAwOwogfQogCiBib29sIFRDb21waWxlcjo6aW5pdENhbGxEYWco
VEludGVybU5vZGUgKnJvb3QpCkBAIC01MjgsMTUgKzU4MCwxNSBAQAogICAgICAgICAgICAgaW5m
b1NpbmsuaW5mbyA8PCAiQ2FsbCBzdGFjayB0b28gZGVlcCAobGFyZ2VyIHRoYW4gIiA8PCBtYXhD
YWxsU3RhY2tEZXB0aAogICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSB3aXRoIHRoZSBm
b2xsb3dpbmcgY2FsbCBjaGFpbjogIiA8PCByZWNvcmQubmFtZTsKIAotICAgICAgICAgICAgc2ln
bmVkIGxvbmcgbG9uZyBjdXJyZW50RnVuY3Rpb24gPSBpOworICAgICAgICAgICAgaW50IGN1cnJl
bnRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PGludD4oaSk7CiAgICAgICAgICAgICBpbnQgY3VycmVu
dERlcHRoID0gZGVwdGg7CiAKICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50RnVuY3Rpb24gIT0g
LTEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiIC0+
ICIgPDwgbUNhbGxEYWcuZ2V0UmVjb3JkRnJvbUluZGV4KHN0YXRpY19jYXN0PHNpemVfdD4oY3Vy
cmVudEZ1bmN0aW9uKSkubmFtZTsKKyAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvIDw8ICIg
LT4gIiA8PCBtQ2FsbERhZy5nZXRSZWNvcmRGcm9tSW5kZXgoY3VycmVudEZ1bmN0aW9uKS5uYW1l
OwogCiAgICAgICAgICAgICAgICAgaW50IG5leHRGdW5jdGlvbiA9IC0xOwotICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgY2FsbGVlSW5kZXggOiBtQ2FsbERhZy5nZXRSZWNvcmRGcm9tSW5kZXgo
c3RhdGljX2Nhc3Q8c2l6ZV90PihjdXJyZW50RnVuY3Rpb24pKS5jYWxsZWVzKQorICAgICAgICAg
ICAgICAgIGZvciAoYXV0byYgY2FsbGVlSW5kZXggOiBtQ2FsbERhZy5nZXRSZWNvcmRGcm9tSW5k
ZXgoY3VycmVudEZ1bmN0aW9uKS5jYWxsZWVzKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGRlcHRoc1tjYWxsZWVJbmRleF0gPT0gY3VycmVudERlcHRoIC0gMSkK
ICAgICAgICAgICAgICAgICAgICAgewpAQCAtNTU4LDcgKzYxMCw3IEBACiBib29sIFRDb21waWxl
cjo6dGFnVXNlZEZ1bmN0aW9ucygpCiB7CiAgICAgLy8gU2VhcmNoIGZyb20gbWFpbiwgc3RhcnRp
bmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBEQUcgYXMgaXQgdXN1YWxseSBpcyB0aGUgcm9vdC4KLSAg
ICBmb3IgKHNpemVfdCBpID0gbUNhbGxEYWcuc2l6ZSgpOyBpLS07KQorICAgIGZvciAoc2l6ZV90
IGkgPSBtQ2FsbERhZy5zaXplKCk7IGktLSA+IDA7KQogICAgIHsKICAgICAgICAgaWYgKG1DYWxs
RGFnLmdldFJlY29yZEZyb21JbmRleChpKS5uYW1lID09ICJtYWluKCIpCiAgICAgICAgIHsKQEAg
LTU2OCw3ICs2MjAsNyBAQAogICAgIH0KIAogICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVm
aXhFcnJvcik7Ci0gICAgaW5mb1NpbmsuaW5mbyA8PCAiTWlzc2luZyBtYWluKCkiOworICAgIGlu
Zm9TaW5rLmluZm8gPDwgIk1pc3NpbmcgbWFpbigpXG4iOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtNjM1LDE2ICs2ODcsMjAgQEAKIAogICAgIFVudXNlZFByZWRpY2F0ZSBpc1VudXNlZCgm
bUNhbGxEYWcsICZmdW5jdGlvbk1ldGFkYXRhKTsKICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVl
bmNlID0gcm9vdE5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgc2VxdWVuY2UtPmVyYXNlKHN0ZDo6
cmVtb3ZlX2lmKHNlcXVlbmNlLT5iZWdpbigpLCBzZXF1ZW5jZS0+ZW5kKCksIGlzVW51c2VkKSwg
c2VxdWVuY2UtPmVuZCgpKTsKIAorICAgIGlmICghc2VxdWVuY2UtPmVtcHR5KCkpCisgICAgewor
ICAgICAgICBzZXF1ZW5jZS0+ZXJhc2Uoc3RkOjpyZW1vdmVfaWYoc2VxdWVuY2UtPmJlZ2luKCks
IHNlcXVlbmNlLT5lbmQoKSwgaXNVbnVzZWQpLCBzZXF1ZW5jZS0+ZW5kKCkpOworICAgIH0KKwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFRDb21waWxlcjo6dmFsaWRhdGVPdXRwdXRzKFRJ
bnRlcm1Ob2RlKiByb290KQogewotICAgIFZhbGlkYXRlT3V0cHV0cyB2YWxpZGF0ZU91dHB1dHMo
aW5mb1NpbmsuaW5mbywgY29tcGlsZVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyk7CisgICAgVmFs
aWRhdGVPdXRwdXRzIHZhbGlkYXRlT3V0cHV0cyhnZXRFeHRlbnNpb25CZWhhdmlvcigpLCBjb21w
aWxlUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKICAgICByb290LT50cmF2ZXJzZSgmdmFsaWRh
dGVPdXRwdXRzKTsKLSAgICByZXR1cm4gKHZhbGlkYXRlT3V0cHV0cy5udW1FcnJvcnMoKSA9PSAw
KTsKKyAgICByZXR1cm4gKHZhbGlkYXRlT3V0cHV0cy52YWxpZGF0ZUFuZENvdW50RXJyb3JzKGlu
Zm9TaW5rLmluZm8pID09IDApOwogfQogCiB2b2lkIFRDb21waWxlcjo6cmV3cml0ZUNTU1NoYWRl
cihUSW50ZXJtTm9kZSogcm9vdCkKQEAgLTY1NSw3ICs3MTEsNyBAQAogCiBib29sIFRDb21waWxl
cjo6dmFsaWRhdGVMaW1pdGF0aW9ucyhUSW50ZXJtTm9kZSogcm9vdCkKIHsKLSAgICBWYWxpZGF0
ZUxpbWl0YXRpb25zIHZhbGlkYXRlKHNoYWRlclR5cGUsIGluZm9TaW5rLmluZm8pOworICAgIFZh
bGlkYXRlTGltaXRhdGlvbnMgdmFsaWRhdGUoc2hhZGVyVHlwZSwgJmluZm9TaW5rLmluZm8pOwog
ICAgIHJvb3QtPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7CiAgICAgcmV0dXJuIHZhbGlkYXRlLm51bUVy
cm9ycygpID09IDA7CiB9CkBAIC03MDEsMTUgKzc1NywxMCBAQAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgVERlcGVuZGVuY3lHcmFwaCBncmFwaChyb290KTsKLQotICAgIGZv
ciAoVEZ1bmN0aW9uQ2FsbFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGdyYXBoLmJlZ2lu
VXNlckRlZmluZWRGdW5jdGlvbkNhbGxzKCk7Ci0gICAgICAgICBpdGVyICE9IGdyYXBoLmVuZFVz
ZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpOwotICAgICAgICAgKytpdGVyKQorICAgIGlmICghVmFs
aWRhdGVNYXhQYXJhbWV0ZXJzOjp2YWxpZGF0ZShyb290LCBtYXhGdW5jdGlvblBhcmFtZXRlcnMp
KQogICAgIHsKLSAgICAgICAgVEdyYXBoRnVuY3Rpb25DYWxsKiBzYW1wbGVyU3ltYm9sID0gKml0
ZXI7Ci0gICAgICAgIFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgZ3JhcGhUcmF2ZXJzZXI7Ci0g
ICAgICAgIHNhbXBsZXJTeW1ib2wtPnRyYXZlcnNlKCZncmFwaFRyYXZlcnNlcik7CisgICAgICAg
IGluZm9TaW5rLmluZm8gPDwgIkZ1bmN0aW9uIGhhcyB0b28gbWFueSBwYXJhbWV0ZXJzLiI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ29tcGlsZXIuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNjcsOCArNjcsOCBAQAogewogICBwdWJsaWM6CiAgICAgVENvbXBpbGVyKHNoOjpHTGVudW0g
dHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7Ci0gICAgdmly
dHVhbCB+VENvbXBpbGVyKCk7Ci0gICAgdmlydHVhbCBUQ29tcGlsZXIqIGdldEFzQ29tcGlsZXIo
KSB7IHJldHVybiB0aGlzOyB9CisgICAgflRDb21waWxlcigpIG92ZXJyaWRlOworICAgIFRDb21w
aWxlciAqZ2V0QXNDb21waWxlcigpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIGJv
b2wgSW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcyk7CiAKQEAgLTg1LDgg
Kzg1LDExIEBACiAgICAgaW50IGdldFNoYWRlclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBzaGFk
ZXJWZXJzaW9uOyB9CiAgICAgVEluZm9TaW5rJiBnZXRJbmZvU2luaygpIHsgcmV0dXJuIGluZm9T
aW5rOyB9CiAKKyAgICAvLyBDbGVhcnMgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcHJldmlvdXMgY29t
cGlsYXRpb24uCisgICAgdm9pZCBjbGVhclJlc3VsdHMoKTsKKwogICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpBdHRyaWJ1dGU+ICZnZXRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gYXR0cmli
dXRlczsgfQotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZnZXRPdXRwdXRW
YXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiBvdXRwdXRWYXJpYWJsZXM7IH0KKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICZnZXRPdXRwdXRWYXJpYWJsZXMoKSBjb25z
dCB7IHJldHVybiBvdXRwdXRWYXJpYWJsZXM7IH0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6
VW5pZm9ybT4gJmdldFVuaWZvcm1zKCkgY29uc3QgeyByZXR1cm4gdW5pZm9ybXM7IH0KICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJmdldFZhcnlpbmdzKCkgY29uc3QgeyByZXR1
cm4gdmFyeWluZ3M7IH0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+
ICZnZXRJbnRlcmZhY2VCbG9ja3MoKSBjb25zdCB7IHJldHVybiBpbnRlcmZhY2VCbG9ja3M7IH0K
QEAgLTk4LDYgKzEwMSw4IEBACiAgICAgU2hTaGFkZXJPdXRwdXQgZ2V0T3V0cHV0VHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG91dHB1dFR5cGU7IH0KICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0QnVp
bHRJblJlc291cmNlc1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIGJ1aWx0SW5SZXNvdXJjZXNTdHJp
bmc7IH0KIAorICAgIGJvb2wgc2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihpbnQg
Y29tcGlsZU9wdGlvbnMpIGNvbnN0OworCiAgICAgLy8gR2V0IHRoZSByZXNvdXJjZXMgc2V0IGJ5
IEluaXRCdWlsdEluU3ltYm9sVGFibGUKICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIGdl
dFJlc291cmNlcygpIGNvbnN0OwogCkBAIC0xMDcsOCArMTEyLDYgQEAKICAgICBib29sIEluaXRC
dWlsdEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpOwog
ICAgIC8vIENvbXB1dGUgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4g
cmVzb3VyY2VzCiAgICAgdm9pZCBzZXRSZXNvdXJjZVN0cmluZygpOwotICAgIC8vIENsZWFycyB0
aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbi4KLSAgICB2b2lkIGNsZWFy
UmVzdWx0cygpOwogICAgIC8vIFJldHVybiBmYWxzZSBpZiB0aGUgY2FsbCBkZXB0aCBpcyBleGNl
ZWRlZC4KICAgICBib29sIGNoZWNrQ2FsbERlcHRoKCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGEgcHJvZ3JhbSBoYXMgbm8gY29uZmxpY3Rpbmcgb3IgbWlzc2luZyBmcmFnbWVudCBvdXRwdXRz
CkBAIC0xNTEsMTggKzE1NCwyNCBAQAogICAgIGNvbnN0IGNoYXIgKmdldFNvdXJjZVBhdGgoKSBj
b25zdDsKICAgICBjb25zdCBUUHJhZ21hJiBnZXRQcmFnbWEoKSBjb25zdCB7IHJldHVybiBtUHJh
Z21hOyB9CiAgICAgdm9pZCB3cml0ZVByYWdtYSgpOworICAgIHVuc2lnbmVkIGludCAqZ2V0VGVt
cG9yYXJ5SW5kZXgoKSB7IHJldHVybiAmbVRlbXBvcmFyeUluZGV4OyB9CiAKICAgICBjb25zdCBB
cnJheUJvdW5kc0NsYW1wZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0OwogICAgIFNo
QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3ko
KSBjb25zdDsKICAgICBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYgZ2V0QnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3IoKSBjb25zdDsKIAogICAgIHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+
IGF0dHJpYnV0ZXM7Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gb3V0cHV0VmFyaWFi
bGVzOworICAgIHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gb3V0cHV0VmFyaWFibGVz
OwogICAgIHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiB1bmlmb3JtczsKICAgICBzdGQ6OnZlY3Rv
cjxzaDo6U2hhZGVyVmFyaWFibGU+IGV4cGFuZGVkVW5pZm9ybXM7CiAgICAgc3RkOjp2ZWN0b3I8
c2g6OlZhcnlpbmc+IHZhcnlpbmdzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9j
az4gaW50ZXJmYWNlQmxvY2tzOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZENvbGxlY3RWYXJp
YWJsZXMoaW50IGNvbXBpbGVPcHRpb25zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChjb21waWxl
T3B0aW9ucyAmIFNIX1ZBUklBQkxFUykgIT0gMDsKKyAgICB9CisKICAgcHJpdmF0ZToKICAgICAv
LyBDcmVhdGVzIHRoZSBmdW5jdGlvbiBjYWxsIERBRyBmb3IgZnVydGhlciBhbmFseXNpcywgcmV0
dXJuaW5nIGZhbHNlIGlmIHRoZXJlIGlzIGEgcmVjdXJzaW9uCiAgICAgYm9vbCBpbml0Q2FsbERh
ZyhUSW50ZXJtTm9kZSAqcm9vdCk7CkBAIC0xNzAsMTIgKzE3OSwxNSBAQAogICAgIGJvb2wgdGFn
VXNlZEZ1bmN0aW9ucygpOwogICAgIHZvaWQgaW50ZXJuYWxUYWdVc2VkRnVuY3Rpb24oc2l6ZV90
IGluZGV4KTsKIAorICAgIHZvaWQgaW5pdFNhbXBsZXJEZWZhdWx0UHJlY2lzaW9uKFRCYXNpY1R5
cGUgc2FtcGxlclR5cGUpOworCiAgICAgLy8gUmVtb3ZlcyB1bnVzZWQgZnVuY3Rpb24gZGVjbGFy
YXRpb25zIGFuZCBwcm90b3R5cGVzIGZyb20gdGhlIEFTVAogICAgIGNsYXNzIFVudXNlZFByZWRp
Y2F0ZTsKICAgICBib29sIHBydW5lVW51c2VkRnVuY3Rpb25zKFRJbnRlcm1Ob2RlICpyb290KTsK
IAotICAgIFRJbnRlcm1Ob2RlICpjb21waWxlVHJlZUltcGwoY29uc3QgY2hhciogY29uc3Qgc2hh
ZGVyU3RyaW5nc1tdLAotICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywgaW50IGNvbXBpbGVPcHRp
b25zKTsKKyAgICBUSW50ZXJtTm9kZSAqY29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0
IHNoYWRlclN0cmluZ3NbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBudW1TdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50
IGNvbXBpbGVPcHRpb25zKTsKIAogICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZTsKICAgICBTaFNo
YWRlclNwZWMgc2hhZGVyU3BlYzsKQEAgLTE5Niw2ICsyMDgsNyBAQAogICAgIGludCBtYXhVbmlm
b3JtVmVjdG9yczsKICAgICBpbnQgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CiAgICAgaW50IG1h
eENhbGxTdGFja0RlcHRoOworICAgIGludCBtYXhGdW5jdGlvblBhcmFtZXRlcnM7CiAKICAgICBT
aEJ1aWx0SW5SZXNvdXJjZXMgY29tcGlsZVJlc291cmNlczsKICAgICBzdGQ6OnN0cmluZyBidWls
dEluUmVzb3VyY2VzU3RyaW5nOwpAQCAtMjIxLDYgKzIzNCw4IEBACiAgICAgTmFtZU1hcCBuYW1l
TWFwOwogCiAgICAgVFByYWdtYSBtUHJhZ21hOworCisgICAgdW5zaWduZWQgaW50IG1UZW1wb3Jh
cnlJbmRleDsKIH07CiAKIC8vCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJH
bG9iYWxJbml0aWFsaXplcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIERlZmVy
R2xvYmFsSW5pdGlhbGl6ZXJzIGlzIGFuIEFTVCB0cmF2ZXJzZXIgdGhhdCBtb3ZlcyBnbG9iYWwg
aW5pdGlhbGl6ZXJzIGludG8gYSBmdW5jdGlvbiwgYW5kCisvLyBhZGRzIGEgZnVuY3Rpb24gY2Fs
bCB0byB0aGF0IGZ1bmN0aW9uIGluIHRoZSBiZWdpbm5pbmcgb2YgbWFpbigpLgorLy8gVGhpcyBl
bmFibGVzIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbHMgd2l0aCB1bmlmb3JtcyBvciBub24tY29u
c3RhbnQgZ2xvYmFscywgYXMgYWxsb3dlZCBieQorLy8gdGhlIFdlYkdMIHNwZWMuIFNvbWUgaW5p
dGlhbGl6ZXJzIHJlZmVyZW5jaW5nIG5vbi1jb25zdGFudHMgbWF5IG5lZWQgdG8gYmUgdW5mb2xk
ZWQgaW50byBpZgorLy8gc3RhdGVtZW50cyBpbiBITFNMIC0gdGhpcyBraW5kIG9mIHN0ZXBzIHNo
b3VsZCBiZSBkb25lIGFmdGVyIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzIGlzIHJ1bi4KKy8vCisK
KyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmgi
CisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCisKK25hbWVzcGFjZQoreworCit2
b2lkIFNldEludGVybmFsRnVuY3Rpb25OYW1lKFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uTm9k
ZSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBUU3RyaW5nIG5hbWVTdHIobmFtZSk7CisgICAg
bmFtZVN0ciA9IFRGdW5jdGlvbjo6bWFuZ2xlTmFtZShuYW1lU3RyKTsKKyAgICBUTmFtZSBuYW1l
T2JqKG5hbWVTdHIpOworICAgIG5hbWVPYmouc2V0SW50ZXJuYWwodHJ1ZSk7CisgICAgZnVuY3Rp
b25Ob2RlLT5zZXROYW1lT2JqKG5hbWVPYmopOworfQorCitUSW50ZXJtQWdncmVnYXRlICpDcmVh
dGVGdW5jdGlvblByb3RvdHlwZU5vZGUoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBUSW50ZXJt
QWdncmVnYXRlICpmdW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BQcm90b3R5
cGUpOworCisgICAgU2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUoZnVuY3Rpb25Ob2RlLCBuYW1lKTsK
KyAgICBUVHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOworICAgIGZ1bmN0aW9uTm9kZS0+c2V0VHlw
ZShyZXR1cm5UeXBlKTsKKyAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOworfQorCitUSW50ZXJtQWdn
cmVnYXRlICpDcmVhdGVGdW5jdGlvbkRlZmluaXRpb25Ob2RlKGNvbnN0IGNoYXIgKm5hbWUsIFRJ
bnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQm9keSkKK3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpm
dW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbik7CisgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqcGFyYW1zTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFBhcmFt
ZXRlcnMpOworICAgIGZ1bmN0aW9uTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHBhcmFt
c05vZGUpOworICAgIGZ1bmN0aW9uTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGZ1bmN0
aW9uQm9keSk7CisKKyAgICBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlvbk5vZGUsIG5h
bWUpOworICAgIFRUeXBlIHJldHVyblR5cGUoRWJ0Vm9pZCk7CisgICAgZnVuY3Rpb25Ob2RlLT5z
ZXRUeXBlKHJldHVyblR5cGUpOworICAgIHJldHVybiBmdW5jdGlvbk5vZGU7Cit9CisKK1RJbnRl
cm1BZ2dyZWdhdGUgKkNyZWF0ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgY2hhciAqbmFtZSkKK3sK
KyAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0
ZShFT3BGdW5jdGlvbkNhbGwpOworCisgICAgU2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUoZnVuY3Rp
b25Ob2RlLCBuYW1lKTsKKyAgICBUVHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOworICAgIGZ1bmN0
aW9uTm9kZS0+c2V0VHlwZShyZXR1cm5UeXBlKTsKKyAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOwor
fQorCitjbGFzcyBEZWZlckdsb2JhbEluaXRpYWxpemVyc1RyYXZlcnNlciA6IHB1YmxpYyBUSW50
ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBEZWZlckdsb2JhbEluaXRpYWxpemVyc1Ry
YXZlcnNlcigpOworCisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJp
bmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGluc2VydEluaXRGdW5jdGlvbihUSW50
ZXJtTm9kZSAqcm9vdCk7CisKKyAgcHJpdmF0ZToKKyAgICBUSW50ZXJtU2VxdWVuY2UgbURlZmVy
cmVkSW5pdGlhbGl6ZXJzOworfTsKKworRGVmZXJHbG9iYWxJbml0aWFsaXplcnNUcmF2ZXJzZXI6
OkRlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2VyKCkKKyAgICA6IFRJbnRlcm1UcmF2ZXJz
ZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKQoreworfQorCitib29sIERlZmVyR2xvYmFsSW5pdGlhbGl6
ZXJzVHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9k
ZSkKK3sKKyAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXplKQorICAgIHsKKyAg
ICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNT
eW1ib2xOb2RlKCk7CisgICAgICAgIEFTU0VSVChzeW1ib2xOb2RlKTsKKyAgICAgICAgVEludGVy
bVR5cGVkICpleHByZXNzaW9uID0gbm9kZS0+Z2V0UmlnaHQoKTsKKworICAgICAgICBpZiAoc3lt
Ym9sTm9kZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsICYmCisgICAgICAgICAgICAoZXhw
cmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwgZXhwcmVzc2lvbi0+Z2V0QXND
b25zdGFudFVuaW9uKCkgPT0gbnVsbHB0cikpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZv
ciB2YXJpYWJsZXMgd2hpY2ggYXJlIG5vdCBjb25zdGFudCwgZGVmZXIgdGhlaXIgcmVhbCBpbml0
aWFsaXphdGlvbiB1bnRpbAorICAgICAgICAgICAgLy8gYWZ0ZXIgd2UgaW5pdGlhbGl6ZSB1bmlm
b3Jtcy4KKyAgICAgICAgICAgIC8vIERlZmVycmFsIGlzIGRvbmUgYWxzbyBpbiBhbnkgY2FzZXMg
d2hlcmUgdGhlIHZhcmlhYmxlIGhhcyBub3QgYmVlbiBjb25zdGFudCBmb2xkZWQsCisgICAgICAg
ICAgICAvLyBzaW5jZSBvdGhlcndpc2UgdGhlcmUncyBhIGNoYW5jZSB0aGF0IEhMU0wgb3V0cHV0
IHdpbGwgZ2VuZXJhdGUgZXh0cmEgc3RhdGVtZW50cworICAgICAgICAgICAgLy8gZnJvbSB0aGUg
aW5pdGlhbGl6ZXIgZXhwcmVzc2lvbi4KKyAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmRlZmVy
cmVkSW5pdCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbik7CisgICAgICAgICAgICBkZWZl
cnJlZEluaXQtPnNldExlZnQobm9kZS0+Z2V0TGVmdCgpLT5kZWVwQ29weSgpKTsKKyAgICAgICAg
ICAgIGRlZmVycmVkSW5pdC0+c2V0UmlnaHQobm9kZS0+Z2V0UmlnaHQoKSk7CisgICAgICAgICAg
ICBkZWZlcnJlZEluaXQtPnNldFR5cGUobm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIG1E
ZWZlcnJlZEluaXRpYWxpemVycy5wdXNoX2JhY2soZGVmZXJyZWRJbml0KTsKKworICAgICAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBpbml0aWFsaXplciBmcm9tIHRoZSBnbG9iYWwgc2NvcGUgYW5kIGp1
c3QgZGVjbGFyZSB0aGUgZ2xvYmFsIGluc3RlYWQuCisgICAgICAgICAgICBtUmVwbGFjZW1lbnRz
LnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBub2RlLT5n
ZXRMZWZ0KCksIGZhbHNlKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2VyOjppbnNlcnRJbml0RnVu
Y3Rpb24oVEludGVybU5vZGUgKnJvb3QpCit7CisgICAgaWYgKG1EZWZlcnJlZEluaXRpYWxpemVy
cy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBUSW50ZXJtQWdn
cmVnYXRlICpyb290QWdnID0gcm9vdC0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICBBU1NFUlQocm9v
dEFnZyAhPSBudWxscHRyICYmIHJvb3RBZ2ctPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpOworCisg
ICAgY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lID0gImluaXRpYWxpemVEZWZlcnJlZEdsb2JhbHMi
OworCisgICAgLy8gQWRkIGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBzaGFkZXIKKyAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvblByb3RvdHlwZU5vZGUgPSBD
cmVhdGVGdW5jdGlvblByb3RvdHlwZU5vZGUoZnVuY3Rpb25OYW1lKTsKKyAgICByb290QWdnLT5n
ZXRTZXF1ZW5jZSgpLT5pbnNlcnQocm9vdEFnZy0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgZnVu
Y3Rpb25Qcm90b3R5cGVOb2RlKTsKKworICAgIC8vIEFkZCBmdW5jdGlvbiBkZWZpbml0aW9uIHRv
IHRoZSBlbmQgb2YgdGhlIHNoYWRlcgorICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQm9k
eU5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgVEludGVybVNl
cXVlbmNlICpmdW5jdGlvbkJvZHkgPSBmdW5jdGlvbkJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpOwor
ICAgIGZvciAoY29uc3QgYXV0byAmZGVmZXJyZWRJbml0IDogbURlZmVycmVkSW5pdGlhbGl6ZXJz
KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb25Cb2R5LT5wdXNoX2JhY2soZGVmZXJyZWRJbml0KTsK
KyAgICB9CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25EZWZpbml0aW9uID0KKyAgICAg
ICAgQ3JlYXRlRnVuY3Rpb25EZWZpbml0aW9uTm9kZShmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQm9k
eU5vZGUpOworICAgIHJvb3RBZ2ctPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhmdW5jdGlvbkRl
ZmluaXRpb24pOworCisgICAgLy8gSW5zZXJ0IGNhbGwgaW50byBtYWluIGZ1bmN0aW9uCisgICAg
Zm9yIChUSW50ZXJtTm9kZSAqbm9kZSA6ICpyb290QWdnLT5nZXRTZXF1ZW5jZSgpKQorICAgIHsK
KyAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZUFnZyA9IG5vZGUtPmdldEFzQWdncmVnYXRl
KCk7CisgICAgICAgIGlmIChub2RlQWdnICE9IG51bGxwdHIgJiYgbm9kZUFnZy0+Z2V0T3AoKSA9
PSBFT3BGdW5jdGlvbiAmJgorICAgICAgICAgICAgVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9k
ZUFnZy0+Z2V0TmFtZSgpKSA9PSAibWFpbiIpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbE5vZGUgPSBDcmVhdGVGdW5jdGlvbkNhbGxOb2RlKGZ1
bmN0aW9uTmFtZSk7CisKKyAgICAgICAgICAgIFRJbnRlcm1Ob2RlICptYWluQm9keSAgICAgICAg
ID0gbm9kZUFnZy0+Z2V0U2VxdWVuY2UoKS0+YmFjaygpOworICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqbWFpbkJvZHlBZ2cgPSBtYWluQm9keS0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtYWluQm9keUFnZyAhPSBudWxscHRyICYmIG1haW5Cb2R5QWdnLT5nZXRP
cCgpID09IEVPcFNlcXVlbmNlKTsKKyAgICAgICAgICAgIG1haW5Cb2R5QWdnLT5nZXRTZXF1ZW5j
ZSgpLT5pbnNlcnQobWFpbkJvZHlBZ2ctPmdldFNlcXVlbmNlKCktPmJlZ2luKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbE5vZGUp
OworICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UKKwordm9pZCBEZWZlckds
b2JhbEluaXRpYWxpemVycyhUSW50ZXJtTm9kZSAqcm9vdCkKK3sKKyAgICBEZWZlckdsb2JhbElu
aXRpYWxpemVyc1RyYXZlcnNlciB0cmF2ZXJzZXI7CisgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZl
cnNlcik7CisKKyAgICAvLyBSZXBsYWNlIHRoZSBpbml0aWFsaXplcnMgb2YgdGhlIGdsb2JhbCB2
YXJpYWJsZXMuCisgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKKworICAgIC8vIEFkZCB0aGUg
ZnVuY3Rpb24gd2l0aCBpbml0aWFsaXphdGlvbiBhbmQgdGhlIGNhbGwgdG8gdGhhdC4KKyAgICB0
cmF2ZXJzZXIuaW5zZXJ0SW5pdEZ1bmN0aW9uKHJvb3QpOworfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXpl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJ
bml0aWFsaXplcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKy8vIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzIGlzIGFuIEFTVCB0cmF2ZXJzZXIgdGhhdCBt
b3ZlcyBnbG9iYWwgaW5pdGlhbGl6ZXJzIGludG8gYSBmdW5jdGlvbiwgYW5kCisvLyBhZGRzIGEg
ZnVuY3Rpb24gY2FsbCB0byB0aGF0IGZ1bmN0aW9uIGluIHRoZSBiZWdpbm5pbmcgb2YgbWFpbigp
LgorLy8gVGhpcyBlbmFibGVzIGluaXRpYWxpemF0aW9uIG9mIGdsb2JhbHMgd2l0aCB1bmlmb3Jt
cyBvciBub24tY29uc3RhbnQgZ2xvYmFscywgYXMgYWxsb3dlZCBieQorLy8gdGhlIFdlYkdMIHNw
ZWMuIFNvbWUgaW5pdGlhbGl6ZXJzIHJlZmVyZW5jaW5nIG5vbi1jb25zdGFudHMgbWF5IG5lZWQg
dG8gYmUgdW5mb2xkZWQgaW50byBpZgorLy8gc3RhdGVtZW50cyBpbiBITFNMIC0gdGhpcyBraW5k
IG9mIHN0ZXBzIHNob3VsZCBiZSBkb25lIGFmdGVyIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzIGlz
IHJ1bi4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9ERUZFUkdMT0JBTElOSVRJ
QUxJWkVSU19IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0RFRkVSR0xPQkFMSU5JVElB
TElaRVJTX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOworCit2b2lkIERlZmVyR2xvYmFsSW5pdGlh
bGl6ZXJzKFRJbnRlcm1Ob2RlICpyb290KTsKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX0RFRkVSR0xPQkFMSU5JVElBTElaRVJTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0
aWNzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcg
KzE2LDcgQEAKIHsKICAgcHVibGljOgogICAgIFREaWFnbm9zdGljcyhUSW5mb1NpbmsmIGluZm9T
aW5rKTsKLSAgICB2aXJ0dWFsIH5URGlhZ25vc3RpY3MoKTsKKyAgICB+VERpYWdub3N0aWNzKCkg
b3ZlcnJpZGU7CiAKICAgICBUSW5mb1NpbmsmIGluZm9TaW5rKCkgeyByZXR1cm4gbUluZm9TaW5r
OyB9CiAKQEAgLTMwLDkgKzMwLDcgQEAKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgZXh0cmEpOwogCiAgIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoSUQg
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9j
LAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCk7CisgICAg
dm9pZCBwcmludChJRCBpZCwgY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0
ZDo6c3RyaW5nICZ0ZXh0KSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIFRJbmZvU2luayYg
bUluZm9TaW5rOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5jcHAJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDYg
KzgsNyBAQAogCiAjaW5jbHVkZSA8c3N0cmVhbT4KIAorI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAj
aW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9E
aWFnbm9zdGljcy5oIgogCkBAIC0yNSwxMyArMjYsMTUgQEAKICAgICByZXR1cm4gRUJoVW5kZWZp
bmVkOwogfQogCi1URGlyZWN0aXZlSGFuZGxlcjo6VERpcmVjdGl2ZUhhbmRsZXIoVEV4dGVuc2lv
bkJlaGF2aW9yJiBleHRCZWhhdmlvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBURGlhZ25vc3RpY3MmIGRpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCYgc2hhZGVyVmVyc2lvbiwKK1REaXJlY3RpdmVIYW5kbGVyOjpURGly
ZWN0aXZlSGFuZGxlcihURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dEJlaGF2aW9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAmZGlhZ25vc3RpY3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICZzaGFkZXJWZXJzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYnVnU2hhZGVy
UHJlY2lzaW9uU3VwcG9ydGVkKQogICAgIDogbUV4dGVuc2lvbkJlaGF2aW9yKGV4dEJlaGF2aW9y
KSwKICAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcyksCiAgICAgICBtU2hhZGVyVmVyc2lv
bihzaGFkZXJWZXJzaW9uKSwKKyAgICAgIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLAogICAgICAg
bURlYnVnU2hhZGVyUHJlY2lzaW9uU3VwcG9ydGVkKGRlYnVnU2hhZGVyUHJlY2lzaW9uU3VwcG9y
dGVkKQogewogfQpAQCAtNTcsNyArNjAsMTYgQEAKICAgICAgICAgY29uc3QgY2hhciBrQWxsW10g
PSAiYWxsIjsKIAogICAgICAgICBpZiAobmFtZSA9PSBrSW52YXJpYW50ICYmIHZhbHVlID09IGtB
bGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtU2hhZGVyVmVyc2lvbiA9PSAzMDAgJiYg
bVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC42LjEKKyAgICAgICAgICAgICAgICBt
RGlhZ25vc3RpY3Mud3JpdGVJbmZvKAorICAgICAgICAgICAgICAgICAgICBwcDo6RGlhZ25vc3Rp
Y3M6OlBQX0VSUk9SLCBsb2MsCisgICAgICAgICAgICAgICAgICAgICIjcHJhZ21hIFNUREdMIGlu
dmFyaWFudChhbGwpIGNhbiBub3QgYmUgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCBuYW1lLCB2
YWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtUHJhZ21hLnN0ZGdsLmludmFyaWFu
dEFsbCA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgLy8gVGhlIFNUREdMIHByYWdtYSBpcyB1
c2VkIHRvIHJlc2VydmUgcHJhZ21hcyBmb3IgdXNlIGJ5IGZ1dHVyZQogICAgICAgICAvLyByZXZp
c2lvbnMgb2YgR0xTTC4gIERvIG5vdCBnZW5lcmF0ZSBhbiBlcnJvciBvbiB1bmV4cGVjdGVkCiAg
ICAgICAgIC8vIG5hbWUgYW5kIHZhbHVlLgpAQCAtOTgsOCArMTEwLDkgQEAKIAogICAgICAgICBp
ZiAoaW52YWxpZFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtRGlhZ25vc3RpY3MucmVw
b3J0KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9QUkFHTUFfVkFMVUUsIGxvYywgdmFsdWUp
OwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbURpYWdub3N0aWNzLndyaXRlSW5m
byhwcDo6RGlhZ25vc3RpY3M6OlBQX0VSUk9SLCBsb2MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJpbnZhbGlkIHByYWdtYSB2YWx1ZSIsIHZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJ29uJyBvciAnb2ZmJyBleHBlY3RlZCIpOwogICAgICAg
ICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuaAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw0MSAr
MTEsNDIgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9y
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaCIKICNpbmNsdWRlICJj
b21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCIKKyNpbmNsdWRlICJH
TFNMQU5HL1NoYWRlckxhbmcuaCIKIAogY2xhc3MgVERpYWdub3N0aWNzOwogCiBjbGFzcyBURGly
ZWN0aXZlSGFuZGxlciA6IHB1YmxpYyBwcDo6RGlyZWN0aXZlSGFuZGxlciwgYW5nbGU6Ok5vbkNv
cHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBURGlyZWN0aXZlSGFuZGxlcihURXh0ZW5zaW9uQmVo
YXZpb3ImIGV4dEJlaGF2aW9yLAotICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyYg
ZGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgICAgICAgaW50JiBzaGFkZXJWZXJzaW9uLAor
ICAgIFREaXJlY3RpdmVIYW5kbGVyKFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IsCisg
ICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICZkaWFnbm9zdGljcywKKyAgICAgICAg
ICAgICAgICAgICAgICBpbnQgJnNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAg
c2g6OkdMZW51bSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVidWdT
aGFkZXJQcmVjaXNpb25TdXBwb3J0ZWQpOwotICAgIHZpcnR1YWwgflREaXJlY3RpdmVIYW5kbGVy
KCk7CisgICAgflREaXJlY3RpdmVIYW5kbGVyKCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBUUHJh
Z21hJiBwcmFnbWEoKSBjb25zdCB7IHJldHVybiBtUHJhZ21hOyB9CiAgICAgY29uc3QgVEV4dGVu
c2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1FeHRlbnNp
b25CZWhhdmlvcjsgfQogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUVycm9yKGNvbnN0IHBwOjpT
b3VyY2VMb2NhdGlvbiYgbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgbXNnKTsKKyAgICB2b2lkIGhhbmRsZUVycm9yKGNvbnN0IHBwOjpTb3VyY2VM
b2NhdGlvbiAmbG9jLCBjb25zdCBzdGQ6OnN0cmluZyAmbXNnKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVQcmFnbWEoY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RkZ2wpOworICAgIHZvaWQgaGFuZGxl
UHJhZ21hKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLAorICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZ2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIHN0ZGdsKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFeHRlbnNpb24oY29uc3QgcHA6OlNv
dXJjZUxvY2F0aW9uJiBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBiZWhhdmlvcik7CisgICAgdm9pZCBoYW5kbGVFeHRlbnNpb24oY29u
c3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJmJlaGF2aW9yKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVW
ZXJzaW9uKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCB2ZXJzaW9uKTsKKyAgICB2b2lkIGhhbmRsZVZlcnNpb24oY29uc3Qg
cHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGludCB2ZXJzaW9uKSBvdmVycmlkZTsKIAogICBwcml2
YXRlOgogICAgIFRQcmFnbWEgbVByYWdtYTsKICAgICBURXh0ZW5zaW9uQmVoYXZpb3ImIG1FeHRl
bnNpb25CZWhhdmlvcjsKICAgICBURGlhZ25vc3RpY3MmIG1EaWFnbm9zdGljczsKICAgICBpbnQm
IG1TaGFkZXJWZXJzaW9uOworICAgIHNoOjpHTGVudW0gbVNoYWRlclR5cGU7CiAgICAgYm9vbCBt
RGVidWdTaGFkZXJQcmVjaXNpb25TdXBwb3J0ZWQ7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSwxMSArMTc5LDUwIEBACiAgICAgICBjYXNlIDE6CiAg
ICAgICAgIHJldHVybiAiZmxvYXQiOwogICAgICAgY2FzZSAyOgotICAgICAgICByZXR1cm4gdHlw
ZS5nZXRTZWNvbmRhcnlTaXplKCkgPiAxID8gIm1hdDIiIDogInZlYzIiOworICAgICAgICBzd2l0
Y2godHlwZS5nZXRTZWNvbmRhcnlTaXplKCkpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICByZXR1cm4gInZlYzIiOworICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgIHJldHVybiAibWF0MiI7CisgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgcmV0dXJu
ICJtYXQyeDMiOworICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIHJldHVybiAibWF0Mng0
IjsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICBjYXNlIDM6Ci0gICAgICAgIHJl
dHVybiB0eXBlLmdldFNlY29uZGFyeVNpemUoKSA+IDEgPyAibWF0MyIgOiAidmVjMyI7CisgICAg
ICAgIHN3aXRjaCh0eXBlLmdldFNlY29uZGFyeVNpemUoKSkKKyAgICAgICAgeworICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgIHJldHVybiAidmVjMyI7CisgICAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgcmV0dXJuICJtYXQzeDIiOworICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAg
ICAgIHJldHVybiAibWF0MyI7CisgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgcmV0dXJu
ICJtYXQzeDQiOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgIGNhc2UgNDoKLSAg
ICAgICAgcmV0dXJuIHR5cGUuZ2V0U2Vjb25kYXJ5U2l6ZSgpID4gMSA/ICJtYXQ0IiA6ICJ2ZWM0
IjsKKyAgICAgICAgc3dpdGNoKHR5cGUuZ2V0U2Vjb25kYXJ5U2l6ZSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgcmV0dXJuICJ2ZWM0IjsKKyAgICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICByZXR1cm4gIm1hdDR4MiI7CisgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgcmV0dXJuICJtYXQ0eDMiOworICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAg
ICAgIHJldHVybiAibWF0NCI7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgZGVm
YXVsdDoKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0x
OTksOCArMjM4LDEwIEBACiBUSW50ZXJtQWdncmVnYXRlICpjcmVhdGVJbnRlcm5hbEZ1bmN0aW9u
Q2FsbE5vZGUoVFN0cmluZyBuYW1lLCBUSW50ZXJtTm9kZSAqY2hpbGQpCiB7CiAgICAgVEludGVy
bUFnZ3JlZ2F0ZSAqY2FsbE5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZSgpOwotICAgIGNhbGxO
b2RlLT5zZXRPcChFT3BJbnRlcm5hbEZ1bmN0aW9uQ2FsbCk7Ci0gICAgY2FsbE5vZGUtPnNldE5h
bWUobmFtZSk7CisgICAgY2FsbE5vZGUtPnNldE9wKEVPcEZ1bmN0aW9uQ2FsbCk7CisgICAgVE5h
bWUgbmFtZU9iaihURnVuY3Rpb246Om1hbmdsZU5hbWUobmFtZSkpOworICAgIG5hbWVPYmouc2V0
SW50ZXJuYWwodHJ1ZSk7CisgICAgY2FsbE5vZGUtPnNldE5hbWVPYmoobmFtZU9iaik7CiAgICAg
Y2FsbE5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhjaGlsZCk7CiAgICAgcmV0dXJuIGNh
bGxOb2RlOwogfQpAQCAtMjUyLDE3ICsyOTMsMTQgQEAKIAogfSAgLy8gbmFtZXNwYWNlIGFub255
bW91cwogCi1FbXVsYXRlUHJlY2lzaW9uOjpFbXVsYXRlUHJlY2lzaW9uKCkKLSAgICA6IFRJbnRl
cm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSksCi0gICAgICBtRGVjbGFyaW5nVmFyaWFibGVz
KGZhbHNlKSwKLSAgICAgIG1JbkxWYWx1ZShmYWxzZSksCi0gICAgICBtSW5GdW5jdGlvbkNhbGxP
dXRQYXJhbWV0ZXIoZmFsc2UpCitFbXVsYXRlUHJlY2lzaW9uOjpFbXVsYXRlUHJlY2lzaW9uKGNv
bnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsIGludCBzaGFkZXJWZXJzaW9uKQorICAgIDog
VExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUsIHN5bWJvbFRhYmxlLCBz
aGFkZXJWZXJzaW9uKSwKKyAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMoZmFsc2UpCiB7fQogCiB2
b2lkIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCiB7
Ci0gICAgaWYgKGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlwZSgpKSAmJgotICAgICAgICAhbURl
Y2xhcmluZ1ZhcmlhYmxlcyAmJiAhbUluTFZhbHVlICYmICFtSW5GdW5jdGlvbkNhbGxPdXRQYXJh
bWV0ZXIpCisgICAgaWYgKGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlwZSgpKSAmJiAhbURlY2xh
cmluZ1ZhcmlhYmxlcyAmJiAhaXNMVmFsdWVSZXF1aXJlZEhlcmUoKSkKICAgICB7CiAgICAgICAg
IFRJbnRlcm1Ob2RlICpwYXJlbnQgPSBnZXRQYXJlbnROb2RlKCk7CiAgICAgICAgIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5nRnVuY3Rpb25DYWxsTm9kZShub2RlKTsK
QEAgLTI3NSwxNCArMzEzLDYgQEAKIHsKICAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOwog
Ci0gICAgaWYgKG5vZGUtPmlzQXNzaWdubWVudCgpKQotICAgIHsKLSAgICAgICAgaWYgKHZpc2l0
ID09IFByZVZpc2l0KQotICAgICAgICAgICAgbUluTFZhbHVlID0gdHJ1ZTsKLSAgICAgICAgZWxz
ZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAgICAgICAgIG1JbkxWYWx1ZSA9IGZhbHNlOwot
ICAgIH0KLQogICAgIFRPcGVyYXRvciBvcCA9IG5vZGUtPmdldE9wKCk7CiAKICAgICAvLyBSSFMg
b2YgaW5pdGlhbGl6ZSBpcyBub3QgYmVpbmcgZGVjbGFyZWQuCkBAIC0zNzYsMjIgKzQwNiw5IEBA
CiAgICAgewogICAgICAgY2FzZSBFT3BTZXF1ZW5jZToKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0
U3RydWN0OgotICAgICAgICAvLyBObyBzcGVjaWFsIGhhbmRsaW5nCi0gICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBFT3BGdW5jdGlvbjoKLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0g
Kihub2RlLT5nZXRTZXF1ZW5jZSgpKTsKLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6Y29u
c3RfaXRlcmF0b3Igc2VxSXRlciA9IHNlcXVlbmNlLmJlZ2luKCk7Ci0gICAgICAgICAgICBUSW50
ZXJtQWdncmVnYXRlICpwYXJhbXMgPSAoKnNlcUl0ZXIpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAg
ICAgICAgICAgQVNTRVJUKHBhcmFtcyAhPSBOVUxMKTsKLSAgICAgICAgICAgIEFTU0VSVChwYXJh
bXMtPmdldE9wKCkgPT0gRU9wUGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBtRnVuY3Rpb25NYXBb
bm9kZS0+Z2V0TmFtZSgpXSA9IHBhcmFtcy0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICBpZiAodmlzaXQg
PT0gUHJlVmlzaXQpCi0gICAgICAgICAgICBtRnVuY3Rpb25NYXBbbm9kZS0+Z2V0TmFtZSgpXSA9
IG5vZGUtPmdldFNlcXVlbmNlKCk7CiAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcFBhcmFtZXRlcnM6CkBAIC00MTgsNTEgKzQzNSwx
OCBAQAogICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6CiAgICAgICB7CiAgICAgICAgIC8vIEZ1
bmN0aW9uIGNhbGwuCi0gICAgICAgIGJvb2wgaW5GdW5jdGlvbk1hcCA9IChtRnVuY3Rpb25NYXAu
ZmluZChub2RlLT5nZXROYW1lKCkpICE9IG1GdW5jdGlvbk1hcC5lbmQoKSk7CiAgICAgICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gVXNlci1kZWZp
bmVkIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMgYXJlIG5vdCByb3VuZGVkLCB0aGlzIHJlbGllcyBv
biB0aGF0CiAgICAgICAgICAgICAvLyBjYWxjdWxhdGlvbnMgcHJvZHVjaW5nIHRoZSB2YWx1ZSB3
ZXJlIHJvdW5kZWQuCiAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcGFyZW50ID0gZ2V0UGFyZW50
Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlwZSgpKSAm
JiAhaW5GdW5jdGlvbk1hcCAmJiBwYXJlbnRVc2VzUmVzdWx0KHBhcmVudCwgbm9kZSkpCisgICAg
ICAgICAgICBpZiAoY2FuUm91bmRGbG9hdChub2RlLT5nZXRUeXBlKCkpICYmICFpc0luRnVuY3Rp
b25NYXAobm9kZSkgJiYKKyAgICAgICAgICAgICAgICBwYXJlbnRVc2VzUmVzdWx0KHBhcmVudCwg
bm9kZSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxh
Y2VtZW50ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlvbkNhbGxOb2RlKG5vZGUpOwogICAgICAgICAg
ICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVVcGRhdGVFbnRyeShwYXJlbnQsIG5v
ZGUsIHJlcGxhY2VtZW50LCB0cnVlKSk7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
IChpbkZ1bmN0aW9uTWFwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1TZXFJdGVy
U3RhY2sucHVzaF9iYWNrKG1GdW5jdGlvbk1hcFtub2RlLT5nZXROYW1lKCldLT5iZWdpbigpKTsK
LSAgICAgICAgICAgICAgICBpZiAobVNlcUl0ZXJTdGFjay5iYWNrKCkgIT0gbUZ1bmN0aW9uTWFw
W25vZGUtPmdldE5hbWUoKV0tPmVuZCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSAoKm1TZXFJdGVyU3RhY2suYmFjaygpKS0+
Z2V0QXNUeXBlZCgpLT5nZXRRdWFsaWZpZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgbUluRnVu
Y3Rpb25DYWxsT3V0UGFyYW1ldGVyID0gKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVy
ID09IEV2cUluT3V0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGZ1bmN0aW9u
IGlzIG5vdCB1c2VyLWRlZmluZWQgLSBpdCBpcyBsaWtlbHkgYnVpbHQtaW4gdGV4dHVyZSBmdW5j
dGlvbi4KLSAgICAgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB0aG9zZSBkbyBub3QgaGF2ZSBv
dXQgcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICBtSW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0
ZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh2
aXNpdCA9PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5GdW5jdGlvbk1h
cCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICArK21TZXFJdGVyU3RhY2suYmFjaygp
OwotICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gKCptU2VxSXRlclN0YWNr
LmJhY2soKSktPmdldEFzVHlwZWQoKS0+Z2V0UXVhbGlmaWVyKCk7Ci0gICAgICAgICAgICAgICAg
bUluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyID0gKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVh
bGlmaWVyID09IEV2cUluT3V0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpbkZ1bmN0aW9uTWFwKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIG1TZXFJdGVyU3RhY2sucG9wX2JhY2soKTsKLSAgICAgICAg
ICAgICAgICBtSW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIgPSBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGRlZmF1bHQ6CkBA
IC00ODQsMTUgKzQ2OCwxMCBAQAogICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKICAgICAgIGNhc2Ug
RU9wVmVjdG9yTG9naWNhbE5vdDoKICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoKLSAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6CiAgICAgICBjYXNlIEVPcFBvc3RE
ZWNyZW1lbnQ6CiAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKICAgICAgIGNhc2UgRU9wUHJl
RGVjcmVtZW50OgotICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAgICBt
SW5MVmFsdWUgPSB0cnVlOwotICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCi0g
ICAgICAgICAgICBtSW5MVmFsdWUgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZh
dWx0OgogICAgICAgICBpZiAoY2FuUm91bmRGbG9hdChub2RlLT5nZXRUeXBlKCkpICYmIHZpc2l0
ID09IFByZVZpc2l0KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxNSAr
MTgsMTUgQEAKIC8vIG5lZWQgdG8gd3JpdGUgYSBodWdlIG51bWJlciBvZiB2YXJpYXRpb25zIG9m
IHRoZSBlbXVsYXRlZCBjb21wb3VuZCBhc3NpZ25tZW50CiAvLyB0byBldmVyeSB0cmFuc2xhdGVk
IHNoYWRlciB3aXRoIGVtdWxhdGlvbiBlbmFibGVkLgogCi1jbGFzcyBFbXVsYXRlUHJlY2lzaW9u
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK2NsYXNzIEVtdWxhdGVQcmVjaXNpb24gOiBwdWJs
aWMgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBFbXVsYXRlUHJl
Y2lzaW9uKCk7CisgICAgRW11bGF0ZVByZWNpc2lvbihjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJv
bFRhYmxlLCBpbnQgc2hhZGVyVmVyc2lvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCAqbm9kZSk7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QmluYXJ5KFZp
c2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRV
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKTsKLSAgICB2aXJ0dWFsIGJvb2wg
dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpOworICAg
IHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9v
bCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7
CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92
ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3cml0ZUVtdWxhdGlvbkhlbHBlcnMo
VEluZm9TaW5rQmFzZSYgc2luaywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0TGFuZ3VhZ2UpOwogCkBA
IC01NiwyMCArNTYsNyBAQAogICAgIEVtdWxhdGlvblNldCBtRW11bGF0ZUNvbXBvdW5kTXVsOwog
ICAgIEVtdWxhdGlvblNldCBtRW11bGF0ZUNvbXBvdW5kRGl2OwogCi0gICAgLy8gU3RhY2sgb2Yg
ZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIgaXRlcmF0b3JzCi0gICAgc3RkOjp2ZWN0b3I8VEludGVy
bVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvcj4gbVNlcUl0ZXJTdGFjazsKLQogICAgIGJvb2wgbURl
Y2xhcmluZ1ZhcmlhYmxlczsKLSAgICBib29sIG1JbkxWYWx1ZTsKLSAgICBib29sIG1JbkZ1bmN0
aW9uQ2FsbE91dFBhcmFtZXRlcjsKLQotICAgIHN0cnVjdCBUU3RyaW5nQ29tcGFyYXRvcgotICAg
IHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcigpIChjb25zdCBUU3RyaW5nJiBhLCBjb25zdCBUU3Ry
aW5nJiBiKSBjb25zdCB7IHJldHVybiBhLmNvbXBhcmUoYikgPCAwOyB9Ci0gICAgfTsKLQotICAg
IC8vIE1hcCBmcm9tIGZ1bmN0aW9uIG5hbWVzIHRvIHRoZWlyIHBhcmFtZXRlciBzZXF1ZW5jZXMK
LSAgICBzdGQ6Om1hcDxUU3RyaW5nLCBUSW50ZXJtU2VxdWVuY2UqLCBUU3RyaW5nQ29tcGFyYXRv
cj4gbUZ1bmN0aW9uTWFwOwogfTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0VN
VUxBVEVfUFJFQ0lTSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2
aW9yLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDQgKzM0LDEwIEBACiAvLyBNYXBwaW5nIGJldHdlZW4gZXh0ZW5zaW9uIG5hbWUgYW5kIGJl
aGF2aW9yLgogdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgVEJlaGF2aW9yPiBURXh0ZW5z
aW9uQmVoYXZpb3I7CiAKK2lubGluZSBib29sIElzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBURXh0
ZW5zaW9uQmVoYXZpb3IgJmV4dEJlaGF2aW9yLCBjb25zdCBjaGFyICpleHRlbnNpb24pCit7Cisg
ICAgYXV0byBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChleHRlbnNpb24pOworICAgIHJldHVybiBp
dGVyICE9IGV4dEJlaGF2aW9yLmVuZCgpICYmIChpdGVyLT5zZWNvbmQgPT0gRUJoRW5hYmxlIHx8
IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKTsKK30KKwogI2VuZGlmIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfRVhURU5TSU9OQkVIQVZJT1JfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVu
c2lvbkdMU0wuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uR0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMDAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRXh0ZW5zaW9uR0xTTC5jcHA6IEltcGxl
bWVudHMgdGhlIFRFeHRlbnNpb25HTFNMIGNsYXNzIHRoYXQgdHJhY2tzIEdMU0wgZXh0ZW5zaW9u
IHJlcXVpcmVtZW50cworLy8gb2Ygc2hhZGVycy4KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvRXh0ZW5zaW9uR0xTTC5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9W
ZXJzaW9uR0xTTC5oIgorCitURXh0ZW5zaW9uR0xTTDo6VEV4dGVuc2lvbkdMU0woU2hTaGFkZXJP
dXRwdXQgb3V0cHV0KQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2Up
LCBtVGFyZ2V0VmVyc2lvbihTaGFkZXJPdXRwdXRUeXBlVG9HTFNMVmVyc2lvbihvdXRwdXQpKQor
eworfQorCitjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gJlRFeHRlbnNpb25HTFNMOjpnZXRF
bmFibGVkRXh0ZW5zaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1FbmFibGVkRXh0ZW5zaW9u
czsKK30KKworY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ICZURXh0ZW5zaW9uR0xTTDo6Z2V0
UmVxdWlyZWRFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlcXVpcmVkRXh0ZW5z
aW9uczsKK30KKworYm9vbCBURXh0ZW5zaW9uR0xTTDo6dmlzaXRVbmFyeShWaXNpdCwgVEludGVy
bVVuYXJ5ICpub2RlKQoreworICAgIGNoZWNrT3BlcmF0b3Iobm9kZSk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBURXh0ZW5zaW9uR0xTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgY2hlY2tPcGVyYXRvcihub2RlKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFRFeHRlbnNpb25HTFNMOjpjaGVja09wZXJhdG9yKFRJ
bnRlcm1PcGVyYXRvciAqbm9kZSkKK3sKKyAgICBpZiAobVRhcmdldFZlcnNpb24gPCBHTFNMX1ZF
UlNJT05fMTMwKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAo
bm9kZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9wQWJzOgorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BTaWduOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBFT3BNaXg6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVP
cEZsb2F0Qml0c1RvSW50OgorICAgICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvVWludDoKKyAgICAg
ICAgY2FzZSBFT3BJbnRCaXRzVG9GbG9hdDoKKyAgICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxv
YXQ6CisgICAgICAgICAgICBpZiAobVRhcmdldFZlcnNpb24gPCBHTFNMX1ZFUlNJT05fMzMwKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEJpdCBjb252ZXJzaW9uIGZ1bmN0aW9u
cyBjYW5ub3QgYmUgZW11bGF0ZWQuCisgICAgICAgICAgICAgICAgbVJlcXVpcmVkRXh0ZW5zaW9u
cy5pbnNlcnQoIkdMX0FSQl9zaGFkZXJfYml0X2VuY29kaW5nIik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6CisgICAg
ICAgIGNhc2UgRU9wUGFja0hhbGYyeDE2OgorICAgICAgICBjYXNlIEVPcFVucGFja1Nub3JtMngx
NjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngxNjoKKyAgICAgICAgICAgIGlmIChtVGFy
Z2V0VmVyc2lvbiA8IEdMU0xfVkVSU0lPTl80MjApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbUVuYWJsZWRFeHRlbnNpb25zLmluc2VydCgiR0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2Vf
cGFja2luZyIpOworCisgICAgICAgICAgICAgICAgaWYgKG1UYXJnZXRWZXJzaW9uIDwgR0xTTF9W
RVJTSU9OXzMzMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIGZs
b2F0Qml0c1RvVWludCBhbmQgdWludEJpdHNUb0Zsb2F0IGFyZSBuZWVkZWQgdG8gZW11bGF0ZQor
ICAgICAgICAgICAgICAgICAgICAvLyBwYWNrSGFsZjJ4MTYgYW5kIHVucGFja0hhbGYyeDE2IHJl
c3BlY3RpdmVseSBhbmQgY2Fubm90IGJlCisgICAgICAgICAgICAgICAgICAgIC8vIGVtdWxhdGVk
IHRoZW1zZWx2ZXMuCisgICAgICAgICAgICAgICAgICAgIG1SZXF1aXJlZEV4dGVuc2lvbnMuaW5z
ZXJ0KCJHTF9BUkJfc2hhZGVyX2JpdF9lbmNvZGluZyIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wUGFja1Vu
b3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6CisgICAgICAgICAgICBp
ZiAobVRhcmdldFZlcnNpb24gPCBHTFNMX1ZFUlNJT05fNDEwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG1FbmFibGVkRXh0ZW5zaW9ucy5pbnNlcnQoIkdMX0FSQl9zaGFkaW5nX2xh
bmd1YWdlX3BhY2tpbmciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRXh0ZW5zaW9uR0xTTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uR0xTTC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRXh0ZW5zaW9uR0xTTC5o
OiBEZWZpbmVzIHRoZSBURXh0ZW5zaW9uR0xTTCBjbGFzcyB0aGF0IHRyYWNrcyBHTFNMIGV4dGVu
c2lvbiByZXF1aXJlbWVudHMgb2YKKy8vIHNoYWRlcnMuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJB
TlNMQVRPUl9FWFRFTlNJT05HTFNMX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfRVhU
RU5TSU9OR0xTTF9IXworCisjaW5jbHVkZSA8c2V0PgorI2luY2x1ZGUgPHN0cmluZz4KKworI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCisvLyBUcmF2ZXJzZXMg
dGhlIGludGVybWVkaWF0ZSB0cmVlIHRvIGRldGVybWluZSB3aGljaCBHTFNMIGV4dGVuc2lvbnMg
YXJlIHJlcXVpcmVkCisvLyB0byBzdXBwb3J0IHRoZSBzaGFkZXIuCitjbGFzcyBURXh0ZW5zaW9u
R0xTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBURXh0ZW5z
aW9uR0xTTChTaFNoYWRlck91dHB1dCBvdXRwdXQpOworCisgICAgY29uc3Qgc3RkOjpzZXQ8c3Rk
OjpzdHJpbmc+ICZnZXRFbmFibGVkRXh0ZW5zaW9ucygpIGNvbnN0OworICAgIGNvbnN0IHN0ZDo6
c2V0PHN0ZDo6c3RyaW5nPiAmZ2V0UmVxdWlyZWRFeHRlbnNpb25zKCkgY29uc3Q7CisKKyAgICBi
b29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkgb3ZlcnJpZGU7
CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAq
bm9kZSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICB2b2lkIGNoZWNrT3BlcmF0b3IoVElu
dGVybU9wZXJhdG9yICpub2RlKTsKKworICAgIGludCBtVGFyZ2V0VmVyc2lvbjsKKworICAgIHN0
ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtRW5hYmxlZEV4dGVuc2lvbnM7CisgICAgc3RkOjpzZXQ8c3Rk
OjpzdHJpbmc+IG1SZXF1aXJlZEV4dGVuc2lvbnM7Cit9OworCisjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfRVhURU5TSU9OR0xTTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFn
U3RkMTQwU3RydWN0cy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xOCwxMSArMTgsMTcgQEAKIGNsYXNzIEZsYWdTdGQxNDBTdHJ1Y3RzIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgorCisgICAgRmxhZ1N0ZDE0MFN0cnVj
dHMoKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKQorICAg
IHsKKyAgICB9CisKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUSW50ZXJtVHlwZWQgKj4gZ2V0Rmxh
Z2dlZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbUZsYWdnZWROb2RlczsgfQogCiAgIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkgKmJpbmFyeU5vZGUpOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3lt
Ym9sICpzeW1ib2wpOworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1C
aW5hcnkgKmJpbmFyeU5vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVy
bVN5bWJvbCAqc3ltYm9sKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIGJvb2wgaXNJblN0
ZDE0MEludGVyZmFjZUJsb2NrKFRJbnRlcm1UeXBlZCAqbm9kZSkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiw5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0Zvckxvb3BVbnJvbGwuaCIKIAorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIgorI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisKIGJvb2wg
Rm9yTG9vcFVucm9sbE1hcmtlcjo6dmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5v
ZGUpCiB7CiAgICAgaWYgKG1VbnJvbGxDb25kaXRpb24gIT0ga1NhbXBsZXJBcnJheUluZGV4KQpA
QCAtMzgsMTEgKzQxLDE2IEBACiAKIGJvb2wgRm9yTG9vcFVucm9sbE1hcmtlcjo6dmlzaXRMb29w
KFZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkKIHsKLSAgICBpZiAobVVucm9sbENvbmRpdGlvbiA9
PSBrSW50ZWdlckluZGV4KQorICAgIGJvb2wgY2FuQmVVbnJvbGxlZCA9IG1IYXNSdW5Mb29wVmFs
aWRhdGlvbjsKKyAgICBpZiAoIW1IYXNSdW5Mb29wVmFsaWRhdGlvbikKICAgICB7CisgICAgICAg
IGNhbkJlVW5yb2xsZWQgPSBWYWxpZGF0ZUxpbWl0YXRpb25zOjpJc0xpbWl0ZWRGb3JMb29wKG5v
ZGUpOworICAgIH0KKyAgICBpZiAobVVucm9sbENvbmRpdGlvbiA9PSBrSW50ZWdlckluZGV4ICYm
IGNhbkJlVW5yb2xsZWQpCisgICAgewogICAgICAgICAvLyBDaGVjayBpZiBsb29wIGluZGV4IHR5
cGUgaXMgaW50ZWdlci4KLSAgICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgVmFsaWRhdGVM
aW1pdGF0aW9ucyBwYXNzLCBzbyBhbGwgdGhlIGNhbGxzCi0gICAgICAgIC8vIHNob3VsZCBiZSB2
YWxpZC4gU2VlIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEluaXQoKS4KKyAg
ICAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYWZ0ZXIgVmFsaWRhdGVMaW1pdGF0aW9ucyBwYXNzLCBz
byB0aGUgbG9vcCBoYXMgdGhlIGxpbWl0ZWQgZm9ybSBzcGVjaWZpZWQKKyAgICAgICAgLy8gaW4g
RVNTTCAxLjAwIGFwcGVuZGl4IEEuCiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqZGVjbFNlcSA9
IG5vZGUtPmdldEluaXQoKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2UoKTsKICAgICAg
ICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpkZWNsU2VxKVswXS0+Z2V0QXNCaW5hcnlOb2Rl
KCktPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgICAgIGlmIChzeW1ib2wtPmdl
dEJhc2ljVHlwZSgpID09IEVidEludCkKQEAgLTUwLDExICs1OCwxOCBAQAogICAgIH0KIAogICAg
IFRJbnRlcm1Ob2RlICpib2R5ID0gbm9kZS0+Z2V0Qm9keSgpOwotICAgIGlmIChib2R5ICE9IE5V
TEwpCisgICAgaWYgKGJvZHkgIT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIG1Mb29wU3RhY2su
cHVzaChub2RlKTsKLSAgICAgICAgYm9keS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIG1Mb29w
U3RhY2sucG9wKCk7CisgICAgICAgIGlmIChjYW5CZVVucm9sbGVkKQorICAgICAgICB7CisgICAg
ICAgICAgICBtTG9vcFN0YWNrLnB1c2gobm9kZSk7CisgICAgICAgICAgICBib2R5LT50cmF2ZXJz
ZSh0aGlzKTsKKyAgICAgICAgICAgIG1Mb29wU3RhY2sucG9wKCk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBib2R5LT50cmF2ZXJzZSh0aGlzKTsKKyAg
ICAgICAgfQogICAgIH0KICAgICAvLyBUaGUgbG9vcCBpcyBmdWxseSBwcm9jZXNzZWQgLSBubyBu
ZWVkIHRvIHZpc2l0IGNoaWxkcmVuLgogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Zvckxvb3BVbnJvbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9Gb3JMb29wVW5yb2xsLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Zvckxvb3BVbnJvbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsMTYgKzI0LDE4IEBACiAgICAgICAgIGtTYW1wbGVyQXJyYXlJbmRleAog
ICAgIH07CiAKLSAgICBGb3JMb29wVW5yb2xsTWFya2VyKFVucm9sbENvbmRpdGlvbiBjb25kaXRp
b24pCi0gICAgICAgIDogbVVucm9sbENvbmRpdGlvbihjb25kaXRpb24pLAorICAgIEZvckxvb3BV
bnJvbGxNYXJrZXIoVW5yb2xsQ29uZGl0aW9uIGNvbmRpdGlvbiwgYm9vbCBoYXNSdW5Mb29wVmFs
aWRhdGlvbikKKyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSks
CisgICAgICAgICAgbVVucm9sbENvbmRpdGlvbihjb25kaXRpb24pLAogICAgICAgICAgIG1TYW1w
bGVyQXJyYXlJbmRleElzRmxvYXRMb29wSW5kZXgoZmFsc2UpLAotICAgICAgICAgIG1WaXNpdFNh
bXBsZXJBcnJheUluZGV4Tm9kZUluc2lkZUxvb3AoZmFsc2UpCisgICAgICAgICAgbVZpc2l0U2Ft
cGxlckFycmF5SW5kZXhOb2RlSW5zaWRlTG9vcChmYWxzZSksCisgICAgICAgICAgbUhhc1J1bkxv
b3BWYWxpZGF0aW9uKGhhc1J1bkxvb3BWYWxpZGF0aW9uKQogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpOwotICAg
IHZpcnR1YWwgYm9vbCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSk7CisgICAgYm9vbCB2
aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9v
bCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
YW1wbGVyQXJyYXlJbmRleElzRmxvYXRMb29wSW5kZXgoKSBjb25zdAogICAgIHsKQEAgLTQ1LDYg
KzQ3LDcgQEAKICAgICBUTG9vcFN0YWNrIG1Mb29wU3RhY2s7CiAgICAgYm9vbCBtU2FtcGxlckFy
cmF5SW5kZXhJc0Zsb2F0TG9vcEluZGV4OwogICAgIGJvb2wgbVZpc2l0U2FtcGxlckFycmF5SW5k
ZXhOb2RlSW5zaWRlTG9vcDsKKyAgICBib29sIG1IYXNSdW5Mb29wVmFsaWRhdGlvbjsKIH07CiAK
ICNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0ZPUkxPT1BVTlJPTExfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9JbmZvU2luay5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogICAgICAgICAgICAgc2luay5hcHBlbmQoIk5PVEU6ICIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBzaW5r
LmFwcGVuZCgiVU5LTk9XTiBFUlJPUjogIik7CisgICAgICAgICAgICBzaW5rLmFwcGVuZCgiVU5L
T1dOIEVSUk9SOiAiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0luaXRpYWxpemUuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEsMjUgKzExLDI2IEBACiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9Jbml0aWFsaXplLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWNo
ZS5oIgogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAjaW5j
bHVkZSAiYW5nbGVfZ2wuaCIKIAogdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVu
dW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVz
b3VyY2VzLCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQogewotICAgIFRUeXBlICpmbG9hdDEg
PSBuZXcgVFR5cGUoRWJ0RmxvYXQpOwotICAgIFRUeXBlICpmbG9hdDIgPSBuZXcgVFR5cGUoRWJ0
RmxvYXQsIDIpOwotICAgIFRUeXBlICpmbG9hdDMgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIDMpOwot
ICAgIFRUeXBlICpmbG9hdDQgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIDQpOwotICAgIFRUeXBlICpp
bnQxID0gbmV3IFRUeXBlKEVidEludCk7Ci0gICAgVFR5cGUgKmludDIgPSBuZXcgVFR5cGUoRWJ0
SW50LCAyKTsKLSAgICBUVHlwZSAqaW50MyA9IG5ldyBUVHlwZShFYnRJbnQsIDMpOwotICAgIFRU
eXBlICp1aW50MSA9IG5ldyBUVHlwZShFYnRVSW50KTsKLSAgICBUVHlwZSAqYm9vbDEgPSBuZXcg
VFR5cGUoRWJ0Qm9vbCk7Ci0gICAgVFR5cGUgKmdlblR5cGUgPSBuZXcgVFR5cGUoRWJ0R2VuVHlw
ZSk7Ci0gICAgVFR5cGUgKmdlbklUeXBlID0gbmV3IFRUeXBlKEVidEdlbklUeXBlKTsKLSAgICBU
VHlwZSAqZ2VuVVR5cGUgPSBuZXcgVFR5cGUoRWJ0R2VuVVR5cGUpOwotICAgIFRUeXBlICpnZW5C
VHlwZSA9IG5ldyBUVHlwZShFYnRHZW5CVHlwZSk7CisgICAgY29uc3QgVFR5cGUgKmZsb2F0MSA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCk7CisgICAgY29uc3QgVFR5cGUgKmZsb2F0MiA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMik7CisgICAgY29uc3QgVFR5cGUgKmZsb2F0MyA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMyk7CisgICAgY29uc3QgVFR5cGUgKmZsb2F0NCA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCk7CisgICAgY29uc3QgVFR5cGUgKmludDEgPSBUQ2Fj
aGU6OmdldFR5cGUoRWJ0SW50KTsKKyAgICBjb25zdCBUVHlwZSAqaW50MiA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRJbnQsIDIpOworICAgIGNvbnN0IFRUeXBlICppbnQzID0gVENhY2hlOjpnZXRUeXBl
KEVidEludCwgMyk7CisgICAgY29uc3QgVFR5cGUgKnVpbnQxID0gVENhY2hlOjpnZXRUeXBlKEVi
dFVJbnQpOworICAgIGNvbnN0IFRUeXBlICpib29sMSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRCb29s
KTsKKyAgICBjb25zdCBUVHlwZSAqZ2VuVHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHZW5UeXBl
KTsKKyAgICBjb25zdCBUVHlwZSAqZ2VuSVR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R2VuSVR5
cGUpOworICAgIGNvbnN0IFRUeXBlICpnZW5VVHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHZW5V
VHlwZSk7CisgICAgY29uc3QgVFR5cGUgKmdlbkJUeXBlID0gVENhY2hlOjpnZXRUeXBlKEVidEdl
bkJUeXBlKTsKIAogICAgIC8vCiAgICAgLy8gQW5nbGUgYW5kIFRyaWdvbm9tZXRyaWMgRnVuY3Rp
b25zLgpAQCAtOTYsMTkgKzk3LDE2IEBACiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgRU9wQ2xhbXAsIGdlblVUeXBlLCAiY2xhbXAiLCBnZW5VVHlwZSwgZ2Vu
VVR5cGUsIGdlblVUeXBlKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9C
VUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQx
KTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wTWl4
LCBnZW5UeXBlLCAibWl4IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4
IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuQlR5cGUpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTdGVwLCBnZW5UeXBlLCAic3RlcCIsIGdlblR5cGUs
IGdlblR5cGUpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5T
LCBFT3BTdGVwLCBnZW5UeXBlLCAic3RlcCIsIGZsb2F0MSwgZ2VuVHlwZSk7CiAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5
cGUsICJzbW9vdGhzdGVwIiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CiAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5
cGUsICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9hdDEsIGdlblR5cGUpOwogCi0gICAgVFR5cGUg
Km91dEZsb2F0MSA9IG5ldyBUVHlwZShFYnRGbG9hdCk7Ci0gICAgVFR5cGUgKm91dEZsb2F0MiA9
IG5ldyBUVHlwZShFYnRGbG9hdCwgMik7Ci0gICAgVFR5cGUgKm91dEZsb2F0MyA9IG5ldyBUVHlw
ZShFYnRGbG9hdCwgMyk7Ci0gICAgVFR5cGUgKm91dEZsb2F0NCA9IG5ldyBUVHlwZShFYnRGbG9h
dCwgNCk7Ci0gICAgb3V0RmxvYXQxLT5zZXRRdWFsaWZpZXIoRXZxT3V0KTsKLSAgICBvdXRGbG9h
dDItPnNldFF1YWxpZmllcihFdnFPdXQpOwotICAgIG91dEZsb2F0My0+c2V0UXVhbGlmaWVyKEV2
cU91dCk7Ci0gICAgb3V0RmxvYXQ0LT5zZXRRdWFsaWZpZXIoRXZxT3V0KTsKKyAgICBjb25zdCBU
VHlwZSAqb3V0RmxvYXQxID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCBFdnFPdXQpOworICAg
IGNvbnN0IFRUeXBlICpvdXRGbG9hdDIgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIEV2cU91
dCwgMik7CisgICAgY29uc3QgVFR5cGUgKm91dEZsb2F0MyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRG
bG9hdCwgRXZxT3V0LCAzKTsKKyAgICBjb25zdCBUVHlwZSAqb3V0RmxvYXQ0ID0gVENhY2hlOjpn
ZXRUeXBlKEVidEZsb2F0LCBFdnFPdXQsIDQpOwogCiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgRU9wTW9kZiwgZmxvYXQxLCAibW9kZiIsIGZsb2F0MSwgb3V0
RmxvYXQxKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBF
T3BNb2RmLCBmbG9hdDIsICJtb2RmIiwgZmxvYXQyLCBvdXRGbG9hdDIpOwpAQCAtMTQxLDE1ICsx
MzksMTUgQEAKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywg
RU9wUmVmbGVjdCwgZ2VuVHlwZSwgInJlZmxlY3QiLCBnZW5UeXBlLCBnZW5UeXBlKTsKICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wUmVmcmFjdCwgZ2Vu
VHlwZSwgInJlZnJhY3QiLCBnZW5UeXBlLCBnZW5UeXBlLCBmbG9hdDEpOwogCi0gICAgVFR5cGUg
Km1hdDIgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIDIsIDIpOwotICAgIFRUeXBlICptYXQzID0gbmV3
IFRUeXBlKEVidEZsb2F0LCAzLCAzKTsKLSAgICBUVHlwZSAqbWF0NCA9IG5ldyBUVHlwZShFYnRG
bG9hdCwgNCwgNCk7Ci0gICAgVFR5cGUgKm1hdDJ4MyA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMiwg
Myk7Ci0gICAgVFR5cGUgKm1hdDN4MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMywgMik7Ci0gICAg
VFR5cGUgKm1hdDJ4NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMiwgNCk7Ci0gICAgVFR5cGUgKm1h
dDR4MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgNCwgMik7Ci0gICAgVFR5cGUgKm1hdDN4NCA9IG5l
dyBUVHlwZShFYnRGbG9hdCwgMywgNCk7Ci0gICAgVFR5cGUgKm1hdDR4MyA9IG5ldyBUVHlwZShF
YnRGbG9hdCwgNCwgMyk7CisgICAgY29uc3QgVFR5cGUgKm1hdDIgPSBUQ2FjaGU6OmdldFR5cGUo
RWJ0RmxvYXQsIDIsIDIpOworICAgIGNvbnN0IFRUeXBlICptYXQzID0gVENhY2hlOjpnZXRUeXBl
KEVidEZsb2F0LCAzLCAzKTsKKyAgICBjb25zdCBUVHlwZSAqbWF0NCA9IFRDYWNoZTo6Z2V0VHlw
ZShFYnRGbG9hdCwgNCwgNCk7CisgICAgY29uc3QgVFR5cGUgKm1hdDJ4MyA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRGbG9hdCwgMiwgMyk7CisgICAgY29uc3QgVFR5cGUgKm1hdDN4MiA9IFRDYWNoZTo6
Z2V0VHlwZShFYnRGbG9hdCwgMywgMik7CisgICAgY29uc3QgVFR5cGUgKm1hdDJ4NCA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRGbG9hdCwgMiwgNCk7CisgICAgY29uc3QgVFR5cGUgKm1hdDR4MiA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCwgMik7CisgICAgY29uc3QgVFR5cGUgKm1hdDN4NCA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMywgNCk7CisgICAgY29uc3QgVFR5cGUgKm1hdDR4
MyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCwgMyk7CiAKICAgICAvLwogICAgIC8vIE1h
dHJpeCBGdW5jdGlvbnMuCkBAIC0xOTIsMTAgKzE5MCwxMCBAQAogICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEludmVyc2UsIG1hdDMsICJpbnZlcnNlIiwg
bWF0Myk7CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9w
SW52ZXJzZSwgbWF0NCwgImludmVyc2UiLCBtYXQ0KTsKIAotICAgIFRUeXBlICp2ZWMgPSBuZXcg
VFR5cGUoRWJ0VmVjKTsKLSAgICBUVHlwZSAqaXZlYyA9IG5ldyBUVHlwZShFYnRJVmVjKTsKLSAg
ICBUVHlwZSAqdXZlYyA9IG5ldyBUVHlwZShFYnRVVmVjKTsKLSAgICBUVHlwZSAqYnZlYyA9IG5l
dyBUVHlwZShFYnRCVmVjKTsKKyAgICBjb25zdCBUVHlwZSAqdmVjID0gVENhY2hlOjpnZXRUeXBl
KEVidFZlYyk7CisgICAgY29uc3QgVFR5cGUgKml2ZWMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0SVZl
Yyk7CisgICAgY29uc3QgVFR5cGUgKnV2ZWMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0VVZlYyk7Cisg
ICAgY29uc3QgVFR5cGUgKmJ2ZWMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0QlZlYyk7CiAKICAgICAv
LwogICAgIC8vIFZlY3RvciByZWxhdGlvbmFsIGZ1bmN0aW9ucy4KQEAgLTIyNCw4ICsyMjIsOCBA
QAogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBbGws
IGJvb2wxLCAiYWxsIiwgYnZlYyk7CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01N
T05fQlVJTFRJTlMsIEVPcFZlY3RvckxvZ2ljYWxOb3QsIGJ2ZWMsICJub3QiLCBidmVjKTsKIAot
ICAgIFRUeXBlICpzYW1wbGVyMkQgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEKTsKLSAgICBUVHlw
ZSAqc2FtcGxlckN1YmUgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlckN1YmUpOworICAgIGNvbnN0IFRU
eXBlICpzYW1wbGVyMkQgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlcjJEKTsKKyAgICBjb25z
dCBUVHlwZSAqc2FtcGxlckN1YmUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckN1YmUpOwog
CiAgICAgLy8KICAgICAvLyBUZXh0dXJlIEZ1bmN0aW9ucyBmb3IgR0xTTCBFUyAxLjAKQEAgLTIz
Nyw3ICsyMzUsNyBAQAogCiAgICAgaWYgKHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFs
KQogICAgIHsKLSAgICAgICAgVFR5cGUgKnNhbXBsZXJFeHRlcm5hbE9FUyA9IG5ldyBUVHlwZShF
YnRTYW1wbGVyRXh0ZXJuYWxPRVMpOworICAgICAgICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVy
bmFsT0VTID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7CiAKICAgICAg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4
dHVyZTJEIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDIpOwogICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwg
c2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDMpOwpAQCAtMjQ2LDcgKzI0NCw3IEBACiAKICAgICBp
ZiAocmVzb3VyY2VzLkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkKICAgICB7Ci0gICAgICAgIFRUeXBl
ICpzYW1wbGVyMkRSZWN0ID0gbmV3IFRUeXBlKEVidFNhbXBsZXIyRFJlY3QpOworICAgICAgICBj
b25zdCBUVHlwZSAqc2FtcGxlcjJEUmVjdCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkRS
ZWN0KTsKIAogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5T
LCBmbG9hdDQsICJ0ZXh0dXJlMkRSZWN0Iiwgc2FtcGxlcjJEUmVjdCwgZmxvYXQyKTsKICAgICAg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4
dHVyZTJEUmVjdFByb2oiLCBzYW1wbGVyMkRSZWN0LCBmbG9hdDMpOwpAQCAtMjk1LDEyICsyOTMs
MTIgQEAKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywg
ZmxvYXQ0LCAidGV4dHVyZUN1YmVMb2QiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDEpOwog
ICAgIH0KIAotICAgIFRUeXBlICpndmVjNCA9IG5ldyBUVHlwZShFYnRHVmVjNCk7CisgICAgY29u
c3QgVFR5cGUgKmd2ZWM0ID0gVENhY2hlOjpnZXRUeXBlKEVidEdWZWM0KTsKIAotICAgIFRUeXBl
ICpnc2FtcGxlcjJEID0gbmV3IFRUeXBlKEVidEdTYW1wbGVyMkQpOwotICAgIFRUeXBlICpnc2Ft
cGxlckN1YmUgPSBuZXcgVFR5cGUoRWJ0R1NhbXBsZXJDdWJlKTsKLSAgICBUVHlwZSAqZ3NhbXBs
ZXIzRCA9IG5ldyBUVHlwZShFYnRHU2FtcGxlcjNEKTsKLSAgICBUVHlwZSAqZ3NhbXBsZXIyREFy
cmF5ID0gbmV3IFRUeXBlKEVidEdTYW1wbGVyMkRBcnJheSk7CisgICAgY29uc3QgVFR5cGUgKmdz
YW1wbGVyMkQgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R1NhbXBsZXIyRCk7CisgICAgY29uc3QgVFR5
cGUgKmdzYW1wbGVyQ3ViZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHU2FtcGxlckN1YmUpOworICAg
IGNvbnN0IFRUeXBlICpnc2FtcGxlcjNEID0gVENhY2hlOjpnZXRUeXBlKEVidEdTYW1wbGVyM0Qp
OworICAgIGNvbnN0IFRUeXBlICpnc2FtcGxlcjJEQXJyYXkgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0
R1NhbXBsZXIyREFycmF5KTsKIAogICAgIC8vCiAgICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMgZm9y
IEdMU0wgRVMgMy4wCkBAIC0zMjgsOSArMzI2LDkgQEAKICAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvaiIsIGdzYW1wbGVy
M0QsIGZsb2F0NCwgZmxvYXQxKTsKICAgICB9CiAKLSAgICBUVHlwZSAqc2FtcGxlcjJEU2hhZG93
ID0gbmV3IFRUeXBlKEVidFNhbXBsZXIyRFNoYWRvdyk7Ci0gICAgVFR5cGUgKnNhbXBsZXJDdWJl
U2hhZG93ID0gbmV3IFRUeXBlKEVidFNhbXBsZXJDdWJlU2hhZG93KTsKLSAgICBUVHlwZSAqc2Ft
cGxlcjJEQXJyYXlTaGFkb3cgPSBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3cpOwor
ICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyMkRTaGFkb3cgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2Ft
cGxlcjJEU2hhZG93KTsKKyAgICBjb25zdCBUVHlwZSAqc2FtcGxlckN1YmVTaGFkb3cgPSBUQ2Fj
aGU6OmdldFR5cGUoRWJ0U2FtcGxlckN1YmVTaGFkb3cpOworICAgIGNvbnN0IFRUeXBlICpzYW1w
bGVyMkRBcnJheVNoYWRvdyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkRBcnJheVNoYWRv
dyk7CiAKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9h
dDEsICJ0ZXh0dXJlIiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDMpOwogICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBzYW1wbGVy
Q3ViZVNoYWRvdywgZmxvYXQ0KTsKQEAgLTQ2Niw2ICs0NjQsMTIgQEAKICAgICBpZiAoc3BlYyAh
PSBTSF9DU1NfU0hBREVSU19TUEVDKQogICAgIHsKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
Q29uc3RJbnQoQ09NTU9OX0JVSUxUSU5TLCAiZ2xfTWF4RHJhd0J1ZmZlcnMiLCByZXNvdXJjZXMu
TWF4RHJhd0J1ZmZlcnMpOworICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4
dGVuZGVkKQorICAgICAgICB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRDb25zdElu
dEV4dChDT01NT05fQlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xfTWF4RHVhbFNvdXJjZURy
YXdCdWZmZXJzRVhUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0Q29uc3RJbnQoRVNTTDNfQlVJTFRJTlMsICJnbF9NYXhW
ZXJ0ZXhPdXRwdXRWZWN0b3JzIiwgcmVzb3VyY2VzLk1heFZlcnRleE91dHB1dFZlY3RvcnMpOwpA
QCAtNTA0LDEyICs1MDgsMzMgQEAKICAgICAgICAgICAgIGZyYWdEYXRhLnNldEFycmF5U2l6ZShy
ZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwogICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KEVTU0wxX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGF0
YSIpLCBmcmFnRGF0YSkpOwogCisgICAgICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVuZF9m
dW5jX2V4dGVuZGVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfYmxl
bmRfZnVuY19leHRlbmRlZCIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3
UG9vbFRTdHJpbmcoImdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cVNlY29uZGFy
eUZyYWdDb2xvckVYVCwgNCkpKTsKKyAgICAgICAgICAgICAgICBUVHlwZSBzZWNvbmRhcnlGcmFn
RGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFTZWNvbmRhcnlGcmFnRGF0YUVYVCwgNCwgMSwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgc2Vjb25kYXJ5RnJhZ0RhdGEuc2V0QXJyYXlTaXplKHJl
c291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMpOworICAgICAgICAgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgRVNTTDFfQlVJTFRJTlMsICJHTF9F
WFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImdsX1NlY29uZGFyeUZyYWdEYXRhRVhUIiksIHNlY29uZGFyeUZy
YWdEYXRhKSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhU
X2ZyYWdfZGVwdGgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX2ZyYWdfZGVwdGgiLCBuZXcgVFZhcmlhYmxl
KE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwKLSAgICAgICAgICAgICAgICAgICAg
VFR5cGUoRWJ0RmxvYXQsIHJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPyBFYnBIaWdo
IDogRWJwTWVkaXVtLCBFdnFGcmFnRGVwdGgsIDEpKSk7CisgICAgICAgICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICBFU1NMMV9CVUlMVElOUywgIkdMX0VY
VF9mcmFnX2RlcHRoIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGhFWFQiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQ
cmVjaXNpb25IaWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEV2cUZyYWdEZXB0aEVYVCwgMSkpKTsKICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wzX0JVSUxUSU5TLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0
aCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUo
RWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUZyYWdEZXB0aCwgMSkpKTsKKwogICAgICAgICAgICAgaWYg
KHJlc291cmNlcy5FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIHx8IHJlc291cmNlcy5OVl9z
aGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
VFR5cGUgbGFzdEZyYWdEYXRhKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnRGF0YSwg
NCwgMSwgdHJ1ZSk7CkBAIC01NTMsNiArNTc4LDggQEAKICAgICAgICAgICAgIFRUeXBlKEVidEZs
b2F0LCBFYnBNZWRpdW0sIEV2cVBvaW50U2l6ZSwgMSkpKTsKICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KEVTU0wzX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9J
bnN0YW5jZUlEIiksCiAgICAgICAgICAgICBUVHlwZShFYnRJbnQsIEVicEhpZ2gsIEV2cUluc3Rh
bmNlSUQsIDEpKSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlMVElOUywg
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfVmVydGV4SUQiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidElu
dCwgRWJwSGlnaCwgRXZxVmVydGV4SUQsIDEpKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgICBk
ZWZhdWx0OgpAQCAtNTY5LDYgKzU5Niw4IEBACiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9PRVNf
RUdMX2ltYWdlX2V4dGVybmFsIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5B
UkJfdGV4dHVyZV9yZWN0YW5nbGUpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9BUkJfdGV4dHVy
ZV9yZWN0YW5nbGUiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVu
ZF9mdW5jX2V4dGVuZGVkKQorICAgICAgICBleHRCZWhhdmlvclsiR0xfRVhUX2JsZW5kX2Z1bmNf
ZXh0ZW5kZWQiXSA9IEVCaFVuZGVmaW5lZDsKICAgICBpZiAocmVzb3VyY2VzLkVYVF9kcmF3X2J1
ZmZlcnMpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9FWFRfZHJhd19idWZmZXJzIl0gPSBFQmhV
bmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCkKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplRGxsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCiAvLwogCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWNoZS5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKQEAgLTI0LDYgKzI1LDggQEAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIFRDYWNoZTo6aW5pdGlhbGl6ZSgp
OworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMxLDQgKzM0LDUgQEAKIHsKICAgICBGcmVl
UGFyc2VDb250ZXh0SW5kZXgoKTsKICAgICBGcmVlUG9vbEluZGV4KCk7CisgICAgVENhY2hlOjpk
ZXN0cm95KCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNl
Q29udGV4dC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwLDcgKzEwLDcgQEAKIGJvb2wgSW5pdGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4
KCk7CiB2b2lkIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOwogCi1zdHJ1Y3QgVFBhcnNlQ29udGV4
dDsKK2NsYXNzIFRQYXJzZUNvbnRleHQ7CiBleHRlcm4gdm9pZCBTZXRHbG9iYWxQYXJzZUNvbnRl
eHQoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CiBleHRlcm4gVFBhcnNlQ29udGV4dCogR2V0R2xv
YmFsUGFyc2VDb250ZXh0KCk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXpl
VmFyaWFibGVzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsMTkgKzI2LDIwIEBACiAgICAgdHlwZWRlZiBUVmVjdG9yPEluaXRWYXJpYWJs
ZUluZm8+IEluaXRWYXJpYWJsZUluZm9MaXN0OwogCiAgICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhj
b25zdCBJbml0VmFyaWFibGVJbmZvTGlzdCAmdmFycykKLSAgICAgICAgOiBtQ29kZUluc2VydGVk
KGZhbHNlKSwKLSAgICAgICAgICBtVmFyaWFibGVzKHZhcnMpCisgICAgICAgIDogVEludGVybVRy
YXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAgIG1WYXJpYWJsZXModmFycyks
CisgICAgICAgICAgbUNvZGVJbnNlcnRlZChmYWxzZSkKICAgICB7CiAgICAgfQogCiAgIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkg
Km5vZGUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0VW5hcnkoVmlz
aXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3Ag
Km5vZGUpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZp
c2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgdmlz
aXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCwg
VEludGVybVNlbGVjdGlvbiAqbm9kZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCAqbm9k
ZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSogbm9kZSk7CisgICAgYm9vbCB2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJp
ZGU7CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIGluc2VydEluaXRDb2RlKFRJbnRlcm1TZXF1ZW5j
ZSAqc2VxdWVuY2UpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5jcHAJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0ludGVybU5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMywxMCBAQAogI2lu
Y2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+
CisjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5j
bHVkZSAiY29tbW9uL21hdHJpeF91dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvSGFzaE5hbWVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2Rl
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgpAQCAtNjMs
NzMgKzY2LDEwOSBAQAogICAgIH0KIH0KIAotYm9vbCBDb21wYXJlU3RydWN0dXJlKGNvbnN0IFRU
eXBlJiBsZWZ0Tm9kZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50
VW5pb24gKnJpZ2h0VW5pb25BcnJheSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29u
c3RhbnRVbmlvbiAqbGVmdFVuaW9uQXJyYXkpOworVENvbnN0YW50VW5pb24gKlZlY3Rvcml6ZShj
b25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQsIHNpemVfdCBzaXplKQoreworICAgIFRDb25z
dGFudFVuaW9uICpjb25zdFVuaW9uID0gbmV3IFRDb25zdGFudFVuaW9uW3NpemVdOworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBjb25zdFVuaW9u
W2ldID0gY29uc3RhbnQ7CiAKLWJvb2wgQ29tcGFyZVN0cnVjdChjb25zdCBUVHlwZSAmbGVmdE5v
ZGVUeXBlLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpyaWdodFVu
aW9uQXJyYXksCi0gICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKmxlZnRV
bmlvbkFycmF5KQorICAgIHJldHVybiBjb25zdFVuaW9uOworfQorCit2b2lkIFVuZGVmaW5lZENv
bnN0YW50Rm9sZGluZ0Vycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgVE9wZXJhdG9yIG9wLCBU
QmFzaWNUeXBlIGJhc2ljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEluZm9TaW5rICZpbmZvU2luaywgVENvbnN0YW50VW5pb24gKnJlc3VsdCkKIHsKLSAgICBjb25z
dCBURmllbGRMaXN0ICZmaWVsZHMgPSBsZWZ0Tm9kZVR5cGUuZ2V0U3RydWN0KCktPmZpZWxkcygp
OworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGNvbnN0YW50Rm9sZGluZ0Vycm9yU3RyZWFtOworICAg
IGNvbnN0YW50Rm9sZGluZ0Vycm9yU3RyZWFtIDw8ICInIiA8PCBHZXRPcGVyYXRvclN0cmluZyhv
cCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiJyBvcGVyYXRpb24gcmVzdWx0
IGlzIHVuZGVmaW5lZCBmb3IgdGhlIHZhbHVlcyBwYXNzZWQgaW4iOworICAgIGluZm9TaW5rLmlu
Zm8ubWVzc2FnZShFUHJlZml4V2FybmluZywgbG9jLCBjb25zdGFudEZvbGRpbmdFcnJvclN0cmVh
bS5zdHIoKS5jX3N0cigpKTsKIAotICAgIHNpemVfdCBzdHJ1Y3RTaXplID0gZmllbGRzLnNpemUo
KTsKLSAgICBzaXplX3QgaW5kZXggPSAwOwotCi0gICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBz
dHJ1Y3RTaXplOyBqKyspCisgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgewotICAgICAgICBz
aXplX3Qgc2l6ZSA9IGZpZWxkc1tqXS0+dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoZmllbGRzW2pdLT50eXBlKCktPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUoKmZpZWxk
c1tqXS0+dHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmln
aHRVbmlvbkFycmF5W2luZGV4XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmxlZnRVbmlvbkFycmF5W2luZGV4XSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChs
ZWZ0VW5pb25BcnJheVtpbmRleF0gIT0gcmlnaHRVbmlvbkFycmF5W2luZGV4XSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGluZGV4Kys7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgIGNhc2UgRWJ0RmxvYXQgOgorICAgICAgICByZXN1
bHQtPnNldEZDb25zdCgwLjBmKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVidEludDoK
KyAgICAgICAgcmVzdWx0LT5zZXRJQ29uc3QoMCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBFYnRVSW50OgorICAgICAgICByZXN1bHQtPnNldFVDb25zdCgwdSk7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICByZXN1bHQtPnNldEJDb25zdChmYWxzZSk7
CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENvbXBhcmVTdHJ1Y3R1cmUoY29uc3QgVFR5cGUg
JmxlZnROb2RlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlv
biAqcmlnaHRVbmlvbkFycmF5LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFu
dFVuaW9uICpsZWZ0VW5pb25BcnJheSkKK2Zsb2F0IFZlY3Rvckxlbmd0aChjb25zdCBUQ29uc3Rh
bnRVbmlvbiAqcGFyYW1BcnJheSwgc2l6ZV90IHBhcmFtQXJyYXlTaXplKQogewotICAgIGlmIChs
ZWZ0Tm9kZVR5cGUuaXNBcnJheSgpKQorICAgIGZsb2F0IHJlc3VsdCA9IDAuMGY7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbUFycmF5U2l6ZTsgaSsrKQogICAgIHsKLSAgICAgICAg
VFR5cGUgdHlwZVdpdGhvdXRBcnJheW5lc3MgPSBsZWZ0Tm9kZVR5cGU7Ci0gICAgICAgIHR5cGVX
aXRob3V0QXJyYXluZXNzLmNsZWFyQXJyYXluZXNzKCk7CisgICAgICAgIGZsb2F0IGYgPSBwYXJh
bUFycmF5W2ldLmdldEZDb25zdCgpOworICAgICAgICByZXN1bHQgKz0gZiAqIGY7CisgICAgfQor
ICAgIHJldHVybiBzcXJ0ZihyZXN1bHQpOworfQogCi0gICAgICAgIHNpemVfdCBhcnJheVNpemUg
PSBsZWZ0Tm9kZVR5cGUuZ2V0QXJyYXlTaXplKCk7CitmbG9hdCBWZWN0b3JEb3RQcm9kdWN0KGNv
bnN0IFRDb25zdGFudFVuaW9uICpwYXJhbUFycmF5MSwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVENvbnN0YW50VW5pb24gKnBhcmFtQXJyYXkyLAorICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgcGFyYW1BcnJheVNpemUpCit7CisgICAgZmxvYXQgcmVzdWx0ID0gMC4wZjsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtQXJyYXlTaXplOyBpKyspCisgICAgICAgIHJl
c3VsdCArPSBwYXJhbUFycmF5MVtpXS5nZXRGQ29uc3QoKSAqIHBhcmFtQXJyYXkyW2ldLmdldEZD
b25zdCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcnJheVNpemU7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHR5cGVXaXRob3V0QXJyYXluZXNzLmdldE9iamVjdFNpemUoKSAqIGk7Ci0gICAgICAg
ICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3QodHlwZVdpdGhvdXRBcnJheW5lc3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnJpZ2h0VW5pb25BcnJheVtvZmZzZXRdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZsZWZ0VW5pb25BcnJheVtvZmZzZXRdKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZWxzZQorVEludGVybVR5cGVkICpDcmVhdGVGb2xkZWROb2RlKFRD
b25zdGFudFVuaW9uICpjb25zdEFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRJbnRlcm1UeXBlZCAqb3JpZ2luYWxOb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyKQoreworICAgIGlmIChjb25zdEFycmF5ID09
IG51bGxwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gQ29tcGFyZVN0cnVjdChsZWZ0Tm9kZVR5
cGUsIHJpZ2h0VW5pb25BcnJheSwgbGVmdFVuaW9uQXJyYXkpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgVEludGVybVR5cGVkICpmb2xkZWQg
PSBuZXcgVEludGVybUNvbnN0YW50VW5pb24oY29uc3RBcnJheSwgb3JpZ2luYWxOb2RlLT5nZXRU
eXBlKCkpOworICAgIGZvbGRlZC0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKHF1YWxp
Zmllcik7CisgICAgZm9sZGVkLT5zZXRMaW5lKG9yaWdpbmFsTm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICByZXR1cm4gZm9sZGVkOwogfQogCithbmdsZTo6TWF0cml4PGZsb2F0PiBHZXRNYXRyaXgoY29u
c3QgVENvbnN0YW50VW5pb24gKnBhcmFtQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50ICZyb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCAmY29scykKK3sKKyAgICBzdGQ6OnZlY3RvcjxmbG9h
dD4gZWxlbWVudHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb3dzICogY29sczsgaSsr
KQorICAgICAgICBlbGVtZW50cy5wdXNoX2JhY2socGFyYW1BcnJheVtpXS5nZXRGQ29uc3QoKSk7
CisgICAgLy8gVHJhbnNwb3NlIGlzIHVzZWQgc2luY2UgdGhlIE1hdHJpeCBjb25zdHJ1Y3RvciBl
eHBlY3RzIGFyZ3VtZW50cyBpbiByb3ctbWFqb3Igb3JkZXIsCisgICAgLy8gd2hlcmVhcyB0aGUg
cGFyYW1BcnJheSBpcyBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuCisgICAgcmV0dXJuIGFuZ2xlOjpN
YXRyaXg8ZmxvYXQ+KGVsZW1lbnRzLCByb3dzLCBjb2xzKS50cmFuc3Bvc2UoKTsKK30KKworYW5n
bGU6Ok1hdHJpeDxmbG9hdD4gR2V0TWF0cml4KGNvbnN0IFRDb25zdGFudFVuaW9uICpwYXJhbUFy
cmF5LCBjb25zdCB1bnNpZ25lZCBpbnQgJnNpemUpCit7CisgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IGVsZW1lbnRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSAqIHNpemU7IGkrKykK
KyAgICAgICAgZWxlbWVudHMucHVzaF9iYWNrKHBhcmFtQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwor
ICAgIC8vIFRyYW5zcG9zZSBpcyB1c2VkIHNpbmNlIHRoZSBNYXRyaXggY29uc3RydWN0b3IgZXhw
ZWN0cyBhcmd1bWVudHMgaW4gcm93LW1ham9yIG9yZGVyLAorICAgIC8vIHdoZXJlYXMgdGhlIHBh
cmFtQXJyYXkgaXMgaW4gY29sdW1uLW1ham9yIG9yZGVyLgorICAgIHJldHVybiBhbmdsZTo6TWF0
cml4PGZsb2F0PihlbGVtZW50cywgc2l6ZSkudHJhbnNwb3NlKCk7Cit9CisKK3ZvaWQgU2V0VW5p
b25BcnJheUZyb21NYXRyaXgoY29uc3QgYW5nbGU6Ok1hdHJpeDxmbG9hdD4gJm0sIFRDb25zdGFu
dFVuaW9uICpyZXN1bHRBcnJheSkKK3sKKyAgICAvLyBUcmFuc3Bvc2UgaXMgdXNlZCBzaW5jZSB0
aGUgaW5wdXQgTWF0cml4IGlzIGluIHJvdy1tYWpvciBvcmRlciwKKyAgICAvLyB3aGVyZWFzIHRo
ZSBhY3R1YWwgcmVzdWx0IHNob3VsZCBiZSBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuCisgICAgYW5n
bGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0ID0gbS50cmFuc3Bvc2UoKTsKKyAgICBzdGQ6OnZlY3Rv
cjxmbG9hdD4gcmVzdWx0RWxlbWVudHMgPSByZXN1bHQuZWxlbWVudHMoKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlc3VsdEVsZW1lbnRzLnNpemUoKTsgaSsrKQorICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0RWxlbWVudHNbaV0pOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgYW5vbnltb3VzCiAKIApAQCAtMTU5LDcgKzE5OCw3IEBACiAgICAgUkVQTEFDRV9JRl9J
UyhtSW5pdCwgVEludGVybU5vZGUsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgUkVQTEFD
RV9JRl9JUyhtQ29uZCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwogICAg
IFJFUExBQ0VfSUZfSVMobUV4cHIsIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50
KTsKLSAgICBSRVBMQUNFX0lGX0lTKG1Cb2R5LCBUSW50ZXJtTm9kZSwgb3JpZ2luYWwsIHJlcGxh
Y2VtZW50KTsKKyAgICBSRVBMQUNFX0lGX0lTKG1Cb2R5LCBUSW50ZXJtQWdncmVnYXRlLCBvcmln
aW5hbCwgcmVwbGFjZW1lbnQpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjA5LDggKzI0
OCwzMyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBUSW50ZXJtQWdncmVnYXRlOjpp
bnNlcnRDaGlsZE5vZGVzKFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvc2l0aW9uLCBUSW50
ZXJtU2VxdWVuY2UgaW5zZXJ0aW9ucykKK3sKKyAgICBpZiAocG9zaXRpb24gPiBtU2VxdWVuY2Uu
c2l6ZSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhdXRvIGl0
ID0gbVNlcXVlbmNlLmJlZ2luKCkgKyBwb3NpdGlvbjsKKyAgICBtU2VxdWVuY2UuaW5zZXJ0KGl0
LCBpbnNlcnRpb25zLmJlZ2luKCksIGluc2VydGlvbnMuZW5kKCkpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFRJbnRlcm1BZ2dyZWdhdGU6OmFyZUNoaWxkcmVuQ29uc3RRdWFsaWZpZWQo
KQoreworICAgIGZvciAoVEludGVybU5vZGUgKiZjaGlsZCA6IG1TZXF1ZW5jZSkKKyAgICB7Cisg
ICAgICAgIFRJbnRlcm1UeXBlZCAqdHlwZWQgPSBjaGlsZC0+Z2V0QXNUeXBlZCgpOworICAgICAg
ICBpZiAodHlwZWQgJiYgdHlwZWQtPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIHZvaWQgVEludGVybUFnZ3JlZ2F0ZTo6c2V0UHJlY2lzaW9uRnJvbUNo
aWxkcmVuKCkKIHsKKyAgICBtR290UHJlY2lzaW9uRnJvbUNoaWxkcmVuID0gdHJ1ZTsKICAgICBp
ZiAoZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCkKICAgICB7CiAgICAgICAgIG1UeXBlLnNldFBy
ZWNpc2lvbihFYnBVbmRlZmluZWQpOwpAQCAtMjQ5LDcgKzMxMyw3IEBACiAgICAgfQogICAgIC8v
IEVTU0wgMy4wIHNwZWMgc2VjdGlvbiA4OiB0ZXh0dXJlU2l6ZSBhbHdheXMgZ2V0cyBoaWdocCBw
cmVjaXNpb24uCiAgICAgLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBzYW1wbGVy
IGFyZSBhc3N1bWVkIHRvIGJlIHRleHR1cmUgZnVuY3Rpb25zLgotICAgIGlmIChtTmFtZS5maW5k
KCJ0ZXh0dXJlU2l6ZSIpID09IDApCisgICAgaWYgKG1OYW1lLmdldFN0cmluZygpLmZpbmQoInRl
eHR1cmVTaXplIikgPT0gMCkKICAgICAgICAgbVR5cGUuc2V0UHJlY2lzaW9uKEVicEhpZ2gpOwog
ICAgIGVsc2UKICAgICAgICAgbVR5cGUuc2V0UHJlY2lzaW9uKHByZWNpc2lvbik7CkBAIC0yNzks
NiArMzQzLDcwIEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitUSW50ZXJtVHlwZWQ6OlRJbnRl
cm1UeXBlZChjb25zdCBUSW50ZXJtVHlwZWQgJm5vZGUpIDogVEludGVybU5vZGUoKSwgbVR5cGUo
bm9kZS5tVHlwZSkKK3sKKyAgICAvLyBDb3B5IGNvbnN0cnVjdG9yIGlzIGRpc2FsbG93ZWQgZm9y
IFRJbnRlcm1Ob2RlIGluIG9yZGVyIHRvIGRpc2FsbG93IGl0IGZvciBzdWJjbGFzc2VzIHRoYXQK
KyAgICAvLyBkb24ndCBleHBsaWNpdGx5IGFsbG93IGl0LCBzbyBub3JtYWwgVEludGVybU5vZGUg
Y29uc3RydWN0b3IgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNvcHkuCisgICAgLy8gV2UgbmVl
ZCB0byBtYW51YWxseSBjb3B5IGFueSBmaWVsZHMgb2YgVEludGVybU5vZGUgYmVzaWRlcyBoYW5k
bGluZyBmaWVsZHMgaW4gVEludGVybVR5cGVkLgorICAgIG1MaW5lID0gbm9kZS5tTGluZTsKK30K
KworVEludGVybUNvbnN0YW50VW5pb246OlRJbnRlcm1Db25zdGFudFVuaW9uKGNvbnN0IFRJbnRl
cm1Db25zdGFudFVuaW9uICZub2RlKSA6IFRJbnRlcm1UeXBlZChub2RlKQoreworICAgIG1Vbmlv
bkFycmF5UG9pbnRlciA9IG5vZGUubVVuaW9uQXJyYXlQb2ludGVyOworfQorCitUSW50ZXJtQWdn
cmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgJm5vZGUpCisg
ICAgOiBUSW50ZXJtT3BlcmF0b3Iobm9kZSksCisgICAgICBtTmFtZShub2RlLm1OYW1lKSwKKyAg
ICAgIG1Vc2VyRGVmaW5lZChub2RlLm1Vc2VyRGVmaW5lZCksCisgICAgICBtRnVuY3Rpb25JZChu
b2RlLm1GdW5jdGlvbklkKSwKKyAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uKG5vZGUubVVzZUVt
dWxhdGVkRnVuY3Rpb24pLAorICAgICAgbUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbihub2RlLm1H
b3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4pCit7CisgICAgZm9yIChUSW50ZXJtTm9kZSAqY2hpbGQg
OiBub2RlLm1TZXF1ZW5jZSkKKyAgICB7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqdHlwZWRDaGls
ZCA9IGNoaWxkLT5nZXRBc1R5cGVkKCk7CisgICAgICAgIEFTU0VSVCh0eXBlZENoaWxkICE9IG51
bGxwdHIpOworICAgICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkQ29weSA9IHR5cGVkQ2hpbGQtPmRl
ZXBDb3B5KCk7CisgICAgICAgIG1TZXF1ZW5jZS5wdXNoX2JhY2soY2hpbGRDb3B5KTsKKyAgICB9
Cit9CisKK1RJbnRlcm1CaW5hcnk6OlRJbnRlcm1CaW5hcnkoY29uc3QgVEludGVybUJpbmFyeSAm
bm9kZSkKKyAgICA6IFRJbnRlcm1PcGVyYXRvcihub2RlKSwgbUFkZEluZGV4Q2xhbXAobm9kZS5t
QWRkSW5kZXhDbGFtcCkKK3sKKyAgICBUSW50ZXJtVHlwZWQgKmxlZnRDb3B5ICA9IG5vZGUubUxl
ZnQtPmRlZXBDb3B5KCk7CisgICAgVEludGVybVR5cGVkICpyaWdodENvcHkgPSBub2RlLm1SaWdo
dC0+ZGVlcENvcHkoKTsKKyAgICBBU1NFUlQobGVmdENvcHkgIT0gbnVsbHB0ciAmJiByaWdodENv
cHkgIT0gbnVsbHB0cik7CisgICAgbUxlZnQgID0gbGVmdENvcHk7CisgICAgbVJpZ2h0ID0gcmln
aHRDb3B5OworfQorCitUSW50ZXJtVW5hcnk6OlRJbnRlcm1VbmFyeShjb25zdCBUSW50ZXJtVW5h
cnkgJm5vZGUpCisgICAgOiBUSW50ZXJtT3BlcmF0b3Iobm9kZSksIG1Vc2VFbXVsYXRlZEZ1bmN0
aW9uKG5vZGUubVVzZUVtdWxhdGVkRnVuY3Rpb24pCit7CisgICAgVEludGVybVR5cGVkICpvcGVy
YW5kQ29weSA9IG5vZGUubU9wZXJhbmQtPmRlZXBDb3B5KCk7CisgICAgQVNTRVJUKG9wZXJhbmRD
b3B5ICE9IG51bGxwdHIpOworICAgIG1PcGVyYW5kID0gb3BlcmFuZENvcHk7Cit9CisKK1RJbnRl
cm1TZWxlY3Rpb246OlRJbnRlcm1TZWxlY3Rpb24oY29uc3QgVEludGVybVNlbGVjdGlvbiAmbm9k
ZSkgOiBUSW50ZXJtVHlwZWQobm9kZSkKK3sKKyAgICAvLyBPbmx5IHN1cHBvcnRlZCBmb3IgdGVy
bmFyeSBub2Rlcywgbm90IGlmIHN0YXRlbWVudHMuCisgICAgVEludGVybVR5cGVkICp0cnVlVHlw
ZWQgID0gbm9kZS5tVHJ1ZUJsb2NrLT5nZXRBc1R5cGVkKCk7CisgICAgVEludGVybVR5cGVkICpm
YWxzZVR5cGVkID0gbm9kZS5tRmFsc2VCbG9jay0+Z2V0QXNUeXBlZCgpOworICAgIEFTU0VSVCh0
cnVlVHlwZWQgIT0gbnVsbHB0cik7CisgICAgQVNTRVJUKGZhbHNlVHlwZWQgIT0gbnVsbHB0cik7
CisgICAgVEludGVybVR5cGVkICpjb25kaXRpb25Db3B5ID0gbm9kZS5tQ29uZGl0aW9uLT5kZWVw
Q29weSgpOworICAgIFRJbnRlcm1UeXBlZCAqdHJ1ZUNvcHkgICAgICA9IHRydWVUeXBlZC0+ZGVl
cENvcHkoKTsKKyAgICBUSW50ZXJtVHlwZWQgKmZhbHNlQ29weSA9IGZhbHNlVHlwZWQtPmRlZXBD
b3B5KCk7CisgICAgQVNTRVJUKGNvbmRpdGlvbkNvcHkgIT0gbnVsbHB0ciAmJiB0cnVlQ29weSAh
PSBudWxscHRyICYmIGZhbHNlQ29weSAhPSBudWxscHRyKTsKKyAgICBtQ29uZGl0aW9uICA9IGNv
bmRpdGlvbkNvcHk7CisgICAgbVRydWVCbG9jayAgPSB0cnVlQ29weTsKKyAgICBtRmFsc2VCbG9j
ayA9IGZhbHNlQ29weTsKK30KKwogLy8KIC8vIFNheSB3aGV0aGVyIG9yIG5vdCBhbiBvcGVyYXRp
b24gbm9kZSBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxlLgogLy8KQEAgLTMxMSw2ICs0
MzksMjIgQEAKICAgICB9CiB9CiAKK2Jvb2wgVEludGVybU9wZXJhdG9yOjppc011bHRpcGxpY2F0
aW9uKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1PcCkKKyAgICB7CisgICAgICBjYXNlIEVPcE11
bDoKKyAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CisgICAgICBjYXNlIEVPcE1hdHJp
eFRpbWVzVmVjdG9yOgorICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgIGNh
c2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFy
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKIC8vCiAvLyByZXR1cm5zIHRydWUgaWYgdGhlIG9wZXJhdG9yIGlz
IGZvciBvbmUgb2YgdGhlIGNvbnN0cnVjdG9ycwogLy8KQEAgLTMyMiw3ICs0NjYsMTMgQEAKICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoK
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
MngzOgorICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6CisgICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDN4MjoKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKKyAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0M3g0OgorICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDI6CisgICAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDR4MzoKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0RmxvYXQ6CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMy
OgpAQCAtMzg0LDcgKzUzNCwxMCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgbVR5cGUuc2V0
UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CisgICAgaWYgKG1PcGVyYW5kLT5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFDb25zdCkKKyAgICAgICAgbVR5cGUuc2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKyAg
ICBlbHNlCisgICAgICAgIG1UeXBlLnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOwogfQogCiAv
LwpAQCAtNDA5LDEwICs1NjIsMTIgQEAKICAgICAgICAgbUxlZnQtPmdldFByZWNpc2lvbigpLCBt
UmlnaHQtPmdldFByZWNpc2lvbigpKTsKICAgICBnZXRUeXBlUG9pbnRlcigpLT5zZXRQcmVjaXNp
b24oaGlnaGVyUHJlY2lzaW9uKTsKIAorICAgIFRRdWFsaWZpZXIgcmVzdWx0UXVhbGlmaWVyID0g
RXZxQ29uc3Q7CiAgICAgLy8gQmluYXJ5IG9wZXJhdGlvbnMgcmVzdWx0cyBpbiB0ZW1wb3Jhcnkg
dmFyaWFibGVzIHVubGVzcyBib3RoCiAgICAgLy8gb3BlcmFuZHMgYXJlIGNvbnN0LgogICAgIGlm
IChtTGVmdC0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QgfHwgbVJpZ2h0LT5nZXRRdWFsaWZp
ZXIoKSAhPSBFdnFDb25zdCkKICAgICB7CisgICAgICAgIHJlc3VsdFF1YWxpZmllciA9IEV2cVRl
bXBvcmFyeTsKICAgICAgICAgZ2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cVRlbXBv
cmFyeSk7CiAgICAgfQogCkBAIC00NjcsMTQgKzYyMiwxNSBAQAogICAgICAgICAgICAgaWYgKG1M
ZWZ0LT5pc1ZlY3RvcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1PcCA9IEVP
cFZlY3RvclRpbWVzTWF0cml4OwotICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNU
eXBlLCBoaWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFyeSwKKyAgICAgICAgICAgICAgICBzZXRU
eXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1bHRRdWFsaWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPiht
UmlnaHQtPmdldENvbHMoKSksIDEpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtT3AgPSBFT3BNYXRyaXhUaW1lc1NjYWxh
cjsKLSAgICAgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lz
aW9uLCBFdnFUZW1wb3JhcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihtUmlnaHQtPmdldENvbHMoKSksIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KG1SaWdodC0+Z2V0Um93cygpKSkpOworICAgICAgICAgICAgICAgIHNldFR5cGUo
VFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1SaWdo
dC0+Z2V0Q29scygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KG1SaWdodC0+Z2V0Um93cygpKSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG1MZWZ0LT5pc01hdHJpeCgpICYmICFtUmlnaHQtPmlz
TWF0cml4KCkpCkBAIC00ODIsNyArNjM4LDcgQEAKICAgICAgICAgICAgIGlmIChtUmlnaHQtPmlz
VmVjdG9yKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbU9wID0gRU9wTWF0cml4
VGltZXNWZWN0b3I7Ci0gICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShiYXNpY1R5cGUsIGhp
Z2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LAorICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5
cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG1MZWZ0LT5n
ZXRSb3dzKCkpLCAxKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCkBAIC00OTMs
OCArNjQ5LDkgQEAKICAgICAgICAgZWxzZSBpZiAobUxlZnQtPmlzTWF0cml4KCkgJiYgbVJpZ2h0
LT5pc01hdHJpeCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBtT3AgPSBFT3BNYXRyaXhUaW1l
c01hdHJpeDsKLSAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVj
aXNpb24sIEV2cVRlbXBvcmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcj4obVJpZ2h0LT5nZXRDb2xzKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihtTGVmdC0+Z2V0Um93cygpKSkpOworICAgICAgICAgICAgc2V0VHlwZShUVHlwZShi
YXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgcmVzdWx0UXVhbGlmaWVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtUmlnaHQtPmdldENvbHMo
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KG1MZWZ0LT5nZXRSb3dzKCkpKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIW1MZWZ0
LT5pc01hdHJpeCgpICYmICFtUmlnaHQtPmlzTWF0cml4KCkpCiAgICAgICAgIHsKQEAgLTUwNSw3
ICs2NjIsNyBAQAogICAgICAgICAgICAgZWxzZSBpZiAobUxlZnQtPmlzVmVjdG9yKCkgfHwgbVJp
Z2h0LT5pc1ZlY3RvcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1PcCA9IEVP
cFZlY3RvclRpbWVzU2NhbGFyOwotICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNU
eXBlLCBoaWdoZXJQcmVjaXNpb24sIEV2cVRlbXBvcmFyeSwKKyAgICAgICAgICAgICAgICBzZXRU
eXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCByZXN1bHRRdWFsaWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihu
b21pbmFsU2l6ZSksIDEpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTQ4LDggKzcw
NSw5IEBACiAgICAgICAgIGVsc2UgaWYgKG1MZWZ0LT5pc01hdHJpeCgpICYmIG1SaWdodC0+aXNN
YXRyaXgoKSkKICAgICAgICAgewogICAgICAgICAgICAgbU9wID0gRU9wTWF0cml4VGltZXNNYXRy
aXhBc3NpZ247Ci0gICAgICAgICAgICBzZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJl
Y2lzaW9uLCBFdnFUZW1wb3JhcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KG1SaWdodC0+Z2V0Q29scygpKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4obUxlZnQtPmdldFJvd3MoKSkpKTsKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUo
YmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmllciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4obVJpZ2h0LT5nZXRDb2xz
KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihtTGVmdC0+Z2V0Um93cygpKSkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCFtTGVm
dC0+aXNNYXRyaXgoKSAmJiAhbVJpZ2h0LT5pc01hdHJpeCgpKQogICAgICAgICB7CkBAIC01NjIs
NyArNzIwLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIW1MZWZ0LT5pc1ZlY3RvcigpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgbU9wID0gRU9w
VmVjdG9yVGltZXNTY2FsYXJBc3NpZ247Ci0gICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShi
YXNpY1R5cGUsIGhpZ2hlclByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LAorICAgICAgICAgICAgICAg
IHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3VsdFF1YWxpZmll
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KG1MZWZ0LT5nZXROb21pbmFsU2l6ZSgpKSwgMSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC02MzIsOCArNzkwLDkgQEAKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50
IHNlY29uZGFyeVNpemUgPSBzdGQ6Om1heCgKICAgICAgICAgICAgICAgICBtTGVmdC0+Z2V0U2Vj
b25kYXJ5U2l6ZSgpLCBtUmlnaHQtPmdldFNlY29uZGFyeVNpemUoKSk7Ci0gICAgICAgICAgICBz
ZXRUeXBlKFRUeXBlKGJhc2ljVHlwZSwgaGlnaGVyUHJlY2lzaW9uLCBFdnFUZW1wb3JhcnksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG5vbWlu
YWxTaXplKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2Vjb25kYXJ5U2l6ZSkpKTsKKyAg
ICAgICAgICAgIHNldFR5cGUoVFR5cGUoYmFzaWNUeXBlLCBoaWdoZXJQcmVjaXNpb24sIHJlc3Vs
dFF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4obm9taW5hbFNpemUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihzZWNvbmRhcnlTaXplKSkpOwogICAgICAgICAgICAgaWYgKG1M
ZWZ0LT5pc0FycmF5KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1M
ZWZ0LT5nZXRBcnJheVNpemUoKSA9PSBtUmlnaHQtPmdldEFycmF5U2l6ZSgpKTsKQEAgLTY1OSw4
MTkgKzgxOCwxNzc4IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1RJbnRlcm1UeXBlZCAqVElu
dGVybUJpbmFyeTo6Zm9sZChUSW5mb1NpbmsgJmluZm9TaW5rKQoreworICAgIFRJbnRlcm1Db25z
dGFudFVuaW9uICpsZWZ0Q29uc3RhbnQgPSBtTGVmdC0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Cisg
ICAgVEludGVybUNvbnN0YW50VW5pb24gKnJpZ2h0Q29uc3RhbnQgPSBtUmlnaHQtPmdldEFzQ29u
c3RhbnRVbmlvbigpOworICAgIGlmIChsZWZ0Q29uc3RhbnQgPT0gbnVsbHB0ciB8fCByaWdodENv
bnN0YW50ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgICAgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBsZWZ0Q29uc3RhbnQtPmZvbGRCaW5h
cnkobU9wLCByaWdodENvbnN0YW50LCBpbmZvU2luayk7CisKKyAgICAvLyBOb2RlcyBtYXkgYmUg
Y29uc3RhbnQgZm9sZGVkIHdpdGhvdXQgYmVpbmcgcXVhbGlmaWVkIGFzIGNvbnN0YW50LgorICAg
IFRRdWFsaWZpZXIgcmVzdWx0UXVhbGlmaWVyID0gRXZxQ29uc3Q7CisgICAgaWYgKG1MZWZ0LT5n
ZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCB8fCBtUmlnaHQtPmdldFF1YWxpZmllcigpICE9IEV2
cUNvbnN0KQorICAgIHsKKyAgICAgICAgcmVzdWx0UXVhbGlmaWVyID0gRXZxVGVtcG9yYXJ5Owor
ICAgIH0KKyAgICByZXR1cm4gQ3JlYXRlRm9sZGVkTm9kZShjb25zdEFycmF5LCB0aGlzLCByZXN1
bHRRdWFsaWZpZXIpOworfQorCitUSW50ZXJtVHlwZWQgKlRJbnRlcm1VbmFyeTo6Zm9sZChUSW5m
b1NpbmsgJmluZm9TaW5rKQoreworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpvcGVyYW5kQ29u
c3RhbnQgPSBtT3BlcmFuZC0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgaWYgKG9wZXJhbmRD
b25zdGFudCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBudWxscHRyOworICAgIHN3aXRj
aCAobU9wKQorICAgIHsKKyAgICAgIGNhc2UgRU9wQW55OgorICAgICAgY2FzZSBFT3BBbGw6Cisg
ICAgICBjYXNlIEVPcExlbmd0aDoKKyAgICAgIGNhc2UgRU9wVHJhbnNwb3NlOgorICAgICAgY2Fz
ZSBFT3BEZXRlcm1pbmFudDoKKyAgICAgIGNhc2UgRU9wSW52ZXJzZToKKyAgICAgIGNhc2UgRU9w
UGFja1Nub3JtMngxNjoKKyAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2OgorICAgICAgY2Fz
ZSBFT3BQYWNrVW5vcm0yeDE2OgorICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6CisgICAg
ICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKKyAgICAgIGNhc2UgRU9wVW5wYWNrSGFsZjJ4MTY6Cisg
ICAgICAgIGNvbnN0QXJyYXkgPSBvcGVyYW5kQ29uc3RhbnQtPmZvbGRVbmFyeVdpdGhEaWZmZXJl
bnRSZXR1cm5UeXBlKG1PcCwgaW5mb1NpbmspOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1
bHQ6CisgICAgICAgIGNvbnN0QXJyYXkgPSBvcGVyYW5kQ29uc3RhbnQtPmZvbGRVbmFyeVdpdGhT
YW1lUmV0dXJuVHlwZShtT3AsIGluZm9TaW5rKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgLy8gTm9kZXMgbWF5IGJlIGNvbnN0YW50IGZvbGRlZCB3aXRob3V0IGJlaW5nIHF1YWxpZmll
ZCBhcyBjb25zdGFudC4KKyAgICBUUXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IG1PcGVyYW5k
LT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5Owor
ICAgIHJldHVybiBDcmVhdGVGb2xkZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIHJlc3VsdFF1YWxp
Zmllcik7Cit9CisKK1RJbnRlcm1UeXBlZCAqVEludGVybUFnZ3JlZ2F0ZTo6Zm9sZChUSW5mb1Np
bmsgJmluZm9TaW5rKQoreworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFsbCBwYXJhbXMgYXJlIGNv
bnN0YW50IGJlZm9yZSBhY3R1YWwgY29uc3RhbnQgZm9sZGluZy4KKyAgICBmb3IgKGF1dG8gKnBh
cmFtIDogKmdldFNlcXVlbmNlKCkpCisgICAgeworICAgICAgICBpZiAocGFyYW0tPmdldEFzQ29u
c3RhbnRVbmlvbigpID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5
ID0gbnVsbHB0cjsKKyAgICBpZiAoaXNDb25zdHJ1Y3RvcigpKQorICAgICAgICBjb25zdEFycmF5
ID0gVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVDb25zdHJ1Y3Rvcih0aGlzLCBp
bmZvU2luayk7CisgICAgZWxzZQorICAgICAgICBjb25zdEFycmF5ID0gVEludGVybUNvbnN0YW50
VW5pb246OkZvbGRBZ2dyZWdhdGVCdWlsdEluKHRoaXMsIGluZm9TaW5rKTsKKworICAgIC8vIE5v
ZGVzIG1heSBiZSBjb25zdGFudCBmb2xkZWQgd2l0aG91dCBiZWluZyBxdWFsaWZpZWQgYXMgY29u
c3RhbnQuCisgICAgVFF1YWxpZmllciByZXN1bHRRdWFsaWZpZXIgPSBhcmVDaGlsZHJlbkNvbnN0
UXVhbGlmaWVkKCkgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKKyAgICByZXR1cm4gQ3JlYXRl
Rm9sZGVkTm9kZShjb25zdEFycmF5LCB0aGlzLCByZXN1bHRRdWFsaWZpZXIpOworfQorCiAvLwog
Ly8gVGhlIGZvbGQgZnVuY3Rpb25zIHNlZSBpZiBhbiBvcGVyYXRpb24gb24gYSBjb25zdGFudCBj
YW4gYmUgZG9uZSBpbiBwbGFjZSwKIC8vIHdpdGhvdXQgZ2VuZXJhdGluZyBydW4tdGltZSBjb2Rl
LgogLy8KLS8vIFJldHVybnMgdGhlIG5vZGUgdG8ga2VlcCB1c2luZywgd2hpY2ggbWF5IG9yIG1h
eSBub3QgYmUgdGhlIG5vZGUgcGFzc2VkIGluLgorLy8gUmV0dXJucyB0aGUgY29uc3RhbnQgdmFs
dWUgdG8ga2VlcCB1c2luZyBvciBudWxscHRyLgogLy8KLVRJbnRlcm1UeXBlZCAqVEludGVybUNv
bnN0YW50VW5pb246OmZvbGQoCi0gICAgVE9wZXJhdG9yIG9wLCBUSW50ZXJtQ29uc3RhbnRVbmlv
biAqcmlnaHROb2RlLCBUSW5mb1NpbmsgJmluZm9TaW5rKQorVENvbnN0YW50VW5pb24gKlRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwgVEludGVybUNvbnN0YW50
VW5pb24gKnJpZ2h0Tm9kZSwgVEluZm9TaW5rICZpbmZvU2luaykKIHsKLSAgICBUQ29uc3RhbnRV
bmlvbiAqdW5pb25BcnJheSA9IGdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisgICAgY29uc3QgVENv
bnN0YW50VW5pb24gKmxlZnRBcnJheSAgPSBnZXRVbmlvbkFycmF5UG9pbnRlcigpOworICAgIGNv
bnN0IFRDb25zdGFudFVuaW9uICpyaWdodEFycmF5ID0gcmlnaHROb2RlLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpOwogCi0gICAgaWYgKCF1bmlvbkFycmF5KQorICAgIGlmICghbGVmdEFycmF5KQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIXJpZ2h0QXJyYXkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2Jq
ZWN0U2l6ZSgpOwogCi0gICAgaWYgKHJpZ2h0Tm9kZSkKKyAgICAvLyBmb3IgYSBjYXNlIGxpa2Ug
ZmxvYXQgZiA9IHZlYzQoMiwgMywgNCwgNSkgKyAxLjI7CisgICAgaWYgKHJpZ2h0Tm9kZS0+Z2V0
VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9iamVjdFNpemUgPiAxKQogICAgIHsKLSAg
ICAgICAgLy8gYmluYXJ5IG9wZXJhdGlvbnMKLSAgICAgICAgVENvbnN0YW50VW5pb24gKnJpZ2h0
VW5pb25BcnJheSA9IHJpZ2h0Tm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAg
VFR5cGUgcmV0dXJuVHlwZSA9IGdldFR5cGUoKTsKKyAgICAgICAgcmlnaHRBcnJheSA9IFZlY3Rv
cml6ZSgqcmlnaHROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpLCBvYmplY3RTaXplKTsKKyAg
ICB9CisgICAgZWxzZSBpZiAocmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpID4g
MSAmJiBvYmplY3RTaXplID09IDEpCisgICAgeworICAgICAgICAvLyBmb3IgYSBjYXNlIGxpa2Ug
ZmxvYXQgZiA9IDEuMiArIHZlYzQoMiwgMywgNCwgNSk7CisgICAgICAgIGxlZnRBcnJheSA9IFZl
Y3Rvcml6ZSgqZ2V0VW5pb25BcnJheVBvaW50ZXIoKSwgcmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0
T2JqZWN0U2l6ZSgpKTsKKyAgICAgICAgb2JqZWN0U2l6ZSA9IHJpZ2h0Tm9kZS0+Z2V0VHlwZSgp
LmdldE9iamVjdFNpemUoKTsKKyAgICB9CiAKLSAgICAgICAgaWYgKCFyaWdodFVuaW9uQXJyYXkp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0
QXJyYXkgPSBudWxscHRyOwogCi0gICAgICAgIC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBmID0g
dmVjNCgyLCAzLCA0LCA1KSArIDEuMjsKLSAgICAgICAgaWYgKHJpZ2h0Tm9kZS0+Z2V0VHlwZSgp
LmdldE9iamVjdFNpemUoKSA9PSAxICYmIG9iamVjdFNpemUgPiAxKQorICAgIHN3aXRjaChvcCkK
KyAgICB7CisgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBsZWZ0QXJyYXlb
aV0gKyByaWdodEFycmF5W2ldOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wU3ViOgor
ICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtpXSAtIHJpZ2h0QXJyYXlbaV07CisgICAgICAg
IGJyZWFrOworCisgICAgICBjYXNlIEVPcE11bDoKKyAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNT
Y2FsYXI6CisgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyOgorICAgICAgICByZXN1bHRB
cnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICByZXN1bHRBcnJheVtp
XSA9IGxlZnRBcnJheVtpXSAqIHJpZ2h0QXJyYXlbaV07CisgICAgICAgIGJyZWFrOworCisgICAg
ICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgogICAgICAgICB7Ci0gICAgICAgICAgICByaWdo
dFVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7ICsraSkKKyAgICAgICAgICAgIGlm
IChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQgfHwKKyAgICAgICAgICAgICAg
ICByaWdodE5vZGUtPmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJpZ2h0VW5pb25BcnJheVtpXSA9ICpyaWdodE5vZGUtPmdldFVuaW9u
QXJyYXlQb2ludGVyKCk7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAor
ICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAorICAg
ICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgRm9sZGluZyBjYW5ub3QgYmUgZG9uZSBmb3IgbWF0
cml4IG11bHRpcGx5Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm5UeXBlID0gZ2V0VHlwZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKHJpZ2h0Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA+IDEg
JiYgb2JqZWN0U2l6ZSA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmb3IgYSBjYXNl
IGxpa2UgZmxvYXQgZiA9IDEuMiArIHZlYzQoMiwgMywgNCwgNSk7Ci0gICAgICAgICAgICB1bmlv
bkFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW3JpZ2h0Tm9kZS0+Z2V0VHlwZSgpLmdldE9iamVj
dFNpemUoKV07Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJpZ2h0Tm9kZS0+
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXlbaV0gPSAqZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVyblR5cGUgPSByaWdodE5vZGUtPmdldFR5cGUoKTsKLSAg
ICAgICAgICAgIG9iamVjdFNpemUgPSByaWdodE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXpl
KCk7Ci0gICAgICAgIH0KIAotICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdGVtcENvbnN0QXJyYXkg
PSBudWxscHRyOwotICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqdGVtcE5vZGU7CisgICAg
ICAgICAgICBjb25zdCBpbnQgbGVmdENvbHMgPSBnZXRDb2xzKCk7CisgICAgICAgICAgICBjb25z
dCBpbnQgbGVmdFJvd3MgPSBnZXRSb3dzKCk7CisgICAgICAgICAgICBjb25zdCBpbnQgcmlnaHRD
b2xzID0gcmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0Q29scygpOworICAgICAgICAgICAgY29uc3Qg
aW50IHJpZ2h0Um93cyA9IHJpZ2h0Tm9kZS0+Z2V0VHlwZSgpLmdldFJvd3MoKTsKKyAgICAgICAg
ICAgIGNvbnN0IGludCByZXN1bHRDb2xzID0gcmlnaHRDb2xzOworICAgICAgICAgICAgY29uc3Qg
aW50IHJlc3VsdFJvd3MgPSBsZWZ0Um93czsKIAotICAgICAgICBib29sIGJvb2xOb2RlRmxhZyA9
IGZhbHNlOwotICAgICAgICBzd2l0Y2gob3ApCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVP
cEFkZDoKLSAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29i
amVjdFNpemVdOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXpl
OyBpKyspCi0gICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ld
ICsgcmlnaHRVbmlvbkFycmF5W2ldOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBFT3BTdWI6Ci0gICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
bltvYmplY3RTaXplXTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5pb25BcnJh
eVtpXSAtIHJpZ2h0VW5pb25BcnJheVtpXTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgY2FzZSBFT3BNdWw6Ci0gICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKLSAg
ICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyOgotICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKLSAgICAgICAgICAgICAgICB0ZW1w
Q29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gKiByaWdodFVuaW9uQXJyYXlbaV07Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6Cisg
ICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltyZXN1bHRDb2xzICog
cmVzdWx0Um93c107CisgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCByZXN1bHRS
b3dzOyByb3crKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0IHx8Ci0gICAgICAgICAgICAgICAgICAgIHJpZ2h0
Tm9kZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpCisgICAgICAgICAgICAgICAgZm9yIChp
bnQgY29sdW1uID0gMDsgY29sdW1uIDwgcmVzdWx0Q29sczsgY29sdW1uKyspCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IEZvbGRpbmcgY2Fubm90IGJlIGRvbmUgZm9y
IG1hdHJpeCBtdWx0aXBseSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVmdENvbHMg
PSBnZXRDb2xzKCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgaW50IGxlZnRSb3dzID0gZ2V0Um93
cygpOwotICAgICAgICAgICAgICAgIGNvbnN0IGludCByaWdodENvbHMgPSByaWdodE5vZGUtPmdl
dFR5cGUoKS5nZXRDb2xzKCk7Ci0gICAgICAgICAgICAgICAgY29uc3QgaW50IHJpZ2h0Um93cyA9
IHJpZ2h0Tm9kZS0+Z2V0VHlwZSgpLmdldFJvd3MoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBp
bnQgcmVzdWx0Q29scyA9IHJpZ2h0Q29sczsKLSAgICAgICAgICAgICAgICBjb25zdCBpbnQgcmVz
dWx0Um93cyA9IGxlZnRSb3dzOwotCi0gICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bcmVzdWx0Q29scyAqIHJlc3VsdFJvd3NdOwotICAgICAgICAgICAg
ICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJlc3VsdFJvd3M7IHJvdysrKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1u
IDwgcmVzdWx0Q29sczsgY29sdW1uKyspCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W3Jlc3VsdFJvd3MgKiBjb2x1bW4gKyByb3ddLnNldEZDb25zdCgwLjBmKTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZWZ0Q29sczsgaSsrKQogICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtyZXN1bHRS
b3dzICogY29sdW1uICsgcm93XS5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlZnRDb2xzOyBpKyspCi0gICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbcmVz
dWx0Um93cyAqIGNvbHVtbiArIHJvd10uc2V0RkNvbnN0KAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtyZXN1bHRSb3dzICogY29sdW1uICsgcm93XS5nZXRG
Q29uc3QoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlbaSAq
IGxlZnRSb3dzICsgcm93XS5nZXRGQ29uc3QoKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJpZ2h0VW5pb25BcnJheVtjb2x1bW4gKiByaWdodFJvd3MgKyBpXS5nZXRGQ29uc3Qo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtyZXN1bHRSb3dzICogY29sdW1uICsgcm93XS5zZXRGQ29uc3QoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbcmVzdWx0Um93cyAqIGNvbHVtbiArIHJv
d10uZ2V0RkNvbnN0KCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRBcnJheVtp
ICogbGVmdFJvd3MgKyByb3ddLmdldEZDb25zdCgpICoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByaWdodEFycmF5W2NvbHVtbiAqIHJpZ2h0Um93cyArIGldLmdldEZDb25zdCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IC8vIHVwZGF0ZSByZXR1cm4gdHlwZSBmb3IgbWF0cml4IHByb2R1Y3QKLSAgICAgICAgICAgICAg
ICByZXR1cm5UeXBlLnNldFByaW1hcnlTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHJl
c3VsdENvbHMpKTsKLSAgICAgICAgICAgICAgICByZXR1cm5UeXBlLnNldFNlY29uZGFyeVNpemUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVzdWx0Um93cykpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICBjYXNlIEVPcERpdjoKLSAgICAgICAgICBjYXNlIEVPcElNb2Q6CisgICAgICBjYXNlIEVPcERp
djoKKyAgICAgIGNhc2UgRU9wSU1vZDoKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsK
LSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpKQorICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHJpZ2h0QXJyYXlbaV0gPT0gMC4wZikKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDAuMGYpCi0gICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUHJlZml4V2FybmluZywgZ2V0
TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGl2aWRlIGJ5IHplcm8g
ZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPCAwID8gLUZMVF9NQVggOiBGTFRf
TUFYKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQob3AgPT0gRU9wRGl2KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgLwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByaWdodFVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdldExpbmUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGl2aWRl
IGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChsZWZ0QXJyYXlbaV0uZ2V0RkNvbnN0
KCkgPCAwID8gLUZMVF9NQVggOiBGTFRfTUFYKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBFT3BEaXYpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGxlZnRBcnJheVtpXS5nZXRGQ29uc3QoKSAvIHJp
Z2h0QXJyYXlbaV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRVbmlvbkFycmF5W2ldID09IDApCisg
ICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJp
Z2h0QXJyYXlbaV0gPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCBnZXRMaW5lKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpdmlkZSBi
eSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoSU5UX01BWCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gRU9wRGl2KQogICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVByZWZpeFdhcm5pbmcs
IGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpdmlkZSBieSB6
ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KElOVF9NQVgpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChsZWZ0QXJyYXlbaV0u
Z2V0SUNvbnN0KCkgLyByaWdodEFycmF5W2ldLmdldElDb25zdCgpKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gRU9wRGl2
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0SUNvbnN0KAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSAvCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodFVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gRU9wSU1vZCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldElDb25zdCgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkgJQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5W2ldLmdldElD
b25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKG9wID09IEVPcElNb2QpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChsZWZ0QXJyYXlbaV0uZ2V0SUNvbnN0KCkg
JSByaWdodEFycmF5W2ldLmdldElDb25zdCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRVSW50OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0VW5pb25BcnJheVtpXSA9
PSAwKQorICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAg
ICBpZiAocmlnaHRBcnJheVtpXSA9PSAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIGdl
dExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdChVSU5UX01BWCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gRU9wRGl2KQogICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVByZWZp
eFdhcm5pbmcsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRp
dmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0VUNvbnN0KFVJTlRfTUFYKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QobGVm
dEFycmF5W2ldLmdldFVDb25zdCgpIC8gcmlnaHRBcnJheVtpXS5nZXRVQ29uc3QoKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9w
ID09IEVPcERpdikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldFVDb25zdCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlbaV0uZ2V0VUNvbnN0KCkgLwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRVbmlvbkFycmF5W2ldLmdl
dFVDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IEVPcElNb2QpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRVQ29uc3QoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5W2ldLmdldFVDb25z
dCgpICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0VW5pb25BcnJh
eVtpXS5nZXRVQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBFT3BJTW9kKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QobGVmdEFycmF5W2ldLmdl
dFVDb25zdCgpICUgcmlnaHRBcnJheVtpXS5nZXRVQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3Nh
Z2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdl
dExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgZm9sZGluZyBj
YW5ub3QgYmUgZG9uZSBmb3IgXCIvXCIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeElu
dGVybmFsRXJyb3IsIGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDb25zdGFudCBmb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciBcIi9cIiIpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVh
azsKIAotICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNWZWN0b3I6CisgICAgICBjYXNlIEVP
cE1hdHJpeFRpbWVzVmVjdG9yOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAocmlnaHROb2Rl
LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAocmlnaHROb2RlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRGbG9hdCkKKyAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IEZv
bGRpbmcgY2Fubm90IGJlIGRvbmUgZm9yIG1hdHJpeCB0aW1lcyB2ZWN0b3IiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29u
c3QgaW50IG1hdHJpeENvbHMgPSBnZXRDb2xzKCk7CisgICAgICAgICAgICBjb25zdCBpbnQgbWF0
cml4Um93cyA9IGdldFJvd3MoKTsKKworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bbWF0cml4Um93c107CisKKyAgICAgICAgICAgIGZvciAoaW50IG1hdHJpeFJv
dyA9IDA7IG1hdHJpeFJvdyA8IG1hdHJpeFJvd3M7IG1hdHJpeFJvdysrKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W21hdHJpeFJvd10uc2V0RkNvbnN0KDAuMGYp
OworICAgICAgICAgICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IG1hdHJpeENvbHM7IGNv
bCsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
by5tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3Is
IGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb25zdGFudCBGb2xkaW5nIGNh
bm5vdCBiZSBkb25lIGZvciBtYXRyaXggdGltZXMgdmVjdG9yIik7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRy
aXhSb3ddLnNldEZDb25zdChyZXN1bHRBcnJheVttYXRyaXhSb3ddLmdldEZDb25zdCgpICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEFy
cmF5W2NvbCAqIG1hdHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdldEZDb25zdCgpICoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRBcnJheVtj
b2xdLmdldEZDb25zdCgpKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBjb25zdCBpbnQgbWF0cml4
Q29scyA9IGdldENvbHMoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBpbnQgbWF0cml4Um93cyA9
IGdldFJvd3MoKTsKKyAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0RmxvYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVm
aXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGlt
ZXMgbWF0cml4Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
blttYXRyaXhSb3dzXTsKKyAgICAgICAgICAgIGNvbnN0IGludCBtYXRyaXhDb2xzID0gcmlnaHRO
b2RlLT5nZXRUeXBlKCkuZ2V0Q29scygpOworICAgICAgICAgICAgY29uc3QgaW50IG1hdHJpeFJv
d3MgPSByaWdodE5vZGUtPmdldFR5cGUoKS5nZXRSb3dzKCk7CiAKKyAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21hdHJpeENvbHNdOworCisgICAgICAgICAgICBm
b3IgKGludCBtYXRyaXhDb2wgPSAwOyBtYXRyaXhDb2wgPCBtYXRyaXhDb2xzOyBtYXRyaXhDb2wr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRyaXhDb2xd
LnNldEZDb25zdCgwLjBmKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBtYXRyaXhSb3cgPSAw
OyBtYXRyaXhSb3cgPCBtYXRyaXhSb3dzOyBtYXRyaXhSb3crKykKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W21hdHJpeFJvd10uc2V0RkNvbnN0
KDAuMGYpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBtYXRy
aXhDb2xzOyBjb2wrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXlbbWF0cml4Um93XS5zZXRGQ29uc3QoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbbWF0cml4Um93XS5nZXRGQ29uc3QoKSArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheVtjb2wgKiBtYXRyaXhSb3dzICsg
bWF0cml4Um93XS5nZXRGQ29uc3QoKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmln
aHRVbmlvbkFycmF5W2NvbF0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W21hdHJpeENvbF0uc2V0RkNvbnN0KHJlc3Vs
dEFycmF5W21hdHJpeENvbF0uZ2V0RkNvbnN0KCkgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QXJyYXlbbWF0cml4Um93XS5nZXRGQ29u
c3QoKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJpZ2h0QXJyYXlbbWF0cml4Q29sICogbWF0cml4Um93cyArIG1hdHJpeFJvd10uZ2V0RkNv
bnN0KCkpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIHJldHVyblR5cGUgPSByaWdodE5vZGUtPmdl
dFR5cGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm5UeXBlLnNldFByaW1hcnlTaXplKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KG1hdHJpeFJvd3MpKTsKKyAgICAgIGNhc2UgRU9wTG9naWNh
bEFuZDoKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9i
amVjdFNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXSA9IGxlZnRBcnJheVtpXSAmJiByaWdodEFycmF5W2ldOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgdGVtcE5vZGUgPSBuZXcg
VEludGVybUNvbnN0YW50VW5pb24odGVtcENvbnN0QXJyYXksIHJldHVyblR5cGUpOwotICAgICAg
ICAgICAgICAgIHRlbXBOb2RlLT5zZXRMaW5lKGdldExpbmUoKSk7Ci0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gdGVtcE5vZGU7CisgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgewor
ICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtp
XSB8fCByaWdodEFycmF5W2ldOwogICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKKyAgICAgIGNhc2Ug
RU9wTG9naWNhbFhvcjoKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcg
VENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidEZsb2F0KQorICAgICAgICAgICAgICAg
IHN3aXRjaCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKQogICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAg
ICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJDb25zdGFudCBGb2xkaW5nIGNhbm5vdCBiZSBkb25lIGZvciB2ZWN0b3IgdGlt
ZXMgbWF0cml4Iik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRCQ29uc3QobGVmdEFycmF5W2ldICE9IHJpZ2h0QXJyYXlbaV0pOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsK
IAotICAgICAgICAgICAgICAgIGNvbnN0IGludCBtYXRyaXhDb2xzID0gcmlnaHROb2RlLT5nZXRU
eXBlKCkuZ2V0Q29scygpOwotICAgICAgICAgICAgICAgIGNvbnN0IGludCBtYXRyaXhSb3dzID0g
cmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0Um93cygpOworICAgICAgY2FzZSBFT3BCaXR3aXNlQW5k
OgorICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAg
ICAgICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtpXSAmIHJpZ2h0QXJyYXlbaV07CisgICAg
ICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yOgorICAgICAgICByZXN1bHRBcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9
IGxlZnRBcnJheVtpXSBeIHJpZ2h0QXJyYXlbaV07CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBFT3BCaXR3aXNlT3I6CisgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
W29iamVjdFNpemVdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7
IGkrKykKKyAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5W2ldIHwgcmlnaHRB
cnJheVtpXTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKKyAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0gPSBsZWZ0QXJyYXlbaV0gPDwgcmlnaHRBcnJheVtpXTsKKyAgICAgICAg
YnJlYWs7CisgICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6CisgICAgICAgIHJlc3VsdEFycmF5
ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0g
bGVmdEFycmF5W2ldID4+IHJpZ2h0QXJyYXlbaV07CisgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF0cml4Q29sc107
CisgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICBBU1NFUlQob2JqZWN0U2l6ZSA9PSAx
KTsKKyAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07CisgICAgICAg
IHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoKmxlZnRBcnJheSA8ICpyaWdodEFycmF5KTsKKyAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBmb3IgKGludCBtYXRyaXhDb2wgPSAwOyBtYXRy
aXhDb2wgPCBtYXRyaXhDb2xzOyBtYXRyaXhDb2wrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W21hdHJpeENvbF0uc2V0RkNvbnN0KDAuMGYp
OwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBtYXRyaXhSb3cgPSAwOyBtYXRyaXhSb3cg
PCBtYXRyaXhSb3dzOyBtYXRyaXhSb3crKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbbWF0cml4Q29sXS5zZXRGQ29uc3QoCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbbWF0cml4Q29sXS5nZXRG
Q29uc3QoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheVttYXRyaXhS
b3ddLmdldEZDb25zdCgpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodFVuaW9u
QXJyYXlbbWF0cml4Q29sICogbWF0cml4Um93cyArIG1hdHJpeFJvd10uZ2V0RkNvbnN0KCkpOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgY2FzZSBFT3BH
cmVhdGVyVGhhbjoKKyAgICAgICAgQVNTRVJUKG9iamVjdFNpemUgPT0gMSk7CisgICAgICAgIHJl
c3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzFdOworICAgICAgICByZXN1bHRBcnJheS0+
c2V0QkNvbnN0KCpsZWZ0QXJyYXkgPiAqcmlnaHRBcnJheSk7CisgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICAgICAgcmV0dXJuVHlwZS5zZXRQcmltYXJ5U2l6ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihtYXRyaXhDb2xzKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgQVNTRVJUKG9iamVjdFNp
emUgPT0gMSk7CisgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzFdOwor
ICAgICAgICByZXN1bHRBcnJheS0+c2V0QkNvbnN0KCEoKmxlZnRBcnJheSA+ICpyaWdodEFycmF5
KSk7CisgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgotICAg
ICAgICAgICAgLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2Us
Ci0gICAgICAgICAgICAvLyB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CisgICAgICBj
YXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgIEFTU0VSVChvYmplY3RTaXplID09IDEp
OworICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAg
cmVzdWx0QXJyYXktPnNldEJDb25zdCghKCpsZWZ0QXJyYXkgPCAqcmlnaHRBcnJheSkpOworICAg
ICAgICBicmVhazsKKworICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgIGNhc2UgRU9wTm90RXF1
YWw6CisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVu
aW9uWzFdOworICAgICAgICAgICAgYm9vbCBlcXVhbCA9IHRydWU7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykKKyAgICAgICAgICAgICAgICBpZiAobGVmdEFycmF5W2ldICE9IHJpZ2h0QXJyYXlbaV0pCiAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9
IHVuaW9uQXJyYXlbaV0gJiYgcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICAgICAgICAgICAg
ICBlcXVhbCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsgIC8vIGJyZWFrIG91
dCBvZiBmb3IgbG9vcAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG9wID09IEVPcEVxdWFsKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoZXF1YWwpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoIWVxdWFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgotICAgICAg
ICAgICAgLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBvc3NpYmxlIGZ1dHVyZSB1c2UsCi0g
ICAgICAgICAgICAvLyB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5CisgICAgICBkZWZh
dWx0OgorICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCisgICAgICAgICAgICBFUHJlZml4
SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAorICAgICAgICAgICAgIkludmFsaWQgb3BlcmF0b3Ig
Zm9yIGNvbnN0YW50IGZvbGRpbmciKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHRBcnJheTsKK30KKworLy8KKy8vIFRoZSBmb2xkIGZ1bmN0aW9ucyBz
ZWUgaWYgYW4gb3BlcmF0aW9uIG9uIGEgY29uc3RhbnQgY2FuIGJlIGRvbmUgaW4gcGxhY2UsCisv
LyB3aXRob3V0IGdlbmVyYXRpbmcgcnVuLXRpbWUgY29kZS4KKy8vCisvLyBSZXR1cm5zIHRoZSBj
b25zdGFudCB2YWx1ZSB0byBrZWVwIHVzaW5nIG9yIG51bGxwdHIuCisvLworVENvbnN0YW50VW5p
b24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlXaXRoRGlmZmVyZW50UmV0dXJuVHlw
ZShUT3BlcmF0b3Igb3AsIFRJbmZvU2luayAmaW5mb1NpbmspCit7CisgICAgLy8KKyAgICAvLyBE
byBvcGVyYXRpb25zIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBoYXMgYSBkaWZmZXJlbnQgbnVtYmVy
IG9mIGNvbXBvbmVudHMgY29tcGFyZWQgdG8gdGhlIG9wZXJhbmQgdHlwZS4KKyAgICAvLworCisg
ICAgY29uc3QgVENvbnN0YW50VW5pb24gKm9wZXJhbmRBcnJheSA9IGdldFVuaW9uQXJyYXlQb2lu
dGVyKCk7CisgICAgaWYgKCFvcGVyYW5kQXJyYXkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgc2l6ZV90IG9iamVjdFNpemUgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAg
IFRDb25zdGFudFVuaW9uICpyZXN1bHRBcnJheSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChvcCkK
KyAgICB7CisgICAgICBjYXNlIEVPcEFueToKKyAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRCb29sKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9
IG5ldyBUQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEJDb25z
dChmYWxzZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7
IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICBpZiAob3BlcmFu
ZEFycmF5W2ldLmdldEJDb25zdCgpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXlbaV0gPSB1bmlvbkFycmF5W2ldIHx8IHJpZ2h0VW5pb25BcnJh
eVtpXTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEJDb25zdCh0cnVlKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQi
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLSAgICAgICAgICBj
YXNlIEVPcExvZ2ljYWxYb3I6CisgICAgICBjYXNlIEVPcEFsbDoKKyAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgcmVzdWx0QXJy
YXktPnNldEJDb25zdCh0cnVlKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlbXBDb25z
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwotICAgICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAg
IGlmICghb3BlcmFuZEFycmF5W2ldLmdldEJDb25zdCgpKQogICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRCQ29uc3QoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheVtpXSA9PSByaWdodFVuaW9uQXJyYXlb
aV0gPyBmYWxzZSA6IHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0QkNvbnN0KGZhbHNl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAg
ICAgICB7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFs
RXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3Rh
bnQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAKLSAgICAgICAg
ICBjYXNlIEVPcEJpdHdpc2VBbmQ6Ci0gICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ld
ID0gdW5pb25BcnJheVtpXSAmIHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgIGNhc2UgRU9wTGVu
Z3RoOgorICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQor
ICAgICAgICB7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbigp
OworICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEZDb25zdChWZWN0b3JMZW5ndGgob3BlcmFu
ZEFycmF5LCBvYmplY3RTaXplKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEVPcEJpdHdpc2VYb3I6Ci0gICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldID0gdW5p
b25BcnJheVtpXSBeIHJpZ2h0VW5pb25BcnJheVtpXTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50
ZXJuYWxFcnJvciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBj
b25zdGFudCIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAg
ICAgY2FzZSBFT3BUcmFuc3Bvc2U6CisgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0RmxvYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3
IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOworICAgICAgICAgICAgYW5nbGU6Ok1hdHJpeDxm
bG9hdD4gcmVzdWx0ID0KKyAgICAgICAgICAgICAgICBHZXRNYXRyaXgob3BlcmFuZEFycmF5LCBn
ZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSwgZ2V0VHlwZSgpLmdldFNlY29uZGFyeVNpemUoKSku
dHJhbnNwb3NlKCk7CisgICAgICAgICAgICBTZXRVbmlvbkFycmF5RnJvbU1hdHJpeChyZXN1bHQs
IHJlc3VsdEFycmF5KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRU9wQml0
d2lzZU9yOgotICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25b
b2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNp
emU7IGkrKykKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlb
aV0gfCByaWdodFVuaW9uQXJyYXlbaV07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJy
b3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQi
KTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgIGNhc2Ug
RU9wRGV0ZXJtaW5hbnQ6CisgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0RmxvYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gZ2V0
VHlwZSgpLmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICAgICBBU1NFUlQoc2l6ZSA+PSAyICYm
IHNpemUgPD0gNCk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
bigpOworICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEZDb25zdChHZXRNYXRyaXgob3BlcmFu
ZEFycmF5LCBzaXplKS5kZXRlcm1pbmFudCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0OgotICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJh
eVtpXSA9IHVuaW9uQXJyYXlbaV0gPDwgcmlnaHRVbmlvbkFycmF5W2ldOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdl
KEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZv
bGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorCisgICAgICBjYXNlIEVPcEludmVyc2U6CisgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGludCBzaXplID0gZ2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICAgICBBU1NF
UlQoc2l6ZSA+PSAyICYmIHNpemUgPD0gNCk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgICAgIGFuZ2xlOjpNYXRyaXg8
ZmxvYXQ+IHJlc3VsdCA9IEdldE1hdHJpeChvcGVyYW5kQXJyYXksIHNpemUpLmludmVyc2UoKTsK
KyAgICAgICAgICAgIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KHJlc3VsdCwgcmVzdWx0QXJyYXkp
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0Ogot
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6
ZV07Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykK
LSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXSA9IHVuaW9uQXJyYXlbaV0gPj4gcmln
aHRVbmlvbkFycmF5W2ldOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRM
aW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEVPcFBhY2tT
bm9ybTJ4MTY6CisgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Rmxv
YXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0Tm9taW5hbFNp
emUoKSA9PSAyKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
KCk7CisgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0VUNvbnN0KGdsOjpwYWNrU25vcm0yeDE2
KG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSwgb3BlcmFuZEFycmF5WzFdLmdldEZDb25zdCgp
KSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KIAotICAgICAgICAgIGNh
c2UgRU9wTGVzc1RoYW46Ci0gICAgICAgICAgICBBU1NFUlQob2JqZWN0U2l6ZSA9PSAxKTsKLSAg
ICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzFdOwotICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXktPnNldEJDb25zdCgqdW5pb25BcnJheSA8ICpyaWdodFVuaW9u
QXJyYXkpOwotICAgICAgICAgICAgcmV0dXJuVHlwZSA9IFRUeXBlKEVidEJvb2wsIEVicFVuZGVm
aW5lZCwgRXZxQ29uc3QpOworICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CisgICAgICAg
IGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMl07CisgICAgICAgICAg
ICBmbG9hdCBmMSwgZjI7CisgICAgICAgICAgICBnbDo6dW5wYWNrU25vcm0yeDE2KG9wZXJhbmRB
cnJheVswXS5nZXRVQ29uc3QoKSwgJmYxLCAmZjIpOworICAgICAgICAgICAgcmVzdWx0QXJyYXlb
MF0uc2V0RkNvbnN0KGYxKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5WzFdLnNldEZDb25zdChm
Mik7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KIAotICAgICAgICAgIGNh
c2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICAgICAgICBBU1NFUlQob2JqZWN0U2l6ZSA9PSAxKTsK
LSAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzFdOwotICAg
ICAgICAgICAgdGVtcENvbnN0QXJyYXktPnNldEJDb25zdCgqdW5pb25BcnJheSA+ICpyaWdodFVu
aW9uQXJyYXkpOwotICAgICAgICAgICAgcmV0dXJuVHlwZSA9IFRUeXBlKEVidEJvb2wsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpOworICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgorICAgICAg
ICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoZ2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPT0gMik7CisgICAg
ICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAg
cmVzdWx0QXJyYXktPnNldFVDb25zdChnbDo6cGFja1Vub3JtMngxNihvcGVyYW5kQXJyYXlbMF0u
Z2V0RkNvbnN0KCksIG9wZXJhbmRBcnJheVsxXS5nZXRGQ29uc3QoKSkpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVu
YXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CiAKLSAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1
YWw6CisgICAgICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjoKKyAgICAgICAgaWYgKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KQorICAgICAgICB7CisgICAgICAgICAgICByZXN1
bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsyXTsKKyAgICAgICAgICAgIGZsb2F0IGYxLCBm
MjsKKyAgICAgICAgICAgIGdsOjp1bnBhY2tVbm9ybTJ4MTYob3BlcmFuZEFycmF5WzBdLmdldFVD
b25zdCgpLCAmZjEsICZmMik7CisgICAgICAgICAgICByZXN1bHRBcnJheVswXS5zZXRGQ29uc3Qo
ZjEpOworICAgICAgICAgICAgcmVzdWx0QXJyYXlbMV0uc2V0RkNvbnN0KGYyKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCks
ICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICBjYXNlIEVPcFBhY2tIYWxmMngx
NjoKKyAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpID09
IDIpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKKyAg
ICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRVQ29uc3QoZ2w6OnBhY2tIYWxmMngxNihvcGVyYW5k
QXJyYXlbMF0uZ2V0RkNvbnN0KCksIG9wZXJhbmRBcnJheVsxXS5nZXRGQ29uc3QoKSkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgIGNhc2UgRU9wVW5wYWNr
SGFsZjJ4MTY6CisgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUlu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b25bMl07CisgICAgICAgICAgICBmbG9hdCBmMSwgZjI7CisgICAgICAgICAgICBnbDo6dW5wYWNr
SGFsZjJ4MTYob3BlcmFuZEFycmF5WzBdLmdldFVDb25zdCgpLCAmZjEsICZmMik7CisgICAgICAg
ICAgICByZXN1bHRBcnJheVswXS5zZXRGQ29uc3QoZjEpOworICAgICAgICAgICAgcmVzdWx0QXJy
YXlbMV0uc2V0RkNvbnN0KGYyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRl
ZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCisgICAgcmV0dXJuIHJlc3VsdEFycmF5OworfQorCitUQ29uc3RhbnRVbmlvbiAqVEludGVy
bUNvbnN0YW50VW5pb246OmZvbGRVbmFyeVdpdGhTYW1lUmV0dXJuVHlwZShUT3BlcmF0b3Igb3As
IFRJbmZvU2luayAmaW5mb1NpbmspCit7CisgICAgLy8KKyAgICAvLyBEbyB1bmFyeSBvcGVyYXRp
b25zIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyB0aGUgc2FtZSBhcyBvcGVyYW5kIHR5cGUuCisg
ICAgLy8KKworICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpvcGVyYW5kQXJyYXkgPSBnZXRVbmlv
bkFycmF5UG9pbnRlcigpOworICAgIGlmICghb3BlcmFuZEFycmF5KQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9iamVjdFNp
emUoKTsKKworICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRV
bmlvbltvYmplY3RTaXplXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7
IGkrKykKKyAgICB7CisgICAgICAgIHN3aXRjaChvcCkKKyAgICAgICAgeworICAgICAgICAgIGNh
c2UgRU9wTmVnYXRpdmU6CisgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQob2JqZWN0U2l6ZSA9
PSAxKTsKLSAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiBjb25zdGFudDsKLSAgICAgICAg
ICAgICAgICBjb25zdGFudC5zZXRCQ29uc3QoKnVuaW9uQXJyYXkgPiAqcmlnaHRVbmlvbkFycmF5
KTsKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsx
XTsKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheS0+c2V0QkNvbnN0KCFjb25zdGFudC5n
ZXRCQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuVHlwZSA9IFRUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpOworICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0Ogor
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCgtb3BlcmFuZEFycmF5W2ld
LmdldEZDb25zdCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2Fz
ZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KC1vcGVy
YW5kQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
VUNvbnN0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCisgICAgICAgICAgICAgICAgICAgIC1z
dGF0aWNfY2FzdDxpbnQ+KG9wZXJhbmRBcnJheVtpXS5nZXRVQ29uc3QoKSkpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBp
bmZvU2luay5pbmZvLm1lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5h
bEVycm9yLCBnZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24g
bm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2Ug
RU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICBjYXNlIEVPcFBvc2l0aXZlOgorICAgICAg
ICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKG9iamVjdFNpemUgPT0gMSk7Ci0gICAgICAgICAgICAgICAg
VENvbnN0YW50VW5pb24gY29uc3RhbnQ7Ci0gICAgICAgICAgICAgICAgY29uc3RhbnQuc2V0QkNv
bnN0KCp1bmlvbkFycmF5IDwgKnJpZ2h0VW5pb25BcnJheSk7Ci0gICAgICAgICAgICAgICAgdGVt
cENvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICAgICAgdGVt
cENvbnN0QXJyYXktPnNldEJDb25zdCghY29uc3RhbnQuZ2V0QkNvbnN0KCkpOwotICAgICAgICAg
ICAgICAgIHJldHVyblR5cGUgPSBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
KTsKKyAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRGQ29uc3Qob3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PigKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihvcGVyYW5kQXJy
YXlbaV0uZ2V0VUNvbnN0KCkpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAorICAg
ICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAorICAgICAg
ICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgICAgICAgaWYg
KGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCisgICAgICAgICAgY2FzZSBF
T3BMb2dpY2FsTm90OgorICAgICAgICAgICAgLy8gdGhpcyBjb2RlIGlzIHdyaXR0ZW4gZm9yIHBv
c3NpYmxlIGZ1dHVyZSB1c2UsCisgICAgICAgICAgICAvLyB3aWxsIG5vdCBnZXQgZXhlY3V0ZWQg
Y3VycmVudGx5CisgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNvbXBhcmVTdHJ1Y3R1cmUocmln
aHROb2RlLT5nZXRUeXBlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJpZ2h0Tm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pb25BcnJheSkpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBib29sTm9kZUZsYWcgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldEJDb25zdCghb3BlcmFuZEFycmF5W2ldLmdldEJDb25zdCgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoCisgICAgICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZv
bGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgIGNhc2UgRU9wQml0d2lzZU5vdDoKKyAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gIT0gcmlnaHRVbmlvbkFycmF5W2ldKQot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sTm9kZUZs
YWcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAvLyBicmVhayBvdXQg
b2YgZm9yIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0SUNvbnN0KH5vcGVyYW5kQXJyYXlbaV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0VUNvbnN0KH5vcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0KCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgRVByZWZpeElu
dGVybmFsRXJyb3IsIGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJh
dGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
ICB0ZW1wQ29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIGlm
ICghYm9vbE5vZGVGbGFnKQorICAgICAgICAgIGNhc2UgRU9wUmFkaWFuczoKKyAgICAgICAgICAg
IGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXktPnNldEJDb25zdCh0cnVlKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qoa0RlZ3JlZXNUb1JhZGlhbnNNdWx0
aXBsaWVyICogb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm9T
aW5rLmluZm8ubWVzc2FnZSgKKyAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwg
Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBp
bnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAg
IGNhc2UgRU9wRGVncmVlczoKKyAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBl
KCkgPT0gRWJ0RmxvYXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVtcENvbnN0
QXJyYXktPnNldEJDb25zdChmYWxzZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KGtSYWRpYW5zVG9EZWdyZWVzTXVsdGlwbGllciAqIG9wZXJhbmRBcnJheVtpXS5n
ZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCisgICAgICAgICAgICAgICAgRVByZWZpeElu
dGVybmFsRXJyb3IsIGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9u
IG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICAgICAgICAgIHRlbXBOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKAotICAg
ICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSk7Ci0gICAgICAgICAgICB0ZW1wTm9kZS0+c2V0TGluZShnZXRMaW5lKCkpOwor
ICAgICAgICAgIGNhc2UgRU9wU2luOgorICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5h
cnkob3BlcmFuZEFycmF5W2ldLCAmc2luZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCisg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICByZXR1cm4gdGVtcE5vZGU7CisgICAgICAgICAgY2FzZSBFT3BDb3M6CisgICAgICAg
ICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZjb3NmLCBpbmZv
U2luaywgJnJlc3VsdEFycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKLSAgICAg
ICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChDb21wYXJlU3RydWN0dXJlKHJpZ2h0Tm9kZS0+
Z2V0VHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Tm9k
ZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGJvb2xOb2RlRmxhZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHVuaW9uQXJyYXlbaV0gPT0gcmlnaHRVbmlvbkFycmF5W2ld
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sTm9k
ZUZsYWcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAvLyBicmVhayBv
dXQgb2YgZm9yIGxvb3AKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KKyAgICAgICAgICBjYXNlIEVPcFRhbjoKKyAgICAgICAgICAgIGlmICgh
Zm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJnRhbmYsIGluZm9TaW5rLCAmcmVz
dWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgIHRlbXBDb25zdEFycmF5ID0gbmV3IFRDb25zdGFudFVu
aW9uWzFdOwotICAgICAgICAgICAgaWYgKCFib29sTm9kZUZsYWcpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXktPnNldEJDb25zdCh0cnVlKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0
ZW1wQ29uc3RBcnJheS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICBjYXNlIEVPcEFzaW46CisgICAgICAgICAgICAvLyBGb3IgYXNpbih4KSwgcmVzdWx0cyBhcmUg
dW5kZWZpbmVkIGlmIHx4fCA+IDEsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAu
CisgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYm
IGZhYnNmKG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSkgPiAxLjBmKQorICAgICAgICAgICAg
ICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAg
ICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFzaW5mLCBp
bmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICB0ZW1wTm9kZSA9IG5ldyBUSW50
ZXJtQ29uc3RhbnRVbmlvbigKLSAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheSwgVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCkpOwotICAgICAgICAgICAgdGVtcE5vZGUt
PnNldExpbmUoZ2V0TGluZSgpKTsKKyAgICAgICAgICBjYXNlIEVPcEFjb3M6CisgICAgICAgICAg
ICAvLyBGb3IgYWNvcyh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHx4fCA+IDEsIHdlIGFy
ZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCisgICAgICAgICAgICBpZiAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmIGZhYnNmKG9wZXJhbmRBcnJheVtpXS5nZXRG
Q29uc3QoKSkgPiAxLjBmKQorICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGlu
Z0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwgaW5mb1Npbmss
ICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVu
YXJ5KG9wZXJhbmRBcnJheVtpXSwgJmFjb3NmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICByZXR1cm4gdGVtcE5vZGU7CisgICAgICAgICAgY2FzZSBFT3BBdGFuOgorICAg
ICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmYXRhbmYs
IGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5h
bEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgIkludmFsaWQgb3BlcmF0b3IgZm9y
IGNvbnN0YW50IGZvbGRpbmciKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB9Ci0gICAgICAgIHRlbXBOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHRlbXBDb25z
dEFycmF5LCByZXR1cm5UeXBlKTsKLSAgICAgICAgdGVtcE5vZGUtPnNldExpbmUoZ2V0TGluZSgp
KTsKKyAgICAgICAgICBjYXNlIEVPcFNpbmg6CisgICAgICAgICAgICBpZiAoIWZvbGRGbG9hdFR5
cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZzaW5oZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtp
XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICByZXR1cm4gdGVtcE5vZGU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAg
ICAgIC8vCi0gICAgICAgIC8vIERvIHVuYXJ5IG9wZXJhdGlvbnMKLSAgICAgICAgLy8KLSAgICAg
ICAgVEludGVybUNvbnN0YW50VW5pb24gKm5ld05vZGUgPSAwOwotICAgICAgICBUQ29uc3RhbnRV
bmlvbiogdGVtcENvbnN0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBzd2l0Y2gob3ApCisgICAgICAgICAgY2FzZSBFT3BDb3NoOgorICAgICAg
ICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmY29zaGYsIGlu
Zm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVPcFRhbmg6CisgICAgICAg
ICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZ0YW5oZiwgaW5m
b1NpbmssICZyZXN1bHRBcnJheVtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgRU9wQXNpbmg6CisgICAgICAg
ICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZhc2luaGYsIGlu
Zm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVPcEFjb3NoOgorICAgICAg
ICAgICAgLy8gRm9yIGFjb3NoKHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8IDEsIHdl
IGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCisgICAgICAgICAgICBpZiAoZ2V0VHlw
ZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmIG9wZXJhbmRBcnJheVtpXS5nZXRGQ29u
c3QoKSA8IDEuMGYpCisgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJy
b3IoZ2V0TGluZSgpLCBvcCwgZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLCBpbmZvU2luaywgJnJl
c3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnko
b3BlcmFuZEFycmF5W2ldLCAmYWNvc2hmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgY2FzZSBFT3BBdGFuaDoKKyAgICAgICAgICAgIC8vIEZvciBhdGFuaCh4KSwgcmVzdWx0
cyBhcmUgdW5kZWZpbmVkIGlmIHx4fCA+PSAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3Vs
dCB0byAwLgorICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRG
bG9hdCAmJiBmYWJzZihvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCkpID49IDEuMGYpCisgICAg
ICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IoZ2V0TGluZSgpLCBvcCwg
Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAm
YXRhbmhmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBFT3BBYnM6
CisgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKLSAgICAgICAgICAgICAgICBz
d2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXS5zZXRGQ29uc3QoLXVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAg
ICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoLXVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlb
aV0uc2V0VUNvbnN0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAtc3RhdGljX2Nhc3Q8aW50Pih1bmlvbkFycmF5W2ldLmdldFVDb25zdCgpKSkpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0RkNvbnN0KGZhYnNmKG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6Ci0gICAg
ICAgICAgICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAg
ICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0
KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0SW50OgotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3Qo
dW5pb25BcnJheVtpXS5nZXRJQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgICAgICAgICB0ZW1w
Q29uc3RBcnJheVtpXS5zZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4odW5pb25BcnJheVtpXS5nZXRVQ29u
c3QoKSkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29u
c3RhbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRJQ29uc3QoYWJzKG9wZXJhbmRBcnJheVtpXS5nZXRJQ29uc3QoKSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgRVByZWZp
eEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9w
ZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoKLSAgICAgICAgICAgICAgICAvLyB0aGlzIGNvZGUg
aXMgd3JpdHRlbiBmb3IgcG9zc2libGUgZnV0dXJlIHVzZSwKLSAgICAgICAgICAgICAgICAvLyB3
aWxsIG5vdCBnZXQgZXhlY3V0ZWQgY3VycmVudGx5Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgICAgY2FzZSBFT3BTaWduOgorICAgICAg
ICAgICAgc3dpdGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRCb29sOgotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJh
eVtpXS5zZXRCQ29uc3QoIXVuaW9uQXJyYXlbaV0uZ2V0QkNvbnN0KCkpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIEVQ
cmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAi
VW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgZkNvbnN0
ID0gb3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICBmbG9h
dCBmUmVzdWx0ID0gMC4wZjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZDb25zdCA+IDAuMGYp
CisgICAgICAgICAgICAgICAgICAgICAgICBmUmVzdWx0ID0gMS4wZjsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZkNvbnN0IDwgMC4wZikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZS
ZXN1bHQgPSAtMS4wZjsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNv
bnN0KGZSZXN1bHQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgICAgICBjYXNlIEVPcEJpdHdpc2VOb3Q6Ci0gICAgICAgICAgICAgICAgc3dp
dGNoIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkpCisgICAgICAgICAgICAgIGNhc2UgRWJ0SW50
OgogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAg
ICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QofnVuaW9uQXJyYXlb
aV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlb
aV0uc2V0VUNvbnN0KH51bmlvbkFycmF5W2ldLmdldFVDb25zdCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAg
ICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgICAgICBFUHJl
Zml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIlVu
YXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGludCBpQ29uc3QgPSBv
cGVyYW5kQXJyYXlbaV0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGludCBpUmVz
dWx0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlDb25zdCA+IDApCisgICAgICAgICAg
ICAgICAgICAgICAgICBpUmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aUNvbnN0IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlSZXN1bHQgPSAtMTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGlSZXN1bHQpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICBjYXNl
IEVPcFJhZGlhbnM6Ci0gICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRGbG9hdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRl
bXBDb25zdEFycmF5W2ldLnNldEZDb25zdChrRGVncmVlc1RvUmFkaWFuc011bHRpcGxpZXIgKiB1
bmlvbkFycmF5W2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IGluZm9TaW5rLmluZm8ubWVzc2FnZSgKICAgICAgICAgICAgICAgICAgICAgRVByZWZpeEludGVy
bmFsRXJyb3IsIGdldExpbmUoKSwKICAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlv
biBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAg
IGNhc2UgRU9wRGVncmVlczoKLSAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidEZsb2F0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KGtSYWRpYW5zVG9EZWdyZWVzTXVsdGlwbGll
ciAqIHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNz
YWdlKAotICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgp
LAotICAgICAgICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBj
b25zdGFudCIpOworICAgICAgICAgIGNhc2UgRU9wRmxvb3I6CisgICAgICAgICAgICBpZiAoIWZv
bGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZmbG9vcmYsIGluZm9TaW5rLCAmcmVz
dWx0QXJyYXlbaV0pKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgY2FzZSBFT3BTaW46Ci0gICAgICAgICAgICAgICAg
aWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtpXSwgJnNpbmYsIGluZm9TaW5rLCAm
dGVtcENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRU9wVHJ1bmM6CisgICAgICAg
ICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZ0cnVuY2YsIGlu
Zm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgY2FzZSBFT3BDb3M6Ci0gICAg
ICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtpXSwgJmNvc2Ys
IGluZm9TaW5rLCAmdGVtcENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgICBjYXNlIEVPcFJvdW5kOgorICAgICAgICAgICAgaWYgKCFm
b2xkRmxvYXRUeXBlVW5hcnkob3BlcmFuZEFycmF5W2ldLCAmcm91bmRmLCBpbmZvU2luaywgJnJl
c3VsdEFycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBFT3BSb3VuZEV2ZW46CisgICAgICAgICAgICBp
ZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGZsb2F0IHggPSBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNvbnN0KCk7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgcmVzdWx0OworICAgICAgICAgICAgICAgIGZsb2F0IGZyYWN0
UGFydCA9IG1vZGZmKHgsICZyZXN1bHQpOworICAgICAgICAgICAgICAgIGlmIChmYWJzZihmcmFj
dFBhcnQpID09IDAuNWYpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDIuMGYgKiByb3Vu
ZGYoeCAvIDIuMGYpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gcm91bmRmKHgpOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZD
b25zdChyZXN1bHQpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAorICAgICAgICAgICAgICAgIEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBnZXRMaW5lKCksCisgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlv
biBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wVGFuOgotICAgICAgICAgICAgICAgIGlmICghZm9s
ZEZsb2F0VHlwZVVuYXJ5KHVuaW9uQXJyYXlbaV0sICZ0YW5mLCBpbmZvU2luaywgJnRlbXBDb25z
dEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgY2FzZSBFT3BDZWlsOgorICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkob3Bl
cmFuZEFycmF5W2ldLCAmY2VpbGYsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICBjYXNlIEVPcEZyYWN0OgorICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB4ID0g
b3BlcmFuZEFycmF5W2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEZDb25zdCh4IC0gZmxvb3JmKHgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKKyAgICAgICAg
ICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJvciwgZ2V0TGluZSgpLAorICAgICAgICAgICAgICAg
ICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICBjYXNlIEVPcEFzaW46Ci0gICAgICAg
ICAgICAgICAgLy8gRm9yIGFzaW4oeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB8eHwgPiAx
LCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgotICAgICAgICAgICAgICAgIGlm
IChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgZmFic2YodW5pb25BcnJh
eVtpXS5nZXRGQ29uc3QoKSkgPiAxLjBmKQotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RB
cnJheVtpXS5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGRG
bG9hdFR5cGVVbmFyeSh1bmlvbkFycmF5W2ldLCAmYXNpbmYsIGluZm9TaW5rLCAmdGVtcENvbnN0
QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICBjYXNlIEVPcElzTmFuOgorICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRCQ29uc3QoZ2w6OmlzTmFOKG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5mb1Np
bmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBv
cGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgICAgICAgICAgICBjYXNlIEVPcEFjb3M6Ci0gICAgICAgICAgICAgICAg
Ly8gRm9yIGFjb3MoeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB8eHwgPiAxLCB3ZSBhcmUg
Y2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgotICAgICAgICAgICAgICAgIGlmIChnZXRUeXBl
KCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgZmFic2YodW5pb25BcnJheVtpXS5nZXRG
Q29uc3QoKSkgPiAxLjBmKQotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5z
ZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVV
bmFyeSh1bmlvbkFycmF5W2ldLCAmYWNvc2YsIGluZm9TaW5rLCAmdGVtcENvbnN0QXJyYXlbaV0p
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICBjYXNlIEVP
cElzSW5mOgorICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRG
bG9hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRC
Q29uc3QoZ2w6OmlzSW5mKG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24g
bm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgICAgICAgICAgICBjYXNlIEVPcEF0YW46Ci0gICAgICAgICAgICAgICAgaWYgKCFmb2xk
RmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtpXSwgJmF0YW5mLCBpbmZvU2luaywgJnRlbXBDb25z
dEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgY2FzZSBFT3BGbG9hdEJpdHNUb0ludDoKKyAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGdsOjpiaXRDYXN0PGludDMyX3Q+KG9wZXJhbmRBcnJh
eVswXS5nZXRGQ29uc3QoKSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9y
LCBnZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICBjYXNlIEVPcFNp
bmg6Ci0gICAgICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtp
XSwgJnNpbmhmLCBpbmZvU2luaywgJnRlbXBDb25zdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6
CisgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdChn
bDo6Yml0Q2FzdDx1aW50MzJfdD4ob3BlcmFuZEFycmF5WzBdLmdldEZDb25zdCgpKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJh
dGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wQ29zaDoKLSAgICAgICAgICAgICAgICBpZiAo
IWZvbGRGbG9hdFR5cGVVbmFyeSh1bmlvbkFycmF5W2ldLCAmY29zaGYsIGluZm9TaW5rLCAmdGVt
cENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgorICAgICAgICAgICAgaWYgKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGdsOjpiaXRDYXN0PGZsb2F0PihvcGVyYW5kQXJy
YXlbMF0uZ2V0SUNvbnN0KCkpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLCAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQgaW50byBjb25zdGFudCIp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAgICAgICAgICAgY2FzZSBFT3BU
YW5oOgotICAgICAgICAgICAgICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KHVuaW9uQXJyYXlb
aV0sICZ0YW5oZiwgaW5mb1NpbmssICZ0ZW1wQ29uc3RBcnJheVtpXSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgIGNhc2UgRU9wVWludEJpdHNUb0Zsb2F0
OgorICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChn
bDo6Yml0Q2FzdDxmbG9hdD4ob3BlcmFuZEFycmF5WzBdLmdldFVDb25zdCgpKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlv
biBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wQXNpbmg6Ci0gICAgICAgICAgICAgICAgaWYgKCFm
b2xkRmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtpXSwgJmFzaW5oZiwgaW5mb1NpbmssICZ0ZW1w
Q29uc3RBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgIGNhc2UgRU9wRXhwOgorICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnko
b3BlcmFuZEFycmF5W2ldLCAmZXhwZiwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSkpCisgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICBjYXNlIEVPcExvZzoKKyAgICAgICAgICAgIC8vIEZvciBsb2coeCksIHJlc3VsdHMgYXJlIHVu
ZGVmaW5lZCBpZiB4IDw9IDAsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCisg
ICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmIG9w
ZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBmKQorICAgICAgICAgICAgICAgIFVuZGVm
aW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICBlbHNlIGlm
ICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJmxvZ2YsIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVPcEV4cDI6CisgICAgICAgICAgICBpZiAo
IWZvbGRGbG9hdFR5cGVVbmFyeShvcGVyYW5kQXJyYXlbaV0sICZleHAyZiwgaW5mb1NpbmssICZy
ZXN1bHRBcnJheVtpXSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgRU9wTG9nMjoKKyAgICAgICAgICAgIC8vIEZv
ciBsb2cyKHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8PSAwLCB3ZSBhcmUgY2hvb3Np
bmcgdG8gc2V0IHJlc3VsdCB0byAwLgorICAgICAgICAgICAgLy8gQW5kIGxvZzJmIGlzIG5vdCBh
dmFpbGFibGUgb24gc29tZSBwbGFyZm9ybXMgbGlrZSBvbGQgYW5kcm9pZCwgc28ganVzdCB1c2lu
ZyBsb2coeCkvbG9nKDIpIGhlcmUuCisgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidEZsb2F0ICYmIG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBm
KQorICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUo
KSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtp
XSk7CisgICAgICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJh
eVtpXSwgJmxvZ2YsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pKQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldEZDb25zdChyZXN1bHRBcnJheVtpXS5nZXRGQ29uc3QoKSAvIGxvZ2YoMi4w
ZikpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVPcFNxcnQ6CisgICAg
ICAgICAgICAvLyBGb3Igc3FydCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPCAwLCB3
ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgorICAgICAgICAgICAgaWYgKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCAmJiBvcGVyYW5kQXJyYXlbaV0uZ2V0RkNv
bnN0KCkgPCAwLjBmKQorICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vy
cm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSwgaW5mb1NpbmssICZy
ZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5
KG9wZXJhbmRBcnJheVtpXSwgJnNxcnRmLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDoKKyAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHN0
ZGxpYiBidWlsdC1pbiBmdW5jdGlvbiBlcXVhdmFsZW50IGZvciBHTEVTIGJ1aWx0LWluIGludmVy
c2VzcXJ0KCksCisgICAgICAgICAgICAvLyBzbyBnZXR0aW5nIHRoZSBzcXVhcmUgcm9vdCBmaXJz
dCB1c2luZyBidWlsdGluIGZ1bmN0aW9uIHNxcnQoKSBhbmQgdGhlbiB0YWtpbmcgaXRzIGludmVy
c2UuCisgICAgICAgICAgICAvLyBBbHNvLCBmb3IgaW52ZXJzZXNxcnQoeCksIHJlc3VsdHMgYXJl
IHVuZGVmaW5lZCBpZiB4IDw9IDAsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAu
CisgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYm
IG9wZXJhbmRBcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBmKQorICAgICAgICAgICAgICAgIFVu
ZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGdldExpbmUoKSwgb3AsIGdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKSwgaW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICBlbHNl
IGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KG9wZXJhbmRBcnJheVtpXSwgJnNxcnRmLCBpbmZvU2lu
aywgJnJlc3VsdEFycmF5W2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qo
MS4wZiAvIHJlc3VsdEFycmF5W2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgY2FzZSBFT3BWZWN0b3JMb2dpY2FsTm90OgorICAgICAgICAgICAgaWYgKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCghb3BlcmFuZEFycmF5W2ldLmdldEJD
b25zdCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKKyAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJu
YWxFcnJvciwgZ2V0TGluZSgpLAorICAgICAgICAgICAgICAgICJVbmFyeSBvcGVyYXRpb24gbm90
IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgICAgICAgICAgICBjYXNlIEVPcEFjb3NoOgotICAgICAgICAgICAgICAgIC8vIEZvciBhY29z
aCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPCAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8g
c2V0IHJlc3VsdCB0byAwLgotICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0RmxvYXQgJiYgdW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSA8IDEuMGYpCi0g
ICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCgwLjBmKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KHVuaW9uQXJyYXlbaV0s
ICZhY29zaGYsIGluZm9TaW5rLCAmdGVtcENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICBjYXNlIEVPcE5vcm1hbGl6ZToKKyAgICAg
ICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA9IG9wZXJhbmRBcnJheVtpXS5nZXRGQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBsZW5ndGggPSBWZWN0b3JMZW5ndGgob3BlcmFu
ZEFycmF5LCBvYmplY3RTaXplKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoKQorICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAvIGxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZv
bGRpbmdFcnJvcihnZXRMaW5lKCksIG9wLCBnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCksIGluZm9T
aW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
cmVzdWx0QXJyYXlbaV0pOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksICJVbmFyeSBvcGVyYXRpb24gbm90IGZvbGRlZCBpbnRvIGNvbnN0YW50Iik7Cisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICAgICAgICBjYXNlIEVPcEF0YW5o
OgotICAgICAgICAgICAgICAgIC8vIEZvciBhdGFuaCh4KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVk
IGlmIHx4fCA+PSAxLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJlc3VsdCB0byAwLgotICAgICAg
ICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgZmFi
c2YodW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSkgPj0gMS4wZikKLSAgICAgICAgICAgICAgICAg
ICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtpXSwgJmF0YW5oZiwgaW5mb1Np
bmssICZ0ZW1wQ29uc3RBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgIGNhc2UgRU9wREZkeDoKKyAgICAgICAgICBjYXNlIEVPcERGZHk6Cisg
ICAgICAgICAgY2FzZSBFT3BGd2lkdGg6CisgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJh
c2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IERlcml2YXRpdmVzIG9mIGNvbnN0YW50IGFyZ3VtZW50cyBzaG91bGQgYmUgMC4KKyAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoMC4wZik7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9s
ZGVkIGludG8gY29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
ICAgICAgICAgIGNhc2UgRU9wQWJzOgotICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpKQorICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHRBcnJheTsKK30K
KworYm9vbCBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEZsb2F0VHlwZVVuYXJ5KGNvbnN0IFRD
b25zdGFudFVuaW9uICZwYXJhbWV0ZXIsIEZsb2F0VHlwZVVuYXJ5RnVuYyBidWlsdGluRnVuYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW5mb1Npbmsg
JmluZm9TaW5rLCBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVChi
dWlsdGluRnVuYyk7CisKKyAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZs
b2F0KQorICAgIHsKKyAgICAgICAgcmVzdWx0LT5zZXRGQ29uc3QoYnVpbHRpbkZ1bmMocGFyYW1l
dGVyLmdldEZDb25zdCgpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlu
Zm9TaW5rLmluZm8ubWVzc2FnZSgKKyAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExp
bmUoKSwKKyAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQi
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIHN0YXRpYworVENvbnN0YW50VW5pb24gKlRJ
bnRlcm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3IoVEludGVybUFnZ3Jl
Z2F0ZSAqYWdncmVnYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEluZm9TaW5rICZpbmZvU2luaykKK3sKKyAgICBBU1NF
UlQoYWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgPiAwdSk7CisgICAgc2l6ZV90IHJl
c3VsdFNpemUgICAgICAgICAgID0gYWdncmVnYXRlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgp
OworICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblty
ZXN1bHRTaXplXTsKKyAgICBUQmFzaWNUeXBlIGJhc2ljVHlwZSAgICAgICAgPSBhZ2dyZWdhdGUt
PmdldEJhc2ljVHlwZSgpOworCisgICAgc2l6ZV90IHJlc3VsdEluZGV4ID0gMHU7CisKKyAgICBp
ZiAoYWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgPT0gMXUpCisgICAgeworICAgICAg
ICBUSW50ZXJtTm9kZSAqYXJndW1lbnQgICAgICAgICAgICAgICAgICAgID0gYWdncmVnYXRlLT5n
ZXRTZXF1ZW5jZSgpLT5mcm9udCgpOworICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqYXJn
dW1lbnRDb25zdGFudCAgID0gYXJndW1lbnQtPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgICAg
ICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqYXJndW1lbnRVbmlvbkFycmF5ID0gYXJndW1lbnRDb25z
dGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHNwZWNp
YWwgY2FzZSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXRyaXggZGlhZ29uYWwgZnJvbSBhIHNpbmdsZSBz
Y2FsYXIsCisgICAgICAgIC8vIG9yIGEgdmVjdG9yIGZyb20gYSBzaW5nbGUgc2NhbGFyLgorICAg
ICAgICBpZiAoYXJndW1lbnRDb25zdGFudC0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA9PSAx
dSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGFnZ3JlZ2F0ZS0+aXNNYXRyaXgoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0Q29scyA9IGFnZ3JlZ2F0ZS0+
Z2V0VHlwZSgpLmdldENvbHMoKTsKKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0Um93cyA9IGFn
Z3JlZ2F0ZS0+Z2V0VHlwZSgpLmdldFJvd3MoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBj
b2wgPSAwOyBjb2wgPCByZXN1bHRDb2xzOyArK2NvbCkKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29u
c3RBcnJheVtpXS5zZXRGQ29uc3QoZmFic2YodW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSkpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50
OgotICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29uc3QoYWJzKHVu
aW9uQXJyYXlbaV0uZ2V0SUNvbnN0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBpbmZvU2luay5p
bmZvLm1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgICAgICAgICBFUHJlZml4SW50ZXJuYWxFcnJv
ciwgZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBu
b3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJlc3Vs
dFJvd3M7ICsrcm93KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY29sID09IHJvdykKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtyZXN1bHRJbmRleF0uY2FzdChiYXNpY1R5
cGUsIGFyZ3VtZW50VW5pb25BcnJheVswXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbcmVzdWx0SW5kZXhdLnNldEZD
b25zdCgwLjBmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICsrcmVzdWx0SW5kZXg7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgd2hpbGUgKHJlc3VsdEluZGV4IDwgcmVzdWx0U2l6ZSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W3Jlc3VsdEluZGV4XS5j
YXN0KGJhc2ljVHlwZSwgYXJndW1lbnRVbmlvbkFycmF5WzBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgKytyZXN1bHRJbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0SW5kZXggPT0gcmVzdWx0U2l6ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0QXJyYXk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYWdncmVnYXRl
LT5pc01hdHJpeCgpICYmIGFyZ3VtZW50Q29uc3RhbnQtPmlzTWF0cml4KCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFRoZSBzcGVjaWFsIGNhc2Ugb2YgY29uc3RydWN0aW5nIGEgbWF0cml4
IGZyb20gYSBtYXRyaXguCisgICAgICAgICAgICBpbnQgYXJndW1lbnRDb2xzID0gYXJndW1lbnRD
b25zdGFudC0+Z2V0VHlwZSgpLmdldENvbHMoKTsKKyAgICAgICAgICAgIGludCBhcmd1bWVudFJv
d3MgPSBhcmd1bWVudENvbnN0YW50LT5nZXRUeXBlKCkuZ2V0Um93cygpOworICAgICAgICAgICAg
aW50IHJlc3VsdENvbHMgICA9IGFnZ3JlZ2F0ZS0+Z2V0VHlwZSgpLmdldENvbHMoKTsKKyAgICAg
ICAgICAgIGludCByZXN1bHRSb3dzID0gYWdncmVnYXRlLT5nZXRUeXBlKCkuZ2V0Um93cygpOwor
ICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgcmVzdWx0Q29sczsgKytjb2wpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgcmVz
dWx0Um93czsgKytyb3cpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoY29sIDwgYXJndW1lbnRDb2xzICYmIHJvdyA8IGFyZ3VtZW50Um93cykKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbcmVzdWx0SW5k
ZXhdLmNhc3QoYmFzaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJndW1lbnRVbmlvbkFycmF5W2NvbCAqIGFyZ3VtZW50Um93cyAr
IHJvd10pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGNvbCA9PSByb3cpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W3Jlc3VsdEluZGV4XS5zZXRGQ29uc3QoMS4wZik7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtyZXN1bHRJbmRleF0u
c2V0RkNvbnN0KDAuMGYpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICsrcmVzdWx0SW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdEluZGV4ID09IHJlc3VsdFNpemUpOworICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdEFycmF5OworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChUSW50ZXJt
Tm9kZSAqJmFyZ3VtZW50IDogKmFnZ3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKSkKKyAgICB7CisgICAg
ICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICphcmd1bWVudENvbnN0YW50ICAgPSBhcmd1bWVudC0+
Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgIHNpemVfdCBhcmd1bWVudFNpemUgICAgICAg
ICAgICAgICAgICAgICAgPSBhcmd1bWVudENvbnN0YW50LT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6
ZSgpOworICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqYXJndW1lbnRVbmlvbkFycmF5ID0g
YXJndW1lbnRDb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDB1OyBpIDwgYXJndW1lbnRTaXplOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHRJbmRleCA+PSByZXN1bHRTaXplKQogICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgcmVzdWx0QXJyYXlbcmVzdWx0SW5kZXhdLmNhc3QoYmFzaWNUeXBlLCBh
cmd1bWVudFVuaW9uQXJyYXlbaV0pOworICAgICAgICAgICAgKytyZXN1bHRJbmRleDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBBU1NFUlQocmVzdWx0SW5kZXggPT0gcmVzdWx0U2l6ZSk7CisgICAg
cmV0dXJuIHJlc3VsdEFycmF5OworfQogCi0gICAgICAgICAgICAgIGNhc2UgRU9wU2lnbjoKLSAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKKy8vIHN0YXRp
YworVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVnYXRlQnVp
bHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsIFRJbmZvU2luayAmaW5mb1NpbmspCit7
CisgICAgVE9wZXJhdG9yIG9wID0gYWdncmVnYXRlLT5nZXRPcCgpOworICAgIFRJbnRlcm1TZXF1
ZW5jZSAqc2VxdWVuY2UgPSBhZ2dyZWdhdGUtPmdldFNlcXVlbmNlKCk7CisgICAgdW5zaWduZWQg
aW50IHBhcmFtc0NvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzZXF1ZW5jZS0+c2l6
ZSgpKTsKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBUQ29uc3RhbnRVbmlvbiAqPiB1bmlvbkFycmF5
cyhwYXJhbXNDb3VudCk7CisgICAgc3RkOjp2ZWN0b3I8c2l6ZV90PiBvYmplY3RTaXplcyhwYXJh
bXNDb3VudCk7CisgICAgc2l6ZV90IG1heE9iamVjdFNpemUgPSAwOworICAgIFRCYXNpY1R5cGUg
YmFzaWNUeXBlID0gRWJ0Vm9pZDsKKyAgICBUU291cmNlTG9jIGxvYzsKKyAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBhcmFtc0NvdW50OyBpKyspCisgICAgeworICAgICAgICBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqcGFyYW1Db25zdGFudCA9ICgqc2VxdWVuY2UpW2ldLT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgQVNTRVJUKHBhcmFtQ29uc3RhbnQgIT0gbnVsbHB0cik7
IC8vIFNob3VsZCBiZSBjaGVja2VkIGFscmVhZHkuCisKKyAgICAgICAgaWYgKGkgPT0gMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgYmFzaWNUeXBlID0gcGFyYW1Db25zdGFudC0+Z2V0VHlwZSgp
LmdldEJhc2ljVHlwZSgpOworICAgICAgICAgICAgbG9jID0gcGFyYW1Db25zdGFudC0+Z2V0TGlu
ZSgpOworICAgICAgICB9CisgICAgICAgIHVuaW9uQXJyYXlzW2ldID0gcGFyYW1Db25zdGFudC0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKKyAgICAgICAgb2JqZWN0U2l6ZXNbaV0gPSBwYXJhbUNv
bnN0YW50LT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBpZiAob2JqZWN0U2l6
ZXNbaV0gPiBtYXhPYmplY3RTaXplKQorICAgICAgICAgICAgbWF4T2JqZWN0U2l6ZSA9IG9iamVj
dFNpemVzW2ldOworICAgIH0KKworICAgIGlmICghKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQo
KS0+aXNNYXRyaXgoKSkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgcGFyYW1zQ291bnQ7IGkrKykKKyAgICAgICAgICAgIGlmIChvYmplY3RTaXplc1tpXSAhPSBt
YXhPYmplY3RTaXplKQorICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzW2ldID0gVmVjdG9yaXpl
KCp1bmlvbkFycmF5c1tpXSwgbWF4T2JqZWN0U2l6ZSk7CisgICAgfQorCisgICAgVENvbnN0YW50
VW5pb24gKnJlc3VsdEFycmF5ID0gbnVsbHB0cjsKKyAgICBpZiAocGFyYW1zQ291bnQgPT0gMikK
KyAgICB7CisgICAgICAgIC8vCisgICAgICAgIC8vIEJpbmFyeSBidWlsdC1pbgorICAgICAgICAv
LworICAgICAgICBzd2l0Y2ggKG9wKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFT3BBdGFu
OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0Rmxv
YXQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4
T2JqZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCBmQ29uc3QgPSB1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZlJlc3VsdCA9IDAuMGY7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZkNvbnN0ID4gMC4wZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmUmVzdWx0ID0gMS4wZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZDb25z
dCA8IDAuMGYpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlJlc3VsdCA9IC0xLjBmOwot
ICAgICAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KGZSZXN1
bHQpOworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzBdW2ld
LmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJy
YXlzWzFdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0
cyBhcmUgdW5kZWZpbmVkIGlmIHggYW5kIHkgYXJlIGJvdGggMC4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh4ID09IDAuMGYgJiYgeSA9PSAwLjBmKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwg
aW5mb1NpbmssICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGF0
YW4yZih5LCB4KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVP
cFBvdzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVi
dEZsb2F0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaUNvbnN0ID0gdW5pb25B
cnJheVtpXS5nZXRJQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBpUmVzdWx0
ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpQ29uc3QgPiAwKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlSZXN1bHQgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoaUNvbnN0IDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpUmVzdWx0
ID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRJQ29u
c3QoaVJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJh
eXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB5ID0g
dW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8IDAuCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA9IDAgYW5kIHkgPD0gMC4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh4IDwgMC4wZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9T
aW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
eCA9PSAwLjBmICYmIHkgPD0gMC4wZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRl
ZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChwb3dmKHgsIHkpKTsK
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
bWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIEVQcmVmaXhJbnRlcm5hbEVycm9yLCBn
ZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBm
b2xkZWQgaW50byBjb25zdGFudCIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgY2FzZSBFT3BGbG9vcjoK
LSAgICAgICAgICAgICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeSh1bmlvbkFycmF5W2ldLCAm
Zmxvb3JmLCBpbmZvU2luaywgJnRlbXBDb25zdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSBFT3BNb2Q6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9
PSBFYnRGbG9hdCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9u
QXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
eSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHggLSB5ICogZmxvb3JmKHggLyB5KSk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgY2FzZSBFT3BUcnVuYzoKLSAgICAgICAg
ICAgICAgICBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeSh1bmlvbkFycmF5W2ldLCAmdHJ1bmNmLCBp
bmZvU2luaywgJnRlbXBDb25zdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFT3BNaW46
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0
YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qoc3RkOjptaW4odW5pb25BcnJheXNbMF1baV0uZ2V0
RkNvbnN0KCksIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChzdGQ6Om1pbih1
bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSwgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldFVDb25zdChzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSwgdW5pb25B
cnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAgICAgICBjYXNlIEVPcFJvdW5kOgotICAgICAgICAgICAg
ICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KHVuaW9uQXJyYXlbaV0sICZyb3VuZGYsIGluZm9T
aW5rLCAmdGVtcENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVPcE1heDoKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRV
bmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEZDb25zdChzdGQ6Om1heCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29u
c3QoKSwgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KHN0ZDo6bWF4KHVuaW9u
QXJyYXlzWzBdW2ldLmdldElDb25zdCgpLCB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
VUNvbnN0KHN0ZDo6bWF4KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpLCB1bmlvbkFycmF5
c1sxXVtpXS5nZXRVQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wUm91bmRFdmVuOgotICAgICAgICAgICAg
ICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAgICAg
Y2FzZSBFT3BTdGVwOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChiYXNpY1R5
cGUgPT0gRWJ0RmxvYXQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBm
bG9hdCB4ID0gdW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgcmVzdWx0OwotICAgICAgICAgICAgICAgICAgICBmbG9hdCBmcmFjdFBhcnQgPSBtb2Rm
Zih4LCAmcmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZhYnNmKGZyYWN0UGFydCkg
PT0gMC41ZikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDIuMGYgKiByb3VuZGYo
eCAvIDIuMGYpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgPSByb3VuZGYoeCk7Ci0gICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFy
cmF5W2ldLnNldEZDb25zdChyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2Jq
ZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpIDwgdW5pb25BcnJheXNbMF1b
aV0uZ2V0RkNvbnN0KCkgPyAwLjBmIDogMS4wZik7CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVzc2FnZSgKLSAgICAgICAgICAgICAgICAgICAgRVBy
ZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgIlVuYXJ5
IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8gY29uc3RhbnQiKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICAgICAgICBjYXNlIEVPcENlaWw6Ci0gICAgICAgICAgICAgICAgaWYgKCFmb2xkRmxvYXRU
eXBlVW5hcnkodW5pb25BcnJheVtpXSwgJmNlaWxmLCBpbmZvU2luaywgJnRlbXBDb25zdEFycmF5
W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RT
aXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNp
emU7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
YmFzaWNUeXBlKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA8IHVuaW9uQXJyYXlzWzFdW2ld
LmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDwgdW5pb25B
cnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25z
dCgpIDwgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wRnJhY3Q6Ci0g
ICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkK
KyAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07
CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBp
KyspCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5p
b25BcnJheVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXlbaV0uc2V0RkNvbnN0KHggLSBmbG9vcmYoeCkpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ld
LmdldEZDb25zdCgpIDw9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50
OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9u
QXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDw9IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA8PSB1bmlvbkFycmF5c1sxXVtp
XS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ubWVz
c2FnZSgKLSAgICAgICAgICAgICAgICAgICAgRVByZWZpeEludGVybmFsRXJyb3IsIGdldExpbmUo
KSwKLSAgICAgICAgICAgICAgICAgICAgIlVuYXJ5IG9wZXJhdGlvbiBub3QgZm9sZGVkIGludG8g
Y29uc3RhbnQiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wRXhwOgotICAg
ICAgICAgICAgICAgIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KHVuaW9uQXJyYXlbaV0sICZleHBm
LCBpbmZvU2luaywgJnRlbXBDb25zdEFycmF5W2ldKSkKLSAgICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRU9wR3Jl
YXRlclRoYW46CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0
RkNvbnN0KCkgPiB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRJQ29uc3QoKSA+IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25z
dCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA+IHVuaW9uQXJyYXlzWzFdW2ldLmdldFVD
b25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICAgICAgICBjYXNlIEVPcExvZzoKLSAgICAgICAgICAgICAgICAvLyBGb3IgbG9nKHgpLCBy
ZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8PSAwLCB3ZSBhcmUgY2hvb3NpbmcgdG8gc2V0IHJl
c3VsdCB0byAwLgotICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0RmxvYXQgJiYgdW5pb25BcnJheVtpXS5nZXRGQ29uc3QoKSA8PSAwLjBmKQotICAgICAg
ICAgICAgICAgICAgICB0ZW1wQ29uc3RBcnJheVtpXS5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAg
ICAgICAgICAgZWxzZSBpZiAoIWZvbGRGbG9hdFR5cGVVbmFyeSh1bmlvbkFycmF5W2ldLCAmbG9n
ZiwgaW5mb1NpbmssICZ0ZW1wQ29uc3RBcnJheVtpXSkpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRU9w
R3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRB
cnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1sw
XVtpXS5nZXRGQ29uc3QoKSA+PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1
bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA+PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29u
c3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPj0gdW5pb25BcnJheXNb
MV1baV0uZ2V0VUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgICAgICAgIGNhc2UgRU9wRXhwMjoKLSAgICAgICAgICAgICAgICBpZiAo
IWZvbGRGbG9hdFR5cGVVbmFyeSh1bmlvbkFycmF5W2ldLCAmZXhwMmYsIGluZm9TaW5rLCAmdGVt
cENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOgorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVu
aW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID09IHVu
aW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElD
b25zdCgpID09IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRVQ29uc3QoKSA9PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEJvb2w6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29u
c3QodW5pb25BcnJheXNbMF1baV0uZ2V0QkNvbnN0KCkgPT0gdW5pb25BcnJheXNbMV1baV0uZ2V0
QkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICAgIGNhc2UgRU9wTG9nMjoKLSAgICAgICAgICAgICAgICAvLyBGb3IgbG9nMih4
KSwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPD0gMCwgd2UgYXJlIGNob29zaW5nIHRvIHNl
dCByZXN1bHQgdG8gMC4KLSAgICAgICAgICAgICAgICAvLyBBbmQgbG9nMmYgaXMgbm90IGF2YWls
YWJsZSBvbiBzb21lIHBsYXJmb3JtcyBsaWtlIG9sZCBhbmRyb2lkLCBzbyBqdXN0IHVzaW5nIGxv
Zyh4KS9sb2coMikgaGVyZS4KLSAgICAgICAgICAgICAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2lj
VHlwZSgpID09IEVidEZsb2F0ICYmIHVuaW9uQXJyYXlbaV0uZ2V0RkNvbnN0KCkgPD0gMC4wZikK
LSAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KDAuMGYpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb2xkRmxvYXRUeXBlVW5hcnkodW5pb25BcnJheVtp
XSwgJmxvZ2YsIGluZm9TaW5rLCAmdGVtcENvbnN0QXJyYXlbaV0pKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCh0ZW1wQ29uc3RBcnJheVtpXS5nZXRG
Q29uc3QoKSAvIGxvZ2YoMi4wZikpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
IGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25B
cnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgIT0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRC
Q29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgIT0gdW5pb25BcnJheXNbMV1baV0u
Z2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpICE9IHVuaW9u
QXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRCQ29u
c3QoKSAhPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRCQ29uc3QoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgY2FzZSBFT3BTcXJ0Ogot
ICAgICAgICAgICAgICAgIC8vIEZvciBzcXJ0KHgpLCByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYg
eCA8IDAsIHdlIGFyZSBjaG9vc2luZyB0byBzZXQgcmVzdWx0IHRvIDAuCi0gICAgICAgICAgICAg
ICAgaWYgKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCAmJiB1bmlvbkFycmF5
W2ldLmdldEZDb25zdCgpIDwgMC4wZikKLSAgICAgICAgICAgICAgICAgICAgdGVtcENvbnN0QXJy
YXlbaV0uc2V0RkNvbnN0KDAuMGYpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFmb2xkRmxv
YXRUeXBlVW5hcnkodW5pb25BcnJheVtpXSwgJnNxcnRmLCBpbmZvU2luaywgJnRlbXBDb25zdEFy
cmF5W2ldKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAgICAgICAgIGlm
IChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
VENvbnN0YW50VW5pb24gKmRpc3RhbmNlQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2Jq
ZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b24oKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNp
emU7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHgg
PSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgZmxv
YXQgeSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAg
ICBkaXN0YW5jZUFycmF5W2ldLnNldEZDb25zdCh4IC0geSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRGQ29uc3QoVmVjdG9yTGVuZ3RoKGRpc3Rh
bmNlQXJyYXksIG1heE9iamVjdFNpemUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDoKLSAgICAgICAgICAgICAgICAvLyBU
aGVyZSBpcyBubyBzdGRsaWIgYnVpbHQtaW4gZnVuY3Rpb24gZXF1YXZhbGVudCBmb3IgR0xFUyBi
dWlsdC1pbiBpbnZlcnNlc3FydCgpLAotICAgICAgICAgICAgICAgIC8vIHNvIGdldHRpbmcgdGhl
IHNxdWFyZSByb290IGZpcnN0IHVzaW5nIGJ1aWx0aW4gZnVuY3Rpb24gc3FydCgpIGFuZCB0aGVu
IHRha2luZyBpdHMgaW52ZXJzZS4KLSAgICAgICAgICAgICAgICAvLyBBbHNvLCBmb3IgaW52ZXJz
ZXNxcnQoeCksIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDw9IDAsIHdlIGFyZSBjaG9vc2lu
ZyB0byBzZXQgcmVzdWx0IHRvIDAuCi0gICAgICAgICAgICAgICAgaWYgKGdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRGbG9hdCAmJiB1bmlvbkFycmF5W2ldLmdldEZDb25zdCgpIDw9IDAu
MGYpCi0gICAgICAgICAgICAgICAgICAgIHRlbXBDb25zdEFycmF5W2ldLnNldEZDb25zdCgwLjBm
KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghZm9sZEZsb2F0VHlwZVVuYXJ5KHVuaW9uQXJy
YXlbaV0sICZzcXJ0ZiwgaW5mb1NpbmssICZ0ZW1wQ29uc3RBcnJheVtpXSkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgdGVtcENvbnN0QXJyYXlbaV0uc2V0RkNvbnN0KDEuMGYgLyB0ZW1wQ29uc3RB
cnJheVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
Y2FzZSBFT3BEb3Q6CiAKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb24oKTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0RkNvbnN0KFZlY3RvckRv
dFByb2R1Y3QodW5pb25BcnJheXNbMF0sIHVuaW9uQXJyYXlzWzFdLCBtYXhPYmplY3RTaXplKSk7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBFT3BDcm9zczoK
KyAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQgJiYgbWF4T2JqZWN0U2l6ZSA9
PSAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRD
b25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAgICAgIGZsb2F0IHgwID0g
dW5pb25BcnJheXNbMF1bMF0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgeDEg
PSB1bmlvbkFycmF5c1swXVsxXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCB4
MiA9IHVuaW9uQXJyYXlzWzBdWzJdLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0
IHkwID0gdW5pb25BcnJheXNbMV1bMF0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxv
YXQgeTEgPSB1bmlvbkFycmF5c1sxXVsxXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBm
bG9hdCB5MiA9IHVuaW9uQXJyYXlzWzFdWzJdLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5WzBdLnNldEZDb25zdCh4MSAqIHkyIC0geTEgKiB4Mik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbMV0uc2V0RkNvbnN0KHgyICogeTAgLSB5MiAqIHgwKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVsyXS5zZXRGQ29uc3QoeDAgKiB5MSAtIHkwICogeDEpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoK
KyAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgLy8gZ2VuVHlwZSByZWZsZWN0IChnZW5UeXBlIEksIGdlblR5cGUgTikg
OgorICAgICAgICAgICAgICAgIC8vICAgICBGb3IgdGhlIGluY2lkZW50IHZlY3RvciBJIGFuZCBz
dXJmYWNlIG9yaWVudGF0aW9uIE4sIHJldHVybnMgdGhlIHJlZmxlY3Rpb24gZGlyZWN0aW9uOgor
ICAgICAgICAgICAgICAgIC8vICAgICBJIC0gMiAqIGRvdChOLCBJKSAqIE4uCisgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Cisg
ICAgICAgICAgICAgICAgZmxvYXQgZG90UHJvZHVjdCA9IFZlY3RvckRvdFByb2R1Y3QodW5pb25B
cnJheXNbMV0sIHVuaW9uQXJyYXlzWzBdLCBtYXhPYmplY3RTaXplKTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJlc3VsdCA9IHVuaW9uQXJyYXlzWzBd
W2ldLmdldEZDb25zdCgpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4w
ZiAqIGRvdFByb2R1Y3QgKiB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3VsdCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2UgRU9w
TXVsOgorICAgICAgICAgICAgaWYgKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCAmJiAoKnNlcXVlbmNl
KVswXS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpICYmCisgICAgICAgICAgICAgICAgKCpzZXF1
ZW5jZSlbMV0tPmdldEFzVHlwZWQoKS0+aXNNYXRyaXgoKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBQZXJmb3JtIGNvbXBvbmVudC13aXNlIG1hdHJpeCBtdWx0aXBsaWNhdGlv
bi4KKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhP
YmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9ICgqc2VxdWVuY2UpWzBdLT5n
ZXRBc1R5cGVkKCktPmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICAgICAgICAgYW5nbGU6Ok1h
dHJpeDxmbG9hdD4gcmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgR2V0TWF0cml4KHVuaW9u
QXJyYXlzWzBdLCBzaXplKS5jb21wTXVsdChHZXRNYXRyaXgodW5pb25BcnJheXNbMV0sIHNpemUp
KTsKKyAgICAgICAgICAgICAgICBTZXRVbmlvbkFycmF5RnJvbU1hdHJpeChyZXN1bHQsIHJlc3Vs
dEFycmF5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVP
cE91dGVyUHJvZHVjdDoKKyAgICAgICAgICAgIGlmIChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2l6ZV90IG51bVJvd3MgPSAoKnNlcXVlbmNl
KVswXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAg
ICAgICAgIHNpemVfdCBudW1Db2xzID0gKCpzZXF1ZW5jZSlbMV0tPmdldEFzVHlwZWQoKS0+Z2V0
VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvbltudW1Sb3dzICogbnVtQ29sc107CisgICAgICAgICAgICAgICAgYW5n
bGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgR2V0TWF0cml4
KHVuaW9uQXJyYXlzWzBdLCAxLCBzdGF0aWNfY2FzdDxpbnQ+KG51bUNvbHMpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgLm91dGVyUHJvZHVjdChHZXRNYXRyaXgodW5pb25BcnJheXNbMV0sIHN0
YXRpY19jYXN0PGludD4obnVtUm93cyksIDEpKTsKKyAgICAgICAgICAgICAgICBTZXRVbmlvbkFy
cmF5RnJvbU1hdHJpeChyZXN1bHQsIHJlc3VsdEFycmF5KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIC8vIFRPRE86IEFkZCBjb25zdGFudCBmb2xkaW5nIHN1cHBvcnQgZm9yIG90
aGVyIGJ1aWx0LWluIG9wZXJhdGlvbnMgdGhhdCB0YWtlIDIgcGFyYW1ldGVycyBhbmQgbm90IGhh
bmRsZWQgYWJvdmUuCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQotICAg
ICAgICBuZXdOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHRlbXBDb25zdEFycmF5LCBn
ZXRUeXBlKCkpOwotICAgICAgICBuZXdOb2RlLT5zZXRMaW5lKGdldExpbmUoKSk7Ci0gICAgICAg
IHJldHVybiBuZXdOb2RlOwogICAgIH0KLX0KKyAgICBlbHNlIGlmIChwYXJhbXNDb3VudCA9PSAz
KQorICAgIHsKKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGVybmFyeSBidWlsdC1pbgorICAgICAg
ICAvLworICAgICAgICBzd2l0Y2ggKG9wKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBFT3BD
bGFtcDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJh
eXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
bWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+
IG1heC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihs
b2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHggPSB1bmlvbkFycmF5c1swXVtpXS5n
ZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluID0gdW5pb25B
cnJheXNbMV1baV0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IG1heCA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiBtaW4gPiBtYXguCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNU
eXBlLCBpbmZvU2luaywgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldElDb25zdChnbDo6Y2xhbXAoeCwgbWluLCBtYXgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldFVD
b25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtaW4gPSB1
bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+
IG1heC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihs
b2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOwogCi1ib29sIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkRmxvYXRUeXBlVW5hcnkoY29u
c3QgVENvbnN0YW50VW5pb24gJnBhcmFtZXRlciwgRmxvYXRUeXBlVW5hcnlGdW5jIGJ1aWx0aW5G
dW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbmZv
U2luayAmaW5mb1NpbmssIFRDb25zdGFudFVuaW9uICpyZXN1bHQpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKGJ1aWx0aW5GdW5jKTsKKyAgICAgICAgICBjYXNlIEVPcE1peDoKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVidEZsb2F0KQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB5ID0gdW5pb25BcnJheXNbMV1baV0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIHR5cGUgPSAoKnNl
cXVlbmNlKVsyXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBFYnRGbG9hdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm5zIHRoZSBs
aW5lYXIgYmxlbmQgb2YgeCBhbmQgeSwgaS5lLiwgeCAqICgxIC0gYSkgKyB5ICogYS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBhID0gdW5pb25BcnJheXNbMl1baV0uZ2V0RkNv
bnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNv
bnN0KHggKiAoMS4wZiAtIGEpICsgeSAqIGEpOworICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAvLyAzcmQgcGFyYW1ldGVyIGlzIEVidEJvb2wK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQodHlwZSA9PSBFYnRCb29sKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT
ZWxlY3RzIHdoaWNoIHZlY3RvciBlYWNoIHJldHVybmVkIGNvbXBvbmVudCBjb21lcyBmcm9tLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBhIGNvbXBvbmVudCBvZiBhIHRoYXQg
aXMgZmFsc2UsIHRoZSBjb3JyZXNwb25kaW5nIGNvbXBvbmVudCBvZiB4IGlzIHJldHVybmVkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBhIGNvbXBvbmVudCBvZiBhIHRoYXQg
aXMgdHJ1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IG9mIHkgaXMgcmV0dXJuZWQuCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhID0gdW5pb25BcnJheXNbMl1baV0uZ2V0
QkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
RkNvbnN0KGEgPyB5IDogeCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICBpZiAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0
KQotICAgIHsKLSAgICAgICAgcmVzdWx0LT5zZXRGQ29uc3QoYnVpbHRpbkZ1bmMocGFyYW1ldGVy
LmdldEZDb25zdCgpKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIGNhc2UgRU9w
U21vb3RoU3RlcDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYmFzaWNUeXBl
ID09IEVidEZsb2F0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBlZGdlMCA9
IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgZWRnZTEgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiBlZGdlMCA+
PSBlZGdlMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlMCA+PSBlZGdlMSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRl
ZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGluZm9TaW5rLCAm
cmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFJldHVybnMgMC4wIGlmIHggPD0gZWRnZTAgYW5kIDEuMCBpZiB4
ID49IGVkZ2UxIGFuZCBwZXJmb3JtcyBzbW9vdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBIZXJtaXRlIGludGVycG9sYXRpb24gYmV0d2VlbiAwIGFuZCAxIHdoZW4gZWRnZTAgPCB4
IDwgZWRnZTEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgdCA9IGdsOjpjbGFt
cCgoeCAtIGVkZ2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMC4wZiwgMS4wZik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHQgKiB0ICogKDMuMGYg
LSAyLjBmICogdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKKyAgICAgICAgICAgIGlmIChi
YXNpY1R5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8g
Z2VuVHlwZSBmYWNlZm9yd2FyZChnZW5UeXBlIE4sIGdlblR5cGUgSSwgZ2VuVHlwZSBOcmVmKSA6
CisgICAgICAgICAgICAgICAgLy8gICAgIElmIGRvdChOcmVmLCBJKSA8IDAgcmV0dXJuIE4sIG90
aGVyd2lzZSByZXR1cm4gLU4uCisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICAgICAgZmxvYXQgZG90UHJv
ZHVjdCA9IFZlY3RvckRvdFByb2R1Y3QodW5pb25BcnJheXNbMl0sIHVuaW9uQXJyYXlzWzFdLCBt
YXhPYmplY3RTaXplKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChkb3RQcm9kdWN0IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEZDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEZDb25zdCgtdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVPcFJlZnJh
Y3Q6CisgICAgICAgICAgICBpZiAoYmFzaWNUeXBlID09IEVidEZsb2F0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIC8vIGdlblR5cGUgcmVmcmFjdChnZW5UeXBlIEksIGdlblR5cGUg
TiwgZmxvYXQgZXRhKSA6CisgICAgICAgICAgICAgICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQg
dmVjdG9yIEkgYW5kIHN1cmZhY2Ugbm9ybWFsIE4sIGFuZCB0aGUgcmF0aW8gb2YgaW5kaWNlcyBv
ZiByZWZyYWN0aW9uIGV0YSwKKyAgICAgICAgICAgICAgICAvLyAgICAgcmV0dXJuIHRoZSByZWZy
YWN0aW9uIHZlY3Rvci4gVGhlIHJlc3VsdCBpcyBjb21wdXRlZCBieQorICAgICAgICAgICAgICAg
IC8vICAgICAgICAgayA9IDEuMCAtIGV0YSAqIGV0YSAqICgxLjAgLSBkb3QoTiwgSSkgKiBkb3Qo
TiwgSSkpCisgICAgICAgICAgICAgICAgLy8gICAgICAgICBpZiAoayA8IDAuMCkKKyAgICAgICAg
ICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gZ2VuVHlwZSgwLjApCisgICAgICAgICAgICAg
ICAgLy8gICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJu
IGV0YSAqIEkgLSAoZXRhICogZG90KE4sIEkpICsgc3FydChrKSkgKiBOCisgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAg
ICAgICAgICAgICAgZmxvYXQgZG90UHJvZHVjdCA9IFZlY3RvckRvdFByb2R1Y3QodW5pb25BcnJh
eXNbMV0sIHVuaW9uQXJyYXlzWzBdLCBtYXhPYmplY3RTaXplKTsKKyAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IGV0YSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdl
dEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCBrID0gMS4wZiAtIGV0YSAqIGV0
YSAqICgxLjBmIC0gZG90UHJvZHVjdCAqIGRvdFByb2R1Y3QpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoayA8IDAuMGYpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRGQ29uc3QoMC4wZik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChldGEgKiB1bmlvbkFycmF5c1swXVtp
XS5nZXRGQ29uc3QoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGV0YSAqIGRvdFByb2R1Y3QgKyBzcXJ0ZihrKSkgKiB1bmlvbkFycmF5c1sx
XVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvbnN0YW50IGZvbGRpbmcgc3VwcG9ydCBmb3Ig
b3RoZXIgYnVpbHQtaW4gb3BlcmF0aW9ucyB0aGF0IHRha2UgMyBwYXJhbWV0ZXJzIGFuZCBub3Qg
aGFuZGxlZCBhYm92ZS4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CiAg
ICAgfQotCi0gICAgaW5mb1NpbmsuaW5mby5tZXNzYWdlKAotICAgICAgICBFUHJlZml4SW50ZXJu
YWxFcnJvciwgZ2V0TGluZSgpLAotICAgICAgICAiVW5hcnkgb3BlcmF0aW9uIG5vdCBmb2xkZWQg
aW50byBjb25zdGFudCIpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcmVzdWx0QXJy
YXk7CiB9CiAKIC8vIHN0YXRpYwpAQCAtMTQ4OCw2ICsyNjA2LDI1IEBACiAKIHZvaWQgVEludGVy
bVRyYXZlcnNlcjo6dXBkYXRlVHJlZSgpCiB7CisgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8
IG1JbnNlcnRpb25zLnNpemUoKTsgKytpaSkKKyAgICB7CisgICAgICAgIGNvbnN0IE5vZGVJbnNl
cnRNdWx0aXBsZUVudHJ5ICZpbnNlcnRpb24gPSBtSW5zZXJ0aW9uc1tpaV07CisgICAgICAgIEFT
U0VSVChpbnNlcnRpb24ucGFyZW50KTsKKyAgICAgICAgaWYgKCFpbnNlcnRpb24uaW5zZXJ0aW9u
c0FmdGVyLmVtcHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaW5zZXJ0ZWQgPSBp
bnNlcnRpb24ucGFyZW50LT5pbnNlcnRDaGlsZE5vZGVzKGluc2VydGlvbi5wb3NpdGlvbiArIDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb24uaW5zZXJ0aW9uc0FmdGVyKTsKKyAgICAgICAgICAgIEFTU0VSVChp
bnNlcnRlZCk7CisgICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGluc2VydGVk
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWluc2VydGlvbi5pbnNlcnRpb25zQmVmb3JlLmVt
cHR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaW5zZXJ0ZWQgPQorICAgICAgICAg
ICAgICAgIGluc2VydGlvbi5wYXJlbnQtPmluc2VydENoaWxkTm9kZXMoaW5zZXJ0aW9uLnBvc2l0
aW9uLCBpbnNlcnRpb24uaW5zZXJ0aW9uc0JlZm9yZSk7CisgICAgICAgICAgICBBU1NFUlQoaW5z
ZXJ0ZWQpOworICAgICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShpbnNlcnRlZCk7
CisgICAgICAgIH0KKyAgICB9CiAgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IG1SZXBsYWNl
bWVudHMuc2l6ZSgpOyArK2lpKQogICAgIHsKICAgICAgICAgY29uc3QgTm9kZVVwZGF0ZUVudHJ5
ICZyZXBsYWNlbWVudCA9IG1SZXBsYWNlbWVudHNbaWldOwpAQCAtMTUyMCw0ICsyNjU3LDggQEAK
ICAgICAgICAgQVNTRVJUKHJlcGxhY2VkKTsKICAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJ
QUJMRShyZXBsYWNlZCk7CiAgICAgfQorCisgICAgbUluc2VydGlvbnMuY2xlYXIoKTsKKyAgICBt
UmVwbGFjZW1lbnRzLmNsZWFyKCk7CisgICAgbU11bHRpUmVwbGFjZW1lbnRzLmNsZWFyKCk7CiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDExICs0MSwzNSBAQAogY2xhc3MgVEluZm9TaW5rOwogY2xh
c3MgVEluZm9TaW5rQmFzZTsKIGNsYXNzIFRJbnRlcm1SYXc7CitjbGFzcyBUSW50ZXJtQnJhbmNo
OwogCitjbGFzcyBUU3ltYm9sVGFibGU7CisKKy8vIEVuY2Fwc3VsYXRlIGFuIGlkZW50aWZpZXIg
c3RyaW5nIGFuZCB0cmFjayB3aGV0aGVyIGl0IGlzIGNvbWluZyBmcm9tIHRoZSBvcmlnaW5hbCBz
aGFkZXIgY29kZQorLy8gKG5vdCBpbnRlcm5hbCkgb3IgZnJvbSBBTkdMRSAoaW50ZXJuYWwpLiBV
c3VhbGx5IGludGVybmFsIG5hbWVzIHNob3VsZG4ndCBiZSBkZWNvcmF0ZWQgb3IgaGFzaGVkLgor
Y2xhc3MgVE5hbWUKK3sKKyAgcHVibGljOgorICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUo
KTsKKyAgICBleHBsaWNpdCBUTmFtZShjb25zdCBUU3RyaW5nICZuYW1lKSA6IG1OYW1lKG5hbWUp
LCBtSXNJbnRlcm5hbChmYWxzZSkge30KKyAgICBUTmFtZSgpIDogbU5hbWUoKSwgbUlzSW50ZXJu
YWwoZmFsc2UpIHt9CisgICAgVE5hbWUoY29uc3QgVE5hbWUgJikgPSBkZWZhdWx0OworICAgIFRO
YW1lICZvcGVyYXRvcj0oY29uc3QgVE5hbWUgJikgPSBkZWZhdWx0OworCisgICAgY29uc3QgVFN0
cmluZyAmZ2V0U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbU5hbWU7IH0KKyAgICB2b2lkIHNldFN0
cmluZyhjb25zdCBUU3RyaW5nICZzdHJpbmcpIHsgbU5hbWUgPSBzdHJpbmc7IH0KKyAgICBib29s
IGlzSW50ZXJuYWwoKSBjb25zdCB7IHJldHVybiBtSXNJbnRlcm5hbDsgfQorICAgIHZvaWQgc2V0
SW50ZXJuYWwoYm9vbCBpc0ludGVybmFsKSB7IG1Jc0ludGVybmFsID0gaXNJbnRlcm5hbDsgfQor
CisgIHByaXZhdGU6CisgICAgVFN0cmluZyBtTmFtZTsKKyAgICBib29sIG1Jc0ludGVybmFsOwor
fTsKKwogLy8KIC8vIEJhc2UgY2xhc3MgZm9yIHRoZSB0cmVlIG5vZGVzCiAvLwotY2xhc3MgVElu
dGVybU5vZGUKK2NsYXNzIFRJbnRlcm1Ob2RlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1
YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CkBAIC03Myw2ICs5Nyw3IEBA
CiAgICAgdmlydHVhbCBUSW50ZXJtU3ltYm9sICpnZXRBc1N5bWJvbE5vZGUoKSB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCBUSW50ZXJtTG9vcCAqZ2V0QXNMb29wTm9kZSgpIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1SYXcgKmdldEFzUmF3Tm9kZSgpIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIFRJbnRlcm1CcmFuY2ggKmdldEFzQnJhbmNoTm9kZSgpIHsgcmV0dXJuIDA7
IH0KIAogICAgIC8vIFJlcGxhY2UgYSBjaGlsZCBub2RlLiBSZXR1cm4gdHJ1ZSBpZiB8b3JpZ2lu
YWx8IGlzIGEgY2hpbGQKICAgICAvLyBub2RlIGFuZCBpdCBpcyByZXBsYWNlZDsgb3RoZXJ3aXNl
LCByZXR1cm4gZmFsc2UuCkBAIC05OSw4ICsxMjQsMTEgQEAKIHsKICAgcHVibGljOgogICAgIFRJ
bnRlcm1UeXBlZChjb25zdCBUVHlwZSAmdCkgOiBtVHlwZSh0KSAgeyB9Ci0gICAgdmlydHVhbCBU
SW50ZXJtVHlwZWQgKmdldEFzVHlwZWQoKSB7IHJldHVybiB0aGlzOyB9CiAKKyAgICB2aXJ0dWFs
IFRJbnRlcm1UeXBlZCAqZGVlcENvcHkoKSBjb25zdCA9IDA7CisKKyAgICBUSW50ZXJtVHlwZWQg
KmdldEFzVHlwZWQoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisKICAgICB2aXJ0dWFsIGJv
b2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCA9IDA7CiAKICAgICB2b2lkIHNldFR5cGUoY29uc3Qg
VFR5cGUgJnQpIHsgbVR5cGUgPSB0OyB9CkBAIC0xMjMsMTMgKzE1MSwxNCBAQAogICAgIGJvb2wg
aXNTY2FsYXIoKSBjb25zdCB7IHJldHVybiBtVHlwZS5pc1NjYWxhcigpOyB9CiAgICAgYm9vbCBp
c1NjYWxhckludCgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmlzU2NhbGFySW50KCk7IH0KICAgICBj
b25zdCBjaGFyICpnZXRCYXNpY1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldEJhc2lj
U3RyaW5nKCk7IH0KLSAgICBjb25zdCBjaGFyICpnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7
IHJldHVybiBtVHlwZS5nZXRRdWFsaWZpZXJTdHJpbmcoKTsgfQogICAgIFRTdHJpbmcgZ2V0Q29t
cGxldGVTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtVHlwZS5nZXRDb21wbGV0ZVN0cmluZygpOyB9
CiAKICAgICBpbnQgZ2V0QXJyYXlTaXplKCkgY29uc3QgeyByZXR1cm4gbVR5cGUuZ2V0QXJyYXlT
aXplKCk7IH0KIAogICBwcm90ZWN0ZWQ6CiAgICAgVFR5cGUgbVR5cGU7CisKKyAgICBUSW50ZXJt
VHlwZWQoY29uc3QgVEludGVybVR5cGVkICZub2RlKTsKIH07CiAKIC8vCkBAIC0xNDYsMjUgKzE3
NSwyMyBAQAogewogICBwdWJsaWM6CiAgICAgVEludGVybUxvb3AoVExvb3BUeXBlIHR5cGUsCi0g
ICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmluaXQsIFRJbnRlcm1UeXBlZCAqY29uZCwgVElu
dGVybVR5cGVkICpleHByLAotICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpib2R5KQotICAg
ICAgICA6IG1UeXBlKHR5cGUpLAotICAgICAgICAgIG1Jbml0KGluaXQpLAotICAgICAgICAgIG1D
b25kKGNvbmQpLAotICAgICAgICAgIG1FeHByKGV4cHIpLAotICAgICAgICAgIG1Cb2R5KGJvZHkp
LAotICAgICAgICAgIG1VbnJvbGxGbGFnKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICAgICBUSW50
ZXJtTm9kZSAqaW5pdCwKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmNvbmQsCisgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICpleHByLAorICAgICAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmJvZHkpCisgICAgICAgIDogbVR5cGUodHlwZSksIG1Jbml0KGluaXQpLCBtQ29u
ZChjb25kKSwgbUV4cHIoZXhwciksIG1Cb2R5KGJvZHkpLCBtVW5yb2xsRmxhZyhmYWxzZSkKKyAg
ICB7CisgICAgfQogCi0gICAgdmlydHVhbCBUSW50ZXJtTG9vcCAqZ2V0QXNMb29wTm9kZSgpIHsg
cmV0dXJuIHRoaXM7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNl
ciAqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKLSAgICAgICAgVEludGVy
bU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpOworICAgIFRJbnRlcm1M
b29wICpnZXRBc0xvb3BOb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQorICAgIHZvaWQg
dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJyaWRlOworICAgIGJvb2wgcmVwbGFj
ZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCkgb3ZlcnJpZGU7CiAKICAgICBUTG9vcFR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1U
eXBlOyB9CiAgICAgVEludGVybU5vZGUgKmdldEluaXQoKSB7IHJldHVybiBtSW5pdDsgfQogICAg
IFRJbnRlcm1UeXBlZCAqZ2V0Q29uZGl0aW9uKCkgeyByZXR1cm4gbUNvbmQ7IH0KICAgICBUSW50
ZXJtVHlwZWQgKmdldEV4cHJlc3Npb24oKSB7IHJldHVybiBtRXhwcjsgfQotICAgIFRJbnRlcm1O
b2RlICpnZXRCb2R5KCkgeyByZXR1cm4gbUJvZHk7IH0KKyAgICBUSW50ZXJtQWdncmVnYXRlICpn
ZXRCb2R5KCkgeyByZXR1cm4gbUJvZHk7IH0KIAogICAgIHZvaWQgc2V0VW5yb2xsRmxhZyhib29s
IGZsYWcpIHsgbVVucm9sbEZsYWcgPSBmbGFnOyB9CiAgICAgYm9vbCBnZXRVbnJvbGxGbGFnKCkg
Y29uc3QgeyByZXR1cm4gbVVucm9sbEZsYWc7IH0KQEAgLTE3NCw3ICsyMDEsNyBAQAogICAgIFRJ
bnRlcm1Ob2RlICptSW5pdDsgIC8vIGZvci1sb29wIGluaXRpYWxpemF0aW9uCiAgICAgVEludGVy
bVR5cGVkICptQ29uZDsgLy8gbG9vcCBleGl0IGNvbmRpdGlvbgogICAgIFRJbnRlcm1UeXBlZCAq
bUV4cHI7IC8vIGZvci1sb29wIGV4cHJlc3Npb24KLSAgICBUSW50ZXJtTm9kZSAqbUJvZHk7ICAv
LyBsb29wIGJvZHkKKyAgICBUSW50ZXJtQWdncmVnYXRlICptQm9keTsgIC8vIGxvb3AgYm9keQog
CiAgICAgYm9vbCBtVW5yb2xsRmxhZzsgLy8gV2hldGhlciB0aGUgbG9vcCBzaG91bGQgYmUgdW5y
b2xsZWQgb3Igbm90LgogfTsKQEAgLTE4OSw5ICsyMTYsOSBAQAogICAgICAgICA6IG1GbG93T3Ao
b3ApLAogICAgICAgICAgIG1FeHByZXNzaW9uKGUpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRy
YXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKik7Ci0gICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGls
ZE5vZGUoCi0gICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxh
Y2VtZW50KTsKKyAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlk
ZTsKKyAgICBUSW50ZXJtQnJhbmNoICpnZXRBc0JyYW5jaE5vZGUoKSBvdmVycmlkZSB7IHJldHVy
biB0aGlzOyB9CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5h
bCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsKIAogICAgIFRPcGVyYXRvciBn
ZXRGbG93T3AoKSB7IHJldHVybiBtRmxvd09wOyB9CiAgICAgVEludGVybVR5cGVkKiBnZXRFeHBy
ZXNzaW9uKCkgeyByZXR1cm4gbUV4cHJlc3Npb247IH0KQEAgLTIxMSwzMSArMjM4LDMyIEBACiAg
ICAgLy8gSWYgc3ltIGNvbWVzIGZyb20gcGVyIHByb2Nlc3MgZ2xvYmFscG9vbGFsbG9jYXRvciwg
dGhlbiBpdCBjYXVzZXMgaW5jcmVhc2VkIG1lbW9yeSB1c2FnZQogICAgIC8vIHBlciBjb21waWxl
IGl0IGlzIGVzc2VudGlhbCB0byB1c2UgInN5bWJvbCA9IHN5bSIgdG8gYXNzaWduIHRvIHN5bWJv
bAogICAgIFRJbnRlcm1TeW1ib2woaW50IGlkLCBjb25zdCBUU3RyaW5nICZzeW1ib2wsIGNvbnN0
IFRUeXBlICZ0eXBlKQotICAgICAgICA6IFRJbnRlcm1UeXBlZCh0eXBlKSwKLSAgICAgICAgICBt
SWQoaWQpLAotICAgICAgICAgIG1JbnRlcm5hbChmYWxzZSkKKyAgICAgICAgOiBUSW50ZXJtVHlw
ZWQodHlwZSksIG1JZChpZCksIG1TeW1ib2woc3ltYm9sKQogICAgIHsKLSAgICAgICAgbVN5bWJv
bCA9IHN5bWJvbDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIFRJbnRlcm1UeXBlZCAqZGVlcENvcHkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBuZXcgVEludGVybVN5bWJvbCgqdGhpcyk7IH0KIAorICAgIGJv
b2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAg
ICAgaW50IGdldElkKCkgY29uc3QgeyByZXR1cm4gbUlkOyB9Ci0gICAgY29uc3QgVFN0cmluZyAm
Z2V0U3ltYm9sKCkgY29uc3QgeyByZXR1cm4gbVN5bWJvbDsgfQorICAgIGNvbnN0IFRTdHJpbmcg
JmdldFN5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1TeW1ib2wuZ2V0U3RyaW5nKCk7IH0KKyAgICBj
b25zdCBUTmFtZSAmZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1TeW1ib2w7IH0KIAogICAgIHZv
aWQgc2V0SWQoaW50IG5ld0lkKSB7IG1JZCA9IG5ld0lkOyB9CiAKLSAgICBib29sIGlzSW50ZXJu
YWwoKSBjb25zdCB7IHJldHVybiBtSW50ZXJuYWw7IH0KLSAgICB2b2lkIHNldEludGVybmFsKGJv
b2wgaXNJbnRlcm5hbCkgeyBtSW50ZXJuYWwgPSBpc0ludGVybmFsOyB9CisgICAgdm9pZCBzZXRJ
bnRlcm5hbChib29sIGludGVybmFsKSB7IG1TeW1ib2wuc2V0SW50ZXJuYWwoaW50ZXJuYWwpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqKTsKLSAgICB2
aXJ0dWFsIFRJbnRlcm1TeW1ib2wgKmdldEFzU3ltYm9sTm9kZSgpIHsgcmV0dXJuIHRoaXM7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqLCBUSW50ZXJt
Tm9kZSAqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZl
cnNlciAqaXQpIG92ZXJyaWRlOworICAgIFRJbnRlcm1TeW1ib2wgKmdldEFzU3ltYm9sTm9kZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUoVElu
dGVybU5vZGUgKiwgVEludGVybU5vZGUgKikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICBwcm90ZWN0ZWQ6CiAgICAgaW50IG1JZDsKLSAgICBib29sIG1JbnRlcm5hbDsKLSAgICBUU3Ry
aW5nIG1TeW1ib2w7CisgICAgVE5hbWUgbVN5bWJvbDsKKworICBwcml2YXRlOgorICAgIFRJbnRl
cm1TeW1ib2woY29uc3QgVEludGVybVN5bWJvbCAmKSA9IGRlZmF1bHQ7ICAvLyBOb3RlOiBub3Qg
ZGVsZXRlZCwganVzdCBwcml2YXRlIQogfTsKIAogLy8gQSBSYXcgbm9kZSBzdG9yZXMgcmF3IGNv
ZGUsIHRoYXQgdGhlIHRyYW5zbGF0b3Igd2lsbCBpbnNlcnQgdmVyYmF0aW0KQEAgLTI0NywzMSAr
Mjc1LDQ2IEBACiAgICAgVEludGVybVJhdyhjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmlu
ZyAmcmF3VGV4dCkKICAgICAgICAgOiBUSW50ZXJtVHlwZWQodHlwZSksCiAgICAgICAgICAgbVJh
d1RleHQocmF3VGV4dCkgeyB9CisgICAgVEludGVybVJhdyhjb25zdCBUSW50ZXJtUmF3ICYpID0g
ZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBUSW50ZXJtVHlwZWQgKmRlZXBDb3B5KCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KIAorICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorCiAgICAgVFN0cmluZyBnZXRSYXdUZXh0KCkgY29uc3QgeyByZXR1cm4gbVJh
d1RleHQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICop
OworICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBUSW50ZXJtUmF3ICpnZXRBc1Jhd05vZGUoKSB7IHJldHVybiB0aGlzOyB9Ci0g
ICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKiwgVEludGVybU5v
ZGUgKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBUSW50ZXJtUmF3ICpnZXRBc1Jhd05vZGUoKSBv
dmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRl
cm1Ob2RlICosIFRJbnRlcm1Ob2RlICopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
cHJvdGVjdGVkOgogICAgIFRTdHJpbmcgbVJhd1RleHQ7CiB9OwogCisvLyBDb25zdGFudCBmb2xk
ZWQgbm9kZS4KKy8vIE5vdGUgdGhhdCBub2RlcyBtYXkgYmUgY29uc3RhbnQgZm9sZGVkIGFuZCBu
b3QgYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgd2l0aCB0aGUgRXZxQ29uc3QKKy8vIHF1YWxpZmll
ci4gVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIHdoZW4gdGhlIGZvbGxvd2luZyBleHByZXNzaW9u
IGlzIHByb2Nlc3NlZDoKKy8vICJ0cnVlID8gMS4wIDogbm9uX2NvbnN0YW50IgorLy8gT3RoZXIg
bm9kZXMgdGhhbiBUSW50ZXJtQ29uc3RhbnRVbmlvbiBtYXkgYWxzbyBiZSBjb25zdGFudCBleHBy
ZXNzaW9ucy4KKy8vCiBjbGFzcyBUSW50ZXJtQ29uc3RhbnRVbmlvbiA6IHB1YmxpYyBUSW50ZXJt
VHlwZWQKIHsKICAgcHVibGljOgotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKFRDb25zdGFudFVu
aW9uICp1bmlvblBvaW50ZXIsIGNvbnN0IFRUeXBlICZ0eXBlKQotICAgICAgICA6IFRJbnRlcm1U
eXBlZCh0eXBlKSwKLSAgICAgICAgICBtVW5pb25BcnJheVBvaW50ZXIodW5pb25Qb2ludGVyKSB7
IH0KKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbihjb25zdCBUQ29uc3RhbnRVbmlvbiAqdW5pb25Q
b2ludGVyLCBjb25zdCBUVHlwZSAmdHlwZSkKKyAgICAgICAgOiBUSW50ZXJtVHlwZWQodHlwZSks
IG1VbmlvbkFycmF5UG9pbnRlcih1bmlvblBvaW50ZXIpCisgICAgeworICAgIH0KIAotICAgIHZp
cnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
VEludGVybVR5cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50
ZXJtQ29uc3RhbnRVbmlvbigqdGhpcyk7IH0KIAorICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgY29uc3QgVENvbnN0YW50VW5p
b24gKmdldFVuaW9uQXJyYXlQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbVVuaW9uQXJyYXlQb2lu
dGVyOyB9Ci0gICAgVENvbnN0YW50VW5pb24gKmdldFVuaW9uQXJyYXlQb2ludGVyKCkgeyByZXR1
cm4gbVVuaW9uQXJyYXlQb2ludGVyOyB9CiAKICAgICBpbnQgZ2V0SUNvbnN0KHNpemVfdCBpbmRl
eCkgY29uc3QKICAgICB7CkBAIC0yOTAsMjQgKzMzMywzMyBAQAogICAgICAgICByZXR1cm4gbVVu
aW9uQXJyYXlQb2ludGVyID8gbVVuaW9uQXJyYXlQb2ludGVyW2luZGV4XS5nZXRCQ29uc3QoKSA6
IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgcmVwbGFjZUNvbnN0YW50VW5pb24oVENvbnN0YW50
VW5pb24gKnNhZmVDb25zdGFudFVuaW9uKQorICAgIHZvaWQgcmVwbGFjZUNvbnN0YW50VW5pb24o
Y29uc3QgVENvbnN0YW50VW5pb24gKnNhZmVDb25zdGFudFVuaW9uKQogICAgIHsKICAgICAgICAg
Ly8gUHJldmlvdXMgdW5pb24gcG9pbnRlciBmcmVlZCBvbiBwb29sIGRlYWxsb2NhdGlvbi4KICAg
ICAgICAgbVVuaW9uQXJyYXlQb2ludGVyID0gc2FmZUNvbnN0YW50VW5pb247CiAgICAgfQogCi0g
ICAgdmlydHVhbCBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqZ2V0QXNDb25zdGFudFVuaW9uKCkgIHsg
cmV0dXJuIHRoaXM7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNl
ciAqKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqLCBU
SW50ZXJtTm9kZSAqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICpnZXRBc0NvbnN0YW50VW5pb24oKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisgICAgdm9p
ZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXBs
YWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICosIFRJbnRlcm1Ob2RlICopIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICBUSW50ZXJtVHlwZWQgKmZvbGQoVE9wZXJhdG9yIG9wLCBUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqcmlnaHROb2RlLCBUSW5mb1NpbmsgJmluZm9TaW5rKTsKKyAgICBU
Q29uc3RhbnRVbmlvbiAqZm9sZEJpbmFyeShUT3BlcmF0b3Igb3AsIFRJbnRlcm1Db25zdGFudFVu
aW9uICpyaWdodE5vZGUsIFRJbmZvU2luayAmaW5mb1NpbmspOworICAgIFRDb25zdGFudFVuaW9u
ICpmb2xkVW5hcnlXaXRoRGlmZmVyZW50UmV0dXJuVHlwZShUT3BlcmF0b3Igb3AsIFRJbmZvU2lu
ayAmaW5mb1NpbmspOworICAgIFRDb25zdGFudFVuaW9uICpmb2xkVW5hcnlXaXRoU2FtZVJldHVy
blR5cGUoVE9wZXJhdG9yIG9wLCBUSW5mb1NpbmsgJmluZm9TaW5rKTsKIAorICAgIHN0YXRpYyBU
Q29uc3RhbnRVbmlvbiAqRm9sZEFnZ3JlZ2F0ZUNvbnN0cnVjdG9yKFRJbnRlcm1BZ2dyZWdhdGUg
KmFnZ3JlZ2F0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW5mb1NpbmsgJmluZm9TaW5rKTsKKyAgICBzdGF0aWMgVENvbnN0YW50VW5pb24g
KkZvbGRBZ2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwgVEluZm9T
aW5rICZpbmZvU2luayk7CisKICAgcHJvdGVjdGVkOgotICAgIFRDb25zdGFudFVuaW9uICptVW5p
b25BcnJheVBvaW50ZXI7CisgICAgLy8gU2FtZSBkYXRhIG1heSBiZSBzaGFyZWQgYmV0d2VlbiBt
dWx0aXBsZSBjb25zdGFudCB1bmlvbnMsIHNvIGl0IGNhbid0IGJlIG1vZGlmaWVkLgorICAgIGNv
bnN0IFRDb25zdGFudFVuaW9uICptVW5pb25BcnJheVBvaW50ZXI7CiAKICAgcHJpdmF0ZToKICAg
ICB0eXBlZGVmIGZsb2F0KCpGbG9hdFR5cGVVbmFyeUZ1bmMpIChmbG9hdCk7CiAgICAgYm9vbCBm
b2xkRmxvYXRUeXBlVW5hcnkoY29uc3QgVENvbnN0YW50VW5pb24gJnBhcmFtZXRlciwgRmxvYXRU
eXBlVW5hcnlGdW5jIGJ1aWx0aW5GdW5jLCBUSW5mb1NpbmsgJmluZm9TaW5rLCBUQ29uc3RhbnRV
bmlvbiAqcmVzdWx0KSBjb25zdDsKKworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uKGNvbnN0IFRJ
bnRlcm1Db25zdGFudFVuaW9uICZub2RlKTsgIC8vIE5vdGU6IG5vdCBkZWxldGVkLCBqdXN0IHBy
aXZhdGUhCiB9OwogCiAvLwpAQCAtMzIwLDkgKzM3MiwxMCBAQAogICAgIHZvaWQgc2V0T3AoVE9w
ZXJhdG9yIG9wKSB7IG1PcCA9IG9wOyB9CiAKICAgICBib29sIGlzQXNzaWdubWVudCgpIGNvbnN0
OworICAgIGJvb2wgaXNNdWx0aXBsaWNhdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNDb25zdHJ1
Y3RvcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qg
eyByZXR1cm4gaXNBc3NpZ25tZW50KCk7IH0KKyAgICBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNBc3NpZ25tZW50KCk7IH0KIAogICBwcm90ZWN0ZWQ6CiAg
ICAgVEludGVybU9wZXJhdG9yKFRPcGVyYXRvciBvcCkKQEAgLTMzMiw2ICszODUsOCBAQAogICAg
ICAgICA6IFRJbnRlcm1UeXBlZCh0eXBlKSwKICAgICAgICAgICBtT3Aob3ApIHt9CiAKKyAgICBU
SW50ZXJtT3BlcmF0b3IoY29uc3QgVEludGVybU9wZXJhdG9yICYpID0gZGVmYXVsdDsKKwogICAg
IFRPcGVyYXRvciBtT3A7CiB9OwogCkBAIC0zNDUsMTIgKzQwMCwxMyBAQAogICAgICAgICA6IFRJ
bnRlcm1PcGVyYXRvcihvcCksCiAgICAgICAgICAgbUFkZEluZGV4Q2xhbXAoZmFsc2UpIHt9CiAK
LSAgICB2aXJ0dWFsIFRJbnRlcm1CaW5hcnkgKmdldEFzQmluYXJ5Tm9kZSgpIHsgcmV0dXJuIHRo
aXM7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKLSAgICAgICAgVEludGVybU5vZGUgKm9y
aWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpOworICAgIFRJbnRlcm1UeXBlZCAqZGVl
cENvcHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBuZXcgVEludGVybUJpbmFyeSgqdGhpcyk7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0CisgICAgVEludGVy
bUJpbmFyeSAqZ2V0QXNCaW5hcnlOb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfTsKKyAg
ICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKKyAgICBib29s
IHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVw
bGFjZW1lbnQpIG92ZXJyaWRlOworCisgICAgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gaXNBc3NpZ25tZW50KCkgfHwgbUxlZnQtPmhh
c1NpZGVFZmZlY3RzKCkgfHwgbVJpZ2h0LT5oYXNTaWRlRWZmZWN0cygpOwogICAgIH0KQEAgLTM2
MCw2ICs0MTYsNyBAQAogICAgIFRJbnRlcm1UeXBlZCAqZ2V0TGVmdCgpIGNvbnN0IHsgcmV0dXJu
IG1MZWZ0OyB9CiAgICAgVEludGVybVR5cGVkICpnZXRSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1S
aWdodDsgfQogICAgIGJvb2wgcHJvbW90ZShUSW5mb1NpbmsgJik7CisgICAgVEludGVybVR5cGVk
ICpmb2xkKFRJbmZvU2luayAmaW5mb1NpbmspOwogCiAgICAgdm9pZCBzZXRBZGRJbmRleENsYW1w
KCkgeyBtQWRkSW5kZXhDbGFtcCA9IHRydWU7IH0KICAgICBib29sIGdldEFkZEluZGV4Q2xhbXAo
KSB7IHJldHVybiBtQWRkSW5kZXhDbGFtcDsgfQpAQCAtMzcwLDYgKzQyNyw5IEBACiAKICAgICAv
LyBJZiBzZXQgdG8gdHJ1ZSwgd3JhcCBhbnkgRU9wSW5kZXhJbmRpcmVjdCB3aXRoIGEgY2xhbXAg
dG8gYm91bmRzLgogICAgIGJvb2wgbUFkZEluZGV4Q2xhbXA7CisKKyAgcHJpdmF0ZToKKyAgICBU
SW50ZXJtQmluYXJ5KGNvbnN0IFRJbnRlcm1CaW5hcnkgJm5vZGUpOyAgLy8gTm90ZTogbm90IGRl
bGV0ZWQsIGp1c3QgcHJpdmF0ZSEKIH07CiAKIC8vCkBAIC0zODcsMTkgKzQ0NywxOCBAQAogICAg
ICAgICAgIG1PcGVyYW5kKE5VTEwpLAogICAgICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uKGZh
bHNlKSB7fQogCi0gICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKik7
Ci0gICAgdmlydHVhbCBUSW50ZXJtVW5hcnkgKmdldEFzVW5hcnlOb2RlKCkgeyByZXR1cm4gdGhp
czsgfQotICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICBUSW50ZXJt
Tm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7CisgICAgVEludGVybVR5
cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtVW5hcnko
KnRoaXMpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzQXNzaWdubWVudCgpIHx8IG1PcGVyYW5kLT5oYXNTaWRlRWZm
ZWN0cygpOwotICAgIH0KKyAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBv
dmVycmlkZTsKKyAgICBUSW50ZXJtVW5hcnkgKmdldEFzVW5hcnlOb2RlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gdGhpczsgfQorICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3Jp
Z2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CiAKKyAgICBib29sIGhh
c1NpZGVFZmZlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNBc3NpZ25tZW50KCkgfHwg
bU9wZXJhbmQtPmhhc1NpZGVFZmZlY3RzKCk7IH0KKwogICAgIHZvaWQgc2V0T3BlcmFuZChUSW50
ZXJtVHlwZWQgKm9wZXJhbmQpIHsgbU9wZXJhbmQgPSBvcGVyYW5kOyB9CiAgICAgVEludGVybVR5
cGVkICpnZXRPcGVyYW5kKCkgeyByZXR1cm4gbU9wZXJhbmQ7IH0KICAgICB2b2lkIHByb21vdGUo
Y29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKTsKKyAgICBUSW50ZXJtVHlwZWQgKmZvbGQoVElu
Zm9TaW5rICZpbmZvU2luayk7CiAKICAgICB2b2lkIHNldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7
IG1Vc2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpIHsgcmV0dXJuIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uOyB9CkBAIC00MTAsNiArNDY5
LDkgQEAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUgYnVpbHQtaW4gZnVuY3Rp
b24gY2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdvcmsgYXJvdW5kIGRyaXZl
ciBidWdzLgogICAgIGJvb2wgbVVzZUVtdWxhdGVkRnVuY3Rpb247CisKKyAgcHJpdmF0ZToKKyAg
ICBUSW50ZXJtVW5hcnkoY29uc3QgVEludGVybVVuYXJ5ICZub2RlKTsgIC8vIG5vdGU6IG5vdCBk
ZWxldGVkLCBqdXN0IHByaXZhdGUhCiB9OwogCiB0eXBlZGVmIFRWZWN0b3I8VEludGVybU5vZGUg
Kj4gVEludGVybVNlcXVlbmNlOwpAQCAtNDI0LDU2ICs0ODYsNjggQEAKICAgICBUSW50ZXJtQWdn
cmVnYXRlKCkKICAgICAgICAgOiBUSW50ZXJtT3BlcmF0b3IoRU9wTnVsbCksCiAgICAgICAgICAg
bVVzZXJEZWZpbmVkKGZhbHNlKSwKLSAgICAgICAgICBtVXNlRW11bGF0ZWRGdW5jdGlvbihmYWxz
ZSkgeyB9CisgICAgICAgICAgbVVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpLAorICAgICAgICAg
IG1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oZmFsc2UpCisgICAgeworICAgIH0KICAgICBUSW50
ZXJtQWdncmVnYXRlKFRPcGVyYXRvciBvcCkKICAgICAgICAgOiBUSW50ZXJtT3BlcmF0b3Iob3Ap
LAotICAgICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSB7IH0KKyAgICAgICAgICBt
VXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSksCisgICAgICAgICAgbUdvdFByZWNpc2lvbkZyb21D
aGlsZHJlbihmYWxzZSkKKyAgICB7CisgICAgfQogICAgIH5USW50ZXJtQWdncmVnYXRlKCkgeyB9
CiAKLSAgICB2aXJ0dWFsIFRJbnRlcm1BZ2dyZWdhdGUgKmdldEFzQWdncmVnYXRlKCkgeyByZXR1
cm4gdGhpczsgfQotICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICop
OwotICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICBUSW50ZXJtTm9k
ZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7CisgICAgLy8gTm90ZTogb25s
eSBzdXBwb3J0ZWQgZm9yIG5vZGVzIHRoYXQgY2FuIGJlIGEgcGFydCBvZiBhbiBleHByZXNzaW9u
LgorICAgIFRJbnRlcm1UeXBlZCAqZGVlcENvcHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBu
ZXcgVEludGVybUFnZ3JlZ2F0ZSgqdGhpcyk7IH0KKworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmdl
dEFzQWdncmVnYXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQorICAgIHZvaWQgdHJhdmVy
c2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJyaWRlOworICAgIGJvb2wgcmVwbGFjZUNoaWxk
Tm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlV2l0aE11bHRpcGxlKFRJbnRlcm1Ob2Rl
ICpvcmlnaW5hbCwgVEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50cyk7CisgICAgYm9vbCBpbnNl
cnRDaGlsZE5vZGVzKFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvc2l0aW9uLCBUSW50ZXJt
U2VxdWVuY2UgaW5zZXJ0aW9ucyk7CiAgICAgLy8gQ29uc2VydmF0aXZlbHkgYXNzdW1lIGZ1bmN0
aW9uIGNhbGxzIGFuZCBvdGhlciBhZ2dyZWdhdGUgb3BlcmF0b3JzIGhhdmUgc2lkZS1lZmZlY3Rz
Ci0gICAgdmlydHVhbCBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgVEludGVybVR5cGVkICpmb2xkKFRJbmZvU2luayAmaW5mb1NpbmspOwogCiAgICAg
VEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIHsgcmV0dXJuICZtU2VxdWVuY2U7IH0KIAot
ICAgIHZvaWQgc2V0TmFtZShjb25zdCBUU3RyaW5nICZuYW1lKSB7IG1OYW1lID0gbmFtZTsgfQot
ICAgIGNvbnN0IFRTdHJpbmcgJmdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtTmFtZTsgfQorICAg
IHZvaWQgc2V0TmFtZU9iaihjb25zdCBUTmFtZSAmbmFtZSkgeyBtTmFtZSA9IG5hbWU7IH0KKyAg
ICBjb25zdCBUTmFtZSAmZ2V0TmFtZU9iaigpIGNvbnN0IHsgcmV0dXJuIG1OYW1lOyB9CiAKKyAg
ICB2b2lkIHNldE5hbWUoY29uc3QgVFN0cmluZyAmbmFtZSkgeyBtTmFtZS5zZXRTdHJpbmcobmFt
ZSk7IH0KKyAgICBjb25zdCBUU3RyaW5nICZnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbU5hbWUu
Z2V0U3RyaW5nKCk7IH0KKwogICAgIHZvaWQgc2V0VXNlckRlZmluZWQoKSB7IG1Vc2VyRGVmaW5l
ZCA9IHRydWU7IH0KICAgICBib29sIGlzVXNlckRlZmluZWQoKSBjb25zdCB7IHJldHVybiBtVXNl
ckRlZmluZWQ7IH0KIAotICAgIHZvaWQgc2V0T3B0aW1pemUoYm9vbCBvcHRpbWl6ZSkgeyBtT3B0
aW1pemUgPSBvcHRpbWl6ZTsgfQotICAgIGJvb2wgZ2V0T3B0aW1pemUoKSBjb25zdCB7IHJldHVy
biBtT3B0aW1pemU7IH0KLSAgICB2b2lkIHNldERlYnVnKGJvb2wgZGVidWcpIHsgbURlYnVnID0g
ZGVidWc7IH0KLSAgICBib29sIGdldERlYnVnKCkgY29uc3QgeyByZXR1cm4gbURlYnVnOyB9Ci0K
ICAgICB2b2lkIHNldEZ1bmN0aW9uSWQoaW50IGZ1bmN0aW9uSWQpIHsgbUZ1bmN0aW9uSWQgPSBm
dW5jdGlvbklkOyB9CiAgICAgaW50IGdldEZ1bmN0aW9uSWQoKSBjb25zdCB7IHJldHVybiBtRnVu
Y3Rpb25JZDsgfQogCiAgICAgdm9pZCBzZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyBtVXNlRW11
bGF0ZWRGdW5jdGlvbiA9IHRydWU7IH0KICAgICBib29sIGdldFVzZUVtdWxhdGVkRnVuY3Rpb24o
KSB7IHJldHVybiBtVXNlRW11bGF0ZWRGdW5jdGlvbjsgfQogCisgICAgYm9vbCBhcmVDaGlsZHJl
bkNvbnN0UXVhbGlmaWVkKCk7CiAgICAgdm9pZCBzZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKTsK
ICAgICB2b2lkIHNldEJ1aWx0SW5GdW5jdGlvblByZWNpc2lvbigpOwogCisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGNoYW5naW5nIHBhcmFtZXRlciBwcmVjaXNpb24gbWF5IGFmZmVjdCB0aGUgcmV0
dXJuIHZhbHVlLgorICAgIGJvb2wgZ290UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gbUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbjsgfQorCiAgIHByb3RlY3RlZDoKLSAgICBU
SW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgJik7IC8vIGRpc2FsbG93IGNv
cHkgY29uc3RydWN0b3IKLSAgICBUSW50ZXJtQWdncmVnYXRlICZvcGVyYXRvcj0oY29uc3QgVElu
dGVybUFnZ3JlZ2F0ZSAmKTsgLy8gZGlzYWxsb3cgYXNzaWdubWVudCBvcGVyYXRvcgogICAgIFRJ
bnRlcm1TZXF1ZW5jZSBtU2VxdWVuY2U7Ci0gICAgVFN0cmluZyBtTmFtZTsKKyAgICBUTmFtZSBt
TmFtZTsKICAgICBib29sIG1Vc2VyRGVmaW5lZDsgLy8gdXNlZCBmb3IgdXNlciBkZWZpbmVkIGZ1
bmN0aW9uIG5hbWVzCiAgICAgaW50IG1GdW5jdGlvbklkOwogCi0gICAgYm9vbCBtT3B0aW1pemU7
Ci0gICAgYm9vbCBtRGVidWc7Ci0KICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgcmVwbGFjZSB0aGUg
YnVpbHQtaW4gZnVuY3Rpb24gY2FsbCB3aXRoIGFuIGVtdWxhdGVkIG9uZQogICAgIC8vIHRvIHdv
cmsgYXJvdW5kIGRyaXZlciBidWdzLgogICAgIGJvb2wgbVVzZUVtdWxhdGVkRnVuY3Rpb247CisK
KyAgICBib29sIG1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW47CisKKyAgcHJpdmF0ZToKKyAgICBU
SW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgJm5vZGUpOyAgLy8gbm90ZTog
bm90IGRlbGV0ZWQsIGp1c3QgcHJpdmF0ZSEKIH07CiAKIC8vCkBAIC00OTQsMjMgKzU2OCwyOCBA
QAogICAgICAgICAgIG1UcnVlQmxvY2sodHJ1ZUIpLAogICAgICAgICAgIG1GYWxzZUJsb2NrKGZh
bHNlQikge30KIAotICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICop
OwotICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICBUSW50ZXJtTm9k
ZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCk7CisgICAgLy8gTm90ZTogb25s
eSBzdXBwb3J0ZWQgZm9yIHRlcm5hcnkgb3BlcmF0b3Igbm9kZXMuCisgICAgVEludGVybVR5cGVk
ICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtU2VsZWN0aW9u
KCp0aGlzKTsgfQogCisgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3Zl
cnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwg
VEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsKKwogICAgIC8vIENvbnNlcnZhdGl2
ZWx5IGFzc3VtZSBzZWxlY3Rpb25zIGhhdmUgc2lkZS1lZmZlY3RzCi0gICAgdmlydHVhbCBib29s
IGhhc1NpZGVFZmZlY3RzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzU2lk
ZUVmZmVjdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIHVz
ZXNUZXJuYXJ5T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBnZXRCYXNpY1R5cGUoKSAhPSBFYnRW
b2lkOyB9CiAgICAgVEludGVybU5vZGUgKmdldENvbmRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1D
b25kaXRpb247IH0KICAgICBUSW50ZXJtTm9kZSAqZ2V0VHJ1ZUJsb2NrKCkgY29uc3QgeyByZXR1
cm4gbVRydWVCbG9jazsgfQogICAgIFRJbnRlcm1Ob2RlICpnZXRGYWxzZUJsb2NrKCkgY29uc3Qg
eyByZXR1cm4gbUZhbHNlQmxvY2s7IH0KLSAgICBUSW50ZXJtU2VsZWN0aW9uICpnZXRBc1NlbGVj
dGlvbk5vZGUoKSB7IHJldHVybiB0aGlzOyB9CisgICAgVEludGVybVNlbGVjdGlvbiAqZ2V0QXNT
ZWxlY3Rpb25Ob2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogCi1wcm90ZWN0ZWQ6Cisg
IHByb3RlY3RlZDoKICAgICBUSW50ZXJtVHlwZWQgKm1Db25kaXRpb247CiAgICAgVEludGVybU5v
ZGUgKm1UcnVlQmxvY2s7CiAgICAgVEludGVybU5vZGUgKm1GYWxzZUJsb2NrOworCisgIHByaXZh
dGU6CisgICAgVEludGVybVNlbGVjdGlvbihjb25zdCBUSW50ZXJtU2VsZWN0aW9uICZub2RlKTsg
IC8vIE5vdGU6IG5vdCBkZWxldGVkLCBqdXN0IHByaXZhdGUhCiB9OwogCiAvLwpAQCAtNTMyLDYg
KzYxMSw3IEBACiAKICAgICBUSW50ZXJtU3dpdGNoICpnZXRBc1N3aXRjaE5vZGUoKSBvdmVycmlk
ZSB7IHJldHVybiB0aGlzOyB9CiAKKyAgICBUSW50ZXJtVHlwZWQgKmdldEluaXQoKSB7IHJldHVy
biBtSW5pdDsgfQogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmdldFN0YXRlbWVudExpc3QoKSB7IHJl
dHVybiBtU3RhdGVtZW50TGlzdDsgfQogICAgIHZvaWQgc2V0U3RhdGVtZW50TGlzdChUSW50ZXJt
QWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0KSB7IG1TdGF0ZW1lbnRMaXN0ID0gc3RhdGVtZW50TGlz
dDsgfQogCkBAIC01NzMsMTAgKzY1MywxMyBAQAogfTsKIAogLy8KLS8vIEZvciB0cmF2ZXJzaW5n
IHRoZSB0cmVlLiAgVXNlciBzaG91bGQgZGVyaXZlIGZyb20gdGhpcywKLS8vIHB1dCB0aGVpciB0
cmF2ZXJzYWwgc3BlY2lmaWMgZGF0YSBpbiBpdCwgYW5kIHRoZW4gcGFzcwotLy8gaXQgdG8gYSBU
cmF2ZXJzZSBtZXRob2QuCisvLyBGb3IgdHJhdmVyc2luZyB0aGUgdHJlZS4gIFVzZXIgc2hvdWxk
IGRlcml2ZSBmcm9tIHRoaXMgY2xhc3Mgb3ZlcnJpZGluZyB0aGUgdmlzaXQgZnVuY3Rpb25zLAor
Ly8gYW5kIHRoZW4gcGFzcyBhbiBvYmplY3Qgb2YgdGhlIHN1YmNsYXNzIHRvIGEgdHJhdmVyc2Ug
bWV0aG9kIG9mIGEgbm9kZS4KIC8vCisvLyBUaGUgdHJhdmVyc2UqKCkgZnVuY3Rpb25zIG1heSBh
bHNvIGJlIG92ZXJyaWRkZW4gZG8gb3RoZXIgYm9va2tlZXBpbmcgb24gdGhlIHRyZWUgdG8gcHJv
dmlkZQorLy8gY29udGV4dHVhbCBpbmZvcm1hdGlvbiB0byB0aGUgdmlzaXQgZnVuY3Rpb25zLCBz
dWNoIGFzIHdoZXRoZXIgdGhlIG5vZGUgaXMgdGhlIHRhcmdldCBvZiBhbgorLy8gYXNzaWdubWVu
dC4KKy8vCiAvLyBXaGVuIHVzaW5nIHRoaXMsIGp1c3QgZmlsbCBpbiB0aGUgbWV0aG9kcyBmb3Ig
bm9kZXMgeW91IHdhbnQgdmlzaXRlZC4KIC8vIFJldHVybiBmYWxzZSBmcm9tIGEgcHJlLXZpc2l0
IHRvIHNraXAgdmlzaXRpbmcgdGhhdCBub2RlJ3Mgc3VidHJlZS4KIC8vCkBAIC01ODQsMzEgKzY2
Nyw1OSBAQAogewogICBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwot
ICAgIC8vIFRPRE8oem1vKTogcmVtb3ZlIGRlZmF1bHQgdmFsdWVzLgotICAgIFRJbnRlcm1UcmF2
ZXJzZXIoYm9vbCBwcmVWaXNpdCA9IHRydWUsIGJvb2wgaW5WaXNpdCA9IGZhbHNlLCBib29sIHBv
c3RWaXNpdCA9IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgYm9vbCByaWdodFRvTGVmdCA9
IGZhbHNlKQorICAgIFRJbnRlcm1UcmF2ZXJzZXIoYm9vbCBwcmVWaXNpdCwgYm9vbCBpblZpc2l0
LCBib29sIHBvc3RWaXNpdCkKICAgICAgICAgOiBwcmVWaXNpdChwcmVWaXNpdCksCiAgICAgICAg
ICAgaW5WaXNpdChpblZpc2l0KSwKICAgICAgICAgICBwb3N0VmlzaXQocG9zdFZpc2l0KSwKLSAg
ICAgICAgICByaWdodFRvTGVmdChyaWdodFRvTGVmdCksCiAgICAgICAgICAgbURlcHRoKDApLAot
ICAgICAgICAgIG1NYXhEZXB0aCgwKSB7fQorICAgICAgICAgIG1NYXhEZXB0aCgwKSwKKyAgICAg
ICAgICBtVGVtcG9yYXJ5SW5kZXgobnVsbHB0cikKKyAgICB7CisgICAgfQogICAgIHZpcnR1YWwg
flRJbnRlcm1UcmF2ZXJzZXIoKSB7fQogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wgKikge30KLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyAq
KSB7fQotICAgIHZpcnR1YWwgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50
VW5pb24gKikge30KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1C
aW5hcnkgKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2aXNpdFVuYXJ5KFZp
c2l0LCBUSW50ZXJtVW5hcnkgKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCB2
aXNpdFNlbGVjdGlvbihWaXNpdCwgVEludGVybVNlbGVjdGlvbiAqKSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCBib29sIHZpc2l0U3dpdGNoKFZpc2l0LCBUSW50ZXJtU3dpdGNoICopIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRDYXNlKFZpc2l0LCBUSW50ZXJt
Q2FzZSAqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRl
KFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCAqKSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICopIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAq
bm9kZSkge30KKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyAqbm9kZSkge30K
KyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9u
ICpub2RlKSB7fQorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVElu
dGVybUJpbmFyeSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNp
dFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxl
Y3Rpb24gKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTd2l0
Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2
aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSB7IHJldHVy
biB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQnJhbmNoICpub2RlKSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICAvLyBUaGUgdHJhdmVyc2Ug
ZnVuY3Rpb25zIGNvbnRhaW4gbG9naWMgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZSBjaGlsZHJlbiBv
ZiB0aGUgbm9kZQorICAgIC8vIGFuZCBjYWxsaW5nIHRoZSB2aXNpdCBmdW5jdGlvbnMgaW4gdGhl
IGFwcHJvcHJpYXRlIHBsYWNlcy4gVGhleSBhbHNvIHRyYWNrIHNvbWUKKyAgICAvLyBjb250ZXh0
IHRoYXQgbWF5IGJlIHVzZWQgYnkgdGhlIHZpc2l0IGZ1bmN0aW9ucy4KKyAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2VTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSk7CisgICAgdmlydHVhbCB2b2lk
IHRyYXZlcnNlUmF3KFRJbnRlcm1SYXcgKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJz
ZUNvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpOworICAgIHZpcnR1YWwg
dm9pZCB0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2VVbmFyeShUSW50ZXJtVW5hcnkgKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0
cmF2ZXJzZVNlbGVjdGlvbihUSW50ZXJtU2VsZWN0aW9uICpub2RlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2VTd2l0Y2goVEludGVybVN3aXRjaCAqbm9kZSk7CisgICAgdmlydHVhbCB2b2lk
IHRyYXZlcnNlQ2FzZShUSW50ZXJtQ2FzZSAqbm9kZSk7CisgICAgdmlydHVhbCB2b2lkIHRyYXZl
cnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0
cmF2ZXJzZUxvb3AoVEludGVybUxvb3AgKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJz
ZUJyYW5jaChUSW50ZXJtQnJhbmNoICpub2RlKTsKKwogICAgIGludCBnZXRNYXhEZXB0aCgpIGNv
bnN0IHsgcmV0dXJuIG1NYXhEZXB0aDsgfQogCisgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBu
YW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMOworICAgIC8vIG90aGVyd2lzZSBy
ZXR1cm4gdGhlIGhhc2hlZCBuYW1lLgorICAgIHN0YXRpYyBUU3RyaW5nIGhhc2goY29uc3QgVFN0
cmluZyAmbmFtZSwgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24pOworCisgICAgLy8gSWYg
dHJhdmVyc2VycyBuZWVkIHRvIHJlcGxhY2Ugbm9kZXMsIHRoZXkgY2FuIGFkZCB0aGUgcmVwbGFj
ZW1lbnRzIGluCisgICAgLy8gbVJlcGxhY2VtZW50cy9tTXVsdGlSZXBsYWNlbWVudHMgZHVyaW5n
IHRyYXZlcnNhbCBhbmQgdGhlIHVzZXIgb2YgdGhlIHRyYXZlcnNlciBzaG91bGQgY2FsbAorICAg
IC8vIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdHJhdmVyc2FsIHRvIHBlcmZvcm0gdGhlbS4KKyAgICB2
b2lkIHVwZGF0ZVRyZWUoKTsKKworICAgIC8vIFN0YXJ0IGNyZWF0aW5nIHRlbXBvcmFyeSBzeW1i
b2xzIGZyb20gdGhlIGdpdmVuIHRlbXBvcmFyeSBzeW1ib2wgaW5kZXggKyAxLgorICAgIHZvaWQg
dXNlVGVtcG9yYXJ5SW5kZXgodW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCk7CisKKyAgcHJv
dGVjdGVkOgogICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoVEludGVybU5vZGUgKmN1cnJlbnQpCiAg
ICAgewogICAgICAgICBtRGVwdGgrKzsKQEAgLTYyNywyMSArNzM4LDI5IEBACiAgICAgICAgIHJl
dHVybiBtUGF0aC5zaXplKCkgPT0gMCA/IE5VTEwgOiBtUGF0aC5iYWNrKCk7CiAgICAgfQogCi0g
ICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBp
cyBOVUxMOwotICAgIC8vIG90aGVyd2lzZSByZXR1cm4gdGhlIGhhc2hlZCBuYW1lLgotICAgIHN0
YXRpYyBUU3RyaW5nIGhhc2goY29uc3QgVFN0cmluZyYgbmFtZSwgU2hIYXNoRnVuY3Rpb242NCBo
YXNoRnVuY3Rpb24pOworICAgIC8vIFJldHVybiB0aGUgbnRoIGFuY2VzdG9yIG9mIHRoZSBub2Rl
IGJlaW5nIHRyYXZlcnNlZC4gZ2V0QW5jZXN0b3JOb2RlKDApID09IGdldFBhcmVudE5vZGUoKQor
ICAgIFRJbnRlcm1Ob2RlICpnZXRBbmNlc3Rvck5vZGUodW5zaWduZWQgaW50IG4pCisgICAgewor
ICAgICAgICBpZiAobVBhdGguc2l6ZSgpID4gbikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1QYXRoW21QYXRoLnNpemUoKSAtIG4gLSAxdV07CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQogCisgICAgdm9pZCBwdXNoUGFyZW50QmxvY2soVEludGVybUFn
Z3JlZ2F0ZSAqbm9kZSk7CisgICAgdm9pZCBpbmNyZW1lbnRQYXJlbnRCbG9ja1BvcygpOworICAg
IHZvaWQgcG9wUGFyZW50QmxvY2soKTsKKworICAgIGJvb2wgcGFyZW50Tm9kZUlzQmxvY2soKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICFtUGFyZW50QmxvY2tTdGFjay5lbXB0eSgpICYmIGdldFBh
cmVudE5vZGUoKSA9PSBtUGFyZW50QmxvY2tTdGFjay5iYWNrKCkubm9kZTsKKyAgICB9CisKICAg
ICBjb25zdCBib29sIHByZVZpc2l0OwogICAgIGNvbnN0IGJvb2wgaW5WaXNpdDsKICAgICBjb25z
dCBib29sIHBvc3RWaXNpdDsKLSAgICBjb25zdCBib29sIHJpZ2h0VG9MZWZ0OwogCi0gICAgLy8g
SWYgdHJhdmVyc2VycyBuZWVkIHRvIHJlcGxhY2Ugbm9kZXMsIHRoZXkgY2FuIGFkZCB0aGUgcmVw
bGFjZW1lbnRzIGluCi0gICAgLy8gbVJlcGxhY2VtZW50cy9tTXVsdGlSZXBsYWNlbWVudHMgZHVy
aW5nIHRyYXZlcnNhbCBhbmQgdGhlIHVzZXIgb2YgdGhlIHRyYXZlcnNlciBzaG91bGQgY2FsbAot
ICAgIC8vIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdHJhdmVyc2FsIHRvIHBlcmZvcm0gdGhlbS4KLSAg
ICB2b2lkIHVwZGF0ZVRyZWUoKTsKLQotICBwcm90ZWN0ZWQ6CiAgICAgaW50IG1EZXB0aDsKICAg
ICBpbnQgbU1heERlcHRoOwogCkBAIC02ODEsMTMgKzgwMCwxNTMgQEAKICAgICAgICAgVEludGVy
bVNlcXVlbmNlIHJlcGxhY2VtZW50czsKICAgICB9OwogCisgICAgLy8gVG8gaW5zZXJ0IG11bHRp
cGxlIG5vZGVzIG9uIHRoZSBwYXJlbnQgYWdncmVnYXRlIG5vZGUKKyAgICBzdHJ1Y3QgTm9kZUlu
c2VydE11bHRpcGxlRW50cnkKKyAgICB7CisgICAgICAgIE5vZGVJbnNlcnRNdWx0aXBsZUVudHJ5
KFRJbnRlcm1BZ2dyZWdhdGUgKl9wYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIF9wb3NpdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIF9pbnNlcnRpb25zQmVmb3JlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgX2luc2VydGlvbnNB
ZnRlcikKKyAgICAgICAgICAgIDogcGFyZW50KF9wYXJlbnQpLAorICAgICAgICAgICAgICBwb3Np
dGlvbihfcG9zaXRpb24pLAorICAgICAgICAgICAgICBpbnNlcnRpb25zQmVmb3JlKF9pbnNlcnRp
b25zQmVmb3JlKSwKKyAgICAgICAgICAgICAgaW5zZXJ0aW9uc0FmdGVyKF9pbnNlcnRpb25zQWZ0
ZXIpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBh
cmVudDsKKyAgICAgICAgVEludGVybVNlcXVlbmNlOjpzaXplX3R5cGUgcG9zaXRpb247CisgICAg
ICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zQmVmb3JlOworICAgICAgICBUSW50ZXJtU2Vx
dWVuY2UgaW5zZXJ0aW9uc0FmdGVyOworICAgIH07CisKICAgICAvLyBEdXJpbmcgdHJhdmVyc2lu
Zywgc2F2ZSBhbGwgdGhlIGNoYW5nZXMgdGhhdCBuZWVkIHRvIGhhcHBlbiBpbnRvCiAgICAgLy8g
bVJlcGxhY2VtZW50cy9tTXVsdGlSZXBsYWNlbWVudHMsIHRoZW4gZG8gdGhlbSBieSBjYWxsaW5n
IHVwZGF0ZVRyZWUoKS4KICAgICAvLyBNdWx0aSByZXBsYWNlbWVudHMgYXJlIHByb2Nlc3NlZCBh
ZnRlciBzaW5nbGUgcmVwbGFjZW1lbnRzLgogICAgIHN0ZDo6dmVjdG9yPE5vZGVVcGRhdGVFbnRy
eT4gbVJlcGxhY2VtZW50czsKICAgICBzdGQ6OnZlY3RvcjxOb2RlUmVwbGFjZVdpdGhNdWx0aXBs
ZUVudHJ5PiBtTXVsdGlSZXBsYWNlbWVudHM7CisgICAgc3RkOjp2ZWN0b3I8Tm9kZUluc2VydE11
bHRpcGxlRW50cnk+IG1JbnNlcnRpb25zOworCisgICAgLy8gSGVscGVyIHRvIGluc2VydCBzdGF0
ZW1lbnRzIGluIHRoZSBwYXJlbnQgYmxvY2sgKHNlcXVlbmNlKSBvZiB0aGUgbm9kZSBjdXJyZW50
bHkgYmVpbmcgdHJhdmVyc2VkLgorICAgIC8vIFRoZSBzdGF0ZW1lbnRzIHdpbGwgYmUgaW5zZXJ0
ZWQgYmVmb3JlIHRoZSBub2RlIGJlaW5nIHRyYXZlcnNlZCBvbmNlIHVwZGF0ZVRyZWUgaXMgY2Fs
bGVkLgorICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgUHJlVmlzaXQgb3IgUG9z
dFZpc2l0IGZyb20gc2VxdWVuY2Ugbm9kZXMuCisgICAgLy8gTm90ZSB0aGF0IGluc2VydGluZyBt
b3JlIHRoYW4gb25lIHNldCBvZiBub2RlcyB0byB0aGUgc2FtZSBwYXJlbnQgbm9kZSBvbiBhIHNp
bmdsZSB1cGRhdGVUcmVlIGNhbGwgaXMgbm90CisgICAgLy8gc3VwcG9ydGVkLgorICAgIHZvaWQg
aW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soY29uc3QgVEludGVybVNlcXVlbmNlICZpbnNl
cnRpb25zKTsKKworICAgIC8vIFNhbWUgYXMgYWJvdmUsIGJ1dCBzdXBwb3J0cyBzaW11bHRhbmVv
dXMgaW5zZXJ0aW9uIG9mIHN0YXRlbWVudHMgYmVmb3JlIGFuZCBhZnRlciB0aGUgbm9kZQorICAg
IC8vIGN1cnJlbnRseSBiZWluZyB0cmF2ZXJzZWQuCisgICAgdm9pZCBpbnNlcnRTdGF0ZW1lbnRz
SW5QYXJlbnRCbG9jayhjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlvbnNCZWZvcmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVu
Y2UgJmluc2VydGlvbnNBZnRlcik7CisKKyAgICAvLyBIZWxwZXIgdG8gY3JlYXRlIGEgdGVtcG9y
YXJ5IHN5bWJvbCBub2RlIHdpdGggdGhlIGdpdmVuIHF1YWxpZmllci4KKyAgICBUSW50ZXJtU3lt
Ym9sICpjcmVhdGVUZW1wU3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlLCBUUXVhbGlmaWVyIHF1YWxp
Zmllcik7CisgICAgLy8gSGVscGVyIHRvIGNyZWF0ZSBhIHRlbXBvcmFyeSBzeW1ib2wgbm9kZS4K
KyAgICBUSW50ZXJtU3ltYm9sICpjcmVhdGVUZW1wU3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKTsK
KyAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQgZGVjbGFyZXMgYnV0IGRvZXNuJ3QgaW5pdGlhbGl6
ZSBhIHRlbXBvcmFyeSBzeW1ib2wuCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY3JlYXRlVGVtcERl
Y2xhcmF0aW9uKGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQg
aW5pdGlhbGl6ZXMgdGhlIGN1cnJlbnQgdGVtcG9yYXJ5IHN5bWJvbCB3aXRoIGluaXRpYWxpemVy
IGhhdmluZyB0aGUgZ2l2ZW4gcXVhbGlmaWVyLgorICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0
ZVRlbXBJbml0RGVjbGFyYXRpb24oVEludGVybVR5cGVkICppbml0aWFsaXplciwgVFF1YWxpZmll
ciBxdWFsaWZpZXIpOworICAgIC8vIENyZWF0ZSBhIG5vZGUgdGhhdCBpbml0aWFsaXplcyB0aGUg
Y3VycmVudCB0ZW1wb3Jhcnkgc3ltYm9sIHdpdGggaW5pdGlhbGl6ZXIuCisgICAgVEludGVybUFn
Z3JlZ2F0ZSAqY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihUSW50ZXJtVHlwZWQgKmluaXRpYWxp
emVyKTsKKyAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQgYXNzaWducyByaWdodE5vZGUgdG8gdGhl
IGN1cnJlbnQgdGVtcG9yYXJ5IHN5bWJvbC4KKyAgICBUSW50ZXJtQmluYXJ5ICpjcmVhdGVUZW1w
QXNzaWdubWVudChUSW50ZXJtVHlwZWQgKnJpZ2h0Tm9kZSk7CisgICAgLy8gSW5jcmVtZW50IHRl
bXBvcmFyeSBzeW1ib2wgaW5kZXguCisgICAgdm9pZCBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKwor
ICBwcml2YXRlOgorICAgIHN0cnVjdCBQYXJlbnRCbG9jaworICAgIHsKKyAgICAgICAgUGFyZW50
QmxvY2soVEludGVybUFnZ3JlZ2F0ZSAqbm9kZUluLCBUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlw
ZSBwb3NJbikKKyAgICAgICAgICAgIDogbm9kZShub2RlSW4pLAorICAgICAgICAgICAgICBwb3Mo
cG9zSW4pCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUg
Km5vZGU7CisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90eXBlIHBvczsKKyAgICB9Owor
ICAgIC8vIEFsbCB0aGUgY29kZSBibG9ja3MgZnJvbSB0aGUgcm9vdCB0byB0aGUgY3VycmVudCBu
b2RlJ3MgcGFyZW50IGR1cmluZyB0cmF2ZXJzYWwuCisgICAgc3RkOjp2ZWN0b3I8UGFyZW50Qmxv
Y2s+IG1QYXJlbnRCbG9ja1N0YWNrOworCisgICAgdW5zaWduZWQgaW50ICptVGVtcG9yYXJ5SW5k
ZXg7CiB9OwogCisvLyBUcmF2ZXJzZXIgcGFyZW50IGNsYXNzIHRoYXQgdHJhY2tzIHdoZXJlIGEg
bm9kZSBpcyBhIGRlc3RpbmF0aW9uIG9mIGEgd3JpdGUgb3BlcmF0aW9uIGFuZCBzbyBpcworLy8g
cmVxdWlyZWQgdG8gYmUgYW4gbC12YWx1ZS4KK2NsYXNzIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNl
ciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBUTFZhbHVlVHJh
Y2tpbmdUcmF2ZXJzZXIoYm9vbCBwcmVWaXNpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpblZpc2l0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBvc3RW
aXNpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZz
eW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNp
b24pCisgICAgICAgIDogVEludGVybVRyYXZlcnNlcihwcmVWaXNpdCwgaW5WaXNpdCwgcG9zdFZp
c2l0KSwKKyAgICAgICAgICBtT3BlcmF0b3JSZXF1aXJlc0xWYWx1ZShmYWxzZSksCisgICAgICAg
ICAgbUluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyKGZhbHNlKSwKKyAgICAgICAgICBtU3ltYm9s
VGFibGUoc3ltYm9sVGFibGUpLAorICAgICAgICAgIG1TaGFkZXJWZXJzaW9uKHNoYWRlclZlcnNp
b24pCisgICAgeworICAgIH0KKyAgICB2aXJ0dWFsIH5UTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIo
KSB7fQorCisgICAgdm9pZCB0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHRyYXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92
ZXJyaWRlOworCisgIHByb3RlY3RlZDoKKyAgICBib29sIGlzTFZhbHVlUmVxdWlyZWRIZXJlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtT3BlcmF0b3JSZXF1aXJlc0xWYWx1ZSB8fCBt
SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXI7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRydWUg
aWYgdGhlIHByb3RvdHlwZSBvciBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxs
ZWQgaGFzIGJlZW4gZW5jb3VudGVyZWQKKyAgICAvLyBkdXJpbmcgdHJhdmVyc2FsLgorICAgIGJv
b2wgaXNJbkZ1bmN0aW9uTWFwKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxOb2RlKSBjb25z
dDsKKworICBwcml2YXRlOgorICAgIC8vIFRyYWNrIHdoZXRoZXIgYW4gbC12YWx1ZSBpcyByZXF1
aXJlZCBpbiB0aGUgbm9kZSB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyB0cmF2ZXJzZWQgYnkgdGhl
CisgICAgLy8gc3Vycm91bmRpbmcgb3BlcmF0b3IuCisgICAgLy8gVXNlIGlzTFZhbHVlUmVxdWly
ZWRIZXJlIHRvIGNoZWNrIGFsbCBjb25kaXRpb25zIHdoaWNoIHJlcXVpcmUgYW4gbC12YWx1ZS4K
KyAgICB2b2lkIHNldE9wZXJhdG9yUmVxdWlyZXNMVmFsdWUoYm9vbCBsVmFsdWVSZXF1aXJlZCkK
KyAgICB7CisgICAgICAgIG1PcGVyYXRvclJlcXVpcmVzTFZhbHVlID0gbFZhbHVlUmVxdWlyZWQ7
CisgICAgfQorICAgIGJvb2wgb3BlcmF0b3JSZXF1aXJlc0xWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1PcGVyYXRvclJlcXVpcmVzTFZhbHVlOyB9CisKKyAgICAvLyBBZGQgYSBmdW5jdGlvbiBlbmNv
dW50ZXJlZCBkdXJpbmcgdHJhdmVyc2FsIHRvIHRoZSBmdW5jdGlvbiBtYXAuCisgICAgdm9pZCBh
ZGRUb0Z1bmN0aW9uTWFwKGNvbnN0IFROYW1lICZuYW1lLCBUSW50ZXJtU2VxdWVuY2UgKnBhcmFt
U2VxdWVuY2UpOworCisgICAgLy8gUmV0dXJuIHRoZSBwYXJhbWV0ZXJzIHNlcXVlbmNlIGZyb20g
dGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgcHJvdG90eXBlLgorICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxOb2Rl
KTsKKworICAgIC8vIFRyYWNrIHdoZXRoZXIgYW4gbC12YWx1ZSBpcyByZXF1aXJlZCBpbnNpZGUg
YSBmdW5jdGlvbiBjYWxsLgorICAgIHZvaWQgc2V0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIo
Ym9vbCBpbk91dFBhcmFtZXRlcik7CisgICAgYm9vbCBpc0luRnVuY3Rpb25DYWxsT3V0UGFyYW1l
dGVyKCkgY29uc3Q7CisKKyAgICBib29sIG1PcGVyYXRvclJlcXVpcmVzTFZhbHVlOworICAgIGJv
b2wgbUluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyOworCisgICAgc3RydWN0IFROYW1lQ29tcGFy
YXRvcgorICAgIHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFROYW1lICZhLCBjb25z
dCBUTmFtZSAmYikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGNvbXBhcmVSZXN1
bHQgPSBhLmdldFN0cmluZygpLmNvbXBhcmUoYi5nZXRTdHJpbmcoKSk7CisgICAgICAgICAgICBp
ZiAoY29tcGFyZVJlc3VsdCAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wYXJlUmVz
dWx0IDwgMDsKKyAgICAgICAgICAgIC8vIEludGVybmFsIGZ1bmN0aW9ucyBtYXkgaGF2ZSBzYW1l
IG5hbWVzIGFzIG5vbi1pbnRlcm5hbCBmdW5jdGlvbnMuCisgICAgICAgICAgICByZXR1cm4gIWEu
aXNJbnRlcm5hbCgpICYmIGIuaXNJbnRlcm5hbCgpOworICAgICAgICB9CisgICAgfTsKKworICAg
IC8vIE1hcCBmcm9tIG1hbmdsZWQgZnVuY3Rpb24gbmFtZXMgdG8gdGhlaXIgcGFyYW1ldGVyIHNl
cXVlbmNlcworICAgIFRNYXA8VE5hbWUsIFRJbnRlcm1TZXF1ZW5jZSAqLCBUTmFtZUNvbXBhcmF0
b3I+IG1GdW5jdGlvbk1hcDsKKworICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmbVN5bWJvbFRhYmxl
OworICAgIGNvbnN0IGludCBtU2hhZGVyVmVyc2lvbjsKK307CisKIC8vCiAvLyBGb3IgdHJhdmVy
c2luZyB0aGUgdHJlZSwgYW5kIGNvbXB1dGluZyBtYXggZGVwdGguCiAvLyBUYWtlcyBhIG1heGlt
dW0gZGVwdGggbGltaXQgdG8gcHJldmVudCBzdGFjayBvdmVyZmxvdy4KQEAgLTY5NywxNSArOTU2
LDE1IEBACiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAg
VE1heERlcHRoVHJhdmVyc2VyKGludCBkZXB0aExpbWl0KQotICAgICAgICA6IFRJbnRlcm1UcmF2
ZXJzZXIodHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgOiBUSW50ZXJtVHJhdmVy
c2VyKHRydWUsIHRydWUsIGZhbHNlKSwKICAgICAgICAgICBtRGVwdGhMaW1pdChkZXB0aExpbWl0
KSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFy
eSAqKSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRVbmFy
eShWaXNpdCwgVEludGVybVVuYXJ5ICopIHsgcmV0dXJuIGRlcHRoQ2hlY2soKTsgfQotICAgIHZp
cnR1YWwgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCwgVEludGVybVNlbGVjdGlvbiAqKSB7IHJl
dHVybiBkZXB0aENoZWNrKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgeyByZXR1cm4gZGVwdGhDaGVjaygpOyB9Ci0gICAgdmly
dHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKikgeyByZXR1cm4gZGVwdGhD
aGVjaygpOyB9Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJh
bmNoICopIHsgcmV0dXJuIGRlcHRoQ2hlY2soKTsgfQorICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlz
aXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGUgeyByZXR1cm4gZGVwdGhDaGVjaygpOyB9Cisg
ICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkgKikgb3ZlcnJpZGUgeyByZXR1
cm4gZGVwdGhDaGVjaygpOyB9CisgICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCwgVEludGVy
bVNlbGVjdGlvbiAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0KKyAgICBib29s
IHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIG92ZXJyaWRlIHsgcmV0
dXJuIGRlcHRoQ2hlY2soKTsgfQorICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9v
cCAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0KKyAgICBib29sIHZpc2l0QnJh
bmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICopIG92ZXJyaWRlIHsgcmV0dXJuIGRlcHRoQ2hlY2so
KTsgfQogCiAgIHByb3RlY3RlZDoKICAgICBib29sIGRlcHRoQ2hlY2soKSBjb25zdCB7IHJldHVy
biBtTWF4RGVwdGggPCBtRGVwdGhMaW1pdDsgfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtVHJhdmVyc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVy
bVRyYXZlcnNlLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtVHJhdmVyc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01LDcgKzUsMTg4IEBACiAvLwogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5o
IgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKIAordm9pZCBU
SW50ZXJtU3ltYm9sOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKK3sKKyAgICBpdC0+
dHJhdmVyc2VTeW1ib2wodGhpcyk7Cit9CisKK3ZvaWQgVEludGVybVJhdzo6dHJhdmVyc2UoVElu
dGVybVRyYXZlcnNlciAqaXQpCit7CisgICAgaXQtPnRyYXZlcnNlUmF3KHRoaXMpOworfQorCit2
b2lkIFRJbnRlcm1Db25zdGFudFVuaW9uOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkK
K3sKKyAgICBpdC0+dHJhdmVyc2VDb25zdGFudFVuaW9uKHRoaXMpOworfQorCit2b2lkIFRJbnRl
cm1CaW5hcnk6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQoreworICAgIGl0LT50cmF2
ZXJzZUJpbmFyeSh0aGlzKTsKK30KKwordm9pZCBUSW50ZXJtVW5hcnk6OnRyYXZlcnNlKFRJbnRl
cm1UcmF2ZXJzZXIgKml0KQoreworICAgIGl0LT50cmF2ZXJzZVVuYXJ5KHRoaXMpOworfQorCit2
b2lkIFRJbnRlcm1TZWxlY3Rpb246OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQorewor
ICAgIGl0LT50cmF2ZXJzZVNlbGVjdGlvbih0aGlzKTsKK30KKwordm9pZCBUSW50ZXJtU3dpdGNo
Ojp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKK3sKKyAgICBpdC0+dHJhdmVyc2VTd2l0
Y2godGhpcyk7Cit9CisKK3ZvaWQgVEludGVybUNhc2U6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJz
ZXIgKml0KQoreworICAgIGl0LT50cmF2ZXJzZUNhc2UodGhpcyk7Cit9CisKK3ZvaWQgVEludGVy
bUFnZ3JlZ2F0ZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCit7CisgICAgaXQtPnRy
YXZlcnNlQWdncmVnYXRlKHRoaXMpOworfQorCit2b2lkIFRJbnRlcm1Mb29wOjp0cmF2ZXJzZShU
SW50ZXJtVHJhdmVyc2VyICppdCkKK3sKKyAgICBpdC0+dHJhdmVyc2VMb29wKHRoaXMpOworfQor
Cit2b2lkIFRJbnRlcm1CcmFuY2g6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQorewor
ICAgIGl0LT50cmF2ZXJzZUJyYW5jaCh0aGlzKTsKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2Vy
OjpwdXNoUGFyZW50QmxvY2soVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK3sKKyAgICBtUGFyZW50
QmxvY2tTdGFjay5wdXNoX2JhY2soUGFyZW50QmxvY2sobm9kZSwgMCkpOworfQorCit2b2lkIFRJ
bnRlcm1UcmF2ZXJzZXI6OmluY3JlbWVudFBhcmVudEJsb2NrUG9zKCkKK3sKKyAgICArK21QYXJl
bnRCbG9ja1N0YWNrLmJhY2soKS5wb3M7Cit9CisKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6cG9w
UGFyZW50QmxvY2soKQoreworICAgIEFTU0VSVCghbVBhcmVudEJsb2NrU3RhY2suZW1wdHkoKSk7
CisgICAgbVBhcmVudEJsb2NrU3RhY2sucG9wX2JhY2soKTsKK30KKwordm9pZCBUSW50ZXJtVHJh
dmVyc2VyOjppbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhjb25zdCBUSW50ZXJtU2VxdWVu
Y2UgJmluc2VydGlvbnMpCit7CisgICAgVEludGVybVNlcXVlbmNlIGVtcHR5SW5zZXJ0aW9uc0Fm
dGVyOworICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMsIGVtcHR5
SW5zZXJ0aW9uc0FmdGVyKTsKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjppbnNlcnRTdGF0
ZW1lbnRzSW5QYXJlbnRCbG9jayhjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlvbnNCZWZv
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmaW5zZXJ0aW9uc0FmdGVyKQoreworICAgIEFTU0VSVCgh
bVBhcmVudEJsb2NrU3RhY2suZW1wdHkoKSk7CisgICAgTm9kZUluc2VydE11bHRpcGxlRW50cnkg
aW5zZXJ0KG1QYXJlbnRCbG9ja1N0YWNrLmJhY2soKS5ub2RlLCBtUGFyZW50QmxvY2tTdGFjay5i
YWNrKCkucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25z
QmVmb3JlLCBpbnNlcnRpb25zQWZ0ZXIpOworICAgIG1JbnNlcnRpb25zLnB1c2hfYmFjayhpbnNl
cnQpOworfQorCitUSW50ZXJtU3ltYm9sICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVUZW1wU3lt
Ym9sKGNvbnN0IFRUeXBlICZ0eXBlLCBUUXVhbGlmaWVyIHF1YWxpZmllcikKK3sKKyAgICAvLyBF
YWNoIHRyYXZlcnNhbCB1c2VzIGF0IG1vc3Qgb25lIHRlbXBvcmFyeSB2YXJpYWJsZSwgc28gdGhl
IGluZGV4IHN0YXlzIHRoZSBzYW1lIHdpdGhpbiBhIHNpbmdsZSB0cmF2ZXJzYWwuCisgICAgVElu
Zm9TaW5rQmFzZSBzeW1ib2xOYW1lT3V0OworICAgIEFTU0VSVChtVGVtcG9yYXJ5SW5kZXggIT0g
bnVsbHB0cik7CisgICAgc3ltYm9sTmFtZU91dCA8PCAicyIgPDwgKCptVGVtcG9yYXJ5SW5kZXgp
OworICAgIFRTdHJpbmcgc3ltYm9sTmFtZSA9IHN5bWJvbE5hbWVPdXQuY19zdHIoKTsKKworICAg
IFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBuZXcgVEludGVybVN5bWJvbCgwLCBzeW1ib2xOYW1lLCB0
eXBlKTsKKyAgICBub2RlLT5zZXRJbnRlcm5hbCh0cnVlKTsKKyAgICBub2RlLT5nZXRUeXBlUG9p
bnRlcigpLT5zZXRRdWFsaWZpZXIocXVhbGlmaWVyKTsKKyAgICByZXR1cm4gbm9kZTsKK30KKwor
VEludGVybVN5bWJvbCAqVEludGVybVRyYXZlcnNlcjo6Y3JlYXRlVGVtcFN5bWJvbChjb25zdCBU
VHlwZSAmdHlwZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlVGVtcFN5bWJvbCh0eXBlLCBFdnFUZW1w
b3JhcnkpOworfQorCitUSW50ZXJtQWdncmVnYXRlICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVU
ZW1wRGVjbGFyYXRpb24oY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgVEludGVybUFnZ3JlZ2F0
ZSAqdGVtcERlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wRGVjbGFyYXRpb24p
OworICAgIHRlbXBEZWNsYXJhdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNyZWF0ZVRl
bXBTeW1ib2wodHlwZSkpOworICAgIHJldHVybiB0ZW1wRGVjbGFyYXRpb247Cit9CisKK1RJbnRl
cm1BZ2dyZWdhdGUgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24o
VEludGVybVR5cGVkICppbml0aWFsaXplciwgVFF1YWxpZmllciBxdWFsaWZpZXIpCit7CisgICAg
QVNTRVJUKGluaXRpYWxpemVyICE9IG51bGxwdHIpOworICAgIFRJbnRlcm1TeW1ib2wgKnRlbXBT
eW1ib2wgPSBjcmVhdGVUZW1wU3ltYm9sKGluaXRpYWxpemVyLT5nZXRUeXBlKCksIHF1YWxpZmll
cik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqdGVtcERlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoRU9wRGVjbGFyYXRpb24pOworICAgIFRJbnRlcm1CaW5hcnkgKnRlbXBJbml0ID0g
bmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5pdGlhbGl6ZSk7CisgICAgdGVtcEluaXQtPnNldExlZnQo
dGVtcFN5bWJvbCk7CisgICAgdGVtcEluaXQtPnNldFJpZ2h0KGluaXRpYWxpemVyKTsKKyAgICB0
ZW1wSW5pdC0+c2V0VHlwZSh0ZW1wU3ltYm9sLT5nZXRUeXBlKCkpOworICAgIHRlbXBEZWNsYXJh
dGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHRlbXBJbml0KTsKKyAgICByZXR1cm4gdGVt
cERlY2xhcmF0aW9uOworfQorCitUSW50ZXJtQWdncmVnYXRlICpUSW50ZXJtVHJhdmVyc2VyOjpj
cmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCit7Cisg
ICAgcmV0dXJuIGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oaW5pdGlhbGl6ZXIsIEV2cVRlbXBv
cmFyeSk7Cit9CisKK1RJbnRlcm1CaW5hcnkgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRlbXBB
c3NpZ25tZW50KFRJbnRlcm1UeXBlZCAqcmlnaHROb2RlKQoreworICAgIEFTU0VSVChyaWdodE5v
ZGUgIT0gbnVsbHB0cik7CisgICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJvbCA9IGNyZWF0ZVRl
bXBTeW1ib2wocmlnaHROb2RlLT5nZXRUeXBlKCkpOworICAgIFRJbnRlcm1CaW5hcnkgKmFzc2ln
bm1lbnQgPSBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24pOworICAgIGFzc2lnbm1lbnQtPnNl
dExlZnQodGVtcFN5bWJvbCk7CisgICAgYXNzaWdubWVudC0+c2V0UmlnaHQocmlnaHROb2RlKTsK
KyAgICBhc3NpZ25tZW50LT5zZXRUeXBlKHRlbXBTeW1ib2wtPmdldFR5cGUoKSk7CisgICAgcmV0
dXJuIGFzc2lnbm1lbnQ7Cit9CisKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dXNlVGVtcG9yYXJ5
SW5kZXgodW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKK3sKKyAgICBtVGVtcG9yYXJ5SW5k
ZXggPSB0ZW1wb3JhcnlJbmRleDsKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjpuZXh0VGVt
cG9yYXJ5SW5kZXgoKQoreworICAgIEFTU0VSVChtVGVtcG9yYXJ5SW5kZXggIT0gbnVsbHB0cik7
CisgICAgKysoKm1UZW1wb3JhcnlJbmRleCk7Cit9CisKK3ZvaWQgVExWYWx1ZVRyYWNraW5nVHJh
dmVyc2VyOjphZGRUb0Z1bmN0aW9uTWFwKGNvbnN0IFROYW1lICZuYW1lLCBUSW50ZXJtU2VxdWVu
Y2UgKnBhcmFtU2VxdWVuY2UpCit7CisgICAgbUZ1bmN0aW9uTWFwW25hbWVdID0gcGFyYW1TZXF1
ZW5jZTsKK30KKworYm9vbCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OmlzSW5GdW5jdGlvbk1h
cChjb25zdCBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSkgY29uc3QKK3sKKyAgICBBU1NFUlQo
Y2FsbE5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKTsKKyAgICByZXR1cm4gKG1GdW5j
dGlvbk1hcC5maW5kKGNhbGxOb2RlLT5nZXROYW1lT2JqKCkpICE9IG1GdW5jdGlvbk1hcC5lbmQo
KSk7Cit9CisKK1RJbnRlcm1TZXF1ZW5jZSAqVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjpnZXRG
dW5jdGlvblBhcmFtZXRlcnMoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUpCit7Cisg
ICAgQVNTRVJUKGlzSW5GdW5jdGlvbk1hcChjYWxsTm9kZSkpOworICAgIHJldHVybiBtRnVuY3Rp
b25NYXBbY2FsbE5vZGUtPmdldE5hbWVPYmooKV07Cit9CisKK3ZvaWQgVExWYWx1ZVRyYWNraW5n
VHJhdmVyc2VyOjpzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihib29sIGluT3V0UGFyYW1l
dGVyKQoreworICAgIG1JbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlciA9IGluT3V0UGFyYW1ldGVy
OworfQorCitib29sIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6aXNJbkZ1bmN0aW9uQ2FsbE91
dFBhcmFtZXRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbkZ1bmN0aW9uQ2FsbE91dFBhcmFt
ZXRlcjsKK30KKwogLy8KIC8vIFRyYXZlcnNlIHRoZSBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRp
b24gdHJlZSwgYW5kCiAvLyBjYWxsIGEgbm9kZSB0eXBlIHNwZWNpZmljIGZ1bmN0aW9uIGZvciBl
YWNoIG5vZGUuCkBAIC0xNiwzMDggKzE5Nyw0NzMgQEAKIC8vIGlmIHByZVZpc2l0IGlzIHR1cm5l
ZCBvbiBhbmQgdGhlIHR5cGUgc3BlY2lmaWMgZnVuY3Rpb24KIC8vIHJldHVybnMgZmFsc2UuCiAv
LwotLy8gcHJlVmlzaXQsIHBvc3RWaXNpdCwgYW5kIHJpZ2h0VG9MZWZ0IGNvbnRyb2wgd2hhdCBv
cmRlcgotLy8gbm9kZXMgYXJlIHZpc2l0ZWQgaW4uCi0vLwogCiAvLwogLy8gVHJhdmVyc2FsIGZ1
bmN0aW9ucyBmb3IgdGVybWluYWxzIGFyZSBzdHJhaWdoZm9yd2FyZC4uLi4KIC8vCi12b2lkIFRJ
bnRlcm1TeW1ib2w6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQordm9pZCBUSW50ZXJt
VHJhdmVyc2VyOjp0cmF2ZXJzZVN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQogewotICAgIGl0
LT52aXNpdFN5bWJvbCh0aGlzKTsKKyAgICB2aXNpdFN5bWJvbChub2RlKTsKIH0KIAotdm9pZCBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCit2b2lk
IFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQ29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRV
bmlvbiAqbm9kZSkKIHsKLSAgICBpdC0+dmlzaXRDb25zdGFudFVuaW9uKHRoaXMpOworICAgIHZp
c2l0Q29uc3RhbnRVbmlvbihub2RlKTsKIH0KIAogLy8KIC8vIFRyYXZlcnNlIGEgYmluYXJ5IG5v
ZGUuCiAvLwotdm9pZCBUSW50ZXJtQmluYXJ5Ojp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICpp
dCkKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VCaW5hcnkoVEludGVybUJpbmFyeSAq
bm9kZSkKIHsKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIC8vCiAgICAgLy8gdmlzaXQg
dGhlIG5vZGUgYmVmb3JlIGNoaWxkcmVuIGlmIHByZS12aXNpdGluZy4KICAgICAvLwotICAgIGlm
IChpdC0+cHJlVmlzaXQpCi0gICAgICAgIHZpc2l0ID0gaXQtPnZpc2l0QmluYXJ5KFByZVZpc2l0
LCB0aGlzKTsKKyAgICBpZiAocHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gdmlzaXRCaW5hcnko
UHJlVmlzaXQsIG5vZGUpOwogCiAgICAgLy8KICAgICAvLyBWaXNpdCB0aGUgY2hpbGRyZW4sIGlu
IHRoZSByaWdodCBvcmRlci4KICAgICAvLwogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAg
IGl0LT5pbmNyZW1lbnREZXB0aCh0aGlzKTsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7
CiAKLSAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1SaWdodCkKLSAgICAgICAgICAgICAgICBtUmlnaHQtPnRyYXZlcnNlKGl0KTsKKyAgICAg
ICAgaWYgKG5vZGUtPmdldExlZnQoKSkKKyAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+dHJh
dmVyc2UodGhpcyk7CiAKLSAgICAgICAgICAgIGlmIChpdC0+aW5WaXNpdCkKLSAgICAgICAgICAg
ICAgICB2aXNpdCA9IGl0LT52aXNpdEJpbmFyeShJblZpc2l0LCB0aGlzKTsKKyAgICAgICAgaWYg
KGluVmlzaXQpCisgICAgICAgICAgICB2aXNpdCA9IHZpc2l0QmluYXJ5KEluVmlzaXQsIG5vZGUp
OwogCi0gICAgICAgICAgICBpZiAodmlzaXQgJiYgbUxlZnQpCi0gICAgICAgICAgICAgICAgbUxl
ZnQtPnRyYXZlcnNlKGl0KTsKKyAgICAgICAgaWYgKHZpc2l0ICYmIG5vZGUtPmdldFJpZ2h0KCkp
CisgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsKKworICAgICAg
ICBkZWNyZW1lbnREZXB0aCgpOworICAgIH0KKworICAgIC8vCisgICAgLy8gVmlzaXQgdGhlIG5v
ZGUgYWZ0ZXIgdGhlIGNoaWxkcmVuLCBpZiByZXF1ZXN0ZWQgYW5kIHRoZSB0cmF2ZXJzYWwKKyAg
ICAvLyBoYXNuJ3QgYmVlbiBjYW5jZWxsZWQgeWV0LgorICAgIC8vCisgICAgaWYgKHZpc2l0ICYm
IHBvc3RWaXNpdCkKKyAgICAgICAgdmlzaXRCaW5hcnkoUG9zdFZpc2l0LCBub2RlKTsKK30KKwor
dm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQmluYXJ5KFRJbnRlcm1CaW5h
cnkgKm5vZGUpCit7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7CisKKyAgICAvLworICAgIC8vIHZp
c2l0IHRoZSBub2RlIGJlZm9yZSBjaGlsZHJlbiBpZiBwcmUtdmlzaXRpbmcuCisgICAgLy8KKyAg
ICBpZiAocHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gdmlzaXRCaW5hcnkoUHJlVmlzaXQsIG5v
ZGUpOworCisgICAgLy8KKyAgICAvLyBWaXNpdCB0aGUgY2hpbGRyZW4sIGluIHRoZSByaWdodCBv
cmRlci4KKyAgICAvLworICAgIGlmICh2aXNpdCkKKyAgICB7CisgICAgICAgIGluY3JlbWVudERl
cHRoKG5vZGUpOworCisgICAgICAgIC8vIFNvbWUgYmluYXJ5IG9wZXJhdGlvbnMgbGlrZSBpbmRl
eGluZyBjYW4gYmUgaW5zaWRlIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdCBiZSBhbgorICAgICAg
ICAvLyBsLXZhbHVlLgorICAgICAgICBib29sIHBhcmVudE9wZXJhdG9yUmVxdWlyZXNMVmFsdWUg
ICAgID0gb3BlcmF0b3JSZXF1aXJlc0xWYWx1ZSgpOworICAgICAgICBib29sIHBhcmVudEluRnVu
Y3Rpb25DYWxsT3V0UGFyYW1ldGVyID0gaXNJbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcigpOwor
ICAgICAgICBpZiAobm9kZS0+aXNBc3NpZ25tZW50KCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVCghaXNMVmFsdWVSZXF1aXJlZEhlcmUoKSk7CisgICAgICAgICAgICBzZXRPcGVyYXRv
clJlcXVpcmVzTFZhbHVlKHRydWUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG1MZWZ0KQotICAgICAgICAgICAgICAgIG1MZWZ0LT50cmF2ZXJz
ZShpdCk7CiAKLSAgICAgICAgICAgIGlmIChpdC0+aW5WaXNpdCkKLSAgICAgICAgICAgICAgICB2
aXNpdCA9IGl0LT52aXNpdEJpbmFyeShJblZpc2l0LCB0aGlzKTsKKyAgICAgICAgaWYgKG5vZGUt
PmdldExlZnQoKSkKKyAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+dHJhdmVyc2UodGhpcyk7
CiAKLSAgICAgICAgICAgIGlmICh2aXNpdCAmJiBtUmlnaHQpCi0gICAgICAgICAgICAgICAgbVJp
Z2h0LT50cmF2ZXJzZShpdCk7CisgICAgICAgIGlmIChpblZpc2l0KQorICAgICAgICAgICAgdmlz
aXQgPSB2aXNpdEJpbmFyeShJblZpc2l0LCBub2RlKTsKKworICAgICAgICBpZiAobm9kZS0+aXNB
c3NpZ25tZW50KCkpCisgICAgICAgICAgICBzZXRPcGVyYXRvclJlcXVpcmVzTFZhbHVlKGZhbHNl
KTsKKworICAgICAgICAvLyBJbmRleCBpcyBub3QgcmVxdWlyZWQgdG8gYmUgYW4gbC12YWx1ZSBl
dmVuIHdoZW4gdGhlIHN1cnJvdW5kaW5nIGV4cHJlc3Npb24gaXMgcmVxdWlyZWQKKyAgICAgICAg
Ly8gdG8gYmUgYW4gbC12YWx1ZS4KKyAgICAgICAgVE9wZXJhdG9yIG9wID0gbm9kZS0+Z2V0T3Ao
KTsKKyAgICAgICAgaWYgKG9wID09IEVPcEluZGV4RGlyZWN0IHx8IG9wID09IEVPcEluZGV4RGly
ZWN0SW50ZXJmYWNlQmxvY2sgfHwKKyAgICAgICAgICAgIG9wID09IEVPcEluZGV4RGlyZWN0U3Ry
dWN0IHx8IG9wID09IEVPcEluZGV4SW5kaXJlY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNl
dE9wZXJhdG9yUmVxdWlyZXNMVmFsdWUoZmFsc2UpOworICAgICAgICAgICAgc2V0SW5GdW5jdGlv
bkNhbGxPdXRQYXJhbWV0ZXIoZmFsc2UpOwogICAgICAgICB9CiAKLSAgICAgICAgaXQtPmRlY3Jl
bWVudERlcHRoKCk7CisgICAgICAgIGlmICh2aXNpdCAmJiBub2RlLT5nZXRSaWdodCgpKQorICAg
ICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7CisKKyAgICAgICAgc2V0
T3BlcmF0b3JSZXF1aXJlc0xWYWx1ZShwYXJlbnRPcGVyYXRvclJlcXVpcmVzTFZhbHVlKTsKKyAg
ICAgICAgc2V0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIocGFyZW50SW5GdW5jdGlvbkNhbGxP
dXRQYXJhbWV0ZXIpOworCisgICAgICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQogCiAgICAg
Ly8KICAgICAvLyBWaXNpdCB0aGUgbm9kZSBhZnRlciB0aGUgY2hpbGRyZW4sIGlmIHJlcXVlc3Rl
ZCBhbmQgdGhlIHRyYXZlcnNhbAogICAgIC8vIGhhc24ndCBiZWVuIGNhbmNlbGxlZCB5ZXQuCiAg
ICAgLy8KLSAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNpdCkKLSAgICAgICAgaXQtPnZpc2l0
QmluYXJ5KFBvc3RWaXNpdCwgdGhpcyk7CisgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKKyAg
ICAgICAgdmlzaXRCaW5hcnkoUG9zdFZpc2l0LCBub2RlKTsKIH0KIAogLy8KIC8vIFRyYXZlcnNl
IGEgdW5hcnkgbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUgYXBwbHkgaGVyZS4K
IC8vCi12b2lkIFRJbnRlcm1VbmFyeTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCit2
b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKQog
ewogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCi0gICAgaWYgKGl0LT5wcmVWaXNpdCkKLSAgICAg
ICAgdmlzaXQgPSBpdC0+dmlzaXRVbmFyeShQcmVWaXNpdCwgdGhpcyk7CisgICAgaWYgKHByZVZp
c2l0KQorICAgICAgICB2aXNpdCA9IHZpc2l0VW5hcnkoUHJlVmlzaXQsIG5vZGUpOwogCi0gICAg
aWYgKHZpc2l0KSB7Ci0gICAgICAgIGl0LT5pbmNyZW1lbnREZXB0aCh0aGlzKTsKLSAgICAgICAg
bU9wZXJhbmQtPnRyYXZlcnNlKGl0KTsKLSAgICAgICAgaXQtPmRlY3JlbWVudERlcHRoKCk7Cisg
ICAgaWYgKHZpc2l0KQorICAgIHsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisKKyAg
ICAgICAgbm9kZS0+Z2V0T3BlcmFuZCgpLT50cmF2ZXJzZSh0aGlzKTsKKworICAgICAgICBkZWNy
ZW1lbnREZXB0aCgpOwogICAgIH0KIAotICAgIGlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0KQot
ICAgICAgICBpdC0+dmlzaXRVbmFyeShQb3N0VmlzaXQsIHRoaXMpOworICAgIGlmICh2aXNpdCAm
JiBwb3N0VmlzaXQpCisgICAgICAgIHZpc2l0VW5hcnkoUG9zdFZpc2l0LCBub2RlKTsKIH0KIAor
dm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5
ICpub2RlKQoreworICAgIGJvb2wgdmlzaXQgPSB0cnVlOworCisgICAgaWYgKHByZVZpc2l0KQor
ICAgICAgICB2aXNpdCA9IHZpc2l0VW5hcnkoUHJlVmlzaXQsIG5vZGUpOworCisgICAgaWYgKHZp
c2l0KQorICAgIHsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisKKyAgICAgICAgQVNT
RVJUKCFvcGVyYXRvclJlcXVpcmVzTFZhbHVlKCkpOworICAgICAgICBzd2l0Y2ggKG5vZGUtPmdl
dE9wKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAg
ICAgICAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoKKyAgICAgICAgICAgIGNhc2UgRU9wUHJl
SW5jcmVtZW50OgorICAgICAgICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6CisgICAgICAgICAg
ICAgICAgc2V0T3BlcmF0b3JSZXF1aXJlc0xWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBub2RlLT5nZXRPcGVyYW5kKCktPnRyYXZlcnNlKHRoaXMpOworCisg
ICAgICAgIHNldE9wZXJhdG9yUmVxdWlyZXNMVmFsdWUoZmFsc2UpOworCisgICAgICAgIGRlY3Jl
bWVudERlcHRoKCk7CisgICAgfQorCisgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKKyAgICAg
ICAgdmlzaXRVbmFyeShQb3N0VmlzaXQsIG5vZGUpOworfQorCiAvLwogLy8gVHJhdmVyc2UgYW4g
YWdncmVnYXRlIG5vZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhlcmUu
CiAvLwotdm9pZCBUSW50ZXJtQWdncmVnYXRlOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICpp
dCkKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3Jl
Z2F0ZSAqbm9kZSkKIHsKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAotICAgIGlmIChpdC0+cHJl
VmlzaXQpCi0gICAgICAgIHZpc2l0ID0gaXQtPnZpc2l0QWdncmVnYXRlKFByZVZpc2l0LCB0aGlz
KTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsK
IAorICAgIGlmIChwcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSB2aXNpdEFnZ3JlZ2F0ZShQcmVW
aXNpdCwgbm9kZSk7CisKICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAgICBpdC0+aW5jcmVt
ZW50RGVwdGgodGhpcyk7CisgICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwogCi0gICAgICAg
IGlmIChpdC0+cmlnaHRUb0xlZnQpCisgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFNl
cXVlbmNlKQorICAgICAgICAgICAgcHVzaFBhcmVudEJsb2NrKG5vZGUpOworCisgICAgICAgIGZv
ciAoYXV0byAqY2hpbGQgOiAqc2VxdWVuY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAo
VEludGVybVNlcXVlbmNlOjpyZXZlcnNlX2l0ZXJhdG9yIHNpdCA9IG1TZXF1ZW5jZS5yYmVnaW4o
KTsKLSAgICAgICAgICAgICAgICAgc2l0ICE9IG1TZXF1ZW5jZS5yZW5kKCk7IHNpdCsrKQorICAg
ICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgaWYgKHZpc2l0ICYm
IGluVmlzaXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKCpzaXQpLT50cmF2ZXJz
ZShpdCk7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkICE9IHNlcXVlbmNlLT5iYWNrKCkpCisg
ICAgICAgICAgICAgICAgICAgIHZpc2l0ID0gdmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7
CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAodmlzaXQgJiYgaXQtPmluVmlz
aXQpCisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BTZXF1ZW5jZSkKKyAgICAg
ICAgICAgICAgICBpbmNyZW1lbnRQYXJlbnRCbG9ja1BvcygpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCisgICAgICAgICAgICBwb3BQYXJl
bnRCbG9jaygpOworCisgICAgICAgIGRlY3JlbWVudERlcHRoKCk7CisgICAgfQorCisgICAgaWYg
KHZpc2l0ICYmIHBvc3RWaXNpdCkKKyAgICAgICAgdmlzaXRBZ2dyZWdhdGUoUG9zdFZpc2l0LCBu
b2RlKTsKK30KKwordm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQWdncmVn
YXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgYm9vbCB2aXNpdCA9IHRydWU7CisK
KyAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKyAg
ICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgeworICAgICAgICBjYXNlIEVPcEZ1bmN0aW9u
OgorICAgICAgICB7CisgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJhbXMgPSBzZXF1
ZW5jZS0+ZnJvbnQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICAgICAgICAgIEFTU0VSVChwYXJh
bXMgIT0gbnVsbHB0cik7CisgICAgICAgICAgICBBU1NFUlQocGFyYW1zLT5nZXRPcCgpID09IEVP
cFBhcmFtZXRlcnMpOworICAgICAgICAgICAgYWRkVG9GdW5jdGlvbk1hcChub2RlLT5nZXROYW1l
T2JqKCksIHBhcmFtcy0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEVPcFByb3RvdHlwZToKKyAgICAgICAgICAgIGFkZFRvRnVuY3Rp
b25NYXAobm9kZS0+Z2V0TmFtZU9iaigpLCBzZXF1ZW5jZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChw
cmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSB2aXNpdEFnZ3JlZ2F0ZShQcmVWaXNpdCwgbm9kZSk7
CisKKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBib29sIGluRnVuY3Rpb25NYXAgPSBm
YWxzZTsKKyAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKQorICAg
ICAgICB7CisgICAgICAgICAgICBpbkZ1bmN0aW9uTWFwID0gaXNJbkZ1bmN0aW9uTWFwKG5vZGUp
OworICAgICAgICAgICAgaWYgKCFpbkZ1bmN0aW9uTWFwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBpcyBub3QgdXNlci1kZWZpbmVkIC0gaXQgaXMgbGlr
ZWx5IGJ1aWx0LWluIHRleHR1cmUgZnVuY3Rpb24uCisgICAgICAgICAgICAgICAgLy8gQXNzdW1l
IHRoYXQgdGhvc2UgZG8gbm90IGhhdmUgb3V0IHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAg
c2V0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIoZmFsc2UpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisKKyAgICAgICAgaWYgKGlu
RnVuY3Rpb25NYXApCisgICAgICAgIHsKKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqcGFy
YW1zICAgICAgICAgICAgID0gZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKG5vZGUpOworICAgICAgICAg
ICAgVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwYXJhbUl0ZXIgPSBwYXJhbXMtPmJlZ2luKCk7
CisgICAgICAgICAgICBmb3IgKGF1dG8gKmNoaWxkIDogKnNlcXVlbmNlKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJhbUl0ZXIgIT0gcGFyYW1zLT5lbmQoKSk7Cisg
ICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSAoKnBhcmFtSXRlciktPmdldEFz
VHlwZWQoKS0+Z2V0UXVhbGlmaWVyKCk7CisgICAgICAgICAgICAgICAgc2V0SW5GdW5jdGlvbkNh
bGxPdXRQYXJhbWV0ZXIocXVhbGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5P
dXQpOworCisgICAgICAgICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAg
ICAgICAgIGlmICh2aXNpdCAmJiBpblZpc2l0KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCpzaXQgIT0gbVNlcXVlbmNlLmZyb250KCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICB2aXNpdCA9IGl0LT52aXNpdEFnZ3JlZ2F0ZShJblZpc2l0LCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkICE9IHNlcXVlbmNlLT5iYWNrKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICB2aXNpdCA9IHZpc2l0QWdncmVnYXRlKEluVmlzaXQsIG5vZGUpOwog
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICsrcGFyYW1JdGVyOwogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihmYWxz
ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBmb3Ig
KFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gbVNlcXVlbmNlLmJlZ2luKCk7Ci0gICAg
ICAgICAgICAgICAgIHNpdCAhPSBtU2VxdWVuY2UuZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAg
aWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCisgICAgICAgICAgICAgICAgcHVzaFBh
cmVudEJsb2NrKG5vZGUpOworCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBidWlsdC1pbiBmdW5j
dGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoaXMgb3Agc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIHRo
ZQorICAgICAgICAgICAgLy8gaW4vb3V0IHF1YWxpZmllcnMgb2YgaXRzIHBhcmFtZXRlcnMuCisg
ICAgICAgICAgICBURnVuY3Rpb24gKmJ1aWx0SW5GdW5jID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IFRTdHJpbmcgb3BTdHJpbmcgPSBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5nZXRPcCgpKTsKKyAg
ICAgICAgICAgIGlmICghbm9kZS0+aXNDb25zdHJ1Y3RvcigpICYmICFvcFN0cmluZy5lbXB0eSgp
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICgqc2l0KS0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICAgICAgICAgIC8vIFRoZSByZXR1cm4gdHlwZSBkb2Vzbid0IGFmZmVjdCB0aGUgbWFu
Z2xlZCBuYW1lIG9mIHRoZSBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZAorICAgICAgICAgICAgICAg
IC8vIHRvIGxvb2sgaXQgdXAgZnJvbSB0aGUgc3ltYm9sIHRhYmxlLgorICAgICAgICAgICAgICAg
IFRUeXBlIGR1bW15UmV0dXJuVHlwZTsKKyAgICAgICAgICAgICAgICBURnVuY3Rpb24gY2FsbCgm
b3BTdHJpbmcsICZkdW1teVJldHVyblR5cGUsIG5vZGUtPmdldE9wKCkpOworICAgICAgICAgICAg
ICAgIGZvciAoYXV0byAqY2hpbGQgOiAqc2VxdWVuY2UpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBUVHlwZSAqcGFyYW1UeXBlID0gY2hpbGQtPmdldEFzVHlwZWQoKS0+
Z2V0VHlwZVBvaW50ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgVENvbnN0UGFyYW1ldGVyIHAo
cGFyYW1UeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbC5hZGRQYXJhbWV0ZXIocCk7Cisg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHZpc2l0ICYmIGl0LT5pblZp
c2l0KQorICAgICAgICAgICAgICAgIFRTeW1ib2wgKnN5bSA9IG1TeW1ib2xUYWJsZS5maW5kQnVp
bHRJbihjYWxsLmdldE1hbmdsZWROYW1lKCksIG1TaGFkZXJWZXJzaW9uKTsKKyAgICAgICAgICAg
ICAgICBpZiAoc3ltICE9IG51bGxwdHIgJiYgc3ltLT5pc0Z1bmN0aW9uKCkpCiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnNpdCAhPSBtU2VxdWVuY2UuYmFjaygp
KQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRBZ2dyZWdhdGUoSW5W
aXNpdCwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGJ1aWx0SW5GdW5jID0gc3RhdGljX2Nh
c3Q8VEZ1bmN0aW9uICo+KHN5bSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChidWlsdElu
RnVuYy0+Z2V0UGFyYW1Db3VudCgpID09IHNlcXVlbmNlLT5zaXplKCkpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2l6ZV90IHBhcmFtSW5kZXggPSAw
OworCisgICAgICAgICAgICBmb3IgKGF1dG8gKmNoaWxkIDogKnNlcXVlbmNlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gRXZxSW47CisgICAg
ICAgICAgICAgICAgaWYgKGJ1aWx0SW5GdW5jICE9IG51bGxwdHIpCisgICAgICAgICAgICAgICAg
ICAgIHF1YWxpZmllciA9IGJ1aWx0SW5GdW5jLT5nZXRQYXJhbShwYXJhbUluZGV4KS50eXBlLT5n
ZXRRdWFsaWZpZXIoKTsKKyAgICAgICAgICAgICAgICBzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFt
ZXRlcihxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCk7CisgICAg
ICAgICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOworCisgICAgICAgICAgICAgICAgaWYg
KHZpc2l0ICYmIGluVmlzaXQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQgIT0gc2VxdWVuY2UtPmJhY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZpc2l0ID0gdmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCisg
ICAgICAgICAgICAgICAgICAgIGluY3JlbWVudFBhcmVudEJsb2NrUG9zKCk7CisKKyAgICAgICAg
ICAgICAgICArK3BhcmFtSW5kZXg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldElu
RnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyKGZhbHNlKTsKKworICAgICAgICAgICAgaWYgKG5vZGUt
PmdldE9wKCkgPT0gRU9wU2VxdWVuY2UpCisgICAgICAgICAgICAgICAgcG9wUGFyZW50QmxvY2so
KTsKICAgICAgICAgfQogCi0gICAgICAgIGl0LT5kZWNyZW1lbnREZXB0aCgpOworICAgICAgICBk
ZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAotICAgIGlmICh2aXNpdCAmJiBpdC0+cG9zdFZpc2l0
KQotICAgICAgICBpdC0+dmlzaXRBZ2dyZWdhdGUoUG9zdFZpc2l0LCB0aGlzKTsKKyAgICBpZiAo
dmlzaXQgJiYgcG9zdFZpc2l0KQorICAgICAgICB2aXNpdEFnZ3JlZ2F0ZShQb3N0VmlzaXQsIG5v
ZGUpOwogfQogCiAvLwogLy8gVHJhdmVyc2UgYSBzZWxlY3Rpb24gbm9kZS4gIFNhbWUgY29tbWVu
dHMgaW4gYmluYXJ5IG5vZGUgYXBwbHkgaGVyZS4KIC8vCi12b2lkIFRJbnRlcm1TZWxlY3Rpb246
OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0
cmF2ZXJzZVNlbGVjdGlvbihUSW50ZXJtU2VsZWN0aW9uICpub2RlKQogewogICAgIGJvb2wgdmlz
aXQgPSB0cnVlOwogCi0gICAgaWYgKGl0LT5wcmVWaXNpdCkKLSAgICAgICAgdmlzaXQgPSBpdC0+
dmlzaXRTZWxlY3Rpb24oUHJlVmlzaXQsIHRoaXMpOworICAgIGlmIChwcmVWaXNpdCkKKyAgICAg
ICAgdmlzaXQgPSB2aXNpdFNlbGVjdGlvbihQcmVWaXNpdCwgbm9kZSk7CiAKICAgICBpZiAodmlz
aXQpCiAgICAgewotICAgICAgICBpdC0+aW5jcmVtZW50RGVwdGgodGhpcyk7Ci0gICAgICAgIGlm
IChpdC0+cmlnaHRUb0xlZnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtRmFsc2VCbG9j
aykKLSAgICAgICAgICAgICAgICBtRmFsc2VCbG9jay0+dHJhdmVyc2UoaXQpOwotICAgICAgICAg
ICAgaWYgKG1UcnVlQmxvY2spCi0gICAgICAgICAgICAgICAgbVRydWVCbG9jay0+dHJhdmVyc2Uo
aXQpOwotICAgICAgICAgICAgbUNvbmRpdGlvbi0+dHJhdmVyc2UoaXQpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbUNvbmRpdGlvbi0+dHJhdmVyc2Uo
aXQpOwotICAgICAgICAgICAgaWYgKG1UcnVlQmxvY2spCi0gICAgICAgICAgICAgICAgbVRydWVC
bG9jay0+dHJhdmVyc2UoaXQpOwotICAgICAgICAgICAgaWYgKG1GYWxzZUJsb2NrKQotICAgICAg
ICAgICAgICAgIG1GYWxzZUJsb2NrLT50cmF2ZXJzZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAg
aXQtPmRlY3JlbWVudERlcHRoKCk7CisgICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOworICAg
ICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGlmIChu
b2RlLT5nZXRUcnVlQmxvY2soKSkKKyAgICAgICAgICAgIG5vZGUtPmdldFRydWVCbG9jaygpLT50
cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2soKSkKKyAgICAg
ICAgICAgIG5vZGUtPmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGRl
Y3JlbWVudERlcHRoKCk7CiAgICAgfQogCi0gICAgaWYgKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQp
Ci0gICAgICAgIGl0LT52aXNpdFNlbGVjdGlvbihQb3N0VmlzaXQsIHRoaXMpOworICAgIGlmICh2
aXNpdCAmJiBwb3N0VmlzaXQpCisgICAgICAgIHZpc2l0U2VsZWN0aW9uKFBvc3RWaXNpdCwgbm9k
ZSk7CiB9CiAKIC8vCiAvLyBUcmF2ZXJzZSBhIHN3aXRjaCBub2RlLiAgU2FtZSBjb21tZW50cyBp
biBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybVN3aXRjaDo6dHJhdmVy
c2UoVEludGVybVRyYXZlcnNlciAqaXQpCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNl
U3dpdGNoKFRJbnRlcm1Td2l0Y2ggKm5vZGUpCiB7CiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAK
LSAgICBpZiAoaXQtPnByZVZpc2l0KQotICAgICAgICB2aXNpdCA9IGl0LT52aXNpdFN3aXRjaChQ
cmVWaXNpdCwgdGhpcyk7CisgICAgaWYgKHByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IHZpc2l0
U3dpdGNoKFByZVZpc2l0LCBub2RlKTsKIAogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAg
IGl0LT5pbmNyZW1lbnREZXB0aCh0aGlzKTsKLSAgICAgICAgaWYgKGl0LT5yaWdodFRvTGVmdCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1TdGF0ZW1lbnRMaXN0KQotICAgICAgICAgICAg
ICAgIG1TdGF0ZW1lbnRMaXN0LT50cmF2ZXJzZShpdCk7Ci0gICAgICAgICAgICBpZiAoaXQtPmlu
VmlzaXQpCi0gICAgICAgICAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRTd2l0Y2goSW5WaXNpdCwg
dGhpcyk7Ci0gICAgICAgICAgICBpZiAodmlzaXQpCi0gICAgICAgICAgICAgICAgbUluaXQtPnRy
YXZlcnNlKGl0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1Jbml0LT50cmF2ZXJzZShpdCk7Ci0gICAgICAgICAgICBpZiAoaXQtPmluVmlzaXQpCi0g
ICAgICAgICAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRTd2l0Y2goSW5WaXNpdCwgdGhpcyk7Ci0g
ICAgICAgICAgICBpZiAodmlzaXQgJiYgbVN0YXRlbWVudExpc3QpCi0gICAgICAgICAgICAgICAg
bVN0YXRlbWVudExpc3QtPnRyYXZlcnNlKGl0KTsKLSAgICAgICAgfQotICAgICAgICBpdC0+ZGVj
cmVtZW50RGVwdGgoKTsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CisgICAgICAgIG5v
ZGUtPmdldEluaXQoKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGlmIChpblZpc2l0KQorICAg
ICAgICAgICAgdmlzaXQgPSB2aXNpdFN3aXRjaChJblZpc2l0LCBub2RlKTsKKyAgICAgICAgaWYg
KHZpc2l0ICYmIG5vZGUtPmdldFN0YXRlbWVudExpc3QoKSkKKyAgICAgICAgICAgIG5vZGUtPmdl
dFN0YXRlbWVudExpc3QoKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIGRlY3JlbWVudERlcHRo
KCk7CiAgICAgfQogCi0gICAgaWYgKHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0gICAgICAgIGl0
LT52aXNpdFN3aXRjaChQb3N0VmlzaXQsIHRoaXMpOworICAgIGlmICh2aXNpdCAmJiBwb3N0Vmlz
aXQpCisgICAgICAgIHZpc2l0U3dpdGNoKFBvc3RWaXNpdCwgbm9kZSk7CiB9CiAKIC8vCi0vLyBU
cmF2ZXJzZSBhIHN3aXRjaCBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBs
eSBoZXJlLgorLy8gVHJhdmVyc2UgYSBjYXNlIG5vZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFy
eSBub2RlIGFwcGx5IGhlcmUuCiAvLwotdm9pZCBUSW50ZXJtQ2FzZTo6dHJhdmVyc2UoVEludGVy
bVRyYXZlcnNlciAqaXQpCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQ2FzZShUSW50
ZXJtQ2FzZSAqbm9kZSkKIHsKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAotICAgIGlmIChpdC0+
cHJlVmlzaXQpCi0gICAgICAgIHZpc2l0ID0gaXQtPnZpc2l0Q2FzZShQcmVWaXNpdCwgdGhpcyk7
CisgICAgaWYgKHByZVZpc2l0KQorICAgICAgICB2aXNpdCA9IHZpc2l0Q2FzZShQcmVWaXNpdCwg
bm9kZSk7CiAKLSAgICBpZiAodmlzaXQgJiYgbUNvbmRpdGlvbikKLSAgICAgICAgbUNvbmRpdGlv
bi0+dHJhdmVyc2UoaXQpOworICAgIGlmICh2aXNpdCAmJiBub2RlLT5nZXRDb25kaXRpb24oKSkK
KyAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwogCi0gICAgaWYg
KHZpc2l0ICYmIGl0LT5wb3N0VmlzaXQpCi0gICAgICAgIGl0LT52aXNpdENhc2UoUG9zdFZpc2l0
LCB0aGlzKTsKKyAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQorICAgICAgICB2aXNpdENhc2Uo
UG9zdFZpc2l0LCBub2RlKTsKIH0KIAogLy8KIC8vIFRyYXZlcnNlIGEgbG9vcCBub2RlLiAgU2Ft
ZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogLy8KLXZvaWQgVEludGVybUxv
b3A6OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQordm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUxvb3AoVEludGVybUxvb3AgKm5vZGUpCiB7CiAgICAgYm9vbCB2aXNpdCA9IHRy
dWU7CiAKLSAgICBpZiAoaXQtPnByZVZpc2l0KQotICAgICAgICB2aXNpdCA9IGl0LT52aXNpdExv
b3AoUHJlVmlzaXQsIHRoaXMpOworICAgIGlmIChwcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSB2
aXNpdExvb3AoUHJlVmlzaXQsIG5vZGUpOwogCiAgICAgaWYgKHZpc2l0KQogICAgIHsKLSAgICAg
ICAgaXQtPmluY3JlbWVudERlcHRoKHRoaXMpOworICAgICAgICBpbmNyZW1lbnREZXB0aChub2Rl
KTsKIAotICAgICAgICBpZiAoaXQtPnJpZ2h0VG9MZWZ0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAobUV4cHIpCi0gICAgICAgICAgICAgICAgbUV4cHItPnRyYXZlcnNlKGl0KTsKKyAgICAg
ICAgaWYgKG5vZGUtPmdldEluaXQoKSkKKyAgICAgICAgICAgIG5vZGUtPmdldEluaXQoKS0+dHJh
dmVyc2UodGhpcyk7CiAKLSAgICAgICAgICAgIGlmIChtQm9keSkKLSAgICAgICAgICAgICAgICBt
Qm9keS0+dHJhdmVyc2UoaXQpOworICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCisg
ICAgICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAKLSAgICAg
ICAgICAgIGlmIChtQ29uZCkKLSAgICAgICAgICAgICAgICBtQ29uZC0+dHJhdmVyc2UoaXQpOwor
ICAgICAgICBpZiAobm9kZS0+Z2V0Qm9keSgpKQorICAgICAgICAgICAgbm9kZS0+Z2V0Qm9keSgp
LT50cmF2ZXJzZSh0aGlzKTsKIAotICAgICAgICAgICAgaWYgKG1Jbml0KQotICAgICAgICAgICAg
ICAgIG1Jbml0LT50cmF2ZXJzZShpdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAobUluaXQpCi0gICAgICAgICAgICAgICAgbUluaXQtPnRyYXZl
cnNlKGl0KTsKKyAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKKyAgICAgICAgICAg
IG5vZGUtPmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CiAKLSAgICAgICAgICAgIGlm
IChtQ29uZCkKLSAgICAgICAgICAgICAgICBtQ29uZC0+dHJhdmVyc2UoaXQpOwotCi0gICAgICAg
ICAgICBpZiAobUJvZHkpCi0gICAgICAgICAgICAgICAgbUJvZHktPnRyYXZlcnNlKGl0KTsKLQot
ICAgICAgICAgICAgaWYgKG1FeHByKQotICAgICAgICAgICAgICAgIG1FeHByLT50cmF2ZXJzZShp
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdC0+ZGVjcmVtZW50RGVwdGgoKTsKKyAgICAgICAg
ZGVjcmVtZW50RGVwdGgoKTsKICAgICB9CiAKLSAgICBpZiAodmlzaXQgJiYgaXQtPnBvc3RWaXNp
dCkKLSAgICAgICAgaXQtPnZpc2l0TG9vcChQb3N0VmlzaXQsIHRoaXMpOworICAgIGlmICh2aXNp
dCAmJiBwb3N0VmlzaXQpCisgICAgICAgIHZpc2l0TG9vcChQb3N0VmlzaXQsIG5vZGUpOwogfQog
CiAvLwogLy8gVHJhdmVyc2UgYSBicmFuY2ggbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5
IG5vZGUgYXBwbHkgaGVyZS4KIC8vCi12b2lkIFRJbnRlcm1CcmFuY2g6OnRyYXZlcnNlKFRJbnRl
cm1UcmF2ZXJzZXIgKml0KQordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJyYW5jaChU
SW50ZXJtQnJhbmNoICpub2RlKQogewogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCi0gICAgaWYg
KGl0LT5wcmVWaXNpdCkKLSAgICAgICAgdmlzaXQgPSBpdC0+dmlzaXRCcmFuY2goUHJlVmlzaXQs
IHRoaXMpOworICAgIGlmIChwcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSB2aXNpdEJyYW5jaChQ
cmVWaXNpdCwgbm9kZSk7CiAKLSAgICBpZiAodmlzaXQgJiYgbUV4cHJlc3Npb24pIHsKLSAgICAg
ICAgaXQtPmluY3JlbWVudERlcHRoKHRoaXMpOwotICAgICAgICBtRXhwcmVzc2lvbi0+dHJhdmVy
c2UoaXQpOwotICAgICAgICBpdC0+ZGVjcmVtZW50RGVwdGgoKTsKKyAgICBpZiAodmlzaXQgJiYg
bm9kZS0+Z2V0RXhwcmVzc2lvbigpKQorICAgIHsKKyAgICAgICAgaW5jcmVtZW50RGVwdGgobm9k
ZSk7CisgICAgICAgIG5vZGUtPmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAg
ICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQogCi0gICAgaWYgKHZpc2l0ICYmIGl0LT5wb3N0
VmlzaXQpCi0gICAgICAgIGl0LT52aXNpdEJyYW5jaChQb3N0VmlzaXQsIHRoaXMpOworICAgIGlm
ICh2aXNpdCAmJiBwb3N0VmlzaXQpCisgICAgICAgIHZpc2l0QnJhbmNoKFBvc3RWaXNpdCwgbm9k
ZSk7CiB9CiAKLXZvaWQgVEludGVybVJhdzo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQp
Cit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlUmF3KFRJbnRlcm1SYXcgKm5vZGUpCiB7
Ci0gICAgaXQtPnZpc2l0UmF3KHRoaXMpOworICAgIHZpc2l0UmF3KG5vZGUpOwogfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRp
YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+
CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9p
bnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0
ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKIAogLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwpAQCAtNTcsMjAgKzU3LDExIEBACiAgICAgaWYgKCFub2RlLT5wcm9t
b3RlKG1JbmZvU2luaykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLy8KICAgICAvLyBT
ZWUgaWYgd2UgY2FuIGZvbGQgY29uc3RhbnRzLgotICAgIC8vCi0gICAgVEludGVybUNvbnN0YW50
VW5pb24gKmxlZnRUZW1wQ29uc3RhbnQgPSBsZWZ0LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAg
ICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqcmlnaHRUZW1wQ29uc3RhbnQgPSByaWdodC0+Z2V0QXND
b25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKGxlZnRUZW1wQ29uc3RhbnQgJiYgcmlnaHRUZW1wQ29u
c3RhbnQpCi0gICAgewotICAgICAgICBUSW50ZXJtVHlwZWQgKnR5cGVkUmV0dXJuTm9kZSA9Ci0g
ICAgICAgICAgICBsZWZ0VGVtcENvbnN0YW50LT5mb2xkKG5vZGUtPmdldE9wKCksIHJpZ2h0VGVt
cENvbnN0YW50LCBtSW5mb1NpbmspOworICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVkTm9kZSA9IG5v
ZGUtPmZvbGQobUluZm9TaW5rKTsKKyAgICBpZiAoZm9sZGVkTm9kZSkKKyAgICAgICAgcmV0dXJu
IGZvbGRlZE5vZGU7CiAKLSAgICAgICAgaWYgKHR5cGVkUmV0dXJuTm9kZSkKLSAgICAgICAgICAg
IHJldHVybiB0eXBlZFJldHVybk5vZGU7Ci0gICAgfQotCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
QEAgLTEyOSwxMCArMTIwLDYgQEAKIFRJbnRlcm1UeXBlZCAqVEludGVybWVkaWF0ZTo6YWRkVW5h
cnlNYXRoKAogICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpjaGlsZCwgY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKQogewotICAgIFRJbnRl
cm1Db25zdGFudFVuaW9uICpjaGlsZFRlbXBDb25zdGFudCA9IDA7Ci0gICAgaWYgKGNoaWxkLT5n
ZXRBc0NvbnN0YW50VW5pb24oKSkKLSAgICAgICAgY2hpbGRUZW1wQ29uc3RhbnQgPSBjaGlsZC0+
Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0KICAgICAvLwogICAgIC8vIE1ha2UgYSBuZXcgbm9kZSBm
b3IgdGhlIG9wZXJhdG9yLgogICAgIC8vCkBAIC0xNDEsMTQgKzEyOCwxMCBAQAogICAgIG5vZGUt
PnNldE9wZXJhbmQoY2hpbGQpOwogICAgIG5vZGUtPnByb21vdGUoZnVuY1JldHVyblR5cGUpOwog
Ci0gICAgaWYgKGNoaWxkVGVtcENvbnN0YW50KQotICAgIHsKLSAgICAgICAgVEludGVybVR5cGVk
ICpuZXdDaGlsZCA9IGNoaWxkVGVtcENvbnN0YW50LT5mb2xkKG9wLCBudWxscHRyLCBtSW5mb1Np
bmspOworICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVkTm9kZSA9IG5vZGUtPmZvbGQobUluZm9TaW5r
KTsKKyAgICBpZiAoZm9sZGVkTm9kZSkKKyAgICAgICAgcmV0dXJuIGZvbGRlZE5vZGU7CiAKLSAg
ICAgICAgaWYgKG5ld0NoaWxkKQotICAgICAgICAgICAgcmV0dXJuIG5ld0NoaWxkOwotICAgIH0K
LQogICAgIHJldHVybiBub2RlOwogfQogCkBAIC0yNDYsNiArMjI5LDIyIEBACiAgICAgcmV0dXJu
IGFnZ05vZGU7CiB9CiAKKy8vIElmIHRoZSBpbnB1dCBub2RlIGlzIG51bGxwdHIsIHJldHVybiBu
dWxscHRyLgorLy8gSWYgdGhlIGlucHV0IG5vZGUgaXMgYSBzZXF1ZW5jZSAoYmxvY2spIG5vZGUs
IHJldHVybiBpdC4KKy8vIElmIHRoZSBpbnB1dCBub2RlIGlzIG5vdCBhIHNlcXVlbmNlIG5vZGUs
IHB1dCBpdCBpbnNpZGUgYSBzZXF1ZW5jZSBub2RlIGFuZCByZXR1cm4gdGhhdC4KK1RJbnRlcm1B
Z2dyZWdhdGUgKlRJbnRlcm1lZGlhdGU6OmVuc3VyZVNlcXVlbmNlKFRJbnRlcm1Ob2RlICpub2Rl
KQoreworICAgIGlmIChub2RlID09IG51bGxwdHIpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ05vZGUgPSBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpOwor
ICAgIGlmIChhZ2dOb2RlICE9IG51bGxwdHIgJiYgYWdnTm9kZS0+Z2V0T3AoKSA9PSBFT3BTZXF1
ZW5jZSkKKyAgICAgICAgcmV0dXJuIGFnZ05vZGU7CisKKyAgICBhZ2dOb2RlID0gbWFrZUFnZ3Jl
Z2F0ZShub2RlLCBub2RlLT5nZXRMaW5lKCkpOworICAgIGFnZ05vZGUtPnNldE9wKEVPcFNlcXVl
bmNlKTsKKyAgICByZXR1cm4gYWdnTm9kZTsKK30KKwogLy8KIC8vIEZvciAiaWYiIHRlc3Qgbm9k
ZXMuICBUaGVyZSBhcmUgdGhyZWUgY2hpbGRyZW47IGEgY29uZGl0aW9uLAogLy8gYSB0cnVlIHBh
dGgsIGFuZCBhIGZhbHNlIHBhdGguICBUaGUgdHdvIHBhdGhzIGFyZSBpbiB0aGUKQEAgLTI2MSw3
ICsyNjAsNyBAQAogICAgIC8vIHRlc3Qgbm93LgogICAgIC8vCiAKLSAgICBpZiAoY29uZC0+Z2V0
QXNUeXBlZCgpICYmIGNvbmQtPmdldEFzVHlwZWQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkpCisg
ICAgaWYgKGNvbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpKQogICAgIHsKICAgICAgICAgaWYgKGNv
bmQtPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRCQ29uc3QoMCkgPT0gdHJ1ZSkKICAgICAgICAg
ewpAQCAtMjc2LDI4ICsyNzUsMzggQEAKICAgICB9CiAKICAgICBUSW50ZXJtU2VsZWN0aW9uICpu
b2RlID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24oCi0gICAgICAgIGNvbmQsIG5vZGVQYWlyLm5vZGUx
LCBub2RlUGFpci5ub2RlMik7CisgICAgICAgIGNvbmQsIGVuc3VyZVNlcXVlbmNlKG5vZGVQYWly
Lm5vZGUxKSwgZW5zdXJlU2VxdWVuY2Uobm9kZVBhaXIubm9kZTIpKTsKICAgICBub2RlLT5zZXRM
aW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRlcm1UeXBlZCAqVEludGVy
bWVkaWF0ZTo6YWRkQ29tbWEoCi0gICAgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQg
KnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorVEludGVybVR5cGVkICpUSW50ZXJtZWRp
YXRlOjphZGRDb21tYShUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQogewotICAgIGlmIChs
ZWZ0LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYKLSAgICAgICAgcmln
aHQtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKKyAgICBUUXVhbGlmaWVy
IHJlc3VsdFF1YWxpZmllciA9IEV2cUNvbnN0OworICAgIC8vIEVTU0wzLjAwIHNlY3Rpb24gMTIu
NDM6IFRoZSByZXN1bHQgb2YgYSBzZXF1ZW5jZSBvcGVyYXRvciBpcyBub3QgYSBjb25zdGFudC1l
eHByZXNzaW9uLgorICAgIGlmIChzaGFkZXJWZXJzaW9uID49IDMwMCB8fCBsZWZ0LT5nZXRRdWFs
aWZpZXIoKSAhPSBFdnFDb25zdCB8fAorICAgICAgICByaWdodC0+Z2V0UXVhbGlmaWVyKCkgIT0g
RXZxQ29uc3QpCiAgICAgewotICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAgICAgIHJlc3VsdFF1
YWxpZmllciA9IEV2cVRlbXBvcmFyeTsKICAgICB9CisKKyAgICBUSW50ZXJtVHlwZWQgKmNvbW1h
Tm9kZSA9IG51bGxwdHI7CisgICAgaWYgKCFsZWZ0LT5oYXNTaWRlRWZmZWN0cygpKQorICAgIHsK
KyAgICAgICAgY29tbWFOb2RlID0gcmlnaHQ7CisgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAg
ICAgIFRJbnRlcm1UeXBlZCAqY29tbWFBZ2dyZWdhdGUgPSBncm93QWdncmVnYXRlKGxlZnQsIHJp
Z2h0LCBsaW5lKTsKLSAgICAgICAgY29tbWFBZ2dyZWdhdGUtPmdldEFzQWdncmVnYXRlKCktPnNl
dE9wKEVPcENvbW1hKTsKLSAgICAgICAgY29tbWFBZ2dyZWdhdGUtPnNldFR5cGUocmlnaHQtPmdl
dFR5cGUoKSk7Ci0gICAgICAgIGNvbW1hQWdncmVnYXRlLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRR
dWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKLSAgICAgICAgcmV0dXJuIGNvbW1hQWdncmVnYXRlOwor
ICAgICAgICBjb21tYU5vZGUgPSBncm93QWdncmVnYXRlKGxlZnQsIHJpZ2h0LCBsaW5lKTsKKyAg
ICAgICAgY29tbWFOb2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRPcChFT3BDb21tYSk7CisgICAg
ICAgIGNvbW1hTm9kZS0+c2V0VHlwZShyaWdodC0+Z2V0VHlwZSgpKTsKICAgICB9CisgICAgY29t
bWFOb2RlLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsK
KyAgICByZXR1cm4gY29tbWFOb2RlOwogfQogCiAvLwpAQCAtMzEwLDI3ICszMTksMzMgQEAKIFRJ
bnRlcm1UeXBlZCAqVEludGVybWVkaWF0ZTo6YWRkU2VsZWN0aW9uKFRJbnRlcm1UeXBlZCAqY29u
ZCwgVEludGVybVR5cGVkICp0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCAqZmFsc2VCbG9jaywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUpCiB7Ci0gICAgLy8gUmlnaHQgbm93IGl0J3Mgc2FmZSB0byBmb2xkIHRlcm5hcnkgb3Bl
cmF0b3JzIG9ubHkgd2hlbiBhbGwgb3BlcmFuZHMKLSAgICAvLyBhcmUgY29uc3RhbnQuIElmIG9u
bHkgdGhlIGNvbmRpdGlvbiBpcyBjb25zdGFudCwgaXQncyB0aGVvcmV0aWNhbGx5Ci0gICAgLy8g
cG9zc2libGUgdG8gZm9sZCB0aGUgdGVybmFyeSBvcGVyYXRvciwgYnV0IHRoYXQgcmVxdWlyZXMg
bWFraW5nIHN1cmUKLSAgICAvLyB0aGF0IHRoZSBub2RlIHJldHVybmVkIGZyb20gaGVyZSB3b24n
dCBiZSB0cmVhdGVkIGFzIGEgY29uc3RhbnQKLSAgICAvLyBleHByZXNzaW9uIGluIGNhc2UgdGhl
IG5vZGUgdGhhdCBnZXRzIGVsaW1pbmF0ZWQgd2FzIG5vdCBhIGNvbnN0YW50Ci0gICAgLy8gZXhw
cmVzc2lvbi4KLSAgICBpZiAoY29uZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgJiYKLSAgICAgICAg
dHJ1ZUJsb2NrLT5nZXRBc0NvbnN0YW50VW5pb24oKSAmJgotICAgICAgICBmYWxzZUJsb2NrLT5n
ZXRBc0NvbnN0YW50VW5pb24oKSkKKyAgICBUUXVhbGlmaWVyIHJlc3VsdFF1YWxpZmllciA9IEV2
cVRlbXBvcmFyeTsKKyAgICBpZiAoY29uZC0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QgJiYg
dHJ1ZUJsb2NrLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCAmJgorICAgICAgICBmYWxzZUJs
b2NrLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKICAgICB7CisgICAgICAgIHJlc3VsdFF1
YWxpZmllciA9IEV2cUNvbnN0OworICAgIH0KKyAgICAvLyBOb3RlIHRoYXQgdGhlIG5vZGUgcmVz
dWx0aW5nIGZyb20gaGVyZSBjYW4gYmUgYSBjb25zdGFudCB1bmlvbiB3aXRob3V0IGJlaW5nIHF1
YWxpZmllZCBhcworICAgIC8vIGNvbnN0YW50LgorICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50
VW5pb24oKSkKKyAgICB7CiAgICAgICAgIGlmIChjb25kLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+
Z2V0QkNvbnN0KDApKQorICAgICAgICB7CisgICAgICAgICAgICB0cnVlQmxvY2stPmdldFR5cGVQ
b2ludGVyKCktPnNldFF1YWxpZmllcihyZXN1bHRRdWFsaWZpZXIpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWVCbG9jazsKKyAgICAgICAgfQogICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZhbHNlQmxvY2stPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihyZXN1bHRR
dWFsaWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlQmxvY2s7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICAvLwogICAgIC8vIE1ha2UgYSBzZWxlY3Rpb24gbm9kZS4KICAgICAvLwogICAg
IFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihjb25kLCB0cnVl
QmxvY2ssIGZhbHNlQmxvY2ssIHRydWVCbG9jay0+Z2V0VHlwZSgpKTsKLSAgICBub2RlLT5nZXRU
eXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKKyAgICBub2RlLT5nZXRU
eXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocmVzdWx0UXVhbGlmaWVyKTsKICAgICBub2RlLT5z
ZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIG5vZGU7CkBAIC0zNjAsOCArMzc1LDkgQEAKIC8v
IFJldHVybnMgdGhlIGNvbnN0YW50IHVuaW9uIG5vZGUgY3JlYXRlZC4KIC8vCiAKLVRJbnRlcm1D
b25zdGFudFVuaW9uICpUSW50ZXJtZWRpYXRlOjphZGRDb25zdGFudFVuaW9uKAotICAgIFRDb25z
dGFudFVuaW9uICpjb25zdGFudFVuaW9uLCBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSkKK1RJbnRlcm1Db25zdGFudFVuaW9uICpUSW50ZXJtZWRpYXRlOjphZGRDb25z
dGFudFVuaW9uKGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdGFudFVuaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUg
JnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKQogewogICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICpub2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKGNvbnN0YW50VW5pb24sIHR5cGUpOwog
ICAgIG5vZGUtPnNldExpbmUobGluZSk7CkBAIC0zOTksNyArNDE1LDcgQEAKICAgICBUTG9vcFR5
cGUgdHlwZSwgVEludGVybU5vZGUgKmluaXQsIFRJbnRlcm1UeXBlZCAqY29uZCwgVEludGVybVR5
cGVkICpleHByLAogICAgIFRJbnRlcm1Ob2RlICpib2R5LCBjb25zdCBUU291cmNlTG9jICZsaW5l
KQogewotICAgIFRJbnRlcm1Ob2RlICpub2RlID0gbmV3IFRJbnRlcm1Mb29wKHR5cGUsIGluaXQs
IGNvbmQsIGV4cHIsIGJvZHkpOworICAgIFRJbnRlcm1Ob2RlICpub2RlID0gbmV3IFRJbnRlcm1M
b29wKHR5cGUsIGluaXQsIGNvbmQsIGV4cHIsIGVuc3VyZVNlcXVlbmNlKGJvZHkpKTsKICAgICBu
b2RlLT5zZXRMaW5lKGxpbmUpOwogCiAgICAgcmV0dXJuIG5vZGU7CkBAIC00MjcsMTcgKzQ0Myw2
NiBAQAogLy8gVGhpcyBpcyB0byBiZSBleGVjdXRlZCBvbmNlIHRoZSBmaW5hbCByb290IGlzIHB1
dCBvbiB0b3AgYnkgdGhlIHBhcnNpbmcKIC8vIHByb2Nlc3MuCiAvLwotYm9vbCBUSW50ZXJtZWRp
YXRlOjpwb3N0UHJvY2VzcyhUSW50ZXJtTm9kZSAqcm9vdCkKK1RJbnRlcm1BZ2dyZWdhdGUgKlRJ
bnRlcm1lZGlhdGU6OnBvc3RQcm9jZXNzKFRJbnRlcm1Ob2RlICpyb290KQogewotICAgIGlmIChy
b290ID09IE5VTEwpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChyb290ID09IG51bGxw
dHIpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8KLSAgICAvLyBGaXJzdCwgZmlu
aXNoIG9mZiB0aGUgdG9wIGxldmVsIHNlcXVlbmNlLCBpZiBhbnkKKyAgICAvLyBGaW5pc2ggb2Zm
IHRoZSB0b3AgbGV2ZWwgc2VxdWVuY2UsIGlmIGFueQogICAgIC8vCiAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqYWdnUm9vdCA9IHJvb3QtPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgaWYgKGFnZ1Jvb3Qg
JiYgYWdnUm9vdC0+Z2V0T3AoKSA9PSBFT3BOdWxsKQorICAgIGlmIChhZ2dSb290ICE9IG51bGxw
dHIgJiYgYWdnUm9vdC0+Z2V0T3AoKSA9PSBFT3BOdWxsKQorICAgIHsKICAgICAgICAgYWdnUm9v
dC0+c2V0T3AoRU9wU2VxdWVuY2UpOworICAgIH0KKyAgICBlbHNlIGlmIChhZ2dSb290ID09IG51
bGxwdHIgfHwgYWdnUm9vdC0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSkKKyAgICB7CisgICAgICAg
IGFnZ1Jvb3QgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgICAgIGFn
Z1Jvb3QtPnNldExpbmUocm9vdC0+Z2V0TGluZSgpKTsKKyAgICAgICAgYWdnUm9vdC0+Z2V0U2Vx
dWVuY2UoKS0+cHVzaF9iYWNrKHJvb3QpOworICAgIH0KIAotICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBhZ2dSb290OwogfQorCitUSW50ZXJtVHlwZWQgKlRJbnRlcm1lZGlhdGU6OmZvbGRB
Z2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSkKK3sKKyAgICBzd2l0
Y2ggKGFnZ3JlZ2F0ZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9wQXRhbjoKKyAg
ICAgICAgY2FzZSBFT3BQb3c6CisgICAgICAgIGNhc2UgRU9wTW9kOgorICAgICAgICBjYXNlIEVP
cE1pbjoKKyAgICAgICAgY2FzZSBFT3BNYXg6CisgICAgICAgIGNhc2UgRU9wQ2xhbXA6CisgICAg
ICAgIGNhc2UgRU9wTWl4OgorICAgICAgICBjYXNlIEVPcFN0ZXA6CisgICAgICAgIGNhc2UgRU9w
U21vb3RoU3RlcDoKKyAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAgIGNhc2UgRU9wT3V0ZXJQ
cm9kdWN0OgorICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICBjYXNlIEVPcExlc3NU
aGFuRXF1YWw6CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgRU9w
R3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JFcXVhbDoKKyAgICAgICAg
Y2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAg
ICAgY2FzZSBFT3BEb3Q6CisgICAgICAgIGNhc2UgRU9wQ3Jvc3M6CisgICAgICAgIGNhc2UgRU9w
RmFjZUZvcndhcmQ6CisgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKKyAgICAgICAgY2FzZSBFT3BS
ZWZyYWN0OgorICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZS0+Zm9sZChtSW5mb1NpbmspOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIGZv
bGRpbmcgYXJyYXkgY29uc3RydWN0b3JzCisgICAgICAgICAgICBpZiAoYWdncmVnYXRlLT5pc0Nv
bnN0cnVjdG9yKCkgJiYgIWFnZ3JlZ2F0ZS0+aXNBcnJheSgpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBhZ2dyZWdhdGUtPmZvbGQobUluZm9TaW5rKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC8vIENvbnN0YW50IGZvbGRpbmcgbm90IHN1cHBvcnRlZCBmb3Ig
dGhlIGJ1aWx0LWluLgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Ob2RlU2VhcmNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvTm9kZVNlYXJjaC5oCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9Ob2RlU2VhcmNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDggQEAKIHsKICAg
cHVibGljOgogICAgIE5vZGVTZWFyY2hUcmF2ZXJzZXIoKQotICAgICAgICA6IG1Gb3VuZChmYWxz
ZSkKKyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAg
ICAgICAgbUZvdW5kKGZhbHNlKQogICAgIHt9CiAKICAgICBib29sIGZvdW5kKCkgY29uc3QgeyBy
ZXR1cm4gbUZvdW5kOyB9CkBAIC01MywyOCArNTQsNiBAQAogICAgIH0KIH07CiAKLWNsYXNzIEZp
bmRTaWRlRWZmZWN0UmV3cml0aW5nIDogcHVibGljIE5vZGVTZWFyY2hUcmF2ZXJzZXI8RmluZFNp
ZGVFZmZlY3RSZXdyaXRpbmc+Ci17Ci0gIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCi0gICAgewotICAgICAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcExvZ2lj
YWxPcjoKLSAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6Ci0gICAgICAgICAgICBpZiAobm9k
ZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBtRm91bmQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biAhbUZvdW5kOwotICAgIH0KLX07Ci0KIH0KIAogI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFU
T1JfTk9ERVNFQVJDSF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDEzIEBACiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdFVWZWMzOiByZXR1cm4gInV2ZWMzIjsKICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0VVZlYzQ6IHJldHVybiAidXZlYzQiOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQyOiByZXR1cm4gIm1hdDIiOworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDM6IHJldHVy
biAibWF0MngzIjsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mng0OiByZXR1cm4gIm1hdDJ4
NCI7CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjogcmV0dXJuICJtYXQzeDIiOwogICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOiByZXR1cm4gIm1hdDMiOworICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQzeDQ6IHJldHVybiAibWF0M3g0IjsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0NHgyOiByZXR1cm4gIm1hdDR4MiI7CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4Mzog
cmV0dXJuICJtYXQ0eDMiOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OiByZXR1cm4gIm1h
dDQiOwogICAgICAgLy8gTm90ZTogRU9wQ29uc3RydWN0U3RydWN0IGNhbid0IGJlIGhhbmRsZWQg
aGVyZQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9PcGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1LDcgKzE1LDYgQEAKICAgICBFT3BOdWxsLCAgICAgICAgICAg
IC8vIGlmIGluIGEgbm9kZSwgc2hvdWxkIG9ubHkgbWVhbiBhIG5vZGUgaXMgc3RpbGwgYmVpbmcg
YnVpbHQKICAgICBFT3BTZXF1ZW5jZSwgICAgICAgIC8vIGRlbm90ZXMgYSBsaXN0IG9mIHN0YXRl
bWVudHMsIG9yIHBhcmFtZXRlcnMsIGV0Yy4KICAgICBFT3BGdW5jdGlvbkNhbGwsCi0gICAgRU9w
SW50ZXJuYWxGdW5jdGlvbkNhbGwsIC8vIENhbGwgdG8gYW4gaW50ZXJuYWwgaGVscGVyIGZ1bmN0
aW9uCiAgICAgRU9wRnVuY3Rpb24sICAgICAgICAvLyBGb3IgZnVuY3Rpb24gZGVmaW5pdGlvbgog
ICAgIEVPcFBhcmFtZXRlcnMsICAgICAgLy8gYW4gYWdncmVnYXRlIGxpc3RpbmcgdGhlIHBhcmFt
ZXRlcnMgdG8gYSBmdW5jdGlvbgogCkBAIC0xOTIsNyArMTkxLDEzIEBACiAgICAgRU9wQ29uc3Ry
dWN0VVZlYzMsCiAgICAgRU9wQ29uc3RydWN0VVZlYzQsCiAgICAgRU9wQ29uc3RydWN0TWF0MiwK
KyAgICBFT3BDb25zdHJ1Y3RNYXQyeDMsCisgICAgRU9wQ29uc3RydWN0TWF0Mng0LAorICAgIEVP
cENvbnN0cnVjdE1hdDN4MiwKICAgICBFT3BDb25zdHJ1Y3RNYXQzLAorICAgIEVPcENvbnN0cnVj
dE1hdDN4NCwKKyAgICBFT3BDb25zdHJ1Y3RNYXQ0eDIsCisgICAgRU9wQ29uc3RydWN0TWF0NHgz
LAogICAgIEVPcENvbnN0cnVjdE1hdDQsCiAgICAgRU9wQ29uc3RydWN0U3RydWN0LAogCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRF
U1NMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NMLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxLDcgKzIxLDggQEAKICAgICAgICAgICAgICAgICBib29sIGZvcmNlSGln
aHApOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNp
b24oVFByZWNpc2lvbiBwcmVjaXNpb24pOworICBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24o
VFByZWNpc2lvbiBwcmVjaXNpb24pIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIGJvb2wgbUZv
cmNlSGlnaHA7CiB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5jcHAJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL091dHB1dEdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwxNCBAQAogICAg
IHsKICAgICAgICAgb3V0IDw8ICJ3ZWJnbF9GcmFnRGF0YSI7CiAgICAgfQorICAgIGVsc2UgaWYg
KHN5bWJvbCA9PSAiZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUIikKKyAgICB7CisgICAgICAgIG91
dCA8PCAiYW5nbGVfU2Vjb25kYXJ5RnJhZ0NvbG9yIjsKKyAgICB9CisgICAgZWxzZSBpZiAoc3lt
Ym9sID09ICJnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCIpCisgICAgeworICAgICAgICBvdXQgPDwg
ImFuZ2xlX1NlY29uZGFyeUZyYWdEYXRhIjsKKyAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAg
ICAgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFN5bWJvbChub2RlKTsKQEAgLTY3LDYgKzc1LDcgQEAK
ICAgICAgICAgInRleHR1cmUyRFByb2oiLCAidGV4dHVyZVByb2oiLAogICAgICAgICAidGV4dHVy
ZTJETG9kIiwgInRleHR1cmVMb2QiLAogICAgICAgICAidGV4dHVyZTJEUHJvakxvZCIsICJ0ZXh0
dXJlUHJvakxvZCIsCisgICAgICAgICJ0ZXh0dXJlMkRSZWN0IiwgInRleHR1cmUiLAogICAgICAg
ICAidGV4dHVyZUN1YmUiLCAidGV4dHVyZSIsCiAgICAgICAgICJ0ZXh0dXJlQ3ViZUxvZCIsICJ0
ZXh0dXJlTG9kIiwKICAgICAgICAgLy8gRXh0ZW5zaW9ucwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1
dEdMU0wuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw5
ICsyMSw5IEBACiAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKIAogICBw
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNp
c2lvbik7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wqIG5vZGUp
OwotICAgIHZpcnR1YWwgVFN0cmluZyB0cmFuc2xhdGVUZXh0dXJlRnVuY3Rpb24oVFN0cmluZyYg
bmFtZSk7CisgICAgYm9vbCB3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pIG92ZXJy
aWRlOworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3ZlcnJpZGU7
CisgICAgVFN0cmluZyB0cmFuc2xhdGVUZXh0dXJlRnVuY3Rpb24oVFN0cmluZyAmbmFtZSkgb3Zl
cnJpZGU7CiB9OwogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfT1VUUFVUR0xTTF9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
T3V0cHV0R0xTTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
T3V0cHV0R0xTTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw5ICs4OSwzMSBAQAogICAg
IHdyaXRlVHJpcGxldCh2aXNpdCwgcHJlU3RyaW5nLmNfc3RyKCksICIsICIsICIpIik7CiB9CiAK
K3ZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlwZSAm
dHlwZSkKK3sKKyAgICBpZiAodHlwZS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnbWVudE91dCB8
fCB0eXBlLmdldFF1YWxpZmllcigpID09IEV2cVZlcnRleEluKQorICAgIHsKKyAgICAgICAgY29u
c3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVyID0gdHlwZS5nZXRMYXlvdXRRdWFs
aWZpZXIoKTsKKyAgICAgICAgaWYgKGxheW91dFF1YWxpZmllci5sb2NhdGlvbiA+PSAwKQorICAg
ICAgICB7CisgICAgICAgICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CisgICAg
ICAgICAgICBvdXQgPDwgImxheW91dChsb2NhdGlvbiA9ICIgPDwgbGF5b3V0UXVhbGlmaWVyLmxv
Y2F0aW9uIDw8ICIpICI7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgVE91dHB1dEdMU0xC
YXNlOjp3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSkKIHsKICAgICBUSW5mb1Np
bmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CisgICAgaWYgKHR5cGUuaXNJbnZhcmlhbnQoKSkKKyAg
ICB7CisgICAgICAgIG91dCA8PCAiaW52YXJpYW50ICI7CisgICAgfQorICAgIGlmICh0eXBlLmdl
dEJhc2ljVHlwZSgpID09IEVidEludGVyZmFjZUJsb2NrKQorICAgIHsKKyAgICAgICAgVEludGVy
ZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IHR5cGUuZ2V0SW50ZXJmYWNlQmxvY2soKTsKKyAg
ICAgICAgZGVjbGFyZUludGVyZmFjZUJsb2NrTGF5b3V0KGludGVyZmFjZUJsb2NrKTsKKyAgICB9
CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOwogICAgIGlm
IChxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5ICYmIHF1YWxpZmllciAhPSBFdnFHbG9iYWwpCiAg
ICAgewpAQCAtMTAwLDIwICsxMjIsMTQgQEAKICAgICAgICAgICAgIHN3aXRjaCAocXVhbGlmaWVy
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICBjYXNlIEV2cUF0dHJpYnV0ZToKLSAgICAg
ICAgICAgICAgICBvdXQgPDwgImluIiA8PCAiICI7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJp
biAiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEV2cVZhcnlp
bmdJbjoKLSAgICAgICAgICAgICAgICBvdXQgPDwgImluIiA8PCAiICI7CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICJpbiAiOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBj
YXNlIEV2cVZhcnlpbmdPdXQ6Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJvdXQiIDw8ICIgIjsK
KyAgICAgICAgICAgICAgICBvdXQgPDwgIm91dCAiOwogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEV2cUludmFyaWFudFZhcnlpbmdJbjoKLSAgICAgICAgICAgICAg
ICBvdXQgPDwgImludmFyaWFudCBpbiIgPDwgIiAiOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEV2cUludmFyaWFudFZhcnlpbmdPdXQ6Ci0gICAgICAgICAgICAg
ICAgb3V0IDw8ICJpbnZhcmlhbnQgb3V0IiA8PCAiICI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgb3V0IDw8IHR5cGUuZ2V0
UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM2
LDYgKzE1MiwxMSBAQAogICAgICAgICAgICAgbURlY2xhcmVkU3RydWN0cy5pbnNlcnQoc3RydWN0
dXJlLT51bmlxdWVJZCgpKTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmICh0eXBlLmdl
dEJhc2ljVHlwZSgpID09IEVidEludGVyZmFjZUJsb2NrKQorICAgIHsKKyAgICAgICAgVEludGVy
ZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IHR5cGUuZ2V0SW50ZXJmYWNlQmxvY2soKTsKKyAg
ICAgICAgZGVjbGFyZUludGVyZmFjZUJsb2NrKGludGVyZmFjZUJsb2NrKTsKKyAgICB9CiAgICAg
ZWxzZQogICAgIHsKICAgICAgICAgaWYgKHdyaXRlVmFyaWFibGVQcmVjaXNpb24odHlwZS5nZXRQ
cmVjaXNpb24oKSkpCkBAIC0zNzUsNiArMzk2LDIyIEBACiAgICAgICAgICAgICB2aXNpdENoaWxk
cmVuID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcElu
ZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6CisgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQp
CisgICAgICAgICAgeworICAgICAgICAgICAgICBvdXQgPDwgIi4iOworICAgICAgICAgICAgICBj
b25zdCBUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrID0gbm9kZS0+Z2V0TGVmdCgpLT5n
ZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKTsKKyAgICAgICAgICAgICAgY29uc3QgVEludGVy
bUNvbnN0YW50VW5pb24gKmluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVu
aW9uKCk7CisgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBpbnRlcmZhY2VCbG9j
ay0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07CisKKyAgICAgICAgICAgICAgVFN0cmlu
ZyBmaWVsZE5hbWUgPSBmaWVsZC0+bmFtZSgpOworICAgICAgICAgICAgICBBU1NFUlQoIW1TeW1i
b2xUYWJsZS5maW5kQnVpbHRJbihpbnRlcmZhY2VCbG9jay0+bmFtZSgpLCBtU2hhZGVyVmVyc2lv
bikpOworICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNoTmFtZShmaWVsZE5hbWUpOworCisg
ICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7CisgICAgICAgICAgICAgIHZpc2l0Q2hpbGRy
ZW4gPSBmYWxzZTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVP
cFZlY3RvclN3aXp6bGU6CiAgICAgICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICB7
CkBAIC03ODUsNyArODIyLDcgQEAKICAgICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0
cyh0eXBlKTsKICAgICAgICAgfQogCi0gICAgICAgIG91dCA8PCAiICIgPDwgaGFzaEZ1bmN0aW9u
TmFtZShub2RlLT5nZXROYW1lKCkpOworICAgICAgICBvdXQgPDwgIiAiIDw8IGhhc2hGdW5jdGlv
bk5hbWVJZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpOwogCiAgICAgICAgIG91dCA8PCAiKCI7
CiAgICAgICAgIHdyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKCoobm9kZS0+Z2V0U2VxdWVuY2UoKSkp
OwpAQCAtODAzLDcgKzg0MCw3IEBACiAgICAgICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tl
dHModHlwZSk7CiAgICAgICAgIH0KIAotICAgICAgICBvdXQgPDwgIiAiIDw8IGhhc2hGdW5jdGlv
bk5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVuY3Rp
b25OYW1lSWZOZWVkZWQobm9kZS0+Z2V0TmFtZU9iaigpKTsKIAogICAgICAgICBpbmNyZW1lbnRE
ZXB0aChub2RlKTsKICAgICAgICAgLy8gRnVuY3Rpb24gZGVmaW5pdGlvbiBub2RlIGNvbnRhaW5z
IG9uZSBvciB0d28gY2hpbGRyZW4gbm9kZXMKQEAgLTgzMiwyMSArODY5LDEyIEBACiAgICAgICBj
YXNlIEVPcEZ1bmN0aW9uQ2FsbDoKICAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KICAgICAgICAg
aWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICAgICAgb3V0IDw8IGhhc2hGdW5jdGlvbk5h
bWUobm9kZS0+Z2V0TmFtZSgpKSA8PCAiKCI7CisgICAgICAgICAgICBvdXQgPDwgaGFzaEZ1bmN0
aW9uTmFtZUlmTmVlZGVkKG5vZGUtPmdldE5hbWVPYmooKSkgPDwgIigiOwogICAgICAgICBlbHNl
IGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICAgICAgb3V0IDw8ICIsICI7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG91dCA8PCAiKSI7CiAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BJbnRlcm5hbEZ1bmN0aW9uQ2FsbDoKLSAgICAgICAgLy8gRnVuY3Rpb24gY2FsbCB0byBh
biBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24uCi0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNp
dCkKLSAgICAgICAgICAgIG91dCA8PCBub2RlLT5nZXROYW1lKCkgPDwgIigiOwotICAgICAgICBl
bHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICAgICAgb3V0IDw8ICIsICI7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG91dCA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBFT3BQYXJhbWV0ZXJzOgogICAgICAgICAvLyBGdW5jdGlvbiBwYXJhbWV0ZXJzLgogICAg
ICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwpAQCAtODYxLDYgKzg4OSw3IEBACiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5v
ZGUtPmdldFNlcXVlbmNlKCkpOwogICAgICAgICAgICAgY29uc3QgVEludGVybVR5cGVkICp2YXJp
YWJsZSA9IHNlcXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAgIHdyaXRl
TGF5b3V0UXVhbGlmaWVyKHZhcmlhYmxlLT5nZXRUeXBlKCkpOwogICAgICAgICAgICAgd3JpdGVW
YXJpYWJsZVR5cGUodmFyaWFibGUtPmdldFR5cGUoKSk7CiAgICAgICAgICAgICBvdXQgPDwgIiAi
OwogICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IHRydWU7CkBAIC05MjMsMTIgKzk1
Miw0MiBAQAogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDoKICAgICAgICAgd3JpdGVDb25z
dHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIml2ZWM0Iik7CiAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVSW50OgorICAgICAgICB3cml0ZUNvbnN0
cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAidWludCIpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzI6CisgICAgICAgIHdyaXRlQ29uc3Ry
dWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJ1dmVjMiIpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzM6CisgICAgICAgIHdyaXRlQ29uc3Ry
dWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJ1dmVjMyIpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzQ6CisgICAgICAgIHdyaXRlQ29uc3Ry
dWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJ1dmVjNCIpOworICAgICAgICBi
cmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKICAgICAgICAgd3JpdGVDb25zdHJ1
Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDIiKTsKICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKKyAgICAgICAgd3JpdGVDb25zdHJ1
Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDJ4MyIpOworICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mng0OgorICAgICAgICB3cml0ZUNvbnN0
cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0Mng0Iik7CisgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6CisgICAgICAgIHdyaXRlQ29u
c3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJtYXQzeDIiKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6CiAgICAgICAgIHdyaXRlQ29u
c3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJtYXQzIik7CiAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6CisgICAgICAgIHdyaXRlQ29u
c3RydWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJtYXQzeDQiKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKKyAgICAgICAgd3JpdGVD
b25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDR4MiIpOworICAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgzOgorICAgICAgICB3cml0
ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0NHgzIik7Cisg
ICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgogICAgICAgICB3cml0
ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0NCIpOwogICAg
ICAgICBicmVhazsKQEAgLTEwMzAsOCArMTA4OSwxMiBAQAogICAgIFRJbmZvU2lua0Jhc2UgJm91
dCA9IG9ialNpbmsoKTsKIAogICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwotICAgIC8vIExvb3Ag
aGVhZGVyLgorCiAgICAgVExvb3BUeXBlIGxvb3BUeXBlID0gbm9kZS0+Z2V0VHlwZSgpOworCisg
ICAgLy8gT25seSBmb3IgbG9vcHMgY2FuIGJlIHVucm9sbGVkCisgICAgQVNTRVJUKCFub2RlLT5n
ZXRVbnJvbGxGbGFnKCkgfHwgbG9vcFR5cGUgPT0gRUxvb3BGb3IpOworCiAgICAgaWYgKGxvb3BU
eXBlID09IEVMb29wRm9yKSAgLy8gZm9yIGxvb3AKICAgICB7CiAgICAgICAgIGlmICghbm9kZS0+
Z2V0VW5yb2xsRmxhZygpKQpAQCAtMTA0OCw2ICsxMTExLDggQEAKICAgICAgICAgICAgIGlmIChu
b2RlLT5nZXRFeHByZXNzaW9uKCkpCiAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0RXhwcmVzc2lv
bigpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAgIG91dCA8PCAiKVxuIjsKKworICAgICAg
ICAgICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0Qm9keSgpKTsKICAgICAgICAgfQogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKQEAgLTEwNjAsNiArMTEyNSwxNiBAQAogICAgICAgICAgICAgb3V0
IDw8ICJmb3IgKGludCAiIDw8IG5hbWUgPDwgIiA9IDA7ICIKICAgICAgICAgICAgICAgICA8PCBu
YW1lIDw8ICIgPCAxOyAiCiAgICAgICAgICAgICAgICAgPDwgIisrIiA8PCBuYW1lIDw8ICIpXG4i
OworCisgICAgICAgICAgICBvdXQgPDwgIntcbiI7CisgICAgICAgICAgICBtTG9vcFVucm9sbFN0
YWNrLnB1c2gobm9kZSk7CisgICAgICAgICAgICB3aGlsZSAobUxvb3BVbnJvbGxTdGFjay5zYXRp
c2ZpZXNMb29wQ29uZGl0aW9uKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmlz
aXRDb2RlQmxvY2sobm9kZS0+Z2V0Qm9keSgpKTsKKyAgICAgICAgICAgICAgICBtTG9vcFVucm9s
bFN0YWNrLnN0ZXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1Mb29wVW5yb2xsU3Rh
Y2sucG9wKCk7CisgICAgICAgICAgICBvdXQgPDwgIn1cbiI7CiAgICAgICAgIH0KICAgICB9CiAg
ICAgZWxzZSBpZiAobG9vcFR5cGUgPT0gRUxvb3BXaGlsZSkgIC8vIHdoaWxlIGxvb3AKQEAgLTEw
NjgsMzkgKzExNDMsMjIgQEAKICAgICAgICAgQVNTRVJUKG5vZGUtPmdldENvbmRpdGlvbigpICE9
IE5VTEwpOwogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAg
ICAgICAgIG91dCA8PCAiKVxuIjsKKworICAgICAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRC
b2R5KCkpOwogICAgIH0KICAgICBlbHNlICAvLyBkby13aGlsZSBsb29wCiAgICAgewogICAgICAg
ICBBU1NFUlQobG9vcFR5cGUgPT0gRUxvb3BEb1doaWxlKTsKICAgICAgICAgb3V0IDw8ICJkb1xu
IjsKLSAgICB9CiAKLSAgICAvLyBMb29wIGJvZHkuCi0gICAgaWYgKG5vZGUtPmdldFVucm9sbEZs
YWcoKSkKLSAgICB7Ci0gICAgICAgIG91dCA8PCAie1xuIjsKLSAgICAgICAgbUxvb3BVbnJvbGxT
dGFjay5wdXNoKG5vZGUpOwotICAgICAgICB3aGlsZSAobUxvb3BVbnJvbGxTdGFjay5zYXRpc2Zp
ZXNMb29wQ29uZGl0aW9uKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZpc2l0Q29kZUJsb2Nr
KG5vZGUtPmdldEJvZHkoKSk7Ci0gICAgICAgICAgICBtTG9vcFVucm9sbFN0YWNrLnN0ZXAoKTsK
LSAgICAgICAgfQotICAgICAgICBtTG9vcFVucm9sbFN0YWNrLnBvcCgpOwotICAgICAgICBvdXQg
PDwgIn1cbiI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7CiAgICAgICAgIHZpc2l0Q29kZUJsb2Nr
KG5vZGUtPmdldEJvZHkoKSk7Ci0gICAgfQogCi0gICAgLy8gTG9vcCBmb290ZXIuCi0gICAgaWYg
KGxvb3BUeXBlID09IEVMb29wRG9XaGlsZSkgIC8vIGRvLXdoaWxlIGxvb3AKLSAgICB7CiAgICAg
ICAgIG91dCA8PCAid2hpbGUgKCI7CiAgICAgICAgIEFTU0VSVChub2RlLT5nZXRDb25kaXRpb24o
KSAhPSBOVUxMKTsKICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMp
OwogICAgICAgICBvdXQgPDwgIik7XG4iOwogICAgIH0KKwogICAgIGRlY3JlbWVudERlcHRoKCk7
CiAKICAgICAvLyBObyBuZWVkIHRvIHZpc2l0IGNoaWxkcmVuLiBUaGV5IGhhdmUgYmVlbiBhbHJl
YWR5IHByb2Nlc3NlZCBpbgpAQCAtMTE1NSw2ICsxMjEzLDEwIEBACiAgICAgewogICAgICAgICBv
dXQgPDwgIm1hdCI7CiAgICAgICAgIG91dCA8PCB0eXBlLmdldE5vbWluYWxTaXplKCk7CisgICAg
ICAgIGlmICh0eXBlLmdldFNlY29uZGFyeVNpemUoKSAhPSB0eXBlLmdldE5vbWluYWxTaXplKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAieCIgPDwgdHlwZS5nZXRTZWNvbmRhcnlT
aXplKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodHlwZS5pc1ZlY3RvcigpKQog
ICAgIHsKQEAgLTExNjksNiArMTIzMSw5IEBACiAgICAgICAgICAgY2FzZSBFYnRCb29sOgogICAg
ICAgICAgICAgb3V0IDw8ICJidmVjIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNh
c2UgRWJ0VUludDoKKyAgICAgICAgICAgIG91dCA8PCAidXZlYyI7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAg
ICAgfQpAQCAtMTIwMywxMiArMTI2OCwxNiBAQAogICAgIHJldHVybiBoYXNoTmFtZShuYW1lKTsK
IH0KIAotVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbWUoY29uc3QgVFN0
cmluZyAmbWFuZ2xlZF9uYW1lKQorVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlv
bk5hbWVJZk5lZWRlZChjb25zdCBUTmFtZSAmbWFuZ2xlZE5hbWUpCiB7Ci0gICAgVFN0cmluZyBu
YW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobWFuZ2xlZF9uYW1lKTsKLSAgICBpZiAobVN5
bWJvbFRhYmxlLmZpbmRCdWlsdEluKG1hbmdsZWRfbmFtZSwgbVNoYWRlclZlcnNpb24pICE9IE5V
TEwgfHwgbmFtZSA9PSAibWFpbiIpCisgICAgVFN0cmluZyBtYW5nbGVkU3RyID0gbWFuZ2xlZE5h
bWUuZ2V0U3RyaW5nKCk7CisgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5h
bWUobWFuZ2xlZFN0cik7CisgICAgaWYgKG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihtYW5nbGVk
U3RyLCBtU2hhZGVyVmVyc2lvbikgIT0gbnVsbHB0ciB8fCBuYW1lID09ICJtYWluIikKICAgICAg
ICAgcmV0dXJuIHRyYW5zbGF0ZVRleHR1cmVGdW5jdGlvbihuYW1lKTsKLSAgICByZXR1cm4gaGFz
aE5hbWUobmFtZSk7CisgICAgaWYgKG1hbmdsZWROYW1lLmlzSW50ZXJuYWwoKSkKKyAgICAgICAg
cmV0dXJuIG5hbWU7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gaGFzaE5hbWUobmFtZSk7CiB9
CiAKIGJvb2wgVE91dHB1dEdMU0xCYXNlOjpzdHJ1Y3REZWNsYXJlZChjb25zdCBUU3RydWN0dXJl
ICpzdHJ1Y3R1cmUpIGNvbnN0CkBAIC0xMjQxLDMgKzEzMTAsNzAgQEAKICAgICBvdXQgPDwgIn0i
OwogfQogCit2b2lkIFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZUludGVyZmFjZUJsb2NrTGF5b3V0
KGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2spCit7CisgICAgVEluZm9TaW5r
QmFzZSAmb3V0ID0gb2JqU2luaygpOworCisgICAgb3V0IDw8ICJsYXlvdXQoIjsKKworICAgIHN3
aXRjaCAoaW50ZXJmYWNlQmxvY2stPmJsb2NrU3RvcmFnZSgpKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBFYnNVbnNwZWNpZmllZDoKKyAgICAgICAgY2FzZSBFYnNTaGFyZWQ6CisgICAgICAgICAgICAv
LyBEZWZhdWx0IGJsb2NrIHN0b3JhZ2UgaXMgc2hhcmVkLgorICAgICAgICAgICAgb3V0IDw8ICJz
aGFyZWQiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFYnNQYWNrZWQ6Cisg
ICAgICAgICAgICBvdXQgPDwgInBhY2tlZCI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEVic1N0ZDE0MDoKKyAgICAgICAgICAgIG91dCA8PCAic3RkMTQwIjsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgb3V0IDw8ICIsICI7CisKKyAgICBz
d2l0Y2ggKGludGVyZmFjZUJsb2NrLT5tYXRyaXhQYWNraW5nKCkpCisgICAgeworICAgICAgICBj
YXNlIEVtcFVuc3BlY2lmaWVkOgorICAgICAgICBjYXNlIEVtcENvbHVtbk1ham9yOgorICAgICAg
ICAgICAgLy8gRGVmYXVsdCBtYXRyaXggcGFja2luZyBpcyBjb2x1bW4gbWFqb3IuCisgICAgICAg
ICAgICBvdXQgPDwgImNvbHVtbl9tYWpvciI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEVtcFJvd01ham9yOgorICAgICAgICAgICAgb3V0IDw8ICJyb3dfbWFqb3IiOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBvdXQgPDwgIikgIjsKK30K
Kwordm9pZCBUT3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVJbnRlcmZhY2VCbG9jayhjb25zdCBUSW50
ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrKQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9
IG9ialNpbmsoKTsKKworICAgIG91dCA8PCBoYXNoTmFtZShpbnRlcmZhY2VCbG9jay0+bmFtZSgp
KSA8PCAie1xuIjsKKyAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBpbnRlcmZhY2VCbG9j
ay0+ZmllbGRzKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyAr
K2kpCisgICAgeworICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkID0gZmllbGRzW2ldOworICAg
ICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVsZC0+dHlwZSgpLT5nZXRQcmVjaXNp
b24oKSkpCisgICAgICAgICAgICBvdXQgPDwgIiAiOworICAgICAgICBvdXQgPDwgZ2V0VHlwZU5h
bWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShmaWVsZC0+bmFtZSgpKTsKKyAg
ICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIG91dCA8PCBh
cnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICI7XG4iOworICAg
IH0KKyAgICBvdXQgPDwgIn0iOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFz
ZS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAgIHByb3RlY3RlZDoKICAgICBUSW5mb1NpbmtCYXNlICZvYmpTaW5rKCkgeyBy
ZXR1cm4gbU9ialNpbms7IH0KICAgICB2b2lkIHdyaXRlVHJpcGxldChWaXNpdCB2aXNpdCwgY29u
c3QgY2hhciAqcHJlU3RyLCBjb25zdCBjaGFyICppblN0ciwgY29uc3QgY2hhciAqcG9zdFN0cik7
CisgICAgdm9pZCB3cml0ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAg
dm9pZCB3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgdmlydHVhbCBi
b29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbiBwcmVjaXNpb24pID0gMDsKICAg
ICB2b2lkIHdyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmYXJn
cyk7CkBAIC0zOSwxNiArNDAsMTYgQEAKICAgICB2b2lkIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0
KFZpc2l0IHZpc2l0LCBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgY2hhciAqY29uc3RydWN0b3JC
YXNlVHlwZSk7CiAgICAgVFN0cmluZyBnZXRUeXBlTmFtZShjb25zdCBUVHlwZSAmdHlwZSk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSk7Ci0gICAg
dmlydHVhbCB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9k
ZSk7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmlu
YXJ5ICpub2RlKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVElu
dGVybVVuYXJ5ICpub2RlKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRTZWxlY3Rpb24oVmlzaXQg
dmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdFN3
aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAqbm9kZSk7Ci0gICAgdmlydHVhbCBib29s
IHZpc2l0Q2FzZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2UgKm5vZGUpOwotICAgIHZpcnR1YWwg
Ym9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSk7
Ci0gICAgdmlydHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKm5v
ZGUpOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJy
YW5jaCAqbm9kZSk7CisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlv
biAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVElu
dGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZp
c2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJv
b2wgdmlzaXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpIG92ZXJyaWRl
OworICAgIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkgb3Zl
cnJpZGU7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3Jl
Z2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1Mb29wICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdmlzaXRDb2Rl
QmxvY2soVEludGVybU5vZGUgKm5vZGUpOwogCkBAIC01Nyw4ICs1OCw4IEBACiAgICAgVFN0cmlu
ZyBoYXNoTmFtZShjb25zdCBUU3RyaW5nICZuYW1lKTsKICAgICAvLyBTYW1lIGFzIGhhc2hOYW1l
KCksIGJ1dCB3aXRob3V0IGhhc2hpbmcgYnVpbHQtaW4gdmFyaWFibGVzLgogICAgIFRTdHJpbmcg
aGFzaFZhcmlhYmxlTmFtZShjb25zdCBUU3RyaW5nICZuYW1lKTsKLSAgICAvLyBTYW1lIGFzIGhh
c2hOYW1lKCksIGJ1dCB3aXRob3V0IGhhc2hpbmcgYnVpbHQtaW4gZnVuY3Rpb25zLgotICAgIFRT
dHJpbmcgaGFzaEZ1bmN0aW9uTmFtZShjb25zdCBUU3RyaW5nICZtYW5nbGVkX25hbWUpOworICAg
IC8vIFNhbWUgYXMgaGFzaE5hbWUoKSwgYnV0IHdpdGhvdXQgaGFzaGluZyBidWlsdC1pbiBmdW5j
dGlvbnMgYW5kIHdpdGggdW5tYW5nbGluZy4KKyAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWVJ
Zk5lZWRlZChjb25zdCBUTmFtZSAmbWFuZ2xlZE5hbWUpOwogICAgIC8vIFVzZWQgdG8gdHJhbnNs
YXRlIGZ1bmN0aW9uIG5hbWVzIGZvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIEVTU0wgYW5kIEdMU0wK
ICAgICB2aXJ0dWFsIFRTdHJpbmcgdHJhbnNsYXRlVGV4dHVyZUZ1bmN0aW9uKFRTdHJpbmcgJm5h
bWUpIHsgcmV0dXJuIG5hbWU7IH0KIApAQCAtNjYsNiArNjcsOSBAQAogICAgIGJvb2wgc3RydWN0
RGVjbGFyZWQoY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlKSBjb25zdDsKICAgICB2b2lkIGRl
Y2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlKTsKIAorICAgIHZvaWQgZGVj
bGFyZUludGVyZmFjZUJsb2NrTGF5b3V0KGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNl
QmxvY2spOworICAgIHZvaWQgZGVjbGFyZUludGVyZmFjZUJsb2NrKGNvbnN0IFRJbnRlcmZhY2VC
bG9jayAqaW50ZXJmYWNlQmxvY2spOworCiAgICAgdm9pZCB3cml0ZUJ1aWx0SW5GdW5jdGlvblRy
aXBsZXQoVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0ciwgYm9vbCB1c2VFbXVsYXRlZEZ1
bmN0aW9uKTsKIAogICAgIFRJbmZvU2lua0Jhc2UgJm1PYmpTaW5rOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvT3V0cHV0SExTTC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSwzNyArMTksMTEwIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvTm9kZVNlYXJjaC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guaCIK
LSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxvY2tzLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuaCIKICNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JITFNMLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9V
bmZvbGRTaG9ydENpcmN1aXQuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1VuaWZv
cm1ITFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKLW5hbWVzcGFjZSBzaAorbmFtZXNwYWNlCiB7CiAK
LVRTdHJpbmcgT3V0cHV0SExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpuYW1lKCkgY29uc3QKK2Jvb2wg
SXNTZXF1ZW5jZShUSW50ZXJtTm9kZSAqbm9kZSkKIHsKLSAgICBUU3RyaW5nIG5hbWUgPSAiZ2xf
dGV4dHVyZSI7CisgICAgcmV0dXJuIG5vZGUtPmdldEFzQWdncmVnYXRlKCkgIT0gbnVsbHB0ciAm
JiBub2RlLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlOworfQogCi0g
ICAgaWYgKElzU2FtcGxlcjJEKHNhbXBsZXIpKQordm9pZCBXcml0ZVNpbmdsZUNvbnN0YW50KFRJ
bmZvU2lua0Jhc2UgJm91dCwgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0IGNvbnN0VW5pb24p
Cit7CisgICAgQVNTRVJUKGNvbnN0VW5pb24gIT0gbnVsbHB0cik7CisgICAgc3dpdGNoIChjb25z
dFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgewotICAgICAgICBuYW1lICs9ICIyRCI7CisgICAgICAg
IGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICBvdXQgPDwgc3RkOjptaW4oRkxUX01BWCwgc3Rk
OjptYXgoLUZMVF9NQVgsIGNvbnN0VW5pb24tPmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICBvdXQgPDwgY29uc3RVbmlv
bi0+Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRVSW50
OgorICAgICAgICAgICAgb3V0IDw8IGNvbnN0VW5pb24tPmdldFVDb25zdCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgIG91dCA8PCBjb25z
dFVuaW9uLT5nZXRCQ29uc3QoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoSXNTYW1w
bGVyM0Qoc2FtcGxlcikpCit9CisKK2NvbnN0IFRDb25zdGFudFVuaW9uICpXcml0ZUNvbnN0YW50
VW5pb25BcnJheShUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0IGNvbnN0VW5p
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c2l6ZV90IHNpemUpCit7CisgICAgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0VW5pb25JdGVy
YXRlZCA9IGNvbnN0VW5pb247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyss
IGNvbnN0VW5pb25JdGVyYXRlZCsrKQogICAgIHsKLSAgICAgICAgbmFtZSArPSAiM0QiOworICAg
ICAgICBXcml0ZVNpbmdsZUNvbnN0YW50KG91dCwgY29uc3RVbmlvbkl0ZXJhdGVkKTsKKworICAg
ICAgICBpZiAoaSAhPSBzaXplIC0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICIs
ICI7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAoSXNTYW1wbGVyQ3ViZShzYW1wbGVy
KSkKLSAgICB7Ci0gICAgICAgIG5hbWUgKz0gIkN1YmUiOwotICAgIH0KLSAgICBlbHNlIFVOUkVB
Q0hBQkxFKCk7CisgICAgcmV0dXJuIGNvbnN0VW5pb25JdGVyYXRlZDsKK30KIAordm9pZCBPdXRw
dXRJbnRUZXhDb29yZFdyYXAoVEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqd3JhcE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyAmdGV4Q29vcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5n
ICZ0ZXhDb29yZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnRleENvb3JkT3V0TmFtZSkKK3sKKyAgICAvLyBHTEVTIDMuMC40IHRhYmxlIDMuMjIgc3BlY2lm
aWVzIGhvdyB0aGUgd3JhcCBtb2RlcyB3b3JrLiBXZSBkb24ndCB1c2UgdGhlIGZvcm11bGFzIHZl
cmJhdGltCisgICAgLy8gYnV0IHJhdGhlciB1c2UgZXF1aXZhbGVudCBmb3JtdWxhcyB0aGF0IG1h
cCBiZXR0ZXIgdG8gSExTTC4KKyAgICBvdXQgPDwgImludCAiIDw8IHRleENvb3JkT3V0TmFtZSA8
PCAiO1xuIjsKKyAgICBvdXQgPDwgImZsb2F0ICIgPDwgdGV4Q29vcmRPdXROYW1lIDw8ICJPZmZz
ZXQgPSAiIDw8IHRleENvb3JkIDw8ICIgKyBmbG9hdCgiIDw8IHRleENvb3JkT2Zmc2V0CisgICAg
ICAgIDw8ICIpIC8gIiA8PCBzaXplIDw8ICI7XG4iOworCisgICAgLy8gQ0xBTVBfVE9fRURHRQor
ICAgIG91dCA8PCAiaWYgKCIgPDwgd3JhcE1vZGUgPDwgIiA9PSAxKVxuIjsKKyAgICBvdXQgPDwg
IntcbiI7CisgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXhDb29yZE91dE5hbWUgPDwgIiA9IGNsYW1w
KGludChmbG9vcigiIDw8IHNpemUgPDwgIiAqICIgPDwgdGV4Q29vcmRPdXROYW1lCisgICAgICAg
IDw8ICJPZmZzZXQpKSwgMCwgaW50KCIgPDwgc2l6ZSA8PCAiKSAtIDEpO1xuIjsKKyAgICBvdXQg
PDwgIn1cbiI7CisKKyAgICAvLyBNSVJST1JFRF9SRVBFQVQKKyAgICBvdXQgPDwgImVsc2UgaWYg
KCIgPDwgd3JhcE1vZGUgPDwgIiA9PSAzKVxuIjsKKyAgICBvdXQgPDwgIntcbiI7CisgICAgb3V0
IDw8ICIgICAgZmxvYXQgY29vcmRXcmFwcGVkID0gMS4wIC0gYWJzKGZyYWMoYWJzKCIgPDwgdGV4
Q29vcmRPdXROYW1lCisgICAgICAgIDw8ICJPZmZzZXQpICogMC41KSAqIDIuMCAtIDEuMCk7XG4i
OworICAgIG91dCA8PCAiICAgICIgPDwgdGV4Q29vcmRPdXROYW1lIDw8ICIgPSBpbnQoZmxvb3Io
IiA8PCBzaXplIDw8ICIgKiBjb29yZFdyYXBwZWQpKTtcbiI7CisgICAgb3V0IDw8ICJ9XG4iOwor
CisgICAgLy8gUkVQRUFUCisgICAgb3V0IDw8ICJlbHNlXG4iOworICAgIG91dCA8PCAie1xuIjsK
KyAgICBvdXQgPDwgIiAgICAiIDw8IHRleENvb3JkT3V0TmFtZSA8PCAiID0gaW50KGZsb29yKCIg
PDwgc2l6ZSA8PCAiICogZnJhYygiIDw8IHRleENvb3JkT3V0TmFtZQorICAgICAgICA8PCAiT2Zm
c2V0KSkpO1xuIjsKKyAgICBvdXQgPDwgIn1cbiI7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKK25h
bWVzcGFjZSBzaAoreworCitUU3RyaW5nIE91dHB1dEhMU0w6OlRleHR1cmVGdW5jdGlvbjo6bmFt
ZSgpIGNvbnN0Cit7CisgICAgVFN0cmluZyBuYW1lID0gImdsX3RleHR1cmUiOworCisgICAgLy8g
V2UgbmVlZCB0byBpbmNsdWRlIGZ1bGwgdGhlIHNhbXBsZXIgdHlwZSBpbiB0aGUgZnVuY3Rpb24g
bmFtZSB0byBtYWtlIHRoZSBzaWduYXR1cmUgdW5pcXVlCisgICAgLy8gb24gRDNEMTEsIHdoZXJl
IHNhbXBsZXJzIGFyZSBwYXNzZWQgdG8gdGV4dHVyZSBmdW5jdGlvbnMgYXMgaW5kaWNlcy4KKyAg
ICBuYW1lICs9IFRleHR1cmVUeXBlU3VmZml4KHRoaXMtPnNhbXBsZXIpOworCiAgICAgaWYgKHBy
b2opCiAgICAgewogICAgICAgICBuYW1lICs9ICJQcm9qIjsKQEAgLTEwNywxMSArMTgwLDEwIEBA
CiAgICAgICBtRXh0ZW5zaW9uQmVoYXZpb3IoZXh0ZW5zaW9uQmVoYXZpb3IpLAogICAgICAgbVNv
dXJjZVBhdGgoc291cmNlUGF0aCksCiAgICAgICBtT3V0cHV0VHlwZShvdXRwdXRUeXBlKSwKKyAg
ICAgIG1Db21waWxlT3B0aW9ucyhjb21waWxlT3B0aW9ucyksCiAgICAgICBtTnVtUmVuZGVyVGFy
Z2V0cyhudW1SZW5kZXJUYXJnZXRzKSwKLSAgICAgIG1Db21waWxlT3B0aW9ucyhjb21waWxlT3B0
aW9ucyksCiAgICAgICBtQ3VycmVudEZ1bmN0aW9uTWV0YWRhdGEobnVsbHB0cikKIHsKLSAgICBt
VW5mb2xkU2hvcnRDaXJjdWl0ID0gbmV3IFVuZm9sZFNob3J0Q2lyY3VpdCh0aGlzKTsKICAgICBt
SW5zaWRlRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIG1Vc2VzRnJhZ0NvbG9yID0gZmFsc2U7CkBA
IC0xMjIsNiArMTk0LDcgQEAKICAgICBtVXNlc0Zyb250RmFjaW5nID0gZmFsc2U7CiAgICAgbVVz
ZXNQb2ludFNpemUgPSBmYWxzZTsKICAgICBtVXNlc0luc3RhbmNlSUQgPSBmYWxzZTsKKyAgICBt
VXNlc1ZlcnRleElEICAgICAgICAgICAgICAgID0gZmFsc2U7CiAgICAgbVVzZXNGcmFnRGVwdGgg
PSBmYWxzZTsKICAgICBtVXNlc1hvciA9IGZhbHNlOwogICAgIG1Vc2VzRGlzY2FyZFJld3JpdGlu
ZyA9IGZhbHNlOwpAQCAtMTM5LDcgKzIxMiw3IEBACiAgICAgbVN0cnVjdHVyZUhMU0wgPSBuZXcg
U3RydWN0dXJlSExTTDsKICAgICBtVW5pZm9ybUhMU0wgPSBuZXcgVW5pZm9ybUhMU0wobVN0cnVj
dHVyZUhMU0wsIG91dHB1dFR5cGUsIHVuaWZvcm1zKTsKIAotICAgIGlmIChtT3V0cHV0VHlwZSA9
PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfM18wX09V
VFBVVCkKICAgICB7CiAgICAgICAgIC8vIEZyYWdtZW50IHNoYWRlcnMgbmVlZCBkeF9EZXB0aFJh
bmdlLCBkeF9WaWV3Q29vcmRzIGFuZCBkeF9EZXB0aEZyb250LgogICAgICAgICAvLyBWZXJ0ZXgg
c2hhZGVycyBuZWVkIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHNldDogZHhfRGVwdGhSYW5nZSwgZHhf
Vmlld0Nvb3JkcyBhbmQgZHhfVmlld0FkanVzdC4KQEAgLTE1Myw3ICsyMjYsNiBAQAogCiBPdXRw
dXRITFNMOjp+T3V0cHV0SExTTCgpCiB7Ci0gICAgU2FmZURlbGV0ZShtVW5mb2xkU2hvcnRDaXJj
dWl0KTsKICAgICBTYWZlRGVsZXRlKG1TdHJ1Y3R1cmVITFNMKTsKICAgICBTYWZlRGVsZXRlKG1V
bmlmb3JtSExTTCk7CiAgICAgZm9yIChhdXRvICZlcUZ1bmN0aW9uIDogbVN0cnVjdEVxdWFsaXR5
RnVuY3Rpb25zKQpAQCAtMTcxLDEzICsyNDMsNiBAQAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFRJ
bnRlcm1UeXBlZCo+ICZmbGFnZ2VkU3RydWN0cyA9IEZsYWdTdGQxNDBWYWx1ZVN0cnVjdHModHJl
ZVJvb3QpOwogICAgIG1ha2VGbGFnZ2VkU3RydWN0TWFwcyhmbGFnZ2VkU3RydWN0cyk7CiAKLSAg
ICAvLyBXb3JrIGFyb3VuZCBEM0Q5IGJ1ZyB0aGF0IHdvdWxkIG1hbmlmZXN0IGluIHZlcnRleCBz
aGFkZXJzIHdpdGggc2VsZWN0aW9uIGJsb2NrcyB3aGljaAotICAgIC8vIHVzZSBhIHZlcnRleCBh
dHRyaWJ1dGUgYXMgYSBjb25kaXRpb24sIGFuZCBzb21lIHJlbGF0ZWQgY29tcHV0YXRpb24gaW4g
dGhlIGVsc2UgYmxvY2suCi0gICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0w5X09VVFBVVCAm
JiBtU2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQotICAgIHsKLSAgICAgICAgUmV3cml0
ZUVsc2VCbG9ja3ModHJlZVJvb3QpOwotICAgIH0KLQogICAgIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOwogICAgIEluaXRCdWlsdEluRnVuY3Rpb25FbXVs
YXRvckZvckhMU0woJmJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKTsKICAgICBidWlsdEluRnVuY3Rp
b25FbXVsYXRvci5NYXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxhdGlvbih0cmVlUm9vdCk7CkBA
IC0xOTQsMTQgKzI1OSwxMCBAQAogICAgIG1JbmZvU2lua1N0YWNrLnBvcCgpOwogCiAgICAgbUlu
Zm9TaW5rU3RhY2sucHVzaCgmbUZvb3Rlcik7Ci0gICAgaWYgKCFtRGVmZXJyZWRHbG9iYWxJbml0
aWFsaXplcnMuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIHdyaXRlRGVmZXJyZWRHbG9iYWxJbml0
aWFsaXplcnMobUZvb3Rlcik7Ci0gICAgfQogICAgIG1JbmZvU2lua1N0YWNrLnBvcCgpOwogCiAg
ICAgbUluZm9TaW5rU3RhY2sucHVzaCgmbUhlYWRlcik7Ci0gICAgaGVhZGVyKCZidWlsdEluRnVu
Y3Rpb25FbXVsYXRvcik7CisgICAgaGVhZGVyKG1IZWFkZXIsICZidWlsdEluRnVuY3Rpb25FbXVs
YXRvcik7CiAgICAgbUluZm9TaW5rU3RhY2sucG9wKCk7CiAKICAgICBvYmpTaW5rIDw8IG1IZWFk
ZXIuY19zdHIoKTsKQEAgLTI5NiwxMCArMzU3LDggQEAKICAgICByZXR1cm4gaW5pdDsKIH0KIAot
dm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yKQordm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5r
QmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5mb1NpbmsoKTsKLQog
ICAgIFRTdHJpbmcgdmFyeWluZ3M7CiAgICAgVFN0cmluZyBhdHRyaWJ1dGVzOwogICAgIFRTdHJp
bmcgZmxhZ2dlZFN0cnVjdHM7CkBAIC0zMzYsNyArMzk1LDcgQEAKIAogICAgIG91dCA8PCBtU3Ry
dWN0dXJlSExTTC0+c3RydWN0c0hlYWRlcigpOwogCi0gICAgb3V0IDw8IG1Vbmlmb3JtSExTTC0+
dW5pZm9ybXNIZWFkZXIobU91dHB1dFR5cGUsIG1SZWZlcmVuY2VkVW5pZm9ybXMpOworICAgIG1V
bmlmb3JtSExTTC0+dW5pZm9ybXNIZWFkZXIob3V0LCBtT3V0cHV0VHlwZSwgbVJlZmVyZW5jZWRV
bmlmb3Jtcyk7CiAgICAgb3V0IDw8IG1Vbmlmb3JtSExTTC0+aW50ZXJmYWNlQmxvY2tzSGVhZGVy
KG1SZWZlcmVuY2VkSW50ZXJmYWNlQmxvY2tzKTsKIAogICAgIGlmICghbUVxdWFsaXR5RnVuY3Rp
b25zLmVtcHR5KCkpCkBAIC00NTksNyArNTE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAiXG4i
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQ
VVQpCisgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQgfHwgbU91
dHB1dFR5cGUgPT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUKQogICAgICAgICB7CiAgICAgICAg
ICAgICBvdXQgPDwgImNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIoYjEpXG4iCiAg
ICAgICAgICAgICAgICAgICAgIntcbiI7CkBAIC00NzksNiArNTM4LDE4IEBACiAgICAgICAgICAg
ICAgICAgb3V0IDw8ICIgICAgZmxvYXQzIGR4X0RlcHRoRnJvbnQgOiBwYWNrb2Zmc2V0KGMyKTtc
biI7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChtVXNlc0ZyYWdDb29yZCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBkeF9WaWV3U2NhbGUgaXMgb25seSB1c2Vk
IGluIHRoZSBmcmFnbWVudCBzaGFkZXIgdG8gY29ycmVjdAorICAgICAgICAgICAgICAgIC8vIHRo
ZSB2YWx1ZSBmb3IgZ2xGcmFnQ29vcmQgaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAgICAgb3V0
IDw8ICIgICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSA6IHBhY2tvZmZzZXQoYzMpO1xuIjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09V
VFBVVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVW5pZm9ybUhMU0wtPnNhbXBs
ZXJNZXRhZGF0YVVuaWZvcm1zKG91dCwgImM0Iik7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIG91dCA8PCAifTtcbiI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtNTQ3LDYgKzYx
OCwxMSBAQAogICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgaW50IGdsX0luc3RhbmNlSUQ7IjsK
ICAgICAgICAgfQogCisgICAgICAgIGlmIChtVXNlc1ZlcnRleElEKQorICAgICAgICB7CisgICAg
ICAgICAgICBvdXQgPDwgInN0YXRpYyBpbnQgZ2xfVmVydGV4SUQ7IjsKKyAgICAgICAgfQorCiAg
ICAgICAgIG91dCA8PCAiXG4iCiAgICAgICAgICAgICAgICAiLy8gVmFyeWluZ3NcbiI7CiAgICAg
ICAgIG91dCA8PCAgdmFyeWluZ3M7CkBAIC01NjMsNyArNjM5LDcgQEAKICAgICAgICAgICAgICAg
ICAgICAiXG4iOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hM
U0wxMV9PVVRQVVQpCisgICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQ
VVQgfHwgbU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUKQogICAgICAgICB7
CiAgICAgICAgICAgICBvdXQgPDwgImNidWZmZXIgRHJpdmVyQ29uc3RhbnRzIDogcmVnaXN0ZXIo
YjEpXG4iCiAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwpAQCAtNTczLDEyICs2NDksMTkgQEAK
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDMgZHhfRGVwdGhSYW5nZSA6IHBhY2tv
ZmZzZXQoYzApO1xuIjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gZHhfVmlld0Fk
anVzdCBhbmQgZHhfVmlld0Nvb3JkcyB3aWxsIG9ubHkgYmUgdXNlZCBpbiBGZWF0dXJlIExldmVs
IDkgc2hhZGVycy4KLSAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHdlIGRlY2xhcmUgaXQgZm9yIGFs
bCBzaGFkZXJzIChpbmNsdWRpbmcgRmVhdHVyZSBMZXZlbCAxMCspLgotICAgICAgICAgICAgLy8g
VGhlIGJ5dGVjb2RlIGlzIHRoZSBzYW1lIHdoZXRoZXIgd2UgZGVjbGFyZSBpdCBvciBub3QsIHNp
bmNlIEQzRENvbXBpbGVyIHJlbW92ZXMgaXQgaWYgaXQncyB1bnVzZWQuCisgICAgICAgICAgICAv
LyBkeF9WaWV3QWRqdXN0IGFuZCBkeF9WaWV3Q29vcmRzIHdpbGwgb25seSBiZSB1c2VkIGluIEZl
YXR1cmUgTGV2ZWwgOQorICAgICAgICAgICAgLy8gc2hhZGVycy4gSG93ZXZlciwgd2UgZGVjbGFy
ZSBpdCBmb3IgYWxsIHNoYWRlcnMgKGluY2x1ZGluZyBGZWF0dXJlIExldmVsIDEwKykuCisgICAg
ICAgICAgICAvLyBUaGUgYnl0ZWNvZGUgaXMgdGhlIHNhbWUgd2hldGhlciB3ZSBkZWNsYXJlIGl0
IG9yIG5vdCwgc2luY2UgRDNEQ29tcGlsZXIgcmVtb3ZlcyBpdAorICAgICAgICAgICAgLy8gaWYg
aXQncyB1bnVzZWQuCiAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDQgZHhfVmlld0FkanVz
dCA6IHBhY2tvZmZzZXQoYzEpO1xuIjsKICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiBk
eF9WaWV3Q29vcmRzIDogcGFja29mZnNldChjMik7XG4iOworICAgICAgICAgICAgb3V0IDw8ICIg
ICAgZmxvYXQyIGR4X1ZpZXdTY2FsZSAgOiBwYWNrb2Zmc2V0KGMzKTtcbiI7CiAKKyAgICAgICAg
ICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbVVuaWZvcm1ITFNMLT5zYW1wbGVyTWV0YWRhdGFVbmlmb3Jtcyhv
dXQsICJjNCIpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBvdXQgPDwgIn07XG4iCiAg
ICAgICAgICAgICAgICAgICAgIlxuIjsKICAgICAgICAgfQpAQCAtNjYzLDcgKzc0Niw3IEBACiAg
ICAgICAgIC8vIEFyZ3VtZW50IGxpc3QKICAgICAgICAgaW50IGhsc2xDb29yZHMgPSA0OwogCi0g
ICAgICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgIGlmICht
T3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpCiAgICAgICAgICAgICB7CkBAIC02ODIs
MjkgKzc2NSwyMCBAQAogICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNI
X0hMU0wxMV9PVVRQVVQpCisgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgc3dp
dGNoKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikKKyAgICAgICAgICAgIGhsc2xDb29yZHMgPSBI
TFNMVGV4dHVyZUNvb3Jkc0NvdW50KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcik7CisgICAgICAg
ICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDogICAgICAgICAgICBvdXQg
PDwgIlRleHR1cmUyRCB4LCBTYW1wbGVyU3RhdGUgcyI7ICAgICAgICAgICAgICAgIGhsc2xDb29y
ZHMgPSAyOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6ICAgICAgICAg
ICAgb3V0IDw8ICJUZXh0dXJlM0QgeCwgU2FtcGxlclN0YXRlIHMiOyAgICAgICAgICAgICAgICBo
bHNsQ29vcmRzID0gMzsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6
ICAgICAgICAgIG91dCA8PCAiVGV4dHVyZUN1YmUgeCwgU2FtcGxlclN0YXRlIHMiOyAgICAgICAg
ICAgICAgaGxzbENvb3JkcyA9IDM7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFNhbXBs
ZXIyREFycmF5OiAgICAgICBvdXQgPDwgIlRleHR1cmUyREFycmF5IHgsIFNhbXBsZXJTdGF0ZSBz
IjsgICAgICAgICAgIGhsc2xDb29yZHMgPSAzOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBF
YnRJU2FtcGxlcjJEOiAgICAgICAgICAgb3V0IDw8ICJUZXh0dXJlMkQ8aW50ND4geCwgU2FtcGxl
clN0YXRlIHMiOyAgICAgICAgICBobHNsQ29vcmRzID0gMjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIzRDogICAgICAgICAgIG91dCA8PCAiVGV4dHVyZTNEPGludDQ+IHgs
IFNhbXBsZXJTdGF0ZSBzIjsgICAgICAgICAgaGxzbENvb3JkcyA9IDM7IGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZTogICAgICAgICBvdXQgPDwgIlRleHR1cmUyREFy
cmF5PGludDQ+IHgsIFNhbXBsZXJTdGF0ZSBzIjsgICAgIGhsc2xDb29yZHMgPSAzOyBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6ICAgICAgb3V0IDw8ICJUZXh0
dXJlMkRBcnJheTxpbnQ0PiB4LCBTYW1wbGVyU3RhdGUgcyI7ICAgICBobHNsQ29vcmRzID0gMzsg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDogICAgICAgICAgIG91dCA8
PCAiVGV4dHVyZTJEPHVpbnQ0PiB4LCBTYW1wbGVyU3RhdGUgcyI7ICAgICAgICAgaGxzbENvb3Jk
cyA9IDI7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6ICAgICAgICAg
ICBvdXQgPDwgIlRleHR1cmUzRDx1aW50ND4geCwgU2FtcGxlclN0YXRlIHMiOyAgICAgICAgIGhs
c2xDb29yZHMgPSAzOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6
ICAgICAgICAgb3V0IDw8ICJUZXh0dXJlMkRBcnJheTx1aW50ND4geCwgU2FtcGxlclN0YXRlIHMi
OyAgICBobHNsQ29vcmRzID0gMzsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBs
ZXIyREFycmF5OiAgICAgIG91dCA8PCAiVGV4dHVyZTJEQXJyYXk8dWludDQ+IHgsIFNhbXBsZXJT
dGF0ZSBzIjsgICAgaGxzbENvb3JkcyA9IDM7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVi
dFNhbXBsZXIyRFNoYWRvdzogICAgICBvdXQgPDwgIlRleHR1cmUyRCB4LCBTYW1wbGVyQ29tcGFy
aXNvblN0YXRlIHMiOyAgICAgIGhsc2xDb29yZHMgPSAyOyBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgb3V0IDw8ICJUZXh0dXJlQ3ViZSB4LCBTYW1w
bGVyQ29tcGFyaXNvblN0YXRlIHMiOyAgICBobHNsQ29vcmRzID0gMzsgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6IG91dCA8PCAiVGV4dHVyZTJEQXJy
YXkgeCwgU2FtcGxlckNvbXBhcmlzb25TdGF0ZSBzIjsgaGxzbENvb3JkcyA9IDM7IGJyZWFrOwot
ICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIG91
dCA8PCBUZXh0dXJlU3RyaW5nKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikgPDwgIiB4LCAiCisg
ICAgICAgICAgICAgICAgICAgIDw8IFNhbXBsZXJTdHJpbmcodGV4dHVyZUZ1bmN0aW9uLT5zYW1w
bGVyKSA8PCAiIHMiOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEFTU0VSVChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9P
VVRQVVQpOworICAgICAgICAgICAgICAgIG91dCA8PCAiY29uc3QgdWludCBzYW1wbGVySW5kZXgi
OworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsK
IAogICAgICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9u
OjpGRVRDSCkgICAvLyBJbnRlZ2VyIGNvb3JkaW5hdGVzCiAgICAgICAgIHsKQEAgLTc5NSwyNSAr
ODY5LDU2IEBACiAgICAgICAgIG91dCA8PCAiKVxuIgogICAgICAgICAgICAgICAgIntcbiI7CiAK
KyAgICAgICAgLy8gSW4gc29tZSBjYXNlcyB3ZSB1c2UgYSB2YXJpYWJsZSB0byBzdG9yZSB0aGUg
dGV4dHVyZS9zYW1wbGVyIG9iamVjdHMsIGJ1dCB0byB3b3JrIGFyb3VuZAorICAgICAgICAvLyBh
IEQzRDExIGNvbXBpbGVyIGJ1ZyByZWxhdGVkIHRvIGRpc2NhcmQgaW5zaWRlIGEgbG9vcCB0aGF0
IGlzIGNvbmRpdGlvbmFsIG9uIHRleHR1cmUKKyAgICAgICAgLy8gc2FtcGxpbmcgd2UgbmVlZCB0
byBjYWxsIHRoZSBmdW5jdGlvbiBkaXJlY3RseSBvbiBhIHJlZmVyZW5jZSB0byB0aGUgYXJyYXku
IFRoZSBidWcgd2FzCisgICAgICAgIC8vIGZvdW5kIHVzaW5nIGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmRpc2NhcmQqbG9vcF90ZXh0dXJlKiB0ZXN0cy4KKyAgICAgICAgVFN0cmluZyB0
ZXh0dXJlUmVmZXJlbmNlKCJ4Iik7CisgICAgICAgIFRTdHJpbmcgc2FtcGxlclJlZmVyZW5jZSgi
cyIpOworICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKQorICAg
ICAgICB7CisgICAgICAgICAgICBUU3RyaW5nIHN1ZmZpeCA9IFRleHR1cmVHcm91cFN1ZmZpeCh0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpOworICAgICAgICAgICAgaWYgKFRleHR1cmVHcm91cCh0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpID09IEhMU0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICB0ZXh0dXJlUmVmZXJlbmNlID0gVFN0cmluZygidGV4dHVyZXMi
KSArIHN1ZmZpeCArICJbc2FtcGxlckluZGV4XSI7CisgICAgICAgICAgICAgICAgc2FtcGxlclJl
ZmVyZW5jZSA9IFRTdHJpbmcoInNhbXBsZXJzIikgKyBzdWZmaXggKyAiW3NhbXBsZXJJbmRleF0i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIG91dCA8PCAiICAgIGNvbnN0IHVpbnQgdGV4dHVyZUluZGV4ID0gc2FtcGxlcklu
ZGV4IC0gdGV4dHVyZUluZGV4T2Zmc2V0IiA8PCBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICAg
PDwgIjtcbiI7CisgICAgICAgICAgICAgICAgdGV4dHVyZVJlZmVyZW5jZSA9IFRTdHJpbmcoInRl
eHR1cmVzIikgKyBzdWZmaXggKyAiW3RleHR1cmVJbmRleF0iOworICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgIGNvbnN0IHVpbnQgc2FtcGxlckFycmF5SW5kZXggPSBzYW1wbGVySW5kZXggLSBz
YW1wbGVySW5kZXhPZmZzZXQiCisgICAgICAgICAgICAgICAgICAgIDw8IHN1ZmZpeCA8PCAiO1xu
IjsKKyAgICAgICAgICAgICAgICBzYW1wbGVyUmVmZXJlbmNlID0gVFN0cmluZygic2FtcGxlcnMi
KSArIHN1ZmZpeCArICJbc2FtcGxlckFycmF5SW5kZXhdIjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCiAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVu
Y3Rpb246OlNJWkUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiaW50IGJhc2VMZXZl
bCA9IHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLmJhc2VMZXZlbDtcbiI7CiAgICAgICAg
ICAgICBpZiAoSXNTYW1wbGVyMkQodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fCBJc1NhbXBs
ZXJDdWJlKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKElzU2FtcGxlckFycmF5KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCisg
ICAgICAgICAgICAgICAgaWYgKElzU2FtcGxlckFycmF5KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxl
cikgfHwKKyAgICAgICAgICAgICAgICAgICAgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0
aW9uLT5zYW1wbGVyKSAmJgorICAgICAgICAgICAgICAgICAgICAgSXNTYW1wbGVyQ3ViZSh0ZXh0
dXJlRnVuY3Rpb24tPnNhbXBsZXIpKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1aW50IGxheWVyczsg
dWludCBudW1iZXJPZkxldmVscztcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
eC5HZXREaW1lbnNpb25zKGxvZCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBudW1iZXJPZkxldmVs
cyk7XG4iOworICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZl
cmVuY2UgPDwgIi5HZXREaW1lbnNpb25zKGJhc2VMZXZlbCArIGxvZCwgd2lkdGgsICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWln
aHQsIGxheWVycywgbnVtYmVyT2ZMZXZlbHMpO1xuIjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIgICAgdWludCB3aWR0aDsgdWludCBoZWlnaHQ7IHVpbnQgbnVtYmVyT2ZMZXZlbHM7
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHguR2V0RGltZW5zaW9ucyhsb2Qs
IHdpZHRoLCBoZWlnaHQsIG51bWJlck9mTGV2ZWxzKTtcbiI7CisgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIi5HZXREaW1lbnNpb25zKGJhc2VMZXZlbCArIGxvZCwgd2lkdGgsIGhlaWdodCwgbnVt
YmVyT2ZMZXZlbHMpO1xuIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlIGlmIChJc1NhbXBsZXIzRCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7IHVp
bnQgaGVpZ2h0OyB1aW50IGRlcHRoOyB1aW50IG51bWJlck9mTGV2ZWxzO1xuIgotICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIHguR2V0RGltZW5zaW9ucyhsb2QsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLCBudW1iZXJPZkxldmVscyk7XG4iOworICAgICAgICAgICAgICAgICAgICA8PCAiICAgICIg
PDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lv
bnMoYmFzZUxldmVsICsgbG9kLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgbnVtYmVyT2ZMZXZlbHMp
O1xuIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIApA
QCAtODM5LDEzICs5NDQsNDAgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsK
KyAgICAgICAgICAgIFRTdHJpbmcgdGV4Q29vcmRYKCJ0LngiKTsKKyAgICAgICAgICAgIFRTdHJp
bmcgdGV4Q29vcmRZKCJ0LnkiKTsKKyAgICAgICAgICAgIFRTdHJpbmcgdGV4Q29vcmRaKCJ0Lnoi
KTsKKyAgICAgICAgICAgIFRTdHJpbmcgcHJvaiA9ICIiOworCisgICAgICAgICAgICBpZiAodGV4
dHVyZUZ1bmN0aW9uLT5wcm9qKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAodGV4dHVyZUZ1bmN0aW9uLT5jb29yZHMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qID0gIiAvIHQu
eiI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcHJvaiA9ICIgLyB0LnciOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAocHJvaiAhPSAiIikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHRleENvb3JkWCA9ICIoIiArIHRleENvb3JkWCArIHByb2ogKyAiKSI7
CisgICAgICAgICAgICAgICAgICAgIHRleENvb3JkWSA9ICIoIiArIHRleENvb3JkWSArIHByb2og
KyAiKSI7CisgICAgICAgICAgICAgICAgICAgIHRleENvb3JkWiA9ICIoIiArIHRleENvb3JkWiAr
IHByb2ogKyAiKSI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpICYmIElz
U2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdCB3aWR0aDsgZmxvYXQgaGVpZ2h0OyBmbG9h
dCBsYXllcnM7IGZsb2F0IGxldmVscztcbiI7CiAKICAgICAgICAgICAgICAgICBvdXQgPDwgIiAg
ICB1aW50IG1pcCA9IDA7XG4iOwogCi0gICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgeC5HZXRE
aW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBsZXZlbHMpO1xuIjsKKyAgICAg
ICAgICAgICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAg
ICAgICAgICAgPDwgIi5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBs
ZXZlbHMpO1xuIjsKIAogICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGJvb2wgeE1ham9yID0g
YWJzKHQueCkgPiBhYnModC55KSAmJiBhYnModC54KSA+IGFicyh0LnopO1xuIjsKICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICBib29sIHlNYWpvciA9IGFicyh0LnkpID4gYWJzKHQueikgJiYg
YWJzKHQueSkgPiBhYnModC54KTtcbiI7CkBAIC04NjYsNiArOTk4LDYzIEBACiAKICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICB0LnggPSAodSAqIDAuNWYgLyBtKSArIDAuNWY7XG4iOwogICAg
ICAgICAgICAgICAgIG91dCA8PCAiICAgIHQueSA9ICh2ICogMC41ZiAvIG0pICsgMC41ZjtcbiI7
CisKKyAgICAgICAgICAgICAgICAvLyBNaXAgbGV2ZWwgY29tcHV0YXRpb24uCisgICAgICAgICAg
ICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6SU1Q
TElDSVQgfHwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0g
VGV4dHVyZUZ1bmN0aW9uOjpMT0QgfHwKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0
aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpHUkFEKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1
cmVGdW5jdGlvbjo6SU1QTElDSVQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiB0U2l6ZWQgPSBmbG9hdDIodC54ICogd2lk
dGgsIHQueSAqIGhlaWdodCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICBmbG9hdDIgZHggPSBkZHgodFNpemVkKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0MiBkeSA9IGRkeSh0U2l6ZWQpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgZmxvYXQgbG9kID0gMC41ZiAqIGxvZzIobWF4KGRvdChkeCwgZHgp
LCBkb3QoZHksIGR5KSkpO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rp
b246OkdSQUQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIEVTU0wgMy4wMC42IHNwZWMgc2VjdGlvbiA4Ljg6ICJGb3IgdGhlIGN1YmUgdmVyc2lvbiwg
dGhlIHBhcnRpYWwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlcml2YXRpdmVzIG9mIFAg
YXJlIGFzc3VtZWQgdG8gYmUgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQgYmVmb3JlCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0dXJlIGNvb3JkaW5hdGVzIGFyZSBwcm9qZWN0
ZWQgb250byB0aGUgYXBwcm9wcmlhdGUgY3ViZSBmYWNlLiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGRkeFswXSBhbmQgZGR5WzBdIGFyZSB0aGUgZGVyaXZhdGl2ZXMgb2YgdC54IHBhc3Nl
ZCBpbnRvIHRoZSBmdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGR4WzFdIGFu
ZCBkZHlbMV0gYXJlIHRoZSBkZXJpdmF0aXZlcyBvZiB0LnkgcGFzc2VkIGludG8gdGhlIGZ1bmN0
aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZHhbMl0gYW5kIGRkeVsyXSBhcmUgdGhl
IGRlcml2YXRpdmVzIG9mIHQueiBwYXNzZWQgaW50byB0aGUgZnVuY3Rpb24KKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgZGVyaXZhdGl2ZXMgb2YgdSwgdiBhbmQgbQor
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQgZHVkeCA9IHhNYWpvciA/
IGRkeFsyXSA6ICh5TWFqb3IgJiYgdC55IDwgMC4wZiA/IC1kZHhbMF0gIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI6IGRkeFswXSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdCBkdWR5ID0geE1ham9yID8gZGR5WzJdIDogKHlNYWpvciAmJiB0
LnkgPCAwLjBmID8gLWRkeVswXSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjog
ZGR5WzBdKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR2
ZHggPSB5TWFqb3IgPyBkZHhbMl0gOiAobmVnYXRpdmUgPyBkZHhbMV0gOiAtZGR4WzFdKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGR2ZHkgPSB5TWFqb3Ig
PyBkZHlbMl0gOiAobmVnYXRpdmUgPyBkZHlbMV0gOiAtZGR5WzFdKTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGRtZHggPSB4TWFqb3IgPyBkZHhbMF0gOiAo
eU1ham9yID8gZGR4WzFdIDogZGR4WzJdKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0IGRtZHkgPSB4TWFqb3IgPyBkZHlbMF0gOiAoeU1ham9yID8gZGR5WzFd
IDogZGR5WzJdKTtcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZGV0ZXJtaW5l
IHRoZSBkZXJpdmF0aXZlcyBvZiB0aGUgZmFjZSBjb29yZGluYXRlcywgdXNpbmcgdGhlCisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBkZXJpdmF0aXZlcyBjYWxjdWxhdGVkIGFib3ZlLgorICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZCAvIGR4ICh1KHgpICogMC41IC8gbSh4KSArIDAuNSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vID0gMC41ICogKG0oeCkgKiB1Jyh4KSAtIHUoeCkg
KiBtJyh4KSkgLyBtKHgpXjIKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZs
b2F0IGRmYWNleGR4ID0gMC41ZiAqIChtICogZHVkeCAtIHUgKiBkbWR4KSAvIChtICogbSk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkZmFjZXlkeCA9IDAu
NWYgKiAobSAqIGR2ZHggLSB2ICogZG1keCkgLyAobSAqIG0pO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZGZhY2V4ZHkgPSAwLjVmICogKG0gKiBkdWR5IC0g
dSAqIGRtZHkpIC8gKG0gKiBtKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIGZsb2F0IGRmYWNleWR5ID0gMC41ZiAqIChtICogZHZkeSAtIHYgKiBkbWR5KSAvIChtICog
bSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIgc2l6ZVZl
YyA9IGZsb2F0Mih3aWR0aCwgaGVpZ2h0KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0MiBmYWNlZGR4ID0gZmxvYXQyKGRmYWNleGR4LCBkZmFjZXlkeCkgKiBz
aXplVmVjO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGZh
Y2VkZHkgPSBmbG9hdDIoZGZhY2V4ZHksIGRmYWNleWR5KSAqIHNpemVWZWM7XG4iOworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gT3B0aW1pemF0aW9uOiBpbnN0ZWFkIG9mOiBsb2cyKG1heChs
ZW5ndGgoZmFjZWRkeCksIGxlbmd0aChmYWNlZGR5KSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3ZSBjb21wdXRlOiBsb2cyKG1heChsZW5ndGgoZmFjZWRkeCleMiwgbGVuZ3RoKGZhY2Vk
ZHkpXjIpKSAvIDIKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0IGxl
bmd0aGZhY2VkZHgyID0gZG90KGZhY2VkZHgsIGZhY2VkZHgpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbGVuZ3RoZmFjZWRkeTIgPSBkb3QoZmFjZWRkeSwg
ZmFjZWRkeSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBs
b2QgPSBsb2cyKG1heChsZW5ndGhmYWNlZGR4MiwgbGVuZ3RoZmFjZWRkeTIpKSAqICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiMC41ZjtcbiI7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgbWlwID0gdWludChtaW4obWF4KHJv
dW5kKGxvZCksIDApLCBsZXZlbHMgLSAxKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICA8
PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgPDwg
Ii5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBsZXZlbHMpO1xuIjsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gbm9y
bWFsaXplZCBmbG9hdGluZy1wb2ludCB0byBpbnRlZ2VyCisgICAgICAgICAgICAgICAgdGV4Q29v
cmRYID0gImludChmbG9vcih3aWR0aCAqIGZyYWMoIiArIHRleENvb3JkWCArICIpKSkiOworICAg
ICAgICAgICAgICAgIHRleENvb3JkWSA9ICJpbnQoZmxvb3IoaGVpZ2h0ICogZnJhYygiICsgdGV4
Q29vcmRZICsgIikpKSI7CisgICAgICAgICAgICAgICAgdGV4Q29vcmRaID0gImZhY2UiOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJl
RnVuY3Rpb24tPnNhbXBsZXIpICYmCiAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlRnVuY3Rp
b24tPm1ldGhvZCAhPSBUZXh0dXJlRnVuY3Rpb246OkZFVENIKQpAQCAtODg2LDExICsxMDc1LDEz
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICB7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgIi5HZXREaW1lbnNpb25zKDAsIHdpZHRoLCBoZWlnaHQsIGxheWVy
cywgbGV2ZWxzKTtcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVG
dW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVy
ZUZ1bmN0aW9uOjpCSUFTKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgeC5HZXREaW1lbnNpb25zKDAsIHdp
ZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxzKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHRTaXplZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwg
dC55ICogaGVpZ2h0KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICIgICAgZmxvYXQyIHRTaXplZCA9IGZsb2F0Mih0LnggKiB3aWR0aCwgdC55ICogaGVpZ2h0KTtc
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHgg
PSBsZW5ndGgoZGR4KHRTaXplZCkpO1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdCBkeSA9IGxlbmd0aChkZHkodFNpemVkKSk7XG4iCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4
KGR4LCBkeSkpO1xuIjsKQEAgLTkwMiwxNCArMTA5MywxOCBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0dXJl
RnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiAgICB4LkdldERpbWVuc2lvbnMoMCwgd2lkdGgsIGhlaWdodCwgbGF5ZXJzLCBsZXZlbHMpO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBsb2Qg
PSBsb2cyKG1heChsZW5ndGgoZGR4KSwgbGVuZ3RoKGRkeSkpKTtcbiI7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiBzaXplVmVjID0gZmxvYXQyKHdp
ZHRoLCBoZWlnaHQpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdDIgc2l6ZURkeCA9IGRkeCAqIHNpemVWZWM7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBzaXplRGR5ID0gZGR5ICogc2l6ZVZl
YztcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQg
bG9kID0gbG9nMihtYXgoZG90KHNpemVEZHgsIHNpemVEZHgpLCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZG90KHNpemVEZHksIHNpemVEZHkpKSkgKiAwLjVmO1xu
IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgIiAgICB1aW50IG1pcCA9IHVpbnQobWluKG1heChyb3VuZChsb2QpLCAw
KSwgbGV2ZWxzIC0gMSkpO1xuIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgeC5HZXREaW1lbnNpb25zKG1pcCwgd2lkdGgs
IGhlaWdodCwgbGF5ZXJzLCBsZXZlbHMpO1xuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGxheWVycywgbGV2ZWxz
KTtcbiI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICB7CkBAIC05MjUsMTEgKzExMjAsMTMgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICAi
IDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
Ii5HZXREaW1lbnNpb25zKDAsIHdpZHRoLCBoZWlnaHQsIGxldmVscyk7XG4iOworCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1
cmVGdW5jdGlvbjo6SU1QTElDSVQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpCSUFTKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIgICAgeC5HZXREaW1lbnNpb25zKDAsIHdpZHRoLCBoZWlnaHQsIGxldmVscyk7XG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiB0U2l6
ZWQgPSBmbG9hdDIodC54ICogd2lkdGgsIHQueSAqIGhlaWdodCk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGZsb2F0MiB0U2l6ZWQgPSBmbG9hdDIodC54
ICogd2lkdGgsIHQueSAqIGhlaWdodCk7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0IGR4ID0gbGVuZ3RoKGRkeCh0U2l6ZWQpKTtcbiIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHkgPSBsZW5ndGgo
ZGR5KHRTaXplZCkpO1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBmbG9hdCBsb2QgPSBsb2cyKG1heChkeCwgZHkpKTtcbiI7CkBAIC05MzksMjAgKzExMzYs
MjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIGxv
ZCArPSBiaWFzO1xuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkxPRCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiICAgIHguR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0LCBsZXZlbHMp
O1xuIjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0
aW9uOjpHUkFEKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgeC5HZXREaW1lbnNpb25zKDAsIHdpZHRoLCBo
ZWlnaHQsIGxldmVscyk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGxlbmd0aChkZHgpLCBsZW5ndGgoZGR5KSkpO1xu
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQyIHNp
emVWZWMgPSBmbG9hdDIod2lkdGgsIGhlaWdodCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiBzaXplRGR4ID0gZGR4ICogc2l6ZVZlYztcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIHNpemVE
ZHkgPSBkZHkgKiBzaXplVmVjO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBmbG9hdCBsb2QgPSBsb2cyKG1heChkb3Qoc2l6ZURkeCwgc2l6ZURkeCksICIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb3Qoc2l6ZURkeSwgc2l6
ZURkeSkpKSAqIDAuNWY7XG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQgbWlwID0gdWludChtaW4o
bWF4KHJvdW5kKGxvZCksIDApLCBsZXZlbHMgLSAxKSk7XG4iOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICB4LkdldERpbWVu
c2lvbnMobWlwLCB3aWR0aCwgaGVpZ2h0LCBsZXZlbHMpO1xuIjsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGxldmVs
cyk7XG4iOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKElzU2FtcGxlcjNEKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikp
CkBAIC05NjksMTEgKzExNjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
bGV2ZWxzKTtcbiI7CisKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rp
b24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUIHx8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9u
OjpCSUFTKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAiICAgIHguR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwgbGV2ZWxzKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdDMgdFNpemVkID0gZmxvYXQzKHQueCAqIHdpZHRoLCB0LnkgKiBoZWlnaHQsIHQueiAqIGRl
cHRoKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDMg
dFNpemVkID0gZmxvYXQzKHQueCAqIHdpZHRoLCB0LnkgKiBoZWlnaHQsIHQueiAqICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHRoKTtcbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBkeCA9IGxlbmd0aChkZHgodFNpemVkKSk7
XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZHkgPSBs
ZW5ndGgoZGR5KHRTaXplZCkpO1xuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0IGxvZCA9IGxvZzIobWF4KGR4LCBkeSkpO1xuIjsKQEAgLTk4NSwyMiArMTE4
NSw2NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAodGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpH
UkFEKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiICAgIHguR2V0RGltZW5zaW9ucygwLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
bGV2ZWxzKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9h
dCBsb2QgPSBsb2cyKG1heChsZW5ndGgoZGR4KSwgbGVuZ3RoKGRkeSkpKTtcbiI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgZmxvYXQzIHNpemVWZWMgPSBmbG9hdDMo
d2lkdGgsIGhlaWdodCwgZGVwdGgpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0MyBzaXplRGR4ID0gZGR4ICogc2l6ZVZlYztcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDMgc2l6ZURkeSA9IGRkeSAqIHNpemVW
ZWM7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgbG9k
ID0gbG9nMihtYXgoZG90KHNpemVEZHgsIHNpemVEZHgpLCBkb3Qoc2l6ZURkeSwgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l6ZURkeSkpKSAqIDAuNWY7XG4iOwogICAg
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiAgICB1aW50IG1pcCA9IHVpbnQobWluKG1heChyb3VuZChsb2QpLCAwKSwgbGV2ZWxzIC0gMSkp
O1xuIjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIG91dCA8
PCAiICAgIHguR2V0RGltZW5zaW9ucyhtaXAsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBsZXZlbHMp
O1xuIjsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVmZXJl
bmNlCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMobWlwLCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgbGV2ZWxzKTtcbiI7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKworICAgICAgICAgICAgICAgIC8vIENvbnZl
cnQgZnJvbSBub3JtYWxpemVkIGZsb2F0aW5nLXBvaW50IHRvIGludGVnZXIKKyAgICAgICAgICAg
ICAgICBvdXQgPDwgImludCB3cmFwUyA9IHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLndy
YXBNb2RlcyAmIDB4MztcbiI7CisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+
b2Zmc2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgT3V0cHV0SW50
VGV4Q29vcmRXcmFwKG91dCwgIndyYXBTIiwgIndpZHRoIiwgdGV4Q29vcmRYLCAib2Zmc2V0Lngi
LCAidGl4Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3JhcChv
dXQsICJ3cmFwUyIsICJ3aWR0aCIsIHRleENvb3JkWCwgIjAiLCAidGl4Iik7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHRleENvb3JkWCA9ICJ0aXgiOworICAgICAgICAgICAg
ICAgIG91dCA8PCAiaW50IHdyYXBUID0gKHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLndy
YXBNb2RlcyA+PiAyKSAmIDB4MztcbiI7CisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5j
dGlvbi0+b2Zmc2V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgT3V0
cHV0SW50VGV4Q29vcmRXcmFwKG91dCwgIndyYXBUIiwgImhlaWdodCIsIHRleENvb3JkWSwgIm9m
ZnNldC55IiwgInRpeSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBPdXRwdXRJbnRUZXhDb29y
ZFdyYXAob3V0LCAid3JhcFQiLCAiaGVpZ2h0IiwgdGV4Q29vcmRZLCAiMCIsICJ0aXkiKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4Q29vcmRZID0gInRpeSI7CisKKyAg
ICAgICAgICAgICAgICBpZiAoSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVy
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHRleENvb3JkWiA9ICJp
bnQobWF4KDAsIG1pbihsYXllcnMgLSAxLCBmbG9vcigwLjUgKyB0LnopKSkpIjsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIUlzU2FtcGxlckN1YmUodGV4dHVy
ZUZ1bmN0aW9uLT5zYW1wbGVyKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICFJc1NhbXBs
ZXIyRCh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICJpbnQgd3JhcFIgPSAoc2FtcGxlck1ldGFkYXRhW3NhbXBs
ZXJJbmRleF0ud3JhcE1vZGVzID4+IDQpICYgMHgzO1xuIjsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHRleHR1cmVGdW5jdGlvbi0+b2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBPdXRwdXRJbnRUZXhDb29yZFdyYXAob3V0LCAid3JhcFIiLCAi
ZGVwdGgiLCB0ZXhDb29yZFosICJvZmZzZXQueiIsICJ0aXoiKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dEludFRleENvb3JkV3JhcChvdXQsICJ3cmFwUiIs
ICJkZXB0aCIsIHRleENvb3JkWiwgIjAiLCAidGl6Iik7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgdGV4Q29vcmRaID0gInRpeiI7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gIjsKIAog
ICAgICAgICAgICAgLy8gSExTTCBpbnRyaW5zaWMKLSAgICAgICAgICAgIGlmIChtT3V0cHV0VHlw
ZSA9PSBTSF9ITFNMOV9PVVRQVVQpCisgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hf
SExTTF8zXzBfT1VUUFVUKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN3aXRjaCh0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpCiAgICAgICAgICAgICAgICAgewpAQCAtMTAxMSw0NSAr
MTI1Niw3MSBAQAogCiAgICAgICAgICAgICAgICAgc3dpdGNoKHRleHR1cmVGdW5jdGlvbi0+bWV0
aG9kKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1
bmN0aW9uOjpJTVBMSUNJVDogb3V0IDw8ICIocywgIjsgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkJJQVM6ICAgICBvdXQgPDwgImJpYXMocywgIjsg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EOiAgICAg
IG91dCA8PCAibG9kKHMsICI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVy
ZUZ1bmN0aW9uOjpMT0QwOiAgICAgb3V0IDw8ICJsb2QocywgIjsgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOiBvdXQgPDwgImxvZChzLCAi
OyAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpJTVBM
SUNJVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiKCIgPDwgc2FtcGxlclJlZmVy
ZW5jZSA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFTOgorICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICJiaWFzKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVy
ZUZ1bmN0aW9uOjpMT0Q6CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImxvZCgiIDw8
IHNhbXBsZXJSZWZlcmVuY2UgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EMDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAibG9kKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAi
LCAiOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzoKKyAgICAgICAgICAgICAgICAgICAgICAg
IG91dCA8PCAibG9kKCIgPDwgc2FtcGxlclJlZmVyZW5jZSA8PCAiLCAiOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJM
RSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ug
aWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQpCisgICAgICAgICAgICBlbHNlIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQgfHwgbU91dHB1dFR5cGUgPT0gU0hf
SExTTF80XzBfRkw5XzNfT1VUUFVUKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlm
ICh0ZXh0dXJlRnVuY3Rpb24tPm1ldGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQpCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoSXNJbnRlZ2VyU2FtcGxlcih0
ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgInguTG9hZCgiOworICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5Mb2FkKCI7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1wbGVy
KHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG91dCA8PCAieC5TYW1wbGVDbXBMZXZlbFplcm8ocywgIjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIu
U2FtcGxlQ21wTGV2ZWxaZXJvKCIgPDwgc2FtcGxlclJlZmVyZW5jZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICIsICI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgInguU2FtcGxlR3JhZChzLCAiOworICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVHcmFkKCIgPDwgc2FtcGxl
clJlZmVyZW5jZSA8PCAiLCAiOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1
bmN0aW9uLT5zYW1wbGVyKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVGdW5j
dGlvbi0+bWV0aG9kID09IFRleHR1cmVGdW5jdGlvbjo6RkVUQ0gpCiAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInguTG9hZCgiOworICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgIiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAiLkxvYWQoIjsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoSXNTaGFkb3dTYW1wbGVyKHRleHR1
cmVGdW5jdGlvbi0+c2FtcGxlcikpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2godGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QpCiAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6SU1QTElDSVQ6
IG91dCA8PCAieC5TYW1wbGVDbXAocywgIjsgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkJJQVM6ICAgICBvdXQgPDwgInguU2FtcGxl
Q21wKHMsICI7ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4
dHVyZUZ1bmN0aW9uOjpMT0Q6ICAgICAgb3V0IDw8ICJ4LlNhbXBsZUNtcChzLCAiOyAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9E
MDogICAgIG91dCA8PCAieC5TYW1wbGVDbXBMZXZlbFplcm8ocywgIjsgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDBCSUFTOiBvdXQgPDwgIngu
U2FtcGxlQ21wTGV2ZWxaZXJvKHMsICI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBUZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlQ21wKCIgPDwgc2Ft
cGxlclJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkJJQVM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVDbXAoIiA8PCBzYW1w
bGVyUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlQ21wKCIgPDwgc2FtcGxl
clJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCAiOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVDbXBMZXZlbFplcm8oIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzYW1wbGVyUmVmZXJlbmNlIDw8ICIs
ICI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIFRleHR1cmVGdW5jdGlvbjo6TE9EMEJJQVM6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1wbGVDbXBM
ZXZlbFplcm8oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzYW1wbGVyUmVm
ZXJlbmNlIDw8ICIsICI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTEwNTcsMjMgKzEzMjgsMzEgQEAKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCh0ZXh0dXJlRnVuY3Rpb24t
Pm1ldGhvZCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgVGV4dHVyZUZ1bmN0aW9uOjpJTVBMSUNJVDogb3V0IDw8ICJ4LlNhbXBsZShzLCAiOyAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpCSUFT
OiAgICAgb3V0IDw8ICJ4LlNhbXBsZUJpYXMocywgIjsgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0Q6ICAgICAgb3V0IDw8ICJ4LlNhbXBsZUxl
dmVsKHMsICI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0
aW9uOjpMT0QwOiAgICAgb3V0IDw8ICJ4LlNhbXBsZUxldmVsKHMsICI7IGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzogb3V0IDw8ICJ4
LlNhbXBsZUxldmVsKHMsICI7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBU
ZXh0dXJlRnVuY3Rpb246OklNUExJQ0lUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiIiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuU2FtcGxlKCIgPDwgc2FtcGxlclJlZmVy
ZW5jZSA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkJJQVM6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1w
bGVCaWFzKCIgPDwgc2FtcGxlclJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAiLlNhbXBs
ZUxldmVsKCIgPDwgc2FtcGxlclJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSBUZXh0dXJlRnVuY3Rpb246OkxPRDA6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICIiIDw8IHRleHR1cmVSZWZlcmVuY2UgPDwgIi5TYW1w
bGVMZXZlbCgiIDw8IHNhbXBsZXJSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIiwgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgVGV4dHVyZUZ1bmN0aW9uOjpMT0QwQklBUzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAi
LlNhbXBsZUxldmVsKCIgPDwgc2FtcGxlclJlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiLCAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKLSAgICAgICAgICAgIC8vIEludGVnZXIgc2FtcGxpbmcg
cmVxdWlyZXMgaW50ZWdlciBhZGRyZXNzZXMKLSAgICAgICAgICAgIFRTdHJpbmcgYWRkcmVzc3gg
PSAiIjsKLSAgICAgICAgICAgIFRTdHJpbmcgYWRkcmVzc3kgPSAiIjsKLSAgICAgICAgICAgIFRT
dHJpbmcgYWRkcmVzc3ogPSAiIjsKLSAgICAgICAgICAgIFRTdHJpbmcgY2xvc2UgPSAiIjsKLQog
ICAgICAgICAgICAgaWYgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVy
KSB8fAogICAgICAgICAgICAgICAgIHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kID09IFRleHR1cmVG
dW5jdGlvbjo6RkVUQ0gpCiAgICAgICAgICAgICB7CkBAIC0xMDgzLDI4ICsxMzYyLDYgQEAKICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzogb3V0IDw8ICJpbnQ0KCI7IGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAvLyBDb252ZXJ0IGZyb20gbm9ybWFsaXplZCBmbG9hdGluZy1wb2ludCB0
byBpbnRlZ2VyCi0gICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGdW5jdGlvbi0+bWV0aG9kICE9
IFRleHR1cmVGdW5jdGlvbjo6RkVUQ0gpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBhZGRyZXNzeCA9ICJpbnQoZmxvb3Iod2lkdGggKiBmcmFjKCgiOwotICAgICAgICAg
ICAgICAgICAgICBhZGRyZXNzeSA9ICJpbnQoZmxvb3IoaGVpZ2h0ICogZnJhYygoIjsKLQotICAg
ICAgICAgICAgICAgICAgICBpZiAoSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLT5zYW1w
bGVyKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgYWRk
cmVzc3ogPSAiaW50KG1heCgwLCBtaW4obGF5ZXJzIC0gMSwgZmxvb3IoMC41ICsgIjsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChJc1NhbXBsZXJD
dWJlKHRleHR1cmVGdW5jdGlvbi0+c2FtcGxlcikpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3N6ID0gIigoKCgiOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc3ogPSAiaW50KGZsb29yKGRlcHRoICogZnJh
YygoIjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGNsb3Nl
ID0gIikpKSkiOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHsKQEAgLTExMTcsMjIgKzEzNzQsMTAgQEAKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFRTdHJpbmcgcHJvaiA9ICIiOyAg
IC8vIE9ubHkgdXNlZCBmb3IgcHJvamVjdGVkIHRleHR1cmVzCisgICAgICAgICAgICBvdXQgPDwg
dGV4Q29vcmRYIDw8ICIsICIgPDwgdGV4Q29vcmRZOwogCi0gICAgICAgICAgICBpZiAodGV4dHVy
ZUZ1bmN0aW9uLT5wcm9qKQorICAgICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xf
M18wX09VVFBVVCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2godGV4dHVy
ZUZ1bmN0aW9uLT5jb29yZHMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
Y2FzZSAzOiBwcm9qID0gIiAvIHQueiI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSA0
OiBwcm9qID0gIiAvIHQudyI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIG91dCA8PCBhZGRyZXNzeCArICgidC54IiArIHByb2opICsgY2xvc2UgKyAiLCAiICsgYWRk
cmVzc3kgKyAoInQueSIgKyBwcm9qKSArIGNsb3NlOwotCi0gICAgICAgICAgICBpZiAobU91dHB1
dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQotICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IGlmIChobHNsQ29vcmRzID49IDMpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICBpZiAodGV4dHVyZUZ1bmN0aW9uLT5jb29yZHMgPCAzKQpAQCAtMTE0MSw3ICsxMzg2LDcg
QEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCB0Lnoi
ICsgcHJvajsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLCB0LnoiIDw8IHByb2o7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKQEAgLTExNTksMTgg
KzE0MDQsMTMgQEAKIAogICAgICAgICAgICAgICAgIG91dCA8PCAiKSk7XG4iOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDExX09VVFBV
VCkKKyAgICAgICAgICAgIGVsc2UgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBV
VCB8fCBtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgaWYgKGhsc2xDb29yZHMgPj0gMykKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChJc0ludGVnZXJTYW1wbGVyKHRleHR1cmVGdW5j
dGlvbi0+c2FtcGxlcikgJiYgSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVuY3Rpb24tPnNhbXBsZXIp
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiwgZmFjZSI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
IiwgIiArIGFkZHJlc3N6ICsgKCJ0LnoiICsgcHJvaikgKyBjbG9zZTsKLSAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIUlzSW50ZWdlclNhbXBsZXIodGV4
dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIUlz
U2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLT5zYW1wbGVyKSB8fCB0ZXhDb29yZFogPT0gImZh
Y2UiKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICIgPDwgdGV4Q29vcmRaOwogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlRnVuY3Rpb24tPm1l
dGhvZCA9PSBUZXh0dXJlRnVuY3Rpb246OkdSQUQpCkBAIC0xMjQwLDcgKzE0ODAsOCBAQAogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
aWYgKHRleHR1cmVGdW5jdGlvbi0+b2Zmc2V0KQorICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJl
RnVuY3Rpb24tPm9mZnNldCAmJiAoIUlzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9uLT5z
YW1wbGVyKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZUZ1bmN0aW9uLT5tZXRob2QgPT0gVGV4dHVyZUZ1bmN0aW9uOjpGRVRDSCkpCiAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgb2Zmc2V0IjsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xMzM1LDcgKzE1NzYsOCBAQAogCiAgICAgICAgICAgICBl
bnN1cmVTdHJ1Y3REZWZpbmVkKG5vZGVUeXBlKTsKIAotICAgICAgICAgICAgb3V0IDw8IERlY29y
YXRlVW5pZm9ybShuYW1lLCBub2RlVHlwZSk7CisgICAgICAgICAgICBjb25zdCBUTmFtZSAmbmFt
ZVdpdGhNZXRhZGF0YSA9IG5vZGUtPmdldE5hbWUoKTsKKyAgICAgICAgICAgIG91dCA8PCBEZWNv
cmF0ZVVuaWZvcm0obmFtZVdpdGhNZXRhZGF0YSwgbm9kZVR5cGUpOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgfHwgcXVhbGlmaWVyID09IEV2
cVZlcnRleEluKQogICAgICAgICB7CkBAIC0xMzg3LDE4ICsxNjI5LDE5IEBACiAgICAgICAgICAg
ICBtVXNlc0luc3RhbmNlSUQgPSB0cnVlOwogICAgICAgICAgICAgb3V0IDw8IG5hbWU7CiAgICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmFtZSA9PSAiZ2xfRnJhZ0RlcHRoRVhUIikKKyAgICAg
ICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cVZlcnRleElEKQogICAgICAgICB7CisgICAgICAg
ICAgICBtVXNlc1ZlcnRleElEID0gdHJ1ZTsKKyAgICAgICAgICAgIG91dCA8PCBuYW1lOworICAg
ICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gImdsX0ZyYWdEZXB0aEVYVCIgfHwgbmFt
ZSA9PSAiZ2xfRnJhZ0RlcHRoIikKKyAgICAgICAgewogICAgICAgICAgICAgbVVzZXNGcmFnRGVw
dGggPSB0cnVlOwogICAgICAgICAgICAgb3V0IDw8ICJnbF9EZXB0aCI7CiAgICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAobm9kZS0+aXNJbnRlcm5hbCgpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBvdXQgPDwgbmFtZTsKLSAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG91dCA8PCBEZWNvcmF0ZShuYW1lKTsKKyAgICAgICAgICAgIG91dCA8PCBEZWNvcmF0
ZUlmTmVlZGVkKG5vZGUtPmdldE5hbWUoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0xNDE0
LDExICsxNjU3LDExIEBACiAgICAgewogICAgICAgICBpZiAob3AgPT0gRU9wRXF1YWwpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA9PSAiLCAiKSIs
IG91dCk7CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA9PSAi
LCAiKSIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAg
b3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiICE9ICIsICIpIiwgb3V0KTsKKyAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICE9ICIsICIpIik7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgZWxzZQpAQCAtMTQzMSwyMiArMTY3NCw1OCBAQAogICAgICAgICBpZiAodHlw
ZS5pc0FycmF5KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmZ1bmN0
aW9uTmFtZSA9IGFkZEFycmF5RXF1YWxpdHlGdW5jdGlvbih0eXBlKTsKLSAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQodmlzaXQsIChmdW5jdGlvbk5hbWUgKyAiKCIpLmNfc3RyKCksICIsICIsICIp
Iiwgb3V0KTsKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgKGZ1bmN0aW9u
TmFtZSArICIoIikuY19zdHIoKSwgIiwgIiwgIikiKTsKICAgICAgICAgfQogICAgICAgICBlbHNl
IGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlID0gKnR5cGUuZ2V0U3RydWN0KCk7CiAg
ICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmdW5jdGlvbk5hbWUgPSBhZGRTdHJ1Y3RFcXVhbGl0
eUZ1bmN0aW9uKHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAo
ZnVuY3Rpb25OYW1lICsgIigiKS5jX3N0cigpLCAiLCAiLCAiKSIsIG91dCk7CisgICAgICAgICAg
ICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsIChmdW5jdGlvbk5hbWUgKyAiKCIpLmNfc3RyKCks
ICIsICIsICIpIik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQodHlwZS5pc01hdHJpeCgpIHx8IHR5cGUuaXNWZWN0b3IoKSk7Ci0gICAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiYWxsKCIsICIgPT0gIiwgIikiLCBvdXQpOworICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYWxsKCIsICIgPT0gIiwgIikiKTsK
ICAgICAgICAgfQogICAgIH0KIH0KIAorYm9vbCBPdXRwdXRITFNMOjphbmNlc3RvckV2YWx1YXRl
c1RvU2FtcGxlckluU3RydWN0KFZpc2l0IHZpc2l0KQoreworICAgIC8vIEluc2lkZSBJblZpc2l0
IHRoZSBjdXJyZW50IG5vZGUgaXMgYWxyZWFkeSBpbiB0aGUgcGF0aC4KKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgaW5pdGlhbE4gPSB2aXNpdCA9PSBJblZpc2l0ID8gMXUgOiAwdTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBuID0gaW5pdGlhbE47IGdldEFuY2VzdG9yTm9kZShuKSAhPSBudWxscHRy
OyArK24pCisgICAgeworICAgICAgICBUSW50ZXJtTm9kZSAqYW5jZXN0b3IgICAgICAgICAgICAg
ICA9IGdldEFuY2VzdG9yTm9kZShuKTsKKyAgICAgICAgY29uc3QgVEludGVybUJpbmFyeSAqYW5j
ZXN0b3JCaW5hcnkgPSBhbmNlc3Rvci0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgIGlmIChh
bmNlc3RvckJpbmFyeSA9PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChhbmNlc3RvckJpbmFyeS0+Z2V0T3Ao
KSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUg
PSBhbmNlc3RvckJpbmFyeS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAg
ICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24gKmluZGV4ID0KKyAgICAgICAg
ICAgICAgICAgICAgYW5jZXN0b3JCaW5hcnktPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlv
bigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQgPSBzdHJ1Y3R1cmUtPmZp
ZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgICAgIGlmIChJc1NhbXBs
ZXIoZmllbGQtPnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkpKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBFT3BJbmRl
eERpcmVjdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgLy8gUmV0dXJuaW5nIGEgc2FtcGxlciBmcm9tIGluZGlyZWN0IGluZGV4
aW5nIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9vbCBPdXRwdXRITFNMOjp2
aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKICAgICBUSW5m
b1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOwpAQCAtMTQ4MiwxMSArMTc2MSwxMSBAQAog
ICAgICAgICAgICAgQVNTRVJUKHJpZ2h0QWdnID09IG51bGxwdHIgfHwgcmlnaHRBZ2ctPmdldE9w
KCkgIT0gRU9wRnVuY3Rpb25DYWxsKTsKIAogICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmZnVu
Y3Rpb25OYW1lID0gYWRkQXJyYXlBc3NpZ25tZW50RnVuY3Rpb24obm9kZS0+Z2V0VHlwZSgpKTsK
LSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsIChmdW5jdGlvbk5hbWUgKyAiKCIpLmNf
c3RyKCksICIsICIsICIpIik7CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
IChmdW5jdGlvbk5hbWUgKyAiKCIpLmNfc3RyKCksICIsICIsICIpIik7CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAi
KCIsICIgPSAiLCAiKSIpOworICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
KCIsICIgPSAiLCAiKSIpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BJbml0aWFsaXplOgpAQCAtMTUwMSwxOCArMTc4MCwxNyBAQAogICAgICAgICAgICAgQVNTRVJU
KHN5bWJvbE5vZGUpOwogICAgICAgICAgICAgVEludGVybVR5cGVkICpleHByZXNzaW9uID0gbm9k
ZS0+Z2V0UmlnaHQoKTsKIAotICAgICAgICAgICAgLy8gVE9ETyAoam1hZGlsbCk6IGRvIGEgJ2Rl
ZXAnIHNjYW4gdG8ga25vdyBpZiBhbiBleHByZXNzaW9uIGlzIHN0YXRpY2FsbHkgY29uc3QKLSAg
ICAgICAgICAgIGlmIChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFHbG9iYWwgJiYg
ZXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgIT0gRXZxQ29uc3QpCisgICAgICAgICAgICAvLyBH
bG9iYWwgaW5pdGlhbGl6ZXJzIG11c3QgYmUgY29uc3RhbnQgYXQgdGhpcyBwb2ludC4KKyAgICAg
ICAgICAgIEFTU0VSVChzeW1ib2xOb2RlLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFHbG9iYWwgfHwK
KyAgICAgICAgICAgICAgICAgICAoZXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgJiYKKyAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9u
KCkgIT0gbnVsbHB0cikpOworICAgICAgICAgICAgaWYgKHdyaXRlU2FtZVN5bWJvbEluaXRpYWxp
emVyKG91dCwgc3ltYm9sTm9kZSwgZXhwcmVzc2lvbikpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgLy8gRm9yIHZhcmlhYmxlcyB3aGljaCBhcmUgbm90IGNvbnN0YW50LCBkZWZlciB0
aGVpciByZWFsIGluaXRpYWxpemF0aW9uIHVudGlsCi0gICAgICAgICAgICAgICAgLy8gYWZ0ZXIg
d2UgaW5pdGlhbGl6ZSBvdGhlciBnbG9iYWxzOiB1bmlmb3JtcywgYXR0cmlidXRlcyBhbmQgdmFy
eWluZ3MuCi0gICAgICAgICAgICAgICAgbURlZmVycmVkR2xvYmFsSW5pdGlhbGl6ZXJzLnB1c2hf
YmFjayhzdGQ6Om1ha2VfcGFpcihzeW1ib2xOb2RlLCBleHByZXNzaW9uKSk7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyAmaW5pdFN0cmluZyA9IGluaXRpYWxpemVyKG5vZGUtPmdldFR5
cGUoKSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0UmlnaHQobmV3IFRJbnRlcm1SYXcobm9k
ZS0+Z2V0VHlwZSgpLCBpbml0U3RyaW5nKSk7CisgICAgICAgICAgICAgICAgLy8gU2tpcCBpbml0
aWFsaXppbmcgdGhlIHJlc3Qgb2YgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICh3cml0ZVNhbWVT
eW1ib2xJbml0aWFsaXplcihvdXQsIHN5bWJvbE5vZGUsIGV4cHJlc3Npb24pKQorICAgICAgICAg
ICAgZWxzZSBpZiAod3JpdGVDb25zdGFudEluaXRpYWxpemF0aW9uKG91dCwgc3ltYm9sTm9kZSwg
ZXhwcmVzc2lvbikpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gU2tpcCBpbml0
aWFsaXppbmcgdGhlIHJlc3Qgb2YgdGhlIGV4cHJlc3Npb24KICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1MjEsMTEgKzE3OTksMjEg
QEAKICAgICAgICAgICAgIG91dCA8PCAiID0gIjsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wQWRkQXNzaWduOiAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICIoIiwgIiArPSAiLCAiKSIpOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wU3Vi
QXNzaWduOiAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiAtPSAiLCAi
KSIpOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTXVsQXNzaWduOiAgICAgICAgICAg
ICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiAqPSAiLCAiKSIpOyAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXJBc3NpZ246IG91dHB1dFRyaXBsZXQo
dmlzaXQsICIoIiwgIiAqPSAiLCAiKSIpOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNTY2FsYXJBc3NpZ246IG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiAqPSAi
LCAiKSIpOyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgorICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICs9ICIsICIpIik7CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEVPcFN1YkFzc2lnbjoKKyAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICIoIiwgIiAtPSAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBFT3BNdWxBc3NpZ246CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiKCIsICIgKj0gIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wVmVj
dG9yVGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiKCIsICIgKj0gIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wTWF0
cml4VGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiKCIsICIgKj0gIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wVmVj
dG9yVGltZXNNYXRyaXhBc3NpZ246CiAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAg
ICAgICAgewpAQCAtMTU1OCwxMyArMTg0NiwyNyBAQAogICAgICAgICAgICAgb3V0IDw8ICIpKSkp
IjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGl2QXNzaWduOiAg
ICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiAvPSAiLCAiKSIpOyAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSU1vZEFzc2lnbjogICAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQodmlzaXQsICIoIiwgIiAlPSAiLCAiKSIpOyAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wQml0U2hpZnRMZWZ0QXNzaWduOiAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIo
IiwgIiA8PD0gIiwgIikiKTsgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRS
aWdodEFzc2lnbjogICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+Pj0gIiwgIikiKTsg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFzc2lnbjogICAgICAgIG91
dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiAmPSAiLCAiKSIpOyAgICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2lnbjogICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICIoIiwgIiBePSAiLCAiKSIpOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lz
ZU9yQXNzaWduOiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiB8PSAiLCAiKSIp
OyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wRGl2QXNzaWduOgorICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIC89ICIsICIpIik7CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVPcElNb2RBc3NpZ246CisgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIgJT0gIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgRU9wQml0U2hpZnRMZWZ0QXNzaWduOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgIigiLCAiIDw8PSAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBF
T3BCaXRTaGlmdFJpZ2h0QXNzaWduOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiID4+PSAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BC
aXR3aXNlQW5kQXNzaWduOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigi
LCAiICY9ICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEJpdHdpc2VY
b3JBc3NpZ246CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgXj0g
IiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wQml0d2lzZU9yQXNzaWdu
OgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIHw9ICIsICIpIik7
CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgogICAgICAgICB7
CiAgICAgICAgICAgICBjb25zdCBUVHlwZSYgbGVmdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdl
dFR5cGUoKTsKQEAgLTE1NzksMjYgKzE4ODEsNTggQEAKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UgaWYgKGFuY2VzdG9yRXZhbHVhdGVzVG9TYW1wbGVySW5TdHJ1Y3QodmlzaXQpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFsbCBwYXJ0cyBvZiBhbiBleHByZXNzaW9u
IHRoYXQgYWNjZXNzIGEgc2FtcGxlciBpbiBhIHN0cnVjdCBuZWVkIHRvIHVzZSBfIGFzCisgICAg
ICAgICAgICAgICAgLy8gc2VwYXJhdG9yIHRvIGFjY2VzcyB0aGUgc2FtcGxlciB2YXJpYWJsZSB0
aGF0IGhhcyBiZWVuIG1vdmVkIG91dCBvZiB0aGUgc3RydWN0LgorICAgICAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIiIsICJfIiwgIiIpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dFRyaXBs
ZXQodmlzaXQsICIiLCAiWyIsICJdIik7CisgICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiIiwgIlsiLCAiXSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgogICAgICAgICAvLyBXZSBk
byBub3QgY3VycmVudGx5IHN1cHBvcnQgaW5kaXJlY3QgcmVmZXJlbmNlcyB0byBpbnRlcmZhY2Ug
YmxvY2tzCiAgICAgICAgIEFTU0VSVChub2RlLT5nZXRMZWZ0KCktPmdldEJhc2ljVHlwZSgpICE9
IEVidEludGVyZmFjZUJsb2NrKTsKLSAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIiIsICJb
IiwgIl0iKTsKKyAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiIiwgIlsiLCAiXSIp
OwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6Ci0gICAg
ICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBU
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1
Y3QoKTsKICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uKiBpbmRleCA9IG5v
ZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgICAgICAgICAgY29uc3Qg
VEZpZWxkKiBmaWVsZCA9IHN0cnVjdHVyZS0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07
Ci0gICAgICAgICAgICBvdXQgPDwgIi4iICsgRGVjb3JhdGVGaWVsZChmaWVsZC0+bmFtZSgpLCAq
c3RydWN0dXJlKTsKIAotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLy8g
SW4gY2FzZXMgd2hlcmUgaW5kZXhpbmcgcmV0dXJucyBhIHNhbXBsZXIsIHdlIG5lZWQgdG8gYWNj
ZXNzIHRoZSBzYW1wbGVyIHZhcmlhYmxlCisgICAgICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIG1v
dmVkIG91dCBvZiB0aGUgc3RydWN0LgorICAgICAgICAgICAgYm9vbCBpbmRleGluZ1JldHVybnNT
YW1wbGVyID0gSXNTYW1wbGVyKGZpZWxkLT50eXBlKCktPmdldEJhc2ljVHlwZSgpKTsKKyAgICAg
ICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBpbmRleGluZ1JldHVybnNTYW1wbGVyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFNhbXBsZXJzIGV4dHJhY3RlZCBmcm9t
IHN0cnVjdHMgaGF2ZSAiYW5nbGUiIHByZWZpeCB0byBhdm9pZCBuYW1lIGNvbmZsaWN0cy4KKyAg
ICAgICAgICAgICAgICAvLyBUaGlzIHByZWZpeCBpcyBvbmx5IG91dHB1dCBhdCB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBpbmRleGluZyBleHByZXNzaW9uLCB3aGljaAorICAgICAgICAgICAgICAgIC8v
IG1heSBoYXZlIG11bHRpcGxlIHBhcnRzLgorICAgICAgICAgICAgICAgIG91dCA8PCAiYW5nbGUi
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpbmRleGluZ1JldHVybnNTYW1wbGVy
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFsbCBwYXJ0cyBvZiBhbiBleHBy
ZXNzaW9uIHRoYXQgYWNjZXNzIGEgc2FtcGxlciBpbiBhIHN0cnVjdCBuZWVkIHRvIHVzZSBfIGFz
CisgICAgICAgICAgICAgICAgLy8gc2VwYXJhdG9yIHRvIGFjY2VzcyB0aGUgc2FtcGxlciB2YXJp
YWJsZSB0aGF0IGhhcyBiZWVuIG1vdmVkIG91dCBvZiB0aGUgc3RydWN0LgorICAgICAgICAgICAg
ICAgIGluZGV4aW5nUmV0dXJuc1NhbXBsZXIgPSBhbmNlc3RvckV2YWx1YXRlc1RvU2FtcGxlcklu
U3RydWN0KHZpc2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2aXNpdCA9PSBJ
blZpc2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChpbmRleGluZ1JldHVy
bnNTYW1wbGVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8
ICJfIiArIGZpZWxkLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiLiIg
KyBEZWNvcmF0ZUZpZWxkKGZpZWxkLT5uYW1lKCksICpzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RJbnRlcmZh
Y2VCbG9jazoKQEAgLTE2NDgsNTUgKzE5ODIsODEgQEAKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsgICAvLyBGdWxseSBwcm9jZXNzZWQKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wQWRkOiAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiAr
ICIsICIpIik7IGJyZWFrOwotICAgICAgY2FzZSBFT3BTdWI6ICAgICAgICAgICAgICAgb3V0cHV0
VHJpcGxldCh2aXNpdCwgIigiLCAiIC0gIiwgIikiKTsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE11
bDogICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOyBi
cmVhazsKLSAgICAgIGNhc2UgRU9wRGl2OiAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICIoIiwgIiAvICIsICIpIik7IGJyZWFrOwotICAgICAgY2FzZSBFT3BJTW9kOiAgICAgICAg
ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiICUgIiwgIikiKTsgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDogICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIg
PDwgIiwgIikiKTsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6ICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPj4gIiwgIikiKTsgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cEJpdHdpc2VBbmQ6ICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgJiAiLCAiKSIp
OyBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjogICAgICAgIG91dHB1dFRyaXBsZXQo
dmlzaXQsICIoIiwgIiBeICIsICIpIik7IGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlT3I6
ICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiIHwgIiwgIikiKTsgYnJlYWs7Cisg
ICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIo
IiwgIiArICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcFN1YjoKKyAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAtICIsICIpIik7CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICIoIiwgIiAqICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEVPcERpdjoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAv
ICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcElNb2Q6CisgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgJSAiLCAiKSIpOworICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6CisgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiKCIsICIgPDwgIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwg
dmlzaXQsICIoIiwgIiA+PiAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBF
T3BCaXR3aXNlQW5kOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAi
ICYgIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjoK
KyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiBeICIsICIpIik7Cisg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEJpdHdpc2VPcjoKKyAgICAgICAgICBvdXRw
dXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiB8ICIsICIpIik7CisgICAgICAgICAgYnJlYWs7
CiAgICAgICBjYXNlIEVPcEVxdWFsOgogICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKICAgICAgICAg
b3V0cHV0RXF1YWwodmlzaXQsIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLCBub2RlLT5nZXRP
cCgpLCBvdXQpOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46ICAgICAg
ICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA8ICIsICIpIik7ICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuOiAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIg
PiAiLCAiKSIpOyAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOiAgICAgb3V0
cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiIDw9ICIsICIpIik7ICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wR3JlYXRlclRoYW5FcXVhbDogIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+PSAiLCAi
KSIpOyAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyOiBvdXRwdXRUcmlw
bGV0KHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOyAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNYXRy
aXhUaW1lc1NjYWxhcjogb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiICogIiwgIikiKTsgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6IG91dHB1dFRyaXBsZXQodmlz
aXQsICJtdWwoIiwgIiwgdHJhbnNwb3NlKCIsICIpKSIpOyBicmVhazsKLSAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNWZWN0b3I6IG91dHB1dFRyaXBsZXQodmlzaXQsICJtdWwodHJhbnNwb3NlKCIs
ICIpLCAiLCAiKSIpOyBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6IG91
dHB1dFRyaXBsZXQodmlzaXQsICJ0cmFuc3Bvc2UobXVsKHRyYW5zcG9zZSgiLCAiKSwgdHJhbnNw
b3NlKCIsICIpKSkiKTsgYnJlYWs7CisgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAiKCIsICIgPiAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAg
Y2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiIDw9ICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEdy
ZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIs
ICIgPj0gIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wVmVjdG9yVGlt
ZXNTY2FsYXI6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKiAi
LCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxh
cjoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAqICIsICIpIik7
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgorICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm11bCgiLCAiLCB0cmFuc3Bvc2UoIiwg
IikpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9y
OgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm11bCh0cmFuc3Bvc2UoIiwg
IiksICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVz
TWF0cml4OgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInRyYW5zcG9zZSht
dWwodHJhbnNwb3NlKCIsICIpLCB0cmFuc3Bvc2UoIiwgIikpKSIpOworICAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6Ci0gICAgICAgIGlmIChub2RlLT5nZXRSaWdodCgp
LT5oYXNTaWRlRWZmZWN0cygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgInMiIDw8
IG1VbmZvbGRTaG9ydENpcmN1aXQtPmdldE5leHRUZW1wb3JhcnlJbmRleCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgfHwgIiwgIikiKTsKLSAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gSExTTCBkb2Vzbid0IHNob3J0
LWNpcmN1aXQgfHwsIHNvIHdlIGFzc3VtZSB0aGF0IHx8IGFmZmVjdGVkIGJ5IHNob3J0LWNpcmN1
aXRpbmcgaGF2ZSBiZWVuIHVuZm9sZGVkLgorICAgICAgICBBU1NFUlQoIW5vZGUtPmdldFJpZ2h0
KCktPmhhc1NpZGVFZmZlY3RzKCkpOworICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICIoIiwgIiB8fCAiLCAiKSIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgIGNhc2UgRU9w
TG9naWNhbFhvcjoKICAgICAgICAgbVVzZXNYb3IgPSB0cnVlOwotICAgICAgICBvdXRwdXRUcmlw
bGV0KHZpc2l0LCAieG9yKCIsICIsICIsICIpIik7CisgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgInhvcigiLCAiLCAiLCAiKSIpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
RU9wTG9naWNhbEFuZDoKLSAgICAgICAgaWYgKG5vZGUtPmdldFJpZ2h0KCktPmhhc1NpZGVFZmZl
Y3RzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAicyIgPDwgbVVuZm9sZFNob3J0
Q2lyY3VpdC0+Z2V0TmV4dFRlbXBvcmFyeUluZGV4KCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgIG91dHB1
dFRyaXBsZXQodmlzaXQsICIoIiwgIiAmJiAiLCAiKSIpOwotICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgfQorICAgICAgICAvLyBITFNMIGRvZXNuJ3Qgc2hvcnQtY2lyY3VpdCAmJiwg
c28gd2UgYXNzdW1lIHRoYXQgJiYgYWZmZWN0ZWQgYnkgc2hvcnQtY2lyY3VpdGluZyBoYXZlIGJl
ZW4gdW5mb2xkZWQuCisgICAgICAgIEFTU0VSVCghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVm
ZmVjdHMoKSk7CisgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICYmICIs
ICIpIik7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKICAgICB9CiAKQEAgLTE3MDUsMTM3ICsyMDY1LDI2MSBAQAogCiBib29sIE91dHB1dEhMU0w6
OnZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkKIHsKKyAgICBUSW5m
b1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOworCiAgICAgc3dpdGNoIChub2RlLT5nZXRP
cCgpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wTmVnYXRpdmU6ICAgICAgICAgb3V0cHV0VHJpcGxl
dCh2aXNpdCwgIigtIiwgIiIsICIpIik7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBv
c2l0aXZlOiAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoKyIsICIiLCAiKSIpOyAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BWZWN0b3JMb2dpY2FsTm90OiBvdXRwdXRUcmlwbGV0
KHZpc2l0LCAiKCEiLCAiIiwgIikiKTsgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTG9n
aWNhbE5vdDogICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIighIiwgIiIsICIpIik7ICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VOb3Q6ICAgICAgIG91dHB1dFRyaXBsZXQo
dmlzaXQsICIofiIsICIiLCAiKSIpOyAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQb3N0
SW5jcmVtZW50OiAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIiLCAiKyspIik7ICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDogICAgb3V0cHV0VHJpcGxldCh2
aXNpdCwgIigiLCAiIiwgIi0tKSIpOyAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFByZUlu
Y3JlbWVudDogICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoKysiLCAiIiwgIikiKTsgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6ICAgICBvdXRwdXRUcmlwbGV0KHZp
c2l0LCAiKC0tIiwgIiIsICIpIik7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmFkaWFu
czogICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgInJhZGlhbnMoIiwgIiIsICIpIik7ICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcERlZ3JlZXM6ICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICJkZWdyZWVzKCIsICIiLCAiKSIpOyAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTaW46ICAg
ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAic2luKCIsICIiLCAiKSIpOyAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wQ29zOiAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNp
dCwgImNvcygiLCAiIiwgIikiKTsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRhbjogICAg
ICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJ0YW4oIiwgIiIsICIpIik7ICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BBc2luOiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAiYXNpbigiLCAiIiwgIikiKTsgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWNvczogICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImFjb3MoIiwgIiIsICIpIik7ICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEF0YW46ICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICJhdGFuKCIsICIiLCAiKSIpOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTaW5oOiAgICAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAic2luaCgiLCAiIiwgIikiKTsgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wQ29zaDogICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwg
ImNvc2goIiwgIiIsICIpIik7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRhbmg6ICAgICAg
ICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJ0YW5oKCIsICIiLCAiKSIpOyAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKC0iLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVPcFBvc2l0aXZlOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
KCsiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFZlY3Rv
ckxvZ2ljYWxOb3Q6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoISIs
ICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5v
dDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIighIiwgIiIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlTm90OgorICAgICAg
ICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKH4iLCAiIiwgIikiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6CisgICAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiIsICIrKykiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6CisgICAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiIsICItLSkiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgIigrKyIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wUHJlRGVjcmVtZW50OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAiKC0tIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BSYWRpYW5zOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicmFkaWFu
cygiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcERlZ3Jl
ZXM6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkZWdyZWVzKCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU2luOgorICAgICAg
ICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAic2luKCIsICIiLCAiKSIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29zOgorICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiY29zKCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wVGFuOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAidGFuKCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
QXNpbjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzaW4oIiwgIiIs
ICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBY29zOgorICAgICAg
ICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYWNvcygiLCAiIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEF0YW46CisgICAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICJhdGFuKCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wU2luaDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgInNpbmgoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BDb3NoOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiY29zaCgi
LCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFRhbmg6Cisg
ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJ0YW5oKCIsICIiLCAiKSIpOwor
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEFzaW5oOgogICAgICAgICBBU1NFUlQo
bm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1
bmN0aW9uVHJpcGxldCh2aXNpdCwgImFzaW5oKCIpOworICAgICAgICB3cml0ZUVtdWxhdGVkRnVu
Y3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJhc2luaCgiKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcEFjb3NoOgogICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5j
dGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgImFj
b3NoKCIpOworICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQs
ICJhY29zaCgiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEF0YW5oOgogICAgICAg
ICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVF
bXVsYXRlZEZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgImF0YW5oKCIpOworICAgICAgICB3cml0ZUVt
dWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJhdGFuaCgiKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEV4cDogICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICJleHAoIiwgIiIsICIpIik7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2c6ICAgICAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAibG9nKCIsICIiLCAiKSIpOyAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wRXhwMjogICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwg
ImV4cDIoIiwgIiIsICIpIik7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExvZzI6ICAgICAg
ICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJsb2cyKCIsICIiLCAiKSIpOyAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BTcXJ0OiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAi
c3FydCgiLCAiIiwgIikiKTsgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSW52ZXJzZVNxcnQ6
ICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgInJzcXJ0KCIsICIiLCAiKSIpOyAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEFiczogICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJh
YnMoIiwgIiIsICIpIik7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTaWduOiAgICAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAic2lnbigiLCAiIiwgIikiKTsgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wRmxvb3I6ICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImZs
b29yKCIsICIiLCAiKSIpOyAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRydW5jOiAgICAgICAg
ICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJ0cnVuYygiLCAiIiwgIikiKTsgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BSb3VuZDogICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAicm91
bmQoIiwgIiIsICIpIik7ICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wRXhwOgorICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImV4cCgiLCAiIiwgIikiKTsKKyAgICAgICAgICBi
cmVhazsKKyAgICAgIGNhc2UgRU9wTG9nOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgImxvZygiLCAiIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9w
RXhwMjoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJleHAyKCIsICIiLCAi
KSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BMb2cyOgorICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImxvZzIoIiwgIiIsICIpIik7CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVPcFNxcnQ6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAic3FydCgiLCAiIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9w
SW52ZXJzZVNxcnQ6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicnNxcnQo
IiwgIiIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEFiczoKKyAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhYnMoIiwgIiIsICIpIik7CisgICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEVPcFNpZ246CisgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAic2lnbigiLCAiIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgRU9wRmxvb3I6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZmxvb3Io
IiwgIiIsICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcFRydW5jOgorICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInRydW5jKCIsICIiLCAiKSIpOworICAg
ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BSb3VuZDoKKyAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICJyb3VuZCgiLCAiIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgRU9wUm91bmRFdmVuOgogICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0
ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldCh2aXNp
dCwgInJvdW5kRXZlbigiKTsKKyAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChv
dXQsIHZpc2l0LCAicm91bmRFdmVuKCIpOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
Q2VpbDogICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImNlaWwoIiwgIiIsICIpIik7
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZyYWN0OiAgICAgICAgICAgIG91dHB1dFRyaXBs
ZXQodmlzaXQsICJmcmFjKCIsICIiLCAiKSIpOyAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BD
ZWlsOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImNlaWwoIiwgIiIsICIp
Iik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEZyYWN0OgorICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImZyYWMoIiwgIiIsICIpIik7CisgICAgICAgICAgYnJl
YWs7CiAgICAgICBjYXNlIEVPcElzTmFuOgotICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAi
aXNuYW4oIiwgIiIsICIpIik7CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
aXNuYW4oIiwgIiIsICIpIik7CiAgICAgICAgIG1SZXF1aXJlc0lFRUVTdHJpY3RDb21waWxpbmcg
PSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSXNJbmY6ICAgICAgICAgICAg
b3V0cHV0VHJpcGxldCh2aXNpdCwgImlzaW5mKCIsICIiLCAiKSIpOyAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEZsb2F0Qml0c1RvSW50OiAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJhc2ludCgi
LCAiIiwgIikiKTsgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6ICBv
dXRwdXRUcmlwbGV0KHZpc2l0LCAiYXN1aW50KCIsICIiLCAiKSIpOyAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wSW50Qml0c1RvRmxvYXQ6ICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImFzZmxvYXQo
IiwgIiIsICIpIik7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9hdDogIG91
dHB1dFRyaXBsZXQodmlzaXQsICJhc2Zsb2F0KCIsICIiLCAiKSIpOyAgIGJyZWFrOworICAgICAg
Y2FzZSBFT3BJc0luZjoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJpc2lu
ZigiLCAiIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9wRmxvYXRCaXRz
VG9JbnQ6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYXNpbnQoIiwgIiIs
ICIpIik7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvVWludDoK
KyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhc3VpbnQoIiwgIiIsICIpIik7
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgorICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzZmxvYXQoIiwgIiIsICIpIik7CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9hdDoKKyAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhc2Zsb2F0KCIsICIiLCAiKSIpOworICAgICAgICAg
IGJyZWFrOwogICAgICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2OgogICAgICAgICBBU1NFUlQobm9k
ZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0
aW9uVHJpcGxldCh2aXNpdCwgInBhY2tTbm9ybTJ4MTYoIik7CisgICAgICAgIHdyaXRlRW11bGF0
ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInBhY2tTbm9ybTJ4MTYoIik7CiAgICAgICAg
IGJyZWFrOwogICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgogICAgICAgICBBU1NFUlQobm9k
ZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0
aW9uVHJpcGxldCh2aXNpdCwgInBhY2tVbm9ybTJ4MTYoIik7CisgICAgICAgIHdyaXRlRW11bGF0
ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInBhY2tVbm9ybTJ4MTYoIik7CiAgICAgICAg
IGJyZWFrOwogICAgICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6CiAgICAgICAgIEFTU0VSVChub2Rl
LT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rp
b25UcmlwbGV0KHZpc2l0LCAicGFja0hhbGYyeDE2KCIpOworICAgICAgICB3cml0ZUVtdWxhdGVk
RnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJwYWNrSGFsZjJ4MTYoIik7CiAgICAgICAgIGJy
ZWFrOwogICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CiAgICAgICAgIEFTU0VSVChub2Rl
LT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rp
b25UcmlwbGV0KHZpc2l0LCAidW5wYWNrU25vcm0yeDE2KCIpOworICAgICAgICB3cml0ZUVtdWxh
dGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJ1bnBhY2tTbm9ybTJ4MTYoIik7CiAgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6CiAgICAgICAgIEFTU0VS
VChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVk
RnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAidW5wYWNrVW5vcm0yeDE2KCIpOworICAgICAgICB3cml0
ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJ1bnBhY2tVbm9ybTJ4MTYoIik7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngxNjoKICAgICAgICAg
QVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRlRW11
bGF0ZWRGdW5jdGlvblRyaXBsZXQodmlzaXQsICJ1bnBhY2tIYWxmMngxNigiKTsKKyAgICAgICAg
d3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAidW5wYWNrSGFsZjJ4MTYo
Iik7CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZW5ndGg6ICAgICAgICAgICBvdXRw
dXRUcmlwbGV0KHZpc2l0LCAibGVuZ3RoKCIsICIiLCAiKSIpOyAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wTm9ybWFsaXplOiAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIm5vcm1hbGl6ZSgi
LCAiIiwgIikiKTsgYnJlYWs7CisgICAgICBjYXNlIEVPcExlbmd0aDoKKyAgICAgICAgICBvdXRw
dXRUcmlwbGV0KG91dCwgdmlzaXQsICJsZW5ndGgoIiwgIiIsICIpIik7CisgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVPcE5vcm1hbGl6ZToKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91
dCwgdmlzaXQsICJub3JtYWxpemUoIiwgIiIsICIpIik7CisgICAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcERGZHg6CiAgICAgICAgIGlmKG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCB8fCBt
T3V0cHV0TG9kMEZ1bmN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KHZpc2l0LCAiKCIsICIiLCAiLCAwLjApIik7CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91
dCwgdmlzaXQsICIoIiwgIiIsICIsIDAuMCkiKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJkZHgoIiwgIiIsICIp
Iik7CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkZHgoIiwgIiIsICIp
Iik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcERGZHk6CiAgICAg
ICAgIGlmKG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCB8fCBtT3V0cHV0TG9kMEZ1bmN0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIiLCAiLCAw
LjApIik7CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiIsICIs
IDAuMCkiKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAg
b3V0cHV0VHJpcGxldCh2aXNpdCwgImRkeSgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgImRkeSgiLCAiIiwgIikiKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICAgIGNhc2UgRU9wRndpZHRoOgogICAgICAgICBpZihtSW5zaWRlRGlzY29u
dGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbikKICAgICAgICAgewotICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIigiLCAiIiwgIiwgMC4wKSIpOworICAgICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIiLCAiLCAwLjApIik7CiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAiZndpZHRoKCIsICIiLCAiKSIpOworICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAiZndpZHRoKCIsICIiLCAiKSIpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BUcmFuc3Bvc2U6ICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAidHJhbnNw
b3NlKCIsICIiLCAiKSIpOyAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDogICAg
ICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiZGV0ZXJtaW5hbnQodHJhbnNwb3NlKCIsICIiLCAiKSki
KTsgYnJlYWs7CisgICAgICBjYXNlIEVPcFRyYW5zcG9zZToKKyAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICJ0cmFuc3Bvc2UoIiwgIiIsICIpIik7CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEVPcERldGVybWluYW50OgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgImRldGVybWluYW50KHRyYW5zcG9zZSgiLCAiIiwgIikpIik7CisgICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEVPcEludmVyc2U6CiAgICAgICAgIEFTU0VSVChub2RlLT5nZXRV
c2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25Ucmlw
bGV0KHZpc2l0LCAiaW52ZXJzZSgiKTsKKyAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJp
cGxldChvdXQsIHZpc2l0LCAiaW52ZXJzZSgiKTsKICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNh
c2UgRU9wQW55OiAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImFueSgiLCAiIiwg
IikiKTsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFsbDogICAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQodmlzaXQsICJhbGwoIiwgIiIsICIpIik7ICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBFT3BBbnk6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYW55KCIsICIi
LCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BBbGw6CisgICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYWxsKCIsICIiLCAiKSIpOworICAgICAgICAgIGJy
ZWFrOwogICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorVFN0cmluZyBPdXRwdXRITFNMOjpzYW1wbGVyTmFtZVByZWZpeEZyb21TdHJ1
Y3QoVEludGVybVR5cGVkICpub2RlKQoreworICAgIGlmIChub2RlLT5nZXRBc1N5bWJvbE5vZGUo
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3lt
Ym9sKCk7CisgICAgfQorICAgIFRJbnRlcm1CaW5hcnkgKm5vZGVCaW5hcnkgPSBub2RlLT5nZXRB
c0JpbmFyeU5vZGUoKTsKKyAgICBzd2l0Y2ggKG5vZGVCaW5hcnktPmdldE9wKCkpCisgICAgewor
ICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgorICAgICAgICB7CisgICAgICAgICAgICBpbnQg
aW5kZXggPSBub2RlQmluYXJ5LT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0
SUNvbnN0KDApOworCisgICAgICAgICAgICBUSW5mb1NpbmtCYXNlIHByZWZpeFNpbms7CisgICAg
ICAgICAgICBwcmVmaXhTaW5rIDw8IHNhbXBsZXJOYW1lUHJlZml4RnJvbVN0cnVjdChub2RlQmlu
YXJ5LT5nZXRMZWZ0KCkpIDw8ICJfIiA8PCBpbmRleDsKKyAgICAgICAgICAgIHJldHVybiBUU3Ry
aW5nKHByZWZpeFNpbmsuY19zdHIoKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBFT3BJbmRl
eERpcmVjdFN0cnVjdDoKKyAgICAgICAgeworICAgICAgICAgICAgVFN0cnVjdHVyZSAqcyAgICAg
ICA9IG5vZGVCaW5hcnktPmdldExlZnQoKS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkuZ2V0U3Ry
dWN0KCk7CisgICAgICAgICAgICBpbnQgaW5kZXggICAgICAgICAgID0gbm9kZUJpbmFyeS0+Z2V0
UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKKyAgICAgICAgICAg
IGNvbnN0IFRGaWVsZCAqZmllbGQgPSBzLT5maWVsZHMoKVtpbmRleF07CisKKyAgICAgICAgICAg
IFRJbmZvU2lua0Jhc2UgcHJlZml4U2luazsKKyAgICAgICAgICAgIHByZWZpeFNpbmsgPDwgc2Ft
cGxlck5hbWVQcmVmaXhGcm9tU3RydWN0KG5vZGVCaW5hcnktPmdldExlZnQoKSkgPDwgIl8iCisg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGZpZWxkLT5uYW1lKCk7CisgICAgICAgICAgICByZXR1
cm4gVFN0cmluZyhwcmVmaXhTaW5rLmNfc3RyKCkpOworICAgICAgICB9CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIFRTdHJp
bmcoIiIpOworICAgIH0KK30KKwogYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZv
dXQgPSBnZXRJbmZvU2luaygpOwpAQCAtMTg0NiwyNiArMjMzMCwzMCBAQAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAobUluc2lkZUZ1bmN0aW9uKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwor
ICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCku
Zmlyc3RfbGluZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gbm9k
ZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsgc2l0ICE9IG5vZGUtPmdldFNlcXVlbmNlKCktPmVu
ZCgpOyBzaXQrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRMaW5lRGly
ZWN0aXZlKCgqc2l0KS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOworICAgICAgICAgICAgICAgIG91
dHB1dExpbmVEaXJlY3RpdmUob3V0LCAoKnNpdCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKIAot
ICAgICAgICAgICAgICAgIHRyYXZlcnNlU3RhdGVtZW50cygqc2l0KTsKKyAgICAgICAgICAgICAg
ICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOwogCiAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgb3V0
cHV0IDsgYWZ0ZXIgY2FzZSBsYWJlbHMsIHRoZXkncmUgdGVybWluYXRlZCBieSA6CiAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZXNwZWNpYWxseSBzaW5jZSBvdXRwdXR0aW5nIGEg
OyBhZnRlciBhIGNhc2Ugc3RhdGVtZW50IHdvdWxkIHR1cm4gZW1wdHkKICAgICAgICAgICAgICAg
ICAvLyBjYXNlIHN0YXRlbWVudHMgaW50byBub24tZW1wdHkgY2FzZSBzdGF0ZW1lbnRzLCBkaXNh
bGxvd2luZyBmYWxsLXRocm91Z2ggZnJvbSB0aGVtLgotICAgICAgICAgICAgICAgIGlmICgoKnNp
dCktPmdldEFzQ2FzZU5vZGUoKSA9PSBudWxscHRyKQorICAgICAgICAgICAgICAgIC8vIEFsc28g
bm8gbmVlZCB0byBvdXRwdXQgOyBhZnRlciBzZWxlY3Rpb24gKGlmKSBzdGF0ZW1lbnRzIG9yIHNl
cXVlbmNlcy4gVGhpcyBpcyBkb25lIGp1c3QKKyAgICAgICAgICAgICAgICAvLyBmb3IgY29kZSBj
bGFyaXR5LgorICAgICAgICAgICAgICAgIFRJbnRlcm1TZWxlY3Rpb24gKmFzU2VsZWN0aW9uID0g
KCpzaXQpLT5nZXRBc1NlbGVjdGlvbk5vZGUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYXNT
ZWxlY3Rpb24gPT0gbnVsbHB0ciB8fCAhYXNTZWxlY3Rpb24tPnVzZXNUZXJuYXJ5T3BlcmF0b3Io
KSk7CisgICAgICAgICAgICAgICAgaWYgKCgqc2l0KS0+Z2V0QXNDYXNlTm9kZSgpID09IG51bGxw
dHIgJiYgYXNTZWxlY3Rpb24gPT0gbnVsbHB0ciAmJiAhSXNTZXF1ZW5jZSgqc2l0KSkKICAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAobUluc2lkZUZ1bmN0aW9uKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91
dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmxhc3RfbGluZSk7CisgICAgICAgICAg
ICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShvdXQsIG5vZGUtPmdldExpbmUoKS5sYXN0X2xpbmUp
OwogICAgICAgICAgICAgICAgIG91dCA8PCAifVxuIjsKICAgICAgICAgICAgIH0KIApAQCAtMTg3
Niw0NSArMjM2NCwzNSBAQAogICAgICAgICB7CiAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2Ug
KnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCAqdmFyaWFibGUgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAg
QVNTRVJUKHNlcXVlbmNlLT5zaXplKCkgPT0gMSk7CiAKLSAgICAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJiAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fCB2YXJpYWJs
ZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsKSkKKyAgICAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJgorICAgICAgICAgICAgICAgICh2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVGVt
cG9yYXJ5IHx8CisgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFHbG9iYWwgfHwgdmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBlbnN1cmVTdHJ1Y3REZWZpbmVkKHZhcmlhYmxlLT5n
ZXRUeXBlKCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xO
b2RlKCkgfHwgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSAhPSAiIikg
ICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvICZzZXFFbGVtZW50IDogKnNlcXVlbmNlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoIW1JbnNpZGVGdW5jdGlvbikKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU2luZ2xlU3RhdGVtZW50KHNlcUVsZW1l
bnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1VbmZvbGRTaG9ydENpcmN1aXQtPnRyYXZlcnNlKHNlcUVsZW1lbnQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMg
IjsKKyAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IW1JbnNpZGVGdW5jdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyAiOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyh2YXJpYWJsZS0+Z2V0
VHlwZSgpKSArICIgIjsKIAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IFR5cGVTdHJp
bmcodmFyaWFibGUtPmdldFR5cGUoKSkgKyAiICI7CisgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1TeW1ib2wgKnN5bWJvbCA9IHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gc2VxRWxlbWVudC0+Z2V0
QXNTeW1ib2xOb2RlKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lt
Ym9sLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwg
QXJyYXlTdHJpbmcoc3ltYm9sLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dCA8PCAiID0gIiArIGluaXRpYWxpemVyKHN5bWJvbC0+Z2V0VHlwZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFFbGVt
ZW50LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlcUVsZW1lbnQgIT0gc2VxdWVuY2UtPmJhY2soKSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgIjtcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN5bWJvbC0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgQXJyYXlTdHJpbmcoc3ltYm9sLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIgPSAiICsgaW5pdGlhbGl6ZXIoc3ltYm9sLT5nZXRUeXBlKCkpOwogICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnRyYXZlcnNlKHRoaXMp
OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKSAmJiB2YXJpYWJsZS0+Z2V0
QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpID09ICIiKSAgIC8vIFR5cGUgKHN0cnVjdCkgZGVj
bGFyYXRpb24KICAgICAgICAgICAgICAgICB7CkBAIC0xOTYwLDEwICsyNDM4LDEyIEBACiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBv
dXQgPDwgVHlwZVN0cmluZyhub2RlLT5nZXRUeXBlKCkpIDw8ICIgIiA8PCBEZWNvcmF0ZShURnVu
Y3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXROYW1lKCkpKSA8PCAobU91dHB1dExvZDBGdW5j
dGlvbiA/ICJMb2QwKCIgOiAiKCIpOwotCiAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFy
Z3VtZW50cyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CiAKKyAgICAgICAgICAgIFRTdHJpbmcgbmFt
ZSA9IERlY29yYXRlRnVuY3Rpb25JZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpOworICAgICAg
ICAgICAgb3V0IDw8IFR5cGVTdHJpbmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiICIgPDwgbmFtZSA8
PCBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUoYXJndW1lbnRzKQorICAgICAgICAgICAgICAgIDw8
IChtT3V0cHV0TG9kMEZ1bmN0aW9uID8gIkxvZDAoIiA6ICIoIik7CisKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLT5zaXplKCk7IGkrKykKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKmFyZ3Vt
ZW50cylbaV0tPmdldEFzU3ltYm9sTm9kZSgpOwpAQCAtMTk5NCwxMSArMjQ3NCwxMyBAQAogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BDb21tYTogICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIsICIs
ICIpIik7ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BDb21tYToKKyAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiwgIiwgIikiKTsKKyAgICAgICAg
ICBicmVhazsKICAgICAgIGNhc2UgRU9wRnVuY3Rpb246CiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtQ3VycmVudEZ1bmN0aW9uTWV0YWRhdGEgPT0gbnVsbHB0cik7Ci0gICAgICAgICAg
ICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXROYW1lKCkp
OworICAgICAgICAgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9k
ZS0+Z2V0TmFtZU9iaigpLmdldFN0cmluZygpKTsKIAogICAgICAgICAgICAgc2l6ZV90IGluZGV4
ID0gbUNhbGxEYWcuZmluZEluZGV4KG5vZGUpOwogICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9
IENhbGxEQUc6OkludmFsaWRJbmRleCk7CkBAIC0yMDA2LDE4ICsyNDg4LDE5IEBACiAKICAgICAg
ICAgICAgIG91dCA8PCBUeXBlU3RyaW5nKG5vZGUtPmdldFR5cGUoKSkgPDwgIiAiOwogCisgICAg
ICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlICA9IG5vZGUtPmdldFNlcXVlbmNlKCk7
CisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyA9ICgqc2VxdWVuY2UpWzBd
LT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRTZXF1ZW5jZSgpOworCiAgICAgICAgICAgICBpZiAobmFt
ZSA9PSAibWFpbiIpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgb3V0IDw8ICJnbF9t
YWluKCI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgb3V0IDw8IERlY29yYXRlKG5hbWUpIDw8IChtT3V0cHV0TG9kMEZ1bmN0
aW9uID8gIkxvZDAoIiA6ICIoIik7CisgICAgICAgICAgICAgICAgb3V0IDw8IERlY29yYXRlRnVu
Y3Rpb25JZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpCisgICAgICAgICAgICAgICAgICAgIDw8
IERpc2FtYmlndWF0ZUZ1bmN0aW9uTmFtZShhcmd1bWVudHMpIDw8IChtT3V0cHV0TG9kMEZ1bmN0
aW9uID8gIkxvZDAoIiA6ICIoIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwotICAgICAgICAgICAg
VEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNBZ2dyZWdh
dGUoKS0+Z2V0U2VxdWVuY2UoKTsKLQogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBhcmd1bWVudHMtPnNpemUoKTsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9ICgqYXJndW1lbnRzKVtpXS0+Z2V0QXNTeW1i
b2xOb2RlKCk7CkBAIC0yMDM2LDE4ICsyNTE5LDIyIEBACiAgICAgICAgICAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBvdXQgPDwgIilcbiIK
LSAgICAgICAgICAgICAgICAie1xuIjsKKyAgICAgICAgICAgIG91dCA8PCAiKVxuIjsKIAogICAg
ICAgICAgICAgaWYgKHNlcXVlbmNlLT5zaXplKCkgPiAxKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIG1JbnNpZGVGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgKCpzZXF1
ZW5jZSlbMV0tPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpi
b2R5ID0gKCpzZXF1ZW5jZSlbMV07CisgICAgICAgICAgICAgICAgLy8gVGhlIGZ1bmN0aW9uIGJv
ZHkgbm9kZSB3aWxsIG91dHB1dCBicmFjZXMuCisgICAgICAgICAgICAgICAgQVNTRVJUKElzU2Vx
dWVuY2UoYm9keSkpOworICAgICAgICAgICAgICAgIGJvZHktPnRyYXZlcnNlKHRoaXMpOwogICAg
ICAgICAgICAgICAgIG1JbnNpZGVGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dCA8PCAie31c
biI7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG91dCA8PCAifVxuIjsKLQogICAgICAg
ICAgICAgbUN1cnJlbnRGdW5jdGlvbk1ldGFkYXRhID0gbnVsbHB0cjsKIAogICAgICAgICAgICAg
Ym9vbCBuZWVkc0xvZDAgPSBtQVNUTWV0YWRhdGFMaXN0W2luZGV4XS5tTmVlZHNMb2QwOwpAQCAt
MjA2NCw3ICsyNTUxLDYgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEZ1bmN0aW9u
Q2FsbDoKICAgICAgICAgewotICAgICAgICAgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1
bm1hbmdsZU5hbWUobm9kZS0+Z2V0TmFtZSgpKTsKICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqYXJndW1lbnRzID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKIAogICAgICAgICAgICAgYm9vbCBs
b2QwID0gbUluc2lkZURpc2NvbnRpbnVvdXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rpb247CkBA
IC0yMDc4LDEwICsyNTY0LDEzIEBACiAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9IENh
bGxEQUc6OkludmFsaWRJbmRleCk7CiAgICAgICAgICAgICAgICAgbG9kMCAmPSBtQVNUTWV0YWRh
dGFMaXN0W2luZGV4XS5tTmVlZHNMb2QwOwogCi0gICAgICAgICAgICAgICAgb3V0IDw8IERlY29y
YXRlKG5hbWUpIDw8IChsb2QwID8gIkxvZDAoIiA6ICIoIik7CisgICAgICAgICAgICAgICAgb3V0
IDw8IERlY29yYXRlRnVuY3Rpb25JZk5lZWRlZChub2RlLT5nZXROYW1lT2JqKCkpOworICAgICAg
ICAgICAgICAgIG91dCA8PCBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUobm9kZS0+Z2V0U2VxdWVu
Y2UoKSk7CisgICAgICAgICAgICAgICAgb3V0IDw8IChsb2QwID8gIkxvZDAoIiA6ICIoIik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVFN0cmluZyBuYW1lICAgICAgICAgICA9IFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5v
ZGUtPmdldE5hbWVPYmooKS5nZXRTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgVEJhc2ljVHlw
ZSBzYW1wbGVyVHlwZSA9ICgqYXJndW1lbnRzKVswXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCku
Z2V0QmFzaWNUeXBlKCk7CiAKICAgICAgICAgICAgICAgICBUZXh0dXJlRnVuY3Rpb24gdGV4dHVy
ZUZ1bmN0aW9uOwpAQCAtMjIwMiw3ICsyNjkxLDggQEAKIAogICAgICAgICAgICAgZm9yIChUSW50
ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIGFyZyA9IGFyZ3VtZW50cy0+YmVnaW4oKTsgYXJnICE9IGFy
Z3VtZW50cy0+ZW5kKCk7IGFyZysrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
IChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMMTFfT1VUUFVUICYmIElzU2FtcGxlcigoKmFyZyktPmdl
dEFzVHlwZWQoKS0+Z2V0QmFzaWNUeXBlKCkpKQorICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCAqdHlwZWRBcmcgPSAoKmFyZyktPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAo
bU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUICYmIElzU2FtcGxlcih0eXBl
ZEFyZy0+Z2V0QmFzaWNUeXBlKCkpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICJ0ZXh0dXJlXyI7CiAgICAgICAgICAgICAgICAgICAgICgqYXJnKS0+dHJh
dmVyc2UodGhpcyk7CkBAIC0yMjExLDYgKzI3MDEsMzAgQEAKIAogICAgICAgICAgICAgICAgICgq
YXJnKS0+dHJhdmVyc2UodGhpcyk7CiAKKyAgICAgICAgICAgICAgICBpZiAodHlwZWRBcmctPmdl
dFR5cGUoKS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdTYW1wbGVycygpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJmFyZ1R5cGUgPSB0eXBlZEFyZy0+
Z2V0VHlwZSgpOworICAgICAgICAgICAgICAgICAgICBUVmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4g
c2FtcGxlclN5bWJvbHM7CisgICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgc3RydWN0TmFtZSA9
IHNhbXBsZXJOYW1lUHJlZml4RnJvbVN0cnVjdCh0eXBlZEFyZyk7CisgICAgICAgICAgICAgICAg
ICAgIGFyZ1R5cGUuY3JlYXRlU2FtcGxlclN5bWJvbHMoImFuZ2xlXyIgKyBzdHJ1Y3ROYW1lLCAi
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdU
eXBlLmlzQXJyYXkoKSA/IGFyZ1R5cGUuZ2V0QXJyYXlTaXplKCkgOiAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzYW1wbGVyU3ltYm9scywgbnVs
bHB0cik7CisgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgVEludGVybVN5bWJvbCAqc2Ft
cGxlciA6IHNhbXBsZXJTeW1ib2xzKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVU
KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dCA8PCAiLCB0ZXh0dXJlXyIgPDwgc2FtcGxlci0+Z2V0U3ltYm9sKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsIHNhbXBsZXJfIiA8PCBzYW1wbGVyLT5nZXRTeW1i
b2woKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJbiBjYXNlIG9mIEhMU0wgNC4xKywgdGhpcyBzeW1ib2wgaXMgdGhlIHNhbXBsZXIg
aW5kZXgsIGFuZCBpbiBjYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgRDNE
OSwgaXQncyB0aGUgc2FtcGxlciB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiwgIiArIHNhbXBsZXItPmdldFN5bWJvbCgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAg
ICAgICAgICAgICAgaWYgKGFyZyA8IGFyZ3VtZW50cy0+ZW5kKCkgLSAxKQogICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7CkBAIC0yMjIyLDI2ICsyNzM2
LDg0IEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFBhcmFtZXRlcnM6ICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQs
ICIoIiwgIiwgIiwgIilcbntcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OiAgIG91dHB1dENvbnN0cnVjdG9yKHZp
c2l0LCBub2RlLT5nZXRUeXBlKCksICJ2ZWMxIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7ICBicmVh
azsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMjogICAgb3V0cHV0Q29uc3RydWN0b3Iodmlz
aXQsIG5vZGUtPmdldFR5cGUoKSwgInZlYzIiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMzOiAgICBvdXRwdXRDb25zdHJ1Y3Rvcih2aXNp
dCwgbm9kZS0+Z2V0VHlwZSgpLCAidmVjMyIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOyAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6ICAgIG91dHB1dENvbnN0cnVjdG9yKHZpc2l0
LCBub2RlLT5nZXRUeXBlKCksICJ2ZWM0Iiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7ICBicmVhazsK
LSAgICAgIGNhc2UgRU9wQ29uc3RydWN0Qm9vbDogICAgb3V0cHV0Q29uc3RydWN0b3IodmlzaXQs
IG5vZGUtPmdldFR5cGUoKSwgImJ2ZWMxIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7IGJyZWFrOwot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjogICBvdXRwdXRDb25zdHJ1Y3Rvcih2aXNpdCwg
bm9kZS0+Z2V0VHlwZSgpLCAiYnZlYzIiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOiAgIG91dHB1dENvbnN0cnVjdG9yKHZpc2l0LCBu
b2RlLT5nZXRUeXBlKCksICJidmVjMyIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOyBicmVhazsKLSAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzQ6ICAgb3V0cHV0Q29uc3RydWN0b3IodmlzaXQsIG5v
ZGUtPmdldFR5cGUoKSwgImJ2ZWM0Iiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7IGJyZWFrOwotICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RJbnQ6ICAgICBvdXRwdXRDb25zdHJ1Y3Rvcih2aXNpdCwgbm9k
ZS0+Z2V0VHlwZSgpLCAiaXZlYzEiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOiAgIG91dHB1dENvbnN0cnVjdG9yKHZpc2l0LCBub2Rl
LT5nZXRUeXBlKCksICJpdmVjMiIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOyBicmVhazsKLSAgICAg
IGNhc2UgRU9wQ29uc3RydWN0SVZlYzM6ICAgb3V0cHV0Q29uc3RydWN0b3IodmlzaXQsIG5vZGUt
PmdldFR5cGUoKSwgIml2ZWMzIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7IGJyZWFrOwotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDogICBvdXRwdXRDb25zdHJ1Y3Rvcih2aXNpdCwgbm9kZS0+
Z2V0VHlwZSgpLCAiaXZlYzQiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcENvbnN0cnVjdFVJbnQ6ICAgIG91dHB1dENvbnN0cnVjdG9yKHZpc2l0LCBub2RlLT5n
ZXRUeXBlKCksICJ1dmVjMSIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOyBicmVhazsKLSAgICAgIGNh
c2UgRU9wQ29uc3RydWN0VVZlYzI6ICAgb3V0cHV0Q29uc3RydWN0b3IodmlzaXQsIG5vZGUtPmdl
dFR5cGUoKSwgInV2ZWMyIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7IGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RVVmVjMzogICBvdXRwdXRDb25zdHJ1Y3Rvcih2aXNpdCwgbm9kZS0+Z2V0
VHlwZSgpLCAidXZlYzMiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcENvbnN0cnVjdFVWZWM0OiAgIG91dHB1dENvbnN0cnVjdG9yKHZpc2l0LCBub2RlLT5nZXRU
eXBlKCksICJ1dmVjNCIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOyBicmVhazsKLSAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0MjogICAgb3V0cHV0Q29uc3RydWN0b3IodmlzaXQsIG5vZGUtPmdldFR5
cGUoKSwgIm1hdDIiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQzOiAgICBvdXRwdXRDb25zdHJ1Y3Rvcih2aXNpdCwgbm9kZS0+Z2V0VHlw
ZSgpLCAibWF0MyIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOyAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cENvbnN0cnVjdE1hdDQ6ICAgIG91dHB1dENvbnN0cnVjdG9yKHZpc2l0LCBub2RlLT5nZXRUeXBl
KCksICJtYXQ0Iiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7ICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BQYXJhbWV0ZXJzOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIs
ICIsICIsICIpXG57XG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENv
bnN0cnVjdEZsb2F0OgorICAgICAgICAgICAgb3V0cHV0Q29uc3RydWN0b3Iob3V0LCB2aXNpdCwg
bm9kZS0+Z2V0VHlwZSgpLCAidmVjMSIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMjoKKyAgICAgICAgICAgIG91
dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgInZlYzIiLCBub2Rl
LT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENv
bnN0cnVjdFZlYzM6CisgICAgICAgICAgICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0LCBu
b2RlLT5nZXRUeXBlKCksICJ2ZWMzIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgICAgICAgICAgb3V0
cHV0Q29uc3RydWN0b3Iob3V0LCB2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAidmVjNCIsIG5vZGUt
PmdldFNlcXVlbmNlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29u
c3RydWN0Qm9vbDoKKyAgICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5v
ZGUtPmdldFR5cGUoKSwgImJ2ZWMxIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKKyAgICAgICAgICAgIG91
dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgImJ2ZWMyIiwgbm9k
ZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RCVmVjMzoKKyAgICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQs
IG5vZGUtPmdldFR5cGUoKSwgImJ2ZWMzIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjNDoKKyAgICAgICAgICAg
IG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgImJ2ZWM0Iiwg
bm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RJbnQ6CisgICAgICAgICAgICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0
LCBub2RlLT5nZXRUeXBlKCksICJpdmVjMSIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzI6CisgICAgICAgICAg
ICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJpdmVjMiIs
IG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0SVZlYzM6CisgICAgICAgICAgICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZp
c2l0LCBub2RlLT5nZXRUeXBlKCksICJpdmVjMyIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6CisgICAgICAg
ICAgICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJpdmVj
NCIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0VUludDoKKyAgICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwg
dmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgInV2ZWMxIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMjoKKyAgICAg
ICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgInV2
ZWMyIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RVVmVjMzoKKyAgICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91
dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgInV2ZWMzIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjNDoKKyAg
ICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwg
InV2ZWM0Iiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgorICAgICAgICAgICAgb3V0cHV0Q29uc3RydWN0b3Io
b3V0LCB2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0MiIsIG5vZGUtPmdldFNlcXVlbmNlKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOgor
ICAgICAgICAgICAgb3V0cHV0Q29uc3RydWN0b3Iob3V0LCB2aXNpdCwgbm9kZS0+Z2V0VHlwZSgp
LCAibWF0MngzIiwgbm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6CisgICAgICAgICAgICBvdXRwdXRDb25zdHJ1
Y3RvcihvdXQsIHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJtYXQyeDQiLCBub2RlLT5nZXRTZXF1
ZW5jZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1h
dDN4MjoKKyAgICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdl
dFR5cGUoKSwgIm1hdDN4MiIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKKyAgICAgICAgICAgIG91dHB1dENv
bnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgIm1hdDMiLCBub2RlLT5nZXRT
ZXF1ZW5jZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDN4NDoKKyAgICAgICAgICAgIG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUt
PmdldFR5cGUoKSwgIm1hdDN4NCIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAgICAgICAgb3V0
cHV0Q29uc3RydWN0b3Iob3V0LCB2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpLCAibWF0NHgyIiwgbm9k
ZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQ0eDM6CisgICAgICAgICAgICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0
LCBub2RlLT5nZXRUeXBlKCksICJtYXQ0eDMiLCBub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6CisgICAgICAgICAg
ICBvdXRwdXRDb25zdHJ1Y3RvcihvdXQsIHZpc2l0LCBub2RlLT5nZXRUeXBlKCksICJtYXQ0Iiwg
bm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0U3RydWN0OgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0VHlw
ZSgpLmlzQXJyYXkoKSkKQEAgLTIyNTAsMTQ3ICsyODIyLDIwNyBAQAogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmc3RydWN0TmFtZSA9IFN0cnVjdE5hbWVTdHJpbmco
Km5vZGUtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSk7CiAgICAgICAgICAgICBtU3RydWN0dXJlSExT
TC0+YWRkQ29uc3RydWN0b3Iobm9kZS0+Z2V0VHlwZSgpLCBzdHJ1Y3ROYW1lLCBub2RlLT5nZXRT
ZXF1ZW5jZSgpKTsKLSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsIChzdHJ1Y3ROYW1l
ICsgIl9jdG9yKCIpLmNfc3RyKCksICIsICIsICIpIik7CisgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsIChzdHJ1Y3ROYW1lICsgIl9jdG9yKCIpLmNfc3RyKCksICIsICIsICIp
Iik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuOiAg
ICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA8ICIsICIpIik7ICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46ICAgICAgb3V0cHV0VHJpcGxl
dCh2aXNpdCwgIigiLCAiID4gIiwgIikiKTsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BMZXNzVGhhbkVxdWFsOiAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgPD0g
IiwgIikiKTsgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFu
RXF1YWw6IG91dHB1dFRyaXBsZXQodmlzaXQsICIoIiwgIiA+PSAiLCAiKSIpOyAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yRXF1YWw6ICAgICAgb3V0cHV0VHJpcGxl
dCh2aXNpdCwgIigiLCAiID09ICIsICIpIik7ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BWZWN0b3JOb3RFcXVhbDogICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKCIsICIgIT0g
IiwgIikiKTsgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46
CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8ICIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAgICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiID4gIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CisgICAgICAgICAg
ICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8PSAiLCAiKSIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiID49ICIsICIpIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JFcXVhbDoKKyAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiID09ICIsICIpIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKKyAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICE9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgIGNhc2UgRU9wTW9kOgogICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldCh2aXNpdCwg
Im1vZCgiKTsKKyAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0
LCAibW9kKCIpOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTW9kZjogICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIm1vZGYoIiwgIiwgIiwgIikiKTsgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BQb3c6ICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZp
c2l0LCAicG93KCIsICIsICIsICIpIik7ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEVPcE1vZGY6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibW9kZigiLCAi
LCAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BQb3c6CisgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicG93KCIsICIsICIsICIpIik7CisgICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEF0YW46CiAgICAgICAgIEFTU0VSVChub2RlLT5nZXRT
ZXF1ZW5jZSgpLT5zaXplKCkgPT0gMik7ICAgLy8gYXRhbih4KSBpcyBhIHVuYXJ5IG9wZXJhdG9y
CiAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAg
ICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiYXRhbigiKTsKKyAgICAgICAg
d3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAiYXRhbigiKTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1pbjogICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlz
aXQsICJtaW4oIiwgIiwgIiwgIikiKTsgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BN
YXg6ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAibWF4KCIsICIsICIsICIpIik7ICAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ2xhbXA6ICAgICAgICAgb3V0cHV0VHJpcGxl
dCh2aXNpdCwgImNsYW1wKCIsICIsICIsICIpIik7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcE1peDogICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJsZXJwKCIsICIsICIsICIp
Iik7ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTdGVwOiAgICAgICAgICBvdXRwdXRU
cmlwbGV0KHZpc2l0LCAic3RlcCgiLCAiLCAiLCAiKSIpOyAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wU21vb3RoU3RlcDogICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgInNtb290aHN0ZXAo
IiwgIiwgIiwgIikiKTsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERpc3RhbmNlOiAgICAgIG91
dHB1dFRyaXBsZXQodmlzaXQsICJkaXN0YW5jZSgiLCAiLCAiLCAiKSIpOyAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BEb3Q6ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiZG90KCIs
ICIsICIsICIpIik7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ3Jvc3M6ICAgICAg
ICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgImNyb3NzKCIsICIsICIsICIpIik7ICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVPcE1pbjoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICJtaW4oIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRU9w
TWF4OgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm1heCgiLCAiLCAiLCAi
KSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BDbGFtcDoKKyAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJjbGFtcCgiLCAiLCAiLCAiKSIpOworICAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBFT3BNaXg6CisgICAgICAgIHsKKyAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqbGFzdFBhcmFtTm9kZSA9ICgqKG5vZGUtPmdldFNlcXVlbmNlKCkpKVsyXS0+Z2V0
QXNUeXBlZCgpOworICAgICAgICAgICAgaWYgKGxhc3RQYXJhbU5vZGUtPmdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRCb29sKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IFRoZXJlIGlzIG5vIEhMU0wgZXF1aXZhbGVudCBmb3IgRVNTTDMgYnVpbHQtaW4gImdlblR5cGUg
bWl4IChnZW5UeXBlIHgsIGdlblR5cGUgeSwgZ2VuQlR5cGUgYSkiLAorICAgICAgICAgICAgICAg
IC8vIHNvIHVzZSBlbXVsYXRlZCB2ZXJzaW9uLgorICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
LT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgICAgIHdyaXRlRW11bGF0
ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgIm1peCgiKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICJsZXJwKCIsICIsICIsICIpIik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3RlcDoKKyAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInN0ZXAoIiwgIiwgIiwgIikiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFNtb290aFN0ZXA6CisgICAgICAgICAgICBvdXRw
dXRUcmlwbGV0KG91dCwgdmlzaXQsICJzbW9vdGhzdGVwKCIsICIsICIsICIpIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgImRpc3RhbmNlKCIsICIsICIsICIpIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BEb3Q6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICJkb3QoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcENyb3NzOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiY3Jvc3MoIiwgIiwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BGYWNlRm9yd2FyZDoKICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rp
b24oKSk7Ci0gICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQodmlzaXQsICJmYWNl
Zm9yd2FyZCgiKTsKKyAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZp
c2l0LCAiZmFjZWZvcndhcmQoIik7CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BSZWZs
ZWN0OiAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAicmVmbGVjdCgiLCAiLCAiLCAiKSIpOyAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmVmcmFjdDogICAgICAgb3V0cHV0VHJpcGxldCh2
aXNpdCwgInJlZnJhY3QoIiwgIiwgIiwgIikiKTsgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVP
cFJlZmxlY3Q6CisgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicmVmbGVjdCgi
LCAiLCAiLCAiKSIpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BSZWZyYWN0Ogor
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInJlZnJhY3QoIiwgIiwgIiwgIiki
KTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRU9wT3V0ZXJQcm9kdWN0OgogICAgICAg
ICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVF
bXVsYXRlZEZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgIm91dGVyUHJvZHVjdCgiKTsKKyAgICAgICAg
d3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAib3V0ZXJQcm9kdWN0KCIp
OwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTXVsOiAgICAgICAgICAgb3V0cHV0VHJp
cGxldCh2aXNpdCwgIigiLCAiICogIiwgIikiKTsgICAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEVPcE11bDoKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAq
ICIsICIpIik7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgp
OwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIE91dHB1dEhMU0w6OnZpc2l0
U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICpub2RlKQordm9pZCBPdXRw
dXRITFNMOjp3cml0ZVNlbGVjdGlvbihUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1TZWxlY3Rp
b24gKm5vZGUpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5mb1NpbmsoKTsKKyAg
ICBvdXQgPDwgImlmICgiOwogCi0gICAgaWYgKG5vZGUtPnVzZXNUZXJuYXJ5T3BlcmF0b3IoKSkK
LSAgICB7Ci0gICAgICAgIG91dCA8PCAicyIgPDwgbVVuZm9sZFNob3J0Q2lyY3VpdC0+Z2V0TmV4
dFRlbXBvcmFyeUluZGV4KCk7Ci0gICAgfQotICAgIGVsc2UgIC8vIGlmL2Vsc2Ugc3RhdGVtZW50
Ci0gICAgewotICAgICAgICBtVW5mb2xkU2hvcnRDaXJjdWl0LT50cmF2ZXJzZShub2RlLT5nZXRD
b25kaXRpb24oKSk7CisgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwog
Ci0gICAgICAgIC8vIEQzRCBlcnJvcnMgd2hlbiB0aGVyZSBpcyBhIGdyYWRpZW50IG9wZXJhdGlv
biBpbiBhIGxvb3AgaW4gYW4gdW5mbGF0dGVuZWQgaWYuCi0gICAgICAgIGlmIChtU2hhZGVyVHlw
ZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIKLSAgICAgICAgICAgICYmIG1DdXJyZW50RnVuY3Rpb25N
ZXRhZGF0YS0+aGFzRGlzY29udGludW91c0xvb3Aobm9kZSkKLSAgICAgICAgICAgICYmIG1DdXJy
ZW50RnVuY3Rpb25NZXRhZGF0YS0+aGFzR3JhZGllbnRJbkNhbGxHcmFwaChub2RlKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICJGTEFUVEVOICI7Ci0gICAgICAgIH0KKyAgICBvdXQg
PDwgIilcbiI7CiAKLSAgICAgICAgb3V0IDw8ICJpZiAoIjsKKyAgICBvdXRwdXRMaW5lRGlyZWN0
aXZlKG91dCwgbm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwogCi0gICAgICAgIG5vZGUtPmdl
dENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICBib29sIGRpc2NhcmQgPSBmYWxzZTsK
IAotICAgICAgICBvdXQgPDwgIilcbiI7CisgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQor
ICAgIHsKKyAgICAgICAgLy8gVGhlIHRydWVCbG9jayBjaGlsZCBub2RlIHdpbGwgb3V0cHV0IGJy
YWNlcy4KKyAgICAgICAgQVNTRVJUKElzU2VxdWVuY2Uobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpKTsK
IAotICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5l
KTsKLSAgICAgICAgb3V0IDw8ICJ7XG4iOworICAgICAgICBub2RlLT5nZXRUcnVlQmxvY2soKS0+
dHJhdmVyc2UodGhpcyk7CiAKLSAgICAgICAgYm9vbCBkaXNjYXJkID0gZmFsc2U7CisgICAgICAg
IC8vIERldGVjdCB0cnVlIGRpc2NhcmQKKyAgICAgICAgZGlzY2FyZCA9IChkaXNjYXJkIHx8IEZp
bmREaXNjYXJkOjpzZWFyY2gobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhvZXR1YWhvKTogQ2hlY2sgaWYgdGhlIHNlbWljb2xv
biBpbnNpZGUgaXMgbmVjZXNzYXJ5LgorICAgICAgICAvLyBJdCdzIHRoZXJlIGFzIGEgcmVzdWx0
IG9mIGNvbnNlcnZhdGl2ZSByZWZhY3RvcmluZyBvZiB0aGUgb3V0cHV0LgorICAgICAgICBvdXQg
PDwgIns7fVxuIjsKKyAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB0cmF2ZXJzZVN0YXRlbWVudHMobm9kZS0+Z2V0VHJ1ZUJs
b2NrKCkpOworICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCkuZmly
c3RfbGluZSk7CiAKLSAgICAgICAgICAgIC8vIERldGVjdCB0cnVlIGRpc2NhcmQKLSAgICAgICAg
ICAgIGRpc2NhcmQgPSAoZGlzY2FyZCB8fCBGaW5kRGlzY2FyZDo6c2VhcmNoKG5vZGUtPmdldFRy
dWVCbG9jaygpKSk7Ci0gICAgICAgIH0KKyAgICBpZiAobm9kZS0+Z2V0RmFsc2VCbG9jaygpKQor
ICAgIHsKKyAgICAgICAgb3V0IDw8ICJlbHNlXG4iOwogCi0gICAgICAgIG91dHB1dExpbmVEaXJl
Y3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwotICAgICAgICBvdXQgPDwgIjtcbn1c
biI7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRGYWxzZUJsb2Nr
KCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKIAotICAgICAgICBpZiAobm9kZS0+Z2V0RmFsc2VC
bG9jaygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImVsc2VcbiI7CisgICAgICAg
IC8vIEVpdGhlciB0aGlzIGlzICJlbHNlIGlmIiBvciB0aGUgZmFsc2VCbG9jayBjaGlsZCBub2Rl
IHdpbGwgb3V0cHV0IGJyYWNlcy4KKyAgICAgICAgQVNTRVJUKElzU2VxdWVuY2Uobm9kZS0+Z2V0
RmFsc2VCbG9jaygpKSB8fCBub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldEFzU2VsZWN0aW9uTm9k
ZSgpICE9IG51bGxwdHIpOwogCi0gICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUt
PmdldEZhbHNlQmxvY2soKS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwotICAgICAgICAgICAgb3V0
IDw8ICJ7XG4iOworICAgICAgICBub2RlLT5nZXRGYWxzZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMp
OwogCi0gICAgICAgICAgICBvdXRwdXRMaW5lRGlyZWN0aXZlKG5vZGUtPmdldEZhbHNlQmxvY2so
KS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwotICAgICAgICAgICAgdHJhdmVyc2VTdGF0ZW1lbnRz
KG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0
LCBub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUoKS5maXJzdF9saW5lKTsKIAotICAgICAg
ICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRGYWxzZUJsb2NrKCktPmdldExpbmUo
KS5maXJzdF9saW5lKTsKLSAgICAgICAgICAgIG91dCA8PCAiO1xufVxuIjsKKyAgICAgICAgLy8g
RGV0ZWN0IGZhbHNlIGRpc2NhcmQKKyAgICAgICAgZGlzY2FyZCA9IChkaXNjYXJkIHx8IEZpbmRE
aXNjYXJkOjpzZWFyY2gobm9kZS0+Z2V0RmFsc2VCbG9jaygpKSk7CisgICAgfQogCi0gICAgICAg
ICAgICAvLyBEZXRlY3QgZmFsc2UgZGlzY2FyZAotICAgICAgICAgICAgZGlzY2FyZCA9IChkaXNj
YXJkIHx8IEZpbmREaXNjYXJkOjpzZWFyY2gobm9kZS0+Z2V0RmFsc2VCbG9jaygpKSk7Ci0gICAg
ICAgIH0KKyAgICAvLyBBTkdMRSBpc3N1ZSA0ODY6IERldGVjdCBwcm9ibGVtYXRpYyBjb25kaXRp
b25hbCBkaXNjYXJkCisgICAgaWYgKGRpc2NhcmQpCisgICAgeworICAgICAgICBtVXNlc0Rpc2Nh
cmRSZXdyaXRpbmcgPSB0cnVlOworICAgIH0KK30KIAotICAgICAgICAvLyBBTkdMRSBpc3N1ZSA0
ODY6IERldGVjdCBwcm9ibGVtYXRpYyBjb25kaXRpb25hbCBkaXNjYXJkCi0gICAgICAgIGlmIChk
aXNjYXJkICYmIEZpbmRTaWRlRWZmZWN0UmV3cml0aW5nOjpzZWFyY2gobm9kZSkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1Vc2VzRGlzY2FyZFJld3JpdGluZyA9IHRydWU7Ci0gICAgICAgIH0K
K2Jvb2wgT3V0cHV0SExTTDo6dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxl
Y3Rpb24gKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5mb1NpbmsoKTsK
KworICAgIEFTU0VSVCghbm9kZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKTsKKyAgICBBU1NFUlQo
bUluc2lkZUZ1bmN0aW9uKTsKKworICAgIC8vIEQzRCBlcnJvcnMgd2hlbiB0aGVyZSBpcyBhIGdy
YWRpZW50IG9wZXJhdGlvbiBpbiBhIGxvb3AgaW4gYW4gdW5mbGF0dGVuZWQgaWYuCisgICAgaWYg
KG1TaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUiAmJiBtQ3VycmVudEZ1bmN0aW9uTWV0
YWRhdGEtPmhhc0dyYWRpZW50TG9vcChub2RlKSkKKyAgICB7CisgICAgICAgIG91dCA8PCAiRkxB
VFRFTiAiOwogICAgIH0KIAorICAgIHdyaXRlU2VsZWN0aW9uKG91dCwgbm9kZSk7CisKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRTd2l0Y2goVmlzaXQgdmlz
aXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpCiB7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0
SW5mb1NpbmsoKTsKKwogICAgIGlmIChub2RlLT5nZXRTdGF0ZW1lbnRMaXN0KCkpCiAgICAgewog
ICAgICAgICBub2RlLT5zZXRTdGF0ZW1lbnRMaXN0KFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjpy
ZW1vdmVGYWxsVGhyb3VnaChub2RlLT5nZXRTdGF0ZW1lbnRMaXN0KCkpKTsKLSAgICAgICAgb3V0
cHV0VHJpcGxldCh2aXNpdCwgInN3aXRjaCAoIiwgIikgIiwgIiIpOworICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICJzd2l0Y2ggKCIsICIpICIsICIiKTsKICAgICAgICAgLy8gVGhl
IGN1cmx5IGJyYWNlcyBnZXQgd3JpdHRlbiB3aGVuIHZpc2l0aW5nIHRoZSBzdGF0ZW1lbnRMaXN0
IGFnZ3JlZ2F0ZQogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICAvLyBObyBzdGF0ZW1l
bnRMaXN0LCBzbyBpdCB3b24ndCBvdXRwdXQgY3VybHkgYnJhY2VzCi0gICAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICJzd2l0Y2ggKCIsICIpIHsiLCAifVxuIik7CisgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgInN3aXRjaCAoIiwgIikgeyIsICJ9XG4iKTsKICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRDYXNlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQ2FzZSAqbm9kZSkKIHsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZv
U2luaygpOworCiAgICAgaWYgKG5vZGUtPmhhc0NvbmRpdGlvbigpKQogICAgIHsKLSAgICAgICAg
b3V0cHV0VHJpcGxldCh2aXNpdCwgImNhc2UgKCIsICIiLCAiKTpcbiIpOworICAgICAgICBvdXRw
dXRUcmlwbGV0KG91dCwgdmlzaXQsICJjYXNlICgiLCAiIiwgIik6XG4iKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIFRJbmZvU2lua0Jhc2Ug
Jm91dCA9IGdldEluZm9TaW5rKCk7CiAgICAgICAgIG91dCA8PCAiZGVmYXVsdDpcbiI7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMzk4LDcgKzMwMzAsOCBAQAogCiB2b2lkIE91
dHB1dEhMU0w6OnZpc2l0Q29uc3RhbnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkK
IHsKLSAgICB3cml0ZUNvbnN0YW50VW5pb24obm9kZS0+Z2V0VHlwZSgpLCBub2RlLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpKTsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygp
OworICAgIHdyaXRlQ29uc3RhbnRVbmlvbihvdXQsIG5vZGUtPmdldFR5cGUoKSwgbm9kZS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKSk7CiB9CiAKIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRMb29wKFZp
c2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkKQEAgLTI0MDksOSArMzA0MiwxMSBAQAogICAg
IG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCB8fAog
ICAgIG1DdXJyZW50RnVuY3Rpb25NZXRhZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5jb3VudChu
b2RlKSA+IDA7CiAKLSAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTDlfT1VUUFVUKQorICAg
IFRJbmZvU2lua0Jhc2UgJm91dCA9IGdldEluZm9TaW5rKCk7CisKKyAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTF8zXzBfT1VUUFVUKQogICAgIHsKLSAgICAgICAgaWYgKGhhbmRsZUV4Y2Vz
c2l2ZUxvb3Aobm9kZSkpCisgICAgICAgIGlmIChoYW5kbGVFeGNlc3NpdmVMb29wKG91dCwgbm9k
ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IHdh
c0Rpc2NvbnRpbnVvdXM7CiAgICAgICAgICAgICBtTmVzdGVkTG9vcERlcHRoLS07CkBAIC0yNDIw
LDE1ICszMDU1LDEyIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBUSW5mb1NpbmtCYXNlICZv
dXQgPSBnZXRJbmZvU2luaygpOwotCiAgICAgY29uc3QgY2hhciAqdW5yb2xsID0gbUN1cnJlbnRG
dW5jdGlvbk1ldGFkYXRhLT5oYXNHcmFkaWVudEluQ2FsbEdyYXBoKG5vZGUpID8gIkxPT1AiIDog
IiI7CiAgICAgaWYgKG5vZGUtPmdldFR5cGUoKSA9PSBFTG9vcERvV2hpbGUpCiAgICAgewogICAg
ICAgICBvdXQgPDwgInsiIDw8IHVucm9sbCA8PCAiIGRvXG4iOwogCi0gICAgICAgIG91dHB1dExp
bmVEaXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwotICAgICAgICBvdXQgPDwg
IntcbiI7CisgICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCku
Zmlyc3RfbGluZSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0yNDU1LDIxICszMDg3LDI3
IEBACiAKICAgICAgICAgb3V0IDw8ICIpXG4iOwogCi0gICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOwotICAgICAgICBvdXQgPDwgIntcbiI7Cisg
ICAgICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGlu
ZSk7CiAgICAgfQogCiAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKICAgICB7Ci0gICAgICAgIHRy
YXZlcnNlU3RhdGVtZW50cyhub2RlLT5nZXRCb2R5KCkpOworICAgICAgICAvLyBUaGUgbG9vcCBi
b2R5IG5vZGUgd2lsbCBvdXRwdXQgYnJhY2VzLgorICAgICAgICBBU1NFUlQoSXNTZXF1ZW5jZShu
b2RlLT5nZXRCb2R5KCkpKTsKKyAgICAgICAgbm9kZS0+Z2V0Qm9keSgpLT50cmF2ZXJzZSh0aGlz
KTsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhvZXR1YWhvKTogQ2hl
Y2sgaWYgdGhlIHNlbWljb2xvbiBpbnNpZGUgaXMgbmVjZXNzYXJ5LgorICAgICAgICAvLyBJdCdz
IHRoZXJlIGFzIGEgcmVzdWx0IG9mIGNvbnNlcnZhdGl2ZSByZWZhY3RvcmluZyBvZiB0aGUgb3V0
cHV0LgorICAgICAgICBvdXQgPDwgIns7fVxuIjsKKyAgICB9CiAKLSAgICBvdXRwdXRMaW5lRGly
ZWN0aXZlKG5vZGUtPmdldExpbmUoKS5maXJzdF9saW5lKTsKLSAgICBvdXQgPDwgIjt9XG4iOwor
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7
CiAKICAgICBpZiAobm9kZS0+Z2V0VHlwZSgpID09IEVMb29wRG9XaGlsZSkKICAgICB7Ci0gICAg
ICAgIG91dHB1dExpbmVEaXJlY3RpdmUobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmdldExpbmUoKS5m
aXJzdF9saW5lKTsKKyAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShvdXQsIG5vZGUtPmdldENv
bmRpdGlvbigpLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgIG91dCA8PCAid2hpbGUo
XG4iOwogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKQEAg
LTI0OTIsNyArMzEzMCw3IEBACiAgICAgc3dpdGNoIChub2RlLT5nZXRGbG93T3AoKSkKICAgICB7
CiAgICAgICBjYXNlIEVPcEtpbGw6Ci0gICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJkaXNj
YXJkO1xuIiwgIiIsICIiKTsKKyAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJk
aXNjYXJkO1xuIiwgIiIsICIiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVPcEJyZWFr
OgogICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCkBAIC0yNTE0LDcgKzMxNTIsOSBAQAog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BD
b250aW51ZTogb3V0cHV0VHJpcGxldCh2aXNpdCwgImNvbnRpbnVlO1xuIiwgIiIsICIiKTsgYnJl
YWs7CisgICAgICBjYXNlIEVPcENvbnRpbnVlOgorICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgImNvbnRpbnVlO1xuIiwgIiIsICIiKTsKKyAgICAgICAgICBicmVhazsKICAgICAg
IGNhc2UgRU9wUmV0dXJuOgogICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAg
IHsKQEAgLTI1NDEsMTYgKzMxODEsNiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE91
dHB1dEhMU0w6OnRyYXZlcnNlU3RhdGVtZW50cyhUSW50ZXJtTm9kZSAqbm9kZSkKLXsKLSAgICBp
ZiAoaXNTaW5nbGVTdGF0ZW1lbnQobm9kZSkpCi0gICAgewotICAgICAgICBtVW5mb2xkU2hvcnRD
aXJjdWl0LT50cmF2ZXJzZShub2RlKTsKLSAgICB9Ci0KLSAgICBub2RlLT50cmF2ZXJzZSh0aGlz
KTsKLX0KLQogYm9vbCBPdXRwdXRITFNMOjppc1NpbmdsZVN0YXRlbWVudChUSW50ZXJtTm9kZSAq
bm9kZSkKIHsKICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUgPSBub2RlLT5nZXRBc0Fn
Z3JlZ2F0ZSgpOwpAQCAtMjU4NiwxMCArMzIxNiw5IEBACiAKIC8vIEhhbmRsZSBsb29wcyB3aXRo
IG1vcmUgdGhhbiAyNTQgaXRlcmF0aW9ucyAodW5zdXBwb3J0ZWQgYnkgRDNEOSkgYnkgc3BsaXR0
aW5nIHRoZW0KIC8vIChUaGUgRDNEIGRvY3VtZW50YXRpb24gc2F5cyAyNTUgaXRlcmF0aW9ucywg
YnV0IHRoZSBjb21waWxlciBjb21wbGFpbnMgYXQgYW55dGhpbmcgbW9yZSB0aGFuIDI1NCkuCi1i
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEludGVybUxvb3AgKm5vZGUpCiti
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5rQmFzZSAmb3V0LCBU
SW50ZXJtTG9vcCAqbm9kZSkKIHsKICAgICBjb25zdCBpbnQgTUFYX0xPT1BfSVRFUkFUSU9OUyA9
IDI1NDsKLSAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOwogCiAgICAgLy8g
UGFyc2UgbG9vcHMgb2YgdGhlIGZvcm06CiAgICAgLy8gZm9yKGludCBpbmRleCA9IGluaXRpYWw7
IGluZGV4IFtjb21wYXJhdG9yXSBsaW1pdDsgaW5kZXggKz0gaW5jcmVtZW50KQpAQCAtMjc1Niw3
ICszMzg1LDcgQEAKICAgICAgICAgICAgICAgICBvdXQgPDwgaW5jcmVtZW50OwogICAgICAgICAg
ICAgICAgIG91dCA8PCAiKVxuIjsKIAotICAgICAgICAgICAgICAgIG91dHB1dExpbmVEaXJlY3Rp
dmUobm9kZS0+Z2V0TGluZSgpLmZpcnN0X2xpbmUpOworICAgICAgICAgICAgICAgIG91dHB1dExp
bmVEaXJlY3RpdmUob3V0LCBub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAgICAgICAgICAg
ICAgICAgb3V0IDw8ICJ7XG4iOwogCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJvZHko
KSkKQEAgLTI3NjQsNyArMzM5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldEJv
ZHkoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgb3V0cHV0TGluZURpcmVjdGl2ZShub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CisgICAg
ICAgICAgICAgICAgb3V0cHV0TGluZURpcmVjdGl2ZShvdXQsIG5vZGUtPmdldExpbmUoKS5maXJz
dF9saW5lKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgIjt9XG4iOwogCiAgICAgICAgICAgICAg
ICAgaWYgKCFmaXJzdExvb3BGcmFnbWVudCkKQEAgLTI3OTAsNyArMzQxOSwxMSBAQAogICAgIHJl
dHVybiBmYWxzZTsgICAvLyBOb3QgaGFuZGxlZCBhcyBhbiBleGNlc3NpdmUgbG9vcAogfQogCi12
b2lkIE91dHB1dEhMU0w6Om91dHB1dFRyaXBsZXQoVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnBy
ZVN0cmluZywgY29uc3QgY2hhciAqaW5TdHJpbmcsIGNvbnN0IGNoYXIgKnBvc3RTdHJpbmcsIFRJ
bmZvU2lua0Jhc2UgJm91dCkKK3ZvaWQgT3V0cHV0SExTTDo6b3V0cHV0VHJpcGxldChUSW5mb1Np
bmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaXQgdmlzaXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJlU3RyaW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluU3RyaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvc3RTdHJpbmcpCiB7CiAg
ICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQogICAgIHsKQEAgLTI4MDYsMTcgKzM0MzksMTAgQEAK
ICAgICB9CiB9CiAKLXZvaWQgT3V0cHV0SExTTDo6b3V0cHV0VHJpcGxldChWaXNpdCB2aXNpdCwg
Y29uc3QgY2hhciAqcHJlU3RyaW5nLCBjb25zdCBjaGFyICppblN0cmluZywgY29uc3QgY2hhciAq
cG9zdFN0cmluZykKK3ZvaWQgT3V0cHV0SExTTDo6b3V0cHV0TGluZURpcmVjdGl2ZShUSW5mb1Np
bmtCYXNlICZvdXQsIGludCBsaW5lKQogewotICAgIG91dHB1dFRyaXBsZXQodmlzaXQsIHByZVN0
cmluZywgaW5TdHJpbmcsIHBvc3RTdHJpbmcsIGdldEluZm9TaW5rKCkpOwotfQotCi12b2lkIE91
dHB1dEhMU0w6Om91dHB1dExpbmVEaXJlY3RpdmUoaW50IGxpbmUpCi17CiAgICAgaWYgKChtQ29t
cGlsZU9wdGlvbnMgJiBTSF9MSU5FX0RJUkVDVElWRVMpICYmIChsaW5lID4gMCkpCiAgICAgewot
ICAgICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOwotCiAgICAgICAgIG91
dCA8PCAiXG4iOwogICAgICAgICBvdXQgPDwgIiNsaW5lICIgPDwgbGluZTsKIApAQCAtMjgzMiwy
NSArMzQ1OCw3OSBAQAogVFN0cmluZyBPdXRwdXRITFNMOjphcmd1bWVudFN0cmluZyhjb25zdCBU
SW50ZXJtU3ltYm9sICpzeW1ib2wpCiB7CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBzeW1i
b2wtPmdldFF1YWxpZmllcigpOwotICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gc3ltYm9sLT5nZXRU
eXBlKCk7Ci0gICAgVFN0cmluZyBuYW1lID0gc3ltYm9sLT5nZXRTeW1ib2woKTsKKyAgICBjb25z
dCBUVHlwZSAmdHlwZSAgICA9IHN5bWJvbC0+Z2V0VHlwZSgpOworICAgIGNvbnN0IFROYW1lICZu
YW1lICAgID0gc3ltYm9sLT5nZXROYW1lKCk7CisgICAgVFN0cmluZyBuYW1lU3RyOwogCi0gICAg
aWYgKG5hbWUuZW1wdHkoKSkgICAvLyBITFNMIGRlbWFuZHMgbmFtZWQgYXJndW1lbnRzLCBhbHNv
IGZvciBwcm90b3R5cGVzCisgICAgaWYgKG5hbWUuZ2V0U3RyaW5nKCkuZW1wdHkoKSkgIC8vIEhM
U0wgZGVtYW5kcyBuYW1lZCBhcmd1bWVudHMsIGFsc28gZm9yIHByb3RvdHlwZXMKICAgICB7Ci0g
ICAgICAgIG5hbWUgPSAieCIgKyBzdHIobVVuaXF1ZUluZGV4KyspOworICAgICAgICBuYW1lU3Ry
ID0gIngiICsgc3RyKG1VbmlxdWVJbmRleCsrKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIXN5bWJv
bC0+aXNJbnRlcm5hbCgpKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG5hbWUgPSBEZWNvcmF0
ZShuYW1lKTsKKyAgICAgICAgbmFtZVN0ciA9IERlY29yYXRlSWZOZWVkZWQobmFtZSk7CiAgICAg
fQogCi0gICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQgJiYgSXNTYW1wbGVy
KHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQorICAgIGlmIChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5
cGUoKSkpCiAgICAgewotICAgICAgICByZXR1cm4gUXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikg
KyAiICIgKyBUZXh0dXJlU3RyaW5nKHR5cGUpICsgIiB0ZXh0dXJlXyIgKyBuYW1lICsgQXJyYXlT
dHJpbmcodHlwZSkgKyAiLCAiICsKLSAgICAgICAgICAgICAgIFF1YWxpZmllclN0cmluZyhxdWFs
aWZpZXIpICsgIiAiICsgU2FtcGxlclN0cmluZyh0eXBlKSArICIgc2FtcGxlcl8iICsgbmFtZSAr
IEFycmF5U3RyaW5nKHR5cGUpOworICAgICAgICBpZiAobU91dHB1dFR5cGUgPT0gU0hfSExTTF80
XzFfT1VUUFVUKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTYW1wbGVycyBhcmUgcGFzc2Vk
IGFzIGluZGljZXMgdG8gdGhlIHNhbXBsZXIgYXJyYXkuCisgICAgICAgICAgICBBU1NFUlQocXVh
bGlmaWVyICE9IEV2cU91dCAmJiBxdWFsaWZpZXIgIT0gRXZxSW5PdXQpOworICAgICAgICAgICAg
cmV0dXJuICJjb25zdCB1aW50ICIgKyBuYW1lU3RyICsgQXJyYXlTdHJpbmcodHlwZSk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBV
VCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFF1YWxpZmllclN0cmluZyhxdWFsaWZp
ZXIpICsgIiAiICsgVGV4dHVyZVN0cmluZyh0eXBlLmdldEJhc2ljVHlwZSgpKSArCisgICAgICAg
ICAgICAgICAgICAgIiB0ZXh0dXJlXyIgKyBuYW1lU3RyICsgQXJyYXlTdHJpbmcodHlwZSkgKyAi
LCAiICsgUXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikgKworICAgICAgICAgICAgICAgICAgICIg
IiArIFNhbXBsZXJTdHJpbmcodHlwZS5nZXRCYXNpY1R5cGUoKSkgKyAiIHNhbXBsZXJfIiArIG5h
bWVTdHIgKworICAgICAgICAgICAgICAgICAgIEFycmF5U3RyaW5nKHR5cGUpOworICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpICsgIiAiICsg
VHlwZVN0cmluZyh0eXBlKSArICIgIiArIG5hbWUgKyBBcnJheVN0cmluZyh0eXBlKTsKKyAgICBU
U3RyaW5nU3RyZWFtIGFyZ1N0cmluZzsKKyAgICBhcmdTdHJpbmcgPDwgUXVhbGlmaWVyU3RyaW5n
KHF1YWxpZmllcikgPDwgIiAiIDw8IFR5cGVTdHJpbmcodHlwZSkgPDwgIiAiIDw8IG5hbWVTdHIK
KyAgICAgICAgICAgICAgPDwgQXJyYXlTdHJpbmcodHlwZSk7CisKKyAgICAvLyBJZiB0aGUgc3Ry
dWN0dXJlIHBhcmFtZXRlciBjb250YWlucyBzYW1wbGVycywgdGhleSBuZWVkIHRvIGJlIHBhc3Nl
ZCBpbnRvIHRoZSBmdW5jdGlvbiBhcworICAgIC8vIHNlcGFyYXRlIHBhcmFtZXRlcnMuIEhMU0wg
ZG9lc24ndCBuYXRpdmVseSBzdXBwb3J0IHNhbXBsZXJzIGluIHN0cnVjdHMuCisgICAgaWYgKHR5
cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5nU2FtcGxlcnMoKSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChxdWFsaWZpZXIgIT0gRXZxT3V0ICYmIHF1YWxpZmllciAhPSBFdnFJbk91dCk7CisgICAgICAg
IFRWZWN0b3I8VEludGVybVN5bWJvbCAqPiBzYW1wbGVyU3ltYm9sczsKKyAgICAgICAgdHlwZS5j
cmVhdGVTYW1wbGVyU3ltYm9scygiYW5nbGUiICsgbmFtZVN0ciwgIiIsIDAsICZzYW1wbGVyU3lt
Ym9scywgbnVsbHB0cik7CisgICAgICAgIGZvciAoY29uc3QgVEludGVybVN5bWJvbCAqc2FtcGxl
ciA6IHNhbXBsZXJTeW1ib2xzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGFyZ1N0cmluZyA8PCAiLCBjb25zdCB1aW50ICIgPDwgc2FtcGxlci0+Z2V0U3ltYm9sKCkgPDwg
QXJyYXlTdHJpbmcodHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICht
T3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnNhbXBsZXJUeXBlID0gc2FtcGxlci0+Z2V0VHlw
ZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVCgoIXR5cGUuaXNBcnJheSgpICYmICFzYW1wbGVy
VHlwZS5pc0FycmF5KCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgIHR5cGUuZ2V0QXJyYXlT
aXplKCkgPT0gc2FtcGxlclR5cGUuZ2V0QXJyYXlTaXplKCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChJc1NhbXBsZXIoc2FtcGxlclR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAgICAg
ICAgICBhcmdTdHJpbmcgPDwgIiwgIiA8PCBRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSA8PCAi
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgVGV4dHVyZVN0cmluZyhzYW1wbGVyVHlw
ZS5nZXRCYXNpY1R5cGUoKSkgPDwgIiB0ZXh0dXJlXyIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgc2FtcGxlci0+Z2V0U3ltYm9sKCkgPDwgQXJyYXlTdHJpbmcodHlwZSkgPDwgIiwgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSA8
PCAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgU2FtcGxlclN0cmluZyhzYW1wbGVy
VHlwZS5nZXRCYXNpY1R5cGUoKSkgPDwgIiBzYW1wbGVyXyIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgc2FtcGxlci0+Z2V0U3ltYm9sKCkgPDwgQXJyYXlTdHJpbmcodHlwZSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgJnNhbXBsZXJUeXBlID0gc2FtcGxlci0+Z2V0VHlwZSgpOworICAgICAg
ICAgICAgICAgIEFTU0VSVCgoIXR5cGUuaXNBcnJheSgpICYmICFzYW1wbGVyVHlwZS5pc0FycmF5
KCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgIHR5cGUuZ2V0QXJyYXlTaXplKCkgPT0gc2Ft
cGxlclR5cGUuZ2V0QXJyYXlTaXplKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChJc1NhbXBs
ZXIoc2FtcGxlclR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAgICAgICAgICBhcmdTdHJp
bmcgPDwgIiwgIiA8PCBRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSA8PCAiICIgPDwgVHlwZVN0
cmluZyhzYW1wbGVyVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAiIDw8IHNh
bXBsZXItPmdldFN5bWJvbCgpIDw8IEFycmF5U3RyaW5nKHR5cGUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFyZ1N0cmluZy5zdHIoKTsKIH0KIAogVFN0
cmluZyBPdXRwdXRITFNMOjppbml0aWFsaXplcihjb25zdCBUVHlwZSAmdHlwZSkKQEAgLTI4NzEs
MTkgKzM1NTEsMjIgQEAKICAgICByZXR1cm4gInsiICsgc3RyaW5nICsgIn0iOwogfQogCi12b2lk
IE91dHB1dEhMU0w6Om91dHB1dENvbnN0cnVjdG9yKFZpc2l0IHZpc2l0LCBjb25zdCBUVHlwZSAm
dHlwZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJz
KQordm9pZCBPdXRwdXRITFNMOjpvdXRwdXRDb25zdHJ1Y3RvcihUSW5mb1NpbmtCYXNlICZvdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2l0IHZpc2l0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJz
KQogewogICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKICAgICB7CiAgICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsKICAgICB9Ci0gICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5mb1NpbmsoKTsKIAog
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICB7Ci0gICAgICAgIG1TdHJ1Y3R1cmVITFNM
LT5hZGRDb25zdHJ1Y3Rvcih0eXBlLCBuYW1lLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgVFN0cmlu
ZyBjb25zdHJ1Y3Rvck5hbWUgPSBtU3RydWN0dXJlSExTTC0+YWRkQ29uc3RydWN0b3IodHlwZSwg
bmFtZSwgcGFyYW1ldGVycyk7CiAKLSAgICAgICAgb3V0IDw8IG5hbWUgPDwgIigiOworICAgICAg
ICBvdXQgPDwgY29uc3RydWN0b3JOYW1lIDw8ICIoIjsKICAgICB9CiAgICAgZWxzZSBpZiAodmlz
aXQgPT0gSW5WaXNpdCkKICAgICB7CkBAIC0yODk1LDkgKzM1NzgsMTEgQEAKICAgICB9CiB9CiAK
LWNvbnN0IFRDb25zdGFudFVuaW9uICpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24oY29u
c3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdFVuaW9uKQorY29uc3Qg
VENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRVbmlvbihUSW5mb1NpbmtC
YXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RV
bmlvbikKIHsKLSAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOworICAgIGNv
bnN0IFRDb25zdGFudFVuaW9uICpjb25zdFVuaW9uSXRlcmF0ZWQgPSBjb25zdFVuaW9uOwogCiAg
ICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKICAgICBp
ZiAoc3RydWN0dXJlKQpAQCAtMjkwOSw3ICszNTk0LDcgQEAKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICpmaWVsZFR5cGUgPSBmaWVsZHNbaV0tPnR5cGUoKTsKLSAgICAgICAgICAgIGNv
bnN0VW5pb24gPSB3cml0ZUNvbnN0YW50VW5pb24oKmZpZWxkVHlwZSwgY29uc3RVbmlvbik7Cisg
ICAgICAgICAgICBjb25zdFVuaW9uSXRlcmF0ZWQgICAgID0gd3JpdGVDb25zdGFudFVuaW9uKG91
dCwgKmZpZWxkVHlwZSwgY29uc3RVbmlvbkl0ZXJhdGVkKTsKIAogICAgICAgICAgICAgaWYgKGkg
IT0gZmllbGRzLnNpemUoKSAtIDEpCiAgICAgICAgICAgICB7CkBAIC0yOTI4LDM3ICszNjEzLDIw
IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCBUeXBlU3RyaW5nKHR5cGUpIDw8ICIo
IjsKICAgICAgICAgfQotCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsr
LCBjb25zdFVuaW9uKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAoY29uc3RVbmlv
bi0+Z2V0VHlwZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0
OiBvdXQgPDwgc3RkOjptaW4oRkxUX01BWCwgc3RkOjptYXgoLUZMVF9NQVgsIGNvbnN0VW5pb24t
PmdldEZDb25zdCgpKSk7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidEludDogICBvdXQg
PDwgY29uc3RVbmlvbi0+Z2V0SUNvbnN0KCk7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVi
dFVJbnQ6ICBvdXQgPDwgY29uc3RVbmlvbi0+Z2V0VUNvbnN0KCk7IGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIEVidEJvb2w6ICBvdXQgPDwgY29uc3RVbmlvbi0+Z2V0QkNvbnN0KCk7IGJyZWFr
OwotICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAoaSAhPSBzaXplIC0gMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCisgICAgICAg
IGNvbnN0VW5pb25JdGVyYXRlZCA9IFdyaXRlQ29uc3RhbnRVbmlvbkFycmF5KG91dCwgY29uc3RV
bmlvbkl0ZXJhdGVkLCBzaXplKTsKICAgICAgICAgaWYgKHdyaXRlVHlwZSkKICAgICAgICAgewog
ICAgICAgICAgICAgb3V0IDw8ICIpIjsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBj
b25zdFVuaW9uOworICAgIHJldHVybiBjb25zdFVuaW9uSXRlcmF0ZWQ7CiB9CiAKLXZvaWQgT3V0
cHV0SExTTDo6d3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChWaXNpdCB2aXNpdCwgY29uc3Qg
Y2hhciAqcHJlU3RyKQordm9pZCBPdXRwdXRITFNMOjp3cml0ZUVtdWxhdGVkRnVuY3Rpb25Ucmlw
bGV0KFRJbmZvU2lua0Jhc2UgJm91dCwgVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0cikK
IHsKICAgICBUU3RyaW5nIHByZVN0cmluZyA9IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpHZXRF
bXVsYXRlZEZ1bmN0aW9uTmFtZShwcmVTdHIpOwotICAgIG91dHB1dFRyaXBsZXQodmlzaXQsIHBy
ZVN0cmluZy5jX3N0cigpLCAiLCAiLCAiKSIpOworICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgcHJlU3RyaW5nLmNfc3RyKCksICIsICIsICIpIik7CiB9CiAKIGJvb2wgT3V0cHV0SExTTDo6
d3JpdGVTYW1lU3ltYm9sSW5pdGlhbGl6ZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtU3lt
Ym9sICpzeW1ib2xOb2RlLCBUSW50ZXJtVHlwZWQgKmV4cHJlc3Npb24pCkBAIC0yOTgyLDMzICsz
NjUwLDY2IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE91dHB1dEhMU0w6OndyaXRl
RGVmZXJyZWRHbG9iYWxJbml0aWFsaXplcnMoVEluZm9TaW5rQmFzZSAmb3V0KQorYm9vbCBPdXRw
dXRITFNMOjpjYW5Xcml0ZUFzSExTTExpdGVyYWwoVEludGVybVR5cGVkICpleHByZXNzaW9uKQog
ewotICAgIG91dCA8PCAiI2RlZmluZSBBTkdMRV9VU0VTX0RFRkVSUkVEX0lOSVRcbiIKLSAgICAg
ICAgPDwgIlxuIgotICAgICAgICA8PCAidm9pZCBpbml0aWFsaXplRGVmZXJyZWRHbG9iYWxzKClc
biIKLSAgICAgICAgPDwgIntcbiI7CisgICAgLy8gV2Ugc3VwcG9ydCB3cml0aW5nIGNvbnN0YW50
IHVuaW9ucyBhbmQgY29uc3RydWN0b3JzIHRoYXQgb25seSB0YWtlIGNvbnN0YW50IHVuaW9ucyBh
cworICAgIC8vIHBhcmFtZXRlcnMgYXMgSExTTCBsaXRlcmFscy4KKyAgICBpZiAoZXhwcmVzc2lv
bi0+Z2V0QXNDb25zdGFudFVuaW9uKCkpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgaWYgKGV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0IHx8ICFl
eHByZXNzaW9uLT5nZXRBc0FnZ3JlZ2F0ZSgpIHx8CisgICAgICAgICFleHByZXNzaW9uLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5pc0NvbnN0cnVjdG9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdG9yID0gZXhwcmVzc2lv
bi0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICBmb3IgKFRJbnRlcm1Ob2RlICombm9kZSA6ICpjb25z
dHJ1Y3Rvci0+Z2V0U2VxdWVuY2UoKSkKKyAgICB7CisgICAgICAgIGlmICghbm9kZS0+Z2V0QXND
b25zdGFudFVuaW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQogCi0gICAgZm9yIChjb25zdCBhdXRvICZkZWZlcnJlZEdsb2JhbCA6IG1E
ZWZlcnJlZEdsb2JhbEluaXRpYWxpemVycykKK2Jvb2wgT3V0cHV0SExTTDo6d3JpdGVDb25zdGFu
dEluaXRpYWxpemF0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmV4
cHJlc3Npb24pCit7CisgICAgaWYgKGNhbldyaXRlQXNITFNMTGl0ZXJhbChleHByZXNzaW9uKSkK
ICAgICB7Ci0gICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGRlZmVycmVkR2xvYmFsLmZp
cnN0OwotICAgICAgICBUSW50ZXJtVHlwZWQgKmV4cHJlc3Npb24gPSBkZWZlcnJlZEdsb2JhbC5z
ZWNvbmQ7Ci0gICAgICAgIEFTU0VSVChzeW1ib2wpOwotICAgICAgICBBU1NFUlQoc3ltYm9sLT5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFHbG9iYWwgJiYgZXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkg
IT0gRXZxQ29uc3QpOwotCi0gICAgICAgIG91dCA8PCAiICAgICIgPDwgRGVjb3JhdGUoc3ltYm9s
LT5nZXRTeW1ib2woKSkgPDwgIiA9ICI7Ci0KLSAgICAgICAgaWYgKCF3cml0ZVNhbWVTeW1ib2xJ
bml0aWFsaXplcihvdXQsIHN5bWJvbCwgZXhwcmVzc2lvbikpCisgICAgICAgIHN5bWJvbE5vZGUt
PnRyYXZlcnNlKHRoaXMpOworICAgICAgICBpZiAoZXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmlzQXJy
YXkoKSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1JbmZvU2lua1N0YWNrLnRvcCgp
ID09ICZvdXQpOwotICAgICAgICAgICAgZXhwcmVzc2lvbi0+dHJhdmVyc2UodGhpcyk7CisgICAg
ICAgICAgICBvdXQgPDwgIlsiIDw8IGV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUo
KSA8PCAiXSI7CiAgICAgICAgIH0KLQotICAgICAgICBvdXQgPDwgIjtcbiI7CisgICAgICAgIG91
dCA8PCAiID0geyI7CisgICAgICAgIGlmIChleHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24o
KSkKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGVDb25z
dCAgPSBleHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIGNvbnN0
IFRDb25zdGFudFVuaW9uICpjb25zdFVuaW9uID0gbm9kZUNvbnN0LT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpOworICAgICAgICAgICAgV3JpdGVDb25zdGFudFVuaW9uQXJyYXkob3V0LCBjb25zdFVu
aW9uLCBub2RlQ29uc3QtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29u
c3RydWN0b3IgPSBleHByZXNzaW9uLT5nZXRBc0FnZ3JlZ2F0ZSgpOworICAgICAgICAgICAgQVNT
RVJUKGNvbnN0cnVjdG9yICE9IG51bGxwdHIpOworICAgICAgICAgICAgZm9yIChUSW50ZXJtTm9k
ZSAqJm5vZGUgOiAqY29uc3RydWN0b3ItPmdldFNlcXVlbmNlKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGVDb25zdCA9IG5vZGUtPmdl
dEFzQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2RlQ29uc3QpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdFVuaW9uID0gbm9kZUNv
bnN0LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOworICAgICAgICAgICAgICAgIFdyaXRlQ29uc3Rh
bnRVbmlvbkFycmF5KG91dCwgY29uc3RVbmlvbiwgbm9kZUNvbnN0LT5nZXRUeXBlKCkuZ2V0T2Jq
ZWN0U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZSAhPSBjb25zdHJ1Y3Rvci0+Z2V0
U2VxdWVuY2UoKS0+YmFjaygpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8ICIsICI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIG91dCA8PCAifSI7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQot
ICAgIG91dCA8PCAifVxuIgotICAgICAgICA8PCAiXG4iOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogVFN0cmluZyBPdXRwdXRITFNMOjphZGRTdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9uKGNvbnN0IFRT
dHJ1Y3R1cmUgJnN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL091dHB1dEhMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsMTAgQEAKIAog
ICAgIFRJbmZvU2lua0Jhc2UgJmdldEluZm9TaW5rKCkgeyBBU1NFUlQoIW1JbmZvU2lua1N0YWNr
LmVtcHR5KCkpOyByZXR1cm4gKm1JbmZvU2lua1N0YWNrLnRvcCgpOyB9CiAKKyAgICBzdGF0aWMg
Ym9vbCBjYW5Xcml0ZUFzSExTTExpdGVyYWwoVEludGVybVR5cGVkICpleHByZXNzaW9uKTsKKwog
ICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBoZWFkZXIoY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IgKmJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKTsKKyAgICB2b2lkIGhlYWRlcihUSW5mb1NpbmtC
YXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdEluRnVuY3Rpb25F
bXVsYXRvcik7CiAKICAgICAvLyBWaXNpdCBBU1Qgbm9kZXMgYW5kIG91dHB1dCB0aGVpciBjb2Rl
IHRvIHRoZSBib2R5IHN0cmVhbQogICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCop
OwpAQCAtNjMsMjkgKzY1LDQzIEBACiAgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1Mb29wKik7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJy
YW5jaCopOwogCi0gICAgdm9pZCB0cmF2ZXJzZVN0YXRlbWVudHMoVEludGVybU5vZGUgKm5vZGUp
OwogICAgIGJvb2wgaXNTaW5nbGVTdGF0ZW1lbnQoVEludGVybU5vZGUgKm5vZGUpOwotICAgIGJv
b2wgaGFuZGxlRXhjZXNzaXZlTG9vcChUSW50ZXJtTG9vcCAqbm9kZSk7CisgICAgYm9vbCBoYW5k
bGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3AgKm5vZGUpOwog
CiAgICAgLy8gRW1pdCBvbmUgb2YgdGhyZWUgc3RyaW5ncyBkZXBlbmRpbmcgb24gdHJhdmVyc2Ug
cGhhc2UuIENhbGxlZCB3aXRoIGxpdGVyYWwgc3RyaW5ncyBzbyB1c2luZyBjb25zdCBjaGFyKiBp
bnN0ZWFkIG9mIFRTdHJpbmcuCi0gICAgdm9pZCBvdXRwdXRUcmlwbGV0KFZpc2l0IHZpc2l0LCBj
b25zdCBjaGFyICpwcmVTdHJpbmcsIGNvbnN0IGNoYXIgKmluU3RyaW5nLCBjb25zdCBjaGFyICpw
b3N0U3RyaW5nLCBUSW5mb1NpbmtCYXNlICZvdXQpOwotICAgIHZvaWQgb3V0cHV0VHJpcGxldChW
aXNpdCB2aXNpdCwgY29uc3QgY2hhciAqcHJlU3RyaW5nLCBjb25zdCBjaGFyICppblN0cmluZywg
Y29uc3QgY2hhciAqcG9zdFN0cmluZyk7Ci0gICAgdm9pZCBvdXRwdXRMaW5lRGlyZWN0aXZlKGlu
dCBsaW5lKTsKKyAgICB2b2lkIG91dHB1dFRyaXBsZXQoVEluZm9TaW5rQmFzZSAmb3V0LAorICAg
ICAgICAgICAgICAgICAgICAgICBWaXNpdCB2aXNpdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqcHJlU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICppblN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zdFN0cmlu
Zyk7CisgICAgdm9pZCBvdXRwdXRMaW5lRGlyZWN0aXZlKFRJbmZvU2lua0Jhc2UgJm91dCwgaW50
IGxpbmUpOwogICAgIFRTdHJpbmcgYXJndW1lbnRTdHJpbmcoY29uc3QgVEludGVybVN5bWJvbCAq
c3ltYm9sKTsKICAgICBpbnQgdmVjdG9yU2l6ZShjb25zdCBUVHlwZSAmdHlwZSkgY29uc3Q7CiAK
ICAgICAvLyBFbWl0IGNvbnN0cnVjdG9yLiBDYWxsZWQgd2l0aCBsaXRlcmFsIG5hbWVzIHNvIHVz
aW5nIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgVFN0cmluZy4KLSAgICB2b2lkIG91dHB1dENvbnN0
cnVjdG9yKFZpc2l0IHZpc2l0LCBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgY2hhciAqbmFtZSwg
Y29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJzKTsKLSAgICBjb25zdCBUQ29uc3RhbnRV
bmlvbiAqd3JpdGVDb25zdGFudFVuaW9uKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUQ29uc3Rh
bnRVbmlvbiAqY29uc3RVbmlvbik7CisgICAgdm9pZCBvdXRwdXRDb25zdHJ1Y3RvcihUSW5mb1Np
bmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpdCB2aXNpdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVycyk7CisgICAgY29uc3QgVENvbnN0
YW50VW5pb24gKndyaXRlQ29uc3RhbnRVbmlvbihUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25z
dGFudFVuaW9uICpjb25zdFVuaW9uKTsKIAogICAgIHZvaWQgb3V0cHV0RXF1YWwoVmlzaXQgdmlz
aXQsIGNvbnN0IFRUeXBlICZ0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbmZvU2lua0Jhc2UgJm91dCk7
CiAKLSAgICB2b2lkIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQoVmlzaXQgdmlzaXQsIGNv
bnN0IGNoYXIgKnByZVN0cik7CisgICAgdm9pZCB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0
KFRJbmZvU2lua0Jhc2UgJm91dCwgVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0cik7CiAg
ICAgdm9pZCBtYWtlRmxhZ2dlZFN0cnVjdE1hcHMoY29uc3Qgc3RkOjp2ZWN0b3I8VEludGVybVR5
cGVkICo+ICZmbGFnZ2VkU3RydWN0cyk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgZm91
bmQgYSAnc2FtZSBzeW1ib2wnIGluaXRpYWxpemVyIChpbml0aWFsaXplciB0aGF0IHJlZmVyZW5j
ZXMgdGhlIHZhcmlhYmxlIGl0J3MgaW5pdHRpbmcpCiAgICAgYm9vbCB3cml0ZVNhbWVTeW1ib2xJ
bml0aWFsaXplcihUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUs
IFRJbnRlcm1UeXBlZCAqZXhwcmVzc2lvbik7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHZhcmlh
YmxlIGluaXRpYWxpemVyIGNvdWxkIGJlIHdyaXR0ZW4gdXNpbmcgbGl0ZXJhbCB7fSBub3RhdGlv
bi4KKyAgICBib29sIHdyaXRlQ29uc3RhbnRJbml0aWFsaXphdGlvbihUSW5mb1NpbmtCYXNlICZv
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAq
c3ltYm9sTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKmV4cHJlc3Npb24pOworCiAgICAgdm9pZCB3cml0ZURlZmVycmVkR2xvYmFsSW5pdGlh
bGl6ZXJzKFRJbmZvU2lua0Jhc2UgJm91dCk7CisgICAgdm9pZCB3cml0ZVNlbGVjdGlvbihUSW5m
b1NpbmtCYXNlICZvdXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpOwogCiAgICAgLy8gUmV0dXJu
cyB0aGUgZnVuY3Rpb24gbmFtZQogICAgIFRTdHJpbmcgYWRkU3RydWN0RXF1YWxpdHlGdW5jdGlv
bihjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUpOwpAQCAtMTAzLDcgKzExOSw2IEBACiAgICAg
Y29uc3QgU2hTaGFkZXJPdXRwdXQgbU91dHB1dFR5cGU7CiAgICAgaW50IG1Db21waWxlT3B0aW9u
czsKIAotICAgIFVuZm9sZFNob3J0Q2lyY3VpdCAqbVVuZm9sZFNob3J0Q2lyY3VpdDsKICAgICBi
b29sIG1JbnNpZGVGdW5jdGlvbjsKIAogICAgIC8vIE91dHB1dCBzdHJlYW1zCkBAIC0xNjIsNiAr
MTc3LDcgQEAKICAgICBib29sIG1Vc2VzRnJvbnRGYWNpbmc7CiAgICAgYm9vbCBtVXNlc1BvaW50
U2l6ZTsKICAgICBib29sIG1Vc2VzSW5zdGFuY2VJRDsKKyAgICBib29sIG1Vc2VzVmVydGV4SUQ7
CiAgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBib29sIG1Vc2VzWG9yOwogICAgIGJvb2wg
bVVzZXNEaXNjYXJkUmV3cml0aW5nOwpAQCAtMTg3LDEyICsyMDMsNiBAQAogICAgIHN0ZDo6bWFw
PFRJbnRlcm1UeXBlZCosIFRTdHJpbmc+IG1GbGFnZ2VkU3RydWN0TWFwcGVkTmFtZXM7CiAgICAg
c3RkOjptYXA8VEludGVybVR5cGVkKiwgVFN0cmluZz4gbUZsYWdnZWRTdHJ1Y3RPcmlnaW5hbE5h
bWVzOwogCi0gICAgLy8gU29tZSBpbml0aWFsaXplcnMgdXNlIHZhcnlpbmdzLCB1bmlmb3JtcyBv
ciBhdHRyaWJ1dGVzLCB0aHVzIHdlIGNhbid0IGV2YWx1YXRlIHNvbWUgdmFyaWFibGVzCi0gICAg
Ly8gYXQgZ2xvYmFsIHN0YXRpYyBzY29wZSBpbiBITFNMLiBUaGVzZSB2YXJpYWJsZXMgZGVwZW5k
IG9uIHZhbHVlcyB3aGljaCB3ZSByZXRyaWV2ZSBmcm9tIHRoZQotICAgIC8vIHNoYWRlciBpbnB1
dCBzdHJ1Y3R1cmUsIHdoaWNoIHdlIHNldCBpbiB0aGUgRDNEIG1haW4gZnVuY3Rpb24uIEluc3Rl
YWQsIHdlIGNhbiBpbml0aWFsaXplCi0gICAgLy8gdGhlc2Ugc3RhdGljIGdsb2JhbHMgYWZ0ZXIg
d2UgaW5pdGlhbGl6ZSBvdXIgb3RoZXIgZ2xvYmFscy4KLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnBh
aXI8VEludGVybVN5bWJvbCosIFRJbnRlcm1UeXBlZCo+PiBtRGVmZXJyZWRHbG9iYWxJbml0aWFs
aXplcnM7Ci0KICAgICBzdHJ1Y3QgSGVscGVyRnVuY3Rpb24KICAgICB7CiAgICAgICAgIFRTdHJp
bmcgZnVuY3Rpb25OYW1lOwpAQCAtMjI1LDYgKzIzNSwxMCBAQAogICAgIC8vIHdpdGggdGhlIG90
aGVyIE4gcGFyYW1ldGVycyBvZiB0aGUgZnVuY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB3b3JrIGFy
b3VuZCB0aGF0IGFycmF5cyBjYW4ndCBiZQogICAgIC8vIHJldHVybiB2YWx1ZXMgaW4gSExTTC4K
ICAgICBzdGQ6OnZlY3RvcjxBcnJheUhlbHBlckZ1bmN0aW9uPiBtQXJyYXlDb25zdHJ1Y3RJbnRv
RnVuY3Rpb25zOworCisgIHByaXZhdGU6CisgICAgVFN0cmluZyBzYW1wbGVyTmFtZVByZWZpeEZy
b21TdHJ1Y3QoVEludGVybVR5cGVkICpub2RlKTsKKyAgICBib29sIGFuY2VzdG9yRXZhbHVhdGVz
VG9TYW1wbGVySW5TdHJ1Y3QoVmlzaXQgdmlzaXQpOwogfTsKIAogfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9QYXJzZUNvbnRleHQuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCw4ICsxMCwxMSBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpbmNs
dWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCIKKyNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9nbHNsYW5nLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRj
aC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFs
aXplci5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgogCiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogLy8KQEAgLTIzLDg2ICsyNiw5OCBAQAogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBz
ZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKIC8vIGZvciBhIHZlY3Rv
ci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJp
bmcmIGNvbXBTdHJpbmcsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiBmaWVsZHMsIGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUpCitib29sIFRQYXJzZUNvbnRleHQ6OnBhcnNlVmVjdG9yRmllbGRz
KGNvbnN0IFRTdHJpbmcgJmNvbXBTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB2ZWNTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUVmVjdG9yRmllbGRzICZmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7Ci0gICAgZmllbGRzLm51bSA9IChp
bnQpIGNvbXBTdHJpbmcuc2l6ZSgpOwotICAgIGlmIChmaWVsZHMubnVtID4gNCkgeworICAgIGZp
ZWxkcy5udW0gPSAoaW50KWNvbXBTdHJpbmcuc2l6ZSgpOworICAgIGlmIChmaWVsZHMubnVtID4g
NCkKKyAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIHZlY3RvciBmaWVsZCBzZWxl
Y3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgZW51bSB7CisgICAgZW51bQorICAgIHsKICAgICAgICAgZXh5encsCiAgICAgICAg
IGVyZ2JhLAogICAgICAgICBlc3RwcQogICAgIH0gZmllbGRTZXRbNF07CiAKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGZpZWxkcy5udW07ICsraSkgewotICAgICAgICBzd2l0Y2ggKGNvbXBTdHJp
bmdbaV0pICB7Ci0gICAgICAgIGNhc2UgJ3gnOiAKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRz
W2ldID0gMDsKLSAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXh5enc7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSAncic6IAotICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0g
PSAwOwotICAgICAgICAgICAgZmllbGRTZXRbaV0gPSBlcmdiYTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsK
LSAgICAgICAgICAgIGZpZWxkU2V0W2ldID0gZXN0cHE7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSAneSc6IAotICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOwotICAg
ICAgICAgICAgZmllbGRTZXRbaV0gPSBleHl6dzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlICdnJzogCi0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7Ci0gICAgICAg
ICAgICBmaWVsZFNldFtpXSA9IGVyZ2JhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgJ3QnOgotICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAxOwotICAgICAgICAgICAg
ZmllbGRTZXRbaV0gPSBlc3RwcTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICd6
JzogCi0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDI7Ci0gICAgICAgICAgICBmaWVs
ZFNldFtpXSA9IGV4eXp3OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiAK
LSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMjsKLSAgICAgICAgICAgIGZpZWxkU2V0
W2ldID0gZXJnYmE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncCc6Ci0gICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDI7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9
IGVzdHBxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBjYXNlICd3Jzog
Ci0gICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDM7Ci0gICAgICAgICAgICBmaWVsZFNl
dFtpXSA9IGV4eXp3OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2EnOiAKLSAg
ICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMzsKLSAgICAgICAgICAgIGZpZWxkU2V0W2ld
ID0gZXJnYmE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAncSc6Ci0gICAgICAg
ICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDM7Ci0gICAgICAgICAgICBmaWVsZFNldFtpXSA9IGVz
dHBxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBl
cnJvcihsaW5lLCAiaWxsZWdhbCB2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5j
X3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IGZpZWxkcy5udW07ICsraSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY29tcFN0cmluZ1tp
XSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgZmll
bGRzLm9mZnNldHNbaV0gPSAwOworICAgICAgICAgICAgICAgIGZpZWxkU2V0W2ldICAgICAgID0g
ZXh5enc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdyJzoKKyAg
ICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDA7CisgICAgICAgICAgICAgICAgZmll
bGRTZXRbaV0gICAgICAgPSBlcmdiYTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgJ3MnOgorICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKKyAg
ICAgICAgICAgICAgICBmaWVsZFNldFtpXSAgICAgICA9IGVzdHBxOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAneSc6CisgICAgICAgICAgICAgICAgZmllbGRzLm9m
ZnNldHNbaV0gPSAxOworICAgICAgICAgICAgICAgIGZpZWxkU2V0W2ldICAgICAgID0gZXh5enc7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdnJzoKKyAgICAgICAg
ICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9IDE7CisgICAgICAgICAgICAgICAgZmllbGRTZXRb
aV0gICAgICAgPSBlcmdiYTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgJ3QnOgorICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMTsKKyAgICAgICAg
ICAgICAgICBmaWVsZFNldFtpXSAgICAgICA9IGVzdHBxOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSAneic6CisgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
aV0gPSAyOworICAgICAgICAgICAgICAgIGZpZWxkU2V0W2ldICAgICAgID0gZXh5enc7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgICAgICAg
ICBmaWVsZHMub2Zmc2V0c1tpXSA9IDI7CisgICAgICAgICAgICAgICAgZmllbGRTZXRbaV0gICAg
ICAgPSBlcmdiYTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3An
OgorICAgICAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMjsKKyAgICAgICAgICAgICAg
ICBmaWVsZFNldFtpXSAgICAgICA9IGVzdHBxOworICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tpXSA9
IDM7CisgICAgICAgICAgICAgICAgZmllbGRTZXRbaV0gICAgICAgPSBleHl6dzsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgIGZp
ZWxkcy5vZmZzZXRzW2ldID0gMzsKKyAgICAgICAgICAgICAgICBmaWVsZFNldFtpXSAgICAgICA9
IGVyZ2JhOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncSc6Cisg
ICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbaV0gPSAzOworICAgICAgICAgICAgICAgIGZp
ZWxkU2V0W2ldICAgICAgID0gZXN0cHE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIHZlY3Rv
ciBmaWVsZCBzZWxlY3Rpb24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgZmllbGRzLm51bTsgKytpKSB7Ci0gICAgICAgIGlmIChmaWVsZHMub2Zmc2V0c1tpXSA+PSB2
ZWNTaXplKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAidmVjdG9yIGZpZWxkIHNlbGVjdGlv
biBvdXQgb2YgcmFuZ2UiLCAgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGZpZWxkcy5udW07ICsraSkKKyAgICB7CisgICAgICAgIGlmIChmaWVsZHMub2Zmc2V0
c1tpXSA+PSB2ZWNTaXplKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsaW5lLCAidmVj
dG9yIGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UiLCBjb21wU3RyaW5nLmNfc3RyKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGkgPiAw
KSB7Ci0gICAgICAgICAgICBpZiAoZmllbGRTZXRbaV0gIT0gZmllbGRTZXRbaS0xXSkgewotICAg
ICAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIC0gdmVjdG9yIGNvbXBvbmVudCBmaWVs
ZHMgbm90IGZyb20gdGhlIHNhbWUgc2V0IiwgY29tcFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAg
aWYgKGkgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZmllbGRTZXRbaV0gIT0gZmll
bGRTZXRbaSAtIDFdKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGxpbmUs
ICJpbGxlZ2FsIC0gdmVjdG9yIGNvbXBvbmVudCBmaWVsZHMgbm90IGZyb20gdGhlIHNhbWUgc2V0
IiwKKyAgICAgICAgICAgICAgICAgICAgICBjb21wU3RyaW5nLmNfc3RyKCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTExLDU1
ICsxMjYsNiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi0KLS8vCi0vLyBMb29rIGF0IGEgJy4n
IGZpZWxkIHNlbGVjdG9yIHN0cmluZyBhbmQgY2hhbmdlIGl0IGludG8gb2Zmc2V0cwotLy8gZm9y
IGEgbWF0cml4LgotLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VNYXRyaXhGaWVsZHMoY29u
c3QgVFN0cmluZyYgY29tcFN0cmluZywgaW50IG1hdENvbHMsIGludCBtYXRSb3dzLCBUTWF0cml4
RmllbGRzJiBmaWVsZHMsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpCi17Ci0gICAgZmllbGRzLndo
b2xlUm93ID0gZmFsc2U7Ci0gICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7Ci0gICAgZmllbGRz
LnJvdyA9IC0xOwotICAgIGZpZWxkcy5jb2wgPSAtMTsKLQotICAgIGlmIChjb21wU3RyaW5nLnNp
emUoKSAhPSAyKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIGxlbmd0aCBvZiBtYXRy
aXggZmllbGQgc2VsZWN0aW9uIiwgY29tcFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGlmIChjb21wU3RyaW5nWzBdID09ICdfJykgewotICAgICAg
ICBpZiAoY29tcFN0cmluZ1sxXSA8ICcwJyB8fCBjb21wU3RyaW5nWzFdID4gJzMnKSB7Ci0gICAg
ICAgICAgICBlcnJvcihsaW5lLCAiaWxsZWdhbCBtYXRyaXggZmllbGQgc2VsZWN0aW9uIiwgY29t
cFN0cmluZy5jX3N0cigpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBmaWVsZHMud2hvbGVDb2wgPSB0cnVlOwotICAgICAgICBmaWVsZHMuY29sID0gY29t
cFN0cmluZ1sxXSAtICcwJzsKLSAgICB9IGVsc2UgaWYgKGNvbXBTdHJpbmdbMV0gPT0gJ18nKSB7
Ci0gICAgICAgIGlmIChjb21wU3RyaW5nWzBdIDwgJzAnIHx8IGNvbXBTdHJpbmdbMF0gPiAnMycp
IHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJpbGxlZ2FsIG1hdHJpeCBmaWVsZCBzZWxlY3Rp
b24iLCBjb21wU3RyaW5nLmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgICAgIGZpZWxkcy53aG9sZVJvdyA9IHRydWU7Ci0gICAgICAgIGZpZWxkcy5y
b3cgPSBjb21wU3RyaW5nWzBdIC0gJzAnOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChjb21w
U3RyaW5nWzBdIDwgJzAnIHx8IGNvbXBTdHJpbmdbMF0gPiAnMycgfHwKLSAgICAgICAgICAgIGNv
bXBTdHJpbmdbMV0gPCAnMCcgfHwgY29tcFN0cmluZ1sxXSA+ICczJykgewotICAgICAgICAgICAg
ZXJyb3IobGluZSwgImlsbGVnYWwgbWF0cml4IGZpZWxkIHNlbGVjdGlvbiIsIGNvbXBTdHJpbmcu
Y19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
ZmllbGRzLnJvdyA9IGNvbXBTdHJpbmdbMF0gLSAnMCc7Ci0gICAgICAgIGZpZWxkcy5jb2wgPSBj
b21wU3RyaW5nWzFdIC0gJzAnOwotICAgIH0KLQotICAgIGlmIChmaWVsZHMucm93ID49IG1hdFJv
d3MgfHwgZmllbGRzLmNvbCA+PSBtYXRDb2xzKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJtYXRy
aXggZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSIsIGNvbXBTdHJpbmcuY19zdHIoKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KIC8vCiAvLyBFcnJvcnMKQEAgLTE3NiwzMiArMTQyLDQ5IEBACiAvLwogLy8g
VXNlZCBieSBmbGV4L2Jpc29uIHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJzaW5nIGVycm9y
cy4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxvYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVhc29uLCBjb25zdCBjaGFy
KiB0b2tlbiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGV4dHJhSW5m
bykKK3ZvaWQgVFBhcnNlQ29udGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbG9jLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpleHRyYUluZm8pCiB7CiAgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xv
YzsKICAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOwogICAgIHNyY0xvYy5saW5lID0g
bG9jLmZpcnN0X2xpbmU7Ci0gICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9zdGlj
czo6UFBfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0xvYywgcmVhc29uLCB0
b2tlbiwgZXh0cmFJbmZvKTsKLQorICAgIG1EaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdu
b3N0aWNzOjpQUF9FUlJPUiwgc3JjTG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOwogfQog
Ci12b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYgbG9jLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJlYXNvbiwgY29uc3QgY2hhciog
dG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZv
KSB7Cit2b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyAmbG9jLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpleHRyYUluZm8pCit7CiAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uIHNyY0xvYzsKICAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOwogICAgIHNyY0xv
Yy5saW5lID0gbG9jLmZpcnN0X2xpbmU7Ci0gICAgZGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpE
aWFnbm9zdGljczo6UFBfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjTG9j
LCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOworICAgIG1EaWFnbm9zdGljcy53cml0ZUluZm8o
cHA6OkRpYWdub3N0aWNzOjpQUF9XQVJOSU5HLCBzcmNMb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJh
SW5mbyk7CiB9CiAKK3ZvaWQgVFBhcnNlQ29udGV4dDo6b3V0T2ZSYW5nZUVycm9yKGJvb2wgaXNF
cnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
ZXh0cmFJbmZvKQoreworICAgIGlmIChpc0Vycm9yKQorICAgIHsKKyAgICAgICAgZXJyb3IobG9j
LCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOworICAgICAgICByZWNvdmVyKCk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIHdhcm5pbmcobG9jLCByZWFzb24sIHRva2VuLCBleHRy
YUluZm8pOworICAgIH0KK30KKwogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBmb3IgYWxsIHBs
YWNlcyBhc3NpZ25tZW50cyBkb24ndCB3b3JrLgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6YXNz
aWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcg
bGVmdCwgVFN0cmluZyByaWdodCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6YXNzaWduRXJyb3IoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRTdHJpbmcgbGVmdCwgVFN0cmlu
ZyByaWdodCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07CiAgICAg
ZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9tICciIDw8IHJpZ2h0IDw8ICIn
IHRvICciIDw8IGxlZnQgPDwgIiciOwpAQCAtMjEyLDExICsxOTUsMTEgQEAKIC8vCiAvLyBTYW1l
IGVycm9yIG1lc3NhZ2UgZm9yIGFsbCBwbGFjZXMgdW5hcnkgb3BlcmF0aW9ucyBkb24ndCB3b3Jr
LgogLy8KLXZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2Mm
IGxpbmUsIGNvbnN0IGNoYXIqIG9wLCBUU3RyaW5nIG9wZXJhbmQpCit2b2lkIFRQYXJzZUNvbnRl
eHQ6OnVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwg
VFN0cmluZyBvcGVyYW5kKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVh
bTsKLSAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBl
eGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIiA8PCBvcGVyYW5kIAotICAgICAg
ICAgICAgICAgICAgICA8PCAiIChvciB0aGVyZSBpcyBubyBhY2NlcHRhYmxlIGNvbnZlcnNpb24p
IjsKKyAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBl
eGlzdHMgdGhhdCB0YWtlcyBhbiBvcGVyYW5kIG9mIHR5cGUgIgorICAgICAgICAgICAgICAgICAg
ICA8PCBvcGVyYW5kIDw8ICIgKG9yIHRoZXJlIGlzIG5vIGFjY2VwdGFibGUgY29udmVyc2lvbiki
OwogICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKICAg
ICBlcnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZSIsIG9wLCBleHRyYUluZm8uY19zdHIo
KSk7CiB9CkBAIC0yMjQsMzMgKzIwNyw0NCBAQAogLy8KIC8vIFNhbWUgZXJyb3IgbWVzc2FnZSBm
b3IgYWxsIGJpbmFyeSBvcGVyYXRpb25zIGRvbid0IHdvcmsuCiAvLwotdm9pZCBUUGFyc2VDb250
ZXh0OjpiaW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IGNoYXIqIG9w
LCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCit2b2lkIFRQYXJzZUNvbnRleHQ6OmJpbmFy
eU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUU3RyaW5nIGxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFN0
cmluZyByaWdodCkKIHsKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0g
ICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3Rz
IHRoYXQgdGFrZXMgYSBsZWZ0LWhhbmQgb3BlcmFuZCBvZiB0eXBlICciIDw8IGxlZnQgCi0gICAg
ICAgICAgICAgICAgICAgIDw8ICInIGFuZCBhIHJpZ2h0IG9wZXJhbmQgb2YgdHlwZSAnIiA8PCBy
aWdodCA8PCAiJyAob3IgdGhlcmUgaXMgbm8gYWNjZXB0YWJsZSBjb252ZXJzaW9uKSI7CisgICAg
ZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVyYXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3RzIHRo
YXQgdGFrZXMgYSBsZWZ0LWhhbmQgb3BlcmFuZCBvZiB0eXBlICciCisgICAgICAgICAgICAgICAg
ICAgIDw8IGxlZnQgPDwgIicgYW5kIGEgcmlnaHQgb3BlcmFuZCBvZiB0eXBlICciIDw8IHJpZ2h0
CisgICAgICAgICAgICAgICAgICAgIDw8ICInIChvciB0aGVyZSBpcyBubyBhY2NlcHRhYmxlIGNv
bnZlcnNpb24pIjsKICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0u
c3RyKCk7Ci0gICAgZXJyb3IobGluZSwgIiB3cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRy
YUluZm8uY19zdHIoKSk7IAorICAgIGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlcyAi
LCBvcCwgZXh0cmFJbmZvLmNfc3RyKCkpOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnByZWNp
c2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFByZWNpc2lvbiBwcmVjaXNp
b24sIFRCYXNpY1R5cGUgdHlwZSl7Ci0gICAgaWYgKCFjaGVja3NQcmVjaXNpb25FcnJvcnMpCiti
b29sIFRQYXJzZUNvbnRleHQ6OnByZWNpc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUHJlY2lzaW9u
IHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQmFz
aWNUeXBlIHR5cGUpCit7CisgICAgaWYgKCFtQ2hlY2tzUHJlY2lzaW9uRXJyb3JzKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgc3dpdGNoKCB0eXBlICl7Ci0gICAgY2FzZSBFYnRGbG9hdDoK
LSAgICAgICAgaWYoIHByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQgKXsKLSAgICAgICAgICAgIGVy
cm9yKCBsaW5lLCAiTm8gcHJlY2lzaW9uIHNwZWNpZmllZCBmb3IgKGZsb2F0KSIsICIiICk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocHJlY2lzaW9uID09IEVicFVuZGVmaW5l
ZCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiTm8gcHJlY2lzaW9u
IHNwZWNpZmllZCBmb3IgKGZsb2F0KSIsICIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgY2FzZSBFYnRVSW50Ogor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7ICAvLyB0aGVyZSdzIGFsd2F5cyBhIHByZWRl
Y2xhcmVkIHF1YWxpZmllcgorICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJObyBwcmVjaXNp
b24gc3BlY2lmaWVkIChpbnQpIiwgIiIpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoSXNTYW1wbGVyKHR5cGUp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IobGluZSwgIk5v
IHByZWNpc2lvbiBzcGVjaWZpZWQgKHNhbXBsZXIpIiwgIiIpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgIGlmKCBwcmVjaXNpb24gPT0gRWJwVW5kZWZp
bmVkICl7Ci0gICAgICAgICAgICBlcnJvciggbGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQg
KGludCkiLCAiIiApOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yNjEsODYgKzI1NSwxMTIgQEAKIC8vCiAvLyBSZXR1cm5z
IHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmxWYWx1
ZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRJbnRl
cm1UeXBlZCogbm9kZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6bFZhbHVlRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVEludGVybVR5cGVkICpub2RlKQog
ewotICAgIFRJbnRlcm1TeW1ib2wqIHN5bU5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsK
LSAgICBUSW50ZXJtQmluYXJ5KiBiaW5hcnlOb2RlID0gbm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7
CisgICAgVEludGVybVN5bWJvbCAqc3ltTm9kZSAgICA9IG5vZGUtPmdldEFzU3ltYm9sTm9kZSgp
OworICAgIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUo
KTsKIAotICAgIGlmIChiaW5hcnlOb2RlKSB7CisgICAgaWYgKGJpbmFyeU5vZGUpCisgICAgewog
ICAgICAgICBib29sIGVycm9yUmV0dXJuOwogCi0gICAgICAgIHN3aXRjaChiaW5hcnlOb2RlLT5n
ZXRPcCgpKSB7Ci0gICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6Ci0gICAgICAgIGNhc2UgRU9w
SW5kZXhJbmRpcmVjdDoKLSAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKLSAgICAg
ICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgotICAgICAgICAgICAgcmV0dXJu
IGxWYWx1ZUVycm9yQ2hlY2sobGluZSwgb3AsIGJpbmFyeU5vZGUtPmdldExlZnQoKSk7Ci0gICAg
ICAgIGNhc2UgRU9wVmVjdG9yU3dpenpsZToKLSAgICAgICAgICAgIGVycm9yUmV0dXJuID0gbFZh
bHVlRXJyb3JDaGVjayhsaW5lLCBvcCwgYmluYXJ5Tm9kZS0+Z2V0TGVmdCgpKTsKLSAgICAgICAg
ICAgIGlmICghZXJyb3JSZXR1cm4pIHsKLSAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0WzRdID0g
ezAsMCwwLDB9OworICAgICAgICBzd2l0Y2ggKGJpbmFyeU5vZGUtPmdldE9wKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3Q6CisgICAgICAgICAgICBjYXNlIEVP
cEluZGV4SW5kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0Ogor
ICAgICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgorICAgICAgICAg
ICAgICAgIHJldHVybiBsVmFsdWVFcnJvckNoZWNrKGxpbmUsIG9wLCBiaW5hcnlOb2RlLT5nZXRM
ZWZ0KCkpOworICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JTd2l6emxlOgorICAgICAgICAgICAg
ICAgIGVycm9yUmV0dXJuID0gbFZhbHVlRXJyb3JDaGVjayhsaW5lLCBvcCwgYmluYXJ5Tm9kZS0+
Z2V0TGVmdCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVycm9yUmV0dXJuKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldFs0XSA9IHswLCAwLCAwLCAw
fTsKIAotICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogcmlnaHROb2RlID0gYmluYXJ5Tm9k
ZS0+Z2V0UmlnaHQoKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyTm9k
ZSA9IHJpZ2h0Tm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICpyaWdodE5vZGUgICAgPSBiaW5hcnlOb2RlLT5nZXRSaWdodCgpOworICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyTm9kZSA9IHJpZ2h0Tm9kZS0+Z2V0
QXNBZ2dyZWdhdGUoKTsKIAotICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpp
dGVyYXRvciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCktPmJlZ2luKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgIT0gYWdnck5vZGUtPmdldFNl
cXVlbmNlKCktPmVuZCgpOyBwKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0g
KCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwot
ICAgICAgICAgICAgICAgICAgICBvZmZzZXRbdmFsdWVdKys7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChvZmZzZXRbdmFsdWVdID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Io
bGluZSwgIiBsLXZhbHVlIG9mIHN3aXp6bGUgY2Fubm90IGhhdmUgZHVwbGljYXRlIGNvbXBvbmVu
dHMiLCBvcCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVy
YXRvciBwID0gYWdnck5vZGUtPmdldFNlcXVlbmNlKCktPmJlZ2luKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgcCAhPSBhZ2dyTm9kZS0+Z2V0U2VxdWVuY2UoKS0+ZW5kKCk7IHArKykKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0g
KCpwKS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0W3ZhbHVlXSsrOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9mZnNldFt2YWx1ZV0gPiAxKQorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSBvZiBz
d2l6emxlIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBjb21wb25lbnRzIiwgb3ApOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
cmV0dXJuIGVycm9yUmV0dXJuOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yUmV0dXJuOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBlcnJvcihsaW5l
LCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0KLSAgICBjb25zdCBjaGFyKiBzeW1ib2wgPSAwOworICAgIGNvbnN0IGNoYXIgKnN5bWJv
bCA9IDA7CiAgICAgaWYgKHN5bU5vZGUgIT0gMCkKICAgICAgICAgc3ltYm9sID0gc3ltTm9kZS0+
Z2V0U3ltYm9sKCkuY19zdHIoKTsKIAotICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2UgPSAwOwotICAg
IHN3aXRjaCAobm9kZS0+Z2V0UXVhbGlmaWVyKCkpIHsKLSAgICBjYXNlIEV2cUNvbnN0OiAgICAg
ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIGNvbnN0IjsgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgRXZxQ29uc3RSZWFkT25seTogIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGEgY29uc3Qi
OyAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFBdHRyaWJ1dGU6ICAgICAgbWVzc2FnZSA9ICJj
YW4ndCBtb2RpZnkgYW4gYXR0cmlidXRlIjsgICBicmVhazsKLSAgICBjYXNlIEV2cUZyYWdtZW50
SW46ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhbiBpbnB1dCI7ICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgRXZxVmVydGV4SW46ICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGlu
cHV0IjsgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFVbmlmb3JtOiAgICAgICAgbWVzc2FnZSA9
ICJjYW4ndCBtb2RpZnkgYSB1bmlmb3JtIjsgICAgICBicmVhazsKLSAgICBjYXNlIEV2cVZhcnlp
bmdJbjogICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlpbmciOyAgICAgIGJyZWFr
OwotICAgIGNhc2UgRXZxRnJhZ0Nvb3JkOiAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGds
X0ZyYWdDb29yZCI7ICAgYnJlYWs7Ci0gICAgY2FzZSBFdnFGcm9udEZhY2luZzogICAgbWVzc2Fn
ZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJvbnRGYWNpbmciOyBicmVhazsKLSAgICBjYXNlIEV2cVBv
aW50Q29vcmQ6ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBnbF9Qb2ludENvb3JkIjsgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gVHlwZSB0aGF0IGNh
bid0IGJlIHdyaXR0ZW4gdG8/Ci0gICAgICAgIC8vCi0gICAgICAgIGlmIChub2RlLT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRWb2lkKSB7Ci0gICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlm
eSB2b2lkIjsKLSAgICAgICAgfQotICAgICAgICBpZiAoSXNTYW1wbGVyKG5vZGUtPmdldEJhc2lj
VHlwZSgpKSkgewotICAgICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSBzYW1wbGVy
IjsKLSAgICAgICAgfQorICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UgPSAwOworICAgIHN3aXRjaCAo
bm9kZS0+Z2V0UXVhbGlmaWVyKCkpCisgICAgeworICAgICAgICBjYXNlIEV2cUNvbnN0OgorICAg
ICAgICAgICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYSBjb25zdCI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFdnFDb25zdFJlYWRPbmx5OgorICAgICAgICAgICAgbWVzc2Fn
ZSA9ICJjYW4ndCBtb2RpZnkgYSBjb25zdCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFdnFBdHRyaWJ1dGU6CisgICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBh
biBhdHRyaWJ1dGUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxRnJhZ21l
bnRJbjoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9kaWZ5IGFuIGlucHV0IjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cVZlcnRleEluOgorICAgICAgICAgICAg
bWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgYW4gaW5wdXQiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRXZxVW5pZm9ybToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9k
aWZ5IGEgdW5pZm9ybSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFdnFWYXJ5
aW5nSW46CisgICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHZhcnlpbmciOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZxRnJhZ0Nvb3JkOgorICAgICAgICAg
ICAgbWVzc2FnZSA9ICJjYW4ndCBtb2RpZnkgZ2xfRnJhZ0Nvb3JkIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEV2cUZyb250RmFjaW5nOgorICAgICAgICAgICAgbWVzc2FnZSA9
ICJjYW4ndCBtb2RpZnkgZ2xfRnJvbnRGYWNpbmciOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRXZxUG9pbnRDb29yZDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiY2FuJ3QgbW9k
aWZ5IGdsX1BvaW50Q29vcmQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVHlwZSB0aGF0IGNhbid0IGJlIHdyaXR0
ZW4gdG8/CisgICAgICAgICAgICAvLworICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJhc2ljVHlw
ZSgpID09IEVidFZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9
ICJjYW4ndCBtb2RpZnkgdm9pZCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSXNT
YW1wbGVyKG5vZGUtPmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHNhbXBsZXIiOworICAgICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmIChtZXNzYWdlID09IDAgJiYgYmluYXJ5Tm9kZSA9PSAwICYmIHN5bU5v
ZGUgPT0gMCkgeworICAgIGlmIChtZXNzYWdlID09IDAgJiYgYmluYXJ5Tm9kZSA9PSAwICYmIHN5
bU5vZGUgPT0gMCkKKyAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJl
ZCIsIG9wKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLQogICAgIC8vCiAgICAg
Ly8gRXZlcnl0aGluZyBlbHNlIGlzIG9rYXksIG5vIGVycm9yLgogICAgIC8vCkBAIC0zNTAsMTMg
KzM3MCwxNSBAQAogICAgIC8vCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmUgYW4gZXJy
b3IgYW5kIGEgbWVzc2FnZS4KICAgICAvLwotICAgIGlmIChzeW1Ob2RlKSB7CisgICAgaWYgKHN5
bU5vZGUpCisgICAgewogICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
CiAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiXCIiIDw8IHN5bWJvbCA8PCAiXCIgKCIgPDwg
bWVzc2FnZSA8PCAiKSI7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5m
b1N0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwg
b3AsIGV4dHJhSW5mby5jX3N0cigpKTsKICAgICB9Ci0gICAgZWxzZSB7CisgICAgZWxzZQorICAg
IHsKICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICBl
eHRyYUluZm9TdHJlYW0gPDwgIigiIDw8IG1lc3NhZ2UgPDwgIikiOwogICAgICAgICBzdGQ6OnN0
cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7CkBAIC0zNzIsNyArMzk0LDcg
QEAKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQ
YXJzZUNvbnRleHQ6OmNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQqIG5vZGUpCitib29sIFRQ
YXJzZUNvbnRleHQ6OmNvbnN0RXJyb3JDaGVjayhUSW50ZXJtVHlwZWQgKm5vZGUpCiB7CiAgICAg
aWYgKG5vZGUtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0zODgsNyArNDEwLDcgQEAKIC8vCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHdhcyBh
biBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmludGVnZXJFcnJvckNoZWNrKFRJbnRl
cm1UeXBlZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNvbnRleHQ6Omlu
dGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBlZCAqbm9kZSwgY29uc3QgY2hhciAqdG9rZW4pCiB7
CiAgICAgaWYgKG5vZGUtPmlzU2NhbGFySW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTQwNCw3ICs0MjYsNyBAQAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgd2FzIGFuIGVycm9y
LgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6Z2xvYmFsRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pCitib29sIFRQYXJzZUNv
bnRleHQ6Omdsb2JhbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgYm9vbCBnbG9i
YWwsIGNvbnN0IGNoYXIgKnRva2VuKQogewogICAgIGlmIChnbG9iYWwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTQyMywzMCArNDQ1LDQwIEBACiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZXJlIHdhcyBhbiBlcnJvci4KIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OnJlc2VydmVkRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBpZGVudGlmaWVyKQor
Ym9vbCBUUGFyc2VDb250ZXh0OjpyZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcikKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hh
ciogcmVzZXJ2ZWRFcnJNc2cgPSAicmVzZXJ2ZWQgYnVpbHQtaW4gbmFtZSI7Ci0gICAgaWYgKCFz
eW1ib2xUYWJsZS5hdEJ1aWx0SW5MZXZlbCgpKSB7Ci0gICAgICAgIGlmIChpZGVudGlmaWVyLmNv
bXBhcmUoMCwgMywgImdsXyIpID09IDApIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqcmVzZXJ2
ZWRFcnJNc2cgPSAicmVzZXJ2ZWQgYnVpbHQtaW4gbmFtZSI7CisgICAgaWYgKCFzeW1ib2xUYWJs
ZS5hdEJ1aWx0SW5MZXZlbCgpKQorICAgIHsKKyAgICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFy
ZSgwLCAzLCAiZ2xfIikgPT0gMCkKKyAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobGluZSwg
cmVzZXJ2ZWRFcnJNc2csICJnbF8iKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChJc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNwZWMpKSB7Ci0gICAgICAg
ICAgICBpZiAoaWRlbnRpZmllci5jb21wYXJlKDAsIDYsICJ3ZWJnbF8iKSA9PSAwKSB7CisgICAg
ICAgIGlmIChJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgwLCA2LCAid2ViZ2xfIikgPT0gMCkKKyAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCByZXNlcnZlZEVyck1zZywgIndl
YmdsXyIpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgwLCA3LCAiX3dlYmdsXyIpID09IDApIHsK
KyAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUoMCwgNywgIl93ZWJnbF8iKSA9PSAw
KQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlc2VydmVkRXJy
TXNnLCAiX3dlYmdsXyIpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHNoYWRlclNwZWMgPT0gU0hfQ1NTX1NIQURFUlNfU1BFQyAm
JiBpZGVudGlmaWVyLmNvbXBhcmUoMCwgNCwgImNzc18iKSA9PSAwKSB7CisgICAgICAgICAgICBp
ZiAobVNoYWRlclNwZWMgPT0gU0hfQ1NTX1NIQURFUlNfU1BFQyAmJiBpZGVudGlmaWVyLmNvbXBh
cmUoMCwgNCwgImNzc18iKSA9PSAwKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVy
cm9yKGxpbmUsIHJlc2VydmVkRXJyTXNnLCAiY3NzXyIpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChpZGVudGlmaWVy
LmZpbmQoIl9fIikgIT0gVFN0cmluZzo6bnBvcykgewotICAgICAgICAgICAgZXJyb3IobGluZSwg
ImlkZW50aWZpZXJzIGNvbnRhaW5pbmcgdHdvIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzIChfXykg
YXJlIHJlc2VydmVkIGFzIHBvc3NpYmxlIGZ1dHVyZSBrZXl3b3JkcyIsIGlkZW50aWZpZXIuY19z
dHIoKSk7CisgICAgICAgIGlmIChpZGVudGlmaWVyLmZpbmQoIl9fIikgIT0gVFN0cmluZzo6bnBv
cykKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwKKyAgICAgICAgICAgICAgICAg
ICJpZGVudGlmaWVycyBjb250YWluaW5nIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyAoX18p
IGFyZSByZXNlcnZlZCBhcyAiCisgICAgICAgICAgICAgICAgICAicG9zc2libGUgZnV0dXJlIGtl
eXdvcmRzIiwKKyAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIuY19zdHIoKSk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQ2MSwxOSArNDkzLDMwIEBA
CiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiBjb25zdHJ1Y3Rp
b24uCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0Ojpjb25zdHJ1Y3RvckVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVEludGVybU5vZGUqIG5vZGUsIFRGdW5jdGlvbiYgZnVuY3Rpb24s
IFRPcGVyYXRvciBvcCwgVFR5cGUqIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNvbnN0cnVj
dG9yRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmFyZ3VtZW50c05vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gJmZ1bmN0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgKnR5cGUp
CiB7CiAgICAgKnR5cGUgPSBmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCk7CiAKICAgICBib29sIGNv
bnN0cnVjdGluZ01hdHJpeCA9IGZhbHNlOwotICAgIHN3aXRjaChvcCkgewotICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0MjoKLSAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6Ci0gICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQ0OgotICAgICAgICBjb25zdHJ1Y3RpbmdNYXRyaXggPSB0cnVlOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OiAKLSAgICAgICAgYnJlYWs7CisgICAgc3dpdGNoIChvcCkK
KyAgICB7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKKyAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQyeDM6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mng0OgorICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQz
OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQ0eDI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgzOgorICAgICAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDQ6CisgICAgICAgICAgICBjb25zdHJ1Y3RpbmdNYXRyaXggPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICAvLwpAQCAtNDgyLDE2ICs1MjUsMTcgQEAKICAgICAvLyBhZ2Fp
biwgdGhlcmUgaXMgYW4gZXh0cmEgYXJndW1lbnQsIHNvICdvdmVyZnVsbCcgd2lsbCBiZWNvbWUg
dHJ1ZS4KICAgICAvLwogCi0gICAgc2l6ZV90IHNpemUgPSAwOwotICAgIGJvb2wgY29uc3RUeXBl
ID0gdHJ1ZTsKLSAgICBib29sIGZ1bGwgPSBmYWxzZTsKLSAgICBib29sIG92ZXJGdWxsID0gZmFs
c2U7CisgICAgc2l6ZV90IHNpemUgICAgICAgICA9IDA7CisgICAgYm9vbCBjb25zdFR5cGUgICAg
ICA9IHRydWU7CisgICAgYm9vbCBmdWxsICAgICAgICAgICA9IGZhbHNlOworICAgIGJvb2wgb3Zl
ckZ1bGwgICAgICAgPSBmYWxzZTsKICAgICBib29sIG1hdHJpeEluTWF0cml4ID0gZmFsc2U7CiAg
ICAgYm9vbCBhcnJheUFyZyA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVu
Y3Rpb24uZ2V0UGFyYW1Db3VudCgpOyArK2kpIHsKLSAgICAgICAgY29uc3QgVFBhcmFtZXRlciYg
cGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3QgVENv
bnN0UGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwogICAgICAgICBzaXpl
ICs9IHBhcmFtLnR5cGUtPmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgCisKICAgICAgICAgaWYg
KGNvbnN0cnVjdGluZ01hdHJpeCAmJiBwYXJhbS50eXBlLT5pc01hdHJpeCgpKQogICAgICAgICAg
ICAgbWF0cml4SW5NYXRyaXggPSB0cnVlOwogICAgICAgICBpZiAoZnVsbCkKQEAgLTUwMyw3ICs1
NDcsNyBAQAogICAgICAgICBpZiAocGFyYW0udHlwZS0+aXNBcnJheSgpKQogICAgICAgICAgICAg
YXJyYXlBcmcgPSB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChjb25zdFR5cGUpCiAgICAg
ICAgIHR5cGUtPnNldFF1YWxpZmllcihFdnFDb25zdCk7CiAKQEAgLTUyMCw1OCArNTY0LDgxIEBA
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoYXJyYXlBcmcgJiYgb3AgIT0gRU9wQ29uc3Ry
dWN0U3RydWN0KSB7CisgICAgaWYgKGFycmF5QXJnICYmIG9wICE9IEVPcENvbnN0cnVjdFN0cnVj
dCkKKyAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RpbmcgZnJvbSBhIG5vbi1k
ZXJlZmVyZW5jZWQgYXJyYXkiLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKG1hdHJpeEluTWF0cml4ICYmICF0eXBlLT5pc0FycmF5KCkpIHsK
LSAgICAgICAgaWYgKGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSAhPSAxKSB7Ci0gICAgICAgICAg
ZXJyb3IobGluZSwgImNvbnN0cnVjdGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9ubHkgdGFr
ZSBvbmUgYXJndW1lbnQiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAobWF0cml4SW5NYXRyaXggJiYgIXR5cGUtPmlzQXJyYXkoKSkKKyAgICB7CisgICAg
ICAgIGlmIChmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkgIT0gMSkKKyAgICAgICAgeworICAgICAg
ICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVjdGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9u
bHkgdGFrZSBvbmUgYXJndW1lbnQiLAorICAgICAgICAgICAgICAgICAgImNvbnN0cnVjdG9yIik7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChv
dmVyRnVsbCkgeworICAgIGlmIChvdmVyRnVsbCkKKyAgICB7CiAgICAgICAgIGVycm9yKGxpbmUs
ICJ0b28gbWFueSBhcmd1bWVudHMiLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQotICAgIAotICAgIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgIXR5
cGUtPmlzQXJyYXkoKSAmJiB0eXBlLT5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpICE9IGZ1
bmN0aW9uLmdldFBhcmFtQ291bnQoKSkgewotICAgICAgICBlcnJvcihsaW5lLCAiTnVtYmVyIG9m
IGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzdHJ1
Y3R1cmUgZmllbGRzIiwgImNvbnN0cnVjdG9yIik7CisKKyAgICBpZiAob3AgPT0gRU9wQ29uc3Ry
dWN0U3RydWN0ICYmICF0eXBlLT5pc0FycmF5KCkgJiYKKyAgICAgICAgdHlwZS0+Z2V0U3RydWN0
KCktPmZpZWxkcygpLnNpemUoKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpCisgICAgewor
ICAgICAgICBlcnJvcihsaW5lLAorICAgICAgICAgICAgICAiTnVtYmVyIG9mIGNvbnN0cnVjdG9y
IHBhcmFtZXRlcnMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzdHJ1Y3R1cmUgZmllbGRz
IiwKKyAgICAgICAgICAgICAgImNvbnN0cnVjdG9yIik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmICghdHlwZS0+aXNNYXRyaXgoKSB8fCAhbWF0cml4SW5NYXRyaXgpIHsK
KyAgICBpZiAoIXR5cGUtPmlzTWF0cml4KCkgfHwgIW1hdHJpeEluTWF0cml4KQorICAgIHsKICAg
ICAgICAgaWYgKChvcCAhPSBFT3BDb25zdHJ1Y3RTdHJ1Y3QgJiYgc2l6ZSAhPSAxICYmIHNpemUg
PCB0eXBlLT5nZXRPYmplY3RTaXplKCkpIHx8Ci0gICAgICAgICAgICAob3AgPT0gRU9wQ29uc3Ry
dWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXplKCkpKSB7CisgICAgICAgICAg
ICAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIHNpemUgPCB0eXBlLT5nZXRPYmplY3RTaXpl
KCkpKQorICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsaW5lLCAibm90IGVub3VnaCBkYXRh
IHByb3ZpZGVkIGZvciBjb25zdHJ1Y3Rpb24iLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgVEludGVybVR5cGVkICp0eXBl
ZCA9IG5vZGUgPyBub2RlLT5nZXRBc1R5cGVkKCkgOiAwOwotICAgIGlmICh0eXBlZCA9PSAwKSB7
Ci0gICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3RvciBhcmd1bWVudCBkb2VzIG5vdCBoYXZl
IGEgdHlwZSIsICJjb25zdHJ1Y3RvciIpOworICAgIGlmIChhcmd1bWVudHNOb2RlID09IG51bGxw
dHIpCisgICAgeworICAgICAgICBlcnJvcihsaW5lLCAiY29uc3RydWN0b3IgZG9lcyBub3QgaGF2
ZSBhbnkgYXJndW1lbnRzIiwgImNvbnN0cnVjdG9yIik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBpZiAob3AgIT0gRU9wQ29uc3RydWN0U3RydWN0ICYmIElzU2FtcGxlcih0eXBl
ZC0+Z2V0QmFzaWNUeXBlKCkpKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgY29udmVy
dCBhIHNhbXBsZXIiLCAiY29uc3RydWN0b3IiKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBUSW50ZXJtQWdncmVnYXRlICphcmd1bWVudHNBZ2cgPSBhcmd1bWVudHNOb2RlLT5nZXRBc0Fn
Z3JlZ2F0ZSgpOworICAgIGZvciAoVEludGVybU5vZGUgKiZhcmdOb2RlIDogKmFyZ3VtZW50c0Fn
Zy0+Z2V0U2VxdWVuY2UoKSkKKyAgICB7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqYXJnVHlwZWQg
PSBhcmdOb2RlLT5nZXRBc1R5cGVkKCk7CisgICAgICAgIEFTU0VSVChhcmdUeXBlZCAhPSBudWxs
cHRyKTsKKyAgICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBJc1NhbXBsZXIo
YXJnVHlwZWQtPmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3Io
bGluZSwgImNhbm5vdCBjb252ZXJ0IGEgc2FtcGxlciIsICJjb25zdHJ1Y3RvciIpOworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFyZ1R5cGVkLT5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRWb2lkKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsaW5l
LCAiY2Fubm90IGNvbnZlcnQgYSB2b2lkIiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAodHlwZWQtPmdldEJhc2ljVHlw
ZSgpID09IEVidFZvaWQpIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGEg
dm9pZCIsICJjb25zdHJ1Y3RvciIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiBh
IHZvaWQgdmFyaWFibGUgaGFzIGJlZW4gZGVjbGFyZWQgYW5kIHJhaXNlIGFuIGVycm9yIG1lc3Nh
Z2UgZm9yIHN1Y2ggYSBjYXNlCisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgYSB2
b2lkIHZhcmlhYmxlIGhhcyBiZWVuIGRlY2xhcmVkIGFuZCByYWlzZSBhbiBlcnJvciBtZXNzYWdl
IGZvcgorLy8gc3VjaCBhIGNhc2UKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBl
cnJvcgogLy8KLWJvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwgY29uc3QgVEJhc2ljVHlwZSAm
dHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6dm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VEJhc2ljVHlwZSAmdHlwZSkKIHsKICAgICBpZiAodHlwZSA9PSBFYnRWb2lkKQogICAgIHsKQEAg
LTU4Miw0NSArNjQ5LDU1IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyBUaGlzIGZ1bmN0
aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUgKGZvciB0aGUgZXhwcmVzc2lvbikgY29udGFp
bnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9uIG9yIG5vdAorLy8gVGhpcyBmdW5jdGlvbiBj
aGVja3MgdG8gc2VlIGlmIHRoZSBub2RlIChmb3IgdGhlIGV4cHJlc3Npb24pIGNvbnRhaW5zIGEg
c2NhbGFyIGJvb2xlYW4gZXhwcmVzc2lvbgorLy8gb3Igbm90CiAvLwogLy8gcmV0dXJucyB0cnVl
IGluIGNhc2Ugb2YgYW4gZXJyb3IKIC8vCi1ib29sIFRQYXJzZUNvbnRleHQ6OmJvb2xFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRJbnRlcm1UeXBlZCogdHlwZSkKK2Jv
b2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwg
Y29uc3QgVEludGVybVR5cGVkICp0eXBlKQogewotICAgIGlmICh0eXBlLT5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRCb29sIHx8IHR5cGUtPmlzQXJyYXkoKSB8fCB0eXBlLT5pc01hdHJpeCgpIHx8IHR5
cGUtPmlzVmVjdG9yKCkpIHsKKyAgICBpZiAodHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9v
bCB8fCB0eXBlLT5pc0FycmF5KCkgfHwgdHlwZS0+aXNNYXRyaXgoKSB8fCB0eXBlLT5pc1ZlY3Rv
cigpKQorICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBl
Y3RlZCIsICIiKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSAKKyAgICB9CiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLS8vIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRvIHNlZSBpZiB0aGUg
bm9kZSAoZm9yIHRoZSBleHByZXNzaW9uKSBjb250YWlucyBhIHNjYWxhciBib29sZWFuIGV4cHJl
c3Npb24gb3Igbm90CisvLyBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5vZGUg
KGZvciB0aGUgZXhwcmVzc2lvbikgY29udGFpbnMgYSBzY2FsYXIgYm9vbGVhbiBleHByZXNzaW9u
CisvLyBvciBub3QKIC8vCiAvLyByZXR1cm5zIHRydWUgaW4gY2FzZSBvZiBhbiBlcnJvcgogLy8K
LWJvb2wgVFBhcnNlQ29udGV4dDo6Ym9vbEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGlu
ZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpib29sRXJy
b3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUp
CiB7Ci0gICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0Qm9vbCB8fCBwVHlwZS5pc0FnZ3JlZ2F0ZSgp
KSB7CisgICAgaWYgKHBUeXBlLnR5cGUgIT0gRWJ0Qm9vbCB8fCBwVHlwZS5pc0FnZ3JlZ2F0ZSgp
KQorICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImJvb2xlYW4gZXhwcmVzc2lvbiBleHBlY3Rl
ZCIsICIiKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSAKKyAgICB9CiAKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6c2FtcGxlckVycm9yQ2hlY2soY29u
c3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFB1YmxpY1R5cGUmIHBUeXBlLCBjb25zdCBjaGFy
KiByZWFzb24pCitib29sIFRQYXJzZUNvbnRleHQ6OnNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRQdWJsaWNUeXBlICZwVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqcmVhc29uKQogewotICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0
cnVjdCkgewotICAgICAgICBpZiAoY29udGFpbnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkgewor
ICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0cnVjdCkKKyAgICB7CisgICAgICAgIGlmIChjb250
YWluc1NhbXBsZXIoKnBUeXBlLnVzZXJEZWYpKQorICAgICAgICB7CiAgICAgICAgICAgICBlcnJv
cihsaW5lLCByZWFzb24sIGdldEJhc2ljU3RyaW5nKHBUeXBlLnR5cGUpLCAiKHN0cnVjdHVyZSBj
b250YWlucyBhIHNhbXBsZXIpIik7Ci0gICAgICAgIAorCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBl
bHNlIGlmIChJc1NhbXBsZXIocFR5cGUudHlwZSkpIHsKKyAgICB9CisgICAgZWxzZSBpZiAoSXNT
YW1wbGVyKHBUeXBlLnR5cGUpKQorICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLCBn
ZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02
MjksMjEgKzcwNiwyNSBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250
ZXh0Ojpsb2NhdGlvbkRlY2xhcmF0b3JMaXN0Q2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
Y29uc3QgVFB1YmxpY1R5cGUgJnBUeXBlKQorYm9vbCBUUGFyc2VDb250ZXh0Ojpsb2NhdGlvbkRl
Y2xhcmF0b3JMaXN0Q2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1YmxpY1R5
cGUgJnBUeXBlKQogewogICAgIGlmIChwVHlwZS5sYXlvdXRRdWFsaWZpZXIubG9jYXRpb24gIT0g
LTEpCiAgICAgewotICAgICAgICBlcnJvcihsaW5lLCAibG9jYXRpb24gbXVzdCBvbmx5IGJlIHNw
ZWNpZmllZCBmb3IgYSBzaW5nbGUgaW5wdXQgb3Igb3V0cHV0IHZhcmlhYmxlIiwgImxvY2F0aW9u
Iik7CisgICAgICAgIGVycm9yKGxpbmUsICJsb2NhdGlvbiBtdXN0IG9ubHkgYmUgc3BlY2lmaWVk
IGZvciBhIHNpbmdsZSBpbnB1dCBvciBvdXRwdXQgdmFyaWFibGUiLAorICAgICAgICAgICAgICAi
bG9jYXRpb24iKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnBhcmFtZXRlclNhbXBsZXJFcnJvckNoZWNr
KGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBjb25zdCBUVHlw
ZSYgdHlwZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1ldGVyU2FtcGxlckVycm9yQ2hlY2so
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKQogewotICAgIGlm
ICgocXVhbGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5PdXQpICYmIAotICAg
ICAgICAgICAgIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0ICYmIElzU2FtcGxlcih0
eXBlLmdldEJhc2ljVHlwZSgpKSkgeworICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCB8fCBx
dWFsaWZpZXIgPT0gRXZxSW5PdXQpICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0
ICYmCisgICAgICAgIElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CiAgICAg
ICAgIGVycm9yKGxpbmUsICJzYW1wbGVycyBjYW5ub3QgYmUgb3V0cHV0IHBhcmFtZXRlcnMiLCB0
eXBlLmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02
NTEsMTQgKzczMiwxNiBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250
ZXh0Ojpjb250YWluc1NhbXBsZXIoVFR5cGUmIHR5cGUpCitib29sIFRQYXJzZUNvbnRleHQ6OmNv
bnRhaW5zU2FtcGxlcihjb25zdCBUVHlwZSAmdHlwZSkKIHsKICAgICBpZiAoSXNTYW1wbGVyKHR5
cGUuZ2V0QmFzaWNUeXBlKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICh0eXBl
LmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCB8fCB0eXBlLmlzSW50ZXJmYWNlQmxvY2soKSkg
ewotICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5m
aWVsZHMoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6
ZSgpOyArK2kpIHsKKyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QgfHwg
dHlwZS5pc0ludGVyZmFjZUJsb2NrKCkpCisgICAgeworICAgICAgICBjb25zdCBURmllbGRMaXN0
ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChjb250YWluc1NhbXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtNjcyLDExICs3NTUsMTQgQEAKIC8v
CiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogLy8KLWJvb2wgVFBhcnNl
Q29udGV4dDo6YXJyYXlTaXplRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50
ZXJtVHlwZWQqIGV4cHIsIGludCYgc2l6ZSkKK2Jvb2wgVFBhcnNlQ29udGV4dDo6YXJyYXlTaXpl
RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBUSW50ZXJtVHlwZWQgKmV4cHIsIGlu
dCAmc2l6ZSkKIHsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiogY29uc3RhbnQgPSBleHByLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqY29uc3RhbnQg
PSBleHByLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKIAotICAgIGlmIChjb25zdGFudCA9PSBudWxs
cHRyIHx8ICFjb25zdGFudC0+aXNTY2FsYXJJbnQoKSkKKyAgICAvLyBUT0RPKG9ldHVhaG9AbnZp
ZGlhLmNvbSk6IEdldCByaWQgb2YgdGhlIGNvbnN0YW50ID09IG51bGxwdHIgY2hlY2sgaGVyZSBv
bmNlIGFsbCBjb25zdGFudAorICAgIC8vIGV4cHJlc3Npb25zIGNhbiBiZSBmb2xkZWQuIFJpZ2h0
IG5vdyB3ZSBkb24ndCBhbGxvdyBjb25zdGFudCBleHByZXNzaW9ucyB0aGF0IEFOR0xFIGNhbid0
CisgICAgLy8gZm9sZCBhcyBhcnJheSBzaXplLgorICAgIGlmIChleHByLT5nZXRRdWFsaWZpZXIo
KSAhPSBFdnFDb25zdCB8fCBjb25zdGFudCA9PSBudWxscHRyIHx8ICFjb25zdGFudC0+aXNTY2Fs
YXJJbnQoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBzaXplIG11c3QgYmUg
YSBjb25zdGFudCBpbnRlZ2VyIGV4cHJlc3Npb24iLCAiIik7CiAgICAgICAgIHNpemUgPSAxOwpA
QCAtNjg4LDcgKzc3NCw3IEBACiAgICAgaWYgKGNvbnN0YW50LT5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRVSW50KQogICAgIHsKICAgICAgICAgdW5zaWduZWRTaXplID0gY29uc3RhbnQtPmdldFVDb25z
dCgwKTsKLSAgICAgICAgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4odW5zaWduZWRTaXplKTsKKyAg
ICAgICAgc2l6ZSAgICAgICAgID0gc3RhdGljX2Nhc3Q8aW50Pih1bnNpZ25lZFNpemUpOwogICAg
IH0KICAgICBlbHNlCiAgICAgewpAQCAtNzM0LDkgKzgyMCwxMCBAQAogYm9vbCBUUGFyc2VDb250
ZXh0OjphcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29u
c3QgVFB1YmxpY1R5cGUgJnR5cGUpCiB7CiAgICAgaWYgKCh0eXBlLnF1YWxpZmllciA9PSBFdnFB
dHRyaWJ1dGUpIHx8ICh0eXBlLnF1YWxpZmllciA9PSBFdnFWZXJ0ZXhJbikgfHwKLSAgICAgICAg
KHR5cGUucXVhbGlmaWVyID09IEV2cUNvbnN0ICYmIHNoYWRlclZlcnNpb24gPCAzMDApKQorICAg
ICAgICAodHlwZS5xdWFsaWZpZXIgPT0gRXZxQ29uc3QgJiYgbVNoYWRlclZlcnNpb24gPCAzMDAp
KQogICAgIHsKLSAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBkZWNsYXJlIGFycmF5cyBvZiB0
aGlzIHF1YWxpZmllciIsIFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7
CisgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgdGhpcyBxdWFs
aWZpZXIiLAorICAgICAgICAgICAgICBUVHlwZSh0eXBlKS5nZXRDb21wbGV0ZVN0cmluZygpLmNf
c3RyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTc0OCwxNSArODM1LDI1
IEBACiAvLwogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgogLy8KLWJvb2wg
VFBhcnNlQ29udGV4dDo6YXJyYXlUeXBlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5l
LCBUUHVibGljVHlwZSB0eXBlKQorYm9vbCBUUGFyc2VDb250ZXh0OjphcnJheVR5cGVFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlKQogewog
ICAgIC8vCiAgICAgLy8gQ2FuIHRoZSB0eXBlIGJlIGFuIGFycmF5PwogICAgIC8vCi0gICAgaWYg
KHR5cGUuYXJyYXkpIHsKKyAgICBpZiAodHlwZS5hcnJheSkKKyAgICB7CiAgICAgICAgIGVycm9y
KGxpbmUsICJjYW5ub3QgZGVjbGFyZSBhcnJheXMgb2YgYXJyYXlzIiwgVFR5cGUodHlwZSkuZ2V0
Q29tcGxldGVTdHJpbmcoKS5jX3N0cigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQor
ICAgIC8vIEluIEVTU0wxLjAwIHNoYWRlcnMsIHN0cnVjdHMgY2Fubm90IGJlIHZhcnlpbmcgKHNl
Y3Rpb24gNC4zLjUpLiBUaGlzIGlzIGNoZWNrZWQgZWxzZXdoZXJlLgorICAgIC8vIEluIEVTU0wz
LjAwIHNoYWRlcnMsIHN0cnVjdCBpbnB1dHMvb3V0cHV0cyBhcmUgYWxsb3dlZCBidXQgbm90IGFy
cmF5cyBvZiBzdHJ1Y3RzIChzZWN0aW9uCisgICAgLy8gNC4zLjQpLgorICAgIGlmIChtU2hhZGVy
VmVyc2lvbiA+PSAzMDAgJiYgdHlwZS50eXBlID09IEVidFN0cnVjdCAmJiBzaDo6SXNWYXJ5aW5n
KHR5cGUucXVhbGlmaWVyKSkKKyAgICB7CisgICAgICAgIGVycm9yKGxpbmUsICJjYW5ub3QgZGVj
bGFyZSBhcnJheXMgb2Ygc3RydWN0cyBvZiB0aGlzIHF1YWxpZmllciIsCisgICAgICAgICAgICAg
IFRUeXBlKHR5cGUpLmdldENvbXBsZXRlU3RyaW5nKCkuY19zdHIoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTc2Niw3ICs4NjMsOSBA
QAogLy8KIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAvLwotYm9vbCBU
UGFyc2VDb250ZXh0Ojpub25Jbml0RXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBj
b25zdCBUU3RyaW5nICZpZGVudGlmaWVyLCBUUHVibGljVHlwZSAqdHlwZSkKK2Jvb2wgVFBhcnNl
Q29udGV4dDo6bm9uSW5pdEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFB1YmxpY1R5cGUgKnR5
cGUpCiB7CiAgICAgQVNTRVJUKHR5cGUgIT0gbnVsbHB0cik7CiAgICAgaWYgKHR5cGUtPnF1YWxp
ZmllciA9PSBFdnFDb25zdCkKQEAgLTc3Niw5ICs4NzUsMTIgQEAKIAogICAgICAgICAvLyBHZW5l
cmF0ZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyBmb3IgRVNTTDEuCiAgICAgICAgIC8vIElu
IEVTU0wzIGFycmF5cyBhbmQgc3RydWN0dXJlcyBjb250YWluaW5nIGFycmF5cyBjYW4gYmUgY29u
c3RhbnQuCi0gICAgICAgIGlmIChzaGFkZXJWZXJzaW9uIDwgMzAwICYmIHR5cGUtPmlzU3RydWN0
dXJlQ29udGFpbmluZ0FycmF5cygpKQorICAgICAgICBpZiAobVNoYWRlclZlcnNpb24gPCAzMDAg
JiYgdHlwZS0+aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVycm9yKGxpbmUsICJzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYXJyYXlzIG1heSBub3Qg
YmUgZGVjbGFyZWQgY29uc3RhbnQgc2luY2UgdGhleSBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQiLCBp
ZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICAgICAgZXJyb3IobGluZSwKKyAgICAgICAgICAg
ICAgICAgICJzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgYXJyYXlzIG1heSBub3QgYmUgZGVjbGFyZWQg
Y29uc3RhbnQgc2luY2UgdGhleSBjYW5ub3QgYmUgIgorICAgICAgICAgICAgICAgICAgImluaXRp
YWxpemVkIiwKKyAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIuY19zdHIoKSk7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC04MDAsNyArOTAyLDkgQEAKIC8vCiAvLyBS
ZXR1cm5zIHRydWUgaWYgZGVjbGFyaW5nIHRoZSB2YXJpYWJsZSBzdWNjZWVkZWQuCiAvLwotYm9v
bCBUUGFyc2VDb250ZXh0OjpkZWNsYXJlVmFyaWFibGUoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwg
Y29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwgY29uc3QgVFR5cGUgJnR5cGUsCitib29sIFRQYXJz
ZUNvbnRleHQ6OmRlY2xhcmVWYXJpYWJsZShjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZhcmlhYmxlICoqdmFyaWFibGUp
CiB7CiAgICAgQVNTRVJUKCgqdmFyaWFibGUpID09IG51bGxwdHIpOwpAQCAtODEwLDE4ICs5MTQs
MTkgQEAKICAgICAvLyBnbF9MYXN0RnJhZ0RhdGEgbWF5IGJlIHJlZGVjbGFyZWQgd2l0aCBhIG5l
dyBwcmVjaXNpb24gcXVhbGlmaWVyCiAgICAgaWYgKHR5cGUuaXNBcnJheSgpICYmIGlkZW50aWZp
ZXIuY29tcGFyZSgwLCAxNSwgImdsX0xhc3RGcmFnRGF0YSIpID09IDApCiAgICAgewotICAgICAg
ICBjb25zdCBUVmFyaWFibGUgKm1heERyYXdCdWZmZXJzID0KLSAgICAgICAgICAgIHN0YXRpY19j
YXN0PGNvbnN0IFRWYXJpYWJsZSAqPihzeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4RHJh
d0J1ZmZlcnMiLCBzaGFkZXJWZXJzaW9uKSk7CisgICAgICAgIGNvbnN0IFRWYXJpYWJsZSAqbWF4
RHJhd0J1ZmZlcnMgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCisgICAgICAgICAg
ICBzeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4RHJhd0J1ZmZlcnMiLCBtU2hhZGVyVmVy
c2lvbikpOwogICAgICAgICBpZiAodHlwZS5nZXRBcnJheVNpemUoKSA9PSBtYXhEcmF3QnVmZmVy
cy0+Z2V0Q29uc3RQb2ludGVyKCktPmdldElDb25zdCgpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoVFN5bWJvbCAqYnVpbHRJblN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKGlk
ZW50aWZpZXIsIHNoYWRlclZlcnNpb24pKQorICAgICAgICAgICAgaWYgKFRTeW1ib2wgKmJ1aWx0
SW5TeW1ib2wgPSBzeW1ib2xUYWJsZS5maW5kQnVpbHRJbihpZGVudGlmaWVyLCBtU2hhZGVyVmVy
c2lvbikpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbmVlZHNSZXNlcnZlZEVycm9y
Q2hlY2sgPSBleHRlbnNpb25FcnJvckNoZWNrKGxpbmUsIGJ1aWx0SW5TeW1ib2wtPmdldEV4dGVu
c2lvbigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsICJyZWRlY2xhcmF0aW9uIG9mIGdsX0xhc3RGcmFn
RGF0YSB3aXRoIHNpemUgIT0gZ2xfTWF4RHJhd0J1ZmZlcnMiLCBpZGVudGlmaWVyLmNfc3RyKCkp
OworICAgICAgICAgICAgZXJyb3IobGluZSwgInJlZGVjbGFyYXRpb24gb2YgZ2xfTGFzdEZyYWdE
YXRhIHdpdGggc2l6ZSAhPSBnbF9NYXhEcmF3QnVmZmVycyIsCisgICAgICAgICAgICAgICAgICBp
ZGVudGlmaWVyLmNfc3RyKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgfQpAQCAtODMzLDggKzkzOCw3IEBACiAgICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJl
KCp2YXJpYWJsZSkpCiAgICAgewogICAgICAgICBlcnJvcihsaW5lLCAicmVkZWZpbml0aW9uIiwg
aWRlbnRpZmllci5jX3N0cigpKTsKLSAgICAgICAgZGVsZXRlICgqdmFyaWFibGUpOwotICAgICAg
ICAoKnZhcmlhYmxlKSA9IG51bGxwdHI7CisgICAgICAgICp2YXJpYWJsZSA9IG51bGxwdHI7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg0NCwxNCArOTQ4LDIwIEBACiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6cGFyYW1FcnJvckNoZWNrKGNv
bnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVyLCBUUXVhbGlmaWVyIHBh
cmFtUXVhbGlmaWVyLCBUVHlwZSogdHlwZSkKLXsgICAgCi0gICAgaWYgKHF1YWxpZmllciAhPSBF
dnFDb25zdCAmJiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7Citib29sIFRQYXJzZUNvbnRl
eHQ6OnBhcmFtRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHBhcmFtUXVhbGlmaWVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgKnR5cGUpCit7CisgICAgaWYg
KHF1YWxpZmllciAhPSBFdnFDb25zdCAmJiBxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KQorICAg
IHsKICAgICAgICAgZXJyb3IobGluZSwgInF1YWxpZmllciBub3QgYWxsb3dlZCBvbiBmdW5jdGlv
biBwYXJhbWV0ZXIiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAocXVhbGlmaWVyID09IEV2cUNvbnN0ICYmIHBhcmFt
UXVhbGlmaWVyICE9IEV2cUluKSB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJxdWFsaWZpZXIgbm90
IGFsbG93ZWQgd2l0aCAiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSwgZ2V0UXVhbGlm
aWVyU3RyaW5nKHBhcmFtUXVhbGlmaWVyKSk7CisgICAgaWYgKHF1YWxpZmllciA9PSBFdnFDb25z
dCAmJiBwYXJhbVF1YWxpZmllciAhPSBFdnFJbikKKyAgICB7CisgICAgICAgIGVycm9yKGxpbmUs
ICJxdWFsaWZpZXIgbm90IGFsbG93ZWQgd2l0aCAiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlm
aWVyKSwKKyAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHBhcmFtUXVhbGlmaWVyKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtODYzLDIwICs5NzMsMjMgQEAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6ZXh0ZW5zaW9uRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJiBleHRlbnNpb24pCiti
b29sIFRQYXJzZUNvbnRleHQ6OmV4dGVuc2lvbkVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFN0cmluZyAmZXh0ZW5zaW9uKQogewotICAgIGNvbnN0IFRFeHRlbnNpb25C
ZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBleHRlbnNpb25CZWhhdmlvcigpOworICAgIGNvbnN0IFRF
eHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IgICA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CiAg
ICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3Iu
ZmluZChleHRlbnNpb24uY19zdHIoKSk7Ci0gICAgaWYgKGl0ZXIgPT0gZXh0QmVoYXZpb3IuZW5k
KCkpIHsKKyAgICBpZiAoaXRlciA9PSBleHRCZWhhdmlvci5lbmQoKSkKKyAgICB7CiAgICAgICAg
IGVycm9yKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIG5vdCBzdXBw
b3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIC8vIEluIEdMU0wgRVMs
IGFuIGV4dGVuc2lvbidzIGRlZmF1bHQgYmVoYXZpb3IgaXMgImRpc2FibGUiLgotICAgIGlmIChp
dGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoVW5kZWZpbmVk
KSB7CisgICAgaWYgKGl0ZXItPnNlY29uZCA9PSBFQmhEaXNhYmxlIHx8IGl0ZXItPnNlY29uZCA9
PSBFQmhVbmRlZmluZWQpCisgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiZXh0ZW5zaW9uIiwg
ZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBkaXNhYmxlZCIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9Ci0gICAgaWYgKGl0ZXItPnNlY29uZCA9PSBFQmhXYXJuKSB7CisgICAgaWYgKGl0ZXIt
PnNlY29uZCA9PSBFQmhXYXJuKQorICAgIHsKICAgICAgICAgd2FybmluZyhsaW5lLCAiZXh0ZW5z
aW9uIiwgZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBiZWluZyB1c2VkIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CkBAIC04ODQsMzAgKzk5NywzMiBAQAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotLy8gVGhlc2UgY2hlY2tzIGFyZSBjb21tb24gZm9yIGFsbCBkZWNsYXJhdGlvbnMgc3Rh
cnRpbmcgYSBkZWNsYXJhdG9yIGxpc3QsIGFuZCBkZWNsYXJhdG9ycyB0aGF0IGZvbGxvdyBhbiBl
bXB0eQotLy8gZGVjbGFyYXRpb24uCisvLyBUaGVzZSBjaGVja3MgYXJlIGNvbW1vbiBmb3IgYWxs
IGRlY2xhcmF0aW9ucyBzdGFydGluZyBhIGRlY2xhcmF0b3IgbGlzdCwgYW5kIGRlY2xhcmF0b3Jz
IHRoYXQKKy8vIGZvbGxvdyBhbiBlbXB0eSBkZWNsYXJhdGlvbi4KIC8vCi1ib29sIFRQYXJzZUNv
bnRleHQ6OnNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhUUHVibGljVHlwZSAmcHVibGljVHlw
ZSwgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uKQorYm9vbCBUUGFyc2VDb250
ZXh0OjpzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2soY29uc3QgVFB1YmxpY1R5cGUgJnB1Ymxp
Y1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24pCiB7CiAgICAgc3dpdGNoIChwdWJs
aWNUeXBlLnF1YWxpZmllcikKICAgICB7Ci0gICAgICBjYXNlIEV2cVZhcnlpbmdJbjoKLSAgICAg
IGNhc2UgRXZxVmFyeWluZ091dDoKLSAgICAgIGNhc2UgRXZxQXR0cmlidXRlOgotICAgICAgY2Fz
ZSBFdnFWZXJ0ZXhJbjoKLSAgICAgIGNhc2UgRXZxRnJhZ21lbnRPdXQ6Ci0gICAgICAgIGlmIChw
dWJsaWNUeXBlLnR5cGUgPT0gRWJ0U3RydWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJv
cihpZGVudGlmaWVyTG9jYXRpb24sICJjYW5ub3QgYmUgdXNlZCB3aXRoIGEgc3RydWN0dXJlIiwK
LSAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyhwdWJsaWNUeXBlLnF1YWxpZmll
cikpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBF
dnFWYXJ5aW5nSW46CisgICAgICAgIGNhc2UgRXZxVmFyeWluZ091dDoKKyAgICAgICAgY2FzZSBF
dnFBdHRyaWJ1dGU6CisgICAgICAgIGNhc2UgRXZxVmVydGV4SW46CisgICAgICAgIGNhc2UgRXZx
RnJhZ21lbnRPdXQ6CisgICAgICAgICAgICBpZiAocHVibGljVHlwZS50eXBlID09IEVidFN0cnVj
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRp
b24sICJjYW5ub3QgYmUgdXNlZCB3aXRoIGEgc3RydWN0dXJlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocHVibGljVHlwZS5xdWFsaWZpZXIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgZGVmYXVsdDogYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAocHVibGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSAmJiBzYW1wbGVyRXJyb3JDaGVj
ayhpZGVudGlmaWVyTG9jYXRpb24sIHB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNhbXBsZXJzIG11c3Qg
YmUgdW5pZm9ybSIpKQorICAgIGlmIChwdWJsaWNUeXBlLnF1YWxpZmllciAhPSBFdnFVbmlmb3Jt
ICYmCisgICAgICAgIHNhbXBsZXJFcnJvckNoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGlj
VHlwZSwgInNhbXBsZXJzIG11c3QgYmUgdW5pZm9ybSIpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtOTE3LDE0ICsxMDMyLDE2IEBACiAKICAgICBpZiAobGF5b3V0UXVh
bGlmaWVyLm1hdHJpeFBhY2tpbmcgIT0gRW1wVW5zcGVjaWZpZWQpCiAgICAgewotICAgICAgICBl
cnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIiwgZ2V0TWF0cml4UGFj
a2luZ1N0cmluZyhsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZyksCisgICAgICAgIGVycm9y
KGlkZW50aWZpZXJMb2NhdGlvbiwgImxheW91dCBxdWFsaWZpZXIiLAorICAgICAgICAgICAgICBn
ZXRNYXRyaXhQYWNraW5nU3RyaW5nKGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nKSwKICAg
ICAgICAgICAgICAgIm9ubHkgdmFsaWQgZm9yIGludGVyZmFjZSBibG9ja3MiKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGxheW91dFF1YWxpZmllci5ibG9ja1N0b3Jh
Z2UgIT0gRWJzVW5zcGVjaWZpZWQpCiAgICAgewotICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9j
YXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIiwgZ2V0QmxvY2tTdG9yYWdlU3RyaW5nKGxheW91dFF1
YWxpZmllci5ibG9ja1N0b3JhZ2UpLAorICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24s
ICJsYXlvdXQgcXVhbGlmaWVyIiwKKyAgICAgICAgICAgICAgZ2V0QmxvY2tTdG9yYWdlU3RyaW5n
KGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpLAogICAgICAgICAgICAgICAib25seSB2YWxp
ZCBmb3IgaW50ZXJmYWNlIGJsb2NrcyIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC05MzgsMTggKzEwNTUsMjEgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVFBhcnNl
Q29udGV4dDo6bGF5b3V0TG9jYXRpb25FcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxvY2F0
aW9uLCBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpCitib29sIFRQYXJz
ZUNvbnRleHQ6OmxheW91dExvY2F0aW9uRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1YWxpZmllcikKIHsKICAgICBpZiAobGF5b3V0UXVh
bGlmaWVyLmxvY2F0aW9uICE9IC0xKQogICAgIHsKLSAgICAgICAgZXJyb3IobG9jYXRpb24sICJp
bnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IiwgImxvY2F0aW9uIiwgIm9ubHkgdmFsaWQgb24gcHJv
Z3JhbSBpbnB1dHMgYW5kIG91dHB1dHMiKTsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZh
bGlkIGxheW91dCBxdWFsaWZpZXI6IiwgImxvY2F0aW9uIiwKKyAgICAgICAgICAgICAgIm9ubHkg
dmFsaWQgb24gcHJvZ3JhbSBpbnB1dHMgYW5kIG91dHB1dHMiKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6
OmZ1bmN0aW9uQ2FsbExWYWx1ZUVycm9yQ2hlY2soY29uc3QgVEZ1bmN0aW9uICpmbkNhbmRpZGF0
ZSwgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlKQorYm9vbCBUUGFyc2VDb250ZXh0OjpmdW5j
dGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRGdW5jdGlvbiAqZm5DYW5kaWRhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqYWdncmVnYXRlKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm5DYW5k
aWRhdGUtPmdldFBhcmFtQ291bnQoKTsgKytpKQogICAgIHsKQEAgLTk2MCw3ICsxMDgwLDcgQEAK
ICAgICAgICAgICAgIGlmIChsVmFsdWVFcnJvckNoZWNrKG5vZGUtPmdldExpbmUoKSwgImFzc2ln
biIsIG5vZGUpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVycm9yKG5vZGUtPmdl
dExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IHZhbHVlIGNhbm5vdCBiZSBw
YXNzZWQgZm9yICdvdXQnIG9yICdpbm91dCcgcGFyYW1ldGVycy4iLCAiRXJyb3IiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgdmFsdWUgY2Fubm90IGJlIHBhc3NlZCBmb3IgJ291
dCcgb3IgJ2lub3V0JyBwYXJhbWV0ZXJzLiIsICJFcnJvciIpOwogICAgICAgICAgICAgICAgIHJl
Y292ZXIoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAg
LTk2OSw0MCArMTA4OSw0NyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VD
b250ZXh0OjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRlbnNpb24pCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OmVzM0ludmFyaWFudEVycm9yQ2hlY2soY29uc3QgVFF1YWxpZmllciBxdWFs
aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmaW52YXJpYW50TG9jYXRpb24pCiB7Ci0gICAgY29uc3QgVEV4dGVuc2lvbkJl
aGF2aW9yJiBleHRiZWhhdmlvciA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CisgICAgaWYgKCFzaDo6
SXNWYXJ5aW5nT3V0KHF1YWxpZmllcikgJiYgcXVhbGlmaWVyICE9IEV2cUZyYWdtZW50T3V0KQor
ICAgIHsKKyAgICAgICAgZXJyb3IoaW52YXJpYW50TG9jYXRpb24sICJPbmx5IG91dCB2YXJpYWJs
ZXMgY2FuIGJlIGludmFyaWFudC4iLCAiaW52YXJpYW50Iik7CisgICAgICAgIHJlY292ZXIoKTsK
KyAgICB9Cit9CisKK2Jvb2wgVFBhcnNlQ29udGV4dDo6c3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
Y2hhciAqZXh0ZW5zaW9uKQoreworICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0YmVo
YXZpb3IgICA9IGV4dGVuc2lvbkJlaGF2aW9yKCk7CiAgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpj
b25zdF9pdGVyYXRvciBpdGVyID0gZXh0YmVoYXZpb3IuZmluZChleHRlbnNpb24pOwogICAgIHJl
dHVybiAoaXRlciAhPSBleHRiZWhhdmlvci5lbmQoKSk7CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4
dDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbikgY29uc3QKK2Jvb2wg
VFBhcnNlQ29udGV4dDo6aXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikg
Y29uc3QKIHsKLSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGJlaGF2aW9yID0gZXh0
ZW5zaW9uQmVoYXZpb3IoKTsKLSAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBleHRiZWhhdmlvci5maW5kKGV4dGVuc2lvbik7Ci0KLSAgICBpZiAoaXRlciA9PSBl
eHRiZWhhdmlvci5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gKGl0ZXItPnNlY29uZCA9PSBFQmhFbmFibGUgfHwgaXRlci0+c2Vjb25kID09
IEVCaFJlcXVpcmUpOworICAgIHJldHVybiA6OklzRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb25C
ZWhhdmlvcigpLCBleHRlbnNpb24pOwogfQogCi12b2lkIFRQYXJzZUNvbnRleHQ6OmhhbmRsZUV4
dGVuc2lvbkRpcmVjdGl2ZShjb25zdCBUU291cmNlTG9jJiBsb2MsIGNvbnN0IGNoYXIqIGV4dE5h
bWUsIGNvbnN0IGNoYXIqIGJlaGF2aW9yKQordm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVFeHRl
bnNpb25EaXJlY3RpdmUoY29uc3QgVFNvdXJjZUxvYyAmbG9jLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0TmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJlaGF2aW9y
KQogewogICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7CiAgICAgc3JjTG9jLmZpbGUgPSBs
b2MuZmlyc3RfZmlsZTsKICAgICBzcmNMb2MubGluZSA9IGxvYy5maXJzdF9saW5lOwotICAgIGRp
cmVjdGl2ZUhhbmRsZXIuaGFuZGxlRXh0ZW5zaW9uKHNyY0xvYywgZXh0TmFtZSwgYmVoYXZpb3Ip
OworICAgIG1EaXJlY3RpdmVIYW5kbGVyLmhhbmRsZUV4dGVuc2lvbihzcmNMb2MsIGV4dE5hbWUs
IGJlaGF2aW9yKTsKIH0KIAotdm9pZCBUUGFyc2VDb250ZXh0OjpoYW5kbGVQcmFnbWFEaXJlY3Rp
dmUoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2
YWx1ZSwgYm9vbCBzdGRnbCkKK3ZvaWQgVFBhcnNlQ29udGV4dDo6aGFuZGxlUHJhZ21hRGlyZWN0
aXZlKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3RkZ2wpCiB7CiAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uIHNyY0xvYzsKICAgICBzcmNMb2MuZmlsZSA9IGxvYy5maXJzdF9maWxlOwogICAgIHNyY0xv
Yy5saW5lID0gbG9jLmZpcnN0X2xpbmU7Ci0gICAgZGlyZWN0aXZlSGFuZGxlci5oYW5kbGVQcmFn
bWEoc3JjTG9jLCBuYW1lLCB2YWx1ZSwgc3RkZ2wpOworICAgIG1EaXJlY3RpdmVIYW5kbGVyLmhh
bmRsZVByYWdtYShzcmNMb2MsIG5hbWUsIHZhbHVlLCBzdGRnbCk7CiB9CiAKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwpAQCAtMTAyOSwxNCArMTE1Niw0NiBAQAogICAgIH0KICAgICBlbHNlCiAg
ICAgewotICAgICAgICB2YXJpYWJsZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5
bWJvbCk7CisgICAgICAgIHZhcmlhYmxlID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlICo+
KHN5bWJvbCk7CiAKLSAgICAgICAgaWYgKHN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKHZhcmlhYmxl
LT5nZXROYW1lKCksIHNoYWRlclZlcnNpb24pICYmCisgICAgICAgIGlmIChzeW1ib2xUYWJsZS5m
aW5kQnVpbHRJbih2YXJpYWJsZS0+Z2V0TmFtZSgpLCBtU2hhZGVyVmVyc2lvbikgJiYKICAgICAg
ICAgICAgICF2YXJpYWJsZS0+Z2V0RXh0ZW5zaW9uKCkuZW1wdHkoKSAmJgogICAgICAgICAgICAg
ZXh0ZW5zaW9uRXJyb3JDaGVjayhsb2NhdGlvbiwgdmFyaWFibGUtPmdldEV4dGVuc2lvbigpKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CisKKyAgICAgICAg
Ly8gUmVqZWN0IHNoYWRlcnMgdXNpbmcgYm90aCBnbF9GcmFnRGF0YSBhbmQgZ2xfRnJhZ0NvbG9y
CisgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gdmFyaWFibGUtPmdldFR5cGUoKS5nZXRR
dWFsaWZpZXIoKTsKKyAgICAgICAgaWYgKHF1YWxpZmllciA9PSBFdnFGcmFnRGF0YSB8fCBxdWFs
aWZpZXIgPT0gRXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1Vc2VzRnJhZ0RhdGEgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHF1YWxp
ZmllciA9PSBFdnFGcmFnQ29sb3IgfHwgcXVhbGlmaWVyID09IEV2cVNlY29uZGFyeUZyYWdDb2xv
ckVYVCkKKyAgICAgICAgeworICAgICAgICAgICAgbVVzZXNGcmFnQ29sb3IgPSB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQg
fHwgcXVhbGlmaWVyID09IEV2cVNlY29uZGFyeUZyYWdDb2xvckVYVCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbVVzZXNTZWNvbmRhcnlPdXRwdXRzID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRoaXMgdmFsaWRhdGlvbiBpcyBub3QgcXVpdGUgY29ycmVjdCAtIGl0J3Mgb25seSBh
biBlcnJvciB0byB3cml0ZSB0bworICAgICAgICAvLyBib3RoIEZyYWdEYXRhIGFuZCBGcmFnQ29s
b3IuIEZvciBzaW1wbGljaXR5LCBhbmQgYmVjYXVzZSB1c2VycyBzaG91bGRuJ3QKKyAgICAgICAg
Ly8gYmUgcmV3YXJkZWQgZm9yIHJlYWRpbmcgZnJvbSB1bmRlZmluZWQgdmFyYWlibGVzLCByZXR1
cm4gYW4gZXJyb3IKKyAgICAgICAgLy8gaWYgdGhleSBhcmUgYm90aCByZWZlcmVuY2VkLCByYXRo
ZXIgdGhhbiBhc3NpZ25lZC4KKyAgICAgICAgaWYgKG1Vc2VzRnJhZ0RhdGEgJiYgbVVzZXNGcmFn
Q29sb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9yTWVzc2FnZSA9
ICJjYW5ub3QgdXNlIGJvdGggZ2xfRnJhZ0RhdGEgYW5kIGdsX0ZyYWdDb2xvciI7CisgICAgICAg
ICAgICBpZiAobVVzZXNTZWNvbmRhcnlPdXRwdXRzKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGVycm9yTWVzc2FnZSA9CisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgdXNlIGJv
dGggb3V0cHV0IHZhcmlhYmxlIHNldHMgKGdsX0ZyYWdEYXRhLCBnbF9TZWNvbmRhcnlGcmFnRGF0
YUVYVCkiCisgICAgICAgICAgICAgICAgICAgICIgYW5kIChnbF9GcmFnQ29sb3IsIGdsX1NlY29u
ZGFyeUZyYWdDb2xvckVYVCkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXJyb3IobG9j
YXRpb24sIGVycm9yTWVzc2FnZSwgbmFtZS0+Y19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVy
KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIXZhcmlhYmxlKQpAQCAtMTA1MCwzMiAr
MTIwOSw1NiBAQAogICAgIHJldHVybiB2YXJpYWJsZTsKIH0KIAorVEludGVybVR5cGVkICpUUGFy
c2VDb250ZXh0OjpwYXJzZVZhcmlhYmxlSWRlbnRpZmllcihjb25zdCBUU291cmNlTG9jICZsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN0cmluZyAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbCAqc3ltYm9sKQoreworICAgIGNvbnN0
IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBnZXROYW1lZFZhcmlhYmxlKGxvY2F0aW9uLCBuYW1lLCBz
eW1ib2wpOworCisgICAgaWYgKHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKSkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENv
bnN0UG9pbnRlcigpOworICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24oY29uc3RBcnJheSwgdmFyaWFibGUtPmdldFR5cGUoKSwgbG9jYXRpb24pOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgbG9jYXRpb24pOwor
ICAgIH0KK30KKwogLy8KIC8vIExvb2sgdXAgYSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzeW1ib2wg
dGFibGUsIGFuZCBtYWtlIHN1cmUgaXQgaXMgYSBmdW5jdGlvbi4KIC8vCiAvLyBSZXR1cm4gdGhl
IGZ1bmN0aW9uIHN5bWJvbCBpZiBmb3VuZCwgb3RoZXJ3aXNlIDAuCiAvLwotY29uc3QgVEZ1bmN0
aW9uKiBUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwg
VEZ1bmN0aW9uKiBjYWxsLCBpbnQgaW5wdXRTaGFkZXJWZXJzaW9uLCBib29sICpidWlsdEluKQor
Y29uc3QgVEZ1bmN0aW9uICpUUGFyc2VDb250ZXh0OjpmaW5kRnVuY3Rpb24oY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRGdW5jdGlvbiAqY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnB1dFNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sICpidWlsdEluKQogewogICAgIC8vIEZpcnN0IGZpbmQg
YnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0aGUgZnVuY3Rpb24gbmFtZSBoYXMg
YmVlbgogICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5hbWUgb3Igc3RydWN0IHR5cGVuYW1l
LgogICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgZm91bmQsIGNoZWNrIGZvciBvbmUgd2l0aCBhIG1h
dGNoaW5nIGFyZ3VtZW50IGxpc3QuCi0gICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9s
VGFibGUuZmluZChjYWxsLT5nZXROYW1lKCksIGlucHV0U2hhZGVyVmVyc2lvbiwgYnVpbHRJbik7
Ci0gICAgaWYgKHN5bWJvbCA9PSAwIHx8IHN5bWJvbC0+aXNGdW5jdGlvbigpKSB7CisgICAgY29u
c3QgVFN5bWJvbCAqc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChjYWxsLT5nZXROYW1lKCksIGlu
cHV0U2hhZGVyVmVyc2lvbiwgYnVpbHRJbik7CisgICAgaWYgKHN5bWJvbCA9PSAwIHx8IHN5bWJv
bC0+aXNGdW5jdGlvbigpKQorICAgIHsKICAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmlu
ZChjYWxsLT5nZXRNYW5nbGVkTmFtZSgpLCBpbnB1dFNoYWRlclZlcnNpb24sIGJ1aWx0SW4pOwog
ICAgIH0KIAotICAgIGlmIChzeW1ib2wgPT0gMCkgeworICAgIGlmIChzeW1ib2wgPT0gMCkKKyAg
ICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJubyBtYXRjaGluZyBvdmVybG9hZGVkIGZ1bmN0aW9u
IGZvdW5kIiwgY2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBpZiAoIXN5bWJvbC0+aXNGdW5jdGlvbigpKSB7CisgICAgaWYgKCFzeW1ib2wt
PmlzRnVuY3Rpb24oKSkKKyAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJmdW5jdGlvbiBuYW1l
IGV4cGVjdGVkIiwgY2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVEZ1bmN0aW9uKj4oc3ltYm9s
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVEZ1bmN0aW9uICo+KHN5bWJvbCk7CiB9
CiAKIC8vCkBAIC0xMDg0LDggKzEyNjcsMTEgQEAKIC8vCiAvLyBSZXR1cm5zIHRydWUgb24gZXJy
b3IsIGZhbHNlIGlmIG5vIGVycm9yCiAvLwotYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5p
dGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmll
ciwgVFB1YmxpY1R5cGUgJnBUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplciwgVEludGVybU5vZGUgKippbnRlcm1Ob2Rl
KQorYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKippbnRlcm1Ob2RlKQogewogICAgIEFT
U0VSVChpbnRlcm1Ob2RlICE9IG51bGxwdHIpOwogICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlw
ZSk7CkBAIC0xMTAwLDIwICsxMjg2LDQyIEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAorICAgIGJvb2wgZ2xvYmFsSW5pdFdhcm5pbmcgPSBmYWxzZTsKKyAgICBpZiAoc3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpICYmCisgICAgICAgICFWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVy
KGluaXRpYWxpemVyLCB0aGlzLCAmZ2xvYmFsSW5pdFdhcm5pbmcpKQorICAgIHsKKyAgICAgICAg
Ly8gRXJyb3IgbWVzc2FnZSBkb2VzIG5vdCBjb21wbGV0ZWx5IG1hdGNoIGJlaGF2aW9yIHdpdGgg
RVNTTCAxLjAwLCBidXQKKyAgICAgICAgLy8gd2Ugd2FudCB0byBzdGVlciBkZXZlbG9wZXJzIHRv
d2FyZHMgb25seSB1c2luZyBjb25zdGFudCBleHByZXNzaW9ucy4KKyAgICAgICAgZXJyb3IobGlu
ZSwgImdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplcnMgbXVzdCBiZSBjb25zdGFudCBleHByZXNz
aW9ucyIsICI9Iik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoZ2xvYmFs
SW5pdFdhcm5pbmcpCisgICAgeworICAgICAgICB3YXJuaW5nKAorICAgICAgICAgICAgbGluZSwK
KyAgICAgICAgICAgICJnbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIHNob3VsZCBiZSBjb25z
dGFudCBleHByZXNzaW9ucyAiCisgICAgICAgICAgICAiKHVuaWZvcm1zIGFuZCBnbG9iYWxzIGFy
ZSBhbGxvd2VkIGluIGdsb2JhbCBpbml0aWFsaXplcnMgZm9yIGxlZ2FjeSBjb21wYXRpYmlsaXR5
KSIsCisgICAgICAgICAgICAiPSIpOworICAgIH0KKwogICAgIC8vCiAgICAgLy8gaWRlbnRpZmll
ciBtdXN0IGJlIG9mIHR5cGUgY29uc3RhbnQsIGEgZ2xvYmFsLCBvciBhIHRlbXBvcmFyeQogICAg
IC8vCiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1
YWxpZmllcigpOwotICAgIGlmICgocXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSkgJiYgKHF1YWxp
ZmllciAhPSBFdnFHbG9iYWwpICYmIChxdWFsaWZpZXIgIT0gRXZxQ29uc3QpKSB7Ci0gICAgICAg
IGVycm9yKGxpbmUsICIgY2Fubm90IGluaXRpYWxpemUgdGhpcyB0eXBlIG9mIHF1YWxpZmllciAi
LCB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllclN0cmluZygpKTsKKyAgICBpZiAoKHF1
YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpICYmIChxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKSAmJiAo
cXVhbGlmaWVyICE9IEV2cUNvbnN0KSkKKyAgICB7CisgICAgICAgIGVycm9yKGxpbmUsICIgY2Fu
bm90IGluaXRpYWxpemUgdGhpcyB0eXBlIG9mIHF1YWxpZmllciAiLAorICAgICAgICAgICAgICB2
YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllclN0cmluZygpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIC8vCiAgICAgLy8gdGVzdCBmb3IgYW5kIHByb3BhZ2F0ZSBjb25z
dGFudAogICAgIC8vCiAKLSAgICBpZiAocXVhbGlmaWVyID09IEV2cUNvbnN0KSB7Ci0gICAgICAg
IGlmIChxdWFsaWZpZXIgIT0gaW5pdGlhbGl6ZXItPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSkg
eworICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxQ29uc3QpCisgICAgeworICAgICAgICBpZiAocXVh
bGlmaWVyICE9IGluaXRpYWxpemVyLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkpCisgICAgICAg
IHsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKICAgICAg
ICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRD
b21wbGV0ZVN0cmluZygpIDw8ICInIjsKICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5m
byA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKQEAgLTExMjEsODQgKzEzMjksNzQgQEAKICAgICAg
ICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCkuc2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBpZiAodHlwZSAhPSBp
bml0aWFsaXplci0+Z2V0VHlwZSgpKSB7Ci0gICAgICAgICAgICBlcnJvcihsaW5lLCAiIG5vbi1t
YXRjaGluZyB0eXBlcyBmb3IgY29uc3QgaW5pdGlhbGl6ZXIgIiwgCi0gICAgICAgICAgICAgICAg
dmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXJTdHJpbmcoKSk7CisgICAgICAgIGlmICh0
eXBlICE9IGluaXRpYWxpemVyLT5nZXRUeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKGxpbmUsICIgbm9uLW1hdGNoaW5nIHR5cGVzIGZvciBjb25zdCBpbml0aWFsaXplciAiLAor
ICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5nZXRRdWFsaWZpZXJTdHJpbmco
KSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihFdnFUZW1w
b3JhcnkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGluaXRpYWxpemVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSkgeyAKKworICAgICAgICAvLyBTYXZl
IHRoZSBjb25zdGFudCBmb2xkZWQgdmFsdWUgdG8gdGhlIHZhcmlhYmxlIGlmIHBvc3NpYmxlLiBG
b3IgZXhhbXBsZSBhcnJheQorICAgICAgICAvLyBpbml0aWFsaXplcnMgYXJlIG5vdCBmb2xkZWQs
IHNpbmNlIHRoYXQgd2F5IGNvcHlpbmcgdGhlIGFycmF5IGxpdGVyYWwgdG8gbXVsdGlwbGUgcGxh
Y2VzCisgICAgICAgIC8vIGluIHRoZSBzaGFkZXIgaXMgYXZvaWRlZC4KKyAgICAgICAgLy8gVE9E
TyhvZXR1YWhvQG52aWRpYS5jb20pOiBDb25zaWRlciBjb25zdGFudCBmb2xkaW5nIGFycmF5IGlu
aXRpYWxpemF0aW9uIGluIGNhc2VzIHdoZXJlCisgICAgICAgIC8vIGl0IHdvdWxkIGJlIGJlbmVm
aWNpYWwuCisgICAgICAgIGlmIChpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCkpCisg
ICAgICAgIHsKICAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0UG9pbnRlcihpbml0aWFs
aXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkpOwotICAg
ICAgICB9IGVsc2UgaWYgKGluaXRpYWxpemVyLT5nZXRBc1N5bWJvbE5vZGUoKSkgewotICAgICAg
ICAgICAgY29uc3QgVFN5bWJvbCogc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChpbml0aWFsaXpl
ci0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpLCAwKTsKLSAgICAgICAgICAgIGNvbnN0
IFRWYXJpYWJsZSogdFZhciA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSo+KHN5bWJvbCk7
CisgICAgICAgICAgICAqaW50ZXJtTm9kZSA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZXItPmdldEFzU3lt
Ym9sTm9kZSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wg
PQorICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmZpbmQoaW5pdGlhbGl6ZXItPmdldEFzU3lt
Ym9sTm9kZSgpLT5nZXRTeW1ib2woKSwgMCk7CisgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUg
KnRWYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oc3ltYm9sKTsKIAotICAgICAg
ICAgICAgVENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB0VmFyLT5nZXRDb25zdFBvaW50ZXIo
KTsKLSAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0UG9pbnRlcihjb25zdEFycmF5KTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5m
b1N0cmVhbTsKLSAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFyaWFibGUt
PmdldFR5cGUoKS5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICInIjsKLSAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgIGVy
cm9yKGxpbmUsICIgY2Fubm90IGFzc2lnbiB0byIsICI9IiwgZXh0cmFJbmZvLmNfc3RyKCkpOwot
ICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5
KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY29uc3QgVENvbnN0YW50
VW5pb24gKmNvbnN0QXJyYXkgPSB0VmFyLT5nZXRDb25zdFBvaW50ZXIoKTsKKyAgICAgICAgICAg
IGlmIChjb25zdEFycmF5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5zaGFyZUNvbnN0UG9pbnRlcihjb25zdEFycmF5KTsKKyAgICAgICAgICAgICAgICAqaW50ZXJt
Tm9kZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHF1YWxpZmllciAhPSBFdnFDb25zdCkK
KyAgICBUSW50ZXJtU3ltYm9sICppbnRlcm1TeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9s
KAorICAgICAgICB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdldE5hbWUoKSwg
dmFyaWFibGUtPmdldFR5cGUoKSwgbGluZSk7CisgICAgKmludGVybU5vZGUgPSBjcmVhdGVBc3Np
Z24oRU9wSW5pdGlhbGl6ZSwgaW50ZXJtU3ltYm9sLCBpbml0aWFsaXplciwgbGluZSk7CisgICAg
aWYgKCppbnRlcm1Ob2RlID09IG51bGxwdHIpCiAgICAgewotICAgICAgICBUSW50ZXJtU3ltYm9s
ICppbnRlcm1TeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlx
dWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksIGxp
bmUpOwotICAgICAgICAqaW50ZXJtTm9kZSA9IGNyZWF0ZUFzc2lnbihFT3BJbml0aWFsaXplLCBp
bnRlcm1TeW1ib2wsIGluaXRpYWxpemVyLCBsaW5lKTsKLSAgICAgICAgaWYgKCppbnRlcm1Ob2Rl
ID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFzc2lnbkVycm9yKGxpbmUsICI9
IiwgaW50ZXJtU3ltYm9sLT5nZXRDb21wbGV0ZVN0cmluZygpLCBpbml0aWFsaXplci0+Z2V0Q29t
cGxldGVTdHJpbmcoKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAg
ICAgICBhc3NpZ25FcnJvcihsaW5lLCAiPSIsIGludGVybVN5bWJvbC0+Z2V0Q29tcGxldGVTdHJp
bmcoKSwgaW5pdGlhbGl6ZXItPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgKmludGVybU5vZGUgPSBudWxs
cHRyOwotICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUUGFyc2VDb250ZXh0
OjphcmVBbGxDaGlsZENvbnN0KFRJbnRlcm1BZ2dyZWdhdGUqIGFnZ3JOb2RlKQorVFB1YmxpY1R5
cGUgVFBhcnNlQ29udGV4dDo6YWRkRnVsbHlTcGVjaWZpZWRUeXBlKFRRdWFsaWZpZXIgcXVhbGlm
aWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaW52YXJpYW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBl
U3BlY2lmaWVyKQogewotICAgIEFTU0VSVChhZ2dyTm9kZSAhPSBOVUxMKTsKLSAgICBpZiAoIWFn
Z3JOb2RlLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJv
b2wgYWxsQ29uc3RhbnQgPSB0cnVlOwotCi0gICAgLy8gY2hlY2sgaWYgYWxsIHRoZSBjaGlsZCBu
b2RlcyBhcmUgY29uc3RhbnRzIHNvIHRoYXQgdGhleSBjYW4gYmUgaW5zZXJ0ZWQgaW50byAKLSAg
ICAvLyB0aGUgcGFyZW50IG5vZGUKLSAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gYWdn
ck5vZGUtPmdldFNlcXVlbmNlKCkgOwotICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRv
ciBwID0gc2VxdWVuY2UtPmJlZ2luKCk7IHAgIT0gc2VxdWVuY2UtPmVuZCgpOyArK3ApIHsKLSAg
ICAgICAgaWYgKCEoKnApLT5nZXRBc1R5cGVkKCktPmdldEFzQ29uc3RhbnRVbmlvbigpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBhbGxDb25zdGFudDsK
LX0KLQotVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6YWRkRnVsbHlTcGVjaWZpZWRUeXBlKFRR
dWFsaWZpZXIgcXVhbGlmaWVyLCBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllciwgY29u
c3QgVFB1YmxpY1R5cGUmIHR5cGVTcGVjaWZpZXIpCi17Ci0gICAgVFB1YmxpY1R5cGUgcmV0dXJu
VHlwZSA9IHR5cGVTcGVjaWZpZXI7Ci0gICAgcmV0dXJuVHlwZS5xdWFsaWZpZXIgPSBxdWFsaWZp
ZXI7CisgICAgVFB1YmxpY1R5cGUgcmV0dXJuVHlwZSAgICAgPSB0eXBlU3BlY2lmaWVyOworICAg
IHJldHVyblR5cGUucXVhbGlmaWVyICAgICAgID0gcXVhbGlmaWVyOworICAgIHJldHVyblR5cGUu
aW52YXJpYW50ICAgICAgID0gaW52YXJpYW50OwogICAgIHJldHVyblR5cGUubGF5b3V0UXVhbGlm
aWVyID0gbGF5b3V0UXVhbGlmaWVyOwogCi0gICAgaWYgKHR5cGVTcGVjaWZpZXIuYXJyYXkpCisg
ICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwgMzAwKQogICAgIHsKLSAgICAgICAgZXJyb3IodHlwZVNw
ZWNpZmllci5saW5lLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBhcnJheSIpOwotICAg
ICAgICByZWNvdmVyKCk7Ci0gICAgICAgIHJldHVyblR5cGUuY2xlYXJBcnJheW5lc3MoKTsKLSAg
ICB9CisgICAgICAgIGlmICh0eXBlU3BlY2lmaWVyLmFycmF5KQorICAgICAgICB7CisgICAgICAg
ICAgICBlcnJvcih0eXBlU3BlY2lmaWVyLmxpbmUsICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNs
YXNzIGFycmF5Iik7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICByZXR1cm5U
eXBlLmNsZWFyQXJyYXluZXNzKCk7CisgICAgICAgIH0KIAotICAgIGlmIChzaGFkZXJWZXJzaW9u
IDwgMzAwKQotICAgIHsKLSAgICAgICAgaWYgKHF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgJiYg
KHR5cGVTcGVjaWZpZXIudHlwZSA9PSBFYnRCb29sIHx8IHR5cGVTcGVjaWZpZXIudHlwZSA9PSBF
YnRJbnQpKQorICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSAmJgorICAgICAg
ICAgICAgKHR5cGVTcGVjaWZpZXIudHlwZSA9PSBFYnRCb29sIHx8IHR5cGVTcGVjaWZpZXIudHlw
ZSA9PSBFYnRJbnQpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcih0eXBlU3BlY2lmaWVy
LmxpbmUsICJjYW5ub3QgYmUgYm9vbCBvciBpbnQiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlm
aWVyKSk7CiAgICAgICAgICAgICByZWNvdmVyKCk7CkBAIC0xMjEzLDU0ICsxNDExLDEyNSBAQAog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzd2l0Y2ggKHF1YWxpZmllcikKKyAgICAg
ICAgaWYgKCFsYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQogICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBFdnFTbW9vdGhJbjoKLSAgICAgICAgICBjYXNlIEV2cVNtb290aE91dDoKLSAgICAgICAg
ICBjYXNlIEV2cVZlcnRleE91dDoKLSAgICAgICAgICBjYXNlIEV2cUZyYWdtZW50SW46Ci0gICAg
ICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDoKLSAgICAgICAgICBjYXNlIEV2cUNlbnRyb2lkSW46
Ci0gICAgICAgICAgICBpZiAodHlwZVNwZWNpZmllci50eXBlID09IEVidEJvb2wpCisgICAgICAg
ICAgICBpZiAoZ2xvYmFsRXJyb3JDaGVjayh0eXBlU3BlY2lmaWVyLmxpbmUsIHN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSwgImxheW91dCIpKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGVycm9yKHR5cGVTcGVjaWZpZXIubGluZSwgImNhbm5vdCBiZSBib29sIiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKHF1YWxpZmllcikpOwogICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0eXBlU3BlY2lmaWVyLnR5cGUgPT0gRWJ0SW50IHx8
IHR5cGVTcGVjaWZpZXIudHlwZSA9PSBFYnRVSW50KQorICAgICAgICB9CisgICAgICAgIGlmIChz
aDo6SXNWYXJ5aW5nKHF1YWxpZmllcikgfHwgcXVhbGlmaWVyID09IEV2cVZlcnRleEluIHx8IHF1
YWxpZmllciA9PSBFdnFGcmFnbWVudE91dCkKKyAgICAgICAgeworICAgICAgICAgICAgZXMzSW5w
dXRPdXRwdXRUeXBlQ2hlY2socXVhbGlmaWVyLCB0eXBlU3BlY2lmaWVyLCB0eXBlU3BlY2lmaWVy
LmxpbmUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJldHVyblR5cGU7Cit9CisK
K3ZvaWQgVFBhcnNlQ29udGV4dDo6ZXMzSW5wdXRPdXRwdXRUeXBlQ2hlY2soY29uc3QgVFF1YWxp
ZmllciBxdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJMb2NhdGlvbikKK3sK
KyAgICAvLyBBbiBpbnB1dC9vdXRwdXQgdmFyaWFibGUgY2FuIG5ldmVyIGJlIGJvb2wgb3IgYSBz
YW1wbGVyLiBTYW1wbGVycyBhcmUgY2hlY2tlZCBlbHNld2hlcmUuCisgICAgaWYgKHR5cGUudHlw
ZSA9PSBFYnRCb29sKQorICAgIHsKKyAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJj
YW5ub3QgYmUgYm9vbCIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKKyAgICAgICAg
cmVjb3ZlcigpOworICAgIH0KKworICAgIC8vIFNwZWNpZmljIHJlc3RyaWN0aW9ucyBhcHBseSBm
b3IgdmVydGV4IHNoYWRlciBpbnB1dHMgYW5kIGZyYWdtZW50IHNoYWRlciBvdXRwdXRzLgorICAg
IHN3aXRjaCAocXVhbGlmaWVyKQorICAgIHsKKyAgICAgICAgY2FzZSBFdnFWZXJ0ZXhJbjoKKyAg
ICAgICAgICAgIC8vIEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40CisgICAgICAgICAgICBpZiAodHlw
ZS5hcnJheSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlcnJvcih0eXBlU3BlY2lm
aWVyLmxpbmUsICJtdXN0IHVzZSAnZmxhdCcgaW50ZXJwb2xhdGlvbiBoZXJlIiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKHF1YWxpZmllcikpOworICAgICAgICAgICAgICAgIGVycm9yKHF1YWxpZmllckxv
Y2F0aW9uLCAiY2Fubm90IGJlIGFycmF5IiwgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcikp
OwogICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgY2FzZSBFdnFWZXJ0ZXhJbjoKLSAgICAgICAgICBjYXNlIEV2
cUZyYWdtZW50T3V0OgotICAgICAgICAgIGNhc2UgRXZxRmxhdEluOgotICAgICAgICAgIGNhc2Ug
RXZxRmxhdE91dDoKLSAgICAgICAgICAgIGlmICh0eXBlU3BlY2lmaWVyLnR5cGUgPT0gRWJ0Qm9v
bCkKKyAgICAgICAgICAgIC8vIFZlcnRleCBpbnB1dHMgd2l0aCBhIHN0cnVjdCB0eXBlIGFyZSBk
aXNhbGxvd2VkIGluIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjaworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBjYXNlIEV2cUZyYWdtZW50T3V0OgorICAgICAgICAgICAgLy8gRVNTTCAz
LjAwIHNlY3Rpb24gNC4zLjYKKyAgICAgICAgICAgIGlmICh0eXBlLmlzTWF0cml4KCkpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZXJyb3IodHlwZVNwZWNpZmllci5saW5lLCAiY2Fu
bm90IGJlIGJvb2wiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7CisgICAgICAgICAg
ICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJjYW5ub3QgYmUgbWF0cml4IiwgZ2V0UXVh
bGlmaWVyU3RyaW5nKHF1YWxpZmllcikpOwogICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZyYWdtZW50IG91dHB1dHMgd2l0aCBhIHN0cnVj
dCB0eXBlIGFyZSBkaXNhbGxvd2VkIGluIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjaworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQogCi0gICAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgLy8gVmVydGV4IHNoYWRlciBv
dXRwdXRzIC8gZnJhZ21lbnQgc2hhZGVyIGlucHV0cyBoYXZlIGEgZGlmZmVyZW50LCBzbGlnaHRs
eSBtb3JlIGxlbmllbnQgc2V0IG9mCisgICAgLy8gcmVzdHJpY3Rpb25zLgorICAgIGJvb2wgdHlw
ZUNvbnRhaW5zSW50ZWdlcnMgPQorICAgICAgICAodHlwZS50eXBlID09IEVidEludCB8fCB0eXBl
LnR5cGUgPT0gRWJ0VUludCB8fCB0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoRWJ0SW50
KSB8fAorICAgICAgICAgdHlwZS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdUeXBlKEVidFVJbnQpKTsK
KyAgICBpZiAodHlwZUNvbnRhaW5zSW50ZWdlcnMgJiYgcXVhbGlmaWVyICE9IEV2cUZsYXRJbiAm
JiBxdWFsaWZpZXIgIT0gRXZxRmxhdE91dCkKKyAgICB7CisgICAgICAgIGVycm9yKHF1YWxpZmll
ckxvY2F0aW9uLCAibXVzdCB1c2UgJ2ZsYXQnIGludGVycG9sYXRpb24gaGVyZSIsCisgICAgICAg
ICAgICAgIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKKyAgICAgICAgcmVjb3Zlcigp
OworICAgIH0KKworICAgIGlmICh0eXBlLnR5cGUgPT0gRWJ0U3RydWN0KQorICAgIHsKKyAgICAg
ICAgLy8gRVNTTCAzLjAwIHNlY3Rpb25zIDQuMy40IGFuZCA0LjMuNi4KKyAgICAgICAgLy8gVGhl
c2UgcmVzdHJpY3Rpb25zIGFyZSBvbmx5IGltcGxpZWQgYnkgdGhlIEVTU0wgMy4wMCBzcGVjLCBi
dXQKKyAgICAgICAgLy8gdGhlIEVTU0wgMy4xMCBzcGVjIGxpc3RzIHRoZXNlIHJlc3RyaWN0aW9u
cyBleHBsaWNpdGx5LgorICAgICAgICBpZiAodHlwZS5hcnJheSkKKyAgICAgICAgeworICAgICAg
ICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJjYW5ub3QgYmUgYW4gYXJyYXkgb2Ygc3Ry
dWN0dXJlcyIsCisgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVy
KSk7CisgICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHR5cGUu
aXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKHF1YWxpZmllckxvY2F0aW9uLCAiY2Fubm90IGJlIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcg
YW4gYXJyYXkiLAorICAgICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmll
cikpOworICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICB9CisgICAgICAgIGlmICh0eXBl
LmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoRWJ0U3RydWN0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJjYW5ub3QgYmUgYSBzdHJ1Y3R1cmUgY29u
dGFpbmluZyBhIHN0cnVjdHVyZSIsCisgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJp
bmcocXVhbGlmaWVyKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHR5cGUuaXNTdHJ1Y3R1cmVDb250YWluaW5nVHlwZShFYnRCb29sKSkKKyAgICAgICAg
eworICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyTG9jYXRpb24sICJjYW5ub3QgYmUgYSBzdHJ1
Y3R1cmUgY29udGFpbmluZyBhIGJvb2wiLAorICAgICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVy
U3RyaW5nKHF1YWxpZmllcikpOworICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICB9CiAg
ICAgfQotCi0gICAgcmV0dXJuIHJldHVyblR5cGU7CiB9CiAKIFRJbnRlcm1BZ2dyZWdhdGUgKlRQ
YXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJPclR5cGVMb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyAmaWRlbnRpZmllcikKIHsKLSAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBpbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIFRUeXBlKHB1YmxpY1R5cGUpLCBpZGVudGlm
aWVyT3JUeXBlTG9jYXRpb24pOworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9CisgICAgICAg
IGludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgaWRlbnRpZmllciwgVFR5cGUocHVibGljVHlwZSks
IGlkZW50aWZpZXJPclR5cGVMb2NhdGlvbik7CiAKLSAgICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJh
dGlvbkVycm9yQ2hlY2sgPSAoaWRlbnRpZmllciA9PSAiIik7CisgICAgYm9vbCBlbXB0eURlY2xh
cmF0aW9uID0gKGlkZW50aWZpZXIgPT0gIiIpOwogCi0gICAgaWYgKCFtRGVmZXJyZWRTaW5nbGVE
ZWNsYXJhdGlvbkVycm9yQ2hlY2spCisgICAgbURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJv
ckNoZWNrID0gZW1wdHlEZWNsYXJhdGlvbjsKKworICAgIGlmIChlbXB0eURlY2xhcmF0aW9uKQog
ICAgIHsKKyAgICAgICAgaWYgKHB1YmxpY1R5cGUuaXNVbnNpemVkQXJyYXkoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gRVNTTDMgc3BlYyBzZWN0aW9uIDQuMS45OiBBcnJheSBkZWNsYXJh
dGlvbiB3aGljaCBsZWF2ZXMgdGhlIHNpemUgdW5zcGVjaWZpZWQgaXMgYW4KKyAgICAgICAgICAg
IC8vIGVycm9yLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhpcyBhcHBsaWVzIHRvIGVtcHR5IGRlY2xh
cmF0aW9ucyBhcyB3ZWxsLgorICAgICAgICAgICAgZXJyb3IoaWRlbnRpZmllck9yVHlwZUxvY2F0
aW9uLCAiZW1wdHkgYXJyYXkgZGVjbGFyYXRpb24gbmVlZHMgdG8gc3BlY2lmeSBhIHNpemUiLAor
ICAgICAgICAgICAgICAgICAgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBlbHNlCisgICAgewogICAgICAgICBpZiAoc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNr
KHB1YmxpY1R5cGUsIGlkZW50aWZpZXJPclR5cGVMb2NhdGlvbikpCiAgICAgICAgICAgICByZWNv
dmVyKCk7CiAKQEAgLTEyOTIsNyArMTU2MSw4IEBACiAgICAgaWYgKG5vbkluaXRFcnJvckNoZWNr
KGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgJnB1YmxpY1R5cGUpKQogICAgICAgICBy
ZWNvdmVyKCk7CiAKLSAgICBpZiAoYXJyYXlUeXBlRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBw
dWJsaWNUeXBlKSB8fCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVi
bGljVHlwZSkpCisgICAgaWYgKGFycmF5VHlwZUVycm9yQ2hlY2soaW5kZXhMb2NhdGlvbiwgcHVi
bGljVHlwZSkgfHwKKyAgICAgICAgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGluZGV4TG9jYXRp
b24sIHB1YmxpY1R5cGUpKQogICAgIHsKICAgICAgICAgcmVjb3ZlcigpOwogICAgIH0KQEAgLTEz
MTksNyArMTU4OSw3IEBACiAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5
bWJvbCwgaWRlbnRpZmllckxvY2F0aW9uKTsKIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNl
Q29udGV4dDo6cGFyc2VTaW5nbGVJbml0RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5
cGUsCitUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZVNpbmdsZUluaXREZWNs
YXJhdGlvbihjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCkBAIC0xMzQ1LDIwICsxNjE1LDIyIEBA
CiAgICAgfQogfQogCi1USW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZVNpbmds
ZUFycmF5SW5pdERlY2xhcmF0aW9uKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJp
bmcgJmlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZpbml0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6
ZXIpCitUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZVNpbmdsZUFycmF5SW5p
dERlY2xhcmF0aW9uKAorICAgIFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICBjb25zdCBUU3RyaW5nICZpZGVudGlm
aWVyLAorICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCisgICAgVEludGVybVR5
cGVkICppbmRleEV4cHJlc3Npb24sCisgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9u
LAorICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCiB7CiAgICAgbURlZmVycmVkU2luZ2xl
RGVjbGFyYXRpb25FcnJvckNoZWNrID0gZmFsc2U7CiAKICAgICBpZiAoc2luZ2xlRGVjbGFyYXRp
b25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbikpCiAgICAgICAgIHJl
Y292ZXIoKTsKIAotICAgIGlmIChhcnJheVR5cGVFcnJvckNoZWNrKGluZGV4TG9jYXRpb24sIHB1
YmxpY1R5cGUpIHx8IGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBwdWJs
aWNUeXBlKSkKKyAgICBpZiAoYXJyYXlUeXBlRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBwdWJs
aWNUeXBlKSB8fAorICAgICAgICBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW5kZXhMb2NhdGlv
biwgcHVibGljVHlwZSkpCiAgICAgewogICAgICAgICByZWNvdmVyKCk7CiAgICAgfQpAQCAtMTM2
Niw4ICsxNjM4LDEwIEBACiAgICAgVFB1YmxpY1R5cGUgYXJyYXlUeXBlKHB1YmxpY1R5cGUpOwog
CiAgICAgaW50IHNpemUgPSAwOwotICAgIC8vIElmIGluZGV4RXhwcmVzc2lvbiBpcyBudWxscHRy
LCB0aGVuIHRoZSBhcnJheSB3aWxsIGV2ZW50dWFsbHkgZ2V0IGl0cyBzaXplIGltcGxpY2l0bHkg
ZnJvbSB0aGUgaW5pdGlhbGl6ZXIuCi0gICAgaWYgKGluZGV4RXhwcmVzc2lvbiAhPSBudWxscHRy
ICYmIGFycmF5U2l6ZUVycm9yQ2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBpbmRleEV4cHJlc3Np
b24sIHNpemUpKQorICAgIC8vIElmIGluZGV4RXhwcmVzc2lvbiBpcyBudWxscHRyLCB0aGVuIHRo
ZSBhcnJheSB3aWxsIGV2ZW50dWFsbHkgZ2V0IGl0cyBzaXplIGltcGxpY2l0bHkgZnJvbQorICAg
IC8vIHRoZSBpbml0aWFsaXplci4KKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uICE9IG51bGxwdHIg
JiYKKyAgICAgICAgYXJyYXlTaXplRXJyb3JDaGVjayhpZGVudGlmaWVyTG9jYXRpb24sIGluZGV4
RXhwcmVzc2lvbiwgc2l6ZSkpCiAgICAgewogICAgICAgICByZWNvdmVyKCk7CiAgICAgfQpAQCAt
MTQxMCw3ICsxNjg0LDggQEAKICAgICAgICAgY29uc3QgVFN0cmluZyBrR2xGcm9udEZhY2luZygi
Z2xfRnJvbnRGYWNpbmciKTsKICAgICAgICAgaWYgKCppZGVudGlmaWVyID09IGtHbEZyb250RmFj
aW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jLCAiaWRlbnRp
ZmllciBzaG91bGQgbm90IGJlIGRlY2xhcmVkIGFzIGludmFyaWFudCIsIGlkZW50aWZpZXItPmNf
c3RyKCkpOworICAgICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvYywgImlkZW50aWZpZXIgc2hv
dWxkIG5vdCBiZSBkZWNsYXJlZCBhcyBpbnZhcmlhbnQiLAorICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllci0+Y19zdHIoKSk7CiAgICAgICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtMTQxOCw4ICsxNjkzLDggQEAKICAgICAgICAg
Y29uc3QgVFZhcmlhYmxlICp2YXJpYWJsZSA9IGdldE5hbWVkVmFyaWFibGUoaWRlbnRpZmllckxv
YywgaWRlbnRpZmllciwgc3ltYm9sKTsKICAgICAgICAgQVNTRVJUKHZhcmlhYmxlKTsKICAgICAg
ICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOwotICAgICAgICBUSW50
ZXJtU3ltYm9sICppbnRlcm1TeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICppZGVudGlmaWVyLCB0eXBlLCBpZGVudGlmaWVyTG9jKTsK
KyAgICAgICAgVEludGVybVN5bWJvbCAqaW50ZXJtU3ltYm9sID0KKyAgICAgICAgICAgIGludGVy
bWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksICppZGVudGlmaWVyLCB0
eXBlLCBpZGVudGlmaWVyTG9jKTsKIAogICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdh
dGUgPSBpbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1TeW1ib2wsIGlkZW50aWZpZXJM
b2MpOwogICAgICAgICBhZ2dyZWdhdGUtPnNldE9wKEVPcEludmFyaWFudERlY2xhcmF0aW9uKTsK
QEAgLTE0MjcsMTAgKzE3MDIsMTMgQEAKICAgICB9CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQ
YXJzZUNvbnRleHQ6OnBhcnNlRGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwgVElu
dGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlRGVjbGFyYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmll
ckxvY2F0aW9uLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyKQorVEludGVybUFnZ3JlZ2F0ZSAq
VFBhcnNlQ29udGV4dDo6cGFyc2VEZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nICZpZGVudGlmaWVyKQogewotICAgIC8vIElmIHRoZSBkZWNsYXJhdGlvbiBz
dGFydGluZyB0aGlzIGRlY2xhcmF0b3IgbGlzdCB3YXMgZW1wdHkgKGV4YW1wbGU6IGludCwpLCBz
b21lIGNoZWNrcyB3ZXJlIG5vdCBwZXJmb3JtZWQuCisgICAgLy8gSWYgdGhlIGRlY2xhcmF0aW9u
IHN0YXJ0aW5nIHRoaXMgZGVjbGFyYXRvciBsaXN0IHdhcyBlbXB0eSAoZXhhbXBsZTogaW50LCks
IHNvbWUgY2hlY2tzIHdlcmUKKyAgICAvLyBub3QgcGVyZm9ybWVkLgogICAgIGlmIChtRGVmZXJy
ZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2spCiAgICAgewogICAgICAgICBpZiAoc2luZ2xl
RGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbikpCkBA
IC0xNDQ4LDE4ICsxNzI2LDIzIEBACiAgICAgaWYgKCFkZWNsYXJlVmFyaWFibGUoaWRlbnRpZmll
ckxvY2F0aW9uLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNUeXBlKSwgJnZhcmlhYmxlKSkKICAg
ICAgICAgcmVjb3ZlcigpOwogCi0gICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gaW50ZXJtZWRp
YXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNUeXBlKSwgaWRlbnRpZmll
ckxvY2F0aW9uKTsKKyAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPQorICAgICAgICBpbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIFRUeXBlKHB1YmxpY1R5cGUpLCBpZGVudGlm
aWVyTG9jYXRpb24pOwogICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAgIHN5bWJv
bC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogCiAgICAgcmV0dXJuIGludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKGFnZ3JlZ2F0ZURlY2xhcmF0aW9uLCBzeW1ib2wsIGlkZW50aWZp
ZXJMb2NhdGlvbik7CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNl
QXJyYXlEZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLCBUSW50ZXJtQWdncmVnYXRl
ICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlv
biwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmFycmF5TG9jYXRp
b24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKQorVEludGVybUFnZ3JlZ2F0ZSAqVFBh
cnNlQ29udGV4dDo6cGFyc2VBcnJheURlY2xhcmF0b3IoVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlk
ZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZhcnJheUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pCiB7Ci0gICAgLy8g
SWYgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHRoaXMgZGVjbGFyYXRvciBsaXN0IHdhcyBlbXB0
eSAoZXhhbXBsZTogaW50LCksIHNvbWUgY2hlY2tzIHdlcmUgbm90IHBlcmZvcm1lZC4KKyAgICAv
LyBJZiB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qgd2FzIGVt
cHR5IChleGFtcGxlOiBpbnQsKSwgc29tZSBjaGVja3Mgd2VyZQorICAgIC8vIG5vdCBwZXJmb3Jt
ZWQuCiAgICAgaWYgKG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjaykKICAgICB7
CiAgICAgICAgIGlmIChzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRl
bnRpZmllckxvY2F0aW9uKSkKQEAgLTE0NzMsNyArMTc1Niw4IEBACiAgICAgaWYgKG5vbkluaXRF
cnJvckNoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgJnB1YmxpY1R5cGUpKQog
ICAgICAgICByZWNvdmVyKCk7CiAKLSAgICBpZiAoYXJyYXlUeXBlRXJyb3JDaGVjayhhcnJheUxv
Y2F0aW9uLCBwdWJsaWNUeXBlKSB8fCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soYXJyYXlMb2Nh
dGlvbiwgcHVibGljVHlwZSkpCisgICAgaWYgKGFycmF5VHlwZUVycm9yQ2hlY2soYXJyYXlMb2Nh
dGlvbiwgcHVibGljVHlwZSkgfHwKKyAgICAgICAgYXJyYXlRdWFsaWZpZXJFcnJvckNoZWNrKGFy
cmF5TG9jYXRpb24sIHB1YmxpY1R5cGUpKQogICAgIHsKICAgICAgICAgcmVjb3ZlcigpOwogICAg
IH0KQEAgLTE0OTEsNyArMTc3NSw4IEBACiAgICAgICAgIGlmICghZGVjbGFyZVZhcmlhYmxlKGlk
ZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgYXJyYXlUeXBlLCAmdmFyaWFibGUpKQogICAg
ICAgICAgICAgcmVjb3ZlcigpOwogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGlu
dGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgaWRlbnRpZmllciwgYXJyYXlUeXBlLCBpZGVudGlmaWVy
TG9jYXRpb24pOworICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPQorICAgICAgICAgICAg
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBhcnJheVR5cGUsIGlkZW50aWZp
ZXJMb2NhdGlvbik7CiAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAgICAgICAgICAg
ICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKIApAQCAtMTUwMSwxMSAr
MTc4NiwxNSBAQAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1USW50ZXJtQWdncmVnYXRlICpU
UGFyc2VDb250ZXh0OjpwYXJzZUluaXREZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBl
LCBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
aWRlbnRpZmllckxvY2F0aW9uLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNl
TG9jICZpbml0TG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCitUSW50ZXJtQWdn
cmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNU
eXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCiB7Ci0g
ICAgLy8gSWYgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHRoaXMgZGVjbGFyYXRvciBsaXN0IHdh
cyBlbXB0eSAoZXhhbXBsZTogaW50LCksIHNvbWUgY2hlY2tzIHdlcmUgbm90IHBlcmZvcm1lZC4K
KyAgICAvLyBJZiB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qg
d2FzIGVtcHR5IChleGFtcGxlOiBpbnQsKSwgc29tZSBjaGVja3Mgd2VyZQorICAgIC8vIG5vdCBw
ZXJmb3JtZWQuCiAgICAgaWYgKG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjaykK
ICAgICB7CiAgICAgICAgIGlmIChzaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlw
ZSwgaWRlbnRpZmllckxvY2F0aW9uKSkKQEAgLTE1MzgsMTUgKzE4MjcsMTcgQEAKICAgICB9CiB9
CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlQXJyYXlJbml0RGVjbGFy
YXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKK1RJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNv
bnRleHQ6OnBhcnNlQXJyYXlJbml0RGVjbGFyYXRvcihjb25zdCBUUHVibGljVHlwZSAmcHVibGlj
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jJiBpZGVudGlmaWVyTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRp
ZmllckxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyYgaW5kZXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbmRleExvY2F0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRM
b2NhdGlvbiwgVEludGVybVR5cGVkICppbml0aWFsaXplcikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZp
bml0TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplcikKIHsKLSAgICAvLyBJZiB0
aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qgd2FzIGVtcHR5IChl
eGFtcGxlOiBpbnQsKSwgc29tZSBjaGVja3Mgd2VyZSBub3QgcGVyZm9ybWVkLgorICAgIC8vIElm
IHRoZSBkZWNsYXJhdGlvbiBzdGFydGluZyB0aGlzIGRlY2xhcmF0b3IgbGlzdCB3YXMgZW1wdHkg
KGV4YW1wbGU6IGludCwpLCBzb21lIGNoZWNrcyB3ZXJlCisgICAgLy8gbm90IHBlcmZvcm1lZC4K
ICAgICBpZiAobURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKQogICAgIHsKICAg
ICAgICAgaWYgKHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlm
aWVyTG9jYXRpb24pKQpAQCAtMTU1Nyw3ICsxODQ4LDggQEAKICAgICBpZiAobG9jYXRpb25EZWNs
YXJhdG9yTGlzdENoZWNrKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZSkpCiAgICAgICAg
IHJlY292ZXIoKTsKIAotICAgIGlmIChhcnJheVR5cGVFcnJvckNoZWNrKGluZGV4TG9jYXRpb24s
IHB1YmxpY1R5cGUpIHx8IGFycmF5UXVhbGlmaWVyRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBw
dWJsaWNUeXBlKSkKKyAgICBpZiAoYXJyYXlUeXBlRXJyb3JDaGVjayhpbmRleExvY2F0aW9uLCBw
dWJsaWNUeXBlKSB8fAorICAgICAgICBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soaW5kZXhMb2Nh
dGlvbiwgcHVibGljVHlwZSkpCiAgICAgewogICAgICAgICByZWNvdmVyKCk7CiAgICAgfQpAQCAt
MTU2NSw4ICsxODU3LDEwIEBACiAgICAgVFB1YmxpY1R5cGUgYXJyYXlUeXBlKHB1YmxpY1R5cGUp
OwogCiAgICAgaW50IHNpemUgPSAwOwotICAgIC8vIElmIGluZGV4RXhwcmVzc2lvbiBpcyBudWxs
cHRyLCB0aGVuIHRoZSBhcnJheSB3aWxsIGV2ZW50dWFsbHkgZ2V0IGl0cyBzaXplIGltcGxpY2l0
bHkgZnJvbSB0aGUgaW5pdGlhbGl6ZXIuCi0gICAgaWYgKGluZGV4RXhwcmVzc2lvbiAhPSBudWxs
cHRyICYmIGFycmF5U2l6ZUVycm9yQ2hlY2soaWRlbnRpZmllckxvY2F0aW9uLCBpbmRleEV4cHJl
c3Npb24sIHNpemUpKQorICAgIC8vIElmIGluZGV4RXhwcmVzc2lvbiBpcyBudWxscHRyLCB0aGVu
IHRoZSBhcnJheSB3aWxsIGV2ZW50dWFsbHkgZ2V0IGl0cyBzaXplIGltcGxpY2l0bHkgZnJvbQor
ICAgIC8vIHRoZSBpbml0aWFsaXplci4KKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uICE9IG51bGxw
dHIgJiYKKyAgICAgICAgYXJyYXlTaXplRXJyb3JDaGVjayhpZGVudGlmaWVyTG9jYXRpb24sIGlu
ZGV4RXhwcmVzc2lvbiwgc2l6ZSkpCiAgICAgewogICAgICAgICByZWNvdmVyKCk7CiAgICAgfQpA
QCAtMTU5OCw3ICsxODkyLDggQEAKIHsKICAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIg
IT0gRXZxVW5pZm9ybSkKICAgICB7Ci0gICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwg
ImludmFsaWQgcXVhbGlmaWVyOiIsIGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1
YWxpZmllciksICJnbG9iYWwgbGF5b3V0IG11c3QgYmUgdW5pZm9ybSIpOworICAgICAgICBlcnJv
cih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZhbGlkIHF1YWxpZmllcjoiLCBnZXRRdWFsaWZpZXJT
dHJpbmcodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpLAorICAgICAgICAgICAgICAiZ2xvYmFsIGxh
eW91dCBtdXN0IGJlIHVuaWZvcm0iKTsKICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTYwNiw3ICsxOTAxLDcgQEAKICAgICBjb25zdCBUTGF5b3V0UXVhbGlm
aWVyIGxheW91dFF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyOwogICAg
IEFTU0VSVCghbGF5b3V0UXVhbGlmaWVyLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoc2hhZGVyVmVy
c2lvbiA8IDMwMCkKKyAgICBpZiAobVNoYWRlclZlcnNpb24gPCAzMDApCiAgICAgewogICAgICAg
ICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJsYXlvdXQgcXVhbGlmaWVycyBzdXBwb3J0ZWQg
aW4gR0xTTCBFUyAzLjAwIG9ubHkiLCAibGF5b3V0Iik7CiAgICAgICAgIHJlY292ZXIoKTsKQEAg
LTE2MjEsMTcgKzE5MTYsMjc4IEBACiAKICAgICBpZiAobGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBh
Y2tpbmcgIT0gRW1wVW5zcGVjaWZpZWQpCiAgICAgewotICAgICAgICBkZWZhdWx0TWF0cml4UGFj
a2luZyA9IGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nOworICAgICAgICBtRGVmYXVsdE1h
dHJpeFBhY2tpbmcgPSBsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZzsKICAgICB9CiAKICAg
ICBpZiAobGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSAhPSBFYnNVbnNwZWNpZmllZCkKICAg
ICB7Ci0gICAgICAgIGRlZmF1bHRCbG9ja1N0b3JhZ2UgPSBsYXlvdXRRdWFsaWZpZXIuYmxvY2tT
dG9yYWdlOworICAgICAgICBtRGVmYXVsdEJsb2NrU3RvcmFnZSA9IGxheW91dFF1YWxpZmllci5i
bG9ja1N0b3JhZ2U7CiAgICAgfQogfQogCi1URnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0cnVjdG9yRnVuYyhUUHVibGljVHlwZSBwdWJsaWNUeXBlKQorVEludGVybUFnZ3JlZ2F0ZSAq
VFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25Qcm90b3R5cGVEZWNsYXJhdGlvbihjb25zdCBURnVu
Y3Rpb24gJmZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbikKIHsK
KyAgICAvLyBOb3RlOiBzeW1ib2xUYWJsZUZ1bmN0aW9uIGNvdWxkIGJlIHRoZSBzYW1lIGFzIGZ1
bmN0aW9uIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGRlY2xhcmF0aW9uLgorICAgIC8vIEVpdGhlciB3
YXkgdGhlIGluc3RhbmNlIGluIHRoZSBzeW1ib2wgdGFibGUgaXMgdXNlZCB0byB0cmFjayB3aGV0
aGVyIHRoZSBmdW5jdGlvbiBpcyBkZWNsYXJlZAorICAgIC8vIG11bHRpcGxlIHRpbWVzLgorICAg
IFRGdW5jdGlvbiAqc3ltYm9sVGFibGVGdW5jdGlvbiA9CisgICAgICAgIHN0YXRpY19jYXN0PFRG
dW5jdGlvbiAqPihzeW1ib2xUYWJsZS5maW5kKGZ1bmN0aW9uLmdldE1hbmdsZWROYW1lKCksIGdl
dFNoYWRlclZlcnNpb24oKSkpOworICAgIGlmIChzeW1ib2xUYWJsZUZ1bmN0aW9uLT5oYXNQcm90
b3R5cGVEZWNsYXJhdGlvbigpICYmIG1TaGFkZXJWZXJzaW9uID09IDEwMCkKKyAgICB7CisgICAg
ICAgIC8vIEVTU0wgMS4wMC4xNyBzZWN0aW9uIDQuMi43LgorICAgICAgICAvLyBEb2Vzbid0IGFw
cGx5IHRvIEVTU0wgMy4wMC40OiBzZWUgc2VjdGlvbiA0LjIuMy4KKyAgICAgICAgZXJyb3IobG9j
YXRpb24sICJkdXBsaWNhdGUgZnVuY3Rpb24gcHJvdG90eXBlIGRlY2xhcmF0aW9ucyBhcmUgbm90
IGFsbG93ZWQiLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgcmVjb3ZlcigpOworICAgIH0KKyAgICBz
eW1ib2xUYWJsZUZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpOworCisgICAg
VEludGVybUFnZ3JlZ2F0ZSAqcHJvdG90eXBlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7CisgICAg
cHJvdG90eXBlLT5zZXRUeXBlKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7CisgICAgcHJvdG90
eXBlLT5zZXROYW1lKGZ1bmN0aW9uLmdldE1hbmdsZWROYW1lKCkpOworICAgIHByb3RvdHlwZS0+
c2V0RnVuY3Rpb25JZChmdW5jdGlvbi5nZXRVbmlxdWVJZCgpKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyBpKyspCisgICAgeworICAgICAg
ICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7Cisg
ICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIFRWYXJp
YWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7CisKKyAgICAgICAgICAgIFRJ
bnRlcm1TeW1ib2wgKnBhcmFtU3ltYm9sID0gaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgKKyAgICAg
ICAgICAgICAgICB2YXJpYWJsZS5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZh
cmlhYmxlLmdldFR5cGUoKSwgbG9jYXRpb24pOworICAgICAgICAgICAgcHJvdG90eXBlID0gaW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBwYXJhbVN5bWJvbCwgbG9jYXRpb24p
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVy
bVN5bWJvbCAqcGFyYW1TeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFy
YW0udHlwZSwgbG9jYXRpb24pOworICAgICAgICAgICAgcHJvdG90eXBlICAgICAgICAgICAgICAg
ICAgPSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIHBhcmFtU3ltYm9sLCBs
b2NhdGlvbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90b3R5cGUtPnNldE9wKEVPcFBy
b3RvdHlwZSk7CisKKyAgICBzeW1ib2xUYWJsZS5wb3AoKTsKKworICAgIGlmICghc3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpKQorICAgIHsKKyAgICAgICAgLy8gRVNTTCAzLjAwLjQgc2VjdGlv
biA0LjIuNC4KKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJsb2NhbCBmdW5jdGlvbiBwcm90b3R5
cGUgZGVjbGFyYXRpb25zIGFyZSBub3QgYWxsb3dlZCIsICJmdW5jdGlvbiIpOworICAgICAgICBy
ZWNvdmVyKCk7CisgICAgfQorCisgICAgcmV0dXJuIHByb3RvdHlwZTsKK30KKworVEludGVybUFn
Z3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25EZWZpbml0aW9uKGNvbnN0IFRGdW5j
dGlvbiAmZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Cb2R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKQorewor
ICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0dXJuIHR5
cGUgIT0gdm9pZCA/CisgICAgLy8gICBNYXkgYmUgYmVzdCBkb25lIGFzIHBvc3QgcHJvY2VzcyBw
aGFzZSBvbiBpbnRlcm1lZGlhdGUgY29kZQorICAgIGlmIChtQ3VycmVudEZ1bmN0aW9uVHlwZS0+
Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhbUZ1bmN0aW9uUmV0dXJuc1ZhbHVlKQorICAg
IHsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2
YWx1ZToiLCAiIiwgZnVuY3Rpb24uZ2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICByZWNvdmVy
KCk7CisgICAgfQorCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0KKyAgICAgICAg
aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoZnVuY3Rpb25Qcm90b3R5cGUsIGZ1bmN0aW9uQm9k
eSwgbG9jYXRpb24pOworICAgIGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihhZ2dy
ZWdhdGUsIEVPcEZ1bmN0aW9uLCBsb2NhdGlvbik7CisgICAgYWdncmVnYXRlLT5zZXROYW1lKGZ1
bmN0aW9uLmdldE1hbmdsZWROYW1lKCkuY19zdHIoKSk7CisgICAgYWdncmVnYXRlLT5zZXRUeXBl
KGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSk7CisgICAgYWdncmVnYXRlLT5zZXRGdW5jdGlvbklk
KGZ1bmN0aW9uLmdldFVuaXF1ZUlkKCkpOworCisgICAgc3ltYm9sVGFibGUucG9wKCk7CisgICAg
cmV0dXJuIGFnZ3JlZ2F0ZTsKK30KKwordm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUZ1bmN0aW9u
UHJvdG90eXBlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqKmFnZ3Jl
Z2F0ZU91dCkKK3sKKyAgICBjb25zdCBUU3ltYm9sICpidWlsdEluID0KKyAgICAgICAgc3ltYm9s
VGFibGUuZmluZEJ1aWx0SW4oZnVuY3Rpb24tPmdldE1hbmdsZWROYW1lKCksIGdldFNoYWRlclZl
cnNpb24oKSk7CisKKyAgICBpZiAoYnVpbHRJbikKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0
aW9uLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlZmluZWQiLCBmdW5jdGlvbi0+
Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICByZWNvdmVyKCk7CisgICAgfQorCisgICAgVEZ1
bmN0aW9uICpwcmV2RGVjID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KHN5bWJv
bFRhYmxlLmZpbmQoZnVuY3Rpb24tPmdldE1hbmdsZWROYW1lKCksIGdldFNoYWRlclZlcnNpb24o
KSkpOworICAgIC8vCisgICAgLy8gTm90ZTogICdwcmV2RGVjJyBjb3VsZCBiZSAnZnVuY3Rpb24n
IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UndmUgc2VlbiBmdW5jdGlvbgorICAgIC8vIGFz
IGl0IHdvdWxkIGhhdmUganVzdCBiZWVuIHB1dCBpbiB0aGUgc3ltYm9sIHRhYmxlLiAgT3RoZXJ3
aXNlLCB3ZSdyZSBsb29raW5nIHVwCisgICAgLy8gYW4gZWFybGllciBvY2N1cmFuY2UuCisgICAg
Ly8KKyAgICBpZiAocHJldkRlYy0+aXNEZWZpbmVkKCkpCisgICAgeworICAgICAgICAvLyBUaGVu
IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgorICAgICAgICBlcnJvcihsb2NhdGlv
biwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19z
dHIoKSk7CisgICAgICAgIHJlY292ZXIoKTsKKyAgICB9CisgICAgcHJldkRlYy0+c2V0RGVmaW5l
ZCgpOworICAgIC8vCisgICAgLy8gT3ZlcmxvYWQgdGhlIHVuaXF1ZSBJRCBvZiB0aGUgZGVmaW5p
dGlvbiB0byBiZSB0aGUgc2FtZSB1bmlxdWUgSUQgYXMgdGhlIGRlY2xhcmF0aW9uLgorICAgIC8v
IEV2ZW50dWFsbHkgd2Ugd2lsbCBwcm9iYWJseSB3YW50IHRvIGhhdmUgb25seSBhIHNpbmdsZSBk
ZWZpbml0aW9uIGFuZCBqdXN0IHN3YXAgdGhlCisgICAgLy8gYXJndW1lbnRzIHRvIGJlIHRoZSBk
ZWZpbml0aW9uJ3MgYXJndW1lbnRzLgorICAgIC8vCisgICAgZnVuY3Rpb24tPnNldFVuaXF1ZUlk
KHByZXZEZWMtPmdldFVuaXF1ZUlkKCkpOworCisgICAgLy8gUmFpc2UgZXJyb3IgbWVzc2FnZSBp
ZiBtYWluIGZ1bmN0aW9uIHRha2VzIGFueSBwYXJhbWV0ZXJzIG9yIHJldHVybiBhbnl0aGluZyBv
dGhlciB0aGFuIHZvaWQKKyAgICBpZiAoZnVuY3Rpb24tPmdldE5hbWUoKSA9PSAibWFpbiIpCisg
ICAgeworICAgICAgICBpZiAoZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKSA+IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZnVuY3Rpb24gY2Fubm90IHRha2UgYW55
IHBhcmFtZXRlcihzKSIsIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAg
ICByZWNvdmVyKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRSZXR1cm5U
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZXJyb3IobG9jYXRpb24sICIiLCBmdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljU3Ry
aW5nKCksCisgICAgICAgICAgICAgICAgICAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEg
dmFsdWUiKTsKKyAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vCisgICAgLy8gUmVtZW1iZXIgdGhlIHJldHVybiB0eXBlIGZvciBsYXRlciBjaGVja2luZyBm
b3IgUkVUVVJOIHN0YXRlbWVudHMuCisgICAgLy8KKyAgICBtQ3VycmVudEZ1bmN0aW9uVHlwZSAg
PSAmKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSk7CisgICAgbUZ1bmN0aW9uUmV0dXJuc1ZhbHVl
ID0gZmFsc2U7CisKKyAgICAvLworICAgIC8vIEluc2VydCBwYXJhbWV0ZXJzIGludG8gdGhlIHN5
bWJvbCB0YWJsZS4KKyAgICAvLyBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBuYW1lLCBpdCdzIG5v
dCBhbiBlcnJvciwganVzdCBkb24ndCBpbnNlcnQgaXQKKyAgICAvLyAoY291bGQgYmUgdXNlZCBm
b3IgdW51c2VkIGFyZ3MpLgorICAgIC8vCisgICAgLy8gQWxzbywgYWNjdW11bGF0ZSB0aGUgbGlz
dCBvZiBwYXJhbWV0ZXJzIGludG8gdGhlIEhJTCwgc28gbG93ZXIgbGV2ZWwgY29kZQorICAgIC8v
IGtub3dzIHdoZXJlIHRvIGZpbmQgcGFyYW1ldGVycy4KKyAgICAvLworICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKnBhcmFtTm9kZXMgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCk7IGkrKykKKyAgICB7CisgICAg
ICAgIGNvbnN0IFRDb25zdFBhcmFtZXRlciAmcGFyYW0gPSBmdW5jdGlvbi0+Z2V0UGFyYW0oaSk7
CisgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIFRW
YXJpYWJsZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBl
KTsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMg
d2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCisgICAgICAgICAgICAvLworICAgICAgICAg
ICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJlKHZhcmlhYmxlKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5n
ZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAg
ICAgICAgIHBhcmFtTm9kZXMgPSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1Ob2RlcywgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBh
cmFtLnR5cGUsIGxvY2F0aW9uKSwgbG9jYXRpb24pOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gQWRkIHRo
ZSBwYXJhbWV0ZXIgdG8gdGhlIEhJTAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIFRJbnRl
cm1TeW1ib2wgKnN5bWJvbCA9IGludGVybWVkaWF0ZS5hZGRTeW1ib2woCisgICAgICAgICAgICAg
ICAgdmFyaWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxl
LT5nZXRUeXBlKCksIGxvY2F0aW9uKTsKKworICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKHBhcmFtTm9kZXMsIHN5bWJvbCwgbG9jYXRpb24pOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcGFyYW1Ob2RlcyA9
IGludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKAorICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMs
IGludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBsb2NhdGlvbiksIGxv
Y2F0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRl
T3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVycywgbG9jYXRpb24pOworICAgICphZ2dy
ZWdhdGVPdXQgPSBwYXJhbU5vZGVzOworICAgIHNldExvb3BOZXN0aW5nTGV2ZWwoMCk7Cit9CisK
K1RGdW5jdGlvbiAqVFBhcnNlQ29udGV4dDo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoY29uc3Qg
VFNvdXJjZUxvYyAmbG9jYXRpb24sIFRGdW5jdGlvbiAqZnVuY3Rpb24pCit7CisgICAgLy8KKyAg
ICAvLyBXZSBkb24ndCBrbm93IGF0IHRoaXMgcG9pbnQgd2hldGhlciB0aGlzIGlzIGEgZnVuY3Rp
b24gZGVmaW5pdGlvbiBvciBhIHByb3RvdHlwZS4KKyAgICAvLyBUaGUgZGVmaW5pdGlvbiBwcm9k
dWN0aW9uIGNvZGUgd2lsbCBjaGVjayBmb3IgcmVkZWZpbml0aW9ucy4KKyAgICAvLyBJbiB0aGUg
Y2FzZSBvZiBFU1NMIDEuMDAgdGhlIHByb3RvdHlwZSBwcm9kdWN0aW9uIGNvZGUgd2lsbCBhbHNv
IGNoZWNrIGZvciByZWRlY2xhcmF0aW9ucy4KKyAgICAvLworICAgIC8vIFJldHVybiB0eXBlcyBh
bmQgcGFyYW1ldGVyIHF1YWxpZmllcnMgbXVzdCBtYXRjaCBpbiBhbGwgcmVkZWNsYXJhdGlvbnMs
IHNvIHRob3NlIGFyZSBjaGVja2VkCisgICAgLy8gaGVyZS4KKyAgICAvLworICAgIFRGdW5jdGlv
biAqcHJldkRlYyA9CisgICAgICAgIHN0YXRpY19jYXN0PFRGdW5jdGlvbiAqPihzeW1ib2xUYWJs
ZS5maW5kKGZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpKTsK
KworICAgIGlmIChnZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwICYmIHN5bWJvbFRhYmxlLmhhc1Vu
bWFuZ2xlZEJ1aWx0SW4oZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKSkKKyAgICB7CisgICAg
ICAgIC8vIFdpdGggRVNTTCAzLjAwLCBuYW1lcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgY2Fubm90
IGJlIHJlZGVjbGFyZWQgYXMgZnVuY3Rpb25zLgorICAgICAgICAvLyBUaGVyZWZvcmUgb3Zlcmxv
YWRpbmcgb3IgcmVkZWZpbmluZyBidWlsdGluIGZ1bmN0aW9ucyBpcyBhbiBlcnJvci4KKyAgICAg
ICAgZXJyb3IobG9jYXRpb24sICJOYW1lIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24gY2Fubm90IGJl
IHJlZGVjbGFyZWQgYXMgZnVuY3Rpb24iLAorICAgICAgICAgICAgICBmdW5jdGlvbi0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOworICAgICAgICByZWNvdmVyKCk7CisgICAgfQorICAgIGVsc2UgaWYgKHBy
ZXZEZWMpCisgICAgeworICAgICAgICBpZiAocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgpICE9IGZ1
bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHJldHVybiB0
eXBlIiwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFz
aWNTdHJpbmcoKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIH0KKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7ICsraSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1
YWxpZmllcigpICE9CisgICAgICAgICAgICAgICAgZnVuY3Rpb24tPmdldFBhcmFtKGkpLnR5cGUt
PmdldFF1YWxpZmllcigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAib3ZlcmxvYWRlZCBmdW5jdGlvbnMgbXVzdCBoYXZlIHRoZSBzYW1lIHBhcmFtZXRl
ciBxdWFsaWZpZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbi0+Z2V0UGFyYW0o
aSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIHJlY292ZXIo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vCisgICAgLy8gQ2hl
Y2sgZm9yIHByZXZpb3VzbHkgZGVjbGFyZWQgdmFyaWFibGVzIHVzaW5nIHRoZSBzYW1lIG5hbWUu
CisgICAgLy8KKyAgICBUU3ltYm9sICpwcmV2U3ltID0gc3ltYm9sVGFibGUuZmluZChmdW5jdGlv
bi0+Z2V0TmFtZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpOworICAgIGlmIChwcmV2U3ltKQorICAg
IHsKKyAgICAgICAgaWYgKCFwcmV2U3ltLT5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGVycm9yKGxvY2F0aW9uLCAicmVkZWZpbml0aW9uIiwgZnVuY3Rpb24tPmdldE5hbWUo
KS5jX3N0cigpLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBJbnNlcnQgdGhlIHVubWFuZ2xl
ZCBuYW1lIHRvIGRldGVjdCBwb3RlbnRpYWwgZnV0dXJlIHJlZGVmaW5pdGlvbiBhcyBhIHZhcmlh
YmxlLgorICAgICAgICBURnVuY3Rpb24gKm5ld0Z1bmN0aW9uID0KKyAgICAgICAgICAgIG5ldyBU
RnVuY3Rpb24oTmV3UG9vbFRTdHJpbmcoZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKSwgJmZ1
bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkpOworICAgICAgICBzeW1ib2xUYWJsZS5nZXRPdXRlckxl
dmVsKCktPmluc2VydFVubWFuZ2xlZChuZXdGdW5jdGlvbik7CisgICAgfQorCisgICAgLy8gV2Un
cmUgYXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBh
bmQgYm9keSBzdGF0ZW1lbnQuCisgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgdG8g
dGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCisgICAgc3ltYm9sVGFibGUuZ2V0T3V0ZXJM
ZXZlbCgpLT5pbnNlcnQoZnVuY3Rpb24pOworCisgICAgLy8KKyAgICAvLyBJZiB0aGlzIGlzIGEg
cmVkZWNsYXJhdGlvbiwgaXQgY291bGQgYWxzbyBiZSBhIGRlZmluaXRpb24sIGluIHdoaWNoIGNh
c2UsIHdlIHdhbnQgdG8gdXNlIHRoZQorICAgIC8vIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhpcyBv
bmUsIGFuZCBub3QgdGhlIG9uZSB0aGF0J3MKKyAgICAvLyBiZWluZyByZWRlY2xhcmVkLiAgU28s
IHBhc3MgYmFjayB1cCB0aGlzIGRlY2xhcmF0aW9uLCBub3QgdGhlIG9uZSBpbiB0aGUgc3ltYm9s
IHRhYmxlLgorICAgIC8vCisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCitURnVuY3Rpb24gKlRQ
YXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yRnVuYyhjb25zdCBUUHVibGljVHlwZSAmcHVibGlj
VHlwZUluKQoreworICAgIFRQdWJsaWNUeXBlIHB1YmxpY1R5cGUgPSBwdWJsaWNUeXBlSW47Cisg
ICAgaWYgKHB1YmxpY1R5cGUuaXNTdHJ1Y3RTcGVjaWZpZXIpCisgICAgeworICAgICAgICBlcnJv
cihwdWJsaWNUeXBlLmxpbmUsICJjb25zdHJ1Y3RvciBjYW4ndCBiZSBhIHN0cnVjdHVyZSBkZWZp
bml0aW9uIiwKKyAgICAgICAgICAgICAgZ2V0QmFzaWNTdHJpbmcocHVibGljVHlwZS50eXBlKSk7
CisgICAgICAgIHJlY292ZXIoKTsKKyAgICB9CisKICAgICBUT3BlcmF0b3Igb3AgPSBFT3BOdWxs
OwogICAgIGlmIChwdWJsaWNUeXBlLnVzZXJEZWYpCiAgICAgewpAQCAtMTY0MSw2MCArMjE5Nywx
MzEgQEAKICAgICB7CiAgICAgICAgIHN3aXRjaCAocHVibGljVHlwZS50eXBlKQogICAgICAgICB7
Ci0gICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgIGlmIChwdWJsaWNUeXBlLmlz
TWF0cml4KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETzogbm9uLXNx
dWFyZSBtYXRyaWNlcwotICAgICAgICAgICAgICAgIHN3aXRjaChwdWJsaWNUeXBlLmdldENvbHMo
KSkKKyAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgaWYgKHB1Ymxp
Y1R5cGUuaXNNYXRyaXgoKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBj
YXNlIDI6IG9wID0gRU9wQ29uc3RydWN0TWF0MjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
Y2FzZSAzOiBvcCA9IEVPcENvbnN0cnVjdE1hdDM7ICBicmVhazsKLSAgICAgICAgICAgICAgICAg
IGNhc2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RNYXQ0OyAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXRDb2xzKCkpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Um93cygpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RNYXQyOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wID0gRU9wQ29uc3RydWN0TWF0MngzOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0
Mng0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXRSb3dzKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDN4MjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcCA9IEVPcENvbnN0cnVjdE1hdDM7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RN
YXQzeDQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3dpdGNoIChwdWJsaWNUeXBlLmdldFJvd3MoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NHgy
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0TWF0NHgzOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3Ry
dWN0TWF0NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
d2l0Y2gocHVibGljVHlwZS5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDE6IG9wID0gRU9wQ29u
c3RydWN0RmxvYXQ7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSAyOiBvcCA9IEVPcENv
bnN0cnVjdFZlYzI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BD
b25zdHJ1Y3RWZWMzOyAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDQ6IG9wID0gRU9w
Q29uc3RydWN0VmVjNDsgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHB1Ymxp
Y1R5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wID0g
RU9wQ29uc3RydWN0RmxvYXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3AgPSBFT3BDb25zdHJ1Y3RWZWMyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0VmVjMzsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdFZlYzQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgc3dpdGNoKHB1Ymxp
Y1R5cGUuZ2V0Tm9taW5hbFNpemUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2Fz
ZSAxOiBvcCA9IEVPcENvbnN0cnVjdEludDsgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAy
OiBvcCA9IEVPcENvbnN0cnVjdElWZWMyOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAzOiBv
cCA9IEVPcENvbnN0cnVjdElWZWMzOyBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9
IEVPcENvbnN0cnVjdElWZWM0OyBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgc3dpdGNoIChw
dWJsaWNUeXBlLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0
cnVjdEludDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdElW
ZWMyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0SVZlYzM7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RJVmVjNDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgIHN3
aXRjaChwdWJsaWNUeXBlLmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIGNhc2UgMTogb3AgPSBFT3BDb25zdHJ1Y3RVSW50OyAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgMjogb3AgPSBFT3BDb25zdHJ1Y3RVVmVjMjsgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RVVmVjMzsgYnJlYWs7Ci0gICAgICAgICAgICAgIGNh
c2UgNDogb3AgPSBFT3BDb25zdHJ1Y3RVVmVjNDsgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHB1YmxpY1R5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9w
ID0gRU9wQ29uc3RydWN0VUludDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IEVP
cENvbnN0cnVjdFVWZWMyOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wID0gRU9wQ29u
c3RydWN0VVZlYzM7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1
Y3RVVmVjNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAg
ICAgICAgICAgIHN3aXRjaChwdWJsaWNUeXBlLmdldE5vbWluYWxTaXplKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOiBvcCA9IEVPcENvbnN0cnVjdEJvb2w7ICBicmVh
azsKLSAgICAgICAgICAgICAgICBjYXNlIDI6IG9wID0gRU9wQ29uc3RydWN0QlZlYzI7IGJyZWFr
OwotICAgICAgICAgICAgICAgIGNhc2UgMzogb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgY2FzZSA0OiBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OyBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFYnRC
b29sOgorICAgICAgICAgICAgICAgIHN3aXRjaCAocHVibGljVHlwZS5nZXROb21pbmFsU2l6ZSgp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAg
ICAgICAgICAgICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RCb29sOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0QlZlYzI7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAg
ICAgICAgICAgb3AgPSBFT3BDb25zdHJ1Y3RCVmVjMzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICBvcCA9IEVPcENvbnN0cnVjdEJWZWM0OworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG9wID09IEVPcE51bGwpCkBAIC0xNzAy
LDM0ICsyMzI5LDM0IEBACiAgICAgICAgICAgICBlcnJvcihwdWJsaWNUeXBlLmxpbmUsICJjYW5u
b3QgY29uc3RydWN0IHRoaXMgdHlwZSIsIGdldEJhc2ljU3RyaW5nKHB1YmxpY1R5cGUudHlwZSkp
OwogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICAgICAgcHVibGljVHlwZS50eXBlID0g
RWJ0RmxvYXQ7Ci0gICAgICAgICAgICBvcCA9IEVPcENvbnN0cnVjdEZsb2F0OworICAgICAgICAg
ICAgb3AgICAgICAgICAgICAgID0gRU9wQ29uc3RydWN0RmxvYXQ7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBUU3RyaW5nIHRlbXBTdHJpbmc7Ci0gICAgVFR5cGUgdHlwZShwdWJsaWNUeXBlKTsK
KyAgICBjb25zdCBUVHlwZSAqdHlwZSA9IG5ldyBUVHlwZShwdWJsaWNUeXBlKTsKICAgICByZXR1
cm4gbmV3IFRGdW5jdGlvbigmdGVtcFN0cmluZywgdHlwZSwgb3ApOwogfQogCi0vLyBUaGlzIGZ1
bmN0aW9uIGlzIHVzZWQgdG8gdGVzdCBmb3IgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBwYXJhbWV0
ZXJzIHBhc3NlZCB0byB2YXJpb3VzIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucwotLy8gYW5kIGFsc28g
Y29udmVydCB0aGVtIHRvIHRoZSByaWdodCBkYXRhdHlwZSBpZiBpdCBpcyBhbGxvd2VkIGFuZCBy
ZXF1aXJlZC4gCisvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdGVzdCBmb3IgdGhlIGNvcnJl
Y3RuZXNzIG9mIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB2YXJpb3VzIGNvbnN0cnVjdG9yCisv
LyBmdW5jdGlvbnMgYW5kIGFsc28gY29udmVydCB0aGVtIHRvIHRoZSByaWdodCBkYXRhdHlwZSBp
ZiBpdCBpcyBhbGxvd2VkIGFuZCByZXF1aXJlZC4KIC8vCiAvLyBSZXR1cm5zIDAgZm9yIGFuIGVy
cm9yIG9yIHRoZSBjb25zdHJ1Y3RlZCBub2RlIChhZ2dyZWdhdGUgb3IgdHlwZWQpIGZvciBubyBl
cnJvci4KIC8vCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yKFRJ
bnRlcm1Ob2RlICphcmd1bWVudHMsIFRUeXBlICp0eXBlLCBUT3BlcmF0b3Igb3AsIFRGdW5jdGlv
biAqZm5DYWxsLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorVEludGVybVR5cGVkICpUUGFyc2VD
b250ZXh0OjphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSAqYXJndW1lbnRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZSAqdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKmZuQ2FsbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSkKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVBcmd1bWVudHMg
PSBhcmd1bWVudHMtPmdldEFzQWdncmVnYXRlKCk7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29u
c3RydWN0b3IgPSBhcmd1bWVudHMtPmdldEFzQWdncmVnYXRlKCk7CisgICAgQVNTRVJUKGNvbnN0
cnVjdG9yICE9IG51bGxwdHIpOwogCi0gICAgaWYgKCFhZ2dyZWdhdGVBcmd1bWVudHMpCi0gICAg
ewotICAgICAgICBhZ2dyZWdhdGVBcmd1bWVudHMgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKLSAg
ICAgICAgYWdncmVnYXRlQXJndW1lbnRzLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soYXJndW1l
bnRzKTsKLSAgICB9Ci0KICAgICBpZiAodHlwZS0+aXNBcnJheSgpKQogICAgIHsKLSAgICAgICAg
Ly8gR0xTTCBFUyAzLjAwIHNlY3Rpb24gNS40LjQ6IEVhY2ggYXJndW1lbnQgbXVzdCBiZSB0aGUg
c2FtZSB0eXBlIGFzIHRoZSBlbGVtZW50IHR5cGUgb2YgdGhlIGFycmF5LgotICAgICAgICBUSW50
ZXJtU2VxdWVuY2UgKmFyZ3MgPSBhZ2dyZWdhdGVBcmd1bWVudHMtPmdldFNlcXVlbmNlKCk7Cisg
ICAgICAgIC8vIEdMU0wgRVMgMy4wMCBzZWN0aW9uIDUuNC40OiBFYWNoIGFyZ3VtZW50IG11c3Qg
YmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgZWxlbWVudCB0eXBlIG9mCisgICAgICAgIC8vIHRoZSBh
cnJheS4KKyAgICAgICAgVEludGVybVNlcXVlbmNlICphcmdzID0gY29uc3RydWN0b3ItPmdldFNl
cXVlbmNlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJncy0+c2l6ZSgpOyBp
KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZhcmdUeXBlID0gKCphcmdz
KVtpXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCk7CkBAIC0xNzQ2LDEzICsyMzczLDE0IEBACiAg
ICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0KQogICAgIHsKICAgICAgICAgY29u
c3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlwZS0+Z2V0U3RydWN0KCktPmZpZWxkcygpOwotICAg
ICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3MgPSBhZ2dyZWdhdGVBcmd1bWVudHMtPmdldFNlcXVl
bmNlKCk7CisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJncyAgICA9IGNvbnN0cnVjdG9yLT5n
ZXRTZXF1ZW5jZSgpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNp
emUoKTsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaSA+PSBhcmdzLT5zaXplKCkg
fHwgKCphcmdzKVtpXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkgIT0gKmZpZWxkc1tpXS0+dHlw
ZSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJTdHJ1Y3R1
cmUgY29uc3RydWN0b3IgYXJndW1lbnRzIGRvIG5vdCBtYXRjaCBzdHJ1Y3R1cmUgZmllbGRzIiwg
IkVycm9yIik7CisgICAgICAgICAgICAgICAgZXJyb3IobGluZSwgIlN0cnVjdHVyZSBjb25zdHJ1
Y3RvciBhcmd1bWVudHMgZG8gbm90IG1hdGNoIHN0cnVjdHVyZSBmaWVsZHMiLAorICAgICAgICAg
ICAgICAgICAgICAgICJFcnJvciIpOwogICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKIAogICAg
ICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTc2MSwxMyArMjM4OSwxMyBAQAogICAgIH0KIAog
ICAgIC8vIFR1cm4gdGhlIGFyZ3VtZW50IGxpc3QgaXRzZWxmIGludG8gYSBjb25zdHJ1Y3Rvcgot
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdG9yID0gaW50ZXJtZWRpYXRlLnNldEFnZ3Jl
Z2F0ZU9wZXJhdG9yKGFnZ3JlZ2F0ZUFyZ3VtZW50cywgb3AsIGxpbmUpOwotICAgIFRJbnRlcm1U
eXBlZCAqY29uc3RDb25zdHJ1Y3RvciA9IGZvbGRDb25zdENvbnN0cnVjdG9yKGNvbnN0cnVjdG9y
LCAqdHlwZSk7Ci0gICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCi0gICAgewotICAgICAgICByZXR1
cm4gY29uc3RDb25zdHJ1Y3RvcjsKLSAgICB9CisgICAgY29uc3RydWN0b3ItPnNldE9wKG9wKTsK
KyAgICBjb25zdHJ1Y3Rvci0+c2V0TGluZShsaW5lKTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3It
PmlzQ29uc3RydWN0b3IoKSk7CiAKKyAgICAvLyBOZWVkIHRvIHNldCB0eXBlIGJlZm9yZSBzZXRQ
cmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSBiZWNhdXNlIGJvb2wgZG9lc24ndCBoYXZlIHByZWNpc2lv
bi4KKyAgICBjb25zdHJ1Y3Rvci0+c2V0VHlwZSgqdHlwZSk7CisKICAgICAvLyBTdHJ1Y3RzIHNo
b3VsZCBub3QgYmUgcHJlY2lzaW9uIHF1YWxpZmllZCwgdGhlIGluZGl2aWR1YWwgbWVtYmVycyBt
YXkgYmUuCiAgICAgLy8gQnVpbHQtaW4gdHlwZXMgb24gdGhlIG90aGVyIGhhbmQgc2hvdWxkIGJl
IHByZWNpc2lvbiBxdWFsaWZpZWQuCiAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCkK
QEAgLTE3NzYsMTc0ICsyNDA0LDE0MiBAQAogICAgICAgICB0eXBlLT5zZXRQcmVjaXNpb24oY29u
c3RydWN0b3ItPmdldFByZWNpc2lvbigpKTsKICAgICB9CiAKLSAgICByZXR1cm4gY29uc3RydWN0
b3I7Ci19Ci0KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6Zm9sZENvbnN0Q29uc3RydWN0
b3IoVEludGVybUFnZ3JlZ2F0ZSogYWdnck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBlKQotewotICAg
IC8vIFRPRE86IEFkZCBzdXBwb3J0IGZvciBmb2xkaW5nIGFycmF5IGNvbnN0cnVjdG9ycwotICAg
IGJvb2wgY2FuQmVGb2xkZWQgPSBhcmVBbGxDaGlsZENvbnN0KGFnZ3JOb2RlKSAmJiAhdHlwZS5p
c0FycmF5KCk7Ci0gICAgYWdnck5vZGUtPnNldFR5cGUodHlwZSk7Ci0gICAgaWYgKGNhbkJlRm9s
ZGVkKSB7Ci0gICAgICAgIGJvb2wgcmV0dXJuVmFsID0gZmFsc2U7Ci0gICAgICAgIFRDb25zdGFu
dFVuaW9uKiB1bmlvbkFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW3R5cGUuZ2V0T2JqZWN0U2l6
ZSgpXTsKLSAgICAgICAgaWYgKGFnZ3JOb2RlLT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgPT0gMSkg
IHsKLSAgICAgICAgICAgIHJldHVyblZhbCA9IGludGVybWVkaWF0ZS5wYXJzZUNvbnN0VHJlZShh
Z2dyTm9kZS0+Z2V0TGluZSgpLCBhZ2dyTm9kZSwgdW5pb25BcnJheSwgYWdnck5vZGUtPmdldE9w
KCksIHR5cGUsIHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
cmV0dXJuVmFsID0gaW50ZXJtZWRpYXRlLnBhcnNlQ29uc3RUcmVlKGFnZ3JOb2RlLT5nZXRMaW5l
KCksIGFnZ3JOb2RlLCB1bmlvbkFycmF5LCBhZ2dyTm9kZS0+Z2V0T3AoKSwgdHlwZSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHJldHVyblZhbCkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0g
ICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCB0
eXBlLCBhZ2dyTm9kZS0+Z2V0TGluZSgpKTsKKyAgICBUSW50ZXJtVHlwZWQgKmNvbnN0Q29uc3Ry
dWN0b3IgPSBpbnRlcm1lZGlhdGUuZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oY29uc3RydWN0b3IpOwor
ICAgIGlmIChjb25zdENvbnN0cnVjdG9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0Q29u
c3RydWN0b3I7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OwogfQogCiAvLwotLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmVlIHJlcHJlc2VudGF0
aW9uIGZvciB0aGUgdmVjdG9yIGZpZWxkKHMpIGJlaW5nIGFjY2Vzc2VkIGZyb20gY29udGFudCB2
ZWN0b3IuCi0vLyBJZiBvbmx5IG9uZSBjb21wb25lbnQgb2YgdmVjdG9yIGlzIGFjY2Vzc2VkICh2
Lnggb3IgdlswXSB3aGVyZSB2IGlzIGEgY29udGFudCB2ZWN0b3IpLCB0aGVuIGEgY29udGFudCBu
b2RlIGlzCi0vLyByZXR1cm5lZCwgZWxzZSBhbiBhZ2dyZWdhdGUgbm9kZSBpcyByZXR1cm5lZCAo
Zm9yIHYueHkpLiBUaGUgaW5wdXQgdG8gdGhpcyBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgdGhl
IHN5bWJvbAotLy8gbm9kZSBvciBpdCBjb3VsZCBiZSB0aGUgaW50ZXJtZWRpYXRlIHRyZWUgcmVw
cmVzZW50YXRpb24gb2YgYWNjZXNzaW5nIGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBv
ciBjb2x1bW4gb2YgCi0vLyBhIGNvbnN0YW50IG1hdHJpeC4KKy8vIFRoaXMgZnVuY3Rpb24gcmV0
dXJucyB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHZlY3RvciBmaWVsZChzKSBiZWlu
ZyBhY2Nlc3NlZCBmcm9tIGNvbnRhbnQKKy8vIHZlY3Rvci4KKy8vIElmIG9ubHkgb25lIGNvbXBv
bmVudCBvZiB2ZWN0b3IgaXMgYWNjZXNzZWQgKHYueCBvciB2WzBdIHdoZXJlIHYgaXMgYSBjb250
YW50IHZlY3RvciksIHRoZW4gYQorLy8gY29udGFudCBub2RlIGlzIHJldHVybmVkLCBlbHNlIGFu
IGFnZ3JlZ2F0ZSBub2RlIGlzIHJldHVybmVkIChmb3Igdi54eSkuIFRoZSBpbnB1dCB0byB0aGlz
CisvLyBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgdGhlIHN5bWJvbCBub2RlIG9yIGl0IGNvdWxk
IGJlIHRoZSBpbnRlcm1lZGlhdGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZgorLy8gYWNjZXNzaW5n
IGZpZWxkcyBpbiBhIGNvbnN0YW50IHN0cnVjdHVyZSBvciBjb2x1bW4gb2YgYSBjb25zdGFudCBt
YXRyaXguCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRDb25zdFZlY3Rvck5v
ZGUoVFZlY3RvckZpZWxkcyYgZmllbGRzLCBUSW50ZXJtVHlwZWQqIG5vZGUsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUpCitUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZENvbnN0VmVjdG9y
Tm9kZShUVmVjdG9yRmllbGRzICZmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IpCiB7Ci0gICAgVEludGVybVR5cGVkKiB0eXBlZE5v
ZGU7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJh
eSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisgICAgQVNTRVJUKHVuaW9uQXJyYXkp
OwogCi0gICAgY29uc3QgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXk7Ci0gICAgaWYgKHRlbXBD
b25zdGFudE5vZGUpIHsKLSAgICAgICAgdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdl
dFVuaW9uQXJyYXlQb2ludGVyKCk7CisgICAgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bZmllbGRzLm51bV07CiAKLSAgICAgICAgaWYgKCF1bmlvbkFycmF5
KSB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7IC8v
IFRoZSBub2RlIGhhcyB0byBiZSBlaXRoZXIgYSBzeW1ib2wgbm9kZSBvciBhbiBhZ2dyZWdhdGUg
bm9kZSBvciBhIHRlbXBDb25zdGFudCBub2RlLCBlbHNlLCBpdHMgYW4gZXJyb3IKLSAgICAgICAg
ZXJyb3IobGluZSwgIkNhbm5vdCBvZmZzZXQgaW50byB0aGUgdmVjdG9yIiwgIkVycm9yIik7Ci0g
ICAgICAgIHJlY292ZXIoKTsKLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBUQ29u
c3RhbnRVbmlvbiogY29uc3RBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltmaWVsZHMubnVtXTsK
LQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKSB7Ci0gICAgICAgIGlm
IChmaWVsZHMub2Zmc2V0c1tpXSA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSkg
eworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZmllbGRzLm51bTsgaSsrKQorICAgIHsKKyAgICAg
ICAgaWYgKGZpZWxkcy5vZmZzZXRzW2ldID49IG5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6
ZSgpKQorICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9T
dHJlYW07CiAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgInZlY3RvciBmaWVsZCBzZWxl
Y3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGZpZWxkcy5vZmZzZXRzW2ldIDw8ICInIjsKICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAg
ICAgICAgICAgIGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAg
ICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgIGZpZWxkcy5vZmZzZXRzW2ldID0gMDsKKyAg
ICAgICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsaW5lLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgICAgICBmaWVsZHMub2Zmc2V0c1tp
XSA9IG5vZGUtPmdldFR5cGUoKS5nZXROb21pbmFsU2l6ZSgpIC0gMTsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICBjb25zdEFycmF5W2ldID0gdW5pb25BcnJheVtmaWVsZHMub2Zmc2V0
c1tpXV07Ci0KLSAgICB9IAotICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKGNvbnN0QXJyYXksIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgcmV0dXJuIHR5
cGVkTm9kZTsKKyAgICB9CisgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9u
KGNvbnN0QXJyYXksIG5vZGUtPmdldFR5cGUoKSwgbGluZSk7CiB9CiAKIC8vCi0vLyBUaGlzIGZ1
bmN0aW9uIHJldHVybnMgdGhlIGNvbHVtbiBiZWluZyBhY2Nlc3NlZCBmcm9tIGEgY29uc3RhbnQg
bWF0cml4LiBUaGUgdmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbQotLy8gdGhlIHN5bWJvbCB0YWJs
ZSBhbmQgcGFyc2UtdHJlZSBpcyBidWlsdCBmb3IgYSB2ZWN0b3IgKGVhY2ggY29sdW1uIG9mIGEg
bWF0cml4IGlzIGEgdmVjdG9yKS4gVGhlIGlucHV0IAotLy8gdG8gdGhlIGZ1bmN0aW9uIGNvdWxk
IGVpdGhlciBiZSBhIHN5bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRy
aXgpdGhhdCByZXByZXNlbnRzIGEgCi0vLyBjb25zdGFudCBtYXRyaXggb3IgaXQgY291bGQgYmUg
dGhlIHRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnN0YW50IG1hdHJpeCAocy5tMVswXSB3
aGVyZSBzIGlzIGEgY29uc3RhbnQgc3RydWN0dXJlKQorLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5z
IHRoZSBjb2x1bW4gYmVpbmcgYWNjZXNzZWQgZnJvbSBhIGNvbnN0YW50IG1hdHJpeC4gVGhlIHZh
bHVlcyBhcmUgcmV0cmlldmVkCisvLyBmcm9tIHRoZSBzeW1ib2wgdGFibGUgYW5kIHBhcnNlLXRy
ZWUgaXMgYnVpbHQgZm9yIGEgdmVjdG9yIChlYWNoIGNvbHVtbiBvZiBhIG1hdHJpeCBpcyBhIHZl
Y3RvcikuCisvLyBUaGUgaW5wdXQgdG8gdGhlIGZ1bmN0aW9uIGNvdWxkIGVpdGhlciBiZSBhIHN5
bWJvbCBub2RlIChtWzBdIHdoZXJlIG0gaXMgYSBjb25zdGFudCBtYXRyaXgpdGhhdAorLy8gcmVw
cmVzZW50cyBhIGNvbnN0YW50IG1hdHJpeCBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNl
bnRhdGlvbiBvZiB0aGUgY29uc3RhbnQgbWF0cml4CisvLyAocy5tMVswXSB3aGVyZSBzIGlzIGEg
Y29uc3RhbnQgc3RydWN0dXJlKQogLy8KLVRJbnRlcm1UeXBlZCogVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RNYXRyaXhOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291
cmNlTG9jJiBsaW5lKQorVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25zdE1hdHJp
eE5vZGUoaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvdXRPZlJh
bmdlSW5kZXhJc0Vycm9yKQogewotICAgIFRJbnRlcm1UeXBlZCogdHlwZWROb2RlOwotICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uKiB0ZW1wQ29uc3RhbnROb2RlID0gbm9kZS0+Z2V0QXNDb25zdGFu
dFVuaW9uKCk7Ci0KLSAgICBpZiAoaW5kZXggPj0gbm9kZS0+Z2V0VHlwZSgpLmdldENvbHMoKSkg
eworICAgIGlmIChpbmRleCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0Q29scygpKQorICAgIHsKICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICBleHRyYUlu
Zm9TdHJlYW0gPDwgIm1hdHJpeCBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlICciIDw8IGlu
ZGV4IDw8ICInIjsKICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3Ry
ZWFtLnN0cigpOwotICAgICAgICBlcnJvcihsaW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIo
KSk7Ci0gICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgaW5kZXggPSAwOworICAgICAgICBvdXRP
ZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbGluZSwgIiIsICJbIiwgZXh0cmFJ
bmZvLmNfc3RyKCkpOworICAgICAgICBpbmRleCA9IG5vZGUtPmdldFR5cGUoKS5nZXRDb2xzKCkg
LSAxOwogICAgIH0KIAotICAgIGlmICh0ZW1wQ29uc3RhbnROb2RlKSB7Ci0gICAgICAgICBUQ29u
c3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7Ci0gICAgICAgICBpbnQgc2l6ZSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFR5cGUo
KS5nZXRDb2xzKCk7Ci0gICAgICAgICB0eXBlZE5vZGUgPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3Rh
bnRVbmlvbigmdW5pb25BcnJheVtzaXplKmluZGV4XSwgdGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlw
ZSgpLCBsaW5lKTsKLSAgICB9IGVsc2UgewotICAgICAgICBlcnJvcihsaW5lLCAiQ2Fubm90IG9m
ZnNldCBpbnRvIHRoZSBtYXRyaXgiLCAiRXJyb3IiKTsKLSAgICAgICAgcmVjb3ZlcigpOwotCi0g
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiB0eXBlZE5vZGU7CisgICAgY29u
c3QgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRl
cigpOworICAgIGludCBzaXplID0gbm9kZS0+Z2V0VHlwZSgpLmdldENvbHMoKTsKKyAgICByZXR1
cm4gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oJnVuaW9uQXJyYXlbc2l6ZSAqIGluZGV4
XSwgbm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsKIH0KIAotCiAvLwotLy8gVGhpcyBmdW5jdGlvbiBy
ZXR1cm5zIGFuIGVsZW1lbnQgb2YgYW4gYXJyYXkgYWNjZXNzZWQgZnJvbSBhIGNvbnN0YW50IGFy
cmF5LiBUaGUgdmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbQotLy8gdGhlIHN5bWJvbCB0YWJsZSBh
bmQgcGFyc2UtdHJlZSBpcyBidWlsdCBmb3IgdGhlIHR5cGUgb2YgdGhlIGVsZW1lbnQuIFRoZSBp
bnB1dCAKLS8vIHRvIHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRoZXIgYmUgYSBzeW1ib2wgbm9kZSAo
YVswXSB3aGVyZSBhIGlzIGEgY29uc3RhbnQgYXJyYXkpdGhhdCByZXByZXNlbnRzIGEgCi0vLyBj
b25zdGFudCBhcnJheSBvciBpdCBjb3VsZCBiZSB0aGUgdHJlZSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY29uc3RhbnQgYXJyYXkgKHMuYTFbMF0gd2hlcmUgcyBpcyBhIGNvbnN0YW50IHN0cnVjdHVy
ZSkKKy8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBlbGVtZW50IG9mIGFuIGFycmF5IGFjY2Vz
c2VkIGZyb20gYSBjb25zdGFudCBhcnJheS4gVGhlIHZhbHVlcyBhcmUKKy8vIHJldHJpZXZlZCBm
cm9tIHRoZSBzeW1ib2wgdGFibGUgYW5kIHBhcnNlLXRyZWUgaXMgYnVpbHQgZm9yIHRoZSB0eXBl
IG9mIHRoZSBlbGVtZW50LiBUaGUgaW5wdXQKKy8vIHRvIHRoZSBmdW5jdGlvbiBjb3VsZCBlaXRo
ZXIgYmUgYSBzeW1ib2wgbm9kZSAoYVswXSB3aGVyZSBhIGlzIGEgY29uc3RhbnQgYXJyYXkpdGhh
dCByZXByZXNlbnRzIGEKKy8vIGNvbnN0YW50IGFycmF5IG9yIGl0IGNvdWxkIGJlIHRoZSB0cmVl
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb25zdGFudCBhcnJheSAocy5hMVswXSB3aGVyZSBzIGlz
IGEKKy8vIGNvbnN0YW50IHN0cnVjdHVyZSkKIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRl
eHQ6OmFkZENvbnN0QXJyYXlOb2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25z
dCBUU291cmNlTG9jJiBsaW5lKQorVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb25z
dEFycmF5Tm9kZShpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG91dE9m
UmFuZ2VJbmRleElzRXJyb3IpCiB7Ci0gICAgVEludGVybVR5cGVkKiB0eXBlZE5vZGU7Ci0gICAg
VEludGVybUNvbnN0YW50VW5pb24qIHRlbXBDb25zdGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0
YW50VW5pb24oKTsKICAgICBUVHlwZSBhcnJheUVsZW1lbnRUeXBlID0gbm9kZS0+Z2V0VHlwZSgp
OwogICAgIGFycmF5RWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKIAotICAgIGlmIChpbmRl
eCA+PSBub2RlLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkpIHsKKyAgICBpZiAoaW5kZXggPj0g
bm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKQorICAgIHsKICAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImFy
cmF5IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwogICAg
ICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAg
ICAgIGVycm9yKGxpbmUsICIiLCAiWyIsIGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgcmVj
b3ZlcigpOwotICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRP
ZlJhbmdlSW5kZXhJc0Vycm9yLCBsaW5lLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7Cisg
ICAgICAgIGluZGV4ID0gbm9kZS0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpIC0gMTsKICAgICB9
Ci0KLSAgICBpZiAodGVtcENvbnN0YW50Tm9kZSkgewotICAgICAgICBzaXplX3QgYXJyYXlFbGVt
ZW50U2l6ZSA9IGFycmF5RWxlbWVudFR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICBUQ29u
c3RhbnRVbmlvbiogdW5pb25BcnJheSA9IHRlbXBDb25zdGFudE5vZGUtPmdldFVuaW9uQXJyYXlQ
b2ludGVyKCk7Ci0gICAgICAgIHR5cGVkTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVu
aW9uKCZ1bmlvbkFycmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIHRlbXBDb25zdGFudE5v
ZGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXJyb3IobGluZSwg
IkNhbm5vdCBvZmZzZXQgaW50byB0aGUgYXJyYXkiLCAiRXJyb3IiKTsKLSAgICAgICAgcmVjb3Zl
cigpOwotCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiB0eXBlZE5vZGU7
CisgICAgc2l6ZV90IGFycmF5RWxlbWVudFNpemUgICAgICAgICAgPSBhcnJheUVsZW1lbnRUeXBl
LmdldE9iamVjdFNpemUoKTsKKyAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9
IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7CisgICAgcmV0dXJuIGludGVybWVkaWF0ZS5h
ZGRDb25zdGFudFVuaW9uKCZ1bmlvbkFycmF5W2FycmF5RWxlbWVudFNpemUgKiBpbmRleF0sIG5v
ZGUtPmdldFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZSk7CiB9CiAKLQogLy8KLS8vIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgb2Yg
YSBwYXJ0aWN1bGFyIGZpZWxkIGluc2lkZSBhIGNvbnN0YW50IHN0cnVjdHVyZSBmcm9tIHRoZSBz
eW1ib2wgdGFibGUuIAotLy8gSWYgdGhlcmUgaXMgYW4gZW1iZWRkZWQvbmVzdGVkIHN0cnVjdCwg
aXQgYXBwcm9wcmlhdGVseSBjYWxscyBhZGRDb25zdFN0cnVjdE5lc3RlZCBvciBhZGRDb25zdFN0
cnVjdEZyb21BZ2dyCi0vLyBmdW5jdGlvbiBhbmQgcmV0dXJucyB0aGUgcGFyc2UtdHJlZSB3aXRo
IHRoZSB2YWx1ZXMgb2YgdGhlIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QuCisvLyBUaGlzIGZ1bmN0
aW9uIHJldHVybnMgdGhlIHZhbHVlIG9mIGEgcGFydGljdWxhciBmaWVsZCBpbnNpZGUgYSBjb25z
dGFudCBzdHJ1Y3R1cmUgZnJvbSB0aGUgc3ltYm9sCisvLyB0YWJsZS4KKy8vIElmIHRoZXJlIGlz
IGFuIGVtYmVkZGVkL25lc3RlZCBzdHJ1Y3QsIGl0IGFwcHJvcHJpYXRlbHkgY2FsbHMgYWRkQ29u
c3RTdHJ1Y3ROZXN0ZWQgb3IKKy8vIGFkZENvbnN0U3RydWN0RnJvbUFnZ3IgZnVuY3Rpb24gYW5k
IHJldHVybnMgdGhlIHBhcnNlLXRyZWUgd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBlbWJlZGRlZC9u
ZXN0ZWQKKy8vIHN0cnVjdC4KIC8vCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZENv
bnN0U3RydWN0KGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsIFRJbnRlcm1UeXBlZCAqbm9kZSwg
Y29uc3QgVFNvdXJjZUxvYyYgbGluZSkKK1RJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRk
Q29uc3RTdHJ1Y3QoY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpub2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5l
KQogewotICAgIGNvbnN0IFRGaWVsZExpc3QmIGZpZWxkcyA9IG5vZGUtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKS0+ZmllbGRzKCk7Ci0gICAgc2l6ZV90IGluc3RhbmNlU2l6ZSA9IDA7CisgICAgY29u
c3QgVEZpZWxkTGlzdCAmZmllbGRzID0gbm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKKyAgICBzaXplX3QgaW5zdGFuY2VTaXplICAgICAgPSAwOwogCi0gICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAg
aWYgKGZpZWxkc1tpbmRleF0tPm5hbWUoKSA9PSBpZGVudGlmaWVyKSB7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkcy5zaXplKCk7ICsraW5kZXgpCisgICAgeworICAg
ICAgICBpZiAoZmllbGRzW2luZGV4XS0+bmFtZSgpID09IGlkZW50aWZpZXIpCisgICAgICAgIHsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgewogICAgICAgICAgICAgaW5zdGFuY2VTaXplICs9IGZpZWxkc1tpbmRl
eF0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgVElu
dGVybVR5cGVkICp0eXBlZE5vZGU7CiAgICAgVEludGVybUNvbnN0YW50VW5pb24gKnRlbXBDb25z
dGFudE5vZGUgPSBub2RlLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICBpZiAodGVtcENvbnN0
YW50Tm9kZSkgewotICAgICAgICAgVENvbnN0YW50VW5pb24qIGNvbnN0QXJyYXkgPSB0ZW1wQ29u
c3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOworICAgIGlmICh0ZW1wQ29uc3RhbnRO
b2RlKQorICAgIHsKKyAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSB0
ZW1wQ29uc3RhbnROb2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwogCi0gICAgICAgICB0eXBl
ZE5vZGUgPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5K2luc3RhbmNl
U2l6ZSwgdGVtcENvbnN0YW50Tm9kZS0+Z2V0VHlwZSgpLCBsaW5lKTsgLy8gdHlwZSB3aWxsIGJl
IGNoYW5nZWQgaW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24KLSAgICB9IGVsc2UgeworICAgICAgICAv
LyB0eXBlIHdpbGwgYmUgY2hhbmdlZCBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbgorICAgICAgICB0
eXBlZE5vZGUgPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5ICsgaW5z
dGFuY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZW1wQ29uc3RhbnROb2RlLT5nZXRUeXBlKCksIGxpbmUpOworICAgIH0KKyAgICBlbHNl
CisgICAgewogICAgICAgICBlcnJvcihsaW5lLCAiQ2Fubm90IG9mZnNldCBpbnRvIHRoZSBzdHJ1
Y3R1cmUiLCAiRXJyb3IiKTsKICAgICAgICAgcmVjb3ZlcigpOwogCkBAIC0xOTU2LDE1ICsyNTUy
LDIyIEBACiAvLwogLy8gSW50ZXJmYWNlL3VuaWZvcm0gYmxvY2tzCiAvLwotVEludGVybUFnZ3Jl
Z2F0ZSogVFBhcnNlQ29udGV4dDo6YWRkSW50ZXJmYWNlQmxvY2soY29uc3QgVFB1YmxpY1R5cGUm
IHR5cGVRdWFsaWZpZXIsIGNvbnN0IFRTb3VyY2VMb2MmIG5hbWVMaW5lLCBjb25zdCBUU3RyaW5n
JiBibG9ja05hbWUsIFRGaWVsZExpc3QqIGZpZWxkTGlzdCwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nKiBpbnN0YW5jZU5h
bWUsIGNvbnN0IFRTb3VyY2VMb2MmIGluc3RhbmNlTGluZSwgVEludGVybVR5cGVkKiBhcnJheUlu
ZGV4LCBjb25zdCBUU291cmNlTG9jJiBhcnJheUluZGV4TGluZSkKK1RJbnRlcm1BZ2dyZWdhdGUg
KlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBl
UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxpbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZibG9ja05hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRM
aXN0ICpmaWVsZExpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU3RyaW5nICppbnN0YW5jZU5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnN0
YW5jZUxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQgKmFycmF5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZhcnJheUluZGV4TGlu
ZSkKIHsKICAgICBpZiAocmVzZXJ2ZWRFcnJvckNoZWNrKG5hbWVMaW5lLCBibG9ja05hbWUpKQog
ICAgICAgICByZWNvdmVyKCk7CiAKICAgICBpZiAodHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0g
RXZxVW5pZm9ybSkKICAgICB7Ci0gICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImlu
dmFsaWQgcXVhbGlmaWVyOiIsIGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxp
ZmllciksICJpbnRlcmZhY2UgYmxvY2tzIG11c3QgYmUgdW5pZm9ybSIpOworICAgICAgICBlcnJv
cih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZhbGlkIHF1YWxpZmllcjoiLCBnZXRRdWFsaWZpZXJT
dHJpbmcodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpLAorICAgICAgICAgICAgICAiaW50ZXJmYWNl
IGJsb2NrcyBtdXN0IGJlIHVuaWZvcm0iKTsKICAgICAgICAgcmVjb3ZlcigpOwogICAgIH0KIApA
QCAtMTk3NiwzOSArMjU3OSw0NCBAQAogCiAgICAgaWYgKGJsb2NrTGF5b3V0UXVhbGlmaWVyLm1h
dHJpeFBhY2tpbmcgPT0gRW1wVW5zcGVjaWZpZWQpCiAgICAgewotICAgICAgICBibG9ja0xheW91
dFF1YWxpZmllci5tYXRyaXhQYWNraW5nID0gZGVmYXVsdE1hdHJpeFBhY2tpbmc7CisgICAgICAg
IGJsb2NrTGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSBtRGVmYXVsdE1hdHJpeFBhY2tp
bmc7CiAgICAgfQogCiAgICAgaWYgKGJsb2NrTGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSA9
PSBFYnNVbnNwZWNpZmllZCkKICAgICB7Ci0gICAgICAgIGJsb2NrTGF5b3V0UXVhbGlmaWVyLmJs
b2NrU3RvcmFnZSA9IGRlZmF1bHRCbG9ja1N0b3JhZ2U7CisgICAgICAgIGJsb2NrTGF5b3V0UXVh
bGlmaWVyLmJsb2NrU3RvcmFnZSA9IG1EZWZhdWx0QmxvY2tTdG9yYWdlOwogICAgIH0KIAotICAg
IFRTeW1ib2wqIGJsb2NrTmFtZVN5bWJvbCA9IG5ldyBUSW50ZXJmYWNlQmxvY2tOYW1lKCZibG9j
a05hbWUpOwotICAgIGlmICghc3ltYm9sVGFibGUuZGVjbGFyZShibG9ja05hbWVTeW1ib2wpKSB7
CisgICAgVFN5bWJvbCAqYmxvY2tOYW1lU3ltYm9sID0gbmV3IFRJbnRlcmZhY2VCbG9ja05hbWUo
JmJsb2NrTmFtZSk7CisgICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJlKGJsb2NrTmFtZVN5bWJv
bCkpCisgICAgewogICAgICAgICBlcnJvcihuYW1lTGluZSwgInJlZGVmaW5pdGlvbiIsIGJsb2Nr
TmFtZS5jX3N0cigpLCAiaW50ZXJmYWNlIGJsb2NrIG5hbWUiKTsKICAgICAgICAgcmVjb3Zlcigp
OwogICAgIH0KIAogICAgIC8vIGNoZWNrIGZvciBzYW1wbGVyIHR5cGVzIGFuZCBhcHBseSBsYXlv
dXQgcXVhbGlmaWVycwotICAgIGZvciAoc2l6ZV90IG1lbWJlckluZGV4ID0gMDsgbWVtYmVySW5k
ZXggPCBmaWVsZExpc3QtPnNpemUoKTsgKyttZW1iZXJJbmRleCkgewotICAgICAgICBURmllbGQq
IGZpZWxkID0gKCpmaWVsZExpc3QpW21lbWJlckluZGV4XTsKLSAgICAgICAgVFR5cGUqIGZpZWxk
VHlwZSA9IGZpZWxkLT50eXBlKCk7Ci0gICAgICAgIGlmIChJc1NhbXBsZXIoZmllbGRUeXBlLT5n
ZXRCYXNpY1R5cGUoKSkpIHsKLSAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJ1bnN1
cHBvcnRlZCB0eXBlIiwgZmllbGRUeXBlLT5nZXRCYXNpY1N0cmluZygpLCAic2FtcGxlciB0eXBl
cyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlIGJsb2NrcyIpOworICAgIGZvciAoc2l6ZV90
IG1lbWJlckluZGV4ID0gMDsgbWVtYmVySW5kZXggPCBmaWVsZExpc3QtPnNpemUoKTsgKyttZW1i
ZXJJbmRleCkKKyAgICB7CisgICAgICAgIFRGaWVsZCAqZmllbGQgICAgPSAoKmZpZWxkTGlzdClb
bWVtYmVySW5kZXhdOworICAgICAgICBUVHlwZSAqZmllbGRUeXBlID0gZmllbGQtPnR5cGUoKTsK
KyAgICAgICAgaWYgKElzU2FtcGxlcihmaWVsZFR5cGUtPmdldEJhc2ljVHlwZSgpKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwgInVuc3VwcG9ydGVkIHR5cGUi
LCBmaWVsZFR5cGUtPmdldEJhc2ljU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAic2FtcGxl
ciB0eXBlcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlIGJsb2NrcyIpOwogICAgICAgICAg
ICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKICAgICAgICAgY29uc3QgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBmaWVsZFR5cGUtPmdldFF1YWxpZmllcigpOwogICAgICAgICBzd2l0Y2ggKHF1YWxp
ZmllcikKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRXZxR2xvYmFsOgotICAgICAgICAgIGNh
c2UgRXZxVW5pZm9ybToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBlcnJvcihmaWVsZC0+bGluZSgpLCAiaW52YWxpZCBxdWFsaWZpZXIgb24gaW50
ZXJmYWNlIGJsb2NrIG1lbWJlciIsIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKLSAg
ICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFdnFHbG9iYWw6CisgICAgICAgICAgICBjYXNlIEV2cVVuaWZvcm06CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGVycm9yKGZp
ZWxkLT5saW5lKCksICJpbnZhbGlkIHF1YWxpZmllciBvbiBpbnRlcmZhY2UgYmxvY2sgbWVtYmVy
IiwKKyAgICAgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7
CisgICAgICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gY2hlY2sgbGF5b3V0IHF1YWxpZmllcnMKQEAgLTIwMjAsNyAr
MjYyOCw4IEBACiAKICAgICAgICAgaWYgKGZpZWxkTGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFn
ZSAhPSBFYnNVbnNwZWNpZmllZCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoZmllbGQt
PmxpbmUoKSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjoiLCBnZXRCbG9ja1N0b3JhZ2VTdHJp
bmcoZmllbGRMYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlKSwgImNhbm5vdCBiZSB1c2VkIGhl
cmUiKTsKKyAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJpbnZhbGlkIGxheW91dCBx
dWFsaWZpZXI6IiwKKyAgICAgICAgICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0cmluZyhmaWVs
ZExheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpLCAiY2Fubm90IGJlIHVzZWQgaGVyZSIpOwog
ICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKQEAgLTIwMjgsMTAgKzI2MzcsMTEg
QEAKICAgICAgICAgewogICAgICAgICAgICAgZmllbGRMYXlvdXRRdWFsaWZpZXIubWF0cml4UGFj
a2luZyA9IGJsb2NrTGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmc7CiAgICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoIWZpZWxkVHlwZS0+aXNNYXRyaXgoKSkKKyAgICAgICAgZWxzZSBpZiAo
IWZpZWxkVHlwZS0+aXNNYXRyaXgoKSAmJiBmaWVsZFR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVi
dFN0cnVjdCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwgImlu
dmFsaWQgbGF5b3V0IHF1YWxpZmllcjoiLCBnZXRNYXRyaXhQYWNraW5nU3RyaW5nKGZpZWxkTGF5
b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpLCAiY2FuIG9ubHkgYmUgdXNlZCBvbiBtYXRyaXgg
dHlwZXMiKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgIHdhcm5pbmcoZmll
bGQtPmxpbmUoKSwgImV4dHJhbmVvdXMgbGF5b3V0IHF1YWxpZmllcjoiLAorICAgICAgICAgICAg
ICAgICAgICBnZXRNYXRyaXhQYWNraW5nU3RyaW5nKGZpZWxkTGF5b3V0UXVhbGlmaWVyLm1hdHJp
eFBhY2tpbmcpLAorICAgICAgICAgICAgICAgICAgICAib25seSBoYXMgYW4gZWZmZWN0IG9uIG1h
dHJpeCB0eXBlcyIpOwogICAgICAgICB9CiAKICAgICAgICAgZmllbGRUeXBlLT5zZXRMYXlvdXRR
dWFsaWZpZXIoZmllbGRMYXlvdXRRdWFsaWZpZXIpOwpAQCAtMjA0NSw2MiArMjY1NSw3NCBAQAog
ICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgIH0KIAotICAgIFRJbnRlcmZhY2VCbG9jayogaW50
ZXJmYWNlQmxvY2sgPSBuZXcgVEludGVyZmFjZUJsb2NrKCZibG9ja05hbWUsIGZpZWxkTGlzdCwg
aW5zdGFuY2VOYW1lLCBhcnJheVNpemUsIGJsb2NrTGF5b3V0UXVhbGlmaWVyKTsKLSAgICBUVHlw
ZSBpbnRlcmZhY2VCbG9ja1R5cGUoaW50ZXJmYWNlQmxvY2ssIHR5cGVRdWFsaWZpZXIucXVhbGlm
aWVyLCBibG9ja0xheW91dFF1YWxpZmllciwgYXJyYXlTaXplKTsKKyAgICBUSW50ZXJmYWNlQmxv
Y2sgKmludGVyZmFjZUJsb2NrID0KKyAgICAgICAgbmV3IFRJbnRlcmZhY2VCbG9jaygmYmxvY2tO
YW1lLCBmaWVsZExpc3QsIGluc3RhbmNlTmFtZSwgYXJyYXlTaXplLCBibG9ja0xheW91dFF1YWxp
Zmllcik7CisgICAgVFR5cGUgaW50ZXJmYWNlQmxvY2tUeXBlKGludGVyZmFjZUJsb2NrLCB0eXBl
UXVhbGlmaWVyLnF1YWxpZmllciwgYmxvY2tMYXlvdXRRdWFsaWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFycmF5U2l6ZSk7CiAKICAgICBUU3RyaW5nIHN5bWJvbE5hbWUgPSAi
IjsKLSAgICBpbnQgc3ltYm9sSWQgPSAwOworICAgIGludCBzeW1ib2xJZCAgICAgICA9IDA7CiAK
ICAgICBpZiAoIWluc3RhbmNlTmFtZSkKICAgICB7CiAgICAgICAgIC8vIGRlZmluZSBzeW1ib2xz
IGZvciB0aGUgbWVtYmVycyBvZiB0aGUgaW50ZXJmYWNlIGJsb2NrCiAgICAgICAgIGZvciAoc2l6
ZV90IG1lbWJlckluZGV4ID0gMDsgbWVtYmVySW5kZXggPCBmaWVsZExpc3QtPnNpemUoKTsgKytt
ZW1iZXJJbmRleCkKICAgICAgICAgewotICAgICAgICAgICAgVEZpZWxkKiBmaWVsZCA9ICgqZmll
bGRMaXN0KVttZW1iZXJJbmRleF07Ci0gICAgICAgICAgICBUVHlwZSogZmllbGRUeXBlID0gZmll
bGQtPnR5cGUoKTsKKyAgICAgICAgICAgIFRGaWVsZCAqZmllbGQgICAgPSAoKmZpZWxkTGlzdClb
bWVtYmVySW5kZXhdOworICAgICAgICAgICAgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkLT50eXBl
KCk7CiAKICAgICAgICAgICAgIC8vIHNldCBwYXJlbnQgcG9pbnRlciBvZiB0aGUgZmllbGQgdmFy
aWFibGUKICAgICAgICAgICAgIGZpZWxkVHlwZS0+c2V0SW50ZXJmYWNlQmxvY2soaW50ZXJmYWNl
QmxvY2spOwogCi0gICAgICAgICAgICBUVmFyaWFibGUqIGZpZWxkVmFyaWFibGUgPSBuZXcgVFZh
cmlhYmxlKCZmaWVsZC0+bmFtZSgpLCAqZmllbGRUeXBlKTsKKyAgICAgICAgICAgIFRWYXJpYWJs
ZSAqZmllbGRWYXJpYWJsZSA9IG5ldyBUVmFyaWFibGUoJmZpZWxkLT5uYW1lKCksICpmaWVsZFR5
cGUpOwogICAgICAgICAgICAgZmllbGRWYXJpYWJsZS0+c2V0UXVhbGlmaWVyKHR5cGVRdWFsaWZp
ZXIucXVhbGlmaWVyKTsKIAotICAgICAgICAgICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJlKGZp
ZWxkVmFyaWFibGUpKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwgInJl
ZGVmaW5pdGlvbiIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSwgImludGVyZmFjZSBibG9jayBtZW1i
ZXIgbmFtZSIpOworICAgICAgICAgICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJlKGZpZWxkVmFy
aWFibGUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5l
KCksICJyZWRlZmluaXRpb24iLCBmaWVsZC0+bmFtZSgpLmNfc3RyKCksCisgICAgICAgICAgICAg
ICAgICAgICAgImludGVyZmFjZSBibG9jayBtZW1iZXIgbmFtZSIpOwogICAgICAgICAgICAgICAg
IHJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAg
ICAgeworICAgICAgICBpZiAocmVzZXJ2ZWRFcnJvckNoZWNrKGluc3RhbmNlTGluZSwgKmluc3Rh
bmNlTmFtZSkpCisgICAgICAgICAgICByZWNvdmVyKCk7CisKICAgICAgICAgLy8gYWRkIGEgc3lt
Ym9sIGZvciB0aGlzIGludGVyZmFjZSBibG9jawotICAgICAgICBUVmFyaWFibGUqIGluc3RhbmNl
VHlwZURlZiA9IG5ldyBUVmFyaWFibGUoaW5zdGFuY2VOYW1lLCBpbnRlcmZhY2VCbG9ja1R5cGUs
IGZhbHNlKTsKKyAgICAgICAgVFZhcmlhYmxlICppbnN0YW5jZVR5cGVEZWYgPSBuZXcgVFZhcmlh
YmxlKGluc3RhbmNlTmFtZSwgaW50ZXJmYWNlQmxvY2tUeXBlLCBmYWxzZSk7CiAgICAgICAgIGlu
c3RhbmNlVHlwZURlZi0+c2V0UXVhbGlmaWVyKHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyKTsKIAot
ICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUoaW5zdGFuY2VUeXBlRGVmKSkgewotICAg
ICAgICAgICAgZXJyb3IoaW5zdGFuY2VMaW5lLCAicmVkZWZpbml0aW9uIiwgaW5zdGFuY2VOYW1l
LT5jX3N0cigpLCAiaW50ZXJmYWNlIGJsb2NrIGluc3RhbmNlIG5hbWUiKTsKKyAgICAgICAgaWYg
KCFzeW1ib2xUYWJsZS5kZWNsYXJlKGluc3RhbmNlVHlwZURlZikpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGVycm9yKGluc3RhbmNlTGluZSwgInJlZGVmaW5pdGlvbiIsIGluc3RhbmNlTmFtZS0+
Y19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UgYmxvY2sgaW5zdGFuY2UgbmFt
ZSIpOwogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAKLSAgICAgICAgc3ltYm9s
SWQgPSBpbnN0YW5jZVR5cGVEZWYtPmdldFVuaXF1ZUlkKCk7CisgICAgICAgIHN5bWJvbElkICAg
PSBpbnN0YW5jZVR5cGVEZWYtPmdldFVuaXF1ZUlkKCk7CiAgICAgICAgIHN5bWJvbE5hbWUgPSBp
bnN0YW5jZVR5cGVEZWYtPmdldE5hbWUoKTsKICAgICB9CiAKLSAgICBUSW50ZXJtQWdncmVnYXRl
ICphZ2dyZWdhdGUgPSBpbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZShpbnRlcm1lZGlhdGUuYWRk
U3ltYm9sKHN5bWJvbElkLCBzeW1ib2xOYW1lLCBpbnRlcmZhY2VCbG9ja1R5cGUsIHR5cGVRdWFs
aWZpZXIubGluZSksIG5hbWVMaW5lKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUg
PSBpbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgKKyAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5
bWJvbChzeW1ib2xJZCwgc3ltYm9sTmFtZSwgaW50ZXJmYWNlQmxvY2tUeXBlLCB0eXBlUXVhbGlm
aWVyLmxpbmUpLAorICAgICAgICBuYW1lTGluZSk7CiAgICAgYWdncmVnYXRlLT5zZXRPcChFT3BE
ZWNsYXJhdGlvbik7CiAKICAgICBleGl0U3RydWN0RGVjbGFyYXRpb24oKTsKICAgICByZXR1cm4g
YWdncmVnYXRlOwogfQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRp
b24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcikKK2Jv
b2wgVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihjb25zdCBUU291cmNlTG9j
ICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyKQogewotICAgICsrc3RydWN0TmVzdGlu
Z0xldmVsOworICAgICsrbVN0cnVjdE5lc3RpbmdMZXZlbDsKIAogICAgIC8vIEVtYmVkZGVkIHN0
cnVjdHVyZSBkZWZpbml0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBwZXIgR0xTTCBFUyBzcGVjLgog
ICAgIC8vIFRoZXkgYXJlbid0IGFsbG93ZWQgaW4gR0xTTCBlaXRoZXIsIGJ1dCB3ZSBuZWVkIHRv
IGRldGVjdCB0aGlzIGhlcmUKICAgICAvLyBzbyB3ZSBkb24ndCByZWx5IG9uIHRoZSBHTFNMIGNv
bXBpbGVyIHRvIGNhdGNoIGl0LgotICAgIGlmIChzdHJ1Y3ROZXN0aW5nTGV2ZWwgPiAxKSB7Cisg
ICAgaWYgKG1TdHJ1Y3ROZXN0aW5nTGV2ZWwgPiAxKQorICAgIHsKICAgICAgICAgZXJyb3IobGlu
ZSwgIiIsICJFbWJlZGRlZCBzdHJ1Y3QgZGVmaW5pdGlvbnMgYXJlIG5vdCBhbGxvd2VkIik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIxMTAsMzMgKzI3MzIsMzQgQEAKIAogdm9p
ZCBUUGFyc2VDb250ZXh0OjpleGl0U3RydWN0RGVjbGFyYXRpb24oKQogewotICAgIC0tc3RydWN0
TmVzdGluZ0xldmVsOworICAgIC0tbVN0cnVjdE5lc3RpbmdMZXZlbDsKIH0KIAotbmFtZXNwYWNl
IHsKLQorbmFtZXNwYWNlCit7CiBjb25zdCBpbnQga1dlYkdMTWF4U3RydWN0TmVzdGluZyA9IDQ7
CiAKIH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdF
cnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpCiti
b29sIFRQYXJzZUNvbnRleHQ6OnN0cnVjdE5lc3RpbmdFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsIGNvbnN0IFRGaWVsZCAmZmllbGQpCiB7Ci0gICAgaWYgKCFJc1dlYkdMQmFzZWRT
cGVjKHNoYWRlclNwZWMpKSB7CisgICAgaWYgKCFJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVj
KSkKKyAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoZmllbGQu
dHlwZSgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpIHsKKyAgICBpZiAoZmllbGQudHlw
ZSgpLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRTdHJ1Y3QpCisgICAgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gV2UncmUgYWxyZWFkeSBpbnNpZGUgYSBzdHJ1Y3R1cmUg
ZGVmaW5pdGlvbiBhdCB0aGlzIHBvaW50LCBzbyBhZGQKICAgICAvLyBvbmUgdG8gdGhlIGZpZWxk
J3Mgc3RydWN0IG5lc3RpbmcuCi0gICAgaWYgKDEgKyBmaWVsZC50eXBlKCktPmdldERlZXBlc3RT
dHJ1Y3ROZXN0aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nKSB7CisgICAgaWYgKDEgKyBm
aWVsZC50eXBlKCktPmdldERlZXBlc3RTdHJ1Y3ROZXN0aW5nKCkgPiBrV2ViR0xNYXhTdHJ1Y3RO
ZXN0aW5nKQorICAgIHsKICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gcmVhc29uU3RyZWFtOwot
ICAgICAgICByZWFzb25TdHJlYW0gPDwgIlJlZmVyZW5jZSBvZiBzdHJ1Y3QgdHlwZSAiCi0gICAg
ICAgICAgICAgICAgICAgICA8PCBmaWVsZC50eXBlKCktPmdldFN0cnVjdCgpLT5uYW1lKCkuY19z
dHIoKQotICAgICAgICAgICAgICAgICAgICAgPDwgIiBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBu
ZXN0aW5nIGxldmVsIG9mICIKLSAgICAgICAgICAgICAgICAgICAgIDw8IGtXZWJHTE1heFN0cnVj
dE5lc3Rpbmc7CisgICAgICAgIHJlYXNvblN0cmVhbSA8PCAiUmVmZXJlbmNlIG9mIHN0cnVjdCB0
eXBlICIgPDwgZmllbGQudHlwZSgpLT5nZXRTdHJ1Y3QoKS0+bmFtZSgpLmNfc3RyKCkKKyAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgbmVzdGluZyBsZXZl
bCBvZiAiIDw8IGtXZWJHTE1heFN0cnVjdE5lc3Rpbmc7CiAgICAgICAgIHN0ZDo6c3RyaW5nIHJl
YXNvbiA9IHJlYXNvblN0cmVhbS5zdHIoKTsKICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLmNf
c3RyKCksIGZpZWxkLm5hbWUoKS5jX3N0cigpLCAiIik7CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMjE0OCw3ICsyNzcxLDkgQEAKIC8vCiAvLyBQYXJzZSBhbiBhcnJheSBpbmRleCBleHByZXNz
aW9uCiAvLwotVEludGVybVR5cGVkKiBUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4cHJlc3Npb24o
VEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxvYyYgbG9jYXRpb24s
IFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKQorVEludGVybVR5cGVkICpUUGFyc2VDb250
ZXh0OjphZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pCiB7CiAgICAgVEludGVybVR5
cGVkICppbmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7CiAKQEAgLTIxNTYsNyArMjc4MSw4IEBACiAg
ICAgewogICAgICAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldEFzU3ltYm9sTm9kZSgpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiBsZWZ0IG9mICdbJyBpcyBub3Qg
b2YgdHlwZSBhcnJheSwgbWF0cml4LCBvciB2ZWN0b3IgIiwgYmFzZUV4cHJlc3Npb24tPmdldEFz
U3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKKyAgICAgICAgICAgIGVycm9yKGxv
Y2F0aW9uLCAiIGxlZnQgb2YgJ1snIGlzIG5vdCBvZiB0eXBlIGFycmF5LCBtYXRyaXgsIG9yIHZl
Y3RvciAiLAorICAgICAgICAgICAgICAgICAgYmFzZUV4cHJlc3Npb24tPmdldEFzU3ltYm9sTm9k
ZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAg
ICAgIHsKQEAgLTIxNjcsMzcgKzI3OTMsNzMgQEAKIAogICAgIFRJbnRlcm1Db25zdGFudFVuaW9u
ICppbmRleENvbnN0YW50VW5pb24gPSBpbmRleEV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlv
bigpOwogCi0gICAgaWYgKGluZGV4RXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29u
c3QgJiYgaW5kZXhDb25zdGFudFVuaW9uKQorICAgIC8vIFRPRE8ob2V0dWFob0BudmlkaWEuY29t
KTogR2V0IHJpZCBvZiBpbmRleENvbnN0YW50VW5pb24gPT0gbnVsbHB0ciBiZWxvdyBvbmNlIEFO
R0xFIGlzIGFibGUKKyAgICAvLyB0byBjb25zdGFudCBmb2xkIGFsbCBjb25zdGFudCBleHByZXNz
aW9ucy4gUmlnaHQgbm93IHdlIGRvbid0IGFsbG93IGluZGV4aW5nIGludGVyZmFjZSBibG9ja3MK
KyAgICAvLyBvciBmcmFnbWVudCBvdXRwdXRzIHdpdGggZXhwcmVzc2lvbnMgdGhhdCBBTkdMRSBp
cyBub3QgYWJsZSB0byBjb25zdGFudCBmb2xkLCBldmVuIGlmIHRoZQorICAgIC8vIGluZGV4IGlz
IGEgY29uc3RhbnQgZXhwcmVzc2lvbi4KKyAgICBpZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFs
aWZpZXIoKSAhPSBFdnFDb25zdCB8fCBpbmRleENvbnN0YW50VW5pb24gPT0gbnVsbHB0cikKICAg
ICB7CisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNJbnRlcmZhY2VCbG9jaygpKQorICAg
ICAgICB7CisgICAgICAgICAgICBlcnJvcigKKyAgICAgICAgICAgICAgICBsb2NhdGlvbiwgIiIs
ICJbIiwKKyAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXhlcyBmb3IgaW50ZXJmYWNlIGJsb2Nr
cyBhcnJheXMgbXVzdCBiZSBjb25zdGFudCBpbnRlZ3JhbCBleHByZXNzaW9ucyIpOworICAgICAg
ICAgICAgcmVjb3ZlcigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJhc2VFeHByZXNz
aW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnbWVudE91dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCisgICAgICAgICAgICAgICAgICAiYXJyYXkg
aW5kZXhlcyBmb3IgZnJhZ21lbnQgb3V0cHV0cyBtdXN0IGJlIGNvbnN0YW50IGludGVncmFsIGV4
cHJlc3Npb25zIik7CisgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAobVNoYWRlclNwZWMgPT0gU0hfV0VCR0wyX1NQRUMgJiYgYmFzZUV4cHJlc3Npb24t
PmdldFF1YWxpZmllcigpID09IEV2cUZyYWdEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBl
cnJvcihsb2NhdGlvbiwgIiIsICJbIiwgImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0
IGJlIGNvbnN0YW50IHplcm8iKTsKKyAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChpbmRleENvbnN0YW50VW5pb24pCisgICAgeworICAgICAgICAvLyBJ
ZiB0aGUgaW5kZXggaXMgbm90IHF1YWxpZmllZCBhcyBjb25zdGFudCwgdGhlIGJlaGF2aW9yIGlu
IHRoZSBzcGVjIGlzIHVuZGVmaW5lZC4gVGhpcworICAgICAgICAvLyBhcHBsaWVzIGV2ZW4gaWYg
QU5HTEUgaGFzIGJlZW4gYWJsZSB0byBjb25zdGFudCBmb2xkIGl0IChBTkdMRSBtYXkgY29uc3Rh
bnQgZm9sZAorICAgICAgICAvLyBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QgY29uc3RhbnQgZXhw
cmVzc2lvbnMpLiBUaGUgbW9zdCBjb21wYXRpYmxlIHdheSB0byBoYW5kbGUgdGhpcworICAgICAg
ICAvLyBjYXNlIGlzIHRvIHJlcG9ydCBhIHdhcm5pbmcgaW5zdGVhZCBvZiBhbiBlcnJvciBhbmQg
Zm9yY2UgdGhlIGluZGV4IHRvIGJlIGluIHRoZQorICAgICAgICAvLyBjb3JyZWN0IHJhbmdlLgor
ICAgICAgICBib29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IgPSBpbmRleEV4cHJlc3Npb24tPmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0OwogICAgICAgICBpbnQgaW5kZXggPSBpbmRleENvbnN0
YW50VW5pb24tPmdldElDb25zdCgwKTsKICAgICAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAg
ewogICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gaW5mb1N0cmVhbTsKICAgICAgICAgICAg
IGluZm9TdHJlYW0gPDwgaW5kZXg7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyBpbmZvID0gaW5m
b1N0cmVhbS5zdHIoKTsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAibmVnYXRpdmUgaW5k
ZXgiLCBpbmZvLmNfc3RyKCkpOwotICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAgICAg
b3V0T2ZSYW5nZUVycm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCAibmVnYXRp
dmUgaW5kZXgiLCBpbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgaW5kZXggPSAwOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ID09IEV2cUNvbnN0KQorICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqYmFzZUNvbnN0YW50
VW5pb24gPSBiYXNlRXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgIGlm
IChiYXNlQ29uc3RhbnRVbmlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGJhc2VFeHBy
ZXNzaW9uLT5pc0FycmF5KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29u
c3RhbnQgZm9sZGluZyBmb3IgYXJyYXlzCi0gICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Np
b24gPSBhZGRDb25zdEFycmF5Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24sIGxvY2F0aW9uKTsK
KyAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBhcnJheSBpbmRleGluZwor
ICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0KKyAgICAgICAgICAgICAgICAgICAg
YWRkQ29uc3RBcnJheU5vZGUoaW5kZXgsIGJhc2VDb25zdGFudFVuaW9uLCBsb2NhdGlvbiwgb3V0
T2ZSYW5nZUluZGV4SXNFcnJvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlm
IChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciB2ZWN0b3JzCisgICAgICAgICAgICAgICAgLy8g
Y29uc3RhbnQgZm9sZGluZyBmb3IgdmVjdG9yIGluZGV4aW5nCiAgICAgICAgICAgICAgICAgVFZl
Y3RvckZpZWxkcyBmaWVsZHM7CiAgICAgICAgICAgICAgICAgZmllbGRzLm51bSA9IDE7Ci0gICAg
ICAgICAgICAgICAgZmllbGRzLm9mZnNldHNbMF0gPSBpbmRleDsgLy8gbmVlZCB0byBkbyBpdCB0
aGlzIHdheSBiZWNhdXNlIHYueHkgc2VuZHMgZmllbGRzIGludGVnZXIgYXJyYXkKLSAgICAgICAg
ICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGFkZENvbnN0VmVjdG9yTm9kZShmaWVsZHMsIGJh
c2VFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgZmllbGRzLm9mZnNldHNb
MF0gPQorICAgICAgICAgICAgICAgICAgICBpbmRleDsgIC8vIG5lZWQgdG8gZG8gaXQgdGhpcyB3
YXkgYmVjYXVzZSB2Lnh5IHNlbmRzIGZpZWxkcyBpbnRlZ2VyIGFycmF5CisgICAgICAgICAgICAg
ICAgaW5kZXhlZEV4cHJlc3Npb24gPQorICAgICAgICAgICAgICAgICAgICBhZGRDb25zdFZlY3Rv
ck5vZGUoZmllbGRzLCBiYXNlQ29uc3RhbnRVbmlvbiwgbG9jYXRpb24sIG91dE9mUmFuZ2VJbmRl
eElzRXJyb3IpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYmFzZUV4cHJl
c3Npb24tPmlzTWF0cml4KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gY29u
c3RhbnQgZm9sZGluZyBmb3IgbWF0cmljZXMKLSAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVz
c2lvbiA9IGFkZENvbnN0TWF0cml4Tm9kZShpbmRleCwgYmFzZUV4cHJlc3Npb24sIGxvY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICAvLyBjb25zdGFudCBmb2xkaW5nIGZvciBtYXRyaXggaW5kZXhp
bmcKKyAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9CisgICAgICAgICAgICAgICAg
ICAgIGFkZENvbnN0TWF0cml4Tm9kZShpbmRleCwgYmFzZUNvbnN0YW50VW5pb24sIGxvY2F0aW9u
LCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBlbHNlCkBAIC0yMjA2LDM0ICsyODY4LDUwIEBACiAKICAgICAgICAgICAgIGlmIChiYXNl
RXhwcmVzc2lvbi0+aXNBcnJheSgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlm
IChpbmRleCA+PSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldEFycmF5U2l6ZSgpKQorICAg
ICAgICAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJh
Z0RhdGEgJiYgaW5kZXggPiAwKQogICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1TaGFkZXJTcGVjID09IFNIX1dFQkdMMl9TUEVDKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvciBoYXMgYmVlbiBhbHJlYWR5IGdl
bmVyYXRlZCBpZiBpbmRleCBpcyBub3QgY29uc3QuCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihsb2Nh
dGlvbiwgIiIsICJbIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJyYXkg
aW5kZXggZm9yIGdsX0ZyYWdEYXRhIG11c3QgYmUgY29uc3RhbnQgemVybyIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRXh0ZW5zaW9uRW5hYmxlZCgi
R0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRPZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9j
YXRpb24sICIiLCAiWyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIHplcm8gd2hlbiAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMg
ZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8g
T25seSBkbyBnZW5lcmljIG91dC1vZi1yYW5nZSBjaGVjayBpZiBzaW1pbGFyIGVycm9yIGhhc24n
dCBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQuCisgICAgICAgICAgICAgICAgaWYgKHNhZmVJbmRleCA8
IDAgJiYgaW5kZXggPj0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRBcnJheVNpemUoKSkK
KyAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGV4dHJhSW5mb1N0cmVhbTsKICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8
ICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UgJyIgPDwgaW5kZXggPDwgIiciOwogICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCBleHRyYUluZm8u
Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgb3V0T2ZSYW5nZUVycm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCAi
IiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIHNhZmVJbmRl
eCA9IGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0QXJyYXlTaXplKCkgLSAxOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0
UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ0RhdGEgJiYgaW5kZXggPiAwICYmICFpc0V4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCAiYXJyYXkgaW5kZXhlcyBmb3Ig
Z2xfRnJhZ0RhdGEgbXVzdCBiZSB6ZXJvIHdoZW4gR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBkaXNh
YmxlZCIpOwotICAgICAgICAgICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHNhZmVJbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSBpZiAoKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpIHx8IGJhc2VFeHBy
ZXNzaW9uLT5pc01hdHJpeCgpKSAmJiBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldE5vbWlu
YWxTaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBlbHNlIGlmICgoYmFzZUV4cHJlc3Npb24t
PmlzVmVjdG9yKCkgfHwgYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpICYmCisgICAgICAgICAg
ICAgICAgICAgICBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCkgPD0g
aW5kZXgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
ZXh0cmFJbmZvU3RyZWFtOwogICAgICAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiZmll
bGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSAnIiA8PCBpbmRleCA8PCAiJyI7CiAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAg
ICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCBleHRyYUluZm8uY19zdHIoKSk7
Ci0gICAgICAgICAgICAgICAgcmVjb3ZlcigpOworICAgICAgICAgICAgICAgIG91dE9mUmFuZ2VF
cnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2NhdGlvbiwgIiIsICJbIiwgZXh0cmFJbmZv
LmNfc3RyKCkpOwogICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IGJhc2VFeHByZXNzaW9uLT5n
ZXRUeXBlKCkuZ2V0Tm9taW5hbFNpemUoKSAtIDE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIC8vIERvbid0IG1vZGlmeSB0aGUgZGF0YSBvZiB0aGUgcHJldmlvdXMgY29uc3RhbnQgdW5p
b24sIGJlY2F1c2UgaXQgY2FuIHBvaW50Ci0gICAgICAgICAgICAvLyB0byBidWlsdGlucywgbGlr
ZSBnbF9NYXhEcmF3QnVmZmVycy4gSW5zdGVhZCB1c2UgYSBuZXcgc2FuaXRpemVkIG9iamVjdC4K
KyAgICAgICAgICAgIC8vIERhdGEgb2YgY29uc3RhbnQgdW5pb25zIGNhbid0IGJlIGNoYW5nZWQs
IGJlY2F1c2UgaXQgbWF5IGJlIHNoYXJlZCB3aXRoIG90aGVyCisgICAgICAgICAgICAvLyBjb25z
dGFudCB1bmlvbnMgb3IgZXZlbiBidWlsdGlucywgbGlrZSBnbF9NYXhEcmF3QnVmZmVycy4gSW5z
dGVhZCB1c2UgYSBuZXcKKyAgICAgICAgICAgIC8vIHNhbml0aXplZCBvYmplY3QuCiAgICAgICAg
ICAgICBpZiAoc2FmZUluZGV4ICE9IC0xKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IFRDb25zdGFudFVuaW9uICpzYWZlQ29uc3RhbnRVbmlvbiA9IG5ldyBUQ29uc3RhbnRVbmlvbigp
OwpAQCAtMjI0MSw3NCArMjkxOSw2MiBAQAogICAgICAgICAgICAgICAgIGluZGV4Q29uc3RhbnRV
bmlvbi0+cmVwbGFjZUNvbnN0YW50VW5pb24oc2FmZUNvbnN0YW50VW5pb24pOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BJbmRleERpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGluZGV4RXhwcmVzc2lvbiwgbG9j
YXRpb24pOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPQorICAgICAgICAgICAgICAg
IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdCwgYmFzZUV4cHJlc3Npb24sIGlu
ZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24pOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNJbnRlcmZhY2VCbG9jaygpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwgImFycmF5IGluZGV4
ZXMgZm9yIGludGVyZmFjZSBibG9ja3MgYXJyYXlzIG11c3QgYmUgY29uc3RhbnQgaW50ZWdyYWwg
ZXhwcmVzc2lvbnMiKTsKLSAgICAgICAgICAgIHJlY292ZXIoKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ21lbnRP
dXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLCAiYXJy
YXkgaW5kZXhlcyBmb3IgZnJhZ21lbnQgb3V0cHV0cyBtdXN0IGJlIGNvbnN0YW50IGludGVncmFs
IGV4cHJlc3Npb25zIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleElu
ZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbik7CisgICAg
ICAgIGluZGV4ZWRFeHByZXNzaW9uID0KKyAgICAgICAgICAgIGludGVybWVkaWF0ZS5hZGRJbmRl
eChFT3BJbmRleEluZGlyZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2Nh
dGlvbik7CiAgICAgfQogCiAgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCiAgICAgewog
ICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsx
XTsKICAgICAgICAgdW5pb25BcnJheS0+c2V0RkNvbnN0KDAuMGYpOwotICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRU
eXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFDb25zdCksIGxvY2F0aW9uKTsKKyAgICAgICAgaW5k
ZXhlZEV4cHJlc3Npb24gPQorICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5p
b24odW5pb25BcnJheSwgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cUNvbnN0KSwgbG9jYXRp
b24pOwogICAgIH0KICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNBcnJheSgpKQogICAg
IHsKLSAgICAgICAgY29uc3QgVFR5cGUgJmJhc2VUeXBlID0gYmFzZUV4cHJlc3Npb24tPmdldFR5
cGUoKTsKLSAgICAgICAgaWYgKGJhc2VUeXBlLmdldFN0cnVjdCgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBUVHlwZSBjb3B5T2ZUeXBlKGJhc2VUeXBlLmdldFN0cnVjdCgpKTsKLSAgICAgICAg
ICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKGNvcHlPZlR5cGUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgaWYgKGJhc2VUeXBlLmlzSW50ZXJmYWNlQmxvY2soKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgVFR5cGUgY29weU9mVHlwZShiYXNlVHlwZS5nZXRJbnRlcmZhY2VCbG9jaygp
LCBiYXNlVHlwZS5nZXRRdWFsaWZpZXIoKSwgYmFzZVR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCks
IDApOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoY29weU9mVHlwZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmRleGVk
RXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCks
IGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgRXZxVGVtcG9yYXJ5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
YmFzZUV4cHJlc3Npb24tPmdldE5vbWluYWxTaXplKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihiYXNlRXhwcmVzc2lvbi0+Z2V0U2Vjb25kYXJ5U2l6ZSgpKSkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5nZXRU
eXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwotICAgICAgICB9CisgICAgICAg
IFRUeXBlIGluZGV4ZWRUeXBlID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKTsKKyAgICAgICAg
aW5kZXhlZFR5cGUuY2xlYXJBcnJheW5lc3MoKTsKKyAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24t
PnNldFR5cGUoaW5kZXhlZFR5cGUpOwogICAgIH0KICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lv
bi0+aXNNYXRyaXgoKSkKICAgICB7Ci0gICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFz
ZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNv
bnN0IDogRXZxVGVtcG9yYXJ5OwotICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShU
VHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQ
cmVjaXNpb24oKSwgcXVhbGlmaWVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihiYXNlRXhw
cmVzc2lvbi0+Z2V0Um93cygpKSkpOworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlw
ZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0QmFzaWNUeXBlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwg
RXZxVGVtcG9yYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihiYXNlRXhwcmVzc2lvbi0+Z2V0Um93cygpKSkpOwog
ICAgIH0KICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKICAgICB7Ci0g
ICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5n
ZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCA/IEV2cUNvbnN0IDogRXZxVGVtcG9yYXJ5OwotICAg
ICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShUVHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0
QmFzaWNUeXBlKCksIGJhc2VFeHByZXNzaW9uLT5nZXRQcmVjaXNpb24oKSwgcXVhbGlmaWVyKSk7
CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKAorICAgICAgICAgICAgVFR5cGUo
YmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lz
aW9uKCksIEV2cVRlbXBvcmFyeSkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBp
bmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZShiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpKTsKICAg
ICB9CiAKKyAgICBpZiAoYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFDb25zdCAmJgorICAgICAgICBpbmRleEV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFDb25zdCkKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5n
ZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0
UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CisgICAgfQorCiAgICAgcmV0dXJuIGluZGV4ZWRFeHBy
ZXNzaW9uOwogfQogCi1USW50ZXJtVHlwZWQqIFRQYXJzZUNvbnRleHQ6OmFkZEZpZWxkU2VsZWN0
aW9uRXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNl
TG9jJiBkb3RMb2NhdGlvbiwgY29uc3QgVFN0cmluZyAmZmllbGRTdHJpbmcsIGNvbnN0IFRTb3Vy
Y2VMb2MmIGZpZWxkTG9jYXRpb24pCitUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZp
ZWxkU2VsZWN0aW9uRXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFNvdXJjZUxvYyAmZG90TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmaWVsZFN0cmluZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmZpZWxkTG9jYXRpb24pCiB7CiAgICAgVEludGVybVR5cGVkICpp
bmRleGVkRXhwcmVzc2lvbiA9IE5VTEw7CiAKQEAgLTIzMjEsNzEgKzI5ODcsNDMgQEAKICAgICBp
ZiAoYmFzZUV4cHJlc3Npb24tPmlzVmVjdG9yKCkpCiAgICAgewogICAgICAgICBUVmVjdG9yRmll
bGRzIGZpZWxkczsKLSAgICAgICAgaWYgKCFwYXJzZVZlY3RvckZpZWxkcyhmaWVsZFN0cmluZywg
YmFzZUV4cHJlc3Npb24tPmdldE5vbWluYWxTaXplKCksIGZpZWxkcywgZmllbGRMb2NhdGlvbikp
CisgICAgICAgIGlmICghcGFyc2VWZWN0b3JGaWVsZHMoZmllbGRTdHJpbmcsIGJhc2VFeHByZXNz
aW9uLT5nZXROb21pbmFsU2l6ZSgpLCBmaWVsZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmllbGRMb2NhdGlvbikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZpZWxkcy5udW0g
PSAxOworICAgICAgICAgICAgZmllbGRzLm51bSAgICAgICAgPSAxOwogICAgICAgICAgICAgZmll
bGRzLm9mZnNldHNbMF0gPSAwOwogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpCisgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+Z2V0QXNDb25zdGFudFVuaW9u
KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIGNvbnN0YW50IGZvbGRpbmcgZm9yIHZlY3Rv
ciBmaWVsZHMKLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RWZWN0b3JO
b2RlKGZpZWxkcywgYmFzZUV4cHJlc3Npb24sIGZpZWxkTG9jYXRpb24pOwotICAgICAgICAgICAg
aWYgKGluZGV4ZWRFeHByZXNzaW9uID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmVjb3ZlcigpOwotICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYmFzZUV4
cHJlc3Npb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4
cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCks
IEV2cUNvbnN0LCAodW5zaWduZWQgY2hhcikgKGZpZWxkU3RyaW5nKS5zaXplKCkpKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gYWRkQ29uc3RWZWN0b3JO
b2RlKGZpZWxkcywgYmFzZUV4cHJlc3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRMb2NhdGlv
biwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBUU3RyaW5nIHZlY3RvclN0cmluZyA9IGZpZWxkU3RyaW5nOwotICAgICAgICAgICAgVEludGVy
bVR5cGVkKiBpbmRleCA9IGludGVybWVkaWF0ZS5hZGRTd2l6emxlKGZpZWxkcywgZmllbGRMb2Nh
dGlvbik7Ci0gICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbiA9IGludGVybWVkaWF0ZS5hZGRJ
bmRleChFT3BWZWN0b3JTd2l6emxlLCBiYXNlRXhwcmVzc2lvbiwgaW5kZXgsIGRvdExvY2F0aW9u
KTsKLSAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRUeXBlKFRUeXBlKGJhc2VFeHBy
ZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSwgYmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBF
dnFUZW1wb3JhcnksICh1bnNpZ25lZCBjaGFyKSB2ZWN0b3JTdHJpbmcuc2l6ZSgpKSk7CisgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4ID0gaW50ZXJtZWRpYXRlLmFkZFN3aXp6bGUoZmll
bGRzLCBmaWVsZExvY2F0aW9uKTsKKyAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0KKyAg
ICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wVmVjdG9yU3dpenpsZSwgYmFz
ZUV4cHJlc3Npb24sIGluZGV4LCBkb3RMb2NhdGlvbik7CiAgICAgICAgIH0KLSAgICB9Ci0gICAg
ZWxzZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCi0gICAgewotICAgICAgICBUTWF0
cml4RmllbGRzIGZpZWxkczsKLSAgICAgICAgaWYgKCFwYXJzZU1hdHJpeEZpZWxkcyhmaWVsZFN0
cmluZywgYmFzZUV4cHJlc3Npb24tPmdldENvbHMoKSwgYmFzZUV4cHJlc3Npb24tPmdldFJvd3Mo
KSwgZmllbGRzLCBmaWVsZExvY2F0aW9uKSkKKyAgICAgICAgaWYgKGluZGV4ZWRFeHByZXNzaW9u
ID09IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZpZWxkcy53aG9sZVJvdyA9IGZh
bHNlOwotICAgICAgICAgICAgZmllbGRzLndob2xlQ29sID0gZmFsc2U7Ci0gICAgICAgICAgICBm
aWVsZHMucm93ID0gMDsKLSAgICAgICAgICAgIGZpZWxkcy5jb2wgPSAwOwogICAgICAgICAgICAg
cmVjb3ZlcigpOworICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBiYXNlRXhwcmVzc2lv
bjsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChmaWVsZHMud2hvbGVSb3cgfHwgZmllbGRzLndo
b2xlQ29sKQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihkb3RMb2NhdGlvbiwgIiBub24t
c2NhbGFyIGZpZWxkcyBub3QgaW1wbGVtZW50ZWQgeWV0IiwgIi4iKTsKLSAgICAgICAgICAgIHJl
Y292ZXIoKTsKLSAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5ID0gbmV3IFRD
b25zdGFudFVuaW9uWzFdOwotICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KDApOwot
ICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCks
IGZpZWxkTG9jYXRpb24pOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24gPSBpbnRlcm1l
ZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleCwgZG90
TG9jYXRpb24pOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUo
YmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNlRXhwcmVzc2lvbi0+Z2V0UHJlY2lz
aW9uKCksRXZxVGVtcG9yYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYmFzZUV4cHJlc3Npb24tPmdldENvbHMoKSks
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGJhc2VFeHByZXNzaW9uLT5nZXRSb3dzKCkpKSk7
Ci0gICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBUQ29uc3Rh
bnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAg
IHVuaW9uQXJyYXktPnNldElDb25zdChmaWVsZHMuY29sICogYmFzZUV4cHJlc3Npb24tPmdldFJv
d3MoKSArIGZpZWxkcy5yb3cpOwotICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGlu
dGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEludCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksIGZpZWxkTG9jYXRpb24pOwotICAgICAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24gPSBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VF
eHByZXNzaW9uLCBpbmRleCwgZG90TG9jYXRpb24pOwotICAgICAgICAgICAgaW5kZXhlZEV4cHJl
c3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpLCBiYXNl
RXhwcmVzc2lvbi0+Z2V0UHJlY2lzaW9uKCkpKTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0
aGUgcXVhbGlmaWVyIHNldCBoZXJlIHdpbGwgYmUgY29ycmVjdGVkIGxhdGVyLgorICAgICAgICAg
ICAgaW5kZXhlZEV4cHJlc3Npb24tPnNldFR5cGUoVFR5cGUoYmFzZUV4cHJlc3Npb24tPmdldEJh
c2ljVHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZUV4cHJlc3Npb24tPmdldFByZWNpc2lvbigpLCBFdnFUZW1wb3JhcnksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikoZmllbGRT
dHJpbmcpLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGJhc2VFeHBy
ZXNzaW9uLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBib29s
IGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0g
YmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAg
IGJvb2wgZmllbGRGb3VuZCAgICAgICAgICA9IGZhbHNlOworICAgICAgICBjb25zdCBURmllbGRM
aXN0ICZmaWVsZHMgPSBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKICAgICAgICAgaWYgKGZpZWxkcy5lbXB0eSgpKQogICAgICAgICB7CiAgICAgICAgICAg
ICBlcnJvcihkb3RMb2NhdGlvbiwgInN0cnVjdHVyZSBoYXMgbm8gZmllbGRzIiwgIkludGVybmFs
IEVycm9yIik7CkBAIC0yNDA1LDcgKzMwNDMsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGZpZWxkRm91bmQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCisgICAg
ICAgICAgICAgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5pb24oKSkKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0g
YWRkQ29uc3RTdHJ1Y3QoZmllbGRTdHJpbmcsIGJhc2VFeHByZXNzaW9uLCBkb3RMb2NhdGlvbik7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleGVkRXhwcmVzc2lvbiA9PSAwKQpAQCAtMjQx
NiwxNyArMzA1NCwxNiBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uLT5zZXRU
eXBlKCpmaWVsZHNbaV0tPnR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFu
Z2UgdGhlIHF1YWxpZmllciBvZiB0aGUgcmV0dXJuIHR5cGUsIG5vdCBvZiB0aGUgc3RydWN0dXJl
IGZpZWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhcyB0aGUgc3RydWN0dXJlIGRlZmlu
aXRpb24gaXMgc2hhcmVkIGJldHdlZW4gdmFyaW91cyBzdHJ1Y3R1cmVzLgotICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhlZEV4cHJlc3Npb24tPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxp
ZmllcihFdnFDb25zdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07
CiAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldElDb25zdChpKTsKLSAgICAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbmRleCA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKHVuaW9uQXJyYXksICpmaWVsZHNbaV0tPnR5cGUoKSwgZmllbGRMb2NhdGlvbik7Ci0g
ICAgICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZElu
ZGV4KEVPcEluZGV4RGlyZWN0U3RydWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXgsIGRvdExvY2F0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleCA9IGludGVybWVk
aWF0ZS5hZGRDb25zdGFudFVuaW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eSwgKmZpZWxkc1tpXS0+dHlwZSgpLCBmaWVsZExvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5kZXhlZEV4cHJlc3Npb24gPSBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJl
Y3RTdHJ1Y3QsIGJhc2VFeHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgZG90TG9jYXRpb24pOwogICAg
ICAgICAgICAgICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+c2V0VHlwZSgqZmllbGRzW2ldLT50
eXBlKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI0NDAsOCArMzA3
Nyw4IEBACiAgICAgfQogICAgIGVsc2UgaWYgKGJhc2VFeHByZXNzaW9uLT5pc0ludGVyZmFjZUJs
b2NrKCkpCiAgICAgewotICAgICAgICBib29sIGZpZWxkRm91bmQgPSBmYWxzZTsKLSAgICAgICAg
Y29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXRJ
bnRlcmZhY2VCbG9jaygpLT5maWVsZHMoKTsKKyAgICAgICAgYm9vbCBmaWVsZEZvdW5kICAgICAg
ICAgID0gZmFsc2U7CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IGJhc2VFeHBy
ZXNzaW9uLT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKS0+ZmllbGRzKCk7CiAgICAgICAg
IGlmIChmaWVsZHMuZW1wdHkoKSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IoZG90TG9j
YXRpb24sICJpbnRlcmZhY2UgYmxvY2sgaGFzIG5vIGZpZWxkcyIsICJJbnRlcm5hbCBFcnJvciIp
OwpAQCAtMjQ2Myw4ICszMTAwLDEwIEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
VENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07CiAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheS0+c2V0SUNvbnN0KGkpOwotICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCogaW5kZXggPSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCAqZmllbGRzW2ldLT50eXBlKCksIGZpZWxkTG9jYXRpb24pOwotICAgICAgICAgICAgICAg
IGluZGV4ZWRFeHByZXNzaW9uID0gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0
SW50ZXJmYWNlQmxvY2ssIGJhc2VFeHByZXNzaW9uLCBpbmRleCwgZG90TG9jYXRpb24pOworICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPQorICAgICAgICAgICAgICAgICAgICBp
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCAqZmllbGRzW2ldLT50eXBl
KCksIGZpZWxkTG9jYXRpb24pOworICAgICAgICAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9uID0g
aW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFz
ZUV4cHJlc3Npb24sIGluZGV4LCBkb3RMb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgaW5kZXhl
ZEV4cHJlc3Npb24tPnNldFR5cGUoKmZpZWxkc1tpXS0+dHlwZSgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVsc2UKQEAgLTI0NzcsMjggKzMxMTYsNDIgQEAKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKLSAgICAgICAgaWYgKHNoYWRlclZlcnNpb24gPCAzMDApCisgICAgICAgIGlmICht
U2hhZGVyVmVyc2lvbiA8IDMwMCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoZG90TG9j
YXRpb24sICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0cnVjdHVyZSwgdmVjdG9yLCBvciBt
YXRyaXggb24gbGVmdCBoYW5kIHNpZGUiLCBmaWVsZFN0cmluZy5jX3N0cigpKTsKKyAgICAgICAg
ICAgIGVycm9yKGRvdExvY2F0aW9uLCAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1
cmUgb3IgdmVjdG9yIG9uIGxlZnQgaGFuZCBzaWRlIiwKKyAgICAgICAgICAgICAgICAgIGZpZWxk
U3RyaW5nLmNfc3RyKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAg
ICAgICAgICAgZXJyb3IoZG90TG9jYXRpb24sICIgZmllbGQgc2VsZWN0aW9uIHJlcXVpcmVzIHN0
cnVjdHVyZSwgdmVjdG9yLCBtYXRyaXgsIG9yIGludGVyZmFjZSBibG9jayBvbiBsZWZ0IGhhbmQg
c2lkZSIsIGZpZWxkU3RyaW5nLmNfc3RyKCkpOworICAgICAgICAgICAgZXJyb3IoZG90TG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAiIGZpZWxkIHNlbGVjdGlvbiByZXF1aXJlcyBzdHJ1Y3R1
cmUsIHZlY3Rvciwgb3IgaW50ZXJmYWNlIGJsb2NrIG9uIGxlZnQgaGFuZCAiCisgICAgICAgICAg
ICAgICAgICAic2lkZSIsCisgICAgICAgICAgICAgICAgICBmaWVsZFN0cmluZy5jX3N0cigpKTsK
ICAgICAgICAgfQogICAgICAgICByZWNvdmVyKCk7CiAgICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
ID0gYmFzZUV4cHJlc3Npb247CiAgICAgfQogCisgICAgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKKyAgICB7CisgICAgICAgIGluZGV4ZWRFeHByZXNzaW9u
LT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBpbmRleGVkRXhwcmVzc2lvbi0+Z2V0VHlwZVBvaW50ZXIoKS0+
c2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CisgICAgfQorCiAgICAgcmV0dXJuIGluZGV4ZWRF
eHByZXNzaW9uOwogfQogCi1UTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBhcnNlTGF5
b3V0UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsIGNvbnN0IFRTb3VyY2VM
b2MmIHF1YWxpZmllclR5cGVMaW5lKQorVExheW91dFF1YWxpZmllciBUUGFyc2VDb250ZXh0Ojpw
YXJzZUxheW91dFF1YWxpZmllcihjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZxdWFsaWZpZXJUeXBlTGluZSkKIHsKICAgICBUTGF5b3V0UXVhbGlmaWVyIHF1YWxp
ZmllcjsKIAotICAgIHF1YWxpZmllci5sb2NhdGlvbiA9IC0xOworICAgIHF1YWxpZmllci5sb2Nh
dGlvbiAgICAgID0gLTE7CiAgICAgcXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSBFbXBVbnNwZWNp
ZmllZDsKLSAgICBxdWFsaWZpZXIuYmxvY2tTdG9yYWdlID0gRWJzVW5zcGVjaWZpZWQ7CisgICAg
cXVhbGlmaWVyLmJsb2NrU3RvcmFnZSAgPSBFYnNVbnNwZWNpZmllZDsKIAogICAgIGlmIChxdWFs
aWZpZXJUeXBlID09ICJzaGFyZWQiKQogICAgIHsKQEAgLTI1MjIsNyArMzE3NSw4IEBACiAgICAg
fQogICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gImxvY2F0aW9uIikKICAgICB7Ci0gICAg
ICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyIiwg
cXVhbGlmaWVyVHlwZS5jX3N0cigpLCAibG9jYXRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKTsK
KyAgICAgICAgZXJyb3IocXVhbGlmaWVyVHlwZUxpbmUsICJpbnZhbGlkIGxheW91dCBxdWFsaWZp
ZXIiLCBxdWFsaWZpZXJUeXBlLmNfc3RyKCksCisgICAgICAgICAgICAgICJsb2NhdGlvbiByZXF1
aXJlcyBhbiBhcmd1bWVudCIpOwogICAgICAgICByZWNvdmVyKCk7CiAgICAgfQogICAgIGVsc2UK
QEAgLTI1MzQsMTcgKzMxODgsMjIgQEAKICAgICByZXR1cm4gcXVhbGlmaWVyOwogfQogCi1UTGF5
b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBhcnNlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRT
dHJpbmcgJnF1YWxpZmllclR5cGUsIGNvbnN0IFRTb3VyY2VMb2MmIHF1YWxpZmllclR5cGVMaW5l
LCBjb25zdCBUU3RyaW5nICZpbnRWYWx1ZVN0cmluZywgaW50IGludFZhbHVlLCBjb25zdCBUU291
cmNlTG9jJiBpbnRWYWx1ZUxpbmUpCitUTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBh
cnNlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJnF1YWxpZmllclR5cGVMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlu
dFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZpbnRWYWx1ZUxpbmUpCiB7CiAgICAgVExheW91dFF1YWxp
ZmllciBxdWFsaWZpZXI7CiAKLSAgICBxdWFsaWZpZXIubG9jYXRpb24gPSAtMTsKKyAgICBxdWFs
aWZpZXIubG9jYXRpb24gICAgICA9IC0xOwogICAgIHF1YWxpZmllci5tYXRyaXhQYWNraW5nID0g
RW1wVW5zcGVjaWZpZWQ7Ci0gICAgcXVhbGlmaWVyLmJsb2NrU3RvcmFnZSA9IEVic1Vuc3BlY2lm
aWVkOworICAgIHF1YWxpZmllci5ibG9ja1N0b3JhZ2UgID0gRWJzVW5zcGVjaWZpZWQ7CiAKICAg
ICBpZiAocXVhbGlmaWVyVHlwZSAhPSAibG9jYXRpb24iKQogICAgIHsKLSAgICAgICAgZXJyb3Io
cXVhbGlmaWVyVHlwZUxpbmUsICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXIiLCBxdWFsaWZpZXJU
eXBlLmNfc3RyKCksICJvbmx5IGxvY2F0aW9uIG1heSBoYXZlIGFyZ3VtZW50cyIpOworICAgICAg
ICBlcnJvcihxdWFsaWZpZXJUeXBlTGluZSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllciIsIHF1
YWxpZmllclR5cGUuY19zdHIoKSwKKyAgICAgICAgICAgICAgIm9ubHkgbG9jYXRpb24gbWF5IGhh
dmUgYXJndW1lbnRzIik7CiAgICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAgICAgZWxzZQpAQCAt
MjU1Miw3ICszMjExLDggQEAKICAgICAgICAgLy8gbXVzdCBjaGVjayB0aGF0IGxvY2F0aW9uIGlz
IG5vbi1uZWdhdGl2ZQogICAgICAgICBpZiAoaW50VmFsdWUgPCAwKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBlcnJvcihpbnRWYWx1ZUxpbmUsICJvdXQgb2YgcmFuZ2U6IiwgaW50VmFsdWVTdHJp
bmcuY19zdHIoKSwgImxvY2F0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgICAg
ICBlcnJvcihpbnRWYWx1ZUxpbmUsICJvdXQgb2YgcmFuZ2U6IiwgaW50VmFsdWVTdHJpbmcuY19z
dHIoKSwKKyAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIp
OwogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTI1
NjQsNyArMzIyNCw4IEBACiAgICAgcmV0dXJuIHF1YWxpZmllcjsKIH0KIAotVExheW91dFF1YWxp
ZmllciBUUGFyc2VDb250ZXh0Ojpqb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5b3V0UXVhbGlmaWVy
IGxlZnRRdWFsaWZpZXIsIFRMYXlvdXRRdWFsaWZpZXIgcmlnaHRRdWFsaWZpZXIpCitUTGF5b3V0
UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OmpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlvdXRRdWFs
aWZpZXIgbGVmdFF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVExheW91dFF1YWxpZmllciByaWdodFF1YWxpZmllcikKIHsKICAg
ICBUTGF5b3V0UXVhbGlmaWVyIGpvaW5lZFF1YWxpZmllciA9IGxlZnRRdWFsaWZpZXI7CiAKQEAg
LTI1ODQsNDEgKzMyNDUsNTQgQEAKICAgICByZXR1cm4gam9pbmVkUXVhbGlmaWVyOwogfQogCi1U
UHVibGljVHlwZSBUUGFyc2VDb250ZXh0Ojpqb2luSW50ZXJwb2xhdGlvblF1YWxpZmllcnMoY29u
c3QgVFNvdXJjZUxvYyAmaW50ZXJwb2xhdGlvbkxvYywgVFF1YWxpZmllciBpbnRlcnBvbGF0aW9u
UXVhbGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnN0b3JhZ2VMb2MsIFRRdWFsaWZpZXIgc3RvcmFn
ZVF1YWxpZmllcikKK1RQdWJsaWNUeXBlIFRQYXJzZUNvbnRleHQ6OmpvaW5JbnRlcnBvbGF0aW9u
UXVhbGlmaWVycyhjb25zdCBUU291cmNlTG9jICZpbnRlcnBvbGF0aW9uTG9jLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIg
aW50ZXJwb2xhdGlvblF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZzdG9yYWdlTG9jLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFs
aWZpZXIgc3RvcmFnZVF1YWxpZmllcikKIHsKICAgICBUUXVhbGlmaWVyIG1lcmdlZFF1YWxpZmll
ciA9IEV2cVNtb290aEluOwogCi0gICAgaWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxRnJhZ21l
bnRJbikgeworICAgIGlmIChzdG9yYWdlUXVhbGlmaWVyID09IEV2cUZyYWdtZW50SW4pCisgICAg
ewogICAgICAgICBpZiAoaW50ZXJwb2xhdGlvblF1YWxpZmllciA9PSBFdnFTbW9vdGgpCiAgICAg
ICAgICAgICBtZXJnZWRRdWFsaWZpZXIgPSBFdnFTbW9vdGhJbjsKICAgICAgICAgZWxzZSBpZiAo
aW50ZXJwb2xhdGlvblF1YWxpZmllciA9PSBFdnFGbGF0KQogICAgICAgICAgICAgbWVyZ2VkUXVh
bGlmaWVyID0gRXZxRmxhdEluOwotICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQotICAgIGVsc2UgaWYgKHN0
b3JhZ2VRdWFsaWZpZXIgPT0gRXZxQ2VudHJvaWRJbikgeworICAgIGVsc2UgaWYgKHN0b3JhZ2VR
dWFsaWZpZXIgPT0gRXZxQ2VudHJvaWRJbikKKyAgICB7CiAgICAgICAgIGlmIChpbnRlcnBvbGF0
aW9uUXVhbGlmaWVyID09IEV2cVNtb290aCkKICAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9
IEV2cUNlbnRyb2lkSW47CiAgICAgICAgIGVsc2UgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIg
PT0gRXZxRmxhdCkKICAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2cUZsYXRJbjsKLSAg
ICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwogICAgIH0KLSAgICBlbHNlIGlmIChzdG9yYWdlUXVhbGlmaWVyID09IEV2cVZl
cnRleE91dCkgeworICAgIGVsc2UgaWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxVmVydGV4T3V0
KQorICAgIHsKICAgICAgICAgaWYgKGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0gRXZxU21vb3Ro
KQogICAgICAgICAgICAgbWVyZ2VkUXVhbGlmaWVyID0gRXZxU21vb3RoT3V0OwogICAgICAgICBl
bHNlIGlmIChpbnRlcnBvbGF0aW9uUXVhbGlmaWVyID09IEV2cUZsYXQpCiAgICAgICAgICAgICBt
ZXJnZWRRdWFsaWZpZXIgPSBFdnFGbGF0T3V0OwotICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQotICAgIGVs
c2UgaWYgKHN0b3JhZ2VRdWFsaWZpZXIgPT0gRXZxQ2VudHJvaWRPdXQpIHsKKyAgICBlbHNlIGlm
IChzdG9yYWdlUXVhbGlmaWVyID09IEV2cUNlbnRyb2lkT3V0KQorICAgIHsKICAgICAgICAgaWYg
KGludGVycG9sYXRpb25RdWFsaWZpZXIgPT0gRXZxU21vb3RoKQogICAgICAgICAgICAgbWVyZ2Vk
UXVhbGlmaWVyID0gRXZxQ2VudHJvaWRPdXQ7CiAgICAgICAgIGVsc2UgaWYgKGludGVycG9sYXRp
b25RdWFsaWZpZXIgPT0gRXZxRmxhdCkKICAgICAgICAgICAgIG1lcmdlZFF1YWxpZmllciA9IEV2
cUZsYXRPdXQ7Ci0gICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVycm9y
KGludGVycG9sYXRpb25Mb2MsICJpbnRlcnBvbGF0aW9uIHF1YWxpZmllciByZXF1aXJlcyBhIGZy
YWdtZW50ICdpbicgb3IgdmVydGV4ICdvdXQnIHN0b3JhZ2UgcXVhbGlmaWVyIiwgZ2V0SW50ZXJw
b2xhdGlvblN0cmluZyhpbnRlcnBvbGF0aW9uUXVhbGlmaWVyKSk7CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgZXJyb3IoaW50ZXJwb2xhdGlvbkxvYywKKyAgICAgICAgICAgICAgImludGVycG9s
YXRpb24gcXVhbGlmaWVyIHJlcXVpcmVzIGEgZnJhZ21lbnQgJ2luJyBvciB2ZXJ0ZXggJ291dCcg
c3RvcmFnZSBxdWFsaWZpZXIiLAorICAgICAgICAgICAgICBnZXRJbnRlcnBvbGF0aW9uU3RyaW5n
KGludGVycG9sYXRpb25RdWFsaWZpZXIpKTsKICAgICAgICAgcmVjb3ZlcigpOwogCiAgICAgICAg
IG1lcmdlZFF1YWxpZmllciA9IHN0b3JhZ2VRdWFsaWZpZXI7CkBAIC0yNjI5LDE4ICszMzAzLDIw
IEBACiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLVRGaWVsZExpc3QgKlRQYXJzZUNvbnRleHQ6OmFk
ZFN0cnVjdERlY2xhcmF0b3JMaXN0KGNvbnN0IFRQdWJsaWNUeXBlJiB0eXBlU3BlY2lmaWVyLCBU
RmllbGRMaXN0ICpmaWVsZExpc3QpCitURmllbGRMaXN0ICpUUGFyc2VDb250ZXh0OjphZGRTdHJ1
Y3REZWNsYXJhdG9yTGlzdChjb25zdCBUUHVibGljVHlwZSAmdHlwZVNwZWNpZmllciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGaWVsZExpc3Qg
KmZpZWxkTGlzdCkKIHsKICAgICBpZiAodm9pZEVycm9yQ2hlY2sodHlwZVNwZWNpZmllci5saW5l
LCAoKmZpZWxkTGlzdClbMF0tPm5hbWUoKSwgdHlwZVNwZWNpZmllci50eXBlKSkKICAgICB7CiAg
ICAgICAgIHJlY292ZXIoKTsKICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGZpZWxkTGlzdC0+c2l6ZSgpOyArK2kpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGZpZWxkTGlzdC0+c2l6ZSgpOyArK2kpCisgICAgewogICAgICAgICAvLwogICAgICAg
ICAvLyBDYXJlZnVsIG5vdCB0byByZXBsYWNlIGFscmVhZHkga25vd24gYXNwZWN0cyBvZiB0eXBl
LCBsaWtlIGFycmF5LW5lc3MKICAgICAgICAgLy8KLSAgICAgICAgVFR5cGUqIHR5cGUgPSAoKmZp
ZWxkTGlzdClbaV0tPnR5cGUoKTsKKyAgICAgICAgVFR5cGUgKnR5cGUgPSAoKmZpZWxkTGlzdClb
aV0tPnR5cGUoKTsKICAgICAgICAgdHlwZS0+c2V0QmFzaWNUeXBlKHR5cGVTcGVjaWZpZXIudHlw
ZSk7CiAgICAgICAgIHR5cGUtPnNldFByaW1hcnlTaXplKHR5cGVTcGVjaWZpZXIucHJpbWFyeVNp
emUpOwogICAgICAgICB0eXBlLT5zZXRTZWNvbmRhcnlTaXplKHR5cGVTcGVjaWZpZXIuc2Vjb25k
YXJ5U2l6ZSk7CkBAIC0yNjQ5LDE3ICszMzI1LDIwIEBACiAgICAgICAgIHR5cGUtPnNldExheW91
dFF1YWxpZmllcih0eXBlU3BlY2lmaWVyLmxheW91dFF1YWxpZmllcik7CiAKICAgICAgICAgLy8g
ZG9uJ3QgYWxsb3cgYXJyYXlzIG9mIGFycmF5cwotICAgICAgICBpZiAodHlwZS0+aXNBcnJheSgp
KSB7CisgICAgICAgIGlmICh0eXBlLT5pc0FycmF5KCkpCisgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChhcnJheVR5cGVFcnJvckNoZWNrKHR5cGVTcGVjaWZpZXIubGluZSwgdHlwZVNwZWNpZmll
cikpCiAgICAgICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgICAgIGlmICh0
eXBlU3BlY2lmaWVyLmFycmF5KQogICAgICAgICAgICAgdHlwZS0+c2V0QXJyYXlTaXplKHR5cGVT
cGVjaWZpZXIuYXJyYXlTaXplKTsKLSAgICAgICAgaWYgKHR5cGVTcGVjaWZpZXIudXNlckRlZikg
eworICAgICAgICBpZiAodHlwZVNwZWNpZmllci51c2VyRGVmKQorICAgICAgICB7CiAgICAgICAg
ICAgICB0eXBlLT5zZXRTdHJ1Y3QodHlwZVNwZWNpZmllci51c2VyRGVmLT5nZXRTdHJ1Y3QoKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2sodHlwZVNw
ZWNpZmllci5saW5lLCAqKCpmaWVsZExpc3QpW2ldKSkgeworICAgICAgICBpZiAoc3RydWN0TmVz
dGluZ0Vycm9yQ2hlY2sodHlwZVNwZWNpZmllci5saW5lLCAqKCpmaWVsZExpc3QpW2ldKSkKKyAg
ICAgICAgewogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2
NywxMCArMzM0NiwxMyBAQAogICAgIHJldHVybiBmaWVsZExpc3Q7CiB9CiAKLVRQdWJsaWNUeXBl
IFRQYXJzZUNvbnRleHQ6OmFkZFN0cnVjdHVyZShjb25zdCBUU291cmNlTG9jJiBzdHJ1Y3RMaW5l
LCBjb25zdCBUU291cmNlTG9jJiBuYW1lTGluZSwgY29uc3QgVFN0cmluZyAqc3RydWN0TmFtZSwg
VEZpZWxkTGlzdCogZmllbGRMaXN0KQorVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6YWRkU3Ry
dWN0dXJlKGNvbnN0IFRTb3VyY2VMb2MgJnN0cnVjdExpbmUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbmFtZUxpbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqc3RydWN0TmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRMaXN0ICpm
aWVsZExpc3QpCiB7Ci0gICAgVFN0cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IFRTdHJ1Y3R1cmUo
c3RydWN0TmFtZSwgZmllbGRMaXN0KTsKLSAgICBUVHlwZSogc3RydWN0dXJlVHlwZSA9IG5ldyBU
VHlwZShzdHJ1Y3R1cmUpOworICAgIFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IG5ldyBUU3RydWN0
dXJlKHN0cnVjdE5hbWUsIGZpZWxkTGlzdCk7CisgICAgVFR5cGUgKnN0cnVjdHVyZVR5cGUgID0g
bmV3IFRUeXBlKHN0cnVjdHVyZSk7CiAKICAgICAvLyBTdG9yZSBhIGJvb2wgaW4gdGhlIHN0cnVj
dCBpZiB3ZSdyZSBhdCBnbG9iYWwgc2NvcGUsIHRvIGFsbG93IHVzIHRvCiAgICAgLy8gc2tpcCB0
aGUgbG9jYWwgc3RydWN0IHNjb3Bpbmcgd29ya2Fyb3VuZCBpbiBITFNMLgpAQCAtMjY4Myw4ICsz
MzY1LDkgQEAKICAgICAgICAgewogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9Ci0g
ICAgICAgIFRWYXJpYWJsZSogdXNlclR5cGVEZWYgPSBuZXcgVFZhcmlhYmxlKHN0cnVjdE5hbWUs
ICpzdHJ1Y3R1cmVUeXBlLCB0cnVlKTsKLSAgICAgICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJl
KHVzZXJUeXBlRGVmKSkgeworICAgICAgICBUVmFyaWFibGUgKnVzZXJUeXBlRGVmID0gbmV3IFRW
YXJpYWJsZShzdHJ1Y3ROYW1lLCAqc3RydWN0dXJlVHlwZSwgdHJ1ZSk7CisgICAgICAgIGlmICgh
c3ltYm9sVGFibGUuZGVjbGFyZSh1c2VyVHlwZURlZikpCisgICAgICAgIHsKICAgICAgICAgICAg
IGVycm9yKG5hbWVMaW5lLCAicmVkZWZpbml0aW9uIiwgc3RydWN0TmFtZS0+Y19zdHIoKSwgInN0
cnVjdCIpOwogICAgICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICB9CkBAIC0yNjkzLDM3ICsz
Mzc2LDQwIEBACiAgICAgLy8gZW5zdXJlIHdlIGRvIG5vdCBzcGVjaWZ5IGFueSBzdG9yYWdlIHF1
YWxpZmllcnMgb24gdGhlIHN0cnVjdCBtZW1iZXJzCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgdHlw
ZUxpc3RJbmRleCA9IDA7IHR5cGVMaXN0SW5kZXggPCBmaWVsZExpc3QtPnNpemUoKTsgdHlwZUxp
c3RJbmRleCsrKQogICAgIHsKLSAgICAgICAgY29uc3QgVEZpZWxkICZmaWVsZCA9ICooKmZpZWxk
TGlzdClbdHlwZUxpc3RJbmRleF07CisgICAgICAgIGNvbnN0IFRGaWVsZCAmZmllbGQgICAgICAg
ID0gKigqZmllbGRMaXN0KVt0eXBlTGlzdEluZGV4XTsKICAgICAgICAgY29uc3QgVFF1YWxpZmll
ciBxdWFsaWZpZXIgPSBmaWVsZC50eXBlKCktPmdldFF1YWxpZmllcigpOwogICAgICAgICBzd2l0
Y2ggKHF1YWxpZmllcikKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRXZxR2xvYmFsOgotICAg
ICAgICAgIGNhc2UgRXZxVGVtcG9yYXJ5OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGVycm9yKGZpZWxkLmxpbmUoKSwgImludmFsaWQgcXVhbGlm
aWVyIG9uIHN0cnVjdCBtZW1iZXIiLCBnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKSk7Ci0g
ICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRXZxR2xvYmFsOgorICAgICAgICAgICAgY2FzZSBFdnFUZW1wb3Jhcnk6CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGVycm9y
KGZpZWxkLmxpbmUoKSwgImludmFsaWQgcXVhbGlmaWVyIG9uIHN0cnVjdCBtZW1iZXIiLAorICAg
ICAgICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpKTsKKyAgICAg
ICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBUUHVibGljVHlwZSBwdWJsaWNUeXBlOwogICAgIHB1YmxpY1R5cGUuc2V0
QmFzaWMoRWJ0U3RydWN0LCBFdnFUZW1wb3JhcnksIHN0cnVjdExpbmUpOwogICAgIHB1YmxpY1R5
cGUudXNlckRlZiA9IHN0cnVjdHVyZVR5cGU7CisgICAgcHVibGljVHlwZS5pc1N0cnVjdFNwZWNp
ZmllciA9IHRydWU7CiAgICAgZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAKICAgICByZXR1cm4g
cHVibGljVHlwZTsKIH0KIAotVEludGVybVN3aXRjaCAqVFBhcnNlQ29udGV4dDo6YWRkU3dpdGNo
KFRJbnRlcm1UeXBlZCAqaW5pdCwgVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCwgY29u
c3QgVFNvdXJjZUxvYyAmbG9jKQorVEludGVybVN3aXRjaCAqVFBhcnNlQ29udGV4dDo6YWRkU3dp
dGNoKFRJbnRlcm1UeXBlZCAqaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKIHsKICAgICBU
QmFzaWNUeXBlIHN3aXRjaFR5cGUgPSBpbml0LT5nZXRCYXNpY1R5cGUoKTsKLSAgICBpZiAoKHN3
aXRjaFR5cGUgIT0gRWJ0SW50ICYmIHN3aXRjaFR5cGUgIT0gRWJ0VUludCkgfHwKLSAgICAgICAg
aW5pdC0+aXNNYXRyaXgoKSB8fAotICAgICAgICBpbml0LT5pc0FycmF5KCkgfHwKKyAgICBpZiAo
KHN3aXRjaFR5cGUgIT0gRWJ0SW50ICYmIHN3aXRjaFR5cGUgIT0gRWJ0VUludCkgfHwgaW5pdC0+
aXNNYXRyaXgoKSB8fCBpbml0LT5pc0FycmF5KCkgfHwKICAgICAgICAgaW5pdC0+aXNWZWN0b3Io
KSkKICAgICB7Ci0gICAgICAgIGVycm9yKGluaXQtPmdldExpbmUoKSwgImluaXQtZXhwcmVzc2lv
biBpbiBhIHN3aXRjaCBzdGF0ZW1lbnQgbXVzdCBiZSBhIHNjYWxhciBpbnRlZ2VyIiwgInN3aXRj
aCIpOworICAgICAgICBlcnJvcihpbml0LT5nZXRMaW5lKCksICJpbml0LWV4cHJlc3Npb24gaW4g
YSBzd2l0Y2ggc3RhdGVtZW50IG11c3QgYmUgYSBzY2FsYXIgaW50ZWdlciIsCisgICAgICAgICAg
ICAgICJzd2l0Y2giKTsKICAgICAgICAgcmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CkBAIC0yNzYyLDE1ICszNDQ4LDE2IEBACiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICBpZiAoKGNvbmRpdGlvbi0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50ICYm
IGNvbmRpdGlvbi0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0VUludCkgfHwKLSAgICAgICAgY29uZGl0
aW9uLT5pc01hdHJpeCgpIHx8Ci0gICAgICAgIGNvbmRpdGlvbi0+aXNBcnJheSgpIHx8Ci0gICAg
ICAgIGNvbmRpdGlvbi0+aXNWZWN0b3IoKSkKKyAgICAgICAgY29uZGl0aW9uLT5pc01hdHJpeCgp
IHx8IGNvbmRpdGlvbi0+aXNBcnJheSgpIHx8IGNvbmRpdGlvbi0+aXNWZWN0b3IoKSkKICAgICB7
CiAgICAgICAgIGVycm9yKGNvbmRpdGlvbi0+Z2V0TGluZSgpLCAiY2FzZSBsYWJlbCBtdXN0IGJl
IGEgc2NhbGFyIGludGVnZXIiLCAiY2FzZSIpOwogICAgICAgICByZWNvdmVyKCk7CiAgICAgfQog
ICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpjb25kaXRpb25Db25zdCA9IGNvbmRpdGlvbi0+Z2V0
QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgaWYgKGNvbmRpdGlvbkNvbnN0ID09IG51bGxwdHIpCisg
ICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBHZXQgcmlkIG9mIHRoZSBjb25kaXRpb25D
b25zdCA9PSBudWxscHRyIGNoZWNrIG9uY2UgYWxsIGNvbnN0YW50CisgICAgLy8gZXhwcmVzc2lv
bnMgY2FuIGJlIGZvbGRlZC4gUmlnaHQgbm93IHdlIGRvbid0IGFsbG93IGNvbnN0YW50IGV4cHJl
c3Npb25zIHRoYXQgQU5HTEUgY2FuJ3QKKyAgICAvLyBmb2xkIGluIGNhc2UgbGFiZWxzLgorICAg
IGlmIChjb25kaXRpb24tPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0IHx8IGNvbmRpdGlvbkNv
bnN0ID09IG51bGxwdHIpCiAgICAgewogICAgICAgICBlcnJvcihjb25kaXRpb24tPmdldExpbmUo
KSwgImNhc2UgbGFiZWwgbXVzdCBiZSBjb25zdGFudCIsICJjYXNlIik7CiAgICAgICAgIHJlY292
ZXIoKTsKQEAgLTI4MDMsOCArMzQ5MCwxMCBAQAogICAgIHJldHVybiBub2RlOwogfQogCi1USW50
ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJ
bnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKLSAgICBjb25zdCBUVHlw
ZSAqZnVuY1JldHVyblR5cGUpCitUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVVu
YXJ5TWF0aChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5U
eXBlKQogewogICAgIGlmIChjaGlsZCA9PSBudWxscHRyKQogICAgIHsKQEAgLTI4MTMsMzggKzM1
MDIsMzQgQEAKIAogICAgIHN3aXRjaCAob3ApCiAgICAgewotICAgICAgY2FzZSBFT3BMb2dpY2Fs
Tm90OgotICAgICAgICBpZiAoY2hpbGQtPmdldEJhc2ljVHlwZSgpICE9IEVidEJvb2wgfHwKLSAg
ICAgICAgICAgIGNoaWxkLT5pc01hdHJpeCgpIHx8Ci0gICAgICAgICAgICBjaGlsZC0+aXNBcnJh
eSgpIHx8Ci0gICAgICAgICAgICBjaGlsZC0+aXNWZWN0b3IoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcEJpdHdpc2VOb3Q6Ci0gICAgICAgIGlmICgoY2hpbGQtPmdldEJhc2ljVHlwZSgpICE9
IEVidEludCAmJiBjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0VUludCkgfHwKLSAgICAgICAg
ICAgIGNoaWxkLT5pc01hdHJpeCgpIHx8Ci0gICAgICAgICAgICBjaGlsZC0+aXNBcnJheSgpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKLSAgICAgIGNhc2UgRU9wUHJl
SW5jcmVtZW50OgotICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OgotICAgICAgY2FzZSBFT3BQ
cmVEZWNyZW1lbnQ6Ci0gICAgICBjYXNlIEVPcE5lZ2F0aXZlOgotICAgICAgY2FzZSBFT3BQb3Np
dGl2ZToKLSAgICAgICAgaWYgKGNoaWxkLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QgfHwK
LSAgICAgICAgICAgIGNoaWxkLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8Ci0gICAgICAg
ICAgICBjaGlsZC0+aXNBcnJheSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAgICAgfQotICAgICAgLy8gT3BlcmF0b3JzIGZvciBidWlsdC1pbnMgYXJlIGFs
cmVhZHkgdHlwZSBjaGVja2VkIGFnYWluc3QgdGhlaXIgcHJvdG90eXBlLgotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoKKyAgICAgICAg
ICAgIGlmIChjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9vbCB8fCBjaGlsZC0+aXNNYXRy
aXgoKSB8fCBjaGlsZC0+aXNBcnJheSgpIHx8CisgICAgICAgICAgICAgICAgY2hpbGQtPmlzVmVj
dG9yKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNl
Tm90OgorICAgICAgICAgICAgaWYgKChjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50ICYm
IGNoaWxkLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRVSW50KSB8fAorICAgICAgICAgICAgICAgIGNo
aWxkLT5pc01hdHJpeCgpIHx8IGNoaWxkLT5pc0FycmF5KCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OgorICAgICAgICBjYXNlIEVPcFBy
ZUluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OgorICAgICAgICBjYXNl
IEVPcFByZURlY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKKyAgICAgICAgY2Fz
ZSBFT3BQb3NpdGl2ZToKKyAgICAgICAgICAgIGlmIChjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0U3RydWN0IHx8IGNoaWxkLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8CisgICAgICAg
ICAgICAgICAgY2hpbGQtPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgLy8gT3BlcmF0b3JzIGZv
ciBidWlsdC1pbnMgYXJlIGFscmVhZHkgdHlwZSBjaGVja2VkIGFnYWluc3QgdGhlaXIgcHJvdG90
eXBlLgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
cmV0dXJuIGludGVybWVkaWF0ZS5hZGRVbmFyeU1hdGgob3AsIGNoaWxkLCBsb2MsIGZ1bmNSZXR1
cm5UeXBlKTsKQEAgLTI4NjIsMTkgKzM1NDcsMjMgQEAKICAgICByZXR1cm4gbm9kZTsKIH0KIAot
VEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRVbmFyeU1hdGhMVmFsdWUoVE9wZXJhdG9y
IG9wLCBUSW50ZXJtVHlwZWQgKmNoaWxkLCBjb25zdCBUU291cmNlTG9jICZsb2MpCitUSW50ZXJt
VHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZFVuYXJ5TWF0aExWYWx1ZShUT3BlcmF0b3Igb3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmNoaWxkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewogICAgIGlmIChsVmFsdWVFcnJvckNoZWNrKGxv
YywgR2V0T3BlcmF0b3JTdHJpbmcob3ApLCBjaGlsZCkpCiAgICAgICAgIHJlY292ZXIoKTsKICAg
ICByZXR1cm4gYWRkVW5hcnlNYXRoKG9wLCBjaGlsZCwgbG9jKTsKIH0KIAotYm9vbCBUUGFyc2VD
b250ZXh0OjpiaW5hcnlPcENvbW1vbkNoZWNrKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICps
ZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LAotICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKK2Jv
b2wgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BDb21tb25DaGVjayhUT3BlcmF0b3Igb3AsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpsZWZ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbG9jKQogewogICAgIGlmIChsZWZ0LT5pc0FycmF5KCkgfHwgcmlnaHQtPmlzQXJyYXko
KSkKICAgICB7Ci0gICAgICAgIGlmIChzaGFkZXJWZXJzaW9uIDwgMzAwKQorICAgICAgICBpZiAo
bVNoYWRlclZlcnNpb24gPCAzMDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGxvYywg
IkludmFsaWQgb3BlcmF0aW9uIGZvciBhcnJheXMiLCBHZXRPcGVyYXRvclN0cmluZyhvcCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg4OCwxNCArMzU3NywxNCBAQAogCiAgICAg
ICAgIHN3aXRjaCAob3ApCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcEVxdWFsOgotICAg
ICAgICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgICAgY2FzZSBFT3BBc3NpZ246Ci0gICAg
ICAgICAgY2FzZSBFT3BJbml0aWFsaXplOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGVycm9yKGxvYywgIkludmFsaWQgb3BlcmF0aW9uIGZvciBh
cnJheXMiLCBHZXRPcGVyYXRvclN0cmluZyhvcCkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgRU9wTm90RXF1
YWw6CisgICAgICAgICAgICBjYXNlIEVPcEFzc2lnbjoKKyAgICAgICAgICAgIGNhc2UgRU9wSW5p
dGlhbGl6ZToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgZXJyb3IobG9jLCAiSW52YWxpZCBvcGVyYXRpb24gZm9yIGFycmF5cyIs
IEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHNpemUgb2YgaW1wbGljaXRseSBz
aXplZCBhcnJheXMgc2hvdWxkIGJlIHJlc29sdmVkLgogICAgICAgICBpZiAobGVmdC0+Z2V0QXJy
YXlTaXplKCkgIT0gcmlnaHQtPmdldEFycmF5U2l6ZSgpKQpAQCAtMjkwOSwzMyArMzU5OCwzMyBA
QAogICAgIGJvb2wgaXNCaXRTaGlmdCA9IGZhbHNlOwogICAgIHN3aXRjaCAob3ApCiAgICAgewot
ICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnQ6Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6
Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wQml0U2hp
ZnRSaWdodEFzc2lnbjoKLSAgICAgICAgLy8gVW5zaWduZWQgY2FuIGJlIGJpdC1zaGlmdGVkIGJ5
IHNpZ25lZCBhbmQgdmljZSB2ZXJzYSwgYnV0IHdlIG5lZWQgdG8KLSAgICAgICAgLy8gY2hlY2sg
dGhhdCB0aGUgYmFzaWMgdHlwZSBpcyBhbiBpbnRlZ2VyIHR5cGUuCi0gICAgICAgIGlzQml0U2hp
ZnQgPSB0cnVlOwotICAgICAgICBpZiAoIUlzSW50ZWdlcihsZWZ0LT5nZXRCYXNpY1R5cGUoKSkg
fHwgIUlzSW50ZWdlcihyaWdodC0+Z2V0QmFzaWNUeXBlKCkpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcEJpdHdpc2VBbmQ6Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6Ci0gICAgICBjYXNlIEVP
cEJpdHdpc2VPcjoKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZEFzc2lnbjoKLSAgICAgIGNhc2Ug
RU9wQml0d2lzZVhvckFzc2lnbjoKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yQXNzaWduOgotICAg
ICAgICAvLyBJdCBpcyBlbm91Z2ggdG8gY2hlY2sgdGhlIHR5cGUgb2Ygb25seSBvbmUgb3BlcmFu
ZCwgc2luY2UgbGF0ZXIgaXQKLSAgICAgICAgLy8gaXMgY2hlY2tlZCB0aGF0IHRoZSBvcGVyYW5k
IHR5cGVzIG1hdGNoLgotICAgICAgICBpZiAoIUlzSW50ZWdlcihsZWZ0LT5nZXRCYXNpY1R5cGUo
KSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcEJpdFNoaWZ0TGVmdDoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0OgorICAgICAg
ICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJp
Z2h0QXNzaWduOgorICAgICAgICAgICAgLy8gVW5zaWduZWQgY2FuIGJlIGJpdC1zaGlmdGVkIGJ5
IHNpZ25lZCBhbmQgdmljZSB2ZXJzYSwgYnV0IHdlIG5lZWQgdG8KKyAgICAgICAgICAgIC8vIGNo
ZWNrIHRoYXQgdGhlIGJhc2ljIHR5cGUgaXMgYW4gaW50ZWdlciB0eXBlLgorICAgICAgICAgICAg
aXNCaXRTaGlmdCA9IHRydWU7CisgICAgICAgICAgICBpZiAoIUlzSW50ZWdlcihsZWZ0LT5nZXRC
YXNpY1R5cGUoKSkgfHwgIUlzSW50ZWdlcihyaWdodC0+Z2V0QmFzaWNUeXBlKCkpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmQ6CisgICAgICAgIGNh
c2UgRU9wQml0d2lzZVhvcjoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlT3I6CisgICAgICAgIGNh
c2UgRU9wQml0d2lzZUFuZEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWdu
OgorICAgICAgICBjYXNlIEVPcEJpdHdpc2VPckFzc2lnbjoKKyAgICAgICAgICAgIC8vIEl0IGlz
IGVub3VnaCB0byBjaGVjayB0aGUgdHlwZSBvZiBvbmx5IG9uZSBvcGVyYW5kLCBzaW5jZSBsYXRl
ciBpdAorICAgICAgICAgICAgLy8gaXMgY2hlY2tlZCB0aGF0IHRoZSBvcGVyYW5kIHR5cGVzIG1h
dGNoLgorICAgICAgICAgICAgaWYgKCFJc0ludGVnZXIobGVmdC0+Z2V0QmFzaWNUeXBlKCkpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgLy8gR0xTTCBFUyAxLjAwIGFuZCAzLjAwIGRvIG5vdCBzdXBwb3J0
IGltcGxpY2l0IHR5cGUgY2FzdGluZy4KQEAgLTI5NDcsMTMyICszNjM2LDE0NCBAQAogCiAgICAg
Ly8gQ2hlY2sgdGhhdCB0eXBlIHNpemVzIG1hdGNoIGV4YWN0bHkgb24gb3BzIHRoYXQgcmVxdWly
ZSB0aGF0LgogICAgIC8vIEFsc28gY2hlY2sgcmVzdHJpY3Rpb25zIGZvciBzdHJ1Y3RzIHRoYXQg
Y29udGFpbiBhcnJheXMgb3Igc2FtcGxlcnMuCi0gICAgc3dpdGNoKG9wKQorICAgIHN3aXRjaCAo
b3ApCiAgICAgewotICAgICAgY2FzZSBFT3BBc3NpZ246Ci0gICAgICBjYXNlIEVPcEluaXRpYWxp
emU6Ci0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKLSAgICAg
ICAgLy8gRVNTTCAxLjAwIHNlY3Rpb25zIDUuNywgNS44LCA1LjkKLSAgICAgICAgaWYgKHNoYWRl
clZlcnNpb24gPCAzMDAgJiYgbGVmdC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmluZ0Fy
cmF5cygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2MsICJ1bmRlZmluZWQgb3Bl
cmF0aW9uIGZvciBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzIiwgR2V0T3BlcmF0b3JTdHJpbmco
b3ApKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAvLyBT
YW1wbGVycyBhcyBsLXZhbHVlcyBhcmUgZGlzYWxsb3dlZCBhbHNvIGluIEVTU0wgMy4wMCwgc2Vl
IHNlY3Rpb24gNC4xLjcsCi0gICAgICAgIC8vIHdlIGludGVycHJldCB0aGUgc3BlYyBzbyB0aGF0
IHRoaXMgZXh0ZW5kcyB0byBzdHJ1Y3RzIGNvbnRhaW5pbmcgc2FtcGxlcnMsCi0gICAgICAgIC8v
IHNpbWlsYXJseSB0byBFU1NMIDEuMDAgc3BlYy4KLSAgICAgICAgaWYgKChzaGFkZXJWZXJzaW9u
IDwgMzAwIHx8IG9wID09IEVPcEFzc2lnbiB8fCBvcCA9PSBFT3BJbml0aWFsaXplKSAmJgotICAg
ICAgICAgICAgbGVmdC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmluZ1NhbXBsZXJzKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvYywgInVuZGVmaW5lZCBvcGVyYXRpb24g
Zm9yIHN0cnVjdHMgY29udGFpbmluZyBzYW1wbGVycyIsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgIGNhc2UgRU9wTGVz
c1RoYW46Ci0gICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgotICAgICAgY2FzZSBFT3BMZXNzVGhh
bkVxdWFsOgotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICBpZiAoKGxl
ZnQtPmdldE5vbWluYWxTaXplKCkgIT0gcmlnaHQtPmdldE5vbWluYWxTaXplKCkpIHx8Ci0gICAg
ICAgICAgICAobGVmdC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpICE9IHJpZ2h0LT5nZXRTZWNvbmRhcnlT
aXplKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFzc2lnbjoK
KyAgICAgICAgY2FzZSBFT3BJbml0aWFsaXplOgorICAgICAgICBjYXNlIEVPcEVxdWFsOgorICAg
ICAgICBjYXNlIEVPcE5vdEVxdWFsOgorICAgICAgICAgICAgLy8gRVNTTCAxLjAwIHNlY3Rpb25z
IDUuNywgNS44LCA1LjkKKyAgICAgICAgICAgIGlmIChtU2hhZGVyVmVyc2lvbiA8IDMwMCAmJiBs
ZWZ0LT5nZXRUeXBlKCkuaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZXJyb3IobG9jLCAidW5kZWZpbmVkIG9wZXJhdGlvbiBmb3Ig
c3RydWN0cyBjb250YWluaW5nIGFycmF5cyIsCisgICAgICAgICAgICAgICAgICAgICAgR2V0T3Bl
cmF0b3JTdHJpbmcob3ApKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAvLyBTYW1wbGVycyBhcyBsLXZhbHVlcyBhcmUgZGlzYWxsb3dl
ZCBhbHNvIGluIEVTU0wgMy4wMCwgc2VlIHNlY3Rpb24gNC4xLjcsCisgICAgICAgICAgICAvLyB3
ZSBpbnRlcnByZXQgdGhlIHNwZWMgc28gdGhhdCB0aGlzIGV4dGVuZHMgdG8gc3RydWN0cyBjb250
YWluaW5nIHNhbXBsZXJzLAorICAgICAgICAgICAgLy8gc2ltaWxhcmx5IHRvIEVTU0wgMS4wMCBz
cGVjLgorICAgICAgICAgICAgaWYgKChtU2hhZGVyVmVyc2lvbiA8IDMwMCB8fCBvcCA9PSBFT3BB
c3NpZ24gfHwgb3AgPT0gRU9wSW5pdGlhbGl6ZSkgJiYKKyAgICAgICAgICAgICAgICBsZWZ0LT5n
ZXRUeXBlKCkuaXNTdHJ1Y3R1cmVDb250YWluaW5nU2FtcGxlcnMoKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBlcnJvcihsb2MsICJ1bmRlZmluZWQgb3BlcmF0aW9uIGZvciBzdHJ1
Y3RzIGNvbnRhaW5pbmcgc2FtcGxlcnMiLAorICAgICAgICAgICAgICAgICAgICAgIEdldE9wZXJh
dG9yU3RyaW5nKG9wKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICBjYXNlIEVPcEdyZWF0ZXJU
aGFuOgorICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CisgICAgICAgIGNhc2UgRU9wR3Jl
YXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAgIGlmICgobGVmdC0+Z2V0Tm9taW5hbFNpemUoKSAh
PSByaWdodC0+Z2V0Tm9taW5hbFNpemUoKSkgfHwKKyAgICAgICAgICAgICAgICAobGVmdC0+Z2V0
U2Vjb25kYXJ5U2l6ZSgpICE9IHJpZ2h0LT5nZXRTZWNvbmRhcnlTaXplKCkpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiB0cnVl
OwogfQogCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEJpbmFyeU1hdGhJbnRlcm5h
bChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwK
LSAgICBjb25zdCBUU291cmNlTG9jICZsb2MpCitUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6
OmFkZEJpbmFyeU1hdGhJbnRlcm5hbChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewogICAgIGlmICghYmluYXJ5T3BDb21tb25D
aGVjayhvcCwgbGVmdCwgcmlnaHQsIGxvYykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgc3dpdGNoIChvcCkKICAgICB7Ci0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgY2FzZSBF
T3BOb3RFcXVhbDoKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuOgotICAg
ICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKLSAg
ICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKLSAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0Fy
cmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5KCkpOwotICAgICAgICBpZiAobGVmdC0+aXNNYXRyaXgo
KSB8fCBsZWZ0LT5pc1ZlY3RvcigpIHx8Ci0gICAgICAgICAgICBsZWZ0LT5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRTdHJ1Y3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6Ci0gICAg
ICBjYXNlIEVPcExvZ2ljYWxYb3I6Ci0gICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6Ci0gICAgICAg
IEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFyaWdodC0+aXNBcnJheSgpKTsKLSAgICAgICAg
aWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpICE9IEVidEJvb2wgfHwKLSAgICAgICAgICAgIGxlZnQt
PmlzTWF0cml4KCkgfHwgbGVmdC0+aXNWZWN0b3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cEFkZDoKLSAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgY2FzZSBFT3BEaXY6Ci0gICAgICBjYXNl
IEVPcE11bDoKLSAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0Fy
cmF5KCkpOwotICAgICAgICBpZiAobGVmdC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0IHx8
IGxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BJTW9kOgotICAgICAgICBBU1NFUlQoIWxlZnQtPmlzQXJyYXkoKSAmJiAhcmlnaHQtPmlzQXJy
YXkoKSk7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgZm9yIHRoZSAlIG9wZXJh
dG9yLCBub3QgZm9yIG1vZCgpCi0gICAgICAgIGlmIChsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRTdHJ1Y3QgfHwgbGVmdC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCB8fCBsZWZ0LT5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICAvLyBOb3RlIHRoYXQgZm9y
IGJpdHdpc2Ugb3BzLCB0eXBlIGNoZWNraW5nIGlzIGRvbmUgaW4gcHJvbW90ZSgpIHRvCi0gICAg
ICAvLyBzaGFyZSBjb2RlIGJldHdlZW4gb3BzIGFuZCBjb21wb3VuZCBhc3NpZ25tZW50Ci0gICAg
ICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAg
ICAgY2FzZSBFT3BOb3RFcXVhbDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cExlc3NUaGFuOgorICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICBjYXNlIEVP
cExlc3NUaGFuRXF1YWw6CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAg
ICAgICAgIEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFyaWdodC0+aXNBcnJheSgpKTsKKyAg
ICAgICAgICAgIGlmIChsZWZ0LT5pc01hdHJpeCgpIHx8IGxlZnQtPmlzVmVjdG9yKCkgfHwgbGVm
dC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgorICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6
CisgICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgICAgIEFTU0VSVCghbGVmdC0+
aXNBcnJheSgpICYmICFyaWdodC0+aXNBcnJheSgpKTsKKyAgICAgICAgICAgIGlmIChsZWZ0LT5n
ZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IGxlZnQtPmlzTWF0cml4KCkgfHwgbGVmdC0+aXNW
ZWN0b3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZDoK
KyAgICAgICAgY2FzZSBFT3BTdWI6CisgICAgICAgIGNhc2UgRU9wRGl2OgorICAgICAgICBjYXNl
IEVPcE11bDoKKyAgICAgICAgICAgIEFTU0VSVCghbGVmdC0+aXNBcnJheSgpICYmICFyaWdodC0+
aXNBcnJheSgpKTsKKyAgICAgICAgICAgIGlmIChsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRT
dHJ1Y3QgfHwgbGVmdC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcElNb2Q6CisgICAgICAgICAgICBBU1NFUlQoIWxl
ZnQtPmlzQXJyYXkoKSAmJiAhcmlnaHQtPmlzQXJyYXkoKSk7CisgICAgICAgICAgICAvLyBOb3Rl
IHRoYXQgdGhpcyBpcyBvbmx5IGZvciB0aGUgJSBvcGVyYXRvciwgbm90IGZvciBtb2QoKQorICAg
ICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCB8fCBsZWZ0LT5n
ZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8CisgICAgICAgICAgICAgICAgbGVmdC0+Z2V0QmFz
aWNUeXBlKCkgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Ly8gTm90ZSB0aGF0IGZvciBiaXR3aXNlIG9wcywgdHlwZSBjaGVja2luZyBpcyBkb25lIGluIHBy
b21vdGUoKSB0bworICAgICAgICAvLyBzaGFyZSBjb2RlIGJldHdlZW4gb3BzIGFuZCBjb21wb3Vu
ZCBhc3NpZ25tZW50CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZEJpbmFyeU1hdGgob3AsIGxlZnQsIHJpZ2h0
LCBsb2MpOwogfQogCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEJpbmFyeU1hdGgo
VE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsCi0g
ICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQorVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0Ojph
ZGRCaW5hcnlNYXRoKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpCiB7CiAg
ICAgVEludGVybVR5cGVkICpub2RlID0gYWRkQmluYXJ5TWF0aEludGVybmFsKG9wLCBsZWZ0LCBy
aWdodCwgbG9jKTsKICAgICBpZiAobm9kZSA9PSAwKQogICAgIHsKLSAgICAgICAgYmluYXJ5T3BF
cnJvcihsb2MsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSwgbGVmdC0+Z2V0Q29tcGxldGVTdHJpbmco
KSwgcmlnaHQtPmdldENvbXBsZXRlU3RyaW5nKCkpOworICAgICAgICBiaW5hcnlPcEVycm9yKGxv
YywgR2V0T3BlcmF0b3JTdHJpbmcob3ApLCBsZWZ0LT5nZXRDb21wbGV0ZVN0cmluZygpLAorICAg
ICAgICAgICAgICAgICAgICAgIHJpZ2h0LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAg
cmVjb3ZlcigpOwogICAgICAgICByZXR1cm4gbGVmdDsKICAgICB9CiAgICAgcmV0dXJuIG5vZGU7
CiB9CiAKLVRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQmluYXJ5TWF0aEJvb2xlYW5S
ZXN1bHQoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmln
aHQsCi0gICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQorVEludGVybVR5cGVkICpUUGFyc2VDb250
ZXh0OjphZGRCaW5hcnlNYXRoQm9vbGVhblJlc3VsdChUT3BlcmF0b3Igb3AsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewog
ICAgIFRJbnRlcm1UeXBlZCAqbm9kZSA9IGFkZEJpbmFyeU1hdGhJbnRlcm5hbChvcCwgbGVmdCwg
cmlnaHQsIGxvYyk7CiAgICAgaWYgKG5vZGUgPT0gMCkKICAgICB7Ci0gICAgICAgIGJpbmFyeU9w
RXJyb3IobG9jLCBHZXRPcGVyYXRvclN0cmluZyhvcCksIGxlZnQtPmdldENvbXBsZXRlU3RyaW5n
KCksIHJpZ2h0LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKKyAgICAgICAgYmluYXJ5T3BFcnJvcihs
b2MsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSwgbGVmdC0+Z2V0Q29tcGxldGVTdHJpbmcoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICByaWdodC0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
IHJlY292ZXIoKTsKICAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bMV07CiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdChmYWxzZSk7Ci0g
ICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBU
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgbG9jKTsKKyAgICAgICAgcmV0
dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidEJv
b2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jKTsKICAgICB9CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJ
bnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6Y3JlYXRlQXNzaWduKFRPcGVyYXRvciBvcCwgVElu
dGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LAotICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxvYykKK1RJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6Y3JlYXRlQXNzaWduKFRPcGVy
YXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpCiB7CiAgICAgaWYgKGJpbmFyeU9wQ29tbW9u
Q2hlY2sob3AsIGxlZnQsIHJpZ2h0LCBsb2MpKQogICAgIHsKQEAgLTMwODEsOCArMzc4MiwxMCBA
QAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6
OmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVk
ICpyaWdodCwKLSAgICBjb25zdCBUU291cmNlTG9jICZsb2MpCitUSW50ZXJtVHlwZWQgKlRQYXJz
ZUNvbnRleHQ6OmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewogICAgIFRJ
bnRlcm1UeXBlZCAqbm9kZSA9IGNyZWF0ZUFzc2lnbihvcCwgbGVmdCwgcmlnaHQsIGxvYyk7CiAg
ICAgaWYgKG5vZGUgPT0gbnVsbHB0cikKQEAgLTMwOTQsNDggKzM3OTcsNTcgQEAKICAgICByZXR1
cm4gbm9kZTsKIH0KIAorVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRDb21tYShUSW50
ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKK3sKKyAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZENv
bW1hKGxlZnQsIHJpZ2h0LCBsb2MsIG1TaGFkZXJWZXJzaW9uKTsKK30KKwogVEludGVybUJyYW5j
aCAqVFBhcnNlQ29udGV4dDo6YWRkQnJhbmNoKFRPcGVyYXRvciBvcCwgY29uc3QgVFNvdXJjZUxv
YyAmbG9jKQogewogICAgIHN3aXRjaCAob3ApCiAgICAgewotICAgICAgY2FzZSBFT3BDb250aW51
ZToKLSAgICAgICAgaWYgKG1Mb29wTmVzdGluZ0xldmVsIDw9IDApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGVycm9yKGxvYywgImNvbnRpbnVlIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9v
cHMiLCAiIik7Ci0gICAgICAgICAgICByZWNvdmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEJyZWFrOgotICAgICAgICBpZiAobUxvb3BOZXN0aW5nTGV2ZWwg
PD0gMCAmJiBtU3dpdGNoTmVzdGluZ0xldmVsIDw9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGVycm9yKGxvYywgImJyZWFrIHN0YXRlbWVudCBvbmx5IGFsbG93ZWQgaW4gbG9vcHMgYW5kIHN3
aXRjaCBzdGF0ZW1lbnRzIiwgIiIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BSZXR1cm46Ci0gICAgICAgIGlmIChjdXJy
ZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBlcnJvcihsb2MsICJub24tdm9pZCBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHZh
bHVlIiwgInJldHVybiIpOwotICAgICAgICAgICAgcmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgLy8gTm8gY2hlY2tzIGZvciBkaXNj
YXJkCi0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnRpbnVlOgorICAgICAgICAg
ICAgaWYgKG1Mb29wTmVzdGluZ0xldmVsIDw9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZXJyb3IobG9jLCAiY29udGludWUgc3RhdGVtZW50IG9ubHkgYWxsb3dlZCBpbiBsb29w
cyIsICIiKTsKKyAgICAgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCcmVhazoKKyAgICAgICAgICAgIGlmICht
TG9vcE5lc3RpbmdMZXZlbCA8PSAwICYmIG1Td2l0Y2hOZXN0aW5nTGV2ZWwgPD0gMCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJvcihsb2MsICJicmVhayBzdGF0ZW1lbnQgb25s
eSBhbGxvd2VkIGluIGxvb3BzIGFuZCBzd2l0Y2ggc3RhdGVtZW50cyIsICIiKTsKKyAgICAgICAg
ICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BSZXR1cm46CisgICAgICAgICAgICBpZiAobUN1cnJlbnRGdW5jdGlvblR5
cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZXJyb3IobG9jLCAibm9uLXZvaWQgZnVuY3Rpb24gbXVzdCByZXR1cm4gYSB2YWx1ZSIs
ICJyZXR1cm4iKTsKKyAgICAgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIE5vIGNo
ZWNrcyBmb3IgZGlzY2FyZAorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkQnJhbmNoKG9wLCBsb2MpOwogfQogCi1USW50ZXJtQnJhbmNoICpUUGFy
c2VDb250ZXh0OjphZGRCcmFuY2goVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKnJldHVyblZh
bHVlLCBjb25zdCBUU291cmNlTG9jICZsb2MpCitUSW50ZXJtQnJhbmNoICpUUGFyc2VDb250ZXh0
OjphZGRCcmFuY2goVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmV0dXJuVmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewogICAgIEFTU0VS
VChvcCA9PSBFT3BSZXR1cm4pOwogICAgIG1GdW5jdGlvblJldHVybnNWYWx1ZSA9IHRydWU7Ci0g
ICAgaWYgKGN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQpCisg
ICAgaWYgKG1DdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKQog
ICAgIHsKICAgICAgICAgZXJyb3IobG9jLCAidm9pZCBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEg
dmFsdWUiLCAicmV0dXJuIik7CiAgICAgICAgIHJlY292ZXIoKTsKICAgICB9Ci0gICAgZWxzZSBp
ZiAoKmN1cnJlbnRGdW5jdGlvblR5cGUgIT0gcmV0dXJuVmFsdWUtPmdldFR5cGUoKSkKKyAgICBl
bHNlIGlmICgqbUN1cnJlbnRGdW5jdGlvblR5cGUgIT0gcmV0dXJuVmFsdWUtPmdldFR5cGUoKSkK
ICAgICB7CiAgICAgICAgIGVycm9yKGxvYywgImZ1bmN0aW9uIHJldHVybiBpcyBub3QgbWF0Y2hp
bmcgdHlwZToiLCAicmV0dXJuIik7CiAgICAgICAgIHJlY292ZXIoKTsKQEAgLTMxNDMsMTcgKzM4
NTUsNzMgQEAKICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZEJyYW5jaChvcCwgcmV0dXJuVmFs
dWUsIGxvYyk7CiB9CiAKLVRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25D
YWxsT3JNZXRob2QoVEZ1bmN0aW9uICpmbkNhbGwsIFRJbnRlcm1Ob2RlICpwYXJhbU5vZGUsIFRJ
bnRlcm1Ob2RlICp0aGlzTm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBib29sICpmYXRhbEVycm9y
KQordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1RleHR1cmVPZmZzZXRDb25zdChUSW50ZXJtQWdn
cmVnYXRlICpmdW5jdGlvbkNhbGwpCiB7Ci0gICAgKmZhdGFsRXJyb3IgPSBmYWxzZTsKLSAgICBU
T3BlcmF0b3Igb3AgPSBmbkNhbGwtPmdldEJ1aWx0SW5PcCgpOworICAgIEFTU0VSVCghZnVuY3Rp
b25DYWxsLT5pc1VzZXJEZWZpbmVkKCkpOworICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgICAgICAg
ID0gZnVuY3Rpb25DYWxsLT5nZXROYW1lKCk7CisgICAgVEludGVybU5vZGUgKm9mZnNldCAgICAg
ICAgPSBudWxscHRyOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gZnVuY3Rpb25D
YWxsLT5nZXRTZXF1ZW5jZSgpOworICAgIGlmIChuYW1lLmNvbXBhcmUoMCwgMTYsICJ0ZXhlbEZl
dGNoT2Zmc2V0IikgPT0gMCB8fAorICAgICAgICBuYW1lLmNvbXBhcmUoMCwgMTYsICJ0ZXh0dXJl
TG9kT2Zmc2V0IikgPT0gMCB8fAorICAgICAgICBuYW1lLmNvbXBhcmUoMCwgMjAsICJ0ZXh0dXJl
UHJvakxvZE9mZnNldCIpID09IDAgfHwKKyAgICAgICAgbmFtZS5jb21wYXJlKDAsIDE3LCAidGV4
dHVyZUdyYWRPZmZzZXQiKSA9PSAwIHx8CisgICAgICAgIG5hbWUuY29tcGFyZSgwLCAyMSwgInRl
eHR1cmVQcm9qR3JhZE9mZnNldCIpID09IDApCisgICAgeworICAgICAgICBvZmZzZXQgPSBhcmd1
bWVudHMtPmJhY2soKTsKKyAgICB9CisgICAgZWxzZSBpZiAobmFtZS5jb21wYXJlKDAsIDEzLCAi
dGV4dHVyZU9mZnNldCIpID09IDAgfHwKKyAgICAgICAgICAgICBuYW1lLmNvbXBhcmUoMCwgMTcs
ICJ0ZXh0dXJlUHJvak9mZnNldCIpID09IDApCisgICAgeworICAgICAgICAvLyBBIGJpYXMgcGFy
YW1ldGVyIG1pZ2h0IGZvbGxvdyB0aGUgb2Zmc2V0IHBhcmFtZXRlci4KKyAgICAgICAgQVNTRVJU
KGFyZ3VtZW50cy0+c2l6ZSgpID49IDMpOworICAgICAgICBvZmZzZXQgPSAoKmFyZ3VtZW50cylb
Ml07CisgICAgfQorICAgIGlmIChvZmZzZXQgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uICpvZmZzZXRDb25zdGFudFVuaW9uID0gb2Zmc2V0LT5nZXRBc0Nv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgaWYgKG9mZnNldC0+Z2V0QXNUeXBlZCgpLT5nZXRRdWFs
aWZpZXIoKSAhPSBFdnFDb25zdCB8fCAhb2Zmc2V0Q29uc3RhbnRVbmlvbikKKyAgICAgICAgewor
ICAgICAgICAgICAgVFN0cmluZyB1bm1hbmdsZWROYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5h
bWUobmFtZSk7CisgICAgICAgICAgICBlcnJvcihmdW5jdGlvbkNhbGwtPmdldExpbmUoKSwgIlRl
eHR1cmUgb2Zmc2V0IG11c3QgYmUgYSBjb25zdGFudCBleHByZXNzaW9uIiwKKyAgICAgICAgICAg
ICAgICAgIHVubWFuZ2xlZE5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICByZWNvdmVyKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQob2Zm
c2V0Q29uc3RhbnRVbmlvbi0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KTsKKyAgICAgICAgICAg
IHNpemVfdCBzaXplICAgICAgICAgICAgICAgICAgPSBvZmZzZXRDb25zdGFudFVuaW9uLT5nZXRU
eXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24g
KnZhbHVlcyA9IG9mZnNldENvbnN0YW50VW5pb24tPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMHU7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldFZhbHVlID0gdmFsdWVzW2ldLmdldElDb25z
dCgpOworICAgICAgICAgICAgICAgIGlmIChvZmZzZXRWYWx1ZSA+IG1NYXhQcm9ncmFtVGV4ZWxP
ZmZzZXQgfHwgb2Zmc2V0VmFsdWUgPCBtTWluUHJvZ3JhbVRleGVsT2Zmc2V0KQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gdG9rZW5TdHJl
YW07CisgICAgICAgICAgICAgICAgICAgIHRva2VuU3RyZWFtIDw8IG9mZnNldFZhbHVlOworICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyB0b2tlbiA9IHRva2VuU3RyZWFtLnN0cigpOwor
ICAgICAgICAgICAgICAgICAgICBlcnJvcihvZmZzZXQtPmdldExpbmUoKSwgIlRleHR1cmUgb2Zm
c2V0IHZhbHVlIG91dCBvZiB2YWxpZCByYW5nZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva2VuLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICByZWNvdmVyKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitUSW50ZXJt
VHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uQ2FsbE9yTWV0aG9kKFRGdW5jdGlvbiAq
Zm5DYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtTm9kZSAqcGFyYW1Ob2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqdGhpc05vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCAqZmF0YWxFcnJvcikKK3sKKyAgICAqZmF0YWxFcnJvciAgICAgICAgICAg
ID0gZmFsc2U7CisgICAgVE9wZXJhdG9yIG9wICAgICAgICAgICA9IGZuQ2FsbC0+Z2V0QnVpbHRJ
bk9wKCk7CiAgICAgVEludGVybVR5cGVkICpjYWxsTm9kZSA9IG51bGxwdHI7CiAKICAgICBpZiAo
dGhpc05vZGUgIT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFRDb25zdGFudFVuaW9uICp1bmlv
bkFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzFdOwotICAgICAgICBpbnQgYXJyYXlTaXplID0g
MDsKKyAgICAgICAgaW50IGFycmF5U2l6ZSAgICAgICAgICAgICAgPSAwOwogICAgICAgICBUSW50
ZXJtVHlwZWQgKnR5cGVkVGhpcyA9IHRoaXNOb2RlLT5nZXRBc1R5cGVkKCk7CiAgICAgICAgIGlm
IChmbkNhbGwtPmdldE5hbWUoKSAhPSAibGVuZ3RoIikKICAgICAgICAgewpAQCAtMzE3OSwxNSAr
Mzk0NywxOSBAQAogICAgICAgICAgICAgICAgIC8vIChhID0gYikubGVuZ3RoKCkKICAgICAgICAg
ICAgICAgICAvLyAoZnVuYygpKS5sZW5ndGgoKQogICAgICAgICAgICAgICAgIC8vIChpbnRbM10o
MCwgMSwgMikpLmxlbmd0aCgpCi0gICAgICAgICAgICAgICAgLy8gRVNTTCAzLjAwIHNlY3Rpb24g
NS45IGRlZmluZXMgZXhwcmVzc2lvbnMgc28gdGhhdCB0aGlzIGlzIG5vdCBhY3R1YWxseSBhIHZh
bGlkIGV4cHJlc3Npb24uCi0gICAgICAgICAgICAgICAgLy8gSXQgYWxsb3dzICJBbiBhcnJheSBu
YW1lIHdpdGggdGhlIGxlbmd0aCBtZXRob2QgYXBwbGllZCIgaW4gY29udHJhc3QgdG8gR0xTTCA0
LjQgc3BlYyBzZWN0aW9uIDUuOQotICAgICAgICAgICAgICAgIC8vIHdoaWNoIGFsbG93cyAiQW4g
YXJyYXksIHZlY3RvciBvciBtYXRyaXggZXhwcmVzc2lvbiB3aXRoIHRoZSBsZW5ndGggbWV0aG9k
IGFwcGxpZWQiLgotICAgICAgICAgICAgICAgIGVycm9yKGxvYywgImxlbmd0aCBjYW4gb25seSBi
ZSBjYWxsZWQgb24gYXJyYXkgbmFtZXMsIG5vdCBvbiBhcnJheSBleHByZXNzaW9ucyIsICJsZW5n
dGgiKTsKKyAgICAgICAgICAgICAgICAvLyBFU1NMIDMuMDAgc2VjdGlvbiA1LjkgZGVmaW5lcyBl
eHByZXNzaW9ucyBzbyB0aGF0IHRoaXMgaXMgbm90IGFjdHVhbGx5IGEgdmFsaWQKKyAgICAgICAg
ICAgICAgICAvLyBleHByZXNzaW9uLgorICAgICAgICAgICAgICAgIC8vIEl0IGFsbG93cyAiQW4g
YXJyYXkgbmFtZSB3aXRoIHRoZSBsZW5ndGggbWV0aG9kIGFwcGxpZWQiIGluIGNvbnRyYXN0IHRv
IEdMU0wgNC40CisgICAgICAgICAgICAgICAgLy8gc3BlYyBzZWN0aW9uIDUuOSB3aGljaCBhbGxv
d3MgIkFuIGFycmF5LCB2ZWN0b3Igb3IgbWF0cml4IGV4cHJlc3Npb24gd2l0aCB0aGUKKyAgICAg
ICAgICAgICAgICAvLyBsZW5ndGggbWV0aG9kIGFwcGxpZWQiLgorICAgICAgICAgICAgICAgIGVy
cm9yKGxvYywgImxlbmd0aCBjYW4gb25seSBiZSBjYWxsZWQgb24gYXJyYXkgbmFtZXMsIG5vdCBv
biBhcnJheSBleHByZXNzaW9ucyIsCisgICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCIpOwog
ICAgICAgICAgICAgICAgIHJlY292ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoYXJyYXlTaXplKTsKLSAgICAgICAgY2FsbE5vZGUg
PSBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQs
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBsb2MpOworICAgICAgICBjYWxsTm9kZSA9CisgICAg
ICAgICAgICBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShF
YnRJbnQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBsb2MpOwogICAgIH0KICAgICBlbHNlIGlm
IChvcCAhPSBFT3BOdWxsKQogICAgIHsKQEAgLTMyMTcsOSArMzk4OSw5IEBACiAgICAgICAgIC8v
CiAgICAgICAgIC8vIE5vdCBhIGNvbnN0cnVjdG9yLiAgRmluZCBpdCBpbiB0aGUgc3ltYm9sIHRh
YmxlLgogICAgICAgICAvLwotICAgICAgICBjb25zdCBURnVuY3Rpb24qIGZuQ2FuZGlkYXRlOwor
ICAgICAgICBjb25zdCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlOwogICAgICAgICBib29sIGJ1aWx0
SW47Ci0gICAgICAgIGZuQ2FuZGlkYXRlID0gZmluZEZ1bmN0aW9uKGxvYywgZm5DYWxsLCBzaGFk
ZXJWZXJzaW9uLCAmYnVpbHRJbik7CisgICAgICAgIGZuQ2FuZGlkYXRlID0gZmluZEZ1bmN0aW9u
KGxvYywgZm5DYWxsLCBtU2hhZGVyVmVyc2lvbiwgJmJ1aWx0SW4pOwogICAgICAgICBpZiAoZm5D
YW5kaWRhdGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vCkBAIC0zMjQxLDM4ICs0MDEzLDYx
IEBACiAgICAgICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0
IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBvcGVyYXRvci4KICAgICAgICAgICAgICAgICAgICAg
Ly8KLSAgICAgICAgICAgICAgICAgICAgY2FsbE5vZGUgPSBjcmVhdGVVbmFyeU1hdGgob3AsIHBh
cmFtTm9kZS0+Z2V0QXNUeXBlZCgpLCBsb2MsICZmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1BZ2cgPSBwYXJh
bU5vZGUtPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZSAg
ICAgICAgICAgICAgICAgID0gcGFyYW1BZ2ctPmdldFNlcXVlbmNlKCktPmZyb250KCk7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxOb2RlID0gY3JlYXRlVW5hcnlNYXRoKG9wLCBwYXJhbU5vZGUt
PmdldEFzVHlwZWQoKSwgbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChjYWxsTm9kZSA9PSBudWxscHRyKQogICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07
Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgImJ1aWx0IGluIHVu
YXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCo+KHBhcmFtTm9kZSktPmdldENvbXBsZXRl
U3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUluZm9TdHJlYW0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiYnVpbHQgaW4gdW5hcnkgb3BlcmF0b3IgZnVuY3Rp
b24uICBUeXBlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8
VEludGVybVR5cGVkICo+KHBhcmFtTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0u
c3RyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihwYXJhbU5vZGUtPmdldExpbmUo
KSwgIiB3cm9uZyBvcGVyYW5kIHR5cGUiLCAiSW50ZXJuYWwgRXJyb3IiLCBleHRyYUluZm8uY19z
dHIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihwYXJhbU5vZGUtPmdldExpbmUo
KSwgIiB3cm9uZyBvcGVyYW5kIHR5cGUiLCAiSW50ZXJuYWwgRXJyb3IiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgKmZhdGFsRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
VEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9w
ZXJhdG9yKHBhcmFtTm9kZSwgb3AsIGxvYyk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmFnZ3JlZ2F0ZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlh
dGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlLCBvcCwgbG9jKTsKICAgICAgICAgICAg
ICAgICAgICAgYWdncmVnYXRlLT5zZXRUeXBlKGZuQ2FuZGlkYXRlLT5nZXRSZXR1cm5UeXBlKCkp
OwogICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGUtPnNldFByZWNpc2lvbkZyb21DaGlsZHJl
bigpOwotICAgICAgICAgICAgICAgICAgICBjYWxsTm9kZSA9IGFnZ3JlZ2F0ZTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGFnZ3JlZ2F0ZS0+YXJlQ2hpbGRyZW5Db25zdFF1YWxpZmllZCgpKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGUt
PmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFDb25zdCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAvLyBTb21lIGJ1aWx0LWluIGZ1bmN0aW9u
cyBoYXZlIG91dCBwYXJhbWV0ZXJzIHRvby4KICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25D
YWxsTFZhbHVlRXJyb3JDaGVjayhmbkNhbmRpZGF0ZSwgYWdncmVnYXRlKTsKKworICAgICAgICAg
ICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIGNvbnN0YW50IGZvbGQgYSBidWlsdC1pbi4gTm90
ZSB0aGF0IHRoaXMgbWF5IGJlIHBvc3NpYmxlIGV2ZW4KKyAgICAgICAgICAgICAgICAgICAgLy8g
aWYgaXQgaXMgbm90IGNvbnN0LXF1YWxpZmllZC4KKyAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICpmb2xkZWROb2RlID0gaW50ZXJtZWRpYXRlLmZvbGRBZ2dyZWdhdGVCdWlsdEluKGFn
Z3JlZ2F0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZWROb2RlKQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTm9kZSA9IGZvbGRlZE5v
ZGU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsTm9kZSA9IGFn
Z3JlZ2F0ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGEgcmVhbCBmdW5jdGlvbiBjYWxsCi0KLSAgICAgICAgICAgICAgICBUSW50
ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUgPSBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0
b3IocGFyYW1Ob2RlLCBFT3BGdW5jdGlvbkNhbGwsIGxvYyk7CisgICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRp
YXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKHBhcmFtTm9kZSwgRU9wRnVuY3Rpb25DYWxsLCBsb2Mp
OwogICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZS0+c2V0VHlwZShmbkNhbmRpZGF0ZS0+Z2V0UmV0
dXJuVHlwZSgpKTsKIAotICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgaG93IHdlIGtub3cgd2hl
dGhlciB0aGUgZ2l2ZW4gZnVuY3Rpb24gaXMgYSBidWlsdEluIGZ1bmN0aW9uIG9yIGEgdXNlciBk
ZWZpbmVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgLy8gaWYgYnVpbHRJbiA9PSBmYWxzZSwg
aXQncyBhIHVzZXJEZWZpbmVkIC0+IGNvdWxkIGJlIGFuIG92ZXJsb2FkZWQgYnVpbHRJbiBmdW5j
dGlvbiBhbHNvCisgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVy
IHRoZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyCisgICAg
ICAgICAgICAgICAgLy8gZGVmaW5lZCBmdW5jdGlvbgorICAgICAgICAgICAgICAgIC8vIGlmIGJ1
aWx0SW4gPT0gZmFsc2UsIGl0J3MgYSB1c2VyRGVmaW5lZCAtPiBjb3VsZCBiZSBhbiBvdmVybG9h
ZGVkCisgICAgICAgICAgICAgICAgLy8gYnVpbHRJbiBmdW5jdGlvbiBhbHNvCiAgICAgICAgICAg
ICAgICAgLy8gaWYgYnVpbHRJbiA9PSB0cnVlLCBpdCdzIGRlZmluaXRlbHkgYSBidWlsdEluIGZ1
bmN0aW9uIHdpdGggRU9wTnVsbAogICAgICAgICAgICAgICAgIGlmICghYnVpbHRJbikKICAgICAg
ICAgICAgICAgICAgICAgYWdncmVnYXRlLT5zZXRVc2VyRGVmaW5lZCgpOwpAQCAtMzI4MSw4ICs0
MDc2LDEyIEBACiAKICAgICAgICAgICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRl
ciB0aGUgbmFtZSBpcyBzZXQKICAgICAgICAgICAgICAgICBpZiAoYnVpbHRJbikKKyAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZS0+c2V0QnVpbHRJbkZ1bmN0
aW9uUHJlY2lzaW9uKCk7CiAKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tUZXh0dXJlT2Zmc2V0
Q29uc3QoYWdncmVnYXRlKTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBj
YWxsTm9kZSA9IGFnZ3JlZ2F0ZTsKIAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbExWYWx1
ZUVycm9yQ2hlY2soZm5DYW5kaWRhdGUsIGFnZ3JlZ2F0ZSk7CkBAIC0zMjk0LDE1ICs0MDkzLDE3
IEBACiAgICAgICAgICAgICAvLyBQdXQgb24gYSBkdW1teSBub2RlIGZvciBlcnJvciByZWNvdmVy
eQogICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb25bMV07CiAgICAgICAgICAgICB1bmlvbkFycmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAg
ICAgICAgICBjYWxsTm9kZSA9IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJy
YXksIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgbG9jKTsKKyAgICAg
ICAgICAgIGNhbGxOb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBsb2MpOwogICAgICAgICAg
ICAgcmVjb3ZlcigpOwogICAgICAgICB9CiAgICAgfQotICAgIGRlbGV0ZSBmbkNhbGw7CiAgICAg
cmV0dXJuIGNhbGxOb2RlOwogfQogCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZFRl
cm5hcnlTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtVHlwZWQgKnRydWVCbG9j
aywgVEludGVybVR5cGVkICpmYWxzZUJsb2NrLAorVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0
OjphZGRUZXJuYXJ5U2VsZWN0aW9uKFRJbnRlcm1UeXBlZCAqY29uZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVCbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQgKmZhbHNlQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewogICAgIGlmIChib29sRXJy
b3JDaGVjayhsb2MsIGNvbmQpKQpAQCAtMzMzMSw4ICs0MTMyLDExIEBACiAvLwogLy8gUmV0dXJu
cyAwIGZvciBzdWNjZXNzLgogLy8KLWludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsIGNv
bnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCi0gICAgICAgICAg
ICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCkgeworaW50IFBhUGFyc2VTdHJpbmdzKHNp
emVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBzdHJpbmdb
XSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoW10sCisgICAgICAgICAgICAg
ICAgICAgVFBhcnNlQ29udGV4dCAqY29udGV4dCkKK3sKICAgICBpZiAoKGNvdW50ID09IDApIHx8
IChzdHJpbmcgPT0gTlVMTCkpCiAgICAgICAgIHJldHVybiAxOwogCkBAIC0zMzQ3LDYgKzQxNTEs
MyBAQAogCiAgICAgcmV0dXJuIChlcnJvciA9PSAwKSAmJiAoY29udGV4dC0+bnVtRXJyb3JzKCkg
PT0gMCkgPyAwIDogMTsKIH0KLQotCi0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5o
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOSwxMSArOSwx
MiBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9EaXJlY3RpdmVIYW5kbGVyLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVy
bWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIK
ICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgiCiAKLXN0cnVj
dCBUTWF0cml4RmllbGRzIHsKK3N0cnVjdCBUTWF0cml4RmllbGRzCit7CiAgICAgYm9vbCB3aG9s
ZVJvdzsKICAgICBib29sIHdob2xlQ29sOwogICAgIGludCByb3c7CkBAIC0yNCwxNjIgKzI1LDI3
NSBAQAogLy8gVGhlIGZvbGxvd2luZyBhcmUgZXh0cmEgdmFyaWFibGVzIG5lZWRlZCBkdXJpbmcg
cGFyc2luZywgZ3JvdXBlZCB0b2dldGhlciBzbwogLy8gdGhleSBjYW4gYmUgcGFzc2VkIHRvIHRo
ZSBwYXJzZXIgd2l0aG91dCBuZWVkaW5nIGEgZ2xvYmFsLgogLy8KLXN0cnVjdCBUUGFyc2VDb250
ZXh0IHsKLSAgICBUUGFyc2VDb250ZXh0KFRTeW1ib2xUYWJsZSYgc3ltdCwgVEV4dGVuc2lvbkJl
aGF2aW9yJiBleHQsIFRJbnRlcm1lZGlhdGUmIGludGVybSwgc2g6OkdMZW51bSB0eXBlLCBTaFNo
YWRlclNwZWMgc3BlYywgaW50IG9wdGlvbnMsIGJvb2wgY2hlY2tzUHJlY0Vycm9ycywgVEluZm9T
aW5rJiBpcywgYm9vbCBkZWJ1Z1NoYWRlclByZWNpc2lvblN1cHBvcnRlZCkgOgotICAgICAgICAg
ICAgaW50ZXJtZWRpYXRlKGludGVybSksCi0gICAgICAgICAgICBzeW1ib2xUYWJsZShzeW10KSwK
LSAgICAgICAgICAgIHNoYWRlclR5cGUodHlwZSksCi0gICAgICAgICAgICBzaGFkZXJTcGVjKHNw
ZWMpLAotICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMob3B0aW9ucyksCi0gICAgICAgICAgICB0
cmVlUm9vdCgwKSwKLSAgICAgICAgICAgIG1Mb29wTmVzdGluZ0xldmVsKDApLAotICAgICAgICAg
ICAgc3RydWN0TmVzdGluZ0xldmVsKDApLAotICAgICAgICAgICAgbVN3aXRjaE5lc3RpbmdMZXZl
bCgwKSwKLSAgICAgICAgICAgIGN1cnJlbnRGdW5jdGlvblR5cGUoTlVMTCksCi0gICAgICAgICAg
ICBtRnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAotICAgICAgICAgICAgY2hlY2tzUHJlY2lz
aW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLAotICAgICAgICAgICAgZnJhZ21lbnRQcmVjaXNp
b25IaWdoKGZhbHNlKSwKLSAgICAgICAgICAgIGRlZmF1bHRNYXRyaXhQYWNraW5nKEVtcENvbHVt
bk1ham9yKSwKLSAgICAgICAgICAgIGRlZmF1bHRCbG9ja1N0b3JhZ2UoRWJzU2hhcmVkKSwKLSAg
ICAgICAgICAgIGRpYWdub3N0aWNzKGlzKSwKLSAgICAgICAgICAgIHNoYWRlclZlcnNpb24oMTAw
KSwKLSAgICAgICAgICAgIGRpcmVjdGl2ZUhhbmRsZXIoZXh0LCBkaWFnbm9zdGljcywgc2hhZGVy
VmVyc2lvbiwgZGVidWdTaGFkZXJQcmVjaXNpb25TdXBwb3J0ZWQpLAotICAgICAgICAgICAgcHJl
cHJvY2Vzc29yKCZkaWFnbm9zdGljcywgJmRpcmVjdGl2ZUhhbmRsZXIpLAotICAgICAgICAgICAg
c2Nhbm5lcihOVUxMKSwKLSAgICAgICAgICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJy
b3JDaGVjayhmYWxzZSkKK2NsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUK
K3sKKyAgcHVibGljOgorICAgIFRQYXJzZUNvbnRleHQoVFN5bWJvbFRhYmxlICZzeW10LAorICAg
ICAgICAgICAgICAgICAgVEV4dGVuc2lvbkJlaGF2aW9yICZleHQsCisgICAgICAgICAgICAgICAg
ICBUSW50ZXJtZWRpYXRlICZpbnRlcm0sCisgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAg
ICAgIGludCBvcHRpb25zLAorICAgICAgICAgICAgICAgICAgYm9vbCBjaGVja3NQcmVjRXJyb3Jz
LAorICAgICAgICAgICAgICAgICAgVEluZm9TaW5rICZpcywKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQorICAgICAgICA6IGludGVybWVkaWF0
ZShpbnRlcm0pLAorICAgICAgICAgIHN5bWJvbFRhYmxlKHN5bXQpLAorICAgICAgICAgIG1EZWZl
cnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhmYWxzZSksCisgICAgICAgICAgbVNoYWRl
clR5cGUodHlwZSksCisgICAgICAgICAgbVNoYWRlclNwZWMoc3BlYyksCisgICAgICAgICAgbVNo
YWRlclZlcnNpb24oMTAwKSwKKyAgICAgICAgICBtVHJlZVJvb3QobnVsbHB0ciksCisgICAgICAg
ICAgbUxvb3BOZXN0aW5nTGV2ZWwoMCksCisgICAgICAgICAgbVN0cnVjdE5lc3RpbmdMZXZlbCgw
KSwKKyAgICAgICAgICBtU3dpdGNoTmVzdGluZ0xldmVsKDApLAorICAgICAgICAgIG1DdXJyZW50
RnVuY3Rpb25UeXBlKG51bGxwdHIpLAorICAgICAgICAgIG1GdW5jdGlvblJldHVybnNWYWx1ZShm
YWxzZSksCisgICAgICAgICAgbUNoZWNrc1ByZWNpc2lvbkVycm9ycyhjaGVja3NQcmVjRXJyb3Jz
KSwKKyAgICAgICAgICBtRnJhZ21lbnRQcmVjaXNpb25IaWdoT25FU1NMMShmYWxzZSksCisgICAg
ICAgICAgbURlZmF1bHRNYXRyaXhQYWNraW5nKEVtcENvbHVtbk1ham9yKSwKKyAgICAgICAgICBt
RGVmYXVsdEJsb2NrU3RvcmFnZShFYnNTaGFyZWQpLAorICAgICAgICAgIG1EaWFnbm9zdGljcyhp
cyksCisgICAgICAgICAgbURpcmVjdGl2ZUhhbmRsZXIoZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1EaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2hh
ZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2hhZGVyVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXMuV0VCR0xfZGVidWdfc2hhZGVyX3By
ZWNpc2lvbiA9PSAxKSwKKyAgICAgICAgICBtUHJlcHJvY2Vzc29yKCZtRGlhZ25vc3RpY3MsICZt
RGlyZWN0aXZlSGFuZGxlciksCisgICAgICAgICAgbVNjYW5uZXIobnVsbHB0ciksCisgICAgICAg
ICAgbVVzZXNGcmFnRGF0YShmYWxzZSksCisgICAgICAgICAgbVVzZXNGcmFnQ29sb3IoZmFsc2Up
LAorICAgICAgICAgIG1Vc2VzU2Vjb25kYXJ5T3V0cHV0cyhmYWxzZSksCisgICAgICAgICAgbU1p
blByb2dyYW1UZXhlbE9mZnNldChyZXNvdXJjZXMuTWluUHJvZ3JhbVRleGVsT2Zmc2V0KSwKKyAg
ICAgICAgICBtTWF4UHJvZ3JhbVRleGVsT2Zmc2V0KHJlc291cmNlcy5NYXhQcm9ncmFtVGV4ZWxP
ZmZzZXQpCiAgICAgewogICAgIH0KLSAgICBUSW50ZXJtZWRpYXRlJiBpbnRlcm1lZGlhdGU7IC8v
IHRvIGhvbGQgYW5kIGJ1aWxkIGEgcGFyc2UgdHJlZQotICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9s
VGFibGU7ICAgLy8gc3ltYm9sIHRhYmxlIHRoYXQgZ29lcyB3aXRoIHRoZSBsYW5ndWFnZSBjdXJy
ZW50bHkgYmVpbmcgcGFyc2VkCi0gICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlOyAgICAgICAgICAg
ICAgLy8gdmVydGV4IG9yIGZyYWdtZW50IGxhbmd1YWdlIChmdXR1cmU6IHBhY2sgb3IgdW5wYWNr
KQotICAgIFNoU2hhZGVyU3BlYyBzaGFkZXJTcGVjOyAgICAgICAgICAgICAgLy8gVGhlIGxhbmd1
YWdlIHNwZWNpZmljYXRpb24gY29tcGlsZXIgY29uZm9ybXMgdG8gLSBHTEVTMiBvciBXZWJHTC4K
LSAgICBpbnQgc2hhZGVyVmVyc2lvbjsKLSAgICBpbnQgY29tcGlsZU9wdGlvbnM7Ci0gICAgVElu
dGVybU5vZGUqIHRyZWVSb290OyAgICAgICAvLyByb290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3Jl
YXRlZAotICAgIGludCBtTG9vcE5lc3RpbmdMZXZlbDsgICAgICAgLy8gMCBpZiBvdXRzaWRlIGFs
bCBsb29wcwotICAgIGludCBzdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAgICAgLy8gaW5jcmVtZW50ZWQg
d2hpbGUgcGFyc2luZyBhIHN0cnVjdCBkZWNsYXJhdGlvbgotICAgIGludCBtU3dpdGNoTmVzdGlu
Z0xldmVsOyAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBzd2l0Y2ggc3RhdGVtZW50cwotICAgIGNv
bnN0IFRUeXBlKiBjdXJyZW50RnVuY3Rpb25UeXBlOyAgLy8gdGhlIHJldHVybiB0eXBlIG9mIHRo
ZSBmdW5jdGlvbiB0aGF0J3MgY3VycmVudGx5IGJlaW5nIHBhcnNlZAotICAgIGJvb2wgbUZ1bmN0
aW9uUmV0dXJuc1ZhbHVlOyAgLy8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0aW9uIGhhcyBhIHJl
dHVybgotICAgIGJvb2wgY2hlY2tzUHJlY2lzaW9uRXJyb3JzOyAgLy8gdHJ1ZSBpZiBhbiBlcnJv
ciB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIGEgdmFyaWFibGUgaXMgZGVjbGFyZWQgd2l0aG91dCBw
cmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxpY2l0LgotICAgIGJvb2wgZnJhZ21lbnRQcmVjaXNp
b25IaWdoOyAgLy8gdHJ1ZSBpZiBoaWdocCBwcmVjaXNpb24gaXMgc3VwcG9ydGVkIGluIHRoZSBm
cmFnbWVudCBsYW5ndWFnZS4KLSAgICBUTGF5b3V0TWF0cml4UGFja2luZyBkZWZhdWx0TWF0cml4
UGFja2luZzsKLSAgICBUTGF5b3V0QmxvY2tTdG9yYWdlIGRlZmF1bHRCbG9ja1N0b3JhZ2U7Ci0g
ICAgVFN0cmluZyBIYXNoRXJyTXNnOwotICAgIFREaWFnbm9zdGljcyBkaWFnbm9zdGljczsKLSAg
ICBURGlyZWN0aXZlSGFuZGxlciBkaXJlY3RpdmVIYW5kbGVyOwotICAgIHBwOjpQcmVwcm9jZXNz
b3IgcHJlcHJvY2Vzc29yOwotICAgIHZvaWQqIHNjYW5uZXI7CiAKLSAgICBpbnQgZ2V0U2hhZGVy
VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHNoYWRlclZlcnNpb247IH0KLSAgICBpbnQgbnVtRXJy
b3JzKCkgY29uc3QgeyByZXR1cm4gZGlhZ25vc3RpY3MubnVtRXJyb3JzKCk7IH0KLSAgICBUSW5m
b1NpbmsmIGluZm9TaW5rKCkgeyByZXR1cm4gZGlhZ25vc3RpY3MuaW5mb1NpbmsoKTsgfQotICAg
IHZvaWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNv
bnN0IGNoYXIqIHRva2VuLAotICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXh0cmFJbmZvPSIi
KTsKLSAgICB2b2lkIHdhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBy
ZWFzb24sIGNvbnN0IGNoYXIqIHRva2VuLAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBl
eHRyYUluZm89IiIpOworICAgIGNvbnN0IHBwOjpQcmVwcm9jZXNzb3IgJmdldFByZXByb2Nlc3Nv
cigpIGNvbnN0IHsgcmV0dXJuIG1QcmVwcm9jZXNzb3I7IH0KKyAgICBwcDo6UHJlcHJvY2Vzc29y
ICZnZXRQcmVwcm9jZXNzb3IoKSB7IHJldHVybiBtUHJlcHJvY2Vzc29yOyB9CisgICAgdm9pZCAq
Z2V0U2Nhbm5lcigpIGNvbnN0IHsgcmV0dXJuIG1TY2FubmVyOyB9CisgICAgdm9pZCBzZXRTY2Fu
bmVyKHZvaWQgKnNjYW5uZXIpIHsgbVNjYW5uZXIgPSBzY2FubmVyOyB9CisgICAgaW50IGdldFNo
YWRlclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU2hhZGVyVmVyc2lvbjsgfQorICAgIHNoOjpH
TGVudW0gZ2V0U2hhZGVyVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1TaGFkZXJUeXBlOyB9CisgICAg
U2hTaGFkZXJTcGVjIGdldFNoYWRlclNwZWMoKSBjb25zdCB7IHJldHVybiBtU2hhZGVyU3BlYzsg
fQorICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVybiBtRGlhZ25vc3RpY3MubnVtRXJy
b3JzKCk7IH0KKyAgICBUSW5mb1NpbmsgJmluZm9TaW5rKCkgeyByZXR1cm4gbURpYWdub3N0aWNz
LmluZm9TaW5rKCk7IH0KKyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29u
c3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmV4dHJhSW5mbz0iIik7CisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvPSIiKTsKKworICAgIC8vIElmIGlzRXJyb3IgaXMg
ZmFsc2UsIGEgd2FybmluZyB3aWxsIGJlIHJlcG9ydGVkIGluc3RlYWQuCisgICAgdm9pZCBvdXRP
ZlJhbmdlRXJyb3IoYm9vbCBpc0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpy
ZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvID0gIiIpOworCiAgICAg
dm9pZCByZWNvdmVyKCk7CisgICAgVEludGVybU5vZGUgKmdldFRyZWVSb290KCkgY29uc3QgeyBy
ZXR1cm4gbVRyZWVSb290OyB9CisgICAgdm9pZCBzZXRUcmVlUm9vdChUSW50ZXJtTm9kZSAqdHJl
ZVJvb3QpIHsgbVRyZWVSb290ID0gdHJlZVJvb3Q7IH0KIAorICAgIGJvb2wgZ2V0RnJhZ21lbnRQ
cmVjaXNpb25IaWdoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtRnJhZ21lbnRQcmVj
aXNpb25IaWdoT25FU1NMMSB8fCBtU2hhZGVyVmVyc2lvbiA+PSAzMDA7CisgICAgfQorICAgIHZv
aWQgc2V0RnJhZ21lbnRQcmVjaXNpb25IaWdoT25FU1NMMShib29sIGZyYWdtZW50UHJlY2lzaW9u
SGlnaCkKKyAgICB7CisgICAgICAgIG1GcmFnbWVudFByZWNpc2lvbkhpZ2hPbkVTU0wxID0gZnJh
Z21lbnRQcmVjaXNpb25IaWdoOworICAgIH0KKworICAgIHZvaWQgc2V0TG9vcE5lc3RpbmdMZXZl
bChpbnQgbG9vcE5lc3RpbnRMZXZlbCkKKyAgICB7CisgICAgICAgIG1Mb29wTmVzdGluZ0xldmVs
ID0gbG9vcE5lc3RpbnRMZXZlbDsKKyAgICB9CisKKyAgICB2b2lkIGluY3JMb29wTmVzdGluZ0xl
dmVsKCkgeyArK21Mb29wTmVzdGluZ0xldmVsOyB9CisgICAgdm9pZCBkZWNyTG9vcE5lc3RpbmdM
ZXZlbCgpIHsgLS1tTG9vcE5lc3RpbmdMZXZlbDsgfQorCisgICAgdm9pZCBpbmNyU3dpdGNoTmVz
dGluZ0xldmVsKCkgeyArK21Td2l0Y2hOZXN0aW5nTGV2ZWw7IH0KKyAgICB2b2lkIGRlY3JTd2l0
Y2hOZXN0aW5nTGV2ZWwoKSB7IC0tbVN3aXRjaE5lc3RpbmdMZXZlbDsgfQorCiAgICAgLy8gVGhp
cyBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBzdWNjZWVkLCBldmVuIGlmIG5vIHZhcmlhYmxlIHdp
dGggJ25hbWUnIGV4aXN0cy4KICAgICBjb25zdCBUVmFyaWFibGUgKmdldE5hbWVkVmFyaWFibGUo
Y29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGNvbnN0IFRTdHJpbmcgKm5hbWUsIGNvbnN0IFRT
eW1ib2wgKnN5bWJvbCk7CisgICAgVEludGVybVR5cGVkICpwYXJzZVZhcmlhYmxlSWRlbnRpZmll
cihjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wpOwogCi0gICAgYm9v
bCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nJiwgaW50IHZlY1NpemUsIFRWZWN0b3JG
aWVsZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsKLSAgICBib29sIHBhcnNlTWF0cml4Rmll
bGRzKGNvbnN0IFRTdHJpbmcmLCBpbnQgbWF0Q29scywgaW50IG1hdFJvd3MsIFRNYXRyaXhGaWVs
ZHMmLCBjb25zdCBUU291cmNlTG9jJiBsaW5lKTsKKyAgICBib29sIHBhcnNlVmVjdG9yRmllbGRz
KGNvbnN0IFRTdHJpbmcmLCBpbnQgdmVjU2l6ZSwgVFZlY3RvckZpZWxkcyYsIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUpOwogCi0gICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyYgbGluZSwgY29uc3QgVFN0cmluZyYgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBhc3NpZ25F
cnJvcihjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBsZWZ0
LCBUU3RyaW5nIHJpZ2h0KTsKLSAgICB2b2lkIHVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBjaGFyKiBvcCwgVFN0cmluZyBvcGVyYW5kKTsKLSAgICB2b2lkIGJpbmFy
eU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgY2hhciogb3AsIFRTdHJpbmcg
bGVmdCwgVFN0cmluZyByaWdodCk7Ci0gICAgYm9vbCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MmIGxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUp
OwotICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBjb25z
dCBjaGFyKiBvcCwgVEludGVybVR5cGVkKik7Ci0gICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVElu
dGVybVR5cGVkKiBub2RlKTsKLSAgICBib29sIGludGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBl
ZCogbm9kZSwgY29uc3QgY2hhciogdG9rZW4pOwotICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jJiBsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciogdG9rZW4pOwot
ICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIFRJ
bnRlcm1Ob2RlKiwgVEZ1bmN0aW9uJiwgVE9wZXJhdG9yLCBUVHlwZSopOwotICAgIGJvb2wgYXJy
YXlTaXplRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUSW50ZXJtVHlwZWQqIGV4
cHIsIGludCYgc2l6ZSk7CisgICAgYm9vbCByZXNlcnZlZEVycm9yQ2hlY2soY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcik7CisgICAgdm9pZCBhc3NpZ25F
cnJvcihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZyBsZWZ0
LCBUU3RyaW5nIHJpZ2h0KTsKKyAgICB2b2lkIHVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9j
ICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZyBvcGVyYW5kKTsKKyAgICB2b2lkIGJpbmFy
eU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRTdHJpbmcg
bGVmdCwgVFN0cmluZyByaWdodCk7CisgICAgYm9vbCBwcmVjaXNpb25FcnJvckNoZWNrKGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsIFRQcmVjaXNpb24gcHJlY2lzaW9uLCBUQmFzaWNUeXBlIHR5cGUp
OworICAgIGJvb2wgbFZhbHVlRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25z
dCBjaGFyICpvcCwgVEludGVybVR5cGVkKik7CisgICAgYm9vbCBjb25zdEVycm9yQ2hlY2soVElu
dGVybVR5cGVkICpub2RlKTsKKyAgICBib29sIGludGVnZXJFcnJvckNoZWNrKFRJbnRlcm1UeXBl
ZCAqbm9kZSwgY29uc3QgY2hhciAqdG9rZW4pOworICAgIGJvb2wgZ2xvYmFsRXJyb3JDaGVjayhj
b25zdCBUU291cmNlTG9jICZsaW5lLCBib29sIGdsb2JhbCwgY29uc3QgY2hhciAqdG9rZW4pOwor
ICAgIGJvb2wgY29uc3RydWN0b3JFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmFyZ3VtZW50c05vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFR5cGUgKnR5cGUpOworICAgIGJvb2wgYXJyYXlTaXplRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBUSW50ZXJtVHlwZWQgKmV4cHIsIGludCAmc2l6
ZSk7CiAgICAgYm9vbCBhcnJheVF1YWxpZmllckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUpOwotICAgIGJvb2wgYXJyYXlUeXBlRXJyb3JD
aGVjayhjb25zdCBUU291cmNlTG9jJiBsaW5lLCBUUHVibGljVHlwZSB0eXBlKTsKKyAgICBib29s
IGFycmF5VHlwZUVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFB1Ymxp
Y1R5cGUgJnR5cGUpOwogICAgIGJvb2wgdm9pZEVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwgY29uc3QgVEJhc2ljVHlwZSAmdHlwZSk7
CiAgICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29uc3QgVEludGVy
bVR5cGVkKik7CiAgICAgYm9vbCBib29sRXJyb3JDaGVjayhjb25zdCBUU291cmNlTG9jJiwgY29u
c3QgVFB1YmxpY1R5cGUmKTsKLSAgICBib29sIHNhbXBsZXJFcnJvckNoZWNrKGNvbnN0IFRTb3Vy
Y2VMb2MmIGxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlJiBwVHlwZSwgY29uc3QgY2hhciogcmVhc29u
KTsKLSAgICBib29sIGxvY2F0aW9uRGVjbGFyYXRvckxpc3RDaGVjayhjb25zdCBUU291cmNlTG9j
JiBsaW5lLCBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUpOwotICAgIGJvb2wgcGFyYW1ldGVyU2Ft
cGxlckVycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgVFF1YWxpZmllciBxdWFsaWZp
ZXIsIGNvbnN0IFRUeXBlJiB0eXBlKTsKLSAgICBib29sIHBhcmFtRXJyb3JDaGVjayhjb25zdCBU
U291cmNlTG9jJiBsaW5lLCBUUXVhbGlmaWVyIHF1YWxpZmllciwgVFF1YWxpZmllciBwYXJhbVF1
YWxpZmllciwgVFR5cGUqIHR5cGUpOwotICAgIGJvb2wgZXh0ZW5zaW9uRXJyb3JDaGVjayhjb25z
dCBUU291cmNlTG9jJiBsaW5lLCBjb25zdCBUU3RyaW5nJik7Ci0gICAgYm9vbCBzaW5nbGVEZWNs
YXJhdGlvbkVycm9yQ2hlY2soVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsIGNvbnN0IFRTb3VyY2VM
b2MgJmlkZW50aWZpZXJMb2NhdGlvbik7Ci0gICAgYm9vbCBsYXlvdXRMb2NhdGlvbkVycm9yQ2hl
Y2soY29uc3QgVFNvdXJjZUxvYyYgbG9jYXRpb24sIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxh
eW91dFF1YWxpZmllcik7CisgICAgYm9vbCBzYW1wbGVyRXJyb3JDaGVjayhjb25zdCBUU291cmNl
TG9jICZsaW5lLCBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUsIGNvbnN0IGNoYXIgKnJlYXNvbik7
CisgICAgYm9vbCBsb2NhdGlvbkRlY2xhcmF0b3JMaXN0Q2hlY2soY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFB1YmxpY1R5cGUgJnBUeXBlKTsKKyAgICBib29sIHBhcmFtZXRlclNhbXBs
ZXJFcnJvckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIFRRdWFsaWZpZXIgcXVhbGlmaWVy
LCBjb25zdCBUVHlwZSAmdHlwZSk7CisgICAgYm9vbCBwYXJhbUVycm9yQ2hlY2soY29uc3QgVFNv
dXJjZUxvYyAmbGluZSwgVFF1YWxpZmllciBxdWFsaWZpZXIsIFRRdWFsaWZpZXIgcGFyYW1RdWFs
aWZpZXIsIFRUeXBlICp0eXBlKTsKKyAgICBib29sIGV4dGVuc2lvbkVycm9yQ2hlY2soY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyYpOworICAgIGJvb2wgc2luZ2xlRGVjbGFy
YXRpb25FcnJvckNoZWNrKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLCBjb25zdCBUU291
cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24pOworICAgIGJvb2wgbGF5b3V0TG9jYXRpb25FcnJv
ckNoZWNrKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLCBjb25zdCBUTGF5b3V0UXVhbGlmaWVy
ICZsYXlvdXRRdWFsaWZpZXIpOwogICAgIGJvb2wgZnVuY3Rpb25DYWxsTFZhbHVlRXJyb3JDaGVj
ayhjb25zdCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlLCBUSW50ZXJtQWdncmVnYXRlICopOworICAg
IHZvaWQgZXMzSW52YXJpYW50RXJyb3JDaGVjayhjb25zdCBUUXVhbGlmaWVyIHF1YWxpZmllciwg
Y29uc3QgVFNvdXJjZUxvYyAmaW52YXJpYW50TG9jYXRpb24pOworICAgIHZvaWQgZXMzSW5wdXRP
dXRwdXRUeXBlQ2hlY2soY29uc3QgVFF1YWxpZmllciBxdWFsaWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllckxvY2F0aW9u
KTsKIAotICAgIGNvbnN0IFRQcmFnbWEmIHByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGl2
ZUhhbmRsZXIucHJhZ21hKCk7IH0KLSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dGVu
c2lvbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25C
ZWhhdmlvcigpOyB9Ci0gICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyKiBleHRl
bnNpb24pOwotICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lv
bikgY29uc3Q7Ci0gICAgdm9pZCBoYW5kbGVFeHRlbnNpb25EaXJlY3RpdmUoY29uc3QgVFNvdXJj
ZUxvYyYgbG9jLCBjb25zdCBjaGFyKiBleHROYW1lLCBjb25zdCBjaGFyKiBiZWhhdmlvcik7Ci0g
ICAgdm9pZCBoYW5kbGVQcmFnbWFEaXJlY3RpdmUoY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25z
dCBjaGFyKiBuYW1lLCBjb25zdCBjaGFyKiB2YWx1ZSwgYm9vbCBzdGRnbCk7CisgICAgY29uc3Qg
VFByYWdtYSAmcHJhZ21hKCkgY29uc3QgeyByZXR1cm4gbURpcmVjdGl2ZUhhbmRsZXIucHJhZ21h
KCk7IH0KKyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dGVuc2lvbkJlaGF2aW9yKCkg
Y29uc3QgeyByZXR1cm4gbURpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsgfQor
ICAgIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgY2hhciAqZXh0ZW5zaW9uKTsKKyAgICBi
b29sIGlzRXh0ZW5zaW9uRW5hYmxlZChjb25zdCBjaGFyICpleHRlbnNpb24pIGNvbnN0OworICAg
IHZvaWQgaGFuZGxlRXh0ZW5zaW9uRGlyZWN0aXZlKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29u
c3QgY2hhciAqZXh0TmFtZSwgY29uc3QgY2hhciAqYmVoYXZpb3IpOworICAgIHZvaWQgaGFuZGxl
UHJhZ21hRGlyZWN0aXZlKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqbmFtZSwg
Y29uc3QgY2hhciAqdmFsdWUsIGJvb2wgc3RkZ2wpOwogCi0gICAgYm9vbCBjb250YWluc1NhbXBs
ZXIoVFR5cGUmIHR5cGUpOwotICAgIGJvb2wgYXJlQWxsQ2hpbGRDb25zdChUSW50ZXJtQWdncmVn
YXRlKiBhZ2dyTm9kZSk7Ci0gICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oY29uc3Qg
VFNvdXJjZUxvYyYgbGluZSwgVEZ1bmN0aW9uKiBwZm5DYWxsLCBpbnQgaW5wdXRTaGFkZXJWZXJz
aW9uLCBib29sICpidWlsdEluID0gMCk7Ci0gICAgYm9vbCBleGVjdXRlSW5pdGlhbGl6ZXIoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwgVFB1YmxpY1R5
cGUgJnBUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5p
dGlhbGl6ZXIsIFRJbnRlcm1Ob2RlICoqaW50ZXJtTm9kZSk7CisgICAgYm9vbCBjb250YWluc1Nh
bXBsZXIoY29uc3QgVFR5cGUgJnR5cGUpOworICAgIGNvbnN0IFRGdW5jdGlvbiogZmluZEZ1bmN0
aW9uKAorICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLCBURnVuY3Rpb24gKnBmbkNhbGws
IGludCBpbnB1dFNoYWRlclZlcnNpb24sIGJvb2wgKmJ1aWx0SW4gPSAwKTsKKyAgICBib29sIGV4
ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJnBUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybU5vZGUgKippbnRlcm1Ob2RlKTsKIAotICAgIFRQdWJsaWNUeXBlIGFk
ZEZ1bGx5U3BlY2lmaWVkVHlwZShUUXVhbGlmaWVyIHF1YWxpZmllciwgY29uc3QgVFB1YmxpY1R5
cGUmIHR5cGVTcGVjaWZpZXIpOwotICAgIFRQdWJsaWNUeXBlIGFkZEZ1bGx5U3BlY2lmaWVkVHlw
ZShUUXVhbGlmaWVyIHF1YWxpZmllciwgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXIs
IGNvbnN0IFRQdWJsaWNUeXBlJiB0eXBlU3BlY2lmaWVyKTsKKyAgICBUUHVibGljVHlwZSBhZGRG
dWxseVNwZWNpZmllZFR5cGUoVFF1YWxpZmllciBxdWFsaWZpZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW52YXJpYW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJnR5
cGVTcGVjaWZpZXIpOwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyc2VTaW5nbGVEZWNsYXJh
dGlvbihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJPclR5cGVMb2Nh
dGlvbiwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyT3JUeXBl
TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU3RyaW5nICZpZGVudGlmaWVyKTsKICAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZVNp
bmdsZUFycmF5RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmlkZW50aWZpZXJMb2NhdGlvbiwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxv
YyAmaW5kZXhMb2NhdGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pOwotICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKFRQdWJsaWNUeXBlICZw
dWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwgY29uc3QgVFN0cmluZyAm
aWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5pdGlh
bGl6ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZp
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKTsK
KyAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZVNpbmdsZUluaXREZWNsYXJhdGlvbihjb25zdCBU
UHVibGljVHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbml0aWFs
aXplcik7CiAKICAgICAvLyBQYXJzZSBhIGRlY2xhcmF0aW9uIGxpa2UgInR5cGUgYVtuXSA9IGlu
aXRpYWxpemVyIgogICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFwcGx5IHRvIGRlY2xh
cmF0aW9ucyBsaWtlICJ0eXBlW25dIGEgPSBpbml0aWFsaXplciIKICAgICBUSW50ZXJtQWdncmVn
YXRlICpwYXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKFRQdWJsaWNUeXBlICZwdWJsaWNU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLCBjb25zdCBUU3RyaW5nICZp
ZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwgVEludGVybVR5cGVkICpp
bmRleEV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sIFRJbnRlcm1UeXBl
ZCAqaW5pdGlhbGl6ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKmluZGV4RXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqaW5pdGlhbGl6ZXIpOwogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyc2VJbnZh
cmlhbnREZWNsYXJhdGlvbihjb25zdCBUU291cmNlTG9jICZpbnZhcmlhbnRMb2MsIGNvbnN0IFRT
b3VyY2VMb2MgJmlkZW50aWZpZXJMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICppZGVudGlmaWVyLCBjb25zdCBUU3ltYm9s
ICpzeW1ib2wpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNlSW52YXJpYW50RGVjbGFyYXRp
b24oY29uc3QgVFNvdXJjZUxvYyAmaW52YXJpYW50TG9jLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxv
YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTdHJpbmcgKmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wpOwogCi0gICAgVEludGVybUFnZ3Jl
Z2F0ZSAqcGFyc2VEZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLCBUSW50ZXJtQWdn
cmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLCBjb25zdCBU
U3RyaW5nICZpZGVudGlmaWVyKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZUFycmF5RGVj
bGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVn
YXRlRGVjbGFyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLCBjb25zdCBUU3RyaW5nICZp
ZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmFycmF5TG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNz
aW9uKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZUluaXREZWNsYXJhdG9yKFRQdWJsaWNU
eXBlICZwdWJsaWNUeXBlLCBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmlkZW50aWZpZXJMb2NhdGlvbiwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlu
aXRMb2NhdGlvbiwgVEludGVybVR5cGVkICppbml0aWFsaXplcik7CisgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqcGFyc2VEZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVE
ZWNsYXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyKTsKKyAgICBUSW50ZXJtQWdn
cmVnYXRlICpwYXJzZUFycmF5RGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRp
ZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZhcnJheUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKTsKKyAgICBUSW50ZXJt
QWdncmVnYXRlICpwYXJzZUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqYWdncmVnYXRlRGVjbGFyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZp
ZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplcik7CiAKICAgICAvLyBQYXJz
ZSBhIGRlY2xhcmF0b3IgbGlrZSAiYVtuXSA9IGluaXRpYWxpemVyIgotICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKnBhcnNlQXJyYXlJbml0RGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwg
VEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlRGVjbGFyYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MmIGlkZW50aWZp
ZXJMb2NhdGlvbiwgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyYgaW5kZXhMb2Nh
dGlvbiwgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlv
biwgVEludGVybVR5cGVkICppbml0aWFsaXplcik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFy
c2VBcnJheUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbmRleExvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVz
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyKTsKIAogICAgIHZv
aWQgcGFyc2VHbG9iYWxMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGVRdWFs
aWZpZXIpOwotICAgIFRGdW5jdGlvbiAqYWRkQ29uc3RydWN0b3JGdW5jKFRQdWJsaWNUeXBlIHB1
YmxpY1R5cGUpOwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUq
LCBUVHlwZSosIFRPcGVyYXRvciwgVEZ1bmN0aW9uKiwgY29uc3QgVFNvdXJjZUxvYyYpOwotICAg
IFRJbnRlcm1UeXBlZCogZm9sZENvbnN0Q29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZSogYWdn
ck5vZGUsIGNvbnN0IFRUeXBlJiB0eXBlKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0VmVj
dG9yTm9kZShUVmVjdG9yRmllbGRzJiwgVEludGVybVR5cGVkKiwgY29uc3QgVFNvdXJjZUxvYyYp
OwotICAgIFRJbnRlcm1UeXBlZCogYWRkQ29uc3RNYXRyaXhOb2RlKGludCAsIFRJbnRlcm1UeXBl
ZCosIGNvbnN0IFRTb3VyY2VMb2MmKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0QXJyYXlO
b2RlKGludCBpbmRleCwgVEludGVybVR5cGVkKiBub2RlLCBjb25zdCBUU291cmNlTG9jJiBsaW5l
KTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZENvbnN0U3RydWN0KGNvbnN0IFRTdHJpbmcgJmlkZW50
aWZpZXIsIFRJbnRlcm1UeXBlZCAqbm9kZSwgY29uc3QgVFNvdXJjZUxvYyYgbGluZSk7Ci0gICAg
VEludGVybVR5cGVkKiBhZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVz
c2lvbiwgY29uc3QgVFNvdXJjZUxvYyYgbG9jYXRpb24sIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHBy
ZXNzaW9uKTsKLSAgICBUSW50ZXJtVHlwZWQqIGFkZEZpZWxkU2VsZWN0aW9uRXhwcmVzc2lvbihU
SW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jJiBkb3RMb2NhdGlv
biwgY29uc3QgVFN0cmluZyAmZmllbGRTdHJpbmcsIGNvbnN0IFRTb3VyY2VMb2MmIGZpZWxkTG9j
YXRpb24pOworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFy
YXRpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
KTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICphZGRGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgVEZ1
bmN0aW9uICZmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9u
Qm9keSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmbG9jYXRpb24pOworICAgIHZvaWQgcGFyc2VGdW5jdGlvblByb3RvdHlwZShj
b25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEZ1bmN0aW9uICpmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybUFnZ3JlZ2F0ZSAqKmFnZ3JlZ2F0ZU91dCk7CisgICAgVEZ1bmN0aW9uICpwYXJzZUZ1
bmN0aW9uRGVjbGFyYXRvcihjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24pOworICAgIFRG
dW5jdGlvbiAqYWRkQ29uc3RydWN0b3JGdW5jKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBl
KTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZENvbnN0cnVjdG9yKFRJbnRlcm1Ob2RlICphcmd1bWVu
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZSAqdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqZm5DYWxsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CisgICAgVEludGVybVR5cGVk
ICphZGRDb25zdFZlY3Rvck5vZGUoVFZlY3RvckZpZWxkcyAmZmllbGRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBvdXRPZlJhbmdlSW5k
ZXhJc0Vycm9yKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZENvbnN0TWF0cml4Tm9kZShpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50
VW5pb24gKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IpOworICAgIFRJbnRlcm1UeXBlZCAqYWRkQ29uc3RB
cnJheU5vZGUoaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybUNvbnN0YW50VW5pb24gKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yKTsKKyAgICBUSW50ZXJtVHlw
ZWQgKmFkZENvbnN0U3RydWN0KAorICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLCBU
SW50ZXJtVHlwZWQgKm5vZGUsIGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUpOworICAgIFRJbnRlcm1U
eXBlZCAqYWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyYgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICppbmRleEV4cHJlc3Npb24pOworICAgIFRJbnRlcm1UeXBlZCogYWRkRmllbGRTZWxlY3Rpb25F
eHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmZG90TG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmZmllbGRTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmZmllbGRMb2NhdGlvbik7CiAKLSAgICBURmll
bGRMaXN0ICphZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdChjb25zdCBUUHVibGljVHlwZSYgdHlwZVNw
ZWNpZmllciwgVEZpZWxkTGlzdCAqZmllbGRMaXN0KTsKLSAgICBUUHVibGljVHlwZSBhZGRTdHJ1
Y3R1cmUoY29uc3QgVFNvdXJjZUxvYyYgc3RydWN0TGluZSwgY29uc3QgVFNvdXJjZUxvYyYgbmFt
ZUxpbmUsIGNvbnN0IFRTdHJpbmcgKnN0cnVjdE5hbWUsIFRGaWVsZExpc3QqIGZpZWxkTGlzdCk7
CisgICAgVEZpZWxkTGlzdCAqYWRkU3RydWN0RGVjbGFyYXRvckxpc3QoY29uc3QgVFB1YmxpY1R5
cGUgJnR5cGVTcGVjaWZpZXIsIFRGaWVsZExpc3QgKmZpZWxkTGlzdCk7CisgICAgVFB1YmxpY1R5
cGUgYWRkU3RydWN0dXJlKGNvbnN0IFRTb3VyY2VMb2MgJnN0cnVjdExpbmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICpzdHJ1Y3ROYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBURmllbGRMaXN0ICpmaWVsZExpc3QpOwogCi0gICAgVEludGVy
bUFnZ3JlZ2F0ZSogYWRkSW50ZXJmYWNlQmxvY2soY29uc3QgVFB1YmxpY1R5cGUmIHR5cGVRdWFs
aWZpZXIsIGNvbnN0IFRTb3VyY2VMb2MmIG5hbWVMaW5lLCBjb25zdCBUU3RyaW5nJiBibG9ja05h
bWUsIFRGaWVsZExpc3QqIGZpZWxkTGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyogaW5zdGFuY2VOYW1lLCBjb25zdCBUU291cmNlTG9j
JiBpbnN0YW5jZUxpbmUsIFRJbnRlcm1UeXBlZCogYXJyYXlJbmRleCwgY29uc3QgVFNvdXJjZUxv
YyYgYXJyYXlJbmRleExpbmUpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGFkZEludGVyZmFjZUJs
b2NrKGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlUXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmJsb2NrTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmllbGRMaXN0ICpm
aWVsZExpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAqaW5zdGFuY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluc3RhbmNlTGluZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmFycmF5SW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyYgYXJyYXlJ
bmRleExpbmUpOwogCi0gICAgVExheW91dFF1YWxpZmllciBwYXJzZUxheW91dFF1YWxpZmllcihj
b25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLCBjb25zdCBUU291cmNlTG9jJiBxdWFsaWZpZXJU
eXBlTGluZSk7Ci0gICAgVExheW91dFF1YWxpZmllciBwYXJzZUxheW91dFF1YWxpZmllcihjb25z
dCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLCBjb25zdCBUU291cmNlTG9jJiBxdWFsaWZpZXJUeXBl
TGluZSwgY29uc3QgVFN0cmluZyAmaW50VmFsdWVTdHJpbmcsIGludCBpbnRWYWx1ZSwgY29uc3Qg
VFNvdXJjZUxvYyYgaW50VmFsdWVMaW5lKTsKKyAgICBUTGF5b3V0UXVhbGlmaWVyIHBhcnNlTGF5
b3V0UXVhbGlmaWVyKAorICAgICAgICBjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLCBjb25z
dCBUU291cmNlTG9jICZxdWFsaWZpZXJUeXBlTGluZSk7CisgICAgVExheW91dFF1YWxpZmllciBw
YXJzZUxheW91dFF1YWxpZmllcihjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVh
bGlmaWVyVHlwZUxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBpbnRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmludFZhbHVlTGluZSk7CiAgICAg
VExheW91dFF1YWxpZmllciBqb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5b3V0UXVhbGlmaWVyIGxl
ZnRRdWFsaWZpZXIsIFRMYXlvdXRRdWFsaWZpZXIgcmlnaHRRdWFsaWZpZXIpOwogICAgIFRQdWJs
aWNUeXBlIGpvaW5JbnRlcnBvbGF0aW9uUXVhbGlmaWVycyhjb25zdCBUU291cmNlTG9jICZpbnRl
cnBvbGF0aW9uTG9jLCBUUXVhbGlmaWVyIGludGVycG9sYXRpb25RdWFsaWZpZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnN0
b3JhZ2VMb2MsIFRRdWFsaWZpZXIgc3RvcmFnZVF1YWxpZmllcik7CkBAIC0xODcsNTYgKzMwMSw5
MiBAQAogICAgIC8vIFBlcmZvcm1zIGFuIGVycm9yIGNoZWNrIGZvciBlbWJlZGRlZCBzdHJ1Y3Qg
ZGVjbGFyYXRpb25zLgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbiBlcnJvciB3YXMgcmFpc2Vk
IGR1ZSB0byB0aGUgZGVjbGFyYXRpb24gb2YKICAgICAvLyB0aGlzIHN0cnVjdC4KLSAgICBib29s
IGVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbGluZSwgY29uc3QgVFN0
cmluZyYgaWRlbnRpZmllcik7CisgICAgYm9vbCBlbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOwogICAgIHZvaWQg
ZXhpdFN0cnVjdERlY2xhcmF0aW9uKCk7CiAKLSAgICBib29sIHN0cnVjdE5lc3RpbmdFcnJvckNo
ZWNrKGNvbnN0IFRTb3VyY2VMb2MmIGxpbmUsIGNvbnN0IFRGaWVsZCYgZmllbGQpOworICAgIGJv
b2wgc3RydWN0TmVzdGluZ0Vycm9yQ2hlY2soY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3Qg
VEZpZWxkICZmaWVsZCk7CiAKICAgICBUSW50ZXJtU3dpdGNoICphZGRTd2l0Y2goVEludGVybVR5
cGVkICppbml0LCBUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0LCBjb25zdCBUU291cmNl
TG9jICZsb2MpOwogICAgIFRJbnRlcm1DYXNlICphZGRDYXNlKFRJbnRlcm1UeXBlZCAqY29uZGl0
aW9uLCBjb25zdCBUU291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1DYXNlICphZGREZWZhdWx0
KGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmFkZFVuYXJ5TWF0
aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MgJik7
Ci0gICAgVEludGVybVR5cGVkICphZGRVbmFyeU1hdGhMVmFsdWUoVE9wZXJhdG9yIG9wLCBUSW50
ZXJtVHlwZWQgKmNoaWxkLCBjb25zdCBUU291cmNlTG9jICYpOwotICAgIFRJbnRlcm1UeXBlZCAq
YWRkQmluYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5
cGVkICpyaWdodCwKLSAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAgICBUSW50ZXJtVHlw
ZWQgKmFkZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0KFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
ICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LAotICAgICAgICBjb25zdCBUU291cmNlTG9jICYp
OwotICAgIFRJbnRlcm1UeXBlZCAqYWRkQXNzaWduKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVk
ICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LAotICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
b2MpOworICAgIFRJbnRlcm1UeXBlZCAqYWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVy
bVR5cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQg
KmFkZFVuYXJ5TWF0aExWYWx1ZShUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNv
bnN0IFRTb3VyY2VMb2MgJmxvYyk7CisgICAgVEludGVybVR5cGVkICphZGRCaW5hcnlNYXRoKAor
ICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpy
aWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFy
eU1hdGhCb29sZWFuUmVzdWx0KAorICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAq
bGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBU
SW50ZXJtVHlwZWQgKmFkZEFzc2lnbigKKyAgICAgICAgVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAK
KyAgICBUSW50ZXJtVHlwZWQgKmFkZENvbW1hKFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5
cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKwogICAgIFRJbnRlcm1CcmFuY2gg
KmFkZEJyYW5jaChUT3BlcmF0b3Igb3AsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAgICAgVElu
dGVybUJyYW5jaCAqYWRkQnJhbmNoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpyZXR1cm5W
YWx1ZSwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKIAotICAgIFRJbnRlcm1UeXBlZCAqYWRkRnVu
Y3Rpb25DYWxsT3JNZXRob2QoVEZ1bmN0aW9uICpmbkNhbGwsIFRJbnRlcm1Ob2RlICpwYXJhbU5v
ZGUsIFRJbnRlcm1Ob2RlICp0aGlzTm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgYm9vbCAqZmF0YWxFcnJvcik7Cisg
ICAgdm9pZCBjaGVja1RleHR1cmVPZmZzZXRDb25zdChUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlv
bkNhbGwpOworICAgIFRJbnRlcm1UeXBlZCAqYWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoVEZ1bmN0
aW9uICpmbkNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtTm9kZSAqcGFyYW1Ob2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybU5vZGUgKnRoaXNOb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqZmF0YWxFcnJvcik7CiAKLSAgICBUSW50
ZXJtVHlwZWQgKmFkZFRlcm5hcnlTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJt
VHlwZWQgKnRydWVCbG9jaywgVEludGVybVR5cGVkICpmYWxzZUJsb2NrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKKyAgICBU
SW50ZXJtVHlwZWQgKmFkZFRlcm5hcnlTZWxlY3Rpb24oCisgICAgICAgIFRJbnRlcm1UeXBlZCAq
Y29uZCwgVEludGVybVR5cGVkICp0cnVlQmxvY2ssIFRJbnRlcm1UeXBlZCAqZmFsc2VCbG9jaywg
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CiAKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBtYWtlIHRo
ZXNlIHByaXZhdGUKKyAgICBUSW50ZXJtZWRpYXRlICZpbnRlcm1lZGlhdGU7IC8vIHRvIGhvbGQg
YW5kIGJ1aWxkIGEgcGFyc2UgdHJlZQorICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGU7ICAg
Ly8gc3ltYm9sIHRhYmxlIHRoYXQgZ29lcyB3aXRoIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgYmVp
bmcgcGFyc2VkCisKICAgcHJpdmF0ZToKICAgICBib29sIGRlY2xhcmVWYXJpYWJsZShjb25zdCBU
U291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLCBjb25zdCBUVHlwZSAm
dHlwZSwgVFZhcmlhYmxlICoqdmFyaWFibGUpOwogCiAgICAgYm9vbCBub25Jbml0RXJyb3JDaGVj
ayhjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLCBUUHVi
bGljVHlwZSAqdHlwZSk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGhJbnRlcm5h
bChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwK
LSAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKLSAgICBUSW50ZXJtVHlwZWQgKmNyZWF0
ZUFzc2lnbihUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpy
aWdodCwKLSAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQg
KmFkZEJpbmFyeU1hdGhJbnRlcm5hbCgKKyAgICAgICAgVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7Cisg
ICAgVEludGVybVR5cGVkICpjcmVhdGVBc3NpZ24oCisgICAgICAgIFRPcGVyYXRvciBvcCwgVElu
dGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZs
b2MpOwogICAgIC8vIFRoZSBmdW5jUmV0dXJuVHlwZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8g
YmUgbm9uLW51bGwgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGEgYnVpbHQtaW4gZnVuY3Rpb24uCiAg
ICAgLy8gSXQgaXMgZXhwZWN0ZWQgdG8gYmUgbnVsbCBmb3Igb3RoZXIgdW5hcnkgb3BlcmF0b3Jz
LgotICAgIFRJbnRlcm1UeXBlZCAqY3JlYXRlVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVy
bVR5cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jLAotICAgICAgICBjb25zdCBUVHlw
ZSAqZnVuY1JldHVyblR5cGUpOworICAgIFRJbnRlcm1UeXBlZCAqY3JlYXRlVW5hcnlNYXRoKAor
ICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VM
b2MgJmxvYywgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKTsKIAogICAgIC8vIFJldHVybiB0
cnVlIGlmIHRoZSBjaGVja3MgcGFzcwotICAgIGJvb2wgYmluYXJ5T3BDb21tb25DaGVjayhUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwKLSAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBib29sIGJpbmFyeU9wQ29tbW9uQ2hlY2so
CisgICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQg
KnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwogCiAgICAgLy8gU2V0IHRvIHRydWUgd2hl
biB0aGUgbGFzdC9jdXJyZW50IGRlY2xhcmF0b3IgbGlzdCB3YXMgc3RhcnRlZCB3aXRoIGFuIGVt
cHR5IGRlY2xhcmF0aW9uLgogICAgIGJvb2wgbURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJv
ckNoZWNrOworCisgICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsgICAgICAgICAgICAgIC8vIHZl
cnRleCBvciBmcmFnbWVudCBsYW5ndWFnZSAoZnV0dXJlOiBwYWNrIG9yIHVucGFjaykKKyAgICBT
aFNoYWRlclNwZWMgbVNoYWRlclNwZWM7ICAgICAgICAgICAgICAvLyBUaGUgbGFuZ3VhZ2Ugc3Bl
Y2lmaWNhdGlvbiBjb21waWxlciBjb25mb3JtcyB0byAtIEdMRVMyIG9yIFdlYkdMLgorICAgIGlu
dCBtU2hhZGVyVmVyc2lvbjsKKyAgICBUSW50ZXJtTm9kZSAqbVRyZWVSb290OyAgICAgICAvLyBy
b290IG9mIHBhcnNlIHRyZWUgYmVpbmcgY3JlYXRlZAorICAgIGludCBtTG9vcE5lc3RpbmdMZXZl
bDsgICAgICAgLy8gMCBpZiBvdXRzaWRlIGFsbCBsb29wcworICAgIGludCBtU3RydWN0TmVzdGlu
Z0xldmVsOyAgICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBhcnNpbmcgYSBzdHJ1Y3QgZGVjbGFy
YXRpb24KKyAgICBpbnQgbVN3aXRjaE5lc3RpbmdMZXZlbDsgICAgIC8vIDAgaWYgb3V0c2lkZSBh
bGwgc3dpdGNoIHN0YXRlbWVudHMKKyAgICBjb25zdCBUVHlwZSAqbUN1cnJlbnRGdW5jdGlvblR5
cGU7ICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkg
YmVpbmcgcGFyc2VkCisgICAgYm9vbCBtRnVuY3Rpb25SZXR1cm5zVmFsdWU7ICAvLyB0cnVlIGlm
IGEgbm9uLXZvaWQgZnVuY3Rpb24gaGFzIGEgcmV0dXJuCisgICAgYm9vbCBtQ2hlY2tzUHJlY2lz
aW9uRXJyb3JzOyAgLy8gdHJ1ZSBpZiBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIGEg
dmFyaWFibGUgaXMgZGVjbGFyZWQgd2l0aG91dCBwcmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxp
Y2l0LgorICAgIGJvb2wgbUZyYWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDE7ICAvLyB0cnVlIGlm
IGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQgd2hlbiBjb21waWxpbmcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNTTDEuCisgICAgVExheW91dE1hdHJp
eFBhY2tpbmcgbURlZmF1bHRNYXRyaXhQYWNraW5nOworICAgIFRMYXlvdXRCbG9ja1N0b3JhZ2Ug
bURlZmF1bHRCbG9ja1N0b3JhZ2U7CisgICAgVFN0cmluZyBtSGFzaEVyck1zZzsKKyAgICBURGlh
Z25vc3RpY3MgbURpYWdub3N0aWNzOworICAgIFREaXJlY3RpdmVIYW5kbGVyIG1EaXJlY3RpdmVI
YW5kbGVyOworICAgIHBwOjpQcmVwcm9jZXNzb3IgbVByZXByb2Nlc3NvcjsKKyAgICB2b2lkICpt
U2Nhbm5lcjsKKyAgICBib29sIG1Vc2VzRnJhZ0RhdGE7IC8vIHRyYWNrIGlmIHdlIGFyZSB1c2lu
ZyBib3RoIGdsX0ZyYWdEYXRhIGFuZCBnbF9GcmFnQ29sb3IKKyAgICBib29sIG1Vc2VzRnJhZ0Nv
bG9yOworICAgIGJvb2wgbVVzZXNTZWNvbmRhcnlPdXRwdXRzOyAgLy8gVHJhY2sgaWYgd2UgYXJl
IHVzaW5nIGVpdGhlciBnbF9TZWNvbmRhcnlGcmFnRGF0YSBvcgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gZ2xfU2Vjb25kYXJ5IEZyYWdDb2xvciBvciBib3RoLgorICAgIGlu
dCBtTWluUHJvZ3JhbVRleGVsT2Zmc2V0OworICAgIGludCBtTWF4UHJvZ3JhbVRleGVsT2Zmc2V0
OwogfTsKIAotaW50IFBhUGFyc2VTdHJpbmdzKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29u
c3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSwKLSAgICAgICAgICAgICAgICAgICBUUGFy
c2VDb250ZXh0KiBjb250ZXh0KTsKK2ludCBQYVBhcnNlU3RyaW5ncygKKyAgICBzaXplX3QgY291
bnQsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sIFRQYXJz
ZUNvbnRleHQgKmNvbnRleHQpOwogCiAjZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9QQVJT
RUNPTlRFWFRfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Bvb2xBbGxvYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29s
QWxsb2MuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDE5ICsyNDcsMTQgQEAKICAgICBwb2ludGVy
IGFkZHJlc3MocmVmZXJlbmNlIHgpIGNvbnN0IHsgcmV0dXJuICZ4OyB9CiAgICAgY29uc3RfcG9p
bnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB4KSBjb25zdCB7IHJldHVybiAmeDsgfQogCi0g
ICAgcG9vbF9hbGxvY2F0b3IoKSA6IGFsbG9jYXRvcihHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkp
IHsgfQotICAgIHBvb2xfYWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yJiBhKSA6IGFsbG9jYXRvcigm
YSkgeyB9Ci0gICAgcG9vbF9hbGxvY2F0b3IoY29uc3QgcG9vbF9hbGxvY2F0b3I8VD4mIHApIDog
YWxsb2NhdG9yKHAuYWxsb2NhdG9yKSB7IH0KKyAgICBwb29sX2FsbG9jYXRvcigpIHsgfQogCisg
ICAgdGVtcGxhdGU8Y2xhc3MgT3RoZXI+CisgICAgcG9vbF9hbGxvY2F0b3IoY29uc3QgcG9vbF9h
bGxvY2F0b3I8T3RoZXI+JiBwKSB7IH0KKwogICAgIHRlbXBsYXRlIDxjbGFzcyBPdGhlcj4KLSAg
ICBwb29sX2FsbG9jYXRvcjxUPiYgb3BlcmF0b3I9KGNvbnN0IHBvb2xfYWxsb2NhdG9yPE90aGVy
PiYgcCkgewotICAgICAgYWxsb2NhdG9yID0gcC5hbGxvY2F0b3I7Ci0gICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQorICAgIHBvb2xfYWxsb2NhdG9yPFQ+JiBvcGVyYXRvcj0oY29uc3QgcG9vbF9h
bGxvY2F0b3I8T3RoZXI+JiBwKSB7IHJldHVybiAqdGhpczsgfQogCi0gICAgdGVtcGxhdGU8Y2xh
c3MgT3RoZXI+Ci0gICAgcG9vbF9hbGxvY2F0b3IoY29uc3QgcG9vbF9hbGxvY2F0b3I8T3RoZXI+
JiBwKSA6IGFsbG9jYXRvcigmcC5nZXRBbGxvY2F0b3IoKSkgeyB9Ci0KICNpZiBkZWZpbmVkKF9f
U1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfUldTVERfQUxMT0NBVE9SKQogICAgIC8vIGxpYkNTdGQg
b24gc29tZSBwbGF0Zm9ybXMgaGF2ZSBhIGRpZmZlcmVudCBhbGxvY2F0ZS9kZWFsbG9jYXRlIGlu
dGVyZmFjZS4KICAgICAvLyBDYWxsZXIgcHJlLWJha2VzIHNpemVvZihUKSBpbnRvICduJyB3aGlj
aCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlCkBAIC0yODQsMTcgKzI3OSwxMyBAQAogICAg
IHZvaWQgY29uc3RydWN0KHBvaW50ZXIgcCwgY29uc3QgVCYgdmFsKSB7IG5ldyAoKHZvaWQgKilw
KSBUKHZhbCk7IH0KICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBwKSB7IHAtPlQ6On5UKCk7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwb29sX2FsbG9jYXRvciYgcmhzKSBjb25zdCB7
IHJldHVybiAmZ2V0QWxsb2NhdG9yKCkgPT0gJnJocy5nZXRBbGxvY2F0b3IoKTsgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBwb29sX2FsbG9jYXRvciYgcmhzKSBjb25zdCB7IHJldHVybiAm
Z2V0QWxsb2NhdG9yKCkgIT0gJnJocy5nZXRBbGxvY2F0b3IoKTsgfQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBwb29sX2FsbG9jYXRvciYgcmhzKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBvb2xfYWxsb2NhdG9yJiByaHMpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSAvIHNpemVvZihUKTsgfQogICAgIHNpemVfdHlwZSBt
YXhfc2l6ZShpbnQgc2l6ZSkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigt
MSkgLyBzaXplOyB9CiAKLSAgICB2b2lkIHNldEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciogYSkg
eyBhbGxvY2F0b3IgPSBhOyB9Ci0gICAgVFBvb2xBbGxvY2F0b3ImIGdldEFsbG9jYXRvcigpIGNv
bnN0IHsgcmV0dXJuICphbGxvY2F0b3I7IH0KLQotcHJvdGVjdGVkOgotICAgIFRQb29sQWxsb2Nh
dG9yKiBhbGxvY2F0b3I7CisgICAgVFBvb2xBbGxvY2F0b3ImIGdldEFsbG9jYXRvcigpIGNvbnN0
IHsgcmV0dXJuICpHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCk7IH0KIH07CiAKICNlbmRpZiAvLyBD
T01QSUxFUl9UUkFOU0xBVE9SX1BPT0xBTExPQ19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyQWxpdmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1
YWxpZmllckFsaXZlLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyQWxpdmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDU4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLQotY2xhc3MgVEFsaXZlVHJhdmVyc2Vy
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgewotcHVibGljOgotICAgIFRBbGl2ZVRyYXZlcnNl
cihUUXVhbGlmaWVyIHEpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UsIHRy
dWUpLCBmb3VuZChmYWxzZSksIHF1YWxpZmllcihxKQotICAgIHsKLSAgICB9Ci0KLQlib29sIHdh
c0ZvdW5kKCkgeyByZXR1cm4gZm91bmQ7IH0KLQotcHJvdGVjdGVkOgotICAgIGJvb2wgZm91bmQ7
Ci0gICAgVFF1YWxpZmllciBxdWFsaWZpZXI7Ci0KLSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqKTsKLSAgICBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0LCBUSW50ZXJtU2VsZWN0
aW9uKik7Ci19OwotCi0vLwotLy8gUmVwb3J0IHdoZXRoZXIgb3Igbm90IGEgdmFyaWFibGUgb2Yg
dGhlIGdpdmVuIHF1YWxpZmllciB0eXBlCi0vLyBpcyBndWFyYW50ZWVkIHdyaXR0ZW4uICBOb3Qg
YWx3YXlzIHBvc3NpYmxlIHRvIGRldGVybWluZSBpZgotLy8gaXQgaXMgd3JpdHRlbiBjb25kaXRp
b25hbGx5LgotLy8KLS8vID8/IEl0IGRvZXMgbm90IGRvIHRoaXMgd2VsbCB5ZXQsIHRoaXMgaXMg
anVzdCBhIHBsYWNlIGhvbGRlcgotLy8gdGhhdCBzaW1wbHkgZGV0ZXJtaW5lcyBpZiBpdCB3YXMg
cmVmZXJlbmNlIGF0IGFsbCwgYW55d2hlcmUuCi0vLwotYm9vbCBRdWFsaWZpZXJXcml0dGVuKFRJ
bnRlcm1Ob2RlKiBub2RlLCBUUXVhbGlmaWVyIHF1YWxpZmllcikKLXsKLSAgICBUQWxpdmVUcmF2
ZXJzZXIgaXQocXVhbGlmaWVyKTsKLQotICAgIGlmIChub2RlKQotICAgICAgICBub2RlLT50cmF2
ZXJzZSgmaXQpOwotCi0gICAgcmV0dXJuIGl0Lndhc0ZvdW5kKCk7Ci19Ci0KLXZvaWQgVEFsaXZl
VHJhdmVyc2VyOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBub2RlKQotewotICAgIC8vCi0g
ICAgLy8gSWYgaXQncyB3aGF0IHdlJ3JlIGxvb2tpbmcgZm9yLCByZWNvcmQgaXQuCi0gICAgLy8K
LSAgICBpZiAobm9kZS0+Z2V0UXVhbGlmaWVyKCkgPT0gcXVhbGlmaWVyKQotICAgICAgICBmb3Vu
ZCA9IHRydWU7Ci19Ci0KLWJvb2wgVEFsaXZlVHJhdmVyc2VyOjp2aXNpdFNlbGVjdGlvbihWaXNp
dCwgVEludGVybVNlbGVjdGlvbiopCi17Ci0gICAgaWYgKHdhc0ZvdW5kKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0
YW50UHJlY2lzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1NyBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIER1cmluZyBwYXJzaW5nLCBhbGwgY29uc3RhbnQgZXhwcmVzc2lvbnMg
YXJlIGZvbGRlZCB0byBjb25zdGFudCB1bmlvbiBub2Rlcy4gVGhlIGV4cHJlc3Npb25zIHRoYXQg
aGF2ZSBiZWVuCisvLyBmb2xkZWQgbWF5IGhhdmUgaGFkIHByZWNpc2lvbiBxdWFsaWZpZXJzLCB3
aGljaCBzaG91bGQgYWZmZWN0IHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRp
b24uCisvLyBJZiB0aGUgZm9sZGVkIGNvbnN0YW50IHVuaW9uIG5vZGVzIGFyZSB3cml0dGVuIHRv
IG91dHB1dCBhcyBzdWNoIHRoZXkgd29uJ3QgaGF2ZSBhbnkgcHJlY2lzaW9uIHF1YWxpZmllcnMs
CisvLyBhbmQgdGhlaXIgZWZmZWN0IG9uIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBv
cGVyYXRpb24gaXMgbG9zdC4KKy8vCisvLyBSZWNvcmRDb25zdGFudFByZWNpc2lvbiBpcyBhbiBB
U1QgdHJhdmVyc2VyIHRoYXQgaW5zcGVjdHMgdGhlIHByZWNpc2lvbiBxdWFsaWZpZXJzIG9mIGNv
bnN0YW50cyBhbmQgaG9pc3RzCisvLyB0aGUgY29uc3RhbnRzIG91dHNpZGUgdGhlIGNvbnRhaW5p
bmcgZXhwcmVzc2lvbiBhcyBwcmVjaXNpb24gcXVhbGlmaWVkIG5hbWVkIHZhcmlhYmxlcyBpbiBj
YXNlIHRoYXQgaXMKKy8vIHJlcXVpcmVkIGZvciBjb3JyZWN0IHByZWNpc2lvbiBwcm9wYWdhdGlv
bi4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJl
Y2lzaW9uLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCisj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisKK25hbWVzcGFjZQor
eworCitjbGFzcyBSZWNvcmRDb25zdGFudFByZWNpc2lvblRyYXZlcnNlciA6IHB1YmxpYyBUSW50
ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBSZWNvcmRDb25zdGFudFByZWNpc2lvblRy
YXZlcnNlcigpOworCisgICAgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50
VW5pb24gKm5vZGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCk7CisKKyAg
ICBib29sIGZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtRm91
bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudDsgfQorICBwcm90ZWN0ZWQ6CisgICAgYm9vbCBvcGVy
YW5kQWZmZWN0c1BhcmVudE9wZXJhdGlvblByZWNpc2lvbihUSW50ZXJtVHlwZWQgKm9wZXJhbmQp
OworCisgICAgYm9vbCBtRm91bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudDsKK307CisKK1JlY29y
ZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2VyOjpSZWNvcmRDb25zdGFudFByZWNpc2lvblRyYXZl
cnNlcigpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlKSwKKyAgICAg
IG1Gb3VuZEhpZ2hlclByZWNpc2lvbkNvbnN0YW50KGZhbHNlKQoreworfQorCitib29sIFJlY29y
ZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2VyOjpvcGVyYW5kQWZmZWN0c1BhcmVudE9wZXJhdGlv
blByZWNpc2lvbihUSW50ZXJtVHlwZWQgKm9wZXJhbmQpCit7CisgICAgY29uc3QgVEludGVybUJp
bmFyeSAqcGFyZW50QXNCaW5hcnkgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmluYXJ5Tm9kZSgp
OworICAgIGlmIChwYXJlbnRBc0JpbmFyeSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgLy8g
SWYgdGhlIGNvbnN0YW50IGlzIGFzc2lnbmVkIG9yIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSBhIHZh
cmlhYmxlLCBvciBpZiBpdCdzIGFuIGluZGV4LAorICAgICAgICAvLyBpdHMgcHJlY2lzaW9uIGhh
cyBubyBlZmZlY3QuCisgICAgICAgIHN3aXRjaCAocGFyZW50QXNCaW5hcnktPmdldE9wKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICBjYXNlIEVPcEluaXRpYWxpemU6CisgICAgICAgICAgY2FzZSBF
T3BBc3NpZ246CisgICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKKyAgICAgICAgICBjYXNl
IEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RJbnRl
cmZhY2VCbG9jazoKKyAgICAgICAgICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgVEludGVybVR5cGVkICpvdGhlck9wZXJhbmQgPSBwYXJlbnRB
c0JpbmFyeS0+Z2V0UmlnaHQoKTsKKyAgICAgICAgaWYgKG90aGVyT3BlcmFuZCA9PSBvcGVyYW5k
KQorICAgICAgICB7CisgICAgICAgICAgICBvdGhlck9wZXJhbmQgPSBwYXJlbnRBc0JpbmFyeS0+
Z2V0TGVmdCgpOworICAgICAgICB9CisgICAgICAgIC8vIElmIHRoZSBwcmVjaXNpb24gb2YgdGhl
IG90aGVyIGNoaWxkIGlzIGF0IGxlYXN0IGFzIGhpZ2ggYXMgdGhlIHByZWNpc2lvbiBvZiB0aGUg
Y29uc3RhbnQsIHRoZSBwcmVjaXNpb24gb2YKKyAgICAgICAgLy8gdGhlIGNvbnN0YW50IGhhcyBu
byBlZmZlY3QuCisgICAgICAgIGlmIChvdGhlck9wZXJhbmQtPmdldEFzQ29uc3RhbnRVbmlvbigp
ID09IG51bGxwdHIgJiYgb3RoZXJPcGVyYW5kLT5nZXRQcmVjaXNpb24oKSA+PSBvcGVyYW5kLT5n
ZXRQcmVjaXNpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyZW50QXNBZ2dyZWdhdGUg
PSBnZXRQYXJlbnROb2RlKCktPmdldEFzQWdncmVnYXRlKCk7CisgICAgaWYgKHBhcmVudEFzQWdn
cmVnYXRlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBpZiAoIXBhcmVudEFzQWdncmVnYXRl
LT5nb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
VGhpcyBjYW4gYmUgZWl0aGVyOgorICAgICAgICAgICAgLy8gKiBhIGNhbGwgdG8gYW4gdXNlci1k
ZWZpbmVkIGZ1bmN0aW9uCisgICAgICAgICAgICAvLyAqIGEgY2FsbCB0byBhIHRleHR1cmUgZnVu
Y3Rpb24KKyAgICAgICAgICAgIC8vICogc29tZSBvdGhlciBraW5kIG9mIGFnZ3JlZ2F0ZQorICAg
ICAgICAgICAgLy8gSW4gYW55IG9mIHRoZXNlIGNhc2VzIHRoZSBjb25zdGFudCBwcmVjaXNpb24g
aGFzIG5vIGVmZmVjdC4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAocGFyZW50QXNBZ2dyZWdhdGUtPmlzQ29uc3RydWN0b3IoKSAmJiBwYXJlbnRBc0Fn
Z3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIElmIHRoZSBwcmVjaXNpb24g
b2Ygb3BlcmFuZHMgZG9lcyBhZmZlY3QgdGhlIHJlc3VsdCwgYnV0IHRoZSBwcmVjaXNpb24gb2Yg
YW55IG9mIHRoZSBvdGhlciBjaGlsZHJlbgorICAgICAgICAvLyBoYXMgYSBwcmVjaXNpb24gdGhh
dCdzIGF0IGxlYXN0IGFzIGhpZ2ggYXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3RhbnQsIHRo
ZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN0YW50CisgICAgICAgIC8vIGhhcyBubyBlZmZlY3QuCisg
ICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVycyA9IHBhcmVudEFzQWdncmVnYXRlLT5n
ZXRTZXF1ZW5jZSgpOworICAgICAgICBmb3IgKFRJbnRlcm1Ob2RlICpwYXJhbWV0ZXIgOiAqcGFy
YW1ldGVycykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVEludGVybVR5cGVkICp0eXBl
ZFBhcmFtZXRlciA9IHBhcmFtZXRlci0+Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAgaWYgKHBh
cmFtZXRlciAhPSBvcGVyYW5kICYmIHR5cGVkUGFyYW1ldGVyICE9IG51bGxwdHIgJiYgcGFyYW1l
dGVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxscHRyICYmCisgICAgICAgICAgICAgICAg
dHlwZWRQYXJhbWV0ZXItPmdldFByZWNpc2lvbigpID49IG9wZXJhbmQtPmdldFByZWNpc2lvbigp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZWNv
cmRDb25zdGFudFByZWNpc2lvblRyYXZlcnNlcjo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1D
b25zdGFudFVuaW9uICpub2RlKQoreworICAgIGlmIChtRm91bmRIaWdoZXJQcmVjaXNpb25Db25z
dGFudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgdGhlIGNvbnN0YW50IGhhcyBsb3dw
IG9yIHVuZGVmaW5lZCBwcmVjaXNpb24sIGl0IGNhbid0IGluY3JlYXNlIHRoZSBwcmVjaXNpb24g
b2YgY29uc3VtaW5nIG9wZXJhdGlvbnMuCisgICAgaWYgKG5vZGUtPmdldFByZWNpc2lvbigpIDwg
RWJwTWVkaXVtKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoZSBu
b2RlIGhhcyBubyBlZmZlY3Qgb24gdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIGV4cHJl
c3Npb24sIGRlcGVuZGluZyBvbiB0aGUKKyAgICAvLyBjb25zdW1pbmcgZXhwcmVzc2lvbiwgYW5k
IHRoZSBwcmVjaXNpb24gb2YgdGhlIG90aGVyIHBhcmFtZXRlcnMgb2YgdGhlIGV4cHJlc3Npb24u
CisgICAgaWYgKCFvcGVyYW5kQWZmZWN0c1BhcmVudE9wZXJhdGlvblByZWNpc2lvbihub2RlKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTWFrZSB0aGUgY29uc3RhbnQgYSBwcmVjaXNpb24t
cXVhbGlmaWVkIG5hbWVkIHZhcmlhYmxlIHRvIG1ha2Ugc3VyZSBpdCBhZmZlY3RzIHRoZSBwcmVj
aXNpb24gb2YgdGhlIGNvbnN1bWluZworICAgIC8vIGV4cHJlc3Npb24uCisgICAgVEludGVybVNl
cXVlbmNlIGluc2VydGlvbnM7CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcElu
aXREZWNsYXJhdGlvbihub2RlLCBFdnFDb25zdCkpOworICAgIGluc2VydFN0YXRlbWVudHNJblBh
cmVudEJsb2NrKGluc2VydGlvbnMpOworICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKE5vZGVV
cGRhdGVFbnRyeShnZXRQYXJlbnROb2RlKCksIG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+
Z2V0VHlwZSgpKSwgZmFsc2UpKTsKKyAgICBtRm91bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudCA9
IHRydWU7Cit9CisKK3ZvaWQgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXI6Om5leHRJ
dGVyYXRpb24oKQoreworICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOworICAgIG1Gb3VuZEhpZ2hl
clByZWNpc2lvbkNvbnN0YW50ID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKK3ZvaWQg
UmVjb3JkQ29uc3RhbnRQcmVjaXNpb24oVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAq
dGVtcG9yYXJ5SW5kZXgpCit7CisgICAgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXIg
dHJhdmVyc2VyOworICAgIEFTU0VSVCh0ZW1wb3JhcnlJbmRleCAhPSBudWxscHRyKTsKKyAgICB0
cmF2ZXJzZXIudXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9yYXJ5SW5kZXgpOworICAgIC8vIEl0ZXJh
dGUgYXMgbmVjZXNzYXJ5LCBhbmQgcmVzZXQgdGhlIHRyYXZlcnNlciBiZXR3ZWVuIGl0ZXJhdGlv
bnMuCisgICAgZG8KKyAgICB7CisgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7Cisg
ICAgICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgICAgICBpZiAodHJhdmVyc2Vy
LmZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIHRyYXZlcnNlci51
cGRhdGVUcmVlKCk7CisgICAgfQorICAgIHdoaWxlICh0cmF2ZXJzZXIuZm91bmRIaWdoZXJQcmVj
aXNpb25Db25zdGFudCgpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3Jk
Q29uc3RhbnRQcmVjaXNpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIER1cmlu
ZyBwYXJzaW5nLCBhbGwgY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIGZvbGRlZCB0byBjb25zdGFu
dCB1bmlvbiBub2Rlcy4gVGhlIGV4cHJlc3Npb25zIHRoYXQgaGF2ZSBiZWVuCisvLyBmb2xkZWQg
bWF5IGhhdmUgaGFkIHByZWNpc2lvbiBxdWFsaWZpZXJzLCB3aGljaCBzaG91bGQgYWZmZWN0IHRo
ZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24uCisvLyBJZiB0aGUgZm9sZGVk
IGNvbnN0YW50IHVuaW9uIG5vZGVzIGFyZSB3cml0dGVuIHRvIG91dHB1dCBhcyBzdWNoIHRoZXkg
d29uJ3QgaGF2ZSBhbnkgcHJlY2lzaW9uIHF1YWxpZmllcnMsCisvLyBhbmQgdGhlaXIgZWZmZWN0
IG9uIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24gaXMgbG9zdC4KKy8v
CisvLyBSZWNvcmRDb25zdGFudFByZWNpc2lvbiBpcyBhbiBBU1QgdHJhdmVyc2VyIHRoYXQgaW5z
cGVjdHMgdGhlIHByZWNpc2lvbiBxdWFsaWZpZXJzIG9mIGNvbnN0YW50cyBhbmQgaG9pc3RzCisv
LyB0aGUgY29uc3RhbnRzIG91dHNpZGUgdGhlIGNvbnRhaW5pbmcgZXhwcmVzc2lvbiBhcyBwcmVj
aXNpb24gcXVhbGlmaWVkIG5hbWVkIHZhcmlhYmxlcyBpbiBjYXNlIHRoYXQgaXMKKy8vIHJlcXVp
cmVkIGZvciBjb3JyZWN0IHByZWNpc2lvbiBwcm9wYWdhdGlvbi4KKy8vCisKKyNpZm5kZWYgQ09N
UElMRVJfVFJBTlNMQVRPUl9SRUNPUkRDT05TVEFOVFBSRUNJU0lPTl9IXworI2RlZmluZSBDT01Q
SUxFUl9UUkFOU0xBVE9SX1JFQ09SRENPTlNUQU5UUFJFQ0lTSU9OX0hfCisKK2NsYXNzIFRJbnRl
cm1Ob2RlOworCit2b2lkIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKFRJbnRlcm1Ob2RlICpyb290
LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKKworI2VuZGlmICAgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9SRUNPUkRDT05TVEFOVFBSRUNJU0lPTl9IXwpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVT
dHJ1Y3ROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogI2lmbmRlZiBDT01Q
SUxFUl9UUkFOU0xBVE9SX1JFR0VORVJBVEVTVFJVQ1ROQU1FU19IXwogI2RlZmluZSBDT01QSUxF
Ul9UUkFOU0xBVE9SX1JFR0VORVJBVEVTVFJVQ1ROQU1FU19IXwogCi0jaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0ludGVybWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9s
VGFibGUuaCIKIAogI2luY2x1ZGUgPHNldD4KQEAgLTE3LDEzICsxNywxNCBAQAogICBwdWJsaWM6
CiAgICAgUmVnZW5lcmF0ZVN0cnVjdE5hbWVzKGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFi
bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQotICAgICAg
ICA6IG1TeW1ib2xUYWJsZShzeW1ib2xUYWJsZSksCisgICAgICAgIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAgIG1TeW1ib2xUYWJsZShzeW1ib2xUYWJs
ZSksCiAgICAgICAgICAgbVNoYWRlclZlcnNpb24oc2hhZGVyVmVyc2lvbiksCiAgICAgICAgICAg
bVNjb3BlRGVwdGgoMCkge30KIAogICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
U3ltYm9sKFRJbnRlcm1TeW1ib2wgKik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRl
KFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopOworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVy
bVN5bWJvbCAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50
ZXJtQWdncmVnYXRlICopIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgY29uc3QgVFN5bWJv
bFRhYmxlICZtU3ltYm9sVGFibGU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92
ZUR5bmFtaWNJbmRleGluZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVt
b3ZlRHluYW1pY0luZGV4aW5nIGlzIGFuIEFTVCB0cmF2ZXJzZXIgdG8gcmVtb3ZlIGR5bmFtaWMg
aW5kZXhpbmcgb2YgdmVjdG9ycyBhbmQgbWF0cmljZXMsCisvLyByZXBsYWNpbmcgdGhlbSB3aXRo
IGNhbGxzIHRvIGZ1bmN0aW9ucyB0aGF0IGNob29zZSB3aGljaCBjb21wb25lbnQgdG8gcmV0dXJu
IG9yIHdyaXRlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHlu
YW1pY0luZGV4aW5nLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5r
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgorCituYW1lc3BhY2UKK3sKKwor
VE5hbWUgR2V0SW5kZXhGdW5jdGlvbk5hbWUoY29uc3QgVFR5cGUgJnR5cGUsIGJvb2wgd3JpdGUp
Cit7CisgICAgVEluZm9TaW5rQmFzZSBuYW1lU2luazsKKyAgICBuYW1lU2luayA8PCAiZHluX2lu
ZGV4XyI7CisgICAgaWYgKHdyaXRlKQorICAgIHsKKyAgICAgICAgbmFtZVNpbmsgPDwgIndyaXRl
XyI7CisgICAgfQorICAgIGlmICh0eXBlLmlzTWF0cml4KCkpCisgICAgeworICAgICAgICBuYW1l
U2luayA8PCAibWF0IiA8PCB0eXBlLmdldENvbHMoKSA8PCAieCIgPDwgdHlwZS5nZXRSb3dzKCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5
cGUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAg
ICAgbmFtZVNpbmsgPDwgIml2ZWMiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAgICAgIG5hbWVTaW5rIDw8ICJidmVjIjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAg
ICAgICAgICBuYW1lU2luayA8PCAidXZlYyI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgIG5hbWVTaW5rIDw8ICJ2ZWMi
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisgICAgICAgIG5hbWVTaW5rIDw8IHR5
cGUuZ2V0Tm9taW5hbFNpemUoKTsKKyAgICB9CisgICAgVFN0cmluZyBuYW1lU3RyaW5nID0gVEZ1
bmN0aW9uOjptYW5nbGVOYW1lKG5hbWVTaW5rLmNfc3RyKCkpOworICAgIFROYW1lIG5hbWUobmFt
ZVN0cmluZyk7CisgICAgbmFtZS5zZXRJbnRlcm5hbCh0cnVlKTsKKyAgICByZXR1cm4gbmFtZTsK
K30KKworVEludGVybVN5bWJvbCAqQ3JlYXRlQmFzZVN5bWJvbChjb25zdCBUVHlwZSAmdHlwZSwg
VFF1YWxpZmllciBxdWFsaWZpZXIpCit7CisgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbmV3
IFRJbnRlcm1TeW1ib2woMCwgImJhc2UiLCB0eXBlKTsKKyAgICBzeW1ib2wtPnNldEludGVybmFs
KHRydWUpOworICAgIHN5bWJvbC0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVyKHF1YWxp
Zmllcik7CisgICAgcmV0dXJuIHN5bWJvbDsKK30KKworVEludGVybVN5bWJvbCAqQ3JlYXRlSW5k
ZXhTeW1ib2woKQoreworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IG5ldyBUSW50ZXJtU3lt
Ym9sKDAsICJpbmRleCIsIFRUeXBlKEVidEludCwgRWJwSGlnaCkpOworICAgIHN5bWJvbC0+c2V0
SW50ZXJuYWwodHJ1ZSk7CisgICAgc3ltYm9sLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZp
ZXIoRXZxSW4pOworICAgIHJldHVybiBzeW1ib2w7Cit9CisKK1RJbnRlcm1TeW1ib2wgKkNyZWF0
ZVZhbHVlU3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIFRJbnRlcm1TeW1ib2wgKnN5
bWJvbCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsICJ2YWx1ZSIsIHR5cGUpOworICAgIHN5bWJvbC0+
c2V0SW50ZXJuYWwodHJ1ZSk7CisgICAgc3ltYm9sLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFs
aWZpZXIoRXZxSW4pOworICAgIHJldHVybiBzeW1ib2w7Cit9CisKK1RJbnRlcm1Db25zdGFudFVu
aW9uICpDcmVhdGVJbnRDb25zdGFudE5vZGUoaW50IGkpCit7CisgICAgVENvbnN0YW50VW5pb24g
KmNvbnN0YW50ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CisgICAgY29uc3RhbnQtPnNldElDb25z
dChpKTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKGNvbnN0YW50LCBUVHlw
ZShFYnRJbnQsIEVicEhpZ2gpKTsKK30KKworVEludGVybUJpbmFyeSAqQ3JlYXRlSW5kZXhEaXJl
Y3RCYXNlU3ltYm9sTm9kZShjb25zdCBUVHlwZSAmaW5kZXhlZFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFF1YWxpZmllciBiYXNlUXVhbGlmaWVyKQoreworICAgIFRJbnRlcm1CaW5hcnkgKmluZGV4Tm9k
ZSA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0KTsKKyAgICBpbmRleE5vZGUtPnNl
dFR5cGUoZmllbGRUeXBlKTsKKyAgICBUSW50ZXJtU3ltYm9sICpiYXNlU3ltYm9sID0gQ3JlYXRl
QmFzZVN5bWJvbChpbmRleGVkVHlwZSwgYmFzZVF1YWxpZmllcik7CisgICAgaW5kZXhOb2RlLT5z
ZXRMZWZ0KGJhc2VTeW1ib2wpOworICAgIGluZGV4Tm9kZS0+c2V0UmlnaHQoQ3JlYXRlSW50Q29u
c3RhbnROb2RlKGluZGV4KSk7CisgICAgcmV0dXJuIGluZGV4Tm9kZTsKK30KKworVEludGVybUJp
bmFyeSAqQ3JlYXRlQXNzaWduVmFsdWVTeW1ib2xOb2RlKFRJbnRlcm1UeXBlZCAqdGFyZ2V0Tm9k
ZSwgY29uc3QgVFR5cGUgJmFzc2lnbmVkVmFsdWVUeXBlKQoreworICAgIFRJbnRlcm1CaW5hcnkg
KmFzc2lnbk5vZGUgPSBuZXcgVEludGVybUJpbmFyeShFT3BBc3NpZ24pOworICAgIGFzc2lnbk5v
ZGUtPnNldFR5cGUoYXNzaWduZWRWYWx1ZVR5cGUpOworICAgIGFzc2lnbk5vZGUtPnNldExlZnQo
dGFyZ2V0Tm9kZSk7CisgICAgYXNzaWduTm9kZS0+c2V0UmlnaHQoQ3JlYXRlVmFsdWVTeW1ib2wo
YXNzaWduZWRWYWx1ZVR5cGUpKTsKKyAgICByZXR1cm4gYXNzaWduTm9kZTsKK30KKworVEludGVy
bVR5cGVkICpFbnN1cmVTaWduZWRJbnQoVEludGVybVR5cGVkICpub2RlKQoreworICAgIGlmIChu
b2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCisgICAgICAgIHJldHVybiBub2RlOworCisg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqY29udmVydGVkTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRl
KEVPcENvbnN0cnVjdEludCk7CisgICAgY29udmVydGVkTm9kZS0+c2V0VHlwZShUVHlwZShFYnRJ
bnQpKTsKKyAgICBjb252ZXJ0ZWROb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZSk7
CisgICAgY29udmVydGVkTm9kZS0+c2V0UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCk7CisgICAgcmV0
dXJuIGNvbnZlcnRlZE5vZGU7Cit9CisKK1RUeXBlIEdldEZpZWxkVHlwZShjb25zdCBUVHlwZSAm
aW5kZXhlZFR5cGUpCit7CisgICAgaWYgKGluZGV4ZWRUeXBlLmlzTWF0cml4KCkpCisgICAgewor
ICAgICAgICBUVHlwZSBmaWVsZFR5cGUgPSBUVHlwZShpbmRleGVkVHlwZS5nZXRCYXNpY1R5cGUo
KSwgaW5kZXhlZFR5cGUuZ2V0UHJlY2lzaW9uKCkpOworICAgICAgICBmaWVsZFR5cGUuc2V0UHJp
bWFyeVNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oaW5kZXhlZFR5cGUuZ2V0Um93cygp
KSk7CisgICAgICAgIHJldHVybiBmaWVsZFR5cGU7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHJldHVybiBUVHlwZShpbmRleGVkVHlwZS5nZXRCYXNpY1R5cGUoKSwgaW5kZXhlZFR5
cGUuZ2V0UHJlY2lzaW9uKCkpOworICAgIH0KK30KKworLy8gR2VuZXJhdGUgYSByZWFkIG9yIHdy
aXRlIGZ1bmN0aW9uIGZvciBvbmUgZmllbGQgaW4gYSB2ZWN0b3IvbWF0cml4LgorLy8gT3V0LW9m
LXJhbmdlIGluZGljZXMgYXJlIGNsYW1wZWQuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGhvdyBB
TkdMRSBoYW5kbGVzIG91dC1vZi1yYW5nZQorLy8gaW5kaWNlcyBpbiBvdGhlciBwbGFjZXMuCisv
LyBOb3RlIHRoYXQgaW5kaWNlcyBjYW4gYmUgZWl0aGVyIGludCBvciB1aW50LiBXZSBjcmVhdGUg
b25seSBpbnQgdmVyc2lvbnMgb2YgdGhlIGZ1bmN0aW9ucywKKy8vIGFuZCBjb252ZXJ0IHVpbnQg
aW5kaWNlcyB0byBpbnQgYXQgdGhlIGNhbGwgc2l0ZS4KKy8vIHJlYWQgZnVuY3Rpb24gZXhhbXBs
ZToKKy8vIGZsb2F0IGR5bl9pbmRleF92ZWMyKGluIHZlYzIgYmFzZSwgaW4gaW50IGluZGV4KQor
Ly8geworLy8gICAgc3dpdGNoKGluZGV4KQorLy8gICAgeworLy8gICAgICBjYXNlICgwKToKKy8v
ICAgICAgICByZXR1cm4gYmFzZVswXTsKKy8vICAgICAgY2FzZSAoMSk6CisvLyAgICAgICAgcmV0
dXJuIGJhc2VbMV07CisvLyAgICAgIGRlZmF1bHQ6CisvLyAgICAgICAgYnJlYWs7CisvLyAgICB9
CisvLyAgICBpZiAoaW5kZXggPCAwKQorLy8gICAgICByZXR1cm4gYmFzZVswXTsKKy8vICAgIHJl
dHVybiBiYXNlWzFdOworLy8gfQorLy8gd3JpdGUgZnVuY3Rpb24gZXhhbXBsZToKKy8vIHZvaWQg
ZHluX2luZGV4X3dyaXRlX3ZlYzIoaW5vdXQgdmVjMiBiYXNlLCBpbiBpbnQgaW5kZXgsIGluIGZs
b2F0IHZhbHVlKQorLy8geworLy8gICAgc3dpdGNoKGluZGV4KQorLy8gICAgeworLy8gICAgICBj
YXNlICgwKToKKy8vICAgICAgICBiYXNlWzBdID0gdmFsdWU7CisvLyAgICAgICAgcmV0dXJuOwor
Ly8gICAgICBjYXNlICgxKToKKy8vICAgICAgICBiYXNlWzFdID0gdmFsdWU7CisvLyAgICAgICAg
cmV0dXJuOworLy8gICAgICBkZWZhdWx0OgorLy8gICAgICAgIGJyZWFrOworLy8gICAgfQorLy8g
ICAgaWYgKGluZGV4IDwgMCkKKy8vICAgIHsKKy8vICAgICAgYmFzZVswXSA9IHZhbHVlOworLy8g
ICAgICByZXR1cm47CisvLyAgICB9CisvLyAgICBiYXNlWzFdID0gdmFsdWU7CisvLyB9CisvLyBO
b3RlIHRoYXQgZWxzZSBpcyBub3QgdXNlZCBpbiBhYm92ZSBmdW5jdGlvbnMgdG8gYXZvaWQgdGhl
IFJld3JpdGVFbHNlQmxvY2tzIHRyYW5zZm9ybWF0aW9uLgorVEludGVybUFnZ3JlZ2F0ZSAqR2V0
SW5kZXhGdW5jdGlvbkRlZmluaXRpb24oVFR5cGUgdHlwZSwgYm9vbCB3cml0ZSkKK3sKKyAgICBB
U1NFUlQoIXR5cGUuaXNBcnJheSgpKTsKKyAgICAvLyBDb25zZXJ2YXRpdmVseSB1c2UgaGlnaHAg
aGVyZSwgZXZlbiBpZiB0aGUgaW5kZXhlZCB0eXBlIGlzIG5vdCBoaWdocC4gVGhhdCB3YXkgdGhl
IGNvZGUgY2FuJ3QKKyAgICAvLyBlbmQgdXAgdXNpbmcgbWVkaXVtcCB2ZXJzaW9uIG9mIGFuIGlu
ZGV4aW5nIGZ1bmN0aW9uIGZvciBhIGhpZ2hwIHZhbHVlLCBpZiBib3RoIG1lZGl1bXAgYW5kCisg
ICAgLy8gaGlnaHAgdmFsdWVzIGFyZSBiZWluZyBpbmRleGVkIGluIHRoZSBzaGFkZXIuIEZvciBI
TFNMIHByZWNpc2lvbiBkb2Vzbid0IG1hdHRlciwgYnV0IGluCisgICAgLy8gcHJpbmNpcGxlIHRo
aXMgY29kZSBjb3VsZCBiZSB1c2VkIHdpdGggbXVsdGlwbGUgYmFja2VuZHMuCisgICAgdHlwZS5z
ZXRQcmVjaXNpb24oRWJwSGlnaCk7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhpbmdGdW5j
dGlvbiA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcEZ1bmN0aW9uKTsKKyAgICBpbmRleGluZ0Z1
bmN0aW9uLT5zZXROYW1lT2JqKEdldEluZGV4RnVuY3Rpb25OYW1lKHR5cGUsIHdyaXRlKSk7CisK
KyAgICBUVHlwZSBmaWVsZFR5cGUgPSBHZXRGaWVsZFR5cGUodHlwZSk7CisgICAgaW50IG51bUNh
c2VzID0gMDsKKyAgICBpZiAodHlwZS5pc01hdHJpeCgpKQorICAgIHsKKyAgICAgICAgbnVtQ2Fz
ZXMgPSB0eXBlLmdldENvbHMoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbnVt
Q2FzZXMgPSB0eXBlLmdldE5vbWluYWxTaXplKCk7CisgICAgfQorICAgIGlmICh3cml0ZSkKKyAg
ICB7CisgICAgICAgIGluZGV4aW5nRnVuY3Rpb24tPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpbmRleGluZ0Z1bmN0aW9uLT5zZXRUeXBl
KGZpZWxkVHlwZSk7CisgICAgfQorCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1zTm9kZSA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFBhcmFtZXRlcnMpOworICAgIFRRdWFsaWZpZXIgYmFz
ZVF1YWxpZmllciA9IEV2cUluT3V0OworICAgIGlmICghd3JpdGUpCisgICAgICAgIGJhc2VRdWFs
aWZpZXIgICAgICAgID0gRXZxSW47CisgICAgVEludGVybVN5bWJvbCAqYmFzZVBhcmFtID0gQ3Jl
YXRlQmFzZVN5bWJvbCh0eXBlLCBiYXNlUXVhbGlmaWVyKTsKKyAgICBwYXJhbXNOb2RlLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2soYmFzZVBhcmFtKTsKKyAgICBUSW50ZXJtU3ltYm9sICppbmRl
eFBhcmFtID0gQ3JlYXRlSW5kZXhTeW1ib2woKTsKKyAgICBwYXJhbXNOb2RlLT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2soaW5kZXhQYXJhbSk7CisgICAgaWYgKHdyaXRlKQorICAgIHsKKyAgICAg
ICAgVEludGVybVN5bWJvbCAqdmFsdWVQYXJhbSA9IENyZWF0ZVZhbHVlU3ltYm9sKGZpZWxkVHlw
ZSk7CisgICAgICAgIHBhcmFtc05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh2YWx1ZVBh
cmFtKTsKKyAgICB9CisgICAgaW5kZXhpbmdGdW5jdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKHBhcmFtc05vZGUpOworCisgICAgVEludGVybUFnZ3JlZ2F0ZSAqc3RhdGVtZW50TGlzdCA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFNlcXVlbmNlKTsKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUNhc2VzOyArK2kpCisgICAgeworICAgICAgICBUSW50ZXJtQ2FzZSAqY2FzZU5vZGUg
PSBuZXcgVEludGVybUNhc2UoQ3JlYXRlSW50Q29uc3RhbnROb2RlKGkpKTsKKyAgICAgICAgc3Rh
dGVtZW50TGlzdC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNhc2VOb2RlKTsKKworICAgICAg
ICBUSW50ZXJtQmluYXJ5ICppbmRleE5vZGUgPQorICAgICAgICAgICAgQ3JlYXRlSW5kZXhEaXJl
Y3RCYXNlU3ltYm9sTm9kZSh0eXBlLCBmaWVsZFR5cGUsIGksIGJhc2VRdWFsaWZpZXIpOworICAg
ICAgICBpZiAod3JpdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFz
c2lnbk5vZGUgPSBDcmVhdGVBc3NpZ25WYWx1ZVN5bWJvbE5vZGUoaW5kZXhOb2RlLCBmaWVsZFR5
cGUpOworICAgICAgICAgICAgc3RhdGVtZW50TGlzdC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNr
KGFzc2lnbk5vZGUpOworICAgICAgICAgICAgVEludGVybUJyYW5jaCAqcmV0dXJuTm9kZSA9IG5l
dyBUSW50ZXJtQnJhbmNoKEVPcFJldHVybiwgbnVsbHB0cik7CisgICAgICAgICAgICBzdGF0ZW1l
bnRMaXN0LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2socmV0dXJuTm9kZSk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBUSW50ZXJtQnJhbmNoICpyZXR1
cm5Ob2RlID0gbmV3IFRJbnRlcm1CcmFuY2goRU9wUmV0dXJuLCBpbmRleE5vZGUpOworICAgICAg
ICAgICAgc3RhdGVtZW50TGlzdC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHJldHVybk5vZGUp
OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRGVmYXVsdCBjYXNlCisgICAgVEludGVybUNh
c2UgKmRlZmF1bHROb2RlID0gbmV3IFRJbnRlcm1DYXNlKG51bGxwdHIpOworICAgIHN0YXRlbWVu
dExpc3QtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhkZWZhdWx0Tm9kZSk7CisgICAgVEludGVy
bUJyYW5jaCAqYnJlYWtOb2RlID0gbmV3IFRJbnRlcm1CcmFuY2goRU9wQnJlYWssIG51bGxwdHIp
OworICAgIHN0YXRlbWVudExpc3QtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhicmVha05vZGUp
OworCisgICAgVEludGVybVN3aXRjaCAqc3dpdGNoTm9kZSA9IG5ldyBUSW50ZXJtU3dpdGNoKENy
ZWF0ZUluZGV4U3ltYm9sKCksIHN0YXRlbWVudExpc3QpOworCisgICAgVEludGVybUFnZ3JlZ2F0
ZSAqYm9keU5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgYm9k
eU5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhzd2l0Y2hOb2RlKTsKKworICAgIFRJbnRl
cm1CaW5hcnkgKmNvbmQgPSBuZXcgVEludGVybUJpbmFyeShFT3BMZXNzVGhhbik7CisgICAgY29u
ZC0+c2V0VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQpKTsKKyAgICBjb25kLT5zZXRM
ZWZ0KENyZWF0ZUluZGV4U3ltYm9sKCkpOworICAgIGNvbmQtPnNldFJpZ2h0KENyZWF0ZUludENv
bnN0YW50Tm9kZSgwKSk7CisKKyAgICAvLyBUd28gYmxvY2tzOiBvbmUgYWNjZXNzZXMgKGVpdGhl
ciByZWFkcyBvciB3cml0ZXMpIHRoZSBmaXJzdCBlbGVtZW50IGFuZCByZXR1cm5zLAorICAgIC8v
IHRoZSBvdGhlciBhY2Nlc3NlcyB0aGUgbGFzdCBlbGVtZW50LgorICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKnVzZUZpcnN0QmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7Cisg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqdXNlTGFzdEJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
RU9wU2VxdWVuY2UpOworICAgIFRJbnRlcm1CaW5hcnkgKmluZGV4Rmlyc3ROb2RlID0KKyAgICAg
ICAgQ3JlYXRlSW5kZXhEaXJlY3RCYXNlU3ltYm9sTm9kZSh0eXBlLCBmaWVsZFR5cGUsIDAsIGJh
c2VRdWFsaWZpZXIpOworICAgIFRJbnRlcm1CaW5hcnkgKmluZGV4TGFzdE5vZGUgPQorICAgICAg
ICBDcmVhdGVJbmRleERpcmVjdEJhc2VTeW1ib2xOb2RlKHR5cGUsIGZpZWxkVHlwZSwgbnVtQ2Fz
ZXMgLSAxLCBiYXNlUXVhbGlmaWVyKTsKKyAgICBpZiAod3JpdGUpCisgICAgeworICAgICAgICBU
SW50ZXJtQmluYXJ5ICphc3NpZ25GaXJzdE5vZGUgPSBDcmVhdGVBc3NpZ25WYWx1ZVN5bWJvbE5v
ZGUoaW5kZXhGaXJzdE5vZGUsIGZpZWxkVHlwZSk7CisgICAgICAgIHVzZUZpcnN0QmxvY2stPmdl
dFNlcXVlbmNlKCktPnB1c2hfYmFjayhhc3NpZ25GaXJzdE5vZGUpOworICAgICAgICBUSW50ZXJt
QnJhbmNoICpyZXR1cm5Ob2RlID0gbmV3IFRJbnRlcm1CcmFuY2goRU9wUmV0dXJuLCBudWxscHRy
KTsKKyAgICAgICAgdXNlRmlyc3RCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHJldHVy
bk5vZGUpOworCisgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFzc2lnbkxhc3ROb2RlID0gQ3JlYXRl
QXNzaWduVmFsdWVTeW1ib2xOb2RlKGluZGV4TGFzdE5vZGUsIGZpZWxkVHlwZSk7CisgICAgICAg
IHVzZUxhc3RCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGFzc2lnbkxhc3ROb2RlKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVEludGVybUJyYW5jaCAqcmV0dXJuRmly
c3ROb2RlID0gbmV3IFRJbnRlcm1CcmFuY2goRU9wUmV0dXJuLCBpbmRleEZpcnN0Tm9kZSk7Cisg
ICAgICAgIHVzZUZpcnN0QmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhyZXR1cm5GaXJz
dE5vZGUpOworCisgICAgICAgIFRJbnRlcm1CcmFuY2ggKnJldHVybkxhc3ROb2RlID0gbmV3IFRJ
bnRlcm1CcmFuY2goRU9wUmV0dXJuLCBpbmRleExhc3ROb2RlKTsKKyAgICAgICAgdXNlTGFzdEJs
b2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2socmV0dXJuTGFzdE5vZGUpOworICAgIH0KKyAg
ICBUSW50ZXJtU2VsZWN0aW9uICppZk5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihjb25kLCB1
c2VGaXJzdEJsb2NrLCBudWxscHRyKTsKKyAgICBib2R5Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVz
aF9iYWNrKGlmTm9kZSk7CisgICAgYm9keU5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh1
c2VMYXN0QmxvY2spOworCisgICAgaW5kZXhpbmdGdW5jdGlvbi0+Z2V0U2VxdWVuY2UoKS0+cHVz
aF9iYWNrKGJvZHlOb2RlKTsKKworICAgIHJldHVybiBpbmRleGluZ0Z1bmN0aW9uOworfQorCitj
bGFzcyBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXIgOiBwdWJsaWMgVExWYWx1ZVRyYWNr
aW5nVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2
ZXJzZXIoY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNoYWRlclZlcnNpb24p
OworCisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9k
ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGluc2VydEhlbHBlckRlZmluaXRpb25zKFRJbnRlcm1O
b2RlICpyb290KTsKKworICAgIHZvaWQgbmV4dEl0ZXJhdGlvbigpOworCisgICAgYm9vbCB1c2Vk
VHJlZUluc2VydGlvbigpIGNvbnN0IHsgcmV0dXJuIG1Vc2VkVHJlZUluc2VydGlvbjsgfQorCisg
IHByb3RlY3RlZDoKKyAgICAvLyBTZXRzIG9mIHR5cGVzIHRoYXQgYXJlIGluZGV4ZWQuIE5vdGUg
dGhhdCB0aGVzZSBjYW4gbm90IHN0b3JlIG11bHRpcGxlIHZhcmlhbnRzCisgICAgLy8gb2YgdGhl
IHNhbWUgdHlwZSB3aXRoIGRpZmZlcmVudCBwcmVjaXNpb25zIC0gb25seSBvbmUgcHJlY2lzaW9u
IGdldHMgc3RvcmVkLgorICAgIHN0ZDo6c2V0PFRUeXBlPiBtSW5kZXhlZFZlY0FuZE1hdHJpeFR5
cGVzOworICAgIHN0ZDo6c2V0PFRUeXBlPiBtV3JpdHRlblZlY0FuZE1hdHJpeFR5cGVzOworCisg
ICAgYm9vbCBtVXNlZFRyZWVJbnNlcnRpb247CisKKyAgICAvLyBXaGVuIHRydWUsIHRoZSB0cmF2
ZXJzZXIgd2lsbCByZW1vdmUgc2lkZSBlZmZlY3RzIGZyb20gYW55IGluZGV4aW5nIGV4cHJlc3Np
b24uCisgICAgLy8gVGhpcyBpcyBkb25lIHNvIHRoYXQgaW4gY29kZSBsaWtlCisgICAgLy8gICBW
W2orK11baV0rKy4KKyAgICAvLyB3aGVyZSBWIGlzIGFuIGFycmF5IG9mIHZlY3RvcnMsIGorKyB3
aWxsIG9ubHkgYmUgZXZhbHVhdGVkIG9uY2UuCisgICAgYm9vbCBtUmVtb3ZlSW5kZXhTaWRlRWZm
ZWN0c0luU3VidHJlZTsKK307CisKK1JlbW92ZUR5bmFtaWNJbmRleGluZ1RyYXZlcnNlcjo6UmVt
b3ZlRHluYW1pY0luZGV4aW5nVHJhdmVyc2VyKGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFi
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbikKKyAgICA6IFRMVmFsdWVUcmFja2luZ1RyYXZl
cnNlcih0cnVlLCBmYWxzZSwgZmFsc2UsIHN5bWJvbFRhYmxlLCBzaGFkZXJWZXJzaW9uKSwKKyAg
ICAgIG1Vc2VkVHJlZUluc2VydGlvbihmYWxzZSksCisgICAgICBtUmVtb3ZlSW5kZXhTaWRlRWZm
ZWN0c0luU3VidHJlZShmYWxzZSkKK3sKK30KKwordm9pZCBSZW1vdmVEeW5hbWljSW5kZXhpbmdU
cmF2ZXJzZXI6Omluc2VydEhlbHBlckRlZmluaXRpb25zKFRJbnRlcm1Ob2RlICpyb290KQorewor
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJvb3RBZ2cgPSByb290LT5nZXRBc0FnZ3JlZ2F0ZSgpOwor
ICAgIEFTU0VSVChyb290QWdnICE9IG51bGxwdHIgJiYgcm9vdEFnZy0+Z2V0T3AoKSA9PSBFT3BT
ZXF1ZW5jZSk7CisgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgZm9yIChUVHlw
ZSB0eXBlIDogbUluZGV4ZWRWZWNBbmRNYXRyaXhUeXBlcykKKyAgICB7CisgICAgICAgIGluc2Vy
dGlvbnMucHVzaF9iYWNrKEdldEluZGV4RnVuY3Rpb25EZWZpbml0aW9uKHR5cGUsIGZhbHNlKSk7
CisgICAgfQorICAgIGZvciAoVFR5cGUgdHlwZSA6IG1Xcml0dGVuVmVjQW5kTWF0cml4VHlwZXMp
CisgICAgeworICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhHZXRJbmRleEZ1bmN0aW9uRGVm
aW5pdGlvbih0eXBlLCB0cnVlKSk7CisgICAgfQorICAgIG1JbnNlcnRpb25zLnB1c2hfYmFjayhO
b2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShyb290QWdnLCAwLCBpbnNlcnRpb25zLCBUSW50ZXJtU2Vx
dWVuY2UoKSkpOworfQorCisvLyBDcmVhdGUgYSBjYWxsIHRvIGR5bl9pbmRleF8qKCkgYmFzZWQg
b24gYW4gaW5kaXJlY3QgaW5kZXhpbmcgb3Agbm9kZQorVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRl
SW5kZXhGdW5jdGlvbkNhbGwoVEludGVybUJpbmFyeSAqbm9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhlZE5vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4
KQoreworICAgIEFTU0VSVChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4SW5kaXJlY3QpOworICAg
IFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4aW5nQ2FsbCA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVP
cEZ1bmN0aW9uQ2FsbCk7CisgICAgaW5kZXhpbmdDYWxsLT5zZXRMaW5lKG5vZGUtPmdldExpbmUo
KSk7CisgICAgaW5kZXhpbmdDYWxsLT5zZXRVc2VyRGVmaW5lZCgpOworICAgIGluZGV4aW5nQ2Fs
bC0+c2V0TmFtZU9iaihHZXRJbmRleEZ1bmN0aW9uTmFtZShpbmRleGVkTm9kZS0+Z2V0VHlwZSgp
LCBmYWxzZSkpOworICAgIGluZGV4aW5nQ2FsbC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGlu
ZGV4ZWROb2RlKTsKKyAgICBpbmRleGluZ0NhbGwtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhp
bmRleCk7CisKKyAgICBUVHlwZSBmaWVsZFR5cGUgPSBHZXRGaWVsZFR5cGUoaW5kZXhlZE5vZGUt
PmdldFR5cGUoKSk7CisgICAgaW5kZXhpbmdDYWxsLT5zZXRUeXBlKGZpZWxkVHlwZSk7CisgICAg
cmV0dXJuIGluZGV4aW5nQ2FsbDsKK30KKworVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlSW5kZXhl
ZFdyaXRlRnVuY3Rpb25DYWxsKFRJbnRlcm1CaW5hcnkgKm5vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKndyaXR0ZW5WYWx1ZSkKK3sKKyAgICAvLyBEZWVwIGNvcHkgdGhlIGxlZnQgbm9kZSBzbyB0
aGF0IHR3byBwb2ludGVycyB0byB0aGUgc2FtZSBub2RlIGRvbid0IGVuZCB1cCBpbiB0aGUgdHJl
ZS4KKyAgICBUSW50ZXJtTm9kZSAqbGVmdENvcHkgPSBub2RlLT5nZXRMZWZ0KCktPmRlZXBDb3B5
KCk7CisgICAgQVNTRVJUKGxlZnRDb3B5ICE9IG51bGxwdHIgJiYgbGVmdENvcHktPmdldEFzVHlw
ZWQoKSAhPSBudWxscHRyKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGVkV3JpdGVDYWxs
ID0KKyAgICAgICAgQ3JlYXRlSW5kZXhGdW5jdGlvbkNhbGwobm9kZSwgbGVmdENvcHktPmdldEFz
VHlwZWQoKSwgaW5kZXgpOworICAgIGluZGV4ZWRXcml0ZUNhbGwtPnNldE5hbWVPYmooR2V0SW5k
ZXhGdW5jdGlvbk5hbWUobm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCksIHRydWUpKTsKKyAgICBp
bmRleGVkV3JpdGVDYWxsLT5zZXRUeXBlKFRUeXBlKEVidFZvaWQpKTsKKyAgICBpbmRleGVkV3Jp
dGVDYWxsLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sod3JpdHRlblZhbHVlKTsKKyAgICByZXR1
cm4gaW5kZXhlZFdyaXRlQ2FsbDsKK30KKworYm9vbCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2
ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQorewor
ICAgIGlmIChtVXNlZFRyZWVJbnNlcnRpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4SW5kaXJlY3QpCisgICAgeworICAgICAgICBp
ZiAobVJlbW92ZUluZGV4U2lkZUVmZmVjdHNJblN1YnRyZWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRlRWZmZWN0cygpKTsKKyAgICAgICAg
ICAgIC8vIEluIGNhc2Ugd2UncmUganVzdCByZW1vdmluZyBpbmRleCBzaWRlIGVmZmVjdHMsIGNv
bnZlcnQKKyAgICAgICAgICAgIC8vICAgdl9leHByW2luZGV4X2V4cHJdCisgICAgICAgICAgICAv
LyB0byB0aGlzOgorICAgICAgICAgICAgLy8gICBpbnQgczAgPSBpbmRleF9leHByOyB2X2V4cHJb
czBdOworICAgICAgICAgICAgLy8gTm93IHZfZXhwcltzMF0gY2FuIGJlIHNhZmVseSBleGVjdXRl
ZCBzZXZlcmFsIHRpbWVzIHdpdGhvdXQgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuCisKKyAgICAg
ICAgICAgIC8vIEluaXQgdGhlIHRlbXAgdmFyaWFibGUgaG9sZGluZyB0aGUgaW5kZXgKKyAgICAg
ICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluaXRJbmRleCA9IGNyZWF0ZVRlbXBJbml0RGVjbGFy
YXRpb24obm9kZS0+Z2V0UmlnaHQoKSk7CisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5z
ZXJ0aW9uczsKKyAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGluaXRJbmRleCk7Cisg
ICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKKyAg
ICAgICAgICAgIG1Vc2VkVHJlZUluc2VydGlvbiA9IHRydWU7CisKKyAgICAgICAgICAgIC8vIFJl
cGxhY2UgdGhlIGluZGV4IHdpdGggdGhlIHRlbXAgdmFyaWFibGUKKyAgICAgICAgICAgIFRJbnRl
cm1TeW1ib2wgKnRlbXBJbmRleCA9IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0UmlnaHQoKS0+
Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBsYWNlSW5kZXgobm9k
ZSwgbm9kZS0+Z2V0UmlnaHQoKSwgdGVtcEluZGV4LCBmYWxzZSk7CisgICAgICAgICAgICBtUmVw
bGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlSW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKCFub2RlLT5nZXRMZWZ0KCktPmlzQXJyYXkoKSAmJiBub2RlLT5nZXRMZWZ0KCktPmdl
dEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbCB3
cml0ZSA9IGlzTFZhbHVlUmVxdWlyZWRIZXJlKCk7CisKKyAgICAgICAgICAgIFRUeXBlIHR5cGUg
PSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKKyAgICAgICAgICAgIG1JbmRleGVkVmVjQW5k
TWF0cml4VHlwZXMuaW5zZXJ0KHR5cGUpOworCisgICAgICAgICAgICBpZiAod3JpdGUpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQ29udmVydDoKKyAgICAgICAgICAgICAgICAv
LyAgIHZfZXhwcltpbmRleF9leHByXSsrOworICAgICAgICAgICAgICAgIC8vIHRvIHRoaXM6Cisg
ICAgICAgICAgICAgICAgLy8gICBpbnQgczAgPSBpbmRleF9leHByOyBmbG9hdCBzMSA9IGR5bl9p
bmRleCh2X2V4cHIsIHMwKTsgczErKzsKKyAgICAgICAgICAgICAgICAvLyAgIGR5bl9pbmRleF93
cml0ZSh2X2V4cHIsIHMwLCBzMSk7CisgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3JrcyBldmVu
IGlmIGluZGV4X2V4cHIgaGFzIHNvbWUgc2lkZSBlZmZlY3RzLgorICAgICAgICAgICAgICAgIGlm
IChub2RlLT5nZXRMZWZ0KCktPmhhc1NpZGVFZmZlY3RzKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAvLyBJZiB2X2V4cHIgaGFzIHNpZGUgZWZmZWN0cywgdGhvc2Ug
bmVlZCB0byBiZSByZW1vdmVkIGJlZm9yZSBwcm9jZWVkaW5nLgorICAgICAgICAgICAgICAgICAg
ICAvLyBPdGhlcndpc2UgdGhlIHNpZGUgZWZmZWN0cyBvZiB2X2V4cHIgd291bGQgYmUgZXZhbHVh
dGVkIHR3aWNlLgorICAgICAgICAgICAgICAgICAgICAvLyBUaGUgb25seSBjYXNlIHdoZXJlIGFu
IGwtdmFsdWUgY2FuIGhhdmUgc2lkZSBlZmZlY3RzIGlzIHdoZW4gaXQgaXMKKyAgICAgICAgICAg
ICAgICAgICAgLy8gaW5kZXhpbmcuIEZvciBleGFtcGxlLCBpdCBjYW4gYmUgVltqKytdIHdoZXJl
IFYgaXMgYW4gYXJyYXkgb2YgdmVjdG9ycy4KKyAgICAgICAgICAgICAgICAgICAgbVJlbW92ZUlu
ZGV4U2lkZUVmZmVjdHNJblN1YnRyZWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gVE9ETyhvZXR1
YWhvQG52aWRpYS5jb20pOiBUaGlzIGlzIG5vdCBvcHRpbWFsIGlmIHRoZSBleHByZXNzaW9uIHVz
aW5nIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgIC8vIG9ubHkgd3JpdGVzIGl0IGFuZCBkb2Vz
bid0IG5lZWQgdGhlIHByZXZpb3VzIHZhbHVlLiBodHRwOi8vYW5nbGVidWcuY29tLzExMTYKKwor
ICAgICAgICAgICAgICAgIG1Xcml0dGVuVmVjQW5kTWF0cml4VHlwZXMuaW5zZXJ0KHR5cGUpOwor
ICAgICAgICAgICAgICAgIFRUeXBlIGZpZWxkVHlwZSA9IEdldEZpZWxkVHlwZSh0eXBlKTsKKwor
ICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zQmVmb3JlOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zQWZ0ZXI7CisKKyAgICAgICAgICAg
ICAgICAvLyBTdG9yZSB0aGUgaW5kZXggaW4gYSB0ZW1wb3Jhcnkgc2lnbmVkIGludCB2YXJpYWJs
ZS4KKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4SW5pdGlhbGl6ZXIgPSBFbnN1
cmVTaWduZWRJbnQobm9kZS0+Z2V0UmlnaHQoKSk7CisgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqaW5pdEluZGV4ID0gY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihpbmRleEluaXRp
YWxpemVyKTsKKyAgICAgICAgICAgICAgICBpbml0SW5kZXgtPnNldExpbmUobm9kZS0+Z2V0TGlu
ZSgpKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRpb25zQmVmb3JlLnB1c2hfYmFjayhpbml0SW5k
ZXgpOworCisgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhpbmdDYWxsID0g
Q3JlYXRlSW5kZXhGdW5jdGlvbkNhbGwoCisgICAgICAgICAgICAgICAgICAgIG5vZGUsIG5vZGUt
PmdldExlZnQoKSwgY3JlYXRlVGVtcFN5bWJvbChpbmRleEluaXRpYWxpemVyLT5nZXRUeXBlKCkp
KTsKKworICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5vZGUgZm9yIHJlZmVycmluZyB0byB0
aGUgaW5kZXggYWZ0ZXIgdGhlIG5leHRUZW1wb3JhcnlJbmRleCgpIGNhbGwKKyAgICAgICAgICAg
ICAgICAvLyBiZWxvdy4KKyAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICp0ZW1wSW5kZXgg
PSBjcmVhdGVUZW1wU3ltYm9sKGluZGV4SW5pdGlhbGl6ZXItPmdldFR5cGUoKSk7CisKKyAgICAg
ICAgICAgICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsgIC8vIEZyb20gbm93IG9uLCBjcmVhdGlu
ZyB0ZW1wb3Jhcnkgc3ltYm9scyB0aGF0IHJlZmVyIHRvIHRoZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZmllbGQgdmFsdWUuCisgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uc0JlZm9yZS5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihpbmRleGlu
Z0NhbGwpKTsKKworICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4ZWRXcml0
ZUNhbGwgPQorICAgICAgICAgICAgICAgICAgICBDcmVhdGVJbmRleGVkV3JpdGVGdW5jdGlvbkNh
bGwobm9kZSwgdGVtcEluZGV4LCBjcmVhdGVUZW1wU3ltYm9sKGZpZWxkVHlwZSkpOworICAgICAg
ICAgICAgICAgIGluc2VydGlvbnNBZnRlci5wdXNoX2JhY2soaW5kZXhlZFdyaXRlQ2FsbCk7Cisg
ICAgICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9uc0Jl
Zm9yZSwgaW5zZXJ0aW9uc0FmdGVyKTsKKyAgICAgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkg
cmVwbGFjZUluZGV4KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgY3JlYXRlVGVtcFN5bWJvbChmaWVs
ZFR5cGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UpOworICAgICAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VJbmRl
eCk7CisgICAgICAgICAgICAgICAgbVVzZWRUcmVlSW5zZXJ0aW9uID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGUgaW5kZXhlZCB2YWx1ZSBpcyBub3QgYmVpbmcgd3JpdHRlbiwgc28gd2UgY2FuIHNpbXBs
eSBjb252ZXJ0CisgICAgICAgICAgICAgICAgLy8gICB2X2V4cHJbaW5kZXhfZXhwcl0KKyAgICAg
ICAgICAgICAgICAvLyBpbnRvCisgICAgICAgICAgICAgICAgLy8gICBkeW5faW5kZXgodl9leHBy
LCBpbmRleF9leHByKQorICAgICAgICAgICAgICAgIC8vIElmIHRoZSBpbmRleF9leHByIGlzIHVu
c2lnbmVkLCB3ZSdsbCBjb252ZXJ0IGl0IHRvIHNpZ25lZC4KKyAgICAgICAgICAgICAgICBBU1NF
UlQoIW1SZW1vdmVJbmRleFNpZGVFZmZlY3RzSW5TdWJ0cmVlKTsKKyAgICAgICAgICAgICAgICBU
SW50ZXJtQWdncmVnYXRlICppbmRleGluZ0NhbGwgPSBDcmVhdGVJbmRleEZ1bmN0aW9uQ2FsbCgK
KyAgICAgICAgICAgICAgICAgICAgbm9kZSwgbm9kZS0+Z2V0TGVmdCgpLCBFbnN1cmVTaWduZWRJ
bnQobm9kZS0+Z2V0UmlnaHQoKSkpOworICAgICAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSBy
ZXBsYWNlSW5kZXgoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBpbmRleGluZ0NhbGwsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlSW5kZXgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAhbVVzZWRUcmVlSW5z
ZXJ0aW9uOworfQorCit2b2lkIFJlbW92ZUR5bmFtaWNJbmRleGluZ1RyYXZlcnNlcjo6bmV4dEl0
ZXJhdGlvbigpCit7CisgICAgbVVzZWRUcmVlSW5zZXJ0aW9uICAgICAgICAgICAgICAgPSBmYWxz
ZTsKKyAgICBtUmVtb3ZlSW5kZXhTaWRlRWZmZWN0c0luU3VidHJlZSA9IGZhbHNlOworICAgIG5l
eHRUZW1wb3JhcnlJbmRleCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UKKwordm9pZCBSZW1vdmVE
eW5hbWljSW5kZXhpbmcoVEludGVybU5vZGUgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQoreworICAgIFJlbW92ZUR5bmFtaWNJbmRleGlu
Z1RyYXZlcnNlciB0cmF2ZXJzZXIoc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pOworICAgIEFT
U0VSVCh0ZW1wb3JhcnlJbmRleCAhPSBudWxscHRyKTsKKyAgICB0cmF2ZXJzZXIudXNlVGVtcG9y
YXJ5SW5kZXgodGVtcG9yYXJ5SW5kZXgpOworICAgIGRvCisgICAgeworICAgICAgICB0cmF2ZXJz
ZXIubmV4dEl0ZXJhdGlvbigpOworICAgICAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsK
KyAgICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKKyAgICB9IHdoaWxlICh0cmF2ZXJzZXIu
dXNlZFRyZWVJbnNlcnRpb24oKSk7CisgICAgdHJhdmVyc2VyLmluc2VydEhlbHBlckRlZmluaXRp
b25zKHJvb3QpOworICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7Cit9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5k
ZXhpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUR5bmFt
aWNJbmRleGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBSZW1vdmVEeW5hbWljSW5kZXhpbmcgaXMgYW4gQVNUIHRyYXZlcnNlciB0byBy
ZW1vdmUgZHluYW1pYyBpbmRleGluZyBvZiB2ZWN0b3JzIGFuZCBtYXRyaWNlcywKKy8vIHJlcGxh
Y2luZyB0aGVtIHdpdGggY2FsbHMgdG8gZnVuY3Rpb25zIHRoYXQgY2hvb3NlIHdoaWNoIGNvbXBv
bmVudCB0byByZXR1cm4gb3Igd3JpdGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFU
T1JfUkVNT1ZFRFlOQU1JQ0lOREVYSU5HX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1Jf
UkVNT1ZFRFlOQU1JQ0lOREVYSU5HX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOworY2xhc3MgVFN5
bWJvbFRhYmxlOworCit2b2lkIFJlbW92ZUR5bmFtaWNJbmRleGluZyhUSW50ZXJtTm9kZSAqcm9v
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJv
bFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOwor
CisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVNT1ZFRFlOQU1JQ0lOREVYSU5HX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZW1vdmVQb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVt
b3ZlUG93IGlzIGFuIEFTVCB0cmF2ZXJzZXIgdG8gY29udmVydCBwb3coeCwgeSkgYnVpbHQtaW4g
Y2FsbHMgd2hlcmUgeSBpcyBhCisvLyBjb25zdGFudCB0byBleHAyKHkgKiBsb2cyKHgpKS4gVGhp
cyB3b3JrcyBhcm91bmQgYW4gaXNzdWUgaW4gTlZJRElBIDMxMSBzZXJpZXMKKy8vIE9wZW5HTCBk
cml2ZXJzLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93Lmgi
CisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCisjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisKK25hbWVzcGFjZQoreworCitib29s
IElzUHJvYmxlbWF0aWNQb3coVEludGVybVR5cGVkICpub2RlKQoreworICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmFnZyA9IG5vZGUtPmdldEFzQWdncmVnYXRlKCk7CisgICAgaWYgKGFnZyAhPSBudWxs
cHRyICYmIGFnZy0+Z2V0T3AoKSA9PSBFT3BQb3cpCisgICAgeworICAgICAgICBBU1NFUlQoYWdn
LT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgPT0gMik7CisgICAgICAgIHJldHVybiBhZ2ctPmdldFNl
cXVlbmNlKCktPmF0KDEpLT5nZXRBc0NvbnN0YW50VW5pb24oKSAhPSBudWxscHRyOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIFRyYXZlcnNlciB0aGF0IGNvbnZlcnRzIGFsbCBw
b3cgb3BlcmF0aW9ucyBzaW11bHRhbmVvdXNseS4KK2NsYXNzIFJlbW92ZVBvd1RyYXZlcnNlciA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBSZW1vdmVQb3dUcmF2
ZXJzZXIoKTsKKworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1B
Z2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCkgeyBt
TmVlZEFub3RoZXJJdGVyYXRpb24gPSBmYWxzZTsgfQorICAgIGJvb2wgbmVlZEFub3RoZXJJdGVy
YXRpb24oKSBjb25zdCB7IHJldHVybiBtTmVlZEFub3RoZXJJdGVyYXRpb247IH0KKworICBwcm90
ZWN0ZWQ6CisgICAgYm9vbCBtTmVlZEFub3RoZXJJdGVyYXRpb247Cit9OworCitSZW1vdmVQb3dU
cmF2ZXJzZXI6OlJlbW92ZVBvd1RyYXZlcnNlcigpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRy
dWUsIGZhbHNlLCBmYWxzZSksCisgICAgICBtTmVlZEFub3RoZXJJdGVyYXRpb24oZmFsc2UpCit7
Cit9CisKK2Jvb2wgUmVtb3ZlUG93VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK3sKKyAgICBpZiAoSXNQcm9ibGVtYXRpY1Bvdyhu
b2RlKSkKKyAgICB7CisgICAgICAgIFRJbmZvU2luayBudWxsU2luazsKKworICAgICAgICBUSW50
ZXJtVHlwZWQgKnggPSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5hdCgwKS0+Z2V0QXNUeXBlZCgpOwor
ICAgICAgICBUSW50ZXJtVHlwZWQgKnkgPSBub2RlLT5nZXRTZXF1ZW5jZSgpLT5hdCgxKS0+Z2V0
QXNUeXBlZCgpOworCisgICAgICAgIFRJbnRlcm1VbmFyeSAqbG9nID0gbmV3IFRJbnRlcm1VbmFy
eShFT3BMb2cyKTsKKyAgICAgICAgbG9nLT5zZXRPcGVyYW5kKHgpOworICAgICAgICBsb2ctPnNl
dExpbmUobm9kZS0+Z2V0TGluZSgpKTsKKyAgICAgICAgbG9nLT5zZXRUeXBlKHgtPmdldFR5cGUo
KSk7CisKKyAgICAgICAgVEludGVybUJpbmFyeSAqbXVsID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9w
TXVsKTsKKyAgICAgICAgbXVsLT5zZXRMZWZ0KHkpOworICAgICAgICBtdWwtPnNldFJpZ2h0KGxv
Zyk7CisgICAgICAgIG11bC0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOworICAgICAgICBib29s
IHZhbGlkID0gbXVsLT5wcm9tb3RlKG51bGxTaW5rKTsKKyAgICAgICAgVU5VU0VEX0FTU0VSVElP
Tl9WQVJJQUJMRSh2YWxpZCk7CisgICAgICAgIEFTU0VSVCh2YWxpZCk7CisKKyAgICAgICAgVElu
dGVybVVuYXJ5ICpleHAgPSBuZXcgVEludGVybVVuYXJ5KEVPcEV4cDIpOworICAgICAgICBleHAt
PnNldE9wZXJhbmQobXVsKTsKKyAgICAgICAgZXhwLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7
CisgICAgICAgIGV4cC0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkpOworCisgICAgICAgIE5vZGVV
cGRhdGVFbnRyeSByZXBsYWNlUG93KGdldFBhcmVudE5vZGUoKSwgbm9kZSwgZXhwLCBmYWxzZSk7
CisgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VQb3cpOworCisgICAgICAg
IC8vIElmIHRoZSB4IHBhcmFtZXRlciBhbHNvIG5lZWRzIHRvIGJlIHJlcGxhY2VkLCB3ZSBuZWVk
IHRvIGRvIHRoYXQgaW4gYW5vdGhlciB0cmF2ZXJzYWwsCisgICAgICAgIC8vIHNpbmNlIGl0J3Mg
cGFyZW50IG5vZGUgd2lsbCBjaGFuZ2UgaW4gYSB3YXkgdGhhdCdzIG5vdCBoYW5kbGVkIGNvcnJl
Y3RseSBieSB1cGRhdGVUcmVlKCkuCisgICAgICAgIGlmIChJc1Byb2JsZW1hdGljUG93KHgpKQor
ICAgICAgICB7CisgICAgICAgICAgICBtTmVlZEFub3RoZXJJdGVyYXRpb24gPSB0cnVlOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorCit9IC8vIG5hbWVzcGFjZQorCit2b2lkIFJlbW92ZVBvdyhUSW50ZXJtTm9kZSAqcm9v
dCkKK3sKKyAgICBSZW1vdmVQb3dUcmF2ZXJzZXIgdHJhdmVyc2VyOworICAgIC8vIEl0ZXJhdGUg
YXMgbmVjZXNzYXJ5LCBhbmQgcmVzZXQgdGhlIHRyYXZlcnNlciBiZXR3ZWVuIGl0ZXJhdGlvbnMu
CisgICAgZG8KKyAgICB7CisgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7CisgICAg
ICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgICAgICB0cmF2ZXJzZXIudXBkYXRl
VHJlZSgpOworICAgIH0KKyAgICB3aGlsZSAodHJhdmVyc2VyLm5lZWRBbm90aGVySXRlcmF0aW9u
KCkpOworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmVtb3ZlUG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVt
b3ZlUG93IGlzIGFuIEFTVCB0cmF2ZXJzZXIgdG8gY29udmVydCBwb3coeCwgeSkgYnVpbHQtaW4g
Y2FsbHMgd2hlcmUgeSBpcyBhCisvLyBjb25zdGFudCB0byBleHAyKHkgKiBsb2cyKHgpKS4gVGhp
cyB3b3JrcyBhcm91bmQgYW4gaXNzdWUgaW4gTlZJRElBIDMxMSBzZXJpZXMKKy8vIE9wZW5HTCBk
cml2ZXJzLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVBPV19IXwor
I2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVBPV19IXworCitjbGFzcyBUSW50ZXJt
Tm9kZTsKKwordm9pZCBSZW1vdmVQb3coVEludGVybU5vZGUgKnJvb3QpOworCisjZW5kaWYgICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVBPV19IXwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVuYW1lRnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZW5hbWVGdW5jdGlvbi5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW5hbWVGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgLCBtT2xkRnVuY3Rpb25OYW1lKG9sZEZ1bmN0aW9u
TmFtZSkKICAgICAsIG1OZXdGdW5jdGlvbk5hbWUobmV3RnVuY3Rpb25OYW1lKSB7fQogCi0gICAg
dmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRl
KiBub2RlKQorICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUgKm5vZGUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBUT3BlcmF0b3Igb3AgPSBub2Rl
LT5nZXRPcCgpOwogICAgICAgICBpZiAoKG9wID09IEVPcEZ1bmN0aW9uIHx8IG9wID09IEVPcEZ1
bmN0aW9uQ2FsbCkgJiYgbm9kZS0+Z2V0TmFtZSgpID09IG1PbGRGdW5jdGlvbk5hbWUpCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRl
RG9XaGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hp
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYzIEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gUmV3cml0ZURvV2hpbGUuY3BwOiByZXdyaXRlcyBkby13aGlsZSBsb29wcyB1c2luZyBhbm90
aGVyIGVxdWl2YWxlbnQKKy8vIGNvbnN0cnVjdC4KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvUmV3cml0ZURvV2hpbGUuaCIKKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
SW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2UKK3sKKworLy8gQW4gQVNUIHRyYXZlcnNlciB0aGF0
IHJld3JpdGVzIGxvb3BzIG9mIHRoZSBmb3JtCisvLyAgIGRvIHsKKy8vICAgICBDT0RFOworLy8g
ICB9IHdoaWxlIChDT05ESVRJT04pCisvLworLy8gdG8gbG9vcHMgb2YgdGhlIGZvcm0KKy8vICAg
Ym9vbCB0ZW1wID0gZmFsc2U7CisvLyAgIHdoaWxlICh0cnVlKSB7CisvLyAgICAgaWYgKHRlbXAp
IHsKKy8vICAgICAgIGlmICghQ09ORElUSU9OKSB7CisvLyAgICAgICAgIGJyZWFrOworLy8gICAg
ICAgfQorLy8gICAgIH0KKy8vICAgICB0ZW1wID0gdHJ1ZTsKKy8vICAgICBDT0RFOworLy8gICB9
CisvLworLy8gVGhlIHJlYXNvbiB3ZSBkb24ndCB1c2UgYSBzaW1wbGVyIGZvcm0sIHdpdGggZm9y
IGV4YW1wbGUganVzdCAodGVtcCAmJiAhQ09ORElUSU9OKSBpbiB0aGUKKy8vIHdoaWxlIGNvbmRp
dGlvbiwgaXMgdGhhdCBzaG9ydC1jaXJjdWl0IGlzIG9mdGVuIGJhZGx5IHN1cHBvcnRlZCBieSBk
cml2ZXIgc2hhZGVyIGNvbXBpbGVyLgorLy8gVGhlIGRvdWJsZSBpZiBoYXMgdGhlIHNhbWUgZWZm
ZWN0LCBidXQgZm9yY2VzIHNoYWRlciBjb21waWxlcnMgdG8gYmVoYXZlLgorLy8KKy8vIFRPRE8o
Y3dhbGxleikgd2hlbiBVbmZvbGRTaG9ydENpcmN1aXRJbnRvSWYgaGFuZGxlcyBsb29wcyBjb3Jy
ZWN0bHksIHJldmlzaXQgdGhpcyBhcyB3ZSBtaWdodAorLy8gYmUgYWJsZSB0byB1c2Ugd2hpbGUg
KHRlbXAgfHwgQ09ORElUSU9OKSB3aXRoIHRlbXAgaW5pdGlhbGx5IHNldCB0byB0cnVlIHRoZW4g
cnVuCisvLyBVbmZvbGRTaG9ydENpcmN1aXRJbnRvSWYKK2NsYXNzIERvV2hpbGVSZXdyaXRlciA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBEb1doaWxlUmV3cml0
ZXIoKSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSB7fQorCisgICAgYm9v
bCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIC8vIEEgd2VsbC1mb3JtZWQgQVNUIGNhbiBvbmx5IGhhdmUgZG8td2hp
bGUgaW4gRU9wU2VxdWVuY2Ugd2hpY2ggcmVwcmVzZW50IGxpc3RzIG9mCisgICAgICAgIC8vIHN0
YXRlbWVudHMuIEJ5IGRvaW5nIGEgcHJlZml4IHRyYXZlcnNhbCB3ZSBhcmUgYWJsZSB0byByZXBs
YWNlIHRoZSBkby13aGlsZSBpbiB0aGUKKyAgICAgICAgLy8gc2VxdWVuY2UgZGlyZWN0bHkgYXMg
dGhlIGNvbnRlbnQgb2YgdGhlIGRvLXdoaWxlIHdpbGwgYmUgdHJhdmVyc2VkIGxhdGVyLgorICAg
ICAgICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BTZXF1ZW5jZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBUSW50ZXJtU2VxdWVuY2Ug
KnN0YXRlbWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworCisgICAgICAgIC8vIFRoZSBzdGF0
ZW1lbnRzIHZlY3RvciB3aWxsIGhhdmUgbmV3IHN0YXRlbWVudHMgaW5zZXJ0ZWQgd2hlbiB3ZSBl
bmNvdW50ZXIgYSBkby13aGlsZSwKKyAgICAgICAgLy8gd2hpY2ggcHJldmVudHMgdXMgZnJvbSB1
c2luZyBhIHJhbmdlLWJhc2VkIGZvciBsb29wLiBVc2luZyB0aGUgdXN1YWwgaSsrIHdvcmtzLCBh
cworICAgICAgICAvLyB0aGUgKHR3bykgbmV3IHN0YXRlbWVudHMgaW5zZXJ0ZWQgcmVwbGFjZSB0
aGUgc3RhdGVtZW50IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLgorICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0YXRlbWVudHMtPnNpemUoKTsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBUSW50ZXJtTm9kZSAqc3RhdGVtZW50ID0gKCpzdGF0ZW1lbnRzKVtpXTsKKyAgICAgICAg
ICAgIFRJbnRlcm1Mb29wICpsb29wICAgICAgPSBzdGF0ZW1lbnQtPmdldEFzTG9vcE5vZGUoKTsK
KworICAgICAgICAgICAgaWYgKGxvb3AgPT0gbnVsbHB0ciB8fCBsb29wLT5nZXRUeXBlKCkgIT0g
RUxvb3BEb1doaWxlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUVHlwZSBib29sVHlwZSA9IFRUeXBlKEVidEJv
b2wpOworCisgICAgICAgICAgICAvLyBib29sIHRlbXAgPSBmYWxzZTsKKyAgICAgICAgICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlvbiA9IG51bGxwdHI7CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKmZhbHNlQ29uc3RhbnQgPSBuZXcgVENv
bnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgICAgICBmYWxzZUNvbnN0YW50LT5zZXRCQ29uc3Qo
ZmFsc2UpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqZmFsc2VWYWx1ZSA9IG5ldyBU
SW50ZXJtQ29uc3RhbnRVbmlvbihmYWxzZUNvbnN0YW50LCBib29sVHlwZSk7CisKKyAgICAgICAg
ICAgICAgICB0ZW1wRGVjbGFyYXRpb24gPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGZhbHNl
VmFsdWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB0ZW1wID0gdHJ1ZTsKKyAg
ICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmFzc2lnblRydWUgPSBudWxscHRyOworICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICp0cnVlQ29uc3RhbnQgPSBuZXcg
VENvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgICAgICB0cnVlQ29uc3RhbnQtPnNldEJDb25z
dCh0cnVlKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVWYWx1ZSA9IG5ldyBU
SW50ZXJtQ29uc3RhbnRVbmlvbih0cnVlQ29uc3RhbnQsIGJvb2xUeXBlKTsKKworICAgICAgICAg
ICAgICAgIGFzc2lnblRydWUgPSBjcmVhdGVUZW1wQXNzaWdubWVudCh0cnVlVmFsdWUpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiAodGVtcCkgeworICAgICAgICAgICAgLy8g
ICBpZiAoIUNPTkRJVElPTikgeworICAgICAgICAgICAgLy8gICAgIGJyZWFrOworICAgICAgICAg
ICAgLy8gICB9CisgICAgICAgICAgICAvLyB9CisgICAgICAgICAgICBUSW50ZXJtU2VsZWN0aW9u
ICpicmVha0lmID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUSW50
ZXJtQnJhbmNoICpicmVha1N0YXRlbWVudCA9IG5ldyBUSW50ZXJtQnJhbmNoKEVPcEJyZWFrLCBu
dWxscHRyKTsKKworICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmJyZWFrQmxvY2sg
PSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgICAgICAgICAgICAgYnJl
YWtCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGJyZWFrU3RhdGVtZW50KTsKKworICAg
ICAgICAgICAgICAgIFRJbnRlcm1VbmFyeSAqbmVnYXRlZENvbmRpdGlvbiA9IG5ldyBUSW50ZXJt
VW5hcnkoRU9wTG9naWNhbE5vdCk7CisgICAgICAgICAgICAgICAgbmVnYXRlZENvbmRpdGlvbi0+
c2V0T3BlcmFuZChsb29wLT5nZXRDb25kaXRpb24oKSk7CisKKyAgICAgICAgICAgICAgICBUSW50
ZXJtU2VsZWN0aW9uICppbm5lcklmID0KKyAgICAgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1T
ZWxlY3Rpb24obmVnYXRlZENvbmRpdGlvbiwgYnJlYWtCbG9jaywgbnVsbHB0cik7CisKKyAgICAg
ICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICppbm5lcklmQmxvY2sgPSBuZXcgVEludGVybUFn
Z3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgICAgICAgICAgICAgaW5uZXJJZkJsb2NrLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2soaW5uZXJJZik7CisKKyAgICAgICAgICAgICAgICBicmVha0lm
ID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24oY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSksIGlubmVy
SWZCbG9jaywgbnVsbHB0cik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFzc2Vt
YmxlIHRoZSByZXBsYWNlbWVudCBsb29wcywgcmV1c2luZyB0aGUgZG8td2hpbGUgbG9vcCdzIGJv
ZHkgYW5kIGluc2VydGluZyBvdXIKKyAgICAgICAgICAgIC8vIHN0YXRlbWVudHMgYXQgdGhlIGZy
b250LgorICAgICAgICAgICAgVEludGVybUxvb3AgKm5ld0xvb3AgPSBudWxscHRyOworICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICp0cnVlQ29uc3RhbnQgPSBu
ZXcgVENvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgICAgICB0cnVlQ29uc3RhbnQtPnNldEJD
b25zdCh0cnVlKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVWYWx1ZSA9IG5l
dyBUSW50ZXJtQ29uc3RhbnRVbmlvbih0cnVlQ29uc3RhbnQsIGJvb2xUeXBlKTsKKworICAgICAg
ICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmJvZHkgPSBudWxscHRyOworICAgICAgICAgICAg
ICAgIGlmIChsb29wLT5nZXRCb2R5KCkgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGJvZHkgPSBsb29wLT5nZXRCb2R5KCktPmdldEFzQWdncmVnYXRl
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShF
T3BTZXF1ZW5jZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gc2Vx
dWVuY2UgPSBib2R5LT5nZXRTZXF1ZW5jZSgpOworICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5p
bnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGFzc2lnblRydWUpOworICAgICAgICAgICAgICAgIHNl
cXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGJyZWFrSWYpOworCisgICAgICAgICAg
ICAgICAgbmV3TG9vcCA9IG5ldyBUSW50ZXJtTG9vcChFTG9vcFdoaWxlLCBudWxscHRyLCB0cnVl
VmFsdWUsIG51bGxwdHIsIGJvZHkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUSW50
ZXJtU2VxdWVuY2UgcmVwbGFjZW1lbnQ7CisgICAgICAgICAgICByZXBsYWNlbWVudC5wdXNoX2Jh
Y2sodGVtcERlY2xhcmF0aW9uKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50LnB1c2hfYmFjayhu
ZXdMb29wKTsKKworICAgICAgICAgICAgbm9kZS0+cmVwbGFjZUNoaWxkTm9kZVdpdGhNdWx0aXBs
ZShsb29wLCByZXBsYWNlbWVudCk7CisKKyAgICAgICAgICAgIG5leHRUZW1wb3JhcnlJbmRleCgp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKK30gIC8vIGFu
b255bW91cyBuYW1lc3BhY2UKKwordm9pZCBSZXdyaXRlRG9XaGlsZShUSW50ZXJtTm9kZSAqcm9v
dCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKK3sKKyAgICBBU1NFUlQodGVtcG9yYXJ5
SW5kZXggIT0gMCk7CisKKyAgICBEb1doaWxlUmV3cml0ZXIgcmV3cml0ZXI7CisgICAgcmV3cml0
ZXIudXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9yYXJ5SW5kZXgpOworCisgICAgcm9vdC0+dHJhdmVy
c2UoJnJld3JpdGVyKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1Jld3JpdGVEb1doaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIFJld3JpdGVEb1doaWxlLmg6IHJld3JpdGUgZG8td2hpbGUgbG9v
cHMgYXMgd2hpbGUgbG9vcHMgdG8gd29yayBhcm91bmQKKy8vIGRyaXZlciBidWdzCisKKyNpZm5k
ZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFRE9XSElMRV9IXworI2RlZmluZSBDT01QSUxF
Ul9UUkFOU0xBVE9SX1JFV1JJVEVET1dISUxFX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOwordm9p
ZCBSZXdyaXRlRG9XaGlsZShUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3Jh
cnlJbmRleCk7CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFRE9XSElM
RV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxvY2tzLmNwcAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMiAr
MjMsMTQgQEAKICAgICBFbHNlQmxvY2tSZXdyaXRlcigpOwogCiAgIHByb3RlY3RlZDoKLSAgICBi
b29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdh
dGUpOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdh
dGUgKmFnZ3JlZ2F0ZSkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBpbnQgbVRlbXBvcmFy
eUluZGV4OwogICAgIGNvbnN0IFRUeXBlICptRnVuY3Rpb25UeXBlOwogCiAgICAgVEludGVybU5v
ZGUgKnJld3JpdGVTZWxlY3Rpb24oVEludGVybVNlbGVjdGlvbiAqc2VsZWN0aW9uKTsKIH07CiAK
LVRJbnRlcm1TeW1ib2wgKk1ha2VOZXdUZW1wb3JhcnkoY29uc3QgVFN0cmluZyAmbmFtZSwgVEJh
c2ljVHlwZSB0eXBlKQotewotICAgIFRUeXBlIHZhcmlhYmxlVHlwZSh0eXBlLCBFYnBIaWdoLCBF
dnFUZW1wb3JhcnkpOwotICAgIFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBuZXcgVEludGVybVN5bWJv
bCgtMSwgbmFtZSwgdmFyaWFibGVUeXBlKTsKLSAgICBub2RlLT5zZXRJbnRlcm5hbCh0cnVlKTsK
LSAgICByZXR1cm4gbm9kZTsKLX0KLQotVEludGVybUJpbmFyeSAqTWFrZU5ld0JpbmFyeShUT3Bl
cmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3Qg
VFR5cGUgJnJlc3VsdFR5cGUpCi17Ci0gICAgVEludGVybUJpbmFyeSAqYmluYXJ5ID0gbmV3IFRJ
bnRlcm1CaW5hcnkob3ApOwotICAgIGJpbmFyeS0+c2V0TGVmdChsZWZ0KTsKLSAgICBiaW5hcnkt
PnNldFJpZ2h0KHJpZ2h0KTsKLSAgICBiaW5hcnktPnNldFR5cGUocmVzdWx0VHlwZSk7Ci0gICAg
cmV0dXJuIGJpbmFyeTsKLX0KLQogVEludGVybVVuYXJ5ICpNYWtlTmV3VW5hcnkoVE9wZXJhdG9y
IG9wLCBUSW50ZXJtVHlwZWQgKm9wZXJhbmQpCiB7CiAgICAgVEludGVybVVuYXJ5ICp1bmFyeSA9
IG5ldyBUSW50ZXJtVW5hcnkob3AsIG9wZXJhbmQtPmdldFR5cGUoKSk7CkBAIC01Nyw4ICszOSw3
IEBACiB9CiAKIEVsc2VCbG9ja1Jld3JpdGVyOjpFbHNlQmxvY2tSZXdyaXRlcigpCi0gICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSksCi0gICAgICBtVGVtcG9y
YXJ5SW5kZXgoMCksCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlKSwK
ICAgICAgIG1GdW5jdGlvblR5cGUoTlVMTCkKIHt9CiAKQEAgLTczLDcgKzU0LDcgQEAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqc3RhdGVtZW50ID0gKCpub2Rl
LT5nZXRTZXF1ZW5jZSgpKVtzdGF0ZW1lbnRJbmRleF07CiAgICAgICAgICAgICAgICAgVEludGVy
bVNlbGVjdGlvbiAqc2VsZWN0aW9uID0gc3RhdGVtZW50LT5nZXRBc1NlbGVjdGlvbk5vZGUoKTsK
LSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi0+Z2V0RmFsc2VCbG9j
aygpICE9IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24t
PmdldEZhbHNlQmxvY2soKSAhPSBudWxscHRyKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGlmIC8gZWxzZSBpZgogICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtU2VsZWN0aW9uICplbHNlSWZCcmFuY2ggPSBzZWxlY3Rpb24tPmdldEZhbHNlQmxv
Y2soKS0+Z2V0QXNTZWxlY3Rpb25Ob2RlKCk7CkBAIC0xMDMsMjAgKzg0LDIwIEBACiAKIFRJbnRl
cm1Ob2RlICpFbHNlQmxvY2tSZXdyaXRlcjo6cmV3cml0ZVNlbGVjdGlvbihUSW50ZXJtU2VsZWN0
aW9uICpzZWxlY3Rpb24pCiB7Ci0gICAgQVNTRVJUKHNlbGVjdGlvbiAhPSBOVUxMKTsKKyAgICBB
U1NFUlQoc2VsZWN0aW9uICE9IG51bGxwdHIpOwogCi0gICAgVFN0cmluZyB0ZW1wb3JhcnlOYW1l
ID0gImNvbmRfIiArIHN0cihtVGVtcG9yYXJ5SW5kZXgrKyk7CisgICAgbmV4dFRlbXBvcmFyeUlu
ZGV4KCk7CisKICAgICBUSW50ZXJtVHlwZWQgKnR5cGVkQ29uZGl0aW9uID0gc2VsZWN0aW9uLT5n
ZXRDb25kaXRpb24oKS0+Z2V0QXNUeXBlZCgpOwotICAgIFRUeXBlIHJlc3VsdFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkKTsKLSAgICBUSW50ZXJtU3ltYm9sICpjb25kaXRpb25TeW1ib2xJbml0
ID0gTWFrZU5ld1RlbXBvcmFyeSh0ZW1wb3JhcnlOYW1lLCBFYnRCb29sKTsKLSAgICBUSW50ZXJt
QmluYXJ5ICpzdG9yZUNvbmRpdGlvbiA9IE1ha2VOZXdCaW5hcnkoRU9wSW5pdGlhbGl6ZSwgY29u
ZGl0aW9uU3ltYm9sSW5pdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZWRDb25kaXRpb24sIHJlc3VsdFR5cGUpOwotICAgIFRJbnRlcm1Ob2Rl
ICpuZWdhdGVkRWxzZSA9IE5VTEw7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqc3RvcmVDb25kaXRp
b24gPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKHR5cGVkQ29uZGl0aW9uKTsKIAotICAgIFRJ
bnRlcm1TZWxlY3Rpb24gKmZhbHNlQmxvY2sgPSBOVUxMOworICAgIFRJbnRlcm1TZWxlY3Rpb24g
KmZhbHNlQmxvY2sgPSBudWxscHRyOwogCisgICAgVFR5cGUgYm9vbFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOworCiAgICAgaWYgKHNlbGVjdGlvbi0+Z2V0RmFsc2VC
bG9jaygpKQogICAgIHsKKyAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbmVnYXRlZEVsc2UgPSBu
dWxscHRyOwogICAgICAgICAvLyBjcmJ1Zy5jb20vMzQ2NDYzCiAgICAgICAgIC8vIEQzRCBnZW5l
cmF0ZXMgZXJyb3IgbWVzc2FnZXMgY2xhaW1pbmcgYSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZh
bHVlLCB3aGVuIHJld3JpdGluZwogICAgICAgICAvLyBhbiBpZi1lbHNlIGNsYXVzZSB0aGF0IHJl
dHVybnMgc29tZXRoaW5nIG5vbi12b2lkIGluIGEgZnVuY3Rpb24uIEJ5IGFwcGVuZGluZyBkdW1t
eQpAQCAtMTI2LDI0ICsxMDcsMjIgQEAKICAgICAgICAgICAgIFRTdHJpbmcgdHlwZVN0cmluZyA9
IG1GdW5jdGlvblR5cGUtPmdldFN0cnVjdCgpID8gbUZ1bmN0aW9uVHlwZS0+Z2V0U3RydWN0KCkt
Pm5hbWUoKSA6CiAgICAgICAgICAgICAgICAgbUZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNTdHJpbmco
KTsKICAgICAgICAgICAgIFRTdHJpbmcgcmF3VGV4dCA9ICJyZXR1cm4gKCIgKyB0eXBlU3RyaW5n
ICsgIikwIjsKLSAgICAgICAgICAgIG5lZ2F0ZWRFbHNlID0gbmV3IFRJbnRlcm1SYXcoKm1GdW5j
dGlvblR5cGUsIHJhd1RleHQpOworICAgICAgICAgICAgVEludGVybVJhdyAqcmV0dXJuTm9kZSA9
IG5ldyBUSW50ZXJtUmF3KCptRnVuY3Rpb25UeXBlLCByYXdUZXh0KTsKKyAgICAgICAgICAgIG5l
Z2F0ZWRFbHNlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgICAgICAg
ICAgbmVnYXRlZEVsc2UtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhyZXR1cm5Ob2RlKTsKICAg
ICAgICAgfQogCi0gICAgICAgIFRJbnRlcm1TeW1ib2wgKmNvbmRpdGlvblN5bWJvbEVsc2UgPSBN
YWtlTmV3VGVtcG9yYXJ5KHRlbXBvcmFyeU5hbWUsIEVidEJvb2wpOworICAgICAgICBUSW50ZXJt
U3ltYm9sICpjb25kaXRpb25TeW1ib2xFbHNlID0gY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSk7
CiAgICAgICAgIFRJbnRlcm1VbmFyeSAqbmVnYXRlZENvbmRpdGlvbiA9IE1ha2VOZXdVbmFyeShF
T3BMb2dpY2FsTm90LCBjb25kaXRpb25TeW1ib2xFbHNlKTsKICAgICAgICAgZmFsc2VCbG9jayA9
IG5ldyBUSW50ZXJtU2VsZWN0aW9uKG5lZ2F0ZWRDb25kaXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24tPmdldEZhbHNlQmxvY2soKSwgbmVn
YXRlZEVsc2UpOwogICAgIH0KIAotICAgIFRJbnRlcm1TeW1ib2wgKmNvbmRpdGlvblN5bWJvbFNl
bCA9IE1ha2VOZXdUZW1wb3JhcnkodGVtcG9yYXJ5TmFtZSwgRWJ0Qm9vbCk7Ci0gICAgVEludGVy
bVNlbGVjdGlvbiAqbmV3U2VsZWN0aW9uID0gbmV3IFRJbnRlcm1TZWxlY3Rpb24oY29uZGl0aW9u
U3ltYm9sU2VsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbi0+Z2V0VHJ1ZUJsb2NrKCksIGZhbHNlQmxvY2spOworICAg
IFRJbnRlcm1TeW1ib2wgKmNvbmRpdGlvblN5bWJvbFNlbCA9IGNyZWF0ZVRlbXBTeW1ib2woYm9v
bFR5cGUpOworICAgIFRJbnRlcm1TZWxlY3Rpb24gKm5ld1NlbGVjdGlvbiA9IG5ldyBUSW50ZXJt
U2VsZWN0aW9uKGNvbmRpdGlvblN5bWJvbFNlbCwgc2VsZWN0aW9uLT5nZXRUcnVlQmxvY2soKSwg
ZmFsc2VCbG9jayk7CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICpkZWNsYXJhdGlvbiA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICBkZWNsYXJhdGlvbi0+Z2V0U2Vx
dWVuY2UoKS0+cHVzaF9iYWNrKHN0b3JlQ29uZGl0aW9uKTsKLQogICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKmJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOwotICAgIGJsb2Nr
LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soZGVjbGFyYXRpb24pOworICAgIGJsb2NrLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2soc3RvcmVDb25kaXRpb24pOwogICAgIGJsb2NrLT5nZXRTZXF1
ZW5jZSgpLT5wdXNoX2JhY2sobmV3U2VsZWN0aW9uKTsKIAogICAgIHJldHVybiBibG9jazsKQEAg
LTE1MSw5ICsxMzAsMTAgQEAKIAogfQogCi12b2lkIFJld3JpdGVFbHNlQmxvY2tzKFRJbnRlcm1O
b2RlICpub2RlKQordm9pZCBSZXdyaXRlRWxzZUJsb2NrcyhUSW50ZXJtTm9kZSAqbm9kZSwgdW5z
aWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKIHsKICAgICBFbHNlQmxvY2tSZXdyaXRlciByZXdy
aXRlcjsKKyAgICByZXdyaXRlci51c2VUZW1wb3JhcnlJbmRleCh0ZW1wb3JhcnlJbmRleCk7CiAg
ICAgbm9kZS0+dHJhdmVyc2UoJnJld3JpdGVyKTsKIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZXdyaXRlRWxzZUJsb2Nrcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNSw3ICsxNSw3IEBACiBuYW1lc3BhY2Ugc2gKIHsKIAotdm9pZCBS
ZXdyaXRlRWxzZUJsb2NrcyhUSW50ZXJtTm9kZSAqbm9kZSk7Cit2b2lkIFJld3JpdGVFbHNlQmxv
Y2tzKFRJbnRlcm1Ob2RlICpub2RlLCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKIAog
fQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9TY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZl
Y0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1h
dENvbnN0cnVjdG9yQXJncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksMTMgQEAK
ICAgICAgICAgICAgICAgICBzY2FsYXJpemVBcmdzKG5vZGUsIGZhbHNlLCB0cnVlKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKKyAgICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKKyAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1h
dDJ4NDoKKyAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjoKICAgICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdE1hdDM6CisgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6Cisg
ICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDI6CisgICAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQ0eDM6CiAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgogICAgICAgICAg
ICAgaWYgKENvbnRhaW5zVmVjdG9yTm9kZSgqKG5vZGUtPmdldFNlcXVlbmNlKCkpKSkKICAgICAg
ICAgICAgICAgICBzY2FsYXJpemVBcmdzKG5vZGUsIHRydWUsIGZhbHNlKTsKQEAgLTE0NCw5ICsx
NTAsMjEgQEAKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKICAgICAgICAgc2l6ZSA9IDQ7
CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDM6CisgICAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDN4MjoKKyAgICAgICAgc2l6ZSA9IDY7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6CisgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDR4MjoKKyAgICAgICAgc2l6ZSA9IDg7CisgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQzOgogICAgICAgICBzaXplID0gOTsKICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgz
OgorICAgICAgICBzaXplID0gMTI7CisgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQ0OgogICAgICAgICBzaXplID0gMTY7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVj
QW5kTWF0Q29uc3RydWN0b3JBcmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0
b3JBcmdzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxMiArMTQsMTMgQEAKICAgcHVibGljOgogICAgIFNjYWxh
cml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncyhzaDo6R0xlbnVtIHNoYWRlclR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJhZ21lbnRQcmVjaXNpb25I
aWdoKQotICAgICAgICA6IG1UZW1wVmFyQ291bnQoMCksCisgICAgICAgIDogVEludGVybVRyYXZl
cnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAgIG1UZW1wVmFyQ291bnQoMCksCiAg
ICAgICAgICAgbVNoYWRlclR5cGUoc2hhZGVyVHlwZSksCiAgICAgICAgICAgbUZyYWdtZW50UHJl
Y2lzaW9uSGlnaChmcmFnbWVudFByZWNpc2lvbkhpZ2gpIHt9CiAKICAgcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSk7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFn
Z3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIHNjYWxhcml6
ZUFyZ3MoVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
ZWFyY2hTeW1ib2wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMiw3ICsxMiw5IEBACiAKIG5hbWVzcGFjZSBzaAogewotU2VhcmNoU3ltYm9sOjpT
ZWFyY2hTeW1ib2woY29uc3QgVFN0cmluZyAmc3ltYm9sKSA6IG1TeW1ib2woc3ltYm9sKQorU2Vh
cmNoU3ltYm9sOjpTZWFyY2hTeW1ib2woY29uc3QgVFN0cmluZyAmc3ltYm9sKQorICAgIDogVElu
dGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgbVN5bWJvbChzeW1ib2wp
CiB7CiAgICAgbWF0Y2ggPSBmYWxzZTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJv
bC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyAr
MjAsNyBAQAogICAgIFNlYXJjaFN5bWJvbChjb25zdCBUU3RyaW5nICZzeW1ib2wpOwogCiAgICAg
dm9pZCB0cmF2ZXJzZShUSW50ZXJtTm9kZSAqbm9kZSk7Ci0gICAgdm9pZCB2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlKTsKKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1T
eW1ib2wgKnN5bWJvbE5vZGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBmb3VuZE1hdGNoKCkgY29u
c3Q7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUlu
aXRpYWxpemF0aW9uLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSwxMCArOSwxNiBAQAogLy8gd2lsbCBlZmZlY3RpdmVs
eSBiZWNvbWUKIC8vICAgICB0eXBlW25dIGE7CiAvLyAgICAgYSA9IGluaXRpYWxpemVyOworLy8K
Ky8vIE5vdGUgdGhhdCBpZiB0aGUgYXJyYXkgaXMgZGVjbGFyZWQgYXMgY29uc3QsIHRoZSBpbml0
aWFsaXphdGlvbiBtYXkgc3RpbGwgYmUgc3BsaXQsIG1ha2luZyB0aGUKKy8vIEFTVCB0ZWNobmlj
YWxseSBpbnZhbGlkLiBCZWNhdXNlIG9mIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBzaG91bGQg
b25seSBiZSB1c2VkIHdoZW4gc3Vic2VxdWVudAorLy8gc3RhZ2VzIGRvbid0IGNhcmUgYWJvdXQg
Y29uc3QgcXVhbGlmaWVycy4gSG93ZXZlciwgdGhlIGluaXRpYWxpemF0aW9uIHdpbGwgbm90IGJl
IHNwbGl0IGlmIHRoZQorLy8gaW5pdGlhbGl6ZXIgY2FuIGJlIHdyaXR0ZW4gYXMgYSBITFNMIGxp
dGVyYWwuCiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0
aWFsaXphdGlvbi5oIgogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2Rl
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmgiCiAKIG5hbWVz
cGFjZQogewpAQCAtNDcsNyArNTMsNyBAQAogICAgICAgICBpZiAoaW5pdE5vZGUgIT0gbnVsbHB0
ciAmJiBpbml0Tm9kZS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXplKQogICAgICAgICB7CiAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyID0gaW5pdE5vZGUtPmdldFJpZ2h0KCk7
Ci0gICAgICAgICAgICBpZiAoaW5pdGlhbGl6ZXItPmlzQXJyYXkoKSkKKyAgICAgICAgICAgIGlm
IChpbml0aWFsaXplci0+aXNBcnJheSgpICYmICFzaDo6T3V0cHV0SExTTDo6Y2FuV3JpdGVBc0hM
U0xMaXRlcmFsKGluaXRpYWxpemVyKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAv
LyBXZSByZWx5IG9uIHRoYXQgYXJyYXkgZGVjbGFyYXRpb25zIGhhdmUgYmVlbiBpc29sYXRlZCB0
byBzaW5nbGUgZGVjbGFyYXRpb25zLgogICAgICAgICAgICAgICAgIEFTU0VSVChzZXF1ZW5jZS0+
c2l6ZSgpID09IDEpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVB
cnJheUluaXRpYWxpemF0aW9uLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXph
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksMTEgQEAKIC8vIHdpbGwgZWZmZWN0aXZl
bHkgYmVjb21lCiAvLyAgICAgdHlwZVtuXSBhOwogLy8gICAgIGEgPSBpbml0aWFsaXplcjsKKy8v
CisvLyBOb3RlIHRoYXQgaWYgdGhlIGFycmF5IGlzIGRlY2xhcmVkIGFzIGNvbnN0LCB0aGUgaW5p
dGlhbGl6YXRpb24gbWF5IHN0aWxsIGJlIHNwbGl0LCBtYWtpbmcgdGhlCisvLyBBU1QgdGVjaG5p
Y2FsbHkgaW52YWxpZC4gQmVjYXVzZSBvZiB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gc2hvdWxk
IG9ubHkgYmUgdXNlZCB3aGVuIHN1YnNlcXVlbnQKKy8vIHN0YWdlcyBkb24ndCBjYXJlIGFib3V0
IGNvbnN0IHF1YWxpZmllcnMuIEhvd2V2ZXIsIHRoZSBpbml0aWFsaXphdGlvbiB3aWxsIG5vdCBi
ZSBzcGxpdCBpZiB0aGUKKy8vIGluaXRpYWxpemVyIGNhbiBiZSB3cml0dGVuIGFzIGEgSExTTCBs
aXRlcmFsLgogCiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVBUlJBWUlOSVRJ
QUxJWkFUSU9OX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVBUlJBWUlO
SVRJQUxJWkFUSU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNs
YXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMsOSArMywxMCBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBUaGUgU2VwYXJhdGVBcnJheURlY2xhcmF0aW9ucyBm
dW5jdGlvbiBwcm9jZXNzZXMgZGVjbGFyYXRpb25zIHRoYXQgY29udGFpbiBhcnJheSBkZWNsYXJh
dG9ycy4gRWFjaCBkZWNsYXJhdG9yIGluCi0vLyBzdWNoIGRlY2xhcmF0aW9ucyBnZXRzIGl0cyBv
d24gZGVjbGFyYXRpb24uCi0vLyBUaGlzIGlzIHVzZWZ1bCBhcyBhbiBpbnRlcm1lZGlhdGUgc3Rl
cCB3aGVuIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGJlIHNlcGFyYXRlZCBmcm9tIGRlY2xhcmF0
aW9uLgorLy8gVGhlIFNlcGFyYXRlRGVjbGFyYXRpb25zIGZ1bmN0aW9uIHByb2Nlc3NlcyBkZWNs
YXJhdGlvbnMsIHNvIHRoYXQgaW4gdGhlIGVuZCBlYWNoIGRlY2xhcmF0aW9uCisvLyBjb250YWlu
cyBvbmx5IG9uZSBkZWNsYXJhdG9yLgorLy8gVGhpcyBpcyB1c2VmdWwgYXMgYW4gaW50ZXJtZWRp
YXRlIHN0ZXAgd2hlbiBpbml0aWFsaXphdGlvbiBuZWVkcyB0byBiZSBzZXBhcmF0ZWQgZnJvbSBk
ZWNsYXJhdGlvbiwKKy8vIG9yIHdoZW4gdGhpbmdzIG5lZWQgdG8gYmUgdW5mb2xkZWQgb3V0IG9m
IHRoZSBpbml0aWFsaXplci4KIC8vIEV4YW1wbGU6CiAvLyAgICAgaW50IGFbMV0gPSBpbnRbMV0o
MSksIGJbMV0gPSBpbnRbMV0oMik7CiAvLyBnZXRzIHRyYW5zZm9ybWVkIHdoZW4gcnVuIHRocm91
Z2ggdGhpcyBjbGFzcyBpbnRvIHRoZSBBU1QgZXF1aXZhbGVudCBvZjoKQEAgLTE5LDQ0ICsyMCwz
NCBAQAogbmFtZXNwYWNlCiB7CiAKLWNsYXNzIFNlcGFyYXRlRGVjbGFyYXRpb25zIDogcHJpdmF0
ZSBUSW50ZXJtVHJhdmVyc2VyCitjbGFzcyBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlciA6
IHByaXZhdGUgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
YXBwbHkoVEludGVybU5vZGUgKnJvb3QpOwogICBwcml2YXRlOgotICAgIFNlcGFyYXRlRGVjbGFy
YXRpb25zKCk7CisgICAgU2VwYXJhdGVEZWNsYXJhdGlvbnNUcmF2ZXJzZXIoKTsKICAgICBib29s
IHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsK
IH07CiAKLXZvaWQgU2VwYXJhdGVEZWNsYXJhdGlvbnM6OmFwcGx5KFRJbnRlcm1Ob2RlICpyb290
KQordm9pZCBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6YXBwbHkoVEludGVybU5vZGUg
KnJvb3QpCiB7Ci0gICAgU2VwYXJhdGVEZWNsYXJhdGlvbnMgc2VwYXJhdGVEZWNsOworICAgIFNl
cGFyYXRlRGVjbGFyYXRpb25zVHJhdmVyc2VyIHNlcGFyYXRlRGVjbDsKICAgICByb290LT50cmF2
ZXJzZSgmc2VwYXJhdGVEZWNsKTsKICAgICBzZXBhcmF0ZURlY2wudXBkYXRlVHJlZSgpOwogfQog
Ci1TZXBhcmF0ZURlY2xhcmF0aW9uczo6U2VwYXJhdGVEZWNsYXJhdGlvbnMoKQorU2VwYXJhdGVE
ZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OlNlcGFyYXRlRGVjbGFyYXRpb25zVHJhdmVyc2VyKCkKICAg
ICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKQogewogfQogCi1ib29sIFNl
cGFyYXRlRGVjbGFyYXRpb25zOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSkKK2Jvb2wgU2VwYXJhdGVEZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OnZpc2l0QWdncmVn
YXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogewogICAgIGlmIChub2RlLT5nZXRP
cCgpID09IEVPcERlY2xhcmF0aW9uKQogICAgIHsKICAgICAgICAgVEludGVybVNlcXVlbmNlICpz
ZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgIGJvb2wgc2VxdWVuY2VDb250
YWluc0FycmF5cyA9IGZhbHNlOwotICAgICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgc2Vx
dWVuY2UtPnNpemUoKTsgKytpaSkKKyAgICAgICAgaWYgKHNlcXVlbmNlLT5zaXplKCkgPiAxKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnR5cGVkID0gc2VxdWVuY2UtPmF0
KGlpKS0+Z2V0QXNUeXBlZCgpOwotICAgICAgICAgICAgaWYgKHR5cGVkICE9IG51bGxwdHIgJiYg
dHlwZWQtPmlzQXJyYXkoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzZXF1ZW5j
ZUNvbnRhaW5zQXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoc2VxdWVuY2UtPnNpemUoKSA+IDEgJiYgc2Vx
dWVuY2VDb250YWluc0FycmF5cykKLSAgICAgICAgewogICAgICAgICAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqcGFyZW50QWdnID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0FnZ3JlZ2F0ZSgpOwogICAg
ICAgICAgICAgQVNTRVJUKHBhcmVudEFnZyAhPSBudWxscHRyKTsKIApAQCAtODAsNyArNzEsNyBA
QAogCiB9IC8vIG5hbWVzcGFjZQogCi12b2lkIFNlcGFyYXRlQXJyYXlEZWNsYXJhdGlvbnMoVElu
dGVybU5vZGUgKnJvb3QpCit2b2lkIFNlcGFyYXRlRGVjbGFyYXRpb25zKFRJbnRlcm1Ob2RlICpy
b290KQogewotICAgIFNlcGFyYXRlRGVjbGFyYXRpb25zOjphcHBseShyb290KTsKKyAgICBTZXBh
cmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6YXBwbHkocm9vdCk7CiB9CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1NlcGFyYXRlRGVjbGFyYXRpb25zLmgJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRl
RGVjbGFyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMsOSArMywxMCBAQAogLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBUaGUgU2VwYXJh
dGVBcnJheURlY2xhcmF0aW9ucyBmdW5jdGlvbiBwcm9jZXNzZXMgZGVjbGFyYXRpb25zIHRoYXQg
Y29udGFpbiBhcnJheSBkZWNsYXJhdG9ycy4gRWFjaCBkZWNsYXJhdG9yIGluCi0vLyBzdWNoIGRl
Y2xhcmF0aW9ucyBnZXRzIGl0cyBvd24gZGVjbGFyYXRpb24uCi0vLyBUaGlzIGlzIHVzZWZ1bCBh
cyBhbiBpbnRlcm1lZGlhdGUgc3RlcCB3aGVuIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGJlIHNl
cGFyYXRlZCBmcm9tIGRlY2xhcmF0aW9uLgorLy8gVGhlIFNlcGFyYXRlRGVjbGFyYXRpb25zIGZ1
bmN0aW9uIHByb2Nlc3NlcyBkZWNsYXJhdGlvbnMsIHNvIHRoYXQgaW4gdGhlIGVuZCBlYWNoIGRl
Y2xhcmF0aW9uCisvLyBjb250YWlucyBvbmx5IG9uZSBkZWNsYXJhdG9yLgorLy8gVGhpcyBpcyB1
c2VmdWwgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiBpbml0aWFsaXphdGlvbiBuZWVkcyB0
byBiZSBzZXBhcmF0ZWQgZnJvbSBkZWNsYXJhdGlvbiwKKy8vIG9yIHdoZW4gdGhpbmdzIG5lZWQg
dG8gYmUgdW5mb2xkZWQgb3V0IG9mIHRoZSBpbml0aWFsaXplci4KIC8vIEV4YW1wbGU6CiAvLyAg
ICAgaW50IGFbMV0gPSBpbnRbMV0oMSksIGJbMV0gPSBpbnRbMV0oMik7CiAvLyBnZXRzIHRyYW5z
Zm9ybWVkIHdoZW4gcnVuIHRocm91Z2ggdGhpcyBjbGFzcyBpbnRvIHRoZSBBU1QgZXF1aXZhbGVu
dCBvZjoKQEAgLTE3LDYgKzE4LDYgQEAKIAogY2xhc3MgVEludGVybU5vZGU7CiAKLXZvaWQgU2Vw
YXJhdGVBcnJheURlY2xhcmF0aW9ucyhUSW50ZXJtTm9kZSAqcm9vdCk7Cit2b2lkIFNlcGFyYXRl
RGVjbGFyYXRpb25zKFRJbnRlcm1Ob2RlICpyb290KTsKIAogI2VuZGlmICAvLyBDT01QSUxFUl9U
UkFOU0xBVE9SX1NFUEFSQVRFREVDTEFSQVRJT05TX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJu
aW5nQXJyYXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTY5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU2VwYXJhdGVF
eHByZXNzaW9uc1JldHVybmluZ0FycmF5cyBzcGxpdHMgYXJyYXktcmV0dXJuaW5nIGV4cHJlc3Np
b25zIHRoYXQgYXJlIG5vdCBhcnJheSBuYW1lcyBmcm9tIG1vcmUgY29tcGxleAorLy8gZXhwcmVz
c2lvbnMsIGFzc2lnbmluZyB0aGVtIHRvIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIGEjLgorLy8gRXhh
bXBsZXMgd2hlcmUgYSwgYiBhbmQgYyBhcmUgYWxsIGFycmF5czoKKy8vIChhID0gYikgPT0gKGEg
PSBjKSBpcyBzcGxpdCBpbnRvIGEgPSBiOyB0eXBlW25dIGExID0gYTsgYSA9IGM7IHR5cGVbbl0g
YTIgPSBhOyBhMSA9PSBhMjsKKy8vIHR5cGUgZCA9IHR5cGVbbl0oLi4uKVtpXTsgaXMgc3BsaXQg
aW50byB0eXBlW25dIGExID0gdHlwZVtuXSguLi4pOyB0eXBlIGQgPSBhMVtpXTsKKworI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5
cy5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisKK25h
bWVzcGFjZQoreworCisvLyBUcmF2ZXJzZXIgdGhhdCBzZXBhcmF0ZXMgb25lIGFycmF5IGV4cHJl
c3Npb24gaW50byBhIHN0YXRlbWVudCBhdCBhIHRpbWUuCitjbGFzcyBTZXBhcmF0ZUV4cHJlc3Np
b25zVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAg
IFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXIoKTsKKworICAgIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRl
OworCisgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCk7CisgICAgYm9vbCBmb3VuZEFycmF5RXhwcmVz
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZEFycmF5RXhwcmVzc2lvbjsgfQorCisgIHByb3Rl
Y3RlZDoKKyAgICAvLyBNYXJrZWQgdG8gdHJ1ZSBvbmNlIGFuIG9wZXJhdGlvbiB0aGF0IG5lZWRz
IHRvIGJlIGhvaXN0ZWQgb3V0IG9mIHRoZSBleHByZXNzaW9uIGhhcyBiZWVuIGZvdW5kLgorICAg
IC8vIEFmdGVyIHRoYXQsIG5vIG1vcmUgQVNUIHVwZGF0ZXMgYXJlIHBlcmZvcm1lZCBvbiB0aGF0
IHRyYXZlcnNhbC4KKyAgICBib29sIG1Gb3VuZEFycmF5RXhwcmVzc2lvbjsKK307CisKK1NlcGFy
YXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXI6OlNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXIoKQor
ICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgbUZvdW5k
QXJyYXlFeHByZXNzaW9uKGZhbHNlKQoreworfQorCisvLyBQZXJmb3JtcyBhIHNoYWxsb3cgY29w
eSBvZiBhbiBhc3NpZ25tZW50IG5vZGUuCisvLyBUaGVzZSBzaGFsbG93IGNvcGllcyBhcmUgdXNl
ZnVsIHdoZW4gYSBub2RlIGdldHMgaW5zZXJ0ZWQgaW50byBhbiBhZ2dyZWdhdGUgbm9kZQorLy8g
YW5kIGFsc28gbmVlZHMgdG8gYmUgcmVwbGFjZWQgaW4gaXRzIG9yaWdpbmFsIGxvY2F0aW9uIGJ5
IGEgZGlmZmVyZW50IG5vZGUuCitUSW50ZXJtQmluYXJ5ICpDb3B5QXNzaWdubWVudE5vZGUoVElu
dGVybUJpbmFyeSAqbm9kZSkKK3sKKyAgICBUSW50ZXJtQmluYXJ5ICpjb3B5Tm9kZSA9IG5ldyBU
SW50ZXJtQmluYXJ5KG5vZGUtPmdldE9wKCkpOworICAgIGNvcHlOb2RlLT5zZXRMZWZ0KG5vZGUt
PmdldExlZnQoKSk7CisgICAgY29weU5vZGUtPnNldFJpZ2h0KG5vZGUtPmdldFJpZ2h0KCkpOwor
ICAgIGNvcHlOb2RlLT5zZXRUeXBlKG5vZGUtPmdldFR5cGUoKSk7CisgICAgcmV0dXJuIGNvcHlO
b2RlOworfQorCisvLyBQZXJmb3JtcyBhIHNoYWxsb3cgY29weSBvZiBhIGNvbnN0cnVjdG9yL2Z1
bmN0aW9uIGNhbGwgbm9kZS4KK1RJbnRlcm1BZ2dyZWdhdGUgKkNvcHlBZ2dyZWdhdGVOb2RlKFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29weU5vZGUg
PSBuZXcgVEludGVybUFnZ3JlZ2F0ZShub2RlLT5nZXRPcCgpKTsKKyAgICBUSW50ZXJtU2VxdWVu
Y2UgKmNvcHlTZXEgPSBjb3B5Tm9kZS0+Z2V0U2VxdWVuY2UoKTsKKyAgICBjb3B5U2VxLT5pbnNl
cnQoY29weVNlcS0+YmVnaW4oKSwgbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgbm9kZS0+
Z2V0U2VxdWVuY2UoKS0+ZW5kKCkpOworICAgIGNvcHlOb2RlLT5zZXRUeXBlKG5vZGUtPmdldFR5
cGUoKSk7CisgICAgY29weU5vZGUtPnNldEZ1bmN0aW9uSWQobm9kZS0+Z2V0RnVuY3Rpb25JZCgp
KTsKKyAgICBpZiAobm9kZS0+aXNVc2VyRGVmaW5lZCgpKQorICAgIHsKKyAgICAgICAgY29weU5v
ZGUtPnNldFVzZXJEZWZpbmVkKCk7CisgICAgfQorICAgIGNvcHlOb2RlLT5zZXROYW1lT2JqKG5v
ZGUtPmdldE5hbWVPYmooKSk7CisgICAgcmV0dXJuIGNvcHlOb2RlOworfQorCitib29sIFNlcGFy
YXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
QmluYXJ5ICpub2RlKQoreworICAgIGlmIChtRm91bmRBcnJheUV4cHJlc3Npb24pCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIEVhcmx5IHJldHVybiBpZiB0aGUgZXhwcmVzc2lvbiBp
cyBub3QgYW4gYXJyYXkgb3IgaWYgd2UncmUgbm90IGluc2lkZSBhIGNvbXBsZXggZXhwcmVzc2lv
bi4KKyAgICBpZiAoIW5vZGUtPmdldFR5cGUoKS5pc0FycmF5KCkgfHwgcGFyZW50Tm9kZUlzQmxv
Y2soKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkp
CisgICAgeworICAgICAgY2FzZSBFT3BBc3NpZ246CisgICAgICAgIHsKKyAgICAgICAgICAgIG1G
b3VuZEFycmF5RXhwcmVzc2lvbiA9IHRydWU7CisKKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSBpbnNlcnRpb25zOworICAgICAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soQ29weUFzc2ln
bm1lbnROb2RlKG5vZGUpKTsKKyAgICAgICAgICAgIC8vIFRPRE8ob2V0dWFobyk6IEluIHNvbWUg
Y2FzZXMgaXQgd291bGQgYmUgbW9yZSBvcHRpbWFsIHRvIG5vdCBhZGQgdGhlIHRlbXBvcmFyeSBu
b2RlLCBidXQganVzdCB1c2UgdGhlCisgICAgICAgICAgICAvLyBvcmlnaW5hbCB0YXJnZXQgb2Yg
dGhlIGFzc2lnbm1lbnQuIENhcmUgbXVzdCBiZSB0YWtlbiBzbyB0aGF0IHRoaXMgZG9lc24ndCBo
YXBwZW4gd2hlbiB0aGUgc2FtZSBhcnJheQorICAgICAgICAgICAgLy8gc3ltYm9sIGlzIGEgdGFy
Z2V0IG9mIGFzc2lnbm1lbnQgbW9yZSB0aGFuIG9uY2UgaW4gb25lIGV4cHJlc3Npb24uCisgICAg
ICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5v
ZGUtPmdldExlZnQoKSkpOworICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50Qmxv
Y2soaW5zZXJ0aW9ucyk7CisKKyAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBsYWNlVmFy
aWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5
cGUoKSksIGZhbHNlKTsKKyAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxh
Y2VWYXJpYWJsZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgZGVm
YXVsdDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfQorCitib29sIFNlcGFyYXRlRXhw
cmVzc2lvbnNUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdn
cmVnYXRlICpub2RlKQoreworICAgIGlmIChtRm91bmRBcnJheUV4cHJlc3Npb24pCisgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gTm8gbmVlZCB0byB0cmF2ZXJzZSBmdXJ0aGVyCisKKyAgICBpZiAo
Z2V0UGFyZW50Tm9kZSgpICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBUSW50ZXJtQmluYXJ5
ICpwYXJlbnRCaW5hcnkgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmluYXJ5Tm9kZSgpOworICAg
ICAgICBib29sIHBhcmVudElzQXNzaWdubWVudCA9IChwYXJlbnRCaW5hcnkgIT0gbnVsbHB0ciAm
JgorICAgICAgICAgICAgKHBhcmVudEJpbmFyeS0+Z2V0T3AoKSA9PSBFT3BBc3NpZ24gfHwgcGFy
ZW50QmluYXJ5LT5nZXRPcCgpID09IEVPcEluaXRpYWxpemUpKTsKKworICAgICAgICBpZiAoIW5v
ZGUtPmdldFR5cGUoKS5pc0FycmF5KCkgfHwgcGFyZW50Tm9kZUlzQmxvY2soKSB8fCBwYXJlbnRJ
c0Fzc2lnbm1lbnQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBpZiAobm9k
ZS0+aXNDb25zdHJ1Y3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBtRm91bmRBcnJheUV4
cHJlc3Npb24gPSB0cnVlOworCisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9u
czsKKyAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFy
YXRpb24oQ29weUFnZ3JlZ2F0ZU5vZGUobm9kZSkpKTsKKyAgICAgICAgICAgIGluc2VydFN0YXRl
bWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworCisgICAgICAgICAgICBOb2RlVXBkYXRl
RW50cnkgcmVwbGFjZVZhcmlhYmxlKGdldFBhcmVudE5vZGUoKSwgbm9kZSwgY3JlYXRlVGVtcFN5
bWJvbChub2RlLT5nZXRUeXBlKCkpLCBmYWxzZSk7CisgICAgICAgICAgICBtUmVwbGFjZW1lbnRz
LnB1c2hfYmFjayhyZXBsYWNlVmFyaWFibGUpOworCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlv
bkNhbGwpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Gb3VuZEFycmF5RXhwcmVzc2lvbiA9IHRy
dWU7CisKKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOworICAgICAgICAg
ICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihDb3B5QWdn
cmVnYXRlTm9kZShub2RlKSkpOworICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50
QmxvY2soaW5zZXJ0aW9ucyk7CisKKyAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRyeSByZXBsYWNl
VmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdl
dFR5cGUoKSksIGZhbHNlKTsKKyAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJl
cGxhY2VWYXJpYWJsZSk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTZXBhcmF0ZUV4cHJlc3Npb25zVHJh
dmVyc2VyOjpuZXh0SXRlcmF0aW9uKCkKK3sKKyAgICBtRm91bmRBcnJheUV4cHJlc3Npb24gPSBm
YWxzZTsKKyAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKwor
dm9pZCBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzKFRJbnRlcm1Ob2RlICpyb290
LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KQoreworICAgIFNlcGFyYXRlRXhwcmVzc2lv
bnNUcmF2ZXJzZXIgdHJhdmVyc2VyOworICAgIEFTU0VSVCh0ZW1wb3JhcnlJbmRleCAhPSBudWxs
cHRyKTsKKyAgICB0cmF2ZXJzZXIudXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9yYXJ5SW5kZXgpOwor
ICAgIC8vIFNlcGFyYXRlIG9uZSBleHByZXNzaW9uIGF0IGEgdGltZSwgYW5kIHJlc2V0IHRoZSB0
cmF2ZXJzZXIgYmV0d2VlbiBpdGVyYXRpb25zLgorICAgIGRvCisgICAgeworICAgICAgICB0cmF2
ZXJzZXIubmV4dEl0ZXJhdGlvbigpOworICAgICAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2Vy
KTsKKyAgICAgICAgaWYgKHRyYXZlcnNlci5mb3VuZEFycmF5RXhwcmVzc2lvbigpKQorICAgICAg
ICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKKyAgICB9CisgICAgd2hpbGUgKHRyYXZlcnNl
ci5mb3VuZEFycmF5RXhwcmVzc2lvbigpKTsKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdB
cnJheXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxOSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFNlcGFyYXRlRXhwcmVzc2lvbnNS
ZXR1cm5pbmdBcnJheXMgc3BsaXRzIGFycmF5LXJldHVybmluZyBleHByZXNzaW9ucyB0aGF0IGFy
ZSBub3QgYXJyYXkgbmFtZXMgZnJvbSBtb3JlIGNvbXBsZXgKKy8vIGV4cHJlc3Npb25zLCBhc3Np
Z25pbmcgdGhlbSB0byBhIHRlbXBvcmFyeSB2YXJpYWJsZSBhIy4KKy8vIEV4YW1wbGVzIHdoZXJl
IGEsIGIgYW5kIGMgYXJlIGFsbCBhcnJheXM6CisvLyAoYSA9IGIpID09IChhID0gYykgaXMgc3Bs
aXQgaW50byBhID0gYjsgdHlwZVtuXSBhMSA9IGE7IGEgPSBjOyB0eXBlW25dIGEyID0gYTsgYTEg
PT0gYTI7CisvLyB0eXBlIGQgPSB0eXBlW25dKC4uLilbaV07IGlzIHNwbGl0IGludG8gdHlwZVtu
XSBhMSA9IHR5cGVbbl0oLi4uKTsgdHlwZSBkID0gYTFbaV07CisKKyNpZm5kZWYgQ09NUElMRVJf
VFJBTlNMQVRPUl9TRVBBUkFURUVYUFJFU1NJT05TUkVUVVJOSU5HQVJSQVlTX0hfCisjZGVmaW5l
IENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVFWFBSRVNTSU9OU1JFVFVSTklOR0FSUkFZU19I
XworCitjbGFzcyBUSW50ZXJtTm9kZTsKKwordm9pZCBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJu
aW5nQXJyYXlzKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4
KTsKKworI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVFWFBSRVNTSU9OU1JF
VFVSTklOR0FSUkFZU19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1NoYWRlckxhbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNSArMjMsNiBAQAog
bmFtZXNwYWNlCiB7CiAKLWVudW0gU2hhZGVyVmFyaWFibGVUeXBlCi17Ci0gICAgU0hBREVSVkFS
X1VOSUZPUk0sCi0gICAgU0hBREVSVkFSX1ZBUllJTkcsCi0gICAgU0hBREVSVkFSX0FUVFJJQlVU
RSwKLSAgICBTSEFERVJWQVJfT1VUUFVUVkFSSUFCTEUsCi0gICAgU0hBREVSVkFSX0lOVEVSRkFD
RUJMT0NLCi19OwotICAgIAogYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7CiAKIC8vCkBAIC00
MCwzNiArMzEsNDAgQEAKIC8vCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmFyVD4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVy
LCBTaGFkZXJWYXJpYWJsZVR5cGUgdmFyaWFibGVUeXBlKTsKK2NvbnN0IHN0ZDo6dmVjdG9yPFZh
clQ+ICpHZXRWYXJpYWJsZUxpc3QoY29uc3QgVENvbXBpbGVyICpjb21waWxlcik7CiAKIHRlbXBs
YXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gKkdldFZhcmlhYmxlTGlzdChj
b25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyLCBTaGFkZXJWYXJpYWJsZVR5cGUpCitjb25zdCBzdGQ6
OnZlY3RvcjxzaDo6VW5pZm9ybT4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNv
bXBpbGVyKQogewogICAgIHJldHVybiAmY29tcGlsZXItPmdldFVuaWZvcm1zKCk7CiB9CiAKIHRl
bXBsYXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKkdldFZhcmlhYmxlTGlz
dChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyLCBTaGFkZXJWYXJpYWJsZVR5cGUpCitjb25zdCBz
dGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIg
KmNvbXBpbGVyKQogewogICAgIHJldHVybiAmY29tcGlsZXItPmdldFZhcnlpbmdzKCk7CiB9CiAK
IHRlbXBsYXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAqR2V0VmFyaWFi
bGVMaXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIsIFNoYWRlclZhcmlhYmxlVHlwZSB2YXJp
YWJsZVR5cGUpCitjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAqR2V0VmFyaWFibGVM
aXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpCiB7Ci0gICAgcmV0dXJuICh2YXJpYWJsZVR5
cGUgPT0gU0hBREVSVkFSX0FUVFJJQlVURSA/Ci0gICAgICAgICZjb21waWxlci0+Z2V0QXR0cmli
dXRlcygpIDoKLSAgICAgICAgJmNvbXBpbGVyLT5nZXRPdXRwdXRWYXJpYWJsZXMoKSk7CisgICAg
cmV0dXJuICZjb21waWxlci0+Z2V0QXR0cmlidXRlcygpOwogfQogCiB0ZW1wbGF0ZSA8PgotY29u
c3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAqR2V0VmFyaWFibGVMaXN0KGNvbnN0
IFRDb21waWxlciAqY29tcGlsZXIsIFNoYWRlclZhcmlhYmxlVHlwZSkKK2NvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIg
KmNvbXBpbGVyKQogeworICAgIHJldHVybiAmY29tcGlsZXItPmdldE91dHB1dFZhcmlhYmxlcygp
OworfQorCit0ZW1wbGF0ZSA8PgorY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2Nr
PiAqR2V0VmFyaWFibGVMaXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpCit7CiAgICAgcmV0
dXJuICZjb21waWxlci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBWYXJUPgotY29uc3Qgc3RkOjp2ZWN0b3I8VmFyVD4gKkdldFNoYWRlclZhcmlhYmxlcyhj
b25zdCBTaEhhbmRsZSBoYW5kbGUsIFNoYWRlclZhcmlhYmxlVHlwZSB2YXJpYWJsZVR5cGUpCitj
b25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAqR2V0U2hhZGVyVmFyaWFibGVzKGNvbnN0IFNoSGFuZGxl
IGhhbmRsZSkKIHsKICAgICBpZiAoIWhhbmRsZSkKICAgICB7CkBAIC04Myw3ICs3OCw3IEBACiAg
ICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiBHZXRWYXJpYWJsZUxpc3Q8
VmFyVD4oY29tcGlsZXIsIHZhcmlhYmxlVHlwZSk7CisgICAgcmV0dXJuIEdldFZhcmlhYmxlTGlz
dDxWYXJUPihjb21waWxlcik7CiB9CiAKIFRDb21waWxlciAqR2V0Q29tcGlsZXJGcm9tSGFuZGxl
KFNoSGFuZGxlIGhhbmRsZSkKQEAgLTEwNCw3ICs5OSw3IEBACiB9CiAjZW5kaWYgLy8gQU5HTEVf
RU5BQkxFX0hMU0wKIAotfSAgLy8gbmFtZXNwYWNlIGFub255bW91cworfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQogCiAvLwogLy8gRHJpdmVyIG11c3QgY2FsbCB0aGlzIGZpcnN0LCBvbmNlLCBi
ZWZvcmUgZG9pbmcgYW55IG90aGVyIGNvbXBpbGVyIG9wZXJhdGlvbnMuCkBAIC0xNTQsNiArMTQ5
LDcgQEAKICAgICByZXNvdXJjZXMtPk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7CiAgICAg
cmVzb3VyY2VzLT5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gMDsKICAgICByZXNvdXJjZXMtPkFS
Ql90ZXh0dXJlX3JlY3RhbmdsZSA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfYmxlbmRfZnVuY19l
eHRlbmRlZCAgICAgID0gMDsKICAgICByZXNvdXJjZXMtPkVYVF9kcmF3X2J1ZmZlcnMgPSAwOwog
ICAgIHJlc291cmNlcy0+RVhUX2ZyYWdfZGVwdGggPSAwOwogICAgIHJlc291cmNlcy0+RVhUX3No
YWRlcl90ZXh0dXJlX2xvZCA9IDA7CkBAIC0xNzMsMTMgKzE2OSwxNyBAQAogICAgIHJlc291cmNl
cy0+TWluUHJvZ3JhbVRleGVsT2Zmc2V0ID0gLTg7CiAgICAgcmVzb3VyY2VzLT5NYXhQcm9ncmFt
VGV4ZWxPZmZzZXQgPSA3OwogCisgICAgLy8gRXh0ZW5zaW9ucyBjb25zdGFudHMuCisgICAgcmVz
b3VyY2VzLT5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSAwOworCiAgICAgLy8gRGlzYWJsZSBu
YW1lIGhhc2hpbmcgYnkgZGVmYXVsdC4KICAgICByZXNvdXJjZXMtPkhhc2hGdW5jdGlvbiA9IE5V
TEw7CiAKICAgICByZXNvdXJjZXMtPkFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5ID0gU0hfQ0xB
TVBfV0lUSF9DTEFNUF9JTlRSSU5TSUM7CiAKICAgICByZXNvdXJjZXMtPk1heEV4cHJlc3Npb25D
b21wbGV4aXR5ID0gMjU2OwotICAgIHJlc291cmNlcy0+TWF4Q2FsbFN0YWNrRGVwdGggPSAyNTY7
CisgICAgcmVzb3VyY2VzLT5NYXhDYWxsU3RhY2tEZXB0aCAgICAgICA9IDI1NjsKKyAgICByZXNv
dXJjZXMtPk1heEZ1bmN0aW9uUGFyYW1ldGVycyAgID0gMTAyNDsKIH0KIAogLy8KQEAgLTE5MCw5
ICsxOTAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdElu
UmVzb3VyY2VzKiByZXNvdXJjZXMpCiB7CiAgICAgVFNoSGFuZGxlQmFzZSogYmFzZSA9IHN0YXRp
Y19jYXN0PFRTaEhhbmRsZUJhc2UqPihDb25zdHJ1Y3RDb21waWxlcih0eXBlLCBzcGVjLCBvdXRw
dXQpKTsKKyAgICBpZiAoYmFzZSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCiAgICAgVENvbXBpbGVyKiBjb21waWxlciA9IGJhc2UtPmdldEFzQ29tcGlsZXIo
KTsKLSAgICBpZiAoY29tcGlsZXIgPT0gMCkKKyAgICBpZiAoY29tcGlsZXIgPT0gbnVsbHB0cikK
KyAgICB7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0
LWluIHN5bWJvbCB0YWJsZS4KICAgICBpZiAoIWNvbXBpbGVyLT5Jbml0KCpyZXNvdXJjZXMpKSB7
CkBAIC0yNDAsNiArMjQ3LDEzIEBACiAgICAgcmV0dXJuIGNvbXBpbGVyLT5jb21waWxlKHNoYWRl
clN0cmluZ3MsIG51bVN0cmluZ3MsIGNvbXBpbGVPcHRpb25zKTsKIH0KIAordm9pZCBTaENsZWFy
UmVzdWx0cyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCit7CisgICAgVENvbXBpbGVyICpjb21waWxl
ciA9IEdldENvbXBpbGVyRnJvbUhhbmRsZShoYW5kbGUpOworICAgIEFTU0VSVChjb21waWxlcik7
CisgICAgY29tcGlsZXItPmNsZWFyUmVzdWx0cygpOworfQorCiBpbnQgU2hHZXRTaGFkZXJWZXJz
aW9uKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKICAgICBUQ29tcGlsZXIqIGNvbXBpbGVyID0g
R2V0Q29tcGlsZXJGcm9tSGFuZGxlKGhhbmRsZSk7CkBAIC0yODgsMjcgKzMwMiwyNyBAQAogCiBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gKlNoR2V0VW5pZm9ybXMoY29uc3QgU2hIYW5k
bGUgaGFuZGxlKQogewotICAgIHJldHVybiBHZXRTaGFkZXJWYXJpYWJsZXM8c2g6OlVuaWZvcm0+
KGhhbmRsZSwgU0hBREVSVkFSX1VOSUZPUk0pOworICAgIHJldHVybiBHZXRTaGFkZXJWYXJpYWJs
ZXM8c2g6OlVuaWZvcm0+KGhhbmRsZSk7CiB9CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5
aW5nPiAqU2hHZXRWYXJ5aW5ncyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgcmV0dXJu
IEdldFNoYWRlclZhcmlhYmxlczxzaDo6VmFyeWluZz4oaGFuZGxlLCBTSEFERVJWQVJfVkFSWUlO
Ryk7CisgICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxzaDo6VmFyeWluZz4oaGFuZGxlKTsK
IH0KIAogY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gKlNoR2V0QXR0cmlidXRlcyhj
b25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxz
aDo6QXR0cmlidXRlPihoYW5kbGUsIFNIQURFUlZBUl9BVFRSSUJVVEUpOworICAgIHJldHVybiBH
ZXRTaGFkZXJWYXJpYWJsZXM8c2g6OkF0dHJpYnV0ZT4oaGFuZGxlKTsKIH0KIAotY29uc3Qgc3Rk
Ojp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gKlNoR2V0T3V0cHV0VmFyaWFibGVzKGNvbnN0IFNoSGFu
ZGxlIGhhbmRsZSkKK2NvbnN0IHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKlNoR2V0
T3V0cHV0VmFyaWFibGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKLSAgICByZXR1cm4gR2V0
U2hhZGVyVmFyaWFibGVzPHNoOjpBdHRyaWJ1dGU+KGhhbmRsZSwgU0hBREVSVkFSX09VVFBVVFZB
UklBQkxFKTsKKyAgICByZXR1cm4gR2V0U2hhZGVyVmFyaWFibGVzPHNoOjpPdXRwdXRWYXJpYWJs
ZT4oaGFuZGxlKTsKIH0KIAogY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAq
U2hHZXRJbnRlcmZhY2VCbG9ja3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogewotICAgIHJldHVy
biBHZXRTaGFkZXJWYXJpYWJsZXM8c2g6OkludGVyZmFjZUJsb2NrPihoYW5kbGUsIFNIQURFUlZB
Ul9JTlRFUkZBQ0VCTE9DSyk7CisgICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxzaDo6SW50
ZXJmYWNlQmxvY2s+KGhhbmRsZSk7CiB9CiAKIGJvb2wgU2hDaGVja1ZhcmlhYmxlc1dpdGhpblBh
Y2tpbmdMaW1pdHMoCkBAIC0zNDksMjMgKzM2MywxNSBAQAogI2VuZGlmIC8vIEFOR0xFX0VOQUJM
RV9ITFNMCiB9CiAKLWJvb2wgU2hHZXRVbmlmb3JtUmVnaXN0ZXIoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9y
bU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaW5kZXhPdXQp
Citjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiAqU2hHZXRVbmlmb3Jt
UmVnaXN0ZXJNYXAoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogewogI2lmZGVmIEFOR0xFX0VOQUJM
RV9ITFNMCi0gICAgQVNTRVJUKGluZGV4T3V0KTsKICAgICBUcmFuc2xhdG9ySExTTCAqdHJhbnNs
YXRvciA9IEdldFRyYW5zbGF0b3JITFNMRnJvbUhhbmRsZShoYW5kbGUpOwogICAgIEFTU0VSVCh0
cmFuc2xhdG9yKTsKIAotICAgIGlmICghdHJhbnNsYXRvci0+aGFzVW5pZm9ybSh1bmlmb3JtTmFt
ZSkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgKmluZGV4T3V0
ID0gdHJhbnNsYXRvci0+Z2V0VW5pZm9ybVJlZ2lzdGVyKHVuaWZvcm1OYW1lKTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gdHJhbnNsYXRvci0+Z2V0VW5pZm9ybVJlZ2lzdGVyTWFwKCk7
CiAjZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAor
ICAgIHN0YXRpYyBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiBtYXA7CisgICAg
cmV0dXJuICZtYXA7CisjZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9ITFNMCiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJWYXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9TaGFkZXJWYXJzLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyVmFycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNywzMSArMjE3LDc1IEBACiAgICAgcmV0dXJuIFNoYWRlclZhcmlhYmxl
Ojppc1NhbWVWYXJpYWJsZUF0TGlua1RpbWUob3RoZXIsIHRydWUpOwogfQogCi1BdHRyaWJ1dGU6
OkF0dHJpYnV0ZSgpCi0gICAgOiBsb2NhdGlvbigtMSkKK0ludGVyZmFjZVZhcmlhYmxlOjpJbnRl
cmZhY2VWYXJpYWJsZSgpIDogbG9jYXRpb24oLTEpCiB7fQogCi1BdHRyaWJ1dGU6On5BdHRyaWJ1
dGUoKQorSW50ZXJmYWNlVmFyaWFibGU6On5JbnRlcmZhY2VWYXJpYWJsZSgpCiB7fQogCi1BdHRy
aWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUgJm90aGVyKQotICAgIDogU2hhZGVyVmFy
aWFibGUob3RoZXIpLAotICAgICAgbG9jYXRpb24ob3RoZXIubG9jYXRpb24pCitJbnRlcmZhY2VW
YXJpYWJsZTo6SW50ZXJmYWNlVmFyaWFibGUoY29uc3QgSW50ZXJmYWNlVmFyaWFibGUgJm90aGVy
KQorICAgIDogU2hhZGVyVmFyaWFibGUob3RoZXIpLCBsb2NhdGlvbihvdGhlci5sb2NhdGlvbikK
IHt9CiAKLUF0dHJpYnV0ZSAmQXR0cmlidXRlOjpvcGVyYXRvcj0oY29uc3QgQXR0cmlidXRlICZv
dGhlcikKK0ludGVyZmFjZVZhcmlhYmxlICZJbnRlcmZhY2VWYXJpYWJsZTo6b3BlcmF0b3I9KGNv
bnN0IEludGVyZmFjZVZhcmlhYmxlICZvdGhlcikKIHsKICAgICBTaGFkZXJWYXJpYWJsZTo6b3Bl
cmF0b3I9KG90aGVyKTsKICAgICBsb2NhdGlvbiA9IG90aGVyLmxvY2F0aW9uOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotYm9vbCBBdHRyaWJ1dGU6Om9wZXJhdG9yPT0oY29uc3QgQXR0cmlidXRl
ICZvdGhlcikgY29uc3QKK2Jvb2wgSW50ZXJmYWNlVmFyaWFibGU6Om9wZXJhdG9yPT0oY29uc3Qg
SW50ZXJmYWNlVmFyaWFibGUgJm90aGVyKSBjb25zdAogewogICAgIHJldHVybiAoU2hhZGVyVmFy
aWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpICYmCiAgICAgICAgICAgICBsb2NhdGlvbiA9PSBvdGhl
ci5sb2NhdGlvbik7CiB9CiAKK0F0dHJpYnV0ZTo6QXR0cmlidXRlKCkKK3sKK30KKworQXR0cmli
dXRlOjp+QXR0cmlidXRlKCkKK3sKK30KKworQXR0cmlidXRlOjpBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlICZvdGhlcikgOiBJbnRlcmZhY2VWYXJpYWJsZShvdGhlcikKK3sKK30KKworQXR0cmli
dXRlICZBdHRyaWJ1dGU6Om9wZXJhdG9yPShjb25zdCBBdHRyaWJ1dGUgJm90aGVyKQoreworICAg
IEludGVyZmFjZVZhcmlhYmxlOjpvcGVyYXRvcj0ob3RoZXIpOworICAgIHJldHVybiAqdGhpczsK
K30KKworYm9vbCBBdHRyaWJ1dGU6Om9wZXJhdG9yPT0oY29uc3QgQXR0cmlidXRlICZvdGhlcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gSW50ZXJmYWNlVmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIp
OworfQorCitPdXRwdXRWYXJpYWJsZTo6T3V0cHV0VmFyaWFibGUoKQoreworfQorCitPdXRwdXRW
YXJpYWJsZTo6fk91dHB1dFZhcmlhYmxlKCkKK3sKK30KKworT3V0cHV0VmFyaWFibGU6Ok91dHB1
dFZhcmlhYmxlKGNvbnN0IE91dHB1dFZhcmlhYmxlICZvdGhlcikgOiBJbnRlcmZhY2VWYXJpYWJs
ZShvdGhlcikKK3sKK30KKworT3V0cHV0VmFyaWFibGUgJk91dHB1dFZhcmlhYmxlOjpvcGVyYXRv
cj0oY29uc3QgT3V0cHV0VmFyaWFibGUgJm90aGVyKQoreworICAgIEludGVyZmFjZVZhcmlhYmxl
OjpvcGVyYXRvcj0ob3RoZXIpOworICAgIHJldHVybiAqdGhpczsKK30KKworYm9vbCBPdXRwdXRW
YXJpYWJsZTo6b3BlcmF0b3I9PShjb25zdCBPdXRwdXRWYXJpYWJsZSAmb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEludGVyZmFjZVZhcmlhYmxlOjpvcGVyYXRvcj09KG90aGVyKTsKK30KKwog
SW50ZXJmYWNlQmxvY2tGaWVsZDo6SW50ZXJmYWNlQmxvY2tGaWVsZCgpCiAgICAgOiBpc1Jvd01h
am9yTGF5b3V0KGZhbHNlKQoge30KQEAgLTMwNSw5ICszNDksMTQgQEAKIAogYm9vbCBWYXJ5aW5n
Ojppc1NhbWVWYXJ5aW5nQXRMaW5rVGltZShjb25zdCBWYXJ5aW5nICZvdGhlcikgY29uc3QKIHsK
KyAgICByZXR1cm4gaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUob3RoZXIsIDEwMCk7Cit9CisKK2Jv
b2wgVmFyeWluZzo6aXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoY29uc3QgVmFyeWluZyAmb3RoZXIs
IGludCBzaGFkZXJWZXJzaW9uKSBjb25zdAorewogICAgIHJldHVybiAoU2hhZGVyVmFyaWFibGU6
OmlzU2FtZVZhcmlhYmxlQXRMaW5rVGltZShvdGhlciwgZmFsc2UpICYmCiAgICAgICAgICAgICBp
bnRlcnBvbGF0aW9uID09IG90aGVyLmludGVycG9sYXRpb24gJiYKLSAgICAgICAgICAgIGlzSW52
YXJpYW50ID09IG90aGVyLmlzSW52YXJpYW50KTsKKyAgICAgICAgICAgIChzaGFkZXJWZXJzaW9u
ID49IDMwMCB8fCBpc0ludmFyaWFudCA9PSBvdGhlci5pc0ludmFyaWFudCkpOwogfQogCiBJbnRl
cmZhY2VCbG9jazo6SW50ZXJmYWNlQmxvY2soKQpAQCAtMzQ0LDQgKzM5Myw5IEBACiAgICAgcmV0
dXJuICp0aGlzOwogfQogCitzdGQ6OnN0cmluZyBJbnRlcmZhY2VCbG9jazo6ZmllbGRQcmVmaXgo
KSBjb25zdAoreworICAgIHJldHVybiBpbnN0YW5jZU5hbWUuZW1wdHkoKSA/ICIiIDogbmFtZTsK
IH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUFycmF5QXNzaWdubWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2ltcGxpZnlBcnJheUFzc2lnbm1lbnQuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUFycmF5QXNz
aWdubWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzggKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAwMi0yMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlBcnJheUFzc2ln
bm1lbnQuaCIKLQotYm9vbCBTaW1wbGlmeUFycmF5QXNzaWdubWVudDo6dmlzaXRCaW5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCi17Ci0gICAgc3dpdGNoIChub2RlLT5nZXRP
cCgpKQotICAgIHsKLSAgICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBUSW50ZXJtTm9kZSAqcGFyZW50ID0gZ2V0UGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgaWYg
KG5vZGUtPmdldExlZnQoKS0+aXNBcnJheSgpICYmIHBhcmVudCAhPSBudWxscHRyKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmVudEFnZyA9IHBh
cmVudC0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50QWdnICE9
IG51bGxwdHIgJiYgcGFyZW50QWdnLT5nZXRPcCgpID09IEVPcFNlcXVlbmNlKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBjYXNlIGlzIGZpbmUsIHRoZSBy
ZXN1bHQgb2YgdGhlIGFzc2lnbm1lbnQgaXMgbm90IHVzZWQuCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFRoZSByZXN1
bHQgb2YgdGhlIGFzc2lnbm1lbnQgbmVlZHMgdG8gYmUgc3RvcmVkIGludG8gYSB0ZW1wb3Jhcnkg
dmFyaWFibGUsCi0gICAgICAgICAgICAgICAgLy8gdGhlIGFzc2lnbm1lbnQgbmVlZHMgdG8gYmUg
cmVwbGFjZWQgd2l0aCBhIHJlZmVyZW5jZSB0byB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlLAotICAg
ICAgICAgICAgICAgIC8vIGFuZCB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIG5lZWRzIHRvIGZpbmFs
bHkgYmUgYXNzaWduZWQgdG8gdGhlIHRhcmdldCB2YXJpYWJsZS4KLQotICAgICAgICAgICAgICAg
IC8vIFRoaXMgYWxzbyBuZWVkcyB0byBpbnRlcmFjdCBjb3JyZWN0bHkgd2l0aCB1bmZvbGRpbmcg
c2hvcnQgY2lyY3VpdGluZyBvcGVyYXRvcnMuCi0gICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVm
YXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlB
cnJheUFzc2lnbm1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUFycmF5QXNzaWdubWVudC5oCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TaW1wbGlmeUFycmF5QXNzaWdubWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1ICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBTaW1wbGlmeUFycmF5QXNzaWdubWVudCBpcyBh
biBBU1QgdHJhdmVyc2VyIHRvIHJlcGxhY2Ugc3RhdGVtZW50cyB3aGVyZQotLy8gdGhlIHJldHVy
biB2YWx1ZSBvZiBhcnJheSBhc3NpZ25tZW50IGlzIHVzZWQgd2l0aCBzdGF0ZW1lbnRzIHdoZXJl
Ci0vLyB0aGUgcmV0dXJuIHZhbHVlIG9mIGFycmF5IGFzc2lnbm1lbnQgaXMgbm90IHVzZWQuCi0v
LwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfU0lNUExJRllBUlJBWUFTU0lHTk1FTlRf
SF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9TSU1QTElGWUFSUkFZQVNTSUdOTUVOVF9I
XwotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLQotY2xhc3MgU2ltcGxpZnlBcnJheUFzc2lnbm1lbnQg
OiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgotewotICBwdWJsaWM6Ci0gICAgU2ltcGxpZnlBcnJh
eUFzc2lnbm1lbnQoKSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2
aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSk7Ci19OwotCi0jZW5kaWYgIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfU0lNUExJRllBUlJBWUFTU0lHTk1FTlRfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1N0cnVjdHVyZUhMU0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgyLDI2ICsxODIsMjkgQEAKICAgICBzdHJpbmcgKz0gZGVjbGFyZVN0cmlu
ZyArICJcbiIKICAgICAgICAgICAgICAgIntcbiI7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKKyAgICBmb3IgKGNvbnN0IFRGaWVsZCAqZmll
bGQgOiBmaWVsZHMpCiAgICAgewotICAgICAgICBjb25zdCBURmllbGQgJmZpZWxkID0gKmZpZWxk
c1tpXTsKLSAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkVHlwZSA9ICpmaWVsZC50eXBlKCk7Ci0g
ICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKmZpZWxkU3RydWN0ID0gZmllbGRUeXBlLmdldFN0cnVj
dCgpOwotICAgICAgICBjb25zdCBUU3RyaW5nICZmaWVsZFR5cGVTdHJpbmcgPSBmaWVsZFN0cnVj
dCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxpZmllZFN0
cnVjdE5hbWVTdHJpbmcoKmZpZWxkU3RydWN0LCB1c2VITFNMUm93TWFqb3JQYWNraW5nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZVN0ZDE0MFBhY2tpbmcpIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZVN0cmluZyhmaWVsZFR5cGUpOwotCi0gICAgICAgIGlmIChwYWRIZWxw
ZXIpCisgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgPSAqZmllbGQtPnR5cGUoKTsKKyAg
ICAgICAgaWYgKCFJc1NhbXBsZXIoZmllbGRUeXBlLmdldEJhc2ljVHlwZSgpKSkKICAgICAgICAg
ewotICAgICAgICAgICAgc3RyaW5nICs9IHBhZEhlbHBlci0+cHJlUGFkZGluZ1N0cmluZyhmaWVs
ZFR5cGUpOwotICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICpmaWVsZFN0
cnVjdCA9IGZpZWxkVHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcg
JmZpZWxkVHlwZVN0cmluZyA9CisgICAgICAgICAgICAgICAgZmllbGRTdHJ1Y3QgPyBRdWFsaWZp
ZWRTdHJ1Y3ROYW1lU3RyaW5nKCpmaWVsZFN0cnVjdCwgdXNlSExTTFJvd01ham9yUGFja2luZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXNlU3RkMTQwUGFja2luZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFR5cGVTdHJp
bmcoZmllbGRUeXBlKTsKIAotICAgICAgICBzdHJpbmcgKz0gIiAgICAiICsgZmllbGRUeXBlU3Ry
aW5nICsgIiAiICsgRGVjb3JhdGVGaWVsZChmaWVsZC5uYW1lKCksIHN0cnVjdHVyZSkgKyBBcnJh
eVN0cmluZyhmaWVsZFR5cGUpICsgIjtcbiI7CisgICAgICAgICAgICBpZiAocGFkSGVscGVyKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0cmluZyArPSBwYWRIZWxwZXItPnByZVBh
ZGRpbmdTdHJpbmcoZmllbGRUeXBlKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAocGFk
SGVscGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJpbmcgKz0gcGFkSGVscGVyLT5wb3N0
UGFkZGluZ1N0cmluZyhmaWVsZFR5cGUsIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcpOworICAgICAg
ICAgICAgc3RyaW5nICs9ICIgICAgIiArIGZpZWxkVHlwZVN0cmluZyArICIgIiArIERlY29yYXRl
RmllbGQoZmllbGQtPm5hbWUoKSwgc3RydWN0dXJlKSArCisgICAgICAgICAgICAgICAgICAgICAg
QXJyYXlTdHJpbmcoZmllbGRUeXBlKSArICI7XG4iOworCisgICAgICAgICAgICBpZiAocGFkSGVs
cGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0cmluZyArPSBwYWRIZWxwZXIt
PnBvc3RQYWRkaW5nU3RyaW5nKGZpZWxkVHlwZSwgdXNlSExTTFJvd01ham9yUGFja2luZyk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxMSwxNiArMjE0LDE4IEBACiAg
ICAgcmV0dXJuIHN0cmluZzsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rv
cihjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgY29uc3QgVEludGVybVNl
cXVlbmNlICpwYXJhbWV0ZXJzKQorVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rv
cihjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJzKQogewogICAgIGlmIChuYW1l
ID09ICIiKQogICAgIHsKLSAgICAgICAgcmV0dXJuOyAgIC8vIE5hbWVsZXNzIHN0cnVjdHVyZXMg
ZG9uJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgcmV0dXJuIFRTdHJpbmcoKTsgIC8vIE5h
bWVsZXNzIHN0cnVjdHVyZXMgZG9uJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMKICAgICB9CiAKICAgICBp
ZiAodHlwZS5nZXRTdHJ1Y3QoKSAmJiBtU3RydWN0TmFtZXMuZmluZChuYW1lKSAhPSBtU3RydWN0
TmFtZXMuZW5kKCkpCiAgICAgewotICAgICAgICByZXR1cm47ICAgLy8gQWxyZWFkeSBhZGRlZAor
ICAgICAgICByZXR1cm4gVFN0cmluZyhuYW1lKTsgIC8vIEFscmVhZHkgYWRkZWQKICAgICB9CiAK
ICAgICBUVHlwZSBjdG9yVHlwZSA9IHR5cGU7CkBAIC0yMzEsNiArMjM2LDggQEAKICAgICB0eXBl
ZGVmIHN0ZDo6dmVjdG9yPFRUeXBlPiBQYXJhbWV0ZXJBcnJheTsKICAgICBQYXJhbWV0ZXJBcnJh
eSBjdG9yUGFyYW1ldGVyczsKIAorICAgIFRTdHJpbmcgY29uc3RydWN0b3JGdW5jdGlvbk5hbWU7
CisKICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwog
ICAgIGlmIChzdHJ1Y3R1cmUpCiAgICAgewpAQCAtMjYxLDE3ICsyNjgsMjQgQEAKICAgICAgICAg
fQogCiAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRz
KCk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsg
aSsrKQorICAgICAgICBmb3IgKGNvbnN0IFRGaWVsZCAqZmllbGQgOiBmaWVsZHMpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGN0b3JQYXJhbWV0ZXJzLnB1c2hfYmFjaygqZmllbGRzW2ldLT50eXBl
KCkpOworICAgICAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9IGZpZWxkLT50eXBlKCk7
CisgICAgICAgICAgICBpZiAoIUlzU2FtcGxlcihmaWVsZFR5cGUtPmdldEJhc2ljVHlwZSgpKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2so
KmZpZWxkVHlwZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgY29uc3RydWN0
b3JGdW5jdGlvbk5hbWUgPSBUU3RyaW5nKG5hbWUpOwogICAgIH0KICAgICBlbHNlIGlmIChwYXJh
bWV0ZXJzKQogICAgIHsKLSAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0ZXJh
dG9yIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMtPmJlZ2luKCk7IHBhcmFtZXRlciAhPSBwYXJhbWV0
ZXJzLT5lbmQoKTsgcGFyYW1ldGVyKyspCisgICAgICAgIGZvciAoYXV0byBwYXJhbWV0ZXIgOiAq
cGFyYW1ldGVycykKICAgICAgICAgewotICAgICAgICAgICAgY3RvclBhcmFtZXRlcnMucHVzaF9i
YWNrKCgqcGFyYW1ldGVyKS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkpOworICAgICAgICAgICAg
Y29uc3QgVFR5cGUgJnBhcmFtVHlwZSA9IHBhcmFtZXRlci0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBl
KCk7CisgICAgICAgICAgICBjdG9yUGFyYW1ldGVycy5wdXNoX2JhY2socGFyYW1UeXBlKTsKICAg
ICAgICAgfQorICAgICAgICBjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9IFRTdHJpbmcobmFtZSkg
KyBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUocGFyYW1ldGVycyk7CiAgICAgfQogICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKIApAQCAtMjgzLDcgKzI5Nyw3IEBACiAgICAgfQogICAgIGVsc2UgICAv
LyBCdWlsdC1pbiB0eXBlCiAgICAgewotICAgICAgICBjb25zdHJ1Y3RvciArPSBUeXBlU3RyaW5n
KGN0b3JUeXBlKSArICIgIiArIG5hbWUgKyAiKCI7CisgICAgICAgIGNvbnN0cnVjdG9yICs9IFR5
cGVTdHJpbmcoY3RvclR5cGUpICsgIiAiICsgY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgKyAiKCI7
CiAgICAgfQogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgcGFyYW1ldGVyID0gMDsgcGFyYW1ldGVy
IDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgpOyBwYXJhbWV0ZXIrKykKQEAgLTMwMyw3ICszMTcsMTUg
QEAKIAogICAgIGlmIChjdG9yVHlwZS5nZXRTdHJ1Y3QoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0
cnVjdG9yICs9ICIgICAgIiArIG5hbWUgKyAiIHN0cnVjdHVyZSA9IHsiOworICAgICAgICBjb25z
dHJ1Y3RvciArPSAiICAgICIgKyBuYW1lICsgIiBzdHJ1Y3R1cmUiOworICAgICAgICBpZiAoY3Rv
clBhcmFtZXRlcnMuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3RydWN0b3Ig
Kz0gIjtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdHJ1Y3RvciArPSAiID0geyAiOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAg
ICB7CkBAIC0zNjIsNyArMzg0LDE1IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAg
IHNpemVfdCByZW1haW5pbmdDb21wb25lbnRzID0gY3RvclR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwor
ICAgICAgICBzaXplX3QgcmVtYWluaW5nQ29tcG9uZW50cyA9IDA7CisgICAgICAgIGlmIChjdG9y
VHlwZS5nZXRTdHJ1Y3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVtYWluaW5nQ29tcG9u
ZW50cyA9IGN0b3JQYXJhbWV0ZXJzLnNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgPSBjdG9yVHlwZS5nZXRP
YmplY3RTaXplKCk7CisgICAgICAgIH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckluZGV4ID0g
MDsKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9uZW50cyA+IDApCkBAIC0zNzUsMTAg
KzQwNSw5IEBACiAKICAgICAgICAgICAgIGlmIChjdG9yVHlwZS5nZXRTdHJ1Y3QoKSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSBw
YXJhbWV0ZXJTaXplIHx8IG1vcmVQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
cGFyYW1ldGVyU2l6ZSA8PSByZW1haW5pbmdDb21wb25lbnRzKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQocmVtYWluaW5nQ29tcG9uZW50cyA9PSAxIHx8IG1vcmVQYXJhbWV0ZXJzKTsKIAotICAg
ICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgLT0gcGFyYW1ldGVyU2l6ZTsKKyAgICAg
ICAgICAgICAgICAtLXJlbWFpbmluZ0NvbXBvbmVudHM7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlIGlmIChwYXJhbWV0ZXIuaXNTY2FsYXIoKSkKICAgICAgICAgICAgIHsKQEAgLTQ1
NCw5ICs0ODMsMTMgQEAKIAogICAgIGlmIChjdG9yVHlwZS5nZXRTdHJ1Y3QoKSkKICAgICB7Ci0g
ICAgICAgIGNvbnN0cnVjdG9yICs9ICJ9O1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gc3RydWN0dXJlO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiI7Cisg
ICAgICAgIGlmICghY3RvclBhcmFtZXRlcnMuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY29uc3RydWN0b3IgKz0gIn07XG4iOworICAgICAgICB9CisgICAgICAgIGNvbnN0cnVjdG9y
ICs9CisgICAgICAgICAgICAiICAgIHJldHVybiBzdHJ1Y3R1cmU7XG4iCisgICAgICAgICAgICAi
fVxuIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTQ2NSw2ICs0OTgsOCBAQAogICAgIH0K
IAogICAgIG1Db25zdHJ1Y3RvcnMuaW5zZXJ0KGNvbnN0cnVjdG9yKTsKKworICAgIHJldHVybiBj
b25zdHJ1Y3RvckZ1bmN0aW9uTmFtZTsKIH0KIAogc3RkOjpzdHJpbmcgU3RydWN0dXJlSExTTDo6
c3RydWN0c0hlYWRlcigpIGNvbnN0CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5o
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5
LDExIEBACiAgIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVITFNMKCk7CiAKLSAgICB2b2lkIGFkZENv
bnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBjb25zdCBU
SW50ZXJtU2VxdWVuY2UgKnBhcmFtZXRlcnMpOworICAgIC8vIFJldHVybnMgdGhlIG5hbWUgb2Yg
dGhlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLiAibmFtZSIgcGFyYW1ldGVyIGlzIHRoZSBuYW1lIG9m
IHRoZSB0eXBlIGJlaW5nCisgICAgLy8gY29uc3RydWN0ZWQuCisgICAgVFN0cmluZyBhZGRDb25z
dHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUSW50
ZXJtU2VxdWVuY2UgKnBhcmFtZXRlcnMpOwogICAgIHN0ZDo6c3RyaW5nIHN0cnVjdHNIZWFkZXIo
KSBjb25zdDsKIAogICAgIFRTdHJpbmcgZGVmaW5lUXVhbGlmaWVkKGNvbnN0IFRTdHJ1Y3R1cmUg
JnN0cnVjdHVyZSwgYm9vbCB1c2VITFNMUm93TWFqb3JQYWNraW5nLCBib29sIHVzZVN0ZDE0MFBh
Y2tpbmcpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU3ltYm9sVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U3ltYm9sVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw3IEBACiAjZW5kaWYK
IAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lu
Y2x1ZGUgPGFsZ29yaXRobT4KQEAgLTI5LDYgKzMwLDE4IEBACiAgICAgICAgIGRlbGV0ZSAoKmkp
LnR5cGU7CiB9CiAKK2NvbnN0IFRTdHJpbmcgKlRGdW5jdGlvbjo6YnVpbGRNYW5nbGVkTmFtZSgp
IGNvbnN0Cit7CisgICAgc3RkOjpzdHJpbmcgbmV3TmFtZSA9IG1hbmdsZU5hbWUoZ2V0TmFtZSgp
KS5jX3N0cigpOworCisgICAgZm9yIChjb25zdCBhdXRvICZwIDogcGFyYW1ldGVycykKKyAgICB7
CisgICAgICAgIG5ld05hbWUgKz0gcC50eXBlLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIE5ld1Bvb2xUU3RyaW5nKG5ld05hbWUuY19zdHIoKSk7Cit9CisK
IC8vCiAvLyBTeW1ib2wgdGFibGUgbGV2ZWxzIGFyZSBhIG1hcCBvZiBwb2ludGVycyB0byBzeW1i
b2xzIHRoYXQgaGF2ZSB0byBiZSBkZWxldGVkLgogLy8KQEAgLTEzOSw3ICsxNTIsNyBAQAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotVFR5cGUgKlNwZWNpZmljVHlwZShUVHlwZSAqdHlwZSwgaW50
IHNpemUpCitjb25zdCBUVHlwZSAqU3BlY2lmaWNUeXBlKGNvbnN0IFRUeXBlICp0eXBlLCBpbnQg
c2l6ZSkKIHsKICAgICBBU1NFUlQoc2l6ZSA+PSAxICYmIHNpemUgPD0gNCk7CiAKQEAgLTE1Miwx
NSArMTY1LDE1IEBACiAKICAgICBzd2l0Y2godHlwZS0+Z2V0QmFzaWNUeXBlKCkpCiAgICAgewot
ICAgICAgY2FzZSBFYnRHZW5UeXBlOiAgcmV0dXJuIG5ldyBUVHlwZShFYnRGbG9hdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOwotICAgICAgY2FzZSBFYnRHZW5JVHlwZTogcmV0
dXJuIG5ldyBUVHlwZShFYnRJbnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsK
LSAgICAgIGNhc2UgRWJ0R2VuVVR5cGU6IHJldHVybiBuZXcgVFR5cGUoRWJ0VUludCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOwotICAgICAgY2FzZSBFYnRHZW5CVHlwZTogcmV0
dXJuIG5ldyBUVHlwZShFYnRCb29sLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7
CisgICAgICBjYXNlIEVidEdlblR5cGU6ICByZXR1cm4gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7CisgICAgICBjYXNlIEVidEdlbklU
eXBlOiByZXR1cm4gVENhY2hlOjpnZXRUeXBlKEVidEludCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oc2l6ZSkpOworICAgICAgY2FzZSBFYnRHZW5VVHlwZTogcmV0dXJuIFRDYWNoZTo6Z2V0
VHlwZShFYnRVSW50LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7CisgICAgICBj
YXNlIEVidEdlbkJUeXBlOiByZXR1cm4gVENhY2hlOjpnZXRUeXBlKEVidEJvb2wsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKICAgICAgIGRlZmF1bHQ6IHJldHVybiB0eXBlOwog
ICAgIH0KIH0KIAotVFR5cGUgKlZlY3RvclR5cGUoVFR5cGUgKnR5cGUsIGludCBzaXplKQorY29u
c3QgVFR5cGUgKlZlY3RvclR5cGUoY29uc3QgVFR5cGUgKnR5cGUsIGludCBzaXplKQogewogICAg
IEFTU0VSVChzaXplID49IDIgJiYgc2l6ZSA8PSA0KTsKIApAQCAtMTczLDQ4ICsxODYsNTMgQEAK
IAogICAgIHN3aXRjaCh0eXBlLT5nZXRCYXNpY1R5cGUoKSkKICAgICB7Ci0gICAgICBjYXNlIEVi
dFZlYzogIHJldHVybiBuZXcgVFR5cGUoRWJ0RmxvYXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KHNpemUpKTsKLSAgICAgIGNhc2UgRWJ0SVZlYzogcmV0dXJuIG5ldyBUVHlwZShFYnRJbnQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKLSAgICAgIGNhc2UgRWJ0VVZlYzog
cmV0dXJuIG5ldyBUVHlwZShFYnRVSW50LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXpl
KSk7Ci0gICAgICBjYXNlIEVidEJWZWM6IHJldHVybiBuZXcgVFR5cGUoRWJ0Qm9vbCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOworICAgICAgY2FzZSBFYnRWZWM6ICByZXR1cm4g
VENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXpl
KSk7CisgICAgICBjYXNlIEVidElWZWM6IHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50LCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7CisgICAgICBjYXNlIEVidFVWZWM6IHJl
dHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0VUludCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
c2l6ZSkpOworICAgICAgY2FzZSBFYnRCVmVjOiByZXR1cm4gVENhY2hlOjpnZXRUeXBlKEVidEJv
b2wsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKICAgICAgIGRlZmF1bHQ6IHJl
dHVybiB0eXBlOwogICAgIH0KIH0KIAotdm9pZCBUU3ltYm9sVGFibGU6Omluc2VydEJ1aWx0SW4o
RVN5bWJvbExldmVsIGxldmVsLCBUT3BlcmF0b3Igb3AsIGNvbnN0IGNoYXIgKmV4dCwgVFR5cGUg
KnJ2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRUeXBlICpwdHlwZTEsIFRUeXBlICpwdHlwZTIsIFRUeXBlICpwdHlwZTMsIFRUeXBlICpw
dHlwZTQsIFRUeXBlICpwdHlwZTUpCit2b2lkIFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbihF
U3ltYm9sTGV2ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwgY29uc3QgY2hhciAqZXh0LCBjb25zdCBU
VHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwgY29uc3QgVFR5cGUgKnB0eXBlMiwgY29uc3Qg
VFR5cGUgKnB0eXBlMywgY29uc3QgVFR5cGUgKnB0eXBlNCwgY29uc3QgVFR5cGUgKnB0eXBlNSkK
IHsKICAgICBpZiAocHR5cGUxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRHU2FtcGxlcjJEKQogICAg
IHsKKyAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbihuYW1lKTsKICAgICAgICAgYm9vbCBn
dmVjNCA9IChydmFsdWUtPmdldEJhc2ljVHlwZSgpID09IEVidEdWZWM0KTsKLSAgICAgICAgaW5z
ZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBuZXcgVFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVl
LCBuYW1lLCBuZXcgVFR5cGUoRWJ0U2FtcGxlcjJEKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwg
cHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBuZXcgVFR5cGUo
RWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgbmV3IFRUeXBlKEVidElTYW1wbGVyMkQpLCBwdHlw
ZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVs
LCBndmVjNCA/IG5ldyBUVHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgbmV3IFRUeXBl
KEVidFVTYW1wbGVyMkQpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAg
ICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwg
NCkgOiBydmFsdWUsIG5hbWUsIFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkQpLCBwdHlwZTIs
IHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBn
dmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6
OmdldFR5cGUoRWJ0SVNhbXBsZXIyRCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7
CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVi
dFVJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXIyRCks
IHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CiAgICAgfQogICAgIGVsc2UgaWYgKHB0
eXBlMS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1NhbXBsZXIzRCkKICAgICB7CisgICAgICAgIGlu
c2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7CiAgICAgICAgIGJvb2wgZ3ZlYzQgPSAocnZhbHVl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRHVmVjNCk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2
ZWwsIGd2ZWM0ID8gbmV3IFRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgbmV3IFRU
eXBlKEVidFNhbXBsZXIzRCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Ci0gICAg
ICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gbmV3IFRUeXBlKEVidEludCwgNCkgOiBy
dmFsdWUsIG5hbWUsIG5ldyBUVHlwZShFYnRJU2FtcGxlcjNEKSwgcHR5cGUyLCBwdHlwZTMsIHB0
eXBlNCwgcHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBuZXcg
VFR5cGUoRWJ0VUludCwgNCkgOiBydmFsdWUsIG5hbWUsIG5ldyBUVHlwZShFYnRVU2FtcGxlcjNE
KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJ
bihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBu
YW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlcjNEKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBl
NCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6
OmdldFR5cGUoRWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidElT
YW1wbGVyM0QpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNl
cnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2
YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidFVTYW1wbGVyM0QpLCBwdHlwZTIsIHB0eXBl
MywgcHR5cGU0LCBwdHlwZTUpOwogICAgIH0KICAgICBlbHNlIGlmIChwdHlwZTEtPmdldEJhc2lj
VHlwZSgpID09IEVidEdTYW1wbGVyQ3ViZSkKICAgICB7CisgICAgICAgIGluc2VydFVubWFuZ2xl
ZEJ1aWx0SW4obmFtZSk7CiAgICAgICAgIGJvb2wgZ3ZlYzQgPSAocnZhbHVlLT5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRHVmVjNCk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8g
bmV3IFRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgbmV3IFRUeXBlKEVidFNhbXBs
ZXJDdWJlKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0
QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBuZXcgVFR5cGUoRWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFt
ZSwgbmV3IFRUeXBlKEVidElTYW1wbGVyQ3ViZSksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0
eXBlNSk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gbmV3IFRUeXBlKEVi
dFVJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBuZXcgVFR5cGUoRWJ0VVNhbXBsZXJDdWJlKSwgcHR5
cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZl
bCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBuYW1lLCBU
Q2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckN1YmUpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBw
dHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0
VHlwZShFYnRJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0SVNhbXBs
ZXJDdWJlKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0
QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0VUludCwgNCkgOiBydmFs
dWUsIG5hbWUsIFRDYWNoZTo6Z2V0VHlwZShFYnRVU2FtcGxlckN1YmUpLCBwdHlwZTIsIHB0eXBl
MywgcHR5cGU0LCBwdHlwZTUpOwogICAgIH0KICAgICBlbHNlIGlmIChwdHlwZTEtPmdldEJhc2lj
VHlwZSgpID09IEVidEdTYW1wbGVyMkRBcnJheSkKICAgICB7CisgICAgICAgIGluc2VydFVubWFu
Z2xlZEJ1aWx0SW4obmFtZSk7CiAgICAgICAgIGJvb2wgZ3ZlYzQgPSAocnZhbHVlLT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRHVmVjNCk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0
ID8gbmV3IFRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgbmV3IFRUeXBlKEVidFNh
bXBsZXIyREFycmF5KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKLSAgICAgICAg
aW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBuZXcgVFR5cGUoRWJ0SW50LCA0KSA6IHJ2YWx1
ZSwgbmFtZSwgbmV3IFRUeXBlKEVidElTYW1wbGVyMkRBcnJheSksIHB0eXBlMiwgcHR5cGUzLCBw
dHlwZTQsIHB0eXBlNSk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gbmV3
IFRUeXBlKEVidFVJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBuZXcgVFR5cGUoRWJ0VVNhbXBsZXIy
REFycmF5KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0
QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZh
bHVlLCBuYW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlcjJEQXJyYXkpLCBwdHlwZTIsIHB0
eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVj
NCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6Omdl
dFR5cGUoRWJ0SVNhbXBsZXIyREFycmF5KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1
KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUo
RWJ0VUludCwgNCkgOiBydmFsdWUsIG5hbWUsIFRDYWNoZTo6Z2V0VHlwZShFYnRVU2FtcGxlcjJE
QXJyYXkpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwogICAgIH0KICAgICBlbHNl
IGlmIChJc0dlblR5cGUocnZhbHVlKSB8fCBJc0dlblR5cGUocHR5cGUxKSB8fCBJc0dlblR5cGUo
cHR5cGUyKSB8fCBJc0dlblR5cGUocHR5cGUzKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghcHR5
cGU0ICYmICFwdHlwZTUpOworICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKG5hbWUpOwog
ICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBTcGVjaWZpY1R5cGUocnZhbHVl
LCAxKSwgbmFtZSwgU3BlY2lmaWNUeXBlKHB0eXBlMSwgMSksIFNwZWNpZmljVHlwZShwdHlwZTIs
IDEpLCBTcGVjaWZpY1R5cGUocHR5cGUzLCAxKSk7CiAgICAgICAgIGluc2VydEJ1aWx0SW4obGV2
ZWwsIG9wLCBleHQsIFNwZWNpZmljVHlwZShydmFsdWUsIDIpLCBuYW1lLCBTcGVjaWZpY1R5cGUo
cHR5cGUxLCAyKSwgU3BlY2lmaWNUeXBlKHB0eXBlMiwgMiksIFNwZWNpZmljVHlwZShwdHlwZTMs
IDIpKTsKICAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgU3BlY2lmaWNUeXBl
KHJ2YWx1ZSwgMyksIG5hbWUsIFNwZWNpZmljVHlwZShwdHlwZTEsIDMpLCBTcGVjaWZpY1R5cGUo
cHR5cGUyLCAzKSwgU3BlY2lmaWNUeXBlKHB0eXBlMywgMykpOwpAQCAtMjIzLDQxICsyNDEsMzgg
QEAKICAgICBlbHNlIGlmIChJc1ZlY1R5cGUocnZhbHVlKSB8fCBJc1ZlY1R5cGUocHR5cGUxKSB8
fCBJc1ZlY1R5cGUocHR5cGUyKSB8fCBJc1ZlY1R5cGUocHR5cGUzKSkKICAgICB7CiAgICAgICAg
IEFTU0VSVCghcHR5cGU0ICYmICFwdHlwZTUpOworICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWls
dEluKG5hbWUpOwogICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBWZWN0b3JU
eXBlKHJ2YWx1ZSwgMiksIG5hbWUsIFZlY3RvclR5cGUocHR5cGUxLCAyKSwgVmVjdG9yVHlwZShw
dHlwZTIsIDIpLCBWZWN0b3JUeXBlKHB0eXBlMywgMikpOwogICAgICAgICBpbnNlcnRCdWlsdElu
KGxldmVsLCBvcCwgZXh0LCBWZWN0b3JUeXBlKHJ2YWx1ZSwgMyksIG5hbWUsIFZlY3RvclR5cGUo
cHR5cGUxLCAzKSwgVmVjdG9yVHlwZShwdHlwZTIsIDMpLCBWZWN0b3JUeXBlKHB0eXBlMywgMykp
OwogICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBWZWN0b3JUeXBlKHJ2YWx1
ZSwgNCksIG5hbWUsIFZlY3RvclR5cGUocHR5cGUxLCA0KSwgVmVjdG9yVHlwZShwdHlwZTIsIDQp
LCBWZWN0b3JUeXBlKHB0eXBlMywgNCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAg
ICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbihOZXdQb29sVFN0cmluZyhuYW1l
KSwgKnJ2YWx1ZSwgb3AsIGV4dCk7CisgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcg
VEZ1bmN0aW9uKE5ld1Bvb2xUU3RyaW5nKG5hbWUpLCBydmFsdWUsIG9wLCBleHQpOwogCi0gICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0xID0gezAsIHB0eXBlMX07Ci0gICAgICAgIGZ1bmN0aW9uLT5h
ZGRQYXJhbWV0ZXIocGFyYW0xKTsKKyAgICAgICAgZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihUQ29u
c3RQYXJhbWV0ZXIocHR5cGUxKSk7CiAKICAgICAgICAgaWYgKHB0eXBlMikKICAgICAgICAgewot
ICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTIgPSB7MCwgcHR5cGUyfTsKLSAgICAgICAgICAg
IGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0yKTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5h
ZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHB0eXBlMikpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHB0eXBlMykKICAgICAgICAgewotICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTMg
PSB7MCwgcHR5cGUzfTsKLSAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW0z
KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHB0
eXBlMykpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHB0eXBlNCkKICAgICAgICAgewotICAg
ICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTQgPSB7MCwgcHR5cGU0fTsKLSAgICAgICAgICAgIGZ1
bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW00KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQ
YXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHB0eXBlNCkpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHB0eXBlNSkKICAgICAgICAgewotICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTUgPSB7
MCwgcHR5cGU1fTsKLSAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIocGFyYW01KTsK
KyAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHB0eXBl
NSkpOwogICAgICAgICB9CiAKKyAgICAgICAgQVNTRVJUKGhhc1VubWFuZ2xlZEJ1aWx0SW4obmFt
ZSkpOwogICAgICAgICBpbnNlcnQobGV2ZWwsIGZ1bmN0aW9uKTsKICAgICB9CiB9CkBAIC0yNzIs
NyArMjg3LDcgQEAKIAogICAgIGludCBsZXZlbCA9IHN0YXRpY19jYXN0PGludD4ocHJlY2lzaW9u
U3RhY2suc2l6ZSgpKSAtIDE7CiAgICAgYXNzZXJ0KGxldmVsID49IDApOyAvLyBKdXN0IHRvIGJl
IHNhZmUuIFNob3VsZCBub3QgaGFwcGVuLgotICAgIC8vIElmIHdlIGRvbnQgZmluZCBhbnl0aGlu
ZyB3ZSByZXR1cm4gdGhpcy4gU2hvdWxkIHdlIGVycm9yIGNoZWNrIHRoaXM/CisgICAgLy8gSWYg
d2UgZG9udCBmaW5kIGFueXRoaW5nIHdlIHJldHVybiB0aGlzLiBTb21lIHR5cGVzIGRvbid0IGhh
dmUgcHJlZGVmaW5lZCBkZWZhdWx0IHByZWNpc2lvbi4KICAgICBUUHJlY2lzaW9uIHByZWMgPSBF
YnBVbmRlZmluZWQ7CiAgICAgd2hpbGUgKGxldmVsID49IDApCiAgICAgewpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TeW1ib2xUYWJsZS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDksMTMgKzEwOSw4IEBACiAgICAgICAgICAgdW5pb25BcnJheSgwKQogICAgIHsK
ICAgICB9Ci0gICAgdmlydHVhbCB+VFZhcmlhYmxlKCkKLSAgICB7Ci0gICAgfQotICAgIHZpcnR1
YWwgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KKyAgICB+VFZhcmlhYmxlKCkgb3ZlcnJpZGUge30KKyAgICBib29sIGlzVmFyaWFibGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgVFR5cGUgJmdldFR5cGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGU7CkBAIC0xMzMsNDAgKzEyOCw2NyBAQAogICAgICAg
ICB0eXBlLnNldFF1YWxpZmllcihxdWFsaWZpZXIpOwogICAgIH0KIAotICAgIFRDb25zdGFudFVu
aW9uICpnZXRDb25zdFBvaW50ZXIoKQotICAgIHsgCi0gICAgICAgIGlmICghdW5pb25BcnJheSkK
LSAgICAgICAgICAgIHVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bdHlwZS5nZXRPYmpl
Y3RTaXplKCldOworICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpnZXRDb25zdFBvaW50ZXIoKSBj
b25zdCB7IHJldHVybiB1bmlvbkFycmF5OyB9CiAKLSAgICAgICAgcmV0dXJuIHVuaW9uQXJyYXk7
Ci0gICAgfQorICAgIHZvaWQgc2hhcmVDb25zdFBvaW50ZXIoY29uc3QgVENvbnN0YW50VW5pb24g
KmNvbnN0QXJyYXkpIHsgdW5pb25BcnJheSA9IGNvbnN0QXJyYXk7IH0KIAotICAgIFRDb25zdGFu
dFVuaW9uICpnZXRDb25zdFBvaW50ZXIoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVu
aW9uQXJyYXk7Ci0gICAgfQotCi0gICAgdm9pZCBzaGFyZUNvbnN0UG9pbnRlcihUQ29uc3RhbnRV
bmlvbiAqY29uc3RBcnJheSkKLSAgICB7Ci0gICAgICAgIGlmICh1bmlvbkFycmF5ID09IGNvbnN0
QXJyYXkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZGVsZXRlW10gdW5pb25BcnJh
eTsKLSAgICAgICAgdW5pb25BcnJheSA9IGNvbnN0QXJyYXk7ICAKLSAgICB9Ci0KICAgcHJpdmF0
ZToKICAgICBUVHlwZSB0eXBlOwogICAgIGJvb2wgdXNlclR5cGU7CiAgICAgLy8gd2UgYXJlIGFz
c3VtaW5nIHRoYXQgUG9vbCBBbGxvY2F0b3Igd2lsbCBmcmVlIHRoZSBtZW1vcnkKICAgICAvLyBh
bGxvY2F0ZWQgdG8gdW5pb25BcnJheSB3aGVuIHRoaXMgb2JqZWN0IGlzIGRlc3Ryb3llZC4KLSAg
ICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheTsKKyAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAq
dW5pb25BcnJheTsKIH07CiAKKy8vIEltbXV0YWJsZSB2ZXJzaW9uIG9mIFRQYXJhbWV0ZXIuCitz
dHJ1Y3QgVENvbnN0UGFyYW1ldGVyCit7CisgICAgVENvbnN0UGFyYW1ldGVyKCkKKyAgICAgICAg
OiBuYW1lKG51bGxwdHIpLAorICAgICAgICAgIHR5cGUobnVsbHB0cikKKyAgICB7CisgICAgfQor
ICAgIGV4cGxpY2l0IFRDb25zdFBhcmFtZXRlcihjb25zdCBUU3RyaW5nICpuKQorICAgICAgICA6
IG5hbWUobiksCisgICAgICAgICAgdHlwZShudWxscHRyKQorICAgIHsKKyAgICB9CisgICAgZXhw
bGljaXQgVENvbnN0UGFyYW1ldGVyKGNvbnN0IFRUeXBlICp0KQorICAgICAgICA6IG5hbWUobnVs
bHB0ciksCisgICAgICAgICAgdHlwZSh0KQorICAgIHsKKyAgICB9CisgICAgVENvbnN0UGFyYW1l
dGVyKGNvbnN0IFRTdHJpbmcgKm4sIGNvbnN0IFRUeXBlICp0KQorICAgICAgICA6IG5hbWUobiks
CisgICAgICAgICAgdHlwZSh0KQorICAgIHsKKyAgICB9CisKKyAgICAvLyBCb3RoIGNvbnN0cnVj
dG9yIGFyZ3VtZW50cyBtdXN0IGJlIGNvbnN0LgorICAgIFRDb25zdFBhcmFtZXRlcihUU3RyaW5n
ICpuLCBUVHlwZSAqdCkgPSBkZWxldGU7CisgICAgVENvbnN0UGFyYW1ldGVyKGNvbnN0IFRTdHJp
bmcgKm4sIFRUeXBlICp0KSA9IGRlbGV0ZTsKKyAgICBUQ29uc3RQYXJhbWV0ZXIoVFN0cmluZyAq
biwgY29uc3QgVFR5cGUgKnQpID0gZGVsZXRlOworCisgICAgY29uc3QgVFN0cmluZyAqbmFtZTsK
KyAgICBjb25zdCBUVHlwZSAqdHlwZTsKK307CisKIC8vIFRoZSBmdW5jdGlvbiBzdWItY2xhc3Mg
b2Ygc3ltYm9scyBhbmQgdGhlIHBhcnNlciB3aWxsIG5lZWQgdG8KIC8vIHNoYXJlIHRoaXMgZGVm
aW5pdGlvbiBvZiBhIGZ1bmN0aW9uIHBhcmFtZXRlci4KIHN0cnVjdCBUUGFyYW1ldGVyCiB7Cisg
ICAgLy8gRGVzdHJ1Y3RpdmVseSBjb252ZXJ0cyB0byBUQ29uc3RQYXJhbWV0ZXIuCisgICAgLy8g
VGhpcyBtZXRob2QgcmVzZXRzIG5hbWUgYW5kIHR5cGUgdG8gbnVsbHB0cnMgdG8gbWFrZSBzdXJl
CisgICAgLy8gdGhlaXIgY29udGVudCBjYW5ub3QgYmUgbW9kaWZpZWQgYWZ0ZXIgdGhlIGNhbGwu
CisgICAgVENvbnN0UGFyYW1ldGVyIHR1cm5Ub0NvbnN0KCkKKyAgICB7CisgICAgICAgIGNvbnN0
IFRTdHJpbmcgKmNvbnN0TmFtZSA9IG5hbWU7CisgICAgICAgIGNvbnN0IFRUeXBlICpjb25zdFR5
cGUgPSB0eXBlOworICAgICAgICBuYW1lID0gbnVsbHB0cjsKKyAgICAgICAgdHlwZSA9IG51bGxw
dHI7CisgICAgICAgIHJldHVybiBUQ29uc3RQYXJhbWV0ZXIoY29uc3ROYW1lLCBjb25zdFR5cGUp
OworICAgIH0KKwogICAgIFRTdHJpbmcgKm5hbWU7CiAgICAgVFR5cGUgKnR5cGU7CiB9OwpAQCAt
MTc1LDI3ICsxOTcsMjEgQEAKIGNsYXNzIFRGdW5jdGlvbiA6IHB1YmxpYyBUU3ltYm9sCiB7CiAg
IHB1YmxpYzoKLSAgICBURnVuY3Rpb24oVE9wZXJhdG9yIG8pCi0gICAgICAgIDogVFN5bWJvbCgw
KSwKLSAgICAgICAgICByZXR1cm5UeXBlKFRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCkpLAot
ICAgICAgICAgIG9wKG8pLAotICAgICAgICAgIGRlZmluZWQoZmFsc2UpCi0gICAgewotICAgIH0K
LSAgICBURnVuY3Rpb24oY29uc3QgVFN0cmluZyAqbmFtZSwgY29uc3QgVFR5cGUgJnJldFR5cGUs
IFRPcGVyYXRvciB0T3AgPSBFT3BOdWxsLCBjb25zdCBjaGFyICpleHQgPSAiIikKKyAgICBURnVu
Y3Rpb24oY29uc3QgVFN0cmluZyAqbmFtZSwKKyAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnJl
dFR5cGUsCisgICAgICAgICAgICAgIFRPcGVyYXRvciB0T3AgICA9IEVPcE51bGwsCisgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKmV4dCA9ICIiKQogICAgICAgICA6IFRTeW1ib2wobmFtZSksCiAg
ICAgICAgICAgcmV0dXJuVHlwZShyZXRUeXBlKSwKLSAgICAgICAgICBtYW5nbGVkTmFtZShURnVu
Y3Rpb246Om1hbmdsZU5hbWUoKm5hbWUpKSwKKyAgICAgICAgICBtYW5nbGVkTmFtZShudWxscHRy
KSwKICAgICAgICAgICBvcCh0T3ApLAotICAgICAgICAgIGRlZmluZWQoZmFsc2UpCisgICAgICAg
ICAgZGVmaW5lZChmYWxzZSksCisgICAgICAgICAgbUhhc1Byb3RvdHlwZURlY2xhcmF0aW9uKGZh
bHNlKQogICAgIHsKICAgICAgICAgcmVsYXRlVG9FeHRlbnNpb24oZXh0KTsKICAgICB9Ci0gICAg
dmlydHVhbCB+VEZ1bmN0aW9uKCk7Ci0gICAgdmlydHVhbCBib29sIGlzRnVuY3Rpb24oKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIH5URnVuY3Rpb24oKSBv
dmVycmlkZTsKKyAgICBib29sIGlzRnVuY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBzdGF0aWMgVFN0cmluZyBtYW5nbGVOYW1lKGNvbnN0IFRTdHJpbmcgJm5h
bWUpCiAgICAgewpAQCAtMjA2LDE5ICsyMjIsMjMgQEAKICAgICAgICAgcmV0dXJuIFRTdHJpbmco
bWFuZ2xlZE5hbWUuY19zdHIoKSwgbWFuZ2xlZE5hbWUuZmluZF9maXJzdF9vZignKCcpKTsKICAg
ICB9CiAKLSAgICB2b2lkIGFkZFBhcmFtZXRlcihUUGFyYW1ldGVyICZwKQotICAgIHsgCisgICAg
dm9pZCBhZGRQYXJhbWV0ZXIoY29uc3QgVENvbnN0UGFyYW1ldGVyICZwKQorICAgIHsKICAgICAg
ICAgcGFyYW1ldGVycy5wdXNoX2JhY2socCk7Ci0gICAgICAgIG1hbmdsZWROYW1lID0gbWFuZ2xl
ZE5hbWUgKyBwLnR5cGUtPmdldE1hbmdsZWROYW1lKCk7CisgICAgICAgIG1hbmdsZWROYW1lID0g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBjb25zdCBUU3RyaW5nICZnZXRNYW5nbGVkTmFtZSgpIGNv
bnN0CisgICAgY29uc3QgVFN0cmluZyAmZ2V0TWFuZ2xlZE5hbWUoKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1hbmdsZWROYW1lOworICAgICAgICBpZiAobWFuZ2xlZE5h
bWUgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgbWFuZ2xlZE5hbWUgPSBidWls
ZE1hbmdsZWROYW1lKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICptYW5nbGVkTmFtZTsK
ICAgICB9CiAgICAgY29uc3QgVFR5cGUgJmdldFJldHVyblR5cGUoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHJldHVyblR5cGU7CisgICAgICAgIHJldHVybiAqcmV0dXJuVHlwZTsKICAg
ICB9CiAKICAgICBUT3BlcmF0b3IgZ2V0QnVpbHRJbk9wKCkgY29uc3QKQEAgLTIyNiwzMSArMjQ2
LDMwIEBACiAgICAgICAgIHJldHVybiBvcDsKICAgICB9CiAKLSAgICB2b2lkIHNldERlZmluZWQo
KQotICAgIHsKLSAgICAgICAgZGVmaW5lZCA9IHRydWU7Ci0gICAgfQotICAgIGJvb2wgaXNEZWZp
bmVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBkZWZpbmVkOwotICAgIH0KKyAgICB2b2lkIHNl
dERlZmluZWQoKSB7IGRlZmluZWQgPSB0cnVlOyB9CisgICAgYm9vbCBpc0RlZmluZWQoKSB7IHJl
dHVybiBkZWZpbmVkOyB9CisgICAgdm9pZCBzZXRIYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpIHsg
bUhhc1Byb3RvdHlwZURlY2xhcmF0aW9uID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzUHJvdG90eXBl
RGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVybiBtSGFzUHJvdG90eXBlRGVjbGFyYXRpb247IH0K
IAogICAgIHNpemVfdCBnZXRQYXJhbUNvdW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBwYXJhbWV0ZXJzLnNpemUoKTsKICAgICB9Ci0gICAgY29uc3QgVFBhcmFtZXRlciAmZ2V0UGFy
YW0oc2l6ZV90IGkpIGNvbnN0CisgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZnZXRQYXJhbShz
aXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzW2ldOwogICAg
IH0KIAogICBwcml2YXRlOgotICAgIHR5cGVkZWYgVFZlY3RvcjxUUGFyYW1ldGVyPiBUUGFyYW1M
aXN0OworICAgIGNvbnN0IFRTdHJpbmcgKmJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdDsKKworICAg
IHR5cGVkZWYgVFZlY3RvcjxUQ29uc3RQYXJhbWV0ZXI+IFRQYXJhbUxpc3Q7CiAgICAgVFBhcmFt
TGlzdCBwYXJhbWV0ZXJzOwotICAgIFRUeXBlIHJldHVyblR5cGU7Ci0gICAgVFN0cmluZyBtYW5n
bGVkTmFtZTsKKyAgICBjb25zdCBUVHlwZSAqcmV0dXJuVHlwZTsKKyAgICBtdXRhYmxlIGNvbnN0
IFRTdHJpbmcgKm1hbmdsZWROYW1lOwogICAgIFRPcGVyYXRvciBvcDsKICAgICBib29sIGRlZmlu
ZWQ7CisgICAgYm9vbCBtSGFzUHJvdG90eXBlRGVjbGFyYXRpb247CiB9OwogCiAvLyBJbnRlcmZh
Y2UgYmxvY2sgbmFtZSBzdWItc3ltYm9sCkBAIC0zNjQsMjggKzM4Myw0MyBAQAogICAgIHsKICAg
ICAgICAgVFZhcmlhYmxlICpjb25zdGFudCA9IG5ldyBUVmFyaWFibGUoCiAgICAgICAgICAgICBO
ZXdQb29sVFN0cmluZyhuYW1lKSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0
LCAxKSk7Ci0gICAgICAgIGNvbnN0YW50LT5nZXRDb25zdFBvaW50ZXIoKS0+c2V0SUNvbnN0KHZh
bHVlKTsKKyAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb25bMV07CisgICAgICAgIHVuaW9uQXJyYXlbMF0uc2V0SUNvbnN0KHZhbHVlKTsKKyAgICAg
ICAgY29uc3RhbnQtPnNoYXJlQ29uc3RQb2ludGVyKHVuaW9uQXJyYXkpOwogICAgICAgICByZXR1
cm4gaW5zZXJ0KGxldmVsLCBjb25zdGFudCk7CiAgICAgfQogCi0gICAgdm9pZCBpbnNlcnRCdWls
dEluKEVTeW1ib2xMZXZlbCBsZXZlbCwgVE9wZXJhdG9yIG9wLCBjb25zdCBjaGFyICpleHQsIFRU
eXBlICpydmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFRU
eXBlICpwdHlwZTEsIFRUeXBlICpwdHlwZTIgPSAwLCBUVHlwZSAqcHR5cGUzID0gMCwgVFR5cGUg
KnB0eXBlNCA9IDAsIFRUeXBlICpwdHlwZTUgPSAwKTsKKyAgICBib29sIGluc2VydENvbnN0SW50
RXh0KEVTeW1ib2xMZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqZXh0LCBjb25zdCBjaGFyICpuYW1l
LCBpbnQgdmFsdWUpCisgICAgeworICAgICAgICBUVmFyaWFibGUgKmNvbnN0YW50ID0KKyAgICAg
ICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcobmFtZSksIFRUeXBlKEVidEludCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOworICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5p
b25BcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgdW5pb25BcnJheVswXS5z
ZXRJQ29uc3QodmFsdWUpOworICAgICAgICBjb25zdGFudC0+c2hhcmVDb25zdFBvaW50ZXIodW5p
b25BcnJheSk7CisgICAgICAgIHJldHVybiBpbnNlcnQobGV2ZWwsIGV4dCwgY29uc3RhbnQpOwor
ICAgIH0KIAotICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihFU3ltYm9sTGV2ZWwgbGV2ZWwsIFRUeXBl
ICpydmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFRUeXBl
ICpwdHlwZTEsIFRUeXBlICpwdHlwZTIgPSAwLCBUVHlwZSAqcHR5cGUzID0gMCwgVFR5cGUgKnB0
eXBlNCA9IDAsIFRUeXBlICpwdHlwZTUgPSAwKQorICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihFU3lt
Ym9sTGV2ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwgY29uc3QgY2hhciAqZXh0LCBjb25zdCBUVHlw
ZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcHR5cGUxLCBjb25zdCBUVHlwZSAqcHR5cGUyID0gMCwgY29uc3QgVFR5cGUgKnB0
eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGU1ID0g
MCk7CisKKyAgICB2b2lkIGluc2VydEJ1aWx0SW4oRVN5bWJvbExldmVsIGxldmVsLCBjb25zdCBU
VHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAqcHR5cGUxLCBjb25zdCBUVHlwZSAqcHR5cGUyID0gMCwgY29uc3QgVFR5cGUg
KnB0eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGU1
ID0gMCkKICAgICB7CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7CiAgICAg
ICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIEVPcE51bGwsICIiLCBydmFsdWUsIG5hbWUsIHB0eXBl
MSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKICAgICB9CiAKLSAgICB2b2lkIGlu
c2VydEJ1aWx0SW4oRVN5bWJvbExldmVsIGxldmVsLCBjb25zdCBjaGFyICpleHQsIFRUeXBlICpy
dmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIFRUeXBlICpw
dHlwZTEsIFRUeXBlICpwdHlwZTIgPSAwLCBUVHlwZSAqcHR5cGUzID0gMCwgVFR5cGUgKnB0eXBl
NCA9IDAsIFRUeXBlICpwdHlwZTUgPSAwKQorICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihFU3ltYm9s
TGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKmV4dCwgY29uc3QgVFR5cGUgKnJ2YWx1ZSwgY29uc3Qg
Y2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwg
Y29uc3QgVFR5cGUgKnB0eXBlMiA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTMgPSAwLCBjb25zdCBU
VHlwZSAqcHR5cGU0ID0gMCwgY29uc3QgVFR5cGUgKnB0eXBlNSA9IDApCiAgICAgeworICAgICAg
ICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKG5hbWUpOwogICAgICAgICBpbnNlcnRCdWlsdEluKGxl
dmVsLCBFT3BOdWxsLCBleHQsIHJ2YWx1ZSwgbmFtZSwgcHR5cGUxLCBwdHlwZTIsIHB0eXBlMywg
cHR5cGU0LCBwdHlwZTUpOwogICAgIH0KIAotICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihFU3ltYm9s
TGV2ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwgVFR5cGUgKnJ2YWx1ZSwgY29uc3QgY2hhciAqbmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgKnB0eXBlMSwgVFR5cGUgKnB0eXBlMiA9
IDAsIFRUeXBlICpwdHlwZTMgPSAwLCBUVHlwZSAqcHR5cGU0ID0gMCwgVFR5cGUgKnB0eXBlNSA9
IDApCisgICAgdm9pZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBsZXZlbCwgVE9wZXJhdG9y
IG9wLCBjb25zdCBUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUxLCBjb25zdCBUVHlwZSAqcHR5cGUyID0gMCwg
Y29uc3QgVFR5cGUgKnB0eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLCBjb25zdCBU
VHlwZSAqcHR5cGU1ID0gMCkKICAgICB7CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW4o
bmFtZSk7CiAgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCAiIiwgcnZhbHVlLCBuYW1l
LCBwdHlwZTEsIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CiAgICAgfQogCkBAIC00
MDUsNiArNDM5LDggQEAKICAgICB7CiAgICAgICAgIGlmICghU3VwcG9ydHNQcmVjaXNpb24odHlw
ZS50eXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHR5cGUudHlw
ZSA9PSBFYnRVSW50KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gRVNTTCAzLjAwLjQg
c2VjdGlvbiA0LjUuNAogICAgICAgICBpZiAodHlwZS5pc0FnZ3JlZ2F0ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAvLyBOb3QgYWxsb3dlZCB0byBzZXQgZm9yIGFnZ3JlZ2F0ZSB0eXBl
cwogICAgICAgICBpbnQgaW5kZXhPZkxhc3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8aW50PihwcmVj
aXNpb25TdGFjay5zaXplKCkpIC0gMTsKQEAgLTQ0MSwxNiArNDc3LDI5IEBACiAgICAgICAgIHJl
dHVybiArK3VuaXF1ZUlkQ291bnRlcjsKICAgICB9CiAKKyAgICBib29sIGhhc1VubWFuZ2xlZEJ1
aWx0SW4oY29uc3QgY2hhciAqbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtVW5tYW5nbGVk
QnVpbHRpbk5hbWVzLmNvdW50KHN0ZDo6c3RyaW5nKG5hbWUpKSA+IDA7CisgICAgfQorCiAgIHBy
aXZhdGU6CiAgICAgRVN5bWJvbExldmVsIGN1cnJlbnRMZXZlbCgpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RVN5bWJvbExldmVsPih0YWJsZS5zaXplKCkgLSAxKTsK
ICAgICB9CiAKKyAgICAvLyBVc2VkIHRvIGluc2VydCB1bm1hbmdsZWQgZnVuY3Rpb25zIHRvIGNo
ZWNrIHJlZGVjbGFyYXRpb24gb2YgYnVpbHQtaW5zIGluIEVTU0wgMy4wMC4KKyAgICB2b2lkIGlu
c2VydFVubWFuZ2xlZEJ1aWx0SW4oY29uc3QgY2hhciAqbmFtZSkKKyAgICB7CisgICAgICAgIG1V
bm1hbmdsZWRCdWlsdGluTmFtZXMuaW5zZXJ0KHN0ZDo6c3RyaW5nKG5hbWUpKTsKKyAgICB9CisK
ICAgICBzdGQ6OnZlY3RvcjxUU3ltYm9sVGFibGVMZXZlbCAqPiB0YWJsZTsKICAgICB0eXBlZGVm
IFRNYXA8VEJhc2ljVHlwZSwgVFByZWNpc2lvbj4gUHJlY2lzaW9uU3RhY2tMZXZlbDsKICAgICBz
dGQ6OnZlY3RvcjwgUHJlY2lzaW9uU3RhY2tMZXZlbCAqPiBwcmVjaXNpb25TdGFjazsKIAorICAg
IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtVW5tYW5nbGVkQnVpbHRpbk5hbWVzOworCiAgICAgc3Rk
OjpzZXQ8c3RkOjpzdHJpbmc+IG1JbnZhcmlhbnRWYXJ5aW5nczsKICAgICBib29sIG1HbG9iYWxJ
bnZhcmlhbnQ7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcg
QEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3JHTFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9u
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lv
bi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5oIgogI2luY2x1
ZGUgImFuZ2xlX2dsLmgiCiAKQEAgLTE5LDE2ICsyMCwxOCBAQAogdm9pZCBUcmFuc2xhdG9yRVNT
TDo6aW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpl
bXUsIGludCBjb21waWxlT3B0aW9ucykKIHsKICAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9F
TVVMQVRFX0JVSUxUX0lOX0ZVTkNUSU9OUykKLSAgICAgICAgSW5pdEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yRm9yR0xTTChlbXUsIGdldFNoYWRlclR5cGUoKSk7CisgICAgeworICAgICAgICBJbml0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoZW11LCBnZXRTaGFkZXJU
eXBlKCkpOworICAgIH0KIH0KIAogdm9pZCBUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKFRJbnRl
cm1Ob2RlICpyb290LCBpbnQpIHsKICAgICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gZ2V0SW5mb1Np
bmsoKS5vYmo7CiAKLSAgICBpbnQgc2hhZGVyVmVyc2lvbiA9IGdldFNoYWRlclZlcnNpb24oKTsK
LSAgICBpZiAoc2hhZGVyVmVyc2lvbiA+IDEwMCkKKyAgICBpbnQgc2hhZGVyVmVyID0gZ2V0U2hh
ZGVyVmVyc2lvbigpOworICAgIGlmIChzaGFkZXJWZXIgPiAxMDApCiAgICAgewotICAgICAgICBz
aW5rIDw8ICIjdmVyc2lvbiAiIDw8IHNoYWRlclZlcnNpb24gPDwgIiBlc1xuIjsKKyAgICAgICAg
c2luayA8PCAiI3ZlcnNpb24gIiA8PCBzaGFkZXJWZXIgPDwgIiBlc1xuIjsKICAgICB9CiAKICAg
ICB3cml0ZVByYWdtYSgpOwpAQCAtNDAsMTIgKzQzLDE0IEBACiAKICAgICBpZiAocHJlY2lzaW9u
RW11bGF0aW9uKQogICAgIHsKLSAgICAgICAgRW11bGF0ZVByZWNpc2lvbiBlbXVsYXRlUHJlY2lz
aW9uOworICAgICAgICBFbXVsYXRlUHJlY2lzaW9uIGVtdWxhdGVQcmVjaXNpb24oZ2V0U3ltYm9s
VGFibGUoKSwgc2hhZGVyVmVyKTsKICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJmVtdWxhdGVQcmVj
aXNpb24pOwogICAgICAgICBlbXVsYXRlUHJlY2lzaW9uLnVwZGF0ZVRyZWUoKTsKICAgICAgICAg
ZW11bGF0ZVByZWNpc2lvbi53cml0ZUVtdWxhdGlvbkhlbHBlcnMoc2luaywgU0hfRVNTTF9PVVRQ
VVQpOwogICAgIH0KIAorICAgIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKHJvb3QsIGdldFRlbXBv
cmFyeUluZGV4KCkpOworCiAgICAgLy8gV3JpdGUgZW11bGF0ZWQgYnVpbHQtaW4gZnVuY3Rpb25z
IGlmIG5lZWRlZC4KICAgICBpZiAoIWdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkuSXNPdXRw
dXRFbXB0eSgpKQogICAgIHsKQEAgLTcxLDEzICs3Niw4IEBACiAgICAgZ2V0QXJyYXlCb3VuZHND
bGFtcGVyKCkuT3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRlZmluaXRpb24oc2luayk7CiAKICAgICAv
LyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KLSAgICBUT3V0cHV0RVNTTCBvdXRwdXRFU1NMKHNp
bmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJh
dGVneSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SGFzaEZ1bmN0aW9uKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROYW1lTWFwKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRTeW1ib2xUYWJsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2hhZGVyVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbkVtdWxh
dGlvbik7CisgICAgVE91dHB1dEVTU0wgb3V0cHV0RVNTTChzaW5rLCBnZXRBcnJheUluZGV4Q2xh
bXBpbmdTdHJhdGVneSgpLCBnZXRIYXNoRnVuY3Rpb24oKSwgZ2V0TmFtZU1hcCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0U3ltYm9sVGFibGUoKSwgc2hhZGVyVmVyLCBwcmVjaXNp
b25FbXVsYXRpb24pOwogICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRFU1NMKTsKIH0KIApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckVTU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
RVNTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNyw3ICsxNyw3IEBACiAgIHByb3RlY3RlZDoKICAg
ICB2b2lkIGluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ciAqZW11LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgaW50IGNvbXBpbGVPcHRpb25zKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgaW50IGNvbXBpbGVPcHRp
b25zKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVFeHRlbnNpb25CZWhh
dmlvcigpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmNwcAkocmV2aXNp
b24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDUzICs5LDEwIEBA
CiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0J1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZVByZWNpc2lvbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRXh0
ZW5zaW9uR0xTTC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuaCIKIAotbmFtZXNw
YWNlCi17Ci0KLS8vIFRvIHNlYXJjaCBmb3Igd2hhdCBvdXRwdXQgdmFyaWFibGVzIGFyZSB1c2Vk
IGluIGEgZnJhZ21lbnQgc2hhZGVyLgotLy8gV2UgaGFuZGxlIGdsX0ZyYWdDb2xvciBhbmQgZ2xf
RnJhZ0RhdGEgYXQgdGhlIG1vbWVudC4KLWNsYXNzIFRGcmFnbWVudE91dFNlYXJjaGVyIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKLXsKLSAgcHVibGljOgotICAgIFRGcmFnbWVudE91dFNlYXJj
aGVyKCkKLSAgICAgICAgOiBtVXNlc0dsRnJhZ0NvbG9yKGZhbHNlKSwKLSAgICAgICAgICBtVXNl
c0dsRnJhZ0RhdGEoZmFsc2UpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgdXNlc0dsRnJhZ0Nv
bG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtVXNlc0dsRnJhZ0NvbG9yOwotICAg
IH0KLQotICAgIGJvb2wgdXNlc0dsRnJhZ0RhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1Vc2VzR2xGcmFnRGF0YTsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgaWYgKG5vZGUtPmdldFN5bWJvbCgpID09ICJnbF9GcmFnQ29sb3IiKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtVXNlc0dsRnJhZ0NvbG9yID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChub2RlLT5nZXRTeW1ib2woKSA9PSAiZ2xfRnJhZ0RhdGEiKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtVXNlc0dsRnJhZ0RhdGEgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfQot
Ci0gIHByaXZhdGU6Ci0gICAgYm9vbCBtVXNlc0dsRnJhZ0NvbG9yOwotICAgIGJvb2wgbVVzZXNH
bEZyYWdEYXRhOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGFub255bW91cwotCiBUcmFuc2xhdG9y
R0xTTDo6VHJhbnNsYXRvckdMU0woc2g6OkdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKQEAgLTY1LDEwICsyMiwxNiBAQAogdm9pZCBU
cmFuc2xhdG9yR0xTTDo6aW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yICplbXUsIGludCBjb21waWxlT3B0aW9ucykKIHsKICAgICBpZiAoY29tcGlsZU9w
dGlvbnMgJiBTSF9FTVVMQVRFX0JVSUxUX0lOX0ZVTkNUSU9OUykKLSAgICAgICAgSW5pdEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTChlbXUsIGdldFNoYWRlclR5cGUoKSk7CisgICAgewor
ICAgICAgICBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoZW11
LCBnZXRTaGFkZXJUeXBlKCkpOworICAgIH0KKworICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbiA9
IFNoYWRlck91dHB1dFR5cGVUb0dMU0xWZXJzaW9uKGdldE91dHB1dFR5cGUoKSk7CisgICAgSW5p
dEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTE1pc3NpbmdGdW5jdGlvbnMoZW11LCBnZXRT
aGFkZXJUeXBlKCksIHRhcmdldEdMU0xWZXJzaW9uKTsKIH0KIAotdm9pZCBUcmFuc2xhdG9yR0xT
TDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBpbnQpIHsKK3ZvaWQgVHJhbnNsYXRvckdM
U0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgaW50IGNvbXBpbGVPcHRpb25zKQorewog
ICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKIAogICAgIC8vIFdy
aXRlIEdMU0wgdmVyc2lvbi4KQEAgLTc3LDEzICs0MCwxMyBAQAogICAgIHdyaXRlUHJhZ21hKCk7
CiAKICAgICAvLyBXcml0ZSBleHRlbnNpb24gYmVoYXZpb3VyIGFzIG5lZWRlZAotICAgIHdyaXRl
RXh0ZW5zaW9uQmVoYXZpb3IoKTsKKyAgICB3cml0ZUV4dGVuc2lvbkJlaGF2aW9yKHJvb3QpOwog
CiAgICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1
Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOwog
CiAgICAgaWYgKHByZWNpc2lvbkVtdWxhdGlvbikKICAgICB7Ci0gICAgICAgIEVtdWxhdGVQcmVj
aXNpb24gZW11bGF0ZVByZWNpc2lvbjsKKyAgICAgICAgRW11bGF0ZVByZWNpc2lvbiBlbXVsYXRl
UHJlY2lzaW9uKGdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7CiAgICAgICAg
IHJvb3QtPnRyYXZlcnNlKCZlbXVsYXRlUHJlY2lzaW9uKTsKICAgICAgICAgZW11bGF0ZVByZWNp
c2lvbi51cGRhdGVUcmVlKCk7CiAgICAgICAgIGVtdWxhdGVQcmVjaXNpb24ud3JpdGVFbXVsYXRp
b25IZWxwZXJzKHNpbmssIGdldE91dHB1dFR5cGUoKSk7CkBAIC0xMDMsMTkgKzY2LDcwIEBACiAK
ICAgICAvLyBEZWNsYXJlIGdsX0ZyYWdDb2xvciBhbmQgZ2xGcmFnRGF0YSBhcyB3ZWJnbF9GcmFn
Q29sb3IgYW5kIHdlYmdsX0ZyYWdEYXRhCiAgICAgLy8gaWYgaXQncyBjb3JlIHByb2ZpbGUgc2hh
ZGVycyBhbmQgdGhleSBhcmUgdXNlZC4KLSAgICBpZiAoZ2V0U2hhZGVyVHlwZSgpID09IEdMX0ZS
QUdNRU5UX1NIQURFUiAmJiBJc0dMU0wxMzBPck5ld2VyKGdldE91dHB1dFR5cGUoKSkpCisgICAg
aWYgKGdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewotICAgICAg
ICBURnJhZ21lbnRPdXRTZWFyY2hlciBzZWFyY2hlcjsKLSAgICAgICAgcm9vdC0+dHJhdmVyc2Uo
JnNlYXJjaGVyKTsKLSAgICAgICAgQVNTRVJUKCEoc2VhcmNoZXIudXNlc0dsRnJhZ0RhdGEoKSAm
JiBzZWFyY2hlci51c2VzR2xGcmFnQ29sb3IoKSkpOwotICAgICAgICBpZiAoc2VhcmNoZXIudXNl
c0dsRnJhZ0NvbG9yKCkpCisgICAgICAgIGNvbnN0IGJvb2wgbWF5SGF2ZUVTU0wxU2Vjb25kYXJ5
T3V0cHV0cyA9CisgICAgICAgICAgICBJc0V4dGVuc2lvbkVuYWJsZWQoZ2V0RXh0ZW5zaW9uQmVo
YXZpb3IoKSwgIkdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkIikgJiYKKyAgICAgICAgICAgIGdl
dFNoYWRlclZlcnNpb24oKSA9PSAxMDA7CisgICAgICAgIGNvbnN0IGJvb2wgZGVjbGFyZUdMRnJh
Z21lbnRPdXRwdXRzID0gSXNHTFNMMTMwT3JOZXdlcihnZXRPdXRwdXRUeXBlKCkpOworCisgICAg
ICAgIGJvb2wgaGFzR0xGcmFnQ29sb3IgICAgICAgICAgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBo
YXNHTEZyYWdEYXRhICAgICAgICAgICA9IGZhbHNlOworICAgICAgICBib29sIGhhc0dMU2Vjb25k
YXJ5RnJhZ0NvbG9yID0gZmFsc2U7CisgICAgICAgIGJvb2wgaGFzR0xTZWNvbmRhcnlGcmFnRGF0
YSAgPSBmYWxzZTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJm91dHB1dFZhciA6IG91dHB1
dFZhcmlhYmxlcykKICAgICAgICAgeworICAgICAgICAgICAgaWYgKGRlY2xhcmVHTEZyYWdtZW50
T3V0cHV0cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAob3V0cHV0VmFyLm5h
bWUgPT0gImdsX0ZyYWdDb2xvciIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoIWhhc0dMRnJhZ0NvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgaGFzR0xG
cmFnQ29sb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3V0cHV0VmFyLm5hbWUgPT0gImds
X0ZyYWdEYXRhIikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VCghaGFzR0xGcmFnRGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGhhc0dMRnJhZ0RhdGEgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWF5SGF2ZUVTU0wxU2Vjb25kYXJ5T3V0cHV0
cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAob3V0cHV0VmFyLm5hbWUgPT0g
ImdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoIWhhc0dMU2Vjb25kYXJ5RnJhZ0NvbG9yKTsKKyAgICAgICAgICAg
ICAgICAgICAgaGFzR0xTZWNvbmRhcnlGcmFnQ29sb3IgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAob3V0cHV0VmFyLm5hbWUgPT0gImdsX1NlY29uZGFyeUZyYWdEYXRhRVhUIikKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghaGFzR0xTZWNvbmRhcnlGcmFn
RGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGhhc0dMU2Vjb25kYXJ5RnJhZ0RhdGEgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCEoKGhhc0dMRnJhZ0NvbG9yIHx8
IGhhc0dMU2Vjb25kYXJ5RnJhZ0NvbG9yKSAmJgorICAgICAgICAgICAgICAgICAoaGFzR0xGcmFn
RGF0YSB8fCBoYXNHTFNlY29uZGFyeUZyYWdEYXRhKSkpOworICAgICAgICBpZiAoaGFzR0xGcmFn
Q29sb3IpCisgICAgICAgIHsKICAgICAgICAgICAgIHNpbmsgPDwgIm91dCB2ZWM0IHdlYmdsX0Zy
YWdDb2xvcjtcbiI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNlYXJjaGVyLnVzZXNHbEZyYWdE
YXRhKCkpCisgICAgICAgIGlmIChoYXNHTEZyYWdEYXRhKQogICAgICAgICB7CiAgICAgICAgICAg
ICBzaW5rIDw8ICJvdXQgdmVjNCB3ZWJnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc107XG4i
OwogICAgICAgICB9CisgICAgICAgIGlmIChoYXNHTFNlY29uZGFyeUZyYWdDb2xvcikKKyAgICAg
ICAgeworICAgICAgICAgICAgc2luayA8PCAib3V0IHZlYzQgYW5nbGVfU2Vjb25kYXJ5RnJhZ0Nv
bG9yO1xuIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGFzR0xTZWNvbmRhcnlGcmFnRGF0YSkK
KyAgICAgICAgeworICAgICAgICAgICAgc2luayA8PCAib3V0IHZlYzQgYW5nbGVfU2Vjb25kYXJ5
RnJhZ0RhdGFbIiA8PCBnZXRSZXNvdXJjZXMoKS5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMKKyAg
ICAgICAgICAgICAgICAgPDwgIl07XG4iOworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gV3Jp
dGUgdHJhbnNsYXRlZCBzaGFkZXIuCkBAIC0xNDMsMTkgKzE1Nyw0MSBAQAogICAgIH0KIH0KIAot
dm9pZCBUcmFuc2xhdG9yR0xTTDo6d3JpdGVFeHRlbnNpb25CZWhhdmlvcigpIHsKK3ZvaWQgVHJh
bnNsYXRvckdMU0w6OndyaXRlRXh0ZW5zaW9uQmVoYXZpb3IoVEludGVybU5vZGUgKnJvb3QpCit7
CiAgICAgVEluZm9TaW5rQmFzZSYgc2luayA9IGdldEluZm9TaW5rKCkub2JqOwogICAgIGNvbnN0
IFRFeHRlbnNpb25CZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBnZXRFeHRlbnNpb25CZWhhdmlvcigp
OwotICAgIGZvciAoVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0
QmVoYXZpb3IuYmVnaW4oKTsKLSAgICAgICAgIGl0ZXIgIT0gZXh0QmVoYXZpb3IuZW5kKCk7ICsr
aXRlcikgewotICAgICAgICBpZiAoaXRlci0+c2Vjb25kID09IEVCaFVuZGVmaW5lZCkKKyAgICBm
b3IgKGNvbnN0IGF1dG8gJml0ZXIgOiBleHRCZWhhdmlvcikKKyAgICB7CisgICAgICAgIGlmIChp
dGVyLnNlY29uZCA9PSBFQmhVbmRlZmluZWQpCisgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CiAKICAgICAgICAgLy8gRm9yIEdMU0wgb3V0cHV0LCB3ZSBkb24ndCBu
ZWVkIHRvIGVtaXQgbW9zdCBleHRlbnNpb25zIGV4cGxpY2l0bHksCiAgICAgICAgIC8vIGJ1dCBz
b21lIHdlIG5lZWQgdG8gdHJhbnNsYXRlLgotICAgICAgICBpZiAoaXRlci0+Zmlyc3QgPT0gIkdM
X0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSB7Ci0gICAgICAgICAgICBzaW5rIDw8ICIjZXh0ZW5z
aW9uIEdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QgOiAiCi0gICAgICAgICAgICAgICAgIDw8IGdl
dEJlaGF2aW9yU3RyaW5nKGl0ZXItPnNlY29uZCkgPDwgIlxuIjsKKyAgICAgICAgaWYgKGl0ZXIu
Zmlyc3QgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKQorICAgICAgICB7CisgICAgICAg
ICAgICBzaW5rIDw8ICIjZXh0ZW5zaW9uIEdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QgOiAiIDw8
IGdldEJlaGF2aW9yU3RyaW5nKGl0ZXIuc2Vjb25kKQorICAgICAgICAgICAgICAgICA8PCAiXG4i
OwogICAgICAgICB9CiAgICAgfQorCisgICAgLy8gR0xTTCBFUyAzIGV4cGxpY2l0IGxvY2F0aW9u
IHF1YWxpZmllcnMgbmVlZCB0byB1c2UgYW4gZXh0ZW5zaW9uIGJlZm9yZSBHTFNMIDMzMAorICAg
IGlmIChnZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwICYmIGdldE91dHB1dFR5cGUoKSA8IFNIX0dM
U0xfMzMwX0NPUkVfT1VUUFVUKQorICAgIHsKKyAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBH
TF9BUkJfZXhwbGljaXRfYXR0cmliX2xvY2F0aW9uIDogcmVxdWlyZVxuIjsKKyAgICB9CisKKyAg
ICBURXh0ZW5zaW9uR0xTTCBleHRlbnNpb25HTFNMKGdldE91dHB1dFR5cGUoKSk7CisgICAgcm9v
dC0+dHJhdmVyc2UoJmV4dGVuc2lvbkdMU0wpOworCisgICAgZm9yIChjb25zdCBhdXRvICZleHQg
OiBleHRlbnNpb25HTFNMLmdldEVuYWJsZWRFeHRlbnNpb25zKCkpCisgICAgeworICAgICAgICBz
aW5rIDw8ICIjZXh0ZW5zaW9uICIgPDwgZXh0IDw8ICIgOiBlbmFibGVcbiI7CisgICAgfQorICAg
IGZvciAoY29uc3QgYXV0byAmZXh0IDogZXh0ZW5zaW9uR0xTTC5nZXRSZXF1aXJlZEV4dGVuc2lv
bnMoKSkKKyAgICB7CisgICAgICAgIHNpbmsgPDwgIiNleHRlbnNpb24gIiA8PCBleHQgPDwgIiA6
IHJlcXVpcmVcbiI7CisgICAgfQogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xT
TC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNywx
MSArMTcsMTEgQEAKICAgcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsIGludCBjb21waWxlT3B0aW9ucykg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290
LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIHZvaWQgdHJhbnNsYXRlKFRJbnRl
cm1Ob2RlICpyb290LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6
CiAgICAgdm9pZCB3cml0ZVZlcnNpb24oVEludGVybU5vZGUgKnJvb3QpOwotICAgIHZvaWQgd3Jp
dGVFeHRlbnNpb25CZWhhdmlvcigpOworICAgIHZvaWQgd3JpdGVFeHRlbnNpb25CZWhhdmlvcihU
SW50ZXJtTm9kZSAqcm9vdCk7CiB9OwogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1Jf
VFJBTlNMQVRPUkdMU0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5j
cHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw5
ICs4LDEyIEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFs
dWVUb091dFBhcmFtZXRlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0
SExTTC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4
aW5nLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0
aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9u
cy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlBcnJheUFzc2lnbm1l
bnQuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNS
ZXR1cm5pbmdBcnJheXMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNo
b3J0Q2lyY3VpdFRvSWYuaCIKIAogVHJhbnNsYXRvckhMU0w6OlRyYW5zbGF0b3JITFNMKHNoOjpH
TGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKICAg
ICA6IFRDb21waWxlcih0eXBlLCBzcGVjLCBvdXRwdXQpCkBAIC0yMiwxOCArMjUsMzMgQEAKICAg
ICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcyA9IGdldFJlc291cmNlcygpOwog
ICAgIGludCBudW1SZW5kZXJUYXJnZXRzID0gcmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPyBy
ZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgOiAxOwogCi0gICAgU2VwYXJhdGVBcnJheURlY2xhcmF0
aW9ucyhyb290KTsKKyAgICBTZXBhcmF0ZURlY2xhcmF0aW9ucyhyb290KTsKIAorICAgIC8vIE5v
dGUgdGhhdCBTZXBhcmF0ZURlY2xhcmF0aW9ucyBuZWVkcyB0byBiZSBydW4gYmVmb3JlIFVuZm9s
ZFNob3J0Q2lyY3VpdFRvSWYuCisgICAgVW5mb2xkU2hvcnRDaXJjdWl0VG9JZihyb290LCBnZXRU
ZW1wb3JhcnlJbmRleCgpKTsKKworICAgIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJh
eXMocm9vdCwgZ2V0VGVtcG9yYXJ5SW5kZXgoKSk7CisKICAgICAvLyBOb3RlIHRoYXQgU2VwYXJh
dGVEZWNsYXJhdGlvbnMgbmVlZHMgdG8gYmUgcnVuIGJlZm9yZSBTZXBhcmF0ZUFycmF5SW5pdGlh
bGl6YXRpb24uCiAgICAgU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uKHJvb3QpOwogCi0gICAg
U2ltcGxpZnlBcnJheUFzc2lnbm1lbnQgc2ltcGxpZnk7Ci0gICAgcm9vdC0+dHJhdmVyc2UoJnNp
bXBsaWZ5KTsKLQogICAgIC8vIEhMU0wgZG9lc24ndCBzdXBwb3J0IGFycmF5cyBhcyByZXR1cm4g
dmFsdWVzLCB3ZSdsbCBuZWVkIHRvIG1ha2UgZnVuY3Rpb25zIHRoYXQgaGF2ZSBhbiBhcnJheQog
ICAgIC8vIGFzIGEgcmV0dXJuIHZhbHVlIHRvIHVzZSBhbiBvdXQgcGFyYW1ldGVyIHRvIHRyYW5z
ZmVyIHRoZSBhcnJheSBkYXRhIGluc3RlYWQuCi0gICAgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFy
YW1ldGVyKHJvb3QpOworICAgIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlcihyb290LCBn
ZXRUZW1wb3JhcnlJbmRleCgpKTsKIAorICAgIGlmICghc2hvdWxkUnVuTG9vcEFuZEluZGV4aW5n
VmFsaWRhdGlvbihjb21waWxlT3B0aW9ucykpCisgICAgeworICAgICAgICAvLyBITFNMIGRvZXNu
J3Qgc3VwcG9ydCBkeW5hbWljIGluZGV4aW5nIG9mIHZlY3RvcnMgYW5kIG1hdHJpY2VzLgorICAg
ICAgICBSZW1vdmVEeW5hbWljSW5kZXhpbmcocm9vdCwgZ2V0VGVtcG9yYXJ5SW5kZXgoKSwgZ2V0
U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsKKyAgICB9CisKKyAgICAvLyBXb3Jr
IGFyb3VuZCBEM0Q5IGJ1ZyB0aGF0IHdvdWxkIG1hbmlmZXN0IGluIHZlcnRleCBzaGFkZXJzIHdp
dGggc2VsZWN0aW9uIGJsb2NrcyB3aGljaAorICAgIC8vIHVzZSBhIHZlcnRleCBhdHRyaWJ1dGUg
YXMgYSBjb25kaXRpb24sIGFuZCBzb21lIHJlbGF0ZWQgY29tcHV0YXRpb24gaW4gdGhlIGVsc2Ug
YmxvY2suCisgICAgaWYgKGdldE91dHB1dFR5cGUoKSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQgJiYg
Z2V0U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBzaDo6
UmV3cml0ZUVsc2VCbG9ja3Mocm9vdCwgZ2V0VGVtcG9yYXJ5SW5kZXgoKSk7CisgICAgfQorCiAg
ICAgc2g6Ok91dHB1dEhMU0wgb3V0cHV0SExTTChnZXRTaGFkZXJUeXBlKCksIGdldFNoYWRlclZl
cnNpb24oKSwgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSwKICAgICAgICAgZ2V0U291cmNlUGF0aCgp
LCBnZXRPdXRwdXRUeXBlKCksIG51bVJlbmRlclRhcmdldHMsIGdldFVuaWZvcm1zKCksIGNvbXBp
bGVPcHRpb25zKTsKIApAQCAtNTQsMTMgKzcyLDcgQEAKICAgICByZXR1cm4gbUludGVyZmFjZUJs
b2NrUmVnaXN0ZXJNYXAuZmluZChpbnRlcmZhY2VCbG9ja05hbWUpLT5zZWNvbmQ7CiB9CiAKLWJv
b2wgVHJhbnNsYXRvckhMU0w6Omhhc1VuaWZvcm0oY29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1O
YW1lKSBjb25zdAorY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKlRy
YW5zbGF0b3JITFNMOjpnZXRVbmlmb3JtUmVnaXN0ZXJNYXAoKSBjb25zdAogewotICAgIHJldHVy
biAobVVuaWZvcm1SZWdpc3Rlck1hcC5jb3VudCh1bmlmb3JtTmFtZSkgPiAwKTsKKyAgICByZXR1
cm4gJm1Vbmlmb3JtUmVnaXN0ZXJNYXA7CiB9Ci0KLXVuc2lnbmVkIGludCBUcmFuc2xhdG9ySExT
TDo6Z2V0VW5pZm9ybVJlZ2lzdGVyKGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFtZSkgY29u
c3QKLXsKLSAgICBBU1NFUlQoaGFzVW5pZm9ybSh1bmlmb3JtTmFtZSkpOwotICAgIHJldHVybiBt
VW5pZm9ybVJlZ2lzdGVyTWFwLmZpbmQodW5pZm9ybU5hbWUpLT5zZWNvbmQ7Ci19CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
SExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNM
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDE3ICsxMywyMSBAQAogewogICBwdWJsaWM6CiAgICAg
VHJhbnNsYXRvckhMU0woc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFk
ZXJPdXRwdXQgb3V0cHV0KTsKLSAgICB2aXJ0dWFsIFRyYW5zbGF0b3JITFNMICpnZXRBc1RyYW5z
bGF0b3JITFNMKCkgeyByZXR1cm4gdGhpczsgfQorI2lmZGVmIEFOR0xFX0VOQUJMRV9ITFNMCisg
ICAgVHJhbnNsYXRvckhMU0wgKmdldEFzVHJhbnNsYXRvckhMU0woKSBvdmVycmlkZSB7IHJldHVy
biB0aGlzOyB9CisjZW5kaWYKIAogICAgIGJvb2wgaGFzSW50ZXJmYWNlQmxvY2soY29uc3Qgc3Rk
OjpzdHJpbmcgJmludGVyZmFjZUJsb2NrTmFtZSkgY29uc3Q7CiAgICAgdW5zaWduZWQgaW50IGdl
dEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29uc3Qgc3RkOjpzdHJpbmcgJmludGVyZmFjZUJsb2Nr
TmFtZSkgY29uc3Q7CiAKLSAgICBib29sIGhhc1VuaWZvcm0oY29uc3Qgc3RkOjpzdHJpbmcgJnVu
aWZvcm1OYW1lKSBjb25zdDsKLSAgICB1bnNpZ25lZCBpbnQgZ2V0VW5pZm9ybVJlZ2lzdGVyKGNv
bnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFtZSkgY29uc3Q7CisgICAgY29uc3Qgc3RkOjptYXA8
c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKmdldFVuaWZvcm1SZWdpc3Rlck1hcCgpIGNvbnN0
OwogCiAgIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2Rl
ICpyb290LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOworICAgIHZvaWQgdHJhbnNsYXRl
KFRJbnRlcm1Ob2RlICpyb290LCBpbnQgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRlOwogCisgICAg
Ly8gY29sbGVjdFZhcmlhYmxlcyBuZWVkcyB0byBiZSBydW4gYWx3YXlzIHNvIHJlZ2lzdGVycyBj
YW4gYmUgYXNzaWduZWQuCisgICAgYm9vbCBzaG91bGRDb2xsZWN0VmFyaWFibGVzKGludCBjb21w
aWxlT3B0aW9ucykgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIHVuc2lnbmVkIGludD4gbUludGVyZmFjZUJsb2NrUmVnaXN0ZXJNYXA7CiAgICAg
c3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gbVVuaWZvcm1SZWdpc3Rlck1hcDsK
IH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UeXBlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTksNiArOSw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVHlwZXMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5r
LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2xpbWl0cz4KQEAgLTQ2LDkgKzQ4LDkgQEAKIH0K
IAogVFR5cGU6OlRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZwKQotICAgIDogdHlwZShwLnR5cGUp
LCBwcmVjaXNpb24ocC5wcmVjaXNpb24pLCBxdWFsaWZpZXIocC5xdWFsaWZpZXIpLCBsYXlvdXRR
dWFsaWZpZXIocC5sYXlvdXRRdWFsaWZpZXIpLAotICAgICAgcHJpbWFyeVNpemUocC5wcmltYXJ5
U2l6ZSksIHNlY29uZGFyeVNpemUocC5zZWNvbmRhcnlTaXplKSwgYXJyYXkocC5hcnJheSksIGFy
cmF5U2l6ZShwLmFycmF5U2l6ZSksCi0gICAgICBpbnRlcmZhY2VCbG9jaygwKSwgc3RydWN0dXJl
KDApCisgICAgOiB0eXBlKHAudHlwZSksIHByZWNpc2lvbihwLnByZWNpc2lvbiksIHF1YWxpZmll
cihwLnF1YWxpZmllciksIGludmFyaWFudChwLmludmFyaWFudCksCisgICAgICBsYXlvdXRRdWFs
aWZpZXIocC5sYXlvdXRRdWFsaWZpZXIpLCBwcmltYXJ5U2l6ZShwLnByaW1hcnlTaXplKSwgc2Vj
b25kYXJ5U2l6ZShwLnNlY29uZGFyeVNpemUpLAorICAgICAgYXJyYXkocC5hcnJheSksIGFycmF5
U2l6ZShwLmFycmF5U2l6ZSksIGludGVyZmFjZUJsb2NrKDApLCBzdHJ1Y3R1cmUoMCkKIHsKICAg
ICBpZiAocC51c2VyRGVmKQogICAgICAgICBzdHJ1Y3R1cmUgPSBwLnVzZXJEZWYtPmdldFN0cnVj
dCgpOwpAQCAtNTksNiArNjEsMjcgQEAKICAgICByZXR1cm4gKHVuaXF1ZUlkKCkgPT0gb3RoZXIu
dW5pcXVlSWQoKSk7CiB9CiAKK1RTdHJpbmcgVFR5cGU6OmdldENvbXBsZXRlU3RyaW5nKCkgY29u
c3QKK3sKKyAgICBUU3RyaW5nU3RyZWFtIHN0cmVhbTsKKworICAgIGlmIChpbnZhcmlhbnQpCisg
ICAgICAgIHN0cmVhbSA8PCAiaW52YXJpYW50ICI7CisgICAgaWYgKHF1YWxpZmllciAhPSBFdnFU
ZW1wb3JhcnkgJiYgcXVhbGlmaWVyICE9IEV2cUdsb2JhbCkKKyAgICAgICAgc3RyZWFtIDw8IGdl
dFF1YWxpZmllclN0cmluZygpIDw8ICIgIjsKKyAgICBpZiAocHJlY2lzaW9uICE9IEVicFVuZGVm
aW5lZCkKKyAgICAgICAgc3RyZWFtIDw8IGdldFByZWNpc2lvblN0cmluZygpIDw8ICIgIjsKKyAg
ICBpZiAoYXJyYXkpCisgICAgICAgIHN0cmVhbSA8PCAiYXJyYXlbIiA8PCBnZXRBcnJheVNpemUo
KSA8PCAiXSBvZiAiOworICAgIGlmIChpc01hdHJpeCgpKQorICAgICAgICBzdHJlYW0gPDwgZ2V0
Q29scygpIDw8ICJYIiA8PCBnZXRSb3dzKCkgPDwgIiBtYXRyaXggb2YgIjsKKyAgICBlbHNlIGlm
IChpc1ZlY3RvcigpKQorICAgICAgICBzdHJlYW0gPDwgZ2V0Tm9taW5hbFNpemUoKSA8PCAiLWNv
bXBvbmVudCB2ZWN0b3Igb2YgIjsKKworICAgIHN0cmVhbSA8PCBnZXRCYXNpY1N0cmluZygpOwor
ICAgIHJldHVybiBzdHJlYW0uc3RyKCk7Cit9CisKIC8vCiAvLyBSZWN1cnNpdmVseSBnZW5lcmF0
ZSBtYW5nbGVkIG5hbWVzLgogLy8KQEAgLTIwMSw2ICsyMjQsMTcgQEAKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK2Jvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNUeXBlKFRCYXNpY1R5cGUgdHlwZSkg
Y29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytp
KQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9ICgqbUZpZWxkcylbaV0t
PnR5cGUoKTsKKyAgICAgICAgaWYgKGZpZWxkVHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gdHlwZSB8
fCBmaWVsZFR5cGUtPmlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUodHlwZSkpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIFRTdHJ1
Y3R1cmU6OmNvbnRhaW5zU2FtcGxlcnMoKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbUZpZWxkcy0+c2l6ZSgpOyArK2kpCkBAIC0yMTIsOSArMjQ2LDc5IEBACiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1UU3RyaW5nIFRGaWVsZExpc3RDb2xsZWN0aW9uOjpidWlsZE1hbmds
ZWROYW1lKCkgY29uc3QKK3ZvaWQgVFN0cnVjdHVyZTo6Y3JlYXRlU2FtcGxlclN5bWJvbHMoY29u
c3QgVFN0cmluZyAmc3RydWN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyAmc3RydWN0QVBJTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGFycmF5T2ZTdHJ1Y3RzU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZlY3RvcjxUSW50ZXJtU3ltYm9sICo+ICpv
dXRwdXRTeW1ib2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTWFw
PFRJbnRlcm1TeW1ib2wgKiwgVFN0cmluZz4gKm91dHB1dFN5bWJvbHNUb0FQSU5hbWVzKSBjb25z
dAogewotICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUobWFuZ2xlZE5hbWVQcmVmaXgoKSk7CisgICAg
Zm9yIChhdXRvICZmaWVsZCA6ICptRmllbGRzKQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUg
KmZpZWxkVHlwZSA9IGZpZWxkLT50eXBlKCk7CisgICAgICAgIGlmIChJc1NhbXBsZXIoZmllbGRU
eXBlLT5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhcnJheU9m
U3RydWN0c1NpemUgPiAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50
IGFycmF5SW5kZXggPSAwOyBhcnJheUluZGV4IDwgYXJyYXlPZlN0cnVjdHNTaXplOyArK2FycmF5
SW5kZXgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBUU3RyaW5nU3Ry
ZWFtIG5hbWU7CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPDwgc3RydWN0TmFtZSA8PCAiXyIg
PDwgYXJyYXlJbmRleCA8PCAiXyIgPDwgZmllbGQtPm5hbWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZS5zdHIo
KSwgKmZpZWxkVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dFN5bWJvbHMtPnB1c2hf
YmFjayhzeW1ib2wpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRTeW1ib2xzVG9B
UElOYW1lcykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
VFN0cmluZ1N0cmVhbSBhcGlOYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgYXBpTmFtZSA8
PCBzdHJ1Y3RBUElOYW1lIDw8ICJbIiA8PCBhcnJheUluZGV4IDw8ICJdLiIgPDwgZmllbGQtPm5h
bWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICgqb3V0cHV0U3ltYm9sc1RvQVBJTmFtZXMp
W3N5bWJvbF0gPSBhcGlOYW1lLnN0cigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIFRTdHJpbmcgc3ltYm9sTmFtZSAgICA9IHN0cnVjdE5hbWUgKyAi
XyIgKyBmaWVsZC0+bmFtZSgpOworICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJv
bCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIHN5bWJvbE5hbWUsICpmaWVsZFR5cGUpOworICAgICAg
ICAgICAgICAgIG91dHB1dFN5bWJvbHMtPnB1c2hfYmFjayhzeW1ib2wpOworCisgICAgICAgICAg
ICAgICAgaWYgKG91dHB1dFN5bWJvbHNUb0FQSU5hbWVzKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgVFN0cmluZyBhcGlOYW1lID0gc3RydWN0QVBJTmFtZSArICIuIiAr
IGZpZWxkLT5uYW1lKCk7CisgICAgICAgICAgICAgICAgICAgICgqb3V0cHV0U3ltYm9sc1RvQVBJ
TmFtZXMpW3N5bWJvbF0gPSBhcGlOYW1lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmaWVsZFR5cGUtPmlzU3RydWN0dXJlQ29u
dGFpbmluZ1NhbXBsZXJzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBuZXN0ZWRBcnJh
eU9mU3RydWN0c1NpemUgPSBmaWVsZFR5cGUtPmlzQXJyYXkoKSA/IGZpZWxkVHlwZS0+Z2V0QXJy
YXlTaXplKCkgOiAwOworICAgICAgICAgICAgaWYgKGFycmF5T2ZTdHJ1Y3RzU2l6ZSA+IDApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgYXJyYXlJbmRleCA9IDA7IGFy
cmF5SW5kZXggPCBhcnJheU9mU3RydWN0c1NpemU7ICsrYXJyYXlJbmRleCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRTdHJpbmdTdHJlYW0gZmllbGROYW1lOworICAg
ICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPDwgc3RydWN0TmFtZSA8PCAiXyIgPDwgYXJyYXlJ
bmRleCA8PCAiXyIgPDwgZmllbGQtPm5hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgVFN0cmlu
Z1N0cmVhbSBmaWVsZEFQSU5hbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRTeW1i
b2xzVG9BUElOYW1lcykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZmllbGRBUElOYW1lIDw8IHN0cnVjdEFQSU5hbWUgPDwgIlsiIDw8IGFycmF5SW5kZXgg
PDwgIl0uIiA8PCBmaWVsZC0+bmFtZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGZpZWxkVHlwZS0+Y3JlYXRlU2FtcGxlclN5bWJvbHMoZmllbGROYW1lLnN0
cigpLCBmaWVsZEFQSU5hbWUuc3RyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmVzdGVkQXJyYXlPZlN0cnVjdHNTaXplLCBvdXRwdXRTeW1i
b2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dFN5bWJvbHNUb0FQSU5hbWVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmll
bGRUeXBlLT5jcmVhdGVTYW1wbGVyU3ltYm9scygKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0
TmFtZSArICJfIiArIGZpZWxkLT5uYW1lKCksIHN0cnVjdEFQSU5hbWUgKyAiLiIgKyBmaWVsZC0+
bmFtZSgpLAorICAgICAgICAgICAgICAgICAgICBuZXN0ZWRBcnJheU9mU3RydWN0c1NpemUsIG91
dHB1dFN5bWJvbHMsIG91dHB1dFN5bWJvbHNUb0FQSU5hbWVzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKworVFN0cmluZyBURmllbGRMaXN0Q29sbGVjdGlvbjo6YnVpbGRN
YW5nbGVkTmFtZShjb25zdCBUU3RyaW5nICZtYW5nbGVkTmFtZVByZWZpeCkgY29uc3QKK3sKKyAg
ICBUU3RyaW5nIG1hbmdsZWROYW1lKG1hbmdsZWROYW1lUHJlZml4KTsKICAgICBtYW5nbGVkTmFt
ZSArPSAqbU5hbWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7
ICsraSkKICAgICB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2LDYgKzE2LDcgQEAKIHN0cnVjdCBUUHVibGljVHlwZTsKIGNsYXNz
IFRUeXBlOwogY2xhc3MgVFN5bWJvbDsKK2NsYXNzIFRJbnRlcm1TeW1ib2w7CiAKIGNsYXNzIFRG
aWVsZCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewpAQCAtNzMsMTIgKzc0LDYgQEAKICAgICAgICAg
cmV0dXJuICptRmllbGRzOwogICAgIH0KIAotICAgIGNvbnN0IFRTdHJpbmcgJm1hbmdsZWROYW1l
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtTWFuZ2xlZE5hbWUuZW1wdHkoKSkKLSAgICAg
ICAgICAgIG1NYW5nbGVkTmFtZSA9IGJ1aWxkTWFuZ2xlZE5hbWUoKTsKLSAgICAgICAgcmV0dXJu
IG1NYW5nbGVkTmFtZTsKLSAgICB9CiAgICAgc2l6ZV90IG9iamVjdFNpemUoKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKG1PYmplY3RTaXplID09IDApCkBAIC05Myw5ICs4OCw4IEBACiAgICAg
ICAgICAgbU9iamVjdFNpemUoMCkKICAgICB7CiAgICAgfQotICAgIFRTdHJpbmcgYnVpbGRNYW5n
bGVkTmFtZSgpIGNvbnN0OworICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFtZShjb25zdCBUU3Ry
aW5nICZtYW5nbGVkTmFtZVByZWZpeCkgY29uc3Q7CiAgICAgc2l6ZV90IGNhbGN1bGF0ZU9iamVj
dFNpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFRTdHJpbmcgbWFuZ2xlZE5hbWVQcmVmaXgoKSBj
b25zdCA9IDA7CiAKICAgICBjb25zdCBUU3RyaW5nICptTmFtZTsKICAgICBURmllbGRMaXN0ICpt
RmllbGRzOwpAQCAtMTI0LDggKzExOCwxNSBAQAogICAgICAgICByZXR1cm4gbURlZXBlc3ROZXN0
aW5nOwogICAgIH0KICAgICBib29sIGNvbnRhaW5zQXJyYXlzKCkgY29uc3Q7CisgICAgYm9vbCBj
b250YWluc1R5cGUoVEJhc2ljVHlwZSB0KSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zU2FtcGxl
cnMoKSBjb25zdDsKIAorICAgIHZvaWQgY3JlYXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmlu
ZyAmc3RydWN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJp
bmcgJnN0cnVjdEFQSU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgYXJyYXlPZlN0cnVjdHNTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZl
Y3RvcjxUSW50ZXJtU3ltYm9sICo+ICpvdXRwdXRTeW1ib2xzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVE1hcDxUSW50ZXJtU3ltYm9sICosIFRTdHJpbmc+ICpvdXRwdXRTeW1ib2xz
VG9BUElOYW1lcykgY29uc3Q7CisKICAgICBib29sIGVxdWFscyhjb25zdCBUU3RydWN0dXJlICZv
dGhlcikgY29uc3Q7CiAKICAgICB2b2lkIHNldFVuaXF1ZUlkKGludCB1bmlxdWVJZCkKQEAgLTE0
OSw2ICsxNTAsMTMgQEAKICAgICAgICAgcmV0dXJuIG1BdEdsb2JhbFNjb3BlOwogICAgIH0KIAor
ICAgIGNvbnN0IFRTdHJpbmcgJm1hbmdsZWROYW1lKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChtTWFuZ2xlZE5hbWUuZW1wdHkoKSkKKyAgICAgICAgICAgIG1NYW5nbGVkTmFtZSA9IGJ1aWxk
TWFuZ2xlZE5hbWUoInN0cnVjdC0iKTsKKyAgICAgICAgcmV0dXJuIG1NYW5nbGVkTmFtZTsKKyAg
ICB9CisKICAgcHJpdmF0ZToKICAgICAvLyBUT0RPKHptbyk6IEZpbmQgYSB3YXkgdG8gZ2V0IHJp
ZCBvZiB0aGUgY29uc3RfY2FzdCBpbiBmdW5jdGlvbgogICAgIC8vIHNldE5hbWUoKS4gIEF0IHRo
ZSBtb21lbnQga2VlcCB0aGlzIGZ1bmN0aW9uIHByaXZhdGUgc28gb25seQpAQCAtMTYwLDEwICsx
NjgsNiBAQAogICAgICAgICAqbXV0YWJsZU5hbWUgPSBuYW1lOwogICAgIH0KIAotICAgIHZpcnR1
YWwgVFN0cmluZyBtYW5nbGVkTmFtZVByZWZpeCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gInN0cnVjdC0iOwotICAgIH0KICAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBj
b25zdDsKIAogICAgIG11dGFibGUgaW50IG1EZWVwZXN0TmVzdGluZzsKQEAgLTIwOSwxMyArMjEz
LDE0IEBACiAgICAgewogICAgICAgICByZXR1cm4gbU1hdHJpeFBhY2tpbmc7CiAgICAgfQotCi0g
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBUU3RyaW5nIG1hbmdsZWROYW1lUHJlZml4KCkgY29uc3QK
KyAgICBjb25zdCBUU3RyaW5nICZtYW5nbGVkTmFtZSgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gImlibG9jay0iOworICAgICAgICBpZiAobU1hbmdsZWROYW1lLmVtcHR5KCkpCisgICAg
ICAgICAgICBtTWFuZ2xlZE5hbWUgPSBidWlsZE1hbmdsZWROYW1lKCJpYmxvY2stIik7CisgICAg
ICAgIHJldHVybiBtTWFuZ2xlZE5hbWU7CiAgICAgfQogCisgIHByaXZhdGU6CiAgICAgY29uc3Qg
VFN0cmluZyAqbUluc3RhbmNlTmFtZTsgLy8gZm9yIGludGVyZmFjZSBibG9jayBpbnN0YW5jZSBu
YW1lcwogICAgIGludCBtQXJyYXlTaXplOyAvLyAwIGlmIG5vdCBhbiBhcnJheQogICAgIFRMYXlv
dXRCbG9ja1N0b3JhZ2UgbUJsb2NrU3RvcmFnZTsKQEAgLTIzMCwxMCArMjM1LDE0IEBACiAgIHB1
YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVFR5cGUoKQorICAg
ICAgICA6IHR5cGUoRWJ0Vm9pZCksIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLCBxdWFsaWZpZXIo
RXZxR2xvYmFsKSwgaW52YXJpYW50KGZhbHNlKSwKKyAgICAgICAgICBsYXlvdXRRdWFsaWZpZXIo
VExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAorICAgICAgICAgIHByaW1hcnlTaXplKDApLCBz
ZWNvbmRhcnlTaXplKDApLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwKKyAgICAgICAgICBp
bnRlcmZhY2VCbG9jayhudWxscHRyKSwgc3RydWN0dXJlKG51bGxwdHIpCiAgICAgewogICAgIH0K
ICAgICBUVHlwZShUQmFzaWNUeXBlIHQsIHVuc2lnbmVkIGNoYXIgcHMgPSAxLCB1bnNpZ25lZCBj
aGFyIHNzID0gMSkKLSAgICAgICAgOiB0eXBlKHQpLCBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwg
cXVhbGlmaWVyKEV2cUdsb2JhbCksCisgICAgICAgIDogdHlwZSh0KSwgcHJlY2lzaW9uKEVicFVu
ZGVmaW5lZCksIHF1YWxpZmllcihFdnFHbG9iYWwpLCBpbnZhcmlhbnQoZmFsc2UpLAogICAgICAg
ICAgIGxheW91dFF1YWxpZmllcihUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSksCiAgICAgICAg
ICAgcHJpbWFyeVNpemUocHMpLCBzZWNvbmRhcnlTaXplKHNzKSwgYXJyYXkoZmFsc2UpLCBhcnJh
eVNpemUoMCksCiAgICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksIHN0cnVjdHVyZSgwKQpAQCAt
MjQxLDcgKzI1MCw3IEBACiAgICAgfQogICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwgVFByZWNpc2lv
biBwLCBUUXVhbGlmaWVyIHEgPSBFdnFUZW1wb3JhcnksCiAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBwcyA9IDEsIHVuc2lnbmVkIGNoYXIgc3MgPSAxLCBib29sIGEgPSBmYWxzZSkKLSAgICAgICAg
OiB0eXBlKHQpLCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwKKyAgICAgICAgOiB0eXBlKHQp
LCBwcmVjaXNpb24ocCksIHF1YWxpZmllcihxKSwgaW52YXJpYW50KGZhbHNlKSwKICAgICAgICAg
ICBsYXlvdXRRdWFsaWZpZXIoVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAogICAgICAgICAg
IHByaW1hcnlTaXplKHBzKSwgc2Vjb25kYXJ5U2l6ZShzcyksIGFycmF5KGEpLCBhcnJheVNpemUo
MCksCiAgICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksIHN0cnVjdHVyZSgwKQpAQCAtMjQ5LDcg
KzI1OCw3IEBACiAgICAgfQogICAgIGV4cGxpY2l0IFRUeXBlKGNvbnN0IFRQdWJsaWNUeXBlICZw
KTsKICAgICBUVHlwZShUU3RydWN0dXJlICp1c2VyRGVmLCBUUHJlY2lzaW9uIHAgPSBFYnBVbmRl
ZmluZWQpCi0gICAgICAgIDogdHlwZShFYnRTdHJ1Y3QpLCBwcmVjaXNpb24ocCksIHF1YWxpZmll
cihFdnFUZW1wb3JhcnkpLAorICAgICAgICA6IHR5cGUoRWJ0U3RydWN0KSwgcHJlY2lzaW9uKHAp
LCBxdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KSwgaW52YXJpYW50KGZhbHNlKSwKICAgICAgICAgICBs
YXlvdXRRdWFsaWZpZXIoVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAogICAgICAgICAgIHBy
aW1hcnlTaXplKDEpLCBzZWNvbmRhcnlTaXplKDEpLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgw
KSwKICAgICAgICAgICBpbnRlcmZhY2VCbG9jaygwKSwgc3RydWN0dXJlKHVzZXJEZWYpCkBAIC0y
NTgsMTkgKzI2NywyNiBAQAogICAgIFRUeXBlKFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxv
Y2tJbiwgVFF1YWxpZmllciBxdWFsaWZpZXJJbiwKICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVy
IGxheW91dFF1YWxpZmllckluLCBpbnQgYXJyYXlTaXplSW4pCiAgICAgICAgIDogdHlwZShFYnRJ
bnRlcmZhY2VCbG9jayksIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLCBxdWFsaWZpZXIocXVhbGlm
aWVySW4pLAotICAgICAgICAgIGxheW91dFF1YWxpZmllcihsYXlvdXRRdWFsaWZpZXJJbiksCisg
ICAgICAgICAgaW52YXJpYW50KGZhbHNlKSwgbGF5b3V0UXVhbGlmaWVyKGxheW91dFF1YWxpZmll
ckluKSwKICAgICAgICAgICBwcmltYXJ5U2l6ZSgxKSwgc2Vjb25kYXJ5U2l6ZSgxKSwgYXJyYXko
YXJyYXlTaXplSW4gPiAwKSwgYXJyYXlTaXplKGFycmF5U2l6ZUluKSwKICAgICAgICAgICBpbnRl
cmZhY2VCbG9jayhpbnRlcmZhY2VCbG9ja0luKSwgc3RydWN0dXJlKDApCiAgICAgewogICAgIH0K
IAorICAgIFRUeXBlKGNvbnN0IFRUeXBlICYpID0gZGVmYXVsdDsKKyAgICBUVHlwZSAmb3BlcmF0
b3I9KGNvbnN0IFRUeXBlICYpID0gZGVmYXVsdDsKKwogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNU
eXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB0eXBlOwogICAgIH0KICAgICB2b2lk
IHNldEJhc2ljVHlwZShUQmFzaWNUeXBlIHQpCiAgICAgewotICAgICAgICB0eXBlID0gdDsKKyAg
ICAgICAgaWYgKHR5cGUgIT0gdCkKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZSA9IHQ7Cisg
ICAgICAgICAgICBpbnZhbGlkYXRlTWFuZ2xlZE5hbWUoKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIFRQcmVjaXNpb24gZ2V0UHJlY2lzaW9uKCkgY29uc3QKQEAgLTI5MSw2ICszMDcsMTEgQEAK
ICAgICAgICAgcXVhbGlmaWVyID0gcTsKICAgICB9CiAKKyAgICBib29sIGlzSW52YXJpYW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBpbnZhcmlhbnQ7CisgICAgfQorCiAgICAgVExh
eW91dFF1YWxpZmllciBnZXRMYXlvdXRRdWFsaWZpZXIoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIGxheW91dFF1YWxpZmllcjsKQEAgLTMyMCwxMSArMzQxLDE5IEBACiAgICAgfQogICAg
IHZvaWQgc2V0UHJpbWFyeVNpemUodW5zaWduZWQgY2hhciBwcykKICAgICB7Ci0gICAgICAgIHBy
aW1hcnlTaXplID0gcHM7CisgICAgICAgIGlmIChwcmltYXJ5U2l6ZSAhPSBwcykKKyAgICAgICAg
eworICAgICAgICAgICAgcHJpbWFyeVNpemUgPSBwczsKKyAgICAgICAgICAgIGludmFsaWRhdGVN
YW5nbGVkTmFtZSgpOworICAgICAgICB9CiAgICAgfQogICAgIHZvaWQgc2V0U2Vjb25kYXJ5U2l6
ZSh1bnNpZ25lZCBjaGFyIHNzKQogICAgIHsKLSAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9IHNzOwor
ICAgICAgICBpZiAoc2Vjb25kYXJ5U2l6ZSAhPSBzcykKKyAgICAgICAgeworICAgICAgICAgICAg
c2Vjb25kYXJ5U2l6ZSA9IHNzOworICAgICAgICAgICAgaW52YWxpZGF0ZU1hbmdsZWROYW1lKCk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBGdWxsIHNpemUgb2Ygc2luZ2xlIGluc3RhbmNl
IG9mIHR5cGUKQEAgLTM1MiwxMyArMzgxLDIxIEBACiAgICAgfQogICAgIHZvaWQgc2V0QXJyYXlT
aXplKGludCBzKQogICAgIHsKLSAgICAgICAgYXJyYXkgPSB0cnVlOwotICAgICAgICBhcnJheVNp
emUgPSBzOworICAgICAgICBpZiAoIWFycmF5IHx8IGFycmF5U2l6ZSAhPSBzKQorICAgICAgICB7
CisgICAgICAgICAgICBhcnJheSAgICAgPSB0cnVlOworICAgICAgICAgICAgYXJyYXlTaXplID0g
czsKKyAgICAgICAgICAgIGludmFsaWRhdGVNYW5nbGVkTmFtZSgpOworICAgICAgICB9CiAgICAg
fQogICAgIHZvaWQgY2xlYXJBcnJheW5lc3MoKQogICAgIHsKLSAgICAgICAgYXJyYXkgPSBmYWxz
ZTsKLSAgICAgICAgYXJyYXlTaXplID0gMDsKKyAgICAgICAgaWYgKGFycmF5KQorICAgICAgICB7
CisgICAgICAgICAgICBhcnJheSAgICAgPSBmYWxzZTsKKyAgICAgICAgICAgIGFycmF5U2l6ZSA9
IDA7CisgICAgICAgICAgICBpbnZhbGlkYXRlTWFuZ2xlZE5hbWUoKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIFRJbnRlcmZhY2VCbG9jayAqZ2V0SW50ZXJmYWNlQmxvY2soKSBjb25zdApAQCAt
MzY3LDcgKzQwNCwxMSBAQAogICAgIH0KICAgICB2b2lkIHNldEludGVyZmFjZUJsb2NrKFRJbnRl
cmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2tJbikKICAgICB7Ci0gICAgICAgIGludGVyZmFjZUJs
b2NrID0gaW50ZXJmYWNlQmxvY2tJbjsKKyAgICAgICAgaWYgKGludGVyZmFjZUJsb2NrICE9IGlu
dGVyZmFjZUJsb2NrSW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGludGVyZmFjZUJsb2NrID0g
aW50ZXJmYWNlQmxvY2tJbjsKKyAgICAgICAgICAgIGludmFsaWRhdGVNYW5nbGVkTmFtZSgpOwor
ICAgICAgICB9CiAgICAgfQogICAgIGJvb2wgaXNJbnRlcmZhY2VCbG9jaygpIGNvbnN0CiAgICAg
ewpAQCAtMzkzLDEwICs0MzQsMTQgQEAKICAgICB9CiAgICAgdm9pZCBzZXRTdHJ1Y3QoVFN0cnVj
dHVyZSAqcykKICAgICB7Ci0gICAgICAgIHN0cnVjdHVyZSA9IHM7CisgICAgICAgIGlmIChzdHJ1
Y3R1cmUgIT0gcykKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0dXJlID0gczsKKyAgICAg
ICAgICAgIGludmFsaWRhdGVNYW5nbGVkTmFtZSgpOworICAgICAgICB9CiAgICAgfQogCi0gICAg
Y29uc3QgVFN0cmluZyAmZ2V0TWFuZ2xlZE5hbWUoKQorICAgIGNvbnN0IFRTdHJpbmcgJmdldE1h
bmdsZWROYW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtYW5nbGVkLmVtcHR5KCkpCiAg
ICAgICAgIHsKQEAgLTQ4MSwxOSArNTI2LDQyIEBACiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUg
PyBzdHJ1Y3R1cmUtPmNvbnRhaW5zQXJyYXlzKCkgOiBmYWxzZTsKICAgICB9CiAKKyAgICBib29s
IGlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoVEJhc2ljVHlwZSB0KSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+Y29udGFpbnNUeXBlKHQpIDogZmFs
c2U7CisgICAgfQorCiAgICAgYm9vbCBpc1N0cnVjdHVyZUNvbnRhaW5pbmdTYW1wbGVycygpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gc3RydWN0dXJlID8gc3RydWN0dXJlLT5jb250YWlu
c1NhbXBsZXJzKCkgOiBmYWxzZTsKICAgICB9CiAKLSAgcHJvdGVjdGVkOgorICAgIHZvaWQgY3Jl
YXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmluZyAmc3RydWN0TmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVjdEFQSU5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYXJyYXlPZlN0cnVjdHNTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFZlY3RvcjxUSW50ZXJtU3ltYm9sICo+ICpvdXRw
dXRTeW1ib2xzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE1hcDxUSW50ZXJtU3lt
Ym9sICosIFRTdHJpbmc+ICpvdXRwdXRTeW1ib2xzVG9BUElOYW1lcykgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gbnVsbHB0ciAmJiBzdHJ1Y3R1cmUtPmNvbnRhaW5z
U2FtcGxlcnMoKSk7CisgICAgICAgIHN0cnVjdHVyZS0+Y3JlYXRlU2FtcGxlclN5bWJvbHMoc3Ry
dWN0TmFtZSwgc3RydWN0QVBJTmFtZSwgYXJyYXlPZlN0cnVjdHNTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFN5bWJvbHMsIG91dHB1dFN5bWJvbHNU
b0FQSU5hbWVzKTsKKyAgICB9CisKKyAgICAvLyBJbml0aWFsaXplcyBhbGwgbGF6aWx5LWluaXRp
YWxpemVkIG1lbWJlcnMuCisgICAgdm9pZCByZWFsaXplKCkKKyAgICB7CisgICAgICAgIGdldE1h
bmdsZWROYW1lKCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgdm9pZCBpbnZhbGlkYXRlTWFu
Z2xlZE5hbWUoKSB7IG1hbmdsZWQgPSAiIjsgfQogICAgIFRTdHJpbmcgYnVpbGRNYW5nbGVkTmFt
ZSgpIGNvbnN0OwogICAgIHNpemVfdCBnZXRTdHJ1Y3RTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBj
b21wdXRlRGVlcGVzdFN0cnVjdE5lc3RpbmcoKTsKIAogICAgIFRCYXNpY1R5cGUgdHlwZTsKICAg
ICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICBUUXVhbGlmaWVyIHF1YWxpZmllcjsKKyAgICBi
b29sIGludmFyaWFudDsKICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllcjsKICAg
ICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplOyAvLyBzaXplIG9mIHZlY3RvciBvciBjb2xzIG1h
dHJpeAogICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZTsgLy8gcm93cyBvZiBhIG1hdHJp
eApAQCAtNTIzLDYgKzU5MSw3IEBACiAgICAgVEJhc2ljVHlwZSB0eXBlOwogICAgIFRMYXlvdXRR
dWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwogICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOworICAg
IGJvb2wgaW52YXJpYW50OwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAgIHVuc2lnbmVk
IGNoYXIgcHJpbWFyeVNpemU7ICAgICAgICAgIC8vIHNpemUgb2YgdmVjdG9yIG9yIGNvbHMgb2Yg
bWF0cml4CiAgICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnlTaXplOyAgICAgICAgLy8gcm93cyBv
ZiBtYXRyaXgKQEAgLTUzMSwxMSArNjAwLDE1IEBACiAgICAgVFR5cGUgKnVzZXJEZWY7CiAgICAg
VFNvdXJjZUxvYyBsaW5lOwogCisgICAgLy8gdHJ1ZSBpZiB0aGUgdHlwZSB3YXMgZGVmaW5lZCBi
eSBhIHN0cnVjdCBzcGVjaWZpZXIgcmF0aGVyIHRoYW4gYSByZWZlcmVuY2UgdG8gYSB0eXBlIG5h
bWUuCisgICAgYm9vbCBpc1N0cnVjdFNwZWNpZmllcjsKKwogICAgIHZvaWQgc2V0QmFzaWMoVEJh
c2ljVHlwZSBidCwgVFF1YWxpZmllciBxLCBjb25zdCBUU291cmNlTG9jICZsbikKICAgICB7CiAg
ICAgICAgIHR5cGUgPSBidDsKICAgICAgICAgbGF5b3V0UXVhbGlmaWVyID0gVExheW91dFF1YWxp
Zmllcjo6Y3JlYXRlKCk7CiAgICAgICAgIHF1YWxpZmllciA9IHE7CisgICAgICAgIGludmFyaWFu
dCA9IGZhbHNlOwogICAgICAgICBwcmVjaXNpb24gPSBFYnBVbmRlZmluZWQ7CiAgICAgICAgIHBy
aW1hcnlTaXplID0gMTsKICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9IDE7CkBAIC01NDMsNiArNjE2
LDcgQEAKICAgICAgICAgYXJyYXlTaXplID0gMDsKICAgICAgICAgdXNlckRlZiA9IDA7CiAgICAg
ICAgIGxpbmUgPSBsbjsKKyAgICAgICAgaXNTdHJ1Y3RTcGVjaWZpZXIgPSBmYWxzZTsKICAgICB9
CiAKICAgICB2b2lkIHNldEFnZ3JlZ2F0ZSh1bnNpZ25lZCBjaGFyIHNpemUpCkBAIC01ODIsNiAr
NjU2LDE2IEBACiAgICAgICAgIHJldHVybiB1c2VyRGVmLT5pc1N0cnVjdHVyZUNvbnRhaW5pbmdB
cnJheXMoKTsKICAgICB9CiAKKyAgICBib29sIGlzU3RydWN0dXJlQ29udGFpbmluZ1R5cGUoVEJh
c2ljVHlwZSB0KSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCF1c2VyRGVmKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dXNlckRlZi0+aXNTdHJ1Y3R1cmVDb250YWluaW5nVHlwZSh0KTsKKyAgICB9CisKICAgICBib29s
IGlzTWF0cml4KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwcmltYXJ5U2l6ZSA+IDEg
JiYgc2Vjb25kYXJ5U2l6ZSA+IDE7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNo
b3J0Q2lyY3VpdC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTg1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBVbmZvbGRT
aG9ydENpcmN1aXQgaXMgYW4gQVNUIHRyYXZlcnNlciB0byBvdXRwdXQgc2hvcnQtY2lyY3VpdGlu
ZyBvcGVyYXRvcnMgYXMgaWYtZWxzZSBzdGF0ZW1lbnRzLgotLy8gVGhlIHJlc3VsdHMgYXJlIGFz
c2lnbmVkIHRvIHMjIHRlbXBvcmFyaWVzLCB3aGljaCBhcmUgdXNlZCBieSB0aGUgbWFpbiB0cmFu
c2xhdG9yIGluc3RlYWQgb2YKLS8vIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uLgotLy8KLQotI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0LmgiCi0KLSNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9PdXRwdXRITFNMLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9V
dGlsc0hMU0wuaCIKLQotbmFtZXNwYWNlIHNoCi17Ci1VbmZvbGRTaG9ydENpcmN1aXQ6OlVuZm9s
ZFNob3J0Q2lyY3VpdChPdXRwdXRITFNMICpvdXRwdXRITFNMKSA6IG1PdXRwdXRITFNMKG91dHB1
dEhMU0wpCi17Ci0gICAgbVRlbXBvcmFyeUluZGV4ID0gMDsKLX0KLQotdm9pZCBVbmZvbGRTaG9y
dENpcmN1aXQ6OnRyYXZlcnNlKFRJbnRlcm1Ob2RlICpub2RlKQotewotICAgIGludCByZXdpbmRJ
bmRleCA9IG1UZW1wb3JhcnlJbmRleDsKLSAgICBub2RlLT50cmF2ZXJzZSh0aGlzKTsKLSAgICBt
VGVtcG9yYXJ5SW5kZXggPSByZXdpbmRJbmRleDsKLX0KLQotYm9vbCBVbmZvbGRTaG9ydENpcmN1
aXQ6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQotewotICAg
IFRJbmZvU2lua0Jhc2UgJm91dCA9IG1PdXRwdXRITFNMLT5nZXRJbmZvU2luaygpOwotCi0gICAg
Ly8gSWYgb3VyIHJpZ2h0IG5vZGUgZG9lc24ndCBoYXZlIHNpZGUgZWZmZWN0cywgd2Uga25vdyB3
ZSBkb24ndCBuZWVkIHRvIHVuZm9sZCB0aGlzCi0gICAgLy8gZXhwcmVzc2lvbjogdGhlcmUgd2ls
bCBiZSBubyBzaG9ydC1jaXJjdWl0aW5nIHNpZGUgZWZmZWN0cyB0byBhdm9pZAotICAgIC8vIChu
b3RlOiB1bmZvbGRpbmcgZG9lc24ndCBkZXBlbmQgb24gdGhlIGxlZnQgbm9kZSAtLSBpdCB3aWxs
IGFsd2F5cyBiZSBldmFsdWF0ZWQpCi0gICAgaWYgKCFub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRl
RWZmZWN0cygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3dp
dGNoIChub2RlLT5nZXRPcCgpKQotICAgIHsKLSAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgotICAg
ICAgICAvLyAieCB8fCB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID8gdHJ1ZSA6IHkiLCB3aGljaCB1
bmZvbGRzIHRvICJib29sIHM7IGlmKHgpIHMgPSB0cnVlOyBlbHNlIHMgPSB5OyIsCi0gICAgICAg
IC8vIGFuZCB0aGVuIGZ1cnRoZXIgc2ltcGxpZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBpZigh
cykgcyA9IHk7Ii4KLSAgICAgICAgewotICAgICAgICAgICAgaW50IGkgPSBtVGVtcG9yYXJ5SW5k
ZXg7Ci0KLSAgICAgICAgICAgIG91dCA8PCAiYm9vbCBzIiA8PCBpIDw8ICI7XG4iOwotCi0gICAg
ICAgICAgICBvdXQgPDwgIntcbiI7Ci0KLSAgICAgICAgICAgIG1UZW1wb3JhcnlJbmRleCA9IGkg
KyAxOwotICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgICAgIG91dCA8PCAicyIgPDwgaSA8PCAiID0gIjsKLSAgICAgICAgICAgIG1UZW1wb3JhcnlJ
bmRleCA9IGkgKyAxOwotICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT50cmF2ZXJzZShtT3V0
cHV0SExTTCk7Ci0gICAgICAgICAgICBvdXQgPDwgIjtcbiI7Ci0gICAgICAgICAgICBvdXQgPDwg
ImlmICghcyIgPDwgaSA8PCAiKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iOwotICAgICAg
ICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7Ci0gICAgICAgICAgICBub2RlLT5nZXRSaWdo
dCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgIG91dCA8PCAiICAgIHMiIDw8IGkgPDwg
IiA9ICI7Ci0gICAgICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKLSAgICAgICAgICAg
IG5vZGUtPmdldFJpZ2h0KCktPnRyYXZlcnNlKG1PdXRwdXRITFNMKTsKLSAgICAgICAgICAgIG91
dCA8PCAiO1xuIgotICAgICAgICAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgICAgICBvdXQg
PDwgIn1cbiI7Ci0KLSAgICAgICAgICAgIG1UZW1wb3JhcnlJbmRleCA9IGkgKyAxOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAg
ICAgICAgLy8gInggJiYgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHkgOiBmYWxzZSIsIHdoaWNo
IHVuZm9sZHMgdG8gImJvb2wgczsgaWYoeCkgcyA9IHk7IGVsc2UgcyA9IGZhbHNlOyIsCi0gICAg
ICAgIC8vIGFuZCB0aGVuIGZ1cnRoZXIgc2ltcGxpZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBp
ZihzKSBzID0geTsiLgotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgaSA9IG1UZW1wb3JhcnlJ
bmRleDsKLQotICAgICAgICAgICAgb3V0IDw8ICJib29sIHMiIDw8IGkgPDwgIjtcbiI7Ci0KLSAg
ICAgICAgICAgIG91dCA8PCAie1xuIjsKLQotICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0g
aSArIDE7Ci0gICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwotICAg
ICAgICAgICAgb3V0IDw8ICJzIiA8PCBpIDw8ICIgPSAiOwotICAgICAgICAgICAgbVRlbXBvcmFy
eUluZGV4ID0gaSArIDE7Ci0gICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKG1P
dXRwdXRITFNMKTsKLSAgICAgICAgICAgIG91dCA8PCAiO1xuIjsKLSAgICAgICAgICAgIG91dCA8
PCAiaWYgKHMiIDw8IGkgPDwgIilcbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIjsKLSAgICAg
ICAgICAgIG1UZW1wb3JhcnlJbmRleCA9IGkgKyAxOwotICAgICAgICAgICAgbm9kZS0+Z2V0Umln
aHQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICBvdXQgPDwgIiAgICBzIiA8PCBpIDw8
ICIgPSAiOwotICAgICAgICAgICAgbVRlbXBvcmFyeUluZGV4ID0gaSArIDE7Ci0gICAgICAgICAg
ICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZShtT3V0cHV0SExTTCk7Ci0gICAgICAgICAgICBv
dXQgPDwgIjtcbiIKLSAgICAgICAgICAgICAgICAgICAifVxuIjsKLQotICAgICAgICAgICAgb3V0
IDw8ICJ9XG4iOwotCi0gICAgICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci19Ci0KLWJvb2wgVW5mb2xkU2hvcnRDaXJjdWl0Ojp2aXNpdFNlbGVj
dGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiAqbm9kZSkKLXsKLSAgICBUSW5mb1Np
bmtCYXNlICZvdXQgPSBtT3V0cHV0SExTTC0+Z2V0SW5mb1NpbmsoKTsKLQotICAgIC8vIFVuZm9s
ZCAiYiA/IHggOiB5IiBpbnRvICJ0eXBlIHM7IGlmKGIpIHMgPSB4OyBlbHNlIHMgPSB5OyIKLSAg
ICBpZiAobm9kZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKQotICAgIHsKLSAgICAgICAgaW50IGkg
PSBtVGVtcG9yYXJ5SW5kZXg7Ci0KLSAgICAgICAgb3V0IDw8IFR5cGVTdHJpbmcobm9kZS0+Z2V0
VHlwZSgpKSA8PCAiIHMiIDw8IGkgPDwgIjtcbiI7Ci0KLSAgICAgICAgb3V0IDw8ICJ7XG4iOwot
Ci0gICAgICAgIG1UZW1wb3JhcnlJbmRleCA9IGkgKyAxOwotICAgICAgICBub2RlLT5nZXRDb25k
aXRpb24oKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIG91dCA8PCAiaWYgKCI7Ci0gICAgICAg
IG1UZW1wb3JhcnlJbmRleCA9IGkgKyAxOwotICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+
dHJhdmVyc2UobU91dHB1dEhMU0wpOwotICAgICAgICBvdXQgPDwgIilcbiIKLSAgICAgICAgICAg
ICAgICJ7XG4iOwotICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKLSAgICAgICAgbm9k
ZS0+Z2V0VHJ1ZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBvdXQgPDwgIiAgICBz
IiA8PCBpIDw8ICIgPSAiOwotICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsKLSAgICAg
ICAgbm9kZS0+Z2V0VHJ1ZUJsb2NrKCktPnRyYXZlcnNlKG1PdXRwdXRITFNMKTsKLSAgICAgICAg
b3V0IDw8ICI7XG4iCi0gICAgICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgICAgImVsc2Vc
biIKLSAgICAgICAgICAgICAgICJ7XG4iOwotICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsg
MTsKLSAgICAgICAgbm9kZS0+Z2V0RmFsc2VCbG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgb3V0IDw8ICIgICAgcyIgPDwgaSA8PCAiID0gIjsKLSAgICAgICAgbVRlbXBvcmFyeUluZGV4
ID0gaSArIDE7Ci0gICAgICAgIG5vZGUtPmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UobU91dHB1
dEhMU0wpOwotICAgICAgICBvdXQgPDwgIjtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotCi0g
ICAgICAgIG91dCA8PCAifVxuIjsKLQotICAgICAgICBtVGVtcG9yYXJ5SW5kZXggPSBpICsgMTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVW5mb2xkU2hvcnRDaXJjdWl0
Ojp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQotewotICAgIGludCBy
ZXdpbmRJbmRleCA9IG1UZW1wb3JhcnlJbmRleDsKLQotICAgIGlmIChub2RlLT5nZXRJbml0KCkp
Ci0gICAgewotICAgICAgICBub2RlLT5nZXRJbml0KCktPnRyYXZlcnNlKHRoaXMpOwotICAgIH0K
LSAgICAKLSAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCi0gICAgewotICAgICAgICBub2Rl
LT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgfQotCi0gICAgaWYgKG5vZGUt
PmdldEV4cHJlc3Npb24oKSkKLSAgICB7Ci0gICAgICAgIG5vZGUtPmdldEV4cHJlc3Npb24oKS0+
dHJhdmVyc2UodGhpcyk7Ci0gICAgfQotCi0gICAgbVRlbXBvcmFyeUluZGV4ID0gcmV3aW5kSW5k
ZXg7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWludCBVbmZvbGRTaG9ydENpcmN1aXQ6Omdl
dE5leHRUZW1wb3JhcnlJbmRleCgpCi17Ci0gICAgcmV0dXJuIG1UZW1wb3JhcnlJbmRleCsrOwot
fQotfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVW5mb2xkU2hvcnRDaXJjdWl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0LmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM4ICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBVbmZvbGRTaG9ydENpcmN1aXQgaXMgYW4gQVNUIHRy
YXZlcnNlciB0byBvdXRwdXQgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRvcnMgYXMgaWYtZWxzZSBz
dGF0ZW1lbnRzCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVU5GT0xEU0hPUlRD
SVJDVUlUX0hfCi0jZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfVU5GT0xEU0hPUlRDSVJDVUlU
X0hfCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLSNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oIgotCi1uYW1lc3BhY2Ugc2gK
LXsKLWNsYXNzIE91dHB1dEhMU0w7Ci0KLWNsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdCA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCi17Ci0gIHB1YmxpYzoKLSAgICBVbmZvbGRTaG9ydENpcmN1aXQo
T3V0cHV0SExTTCAqb3V0cHV0SExTTCk7Ci0KLSAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1Ob2Rl
ICpub2RlKTsKLSAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5
Kik7Ci0gICAgYm9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlv
biAqbm9kZSk7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpu
b2RlKTsKLQotICAgIGludCBnZXROZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLQotICBwcm90ZWN0ZWQ6
Ci0gICAgT3V0cHV0SExTTCAqY29uc3QgbU91dHB1dEhMU0w7Ci0KLSAgICBpbnQgbVRlbXBvcmFy
eUluZGV4OwotfTsKLX0KLQotI2VuZGlmICAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9VTkZPTERT
SE9SVENJUkNVSVRfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2ly
Y3VpdEFTVC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaAkod29ya2luZyBj
b3B5KQpAQCAtMjAsOSArMjAsMTIgQEAKIGNsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCA6IHB1
YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBVbmZvbGRTaG9ydENpcmN1
aXRBU1QoKSB7IH0KKyAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1QoKQorICAgICAgICA6IFRJbnRl
cm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKQorICAgIHsKKyAgICB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKik7CisgICAg
Ym9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqKSBvdmVycmlkZTsK
IH07CiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9VTkZPTERTSE9SVENJUkNVSVRB
U1RfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRv
SWYuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNjggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBVbmZvbGRTaG9ydENpcmN1
aXRUb0lmIGlzIGFuIEFTVCB0cmF2ZXJzZXIgdG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9w
ZXJhdG9ycyB0byBpZi1lbHNlIHN0YXRlbWVudHMuCisvLyBUaGUgcmVzdWx0cyBhcmUgYXNzaWdu
ZWQgdG8gcyMgdGVtcG9yYXJpZXMsIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSBtYWluIHRyYW5zbGF0
b3IgaW5zdGVhZCBvZgorLy8gdGhlIG9yaWdpbmFsIGV4cHJlc3Npb24uCisvLworCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRUb0lmLmgiCisKKyNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKworbmFtZXNwYWNlCit7CisK
Ky8vIFRyYXZlcnNlciB0aGF0IHVuZm9sZHMgb25lIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9u
IGF0IGEgdGltZS4KK2NsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlciA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBVbmZvbGRTaG9ydENpcmN1aXRUcmF2
ZXJzZXIoKTsKKworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRTZWxlY3Rp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJv
b2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIG5leHRJdGVyYXRpb24oKTsKKyAgICBib29sIGZvdW5kU2hvcnRDaXJjdWl0KCkg
Y29uc3QgeyByZXR1cm4gbUZvdW5kU2hvcnRDaXJjdWl0OyB9CisKKyAgcHJvdGVjdGVkOgorICAg
IC8vIENoZWNrIGlmIHRoZSB0cmF2ZXJzYWwgaXMgaW5zaWRlIGEgbG9vcCBjb25kaXRpb24gb3Ig
ZXhwcmVzc2lvbiwgaW4gd2hpY2ggY2FzZSB0aGUgdW5mb2xkZWQKKyAgICAvLyBleHByZXNzaW9u
IG5lZWRzIHRvIGJlIGNvcGllZCBpbnNpZGUgdGhlIGxvb3AuIFJldHVybnMgdHJ1ZSBpZiB0aGUg
Y29weWluZyBpcyBkb25lLCBpbiB3aGljaAorICAgIC8vIGNhc2Ugbm8gZnVydGhlciB1bmZvbGRp
bmcgc2hvdWxkIGJlIGRvbmUgb24gdGhlIHNhbWUgdHJhdmVyc2FsLgorICAgIC8vIFRoZSBwYXJh
bWV0ZXJzIGFyZSB0aGUgbm9kZSB0aGF0IHdpbGwgYmUgdW5mb2xkZWQgdG8gbXVsdGlwbGUgc3Rh
dGVtZW50cyBhbmQgc28gY2FuJ3QgcmVtYWluCisgICAgLy8gaW5zaWRlIGEgbG9vcCBjb25kaXRp
b24sIGFuZCBpdHMgcGFyZW50LgorICAgIGJvb2wgY29weUxvb3BDb25kaXRpb25PckV4cHJlc3Np
b24oVEludGVybU5vZGUgKnBhcmVudCwgVEludGVybVR5cGVkICpub2RlKTsKKworICAgIC8vIE1h
cmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgdW5mb2xkZWQg
aGFzIGJlZW4gZm91bmQuCisgICAgLy8gQWZ0ZXIgdGhhdCwgbm8gbW9yZSB1bmZvbGRpbmcgaXMg
cGVyZm9ybWVkIG9uIHRoYXQgdHJhdmVyc2FsLgorICAgIGJvb2wgbUZvdW5kU2hvcnRDaXJjdWl0
OworCisgICAgLy8gU2V0IHRvIHRoZSBsb29wIG5vZGUgd2hpbGUgYSBsb29wIGNvbmRpdGlvbiBv
ciBleHByZXNzaW9uIGlzIGJlaW5nIHRyYXZlcnNlZC4KKyAgICBUSW50ZXJtTG9vcCAqbVBhcmVu
dExvb3A7CisgICAgLy8gUGFyZW50IG9mIHRoZSBsb29wIG5vZGUgd2hpbGUgYSBsb29wIGNvbmRp
dGlvbiBvciBleHByZXNzaW9uIGlzIGJlaW5nIHRyYXZlcnNlZC4KKyAgICBUSW50ZXJtTm9kZSAq
bUxvb3BQYXJlbnQ7CisKKyAgICBib29sIG1Jbkxvb3BDb25kaXRpb247CisgICAgYm9vbCBtSW5M
b29wRXhwcmVzc2lvbjsKK307CisKK1VuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6VW5mb2xk
U2hvcnRDaXJjdWl0VHJhdmVyc2VyKCkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFs
c2UsIHRydWUpLAorICAgICAgbUZvdW5kU2hvcnRDaXJjdWl0KGZhbHNlKSwKKyAgICAgIG1QYXJl
bnRMb29wKG51bGxwdHIpLAorICAgICAgbUxvb3BQYXJlbnQobnVsbHB0ciksCisgICAgICBtSW5M
b29wQ29uZGl0aW9uKGZhbHNlKSwKKyAgICAgIG1Jbkxvb3BFeHByZXNzaW9uKGZhbHNlKQorewor
fQorCitib29sIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCit7CisgICAgaWYgKG1Gb3VuZFNob3J0Q2lyY3Vp
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIElmIG91ciByaWdodCBub2RlIGRvZXNu
J3QgaGF2ZSBzaWRlIGVmZmVjdHMsIHdlIGtub3cgd2UgZG9uJ3QgbmVlZCB0byB1bmZvbGQgdGhp
cworICAgIC8vIGV4cHJlc3Npb246IHRoZXJlIHdpbGwgYmUgbm8gc2hvcnQtY2lyY3VpdGluZyBz
aWRlIGVmZmVjdHMgdG8gYXZvaWQKKyAgICAvLyAobm90ZTogdW5mb2xkaW5nIGRvZXNuJ3QgZGVw
ZW5kIG9uIHRoZSBsZWZ0IG5vZGUgLS0gaXQgd2lsbCBhbHdheXMgYmUgZXZhbHVhdGVkKQorICAg
IGlmICghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICB7
CisgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgbUZvdW5kU2hvcnRDaXJjdWl0ID0g
dHJ1ZTsKKyAgICAgICAgaWYgKCFjb3B5TG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbihnZXRQYXJl
bnROb2RlKCksIG5vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyAieCB8fCB5IiBpcyBl
cXVpdmFsZW50IHRvICJ4ID8gdHJ1ZSA6IHkiLCB3aGljaCB1bmZvbGRzIHRvICJib29sIHM7IGlm
KHgpIHMgPSB0cnVlOworICAgICAgICAgICAgLy8gZWxzZSBzID0geTsiLAorICAgICAgICAgICAg
Ly8gYW5kIHRoZW4gZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlmKCFz
KSBzID0geTsiLgorCisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKKyAg
ICAgICAgICAgIFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxVGVtcG9y
YXJ5KTsKKworICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpID09
IGJvb2xUeXBlKTsKKyAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJ
bml0RGVjbGFyYXRpb24obm9kZS0+Z2V0TGVmdCgpKSk7CisKKyAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmFzc2lnblJpZ2h0QmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1
ZW5jZSk7CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpID09
IGJvb2xUeXBlKTsKKyAgICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdldFNlcXVlbmNlKCkt
PnB1c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdodCgpKSk7CisKKyAg
ICAgICAgICAgIFRJbnRlcm1VbmFyeSAqbm90VGVtcFN5bWJvbCA9IG5ldyBUSW50ZXJtVW5hcnko
RU9wTG9naWNhbE5vdCwgYm9vbFR5cGUpOworICAgICAgICAgICAgbm90VGVtcFN5bWJvbC0+c2V0
T3BlcmFuZChjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSk7CisgICAgICAgICAgICBUSW50ZXJt
U2VsZWN0aW9uICppZk5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihub3RUZW1wU3ltYm9sLCBh
c3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKKyAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9i
YWNrKGlmTm9kZSk7CisKKyAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2Nr
KGluc2VydGlvbnMpOworCisgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkgcmVwbGFjZVZhcmlh
YmxlKGdldFBhcmVudE5vZGUoKSwgbm9kZSwgY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSksIGZh
bHNlKTsKKyAgICAgICAgICAgIG1SZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VWYXJpYWJs
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgY2FzZSBFT3BMb2dp
Y2FsQW5kOgorICAgICAgICBtRm91bmRTaG9ydENpcmN1aXQgPSB0cnVlOworICAgICAgICBpZiAo
IWNvcHlMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKGdldFBhcmVudE5vZGUoKSwgbm9kZSkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vICJ4ICYmIHkiIGlzIGVxdWl2YWxlbnQgdG8gInggPyB5
IDogZmFsc2UiLCB3aGljaCB1bmZvbGRzIHRvICJib29sIHM7IGlmKHgpIHMgPSB5OworICAgICAg
ICAgICAgLy8gZWxzZSBzID0gZmFsc2U7IiwKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1cnRo
ZXIgc2ltcGxpZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBpZihzKSBzID0geTsiLgorICAgICAg
ICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgICAgICAgICBUVHlwZSBib29s
VHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cVRlbXBvcmFyeSk7CisKKyAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7CisgICAgICAg
ICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUt
PmdldExlZnQoKSkpOworCisgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphc3NpZ25SaWdo
dEJsb2NrID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7CisgICAgICAg
ICAgICBhc3NpZ25SaWdodEJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soY3JlYXRlVGVt
cEFzc2lnbm1lbnQobm9kZS0+Z2V0UmlnaHQoKSkpOworCisgICAgICAgICAgICBUSW50ZXJtU2Vs
ZWN0aW9uICppZk5vZGUgPSBuZXcgVEludGVybVNlbGVjdGlvbihjcmVhdGVUZW1wU3ltYm9sKGJv
b2xUeXBlKSwgYXNzaWduUmlnaHRCbG9jaywgbnVsbHB0cik7CisgICAgICAgICAgICBpbnNlcnRp
b25zLnB1c2hfYmFjayhpZk5vZGUpOworCisgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5Q
YXJlbnRCbG9jayhpbnNlcnRpb25zKTsKKworICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5IHJl
cGxhY2VWYXJpYWJsZShnZXRQYXJlbnROb2RlKCksIG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9v
bFR5cGUpLCBmYWxzZSk7CisgICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBs
YWNlVmFyaWFibGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKworYm9vbCBVbmZvbGRTaG9y
dENpcmN1aXRUcmF2ZXJzZXI6OnZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2Vs
ZWN0aW9uICpub2RlKQoreworICAgIGlmIChtRm91bmRTaG9ydENpcmN1aXQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vIFVuZm9sZCAiYiA/IHggOiB5IiBpbnRvICJ0eXBlIHM7IGlm
KGIpIHMgPSB4OyBlbHNlIHMgPSB5OyIKKyAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9k
ZS0+dXNlc1Rlcm5hcnlPcGVyYXRvcigpKQorICAgIHsKKyAgICAgICAgbUZvdW5kU2hvcnRDaXJj
dWl0ID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFjb3B5TG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbihn
ZXRQYXJlbnROb2RlKCksIG5vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICBUSW50ZXJtU2Vx
dWVuY2UgaW5zZXJ0aW9uczsKKworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJv
bCAgICAgICAgID0gY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqdGVtcERlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1BZ2dyZWdh
dGUoRU9wRGVjbGFyYXRpb24pOworICAgICAgICAgICAgdGVtcERlY2xhcmF0aW9uLT5nZXRTZXF1
ZW5jZSgpLT5wdXNoX2JhY2sodGVtcFN5bWJvbCk7CisgICAgICAgICAgICBpbnNlcnRpb25zLnB1
c2hfYmFjayh0ZW1wRGVjbGFyYXRpb24pOworCisgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICp0cnVlQmxvY2sgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgICAg
ICAgICBUSW50ZXJtQmluYXJ5ICp0cnVlQXNzaWdubWVudCA9CisgICAgICAgICAgICAgICAgY3Jl
YXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0VHJ1ZUJsb2NrKCktPmdldEFzVHlwZWQoKSk7Cisg
ICAgICAgICAgICB0cnVlQmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh0cnVlQXNzaWdu
bWVudCk7CisKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZhbHNlQmxvY2sgPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZShFT3BTZXF1ZW5jZSk7CisgICAgICAgICAgICBUSW50ZXJtQmluYXJ5
ICpmYWxzZUFzc2lnbm1lbnQgPQorICAgICAgICAgICAgICAgIGNyZWF0ZVRlbXBBc3NpZ25tZW50
KG5vZGUtPmdldEZhbHNlQmxvY2soKS0+Z2V0QXNUeXBlZCgpKTsKKyAgICAgICAgICAgIGZhbHNl
QmxvY2stPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhmYWxzZUFzc2lnbm1lbnQpOworCisgICAg
ICAgICAgICBUSW50ZXJtU2VsZWN0aW9uICppZk5vZGUgPQorICAgICAgICAgICAgICAgIG5ldyBU
SW50ZXJtU2VsZWN0aW9uKG5vZGUtPmdldENvbmRpdGlvbigpLT5nZXRBc1R5cGVkKCksIHRydWVC
bG9jaywgZmFsc2VCbG9jayk7CisgICAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhpZk5v
ZGUpOworCisgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRp
b25zKTsKKworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqdGVybmFyeVJlc3VsdCA9IGNyZWF0
ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIE5vZGVVcGRhdGVFbnRy
eSByZXBsYWNlVmFyaWFibGUoZ2V0UGFyZW50Tm9kZSgpLCBub2RlLCB0ZXJuYXJ5UmVzdWx0LCBm
YWxzZSk7CisgICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlVmFyaWFi
bGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBVbmZvbGRTaG9ydENpcmN1aXRUcmF2ZXJzZXI6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQoreworICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCAmJiBtRm91bmRTaG9ydENpcmN1aXQpCisgICAgICAgIHJldHVybiBm
YWxzZTsgLy8gTm8gbmVlZCB0byB0cmF2ZXJzZSBmdXJ0aGVyCisKKyAgICBpZiAobm9kZS0+Z2V0
T3AoKSA9PSBFT3BDb21tYSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2aXNpdCAhPSBQcmVWaXNp
dCB8fCAhbUZvdW5kU2hvcnRDaXJjdWl0KTsKKworICAgICAgICBpZiAodmlzaXQgPT0gUG9zdFZp
c2l0ICYmIG1Gb3VuZFNob3J0Q2lyY3VpdCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gV2Ug
Y2FuIGJlIHN1cmUgdGhhdCB3ZSBhcnJpdmVkIGhlcmUgYmVjYXVzZSB0aGVyZSB3YXMgYSBzaG9y
dC1jaXJjdWl0aW5nIG9wZXJhdG9yCisgICAgICAgICAgICAvLyBpbnNpZGUgdGhlIHNlcXVlbmNl
IG9wZXJhdG9yIHNpbmNlIHdlIG9ubHkgc3RhcnQgdHJhdmVyc2luZyB0aGUgc2VxdWVuY2Ugb3Bl
cmF0b3IgaW4KKyAgICAgICAgICAgIC8vIGNhc2UgYSBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9y
IGhhcyBub3QgYmVlbiBmb3VuZCBzbyBmYXIuCisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHVu
Zm9sZCB0aGUgc2VxdWVuY2UgKGNvbW1hKSBvcGVyYXRvciwgb3RoZXJ3aXNlIHRoZSBldmFsdWF0
aW9uIG9yZGVyIG9mCisgICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIHdvdWxkIGJlIG1lc3NlZCB1
cCBieSB1bmZvbGRlZCBvcGVyYXRpb25zIGluc2lkZS4KKyAgICAgICAgICAgIC8vIERvbid0IGRv
IGFueSBvdGhlciB1bmZvbGRpbmcgb24gdGhpcyByb3VuZCBvZiB0cmF2ZXJzYWwuCisgICAgICAg
ICAgICBtUmVwbGFjZW1lbnRzLmNsZWFyKCk7CisgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVu
dHMuY2xlYXIoKTsKKyAgICAgICAgICAgIG1JbnNlcnRpb25zLmNsZWFyKCk7CisKKyAgICAgICAg
ICAgIGlmICghY29weUxvb3BDb25kaXRpb25PckV4cHJlc3Npb24oZ2V0UGFyZW50Tm9kZSgpLCBu
b2RlKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5z
ZXJ0aW9uczsKKyAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcSA9IG5vZGUtPmdl
dFNlcXVlbmNlKCk7CisKKyAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlw
ZSBpID0gMDsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcS0+ZW1wdHkoKSk7CisgICAgICAg
ICAgICAgICAgd2hpbGUgKGkgPCBzZXEtPnNpemUoKSAtIDEpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkID0gKCpzZXEpW2ldLT5nZXRB
c1R5cGVkKCk7CisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNoaWxk
KTsKKyAgICAgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworCisg
ICAgICAgICAgICAgICAgTm9kZVVwZGF0ZUVudHJ5IHJlcGxhY2VWYXJpYWJsZShnZXRQYXJlbnRO
b2RlKCksIG5vZGUsICgqc2VxKVtpXSwgZmFsc2UpOworICAgICAgICAgICAgICAgIG1SZXBsYWNl
bWVudHMucHVzaF9iYWNrKHJlcGxhY2VWYXJpYWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVW5mb2xkU2hvcnRDaXJjdWl0
VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQorewor
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICB7CisgICAgICAgIGlmIChtRm91bmRTaG9y
dENpcmN1aXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBObyBuZWVkIHRvIHRyYXZl
cnNlIGZ1cnRoZXIKKworICAgICAgICBtTG9vcFBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKKyAg
ICAgICAgbVBhcmVudExvb3AgPSBub2RlOworICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsK
KworICAgICAgICBpZiAobm9kZS0+Z2V0SW5pdCgpKQorICAgICAgICB7CisgICAgICAgICAgICBu
b2RlLT5nZXRJbml0KCktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgaWYgKG1Gb3VuZFNo
b3J0Q2lyY3VpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWNyZW1lbnREZXB0
aCgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChub2RlLT5nZXRDb25kaXRpb24oKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbUluTG9vcENvbmRpdGlvbiA9IHRydWU7CisgICAgICAgICAgICBub2RlLT5nZXRD
b25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICBtSW5Mb29wQ29uZGl0aW9u
ID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChtRm91bmRTaG9ydENpcmN1aXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bm9kZS0+Z2V0RXhwcmVzc2lvbigpKQorICAgICAgICB7CisgICAgICAgICAgICBtSW5Mb29wRXhw
cmVzc2lvbiA9IHRydWU7CisgICAgICAgICAgICBub2RlLT5nZXRFeHByZXNzaW9uKCktPnRyYXZl
cnNlKHRoaXMpOworICAgICAgICAgICAgbUluTG9vcEV4cHJlc3Npb24gPSBmYWxzZTsKKworICAg
ICAgICAgICAgaWYgKG1Gb3VuZFNob3J0Q2lyY3VpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBkZWNyZW1lbnREZXB0aCgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkp
CisgICAgICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMpOworCisgICAgICAg
IGRlY3JlbWVudERlcHRoKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBV
bmZvbGRTaG9ydENpcmN1aXRUcmF2ZXJzZXI6OmNvcHlMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9u
KFRJbnRlcm1Ob2RlICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpub2RlKQoreworICAg
IGlmIChtSW5Mb29wQ29uZGl0aW9uKQorICAgIHsKKyAgICAgICAgbVJlcGxhY2VtZW50cy5wdXNo
X2JhY2soCisgICAgICAgICAgICBOb2RlVXBkYXRlRW50cnkocGFyZW50LCBub2RlLCBjcmVhdGVU
ZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSksIGZhbHNlKSk7CisgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmJvZHkgPSBtUGFyZW50TG9vcC0+Z2V0Qm9keSgpOworICAgICAgICBUSW50ZXJtU2Vx
dWVuY2UgZW1wdHk7CisgICAgICAgIGlmIChtUGFyZW50TG9vcC0+Z2V0VHlwZSgpID09IEVMb29w
RG9XaGlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRGVjbGFyZSB0aGUgdGVtcG9yYXJ5
IHZhcmlhYmxlIGJlZm9yZSB0aGUgbG9vcC4KKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBp
bnNlcnRpb25zQmVmb3JlTG9vcDsKKyAgICAgICAgICAgIGluc2VydGlvbnNCZWZvcmVMb29wLnB1
c2hfYmFjayhjcmVhdGVUZW1wRGVjbGFyYXRpb24obm9kZS0+Z2V0VHlwZSgpKSk7CisgICAgICAg
ICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zQmVmb3JlTG9vcCk7
CisKKyAgICAgICAgICAgIC8vIE1vdmUgYSBwYXJ0IG9mIGRvLXdoaWxlIGxvb3AgY29uZGl0aW9u
IHRvIGluc2lkZSB0aGUgbG9vcC4KKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRp
b25zSW5Mb29wOworICAgICAgICAgICAgaW5zZXJ0aW9uc0luTG9vcC5wdXNoX2JhY2soY3JlYXRl
VGVtcEFzc2lnbm1lbnQobm9kZSkpOworICAgICAgICAgICAgbUluc2VydGlvbnMucHVzaF9iYWNr
KE5vZGVJbnNlcnRNdWx0aXBsZUVudHJ5KGJvZHksIGJvZHktPmdldFNlcXVlbmNlKCktPnNpemUo
KSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW1wdHksIGluc2VydGlvbnNJbkxvb3ApKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBsb29wIGluaXRpYWxpemVyIGV4cHJl
c3Npb24gYW5kIG9uZSBjb3B5IG9mIHRoZSBwYXJ0IG9mIHRoZSBsb29wIGNvbmRpdGlvbiBhcmUK
KyAgICAgICAgICAgIC8vIGV4ZWN1dGVkIGJlZm9yZSB0aGUgbG9vcC4gVGhleSBuZWVkIHRvIGJl
IGluIGEgbmV3IHNjb3BlLgorICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbG9vcFNjb3Bl
ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wU2VxdWVuY2UpOworCisgICAgICAgICAgICBUSW50
ZXJtTm9kZSAqaW5pdGlhbGl6ZXIgPSBtUGFyZW50TG9vcC0+Z2V0SW5pdCgpOworICAgICAgICAg
ICAgaWYgKGluaXRpYWxpemVyICE9IG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgLy8gTW92ZSB0aGUgaW5pdGlhbGl6ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgb3V0ZXIg
c2NvcGUsIHNvIHRoYXQgY29uZGl0aW9uIGNhbgorICAgICAgICAgICAgICAgIC8vIGRlcGVuZCBv
biBpdC4KKyAgICAgICAgICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRl
RW50cnkobVBhcmVudExvb3AsIGluaXRpYWxpemVyLCBudWxscHRyLCBmYWxzZSkpOworICAgICAg
ICAgICAgICAgIGxvb3BTY29wZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGluaXRpYWxpemVy
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbG9vcFNjb3BlLT5nZXRTZXF1ZW5jZSgp
LT5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2RlKSk7CisgICAgICAgICAg
ICBsb29wU2NvcGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhtUGFyZW50TG9vcCk7CisgICAg
ICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlVXBkYXRlRW50cnkobUxvb3BQYXJl
bnQsIG1QYXJlbnRMb29wLCBsb29wU2NvcGUsIHRydWUpKTsKKworICAgICAgICAgICAgLy8gVGhl
IHNlY29uZCBjb3B5IG9mIHRoZSBwYXJ0IG9mIHRoZSBsb29wIGNvbmRpdGlvbiBpcyBleGVjdXRl
ZCBpbnNpZGUgdGhlIGxvb3AuCisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9u
c0luTG9vcDsKKyAgICAgICAgICAgIGluc2VydGlvbnNJbkxvb3AucHVzaF9iYWNrKGNyZWF0ZVRl
bXBBc3NpZ25tZW50KG5vZGUtPmRlZXBDb3B5KCkpKTsKKyAgICAgICAgICAgIG1JbnNlcnRpb25z
LnB1c2hfYmFjayhOb2RlSW5zZXJ0TXVsdGlwbGVFbnRyeShib2R5LCBib2R5LT5nZXRTZXF1ZW5j
ZSgpLT5zaXplKCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVtcHR5LCBpbnNlcnRpb25zSW5Mb29wKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKG1Jbkxvb3BFeHByZXNzaW9u
KQorICAgIHsKKyAgICAgICAgVEludGVybVR5cGVkICptb3ZlZEV4cHJlc3Npb24gPSBtUGFyZW50
TG9vcC0+Z2V0RXhwcmVzc2lvbigpOworICAgICAgICBtUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhO
b2RlVXBkYXRlRW50cnkobVBhcmVudExvb3AsIG1vdmVkRXhwcmVzc2lvbiwgbnVsbHB0ciwgZmFs
c2UpKTsKKyAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYm9keSA9IG1QYXJlbnRMb29wLT5nZXRC
b2R5KCk7CisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0eTsKKyAgICAgICAgVEludGVybVNl
cXVlbmNlIGluc2VydGlvbnM7CisgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKG1vdmVkRXhw
cmVzc2lvbik7CisgICAgICAgIG1JbnNlcnRpb25zLnB1c2hfYmFjaygKKyAgICAgICAgICAgIE5v
ZGVJbnNlcnRNdWx0aXBsZUVudHJ5KGJvZHksIGJvZHktPmdldFNlcXVlbmNlKCktPnNpemUoKSAt
IDEsIGVtcHR5LCBpbnNlcnRpb25zKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVW5mb2xkU2hvcnRDaXJjdWl0VHJhdmVyc2VyOjpu
ZXh0SXRlcmF0aW9uKCkKK3sKKyAgICBtRm91bmRTaG9ydENpcmN1aXQgPSBmYWxzZTsKKyAgICBu
ZXh0VGVtcG9yYXJ5SW5kZXgoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKwordm9pZCBVbmZvbGRT
aG9ydENpcmN1aXRUb0lmKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFy
eUluZGV4KQoreworICAgIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlciB0cmF2ZXJzZXI7Cisg
ICAgQVNTRVJUKHRlbXBvcmFyeUluZGV4ICE9IG51bGxwdHIpOworICAgIHRyYXZlcnNlci51c2VU
ZW1wb3JhcnlJbmRleCh0ZW1wb3JhcnlJbmRleCk7CisgICAgLy8gVW5mb2xkIG9uZSBvcGVyYXRv
ciBhdCBhIHRpbWUsIGFuZCByZXNldCB0aGUgdHJhdmVyc2VyIGJldHdlZW4gaXRlcmF0aW9ucy4K
KyAgICBkbworICAgIHsKKyAgICAgICAgdHJhdmVyc2VyLm5leHRJdGVyYXRpb24oKTsKKyAgICAg
ICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CisgICAgICAgIGlmICh0cmF2ZXJzZXIuZm91
bmRTaG9ydENpcmN1aXQoKSkKKyAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7Cisg
ICAgfQorICAgIHdoaWxlICh0cmF2ZXJzZXIuZm91bmRTaG9ydENpcmN1aXQoKSk7Cit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRT
aG9ydENpcmN1aXRUb0lmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTggQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFuIEFTVCB0
cmF2ZXJzZXIgdG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBpZi1lbHNl
IHN0YXRlbWVudHMuCisvLyBUaGUgcmVzdWx0cyBhcmUgYXNzaWduZWQgdG8gcyMgdGVtcG9yYXJp
ZXMsIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSBtYWluIHRyYW5zbGF0b3IgaW5zdGVhZCBvZgorLy8g
dGhlIG9yaWdpbmFsIGV4cHJlc3Npb24uCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFU
T1JfVU5GT0xEU0hPUlRDSVJDVUlUX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfVU5G
T0xEU0hPUlRDSVJDVUlUX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOworCit2b2lkIFVuZm9sZFNo
b3J0Q2lyY3VpdFRvSWYoVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5
SW5kZXgpOworCisjZW5kaWYgICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VORk9MRFNIT1JUQ0lS
Q1VJVF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVW5pZm9ybUhMU0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmNwcAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VW5pZm9ybUhMU0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxMSArODksMTIgQEAKICAgICAg
ICAgfQogICAgIH0KIAotICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLXVuc2lnbmVkIGludCBVbmlmb3JtSExTTDo6ZGVjbGFyZVVu
aWZvcm1BbmRBc3NpZ25SZWdpc3Rlcihjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAm
bmFtZSkKK3Vuc2lnbmVkIGludCBVbmlmb3JtSExTTDo6YXNzaWduVW5pZm9ybVJlZ2lzdGVyKGNv
bnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0UmVnaXN0ZXJDb3VudCkKIHsK
ICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJbmRleCA9IChJc1NhbXBsZXIodHlwZS5nZXRCYXNp
Y1R5cGUoKSkgPyBtU2FtcGxlclJlZ2lzdGVyIDogbVVuaWZvcm1SZWdpc3Rlcik7CiAKQEAgLTEx
Miw1MCArMTEzLDI0MiBAQAogICAgIHsKICAgICAgICAgbVVuaWZvcm1SZWdpc3RlciArPSByZWdp
c3RlckNvdW50OwogICAgIH0KKyAgICBpZiAob3V0UmVnaXN0ZXJDb3VudCkKKyAgICB7CisgICAg
ICAgICpvdXRSZWdpc3RlckNvdW50ID0gcmVnaXN0ZXJDb3VudDsKKyAgICB9CisgICAgcmV0dXJu
IHJlZ2lzdGVySW5kZXg7Cit9CiAKK3Vuc2lnbmVkIGludCBVbmlmb3JtSExTTDo6YXNzaWduU2Ft
cGxlckluU3RydWN0VW5pZm9ybVJlZ2lzdGVyKGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0UmVnaXN0ZXJDb3VudCkK
K3sKKyAgICAvLyBTYW1wbGVyIHRoYXQgaXMgYSBmaWVsZCBvZiBhIHVuaWZvcm0gc3RydWN0dXJl
LgorICAgIEFTU0VSVChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpOworICAgIHVuc2ln
bmVkIGludCByZWdpc3RlckluZGV4ID0gbVNhbXBsZXJSZWdpc3RlcjsKKyAgICBtVW5pZm9ybVJl
Z2lzdGVyTWFwW3N0ZDo6c3RyaW5nKG5hbWUuY19zdHIoKSldID0gcmVnaXN0ZXJJbmRleDsKKyAg
ICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb3VudCA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRB
cnJheVNpemUoKSA6IDE7CisgICAgbVNhbXBsZXJSZWdpc3RlciArPSByZWdpc3RlckNvdW50Owor
ICAgIGlmIChvdXRSZWdpc3RlckNvdW50KQorICAgIHsKKyAgICAgICAgKm91dFJlZ2lzdGVyQ291
bnQgPSByZWdpc3RlckNvdW50OworICAgIH0KICAgICByZXR1cm4gcmVnaXN0ZXJJbmRleDsKIH0K
IAotVFN0cmluZyBVbmlmb3JtSExTTDo6dW5pZm9ybXNIZWFkZXIoU2hTaGFkZXJPdXRwdXQgb3V0
cHV0VHlwZSwgY29uc3QgUmVmZXJlbmNlZFN5bWJvbHMgJnJlZmVyZW5jZWRVbmlmb3JtcykKK3Zv
aWQgVW5pZm9ybUhMU0w6Om91dHB1dEhMU0xTYW1wbGVyVW5pZm9ybUdyb3VwKAorICAgIFRJbmZv
U2lua0Jhc2UgJm91dCwKKyAgICBjb25zdCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0ZXh0dXJl
R3JvdXAsCisgICAgY29uc3QgVFZlY3Rvcjxjb25zdCBUSW50ZXJtU3ltYm9sICo+ICZncm91cCwK
KyAgICBjb25zdCBUTWFwPGNvbnN0IFRJbnRlcm1TeW1ib2wgKiwgVFN0cmluZz4gJnNhbXBsZXJJ
blN0cnVjdFN5bWJvbHNUb0FQSU5hbWVzLAorICAgIHVuc2lnbmVkIGludCAqZ3JvdXBUZXh0dXJl
UmVnaXN0ZXJJbmRleCkKIHsKLSAgICBUU3RyaW5nIHVuaWZvcm1zOworICAgIGlmIChncm91cC5l
bXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB1bnNpZ25lZCBpbnQg
Z3JvdXBSZWdpc3RlckNvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IFRJbnRlcm1TeW1ib2wgKnVu
aWZvcm0gOiBncm91cCkKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlICAgPSB1bmlm
b3JtLT5nZXRUeXBlKCk7CisgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB1bmlmb3JtLT5n
ZXRTeW1ib2woKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQ7CiAKLSAgICBm
b3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciB1bmlmb3JtSXQgPSByZWZlcmVu
Y2VkVW5pZm9ybXMuYmVnaW4oKTsKLSAgICAgICAgIHVuaWZvcm1JdCAhPSByZWZlcmVuY2VkVW5p
Zm9ybXMuZW5kKCk7IHVuaWZvcm1JdCsrKQorICAgICAgICAvLyBUaGUgdW5pZm9ybSBtaWdodCBi
ZSBqdXN0IGEgcmVndWxhciBzYW1wbGVyIG9yIG9uZSBleHRyYWN0ZWQgZnJvbSBhIHN0cnVjdC4K
KyAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJBcnJheUluZGV4ID0gMHU7CisgICAgICAgIGNv
bnN0IFVuaWZvcm0gKnVuaWZvcm1CeU5hbWUgPSBmaW5kVW5pZm9ybUJ5TmFtZShuYW1lKTsKKyAg
ICAgICAgaWYgKHVuaWZvcm1CeU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNhbXBsZXJB
cnJheUluZGV4ID0gYXNzaWduVW5pZm9ybVJlZ2lzdGVyKHR5cGUsIG5hbWUsICZyZWdpc3RlckNv
dW50KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChzYW1wbGVySW5TdHJ1Y3RTeW1ib2xzVG9BUElOYW1lcy5maW5kKHVuaWZvcm0pICE9Cisg
ICAgICAgICAgICAgICAgICAgc2FtcGxlckluU3RydWN0U3ltYm9sc1RvQVBJTmFtZXMuZW5kKCkp
OworICAgICAgICAgICAgc2FtcGxlckFycmF5SW5kZXggPSBhc3NpZ25TYW1wbGVySW5TdHJ1Y3RV
bmlmb3JtUmVnaXN0ZXIoCisgICAgICAgICAgICAgICAgdHlwZSwgc2FtcGxlckluU3RydWN0U3lt
Ym9sc1RvQVBJTmFtZXMuYXQodW5pZm9ybSksICZyZWdpc3RlckNvdW50KTsKKyAgICAgICAgfQor
ICAgICAgICBncm91cFJlZ2lzdGVyQ291bnQgKz0gcmVnaXN0ZXJDb3VudDsKKworICAgICAgICBp
ZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAic3RhdGlj
IGNvbnN0IHVpbnQgIiA8PCBEZWNvcmF0ZUlmTmVlZGVkKHVuaWZvcm0tPmdldE5hbWUoKSkgPDwg
QXJyYXlTdHJpbmcodHlwZSkKKyAgICAgICAgICAgICAgICA8PCAiID0geyI7CisgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHR5cGUuZ2V0QXJyYXlTaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiLCAiOworICAgICAgICAgICAgICAgIG91dCA8PCAoc2FtcGxlckFycmF5SW5kZXggKyBp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dCA8PCAifTtcbiI7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBjb25z
dCB1aW50ICIgPDwgRGVjb3JhdGVJZk5lZWRlZCh1bmlmb3JtLT5nZXROYW1lKCkpIDw8ICIgPSAi
CisgICAgICAgICAgICAgICAgPDwgc2FtcGxlckFycmF5SW5kZXggPDwgIjtcbiI7CisgICAgICAg
IH0KKyAgICB9CisgICAgVFN0cmluZyBzdWZmaXggPSBUZXh0dXJlR3JvdXBTdWZmaXgodGV4dHVy
ZUdyb3VwKTsKKyAgICAvLyBTaW5jZSBITFNMX1RFWFRVUkVfMkQgaXMgdGhlIGZpcnN0IGdyb3Vw
LCBpdCBoYXMgYSBmaXhlZCBvZmZzZXQgb2YgemVyby4KKyAgICBpZiAodGV4dHVyZUdyb3VwICE9
IEhMU0xfVEVYVFVSRV8yRCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgJnVu
aWZvcm0gPSAqdW5pZm9ybUl0LT5zZWNvbmQ7Ci0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0g
dW5pZm9ybS5nZXRUeXBlKCk7Ci0gICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB1bmlmb3Jt
LmdldFN5bWJvbCgpOworICAgICAgICBvdXQgPDwgInN0YXRpYyBjb25zdCB1aW50IHRleHR1cmVJ
bmRleE9mZnNldCIgPDwgc3VmZml4IDw8ICIgPSAiCisgICAgICAgICAgICA8PCAoKmdyb3VwVGV4
dHVyZVJlZ2lzdGVySW5kZXgpIDw8ICI7XG4iOworICAgICAgICBvdXQgPDwgInN0YXRpYyBjb25z
dCB1aW50IHNhbXBsZXJJbmRleE9mZnNldCIgPDwgc3VmZml4IDw8ICIgPSAiCisgICAgICAgICAg
ICA8PCAoKmdyb3VwVGV4dHVyZVJlZ2lzdGVySW5kZXgpIDw8ICI7XG4iOworICAgIH0KKyAgICBv
dXQgPDwgInVuaWZvcm0gIiA8PCBUZXh0dXJlU3RyaW5nKHRleHR1cmVHcm91cCkgPDwgIiB0ZXh0
dXJlcyIgPDwgc3VmZml4IDw8ICJbIgorICAgICAgICA8PCBncm91cFJlZ2lzdGVyQ291bnQgPDwg
Il0iCisgICAgICAgIDw8ICIgOiByZWdpc3Rlcih0IiA8PCAoKmdyb3VwVGV4dHVyZVJlZ2lzdGVy
SW5kZXgpIDw8ICIpO1xuIjsKKyAgICBvdXQgPDwgInVuaWZvcm0gIiA8PCBTYW1wbGVyU3RyaW5n
KHRleHR1cmVHcm91cCkgPDwgIiBzYW1wbGVycyIgPDwgc3VmZml4IDw8ICJbIgorICAgICAgICA8
PCBncm91cFJlZ2lzdGVyQ291bnQgPDwgIl0iCisgICAgICAgIDw8ICIgOiByZWdpc3RlcihzIiA8
PCAoKmdyb3VwVGV4dHVyZVJlZ2lzdGVySW5kZXgpIDw8ICIpO1xuIjsKKyAgICAqZ3JvdXBUZXh0
dXJlUmVnaXN0ZXJJbmRleCArPSBncm91cFJlZ2lzdGVyQ291bnQ7Cit9CiAKLSAgICAgICAgdW5z
aWduZWQgaW50IHJlZ2lzdGVySW5kZXggPSBkZWNsYXJlVW5pZm9ybUFuZEFzc2lnblJlZ2lzdGVy
KHR5cGUsIG5hbWUpOwordm9pZCBVbmlmb3JtSExTTDo6b3V0cHV0SExTTDRfMF9GTDlfM1NhbXBs
ZXIoVEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUTmFtZSAmbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCByZWdpc3Rlcklu
ZGV4KQoreworICAgIG91dCA8PCAidW5pZm9ybSAiIDw8IFNhbXBsZXJTdHJpbmcodHlwZS5nZXRC
YXNpY1R5cGUoKSkgPDwgIiBzYW1wbGVyXyIKKyAgICAgICAgPDwgRGVjb3JhdGVVbmlmb3JtKG5h
bWUsIHR5cGUpIDw8IEFycmF5U3RyaW5nKHR5cGUpIDw8ICIgOiByZWdpc3RlcihzIiA8PCBzdHIo
cmVnaXN0ZXJJbmRleCkKKyAgICAgICAgPDwgIik7XG4iOworICAgIG91dCA8PCAidW5pZm9ybSAi
IDw8IFRleHR1cmVTdHJpbmcodHlwZS5nZXRCYXNpY1R5cGUoKSkgPDwgIiB0ZXh0dXJlXyIKKyAg
ICAgICAgPDwgRGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpIDw8IEFycmF5U3RyaW5nKHR5cGUp
IDw8ICIgOiByZWdpc3Rlcih0IiA8PCBzdHIocmVnaXN0ZXJJbmRleCkKKyAgICAgICAgPDwgIik7
XG4iOworfQogCi0gICAgICAgIGlmIChvdXRwdXRUeXBlID09IFNIX0hMU0wxMV9PVVRQVVQgJiYg
SXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKSAgIC8vIEFsc28gZGVjbGFyZSB0aGUgdGV4
dHVyZQordm9pZCBVbmlmb3JtSExTTDo6b3V0cHV0VW5pZm9ybShUSW5mb1NpbmtCYXNlICZvdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTmFtZSAmbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgp
Cit7CisgICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsK
KyAgICAvLyBJZiB0aGlzIGlzIGEgbmFtZWxlc3Mgc3RydWN0LCB3ZSBuZWVkIHRvIHVzZSBpdHMg
ZnVsbCBkZWZpbml0aW9uLCByYXRoZXIgdGhhbiBpdHMgKGVtcHR5KQorICAgIC8vIG5hbWUuCisg
ICAgLy8gVHlwZVN0cmluZygpIHdpbGwgaW52b2tlIGRlZmluZU5hbWVsZXNzIGluIHRoaXMgY2Fz
ZTsgcXVhbGlmaWVyIHByZWZpeGVzIGFyZSB1bm5lY2Vzc2FyeSBmb3IKKyAgICAvLyBuYW1lbGVz
cyBzdHJ1Y3RzIGluIEVTLCBhcyBuYW1lbGVzcyBzdHJ1Y3RzIGNhbm5vdCBiZSB1c2VkIGFueXdo
ZXJlIHRoYXQgbGF5b3V0IHF1YWxpZmllcnMKKyAgICAvLyBhcmUgcGVybWl0dGVkLgorICAgIGNv
bnN0IFRTdHJpbmcgJnR5cGVOYW1lID0gKChzdHJ1Y3R1cmUgJiYgIXN0cnVjdHVyZS0+bmFtZSgp
LmVtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gUXVhbGlmaWVk
U3RydWN0TmFtZVN0cmluZygqc3RydWN0dXJlLCBmYWxzZSwgZmFsc2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogVHlwZVN0cmluZyh0eXBlKSk7CisKKyAgICBjb25zdCBU
U3RyaW5nICZyZWdpc3RlclN0cmluZyA9CisgICAgICAgIFRTdHJpbmcoInJlZ2lzdGVyKCIpICsg
VW5pZm9ybVJlZ2lzdGVyUHJlZml4KHR5cGUpICsgc3RyKHJlZ2lzdGVySW5kZXgpICsgIikiOwor
CisgICAgb3V0IDw8ICJ1bmlmb3JtICIgPDwgdHlwZU5hbWUgPDwgIiAiOworCisgICAgb3V0IDw8
IERlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKTsKKworICAgIG91dCA8PCBBcnJheVN0cmluZyh0
eXBlKSA8PCAiIDogIiA8PCByZWdpc3RlclN0cmluZyA8PCAiO1xuIjsKK30KKwordm9pZCBVbmlm
b3JtSExTTDo6dW5pZm9ybXNIZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZmVyZW5jZWRTeW1ib2xzICZyZWZlcmVu
Y2VkVW5pZm9ybXMpCit7CisgICAgaWYgKCFyZWZlcmVuY2VkVW5pZm9ybXMuZW1wdHkoKSkKKyAg
ICB7CisgICAgICAgIG91dCA8PCAiLy8gVW5pZm9ybXNcblxuIjsKKyAgICB9CisgICAgLy8gSW4g
dGhlIGNhc2Ugb2YgSExTTCA0LCBzYW1wbGVyIHVuaWZvcm1zIG5lZWQgdG8gYmUgZ3JvdXBlZCBi
eSB0eXBlIGJlZm9yZSB0aGUgY29kZSBpcworICAgIC8vIHdyaXR0ZW4uIFRoZXkgYXJlIGdyb3Vw
ZWQgYmFzZWQgb24gdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBITFNMIHRleHR1cmUgdHlwZSBhbmQK
KyAgICAvLyBITFNMIHNhbXBsZXIgdHlwZSwgZW51bWVyYXRlZCBpbiBITFNMVGV4dHVyZVNhbXBs
ZXJHcm91cC4KKyAgICBUVmVjdG9yPFRWZWN0b3I8Y29uc3QgVEludGVybVN5bWJvbCAqPj4gZ3Jv
dXBlZFNhbXBsZXJVbmlmb3JtcyhITFNMX1RFWFRVUkVfTUFYICsgMSk7CisgICAgVE1hcDxjb25z
dCBUSW50ZXJtU3ltYm9sICosIFRTdHJpbmc+IHNhbXBsZXJJblN0cnVjdFN5bWJvbHNUb0FQSU5h
bWVzOworICAgIGZvciAoYXV0byAmdW5pZm9ybUl0IDogcmVmZXJlbmNlZFVuaWZvcm1zKQorICAg
IHsKKyAgICAgICAgLy8gT3V0cHV0IHJlZ3VsYXIgdW5pZm9ybXMuIEdyb3VwIHNhbXBsZXIgdW5p
Zm9ybXMgYnkgdHlwZS4KKyAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAmdW5pZm9ybSA9ICp1
bmlmb3JtSXQuc2Vjb25kOworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSAgICAgICAgICAgID0g
dW5pZm9ybS5nZXRUeXBlKCk7CisgICAgICAgIGNvbnN0IFROYW1lICZuYW1lICAgICAgICAgICAg
PSB1bmlmb3JtLmdldE5hbWUoKTsKKworICAgICAgICBpZiAob3V0cHV0VHlwZSA9PSBTSF9ITFNM
XzRfMV9PVVRQVVQgJiYgSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQogICAgICAgICB7
Ci0gICAgICAgICAgICB1bmlmb3JtcyArPSAidW5pZm9ybSAiICsgU2FtcGxlclN0cmluZyh0eXBl
KSArICIgc2FtcGxlcl8iICsgRGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgQXJyYXlTdHJp
bmcodHlwZSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgIiA6IHJlZ2lzdGVyKHMiICsgc3Ry
KHJlZ2lzdGVySW5kZXgpICsgIik7XG4iOwotCi0gICAgICAgICAgICB1bmlmb3JtcyArPSAidW5p
Zm9ybSAiICsgVGV4dHVyZVN0cmluZyh0eXBlKSArICIgdGV4dHVyZV8iICsgRGVjb3JhdGVVbmlm
b3JtKG5hbWUsIHR5cGUpICsgQXJyYXlTdHJpbmcodHlwZSkgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgIiA6IHJlZ2lzdGVyKHQiICsgc3RyKHJlZ2lzdGVySW5kZXgpICsgIik7XG4iOworICAg
ICAgICAgICAgSExTTFRleHR1cmVTYW1wbGVyR3JvdXAgZ3JvdXAgPSBUZXh0dXJlR3JvdXAodHlw
ZS5nZXRCYXNpY1R5cGUoKSk7CisgICAgICAgICAgICBncm91cGVkU2FtcGxlclVuaWZvcm1zW2dy
b3VwXS5wdXNoX2JhY2soJnVuaWZvcm0pOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG91
dHB1dFR5cGUgPT0gU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUICYmIElzU2FtcGxlcih0eXBlLmdl
dEJhc2ljVHlwZSgpKSkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lz
dGVySW5kZXggPSBhc3NpZ25Vbmlmb3JtUmVnaXN0ZXIodHlwZSwgbmFtZS5nZXRTdHJpbmcoKSwg
bnVsbHB0cik7CisgICAgICAgICAgICBvdXRwdXRITFNMNF8wX0ZMOV8zU2FtcGxlcihvdXQsIHR5
cGUsIG5hbWUsIHJlZ2lzdGVySW5kZXgpOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRT
dHJ1Y3QoKTsKLSAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuYW1lbGVzcyBzdHJ1Y3QsIHdl
IG5lZWQgdG8gdXNlIGl0cyBmdWxsIGRlZmluaXRpb24sIHJhdGhlciB0aGFuIGl0cyAoZW1wdHkp
IG5hbWUuCi0gICAgICAgICAgICAvLyBUeXBlU3RyaW5nKCkgd2lsbCBpbnZva2UgZGVmaW5lTmFt
ZWxlc3MgaW4gdGhpcyBjYXNlOyBxdWFsaWZpZXIgcHJlZml4ZXMgYXJlIHVubmVjZXNzYXJ5IGZv
ciAKLSAgICAgICAgICAgIC8vIG5hbWVsZXNzIHN0cnVjdHMgaW4gRVMsIGFzIG5hbWVsZXNzIHN0
cnVjdHMgY2Fubm90IGJlIHVzZWQgYW55d2hlcmUgdGhhdCBsYXlvdXQgcXVhbGlmaWVycyBhcmUK
LSAgICAgICAgICAgIC8vIHBlcm1pdHRlZC4KLSAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnR5
cGVOYW1lID0gKChzdHJ1Y3R1cmUgJiYgIXN0cnVjdHVyZS0+bmFtZSgpLmVtcHR5KCkpID8KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsaWZpZWRTdHJ1Y3ROYW1l
U3RyaW5nKCpzdHJ1Y3R1cmUsIGZhbHNlLCBmYWxzZSkgOiBUeXBlU3RyaW5nKHR5cGUpKTsKKyAg
ICAgICAgICAgIGlmICh0eXBlLmlzU3RydWN0dXJlQ29udGFpbmluZ1NhbXBsZXJzKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgVFZlY3RvcjxUSW50ZXJtU3ltYm9sICo+IHNhbXBs
ZXJTeW1ib2xzOworICAgICAgICAgICAgICAgIFRNYXA8VEludGVybVN5bWJvbCAqLCBUU3RyaW5n
PiBzeW1ib2xzVG9BUElOYW1lczsKKyAgICAgICAgICAgICAgICBpbnQgYXJyYXlPZlN0cnVjdHNT
aXplID0gdHlwZS5pc0FycmF5KCkgPyB0eXBlLmdldEFycmF5U2l6ZSgpIDogMDsKKyAgICAgICAg
ICAgICAgICB0eXBlLmNyZWF0ZVNhbXBsZXJTeW1ib2xzKCJhbmdsZV8iICsgbmFtZS5nZXRTdHJp
bmcoKSwgbmFtZS5nZXRTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFycmF5T2ZTdHJ1Y3RzU2l6ZSwgJnNhbXBsZXJTeW1ib2xzLCAmc3ltYm9sc1Rv
QVBJTmFtZXMpOworICAgICAgICAgICAgICAgIGZvciAoVEludGVybVN5bWJvbCAqc2FtcGxlciA6
IHNhbXBsZXJTeW1ib2xzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFR5cGUgJnNhbXBsZXJUeXBlID0gc2FtcGxlci0+Z2V0VHlwZSgpOwogCi0gICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICZyZWdpc3RlclN0cmluZyA9IFRTdHJpbmcoInJlZ2lzdGVyKCIp
ICsgVW5pZm9ybVJlZ2lzdGVyUHJlZml4KHR5cGUpICsgc3RyKHJlZ2lzdGVySW5kZXgpICsgIiki
OworICAgICAgICAgICAgICAgICAgICAvLyBXaWxsIHVzZSBhbmdsZV8gcHJlZml4IGluc3RlYWQg
b2YgcmVndWxhciBwcmVmaXguCisgICAgICAgICAgICAgICAgICAgIHNhbXBsZXItPnNldEludGVy
bmFsKHRydWUpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBUTmFtZSAmc2FtcGxlck5hbWUg
PSBzYW1wbGVyLT5nZXROYW1lKCk7CiAKLSAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3Jt
ICIgKyB0eXBlTmFtZSArICIgIiArIERlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKSArIEFycmF5
U3RyaW5nKHR5cGUpICsgIiA6ICIgKyByZWdpc3RlclN0cmluZyArICI7XG4iOworICAgICAgICAg
ICAgICAgICAgICBpZiAob3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMV9PVVRQVVQpCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEhMU0xUZXh0dXJlU2FtcGxl
ckdyb3VwIGdyb3VwID0gVGV4dHVyZUdyb3VwKHNhbXBsZXJUeXBlLmdldEJhc2ljVHlwZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwZWRTYW1wbGVyVW5pZm9ybXNbZ3JvdXBdLnB1
c2hfYmFjayhzYW1wbGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXJJblN0cnVj
dFN5bWJvbHNUb0FQSU5hbWVzW3NhbXBsZXJdID0gc3ltYm9sc1RvQVBJTmFtZXNbc2FtcGxlcl07
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob3V0
cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWdpc3RlckluZGV4ID0g
YXNzaWduU2FtcGxlckluU3RydWN0VW5pZm9ybVJlZ2lzdGVyKAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbXBsZXJUeXBlLCBzeW1ib2xzVG9BUElOYW1lc1tzYW1wbGVyXSwgbnVsbHB0
cik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRITFNMNF8wX0ZMOV8zU2FtcGxlcihv
dXQsIHNhbXBsZXJUeXBlLCBzYW1wbGVyTmFtZSwgcmVnaXN0ZXJJbmRleCk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3V0cHV0VHlwZSA9PSBTSF9ITFNM
XzNfMF9PVVRQVVQpOworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lz
dGVySW5kZXggPSBhc3NpZ25TYW1wbGVySW5TdHJ1Y3RVbmlmb3JtUmVnaXN0ZXIoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlclR5cGUsIHN5bWJvbHNUb0FQSU5hbWVzW3NhbXBs
ZXJdLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFVuaWZvcm0ob3V0
LCBzYW1wbGVyVHlwZSwgc2FtcGxlck5hbWUsIHJlZ2lzdGVySW5kZXgpOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAg
dW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXggPSBhc3NpZ25Vbmlmb3JtUmVnaXN0ZXIodHlwZSwg
bmFtZS5nZXRTdHJpbmcoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBvdXRwdXRVbmlmb3JtKG91
dCwgdHlwZSwgbmFtZSwgcmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gKHVuaWZvcm1zLmVtcHR5KCkgPyAiIiA6ICgiLy8gVW5pZm9ybXNcblxuIiArIHVuaWZv
cm1zKSk7CisgICAgaWYgKG91dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKQorICAgIHsK
KyAgICAgICAgdW5zaWduZWQgaW50IGdyb3VwVGV4dHVyZVJlZ2lzdGVySW5kZXggPSAwOworICAg
ICAgICAvLyBURVhUVVJFXzJEIGlzIHNwZWNpYWwsIGluZGV4IG9mZnNldCBpcyBhc3N1bWVkIHRv
IGJlIDAgYW5kIG9taXR0ZWQgaW4gdGhhdCBjYXNlLgorICAgICAgICBBU1NFUlQoSExTTF9URVhU
VVJFX01JTiA9PSBITFNMX1RFWFRVUkVfMkQpOworICAgICAgICBmb3IgKGludCBncm91cElkID0g
SExTTF9URVhUVVJFX01JTjsgZ3JvdXBJZCA8IEhMU0xfVEVYVFVSRV9NQVg7ICsrZ3JvdXBJZCkK
KyAgICAgICAgeworICAgICAgICAgICAgb3V0cHV0SExTTFNhbXBsZXJVbmlmb3JtR3JvdXAoCisg
ICAgICAgICAgICAgICAgb3V0LCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cChncm91cElkKSwgZ3Jv
dXBlZFNhbXBsZXJVbmlmb3Jtc1tncm91cElkXSwKKyAgICAgICAgICAgICAgICBzYW1wbGVySW5T
dHJ1Y3RTeW1ib2xzVG9BUElOYW1lcywgJmdyb3VwVGV4dHVyZVJlZ2lzdGVySW5kZXgpOworICAg
ICAgICB9CisgICAgfQogfQogCit2b2lkIFVuaWZvcm1ITFNMOjpzYW1wbGVyTWV0YWRhdGFVbmlm
b3JtcyhUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IGNoYXIgKnJlZykKK3sKKyAgICAvLyBJZiBt
U2FtcGxlclJlZ2lzdGVyIGlzIDAgdGhlIHNoYWRlciBkb2Vzbid0IHVzZSBhbnkgdGV4dHVyZXMu
CisgICAgaWYgKG1TYW1wbGVyUmVnaXN0ZXIgPiAwKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIg
ICAgc3RydWN0IFNhbXBsZXJNZXRhZGF0YVxuIgorICAgICAgICAgICAgICAgIiAgICB7XG4iCisg
ICAgICAgICAgICAgICAiICAgICAgICBpbnQgYmFzZUxldmVsO1xuIgorICAgICAgICAgICAgICAg
IiAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0cztcbiIKKyAgICAgICAgICAgICAgICIgICAg
ICAgIGludCB3cmFwTW9kZXM7XG4iCisgICAgICAgICAgICAgICAiICAgICAgICBpbnQgcGFkZGlu
ZztcbiIKKyAgICAgICAgICAgICAgICIgICAgfTtcbiIKKyAgICAgICAgICAgICAgICIgICAgU2Ft
cGxlck1ldGFkYXRhIHNhbXBsZXJNZXRhZGF0YVsiCisgICAgICAgICAgICA8PCBtU2FtcGxlclJl
Z2lzdGVyIDw8ICJdIDogcGFja29mZnNldCgiIDw8IHJlZyA8PCAiKTtcbiI7CisgICAgfQorfQor
CiBUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja3NIZWFkZXIoY29uc3QgUmVmZXJl
bmNlZFN5bWJvbHMgJnJlZmVyZW5jZWRJbnRlcmZhY2VCbG9ja3MpCiB7CiAgICAgVFN0cmluZyBp
bnRlcmZhY2VCbG9ja3M7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmgJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1VuaWZvcm1ITFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKICNkZWZp
bmUgQ09NUElMRVJfVFJBTlNMQVRPUl9VTklGT1JNSExTTF9IXwogCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9VdGlsc0hMU0wuaCIKIAogbmFtZXNwYWNlIHNoCiB7CkBAIC0yMyw3ICsyNCwxMyBAQAogCiAg
ICAgdm9pZCByZXNlcnZlVW5pZm9ybVJlZ2lzdGVycyh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb3Vu
dCk7CiAgICAgdm9pZCByZXNlcnZlSW50ZXJmYWNlQmxvY2tSZWdpc3RlcnModW5zaWduZWQgaW50
IHJlZ2lzdGVyQ291bnQpOwotICAgIFRTdHJpbmcgdW5pZm9ybXNIZWFkZXIoU2hTaGFkZXJPdXRw
dXQgb3V0cHV0VHlwZSwgY29uc3QgUmVmZXJlbmNlZFN5bWJvbHMgJnJlZmVyZW5jZWRVbmlmb3Jt
cyk7CisgICAgdm9pZCB1bmlmb3Jtc0hlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVmZXJlbmNlZFN5bWJvbHMgJnJlZmVyZW5jZWRVbmlmb3Jtcyk7
CisKKyAgICAvLyBNdXN0IGJlIGNhbGxlZCBhZnRlciB1bmlmb3Jtc0hlYWRlcgorICAgIHZvaWQg
c2FtcGxlck1ldGFkYXRhVW5pZm9ybXMoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBjaGFyICpy
ZWcpOworCiAgICAgVFN0cmluZyBpbnRlcmZhY2VCbG9ja3NIZWFkZXIoY29uc3QgUmVmZXJlbmNl
ZFN5bWJvbHMgJnJlZmVyZW5jZWRJbnRlcmZhY2VCbG9ja3MpOwogCiAgICAgLy8gVXNlZCBmb3Ig
ZGlyZWN0IGluZGV4IHJlZmVyZW5jZXMKQEAgLTQ0LDkgKzUxLDMxIEBACiAgICAgVFN0cmluZyBp
bnRlcmZhY2VCbG9ja1N0cnVjdFN0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFj
ZUJsb2NrKTsKICAgICBjb25zdCBVbmlmb3JtICpmaW5kVW5pZm9ybUJ5TmFtZShjb25zdCBUU3Ry
aW5nICZuYW1lKSBjb25zdDsKIAorICAgIHZvaWQgb3V0cHV0SExTTDRfMF9GTDlfM1NhbXBsZXIo
VEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFR5cGUgJnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUTmFtZSAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGludCByZWdpc3RlckluZGV4KTsKKworICAgIHZvaWQgb3V0cHV0VW5pZm9y
bShUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBl
ICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTmFtZSAmbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgpOworCiAg
ICAgLy8gUmV0dXJucyB0aGUgdW5pZm9ybSdzIHJlZ2lzdGVyIGluZGV4Ci0gICAgdW5zaWduZWQg
aW50IGRlY2xhcmVVbmlmb3JtQW5kQXNzaWduUmVnaXN0ZXIoY29uc3QgVFR5cGUgJnR5cGUsIGNv
bnN0IFRTdHJpbmcgJm5hbWUpOworICAgIHVuc2lnbmVkIGludCBhc3NpZ25Vbmlmb3JtUmVnaXN0
ZXIoY29uc3QgVFR5cGUgJnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRSZWdpc3RlckNvdW50KTsKKyAgICB1bnNpZ25lZCBp
bnQgYXNzaWduU2FtcGxlckluU3RydWN0VW5pZm9ybVJlZ2lzdGVyKGNvbnN0IFRUeXBlICZ0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0UmVnaXN0ZXJDb3VudCk7CiAKKyAg
ICB2b2lkIG91dHB1dEhMU0xTYW1wbGVyVW5pZm9ybUdyb3VwKAorICAgICAgICBUSW5mb1NpbmtC
YXNlICZvdXQsCisgICAgICAgIGNvbnN0IEhMU0xUZXh0dXJlU2FtcGxlckdyb3VwIHRleHR1cmVH
cm91cCwKKyAgICAgICAgY29uc3QgVFZlY3Rvcjxjb25zdCBUSW50ZXJtU3ltYm9sICo+ICZncm91
cCwKKyAgICAgICAgY29uc3QgVE1hcDxjb25zdCBUSW50ZXJtU3ltYm9sICosIFRTdHJpbmc+ICZz
YW1wbGVySW5TdHJ1Y3RTeW1ib2xzVG9BUElOYW1lcywKKyAgICAgICAgdW5zaWduZWQgaW50ICpn
cm91cFRleHR1cmVSZWdpc3RlckluZGV4KTsKKwogICAgIHVuc2lnbmVkIGludCBtVW5pZm9ybVJl
Z2lzdGVyOwogICAgIHVuc2lnbmVkIGludCBtSW50ZXJmYWNlQmxvY2tSZWdpc3RlcjsKICAgICB1
bnNpZ25lZCBpbnQgbVNhbXBsZXJSZWdpc3RlcjsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNM
LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCwxNSAr
OCwxNiBAQAogLy8KIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgi
CisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCiBuYW1lc3BhY2Ugc2gKIHsKIAotVFN0cmluZyBT
YW1wbGVyU3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKQorVFN0cmluZyBTYW1wbGVyU3RyaW5nKGNv
bnN0IFRCYXNpY1R5cGUgdHlwZSkKIHsKLSAgICBpZiAoSXNTaGFkb3dTYW1wbGVyKHR5cGUuZ2V0
QmFzaWNUeXBlKCkpKQorICAgIGlmIChJc1NoYWRvd1NhbXBsZXIodHlwZSkpCiAgICAgewogICAg
ICAgICByZXR1cm4gIlNhbXBsZXJDb21wYXJpc29uU3RhdGUiOwogICAgIH0KQEAgLTI2LDQwICsy
NywxNjYgQEAKICAgICB9CiB9CiAKLVRTdHJpbmcgVGV4dHVyZVN0cmluZyhjb25zdCBUVHlwZSAm
dHlwZSkKK1RTdHJpbmcgU2FtcGxlclN0cmluZyhITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0eXBl
KQogewotICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkKKyAgICBpZiAodHlwZSA+PSBI
TFNMX0NPTVBBUklTT05fU0FNUExFUl9HUk9VUF9CRUdJTiAmJiB0eXBlIDw9IEhMU0xfQ09NUEFS
SVNPTl9TQU1QTEVSX0dST1VQX0VORCkKICAgICB7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRDog
ICAgICAgICAgICByZXR1cm4gIlRleHR1cmUyRCI7Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJl
OiAgICAgICAgICByZXR1cm4gIlRleHR1cmVDdWJlIjsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckV4
dGVybmFsT0VTOiAgIHJldHVybiAiVGV4dHVyZTJEIjsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJE
QXJyYXk6ICAgICAgIHJldHVybiAiVGV4dHVyZTJEQXJyYXkiOwotICAgICAgY2FzZSBFYnRTYW1w
bGVyM0Q6ICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlM0QiOwotICAgICAgY2FzZSBFYnRJU2Ft
cGxlcjJEOiAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkQ8aW50ND4iOwotICAgICAgY2FzZSBF
YnRJU2FtcGxlcjNEOiAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlM0Q8aW50ND4iOwotICAgICAg
Y2FzZSBFYnRJU2FtcGxlckN1YmU6ICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkRBcnJheTxpbnQ0
PiI7Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheTogICAgICByZXR1cm4gIlRleHR1cmUy
REFycmF5PGludDQ+IjsKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDogICAgICAgICAgIHJldHVy
biAiVGV4dHVyZTJEPHVpbnQ0PiI7Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6ICAgICAgICAg
ICByZXR1cm4gIlRleHR1cmUzRDx1aW50ND4iOwotICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6
ICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkRBcnJheTx1aW50ND4iOwotICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEQXJyYXk6ICAgICAgcmV0dXJuICJUZXh0dXJlMkRBcnJheTx1aW50ND4iOwotICAg
ICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6ICAgICAgcmV0dXJuICJUZXh0dXJlMkQiOwotICAg
ICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgcmV0dXJuICJUZXh0dXJlQ3ViZSI7Ci0g
ICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OiByZXR1cm4gIlRleHR1cmUyREFycmF5
IjsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIHJldHVybiAiU2FtcGxl
ckNvbXBhcmlzb25TdGF0ZSI7CiAgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVy
biAiU2FtcGxlclN0YXRlIjsKKyAgICB9Cit9CiAKK0hMU0xUZXh0dXJlU2FtcGxlckdyb3VwIFRl
eHR1cmVHcm91cChjb25zdCBUQmFzaWNUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQor
ICAgIHsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICByZXR1cm4gSExT
TF9URVhUVVJFXzJEOworICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICAgICAg
cmV0dXJuIEhMU0xfVEVYVFVSRV9DVUJFOworICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5h
bE9FUzoKKyAgICAgICAgICAgIHJldHVybiBITFNMX1RFWFRVUkVfMkQ7CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzJEX0FS
UkFZOworICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgICAgIHJldHVybiBITFNM
X1RFWFRVUkVfM0Q7CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAgICAgICAgIHJl
dHVybiBITFNMX1RFWFRVUkVfMkRfSU5UNDsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgor
ICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8zRF9JTlQ0OworICAgICAgICBjYXNlIEVi
dElTYW1wbGVyQ3ViZToKKyAgICAgICAgICAgIHJldHVybiBITFNMX1RFWFRVUkVfMkRfQVJSQVlf
SU5UNDsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICByZXR1
cm4gSExTTF9URVhUVVJFXzJEX0FSUkFZX0lOVDQ7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIy
RDoKKyAgICAgICAgICAgIHJldHVybiBITFNMX1RFWFRVUkVfMkRfVUlOVDQ7CisgICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAgICAgICAgIHJldHVybiBITFNMX1RFWFRVUkVfM0RfVUlO
VDQ7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAgICAgICAgICAgcmV0dXJuIEhM
U0xfVEVYVFVSRV8yRF9BUlJBWV9VSU5UNDsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJy
YXk6CisgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzJEX0FSUkFZX1VJTlQ0OworICAg
ICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBITFNMX1RF
WFRVUkVfMkRfQ09NUEFSSVNPTjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoK
KyAgICAgICAgICAgIHJldHVybiBITFNMX1RFWFRVUkVfQ1VCRV9DT01QQVJJU09OOworICAgICAg
ICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAgICAgICAgcmV0dXJuIEhMU0xf
VEVYVFVSRV8yRF9BUlJBWV9DT01QQVJJU09OOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV9VTktOT1dO
OworfQorCitUU3RyaW5nIFRleHR1cmVTdHJpbmcoY29uc3QgSExTTFRleHR1cmVTYW1wbGVyR3Jv
dXAgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEhMU0xf
VEVYVFVSRV8yRDoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJEIjsKKyAgICAgICAgY2Fz
ZSBITFNMX1RFWFRVUkVfQ1VCRToKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZUN1YmUiOwor
ICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgICAgIHJldHVybiAi
VGV4dHVyZTJEQXJyYXkiOworICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8zRDoKKyAgICAgICAg
ICAgIHJldHVybiAiVGV4dHVyZTNEIjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfSU5U
NDoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJEPGludDQ+IjsKKyAgICAgICAgY2FzZSBI
TFNMX1RFWFRVUkVfM0RfSU5UNDoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTNEPGludDQ+
IjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfQVJSQVlfSU5UNDoKKyAgICAgICAgICAg
IHJldHVybiAiVGV4dHVyZTJEQXJyYXk8aW50ND4iOworICAgICAgICBjYXNlIEhMU0xfVEVYVFVS
RV8yRF9VSU5UNDoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJEPHVpbnQ0PiI7CisgICAg
ICAgIGNhc2UgSExTTF9URVhUVVJFXzNEX1VJTlQ0OgorICAgICAgICAgICAgcmV0dXJuICJUZXh0
dXJlM0Q8dWludDQ+IjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfQVJSQVlfVUlOVDQ6
CisgICAgICAgICAgICByZXR1cm4gIlRleHR1cmUyREFycmF5PHVpbnQ0PiI7CisgICAgICAgIGNh
c2UgSExTTF9URVhUVVJFXzJEX0NPTVBBUklTT046CisgICAgICAgICAgICByZXR1cm4gIlRleHR1
cmUyRCI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFX0NVQkVfQ09NUEFSSVNPTjoKKyAgICAg
ICAgICAgIHJldHVybiAiVGV4dHVyZUN1YmUiOworICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8y
RF9BUlJBWV9DT01QQVJJU09OOgorICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkRBcnJheSI7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKwog
ICAgIHJldHVybiAiPHVua25vd24gdGV4dHVyZSB0eXBlPiI7CiB9CiAKLVRTdHJpbmcgRGVjb3Jh
dGVVbmlmb3JtKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFR5cGUgJnR5cGUpCitUU3Ry
aW5nIFRleHR1cmVTdHJpbmcoY29uc3QgVEJhc2ljVHlwZSB0eXBlKQogeworICAgIHJldHVybiBU
ZXh0dXJlU3RyaW5nKFRleHR1cmVHcm91cCh0eXBlKSk7Cit9CisKK1RTdHJpbmcgVGV4dHVyZUdy
b3VwU3VmZml4KGNvbnN0IEhMU0xUZXh0dXJlU2FtcGxlckdyb3VwIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkQ6CisgICAgICAg
ICAgICByZXR1cm4gIjJEIjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfQ1VCRToKKyAgICAg
ICAgICAgIHJldHVybiAiQ3ViZSI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0FSUkFZ
OgorICAgICAgICAgICAgcmV0dXJuICIyREFycmF5IjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRV
UkVfM0Q6CisgICAgICAgICAgICByZXR1cm4gIjNEIjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRV
UkVfMkRfSU5UNDoKKyAgICAgICAgICAgIHJldHVybiAiMkRfaW50NF8iOworICAgICAgICBjYXNl
IEhMU0xfVEVYVFVSRV8zRF9JTlQ0OgorICAgICAgICAgICAgcmV0dXJuICIzRF9pbnQ0XyI7Cisg
ICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0FSUkFZX0lOVDQ6CisgICAgICAgICAgICByZXR1
cm4gIjJEQXJyYXlfaW50NF8iOworICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8yRF9VSU5UNDoK
KyAgICAgICAgICAgIHJldHVybiAiMkRfdWludDRfIjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRV
UkVfM0RfVUlOVDQ6CisgICAgICAgICAgICByZXR1cm4gIjNEX3VpbnQ0XyI7CisgICAgICAgIGNh
c2UgSExTTF9URVhUVVJFXzJEX0FSUkFZX1VJTlQ0OgorICAgICAgICAgICAgcmV0dXJuICIyREFy
cmF5X3VpbnQ0XyI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0NPTVBBUklTT046Cisg
ICAgICAgICAgICByZXR1cm4gIjJEX2NvbXBhcmlzb24iOworICAgICAgICBjYXNlIEhMU0xfVEVY
VFVSRV9DVUJFX0NPTVBBUklTT046CisgICAgICAgICAgICByZXR1cm4gIkN1YmVfY29tcGFyaXNv
biI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0FSUkFZX0NPTVBBUklTT046CisgICAg
ICAgICAgICByZXR1cm4gIjJEQXJyYXlfY29tcGFyaXNvbiI7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiAiPHVua25vd24g
dGV4dHVyZSB0eXBlPiI7Cit9CisKK1RTdHJpbmcgVGV4dHVyZUdyb3VwU3VmZml4KGNvbnN0IFRC
YXNpY1R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gVGV4dHVyZUdyb3VwU3VmZml4KFRleHR1cmVH
cm91cCh0eXBlKSk7Cit9CisKK1RTdHJpbmcgVGV4dHVyZVR5cGVTdWZmaXgoY29uc3QgVEJhc2lj
VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0
SVNhbXBsZXJDdWJlOgorICAgICAgICAgICAgcmV0dXJuICJDdWJlX2ludDRfIjsKKyAgICAgICAg
Y2FzZSBFYnRVU2FtcGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4gIkN1YmVfdWludDRfIjsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEFsbCBvdGhlciB0eXBlcyBhcmUgaWRl
bnRpZmllZCBieSB0aGVpciBncm91cCBzdWZmaXgKKyAgICAgICAgICAgIHJldHVybiBUZXh0dXJl
R3JvdXBTdWZmaXgodHlwZSk7CisgICAgfQorfQorCitUU3RyaW5nIERlY29yYXRlVW5pZm9ybShj
b25zdCBUTmFtZSAmbmFtZSwgY29uc3QgVFR5cGUgJnR5cGUpCit7CiAgICAgaWYgKHR5cGUuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0U2FtcGxlckV4dGVybmFsT0VTKQogICAgIHsKLSAgICAgICAgcmV0
dXJuICJleF8iICsgc3RyaW5nOworICAgICAgICByZXR1cm4gImV4XyIgKyBuYW1lLmdldFN0cmlu
ZygpOwogICAgIH0KIAotICAgIHJldHVybiBEZWNvcmF0ZShzdHJpbmcpOworICAgIHJldHVybiBE
ZWNvcmF0ZUlmTmVlZGVkKG5hbWUpOwogfQogCiBUU3RyaW5nIERlY29yYXRlRmllbGQoY29uc3Qg
VFN0cmluZyAmc3RyaW5nLCBjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUpCkBAIC04Nyw2ICsy
MTQsMzAgQEAKICAgICByZXR1cm4gc3RyaW5nOwogfQogCitUU3RyaW5nIERlY29yYXRlSWZOZWVk
ZWQoY29uc3QgVE5hbWUgJm5hbWUpCit7CisgICAgaWYgKG5hbWUuaXNJbnRlcm5hbCgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG5hbWUuZ2V0U3RyaW5nKCk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiBEZWNvcmF0ZShuYW1lLmdldFN0cmluZygpKTsKKyAgICB9Cit9
CisKK1RTdHJpbmcgRGVjb3JhdGVGdW5jdGlvbklmTmVlZGVkKGNvbnN0IFROYW1lICZuYW1lKQor
eworICAgIGlmIChuYW1lLmlzSW50ZXJuYWwoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBURnVu
Y3Rpb246OnVubWFuZ2xlTmFtZShuYW1lLmdldFN0cmluZygpKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIERlY29yYXRlKFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5h
bWUuZ2V0U3RyaW5nKCkpKTsKKyAgICB9Cit9CisKIFRTdHJpbmcgVHlwZVN0cmluZyhjb25zdCBU
VHlwZSAmdHlwZSkKIHsKICAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdl
dFN0cnVjdCgpOwpAQCAtMjE3LDEzICszNjgsMTEgQEAKICAgICB7CiAgICAgICBjYXNlIEV2cVZh
cnlpbmdJbjogICAgICAgICAgIHJldHVybiAiIjsKICAgICAgIGNhc2UgRXZxRnJhZ21lbnRJbjog
ICAgICAgICAgcmV0dXJuICIiOwotICAgICAgY2FzZSBFdnFJbnZhcmlhbnRWYXJ5aW5nSW46ICBy
ZXR1cm4gIiI7CiAgICAgICBjYXNlIEV2cVNtb290aEluOiAgICAgICAgICAgIHJldHVybiAibGlu
ZWFyIjsKICAgICAgIGNhc2UgRXZxRmxhdEluOiAgICAgICAgICAgICAgcmV0dXJuICJub2ludGVy
cG9sYXRpb24iOwogICAgICAgY2FzZSBFdnFDZW50cm9pZEluOiAgICAgICAgICByZXR1cm4gImNl
bnRyb2lkIjsKICAgICAgIGNhc2UgRXZxVmFyeWluZ091dDogICAgICAgICAgcmV0dXJuICIiOwog
ICAgICAgY2FzZSBFdnFWZXJ0ZXhPdXQ6ICAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICBjYXNl
IEV2cUludmFyaWFudFZhcnlpbmdPdXQ6IHJldHVybiAiIjsKICAgICAgIGNhc2UgRXZxU21vb3Ro
T3V0OiAgICAgICAgICAgcmV0dXJuICJsaW5lYXIiOwogICAgICAgY2FzZSBFdnFGbGF0T3V0OiAg
ICAgICAgICAgICByZXR1cm4gIm5vaW50ZXJwb2xhdGlvbiI7CiAgICAgICBjYXNlIEV2cUNlbnRy
b2lkT3V0OiAgICAgICAgIHJldHVybiAiY2VudHJvaWQiOwpAQCAtMjQ3LDQgKzM5Niw2MiBAQAog
ICAgIHJldHVybiAiIjsKIH0KIAoraW50IEhMU0xUZXh0dXJlQ29vcmRzQ291bnQoY29uc3QgVEJh
c2ljVHlwZSBzYW1wbGVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKHNhbXBsZXJUeXBlKQorICAgIHsK
KyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICBjYXNlIEVi
dFNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgIGNhc2UgRWJ0
SVNhbXBsZXIyRDoKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBjYXNlIEVidElTYW1w
bGVyM0Q6CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1
YmU6CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJy
YXk6CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgor
ICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAg
ICAgICAgIHJldHVybiAzOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAgICAg
ICAgIHJldHVybiAzOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAg
ICAgIHJldHVybiAzOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKKyAgICAgICAg
ICAgIHJldHVybiAyOworICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgorICAgICAg
ICAgICAgcmV0dXJuIDM7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6Cisg
ICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgfQorICAgIHJldHVybiAwOwogfQorCitUU3RyaW5nIERpc2FtYmlndWF0
ZUZ1bmN0aW9uTmFtZShjb25zdCBUSW50ZXJtU2VxdWVuY2UgKnBhcmFtZXRlcnMpCit7CisgICAg
VFN0cmluZyBkaXNhbWJpZ3VhdGluZ1N0cmluZzsKKyAgICBmb3IgKGF1dG8gcGFyYW1ldGVyIDog
KnBhcmFtZXRlcnMpCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW1UeXBlID0gcGFy
YW1ldGVyLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKTsKKyAgICAgICAgLy8gRGlzYW1iaWd1YXRp
b24gaXMgbmVlZGVkIGZvciBmbG9hdDJ4MiBhbmQgZmxvYXQ0IHBhcmFtZXRlcnMuIFRoZXNlIGFy
ZSB0aGUgb25seSBwYXJhbWV0ZXIKKyAgICAgICAgLy8gdHlwZXMgdGhhdCBITFNMIHRoaW5rcyBh
cmUgaWRlbnRpY2FsLiBmbG9hdDJ4MyBhbmQgZmxvYXQzeDIgYXJlIGRpZmZlcmVudCB0eXBlcywg
Zm9yCisgICAgICAgIC8vIGV4YW1wbGUuIE90aGVyIHBhcmFtZXRlciB0eXBlcyBhcmUgbm90IGFk
ZGVkIHRvIGZ1bmN0aW9uIG5hbWVzIHRvIGF2b2lkIG1ha2luZyBmdW5jdGlvbgorICAgICAgICAv
LyBuYW1lcyBsb25nZXIuCisgICAgICAgIGlmIChwYXJhbVR5cGUuZ2V0T2JqZWN0U2l6ZSgpID09
IDQgJiYgcGFyYW1UeXBlLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBkaXNhbWJpZ3VhdGluZ1N0cmluZyArPSAiXyIgKyBUeXBlU3RyaW5nKHBhcmFt
VHlwZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGRpc2FtYmlndWF0aW5nU3RyaW5n
OworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9VdGlsc0hMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtMTEsMTggKzExLDYwIEBA
CiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfVVRJTFNITFNMX0hfCiAKICNpbmNsdWRlIDx2
ZWN0b3I+CisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIgogCiAjaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKIAorY2xhc3MgVE5hbWU7CisKIG5hbWVzcGFjZSBzaAogewogCi1UU3RyaW5nIFRleHR1cmVT
dHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwotVFN0cmluZyBTYW1wbGVyU3RyaW5nKGNvbnN0IFRU
eXBlICZ0eXBlKTsKKy8vIFVuaXF1ZSBjb21iaW5hdGlvbnMgb2YgSExTTCBUZXh0dXJlIHR5cGUg
YW5kIEhMU0wgU2FtcGxlciB0eXBlLgorZW51bSBITFNMVGV4dHVyZVNhbXBsZXJHcm91cAorewor
ICAgIC8vIFJlZ3VsYXIgc2FtcGxlcnMKKyAgICBITFNMX1RFWFRVUkVfMkQsCisgICAgSExTTF9U
RVhUVVJFX01JTiA9IEhMU0xfVEVYVFVSRV8yRCwKKworICAgIEhMU0xfVEVYVFVSRV9DVUJFLAor
ICAgIEhMU0xfVEVYVFVSRV8yRF9BUlJBWSwKKyAgICBITFNMX1RFWFRVUkVfM0QsCisgICAgSExT
TF9URVhUVVJFXzJEX0lOVDQsCisgICAgSExTTF9URVhUVVJFXzNEX0lOVDQsCisgICAgSExTTF9U
RVhUVVJFXzJEX0FSUkFZX0lOVDQsCisgICAgSExTTF9URVhUVVJFXzJEX1VJTlQ0LAorICAgIEhM
U0xfVEVYVFVSRV8zRF9VSU5UNCwKKyAgICBITFNMX1RFWFRVUkVfMkRfQVJSQVlfVUlOVDQsCisK
KyAgICAvLyBDb21wYXJpc29uIHNhbXBsZXJzCisKKyAgICBITFNMX1RFWFRVUkVfMkRfQ09NUEFS
SVNPTiwKKyAgICBITFNMX1RFWFRVUkVfQ1VCRV9DT01QQVJJU09OLAorICAgIEhMU0xfVEVYVFVS
RV8yRF9BUlJBWV9DT01QQVJJU09OLAorCisgICAgSExTTF9DT01QQVJJU09OX1NBTVBMRVJfR1JP
VVBfQkVHSU4gPSBITFNMX1RFWFRVUkVfMkRfQ09NUEFSSVNPTiwKKyAgICBITFNMX0NPTVBBUklT
T05fU0FNUExFUl9HUk9VUF9FTkQgICA9IEhMU0xfVEVYVFVSRV8yRF9BUlJBWV9DT01QQVJJU09O
LAorCisgICAgSExTTF9URVhUVVJFX1VOS05PV04sCisgICAgSExTTF9URVhUVVJFX01BWCA9IEhM
U0xfVEVYVFVSRV9VTktOT1dOCit9OworCitITFNMVGV4dHVyZVNhbXBsZXJHcm91cCBUZXh0dXJl
R3JvdXAoY29uc3QgVEJhc2ljVHlwZSB0eXBlKTsKK1RTdHJpbmcgVGV4dHVyZVN0cmluZyhjb25z
dCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0eXBlKTsKK1RTdHJpbmcgVGV4dHVyZVN0cmluZyhj
b25zdCBUQmFzaWNUeXBlIHR5cGUpOworVFN0cmluZyBUZXh0dXJlR3JvdXBTdWZmaXgoY29uc3Qg
SExTTFRleHR1cmVTYW1wbGVyR3JvdXAgdHlwZSk7CitUU3RyaW5nIFRleHR1cmVHcm91cFN1ZmZp
eChjb25zdCBUQmFzaWNUeXBlIHR5cGUpOworVFN0cmluZyBUZXh0dXJlVHlwZVN1ZmZpeChjb25z
dCBUQmFzaWNUeXBlIHR5cGUpOworVFN0cmluZyBTYW1wbGVyU3RyaW5nKGNvbnN0IFRCYXNpY1R5
cGUgdHlwZSk7CitUU3RyaW5nIFNhbXBsZXJTdHJpbmcoSExTTFRleHR1cmVTYW1wbGVyR3JvdXAg
dHlwZSk7CiAvLyBQcmVwZW5kcyBhbiB1bmRlcnNjb3JlIHRvIGF2b2lkIG5hbWluZyBjbGFzaGVz
CiBUU3RyaW5nIERlY29yYXRlKGNvbnN0IFRTdHJpbmcgJnN0cmluZyk7Ci1UU3RyaW5nIERlY29y
YXRlVW5pZm9ybShjb25zdCBUU3RyaW5nICZzdHJpbmcsIGNvbnN0IFRUeXBlICZ0eXBlKTsKK1RT
dHJpbmcgRGVjb3JhdGVJZk5lZWRlZChjb25zdCBUTmFtZSAmbmFtZSk7CisvLyBEZWNvcmF0ZXMg
YW5kIGFsc28gdW5tYW5nbGVzIHRoZSBmdW5jdGlvbiBuYW1lCitUU3RyaW5nIERlY29yYXRlRnVu
Y3Rpb25JZk5lZWRlZChjb25zdCBUTmFtZSAmbmFtZSk7CitUU3RyaW5nIERlY29yYXRlVW5pZm9y
bShjb25zdCBUTmFtZSAmbmFtZSwgY29uc3QgVFR5cGUgJnR5cGUpOwogVFN0cmluZyBEZWNvcmF0
ZUZpZWxkKGNvbnN0IFRTdHJpbmcgJnN0cmluZywgY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJl
KTsKIFRTdHJpbmcgRGVjb3JhdGVQcml2YXRlKGNvbnN0IFRTdHJpbmcgJnByaXZhdGVUZXh0KTsK
IFRTdHJpbmcgVHlwZVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSk7CkBAIC0zMSw3ICs3MywxMCBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlU3RkMTQwUGFja2lu
Zyk7CiBUU3RyaW5nIEludGVycG9sYXRpb25TdHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwog
VFN0cmluZyBRdWFsaWZpZXJTdHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwotCitpbnQgSExT
TFRleHR1cmVDb29yZHNDb3VudChjb25zdCBUQmFzaWNUeXBlIHNhbXBsZXJUeXBlKTsKKy8vIFBh
cmFtZXRlcnMgbWF5IG5lZWQgdG8gYmUgaW5jbHVkZWQgaW4gZnVuY3Rpb24gbmFtZXMgdG8gZGlz
YW1iaWd1YXRlIGJldHdlZW4gb3ZlcmxvYWRlZAorLy8gZnVuY3Rpb25zLgorVFN0cmluZyBEaXNh
bWJpZ3VhdGVGdW5jdGlvbk5hbWUoY29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJzKTsK
IH0KIAogI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVVRJTFNITFNMX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUds
b2JhbEluaXRpYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTEyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgiCisKKyNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oIgorCituYW1lc3BhY2UKK3sKKworY2xhc3MgVmFs
aWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2Vy
Cit7CisgIHB1YmxpYzoKKyAgICBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyKGNv
bnN0IFRQYXJzZUNvbnRleHQgKmNvbnRleHQpOworCisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0
QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKSBvdmVycmlkZTsKKyAgICBi
b29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkgb3ZlcnJpZGU7
CisKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtSXNWYWxpZDsgfQorICAgIGJv
b2wgaXNzdWVXYXJuaW5nKCkgY29uc3QgeyByZXR1cm4gbUlzc3VlV2FybmluZzsgfQorCisgIHBy
aXZhdGU6CisgICAgY29uc3QgVFBhcnNlQ29udGV4dCAqbUNvbnRleHQ7CisgICAgYm9vbCBtSXNW
YWxpZDsKKyAgICBib29sIG1Jc3N1ZVdhcm5pbmc7Cit9OworCit2b2lkIFZhbGlkYXRlR2xvYmFs
SW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCit7
CisgICAgY29uc3QgVFN5bWJvbCAqc3ltID0gbUNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQobm9k
ZS0+Z2V0U3ltYm9sKCksIG1Db250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkpOworICAgIGlmIChz
eW0tPmlzVmFyaWFibGUoKSkKKyAgICB7CisgICAgICAgIC8vIEVTU0wgMS4wMCBzZWN0aW9uIDQu
MyAob3IgRVNTTCAzLjAwIHNlY3Rpb24gNC4zKToKKyAgICAgICAgLy8gR2xvYmFsIGluaXRpYWxp
emVycyBtdXN0IGJlIGNvbnN0YW50IGV4cHJlc3Npb25zLgorICAgICAgICBjb25zdCBUVmFyaWFi
bGUgKnZhciA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSAqPihzeW0pOworICAgICAgICBz
d2l0Y2ggKHZhci0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpKQorICAgICAgICB7CisgICAgICAg
ICAgY2FzZSBFdnFDb25zdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgRXZx
R2xvYmFsOgorICAgICAgICAgIGNhc2UgRXZxVGVtcG9yYXJ5OgorICAgICAgICAgIGNhc2UgRXZx
VW5pZm9ybToKKyAgICAgICAgICAgIC8vIFdlIGFsbG93IHRoZXNlIGNhc2VzIHRvIGJlIGNvbXBh
dGlibGUgd2l0aCBsZWdhY3kgRVNTTCAxLjAwIGNvbnRlbnQuCisgICAgICAgICAgICAvLyBJbXBs
ZW1lbnQgc3RyaWN0ZXIgcnVsZXMgZm9yIEVTU0wgMy4wMCBzaW5jZSB0aGVyZSdzIG5vIGxlZ2Fj
eSBjb250ZW50IHRvIGRlYWwgd2l0aC4KKyAgICAgICAgICAgIGlmIChtQ29udGV4dC0+Z2V0U2hh
ZGVyVmVyc2lvbigpID49IDMwMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtSXNW
YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1Jc3N1ZVdhcm5pbmcgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG1J
c1ZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRhdGVHbG9i
YWxJbml0aWFsaXplclRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRl
cm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgLy8gRGlzYWxsb3cgY2FsbHMgdG8gdXNlci1kZWZp
bmVkIGZ1bmN0aW9ucyBhbmQgdGV4dHVyZSBsb29rdXAgZnVuY3Rpb25zIGluIGdsb2JhbCB2YXJp
YWJsZSBpbml0aWFsaXplcnMuCisgICAgLy8gVGhpcyBpcyBkb25lIHNpbXBseSBieSBkaXNhYmxp
bmcgYWxsIGZ1bmN0aW9uIGNhbGxzIC0gYnVpbHQtaW4gbWF0aCBmdW5jdGlvbnMgZG9uJ3QgdXNl
IEVPcEZ1bmN0aW9uQ2FsbC4KKyAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbkNh
bGwpCisgICAgeworICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyOjp2aXNp
dEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKK3sKKyAgICBpZiAobm9k
ZS0+aXNBc3NpZ25tZW50KCkpCisgICAgeworICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVy
VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpCit7
CisgICAgaWYgKG5vZGUtPmlzQXNzaWdubWVudCgpKQorICAgIHsKKyAgICAgICAgbUlzVmFsaWQg
PSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1ZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXJUcmF2ZXJzZXI6OlZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXIoY29u
c3QgVFBhcnNlQ29udGV4dCAqY29udGV4dCkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwg
ZmFsc2UsIGZhbHNlKSwKKyAgICAgIG1Db250ZXh0KGNvbnRleHQpLAorICAgICAgbUlzVmFsaWQo
dHJ1ZSksCisgICAgICBtSXNzdWVXYXJuaW5nKGZhbHNlKQoreworfQorCit9IC8vIG5hbWVzcGFj
ZQorCitib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIoVEludGVybVR5cGVkICppbml0aWFs
aXplciwgY29uc3QgVFBhcnNlQ29udGV4dCAqY29udGV4dCwgYm9vbCAqd2FybmluZykKK3sKKyAg
ICBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyIHZhbGlkYXRlKGNvbnRleHQpOwor
ICAgIGluaXRpYWxpemVyLT50cmF2ZXJzZSgmdmFsaWRhdGUpOworICAgIEFTU0VSVCh3YXJuaW5n
ICE9IG51bGxwdHIpOworICAgICp3YXJuaW5nID0gdmFsaWRhdGUuaXNzdWVXYXJuaW5nKCk7Cisg
ICAgcmV0dXJuIHZhbGlkYXRlLmlzVmFsaWQoKTsKK30KKwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXpl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xv
YmFsSW5pdGlhbGl6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVHTE9CQUxJ
TklUSUFMSVpFUl9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFR0xPQkFM
SU5JVElBTElaRVJfSF8KKworY2xhc3MgVEludGVybVR5cGVkOworY2xhc3MgVFBhcnNlQ29udGV4
dDsKKworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBpbml0aWFsaXplciBpcyB2YWxpZC4KK2Jvb2wg
VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLCBjb25z
dCBUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBib29sICp3YXJuaW5nKTsKKworI2VuZGlmIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVHTE9CQUxJTklUSUFMSVpFUl9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1p
dGF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlTGltaXRhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsMTYgQEAK
IHsKICAgcHVibGljOgogICAgIFZhbGlkYXRlQ29uc3RJbmRleEV4cHIoVExvb3BTdGFjayYgc3Rh
Y2spCi0gICAgICAgIDogbVZhbGlkKHRydWUpLCBtTG9vcFN0YWNrKHN0YWNrKSB7fQorICAgICAg
ICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICBtVmFs
aWQodHJ1ZSksCisgICAgICAgICAgbUxvb3BTdGFjayhzdGFjaykKKyAgICB7CisgICAgfQogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwYXJzZWQgbm9kZSByZXByZXNlbnRzIGEgY29uc3Rh
bnQgaW5kZXggZXhwcmVzc2lvbi4KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBt
VmFsaWQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpz
eW1ib2wpCisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpzeW1ib2wpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICAvLyBPbmx5IGNvbnN0YW50cyBhbmQgbG9vcCBpbmRpY2VzIGFy
ZSBhbGxvd2VkIGluIGEKICAgICAgICAgLy8gY29uc3RhbnQgaW5kZXggZXhwcmVzc2lvbi4KQEAg
LTQ5LDE0ICs1MywzNyBAQAogCiB9ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKLVZhbGlkYXRl
TGltaXRhdGlvbnM6OlZhbGlkYXRlTGltaXRhdGlvbnMoc2g6OkdMZW51bSBzaGFkZXJUeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW5mb1NpbmtCYXNlICZz
aW5rKQotICAgIDogbVNoYWRlclR5cGUoc2hhZGVyVHlwZSksCitWYWxpZGF0ZUxpbWl0YXRpb25z
OjpWYWxpZGF0ZUxpbWl0YXRpb25zKHNoOjpHTGVudW0gc2hhZGVyVHlwZSwgVEluZm9TaW5rQmFz
ZSAqc2luaykKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAg
ICAgIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLAogICAgICAgbVNpbmsoc2luayksCi0gICAgICBt
TnVtRXJyb3JzKDApCisgICAgICBtTnVtRXJyb3JzKDApLAorICAgICAgbVZhbGlkYXRlSW5kZXhp
bmcodHJ1ZSksCisgICAgICBtVmFsaWRhdGVJbm5lckxvb3BzKHRydWUpCiB7CiB9CiAKKy8vIHN0
YXRpYworYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjpJc0xpbWl0ZWRGb3JMb29wKFRJbnRlcm1M
b29wICpsb29wKQoreworICAgIC8vIFRoZSBzaGFkZXIgdHlwZSBkb2Vzbid0IG1hdHRlciBpbiB0
aGlzIGNhc2UuCisgICAgVmFsaWRhdGVMaW1pdGF0aW9ucyB2YWxpZGF0ZShHTF9GUkFHTUVOVF9T
SEFERVIsIG51bGxwdHIpOworICAgIHZhbGlkYXRlLm1WYWxpZGF0ZUluZGV4aW5nICAgPSBmYWxz
ZTsKKyAgICB2YWxpZGF0ZS5tVmFsaWRhdGVJbm5lckxvb3BzID0gZmFsc2U7CisgICAgaWYgKCF2
YWxpZGF0ZS52YWxpZGF0ZUxvb3BUeXBlKGxvb3ApKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCF2YWxpZGF0ZS52YWxpZGF0ZUZvckxvb3BIZWFkZXIobG9vcCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBUSW50ZXJtTm9kZSAqYm9keSA9IGxvb3AtPmdldEJvZHkoKTsKKyAg
ICBpZiAoYm9keSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgdmFsaWRhdGUubUxvb3BTdGFj
ay5wdXNoKGxvb3ApOworICAgICAgICBib2R5LT50cmF2ZXJzZSgmdmFsaWRhdGUpOworICAgICAg
ICB2YWxpZGF0ZS5tTG9vcFN0YWNrLnBvcCgpOworICAgIH0KKyAgICByZXR1cm4gKHZhbGlkYXRl
Lm1OdW1FcnJvcnMgPT0gMCk7Cit9CisKIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmlzaXRC
aW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7CiAgICAgLy8gQ2hlY2sgaWYgbG9v
cCBpbmRleCBpcyBtb2RpZmllZCBpbiB0aGUgbG9vcCBib2R5LgpAQCAtNjcsMTAgKzk0LDExIEBA
CiAgICAgewogICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKICAgICAgIGNhc2UgRU9wSW5kZXhJ
bmRpcmVjdDoKLSAgICAgICAgdmFsaWRhdGVJbmRleGluZyhub2RlKTsKLSAgICAgICAgYnJlYWs7
CisgICAgICAgICAgaWYgKG1WYWxpZGF0ZUluZGV4aW5nKQorICAgICAgICAgICAgICB2YWxpZGF0
ZUluZGV4aW5nKG5vZGUpOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtOTcsNiArMTI1LDkgQEAKIAogYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2aXNpdExvb3Ao
VmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQogeworICAgIGlmICghbVZhbGlkYXRlSW5uZXJMb29w
cykKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBpZiAoIXZhbGlkYXRlTG9vcFR5cGUobm9k
ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE4LDkgKzE0OSwxMiBAQAogdm9pZCBW
YWxpZGF0ZUxpbWl0YXRpb25zOjplcnJvcihUU291cmNlTG9jIGxvYywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbikK
IHsKLSAgICBtU2luay5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICBtU2luay5sb2NhdGlvbihs
b2MpOwotICAgIG1TaW5rIDw8ICInIiA8PCB0b2tlbiA8PCAiJyA6ICIgPDwgcmVhc29uIDw8ICJc
biI7CisgICAgaWYgKG1TaW5rKQorICAgIHsKKyAgICAgICAgbVNpbmstPnByZWZpeChFUHJlZml4
RXJyb3IpOworICAgICAgICBtU2luay0+bG9jYXRpb24obG9jKTsKKyAgICAgICAgKCptU2luaykg
PDwgIiciIDw8IHRva2VuIDw8ICInIDogIiA8PCByZWFzb24gPDwgIlxuIjsKKyAgICB9CiAgICAg
KyttTnVtRXJyb3JzOwogfQogCkBAIC0zODksMTMgKzQyMywxMyBAQAogCiAgICAgYm9vbCB2YWxp
ZCA9IHRydWU7CiAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSA9IEdldEdsb2JhbFBhcnNl
Q29udGV4dCgpLT5zeW1ib2xUYWJsZTsKLSAgICBUU3ltYm9sKiBzeW1ib2wgPSBzeW1ib2xUYWJs
ZS5maW5kKG5vZGUtPmdldE5hbWUoKSwgR2V0R2xvYmFsUGFyc2VDb250ZXh0KCktPnNoYWRlclZl
cnNpb24pOworICAgIFRTeW1ib2wqIHN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQobm9kZS0+Z2V0
TmFtZSgpLCBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKS0+Z2V0U2hhZGVyVmVyc2lvbigpKTsKICAg
ICBBU1NFUlQoc3ltYm9sICYmIHN5bWJvbC0+aXNGdW5jdGlvbigpKTsKICAgICBURnVuY3Rpb24g
KmZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KHN5bWJvbCk7CiAgICAgZm9yIChQ
YXJhbUluZGV4Ojpjb25zdF9pdGVyYXRvciBpID0gcEluZGV4LmJlZ2luKCk7CiAgICAgICAgICBp
ICE9IHBJbmRleC5lbmQoKTsgKytpKQogICAgIHsKLSAgICAgICAgY29uc3QgVFBhcmFtZXRlciAm
cGFyYW0gPSBmdW5jdGlvbi0+Z2V0UGFyYW0oKmkpOworICAgICAgICBjb25zdCBUQ29uc3RQYXJh
bWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24tPmdldFBhcmFtKCppKTsKICAgICAgICAgVFF1YWxpZmll
ciBxdWFsID0gcGFyYW0udHlwZS0+Z2V0UXVhbGlmaWVyKCk7CiAgICAgICAgIGlmICgocXVhbCA9
PSBFdnFPdXQpIHx8IChxdWFsID09IEV2cUluT3V0KSkKICAgICAgICAgewpAQCAtNDI4LDggKzQ2
Miw4IEBACiAKIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6aXNDb25zdEV4cHIoVEludGVybU5v
ZGUgKm5vZGUpCiB7Ci0gICAgQVNTRVJUKG5vZGUgIT0gTlVMTCk7Ci0gICAgcmV0dXJuIG5vZGUt
PmdldEFzQ29uc3RhbnRVbmlvbigpICE9IE5VTEw7CisgICAgQVNTRVJUKG5vZGUgIT0gbnVsbHB0
cik7CisgICAgcmV0dXJuIG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpICE9IG51bGxwdHIgJiYg
bm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdDsKIH0KIAogYm9v
bCBWYWxpZGF0ZUxpbWl0YXRpb25zOjppc0NvbnN0SW5kZXhFeHByKFRJbnRlcm1Ob2RlICpub2Rl
KQpAQCAtNDQ4LDEzICs0ODIsNiBAQAogCiAgICAgYm9vbCB2YWxpZCA9IHRydWU7CiAgICAgVElu
dGVybVR5cGVkICppbmRleCA9IG5vZGUtPmdldFJpZ2h0KCk7Ci0gICAgLy8gVGhlIGluZGV4IGV4
cHJlc3Npb24gbXVzdCBoYXZlIGludGVncmFsIHR5cGUuCi0gICAgaWYgKCFpbmRleC0+aXNTY2Fs
YXJJbnQoKSkgewotICAgICAgICBlcnJvcihpbmRleC0+Z2V0TGluZSgpLAotICAgICAgICAgICAg
ICAiSW5kZXggZXhwcmVzc2lvbiBtdXN0IGhhdmUgaW50ZWdyYWwgdHlwZSIsCi0gICAgICAgICAg
ICAgIGluZGV4LT5nZXRDb21wbGV0ZVN0cmluZygpLmNfc3RyKCkpOwotICAgICAgICB2YWxpZCA9
IGZhbHNlOwotICAgIH0KICAgICAvLyBUaGUgaW5kZXggZXhwZXNzaW9uIG11c3QgYmUgYSBjb25z
dGFudC1pbmRleC1leHByZXNzaW9uIHVubGVzcwogICAgIC8vIHRoZSBvcGVyYW5kIGlzIGEgdW5p
Zm9ybSBpbiBhIHZlcnRleCBzaGFkZXIuCiAgICAgVEludGVybVR5cGVkICpvcGVyYW5kID0gbm9k
ZS0+Z2V0TGVmdCgpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlv
bnMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNywxNSArMTcsMTcgQEAKIGNsYXNzIFZhbGlkYXRlTGltaXRhdGlvbnMgOiBwdWJsaWMgVElu
dGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgVmFsaWRhdGVMaW1pdGF0aW9ucyhzaDo6
R0xlbnVtIHNoYWRlclR5cGUsIFRJbmZvU2lua0Jhc2UgJnNpbmspOworICAgIFZhbGlkYXRlTGlt
aXRhdGlvbnMoc2g6OkdMZW51bSBzaGFkZXJUeXBlLCBUSW5mb1NpbmtCYXNlICpzaW5rKTsKIAog
ICAgIGludCBudW1FcnJvcnMoKSBjb25zdCB7IHJldHVybiBtTnVtRXJyb3JzOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKik7Ci0gICAgdmly
dHVhbCBib29sIHZpc2l0VW5hcnkoVmlzaXQsIFRJbnRlcm1VbmFyeSAqKTsKLSAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0gICAgdmly
dHVhbCBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKik7CisgICAgYm9vbCB2aXNp
dEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0
VW5hcnkoVmlzaXQsIFRJbnRlcm1VbmFyeSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QWdn
cmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCAqKSBvdmVycmlkZTsKIAorICAgIHN0YXRpYyBib29s
IElzTGltaXRlZEZvckxvb3AoVEludGVybUxvb3AgKm5vZGUpOworCiAgIHByaXZhdGU6CiAgICAg
dm9pZCBlcnJvcihUU291cmNlTG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFy
ICp0b2tlbik7CiAKQEAgLTUxLDkgKzUzLDExIEBACiAgICAgYm9vbCB2YWxpZGF0ZUluZGV4aW5n
KFRJbnRlcm1CaW5hcnkgKm5vZGUpOwogCiAgICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsKLSAg
ICBUSW5mb1NpbmtCYXNlICZtU2luazsKKyAgICBUSW5mb1NpbmtCYXNlICptU2luazsKICAgICBp
bnQgbU51bUVycm9yczsKICAgICBUTG9vcFN0YWNrIG1Mb29wU3RhY2s7CisgICAgYm9vbCBtVmFs
aWRhdGVJbmRleGluZzsKKyAgICBib29sIG1WYWxpZGF0ZUlubmVyTG9vcHM7CiB9OwogCiAjZW5k
aWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURUxJTUlUQVRJT05TX0hfCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1h
eFBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
YWxpZGF0ZU1heFBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gVmFsaWRhdGVNYXhQYXJhbWV0ZXJzIGNoZWNrcyBpZiBmdW5jdGlv
biBkZWZpbml0aW9ucyBoYXZlIG1vcmUgdGhhbiBhIHNldCBudW1iZXIgb2YgcGFyYW1ldGVycy4K
KworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgi
CisKK1ZhbGlkYXRlTWF4UGFyYW1ldGVyczo6VmFsaWRhdGVNYXhQYXJhbWV0ZXJzKHVuc2lnbmVk
IGludCBtYXhQYXJhbWV0ZXJzKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwg
ZmFsc2UpLCBtTWF4UGFyYW1ldGVycyhtYXhQYXJhbWV0ZXJzKSwgbVZhbGlkKHRydWUpCit7Cit9
CisKK2Jvb2wgVmFsaWRhdGVNYXhQYXJhbWV0ZXJzOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK3sKKyAgICBpZiAoIW1WYWxpZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBF
T3BQYXJhbWV0ZXJzICYmIG5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSA+IG1NYXhQYXJhbWV0
ZXJzKQorICAgIHsKKyAgICAgICAgbVZhbGlkID0gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IG1WYWxpZDsKK30KKworYm9vbCBWYWxpZGF0ZU1heFBhcmFtZXRlcnM6OnZhbGlkYXRlKFRJbnRl
cm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgbWF4UGFyYW1ldGVycykKK3sKKyAgICBWYWxpZGF0
ZU1heFBhcmFtZXRlcnMgYXJnc1RyYXZlcnNlcihtYXhQYXJhbWV0ZXJzKTsKKyAgICByb290LT50
cmF2ZXJzZSgmYXJnc1RyYXZlcnNlcik7CisgICAgcmV0dXJuIGFyZ3NUcmF2ZXJzZXIubVZhbGlk
OworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFZhbGlkYXRlTWF4UGFyYW1ldGVycyBjaGVja3MgaWYg
ZnVuY3Rpb24gZGVmaW5pdGlvbnMgaGF2ZSBtb3JlIHRoYW4gYSBzZXQgbnVtYmVyIG9mIHBhcmFt
ZXRlcnMuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURU1BWFBBUkFNRVRF
UlNfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURU1BWFBBUkFNRVRFUlNf
SF8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCitjbGFz
cyBWYWxpZGF0ZU1heFBhcmFtZXRlcnMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgoreworICBw
dWJsaWM6CisgICAgLy8gUmV0dXJucyBmYWxzZSBpZiBtYXhQYXJhbWV0ZXJzIGlzIGV4Y2VlZGVk
LgorICAgIHN0YXRpYyBib29sIHZhbGlkYXRlKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBp
bnQgbWF4UGFyYW1ldGVycyk7CisKKyAgcHJvdGVjdGVkOgorICAgIGJvb2wgdmlzaXRBZ2dyZWdh
dGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworCisgIHBy
aXZhdGU6CisgICAgVmFsaWRhdGVNYXhQYXJhbWV0ZXJzKHVuc2lnbmVkIGludCBtYXhQYXJhbWV0
ZXJzKTsKKworICAgIHVuc2lnbmVkIGludCBtTWF4UGFyYW1ldGVyczsKKyAgICBib29sIG1WYWxp
ZDsKK307CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURU1BWFBBUkFN
RVRFUlNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmNwcAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSwxMSArOSwy
MyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4
dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmgiCiAKLVZh
bGlkYXRlT3V0cHV0czo6VmFsaWRhdGVPdXRwdXRzKFRJbmZvU2lua0Jhc2UmIHNpbmssIGludCBt
YXhEcmF3QnVmZmVycykKLSAgICA6IG1TaW5rKHNpbmspLAorbmFtZXNwYWNlCit7Cit2b2lkIGVy
cm9yKGludCAqZXJyb3JDb3VudCwgVEluZm9TaW5rQmFzZSAmc2luaywgY29uc3QgVEludGVybVN5
bWJvbCAmc3ltYm9sLCBjb25zdCBjaGFyICpyZWFzb24pCit7CisgICAgc2luay5wcmVmaXgoRVBy
ZWZpeEVycm9yKTsKKyAgICBzaW5rLmxvY2F0aW9uKHN5bWJvbC5nZXRMaW5lKCkpOworICAgIHNp
bmsgPDwgIiciIDw8IHN5bWJvbC5nZXRTeW1ib2woKSA8PCAiJyA6ICIgPDwgcmVhc29uIDw8ICJc
biI7CisgICAgKCplcnJvckNvdW50KSsrOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworVmFsaWRh
dGVPdXRwdXRzOjpWYWxpZGF0ZU91dHB1dHMoY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRC
ZWhhdmlvciwgaW50IG1heERyYXdCdWZmZXJzKQorICAgIDogVEludGVybVRyYXZlcnNlcih0cnVl
LCBmYWxzZSwgZmFsc2UpLAogICAgICAgbU1heERyYXdCdWZmZXJzKG1heERyYXdCdWZmZXJzKSwK
LSAgICAgIG1OdW1FcnJvcnMoMCksCi0gICAgICBtSGFzVW5zcGVjaWZpZWRPdXRwdXRMb2NhdGlv
bihmYWxzZSkKKyAgICAgIG1BbGxvd1Vuc3BlY2lmaWVkT3V0cHV0TG9jYXRpb25SZXNvbHV0aW9u
KAorICAgICAgICAgIElzRXh0ZW5zaW9uRW5hYmxlZChleHRCZWhhdmlvciwgIkdMX0VYVF9ibGVu
ZF9mdW5jX2V4dGVuZGVkIikpCiB7CiB9CiAKQEAgLTI5LDUwICs0MSw2OCBAQAogCiAgICAgaWYg
KHF1YWxpZmllciA9PSBFdnFGcmFnbWVudE91dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRUeXBl
ICZ0eXBlID0gc3ltYm9sLT5nZXRUeXBlKCk7Ci0gICAgICAgIGNvbnN0IGludCBsb2NhdGlvbiA9
IHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb247Ci0KLSAgICAgICAgaWYgKG1IYXNV
bnNwZWNpZmllZE91dHB1dExvY2F0aW9uKQorICAgICAgICBpZiAoc3ltYm9sLT5nZXRUeXBlKCku
Z2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb24gPT0gLTEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGVycm9yKHN5bWJvbC0+Z2V0TGluZSgpLCAibXVzdCBleHBsaWNpdGx5IHNwZWNpZnkgYWxs
IGxvY2F0aW9ucyB3aGVuIHVzaW5nIG11bHRpcGxlIGZyYWdtZW50IG91dHB1dHMiLCBuYW1lLmNf
c3RyKCkpOworICAgICAgICAgICAgbVVuc3BlY2lmaWVkTG9jYXRpb25PdXRwdXRzLnB1c2hfYmFj
ayhzeW1ib2wpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uID09IC0xKQor
ICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1IYXNVbnNwZWNpZmllZE91dHB1
dExvY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIG1PdXRwdXRzLnB1c2hfYmFjayhzeW1ib2wp
OwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICB9Cit9CisKK2ludCBWYWxpZGF0ZU91dHB1
dHM6OnZhbGlkYXRlQW5kQ291bnRFcnJvcnMoVEluZm9TaW5rQmFzZSAmc2luaykgY29uc3QKK3sK
KyAgICBPdXRwdXRWZWN0b3IgdmFsaWRPdXRwdXRzKG1NYXhEcmF3QnVmZmVycyk7CisgICAgaW50
IGVycm9yQ291bnQgPSAwOworCisgICAgZm9yIChjb25zdCBhdXRvICZzeW1ib2wgOiBtT3V0cHV0
cykKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlICAgICAgICAgPSBzeW1ib2wtPmdl
dFR5cGUoKTsKKyAgICAgICAgY29uc3Qgc2l6ZV90IGVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0
PHNpemVfdD4odHlwZS5pc0FycmF5KCkgPyB0eXBlLmdldEFycmF5U2l6ZSgpIDogMSk7CisgICAg
ICAgIGNvbnN0IHNpemVfdCBsb2NhdGlvbiAgICAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUu
Z2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb24pOworCisgICAgICAgIEFTU0VSVCh0eXBlLmdl
dExheW91dFF1YWxpZmllcigpLmxvY2F0aW9uICE9IC0xKTsKKworICAgICAgICBpZiAobG9jYXRp
b24gKyBlbGVtZW50Q291bnQgPD0gdmFsaWRPdXRwdXRzLnNpemUoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgT3V0cHV0TWFwOjppdGVyYXRvciBtYXBFbnRyeSA9IG1PdXRwdXRNYXAuZmluZChs
b2NhdGlvbik7Ci0gICAgICAgICAgICBpZiAobWFwRW50cnkgPT0gbU91dHB1dE1hcC5lbmQoKSkK
KyAgICAgICAgICAgIGZvciAoc2l6ZV90IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8
IGVsZW1lbnRDb3VudDsgZWxlbWVudEluZGV4KyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgaW50IGVsZW1lbnRDb3VudCA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRB
cnJheVNpemUoKSA6IDE7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uICsgZWxlbWVudENv
dW50ID4gbU1heERyYXdCdWZmZXJzKQorICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBvZmZz
ZXRMb2NhdGlvbiA9IGxvY2F0aW9uICsgZWxlbWVudEluZGV4OworICAgICAgICAgICAgICAgIGlm
ICh2YWxpZE91dHB1dHNbb2Zmc2V0TG9jYXRpb25dKQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgZXJyb3Ioc3ltYm9sLT5nZXRMaW5lKCksICJvdXRwdXQgbG9jYXRpb24g
bXVzdCBiZSA8IE1BWF9EUkFXX0JVRkZFUlMiLCBuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisgICAgICAgICAgICAgICAgICAgIHN0
cnN0ciA8PCAiY29uZmxpY3Rpbmcgb3V0cHV0IGxvY2F0aW9ucyB3aXRoIHByZXZpb3VzbHkgZGVm
aW5lZCBvdXRwdXQgJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHZhbGlkT3V0cHV0
c1tvZmZzZXRMb2NhdGlvbl0tPmdldFN5bWJvbCgpIDw8ICInIjsKKyAgICAgICAgICAgICAgICAg
ICAgZXJyb3IoJmVycm9yQ291bnQsIHNpbmssICpzeW1ib2wsIHN0cnN0ci5zdHIoKS5jX3N0cigp
KTsKICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBlbGVtZW50
SW5kZXggPSAwOyBlbGVtZW50SW5kZXggPCBlbGVtZW50Q291bnQ7IGVsZW1lbnRJbmRleCsrKQor
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGludCBvZmZzZXRMb2NhdGlvbiA9IGxvY2F0aW9uICsgZWxlbWVudEluZGV4Owot
ICAgICAgICAgICAgICAgICAgICBtT3V0cHV0TWFwW29mZnNldExvY2F0aW9uXSA9IHN5bWJvbDsK
KyAgICAgICAgICAgICAgICAgICAgdmFsaWRPdXRwdXRzW29mZnNldExvY2F0aW9uXSA9IHN5bWJv
bDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZWxlbWVu
dENvdW50ID4gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBzdHJzdHI7Ci0gICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICJjb25mbGljdGluZyBvdXRw
dXQgbG9jYXRpb25zIHdpdGggcHJldmlvdXNseSBkZWZpbmVkIG91dHB1dCAnIgotICAgICAgICAg
ICAgICAgICAgICAgICA8PCBtYXBFbnRyeS0+c2Vjb25kLT5nZXRTeW1ib2woKSA8PCAiJyI7Ci0K
LSAgICAgICAgICAgICAgICBlcnJvcihzeW1ib2wtPmdldExpbmUoKSwgc3Ryc3RyLnN0cigpLmNf
c3RyKCksIG5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgZXJyb3IoJmVycm9yQ291bnQs
IHNpbmssICpzeW1ib2wsCisgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudENvdW50ID4gMSA/
ICJvdXRwdXQgYXJyYXkgbG9jYXRpb25zIHdvdWxkIGV4Y2VlZCBNQVhfRFJBV19CVUZGRVJTIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAib3V0cHV0IGxvY2F0aW9u
IG11c3QgYmUgPCBNQVhfRFJBV19CVUZGRVJTIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9Ci19CiAKLXZvaWQgVmFsaWRhdGVPdXRwdXRzOjplcnJvcihUU291cmNlTG9jIGxvYywg
Y29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyKiB0b2tlbikKLXsKLSAgICBtU2luay5wcmVm
aXgoRVByZWZpeEVycm9yKTsKLSAgICBtU2luay5sb2NhdGlvbihsb2MpOwotICAgIG1TaW5rIDw8
ICInIiA8PCB0b2tlbiA8PCAiJyA6ICIgPDwgcmVhc29uIDw8ICJcbiI7Ci0gICAgbU51bUVycm9y
cysrOworICAgIGlmICghbUFsbG93VW5zcGVjaWZpZWRPdXRwdXRMb2NhdGlvblJlc29sdXRpb24g
JiYKKyAgICAgICAgKCghbU91dHB1dHMuZW1wdHkoKSAmJiAhbVVuc3BlY2lmaWVkTG9jYXRpb25P
dXRwdXRzLmVtcHR5KCkpIHx8CisgICAgICAgICBtVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHMu
c2l6ZSgpID4gMSkpCisgICAgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnN5bWJvbCA6IG1V
bnNwZWNpZmllZExvY2F0aW9uT3V0cHV0cykKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3Io
JmVycm9yQ291bnQsIHNpbmssICpzeW1ib2wsCisgICAgICAgICAgICAgICAgICAibXVzdCBleHBs
aWNpdGx5IHNwZWNpZnkgYWxsIGxvY2F0aW9ucyB3aGVuIHVzaW5nIG11bHRpcGxlIGZyYWdtZW50
IG91dHB1dHMiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZXJyb3JDb3VudDsKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlT3V0cHV0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5oCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxp
ZGF0ZU91dHB1dHMuaAkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDcgQEAKICNpZm5kZWYgQ09N
UElMRVJfVFJBTlNMQVRPUl9WQUxJREFURU9VVFBVVFNfSF8KICNkZWZpbmUgQ09NUElMRVJfVFJB
TlNMQVRPUl9WQUxJREFURU9VVFBVVFNfSF8KIAorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0lu
dGVybU5vZGUuaCIKIAogI2luY2x1ZGUgPHNldD4KQEAgLTE2LDIzICsxNywyMCBAQAogY2xhc3Mg
VmFsaWRhdGVPdXRwdXRzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgot
ICAgIFZhbGlkYXRlT3V0cHV0cyhUSW5mb1NpbmtCYXNlJiBzaW5rLCBpbnQgbWF4RHJhd0J1ZmZl
cnMpOworICAgIFZhbGlkYXRlT3V0cHV0cyhjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dEJl
aGF2aW9yLCBpbnQgbWF4RHJhd0J1ZmZlcnMpOwogCi0gICAgaW50IG51bUVycm9ycygpIGNvbnN0
IHsgcmV0dXJuIG1OdW1FcnJvcnM7IH0KKyAgICBpbnQgdmFsaWRhdGVBbmRDb3VudEVycm9ycyhU
SW5mb1NpbmtCYXNlICZzaW5rKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB2aXNpdFN5bWJv
bChUSW50ZXJtU3ltYm9sKik7CisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICop
IG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgVEluZm9TaW5rQmFzZSYgbVNpbms7CiAgICAg
aW50IG1NYXhEcmF3QnVmZmVyczsKLSAgICBpbnQgbU51bUVycm9yczsKLSAgICBib29sIG1IYXNV
bnNwZWNpZmllZE91dHB1dExvY2F0aW9uOworICAgIGJvb2wgbUFsbG93VW5zcGVjaWZpZWRPdXRw
dXRMb2NhdGlvblJlc29sdXRpb247CiAKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPGludCwgVEludGVy
bVN5bWJvbCo+IE91dHB1dE1hcDsKLSAgICBPdXRwdXRNYXAgbU91dHB1dE1hcDsKKyAgICB0eXBl
ZGVmIHN0ZDo6dmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gT3V0cHV0VmVjdG9yOworICAgIE91dHB1
dFZlY3RvciBtT3V0cHV0czsKKyAgICBPdXRwdXRWZWN0b3IgbVVuc3BlY2lmaWVkTG9jYXRpb25P
dXRwdXRzOwogICAgIHN0ZDo6c2V0PFRTdHJpbmc+IG1WaXNpdGVkU3ltYm9sczsKLQotICAgIHZv
aWQgZXJyb3IoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciog
dG9rZW4pOwogfTsKIAogI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVPVVRQ
VVRTX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9WYWxpZGF0ZVN3aXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmgJKHJldmlzaW9uIDE5
OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1ZhbGlkYXRlU3dpdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw3IEBACiAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKIAotc3RydWN0IFRQYXJzZUNv
bnRleHQ7CitjbGFzcyBUUGFyc2VDb250ZXh0OwogCiBjbGFzcyBWYWxpZGF0ZVN3aXRjaCA6IHB1
YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5m
by5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
LDE4ICsxNiw2IEBACiBuYW1lc3BhY2UKIHsKIAotVFN0cmluZyBJbnRlcmZhY2VCbG9ja0ZpZWxk
TmFtZShjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLCBjb25zdCBURmllbGQg
JmZpZWxkKQotewotICAgIGlmIChpbnRlcmZhY2VCbG9jay5oYXNJbnN0YW5jZU5hbWUoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBpbnRlcmZhY2VCbG9jay5uYW1lKCkgKyAiLiIgKyBmaWVsZC5u
YW1lKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBmaWVsZC5uYW1l
KCk7Ci0gICAgfQotfQotCiBCbG9ja0xheW91dFR5cGUgR2V0QmxvY2tMYXlvdXRUeXBlKFRMYXlv
dXRCbG9ja1N0b3JhZ2UgYmxvY2tTdG9yYWdlKQogewogICAgIHN3aXRjaCAoYmxvY2tTdG9yYWdl
KQpAQCAtNTUsNyArNDMsOCBAQAogICAgIHsKICAgICAgICAgaWYgKHZhcmlhYmxlLmlzQXJyYXko
KSkKICAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4
ID0gMDsgZWxlbWVudEluZGV4IDwgdmFyaWFibGUuZWxlbWVudENvdW50KCk7IGVsZW1lbnRJbmRl
eCsrKQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4ID0gMDsgZWxl
bWVudEluZGV4IDwgdmFyaWFibGUuZWxlbWVudENvdW50KCk7CisgICAgICAgICAgICAgICAgIGVs
ZW1lbnRJbmRleCsrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGxuYW1lID0gbmFtZSArIDo6QXJyYXlTdHJpbmcoZWxlbWVudEluZGV4KTsKICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyBsbWFwcGVkTmFtZSA9IG1hcHBlZE5hbWUgKyA6OkFycmF5U3RyaW5n
KGVsZW1lbnRJbmRleCk7CkBAIC0xMjgsMTMgKzExNywxNCBAQAogfQogCiBDb2xsZWN0VmFyaWFi
bGVzOjpDb2xsZWN0VmFyaWFibGVzKHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICphdHRyaWJz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0
cmlidXRlPiAqb3V0cHV0VmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICpvdXRwdXRWYXJpYWJsZXMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3Jt
PiAqdW5pZm9ybXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPHNoOjpWYXJ5aW5nPiAqdmFyeWluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gKmludGVyZmFjZUJsb2NrcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNo
RnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1i
b2xUYWJsZSAmc3ltYm9sVGFibGUpCi0gICAgOiBtQXR0cmlicyhhdHRyaWJzKSwKKyAgICA6IFRJ
bnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgIG1BdHRyaWJzKGF0dHJp
YnMpLAogICAgICAgbU91dHB1dFZhcmlhYmxlcyhvdXRwdXRWYXJpYWJsZXMpLAogICAgICAgbVVu
aWZvcm1zKHVuaWZvcm1zKSwKICAgICAgIG1WYXJ5aW5ncyh2YXJ5aW5ncyksCkBAIC0xNDQsOSAr
MTM0LDE2IEBACiAgICAgICBtRnJvbnRGYWNpbmdBZGRlZChmYWxzZSksCiAgICAgICBtRnJhZ0Nv
b3JkQWRkZWQoZmFsc2UpLAogICAgICAgbUluc3RhbmNlSURBZGRlZChmYWxzZSksCisgICAgICBt
VmVydGV4SURBZGRlZChmYWxzZSksCiAgICAgICBtUG9zaXRpb25BZGRlZChmYWxzZSksCiAgICAg
ICBtUG9pbnRTaXplQWRkZWQoZmFsc2UpLAogICAgICAgbUxhc3RGcmFnRGF0YUFkZGVkKGZhbHNl
KSwKKyAgICAgIG1GcmFnQ29sb3JBZGRlZChmYWxzZSksCisgICAgICBtRnJhZ0RhdGFBZGRlZChm
YWxzZSksCisgICAgICBtRnJhZ0RlcHRoRVhUQWRkZWQoZmFsc2UpLAorICAgICAgbUZyYWdEZXB0
aEFkZGVkKGZhbHNlKSwKKyAgICAgIG1TZWNvbmRhcnlGcmFnQ29sb3JFWFRBZGRlZChmYWxzZSks
CisgICAgICBtU2Vjb25kYXJ5RnJhZ0RhdGFFWFRBZGRlZChmYWxzZSksCiAgICAgICBtSGFzaEZ1
bmN0aW9uKGhhc2hGdW5jdGlvbiksCiAgICAgICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpCiB7
CkBAIC0zMTcsNiArMzE0LDIyIEBACiAgICAgICAgICAgICAgICAgbUluc3RhbmNlSURBZGRlZCA9
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgY2Fz
ZSBFdnFWZXJ0ZXhJRDoKKyAgICAgICAgICAgICAgaWYgKCFtVmVydGV4SURBZGRlZCkKKyAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgQXR0cmlidXRlIGluZm87CisgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfVmVydGV4SUQiOworICAgICAgICAgICAg
ICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICBpbmZv
Lm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAg
ICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9IDA7
CisgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdIX0lOVDsgIC8v
IERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlICAgICA9
IHRydWU7CisgICAgICAgICAgICAgICAgICBpbmZvLmxvY2F0aW9uICAgICAgPSAtMTsKKyAgICAg
ICAgICAgICAgICAgIG1BdHRyaWJzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAg
ICBtVmVydGV4SURBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgIGNhc2UgRXZxUG9zaXRpb246CiAgICAgICAgICAgICBpZiAoIW1Q
b3NpdGlvbkFkZGVkKQogICAgICAgICAgICAgewpAQCAtMzY1LDYgKzM3OCwxMDUgQEAKICAgICAg
ICAgICAgICAgICBtTGFzdEZyYWdEYXRhQWRkZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgIGNhc2UgRXZxRnJhZ0NvbG9yOgorICAgICAgICAg
ICAgICBpZiAoIW1GcmFnQ29sb3JBZGRlZCkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
a05hbWVbXSA9ICJnbF9GcmFnQ29sb3IiOworICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAg
ICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBr
TmFtZTsKKyAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUX1ZF
QzQ7CisgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOworICAgICAgICAg
ICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5l
ZCBieSBzcGVjLgorICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOworICAgICAg
ICAgICAgICAgICAgbUZyYWdDb2xvckFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgY2FzZSBFdnFGcmFnRGF0YToKKyAgICAgICAg
ICAgICAgaWYgKCFtRnJhZ0RhdGFBZGRlZCkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
a05hbWVbXSA9ICJnbF9GcmFnRGF0YSI7CisgICAgICAgICAgICAgICAgICBpbmZvLm5hbWUgICAg
ICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtO
YW1lOworICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVRfVkVD
NDsKKyAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VFZhcmlhYmxlICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN5
bWJvbFRhYmxlLmZpbmRCdWlsdEluKCJnbF9NYXhEcmF3QnVmZmVycyIsIDEwMCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldENvbnN0UG9pbnRlcigpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldElDb25zdCgpOworICAgICAg
ICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVk
IGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAg
ICAgICAgICAgICBtRnJhZ0RhdGFBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgIGNhc2UgRXZxRnJhZ0RlcHRoRVhUOgorICAgICAg
ICAgICAgICBpZiAoIW1GcmFnRGVwdGhFWFRBZGRlZCkKKyAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKKyAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIga05hbWVbXSA9ICJnbF9GcmFnRGVwdGhFWFQiOworICAgICAgICAgICAgICAgICAgaW5m
by5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5h
bWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdM
X0ZMT0FUOworICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSAwOworICAgICAgICAg
ICAgICAgICAgaW5mby5wcmVjaXNpb24gPQorICAgICAgICAgICAgICAgICAgICAgIEdMVmFyaWFi
bGVQcmVjaXNpb24oc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlICo+KAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJ
bigiZ2xfRnJhZ0RlcHRoRVhUIiwgMTAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgICBpbmZvLnN0
YXRpY1VzZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNo
X2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAgICBtRnJhZ0RlcHRoRVhUQWRkZWQgPSB0cnVl
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICBjYXNl
IEV2cUZyYWdEZXB0aDoKKyAgICAgICAgICAgICAgaWYgKCFtRnJhZ0RlcHRoQWRkZWQpCisgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIE91dHB1dFZhcmlhYmxlIGluZm87CisgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfRnJhZ0RlcHRoIjsKKyAgICAg
ICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAg
ICAgaW5mby5tYXBwZWROYW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICBpbmZvLnR5
cGUgICAgICAgICAgPSBHTF9GTE9BVDsKKyAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXpl
ICAgICA9IDA7CisgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdI
X0ZMT0FUOworICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAg
ICAgICAgICAgbUZyYWdEZXB0aEFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgY2FzZSBFdnFTZWNvbmRhcnlGcmFnQ29sb3JFWFQ6
CisgICAgICAgICAgICAgIGlmICghbVNlY29uZGFyeUZyYWdDb2xvckVYVEFkZGVkKQorICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICBPdXRwdXRWYXJpYWJsZSBpbmZvOworICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1NlY29uZGFyeUZyYWdDb2xvckVY
VCI7CisgICAgICAgICAgICAgICAgICBpbmZvLm5hbWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAg
ICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAg
ICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVRfVkVDNDsKKyAgICAgICAgICAgICAgICAg
IGluZm8uYXJyYXlTaXplICAgICA9IDA7CisgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lv
biAgICAgPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAg
ICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICBtT3V0cHV0
VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAgICBtU2Vjb25kYXJ5
RnJhZ0NvbG9yRVhUQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICBjYXNlIEV2cVNlY29uZGFyeUZyYWdEYXRhRVhUOgorICAgICAg
ICAgICAgICBpZiAoIW1TZWNvbmRhcnlGcmFnRGF0YUVYVEFkZGVkKQorICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICBPdXRwdXRWYXJpYWJsZSBpbmZvOworICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1NlY29uZGFyeUZyYWdEYXRhRVhUIjsKKyAgICAg
ICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAg
ICAgaW5mby5tYXBwZWROYW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICBpbmZvLnR5
cGUgICAgICAgICAgPSBHTF9GTE9BVF9WRUM0OworCisgICAgICAgICAgICAgICAgICBjb25zdCBU
VmFyaWFibGUgKm1heER1YWxTb3VyY2VEcmF3QnVmZmVyc1ZhciA9IHN0YXRpY19jYXN0PGNvbnN0
IFRWYXJpYWJsZSAqPigKKyAgICAgICAgICAgICAgICAgICAgICBtU3ltYm9sVGFibGUuZmluZEJ1
aWx0SW4oImdsX01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCIsIDEwMCkpOworICAgICAgICAg
ICAgICAgICAgaW5mby5hcnJheVNpemUgPSBtYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNWYXItPmdl
dENvbnN0UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgIGluZm8ucHJl
Y2lzaW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgorICAgICAgICAg
ICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworICAgICAgICAgICAgICAgICAgbU91dHB1
dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgICAgICAgbVNlY29uZGFy
eUZyYWdEYXRhRVhUQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTM4NSw3ICs0OTcsNyBAQAogICAgIHt9CiAKICAgcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgdmlzaXRWYXJpYWJsZShTaGFkZXJWYXJpYWJsZSAqdmFyaWFibGUpCisgICAgdm9pZCB2
aXNpdFZhcmlhYmxlKFNoYWRlclZhcmlhYmxlICp2YXJpYWJsZSkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIFRTdHJpbmcgc3RyaW5nTmFtZSA9IFRTdHJpbmcodmFyaWFibGUtPm5hbWUuY19zdHIo
KSk7CiAgICAgICAgIHZhcmlhYmxlLT5tYXBwZWROYW1lID0gVEludGVybVRyYXZlcnNlcjo6aGFz
aChzdHJpbmdOYW1lLCBtSGFzaEZ1bmN0aW9uKS5jX3N0cigpOwpAQCAtNDE3LDYgKzUyOSwyNiBA
QAogCiB0ZW1wbGF0ZSA8Pgogdm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFZhcmlhYmxlKGNv
bnN0IFRJbnRlcm1TeW1ib2wgKnZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPE91dHB1dFZhcmlhYmxlPiAqaW5mb0xpc3QpIGNvbnN0Cit7
CisgICAgQVNTRVJUKHZhcmlhYmxlKTsKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxl
LT5nZXRUeXBlKCk7CisgICAgQVNTRVJUKCF0eXBlLmdldFN0cnVjdCgpKTsKKworICAgIE91dHB1
dFZhcmlhYmxlIGF0dHJpYnV0ZTsKKworICAgIGF0dHJpYnV0ZS50eXBlICAgICAgID0gR0xWYXJp
YWJsZVR5cGUodHlwZSk7CisgICAgYXR0cmlidXRlLnByZWNpc2lvbiAgPSBHTFZhcmlhYmxlUHJl
Y2lzaW9uKHR5cGUpOworICAgIGF0dHJpYnV0ZS5uYW1lICAgICAgID0gdmFyaWFibGUtPmdldFN5
bWJvbCgpLmNfc3RyKCk7CisgICAgYXR0cmlidXRlLmFycmF5U2l6ZSAgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KHR5cGUuZ2V0QXJyYXlTaXplKCkpOworICAgIGF0dHJpYnV0ZS5tYXBwZWRO
YW1lID0gVEludGVybVRyYXZlcnNlcjo6aGFzaCh2YXJpYWJsZS0+Z2V0U3ltYm9sKCksIG1IYXNo
RnVuY3Rpb24pLmNfc3RyKCk7CisgICAgYXR0cmlidXRlLmxvY2F0aW9uICAgPSB2YXJpYWJsZS0+
Z2V0VHlwZSgpLmdldExheW91dFF1YWxpZmllcigpLmxvY2F0aW9uOworCisgICAgaW5mb0xpc3Qt
PnB1c2hfYmFjayhhdHRyaWJ1dGUpOworfQorCit0ZW1wbGF0ZSA8Pgordm9pZCBDb2xsZWN0VmFy
aWFibGVzOjp2aXNpdFZhcmlhYmxlKGNvbnN0IFRJbnRlcm1TeW1ib2wgKnZhcmlhYmxlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEludGVyZmFjZUJs
b2NrPiAqaW5mb0xpc3QpIGNvbnN0CiB7CiAgICAgSW50ZXJmYWNlQmxvY2sgaW50ZXJmYWNlQmxv
Y2s7CkBAIC00MjQsMjMgKzU1NiwyMCBAQAogICAgIEFTU0VSVChibG9ja1R5cGUpOwogCiAgICAg
aW50ZXJmYWNlQmxvY2submFtZSA9IGJsb2NrVHlwZS0+bmFtZSgpLmNfc3RyKCk7Ci0gICAgaW50
ZXJmYWNlQmxvY2subWFwcGVkTmFtZSA9IFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2godmFyaWFibGUt
PmdldFN5bWJvbCgpLCBtSGFzaEZ1bmN0aW9uKS5jX3N0cigpOworICAgIGludGVyZmFjZUJsb2Nr
Lm1hcHBlZE5hbWUgPQorICAgICAgICBUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKGJsb2NrVHlwZS0+
bmFtZSgpLmNfc3RyKCksIG1IYXNoRnVuY3Rpb24pLmNfc3RyKCk7CiAgICAgaW50ZXJmYWNlQmxv
Y2suaW5zdGFuY2VOYW1lID0gKGJsb2NrVHlwZS0+aGFzSW5zdGFuY2VOYW1lKCkgPyBibG9ja1R5
cGUtPmluc3RhbmNlTmFtZSgpLmNfc3RyKCkgOiAiIik7CiAgICAgaW50ZXJmYWNlQmxvY2suYXJy
YXlTaXplID0gdmFyaWFibGUtPmdldEFycmF5U2l6ZSgpOwogICAgIGludGVyZmFjZUJsb2NrLmlz
Um93TWFqb3JMYXlvdXQgPSAoYmxvY2tUeXBlLT5tYXRyaXhQYWNraW5nKCkgPT0gRW1wUm93TWFq
b3IpOwogICAgIGludGVyZmFjZUJsb2NrLmxheW91dCA9IEdldEJsb2NrTGF5b3V0VHlwZShibG9j
a1R5cGUtPmJsb2NrU3RvcmFnZSgpKTsKIAogICAgIC8vIEdhdGhlciBmaWVsZCBpbmZvcm1hdGlv
bgotICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkTGlzdCA9IGJsb2NrVHlwZS0+ZmllbGRzKCk7
Ci0KLSAgICBmb3IgKHNpemVfdCBmaWVsZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkTGlz
dC5zaXplKCk7ICsrZmllbGRJbmRleCkKKyAgICBmb3IgKGNvbnN0IFRGaWVsZCAqZmllbGQgOiBi
bG9ja1R5cGUtPmZpZWxkcygpKQogICAgIHsKLSAgICAgICAgY29uc3QgVEZpZWxkICZmaWVsZCA9
ICpmaWVsZExpc3RbZmllbGRJbmRleF07Ci0gICAgICAgIGNvbnN0IFRTdHJpbmcgJmZ1bGxGaWVs
ZE5hbWUgPSBJbnRlcmZhY2VCbG9ja0ZpZWxkTmFtZSgqYmxvY2tUeXBlLCBmaWVsZCk7Ci0gICAg
ICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgPSAqZmllbGQudHlwZSgpOworICAgICAgICBjb25z
dCBUVHlwZSAmZmllbGRUeXBlID0gKmZpZWxkLT50eXBlKCk7CiAKLSAgICAgICAgR2V0VmFyaWFi
bGVUcmF2ZXJzZXIgdHJhdmVyc2VyKG1TeW1ib2xUYWJsZSk7Ci0gICAgICAgIHRyYXZlcnNlci50
cmF2ZXJzZShmaWVsZFR5cGUsIGZ1bGxGaWVsZE5hbWUsICZpbnRlcmZhY2VCbG9jay5maWVsZHMp
OworICAgICAgICBOYW1lSGFzaGluZ1RyYXZlcnNlciB0cmF2ZXJzZXIobUhhc2hGdW5jdGlvbiwg
bVN5bWJvbFRhYmxlKTsKKyAgICAgICAgdHJhdmVyc2VyLnRyYXZlcnNlKGZpZWxkVHlwZSwgZmll
bGQtPm5hbWUoKSwgJmludGVyZmFjZUJsb2NrLmZpZWxkcyk7CiAKICAgICAgICAgaW50ZXJmYWNl
QmxvY2suZmllbGRzLmJhY2soKS5pc1Jvd01ham9yTGF5b3V0ID0gKGZpZWxkVHlwZS5nZXRMYXlv
dXRRdWFsaWZpZXIoKS5tYXRyaXhQYWNraW5nID09IEVtcFJvd01ham9yKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJs
ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDE2ICsyMSwxNiBAQAogewogICBwdWJsaWM6CiAgICAgQ29s
bGVjdFZhcmlhYmxlcyhzdGQ6OnZlY3RvcjxBdHRyaWJ1dGU+ICphdHRyaWJzLAotICAgICAgICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8QXR0cmlidXRlPiAqb3V0cHV0VmFyaWFibGVzLAorICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8T3V0cHV0VmFyaWFibGU+ICpvdXRwdXRWYXJp
YWJsZXMsCiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAqdW5pZm9y
bXMsCiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJ5aW5nPiAqdmFyeWluZ3Ms
CiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxJbnRlcmZhY2VCbG9jaz4gKmludGVy
ZmFjZUJsb2NrcywKICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1
bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xU
YWJsZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3lt
Ym9sKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUgKm5vZGUpOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwg
VEludGVybUJpbmFyeSAqYmluYXJ5Tm9kZSk7CisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJt
U3ltYm9sICpzeW1ib2wpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUpIG92ZXJyaWRlOwogCiAgIHBy
aXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+CkBAIC00MCw3ICs0MCw3IEBACiAg
ICAgdm9pZCB2aXNpdEluZm9MaXN0KGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UsIHN0
ZDo6dmVjdG9yPFZhclQ+ICppbmZvTGlzdCkgY29uc3Q7CiAKICAgICBzdGQ6OnZlY3RvcjxBdHRy
aWJ1dGU+ICptQXR0cmliczsKLSAgICBzdGQ6OnZlY3RvcjxBdHRyaWJ1dGU+ICptT3V0cHV0VmFy
aWFibGVzOworICAgIHN0ZDo6dmVjdG9yPE91dHB1dFZhcmlhYmxlPiAqbU91dHB1dFZhcmlhYmxl
czsKICAgICBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAqbVVuaWZvcm1zOwogICAgIHN0ZDo6dmVjdG9y
PFZhcnlpbmc+ICptVmFyeWluZ3M7CiAgICAgc3RkOjp2ZWN0b3I8SW50ZXJmYWNlQmxvY2s+ICpt
SW50ZXJmYWNlQmxvY2tzOwpAQCAtNTMsOSArNTMsMTYgQEAKICAgICBib29sIG1GcmFnQ29vcmRB
ZGRlZDsKIAogICAgIGJvb2wgbUluc3RhbmNlSURBZGRlZDsKKyAgICBib29sIG1WZXJ0ZXhJREFk
ZGVkOwogICAgIGJvb2wgbVBvc2l0aW9uQWRkZWQ7CiAgICAgYm9vbCBtUG9pbnRTaXplQWRkZWQ7
CiAgICAgYm9vbCBtTGFzdEZyYWdEYXRhQWRkZWQ7CisgICAgYm9vbCBtRnJhZ0NvbG9yQWRkZWQ7
CisgICAgYm9vbCBtRnJhZ0RhdGFBZGRlZDsKKyAgICBib29sIG1GcmFnRGVwdGhFWFRBZGRlZDsK
KyAgICBib29sIG1GcmFnRGVwdGhBZGRlZDsKKyAgICBib29sIG1TZWNvbmRhcnlGcmFnQ29sb3JF
WFRBZGRlZDsKKyAgICBib29sIG1TZWNvbmRhcnlGcmFnRGF0YUVYVEFkZGVkOwogCiAgICAgU2hI
YXNoRnVuY3Rpb242NCBtSGFzaEZ1bmN0aW9uOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lv
bkdMU0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYsMTEgKzYsMjQgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdM
U0wuaCIKIAotc3RhdGljIGNvbnN0IGludCBHTFNMX1ZFUlNJT05fMTEwID0gMTEwOwotc3RhdGlj
IGNvbnN0IGludCBHTFNMX1ZFUlNJT05fMTIwID0gMTIwOwotc3RhdGljIGNvbnN0IGludCBHTFNM
X1ZFUlNJT05fMTMwID0gMTMwOwotc3RhdGljIGNvbnN0IGludCBHTFNMX1ZFUlNJT05fNDEwID0g
NDEwOwotc3RhdGljIGNvbnN0IGludCBHTFNMX1ZFUlNJT05fNDIwID0gNDIwOworaW50IFNoYWRl
ck91dHB1dFR5cGVUb0dMU0xWZXJzaW9uKFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKK3sKKyAgICBz
d2l0Y2ggKG91dHB1dCkKKyAgICB7CisgICAgICBjYXNlIFNIX0dMU0xfMTMwX09VVFBVVDogICAg
ICAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fMTMwOworICAgICAgY2FzZSBTSF9HTFNMXzE0MF9P
VVRQVVQ6ICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzE0MDsKKyAgICAgIGNhc2UgU0hf
R0xTTF8xNTBfQ09SRV9PVVRQVVQ6ICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl8xNTA7CisgICAg
ICBjYXNlIFNIX0dMU0xfMzMwX0NPUkVfT1VUUFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05f
MzMwOworICAgICAgY2FzZSBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVDogICAgICByZXR1cm4gR0xT
TF9WRVJTSU9OXzQwMDsKKyAgICAgIGNhc2UgU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQ6ICAgICAg
cmV0dXJuIEdMU0xfVkVSU0lPTl80MTA7CisgICAgICBjYXNlIFNIX0dMU0xfNDIwX0NPUkVfT1VU
UFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fNDIwOworICAgICAgY2FzZSBTSF9HTFNMXzQz
MF9DT1JFX09VVFBVVDogICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQzMDsKKyAgICAgIGNhc2Ug
U0hfR0xTTF80NDBfQ09SRV9PVVRQVVQ6ICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl80NDA7Cisg
ICAgICBjYXNlIFNIX0dMU0xfNDUwX0NPUkVfT1VUUFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJ
T05fNDUwOworICAgICAgY2FzZSBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUOiByZXR1cm4g
R0xTTF9WRVJTSU9OXzExMDsKKyAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorfQogCiAvLyBXZSBuZWVkIHRvIHNjYW4gZm9yIHRoZSBmb2xs
b3dpbmc6CiAvLyAxLiAiaW52YXJpYW50IiBrZXl3b3JkOiBUaGlzIGNhbiBvY2N1ciBpbiBib3Ro
IC0gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzCkBAIC0zMiwzMyArNDUsMjEgQEAKIFRWZXJz
aW9uR0xTTDo6VFZlcnNpb25HTFNMKHNoOjpHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRQcmFnbWEgJnByYWdtYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwg
ZmFsc2UsIGZhbHNlKQogewotICAgIGlmIChvdXRwdXQgPT0gU0hfR0xTTF8xMzBfT1VUUFVUKQor
ICAgIG1WZXJzaW9uID0gU2hhZGVyT3V0cHV0VHlwZVRvR0xTTFZlcnNpb24ob3V0cHV0KTsKKyAg
ICBpZiAocHJhZ21hLnN0ZGdsLmludmFyaWFudEFsbCkKICAgICB7Ci0gICAgICAgIG1WZXJzaW9u
ID0gR0xTTF9WRVJTSU9OXzEzMDsKKyAgICAgICAgZW5zdXJlVmVyc2lvbklzQXRMZWFzdChHTFNM
X1ZFUlNJT05fMTIwKTsKICAgICB9Ci0gICAgZWxzZSBpZiAob3V0cHV0ID09IFNIX0dMU0xfNDEw
X0NPUkVfT1VUUFVUKQotICAgIHsKLSAgICAgICAgbVZlcnNpb24gPSBHTFNMX1ZFUlNJT05fNDEw
OwotICAgIH0KLSAgICBlbHNlIGlmIChvdXRwdXQgPT0gU0hfR0xTTF80MjBfQ09SRV9PVVRQVVQp
Ci0gICAgewotICAgICAgICBtVmVyc2lvbiA9IEdMU0xfVkVSU0lPTl80MjA7Ci0gICAgfQotICAg
IGVsc2UKLSAgICB7Ci0gICAgICBBU1NFUlQob3V0cHV0ID09IFNIX0dMU0xfQ09NUEFUSUJJTElU
WV9PVVRQVVQpOwotICAgICAgaWYgKHByYWdtYS5zdGRnbC5pbnZhcmlhbnRBbGwpCi0gICAgICAg
ICAgbVZlcnNpb24gPSBHTFNMX1ZFUlNJT05fMTIwOwotICAgICAgZWxzZQotICAgICAgICAgIG1W
ZXJzaW9uID0gR0xTTF9WRVJTSU9OXzExMDsKLSAgICB9CiB9CiAKIHZvaWQgVFZlcnNpb25HTFNM
Ojp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQogewogICAgIGlmIChub2RlLT5nZXRT
eW1ib2woKSA9PSAiZ2xfUG9pbnRDb29yZCIpCi0gICAgICAgIHVwZGF0ZVZlcnNpb24oR0xTTF9W
RVJTSU9OXzEyMCk7CisgICAgeworICAgICAgICBlbnN1cmVWZXJzaW9uSXNBdExlYXN0KEdMU0xf
VkVSU0lPTl8xMjApOworICAgIH0KIH0KIAogYm9vbCBUVmVyc2lvbkdMU0w6OnZpc2l0QWdncmVn
YXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQpAQCAtNzQsMTYgKzc1LDE0IEBACiAg
ICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOgogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBU
SW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gKihub2RlLT5nZXRTZXF1ZW5jZSgpKTsKLSAgICAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gc2VxdWVuY2UuZnJvbnQoKS0+Z2V0QXNUeXBl
ZCgpLT5nZXRRdWFsaWZpZXIoKTsKLSAgICAgICAgICAgIGlmICgocXVhbGlmaWVyID09IEV2cUlu
dmFyaWFudFZhcnlpbmdJbikgfHwKLSAgICAgICAgICAgICAgICAocXVhbGlmaWVyID09IEV2cUlu
dmFyaWFudFZhcnlpbmdPdXQpKQorICAgICAgICAgICAgaWYgKHNlcXVlbmNlLmZyb250KCktPmdl
dEFzVHlwZWQoKS0+Z2V0VHlwZSgpLmlzSW52YXJpYW50KCkpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlVmVyc2lvbihHTFNMX1ZFUlNJT05fMTIwKTsKKyAgICAgICAgICAg
ICAgICBlbnN1cmVWZXJzaW9uSXNBdExlYXN0KEdMU0xfVkVSU0lPTl8xMjApOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgIGNhc2UgRU9wSW52YXJp
YW50RGVjbGFyYXRpb246Ci0gICAgICAgIHVwZGF0ZVZlcnNpb24oR0xTTF9WRVJTSU9OXzEyMCk7
CisgICAgICAgIGVuc3VyZVZlcnNpb25Jc0F0TGVhc3QoR0xTTF9WRVJTSU9OXzEyMCk7CiAgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOgogICAgICAgICB7CkBAIC05Nyw3
ICs5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gcGFy
YW0tPmdldFF1YWxpZmllcigpOwogICAgICAgICAgICAgICAgICAgICBpZiAoKHF1YWxpZmllciA9
PSBFdnFPdXQpIHx8IChxdWFsaWZpZXIgPT0gIEV2cUluT3V0KSkKICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlVmVyc2lvbihHTFNMX1ZFUlNJT05f
MTIwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZVZlcnNpb25Jc0F0TGVhc3QoR0xT
TF9WRVJTSU9OXzEyMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTEwNyw3ICsxMDYsMTMgQEAKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6
CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKKyAgICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0Mng0OgorICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6CiAgICAgICBjYXNlIEVPcENv
bnN0cnVjdE1hdDM6CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKKyAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6CiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRJ
bnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwpAQCAtMTE2
LDcgKzEyMSw3IEBACiAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICp0eXBlZCA9IHNlcXVl
bmNlLmZyb250KCktPmdldEFzVHlwZWQoKTsKICAgICAgICAgICAgICAgICBpZiAodHlwZWQgJiYg
dHlwZWQtPmlzTWF0cml4KCkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVWZXJzaW9uKEdMU0xfVkVSU0lPTl8xMjApOworICAgICAgICAgICAgICAgICAgICBl
bnN1cmVWZXJzaW9uSXNBdExlYXN0KEdMU0xfVkVSU0lPTl8xMjApOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI4LDcgKzEzMyw3IEBA
CiAgICAgcmV0dXJuIHZpc2l0Q2hpbGRyZW47CiB9CiAKLXZvaWQgVFZlcnNpb25HTFNMOjp1cGRh
dGVWZXJzaW9uKGludCB2ZXJzaW9uKQordm9pZCBUVmVyc2lvbkdMU0w6OmVuc3VyZVZlcnNpb25J
c0F0TGVhc3QoaW50IHZlcnNpb24pCiB7CiAgICAgbVZlcnNpb24gPSBzdGQ6Om1heCh2ZXJzaW9u
LCBtVmVyc2lvbik7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1ZlcnNpb25HTFNMLmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDIxIEBACiAKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1ByYWdtYS5oIgogCitzdGF0aWMgY29uc3QgaW50
IEdMU0xfVkVSU0lPTl8xMTAgPSAxMTA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8x
MjAgPSAxMjA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8xMzAgPSAxMzA7CitzdGF0
aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8xNDAgPSAxNDA7CitzdGF0aWMgY29uc3QgaW50IEdM
U0xfVkVSU0lPTl8xNTAgPSAxNTA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8zMzAg
PSAzMzA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl80MDAgPSA0MDA7CitzdGF0aWMg
Y29uc3QgaW50IEdMU0xfVkVSU0lPTl80MTAgPSA0MTA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xf
VkVSU0lPTl80MjAgPSA0MjA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl80MzAgPSA0
MzA7CitzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl80NDAgPSA0NDA7CitzdGF0aWMgY29u
c3QgaW50IEdMU0xfVkVSU0lPTl80NTAgPSA0NTA7CisKK2ludCBTaGFkZXJPdXRwdXRUeXBlVG9H
TFNMVmVyc2lvbihTaFNoYWRlck91dHB1dCBvdXRwdXQpOworCiAvLyBUcmF2ZXJzZXMgdGhlIGlu
dGVybWVkaWF0ZSB0cmVlIHRvIHJldHVybiB0aGUgbWluaW11bSBHTFNMIHZlcnNpb24KIC8vIHJl
cXVpcmVkIHRvIGxlZ2FsbHkgYWNjZXNzIGFsbCBidWlsdC1pbiBmZWF0dXJlcyB1c2VkIGluIHRo
ZSBzaGFkZXIuCiAvLyBHTFNMIDEuMSB3aGljaCBpcyBtYW5kYXRlZCBieSBPcGVuR0wgMi4wIHBy
b3ZpZGVzOgpAQCAtMzksMTUgKzU0LDE0IEBACiAgICAgLy8gICAtIG1hdHJpeC9tYXRyaXggY29u
c3RydWN0b3JzCiAgICAgLy8gICAtIGFycmF5ICJvdXQiIHBhcmFtZXRlcnMKICAgICAvLyAgIEVs
c2UgMTEwIGlzIHJldHVybmVkLgotICAgIGludCBnZXRWZXJzaW9uKCkgeyByZXR1cm4gbVZlcnNp
b247IH0KKyAgICBpbnQgZ2V0VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1WZXJzaW9uOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqKTsKLSAgICB2aXJ0
dWFsIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKik7CisgICAg
dm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CiAKLSAgcHJv
dGVjdGVkOgotICAgIHZvaWQgdXBkYXRlVmVyc2lvbihpbnQgdmVyc2lvbik7CisgIHByaXZhdGU6
CisgICAgdm9pZCBlbnN1cmVWZXJzaW9uSXNBdExlYXN0KGludCB2ZXJzaW9uKTsKIAotICBwcml2
YXRlOgogICAgIGludCBtVmVyc2lvbjsKIH07CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xh
eW91dC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNyArMjcsMTAgQEAKIAogICAgIGdldEJsb2NrTGF5b3V0SW5mbyh0eXBlLCBhcnJheVNpemUs
IGlzUm93TWFqb3JNYXRyaXgsICZhcnJheVN0cmlkZSwgJm1hdHJpeFN0cmlkZSk7CiAKLSAgICBj
b25zdCBCbG9ja01lbWJlckluZm8gbWVtYmVySW5mbyhzdGF0aWNfY2FzdDxpbnQ+KG1DdXJyZW50
T2Zmc2V0ICogQnl0ZXNQZXJDb21wb25lbnQpLCBhcnJheVN0cmlkZSAqIEJ5dGVzUGVyQ29tcG9u
ZW50LCBtYXRyaXhTdHJpZGUgKiBCeXRlc1BlckNvbXBvbmVudCwgaXNSb3dNYWpvck1hdHJpeCk7
CisgICAgY29uc3QgQmxvY2tNZW1iZXJJbmZvIG1lbWJlckluZm8oc3RhdGljX2Nhc3Q8aW50Piht
Q3VycmVudE9mZnNldCAqIEJ5dGVzUGVyQ29tcG9uZW50KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGFycmF5U3RyaWRlICogQnl0ZXNQZXJD
b21wb25lbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PGludD4obWF0cml4U3RyaWRlICogQnl0ZXNQZXJDb21wb25lbnQpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzUm93TWFqb3JNYXRyaXgpOwogCiAgICAgYWR2YW5j
ZU9mZnNldCh0eXBlLCBhcnJheVNpemUsIGlzUm93TWFqb3JNYXRyaXgsIGFycmF5U3RyaWRlLCBt
YXRyaXhTdHJpZGUpOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmgJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL2Jsb2NrbGF5b3V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKIAogc3Ry
dWN0IENPTVBJTEVSX0VYUE9SVCBCbG9ja01lbWJlckluZm8KIHsKKyAgICBCbG9ja01lbWJlcklu
Zm8oKSA6IG9mZnNldCgtMSksIGFycmF5U3RyaWRlKC0xKSwgbWF0cml4U3RyaWRlKC0xKSwgaXNS
b3dNYWpvck1hdHJpeChmYWxzZSkge30KKwogICAgIEJsb2NrTWVtYmVySW5mbyhpbnQgb2Zmc2V0
LCBpbnQgYXJyYXlTdHJpZGUsIGludCBtYXRyaXhTdHJpZGUsIGJvb2wgaXNSb3dNYWpvck1hdHJp
eCkKICAgICAgICAgOiBvZmZzZXQob2Zmc2V0KSwKICAgICAgICAgICBhcnJheVN0cmlkZShhcnJh
eVN0cmlkZSksCkBAIC00OCwxMiArNTAsMTEgQEAKIHsKICAgcHVibGljOgogICAgIEJsb2NrTGF5
b3V0RW5jb2RlcigpOworICAgIHZpcnR1YWwgfkJsb2NrTGF5b3V0RW5jb2RlcigpIHt9CiAKICAg
ICBCbG9ja01lbWJlckluZm8gZW5jb2RlVHlwZShHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IGFy
cmF5U2l6ZSwgYm9vbCBpc1Jvd01ham9yTWF0cml4KTsKIAogICAgIHNpemVfdCBnZXRCbG9ja1Np
emUoKSBjb25zdCB7IHJldHVybiBtQ3VycmVudE9mZnNldCAqIEJ5dGVzUGVyQ29tcG9uZW50OyB9
Ci0gICAgc2l6ZV90IGdldEN1cnJlbnRSZWdpc3RlcigpIGNvbnN0IHsgcmV0dXJuIG1DdXJyZW50
T2Zmc2V0IC8gQ29tcG9uZW50c1BlclJlZ2lzdGVyOyB9Ci0gICAgc2l6ZV90IGdldEN1cnJlbnRF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbUN1cnJlbnRPZmZzZXQgJSBDb21wb25lbnRzUGVyUmVn
aXN0ZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBlbnRlckFnZ3JlZ2F0ZVR5cGUoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGV4aXRBZ2dyZWdhdGVUeXBlKCkgPSAwOwpAQCAtODEsMTIgKzgyLDIw
IEBACiAgIHB1YmxpYzoKICAgICBTdGQxNDBCbG9ja0VuY29kZXIoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBlbnRlckFnZ3JlZ2F0ZVR5cGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEFnZ3JlZ2F0
ZVR5cGUoKTsKKyAgICB2b2lkIGVudGVyQWdncmVnYXRlVHlwZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgZXhpdEFnZ3JlZ2F0ZVR5cGUoKSBvdmVycmlkZTsKIAogICBwcm90ZWN0ZWQ6Ci0gICAgdmly
dHVhbCB2b2lkIGdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IGFy
cmF5U2l6ZSwgYm9vbCBpc1Jvd01ham9yTWF0cml4LCBpbnQgKmFycmF5U3RyaWRlT3V0LCBpbnQg
Km1hdHJpeFN0cmlkZU91dCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkdmFuY2VPZmZzZXQoR0xlbnVt
IHR5cGUsIHVuc2lnbmVkIGludCBhcnJheVNpemUsIGJvb2wgaXNSb3dNYWpvck1hdHJpeCwgaW50
IGFycmF5U3RyaWRlLCBpbnQgbWF0cml4U3RyaWRlKTsKKyAgICB2b2lkIGdldEJsb2NrTGF5b3V0
SW5mbyhHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNSb3dNYWpv
ck1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmFycmF5U3RyaWRlT3V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbWF0cml4U3RyaWRlT3V0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFkdmFuY2VPZmZzZXQoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNSb3dNYWpvck1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGFycmF5
U3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4U3RyaWRlKSBvdmVycmlk
ZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmNwcAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDkg
KzExMywxNCBAQAogewogICAgIHN3aXRjaCAob3V0cHV0VHlwZSkKICAgICB7Ci0gICAgICBjYXNl
IFNIX0hMU0w5X09VVFBVVDogcmV0dXJuIEVOQ09ERV9MT09TRTsKLSAgICAgIGNhc2UgU0hfSExT
TDExX09VVFBVVDogcmV0dXJuIEVOQ09ERV9QQUNLRUQ7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNI
QUJMRSgpOyByZXR1cm4gRU5DT0RFX1BBQ0tFRDsKKyAgICAgICAgY2FzZSBTSF9ITFNMXzNfMF9P
VVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gRU5DT0RFX0xPT1NFOworICAgICAgICBjYXNlIFNI
X0hMU0xfNF8xX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQ6
CisgICAgICAgICAgICByZXR1cm4gRU5DT0RFX1BBQ0tFRDsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gRU5DT0RFX1BBQ0tF
RDsKICAgICB9CiB9CiAKQEAgLTE1Niw2ICsxNjEsNyBAQAogdW5zaWduZWQgaW50IEhMU0xWYXJp
YWJsZVJlZ2lzdGVyQ291bnQoY29uc3QgVW5pZm9ybSAmdmFyaWFibGUsIFNoU2hhZGVyT3V0cHV0
IG91dHB1dFR5cGUpCiB7CiAgICAgSExTTEJsb2NrRW5jb2RlciBlbmNvZGVyKEhMU0xCbG9ja0Vu
Y29kZXI6OkdldFN0cmF0ZWd5Rm9yKG91dHB1dFR5cGUpKTsKKyAgICBlbmNvZGVyLnNldFRyYW5z
cG9zZU1hdHJpY2VzKHRydWUpOwogICAgIEhMU0xWYXJpYWJsZVJlZ2lzdGVyQ291bnQodmFyaWFi
bGUsICZlbmNvZGVyKTsKIAogICAgIGNvbnN0IHNpemVfdCByZWdpc3RlckJ5dGVzID0gKGVuY29k
ZXIuQnl0ZXNQZXJDb21wb25lbnQgKiBlbmNvZGVyLkNvbXBvbmVudHNQZXJSZWdpc3Rlcik7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBn
cmFwaC9EZXBlbmRlbmN5R3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5j
cHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQsOCArNCw2IEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAot
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpCi0KICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oIgogCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBl
bmRlbmN5R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGguaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2
LDEwIEBACiBjbGFzcyBUR3JhcGhQYXJlbnROb2RlIDogcHVibGljIFRHcmFwaE5vZGUgewogcHVi
bGljOgogICAgIFRHcmFwaFBhcmVudE5vZGUoVEludGVybU5vZGUqIG5vZGUpIDogVEdyYXBoTm9k
ZShub2RlKSB7fQotICAgIHZpcnR1YWwgflRHcmFwaFBhcmVudE5vZGUoKSB7fQorICAgIH5UR3Jh
cGhQYXJlbnROb2RlKCkgb3ZlcnJpZGUge30KICAgICB2b2lkIGFkZERlcGVuZGVudE5vZGUoVEdy
YXBoTm9kZSogbm9kZSkgeyBpZiAobm9kZSAhPSB0aGlzKSBtRGVwZW5kZW50Tm9kZXMuaW5zZXJ0
KG5vZGUpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2
ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKTsKKyAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3Jh
cGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBU
R3JhcGhOb2RlU2V0IG1EZXBlbmRlbnROb2RlczsKIH07CkBAIC02MSwxMCArNjIsMTEgQEAKICAg
ICBUR3JhcGhBcmd1bWVudChUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwsIGlu
dCBhcmd1bWVudE51bWJlcikKICAgICAgICAgOiBUR3JhcGhQYXJlbnROb2RlKGludGVybUZ1bmN0
aW9uQ2FsbCkKICAgICAgICAgLCBtQXJndW1lbnROdW1iZXIoYXJndW1lbnROdW1iZXIpIHt9Ci0g
ICAgdmlydHVhbCB+VEdyYXBoQXJndW1lbnQoKSB7fQorICAgIH5UR3JhcGhBcmd1bWVudCgpIG92
ZXJyaWRlIHt9CiAgICAgY29uc3QgVEludGVybUFnZ3JlZ2F0ZSogZ2V0SW50ZXJtRnVuY3Rpb25D
YWxsKCkgY29uc3QgeyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsgfQogICAg
IGludCBnZXRBcmd1bWVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1Bcmd1bWVudE51bWJlcjsg
fQotICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVyc2VyKiBn
cmFwaFRyYXZlcnNlcik7CisgICAgdm9pZCB0cmF2ZXJzZShURGVwZW5kZW5jeUdyYXBoVHJhdmVy
c2VyICpncmFwaFRyYXZlcnNlcikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgaW50IG1Bcmd1
bWVudE51bWJlcjsKIH07CkBAIC03Niw5ICs3OCw5IEBACiBwdWJsaWM6CiAgICAgVEdyYXBoRnVu
Y3Rpb25DYWxsKFRJbnRlcm1BZ2dyZWdhdGUqIGludGVybUZ1bmN0aW9uQ2FsbCkKICAgICAgICAg
OiBUR3JhcGhQYXJlbnROb2RlKGludGVybUZ1bmN0aW9uQ2FsbCkge30KLSAgICB2aXJ0dWFsIH5U
R3JhcGhGdW5jdGlvbkNhbGwoKSB7fQorICAgIH5UR3JhcGhGdW5jdGlvbkNhbGwoKSBvdmVycmlk
ZSB7fQogICAgIGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUqIGdldEludGVybUZ1bmN0aW9uQ2FsbCgp
IGNvbnN0IHsgcmV0dXJuIGludGVybU5vZGUtPmdldEFzQWdncmVnYXRlKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciogZ3JhcGhUcmF2ZXJz
ZXIpOworICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciAqZ3JhcGhU
cmF2ZXJzZXIpIG92ZXJyaWRlOwogfTsKIAogLy8KQEAgLTg3LDkgKzg5LDkgQEAKIGNsYXNzIFRH
cmFwaFN5bWJvbCA6IHB1YmxpYyBUR3JhcGhQYXJlbnROb2RlIHsKIHB1YmxpYzoKICAgICBUR3Jh
cGhTeW1ib2woVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sKSA6IFRHcmFwaFBhcmVudE5vZGUo
aW50ZXJtU3ltYm9sKSB7fQotICAgIHZpcnR1YWwgflRHcmFwaFN5bWJvbCgpIHt9CisgICAgflRH
cmFwaFN5bWJvbCgpIG92ZXJyaWRlIHt9CiAgICAgY29uc3QgVEludGVybVN5bWJvbCogZ2V0SW50
ZXJtU3ltYm9sKCkgY29uc3QgeyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciog
Z3JhcGhUcmF2ZXJzZXIpOworICAgIHZvaWQgdHJhdmVyc2UoVERlcGVuZGVuY3lHcmFwaFRyYXZl
cnNlciAqZ3JhcGhUcmF2ZXJzZXIpIG92ZXJyaWRlOwogfTsKIAogLy8KQEAgLTk4LDkgKzEwMCw5
IEBACiBjbGFzcyBUR3JhcGhTZWxlY3Rpb24gOiBwdWJsaWMgVEdyYXBoTm9kZSB7CiBwdWJsaWM6
CiAgICAgVEdyYXBoU2VsZWN0aW9uKFRJbnRlcm1TZWxlY3Rpb24qIGludGVybVNlbGVjdGlvbikg
OiBUR3JhcGhOb2RlKGludGVybVNlbGVjdGlvbikge30KLSAgICB2aXJ0dWFsIH5UR3JhcGhTZWxl
Y3Rpb24oKSB7fQorICAgIH5UR3JhcGhTZWxlY3Rpb24oKSBvdmVycmlkZSB7fQogICAgIGNvbnN0
IFRJbnRlcm1TZWxlY3Rpb24qIGdldEludGVybVNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlu
dGVybU5vZGUtPmdldEFzU2VsZWN0aW9uTm9kZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYXZl
cnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKTsKKyAgICB2b2lk
IHRyYXZlcnNlKFREZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVy
cmlkZTsKIH07CiAKIC8vCkBAIC0xMDksOSArMTExLDkgQEAKIGNsYXNzIFRHcmFwaExvb3AgOiBw
dWJsaWMgVEdyYXBoTm9kZSB7CiBwdWJsaWM6CiAgICAgVEdyYXBoTG9vcChUSW50ZXJtTG9vcCog
aW50ZXJtTG9vcCkgOiBUR3JhcGhOb2RlKGludGVybUxvb3ApIHt9Ci0gICAgdmlydHVhbCB+VEdy
YXBoTG9vcCgpIHt9CisgICAgflRHcmFwaExvb3AoKSBvdmVycmlkZSB7fQogICAgIGNvbnN0IFRJ
bnRlcm1Mb29wKiBnZXRJbnRlcm1Mb29wKCkgY29uc3QgeyByZXR1cm4gaW50ZXJtTm9kZS0+Z2V0
QXNMb29wTm9kZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFREZXBlbmRlbmN5R3Jh
cGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKTsKKyAgICB2b2lkIHRyYXZlcnNlKFREZXBlbmRl
bmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKIH07CiAKIC8vCkBA
IC0xMjAsMTAgKzEyMiwxMCBAQAogY2xhc3MgVEdyYXBoTG9naWNhbE9wIDogcHVibGljIFRHcmFw
aE5vZGUgewogcHVibGljOgogICAgIFRHcmFwaExvZ2ljYWxPcChUSW50ZXJtQmluYXJ5KiBpbnRl
cm1Mb2dpY2FsT3ApIDogVEdyYXBoTm9kZShpbnRlcm1Mb2dpY2FsT3ApIHt9Ci0gICAgdmlydHVh
bCB+VEdyYXBoTG9naWNhbE9wKCkge30KKyAgICB+VEdyYXBoTG9naWNhbE9wKCkgb3ZlcnJpZGUg
e30KICAgICBjb25zdCBUSW50ZXJtQmluYXJ5KiBnZXRJbnRlcm1Mb2dpY2FsT3AoKSBjb25zdCB7
IHJldHVybiBpbnRlcm1Ob2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsgfQogICAgIGNvbnN0IGNoYXIq
IGdldE9wU3RyaW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlKFREZXBlbmRl
bmN5R3JhcGhUcmF2ZXJzZXIqIGdyYXBoVHJhdmVyc2VyKTsKKyAgICB2b2lkIHRyYXZlcnNlKFRE
ZXBlbmRlbmN5R3JhcGhUcmF2ZXJzZXIgKmdyYXBoVHJhdmVyc2VyKSBvdmVycmlkZTsKIH07CiAK
IC8vCkBAIC0xNDAsMjkgKzE0MiwxMyBAQAogcHVibGljOgogICAgIFREZXBlbmRlbmN5R3JhcGgo
VEludGVybU5vZGUqIGludGVybU5vZGUpOwogICAgIH5URGVwZW5kZW5jeUdyYXBoKCk7Ci0gICAg
VEdyYXBoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
QWxsTm9kZXMuYmVnaW4oKTsgfQotICAgIFRHcmFwaE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1BbGxOb2Rlcy5lbmQoKTsgfQotCi0gICAgVEdyYXBoU3lt
Ym9sVmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpblNhbXBsZXJTeW1ib2xzKCkgY29uc3QKKyAg
ICBjb25zdCBUR3JhcGhOb2RlVmVjdG9yICZhbGxOb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1BbGxO
b2RlczsgfQorICAgIGNvbnN0IFRHcmFwaFN5bWJvbFZlY3RvciAmc2FtcGxlclN5bWJvbHMoKSBj
b25zdCB7IHJldHVybiBtU2FtcGxlclN5bWJvbHM7IH0KKyAgICBjb25zdCBURnVuY3Rpb25DYWxs
VmVjdG9yICZ1c2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1TYW1wbGVyU3ltYm9scy5iZWdpbigpOworICAgICAgICByZXR1cm4gbVVzZXJEZWZp
bmVkRnVuY3Rpb25DYWxsczsKICAgICB9CiAKLSAgICBUR3JhcGhTeW1ib2xWZWN0b3I6OmNvbnN0
X2l0ZXJhdG9yIGVuZFNhbXBsZXJTeW1ib2xzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtU2FtcGxlclN5bWJvbHMuZW5kKCk7Ci0gICAgfQotCi0gICAgVEZ1bmN0aW9uQ2FsbFZlY3Rv
cjo6Y29uc3RfaXRlcmF0b3IgYmVnaW5Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1Vc2VyRGVmaW5lZEZ1bmN0aW9uQ2FsbHMuYmVnaW4oKTsK
LSAgICB9Ci0KLSAgICBURnVuY3Rpb25DYWxsVmVjdG9yOjpjb25zdF9pdGVyYXRvciBlbmRVc2Vy
RGVmaW5lZEZ1bmN0aW9uQ2FsbHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1Vc2Vy
RGVmaW5lZEZ1bmN0aW9uQ2FsbHMuZW5kKCk7Ci0gICAgfQotCiAgICAgVEdyYXBoQXJndW1lbnQq
IGNyZWF0ZUFyZ3VtZW50KFRJbnRlcm1BZ2dyZWdhdGUqIGludGVybUZ1bmN0aW9uQ2FsbCwgaW50
IGFyZ3VtZW50TnVtYmVyKTsKICAgICBUR3JhcGhGdW5jdGlvbkNhbGwqIGNyZWF0ZUZ1bmN0aW9u
Q2FsbChUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1GdW5jdGlvbkNhbGwpOwogICAgIFRHcmFwaFN5
bWJvbCogZ2V0T3JDcmVhdGVTeW1ib2woVEludGVybVN5bWJvbCogaW50ZXJtU3ltYm9sKTsKQEAg
LTE4OSw2ICsxNzUsNyBAQAogY2xhc3MgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlciA6IGFuZ2xl
OjpOb25Db3B5YWJsZSB7CiBwdWJsaWM6CiAgICAgVERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlcigp
IDogbURlcHRoKDApIHt9CisgICAgdmlydHVhbCB+VERlcGVuZGVuY3lHcmFwaFRyYXZlcnNlcigp
IHt9CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEdyYXBoU3ltYm9sKiBzeW1ib2wp
IHt9OwogICAgIHZpcnR1YWwgdm9pZCB2aXNpdEFyZ3VtZW50KFRHcmFwaEFyZ3VtZW50KiBzZWxl
Y3Rpb24pIHt9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5jeUdyYXBoQnVpbGRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBo
L0RlcGVuZGVuY3lHcmFwaEJ1aWxkZXIuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZGVwZ3JhcGgvRGVwZW5kZW5j
eUdyYXBoQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCwxMSArMTgsMTEgQEAKICAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGJ1aWxkKFRJbnRlcm1Ob2RlICpub2RlLCBURGVwZW5kZW5j
eUdyYXBoICpncmFwaCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5
bWJvbCAqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRl
cm1CaW5hcnkgKik7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0
LCBUSW50ZXJtU2VsZWN0aW9uICopOwotICAgIHZpcnR1YWwgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKTsKLSAgICB2aXJ0dWFsIGJvb2wgdmlzaXRM
b29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqKTsKKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNp
dCwgVEludGVybUJpbmFyeSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0U2VsZWN0aW9uKFZp
c2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CisgICAg
Ym9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOwogCiAg
IHByaXZhdGU6CiAgICAgdHlwZWRlZiBzdGQ6OnN0YWNrPFRHcmFwaFN5bWJvbCAqPiBUU3ltYm9s
U3RhY2s7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9kZXBncmFwaC9EZXBlbmRlbmN5R3JhcGhPdXRwdXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0Rl
cGVuZGVuY3lHcmFwaE91dHB1dC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lH
cmFwaE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDkgKzU0LDggQEAKIHsKICAgICBt
U2luayA8PCAiXG4iOwogCi0gICAgZm9yIChUR3JhcGhOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gZ3JhcGguYmVnaW4oKTsgaXRlciAhPSBncmFwaC5lbmQoKTsgKytpdGVyKQorICAg
IGZvciAoYXV0byBzeW1ib2wgOiBncmFwaC5hbGxOb2RlcygpKQogICAgIHsKLSAgICAgICAgVEdy
YXBoTm9kZSogc3ltYm9sID0gKml0ZXI7CiAgICAgICAgIG1TaW5rIDw8ICItLS0gRGVwZW5kZW5j
eSBncmFwaCBzcGFubmluZyB0cmVlIC0tLVxuIjsKICAgICAgICAgY2xlYXJWaXNpdGVkKCk7CiAg
ICAgICAgIHN5bWJvbC0+dHJhdmVyc2UodGhpcyk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nZW5lcmF0ZV9wYXJzZXIuc2gKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2Vu
ZXJhdGVfcGFyc2VyLnNoCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nZW5lcmF0ZV9wYXJzZXIuc2gJKHdvcmtpbmcg
Y29weSkKQEAgLTcsMjIgKzcsMjMgQEAKIAogcnVuX2ZsZXgoKQogewotaW5wdXRfZmlsZT0kc2Ny
aXB0X2Rpci8kMS5sCi1vdXRwdXRfc291cmNlPSRzY3JpcHRfZGlyLyQxX2xleC5jcHAKK2lucHV0
X2ZpbGU9Li8kMS5sCitvdXRwdXRfc291cmNlPS4vJDFfbGV4LmNwcAogZmxleCAtLW5vbGluZSAt
LW5vdW5pc3RkIC0tb3V0ZmlsZT0kb3V0cHV0X3NvdXJjZSAkaW5wdXRfZmlsZQogfQogCiBydW5f
Ymlzb24oKQogewotaW5wdXRfZmlsZT0kc2NyaXB0X2Rpci8kMS55Ci1vdXRwdXRfaGVhZGVyPSRz
Y3JpcHRfZGlyLyQxX3RhYi5oCi1vdXRwdXRfc291cmNlPSRzY3JpcHRfZGlyLyQxX3RhYi5jcHAK
K2lucHV0X2ZpbGU9Li8kMS55CitvdXRwdXRfaGVhZGVyPS4vJDFfdGFiLmgKK291dHB1dF9zb3Vy
Y2U9Li8kMV90YWIuY3BwCiBiaXNvbiAtLW5vLWxpbmVzIC0tc2tlbGV0b249eWFjYy5jIC0tZGVm
aW5lcz0kb3V0cHV0X2hlYWRlciAtLW91dHB1dD0kb3V0cHV0X3NvdXJjZSAkaW5wdXRfZmlsZQog
fQogCiBzY3JpcHRfZGlyPSQoZGlybmFtZSAkMCkKIAogIyBHZW5lcmF0ZSBQYXJzZXIKK2NkICRz
Y3JpcHRfZGlyCiBydW5fZmxleCBnbHNsYW5nCiBydW5fYmlzb24gZ2xzbGFuZwogcGF0Y2ggLS1z
aWxlbnQgLS1mb3J3YXJkIDwgNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Z2xzbGFuZy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTcsNyAr
Nyw3IEBACiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfR0xTTEFOR19IXwogI2RlZmluZSBD
T01QSUxFUl9UUkFOU0xBVE9SX0dMU0xBTkdfSF8KIAotc3RydWN0IFRQYXJzZUNvbnRleHQ7Citj
bGFzcyBUUGFyc2VDb250ZXh0OwogZXh0ZXJuIGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNl
Q29udGV4dCogY29udGV4dCk7CiBleHRlcm4gaW50IGdsc2xhbmdfZmluYWxpemUoVFBhcnNlQ29u
dGV4dCogY29udGV4dCk7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmcubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmwJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ds
c2xhbmcubAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQAogc3RhdGljIGludCBFUzJf
a2V5d29yZF9FUzNfcmVzZXJ2ZWQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKTsK
IHN0YXRpYyBpbnQgRVMyX2lkZW50X0VTM19rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQs
IGludCB0b2tlbik7CiBzdGF0aWMgaW50IHVpbnRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAqY29u
dGV4dCk7Ci1zdGF0aWMgaW50IGludF9jb25zdGFudCh5eXNjYW5fdCB5eXNjYW5uZXIpOworc3Rh
dGljIGludCBpbnRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgaW50
IGZsb2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IGZsb2F0c3Vm
Zml4X2NoZWNrKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOwogJX0KQEAgLTI0Niw3ICsyNDYsNyBA
QAogInNhbXBsZXIyRE1TQXJyYXkiICB8CiAiaXNhbXBsZXIyRE1TQXJyYXkiIHwKICJ1c2FtcGxl
cjJETVNBcnJheSIgeyAKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVmVyc2lvbiA8IDMwMCkgewor
ICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDApIHsKIAkJeXlsdmFsLT5s
ZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCiAJICAgIHJldHVybiBjaGVja190
eXBlKHl5c2Nhbm5lcik7IAogCX0KQEAgLTI1NSw3ICsyNTUsNyBAQAogCiAgICAgLyogUmVzZXJ2
ZWQga2V5d29yZHMgaW4gR0xTTCBFUyAxLjAwIHRoYXQgYXJlIG5vdCByZXNlcnZlZCBpbiBHTFNM
IEVTIDMuMDAgKi8KICJwYWNrZWQiICB7Ci0gICAgaWYgKGNvbnRleHQtPnNoYWRlclZlcnNpb24g
Pj0gMzAwKQorICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwKQogICAg
IHsKICAgICAgICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsK
ICAgICAgICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKQEAgLTMyMSw5ICszMjEsOSBA
QAogICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKIH0KIAotMFt4WF17SH0rICAgICAg
ICAgeyByZXR1cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KLTB7T30rICAgICAgICAgICAg
IHsgcmV0dXJuIGludF9jb25zdGFudCh5eXNjYW5uZXIpOyB9Ci17RH0rICAgICAgICAgICAgICB7
IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQorMFt4WF17SH0rICAgICAgICAgeyBy
ZXR1cm4gaW50X2NvbnN0YW50KGNvbnRleHQpOyB9Ciswe099KyAgICAgICAgICAgICB7IHJldHVy
biBpbnRfY29uc3RhbnQoY29udGV4dCk7IH0KK3tEfSsgICAgICAgICAgICAgIHsgcmV0dXJuIGlu
dF9jb25zdGFudChjb250ZXh0KTsgfQogCiAwW3hYXXtIfStbdVVdICAgICB7IHJldHVybiB1aW50
X2NvbnN0YW50KGNvbnRleHQpOyB9CiAwe099K1t1VV0gICAgICAgICB7IHJldHVybiB1aW50X2Nv
bnN0YW50KGNvbnRleHQpOyB9CkBAIC0zOTAsMTYgKzM5MCwyMSBAQAogICAgIHJldHVybiBGSUVM
RF9TRUxFQ1RJT047CiB9CiA8RklFTERTPlsgXHRcdlxmXHJdIHt9Cis8RklFTERTPi4geworICAg
IHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIGNoYXJhY3RlciBhdCBmaWVsZG5hbWUg
c3RhcnQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5yZWNvdmVyKCk7CisgICAgcmV0dXJu
IDA7Cit9CiAKIFsgXHRcdlxuXGZccl0geyB9CiA8Kj48PEVPRj4+ICAgIHsgeXl0ZXJtaW5hdGUo
KTsgfQotPCo+LiAgICAgICAgICB7IHJldHVybiAwOyB9Cis8Kj4uICAgICAgICAgIHsgYXNzZXJ0
KGZhbHNlKTsgcmV0dXJuIDA7IH0KIAogJSUKIAogeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFy
KiBidWYsIHl5X3NpemVfdCBtYXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcHA6
OlRva2VuIHRva2VuOwotICAgIHl5Z2V0X2V4dHJhKHl5c2Nhbm5lciktPnByZXByb2Nlc3Nvci5s
ZXgoJnRva2VuKTsKKyAgICB5eWdldF9leHRyYSh5eXNjYW5uZXIpLT5nZXRQcmVwcm9jZXNzb3Io
KS5sZXgoJnRva2VuKTsKICAgICB5eV9zaXplX3QgbGVuID0gdG9rZW4udHlwZSA9PSBwcDo6VG9r
ZW46OkxBU1QgPyAwIDogdG9rZW4udGV4dC5zaXplKCk7CiAgICAgaWYgKGxlbiA8IG1heF9zaXpl
KQogICAgICAgICBtZW1jcHkoYnVmLCB0b2tlbi50ZXh0LmNfc3RyKCksIGxlbik7CkBAIC00MTcs
NyArNDIyLDcgQEAKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KSB5eXNjYW5uZXI7CiAgICAgCiAgICAgaW50IHRva2VuID0gSURFTlRJRklFUjsKLSAgICBUU3lt
Ym9sKiBzeW1ib2wgPSB5eWV4dHJhLT5zeW1ib2xUYWJsZS5maW5kKHl5dGV4dCwgeXlleHRyYS0+
c2hhZGVyVmVyc2lvbik7CisgICAgVFN5bWJvbCogc3ltYm9sID0geXlleHRyYS0+c3ltYm9sVGFi
bGUuZmluZCh5eXRleHQsIHl5ZXh0cmEtPmdldFNoYWRlclZlcnNpb24oKSk7CiAgICAgaWYgKHN5
bWJvbCAmJiBzeW1ib2wtPmlzVmFyaWFibGUoKSkgewogICAgICAgICBUVmFyaWFibGUqIHZhcmlh
YmxlID0gc3RhdGljX2Nhc3Q8VFZhcmlhYmxlKj4oc3ltYm9sKTsKICAgICAgICAgaWYgKHZhcmlh
YmxlLT5pc1VzZXJUeXBlKCkpIHsKQEAgLTQzOCw5ICs0NDMsOSBAQAogCiBpbnQgRVMyX3Jlc2Vy
dmVkX0VTM19rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKIHsKLSAg
ICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRleHQtPnNjYW5uZXI7CisgICAg
eXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CiAK
LSAgICBpZiAoY29udGV4dC0+c2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAgICBpZiAoY29udGV4dC0+
Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlc2VydmVk
X3dvcmQoeXlzY2FubmVyKTsKICAgICB9CkBAIC00NTAsOSArNDU1LDkgQEAKIAogaW50IEVTMl9r
ZXl3b3JkX0VTM19yZXNlcnZlZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCiB7
Ci0gICAgeXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5zY2FubmVyOwor
ICAgIHl5c2Nhbl90IHl5c2Nhbm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+Z2V0U2Nhbm5lcigp
OwogCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclZlcnNpb24gPj0gMzAwKQorICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJl
c2VydmVkX3dvcmQoeXlzY2FubmVyKTsKICAgICB9CkBAIC00NjIsMTEgKzQ2NywxMSBAQAogCiBp
bnQgRVMyX2lkZW50X0VTM19rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tl
bikKIHsKLSAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250
ZXh0LT5zY2FubmVyOwotICAgIHl5c2Nhbl90IHl5c2Nhbm5lciA9ICh5eXNjYW5fdCkgY29udGV4
dC0+c2Nhbm5lcjsKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nh
bl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CiAKICAgICAvLyBub3QgYSByZXNlcnZlZCB3b3Jk
IGluIEdMU0wgRVMgMS4wMCwgc28gY291bGQgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyL3R5cGUg
bmFtZQotICAgIGlmIChjb250ZXh0LT5zaGFkZXJWZXJzaW9uIDwgMzAwKQorICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDApCiAgICAgewogICAgICAgICB5eWx2YWwtPmxl
eC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOwogICAgICAgICByZXR1cm4gY2hlY2tf
dHlwZSh5eXNjYW5uZXIpOwpAQCAtNDc3LDM0ICs0ODIsMzUgQEAKIAogaW50IHVpbnRfY29uc3Rh
bnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCkKIHsKLSAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9
IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5zY2FubmVyOwotICAgIHl5c2Nhbl90IHl5c2Nh
bm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+c2Nhbm5lcjsKKyAgICBzdHJ1Y3QgeXlndXRzX3Qq
IHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CiAKLSAgICBp
ZiAoY29udGV4dC0+c2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hh
ZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxv
YywgIlVuc2lnbmVkIGludGVnZXJzIGFyZSB1bnN1cHBvcnRlZCBwcmlvciB0byBHTFNMIEVTIDMu
MDAiLCB5eXRleHQsICIiKTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIWF0b2lfY2xhbXAoeXl0ZXh0LCAmKHl5bHZhbC0+
bGV4LmkpKSkKLSAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAiSW50ZWdlciBvdmVy
ZmxvdyIsIHl5dGV4dCwgIiIpOworICAgIGlmICghYXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFs
LT5sZXgudSkpKQorICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVy
ZmxvdyIsIHl5dGV4dCwgIiIpOwogCiAgICAgcmV0dXJuIFVJTlRDT05TVEFOVDsKIH0KIAogaW50
IGZsb2F0c3VmZml4X2NoZWNrKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiB7Ci0gICAgc3RydWN0
IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKKyAg
ICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5nZXRT
Y2FubmVyKCk7CiAKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAgICBp
ZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKnl5bGxvYywgIkZsb2F0aW5nLXBvaW50IHN1ZmZpeCB1bnN1cHBvcnRlZCBw
cmlvciB0byBHTFNMIEVTIDMuMDAiLCB5eXRleHQpOwogICAgICAgICBjb250ZXh0LT5yZWNvdmVy
KCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmICghYXRvZl9jbGFtcCh5eXRl
eHQsICYoeXlsdmFsLT5sZXguZikpKQorICAgIHN0ZDo6c3RyaW5nIHRleHQgPSB5eXRleHQ7Cisg
ICAgdGV4dC5yZXNpemUodGV4dC5zaXplKCkgLSAxKTsKKyAgICBpZiAoIXN0cnRvZl9jbGFtcCh0
ZXh0LCAmKHl5bHZhbC0+bGV4LmYpKSkKICAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9j
LCAiRmxvYXQgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKIAogICAgIHJldHVybihGTE9BVENPTlNU
QU5UKTsKQEAgLTUxNSwxOCArNTIxLDI1IEBACiAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogfQog
Ci1pbnQgaW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgewotICAgIHN0cnVjdCB5eWd1
dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKK2ludCBpbnRfY29uc3Rh
bnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCkgeworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKIAotICAgIGlmICghYXRv
aV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguaSkpKQotICAgICAgICB5eWV4dHJhLT53YXJu
aW5nKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgdW5zaWdu
ZWQgaW50IHU7CisgICAgaWYgKCFhdG9pX2NsYW1wKHl5dGV4dCwgJnUpKQorICAgIHsKKyAgICAg
ICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA+PSAzMDApCisgICAgICAgICAgICB5
eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCwgIiIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJJbnRl
Z2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgfQorICAgIHl5bHZhbC0+bGV4LmkgPSBz
dGF0aWNfY2FzdDxpbnQ+KHUpOwogICAgIHJldHVybiBJTlRDT05TVEFOVDsKIH0KIAogaW50IGZs
b2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1dHNfdCog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIGlmICghYXRvZl9jbGFt
cCh5eXRleHQsICYoeXlsdmFsLT5sZXguZikpKQorICAgIGlmICghc3RydG9mX2NsYW1wKHl5dGV4
dCwgJih5eWx2YWwtPmxleC5mKSkpCiAgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywg
IkZsb2F0IG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CiAgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7
CiB9CkBAIC01MzYsMTUgKzU0OSwxNSBAQAogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRl
eHQsICZzY2FubmVyKSkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBjb250ZXh0LT5zY2FubmVy
ID0gc2Nhbm5lcjsKKyAgICBjb250ZXh0LT5zZXRTY2FubmVyKHNjYW5uZXIpOwogICAgIHJldHVy
biAwOwogfQogCiBpbnQgZ2xzbGFuZ19maW5hbGl6ZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7
Ci0gICAgeXlzY2FuX3Qgc2Nhbm5lciA9IGNvbnRleHQtPnNjYW5uZXI7CisgICAgeXlzY2FuX3Qg
c2Nhbm5lciA9IGNvbnRleHQtPmdldFNjYW5uZXIoKTsKICAgICBpZiAoc2Nhbm5lciA9PSBOVUxM
KSByZXR1cm4gMDsKICAgICAKLSAgICBjb250ZXh0LT5zY2FubmVyID0gTlVMTDsKKyAgICBjb250
ZXh0LT5zZXRTY2FubmVyKE5VTEwpOwogICAgIHl5bGV4X2Rlc3Ryb3koc2Nhbm5lcik7CiAKICAg
ICByZXR1cm4gMDsKQEAgLTU1MiwyNCArNTY1LDI2IEBACiAKIGludCBnbHNsYW5nX3NjYW4oc2l6
ZV90IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtd
LAogICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7Ci0gICAgeXlyZXN0
YXJ0KE5VTEwsIGNvbnRleHQtPnNjYW5uZXIpOwotICAgIHl5c2V0X2NvbHVtbigwLCBjb250ZXh0
LT5zY2FubmVyKTsKLSAgICB5eXNldF9saW5lbm8oMSwgY29udGV4dC0+c2Nhbm5lcik7CisgICAg
eXlyZXN0YXJ0KE5VTEwsIGNvbnRleHQtPmdldFNjYW5uZXIoKSk7CisgICAgeXlzZXRfY29sdW1u
KDAsIGNvbnRleHQtPmdldFNjYW5uZXIoKSk7CisgICAgeXlzZXRfbGluZW5vKDEsIGNvbnRleHQt
PmdldFNjYW5uZXIoKSk7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KLSAgICBp
ZiAoIWNvbnRleHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCisg
ICAgcHA6OlByZXByb2Nlc3NvciAqcHJlcHJvY2Vzc29yID0gJmNvbnRleHQtPmdldFByZXByb2Nl
c3NvcigpOworCisgICAgaWYgKCFwcmVwcm9jZXNzb3ItPmluaXQoY291bnQsIHN0cmluZywgbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAvLyBEZWZpbmUgZXh0ZW5zaW9uIG1hY3Jv
cy4KICAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gY29udGV4dC0+
ZXh0ZW5zaW9uQmVoYXZpb3IoKTsKICAgICBmb3IgKFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IGV4dEJlaGF2aW9yLmJlZ2luKCk7CiAgICAgICAgICBpdGVyICE9IGV4
dEJlaGF2aW9yLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgY29udGV4dC0+cHJlcHJvY2Vzc29y
LnByZWRlZmluZU1hY3JvKGl0ZXItPmZpcnN0LmNfc3RyKCksIDEpOworICAgICAgICBwcmVwcm9j
ZXNzb3ItPnByZWRlZmluZU1hY3JvKGl0ZXItPmZpcnN0LmNfc3RyKCksIDEpOwogICAgIH0KLSAg
ICBpZiAoY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdoKQotICAgICAgICBjb250ZXh0LT5w
cmVwcm9jZXNzb3IucHJlZGVmaW5lTWFjcm8oIkdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIIiwg
MSk7CisgICAgaWYgKGNvbnRleHQtPmdldEZyYWdtZW50UHJlY2lzaW9uSGlnaCgpKQorICAgICAg
ICBwcmVwcm9jZXNzb3ItPnByZWRlZmluZU1hY3JvKCJHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElH
SCIsIDEpOwogCi0gICAgY29udGV4dC0+cHJlcHJvY2Vzc29yLnNldE1heFRva2VuU2l6ZShHZXRH
bG9iYWxNYXhUb2tlblNpemUoY29udGV4dC0+c2hhZGVyU3BlYykpOworICAgIHByZXByb2Nlc3Nv
ci0+c2V0TWF4VG9rZW5TaXplKEdldEdsb2JhbE1heFRva2VuU2l6ZShjb250ZXh0LT5nZXRTaGFk
ZXJTcGVjKCkpKTsKIAogICAgIHJldHVybiAwOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy55Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmcueQko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZy55CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAj
ZW5kaWYKIAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9DYWNoZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUu
aCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oIgogI2luY2x1
ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgpAQCAtMTEwLDI4ICsxMTEsMjggQEAKICAgfSB3aGls
ZSAoMCkKIAogI2RlZmluZSBWRVJURVhfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQt
PnNoYWRlclR5cGUgIT0gR0xfVkVSVEVYX1NIQURFUikgeyAgXAorICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXJUeXBlKCkgIT0gR0xfVkVSVEVYX1NIQURFUikgeyAgXAogICAgICAgICBjb250ZXh0
LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiB2ZXJ0ZXggc2hhZGVycyBvbmx5ICIsIFMpOyAgXAog
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7ICBcCiAgICAgfSAgXAogfQogCiAjZGVmaW5lIEZS
QUdfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgIT0gR0xfRlJB
R01FTlRfU0hBREVSKSB7ICBcCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSAhPSBH
TF9GUkFHTUVOVF9TSEFERVIpIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBw
b3J0ZWQgaW4gZnJhZ21lbnQgc2hhZGVycyBvbmx5ICIsIFMpOyAgXAogICAgICAgICBjb250ZXh0
LT5yZWNvdmVyKCk7ICBcCiAgICAgfSAgXAogfQogCiAjZGVmaW5lIEVTMl9PTkxZKFMsIEwpIHsg
IFwKLSAgICBpZiAoY29udGV4dC0+c2hhZGVyVmVyc2lvbiAhPSAxMDApIHsgIFwKKyAgICBpZiAo
Y29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpICE9IDEwMCkgeyAgXAogICAgICAgICBjb250ZXh0
LT5lcnJvcihMLCAiIHN1cHBvcnRlZCBpbiBHTFNMIEVTIDEuMDAgb25seSAiLCBTKTsgIFwKICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOyAgXAogICAgIH0gIFwKIH0KIAogI2RlZmluZSBFUzNf
T05MWShUT0tFTiwgTElORSwgUkVBU09OKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclZl
cnNpb24gIT0gMzAwKSB7ICBcCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAh
PSAzMDApIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTElORSwgUkVBU09OICIgc3VwcG9y
dGVkIGluIEdMU0wgRVMgMy4wMCBvbmx5ICIsIFRPS0VOKTsgIFwKICAgICAgICAgY29udGV4dC0+
cmVjb3ZlcigpOyAgXAogICAgIH0gIFwKQEAgLTE3NywxMCArMTc4LDEwIEBACiAKICV0eXBlIDxp
bnRlcm0uaW50ZXJtTm9kZT4gdHJhbnNsYXRpb25fdW5pdCBmdW5jdGlvbl9kZWZpbml0aW9uCiAl
dHlwZSA8aW50ZXJtLmludGVybU5vZGU+IHN0YXRlbWVudCBzaW1wbGVfc3RhdGVtZW50Ci0ldHlw
ZSA8aW50ZXJtLmludGVybUFnZ3JlZ2F0ZT4gIHN0YXRlbWVudF9saXN0IGNvbXBvdW5kX3N0YXRl
bWVudAorJXR5cGUgPGludGVybS5pbnRlcm1BZ2dyZWdhdGU+ICBzdGF0ZW1lbnRfbGlzdCBjb21w
b3VuZF9zdGF0ZW1lbnQgY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZQogJXR5cGUgPGlu
dGVybS5pbnRlcm1Ob2RlPiBkZWNsYXJhdGlvbl9zdGF0ZW1lbnQgc2VsZWN0aW9uX3N0YXRlbWVu
dCBleHByZXNzaW9uX3N0YXRlbWVudAogJXR5cGUgPGludGVybS5pbnRlcm1Ob2RlPiBkZWNsYXJh
dGlvbiBleHRlcm5hbF9kZWNsYXJhdGlvbgotJXR5cGUgPGludGVybS5pbnRlcm1Ob2RlPiBmb3Jf
aW5pdF9zdGF0ZW1lbnQgY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZQorJXR5cGUgPGlu
dGVybS5pbnRlcm1Ob2RlPiBmb3JfaW5pdF9zdGF0ZW1lbnQKICV0eXBlIDxpbnRlcm0ubm9kZVBh
aXI+IHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0ZW1lbnQKICV0eXBlIDxp
bnRlcm0uaW50ZXJtU3dpdGNoPiBzd2l0Y2hfc3RhdGVtZW50CiAldHlwZSA8aW50ZXJtLmludGVy
bUNhc2U+IGNhc2VfbGFiZWwKQEAgLTIxNCwyMiArMjE1LDggQEAKIHZhcmlhYmxlX2lkZW50aWZp
ZXIKICAgICA6IElERU5USUZJRVIgewogICAgICAgICAvLyBUaGUgc3ltYm9sIHRhYmxlIHNlYXJj
aCB3YXMgZG9uZSBpbiB0aGUgbGV4aWNhbCBwaGFzZQotICAgICAgICBjb25zdCBUVmFyaWFibGUg
KnZhcmlhYmxlID0gY29udGV4dC0+Z2V0TmFtZWRWYXJpYWJsZShAMSwgJDEuc3RyaW5nLCAkMS5z
eW1ib2wpOworICAgICAgICAkJCA9IGNvbnRleHQtPnBhcnNlVmFyaWFibGVJZGVudGlmaWVyKEAx
LCAkMS5zdHJpbmcsICQxLnN5bWJvbCk7CiAKLSAgICAgICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBl
KCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRD
b25zdGFudFVuaW9uKiBjb25zdEFycmF5ID0gdmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpOwot
ICAgICAgICAgICAgVFR5cGUgdCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICQk
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwgdCwg
QDEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgJCQg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlh
YmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAMSk7Ci0gICAgICAgIH0KLQogICAgICAgICAvLyBkb24n
dCBkZWxldGUgJDEuc3RyaW5nLCBpdCdzIHVzZWQgYnkgZXJyb3IgcmVjb3ZlcnksIGFuZCB0aGUg
cG9vbAogICAgICAgICAvLyBwb3Agd2lsbCByZWNsYWltIHRoZSBtZW1vcnkKICAgICB9CkBAIC0z
MzgsMTQgKzMyNSwxNCBAQAogCiBmdW5jdGlvbl9jYWxsX2hlYWRlcl93aXRoX3BhcmFtZXRlcnMK
ICAgICA6IGZ1bmN0aW9uX2NhbGxfaGVhZGVyIGFzc2lnbm1lbnRfZXhwcmVzc2lvbiB7Ci0gICAg
ICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgkMi0+Z2V0VHlwZSgpKSB9Owot
ICAgICAgICAkMS0+YWRkUGFyYW1ldGVyKHBhcmFtKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnR5
cGUgPSBuZXcgVFR5cGUoJDItPmdldFR5cGUoKSk7CisgICAgICAgICQxLT5hZGRQYXJhbWV0ZXIo
VENvbnN0UGFyYW1ldGVyKHR5cGUpKTsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMTsKLSAgICAg
ICAgJCQubm9kZVBhaXIubm9kZTEgPSAkMjsKKyAgICAgICAgJCQubm9kZVBhaXIubm9kZTEgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUubWFrZUFnZ3JlZ2F0ZSgkMiwgQDIpOwogICAgIH0KICAgICB8
IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBDT01NQSBhc3NpZ25tZW50X2V4
cHJlc3Npb24gewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAwLCBuZXcgVFR5cGUoJDMt
PmdldFR5cGUoKSkgfTsKLSAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihwYXJhbSk7
CisgICAgICAgIGNvbnN0IFRUeXBlICp0eXBlID0gbmV3IFRUeXBlKCQzLT5nZXRUeXBlKCkpOwor
ICAgICAgICAkMS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKFRDb25zdFBhcmFtZXRlcih0eXBlKSk7
CiAgICAgICAgICQkLmZ1bmN0aW9uID0gJDEuZnVuY3Rpb247CiAgICAgICAgICQkLm5vZGVQYWly
Lm5vZGUxID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9k
ZSwgJDMsIEAyKTsKICAgICB9CkBAIC0zNjksMTQgKzM1NiwxNCBAQAogICAgIHwgSURFTlRJRklF
UiB7CiAgICAgICAgIGlmIChjb250ZXh0LT5yZXNlcnZlZEVycm9yQ2hlY2soQDEsICokMS5zdHJp
bmcpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBl
KEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CisgICAgICAgIGNvbnN0IFRUeXBlICp0eXBlID0gVENh
Y2hlOjpnZXRUeXBlKEVidFZvaWQsIEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAq
ZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQxLnN0cmluZywgdHlwZSk7CiAgICAgICAgICQkID0g
ZnVuY3Rpb247CiAgICAgfQogICAgIHwgRklFTERfU0VMRUNUSU9OIHsKICAgICAgICAgaWYgKGNv
bnRleHQtPnJlc2VydmVkRXJyb3JDaGVjayhAMSwgKiQxLnN0cmluZykpCiAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIFRUeXBlIHR5cGUoRWJ0Vm9pZCwgRWJwVW5kZWZp
bmVkKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9p
ZCwgRWJwVW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVu
Y3Rpb24oJDEuc3RyaW5nLCB0eXBlKTsKICAgICAgICAgJCQgPSBmdW5jdGlvbjsKICAgICB9CkBA
IC01NzIsMTIgKzU1OSw3IEBACiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgZXhwcmVz
c2lvbiBDT01NQSBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICAkJCA9IGNvbnRleHQt
PmludGVybWVkaWF0ZS5hZGRDb21tYSgkMSwgJDMsIEAyKTsKLSAgICAgICAgaWYgKCQkID09IDAp
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmFyeU9wRXJyb3IoQDIsICIsIiwgJDEtPmdldENv
bXBsZXRlU3RyaW5nKCksICQzLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICQkID0gJDM7Ci0gICAgICAgIH0KKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRDb21tYSgkMSwgJDMsIEAyKTsKICAgICB9CiAgICAgOwogCkBA
IC01OTgsMzMgKzU4MCw4IEBACiAgICAgOwogCiBkZWNsYXJhdGlvbgotICAgIDogZnVuY3Rpb25f
cHJvdG90eXBlIFNFTUlDT0xPTiAgIHsKLSAgICAgICAgVEZ1bmN0aW9uICZmdW5jdGlvbiA9ICoo
JDEuZnVuY3Rpb24pOwotICAgICAgICAKLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqcHJvdG90
eXBlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgIHByb3RvdHlwZS0+c2V0VHlwZShm
dW5jdGlvbi5nZXRSZXR1cm5UeXBlKCkpOwotICAgICAgICBwcm90b3R5cGUtPnNldE5hbWUoZnVu
Y3Rpb24uZ2V0TWFuZ2xlZE5hbWUoKSk7Ci0gICAgICAgIHByb3RvdHlwZS0+c2V0RnVuY3Rpb25J
ZChmdW5jdGlvbi5nZXRVbmlxdWVJZCgpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpOyBpKyspCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IFRQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7
Ci0gICAgICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIFRWYXJpYWJsZSB2YXJpYWJsZShwYXJhbS5uYW1lLCAqcGFyYW0udHlwZSk7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKHZhcmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLmdldE5hbWUoKSwgdmFy
aWFibGUuZ2V0VHlwZSgpLCBAMSksIEAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwcm90b3R5cGUgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBAMSksIEAxKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcHJvdG90eXBlLT5zZXRPcChFT3BQcm90b3R5
cGUpOwotICAgICAgICAkJCA9IHByb3RvdHlwZTsKLQotICAgICAgICBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wb3AoKTsKKyAgICA6IGZ1bmN0aW9uX3Byb3RvdHlwZSBTRU1JQ09MT04geworICAgICAg
ICAkJCA9IGNvbnRleHQtPmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oKigkMS5mdW5j
dGlvbiksIEAxKTsKICAgICB9CiAgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBTRU1JQ09MT04g
ewogICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dOb2RlID0gJDEuaW50ZXJtQWdncmVnYXRl
OwpAQCAtNjMzLDcgKzU5MCw3IEBACiAgICAgICAgICQkID0gYWdnTm9kZTsKICAgICB9CiAgICAg
fCBQUkVDSVNJT04gcHJlY2lzaW9uX3F1YWxpZmllciB0eXBlX3NwZWNpZmllcl9ub19wcmVjIFNF
TUlDT0xPTiB7Ci0gICAgICAgIGlmICgoJDIgPT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRl
clR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKSAmJiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNp
b25IaWdoKSB7CisgICAgICAgIGlmICgoJDIgPT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPmdldFNo
YWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpICYmICFjb250ZXh0LT5nZXRGcmFnbWVu
dFByZWNpc2lvbkhpZ2goKSkgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJwcmVj
aXNpb24gaXMgbm90IHN1cHBvcnRlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCAiaGlnaHAiKTsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQpAQCAtNjYzLDU3ICs2MjAs
NyBAQAogCiBmdW5jdGlvbl9wcm90b3R5cGUKICAgICA6IGZ1bmN0aW9uX2RlY2xhcmF0b3IgUklH
SFRfUEFSRU4gIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gTXVsdGlwbGUgZGVjbGFyYXRpb25z
IG9mIHRoZSBzYW1lIGZ1bmN0aW9uIGFyZSBhbGxvd2VkLgotICAgICAgICAvLwotICAgICAgICAv
LyBJZiB0aGlzIGlzIGEgZGVmaW5pdGlvbiwgdGhlIGRlZmluaXRpb24gcHJvZHVjdGlvbiBjb2Rl
IHdpbGwgY2hlY2sgZm9yIHJlZGVmaW5pdGlvbnMKLSAgICAgICAgLy8gKHdlIGRvbid0IGtub3cg
YXQgdGhpcyBwb2ludCBpZiBpdCdzIGEgZGVmaW5pdGlvbiBvciBub3QpLgotICAgICAgICAvLwot
ICAgICAgICAvLyBSZWRlY2xhcmF0aW9ucyBhcmUgYWxsb3dlZC4gIEJ1dCwgcmV0dXJuIHR5cGVz
IGFuZCBwYXJhbWV0ZXIgcXVhbGlmaWVycyBtdXN0IG1hdGNoLgotICAgICAgICAvLwotICAgICAg
ICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0LT5z
eW1ib2xUYWJsZS5maW5kKCQxLT5nZXRNYW5nbGVkTmFtZSgpLCBjb250ZXh0LT5zaGFkZXJWZXJz
aW9uKSk7Ci0gICAgICAgIGlmIChwcmV2RGVjKSB7Ci0gICAgICAgICAgICBpZiAocHJldkRlYy0+
Z2V0UmV0dXJuVHlwZSgpICE9ICQxLT5nZXRSZXR1cm5UeXBlKCkpIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5lcnJvcihAMiwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUg
c2FtZSByZXR1cm4gdHlwZSIsICQxLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcmV2RGVjLT5nZXRQYXJhbUNvdW50KCk7
ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChwcmV2RGVjLT5nZXRQYXJhbShpKS50eXBlLT5n
ZXRRdWFsaWZpZXIoKSAhPSAkMS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJvdmVybG9hZGVkIGZ1bmN0
aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyIHF1YWxpZmllcnMiLCAkMS0+Z2V0UGFy
YW0oaSkudHlwZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gQ2hlY2sgZm9yIHByZXZpb3VzbHkgZGVj
bGFyZWQgdmFyaWFibGVzIHVzaW5nIHRoZSBzYW1lIG5hbWUuCi0gICAgICAgIC8vCi0gICAgICAg
IFRTeW1ib2wgKnByZXZTeW0gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKCQxLT5nZXROYW1l
KCksIGNvbnRleHQtPnNoYWRlclZlcnNpb24pOwotICAgICAgICBpZiAocHJldlN5bSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFwcmV2U3ltLT5pc0Z1bmN0aW9uKCkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJyZWRlZmluaXRpb24iLCAk
MS0+Z2V0TmFtZSgpLmNfc3RyKCksICJmdW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIEluc2VydCB0aGUgdW5tYW5nbGVkIG5hbWUgdG8gZGV0
ZWN0IHBvdGVudGlhbCBmdXR1cmUgcmVkZWZpbml0aW9uIGFzIGEgdmFyaWFibGUuCi0gICAgICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbihOZXdQb29sVFN0cmluZygk
MS0+Z2V0TmFtZSgpLmNfc3RyKCkpLCAkMS0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICAgICAgICAg
IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0VW5tYW5nbGVkKGZ1
bmN0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIElmIHRoaXMgaXMg
YSByZWRlY2xhcmF0aW9uLCBpdCBjb3VsZCBhbHNvIGJlIGEgZGVmaW5pdGlvbiwKLSAgICAgICAg
Ly8gaW4gd2hpY2ggY2FzZSwgd2Ugd2FudCB0byB1c2UgdGhlIHZhcmlhYmxlIG5hbWVzIGZyb20g
dGhpcyBvbmUsIGFuZCBub3QgdGhlIG9uZSB0aGF0J3MKLSAgICAgICAgLy8gYmVpbmcgcmVkZWNs
YXJlZC4gIFNvLCBwYXNzIGJhY2sgdXAgdGhpcyBkZWNsYXJhdGlvbiwgbm90IHRoZSBvbmUgaW4g
dGhlIHN5bWJvbCB0YWJsZS4KLSAgICAgICAgLy8KLSAgICAgICAgJCQuZnVuY3Rpb24gPSAkMTsK
LQotICAgICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0
aW9uJ3MgYXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KLSAgICAgICAgLy8gQWRkIHRoZSBm
dW5jdGlvbiBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCi0gICAg
ICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0KCQkLmZ1bmN0
aW9uKTsKKyAgICAgICAgJCQuZnVuY3Rpb24gPSBjb250ZXh0LT5wYXJzZUZ1bmN0aW9uRGVjbGFy
YXRvcihAMiwgJDEpOwogICAgIH0KICAgICA7CiAKQEAgLTczMiw3ICs2MzksNyBAQAogICAgICAg
ICAvLyBBZGQgdGhlIHBhcmFtZXRlcgogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJDIu
cGFyYW0udHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCkKLSAgICAgICAgICAgICQxLT5h
ZGRQYXJhbWV0ZXIoJDIucGFyYW0pOworICAgICAgICAgICAgJDEtPmFkZFBhcmFtZXRlcigkMi5w
YXJhbS50dXJuVG9Db25zdCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGVsZXRlICQy
LnBhcmFtLnR5cGU7CiAgICAgfQpAQCAtNzUxLDI0ICs2NTgsMzAgQEAKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgcGFyYW1ldGVyCiAgICAgICAgICAgICAkJCA9ICQx
OwotICAgICAgICAgICAgJDEtPmFkZFBhcmFtZXRlcigkMy5wYXJhbSk7CisgICAgICAgICAgICAk
MS0+YWRkUGFyYW1ldGVyKCQzLnBhcmFtLnR1cm5Ub0NvbnN0KCkpOwogICAgICAgICB9CiAgICAg
fQogICAgIDsKIAogZnVuY3Rpb25faGVhZGVyCiAgICAgOiBmdWxseV9zcGVjaWZpZWRfdHlwZSBJ
REVOVElGSUVSIExFRlRfUEFSRU4gewotICAgICAgICBpZiAoJDEucXVhbGlmaWVyICE9IEV2cUds
b2JhbCAmJiAkMS5xdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5KSB7CisgICAgICAgIGlmICgkMS5x
dWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICQxLnF1YWxpZmllciAhPSBFdnFUZW1wb3JhcnkpCisg
ICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAyLCAibm8gcXVhbGlmaWVycyBh
bGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlm
aWVyKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KKyAgICAg
ICAgaWYgKCEkMS5sYXlvdXRRdWFsaWZpZXIuaXNFbXB0eSgpKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250ZXh0LT5lcnJvcihAMiwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rp
b24gcmV0dXJuIiwgImxheW91dCIpOworICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwor
ICAgICAgICB9CiAgICAgICAgIC8vIG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVk
IGFzIHdlbGwuLi4KICAgICAgICAgaWYgKGNvbnRleHQtPnNhbXBsZXJFcnJvckNoZWNrKEAyLCAk
MSwgInNhbXBsZXJzIGNhbid0IGJlIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMiKSkKICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIGFz
IGEgcHJvdG90eXBlIGFmdGVyIHBhcnNpbmcgaXQgKHdlIGRvIG5vdCBzdXBwb3J0IHJlY3Vyc2lv
bikKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbjsKLSAgICAgICAgVFR5cGUgdHlwZSgkMSk7
CisgICAgICAgIGNvbnN0IFRUeXBlICp0eXBlID0gbmV3IFRUeXBlKCQxKTsKICAgICAgICAgZnVu
Y3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQyLnN0cmluZywgdHlwZSk7CiAgICAgICAgICQkID0gZnVu
Y3Rpb247CiAgICAgICAgIApAQCAtOTM0LDEzICs4NDcsMTMgQEAKIAogICAgICAgICBpZiAoJDEu
YXJyYXkpIHsKICAgICAgICAgICAgIEVTM19PTkxZKCJbXSIsIEAxLCAiZmlyc3QtY2xhc3MtYXJy
YXkiKTsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJWZXJzaW9uICE9IDMwMCkgewor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMDApIHsKICAg
ICAgICAgICAgICAgICAkMS5jbGVhckFycmF5bmVzcygpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogICAgIHwgdHlwZV9xdWFsaWZpZXIgdHlwZV9zcGVjaWZpZXIgIHsKLSAgICAg
ICAgJCQgPSBjb250ZXh0LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoJDEucXVhbGlmaWVyLCAkMS5s
YXlvdXRRdWFsaWZpZXIsICQyKTsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdWxseVNwZWNp
ZmllZFR5cGUoJDEucXVhbGlmaWVyLCAkMS5pbnZhcmlhbnQsICQxLmxheW91dFF1YWxpZmllciwg
JDIpOwogICAgIH0KICAgICA7CiAKQEAgLTk3MSw3ICs4ODQsNyBAQAogICAgICAgICBFUzJfT05M
WSgidmFyeWluZyIsIEAxKTsKICAgICAgICAgaWYgKGNvbnRleHQtPmdsb2JhbEVycm9yQ2hlY2so
QDEsIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInZhcnlpbmciKSkKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRl
clR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRl
clR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQogICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0
Vm9pZCwgRXZxVmFyeWluZ091dCwgQDEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAkJC5z
ZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sIEAxKTsKQEAgLTk4MCwxOCArODkzLDE5IEBA
CiAgICAgICAgIEVTMl9PTkxZKCJ2YXJ5aW5nIiwgQDEpOwogICAgICAgICBpZiAoY29udGV4dC0+
Z2xvYmFsRXJyb3JDaGVjayhAMSwgY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
LCAiaW52YXJpYW50IHZhcnlpbmciKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsK
LSAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAg
ICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2cUludmFyaWFudFZhcnlpbmdPdXQsIEAx
KTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hB
REVSKQorICAgICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgQDEp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAkJC5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZh
cmlhbnRWYXJ5aW5nSW4sIEAxKTsKKyAgICAgICAgICAgICQkLnNldEJhc2ljKEVidFZvaWQsIEV2
cVZhcnlpbmdJbiwgQDEpOworICAgICAgICAkJC5pbnZhcmlhbnQgPSB0cnVlOwogICAgIH0KICAg
ICB8IHN0b3JhZ2VfcXVhbGlmaWVyIHsKLSAgICAgICAgaWYgKCQxLnF1YWxpZmllciAhPSBFdnFD
b25zdCAmJiAhY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKSB7CisgICAgICAg
IGlmICgkMS5xdWFsaWZpZXIgIT0gRXZxQ29uc3QgJiYgIWNvbnRleHQtPnN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSkKKyAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEs
ICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRoZSBjb25zdCBzdG9yYWdlIHF1YWxpZmll
ci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkJC5zZXRCYXNp
YyhFYnRWb2lkLCAkMS5xdWFsaWZpZXIsIEAxKTsKICAgICAgICAgfQorICAgICAgICAkJC5zZXRC
YXNpYyhFYnRWb2lkLCAkMS5xdWFsaWZpZXIsIEAxKTsKICAgICB9CiAgICAgfCBpbnRlcnBvbGF0
aW9uX3F1YWxpZmllciBzdG9yYWdlX3F1YWxpZmllciB7CiAgICAgICAgICQkID0gY29udGV4dC0+
am9pbkludGVycG9sYXRpb25RdWFsaWZpZXJzKEAxLCAkMS5xdWFsaWZpZXIsIEAyLCAkMi5xdWFs
aWZpZXIpOwpAQCAtMTAxMSw2ICs5MjUsMTYgQEAKICAgICAgICAgJCQuc2V0QmFzaWMoRWJ0Vm9p
ZCwgJDIucXVhbGlmaWVyLCBAMik7CiAgICAgICAgICQkLmxheW91dFF1YWxpZmllciA9ICQxOwog
ICAgIH0KKyAgICB8IElOVkFSSUFOVCBzdG9yYWdlX3F1YWxpZmllciB7CisgICAgICAgIGNvbnRl
eHQtPmVzM0ludmFyaWFudEVycm9yQ2hlY2soJDIucXVhbGlmaWVyLCBAMSk7CisgICAgICAgICQk
LnNldEJhc2ljKEVidFZvaWQsICQyLnF1YWxpZmllciwgQDIpOworICAgICAgICAkJC5pbnZhcmlh
bnQgPSB0cnVlOworICAgIH0KKyAgICB8IElOVkFSSUFOVCBpbnRlcnBvbGF0aW9uX3F1YWxpZmll
ciBzdG9yYWdlX3F1YWxpZmllciB7CisgICAgICAgIGNvbnRleHQtPmVzM0ludmFyaWFudEVycm9y
Q2hlY2soJDMucXVhbGlmaWVyLCBAMSk7CisgICAgICAgICQkID0gY29udGV4dC0+am9pbkludGVy
cG9sYXRpb25RdWFsaWZpZXJzKEAyLCAkMi5xdWFsaWZpZXIsIEAzLCAkMy5xdWFsaWZpZXIpOwor
ICAgICAgICAkJC5pbnZhcmlhbnQgPSB0cnVlOworICAgIH0KICAgICA7CiAKIHN0b3JhZ2VfcXVh
bGlmaWVyCkBAIC0xMDE5LDI5ICs5NDMsMjkgQEAKICAgICB9CiAgICAgfCBJTl9RVUFMIHsKICAg
ICAgICAgRVMzX09OTFkoImluIiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAk
JC5xdWFsaWZpZXIgPSAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIp
ID8gRXZxRnJhZ21lbnRJbiA6IEV2cVZlcnRleEluOworICAgICAgICAkJC5xdWFsaWZpZXIgPSAo
Y29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikgPyBFdnFGcmFn
bWVudEluIDogRXZxVmVydGV4SW47CiAgICAgfQogICAgIHwgT1VUX1FVQUwgewogICAgICAgICBF
UzNfT05MWSgib3V0IiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAkJC5xdWFs
aWZpZXIgPSAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8gRXZx
RnJhZ21lbnRPdXQgOiBFdnFWZXJ0ZXhPdXQ7CisgICAgICAgICQkLnF1YWxpZmllciA9IChjb250
ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50
T3V0IDogRXZxVmVydGV4T3V0OwogICAgIH0KICAgICB8IENFTlRST0lEIElOX1FVQUwgewogICAg
ICAgICBFUzNfT05MWSgiY2VudHJvaWQgaW4iLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKICAg
ICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJpbnZhbGlkIHN0b3JhZ2Ug
cXVhbGlmaWVyIiwgIml0IGlzIGFuIGVycm9yIHRvIHVzZSAnY2VudHJvaWQgaW4nIGluIHRoZSB2
ZXJ0ZXggc2hhZGVyIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAg
IH0KLSAgICAgICAgJCQucXVhbGlmaWVyID0gKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gR0xfRlJB
R01FTlRfU0hBREVSKSA/IEV2cUNlbnRyb2lkSW4gOiBFdnFWZXJ0ZXhJbjsKKyAgICAgICAgJCQu
cXVhbGlmaWVyID0gKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFE
RVIpID8gRXZxQ2VudHJvaWRJbiA6IEV2cVZlcnRleEluOwogICAgIH0KICAgICB8IENFTlRST0lE
IE9VVF9RVUFMIHsKICAgICAgICAgRVMzX09OTFkoImNlbnRyb2lkIG91dCIsIEAxLCAic3RvcmFn
ZSBxdWFsaWZpZXIiKTsKLSAgICAgICAgaWYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gR0xfRlJB
R01FTlRfU0hBREVSKQorICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdM
X0ZSQUdNRU5UX1NIQURFUikKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
QDEsICJpbnZhbGlkIHN0b3JhZ2UgcXVhbGlmaWVyIiwgIml0IGlzIGFuIGVycm9yIHRvIHVzZSAn
Y2VudHJvaWQgb3V0JyBpbiB0aGUgZnJhZ21lbnQgc2hhZGVyIik7CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgJCQucXVhbGlmaWVyID0gKGNvbnRl
eHQtPnNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDog
RXZxQ2VudHJvaWRPdXQ7CisgICAgICAgICQkLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFk
ZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxQ2Vu
dHJvaWRPdXQ7CiAgICAgfQogICAgIHwgVU5JRk9STSB7CiAgICAgICAgIGlmIChjb250ZXh0LT5n
bG9iYWxFcnJvckNoZWNrKEAxLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCks
ICJ1bmlmb3JtIikpCkBAIC0xNTE5LDkgKzE0NDMsOSBAQAogICAgIDsKIAogc3dpdGNoX3N0YXRl
bWVudAotICAgIDogU1dJVENIIExFRlRfUEFSRU4gZXhwcmVzc2lvbiBSSUdIVF9QQVJFTiB7ICsr
Y29udGV4dC0+bVN3aXRjaE5lc3RpbmdMZXZlbDsgfSBjb21wb3VuZF9zdGF0ZW1lbnQgeworICAg
IDogU1dJVENIIExFRlRfUEFSRU4gZXhwcmVzc2lvbiBSSUdIVF9QQVJFTiB7IGNvbnRleHQtPmlu
Y3JTd2l0Y2hOZXN0aW5nTGV2ZWwoKTsgfSBjb21wb3VuZF9zdGF0ZW1lbnQgewogICAgICAgICAk
JCA9IGNvbnRleHQtPmFkZFN3aXRjaCgkMywgJDYsIEAxKTsKLSAgICAgICAgLS1jb250ZXh0LT5t
U3dpdGNoTmVzdGluZ0xldmVsOworICAgICAgICBjb250ZXh0LT5kZWNyU3dpdGNoTmVzdGluZ0xl
dmVsKCk7CiAgICAgfQogICAgIDsKIApAQCAtMTU1NiwyMiArMTQ4MCwyMiBAQAogICAgIDsKIAog
aXRlcmF0aW9uX3N0YXRlbWVudAotICAgIDogV0hJTEUgTEVGVF9QQVJFTiB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgKytjb250ZXh0LT5tTG9vcE5lc3RpbmdMZXZlbDsgfSBjb25kaXRp
b24gUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CisgICAgOiBXSElMRSBMRUZU
X1BBUkVOIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyBjb250ZXh0LT5pbmNyTG9vcE5l
c3RpbmdMZXZlbCgpOyB9IGNvbmRpdGlvbiBSSUdIVF9QQVJFTiBzdGF0ZW1lbnRfbm9fbmV3X3Nj
b3BlIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgICAgICQkID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BXaGlsZSwgMCwgJDQsIDAsICQ2LCBA
MSk7Ci0gICAgICAgIC0tY29udGV4dC0+bUxvb3BOZXN0aW5nTGV2ZWw7CisgICAgICAgIGNvbnRl
eHQtPmRlY3JMb29wTmVzdGluZ0xldmVsKCk7CiAgICAgfQotICAgIHwgRE8geyArK2NvbnRleHQt
Pm1Mb29wTmVzdGluZ0xldmVsOyB9IHN0YXRlbWVudF93aXRoX3Njb3BlIFdISUxFIExFRlRfUEFS
RU4gZXhwcmVzc2lvbiBSSUdIVF9QQVJFTiBTRU1JQ09MT04geworICAgIHwgRE8geyBjb250ZXh0
LT5pbmNyTG9vcE5lc3RpbmdMZXZlbCgpOyB9IHN0YXRlbWVudF93aXRoX3Njb3BlIFdISUxFIExF
RlRfUEFSRU4gZXhwcmVzc2lvbiBSSUdIVF9QQVJFTiBTRU1JQ09MT04gewogICAgICAgICBpZiAo
Y29udGV4dC0+Ym9vbEVycm9yQ2hlY2soQDgsICQ2KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y292ZXIoKTsKIAogICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRMb29wKEVM
b29wRG9XaGlsZSwgMCwgJDYsIDAsICQzLCBANCk7Ci0gICAgICAgIC0tY29udGV4dC0+bUxvb3BO
ZXN0aW5nTGV2ZWw7CisgICAgICAgIGNvbnRleHQtPmRlY3JMb29wTmVzdGluZ0xldmVsKCk7CiAg
ICAgfQotICAgIHwgRk9SIExFRlRfUEFSRU4geyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7
ICsrY29udGV4dC0+bUxvb3BOZXN0aW5nTGV2ZWw7IH0gZm9yX2luaXRfc3RhdGVtZW50IGZvcl9y
ZXN0X3N0YXRlbWVudCBSSUdIVF9QQVJFTiBzdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIHsKKyAgICB8
IEZPUiBMRUZUX1BBUkVOIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyBjb250ZXh0LT5p
bmNyTG9vcE5lc3RpbmdMZXZlbCgpOyB9IGZvcl9pbml0X3N0YXRlbWVudCBmb3JfcmVzdF9zdGF0
ZW1lbnQgUklHSFRfUEFSRU4gc3RhdGVtZW50X25vX25ld19zY29wZSB7CiAgICAgICAgIGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOwogICAgICAgICAkJCA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRMb29wKEVMb29wRm9yLCAkNCwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigk
NS5ub2RlMSksIHJlaW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oJDUubm9kZTIpLCAkNywg
QDEpOwotICAgICAgICAtLWNvbnRleHQtPm1Mb29wTmVzdGluZ0xldmVsOworICAgICAgICBjb250
ZXh0LT5kZWNyTG9vcE5lc3RpbmdMZXZlbCgpOwogICAgIH0KICAgICA7CiAKQEAgLTE2MjgsMTEg
KzE1NTIsMTEgQEAKIHRyYW5zbGF0aW9uX3VuaXQKICAgICA6IGV4dGVybmFsX2RlY2xhcmF0aW9u
IHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAkJDsKKyAg
ICAgICAgY29udGV4dC0+c2V0VHJlZVJvb3QoJCQpOwogICAgIH0KICAgICB8IHRyYW5zbGF0aW9u
X3VuaXQgZXh0ZXJuYWxfZGVjbGFyYXRpb24gewogICAgICAgICAkJCA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKCQxLCAkMiwgQCQpOwotICAgICAgICBjb250ZXh0LT50cmVl
Um9vdCA9ICQkOworICAgICAgICBjb250ZXh0LT5zZXRUcmVlUm9vdCgkJCk7CiAgICAgfQogICAg
IDsKIApAQCAtMTY0NywxMjEgKzE1NzEsMTUgQEAKIAogZnVuY3Rpb25fZGVmaW5pdGlvbgogICAg
IDogZnVuY3Rpb25fcHJvdG90eXBlIHsKLSAgICAgICAgVEZ1bmN0aW9uKiBmdW5jdGlvbiA9ICQx
LmZ1bmN0aW9uOwotICAgICAgICAKLSAgICAgICAgY29uc3QgVFN5bWJvbCAqYnVpbHRJbiA9IGNv
bnRleHQtPnN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKGZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgp
LCBjb250ZXh0LT5zaGFkZXJWZXJzaW9uKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChidWlsdElu
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImJ1aWx0LWluIGZ1
bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWZpbmVkIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigp
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgVEZ1bmN0aW9uKiBwcmV2RGVjID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uKj4oY29u
dGV4dC0+c3ltYm9sVGFibGUuZmluZChmdW5jdGlvbi0+Z2V0TWFuZ2xlZE5hbWUoKSwgY29udGV4
dC0+c2hhZGVyVmVyc2lvbikpOwotICAgICAgICAvLwotICAgICAgICAvLyBOb3RlOiAgJ3ByZXZE
ZWMnIGNvdWxkIGJlICdmdW5jdGlvbicgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBz
ZWVuIGZ1bmN0aW9uCi0gICAgICAgIC8vIGFzIGl0IHdvdWxkIGhhdmUganVzdCBiZWVuIHB1dCBp
biB0aGUgc3ltYm9sIHRhYmxlLiAgT3RoZXJ3aXNlLCB3ZSdyZSBsb29raW5nIHVwCi0gICAgICAg
IC8vIGFuIGVhcmxpZXIgb2NjdXJhbmNlLgotICAgICAgICAvLwotICAgICAgICBpZiAocHJldkRl
Yy0+aXNEZWZpbmVkKCkpIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBUaGVuIHRo
aXMgZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5LgotICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKEAxLCAiZnVuY3Rpb24gYWxyZWFkeSBoYXMgYSBib2R5IiwgZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgfQotICAgICAgICBwcmV2RGVjLT5zZXREZWZpbmVkKCk7Ci0gICAgICAgIC8v
Ci0gICAgICAgIC8vIE92ZXJsb2FkIHRoZSB1bmlxdWUgSUQgb2YgdGhlIGRlZmluaXRpb24gdG8g
YmUgdGhlIHNhbWUgdW5pcXVlIElEIGFzIHRoZSBkZWNsYXJhdGlvbi4KLSAgICAgICAgLy8gRXZl
bnR1YWxseSB3ZSB3aWxsIHByb2JhYmx5IHdhbnQgdG8gaGF2ZSBvbmx5IGEgc2luZ2xlIGRlZmlu
aXRpb24gYW5kIGp1c3Qgc3dhcCB0aGUKLSAgICAgICAgLy8gYXJndW1lbnRzIHRvIGJlIHRoZSBk
ZWZpbml0aW9uJ3MgYXJndW1lbnRzLgotICAgICAgICAvLwotICAgICAgICBmdW5jdGlvbi0+c2V0
VW5pcXVlSWQocHJldkRlYy0+Z2V0VW5pcXVlSWQoKSk7Ci0KLSAgICAgICAgLy8KLSAgICAgICAg
Ly8gUmFpc2UgZXJyb3IgbWVzc2FnZSBpZiBtYWluIGZ1bmN0aW9uIHRha2VzIGFueSBwYXJhbWV0
ZXJzIG9yIHJldHVybiBhbnl0aGluZyBvdGhlciB0aGFuIHZvaWQKLSAgICAgICAgLy8KLSAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5nZXROYW1lKCkgPT0gIm1haW4iKSB7Ci0gICAgICAgICAgICBpZiAo
ZnVuY3Rpb24tPmdldFBhcmFtQ291bnQoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcihAMSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5j
dGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292
ZXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJu
VHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgIiIsIGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJp
bmcoKSwgIm1haW4gZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHJldHVybiB0eXBlIGZvciBsYXRlciBj
aGVja2luZyBmb3IgUkVUVVJOIHN0YXRlbWVudHMuCi0gICAgICAgIC8vCi0gICAgICAgIGNvbnRl
eHQtPmN1cnJlbnRGdW5jdGlvblR5cGUgPSAmKHByZXZEZWMtPmdldFJldHVyblR5cGUoKSk7Ci0g
ICAgICAgIGNvbnRleHQtPm1GdW5jdGlvblJldHVybnNWYWx1ZSA9IGZhbHNlOwotCi0gICAgICAg
IC8vCi0gICAgICAgIC8vIEluc2VydCBwYXJhbWV0ZXJzIGludG8gdGhlIHN5bWJvbCB0YWJsZS4K
LSAgICAgICAgLy8gSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gbmFtZSwgaXQncyBub3QgYW4gZXJy
b3IsIGp1c3QgZG9uJ3QgaW5zZXJ0IGl0Ci0gICAgICAgIC8vIChjb3VsZCBiZSB1c2VkIGZvciB1
bnVzZWQgYXJncykuCi0gICAgICAgIC8vCi0gICAgICAgIC8vIEFsc28sIGFjY3VtdWxhdGUgdGhl
IGxpc3Qgb2YgcGFyYW1ldGVycyBpbnRvIHRoZSBISUwsIHNvIGxvd2VyIGxldmVsIGNvZGUKLSAg
ICAgICAgLy8ga25vd3Mgd2hlcmUgdG8gZmluZCBwYXJhbWV0ZXJzLgotICAgICAgICAvLwotICAg
ICAgICBUSW50ZXJtQWdncmVnYXRlKiBwYXJhbU5vZGVzID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24tPmdldFBhcmFtQ291bnQo
KTsgaSsrKSB7Ci0gICAgICAgICAgICBjb25zdCBUUGFyYW1ldGVyJiBwYXJhbSA9IGZ1bmN0aW9u
LT5nZXRQYXJhbShpKTsKLSAgICAgICAgICAgIGlmIChwYXJhbS5uYW1lICE9IDApIHsKLSAgICAg
ICAgICAgICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbmV3IFRWYXJpYWJsZShwYXJhbS5uYW1l
LCAqcGFyYW0udHlwZSk7Ci0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAvLyBJ
bnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUuCi0gICAg
ICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICBpZiAoISBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5kZWNsYXJlKHZhcmlhYmxlKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJv
cihAMSwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIHZhcmlhYmxlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIgdG8gdGhlIEhJTAotICAgICAg
ICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXJhbU5vZGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHZhcmlhYmxl
LT5nZXRVbmlxdWVJZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0TmFtZSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLCBAMSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAxKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKHBhcmFtTm9kZXMsIGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIs
ICpwYXJhbS50eXBlLCBAMSksIEAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBjb250ZXh0LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2Rlcywg
RU9wUGFyYW1ldGVycywgQDEpOwotICAgICAgICAkMS5pbnRlcm1BZ2dyZWdhdGUgPSBwYXJhbU5v
ZGVzOwotICAgICAgICBjb250ZXh0LT5tTG9vcE5lc3RpbmdMZXZlbCA9IDA7CisgICAgICAgIGNv
bnRleHQtPnBhcnNlRnVuY3Rpb25Qcm90b3R5cGUoQDEsICQxLmZ1bmN0aW9uLCAmJDEuaW50ZXJt
QWdncmVnYXRlKTsKICAgICB9CiAgICAgY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29wZSB7
Ci0gICAgICAgIC8vPz8gQ2hlY2sgdGhhdCBhbGwgcGF0aHMgcmV0dXJuIGEgdmFsdWUgaWYgcmV0
dXJuIHR5cGUgIT0gdm9pZCA/Ci0gICAgICAgIC8vICAgTWF5IGJlIGJlc3QgZG9uZSBhcyBwb3N0
IHByb2Nlc3MgcGhhc2Ugb24gaW50ZXJtZWRpYXRlIGNvZGUKLSAgICAgICAgaWYgKGNvbnRleHQt
PmN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQgJiYgISBjb250
ZXh0LT5tRnVuY3Rpb25SZXR1cm5zVmFsdWUpIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KEAxLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICQxLmZ1bmN0aW9u
LT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoJDEuaW50ZXJtQWdncmVnYXRlLCAkMywgQCQpOwotICAgICAgICBjb250ZXh0
LT5pbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IoJCQsIEVPcEZ1bmN0aW9uLCBAMSk7
Ci0gICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0aW9uLT5nZXRN
YW5nbGVkTmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAkJC0+Z2V0QXNBZ2dyZWdhdGUoKS0+c2V0
VHlwZSgkMS5mdW5jdGlvbi0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICAgICAgJCQtPmdldEFzQWdn
cmVnYXRlKCktPnNldEZ1bmN0aW9uSWQoJDEuZnVuY3Rpb24tPmdldFVuaXF1ZUlkKCkpOwotCi0g
ICAgICAgIC8vIHN0b3JlIHRoZSBwcmFnbWEgaW5mb3JtYXRpb24gZm9yIGRlYnVnIGFuZCBvcHRp
bWl6ZSBhbmQgb3RoZXIgdmVuZG9yIHNwZWNpZmljCi0gICAgICAgIC8vIGluZm9ybWF0aW9uLiBU
aGlzIGluZm9ybWF0aW9uIGNhbiBiZSBxdWVyaWVkIGZyb20gdGhlIHBhcnNlIHRyZWUKLSAgICAg
ICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldE9wdGltaXplKGNvbnRleHQtPnByYWdtYSgpLm9w
dGltaXplKTsKLSAgICAgICAgJCQtPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVnKGNvbnRleHQt
PnByYWdtYSgpLmRlYnVnKTsKLQotICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsK
KyAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdW5jdGlvbkRlZmluaXRpb24oKigkMS5mdW5jdGlv
biksICQxLmludGVybUFnZ3JlZ2F0ZSwgJDMsIEAxKTsKICAgICB9CiAgICAgOwogCiAlJQogCiBp
bnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7Ci0gICAgcmV0dXJuIHl5
cGFyc2UoY29udGV4dCwgY29udGV4dC0+c2Nhbm5lcik7CisgICAgcmV0dXJuIHl5cGFyc2UoY29u
dGV4dCwgY29udGV4dC0+Z2V0U2Nhbm5lcigpKTsKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNs
YW5nX2xleC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAwLDggKzQwMCw4IEBACiAJKnl5X2NwID0gJ1wwJzsgXAogCXl5Zy0+eXlfY19idWZfcCA9
IHl5X2NwOwogCi0jZGVmaW5lIFlZX05VTV9SVUxFUyAyMzkKLSNkZWZpbmUgWVlfRU5EX09GX0JV
RkZFUiAyNDAKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDI0MAorI2RlZmluZSBZWV9FTkRfT0ZfQlVG
RkVSIDI0MQogLyogVGhpcyBzdHJ1Y3QgaXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAg
YnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNlc3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpA
QCAtNDA5LDk4ICs0MDksOTggQEAKIAlmbGV4X2ludDMyX3QgeXlfdmVyaWZ5OwogCWZsZXhfaW50
MzJfdCB5eV9ueHQ7CiAJfTsKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9hY2NlcHRb
ODE5XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzgyMF0gPQogICAg
IHsgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMjQwLCAgMjM4LCAgMjM3LCAg
MjM3LCAgMjIyLCAgMjI4LAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgMjQxLCAgMjM5
LCAgMjM4LCAgMjM4LCAgMjIyLCAgMjI4LAogICAgICAgMjMzLCAgMjE3LCAgMjE4LCAgMjI2LCAg
MjI1LCAgMjE0LCAgMjIzLCAgMjIxLCAgMjI3LCAgMTgwLAogICAgICAgMTgwLCAgMjE1LCAgMjEx
LCAgMjI5LCAgMjE2LCAgMjMwLCAgMjM0LCAgMTc3LCAgMjE5LCAgMjIwLAogICAgICAgMjMyLCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAogICAg
ICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LAotICAgICAgMTc3LCAgMjEyLCAgMjMxLCAgMjEzLCAgMjI0LCAgMjM2LCAgMjM5LCAgMjM1
LCAgMjA4LCAgMTk0LAotICAgICAgMjEzLCAgMjAyLCAgMTk3LCAgMTkyLCAgMjAwLCAgMTkwLCAg
MjAxLCAgMTkxLCAgMTg2LCAgMTkzLAotICAgICAgMTg1LCAgMTc5LCAgMTgwLCAgICAwLCAgMTgz
LCAgICAwLCAgMjIwLCAgMjEyLCAgMjE5LCAgMjA5LAotICAgICAgMjA1LCAgMjA3LCAgMjA2LCAg
MjEwLCAgMTc3LCAgMTk4LCAgMjA0LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDEyLAorICAgICAg
MTc3LCAgMjEyLCAgMjMxLCAgMjEzLCAgMjI0LCAgMjM3LCAgMjM2LCAgMjQwLCAgMjM1LCAgMjA4
LAorICAgICAgMTk0LCAgMjEzLCAgMjAyLCAgMTk3LCAgMTkyLCAgMjAwLCAgMTkwLCAgMjAxLCAg
MTkxLCAgMTg2LAorICAgICAgMTkzLCAgMTg1LCAgMTc5LCAgMTgwLCAgICAwLCAgMTgzLCAgICAw
LCAgMjIwLCAgMjEyLCAgMjE5LAorICAgICAgMjA5LCAgMjA1LCAgMjA3LCAgMjA2LCAgMjEwLCAg
MTc3LCAgMTk4LCAgMjA0LCAgMTc3LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAogCisgICAgICAgMTIsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCisgICAgICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAgMTUsICAxNzcsICAxNzcsICAgMjMsICAxNzcsICAxNzcs
CiAgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAgMTUsICAxNzcsICAxNzcsICAgMjMs
ICAxNzcsICAxNzcsICAxNzcsCiAgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCiAgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCisgICAgICAxNzcsICAxOTksICAy
MDMsICAyMzUsICAgIDAsICAxODksICAxODUsICAgIDAsICAxODgsICAxODIsCisgICAgICAgIDAs
ICAxODQsICAxNzgsICAxOTUsICAxOTYsICAxNzcsICAxMzYsICAxNzcsICAxNzcsICAxNzcsCiAg
ICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsCi0gICAgICAxOTksICAyMDMsICAyMzUsICAgIDAsICAxODksICAxODUsICAgIDAsICAx
ODgsICAxODIsICAgIDAsCi0gICAgICAxODQsICAxNzgsICAxOTUsICAxOTYsICAxNzcsICAxMzYs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsCiAgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgMTMsCi0gICAgICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCisgICAg
ICAgMTMsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsCiAKLSAgICAgICAyNywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgICAyNCwgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAgIDE3NywgICAyNywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAgIDE3NywgIDE3NywgIDE3Nywg
ICAyNCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKICAgICAgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKICAgICAg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICAgMCwg
IDE4NiwgICAgMCwKLSAgICAgIDE4NSwgIDE4NywgIDE4MSwgIDE3NywgIDE3NywgIDE3NywgICAz
MCwgIDE3NywgIDE3NywgICAxOCwKLSAgICAgIDE3NCwgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgICAxNiwgIDEzOSwgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgICAyMSwgIDE3NywgIDE3NywKLSAgICAgIDE0MywgIDE1NSwg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE1MiwgICAgNCwgICAzNSwgICAzNiwgICAzNywgIDE3NywK
KyAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICAg
MCwgIDE4NiwKKyAgICAgICAgMCwgIDE4NSwgIDE4NywgIDE4MSwgIDE3NywgIDE3NywgIDE3Nywg
ICAzMCwgIDE3NywgIDE3NywKKyAgICAgICAxOCwgIDE3NCwgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAgIDE3NywgIDE3NywgICAxNiwgIDEzOSwg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgICAyMSwgIDE3NywKKyAgICAgIDE3NywgIDE0MywgIDE1
NSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE1MiwgICAgNCwgICAzNSwgICAzNiwgICAzNywKIAog
ICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LAogICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTQyLCAgIDMxLCAgMTc3
LCAgMTc3LCAgIDI4LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDI5LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgIDEwLCAgIDUzLCAgIDU0LCAgIDU1LCAgMTc3LAotICAgICAgMTM3LCAg
MTc3LCAgMTc3LCAgICA3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTY0LCAgMTY1LAotICAg
ICAgMTY2LCAgMTc3LCAgIDMyLCAgMTc3LCAgMTU2LCAgIDI2LCAgMTY3LCAgMTY4LCAgMTY5LCAg
ICAyLAotICAgICAgMTYxLCAgMTYyLCAgMTYzLCAgMTc3LCAgMTc3LCAgMTc3LCAgIDI1LCAgMTU5
LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgIDUwLCAgIDUxLCAgIDUyLCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgIDg2LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTQyLCAgIDMxLCAgMTc3LCAgMTc3LCAgIDI4LCAgMTc3LAorICAgICAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDI5LAorICAgICAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDEwLCAgIDUzLCAgIDU0LCAgIDU1
LAorICAgICAgMTc3LCAgMTM3LCAgMTc3LCAgMTc3LCAgICA3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTY0LAorICAgICAgMTY1LCAgMTY2LCAgMTc3LCAgIDMyLCAgMTc3LCAgMTU2LCAgIDI2
LCAgMTY3LCAgMTY4LCAgMTY5LAorICAgICAgICAyLCAgMTYxLCAgMTYyLCAgMTYzLCAgMTc3LCAg
MTc3LCAgMTc3LCAgIDI1LCAgMTU5LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgIDUwLCAgIDUx
LCAgIDUyLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDg2LCAgMTc3LCAgMTc3LCAgMTc3LAogCi0gICAgICAx
NzcsICAxNzcsICAxNzcsICAxNTMsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
Ci0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxMzgsICAxNzcsICAxNzcsICAx
NzYsICAgNTYsCi0gICAgICAgNTcsICAgNTgsICAxNzcsICAxNzcsICAgMTQsICAxNzcsICAgOTEs
ICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAgODksICAxNzcsICAxNzcsICAxNzcsICAx
NTQsICAxNDksICAgOTIsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNDQsICAxNzcsICAxNzcsICAxNzcsICAgNzgsICAgMzgsCi0gICAgICAgNDEsICAgNDMsICAg
NDIsICAgMzksICAgNDUsICAgNDQsICAgNDYsICAgNDAsICAxNzcsICAxNzcsCi0gICAgICAxNzcs
ICAxNzcsICAxNjAsICAxMzUsICAxNzcsICAxNzcsICAxNDcsICAxNzcsICAxNzcsICAxNzcsCi0g
ICAgICAgMzQsICAgODcsICAxNzMsICAgMjIsICAxNDgsICAgNzcsICAxNzcsICAxNTgsICAgMTcs
ICAxNzcsCisgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNTMsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsCisgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxMzgsICAxNzcsICAxNzcsICAxNzYsCisgICAgICAgNTYsICAgNTcsICAgNTgsICAxNzcsICAx
NzcsICAgMTQsICAxNzcsICAgOTEsICAxNzcsICAxNzcsCisgICAgICAxNzcsICAxNzcsICAgODks
ICAxNzcsICAxNzcsICAxNzcsICAxNTQsICAxNDksICAgOTIsICAxNzcsCisgICAgICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNDQsICAxNzcsICAxNzcsICAxNzcsICAgNzgsCisgICAg
ICAgMzgsICAgNDEsICAgNDMsICAgNDIsICAgMzksICAgNDUsICAgNDQsICAgNDYsICAgNDAsICAx
NzcsCisgICAgICAxNzcsICAxNzcsICAxNzcsICAxNjAsICAxMzUsICAxNzcsICAxNzcsICAxNDcs
ICAxNzcsICAxNzcsCisgICAgICAxNzcsICAgMzQsICAgODcsICAxNzMsICAgMjIsICAxNDgsICAg
NzcsICAxNzcsICAxNTgsICAgMTcsCiAgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAg
MTksICAgMzMsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCisgICAgICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAgMTksICAgMzMsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCiAKLSAgICAg
IDE3NywgICA5MywgICA5NCwgICA5NSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICAg
MywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE0MCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgICAgOCwgIDE3NywgIDE3NywKLSAgICAgICAgOSwgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
ICAyMCwgICA3OSwgICAxMSwgIDE1MCwgICA5NywKLSAgICAgICA5OCwgICA5OSwgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE0NSwgIDE3NywgIDE3NywgIDE3NywgICA4MSwgICA4MywKLSAgICAgICA4
MCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE0MSwgIDEwMSwK
LSAgICAgIDEwMiwgIDEwMywgIDE3NywgIDE3NywgIDE1NywgIDE3NywgIDE0NiwgIDE3NywgIDE3
NywgICAgNiwKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgICA5NiwKLSAgICAgIDE1MSwgICAgMSwgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NSwgIDE3NywgICA5MCwKKyAgICAgIDE3NywgIDE3NywgICA5MywgICA5NCwg
ICA5NSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAgICAgMywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAgIDE3Nywg
IDE3NywgIDE0MCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICAgOCwgIDE3NywKKyAg
ICAgIDE3NywgICAgOSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICAyMCwgICA3OSwgICAxMSwg
IDE1MCwKKyAgICAgICA5NywgICA5OCwgICA5OSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywKKyAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE0NSwg
IDE3NywgIDE3NywgIDE3NywgICA4MSwKKyAgICAgICA4MywgICA4MCwgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE0MSwKKyAgICAgIDEwMSwgIDEwMiwgIDEwMywg
IDE3NywgIDE3NywgIDE1NywgIDE3NywgIDE0NiwgIDE3NywgIDE3NywKKyAgICAgICAgNiwgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKKyAgICAg
ICA5NiwgIDE1MSwgICAgMSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NSwgIDE3
NywKIAotICAgICAgICA1LCAgMTcwLCAgIDU5LCAgIDYyLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgIDgyLCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTAwLCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTIwLCAgIDY2LAotICAgICAgIDY3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgIDg4LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTA0LCAgMTIyLAotICAgICAg
IDcwLCAgIDcxLCAgMTc3LCAgMTc3LCAgIDg0LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LAotICAgICAgMTc3LCAgMTc3LCAgMTE1LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTI5LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgIDYwLCAgMTc3LAorICAgICAgIDkwLCAgICA1LCAgMTcwLCAgIDU5LCAgIDYyLCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDgyLCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAg
MTc3LCAgMTAwLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTIwLAorICAgICAgIDY2
LCAgIDY3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAor
ICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDg4LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTA0LAorICAgICAgMTIyLCAgIDcwLCAgIDcxLCAgMTc3LCAgMTc3LCAgIDg0LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTE1LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTI5LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDYwLAogICAgICAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAg
MTE2LCAgMTA1LCAgMTc3LCAgMTA2LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTMwLCAgMTc3LAorICAg
ICAgMTc3LCAgMTc3LCAgMTE2LCAgMTA1LCAgMTc3LCAgMTA2LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTMwLAogCi0gICAgICAxNzcsICAgNjgsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxMTcs
ICAxNzcsICAxNzcsICAxMzEsICAxNzcsCi0gICAgICAxNzcsICAgNzIsICAxMDcsICAxMDgsICAx
NzcsICAxMTEsICAxNzcsICAxMTIsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcs
ICAgODUsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgNjQsICAxNzcsCi0gICAgICAgNjMsICAx
MjYsICAxNzcsICAxNzcsICAxMDksICAxMTAsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAg
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxMjQsICAxMjcsICAxMTgsICAx
NzcsCi0gICAgICAgNjUsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxMjUsCi0gICAgICAxMjgsICAxNzcsICAxNzcsICAxMjEsICAgNjksICAxNzcsICAx
NzcsICAxNzEsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAgNzQsICAxNzcsICAxNzcsICAxMjMs
ICAgNzMsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxMzIsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxMzMsCisgICAgICAxNzcsICAxNzcs
ICAgNjgsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCisgICAgICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxMTcsICAxNzcsICAxNzcsICAxMzEs
CisgICAgICAxNzcsICAxNzcsICAgNzIsICAxMDcsICAxMDgsICAxNzcsICAxMTEsICAxNzcsICAx
MTIsICAxNzcsCisgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgODUsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAgNjQsCisgICAgICAxNzcsICAgNjMsICAxMjYsICAxNzcsICAxNzcsICAx
MDksICAxMTAsICAxNzcsICAxNzcsICAxNzcsCisgICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxMjQsICAxMjcsICAxMTgsCisgICAgICAxNzcsICAgNjUsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCisgICAgICAxMjUs
ICAxMjgsICAxNzcsICAxNzcsICAxMjEsICAgNjksICAxNzcsICAxNzcsICAxNzEsICAxNzcsCisg
ICAgICAxNzcsICAxNzcsICAgNzQsICAxNzcsICAxNzcsICAxMjMsICAgNzMsICAxNzcsICAxNzcs
ICAxNzcsCisgICAgICAxNzcsICAxNzcsICAxNzcsICAxMzIsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsCiAKLSAgICAgIDE3NywgIDE3NywgIDE3NywgICA3NSwgIDE3NywgIDEz
NCwgIDExMywgIDExNCwgIDE3NywgIDE3NywKLSAgICAgIDE3NywgICA2MSwgIDE3NywgIDE3Nywg
IDE3MiwgIDExOSwgICA3NiwgICAgMAorICAgICAgMTMzLCAgMTc3LCAgMTc3LCAgMTc3LCAgIDc1
LCAgMTc3LCAgMTM0LCAgMTEzLCAgMTE0LCAgMTc3LAorICAgICAgMTc3LCAgMTc3LCAgIDYxLCAg
MTc3LCAgMTc3LCAgMTcyLCAgMTE5LCAgIDc2LCAgICAwCiAgICAgfSA7CiAKIHN0YXRpYyB5eWNv
bnN0IGZsZXhfaW50MzJfdCB5eV9lY1syNTZdID0KQEAgLTU0NywxOTQgKzU0NywxOTQgQEAKICAg
ICAgICAgMSwgICAgMQogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlf
YmFzZVs4MjRdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzgyNV0gPQog
ICAgIHsgICAwLAogICAgICAgICAwLCAgICAwLCAgIDcyLCAgICAwLCAxMDE2LCAxMDE3LCAxMDE3
LCAxMDE3LCAgOTkwLCAgMTIwLAogICAgICAgMTQxLCAxMDE3LCAxMDE3LCAgOTg5LCAgMTM4LCAx
MDE3LCAgMTM3LCAgMTM1LCAgOTg4LCAgMTU0LAogICAgICAgMjA4LCAgOTg2LCAxMDE3LCAgMTU0
LCAgOTg2LCAgMTMyLCAxMDE3LCAgICAwLCAxMDE3LCAxMDE3LAogICAgICAgMTM5LCAgMTMwLCAg
MTIzLCAgMTQwLCAgMTQ3LCAgMTMzLCAgMTc3LCAgOTUyLCAgMTg2LCAgMTUxLAogICAgICAgMTM5
LCAgMTE2LCAgMTYxLCAgOTQ2LCAgMTczLCAgOTU5LCAgMTkzLCAgMTk5LCAgMjA4LCAgMjE1LAot
ICAgICAgMTA4LCAxMDE3LCAgMTg0LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAgICAwLCAxMDE3
LCAxMDE3LAotICAgICAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAx
MDE3LCAgMjMwLCAxMDE3LAotICAgICAgMjM1LCAgMjM1LCAgICAwLCAgMjcxLCAxMDE3LCAgICAw
LCAxMDE3LCAxMDE3LCAxMDE3LCAgOTgyLAotICAgICAxMDE3LCAxMDE3LCAxMDE3LCAgOTgxLCAg
ICAwLCAxMDE3LCAxMDE3LCAgOTQzLCAgOTQ4LCAgMTUyLAotICAgICAgOTQ1LCAgOTUzLCAgOTUy
LCAgOTM5LCAgOTQyLCAgOTUzLCAgMjQzLCAgOTQ3LCAgOTM1LCAgOTMyLAorICAgICAgMTA4LCAx
MDE3LCAgMTg0LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAgICAwLCAxMDE3LAorICAg
ICAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAxMDE3LCAg
MjMwLAorICAgICAxMDE3LCAgMjM1LCAgMjM1LCAgICAwLCAgMjcxLCAxMDE3LCAgICAwLCAxMDE3
LCAxMDE3LCAxMDE3LAorICAgICAgOTgyLCAxMDE3LCAxMDE3LCAxMDE3LCAgOTgxLCAgICAwLCAx
MDE3LCAxMDE3LCAgOTQzLCAgOTQ4LAorICAgICAgMTUyLCAgOTQ1LCAgOTUzLCAgOTUyLCAgOTM5
LCAgOTQyLCAgOTUzLCAgMjQzLCAgOTQ3LCAgOTM1LAogCi0gICAgICA5NDUsICA5MzIsICA5Mjks
ICA5MjksICA5MzUsICAxNDcsICAyNDgsICA5MjksICA5MzksICA5MjUsCi0gICAgICA5MzEsICA5
MzQsICA5MzUsICAgIDAsICA5MjcsICA5MzcsICAyNDksICA5MzYsICA5MzEsICA5MTIsCi0gICAg
ICAxNzcsICA5MTYsICA5MjksICA5MjAsICAxODQsICA5MTMsICAyNTAsICA5MjUsICA5MjcsICAy
NTcsCi0gICAgICA5MTYsICA5MTMsICA5MDIsICA5MTEsICAyNDksICAyNTcsICA5MTUsICA5MTEs
ICA5MTMsICA5MDIsCi0gICAgICA5MDUsICAxOTYsICAyMTcsICAyNjksICA5MTQsICA5MDIsICA5
MTQsICAyNjIsICA5MDcsICA5MDYsCi0gICAgIDEwMTcsIDEwMTcsICAgIDAsICAzMTEsIDEwMTcs
ICAyOTIsICAzMjgsIDEwMTcsIDEwMTcsICAzMzUsCi0gICAgICAzNDIsICAyNTcsIDEwMTcsIDEw
MTcsICA5MDUsICAgIDAsICA5MDEsICA4OTYsICA5MDAsICA5MDksCi0gICAgICA5MDYsICAzMTUs
ICA4OTAsICA4OTAsICA5MDEsICA4OTMsICAyMTUsICA5MDMsICA5MDAsICA5MDAsCi0gICAgICA4
OTgsICA4OTUsICA4ODcsICA4OTMsICA4ODAsICA4NzgsICA4OTAsICA4NzYsICA4OTIsICAgIDAs
Ci0gICAgICA4ODksICA4NzcsICA4ODQsICA4ODEsICA4ODUsICA4ODYsICA4NzksICA4NzYsICA4
NjUsICA4NjQsCisgICAgICA5MzIsICA5NDUsICA5MzIsICA5MjksICA5MjksICA5MzUsICAxNDcs
ICAyNDgsICA5MjksICA5MzksCisgICAgICA5MjUsICA5MzEsICA5MzQsICA5MzUsICAgIDAsICA5
MjcsICA5MzcsICAyNDksICA5MzYsICA5MzEsCisgICAgICA5MTIsICAxNzcsICA5MTYsICA5Mjks
ICA5MjAsICAxODQsICA5MTMsICAyNTAsICA5MjUsICA5MjcsCisgICAgICAyNTcsICA5MTYsICA5
MTMsICA5MDIsICA5MTEsICAyNDksICAyNTcsICA5MTUsICA5MTEsICA5MTMsCisgICAgICA5MDIs
ICA5MDUsICAxOTYsICAyMTcsICAyNjksICA5MTQsICA5MDIsICA5MTQsICAyNjIsICA5MDcsCisg
ICAgICA5MDYsIDEwMTcsIDEwMTcsICAgIDAsICAzMTEsIDEwMTcsICAyOTIsICAzMjgsIDEwMTcs
IDEwMTcsCisgICAgICAzMzUsICAzNDIsICAyNTcsIDEwMTcsIDEwMTcsICA5MDUsICAgIDAsICA5
MDEsICA4OTYsICA5MDAsCisgICAgICA5MDksICA5MDYsICAzMTUsICA4OTAsICA4OTAsICA5MDEs
ICA4OTMsICAyMTUsICA5MDMsICA5MDAsCisgICAgICA5MDAsICA4OTgsICA4OTUsICA4ODcsICA4
OTMsICA4ODAsICA4NzgsICA4OTAsICA4NzYsICA4OTIsCisgICAgICAgIDAsICA4ODksICA4Nzcs
ICA4ODQsICA4ODEsICA4ODUsICA4ODYsICA4NzksICA4NzYsICA4NjUsCiAKLSAgICAgIDg3Nywg
IDg4MCwgIDg2OCwgIDg3NiwgIDg2NCwgIDg3MCwgIDg2MSwgIDMxNiwgIDg2NiwgIDg2OSwKLSAg
ICAgIDg2MCwgIDg2NywgIDg1NiwgIDg2MCwgIDg1MSwgIDg2NSwgIDg2NCwgIDg1NSwgIDg2MSwg
IDMwNywKLSAgICAgIDg0NSwgIDg0OCwgIDg0NiwgIDg1NiwgIDg0NiwgIDg0MSwgIDgzOSwgIDg0
MSwgIDg1MSwgIDgzNywKLSAgICAgIDgzOSwgIDgzNiwgIDg0NywgIDg0NiwgIDg0OSwgIDgzMSwg
IDMxNiwgIDgzOSwgIDgzNSwgIDgzMywKLSAgICAgIDg0MiwgIDgyMSwgIDM1MywgIDgzOSwgIDg0
MSwgIDgzMCwgIDgyMiwgIDM2MywgIDM3MCwgIDM3OCwKLSAgICAgIDM4OSwgMTAxNywgMTAxNywg
IDgxOSwgIDgyOSwgIDgyOCwgICAgMCwgIDgyNiwgIDM4MywgICAgMCwKLSAgICAgICAgMCwgIDgx
OSwgIDgxNywgIDgxNywgIDgxOCwgIDgxMywgIDgyMSwgIDgxMCwgIDgyNywgIDgxNiwKLSAgICAg
IDM5NCwgICAgMCwgICAgMCwgIDgxMCwgIDgyMCwgIDgxOSwgIDgxOSwgICAgMCwgIDgwNCwgIDM5
NywKLSAgICAgICAgMCwgICAgMCwgIDgwNiwgIDQwMCwgIDgxMywgIDgxNCwgIDgwNSwgIDc5OSwg
IDc5OCwgIDc5OSwKLSAgICAgIDc5OCwgIDc5OCwgIDQwNiwgIDc5MywgICAgMCwgICAgMCwgIDc4
OSwgIDc4OCwgIDc4NywgIDc4OSwKKyAgICAgIDg2NCwgIDg3NywgIDg4MCwgIDg2OCwgIDg3Niwg
IDg2NCwgIDg3MCwgIDg2MSwgIDMxNiwgIDg2NiwKKyAgICAgIDg2OSwgIDg2MCwgIDg2NywgIDg1
NiwgIDg2MCwgIDg1MSwgIDg2NSwgIDg2NCwgIDg1NSwgIDg2MSwKKyAgICAgIDMwNywgIDg0NSwg
IDg0OCwgIDg0NiwgIDg1NiwgIDg0NiwgIDg0MSwgIDgzOSwgIDg0MSwgIDg1MSwKKyAgICAgIDgz
NywgIDgzOSwgIDgzNiwgIDg0NywgIDg0NiwgIDg0OSwgIDgzMSwgIDMxNiwgIDgzOSwgIDgzNSwK
KyAgICAgIDgzMywgIDg0MiwgIDgyMSwgIDM1MywgIDgzOSwgIDg0MSwgIDgzMCwgIDgyMiwgIDM2
MywgIDM3MCwKKyAgICAgIDM3OCwgIDM4OSwgMTAxNywgMTAxNywgIDgxOSwgIDgyOSwgIDgyOCwg
ICAgMCwgIDgyNiwgIDM4MywKKyAgICAgICAgMCwgICAgMCwgIDgxOSwgIDgxNywgIDgxNywgIDgx
OCwgIDgxMywgIDgyMSwgIDgxMCwgIDgyNywKKyAgICAgIDgxNiwgIDM5NCwgICAgMCwgICAgMCwg
IDgxMCwgIDgyMCwgIDgxOSwgIDgxOSwgICAgMCwgIDgwNCwKKyAgICAgIDM5NywgICAgMCwgICAg
MCwgIDgwNiwgIDQwMCwgIDgxMywgIDgxNCwgIDgwNSwgIDc5OSwgIDc5OCwKKyAgICAgIDc5OSwg
IDc5OCwgIDc5OCwgIDQwNiwgIDc5MywgICAgMCwgICAgMCwgIDc4OSwgIDc4OCwgIDc4NywKIAot
ICAgICAgNzkwLCAgNzk1LCAgNzg5LCAgNzg1LCAgNzk4LCAgNzkzLCAgNzkzLCAgNzkxLCAgNzkw
LCAgNzg0LAotICAgICAgNzc4LCAgNzgwLCAgNzc5LCAgNzgzLCAgNzc1LCAgNzc4LCAgNzczLCAg
NzgxLCAgNzg2LCAgNzc0LAotICAgICAgNzcxLCAgNzgzLCAgNzc0LCAgICAwLCAgICAwLCAgNzgw
LCAgNzc2LCAgICAwLCAgNzY4LCAgNzY4LAotICAgICAgNzczLCAgNzY0LCAgNzcxLCAgNDA5LCAg
NzY4LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNzU4LAotICAgICAgNzcwLCAgNzY5LCAgNzY4
LCAgNzY5LCAgNzY5LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNzU2LAotICAgICAgICAwLCAg
NzY0LCAgNzU1LCAgICAwLCAgNzU0LCAgNzU1LCAgNzQ5LCAgNzU5LCAgICAwLCAgICAwLAotICAg
ICAgICAwLCAgNzUwLCAgICAwLCAgNzQ2LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgNzU2LCAgNDEzLCAgNzU1LCAgICAwLCAgICAw
LCAgNzUzLCAgNzQ5LAotICAgICAgNzQ2LCAgICAwLCAgICAwLCAgICAwLCAgNzM4LCAgNDE1LCAg
NDE4LCAgNDI3LCAgNzQzLCAgNzM5LAotICAgICAgNzQ0LCAgNzM1LCAgNzMzLCAgNzQ2LCAgNzMx
LCAgICAwLCAgNzMxLCAgNzQ0LCAgNzMzLCAgNzI5LAorICAgICAgNzg5LCAgNzkwLCAgNzk1LCAg
Nzg5LCAgNzg1LCAgNzk4LCAgNzkzLCAgNzkzLCAgNzkxLCAgNzkwLAorICAgICAgNzg0LCAgNzc4
LCAgNzgwLCAgNzc5LCAgNzgzLCAgNzc1LCAgNzc4LCAgNzczLCAgNzgxLCAgNzg2LAorICAgICAg
Nzc0LCAgNzcxLCAgNzgzLCAgNzc0LCAgICAwLCAgICAwLCAgNzgwLCAgNzc2LCAgICAwLCAgNzY4
LAorICAgICAgNzY4LCAgNzczLCAgNzY0LCAgNzcxLCAgNDA5LCAgNzY4LCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLAorICAgICAgNzU4LCAgNzcwLCAgNzY5LCAgNzY4LCAgNzY5LCAgNzY5LCAgICAw
LCAgICAwLCAgICAwLCAgICAwLAorICAgICAgNzU2LCAgICAwLCAgNzY0LCAgNzU1LCAgICAwLCAg
NzU0LCAgNzU1LCAgNzQ5LCAgNzU5LCAgICAwLAorICAgICAgICAwLCAgICAwLCAgNzUwLCAgICAw
LCAgNzQ2LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgNzU2LCAgNDEzLCAgNzU1LCAgICAwLCAgICAwLCAgNzUzLAorICAgICAgNzQ5
LCAgNzQ2LCAgICAwLCAgICAwLCAgICAwLCAgNzM4LCAgNDE1LCAgNDE4LCAgNDI3LCAgNzQzLAor
ICAgICAgNzM5LCAgNzQ0LCAgNzM1LCAgNzMzLCAgNzQ2LCAgNzMxLCAgICAwLCAgNzMxLCAgNzQ0
LCAgNzMzLAogCi0gICAgICA3MzUsICA3MzAsICA3MzcsICAgIDAsICA3MzUsICA3MzIsICA3MzYs
ICA3MjAsICA3MTgsICA3MjEsCi0gICAgICA3MjcsICA3MzMsICA3MjgsICA3MjcsICA3MTUsICAg
IDAsICA3MTcsICA3MTgsICAgIDAsICAgIDAsCi0gICAgICAgIDAsICAgIDAsICA3MTUsICA3MTgs
ICAgIDAsICA3MTIsICAgIDAsICA3MjUsICA3MDUsICA3MTQsCi0gICAgICA3MDksICAgIDAsICA3
MDIsICA3MDIsICA3MTUsICAgIDAsICA3MTcsICAgIDAsICA0MzEsICA3MzAsCi0gICAgICA3Mjks
ICA3MjgsICA2OTUsICA2OTQsICAgIDAsICA3MTEsICA3MTAsICA3MDUsICAgIDAsICAgIDAsCi0g
ICAgICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA2OTQs
ICA3MDcsCi0gICAgICA2OTQsICA2OTEsICAgIDAsICAgIDAsICA2OTYsICA2OTUsICAgIDAsICA2
OTIsICA2OTksICA2OTgsCi0gICAgICAgIDAsICA2ODQsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICA2ODEsICAgIDAsICAgIDAsICA2ODAsCi0gICAgICA2OTEsICA0MzQsICA2ODQsICA2OTAsICA2
ODksICA2ODYsICA2ODEsICA2NzgsICA2NzEsICA2NzEsCi0gICAgICA2ODQsICA2NjksICA2ODEs
ICAgIDAsICAgIDAsICA2NzQsICA2OTcsICA2OTYsICA2OTUsICA2NjIsCisgICAgICA3MjksICA3
MzUsICA3MzAsICA3MzcsICAgIDAsICA3MzUsICA3MzIsICA3MzYsICA3MjAsICA3MTgsCisgICAg
ICA3MjEsICA3MjcsICA3MzMsICA3MjgsICA3MjcsICA3MTUsICAgIDAsICA3MTcsICA3MTgsICAg
IDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICA3MTUsICA3MTgsICAgIDAsICA3MTIsICAgIDAs
ICA3MjUsICA3MDUsCisgICAgICA3MTQsICA3MDksICAgIDAsICA3MDIsICA3MDIsICA3MTUsICAg
IDAsICA3MTcsICAgIDAsICA0MzEsCisgICAgICA3MzAsICA3MjksICA3MjgsICA2OTUsICA2OTQs
ICAgIDAsICA3MTEsICA3MTAsICA3MDUsICAgIDAsCisgICAgICAgIDAsICAgIDAsICAgIDAsICAg
IDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA2OTQsCisgICAgICA3MDcsICA2OTQs
ICA2OTEsICAgIDAsICAgIDAsICA2OTYsICA2OTUsICAgIDAsICA2OTIsICA2OTksCisgICAgICA2
OTgsICAgIDAsICA2ODQsICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA2ODEsICAgIDAsICAgIDAs
CisgICAgICA2ODAsICA2OTEsICA0MzQsICA2ODQsICA2OTAsICA2ODksICA2ODYsICA2ODEsICA2
NzgsICA2NzEsCisgICAgICA2NzEsICA2ODQsICA2NjksICA2ODEsICAgIDAsICAgIDAsICA2NzQs
ICA2OTcsICA2OTYsICA2OTUsCiAKLSAgICAgIDY2MSwgIDQyNywgIDQyOCwgICAgMCwgIDY3Mywg
IDY3NiwgIDY3NCwgIDY2MywgIDY1OSwgICAgMCwKLSAgICAgIDY3MSwgIDY2OCwgIDY2NywgIDY1
NywgIDY1NiwgIDY0NiwgIDY2MywgIDY0OSwgIDQ0MSwgIDY1NywKLSAgICAgIDY2MCwgICAgMCwg
IDY3NywgIDY3NiwgIDY3NSwgIDY0MiwgIDY0MSwgICAgMCwgIDY1NSwgIDY0MiwKLSAgICAgICAg
MCwgIDY1MiwgIDY0NSwgIDY0NiwgIDY0OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDY2OSwK
LSAgICAgIDY2OCwgICAgMCwgIDY0NSwgIDY0OCwgIDYzMywgIDY0MCwgIDYzMSwgIDYzOCwgIDYz
OSwgIDYzOSwKLSAgICAgIDYzOCwgIDYyNCwgIDQ1MSwgIDYzNiwgICAgMCwgIDYzNywgIDYyNiwg
IDYyNSwgICAgMCwgICAgMCwKLSAgICAgICAgMCwgIDY1MCwgIDY0OSwgIDY0OCwgIDYxNSwgIDYx
NCwgIDYxMCwgIDYxOCwgICAgMCwgIDY0NiwKLSAgICAgIDY0NSwgICAgMCwgIDYyMiwgIDYyNSwg
ICAgMCwgIDQ1OCwgICAgMCwgIDYwMywgIDYxMiwgICAgMCwKLSAgICAgIDYwOCwgIDYwNywgIDYx
NiwgIDYxNiwgIDYwNCwgIDYxOCwgIDYwMiwgIDYxNiwgIDYxMSwgICAgMCwKLSAgICAgICAgMCwg
ICAgMCwgIDYyOCwgIDYyNywgIDYyNiwgIDU5MywgIDU5MiwgICAgMCwgIDU5MiwgICAgMCwKKyAg
ICAgIDY2MiwgIDY2MSwgIDQyNywgIDQyOCwgICAgMCwgIDY3MywgIDY3NiwgIDY3NCwgIDY2Mywg
IDY1OSwKKyAgICAgICAgMCwgIDY3MSwgIDY2OCwgIDY2NywgIDY1NywgIDY1NiwgIDY0NiwgIDY2
MywgIDY0OSwgIDQ0MSwKKyAgICAgIDY1NywgIDY2MCwgICAgMCwgIDY3NywgIDY3NiwgIDY3NSwg
IDY0MiwgIDY0MSwgICAgMCwgIDY1NSwKKyAgICAgIDY0MiwgICAgMCwgIDY1MiwgIDY0NSwgIDY0
NiwgIDY0OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKKyAgICAgIDY2OSwgIDY2OCwgICAgMCwg
IDY0NSwgIDY0OCwgIDYzMywgIDY0MCwgIDYzMSwgIDYzOCwgIDYzOSwKKyAgICAgIDYzOSwgIDYz
OCwgIDYyNCwgIDQ1MSwgIDYzNiwgICAgMCwgIDYzNywgIDYyNiwgIDYyNSwgICAgMCwKKyAgICAg
ICAgMCwgICAgMCwgIDY1MCwgIDY0OSwgIDY0OCwgIDYxNSwgIDYxNCwgIDYxMCwgIDYxOCwgICAg
MCwKKyAgICAgIDY0NiwgIDY0NSwgICAgMCwgIDYyMiwgIDYyNSwgICAgMCwgIDQ1OCwgICAgMCwg
IDYwMywgIDYxMiwKKyAgICAgICAgMCwgIDYwOCwgIDYwNywgIDYxNiwgIDYxNiwgIDYwNCwgIDYx
OCwgIDYwMiwgIDYxNiwgIDYxMSwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgIDYyOCwgIDYyNywg
IDYyNiwgIDU5MywgIDU5MiwgICAgMCwgIDU5MiwKIAotICAgICAgICAwLCAgNDM0LCAgNDU0LCAg
NjE2LCAgNjAyLCAgNjA1LCAgNTg4LCAgNjAwLCAgNTg4LCAgNTg3LAotICAgICAgNTk2LCAgNTk2
LCAgNjEzLCAgNjEyLCAgNjExLCAgNTc4LCAgNTc3LCAgICAwLCAgNTc3LCAgNTc4LAotICAgICAg
NTc3LCAgNTg3LCAgICAwLCAgNTkwLCAgNTg2LCAgNTg4LCAgNTg0LCAgNTcxLCAgNjAyLCAgNDQ5
LAotICAgICAgICAwLCAgNTc5LCAgNTgyLCAgNTc0LCAgNTY2LCAgNTczLCAgNTY0LCAgNTg1LCAg
NTczLCAgNTY5LAotICAgICAgNTcxLCAgNTY5LCAgNTY5LCAgNTY4LCAgICAwLCAgNTU2LCAgNTU1
LCAgNTY1LCAgICAwLCAgNTg1LAotICAgICAgNDYyLCAgICAwLCAgNTYyLCAgNTY1LCAgICAwLCAg
NTY1LCAgNTY0LCAgNTQ4LCAgNTQwLCAgNTQ4LAotICAgICAgNTM4LCAgNTQ2LCAgICAwLCAgNTQz
LCAgNTQyLCAgNTYzLCAgNTUxLCAgNTQ5LCAgNTQ5LCAgNTMzLAotICAgICAgNTM2LCAgNTUwLCAg
NTM0LCAgNTY1LCAgNTQ1LCAgNTQ2LCAgNTQzLCAgNTQwLCAgNTUwLCAgNTI3LAotICAgICAgNTQx
LCAgNTQwLCAgNTI0LCAgNTIzLCAgNTIyLCAgNTQzLCAgNTMxLCAgNTI5LCAgNTI5LCAgNTEwLAot
ICAgICAgNTA5LCAgICAwLCAgNTM3LCAgNTA5LCAgNTM1LCAgNTA3LCAgNTExLCAgNTEwLCAgNTQx
LCAgNTIxLAorICAgICAgICAwLCAgICAwLCAgNDM0LCAgNDU0LCAgNjE2LCAgNjAyLCAgNjA1LCAg
NTg4LCAgNjAwLCAgNTg4LAorICAgICAgNTg3LCAgNTk2LCAgNTk2LCAgNjEzLCAgNjEyLCAgNjEx
LCAgNTc4LCAgNTc3LCAgICAwLCAgNTc3LAorICAgICAgNTc4LCAgNTc3LCAgNTg3LCAgICAwLCAg
NTkwLCAgNTg2LCAgNTg4LCAgNTg0LCAgNTcxLCAgNjAyLAorICAgICAgNDQ5LCAgICAwLCAgNTc5
LCAgNTgyLCAgNTc0LCAgNTY2LCAgNTczLCAgNTY0LCAgNTg1LCAgNTczLAorICAgICAgNTY5LCAg
NTcxLCAgNTY5LCAgNTY5LCAgNTY4LCAgICAwLCAgNTU2LCAgNTU1LCAgNTY1LCAgICAwLAorICAg
ICAgNTg1LCAgNDYyLCAgICAwLCAgNTYyLCAgNTY1LCAgICAwLCAgNTY1LCAgNTY0LCAgNTQ4LCAg
NTQwLAorICAgICAgNTQ4LCAgNTM4LCAgNTQ2LCAgICAwLCAgNTQzLCAgNTQyLCAgNTYzLCAgNTUx
LCAgNTQ5LCAgNTQ5LAorICAgICAgNTMzLCAgNTM2LCAgNTUwLCAgNTM0LCAgNTY1LCAgNTQ1LCAg
NTQ2LCAgNTQzLCAgNTQwLCAgNTUwLAorICAgICAgNTI3LCAgNTQxLCAgNTQwLCAgNTI0LCAgNTIz
LCAgNTIyLCAgNTQzLCAgNTMxLCAgNTI5LCAgNTI5LAorICAgICAgNTEwLCAgNTA5LCAgICAwLCAg
NTM3LCAgNTA5LCAgNTM1LCAgNTA3LCAgNTExLCAgNTEwLCAgNTQxLAogCi0gICAgICA1MTgsICAg
IDAsICA1MTcsICA1MjAsICA1MTYsICA1MTgsICA1MDIsICA0OTksICA1MTIsICA0OTcsCi0gICAg
ICA0OTgsICA1MDUsICA0OTksICA0ODgsICA0ODcsICAgIDAsICA0OTMsICA0OTIsICA1MjMsICA1
MDMsCi0gICAgICA1MDAsICAgIDAsICAgIDAsICAgIDAsICA0OTYsICAgIDAsICA0OTUsICAgIDAs
ICA1MDEsICA1MDAsCi0gICAgICA0ODQsICA0ODEsICA0ODIsICAgIDAsICA0NzQsICA0ODIsICA0
NzIsICA0NzgsICA0OTksICA0NzgsCi0gICAgICAgIDAsICAgIDAsICA0OTAsICA0ODksICAgIDAs
ICAgIDAsICA0ODgsICA0ODcsICA0NzEsICA0NjgsCi0gICAgICA0NjksICA0ODMsICA0ODIsICA0
NTksICA0NTgsICA0NjQsICAgIDAsICAgIDAsICA0ODUsICA0NTcsCi0gICAgICA0ODMsICA0NzUs
ICA0NjcsICA0NTMsICAxMzIsICAxNjEsICAxNzcsICAyMTUsICAyNDUsICAgIDAsCi0gICAgICAg
IDAsICAyODgsICAyODksICAgIDAsICAgIDAsICAyOTQsICAzMTUsICAgIDAsICAzMTYsICAzMDYs
Ci0gICAgICAzMzEsICAgIDAsICAzNjMsICA0MDIsICAgIDAsICAgIDAsICAzOTUsICAzODMsICAz
OTUsICAzODcsCi0gICAgICA0MzMsICA0MzQsICAgIDAsICA0MzUsICA0MjAsICA0NjEsICA0Mjcs
ICA0MzAsICA0MzEsICAgIDAsCisgICAgICA1MjEsICA1MTgsICAgIDAsICA1MTcsICA1MjAsICA1
MTYsICA1MTgsICA1MDIsICA0OTksICA1MTIsCisgICAgICA0OTcsICA0OTgsICA1MDUsICA0OTks
ICA0ODgsICA0ODcsICAgIDAsICA0OTMsICA0OTIsICA1MjMsCisgICAgICA1MDMsICA1MDAsICAg
IDAsICAgIDAsICAgIDAsICA0OTYsICAgIDAsICA0OTUsICAgIDAsICA1MDEsCisgICAgICA1MDAs
ICA0ODQsICA0ODEsICA0ODIsICAgIDAsICA0NzQsICA0ODIsICA0NzIsICA0NzgsICA0OTksCisg
ICAgICA0NzgsICAgIDAsICAgIDAsICA0OTAsICA0ODksICAgIDAsICAgIDAsICA0ODgsICA0ODcs
ICA0NzEsCisgICAgICA0NjgsICA0NjksICA0ODMsICA0ODIsICA0NTksICA0NTgsICA0NjQsICAg
IDAsICAgIDAsICA0ODUsCisgICAgICA0NTcsICA0ODMsICA0NzUsICA0NjcsICA0NTMsICAxMzIs
ICAxNjEsICAxNzcsICAyMTUsICAyNDUsCisgICAgICAgIDAsICAgIDAsICAyODgsICAyODksICAg
IDAsICAgIDAsICAyOTQsICAzMTUsICAgIDAsICAzMTYsCisgICAgICAzMDYsICAzMzEsICAgIDAs
ICAzNjMsICA0MDIsICAgIDAsICAgIDAsICAzOTUsICAzODMsICAzOTUsCisgICAgICAzODcsICA0
MzMsICA0MzQsICAgIDAsICA0MzUsICA0MjAsICA0NjEsICA0MjcsICA0MzAsICA0MzEsCiAKLSAg
ICAgIDQ1MCwgIDQ1MiwgIDQ0MywgICAgMCwgIDQ2NCwgICAgMCwgICAgMCwgICAgMCwgIDQ0NSwg
IDQ0NiwKLSAgICAgIDQ0MCwgICAgMCwgIDQ0MSwgIDQ0MiwgICAgMCwgICAgMCwgICAgMCwgMTAx
NywgIDUwNiwgIDUwOSwKLSAgICAgIDUxMiwgIDUxMywgIDUxNAorICAgICAgICAwLCAgNDUwLCAg
NDUyLCAgNDQzLCAgICAwLCAgNDY0LCAgICAwLCAgICAwLCAgICAwLCAgNDQ1LAorICAgICAgNDQ2
LCAgNDQwLCAgICAwLCAgNDQxLCAgNDQyLCAgICAwLCAgICAwLCAgICAwLCAxMDE3LCAgNTA2LAor
ICAgICAgNTA5LCAgNTEyLCAgNTEzLCAgNTE0CiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZs
ZXhfaW50MTZfdCB5eV9kZWZbODI0XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlf
ZGVmWzgyNV0gPQogICAgIHsgICAwLAotICAgICAgODE4LCAgICAxLCAgODE4LCAgICAzLCAgODE4
LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAgODE4LAotICAgICAgODE4LCAgODE4LCAgODE4LCAg
ODE4LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAgODE4LAotICAgICAgODE4LCAgODE4
LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAgODE5LCAgODE4LCAgODE4LAotICAgICAg
ODE4LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LAorICAgICAgODE5LCAgICAxLCAgODE5LCAgICAzLCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LAogICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAg
ODE4LCAgODE4LCAgODIwLCAgODE4LCAgODE4LAotICAgICAgODE4LCAgODE4LCAgODE4LCAgODE4
LCAgODE4LCAgODE4LCAgODE4LCAgODE4LCAgODIxLCAgODE4LAotICAgICAgODIyLCAgIDIwLCAg
IDIxLCAgODE4LCAgODE4LCAgODIzLCAgODE4LCAgODE4LCAgODE4LCAgODE4LAotICAgICAgODE4
LCAgODE4LCAgODE4LCAgODE4LCAgODE5LCAgODE4LCAgODE4LCAgODE5LCAgODE5LCAgODE5LAot
ICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LAorICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODIwLCAgODE5LCAgODE5LAorICAgICAgODE5LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODIxLCAgODE5LAorICAgICAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODIyLAorICAg
ICAgODE5LCAgODIzLCAgIDIwLCAgIDIxLCAgODE5LCAgODE5LCAgODI0LCAgODE5LCAgODE5LCAg
ODE5LAorICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODIwLCAgODE5LCAgODE5
LCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLAogCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAg
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksCi0gICAgICA4MTgsICA4MTgsICA4MjAsICA4MTgsICA4MTgsICA4MjIsICA4
MTgsICA4MTgsICA4MTgsICA4MTgsCi0gICAgICA4MTgsICA4MjMsICA4MTgsICA4MTgsICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
CisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAs
ICA4MTksICA4MTksICA4MjEsICA4MTksICA4MTksICA4MjMsICA4MTksICA4MTksICA4MTksCisg
ICAgICA4MTksICA4MTksICA4MjQsICA4MTksICA4MTksICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCiAKLSAgICAgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAg
ICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOCwgIDgxOCwgIDgxOCwKLSAgICAgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgxOSwgIDgxOSwK
KyAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKIAotICAgICAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAot
ICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAg
ICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAog
Ci0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0g
ICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCisgICAgICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAg
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
CisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsCiAKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwK
LSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKKyAgICAgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAg
ICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKKyAgICAg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwKKyAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwKIAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAor
ICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAg
ICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAogCi0gICAgICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAg
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
Ci0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisg
ICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCisgICAgICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCiAKLSAgICAgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAg
ICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgICAgMCwgIDgxOCwg
IDgxOCwKLSAgICAgIDgxOCwgIDgxOCwgIDgxOAorICAgICAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAorICAgICAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgICAwLCAgODE5LAorICAgICAgODE5
LCAgODE5LCAgODE5LCAgODE5CiAgICAgfSA7CiAKIHN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZf
dCB5eV9ueHRbMTA5MF0gPQpAQCAtNzQ2LDExOCArNzQ2LDExOCBAQAogICAgICAgIDI5LCAgIDMw
LCAgIDMxLCAgIDI4LCAgIDMyLCAgIDMzLCAgIDM0LCAgIDM1LCAgIDM2LCAgIDM3LAogICAgICAg
IDM4LCAgIDM5LCAgIDQwLCAgIDI4LCAgIDQxLCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDQ1LCAgIDQ2
LAogICAgICAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDI4LCAgIDI4LCAgIDI4LCAg
IDUyLCAgIDUzLAotICAgICAgIDU0LCAgIDU1LCAgICA2LCAgIDU2LCAgIDU3LCAgICA2LCAgICA2
LCAgICA2LCAgICA2LCAgICA2LAotICAgICAgICA2LCAgICA2LCAgICA2LCAgICA2LCAgICA2LCAg
ICA2LCAgICA2LCAgICA2LCAgICA2LCAgICA2LAotICAgICAgICA2LCAgICA2LCAgICA2LCAgICA2
LCAgICA2LCAgICA2LCAgICA2LCAgICA2LCAgICA2LCAgIDU4LAorICAgICAgIDU0LCAgIDU1LCAg
IDU2LCAgIDU3LCAgIDU4LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LAorICAgICAgIDU2
LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LAor
ICAgICAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2
LCAgIDU5LAogCi0gICAgICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgs
ICAgNTgsICAgNTgsICAgNTgsCi0gICAgICAgNTgsICAgNTgsICAgIDYsICAgIDYsICAgIDYsICAg
NTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsCi0gICAgICAgNTgsICAgNTgsICAgNTgsICAgNTgs
ICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsCi0gICAgICAgNTgsICAgNTgsICAg
NTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsICAgNTgsCi0gICAgICAgIDYs
ICAgIDYsICAgIDYsICAgIDYsICAgNjAsICAgNjEsICAgNjIsICAgNjUsICAgNjcsICAgNjksCi0g
ICAgICAgNjksICAgNjksICAgNjksICAgNjksICAgNjksICAgNjksICAgODMsICAgODQsICAgNzgs
ICAxNDksCi0gICAgICAxMjIsICAgNjgsICAgNjYsICAgODYsICAxMjMsICAgNjMsICAgNzEsICAx
NTAsICAgNzIsICAgNzIsCi0gICAgICAgNzIsICAgNzIsICAgNzIsICAgNzIsICAgNzMsICAgNzks
ICAgODgsICAgODAsICAgODEsICA3ODMsCi0gICAgICAgOTEsICAgODcsICAgOTIsICAxMjAsICAg
OTQsICAgNzQsICAgOTMsICAxMDIsICAgOTUsICAxMDMsCi0gICAgICAgODksICAgOTAsICAgNzUs
ICAgNzYsICAgOTYsICAgOTgsICAxMjEsICAgOTcsICAxMDQsICAgOTksCisgICAgICAgNTksICAg
NTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksCisgICAg
ICAgNTksICAgNTksICAgNTYsICAgNTYsICAgNTYsICAgNTksICAgNTksICAgNTksICAgNTksICAg
NTksCisgICAgICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTks
ICAgNTksICAgNTksCisgICAgICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAg
NTksICAgNTksICAgNTksICAgNTksCisgICAgICAgNTYsICAgNTYsICAgNTYsICAgNTYsICAgNjEs
ICAgNjIsICAgNjMsICAgNjYsICAgNjgsICAgNzAsCisgICAgICAgNzAsICAgNzAsICAgNzAsICAg
NzAsICAgNzAsICAgNzAsICAgODQsICAgODUsICAgNzksICAxNTAsCisgICAgICAxMjMsICAgNjks
ICAgNjcsICAgODcsICAxMjQsICAgNjQsICAgNzIsICAxNTEsICAgNzMsICAgNzMsCisgICAgICAg
NzMsICAgNzMsICAgNzMsICAgNzMsICAgNzQsICAgODAsICAgODksICAgODEsICAgODIsICA3ODQs
CisgICAgICAgOTIsICAgODgsICAgOTMsICAxMjEsICAgOTUsICAgNzUsICAgOTQsICAxMDMsICAg
OTYsICAxMDQsCisgICAgICAgOTAsICAgOTEsICAgNzYsICAgNzcsICAgOTcsICAgOTksICAxMjIs
ICAgOTgsICAxMDUsICAxMDAsCiAKLSAgICAgIDExNCwgIDE4NiwgICA3NCwgIDExNSwgIDEwMCwg
IDEyNCwgIDExNiwgIDExNywgIDE1MSwgIDE2NywKLSAgICAgIDEwMSwgIDExOCwgIDE4NywgIDE2
OCwgIDExOSwgIDc4NCwgICA3NSwgIDEyNywgIDEyNSwgICA3NiwKLSAgICAgICA3MSwgIDEwNSwg
ICA3MywgICA3MywgICA3MywgICA3MywgICA3MywgICA3MywgICA3MywgIDEwNiwKLSAgICAgIDEx
MSwgIDEwNywgIDEyOCwgIDIwNiwgIDEwOCwgIDEyOSwgIDIxMSwgIDEzMSwgIDExMiwgICA3NCwK
LSAgICAgIDEwOSwgIDIwNywgIDIxMiwgIDc4NSwgIDEzMiwgIDEzMywgICA3NSwgIDEzOCwgIDEz
NCwgIDExMywKLSAgICAgIDEzOSwgIDIzNSwgIDIzNiwgIDE1MiwgIDEzNSwgIDEzNiwgICA3NCwg
IDEzNywgIDE0MCwgIDE0NiwKLSAgICAgIDE0MiwgIDE1NCwgIDE1NSwgIDE0NywgIDE0MywgIDE0
MSwgIDE1NywgIDE1OCwgIDE0NCwgIDIzNywKLSAgICAgICA3NSwgIDE0NSwgIDE0OCwgIDE1OSwg
IDgxOCwgIDI2NiwgIDI2NywgIDIzOCwgIDE1NCwgIDE1NSwKLSAgICAgIDE2MCwgIDc4NiwgIDE2
MCwgIDE1NywgIDE1OCwgIDE2MSwgIDE2MSwgIDE2MSwgIDE2MSwgIDE2MSwKLSAgICAgIDE2MSwg
IDE2MSwgIDE4OCwgIDIyNiwgIDE3NSwgIDI1MywgIDIxNCwgIDE1OSwgIDE3NiwgIDE3NywKKyAg
ICAgIDExNSwgIDE4NywgICA3NSwgIDExNiwgIDEwMSwgIDEyNSwgIDExNywgIDExOCwgIDE1Miwg
IDE2OCwKKyAgICAgIDEwMiwgIDExOSwgIDE4OCwgIDE2OSwgIDEyMCwgIDc4NSwgICA3NiwgIDEy
OCwgIDEyNiwgICA3NywKKyAgICAgICA3MiwgIDEwNiwgICA3NCwgICA3NCwgICA3NCwgICA3NCwg
ICA3NCwgICA3NCwgICA3NCwgIDEwNywKKyAgICAgIDExMiwgIDEwOCwgIDEyOSwgIDIwNywgIDEw
OSwgIDEzMCwgIDIxMiwgIDEzMiwgIDExMywgICA3NSwKKyAgICAgIDExMCwgIDIwOCwgIDIxMywg
IDc4NiwgIDEzMywgIDEzNCwgICA3NiwgIDEzOSwgIDEzNSwgIDExNCwKKyAgICAgIDE0MCwgIDIz
NiwgIDIzNywgIDE1MywgIDEzNiwgIDEzNywgICA3NSwgIDEzOCwgIDE0MSwgIDE0NywKKyAgICAg
IDE0MywgIDE1NSwgIDE1NiwgIDE0OCwgIDE0NCwgIDE0MiwgIDE1OCwgIDE1OSwgIDE0NSwgIDIz
OCwKKyAgICAgICA3NiwgIDE0NiwgIDE0OSwgIDE2MCwgIDgxOSwgIDI2NywgIDI2OCwgIDIzOSwg
IDE1NSwgIDE1NiwKKyAgICAgIDE2MSwgIDc4NywgIDE2MSwgIDE1OCwgIDE1OSwgIDE2MiwgIDE2
MiwgIDE2MiwgIDE2MiwgIDE2MiwKKyAgICAgIDE2MiwgIDE2MiwgIDE4OSwgIDIyNywgIDE3Niwg
IDI1NCwgIDIxNSwgIDE2MCwgIDE3NywgIDE3OCwKIAotICAgICAgODE4LCAgMjE5LCAgMjI4LCAg
MTk4LCAgNzg3LCAgMTg5LCAgMTk5LCAgMjAwLCAgMjI3LCAgMjE1LAotICAgICAgMjAxLCAgMjE2
LCAgMjAyLCAgMjM5LCAgMjQ0LCAgMjI5LCAgMjQ1LCAgMjIwLCAgMjIxLCAgMjUzLAotICAgICAg
MjQ4LCAgMjQwLCAgMjQ4LCAgMTU3LCAgMTU4LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5
LAotICAgICAgMjQ5LCAgMjQ5LCAgMjk3LCAgMjk4LCAgMjk5LCAgNzg4LCAgNzg5LCAgMjUwLCAg
NzkwLCAgMjUwLAotICAgICAgMTU3LCAgMTU4LCAgMjUxLCAgMjUxLCAgMjUxLCAgMjUxLCAgMjUx
LCAgMjUxLCAgMjUxLCAgMTYxLAotICAgICAgMTYxLCAgMTYxLCAgMTYxLCAgMTYxLCAgMTYxLCAg
MTYxLCAgMTYxLCAgMTYxLCAgMTYxLCAgMTYxLAotICAgICAgMTYxLCAgMTYxLCAgMTYxLCAgMjYw
LCAgMzExLCAgMzI5LCAgNzkxLCAgNzkyLCAgMzEyLCAgMzM2LAotICAgICAgMzM3LCAgMzM4LCAg
NzkzLCAgMzMwLCAgMjUyLCAgNzk0LCAgMjYxLCAgMjQ5LCAgMjQ5LCAgMjQ5LAotICAgICAgMjQ5
LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LCAgMjQ5LAot
ICAgICAgMjQ5LCAgMjUyLCAgMjUxLCAgMjUxLCAgMjUxLCAgMjUxLCAgMjUxLCAgMjUxLCAgMjUx
LCAgMzQ3LAorICAgICAgODE5LCAgMjIwLCAgMjI5LCAgMTk5LCAgNzg4LCAgMTkwLCAgMjAwLCAg
MjAxLCAgMjI4LCAgMjE2LAorICAgICAgMjAyLCAgMjE3LCAgMjAzLCAgMjQwLCAgMjQ1LCAgMjMw
LCAgMjQ2LCAgMjIxLCAgMjIyLCAgMjU0LAorICAgICAgMjQ5LCAgMjQxLCAgMjQ5LCAgMTU4LCAg
MTU5LCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLAorICAgICAgMjUwLCAgMjUwLCAgMjk4
LCAgMjk5LCAgMzAwLCAgNzg5LCAgNzkwLCAgMjUxLCAgNzkxLCAgMjUxLAorICAgICAgMTU4LCAg
MTU5LCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMTYyLAorICAg
ICAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAg
MTYyLAorICAgICAgMTYyLCAgMTYyLCAgMTYyLCAgMjYxLCAgMzEyLCAgMzMwLCAgNzkyLCAgNzkz
LCAgMzEzLCAgMzM3LAorICAgICAgMzM4LCAgMzM5LCAgNzk0LCAgMzMxLCAgMjUzLCAgNzk1LCAg
MjYyLCAgMjUwLCAgMjUwLCAgMjUwLAorICAgICAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUw
LCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLAorICAgICAgMjUwLCAgMjUzLCAgMjUyLCAg
MjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMzQ4LAogCi0gICAgICAzNDgsICAz
NDksICAxNTUsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsCi0gICAg
ICAzNTksICAzNjAsICAzNjEsICAzNjcsICAzNjgsICAzNjksICAzNzEsICAzNzIsICAzNzMsICAx
NTUsCi0gICAgICA3OTUsICAxNTgsICAzODIsICAzODMsICAzODQsICA0MjAsICA0MjEsICA0MjIs
ICA0NDAsICA0NDEsCi0gICAgICA0NDIsICA0NTAsICA0NTEsICA0NTIsICA0NTMsICA0NTQsICA0
NTUsICA3OTYsICAxNTgsICA3OTcsCi0gICAgICA3OTgsICA0NDMsICA0NDQsICA0NTYsICA0NTcs
ICA0NTgsICA0OTcsICA0OTgsICA0OTksICA1MjMsCi0gICAgICA1MjQsICA1MjUsICA3OTksICA4
MDAsICA1NDUsICA1NDcsICA1NjIsICA1NjMsICA1NjQsICA1MDAsCi0gICAgICA1MDEsICA2MzUs
ICA1MjYsICA1MjcsICA1NDYsICA1NDgsICA1OTMsICA1OTQsICA1OTUsICA1NjUsCi0gICAgICA1
NjYsICA2MzYsICA1NjcsICA2MTMsICA2MTQsICA2MTUsICA2NjUsICA4MDEsICA4MDIsICA1OTYs
Ci0gICAgICA1OTcsICA2MzcsICA4MDMsICA2NjYsICA4MDQsICA2NjcsICA2MTYsICA2MTcsICA2
MzgsICA2ODUsCi0gICAgICA2MzksICA2NDAsICA4MDUsICA4MDYsICA4MDcsICA4MDgsICA2ODYs
ICA4MDksICA2ODcsICA4MTAsCisgICAgICAzNDksICAzNTAsICAxNTYsICAyNTIsICAyNTIsICAy
NTIsICAyNTIsICAyNTIsICAyNTIsICAyNTIsCisgICAgICAzNjAsICAzNjEsICAzNjIsICAzNjgs
ICAzNjksICAzNzAsICAzNzIsICAzNzMsICAzNzQsICAxNTYsCisgICAgICA3OTYsICAxNTksICAz
ODMsICAzODQsICAzODUsICA0MjEsICA0MjIsICA0MjMsICA0NDEsICA0NDIsCisgICAgICA0NDMs
ICA0NTEsICA0NTIsICA0NTMsICA0NTQsICA0NTUsICA0NTYsICA3OTcsICAxNTksICA3OTgsCisg
ICAgICA3OTksICA0NDQsICA0NDUsICA0NTcsICA0NTgsICA0NTksICA0OTgsICA0OTksICA1MDAs
ICA1MjQsCisgICAgICA1MjUsICA1MjYsICA4MDAsICA4MDEsICA1NDYsICA1NDgsICA1NjMsICA1
NjQsICA1NjUsICA1MDEsCisgICAgICA1MDIsICA2MzYsICA1MjcsICA1MjgsICA1NDcsICA1NDks
ICA1OTQsICA1OTUsICA1OTYsICA1NjYsCisgICAgICA1NjcsICA2MzcsICA1NjgsICA2MTQsICA2
MTUsICA2MTYsICA2NjYsICA4MDIsICA4MDMsICA1OTcsCisgICAgICA1OTgsICA2MzgsICA4MDQs
ICA2NjcsICA4MDUsICA2NjgsICA2MTcsICA2MTgsICA2MzksICA2ODYsCisgICAgICA2NDAsICA2
NDEsICA4MDYsICA4MDcsICA4MDgsICA4MDksICA2ODcsICA4MTAsICA2ODgsICA4MTEsCiAKLSAg
ICAgIDgxMSwgIDgxMiwgIDgxMywgIDgxNCwgIDgxNSwgIDgxNiwgIDgxNywgICA4NSwgICA4NSwg
ICA4NSwKLSAgICAgIDE1MywgIDE1MywgIDE1MywgICA2OSwgIDE1NiwgIDE2MiwgIDE2MiwgIDc4
MiwgIDc4MSwgIDc4MCwKLSAgICAgIDc3OSwgIDc3OCwgIDc3NywgIDc3NiwgIDc3NSwgIDc3NCwg
IDc3MywgIDc3MiwgIDc3MSwgIDc3MCwKLSAgICAgIDc2OSwgIDc2OCwgIDc2NywgIDc2NiwgIDc2
NSwgIDc2NCwgIDc2MywgIDc2MiwgIDc2MSwgIDc2MCwKLSAgICAgIDc1OSwgIDc1OCwgIDc1Nywg
IDc1NiwgIDc1NSwgIDc1NCwgIDc1MywgIDc1MiwgIDc1MSwgIDc1MCwKLSAgICAgIDc0OSwgIDc0
OCwgIDc0NywgIDc0NiwgIDc0NSwgIDc0NCwgIDc0MywgIDc0MiwgIDc0MSwgIDc0MCwKLSAgICAg
IDczOSwgIDczOCwgIDczNywgIDczNiwgIDczNSwgIDczNCwgIDczMywgIDczMiwgIDczMSwgIDcz
MCwKLSAgICAgIDcyOSwgIDcyOCwgIDcyNywgIDcyNiwgIDcyNSwgIDcyNCwgIDcyMywgIDcyMiwg
IDcyMSwgIDcyMCwKLSAgICAgIDcxOSwgIDcxOCwgIDcxNywgIDcxNiwgIDcxNSwgIDcxNCwgIDcx
MywgIDcxMiwgIDcxMSwgIDcxMCwKLSAgICAgIDcwOSwgIDcwOCwgIDcwNywgIDcwNiwgIDcwNSwg
IDcwNCwgIDcwMywgIDcwMiwgIDcwMSwgIDcwMCwKKyAgICAgIDgxMiwgIDgxMywgIDgxNCwgIDgx
NSwgIDgxNiwgIDgxNywgIDgxOCwgICA4NiwgICA4NiwgICA4NiwKKyAgICAgIDE1NCwgIDE1NCwg
IDE1NCwgICA3MCwgIDE1NywgIDE2MywgIDE2MywgIDc4MywgIDc4MiwgIDc4MSwKKyAgICAgIDc4
MCwgIDc3OSwgIDc3OCwgIDc3NywgIDc3NiwgIDc3NSwgIDc3NCwgIDc3MywgIDc3MiwgIDc3MSwK
KyAgICAgIDc3MCwgIDc2OSwgIDc2OCwgIDc2NywgIDc2NiwgIDc2NSwgIDc2NCwgIDc2MywgIDc2
MiwgIDc2MSwKKyAgICAgIDc2MCwgIDc1OSwgIDc1OCwgIDc1NywgIDc1NiwgIDc1NSwgIDc1NCwg
IDc1MywgIDc1MiwgIDc1MSwKKyAgICAgIDc1MCwgIDc0OSwgIDc0OCwgIDc0NywgIDc0NiwgIDc0
NSwgIDc0NCwgIDc0MywgIDc0MiwgIDc0MSwKKyAgICAgIDc0MCwgIDczOSwgIDczOCwgIDczNywg
IDczNiwgIDczNSwgIDczNCwgIDczMywgIDczMiwgIDczMSwKKyAgICAgIDczMCwgIDcyOSwgIDcy
OCwgIDcyNywgIDcyNiwgIDcyNSwgIDcyNCwgIDcyMywgIDcyMiwgIDcyMSwKKyAgICAgIDcyMCwg
IDcxOSwgIDcxOCwgIDcxNywgIDcxNiwgIDcxNSwgIDcxNCwgIDcxMywgIDcxMiwgIDcxMSwKKyAg
ICAgIDcxMCwgIDcwOSwgIDcwOCwgIDcwNywgIDcwNiwgIDcwNSwgIDcwNCwgIDcwMywgIDcwMiwg
IDcwMSwKIAotICAgICAgNjk5LCAgNjk4LCAgNjk3LCAgNjk2LCAgNjk1LCAgNjk0LCAgNjkzLCAg
NjkyLCAgNjkxLCAgNjkwLAotICAgICAgNjg5LCAgNjg4LCAgNjg0LCAgNjgzLCAgNjgyLCAgNjgx
LCAgNjgwLCAgNjc5LCAgNjc4LCAgNjc3LAotICAgICAgNjc2LCAgNjc1LCAgNjc0LCAgNjczLCAg
NjcyLCAgNjcxLCAgNjcwLCAgNjY5LCAgNjY4LCAgNjY0LAotICAgICAgNjYzLCAgNjYyLCAgNjYx
LCAgNjYwLCAgNjU5LCAgNjU4LCAgNjU3LCAgNjU2LCAgNjU1LCAgNjU0LAotICAgICAgNjUzLCAg
NjUyLCAgNjUxLCAgNjUwLCAgNjQ5LCAgNjQ4LCAgNjQ3LCAgNjQ2LCAgNjQ1LCAgNjQ0LAotICAg
ICAgNjQzLCAgNjQyLCAgNjQxLCAgNjM0LCAgNjMzLCAgNjMyLCAgNjMxLCAgNjMwLCAgNjI5LCAg
NjI4LAotICAgICAgNjI3LCAgNjI2LCAgNjI1LCAgNjI0LCAgNjIzLCAgNjIyLCAgNjIxLCAgNjIw
LCAgNjE5LCAgNjE4LAotICAgICAgNjEyLCAgNjExLCAgNjEwLCAgNjA5LCAgNjA4LCAgNjA3LCAg
NjA2LCAgNjA1LCAgNjA0LCAgNjAzLAotICAgICAgNjAyLCAgNjAxLCAgNjAwLCAgNTk5LCAgNTk4
LCAgNTkyLCAgNTkxLCAgNTkwLCAgNTg5LCAgNTg4LAotICAgICAgNTg3LCAgNTg2LCAgNTg1LCAg
NTg0LCAgNTgzLCAgNTgyLCAgNTgxLCAgNTgwLCAgNTc5LCAgNTc4LAorICAgICAgNzAwLCAgNjk5
LCAgNjk4LCAgNjk3LCAgNjk2LCAgNjk1LCAgNjk0LCAgNjkzLCAgNjkyLCAgNjkxLAorICAgICAg
NjkwLCAgNjg5LCAgNjg1LCAgNjg0LCAgNjgzLCAgNjgyLCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4
LAorICAgICAgNjc3LCAgNjc2LCAgNjc1LCAgNjc0LCAgNjczLCAgNjcyLCAgNjcxLCAgNjcwLCAg
NjY5LCAgNjY1LAorICAgICAgNjY0LCAgNjYzLCAgNjYyLCAgNjYxLCAgNjYwLCAgNjU5LCAgNjU4
LCAgNjU3LCAgNjU2LCAgNjU1LAorICAgICAgNjU0LCAgNjUzLCAgNjUyLCAgNjUxLCAgNjUwLCAg
NjQ5LCAgNjQ4LCAgNjQ3LCAgNjQ2LCAgNjQ1LAorICAgICAgNjQ0LCAgNjQzLCAgNjQyLCAgNjM1
LCAgNjM0LCAgNjMzLCAgNjMyLCAgNjMxLCAgNjMwLCAgNjI5LAorICAgICAgNjI4LCAgNjI3LCAg
NjI2LCAgNjI1LCAgNjI0LCAgNjIzLCAgNjIyLCAgNjIxLCAgNjIwLCAgNjE5LAorICAgICAgNjEz
LCAgNjEyLCAgNjExLCAgNjEwLCAgNjA5LCAgNjA4LCAgNjA3LCAgNjA2LCAgNjA1LCAgNjA0LAor
ICAgICAgNjAzLCAgNjAyLCAgNjAxLCAgNjAwLCAgNTk5LCAgNTkzLCAgNTkyLCAgNTkxLCAgNTkw
LCAgNTg5LAorICAgICAgNTg4LCAgNTg3LCAgNTg2LCAgNTg1LCAgNTg0LCAgNTgzLCAgNTgyLCAg
NTgxLCAgNTgwLCAgNTc5LAogCi0gICAgICA1NzcsICA1NzYsICA1NzUsICA1NzQsICA1NzMsICA1
NzIsICA1NzEsICA1NzAsICA1NjksICA1NjgsCi0gICAgICA1NjEsICA1NjAsICA1NTksICA1NTgs
ICA1NTcsICA1NTYsICA1NTUsICA1NTQsICA1NTMsICA1NTIsCi0gICAgICA1NTEsICA1NTAsICA1
NDksICA1NDQsICA1NDMsICA1NDIsICA1NDEsICA1NDAsICA1MzksICA1MzgsCi0gICAgICA1Mzcs
ICA1MzYsICA1MzUsICA1MzQsICA1MzMsICA1MzIsICA1MzEsICA1MzAsICA1MjksICA1MjgsCi0g
ICAgICA1MjIsICA1MjEsICA1MjAsICA1MTksICA1MTgsICA1MTcsICA1MTYsICA1MTUsICA1MTQs
ICA1MTMsCi0gICAgICA1MTIsICA1MTEsICA1MTAsICA1MDksICA1MDgsICA1MDcsICA1MDYsICA1
MDUsICA1MDQsICA1MDMsCi0gICAgICA1MDIsICA0OTYsICA0OTUsICA0OTQsICA0OTMsICA0OTIs
ICA0OTEsICA0OTAsICA0ODksICA0ODgsCi0gICAgICA0ODcsICA0ODYsICA0ODUsICA0ODQsICA0
ODMsICA0ODIsICA0ODEsICA0ODAsICA0NzksICA0NzgsCi0gICAgICA0NzcsICA0NzYsICA0NzUs
ICA0NzQsICA0NzMsICA0NzIsICA0NzEsICA0NzAsICA0NjksICA0NjgsCi0gICAgICA0NjcsICA0
NjYsICA0NjUsICA0NjQsICA0NjMsICA0NjIsICA0NjEsICA0NjAsICA0NTksICA0NDksCisgICAg
ICA1NzgsICA1NzcsICA1NzYsICA1NzUsICA1NzQsICA1NzMsICA1NzIsICA1NzEsICA1NzAsICA1
NjksCisgICAgICA1NjIsICA1NjEsICA1NjAsICA1NTksICA1NTgsICA1NTcsICA1NTYsICA1NTUs
ICA1NTQsICA1NTMsCisgICAgICA1NTIsICA1NTEsICA1NTAsICA1NDUsICA1NDQsICA1NDMsICA1
NDIsICA1NDEsICA1NDAsICA1MzksCisgICAgICA1MzgsICA1MzcsICA1MzYsICA1MzUsICA1MzQs
ICA1MzMsICA1MzIsICA1MzEsICA1MzAsICA1MjksCisgICAgICA1MjMsICA1MjIsICA1MjEsICA1
MjAsICA1MTksICA1MTgsICA1MTcsICA1MTYsICA1MTUsICA1MTQsCisgICAgICA1MTMsICA1MTIs
ICA1MTEsICA1MTAsICA1MDksICA1MDgsICA1MDcsICA1MDYsICA1MDUsICA1MDQsCisgICAgICA1
MDMsICA0OTcsICA0OTYsICA0OTUsICA0OTQsICA0OTMsICA0OTIsICA0OTEsICA0OTAsICA0ODks
CisgICAgICA0ODgsICA0ODcsICA0ODYsICA0ODUsICA0ODQsICA0ODMsICA0ODIsICA0ODEsICA0
ODAsICA0NzksCisgICAgICA0NzgsICA0NzcsICA0NzYsICA0NzUsICA0NzQsICA0NzMsICA0NzIs
ICA0NzEsICA0NzAsICA0NjksCisgICAgICA0NjgsICA0NjcsICA0NjYsICA0NjUsICA0NjQsICA0
NjMsICA0NjIsICA0NjEsICA0NjAsICA0NTAsCiAKLSAgICAgIDQ0OCwgIDQ0NywgIDQ0NiwgIDQ0
NSwgIDQzOSwgIDQzOCwgIDQzNywgIDQzNiwgIDQzNSwgIDQzNCwKLSAgICAgIDQzMywgIDQzMiwg
IDQzMSwgIDQzMCwgIDQyOSwgIDQyOCwgIDQyNywgIDQyNiwgIDQyNSwgIDQyNCwKLSAgICAgIDQy
MywgIDQxOSwgIDQxOCwgIDQxNywgIDQxNiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwK
LSAgICAgIDQxMCwgIDQwOSwgIDQwOCwgIDQwNywgIDQwNiwgIDQwNSwgIDQwNCwgIDQwMywgIDQw
MiwgIDQwMSwKLSAgICAgIDQwMCwgIDM5OSwgIDM5OCwgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwg
IDM5MywgIDM5MiwgIDM5MSwKLSAgICAgIDM5MCwgIDM4OSwgIDM4OCwgIDM4NywgIDM4NiwgIDM4
NSwgIDM4MSwgIDM4MCwgIDM3OSwgIDM3OCwKLSAgICAgIDM3NywgIDM3NiwgIDM3NSwgIDM3NCwg
IDM3MCwgIDM2NiwgIDM2NSwgIDM2NCwgIDM2MywgIDM2MiwKLSAgICAgIDM1OCwgIDM1NywgIDM1
NiwgIDM1NSwgIDM1NCwgIDM1MywgIDM1MiwgIDM1MSwgIDM1MCwgIDM0NiwKLSAgICAgIDM0NSwg
IDM0NCwgIDM0MywgIDM0MiwgIDM0MSwgIDM0MCwgIDMzOSwgIDMzNSwgIDMzNCwgIDMzMywKLSAg
ICAgIDMzMiwgIDMzMSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwg
IDMyMSwKKyAgICAgIDQ0OSwgIDQ0OCwgIDQ0NywgIDQ0NiwgIDQ0MCwgIDQzOSwgIDQzOCwgIDQz
NywgIDQzNiwgIDQzNSwKKyAgICAgIDQzNCwgIDQzMywgIDQzMiwgIDQzMSwgIDQzMCwgIDQyOSwg
IDQyOCwgIDQyNywgIDQyNiwgIDQyNSwKKyAgICAgIDQyNCwgIDQyMCwgIDQxOSwgIDQxOCwgIDQx
NywgIDQxNiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwKKyAgICAgIDQxMSwgIDQxMCwgIDQwOSwg
IDQwOCwgIDQwNywgIDQwNiwgIDQwNSwgIDQwNCwgIDQwMywgIDQwMiwKKyAgICAgIDQwMSwgIDQw
MCwgIDM5OSwgIDM5OCwgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwKKyAgICAg
IDM5MSwgIDM5MCwgIDM4OSwgIDM4OCwgIDM4NywgIDM4NiwgIDM4MiwgIDM4MSwgIDM4MCwgIDM3
OSwKKyAgICAgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3MSwgIDM2NywgIDM2NiwgIDM2NSwg
IDM2NCwgIDM2MywKKyAgICAgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwgIDM1
MywgIDM1MiwgIDM1MSwgIDM0NywKKyAgICAgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0Miwg
IDM0MSwgIDM0MCwgIDMzNiwgIDMzNSwgIDMzNCwKKyAgICAgIDMzMywgIDMzMiwgIDMyOSwgIDMy
OCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwKIAotICAgICAgMzIwLCAgMzE5
LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLCAgMzEwLCAgMzA5LAotICAgICAg
MzA4LCAgMzA3LCAgMzA2LCAgMzA1LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAxLCAgMzAwLCAgMjk2
LAotICAgICAgMjk1LCAgMjk0LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg4LCAg
Mjg3LCAgMjg2LAotICAgICAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLCAgMjgwLCAgMjc5
LCAgMjc4LCAgMjc3LCAgMjc2LAotICAgICAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLCAgMjcxLCAg
MjcwLCAgMjY5LCAgMjY4LCAgMjY1LCAgMjY0LAotICAgICAgMjYzLCAgMjYyLCAgMjU5LCAgMjU4
LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjU0LCAgMjQ3LCAgMjQ2LAotICAgICAgMjQzLCAgMjQyLCAg
MjQxLCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLCAgMjI1LCAgMjI0LAotICAgICAgMjIz
LCAgMjIyLCAgMjE4LCAgMjE3LCAgMjEzLCAgMjEwLCAgMjA5LCAgMjA4LCAgMjA1LCAgMjA0LAot
ICAgICAgMjAzLCAgMTk3LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTkw
LCAgMTg1LAotICAgICAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc4LCAg
MTc0LCAgMTczLCAgMTcyLAorICAgICAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2
LCAgMzE1LCAgMzE0LCAgMzExLCAgMzEwLAorICAgICAgMzA5LCAgMzA4LCAgMzA3LCAgMzA2LCAg
MzA1LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAxLCAgMjk3LAorICAgICAgMjk2LCAgMjk1LCAgMjk0
LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg4LCAgMjg3LAorICAgICAgMjg2LCAg
Mjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLCAgMjgwLCAgMjc5LCAgMjc4LCAgMjc3LAorICAg
ICAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLCAgMjcxLCAgMjcwLCAgMjY5LCAgMjY2LCAg
MjY1LAorICAgICAgMjY0LCAgMjYzLCAgMjYwLCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1
LCAgMjQ4LCAgMjQ3LAorICAgICAgMjQ0LCAgMjQzLCAgMjQyLCAgMjM1LCAgMjM0LCAgMjMzLCAg
MjMyLCAgMjMxLCAgMjI2LCAgMjI1LAorICAgICAgMjI0LCAgMjIzLCAgMjE5LCAgMjE4LCAgMjE0
LCAgMjExLCAgMjEwLCAgMjA5LCAgMjA2LCAgMjA1LAorICAgICAgMjA0LCAgMTk4LCAgMTk3LCAg
MTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTg2LAorICAgICAgMTg1LCAgMTg0
LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc1LCAgMTc0LCAgMTczLAogCi0gICAg
ICAxNzEsICAxNzAsICAxNjksICAxNjYsICAxNjUsICAxNjQsICAxNjMsICAxMzAsICAxMjYsICAx
MTAsCi0gICAgICAgODIsICAgNzcsICAgNzAsICAgNjQsICAgNTksICA4MTgsICAgIDUsICA4MTgs
ICA4MTgsICA4MTgsCi0gICAgICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4
MTgsICA4MTgsICA4MTgsICA4MTgsCi0gICAgICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgs
ICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsCi0gICAgICA4MTgsICA4MTgsICA4MTgsICA4
MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsCi0gICAgICA4MTgsICA4MTgs
ICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsCi0gICAgICA4
MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgs
Ci0gICAgICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4
MTgsICA4MTgsCi0gICAgICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgsICA4MTgs
ICA4MTgsICA4MTgKKyAgICAgIDE3MiwgIDE3MSwgIDE3MCwgIDE2NywgIDE2NiwgIDE2NSwgIDE2
NCwgIDEzMSwgIDEyNywgIDExMSwKKyAgICAgICA4MywgICA3OCwgICA3MSwgICA2NSwgICA2MCwg
IDgxOSwgICAgNSwgIDgxOSwgIDgxOSwgIDgxOSwKKyAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKKyAgICAgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKKyAgICAgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwK
KyAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwKKyAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwKKyAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKKyAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOQogICAgIH0gOwogCiBzdGF0aWMgeXljb25zdCBm
bGV4X2ludDE2X3QgeXlfY2hrWzEwOTBdID0KQEAgLTg4MCwxMTEgKzg4MCwxMTEgQEAKICAgICAg
ICAgMywgICAgMywgICAgMywgICAgMywgICAxMCwgICAxMCwgICAxMSwgICAxNSwgICAxNywgICAx
OCwKICAgICAgICAxOCwgICAxOCwgICAxOCwgICAxOCwgICAxOCwgICAxOCwgICAyNiwgICAyNiwg
ICAyNCwgICA1MSwKICAgICAgICA0MiwgICAxNywgICAxNSwgICAzMSwgICA0MiwgICAxMSwgICAy
MCwgICA1MSwgICAyMCwgICAyMCwKLSAgICAgICAyMCwgICAyMCwgICAyMCwgICAyMCwgICAyMCwg
ICAyNCwgICAzMiwgICAyNCwgICAyNCwgIDc2NSwKKyAgICAgICAyMCwgICAyMCwgICAyMCwgICAy
MCwgICAyMCwgICAyNCwgICAzMiwgICAyNCwgICAyNCwgIDc2NiwKICAgICAgICAzMywgICAzMSwg
ICAzMywgICA0MSwgICAzNCwgICAyMCwgICAzMywgICAzNiwgICAzNCwgICAzNiwKICAgICAgICAz
MiwgICAzMiwgICAyMCwgICAyMCwgICAzNCwgICAzNSwgICA0MSwgICAzNCwgICAzNiwgICAzNSwK
IAotICAgICAgIDQwLCAgMTA2LCAgIDIwLCAgIDQwLCAgIDM1LCAgIDQzLCAgIDQwLCAgIDQwLCAg
IDUzLCAgIDkwLAotICAgICAgIDM1LCAgIDQwLCAgMTA2LCAgIDkwLCAgIDQwLCAgNzY2LCAgIDIw
LCAgIDQ1LCAgIDQzLCAgIDIwLAorICAgICAgIDQwLCAgMTA3LCAgIDIwLCAgIDQwLCAgIDM1LCAg
IDQzLCAgIDQwLCAgIDQwLCAgIDUzLCAgIDkxLAorICAgICAgIDM1LCAgIDQwLCAgMTA3LCAgIDkx
LCAgIDQwLCAgNzY3LCAgIDIwLCAgIDQ1LCAgIDQzLCAgIDIwLAogICAgICAgIDIxLCAgIDM3LCAg
IDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDM3LAotICAgICAgIDM5
LCAgIDM3LCAgIDQ1LCAgMTIxLCAgIDM3LCAgIDQ1LCAgMTI1LCAgIDQ3LCAgIDM5LCAgIDIxLAot
ICAgICAgIDM3LCAgMTIxLCAgMTI1LCAgNzY3LCAgIDQ3LCAgIDQ3LCAgIDIxLCAgIDQ4LCAgIDQ3
LCAgIDM5LAotICAgICAgIDQ4LCAgMTQyLCAgMTQyLCAgIDUzLCAgIDQ3LCAgIDQ3LCAgIDIxLCAg
IDQ3LCAgIDQ4LCAgIDUwLAotICAgICAgIDQ5LCAgIDY5LCAgIDY5LCAgIDUwLCAgIDQ5LCAgIDQ4
LCAgIDcxLCAgIDcxLCAgIDQ5LCAgMTQzLAotICAgICAgIDIxLCAgIDQ5LCAgIDUwLCAgIDcyLCAg
IDcyLCAgMTc3LCAgMTc3LCAgMTQzLCAgIDY5LCAgIDY5LAotICAgICAgIDc0LCAgNzY4LCAgIDc0
LCAgIDcxLCAgIDcxLCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LCAgIDc0LAotICAgICAgIDc0LCAg
IDc0LCAgMTA3LCAgMTM1LCAgIDk3LCAgMTYyLCAgMTI3LCAgIDcyLCAgIDk3LCAgIDk3LAorICAg
ICAgIDM5LCAgIDM3LCAgIDQ1LCAgMTIyLCAgIDM3LCAgIDQ1LCAgMTI2LCAgIDQ3LCAgIDM5LCAg
IDIxLAorICAgICAgIDM3LCAgMTIyLCAgMTI2LCAgNzY4LCAgIDQ3LCAgIDQ3LCAgIDIxLCAgIDQ4
LCAgIDQ3LCAgIDM5LAorICAgICAgIDQ4LCAgMTQzLCAgMTQzLCAgIDUzLCAgIDQ3LCAgIDQ3LCAg
IDIxLCAgIDQ3LCAgIDQ4LCAgIDUwLAorICAgICAgIDQ5LCAgIDcwLCAgIDcwLCAgIDUwLCAgIDQ5
LCAgIDQ4LCAgIDcyLCAgIDcyLCAgIDQ5LCAgMTQ0LAorICAgICAgIDIxLCAgIDQ5LCAgIDUwLCAg
IDczLCAgIDczLCAgMTc4LCAgMTc4LCAgMTQ0LCAgIDcwLCAgIDcwLAorICAgICAgIDc1LCAgNzY5
LCAgIDc1LCAgIDcyLCAgIDcyLCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LAorICAgICAg
IDc1LCAgIDc1LCAgMTA4LCAgMTM2LCAgIDk4LCAgMTYzLCAgMTI4LCAgIDczLCAgIDk4LCAgIDk4
LAogCi0gICAgICAgNzIsICAxMzAsICAxMzYsICAxMTcsICA3NjksICAxMDcsICAxMTcsICAxMTcs
ICAxMzUsICAxMjcsCi0gICAgICAxMTcsICAxMjcsICAxMTcsICAxNDQsICAxNDgsICAxMzYsICAx
NDgsICAxMzAsICAxMzAsICAxNjIsCi0gICAgICAxNTQsICAxNDQsICAxNTQsICAxNTYsICAxNTYs
ICAxNTQsICAxNTQsICAxNTQsICAxNTQsICAxNTQsCi0gICAgICAxNTQsICAxNTQsICAyMDgsICAy
MDgsICAyMDgsICA3NzIsICA3NzMsICAxNTcsICA3NzYsICAxNTcsCi0gICAgICAxNTYsICAxNTYs
ICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAxNTcsICAxNjAsCi0gICAgICAx
NjAsICAxNjAsICAxNjAsICAxNjAsICAxNjAsICAxNjAsICAxNjEsICAxNjEsICAxNjEsICAxNjEs
Ci0gICAgICAxNjEsICAxNjEsICAxNjEsICAxNzIsICAyMjAsICAyMzcsICA3NzcsICA3NzksICAy
MjAsICAyNDMsCi0gICAgICAyNDMsICAyNDMsICA3ODAsICAyMzcsICAxNjEsICA3ODEsICAxNzIs
ICAyNDgsICAyNDgsICAyNDgsCi0gICAgICAyNDgsICAyNDgsICAyNDgsICAyNDgsICAyNDksICAy
NDksICAyNDksICAyNDksICAyNDksICAyNDksCi0gICAgICAyNDksICAxNjEsICAyNTAsICAyNTAs
ICAyNTAsICAyNTAsICAyNTAsICAyNTAsICAyNTAsICAyNTksCisgICAgICAgNzMsICAxMzEsICAx
MzcsICAxMTgsICA3NzAsICAxMDgsICAxMTgsICAxMTgsICAxMzYsICAxMjgsCisgICAgICAxMTgs
ICAxMjgsICAxMTgsICAxNDUsICAxNDksICAxMzcsICAxNDksICAxMzEsICAxMzEsICAxNjMsCisg
ICAgICAxNTUsICAxNDUsICAxNTUsICAxNTcsICAxNTcsICAxNTUsICAxNTUsICAxNTUsICAxNTUs
ICAxNTUsCisgICAgICAxNTUsICAxNTUsICAyMDksICAyMDksICAyMDksICA3NzMsICA3NzQsICAx
NTgsICA3NzcsICAxNTgsCisgICAgICAxNTcsICAxNTcsICAxNTgsICAxNTgsICAxNTgsICAxNTgs
ICAxNTgsICAxNTgsICAxNTgsICAxNjEsCisgICAgICAxNjEsICAxNjEsICAxNjEsICAxNjEsICAx
NjEsICAxNjEsICAxNjIsICAxNjIsICAxNjIsICAxNjIsCisgICAgICAxNjIsICAxNjIsICAxNjIs
ICAxNzMsICAyMjEsICAyMzgsICA3NzgsICA3ODAsICAyMjEsICAyNDQsCisgICAgICAyNDQsICAy
NDQsICA3ODEsICAyMzgsICAxNjIsICA3ODIsICAxNzMsICAyNDksICAyNDksICAyNDksCisgICAg
ICAyNDksICAyNDksICAyNDksICAyNDksICAyNTAsICAyNTAsICAyNTAsICAyNTAsICAyNTAsICAy
NTAsCisgICAgICAyNTAsICAxNjIsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEs
ICAyNTEsICAyNjAsCiAKLSAgICAgIDI1OSwgIDI1OSwgIDI0OSwgIDI1MSwgIDI1MSwgIDI1MSwg
IDI1MSwgIDI1MSwgIDI1MSwgIDI1MSwKLSAgICAgIDI3MSwgIDI3MSwgIDI3MSwgIDI4MCwgIDI4
MCwgIDI4MCwgIDI4NCwgIDI4NCwgIDI4NCwgIDI0OSwKLSAgICAgIDc4MywgIDI1MSwgIDI5Mywg
IDI5MywgIDI5MywgIDMzNCwgIDMzNCwgIDMzNCwgIDM3NSwgIDM3NSwKLSAgICAgIDM3NSwgIDM4
NiwgIDM4NiwgIDM4NiwgIDM4NywgIDM4NywgIDM4NywgIDc4NCwgIDI1MSwgIDc4NywKLSAgICAg
IDc4OCwgIDM3NSwgIDM3NSwgIDM4OCwgIDM4OCwgIDM4OCwgIDQzOSwgIDQzOSwgIDQzOSwgIDQ4
MiwKLSAgICAgIDQ4MiwgIDQ4MiwgIDc4OSwgIDc5MCwgIDUwMiwgIDUwMywgIDUxOSwgIDUxOSwg
IDUxOSwgIDQzOSwKLSAgICAgIDQzOSwgIDYwMiwgIDQ4MiwgIDQ4MiwgIDUwMiwgIDUwMywgIDU1
MywgIDU1MywgIDU1MywgIDUxOSwKLSAgICAgIDUxOSwgIDYwMiwgIDUxOSwgIDU3NiwgIDU3Niwg
IDU3NiwgIDYzMCwgIDc5MSwgIDc5MiwgIDU1MywKLSAgICAgIDU1MywgIDYwMywgIDc5NCwgIDYz
MCwgIDc5NSwgIDYzMCwgIDU3NiwgIDU3NiwgIDYwMywgIDY1MSwKLSAgICAgIDYwMywgIDYwMywg
IDc5NiwgIDc5NywgIDc5OCwgIDc5OSwgIDY1MSwgIDgwMSwgIDY1MSwgIDgwMiwKKyAgICAgIDI2
MCwgIDI2MCwgIDI1MCwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwK
KyAgICAgIDI3MiwgIDI3MiwgIDI3MiwgIDI4MSwgIDI4MSwgIDI4MSwgIDI4NSwgIDI4NSwgIDI4
NSwgIDI1MCwKKyAgICAgIDc4NCwgIDI1MiwgIDI5NCwgIDI5NCwgIDI5NCwgIDMzNSwgIDMzNSwg
IDMzNSwgIDM3NiwgIDM3NiwKKyAgICAgIDM3NiwgIDM4NywgIDM4NywgIDM4NywgIDM4OCwgIDM4
OCwgIDM4OCwgIDc4NSwgIDI1MiwgIDc4OCwKKyAgICAgIDc4OSwgIDM3NiwgIDM3NiwgIDM4OSwg
IDM4OSwgIDM4OSwgIDQ0MCwgIDQ0MCwgIDQ0MCwgIDQ4MywKKyAgICAgIDQ4MywgIDQ4MywgIDc5
MCwgIDc5MSwgIDUwMywgIDUwNCwgIDUyMCwgIDUyMCwgIDUyMCwgIDQ0MCwKKyAgICAgIDQ0MCwg
IDYwMywgIDQ4MywgIDQ4MywgIDUwMywgIDUwNCwgIDU1NCwgIDU1NCwgIDU1NCwgIDUyMCwKKyAg
ICAgIDUyMCwgIDYwMywgIDUyMCwgIDU3NywgIDU3NywgIDU3NywgIDYzMSwgIDc5MiwgIDc5Mywg
IDU1NCwKKyAgICAgIDU1NCwgIDYwNCwgIDc5NSwgIDYzMSwgIDc5NiwgIDYzMSwgIDU3NywgIDU3
NywgIDYwNCwgIDY1MiwKKyAgICAgIDYwNCwgIDYwNCwgIDc5NywgIDc5OCwgIDc5OSwgIDgwMCwg
IDY1MiwgIDgwMiwgIDY1MiwgIDgwMywKIAotICAgICAgODAzLCAgODA1LCAgODA5LCAgODEwLCAg
ODExLCAgODEzLCAgODE0LCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODIwLCAgODIwLCAgODIw
LCAgODIxLCAgODIyLCAgODIzLCAgODIzLCAgNzY0LCAgNzYzLCAgNzYyLAotICAgICAgNzYxLCAg
NzYwLCAgNzU5LCAgNzU2LCAgNzU1LCAgNzU0LCAgNzUzLCAgNzUyLCAgNzUxLCAgNzUwLAotICAg
ICAgNzQ5LCAgNzQ4LCAgNzQ3LCAgNzQ0LCAgNzQzLCAgNzQwLCAgNzM5LCAgNzM4LCAgNzM3LCAg
NzM2LAotICAgICAgNzM1LCAgNzMzLCAgNzMyLCAgNzMxLCAgNzMwLCAgNzI5LCAgNzI3LCAgNzI1
LCAgNzIxLCAgNzIwLAotICAgICAgNzE5LCAgNzE4LCAgNzE3LCAgNzE1LCAgNzE0LCAgNzEzLCAg
NzEyLCAgNzExLCAgNzEwLCAgNzA5LAotICAgICAgNzA4LCAgNzA3LCAgNzA2LCAgNzA1LCAgNzA0
LCAgNzAzLCAgNzAxLCAgNzAwLCAgNjk5LCAgNjk4LAotICAgICAgNjk3LCAgNjk2LCAgNjk1LCAg
Njk0LCAgNjkzLCAgNjkxLCAgNjkwLCAgNjg5LCAgNjg4LCAgNjg3LAotICAgICAgNjg2LCAgNjg1
LCAgNjg0LCAgNjgzLCAgNjgyLCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4LCAgNjc3LAotICAgICAg
Njc2LCAgNjc1LCAgNjc0LCAgNjczLCAgNjcyLCAgNjcxLCAgNjcwLCAgNjY5LCAgNjY4LCAgNjY3
LAorICAgICAgODA0LCAgODA2LCAgODEwLCAgODExLCAgODEyLCAgODE0LCAgODE1LCAgODIwLCAg
ODIwLCAgODIwLAorICAgICAgODIxLCAgODIxLCAgODIxLCAgODIyLCAgODIzLCAgODI0LCAgODI0
LCAgNzY1LCAgNzY0LCAgNzYzLAorICAgICAgNzYyLCAgNzYxLCAgNzYwLCAgNzU3LCAgNzU2LCAg
NzU1LCAgNzU0LCAgNzUzLCAgNzUyLCAgNzUxLAorICAgICAgNzUwLCAgNzQ5LCAgNzQ4LCAgNzQ1
LCAgNzQ0LCAgNzQxLCAgNzQwLCAgNzM5LCAgNzM4LCAgNzM3LAorICAgICAgNzM2LCAgNzM0LCAg
NzMzLCAgNzMyLCAgNzMxLCAgNzMwLCAgNzI4LCAgNzI2LCAgNzIyLCAgNzIxLAorICAgICAgNzIw
LCAgNzE5LCAgNzE4LCAgNzE2LCAgNzE1LCAgNzE0LCAgNzEzLCAgNzEyLCAgNzExLCAgNzEwLAor
ICAgICAgNzA5LCAgNzA4LCAgNzA3LCAgNzA2LCAgNzA1LCAgNzA0LCAgNzAyLCAgNzAxLCAgNzAw
LCAgNjk5LAorICAgICAgNjk4LCAgNjk3LCAgNjk2LCAgNjk1LCAgNjk0LCAgNjkyLCAgNjkxLCAg
NjkwLCAgNjg5LCAgNjg4LAorICAgICAgNjg3LCAgNjg2LCAgNjg1LCAgNjg0LCAgNjgzLCAgNjgy
LCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4LAorICAgICAgNjc3LCAgNjc2LCAgNjc1LCAgNjc0LCAg
NjczLCAgNjcyLCAgNjcxLCAgNjcwLCAgNjY5LCAgNjY4LAogCi0gICAgICA2NjYsICA2NjUsICA2
NjQsICA2NjIsICA2NjEsICA2NjAsICA2NTksICA2NTgsICA2NTcsICA2NTYsCi0gICAgICA2NTQs
ICA2NTMsICA2NTAsICA2NDgsICA2NDcsICA2NDYsICA2NDQsICA2NDMsICA2NDIsICA2NDEsCi0g
ICAgICA2NDAsICA2MzksICA2MzgsICA2MzcsICA2MzYsICA2MzUsICA2MzQsICA2MzMsICA2MzIs
ICA2MjksCi0gICAgICA2MjgsICA2MjcsICA2MjYsICA2MjUsICA2MjQsICA2MjIsICA2MjEsICA2
MjAsICA2MTksICA2MTcsCi0gICAgICA2MTYsICA2MTUsICA2MTQsICA2MTMsICA2MTIsICA2MTEs
ICA2MTAsICA2MDksICA2MDgsICA2MDcsCi0gICAgICA2MDYsICA2MDUsICA2MDQsICA1OTksICA1
OTcsICA1OTYsICA1OTUsICA1OTQsICA1OTMsICA1ODksCi0gICAgICA1ODgsICA1ODcsICA1ODYs
ICA1ODUsICA1ODQsICA1ODMsICA1ODIsICA1ODEsICA1NzksICA1NzgsCi0gICAgICA1NzQsICA1
NzMsICA1NzEsICA1NzAsICA1NjgsICA1NjcsICA1NjYsICA1NjUsICA1NjQsICA1NjMsCi0gICAg
ICA1NjIsICA1NTgsICA1NTcsICA1NTYsICA1NTQsICA1NTIsICA1NTEsICA1NTAsICA1NDksICA1
NDgsCi0gICAgICA1NDcsICA1NDYsICA1NDUsICA1NDQsICA1NDMsICA1NDEsICA1NDAsICA1MzUs
ICA1MzQsICA1MzMsCisgICAgICA2NjcsICA2NjYsICA2NjUsICA2NjMsICA2NjIsICA2NjEsICA2
NjAsICA2NTksICA2NTgsICA2NTcsCisgICAgICA2NTUsICA2NTQsICA2NTEsICA2NDksICA2NDgs
ICA2NDcsICA2NDUsICA2NDQsICA2NDMsICA2NDIsCisgICAgICA2NDEsICA2NDAsICA2MzksICA2
MzgsICA2MzcsICA2MzYsICA2MzUsICA2MzQsICA2MzMsICA2MzAsCisgICAgICA2MjksICA2Mjgs
ICA2MjcsICA2MjYsICA2MjUsICA2MjMsICA2MjIsICA2MjEsICA2MjAsICA2MTgsCisgICAgICA2
MTcsICA2MTYsICA2MTUsICA2MTQsICA2MTMsICA2MTIsICA2MTEsICA2MTAsICA2MDksICA2MDgs
CisgICAgICA2MDcsICA2MDYsICA2MDUsICA2MDAsICA1OTgsICA1OTcsICA1OTYsICA1OTUsICA1
OTQsICA1OTAsCisgICAgICA1ODksICA1ODgsICA1ODcsICA1ODYsICA1ODUsICA1ODQsICA1ODMs
ICA1ODIsICA1ODAsICA1NzksCisgICAgICA1NzUsICA1NzQsICA1NzIsICA1NzEsICA1NjksICA1
NjgsICA1NjcsICA1NjYsICA1NjUsICA1NjQsCisgICAgICA1NjMsICA1NTksICA1NTgsICA1NTcs
ICA1NTUsICA1NTMsICA1NTIsICA1NTEsICA1NTAsICA1NDksCisgICAgICA1NDgsICA1NDcsICA1
NDYsICA1NDUsICA1NDQsICA1NDIsICA1NDEsICA1MzYsICA1MzUsICA1MzQsCiAKLSAgICAgIDUz
MiwgIDUzMCwgIDUyOSwgIDUyNywgIDUyNiwgIDUyNSwgIDUyNCwgIDUyMywgIDUyMSwgIDUyMCwK
LSAgICAgIDUxOCwgIDUxNywgIDUxNiwgIDUxNSwgIDUxNCwgIDUxMywgIDUxMiwgIDUxMSwgIDUw
OSwgIDUwOCwKLSAgICAgIDUwNywgIDUwNiwgIDUwNSwgIDUwMSwgIDUwMCwgIDQ5OSwgIDQ5OCwg
IDQ5NywgIDQ5NiwgIDQ5MywKLSAgICAgIDQ5MiwgIDQ5MSwgIDQ5MCwgIDQ4OSwgIDQ4OCwgIDQ4
NywgIDQ4NiwgIDQ4NSwgIDQ4NCwgIDQ4MywKLSAgICAgIDQ4MSwgIDQ4MCwgIDQ3NywgIDQ3Miwg
IDQ3MCwgIDQ2OSwgIDQ2OCwgIDQ2NiwgIDQ2NSwgIDQ2MiwKLSAgICAgIDQ2MSwgIDQ2MCwgIDQ1
OSwgIDQ0OCwgIDQ0NywgIDQ0NiwgIDQ0NCwgIDQ0MywgIDQ0MiwgIDQ0MSwKLSAgICAgIDQ0MCwg
IDQzNywgIDQzNSwgIDQzNCwgIDQzMywgIDQzMSwgIDQzMCwgIDQyOSwgIDQyOCwgIDQyNiwKLSAg
ICAgIDQyNCwgIDQyMywgIDQxOCwgIDQxNywgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwg
IDQxMCwKLSAgICAgIDQwOSwgIDQwOCwgIDQwNywgIDQwNiwgIDQwNSwgIDQwMywgIDQwMiwgIDQw
MSwgIDQwMCwgIDM5OSwKLSAgICAgIDM5OCwgIDM5NywgIDM5NSwgIDM5NCwgIDM5MywgIDM5Miwg
IDM5MSwgIDM5MCwgIDM4OSwgIDM4NSwKKyAgICAgIDUzMywgIDUzMSwgIDUzMCwgIDUyOCwgIDUy
NywgIDUyNiwgIDUyNSwgIDUyNCwgIDUyMiwgIDUyMSwKKyAgICAgIDUxOSwgIDUxOCwgIDUxNywg
IDUxNiwgIDUxNSwgIDUxNCwgIDUxMywgIDUxMiwgIDUxMCwgIDUwOSwKKyAgICAgIDUwOCwgIDUw
NywgIDUwNiwgIDUwMiwgIDUwMSwgIDUwMCwgIDQ5OSwgIDQ5OCwgIDQ5NywgIDQ5NCwKKyAgICAg
IDQ5MywgIDQ5MiwgIDQ5MSwgIDQ5MCwgIDQ4OSwgIDQ4OCwgIDQ4NywgIDQ4NiwgIDQ4NSwgIDQ4
NCwKKyAgICAgIDQ4MiwgIDQ4MSwgIDQ3OCwgIDQ3MywgIDQ3MSwgIDQ3MCwgIDQ2OSwgIDQ2Nywg
IDQ2NiwgIDQ2MywKKyAgICAgIDQ2MiwgIDQ2MSwgIDQ2MCwgIDQ0OSwgIDQ0OCwgIDQ0NywgIDQ0
NSwgIDQ0NCwgIDQ0MywgIDQ0MiwKKyAgICAgIDQ0MSwgIDQzOCwgIDQzNiwgIDQzNSwgIDQzNCwg
IDQzMiwgIDQzMSwgIDQzMCwgIDQyOSwgIDQyNywKKyAgICAgIDQyNSwgIDQyNCwgIDQxOSwgIDQx
OCwgIDQxNiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwKKyAgICAgIDQxMCwgIDQwOSwg
IDQwOCwgIDQwNywgIDQwNiwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwKKyAgICAgIDM5
OSwgIDM5OCwgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM5MSwgIDM5MCwgIDM4NiwK
IAotICAgICAgMzgxLCAgMzgwLCAgMzc5LCAgMzc2LCAgMzc0LCAgMzY0LCAgMzYyLCAgMzU4LCAg
MzU3LCAgMzU2LAotICAgICAgMzU1LCAgMzUzLCAgMzUyLCAgMzUwLCAgMzQ1LCAgMzQ0LCAgMzQz
LCAgMzQyLCAgMzQxLCAgMzQwLAotICAgICAgMzM1LCAgMzMzLCAgMzMyLCAgMzMxLCAgMzMwLCAg
MzI5LCAgMzI3LCAgMzI2LCAgMzIzLCAgMzIyLAotICAgICAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4
LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLCAgMzEyLAotICAgICAgMzExLCAgMzEwLCAg
MzA5LCAgMzA4LCAgMzA3LCAgMzA2LCAgMzA1LCAgMzA0LCAgMzAzLCAgMzAyLAotICAgICAgMzAx
LCAgMzAwLCAgMjk5LCAgMjk4LCAgMjk3LCAgMjk0LCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LAot
ICAgICAgMjg4LCAgMjg3LCAgMjg2LCAgMjg1LCAgMjgzLCAgMjc5LCAgMjc3LCAgMjc2LCAgMjc1
LCAgMjc0LAotICAgICAgMjcwLCAgMjY5LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAg
MjYzLCAgMjYyLCAgMjU4LAotICAgICAgMjU2LCAgMjU1LCAgMjU0LCAgMjQ3LCAgMjQ2LCAgMjQ1
LCAgMjQ0LCAgMjQyLCAgMjQxLCAgMjQwLAotICAgICAgMjM5LCAgMjM4LCAgMjM2LCAgMjM1LCAg
MjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLCAgMjI5LAorICAgICAgMzgyLCAgMzgxLCAgMzgw
LCAgMzc3LCAgMzc1LCAgMzY1LCAgMzYzLCAgMzU5LCAgMzU4LCAgMzU3LAorICAgICAgMzU2LCAg
MzU0LCAgMzUzLCAgMzUxLCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLCAgMzQyLCAgMzQxLAorICAg
ICAgMzM2LCAgMzM0LCAgMzMzLCAgMzMyLCAgMzMxLCAgMzMwLCAgMzI4LCAgMzI3LCAgMzI0LCAg
MzIzLAorICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1
LCAgMzE0LCAgMzEzLAorICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA3LCAg
MzA2LCAgMzA1LCAgMzA0LCAgMzAzLAorICAgICAgMzAyLCAgMzAxLCAgMzAwLCAgMjk5LCAgMjk4
LCAgMjk1LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLAorICAgICAgMjg5LCAgMjg4LCAgMjg3LCAg
Mjg2LCAgMjg0LCAgMjgwLCAgMjc4LCAgMjc3LCAgMjc2LCAgMjc1LAorICAgICAgMjcxLCAgMjcw
LCAgMjY5LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjYzLCAgMjU5LAorICAgICAg
MjU3LCAgMjU2LCAgMjU1LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQzLCAgMjQyLCAgMjQx
LAorICAgICAgMjQwLCAgMjM5LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAg
MjMxLCAgMjMwLAogCi0gICAgICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAy
MjIsICAyMjEsICAyMTksICAyMTgsCi0gICAgICAyMTcsICAyMTYsICAyMTUsICAyMTQsICAyMTMs
ICAyMTIsICAyMTEsICAyMTAsICAyMDksICAyMDcsCi0gICAgICAyMDYsICAyMDUsICAyMDQsICAy
MDMsICAyMDIsICAyMDEsICAyMDAsICAxOTksICAxOTgsICAxOTcsCi0gICAgICAxOTYsICAxOTUs
ICAxOTQsICAxOTMsICAxOTIsICAxOTEsICAxODksICAxODgsICAxODcsICAxODYsCi0gICAgICAx
ODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzgsICAxNzYsICAxNzUs
Ci0gICAgICAxNzQsICAxNzMsICAxNzEsICAxNzAsICAxNjksICAxNjgsICAxNjcsICAxNjUsICAx
NTAsICAxNDksCi0gICAgICAxNDcsICAxNDYsICAxNDUsICAxNDEsICAxNDAsICAxMzksICAxMzgs
ICAxMzcsICAxMzQsICAxMzMsCi0gICAgICAxMzIsICAxMzEsICAxMjksICAxMjgsICAxMjYsICAx
MjQsICAxMjMsICAxMjIsICAxMjAsICAxMTksCi0gICAgICAxMTgsICAxMTYsICAxMTUsICAxMTMs
ICAxMTIsICAxMTEsICAxMTAsICAxMDksICAxMDgsICAxMDUsCi0gICAgICAxMDQsICAxMDMsICAx
MDIsICAxMDEsICAxMDAsICAgOTksICAgOTgsICAgOTYsICAgOTUsICAgOTQsCisgICAgICAyMjks
ICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAyMjIsICAyMjAsICAyMTksCisg
ICAgICAyMTgsICAyMTcsICAyMTYsICAyMTUsICAyMTQsICAyMTMsICAyMTIsICAyMTEsICAyMTAs
ICAyMDgsCisgICAgICAyMDcsICAyMDYsICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAy
MDAsICAxOTksICAxOTgsCisgICAgICAxOTcsICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIs
ICAxOTAsICAxODksICAxODgsICAxODcsCisgICAgICAxODYsICAxODUsICAxODQsICAxODMsICAx
ODIsICAxODEsICAxODAsICAxNzksICAxNzcsICAxNzYsCisgICAgICAxNzUsICAxNzQsICAxNzIs
ICAxNzEsICAxNzAsICAxNjksICAxNjgsICAxNjYsICAxNTEsICAxNTAsCisgICAgICAxNDgsICAx
NDcsICAxNDYsICAxNDIsICAxNDEsICAxNDAsICAxMzksICAxMzgsICAxMzUsICAxMzQsCisgICAg
ICAxMzMsICAxMzIsICAxMzAsICAxMjksICAxMjcsICAxMjUsICAxMjQsICAxMjMsICAxMjEsICAx
MjAsCisgICAgICAxMTksICAxMTcsICAxMTYsICAxMTQsICAxMTMsICAxMTIsICAxMTEsICAxMTAs
ICAxMDksICAxMDYsCisgICAgICAxMDUsICAxMDQsICAxMDMsICAxMDIsICAxMDEsICAxMDAsICAg
OTksICAgOTcsICAgOTYsICAgOTUsCiAKLSAgICAgICA5MywgICA5MiwgICA5MSwgICA4OSwgICA4
OCwgICA4NCwgICA4MCwgICA0NiwgICA0NCwgICAzOCwKLSAgICAgICAyNSwgICAyMiwgICAxOSwg
ICAxNCwgICAgOSwgICAgNSwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwKLSAgICAgIDgxOCwgIDgx
OCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwKLSAgICAg
IDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgx
OCwKLSAgICAgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwg
IDgxOCwgIDgxOCwKLSAgICAgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgx
OCwgIDgxOCwgIDgxOCwgIDgxOCwKLSAgICAgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwg
IDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwKLSAgICAgIDgxOCwgIDgxOCwgIDgxOCwgIDgx
OCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwKLSAgICAgIDgxOCwgIDgxOCwg
IDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOCwgIDgxOAorICAgICAgIDk0LCAgIDkz
LCAgIDkyLCAgIDkwLCAgIDg5LCAgIDg1LCAgIDgxLCAgIDQ2LCAgIDQ0LCAgIDM4LAorICAgICAg
IDI1LCAgIDIyLCAgIDE5LCAgIDE0LCAgICA5LCAgICA1LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LAorICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LAorICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LAorICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAorICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAorICAgICAgODE5LCAgODE5LCAg
ODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAorICAgICAgODE5
LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LAor
ICAgICAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5LCAgODE5
CiAgICAgfSA7CiAKIC8qIFRhYmxlIG9mIGJvb2xlYW5zLCB0cnVlIGlmIHJ1bGUgY291bGQgbWF0
Y2ggZW9sLiAqLwotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNo
X2VvbFsyNDBdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9ydWxlX2Nhbl9tYXRj
aF9lb2xbMjQxXSA9CiAgICAgeyAgIDAsCiAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTk5Nyw4ICs5OTcsOCBAQAog
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIAotICAgICAgICB9OworICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIAor
ICAgIDAsICAgICB9OwogCiAvKiBUaGUgaW50ZW50IGJlaGluZCB0aGlzIGRlZmluaXRpb24gaXMg
dGhhdCBpdCdsbCBjYXRjaAogICogYW55IHVzZXMgb2YgUkVKRUNUIHdoaWNoIGZsZXggbWlzc2Vk
LgpAQCAtMTA1NSw3ICsxMDU1LDcgQEAKIHN0YXRpYyBpbnQgRVMyX2tleXdvcmRfRVMzX3Jlc2Vy
dmVkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbik7CiBzdGF0aWMgaW50IEVTMl9p
ZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pOwogc3Rh
dGljIGludCB1aW50X2NvbnN0YW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQpOwotc3RhdGljIGlu
dCBpbnRfY29uc3RhbnQoeXlzY2FuX3QgeXlzY2FubmVyKTsKK3N0YXRpYyBpbnQgaW50X2NvbnN0
YW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGludCBmbG9hdF9jb25zdGFudCh5
eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBmbG9hdHN1ZmZpeF9jaGVjayhUUGFyc2VD
b250ZXh0KiBjb250ZXh0KTsKIApAQCAtMTM1MCwxMyArMTM1MCwxMyBAQAogCQkJd2hpbGUgKCB5
eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3Rh
dGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJl
bnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4MTkgKQorCQkJCWlmICgg
eXlfY3VycmVudF9zdGF0ZSA+PSA4MjAgKQogCQkJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQg
aW50KSB5eV9jXTsKIAkJCQl9CiAJCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2Vb
eXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCSsreXlfY3A7CiAJ
CQl9Ci0JCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSA4MTggKTsKKwkJd2hpbGUgKCB5eV9j
dXJyZW50X3N0YXRlICE9IDgxOSApOwogCQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdf
Y3BvczsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGU7
CiAKQEAgLTE3NTksNyArMTc1OSw3IEBACiBjYXNlIDEzNDoKIFlZX1JVTEVfU0VUVVAKIHsgCi0g
ICAgaWYgKGNvbnRleHQtPnNoYWRlclZlcnNpb24gPCAzMDApIHsKKyAgICBpZiAoY29udGV4dC0+
Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzAwKSB7CiAJCXl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bv
b2xUU3RyaW5nKHl5dGV4dCk7IAogCSAgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOyAK
IAl9CkBAIC0xNzcwLDcgKzE3NzAsNyBAQAogY2FzZSAxMzU6CiBZWV9SVUxFX1NFVFVQCiB7Ci0g
ICAgaWYgKGNvbnRleHQtPnNoYWRlclZlcnNpb24gPj0gMzAwKQorICAgIGlmIChjb250ZXh0LT5n
ZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwKQogICAgIHsKICAgICAgICAgeXlsdmFsLT5sZXguc3Ry
aW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsKICAgICAgICAgcmV0dXJuIGNoZWNrX3R5cGUo
eXlzY2FubmVyKTsKQEAgLTE4MzMsMTUgKzE4MzMsMTUgQEAKIAlZWV9CUkVBSwogY2FzZSAxNzg6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBpbnRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQoreyBy
ZXR1cm4gaW50X2NvbnN0YW50KGNvbnRleHQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgMTc5OgogWVlf
UlVMRV9TRVRVUAoteyByZXR1cm4gaW50X2NvbnN0YW50KHl5c2Nhbm5lcik7IH0KK3sgcmV0dXJu
IGludF9jb25zdGFudChjb250ZXh0KTsgfQogCVlZX0JSRUFLCiBjYXNlIDE4MDoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuIGludF9jb25zdGFudCh5eXNjYW5uZXIpOyB9Cit7IHJldHVybiBpbnRf
Y29uc3RhbnQoY29udGV4dCk7IH0KIAlZWV9CUkVBSwogY2FzZSAxODE6CiBZWV9SVUxFX1NFVFVQ
CkBAIC0yMDcyLDE5ICsyMDcyLDI3IEBACiB7fQogCVlZX0JSRUFLCiBjYXNlIDIzNzoKLS8qIHJ1
bGUgMjM3IGNhbiBtYXRjaCBlb2wgKi8KIFlZX1JVTEVfU0VUVVAKK3sKKyAgICB5eWV4dHJhLT5l
cnJvcigqeXlsbG9jLCAiSWxsZWdhbCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0IiwgeXl0
ZXh0LCAiIik7CisgICAgeXlleHRyYS0+cmVjb3ZlcigpOworICAgIHJldHVybiAwOworfQorCVlZ
X0JSRUFLCitjYXNlIDIzODoKKy8qIHJ1bGUgMjM4IGNhbiBtYXRjaCBlb2wgKi8KK1lZX1JVTEVf
U0VUVVAKIHsgfQogCVlZX0JSRUFLCiBjYXNlIFlZX1NUQVRFX0VPRihJTklUSUFMKToKIGNhc2Ug
WVlfU1RBVEVfRU9GKEZJRUxEUyk6CiB7IHl5dGVybWluYXRlKCk7IH0KIAlZWV9CUkVBSwotY2Fz
ZSAyMzg6CitjYXNlIDIzOToKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIDA7IH0KIAlZWV9CUkVB
SwotY2FzZSAyMzk6CitjYXNlIDI0MDoKIFlZX1JVTEVfU0VUVVAKIEVDSE87CiAJWVlfQlJFQUsK
QEAgLTIzODEsNyArMjM4OSw3IEBACiAJCXdoaWxlICggeXlfY2hrW3l5X2Jhc2VbeXlfY3VycmVu
dF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKIAkJCXsKIAkJCXl5X2N1cnJl
bnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCQlpZiAoIHl5X2N1
cnJlbnRfc3RhdGUgPj0gODE5ICkKKwkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4MjAgKQog
CQkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQkJfQogCQl5eV9jdXJy
ZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQg
aW50KSB5eV9jXTsKQEAgLTI0MTAsMTEgKzI0MTgsMTEgQEAKIAl3aGlsZSAoIHl5X2Noa1t5eV9i
YXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCXsK
IAkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9jdXJyZW50X3N0YXRlXTsKLQkJ
aWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDgxOSApCisJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+
PSA4MjAgKQogCQkJeXlfYyA9IHl5X21ldGFbKHVuc2lnbmVkIGludCkgeXlfY107CiAJCX0KIAl5
eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5z
aWduZWQgaW50KSB5eV9jXTsKLQl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA4MTgp
OworCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDgxOSk7CiAKIAkodm9pZCl5eWc7
CiAJcmV0dXJuIHl5X2lzX2phbSA/IDAgOiB5eV9jdXJyZW50X3N0YXRlOwpAQCAtMzIzNCw3ICsz
MjQyLDcgQEAKIAogeXlfc2l6ZV90IHN0cmluZ19pbnB1dChjaGFyKiBidWYsIHl5X3NpemVfdCBt
YXhfc2l6ZSwgeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgcHA6OlRva2VuIHRva2VuOwotICAg
IHl5Z2V0X2V4dHJhKHl5c2Nhbm5lciktPnByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKKyAgICB5
eWdldF9leHRyYSh5eXNjYW5uZXIpLT5nZXRQcmVwcm9jZXNzb3IoKS5sZXgoJnRva2VuKTsKICAg
ICB5eV9zaXplX3QgbGVuID0gdG9rZW4udHlwZSA9PSBwcDo6VG9rZW46OkxBU1QgPyAwIDogdG9r
ZW4udGV4dC5zaXplKCk7CiAgICAgaWYgKGxlbiA8IG1heF9zaXplKQogICAgICAgICBtZW1jcHko
YnVmLCB0b2tlbi50ZXh0LmNfc3RyKCksIGxlbik7CkBAIC0zMjUyLDcgKzMyNjAsNyBAQAogICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKICAg
ICAKICAgICBpbnQgdG9rZW4gPSBJREVOVElGSUVSOwotICAgIFRTeW1ib2wqIHN5bWJvbCA9IHl5
ZXh0cmEtPnN5bWJvbFRhYmxlLmZpbmQoeXl0ZXh0LCB5eWV4dHJhLT5zaGFkZXJWZXJzaW9uKTsK
KyAgICBUU3ltYm9sKiBzeW1ib2wgPSB5eWV4dHJhLT5zeW1ib2xUYWJsZS5maW5kKHl5dGV4dCwg
eXlleHRyYS0+Z2V0U2hhZGVyVmVyc2lvbigpKTsKICAgICBpZiAoc3ltYm9sICYmIHN5bWJvbC0+
aXNWYXJpYWJsZSgpKSB7CiAgICAgICAgIFRWYXJpYWJsZSogdmFyaWFibGUgPSBzdGF0aWNfY2Fz
dDxUVmFyaWFibGUqPihzeW1ib2wpOwogICAgICAgICBpZiAodmFyaWFibGUtPmlzVXNlclR5cGUo
KSkgewpAQCAtMzI3Myw5ICszMjgxLDkgQEAKIAogaW50IEVTMl9yZXNlcnZlZF9FUzNfa2V5d29y
ZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCiB7Ci0gICAgeXlzY2FuX3QgeXlz
Y2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5zY2FubmVyOworICAgIHl5c2Nhbl90IHl5c2Nh
bm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+Z2V0U2Nhbm5lcigpOwogCi0gICAgaWYgKGNvbnRl
eHQtPnNoYWRlclZlcnNpb24gPCAzMDApCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNp
b24oKSA8IDMwMCkKICAgICB7CiAgICAgICAgIHJldHVybiByZXNlcnZlZF93b3JkKHl5c2Nhbm5l
cik7CiAgICAgfQpAQCAtMzI4NSw5ICszMjkzLDkgQEAKIAogaW50IEVTMl9rZXl3b3JkX0VTM19y
ZXNlcnZlZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCiB7Ci0gICAgeXlzY2Fu
X3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5zY2FubmVyOworICAgIHl5c2Nhbl90
IHl5c2Nhbm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+Z2V0U2Nhbm5lcigpOwogCi0gICAgaWYg
KGNvbnRleHQtPnNoYWRlclZlcnNpb24gPj0gMzAwKQorICAgIGlmIChjb250ZXh0LT5nZXRTaGFk
ZXJWZXJzaW9uKCkgPj0gMzAwKQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlc2VydmVkX3dvcmQo
eXlzY2FubmVyKTsKICAgICB9CkBAIC0zMjk3LDExICszMzA1LDExIEBACiAKIGludCBFUzJfaWRl
bnRfRVMzX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKQogewotICAg
IHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5u
ZXI7Ci0gICAgeXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5zY2FubmVy
OworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQt
PmdldFNjYW5uZXIoKTsKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRl
eHQtPmdldFNjYW5uZXIoKTsKIAogICAgIC8vIG5vdCBhIHJlc2VydmVkIHdvcmQgaW4gR0xTTCBF
UyAxLjAwLCBzbyBjb3VsZCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIvdHlwZSBuYW1lCi0gICAg
aWYgKGNvbnRleHQtPnNoYWRlclZlcnNpb24gPCAzMDApCisgICAgaWYgKGNvbnRleHQtPmdldFNo
YWRlclZlcnNpb24oKSA8IDMwMCkKICAgICB7CiAgICAgICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9
IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7CiAgICAgICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nh
bm5lcik7CkBAIC0zMzEyLDM0ICszMzIwLDM1IEBACiAKIGludCB1aW50X2NvbnN0YW50KFRQYXJz
ZUNvbnRleHQgKmNvbnRleHQpCiB7Ci0gICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0
IHl5Z3V0c190KikgY29udGV4dC0+c2Nhbm5lcjsKLSAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAo
eXlzY2FuX3QpIGNvbnRleHQtPnNjYW5uZXI7CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAo
c3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+Z2V0U2Nhbm5lcigpOwogCi0gICAgaWYgKGNvbnRl
eHQtPnNoYWRlclZlcnNpb24gPCAzMDApCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNp
b24oKSA8IDMwMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmVycm9yKCp5eWxsb2MsICJVbnNp
Z25lZCBpbnRlZ2VycyBhcmUgdW5zdXBwb3J0ZWQgcHJpb3IgdG8gR0xTTCBFUyAzLjAwIiwgeXl0
ZXh0LCAiIik7CiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgaWYgKCFhdG9pX2NsYW1wKHl5dGV4dCwgJih5eWx2YWwtPmxleC5pKSkp
Ci0gICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5
eXRleHQsICIiKTsKKyAgICBpZiAoIWF0b2lfY2xhbXAoeXl0ZXh0LCAmKHl5bHZhbC0+bGV4LnUp
KSkKKyAgICAgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5
eXRleHQsICIiKTsKIAogICAgIHJldHVybiBVSU5UQ09OU1RBTlQ7CiB9CiAKIGludCBmbG9hdHN1
ZmZpeF9jaGVjayhUUGFyc2VDb250ZXh0KiBjb250ZXh0KQogewotICAgIHN0cnVjdCB5eWd1dHNf
dCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPnNjYW5uZXI7CisgICAgc3RydWN0
IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+Z2V0U2Nhbm5lcigp
OwogCi0gICAgaWYgKGNvbnRleHQtPnNoYWRlclZlcnNpb24gPCAzMDApCisgICAgaWYgKGNvbnRl
eHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmVy
cm9yKCp5eWxsb2MsICJGbG9hdGluZy1wb2ludCBzdWZmaXggdW5zdXBwb3J0ZWQgcHJpb3IgdG8g
R0xTTCBFUyAzLjAwIiwgeXl0ZXh0KTsKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoIWF0b2ZfY2xhbXAoeXl0ZXh0LCAmKHl5
bHZhbC0+bGV4LmYpKSkKKyAgICBzdGQ6OnN0cmluZyB0ZXh0ID0geXl0ZXh0OworICAgIHRleHQu
cmVzaXplKHRleHQuc2l6ZSgpIC0gMSk7CisgICAgaWYgKCFzdHJ0b2ZfY2xhbXAodGV4dCwgJih5
eWx2YWwtPmxleC5mKSkpCiAgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkZsb2F0
IG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CiAKICAgICByZXR1cm4oRkxPQVRDT05TVEFOVCk7CkBA
IC0zMzUwLDE4ICszMzU5LDI1IEBACiAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogfQogCi1pbnQg
aW50X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgewotICAgIHN0cnVjdCB5eWd1dHNfdCog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKK2ludCBpbnRfY29uc3RhbnQoVFBh
cnNlQ29udGV4dCAqY29udGV4dCkgeworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKIAotICAgIGlmICghYXRvaV9jbGFt
cCh5eXRleHQsICYoeXlsdmFsLT5sZXguaSkpKQotICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5
eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgdW5zaWduZWQgaW50
IHU7CisgICAgaWYgKCFhdG9pX2NsYW1wKHl5dGV4dCwgJnUpKQorICAgIHsKKyAgICAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA+PSAzMDApCisgICAgICAgICAgICB5eWV4dHJh
LT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJJbnRlZ2VyIG92
ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgfQorICAgIHl5bHZhbC0+bGV4LmkgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHUpOwogICAgIHJldHVybiBJTlRDT05TVEFOVDsKIH0KIAogaW50IGZsb2F0X2Nv
bnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIGlmICghYXRvZl9jbGFtcCh5eXRl
eHQsICYoeXlsdmFsLT5sZXguZikpKQorICAgIGlmICghc3RydG9mX2NsYW1wKHl5dGV4dCwgJih5
eWx2YWwtPmxleC5mKSkpCiAgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkZsb2F0
IG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CiAgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7CiB9CkBA
IC0zMzcxLDE1ICszMzg3LDE1IEBACiAgICAgaWYgKHl5bGV4X2luaXRfZXh0cmEoY29udGV4dCwm
c2Nhbm5lcikpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgY29udGV4dC0+c2Nhbm5lciA9IHNj
YW5uZXI7CisgICAgY29udGV4dC0+c2V0U2Nhbm5lcihzY2FubmVyKTsKICAgICByZXR1cm4gMDsK
IH0KIAogaW50IGdsc2xhbmdfZmluYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewotICAg
IHl5c2Nhbl90IHNjYW5uZXIgPSBjb250ZXh0LT5zY2FubmVyOworICAgIHl5c2Nhbl90IHNjYW5u
ZXIgPSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CiAgICAgaWYgKHNjYW5uZXIgPT0gTlVMTCkgcmV0
dXJuIDA7CiAgICAgCi0gICAgY29udGV4dC0+c2Nhbm5lciA9IE5VTEw7CisgICAgY29udGV4dC0+
c2V0U2Nhbm5lcihOVUxMKTsKICAgICB5eWxleF9kZXN0cm95KHNjYW5uZXIpOwogCiAgICAgcmV0
dXJuIDA7CkBAIC0zMzg3LDI0ICszNDAzLDI2IEBACiAKIGludCBnbHNsYW5nX3NjYW4oc2l6ZV90
IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLAog
ICAgICAgICAgICAgICAgICBUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7Ci0gICAgeXlyZXN0YXJ0
KE5VTEwsY29udGV4dC0+c2Nhbm5lcik7Ci0gICAgeXlzZXRfY29sdW1uKDAsY29udGV4dC0+c2Nh
bm5lcik7Ci0gICAgeXlzZXRfbGluZW5vKDEsY29udGV4dC0+c2Nhbm5lcik7CisgICAgeXlyZXN0
YXJ0KE5VTEwsY29udGV4dC0+Z2V0U2Nhbm5lcigpKTsKKyAgICB5eXNldF9jb2x1bW4oMCxjb250
ZXh0LT5nZXRTY2FubmVyKCkpOworICAgIHl5c2V0X2xpbmVubygxLGNvbnRleHQtPmdldFNjYW5u
ZXIoKSk7CiAKICAgICAvLyBJbml0aWFsaXplIHByZXByb2Nlc3Nvci4KLSAgICBpZiAoIWNvbnRl
eHQtPnByZXByb2Nlc3Nvci5pbml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpCisgICAgcHA6OlBy
ZXByb2Nlc3NvciAqcHJlcHJvY2Vzc29yID0gJmNvbnRleHQtPmdldFByZXByb2Nlc3NvcigpOwor
CisgICAgaWYgKCFwcmVwcm9jZXNzb3ItPmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIDE7CiAKICAgICAvLyBEZWZpbmUgZXh0ZW5zaW9uIG1hY3Jvcy4KICAgICBj
b25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gY29udGV4dC0+ZXh0ZW5zaW9u
QmVoYXZpb3IoKTsKICAgICBmb3IgKFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IGV4dEJlaGF2aW9yLmJlZ2luKCk7CiAgICAgICAgICBpdGVyICE9IGV4dEJlaGF2aW9y
LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgY29udGV4dC0+cHJlcHJvY2Vzc29yLnByZWRlZmlu
ZU1hY3JvKGl0ZXItPmZpcnN0LmNfc3RyKCksIDEpOworICAgICAgICBwcmVwcm9jZXNzb3ItPnBy
ZWRlZmluZU1hY3JvKGl0ZXItPmZpcnN0LmNfc3RyKCksIDEpOwogICAgIH0KLSAgICBpZiAoY29u
dGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdoKQotICAgICAgICBjb250ZXh0LT5wcmVwcm9jZXNz
b3IucHJlZGVmaW5lTWFjcm8oIkdMX0ZSQUdNRU5UX1BSRUNJU0lPTl9ISUdIIiwgMSk7CisgICAg
aWYgKGNvbnRleHQtPmdldEZyYWdtZW50UHJlY2lzaW9uSGlnaCgpKQorICAgICAgICBwcmVwcm9j
ZXNzb3ItPnByZWRlZmluZU1hY3JvKCJHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSCIsIDEpOwog
Ci0gICAgY29udGV4dC0+cHJlcHJvY2Vzc29yLnNldE1heFRva2VuU2l6ZShHZXRHbG9iYWxNYXhU
b2tlblNpemUoY29udGV4dC0+c2hhZGVyU3BlYykpOworICAgIHByZXByb2Nlc3Nvci0+c2V0TWF4
VG9rZW5TaXplKEdldEdsb2JhbE1heFRva2VuU2l6ZShjb250ZXh0LT5nZXRTaGFkZXJTcGVjKCkp
KTsKIAogICAgIHJldHVybiAwOwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNw
cAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDMuMC40LiAgKi8KIAot
LyogQXBwbGUgTm90ZTogRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIEFwcGxlIGVsZWN0cyB0
byBkaXN0cmlidXRlIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEJTRCBsaWNlbnNl
LiAqLyAKKy8qIEFwcGxlIE5vdGU6IEZvciB0aGUgYXZvaWRhbmNlIG9mIGRvdWJ0LCBBcHBsZSBl
bGVjdHMgdG8gZGlzdHJpYnV0ZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBCU0Qg
bGljZW5zZS4gKi8KIAogLyogQmlzb24gaW1wbGVtZW50YXRpb24gZm9yIFlhY2MtbGlrZSBwYXJz
ZXJzIGluIEMKIApAQCAtODksNiArODksNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJhbmdsZV9n
bC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaCIKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
QEAgLTM1NiwyOCArMzU3LDI4IEBACiAgIH0gd2hpbGUgKDApCiAKICNkZWZpbmUgVkVSVEVYX09O
TFkoUywgTCkgeyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlICE9IEdMX1ZFUlRFWF9T
SEFERVIpIHsgIFwKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpICE9IEdMX1ZFUlRF
WF9TSEFERVIpIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4g
dmVydGV4IHNoYWRlcnMgb25seSAiLCBTKTsgIFwKICAgICAgICAgY29udGV4dC0+cmVjb3Zlcigp
OyAgXAogICAgIH0gIFwKIH0KIAogI2RlZmluZSBGUkFHX09OTFkoUywgTCkgeyAgXAotICAgIGlm
IChjb250ZXh0LT5zaGFkZXJUeXBlICE9IEdMX0ZSQUdNRU5UX1NIQURFUikgeyAgXAorICAgIGlm
IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgIT0gR0xfRlJBR01FTlRfU0hBREVSKSB7ICBcCiAg
ICAgICAgIGNvbnRleHQtPmVycm9yKEwsICIgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlcnMg
b25seSAiLCBTKTsgIFwKICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOyAgXAogICAgIH0gIFwK
IH0KIAogI2RlZmluZSBFUzJfT05MWShTLCBMKSB7ICBcCi0gICAgaWYgKGNvbnRleHQtPnNoYWRl
clZlcnNpb24gIT0gMTAwKSB7ICBcCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24o
KSAhPSAxMDApIHsgIFwKICAgICAgICAgY29udGV4dC0+ZXJyb3IoTCwgIiBzdXBwb3J0ZWQgaW4g
R0xTTCBFUyAxLjAwIG9ubHkgIiwgUyk7ICBcCiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsg
IFwKICAgICB9ICBcCiB9CiAKICNkZWZpbmUgRVMzX09OTFkoVE9LRU4sIExJTkUsIFJFQVNPTikg
eyAgXAotICAgIGlmIChjb250ZXh0LT5zaGFkZXJWZXJzaW9uICE9IDMwMCkgeyAgXAorICAgIGlm
IChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gMzAwKSB7ICBcCiAgICAgICAgIGNvbnRl
eHQtPmVycm9yKExJTkUsIFJFQVNPTiAiIHN1cHBvcnRlZCBpbiBHTFNMIEVTIDMuMDAgb25seSAi
LCBUT0tFTik7ICBcCiAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsgIFwKICAgICB9ICBcCkBA
IC02MjUsMTggKzYyNiwxOCBAQAogI2VuZGlmIC8qICFZWUNPUFlfTkVFREVEICovCiAKIC8qIFlZ
RklOQUwgLS0gU3RhdGUgbnVtYmVyIG9mIHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCi0jZGVm
aW5lIFlZRklOQUwgIDExNAorI2RlZmluZSBZWUZJTkFMICAxMTYKIC8qIFlZTEFTVCAtLSBMYXN0
IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2RlZmluZSBZWUxBU1QgICAyNTIzCisjZGVmaW5lIFlZ
TEFTVCAgIDI1MTYKIAogLyogWVlOVE9LRU5TIC0tIE51bWJlciBvZiB0ZXJtaW5hbHMuICAqLwog
I2RlZmluZSBZWU5UT0tFTlMgIDEyOAogLyogWVlOTlRTIC0tIE51bWJlciBvZiBub250ZXJtaW5h
bHMuICAqLwogI2RlZmluZSBZWU5OVFMgIDk0CiAvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2YgcnVs
ZXMuICAqLwotI2RlZmluZSBZWU5SVUxFUyAgMjczCisjZGVmaW5lIFlZTlJVTEVTICAyNzUKIC8q
IFlZTlNUQVRFUyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICA0
MTQKKyNkZWZpbmUgWVlOU1RBVEVTICA0MTcKIAogLyogWVlUUkFOU0xBVEVbWVlYXSAtLSBTeW1i
b2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlYIGFzIHJldHVybmVkCiAgICBieSB5eWxleCwg
d2l0aCBvdXQtb2YtYm91bmRzIGNoZWNraW5nLiAgKi8KQEAgLTY5NSwzNCArNjk2LDM0IEBACiAg
IC8qIFlZUkxJTkVbWVlOXSAtLSBTb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2Fz
IGRlZmluZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlybGluZVtdID0KIHsK
LSAgICAgICAwLCAgIDIxMSwgICAyMTEsICAgMjEyLCAgIDIxNSwgICAyMzksICAgMjQyLCAgIDI0
NywgICAyNTIsICAgMjU3LAotICAgICAyNjIsICAgMjY4LCAgIDI3MSwgICAyNzQsICAgMjc3LCAg
IDI4MCwgICAyODMsICAgMjg5LCAgIDI5NywgICAzMDgsCi0gICAgIDMxMiwgICAzMjAsICAgMzIz
LCAgIDMyOSwgICAzMzMsICAgMzQwLCAgIDM0NiwgICAzNTUsICAgMzYzLCAgIDM2OSwKLSAgICAg
Mzc2LCAgIDM4NiwgICAzODksICAgMzkyLCAgIDM5NSwgICA0MDUsICAgNDA2LCAgIDQwNywgICA0
MDgsICAgNDE2LAotICAgICA0MTcsICAgNDIwLCAgIDQyMywgICA0MzAsICAgNDMxLCAgIDQzNCwg
ICA0NDAsICAgNDQxLCAgIDQ0NSwgICA0NTIsCi0gICAgIDQ1MywgICA0NTYsICAgNDU5LCAgIDQ2
MiwgICA0NjgsICAgNDY5LCAgIDQ3MiwgICA0NzgsICAgNDc5LCAgIDQ4NiwKLSAgICAgNDg3LCAg
IDQ5NCwgICA0OTUsICAgNTAyLCAgIDUwMywgICA1MDksICAgNTEwLCAgIDUxNiwgICA1MTcsICAg
NTIzLAotICAgICA1MjQsICAgNTMwLCAgIDUzMSwgICA1MzksICAgNTQwLCAgIDU0MSwgICA1NDIs
ICAgNTQ2LCAgIDU0NywgICA1NDgsCi0gICAgIDU1MiwgICA1NTYsICAgNTYwLCAgIDU2NCwgICA1
NzEsICAgNTc0LCAgIDU4NSwgICA1OTMsICAgNjAxLCAgIDYyOSwKLSAgICAgNjM1LCAgIDY0Niwg
ICA2NTAsICAgNjU0LCAgIDY1OCwgICA2NjUsICAgNzIxLCAgIDcyNCwgICA3MzEsICAgNzM5LAot
ICAgICA3NjAsICAgNzgxLCAgIDc5MSwgICA4MTksICAgODI0LCAgIDgzNCwgICA4MzksICAgODQ5
LCAgIDg1MiwgICA4NTUsCi0gICAgIDg1OCwgICA4NjQsICAgODcxLCAgIDg3NCwgICA4NzgsICAg
ODgyLCAgIDg4NywgICA4OTIsICAgODk5LCAgIDkwMywKLSAgICAgOTA3LCAgIDkxMSwgICA5MTYs
ICAgOTIxLCAgIDkyNSwgICA5MzIsICAgOTQyLCAgIDk0OCwgICA5NTEsICAgOTU3LAotICAgICA5
NjMsICAgOTcwLCAgIDk3OSwgICA5ODgsICAgOTk2LCAgIDk5OSwgIDEwMDYsICAxMDEwLCAgMTAx
NywgIDEwMjAsCi0gICAgMTAyNCwgIDEwMjgsICAxMDM3LCAgMTA0NiwgIDEwNTQsICAxMDY0LCAg
MTA3NiwgIDEwNzksICAxMDgyLCAgMTA4OCwKLSAgICAxMDk1LCAgMTA5OCwgIDExMDQsICAxMTA3
LCAgMTExMCwgIDExMTYsICAxMTE5LCAgMTEyNCwgIDExMzksICAxMTQzLAotICAgIDExNDcsICAx
MTUxLCAgMTE1NSwgIDExNTksICAxMTY0LCAgMTE2OSwgIDExNzQsICAxMTc5LCAgMTE4NCwgIDEx
ODksCi0gICAgMTE5NCwgIDExOTksICAxMjA0LCAgMTIwOSwgIDEyMTQsICAxMjE5LCAgMTIyNCwg
IDEyMjksICAxMjM0LCAgMTIzOSwKLSAgICAxMjQ0LCAgMTI0OSwgIDEyNTQsICAxMjU5LCAgMTI2
NCwgIDEyNjgsICAxMjcyLCAgMTI3NiwgIDEyODAsICAxMjg0LAotICAgIDEyODgsICAxMjkyLCAg
MTI5NiwgIDEzMDAsICAxMzA0LCAgMTMwOCwgIDEzMTIsICAxMzE2LCAgMTMyMCwgIDEzMjQsCi0g
ICAgMTMzMiwgIDEzNDAsICAxMzQ0LCAgMTM1NywgIDEzNTcsICAxMzYwLCAgMTM2MCwgIDEzNjYs
ICAxMzY5LCAgMTM4NSwKLSAgICAxMzg4LCAgMTM5NywgIDE0MDEsICAxNDA3LCAgMTQxNCwgIDE0
MjksICAxNDMzLCAgMTQzNywgIDE0MzgsICAxNDQ0LAotICAgIDE0NDUsICAxNDQ2LCAgMTQ0Nywg
IDE0NDgsICAxNDQ5LCAgMTQ1MCwgIDE0NTQsICAxNDU1LCAgMTQ1NSwgIDE0NTUsCi0gICAgMTQ2
NSwgIDE0NjYsICAxNDcwLCAgMTQ3MCwgIDE0NzEsICAxNDcxLCAgMTQ3NiwgIDE0NzksICAxNDg5
LCAgMTQ5MiwKLSAgICAxNDk4LCAgMTQ5OSwgIDE1MDMsICAxNTExLCAgMTUxNSwgIDE1MjIsICAx
NTIyLCAgMTUyOSwgIDE1MzIsICAxNTM5LAotICAgIDE1NDQsICAxNTU5LCAgMTU1OSwgIDE1NjQs
ICAxNTY0LCAgMTU3MSwgIDE1NzEsICAxNTc5LCAgMTU4MiwgIDE1ODgsCi0gICAgMTU5MSwgIDE1
OTcsICAxNjAxLCAgMTYwOCwgIDE2MTEsICAxNjE0LCAgMTYxNywgIDE2MjAsICAxNjI5LCAgMTYz
MywKLSAgICAxNjQwLCAgMTY0MywgIDE2NDksICAxNjQ5CisgICAgICAgMCwgICAyMTIsICAgMjEy
LCAgIDIxMywgICAyMTYsICAgMjI2LCAgIDIyOSwgICAyMzQsICAgMjM5LCAgIDI0NCwKKyAgICAg
MjQ5LCAgIDI1NSwgICAyNTgsICAgMjYxLCAgIDI2NCwgICAyNjcsICAgMjcwLCAgIDI3NiwgICAy
ODQsICAgMjk1LAorICAgICAyOTksICAgMzA3LCAgIDMxMCwgICAzMTYsICAgMzIwLCAgIDMyNywg
ICAzMzMsICAgMzQyLCAgIDM1MCwgICAzNTYsCisgICAgIDM2MywgICAzNzMsICAgMzc2LCAgIDM3
OSwgICAzODIsICAgMzkyLCAgIDM5MywgICAzOTQsICAgMzk1LCAgIDQwMywKKyAgICAgNDA0LCAg
IDQwNywgICA0MTAsICAgNDE3LCAgIDQxOCwgICA0MjEsICAgNDI3LCAgIDQyOCwgICA0MzIsICAg
NDM5LAorICAgICA0NDAsICAgNDQzLCAgIDQ0NiwgICA0NDksICAgNDU1LCAgIDQ1NiwgICA0NTks
ICAgNDY1LCAgIDQ2NiwgICA0NzMsCisgICAgIDQ3NCwgICA0ODEsICAgNDgyLCAgIDQ4OSwgICA0
OTAsICAgNDk2LCAgIDQ5NywgICA1MDMsICAgNTA0LCAgIDUxMCwKKyAgICAgNTExLCAgIDUxNywg
ICA1MTgsICAgNTI2LCAgIDUyNywgICA1MjgsICAgNTI5LCAgIDUzMywgICA1MzQsICAgNTM1LAor
ICAgICA1MzksICAgNTQzLCAgIDU0NywgICA1NTEsICAgNTU4LCAgIDU2MSwgICA1NjcsICAgNTc1
LCAgIDU4MywgICA1ODYsCisgICAgIDU5MiwgICA2MDMsICAgNjA3LCAgIDYxMSwgICA2MTUsICAg
NjIyLCAgIDYyOCwgICA2MzEsICAgNjM4LCAgIDY0NiwKKyAgICAgNjY3LCAgIDY5NCwgICA3MDQs
ICAgNzMyLCAgIDczNywgICA3NDcsICAgNzUyLCAgIDc2MiwgICA3NjUsICAgNzY4LAorICAgICA3
NzEsICAgNzc3LCAgIDc4NCwgICA3ODcsICAgNzkxLCAgIDc5NSwgICA4MDAsICAgODA1LCAgIDgx
MiwgICA4MTYsCisgICAgIDgyMCwgICA4MjQsICAgODI5LCAgIDgzNCwgICA4MzgsICAgODQ1LCAg
IDg1NSwgICA4NjEsICAgODY0LCAgIDg3MCwKKyAgICAgODc2LCAgIDg4MywgICA4OTIsICAgOTAy
LCAgIDkxMCwgICA5MTMsICAgOTIwLCAgIDkyNCwgICA5MjgsICAgOTMzLAorICAgICA5NDEsICAg
OTQ0LCAgIDk0OCwgICA5NTIsICAgOTYxLCAgIDk3MCwgICA5NzgsICAgOTg4LCAgMTAwMCwgIDEw
MDMsCisgICAgMTAwNiwgIDEwMTIsICAxMDE5LCAgMTAyMiwgIDEwMjgsICAxMDMxLCAgMTAzNCwg
IDEwNDAsICAxMDQzLCAgMTA0OCwKKyAgICAxMDYzLCAgMTA2NywgIDEwNzEsICAxMDc1LCAgMTA3
OSwgIDEwODMsICAxMDg4LCAgMTA5MywgIDEwOTgsICAxMTAzLAorICAgIDExMDgsICAxMTEzLCAg
MTExOCwgIDExMjMsICAxMTI4LCAgMTEzMywgIDExMzgsICAxMTQzLCAgMTE0OCwgIDExNTMsCisg
ICAgMTE1OCwgIDExNjMsICAxMTY4LCAgMTE3MywgIDExNzgsICAxMTgzLCAgMTE4OCwgIDExOTIs
ICAxMTk2LCAgMTIwMCwKKyAgICAxMjA0LCAgMTIwOCwgIDEyMTIsICAxMjE2LCAgMTIyMCwgIDEy
MjQsICAxMjI4LCAgMTIzMiwgIDEyMzYsICAxMjQwLAorICAgIDEyNDQsICAxMjQ4LCAgMTI1Niwg
IDEyNjQsICAxMjY4LCAgMTI4MSwgIDEyODEsICAxMjg0LCAgMTI4NCwgIDEyOTAsCisgICAgMTI5
MywgIDEzMDksICAxMzEyLCAgMTMyMSwgIDEzMjUsICAxMzMxLCAgMTMzOCwgIDEzNTMsICAxMzU3
LCAgMTM2MSwKKyAgICAxMzYyLCAgMTM2OCwgIDEzNjksICAxMzcwLCAgMTM3MSwgIDEzNzIsICAx
MzczLCAgMTM3NCwgIDEzNzgsICAxMzc5LAorICAgIDEzNzksICAxMzc5LCAgMTM4OSwgIDEzOTAs
ICAxMzk0LCAgMTM5NCwgIDEzOTUsICAxMzk1LCAgMTQwMCwgIDE0MDMsCisgICAgMTQxMywgIDE0
MTYsICAxNDIyLCAgMTQyMywgIDE0MjcsICAxNDM1LCAgMTQzOSwgIDE0NDYsICAxNDQ2LCAgMTQ1
MywKKyAgICAxNDU2LCAgMTQ2MywgIDE0NjgsICAxNDgzLCAgMTQ4MywgIDE0ODgsICAxNDg4LCAg
MTQ5NSwgIDE0OTUsICAxNTAzLAorICAgIDE1MDYsICAxNTEyLCAgMTUxNSwgIDE1MjEsICAxNTI1
LCAgMTUzMiwgIDE1MzUsICAxNTM4LCAgMTU0MSwgIDE1NDQsCisgICAgMTU1MywgIDE1NTcsICAx
NTY0LCAgMTU2NywgIDE1NzMsICAxNTczCiB9OwogI2VuZGlmCiAKQEAgLTgxMSwxMiArODEyLDEy
IEBACiB9OwogIyBlbmRpZgogCi0jZGVmaW5lIFlZUEFDVF9OSU5GIC0zNDcKKyNkZWZpbmUgWVlQ
QUNUX05JTkYgLTM2MQogCiAjZGVmaW5lIHl5cGFjdF92YWx1ZV9pc19kZWZhdWx0KFl5c3RhdGUp
IFwKLSAgKCEhKChZeXN0YXRlKSA9PSAoLTM0NykpKQorICAoISEoKFl5c3RhdGUpID09ICgtMzYx
KSkpCiAKLSNkZWZpbmUgWVlUQUJMRV9OSU5GIC0yMzMKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0y
MzUKIAogI2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lzX2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKICAg
MApAQCAtODI1LDQ4ICs4MjYsNDggQEAKICAgICAgU1RBVEUtTlVNLiAgKi8KIHN0YXRpYyBjb25z
dCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewotICAgIDIxNjEsICAgIC00LCAgLTM0NywgIC0z
NDcsICAtMzQ3LCAgIDE0MiwgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsCi0gICAgLTM0Nywg
IC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAg
LTM0NywKLSAgICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3
LCAgLTM0NywgIC0zNDcsICAtMzQ3LAotICAgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAt
MzQ3LCAgLTM0NywgIC0zNDcsICAgIC0zLCAgLTM0NywgIC0zNDcsCi0gICAgIC01OCwgIC0zNDcs
ICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywK
LSAgICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0
NywgIC0zNDcsICAgLTU3LAotICAgIC0zNDcsICAtMzQ3LCAgIC0zOCwgICAtNjMsICAgLTU1LCAg
ICAgMywgICAtNTAsICAtMzQ3LCAgICA4NCwgICAgMTEsCi0gICAgMTE4MCwgIC0zNDcsICAtMzQ3
LCAgMjQ0NiwgICAgMTEsICAtMzQ3LCAgIC00MCwgIC0zNDcsICAyMDg2LCAgLTM0NywKLSAgICAt
MzQ3LCAgLTM0NywgIC0zNDcsICAyNDQ2LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0z
NDcsICAgLTIzLAotICAgICAgMzEsICAtMzQ3LCAgICAzNSwgIC0zNDcsICAgIDc4LCAgLTM0Nywg
IC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsCi0gICAgMjMxMCwgICAxMzIsICAgMTA2LCAgLTM0
NywgICAgIDcsICAgLTI3LCAgLTM0NywgICAgNjAsICAtMzQ3LCAgMjIzNiwKLSAgICAtMzQ3LCAg
LTM0NywgIC0zNDcsICAxMjUwLCAgLTM0NywgIC0zNDcsICAgLTMzLCAgMjIzNiwgIC0zNDcsICAg
IDE3LAotICAgICAtNzIsICAtMzQ3LCAgIDQwOCwgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcs
ICAgMTA2LCAgMjMxMCwgICAtMjQsCi0gICAgLTM0NywgIDEzNDgsICAxNjM5LCAgLTM0NywgICAg
NzksICAyMzEwLCAgIDEwNiwgIDE4MzEsICAtMzQ3LCAgICA3MSwKLSAgICAtMzQ3LCAgLTM0Nywg
IC0zNDcsICAtMzQ3LCAgLTM0NywgIDE2MzksICAxNjM5LCAgMTYzOSwgIC0zNDcsICAtMzQ3LAot
ICAgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgICAxOSwgIC0zNDcsICAtMzQ3
LCAgLTM0NywgICAgNzMsCi0gICAgIC0yMSwgIDE3MzQsICAgIDg5LCAgLTM0NywgIDE2MzksICAg
IDY2LCAgICA3MiwgICAxMDgsICAgLTY0LCAgICA1MCwKLSAgICAgIDgxLCAgICA3NCwgICAgODcs
ICAgMTE0LCAgIDEyMywgICAtNjIsICAtMzQ3LCAgIDExMCwgIC0zNDcsICAtMzQ3LAotICAgIDE5
MTYsICAyMjM2LCAgIDExNiwgIC0zNDcsICAgIDMxLCAgIDEwNCwgICAxMDUsICAtMzQ3LCAgIDEx
NywgICAxMTgsCi0gICAgIDEwOSwgIDE0NDYsICAgMTIwLCAgMTYzOSwgICAxMTMsICAgMTIyLCAg
IDExMSwgIC0zNDcsICAtMzQ3LCAgICA1NiwKLSAgICAtMzQ3LCAgLTM0NywgICAtMTMsICAtMzQ3
LCAgIC0zOCwgICAxMjUsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LAotICAgICA1MjQsICAt
MzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAgMTI0LCAgLTM0NywgIC0z
NDcsCi0gICAgMTU0MSwgIDE2MzksICAgMTE5LCAgIDEyNywgIC0zNDcsICAtMzQ3LCAgIDEwNiwg
ICAxMjksICAgIC04LCAgLTM0NywKLSAgICAgLTY2LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgICAt
OSwgIC0zNDcsICAtMzQ3LCAgMTYzOSwgIDIzNzgsICAtMzQ3LAotICAgIC0zNDcsICAxNjM5LCAg
IDEzMSwgIC0zNDcsICAtMzQ3LCAgLTM0NywgIDE2MzksICAxNjM5LCAgMTYzOSwgIDE2MzksCi0g
ICAgMTYzOSwgIDE2MzksICAxNjM5LCAgMTYzOSwgIDE2MzksICAxNjM5LCAgMTYzOSwgIDE2Mzks
ICAxNjM5LCAgMTYzOSwKLSAgICAxNjM5LCAgMTYzOSwgIDE2MzksICAxNjM5LCAgMTYzOSwgIDE2
MzksICAtMzQ3LCAgLTM0NywgIDIwMDEsICAtMzQ3LAotICAgIC0zNDcsICAtMzQ3LCAgLTM0Nywg
IC0zNDcsICAgMTMzLCAgLTM0NywgIDE2MzksICAtMzQ3LCAgLTM0NywgICAgMjAsCi0gICAgMTYz
OSwgICAxMjgsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAgNjQwLCAgLTM0NywgIC0zNDcsICAtMzQ3
LCAgLTM0NywKLSAgICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAt
MzQ3LCAgMTYzOSwgIDE2MzksICAtMzQ3LAotICAgIC0zNDcsICAtMzQ3LCAgMTYzOSwgICAxMjYs
ICAgMTM1LCAgLTM0NywgIDE2MzksICAgMTMwLCAgICAyMiwgIDE2MzksCi0gICAgIDEwNiwgIC0z
NDcsICAgLTc4LCAgLTM0NywgIC0zNDcsICAgMTM4LCAgIDEzNiwgIC0zNDcsICAgMTQ1LCAgLTM0
NywKLSAgICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgICA2NiwgICAgNjYsICAgIDcyLCAg
ICA3MiwgICAxMDgsICAgMTA4LAotICAgICAxMDgsICAgMTA4LCAgIC02NCwgICAtNjQsICAgIDUw
LCAgICA4MSwgICAgNzQsICAgIDg3LCAgIDExNCwgICAxMjMsCi0gICAgICA4NiwgIC0zNDcsICAg
MTkwLCAgICAzNSwgICA4NzIsICAgOTg4LCAgICAgNSwgIC0zNDcsICAgIDEwLCAgLTM0NywKLSAg
ICAxMDg1LCAgIDY0MCwgIC0zNDcsICAtMzQ3LCAgIDE0MywgIDE2MzksICAgMTM5LCAgLTM0Nywg
IDE2MzksICAtMzQ3LAotICAgICAxNDQsICAtMzQ3LCAgMTYzOSwgIC0zNDcsICAtMzQ3LCAgMTYz
OSwgICAxNDksICAtMzQ3LCAgLTM0NywgIC0zNDcsCi0gICAgLTM0NywgIDEwODUsICAgMTMzLCAg
LTM0NywgICAxMzYsICAgMTA2LCAgMjMxMCwgICAxNTIsICAgMTUwLCAgLTM0NywKLSAgICAtMzQ3
LCAgMTYzOSwgIC0zNDcsICAtMzQ3LCAgIDE1MSwgIC0zNDcsICAxNjM5LCAgLTM0NywgICAxNDYs
ICAgMTU3LAotICAgICAyNDYsICAtMzQ3LCAgIDE1NiwgICAxNTQsICAgNzU2LCAgLTM0NywgIC0z
NDcsICAgMTU1LCAgICAyMSwgIDE2MzksCi0gICAgIDc1NiwgICAxMzMsICAtMzQ3LCAgMTYzOSwg
IC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAgMTU4LCAgIDEzNiwKLSAgICAtMzQ3LCAgLTM0
NywgIC0zNDcsICAtMzQ3CisgICAgMjE1NCwgICAyMjQsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAg
MTMwLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKKyAgICAtMzYxLCAgLTM2MSwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAorICAgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2
MSwgIC0zNjEsCisgICAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAg
LTM2MSwgICAxNDUsICAtMzYxLCAgLTM2MSwKKyAgICAgLTQ2LCAgLTM2MSwgIC0zNjEsICAtMzYx
LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLAorICAgIC0zNjEsICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgICAt
ODIsCisgICAgLTM2MSwgIC0zNjEsICAgLTY4LCAgIC00MSwgICAtNDUsICAgICA5LCAgICAgNywg
IC0zNjEsICAgMTE3LCAgICAxNiwKKyAgICAxMTczLCAgLTM2MSwgIC0zNjEsICAyNDM5LCAgICAx
NiwgIC0zNjEsICAgIC05LCAgLTM2MSwgIDIwNzksICAtMzYxLAorICAgIC0zNjEsICAtMzYxLCAg
LTM2MSwgICAgMTYsICAtMzYxLCAgMjQzOSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCisg
ICAgLTM2MSwgICAtMzEsICAgIDIzLCAgLTM2MSwgICAgMTEsICAtMzYxLCAgICA2MywgIC0zNjEs
ICAtMzYxLCAgLTM2MSwKKyAgICAtMzYxLCAgLTM2MSwgIDIzMDMsICAgMTY4LCAgIDEyMCwgIC0z
NjEsICAgIDEzLCAgIC02NiwgIC0zNjEsICAgIDMxLAorICAgIC0zNjEsICAyMjI5LCAgLTM2MSwg
IC0zNjEsICAtMzYxLCAgMTI0MywgIC0zNjEsICAtMzYxLCAgLTM2MSwgICAgNTYsCisgICAgMjIy
OSwgIC0zNjEsICAgIDE3LCAgIC01MCwgIC0zNjEsICAgNDAxLCAgLTM2MSwgIC0zNjEsICAtMzYx
LCAgLTM2MSwKKyAgICAgMTIwLCAgMjMwMywgICAtMTgsICAtMzYxLCAgMTM0MSwgIDE2MzIsICAt
MzYxLCAgIDE3OSwgIDIzMDMsICAgMTIwLAorICAgIDE4MjQsICAtMzYxLCAgICA3MCwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgMTYzMiwgIDE2MzIsCisgICAgMTYzMiwgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgIDIyLCAgLTM2
MSwKKyAgICAtMzYxLCAgLTM2MSwgICAxMDEsICAgLTI5LCAgMTcyNywgICAxMTQsICAtMzYxLCAg
MTYzMiwgICAgOTYsICAgLTk3LAorICAgICAxMjgsICAgLTU0LCAgIDExMSwgICAxMTgsICAgMTAy
LCAgIDExNSwgICAxNTQsICAgMTUzLCAgIC02OSwgIC0zNjEsCisgICAgIDE0MCwgIC0zNjEsICAt
MzYxLCAgMTkwOSwgIDIyMjksICAgMTI0LCAgLTM2MSwgICAgMjMsICAgMTM0LCAgIDEzNiwKKyAg
ICAtMzYxLCAgIDE0NywgICAxNDksICAgMTQzLCAgMTQzOSwgICAxNTUsICAxNjMyLCAgIDE0OCwg
ICAxNTcsICAgMTYwLAorICAgIC0zNjEsICAtMzYxLCAgIDE4NCwgIC0zNjEsICAtMzYxLCAgICA1
MiwgIC0zNjEsICAgLTY4LCAgIDE1OCwgIC0zNjEsCisgICAgLTM2MSwgIC0zNjEsICAtMzYxLCAg
IDUxNywgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwKKyAgICAgMTY2
LCAgLTM2MSwgIC0zNjEsICAxNTM0LCAgMTYzMiwgICAxNTAsICAgMTU5LCAgLTM2MSwgIC0zNjEs
ICAgMTIwLAorICAgICAxNjcsICAgIDYxLCAgLTM2MSwgICAtNjIsICAtMzYxLCAgLTM2MSwgIC0z
NjEsICAgIC01LCAgLTM2MSwgIC0zNjEsCisgICAgMTYzMiwgIDIzNzEsICAtMzYxLCAgLTM2MSwg
IDE2MzIsICAgMTg1LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgMTYzMiwKKyAgICAxNjMyLCAgMTYz
MiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMy
LAorICAgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAxNjMyLCAgMTYzMiwgIDE2MzIsICAx
NjMyLCAgMTYzMiwgIC0zNjEsCisgICAgLTM2MSwgIDE5OTQsICAtMzYxLCAgLTM2MSwgIC0zNjEs
ICAtMzYxLCAgLTM2MSwgICAxODEsICAtMzYxLCAgMTYzMiwKKyAgICAtMzYxLCAgLTM2MSwgICAg
NjcsICAxNjMyLCAgIDE4MCwgIC0zNjEsICAtMzYxLCAgLTM2MSwgICA2MzMsICAtMzYxLAorICAg
IC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAg
LTM2MSwgIC0zNjEsCisgICAgMTYzMiwgIDE2MzIsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAxNjMy
LCAgIDE3OCwgICAxODYsICAtMzYxLCAgMTYzMiwKKyAgICAgMTgyLCAgICA2OCwgIDE2MzIsICAg
MTIwLCAgLTM2MSwgICAtNzEsICAtMzYxLCAgLTM2MSwgICAxODcsICAgMTg4LAorICAgIC0zNjEs
ICAgMTkyLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAgIDk2LCAgICA5Niwg
ICAtOTcsCisgICAgIC05NywgICAxMjgsICAgMTI4LCAgIDEyOCwgICAxMjgsICAgLTU0LCAgIC01
NCwgICAxMTEsICAgMTE4LCAgIDEwMiwKKyAgICAgMTE1LCAgIDE1NCwgICAxNTMsICAgMTEzLCAg
LTM2MSwgICAyNDIsICAgIDExLCAgIDg2NSwgICA5ODEsICAgICA0LAorICAgIC0zNjEsICAgIDE4
LCAgLTM2MSwgIDEwNzgsICAgNjMzLCAgLTM2MSwgIC0zNjEsICAgMTk0LCAgMTYzMiwgICAxODks
CisgICAgLTM2MSwgIDE2MzIsICAtMzYxLCAgIDE5NiwgIC0zNjEsICAxNjMyLCAgLTM2MSwgIC0z
NjEsICAxNjMyLCAgIDIwMCwKKyAgICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgMTA3OCwg
ICAxODEsICAtMzYxLCAgIDE4OCwgICAxMjAsICAyMzAzLAorICAgICAyMDEsICAgMTk4LCAgLTM2
MSwgIC0zNjEsICAxNjMyLCAgLTM2MSwgIC0zNjEsICAgMjAyLCAgLTM2MSwgIDE2MzIsCisgICAg
LTM2MSwgICAxOTEsICAgMjAzLCAgIDI5MywgIC0zNjEsICAgMjA0LCAgIDIwNSwgICA3NDksICAt
MzYxLCAgLTM2MSwKKyAgICAgMTk3LCAgICA2MCwgIDE2MzIsICAgNzQ5LCAgIDE4MSwgIC0zNjEs
ICAxNjMyLCAgLTM2MSwgIC0zNjEsICAtMzYxLAorICAgIC0zNjEsICAgMTk5LCAgIDE4OCwgIC0z
NjEsICAtMzYxLCAgLTM2MSwgIC0zNjEKIH07CiAKICAgLyogWVlERUZBQ1RbU1RBVEUtTlVNXSAt
LSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgpAQCAtODc0LDc4
ICs4NzUsNzggQEAKICAgICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMgYW4gZXJyb3IuICAqLwogc3Rh
dGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlkZWZhY3RbXSA9CiB7Ci0gICAgICAgMCwgICAgIDAs
ICAgMTQ2LCAgIDE0NywgICAxNDgsICAgICAwLCAgIDEzMCwgICAxMzgsICAgMTYyLCAgIDE1OSwK
LSAgICAgMTYwLCAgIDE2MSwgICAxNjYsICAgMTY3LCAgIDE2OCwgICAxNjksICAgMTcwLCAgIDE3
MSwgICAxNjMsICAgMTY0LAotICAgICAxNjUsICAgMTcyLCAgIDE3MywgICAxNzQsICAgMTc1LCAg
IDE3NiwgICAxNzcsICAgMTM5LCAgIDE0MCwgICAxNDMsCi0gICAgIDEzMSwgICAxNzgsICAgMTc5
LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywgICAgIDAsICAgMTI4LCAgIDEyNywKLSAgICAg
ICAwLCAgIDE1OCwgICAxODQsICAgMTg2LCAgIDE5OSwgICAyMDAsICAgMTg3LCAgIDE4OCwgICAx
ODksICAgMTkwLAotICAgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQsICAgMTk1LCAgIDE4NSwg
ICAxOTYsICAgMTk3LCAgIDE5OCwgICAgIDAsCi0gICAgIDIwMiwgICAyNzEsICAgMjcyLCAgICAg
MCwgICAgOTcsICAgMTA3LCAgICAgMCwgICAxMTIsICAgMTE4LCAgIDEzNSwKLSAgICAgICAwLCAg
IDEzMywgICAxMjUsICAgICAwLCAgIDEzNiwgICAxNDQsICAgMTU1LCAgIDIwMSwgICAgIDAsICAg
MjY4LAotICAgICAyNzAsICAgMTMyLCAgIDEyNCwgICAgIDAsICAgMTQxLCAgIDE0MiwgICAgIDIs
ICAgICAzLCAgIDIwNSwgICAgIDAsCi0gICAgICAgMCwgICAgODgsICAgICAwLCAgICA5NSwgICAx
MDcsICAgMTI5LCAgIDEwOCwgICAxMDksICAgMTEwLCAgICA5OCwKLSAgICAgICAwLCAgIDEwNywg
ICAgIDAsICAgIDg5LCAgICAgMiwgICAxMTksICAgMTM0LCAgICAgMCwgICAgOTQsICAgICAwLAot
ICAgICAxMjYsICAgMTQ1LCAgIDEzNywgICAgIDAsICAgICAxLCAgIDI2OSwgICAgIDAsICAgICAw
LCAgIDIwMywgICAxNTIsCi0gICAgICAgMCwgICAxNTAsICAgICAwLCAgIDI3MywgICAgOTksICAg
MTA0LCAgIDEwNiwgICAxMTEsICAgICAwLCAgIDExMywKLSAgICAgMTAwLCAgICAgMCwgICAgIDAs
ICAgIDg3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMDcsICAgICA0LAotICAgICAg
IDgsICAgICA2LCAgICAgNywgICAgIDksICAgIDMwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1
NiwgICAgMzcsCi0gICAgICAzNiwgICAgMzgsICAgIDM1LCAgICAgNSwgICAgMTEsICAgIDMxLCAg
ICAxMywgICAgMTgsICAgIDE5LCAgICAgMCwKLSAgICAgICAwLCAgICAyNCwgICAgIDAsICAgIDM5
LCAgICAgMCwgICAgNDMsICAgIDQ2LCAgICA0OSwgICAgNTQsICAgIDU3LAotICAgICAgNTksICAg
IDYxLCAgICA2MywgICAgNjUsICAgIDY3LCAgICA2OSwgICAgODYsICAgICAwLCAgICAyOCwgICAg
OTAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAyNTMsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMjI3LCAgIDIzNiwgICAyNDAsICAgIDM5LAotICAgICAgNzEsICAgIDg0LCAg
ICAgMCwgICAyMTYsICAgICAwLCAgIDE0NCwgICAyMTksICAgMjM4LCAgIDIxOCwgICAyMTcsCi0g
ICAgICAgMCwgICAyMjAsICAgMjIxLCAgIDIyMiwgICAyMjMsICAgMjI0LCAgIDIyNSwgICAxMDEs
ICAgMTAzLCAgIDEwNSwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIxNSwgICAx
MjMsICAgICAwLCAgIDIxMywgICAgIDAsICAgMjExLAotICAgICAgIDAsICAgMjA4LCAgICAzMiwg
ICAgMzMsICAgICAwLCAgICAxNSwgICAgMTYsICAgICAwLCAgICAgMCwgICAgMjIsCi0gICAgICAy
MSwgICAgIDAsICAgMTU4LCAgICAyNSwgICAgMjcsICAgIDM0LCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAgIDAsICAg
MTMwLCAgIDE0MCwgICAxNjQsICAgMTYxLAorICAgICAxNjIsICAgMTYzLCAgIDE2OCwgICAxNjks
ICAgMTcwLCAgIDE3MSwgICAxNzIsICAgMTczLCAgIDE2NSwgICAxNjYsCisgICAgIDE2NywgICAx
NzQsICAgMTc1LCAgIDE3NiwgICAxNzcsICAgMTc4LCAgIDE3OSwgICAxNDEsICAgMTQyLCAgIDE0
NSwKKyAgICAgMTMxLCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywgICAxODQsICAgMTg1LCAg
ICAgMCwgICAxMjgsICAgMTI3LAorICAgICAgIDAsICAgMTYwLCAgIDE4NiwgICAxODgsICAgMjAx
LCAgIDIwMiwgICAxODksICAgMTkwLCAgIDE5MSwgICAxOTIsCisgICAgIDE5MywgICAxOTQsICAg
MTk1LCAgIDE5NiwgICAxOTcsICAgMTg3LCAgIDE5OCwgICAxOTksICAgMjAwLCAgICAgMCwKKyAg
ICAgMjA0LCAgIDI3MywgICAyNzQsICAgICAwLCAgICA5NywgICAxMDcsICAgICAwLCAgIDExMiwg
ICAxMTgsICAgMTM1LAorICAgICAgIDAsICAgMTMzLCAgIDEyNSwgICAgIDAsICAgMTM2LCAgIDE0
NiwgICAxNTcsICAgMjAzLCAgICAgMCwgICAyNzAsCisgICAgIDI3MiwgICAxMzIsICAgMTI0LCAg
ICAgMCwgICAxMzgsICAgICAwLCAgIDE0MywgICAxNDQsICAgICAyLCAgICAgMywKKyAgICAgMjA3
LCAgICAgMCwgICAgIDAsICAgIDg4LCAgICAgMCwgICAgOTUsICAgMTA3LCAgIDEyOSwgICAxMDgs
ICAgMTA5LAorICAgICAxMTAsICAgIDk4LCAgICAgMCwgICAxMDcsICAgICAwLCAgICA4OSwgICAg
IDIsICAgMTE5LCAgIDEzNCwgICAgIDAsCisgICAgICA5NCwgICAgIDAsICAgMTI2LCAgIDE0Nywg
ICAxMzcsICAgICAwLCAgICAgMSwgICAyNzEsICAgMTM5LCAgICAgMCwKKyAgICAgICAwLCAgIDIw
NSwgICAxNTQsICAgICAwLCAgIDE1MiwgICAgIDAsICAgMjc1LCAgICA5OSwgICAxMDQsICAgMTA2
LAorICAgICAxMTEsICAgICAwLCAgIDExMywgICAxMDAsICAgICAwLCAgICAgMCwgICAgODcsICAg
ICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAyMDksICAgICA0LCAgICAgOCwgICAgIDYs
ICAgICA3LCAgICAgOSwgICAgMzAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgIDE1OCwgICAg
MzcsICAgIDM2LCAgICAzOCwgICAgMzUsICAgICA1LCAgICAxMSwgICAgMzEsICAgIDEzLAorICAg
ICAgMTgsICAgIDE5LCAgICAgMCwgICAgIDAsICAgIDI0LCAgICAgMCwgICAgMzksICAgICAwLCAg
ICA0MywgICAgNDYsCisgICAgICA0OSwgICAgNTQsICAgIDU3LCAgICA1OSwgICAgNjEsICAgIDYz
LCAgICA2NSwgICAgNjcsICAgIDY5LCAgICA4NiwKKyAgICAgICAwLCAgICAyOCwgICAgOTAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTUxLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAyNTUs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAyMjksCisgICAgIDIzOCwgICAyNDIsICAgIDM5LCAgICA3MSwgICAgODQsICAgICAwLCAgIDIx
OCwgICAgIDAsICAgMTQ2LCAgIDIyMSwKKyAgICAgMjQwLCAgIDIyMCwgICAyMTksICAgICAwLCAg
IDIyMiwgICAyMjMsICAgMjI0LCAgIDIyNSwgICAyMjYsICAgMjI3LAorICAgICAxMDEsICAgMTAz
LCAgIDEwNSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjE3LCAgIDEyMywgICAgIDAs
CisgICAgIDIxNSwgICAgIDAsICAgMjEzLCAgICAgMCwgICAyMTAsICAgIDMyLCAgICAzMywgICAg
IDAsICAgIDE1LCAgICAxNiwKKyAgICAgICAwLCAgICAgMCwgICAgMjIsICAgIDIxLCAgICAgMCwg
ICAxNjAsICAgIDI1LCAgICAyNywgICAgMzQsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1NywgICAyMDYsICAg
ICAwLCAgIDE1MywKLSAgICAgMTU0LCAgIDE1MSwgICAyNjQsICAgMjYzLCAgIDIzNCwgICAyNTUs
ICAgICAwLCAgIDI2NywgICAyNjUsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDI0OCwgICAy
NTEsICAgMjI2LCAgICAgMCwgICAgNzQsICAgIDc1LCAgICA3NywgICAgNzYsCi0gICAgICA3OSwg
ICAgODAsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDc4LCAgICA3MywgICAgIDAsICAgICAwLCAg
IDI0MSwKLSAgICAgMjM3LCAgIDIzOSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMTcsICAgICAw
LCAgIDEyMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgMjA5LCAgICAgMCwgICAgOTEsICAg
IDEwLCAgICAgMCwgICAgMTcsICAgIDI5LCAgICAxNCwgICAgMjAsCi0gICAgICAyNiwgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgNDUsICAgIDQ0LCAgICA0NywgICAgNDgsICAgIDUyLCAgICA1MywK
LSAgICAgIDUwLCAgICA1MSwgICAgNTUsICAgIDU2LCAgICA1OCwgICAgNjAsICAgIDYyLCAgICA2
NCwgICAgNjYsICAgIDY4LAotICAgICAgIDAsICAgMjA0LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMjY2LCAgICAgMCwgICAyNDcsCi0gICAgICAgMCwgICAyMjgsICAgIDcy
LCAgICA4NSwgICAgIDAsICAgICAwLCAgIDExNCwgICAxMjEsICAgICAwLCAgIDIxMCwKLSAgICAg
ICAwLCAgIDIxMiwgICAgIDAsICAgIDkyLCAgICAxMiwgICAgIDAsICAgICAwLCAgIDIzMywgICAy
MzUsICAgMjU4LAotICAgICAyNTcsICAgMjYwLCAgIDIzNCwgICAyNDUsICAgMjQ5LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxMDIsCi0gICAgIDExNSwgICAgIDAsICAgMTIyLCAgIDIx
NCwgICAgIDAsICAgIDcwLCAgICAgMCwgICAyNTksICAgICAwLCAgICAgMCwKLSAgICAgMjQ0LCAg
IDI0MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMjksICAgMTE2LCAgICAgMCwgICAgIDAsICAg
MjYxLAotICAgICAgIDAsICAgMjM0LCAgIDI0NiwgICAgIDAsICAgMjMxLCAgIDI1MiwgICAyMzAs
ICAgIDkzLCAgICAgMCwgICAyNjIsCi0gICAgIDI1NiwgICAyNDMsICAgMjUwLCAgIDI1NAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNTksCisgICAgIDIwOCwgICAgIDAsICAgMTU1LCAgIDE1NiwgICAxNTMsICAgMjY2
LCAgIDI2NSwgICAyMzYsICAgMjU3LCAgICAgMCwKKyAgICAgMjY5LCAgIDI2NywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAyNTAsICAgMjUzLCAgIDIyOCwgICAgIDAsICAgIDc0LAorICAgICAgNzUs
ICAgIDc3LCAgICA3NiwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA3OCwg
ICAgNzMsCisgICAgICAgMCwgICAgIDAsICAgMjQzLCAgIDIzOSwgICAyNDEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTE3LCAgICAgMCwKKyAgICAgMTIwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDIxMSwgICAgIDAsICAgIDkxLCAgICAxMCwgICAgIDAsICAgIDE3LAorICAgICAgMjksICAgIDE0
LCAgICAyMCwgICAgMjYsICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQ1LCAgICA0NCwgICAgNDcs
CisgICAgICA0OCwgICAgNTIsICAgIDUzLCAgICA1MCwgICAgNTEsICAgIDU1LCAgICA1NiwgICAg
NTgsICAgIDYwLCAgICA2MiwKKyAgICAgIDY0LCAgICA2NiwgICAgNjgsICAgICAwLCAgIDIwNiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAyNjgsICAgICAwLCAgIDI0
OSwgICAgIDAsICAgMjMwLCAgICA3MiwgICAgODUsICAgICAwLCAgICAgMCwgICAxMTQsCisgICAg
IDEyMSwgICAgIDAsICAgMjEyLCAgICAgMCwgICAyMTQsICAgICAwLCAgICA5MiwgICAgMTIsICAg
ICAwLCAgICAgMCwKKyAgICAgMjM1LCAgIDIzNywgICAyNjAsICAgMjU5LCAgIDI2MiwgICAyMzYs
ICAgMjQ3LCAgIDI1MSwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDEwMiwgICAx
MTUsICAgICAwLCAgIDEyMiwgICAyMTYsICAgICAwLCAgICA3MCwgICAgIDAsCisgICAgIDI2MSwg
ICAgIDAsICAgICAwLCAgIDI0NiwgICAyNDQsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjMxLCAg
IDExNiwKKyAgICAgICAwLCAgICAgMCwgICAyNjMsICAgICAwLCAgIDIzNiwgICAyNDgsICAgICAw
LCAgIDIzMywgICAyNTQsICAgMjMyLAorICAgICAgOTMsICAgICAwLCAgIDI2NCwgICAyNTgsICAg
MjQ1LCAgIDI1MiwgICAyNTYKIH07CiAKICAgLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0
YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwZ290b1tdID0KIHsKLSAgICAtMzQ3LCAgIC0zOSwg
IC0zNDcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0NywgICAgMzIsICAtMzQ3LAot
ICAgIC0zNDcsICAtMzQ3LCAgLTM0NywgICAgNjMsICAtMzQ3LCAgIC00OCwgICAtMzcsICAgLTkw
LCAgIC01NCwgICAgMTIsCi0gICAgICAxNCwgICAgMTYsICAgIDE4LCAgICAyMywgICAgIDksICAt
MzQ3LCAgIC05NiwgIC0xMjcsICAtMzQ3LCAgLTEzOCwKLSAgICAtMTI1LCAgLTM0NywgICAgMTMs
ICAgIDE1LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgIDE0NywgICAxODQsICAgMTc4LAotICAgICAx
NTMsICAtMzQ3LCAgLTM0NywgIC0zMjUsICAtMzQ3LCAgLTM0NywgIC0xMDYsICAgLTQ3LCAgIC02
OCwgICAyNzcsCi0gICAgLTM0NywgIC0zNDcsICAgMTAwLCAgICAgMCwgIC0zNDcsICAtMzQ3LCAg
LTM0NywgIC0zNDcsICAtMTAxLCAgLTEyMywKLSAgICAgIDYxLCAgIC0yMiwgIC0yMTQsICAgLTU2
LCAgLTIwMiwgIC0zMjMsICAtMTAyLCAgLTM0NywgIC0zNDcsICAtMTA5LAotICAgIC0zNDYsICAt
MzQ3LCAgLTM0NywgICAtODgsICAgICA4LCAgIC01MywgIC0zNDcsICAtMzQ3LCAgLTM0NywgIC0z
NDcsCi0gICAgLTM0NywgICAtNzcsICAtMzQ3LCAgLTM0NywgIC0zNDcsICAtMzQ3LCAgLTM0Nywg
IC0zNDcsICAtMzQ3LCAgLTM0NywKLSAgICAtMzQ3LCAgIDIxNywgIC0zNDcsICAtMzQ3CisgICAg
LTM2MSwgICAtMzksICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsICAg
IDczLCAgLTM2MSwKKyAgICAtMzYxLCAgLTM2MSwgIC0zNjEsICAtMTA3LCAgLTM2MSwgICAtMTUs
ICAgLTIwLCAgIC02NywgICAtMTksICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAgICA1MSwgICAg
NTcsICAgIDU4LCAgLTM2MSwgIC0xMTAsICAtMTMyLCAgLTM2MSwgIC0xNDYsCisgICAgLTEyNSwg
IC0zNjEsICAgICA2LCAgICAxMiwgIC0zNjEsICAtMzYxLCAgLTM2MSwgICAxOTAsICAgMjI4LCAg
IDIxNywKKyAgICAgMTk1LCAgLTM2MSwgIC0zNjEsICAtMzM2LCAgICAyNSwgIC0zNjEsICAtMTA0
LCAgICAyNywgICAtNTcsICAgMzIyLAorICAgIC0zNjEsICAtMzYxLCAgIDE0MSwgICAgIDAsICAt
MzYxLCAgLTM2MSwgIC0zNjEsICAtMzYxLCAgLTEwOSwgIC0xMzAsCisgICAgIDEwMCwgICAgMTks
ICAtMTg1LCAgIC0xNywgIC0xOTMsICAtMzEwLCAgIC02NSwgIC0zNjEsICAtMzYxLCAgIC03MCwK
KyAgICAtMzYwLCAgLTM2MSwgIC0zNjEsICAgLTkyLCAgICA0NiwgICAtMTMsICAtMzYxLCAgLTM2
MSwgIC0zNjEsICAtMzYxLAorICAgIC0zNjEsICAgLTM4LCAgLTM2MSwgIC0zNjEsICAtMzYxLCAg
LTM2MSwgIC0zNjEsICAtMzYxLCAgLTM2MSwgIC0zNjEsCisgICAgLTM2MSwgICAyNTksICAtMzYx
LCAgLTM2MQogfTsKIAogICAvKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29u
c3QgeXl0eXBlX2ludDE2IHl5ZGVmZ290b1tdID0KIHsKLSAgICAgIC0xLCAgIDIyNywgICAxNTMs
ICAgMTU0LCAgIDE1NSwgICAzMTUsICAgMTU2LCAgIDE1NywgICAxNTgsICAgMTU5LAotICAgICAx
NjAsICAgMTYxLCAgIDE2MiwgICAxOTksICAgMTY0LCAgIDE2NSwgICAxNjYsICAgMTY3LCAgIDE2
OCwgICAxNjksCi0gICAgIDE3MCwgICAxNzEsICAgMTcyLCAgIDE3MywgICAxNzQsICAgMTc1LCAg
IDIwMCwgICAyMDEsICAgMjk3LCAgIDIwMiwKLSAgICAgMTc3LCAgIDEwOSwgICAyMDMsICAgMjA0
LCAgICA2MywgICAgNjQsICAgIDY1LCAgIDEyNSwgICAgOTksICAgMTAwLAotICAgICAxMjYsICAg
IDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgIDEwMSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAg
NzMsCi0gICAgICA3NCwgICAxMjAsICAgMTIxLCAgIDE3OCwgICAgNzYsICAgIDc3LCAgIDE4MSwg
ICAxMTcsICAgMTM3LCAgIDEzOCwKLSAgICAgMjI4LCAgIDIyOSwgICAyMjUsICAgMjA2LCAgIDIw
NywgICAyMDgsICAgMjA5LCAgIDI4NSwgICAzNzgsICAgNDA1LAotICAgICAzNDIsICAgMzQzLCAg
IDM0NCwgICA0MDYsICAgMjEwLCAgIDIxMSwgICAyMTIsICAgMzkxLCAgIDIxMywgICAzOTIsCi0g
ICAgIDIxNCwgICAzNzcsICAgMjE1LCAgIDM1MCwgICAyNzQsICAgMzQ1LCAgIDM3MSwgICAzODgs
ICAgMzg5LCAgIDIxNiwKLSAgICAgIDc4LCAgICA3OSwgICAgODAsICAgIDkyCisgICAgICAtMSwg
ICAyMzAsICAgMTU2LCAgIDE1NywgICAxNTgsICAgMzE4LCAgIDE1OSwgICAxNjAsICAgMTYxLCAg
IDE2MiwKKyAgICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMjAyLCAgIDE2NywgICAxNjgsICAgMTY5
LCAgIDE3MCwgICAxNzEsICAgMTcyLAorICAgICAxNzMsICAgMTc0LCAgIDE3NSwgICAxNzYsICAg
MTc3LCAgIDE3OCwgICAyMDMsICAgMjA0LCAgIDMwMCwgICAyMDUsCisgICAgIDE4MCwgICAxMTEs
ICAgMjA2LCAgIDIwNywgICAgNjMsICAgIDY0LCAgICA2NSwgICAxMjgsICAgMTAxLCAgIDEwMiwK
KyAgICAgMTI5LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAxMDMsICAgIDcwLCAgICA3
MSwgICAgNzIsICAgIDczLAorICAgICAgNzQsICAgMTIzLCAgIDEyNCwgICAxODEsICAgIDc2LCAg
ICA3NywgICAxODQsICAgMTIwLCAgIDE0MCwgICAxNDEsCisgICAgIDIzMSwgICAyMzIsICAgMjI4
LCAgIDIwOSwgICAyMTAsICAgMjExLCAgIDIxMiwgICAyODgsICAgMzgxLCAgIDQwOCwKKyAgICAg
MzQ1LCAgIDM0NiwgICAzNDcsICAgNDA5LCAgIDIxMywgICAyMTQsICAgMjE1LCAgIDM5NCwgICAy
MTYsICAgMzk1LAorICAgICAyMTcsICAgMzgwLCAgIDIxOCwgICAzNTMsICAgMjc3LCAgIDM0OCwg
ICAzNzQsICAgMzkxLCAgIDM5MiwgICAyMTksCisgICAgICA3OCwgICAgNzksICAgIDgwLCAgICA5
NAogfTsKIAogICAvKiBZWVRBQkxFW1lZUEFDVFtTVEFURS1OVU1dXSAtLSBXaGF0IHRvIGRvIGlu
IHN0YXRlIFNUQVRFLU5VTS4gIElmCkBAIC05NTMsNDIwICs5NTQsMzk5IEBACiAgICAgIG51bWJl
ciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRBQkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiBz
dGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5dGFibGVbXSA9CiB7Ci0gICAgICA3NSwgICAgODks
ICAgMTEwLCAgIDEzNSwgICAxMjMsICAgMjI0LCAgIDIyMywgICAzMDUsICAgMzAxLCAgIDIzNCwK
LSAgICAgMzEyLCAgIDEzNSwgICAgOTUsICAgIDYxLCAgIDIzMSwgICAgNjIsICAgMTgwLCAgIDE3
NiwgICAgODYsICAgIDg3LAotICAgICAgIDcsICAgMzY4LCAgIDEwNiwgICAyNTMsICAgMjU0LCAg
IDM3NSwgICAzOTAsICAgMTEyLCAgIDM2MiwgICAxMDUsCi0gICAgIDI2NCwgICAxMzUsICAgMTI3
LCAgIDE4MywgICAyNDMsICAgMTc2LCAgIDM2MywgICAgODQsICAgIDg1LCAgIDE4NCwKLSAgICAg
IDgxLCAgIDEzNiwgICAgOTMsICAgIDk2LCAgICA5NywgICAgOTgsICAgMzc1LCAgICA5MCwgICAz
MTMsICAgMTM2LAotICAgICAgODgsICAgIDI3LCAgICAyOCwgICAyNzksICAgIDI5LCAgIDQxMSwg
ICAgOTQsICAgMjMxLCAgIDI1NSwgICAyNTYsCi0gICAgIDEyNywgICAxMDIsICAgIDM3LCAgIDEy
OSwgICAxMDMsICAgMjY1LCAgIDExMywgICAyMjYsICAgMjgxLCAgIDEzNiwKLSAgICAgIDc1LCAg
IDQwNCwgICAgODIsICAgMTExLCAgIDEzNSwgICAxMzUsICAgIDkxLCAgIDQwNCwgICAgNzUsICAg
MTMxLAotICAgICAyNjgsICAgMTc5LCAgIDIyMCwgICAxMTYsICAgMjQwLCAgIDExOCwgICAxMzIs
ICAgIDk1LCAgIDIxNywgICAyMjEsCi0gICAgIDI0MSwgICAgNjEsICAgMzU3LCAgICA2MiwgICAy
MjQsICAgMzA0LCAgIDMxNCwgICAxNzYsICAgMjk4LCAgIDMxNiwKLSAgICAgIDc1LCAgIDI5OSwg
ICAyOTgsICAgMzEwLCAgIDIzNSwgICAyMzYsICAgMzExLCAgIDExOSwgICAtOTYsICAgIDc1LAot
ICAgICAzNzIsICAgMTMwLCAgIDEzNiwgICAxMzYsICAgMzIwLCAgIDM3MywgICAyOTgsICAgIDc1
LCAgICA5NiwgICAgOTcsCi0gICAgICA5OCwgICAyOTgsICAgMjA1LCAgICA4MSwgICAxNzYsICAg
MjM3LCAgIDQwOCwgICAzNDAsICAgIDc1LCAgIDIzOCwKLSAgICAgMTgyLCAgIDI5OCwgICAyOTgs
ICAgMzEwLCAgIDM0NywgICAgNzUsICAgMzU5LCAgICA3NSwgICAzNDYsICAgMjU3LAotICAgICAy
NTgsICAgMzgwLCAgIDM0OCwgICAxMjIsICAgMzgyLCAgIDIzMSwgICAgIDIsICAgICAzLCAgICAg
NCwgICAzMDEsCi0gICAgIDI4NiwgICAyODcsICAgMjg4LCAgIDI4OSwgICAyOTAsICAgMjkxLCAg
IDI5MiwgICAyOTMsICAgMjk0LCAgIDI5NSwKLSAgICAgMTA0LCAgICA4NywgICAxMzUsICAgMzI4
LCAgIDMyOSwgICAzMzAsICAgMzMxLCAgIDM5NiwgICAxMzMsICAgMjk2LAotICAgICAzNTIsICAg
MzUzLCAgICA5NiwgICAgOTcsICAgIDk4LCAgIC0yOSwgICAxNjMsICAgMzU0LCAgIDIzOSwgICAy
MjQsCi0gICAgICA3NSwgICAgNzUsICAgIDg2LCAgICA4NywgICAzNjAsICAgMjQ2LCAgIDI0Nywg
ICAyNDgsICAgMjQ5LCAgIDQxMiwKLSAgICAgMjUwLCAgIDI1MSwgICAyNTIsICAgMjQ0LCAgIDE2
MywgICAyNjksICAgMjcwLCAgIDI5OCwgICAzNjUsICAgMjYwLAotICAgICAxMzYsICAgMzI0LCAg
IDMyNSwgICAzMzIsICAgMzMzLCAgIDI2MiwgICAxNzYsICAgMjU5LCAgIDIzMiwgICAyMzMsCi0g
ICAgIDIwNSwgICAyNjEsICAgMzc0LCAgIDE3NiwgICAzMjYsICAgMzI3LCAgIDI2MywgICAyNjYs
ICAgMjcyLCAgIDI3MywKLSAgICAgMjg0LCAgIDI3NSwgICAyNzYsICAgMjc3LCAgIDI4MCwgICAy
ODIsICAgMjgzLCAgIDI0NSwgICAyMjQsICAgLTI4LAotICAgICAzMDIsICAgMjI0LCAgIDMwNiwg
ICAzNzQsICAgMzA3LCAgIDMwOSwgICAtMjMsICAgMzg0LCAgIDM4NSwgICAzNTUsCi0gICAgIDM0
OSwgIC0yMzIsICAgMzU2LCAgIDM1OCwgICAzNzYsICAgMzY0LCAgIDM2NiwgICAyOTgsICAgMzk4
LCAgIC0zMCwKLSAgICAgMzc5LCAgIDM4MywgICAzODEsICAgMzg2LCAgIDIyNCwgICAzNjcsICAg
MTYzLCAgIDM5NCwgICAzOTcsICAgMzk1LAotICAgICAzOTksICAgNDA5LCAgIDQwMCwgICA0MDEs
ICAgMTk2LCAgIDM3NiwgICAxNzYsICAgNDAzLCAgICA3NSwgICA0MDcsCi0gICAgIDMxOSwgICAz
MzQsICAgNDEzLCAgIDMzOSwgICAzMzUsICAgMjE4LCAgIDIyNCwgICAzMzYsICAgMTI0LCAgIDEy
OCwKLSAgICAgMzM3LCAgIDIxOSwgICAgODMsICAgMTYzLCAgIDI3MSwgICAyMDUsICAgMzM4LCAg
IDMwOCwgICAzNjEsICAgMzY5LAotICAgICA0MDIsICAgNDEwLCAgIDM3MCwgICAzNTEsICAgMzg3
LCAgIDExNSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTEwLCAgIDMyMSwKLSAg
ICAgMzIyLCAgIDMyMywgICAxNjMsICAgMTYzLCAgIDE2MywgICAxNjMsICAgMTYzLCAgIDE2Mywg
ICAxNjMsICAgMTYzLAotICAgICAxNjMsICAgMTYzLCAgIDE2MywgICAxNjMsICAgMTYzLCAgIDE2
MywgICAxNjMsICAgMTYzLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDM5MywgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwNSwgICAyMDUsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAyMDUsICAgMjA1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTYzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgIDIw
NSwgICAxNjMsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDc1LCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgNzUsICAgIDkxLCAgIDEyNiwgICAyMjcsICAgMjM3LCAgIDE3OSwgICAgNjEsICAg
MTM4LCAgIDE2NiwgICAyMjYsCisgICAgIDIzNCwgICAxODMsICAgIDYyLCAgIDExMiwgICAzMTUs
ICAgMzkzLCAgIDEzOCwgICAzNzgsICAgIDk3LCAgIDI1MiwKKyAgICAgMzA0LCAgIDI1MywgICAg
OTIsICAgMjY3LCAgIDE3OSwgICAgIDcsICAgIDgzLCAgIDE2NiwgICAgODQsICAgMTA3LAorICAg
ICAgODgsICAgIDg5LCAgIDI0NiwgICAyNTYsICAgMjU3LCAgIDM2NSwgICAxMzgsICAgMzcxLCAg
IDM3OCwgICAzMDgsCisgICAgIDEzNCwgICAyMzUsICAgMjM2LCAgIDM2NiwgICA0MTQsICAgMTMw
LCAgICA5MywgICAxMzUsICAgMjgyLCAgICA5OCwKKyAgICAgIDk5LCAgIDEwMCwgICAzMTYsICAg
MjM0LCAgIDEzOSwgICAxODYsICAgIDI3LCAgICAyOCwgICAyNjgsICAgIDI5LAorICAgICAyNDgs
ICAgMTg3LCAgICA5MCwgICAxMzksICAgIDk1LCAgIDEzMiwgICAgOTYsICAgIDM3LCAgIDI1OCwg
ICAyNTksCisgICAgICA3NSwgICAyODQsICAgIDk3LCAgIDExMywgICAxMzAsICAgMjcxLCAgIDI0
MywgICAxMjEsICAgIDc1LCAgIDEzOCwKKyAgICAgMTM4LCAgIDIyOSwgICAyNDQsICAgMTM5LCAg
ICA2MSwgICAxMTksICAgMTc5LCAgIDQwNywgICAyMjMsICAgMTY2LAorICAgICAgNjIsICAgMjIw
LCAgIDIyNywgICA0MDcsICAgMzE5LCAgIDIyNCwgICAxMDgsICAgMTE1LCAgIDMwNywgICAxMjIs
CisgICAgIDMxNywgICAxMTQsICAgIDc1LCAgICA5OCwgICAgOTksICAgMTAwLCAgIDMwMSwgICAy
MzgsICAgMjM5LCAgIDM3NSwKKyAgICAgMTE4LCAgICA3NSwgICAzMjMsICAgMTc5LCAgIC05Niwg
ICAzMDEsICAgMTY2LCAgIDEzMywgICAxMDQsICAgMTI1LAorICAgICAgNzUsICAgMTA1LCAgIDM0
MywgICAzNzYsICAgMzYwLCAgIDIwOCwgICAxMzksICAgMTM5LCAgIDI0MCwgICAzMDEsCisgICAg
IDE4NSwgICAgNzUsICAgMjQxLCAgIDM0OSwgICAgIDIsICAgICAzLCAgICAgNCwgICAzNTEsICAg
IDc1LCAgIDEzNiwKKyAgICAgIDc1LCAgIDIzNCwgICAzMjQsICAgMzI1LCAgIDMyNiwgICAxNjYs
ICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY2LAorICAgICAxNjYsICAgMTY2LCAgIDE2NiwgICAx
NjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsCisgICAgIDE2Niwg
ICAzMDQsICAgIDgzLCAgIDMwMSwgICAgODQsICAgNDExLCAgIDMwMiwgICAxMzgsICAgMzU1LCAg
IDM1NiwKKyAgICAgMTgyLCAgIDMwMSwgICAzMTMsICAgMzgzLCAgIC0yOSwgICAzMTQsICAgMzg1
LCAgIDIyNywgICAzMDEsICAgMzEzLAorICAgICAzNTcsICAgMzUwLCAgIDM2MiwgICAgNzUsICAg
IDc1LCAgICA4NiwgICAgODcsICAgMzYzLCAgICAgNywgICAzMzEsCisgICAgIDMzMiwgICAzMzMs
ICAgMzM0LCAgIDEwNiwgICAgODksICAgMTc5LCAgICA4OCwgICAgODksICAgMTY2LCAgIDM5OSwK
KyAgICAgMjYwLCAgIDI2MSwgICAxNzksICAgMjcyLCAgIDI3MywgICAxNjYsICAgMjQyLCAgIDM3
NywgICAgOTgsICAgIDk5LAorICAgICAxMDAsICAgMjU0LCAgIDI1NSwgICAyMDgsICAgMTM5LCAg
IDI0OSwgICAyNTAsICAgMjUxLCAgIDI0NywgICAgMjcsCisgICAgICAyOCwgICA0MTUsICAgIDI5
LCAgICA4MSwgICAzMDEsICAgMzY4LCAgIDIyNywgICAyNjMsICAgMzc3LCAgIDIyNywKKyAgICAg
IDM3LCAgICAzOCwgICAgMzksICAgICA3LCAgIDMyOSwgICAzMzAsICAgMzg4LCAgIDMyNywgICAz
MjgsICAgMjY0LAorICAgICAzODcsICAgMzM1LCAgIDMzNiwgICA0MDEsICAgMjYyLCAgIDI2NSwg
ICAyNjYsICAgMjY5LCAgIDI3NSwgICAzNzksCisgICAgIDI3NiwgICAyNzgsICAgMjI3LCAgIDI3
OSwgICAzNzAsICAgMTc5LCAgIDQxMiwgICAyODAsICAgMTY2LCAgIDI4MywKKyAgICAgMjg1LCAg
IDI4NiwgICAtMjgsICAgMzA5LCAgICAyNywgICAgMjgsICAgMzEwLCAgICAyOSwgICAgODEsICAg
Mjg3LAorICAgICAzNzksICAgIDc1LCAgIDMwNSwgICAzMTIsICAgMjI3LCAgICAzNywgICAgMzgs
ICAgIDM5LCAgIDI4OSwgICAyOTAsCisgICAgIDI5MSwgICAyOTIsICAgMjkzLCAgIDI5NCwgICAy
OTUsICAgMjk2LCAgIDI5NywgICAyOTgsICAgMjA4LCAgLTIzNCwKKyAgICAgLTIzLCAgIDM1OCwg
ICAzNTIsICAgMzU5LCAgIDM2NywgICAzNjEsICAgLTMwLCAgIDI5OSwgICAzNjksICAgMzAxLAor
ICAgICAgODIsICAgMzgyLCAgIDM4NCwgICAzODYsICAgMzg5LCAgIDQwMiwgICAzOTcsICAgMzk4
LCAgIDQwMywgICA0MDAsCisgICAgIDQwNCwgICA0MTAsICAgMTk5LCAgIDQxNiwgICAzMjIsICAg
MzM3LCAgIDM0MCwgICAzMzgsICAgNDA2LCAgIDMzOSwKKyAgICAgMTMxLCAgIDIyMSwgICAxMTIs
ICAgMzQxLCAgIDEyNywgICAzNDIsICAgMjIyLCAgICA4NSwgICAyNzQsICAgMzExLAorICAgICA0
MDUsICAgMzcyLCAgIDM2NCwgICA0MTMsICAgMzU0LCAgIDM3MywgICAzOTAsICAgMTE3LCAgICAg
MCwgICAzOTYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAyMDgsICAgMjA4LCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA4
LCAgIDIwOCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMDUsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMjA1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0g
ICAgICAxMCwgICAgMTEsICAgMTg1LCAgIDE4NiwgICAxODcsICAgMTYzLCAgIDE4OCwgICAxODks
ICAgMTkwLCAgIDE5MSwKLSAgICAgMTkyLCAgIDE5MywgICAxOTQsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAotICAgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCi0gICAgICAg
MCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2
LCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgIDE5NSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAs
ICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsCi0gICAgICA1NiwgICAg
NTcsICAgIDU4LCAgICA1OSwgICAxMzksICAgIDYwLCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0
MywKLSAgICAgMTQ0LCAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0NiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA4
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzUsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAxNDcsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk2LCAgIDE5Nywg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDE5OCwgICAxNDksICAgMTUwLCAgIDE1
MSwgICAxNTIsICAgICAxLCAgICAgMiwgICAgIDMsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTg1LCAgIDE4NiwKLSAgICAgMTg3
LCAgICAgMCwgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQs
ICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LAotICAgICAxOTUsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsCi0gICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUs
ICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwKLSAgICAgMTM5LCAgICA2MCwgICAx
NDAsICAgMTQxLCAgIDE0MiwgICAxNDMsICAgMTQ0LCAgICAgMCwgICAgIDAsICAgMTQ1LAotICAg
ICAxNDYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTQ3LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAxOTYsICAg
MzAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTgsICAgMTQ5LAotICAgICAxNTAs
ICAgMTUxLCAgIDE1MiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxODUsICAgMTg2LCAgIDE4
NywgICAgIDAsICAgMTg4LCAgIDE4OSwKLSAgICAgMTkwLCAgIDE5MSwgICAxOTIsICAgMTkzLCAg
IDE5NCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
Ci0gICAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgMTk1LCAgICA0MiwgICAgNDMsICAgIDQ0LAotICAgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCi0gICAg
ICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDEzOSwgICAgNjAsICAg
MTQwLCAgIDE0MSwKLSAgICAgMTQyLCAgIDE0MywgICAxNDQsICAgICAwLCAgICAgMCwgICAxNDUs
ICAgMTQ2LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjA4LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDIwOCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwKKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxODgsICAgMTg5
LCAgIDE5MCwgICAgIDAsICAgMTkxLAorICAgICAxOTIsICAgMTkzLCAgIDE5NCwgICAxOTUsICAg
MTk2LCAgIDE5NywgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwK
KyAgICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAg
ICA0MCwgICAgNDEsICAgMTk4LCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKKyAgICAg
IDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDE0MiwgICAg
NjAsICAgMTQzLAorICAgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwg
ICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDE0NywgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTYsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk4LCAgIDE0OSwgICAxNTAs
ICAgMTUxLCAgIDE1MiwgICAgIDEsCi0gICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAgMTg1LCAgIDE4Niwg
ICAxODcsICAgICAwLCAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5MSwgICAxOTIsICAgMTkzLAot
ICAgICAxOTQsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAg
NDAsICAgIDQxLCAgIDE5NSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywKLSAgICAgIDU4LCAgICA1OSwgICAxMzksICAgIDYw
LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNDQsICAgICAwLAotICAgICAgIDAsICAg
MTQ1LCAgIDE0NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTUwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE5OSwKKyAgICAgMjAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAyMDEsICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU1LAorICAgICAgIDEsICAgICAyLCAg
ICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisg
ICAgICAxMSwgICAxODgsICAgMTg5LCAgIDE5MCwgICAgIDAsICAgMTkxLCAgIDE5MiwgICAxOTMs
ICAgMTk0LCAgIDE5NSwKKyAgICAgMTk2LCAgIDE5NywgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAorICAgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsCisgICAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LCAgICAzOCwKKyAgICAgIDM5LCAgICA0MCwgICAgNDEsICAgMTk4LCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEs
ICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsCisgICAgICA1NywgICAg
NTgsICAgIDU5LCAgIDE0MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0
NywKKyAgICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgIDE0NywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAxMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgMTk4LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDQsICAgICA1LAotICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwgICAxODUsICAgMTg2LCAgIDE4NywgICAgIDAsCi0gICAgIDE4OCwgICAxODksICAgMTkwLCAg
IDE5MSwgICAxOTIsICAgMTkzLCAgIDE5NCwgICAgMTIsICAgIDEzLCAgICAxNCwKLSAgICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAg
MzAsICAgIDMxLCAgICAzMiwgICAgMzMsCi0gICAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywg
ICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgMTk1LCAgICA0MiwKLSAgICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUy
LAotICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAg
IDU5LCAgIDEzOSwgICAgNjAsCi0gICAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNDQs
ICAgICAwLCAgICAgMCwgICAxNDUsICAgMTQ2LCAgICAgMCwKKyAgICAgICAwLCAgIDE1MCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxOTksICAgMzAzLCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAgIDAsICAgMjAxLCAgIDE1MiwgICAxNTMsICAgMTU0LCAgIDE1NSwgICAgIDEsICAgICAyLCAg
ICAgMywgICAgIDQsCisgICAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LCAgICAxMSwgICAxODgsICAgMTg5LCAgIDE5MCwKKyAgICAgICAwLCAgIDE5MSwgICAxOTIsICAg
MTkzLCAgIDE5NCwgICAxOTUsICAgMTk2LCAgIDE5NywgICAgMTIsICAgIDEzLAorICAgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgMTk4LAorICAgICAgNDIsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEs
CisgICAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAg
NTgsICAgIDU5LCAgIDE0MiwKKyAgICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0Niwg
ICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LAogICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0NywgICAgIDAsICAg
ICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTk4LCAgIDE0OSwgICAxNTAsICAgMTUxLAotICAgICAxNTIsICAgICAxLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwg
ICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgMTcsICAgIDE4LAotICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCi0gICAgICAgMCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywK
LSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsCi0gICAgICA1NiwgICAgNTcsICAgIDU4
LCAgICA1OSwgICAxMzksICAgIDYwLCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywKLSAgICAg
MTQ0LCAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDEzNCwgICAgIDIsCi0gICAgICAgMywgICAgIDQsICAgMTQ3LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwKLSAgICAgICAwLCAg
ICAgMCwgICAxOTgsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgICAgMCwgICAgIDAsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTUwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAxOTksICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAyMDEsICAgMTUyLCAgIDE1MywKKyAgICAgMTU0LCAgIDE1NSwg
ICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAor
ICAgICAgIDksICAgIDEwLCAgICAxMSwgICAxODgsICAgMTg5LCAgIDE5MCwgICAgIDAsICAgMTkx
LCAgIDE5MiwgICAxOTMsCisgICAgIDE5NCwgICAxOTUsICAgMTk2LCAgIDE5NywgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAg
MjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgMTk4LCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAorICAgICAgIDAsICAg
IDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDE0MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAx
NDUsCisgICAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTI1LCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwMSwgICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUs
ICAgICAxLCAgICAgMiwKKyAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAg
IDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTg4LAorICAgICAxODksICAgMTkwLCAgICAgMCwg
ICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQsICAgMTk1LCAgIDE5NiwgICAxOTcsCiAgICAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwKICAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAgMCwgICAgMjksICAgIDMwLAogICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQs
ICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCi0gICAgICA0MSwgICAg
IDAsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0
OSwKKyAgICAgIDQxLCAgIDE5OCwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LAogICAgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0
LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsCi0gICAgICA1OSwgICAxMzksICAg
IDYwLCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNDQsICAgICAwLCAgICAgMCwKLSAg
ICAgMTQ1LCAgIDE0NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAyLCAgICAg
MywgICAgIDQsICAgICAwLCAgICAgMCwgICAxNDcsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMTQ5
LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LAotICAgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKLSAgICAgIDM2LCAgICAg
MCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0
LAotICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsCi0gICAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgs
ICAgICAwLCAgIDEwNywgICAgNjAsICAgICAwLCAgICAgMCwKLSAgICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwgICAgMTYsCi0gICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDEwOCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAotICAgICAgMzYs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAgICA0Mywg
ICAgNDQsCi0gICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1
MSwgICAgNTIsICAgIDUzLCAgICA1NCwKLSAgICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAg
ICA1OCwgICAgIDAsICAgMTM5LCAgICA2MCwgICAxNDAsICAgMTQxLAotICAgICAxNDIsICAgMTQz
LCAgIDE0NCwgICAgIDAsICAgICAwLCAgIDE0NSwgICAxNDYsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICA1OSwgICAxNDIsICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAx
NDcsICAgICAwLCAgICAgMCwKKyAgICAgMTQ4LCAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsCisgICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDIwMSwKKyAgICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU1LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAg
ICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAg
IDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAgICA0MywK
KyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1
MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAg
ICA1OCwgICAgNTksICAgMTQyLCAgICA2MCwgICAxNDMsCisgICAgIDE0NCwgICAxNDUsICAgMTQ2
LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDksICAgICAwLCAgICAgMCwKICAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ3LCAgICAgMCwg
ICAgIDAsICAgMTQ4LCAgICAgOCwgICAgIDksCi0gICAgICAxMCwgICAgMTEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgICAgMCwKKyAgICAgICAwLCAg
IDEzNywgICAgIDIsICAgICAzLCAgICAgNCwgICAxNTAsICAgICA2LCAgICAgNywgICAgIDgsICAg
ICA5LAorICAgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwMSwgICAxNTIs
ICAgMTUzLCAgIDE1NCwgICAxNTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwKLSAgICAgIDE5LCAgICAyMCwg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLAot
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAgIDAsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAg
IDAsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKICAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAwLAotICAgICAgNTYsICAg
IDU3LCAgICA1OCwgICAgIDAsICAgMTM5LCAgICA2MCwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAx
NDMsCi0gICAgIDE0NCwgICAgIDAsICAgICAwLCAgIDE0NSwgICAxNDYsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgIDE0
MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LAorICAgICAxNDcsICAgICAwLCAg
ICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDIs
ICAgICAzLCAgICAgNCwKKyAgICAgICAwLCAgICAgMCwgICAxNTAsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUsICAgICAwLCAgICAxMiwgICAgMTMsCisgICAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMzEsICAgIDMyLAorICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQwLCAgICA0MSwgICAgIDAsCisgICAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1
MSwKKyAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAg
ICA1OCwgICAgIDAsICAgMTA5LAorICAgICAgNjAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywKKyAg
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgMTEwLCAgICAzMSwgICAgMzIsCisgICAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwKKyAgICAgIDQy
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAs
ICAgIDUxLAorICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAwLCAgICA1NiwgICAg
NTcsICAgIDU4LCAgICAgMCwgICAxNDIsCisgICAgICA2MCwgICAxNDMsICAgMTQ0LCAgIDE0NSwg
ICAxNDYsICAgMTQ3LCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OSwKICAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgIDE0NywgICAgIDAsICAgICAwLCAgIDIyMiwgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgMTEsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0OSwgICAxNTAs
ICAgMTUxLCAgIDE1MiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAxMiwgICAg
MTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAg
ICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDQwLCAgICA0MSwgICAgIDAsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDks
ICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAwLCAgICA1Niwg
ICAgNTcsCi0gICAgICA1OCwgICAgIDAsICAgMTM5LCAgICA2MCwgICAxNDAsICAgMTQxLCAgIDE0
MiwgICAxNDMsICAgMTQ0LCAgICAgMCwKLSAgICAgICAwLCAgIDE0NSwgICAxNDYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
Ci0gICAgIDE0NywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgMjc4LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1Miwg
ICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTUwLCAgICAgMCwgICAgIDAsCisgICAg
IDE1MSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTUyLCAgIDE1MywKKyAgICAgMTU0LCAgIDE1NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAogICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCiAgICAgICAyNiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzMSwgICAgMzIsICAgIDMzLCAg
ICAzNCwKICAgICAgIDM1LCAgICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQx
LCAgICAgMCwgICAgNDIsICAgIDQzLAogICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUs
ICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICAgMCwgICAxMzksICAgIDYwLCAgIDE0MCwK
LSAgICAgMTQxLCAgIDE0MiwgICAxNDMsICAgMTQ0LCAgICAgMCwgICAgIDAsICAgMTQ1LCAgIDE0
NiwgICAgIDAsICAgICAwLAorICAgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAg
ICA1OCwgICAgIDAsICAgMTQyLCAgICA2MCwgICAxNDMsCisgICAgIDE0NCwgICAxNDUsICAgMTQ2
LCAgIDE0NywgICAgIDAsICAgICAwLCAgIDE0OCwgICAxNDksICAgICAwLCAgICAgMCwKICAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0Nywg
ICAgIDAsICAgICAwLCAgIDMwMywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgIDExLCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAwLCAgICAgMCwgICAyMjUsICAg
ICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTIs
ICAgMTUzLCAgIDE1NCwgICAxNTUsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKICAgICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0
LCAgICAzNSwgICAgMzYsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAg
ICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKICAgICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAotICAgICAg
IDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgIDEzOSwgICAgNjAsICAgMTQwLCAgIDE0
MSwgICAxNDIsCi0gICAgIDE0MywgICAxNDQsICAgICAwLCAgICAgMCwgICAxNDUsICAgMTQ2LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4
LCAgICAgMCwgICAxNDIsICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LAorICAgICAxNDYsICAg
MTQ3LCAgICAgMCwgICAgIDAsICAgMTQ4LCAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ3LCAgICAg
OCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgICAgMCwgICAgMTIsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1MCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjgxLCAgIDE1MiwgICAx
NTMsICAgMTU0LCAgIDE1NSwgICAgIDAsICAgIDEyLAogICAgICAgMTMsICAgIDE0LCAgICAxNSwg
ICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCiAgICAgICAy
MywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAzMSwKLSAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgNDAsICAgMjQyLAorICAgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsCiAgICAgICAgMCwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwKICAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAg
ICA1NywgICAgNTgsICAgICAwLAotICAgICAxMzksICAgIDYwLCAgIDE0MCwgICAxNDEsICAgMTQy
LCAgIDE0MywgICAxNDQsICAgICAwLCAgICAgMCwgICAxNDUsCi0gICAgIDE0NiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNCwgICAgIDIsICAgICAzLCAgICAgNCwg
ICAxNDcsICAgICA2LAotICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDksCi0gICAgIDE1MCwgICAxNTEsICAgMTUyLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKLSAgICAgIDE2
LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAzMywgICAgMzQsCi0gICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAgICA0MywKLSAgICAgIDQ0LCAgICA0
NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUz
LAotICAgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAg
ICAwLCAgICA2MCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNCwKLSAgICAgICAyLCAgICAgMywgICAg
IDQsICAgICAwLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAg
ICAxNDIsICAgIDYwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAg
ICAgMCwgICAxNDgsCisgICAgIDE0OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICAwLAorICAgICAgIDAs
ICAgMzA2LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxNTIsCisgICAgIDE1MywgICAxNTQsICAgMTU1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMs
CisgICAgICAzNCwgICAgMzUsICAgIDM2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAg
NDEsICAgICAwLCAgICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLAorICAgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgIDE0MiwgICAgNjAsCisgICAg
IDE0MywgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgICAwLCAgICAgMCwgICAxNDgsICAg
MTQ5LCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAyMzAsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAg
ICAyOSwKLSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LAotICAgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAs
ICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywK
LSAgICAgIDU4LCAgICA1OSwgICAgIDAsICAgIDYwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM0LCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsCi0gICAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNjcsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAg
MCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKLSAgICAgIDM1LCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIsICAg
IDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAs
ICAgIDUxLCAgICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAgICAwLCAgICA1NiwgICAg
NTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgIDYwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE0LCAgICAgMCwgICAgIDAsICAgICAxLAot
ICAgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMzQxLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAg
MCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIDQwLCAgICA0MSwgICAgIDAsICAgIDQy
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAg
IDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgICAwLCAgICA1NiwgICAg
NTcsCi0gICAgICA1OCwgICAgNTksICAgICAwLCAgICA2MCwgICAgIDEsICAgICAyLCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwKLSAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTAsICAgICA4LCAgICAgOSwgICAgMTAsCisg
ICAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTIs
ICAgMTUzLCAgIDE1NCwKKyAgICAgMTU1LCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LAorICAgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICA0MCwgICAyNDUsICAgICAwLCAgICA0MiwgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEs
ICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsCisgICAgICA1NywgICAg
NTgsICAgICAwLCAgIDE0MiwgICAgNjAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0
NywKKyAgICAgICAwLCAgICAgMCwgICAxNDgsICAgMTQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgMTM3LCAgICAgMiwgICAgIDMsCisgICAgICAgNCwgICAxNTAsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAxNTIsICAgMTUzLCAgIDE1NCwgICAxNTUsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAs
ICAgIDQxLAorICAgICAgIDAsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAg
NDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCisgICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwg
ICAgNTUsICAgICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwKKyAgICAgICAwLCAgICA2
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LAorICAgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAg
ICA2LCAgICAgNywgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgMjMzLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAorICAg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgMjcsCisgICAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKKyAgICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgIDAsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwg
ICAgNTUsCisgICAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLCAgICA2
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDIsICAgICAzLAorICAgICAgIDQsICAgICAw
LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMjcwLCAgICAxMiwKKyAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LCAgICAzMCwgICAgMzEsCisgICAg
ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwKKyAgICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYs
ICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAorICAgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksCisgICAgICAgMCwg
ICAgNjAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDExNiwKKyAgICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDM0NCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywK
KyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCisgICAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAg
IDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsICAgIDU1LAorICAgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwg
ICAgNjAsICAgICAxLCAgICAgMiwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAgMCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAor
ICAgICAgIDAsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsCisgICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAg
ICAwLCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwKKyAgICAgICAwLCAgICA2MCwgICAxMzcs
ICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAg
IDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAg
ICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAorICAgICAgIDAsICAgIDU2LCAg
ICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwgICAgNjAsICAgICAyLCAgICAgMywgICAgIDQsCisg
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsCisgICAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMx
LCAgICAzMiwKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICA0MCwgICAgNDEsICAgICAwLAorICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCisgICAgICA1MiwgICAg
NTMsICAgIDU0LCAgICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgICAg
MCwKKyAgICAgIDYwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCiAgICAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAg
ICAgIDI2LCAgICAyNywgICAgMjgsICAgICAwLCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LAotICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsCisgICAgICAyNiwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAgIDM1
LCAgICAzNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDAsICAgIDQxLCAgICAgMCwgICAgNDIs
ICAgIDQzLAogICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIDUxLCAgICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAgICAwLCAgICA1Niwg
ICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgIDYwLCAgIDEzNCwKLSAgICAgICAyLCAgICAg
MywgICAgIDQsICAgICAwLCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAgIDIxLCAgICAyMiwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgIDAsICAgIDI5LAotICAg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksCi0gICAgICA0MCwgICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAgIDU3LAotICAgICAgNTgs
ICAgIDU5LCAgICAgMCwgICAgNjAsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
Ci0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwKLSAgICAgIDM2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwg
ICAgNDEsICAgICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LAotICAgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCi0gICAg
ICA1NSwgICAgIDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgICAgMCwgICAgNjAsICAg
ICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCi0gICAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0
LCAgICAzNSwgICAgMzYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAg
ICAwLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwK
LSAgICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgIDMxNywgICAgNjAsICAgICA4LCAgICAg
OSwgICAgMTAsICAgIDExLAotICAgICAzMTgsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwg
ICAgMzYsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICA0MCwgICAgNDEsICAgICAwLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAg
ICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAgMCwgICAgNTYsICAg
IDU3LAotICAgICAgNTgsICAgICAwLCAgICAgMCwgICAgNjAKKyAgICAgIDU0LCAgICA1NSwgICAg
IDAsICAgIDU2LCAgICA1NywgICAgNTgsICAgICAwLCAgIDMyMCwgICAgNjAsICAgICA4LAorICAg
ICAgIDksICAgIDEwLCAgICAxMSwgICAzMjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwg
ICAgMzYsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MCwgICAgNDEsICAgICAwLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAorICAgICAgIDAsICAgIDU2
LCAgICA1NywgICAgNTgsICAgICAwLCAgICAgMCwgICAgNjAKIH07CiAKIHN0YXRpYyBjb25zdCB5
eXR5cGVfaW50MTYgeXljaGVja1tdID0KIHsKLSAgICAgICAwLCAgICA0MCwgICAgNzAsICAgMTA5
LCAgICA5MiwgICAxMzIsICAgMTMxLCAgIDIyMSwgICAyMTAsICAgMTQ3LAotICAgICAgNzYsICAg
MTE3LCAgICAgOSwgICAgIDAsICAgMTM3LCAgICAgMCwgICAxMTcsICAgMTEzLCAgICA3NiwgICAg
NzcsCi0gICAgICAgOSwgICAzNDQsICAgIDY5LCAgICA4NywgICAgODgsICAgMzUwLCAgIDM3Miwg
ICAgNzQsICAgMTA2LCAgICA2OCwKLSAgICAgIDkyLCAgIDEzNywgICAxMDAsICAgMTA1LCAgIDE2
MSwgICAxMzEsICAgMTE0LCAgICA0MCwgICAgNDEsICAgMTExLAotICAgICAgNDQsICAgMTA5LCAg
IDEwNSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAzNzEsICAgMTA0LCAgIDExNCwgICAxMTcsCi0g
ICAgIDEwOCwgICAgNDAsICAgIDQxLCAgIDE5MSwgICAgNDMsICAgNDAxLCAgIDExMSwgICAxODAs
ICAgMTIyLCAgIDEyMywKLSAgICAgMTI4LCAgIDExMSwgICAgNTEsICAgMTAyLCAgIDExNCwgICAx
MjcsICAgMTA2LCAgIDEzNSwgICAxOTMsICAgMTM3LAotICAgICAgNzAsICAgMzk0LCAgICA3Niwg
ICAgNzMsICAgMTgwLCAgIDE4MSwgICAxMTQsICAgNDAwLCAgICA3OCwgICAxMDYsCi0gICAgIDE4
MSwgICAxMTQsICAgMTA2LCAgICA4MywgICAxMDUsICAgMTA4LCAgIDExMywgICAgIDksICAgMTI3
LCAgIDExMywKLSAgICAgMTExLCAgICA3OCwgICAzMDYsICAgIDc4LCAgIDIyMSwgICAyMjAsICAg
MTA1LCAgIDE5MywgICAxMTEsICAgMjM3LAotICAgICAxMDAsICAgMTE0LCAgIDExMSwgICAxMTEs
ICAgIDg1LCAgICA4NiwgICAxMTQsICAgIDc2LCAgIDEwNSwgICAxMDksCi0gICAgIDEwNSwgICAx
MDQsICAgMTgwLCAgIDE4MSwgICAyNDEsICAgMTA1LCAgIDExMSwgICAxMTcsICAgIDQwLCAgICA0
MSwKLSAgICAgIDQyLCAgIDExMSwgICAxMjIsICAgIDQ0LCAgIDIyMCwgICAxMDYsICAgMTA1LCAg
IDI2NSwgICAxMjgsICAgMTEwLAotICAgICAxMTMsICAgMTExLCAgIDExMSwgICAxMTEsICAgMTE0
LCAgIDEzNSwgICAxMTQsICAgMTM3LCAgIDI3NiwgICAgODksCi0gICAgICA5MCwgICAzNTUsICAg
MjgwLCAgIDEwOCwgICAzNTgsICAgMjY4LCAgICAgNCwgICAgIDUsICAgICA2LCAgIDM1MSwKLSAg
ICAgIDk0LCAgICA5NSwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMSwg
ICAxMDIsICAgMTAzLAotICAgICAgNzYsICAgIDc3LCAgIDI2OCwgICAyNTMsICAgMjU0LCAgIDI1
NSwgICAyNTYsICAgMzgxLCAgIDEwOCwgICAxMTMsCi0gICAgIDI5NywgICAyOTgsICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgMTA0LCAgIDExMywgICAzMDIsICAgMTA1LCAgIDMwNiwKLSAgICAgMTgw
LCAgIDE4MSwgICAgNzYsICAgIDc3LCAgIDMwOSwgICAxMTksICAgMTIwLCAgIDEyMSwgICAxMTYs
ICAgNDAzLAotICAgICAxMTgsICAgIDgzLCAgICA4NCwgICAxMDQsICAgMTMxLCAgICA3OSwgICAg
ODAsICAgMTExLCAgIDExMiwgICAxMjUsCi0gICAgIDI2OCwgICAyNDksICAgMjUwLCAgIDI1Nywg
ICAyNTgsICAgIDkxLCAgIDMwMiwgICAxMjYsICAgMTQ1LCAgIDE0NiwKLSAgICAgMjEwLCAgIDEy
NCwgICAzNTAsICAgMzA5LCAgIDI1MSwgICAyNTIsICAgIDkzLCAgIDEwNywgICAxMTQsICAgMTE0
LAotICAgICAxMDksICAgMTA0LCAgIDEwNCwgICAxMTQsICAgMTA0LCAgIDExMiwgICAxMDQsICAg
MTY0LCAgIDM1NSwgICAxMDQsCi0gICAgIDEwNiwgICAzNTgsICAgMTEzLCAgIDM3MSwgICAxMDcs
ICAgMTA2LCAgIDEwNSwgICAzNjIsICAgMzY1LCAgIDExMywKLSAgICAgMTEyLCAgIDEwOCwgICAx
MDcsICAgMTEzLCAgIDM1MCwgICAxMDcsICAgIDU2LCAgIDExMSwgICAzODYsICAgMTA0LAotICAg
ICAxMDcsICAgMTA3LCAgIDExMywgICAxMDQsICAgMzgxLCAgIDM0MywgICAxOTMsICAgMTA1LCAg
IDEwNywgICAxMDksCi0gICAgIDExNCwgICAzOTksICAgMTA1LCAgICAxNywgICAxMDgsICAgMzcx
LCAgIDM2MiwgICAxMTMsICAgMjY4LCAgIDExNCwKLSAgICAgMjM4LCAgIDI1OSwgICAxMTQsICAg
MjY0LCAgIDI2MCwgICAxMjgsICAgNDAzLCAgIDI2MSwgICAgOTQsICAgMTAxLAotICAgICAyNjIs
ICAgMTI4LCAgICAgNSwgICAyMjAsICAgMTg0LCAgIDI4NSwgICAyNjMsICAgMjI2LCAgIDMxMCwg
ICAzNDUsCi0gICAgIDM5MiwgICA0MDAsICAgMzQ1LCAgIDI4NSwgICAzNzEsICAgIDc4LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNzYsICAgMjQ2LAotICAgICAyNDcsICAgMjQ4
LCAgIDI0OSwgICAyNTAsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjU0LCAgIDI1NSwgICAyNTYs
Ci0gICAgIDI1NywgICAyNTgsICAgMjU5LCAgIDI2MCwgICAyNjEsICAgMjYyLCAgIDI2MywgICAy
NjQsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMzc1LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgMzQ0LCAgIDM0NSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
IDM1MCwgICAzNTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzMDIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgMzcxLCAgIDMwOSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAzNzYsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgMCwg
ICAgNDAsICAgIDk0LCAgIDEzNSwgICAxNTAsICAgMTE1LCAgICAgMCwgICAxMTEsICAgMTE1LCAg
IDEzNCwKKyAgICAgMTQwLCAgIDEyMCwgICAgIDAsICAgIDcwLCAgICA3NiwgICAzNzUsICAgMTIw
LCAgIDM1MywgICAgIDksICAgMTE2LAorICAgICAyMTMsICAgMTE4LCAgIDEwNCwgICAgOTIsICAg
MTM0LCAgICAgOSwgICAgIDEsICAgMTM0LCAgICAgMSwgICAgNjgsCisgICAgICA3NiwgICAgNzcs
ICAgMTY0LCAgICA4NywgICAgODgsICAgMTA2LCAgIDE0MCwgICAzNDcsICAgMzc0LCAgIDIyNCwK
KyAgICAgMTA2LCAgIDE0OCwgICAxNDksICAgMTE0LCAgIDQwNCwgICAxMDIsICAgMTE0LCAgIDEx
MywgICAxOTQsICAgIDQwLAorICAgICAgNDEsICAgIDQyLCAgIDExNCwgICAxODMsICAgMTExLCAg
IDEwNSwgICAgNDAsICAgIDQxLCAgIDEyNywgICAgNDMsCisgICAgIDE2NywgICAxMTEsICAgMTA4
LCAgIDEyMCwgICAxMDUsICAgMTA0LCAgIDExMSwgICAgNTEsICAgMTIyLCAgIDEyMywKKyAgICAg
IDcwLCAgIDE5NiwgICAgIDksICAgIDczLCAgIDEzMSwgICAxODQsICAgMTA1LCAgIDEwOCwgICAg
NzgsICAgMTgzLAorICAgICAxODQsICAgMTM4LCAgIDExMSwgICAxNDAsICAgIDc4LCAgICA4NSwg
ICAxOTYsICAgMzk3LCAgIDEwNiwgICAxOTYsCisgICAgICA3OCwgICAxMzAsICAgMjI0LCAgIDQw
MywgICAyNDAsICAgMTEzLCAgICA2OSwgICAxMDYsICAgMjIzLCAgICA3NiwKKyAgICAgMTA1LCAg
ICA3NCwgICAxMDIsICAgIDQwLCAgICA0MSwgICAgNDIsICAgMTExLCAgICA4NSwgICAgODYsICAg
MTA1LAorICAgICAgODMsICAgMTExLCAgIDI0NCwgICAyMjMsICAgMTA1LCAgIDExMSwgICAyMjMs
ICAgMTA0LCAgIDExMSwgICAxMDgsCisgICAgIDEyMCwgICAxMTQsICAgMjY4LCAgIDEwNSwgICAz
MDksICAgMTI1LCAgIDE4MywgICAxODQsICAgMTA2LCAgIDExMSwKKyAgICAgMTEzLCAgIDEzMSwg
ICAxMTAsICAgMjc5LCAgICAgNCwgICAgIDUsICAgICA2LCAgIDI4MywgICAxMzgsICAgMTA4LAor
ICAgICAxNDAsICAgMjcxLCAgIDI0OSwgICAyNTAsICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjU0
LCAgIDI1NSwgICAyNTYsCisgICAgIDI1NywgICAyNTgsICAgMjU5LCAgIDI2MCwgICAyNjEsICAg
MjYyLCAgIDI2MywgICAyNjQsICAgMjY1LCAgIDI2NiwKKyAgICAgMjY3LCAgIDM1NCwgICAxMzcs
ICAgMTExLCAgIDEzNywgICAxMDUsICAgMTE0LCAgIDI3MSwgICAzMDAsICAgMzAxLAorICAgICAx
MTQsICAgMTExLCAgIDExMSwgICAzNTgsICAgMTA0LCAgIDExNCwgICAzNjEsICAgMzA5LCAgIDEx
MSwgICAxMTEsCisgICAgIDMwNSwgICAxMTQsICAgMTE0LCAgIDE4MywgICAxODQsICAgIDQwLCAg
ICA0MSwgICAzMTIsICAgICA5LCAgIDI1NiwKKyAgICAgMjU3LCAgIDI1OCwgICAyNTksICAgIDc2
LCAgICA3NywgICAzMDUsICAgIDc2LCAgICA3NywgICAzMDUsICAgMzg0LAorICAgICAgODksICAg
IDkwLCAgIDMxMiwgICAgNzksICAgIDgwLCAgIDMxMiwgICAxMDUsICAgMzUzLCAgICA0MCwgICAg
NDEsCisgICAgICA0MiwgICAgODMsICAgIDg0LCAgIDIxMywgICAyNzEsICAgMTE5LCAgIDEyMCwg
ICAxMjEsICAgMTA0LCAgICA0MCwKKyAgICAgIDQxLCAgIDQwNiwgICAgNDMsICAgIDQ0LCAgIDEx
MSwgICAxMTIsICAgMzU4LCAgIDEyNSwgICAzNzQsICAgMzYxLAorICAgICAgNTEsICAgIDUyLCAg
ICA1MywgICAgIDksICAgMjU0LCAgIDI1NSwgICAzNjgsICAgMjUyLCAgIDI1MywgICAxMjQsCisg
ICAgIDM2NSwgICAyNjAsICAgMjYxLCAgIDM4OSwgICAxMjYsICAgIDkxLCAgICA5MywgICAxMDcs
ICAgMTE0LCAgIDM1MywKKyAgICAgMTE0LCAgIDEwNCwgICAzODQsICAgMTA0LCAgIDM0NiwgICAz
NjUsICAgNDAyLCAgIDExNCwgICAzNjUsICAgMTA0LAorICAgICAxMTIsICAgMTA0LCAgIDEwNCwg
ICAxMTMsICAgIDQwLCAgICA0MSwgICAxMDcsICAgIDQzLCAgICA0NCwgICAxMDksCisgICAgIDM3
NCwgICAyNzEsICAgMTA2LCAgIDEwNiwgICA0MDYsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDk0
LCAgICA5NSwKKyAgICAgIDk2LCAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAg
MTAyLCAgIDEwMywgICAyODgsICAgMTA4LAorICAgICAxMDUsICAgMTEzLCAgIDExMiwgICAxMDcs
ICAgMTA3LCAgIDExMywgICAxMDQsICAgMTEzLCAgICA1NiwgICAxMTEsCisgICAgICA3NiwgICAx
MDcsICAgMTEzLCAgIDEwNywgICAxMDQsICAgMTE0LCAgIDEwNSwgICAxMDksICAgMTA1LCAgIDEw
NywKKyAgICAgIDE3LCAgIDExNCwgICAxMDgsICAgMTE0LCAgIDI0MSwgICAyNjIsICAgMjY1LCAg
IDI2MywgICAxMTMsICAgMjY0LAorICAgICAxMDMsICAgMTMxLCAgIDM3OSwgICAyNjYsICAgIDk2
LCAgIDI2NywgICAxMzEsICAgICA1LCAgIDE4NywgICAyMjksCisgICAgIDM5NSwgICAzNDgsICAg
MzEzLCAgIDQwMywgICAyODgsICAgMzQ4LCAgIDM3NCwgICAgNzgsICAgIC0xLCAgIDM3OCwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDM0Nywg
ICAzNDgsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNTMsICAgMzU0LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDM5NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICA0MDAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAzNjIsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LAotICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKLSAgICAgIC0xLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAotICAg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAg
ICA2MCwgICAgNjEsCi0gICAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3
LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwKLSAgICAgIDcyLCAgICA3MywgICAgNzQsICAg
IDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLAotICAgICAgODIs
ICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNzQsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDM3OSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgIDEwNCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDgsICAgMTA5LCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAg
IDMsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAotICAgICAgMTYsICAgIC0xLCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAg
IDM0LCAgICAzNSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCi0gICAgICA1Niwg
ICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAg
ICA2NSwKLSAgICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcy
LCAgICA3MywgICAgNzQsICAgIDc1LAotICAgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAg
IDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsCi0gICAgICA4NiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAxMDQsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgIDEwOCwgICAxMDksICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwgICAxMTUsCi0gICAgIDExNiwgICAxMTcsICAgMTE4
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAtMSwgICAg
MTgsICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIDQwLCAg
ICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LAotICAgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAg
NjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwKLSAgICAgIDcwLCAgICAtMSwg
ICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LAot
ICAgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAzOTcsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgNDAzLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAorICAgICAg
IDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAt
MSwgICAgMTgsCisgICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LAorICAgICAgMzksICAg
IDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsCisgICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwg
ICAgNTYsICAgIDU3LCAgICA1OCwKKyAgICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LAorICAgICAgNjksICAgIDcwLCAg
ICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsCisg
ICAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYs
ICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4
LCAgICAgMywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgLTEs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywKLSAgICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgLTEsICAgIDQzLAotICAgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAg
IDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKLSAg
ICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwg
ICAgNzIsICAgIDczLAotICAgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3
OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsCi0gICAgICAtMSwgICAgODUsICAgIDg2LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMTA4LAorICAgICAxMDksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwgICAx
MTUsICAgMTE2LCAgIDExNywgICAxMTgsCisgICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIy
LAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsCisgICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwKKyAgICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLAorICAg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAg
ICA2MSwgICAgNjIsCisgICAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAg
IDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgLTEs
ICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
IDEwOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAxMTQsICAgMTE1
LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
Ci0gICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAtMSwKLSAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCi0gICAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAg
IDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LAotICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsCi0gICAgICA2OCwg
ICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAg
ICA3NywKLSAgICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0x
LCAgICA4NSwgICAgODYsICAgIC0xLAorICAgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDEwOCwgICAxMDksICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAxMTQs
ICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwK
KyAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LAorICAgICAgLTEsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKKyAgICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCisgICAgICA1NywgICAgNTgsICAgIDU5LCAgICA2
MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwKKyAgICAgIDY3LCAg
ICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAg
IDc2LAorICAgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEs
ICAgIC0xLCAgICA4NSwgICAgODYsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1
LCAgIDExNiwgICAxMTcsCi0gICAgIDExOCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwKLSAgICAgIDEyLCAgICAxMywgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsCi0gICAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwKLSAgICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAotICAgICAgNTIsICAg
IDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsCi0gICAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwg
ICAgNjksICAgIDcwLCAgICAtMSwKLSAgICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3
NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLAotICAgICAgODIsICAgIC0xLCAg
ICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgICAzLCAgICAgNCwKLSAgICAgICA1LCAgICAgNiwgICAxMDQsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgIDExNCwg
ICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIC0x
LCAgICAtMSwKKyAgICAgIC0xLCAgIDEwOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDExNCwgICAxMTUsICAgMTE2LAorICAgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDE5LCAgICAy
MCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgLTEsICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAg
ICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwg
ICAgNTksICAgIDYwLAorICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2
NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCisgICAgICAtMSwgICAgNzIsICAgIDczLCAg
ICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwKKyAgICAgIDgx
LCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDgsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgIDMsICAgICA0
LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIC0xLCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKICAgICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAogICAg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIC0xLCAg
ICA0MywgICAgNDQsCiAgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKLSAgICAgIDU1LCAgICAtMSwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LAorICAgICAgNTUs
ICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2Mywg
ICAgNjQsCiAgICAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAt
MSwgICAgNzIsICAgIDczLCAgICA3NCwKICAgICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAg
ICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLAogICAgICAgODUsICAgIDg2
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDQsICAgICA1LCAgICAgNiwgICAg
LTEsICAgIC0xLCAgIDEwNCwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAxMTUsICAgMTE2LCAgIDEx
NywgICAxMTgsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MCwg
ICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwKLSAgICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2
LCAgICA3NywgICAgLTEsICAgIC0xLAotICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwK
LSAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0gICAgICA1MCwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwKLSAgICAg
IDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAg
NjgsICAgIDY5LAotICAgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwg
ICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksCi0gICAgICA4MCwgICAgODEsICAgIDgyLCAgICAt
MSwgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
MTA0LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAxMTQsCisgICAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwKKyAgICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAg
NDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1
NywgICAgNTgsCisgICAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAg
ICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwKKyAgICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcy
LCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LAorICAgICAgNzksICAg
IDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAg
LTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEw
NCwgICAgLTEsICAgIC0xLCAgIDEwNywgICAgMTAsICAgIDExLAotICAgICAgMTIsICAgIDEzLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgLTEsCisg
ICAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgMTA0LCAgICAgOCwgICAgIDks
ICAgIDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAx
MTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCi0gICAgICAz
MiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICA1NCwgICAgNTUs
ICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsCisgICAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwKKyAgICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsICAgIDUxLAorICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0x
LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsCiAgICAgICA2MiwgICAgNjMsICAg
IDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwKLSAg
ICAgIDcyLCAgICA3MywgICAgNzQsICAgIC0xLCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwg
ICAgODAsICAgIDgxLAorICAgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3
NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsCiAgICAgICA4MiwgICAgLTEsICAgIC0xLCAg
ICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgNCwgICAgIDUs
ICAgICA2LAorICAgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgMTAsICAgIDExLCAgICAxMiwgICAg
MTMsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNSwg
ICAxMTYsICAgMTE3LCAgIDExOCwgICAgLTEsICAgIDI1LCAgICAyNiwKKyAgICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2
LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICA0NSwgICAgNDYsCisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNTQsICAgIDU1LCAgICAtMSwKKyAgICAgIDU3LCAgICA1OCwgICAg
NTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAorICAg
ICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAg
ICAtMSwgICAgNzYsCisgICAgICA3NywgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEy
LCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LAorICAgICAgMjcs
ICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwg
ICAgMzYsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAxMTQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLAorICAgICAgNTcsICAgIDU4
LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYs
CisgICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAg
NzQsICAgIC0xLCAgICA3NiwKKyAgICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwg
ICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LAogICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgMTA3LCAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAxMywKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE1LCAgIDExNiwgICAxMTcs
ICAgMTE4LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsCi0gICAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCi0gICAgICA2NCwgICAgNjUs
ICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywK
LSAgICAgIDc0LCAgICAtMSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4
MSwgICAgODIsICAgIC0xLAotICAgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
MTA0LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAtMSwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIC0xLCAgICAtMSwKKyAgICAgMTA3LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTUsICAg
MTE2LAorICAgICAxMTcsICAgMTE4LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsCiAgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwKICAgICAgIDM5LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAog
ICAgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0x
LCAgICA1NywgICAgNTgsCkBAIC0xMzg1LDcgKzEzNjUsNyBAQAogICAgICAgODEsICAgIDgyLCAg
ICAtMSwgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAg
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAxMCwgICAg
MTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAtMSwgICAgMjUsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0x
LCAgICAyNSwKICAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAg
IDMyLCAgICAzMywgICAgMzQsICAgIDM1LAogICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzks
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsCiAgICAgICA0NiwgICAg
NDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1
NSwKQEAgLTEzOTMsNzYgKzEzNzMsOTUgQEAKICAgICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIC0xLAogICAgICAgNzYsICAg
IDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAg
ODUsCiAgICAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAxMDQsICAgICA4LAotICAgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTUsCi0g
ICAgIDExNiwgICAxMTcsICAgMTE4LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LAotICAgICAgMzksICAgIDQwLCAgICA0MSwg
ICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICA0
OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3
LCAgICA1OCwKLSAgICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDY4LAotICAgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgNzUsICAgIC0xLCAgICA3NywgICAgLTEsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAg
MywKLSAgICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgLTEsCisgICAgICAtMSwgICAxMDcsICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNSwKKyAg
ICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwg
ICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywKKyAgICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEs
ICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAg
NjQsICAgIDY1LCAgICA2NiwgICAgNjcsCisgICAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwg
ICAgNzIsICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2LCAgICA3NywKKyAgICAgIDc4LCAgICA3
OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0x
LAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgIDEwOSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywKLSAgICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgLTEsICAgIDQzLAotICAg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKLSAgICAgIDY0LCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLAotICAgICAgNzQs
ICAgIDc1LCAgICAtMSwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgIC0xLCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
Ci0gICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAzOCwKLSAgICAgIDM5LCAgICA0MCwgICAgNDEsICAgIC0xLCAgICA0Mywg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAgIDUwLCAgICA1
MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsCi0gICAg
ICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2OCwKLSAgICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQs
ICAgIDc1LCAgICAtMSwgICAgNzcsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgIDAsICAgIC0xLCAgICAtMSwgICAgIDMsCi0gICAgICAgNCwg
ICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAxMywKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAxMDksICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsCi0gICAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIC0xLCAgICA0MywK
LSAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1
MSwgICAgNTIsICAgIDUzLAotICAgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAgIDU4LCAg
ICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCi0gICAgICA2NCwgICAgNjUsICAgIDY2
LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywKLSAgICAg
IDc0LCAgICA3NSwgICAgLTEsICAgIDc3LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAg
IDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgMTAsICAgIDExLCAgICAxMiwKKyAgICAgIDEzLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNSwgICAxMTYsICAg
MTE3LAorICAgICAxMTgsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsCisgICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYw
LCAgICA2MSwgICAgNjIsCisgICAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAg
IDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgLTEs
ICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAg
LTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgIDEwNCwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgIDExNSwgICAxMTYsICAgMTE3LCAgIDExOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCisg
ICAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMs
ICAgIDY0LCAgICA2NSwKKyAgICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAg
LTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LAorICAgICAgLTEsICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgsICAgICA5
LCAgICAxMCwKKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDks
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCisgICAgICAzMSwgICAg
MzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwKKyAgICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLAorICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1
LCAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCisgICAgICA2MSwgICAgNjIsICAg
IDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKKyAg
ICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgLTEsICAgIDc3LCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgLTEsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDks
ICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIDMzLCAgICAzNCwgICAgMzUsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwg
ICAgNDAsICAgIDQxLCAgICAtMSwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1
LAorICAgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAg
IDYzLCAgICA2NCwgICAgNjUsCisgICAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
ICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwKKyAgICAgIC0xLCAgICA3NywgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLAorICAg
ICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAg
ICAgOSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
MTA5LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEs
ICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwg
ICAgNDAsCisgICAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgNjEsICAgIDYy
LCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
CisgICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIC0xLCAgICA3NywgICAg
IDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsCisgICAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAg
IDM0LCAgICAzNSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIC0xLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCisgICAgICAtMSwg
ICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAg
ICA2NSwKKyAgICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcy
LCAgICA3MywgICAgNzQsICAgIDc1LAorICAgICAgLTEsICAgIDc3LCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwgICAgLTEsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgLTEsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAgICAg
IDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAg
NTksICAgIDYwLAorICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2Niwg
ICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCisgICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3
NCwgICAgNzUsICAgIC0xLCAgICA3NywgICAgIDQsICAgICA1LCAgICAgNiwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAg
IC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAyNSwgICAgMjYsCisgICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKKyAgICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LAor
ICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0
LCAgICA1NSwgICAgLTEsCisgICAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwKKyAgICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgLTEsICAgIC0xLAorICAgICAg
NzcsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKICAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LAotICAgICAgMzksICAg
IDQwLCAgICA0MSwgICAgLTEsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwg
ICAgLTEsICAgIDU3LCAgICA1OCwKKyAgICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgNDksICAgIDUwLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsCiAg
ICAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYs
ICAgIDY3LCAgICA2OCwKLSAgICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAg
NzQsICAgIDc1LCAgICAtMSwgICAgNzcsICAgICAzLAotICAgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgLTEsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDMzLAotICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICAtMSwgICAgNDMsCi0gICAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1
MywKLSAgICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAg
ICA2MSwgICAgNjIsICAgIDYzLAotICAgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsCi0gICAgICA3NCwgICAgNzUsICAg
IC0xLCAgICA3NywgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKLSAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LAotICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAg
LTEsICAgIDU3LCAgICA1OCwgICAgNTksCi0gICAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2Mywg
ICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwKLSAgICAgIDcwLCAgICAt
MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgLTEsICAgIC0xLCAgICA3NywgICAgMTAsICAgIDEx
LAotICAgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKLSAgICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwKLSAgICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLAotICAgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2LCAgICA3NywgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsCi0gICAgICA4MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLAotICAgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
LTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwg
ICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLAotICAgICAgNjQsICAgIDY1LCAgICA2
NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsCi0gICAg
ICA3NCwgICAgLTEsICAgIC0xLCAgICA3NworICAgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2LCAgICA3NywgICAgMTAsCisgICAgICAxMSwgICAg
MTIsICAgIDEzLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKKyAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwg
ICAgNTksICAgIDYwLAorICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2
NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCisgICAgICAtMSwgICAgNzIsICAgIDczLCAg
ICA3NCwgICAgLTEsICAgIC0xLCAgICA3NwogfTsKIAogICAvKiBZWVNUT1NbU1RBVEUtTlVNXSAt
LSBUaGUgKGludGVybmFsIG51bWJlciBvZiB0aGUpIGFjY2Vzc2luZwpAQCAtMTQ3Nyw0MCArMTQ3
Niw0MCBAQAogICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAg
NzIsICAgIDczLCAgICA3NCwgICAgNzUsCiAgICAgICA3NywgICAxNjAsICAgMTYxLCAgIDE2Miwg
ICAxNjMsICAgMTY0LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgIDE3MiwKICAgICAgMTc0LCAgIDE3
NSwgICAxNzYsICAgMTc3LCAgIDE3OCwgICAxODEsICAgMTgyLCAgIDE4MywgICAyMTgsICAgMjE5
LAotICAgICAyMjAsICAgIDQ0LCAgICA3NiwgICAxNzcsICAgIDQwLCAgICA0MSwgICAgNzYsICAg
IDc3LCAgIDEwOCwgICAxMjksCi0gICAgIDEwNCwgICAxMTQsICAgMjIxLCAgIDEwNSwgICAxMTEs
ICAgICA5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgIDE2NiwKLSAgICAgMTY3LCAgIDE3MywgICAx
MTEsICAgMTE0LCAgICA3NiwgICAxMjksICAgMTc1LCAgICA3NiwgICAxMTQsICAgMTU5LAotICAg
ICAxNzYsICAgMTgxLCAgIDE3NSwgICAxMDYsICAgICAwLCAgIDIxOSwgICAxODEsICAgMTg1LCAg
IDEwOCwgICAgNzYsCi0gICAgIDE3OSwgICAxODAsICAgMTA4LCAgIDIwMSwgICAxNjYsICAgMTY1
LCAgIDE2OCwgICAxNzYsICAgMTY3LCAgIDEyOSwKLSAgICAgMTA0LCAgIDEwNiwgICAxMTMsICAg
MTA4LCAgICAgMywgICAxNzQsICAgMTc2LCAgIDE4NiwgICAxODcsICAgIDc2LAotICAgICAgNzgs
ICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4NSwgICAgODYsICAgMTA0LCAgIDEwNywg
ICAxMTUsCi0gICAgIDExNiwgICAxMTcsICAgMTE4LCAgIDEzMCwgICAxMzEsICAgMTMyLCAgIDEz
NCwgICAxMzUsICAgMTM2LCAgIDEzNywKLSAgICAgMTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAg
IDE0MiwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgMTQ3LAotICAgICAxNDgsICAgMTQ5
LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MywgICAxNTQsICAgMTU4LCAgIDE4MSwgICAxMTQs
Ci0gICAgIDE4NiwgICAxODQsICAgMTEzLCAgIDEwNSwgICAxMTEsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgNTYsICAgMTA4LCAgIDEwOSwgICAxMTQsICAgMTQxLAotICAgICAxNTQsICAgMTU1LCAgIDE1
NywgICAxNjAsICAgMTYxLCAgIDE4MSwgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQsCi0gICAg
IDIwMiwgICAyMDMsICAgMjA0LCAgIDIwNiwgICAyMDgsICAgMjEwLCAgIDIxNywgICAxMjksICAg
MTY1LCAgIDE2OCwKLSAgICAgMTA2LCAgIDExMywgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxOTAs
ICAgMTc2LCAgIDEyOSwgICAxODgsICAgMTg5LAotICAgICAxMDksICAgMTg3LCAgIDE0MSwgICAx
NDEsICAgMTU3LCAgICA4NSwgICAgODYsICAgMTA2LCAgIDExMCwgICAxMDUsCi0gICAgIDEwNSwg
ICAxMTEsICAgIDU1LCAgIDE1NSwgICAxMDQsICAgMTQxLCAgIDExOSwgICAxMjAsICAgMTIxLCAg
IDExNiwKLSAgICAgMTE4LCAgICA4MywgICAgODQsICAgIDg3LCAgICA4OCwgICAxMjIsICAgMTIz
LCAgICA4OSwgICAgOTAsICAgMTI2LAotICAgICAxMjUsICAgMTI0LCAgICA5MSwgICAgOTMsICAg
IDkyLCAgIDEyNywgICAxMDcsICAgMTA5LCAgIDE4NiwgICAgNzksCi0gICAgICA4MCwgICAxODAs
ICAgMTE0LCAgIDExNCwgICAyMTIsICAgMTA0LCAgIDEwNCwgICAxMTQsICAgMTE0LCAgIDE1NywK
LSAgICAgMTA0LCAgIDE1OCwgICAxMTIsICAgMTA0LCAgIDEwOSwgICAxOTUsICAgIDk0LCAgICA5
NSwgICAgOTYsICAgIDk3LAotICAgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAg
IDEwMywgICAxMTMsICAgMTU2LCAgIDExMSwgICAxMTQsCi0gICAgIDEwOSwgICAxOTIsICAgMTA2
LCAgIDEwNywgICAxNTgsICAgMTkwLCAgIDExMywgICAxMDcsICAgMTg4LCAgIDEwNiwKLSAgICAg
MTExLCAgIDExNCwgICAgNzYsICAgMTE0LCAgIDEwNSwgICAxMzMsICAgMTU3LCAgICA3NiwgICAg
ODIsICAgMTM2LAotICAgICAxNTUsICAgMTQxLCAgIDE0MSwgICAxNDEsICAgMTQzLCAgIDE0Mywg
ICAxNDQsICAgMTQ0LCAgIDE0NSwgICAxNDUsCi0gICAgIDE0NSwgICAxNDUsICAgMTQ2LCAgIDE0
NiwgICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMTUxLCAgIDE1MiwKLSAgICAgMTU3LCAg
IDEwOSwgICAxOTgsICAgMTk5LCAgIDIwMCwgICAyMTMsICAgMTU3LCAgIDExNCwgICAxNTcsICAg
MTEyLAotICAgICAyMTEsICAgMjAyLCAgIDE1NSwgICAxNTUsICAgMTU4LCAgIDExMywgICAxMDcs
ICAgMTkwLCAgIDExMywgICAxMTQsCi0gICAgIDE1OCwgICAxODksICAgMTA2LCAgIDExNCwgICAx
MDcsICAgMTEyLCAgICA1NiwgICAyMDEsICAgMTkzLCAgIDE5MSwKLSAgICAgMjAzLCAgIDIxNCwg
ICAxMDUsICAgMTA1LCAgIDE1NywgICAxNzEsICAgMTc0LCAgIDIwOSwgICAxOTYsICAgMTA3LAot
ICAgICAxOTAsICAgMTEzLCAgIDE5MCwgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxMDQsICAgMjA5
LCAgIDIxNSwgICAyMTYsCi0gICAgIDE5OCwgICAyMDUsICAgMjA3LCAgIDEyOSwgICAxMDUsICAg
MTA5LCAgIDE5MCwgICAxMDcsICAgMTU3LCAgIDExNCwKLSAgICAgMTA1LCAgICAxNywgICAxOTQs
ICAgMTEzLCAgIDE5MywgICAxOTcsICAgMjAxLCAgIDExNCwgICAxMDUsICAgMTU3LAotICAgICAx
OTcsICAgMTk4LCAgIDE5MCwgICAxMTQKKyAgICAgMjIwLCAgICA0NCwgICAgNzYsICAgMTcyLCAg
IDE3NSwgICAxNzcsICAgIDQwLCAgICA0MSwgICAgNzYsICAgIDc3LAorICAgICAxMDgsICAgMTI5
LCAgIDEwNCwgICAxMTQsICAgMjIxLCAgIDEwNSwgICAxMTEsICAgICA5LCAgICA0MCwgICAgNDEs
CisgICAgICA0MiwgICAxNjYsICAgMTY3LCAgIDE3MywgICAxMTEsICAgMTE0LCAgICA3NiwgICAx
MjksICAgMTc1LCAgICA3NiwKKyAgICAgMTE0LCAgIDE1OSwgICAxNzYsICAgMTgxLCAgIDE3NSwg
ICAxMDYsICAgICAwLCAgIDIxOSwgICAxNzUsICAgMTgxLAorICAgICAxODUsICAgMTA4LCAgICA3
NiwgICAxNzksICAgMTgwLCAgIDEwOCwgICAyMDEsICAgMTY2LCAgIDE2NSwgICAxNjgsCisgICAg
IDE3NiwgICAxNjcsICAgMTI5LCAgIDEwNCwgICAxMDYsICAgMTEzLCAgIDEwOCwgICAgIDMsICAg
MTc0LCAgIDE3NiwKKyAgICAgMTg2LCAgIDE4NywgICAgNzYsICAgIDc4LCAgICA3OSwgICAgODAs
ICAgIDgxLCAgICA4MiwgICAgODUsICAgIDg2LAorICAgICAxMDQsICAgMTA3LCAgIDExNSwgICAx
MTYsICAgMTE3LCAgIDExOCwgICAxMzAsICAgMTMxLCAgIDEzMiwgICAxMzQsCisgICAgIDEzNSwg
ICAxMzYsICAgMTM3LCAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgMTQzLCAg
IDE0NCwKKyAgICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OSwgICAxNTAsICAgMTUx
LCAgIDE1MiwgICAxNTMsICAgMTU0LAorICAgICAxNTgsICAgMTgxLCAgIDExNCwgICAxODYsICAg
MTg0LCAgIDExMywgICAxMDUsICAgMTExLCAgICAxNCwgICAgMTUsCisgICAgICAxNiwgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDU2LCAgIDEwOCwK
KyAgICAgMTA5LCAgIDExNCwgICAxNDEsICAgMTU0LCAgIDE1NSwgICAxNTcsICAgMTYwLCAgIDE2
MSwgICAxODEsICAgMTkxLAorICAgICAxOTIsICAgMTkzLCAgIDE5NCwgICAyMDIsICAgMjAzLCAg
IDIwNCwgICAyMDYsICAgMjA4LCAgIDIxMCwgICAyMTcsCisgICAgIDEyOSwgICAxNjUsICAgMTY4
LCAgIDEwNiwgICAxMTMsICAgMTA3LCAgIDE1OCwgICAxNTUsICAgMTkwLCAgIDE3NiwKKyAgICAg
MTI5LCAgIDE4OCwgICAxODksICAgMTA5LCAgIDE4NywgICAxNDEsICAgMTQxLCAgIDE1NywgICAg
ODUsICAgIDg2LAorICAgICAxMDYsICAgMTEwLCAgIDEwNSwgICAxMDUsICAgMTExLCAgICA1NSwg
ICAxNTUsICAgMTA0LCAgIDE0MSwgICAxMTksCisgICAgIDEyMCwgICAxMjEsICAgMTE2LCAgIDEx
OCwgICAgODMsICAgIDg0LCAgICA4NywgICAgODgsICAgMTIyLCAgIDEyMywKKyAgICAgIDg5LCAg
ICA5MCwgICAxMjYsICAgMTI1LCAgIDEyNCwgICAgOTEsICAgIDkzLCAgICA5MiwgICAxMjcsICAg
MTA3LAorICAgICAxMDksICAgMTg2LCAgICA3OSwgICAgODAsICAgMTgwLCAgIDExNCwgICAxMTQs
ICAgMjEyLCAgIDEwNCwgICAxMDQsCisgICAgIDExNCwgICAxMTQsICAgMTU3LCAgIDEwNCwgICAx
NTgsICAgMTEyLCAgIDEwNCwgICAxMDksICAgMTk1LCAgICA5NCwKKyAgICAgIDk1LCAgICA5Niwg
ICAgOTcsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTEzLAor
ICAgICAxNTYsICAgMTExLCAgIDExNCwgICAxMDksICAgMTkyLCAgIDEwNiwgICAxMDcsICAgMTU4
LCAgIDE5MCwgICAxMTMsCisgICAgIDEwNywgICAxODgsICAgMTA2LCAgIDExMSwgICAxMTQsICAg
IDc2LCAgIDExNCwgICAxMDUsICAgMTMzLCAgIDE1NywKKyAgICAgIDc2LCAgICA4MiwgICAxMzYs
ICAgMTU1LCAgIDE0MSwgICAxNDEsICAgMTQxLCAgIDE0MywgICAxNDMsICAgMTQ0LAorICAgICAx
NDQsICAgMTQ1LCAgIDE0NSwgICAxNDUsICAgMTQ1LCAgIDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0
OCwgICAxNDksCisgICAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1NywgICAxMDksICAgMTk4LCAg
IDE5OSwgICAyMDAsICAgMjEzLCAgIDE1NywKKyAgICAgMTE0LCAgIDE1NywgICAxMTIsICAgMjEx
LCAgIDIwMiwgICAxNTUsICAgMTU1LCAgIDE1OCwgICAxMTMsICAgMTA3LAorICAgICAxOTAsICAg
MTEzLCAgIDExNCwgICAxNTgsICAgMTg5LCAgIDEwNiwgICAxMTQsICAgMTA3LCAgIDExMiwgICAg
NTYsCisgICAgIDIwMSwgICAxOTMsICAgMTkxLCAgIDIwMywgICAyMTQsICAgMTA1LCAgIDEwNSwg
ICAxNTcsICAgMTcxLCAgIDE3NCwKKyAgICAgMjA5LCAgIDE5NiwgICAxMDcsICAgMTkwLCAgIDEx
MywgICAxOTAsICAgMTA3LCAgIDE1OCwgICAxNTUsICAgMTA0LAorICAgICAyMDksICAgMjE1LCAg
IDIxNiwgICAxOTgsICAgMjA1LCAgIDIwNywgICAxMjksICAgMTA1LCAgIDEwOSwgICAxOTAsCisg
ICAgIDEwNywgICAxNTcsICAgMTE0LCAgIDEwNSwgICAgMTcsICAgMTk0LCAgIDExMywgICAxOTMs
ICAgMTk3LCAgIDIwMSwKKyAgICAgMTE0LCAgIDEwNSwgICAxNTcsICAgMTk3LCAgIDE5OCwgICAx
OTAsICAgMTE0CiB9OwogCiAgIC8qIFlZUjFbWVlOXSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJv
bCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLwpAQCAtMTUyOSwyMSArMTUyOCwyMSBAQAogICAg
ICAxNjQsICAgMTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY3LCAg
IDE2NywgICAxNjcsCiAgICAgIDE2NywgICAxNjgsICAgMTY5LCAgIDE2OSwgICAxNjksICAgMTY5
LCAgIDE2OSwgICAxNjksICAgMTcwLCAgIDE3MCwKICAgICAgMTcwLCAgIDE3MCwgICAxNzAsICAg
MTcwLCAgIDE3MCwgICAxNzEsICAgMTcxLCAgIDE3MiwgICAxNzIsICAgMTczLAotICAgICAxNzQs
ICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NSwg
ICAxNzUsCi0gICAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwgICAxNzYsICAgMTc2LCAgIDE3
NywgICAxNzcsICAgMTc3LCAgIDE3OCwKLSAgICAgMTc5LCAgIDE3OSwgICAxODAsICAgMTgwLCAg
IDE4MCwgICAxODEsICAgMTgxLCAgIDE4MSwgICAxODIsICAgMTgyLAorICAgICAxNzQsICAgMTc0
LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzQs
CisgICAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NiwgICAx
NzYsICAgMTc3LCAgIDE3NywKKyAgICAgMTc3LCAgIDE3OCwgICAxNzksICAgMTc5LCAgIDE4MCwg
ICAxODAsICAgMTgwLCAgIDE4MSwgICAxODEsICAgMTgxLAogICAgICAxODIsICAgMTgyLCAgIDE4
MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsCiAgICAg
IDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAg
MTgyLCAgIDE4MiwKICAgICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIs
ICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLAogICAgICAxODIsICAgMTgyLCAgIDE4MiwgICAx
ODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsCi0gICAgIDE4Miwg
ICAxODIsICAgMTgyLCAgIDE4NCwgICAxODMsICAgMTg1LCAgIDE4MywgICAxODYsICAgMTg2LCAg
IDE4NywKLSAgICAgMTg3LCAgIDE4OCwgICAxODgsICAgMTg5LCAgIDE4OSwgICAxOTAsICAgMTkx
LCAgIDE5MiwgICAxOTIsICAgMTkzLAotICAgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTMsICAg
MTkzLCAgIDE5MywgICAxOTQsICAgMTk1LCAgIDE5NiwgICAxOTQsCi0gICAgIDE5NywgICAxOTcs
ICAgMTk5LCAgIDE5OCwgICAyMDAsICAgMTk4LCAgIDIwMSwgICAyMDEsICAgMjAyLCAgIDIwMiwK
LSAgICAgMjAzLCAgIDIwMywgICAyMDQsICAgMjA1LCAgIDIwNSwgICAyMDcsICAgMjA2LCAgIDIw
OCwgICAyMDgsICAgMjA5LAotICAgICAyMDksICAgMjExLCAgIDIxMCwgICAyMTIsICAgMjEwLCAg
IDIxMywgICAyMTAsICAgMjE0LCAgIDIxNCwgICAyMTUsCi0gICAgIDIxNSwgICAyMTYsICAgMjE2
LCAgIDIxNywgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTcsICAgMjE4LCAgIDIxOCwKLSAgICAg
MjE5LCAgIDIxOSwgICAyMjEsICAgMjIwCisgICAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4Miwg
ICAxODIsICAgMTg0LCAgIDE4MywgICAxODUsICAgMTgzLCAgIDE4NiwKKyAgICAgMTg2LCAgIDE4
NywgICAxODcsICAgMTg4LCAgIDE4OCwgICAxODksICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTky
LAorICAgICAxOTIsICAgMTkzLCAgIDE5MywgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTMsICAg
MTkzLCAgIDE5NCwgICAxOTUsCisgICAgIDE5NiwgICAxOTQsICAgMTk3LCAgIDE5NywgICAxOTks
ICAgMTk4LCAgIDIwMCwgICAxOTgsICAgMjAxLCAgIDIwMSwKKyAgICAgMjAyLCAgIDIwMiwgICAy
MDMsICAgMjAzLCAgIDIwNCwgICAyMDUsICAgMjA1LCAgIDIwNywgICAyMDYsICAgMjA4LAorICAg
ICAyMDgsICAgMjA5LCAgIDIwOSwgICAyMTEsICAgMjEwLCAgIDIxMiwgICAyMTAsICAgMjEzLCAg
IDIxMCwgICAyMTQsCisgICAgIDIxNCwgICAyMTUsICAgMjE1LCAgIDIxNiwgICAyMTYsICAgMjE3
LCAgIDIxNywgICAyMTcsICAgMjE3LCAgIDIxNywKKyAgICAgMjE4LCAgIDIxOCwgICAyMTksICAg
MjE5LCAgIDIyMSwgICAyMjAKIH07CiAKICAgLyogWVlSMltZWU5dIC0tIE51bWJlciBvZiBzeW1i
b2xzIG9uIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgcnVsZSBZWU4uICAqLwpAQCAtMTU2MiwyMSAr
MTU2MSwyMSBAQAogICAgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAyLCAgICAgMywg
ICAgIDIsICAgICAwLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MywgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDUsICAgICAxLCAgICAgMiwKICAgICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA0LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAg
ICAxLAotICAgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDIsICAgICAyLCAgICAgMSwgICAg
IDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgNCwKLSAgICAgICAxLCAgICAgMywg
ICAgIDEsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgNCwgICAgIDEsICAgICAxLAor
ICAgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAy
LCAgICAgMiwgICAgIDMsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDIsICAg
ICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgNCwgICAgIDEs
ICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsICAgICA0LAogICAgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDYsICAgICAwLCAgICAgNSwg
ICAgIDEsICAgICAyLCAgICAgMywKLSAgICAgICA0LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAg
NCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAwLCAgICAgMCwgICAgIDUsCi0g
ICAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDMs
ICAgICAxLCAgICAgMiwKLSAgICAgICAxLCAgICAgMiwgICAgIDUsICAgICAzLCAgICAgMSwgICAg
IDAsICAgICA2LCAgICAgMywgICAgIDIsICAgICAxLAotICAgICAgIDQsICAgICAwLCAgICAgNiwg
ICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAg
MCwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAx
LCAgICAgMiwKLSAgICAgICAxLCAgICAgMSwgICAgIDAsICAgICAzCisgICAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgNiwgICAgIDAsICAgICA1LCAgICAgMSwK
KyAgICAgICAyLCAgICAgMywgICAgIDQsICAgICAxLCAgICAgMywgICAgIDEsICAgICA0LCAgICAg
MSwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsCisgICAgICAgMCwgICAgIDUsICAgICAx
LCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMywKKyAgICAg
ICAxLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDMsICAgICAxLCAgICAgMCwgICAg
IDYsICAgICAzLAorICAgICAgIDIsICAgICAxLCAgICAgNCwgICAgIDAsICAgICA2LCAgICAgMCwg
ICAgIDgsICAgICAwLCAgICAgNywgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAwLCAgICAg
MiwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwKKyAgICAgICAxLCAg
ICAgMiwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDMKIH07CiAKIApAQCAtMjM1OSwyMiArMjM1
OCw4IEBACiAKICAgICB7CiAgICAgICAgIC8vIFRoZSBzeW1ib2wgdGFibGUgc2VhcmNoIHdhcyBk
b25lIGluIHRoZSBsZXhpY2FsIHBoYXNlCi0gICAgICAgIGNvbnN0IFRWYXJpYWJsZSAqdmFyaWFi
bGUgPSBjb250ZXh0LT5nZXROYW1lZFZhcmlhYmxlKCh5eWxzcFswXSksICh5eXZzcFswXS5sZXgp
LnN0cmluZywgKHl5dnNwWzBdLmxleCkuc3ltYm9sKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+cGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKHl5bHNw
WzBdKSwgKHl5dnNwWzBdLmxleCkuc3RyaW5nLCAoeXl2c3BbMF0ubGV4KS5zeW1ib2wpOwogCi0g
ICAgICAgIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiogY29uc3RBcnJheSA9IHZh
cmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKLSAgICAgICAgICAgIFRUeXBlIHQodmFyaWFibGUt
PmdldFR5cGUoKSk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFycmF5LCB0LCAo
eXlsc3BbMF0pKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0
ZS5hZGRTeW1ib2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldE5hbWUoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0
VHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh5eWxzcFswXSkpOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gZG9uJ3QgZGVsZXRlICQxLnN0
cmluZywgaXQncyB1c2VkIGJ5IGVycm9yIHJlY292ZXJ5LCBhbmQgdGhlIHBvb2wKICAgICAgICAg
Ly8gcG9wIHdpbGwgcmVjbGFpbSB0aGUgbWVtb3J5CiAgICAgfQpAQCAtMjU2NCwxMCArMjU0OSwx
MCBAQAogICBjYXNlIDI1OgogCiAgICAgewotICAgICAgICBUUGFyYW1ldGVyIHBhcmFtID0geyAw
LCBuZXcgVFR5cGUoKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkp
IH07Ci0gICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKHBh
cmFtKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpOworICAgICAgICAoeXl2c3BbLTFdLmlu
dGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcihUQ29uc3RQYXJhbWV0ZXIodHlwZSkpOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9u
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubm9kZVBhaXIubm9kZTEgPSAoeXl2c3BbMF0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQYWlyLm5v
ZGUxID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5dnNwWzBdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTI1NzUsOCArMjU2MCw4IEBACiAgIGNhc2UgMjY6CiAKICAgICB7Ci0gICAgICAgIFRQYXJhbWV0
ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSktPmdldFR5cGUoKSkgfTsKLSAgICAgICAgKHl5dnNwWy0yXS5pbnRlcm0pLmZ1bmN0aW9uLT5h
ZGRQYXJhbWV0ZXIocGFyYW0pOworICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IG5ldyBUVHlw
ZSgoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldFR5cGUoKSk7CisgICAgICAg
ICh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbi0+YWRkUGFyYW1ldGVyKFRDb25zdFBhcmFtZXRl
cih0eXBlKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWy0yXS5p
bnRlcm0pLmZ1bmN0aW9uOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS5ub2RlUGFpci5ub2RlMSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFstMl0uaW50ZXJtKS5p
bnRlcm1Ob2RlLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0p
KTsKICAgICB9CkBAIC0yNjA3LDcgKzI1OTIsNyBAQAogICAgIHsKICAgICAgICAgaWYgKGNvbnRl
eHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5n
KSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgVFR5cGUgdHlwZShF
YnRWb2lkLCBFYnBVbmRlZmluZWQpOworICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVuY3Rpb24gKmZ1
bmN0aW9uID0gbmV3IFRGdW5jdGlvbigoeXl2c3BbMF0ubGV4KS5zdHJpbmcsIHR5cGUpOwogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1bmN0aW9uOwogICAgIH0KQEAgLTI2MTks
NyArMjYwNCw3IEBACiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRFcnJvckNo
ZWNrKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpKQogICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICBUVHlwZSB0eXBlKEVidFZvaWQsIEVicFVuZGVmaW5l
ZCk7CisgICAgICAgIGNvbnN0IFRUeXBlICp0eXBlID0gVENhY2hlOjpnZXRUeXBlKEVidFZvaWQs
IEVicFVuZGVmaW5lZCk7CiAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgVEZ1bmN0
aW9uKCh5eXZzcFswXS5sZXgpLnN0cmluZywgdHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
ZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgfQpAQCAtMzAzNywxMiArMzAyMiw3IEBACiAgIGNh
c2UgODU6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb21tYSgoeXl2c3BbLTJdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0p
KTsKLSAgICAgICAgaWYgKCh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9PSAwKSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5hcnlPcEVycm9yKCh5eWxzcFstMV0pLCAiLCIsICh5eXZz
cFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdldENvbXBsZXRlU3RyaW5nKCksICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
YWRkQ29tbWEoKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0zMDcwLDMyICszMDUwLDcgQEAKICAgY2FzZSA4ODoKIAogICAgIHsKLSAgICAgICAgVEZ1
bmN0aW9uICZmdW5jdGlvbiA9ICooKHl5dnNwWy0xXS5pbnRlcm0pLmZ1bmN0aW9uKTsKLSAgICAg
ICAgCi0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnByb3RvdHlwZSA9IG5ldyBUSW50ZXJtQWdn
cmVnYXRlOwotICAgICAgICBwcm90b3R5cGUtPnNldFR5cGUoZnVuY3Rpb24uZ2V0UmV0dXJuVHlw
ZSgpKTsKLSAgICAgICAgcHJvdG90eXBlLT5zZXROYW1lKGZ1bmN0aW9uLmdldE1hbmdsZWROYW1l
KCkpOwotICAgICAgICBwcm90b3R5cGUtPnNldEZ1bmN0aW9uSWQoZnVuY3Rpb24uZ2V0VW5pcXVl
SWQoKSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9u
LmdldFBhcmFtQ291bnQoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUUGFy
YW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLmdldFBhcmFtKGkpOwotICAgICAgICAgICAgaWYgKHBh
cmFtLm5hbWUgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUVmFyaWFibGUg
dmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwotICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIHByb3RvdHlwZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdncmVn
YXRlKHByb3RvdHlwZSwgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS5n
ZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS5nZXROYW1lKCksIHZhcmlhYmxlLmdldFR5cGUoKSwgKHl5
bHNwWy0xXSkpLCAoeXlsc3BbLTFdKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcHJvdG90eXBlID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocHJvdG90eXBlLCBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgKHl5bHNwWy0xXSkpLCAoeXlsc3BbLTFdKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHByb3RvdHlwZS0+
c2V0T3AoRU9wUHJvdG90eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IHByb3RvdHlwZTsKLQotICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmFkZEZ1bmN0aW9uUHJvdG90
eXBlRGVjbGFyYXRpb24oKigoeXl2c3BbLTFdLmludGVybSkuZnVuY3Rpb24pLCAoeXlsc3BbLTFd
KSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zMTE0LDcgKzMwNjksNyBAQAogICBjYXNlIDkw
OgogCiAgICAgewotICAgICAgICBpZiAoKCh5eXZzcFstMl0uaW50ZXJtLnByZWNpc2lvbikgPT0g
RWJwSGlnaCkgJiYgKGNvbnRleHQtPnNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKSAm
JiAhY29udGV4dC0+ZnJhZ21lbnRQcmVjaXNpb25IaWdoKSB7CisgICAgICAgIGlmICgoKHl5dnNw
Wy0yXS5pbnRlcm0ucHJlY2lzaW9uKSA9PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+Z2V0U2hhZGVy
VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikgJiYgIWNvbnRleHQtPmdldEZyYWdtZW50UHJl
Y2lzaW9uSGlnaCgpKSB7CiAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbLTNdKSwg
InByZWNpc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGluIGZyYWdtZW50IHNoYWRlciIsICJoaWdocCIp
OwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9CkBAIC0zMTY2LDU3
ICszMTIxLDcgQEAKICAgY2FzZSA5NToKIAogICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8g
TXVsdGlwbGUgZGVjbGFyYXRpb25zIG9mIHRoZSBzYW1lIGZ1bmN0aW9uIGFyZSBhbGxvd2VkLgot
ICAgICAgICAvLwotICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZGVmaW5pdGlvbiwgdGhlIGRlZmlu
aXRpb24gcHJvZHVjdGlvbiBjb2RlIHdpbGwgY2hlY2sgZm9yIHJlZGVmaW5pdGlvbnMKLSAgICAg
ICAgLy8gKHdlIGRvbid0IGtub3cgYXQgdGhpcyBwb2ludCBpZiBpdCdzIGEgZGVmaW5pdGlvbiBv
ciBub3QpLgotICAgICAgICAvLwotICAgICAgICAvLyBSZWRlY2xhcmF0aW9ucyBhcmUgYWxsb3dl
ZC4gIEJ1dCwgcmV0dXJuIHR5cGVzIGFuZCBwYXJhbWV0ZXIgcXVhbGlmaWVycyBtdXN0IG1hdGNo
LgotICAgICAgICAvLwotICAgICAgICBURnVuY3Rpb24qIHByZXZEZWMgPSBzdGF0aWNfY2FzdDxU
RnVuY3Rpb24qPihjb250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKCh5eXZzcFstMV0uaW50ZXJtLmZ1
bmN0aW9uKS0+Z2V0TWFuZ2xlZE5hbWUoKSwgY29udGV4dC0+c2hhZGVyVmVyc2lvbikpOwotICAg
ICAgICBpZiAocHJldkRlYykgewotICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFJldHVyblR5
cGUoKSAhPSAoeXl2c3BbLTFdLmludGVybS5mdW5jdGlvbiktPmdldFJldHVyblR5cGUoKSkgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJvdmVybG9hZGVkIGZ1
bmN0aW9ucyBtdXN0IGhhdmUgdGhlIHNhbWUgcmV0dXJuIHR5cGUiLCAoeXl2c3BbLTFdLmludGVy
bS5mdW5jdGlvbiktPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHByZXZEZWMtPmdldFBhcmFtQ291bnQoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHByZXZEZWMtPmdldFBhcmFtKGkpLnR5cGUtPmdldFF1YWxpZmll
cigpICE9ICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlwZS0+Z2V0
UXVhbGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WzBdKSwgIm92ZXJsb2FkZWQgZnVuY3Rpb25zIG11c3QgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIg
cXVhbGlmaWVycyIsICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSkudHlw
ZS0+Z2V0UXVhbGlmaWVyU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgLy8KLSAgICAgICAgLy8gQ2hlY2sgZm9yIHByZXZpb3VzbHkgZGVjbGFyZWQgdmFy
aWFibGVzIHVzaW5nIHRoZSBzYW1lIG5hbWUuCi0gICAgICAgIC8vCi0gICAgICAgIFRTeW1ib2wg
KnByZXZTeW0gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKCh5eXZzcFstMV0uaW50ZXJtLmZ1
bmN0aW9uKS0+Z2V0TmFtZSgpLCBjb250ZXh0LT5zaGFkZXJWZXJzaW9uKTsKLSAgICAgICAgaWYg
KHByZXZTeW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlv
bigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxz
cFswXSksICJyZWRlZmluaXRpb24iLCAoeXl2c3BbLTFdLmludGVybS5mdW5jdGlvbiktPmdldE5h
bWUoKS5jX3N0cigpLCAiZnVuY3Rpb24iKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
dmVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHVubWFuZ2xlZCBuYW1lIHRvIGRldGVjdCBwb3Rl
bnRpYWwgZnV0dXJlIHJlZGVmaW5pdGlvbiBhcyBhIHZhcmlhYmxlLgotICAgICAgICAgICAgVEZ1
bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24oTmV3UG9vbFRTdHJpbmcoKHl5dnNwWy0x
XS5pbnRlcm0uZnVuY3Rpb24pLT5nZXROYW1lKCkuY19zdHIoKSksICh5eXZzcFstMV0uaW50ZXJt
LmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0VW5tYW5nbGVkKGZ1bmN0aW9uKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIElmIHRoaXMgaXMgYSByZWRlY2xhcmF0aW9u
LCBpdCBjb3VsZCBhbHNvIGJlIGEgZGVmaW5pdGlvbiwKLSAgICAgICAgLy8gaW4gd2hpY2ggY2Fz
ZSwgd2Ugd2FudCB0byB1c2UgdGhlIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhpcyBvbmUsIGFuZCBu
b3QgdGhlIG9uZSB0aGF0J3MKLSAgICAgICAgLy8gYmVpbmcgcmVkZWNsYXJlZC4gIFNvLCBwYXNz
IGJhY2sgdXAgdGhpcyBkZWNsYXJhdGlvbiwgbm90IHRoZSBvbmUgaW4gdGhlIHN5bWJvbCB0YWJs
ZS4KLSAgICAgICAgLy8KLSAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3Bb
LTFdLmludGVybS5mdW5jdGlvbik7Ci0KLSAgICAgICAgLy8gV2UncmUgYXQgdGhlIGlubmVyIHNj
b3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQgYm9keSBzdGF0ZW1lbnQu
Ci0gICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBzdXJyb3VuZGlu
ZyBzY29wZSBpbnN0ZWFkLgotICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5nZXRPdXRlckxl
dmVsKCktPmluc2VydCgoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbik7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmZ1bmN0aW9uID0gY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoKHl5bHNw
WzBdKSwgKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rpb24pKTsKICAgICB9CiAKICAgICBicmVhazsK
QEAgLTMyNDMsNyArMzE0OCw3IEBACiAgICAgICAgIC8vIEFkZCB0aGUgcGFyYW1ldGVyCiAgICAg
ICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rpb24p
OwogICAgICAgICBpZiAoKHl5dnNwWzBdLmludGVybSkucGFyYW0udHlwZS0+Z2V0QmFzaWNUeXBl
KCkgIT0gRWJ0Vm9pZCkKLSAgICAgICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+
YWRkUGFyYW1ldGVyKCh5eXZzcFswXS5pbnRlcm0pLnBhcmFtKTsKKyAgICAgICAgICAgICh5eXZz
cFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1ldGVyKCh5eXZzcFswXS5pbnRlcm0pLnBh
cmFtLnR1cm5Ub0NvbnN0KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkZWxldGUgKHl5
dnNwWzBdLmludGVybSkucGFyYW0udHlwZTsKICAgICB9CkBAIC0zMjY3LDcgKzMxNzIsNyBAQAog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQWRkIHRoZSBwYXJhbWV0ZXIKICAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWy0yXS5pbnRlcm0uZnVuY3Rp
b24pOwotICAgICAgICAgICAgKHl5dnNwWy0yXS5pbnRlcm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0
ZXIoKHl5dnNwWzBdLmludGVybSkucGFyYW0pOworICAgICAgICAgICAgKHl5dnNwWy0yXS5pbnRl
cm0uZnVuY3Rpb24pLT5hZGRQYXJhbWV0ZXIoKHl5dnNwWzBdLmludGVybSkucGFyYW0udHVyblRv
Q29uc3QoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMyNzYsMTcgKzMxODEsMjMgQEAKICAg
Y2FzZSAxMDA6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbLTJdLmludGVybS50eXBlKS5x
dWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmICh5eXZzcFstMl0uaW50ZXJtLnR5cGUpLnF1YWxpZmll
ciAhPSBFdnFUZW1wb3JhcnkpIHsKKyAgICAgICAgaWYgKCh5eXZzcFstMl0uaW50ZXJtLnR5cGUp
LnF1YWxpZmllciAhPSBFdnFHbG9iYWwgJiYgKHl5dnNwWy0yXS5pbnRlcm0udHlwZSkucXVhbGlm
aWVyICE9IEV2cVRlbXBvcmFyeSkKKyAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+ZXJy
b3IoKHl5bHNwWy0xXSksICJubyBxdWFsaWZpZXJzIGFsbG93ZWQgZm9yIGZ1bmN0aW9uIHJldHVy
biIsIGdldFF1YWxpZmllclN0cmluZygoeXl2c3BbLTJdLmludGVybS50eXBlKS5xdWFsaWZpZXIp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKICAgICAgICAgfQorICAgICAgICBp
ZiAoISh5eXZzcFstMl0uaW50ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllci5pc0VtcHR5KCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFstMV0pLCAibm8gcXVh
bGlmaWVycyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCAibGF5b3V0Iik7CisgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIH0KICAgICAgICAgLy8gbWFrZSBzdXJl
IGEgc2FtcGxlciBpcyBub3QgaW52b2x2ZWQgYXMgd2VsbC4uLgogICAgICAgICBpZiAoY29udGV4
dC0+c2FtcGxlckVycm9yQ2hlY2soKHl5bHNwWy0xXSksICh5eXZzcFstMl0uaW50ZXJtLnR5cGUp
LCAic2FtcGxlcnMgY2FuJ3QgYmUgZnVuY3Rpb24gcmV0dXJuIHZhbHVlcyIpKQogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogCiAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gYXMg
YSBwcm90b3R5cGUgYWZ0ZXIgcGFyc2luZyBpdCAod2UgZG8gbm90IHN1cHBvcnQgcmVjdXJzaW9u
KQogICAgICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uOwotICAgICAgICBUVHlwZSB0eXBlKCh5eXZz
cFstMl0uaW50ZXJtLnR5cGUpKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5
cGUoKHl5dnNwWy0yXS5pbnRlcm0udHlwZSkpOwogICAgICAgICBmdW5jdGlvbiA9IG5ldyBURnVu
Y3Rpb24oKHl5dnNwWy0xXS5sZXgpLnN0cmluZywgdHlwZSk7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uZnVuY3Rpb24pID0gZnVuY3Rpb247CiAgICAgICAgIApAQCAtMzU0NCw3ICszNDU1LDcgQEAK
IAogICAgICAgICBpZiAoKHl5dnNwWzBdLmludGVybS50eXBlKS5hcnJheSkgewogICAgICAgICAg
ICAgRVMzX09OTFkoIltdIiwgKHl5bHNwWzBdKSwgImZpcnN0LWNsYXNzLWFycmF5Iik7Ci0gICAg
ICAgICAgICBpZiAoY29udGV4dC0+c2hhZGVyVmVyc2lvbiAhPSAzMDApIHsKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gMzAwKSB7CiAgICAgICAgICAgICAg
ICAgKHl5dnNwWzBdLmludGVybS50eXBlKS5jbGVhckFycmF5bmVzcygpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0zNTU1LDcgKzM0NjYsNyBAQAogICBjYXNlIDEyNjoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9IGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lmaWVk
VHlwZSgoeXl2c3BbLTFdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eXZzcFstMV0uaW50ZXJt
LnR5cGUpLmxheW91dFF1YWxpZmllciwgKHl5dnNwWzBdLmludGVybS50eXBlKSk7CisgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkgPSBjb250ZXh0LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoKHl5
dnNwWy0xXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXl2c3BbLTFdLmludGVybS50eXBlKS5p
bnZhcmlhbnQsICh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLmxheW91dFF1YWxpZmllciwgKHl5dnNw
WzBdLmludGVybS50eXBlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjAyLDcgKzM1MTMs
NyBAQAogICAgICAgICBFUzJfT05MWSgidmFyeWluZyIsICh5eWxzcFswXSkpOwogICAgICAgICBp
ZiAoY29udGV4dC0+Z2xvYmFsRXJyb3JDaGVjaygoeXlsc3BbMF0pLCBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCksICJ2YXJ5aW5nIikpCiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvdmVyKCk7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9T
SEFERVIpCisgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVY
X1NIQURFUikKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9p
ZCwgRXZxVmFyeWluZ091dCwgKHl5bHNwWzBdKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ0luLCAoeXls
c3BbMF0pKTsKQEAgLTM2MTYsMTAgKzM1MjcsMTEgQEAKICAgICAgICAgRVMyX09OTFkoInZhcnlp
bmciLCAoeXlsc3BbLTFdKSk7CiAgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNr
KCh5eWxzcFstMV0pLCBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCksICJpbnZh
cmlhbnQgdmFyeWluZyIpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwotICAgICAg
ICBpZiAoY29udGV4dC0+c2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQotICAgICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFJbnZhcmlhbnRWYXJ5
aW5nT3V0LCAoeXlsc3BbLTFdKSk7CisgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBl
KCkgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSku
c2V0QmFzaWMoRWJ0Vm9pZCwgRXZxVmFyeWluZ091dCwgKHl5bHNwWy0xXSkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEJhc2ljKEVidFZvaWQsIEV2
cUludmFyaWFudFZhcnlpbmdJbiwgKHl5bHNwWy0xXSkpOworICAgICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5zZXRCYXNpYyhFYnRWb2lkLCBFdnFWYXJ5aW5nSW4sICh5eWxzcFstMV0pKTsK
KyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5pbnZhcmlhbnQgPSB0cnVlOwogICAgIH0KIAog
ICAgIGJyZWFrOwpAQCAtMzYyNywxMiArMzUzOSwxMiBAQAogICBjYXNlIDEzMzoKIAogICAgIHsK
LSAgICAgICAgaWYgKCh5eXZzcFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUNvbnN0
ICYmICFjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpIHsKKyAgICAgICAgaWYg
KCh5eXZzcFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyICE9IEV2cUNvbnN0ICYmICFjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCisgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFswXSksICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRo
ZSBjb25zdCBzdG9yYWdlIHF1YWxpZmllci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWzBd
LmludGVybS50eXBlKS5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0
QmFzaWMoRWJ0Vm9pZCwgKHl5dnNwWzBdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eWxzcFsw
XSkpOwogICAgICAgICB9CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuc2V0QmFzaWMoRWJ0
Vm9pZCwgKHl5dnNwWzBdLmludGVybS50eXBlKS5xdWFsaWZpZXIsICh5eWxzcFswXSkpOwogICAg
IH0KIAogICAgIGJyZWFrOwpAQCAtMzY3OCw3ICszNTkwLDkgQEAKICAgY2FzZSAxMzg6CiAKICAg
ICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gRXZxQ29uc3Q7Cisg
ICAgICAgIGNvbnRleHQtPmVzM0ludmFyaWFudEVycm9yQ2hlY2soKHl5dnNwWzBdLmludGVybS50
eXBlKS5xdWFsaWZpZXIsICh5eWxzcFstMV0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBl
KS5zZXRCYXNpYyhFYnRWb2lkLCAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5
bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkuaW52YXJpYW50ID0gdHJ1ZTsK
ICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2ODYsOCArMzYwMCw5IEBACiAgIGNhc2UgMTM5Ogog
CiAgICAgewotICAgICAgICBFUzNfT05MWSgiaW4iLCAoeXlsc3BbMF0pLCAic3RvcmFnZSBxdWFs
aWZpZXIiKTsKLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoY29udGV4
dC0+c2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8gRXZxRnJhZ21lbnRJbiA6IEV2
cVZlcnRleEluOworICAgICAgICBjb250ZXh0LT5lczNJbnZhcmlhbnRFcnJvckNoZWNrKCh5eXZz
cFswXS5pbnRlcm0udHlwZSkucXVhbGlmaWVyLCAoeXlsc3BbLTJdKSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZSkgPSBjb250ZXh0LT5qb2luSW50ZXJwb2xhdGlvblF1YWxpZmllcnMoKHl5
bHNwWy0xXSksICh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLnF1YWxpZmllciwgKHl5bHNwWzBdKSwg
KHl5dnNwWzBdLmludGVybS50eXBlKS5xdWFsaWZpZXIpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLmludmFyaWFudCA9IHRydWU7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjk1LDgg
KzM2MTAsNyBAQAogICBjYXNlIDE0MDoKIAogICAgIHsKLSAgICAgICAgRVMzX09OTFkoIm91dCIs
ICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGUpLnF1YWxpZmllciA9IChjb250ZXh0LT5zaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NI
QURFUikgPyBFdnFGcmFnbWVudE91dCA6IEV2cVZlcnRleE91dDsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlKS5xdWFsaWZpZXIgPSBFdnFDb25zdDsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTM3MDQsMzIgKzM2MTgsNTAgQEAKICAgY2FzZSAxNDE6CiAKICAgICB7CisgICAgICAgIEVTM19P
TkxZKCJpbiIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0g
R0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50SW4gOiBFdnFWZXJ0ZXhJbjsKKyAgICB9
CisKKyAgICBicmVhazsKKworICBjYXNlIDE0MjoKKworICAgIHsKKyAgICAgICAgRVMzX09OTFko
Im91dCIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGUpLnF1YWxpZmllciA9IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xf
RlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxVmVydGV4T3V0OworICAgIH0K
KworICAgIGJyZWFrOworCisgIGNhc2UgMTQzOgorCisgICAgewogICAgICAgICBFUzNfT05MWSgi
Y2VudHJvaWQgaW4iLCAoeXlsc3BbLTFdKSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5zaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgIGlm
IChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKICAgICAgICAg
ewogICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWy0xXSksICJpbnZhbGlkIHN0b3Jh
Z2UgcXVhbGlmaWVyIiwgIml0IGlzIGFuIGVycm9yIHRvIHVzZSAnY2VudHJvaWQgaW4nIGluIHRo
ZSB2ZXJ0ZXggc2hhZGVyIik7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5xdWFsaWZpZXIgPSAoY29udGV4dC0+
c2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8gRXZxQ2VudHJvaWRJbiA6IEV2cVZl
cnRleEluOworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnF1YWxpZmllciA9IChjb250ZXh0
LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUNlbnRyb2lkSW4g
OiBFdnFWZXJ0ZXhJbjsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDE0MjoKKyAgY2Fz
ZSAxNDQ6CiAKICAgICB7CiAgICAgICAgIEVTM19PTkxZKCJjZW50cm9pZCBvdXQiLCAoeXlsc3Bb
LTFdKSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgIGlmIChjb250ZXh0LT5zaGFkZXJU
eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRl
clR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnRleHQtPmVycm9yKCh5eWxzcFstMV0pLCAiaW52YWxpZCBzdG9yYWdlIHF1YWxpZmllciIsICJp
dCBpcyBhbiBlcnJvciB0byB1c2UgJ2NlbnRyb2lkIG91dCcgaW4gdGhlIGZyYWdtZW50IHNoYWRl
ciIpOwogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gKGNvbnRleHQtPnNoYWRlclR5cGUgPT0g
R0xfRlJBR01FTlRfU0hBREVSKSA/IEV2cUZyYWdtZW50T3V0IDogRXZxQ2VudHJvaWRPdXQ7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucXVhbGlmaWVyID0gKGNvbnRleHQtPmdldFNoYWRl
clR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpID8gRXZxRnJhZ21lbnRPdXQgOiBFdnFDZW50
cm9pZE91dDsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDE0MzoKKyAgY2FzZSAxNDU6
CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCh5eWxzcFsw
XSksIGNvbnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgInVuaWZvcm0iKSkKQEAg
LTM3MzksNyArMzY3MSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDE0NDoKKyAgY2FzZSAx
NDY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbMF0uaW50
ZXJtLnR5cGUpOwpAQCAtMzc1NCw3ICszNjg2LDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTQ1OgorICBjYXNlIDE0NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9
ICh5eXZzcFswXS5pbnRlcm0udHlwZSk7CkBAIC0zNzY4LDcgKzM3MDAsNyBAQAogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNDY6CisgIGNhc2UgMTQ4OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdoOwpAQCAtMzc3Niw3ICszNzA4LDcgQEAKIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTQ3OgorICBjYXNlIDE0OToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTWVkaXVtOwpAQCAtMzc4NCw3ICszNzE2LDcgQEAK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ4OgorICBjYXNlIDE1MDoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93OwpAQCAtMzc5Miw3ICszNzI0LDcg
QEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTQ5OgorICBjYXNlIDE1MToKIAogICAgIHsKICAg
ICAgICAgRVMzX09OTFkoImxheW91dCIsICh5eWxzcFstM10pLCAicXVhbGlmaWVyIik7CkBAIC0z
ODAxLDcgKzM3MzMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTA6CisgIGNhc2UgMTUy
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSAoeXl2
c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllcik7CkBAIC0zODA5LDcgKzM3NDEsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNTE6CisgIGNhc2UgMTUzOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5qb2luTGF5b3V0UXVhbGlm
aWVycygoeXl2c3BbLTJdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpLCAoeXl2c3BbMF0uaW50ZXJt
LmxheW91dFF1YWxpZmllcikpOwpAQCAtMzgxNyw3ICszNzQ5LDcgQEAKIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTUyOgorICBjYXNlIDE1NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5sYXlvdXRRdWFsaWZpZXIpID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZz
cFswXS5sZXgpLnN0cmluZywgKHl5bHNwWzBdKSk7CkBAIC0zODI1LDcgKzM3NTcsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNTM6CisgIGNhc2UgMTU1OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxp
ZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICooeXl2c3BbMF0ubGV4
KS5zdHJpbmcsICh5eXZzcFswXS5sZXgpLmksICh5eWxzcFswXSkpOwpAQCAtMzgzMyw3ICszNzY1
LDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU0OgorICBjYXNlIDE1NjoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gY29udGV4dC0+cGFyc2VM
YXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFstMl0pLCAqKHl5
dnNwWzBdLmxleCkuc3RyaW5nLCAoeXl2c3BbMF0ubGV4KS5pLCAoeXlsc3BbMF0pKTsKQEAgLTM4
NDEsNyArMzc3Myw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDE1NToKKyAgY2FzZSAxNTc6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSAoeXl2c3BbMF0uaW50ZXJt
LnR5cGUpOwpAQCAtMzg0OSw3ICszNzgxLDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTU2
OgorICBjYXNlIDE1ODoKIAogICAgIHsKICAgICAgICAgRVMzX09OTFkoIltdIiwgKHl5bHNwWy0x
XSksICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7CkBAIC0zODU5LDcgKzM3OTEsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNTc6CisgIGNhc2UgMTU5OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWy0zXS5pbnRlcm0udHlwZSk7CkBAIC0zODc2LDcg
KzM4MDgsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTg6CisgIGNhc2UgMTYwOgogCiAg
ICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zODg1LDcgKzM4MTcs
NyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTk6CisgIGNhc2UgMTYxOgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zODk0LDcgKzM4MjYsNyBAQAog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjA6CisgIGNhc2UgMTYyOgogCiAgICAgewogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTAzLDcgKzM4MzUsNyBAQAogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNjE6CisgIGNhc2UgMTYzOgogCiAgICAgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTEyLDcgKzM4NDQsNyBAQAogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNjI6CisgIGNhc2UgMTY0OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTIxLDcgKzM4NTMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNjM6CisgIGNhc2UgMTY1OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7CkBAIC0zOTMxLDcgKzM4NjMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NjQ6CisgIGNhc2UgMTY2OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7CkBAIC0zOTQxLDcgKzM4NzMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjU6Cisg
IGNhc2UgMTY3OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBA
IC0zOTUxLDcgKzM4ODMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjY6CisgIGNhc2Ug
MTY4OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTYx
LDcgKzM4OTMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjc6CisgIGNhc2UgMTY5Ogog
CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTcxLDcgKzM5
MDMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjg6CisgIGNhc2UgMTcwOgogCiAgICAg
ewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTgxLDcgKzM5MTMsNyBA
QAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjk6CisgIGNhc2UgMTcxOgogCiAgICAgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC0zOTkxLDcgKzM5MjMsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNzA6CisgIGNhc2UgMTcyOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MDAxLDcgKzM5MzMsNyBAQAogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNzE6CisgIGNhc2UgMTczOgogCiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MDExLDcgKzM5NDMsNyBAQAogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNzI6CisgIGNhc2UgMTc0OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7CkBAIC00MDIxLDcgKzM5NTMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNzM6CisgIGNhc2UgMTc1OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7CkBAIC00MDMxLDcgKzM5NjMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzQ6
CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
CkBAIC00MDQxLDcgKzM5NzMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzU6CisgIGNh
c2UgMTc3OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00
MDUxLDcgKzM5ODMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzY6CisgIGNhc2UgMTc4
OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MDYxLDcg
KzM5OTMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzc6CisgIGNhc2UgMTc5OgogCiAg
ICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MDcxLDcgKzQwMDMs
NyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTgwOgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MDgxLDcgKzQwMTMsNyBAQAog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzk6CisgIGNhc2UgMTgxOgogCiAgICAgewogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MDkxLDcgKzQwMjMsNyBAQAogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxODA6CisgIGNhc2UgMTgyOgogCiAgICAgewogICAgICAgICBUUXVh
bGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTAxLDcgKzQwMzMsNyBAQAogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxODE6CisgIGNhc2UgMTgzOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVy
IHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwg
OiBFdnFUZW1wb3Jhcnk7CkBAIC00MTExLDcgKzQwNDMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxODI6CisgIGNhc2UgMTg0OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwg
PSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFU
ZW1wb3Jhcnk7CkBAIC00MTIxLDcgKzQwNTMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODM6CisgIGNhc2UgMTg1OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250
ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jh
cnk7CkBAIC00MTMxLDcgKzQwNjMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODQ6Cisg
IGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5z
eW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBA
IC00MTQwLDcgKzQwNzIsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2Ug
MTg3OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xU
YWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTQ5
LDcgKzQwODEsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODY6CisgIGNhc2UgMTg4Ogog
CiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5h
dEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTU4LDcgKzQw
OTAsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODc6CisgIGNhc2UgMTg5OgogCiAgICAg
ewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2Jh
bExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTY3LDcgKzQwOTksNyBA
QAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODg6CisgIGNhc2UgMTkwOgogCiAgICAgewogICAg
ICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVs
KCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTc2LDcgKzQxMDgsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxODk6CisgIGNhc2UgMTkxOgogCiAgICAgewogICAgICAgICBU
UXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTg1LDcgKzQxMTcsNyBAQAogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTkyOgogCiAgICAgewogICAgICAgICBUUXVhbGlm
aWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MTk0LDcgKzQxMjYsNyBAQAogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxOTE6CisgIGNhc2UgMTkzOgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1
YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBF
dnFUZW1wb3Jhcnk7CkBAIC00MjAzLDcgKzQxMzUsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxOTI6CisgIGNhc2UgMTk0OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3Jhcnk7CkBAIC00MjEyLDcgKzQxNDQsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTM6
CisgIGNhc2UgMTk1OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0
LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7
CkBAIC00MjIxLDcgKzQxNTMsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTQ6CisgIGNh
c2UgMTk2OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00
MjMwLDcgKzQxNjIsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTU6CisgIGNhc2UgMTk3
OgogCiAgICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MjM5LDcg
KzQxNzEsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTY6CisgIGNhc2UgMTk4OgogCiAg
ICAgewogICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEds
b2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MjQ4LDcgKzQxODAs
NyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMTk5OgogCiAgICAgewog
ICAgICAgICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExl
dmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MjU3LDcgKzQxODksNyBAQAog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6CisgIGNhc2UgMjAwOgogCiAgICAgewogICAgICAg
ICBUUXVhbGlmaWVyIHF1YWwgPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkg
PyBFdnFHbG9iYWwgOiBFdnFUZW1wb3Jhcnk7CkBAIC00MjY2LDcgKzQxOTgsNyBAQAogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxOTk6CisgIGNhc2UgMjAxOgogCiAgICAgewogICAgICAgICBpZiAo
IWNvbnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikp
IHsKQEAgLTQyNzksNyArNDIxMSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDIwMDoKKyAg
Y2FzZSAyMDI6CiAKICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNp
b24oIkdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSIpKSB7CkBAIC00MjkyLDcgKzQyMjQsNyBAQAog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDE6CisgIGNhc2UgMjAzOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKQEAgLTQzMDEs
NyArNDIzMyw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDIwMjoKKyAgY2FzZSAyMDQ6CiAK
ICAgICB7CiAgICAgICAgIC8vCkBAIC00MzE2LDEzICs0MjQ4LDEzIEBACiAKICAgICBicmVhazsK
IAotICBjYXNlIDIwMzoKKyAgY2FzZSAyMDU6CiAKICAgICB7IGlmIChjb250ZXh0LT5lbnRlclN0
cnVjdERlY2xhcmF0aW9uKCh5eWxzcFstMV0pLCAqKHl5dnNwWy0xXS5sZXgpLnN0cmluZykpIGNv
bnRleHQtPnJlY292ZXIoKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDQ6CisgIGNhc2Ug
MjA2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gY29udGV4dC0+YWRk
U3RydWN0dXJlKCh5eWxzcFstNV0pLCAoeXlsc3BbLTRdKSwgKHl5dnNwWy00XS5sZXgpLnN0cmlu
ZywgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CkBAIC00MzMwLDEzICs0MjYyLDEzIEBA
CiAKICAgICBicmVhazsKIAotICBjYXNlIDIwNToKKyAgY2FzZSAyMDc6CiAKICAgICB7IGlmIChj
b250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4
KS5zdHJpbmcpKSBjb250ZXh0LT5yZWNvdmVyKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjA2OgorICBjYXNlIDIwODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9
IGNvbnRleHQtPmFkZFN0cnVjdHVyZSgoeXlsc3BbLTRdKSwgKHl5bG9jKSwgTmV3UG9vbFRTdHJp
bmcoIiIpLCAoeXl2c3BbLTFdLmludGVybS5maWVsZExpc3QpKTsKQEAgLTQzNDQsNyArNDI3Niw3
IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDIwNzoKKyAgY2FzZSAyMDk6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFswXS5pbnRlcm0uZmllbGRM
aXN0KTsKQEAgLTQzNTIsNyArNDI4NCw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDIwODoK
KyAgY2FzZSAyMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9
ICh5eXZzcFstMV0uaW50ZXJtLmZpZWxkTGlzdCk7CkBAIC00MzcwLDcgKzQzMDIsNyBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyMDk6CisgIGNhc2UgMjExOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBjb250ZXh0LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlz
dCgoeXl2c3BbLTJdLmludGVybS50eXBlKSwgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7
CkBAIC00Mzc4LDcgKzQzMTAsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTA6CisgIGNh
c2UgMjEyOgogCiAgICAgewogICAgICAgICAvLyBFUzMgT25seSwgYnV0IGVycm9ycyBzaG91bGQg
YmUgaGFuZGxlZCBlbHNld2hlcmUKQEAgLTQzODksNyArNDMyMSw3IEBACiAKICAgICBicmVhazsK
IAotICBjYXNlIDIxMToKKyAgY2FzZSAyMTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uZmllbGRMaXN0KSA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CkBAIC00Mzk4LDcgKzQzMzAsNyBA
QAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTI6CisgIGNhc2UgMjE0OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbMF0uaW50ZXJt
LmZpZWxkKSk7CkBAIC00NDA2LDcgKzQzMzgsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAy
MTM6CisgIGNhc2UgMjE1OgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+cmVzZXJ2ZWRF
cnJvckNoZWNrKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpKQpAQCAtNDQxOCw3
ICs0MzUwLDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE0OgorICBjYXNlIDIxNjoKIAog
ICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPnJlc2VydmVkRXJyb3JDaGVjaygoeXlsc3BbLTNd
KSwgKih5eXZzcFstM10ubGV4KS5zdHJpbmcpKQpAQCAtNDQzNSw5MSArNDM2Nyw5MSBAQAogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyMTU6CisgIGNhc2UgMjE3OgogCiAgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7
IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE2OgorICBjYXNlIDIxODoKIAogICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE3OgorICBjYXNlIDIxOToKIAogICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKTsg
fQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTg6CisgIGNhc2UgMjIwOgogCiAgICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTk6CisgIGNhc2UgMjIxOgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyMjA6CisgIGNhc2UgMjIyOgogCiAgICAgeyAoeXl2YWwuaW50
ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyMjE6CisgIGNhc2UgMjIzOgogCiAgICAgeyAoeXl2YWwuaW50ZXJt
LmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAyMjI6CisgIGNhc2UgMjI0OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Td2l0Y2gpOyB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDIyMzoKKyAgY2FzZSAyMjU6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybUNhc2UpOyB9CiAKICAgICBicmVhazsK
IAotICBjYXNlIDIyNDoKKyAgY2FzZSAyMjY6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDIyNToKKyAgY2FzZSAyMjc6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBj
YXNlIDIyNjoKKyAgY2FzZSAyMjg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVn
YXRlKSA9IDA7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI3OgorICBjYXNlIDIyOToKIAog
ICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAKICAgICBicmVhazsKIAotICBj
YXNlIDIyODoKKyAgY2FzZSAyMzA6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyOToKKyAgY2FzZSAyMzE6CiAKICAgICB7CiAg
ICAgICAgIGlmICgoeXl2c3BbLTJdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpICE9IDApIHsKQEAg
LTQ1MzEsNjMgKzQ0NjMsNjMgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjMwOgorICBjYXNl
IDIzMjoKIAotICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtTm9kZSk7IH0KKyAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbMF0uaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjMxOgorICBjYXNlIDIzMzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjMy
OgorICBjYXNlIDIzNDoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIzMzoKKyAgY2FzZSAyMzU6CiAKLSAgICB7IGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBd
LmludGVybS5pbnRlcm1Ob2RlKTsgfQorICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybUFnZ3Jl
Z2F0ZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM0OgorICBjYXNlIDIzNjoKIAogICAg
IHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNl
IDIzNToKKyAgY2FzZSAyMzc6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsg
fQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzY6CisgIGNhc2UgMjM4OgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsKKyAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1BZ2dyZWdhdGUpID0gMDsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIz
NzoKKyAgY2FzZSAyMzk6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbLTFdLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpLT5zZXRPcChFT3BTZXF1ZW5jZSk7CiAgICAgICAgICAgICAoeXl2c3BbLTFdLmlu
dGVybS5pbnRlcm1BZ2dyZWdhdGUpLT5zZXRMaW5lKCh5eWxvYykpOwogICAgICAgICB9Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSAoeXl2
c3BbLTFdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjM4OgorICBjYXNlIDI0MDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1BZ2dyZWdhdGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLm1ha2VBZ2dyZWdhdGUoKHl5
dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7CkBAIC00NTk1LDcgKzQ1MjcsNyBA
QAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzk6CisgIGNhc2UgMjQxOgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybUFnZ3JlZ2F0ZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbLTFdLmludGVybS5pbnRlcm1BZ2dyZWdhdGUpLCAoeXl2
c3BbMF0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsb2MpKTsKQEAgLTQ2MDMsMTkgKzQ1MzUsMTkg
QEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQwOgorICBjYXNlIDI0MjoKIAogICAgIHsgKHl5
dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQx
OgorICBjYXNlIDI0MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRp
Y19jYXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7
IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQyOgorICBjYXNlIDI0NDoKIAogICAgIHsKICAg
ICAgICAgaWYgKGNvbnRleHQtPmJvb2xFcnJvckNoZWNrKCh5eWxzcFstNF0pLCAoeXl2c3BbLTJd
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAgLTQ2MjUsNyArNDU1Nyw3IEBACiAKICAgICBi
cmVhazsKIAotICBjYXNlIDI0MzoKKyAgY2FzZSAyNDU6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtTm9kZSk7
CkBAIC00NjM0LDcgKzQ1NjYsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDQ6CisgIGNh
c2UgMjQ2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00NjQzLDIyICs0NTc1LDIyIEBACiAK
ICAgICBicmVhazsKIAotICBjYXNlIDI0NToKKyAgY2FzZSAyNDc6CiAKLSAgICB7ICsrY29udGV4
dC0+bVN3aXRjaE5lc3RpbmdMZXZlbDsgfQorICAgIHsgY29udGV4dC0+aW5jclN3aXRjaE5lc3Rp
bmdMZXZlbCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0NjoKKyAgY2FzZSAyNDg6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtU3dpdGNoKSA9IGNvbnRleHQtPmFk
ZFN3aXRjaCgoeXl2c3BbLTNdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50
ZXJtLmludGVybUFnZ3JlZ2F0ZSksICh5eWxzcFstNV0pKTsKLSAgICAgICAgLS1jb250ZXh0LT5t
U3dpdGNoTmVzdGluZ0xldmVsOworICAgICAgICBjb250ZXh0LT5kZWNyU3dpdGNoTmVzdGluZ0xl
dmVsKCk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDc6CisgIGNhc2UgMjQ5Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUNhc2UpID0gY29udGV4dC0+YWRk
Q2FzZSgoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSk7CkBA
IC00NjY2LDcgKzQ1OTgsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDg6CisgIGNhc2Ug
MjUwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUNhc2UpID0gY29udGV4
dC0+YWRkRGVmYXVsdCgoeXlsc3BbLTFdKSk7CkBAIC00Njc0LDcgKzQ2MDYsNyBAQAogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNDk6CisgIGNhc2UgMjUxOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CkBAIC00Njg0LDcgKzQ2MTYsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNTA6
CisgIGNhc2UgMjUyOgogCiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZTsK
QEAgLTQ3MDEsNTcgKzQ2MzMsNTcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjUxOgorICBj
YXNlIDI1MzoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQt
Pm1Mb29wTmVzdGluZ0xldmVsOyB9CisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7
IGNvbnRleHQtPmluY3JMb29wTmVzdGluZ0xldmVsKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMjUyOgorICBjYXNlIDI1NDoKIAogICAgIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFi
bGUucG9wKCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuYWRkTG9vcChFTG9vcFdoaWxlLCAwLCAoeXl2c3BbLTJdLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAwLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3BbLTVd
KSk7Ci0gICAgICAgIC0tY29udGV4dC0+bUxvb3BOZXN0aW5nTGV2ZWw7CisgICAgICAgIGNvbnRl
eHQtPmRlY3JMb29wTmVzdGluZ0xldmVsKCk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyNTM6CisgIGNhc2UgMjU1OgogCi0gICAgeyArK2NvbnRleHQtPm1Mb29wTmVzdGluZ0xldmVs
OyB9CisgICAgeyBjb250ZXh0LT5pbmNyTG9vcE5lc3RpbmdMZXZlbCgpOyB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDI1NDoKKyAgY2FzZSAyNTY6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250
ZXh0LT5ib29sRXJyb3JDaGVjaygoeXlsc3BbMF0pLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpKSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKIAogICAgICAgICAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3Ao
RUxvb3BEb1doaWxlLCAwLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAwLCAo
eXl2c3BbLTVdLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bHNwWy00XSkpOwotICAgICAgICAtLWNv
bnRleHQtPm1Mb29wTmVzdGluZ0xldmVsOworICAgICAgICBjb250ZXh0LT5kZWNyTG9vcE5lc3Rp
bmdMZXZlbCgpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU1OgorICBjYXNlIDI1
NzoKIAotICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyArK2NvbnRleHQtPm1Mb29w
TmVzdGluZ0xldmVsOyB9CisgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IGNvbnRl
eHQtPmluY3JMb29wTmVzdGluZ0xldmVsKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU2
OgorICBjYXNlIDI1ODoKIAogICAgIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9w
KCk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuYWRkTG9vcChFTG9vcEZvciwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtTm9kZSksIHJl
aW50ZXJwcmV0X2Nhc3Q8VEludGVybVR5cGVkKj4oKHl5dnNwWy0yXS5pbnRlcm0ubm9kZVBhaXIp
Lm5vZGUxKSwgcmVpbnRlcnByZXRfY2FzdDxUSW50ZXJtVHlwZWQqPigoeXl2c3BbLTJdLmludGVy
bS5ub2RlUGFpcikubm9kZTIpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpLCAoeXlsc3Bb
LTZdKSk7Ci0gICAgICAgIC0tY29udGV4dC0+bUxvb3BOZXN0aW5nTGV2ZWw7CisgICAgICAgIGNv
bnRleHQtPmRlY3JMb29wTmVzdGluZ0xldmVsKCk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAyNTc6CisgIGNhc2UgMjU5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsKQEAgLTQ3NTksNyArNDY5
MSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI1ODoKKyAgY2FzZSAyNjA6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybU5vZGUpOwpAQCAtNDc2Nyw3ICs0Njk5LDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjU5OgorICBjYXNlIDI2MToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDc3NSw3
ICs0NzA3LDcgQEAKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjYwOgorICBjYXNlIDI2MjoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKQEAgLTQ3
ODMsNyArNDcxNSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2MToKKyAgY2FzZSAyNjM6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNw
Wy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ3OTIsNyArNDcyNCw3IEBACiAKICAg
ICBicmVhazsKIAotICBjYXNlIDI2MjoKKyAgY2FzZSAyNjQ6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKQEAgLTQ4MDEsNyArNDczMyw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2
MzoKKyAgY2FzZSAyNjU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9k
ZSkgPSBjb250ZXh0LT5hZGRCcmFuY2goRU9wQ29udGludWUsICh5eWxzcFstMV0pKTsKQEAgLTQ4
MDksNyArNDc0MSw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI2NDoKKyAgY2FzZSAyNjY6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5h
ZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFstMV0pKTsKQEAgLTQ4MTcsNyArNDc0OSw3IEBACiAK
ICAgICBicmVhazsKIAotICBjYXNlIDI2NToKKyAgY2FzZSAyNjc6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRCcmFuY2goRU9wUmV0dXJu
LCAoeXlsc3BbLTFdKSk7CkBAIC00ODI1LDcgKzQ3NTcsNyBAQAogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAyNjY6CisgIGNhc2UgMjY4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gY29udGV4dC0+YWRkQnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWy0xXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0yXSkpOwpAQCAtNDgzMyw3ICs0NzY1LDcgQEAK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjY3OgorICBjYXNlIDI2OToKIAogICAgIHsKICAgICAg
ICAgRlJBR19PTkxZKCJkaXNjYXJkIiwgKHl5bHNwWy0xXSkpOwpAQCAtNDg0MiwyNSArNDc3NCwy
NSBAQAogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjg6CisgIGNhc2UgMjcwOgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRl
cm1Ob2RlKTsKLSAgICAgICAgY29udGV4dC0+dHJlZVJvb3QgPSAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpOworICAgICAgICBjb250ZXh0LT5zZXRUcmVlUm9vdCgoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2OToKKyAgY2FzZSAyNzE6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbLTFdLmludGVybS5pbnRlcm1Ob2RlKSwg
KHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKSwgKHl5bG9jKSk7Ci0gICAgICAgIGNvbnRleHQt
PnRyZWVSb290ID0gKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKTsKKyAgICAgICAgY29udGV4dC0+
c2V0VHJlZVJvb3QoKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSk7CiAgICAgfQogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAyNzA6CisgIGNhc2UgMjcyOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsKQEAgLTQ4
NjgsNyArNDgwMCw3IEBACiAKICAgICBicmVhazsKIAotICBjYXNlIDI3MToKKyAgY2FzZSAyNzM6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0u
aW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDg3NiwxMjQgKzQ4MDgsMTggQEAKIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjcyOgorICBjYXNlIDI3NDoKIAogICAgIHsKLSAgICAgICAgVEZ1bmN0aW9u
KiBmdW5jdGlvbiA9ICh5eXZzcFswXS5pbnRlcm0pLmZ1bmN0aW9uOwotICAgICAgICAKLSAgICAg
ICAgY29uc3QgVFN5bWJvbCAqYnVpbHRJbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmRCdWls
dEluKGZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLCBjb250ZXh0LT5zaGFkZXJWZXJzaW9uKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChidWlsdEluKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5lcnJvcigoeXlsc3BbMF0pLCAiYnVpbHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSBy
ZWRlZmluZWQiLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3ZlcigpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBURnVuY3Rpb24q
IHByZXZEZWMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24qPihjb250ZXh0LT5zeW1ib2xUYWJsZS5m
aW5kKGZ1bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLCBjb250ZXh0LT5zaGFkZXJWZXJzaW9uKSk7
Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIE5vdGU6ICAncHJldkRlYycgY291bGQgYmUgJ2Z1bmN0
aW9uJyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gZnVuY3Rpb24KLSAgICAg
ICAgLy8gYXMgaXQgd291bGQgaGF2ZSBqdXN0IGJlZW4gcHV0IGluIHRoZSBzeW1ib2wgdGFibGUu
ICBPdGhlcndpc2UsIHdlJ3JlIGxvb2tpbmcgdXAKLSAgICAgICAgLy8gYW4gZWFybGllciBvY2N1
cmFuY2UuCi0gICAgICAgIC8vCi0gICAgICAgIGlmIChwcmV2RGVjLT5pc0RlZmluZWQoKSkgewot
ICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFRoZW4gdGhpcyBmdW5jdGlvbiBhbHJlYWR5
IGhhcyBhIGJvZHkuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3Io
KHl5bHNwWzBdKSwgImZ1bmN0aW9uIGFscmVhZHkgaGFzIGEgYm9keSIsIGZ1bmN0aW9uLT5nZXRO
YW1lKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcHJldkRlYy0+c2V0RGVmaW5lZCgpOwotICAgICAgICAvLwotICAgICAgICAv
LyBPdmVybG9hZCB0aGUgdW5pcXVlIElEIG9mIHRoZSBkZWZpbml0aW9uIHRvIGJlIHRoZSBzYW1l
IHVuaXF1ZSBJRCBhcyB0aGUgZGVjbGFyYXRpb24uCi0gICAgICAgIC8vIEV2ZW50dWFsbHkgd2Ug
d2lsbCBwcm9iYWJseSB3YW50IHRvIGhhdmUgb25seSBhIHNpbmdsZSBkZWZpbml0aW9uIGFuZCBq
dXN0IHN3YXAgdGhlCi0gICAgICAgIC8vIGFyZ3VtZW50cyB0byBiZSB0aGUgZGVmaW5pdGlvbidz
IGFyZ3VtZW50cy4KLSAgICAgICAgLy8KLSAgICAgICAgZnVuY3Rpb24tPnNldFVuaXF1ZUlkKHBy
ZXZEZWMtPmdldFVuaXF1ZUlkKCkpOwotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFJhaXNlIGVy
cm9yIG1lc3NhZ2UgaWYgbWFpbiBmdW5jdGlvbiB0YWtlcyBhbnkgcGFyYW1ldGVycyBvciByZXR1
cm4gYW55dGhpbmcgb3RoZXIgdGhhbiB2b2lkCi0gICAgICAgIC8vCi0gICAgICAgIGlmIChmdW5j
dGlvbi0+Z2V0TmFtZSgpID09ICJtYWluIikgewotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uLT5n
ZXRQYXJhbUNvdW50KCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5
bHNwWzBdKSwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLCBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UmV0dXJuVHlw
ZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5lcnJvcigoeXlsc3BbMF0pLCAiIiwgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNp
Y1N0cmluZygpLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFsdWUiKTsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICAvLwotICAgICAgICAvLyBSZW1lbWJlciB0aGUgcmV0dXJuIHR5cGUgZm9yIGxh
dGVyIGNoZWNraW5nIGZvciBSRVRVUk4gc3RhdGVtZW50cy4KLSAgICAgICAgLy8KLSAgICAgICAg
Y29udGV4dC0+Y3VycmVudEZ1bmN0aW9uVHlwZSA9ICYocHJldkRlYy0+Z2V0UmV0dXJuVHlwZSgp
KTsKLSAgICAgICAgY29udGV4dC0+bUZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gZmFsc2U7Ci0KLSAg
ICAgICAgLy8KLSAgICAgICAgLy8gSW5zZXJ0IHBhcmFtZXRlcnMgaW50byB0aGUgc3ltYm9sIHRh
YmxlLgotICAgICAgICAvLyBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBuYW1lLCBpdCdzIG5vdCBh
biBlcnJvciwganVzdCBkb24ndCBpbnNlcnQgaXQKLSAgICAgICAgLy8gKGNvdWxkIGJlIHVzZWQg
Zm9yIHVudXNlZCBhcmdzKS4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gQWxzbywgYWNjdW11bGF0
ZSB0aGUgbGlzdCBvZiBwYXJhbWV0ZXJzIGludG8gdGhlIEhJTCwgc28gbG93ZXIgbGV2ZWwgY29k
ZQotICAgICAgICAvLyBrbm93cyB3aGVyZSB0byBmaW5kIHBhcmFtZXRlcnMuCi0gICAgICAgIC8v
Ci0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIHBhcmFtTm9kZXMgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi0+Z2V0UGFyYW1D
b3VudCgpOyBpKyspIHsKLSAgICAgICAgICAgIGNvbnN0IFRQYXJhbWV0ZXImIHBhcmFtID0gZnVu
Y3Rpb24tPmdldFBhcmFtKGkpOwotICAgICAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0gMCkgewot
ICAgICAgICAgICAgICAgIFRWYXJpYWJsZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFt
Lm5hbWUsICpwYXJhbS50eXBlKTsKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAg
IC8vIEluc2VydCB0aGUgcGFyYW1ldGVycyB3aXRoIG5hbWUgaW4gdGhlIHN5bWJvbCB0YWJsZS4K
LSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIGlmICghIGNvbnRleHQtPnN5bWJv
bFRhYmxlLmRlY2xhcmUodmFyaWFibGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFswXSksICJyZWRlZmluaXRpb24iLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGRlbGV0ZSB2YXJpYWJsZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgcGFyYW1ldGVyIHRvIHRo
ZSBISUwKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBj
b250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1Ob2RlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdl
dE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgKHl5bHNwWzBdKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5eWxzcFsw
XSkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVzID0g
Y29udGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2RlcywgY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsICh5eWxzcFswXSkpLCAo
eXlsc3BbMF0pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5p
bnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlcywgRU9wUGFyYW1ldGVy
cywgKHl5bHNwWzBdKSk7Ci0gICAgICAgICh5eXZzcFswXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0
ZSA9IHBhcmFtTm9kZXM7Ci0gICAgICAgIGNvbnRleHQtPm1Mb29wTmVzdGluZ0xldmVsID0gMDsK
KyAgICAgICAgY29udGV4dC0+cGFyc2VGdW5jdGlvblByb3RvdHlwZSgoeXlsc3BbMF0pLCAoeXl2
c3BbMF0uaW50ZXJtKS5mdW5jdGlvbiwgJih5eXZzcFswXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0
ZSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNzM6CisgIGNhc2UgMjc1OgogCiAg
ICAgewotICAgICAgICAvLz8/IENoZWNrIHRoYXQgYWxsIHBhdGhzIHJldHVybiBhIHZhbHVlIGlm
IHJldHVybiB0eXBlICE9IHZvaWQgPwotICAgICAgICAvLyAgIE1heSBiZSBiZXN0IGRvbmUgYXMg
cG9zdCBwcm9jZXNzIHBoYXNlIG9uIGludGVybWVkaWF0ZSBjb2RlCi0gICAgICAgIGlmIChjb250
ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lkICYmICEg
Y29udGV4dC0+bUZ1bmN0aW9uUmV0dXJuc1ZhbHVlKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT5l
cnJvcigoeXlsc3BbLTJdKSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlOiIsICIi
LCAoeXl2c3BbLTJdLmludGVybSkuZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCh5eXZzcFstMl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtTm9kZSksICh5eWxvYykpOwotICAgICAgICBjb250ZXh0LT5pbnRlcm1lZGlhdGUu
c2V0QWdncmVnYXRlT3BlcmF0b3IoKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSwgRU9wRnVuY3Rp
b24sICh5eWxzcFstMl0pKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0
QXNBZ2dyZWdhdGUoKS0+c2V0TmFtZSgoeXl2c3BbLTJdLmludGVybSkuZnVuY3Rpb24tPmdldE1h
bmdsZWROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkt
PmdldEFzQWdncmVnYXRlKCktPnNldFR5cGUoKHl5dnNwWy0yXS5pbnRlcm0pLmZ1bmN0aW9uLT5n
ZXRSZXR1cm5UeXBlKCkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5zZXRGdW5jdGlvbklkKCh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbi0+
Z2V0VW5pcXVlSWQoKSk7Ci0KLSAgICAgICAgLy8gc3RvcmUgdGhlIHByYWdtYSBpbmZvcm1hdGlv
biBmb3IgZGVidWcgYW5kIG9wdGltaXplIGFuZCBvdGhlciB2ZW5kb3Igc3BlY2lmaWMKLSAgICAg
ICAgLy8gaW5mb3JtYXRpb24uIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIHF1ZXJpZWQgZnJvbSB0
aGUgcGFyc2UgdHJlZQotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0Fn
Z3JlZ2F0ZSgpLT5zZXRPcHRpbWl6ZShjb250ZXh0LT5wcmFnbWEoKS5vcHRpbWl6ZSk7Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldERlYnVn
KGNvbnRleHQtPnByYWdtYSgpLmRlYnVnKTsKLQotICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJs
ZS5wb3AoKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmFk
ZEZ1bmN0aW9uRGVmaW5pdGlvbigqKCh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbiksICh5eXZz
cFstMl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQWdn
cmVnYXRlKSwgKHl5bHNwWy0yXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtNTIzOCw1ICs1
MDY0LDUgQEAKIAogCiBpbnQgZ2xzbGFuZ19wYXJzZShUUGFyc2VDb250ZXh0KiBjb250ZXh0KSB7
Ci0gICAgcmV0dXJuIHl5cGFyc2UoY29udGV4dCwgY29udGV4dC0+c2Nhbm5lcik7CisgICAgcmV0
dXJuIHl5cGFyc2UoY29udGV4dCwgY29udGV4dC0+Z2V0U2Nhbm5lcigpKTsKIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFi
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvZ2xzbGFuZ190YWIuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDcgQEAKIC8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBC
aXNvbiAzLjAuNC4gICovCiAKKy8qIEFwcGxlIE5vdGU6IEZvciB0aGUgYXZvaWRhbmNlIG9mIGRv
dWJ0LCBBcHBsZSBlbGVjdHMgdG8gZGlzdHJpYnV0ZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBCU0QgbGljZW5zZS4gKi8KKwogLyogQmlzb24gaW50ZXJmYWNlIGZvciBZYWNjLWxp
a2UgcGFyc2VycyBpbiBDCiAKICAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OS0xOTkwLCAyMDAw
LTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2lu
dGVybU91dC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ludGVybU91dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQsMTIgKzQsMTggQEAKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0jaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1lZGlhdGUuaCIKKyNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvU3ltYm9sVGFibGUuaCIKIAogbmFtZXNwYWNlCiB7CiAKK3ZvaWQgT3V0cHV0RnVuY3Rp
b24oVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBjaGFyICpzdHIsIFRJbnRlcm1BZ2dyZWdhdGUg
Km5vZGUpCit7CisgICAgY29uc3QgY2hhciAqaW50ZXJuYWwgPSBub2RlLT5nZXROYW1lT2JqKCku
aXNJbnRlcm5hbCgpID8gIiAoaW50ZXJuYWwgZnVuY3Rpb24pIiA6ICIiOworICAgIG91dCA8PCBz
dHIgPDwgaW50ZXJuYWwgPDwgIjogIiA8PCBub2RlLT5nZXROYW1lT2JqKCkuZ2V0U3RyaW5nKCk7
Cit9CisKIC8vCiAvLyBUd28gcHVycG9zZXM6CiAvLyAxLiAgU2hvdyBhbiBleGFtcGxlIG9mIGhv
dyB0byBpdGVyYXRlIHRyZWUuICBGdW5jdGlvbnMgY2FuCkBAIC0yNywxOCArMzMsMjEgQEAKIHsK
ICAgcHVibGljOgogICAgIFRPdXRwdXRUcmF2ZXJzZXIoVEluZm9TaW5rQmFzZSAmaSkKLSAgICAg
ICAgOiBzaW5rKGkpIHsgfQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2Us
IGZhbHNlKSwKKyAgICAgICAgICBzaW5rKGkpCisgICAgeworICAgIH0KICAgICBUSW5mb1NpbmtC
YXNlJiBzaW5rOwogCiAgIHByb3RlY3RlZDoKLSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1T
eW1ib2wgKik7Ci0gICAgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5p
b24gKik7Ci0gICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAq
KTsKLSAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqKTsKLSAg
ICBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICopOwot
ICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKik7
Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICopOwotICAgIGJv
b2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKik7CisgICAgdm9pZCB2
aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRDb25z
dGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGU7CisgICAgYm9v
bCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKikgb3ZlcnJpZGU7CisgICAg
Ym9vbCB2aXNpdFNlbGVjdGlvbihWaXNpdCB2aXNpdCwgVEludGVybVNlbGVjdGlvbiAqKSBvdmVy
cmlkZTsKKyAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVn
YXRlICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJt
TG9vcCAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQnJhbmNoICopIG92ZXJyaWRlOwogfTsKIAogLy8KQEAgLTU2LDI2ICs2NSw2IEBACiAKIH0g
IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKIAotCi1UU3RyaW5nIFRUeXBlOjpnZXRDb21wbGV0ZVN0
cmluZygpIGNvbnN0Ci17Ci0gICAgVFN0cmluZ1N0cmVhbSBzdHJlYW07Ci0KLSAgICBpZiAocXVh
bGlmaWVyICE9IEV2cVRlbXBvcmFyeSAmJiBxdWFsaWZpZXIgIT0gRXZxR2xvYmFsKQotICAgICAg
ICBzdHJlYW0gPDwgZ2V0UXVhbGlmaWVyU3RyaW5nKCkgPDwgIiAiOwotICAgIGlmIChwcmVjaXNp
b24gIT0gRWJwVW5kZWZpbmVkKQotICAgICAgICBzdHJlYW0gPDwgZ2V0UHJlY2lzaW9uU3RyaW5n
KCkgPDwgIiAiOwotICAgIGlmIChhcnJheSkKLSAgICAgICAgc3RyZWFtIDw8ICJhcnJheVsiIDw8
IGdldEFycmF5U2l6ZSgpIDw8ICJdIG9mICI7Ci0gICAgaWYgKGlzTWF0cml4KCkpCi0gICAgICAg
IHN0cmVhbSA8PCBnZXRDb2xzKCkgPDwgIlgiIDw8IGdldFJvd3MoKSA8PCAiIG1hdHJpeCBvZiAi
OwotICAgIGVsc2UgaWYgKGlzVmVjdG9yKCkpCi0gICAgICAgIHN0cmVhbSA8PCBnZXROb21pbmFs
U2l6ZSgpIDw8ICItY29tcG9uZW50IHZlY3RvciBvZiAiOwotCi0gICAgc3RyZWFtIDw8IGdldEJh
c2ljU3RyaW5nKCk7Ci0gICAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKLX0KLQogLy8KIC8vIFRoZSBy
ZXN0IG9mIHRoZSBmaWxlIGFyZSB0aGUgdHJhdmVyc2FsIGZ1bmN0aW9ucy4gIFRoZSBsYXN0IG9u
ZQogLy8gaXMgdGhlIG9uZSB0aGF0IHN0YXJ0cyB0aGUgdHJhdmVyc2FsLgpAQCAtMzkwLDEwICsz
NzksMTAgQEAKICAgICB7CiAgICAgICBjYXNlIEVPcFNlcXVlbmNlOiAgICAgIG91dCA8PCAiU2Vx
dWVuY2VcbiI7IHJldHVybiB0cnVlOwogICAgICAgY2FzZSBFT3BDb21tYTogICAgICAgICBvdXQg
PDwgIkNvbW1hXG4iOyByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb246ICAgICAg
b3V0IDw8ICJGdW5jdGlvbiBEZWZpbml0aW9uOiAiIDw8IG5vZGUtPmdldE5hbWUoKTsgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDogIG91dCA8PCAiRnVuY3Rpb24gQ2FsbDogIiA8
PCBub2RlLT5nZXROYW1lKCk7IGJyZWFrOworICAgICAgY2FzZSBFT3BGdW5jdGlvbjogICAgICBP
dXRwdXRGdW5jdGlvbihvdXQsICJGdW5jdGlvbiBEZWZpbml0aW9uIiwgbm9kZSk7IGJyZWFrOwor
ICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6ICBPdXRwdXRGdW5jdGlvbihvdXQsICJGdW5jdGlv
biBDYWxsIiwgbm9kZSk7IGJyZWFrOwogICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOiAgICBvdXQg
PDwgIkZ1bmN0aW9uIFBhcmFtZXRlcnM6ICI7ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wUHJvdG90eXBlOiAgICAgb3V0IDw8ICJGdW5jdGlvbiBQcm90b3R5cGU6ICIgPDwgbm9k
ZS0+Z2V0TmFtZSgpOyBicmVhazsKKyAgICAgIGNhc2UgRU9wUHJvdG90eXBlOiAgICAgT3V0cHV0
RnVuY3Rpb24ob3V0LCAiRnVuY3Rpb24gUHJvdG90eXBlIiwgbm9kZSk7IGJyZWFrOwogCiAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OiBvdXQgPDwgIkNvbnN0cnVjdCBmbG9hdCI7IGJyZWFr
OwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgdmVjMiI7
ICBicmVhazsKQEAgLTQxMiw3ICs0MDEsMTMgQEAKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZl
YzM6IG91dCA8PCAiQ29uc3RydWN0IHV2ZWMzIjsgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0
cnVjdFVWZWM0OiBvdXQgPDwgIkNvbnN0cnVjdCB1dmVjNCI7IGJyZWFrOwogICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0MiI7ICBicmVhazsKKyAgICAg
IGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0MngzIjsgIGJy
ZWFrOworICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6ICBvdXQgPDwgIkNvbnN0cnVjdCBt
YXQyeDQiOyAgYnJlYWs7CisgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjogIG91dCA8PCAi
Q29uc3RydWN0IG1hdDN4MiI7ICBicmVhazsKICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mzog
IG91dCA8PCAiQ29uc3RydWN0IG1hdDMiOyAgYnJlYWs7CisgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDN4NDogIG91dCA8PCAiQ29uc3RydWN0IG1hdDN4NCI7ICBicmVhazsKKyAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0NHgyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0NHgyIjsgIGJyZWFrOwor
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6ICBvdXQgPDwgIkNvbnN0cnVjdCBtYXQ0eDMi
OyAgYnJlYWs7CiAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6ICBvdXQgPDwgIkNvbnN0cnVj
dCBtYXQ0IjsgIGJyZWFrOwogICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6ICBvdXQgPDwg
IkNvbnN0cnVjdCBzdHJ1Y3R1cmUiOyAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ludGVybWVkaWF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ludGVy
bWVkaWF0ZS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1lZGlhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQAogICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmdyb3dBZ2dyZWdhdGUoCiAgICAg
ICAgIFRJbnRlcm1Ob2RlICpsZWZ0LCBUSW50ZXJtTm9kZSAqcmlnaHQsIGNvbnN0IFRTb3VyY2VM
b2MgJik7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqbWFrZUFnZ3JlZ2F0ZShUSW50ZXJtTm9kZSAq
bm9kZSwgY29uc3QgVFNvdXJjZUxvYyAmKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICplbnN1cmVT
ZXF1ZW5jZShUSW50ZXJtTm9kZSAqbm9kZSk7CiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqc2V0QWdn
cmVnYXRlT3BlcmF0b3IoVEludGVybU5vZGUgKiwgVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9j
ICYpOwogICAgIFRJbnRlcm1Ob2RlICphZGRTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLCBU
SW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxvYyAmKTsKICAgICBUSW50ZXJtVHlw
ZWQgKmFkZFNlbGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsIFRJbnRlcm1UeXBlZCAqdHJ1ZUJs
b2NrLCBUSW50ZXJtVHlwZWQgKmZhbHNlQmxvY2ssCkBAIC00NywyMiArNDgsMjQgQEAKICAgICAg
ICAgVEludGVybVR5cGVkICppbml0LCBUSW50ZXJtQWdncmVnYXRlICpzdGF0ZW1lbnRMaXN0LCBj
b25zdCBUU291cmNlTG9jICZsaW5lKTsKICAgICBUSW50ZXJtQ2FzZSAqYWRkQ2FzZSgKICAgICAg
ICAgVEludGVybVR5cGVkICpjb25kaXRpb24sIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwotICAg
IFRJbnRlcm1UeXBlZCAqYWRkQ29tbWEoCi0gICAgICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwgVElu
dGVybVR5cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmKTsKLSAgICBUSW50ZXJtQ29uc3Rh
bnRVbmlvbiAqYWRkQ29uc3RhbnRVbmlvbigKLSAgICAgICAgVENvbnN0YW50VW5pb24gKmNvbnN0
YW50VW5pb24sIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKLSAg
ICAvLyBUT0RPKHptbyk6IEdldCByaWQgb2YgZGVmYXVsdCB2YWx1ZS4KLSAgICBib29sIHBhcnNl
Q29uc3RUcmVlKGNvbnN0IFRTb3VyY2VMb2MgJiwgVEludGVybU5vZGUgKiwgVENvbnN0YW50VW5p
b24gKiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciwgVFR5cGUsIGJvb2wgc2lu
Z2xlQ29uc3RhbnRQYXJhbSA9IGZhbHNlKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZENvbW1hKFRJ
bnRlcm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
aW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOworICAg
IFRJbnRlcm1Db25zdGFudFVuaW9uICphZGRDb25zdGFudFVuaW9uKGNvbnN0IFRDb25zdGFudFVu
aW9uICpjb25zdGFudFVuaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwogICAgIFRJbnRlcm1Ob2RlICph
ZGRMb29wKFRMb29wVHlwZSwgVEludGVybU5vZGUgKiwgVEludGVybVR5cGVkICosIFRJbnRlcm1U
eXBlZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICosIGNvbnN0IFRT
b3VyY2VMb2MgJik7CiAgICAgVEludGVybUJyYW5jaCAqYWRkQnJhbmNoKFRPcGVyYXRvciwgY29u
c3QgVFNvdXJjZUxvYyAmKTsKICAgICBUSW50ZXJtQnJhbmNoICphZGRCcmFuY2goVE9wZXJhdG9y
LCBUSW50ZXJtVHlwZWQgKiwgY29uc3QgVFNvdXJjZUxvYyAmKTsKICAgICBUSW50ZXJtVHlwZWQg
KmFkZFN3aXp6bGUoVFZlY3RvckZpZWxkcyAmLCBjb25zdCBUU291cmNlTG9jICYpOwotICAgIGJv
b2wgcG9zdFByb2Nlc3MoVEludGVybU5vZGUgKik7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqcG9z
dFByb2Nlc3MoVEludGVybU5vZGUgKnJvb3QpOwogCiAgICAgc3RhdGljIHZvaWQgb3V0cHV0VHJl
ZShUSW50ZXJtTm9kZSAqLCBUSW5mb1NpbmtCYXNlICYpOwogCisgICAgVEludGVybVR5cGVkICpm
b2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUpOworCiAgIHBy
aXZhdGU6CiAgICAgdm9pZCBvcGVyYXRvcj0oVEludGVybWVkaWF0ZSAmKTsgLy8gcHJldmVudCBh
c3NpZ25tZW50cwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9wYXJzZUNvbnN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9wYXJzZUNvbnN0LmNwcAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvcGFyc2VDb25zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjY0ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4
dC5oIgotCi0vLwotLy8gVXNlIHRoaXMgY2xhc3MgdG8gY2FycnkgYWxvbmcgZGF0YSBmcm9tIG5v
ZGUgdG8gbm9kZSBpbgotLy8gdGhlIHRyYXZlcnNhbAotLy8KLWNsYXNzIFRDb25zdFRyYXZlcnNl
ciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCi17Ci0gIHB1YmxpYzoKLSAgICBUQ29uc3RUcmF2
ZXJzZXIoVENvbnN0YW50VW5pb24gKmNVbmlvbiwgYm9vbCBzaW5nbGVDb25zdFBhcmFtLAotICAg
ICAgICAgICAgICAgICAgICBUT3BlcmF0b3IgY29uc3RydWN0VHlwZSwgVEluZm9TaW5rICZzaW5r
LCBUVHlwZSAmdCkKLSAgICAgICAgOiBlcnJvcihmYWxzZSksCi0gICAgICAgICAgbUluZGV4KDAp
LAotICAgICAgICAgIG1VbmlvbkFycmF5KGNVbmlvbiksCi0gICAgICAgICAgbVR5cGUodCksCi0g
ICAgICAgICAgbUNvbnN0cnVjdG9yVHlwZShjb25zdHJ1Y3RUeXBlKSwKLSAgICAgICAgICBtU2lu
Z2xlQ29uc3RhbnRQYXJhbShzaW5nbGVDb25zdFBhcmFtKSwKLSAgICAgICAgICBtSW5mb1Npbmso
c2luayksCi0gICAgICAgICAgbVNpemUoMCksCi0gICAgICAgICAgbUlzRGlhZ29uYWxNYXRyaXhJ
bml0KGZhbHNlKSwKLSAgICAgICAgICBtTWF0cml4Q29scygwKSwKLSAgICAgICAgICBtTWF0cml4
Um93cygwKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGVycm9yOwotCi0gIHByb3RlY3RlZDoK
LSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKik7Ci0gICAgdm9pZCB2aXNpdENv
bnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKik7Ci0gICAgYm9vbCB2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqKTsKLSAgICBib29sIHZpc2l0VW5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqKTsKLSAgICBib29sIHZpc2l0U2VsZWN0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtU2VsZWN0aW9uICopOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlz
aXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKik7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQg
dmlzaXQsIFRJbnRlcm1Mb29wICopOwotICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQs
IFRJbnRlcm1CcmFuY2ggKik7Ci0KLSAgICBzaXplX3QgbUluZGV4OwotICAgIFRDb25zdGFudFVu
aW9uICptVW5pb25BcnJheTsKLSAgICBUVHlwZSBtVHlwZTsKLSAgICBUT3BlcmF0b3IgbUNvbnN0
cnVjdG9yVHlwZTsKLSAgICBib29sIG1TaW5nbGVDb25zdGFudFBhcmFtOwotICAgIFRJbmZvU2lu
ayAmbUluZm9TaW5rOwotICAgIHNpemVfdCBtU2l6ZTsgLy8gc2l6ZSBvZiB0aGUgY29uc3RydWN0
b3IgKCA0IGZvciB2ZWM0KQotICAgIGJvb2wgbUlzRGlhZ29uYWxNYXRyaXhJbml0OwotICAgIGlu
dCBtTWF0cml4Q29sczsgLy8gY29sdW1ucyBvZiB0aGUgbWF0cml4Ci0gICAgaW50IG1NYXRyaXhS
b3dzOyAvLyByb3dzIG9mIHRoZSBtYXRyaXgKLX07Ci0KLS8vCi0vLyBUaGUgcmVzdCBvZiB0aGUg
ZmlsZSBhcmUgdGhlIHRyYXZlcnNhbCBmdW5jdGlvbnMuICBUaGUgbGFzdCBvbmUKLS8vIGlzIHRo
ZSBvbmUgdGhhdCBzdGFydHMgdGhlIHRyYXZlcnNhbC4KLS8vCi0vLyBSZXR1cm4gdHJ1ZSBmcm9t
IGludGVyaW9yIG5vZGVzIHRvIGhhdmUgdGhlIGV4dGVybmFsIHRyYXZlcnNhbAotLy8gY29udGlu
dWUgb24gdG8gY2hpbGRyZW4uICBJZiB5b3UgcHJvY2VzcyBjaGlsZHJlbiB5b3Vyc2VsZiwKLS8v
IHJldHVybiBmYWxzZS4KLS8vCi12b2lkIFRDb25zdFRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVElu
dGVybVN5bWJvbCAqbm9kZSkKLXsKLSAgICBtSW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhJ
bnRlcm5hbEVycm9yLCBub2RlLT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiU3ltYm9sIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKLSAgICByZXR1
cm47Ci19Ci0KLWJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwg
VEludGVybUJpbmFyeSAqbm9kZSkKLXsKLSAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IG5vZGUt
PmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKTsKLQotICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxQ29u
c3QpCi0gICAgewotICAgICAgICBUU3RyaW5nIGJ1ZjsKLSAgICAgICAgYnVmLmFwcGVuZCgiJ2Nv
bnN0cnVjdG9yJyA6IGFzc2lnbmluZyBub24tY29uc3RhbnQgdG8gIik7Ci0gICAgICAgIGJ1Zi5h
cHBlbmQobVR5cGUuZ2V0Q29tcGxldGVTdHJpbmcoKSk7Ci0gICAgICAgIG1JbmZvU2luay5pbmZv
Lm1lc3NhZ2UoRVByZWZpeEVycm9yLCBub2RlLT5nZXRMaW5lKCksIGJ1Zi5jX3N0cigpKTsKLSAg
ICAgICAgZXJyb3IgPSB0cnVlOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
bUluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGlu
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJpbmFyeSBOb2RlIGZvdW5kIGluIGNv
bnN0YW50IGNvbnN0cnVjdG9yIik7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRDb25z
dFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQot
ewotICAgIFRTdHJpbmcgYnVmOwotICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3Np
Z25pbmcgbm9uLWNvbnN0YW50IHRvICIpOwotICAgIGJ1Zi5hcHBlbmQobVR5cGUuZ2V0Q29tcGxl
dGVTdHJpbmcoKSk7Ci0gICAgbUluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4RXJyb3IsIG5v
ZGUtPmdldExpbmUoKSwgYnVmLmNfc3RyKCkpOwotICAgIGVycm9yID0gdHJ1ZTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUtPmlzQ29u
c3RydWN0b3IoKSAmJiBub2RlLT5nZXRPcCgpICE9IEVPcENvbW1hKQotICAgIHsKLSAgICAgICAg
VFN0cmluZyBidWY7Ci0gICAgICAgIGJ1Zi5hcHBlbmQoIidjb25zdHJ1Y3RvcicgOiBhc3NpZ25p
bmcgbm9uLWNvbnN0YW50IHRvICIpOwotICAgICAgICBidWYuYXBwZW5kKG1UeXBlLmdldENvbXBs
ZXRlU3RyaW5nKCkpOwotICAgICAgICBtSW5mb1NpbmsuaW5mby5tZXNzYWdlKEVQcmVmaXhFcnJv
ciwgbm9kZS0+Z2V0TGluZSgpLCBidWYuY19zdHIoKSk7Ci0gICAgICAgIGVycm9yID0gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChub2RlLT5nZXRTZXF1ZW5j
ZSgpLT5zaXplKCkgPT0gMCkKLSAgICB7Ci0gICAgICAgIGVycm9yID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgZmxhZyA9IG5vZGUtPmdldFNlcXVlbmNl
KCktPnNpemUoKSA9PSAxICYmCi0gICAgICAgICAgICAgICAgKCpub2RlLT5nZXRTZXF1ZW5jZSgp
KVswXS0+Z2V0QXNUeXBlZCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICBpZiAoZmxhZykK
LSAgICB7Ci0gICAgICAgIG1TaW5nbGVDb25zdGFudFBhcmFtID0gdHJ1ZTsKLSAgICAgICAgbUNv
bnN0cnVjdG9yVHlwZSA9IG5vZGUtPmdldE9wKCk7Ci0gICAgICAgIG1TaXplID0gbm9kZS0+Z2V0
VHlwZSgpLmdldE9iamVjdFNpemUoKTsKLQotICAgICAgICBpZiAobm9kZS0+Z2V0VHlwZSgpLmlz
TWF0cml4KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Jc0RpYWdvbmFsTWF0cml4SW5pdCA9
IHRydWU7Ci0gICAgICAgICAgICBtTWF0cml4Q29scyA9IG5vZGUtPmdldFR5cGUoKS5nZXRDb2xz
KCk7Ci0gICAgICAgICAgICBtTWF0cml4Um93cyA9IG5vZGUtPmdldFR5cGUoKS5nZXRSb3dzKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Ig
cCA9IG5vZGUtPmdldFNlcXVlbmNlKCktPmJlZ2luKCk7Ci0gICAgICAgICBwICE9IG5vZGUtPmdl
dFNlcXVlbmNlKCktPmVuZCgpOyBwKyspCi0gICAgewotICAgICAgICBpZiAobm9kZS0+Z2V0T3Ao
KSA9PSBFT3BDb21tYSkKLSAgICAgICAgICAgIG1JbmRleCA9IDA7Ci0gICAgICAgICgqcCktPnRy
YXZlcnNlKHRoaXMpOwotICAgIH0KLSAgICBpZiAoZmxhZykKLSAgICB7Ci0gICAgICAgIG1TaW5n
bGVDb25zdGFudFBhcmFtID0gZmFsc2U7Ci0gICAgICAgIG1Db25zdHJ1Y3RvclR5cGUgPSBFT3BO
dWxsOwotICAgICAgICBtU2l6ZSA9IDA7Ci0gICAgICAgIG1Jc0RpYWdvbmFsTWF0cml4SW5pdCA9
IGZhbHNlOwotICAgICAgICBtTWF0cml4Q29scyA9IDA7Ci0gICAgICAgIG1NYXRyaXhSb3dzID0g
MDsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRDb25zdFRyYXZlcnNlcjo6
dmlzaXRTZWxlY3Rpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1TZWxlY3Rpb24gKm5vZGUpCi17Ci0g
ICAgbUluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0
TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlbGVjdGlvbiBOb2RlIGZvdW5k
IGluIGNvbnN0YW50IGNvbnN0cnVjdG9yIik7Ci0gICAgZXJyb3IgPSB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotdm9pZCBUQ29uc3RUcmF2ZXJzZXI6OnZpc2l0Q29uc3RhbnRVbmlvbihU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUtPmdldFVuaW9uQXJy
YXlQb2ludGVyKCkpCi0gICAgewotICAgICAgICAvLyBUaGUgY29uc3RhbnQgd2FzIG5vdCBpbml0
aWFsaXplZCwgdGhpcyBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9nZ2VkCi0gICAgICAgIEFT
U0VSVChtSW5mb1NpbmsuaW5mby5zaXplKCkgIT0gMCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBUQ29uc3RhbnRVbmlvbiAqbGVmdFVuaW9uQXJyYXkgPSBtVW5pb25BcnJheTsKLSAg
ICBzaXplX3QgaW5zdGFuY2VTaXplID0gbVR5cGUuZ2V0T2JqZWN0U2l6ZSgpOwotICAgIFRCYXNp
Y1R5cGUgYmFzaWNUeXBlID0gbVR5cGUuZ2V0QmFzaWNUeXBlKCk7Ci0KLSAgICBpZiAobUluZGV4
ID49IGluc3RhbmNlU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtU2luZ2xlQ29u
c3RhbnRQYXJhbSkKLSAgICB7Ci0gICAgICAgIHNpemVfdCBvYmplY3RTaXplID0gbm9kZS0+Z2V0
VHlwZSgpLmdldE9iamVjdFNpemUoKTsKLSAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKnJp
Z2h0VW5pb25BcnJheSA9IG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGk9MDsgaSA8IG9iamVjdFNpemU7IGkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1JbmRleCA+PSBpbnN0YW5jZVNpemUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbGVmdFVuaW9uQXJyYXlbbUluZGV4XS5jYXN0KGJhc2ljVHlwZSwgcmlnaHRV
bmlvbkFycmF5W2ldKTsKLSAgICAgICAgICAgIG1JbmRleCsrOwotICAgICAgICB9Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSBtSW5kZXggKyBtU2l6
ZTsKLSAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKnJpZ2h0VW5pb25BcnJheSA9IG5vZGUt
PmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgICAgIGlmICghbUlzRGlhZ29uYWxNYXRyaXhJ
bml0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgY291bnQgPSAwOwotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IG1JbmRleDsgaSA8IHRvdGFsU2l6ZTsgaSsrKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmIChpID49IGluc3RhbmNlU2l6ZSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5W2ldLmNhc3QoYmFz
aWNUeXBlLCByaWdodFVuaW9uQXJyYXlbY291bnRdKTsKLSAgICAgICAgICAgICAgICBtSW5kZXgr
KzsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSA+
IDEpCi0gICAgICAgICAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmb3IgbWF0cml4IGRp
YWdvbmFsIGNvbnN0cnVjdG9ycyBmcm9tIGEgc2luZ2xlIHNjYWxhcgotICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDAsIGNvbCA9IDA7IGNvbCA8IG1NYXRyaXhDb2xzOyBjb2wrKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtTWF0cml4Um93
czsgcm93KyssIGkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChjb2wgPT0gcm93KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBsZWZ0VW5pb25BcnJheVtpXS5jYXN0KGJhc2ljVHlwZSwgcmlnaHRVbmlvbkFycmF5WzBd
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVbmlvbkFycmF5
W2ldLnNldEZDb25zdCgwLjBmKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBtSW5kZXgrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgVENvbnN0VHJhdmVyc2VyOjp2aXNpdExvb3AoVmlzaXQg
dmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQotewotICAgIG1JbmZvU2luay5pbmZvLm1lc3NhZ2Uo
RVByZWZpeEludGVybmFsRXJyb3IsIG5vZGUtPmdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJMb29wIE5vZGUgZm91bmQgaW4gY29uc3RhbnQgY29uc3RydWN0b3IiKTsKLSAg
ICBlcnJvciA9IHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFRDb25zdFRyYXZl
cnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpCi17Ci0g
ICAgbUluZm9TaW5rLmluZm8ubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0
TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJyYW5jaCBOb2RlIGZvdW5kIGlu
IGNvbnN0YW50IGNvbnN0cnVjdG9yIik7Ci0gICAgZXJyb3IgPSB0cnVlOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotLy8KLS8vIFRoaXMgZnVuY3Rpb24gaXMgdGhlIG9uZSB0byBjYWxsIGV4dGVy
bmFsbHkgdG8gc3RhcnQgdGhlIHRyYXZlcnNhbC4KLS8vIEluZGl2aWR1YWwgZnVuY3Rpb25zIGNh
biBiZSBpbml0aWFsaXplZCB0byAwIHRvIHNraXAgcHJvY2Vzc2luZyBvZiB0aGF0Ci0vLyB0eXBl
IG9mIG5vZGUuICBJdCdzIGNoaWxkcmVuIHdpbGwgc3RpbGwgYmUgcHJvY2Vzc2VkLgotLy8KLWJv
b2wgVEludGVybWVkaWF0ZTo6cGFyc2VDb25zdFRyZWUoCi0gICAgY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgVEludGVybU5vZGUgKnJvb3QsIFRDb25zdGFudFVuaW9uICp1bmlvbkFycmF5LAotICAg
IFRPcGVyYXRvciBjb25zdHJ1Y3RvclR5cGUsIFRUeXBlIHQsIGJvb2wgc2luZ2xlQ29uc3RhbnRQ
YXJhbSkKLXsKLSAgICBpZiAocm9vdCA9PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBUQ29uc3RUcmF2ZXJzZXIgaXQodW5pb25BcnJheSwgc2luZ2xlQ29uc3RhbnRQYXJhbSwgY29u
c3RydWN0b3JUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICBtSW5mb1NpbmssIHQpOwotCi0g
ICAgcm9vdC0+dHJhdmVyc2UoJml0KTsKLSAgICBpZiAoaXQuZXJyb3IpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0
RnJhZ21lbnRTaGFkZXJUaW1pbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3RpbWluZy9SZXN0cmljdEZyYWdtZW50U2hh
ZGVyVGltaW5nLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJhZ21lbnRTaGFkZXJU
aW1pbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMSArNTQsOCBAQAogCiAgICAgLy8gU3Rh
cnRpbmcgZnJvbSBlYWNoIHNhbXBsZXIsIHRyYXZlcnNlIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGFu
ZCBnZW5lcmF0ZSBhbiBlcnJvciBlYWNoIHRpbWUgd2UKICAgICAvLyBoaXQgYSBub2RlIHdoZXJl
IHNhbXBsZXIgZGVwZW5kZW50IHZhbHVlcyBhcmUgbm90IGFsbG93ZWQuCi0gICAgZm9yIChUR3Jh
cGhTeW1ib2xWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBncmFwaC5iZWdpblNhbXBsZXJT
eW1ib2xzKCk7Ci0gICAgICAgICBpdGVyICE9IGdyYXBoLmVuZFNhbXBsZXJTeW1ib2xzKCk7Ci0g
ICAgICAgICArK2l0ZXIpCisgICAgZm9yIChhdXRvIHNhbXBsZXJTeW1ib2wgOiBncmFwaC5zYW1w
bGVyU3ltYm9scygpKQogICAgIHsKLSAgICAgICAgVEdyYXBoU3ltYm9sKiBzYW1wbGVyU3ltYm9s
ID0gKml0ZXI7CiAgICAgICAgIGNsZWFyVmlzaXRlZCgpOwogICAgICAgICBzYW1wbGVyU3ltYm9s
LT50cmF2ZXJzZSh0aGlzKTsKICAgICB9CkBAIC02NiwxMSArNjMsOCBAQAogCiB2b2lkIFJlc3Ry
aWN0RnJhZ21lbnRTaGFkZXJUaW1pbmc6OnZhbGlkYXRlVXNlckRlZmluZWRGdW5jdGlvbkNhbGxV
c2FnZShjb25zdCBURGVwZW5kZW5jeUdyYXBoJiBncmFwaCkKIHsKLSAgICBmb3IgKFRGdW5jdGlv
bkNhbGxWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBncmFwaC5iZWdpblVzZXJEZWZpbmVk
RnVuY3Rpb25DYWxscygpOwotICAgICAgICAgaXRlciAhPSBncmFwaC5lbmRVc2VyRGVmaW5lZEZ1
bmN0aW9uQ2FsbHMoKTsKLSAgICAgICAgICsraXRlcikKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGZ1
bmN0aW9uQ2FsbCA6IGdyYXBoLnVzZXJEZWZpbmVkRnVuY3Rpb25DYWxscygpKQogICAgIHsKLSAg
ICAgICAgVEdyYXBoRnVuY3Rpb25DYWxsKiBmdW5jdGlvbkNhbGwgPSAqaXRlcjsKICAgICAgICAg
YmVnaW5FcnJvcihmdW5jdGlvbkNhbGwtPmdldEludGVybUZ1bmN0aW9uQ2FsbCgpKTsKICAgICAg
ICAgbVNpbmsgPDwgIkEgY2FsbCB0byBhIHVzZXIgZGVmaW5lZCBmdW5jdGlvbiBpcyBub3QgcGVy
bWl0dGVkLlxuIjsKICAgICB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci90aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuaAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5n
L1Jlc3RyaWN0VmVydGV4U2hhZGVyVGltaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIy
LDggQEAKICAgICB2b2lkIGVuZm9yY2VSZXN0cmljdGlvbnMoVEludGVybU5vZGUqIHJvb3QpIHsg
cm9vdC0+dHJhdmVyc2UodGhpcyk7IH0KICAgICBpbnQgbnVtRXJyb3JzKCkgeyByZXR1cm4gbU51
bUVycm9yczsgfQogCi0gICAgdmlydHVhbCB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wq
KTsKKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7CisKIHBy
aXZhdGU6CiAgICAgVEluZm9TaW5rQmFzZSYgbVNpbms7CiAgICAgaW50IG1OdW1FcnJvcnM7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGls
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci91dGlsLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRh
YmxlLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCi1ib29sIGF0b2ZfY2xhbXAo
Y29uc3QgY2hhciAqc3RyLCBmbG9hdCAqdmFsdWUpCitib29sIHN0cnRvZl9jbGFtcChjb25zdCBz
dGQ6OnN0cmluZyAmc3RyLCBmbG9hdCAqdmFsdWUpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gcHA6
Om51bWVyaWNfbGV4X2Zsb2F0KHN0ciwgdmFsdWUpOwogICAgIGlmICghc3VjY2VzcykKQEAgLTIw
LDExICsyMCwxMSBAQAogICAgIHJldHVybiBzdWNjZXNzOwogfQogCi1ib29sIGF0b2lfY2xhbXAo
Y29uc3QgY2hhciAqc3RyLCBpbnQgKnZhbHVlKQorYm9vbCBhdG9pX2NsYW1wKGNvbnN0IGNoYXIg
KnN0ciwgdW5zaWduZWQgaW50ICp2YWx1ZSkKIHsKICAgICBib29sIHN1Y2Nlc3MgPSBwcDo6bnVt
ZXJpY19sZXhfaW50KHN0ciwgdmFsdWUpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgKnZh
bHVlID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgICAgICAgKnZhbHVlID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKTsKICAgICByZXR1cm4gc3Vj
Y2VzczsKIH0KIApAQCAtMjE5LDcgKzIxOSw2IEBACiAgICAgc3dpdGNoIChxdWFsaWZpZXIpCiAg
ICAgewogICAgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgotICAgICAgY2FzZSBFdnFJbnZhcmlhbnRW
YXJ5aW5nT3V0OgogICAgICAgY2FzZSBFdnFTbW9vdGhPdXQ6CiAgICAgICBjYXNlIEV2cUZsYXRP
dXQ6CiAgICAgICBjYXNlIEV2cUNlbnRyb2lkT3V0OgpAQCAtMjM3LDcgKzIzNiw2IEBACiAgICAg
c3dpdGNoIChxdWFsaWZpZXIpCiAgICAgewogICAgICAgY2FzZSBFdnFWYXJ5aW5nSW46Ci0gICAg
ICBjYXNlIEV2cUludmFyaWFudFZhcnlpbmdJbjoKICAgICAgIGNhc2UgRXZxU21vb3RoSW46CiAg
ICAgICBjYXNlIEV2cUZsYXRJbjoKICAgICAgIGNhc2UgRXZxQ2VudHJvaWRJbjoKQEAgLTI2OSw4
ICsyNjcsNiBAQAogICAgICAgY2FzZSBFdnFGcmFnbWVudEluOgogICAgICAgY2FzZSBFdnFWYXJ5
aW5nSW46CiAgICAgICBjYXNlIEV2cVZhcnlpbmdPdXQ6Ci0gICAgICBjYXNlIEV2cUludmFyaWFu
dFZhcnlpbmdJbjoKLSAgICAgIGNhc2UgRXZxSW52YXJpYW50VmFyeWluZ091dDoKICAgICAgICAg
cmV0dXJuIElOVEVSUE9MQVRJT05fU01PT1RIOwogCiAgICAgICBjYXNlIEV2cUNlbnRyb2lkSW46
CkBAIC0zMDEsMTMgKzI5NywxMyBAQAogICAgIEFTU0VSVCh2YXJpYWJsZSk7CiAgICAgc3dpdGNo
ICh0eXBlLmdldFF1YWxpZmllcigpKQogICAgIHsKLSAgICAgIGNhc2UgRXZxSW52YXJpYW50VmFy
eWluZ0luOgotICAgICAgY2FzZSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0OgotICAgICAgICB2YXJp
YWJsZS0+aXNJbnZhcmlhbnQgPSB0cnVlOwotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRXZx
VmFyeWluZ0luOgogICAgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgotICAgICAgICBpZiAobVN5bWJv
bFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChzdGQ6OnN0cmluZyhuYW1lLmNfc3RyKCkpKSkKKyAg
ICAgIGNhc2UgRXZxVmVydGV4T3V0OgorICAgICAgY2FzZSBFdnFTbW9vdGhPdXQ6CisgICAgICBj
YXNlIEV2cUZsYXRPdXQ6CisgICAgICBjYXNlIEV2cUNlbnRyb2lkT3V0OgorICAgICAgICBpZiAo
bVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChzdGQ6OnN0cmluZyhuYW1lLmNfc3RyKCkp
KSB8fCB0eXBlLmlzSW52YXJpYW50KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHZhcmlhYmxl
LT5pc0ludmFyaWFudCA9IHRydWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL3V0aWwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQsMTUgKzE0LDE1IEBACiAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgiCiAKLS8vIGF0b2ZfY2xhbXAgaXMgbGlr
ZSBhdG9mIGJ1dAorLy8gc3RydG9mX2NsYW1wIGlzIGxpa2Ugc3RydG9mIGJ1dAogLy8gICAxLiBp
dCBmb3JjZXMgQyBsb2NhbGUsIGkuZS4gZm9yY2luZyAnLicgYXMgZGVjaW1hbCBwb2ludC4KIC8v
ICAgMi4gaXQgY2xhbXBzIHRoZSB2YWx1ZSB0byAtRkxUX01BWCBvciBGTFRfTUFYIGlmIG92ZXJm
bG93IGhhcHBlbnMuCiAvLyBSZXR1cm4gZmFsc2UgaWYgb3ZlcmZsb3cgaGFwcGVucy4KLWV4dGVy
biBib29sIGF0b2ZfY2xhbXAoY29uc3QgY2hhciAqc3RyLCBmbG9hdCAqdmFsdWUpOworYm9vbCBz
dHJ0b2ZfY2xhbXAoY29uc3Qgc3RkOjpzdHJpbmcgJnN0ciwgZmxvYXQgKnZhbHVlKTsKIAotLy8g
SWYgb3ZlcmZsb3cgaGFwcGVucywgY2xhbXAgdGhlIHZhbHVlIHRvIElOVF9NSU4gb3IgSU5UX01B
WC4KKy8vIElmIG92ZXJmbG93IGhhcHBlbnMsIGNsYW1wIHRoZSB2YWx1ZSB0byBVSU5UX01JTiBv
ciBVSU5UX01BWC4KIC8vIFJldHVybiBmYWxzZSBpZiBvdmVyZmxvdyBoYXBwZW5zLgotZXh0ZXJu
IGJvb2wgYXRvaV9jbGFtcChjb25zdCBjaGFyICpzdHIsIGludCAqdmFsdWUpOworYm9vbCBhdG9p
X2NsYW1wKGNvbnN0IGNoYXIgKnN0ciwgdW5zaWduZWQgaW50ICp2YWx1ZSk7CiAKIGNsYXNzIFRT
eW1ib2xUYWJsZTsKIApAQCAtNDEsNiArNDEsNyBAQAogewogICBwdWJsaWM6CiAgICAgR2V0VmFy
aWFibGVUcmF2ZXJzZXIoY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSk7CisgICAgdmly
dHVhbCB+R2V0VmFyaWFibGVUcmF2ZXJzZXIoKSB7fQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFZhclQ+CiAgICAgdm9pZCB0cmF2ZXJzZShjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmlu
ZyAmbmFtZSwgc3RkOjp2ZWN0b3I8VmFyVD4gKm91dHB1dCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIuZ3lwaQkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTE1
LDggKzE1LDkgQEAKICAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oJywKICAg
ICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgnLAogICAgICAgICAgICAg
Jy4uL2luY2x1ZGUvR0xFUzMvZ2wzLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzMv
Z2wzZXh0LmgnLAogICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzMvZ2wzcGxhdGZvcm0uaCcs
CisgICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMy9nbDMxLmgnLAorICAgICAgICAgICAgJy4u
L2luY2x1ZGUvR0xFUzMvZ2wzMi5oJywKICAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMU0xBTkcv
U2hhZGVyTGFuZy5oJywKICAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFy
cy5oJywKICAgICAgICAgICAgICcuLi9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oJywKQEAgLTI0
LDggKzI1LDggQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5o
JywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvQ2FjaGUuY3BwJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L0NhY2hlLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAn
LAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5oJywKICAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL0NvZGVHZW4uY3BwJywKQEAgLTMzLDYgKzM0LDggQEAK
ICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcCcsCiAgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oJywKICAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0NvbnN0YW50VW5pb24uaCcsCisgICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5jcHAnLAorICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaCcsCiAgICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5jcHAnLAogICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9EaXJlY3RpdmVIYW5kbGVyLmNwcCcsCkBAIC02NywxMiArNzAsNiBAQAogICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvTm9kZVNlYXJjaC5oJywKICAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcCcsCiAgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL091dHB1dEVTU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091
dHB1dEVTU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNM
LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmgnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmgnLAogICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcCcsCiAgICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaCcsCiAgICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuY3BwJywKQEAgLTgwLDEwICs3NywxNCBAQAogICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJhZ21hLmgnLAogICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAnLAogICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllckFsaXZlLmNwcCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJBbGl2ZS5oJywKKyAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCcsCisgICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5oJywK
ICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5j
cHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5h
bWVzLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmNwcCcs
CisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuaCcsCisgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAnLAorICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuaCcsCiAgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9SZW5hbWVGdW5jdGlvbi5oJywKICAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAnLAog
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3Ry
dWN0b3JBcmdzLmgnLApAQCAtOTEsMTYgKzkyLDE2IEBACiAgICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNs
YXRvci9TeW1ib2xUYWJsZS5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U3ltYm9sVGFibGUuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yRVNTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckVTU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xT
TC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wu
aCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAnLAogICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaCcsCiAgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwJywKICAgICAgICAgICAgICdj
b21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5oJywKKyAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwJywKKyAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIu
aCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25z
LmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRp
b25zLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJh
bWV0ZXJzLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQ
YXJhbWV0ZXJzLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0
ZU91dHB1dHMuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRl
T3V0cHV0cy5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dp
dGNoLmNwcCcsCkBAIC0xMDksOCArMTEwLDYgQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL1ZhcmlhYmxlSW5mby5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L1ZhcmlhYmxlUGFja2VyLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9W
YXJpYWJsZVBhY2tlci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZlcnNp
b25HTFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xT
TC5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcCcs
CiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5oJywKICAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2RlcGdyYXBoL0RlcGVuZGVuY3lHcmFwaC5jcHAn
LApAQCAtMTI3LDkgKzEyNiw3IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nX3RhYi5jcHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFu
Z190YWIuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2ludGVybWVkaWF0ZS5oJywKICAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1pdHMuaCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9wYXJzZUNvbnN0LmNwcCcsCiAgICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci90aW1pbmcvUmVzdHJpY3RGcmFnbWVudFNoYWRlclRpbWluZy5j
cHAnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvdGltaW5nL1Jlc3RyaWN0RnJh
Z21lbnRTaGFkZXJUaW1pbmcuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci90
aW1pbmcvUmVzdHJpY3RWZXJ0ZXhTaGFkZXJUaW1pbmcuY3BwJywKQEAgLTEzOSw2ICsxMzYsMjgg
QEAKICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIu
Y3BwJywKICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1w
ZXIuaCcsCiAgICAgICAgIF0sCisgICAgICAgICdhbmdsZV90cmFuc2xhdG9yX2xpYl9lc3NsX3Nv
dXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRw
dXRFU1NMLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NM
LmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuY3Bw
JywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgnLAor
ICAgICAgICBdLAorICAgICAgICAnYW5nbGVfdHJhbnNsYXRvcl9saWJfZ2xzbF9zb3VyY2VzJzoK
KyAgICAgICAgWworICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3JHTFNMLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9C
dWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9FeHRlbnNpb25HTFNMLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNs
YXRvci9FeHRlbnNpb25HTFNMLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
T3V0cHV0R0xTTC5jcHAnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0
R0xTTC5oJywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNl
LmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5o
JywKKyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmNwcCcs
CisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oJywKKyAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmNwcCcsCisgICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oJywKKyAgICAgICAgXSwKICAg
ICAgICAgJ2FuZ2xlX3RyYW5zbGF0b3JfbGliX2hsc2xfc291cmNlcyc6CiAgICAgICAgIFsKICAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFt
ZXRlci5jcHAnLApAQCAtMTUxLDYgKzE3MCw4IEBACiAgICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuaCcsCiAgICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9PdXRwdXRITFNMLmgnLAorICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmVtb3ZlRHluYW1pY0luZGV4aW5nLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5jcHAnLAogICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guaCcsCiAgICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5jcHAnLApAQCAtMTU5LDE0
ICsxODAsMTQgQEAKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJy
YXlJbml0aWFsaXphdGlvbi5oJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Nl
cGFyYXRlRGVjbGFyYXRpb25zLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL1NpbXBsaWZ5QXJyYXlBc3NpZ25tZW50LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9TaW1wbGlmeUFycmF5QXNzaWdubWVudC5oJywKKyAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwJywK
KyAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1
cm5pbmdBcnJheXMuaCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1
cmVITFNMLmNwcCcsCiAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVI
TFNMLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wu
Y3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmgn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0LmNw
cCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXQu
aCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRU
b0lmLmNwcCcsCisgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENp
cmN1aXRUb0lmLmgnLAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhM
U0wuY3BwJywKICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmgn
LAogICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmNwcCcsCkBAIC0y
MTIsMTcgKzIzMyw2IEBACiAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCiAg
ICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywg
XSwKICAgICAgICAgICAgICdzb3VyY2VzJzogWyAnPEAoYW5nbGVfcHJlcHJvY2Vzc29yX3NvdXJj
ZXMpJywgXSwKLSAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICdtc3ZzX2VuYWJsZV93aW5ydCcgOiAnMScsCi0gICAgICAgICAg
ICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhv
bmUnIDogJzEnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwKICAgICAgICAg
fSwKICAgICAgICAgewogICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ3RyYW5zbGF0b3JfbGli
JywKQEAgLTI1MywxMyArMjYzLDQxIEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgJ2Nv
bmRpdGlvbnMnOgogICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRf
d2lucnQ9PTEnLAorICAgICAgICAgICAgICAgIFsnYW5nbGVfZW5hYmxlX2Vzc2w9PTEnLAogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ21zdnNfZW5hYmxlX3dpbnJ0JyA6
ICcxJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAg
ICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0VTU0wnLAorICAgICAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9z
ZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICdkZWZpbmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0VTU0wnLAorICAgICAgICAgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMn
OgorICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnPEAoYW5n
bGVfdHJhbnNsYXRvcl9saWJfZXNzbF9zb3VyY2VzKScsCisgICAgICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5w
aG9uZT09MScsCisgICAgICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfZ2xzbD09MScsCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUn
IDogJzEnLAorICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAg
ICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfR0xTTCcsCisgICAg
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50
X3NldHRpbmdzJzoKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RlZmluZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfR0xTTCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAnc291cmNl
cyc6CisgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICc8QChh
bmdsZV90cmFuc2xhdG9yX2xpYl9nbHNsX3NvdXJjZXMpJywKKyAgICAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2VuYWJsZV9o
bHNsPT0xJywKICAgICAgICAgICAgICAgICB7CkBAIC0zMDEsMTcgKzMzOSw2IEBACiAgICAgICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAnLAogICAgICAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwJwogICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICdtc3ZzX2VuYWJsZV93aW5ydCcgOiAnMScsCi0gICAgICAgICAgICAgICAg
fV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUnIDog
JzEnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwKICAgICAgICAgfSwKIAog
ICAgICAgICB7CkBAIC0zNDAsMTcgKzM2Nyw2IEBACiAgICAgICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAnLAogICAgICAgICAgICAgICAgICdjb21waWxlci90
cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwJwogICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdj
b25kaXRpb25zJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxk
X3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdtc3Zz
X2VuYWJsZV93aW5ydCcgOiAnMScsCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAg
ICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUnIDogJzEnLAotICAgICAgICAgICAg
ICAgIH1dLAotICAgICAgICAgICAgXSwKICAgICAgICAgfSwKICAgICBdLAogfQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvcHlfY29tcGlsZXJfZGxsLmJhdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29weV9jb21waWxlcl9kbGwuYmF0CShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29weV9jb21w
aWxlcl9kbGwuYmF0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAotQGVjaG8gb2ZmCi1z
ZXQgX2FyY2g9JTEKLXNldCBfYXJjaD0lX2FyY2g6V2luMzI9eDg2JQotY29weSAlMiJcUmVkaXN0
XEQzRFwiJV9hcmNoJSJcZDNkY29tcGlsZXJfNDcuZGxsIiAlMyA+IE5VTAotOjogVGhpcyBpcyBl
cXVpdmFsZW50IHRvIGB0b3VjaCcsIHNlZToKLTo6IGh0dHBzOi8vdGVjaG5ldC5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvYmI0OTA4ODYuYXNweAotOjogVGhpcyBhdm9pZHMgcmVydW5uaW5n
IGJlY2F1c2UgdGhpcyBiYXRjaCBmaWxlIGlzIGFsc28gY29waWVkIHRvIHRoZSBnZW4gZGlyLAot
Ojogc28gaXQncyB0aW1lc3RhbXAgd291bGQgb3RoZXJ3aXNlIGJlIG5ld2VyIHRoYW4gdGhlIGRs
bC4KLWNvcHkgL2IgJTNcZDNkY29tcGlsZXJfNDcuZGxsKywsICUzXGQzZGNvbXBpbGVyXzQ3LmRs
bCA+IE5VTAorQGVjaG8gb2ZmDQorc2V0IF9hcmNoPSUxDQorc2V0IF9hcmNoPSVfYXJjaDpXaW4z
Mj14ODYlDQorY29weSAlMiJcUmVkaXN0XEQzRFwiJV9hcmNoJSJcZDNkY29tcGlsZXJfNDcuZGxs
IiAlMyA+IE5VTA0KKzo6IFRoaXMgaXMgZXF1aXZhbGVudCB0byBgdG91Y2gnLCBzZWU6DQorOjog
aHR0cHM6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9iYjQ5MDg4Ni5hc3B4
DQorOjogVGhpcyBhdm9pZHMgcmVydW5uaW5nIGJlY2F1c2UgdGhpcyBiYXRjaCBmaWxlIGlzIGFs
c28gY29waWVkIHRvIHRoZSBnZW4gZGlyLA0KKzo6IHNvIGl0J3MgdGltZXN0YW1wIHdvdWxkIG90
aGVyd2lzZSBiZSBuZXdlciB0aGFuIHRoZSBkbGwuDQorY29weSAvYiAlM1xkM2Rjb21waWxlcl80
Ny5kbGwrLCwgJTNcZDNkY29tcGlsZXJfNDcuZGxsID4gTlVMDQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5jcHAJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9B
dHRyaWJ1dGVNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMywzMyArMTMsMjcgQEAKIHsKIH0K
IAotQXR0cmlidXRlTWFwOjpBdHRyaWJ1dGVNYXAoY29uc3QgRUdMaW50ICphdHRyaWJ1dGVzKQor
dm9pZCBBdHRyaWJ1dGVNYXA6Omluc2VydChFR0xBdHRyaWIga2V5LCBFR0xBdHRyaWIgdmFsdWUp
CiB7Ci0gICAgaWYgKGF0dHJpYnV0ZXMpCi0gICAgewotICAgICAgICBmb3IgKGNvbnN0IEVHTGlu
dCAqY3VyQXR0cmliID0gYXR0cmlidXRlczsgY3VyQXR0cmliWzBdICE9IEVHTF9OT05FOyBjdXJB
dHRyaWIgKz0gMikKLSAgICAgICAgewotICAgICAgICAgICAgaW5zZXJ0KGN1ckF0dHJpYlswXSwg
Y3VyQXR0cmliWzFdKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBBdHRyaWJ1dGVNYXA6
Omluc2VydChFR0xpbnQga2V5LCBFR0xpbnQgdmFsdWUpCi17CiAgICAgbUF0dHJpYnV0ZXNba2V5
XSA9IHZhbHVlOwogfQogCi1ib29sIEF0dHJpYnV0ZU1hcDo6Y29udGFpbnMoRUdMaW50IGtleSkg
Y29uc3QKK2Jvb2wgQXR0cmlidXRlTWFwOjpjb250YWlucyhFR0xBdHRyaWIga2V5KSBjb25zdAog
ewogICAgIHJldHVybiAobUF0dHJpYnV0ZXMuZmluZChrZXkpICE9IG1BdHRyaWJ1dGVzLmVuZCgp
KTsKIH0KIAotRUdMaW50IEF0dHJpYnV0ZU1hcDo6Z2V0KEVHTGludCBrZXksIEVHTGludCBkZWZh
dWx0VmFsdWUpIGNvbnN0CitFR0xBdHRyaWIgQXR0cmlidXRlTWFwOjpnZXQoRUdMQXR0cmliIGtl
eSwgRUdMQXR0cmliIGRlZmF1bHRWYWx1ZSkgY29uc3QKIHsKLSAgICBzdGQ6Om1hcDxFR0xpbnQs
IEVHTGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtQXR0cmlidXRlcy5maW5kKGtleSk7Cisg
ICAgc3RkOjptYXA8RUdMQXR0cmliLCBFR0xBdHRyaWI+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
bUF0dHJpYnV0ZXMuZmluZChrZXkpOwogICAgIHJldHVybiAobUF0dHJpYnV0ZXMuZmluZChrZXkp
ICE9IG1BdHRyaWJ1dGVzLmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6IGRlZmF1bHRWYWx1ZTsKIH0K
IAorYm9vbCBBdHRyaWJ1dGVNYXA6OmlzRW1wdHkoKSBjb25zdAoreworICAgIHJldHVybiBtQXR0
cmlidXRlcy5lbXB0eSgpOworfQorCiBBdHRyaWJ1dGVNYXA6OmNvbnN0X2l0ZXJhdG9yIEF0dHJp
YnV0ZU1hcDo6YmVnaW4oKSBjb25zdAogewogICAgIHJldHVybiBtQXR0cmlidXRlcy5iZWdpbigp
OwpAQCAtNTAsNCArNDQsMzEgQEAKICAgICByZXR1cm4gbUF0dHJpYnV0ZXMuZW5kKCk7CiB9CiAK
Ky8vIHN0YXRpYworQXR0cmlidXRlTWFwIEF0dHJpYnV0ZU1hcDo6Q3JlYXRlRnJvbUludEFycmF5
KGNvbnN0IEVHTGludCAqYXR0cmlidXRlcykKK3sKKyAgICBBdHRyaWJ1dGVNYXAgbWFwOworICAg
IGlmIChhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgZm9yIChjb25zdCBFR0xpbnQgKmN1ckF0
dHJpYiA9IGF0dHJpYnV0ZXM7IGN1ckF0dHJpYlswXSAhPSBFR0xfTk9ORTsgY3VyQXR0cmliICs9
IDIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1hcC5pbnNlcnQoc3RhdGljX2Nhc3Q8RUdMQXR0
cmliPihjdXJBdHRyaWJbMF0pLCBzdGF0aWNfY2FzdDxFR0xBdHRyaWI+KGN1ckF0dHJpYlsxXSkp
OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXA7CiB9CisKKy8vIHN0YXRpYworQXR0
cmlidXRlTWFwIEF0dHJpYnV0ZU1hcDo6Q3JlYXRlRnJvbUF0dHJpYkFycmF5KGNvbnN0IEVHTEF0
dHJpYiAqYXR0cmlidXRlcykKK3sKKyAgICBBdHRyaWJ1dGVNYXAgbWFwOworICAgIGlmIChhdHRy
aWJ1dGVzKQorICAgIHsKKyAgICAgICAgZm9yIChjb25zdCBFR0xBdHRyaWIgKmN1ckF0dHJpYiA9
IGF0dHJpYnV0ZXM7IGN1ckF0dHJpYlswXSAhPSBFR0xfTk9ORTsgY3VyQXR0cmliICs9IDIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1hcC5pbnNlcnQoY3VyQXR0cmliWzBdLCBjdXJBdHRyaWJb
MV0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBtYXA7Cit9Cit9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5o
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvQXR0cmlidXRlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1LDIzICsxNSwyNiBAQAogbmFt
ZXNwYWNlIGVnbAogewogCi1jbGFzcyBBdHRyaWJ1dGVNYXAKK2NsYXNzIEF0dHJpYnV0ZU1hcCBm
aW5hbAogewogICBwdWJsaWM6CiAgICAgQXR0cmlidXRlTWFwKCk7Ci0gICAgZXhwbGljaXQgQXR0
cmlidXRlTWFwKGNvbnN0IEVHTGludCAqYXR0cmlidXRlcyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
aW5zZXJ0KEVHTGludCBrZXksIEVHTGludCB2YWx1ZSk7Ci0gICAgdmlydHVhbCBib29sIGNvbnRh
aW5zKEVHTGludCBrZXkpIGNvbnN0OwotICAgIHZpcnR1YWwgRUdMaW50IGdldChFR0xpbnQga2V5
LCBFR0xpbnQgZGVmYXVsdFZhbHVlKSBjb25zdDsKKyAgICB2b2lkIGluc2VydChFR0xBdHRyaWIg
a2V5LCBFR0xBdHRyaWIgdmFsdWUpOworICAgIGJvb2wgY29udGFpbnMoRUdMQXR0cmliIGtleSkg
Y29uc3Q7CisgICAgRUdMQXR0cmliIGdldChFR0xBdHRyaWIga2V5LCBFR0xBdHRyaWIgZGVmYXVs
dFZhbHVlKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAotICAgIHR5cGVkZWYg
c3RkOjptYXA8RUdMaW50LCBFR0xpbnQ+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsK
KyAgICB0eXBlZGVmIHN0ZDo6bWFwPEVHTEF0dHJpYiwgRUdMQXR0cmliPjo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CiAKICAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0Owog
ICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCisgICAgc3RhdGljIEF0dHJpYnV0ZU1h
cCBDcmVhdGVGcm9tSW50QXJyYXkoY29uc3QgRUdMaW50ICphdHRyaWJ1dGVzKTsKKyAgICBzdGF0
aWMgQXR0cmlidXRlTWFwIENyZWF0ZUZyb21BdHRyaWJBcnJheShjb25zdCBFR0xBdHRyaWIgKmF0
dHJpYnV0ZXMpOworCiAgIHByaXZhdGU6Ci0gICAgc3RkOjptYXA8RUdMaW50LCBFR0xpbnQ+IG1B
dHRyaWJ1dGVzOworICAgIHN0ZDo6bWFwPEVHTEF0dHJpYiwgRUdMQXR0cmliPiBtQXR0cmlidXRl
czsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9C
aW5hcnlTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQmluYXJ5U3RyZWFtLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CaW5hcnlTdHJlYW0uaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQAogICAgIHRlbXBsYXRlIDxjbGFzcyBJbnRUPgogICAgIEludFQgcmVh
ZEludCgpCiAgICAgewotICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgIGludCB2YWx1ZSA9IDA7
CiAgICAgICAgIHJlYWQoJnZhbHVlKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludFQ+
KHZhbHVlKTsKICAgICB9CkBAIC02MCw3ICs2MCw3IEBACiAKICAgICBib29sIHJlYWRCb29sKCkK
ICAgICB7Ci0gICAgICAgIGludCB2YWx1ZTsKKyAgICAgICAgaW50IHZhbHVlID0gMDsKICAgICAg
ICAgcmVhZCgmdmFsdWUpOwogICAgICAgICByZXR1cm4gKHZhbHVlID4gMCk7CiAgICAgfQpAQCAt
OTIsNyArOTIsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKG1PZmZzZXQgKyBsZW5ndGggPiBtTGVuZ3RoKQorICAgICAgICBpZiAoIXJ4OjpJc1Vuc2ln
bmVkQWRkaXRpb25TYWZlKG1PZmZzZXQsIGxlbmd0aCkgfHwgbU9mZnNldCArIGxlbmd0aCA+IG1M
ZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1FcnJvciA9IHRydWU7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMDQsNyArMTA0LDcgQEAKIAogICAgIHZvaWQgc2tpcChzaXplX3QgbGVu
Z3RoKQogICAgIHsKLSAgICAgICAgaWYgKG1PZmZzZXQgKyBsZW5ndGggPiBtTGVuZ3RoKQorICAg
ICAgICBpZiAoIXJ4OjpJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1PZmZzZXQsIGxlbmd0aCkgfHwg
bU9mZnNldCArIGxlbmd0aCA+IG1MZW5ndGgpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1FcnJv
ciA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDQsOSArMTQ0LDE1IEBACiAgICAg
ewogICAgICAgICBTdGF0aWNBc3NlcnRJc0Z1bmRhbWVudGFsPFQ+KCk7CiAKKyAgICAgICAgaWYg
KCFyeDo6SXNVbnNpZ25lZE11bHRpcGxpY2F0aW9uU2FmZShudW0sIHNpemVvZihUKSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1FcnJvciA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKwogICAgICAgICBzaXplX3QgbGVuZ3RoID0gbnVtICogc2l6ZW9mKFQpOwogCi0g
ICAgICAgIGlmIChtT2Zmc2V0ICsgbGVuZ3RoID4gbUxlbmd0aCkKKyAgICAgICAgaWYgKCFyeDo6
SXNVbnNpZ25lZEFkZGl0aW9uU2FmZShtT2Zmc2V0LCBsZW5ndGgpIHx8IG1PZmZzZXQgKyBsZW5n
dGggPiBtTGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBtRXJyb3IgPSB0cnVlOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0JpbmFyeVN0cmVhbV91bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbV91bml0dGVzdC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQmluYXJ5U3Ry
ZWFtX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvLworLy8g
Q29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gQmluYXJ5U3RyZWFtX3VuaXR0ZXN0LmNwcDogVW5pdCB0ZXN0cyBvZiB0aGUg
YmluYXJ5IHN0cmVhbSBjbGFzc2VzLgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2lu
Y2x1ZGUgImxpYkFOR0xFL0JpbmFyeVN0cmVhbS5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKwor
Ly8gVGVzdCB0aGF0IGVycm9ycyBhcmUgcHJvcGVybHkgZ2VuZXJhdGVkIGZvciBvdmVyZmxvd3Mu
CitURVNUKEJpbmFyeUlucHV0U3RyZWFtLCBPdmVyZmxvdykKK3sKKyAgICBjb25zdCB1aW50OF90
IGdvb2RWYWx1ZSA9IDI7CisgICAgY29uc3QgdWludDhfdCBiYWRWYWx1ZSA9IDI1NTsKKworICAg
IGNvbnN0IHNpemVfdCBkYXRhU2l6ZSA9IDEwMjQ7CisgICAgY29uc3Qgc2l6ZV90IHNsb3BTaXpl
ID0gMTAyNDsKKworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGRhdGEoZGF0YVNpemUgKyBzbG9w
U2l6ZSk7CisgICAgc3RkOjpmaWxsKGRhdGEuYmVnaW4oKSwgZGF0YS5iZWdpbigpICsgZGF0YVNp
emUsIGdvb2RWYWx1ZSk7CisgICAgc3RkOjpmaWxsKGRhdGEuYmVnaW4oKSArIGRhdGFTaXplLCBk
YXRhLmVuZCgpLCBiYWRWYWx1ZSk7CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBvdXRwdXRE
YXRhKGRhdGFTaXplKTsKKworICAgIGF1dG8gY2hlY2tEYXRhSXNTYWZlID0gWz1dKHVpbnQ4X3Qg
aXRlbSkKKyAgICB7CisgICAgICAgIHJldHVybiBpdGVtID09IGdvb2RWYWx1ZTsKKyAgICB9Owor
CisgICAgeworICAgICAgICAvLyBPbmUgbGFyZ2UgcmVhZAorICAgICAgICBnbDo6QmluYXJ5SW5w
dXRTdHJlYW0gc3RyZWFtKGRhdGEuZGF0YSgpLCBkYXRhU2l6ZSk7CisgICAgICAgIHN0cmVhbS5y
ZWFkQnl0ZXMob3V0cHV0RGF0YS5kYXRhKCksIGRhdGFTaXplKTsKKyAgICAgICAgQVNTRVJUX0ZB
TFNFKHN0cmVhbS5lcnJvcigpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoc3RkOjphbGxfb2Yob3V0
cHV0RGF0YS5iZWdpbigpLCBvdXRwdXREYXRhLmVuZCgpLCBjaGVja0RhdGFJc1NhZmUpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUoc3RyZWFtLmVuZE9mU3RyZWFtKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgLy8gVHdvIGhhbGYtc2l6ZWQgcmVhZHMKKyAgICAgICAgZ2w6OkJpbmFyeUlucHV0
U3RyZWFtIHN0cmVhbShkYXRhLmRhdGEoKSwgZGF0YVNpemUpOworICAgICAgICBzdHJlYW0ucmVh
ZEJ5dGVzKG91dHB1dERhdGEuZGF0YSgpLCBkYXRhU2l6ZSAvIDIpOworICAgICAgICBBU1NFUlRf
RkFMU0Uoc3RyZWFtLmVycm9yKCkpOworICAgICAgICBzdHJlYW0ucmVhZEJ5dGVzKG91dHB1dERh
dGEuZGF0YSgpICsgZGF0YVNpemUgLyAyLCBkYXRhU2l6ZSAvIDIpOworICAgICAgICBBU1NFUlRf
RkFMU0Uoc3RyZWFtLmVycm9yKCkpOworICAgICAgICBBU1NFUlRfVFJVRShzdGQ6OmFsbF9vZihv
dXRwdXREYXRhLmJlZ2luKCksIG91dHB1dERhdGEuZW5kKCksIGNoZWNrRGF0YUlzU2FmZSkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShzdHJlYW0uZW5kT2ZTdHJlYW0oKSk7CisgICAgfQorCisgICAg
eworICAgICAgICAvLyBPbmUgbGFyZ2UgcmVhZCB0aGF0IGlzIHRvbyBiaWcKKyAgICAgICAgZ2w6
OkJpbmFyeUlucHV0U3RyZWFtIHN0cmVhbShkYXRhLmRhdGEoKSwgZGF0YVNpemUpOworICAgICAg
ICBzdHJlYW0ucmVhZEJ5dGVzKG91dHB1dERhdGEuZGF0YSgpLCBkYXRhU2l6ZSArIDEpOworICAg
ICAgICBBU1NFUlRfVFJVRShzdHJlYW0uZXJyb3IoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICAvLyBUd28gcmVhZHMsIG9uZSB0aGF0IG92ZXJmbG93cyB0aGUgb2Zmc2V0CisgICAgICAgIGds
OjpCaW5hcnlJbnB1dFN0cmVhbSBzdHJlYW0oZGF0YS5kYXRhKCksIGRhdGFTaXplKTsKKyAgICAg
ICAgc3RyZWFtLnJlYWRCeXRlcyhvdXRwdXREYXRhLmRhdGEoKSwgZGF0YVNpemUgLSAxKTsKKyAg
ICAgICAgQVNTRVJUX0ZBTFNFKHN0cmVhbS5lcnJvcigpKTsKKyAgICAgICAgc3RyZWFtLnJlYWRC
eXRlcyhvdXRwdXREYXRhLmRhdGEoKSwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSAtIGRhdGFTaXplIC0gMik7CisgICAgfQorfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0J1ZmZlci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBACiBCdWZmZXI6OkJ1ZmZlcihyeDo6QnVmZmVySW1wbCAq
aW1wbCwgR0x1aW50IGlkKQogICAgIDogUmVmQ291bnRPYmplY3QoaWQpLAogICAgICAgbUJ1ZmZl
cihpbXBsKSwKKyAgICAgIG1MYWJlbCgpLAogICAgICAgbVVzYWdlKEdMX1NUQVRJQ19EUkFXKSwK
ICAgICAgIG1TaXplKDApLAogICAgICAgbUFjY2Vzc0ZsYWdzKDApLApAQCAtMzQsNiArMzUsMTYg
QEAKICAgICBTYWZlRGVsZXRlKG1CdWZmZXIpOwogfQogCit2b2lkIEJ1ZmZlcjo6c2V0TGFiZWwo
Y29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKQoreworICAgIG1MYWJlbCA9IGxhYmVsOworfQorCitj
b25zdCBzdGQ6OnN0cmluZyAmQnVmZmVyOjpnZXRMYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1MYWJlbDsKK30KKwogRXJyb3IgQnVmZmVyOjpidWZmZXJEYXRhKGNvbnN0IHZvaWQgKmRhdGEs
IEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVtIHVzYWdlKQogewogICAgIGdsOjpFcnJvciBlcnJvciA9
IG1CdWZmZXItPnNldERhdGEoZGF0YSwgc2l6ZSwgdXNhZ2UpOwpAQCAtOTMsOSArMTA0LDggQEAK
ICAgICBtTWFwTGVuZ3RoID0gbVNpemU7CiAgICAgbUFjY2VzcyA9IGFjY2VzczsKICAgICBtQWNj
ZXNzRmxhZ3MgPSBHTF9NQVBfV1JJVEVfQklUOworICAgIG1JbmRleFJhbmdlQ2FjaGUuY2xlYXIo
KTsKIAotICAgIG1JbmRleFJhbmdlQ2FjaGUuaW52YWxpZGF0ZVJhbmdlKDAsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4obU1hcExlbmd0aCkpOwotCiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBA
IC0xNTEsNCArMTYxLDM2IEBACiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEJ1ZmZlcjo6
b25UcmFuc2Zvcm1GZWVkYmFjaygpCit7CisgICAgbUluZGV4UmFuZ2VDYWNoZS5jbGVhcigpOwog
fQorCit2b2lkIEJ1ZmZlcjo6b25QaXhlbFVucGFjaygpCit7CisgICAgbUluZGV4UmFuZ2VDYWNo
ZS5jbGVhcigpOworfQorCitFcnJvciBCdWZmZXI6OmdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbmRleFJhbmdlICpvdXRSYW5nZSkgY29uc3QKK3sKKyAgICBpZiAobUluZGV4UmFuZ2VD
YWNoZS5maW5kUmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJs
ZWQsIG91dFJhbmdlKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIH0KKworICAgIEVycm9yIGVycm9yID0gbUJ1ZmZlci0+Z2V0SW5kZXhSYW5nZSh0
eXBlLCBvZmZzZXQsIGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwgb3V0UmFuZ2UpOwor
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7Cisg
ICAgfQorCisgICAgbUluZGV4UmFuZ2VDYWNoZS5hZGRSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50
LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwgKm91dFJhbmdlKTsKKworICAgIHJldHVybiBFcnJv
cihHTF9OT19FUlJPUik7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9CdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvQnVmZmVyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTEs
MTIgKzExLDEyIEBACiAjaWZuZGVmIExJQkFOR0xFX0JVRkZFUl9IXwogI2RlZmluZSBMSUJBTkdM
RV9CVUZGRVJfSF8KIAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvRGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50
T2JqZWN0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgi
CiAKLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotCiBuYW1lc3BhY2UgcngKIHsKIGNs
YXNzIEJ1ZmZlckltcGw7CkBAIC0yNSwxMyArMjUsMTUgQEAKIG5hbWVzcGFjZSBnbAogewogCi1j
bGFzcyBCdWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKK2NsYXNzIEJ1ZmZlciBmaW5hbCA6
IHB1YmxpYyBSZWZDb3VudE9iamVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGlj
OgogICAgIEJ1ZmZlcihyeDo6QnVmZmVySW1wbCAqaW1wbCwgR0x1aW50IGlkKTsKLQogICAgIHZp
cnR1YWwgfkJ1ZmZlcigpOwogCisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAm
bGFiZWwpIG92ZXJyaWRlOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0
IG92ZXJyaWRlOworCiAgICAgRXJyb3IgYnVmZmVyRGF0YShjb25zdCB2b2lkICpkYXRhLCBHTHNp
emVpcHRyIHNpemUsIEdMZW51bSB1c2FnZSk7CiAgICAgRXJyb3IgYnVmZmVyU3ViRGF0YShjb25z
dCB2b2lkICpkYXRhLCBHTHNpemVpcHRyIHNpemUsIEdMaW50cHRyIG9mZnNldCk7CiAgICAgRXJy
b3IgY29weUJ1ZmZlclN1YkRhdGEoQnVmZmVyKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNl
dCwgR0xpbnRwdHIgZGVzdE9mZnNldCwgR0xzaXplaXB0ciBzaXplKTsKQEAgLTM5LDYgKzQxLDE1
IEBACiAgICAgRXJyb3IgbWFwUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0
aCwgR0xiaXRmaWVsZCBhY2Nlc3MpOwogICAgIEVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0
KTsKIAorICAgIHZvaWQgb25UcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIHZvaWQgb25QaXhlbFVu
cGFjaygpOworCisgICAgRXJyb3IgZ2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3Rh
cnRFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqb3V0UmFuZ2Up
IGNvbnN0OworCiAgICAgR0xlbnVtIGdldFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbVVzYWdlOyB9
CiAgICAgR0xiaXRmaWVsZCBnZXRBY2Nlc3NGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1BY2Nlc3NG
bGFnczsgfQogICAgIEdMZW51bSBnZXRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtQWNjZXNzOyB9
CkBAIC01MCwxMiArNjEsMTEgQEAKIAogICAgIHJ4OjpCdWZmZXJJbXBsICpnZXRJbXBsZW1lbnRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXI7IH0KIAotICAgIHJ4OjpJbmRleFJhbmdlQ2Fj
aGUgKmdldEluZGV4UmFuZ2VDYWNoZSgpIHsgcmV0dXJuICZtSW5kZXhSYW5nZUNhY2hlOyB9Ci0g
ICAgY29uc3Qgcng6OkluZGV4UmFuZ2VDYWNoZSAqZ2V0SW5kZXhSYW5nZUNhY2hlKCkgY29uc3Qg
eyByZXR1cm4gJm1JbmRleFJhbmdlQ2FjaGU7IH0KLQogICBwcml2YXRlOgogICAgIHJ4OjpCdWZm
ZXJJbXBsICptQnVmZmVyOwogCisgICAgc3RkOjpzdHJpbmcgbUxhYmVsOworCiAgICAgR0xlbnVt
IG1Vc2FnZTsKICAgICBHTGludDY0IG1TaXplOwogICAgIEdMYml0ZmllbGQgbUFjY2Vzc0ZsYWdz
OwpAQCAtNjUsNyArNzUsNyBAQAogICAgIEdMaW50NjQgbU1hcE9mZnNldDsKICAgICBHTGludDY0
IG1NYXBMZW5ndGg7CiAKLSAgICByeDo6SW5kZXhSYW5nZUNhY2hlIG1JbmRleFJhbmdlQ2FjaGU7
CisgICAgbXV0YWJsZSBJbmRleFJhbmdlQ2FjaGUgbUluZGV4UmFuZ2VDYWNoZTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9DYXBzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogCiB2b2lkIFRleHR1
cmVDYXBzTWFwOjppbnNlcnQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBUZXh0dXJlQ2Fw
cyAmY2FwcykKIHsKLSAgICBtQ2Fwc01hcC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoaW50ZXJuYWxG
b3JtYXQsIGNhcHMpKTsKKyAgICBtQ2Fwc01hcFtpbnRlcm5hbEZvcm1hdF0gPSBjYXBzOwogfQog
CiB2b2lkIFRleHR1cmVDYXBzTWFwOjpyZW1vdmUoR0xlbnVtIGludGVybmFsRm9ybWF0KQpAQCAt
MTAyLDYgKzEwMiw3IEBACiAgICAgICBwaXhlbEJ1ZmZlck9iamVjdChmYWxzZSksCiAgICAgICBt
YXBCdWZmZXIoZmFsc2UpLAogICAgICAgbWFwQnVmZmVyUmFuZ2UoZmFsc2UpLAorICAgICAgY29s
b3JCdWZmZXJIYWxmRmxvYXQoZmFsc2UpLAogICAgICAgdGV4dHVyZUhhbGZGbG9hdChmYWxzZSks
CiAgICAgICB0ZXh0dXJlSGFsZkZsb2F0TGluZWFyKGZhbHNlKSwKICAgICAgIHRleHR1cmVGbG9h
dChmYWxzZSksCkBAIC0xMTAsMTUgKzExMSwyMiBAQAogICAgICAgdGV4dHVyZUNvbXByZXNzaW9u
RFhUMShmYWxzZSksCiAgICAgICB0ZXh0dXJlQ29tcHJlc3Npb25EWFQzKGZhbHNlKSwKICAgICAg
IHRleHR1cmVDb21wcmVzc2lvbkRYVDUoZmFsc2UpLAorICAgICAgdGV4dHVyZUNvbXByZXNzaW9u
QVNUQ0hEUihmYWxzZSksCisgICAgICB0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSKGZhbHNlKSwK
KyAgICAgIGNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUoZmFsc2UpLAogICAgICAgZGVwdGhUZXh0
dXJlcyhmYWxzZSksCisgICAgICBkZXB0aDMyKGZhbHNlKSwKKyAgICAgIHRleHR1cmVTdG9yYWdl
KGZhbHNlKSwKICAgICAgIHRleHR1cmVOUE9UKGZhbHNlKSwKICAgICAgIGRyYXdCdWZmZXJzKGZh
bHNlKSwKLSAgICAgIHRleHR1cmVTdG9yYWdlKGZhbHNlKSwKICAgICAgIHRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYyhmYWxzZSksCiAgICAgICBtYXhUZXh0dXJlQW5pc290cm9weShmYWxzZSksCiAg
ICAgICBvY2NsdXNpb25RdWVyeUJvb2xlYW4oZmFsc2UpLAogICAgICAgZmVuY2UoZmFsc2UpLAog
ICAgICAgdGltZXJRdWVyeShmYWxzZSksCisgICAgICBkaXNqb2ludFRpbWVyUXVlcnkoZmFsc2Up
LAorICAgICAgcXVlcnlDb3VudGVyQml0c1RpbWVFbGFwc2VkKDApLAorICAgICAgcXVlcnlDb3Vu
dGVyQml0c1RpbWVzdGFtcCgwKSwKICAgICAgIHJvYnVzdG5lc3MoZmFsc2UpLAogICAgICAgYmxl
bmRNaW5NYXgoZmFsc2UpLAogICAgICAgZnJhbWVidWZmZXJCbGl0KGZhbHNlKSwKQEAgLTEzNCw2
ICsxNDIsMjIgQEAKICAgICAgIHRleHR1cmVVc2FnZShmYWxzZSksCiAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlKGZhbHNlKSwKICAgICAgIGZib1JlbmRlck1pcG1hcChmYWxzZSksCisgICAg
ICBkaXNjYXJkRnJhbWVidWZmZXIoZmFsc2UpLAorICAgICAgZGVidWdNYXJrZXIoZmFsc2UpLAor
ICAgICAgZWdsSW1hZ2UoZmFsc2UpLAorICAgICAgZWdsSW1hZ2VFeHRlcm5hbChmYWxzZSksCisg
ICAgICBlZ2xJbWFnZUV4dGVybmFsRXNzbDMoZmFsc2UpLAorICAgICAgZWdsU3RyZWFtQ29uc3Vt
ZXJFeHRlcm5hbChmYWxzZSksCisgICAgICB1bnBhY2tTdWJpbWFnZShmYWxzZSksCisgICAgICBw
YWNrU3ViaW1hZ2UoZmFsc2UpLAorICAgICAgdmVydGV4QXJyYXlPYmplY3QoZmFsc2UpLAorICAg
ICAgZGVidWcoZmFsc2UpLAorICAgICAgbWF4RGVidWdNZXNzYWdlTGVuZ3RoKDApLAorICAgICAg
bWF4RGVidWdMb2dnZWRNZXNzYWdlcygwKSwKKyAgICAgIG1heERlYnVnR3JvdXBTdGFja0RlcHRo
KDApLAorICAgICAgbWF4TGFiZWxMZW5ndGgoMCksCisgICAgICBub0Vycm9yKGZhbHNlKSwKKyAg
ICAgIGxvc3N5RVRDRGVjb2RlKGZhbHNlKSwKICAgICAgIGNvbG9yQnVmZmVyRmxvYXQoZmFsc2Up
CiB7CiB9CkBAIC0xNDIsNTMgKzE2Niw4NSBAQAogewogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiBleHRlbnNpb25TdHJpbmdzOwogCi0gICAgLy8gICAgICAgICAgICAgICAgICAgfCBFeHRl
bnNpb24gbmFtZSAgICAgICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkIGZsYWcgICAgICAgICAg
fCBPdXRwdXQgdmVjdG9yICAgfAotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX2Vs
ZW1lbnRfaW5kZXhfdWludCIsICAgICAgICAgZWxlbWVudEluZGV4VWludCwgICAgICAgICAmZXh0
ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiLCAgICAgICBwYWNrZWREZXB0aFN0ZW5jaWwsICAgICAgICZleHRlbnNp
b25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19nZXRfcHJvZ3Jh
bV9iaW5hcnkiLCAgICAgICAgIGdldFByb2dyYW1CaW5hcnksICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX3JnYjhfcmdiYTgiLCAg
ICAgICAgICAgICAgICAgcmdiOHJnYmE4LCAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5n
cyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdS
QTg4ODgiLCAgICB0ZXh0dXJlRm9ybWF0QkdSQTg4ODgsICAgICZleHRlbnNpb25TdHJpbmdzKTsK
LSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhIiwgICAg
ICAgICAgIHJlYWRGb3JtYXRCR1JBLCAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfTlZfcGl4ZWxfYnVmZmVyX29iamVjdCIsICAgICAg
ICAgcGl4ZWxCdWZmZXJPYmplY3QsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfbWFwYnVmZmVyIiwgICAgICAgICAgICAgICAgICBt
YXBCdWZmZXIsICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkdMX0VYVF9tYXBfYnVmZmVyX3JhbmdlIiwgICAgICAgICAgIG1hcEJ1
ZmZlclJhbmdlLCAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIsICAgICAgICAgdGV4dHVyZUhh
bGZGbG9hdCwgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIsICB0ZXh0dXJlSGFsZkZs
b2F0TGluZWFyLCAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJp
bmcoIkdMX09FU190ZXh0dXJlX2Zsb2F0IiwgICAgICAgICAgICAgIHRleHR1cmVGbG9hdCwgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
R0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiwgICAgICAgdGV4dHVyZUZsb2F0TGluZWFyLCAg
ICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9F
WFRfdGV4dHVyZV9yZyIsICAgICAgICAgICAgICAgICB0ZXh0dXJlUkcsICAgICAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF90
ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiLCAgIHRleHR1cmVDb21wcmVzc2lvbkRYVDEsICAgJmV4
dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQzIiwgdGV4dHVyZUNvbXByZXNzaW9uRFhUMywgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDUiLCB0ZXh0dXJlQ29tcHJlc3Npb25EWFQ1LCAgICZleHRlbnNpb25T
dHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9zUkdCIiwgICAgICAg
ICAgICAgICAgICAgICAgIHNSR0IsICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSIs
ICAgICAgICAgICAgZGVwdGhUZXh0dXJlcywgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7
Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiwgICAg
ICAgICAgICB0ZXh0dXJlU3RvcmFnZSwgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU190ZXh0dXJlX25wb3QiLCAgICAgICAgICAg
ICAgIHRleHR1cmVOUE9ULCAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2RyYXdfYnVmZmVycyIsICAgICAgICAgICAgICAg
ZHJhd0J1ZmZlcnMsICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCB0ZXh0
dXJlRmlsdGVyQW5pc290cm9waWMsICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIsICAgIG9jY2x1c2lv
blF1ZXJ5Qm9vbGVhbiwgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiR0xfTlZfZmVuY2UiLCAgICAgICAgICAgICAgICAgICAgICAgZmVuY2UsICAgICAg
ICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJHTF9BTkdMRV90aW1lcl9xdWVyeSIsICAgICAgICAgICAgICB0aW1lclF1ZXJ5LCAgICAg
ICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmco
IkdMX0VYVF9yb2J1c3RuZXNzIiwgICAgICAgICAgICAgICAgIHJvYnVzdG5lc3MsICAgICAgICAg
ICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xf
RVhUX2JsZW5kX21pbm1heCIsICAgICAgICAgICAgICAgYmxlbmRNaW5NYXgsICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0IiwgICAgICAgICBmcmFtZWJ1ZmZlckJsaXQsICAgICAgICAgICZl
eHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIiwgIGZyYW1lYnVmZmVyTXVsdGlzYW1wbGUsICAgJmV4dGVu
c2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfaW5zdGFu
Y2VkX2FycmF5cyIsICAgICAgICAgaW5zdGFuY2VkQXJyYXlzLCAgICAgICAgICAmZXh0ZW5zaW9u
U3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV9wYWNrX3JldmVy
c2Vfcm93X29yZGVyIiwgICBwYWNrUmV2ZXJzZVJvd09yZGVyLCAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyIsICAgICAgIHN0YW5kYXJkRGVyaXZhdGl2ZXMsICAgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OwotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIs
ICAgICAgICAgc2hhZGVyVGV4dHVyZUxPRCwgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0g
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gi
LCAgICBOVnNoYWRlckZyYW1lYnVmZmVyRmV0Y2gsICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLCAg
IEFSTXNoYWRlckZyYW1lYnVmZmVyRmV0Y2gsJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsICAgc2hh
ZGVyRnJhbWVidWZmZXJGZXRjaCwgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJHTF9FWFRfZnJhZ19kZXB0aCIsICAgICAgICAgICAgICAgICBmcmFnRGVw
dGgsICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkdMX0FOR0xFX3RleHR1cmVfdXNhZ2UiLCAgICAgICAgICAgIHRleHR1cmVVc2Fn
ZSwgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIiwgdHJhbnNsYXRlZFNoYWRl
clNvdXJjZSwgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5n
KCJHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAiLCAgICAgICAgICBmYm9SZW5kZXJNaXBtYXAsICAg
ICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdM
X0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiLCAgICAgICAgIGNvbG9yQnVmZmVyRmxvYXQsICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICAvLyAg
ICAgICAgICAgICAgICAgICB8IEV4dGVuc2lvbiBuYW1lICAgICAgICAgICAgICAgICAgICAgICB8
IFN1cHBvcnRlZCBmbGFnICAgICAgICAgICB8IE91dHB1dCB2ZWN0b3IgICB8CisgICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IiwgICAgICAgICAgIGVs
ZW1lbnRJbmRleFVpbnQsICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIsICAgICAgICAgcGFj
a2VkRGVwdGhTdGVuY2lsLCAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSIsICAgICAgICAgICBnZXRQ
cm9ncmFtQmluYXJ5LCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJHTF9PRVNfcmdiOF9yZ2JhOCIsICAgICAgICAgICAgICAgICAgIHJnYjhy
Z2JhOCwgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIsICAgICAgdGV4dHVy
ZUZvcm1hdEJHUkE4ODg4LCAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEiLCAgICAgICAgICAgICByZWFkRm9y
bWF0QkdSQSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJHTF9OVl9waXhlbF9idWZmZXJfb2JqZWN0IiwgICAgICAgICAgIHBpeGVsQnVm
ZmVyT2JqZWN0LCAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkdMX09FU19tYXBidWZmZXIiLCAgICAgICAgICAgICAgICAgICAgbWFwQnVmZmVy
LCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UiLCAgICAgICAgICAgICBtYXBCdWZmZXJS
YW5nZSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiLCAgICAgIGNvbG9yQnVmZmVy
SGFsZkZsb2F0LCAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiLCAgICAgICAgICAgdGV4dHVyZUhhbGZG
bG9hdCwgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiLCAgICB0ZXh0dXJlSGFsZkZs
b2F0TGluZWFyLCAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIsICAgICAgICAgICAgICAgIHRleHR1cmVGbG9hdCwg
ICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJp
bmcoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIsICAgICAgICAgdGV4dHVyZUZsb2F0TGlu
ZWFyLCAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiR0xfRVhUX3RleHR1cmVfcmciLCAgICAgICAgICAgICAgICAgICB0ZXh0dXJlUkcsICAgICAg
ICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5n
KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIiwgICAgIHRleHR1cmVDb21wcmVzc2lv
bkRYVDEsICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmco
IkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIsICAgdGV4dHVyZUNvbXByZXNzaW9u
RFhUMywgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
R0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IiwgICB0ZXh0dXJlQ29tcHJlc3Npb25E
WFQ1LCAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciIsIHRleHR1cmVDb21wcmVzc2lvbkFT
VENIRFIsICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdM
X0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyIiwgdGV4dHVyZUNvbXByZXNzaW9uQVNU
Q0xEUiwgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xf
T0VTX2NvbXByZXNzZWRfRVRDMV9SR0I4X3RleHR1cmUiLCBjb21wcmVzc2VkRVRDMVJHQjhUZXh0
dXJlLCAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9F
WFRfc1JHQiIsICAgICAgICAgICAgICAgICAgICAgICAgIHNSR0IsICAgICAgICAgICAgICAgICAg
ICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FO
R0xFX2RlcHRoX3RleHR1cmUiLCAgICAgICAgICAgICAgZGVwdGhUZXh0dXJlcywgICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VT
X2RlcHRoMzIiLCAgICAgICAgICAgICAgICAgICAgICBkZXB0aDMyLCAgICAgICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRf
dGV4dHVyZV9zdG9yYWdlIiwgICAgICAgICAgICAgIHRleHR1cmVTdG9yYWdlLCAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU190
ZXh0dXJlX25wb3QiLCAgICAgICAgICAgICAgICAgdGV4dHVyZU5QT1QsICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2Ry
YXdfYnVmZmVycyIsICAgICAgICAgICAgICAgICBkcmF3QnVmZmVycywgICAgICAgICAgICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiLCAgIHRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYywgICZl
eHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9vY2Ns
dXNpb25fcXVlcnlfYm9vbGVhbiIsICAgICAgb2NjbHVzaW9uUXVlcnlCb29sZWFuLCAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfTlZfZmVuY2Ui
LCAgICAgICAgICAgICAgICAgICAgICAgICBmZW5jZSwgICAgICAgICAgICAgICAgICAgICAmZXh0
ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV90aW1l
cl9xdWVyeSIsICAgICAgICAgICAgICAgIHRpbWVyUXVlcnksICAgICAgICAgICAgICAgICZleHRl
bnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9kaXNqb2lu
dF90aW1lcl9xdWVyeSIsICAgICAgICAgZGlzam9pbnRUaW1lclF1ZXJ5LCAgICAgICAgJmV4dGVu
c2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3JvYnVzdG5l
c3MiLCAgICAgICAgICAgICAgICAgICByb2J1c3RuZXNzLCAgICAgICAgICAgICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfYmxlbmRfbWlu
bWF4IiwgICAgICAgICAgICAgICAgIGJsZW5kTWluTWF4LCAgICAgICAgICAgICAgICZleHRlbnNp
b25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQiLCAgICAgICAgICAgZnJhbWVidWZmZXJCbGl0LCAgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiLCAgICBmcmFtZWJ1ZmZlck11bHRpc2FtcGxlLCAgICAmZXh0ZW5zaW9u
U3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV9pbnN0YW5jZWRf
YXJyYXlzIiwgICAgICAgICAgIGluc3RhbmNlZEFycmF5cywgICAgICAgICAgICZleHRlbnNpb25T
dHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0FOR0xFX3BhY2tfcmV2ZXJz
ZV9yb3dfb3JkZXIiLCAgICAgcGFja1JldmVyc2VSb3dPcmRlciwgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzIiwgICAgICAgICBzdGFuZGFyZERlcml2YXRpdmVzLCAgICAgICAmZXh0ZW5zaW9uU3Ry
aW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVf
bG9kIiwgICAgICAgICAgIHNoYWRlclRleHR1cmVMT0QsICAgICAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaCIsICAgICAgTlZzaGFkZXJGcmFtZWJ1ZmZlckZldGNoLCAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQVJNX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaCIsICAgICBBUk1zaGFkZXJGcmFtZWJ1ZmZlckZldGNoLCAmZXh0ZW5zaW9uU3RyaW5n
cyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfc2hhZGVyX2ZyYW1lYnVmZmVy
X2ZldGNoIiwgICAgIHNoYWRlckZyYW1lYnVmZmVyRmV0Y2gsICAgICZleHRlbnNpb25TdHJpbmdz
KTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9mcmFnX2RlcHRoIiwgICAgICAg
ICAgICAgICAgICAgZnJhZ0RlcHRoLCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfQU5HTEVfdGV4dHVyZV91c2FnZSIsICAg
ICAgICAgICAgICB0ZXh0dXJlVXNhZ2UsICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7
CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiLCAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UsICAgICZleHRlbnNpb25TdHJpbmdzKTsK
KyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCIsICAg
ICAgICAgICAgZmJvUmVuZGVyTWlwbWFwLCAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwor
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIiLCAg
ICAgICAgICBkaXNjYXJkRnJhbWVidWZmZXIsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Cisg
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9FWFRfZGVidWdfbWFya2VyIiwgICAgICAgICAg
ICAgICAgIGRlYnVnTWFya2VyLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX09FU19FR0xfaW1hZ2UiLCAgICAgICAgICAgICAg
ICAgICAgZWdsSW1hZ2UsICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIsICAgICAg
ICAgICBlZ2xJbWFnZUV4dGVybmFsLCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIiwg
ICAgIGVnbEltYWdlRXh0ZXJuYWxFc3NsMywgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwi
LCAgZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCwgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiR0xfRVhUX3VucGFja19zdWJpbWFnZSIsICAgICAgICAgICAg
ICB1bnBhY2tTdWJpbWFnZSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJHTF9OVl9wYWNrX3N1YmltYWdlIiwgICAgICAgICAgICAgICAg
IHBhY2tTdWJpbWFnZSwgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNl
cnRFeHRlbnNpb25TdHJpbmcoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiLCAgICAgICAgICAg
Y29sb3JCdWZmZXJGbG9hdCwgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCAgICAgICAgICB2
ZXJ0ZXhBcnJheU9iamVjdCwgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJHTF9LSFJfZGVidWciLCAgICAgICAgICAgICAgICAgICAgICAgIGRl
YnVnLCAgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICAvLyBUT0RP
KGptYWRpbGwpOiBFbmFibGUgdGhpcyB3aGVuIGNvbXBsZXRlLgorICAgIC8vSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJHTF9LSFJfbm9fZXJyb3IiLCAgICAgICAgICAgICAgICAgICAgIG5vRXJyb3Is
ICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKIAorICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiR0xfQU5HTEVfbG9zc3lfZXRjX2RlY29kZSIsICAgICAgICAgICBsb3NzeUVU
Q0RlY29kZSwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgLy8gY2xhbmctZm9y
bWF0IG9uCisKICAgICByZXR1cm4gZXh0ZW5zaW9uU3RyaW5nczsKIH0KIAorTGltaXRhdGlvbnM6
OkxpbWl0YXRpb25zKCkKKyAgICA6IG5vRnJvbnRGYWNpbmdTdXBwb3J0KGZhbHNlKSwKKyAgICAg
IG5vU2FtcGxlQWxwaGFUb0NvdmVyYWdlU3VwcG9ydChmYWxzZSksCisgICAgICBhdHRyaWJ1dGVa
ZXJvUmVxdWlyZXNaZXJvRGl2aXNvckluRVhUKGZhbHNlKSwKKyAgICAgIG5vU2VwYXJhdGVTdGVu
Y2lsUmVmc0FuZE1hc2tzKGZhbHNlKSwKKyAgICAgIHNoYWRlcnNSZXF1aXJlSW5kZXhlZExvb3BW
YWxpZGF0aW9uKGZhbHNlKSwKKyAgICAgIG5vU2ltdWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFs
cGhhQmxlbmRGdW5jKGZhbHNlKQoreworfQorCiBzdGF0aWMgYm9vbCBHZXRGb3JtYXRTdXBwb3J0
KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywgY29uc3Qgc3RkOjp2ZWN0b3I8R0xl
bnVtPiAmcmVxdWlyZWRGb3JtYXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHJlcXVpcmVzVGV4dHVyaW5nLCBib29sIHJlcXVpcmVzRmlsdGVyaW5nLCBib29sIHJlcXVpcmVz
UmVuZGVyaW5nKQogewpAQCAtMjE1LDYgKzI3MSwxNSBAQAogICAgIHJldHVybiB0cnVlOwogfQog
CisvLyBDaGVjayBmb3IgR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsCitzdGF0aWMgYm9vbCBE
ZXRlcm1pbmVQYWNrZWREZXB0aFN0ZW5jaWxTdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0
ZXh0dXJlQ2FwcykKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IHJlcXVpcmVkRm9ybWF0czsK
KyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0RFUFRIMjRfU1RFTkNJTDgpOworCisg
ICAgcmV0dXJuIEdldEZvcm1hdFN1cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywg
ZmFsc2UsIGZhbHNlLCB0cnVlKTsKK30KKwogLy8gQ2hlY2tzIGZvciBHTF9PRVNfcmdiOF9yZ2Jh
OCBzdXBwb3J0CiBzdGF0aWMgYm9vbCBEZXRlcm1pbmVSR0I4QW5kUkdCQThUZXh0dXJlU3VwcG9y
dChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMpCiB7CkBAIC0yMzQsNiArMjk5LDE4
IEBACiAgICAgcmV0dXJuIEdldEZvcm1hdFN1cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9y
bWF0cywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiB9CiAKKy8vIENoZWNrcyBmb3IgR0xfT0VTX2NvbG9y
X2J1ZmZlcl9oYWxmX2Zsb2F0IHN1cHBvcnQKK3N0YXRpYyBib29sIERldGVybWluZUNvbG9yQnVm
ZmVySGFsZkZsb2F0U3VwcG9ydChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMpCit7
CisgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiByZXF1aXJlZEZvcm1hdHM7CisgICAgcmVxdWlyZWRG
b3JtYXRzLnB1c2hfYmFjayhHTF9SR0JBMTZGKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9i
YWNrKEdMX1JHQjE2Rik7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9SRzE2Rik7
CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9SMTZGKTsKKworICAgIHJldHVybiBH
ZXRGb3JtYXRTdXBwb3J0KHRleHR1cmVDYXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIGZhbHNl
LCB0cnVlKTsKK30KKwogLy8gQ2hlY2tzIGZvciBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IHN1
cHBvcnQKIHN0YXRpYyBib29sIERldGVybWluZUhhbGZGbG9hdFRleHR1cmVTdXBwb3J0KGNvbnN0
IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKIHsKQEAgLTI1MSw3ICszMjgsOCBAQAogICAg
IHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCMTZGKTsKICAgICByZXF1aXJlZEZvcm1h
dHMucHVzaF9iYWNrKEdMX1JHQkExNkYpOwogCi0gICAgcmV0dXJuIEdldEZvcm1hdFN1cHBvcnQo
dGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOworICAgIHJl
dHVybiBEZXRlcm1pbmVIYWxmRmxvYXRUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2FwcykgJiYKKyAg
ICAgICAgICAgR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3JtYXRzLCB0
cnVlLCB0cnVlLCBmYWxzZSk7CiB9CiAKIC8vIENoZWNrcyBmb3IgR0xfT0VTX3RleHR1cmVfZmxv
YXQgc3VwcG9ydApAQCAtMjcxLDcgKzM0OSw4IEBACiAgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hf
YmFjayhHTF9SR0IzMkYpOwogICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCQTMy
Rik7CiAKLSAgICByZXR1cm4gR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRG
b3JtYXRzLCB0cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgcmV0dXJuIERldGVybWluZUZsb2F0VGV4
dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpICYmCisgICAgICAgICAgIEdldEZvcm1hdFN1cHBvcnQo
dGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOwogfQogCiAv
LyBDaGVja3MgZm9yIEdMX0VYVF90ZXh0dXJlX3JnIHN1cHBvcnQKQEAgLTMyMiw2ICs0MDEsNTEg
QEAKICAgICByZXR1cm4gR2V0Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3Jt
YXRzLCB0cnVlLCB0cnVlLCBmYWxzZSk7CiB9CiAKKy8vIENoZWNrIGZvciBHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2hkciBhbmQgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0
Y19sZHIKK3N0YXRpYyBib29sIERldGVybWluZUFTVENUZXh0dXJlU3VwcG9ydChjb25zdCBUZXh0
dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMpCit7CisgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiByZXF1
aXJlZEZvcm1hdHM7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ180eDRfS0hSKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2Jh
Y2soR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUik7CisgICAgcmVxdWlyZWRGb3JtYXRz
LnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSKTsKKyAgICByZXF1aXJl
ZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIpOworICAg
IHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
Uik7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q184eDZfS0hSKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzh4OF9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2Jh
Y2soR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0
cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIpOworICAgIHJlcXVp
cmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSKTsK
KyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEy
eDEwX0tIUik7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMngxMl9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSKTsKKyAgICByZXF1aXJlZEZvcm1hdHMu
cHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUik7CisgICAg
cmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzV4NV9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDVfS0hSKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNr
KEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUik7CisgICAgcmVxdWlyZWRG
b3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIp
OworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ184eDZfS0hSKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUik7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1
c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSKTsKKyAgICBy
ZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4Nl9LSFIpOworICAgIHJlcXVpcmVkRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUik7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFj
ayhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUik7CisgICAgcmVxdWly
ZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEw
X0tIUik7CisgICAgcmVxdWlyZWRGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEyX0tIUik7CisKKyAgICByZXR1cm4gR2V0Rm9ybWF0U3VwcG9ydCh0
ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3JtYXRzLCB0cnVlLCB0cnVlLCBmYWxzZSk7Cit9CisKKy8v
IENoZWNrIGZvciBHTF9FVEMxX1JHQjhfT0VTCitzdGF0aWMgYm9vbCBEZXRlcm1pbmVFVEMxUkdC
OFRleHR1cmVTdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKK3sKKyAg
ICBzdGQ6OnZlY3RvcjxHTGVudW0+IHJlcXVpcmVkRm9ybWF0czsKKyAgICByZXF1aXJlZEZvcm1h
dHMucHVzaF9iYWNrKEdMX0VUQzFfUkdCOF9PRVMpOworCisgICAgcmV0dXJuIEdldEZvcm1hdFN1
cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywgdHJ1ZSwgdHJ1ZSwgZmFsc2UpOwor
fQorCiAvLyBDaGVjayBmb3IgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1CiBzdGF0
aWMgYm9vbCBEZXRlcm1pbmVTUkdCVGV4dHVyZVN1cHBvcnQoY29uc3QgVGV4dHVyZUNhcHNNYXAg
JnRleHR1cmVDYXBzKQogewpAQCAtMzQ3LDYgKzQ3MSwxNSBAQAogICAgIHJldHVybiBHZXRGb3Jt
YXRTdXBwb3J0KHRleHR1cmVDYXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIHRydWUsIHRydWUp
OwogfQogCisvLyBDaGVjayBmb3IgR0xfT0VTX2RlcHRoMzIKK3N0YXRpYyBib29sIERldGVybWlu
ZURlcHRoMzJTdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKK3sKKyAg
ICBzdGQ6OnZlY3RvcjxHTGVudW0+IHJlcXVpcmVkRm9ybWF0czsKKyAgICByZXF1aXJlZEZvcm1h
dHMucHVzaF9iYWNrKEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUyk7CisKKyAgICByZXR1cm4gR2V0
Rm9ybWF0U3VwcG9ydCh0ZXh0dXJlQ2FwcywgcmVxdWlyZWRGb3JtYXRzLCBmYWxzZSwgZmFsc2Us
IHRydWUpOworfQorCiAvLyBDaGVjayBmb3IgR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdAogc3Rh
dGljIGJvb2wgRGV0ZXJtaW5lQ29sb3JCdWZmZXJGbG9hdFN1cHBvcnQoY29uc3QgVGV4dHVyZUNh
cHNNYXAgJnRleHR1cmVDYXBzKQogewpAQCAtMzY0LDggKzQ5NywxMCBAQAogCiB2b2lkIEV4dGVu
c2lvbnM6OnNldFRleHR1cmVFeHRlbnNpb25TdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0
ZXh0dXJlQ2FwcykKIHsKKyAgICBwYWNrZWREZXB0aFN0ZW5jaWwgPSBEZXRlcm1pbmVQYWNrZWRE
ZXB0aFN0ZW5jaWxTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICByZ2I4cmdiYTggPSBEZXRlcm1p
bmVSR0I4QW5kUkdCQThUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiAgICAgdGV4dHVyZUZv
cm1hdEJHUkE4ODg4ID0gRGV0ZXJtaW5lQkdSQThUZXh0dXJlU3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7
CisgICAgY29sb3JCdWZmZXJIYWxmRmxvYXQgICAgICA9IERldGVybWluZUNvbG9yQnVmZmVySGFs
ZkZsb2F0U3VwcG9ydCh0ZXh0dXJlQ2Fwcyk7CiAgICAgdGV4dHVyZUhhbGZGbG9hdCA9IERldGVy
bWluZUhhbGZGbG9hdFRleHR1cmVTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICB0ZXh0dXJlSGFs
ZkZsb2F0TGluZWFyID0gRGV0ZXJtaW5lSGFsZkZsb2F0VGV4dHVyZUZpbHRlcmluZ1N1cHBvcnQo
dGV4dHVyZUNhcHMpOwogICAgIHRleHR1cmVGbG9hdCA9IERldGVybWluZUZsb2F0VGV4dHVyZVN1
cHBvcnQodGV4dHVyZUNhcHMpOwpAQCAtMzc0LDggKzUwOSwxMiBAQAogICAgIHRleHR1cmVDb21w
cmVzc2lvbkRYVDEgPSBEZXRlcm1pbmVEWFQxVGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOwog
ICAgIHRleHR1cmVDb21wcmVzc2lvbkRYVDMgPSBEZXRlcm1pbmVEWFQzVGV4dHVyZVN1cHBvcnQo
dGV4dHVyZUNhcHMpOwogICAgIHRleHR1cmVDb21wcmVzc2lvbkRYVDUgPSBEZXRlcm1pbmVEWFQ1
VGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOworICAgIHRleHR1cmVDb21wcmVzc2lvbkFTVENI
RFIgPSBEZXRlcm1pbmVBU1RDVGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOworICAgIHRleHR1
cmVDb21wcmVzc2lvbkFTVENMRFIgPSB0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSOworICAgIGNv
bXByZXNzZWRFVEMxUkdCOFRleHR1cmUgPSBEZXRlcm1pbmVFVEMxUkdCOFRleHR1cmVTdXBwb3J0
KHRleHR1cmVDYXBzKTsKICAgICBzUkdCID0gRGV0ZXJtaW5lU1JHQlRleHR1cmVTdXBwb3J0KHRl
eHR1cmVDYXBzKTsKICAgICBkZXB0aFRleHR1cmVzID0gRGV0ZXJtaW5lRGVwdGhUZXh0dXJlU3Vw
cG9ydCh0ZXh0dXJlQ2Fwcyk7CisgICAgZGVwdGgzMiAgICAgICAgICAgICAgICAgICA9IERldGVy
bWluZURlcHRoMzJTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICBjb2xvckJ1ZmZlckZsb2F0ID0g
RGV0ZXJtaW5lQ29sb3JCdWZmZXJGbG9hdFN1cHBvcnQodGV4dHVyZUNhcHMpOwogfQogCkBAIC00
ODMsOSArNjIyLDI2IEBACiAgICAgICBzdXJmYWNlRDNEVGV4dHVyZTJEU2hhcmVIYW5kbGUoZmFs
c2UpLAogICAgICAgcXVlcnlTdXJmYWNlUG9pbnRlcihmYWxzZSksCiAgICAgICB3aW5kb3dGaXhl
ZFNpemUoZmFsc2UpLAorICAgICAga2V5ZWRNdXRleChmYWxzZSksCisgICAgICBzdXJmYWNlT3Jp
ZW50YXRpb24oZmFsc2UpLAogICAgICAgcG9zdFN1YkJ1ZmZlcihmYWxzZSksCiAgICAgICBjcmVh
dGVDb250ZXh0KGZhbHNlKSwKLSAgICAgIGRldmljZVF1ZXJ5KGZhbHNlKQorICAgICAgZGV2aWNl
UXVlcnkoZmFsc2UpLAorICAgICAgaW1hZ2UoZmFsc2UpLAorICAgICAgaW1hZ2VCYXNlKGZhbHNl
KSwKKyAgICAgIGltYWdlUGl4bWFwKGZhbHNlKSwKKyAgICAgIGdsVGV4dHVyZTJESW1hZ2UoZmFs
c2UpLAorICAgICAgZ2xUZXh0dXJlQ3ViZW1hcEltYWdlKGZhbHNlKSwKKyAgICAgIGdsVGV4dHVy
ZTNESW1hZ2UoZmFsc2UpLAorICAgICAgZ2xSZW5kZXJidWZmZXJJbWFnZShmYWxzZSksCisgICAg
ICBnZXRBbGxQcm9jQWRkcmVzc2VzKGZhbHNlKSwKKyAgICAgIGZsZXhpYmxlU3VyZmFjZUNvbXBh
dGliaWxpdHkoZmFsc2UpLAorICAgICAgZGlyZWN0Q29tcG9zaXRpb24oZmFsc2UpLAorICAgICAg
Y3JlYXRlQ29udGV4dE5vRXJyb3IoZmFsc2UpLAorICAgICAgc3RyZWFtKGZhbHNlKSwKKyAgICAg
IHN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlKGZhbHNlKSwKKyAgICAgIHN0cmVhbUNvbnN1bWVyR0xU
ZXh0dXJlWVVWKGZhbHNlKSwKKyAgICAgIHN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoZmFs
c2UpCiB7CiB9CiAKQEAgLTQ5MywxNSArNjQ5LDM0IEBACiB7CiAgICAgc3RkOjp2ZWN0b3I8c3Rk
OjpzdHJpbmc+IGV4dGVuc2lvblN0cmluZ3M7CiAKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAg
ICAgLy8gICAgICAgICAgICAgICAgICAgfCBFeHRlbnNpb24gbmFtZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgU3VwcG9ydGVkIGZsYWcgICAgICAgICAgICAgICAgfCBPdXRwdXQg
dmVjdG9yICAgfAogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9jcmVhdGVfY29u
dGV4dF9yb2J1c3RuZXNzIiwgICAgICAgICAgICAgY3JlYXRlQ29udGV4dFJvYnVzdG5lc3MsICAg
ICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xf
QU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyIiwgICAgICBkM2RTaGFyZUhhbmRs
ZUNsaWVudEJ1ZmZlciwgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZSIs
IHN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhhbmRsZSwgJmV4dGVuc2lvblN0cmluZ3MpOwogICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3F1ZXJ5X3N1cmZhY2VfcG9pbnRlciIs
ICAgICAgICAgICAgICAgcXVlcnlTdXJmYWNlUG9pbnRlciwgICAgICAgICAgICAmZXh0ZW5zaW9u
U3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfd2luZG93X2Zp
eGVkX3NpemUiLCAgICAgICAgICAgICAgICAgICB3aW5kb3dGaXhlZFNpemUsICAgICAgICAgICAg
ICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9B
TkdMRV9rZXllZF9tdXRleCIsICAgICAgICAgICAgICAgICAgICAgICAgIGtleWVkTXV0ZXgsICAg
ICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3N1cmZhY2Vfb3JpZW50YXRpb24iLCAgICAgICAgICAgICAgICAg
c3VyZmFjZU9yaWVudGF0aW9uLCAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZGlyZWN0X2NvbXBvc2l0aW9uIiwgICAg
ICAgICAgICAgICAgICBkaXJlY3RDb21wb3NpdGlvbiwgICAgICAgICAgICAgICZleHRlbnNpb25T
dHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9OVl9wb3N0X3N1Yl9idWZm
ZXIiLCAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RTdWJCdWZmZXIsICAgICAgICAgICAgICAg
ICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tI
Ul9jcmVhdGVfY29udGV4dCIsICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udGV4dCwg
ICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJFR0xfRVhUX2RldmljZV9xdWVyeSIsICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VRdWVyeSwgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfaW1hZ2UiLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGltYWdlLCAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9pbWFnZV9iYXNlIiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCYXNlLCAgICAgICAgICAgICAgICAgICAg
ICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hS
X2ltYWdlX3BpeG1hcCIsICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVBpeG1hcCwgICAg
ICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIsICAgICAgICAgICAgICAgICAgIGds
VGV4dHVyZTJESW1hZ2UsICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiLCAg
ICAgICAgICAgICAgZ2xUZXh0dXJlQ3ViZW1hcEltYWdlLCAgICAgICAgICAmZXh0ZW5zaW9uU3Ry
aW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hSX2dsX3RleHR1cmVfM0Rf
aW1hZ2UiLCAgICAgICAgICAgICAgICAgICBnbFRleHR1cmUzREltYWdlLCAgICAgICAgICAgICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJf
Z2xfcmVuZGVyYnVmZmVyX2ltYWdlIiwgICAgICAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVySW1h
Z2UsICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0tIUl9nZXRfYWxsX3Byb2NfYWRkcmVzc2VzIiwgICAgICAgICAgICAgICAgZ2V0
QWxsUHJvY0FkZHJlc3NlcywgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfS0hSX3N0cmVhbSIsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJlYW0sICAgICAgICAgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfc3RyZWFtX2NvbnN1bWVy
X2dsdGV4dHVyZSIsICAgICAgICAgICAgIHN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlLCAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX05WX3N0
cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2IiwgICAgICAgICAgc3RyZWFtQ29uc3VtZXJHTFRl
eHR1cmVZVVYsICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJFR0xfQU5HTEVfZmxleGlibGVfc3VyZmFjZV9jb21wYXRpYmlsaXR5IiwgICAgICBmbGV4
aWJsZVN1cmZhY2VDb21wYXRpYmlsaXR5LCAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICAvLyBU
T0RPKGptYWRpbGwpOiBFbmFibGUgdGhpcyB3aGVuIGNvbXBsZXRlLgorICAgIC8vSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJLSFJfY3JlYXRlX2NvbnRleHRfbm9fZXJyb3IiLCAgICAgICAgICAgICAg
ICAgICBjcmVhdGVDb250ZXh0Tm9FcnJvciwgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsK
KyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAogICAgIHJldHVybiBleHRlbnNpb25TdHJpbmdzOwog
fQpAQCAtNTI0LDkgKzY5OSwxNSBAQAogQ2xpZW50RXh0ZW5zaW9uczo6Q2xpZW50RXh0ZW5zaW9u
cygpCiAgICAgOiBjbGllbnRFeHRlbnNpb25zKGZhbHNlKSwKICAgICAgIHBsYXRmb3JtQmFzZShm
YWxzZSksCisgICAgICBwbGF0Zm9ybURldmljZShmYWxzZSksCiAgICAgICBwbGF0Zm9ybUFOR0xF
KGZhbHNlKSwKICAgICAgIHBsYXRmb3JtQU5HTEVEM0QoZmFsc2UpLAotICAgICAgcGxhdGZvcm1B
TkdMRU9wZW5HTChmYWxzZSkKKyAgICAgIHBsYXRmb3JtQU5HTEVPcGVuR0woZmFsc2UpLAorICAg
ICAgZGV2aWNlQ3JlYXRpb24oZmFsc2UpLAorICAgICAgZGV2aWNlQ3JlYXRpb25EM0QxMShmYWxz
ZSksCisgICAgICB4MTFWaXN1YWwoZmFsc2UpLAorICAgICAgZXhwZXJpbWVudGFsUHJlc2VudFBh
dGgoZmFsc2UpLAorICAgICAgY2xpZW50R2V0QWxsUHJvY0FkZHJlc3NlcyhmYWxzZSkKIHsKIH0K
IApAQCAtNTM0LDEyICs3MTUsMjAgQEAKIHsKICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4g
ZXh0ZW5zaW9uU3RyaW5nczsKIAotICAgIC8vICAgICAgICAgICAgICAgICAgIHwgRXh0ZW5zaW9u
IG5hbWUgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQgZmxhZyAgICAgfCBPdXRwdXQgdmVj
dG9yICAgfAotICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9jbGllbnRfZXh0ZW5z
aW9ucyIsICAgICAgIGNsaWVudEV4dGVuc2lvbnMsICAgICZleHRlbnNpb25TdHJpbmdzKTsKLSAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9FWFRfcGxhdGZvcm1fYmFzZSIsICAgICAgICAg
ICBwbGF0Zm9ybUJhc2UsICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7Ci0gICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGUiLCAgICAgICAgcGxhdGZvcm1B
TkdMRSwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwotICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIsICAgIHBsYXRmb3JtQU5HTEVEM0QsICAg
ICZleHRlbnNpb25TdHJpbmdzKTsKLSAgICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdM
RV9wbGF0Zm9ybV9hbmdsZV9vcGVuZ2wiLCBwbGF0Zm9ybUFOR0xFT3BlbkdMLCAmZXh0ZW5zaW9u
U3RyaW5ncyk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIC8vICAgICAgICAgICAgICAg
ICAgIHwgRXh0ZW5zaW9uIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdXBwb3J0ZWQg
ZmxhZyAgICAgICAgICAgfCBPdXRwdXQgdmVjdG9yICAgfAorICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0VYVF9jbGllbnRfZXh0ZW5zaW9ucyIsICAgICAgICAgICAgIGNsaWVudEV4dGVu
c2lvbnMsICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNpb25T
dHJpbmcoIkVHTF9FWFRfcGxhdGZvcm1fYmFzZSIsICAgICAgICAgICAgICAgICBwbGF0Zm9ybUJh
c2UsICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJFR0xfRVhUX3BsYXRmb3JtX2RldmljZSIsICAgICAgICAgICAgICAgcGxhdGZvcm1E
ZXZpY2UsICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlIiwgICAgICAgICAgICAgIHBsYXRmb3Jt
QU5HTEUsICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiLCAgICAgICAgICBwbGF0Zm9y
bUFOR0xFRDNELCAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfb3BlbmdsIiwgICAgICAgcGxhdGZv
cm1BTkdMRU9wZW5HTCwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbiIsICAgICAgICAgICAgIGRldmlj
ZUNyZWF0aW9uLCAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkVHTF9BTkdMRV9kZXZpY2VfY3JlYXRpb25fZDNkMTEiLCAgICAgICBkZXZp
Y2VDcmVhdGlvbkQzRDExLCAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfeDExX3Zpc3VhbCIsICAgICAgICAgICAgICAgICAgeDEx
VmlzdWFsLCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2V4cGVyaW1lbnRhbF9wcmVzZW50X3BhdGgiLCAgIGV4
cGVyaW1lbnRhbFByZXNlbnRQYXRoLCAgICZleHRlbnNpb25TdHJpbmdzKTsKKyAgICBJbnNlcnRF
eHRlbnNpb25TdHJpbmcoIkVHTF9LSFJfY2xpZW50X2dldF9hbGxfcHJvY19hZGRyZXNzZXMiLCBj
bGllbnRHZXRBbGxQcm9jQWRkcmVzc2VzLCAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgLy8gY2xh
bmctZm9ybWF0IG9uCiAKICAgICByZXR1cm4gZXh0ZW5zaW9uU3RyaW5nczsKIH0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNzMsMTQgKzczLDE5IEBACiAKICAgICAvLyBTZXQgYWxsIHRleHR1cmUg
cmVsYXRlZCBleHRlbnNpb24gc3VwcG9ydCBiYXNlZCBvbiB0aGUgc3VwcG9ydGVkIHRleHR1cmVz
LgogICAgIC8vIERldGVybWluZXMgc3VwcG9ydCBmb3I6CisgICAgLy8gR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsCiAgICAgLy8gR0xfT0VTX3JnYjhfcmdiYTgKICAgICAvLyBHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgKKyAgICAvLyBHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxv
YXQsCiAgICAgLy8gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCwgR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdF9saW5lYXIKICAgICAvLyBHTF9PRVNfdGV4dHVyZV9mbG9hdCwgR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyCiAgICAgLy8gR0xfRVhUX3RleHR1cmVfcmcKLSAgICAvLyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxLCBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4
dDMsIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NQorICAgIC8vIEdMX0VYVF90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDEsIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MywK
KyAgICAvLyBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUKKyAgICAvLyBHTF9LSFJf
dGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciwgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19sZHIKKyAgICAvLyBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQogICAg
IC8vIEdMX0VYVF9zUkdCCi0gICAgLy8gR0xfQU5HTEVfZGVwdGhfdGV4dHVyZQorICAgIC8vIEdM
X0FOR0xFX2RlcHRoX3RleHR1cmUsIEdMX09FU19kZXB0aDMyCiAgICAgLy8gR0xfRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdAogICAgIHZvaWQgc2V0VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQoY29uc3Qg
VGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzKTsKIApAQCAtMTEzLDYgKzExOCwxMSBAQAogICAg
IGJvb2wgbWFwQnVmZmVyOwogICAgIGJvb2wgbWFwQnVmZmVyUmFuZ2U7CiAKKyAgICAvLyBHTF9F
WFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQKKyAgICAvLyBUb2dldGhlciB3aXRoIEdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQgaW4gYSBHTEVTIDIuMCBjb250ZXh0LCBpbXBsaWVzIHRoYXQgaGFs
Zi1mbG9hdAorICAgIC8vIHRleHR1cmVzIGFyZSByZW5kZXJhYmxlLgorICAgIGJvb2wgY29sb3JC
dWZmZXJIYWxmRmxvYXQ7CisKICAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IGFuZCBH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhcgogICAgIC8vIEltcGxpZXMgdGhhdCBUZXh0
dXJlQ2FwcyBmb3IgR0xfUkdCMTZGLCBHTF9SR0JBMTZGLCBHTF9BTFBIQTMyRl9FWFQsIEdMX0xV
TUlOQU5DRTMyRl9FWFQgYW5kCiAgICAgLy8gR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCBleGlz
dApAQCAtMTM3LDYgKzE0NywxNiBAQAogICAgIGJvb2wgdGV4dHVyZUNvbXByZXNzaW9uRFhUMzsK
ICAgICBib29sIHRleHR1cmVDb21wcmVzc2lvbkRYVDU7CiAKKyAgICAvLyBHTF9LSFJfdGV4dHVy
ZV9jb21wcmVzc2lvbl9hc3RjX2hkcgorICAgIGJvb2wgdGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hE
UjsKKworICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfbGRyCisgICAgYm9v
bCB0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSOworCisgICAgLy8gR0xfT0VTX2NvbXByZXNzZWRf
RVRDMV9SR0I4X3RleHR1cmUKKyAgICAvLyBJbXBsaWVzIHRoYXQgVGV4dHVyZUNhcHMgZm9yIEdM
X0VUQzFfUkdCOF9PRVMgZXhpc3QKKyAgICBib29sIGNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmU7
CisKICAgICAvLyBHTF9FWFRfc1JHQgogICAgIC8vIEltcGxpZXMgdGhhdCBUZXh0dXJlQ2FwcyBm
b3IgR0xfU1JHQjhfQUxQSEE4IGFuZCBHTF9TUkdCOCBleGlzdAogICAgIC8vIFRPRE86IERvbid0
IGFkdmVydGlzZSB0aGlzIGV4dGVuc2lvbiBpbiBFUzMKQEAgLTE0NSw2ICsxNjUsMTAgQEAKICAg
ICAvLyBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlCiAgICAgYm9vbCBkZXB0aFRleHR1cmVzOwogCisg
ICAgLy8gR0xfT0VTX2RlcHRoMzIKKyAgICAvLyBBbGxvd3MgREVQVEhfQ09NUE9ORU5UMzJfT0VT
IGFzIGEgdmFsaWQgUmVuZGVyYnVmZmVyIGZvcm1hdC4KKyAgICBib29sIGRlcHRoMzI7CisKICAg
ICAvLyBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlCiAgICAgYm9vbCB0ZXh0dXJlU3RvcmFnZTsKIApA
QCAtMTY3LDYgKzE5MSwxMSBAQAogICAgIC8vIEdMX0FOR0xFX3RpbWVyX3F1ZXJ5CiAgICAgYm9v
bCB0aW1lclF1ZXJ5OwogCisgICAgLy8gR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5CisgICAg
Ym9vbCBkaXNqb2ludFRpbWVyUXVlcnk7CisgICAgR0x1aW50IHF1ZXJ5Q291bnRlckJpdHNUaW1l
RWxhcHNlZDsKKyAgICBHTHVpbnQgcXVlcnlDb3VudGVyQml0c1RpbWVzdGFtcDsKKwogICAgIC8v
IEdMX0VYVF9yb2J1c3RuZXNzCiAgICAgYm9vbCByb2J1c3RuZXNzOwogCkBAIC0yMTIsMTIgKzI0
MSw3NiBAQAogICAgIC8vIEdMX09FU19mYm9fcmVuZGVyX21pcG1hcAogICAgIGJvb2wgZmJvUmVu
ZGVyTWlwbWFwOwogCisgICAgLy8gR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyAgICBib29s
IGRpc2NhcmRGcmFtZWJ1ZmZlcjsKKworICAgIC8vIEVYVF9kZWJ1Z19tYXJrZXIKKyAgICBib29s
IGRlYnVnTWFya2VyOworCisgICAgLy8gR0xfT0VTX0VHTF9pbWFnZQorICAgIGJvb2wgZWdsSW1h
Z2U7CisKKyAgICAvLyBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsCisgICAgYm9vbCBlZ2xJbWFn
ZUV4dGVybmFsOworCisgICAgLy8gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMworICAg
IGJvb2wgZWdsSW1hZ2VFeHRlcm5hbEVzc2wzOworCisgICAgLy8gTlZfRUdMX3N0cmVhbV9jb25z
dW1lcl9leHRlcm5hbAorICAgIGJvb2wgZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbDsKKworICAg
IC8vIEVYVF91bnBhY2tfc3ViaW1hZ2UKKyAgICBib29sIHVucGFja1N1YmltYWdlOworCisgICAg
Ly8gTlZfcGFja19zdWJpbWFnZQorICAgIGJvb2wgcGFja1N1YmltYWdlOworCisgICAgLy8gR0xf
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyAgICBib29sIHZlcnRleEFycmF5T2JqZWN0OworCisg
ICAgLy8gR0xfS0hSX2RlYnVnCisgICAgYm9vbCBkZWJ1ZzsKKyAgICBHTHVpbnQgbWF4RGVidWdN
ZXNzYWdlTGVuZ3RoOworICAgIEdMdWludCBtYXhEZWJ1Z0xvZ2dlZE1lc3NhZ2VzOworICAgIEdM
dWludCBtYXhEZWJ1Z0dyb3VwU3RhY2tEZXB0aDsKKyAgICBHTHVpbnQgbWF4TGFiZWxMZW5ndGg7
CisKKyAgICAvLyBLSFJfbm9fZXJyb3IKKyAgICBib29sIG5vRXJyb3I7CisKKyAgICAvLyBHTF9B
TkdMRV9sb3NzeV9ldGNfZGVjb2RlCisgICAgYm9vbCBsb3NzeUVUQ0RlY29kZTsKKwogICAgIC8v
IEVTMyBFeHRlbnNpb24gc3VwcG9ydAogCiAgICAgLy8gR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9h
dAogICAgIGJvb2wgY29sb3JCdWZmZXJGbG9hdDsKIH07CiAKK3N0cnVjdCBMaW1pdGF0aW9ucwor
eworICAgIExpbWl0YXRpb25zKCk7CisKKyAgICAvLyBSZW5kZXJlciBkb2Vzbid0IHN1cHBvcnQg
Z2xfRnJvbnRGYWNpbmcgaW4gZnJhZ21lbnQgc2hhZGVycworICAgIGJvb2wgbm9Gcm9udEZhY2lu
Z1N1cHBvcnQ7CisKKyAgICAvLyBSZW5kZXJlciBkb2Vzbid0IHN1cHBvcnQgR0xfU0FNUExFX0FM
UEhBX1RPX0NPVkVSQUdFCisgICAgYm9vbCBub1NhbXBsZUFscGhhVG9Db3ZlcmFnZVN1cHBvcnQ7
CisKKyAgICAvLyBJbiBnbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSwgYXR0cmlidXRlIHplcm8g
bXVzdCBoYXZlIGEgemVybyBkaXZpc29yCisgICAgYm9vbCBhdHRyaWJ1dGVaZXJvUmVxdWlyZXNa
ZXJvRGl2aXNvckluRVhUOworCisgICAgLy8gVW5hYmxlIHRvIHN1cHBvcnQgZGlmZmVyZW50IHZh
bHVlcyBmb3IgZnJvbnQgYW5kIGJhY2sgZmFjZXMgZm9yIHN0ZW5jaWwgcmVmcyBhbmQgbWFza3MK
KyAgICBib29sIG5vU2VwYXJhdGVTdGVuY2lsUmVmc0FuZE1hc2tzOworCisgICAgLy8gUmVuZGVy
ZXIgZG9lc24ndCBzdXBwb3J0IG5vbi1jb25zdGFudCBpbmRleGluZyBsb29wcyBpbiBmcmFnbWVu
dCBzaGFkZXIKKyAgICBib29sIHNoYWRlcnNSZXF1aXJlSW5kZXhlZExvb3BWYWxpZGF0aW9uOwor
CisgICAgLy8gUmVuZGVyZXIgZG9lc24ndCBzdXBwb3J0IFNpbXVsdGFuZW91cyB1c2Ugb2YgR0xf
Q09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBCisgICAgLy8gYW5kIEdM
X0NPTlNUQU5UX0NPTE9SL0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiBibGVuZCBmdW5jdGlv
bnMuCisgICAgYm9vbCBub1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVu
YzsKK307CisKIHN0cnVjdCBUeXBlUHJlY2lzaW9uCiB7CiAgICAgVHlwZVByZWNpc2lvbigpOwpA
QCAtMzQ1LDYgKzQzOCwxMiBAQAogICAgIC8vIEVHTF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZQog
ICAgIGJvb2wgd2luZG93Rml4ZWRTaXplOwogCisgICAgLy8gRUdMX0FOR0xFX2tleWVkX211dGV4
CisgICAgYm9vbCBrZXllZE11dGV4OworCisgICAgLy8gRUdMX0FOR0xFX3N1cmZhY2Vfb3JpZW50
YXRpb24KKyAgICBib29sIHN1cmZhY2VPcmllbnRhdGlvbjsKKwogICAgIC8vIEVHTF9OVl9wb3N0
X3N1Yl9idWZmZXIKICAgICBib29sIHBvc3RTdWJCdWZmZXI7CiAKQEAgLTM1Myw2ICs0NTIsNTEg
QEAKIAogICAgIC8vIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5CiAgICAgYm9vbCBkZXZpY2VRdWVyeTsK
KworICAgIC8vIEVHTF9LSFJfaW1hZ2UKKyAgICBib29sIGltYWdlOworCisgICAgLy8gRUdMX0tI
Ul9pbWFnZV9iYXNlCisgICAgYm9vbCBpbWFnZUJhc2U7CisKKyAgICAvLyBFR0xfS0hSX2ltYWdl
X3BpeG1hcAorICAgIGJvb2wgaW1hZ2VQaXhtYXA7CisKKyAgICAvLyBFR0xfS0hSX2dsX3RleHR1
cmVfMkRfaW1hZ2UKKyAgICBib29sIGdsVGV4dHVyZTJESW1hZ2U7CisKKyAgICAvLyBFR0xfS0hS
X2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZQorICAgIGJvb2wgZ2xUZXh0dXJlQ3ViZW1hcEltYWdl
OworCisgICAgLy8gRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlCisgICAgYm9vbCBnbFRleHR1
cmUzREltYWdlOworCisgICAgLy8gRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UKKyAgICBi
b29sIGdsUmVuZGVyYnVmZmVySW1hZ2U7CisKKyAgICAvLyBFR0xfS0hSX2dldF9hbGxfcHJvY19h
ZGRyZXNzZXMKKyAgICBib29sIGdldEFsbFByb2NBZGRyZXNzZXM7CisKKyAgICAvLyBFR0xfQU5H
TEVfZmxleGlibGVfc3VyZmFjZV9jb21wYXRpYmlsaXR5CisgICAgYm9vbCBmbGV4aWJsZVN1cmZh
Y2VDb21wYXRpYmlsaXR5OworCisgICAgLy8gRUdMX0FOR0xFX2RpcmVjdF9jb21wb3NpdGlvbgor
ICAgIGJvb2wgZGlyZWN0Q29tcG9zaXRpb247CisKKyAgICAvLyBLSFJfY3JlYXRlX2NvbnRleHRf
bm9fZXJyb3IKKyAgICBib29sIGNyZWF0ZUNvbnRleHROb0Vycm9yOworCisgICAgLy8gRUdMX0tI
Ul9zdHJlYW0KKyAgICBib29sIHN0cmVhbTsKKworICAgIC8vIEVHTF9LSFJfc3RyZWFtX2NvbnN1
bWVyX2dsdGV4dHVyZQorICAgIGJvb2wgc3RyZWFtQ29uc3VtZXJHTFRleHR1cmU7CisKKyAgICAv
LyBFR0xfTlZfc3RyZWFtX2NvbnN1bWVyX2dsdGV4dHVyZV95dXYKKyAgICBib29sIHN0cmVhbUNv
bnN1bWVyR0xUZXh0dXJlWVVWOworCisgICAgLy8gRUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9k
M2RfdGV4dHVyZV9udjEyCisgICAgYm9vbCBzdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyOwog
fTsKIAogc3RydWN0IERldmljZUV4dGVuc2lvbnMKQEAgLTM3OSw2ICs1MjMsOSBAQAogICAgIC8v
IEVHTF9FWFRfcGxhdGZvcm1fYmFzZQogICAgIGJvb2wgcGxhdGZvcm1CYXNlOwogCisgICAgLy8g
RUdMX0VYVF9wbGF0Zm9ybV9kZXZpY2UKKyAgICBib29sIHBsYXRmb3JtRGV2aWNlOworCiAgICAg
Ly8gRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlCiAgICAgYm9vbCBwbGF0Zm9ybUFOR0xFOwogCkBA
IC0zODcsNiArNTM0LDIxIEBACiAKICAgICAvLyBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfb3Bl
bmdsCiAgICAgYm9vbCBwbGF0Zm9ybUFOR0xFT3BlbkdMOworCisgICAgLy8gRUdMX0FOR0xFX2Rl
dmljZV9jcmVhdGlvbgorICAgIGJvb2wgZGV2aWNlQ3JlYXRpb247CisKKyAgICAvLyBFR0xfQU5H
TEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExCisgICAgYm9vbCBkZXZpY2VDcmVhdGlvbkQzRDExOwor
CisgICAgLy8gRUdMX0FOR0xFX3gxMV92aXN1YWwKKyAgICBib29sIHgxMVZpc3VhbDsKKworICAg
IC8vIEVHTF9BTkdMRV9leHBlcmltZW50YWxfcHJlc2VudF9wYXRoCisgICAgYm9vbCBleHBlcmlt
ZW50YWxQcmVzZW50UGF0aDsKKworICAgIC8vIEVHTF9LSFJfY2xpZW50X2dldF9hbGxfcHJvY19h
ZGRyZXNzZXMKKyAgICBib29sIGNsaWVudEdldEFsbFByb2NBZGRyZXNzZXM7CiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxl
ci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Db21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMzIgKzcsMTI4IEBACiAv
LyBDb21waWxlci5jcHA6IGltcGxlbWVudHMgdGhlIGdsOjpDb21waWxlciBjbGFzcy4KIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL0NvbXBpbGVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Q29tcGlsZXJJbXBsLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJbXBs
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaCIKIAogbmFtZXNw
YWNlIGdsCiB7CiAKLUNvbXBpbGVyOjpDb21waWxlcihyeDo6Q29tcGlsZXJJbXBsICppbXBsKQot
ICAgIDogbUNvbXBpbGVyKGltcGwpCituYW1lc3BhY2UKIHsKLSAgICBBU1NFUlQobUNvbXBpbGVy
KTsKKworLy8gR2xvYmFsIGNvdW50IG9mIGFjdGl2ZSBzaGFkZXIgY29tcGlsZXIgaGFuZGxlcy4g
TmVlZGVkIHRvIGtub3cgd2hlbiB0byBjYWxsIFNoSW5pdGlhbGl6ZSBhbmQKKy8vIFNoRmluYWxp
emUuCitzaXplX3QgYWN0aXZlQ29tcGlsZXJIYW5kbGVzID0gMDsKKworfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQorCitDb21waWxlcjo6Q29tcGlsZXIocng6OkltcGxGYWN0b3J5ICppbXBsRmFj
dG9yeSwgY29uc3QgZ2w6OkRhdGEgJmRhdGEpCisgICAgOiBtSW1wbGVtZW50YXRpb24oaW1wbEZh
Y3RvcnktPmNyZWF0ZUNvbXBpbGVyKCkpLAorICAgICAgbVNwZWMoZGF0YS5jbGllbnRWZXJzaW9u
ID4gMiA/IFNIX0dMRVMzX1NQRUMgOiBTSF9HTEVTMl9TUEVDKSwKKyAgICAgIG1PdXRwdXRUeXBl
KG1JbXBsZW1lbnRhdGlvbi0+Z2V0VHJhbnNsYXRvck91dHB1dFR5cGUoKSksCisgICAgICBtUmVz
b3VyY2VzKCksCisgICAgICBtRnJhZ21lbnRDb21waWxlcihudWxscHRyKSwKKyAgICAgIG1WZXJ0
ZXhDb21waWxlcihudWxscHRyKQoreworICAgIEFTU0VSVChkYXRhLmNsaWVudFZlcnNpb24gPT0g
MiB8fCBkYXRhLmNsaWVudFZlcnNpb24gPT0gMyk7CisKKyAgICBjb25zdCBnbDo6Q2FwcyAmY2Fw
cyAgICAgICAgICAgICA9ICpkYXRhLmNhcHM7CisgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmV4
dGVuc2lvbnMgPSAqZGF0YS5leHRlbnNpb25zOworCisgICAgU2hJbml0QnVpbHRJblJlc291cmNl
cygmbVJlc291cmNlcyk7CisgICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzICAgICAgICAg
ICAgID0gY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOworICAgIG1SZXNvdXJjZXMuTWF4VmVydGV4
VW5pZm9ybVZlY3RvcnMgICAgICA9IGNhcHMubWF4VmVydGV4VW5pZm9ybVZlY3RvcnM7CisgICAg
bVJlc291cmNlcy5NYXhWYXJ5aW5nVmVjdG9ycyAgICAgICAgICAgID0gY2Fwcy5tYXhWYXJ5aW5n
VmVjdG9yczsKKyAgICBtUmVzb3VyY2VzLk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzICAgPSBj
YXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzOworICAgIG1SZXNvdXJjZXMuTWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyA9IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsK
KyAgICBtUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzICAgICAgICAgPSBjYXBzLm1heFRl
eHR1cmVJbWFnZVVuaXRzOworICAgIG1SZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
cyAgICA9IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yczsKKyAgICBtUmVzb3VyY2VzLk1h
eERyYXdCdWZmZXJzICAgICAgICAgICAgICAgPSBjYXBzLm1heERyYXdCdWZmZXJzOworICAgIG1S
ZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICAgICA9IGV4dGVuc2lvbnMuc3RhbmRh
cmREZXJpdmF0aXZlczsKKyAgICBtUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgICAgICAgICAg
ICAgPSBleHRlbnNpb25zLmRyYXdCdWZmZXJzOworICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCAgICAgICA9IGV4dGVuc2lvbnMuc2hhZGVyVGV4dHVyZUxPRDsKKyAgICAvLyBU
T0RPOiBkaXNhYmxlZCB1bnRpbCB0aGUgZXh0ZW5zaW9uIGlzIGFjdHVhbGx5IHN1cHBvcnRlZC4K
KyAgICBtUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOworICAgIC8vIFRPRE86
IHVzZSBzaGFkZXIgcHJlY2lzaW9uIGNhcHMgdG8gZGV0ZXJtaW5lIGlmIGhpZ2ggcHJlY2lzaW9u
IGlzIHN1cHBvcnRlZD8KKyAgICBtUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDE7
CisgICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCAgICAgICAgPSBleHRlbnNpb25zLmZyYWdE
ZXB0aDsKKworICAgIC8vIEdMU0wgRVMgMy4wIGNvbnN0YW50cworICAgIG1SZXNvdXJjZXMuTWF4
VmVydGV4T3V0cHV0VmVjdG9ycyAgPSBjYXBzLm1heFZlcnRleE91dHB1dENvbXBvbmVudHMgLyA0
OworICAgIG1SZXNvdXJjZXMuTWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMgPSBjYXBzLm1heEZyYWdt
ZW50SW5wdXRDb21wb25lbnRzIC8gNDsKKyAgICBtUmVzb3VyY2VzLk1pblByb2dyYW1UZXhlbE9m
ZnNldCAgID0gY2Fwcy5taW5Qcm9ncmFtVGV4ZWxPZmZzZXQ7CisgICAgbVJlc291cmNlcy5NYXhQ
cm9ncmFtVGV4ZWxPZmZzZXQgICA9IGNhcHMubWF4UHJvZ3JhbVRleGVsT2Zmc2V0OwogfQogCiBD
b21waWxlcjo6fkNvbXBpbGVyKCkKIHsKLSAgICBTYWZlRGVsZXRlKG1Db21waWxlcik7CisgICAg
cmVsZWFzZSgpOworICAgIFNhZmVEZWxldGUobUltcGxlbWVudGF0aW9uKTsKIH0KIAogRXJyb3Ig
Q29tcGlsZXI6OnJlbGVhc2UoKQogewotICAgIHJldHVybiBtQ29tcGlsZXItPnJlbGVhc2UoKTsK
KyAgICBpZiAobUZyYWdtZW50Q29tcGlsZXIpCisgICAgeworICAgICAgICBTaERlc3RydWN0KG1G
cmFnbWVudENvbXBpbGVyKTsKKyAgICAgICAgbUZyYWdtZW50Q29tcGlsZXIgPSBudWxscHRyOwor
CisgICAgICAgIEFTU0VSVChhY3RpdmVDb21waWxlckhhbmRsZXMgPiAwKTsKKyAgICAgICAgYWN0
aXZlQ29tcGlsZXJIYW5kbGVzLS07CisgICAgfQorCisgICAgaWYgKG1WZXJ0ZXhDb21waWxlcikK
KyAgICB7CisgICAgICAgIFNoRGVzdHJ1Y3QobVZlcnRleENvbXBpbGVyKTsKKyAgICAgICAgbVZl
cnRleENvbXBpbGVyID0gbnVsbHB0cjsKKworICAgICAgICBBU1NFUlQoYWN0aXZlQ29tcGlsZXJI
YW5kbGVzID4gMCk7CisgICAgICAgIGFjdGl2ZUNvbXBpbGVySGFuZGxlcy0tOworICAgIH0KKwor
ICAgIGlmIChhY3RpdmVDb21waWxlckhhbmRsZXMgPT0gMCkKKyAgICB7CisgICAgICAgIFNoRmlu
YWxpemUoKTsKKyAgICB9CisKKyAgICBtSW1wbGVtZW50YXRpb24tPnJlbGVhc2UoKTsKKworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1yeDo6Q29tcGlsZXJJbXBsICpD
b21waWxlcjo6Z2V0SW1wbGVtZW50YXRpb24oKQorU2hIYW5kbGUgQ29tcGlsZXI6OmdldENvbXBp
bGVySGFuZGxlKEdMZW51bSB0eXBlKQogewotICAgIHJldHVybiBtQ29tcGlsZXI7CisgICAgU2hI
YW5kbGUgKmNvbXBpbGVyID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICBjb21waWxlciA9ICZtVmVy
dGV4Q29tcGlsZXI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQUdN
RU5UX1NIQURFUjoKKyAgICAgICAgICAgIGNvbXBpbGVyID0gJm1GcmFnbWVudENvbXBpbGVyOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAo
ISgqY29tcGlsZXIpKQorICAgIHsKKyAgICAgICAgaWYgKGFjdGl2ZUNvbXBpbGVySGFuZGxlcyA9
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBTaEluaXRpYWxpemUoKTsKKyAgICAgICAgfQor
CisgICAgICAgICpjb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIodHlwZSwgbVNwZWMsIG1P
dXRwdXRUeXBlLCAmbVJlc291cmNlcyk7CisgICAgICAgIGFjdGl2ZUNvbXBpbGVySGFuZGxlcysr
OworICAgIH0KKworICAgIHJldHVybiAqY29tcGlsZXI7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFj
ZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbXBpbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bXBpbGVyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Db21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSwyOSArMTEsMzkgQEAK
ICNkZWZpbmUgTElCQU5HTEVfQ09NUElMRVJfSF8KIAogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9y
LmgiCisjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAKIG5hbWVzcGFjZSByeAogewog
Y2xhc3MgQ29tcGlsZXJJbXBsOworY2xhc3MgSW1wbEZhY3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBn
bAogeworc3RydWN0IERhdGE7CiAKLWNsYXNzIENvbXBpbGVyIGZpbmFsCitjbGFzcyBDb21waWxl
ciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
Q29tcGlsZXIocng6OkNvbXBpbGVySW1wbCAqaW1wbCk7CisgICAgQ29tcGlsZXIocng6OkltcGxG
YWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgRGF0YSAmZGF0YSk7CiAgICAgfkNvbXBpbGVyKCk7
CiAKICAgICBFcnJvciByZWxlYXNlKCk7CiAKLSAgICByeDo6Q29tcGlsZXJJbXBsICpnZXRJbXBs
ZW1lbnRhdGlvbigpOworICAgIFNoSGFuZGxlIGdldENvbXBpbGVySGFuZGxlKEdMZW51bSB0eXBl
KTsKKyAgICBTaFNoYWRlck91dHB1dCBnZXRTaGFkZXJPdXRwdXRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbU91dHB1dFR5cGU7IH0KIAogICBwcml2YXRlOgotICAgIHJ4OjpDb21waWxlckltcGwgKm1D
b21waWxlcjsKKyAgICByeDo6Q29tcGlsZXJJbXBsICptSW1wbGVtZW50YXRpb247CisgICAgU2hT
aGFkZXJTcGVjIG1TcGVjOworICAgIFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOworICAgIFNo
QnVpbHRJblJlc291cmNlcyBtUmVzb3VyY2VzOworCisgICAgU2hIYW5kbGUgbUZyYWdtZW50Q29t
cGlsZXI7CisgICAgU2hIYW5kbGUgbVZlcnRleENvbXBpbGVyOwogfTsKIAotfQorfSAgLy8gbmFt
ZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9DT01QSUxFUl9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHAJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNCArNTcsMTUgQEAKICAgICAgIHRyYW5zcGFyZW50
VHlwZShFR0xfTk9ORSksCiAgICAgICB0cmFuc3BhcmVudFJlZFZhbHVlKDApLAogICAgICAgdHJh
bnNwYXJlbnRHcmVlblZhbHVlKDApLAotICAgICAgdHJhbnNwYXJlbnRCbHVlVmFsdWUoMCkKKyAg
ICAgIHRyYW5zcGFyZW50Qmx1ZVZhbHVlKDApLAorICAgICAgb3B0aW1hbE9yaWVudGF0aW9uKDAp
CiB7CiB9CiAKIEVHTGludCBDb25maWdTZXQ6OmFkZChjb25zdCBDb25maWcgJmNvbmZpZykKIHsK
ICAgICAvLyBTZXQgdGhlIGNvbmZpZydzIElEIHRvIGEgc21hbGwgbnVtYmVyIHRoYXQgc3RhcnRz
IGF0IDEgKFtFR0wgMS41XSBzZWN0aW9uIDMuNCkKLSAgICBFR0xpbnQgaWQgPSBzdGF0aWNfY2Fz
dDxFR0xpbnQ+KG1Db25maWdzLnNpemUoKSArIDEpOworICAgIEVHTGludCBpZCA9IHN0YXRpY19j
YXN0PEVHTGludD4obUNvbmZpZ3Muc2l6ZSgpKSArIDE7CiAKICAgICBDb25maWcgY29weUNvbmZp
Zyhjb25maWcpOwogICAgIGNvcHlDb25maWcuY29uZmlnSUQgPSBpZDsKQEAgLTE2Niw4ICsxNjcs
OCBAQAogICAgICAgICAvLyBjb21wb25lbnRzIHRoYXQgYXJlIDAgb3IgZG9uJ3QtY2FyZS4KICAg
ICAgICAgZm9yIChhdXRvIGF0dHJpYkl0ZXIgPSBhdHRyaWJ1dGVNYXAuYmVnaW4oKTsgYXR0cmli
SXRlciAhPSBhdHRyaWJ1dGVNYXAuZW5kKCk7IGF0dHJpYkl0ZXIrKykKICAgICAgICAgewotICAg
ICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZUtleSA9IGF0dHJpYkl0ZXItPmZpcnN0OwotICAgICAg
ICAgICAgRUdMaW50IGF0dHJpYnV0ZVZhbHVlID0gYXR0cmliSXRlci0+c2Vjb25kOworICAgICAg
ICAgICAgRUdMQXR0cmliIGF0dHJpYnV0ZUtleSAgID0gYXR0cmliSXRlci0+Zmlyc3Q7CisgICAg
ICAgICAgICBFR0xBdHRyaWIgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJJdGVyLT5zZWNvbmQ7CiAg
ICAgICAgICAgICBpZiAoYXR0cmlidXRlS2V5ICE9IDAgJiYgYXR0cmlidXRlVmFsdWUgIT0gRUdM
X0RPTlRfQ0FSRSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGF0dHJp
YnV0ZUtleSkKQEAgLTIxNCw4ICsyMTUsOCBAQAogCiAgICAgICAgIGZvciAoYXV0byBhdHRyaWJJ
dGVyID0gYXR0cmlidXRlTWFwLmJlZ2luKCk7IGF0dHJpYkl0ZXIgIT0gYXR0cmlidXRlTWFwLmVu
ZCgpOyBhdHRyaWJJdGVyKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1
dGVLZXkgPSBhdHRyaWJJdGVyLT5maXJzdDsKLSAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGVW
YWx1ZSA9IGF0dHJpYkl0ZXItPnNlY29uZDsKKyAgICAgICAgICAgIEVHTEF0dHJpYiBhdHRyaWJ1
dGVLZXkgICA9IGF0dHJpYkl0ZXItPmZpcnN0OworICAgICAgICAgICAgRUdMQXR0cmliIGF0dHJp
YnV0ZVZhbHVlID0gYXR0cmliSXRlci0+c2Vjb25kOwogCiAgICAgICAgICAgICBzd2l0Y2ggKGF0
dHJpYnV0ZUtleSkKICAgICAgICAgICAgIHsKQEAgLTI1MSw2ICsyNTIsOSBAQAogICAgICAgICAg
ICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9XSURUSDogICAgICAgICBtYXRjaCA9IGNvbmZpZy5t
YXhQQnVmZmVyV2lkdGggPj0gYXR0cmlidXRlVmFsdWU7ICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9IRUlHSFQ6ICAgICAgICBtYXRj
aCA9IGNvbmZpZy5tYXhQQnVmZmVySGVpZ2h0ID49IGF0dHJpYnV0ZVZhbHVlOyAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFM6
ICAgICAgICBtYXRjaCA9IGNvbmZpZy5tYXhQQnVmZmVyUGl4ZWxzID49IGF0dHJpYnV0ZVZhbHVl
OyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9PUFRJTUFM
X1NVUkZBQ0VfT1JJRU5UQVRJT05fQU5HTEU6CisgICAgICAgICAgICAgICAgICBtYXRjaCA9IGNv
bmZpZy5vcHRpbWFsT3JpZW50YXRpb24gPT0gYXR0cmlidXRlVmFsdWU7CisgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAgICAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Nv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db25maWcuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiAg
ICAgRUdMaW50IHRyYW5zcGFyZW50UmVkVmFsdWU7ICAgICAvLyBUcmFuc3BhcmVudCByZWQgdmFs
dWUKICAgICBFR0xpbnQgdHJhbnNwYXJlbnRHcmVlblZhbHVlOyAgIC8vIFRyYW5zcGFyZW50IGdy
ZWVuIHZhbHVlCiAgICAgRUdMaW50IHRyYW5zcGFyZW50Qmx1ZVZhbHVlOyAgICAvLyBUcmFuc3Bh
cmVudCBibHVlIHZhbHVlCisgICAgRUdMaW50IG9wdGltYWxPcmllbnRhdGlvbjsgICAgICAvLyBP
cHRpbWFsIHdpbmRvdyBzdXJmYWNlIG9yaWVudGF0aW9uCiB9OwogCiBjbGFzcyBDb25maWdTZXQK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWdfdW5pdHRl
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db25maWdfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTksNyArNTksNyBAQAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKICAgICB7CiAgICAgICAgIGVnbDo6Q29uZmlnIGNvbmZpZyA9IEdlbmVyYXRlR2VuZXJpY0Nv
bmZpZygpOwotICAgICAgICBjb25maWcuc2FtcGxlcyA9IGk7CisgICAgICAgIGNvbmZpZy5zYW1w
bGVzID0gc3RhdGljX2Nhc3Q8RUdMaW50PihpKTsKICAgICAgICAgY29uZmlncy5wdXNoX2JhY2so
Y29uZmlnKTsKICAgICB9CiAKQEAgLTE0Nyw3ICsxNDcsNyBAQAogCiAgICAgICAgICAgICAvLyBT
ZXQgdGhlIHRlc3RlZCBtZW1iZXIgb2YgdGhpcyBjb25maWcgdG8gaSBzbyBpdCByYW5nZXMgZnJv
bQogICAgICAgICAgICAgLy8gWzEsIGNvbmZpZ3NQZXJUeXBlXQotICAgICAgICAgICAgY29uZmln
LioodGVzdE1lbWJlcnNbaV0uQ29uZmlnTWVtYmVyKSA9IGogKyAxOworICAgICAgICAgICAgY29u
ZmlnLioodGVzdE1lbWJlcnNbaV0uQ29uZmlnTWVtYmVyKSA9IHN0YXRpY19jYXN0PEVHTGludD4o
aikgKyAxOwogCiAgICAgICAgICAgICBzZXQuYWRkKGNvbmZpZyk7CiAgICAgICAgIH0KQEAgLTE1
OCw3ICsxNTgsNyBAQAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKHRlc3RN
ZW1iZXJzKTsgaSsrKQogICAgIHsKICAgICAgICAgLy8gU3RhcnQgd2l0aCBhIGZpbHRlciBvZiAx
IHRvIG5vdCBncmFiIHRoZSBvdGhlciBtZW1iZXJzCi0gICAgICAgIGZvciAoc2l6ZV90IGogPSAw
OyBqIDwgY29uZmlnc1BlclR5cGU7IGorKykKKyAgICAgICAgZm9yIChFR0xpbnQgaiA9IDA7IGog
PCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGNvbmZpZ3NQZXJUeXBlKTsgaisrKQogICAgICAgICB7CiAg
ICAgICAgICAgICBlZ2w6OkF0dHJpYnV0ZU1hcCBmaWx0ZXI7CiAgICAgICAgICAgICBmaWx0ZXIu
aW5zZXJ0KHRlc3RNZW1iZXJzW2ldLk5hbWUsIGogKyAxKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsMjMgKzMzLDEyNSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3Zh
bGlkYXRpb25FUy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCiAK
K25hbWVzcGFjZQoreworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2dsOjpFcnJvciBHZXRRdWVy
eU9iamVjdFBhcmFtZXRlcihnbDo6Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0g
cG5hbWUsIFQgKnBhcmFtcykKK3sKKyAgICBnbDo6UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4
dC0+Z2V0UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05FKTsKKyAgICBBU1NFUlQocXVlcnlPYmplY3Qg
IT0gbnVsbHB0cik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9RVUVSWV9SRVNVTFRfRVhUOgorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5nZXRS
ZXN1bHQocGFyYW1zKTsKKyAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VY
VDoKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbCBhdmFpbGFibGU7CisgICAgICAgICAgICBn
bDo6RXJyb3IgZXJyb3IgPSBxdWVyeU9iamVjdC0+aXNSZXN1bHRBdmFpbGFibGUoJmF2YWlsYWJs
ZSk7CisgICAgICAgICAgICBpZiAoIWVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8VD4oYXZhaWxhYmxlID8gR0xfVFJV
RSA6IEdMX0ZBTFNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsK
KyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJVbnJl
YWNoYWJsZSBFcnJvciIpOworICAgIH0KK30KKwordm9pZCBNYXJrVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJVc2FnZShnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrKQorewor
ICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFjayAmJiB0cmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUo
KSAmJiAhdHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkpCisgICAgeworICAgICAgICBmb3Ig
KHNpemVfdCB0ZkJ1ZmZlckluZGV4ID0gMDsgdGZCdWZmZXJJbmRleCA8IHRyYW5zZm9ybUZlZWRi
YWNrLT5nZXRJbmRleGVkQnVmZmVyQ291bnQoKTsKKyAgICAgICAgICAgICB0ZkJ1ZmZlckluZGV4
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGds
OjpCdWZmZXI+ICZidWZmZXIgPQorICAgICAgICAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrLT5n
ZXRJbmRleGVkQnVmZmVyKHRmQnVmZmVySW5kZXgpOworICAgICAgICAgICAgaWYgKGJ1ZmZlci5n
ZXQoKSAhPSBudWxscHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+
b25UcmFuc2Zvcm1GZWVkYmFjaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
fQorCisvLyBBdHRyaWJ1dGUgbWFwIHF1ZXJpZXMuCitFR0xpbnQgR2V0Q2xpZW50VmVyc2lvbihj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMSkpOwor
fQorCitHTGVudW0gR2V0UmVzZXRTdHJhdGVneShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKK3sKKyAgICBFR0xBdHRyaWIgYXR0cmliID0gYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRf
T1BFTkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUKTsKKyAgICBz
d2l0Y2ggKGF0dHJpYikKKyAgICB7CisgICAgICAgIGNhc2UgRUdMX05PX1JFU0VUX05PVElGSUNB
VElPTjoKKyAgICAgICAgICAgIHJldHVybiBHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUOwor
ICAgICAgICBjYXNlIEVHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVQ6CisgICAgICAgICAgICByZXR1
cm4gR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICB9
Cit9CisKK2Jvb2wgR2V0Um9idXN0QWNjZXNzKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKQoreworICAgIHJldHVybiAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVT
VF9BQ0NFU1NfRVhULCBFR0xfRkFMU0UpID09IEVHTF9UUlVFKTsKK30KKworYm9vbCBHZXREZWJ1
Zyhjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1cm4gKGF0dHJp
YnMuZ2V0KEVHTF9DT05URVhUX09QRU5HTF9ERUJVRywgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7
Cit9CisKK2Jvb2wgR2V0Tm9FcnJvcihjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
K3sKKyAgICByZXR1cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09QRU5HTF9OT19FUlJPUl9L
SFIsIEVHTF9GQUxTRSkgPT0gRUdMX1RSVUUpOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKIG5hbWVzcGFjZSBnbAogewogCi1Db250ZXh0OjpDb250ZXh0KGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIGludCBjbGllbnRWZXJzaW9uLCBjb25zdCBDb250ZXh0ICpzaGFyZUNvbnRl
eHQsIHJ4OjpSZW5kZXJlciAqcmVuZGVyZXIsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVz
dEFjY2VzcykKLSAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAgICBtRGF0YShjbGllbnRW
ZXJzaW9uLCBtU3RhdGUsIG1DYXBzLCBtVGV4dHVyZUNhcHMsIG1FeHRlbnNpb25zLCBudWxscHRy
KQorQ29udGV4dDo6Q29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAg
ICAgICAgICBjb25zdCBDb250ZXh0ICpzaGFyZUNvbnRleHQsCisgICAgICAgICAgICAgICAgIHJ4
OjpSZW5kZXJlciAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQorICAgIDogVmFsaWRhdGlvbkNvbnRleHQoR2V0Q2xpZW50VmVyc2lv
bihhdHRyaWJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1DYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmVDYXBz
LAorICAgICAgICAgICAgICAgICAgICAgICAgbUV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgbUxpbWl0YXRpb25zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR2V0Tm9FcnJvcihhdHRyaWJzKSksCisgICAgICBtQ29t
cGlsZXIobnVsbHB0ciksCisgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAorICAgICAgbUNsaWVu
dFZlcnNpb24oR2V0Q2xpZW50VmVyc2lvbihhdHRyaWJzKSksCisgICAgICBtQ29uZmlnKGNvbmZp
ZyksCisgICAgICBtQ2xpZW50VHlwZShFR0xfT1BFTkdMX0VTX0FQSSksCisgICAgICBtSGFzQmVl
bkN1cnJlbnQoZmFsc2UpLAorICAgICAgbUNvbnRleHRMb3N0KGZhbHNlKSwKKyAgICAgIG1SZXNl
dFN0YXR1cyhHTF9OT19FUlJPUiksCisgICAgICBtUmVzZXRTdHJhdGVneShHZXRSZXNldFN0cmF0
ZWd5KGF0dHJpYnMpKSwKKyAgICAgIG1Sb2J1c3RBY2Nlc3MoR2V0Um9idXN0QWNjZXNzKGF0dHJp
YnMpKSwKKyAgICAgIG1DdXJyZW50U3VyZmFjZShudWxscHRyKSwKKyAgICAgIG1SZXNvdXJjZU1h
bmFnZXIobnVsbHB0cikKIHsKLSAgICBBU1NFUlQocm9idXN0QWNjZXNzID09IGZhbHNlKTsgICAv
LyBVbmltcGxlbWVudGVkCisgICAgQVNTRVJUKCFtUm9idXN0QWNjZXNzKTsgIC8vIFVuaW1wbGVt
ZW50ZWQKIAotICAgIGluaXRDYXBzKGNsaWVudFZlcnNpb24pOwotICAgIG1TdGF0ZS5pbml0aWFs
aXplKG1DYXBzLCBjbGllbnRWZXJzaW9uKTsKKyAgICBpbml0Q2FwcyhtQ2xpZW50VmVyc2lvbik7
CiAKLSAgICBtQ2xpZW50VmVyc2lvbiA9IGNsaWVudFZlcnNpb247CisgICAgbVN0YXRlLmluaXRp
YWxpemUobUNhcHMsIG1FeHRlbnNpb25zLCBtQ2xpZW50VmVyc2lvbiwgR2V0RGVidWcoYXR0cmli
cykpOwogCi0gICAgbUNvbmZpZ0lEID0gY29uZmlnLT5jb25maWdJRDsKLSAgICBtQ2xpZW50VHlw
ZSA9IEVHTF9PUEVOR0xfRVNfQVBJOwotCiAgICAgbUZlbmNlTlZIYW5kbGVBbGxvY2F0b3Iuc2V0
QmFzZUhhbmRsZSgwKTsKIAogICAgIGlmIChzaGFyZUNvbnRleHQgIT0gTlVMTCkKQEAgLTg4LDE1
ICsxOTAsMTAgQEAKIAogICAgIG1TdGF0ZS5pbml0aWFsaXplWmVyb1RleHR1cmVzKG1aZXJvVGV4
dHVyZXMpOwogCi0gICAgLy8gQWxsb2NhdGUgZGVmYXVsdCBGQk8KLSAgICBtRnJhbWVidWZmZXJN
YXBbMF0gPSBuZXcgRnJhbWVidWZmZXIobUNhcHMsIG1SZW5kZXJlciwgMCk7Ci0KICAgICBiaW5k
VmVydGV4QXJyYXkoMCk7CiAgICAgYmluZEFycmF5QnVmZmVyKDApOwogICAgIGJpbmRFbGVtZW50
QXJyYXlCdWZmZXIoMCk7CiAKLSAgICBiaW5kUmVhZEZyYW1lYnVmZmVyKDApOwotICAgIGJpbmRE
cmF3RnJhbWVidWZmZXIoMCk7CiAgICAgYmluZFJlbmRlcmJ1ZmZlcigwKTsKIAogICAgIGJpbmRH
ZW5lcmljVW5pZm9ybUJ1ZmZlcigwKTsKQEAgLTExMCw1MSArMjA3LDkxIEBACiAgICAgYmluZFBp
eGVsUGFja0J1ZmZlcigwKTsKICAgICBiaW5kUGl4ZWxVbnBhY2tCdWZmZXIoMCk7CiAKLSAgICAv
LyBbT3BlbkdMIEVTIDMuMC4yXSBzZWN0aW9uIDIuMTQuMSBwZyA4NToKLSAgICAvLyBJbiB0aGUg
aW5pdGlhbCBzdGF0ZSwgYSBkZWZhdWx0IHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QgaXMgYm91
bmQgYW5kIHRyZWF0ZWQgYXMKLSAgICAvLyBhIHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3Qgd2l0
aCBhIG5hbWUgb2YgemVyby4gVGhhdCBvYmplY3QgaXMgYm91bmQgYW55IHRpbWUKLSAgICAvLyBC
aW5kVHJhbnNmb3JtRmVlZGJhY2sgaXMgY2FsbGVkIHdpdGggaWQgb2YgemVybwotICAgIG1UcmFu
c2Zvcm1GZWVkYmFja1plcm8uc2V0KG5ldyBUcmFuc2Zvcm1GZWVkYmFjayhtUmVuZGVyZXItPmNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCksIDAsIG1DYXBzKSk7Ci0gICAgYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKDApOworICAgIGlmIChtQ2xpZW50VmVyc2lvbiA+PSAzKQorICAgIHsKKyAgICAgICAg
Ly8gW09wZW5HTCBFUyAzLjAuMl0gc2VjdGlvbiAyLjE0LjEgcGcgODU6CisgICAgICAgIC8vIElu
IHRoZSBpbml0aWFsIHN0YXRlLCBhIGRlZmF1bHQgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdCBp
cyBib3VuZCBhbmQgdHJlYXRlZCBhcworICAgICAgICAvLyBhIHRyYW5zZm9ybSBmZWVkYmFjayBv
YmplY3Qgd2l0aCBhIG5hbWUgb2YgemVyby4gVGhhdCBvYmplY3QgaXMgYm91bmQgYW55IHRpbWUK
KyAgICAgICAgLy8gQmluZFRyYW5zZm9ybUZlZWRiYWNrIGlzIGNhbGxlZCB3aXRoIGlkIG9mIHpl
cm8KKyAgICAgICAgYmluZFRyYW5zZm9ybUZlZWRiYWNrKDApOworICAgIH0KIAotICAgIG1IYXNC
ZWVuQ3VycmVudCA9IGZhbHNlOwotICAgIG1Db250ZXh0TG9zdCA9IGZhbHNlOwotICAgIG1SZXNl
dFN0YXR1cyA9IEdMX05PX0VSUk9SOwotICAgIG1SZXNldFN0cmF0ZWd5ID0gKG5vdGlmeVJlc2V0
cyA/IEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgOiBHTF9OT19SRVNFVF9OT1RJRklDQVRJ
T05fRVhUKTsKLSAgICBtUm9idXN0QWNjZXNzID0gcm9idXN0QWNjZXNzOworICAgIG1Db21waWxl
ciA9IG5ldyBDb21waWxlcihtUmVuZGVyZXIsIGdldERhdGEoKSk7CiAKLSAgICBtQ29tcGlsZXIg
PSBuZXcgQ29tcGlsZXIobVJlbmRlcmVyLT5jcmVhdGVDb21waWxlcihnZXREYXRhKCkpKTsKKyAg
ICAvLyBJbml0aWFsaXplIGRpcnR5IGJpdCBtYXNrcworICAgIC8vIFRPRE8oam1hZGlsbCk6IGFk
ZGl0aW9uYWwgRVMzIHN0YXRlCisgICAgbVRleEltYWdlRGlydHlCaXRzLnNldChTdGF0ZTo6RElS
VFlfQklUX1VOUEFDS19BTElHTk1FTlQpOworICAgIG1UZXhJbWFnZURpcnR5Qml0cy5zZXQoU3Rh
dGU6OkRJUlRZX0JJVF9VTlBBQ0tfUk9XX0xFTkdUSCk7CisgICAgbVRleEltYWdlRGlydHlCaXRz
LnNldChTdGF0ZTo6RElSVFlfQklUX1VOUEFDS19JTUFHRV9IRUlHSFQpOworICAgIG1UZXhJbWFn
ZURpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9JTUFHRVMpOworICAg
IG1UZXhJbWFnZURpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9ST1dT
KTsKKyAgICBtVGV4SW1hZ2VEaXJ0eUJpdHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX1NL
SVBfUElYRUxTKTsKKyAgICAvLyBObyBkaXJ0eSBvYmplY3RzLgorCisgICAgLy8gUmVhZHBpeGVs
cyB1c2VzIHRoZSBwYWNrIHN0YXRlIGFuZCByZWFkIEZCTworICAgIG1SZWFkUGl4ZWxzRGlydHlC
aXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1BBQ0tfQUxJR05NRU5UKTsKKyAgICBtUmVhZFBpeGVs
c0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9QQUNLX1JFVkVSU0VfUk9XX09SREVSKTsK
KyAgICBtUmVhZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9QQUNLX1JPV19M
RU5HVEgpOworICAgIG1SZWFkUGl4ZWxzRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1BB
Q0tfU0tJUF9ST1dTKTsKKyAgICBtUmVhZFBpeGVsc0RpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZ
X0JJVF9QQUNLX1NLSVBfUElYRUxTKTsKKyAgICBtUmVhZFBpeGVsc0RpcnR5T2JqZWN0cy5zZXQo
U3RhdGU6OkRJUlRZX09CSkVDVF9SRUFEX0ZSQU1FQlVGRkVSKTsKKworICAgIG1DbGVhckRpcnR5
Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9SQVNURVJJWkVSX0RJU0NBUkRfRU5BQkxFRCk7Cisg
ICAgbUNsZWFyRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1NDSVNTT1JfVEVTVF9FTkFC
TEVEKTsKKyAgICBtQ2xlYXJEaXJ0eUJpdHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfU0NJU1NPUik7
CisgICAgbUNsZWFyRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1ZJRVdQT1JUKTsKKyAg
ICBtQ2xlYXJEaXJ0eUJpdHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfQ0xFQVJfQ09MT1IpOworICAg
IG1DbGVhckRpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9DTEVBUl9ERVBUSCk7CisgICAg
bUNsZWFyRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX0NMRUFSX1NURU5DSUwpOworICAg
IG1DbGVhckRpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9DT0xPUl9NQVNLKTsKKyAgICBt
Q2xlYXJEaXJ0eUJpdHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfREVQVEhfTUFTSyk7CisgICAgbUNs
ZWFyRGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0ZST05U
KTsKKyAgICBtQ2xlYXJEaXJ0eUJpdHMuc2V0KFN0YXRlOjpESVJUWV9CSVRfU1RFTkNJTF9XUklU
RU1BU0tfQkFDSyk7CisgICAgbUNsZWFyRGlydHlPYmplY3RzLnNldChTdGF0ZTo6RElSVFlfT0JK
RUNUX0RSQVdfRlJBTUVCVUZGRVIpOworCisgICAgbUJsaXREaXJ0eUJpdHMuc2V0KFN0YXRlOjpE
SVJUWV9CSVRfU0NJU1NPUl9URVNUX0VOQUJMRUQpOworICAgIG1CbGl0RGlydHlCaXRzLnNldChT
dGF0ZTo6RElSVFlfQklUX1NDSVNTT1IpOworICAgIG1CbGl0RGlydHlPYmplY3RzLnNldChTdGF0
ZTo6RElSVFlfT0JKRUNUX1JFQURfRlJBTUVCVUZGRVIpOworICAgIG1CbGl0RGlydHlPYmplY3Rz
LnNldChTdGF0ZTo6RElSVFlfT0JKRUNUX0RSQVdfRlJBTUVCVUZGRVIpOwogfQogCiBDb250ZXh0
Ojp+Q29udGV4dCgpCiB7CiAgICAgbVN0YXRlLnJlc2V0KCk7CiAKLSAgICB3aGlsZSAoIW1GcmFt
ZWJ1ZmZlck1hcC5lbXB0eSgpKQorICAgIGZvciAoYXV0byBmcmFtZWJ1ZmZlciA6IG1GcmFtZWJ1
ZmZlck1hcCkKICAgICB7Ci0gICAgICAgIC8vIERlbGV0ZSB0aGUgZnJhbWVidWZmZXIgaW4gcmV2
ZXJzZSBvcmRlciB0byBkZXN0cm95IHRoZSBmcmFtZWJ1ZmZlciB6ZXJvIGxhc3QuCi0gICAgICAg
IGRlbGV0ZUZyYW1lYnVmZmVyKG1GcmFtZWJ1ZmZlck1hcC5yYmVnaW4oKS0+Zmlyc3QpOworICAg
ICAgICAvLyBEZWZhdWx0IGZyYW1lYnVmZmVyIGFyZSBvd25lZCBieSB0aGVpciByZXNwZWN0aXZl
IFN1cmZhY2UKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyLnNlY29uZCAhPSBudWxscHRyICYmIGZy
YW1lYnVmZmVyLnNlY29uZC0+aWQoKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBTYWZl
RGVsZXRlKGZyYW1lYnVmZmVyLnNlY29uZCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICB3aGls
ZSAoIW1GZW5jZU5WTWFwLmVtcHR5KCkpCisgICAgZm9yIChhdXRvIGZlbmNlIDogbUZlbmNlTlZN
YXApCiAgICAgewotICAgICAgICBkZWxldGVGZW5jZU5WKG1GZW5jZU5WTWFwLmJlZ2luKCktPmZp
cnN0KTsKKyAgICAgICAgU2FmZURlbGV0ZShmZW5jZS5zZWNvbmQpOwogICAgIH0KIAotICAgIHdo
aWxlICghbVF1ZXJ5TWFwLmVtcHR5KCkpCisgICAgZm9yIChhdXRvIHF1ZXJ5IDogbVF1ZXJ5TWFw
KQogICAgIHsKLSAgICAgICAgZGVsZXRlUXVlcnkobVF1ZXJ5TWFwLmJlZ2luKCktPmZpcnN0KTsK
KyAgICAgICAgaWYgKHF1ZXJ5LnNlY29uZCAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAg
ICAgICBxdWVyeS5zZWNvbmQtPnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHdo
aWxlICghbVZlcnRleEFycmF5TWFwLmVtcHR5KCkpCisgICAgZm9yIChhdXRvIHZlcnRleEFycmF5
IDogbVZlcnRleEFycmF5TWFwKQogICAgIHsKLSAgICAgICAgZGVsZXRlVmVydGV4QXJyYXkobVZl
cnRleEFycmF5TWFwLmJlZ2luKCktPmZpcnN0KTsKKyAgICAgICAgU2FmZURlbGV0ZSh2ZXJ0ZXhB
cnJheS5zZWNvbmQpOwogICAgIH0KIAotICAgIG1UcmFuc2Zvcm1GZWVkYmFja1plcm8uc2V0KE5V
TEwpOwotICAgIHdoaWxlICghbVRyYW5zZm9ybUZlZWRiYWNrTWFwLmVtcHR5KCkpCisgICAgZm9y
IChhdXRvIHRyYW5zZm9ybUZlZWRiYWNrIDogbVRyYW5zZm9ybUZlZWRiYWNrTWFwKQogICAgIHsK
LSAgICAgICAgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sobVRyYW5zZm9ybUZlZWRiYWNrTWFwLmJl
Z2luKCktPmZpcnN0KTsKKyAgICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrLnNlY29uZCAhPSBu
dWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFjay5zZWNvbmQt
PnJlbGVhc2UoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZvciAoYXV0byAmemVyb1RleHR1
cmUgOiBtWmVyb1RleHR1cmVzKQpAQCAtMTYzLDYgKzMwMCwxMSBAQAogICAgIH0KICAgICBtWmVy
b1RleHR1cmVzLmNsZWFyKCk7CiAKKyAgICBpZiAobUN1cnJlbnRTdXJmYWNlICE9IG51bGxwdHIp
CisgICAgeworICAgICAgICByZWxlYXNlU3VyZmFjZSgpOworICAgIH0KKwogICAgIGlmIChtUmVz
b3VyY2VNYW5hZ2VyKQogICAgIHsKICAgICAgICAgbVJlc291cmNlTWFuYWdlci0+cmVsZWFzZSgp
OwpAQCAtMTg2LDUwICszMjgsNTUgQEAKICAgICAgICAgbUhhc0JlZW5DdXJyZW50ID0gdHJ1ZTsK
ICAgICB9CiAKLSAgICAvLyBVcGRhdGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgotICAgIEZyYW1lYnVm
ZmVyICpkZWZhdWx0RkJPID0gbUZyYW1lYnVmZmVyTWFwWzBdOworICAgIC8vIFRPRE8oam1hZGls
bCk6IFJld29yayB0aGlzIHdoZW4gd2Ugc3VwcG9ydCBDb250ZXh0SW1wbAorICAgIG1TdGF0ZS5z
ZXRBbGxEaXJ0eUJpdHMoKTsKIAotICAgIEdMZW51bSBkcmF3QnVmZmVyU3RhdGUgPSBHTF9CQUNL
OwotICAgIGRlZmF1bHRGQk8tPnNldERyYXdCdWZmZXJzKDEsICZkcmF3QnVmZmVyU3RhdGUpOwot
ICAgIGRlZmF1bHRGQk8tPnNldFJlYWRCdWZmZXIoR0xfQkFDSyk7Ci0KLSAgICBjb25zdCBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmJhY2tBdHRhY2htZW50ID0gZGVmYXVsdEZCTy0+Z2V0QXR0YWNo
bWVudChHTF9CQUNLKTsKLQotICAgIGlmIChiYWNrQXR0YWNobWVudCAmJiBiYWNrQXR0YWNobWVu
dC0+Z2V0U3VyZmFjZSgpID09IHN1cmZhY2UpCisgICAgaWYgKG1DdXJyZW50U3VyZmFjZSkKICAg
ICB7Ci0gICAgICAgIC8vIEZCTyBhbHJlYWR5IGluaXRpYWxpemVkIHRvIHRoZSBzdXJmYWNlLgot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJlbGVhc2VTdXJmYWNlKCk7CiAgICAgfQorICAgIHN1
cmZhY2UtPnNldElzQ3VycmVudCh0cnVlKTsKKyAgICBtQ3VycmVudFN1cmZhY2UgPSBzdXJmYWNl
OwogCi0gICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZyA9IHN1cmZhY2UtPmdldENvbmZpZygp
OwotCi0gICAgZGVmYXVsdEZCTy0+c2V0QXR0YWNobWVudChHTF9GUkFNRUJVRkZFUl9ERUZBVUxU
LCBHTF9CQUNLLCBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLCBzdXJmYWNlKTsKLQotICAgIGlm
IChjb25maWctPmRlcHRoU2l6ZSA+IDApCisgICAgLy8gVXBkYXRlIGRlZmF1bHQgZnJhbWVidWZm
ZXIsIHRoZSBiaW5kaW5nIG9mIHRoZSBwcmV2aW91cyBkZWZhdWx0CisgICAgLy8gZnJhbWVidWZm
ZXIgKG9yIGxhY2sgb2YpIHdpbGwgaGF2ZSBhIG51bGxwdHIuCiAgICAgewotICAgICAgICBkZWZh
dWx0RkJPLT5zZXRBdHRhY2htZW50KEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQsIEdMX0RFUFRILCBJ
bWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLCBzdXJmYWNlKTsKKyAgICAgICAgRnJhbWVidWZmZXIg
Km5ld0RlZmF1bHQgPSBzdXJmYWNlLT5nZXREZWZhdWx0RnJhbWVidWZmZXIoKTsKKyAgICAgICAg
aWYgKG1TdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKSA9PSBudWxscHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtU3RhdGUuc2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZyhuZXdEZWZhdWx0KTsK
KyAgICAgICAgfQorICAgICAgICBpZiAobVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpID09IG51
bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJC
aW5kaW5nKG5ld0RlZmF1bHQpOworICAgICAgICB9CisgICAgICAgIG1GcmFtZWJ1ZmZlck1hcFsw
XSA9IG5ld0RlZmF1bHQ7CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGRlZmF1bHRG
Qk8tPnJlc2V0QXR0YWNobWVudChHTF9ERVBUSCk7Ci0gICAgfQogCi0gICAgaWYgKGNvbmZpZy0+
c3RlbmNpbFNpemUgPiAwKQotICAgIHsKLSAgICAgICAgZGVmYXVsdEZCTy0+c2V0QXR0YWNobWVu
dChHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9TVEVOQ0lMLCBJbWFnZUluZGV4OjpNYWtlSW52
YWxpZCgpLCBzdXJmYWNlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZGVmYXVs
dEZCTy0+cmVzZXRBdHRhY2htZW50KEdMX1NURU5DSUwpOwotICAgIH0KKyAgICAvLyBOb3RpZnkg
dGhlIHJlbmRlcmVyIG9mIGEgY29udGV4dCBzd2l0Y2gKKyAgICBtUmVuZGVyZXItPm9uTWFrZUN1
cnJlbnQoZ2V0RGF0YSgpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpyZWxlYXNlU3VyZmFjZSgpCiB7
Ci0gICAgRnJhbWVidWZmZXIgKmRlZmF1bHRGQk8gPSBtRnJhbWVidWZmZXJNYXBbMF07Ci0gICAg
ZGVmYXVsdEZCTy0+cmVzZXRBdHRhY2htZW50KEdMX0JBQ0spOwotICAgIGRlZmF1bHRGQk8tPnJl
c2V0QXR0YWNobWVudChHTF9ERVBUSCk7Ci0gICAgZGVmYXVsdEZCTy0+cmVzZXRBdHRhY2htZW50
KEdMX1NURU5DSUwpOworICAgIEFTU0VSVChtQ3VycmVudFN1cmZhY2UgIT0gbnVsbHB0cik7CisK
KyAgICAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKKyAgICB7CisgICAgICAgIEZy
YW1lYnVmZmVyICpjdXJyZW50RGVmYXVsdCA9IG1DdXJyZW50U3VyZmFjZS0+Z2V0RGVmYXVsdEZy
YW1lYnVmZmVyKCk7CisgICAgICAgIGlmIChtU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkgPT0g
Y3VycmVudERlZmF1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZS5zZXRSZWFkRnJh
bWVidWZmZXJCaW5kaW5nKG51bGxwdHIpOworICAgICAgICB9CisgICAgICAgIGlmIChtU3RhdGUu
Z2V0RHJhd0ZyYW1lYnVmZmVyKCkgPT0gY3VycmVudERlZmF1bHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1TdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG51bGxwdHIpOworICAgICAg
ICB9CisgICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZSgwKTsKKyAgICB9CisKKyAgICBtQ3Vy
cmVudFN1cmZhY2UtPnNldElzQ3VycmVudChmYWxzZSk7CisgICAgbUN1cnJlbnRTdXJmYWNlID0g
bnVsbHB0cjsKIH0KIAogLy8gTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGFzc3VtZSB0
aGF0IHRoaXMgY29udGV4dCBpcyBjdXJyZW50IQpAQCAtMjU3LDcgKzQwNCw3IEBACiAKIEdMdWlu
dCBDb250ZXh0OjpjcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpCiB7Ci0gICAgcmV0dXJuIG1SZXNv
dXJjZU1hbmFnZXItPmNyZWF0ZVNoYWRlcihnZXREYXRhKCksIHR5cGUpOworICAgIHJldHVybiBt
UmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVTaGFkZXIobVJlbmRlcmVyLT5nZXRSZW5kZXJlckxpbWl0
YXRpb25zKCksIHR5cGUpOwogfQogCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlVGV4dHVyZSgpCkBA
IC0yNzksMTQgKzQyNiw5IEBACiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVWZXJ0ZXhBcnJheSgp
CiB7Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1WZXJ0ZXhBcnJheUhhbmRsZUFsbG9jYXRvci5hbGxv
Y2F0ZSgpOwotCi0gICAgLy8gQWx0aG91Z2ggdGhlIHNwZWMgc3RhdGVzIFZBTyBzdGF0ZSBpcyBu
b3QgaW5pdGlhbGl6ZWQgdW50aWwgdGhlIG9iamVjdCBpcyBib3VuZCwKLSAgICAvLyB3ZSBjcmVh
dGUgaXQgaW1tZWRpYXRlbHkuIFRoZSByZXN1bHRpbmcgYmVoYXZpb3VyIGlzIHRyYW5zcGFyZW50
IHRvIHRoZSBhcHBsaWNhdGlvbiwKLSAgICAvLyBzaW5jZSBpdCdzIG5vdCBjdXJyZW50bHkgcG9z
c2libGUgdG8gYWNjZXNzIHRoZSBzdGF0ZSB1bnRpbCB0aGUgb2JqZWN0IGlzIGJvdW5kLgotICAg
IFZlcnRleEFycmF5ICp2ZXJ0ZXhBcnJheSA9IG5ldyBWZXJ0ZXhBcnJheShtUmVuZGVyZXItPmNy
ZWF0ZVZlcnRleEFycmF5KCksIGhhbmRsZSwgTUFYX1ZFUlRFWF9BVFRSSUJTKTsKLSAgICBtVmVy
dGV4QXJyYXlNYXBbaGFuZGxlXSA9IHZlcnRleEFycmF5OwotICAgIHJldHVybiBoYW5kbGU7Cisg
ICAgR0x1aW50IHZlcnRleEFycmF5ICAgICAgICAgICA9IG1WZXJ0ZXhBcnJheUhhbmRsZUFsbG9j
YXRvci5hbGxvY2F0ZSgpOworICAgIG1WZXJ0ZXhBcnJheU1hcFt2ZXJ0ZXhBcnJheV0gPSBudWxs
cHRyOworICAgIHJldHVybiB2ZXJ0ZXhBcnJheTsKIH0KIAogR0x1aW50IENvbnRleHQ6OmNyZWF0
ZVNhbXBsZXIoKQpAQCAtMjk2LDExICs0MzgsOSBAQAogCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRl
VHJhbnNmb3JtRmVlZGJhY2soKQogewotICAgIEdMdWludCBoYW5kbGUgPSBtVHJhbnNmb3JtRmVl
ZGJhY2tBbGxvY2F0b3IuYWxsb2NhdGUoKTsKLSAgICBUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNm
b3JtRmVlZGJhY2sgPSBuZXcgVHJhbnNmb3JtRmVlZGJhY2sobVJlbmRlcmVyLT5jcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaygpLCBoYW5kbGUsIG1DYXBzKTsKLSAgICB0cmFuc2Zvcm1GZWVkYmFjay0+
YWRkUmVmKCk7Ci0gICAgbVRyYW5zZm9ybUZlZWRiYWNrTWFwW2hhbmRsZV0gPSB0cmFuc2Zvcm1G
ZWVkYmFjazsKLSAgICByZXR1cm4gaGFuZGxlOworICAgIEdMdWludCB0cmFuc2Zvcm1GZWVkYmFj
ayAgICAgICAgICAgICAgICAgPSBtVHJhbnNmb3JtRmVlZGJhY2tBbGxvY2F0b3IuYWxsb2NhdGUo
KTsKKyAgICBtVHJhbnNmb3JtRmVlZGJhY2tNYXBbdHJhbnNmb3JtRmVlZGJhY2tdID0gbnVsbHB0
cjsKKyAgICByZXR1cm4gdHJhbnNmb3JtRmVlZGJhY2s7CiB9CiAKIC8vIFJldHVybnMgYW4gdW51
c2VkIGZyYW1lYnVmZmVyIG5hbWUKQEAgLTM4MywxNSArNTIzLDE4IEBACiAKIHZvaWQgQ29udGV4
dDo6ZGVsZXRlVmVydGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5KQogewotICAgIGF1dG8gdmVy
dGV4QXJyYXlPYmplY3QgPSBtVmVydGV4QXJyYXlNYXAuZmluZCh2ZXJ0ZXhBcnJheSk7Ci0KLSAg
ICBpZiAodmVydGV4QXJyYXlPYmplY3QgIT0gbVZlcnRleEFycmF5TWFwLmVuZCgpKQorICAgIGF1
dG8gaXRlciA9IG1WZXJ0ZXhBcnJheU1hcC5maW5kKHZlcnRleEFycmF5KTsKKyAgICBpZiAoaXRl
ciAhPSBtVmVydGV4QXJyYXlNYXAuZW5kKCkpCiAgICAgewotICAgICAgICBkZXRhY2hWZXJ0ZXhB
cnJheSh2ZXJ0ZXhBcnJheSk7CisgICAgICAgIFZlcnRleEFycmF5ICp2ZXJ0ZXhBcnJheU9iamVj
dCA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgaWYgKHZlcnRleEFycmF5T2JqZWN0ICE9IG51bGxw
dHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRldGFjaFZlcnRleEFycmF5KHZlcnRleEFycmF5
KTsKKyAgICAgICAgICAgIGRlbGV0ZSB2ZXJ0ZXhBcnJheU9iamVjdDsKKyAgICAgICAgfQogCi0g
ICAgICAgIG1WZXJ0ZXhBcnJheUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHZlcnRleEFycmF5T2Jq
ZWN0LT5maXJzdCk7Ci0gICAgICAgIGRlbGV0ZSB2ZXJ0ZXhBcnJheU9iamVjdC0+c2Vjb25kOwot
ICAgICAgICBtVmVydGV4QXJyYXlNYXAuZXJhc2UodmVydGV4QXJyYXlPYmplY3QpOworICAgICAg
ICBtVmVydGV4QXJyYXlNYXAuZXJhc2UoaXRlcik7CisgICAgICAgIG1WZXJ0ZXhBcnJheUhhbmRs
ZUFsbG9jYXRvci5yZWxlYXNlKHZlcnRleEFycmF5KTsKICAgICB9CiB9CiAKQEAgLTQxMCwxNiAr
NTUzLDIxIEBACiAgICAgYXV0byBpdGVyID0gbVRyYW5zZm9ybUZlZWRiYWNrTWFwLmZpbmQodHJh
bnNmb3JtRmVlZGJhY2spOwogICAgIGlmIChpdGVyICE9IG1UcmFuc2Zvcm1GZWVkYmFja01hcC5l
bmQoKSkKICAgICB7Ci0gICAgICAgIGRldGFjaFRyYW5zZm9ybUZlZWRiYWNrKHRyYW5zZm9ybUZl
ZWRiYWNrKTsKKyAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrT2Jq
ZWN0ID0gaXRlci0+c2Vjb25kOworICAgICAgICBpZiAodHJhbnNmb3JtRmVlZGJhY2tPYmplY3Qg
IT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgZGV0YWNoVHJhbnNmb3JtRmVlZGJh
Y2sodHJhbnNmb3JtRmVlZGJhY2spOworICAgICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tPYmpl
Y3QtPnJlbGVhc2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja01h
cC5lcmFzZShpdGVyKTsKICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdG9yLnJlbGVh
c2UodHJhbnNmb3JtRmVlZGJhY2spOwotICAgICAgICBpdGVyLT5zZWNvbmQtPnJlbGVhc2UoKTsK
LSAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrTWFwLmVyYXNlKGl0ZXIpOwogICAgIH0KIH0KIAog
dm9pZCBDb250ZXh0OjpkZWxldGVGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpCiB7Ci0g
ICAgRnJhbWVidWZmZXJNYXA6Oml0ZXJhdG9yIGZyYW1lYnVmZmVyT2JqZWN0ID0gbUZyYW1lYnVm
ZmVyTWFwLmZpbmQoZnJhbWVidWZmZXIpOworICAgIGF1dG8gZnJhbWVidWZmZXJPYmplY3QgPSBt
RnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcik7CiAKICAgICBpZiAoZnJhbWVidWZmZXJP
YmplY3QgIT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKQogICAgIHsKQEAgLTQzMyw3ICs1ODEsNyBA
QAogCiB2b2lkIENvbnRleHQ6OmRlbGV0ZUZlbmNlTlYoR0x1aW50IGZlbmNlKQogewotICAgIEZl
bmNlTlZNYXA6Oml0ZXJhdG9yIGZlbmNlT2JqZWN0ID0gbUZlbmNlTlZNYXAuZmluZChmZW5jZSk7
CisgICAgYXV0byBmZW5jZU9iamVjdCA9IG1GZW5jZU5WTWFwLmZpbmQoZmVuY2UpOwogCiAgICAg
aWYgKGZlbmNlT2JqZWN0ICE9IG1GZW5jZU5WTWFwLmVuZCgpKQogICAgIHsKQEAgLTQ0NSw3ICs1
OTMsNyBAQAogCiB2b2lkIENvbnRleHQ6OmRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVyeSkKIHsKLSAg
ICBRdWVyeU1hcDo6aXRlcmF0b3IgcXVlcnlPYmplY3QgPSBtUXVlcnlNYXAuZmluZChxdWVyeSk7
CisgICAgYXV0byBxdWVyeU9iamVjdCA9IG1RdWVyeU1hcC5maW5kKHF1ZXJ5KTsKICAgICBpZiAo
cXVlcnlPYmplY3QgIT0gbVF1ZXJ5TWFwLmVuZCgpKQogICAgIHsKICAgICAgICAgbVF1ZXJ5SGFu
ZGxlQWxsb2NhdG9yLnJlbGVhc2UocXVlcnlPYmplY3QtPmZpcnN0KTsKQEAgLTQ1Nyw3ICs2MDUs
NyBAQAogICAgIH0KIH0KIAotQnVmZmVyICpDb250ZXh0OjpnZXRCdWZmZXIoR0x1aW50IGhhbmRs
ZSkKK0J1ZmZlciAqQ29udGV4dDo6Z2V0QnVmZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldEJ1ZmZlcihoYW5kbGUpOwogfQpAQCAtNDc3
LDcgKzYyNSw3IEBACiAgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldFRleHR1cmUoaGFu
ZGxlKTsKIH0KIAotUmVuZGVyYnVmZmVyICpDb250ZXh0OjpnZXRSZW5kZXJidWZmZXIoR0x1aW50
IGhhbmRsZSkKK1JlbmRlcmJ1ZmZlciAqQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyKEdMdWludCBo
YW5kbGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldFJlbmRlcmJ1
ZmZlcihoYW5kbGUpOwogfQpAQCAtNDkwLDE1ICs2MzgsNyBAQAogVmVydGV4QXJyYXkgKkNvbnRl
eHQ6OmdldFZlcnRleEFycmF5KEdMdWludCBoYW5kbGUpIGNvbnN0CiB7CiAgICAgYXV0byB2ZXJ0
ZXhBcnJheSA9IG1WZXJ0ZXhBcnJheU1hcC5maW5kKGhhbmRsZSk7Ci0KLSAgICBpZiAodmVydGV4
QXJyYXkgPT0gbVZlcnRleEFycmF5TWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5V
TEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiB2ZXJ0ZXhBcnJheS0+
c2Vjb25kOwotICAgIH0KKyAgICByZXR1cm4gKHZlcnRleEFycmF5ICE9IG1WZXJ0ZXhBcnJheU1h
cC5lbmQoKSkgPyB2ZXJ0ZXhBcnJheS0+c2Vjb25kIDogbnVsbHB0cjsKIH0KIAogU2FtcGxlciAq
Q29udGV4dDo6Z2V0U2FtcGxlcihHTHVpbnQgaGFuZGxlKSBjb25zdApAQCAtNTA4LDM5ICs2NDgs
NjUgQEAKIAogVHJhbnNmb3JtRmVlZGJhY2sgKkNvbnRleHQ6OmdldFRyYW5zZm9ybUZlZWRiYWNr
KEdMdWludCBoYW5kbGUpIGNvbnN0CiB7Ci0gICAgaWYgKGhhbmRsZSA9PSAwKQorICAgIGF1dG8g
aXRlciA9IG1UcmFuc2Zvcm1GZWVkYmFja01hcC5maW5kKGhhbmRsZSk7CisgICAgcmV0dXJuIChp
dGVyICE9IG1UcmFuc2Zvcm1GZWVkYmFja01hcC5lbmQoKSkgPyBpdGVyLT5zZWNvbmQgOiBudWxs
cHRyOworfQorCitMYWJlbGVkT2JqZWN0ICpDb250ZXh0OjpnZXRMYWJlbGVkT2JqZWN0KEdMZW51
bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGlkZW50aWZp
ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbVRyYW5zZm9ybUZlZWRiYWNrWmVyby5nZXQoKTsK
KyAgICAgICAgY2FzZSBHTF9CVUZGRVI6CisgICAgICAgICAgICByZXR1cm4gZ2V0QnVmZmVyKG5h
bWUpOworICAgICAgICBjYXNlIEdMX1NIQURFUjoKKyAgICAgICAgICAgIHJldHVybiBnZXRTaGFk
ZXIobmFtZSk7CisgICAgICAgIGNhc2UgR0xfUFJPR1JBTToKKyAgICAgICAgICAgIHJldHVybiBn
ZXRQcm9ncmFtKG5hbWUpOworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BUlJBWToKKyAgICAgICAg
ICAgIHJldHVybiBnZXRWZXJ0ZXhBcnJheShuYW1lKTsKKyAgICAgICAgY2FzZSBHTF9RVUVSWToK
KyAgICAgICAgICAgIHJldHVybiBnZXRRdWVyeShuYW1lKTsKKyAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0s6CisgICAgICAgICAgICByZXR1cm4gZ2V0VHJhbnNmb3JtRmVlZGJhY2so
bmFtZSk7CisgICAgICAgIGNhc2UgR0xfU0FNUExFUjoKKyAgICAgICAgICAgIHJldHVybiBnZXRT
YW1wbGVyKG5hbWUpOworICAgICAgICBjYXNlIEdMX1RFWFRVUkU6CisgICAgICAgICAgICByZXR1
cm4gZ2V0VGV4dHVyZShuYW1lKTsKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVI6CisgICAg
ICAgICAgICByZXR1cm4gZ2V0UmVuZGVyYnVmZmVyKG5hbWUpOworICAgICAgICBjYXNlIEdMX0ZS
QU1FQlVGRkVSOgorICAgICAgICAgICAgcmV0dXJuIGdldEZyYW1lYnVmZmVyKG5hbWUpOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBUcmFuc2Zvcm1G
ZWVkYmFja01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1UcmFuc2Zvcm1GZWVkYmFja01hcC5m
aW5kKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiAoaXRlciAhPSBtVHJhbnNmb3JtRmVlZGJhY2tN
YXAuZW5kKCkpID8gaXRlci0+c2Vjb25kIDogTlVMTDsKLSAgICB9CiB9CiAKK0xhYmVsZWRPYmpl
Y3QgKkNvbnRleHQ6OmdldExhYmVsZWRPYmplY3RGcm9tUHRyKGNvbnN0IHZvaWQgKnB0cikgY29u
c3QKK3sKKyAgICByZXR1cm4gZ2V0RmVuY2VTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPihj
b25zdF9jYXN0PHZvaWQgKj4ocHRyKSkpOworfQorCiBib29sIENvbnRleHQ6OmlzU2FtcGxlcihH
THVpbnQgc2FtcGxlck5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXIt
PmlzU2FtcGxlcihzYW1wbGVyTmFtZSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6YmluZEFycmF5QnVm
ZmVyKHVuc2lnbmVkIGludCBidWZmZXIpCit2b2lkIENvbnRleHQ6OmJpbmRBcnJheUJ1ZmZlcihH
THVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVy
QWxsb2NhdGlvbihidWZmZXIpOwotCi0gICAgbVN0YXRlLnNldEFycmF5QnVmZmVyQmluZGluZyhn
ZXRCdWZmZXIoYnVmZmVyKSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKKyAgICBtU3RhdGUuc2V0QXJy
YXlCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7CiB9CiAKLXZvaWQgQ29udGV4dDo6YmluZEVsZW1lbnRB
cnJheUJ1ZmZlcih1bnNpZ25lZCBpbnQgYnVmZmVyKQordm9pZCBDb250ZXh0OjpiaW5kRWxlbWVu
dEFycmF5QnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdl
ci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlcik7Ci0KLSAgICBtU3RhdGUuZ2V0VmVydGV4
QXJyYXkoKS0+c2V0RWxlbWVudEFycmF5QnVmZmVyKGdldEJ1ZmZlcihidWZmZXIpKTsKKyAgICBC
dWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihi
dWZmZXJIYW5kbGUpOworICAgIG1TdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5zZXRFbGVtZW50QXJy
YXlCdWZmZXIoYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0OjpiaW5kVGV4dHVyZShHTGVudW0g
dGFyZ2V0LCBHTHVpbnQgaGFuZGxlKQogewotICAgIFRleHR1cmUgKnRleHR1cmUgPSBOVUxMOwor
ICAgIFRleHR1cmUgKnRleHR1cmUgPSBudWxscHRyOwogCiAgICAgaWYgKGhhbmRsZSA9PSAwKQog
ICAgIHsKQEAgLTU0OCwxMTUgKzcxNCw5NiBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKGhhbmRsZSwgdGFy
Z2V0KTsKLSAgICAgICAgdGV4dHVyZSA9IGdldFRleHR1cmUoaGFuZGxlKTsKKyAgICAgICAgdGV4
dHVyZSA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oaGFuZGxlLCB0
YXJnZXQpOwogICAgIH0KIAogICAgIEFTU0VSVCh0ZXh0dXJlKTsKLQogICAgIG1TdGF0ZS5zZXRT
YW1wbGVyVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwogfQogCi12b2lkIENvbnRleHQ6OmJpbmRS
ZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQordm9pZCBDb250ZXh0OjpiaW5kUmVh
ZEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSkKIHsKLSAgICBpZiAoIWdldEZy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyKSkKLSAgICB7Ci0gICAgICAgIG1GcmFtZWJ1ZmZlck1hcFtm
cmFtZWJ1ZmZlcl0gPSBuZXcgRnJhbWVidWZmZXIobUNhcHMsIG1SZW5kZXJlciwgZnJhbWVidWZm
ZXIpOwotICAgIH0KLQotICAgIG1TdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGdldEZy
YW1lYnVmZmVyKGZyYW1lYnVmZmVyKSk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0g
Y2hlY2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24oZnJhbWVidWZmZXJIYW5kbGUpOworICAgIG1TdGF0
ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKGZyYW1lYnVmZmVyKTsKIH0KIAotdm9pZCBDb250
ZXh0OjpiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3ZvaWQgQ29udGV4
dDo6YmluZERyYXdGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXJIYW5kbGUpCiB7Ci0gICAg
aWYgKCFnZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikpCi0gICAgewotICAgICAgICBtRnJhbWVi
dWZmZXJNYXBbZnJhbWVidWZmZXJdID0gbmV3IEZyYW1lYnVmZmVyKG1DYXBzLCBtUmVuZGVyZXIs
IGZyYW1lYnVmZmVyKTsKLSAgICB9Ci0KLSAgICBtU3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmlu
ZGluZyhnZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikpOworICAgIEZyYW1lYnVmZmVyICpmcmFt
ZWJ1ZmZlciA9IGNoZWNrRnJhbWVidWZmZXJBbGxvY2F0aW9uKGZyYW1lYnVmZmVySGFuZGxlKTsK
KyAgICBtU3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlcik7CiB9CiAK
LXZvaWQgQ29udGV4dDo6YmluZFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVyKQordm9p
ZCBDb250ZXh0OjpiaW5kUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXJIYW5kbGUpCiB7
Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKHJlbmRl
cmJ1ZmZlcik7Ci0KLSAgICBtU3RhdGUuc2V0UmVuZGVyYnVmZmVyQmluZGluZyhnZXRSZW5kZXJi
dWZmZXIocmVuZGVyYnVmZmVyKSk7CisgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBt
UmVzb3VyY2VNYW5hZ2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24ocmVuZGVyYnVmZmVy
SGFuZGxlKTsKKyAgICBtU3RhdGUuc2V0UmVuZGVyYnVmZmVyQmluZGluZyhyZW5kZXJidWZmZXIp
OwogfQogCi12b2lkIENvbnRleHQ6OmJpbmRWZXJ0ZXhBcnJheShHTHVpbnQgdmVydGV4QXJyYXkp
Cit2b2lkIENvbnRleHQ6OmJpbmRWZXJ0ZXhBcnJheShHTHVpbnQgdmVydGV4QXJyYXlIYW5kbGUp
CiB7Ci0gICAgaWYgKCFnZXRWZXJ0ZXhBcnJheSh2ZXJ0ZXhBcnJheSkpCi0gICAgewotICAgICAg
ICBWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXlPYmplY3QgPSBuZXcgVmVydGV4QXJyYXkobVJlbmRl
cmVyLT5jcmVhdGVWZXJ0ZXhBcnJheSgpLCB2ZXJ0ZXhBcnJheSwgTUFYX1ZFUlRFWF9BVFRSSUJT
KTsKLSAgICAgICAgbVZlcnRleEFycmF5TWFwW3ZlcnRleEFycmF5XSA9IHZlcnRleEFycmF5T2Jq
ZWN0OwotICAgIH0KLQotICAgIG1TdGF0ZS5zZXRWZXJ0ZXhBcnJheUJpbmRpbmcoZ2V0VmVydGV4
QXJyYXkodmVydGV4QXJyYXkpKTsKKyAgICBWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgPSBjaGVj
a1ZlcnRleEFycmF5QWxsb2NhdGlvbih2ZXJ0ZXhBcnJheUhhbmRsZSk7CisgICAgbVN0YXRlLnNl
dFZlcnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6Ymlu
ZFNhbXBsZXIoR0x1aW50IHRleHR1cmVVbml0LCBHTHVpbnQgc2FtcGxlcikKK3ZvaWQgQ29udGV4
dDo6YmluZFNhbXBsZXIoR0x1aW50IHRleHR1cmVVbml0LCBHTHVpbnQgc2FtcGxlckhhbmRsZSkK
IHsKICAgICBBU1NFUlQodGV4dHVyZVVuaXQgPCBtQ2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKTsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKHNh
bXBsZXIpOwotCi0gICAgbVN0YXRlLnNldFNhbXBsZXJCaW5kaW5nKHRleHR1cmVVbml0LCBnZXRT
YW1wbGVyKHNhbXBsZXIpKTsKKyAgICBTYW1wbGVyICpzYW1wbGVyID0gbVJlc291cmNlTWFuYWdl
ci0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihzYW1wbGVySGFuZGxlKTsKKyAgICBtU3RhdGUuc2V0
U2FtcGxlckJpbmRpbmcodGV4dHVyZVVuaXQsIHNhbXBsZXIpOwogfQogCi12b2lkIENvbnRleHQ6
OmJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQordm9pZCBDb250ZXh0Ojpi
aW5kR2VuZXJpY1VuaWZvcm1CdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBtUmVz
b3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVyKTsKLQotICAgIG1TdGF0
ZS5zZXRHZW5lcmljVW5pZm9ybUJ1ZmZlckJpbmRpbmcoZ2V0QnVmZmVyKGJ1ZmZlcikpOworICAg
IEJ1ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9u
KGJ1ZmZlckhhbmRsZSk7CisgICAgbVN0YXRlLnNldEdlbmVyaWNVbmlmb3JtQnVmZmVyQmluZGlu
ZyhidWZmZXIpOwogfQogCi12b2lkIENvbnRleHQ6OmJpbmRJbmRleGVkVW5pZm9ybUJ1ZmZlcihH
THVpbnQgYnVmZmVyLCBHTHVpbnQgaW5kZXgsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBz
aXplKQordm9pZCBDb250ZXh0OjpiaW5kSW5kZXhlZFVuaWZvcm1CdWZmZXIoR0x1aW50IGJ1ZmZl
ckhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
c2l6ZSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVm
ZmVyKTsKLQotICAgIG1TdGF0ZS5zZXRJbmRleGVkVW5pZm9ybUJ1ZmZlckJpbmRpbmcoaW5kZXgs
IGdldEJ1ZmZlcihidWZmZXIpLCBvZmZzZXQsIHNpemUpOworICAgIEJ1ZmZlciAqYnVmZmVyID0g
bVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlckhhbmRsZSk7Cisg
ICAgbVN0YXRlLnNldEluZGV4ZWRVbmlmb3JtQnVmZmVyQmluZGluZyhpbmRleCwgYnVmZmVyLCBv
ZmZzZXQsIHNpemUpOwogfQogCi12b2lkIENvbnRleHQ6OmJpbmRHZW5lcmljVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3ZvaWQgQ29udGV4dDo6YmluZEdlbmVyaWNUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIG1SZXNvdXJj
ZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZmZXIpOwotCi0gICAgbVN0YXRlLmdl
dEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpLT5iaW5kR2VuZXJpY0J1ZmZlcihnZXRCdWZmZXIo
YnVmZmVyKSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1
ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKKyAgICBtU3RhdGUuZ2V0Q3VycmVudFRyYW5z
Zm9ybUZlZWRiYWNrKCktPmJpbmRHZW5lcmljQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLXZvaWQgQ29u
dGV4dDo6YmluZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihHTHVpbnQgYnVmZmVyLCBH
THVpbnQgaW5kZXgsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplKQordm9pZCBDb250
ZXh0OjpiaW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5k
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlcik7Ci0KLSAgICBtU3RhdGUuZ2V0Q3VycmVudFRy
YW5zZm9ybUZlZWRiYWNrKCktPmJpbmRJbmRleGVkQnVmZmVyKGluZGV4LCBnZXRCdWZmZXIoYnVm
ZmVyKSwgb2Zmc2V0LCBzaXplKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFn
ZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZmZXJIYW5kbGUpOworICAgIG1TdGF0ZS5nZXRD
dXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKS0+YmluZEluZGV4ZWRCdWZmZXIoaW5kZXgsIGJ1ZmZl
ciwgb2Zmc2V0LCBzaXplKTsKIH0KIAotdm9pZCBDb250ZXh0OjpiaW5kQ29weVJlYWRCdWZmZXIo
R0x1aW50IGJ1ZmZlcikKK3ZvaWQgQ29udGV4dDo6YmluZENvcHlSZWFkQnVmZmVyKEdMdWludCBi
dWZmZXJIYW5kbGUpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0
aW9uKGJ1ZmZlcik7Ci0KLSAgICBtU3RhdGUuc2V0Q29weVJlYWRCdWZmZXJCaW5kaW5nKGdldEJ1
ZmZlcihidWZmZXIpKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNo
ZWNrQnVmZmVyQWxsb2NhdGlvbihidWZmZXJIYW5kbGUpOworICAgIG1TdGF0ZS5zZXRDb3B5UmVh
ZEJ1ZmZlckJpbmRpbmcoYnVmZmVyKTsKIH0KIAotdm9pZCBDb250ZXh0OjpiaW5kQ29weVdyaXRl
QnVmZmVyKEdMdWludCBidWZmZXIpCit2b2lkIENvbnRleHQ6OmJpbmRDb3B5V3JpdGVCdWZmZXIo
R0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZl
ckFsbG9jYXRpb24oYnVmZmVyKTsKLQotICAgIG1TdGF0ZS5zZXRDb3B5V3JpdGVCdWZmZXJCaW5k
aW5nKGdldEJ1ZmZlcihidWZmZXIpKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1h
bmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihidWZmZXJIYW5kbGUpOworICAgIG1TdGF0ZS5z
ZXRDb3B5V3JpdGVCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7CiB9CiAKLXZvaWQgQ29udGV4dDo6Ymlu
ZFBpeGVsUGFja0J1ZmZlcihHTHVpbnQgYnVmZmVyKQordm9pZCBDb250ZXh0OjpiaW5kUGl4ZWxQ
YWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1ZmZlcik7Ci0KLSAgICBtU3RhdGUuc2V0UGl4ZWxQYWNr
QnVmZmVyQmluZGluZyhnZXRCdWZmZXIoYnVmZmVyKSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBt
UmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVySGFuZGxlKTsKKyAg
ICBtU3RhdGUuc2V0UGl4ZWxQYWNrQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCi12b2lkIENv
bnRleHQ6OmJpbmRQaXhlbFVucGFja0J1ZmZlcihHTHVpbnQgYnVmZmVyKQordm9pZCBDb250ZXh0
OjpiaW5kUGl4ZWxVbnBhY2tCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBtUmVz
b3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24oYnVmZmVyKTsKLQotICAgIG1TdGF0
ZS5zZXRQaXhlbFVucGFja0J1ZmZlckJpbmRpbmcoZ2V0QnVmZmVyKGJ1ZmZlcikpOworICAgIEJ1
ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKGJ1
ZmZlckhhbmRsZSk7CisgICAgbVN0YXRlLnNldFBpeGVsVW5wYWNrQnVmZmVyQmluZGluZyhidWZm
ZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OnVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCkBAIC02
NjQsOSArODExLDExIEBACiAgICAgbVN0YXRlLnNldFByb2dyYW0oZ2V0UHJvZ3JhbShwcm9ncmFt
KSk7CiB9CiAKLXZvaWQgQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMdWludCB0cmFu
c2Zvcm1GZWVkYmFjaykKK3ZvaWQgQ29udGV4dDo6YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMdWlu
dCB0cmFuc2Zvcm1GZWVkYmFja0hhbmRsZSkKIHsKLSAgICBtU3RhdGUuc2V0VHJhbnNmb3JtRmVl
ZGJhY2tCaW5kaW5nKGdldFRyYW5zZm9ybUZlZWRiYWNrKHRyYW5zZm9ybUZlZWRiYWNrKSk7Cisg
ICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0KKyAgICAgICAgY2hlY2tU
cmFuc2Zvcm1GZWVkYmFja0FsbG9jYXRpb24odHJhbnNmb3JtRmVlZGJhY2tIYW5kbGUpOworICAg
IG1TdGF0ZS5zZXRUcmFuc2Zvcm1GZWVkYmFja0JpbmRpbmcodHJhbnNmb3JtRmVlZGJhY2spOwog
fQogCiBFcnJvciBDb250ZXh0OjpiZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBxdWVy
eSkKQEAgLTcwMCwyMyArODQ5LDczIEBACiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1GcmFtZWJ1
ZmZlciAqQ29udGV4dDo6Z2V0RnJhbWVidWZmZXIodW5zaWduZWQgaW50IGhhbmRsZSkgY29uc3QK
K0Vycm9yIENvbnRleHQ6OnF1ZXJ5Q291bnRlcihHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQpCiB7
Ci0gICAgRnJhbWVidWZmZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGZyYW1lYnVmZmVyID0gbUZyYW1l
YnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RJTUVTVEFN
UF9FWFQpOwogCi0gICAgaWYgKGZyYW1lYnVmZmVyID09IG1GcmFtZWJ1ZmZlck1hcC5lbmQoKSkK
KyAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBnZXRRdWVyeShpZCwgdHJ1ZSwgdGFyZ2V0KTsKKyAg
ICBBU1NFUlQocXVlcnlPYmplY3QpOworCisgICAgcmV0dXJuIHF1ZXJ5T2JqZWN0LT5xdWVyeUNv
dW50ZXIoKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRRdWVyeWl2KEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9RVUVSWV9FWFQ6
CisgICAgICAgICAgICBwYXJhbXNbMF0gPSBnZXRTdGF0ZSgpLmdldEFjdGl2ZVF1ZXJ5SWQodGFy
Z2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1FVRVJZX0NPVU5URVJf
QklUU19FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1RJTUVfRUxBUFNFRF9FWFQ6CisgICAgICAgICAgICAgICAg
ICAgIHBhcmFtc1swXSA9IGdldEV4dGVuc2lvbnMoKS5xdWVyeUNvdW50ZXJCaXRzVGltZUVsYXBz
ZWQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR0xf
VElNRVNUQU1QX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zWzBdID0gZ2V0RXh0ZW5z
aW9ucygpLnF1ZXJ5Q291bnRlckJpdHNUaW1lc3RhbXA7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtc1swXSA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gZnJhbWVidWZmZXIt
PnNlY29uZDsKLSAgICB9CiB9CiAKK0Vycm9yIENvbnRleHQ6OmdldFF1ZXJ5T2JqZWN0aXYoR0x1
aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIEdldFF1
ZXJ5T2JqZWN0UGFyYW1ldGVyKHRoaXMsIGlkLCBwbmFtZSwgcGFyYW1zKTsKK30KKworRXJyb3Ig
Q29udGV4dDo6Z2V0UXVlcnlPYmplY3R1aXYoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWlu
dCAqcGFyYW1zKQoreworICAgIHJldHVybiBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcih0aGlzLCBp
ZCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK0Vycm9yIENvbnRleHQ6OmdldFF1ZXJ5T2JqZWN0aTY0
dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKQoreworICAgIHJldHVy
biBHZXRRdWVyeU9iamVjdFBhcmFtZXRlcih0aGlzLCBpZCwgcG5hbWUsIHBhcmFtcyk7Cit9CisK
K0Vycm9yIENvbnRleHQ6OmdldFF1ZXJ5T2JqZWN0dWk2NHYoR0x1aW50IGlkLCBHTGVudW0gcG5h
bWUsIEdMdWludDY0ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIEdldFF1ZXJ5T2JqZWN0UGFyYW1l
dGVyKHRoaXMsIGlkLCBwbmFtZSwgcGFyYW1zKTsKK30KKworRnJhbWVidWZmZXIgKkNvbnRleHQ6
OmdldEZyYW1lYnVmZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0Cit7CisgICAgYXV0byBm
cmFtZWJ1ZmZlckl0ID0gbUZyYW1lYnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKKyAgICByZXR1cm4g
KChmcmFtZWJ1ZmZlckl0ID09IG1GcmFtZWJ1ZmZlck1hcC5lbmQoKSkgPyBudWxscHRyIDogZnJh
bWVidWZmZXJJdC0+c2Vjb25kKTsKK30KKwogRmVuY2VOViAqQ29udGV4dDo6Z2V0RmVuY2VOVih1
bnNpZ25lZCBpbnQgaGFuZGxlKQogewotICAgIEZlbmNlTlZNYXA6Oml0ZXJhdG9yIGZlbmNlID0g
bUZlbmNlTlZNYXAuZmluZChoYW5kbGUpOworICAgIGF1dG8gZmVuY2UgPSBtRmVuY2VOVk1hcC5m
aW5kKGhhbmRsZSk7CiAKICAgICBpZiAoZmVuY2UgPT0gbUZlbmNlTlZNYXAuZW5kKCkpCiAgICAg
ewpAQCAtNzMwLDcgKzkyOSw3IEBACiAKIFF1ZXJ5ICpDb250ZXh0OjpnZXRRdWVyeSh1bnNpZ25l
ZCBpbnQgaGFuZGxlLCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpCiB7Ci0gICAgUXVlcnlNYXA6
Oml0ZXJhdG9yIHF1ZXJ5ID0gbVF1ZXJ5TWFwLmZpbmQoaGFuZGxlKTsKKyAgICBhdXRvIHF1ZXJ5
ID0gbVF1ZXJ5TWFwLmZpbmQoaGFuZGxlKTsKIAogICAgIGlmIChxdWVyeSA9PSBtUXVlcnlNYXAu
ZW5kKCkpCiAgICAgewpAQCAtNzQ3LDExICs5NDYsMTYgQEAKICAgICB9CiB9CiAKK1F1ZXJ5ICpD
b250ZXh0OjpnZXRRdWVyeShHTHVpbnQgaGFuZGxlKSBjb25zdAoreworICAgIGF1dG8gaXRlciA9
IG1RdWVyeU1hcC5maW5kKGhhbmRsZSk7CisgICAgcmV0dXJuIChpdGVyICE9IG1RdWVyeU1hcC5l
bmQoKSkgPyBpdGVyLT5zZWNvbmQgOiBudWxscHRyOworfQorCiBUZXh0dXJlICpDb250ZXh0Ojpn
ZXRUYXJnZXRUZXh0dXJlKEdMZW51bSB0YXJnZXQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKFZhbGlk
VGV4dHVyZVRhcmdldCh0aGlzLCB0YXJnZXQpKTsKLQotICAgIHJldHVybiBnZXRTYW1wbGVyVGV4
dHVyZShtU3RhdGUuZ2V0QWN0aXZlU2FtcGxlcigpLCB0YXJnZXQpOworICAgIHJldHVybiBtU3Rh
dGUuZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwogfQogCiBUZXh0dXJlICpDb250ZXh0OjpnZXRT
YW1wbGVyVGV4dHVyZSh1bnNpZ25lZCBpbnQgc2FtcGxlciwgR0xlbnVtIHR5cGUpIGNvbnN0CkBA
IC03OTQsNiArOTk4LDkgQEAKICAgICAgICAgQVNTRVJUKG1FeHRlbnNpb25zLnRleHR1cmVGaWx0
ZXJBbmlzb3Ryb3BpYyk7CiAgICAgICAgICpwYXJhbXMgPSBtRXh0ZW5zaW9ucy5tYXhUZXh0dXJl
QW5pc290cm9weTsKICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0xP
RF9CSUFTOgorICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4TE9EQmlhczsKKyAgICAgICAgYnJl
YWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICBtU3RhdGUuZ2V0RmxvYXR2KHBuYW1lLCBwYXJh
bXMpOwogICAgICAgICBicmVhazsKQEAgLTgxNiw3ICsxMDIzLDcgQEAKICAgICAgIGNhc2UgR0xf
TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOiAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBz
Lm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzOyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzogICAgICAgICAgICAgICAgICAq
cGFyYW1zID0gbUNhcHMubWF4VGV4dHVyZUltYWdlVW5pdHM7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6
ICAgICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOyAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1VO
SUZPUk1fQ09NUE9ORU5UUzogICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heEZyYWdtZW50SW5w
dXRDb21wb25lbnRzOyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9N
QVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTOiAgICAgICAgICAqcGFyYW1zID0gbUNhcHMu
bWF4RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50czsgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICBjYXNlIEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRTogICAgICAgICAgICAgICAgICAgICpw
YXJhbXMgPSBtQ2Fwcy5tYXhSZW5kZXJidWZmZXJTaXplOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX0VYVDogICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbG9yQXR0YWNobWVudHM7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9NQVhfRFJBV19CVUZGRVJT
X0VYVDogICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RHJhd0J1ZmZlcnM7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MzEsNiArMTAzOCwx
MCBAQAogICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTOiAgICAgICAgICAg
ICAgICAqcGFyYW1zID0gbUNhcHMubWF4VmVydGV4VW5pZm9ybUJsb2NrczsgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JM
T0NLUzogICAgICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9j
a3M7ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJ
TkVEX1VOSUZPUk1fQkxPQ0tTOiAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHM7ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTOiAgICAgICAgICAgICAqcGFyYW1zID0g
bUNhcHMubWF4VmVydGV4T3V0cHV0Q29tcG9uZW50czsgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9JTlBVVF9DT01QT05FTlRTOiAgICAgICAg
ICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhGcmFnbWVudElucHV0Q29tcG9uZW50czsgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VU
OiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1pblByb2dyYW1UZXhlbE9mZnNldDsg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9NQVhfUFJPR1JB
TV9URVhFTF9PRkZTRVQ6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4UHJvZ3Jh
bVRleGVsT2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEdMX01BSk9SX1ZFUlNJT046ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBt
Q2xpZW50VmVyc2lvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgR0xfTUlOT1JfVkVSU0lPTjogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKnBhcmFtcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUzogICAg
ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4RWxlbWVudHNJbmRpY2VzOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MzgsNyArMTA0OSw5IEBACiAgICAg
ICBjYXNlIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfSU5URVJMRUFWRURfQ09NUE9ORU5UUzog
KnBhcmFtcyA9IG1DYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrSW50ZXJsZWF2ZWRDb21wb25lbnRz
OyBicmVhazsKICAgICAgIGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19TRVBBUkFURV9B
VFRSSUJTOiAgICAgICAqcGFyYW1zID0gbUNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0
ZUF0dHJpYnV0ZXM7ICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURC
QUNLX1NFUEFSQVRFX0NPTVBPTkVOVFM6ICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhUcmFuc2Zvcm1G
ZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50czsgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX05VTV9D
T01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzogICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2Fz
dDxHTGludD4obUNhcHMuY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnNpemUoKSk7ICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAgICAg
ICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4obUNhcHMuY29tcHJlc3NlZFRleHR1cmVGb3Jt
YXRzLnNpemUoKSk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01BWF9TQU1QTEVT
X0FOR0xFOiAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhTYW1wbGVz
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
R0xfTUFYX1ZJRVdQT1JUX0RJTVM6CiAgICAgICAgIHsKQEAgLTg1MywxMyArMTA2NiwxMyBAQAog
ICAgICAgICAqcGFyYW1zID0gbVJlc2V0U3RyYXRlZ3k7CiAgICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOgotICAgICAgICAqcGFyYW1zID0gc3Rh
dGljX2Nhc3Q8R0xpbnQ+KG1DYXBzLnNoYWRlckJpbmFyeUZvcm1hdHMuc2l6ZSgpKTsKKyAgICAg
ICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1DYXBzLnNoYWRlckJpbmFyeUZvcm1h
dHMuc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1NIQURFUl9CSU5BUllf
Rk9STUFUUzoKICAgICAgICAgc3RkOjpjb3B5KG1DYXBzLnNoYWRlckJpbmFyeUZvcm1hdHMuYmVn
aW4oKSwgbUNhcHMuc2hhZGVyQmluYXJ5Rm9ybWF0cy5lbmQoKSwgcGFyYW1zKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTOgotICAgICAg
ICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1DYXBzLnByb2dyYW1CaW5hcnlGb3JtYXRz
LnNpemUoKSk7CisgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50PihtQ2Fwcy5w
cm9ncmFtQmluYXJ5Rm9ybWF0cy5zaXplKCkpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
R0xfUFJPR1JBTV9CSU5BUllfRk9STUFUUzoKICAgICAgICAgc3RkOjpjb3B5KG1DYXBzLnByb2dy
YW1CaW5hcnlGb3JtYXRzLmJlZ2luKCksIG1DYXBzLnByb2dyYW1CaW5hcnlGb3JtYXRzLmVuZCgp
LCBwYXJhbXMpOwpAQCAtODY3LDYgKzEwODAsMjYgQEAKICAgICAgIGNhc2UgR0xfTlVNX0VYVEVO
U0lPTlM6CiAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4obUV4dGVuc2lvblN0
cmluZ3Muc2l6ZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICAgIC8vIEdMX0tIUl9kZWJ1Zwor
ICAgICAgY2FzZSBHTF9NQVhfREVCVUdfTUVTU0FHRV9MRU5HVEg6CisgICAgICAgICAgKnBhcmFt
cyA9IG1FeHRlbnNpb25zLm1heERlYnVnTWVzc2FnZUxlbmd0aDsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfTUFYX0RFQlVHX0xPR0dFRF9NRVNTQUdFUzoKKyAgICAgICAgICAqcGFy
YW1zID0gbUV4dGVuc2lvbnMubWF4RGVidWdMb2dnZWRNZXNzYWdlczsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfTUFYX0RFQlVHX0dST1VQX1NUQUNLX0RFUFRIOgorICAgICAgICAg
ICpwYXJhbXMgPSBtRXh0ZW5zaW9ucy5tYXhEZWJ1Z0dyb3VwU3RhY2tEZXB0aDsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgIGNhc2UgR0xfTUFYX0xBQkVMX0xFTkdUSDoKKyAgICAgICAgICAqcGFy
YW1zID0gbUV4dGVuc2lvbnMubWF4TGFiZWxMZW5ndGg7CisgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgIC8vIEdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeQorICAgICAgY2FzZSBHTF9HUFVfRElT
Sk9JTlRfRVhUOgorICAgICAgICAgICpwYXJhbXMgPSBtUmVuZGVyZXItPmdldEdQVURpc2pvaW50
KCk7CisgICAgICAgICAgYnJlYWs7CisKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIG1TdGF0ZS5n
ZXRJbnRlZ2VydihnZXREYXRhKCksIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBicmVhazsKQEAg
LTg5NCwxMiArMTEyNywyMiBAQAogICAgICAgY2FzZSBHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9V
VDoKICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1heFNlcnZlcldhaXRUaW1lb3V0OwogICAgICAg
ICBicmVhazsKKworICAgICAgLy8gR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5CisgICAgICBj
YXNlIEdMX1RJTUVTVEFNUF9FWFQ6CisgICAgICAgICAgKnBhcmFtcyA9IG1SZW5kZXJlci0+Z2V0
VGltZXN0YW1wKCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICBV
TlJFQUNIQUJMRSgpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKK3ZvaWQgQ29udGV4dDo6
Z2V0UG9pbnRlcnYoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKSBjb25zdAoreworICAgIG1T
dGF0ZS5nZXRQb2ludGVydihwbmFtZSwgcGFyYW1zKTsKK30KKwogYm9vbCBDb250ZXh0OjpnZXRJ
bmRleGVkSW50ZWdlcnYoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSkK
IHsKICAgICAvLyBRdWVyaWVzIGFib3V0IGNvbnRleHQgY2FwYWJpbGl0aWVzIGFuZCBtYXhpbXVt
cyBhcmUgYW5zd2VyZWQgYnkgQ29udGV4dC4KQEAgLTEwMzksMjAgKzEyODIsNiBAQAogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9Q
SVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOgotICAgICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVG
RkVSX0JJTkRJTkc6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtRXh0ZW5zaW9ucy5waXhl
bEJ1ZmZlck9iamVjdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqdHlwZSA9IEdM
X0lOVDsKLSAgICAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICBjYXNlIEdMX01BWF9WSUVXUE9SVF9ESU1TOgogICAgICAgICB7CiAgICAgICAgICAgICAqdHlw
ZSA9IEdMX0lOVDsKQEAgLTExMjMsOCArMTM1Miw4OSBAQAogICAgICAgICAqdHlwZSA9IEdMX0ZM
T0FUOwogICAgICAgICAqbnVtUGFyYW1zID0gMTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICBjYXNlIEdMX1RJTUVTVEFNUF9FWFQ6CisgICAgICAgICAgaWYgKCFtRXh0ZW5zaW9ucy5kaXNq
b2ludFRpbWVyUXVlcnkpCisgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgfQorICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlRfNjRfQU5HTEVYOwor
ICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
Y2FzZSBHTF9HUFVfRElTSk9JTlRfRVhUOgorICAgICAgICAgIGlmICghbUV4dGVuc2lvbnMuZGlz
am9pbnRUaW1lclF1ZXJ5KQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgIH0KKyAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAg
ICpudW1QYXJhbXMgPSAxOworICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIGlm
IChtRXh0ZW5zaW9ucy5kZWJ1ZykKKyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTOgorICAgICAg
ICAgICAgY2FzZSBHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNTQUdFX0xFTkdUSDoKKyAgICAgICAg
ICAgIGNhc2UgR0xfREVCVUdfR1JPVVBfU1RBQ0tfREVQVEg6CisgICAgICAgICAgICBjYXNlIEdM
X01BWF9ERUJVR19NRVNTQUdFX0xFTkdUSDoKKyAgICAgICAgICAgIGNhc2UgR0xfTUFYX0RFQlVH
X0xPR0dFRF9NRVNTQUdFUzoKKyAgICAgICAgICAgIGNhc2UgR0xfTUFYX0RFQlVHX0dST1VQX1NU
QUNLX0RFUFRIOgorICAgICAgICAgICAgY2FzZSBHTF9NQVhfTEFCRUxfTEVOR1RIOgorICAgICAg
ICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFt
cyA9IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgIGNhc2Ug
R0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTOgorICAgICAgICAgICAgY2FzZSBHTF9ERUJVR19P
VVRQVVQ6CisgICAgICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0JPT0w7CisgICAgICAgICAg
ICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgRVMzLjArIHBhcmFtZXRlciBuYW1lcyB3
aGljaCBhcmUgYWxzbyBleHBvc2VkIGFzIEVTMiBleHRlbnNpb25zCisgICAgc3dpdGNoIChwbmFt
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUEFDS19ST1dfTEVOR1RIOgorICAgICAgICBjYXNl
IEdMX1BBQ0tfU0tJUF9ST1dTOgorICAgICAgICBjYXNlIEdMX1BBQ0tfU0tJUF9QSVhFTFM6Cisg
ICAgICAgICAgICBpZiAoKG1DbGllbnRWZXJzaW9uIDwgMykgJiYgIW1FeHRlbnNpb25zLnBhY2tT
dWJpbWFnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAg
ICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2Fz
ZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9ST1dT
OgorICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgIGlmICgo
bUNsaWVudFZlcnNpb24gPCAzKSAmJiAhbUV4dGVuc2lvbnMudW5wYWNrU3ViaW1hZ2UpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICpudW1QYXJhbXMg
PSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FS
UkFZX0JJTkRJTkc6CisgICAgICAgICAgICBpZiAoKG1DbGllbnRWZXJzaW9uIDwgMykgJiYgIW1F
eHRlbnNpb25zLnZlcnRleEFycmF5T2JqZWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp0eXBlICAgICAg
PSBHTF9JTlQ7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBjYXNlIEdMX1BJWEVMX1BBQ0tfQlVGRkVSX0JJTkRJTkc6CisgICAg
ICAgIGNhc2UgR0xfUElYRUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgaWYg
KChtQ2xpZW50VmVyc2lvbiA8IDMpICYmICFtRXh0ZW5zaW9ucy5waXhlbEJ1ZmZlck9iamVjdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgKm51bVBh
cmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAobUNs
aWVudFZlcnNpb24gPCAzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE0MCw2
ICsxNDUwLDggQEAKICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9CSU5E
SU5HOgogICAgICAgY2FzZSBHTF9DT1BZX1JFQURfQlVGRkVSX0JJTkRJTkc6CiAgICAgICBjYXNl
IEdMX0NPUFlfV1JJVEVfQlVGRkVSX0JJTkRJTkc6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfQklO
RElORzoKKyAgICAgIGNhc2UgR0xfUkVBRF9CVUZGRVI6CiAgICAgICBjYXNlIEdMX1RFWFRVUkVf
QklORElOR18zRDoKICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOgogICAg
ICAgY2FzZSBHTF9NQVhfM0RfVEVYVFVSRV9TSVpFOgpAQCAtMTE0NywxMCArMTQ1OSwxMyBAQAog
ICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQkxPQ0tTOgogICAgICAgY2FzZSBHTF9N
QVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1M6CiAgICAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9V
TklGT1JNX0JMT0NLUzoKKyAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9PVVRQVVRfQ09NUE9ORU5U
UzoKKyAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFM6CiAgICAgICBj
YXNlIEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFM6Ci0gICAgICBjYXNlIEdMX1ZFUlRFWF9BUlJB
WV9CSU5ESU5HOgogICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzoK
ICAgICAgIGNhc2UgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzoKKyAgICAgIGNh
c2UgR0xfTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUOgorICAgICAgY2FzZSBHTF9NQVhfUFJPR1JB
TV9URVhFTF9PRkZTRVQ6CiAgICAgICBjYXNlIEdMX05VTV9FWFRFTlNJT05TOgogICAgICAgY2Fz
ZSBHTF9NQUpPUl9WRVJTSU9OOgogICAgICAgY2FzZSBHTF9NSU5PUl9WRVJTSU9OOgpAQCAtMTE1
OSw2ICsxNDc0LDggQEAKICAgICAgIGNhc2UgR0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRF
UkxFQVZFRF9DT01QT05FTlRTOgogICAgICAgY2FzZSBHTF9NQVhfVFJBTlNGT1JNX0ZFRURCQUNL
X1NFUEFSQVRFX0FUVFJJQlM6CiAgICAgICBjYXNlIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tf
U0VQQVJBVEVfQ09NUE9ORU5UUzoKKyAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoK
KyAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgogICAgICAgICB7CiAgICAgICAgICAg
ICAqdHlwZSA9IEdMX0lOVDsKICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwpAQCAtMTE3OCwx
MSArMTQ5NSwyMCBAQAogCiAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19BQ1RJVkU6
CiAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQ6CisgICAgICBjYXNlIEdM
X1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYOgorICAgICAgY2FzZSBHTF9SQVNURVJJWkVS
X0RJU0NBUkQ6CiAgICAgICAgIHsKICAgICAgICAgICAgICp0eXBlID0gR0xfQk9PTDsKICAgICAg
ICAgICAgICpudW1QYXJhbXMgPSAxOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0xPRF9CSUFTOgorICAgICAgICB7CisgICAgICAg
ICAgICAqdHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTIxNywxOCArMTU0Myw2OSBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRXJyb3IgQ29u
dGV4dDo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQs
IEdMc2l6ZWkgaW5zdGFuY2VzKQorRXJyb3IgQ29udGV4dDo6ZHJhd0FycmF5cyhHTGVudW0gbW9k
ZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7Ci0gICAgcmV0dXJuIG1SZW5kZXJlci0+
ZHJhd0FycmF5cyhnZXREYXRhKCksIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VzKTsKKyAg
ICBzeW5jUmVuZGVyZXJTdGF0ZSgpOworICAgIEVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5kcmF3
QXJyYXlzKGdldERhdGEoKSwgbW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIE1hcmtU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlclVzYWdlKG1TdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVl
ZGJhY2soKSk7CisKKyAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1FcnJvciBD
b250ZXh0OjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywg
R0xzaXplaSBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcng6
OlJhbmdlVUkgJmluZGV4UmFuZ2UpCitFcnJvciBDb250ZXh0OjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5j
ZUNvdW50KQogewotICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdFbGVtZW50cyhnZXREYXRhKCks
IG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsIGluZGV4UmFuZ2UpOworICAg
IHN5bmNSZW5kZXJlclN0YXRlKCk7CisgICAgRXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmRyYXdB
cnJheXNJbnN0YW5jZWQoZ2V0RGF0YSgpLCBtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291
bnQpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJy
b3I7CisgICAgfQorCisgICAgTWFya1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyVXNhZ2UobVN0YXRl
LmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpKTsKKworICAgIHJldHVybiBFcnJvcihHTF9O
T19FUlJPUik7CiB9CiAKK0Vycm9yIENvbnRleHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbmRleFJhbmdlICZpbmRleFJhbmdlKQoreworICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7Cisg
ICAgcmV0dXJuIG1SZW5kZXJlci0+ZHJhd0VsZW1lbnRzKGdldERhdGEoKSwgbW9kZSwgY291bnQs
IHR5cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOworfQorCitFcnJvciBDb250ZXh0OjpkcmF3RWxl
bWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0
ZSgpOworICAgIHJldHVybiBtUmVuZGVyZXItPmRyYXdFbGVtZW50c0luc3RhbmNlZChnZXREYXRh
KCksIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2UpOworfQorCitFcnJvciBD
b250ZXh0OjpkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRl
eFJhbmdlKQoreworICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CisgICAgcmV0dXJuIG1SZW5kZXJl
ci0+ZHJhd1JhbmdlRWxlbWVudHMoZ2V0RGF0YSgpLCBtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwg
dHlwZSwgaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleFJhbmdlKTsKK30KKwogRXJyb3IgQ29udGV4dDo6Zmx1c2goKQogewogICAgIHJldHVybiBt
UmVuZGVyZXItPmZsdXNoKCk7CkBAIC0xMjM5LDExICsxNjE2LDM2IEBACiAgICAgcmV0dXJuIG1S
ZW5kZXJlci0+ZmluaXNoKCk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6aW5zZXJ0RXZlbnRNYXJrZXIo
R0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICBBU1NFUlQobVJlbmRl
cmVyKTsKKyAgICBtUmVuZGVyZXItPmluc2VydEV2ZW50TWFya2VyKGxlbmd0aCwgbWFya2VyKTsK
K30KKwordm9pZCBDb250ZXh0OjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0
IGNoYXIgKm1hcmtlcikKK3sKKyAgICBBU1NFUlQobVJlbmRlcmVyKTsKKyAgICBtUmVuZGVyZXIt
PnB1c2hHcm91cE1hcmtlcihsZW5ndGgsIG1hcmtlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6cG9w
R3JvdXBNYXJrZXIoKQoreworICAgIEFTU0VSVChtUmVuZGVyZXIpOworICAgIG1SZW5kZXJlci0+
cG9wR3JvdXBNYXJrZXIoKTsKK30KKwogdm9pZCBDb250ZXh0OjpyZWNvcmRFcnJvcihjb25zdCBF
cnJvciAmZXJyb3IpCiB7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAg
IG1FcnJvcnMuaW5zZXJ0KGVycm9yLmdldENvZGUoKSk7CisKKyAgICAgICAgaWYgKCFlcnJvci5n
ZXRNZXNzYWdlKCkuZW1wdHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byAmZGVidWcg
PSBtU3RhdGUuZ2V0RGVidWcoKTsKKyAgICAgICAgICAgIGRlYnVnLmluc2VydE1lc3NhZ2UoR0xf
REVCVUdfU09VUkNFX0FQSSwgR0xfREVCVUdfVFlQRV9FUlJPUiwgZXJyb3IuZ2V0SUQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVCVUdfU0VWRVJJVFlfSElHSCwgZXJy
b3IuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTI5NiwxNiArMTY5
OCwxMSBAQAogICAgIHJldHVybiAobVJlc2V0U3RyYXRlZ3kgPT0gR0xfTE9TRV9DT05URVhUX09O
X1JFU0VUX0VYVCk7CiB9CiAKLWludCBDb250ZXh0OjpnZXRDbGllbnRWZXJzaW9uKCkgY29uc3QK
K2NvbnN0IGVnbDo6Q29uZmlnICpDb250ZXh0OjpnZXRDb25maWcoKSBjb25zdAogewotICAgIHJl
dHVybiBtQ2xpZW50VmVyc2lvbjsKKyAgICByZXR1cm4gbUNvbmZpZzsKIH0KIAotRUdMaW50IENv
bnRleHQ6OmdldENvbmZpZ0lEKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbmZpZ0lEOwotfQot
CiBFR0xlbnVtIENvbnRleHQ6OmdldENsaWVudFR5cGUoKSBjb25zdAogewogICAgIHJldHVybiBt
Q2xpZW50VHlwZTsKQEAgLTEzMTMsMjcgKzE3MTAsNzkgQEAKIAogRUdMZW51bSBDb250ZXh0Ojpn
ZXRSZW5kZXJCdWZmZXIoKSBjb25zdAogewotICAgIEFTU0VSVChtRnJhbWVidWZmZXJNYXAuY291
bnQoMCkgPiAwKTsKLSAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtRnJhbWVi
dWZmZXJNYXAuZmluZCgwKS0+c2Vjb25kOwotICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqYmFja0F0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0QXR0YWNobWVudChHTF9CQUNLKTsK
LSAgICByZXR1cm4gYmFja0F0dGFjaG1lbnQgPyBiYWNrQXR0YWNobWVudC0+Z2V0U3VyZmFjZSgp
LT5nZXRSZW5kZXJCdWZmZXIoKSA6IEVHTF9OT05FOworICAgIGF1dG8gZnJhbWVidWZmZXJJdCA9
IG1GcmFtZWJ1ZmZlck1hcC5maW5kKDApOworICAgIGlmIChmcmFtZWJ1ZmZlckl0ICE9IG1GcmFt
ZWJ1ZmZlck1hcC5lbmQoKSkKKyAgICB7CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFt
ZWJ1ZmZlciAgICAgICAgICAgICAgPSBmcmFtZWJ1ZmZlckl0LT5zZWNvbmQ7CisgICAgICAgIGNv
bnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYmFja0F0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+
Z2V0QXR0YWNobWVudChHTF9CQUNLKTsKKworICAgICAgICBBU1NFUlQoYmFja0F0dGFjaG1lbnQg
IT0gbnVsbHB0cik7CisgICAgICAgIHJldHVybiBiYWNrQXR0YWNobWVudC0+Z2V0U3VyZmFjZSgp
LT5nZXRSZW5kZXJCdWZmZXIoKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVHTF9OT05FOworICAgIH0KIH0KIAotY29uc3QgQ2FwcyAmQ29udGV4dDo6Z2V0Q2Fwcygp
IGNvbnN0CitWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Y2hlY2tWZXJ0ZXhBcnJheUFsbG9jYXRpb24o
R0x1aW50IHZlcnRleEFycmF5SGFuZGxlKQogewotICAgIHJldHVybiBtQ2FwczsKKyAgICAvLyBP
bmx5IGNhbGxlZCBhZnRlciBhIHByaW9yIGNhbGwgdG8gR2VuLgorICAgIFZlcnRleEFycmF5ICp2
ZXJ0ZXhBcnJheSA9IGdldFZlcnRleEFycmF5KHZlcnRleEFycmF5SGFuZGxlKTsKKyAgICBpZiAo
IXZlcnRleEFycmF5KQorICAgIHsKKyAgICAgICAgdmVydGV4QXJyYXkgICAgICAgICAgICAgICAg
ICAgICAgICA9IG5ldyBWZXJ0ZXhBcnJheShtUmVuZGVyZXIsIHZlcnRleEFycmF5SGFuZGxlLCBN
QVhfVkVSVEVYX0FUVFJJQlMpOworICAgICAgICBtVmVydGV4QXJyYXlNYXBbdmVydGV4QXJyYXlI
YW5kbGVdID0gdmVydGV4QXJyYXk7CisgICAgfQorCisgICAgcmV0dXJuIHZlcnRleEFycmF5Owog
fQogCi1jb25zdCBUZXh0dXJlQ2Fwc01hcCAmQ29udGV4dDo6Z2V0VGV4dHVyZUNhcHMoKSBjb25z
dAorVHJhbnNmb3JtRmVlZGJhY2sgKkNvbnRleHQ6OmNoZWNrVHJhbnNmb3JtRmVlZGJhY2tBbGxv
Y2F0aW9uKEdMdWludCB0cmFuc2Zvcm1GZWVkYmFja0hhbmRsZSkKIHsKLSAgICByZXR1cm4gbVRl
eHR1cmVDYXBzOworICAgIC8vIE9ubHkgY2FsbGVkIGFmdGVyIGEgcHJpb3IgY2FsbCB0byBHZW4u
CisgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gZ2V0VHJhbnNmb3Jt
RmVlZGJhY2sodHJhbnNmb3JtRmVlZGJhY2tIYW5kbGUpOworICAgIGlmICghdHJhbnNmb3JtRmVl
ZGJhY2spCisgICAgeworICAgICAgICB0cmFuc2Zvcm1GZWVkYmFjayA9IG5ldyBUcmFuc2Zvcm1G
ZWVkYmFjayhtUmVuZGVyZXIsIHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxlLCBtQ2Fwcyk7CisgICAg
ICAgIHRyYW5zZm9ybUZlZWRiYWNrLT5hZGRSZWYoKTsKKyAgICAgICAgbVRyYW5zZm9ybUZlZWRi
YWNrTWFwW3RyYW5zZm9ybUZlZWRiYWNrSGFuZGxlXSA9IHRyYW5zZm9ybUZlZWRiYWNrOworICAg
IH0KKworICAgIHJldHVybiB0cmFuc2Zvcm1GZWVkYmFjazsKIH0KIAotY29uc3QgRXh0ZW5zaW9u
cyAmQ29udGV4dDo6Z2V0RXh0ZW5zaW9ucygpIGNvbnN0CitGcmFtZWJ1ZmZlciAqQ29udGV4dDo6
Y2hlY2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IGZyYW1lYnVmZmVyKQogewotICAgIHJl
dHVybiBtRXh0ZW5zaW9uczsKKyAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gQmluZCB3aXRob3V0
IGEgcHJpb3IgY2FsbCB0byBHZW4uCisgICAgYXV0byBmcmFtZWJ1ZmZlckl0ID0gbUZyYW1lYnVm
ZmVyTWFwLmZpbmQoZnJhbWVidWZmZXIpOworICAgIGJvb2wgbmV2ZXJDcmVhdGVkID0gZnJhbWVi
dWZmZXJJdCA9PSBtRnJhbWVidWZmZXJNYXAuZW5kKCk7CisgICAgaWYgKG5ldmVyQ3JlYXRlZCB8
fCBmcmFtZWJ1ZmZlckl0LT5zZWNvbmQgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIEZyYW1l
YnVmZmVyICpuZXdGQk8gPSBuZXcgRnJhbWVidWZmZXIobUNhcHMsIG1SZW5kZXJlciwgZnJhbWVi
dWZmZXIpOworICAgICAgICBpZiAobmV2ZXJDcmVhdGVkKQorICAgICAgICB7CisgICAgICAgICAg
ICBtRnJhbWVidWZmZXJIYW5kbGVBbGxvY2F0b3IucmVzZXJ2ZShmcmFtZWJ1ZmZlcik7CisgICAg
ICAgICAgICBtRnJhbWVidWZmZXJNYXBbZnJhbWVidWZmZXJdID0gbmV3RkJPOworICAgICAgICAg
ICAgcmV0dXJuIG5ld0ZCTzsKKyAgICAgICAgfQorCisgICAgICAgIGZyYW1lYnVmZmVySXQtPnNl
Y29uZCA9IG5ld0ZCTzsKKyAgICB9CisKKyAgICByZXR1cm4gZnJhbWVidWZmZXJJdC0+c2Vjb25k
OwogfQogCitib29sIENvbnRleHQ6OmlzVmVydGV4QXJyYXlHZW5lcmF0ZWQoR0x1aW50IHZlcnRl
eEFycmF5KQoreworICAgIHJldHVybiBtVmVydGV4QXJyYXlNYXAuZmluZCh2ZXJ0ZXhBcnJheSkg
IT0gbVZlcnRleEFycmF5TWFwLmVuZCgpOworfQorCitib29sIENvbnRleHQ6OmlzVHJhbnNmb3Jt
RmVlZGJhY2tHZW5lcmF0ZWQoR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrKQoreworICAgIHJldHVy
biBtVHJhbnNmb3JtRmVlZGJhY2tNYXAuZmluZCh0cmFuc2Zvcm1GZWVkYmFjaykgIT0gbVRyYW5z
Zm9ybUZlZWRiYWNrTWFwLmVuZCgpOworfQorCiB2b2lkIENvbnRleHQ6OmRldGFjaFRleHR1cmUo
R0x1aW50IHRleHR1cmUpCiB7CiAgICAgLy8gU2ltcGxlIHBhc3MtdGhyb3VnaCB0byBTdGF0ZSdz
IGRldGFjaFRleHR1cmUgbWV0aG9kLCBhcyB0ZXh0dXJlcyBkbyBub3QgcmVxdWlyZQpAQCAtMTM0
NSwyMCArMTc5NCwxNSBAQAogCiB2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVm
ZmVyKQogewotICAgIC8vIEJ1ZmZlciBkZXRhY2htZW50IGlzIGhhbmRsZWQgYnkgQ29udGV4dCwg
YmVjYXVzZSB0aGUgYnVmZmVyIG11c3QgYWxzbyBiZQotICAgIC8vIGF0dGFjaGVkIGZyb20gYW55
IFZBT3MgaW4gZXhpc3RlbmNlLCBhbmQgQ29udGV4dCBob2xkcyB0aGUgVkFPIG1hcC4KKyAgICAv
LyBTaW1wbGUgcGFzcy10aHJvdWdoIHRvIFN0YXRlJ3MgZGV0YWNoQnVmZmVyIG1ldGhvZCwgc2lu
Y2UKKyAgICAvLyBvbmx5IGJ1ZmZlciBhdHRhY2htZW50cyB0byBjb250YWluZXIgb2JqZWN0cyB0
aGF0IGFyZSBib3VuZCB0byB0aGUgY3VycmVudCBjb250ZXh0CisgICAgLy8gc2hvdWxkIGJlIGRl
dGFjaGVkLiBBbmQgYWxsIHRob3NlIGFyZSBhdmFpbGFibGUgaW4gU3RhdGUuCiAKLSAgICAvLyBb
T3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkgcGFnZSAyMjoKLSAgICAvLyBJZiBhIGJ1ZmZl
ciBvYmplY3QgaXMgZGVsZXRlZCB3aGlsZSBpdCBpcyBib3VuZCwgYWxsIGJpbmRpbmdzIHRvIHRo
YXQgb2JqZWN0IGluIHRoZSBjdXJyZW50IGNvbnRleHQKLSAgICAvLyAoaS5lLiBpbiB0aGUgdGhy
ZWFkIHRoYXQgY2FsbGVkIERlbGV0ZS1CdWZmZXJzKSBhcmUgcmVzZXQgdG8gemVyby4KLQotICAg
IG1TdGF0ZS5yZW1vdmVBcnJheUJ1ZmZlckJpbmRpbmcoYnVmZmVyKTsKLQotICAgIC8vIG1hcmsg
YXMgZnJlZWQgYW1vbmcgdGhlIHZlcnRleCBhcnJheSBvYmplY3RzCi0gICAgZm9yIChhdXRvIHZh
b0l0ID0gbVZlcnRleEFycmF5TWFwLmJlZ2luKCk7IHZhb0l0ICE9IG1WZXJ0ZXhBcnJheU1hcC5l
bmQoKTsgdmFvSXQrKykKLSAgICB7Ci0gICAgICAgIHZhb0l0LT5zZWNvbmQtPmRldGFjaEJ1ZmZl
cihidWZmZXIpOwotICAgIH0KKyAgICAvLyBbT3BlbkdMIEVTIDMuMl0gc2VjdGlvbiA1LjEuMiBw
YWdlIDQ1OgorICAgIC8vIEF0dGFjaG1lbnRzIHRvIHVuYm91bmQgY29udGFpbmVyIG9iamVjdHMs
IHN1Y2ggYXMKKyAgICAvLyBkZWxldGlvbiBvZiBhIGJ1ZmZlciBhdHRhY2hlZCB0byBhIHZlcnRl
eCBhcnJheSBvYmplY3Qgd2hpY2ggaXMgbm90IGJvdW5kIHRvIHRoZSBjb250ZXh0LAorICAgIC8v
IGFyZSBub3QgYWZmZWN0ZWQgYW5kIGNvbnRpbnVlIHRvIGFjdCBhcyByZWZlcmVuY2VzIG9uIHRo
ZSBkZWxldGVkIG9iamVjdAorICAgIG1TdGF0ZS5kZXRhY2hCdWZmZXIoYnVmZmVyKTsKIH0KIAog
dm9pZCBDb250ZXh0OjpkZXRhY2hGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpCkBAIC0x
NDE0LDcgKzE4NTgsNyBAQAogCiB2b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYkRpdmlzb3Io
R0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKIHsKLSAgICBtU3RhdGUuZ2V0VmVydGV4QXJy
YXkoKS0+c2V0VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgbVN0YXRl
LnNldFZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB2b2lkIENvbnRl
eHQ6OnNhbXBsZXJQYXJhbWV0ZXJpKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50
IHBhcmFtKQpAQCAtMTQyNCwxOSArMTg2OCwyMiBAQAogICAgIFNhbXBsZXIgKnNhbXBsZXJPYmpl
Y3QgPSBnZXRTYW1wbGVyKHNhbXBsZXIpOwogICAgIEFTU0VSVChzYW1wbGVyT2JqZWN0KTsKIAor
ICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKLSAgICAg
IGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5GaWx0
ZXIoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYWdGaWx0ZXIoc3Rh
dGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1M6ICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUyhzdGF0aWNfY2FzdDxH
TGVudW0+KHBhcmFtKSk7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9X
UkFQX1Q6ICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwVChzdGF0aWNfY2FzdDxHTGVudW0+
KHBhcmFtKSk7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6
ICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFt
KSk7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAg
ICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5Mb2Qoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICBzYW1w
bGVyT2JqZWN0LT5zZXRNYXhMb2Qoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFyYW0pKTsgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICBzYW1wbGVyT2Jq
ZWN0LT5zZXRDb21wYXJpc29uTW9kZShzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVh
azsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICBzYW1wbGVyT2JqZWN0LT5z
ZXRDb21wYXJpc29uRnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKLSAg
ICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOyBicmVhazsK
KyAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgICAgICAgIHNhbXBsZXJPYmplY3Qt
PnNldE1pbkZpbHRlcihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0
TWFnRmlsdGVyKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFw
UyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9XUkFQX1Q6ICAgICAgICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBUKHN0
YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUjogICAgICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFIoc3RhdGlj
X2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRV
UkVfTUFYX0FOSVNPVFJPUFlfRVhUOiBzYW1wbGVyT2JqZWN0LT5zZXRNYXhBbmlzb3Ryb3B5KHN0
ZDo6bWluKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhcmFtKSwgZ2V0RXh0ZW5zaW9ucygpLm1heFRl
eHR1cmVBbmlzb3Ryb3B5KSk7IGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6
ICAgICAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0TWluTG9kKHN0YXRpY19jYXN0PEdMZmxvYXQ+
KHBhcmFtKSk7ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAg
ICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYXhMb2Qoc3RhdGljX2Nhc3Q8R0xmbG9hdD4ocGFy
YW0pKTsgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICAg
ICAgIHNhbXBsZXJPYmplY3QtPnNldENvbXBhcmVNb2RlKHN0YXRpY19jYXN0PEdMZW51bT4ocGFy
YW0pKTsgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAg
c2FtcGxlck9iamVjdC0+c2V0Q29tcGFyZUZ1bmMoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkp
OyAgYnJlYWs7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOyBicmVhazsKICAgICB9CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9CiAKIHZv
aWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRlcmYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSkKQEAgLTE0NDYsMTkgKzE4OTMsMjIgQEAKICAgICBTYW1wbGVyICpz
YW1wbGVyT2JqZWN0ID0gZ2V0U2FtcGxlcihzYW1wbGVyKTsKICAgICBBU1NFUlQoc2FtcGxlck9i
amVjdCk7CiAKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgc3dpdGNoIChwbmFtZSkKICAg
ICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICAgc2FtcGxlck9iamVjdC0+
c2V0TWluRmlsdGVyKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkpOyAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYWdGaWx0
ZXIodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUzogICAgICAgIHNhbXBsZXJPYmplY3QtPnNldFdyYXBTKHVpcm91bmQ8R0xl
bnVtPihwYXJhbSkpOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JB
UF9UOiAgICAgICAgc2FtcGxlck9iamVjdC0+c2V0V3JhcFQodWlyb3VuZDxHTGVudW0+KHBhcmFt
KSk7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAg
ICBzYW1wbGVyT2JqZWN0LT5zZXRXcmFwUih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6ICAgICAgIHNhbXBsZXJP
YmplY3QtPnNldE1pbkxvZChwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgc2FtcGxlck9iamVjdC0+c2V0
TWF4TG9kKHBhcmFtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJpc29u
TW9kZSh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhU
VVJFX0NPTVBBUkVfRlVOQzogIHNhbXBsZXJPYmplY3QtPnNldENvbXBhcmlzb25GdW5jKHVpcm91
bmQ8R0xlbnVtPihwYXJhbSkpOyAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiAgICAgICAgICAgICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUjogICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNaW5GaWx0ZXIodWlyb3VuZDxHTGVu
dW0+KHBhcmFtKSk7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjog
ICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRNYWdGaWx0ZXIodWlyb3VuZDxHTGVudW0+KHBhcmFt
KSk7ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9TOiAgICAgICAgICAgICBz
YW1wbGVyT2JqZWN0LT5zZXRXcmFwUyh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgICAgICBzYW1wbGVyT2Jq
ZWN0LT5zZXRXcmFwVCh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRX
cmFwUih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiBzYW1wbGVyT2JqZWN0LT5zZXRNYXhBbmlzb3Ry
b3B5KHN0ZDo6bWluKHBhcmFtLCBnZXRFeHRlbnNpb25zKCkubWF4VGV4dHVyZUFuaXNvdHJvcHkp
KTsgYnJlYWs7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICBzYW1w
bGVyT2JqZWN0LT5zZXRNaW5Mb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgICAgICBzYW1wbGVyT2JqZWN0
LT5zZXRNYXhMb2QocGFyYW0pOyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRDb21w
YXJlTW9kZSh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7CisgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ09NUEFSRV9GVU5DOiAgICAgICBzYW1wbGVyT2JqZWN0LT5zZXRDb21wYXJlRnVuYyh1
aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7CisgICAgICBkZWZhdWx0OiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOyBicmVhazsKICAgICB9CisgICAgLy8gY2xh
bmctZm9ybWF0IG9uCiB9CiAKIEdMaW50IENvbnRleHQ6OmdldFNhbXBsZXJQYXJhbWV0ZXJpKEdM
dWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUpCkBAIC0xNDY4LDE5ICsxOTE4LDIyIEBACiAgICAg
U2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGdldFNhbXBsZXIoc2FtcGxlcik7CiAgICAgQVNTRVJU
KHNhbXBsZXJPYmplY3QpOwogCisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgIHN3aXRjaCAo
cG5hbWUpCiAgICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgIHJldHVy
biBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0TWluRmlsdGVyKCkpOwotICAg
ICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGlu
dD4oc2FtcGxlck9iamVjdC0+Z2V0TWFnRmlsdGVyKCkpOwotICAgICAgY2FzZSBHTF9URVhUVVJF
X1dSQVBfUzogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+
Z2V0V3JhcFMoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRXcmFwVCgpKTsKLSAgICAgIGNh
c2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNh
bXBsZXJPYmplY3QtPmdldFdyYXBSKCkpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9MT0Q6
ICAgICAgIHJldHVybiB1aXJvdW5kPEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRNaW5Mb2QoKSk7
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgcmV0dXJuIHVpcm91bmQ8R0xp
bnQ+KHNhbXBsZXJPYmplY3QtPmdldE1heExvZCgpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
T01QQVJFX01PREU6ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdl
dENvbXBhcmlzb25Nb2RlKCkpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzog
IHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyaXNvbkZ1
bmMoKSk7Ci0gICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsgcmV0dXJuIDA7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldE1pbkZpbHRlcigpKTsK
KyAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0TWFnRmlsdGVyKCkpOworICAgICAgY2FzZSBH
TF9URVhUVVJFX1dSQVBfUzogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihz
YW1wbGVyT2JqZWN0LT5nZXRXcmFwUygpKTsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0
V3JhcFQoKSk7CisgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBSKCkpOworICAgICAg
Y2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogcmV0dXJuIHN0YXRpY19jYXN0PEdM
aW50PihzYW1wbGVyT2JqZWN0LT5nZXRNYXhBbmlzb3Ryb3B5KCkpOworICAgICAgY2FzZSBHTF9U
RVhUVVJFX01JTl9MT0Q6ICAgICAgICAgICAgcmV0dXJuIGlyb3VuZDxHTGludD4oc2FtcGxlck9i
amVjdC0+Z2V0TWluTG9kKCkpOworICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MT0Q6ICAgICAg
ICAgICAgcmV0dXJuIGlyb3VuZDxHTGludD4oc2FtcGxlck9iamVjdC0+Z2V0TWF4TG9kKCkpOwor
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERTogICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdMaW50PihzYW1wbGVyT2JqZWN0LT5nZXRDb21wYXJlTW9kZSgpKTsKKyAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4o
c2FtcGxlck9iamVjdC0+Z2V0Q29tcGFyZUZ1bmMoKSk7CisgICAgICBkZWZhdWx0OiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOyByZXR1cm4gMDsKICAgICB9CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCiB9CiAKIEdMZmxvYXQgQ29udGV4dDo6Z2V0U2FtcGxlclBhcmFt
ZXRlcmYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSkKQEAgLTE0OTAsMjEgKzE5NDMsMzMg
QEAKICAgICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0gZ2V0U2FtcGxlcihzYW1wbGVyKTsKICAg
ICBBU1NFUlQoc2FtcGxlck9iamVjdCk7CiAKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAg
c3dpdGNoIChwbmFtZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjog
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldE1pbkZpbHRl
cigpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQUdfRklMVEVSOiAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0TWFnRmlsdGVyKCkpOwotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1dSQVBfUzogICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0Pihz
YW1wbGVyT2JqZWN0LT5nZXRXcmFwUygpKTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1Q6
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0V3Jh
cFQoKSk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9SOiAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBSKCkpOwotICAgICAgY2FzZSBH
TF9URVhUVVJFX01JTl9MT0Q6ICAgICAgIHJldHVybiBzYW1wbGVyT2JqZWN0LT5nZXRNaW5Mb2Qo
KTsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAgICByZXR1cm4gc2FtcGxlck9i
amVjdC0+Z2V0TWF4TG9kKCk7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFOiAg
cmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldENvbXBhcmlzb25N
b2RlKCkpOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogIHJldHVybiBzdGF0
aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRDb21wYXJpc29uRnVuYygpKTsKLSAg
ICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOyByZXR1cm4g
MDsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRNaW5GaWx0ZXIoKSk7CisgICAgICBj
YXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xm
bG9hdD4oc2FtcGxlck9iamVjdC0+Z2V0TWFnRmlsdGVyKCkpOworICAgICAgY2FzZSBHTF9URVhU
VVJFX1dSQVBfUzogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBs
ZXJPYmplY3QtPmdldFdyYXBTKCkpOworICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldFdy
YXBUKCkpOworICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUjogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHNhbXBsZXJPYmplY3QtPmdldFdyYXBSKCkpOworICAgICAg
Y2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogcmV0dXJuIHNhbXBsZXJPYmplY3Qt
PmdldE1heEFuaXNvdHJvcHkoKTsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAg
ICAgICAgIHJldHVybiBzYW1wbGVyT2JqZWN0LT5nZXRNaW5Mb2QoKTsKKyAgICAgIGNhc2UgR0xf
VEVYVFVSRV9NQVhfTE9EOiAgICAgICAgICAgIHJldHVybiBzYW1wbGVyT2JqZWN0LT5nZXRNYXhM
b2QoKTsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRDb21wYXJlTW9kZSgpKTsKKyAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkM6ICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHTGZsb2F0PihzYW1wbGVyT2JqZWN0LT5nZXRDb21wYXJlRnVuYygpKTsKKyAgICAgIGRlZmF1
bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7IHJldHVybiAwOwog
ICAgIH0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIAordm9pZCBDb250ZXh0Ojpwcm9ncmFt
UGFyYW1ldGVyaShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSkKK3sK
KyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgQVNTRVJUKHByb2dyYW1PYmplY3QgIT0gbnVsbHB0cik7CisKKyAgICBBU1NFUlQocG5hbWUg
PT0gR0xfUFJPR1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElOVCk7CisgICAgcHJvZ3JhbU9iamVj
dC0+c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KHZhbHVlICE9IEdMX0ZBTFNFKTsKK30KKwogdm9p
ZCBDb250ZXh0Ojppbml0UmVuZGVyZXJTdHJpbmcoKQogewogICAgIHN0ZDo6b3N0cmluZ3N0cmVh
bSByZW5kZXJlclN0cmluZzsKQEAgLTE1NDQsMTIgKzIwMDksMzUgQEAKICAgICByZXR1cm4gbUV4
dGVuc2lvblN0cmluZ3Muc2l6ZSgpOwogfQogCit2b2lkIENvbnRleHQ6OmJlZ2luVHJhbnNmb3Jt
RmVlZGJhY2soR0xlbnVtIHByaW1pdGl2ZU1vZGUpCit7CisgICAgVHJhbnNmb3JtRmVlZGJhY2sg
KnRyYW5zZm9ybUZlZWRiYWNrID0gZ2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJh
Y2soKTsKKyAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cik7CisgICAgQVNT
RVJUKCF0cmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSk7CisKKyAgICB0cmFuc2Zvcm1GZWVk
YmFjay0+YmVnaW4ocHJpbWl0aXZlTW9kZSwgZ2V0U3RhdGUoKS5nZXRQcm9ncmFtKCkpOworfQor
Citib29sIENvbnRleHQ6Omhhc0FjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrKEdMdWludCBwcm9ncmFt
KSBjb25zdAoreworICAgIGZvciAoYXV0byBwYWlyIDogbVRyYW5zZm9ybUZlZWRiYWNrTWFwKQor
ICAgIHsKKyAgICAgICAgaWYgKHBhaXIuc2Vjb25kICE9IG51bGxwdHIgJiYgcGFpci5zZWNvbmQt
Pmhhc0JvdW5kUHJvZ3JhbShwcm9ncmFtKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENv
bnRleHQ6OmluaXRDYXBzKEdMdWludCBjbGllbnRWZXJzaW9uKQogewogICAgIG1DYXBzID0gbVJl
bmRlcmVyLT5nZXRSZW5kZXJlckNhcHMoKTsKIAogICAgIG1FeHRlbnNpb25zID0gbVJlbmRlcmVy
LT5nZXRSZW5kZXJlckV4dGVuc2lvbnMoKTsKIAorICAgIG1MaW1pdGF0aW9ucyA9IG1SZW5kZXJl
ci0+Z2V0UmVuZGVyZXJMaW1pdGF0aW9ucygpOworCiAgICAgaWYgKGNsaWVudFZlcnNpb24gPCAz
KQogICAgIHsKICAgICAgICAgLy8gRGlzYWJsZSBFUzMrIGV4dGVuc2lvbnMKQEAgLTE1NjIsNiAr
MjA1MCwxMyBAQAogICAgICAgICAvL21FeHRlbnNpb25zLnNSR0IgPSBmYWxzZTsKICAgICB9CiAK
KyAgICAvLyBFeHBsaWNpdGx5IGVuYWJsZSBHTF9LSFJfZGVidWcKKyAgICBtRXh0ZW5zaW9ucy5k
ZWJ1ZyAgICAgICAgICAgICAgICAgICA9IHRydWU7CisgICAgbUV4dGVuc2lvbnMubWF4RGVidWdN
ZXNzYWdlTGVuZ3RoICAgPSAxMDI0OworICAgIG1FeHRlbnNpb25zLm1heERlYnVnTG9nZ2VkTWVz
c2FnZXMgID0gMTAyNDsKKyAgICBtRXh0ZW5zaW9ucy5tYXhEZWJ1Z0dyb3VwU3RhY2tEZXB0aCA9
IDEwMjQ7CisgICAgbUV4dGVuc2lvbnMubWF4TGFiZWxMZW5ndGggICAgICAgICAgPSAxMDI0Owor
CiAgICAgLy8gQXBwbHkgaW1wbGVtZW50YXRpb24gbGltaXRzCiAgICAgbUNhcHMubWF4VmVydGV4
QXR0cmlidXRlcyA9IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4VmVydGV4QXR0cmlidXRlcywg
TUFYX1ZFUlRFWF9BVFRSSUJTKTsKICAgICBtQ2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzID0g
c3RkOjptaW48R0x1aW50PihtQ2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzLCBJTVBMRU1FTlRB
VElPTl9NQVhfVkVSVEVYX1NIQURFUl9VTklGT1JNX0JVRkZFUlMpOwpAQCAtMTU3OSwxMCArMjA3
NCwxNSBAQAogCiAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0
SW50ZXJuYWxGb3JtYXRJbmZvKGZvcm1hdCk7CiAKLSAgICAgICAgLy8gVXBkYXRlIHRoZSBmb3Jt
YXQgY2FwcyBiYXNlZCBvbiB0aGUgY2xpZW50IHZlcnNpb24gYW5kIGV4dGVuc2lvbnMKLSAgICAg
ICAgZm9ybWF0Q2Fwcy50ZXh0dXJhYmxlID0gZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjbGll
bnRWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIGZvcm1hdENhcHMucmVuZGVyYWJsZSA9
IGZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydChjbGllbnRWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7Ci0g
ICAgICAgIGZvcm1hdENhcHMuZmlsdGVyYWJsZSA9IGZvcm1hdEluZm8uZmlsdGVyU3VwcG9ydChj
bGllbnRWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgZm9ybWF0
IGNhcHMgYmFzZWQgb24gdGhlIGNsaWVudCB2ZXJzaW9uIGFuZCBleHRlbnNpb25zLgorICAgICAg
ICAvLyBDYXBzIGFyZSBBTkQnZCB3aXRoIHRoZSByZW5kZXJlciBjYXBzIGJlY2F1c2Ugc29tZSBj
b3JlIGZvcm1hdHMgYXJlIHN0aWxsIHVuc3VwcG9ydGVkIGluCisgICAgICAgIC8vIEVTMy4KKyAg
ICAgICAgZm9ybWF0Q2Fwcy50ZXh0dXJhYmxlID0KKyAgICAgICAgICAgIGZvcm1hdENhcHMudGV4
dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KGNsaWVudFZlcnNpb24sIG1FeHRl
bnNpb25zKTsKKyAgICAgICAgZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlID0KKyAgICAgICAgICAgIGZv
cm1hdENhcHMucmVuZGVyYWJsZSAmJiBmb3JtYXRJbmZvLnJlbmRlclN1cHBvcnQoY2xpZW50VmVy
c2lvbiwgbUV4dGVuc2lvbnMpOworICAgICAgICBmb3JtYXRDYXBzLmZpbHRlcmFibGUgPQorICAg
ICAgICAgICAgZm9ybWF0Q2Fwcy5maWx0ZXJhYmxlICYmIGZvcm1hdEluZm8uZmlsdGVyU3VwcG9y
dChjbGllbnRWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CiAKICAgICAgICAgLy8gT3BlbkdMIEVTIGRv
ZXMgbm90IHN1cHBvcnQgbXVsdGlzYW1wbGluZyB3aXRoIGludGVnZXIgZm9ybWF0cwogICAgICAg
ICBpZiAoIWZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydCB8fCBmb3JtYXRJbmZvLmNvbXBvbmVudFR5
cGUgPT0gR0xfSU5UIHx8IGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9J
TlQpCkBAIC0xNTk5LDQgKzIwOTksNjc4IEBACiAgICAgfQogfQogCit2b2lkIENvbnRleHQ6OnN5
bmNSZW5kZXJlclN0YXRlKCkKK3sKKyAgICBjb25zdCBTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJp
dHMgPSBtU3RhdGUuZ2V0RGlydHlCaXRzKCk7CisgICAgbVJlbmRlcmVyLT5zeW5jU3RhdGUobVN0
YXRlLCBkaXJ0eUJpdHMpOworICAgIG1TdGF0ZS5jbGVhckRpcnR5Qml0cygpOworICAgIG1TdGF0
ZS5zeW5jRGlydHlPYmplY3RzKCk7CiB9CisKK3ZvaWQgQ29udGV4dDo6c3luY1JlbmRlcmVyU3Rh
dGUoY29uc3QgU3RhdGU6OkRpcnR5Qml0cyAmYml0TWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RhdGU6OkRpcnR5T2JqZWN0cyAmb2JqZWN0TWFzaykKK3sKKyAg
ICBjb25zdCBTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMgPSAobVN0YXRlLmdldERpcnR5Qml0
cygpICYgYml0TWFzayk7CisgICAgbVJlbmRlcmVyLT5zeW5jU3RhdGUobVN0YXRlLCBkaXJ0eUJp
dHMpOworICAgIG1TdGF0ZS5jbGVhckRpcnR5Qml0cyhkaXJ0eUJpdHMpOworCisgICAgbVN0YXRl
LnN5bmNEaXJ0eU9iamVjdHMob2JqZWN0TWFzayk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmxpdEZy
YW1lYnVmZmVyKEdMaW50IHNyY1gwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3JjWTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kxLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBkc3RZMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgx
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WTEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZmlsdGVyKQoreworICAgIEZyYW1lYnVmZmVyICpyZWFkRnJhbWVi
dWZmZXIgPSBtU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgQVNTRVJUKHJlYWRGcmFt
ZWJ1ZmZlcik7CisKKyAgICBGcmFtZWJ1ZmZlciAqZHJhd0ZyYW1lYnVmZmVyID0gbVN0YXRlLmdl
dERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VSVChkcmF3RnJhbWVidWZmZXIpOworCisgICAg
UmVjdGFuZ2xlIHNyY0FyZWEoc3JjWDAsIHNyY1kwLCBzcmNYMSAtIHNyY1gwLCBzcmNZMSAtIHNy
Y1kwKTsKKyAgICBSZWN0YW5nbGUgZHN0QXJlYShkc3RYMCwgZHN0WTAsIGRzdFgxIC0gZHN0WDAs
IGRzdFkxIC0gZHN0WTApOworCisgICAgc3luY1N0YXRlRm9yQmxpdCgpOworCisgICAgRXJyb3Ig
ZXJyb3IgPSBkcmF3RnJhbWVidWZmZXItPmJsaXQobVN0YXRlLCBzcmNBcmVhLCBkc3RBcmVhLCBt
YXNrLCBmaWx0ZXIsIHJlYWRGcmFtZWJ1ZmZlcik7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
KyAgICB7CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKwordm9pZCBDb250ZXh0OjpjbGVhcihHTGJpdGZpZWxkIG1hc2spCit7CisgICAgc3lu
Y1N0YXRlRm9yQ2xlYXIoKTsKKworICAgIEVycm9yIGVycm9yID0gbVN0YXRlLmdldERyYXdGcmFt
ZWJ1ZmZlcigpLT5jbGVhcihtRGF0YSwgbWFzayk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
KyAgICB7CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29u
dGV4dDo6Y2xlYXJCdWZmZXJmdihHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpCit7CisgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKKworICAgIEVy
cm9yIGVycm9yID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcmZ2KG1E
YXRhLCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CisgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKKyAgICB7CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQg
Q29udGV4dDo6Y2xlYXJCdWZmZXJ1aXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwg
Y29uc3QgR0x1aW50ICp2YWx1ZXMpCit7CisgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKKworICAg
IEVycm9yIGVycm9yID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jbGVhckJ1ZmZlcnVp
dihtRGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOworICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCisgICAgeworICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgfQorfQorCit2
b2lkIENvbnRleHQ6OmNsZWFyQnVmZmVyaXYoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZl
ciwgY29uc3QgR0xpbnQgKnZhbHVlcykKK3sKKyAgICBzeW5jU3RhdGVGb3JDbGVhcigpOworCisg
ICAgRXJyb3IgZXJyb3IgPSBtU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmNsZWFyQnVmZmVy
aXYobURhdGEsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKKyAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQorICAgIHsKKyAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgIH0KK30KKwor
dm9pZCBDb250ZXh0OjpjbGVhckJ1ZmZlcmZpKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZm
ZXIsIEdMZmxvYXQgZGVwdGgsIEdMaW50IHN0ZW5jaWwpCit7CisgICAgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyT2JqZWN0ID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VS
VChmcmFtZWJ1ZmZlck9iamVjdCk7CisKKyAgICAvLyBJZiBhIGJ1ZmZlciBpcyBub3QgcHJlc2Vu
dCwgdGhlIGNsZWFyIGhhcyBubyBlZmZlY3QKKyAgICBpZiAoZnJhbWVidWZmZXJPYmplY3QtPmdl
dERlcHRoYnVmZmVyKCkgPT0gbnVsbHB0ciAmJgorICAgICAgICBmcmFtZWJ1ZmZlck9iamVjdC0+
Z2V0U3RlbmNpbGJ1ZmZlcigpID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc3luY1N0YXRlRm9yQ2xlYXIoKTsKKworICAgIEVycm9yIGVycm9yID0gZnJh
bWVidWZmZXJPYmplY3QtPmNsZWFyQnVmZmVyZmkobURhdGEsIGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGVwdGgsIHN0ZW5jaWwpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAg
ICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OnJlYWRQaXhl
bHMoR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBzeW5jU3RhdGVGb3JSZWFkUGl4ZWxzKCk7
CisKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBtU3RhdGUuZ2V0UmVhZEZy
YW1lYnVmZmVyKCk7CisgICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0KTsKKworICAgIFJlY3Rh
bmdsZSBhcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQpOworICAgIEVycm9yIGVycm9yID0gZnJhbWVi
dWZmZXJPYmplY3QtPnJlYWRQaXhlbHMobVN0YXRlLCBhcmVhLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cyk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJlY29yZEVycm9y
KGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6Y29weVRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcikKK3sKKyAgICAvLyBPbmx5IHN5bmMgdGhl
IHJlYWQgRkJPCisgICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFEX0ZSQU1FQlVGRkVS
KTsKKworICAgIFJlY3RhbmdsZSBzb3VyY2VBcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisg
ICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1
ZmZlcigpOworICAgIFRleHR1cmUgKnRleHR1cmUgPQorICAgICAgICBnZXRUYXJnZXRUZXh0dXJl
KElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0
YXJnZXQpOworICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+Y29weUltYWdlKHRhcmdldCwgbGV2
ZWwsIHNvdXJjZUFyZWEsIGludGVybmFsZm9ybWF0LCBmcmFtZWJ1ZmZlcik7CisgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIC8vIE9ubHkgc3luYyB0
aGUgcmVhZCBGQk8KKyAgICBtU3RhdGUuc3luY0RpcnR5T2JqZWN0KEdMX1JFQURfRlJBTUVCVUZG
RVIpOworCisgICAgT2Zmc2V0IGRlc3RPZmZzZXQoeG9mZnNldCwgeW9mZnNldCwgMCk7CisgICAg
UmVjdGFuZ2xlIHNvdXJjZUFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBjb25zdCBG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Cisg
ICAgVGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFw
VGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Cisg
ICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVz
dE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpOworICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCisgICAgeworICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgfQorfQorCit2b2lk
IENvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCkKK3sKKyAgICAvLyBPbmx5IHN5bmMgdGhlIHJlYWQgRkJPCisgICAgbVN0
YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKKworICAgIE9mZnNldCBk
ZXN0T2Zmc2V0KHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQpOworICAgIFJlY3RhbmdsZSBzb3Vy
Y2VBcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIFRleHR1cmUgKnRl
eHR1cmUgICAgICAgICAgICAgICA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBFcnJv
ciBlcnJvciA9IHRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBkZXN0T2Zmc2V0
LCBzb3VyY2VBcmVhLCBmcmFtZWJ1ZmZlcik7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICB7CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4
dDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCkKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBt
U3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBBU1NFUlQoZnJhbWVidWZm
ZXIpOworCisgICAgaWYgKHRleHR1cmUgIT0gMCkKKyAgICB7CisgICAgICAgIFRleHR1cmUgKnRl
eHR1cmVPYmogPSBnZXRUZXh0dXJlKHRleHR1cmUpOworCisgICAgICAgIEltYWdlSW5kZXggaW5k
ZXggPSBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpOworCisgICAgICAgIGlmICh0ZXh0YXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5kZXggPSBJbWFnZUlu
ZGV4OjpNYWtlMkQobGV2ZWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGV4dGFyZ2V0KSk7Cisg
ICAgICAgICAgICBpbmRleCA9IEltYWdlSW5kZXg6Ok1ha2VDdWJlKHRleHRhcmdldCwgbGV2ZWwp
OworICAgICAgICB9CisKKyAgICAgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQoR0xfVEVY
VFVSRSwgYXR0YWNobWVudCwgaW5kZXgsIHRleHR1cmVPYmopOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBmcmFtZWJ1ZmZlci0+cmVzZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpOwor
ICAgIH0KKworICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOworfQorCit2b2lkIENv
bnRleHQ6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVy
KQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1TdGF0ZS5nZXRUYXJnZXRGcmFt
ZWJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisKKyAgICBpZiAocmVu
ZGVyYnVmZmVyICE9IDApCisgICAgeworICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZl
ck9iamVjdCA9IGdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgICAgICBmcmFtZWJ1
ZmZlci0+c2V0QXR0YWNobWVudChHTF9SRU5ERVJCVUZGRVIsIGF0dGFjaG1lbnQsIGdsOjpJbWFn
ZUluZGV4OjpNYWtlSW52YWxpZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZW5kZXJidWZmZXJPYmplY3QpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBm
cmFtZWJ1ZmZlci0+cmVzZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpOworICAgIH0KKworICAgIG1T
dGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOworfQorCit2b2lkIENvbnRleHQ6OmZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxheWVyKQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1T
dGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZl
cik7CisKKyAgICBpZiAodGV4dHVyZSAhPSAwKQorICAgIHsKKyAgICAgICAgVGV4dHVyZSAqdGV4
dHVyZU9iamVjdCA9IGdldFRleHR1cmUodGV4dHVyZSk7CisKKyAgICAgICAgSW1hZ2VJbmRleCBp
bmRleCA9IEltYWdlSW5kZXg6Ok1ha2VJbnZhbGlkKCk7CisKKyAgICAgICAgaWYgKHRleHR1cmVP
YmplY3QtPmdldFRhcmdldCgpID09IEdMX1RFWFRVUkVfM0QpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGluZGV4ID0gSW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsLCBsYXllcik7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQodGV4dHVyZU9iamVj
dC0+Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSk7CisgICAgICAgICAgICBpbmRl
eCA9IEltYWdlSW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBsYXllcik7CisgICAgICAgIH0KKwor
ICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9URVhUVVJFLCBhdHRhY2htZW50
LCBpbmRleCwgdGV4dHVyZU9iamVjdCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IGZyYW1lYnVmZmVyLT5yZXNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7CisgICAgfQorCisgICAg
bVN0YXRlLnNldE9iamVjdERpcnR5KHRhcmdldCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZHJhd0J1
ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCit7CisgICAgRnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VSVChm
cmFtZWJ1ZmZlcik7CisgICAgZnJhbWVidWZmZXItPnNldERyYXdCdWZmZXJzKG4sIGJ1ZnMpOwor
ICAgIG1TdGF0ZS5zZXRPYmplY3REaXJ0eShHTF9EUkFXX0ZSQU1FQlVGRkVSKTsKK30KKwordm9p
ZCBDb250ZXh0OjpyZWFkQnVmZmVyKEdMZW51bSBtb2RlKQoreworICAgIEZyYW1lYnVmZmVyICpy
ZWFkRkJPID0gbVN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIHJlYWRGQk8tPnNldFJl
YWRCdWZmZXIobW9kZSk7CisgICAgbVN0YXRlLnNldE9iamVjdERpcnR5KEdMX1JFQURfRlJBTUVC
VUZGRVIpOworfQorCit2b2lkIENvbnRleHQ6OmRpc2NhcmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFy
Z2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQor
eworICAgIC8vIE9ubHkgc3luYyB0aGUgRkJPCisgICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0
YXJnZXQpOworCisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFRhcmdl
dEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKKworICAgIC8v
IFRoZSBzcGVjaWZpY2F0aW9uIGlzbid0IGNsZWFyIHdoYXQgc2hvdWxkIGJlIGRvbmUgd2hlbiB0
aGUgZnJhbWVidWZmZXIgaXNuJ3QgY29tcGxldGUuCisgICAgLy8gV2UgbGVhdmUgaXQgdXAgdG8g
dGhlIGZyYW1lYnVmZmVyIGltcGxlbWVudGF0aW9uIHRvIGRlY2lkZSB3aGF0IHRvIGRvLgorICAg
IEVycm9yIGVycm9yID0gZnJhbWVidWZmZXItPmRpc2NhcmQobnVtQXR0YWNobWVudHMsIGF0dGFj
aG1lbnRzKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmVjb3Jk
RXJyb3IoZXJyb3IpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0OjppbnZhbGlkYXRlRnJhbWVi
dWZmZXIoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQoreworICAgIC8vIE9ubHkgc3luYyB0aGUg
RkJPCisgICAgbVN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0YXJnZXQpOworCisgICAgRnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7Cisg
ICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKKworICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0
dXMobURhdGEpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgRXJy
b3IgZXJyb3IgPSBmcmFtZWJ1ZmZlci0+aW52YWxpZGF0ZShudW1BdHRhY2htZW50cywgYXR0YWNo
bWVudHMpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IG51bUF0dGFjaG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xlbnVtICphdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0KQoreworICAgIC8vIE9ubHkgc3luYyB0aGUgRkJPCisgICAgbVN0YXRlLnN5bmNEaXJ0
eU9iamVjdCh0YXJnZXQpOworCisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRl
LmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsK
KworICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMobURhdGEpID09IEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFKQorICAgIHsKKyAgICAgICAgUmVjdGFuZ2xlIGFyZWEoeCwgeSwgd2lkdGgs
IGhlaWdodCk7CisgICAgICAgIEVycm9yIGVycm9yID0gZnJhbWVidWZmZXItPmludmFsaWRhdGVT
dWIobnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzLCBhcmVhKTsKKyAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6
OnRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQoreworICAgIHN5bmNTdGF0ZUZvclRleEltYWdlKCk7CisK
KyAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7CisgICAgVGV4dHVyZSAqdGV4dHVy
ZSA9CisgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7CisgICAgRXJyb3IgZXJyb3IgPSB0
ZXh0dXJlLT5zZXRJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxmb3JtYXQsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMp
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmVjb3JkRXJyb3Io
ZXJyb3IpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojp0ZXhJbWFnZTNEKEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQoreworICAgIHN5bmNTdGF0
ZUZvclRleEltYWdlKCk7CisKKyAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgp
OworICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7CisgICAg
RXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRJbWFnZShtU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwg
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCAqPihwaXhlbHMpKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAg
ICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojp0ZXhTdWJJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICAvLyBaZXJvIHNpemVk
IHVwbG9hZHMgYXJlIHZhbGlkIGJ1dCBuby1vcHMKKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWln
aHQgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzeW5jU3RhdGVG
b3JUZXhJbWFnZSgpOworCisgICAgQm94IGFyZWEoeG9mZnNldCwgeW9mZnNldCwgMCwgd2lkdGgs
IGhlaWdodCwgMSk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIGdldFRhcmdldFRl
eHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01B
UCA6IHRhcmdldCk7CisgICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRTdWJJbWFnZShtU3Rh
dGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90ICo+KHBpeGVscykpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAg
eworICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6
OnRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICAvLyBaZXJvIHNpemVkIHVwbG9hZHMgYXJlIHZhbGlk
IGJ1dCBuby1vcHMKKyAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCB8fCBkZXB0aCA9
PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN5bmNTdGF0ZUZvclRl
eEltYWdlKCk7CisKKyAgICBCb3ggYXJlYSh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCk7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1
cmUodGFyZ2V0KTsKKyAgICBFcnJvciBlcnJvciA9IHRleHR1cmUtPnNldFN1YkltYWdlKG1TdGF0
ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QgKj4ocGl4ZWxzKSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7
CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6
Y29tcHJlc3NlZFRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqZGF0YSkKK3sKKyAgICBzeW5jU3RhdGVGb3JUZXhJbWFnZSgpOworCisgICAgRXh0ZW50cyBz
aXplKHdpZHRoLCBoZWlnaHQsIDEpOworICAgIFRleHR1cmUgKnRleHR1cmUgPQorICAgICAgICBn
ZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRV
UkVfQ1VCRV9NQVAgOiB0YXJnZXQpOworICAgIEVycm9yIGVycm9yID0KKyAgICAgICAgdGV4dHVy
ZS0+c2V0Q29tcHJlc3NlZEltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGltYWdlU2l6ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEp
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmVjb3JkRXJyb3Io
ZXJyb3IpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UzRChH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKQoreworICAgIHN5bmNTdGF0ZUZv
clRleEltYWdlKCk7CisKKyAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOwor
ICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7CisgICAgRXJy
b3IgZXJyb3IgPQorICAgICAgICB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UobVN0YXRlLmdl
dFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplLCByZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YSkpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisg
ICAgeworICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgfQorfQorCit2b2lkIENvbnRl
eHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSkKK3sKKyAgICBzeW5jU3RhdGVGb3JUZXhJbWFnZSgp
OworCisgICAgQm94IGFyZWEoeG9mZnNldCwgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSk7
CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJl
TWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7
CisgICAgRXJyb3IgZXJyb3IgPQorICAgICAgICB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1h
Z2UobVN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQorICAgIHsKKyAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgIH0KK30KKwordm9p
ZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEpCit7CisgICAgLy8gWmVybyBzaXplZCB1cGxvYWRz
IGFyZSB2YWxpZCBidXQgbm8tb3BzCisgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDAp
CisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3luY1N0YXRlRm9yVGV4SW1h
Z2UoKTsKKworICAgIEJveCBhcmVhKHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBo
ZWlnaHQsIGRlcHRoKTsKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0
YXJnZXQpOworICAgIEVycm9yIGVycm9yID0KKyAgICAgICAgdGV4dHVyZS0+c2V0Q29tcHJlc3Nl
ZFN1YkltYWdlKG1TdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemUs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSk7CisgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJlY29yZEVycm9yKGVycm9yKTsKKyAgICB9Cit9
CisKK3ZvaWQgQ29udGV4dDo6Z2V0QnVmZmVyUG9pbnRlcnYoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IC8qcG5hbWUqLywgdm9pZCAqKnBhcmFtcykKK3sKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IGdldFN0
YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisKKyAg
ICBpZiAoIWJ1ZmZlci0+aXNNYXBwZWQoKSkKKyAgICB7CisgICAgICAgICpwYXJhbXMgPSBudWxs
cHRyOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAqcGFyYW1zID0gYnVmZmVyLT5n
ZXRNYXBQb2ludGVyKCk7CisgICAgfQorfQorCitHTHZvaWQgKkNvbnRleHQ6Om1hcEJ1ZmZlcihH
TGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gZ2V0
U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKwor
ICAgIEVycm9yIGVycm9yID0gYnVmZmVyLT5tYXAoYWNjZXNzKTsKKyAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQorICAgIHsKKyAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyLT5nZXRNYXBQb2ludGVyKCk7
Cit9CisKK0dMYm9vbGVhbiBDb250ZXh0Ojp1bm1hcEJ1ZmZlcihHTGVudW0gdGFyZ2V0KQorewor
ICAgIEJ1ZmZlciAqYnVmZmVyID0gZ2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsK
KyAgICBBU1NFUlQoYnVmZmVyKTsKKworICAgIEdMYm9vbGVhbiByZXN1bHQ7CisgICAgRXJyb3Ig
ZXJyb3IgPSBidWZmZXItPnVubWFwKCZyZXN1bHQpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgeworICAgICAgICByZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBHTF9G
QUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitHTHZvaWQgKkNvbnRleHQ6
Om1hcEJ1ZmZlclJhbmdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaXB0ciBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0
ZmllbGQgYWNjZXNzKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gZ2V0U3RhdGUoKS5nZXRUYXJn
ZXRCdWZmZXIodGFyZ2V0KTsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKworICAgIEVycm9yIGVycm9y
ID0gYnVmZmVyLT5tYXBSYW5nZShvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKKyAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyLT5nZXRNYXBQb2lu
dGVyKCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Zmx1c2hNYXBwZWRCdWZmZXJSYW5nZShHTGVudW0g
Lyp0YXJnZXQqLywgR0xpbnRwdHIgLypvZmZzZXQqLywgR0xzaXplaXB0ciAvKmxlbmd0aCovKQor
eworICAgIC8vIFdlIGRvIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBhIG5vbi10cml2aWFsIGltcGxl
bWVudGF0aW9uIG9mIEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2UKK30KKwordm9pZCBDb250ZXh0Ojpz
eW5jU3RhdGVGb3JSZWFkUGl4ZWxzKCkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0ZShtUmVhZFBp
eGVsc0RpcnR5Qml0cywgbVJlYWRQaXhlbHNEaXJ0eU9iamVjdHMpOworfQorCit2b2lkIENvbnRl
eHQ6OnN5bmNTdGF0ZUZvclRleEltYWdlKCkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0ZShtVGV4
SW1hZ2VEaXJ0eUJpdHMsIG1UZXhJbWFnZURpcnR5T2JqZWN0cyk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c3luY1N0YXRlRm9yQ2xlYXIoKQoreworICAgIHN5bmNSZW5kZXJlclN0YXRlKG1DbGVhckRp
cnR5Qml0cywgbUNsZWFyRGlydHlPYmplY3RzKTsKK30KKwordm9pZCBDb250ZXh0OjpzeW5jU3Rh
dGVGb3JCbGl0KCkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0ZShtQmxpdERpcnR5Qml0cywgbUJs
aXREaXJ0eU9iamVjdHMpOworfQorCit9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuaAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsMTAgQEAKICNpZm5kZWYgTElCQU5HTEVfQ09OVEVY
VF9IXwogI2RlZmluZSBMSUJBTkdMRV9DT05URVhUX0hfCiAKKyNpbmNsdWRlIDxzZXQ+CisjaW5j
bHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21tb24v
YW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvQ2Fwcy5oIgpAQCAtMjAsMTIgKzI0LDYgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgi
CiAKLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUg
PHNldD4KLSNpbmNsdWRlIDxtYXA+Ci0KIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXI7
CkBAIC0zMyw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBlZ2wKIHsKK2NsYXNzIEF0dHJpYnV0ZU1h
cDsKIGNsYXNzIFN1cmZhY2U7CiBzdHJ1Y3QgQ29uZmlnOwogfQpAQCAtNTUsMTAgKzU0LDEzIEBA
CiBjbGFzcyBTYW1wbGVyOwogY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2s7CiAKLWNsYXNzIENvbnRl
eHQgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK2NsYXNzIENvbnRleHQgZmluYWwgOiBwdWJs
aWMgVmFsaWRhdGlvbkNvbnRleHQKIHsKICAgcHVibGljOgotICAgIENvbnRleHQoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywgaW50IGNsaWVudFZlcnNpb24sIGNvbnN0IENvbnRleHQgKnNoYXJl
Q29udGV4dCwgcng6OlJlbmRlcmVyICpyZW5kZXJlciwgYm9vbCBub3RpZnlSZXNldHMsIGJvb2wg
cm9idXN0QWNjZXNzKTsKKyAgICBDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisg
ICAgICAgICAgICBjb25zdCBDb250ZXh0ICpzaGFyZUNvbnRleHQsCisgICAgICAgICAgICByeDo6
UmVuZGVyZXIgKnJlbmRlcmVyLAorICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpOwogCiAgICAgdmlydHVhbCB+Q29udGV4dCgpOwogCkBAIC0xMDQsMjcgKzEwNiwz
OSBAQAogICAgIEdMdWludCBjcmVhdGVWZXJ0ZXhBcnJheSgpOwogICAgIHZvaWQgZGVsZXRlVmVy
dGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5KTsKIAotICAgIHZvaWQgYmluZEFycmF5QnVmZmVy
KEdMdWludCBidWZmZXIpOwotICAgIHZvaWQgYmluZEVsZW1lbnRBcnJheUJ1ZmZlcihHTHVpbnQg
YnVmZmVyKTsKKyAgICB2b2lkIGJpbmRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKTsK
KyAgICB2b2lkIGJpbmRFbGVtZW50QXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7CiAg
ICAgdm9pZCBiaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaGFuZGxlKTsKLSAgICB2
b2lkIGJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKLSAgICB2b2lkIGJp
bmREcmF3RnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKTsKLSAgICB2b2lkIGJpbmRSZW5k
ZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7Ci0gICAgdm9pZCBiaW5kVmVydGV4QXJyYXko
R0x1aW50IHZlcnRleEFycmF5KTsKLSAgICB2b2lkIGJpbmRTYW1wbGVyKEdMdWludCB0ZXh0dXJl
VW5pdCwgR0x1aW50IHNhbXBsZXIpOwotICAgIHZvaWQgYmluZEdlbmVyaWNVbmlmb3JtQnVmZmVy
KEdMdWludCBidWZmZXIpOwotICAgIHZvaWQgYmluZEluZGV4ZWRVbmlmb3JtQnVmZmVyKEdMdWlu
dCBidWZmZXIsIEdMdWludCBpbmRleCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUp
OwotICAgIHZvaWQgYmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihHTHVpbnQgYnVm
ZmVyKTsKLSAgICB2b2lkIGJpbmRJbmRleGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoR0x1aW50
IGJ1ZmZlciwgR0x1aW50IGluZGV4LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7
Ci0gICAgdm9pZCBiaW5kQ29weVJlYWRCdWZmZXIoR0x1aW50IGJ1ZmZlcik7Ci0gICAgdm9pZCBi
aW5kQ29weVdyaXRlQnVmZmVyKEdMdWludCBidWZmZXIpOwotICAgIHZvaWQgYmluZFBpeGVsUGFj
a0J1ZmZlcihHTHVpbnQgYnVmZmVyKTsKLSAgICB2b2lkIGJpbmRQaXhlbFVucGFja0J1ZmZlcihH
THVpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1l
YnVmZmVySGFuZGxlKTsKKyAgICB2b2lkIGJpbmREcmF3RnJhbWVidWZmZXIoR0x1aW50IGZyYW1l
YnVmZmVySGFuZGxlKTsKKyAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1
ZmZlckhhbmRsZSk7CisgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5
SGFuZGxlKTsKKyAgICB2b2lkIGJpbmRTYW1wbGVyKEdMdWludCB0ZXh0dXJlVW5pdCwgR0x1aW50
IHNhbXBsZXJIYW5kbGUpOworICAgIHZvaWQgYmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKEdMdWlu
dCBidWZmZXJIYW5kbGUpOworICAgIHZvaWQgYmluZEluZGV4ZWRVbmlmb3JtQnVmZmVyKEdMdWlu
dCBidWZmZXJIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpOwor
ICAgIHZvaWQgYmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihHTHVpbnQgYnVmZmVy
SGFuZGxlKTsKKyAgICB2b2lkIGJpbmRJbmRleGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoR0x1
aW50IGJ1ZmZlckhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7CisgICAgdm9pZCBiaW5kQ29weVJlYWRCdWZm
ZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7CisgICAgdm9pZCBiaW5kQ29weVdyaXRlQnVmZmVyKEdM
dWludCBidWZmZXJIYW5kbGUpOworICAgIHZvaWQgYmluZFBpeGVsUGFja0J1ZmZlcihHTHVpbnQg
YnVmZmVySGFuZGxlKTsKKyAgICB2b2lkIGJpbmRQaXhlbFVucGFja0J1ZmZlcihHTHVpbnQgYnVm
ZmVySGFuZGxlKTsKICAgICB2b2lkIHVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwotICAgIHZv
aWQgYmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMdWludCB0cmFuc2Zvcm1GZWVkYmFjayk7CisgICAg
dm9pZCBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxl
KTsKIAogICAgIEVycm9yIGJlZ2luUXVlcnkoR0xlbnVtIHRhcmdldCwgR0x1aW50IHF1ZXJ5KTsK
ICAgICBFcnJvciBlbmRRdWVyeShHTGVudW0gdGFyZ2V0KTsKKyAgICBFcnJvciBxdWVyeUNvdW50
ZXIoR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KTsKKyAgICB2b2lkIGdldFF1ZXJ5aXYoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICBFcnJvciBnZXRRdWVy
eU9iamVjdGl2KEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICBF
cnJvciBnZXRRdWVyeU9iamVjdHVpdihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpw
YXJhbXMpOworICAgIEVycm9yIGdldFF1ZXJ5T2JqZWN0aTY0dihHTHVpbnQgaWQsIEdMZW51bSBw
bmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKKyAgICBFcnJvciBnZXRRdWVyeU9iamVjdHVpNjR2KEdM
dWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKTsKIAogICAgIHZvaWQgc2V0
VmVydGV4QXR0cmliRGl2aXNvcihHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKIApAQCAt
MTMzLDE4ICsxNDcsMjMgQEAKICAgICBHTGludCBnZXRTYW1wbGVyUGFyYW1ldGVyaShHTHVpbnQg
c2FtcGxlciwgR0xlbnVtIHBuYW1lKTsKICAgICBHTGZsb2F0IGdldFNhbXBsZXJQYXJhbWV0ZXJm
KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUpOwogCi0gICAgQnVmZmVyICpnZXRCdWZmZXIo
R0x1aW50IGhhbmRsZSk7CisgICAgdm9pZCBwcm9ncmFtUGFyYW1ldGVyaShHTHVpbnQgcHJvZ3Jh
bSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7CisKKyAgICBCdWZmZXIgKmdldEJ1ZmZlcihH
THVpbnQgaGFuZGxlKSBjb25zdDsKICAgICBGZW5jZU5WICpnZXRGZW5jZU5WKEdMdWludCBoYW5k
bGUpOwogICAgIEZlbmNlU3luYyAqZ2V0RmVuY2VTeW5jKEdMc3luYyBoYW5kbGUpIGNvbnN0Owog
ICAgIFNoYWRlciAqZ2V0U2hhZGVyKEdMdWludCBoYW5kbGUpIGNvbnN0OwogICAgIFByb2dyYW0g
KmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSkgY29uc3Q7CiAgICAgVGV4dHVyZSAqZ2V0VGV4dHVy
ZShHTHVpbnQgaGFuZGxlKSBjb25zdDsKICAgICBGcmFtZWJ1ZmZlciAqZ2V0RnJhbWVidWZmZXIo
R0x1aW50IGhhbmRsZSkgY29uc3Q7Ci0gICAgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIo
R0x1aW50IGhhbmRsZSk7CisgICAgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoR0x1aW50
IGhhbmRsZSkgY29uc3Q7CiAgICAgVmVydGV4QXJyYXkgKmdldFZlcnRleEFycmF5KEdMdWludCBo
YW5kbGUpIGNvbnN0OwogICAgIFNhbXBsZXIgKmdldFNhbXBsZXIoR0x1aW50IGhhbmRsZSkgY29u
c3Q7CiAgICAgUXVlcnkgKmdldFF1ZXJ5KEdMdWludCBoYW5kbGUsIGJvb2wgY3JlYXRlLCBHTGVu
dW0gdHlwZSk7CisgICAgUXVlcnkgKmdldFF1ZXJ5KEdMdWludCBoYW5kbGUpIGNvbnN0OwogICAg
IFRyYW5zZm9ybUZlZWRiYWNrICpnZXRUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgaGFuZGxlKSBj
b25zdDsKKyAgICBMYWJlbGVkT2JqZWN0ICpnZXRMYWJlbGVkT2JqZWN0KEdMZW51bSBpZGVudGlm
aWVyLCBHTHVpbnQgbmFtZSkgY29uc3Q7CisgICAgTGFiZWxlZE9iamVjdCAqZ2V0TGFiZWxlZE9i
amVjdEZyb21QdHIoY29uc3Qgdm9pZCAqcHRyKSBjb25zdDsKIAogICAgIFRleHR1cmUgKmdldFRh
cmdldFRleHR1cmUoR0xlbnVtIHRhcmdldCkgY29uc3Q7CiAgICAgVGV4dHVyZSAqZ2V0U2FtcGxl
clRleHR1cmUodW5zaWduZWQgaW50IHNhbXBsZXIsIEdMZW51bSB0eXBlKSBjb25zdDsKQEAgLTE1
MywxMCArMTcyLDE0IEBACiAKICAgICBib29sIGlzU2FtcGxlcihHTHVpbnQgc2FtcGxlck5hbWUp
IGNvbnN0OwogCisgICAgYm9vbCBpc1ZlcnRleEFycmF5R2VuZXJhdGVkKEdMdWludCB2ZXJ0ZXhB
cnJheSk7CisgICAgYm9vbCBpc1RyYW5zZm9ybUZlZWRiYWNrR2VuZXJhdGVkKEdMdWludCB2ZXJ0
ZXhBcnJheSk7CisKICAgICB2b2lkIGdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFu
ICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKTsKICAgICB2b2lkIGdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7
CiAgICAgdm9pZCBnZXRJbnRlZ2VyNjR2KEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsK
KyAgICB2b2lkIGdldFBvaW50ZXJ2KEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykgY29uc3Q7
CiAKICAgICBib29sIGdldEluZGV4ZWRJbnRlZ2VydihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgsIEdMaW50ICpkYXRhKTsKICAgICBib29sIGdldEluZGV4ZWRJbnRlZ2VyNjR2KEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSk7CkBAIC0xNjQsMjkgKzE4NywyMTUg
QEAKICAgICBib29sIGdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAq
dHlwZSwgdW5zaWduZWQgaW50ICpudW1QYXJhbXMpOwogICAgIGJvb2wgZ2V0SW5kZXhlZFF1ZXJ5
UGFyYW1ldGVySW5mbyhHTGVudW0gdGFyZ2V0LCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAq
bnVtUGFyYW1zKTsKIAotICAgIEVycm9yIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcyk7Ci0gICAgRXJyb3IgZHJhd0Vs
ZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcng6OlJhbmdlVUkgJmluZGV4UmFuZ2UpOwor
ICAgIHZvaWQgY2xlYXIoR0xiaXRmaWVsZCBtYXNrKTsKKyAgICB2b2lkIGNsZWFyQnVmZmVyZnYo
R0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsK
KyAgICB2b2lkIGNsZWFyQnVmZmVydWl2KEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIs
IGNvbnN0IEdMdWludCAqdmFsdWVzKTsKKyAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0xlbnVtIGJ1
ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbHVlcyk7CisgICAgdm9pZCBj
bGVhckJ1ZmZlcmZpKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIEdMZmxvYXQgZGVw
dGgsIEdMaW50IHN0ZW5jaWwpOworCisgICAgRXJyb3IgZHJhd0FycmF5cyhHTGVudW0gbW9kZSwg
R0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOworICAgIEVycm9yIGRyYXdBcnJheXNJbnN0YW5j
ZWQoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3Rh
bmNlQ291bnQpOworCisgICAgRXJyb3IgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRleFJhbmdlKTsK
KyAgICBFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKyAgICBFcnJvciBkcmF3UmFuZ2VFbGVtZW50cyhH
TGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRl
eFJhbmdlKTsKKworICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdMaW50IHNyY1gwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kwLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHNyY1gxLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRzdFkwLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgxLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFkxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZmlsdGVyKTsKKworICAgIHZvaWQgcmVhZFBpeGVscyhHTGludCB4LAorICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgIEdMdm9pZCAqcGl4ZWxzKTsKKworICAgIHZvaWQgY29weVRleEltYWdlMkQoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpOwor
CisgICAgdm9pZCBjb3B5VGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKKworICAgIHZv
aWQgY29weVRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBoZWlnaHQpOworCisgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUy
RChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0
dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCk7CisKKyAgICB2b2lkIGZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxheWVyKTsKKworICAg
IHZvaWQgZHJhd0J1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpOworICAgIHZv
aWQgcmVhZEJ1ZmZlcihHTGVudW0gbW9kZSk7CisKKyAgICB2b2lkIGRpc2NhcmRGcmFtZWJ1ZmZl
cihHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0
dGFjaG1lbnRzKTsKKyAgICB2b2lkIGludmFsaWRhdGVGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0
LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKKyAg
ICB2b2lkIGludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCk7CisKKyAgICB2b2lkIHRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgIEdMaW50
IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgR0xp
bnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICpwaXhlbHMpOworICAgIHZvaWQgdGV4SW1hZ2UzRChHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7CisgICAgdm9pZCB0ZXhTdWJJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKKyAg
ICB2b2lkIHRleFN1YkltYWdlM0QoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpOworICAgIHZvaWQgY29tcHJlc3NlZFRleElt
YWdlMkQoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmRhdGEpOworICAgIHZvaWQgY29tcHJlc3NlZFRleEltYWdlM0QoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKTsKKyAgICB2b2lk
IGNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKTsKKyAgICB2b2lkIGNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmRhdGEpOworCiAgICAgRXJyb3IgZmx1c2goKTsKICAgICBFcnJvciBmaW5p
c2goKTsKIAotICAgIHZvaWQgcmVjb3JkRXJyb3IoY29uc3QgRXJyb3IgJmVycm9yKTsKKyAgICB2
b2lkIGdldEJ1ZmZlclBvaW50ZXJ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAq
KnBhcmFtcyk7CisgICAgR0x2b2lkICptYXBCdWZmZXIoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFj
Y2Vzcyk7CisgICAgR0xib29sZWFuIHVubWFwQnVmZmVyKEdMZW51bSB0YXJnZXQpOworICAgIEdM
dm9pZCAqbWFwQnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNp
emVpcHRyIGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MpOworICAgIHZvaWQgZmx1c2hNYXBwZWRC
dWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVu
Z3RoKTsKIAorICAgIHZvaWQgYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTGVudW0gcHJpbWl0aXZl
TW9kZSk7CisKKyAgICBib29sIGhhc0FjdGl2ZVRyYW5zZm9ybUZlZWRiYWNrKEdMdWludCBwcm9n
cmFtKSBjb25zdDsKKworICAgIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgs
IGNvbnN0IGNoYXIgKm1hcmtlcik7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBs
ZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcik7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpOwor
CisgICAgdm9pZCByZWNvcmRFcnJvcihjb25zdCBFcnJvciAmZXJyb3IpIG92ZXJyaWRlOworCiAg
ICAgR0xlbnVtIGdldEVycm9yKCk7CiAgICAgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCk7CiAgICAg
dmlydHVhbCBib29sIGlzUmVzZXROb3RpZmljYXRpb25FbmFibGVkKCk7CiAKLSAgICB2aXJ0dWFs
IGludCBnZXRDbGllbnRWZXJzaW9uKCkgY29uc3Q7Ci0KLSAgICBFR0xpbnQgZ2V0Q29uZmlnSUQo
KSBjb25zdDsKKyAgICBjb25zdCBlZ2w6OkNvbmZpZyAqZ2V0Q29uZmlnKCkgY29uc3Q7CiAgICAg
RUdMZW51bSBnZXRDbGllbnRUeXBlKCkgY29uc3Q7CiAgICAgRUdMZW51bSBnZXRSZW5kZXJCdWZm
ZXIoKSBjb25zdDsKIAotICAgIGNvbnN0IENhcHMgJmdldENhcHMoKSBjb25zdDsKLSAgICBjb25z
dCBUZXh0dXJlQ2Fwc01hcCAmZ2V0VGV4dHVyZUNhcHMoKSBjb25zdDsKLSAgICBjb25zdCBFeHRl
bnNpb25zICZnZXRFeHRlbnNpb25zKCkgY29uc3Q7Ci0KICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
Z2V0UmVuZGVyZXJTdHJpbmcoKSBjb25zdDsKIAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRF
eHRlbnNpb25TdHJpbmcoKSBjb25zdDsKQEAgLTE5NiwxMSArNDA1LDE4IEBACiAgICAgcng6OlJl
bmRlcmVyICpnZXRSZW5kZXJlcigpIHsgcmV0dXJuIG1SZW5kZXJlcjsgfQogCiAgICAgU3RhdGUg
JmdldFN0YXRlKCkgeyByZXR1cm4gbVN0YXRlOyB9Ci0gICAgY29uc3QgU3RhdGUgJmdldFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CiAKLSAgICBjb25zdCBEYXRhICZnZXREYXRhKCkg
Y29uc3QgeyByZXR1cm4gbURhdGE7IH0KKyAgcHJpdmF0ZToKKyAgICB2b2lkIHN5bmNSZW5kZXJl
clN0YXRlKCk7CisgICAgdm9pZCBzeW5jUmVuZGVyZXJTdGF0ZShjb25zdCBTdGF0ZTo6RGlydHlC
aXRzICZiaXRNYXNrLCBjb25zdCBTdGF0ZTo6RGlydHlPYmplY3RzICZvYmplY3RNYXNrKTsKKyAg
ICB2b2lkIHN5bmNTdGF0ZUZvclJlYWRQaXhlbHMoKTsKKyAgICB2b2lkIHN5bmNTdGF0ZUZvclRl
eEltYWdlKCk7CisgICAgdm9pZCBzeW5jU3RhdGVGb3JDbGVhcigpOworICAgIHZvaWQgc3luY1N0
YXRlRm9yQmxpdCgpOworICAgIFZlcnRleEFycmF5ICpjaGVja1ZlcnRleEFycmF5QWxsb2NhdGlv
bihHTHVpbnQgdmVydGV4QXJyYXlIYW5kbGUpOworICAgIFRyYW5zZm9ybUZlZWRiYWNrICpjaGVj
a1RyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdGlvbihHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spOwor
ICAgIEZyYW1lYnVmZmVyICpjaGVja0ZyYW1lYnVmZmVyQWxsb2NhdGlvbihHTHVpbnQgZnJhbWVi
dWZmZXJIYW5kbGUpOwogCi0gIHByaXZhdGU6CiAgICAgdm9pZCBkZXRhY2hCdWZmZXIoR0x1aW50
IGJ1ZmZlcik7CiAgICAgdm9pZCBkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKICAgICB2
b2lkIGRldGFjaEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcik7CkBAIC0yMTgsNiArNDM0
LDcgQEAKICAgICBDYXBzIG1DYXBzOwogICAgIFRleHR1cmVDYXBzTWFwIG1UZXh0dXJlQ2FwczsK
ICAgICBFeHRlbnNpb25zIG1FeHRlbnNpb25zOworICAgIExpbWl0YXRpb25zIG1MaW1pdGF0aW9u
czsKIAogICAgIC8vIFNoYWRlciBjb21waWxlcgogICAgIENvbXBpbGVyICptQ29tcGlsZXI7CkBA
IC0yMjcsMzAgKzQ0NCwyNCBAQAogCiAgICAgaW50IG1DbGllbnRWZXJzaW9uOwogCi0gICAgRUdM
aW50IG1Db25maWdJRDsKKyAgICBjb25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZpZzsKICAgICBFR0xl
bnVtIG1DbGllbnRUeXBlOwogCiAgICAgVGV4dHVyZU1hcCBtWmVyb1RleHR1cmVzOwogCi0gICAg
dHlwZWRlZiBzdGQ6Om1hcDxHTHVpbnQsIEZyYW1lYnVmZmVyKj4gRnJhbWVidWZmZXJNYXA7Ci0g
ICAgRnJhbWVidWZmZXJNYXAgbUZyYW1lYnVmZmVyTWFwOworICAgIFJlc291cmNlTWFwPEZyYW1l
YnVmZmVyPiBtRnJhbWVidWZmZXJNYXA7CiAgICAgSGFuZGxlQWxsb2NhdG9yIG1GcmFtZWJ1ZmZl
ckhhbmRsZUFsbG9jYXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1aW50LCBGZW5jZU5W
Kj4gRmVuY2VOVk1hcDsKLSAgICBGZW5jZU5WTWFwIG1GZW5jZU5WTWFwOworICAgIFJlc291cmNl
TWFwPEZlbmNlTlY+IG1GZW5jZU5WTWFwOwogICAgIEhhbmRsZUFsbG9jYXRvciBtRmVuY2VOVkhh
bmRsZUFsbG9jYXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1aW50LCBRdWVyeSo+IFF1
ZXJ5TWFwOwotICAgIFF1ZXJ5TWFwIG1RdWVyeU1hcDsKKyAgICBSZXNvdXJjZU1hcDxRdWVyeT4g
bVF1ZXJ5TWFwOwogICAgIEhhbmRsZUFsbG9jYXRvciBtUXVlcnlIYW5kbGVBbGxvY2F0b3I7CiAK
LSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMdWludCwgVmVydGV4QXJyYXkqPiBWZXJ0ZXhBcnJheU1h
cDsKLSAgICBWZXJ0ZXhBcnJheU1hcCBtVmVydGV4QXJyYXlNYXA7CisgICAgUmVzb3VyY2VNYXA8
VmVydGV4QXJyYXk+IG1WZXJ0ZXhBcnJheU1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbVZlcnRl
eEFycmF5SGFuZGxlQWxsb2NhdG9yOwogCi0gICAgQmluZGluZ1BvaW50ZXI8VHJhbnNmb3JtRmVl
ZGJhY2s+IG1UcmFuc2Zvcm1GZWVkYmFja1plcm87Ci0gICAgdHlwZWRlZiBzdGQ6Om1hcDxHTHVp
bnQsIFRyYW5zZm9ybUZlZWRiYWNrKj4gVHJhbnNmb3JtRmVlZGJhY2tNYXA7Ci0gICAgVHJhbnNm
b3JtRmVlZGJhY2tNYXAgbVRyYW5zZm9ybUZlZWRiYWNrTWFwOworICAgIFJlc291cmNlTWFwPFRy
YW5zZm9ybUZlZWRiYWNrPiBtVHJhbnNmb3JtRmVlZGJhY2tNYXA7CiAgICAgSGFuZGxlQWxsb2Nh
dG9yIG1UcmFuc2Zvcm1GZWVkYmFja0FsbG9jYXRvcjsKIAogICAgIHN0ZDo6c3RyaW5nIG1SZW5k
ZXJlclN0cmluZzsKQEAgLTI2NywxMyArNDc4LDIwIEBACiAgICAgR0xlbnVtIG1SZXNldFN0YXR1
czsKICAgICBHTGVudW0gbVJlc2V0U3RyYXRlZ3k7CiAgICAgYm9vbCBtUm9idXN0QWNjZXNzOwor
ICAgIGVnbDo6U3VyZmFjZSAqbUN1cnJlbnRTdXJmYWNlOwogCiAgICAgUmVzb3VyY2VNYW5hZ2Vy
ICptUmVzb3VyY2VNYW5hZ2VyOwogCi0gICAgLy8gQ2FjaGUgdGhlIERhdGEgb2JqZWN0IHRvIGF2
b2lkIHJlLWNhbGxpbmcgdGhlIGNvbnN0cnVjdG9yCi0gICAgRGF0YSBtRGF0YTsKKyAgICBTdGF0
ZTo6RGlydHlCaXRzIG1UZXhJbWFnZURpcnR5Qml0czsKKyAgICBTdGF0ZTo6RGlydHlPYmplY3Rz
IG1UZXhJbWFnZURpcnR5T2JqZWN0czsKKyAgICBTdGF0ZTo6RGlydHlCaXRzIG1SZWFkUGl4ZWxz
RGlydHlCaXRzOworICAgIFN0YXRlOjpEaXJ0eU9iamVjdHMgbVJlYWRQaXhlbHNEaXJ0eU9iamVj
dHM7CisgICAgU3RhdGU6OkRpcnR5Qml0cyBtQ2xlYXJEaXJ0eUJpdHM7CisgICAgU3RhdGU6OkRp
cnR5T2JqZWN0cyBtQ2xlYXJEaXJ0eU9iamVjdHM7CisgICAgU3RhdGU6OkRpcnR5Qml0cyBtQmxp
dERpcnR5Qml0czsKKyAgICBTdGF0ZTo6RGlydHlPYmplY3RzIG1CbGl0RGlydHlPYmplY3RzOwog
fTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgIC8vIExJQkFOR0xFX0NPTlRF
WFRfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGF0
YS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIsNDAgKzEyLDQ1IEBACiBuYW1l
c3BhY2UgZ2wKIHsKIAotRGF0YTo6RGF0YShHTGludCBjbGllbnRWZXJzaW9uSW4sIGNvbnN0IFN0
YXRlICZzdGF0ZUluLCBjb25zdCBDYXBzICZjYXBzSW4sCi0gICAgICAgICAgIGNvbnN0IFRleHR1
cmVDYXBzTWFwICZ0ZXh0dXJlQ2Fwc0luLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zSW4s
Ci0gICAgICAgICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VySW4pCi0g
ICAgOiBjbGllbnRWZXJzaW9uKGNsaWVudFZlcnNpb25JbiksCitEYXRhOjpEYXRhKHVpbnRwdHJf
dCBjb250ZXh0SW4sCisgICAgICAgICAgIEdMaW50IGNsaWVudFZlcnNpb25JbiwKKyAgICAgICAg
ICAgY29uc3QgU3RhdGUgJnN0YXRlSW4sCisgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHNJbiwK
KyAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzSW4sCisgICAgICAg
ICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnNJbiwKKyAgICAgICAgICAgY29uc3QgUmVz
b3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXJJbiwKKyAgICAgICAgICAgY29uc3QgTGltaXRh
dGlvbnMgJmxpbWl0YXRpb25zSW4pCisgICAgOiBjb250ZXh0KGNvbnRleHRJbiksCisgICAgICBj
bGllbnRWZXJzaW9uKGNsaWVudFZlcnNpb25JbiksCiAgICAgICBzdGF0ZSgmc3RhdGVJbiksCiAg
ICAgICBjYXBzKCZjYXBzSW4pLAogICAgICAgdGV4dHVyZUNhcHMoJnRleHR1cmVDYXBzSW4pLAog
ICAgICAgZXh0ZW5zaW9ucygmZXh0ZW5zaW9uc0luKSwKLSAgICAgIHJlc291cmNlTWFuYWdlcihy
ZXNvdXJjZU1hbmFnZXJJbikKKyAgICAgIHJlc291cmNlTWFuYWdlcihyZXNvdXJjZU1hbmFnZXJJ
biksCisgICAgICBsaW1pdGF0aW9ucygmbGltaXRhdGlvbnNJbikKIHt9CiAKIERhdGE6On5EYXRh
KCkKIHsKIH0KIAotRGF0YTo6RGF0YShjb25zdCBEYXRhICZvdGhlcikKLSAgICA6IGNsaWVudFZl
cnNpb24ob3RoZXIuY2xpZW50VmVyc2lvbiksCi0gICAgICBzdGF0ZShvdGhlci5zdGF0ZSksCi0g
ICAgICBjYXBzKG90aGVyLmNhcHMpLAotICAgICAgdGV4dHVyZUNhcHMob3RoZXIudGV4dHVyZUNh
cHMpLAotICAgICAgZXh0ZW5zaW9ucyhvdGhlci5leHRlbnNpb25zKSwKLSAgICAgIHJlc291cmNl
TWFuYWdlcihvdGhlci5yZXNvdXJjZU1hbmFnZXIpCitWYWxpZGF0aW9uQ29udGV4dDo6VmFsaWRh
dGlvbkNvbnRleHQoR0xpbnQgY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZU1h
bmFnZXIgKnJlc291cmNlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBza2lwVmFsaWRhdGlvbikKKyAgICA6IG1EYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwKKyAgICAgICAgICAgIGNsaWVudFZlcnNpb24s
CisgICAgICAgICAgICBzdGF0ZSwKKyAgICAgICAgICAgIGNhcHMsCisgICAgICAgICAgICB0ZXh0
dXJlQ2FwcywKKyAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAgICAgICAgICByZXNvdXJjZU1h
bmFnZXIsCisgICAgICAgICAgICBsaW1pdGF0aW9ucyksCisgICAgICBtU2tpcFZhbGlkYXRpb24o
c2tpcFZhbGlkYXRpb24pCiB7CiB9Ci0KLURhdGEgJkRhdGE6Om9wZXJhdG9yPShjb25zdCBEYXRh
ICZvdGhlcikKLXsKLSAgICBjbGllbnRWZXJzaW9uID0gb3RoZXIuY2xpZW50VmVyc2lvbjsKLSAg
ICBzdGF0ZSA9IG90aGVyLnN0YXRlOwotICAgIGNhcHMgPSBvdGhlci5jYXBzOwotICAgIHRleHR1
cmVDYXBzID0gb3RoZXIudGV4dHVyZUNhcHM7Ci0gICAgZXh0ZW5zaW9ucyA9IG90aGVyLmV4dGVu
c2lvbnM7Ci0gICAgcmVzb3VyY2VNYW5hZ2VyID0gb3RoZXIucmVzb3VyY2VNYW5hZ2VyOwotICAg
IHJldHVybiAqdGhpczsKLX0KLQotfQorfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EYXRhLmgJKHJldmlzaW9uIDE5OTY4MikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTksMzAgKzksNjQgQEAKICNpZm5kZWYgTElCQU5HTEVfREFUQV9IXwogI2RlZmlu
ZSBMSUJBTkdMRV9EQVRBX0hfCiAKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAKIG5hbWVzcGFjZSBnbAogewogCi1zdHJ1Y3QgRGF0
YSBmaW5hbAorc3RydWN0IERhdGEgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCiB7
CiAgIHB1YmxpYzoKLSAgICBEYXRhKEdMaW50IGNsaWVudFZlcnNpb24sIGNvbnN0IFN0YXRlICZz
dGF0ZSwgY29uc3QgQ2FwcyAmY2FwcywKLSAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0
ZXh0dXJlQ2FwcywgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKLSAgICAgICAgIGNvbnN0
IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyKTsKKyAgICBEYXRhKHVpbnRwdHJfdCBj
b250ZXh0LAorICAgICAgICAgR0xpbnQgY2xpZW50VmVyc2lvbiwKKyAgICAgICAgIGNvbnN0IFN0
YXRlICZzdGF0ZSwKKyAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCisgICAgICAgICBjb25zdCBU
ZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMsCisgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZl
eHRlbnNpb25zLAorICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFn
ZXIsCisgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlvbnMpOwogICAgIH5EYXRh
KCk7CiAKLSAgICBEYXRhKGNvbnN0IERhdGEgJm90aGVyKTsKLSAgICBEYXRhICZvcGVyYXRvcj0o
Y29uc3QgRGF0YSAmb3RoZXIpOwotCisgICAgdWludHB0cl90IGNvbnRleHQ7CiAgICAgR0xpbnQg
Y2xpZW50VmVyc2lvbjsKICAgICBjb25zdCBTdGF0ZSAqc3RhdGU7CiAgICAgY29uc3QgQ2FwcyAq
Y2FwczsKICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAqdGV4dHVyZUNhcHM7CiAgICAgY29uc3Qg
RXh0ZW5zaW9ucyAqZXh0ZW5zaW9uczsKICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291
cmNlTWFuYWdlcjsKKyAgICBjb25zdCBMaW1pdGF0aW9ucyAqbGltaXRhdGlvbnM7CiB9OwogCitj
bGFzcyBWYWxpZGF0aW9uQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6
CisgICAgVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQ2FwcyAmY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fwc01h
cCAmdGV4dHVyZUNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAm
ZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIg
KnJlc291cmNlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9u
cyAmbGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBza2lwVmFsaWRhdGlv
bik7CisgICAgdmlydHVhbCB+VmFsaWRhdGlvbkNvbnRleHQoKSB7fQorCisgICAgdmlydHVhbCB2
b2lkIHJlY29yZEVycm9yKGNvbnN0IEVycm9yICZlcnJvcikgPSAwOworCisgICAgY29uc3QgRGF0
YSAmZ2V0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1EYXRhOyB9CisgICAgaW50IGdldENsaWVudFZl
cnNpb24oKSBjb25zdCB7IHJldHVybiBtRGF0YS5jbGllbnRWZXJzaW9uOyB9CisgICAgY29uc3Qg
U3RhdGUgJmdldFN0YXRlKCkgY29uc3QgeyByZXR1cm4gKm1EYXRhLnN0YXRlOyB9CisgICAgY29u
c3QgQ2FwcyAmZ2V0Q2FwcygpIGNvbnN0IHsgcmV0dXJuICptRGF0YS5jYXBzOyB9CisgICAgY29u
c3QgVGV4dHVyZUNhcHNNYXAgJmdldFRleHR1cmVDYXBzKCkgY29uc3QgeyByZXR1cm4gKm1EYXRh
LnRleHR1cmVDYXBzOyB9CisgICAgY29uc3QgRXh0ZW5zaW9ucyAmZ2V0RXh0ZW5zaW9ucygpIGNv
bnN0IHsgcmV0dXJuICptRGF0YS5leHRlbnNpb25zOyB9CisgICAgY29uc3QgTGltaXRhdGlvbnMg
JmdldExpbWl0YXRpb25zKCkgY29uc3QgeyByZXR1cm4gKm1EYXRhLmxpbWl0YXRpb25zOyB9Cisg
ICAgYm9vbCBza2lwVmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1Ta2lwVmFsaWRhdGlvbjsg
fQorCisgIHByb3RlY3RlZDoKKyAgICBEYXRhIG1EYXRhOworICAgIGJvb2wgbVNraXBWYWxpZGF0
aW9uOworfTsKKwogfQogCiAjZW5kaWYgLy8gTElCQU5HTEVfREFUQV9IXwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0RlYnVnLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGVidWcuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0RlYnVnLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDMwMyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIERlYnVnLmNw
cDogRGVmaW5lcyBkZWJ1ZyBzdGF0ZSB1c2VkIGZvciBHTF9LSFJfZGVidWcKKworI2luY2x1ZGUg
ImxpYkFOR0xFL0RlYnVnLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworI2luY2x1
ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx0dXBsZT4KKworbmFtZXNwYWNlIGdsCit7CisKK0Rl
YnVnOjpEZWJ1ZygpCisgICAgOiBtT3V0cHV0RW5hYmxlZChmYWxzZSksCisgICAgICBtQ2FsbGJh
Y2tGdW5jdGlvbihudWxscHRyKSwKKyAgICAgIG1DYWxsYmFja1VzZXJQYXJhbShudWxscHRyKSwK
KyAgICAgIG1NZXNzYWdlcygpLAorICAgICAgbU1heExvZ2dlZE1lc3NhZ2VzKDApLAorICAgICAg
bU91dHB1dFN5bmNocm9ub3VzKGZhbHNlKSwKKyAgICAgIG1Hcm91cHMoKQoreworICAgIHB1c2hE
ZWZhdWx0R3JvdXAoKTsKK30KKwordm9pZCBEZWJ1Zzo6c2V0TWF4TG9nZ2VkTWVzc2FnZXMoR0x1
aW50IG1heExvZ2dlZE1lc3NhZ2VzKQoreworICAgIG1NYXhMb2dnZWRNZXNzYWdlcyA9IG1heExv
Z2dlZE1lc3NhZ2VzOworfQorCit2b2lkIERlYnVnOjpzZXRPdXRwdXRFbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBtT3V0cHV0RW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKK2Jvb2wgRGVidWc6
OmlzT3V0cHV0RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1PdXRwdXRFbmFibGVkOwor
fQorCit2b2lkIERlYnVnOjpzZXRPdXRwdXRTeW5jaHJvbm91cyhib29sIHN5bmNocm9ub3VzKQor
eworICAgIG1PdXRwdXRTeW5jaHJvbm91cyA9IHN5bmNocm9ub3VzOworfQorCitib29sIERlYnVn
Ojppc091dHB1dFN5bmNocm9ub3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU91dHB1dFN5bmNo
cm9ub3VzOworfQorCit2b2lkIERlYnVnOjpzZXRDYWxsYmFjayhHTERFQlVHUFJPQ0tIUiBjYWxs
YmFjaywgY29uc3Qgdm9pZCAqdXNlclBhcmFtKQoreworICAgIG1DYWxsYmFja0Z1bmN0aW9uICA9
IGNhbGxiYWNrOworICAgIG1DYWxsYmFja1VzZXJQYXJhbSA9IHVzZXJQYXJhbTsKK30KKworR0xE
RUJVR1BST0NLSFIgRGVidWc6OmdldENhbGxiYWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUNh
bGxiYWNrRnVuY3Rpb247Cit9CisKK2NvbnN0IHZvaWQgKkRlYnVnOjpnZXRVc2VyUGFyYW0oKSBj
b25zdAoreworICAgIHJldHVybiBtQ2FsbGJhY2tVc2VyUGFyYW07Cit9CisKK3ZvaWQgRGVidWc6
Omluc2VydE1lc3NhZ2UoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSkKK3sKKyAgICBzdGQ6OnN0cmluZyBt
ZXNzYWdlQ29weShtZXNzYWdlKTsKKyAgICBpbnNlcnRNZXNzYWdlKHNvdXJjZSwgdHlwZSwgaWQs
IHNldmVyaXR5LCBzdGQ6Om1vdmUobWVzc2FnZUNvcHkpKTsKK30KKwordm9pZCBEZWJ1Zzo6aW5z
ZXJ0TWVzc2FnZShHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nICYmbWVzc2FnZSkKK3sKKyAgICBpZiAoIWlzTWVzc2FnZUVuYWJsZWQo
c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtQ2FsbGJhY2tGdW5jdGlvbiAhPSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgLy8gVE9ETyhnZW9mZmxhbmcpIENoZWNrIHRoZSBzeW5jaHJvbm91cyBmbGFnIGFuZCBwb3Rl
bnRpYWxseSBmbHVzaCBtZXNzYWdlcyBmcm9tIGFub3RoZXIKKyAgICAgICAgLy8gdGhyZWFkLgor
ICAgICAgICBtQ2FsbGJhY2tGdW5jdGlvbihzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4obWVzc2FnZS5sZW5ndGgoKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UuY19zdHIoKSwgbUNhbGxiYWNrVXNlclBhcmFtKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgaWYgKG1NZXNzYWdlcy5zaXplKCkgPj0gbU1heExvZ2dlZE1l
c3NhZ2VzKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBEcm9wIG1lc3NhZ2VzIG92ZXIgdGhl
IGxpbWl0CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBNZXNzYWdl
IG07CisgICAgICAgIG0uc291cmNlICAgPSBzb3VyY2U7CisgICAgICAgIG0udHlwZSAgICAgPSB0
eXBlOworICAgICAgICBtLmlkICAgICAgID0gaWQ7CisgICAgICAgIG0uc2V2ZXJpdHkgPSBzZXZl
cml0eTsKKyAgICAgICAgbS5tZXNzYWdlICA9IHN0ZDo6bW92ZShtZXNzYWdlKTsKKworICAgICAg
ICBtTWVzc2FnZXMucHVzaF9iYWNrKHN0ZDo6bW92ZShtKSk7CisgICAgfQorfQorCitzaXplX3Qg
RGVidWc6OmdldE1lc3NhZ2VzKEdMdWludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNv
dXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZykK
K3sKKyAgICBzaXplX3QgbWVzc2FnZUNvdW50ICAgICAgID0gMDsKKyAgICBzaXplX3QgbWVzc2Fn
ZVN0cmluZ0luZGV4ID0gMDsKKyAgICB3aGlsZSAobWVzc2FnZUNvdW50IDw9IGNvdW50ICYmICFt
TWVzc2FnZXMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGNvbnN0IE1lc3NhZ2UgJm0gPSBtTWVz
c2FnZXMuZnJvbnQoKTsKKworICAgICAgICBpZiAobWVzc2FnZUxvZyAhPSBudWxscHRyKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbWVzc2FnZSBjYW4gZml0IGlu
IHRoZSBtZXNzYWdlIGJ1ZmZlcgorICAgICAgICAgICAgaWYgKG1lc3NhZ2VTdHJpbmdJbmRleCAr
IG0ubWVzc2FnZS5sZW5ndGgoKSArIDEgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBzdGQ6OmNvcHkobS5tZXNzYWdlLmJlZ2luKCksIG0ubWVzc2FnZS5lbmQoKSwg
bWVzc2FnZUxvZyArIG1lc3NhZ2VTdHJpbmdJbmRleCk7CisgICAgICAgICAgICBtZXNzYWdlU3Ry
aW5nSW5kZXggKz0gbS5tZXNzYWdlLmxlbmd0aCgpOworCisgICAgICAgICAgICBtZXNzYWdlTG9n
W21lc3NhZ2VTdHJpbmdJbmRleF0gPSAnXDAnOworICAgICAgICAgICAgbWVzc2FnZVN0cmluZ0lu
ZGV4ICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc291cmNlcyAhPSBudWxscHRyKQor
ICAgICAgICB7CisgICAgICAgICAgICBzb3VyY2VzW21lc3NhZ2VDb3VudF0gPSBtLnNvdXJjZTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlcyAhPSBudWxscHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0eXBlc1ttZXNzYWdlQ291bnRdID0gbS50eXBlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKGlkcyAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBpZHNbbWVz
c2FnZUNvdW50XSA9IG0uaWQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2V2ZXJpdGllcyAh
PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBzZXZlcml0aWVzW21lc3NhZ2VDb3Vu
dF0gPSBtLnNldmVyaXR5OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxlbmd0aHMgIT0gbnVs
bHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgbGVuZ3Roc1ttZXNzYWdlQ291bnRdID0gc3Rh
dGljX2Nhc3Q8R0xzaXplaT4obS5tZXNzYWdlLmxlbmd0aCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIG1NZXNzYWdlcy5wb3BfZnJvbnQoKTsKKworICAgICAgICBtZXNzYWdlQ291bnQrKzsKKyAg
ICB9CisKKyAgICByZXR1cm4gbWVzc2FnZUNvdW50OworfQorCitzaXplX3QgRGVidWc6OmdldE5l
eHRNZXNzYWdlTGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbU1lc3NhZ2VzLmVtcHR5KCkg
PyAwIDogbU1lc3NhZ2VzLmZyb250KCkubWVzc2FnZS5sZW5ndGgoKTsKK30KKworc2l6ZV90IERl
YnVnOjpnZXRNZXNzYWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBtTWVzc2FnZXMuc2l6
ZSgpOworfQorCit2b2lkIERlYnVnOjpzZXRNZXNzYWdlQ29udHJvbChHTGVudW0gc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICYmaWRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBlbmFibGVkKQoreworICAgIENvbnRyb2wgYzsKKyAgICBjLnNvdXJjZSAg
ID0gc291cmNlOworICAgIGMudHlwZSAgICAgPSB0eXBlOworICAgIGMuc2V2ZXJpdHkgPSBzZXZl
cml0eTsKKyAgICBjLmlkcyAgICAgID0gc3RkOjptb3ZlKGlkcyk7CisgICAgYy5lbmFibGVkICA9
IGVuYWJsZWQ7CisKKyAgICBhdXRvICZjb250cm9scyA9IG1Hcm91cHMuYmFjaygpLmNvbnRyb2xz
OworICAgIGNvbnRyb2xzLnB1c2hfYmFjayhzdGQ6Om1vdmUoYykpOworfQorCit2b2lkIERlYnVn
OjpwdXNoR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50IGlkLCBzdGQ6OnN0cmluZyAmJm1lc3Nh
Z2UpCit7CisgICAgaW5zZXJ0TWVzc2FnZShzb3VyY2UsIEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9V
UCwgaWQsIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiwKKyAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKG1lc3NhZ2UpKTsKKworICAgIEdyb3VwIGc7CisgICAgZy5zb3VyY2UgID0g
c291cmNlOworICAgIGcuaWQgICAgICA9IGlkOworICAgIGcubWVzc2FnZSA9IHN0ZDo6bW92ZSht
ZXNzYWdlKTsKKyAgICBtR3JvdXBzLnB1c2hfYmFjayhzdGQ6Om1vdmUoZykpOworfQorCit2b2lk
IERlYnVnOjpwb3BHcm91cCgpCit7CisgICAgLy8gTWFrZSBzdXJlIHRoZSBkZWZhdWx0IGdyb3Vw
IGlzIG5vdCBhYm91dCB0byBiZSBwb3BwZWQKKyAgICBBU1NFUlQobUdyb3Vwcy5zaXplKCkgPiAx
KTsKKworICAgIEdyb3VwIGcgPSBtR3JvdXBzLmJhY2soKTsKKyAgICBtR3JvdXBzLnBvcF9iYWNr
KCk7CisKKyAgICBpbnNlcnRNZXNzYWdlKGcuc291cmNlLCBHTF9ERUJVR19UWVBFX1BPUF9HUk9V
UCwgZy5pZCwgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OLAorICAgICAgICAgICAgICAg
ICAgZy5tZXNzYWdlKTsKK30KKworc2l6ZV90IERlYnVnOjpnZXRHcm91cFN0YWNrRGVwdGgoKSBj
b25zdAoreworICAgIHJldHVybiBtR3JvdXBzLnNpemUoKTsKK30KKworYm9vbCBEZWJ1Zzo6aXNN
ZXNzYWdlRW5hYmxlZChHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50IGlkLCBHTGVu
dW0gc2V2ZXJpdHkpIGNvbnN0Cit7CisgICAgaWYgKCFtT3V0cHV0RW5hYmxlZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gZ3JvdXBJdGVyID0g
bUdyb3Vwcy5yYmVnaW4oKTsgZ3JvdXBJdGVyICE9IG1Hcm91cHMucmVuZCgpOyBncm91cEl0ZXIr
KykKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmNvbnRyb2xzID0gZ3JvdXBJdGVyLT5jb250
cm9sczsKKyAgICAgICAgZm9yIChhdXRvIGNvbnRyb2xJdGVyID0gY29udHJvbHMucmJlZ2luKCk7
IGNvbnRyb2xJdGVyICE9IGNvbnRyb2xzLnJlbmQoKTsgY29udHJvbEl0ZXIrKykKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc3QgYXV0byAmY29udHJvbCA9ICpjb250cm9sSXRlcjsKKworICAg
ICAgICAgICAgaWYgKGNvbnRyb2wuc291cmNlICE9IEdMX0RPTlRfQ0FSRSAmJiBjb250cm9sLnNv
dXJjZSAhPSBzb3VyY2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb250cm9sLnR5cGUgIT0gR0xfRE9O
VF9DQVJFICYmIGNvbnRyb2wudHlwZSAhPSB0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY29udHJv
bC5zZXZlcml0eSAhPSBHTF9ET05UX0NBUkUgJiYgY29udHJvbC5zZXZlcml0eSAhPSBzZXZlcml0
eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCFjb250cm9sLmlkcy5lbXB0eSgpICYmCisgICAgICAgICAg
ICAgICAgc3RkOjpmaW5kKGNvbnRyb2wuaWRzLmJlZ2luKCksIGNvbnRyb2wuaWRzLmVuZCgpLCBp
ZCkgPT0gY29udHJvbC5pZHMuZW5kKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBjb250cm9sLmVu
YWJsZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBE
ZWJ1Zzo6cHVzaERlZmF1bHRHcm91cCgpCit7CisgICAgR3JvdXAgZzsKKyAgICBnLnNvdXJjZSAg
PSBHTF9OT05FOworICAgIGcuaWQgICAgICA9IDA7CisgICAgZy5tZXNzYWdlID0gIiI7CisKKyAg
ICBDb250cm9sIGMwOworICAgIGMwLnNvdXJjZSAgID0gR0xfRE9OVF9DQVJFOworICAgIGMwLnR5
cGUgICAgID0gR0xfRE9OVF9DQVJFOworICAgIGMwLnNldmVyaXR5ID0gR0xfRE9OVF9DQVJFOwor
ICAgIGMwLmVuYWJsZWQgPSB0cnVlOworICAgIGcuY29udHJvbHMucHVzaF9iYWNrKHN0ZDo6bW92
ZShjMCkpOworCisgICAgQ29udHJvbCBjMTsKKyAgICBjMS5zb3VyY2UgICA9IEdMX0RPTlRfQ0FS
RTsKKyAgICBjMS50eXBlICAgICA9IEdMX0RPTlRfQ0FSRTsKKyAgICBjMS5zZXZlcml0eSA9IEdM
X0RFQlVHX1NFVkVSSVRZX0xPVzsKKyAgICBjMS5lbmFibGVkID0gZmFsc2U7CisgICAgZy5jb250
cm9scy5wdXNoX2JhY2soc3RkOjptb3ZlKGMxKSk7CisKKyAgICBtR3JvdXBzLnB1c2hfYmFjayhz
dGQ6Om1vdmUoZykpOworfQorfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGVidWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGVidWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZWJ1Zy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGVidWcuaDogRGVmaW5lcyBkZWJ1
ZyBzdGF0ZSB1c2VkIGZvciBHTF9LSFJfZGVidWcKKworI2lmbmRlZiBMSUJBTkdMRV9ERUJVR19I
XworI2RlZmluZSBMSUJBTkdMRV9ERUJVR19IXworCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCisjaW5jbHVkZSA8ZGVxdWU+CisjaW5jbHVk
ZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIGdsCit7CisKK2NsYXNz
IExhYmVsZWRPYmplY3QKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfkxhYmVsZWRPYmplY3Qo
KSB7fQorICAgIHZpcnR1YWwgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwp
ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0ID0g
MDsKK307CisKK2NsYXNzIERlYnVnIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoK
KyAgICBEZWJ1ZygpOworCisgICAgdm9pZCBzZXRNYXhMb2dnZWRNZXNzYWdlcyhHTHVpbnQgbWF4
TG9nZ2VkTWVzc2FnZXMpOworCisgICAgdm9pZCBzZXRPdXRwdXRFbmFibGVkKGJvb2wgZW5hYmxl
ZCk7CisgICAgYm9vbCBpc091dHB1dEVuYWJsZWQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0T3V0
cHV0U3luY2hyb25vdXMoYm9vbCBzeW5jaHJvbm91cyk7CisgICAgYm9vbCBpc091dHB1dFN5bmNo
cm9ub3VzKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENhbGxiYWNrKEdMREVCVUdQUk9DS0hSIGNh
bGxiYWNrLCBjb25zdCB2b2lkICp1c2VyUGFyYW0pOworICAgIEdMREVCVUdQUk9DS0hSIGdldENh
bGxiYWNrKCkgY29uc3Q7CisgICAgY29uc3Qgdm9pZCAqZ2V0VXNlclBhcmFtKCkgY29uc3Q7CisK
KyAgICB2b2lkIGluc2VydE1lc3NhZ2UoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSk7CisgICAgdm9pZCBpbnNlcnRNZXNzYWdl
KEdMZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgJiZtZXNz
YWdlKTsKKworICAgIHZvaWQgc2V0TWVzc2FnZUNvbnRyb2woR0xlbnVtIHNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8R0x1aW50PiAmJmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5h
YmxlZCk7CisgICAgc2l6ZV90IGdldE1lc3NhZ2VzKEdMdWludCBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gKnNvdXJjZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aHMsCisgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZyk7CisgICAgc2l6
ZV90IGdldE5leHRNZXNzYWdlTGVuZ3RoKCkgY29uc3Q7CisgICAgc2l6ZV90IGdldE1lc3NhZ2VD
b3VudCgpIGNvbnN0OworCisgICAgdm9pZCBwdXNoR3JvdXAoR0xlbnVtIHNvdXJjZSwgR0x1aW50
IGlkLCBzdGQ6OnN0cmluZyAmJm1lc3NhZ2UpOworICAgIHZvaWQgcG9wR3JvdXAoKTsKKyAgICBz
aXplX3QgZ2V0R3JvdXBTdGFja0RlcHRoKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBib29s
IGlzTWVzc2FnZUVuYWJsZWQoR0xlbnVtIHNvdXJjZSwgR0xlbnVtIHR5cGUsIEdMdWludCBpZCwg
R0xlbnVtIHNldmVyaXR5KSBjb25zdDsKKworICAgIHZvaWQgcHVzaERlZmF1bHRHcm91cCgpOwor
CisgICAgc3RydWN0IE1lc3NhZ2UKKyAgICB7CisgICAgICAgIEdMZW51bSBzb3VyY2U7CisgICAg
ICAgIEdMZW51bSB0eXBlOworICAgICAgICBHTHVpbnQgaWQ7CisgICAgICAgIEdMZW51bSBzZXZl
cml0eTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZTsKKyAgICB9OworCisgICAgc3RydWN0
IENvbnRyb2wKKyAgICB7CisgICAgICAgIEdMZW51bSBzb3VyY2U7CisgICAgICAgIEdMZW51bSB0
eXBlOworICAgICAgICBHTGVudW0gc2V2ZXJpdHk7CisgICAgICAgIHN0ZDo6dmVjdG9yPEdMdWlu
dD4gaWRzOworICAgICAgICBib29sIGVuYWJsZWQ7CisgICAgfTsKKworICAgIHN0cnVjdCBHcm91
cAorICAgIHsKKyAgICAgICAgR0xlbnVtIHNvdXJjZTsKKyAgICAgICAgR0x1aW50IGlkOworICAg
ICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlOworCisgICAgICAgIHN0ZDo6dmVjdG9yPENvbnRyb2w+
IGNvbnRyb2xzOworICAgIH07CisKKyAgICBib29sIG1PdXRwdXRFbmFibGVkOworICAgIEdMREVC
VUdQUk9DS0hSIG1DYWxsYmFja0Z1bmN0aW9uOworICAgIGNvbnN0IHZvaWQgKm1DYWxsYmFja1Vz
ZXJQYXJhbTsKKyAgICBzdGQ6OmRlcXVlPE1lc3NhZ2U+IG1NZXNzYWdlczsKKyAgICBHTHVpbnQg
bU1heExvZ2dlZE1lc3NhZ2VzOworICAgIGJvb2wgbU91dHB1dFN5bmNocm9ub3VzOworICAgIHN0
ZDo6dmVjdG9yPEdyb3VwPiBtR3JvdXBzOworfTsKK30gIC8vIG5hbWVzcGFjZSBnbAorCisjZW5k
aWYgIC8vIExJQkFOR0xFX0RFQlVHX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvRGV2aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRGV2aWNlLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0RldmljZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4LDYgKzE4LDEwIEBACiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5oIgogCisjaWYgZGVmaW5lZChBTkdMRV9F
TkFCTEVfRDNEMTEpCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0RldmljZUQzRC5o
IgorI2VuZGlmCisKIG5hbWVzcGFjZSBlZ2wKIHsKIApAQCAtMzEsMjEgKzM1LDc1IEBACiAgICAg
cmV0dXJuIHN0cmVhbS5zdHIoKTsKIH0KIAotRGV2aWNlOjpEZXZpY2UoRGlzcGxheSAqZGlzcGxh
eSwgcng6OkRldmljZUltcGwgKmltcGwpCi0gICAgOiBtRGlzcGxheShkaXNwbGF5KSwKLSAgICAg
IG1JbXBsZW1lbnRhdGlvbihpbXBsKQordHlwZWRlZiBzdGQ6OnNldDxlZ2w6OkRldmljZSAqPiBE
ZXZpY2VTZXQ7CitzdGF0aWMgRGV2aWNlU2V0ICpHZXREZXZpY2VTZXQoKQogeworICAgIHN0YXRp
YyBEZXZpY2VTZXQgZGV2aWNlczsKKyAgICByZXR1cm4gJmRldmljZXM7Cit9CisKKy8vIFN0YXRp
YyBmYWN0b3J5IG1ldGhvZHMKK2VnbDo6RXJyb3IgRGV2aWNlOjpDcmVhdGVEZXZpY2Uodm9pZCAq
ZGV2aWNlUG9pbnRlciwgRUdMaW50IGRldmljZVR5cGUsIERldmljZSAqKm91dERldmljZSkKK3sK
KyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKKyAgICBpZiAoZGV2aWNlVHlwZSA9PSBF
R0xfRDNEMTFfREVWSUNFX0FOR0xFKQorICAgIHsKKyAgICAgICAgcng6OkRldmljZUQzRCAqZGV2
aWNlRDNEID0gbmV3IHJ4OjpEZXZpY2VEM0QoKTsKKyAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9
IGRldmljZUQzRC0+aW5pdGlhbGl6ZShkZXZpY2VQb2ludGVyLCBkZXZpY2VUeXBlLCBFR0xfVFJV
RSk7CisgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
ICpvdXREZXZpY2UgPSBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICB9CisKKyAgICAgICAgKm91dERldmljZSA9IG5ldyBEZXZpY2UobnVsbHB0ciwgZGV2aWNlRDNE
KTsKKyAgICAgICAgR2V0RGV2aWNlU2V0KCktPmluc2VydCgqb3V0RGV2aWNlKTsKKyAgICAgICAg
cmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworICAgIH0KKyNlbmRpZgorCisgICAgLy8g
Tm90ZSB0aGF0IGNyZWF0aW5nIGFuIEVHTCBkZXZpY2UgZnJvbSBpbnB1dHRlZCBEM0Q5IHBhcmFt
ZXRlcnMgaXNuJ3QgY3VycmVudGx5IHN1cHBvcnRlZAorICAgICpvdXREZXZpY2UgPSBudWxscHRy
OworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQVRUUklCVVRFKTsKK30KKworZWdsOjpF
cnJvciBEZXZpY2U6OkNyZWF0ZURldmljZShEaXNwbGF5ICpvd25pbmdEaXNwbGF5LCByeDo6RGV2
aWNlSW1wbCAqaW1wbCwgRGV2aWNlICoqb3V0RGV2aWNlKQoreworICAgICpvdXREZXZpY2UgPSBu
ZXcgRGV2aWNlKG93bmluZ0Rpc3BsYXksIGltcGwpOworICAgIEdldERldmljZVNldCgpLT5pbnNl
cnQoKm91dERldmljZSk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
Citib29sIERldmljZTo6SXNWYWxpZERldmljZShEZXZpY2UgKmRldmljZSkKK3sKKyAgICBjb25z
dCBEZXZpY2VTZXQgKmRldmljZVNldCA9IEdldERldmljZVNldCgpOworICAgIHJldHVybiBkZXZp
Y2VTZXQtPmZpbmQoZGV2aWNlKSAhPSBkZXZpY2VTZXQtPmVuZCgpOworfQorCitEZXZpY2U6OkRl
dmljZShEaXNwbGF5ICpvd25pbmdEaXNwbGF5LCByeDo6RGV2aWNlSW1wbCAqaW1wbCkKKyAgICA6
IG1Pd25pbmdEaXNwbGF5KG93bmluZ0Rpc3BsYXkpLCBtSW1wbGVtZW50YXRpb24oaW1wbCkKK3sK
ICAgICBpbml0RGV2aWNlRXh0ZW5zaW9ucygpOwogfQogCiBEZXZpY2U6On5EZXZpY2UoKQogewor
ICAgIEFTU0VSVChHZXREZXZpY2VTZXQoKS0+ZmluZCh0aGlzKSAhPSBHZXREZXZpY2VTZXQoKS0+
ZW5kKCkpOworICAgIEdldERldmljZVNldCgpLT5lcmFzZSh0aGlzKTsKIAorICAgIGlmIChtSW1w
bGVtZW50YXRpb24tPmRldmljZUV4dGVybmFsbHlTb3VyY2VkKCkpCisgICAgeworICAgICAgICAv
LyBJZiB0aGUgZGV2aWNlIGlzbid0IGV4dGVybmFsbHkgc291cmNlZCB0aGVuIGl0IGlzIHVwIHRv
IHRoZSByZW5kZXJlciB0byBkZWxldGUgdGhlIGltcGwKKyAgICAgICAgU2FmZURlbGV0ZShtSW1w
bGVtZW50YXRpb24pOworICAgIH0KIH0KIAogRXJyb3IgRGV2aWNlOjpnZXREZXZpY2UoRUdMQXR0
cmliICp2YWx1ZSkKIHsKLSAgICByZXR1cm4gZ2V0SW1wbGVtZW50YXRpb24oKS0+Z2V0RGV2aWNl
KHZhbHVlKTsKKyAgICB2b2lkICpuYXRpdmVEZXZpY2UgPSBudWxscHRyOworICAgIGVnbDo6RXJy
b3IgZXJyb3IgPSBnZXRJbXBsZW1lbnRhdGlvbigpLT5nZXREZXZpY2UoJm5hdGl2ZURldmljZSk7
CisgICAgKnZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxFR0xBdHRyaWI+KG5hdGl2ZURldmljZSk7
CisgICAgcmV0dXJuIGVycm9yOwogfQogCiBFR0xpbnQgRGV2aWNlOjpnZXRUeXBlKCkKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZXZpY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGV2aWNlLmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZXZp
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsMTEgKzI0LDEwIEBACiBjbGFzcyBEZXZpY2UgZmlu
YWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIERldmljZShEaXNwbGF5
ICpkaXNwbGF5LCByeDo6RGV2aWNlSW1wbCAqaW1wbCk7CiAgICAgdmlydHVhbCB+RGV2aWNlKCk7
CiAKICAgICBFcnJvciBnZXREZXZpY2UoRUdMQXR0cmliICp2YWx1ZSk7Ci0gICAgRGlzcGxheSAq
Z2V0RGlzcGxheSgpIHsgcmV0dXJuIG1EaXNwbGF5OyB9OworICAgIERpc3BsYXkgKmdldE93bmlu
Z0Rpc3BsYXkoKSB7IHJldHVybiBtT3duaW5nRGlzcGxheTsgfTsKICAgICBFR0xpbnQgZ2V0VHlw
ZSgpOwogCiAgICAgY29uc3QgRGV2aWNlRXh0ZW5zaW9ucyAmZ2V0RXh0ZW5zaW9ucygpIGNvbnN0
OwpAQCAtMzYsMTAgKzM1LDE4IEBACiAKICAgICByeDo6RGV2aWNlSW1wbCAqZ2V0SW1wbGVtZW50
YXRpb24oKSB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KIAorICAgIHN0YXRpYyBlZ2w6OkVy
cm9yIENyZWF0ZURldmljZSh2b2lkICpkZXZpY2VQb2ludGVyLCBFR0xpbnQgZGV2aWNlVHlwZSwg
RGV2aWNlICoqb3V0RGV2aWNlKTsKKyAgICBzdGF0aWMgZWdsOjpFcnJvciBDcmVhdGVEZXZpY2Uo
RGlzcGxheSAqb3duaW5nRGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcng6OkRldmljZUltcGwgKmltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERldmljZSAqKm91dERldmljZSk7CisKKyAgICBzdGF0aWMgYm9vbCBJc1ZhbGlkRGV2aWNl
KERldmljZSAqZGV2aWNlKTsKKwogICBwcml2YXRlOgorICAgIERldmljZShEaXNwbGF5ICpvd25p
bmdEaXNwbGF5LCByeDo6RGV2aWNlSW1wbCAqaW1wbCk7CiAgICAgdm9pZCBpbml0RGV2aWNlRXh0
ZW5zaW9ucygpOwogCi0gICAgRGlzcGxheSAqbURpc3BsYXk7CisgICAgRGlzcGxheSAqbU93bmlu
Z0Rpc3BsYXk7CiAgICAgcng6OkRldmljZUltcGwgKm1JbXBsZW1lbnRhdGlvbjsKIAogICAgIERl
dmljZUV4dGVuc2lvbnMgbURldmljZUV4dGVuc2lvbnM7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiwxNSBAQAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5o
IgogI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9y
bS5oIgorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9D
b250ZXh0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGV2aWNlLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvaGlzdG9ncmFtX21hY3Jvcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0RldmljZS5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL1N0cmVhbS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L0Rpc3BsYXlJbXBsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsLmgi
CiAjaW5jbHVkZSAidGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIKIAogI2lm
IGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDkpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDEx
KQpAQCAtMzUsNiArNDAsMTAgQEAKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9PUEVOR0wpCiAj
ICAgaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQogIyAgICAgICBpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5oIgorIyAgIGVsaWYgZGVmaW5lZChB
TkdMRV9VU0VfWDExKQorIyAgICAgICBpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
RGlzcGxheUdMWC5oIgorIyAgIGVsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKKyMg
ICAgICAgaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKICMg
ICBlbHNlCiAjICAgICAgIGVycm9yIFVuc3VwcG9ydGVkIE9wZW5HTCBwbGF0Zm9ybS4KICMgICBl
bmRpZgpAQCAtNjgsMTkgKzc3LDYgQEAKICAgICB9CiB9CiAKLXZvaWQgRGVpbml0RGVmYXVsdFBs
YXRmb3JtSW1wbCgpCi17Ci0gICAgaWYgKGRlZmF1bHRQbGF0Zm9ybSAhPSBudWxscHRyKQotICAg
IHsKLSAgICAgICAgaWYgKEFOR0xFUGxhdGZvcm1DdXJyZW50KCkgPT0gZGVmYXVsdFBsYXRmb3Jt
KQotICAgICAgICB7Ci0gICAgICAgICAgICBBTkdMRVBsYXRmb3JtU2h1dGRvd24oKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIFNhZmVEZWxldGUoZGVmYXVsdFBsYXRmb3JtKTsKLSAgICB9Ci19Ci0K
IHR5cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlV2luZG93VHlwZSwgU3VyZmFjZSo+IFdpbmRvd1N1
cmZhY2VNYXA7CiAvLyBHZXQgYSBtYXAgb2YgYWxsIEVHTCB3aW5kb3cgc3VyZmFjZXMgdG8gdmFs
aWRhdGUgdGhhdCBubyB3aW5kb3cgaGFzIG1vcmUgdGhhbiBvbmUgRUdMIHN1cmZhY2UKIC8vIGFz
c29jaWF0ZWQgd2l0aCBpdC4KQEAgLTkwLDI3ICs4Niw3MiBAQAogICAgIHJldHVybiAmd2luZG93
U3VyZmFjZXM7CiB9CiAKLXR5cGVkZWYgc3RkOjptYXA8RUdMTmF0aXZlRGlzcGxheVR5cGUsIERp
c3BsYXkqPiBEaXNwbGF5TWFwOwotc3RhdGljIERpc3BsYXlNYXAgKkdldERpc3BsYXlNYXAoKQor
dHlwZWRlZiBzdGQ6Om1hcDxFR0xOYXRpdmVEaXNwbGF5VHlwZSwgRGlzcGxheSAqPiBBTkdMRVBs
YXRmb3JtRGlzcGxheU1hcDsKK3N0YXRpYyBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCAqR2V0QU5H
TEVQbGF0Zm9ybURpc3BsYXlNYXAoKQogewotICAgIHN0YXRpYyBEaXNwbGF5TWFwIGRpc3BsYXlz
OworICAgIHN0YXRpYyBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCBkaXNwbGF5czsKICAgICByZXR1
cm4gJmRpc3BsYXlzOwogfQogCi1yeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlJbXBsKGNv
bnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmliTWFwKQordHlwZWRlZiBzdGQ6Om1hcDxEZXZpY2UgKiwg
RGlzcGxheSAqPiBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXA7CitzdGF0aWMgRGV2aWNlUGxhdGZv
cm1EaXNwbGF5TWFwICpHZXREZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAoKQogeworICAgIHN0YXRp
YyBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgZGlzcGxheXM7CisgICAgcmV0dXJuICZkaXNwbGF5
czsKK30KKworcng6OkRpc3BsYXlJbXBsICpDcmVhdGVEaXNwbGF5RnJvbURldmljZShEZXZpY2Ug
KmVnbERldmljZSkKK3sKICAgICByeDo6RGlzcGxheUltcGwgKmltcGwgPSBudWxscHRyOwotICAg
IEVHTGludCBkaXNwbGF5VHlwZSA9IGF0dHJpYk1hcC5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfQU5HTEUsIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUpOworCisgICAg
c3dpdGNoIChlZ2xEZXZpY2UtPmdldFR5cGUoKSkKKyAgICB7CisjaWYgZGVmaW5lZChBTkdMRV9F
TkFCTEVfRDNEMTEpCisgICAgICAgIGNhc2UgRUdMX0QzRDExX0RFVklDRV9BTkdMRToKKyAgICAg
ICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlEM0QoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
I2VuZGlmCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkKKyAgICAgICAgY2FzZSBFR0xf
RDNEOV9ERVZJQ0VfQU5HTEU6CisgICAgICAgICAgICAvLyBDdXJyZW50bHkgdGhlIG9ubHkgd2F5
IHRvIGdldCBFR0xEZXZpY2VFWFQgcmVwcmVzZW50aW5nIGEgRDNEOSBkZXZpY2UKKyAgICAgICAg
ICAgIC8vIGlzIHRvIHJldHJpZXZlIG9uZSBmcm9tIGFuIGFscmVhZHktZXhpc3RpbmcgRUdMRGlz
cGxheS4KKyAgICAgICAgICAgIC8vIFdoZW4gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIGlzIGNh
bGxlZCB3aXRoIGEgRDNEOSBFR0xEZXZpY2VFWFQsCisgICAgICAgICAgICAvLyB0aGUgYWxyZWFk
eS1leGlzdGluZyBkaXNwbGF5IHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgICAgICAgIC8vIFRo
ZXJlZm9yZSB0aGlzIGNvZGVwYXRoIHRvIGNyZWF0ZSBhIG5ldyBkaXNwbGF5IGZyb20gdGhlIGRl
dmljZQorICAgICAgICAgICAgLy8gc2hvdWxkIG5ldmVyIGJlIGhpdC4KKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIEFTU0VSVChpbXBsICE9IG51bGxwdHIpOworICAgIHJldHVybiBpbXBsOworfQorCity
eDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhjb25zdCBBdHRyaWJ1dGVN
YXAgJmF0dHJpYk1hcCkKK3sKKyAgICByeDo6RGlzcGxheUltcGwgKmltcGwgPSBudWxscHRyOwor
ICAgIEVHTEF0dHJpYiBkaXNwbGF5VHlwZSA9CisgICAgICAgIGF0dHJpYk1hcC5nZXQoRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRf
QU5HTEUpOwogICAgIHN3aXRjaCAoZGlzcGxheVR5cGUpCiAgICAgewogICAgICAgY2FzZSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgorI2lmIGRlZmluZWQoQU5HTEVfRU5B
QkxFX09QRU5HTCkKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8fCBkZWZpbmVkKEFO
R0xFX0VOQUJMRV9EM0QxMSkKICAgICAgICAgLy8gRGVmYXVsdCB0byBEM0QgZGlzcGxheXMKICAg
ICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUQzRCgpOworI2VsaWYgZGVmaW5lZChBTkdMRV9V
U0VfWDExKQorICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKCk7CisjZWxpZiBkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQorICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5
Q0dMKCk7CiAjZWxzZQogICAgICAgICAvLyBObyBkaXNwbGF5IGF2YWlsYWJsZQogICAgICAgICBV
TlJFQUNIQUJMRSgpOwogI2VuZGlmCisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNh
c2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRToKQEAgLTEyNyw2ICsxNjgsMTAg
QEAKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9PUEVOR0wpCiAjaWYgZGVmaW5lZChBTkdMRV9Q
TEFURk9STV9XSU5ET1dTKQogICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dMKCk7Cisj
ZWxpZiBkZWZpbmVkKEFOR0xFX1VTRV9YMTEpCisgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3Bs
YXlHTFgoKTsKKyNlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCisgICAgICAgIGlt
cGwgPSBuZXcgcng6OkRpc3BsYXlDR0woKTsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgT3Bl
bkdMIHBsYXRmb3JtLgogI2VuZGlmCkBAIC0xMzUsMjYgKzE4MCw0MCBAQAogI2VuZGlmCiAgICAg
ICAgIGJyZWFrOwogCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQorICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKKyNpZiBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX1dJTkRPV1MpCisgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheVdH
TCgpOworI2VsaWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQorICAgICAgICAgIGltcGwgPSBuZXcg
cng6OkRpc3BsYXlHTFgoKTsKKyNlbHNlCisgICAgICAgICAgLy8gTm8gR0xFUyBzdXBwb3J0IG9u
IHRoaXMgcGxhdGZvcm0sIGZhaWwgZGlzcGxheSBjcmVhdGlvbi4KKyAgICAgICAgICBpbXBsID0g
bnVsbHB0cjsKKyNlbmRpZgorICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IEFTU0VSVChpbXBsICE9IG51bGxwdHIpOwogICAgIHJldHVybiBpbXBsOwogfQogCiB9CiAKLURp
c3BsYXkgKkRpc3BsYXk6OmdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlk
LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCkKK0Rpc3BsYXkgKkRpc3BsYXk6OkdldERp
c3BsYXlGcm9tQXR0cmlicyh2b2lkICpuYXRpdmVfZGlzcGxheSwgY29uc3QgQXR0cmlidXRlTWFw
ICZhdHRyaWJNYXApCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHBsYXRmb3JtIGlm
IG5vdCBhbHJlYWR5CiAgICAgSW5pdERlZmF1bHRQbGF0Zm9ybUltcGwoKTsKIAotICAgIERpc3Bs
YXkgKmRpc3BsYXkgPSBOVUxMOworICAgIERpc3BsYXkgKmRpc3BsYXkgPSBudWxscHRyOwogCi0g
ICAgRGlzcGxheU1hcCAqZGlzcGxheXMgPSBHZXREaXNwbGF5TWFwKCk7Ci0gICAgRGlzcGxheU1h
cDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGRpc3BsYXlzLT5maW5kKGRpc3BsYXlJZCk7CisgICAg
RUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkID0gcmVpbnRlcnByZXRfY2FzdDxFR0xOYXRp
dmVEaXNwbGF5VHlwZT4obmF0aXZlX2Rpc3BsYXkpOworCisgICAgQU5HTEVQbGF0Zm9ybURpc3Bs
YXlNYXAgKmRpc3BsYXlzICAgICAgICAgICAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgp
OworICAgIEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZGlz
cGxheXMtPmZpbmQoZGlzcGxheUlkKTsKICAgICBpZiAoaXRlciAhPSBkaXNwbGF5cy0+ZW5kKCkp
CiAgICAgewogICAgICAgICBkaXNwbGF5ID0gaXRlci0+c2Vjb25kOwpAQCAtMTY4LDMyICsyMjcs
OTAgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKLSAgICAgICAgZGlz
cGxheSA9IG5ldyBEaXNwbGF5KGRpc3BsYXlJZCk7CisgICAgICAgIGRpc3BsYXkgPSBuZXcgRGlz
cGxheShFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsIGRpc3BsYXlJZCwgbnVsbHB0cik7CiAgICAg
ICAgIGRpc3BsYXlzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZGlzcGxheUlkLCBkaXNwbGF5KSk7
CiAgICAgfQogCiAgICAgLy8gQXBwbHkgbmV3IGF0dHJpYnV0ZXMgaWYgdGhlIGRpc3BsYXkgaXMg
bm90IGluaXRpYWxpemVkIHlldC4KICAgICBpZiAoIWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSkK
ICAgICB7Ci0gICAgICAgIHJ4OjpEaXNwbGF5SW1wbCogaW1wbCA9IENyZWF0ZURpc3BsYXlJbXBs
KGF0dHJpYk1hcCk7CisgICAgICAgIHJ4OjpEaXNwbGF5SW1wbCAqaW1wbCA9IENyZWF0ZURpc3Bs
YXlGcm9tQXR0cmlicyhhdHRyaWJNYXApOworICAgICAgICBpZiAoaW1wbCA9PSBudWxscHRyKQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBObyB2YWxpZCBkaXNwbGF5IGltcGxlbWVudGF0aW9u
IGZvciB0aGVzZSBhdHRyaWJ1dGVzCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgfQorCiAgICAgICAgIGRpc3BsYXktPnNldEF0dHJpYnV0ZXMoaW1wbCwgYXR0cmliTWFwKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZGlzcGxheTsKIH0KIAotRGlzcGxheTo6RGlzcGxheShFR0xO
YXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5SWQpCitEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5
RnJvbURldmljZSh2b2lkICpuYXRpdmVfZGlzcGxheSkKK3sKKyAgICAvLyBJbml0aWFsaXplIHRo
ZSBnbG9iYWwgcGxhdGZvcm0gaWYgbm90IGFscmVhZHkKKyAgICBJbml0RGVmYXVsdFBsYXRmb3Jt
SW1wbCgpOworCisgICAgRGlzcGxheSAqZGlzcGxheSA9IG51bGxwdHI7CisKKyAgICBEZXZpY2Ug
KmVnbERldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGV2aWNlICo+KG5hdGl2ZV9kaXNwbGF5KTsK
KyAgICBBU1NFUlQoRGV2aWNlOjpJc1ZhbGlkRGV2aWNlKGVnbERldmljZSkpOworCisgICAgQU5H
TEVQbGF0Zm9ybURpc3BsYXlNYXAgKmFuZ2xlUGxhdGZvcm1EaXNwbGF5cyAgID0gR2V0QU5HTEVQ
bGF0Zm9ybURpc3BsYXlNYXAoKTsKKyAgICBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgKmRldmlj
ZVBsYXRmb3JtRGlzcGxheXMgPSBHZXREZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAoKTsKKworICAg
IC8vIEZpcnN0IHNlZSBpZiB0aGlzIGVnbERldmljZSBpcyBpbiB1c2UgYnkgYSBEaXNwbGF5IGNy
ZWF0ZWQgdXNpbmcgQU5HTEUgcGxhdGZvcm0KKyAgICBmb3IgKGF1dG8gJmRpc3BsYXlNYXBFbnRy
eSA6ICphbmdsZVBsYXRmb3JtRGlzcGxheXMpCisgICAgeworICAgICAgICBlZ2w6OkRpc3BsYXkg
Kml0ZXJEaXNwbGF5ID0gZGlzcGxheU1hcEVudHJ5LnNlY29uZDsKKyAgICAgICAgaWYgKGl0ZXJE
aXNwbGF5LT5nZXREZXZpY2UoKSA9PSBlZ2xEZXZpY2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRpc3BsYXkgPSBpdGVyRGlzcGxheTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkaXNw
bGF5ID09IG51bGxwdHIpCisgICAgeworICAgICAgICAvLyBTZWUgaWYgdGhlIGVnbERldmljZSBp
cyBpbiB1c2UgYnkgYSBEaXNwbGF5IGNyZWF0ZWQgdXNpbmcgdGhlIERFVklDRSBwbGF0Zm9ybQor
ICAgICAgICBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBk
ZXZpY2VQbGF0Zm9ybURpc3BsYXlzLT5maW5kKGVnbERldmljZSk7CisgICAgICAgIGlmIChpdGVy
ICE9IGRldmljZVBsYXRmb3JtRGlzcGxheXMtPmVuZCgpKQorICAgICAgICB7CisgICAgICAgICAg
ICBkaXNwbGF5ID0gaXRlci0+c2Vjb25kOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRp
c3BsYXkgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIC8vIE90aGVyd2lzZSBjcmVhdGUgYSBu
ZXcgRGlzcGxheQorICAgICAgICBkaXNwbGF5ID0gbmV3IERpc3BsYXkoRUdMX1BMQVRGT1JNX0RF
VklDRV9FWFQsIDAsIGVnbERldmljZSk7CisgICAgICAgIGRldmljZVBsYXRmb3JtRGlzcGxheXMt
Pmluc2VydChzdGQ6Om1ha2VfcGFpcihlZ2xEZXZpY2UsIGRpc3BsYXkpKTsKKyAgICB9CisKKyAg
ICAvLyBBcHBseSBuZXcgYXR0cmlidXRlcyBpZiB0aGUgZGlzcGxheSBpcyBub3QgaW5pdGlhbGl6
ZWQgeWV0LgorICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKQorICAgIHsKKyAgICAg
ICAgcng6OkRpc3BsYXlJbXBsICppbXBsID0gQ3JlYXRlRGlzcGxheUZyb21EZXZpY2UoZWdsRGV2
aWNlKTsKKyAgICAgICAgZGlzcGxheS0+c2V0QXR0cmlidXRlcyhpbXBsLCBlZ2w6OkF0dHJpYnV0
ZU1hcCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZGlzcGxheTsKK30KKworRGlzcGxheTo6RGlz
cGxheShFR0xlbnVtIHBsYXRmb3JtLCBFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5SWQsIERl
dmljZSAqZWdsRGV2aWNlKQogICAgIDogbUltcGxlbWVudGF0aW9uKG51bGxwdHIpLAogICAgICAg
bURpc3BsYXlJZChkaXNwbGF5SWQpLAogICAgICAgbUF0dHJpYnV0ZU1hcCgpLAogICAgICAgbUNv
bmZpZ1NldCgpLAogICAgICAgbUNvbnRleHRTZXQoKSwKKyAgICAgIG1TdHJlYW1TZXQoKSwKICAg
ICAgIG1Jbml0aWFsaXplZChmYWxzZSksCiAgICAgICBtQ2FwcygpLAogICAgICAgbURpc3BsYXlF
eHRlbnNpb25zKCksCiAgICAgICBtRGlzcGxheUV4dGVuc2lvblN0cmluZygpLAogICAgICAgbVZl
bmRvclN0cmluZygpLAotICAgICAgbURldmljZShudWxscHRyKQorICAgICAgbURldmljZShlZ2xE
ZXZpY2UpLAorICAgICAgbVBsYXRmb3JtKHBsYXRmb3JtKQogewogfQogCkBAIC0yMDEsMTIgKzMx
OCwyOCBAQAogewogICAgIHRlcm1pbmF0ZSgpOwogCi0gICAgRGlzcGxheU1hcCAqZGlzcGxheXMg
PSBHZXREaXNwbGF5TWFwKCk7Ci0gICAgRGlzcGxheU1hcDo6aXRlcmF0b3IgaXRlciA9IGRpc3Bs
YXlzLT5maW5kKG1EaXNwbGF5SWQpOwotICAgIGlmIChpdGVyICE9IGRpc3BsYXlzLT5lbmQoKSkK
KyAgICBpZiAobVBsYXRmb3JtID09IEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSkKICAgICB7Ci0g
ICAgICAgIGRpc3BsYXlzLT5lcmFzZShpdGVyKTsKKyAgICAgICAgQU5HTEVQbGF0Zm9ybURpc3Bs
YXlNYXAgKmRpc3BsYXlzICAgICAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpOworICAg
ICAgICBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDo6aXRlcmF0b3IgaXRlciA9IGRpc3BsYXlzLT5m
aW5kKG1EaXNwbGF5SWQpOworICAgICAgICBpZiAoaXRlciAhPSBkaXNwbGF5cy0+ZW5kKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRpc3BsYXlzLT5lcmFzZShpdGVyKTsKKyAgICAgICAgfQog
ICAgIH0KKyAgICBlbHNlIGlmIChtUGxhdGZvcm0gPT0gRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQp
CisgICAgeworICAgICAgICBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgKmRpc3BsYXlzICAgICAg
PSBHZXREZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAoKTsKKyAgICAgICAgRGV2aWNlUGxhdGZvcm1E
aXNwbGF5TWFwOjppdGVyYXRvciBpdGVyID0gZGlzcGxheXMtPmZpbmQobURldmljZSk7CisgICAg
ICAgIGlmIChpdGVyICE9IGRpc3BsYXlzLT5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGlzcGxheXMtPmVyYXNlKGl0ZXIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQogCiAgICAgU2FmZURlbGV0ZShtRGV2aWNl
KTsKICAgICBTYWZlRGVsZXRlKG1JbXBsZW1lbnRhdGlvbik7CkBAIC0yMjUsMTggKzM1OCwyNyBA
QAogCiBFcnJvciBEaXNwbGF5Ojppbml0aWFsaXplKCkKIHsKKyAgICAvLyBSZS1pbml0aWFsaXpl
IGRlZmF1bHQgcGxhdGZvcm0gaWYgaXQncyBuZWVkZWQKKyAgICBJbml0RGVmYXVsdFBsYXRmb3Jt
SW1wbCgpOworCisgICAgU0NPUEVEX0FOR0xFX0hJU1RPR1JBTV9USU1FUigiR1BVLkFOR0xFLkRp
c3BsYXlJbml0aWFsaXplTVMiKTsKICAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJlZ2w6
OkRpc3BsYXk6OmluaXRpYWxpemUiKTsKIAogICAgIEFTU0VSVChtSW1wbGVtZW50YXRpb24gIT0g
bnVsbHB0cik7CiAKICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NV
Q0NFU1MpOwogICAgIH0KIAogICAgIEVycm9yIGVycm9yID0gbUltcGxlbWVudGF0aW9uLT5pbml0
aWFsaXplKHRoaXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgeworICAgICAgICAv
LyBMb2cgZXh0ZW5kZWQgZXJyb3IgbWVzc2FnZSBoZXJlCisgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIGVycm9yU3RyZWFtOworICAgICAgICBlcnJvclN0cmVhbSA8PCAiQU5HTEUgRGlzcGxheTo6
aW5pdGlhbGl6ZSBlcnJvciAiIDw8IGVycm9yLmdldElEKCkgPDwgIjogIgorICAgICAgICAgICAg
ICAgICAgICA8PCBlcnJvci5nZXRNZXNzYWdlKCk7CisgICAgICAgIEFOR0xFUGxhdGZvcm1DdXJy
ZW50KCktPmxvZ0Vycm9yKGVycm9yU3RyZWFtLnN0cigpLmNfc3RyKCkpOwogICAgICAgICByZXR1
cm4gZXJyb3I7CiAgICAgfQogCkBAIC0yNTIsMjMgKzM5NCwzOSBAQAogICAgIGluaXREaXNwbGF5
RXh0ZW5zaW9ucygpOwogICAgIGluaXRWZW5kb3JTdHJpbmcoKTsKIAotICAgIGlmIChtRGlzcGxh
eUV4dGVuc2lvbnMuZGV2aWNlUXVlcnkpCisgICAgLy8gUG9wdWxhdGUgdGhlIERpc3BsYXkncyBF
R0xEZXZpY2VFWFQgaWYgdGhlIERpc3BsYXkgd2Fzbid0IGNyZWF0ZWQgdXNpbmcgb25lCisgICAg
aWYgKG1QbGF0Zm9ybSAhPSBFR0xfUExBVEZPUk1fREVWSUNFX0VYVCkKICAgICB7Ci0gICAgICAg
IHJ4OjpEZXZpY2VJbXBsICppbXBsID0gbnVsbHB0cjsKLSAgICAgICAgZXJyb3IgPSBtSW1wbGVt
ZW50YXRpb24tPmdldERldmljZSgmaW1wbCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgICAgIGlmIChtRGlzcGxheUV4dGVuc2lvbnMuZGV2aWNlUXVlcnkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIHJ4OjpEZXZpY2VJbXBsICpp
bXBsID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGVycm9yID0gbUltcGxlbWVudGF0aW9uLT5nZXRE
ZXZpY2UoJmltcGwpOworICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGVycm9yID0gRGV2aWNlOjpDcmVhdGVEZXZpY2UodGhpcywgaW1wbCwgJm1EZXZp
Y2UpOworICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgbURldmljZSA9IG5ldyBEZXZpY2UodGhpcywgaW1wbCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgbURldmljZSA9IG51bGxwdHI7CisgICAgICAgIH0KICAgICB9
CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbURldmljZSA9IG51bGxwdHI7CisgICAgICAgIC8v
IEZvciBFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwgbURldmljZSBzaG91bGQgYWx3YXlzIGJlIHBv
cHVsYXRlZCB1c2luZworICAgICAgICAvLyBhbiBleHRlcm5hbCBkZXZpY2UKKyAgICAgICAgQVNT
RVJUKG1EZXZpY2UgIT0gbnVsbHB0cik7CiAgICAgfQogCiAgICAgbUluaXRpYWxpemVkID0gdHJ1
ZTsKLSAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworCisgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOwogfQogCiB2b2lkIERpc3BsYXk6OnRlcm1pbmF0ZSgpCkBAIC0yODAs
MTQgKzQzOCwzNSBAQAogICAgICAgICBkZXN0cm95Q29udGV4dCgqbUNvbnRleHRTZXQuYmVnaW4o
KSk7CiAgICAgfQogCisgICAgd2hpbGUgKCFtSW1hZ2VTZXQuZW1wdHkoKSkKKyAgICB7CisgICAg
ICAgIGRlc3Ryb3lJbWFnZSgqbUltYWdlU2V0LmJlZ2luKCkpOworICAgIH0KKworICAgIHdoaWxl
ICghbVN0cmVhbVNldC5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZGVzdHJveVN0cmVhbSgqbVN0
cmVhbVNldC5iZWdpbigpKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIW1JbXBsZW1lbnRhdGlvbi0+
Z2V0U3VyZmFjZVNldCgpLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZXN0cm95U3VyZmFjZSgq
bUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuYmVnaW4oKSk7CisgICAgfQorCiAgICAg
bUNvbmZpZ1NldC5jbGVhcigpOwogCisgICAgaWYgKG1EZXZpY2UgIT0gbnVsbHB0ciAmJiBtRGV2
aWNlLT5nZXRPd25pbmdEaXNwbGF5KCkgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIC8vIERv
bid0IGRlbGV0ZSB0aGUgZGV2aWNlIGlmIGl0IHdhcyBjcmVhdGVkIGV4dGVybmFsbHkgdXNpbmcg
ZWdsQ3JlYXRlRGV2aWNlQU5HTEUKKyAgICAgICAgLy8gV2UgYWxzbyBzaG91bGRuJ3Qgc2V0IGl0
IHRvIG51bGwgaW4gY2FzZSBlZ2xJbml0aWFsaXplKCkgaXMgY2FsbGVkIGFnYWluIGxhdGVyCisg
ICAgICAgIFNhZmVEZWxldGUobURldmljZSk7CisgICAgfQorCiAgICAgbUltcGxlbWVudGF0aW9u
LT50ZXJtaW5hdGUoKTsKIAogICAgIG1Jbml0aWFsaXplZCA9IGZhbHNlOwogCi0gICAgLy8gRGUt
aW5pdCBkZWZhdWx0IHBsYXRmb3JtCi0gICAgRGVpbml0RGVmYXVsdFBsYXRmb3JtSW1wbCgpOwor
ICAgIC8vIE5ldmVyIGRlLWluaXQgZGVmYXVsdCBwbGF0Zm9ybS4uIHRlcm1pbmF0ZSBpcyBub3Qg
dGhhdCBmaW5hbC4KIH0KIAogc3RkOjp2ZWN0b3I8Y29uc3QgQ29uZmlnKj4gRGlzcGxheTo6Z2V0
Q29uZmlncyhjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3QKQEAgLTMxMCw2
ICs0ODksNyBAQAogICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOiAgICAgICAgICAgICAgICAgKnZh
bHVlID0gY29uZmlndXJhdGlvbi0+Y29uZmlnSUQ7ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVHTF9MRVZFTDogICAgICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0
aW9uLT5sZXZlbDsgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRUdMX05BVElW
RV9SRU5ERVJBQkxFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm5hdGl2ZVJlbmRl
cmFibGU7ICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFR0xfTkFUSVZFX1ZJU1VBTF9JRDogICAg
ICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bmF0aXZlVmlzdWFsSUQ7ICAgICAgICAgYnJl
YWs7CiAgICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6ICAgICAgICAqdmFsdWUgPSBj
b25maWd1cmF0aW9uLT5uYXRpdmVWaXN1YWxUeXBlOyAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
RUdMX1NBTVBMRVM6ICAgICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPnNh
bXBsZXM7ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFR0xfU0FNUExFX0JVRkZF
UlM6ICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+c2FtcGxlQnVmZmVyczsgICAg
ICAgICAgYnJlYWs7CkBAIC0zMzEsNiArNTExLDE1IEBACiAgICAgICBjYXNlIEVHTF9NQVhfUEJV
RkZFUl9XSURUSDogICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tYXhQQnVmZmVyV2lk
dGg7ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdIVDogICAg
ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1heFBCdWZmZXJIZWlnaHQ7ICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfUElYRUxTOiAgICAgICAgKnZhbHVlID0gY29u
ZmlndXJhdGlvbi0+bWF4UEJ1ZmZlclBpeGVsczsgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2Ug
RUdMX09QVElNQUxfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRToKKyAgICAgICAgICBpZiAoIWdl
dEV4dGVuc2lvbnMoKS5zdXJmYWNlT3JpZW50YXRpb24pCisgICAgICAgICAgeworICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm9wdGltYWxPcmllbnRhdGlvbjsKKyAgICAgICAgICBicmVhazsKKwogICAgICAg
ZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM1MCwxNCArNTM5LDE2
IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByeDo6U3VyZmFjZUltcGwgKnN1cmZhY2VJbXBs
ID0gbnVsbHB0cjsKLSAgICBFcnJvciBlcnJvciA9IG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlV2lu
ZG93U3VyZmFjZShjb25maWd1cmF0aW9uLCB3aW5kb3csIGF0dHJpYnMsICZzdXJmYWNlSW1wbCk7
CisgICAgcng6OlN1cmZhY2VJbXBsICpzdXJmYWNlSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3Jl
YXRlV2luZG93U3VyZmFjZShjb25maWd1cmF0aW9uLCB3aW5kb3csIGF0dHJpYnMpOworICAgIEFT
U0VSVChzdXJmYWNlSW1wbCAhPSBudWxscHRyKTsKKworICAgIEVycm9yIGVycm9yID0gc3VyZmFj
ZUltcGwtPmluaXRpYWxpemUoKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKKyAg
ICAgICAgU2FmZURlbGV0ZShzdXJmYWNlSW1wbCk7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICB9CiAKLSAgICBBU1NFUlQoc3VyZmFjZUltcGwgIT0gbnVsbHB0cik7CiAgICAgU3VyZmFjZSAq
c3VyZmFjZSA9IG5ldyBTdXJmYWNlKHN1cmZhY2VJbXBsLCBFR0xfV0lORE9XX0JJVCwgY29uZmln
dXJhdGlvbiwgYXR0cmlicyk7CiAgICAgbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCku
aW5zZXJ0KHN1cmZhY2UpOwogCkBAIC0zNjcsNyArNTU4LDcgQEAKIAogICAgIEFTU0VSVChvdXRT
dXJmYWNlICE9IG51bGxwdHIpOwogICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZTsKLSAgICByZXR1
cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNT
KTsKIH0KIAogRXJyb3IgRGlzcGxheTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgQ29uZmln
ICpjb25maWd1cmF0aW9uLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsIFN1cmZhY2UgKipv
dXRTdXJmYWNlKQpAQCAtMzgzLDIwICs1NzQsMjIgQEAKICAgICAgICAgfQogICAgIH0KIAotICAg
IHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFjZUltcGwgPSBudWxscHRyOwotICAgIEVycm9yIGVycm9y
ID0gbUltcGxlbWVudGF0aW9uLT5jcmVhdGVQYnVmZmVyU3VyZmFjZShjb25maWd1cmF0aW9uLCBh
dHRyaWJzLCAmc3VyZmFjZUltcGwpOworICAgIHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFjZUltcGwg
PSBtSW1wbGVtZW50YXRpb24tPmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbmZpZ3VyYXRpb24sIGF0
dHJpYnMpOworICAgIEFTU0VSVChzdXJmYWNlSW1wbCAhPSBudWxscHRyKTsKKworICAgIEVycm9y
IGVycm9yID0gc3VyZmFjZUltcGwtPmluaXRpYWxpemUoKTsKICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgIHsKKyAgICAgICAgU2FmZURlbGV0ZShzdXJmYWNlSW1wbCk7CiAgICAgICAgIHJl
dHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBBU1NFUlQoc3VyZmFjZUltcGwgIT0gbnVsbHB0cik7
CiAgICAgU3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBTdXJmYWNlKHN1cmZhY2VJbXBsLCBFR0xfUEJV
RkZFUl9CSVQsIGNvbmZpZ3VyYXRpb24sIGF0dHJpYnMpOwogICAgIG1JbXBsZW1lbnRhdGlvbi0+
Z2V0U3VyZmFjZVNldCgpLmluc2VydChzdXJmYWNlKTsKIAogICAgIEFTU0VSVChvdXRTdXJmYWNl
ICE9IG51bGxwdHIpOwogICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZTsKLSAgICByZXR1cm4gRXJy
b3IoRUdMX1NVQ0NFU1MpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0K
IAogRXJyb3IgRGlzcGxheTo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgQ29u
ZmlnICpjb25maWd1cmF0aW9uLCBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCkBAIC00MTMs
MjAgKzYwNiwyMiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcng6OlN1cmZhY2VJbXBsICpz
dXJmYWNlSW1wbCA9IG51bGxwdHI7Ci0gICAgRXJyb3IgZXJyb3IgPSBtSW1wbGVtZW50YXRpb24t
PmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxl
LCBhdHRyaWJzLCAmc3VyZmFjZUltcGwpOworICAgIHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFjZUlt
cGwgPSBtSW1wbGVtZW50YXRpb24tPmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbmZp
Z3VyYXRpb24sIHNoYXJlSGFuZGxlLCBhdHRyaWJzKTsKKyAgICBBU1NFUlQoc3VyZmFjZUltcGwg
IT0gbnVsbHB0cik7CisKKyAgICBFcnJvciBlcnJvciA9IHN1cmZhY2VJbXBsLT5pbml0aWFsaXpl
KCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CisgICAgICAgIFNhZmVEZWxldGUo
c3VyZmFjZUltcGwpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgQVNTRVJU
KHN1cmZhY2VJbXBsICE9IG51bGxwdHIpOwogICAgIFN1cmZhY2UgKnN1cmZhY2UgPSBuZXcgU3Vy
ZmFjZShzdXJmYWNlSW1wbCwgRUdMX1BCVUZGRVJfQklULCBjb25maWd1cmF0aW9uLCBhdHRyaWJz
KTsKICAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5pbnNlcnQoc3VyZmFjZSk7
CiAKICAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBudWxscHRyKTsKICAgICAqb3V0U3VyZmFjZSA9
IHN1cmZhY2U7Ci0gICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKKyAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKIEVycm9yIERpc3BsYXk6OmNyZWF0ZVBpeG1hcFN1
cmZhY2UoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2
ZVBpeG1hcCwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzLApAQCAtNDQzLDI0ICs2MzgsMjkg
QEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFjZUltcGwg
PSBudWxscHRyOwotICAgIEVycm9yIGVycm9yID0gbUltcGxlbWVudGF0aW9uLT5jcmVhdGVQaXht
YXBTdXJmYWNlKGNvbmZpZ3VyYXRpb24sIG5hdGl2ZVBpeG1hcCwgYXR0cmlicywgJnN1cmZhY2VJ
bXBsKTsKKyAgICByeDo6U3VyZmFjZUltcGwgKnN1cmZhY2VJbXBsID0gbUltcGxlbWVudGF0aW9u
LT5jcmVhdGVQaXhtYXBTdXJmYWNlKGNvbmZpZ3VyYXRpb24sIG5hdGl2ZVBpeG1hcCwgYXR0cmli
cyk7CisgICAgQVNTRVJUKHN1cmZhY2VJbXBsICE9IG51bGxwdHIpOworCisgICAgRXJyb3IgZXJy
b3IgPSBzdXJmYWNlSW1wbC0+aW5pdGlhbGl6ZSgpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CiAgICAgeworICAgICAgICBTYWZlRGVsZXRlKHN1cmZhY2VJbXBsKTsKICAgICAgICAgcmV0dXJu
IGVycm9yOwogICAgIH0KIAotICAgIEFTU0VSVChzdXJmYWNlSW1wbCAhPSBudWxscHRyKTsKICAg
ICBTdXJmYWNlICpzdXJmYWNlID0gbmV3IFN1cmZhY2Uoc3VyZmFjZUltcGwsIEVHTF9QSVhNQVBf
QklULCBjb25maWd1cmF0aW9uLCBhdHRyaWJzKTsKICAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1
cmZhY2VTZXQoKS5pbnNlcnQoc3VyZmFjZSk7CiAKICAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBu
dWxscHRyKTsKICAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgcmV0dXJuIEVycm9yKEVH
TF9TVUNDRVNTKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLUVy
cm9yIERpc3BsYXk6OmNyZWF0ZUNvbnRleHQoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBn
bDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICoqb3V0Q29udGV4dCkKK0Vy
cm9yIERpc3BsYXk6OmNyZWF0ZUltYWdlKGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW1hZ2UgKipvdXRJbWFnZSkKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKIApAQCAt
NDczLDE5ICs2NzMsODMgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gbnVsbHB0cjsKLSAgICBFcnJvciBlcnJvciA9IG1JbXBsZW1lbnRhdGlvbi0+Y3Jl
YXRlQ29udGV4dChjb25maWd1cmF0aW9uLCBzaGFyZUNvbnRleHQsIGF0dHJpYnMsICZjb250ZXh0
KTsKKyAgICBlZ2w6OkltYWdlU2libGluZyAqc2libGluZyA9IG51bGxwdHI7CisgICAgaWYgKElz
VGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgIHsKKyAgICAgICAgc2libGluZyA9IGNvbnRleHQt
PmdldFRleHR1cmUoZWdsX2dsOjpFR0xDbGllbnRCdWZmZXJUb0dMT2JqZWN0SGFuZGxlKGJ1ZmZl
cikpOworICAgIH0KKyAgICBlbHNlIGlmIChJc1JlbmRlcmJ1ZmZlclRhcmdldCh0YXJnZXQpKQor
ICAgIHsKKyAgICAgICAgc2libGluZyA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlcihlZ2xfZ2w6
OkVHTENsaWVudEJ1ZmZlclRvR0xPYmplY3RIYW5kbGUoYnVmZmVyKSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorICAgIEFTU0VSVChzaWJs
aW5nICE9IG51bGxwdHIpOworCisgICAgcng6OkltYWdlSW1wbCAqaW1hZ2VJbXBsID0gbUltcGxl
bWVudGF0aW9uLT5jcmVhdGVJbWFnZSh0YXJnZXQsIHNpYmxpbmcsIGF0dHJpYnMpOworICAgIEFT
U0VSVChpbWFnZUltcGwgIT0gbnVsbHB0cik7CisKKyAgICBFcnJvciBlcnJvciA9IGltYWdlSW1w
bC0+aW5pdGlhbGl6ZSgpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAg
ICByZXR1cm4gZXJyb3I7CiAgICAgfQogCisgICAgSW1hZ2UgKmltYWdlID0gbmV3IEltYWdlKGlt
YWdlSW1wbCwgdGFyZ2V0LCBzaWJsaW5nLCBhdHRyaWJzKTsKKworICAgIEFTU0VSVChvdXRJbWFn
ZSAhPSBudWxscHRyKTsKKyAgICAqb3V0SW1hZ2UgPSBpbWFnZTsKKworICAgIC8vIEFkZCB0aGlz
IGltYWdlIHRvIHRoZSBsaXN0IG9mIGFsbCBpbWFnZXMgYW5kIGhvbGQgYSByZWYgdG8gaXQuCisg
ICAgaW1hZ2UtPmFkZFJlZigpOworICAgIG1JbWFnZVNldC5pbnNlcnQoaW1hZ2UpOworCisgICAg
cmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitFcnJvciBEaXNwbGF5OjpjcmVh
dGVTdHJlYW0oY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzLCBTdHJlYW0gKipvdXRTdHJlYW0p
Cit7CisgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQoKSk7CisKKyAgICByeDo6U3RyZWFtSW1wbCAq
c3RyZWFtSW1wbCA9IG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlU3RyZWFtKGF0dHJpYnMpOworICAg
IEFTU0VSVChzdHJlYW1JbXBsICE9IG51bGxwdHIpOworCisgICAgU3RyZWFtICpzdHJlYW0gPSBu
ZXcgU3RyZWFtKHN0cmVhbUltcGwsIGF0dHJpYnMpOworCisgICAgQVNTRVJUKHN0cmVhbSAhPSBu
dWxscHRyKTsKKyAgICBtU3RyZWFtU2V0Lmluc2VydChzdHJlYW0pOworCisgICAgQVNTRVJUKG91
dFN0cmVhbSAhPSBudWxscHRyKTsKKyAgICAqb3V0U3RyZWFtID0gc3RyZWFtOworCisgICAgcmV0
dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworRXJyb3IgRGlzcGxheTo6Y3JlYXRlQ29udGV4
dChjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQs
IGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OkNvbnRleHQgKipvdXRDb250ZXh0KQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVk
KCkpOworCisgICAgaWYgKG1JbXBsZW1lbnRhdGlvbi0+dGVzdERldmljZUxvc3QoKSkKKyAgICB7
CisgICAgICAgIEVycm9yIGVycm9yID0gcmVzdG9yZUxvc3REZXZpY2UoKTsKKyAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgICAgICB9CisgICAgfQorCisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSAqb3V0Q29udGV4
dCA9CisgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlQ29udGV4dChjb25maWd1cmF0aW9u
LCBzaGFyZUNvbnRleHQsIGF0dHJpYnMpOworCiAgICAgQVNTRVJUKGNvbnRleHQgIT0gbnVsbHB0
cik7CiAgICAgbUNvbnRleHRTZXQuaW5zZXJ0KGNvbnRleHQpOwogCiAgICAgQVNTRVJUKG91dENv
bnRleHQgIT0gbnVsbHB0cik7CiAgICAgKm91dENvbnRleHQgPSBjb250ZXh0OwotICAgIHJldHVy
biBFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1Mp
OwogfQogCiBFcnJvciBEaXNwbGF5OjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJm
YWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkKQEAg
LTUzOCwxMSArODAyLDI2IEBACiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoc3VyZmFjZVJl
bW92ZWQpOworICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1cmZhY2VSZW1vdmVk
KTsKICAgICB9CiAKICAgICBtSW1wbGVtZW50YXRpb24tPmRlc3Ryb3lTdXJmYWNlKHN1cmZhY2Up
OwogfQogCit2b2lkIERpc3BsYXk6OmRlc3Ryb3lJbWFnZShlZ2w6OkltYWdlICppbWFnZSkKK3sK
KyAgICBhdXRvIGl0ZXIgPSBtSW1hZ2VTZXQuZmluZChpbWFnZSk7CisgICAgQVNTRVJUKGl0ZXIg
IT0gbUltYWdlU2V0LmVuZCgpKTsKKyAgICAoKml0ZXIpLT5yZWxlYXNlKCk7CisgICAgbUltYWdl
U2V0LmVyYXNlKGl0ZXIpOworfQorCit2b2lkIERpc3BsYXk6OmRlc3Ryb3lTdHJlYW0oZWdsOjpT
dHJlYW0gKnN0cmVhbSkKK3sKKyAgICBtU3RyZWFtU2V0LmVyYXNlKHN0cmVhbSk7CisgICAgU2Fm
ZURlbGV0ZShzdHJlYW0pOworfQorCiB2b2lkIERpc3BsYXk6OmRlc3Ryb3lDb250ZXh0KGdsOjpD
b250ZXh0ICpjb250ZXh0KQogewogICAgIG1Db250ZXh0U2V0LmVyYXNlKGNvbnRleHQpOwpAQCAt
NTY5LDYgKzg0OCwxNiBAQAogICAgIH0KIH0KIAorRXJyb3IgRGlzcGxheTo6d2FpdENsaWVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+d2FpdENsaWVudCgpOworfQor
CitFcnJvciBEaXNwbGF5Ojp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsIGVnbDo6U3VyZmFjZSAq
ZHJhd1N1cmZhY2UsIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1JbXBsZW1lbnRhdGlvbi0+d2FpdE5hdGl2ZShlbmdpbmUsIGRyYXdTdXJmYWNlLCByZWFk
U3VyZmFjZSk7Cit9CisKIGNvbnN0IENhcHMgJkRpc3BsYXk6OmdldENhcHMoKSBjb25zdAogewog
ICAgIHJldHVybiBtQ2FwczsKQEAgLTU5NCw2ICs4ODMsMTYgQEAKICAgICByZXR1cm4gbUltcGxl
bWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuZmluZChzdXJmYWNlKSAhPSBtSW1wbGVtZW50YXRp
b24tPmdldFN1cmZhY2VTZXQoKS5lbmQoKTsKIH0KIAorYm9vbCBEaXNwbGF5Ojppc1ZhbGlkSW1h
Z2UoY29uc3QgSW1hZ2UgKmltYWdlKSBjb25zdAoreworICAgIHJldHVybiBtSW1hZ2VTZXQuZmlu
ZChjb25zdF9jYXN0PEltYWdlICo+KGltYWdlKSkgIT0gbUltYWdlU2V0LmVuZCgpOworfQorCiti
b29sIERpc3BsYXk6OmlzVmFsaWRTdHJlYW0oY29uc3QgU3RyZWFtICpzdHJlYW0pIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1TdHJlYW1TZXQuZmluZChjb25zdF9jYXN0PFN0cmVhbSAqPihzdHJlYW0p
KSAhPSBtU3RyZWFtU2V0LmVuZCgpOworfQorCiBib29sIERpc3BsYXk6Omhhc0V4aXN0aW5nV2lu
ZG93U3VyZmFjZShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykKIHsKICAgICBXaW5kb3dTdXJm
YWNlTWFwICp3aW5kb3dTdXJmYWNlcyA9IEdldFdpbmRvd1N1cmZhY2VzKCk7CkBAIC02MTIsMTIg
KzkxMSwyNSBAQAogCiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkgfHwgZGVmaW5lZChB
TkdMRV9FTkFCTEVfRDNEMTEpCiAgICAgZXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFRDNEID0gdHJ1
ZTsKKyAgICBleHRlbnNpb25zLnBsYXRmb3JtRGV2aWNlICAgPSB0cnVlOwogI2VuZGlmCiAKICNp
ZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9PUEVOR0wpCiAgICAgZXh0ZW5zaW9ucy5wbGF0Zm9ybUFO
R0xFT3BlbkdMID0gdHJ1ZTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNE
MTEpCisgICAgZXh0ZW5zaW9ucy5kZXZpY2VDcmVhdGlvbiAgICAgID0gdHJ1ZTsKKyAgICBleHRl
bnNpb25zLmRldmljZUNyZWF0aW9uRDNEMTEgPSB0cnVlOworICAgIGV4dGVuc2lvbnMuZXhwZXJp
bWVudGFsUHJlc2VudFBhdGggPSB0cnVlOworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEFOR0xFX1VT
RV9YMTEpCisgICAgZXh0ZW5zaW9ucy54MTFWaXN1YWwgPSB0cnVlOworI2VuZGlmCisKKyAgICBl
eHRlbnNpb25zLmNsaWVudEdldEFsbFByb2NBZGRyZXNzZXMgPSB0cnVlOworCiAgICAgcmV0dXJu
IGV4dGVuc2lvbnM7CiB9CiAKQEAgLTY0Niw2ICs5NTgsMTAgQEAKIHZvaWQgRGlzcGxheTo6aW5p
dERpc3BsYXlFeHRlbnNpb25zKCkKIHsKICAgICBtRGlzcGxheUV4dGVuc2lvbnMgPSBtSW1wbGVt
ZW50YXRpb24tPmdldEV4dGVuc2lvbnMoKTsKKworICAgIC8vIEZvcmNlIEVHTF9LSFJfZ2V0X2Fs
bF9wcm9jX2FkZHJlc3NlcyBvbi4KKyAgICBtRGlzcGxheUV4dGVuc2lvbnMuZ2V0QWxsUHJvY0Fk
ZHJlc3NlcyA9IHRydWU7CisKICAgICBtRGlzcGxheUV4dGVuc2lvblN0cmluZyA9IEdlbmVyYXRl
RXh0ZW5zaW9uc1N0cmluZyhtRGlzcGxheUV4dGVuc2lvbnMpOwogfQogCkBAIC02NTQsNiArOTcw
LDI5IEBACiAgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+aXNWYWxpZE5hdGl2ZVdpbmRvdyh3
aW5kb3cpOwogfQogCitib29sIERpc3BsYXk6OmlzVmFsaWREaXNwbGF5KGNvbnN0IGVnbDo6RGlz
cGxheSAqZGlzcGxheSkKK3sKKyAgICBjb25zdCBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCAqYW5n
bGVQbGF0Zm9ybURpc3BsYXlNYXAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpOworICAg
IGZvciAoY29uc3QgYXV0byAmZGlzcGxheVBhaXIgOiAqYW5nbGVQbGF0Zm9ybURpc3BsYXlNYXAp
CisgICAgeworICAgICAgICBpZiAoZGlzcGxheVBhaXIuc2Vjb25kID09IGRpc3BsYXkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAg
Y29uc3QgRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwICpkZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAg
PSBHZXREZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmRp
c3BsYXlQYWlyIDogKmRldmljZVBsYXRmb3JtRGlzcGxheU1hcCkKKyAgICB7CisgICAgICAgIGlm
IChkaXNwbGF5UGFpci5zZWNvbmQgPT0gZGlzcGxheSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IGJvb2wgRGlzcGxheTo6aXNWYWxpZE5hdGl2ZURpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUg
ZGlzcGxheSkKIHsKICAgICAvLyBUT0RPKGptYWRpbGwpOiBoYW5kbGUgdGhpcyBwcm9wZXJseQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5o
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvRGlzcGxheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxMCBAQAogCiBuYW1lc3Bh
Y2UgZWdsCiB7CitjbGFzcyBEZXZpY2U7CitjbGFzcyBJbWFnZTsKIGNsYXNzIFN1cmZhY2U7Ci1j
bGFzcyBEZXZpY2U7CitjbGFzcyBTdHJlYW07CiAKIGNsYXNzIERpc3BsYXkgZmluYWwgOiBhbmds
ZTo6Tm9uQ29weWFibGUKIHsKQEAgLTQzLDcgKzQ1LDggQEAKICAgICBFcnJvciBpbml0aWFsaXpl
KCk7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAotICAgIHN0YXRpYyBlZ2w6OkRpc3BsYXkgKmdl
dERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkLCBjb25zdCBBdHRyaWJ1dGVN
YXAgJmF0dHJpYk1hcCk7CisgICAgc3RhdGljIGVnbDo6RGlzcGxheSAqR2V0RGlzcGxheUZyb21E
ZXZpY2Uodm9pZCAqbmF0aXZlX2Rpc3BsYXkpOworICAgIHN0YXRpYyBlZ2w6OkRpc3BsYXkgKkdl
dERpc3BsYXlGcm9tQXR0cmlicyh2b2lkICpuYXRpdmVfZGlzcGxheSwgY29uc3QgQXR0cmlidXRl
TWFwICZhdHRyaWJNYXApOwogCiAgICAgc3RhdGljIGNvbnN0IENsaWVudEV4dGVuc2lvbnMgJmdl
dENsaWVudEV4dGVuc2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgJmdldENs
aWVudEV4dGVuc2lvblN0cmluZygpOwpAQCAtNTksMjAgKzYyLDMzIEBACiAgICAgRXJyb3IgY3Jl
YXRlUGl4bWFwU3VyZmFjZShjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIE5hdGl2ZVBpeG1h
cFR5cGUgbmF0aXZlUGl4bWFwLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlICoqb3V0U3VyZmFjZSk7CiAKKyAgICBFcnJv
ciBjcmVhdGVJbWFnZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICBFR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIg
YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmli
cywKKyAgICAgICAgICAgICAgICAgICAgICBJbWFnZSAqKm91dEltYWdlKTsKKworICAgIEVycm9y
IGNyZWF0ZVN0cmVhbShjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsIFN0cmVhbSAqKm91dFN0
cmVhbSk7CisKICAgICBFcnJvciBjcmVhdGVDb250ZXh0KGNvbnN0IENvbmZpZyAqY29uZmlndXJh
dGlvbiwgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRy
aWJzLAogICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKipvdXRDb250ZXh0KTsK
IAogICAgIEVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsIGVnbDo6
U3VyZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIAogICAgIHZvaWQg
ZGVzdHJveVN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKyAgICB2b2lkIGRlc3Ryb3lJ
bWFnZShlZ2w6OkltYWdlICppbWFnZSk7CisgICAgdm9pZCBkZXN0cm95U3RyZWFtKGVnbDo6U3Ry
ZWFtICpzdHJlYW0pOwogICAgIHZvaWQgZGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRl
eHQpOwogCiAgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlk
Q29uZmlnKGNvbnN0IENvbmZpZyAqY29uZmlnKSBjb25zdDsKICAgICBib29sIGlzVmFsaWRDb250
ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKICAgICBib29sIGlzVmFsaWRTdXJmYWNl
KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkSW1hZ2UoY29u
c3QgSW1hZ2UgKmltYWdlKSBjb25zdDsKKyAgICBib29sIGlzVmFsaWRTdHJlYW0oY29uc3QgU3Ry
ZWFtICpzdHJlYW0pIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Q7CiAKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRGlz
cGxheShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpOwogICAgIHN0YXRpYyBib29sIGlzVmFs
aWROYXRpdmVEaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXkpOwogICAgIHN0YXRp
YyBib29sIGhhc0V4aXN0aW5nV2luZG93U3VyZmFjZShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dyk7CiAKQEAgLTgwLDYgKzk2LDkgQEAKICAgICBib29sIHRlc3REZXZpY2VMb3N0KCk7CiAgICAg
dm9pZCBub3RpZnlEZXZpY2VMb3N0KCk7CiAKKyAgICBFcnJvciB3YWl0Q2xpZW50KCkgY29uc3Q7
CisgICAgRXJyb3Igd2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLCBlZ2w6OlN1cmZhY2UgKmRyYXdT
dXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKSBjb25zdDsKKwogICAgIGNvbnN0IENh
cHMgJmdldENhcHMoKSBjb25zdDsKIAogICAgIGNvbnN0IERpc3BsYXlFeHRlbnNpb25zICZnZXRF
eHRlbnNpb25zKCkgY29uc3Q7CkBAIC05MSw5ICsxMTAsMTAgQEAKIAogICAgIHJ4OjpEaXNwbGF5
SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KICAg
ICBEZXZpY2UgKmdldERldmljZSgpIGNvbnN0OworICAgIEVHTGVudW0gZ2V0UGxhdGZvcm0oKSBj
b25zdCB7IHJldHVybiBtUGxhdGZvcm07IH0KIAogICBwcml2YXRlOgotICAgIERpc3BsYXkoRUdM
TmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkKTsKKyAgICBEaXNwbGF5KEVHTGVudW0gcGxhdGZv
cm0sIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCwgRGV2aWNlICplZ2xEZXZpY2UpOwog
CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGVzKHJ4OjpEaXNwbGF5SW1wbCAqaW1wbCwgY29uc3QgQXR0
cmlidXRlTWFwICZhdHRyaWJNYXApOwogCkBAIC0xMTIsNiArMTMyLDEyIEBACiAgICAgdHlwZWRl
ZiBzdGQ6OnNldDxnbDo6Q29udGV4dCo+IENvbnRleHRTZXQ7CiAgICAgQ29udGV4dFNldCBtQ29u
dGV4dFNldDsKIAorICAgIHR5cGVkZWYgc3RkOjpzZXQ8SW1hZ2UgKj4gSW1hZ2VTZXQ7CisgICAg
SW1hZ2VTZXQgbUltYWdlU2V0OworCisgICAgdHlwZWRlZiBzdGQ6OnNldDxTdHJlYW0gKj4gU3Ry
ZWFtU2V0OworICAgIFN0cmVhbVNldCBtU3RyZWFtU2V0OworCiAgICAgYm9vbCBtSW5pdGlhbGl6
ZWQ7CiAKICAgICBDYXBzIG1DYXBzOwpAQCAtMTIxLDcgKzE0Nyw4IEBACiAKICAgICBzdGQ6OnN0
cmluZyBtVmVuZG9yU3RyaW5nOwogCi0gICAgRGV2aWNlKiBtRGV2aWNlOworICAgIERldmljZSAq
bURldmljZTsKKyAgICBFR0xlbnVtIG1QbGF0Zm9ybTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yLmNwcAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYsOSArMTYsNyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLUVycm9y
OjpFcnJvcihHTGVudW0gZXJyb3JDb2RlLCBjb25zdCBjaGFyICptc2csIC4uLikKLSAgICA6IG1D
b2RlKGVycm9yQ29kZSksCi0gICAgICBtTWVzc2FnZShudWxscHRyKQorRXJyb3I6OkVycm9yKEdM
ZW51bSBlcnJvckNvZGUsIGNvbnN0IGNoYXIgKm1zZywgLi4uKSA6IG1Db2RlKGVycm9yQ29kZSks
IG1JRChlcnJvckNvZGUpCiB7CiAgICAgdmFfbGlzdCB2YXJhcmc7CiAgICAgdmFfc3RhcnQodmFy
YXJnLCBtc2cpOwpAQCAtMjcsMTEgKzI1LDIwIEBACiAgICAgdmFfZW5kKHZhcmFyZyk7CiB9CiAK
K0Vycm9yOjpFcnJvcihHTGVudW0gZXJyb3JDb2RlLCBHTHVpbnQgaWQsIGNvbnN0IGNoYXIgKm1z
ZywgLi4uKSA6IG1Db2RlKGVycm9yQ29kZSksIG1JRChpZCkKK3sKKyAgICB2YV9saXN0IHZhcmFy
ZzsKKyAgICB2YV9zdGFydCh2YXJhcmcsIG1zZyk7CisgICAgY3JlYXRlTWVzc2FnZVN0cmluZygp
OworICAgICptTWVzc2FnZSA9IEZvcm1hdFN0cmluZyhtc2csIHZhcmFyZyk7CisgICAgdmFfZW5k
KHZhcmFyZyk7Cit9CisKIHZvaWQgRXJyb3I6OmNyZWF0ZU1lc3NhZ2VTdHJpbmcoKSBjb25zdAog
ewotICAgIGlmIChtTWVzc2FnZSA9PSBudWxscHRyKQorICAgIGlmICghbU1lc3NhZ2UpCiAgICAg
ewotICAgICAgICBtTWVzc2FnZSA9IG5ldyBzdGQ6OnN0cmluZygpOworICAgICAgICBtTWVzc2Fn
ZS5yZXNldChuZXcgc3RkOjpzdHJpbmcpOwogICAgIH0KIH0KIApAQCAtNDEsMTUgKzQ4LDI4IEBA
CiAgICAgcmV0dXJuICptTWVzc2FnZTsKIH0KIAorYm9vbCBFcnJvcjo6b3BlcmF0b3I9PShjb25z
dCBFcnJvciAmb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG1Db2RlICE9IG90aGVyLm1Db2RlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBDb21wYXJlIGV4
dGVuZGVkIGVycm9yIGNvZGVzIGluc3RlYWQgb2Ygc3RyaW5ncy4KKyAgICBpZiAoKCFtTWVzc2Fn
ZSB8fCAhb3RoZXIubU1lc3NhZ2UpICYmICghbU1lc3NhZ2UgIT0gIW90aGVyLm1NZXNzYWdlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuICgqbU1lc3NhZ2UgPT0gKm90aGVy
Lm1NZXNzYWdlKTsKIH0KIAorYm9vbCBFcnJvcjo6b3BlcmF0b3IhPShjb25zdCBFcnJvciAmb3Ro
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworfQorfQorCiBuYW1l
c3BhY2UgZWdsCiB7CiAKLUVycm9yOjpFcnJvcihFR0xpbnQgZXJyb3JDb2RlLCBjb25zdCBjaGFy
ICptc2csIC4uLikKLSAgICA6IG1Db2RlKGVycm9yQ29kZSksCi0gICAgICBtSUQoMCksCi0gICAg
ICBtTWVzc2FnZShudWxscHRyKQorRXJyb3I6OkVycm9yKEVHTGludCBlcnJvckNvZGUsIGNvbnN0
IGNoYXIgKm1zZywgLi4uKSA6IG1Db2RlKGVycm9yQ29kZSksIG1JRCgwKQogewogICAgIHZhX2xp
c3QgdmFyYXJnOwogICAgIHZhX3N0YXJ0KHZhcmFyZywgbXNnKTsKQEAgLTU4LDEwICs3OCw3IEBA
CiAgICAgdmFfZW5kKHZhcmFyZyk7CiB9CiAKLUVycm9yOjpFcnJvcihFR0xpbnQgZXJyb3JDb2Rl
LCBFR0xpbnQgaWQsIGNvbnN0IGNoYXIgKm1zZywgLi4uKQotICAgIDogbUNvZGUoZXJyb3JDb2Rl
KSwKLSAgICAgIG1JRChpZCksCi0gICAgICBtTWVzc2FnZShudWxscHRyKQorRXJyb3I6OkVycm9y
KEVHTGludCBlcnJvckNvZGUsIEVHTGludCBpZCwgY29uc3QgY2hhciAqbXNnLCAuLi4pIDogbUNv
ZGUoZXJyb3JDb2RlKSwgbUlEKGlkKQogewogICAgIHZhX2xpc3QgdmFyYXJnOwogICAgIHZhX3N0
YXJ0KHZhcmFyZywgbXNnKTsKQEAgLTY5LDExICs4NiwxMiBAQAogICAgICptTWVzc2FnZSA9IEZv
cm1hdFN0cmluZyhtc2csIHZhcmFyZyk7CiAgICAgdmFfZW5kKHZhcmFyZyk7CiB9CisKIHZvaWQg
RXJyb3I6OmNyZWF0ZU1lc3NhZ2VTdHJpbmcoKSBjb25zdAogewotICAgIGlmIChtTWVzc2FnZSA9
PSBudWxscHRyKQorICAgIGlmICghbU1lc3NhZ2UpCiAgICAgewotICAgICAgICBtTWVzc2FnZSA9
IG5ldyBzdGQ6OnN0cmluZygpOworICAgICAgICBtTWVzc2FnZS5yZXNldChuZXcgc3RkOjpzdHJp
bmcpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0Vycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0Vycm9yLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3IEBA
CiAjaW5jbHVkZSA8RUdML2VnbC5oPgogCiAjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPG1l
bW9yeT4KIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0yMiwyOCArMjMsNjQgQEAKICAgcHVibGljOgog
ICAgIGV4cGxpY2l0IGlubGluZSBFcnJvcihHTGVudW0gZXJyb3JDb2RlKTsKICAgICBFcnJvcihH
TGVudW0gZXJyb3JDb2RlLCBjb25zdCBjaGFyICptc2csIC4uLik7CisgICAgRXJyb3IoR0xlbnVt
IGVycm9yQ29kZSwgR0x1aW50IGlkLCBjb25zdCBjaGFyICptc2csIC4uLik7CiAgICAgaW5saW5l
IEVycm9yKGNvbnN0IEVycm9yICZvdGhlcik7CiAgICAgaW5saW5lIEVycm9yKEVycm9yICYmb3Ro
ZXIpOwogCi0gICAgaW5saW5lIH5FcnJvcigpOwotCiAgICAgaW5saW5lIEVycm9yICZvcGVyYXRv
cj0oY29uc3QgRXJyb3IgJm90aGVyKTsKICAgICBpbmxpbmUgRXJyb3IgJm9wZXJhdG9yPShFcnJv
ciAmJm90aGVyKTsKIAogICAgIGlubGluZSBHTGVudW0gZ2V0Q29kZSgpIGNvbnN0OworICAgIGlu
bGluZSBHTHVpbnQgZ2V0SUQoKSBjb25zdDsKICAgICBpbmxpbmUgYm9vbCBpc0Vycm9yKCkgY29u
c3Q7CiAKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TWVzc2FnZSgpIGNvbnN0OwogCisgICAg
Ly8gVXNlZnVsIGZvciBtb2NraW5nIGFuZCB0ZXN0aW5nCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEVycm9yICZvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVycm9y
ICZvdGhlcikgY29uc3Q7CisKICAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZU1lc3NhZ2VTdHJp
bmcoKSBjb25zdDsKIAogICAgIEdMZW51bSBtQ29kZTsKLSAgICBtdXRhYmxlIHN0ZDo6c3RyaW5n
ICptTWVzc2FnZTsKKyAgICBHTHVpbnQgbUlEOworICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRy
PHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKIH07CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xh
c3MgRXJyb3JPclJlc3VsdAoreworICBwdWJsaWM6CisgICAgRXJyb3JPclJlc3VsdChjb25zdCBn
bDo6RXJyb3IgJmVycm9yKSA6IG1FcnJvcihlcnJvcikge30KKyAgICBFcnJvck9yUmVzdWx0KGds
OjpFcnJvciAmJmVycm9yKSA6IG1FcnJvcihzdGQ6Om1vdmUoZXJyb3IpKSB7fQorCisgICAgRXJy
b3JPclJlc3VsdChUICYmcmVzdWx0KQorICAgICAgICA6IG1FcnJvcihHTF9OT19FUlJPUiksIG1S
ZXN1bHQoc3RkOjpmb3J3YXJkPFQ+KHJlc3VsdCkpCisgICAgeworICAgIH0KKworICAgIEVycm9y
T3JSZXN1bHQoY29uc3QgVCAmcmVzdWx0KQorICAgICAgICA6IG1FcnJvcihHTF9OT19FUlJPUiks
IG1SZXN1bHQocmVzdWx0KQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRXJyb3IoKSBjb25z
dCB7IHJldHVybiBtRXJyb3IuaXNFcnJvcigpOyB9CisgICAgY29uc3QgZ2w6OkVycm9yICZnZXRF
cnJvcigpIGNvbnN0IHsgcmV0dXJuIG1FcnJvcjsgfQorICAgIFQgJiZnZXRSZXN1bHQoKSB7IHJl
dHVybiBzdGQ6Om1vdmUobVJlc3VsdCk7IH0KKworICBwcml2YXRlOgorICAgIEVycm9yIG1FcnJv
cjsKKyAgICBUIG1SZXN1bHQ7Cit9OworCitpbmxpbmUgRXJyb3IgTm9FcnJvcigpCit7CisgICAg
cmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAorfSAgLy8gbmFtZXNwYWNlIGdsCisKIG5h
bWVzcGFjZSBlZ2wKIHsKIApAQCAtNTYsOCArOTMsNiBAQAogICAgIGlubGluZSBFcnJvcihjb25z
dCBFcnJvciAmb3RoZXIpOwogICAgIGlubGluZSBFcnJvcihFcnJvciAmJm90aGVyKTsKIAotICAg
IGlubGluZSB+RXJyb3IoKTsKLQogICAgIGlubGluZSBFcnJvciAmb3BlcmF0b3I9KGNvbnN0IEVy
cm9yICZvdGhlcik7CiAgICAgaW5saW5lIEVycm9yICZvcGVyYXRvcj0oRXJyb3IgJiZvdGhlcik7
CiAKQEAgLTcyLDExICsxMDcsNDAgQEAKIAogICAgIEVHTGludCBtQ29kZTsKICAgICBFR0xpbnQg
bUlEOwotICAgIG11dGFibGUgc3RkOjpzdHJpbmcgKm1NZXNzYWdlOworICAgIG11dGFibGUgc3Rk
Ojp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKIH07CiAKLX0KK30gIC8vIG5hbWVz
cGFjZSBlZ2wKIAorI2RlZmluZSBBTkdMRV9DT05DQVQxKHgsIHkpIHgjI3kKKyNkZWZpbmUgQU5H
TEVfQ09OQ0FUMih4LCB5KSBBTkdMRV9DT05DQVQxKHgsIHkpCisjZGVmaW5lIEFOR0xFX0xPQ0FM
X1ZBUiBBTkdMRV9DT05DQVQyKF9sb2NhbFZhciwgX19MSU5FX18pCisKKyNkZWZpbmUgQU5HTEVf
VFJZKEVYUFIpICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgYXV0byBBTkdMRV9MT0NBTF9WQVIgPSBFWFBSOyAgIFwKKyAg
ICAgICAgaWYgKEFOR0xFX0xPQ0FMX1ZBUi5pc0Vycm9yKCkpIFwKKyAgICAgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBBTkdMRV9MT0NBTF9W
QVI7ICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBTkdMRV9FTVBUWV9TVEFU
RU1FTlQKKworI2RlZmluZSBBTkdMRV9UUllfUkVTVUxUKEVYUFIsIFJFU1VMVCkgICAgICAgICBc
CisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgYXV0byBBTkdMRV9MT0NBTF9WQVIgPSBFWFBSOyAgICAgICAgICAgXAorICAgICAgICBpZiAo
QU5HTEVfTE9DQUxfVkFSLmlzRXJyb3IoKSkgICAgICAgICBcCisgICAgICAgIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBBTkdMRV9M
T0NBTF9WQVIuZ2V0RXJyb3IoKTsgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIFJFU1VMVCA9IEFOR0xFX0xPQ0FMX1ZBUi5nZXRSZXN1
bHQoKTsgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIEFOR0xFX0VNUFRZX1NUQVRFTUVOVAorCisjdW5kZWYgQU5HTEVfTE9DQUxfVkFSCisj
dW5kZWYgQU5HTEVfQ09OQ0FUMgorI3VuZGVmIEFOR0xFX0NPTkNBVDEKKwogI2luY2x1ZGUgIkVy
cm9yLmlubCIKIAogI2VuZGlmIC8vIExJQkFOR0xFX0VSUk9SX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3IuaW5sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvci5pbmwJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvci5pbmwJKHdv
cmtpbmcgY29weSkKQEAgLTE1LDE1ICsxNSwxNSBAQAogCiBFcnJvcjo6RXJyb3IoR0xlbnVtIGVy
cm9yQ29kZSkKICAgICA6IG1Db2RlKGVycm9yQ29kZSksCi0gICAgICBtTWVzc2FnZShudWxscHRy
KQorICAgICAgbUlEKGVycm9yQ29kZSkKIHsKIH0KIAogRXJyb3I6OkVycm9yKGNvbnN0IEVycm9y
ICZvdGhlcikKICAgICA6IG1Db2RlKG90aGVyLm1Db2RlKSwKLSAgICAgIG1NZXNzYWdlKG51bGxw
dHIpCisgICAgICBtSUQob3RoZXIubUlEKQogewotICAgIGlmIChvdGhlci5tTWVzc2FnZSAhPSBu
dWxscHRyKQorICAgIGlmIChvdGhlci5tTWVzc2FnZSkKICAgICB7CiAgICAgICAgIGNyZWF0ZU1l
c3NhZ2VTdHJpbmcoKTsKICAgICAgICAgKm1NZXNzYWdlID0gKihvdGhlci5tTWVzc2FnZSk7CkBA
IC0zMiwyOCArMzIsMjQgQEAKIAogRXJyb3I6OkVycm9yKEVycm9yICYmb3RoZXIpCiAgICAgOiBt
Q29kZShvdGhlci5tQ29kZSksCi0gICAgICBtTWVzc2FnZShvdGhlci5tTWVzc2FnZSkKKyAgICAg
IG1JRChvdGhlci5tSUQpLAorICAgICAgbU1lc3NhZ2Uoc3RkOjptb3ZlKG90aGVyLm1NZXNzYWdl
KSkKIHsKLSAgICBvdGhlci5tTWVzc2FnZSA9IG51bGxwdHI7CiB9CiAKLUVycm9yOjp+RXJyb3Io
KQotewotICAgIFNhZmVEZWxldGUobU1lc3NhZ2UpOwotfQotCiBFcnJvciAmRXJyb3I6Om9wZXJh
dG9yPShjb25zdCBFcnJvciAmb3RoZXIpCiB7CiAgICAgbUNvZGUgPSBvdGhlci5tQ29kZTsKKyAg
ICBtSUQgPSBvdGhlci5tSUQ7CiAKLSAgICBpZiAob3RoZXIubU1lc3NhZ2UgIT0gbnVsbHB0cikK
KyAgICBpZiAob3RoZXIubU1lc3NhZ2UpCiAgICAgewogICAgICAgICBjcmVhdGVNZXNzYWdlU3Ry
aW5nKCk7CiAgICAgICAgICptTWVzc2FnZSA9ICoob3RoZXIubU1lc3NhZ2UpOwogICAgIH0KICAg
ICBlbHNlCiAgICAgewotICAgICAgICBTYWZlRGVsZXRlKG1NZXNzYWdlKTsKKyAgICAgICAgbU1l
c3NhZ2UucmVsZWFzZSgpOwogICAgIH0KIAogICAgIHJldHVybiAqdGhpczsKQEAgLTYxLDExICs1
NywxMyBAQAogCiBFcnJvciAmRXJyb3I6Om9wZXJhdG9yPShFcnJvciAmJm90aGVyKQogewotICAg
IG1Db2RlID0gb3RoZXIubUNvZGU7Ci0gICAgbU1lc3NhZ2UgPSBvdGhlci5tTWVzc2FnZTsKKyAg
ICBpZiAodGhpcyAhPSAmb3RoZXIpCisgICAgeworICAgICAgICBtQ29kZSA9IG90aGVyLm1Db2Rl
OworICAgICAgICBtSUQgPSBvdGhlci5tSUQ7CisgICAgICAgIG1NZXNzYWdlID0gc3RkOjptb3Zl
KG90aGVyLm1NZXNzYWdlKTsKKyAgICB9CiAKLSAgICBvdGhlci5tTWVzc2FnZSA9IG51bGxwdHI7
Ci0KICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTc0LDYgKzcyLDExIEBACiAgICAgcmV0dXJu
IG1Db2RlOwogfQogCitHTHVpbnQgRXJyb3I6OmdldElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bUlEOworfQorCiBib29sIEVycm9yOjppc0Vycm9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gKG1D
b2RlICE9IEdMX05PX0VSUk9SKTsKQEAgLTg2LDE3ICs4OSwxNSBAQAogCiBFcnJvcjo6RXJyb3Io
RUdMaW50IGVycm9yQ29kZSkKICAgICA6IG1Db2RlKGVycm9yQ29kZSksCi0gICAgICBtSUQoMCks
Ci0gICAgICBtTWVzc2FnZShudWxscHRyKQorICAgICAgbUlEKDApCiB7CiB9CiAKIEVycm9yOjpF
cnJvcihjb25zdCBFcnJvciAmb3RoZXIpCiAgICAgOiBtQ29kZShvdGhlci5tQ29kZSksCi0gICAg
ICBtSUQob3RoZXIubUlEKSwKLSAgICAgIG1NZXNzYWdlKG51bGxwdHIpCisgICAgICBtSUQob3Ro
ZXIubUlEKQogewotICAgIGlmIChvdGhlci5tTWVzc2FnZSAhPSBudWxscHRyKQorICAgIGlmIChv
dGhlci5tTWVzc2FnZSkKICAgICB7CiAgICAgICAgIGNyZWF0ZU1lc3NhZ2VTdHJpbmcoKTsKICAg
ICAgICAgKm1NZXNzYWdlID0gKihvdGhlci5tTWVzc2FnZSk7CkBAIC0xMDYsMjkgKzEwNywyMyBA
QAogRXJyb3I6OkVycm9yKEVycm9yICYmb3RoZXIpCiAgICAgOiBtQ29kZShvdGhlci5tQ29kZSks
CiAgICAgICBtSUQob3RoZXIubUlEKSwKLSAgICAgIG1NZXNzYWdlKG90aGVyLm1NZXNzYWdlKQor
ICAgICAgbU1lc3NhZ2Uoc3RkOjptb3ZlKG90aGVyLm1NZXNzYWdlKSkKIHsKLSAgICBvdGhlci5t
TWVzc2FnZSA9IG51bGxwdHI7CiB9CiAKLUVycm9yOjp+RXJyb3IoKQotewotICAgIFNhZmVEZWxl
dGUobU1lc3NhZ2UpOwotfQotCiBFcnJvciAmRXJyb3I6Om9wZXJhdG9yPShjb25zdCBFcnJvciAm
b3RoZXIpCiB7CiAgICAgbUNvZGUgPSBvdGhlci5tQ29kZTsKICAgICBtSUQgPSBvdGhlci5tSUQ7
CiAKLSAgICBpZiAob3RoZXIubU1lc3NhZ2UgIT0gbnVsbHB0cikKKyAgICBpZiAob3RoZXIubU1l
c3NhZ2UpCiAgICAgewogICAgICAgICBjcmVhdGVNZXNzYWdlU3RyaW5nKCk7CiAgICAgICAgICpt
TWVzc2FnZSA9ICoob3RoZXIubU1lc3NhZ2UpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBTYWZlRGVsZXRlKG1NZXNzYWdlKTsKKyAgICAgICAgbU1lc3NhZ2UucmVsZWFzZSgpOwog
ICAgIH0KIAogICAgIHJldHVybiAqdGhpczsKQEAgLTEzNiwxMiArMTMxLDEzIEBACiAKIEVycm9y
ICZFcnJvcjo6b3BlcmF0b3I9KEVycm9yICYmb3RoZXIpCiB7Ci0gICAgbUNvZGUgPSBvdGhlci5t
Q29kZTsKLSAgICBtSUQgPSBvdGhlci5tSUQ7Ci0gICAgbU1lc3NhZ2UgPSBvdGhlci5tTWVzc2Fn
ZTsKKyAgICBpZiAodGhpcyAhPSAmb3RoZXIpCisgICAgeworICAgICAgICBtQ29kZSA9IG90aGVy
Lm1Db2RlOworICAgICAgICBtSUQgPSBvdGhlci5tSUQ7CisgICAgICAgIG1NZXNzYWdlID0gc3Rk
Ojptb3ZlKG90aGVyLm1NZXNzYWdlKTsKKyAgICB9CiAKLSAgICBvdGhlci5tTWVzc2FnZSA9IG51
bGxwdHI7Ci0KICAgICByZXR1cm4gKnRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzYsMTAgKzc2LDcgQEAKIH0KIAogRmVuY2VTeW5jOjpGZW5jZVN5bmMocng6OkZl
bmNlU3luY0ltcGwgKmltcGwsIEdMdWludCBpZCkKLSAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwK
LSAgICAgIG1GZW5jZShpbXBsKSwKLSAgICAgIG1Db25kaXRpb24oR0xfTk9ORSksCi0gICAgICBt
RmxhZ3MoMCkKKyAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwgbUZlbmNlKGltcGwpLCBtTGFiZWwo
KSwgbUNvbmRpdGlvbihHTF9OT05FKSwgbUZsYWdzKDApCiB7CiB9CiAKQEAgLTg4LDYgKzg1LDE2
IEBACiAgICAgU2FmZURlbGV0ZShtRmVuY2UpOwogfQogCit2b2lkIEZlbmNlU3luYzo6c2V0TGFi
ZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKQoreworICAgIG1MYWJlbCA9IGxhYmVsOworfQor
Citjb25zdCBzdGQ6OnN0cmluZyAmRmVuY2VTeW5jOjpnZXRMYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1MYWJlbDsKK30KKwogRXJyb3IgRmVuY2VTeW5jOjpzZXQoR0xlbnVtIGNvbmRpdGlv
biwgR0xiaXRmaWVsZCBmbGFncykKIHsKICAgICBFcnJvciBlcnJvciA9IG1GZW5jZS0+c2V0KGNv
bmRpdGlvbiwgZmxhZ3MpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0ZlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0ZlbmNlLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9GZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsxMCw3IEBA
CiAjaWZuZGVmIExJQkFOR0xFX0ZFTkNFX0hfCiAjZGVmaW5lIExJQkFOR0xFX0ZFTkNFX0hfCiAK
KyNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKIApAQCAtNDcsMTIgKzQ4LDE1
IEBACiAgICAgR0xlbnVtIG1Db25kaXRpb247CiB9OwogCi1jbGFzcyBGZW5jZVN5bmMgZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRPYmplY3QKK2NsYXNzIEZlbmNlU3luYyBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudE9iamVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgotICAgIGV4
cGxpY2l0IEZlbmNlU3luYyhyeDo6RmVuY2VTeW5jSW1wbCAqaW1wbCwgR0x1aW50IGlkKTsKKyAg
ICBGZW5jZVN5bmMocng6OkZlbmNlU3luY0ltcGwgKmltcGwsIEdMdWludCBpZCk7CiAgICAgdmly
dHVhbCB+RmVuY2VTeW5jKCk7CiAKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5n
ICZsYWJlbCkgb3ZlcnJpZGU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29u
c3Qgb3ZlcnJpZGU7CisKICAgICBFcnJvciBzZXQoR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVs
ZCBmbGFncyk7CiAgICAgRXJyb3IgY2xpZW50V2FpdChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2
NCB0aW1lb3V0LCBHTGVudW0gKm91dFJlc3VsdCk7CiAgICAgRXJyb3Igc2VydmVyV2FpdChHTGJp
dGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KTsKQEAgLTY0LDYgKzY4LDggQEAKICAgcHJp
dmF0ZToKICAgICByeDo6RmVuY2VTeW5jSW1wbCAqbUZlbmNlOwogCisgICAgc3RkOjpzdHJpbmcg
bUxhYmVsOworCiAgICAgR0xlbnVtIG1Db25kaXRpb247CiAgICAgR0xiaXRmaWVsZCBtRmxhZ3M7
CiB9OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVm
ZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvRnJhbWVidWZmZXIuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
LDYgKzksNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKIAorI2luY2x1
ZGUgImNvbW1vbi9PcHRpb25hbC5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0Lmgi
CkBAIC0yMCw3ICsyMSw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZm
ZXJJbXBsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZmZXJJbXBsLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvV29ya2Fyb3VuZHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9TdXJmYWNlSW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTM4LDExICszOSwyMiBA
QAogfQogfQogCitGcmFtZWJ1ZmZlcjo6RGF0YTo6RGF0YSgpCisgICAgOiBtTGFiZWwoKSwKKyAg
ICAgIG1Db2xvckF0dGFjaG1lbnRzKDEpLAorICAgICAgbURyYXdCdWZmZXJTdGF0ZXMoMSwgR0xf
Tk9ORSksCisgICAgICBtUmVhZEJ1ZmZlclN0YXRlKEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCkK
K3sKKyAgICBtRHJhd0J1ZmZlclN0YXRlc1swXSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVDsK
K30KKwogRnJhbWVidWZmZXI6OkRhdGE6OkRhdGEoY29uc3QgQ2FwcyAmY2FwcykKLSAgICA6IG1D
b2xvckF0dGFjaG1lbnRzKGNhcHMubWF4Q29sb3JBdHRhY2htZW50cyksCisgICAgOiBtTGFiZWwo
KSwKKyAgICAgIG1Db2xvckF0dGFjaG1lbnRzKGNhcHMubWF4Q29sb3JBdHRhY2htZW50cyksCiAg
ICAgICBtRHJhd0J1ZmZlclN0YXRlcyhjYXBzLm1heERyYXdCdWZmZXJzLCBHTF9OT05FKSwKICAg
ICAgIG1SZWFkQnVmZmVyU3RhdGUoR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKQogeworICAgIEFT
U0VSVChtRHJhd0J1ZmZlclN0YXRlcy5zaXplKCkgPiAwKTsKICAgICBtRHJhd0J1ZmZlclN0YXRl
c1swXSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVDsKIH0KIApAQCAtNTAsNiArNjIsMTEgQEAK
IHsKIH0KIAorY29uc3Qgc3RkOjpzdHJpbmcgJkZyYW1lYnVmZmVyOjpEYXRhOjpnZXRMYWJlbCgp
Cit7CisgICAgcmV0dXJuIG1MYWJlbDsKK30KKwogY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50
ICpGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0UmVhZEF0dGFjaG1lbnQoKSBjb25zdAogewogICAgIEFT
U0VSVChtUmVhZEJ1ZmZlclN0YXRlID09IEdMX0JBQ0sgfHwgKG1SZWFkQnVmZmVyU3RhdGUgPj0g
R0xfQ09MT1JfQVRUQUNITUVOVDAgJiYgbVJlYWRCdWZmZXJTdGF0ZSA8PSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMTUpKTsKQEAgLTg0LDcgKzEwMSw3IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LWNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OkRhdGE6OmdldENvbG9y
QXR0YWNobWVudCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAorY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6RGF0YTo6Z2V0Q29sb3JBdHRhY2htZW50
KHNpemVfdCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNvbG9yQXR0YWNo
bWVudCA8IG1Db2xvckF0dGFjaG1lbnRzLnNpemUoKSk7CiAgICAgcmV0dXJuIG1Db2xvckF0dGFj
aG1lbnRzW2NvbG9yQXR0YWNobWVudF0uaXNBdHRhY2hlZCgpID8KQEAgLTExNiwyNyArMTMzLDcw
IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcihj
b25zdCBDYXBzICZjYXBzLCByeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCkKLSAg
ICA6IG1EYXRhKGNhcHMpLAotICAgICAgbUltcGwobnVsbHB0ciksCi0gICAgICBtSWQoaWQpCiti
b29sIEZyYW1lYnVmZmVyOjpEYXRhOjphdHRhY2htZW50c0hhdmVTYW1lRGltZW5zaW9ucygpIGNv
bnN0CiB7Ci0gICAgaWYgKG1JZCA9PSAwKQorICAgIE9wdGlvbmFsPEV4dGVudHM+IGF0dGFjaG1l
bnRTaXplOworCisgICAgYXV0byBoYXNNaXNtYXRjaGVkU2l6ZSA9IFsmYXR0YWNobWVudFNpemVd
KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmYXR0YWNobWVudCkKICAgICB7Ci0gICAgICAg
IG1JbXBsID0gZmFjdG9yeS0+Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKG1EYXRhKTsKKyAgICAg
ICAgaWYgKCFhdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFhdHRhY2htZW50U2l6ZS52
YWxpZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBhdHRhY2htZW50U2l6ZSA9IGF0dGFjaG1l
bnQuZ2V0U2l6ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIChhdHRhY2htZW50LmdldFNpemUoKSAhPSBhdHRhY2htZW50U2l6ZS52YWx1
ZSgpKTsKKyAgICB9OworCisgICAgZm9yIChjb25zdCBhdXRvICZhdHRhY2htZW50IDogbUNvbG9y
QXR0YWNobWVudHMpCisgICAgeworICAgICAgICBpZiAoaGFzTWlzbWF0Y2hlZFNpemUoYXR0YWNo
bWVudCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQog
ICAgIH0KLSAgICBlbHNlCisKKyAgICBpZiAoaGFzTWlzbWF0Y2hlZFNpemUobURlcHRoQXR0YWNo
bWVudCkpCiAgICAgewotICAgICAgICBtSW1wbCA9IGZhY3RvcnktPmNyZWF0ZUZyYW1lYnVmZmVy
KG1EYXRhKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKworICAgIHJldHVybiAhaGFz
TWlzbWF0Y2hlZFNpemUobVN0ZW5jaWxBdHRhY2htZW50KTsKK30KKworRnJhbWVidWZmZXI6OkZy
YW1lYnVmZmVyKGNvbnN0IENhcHMgJmNhcHMsIHJ4OjpJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1
aW50IGlkKQorICAgIDogbURhdGEoY2FwcyksIG1JbXBsKGZhY3RvcnktPmNyZWF0ZUZyYW1lYnVm
ZmVyKG1EYXRhKSksIG1JZChpZCkKK3sKKyAgICBBU1NFUlQobUlkICE9IDApOwogICAgIEFTU0VS
VChtSW1wbCAhPSBudWxscHRyKTsKIH0KIAorRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpT
dXJmYWNlSW1wbCAqc3VyZmFjZSkKKyAgICA6IG1EYXRhKCksIG1JbXBsKHN1cmZhY2UtPmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihtRGF0YSkpLCBtSWQoMCkKK3sKKyAgICBBU1NFUlQobUltcGwg
IT0gbnVsbHB0cik7Cit9CisKIEZyYW1lYnVmZmVyOjp+RnJhbWVidWZmZXIoKQogewogICAgIFNh
ZmVEZWxldGUobUltcGwpOwogfQogCit2b2lkIEZyYW1lYnVmZmVyOjpzZXRMYWJlbChjb25zdCBz
dGQ6OnN0cmluZyAmbGFiZWwpCit7CisgICAgbURhdGEubUxhYmVsID0gbGFiZWw7Cit9CisKK2Nv
bnN0IHN0ZDo6c3RyaW5nICZGcmFtZWJ1ZmZlcjo6Z2V0TGFiZWwoKSBjb25zdAoreworICAgIHJl
dHVybiBtRGF0YS5tTGFiZWw7Cit9CisKIHZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFRleHR1cmUo
R0x1aW50IHRleHR1cmVJZCkKIHsKICAgICBkZXRhY2hSZXNvdXJjZUJ5SWQoR0xfVEVYVFVSRSwg
dGV4dHVyZUlkKTsKQEAgLTE1OCw3ICsyMTgsNyBAQAogICAgIERldGFjaE1hdGNoaW5nQXR0YWNo
bWVudCgmbURhdGEubVN0ZW5jaWxBdHRhY2htZW50LCByZXNvdXJjZVR5cGUsIHJlc291cmNlSWQp
OwogfQogCi1jb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXRDb2xv
cmJ1ZmZlcih1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdAorY29uc3QgRnJhbWVi
dWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0Q29sb3JidWZmZXIoc2l6ZV90IGNvbG9y
QXR0YWNobWVudCkgY29uc3QKIHsKICAgICByZXR1cm4gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50
KGNvbG9yQXR0YWNobWVudCk7CiB9CkBAIC0yMjgsMTIgKzI4OCwyMiBAQAogICAgIH0KIH0KIAot
R0xlbnVtIEZyYW1lYnVmZmVyOjpnZXREcmF3QnVmZmVyU3RhdGUodW5zaWduZWQgaW50IGNvbG9y
QXR0YWNobWVudCkgY29uc3QKK3NpemVfdCBGcmFtZWJ1ZmZlcjo6Z2V0RHJhd2J1ZmZlclN0YXRl
Q291bnQoKSBjb25zdAogewotICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBtRGF0YS5tRHJh
d0J1ZmZlclN0YXRlcy5zaXplKCkpOwotICAgIHJldHVybiBtRGF0YS5tRHJhd0J1ZmZlclN0YXRl
c1tjb2xvckF0dGFjaG1lbnRdOworICAgIHJldHVybiBtRGF0YS5tRHJhd0J1ZmZlclN0YXRlcy5z
aXplKCk7CiB9CiAKK0dMZW51bSBGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1ZmZlclN0YXRlKHNpemVf
dCBkcmF3QnVmZmVyKSBjb25zdAoreworICAgIEFTU0VSVChkcmF3QnVmZmVyIDwgbURhdGEubURy
YXdCdWZmZXJTdGF0ZXMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbURhdGEubURyYXdCdWZmZXJTdGF0
ZXNbZHJhd0J1ZmZlcl07Cit9CisKK2NvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJkZyYW1lYnVm
ZmVyOjpnZXREcmF3QnVmZmVyU3RhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURhdGEuZ2V0
RHJhd0J1ZmZlclN0YXRlcygpOworfQorCiB2b2lkIEZyYW1lYnVmZmVyOjpzZXREcmF3QnVmZmVy
cyhzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYnVmZmVycykKIHsKICAgICBhdXRvICZkcmF3
U3RhdGVzID0gbURhdGEubURyYXdCdWZmZXJTdGF0ZXM7CkBAIC0yNDEsOSArMzExLDM5IEBACiAg
ICAgQVNTRVJUKGNvdW50IDw9IGRyYXdTdGF0ZXMuc2l6ZSgpKTsKICAgICBzdGQ6OmNvcHkoYnVm
ZmVycywgYnVmZmVycyArIGNvdW50LCBkcmF3U3RhdGVzLmJlZ2luKCkpOwogICAgIHN0ZDo6Zmls
bChkcmF3U3RhdGVzLmJlZ2luKCkgKyBjb3VudCwgZHJhd1N0YXRlcy5lbmQoKSwgR0xfTk9ORSk7
Ci0gICAgbUltcGwtPnNldERyYXdCdWZmZXJzKGNvdW50LCBidWZmZXJzKTsKKyAgICBtRGlydHlC
aXRzLnNldChESVJUWV9CSVRfRFJBV19CVUZGRVJTKTsKIH0KIAorY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50ICpGcmFtZWJ1ZmZlcjo6Z2V0RHJhd0J1ZmZlcihzaXplX3QgZHJhd0J1ZmZlcikg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZHJhd0J1ZmZlciA8IG1EYXRhLm1EcmF3QnVmZmVyU3RhdGVz
LnNpemUoKSk7CisgICAgaWYgKG1EYXRhLm1EcmF3QnVmZmVyU3RhdGVzW2RyYXdCdWZmZXJdICE9
IEdMX05PTkUpCisgICAgeworICAgICAgICAvLyBFUzMgc3BlYzogIklmIHRoZSBHTCBpcyBib3Vu
ZCB0byBhIGRyYXcgZnJhbWVidWZmZXIgb2JqZWN0LCB0aGUgaXRoIGJ1ZmZlciBsaXN0ZWQgaW4g
YnVmcworICAgICAgICAvLyBtdXN0IGJlIENPTE9SX0FUVEFDSE1FTlRpIG9yIE5PTkUiCisgICAg
ICAgIEFTU0VSVChtRGF0YS5tRHJhd0J1ZmZlclN0YXRlc1tkcmF3QnVmZmVyXSA9PSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCArIGRyYXdCdWZmZXIgfHwKKyAgICAgICAgICAgICAgIChkcmF3QnVmZmVy
ID09IDAgJiYgbURhdGEubURyYXdCdWZmZXJTdGF0ZXNbZHJhd0J1ZmZlcl0gPT0gR0xfQkFDSykp
OworICAgICAgICByZXR1cm4gZ2V0QXR0YWNobWVudChtRGF0YS5tRHJhd0J1ZmZlclN0YXRlc1tk
cmF3QnVmZmVyXSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KK30KKworYm9vbCBGcmFtZWJ1ZmZlcjo6aGFzRW5hYmxlZERyYXdCdWZmZXIo
KSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGRyYXdidWZmZXJJZHggPSAwOyBkcmF3YnVmZmVy
SWR4IDwgbURhdGEubURyYXdCdWZmZXJTdGF0ZXMuc2l6ZSgpOyArK2RyYXdidWZmZXJJZHgpCisg
ICAgeworICAgICAgICBpZiAoZ2V0RHJhd0J1ZmZlcihkcmF3YnVmZmVySWR4KSAhPSBudWxscHRy
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogR0xlbnVtIEZyYW1lYnVmZmVyOjpnZXRSZWFkQnVm
ZmVyU3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtRGF0YS5tUmVhZEJ1ZmZlclN0YXRlOwpA
QCAtMjU1LDI3ICszNTUsMTcgQEAKICAgICAgICAgICAgKGJ1ZmZlciA+PSBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCAmJgogICAgICAgICAgICAgKGJ1ZmZlciAtIEdMX0NPTE9SX0FUVEFDSE1FTlQwKSA8
IG1EYXRhLm1Db2xvckF0dGFjaG1lbnRzLnNpemUoKSkpOwogICAgIG1EYXRhLm1SZWFkQnVmZmVy
U3RhdGUgPSBidWZmZXI7Ci0gICAgbUltcGwtPnNldFJlYWRCdWZmZXIoYnVmZmVyKTsKKyAgICBt
RGlydHlCaXRzLnNldChESVJUWV9CSVRfUkVBRF9CVUZGRVIpOwogfQogCi1ib29sIEZyYW1lYnVm
ZmVyOjppc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQodW5zaWduZWQgaW50IGNvbG9yQXR0YWNobWVu
dCkgY29uc3QKK3NpemVfdCBGcmFtZWJ1ZmZlcjo6Z2V0TnVtQ29sb3JCdWZmZXJzKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoY29sb3JBdHRhY2htZW50IDwgbURhdGEubUNvbG9yQXR0YWNobWVudHMu
c2l6ZSgpKTsKLSAgICByZXR1cm4gKG1EYXRhLm1Db2xvckF0dGFjaG1lbnRzW2NvbG9yQXR0YWNo
bWVudF0uaXNBdHRhY2hlZCgpICYmCi0gICAgICAgICAgICBtRGF0YS5tRHJhd0J1ZmZlclN0YXRl
c1tjb2xvckF0dGFjaG1lbnRdICE9IEdMX05PTkUpOworICAgIHJldHVybiBtRGF0YS5tQ29sb3JB
dHRhY2htZW50cy5zaXplKCk7CiB9CiAKLWJvb2wgRnJhbWVidWZmZXI6Omhhc0VuYWJsZWRDb2xv
ckF0dGFjaG1lbnQoKSBjb25zdAorYm9vbCBGcmFtZWJ1ZmZlcjo6aGFzRGVwdGgoKSBjb25zdAog
ewotICAgIGZvciAoc2l6ZV90IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8
IG1EYXRhLm1Db2xvckF0dGFjaG1lbnRzLnNpemUoKTsgKytjb2xvckF0dGFjaG1lbnQpCi0gICAg
ewotICAgICAgICBpZiAoaXNFbmFibGVkQ29sb3JBdHRhY2htZW50KHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oY29sb3JBdHRhY2htZW50KSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biAobURhdGEubURlcHRoQXR0YWNobWVudC5pc0F0dGFjaGVkKCkgJiYgbURhdGEubURlcHRoQXR0
YWNobWVudC5nZXREZXB0aFNpemUoKSA+IDApOwogfQogCiBib29sIEZyYW1lYnVmZmVyOjpoYXNT
dGVuY2lsKCkgY29uc3QKQEAgLTI4NSw5ICszNzUsOSBAQAogCiBib29sIEZyYW1lYnVmZmVyOjp1
c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMoKSBjb25zdAogewotICAgIGZvciAoc2l6ZV90IGNvbG9y
QXR0YWNobWVudCA9IDE7IGNvbG9yQXR0YWNobWVudCA8IG1EYXRhLm1Db2xvckF0dGFjaG1lbnRz
LnNpemUoKTsgKytjb2xvckF0dGFjaG1lbnQpCisgICAgZm9yIChzaXplX3QgZHJhd2J1ZmZlcklk
eCA9IDE7IGRyYXdidWZmZXJJZHggPCBtRGF0YS5tRHJhd0J1ZmZlclN0YXRlcy5zaXplKCk7ICsr
ZHJhd2J1ZmZlcklkeCkKICAgICB7Ci0gICAgICAgIGlmIChpc0VuYWJsZWRDb2xvckF0dGFjaG1l
bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvckF0dGFjaG1lbnQpKSkKKyAgICAgICAg
aWYgKGdldERyYXdCdWZmZXIoZHJhd2J1ZmZlcklkeCkgIT0gbnVsbHB0cikKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMwNSw4ICszOTUsNiBAQAog
ICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEU7CiAgICAgfQogCi0gICAgaW50
IHdpZHRoID0gMDsKLSAgICBpbnQgaGVpZ2h0ID0gMDsKICAgICB1bnNpZ25lZCBpbnQgY29sb3Ji
dWZmZXJTaXplID0gMDsKICAgICBpbnQgc2FtcGxlcyA9IC0xOwogICAgIGJvb2wgbWlzc2luZ0F0
dGFjaG1lbnQgPSB0cnVlOwpAQCAtMzE1LDcgKzQwMyw4IEBACiAgICAgewogICAgICAgICBpZiAo
Y29sb3JBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KGNvbG9yQXR0YWNobWVudC5nZXRXaWR0aCgpID09IDAgfHwgY29sb3JBdHRhY2htZW50LmdldEhl
aWdodCgpID09IDApCisgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZzaXplID0gY29sb3JBdHRh
Y2htZW50LmdldFNpemUoKTsKKyAgICAgICAgICAgIGlmIChzaXplLndpZHRoID09IDAgfHwgc2l6
ZS5oZWlnaHQgPT0gMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gR0xf
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwogICAgICAgICAgICAgfQpAQCAtMzI3
LDEzICs0MTYsMjkgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIWZvcm1h
dENhcHMucmVuZGVyYWJsZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwIHx8
IGZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPiAwKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsK
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50
LmxheWVyKCkgPj0gc2l6ZS5kZXB0aCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gRVMzIHNwZWNpZmllcyB0aGF0IGN1
YmUgbWFwIHRleHR1cmUgYXR0YWNobWVudHMgbXVzdCBiZSBjdWJlIGNvbXBsZXRlLgorICAgICAg
ICAgICAgICAgIC8vIFRoaXMgbGFuZ3VhZ2UgaXMgbWlzc2luZyBmcm9tIHRoZSBFUzIgc3BlYywg
YnV0IHdlIGVuZm9yY2UgaXQgaGVyZSBiZWNhdXNlIHNvbWUKKyAgICAgICAgICAgICAgICAvLyBk
ZXNrdG9wIE9wZW5HTCBkcml2ZXJzIGFsc28gZW5mb3JjZSB0aGlzIHZhbGlkYXRpb24uCisgICAg
ICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogQ2hlY2sgaWYgT3BlbkdMIEVTMiBkcml2ZXJz
IGVuZm9yY2UgY3ViZSBjb21wbGV0ZW5lc3MuCisgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVy
ZSAqdGV4dHVyZSA9IGNvbG9yQXR0YWNobWVudC5nZXRUZXh0dXJlKCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKHRleHR1cmUpOworICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRUYXJn
ZXQoKSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmICF0ZXh0dXJlLT5pc0N1YmVDb21wbGV0ZSgp
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1F
QlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjb2xvckF0dGFjaG1lbnQudHlwZSgpID09IEdM
X1JFTkRFUkJVRkZFUikKICAgICAgICAgICAgIHsKQEAgLTM0NSwxMiArNDUwLDYgQEAKIAogICAg
ICAgICAgICAgaWYgKCFtaXNzaW5nQXR0YWNobWVudCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAvLyBhbGwgY29sb3IgYXR0YWNobWVudHMgbXVzdCBoYXZlIHRoZSBzYW1lIHdpZHRo
IGFuZCBoZWlnaHQKLSAgICAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50LmdldFdpZHRo
KCkgIT0gd2lkdGggfHwgY29sb3JBdHRhY2htZW50LmdldEhlaWdodCgpICE9IGhlaWdodCkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAg
ICAgICAgLy8gQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUsIHdoaWNoIEVYVF9kcmF3X2J1
ZmZlcnMgcmVmZXJzIHRvLCByZXF1aXJlcyB0aGF0CiAgICAgICAgICAgICAgICAgLy8gYWxsIGNv
bG9yIGF0dGFjaG1lbnRzIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHNhbXBsZXMgZm9yIHRoZSBG
Qk8gdG8gYmUgY29tcGxldGUuCiAgICAgICAgICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC5n
ZXRTYW1wbGVzKCkgIT0gc2FtcGxlcykKQEAgLTM3MCw4ICs0NjksNiBAQAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHdpZHRo
ID0gY29sb3JBdHRhY2htZW50LmdldFdpZHRoKCk7Ci0gICAgICAgICAgICAgICAgaGVpZ2h0ID0g
Y29sb3JBdHRhY2htZW50LmdldEhlaWdodCgpOwogICAgICAgICAgICAgICAgIHNhbXBsZXMgPSBj
b2xvckF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOwogICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
U2l6ZSA9IGZvcm1hdEluZm8ucGl4ZWxCeXRlczsKICAgICAgICAgICAgICAgICBtaXNzaW5nQXR0
YWNobWVudCA9IGZhbHNlOwpAQCAtMzgyLDcgKzQ3OSw4IEBACiAgICAgY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50ICZkZXB0aEF0dGFjaG1lbnQgPSBtRGF0YS5tRGVwdGhBdHRhY2htZW50Owog
ICAgIGlmIChkZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQogICAgIHsKLSAgICAgICAgaWYg
KGRlcHRoQXR0YWNobWVudC5nZXRXaWR0aCgpID09IDAgfHwgZGVwdGhBdHRhY2htZW50LmdldEhl
aWdodCgpID09IDApCisgICAgICAgIGNvbnN0IEV4dGVudHMgJnNpemUgPSBkZXB0aEF0dGFjaG1l
bnQuZ2V0U2l6ZSgpOworICAgICAgICBpZiAoc2l6ZS53aWR0aCA9PSAwIHx8IHNpemUuaGVpZ2h0
ID09IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNP
TVBMRVRFX0FUVEFDSE1FTlQ7CiAgICAgICAgIH0KQEAgLTQwMCw3ICs0OTgsNyBAQAogCiAgICAg
ICAgICAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uZGVwdGhCaXRzID09IDApCkBA
IC00MTgsMTUgKzUxNiw5IEBACiAKICAgICAgICAgaWYgKG1pc3NpbmdBdHRhY2htZW50KQogICAg
ICAgICB7Ci0gICAgICAgICAgICB3aWR0aCA9IGRlcHRoQXR0YWNobWVudC5nZXRXaWR0aCgpOwot
ICAgICAgICAgICAgaGVpZ2h0ID0gZGVwdGhBdHRhY2htZW50LmdldEhlaWdodCgpOwogICAgICAg
ICAgICAgc2FtcGxlcyA9IGRlcHRoQXR0YWNobWVudC5nZXRTYW1wbGVzKCk7CiAgICAgICAgICAg
ICBtaXNzaW5nQXR0YWNobWVudCA9IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KHdpZHRoICE9IGRlcHRoQXR0YWNobWVudC5nZXRXaWR0aCgpIHx8IGhlaWdodCAhPSBkZXB0aEF0
dGFjaG1lbnQuZ2V0SGVpZ2h0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9G
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7Ci0gICAgICAgIH0KICAgICAgICAgZWxz
ZSBpZiAoc2FtcGxlcyAhPSBkZXB0aEF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBM
RV9BTkdMRTsKQEAgLTQzNiw3ICs1MjgsOCBAQAogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNo
bWVudCAmc3RlbmNpbEF0dGFjaG1lbnQgPSBtRGF0YS5tU3RlbmNpbEF0dGFjaG1lbnQ7CiAgICAg
aWYgKHN0ZW5jaWxBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKICAgICB7Ci0gICAgICAgIGlmIChz
dGVuY2lsQXR0YWNobWVudC5nZXRXaWR0aCgpID09IDAgfHwgc3RlbmNpbEF0dGFjaG1lbnQuZ2V0
SGVpZ2h0KCkgPT0gMCkKKyAgICAgICAgY29uc3QgRXh0ZW50cyAmc2l6ZSA9IHN0ZW5jaWxBdHRh
Y2htZW50LmdldFNpemUoKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGggPT0gMCB8fCBzaXplLmhl
aWdodCA9PSAwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJf
SU5DT01QTEVURV9BVFRBQ0hNRU5UOwogICAgICAgICB9CkBAIC00NTUsNyArNTQ4LDcgQEAKIAog
ICAgICAgICAgICAgaWYgKCFmb3JtYXRDYXBzLnJlbmRlcmFibGUpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChmb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID09
IDApCkBAIC00NzMsMzcgKzU2Niw0MiBAQAogCiAgICAgICAgIGlmIChtaXNzaW5nQXR0YWNobWVu
dCkKICAgICAgICAgewotICAgICAgICAgICAgd2lkdGggPSBzdGVuY2lsQXR0YWNobWVudC5nZXRX
aWR0aCgpOwotICAgICAgICAgICAgaGVpZ2h0ID0gc3RlbmNpbEF0dGFjaG1lbnQuZ2V0SGVpZ2h0
KCk7CiAgICAgICAgICAgICBzYW1wbGVzID0gc3RlbmNpbEF0dGFjaG1lbnQuZ2V0U2FtcGxlcygp
OwogICAgICAgICAgICAgbWlzc2luZ0F0dGFjaG1lbnQgPSBmYWxzZTsKICAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmICh3aWR0aCAhPSBzdGVuY2lsQXR0YWNobWVudC5nZXRXaWR0aCgpIHx8IGhl
aWdodCAhPSBzdGVuY2lsQXR0YWNobWVudC5nZXRIZWlnaHQoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKLSAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmIChzYW1wbGVzICE9IHN0ZW5jaWxBdHRhY2htZW50LmdldFNh
bXBsZXMoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfTVVMVElTQU1QTEVfQU5HTEU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBp
ZiB3ZSBoYXZlIGJvdGggYSBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXIsIHRoZXkgbXVzdCByZWZl
ciB0byB0aGUgc2FtZSBvYmplY3QKLSAgICAvLyBzaW5jZSB3ZSBvbmx5IHN1cHBvcnQgcGFja2Vk
X2RlcHRoX3N0ZW5jaWwgYW5kIG5vdCBzZXBhcmF0ZSBkZXB0aCBhbmQgc3RlbmNpbAotICAgIGlm
IChkZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmIHN0ZW5jaWxBdHRhY2htZW50LmlzQXR0
YWNoZWQoKSAmJiAhaGFzVmFsaWREZXB0aFN0ZW5jaWwoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKLSAgICB9Ci0KICAgICAvLyB3ZSBuZWVkIHRv
IGhhdmUgYXQgbGVhc3Qgb25lIGF0dGFjaG1lbnQgdG8gYmUgY29tcGxldGUKICAgICBpZiAobWlz
c2luZ0F0dGFjaG1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQ7CiAgICAgfQogCi0gICAgcmV0dXJuIG1JbXBsLT5j
aGVja1N0YXR1cygpOworICAgIC8vIEluIEVTIDIuMCwgYWxsIGNvbG9yIGF0dGFjaG1lbnRzIG11
c3QgaGF2ZSB0aGUgc2FtZSB3aWR0aCBhbmQgaGVpZ2h0LgorICAgIC8vIEluIEVTIDMuMCwgdGhl
cmUgaXMgbm8gc3VjaCByZXN0cmljdGlvbi4KKyAgICBpZiAoZGF0YS5jbGllbnRWZXJzaW9uIDwg
MyAmJiAhbURhdGEuYXR0YWNobWVudHNIYXZlU2FtZURpbWVuc2lvbnMoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM7CisgICAgfQor
CisgICAgc3luY1N0YXRlKCk7CisgICAgaWYgKCFtSW1wbC0+Y2hlY2tTdGF0dXMoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKKyAgICB9CisKKyAg
ICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEU7CiB9CiAKK0Vycm9yIEZyYW1lYnVmZmVy
OjpkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKK3sKKyAg
ICByZXR1cm4gbUltcGwtPmRpc2NhcmQoY291bnQsIGF0dGFjaG1lbnRzKTsKK30KKwogRXJyb3Ig
RnJhbWVidWZmZXI6OmludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzKQogewogICAgIHJldHVybiBtSW1wbC0+aW52YWxpZGF0ZShjb3VudCwgYXR0YWNobWVu
dHMpOwpAQCAtNTE2LDI3ICs2MTQsNjUgQEAKIAogRXJyb3IgRnJhbWVidWZmZXI6OmNsZWFyKGNv
bnN0IGdsOjpEYXRhICZkYXRhLCBHTGJpdGZpZWxkIG1hc2spCiB7CisgICAgaWYgKGRhdGEuc3Rh
dGUtPmlzUmFzdGVyaXplckRpc2NhcmRFbmFibGVkKCkpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICB9CisKICAgICByZXR1cm4gbUltcGwtPmNsZWFy
KGRhdGEsIG1hc2spOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJmdihjb25z
dCBTdGF0ZSAmc3RhdGUsIEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlcykKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcmZ2KGNvbnN0IGds
OjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMp
CiB7Ci0gICAgcmV0dXJuIG1JbXBsLT5jbGVhckJ1ZmZlcmZ2KHN0YXRlLCBidWZmZXIsIGRyYXdi
dWZmZXIsIHZhbHVlcyk7CisgICAgaWYgKGRhdGEuc3RhdGUtPmlzUmFzdGVyaXplckRpc2NhcmRF
bmFibGVkKCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICB9CisKKyAgICByZXR1cm4gbUltcGwtPmNsZWFyQnVmZmVyZnYoZGF0YSwgYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZXMpOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlcjo6Y2xlYXJCdWZmZXJ1
aXYoY29uc3QgU3RhdGUgJnN0YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBj
b25zdCBHTHVpbnQgKnZhbHVlcykKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1ZmZlcnVpdihj
b25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRy
YXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp2YWx1ZXMpCiB7Ci0gICAgcmV0dXJuIG1JbXBsLT5jbGVhckJ1ZmZlcnVpdihzdGF0ZSwgYnVm
ZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOworICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rlcml6
ZXJEaXNjYXJkRW5hYmxlZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgfQorCisgICAgcmV0dXJuIG1JbXBsLT5jbGVhckJ1ZmZlcnVpdihkYXRh
LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CiB9CiAKLUVycm9yIEZyYW1lYnVmZmVyOjpj
bGVhckJ1ZmZlcml2KGNvbnN0IFN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbHVlcykKK0Vycm9yIEZyYW1lYnVmZmVyOjpjbGVhckJ1
ZmZlcml2KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGludCAqdmFsdWVzKQogewotICAgIHJldHVybiBtSW1wbC0+Y2xlYXJCdWZmZXJpdihzdGF0ZSwg
YnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOworICAgIGlmIChkYXRhLnN0YXRlLT5pc1Jhc3Rl
cml6ZXJEaXNjYXJkRW5hYmxlZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgfQorCisgICAgcmV0dXJuIG1JbXBsLT5jbGVhckJ1ZmZlcml2KGRh
dGEsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKIH0KIAotRXJyb3IgRnJhbWVidWZmZXI6
OmNsZWFyQnVmZmVyZmkoY29uc3QgU3RhdGUgJnN0YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBk
cmF3YnVmZmVyLCBHTGZsb2F0IGRlcHRoLCBHTGludCBzdGVuY2lsKQorRXJyb3IgRnJhbWVidWZm
ZXI6OmNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZmxvYXQgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzdGVuY2lsKQogewotICAgIHJldHVybiBtSW1wbC0+Y2xlYXJCdWZmZXJmaShzdGF0ZSwgYnVm
ZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7CisgICAgaWYgKGRhdGEuc3RhdGUtPmlz
UmFzdGVyaXplckRpc2NhcmRFbmFibGVkKCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUltcGwtPmNsZWFyQnVmZmVy
ZmkoZGF0YSwgYnVmZmVyLCBkcmF3YnVmZmVyLCBkZXB0aCwgc3RlbmNpbCk7CiB9CiAKIEdMZW51
bSBGcmFtZWJ1ZmZlcjo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdApA
QCAtNTQ5LDEzICs2ODUsMzMgQEAKICAgICByZXR1cm4gbUltcGwtPmdldEltcGxlbWVudGF0aW9u
Q29sb3JSZWFkVHlwZSgpOwogfQogCi1FcnJvciBGcmFtZWJ1ZmZlcjo6cmVhZFBpeGVscyhjb25z
dCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICpwaXhlbHMpIGNvbnN0CitFcnJvciBGcmFtZWJ1ZmZl
cjo6cmVhZFBpeGVscyhjb25zdCBTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykgY29u
c3QKIHsKLSAgICByZXR1cm4gbUltcGwtPnJlYWRQaXhlbHMoc3RhdGUsIGFyZWEsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKKyAgICBFcnJvciBlcnJvciA9IG1JbXBsLT5yZWFkUGl4ZWxzKHN0YXRl
LCBhcmVhLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBCdWZmZXIgKnVucGFj
a0J1ZmZlciA9IHN0YXRlLmdldFVucGFja1N0YXRlKCkucGl4ZWxCdWZmZXIuZ2V0KCk7CisgICAg
aWYgKHVucGFja0J1ZmZlcikKKyAgICB7CisgICAgICAgIHVucGFja0J1ZmZlci0+b25QaXhlbFVu
cGFjaygpOworICAgIH0KKworICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLUVy
cm9yIEZyYW1lYnVmZmVyOjpibGl0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAotICAg
ICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyLCBjb25z
dCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKQorRXJyb3IgRnJhbWVidWZmZXI6
OmJsaXQoY29uc3QgU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVj
dGFuZ2xlICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIpCiB7CiAgICAg
cmV0dXJuIG1JbXBsLT5ibGl0KHN0YXRlLCBzb3VyY2VBcmVhLCBkZXN0QXJlYSwgbWFzaywgZmls
dGVyLCBzb3VyY2VGcmFtZWJ1ZmZlcik7CiB9CkBAIC01OTEsNDUgKzc0Nyw0OCBAQAogICAgIGlm
IChiaW5kaW5nID09IEdMX0RFUFRIX1NURU5DSUwgfHwgYmluZGluZyA9PSBHTF9ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQpCiAgICAgewogICAgICAgICAvLyBlbnN1cmUgdGhpcyBpcyBhIGxlZ2l0
aW1hdGUgZGVwdGgrc3RlbmNpbCBmb3JtYXQKLSAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50
OjpUYXJnZXQgdGFyZ2V0KGJpbmRpbmcsIHRleHR1cmVJbmRleCk7Ci0gICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCA9IHJlc291cmNlLT5nZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQodGFy
Z2V0KTsKLSAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRl
cm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotICAgICAgICBpZiAocmVzb3VyY2UgJiYg
Zm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwICYmIGZvcm1hdEluZm8uc3RlbmNpbEJpdHMgPiAwKQor
ICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgKmF0dGFjaG1lbnRPYmogPSByZXNv
dXJjZTsKKyAgICAgICAgaWYgKHJlc291cmNlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtRGF0
YS5tRGVwdGhBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJl
c291cmNlKTsKLSAgICAgICAgICAgIG1EYXRhLm1TdGVuY2lsQXR0YWNobWVudC5hdHRhY2godHlw
ZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7CisgICAgICAgICAgICBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCB0YXJnZXQoYmluZGluZywgdGV4dHVyZUluZGV4KTsKKyAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCAgICAgICAgICAgID0gcmVzb3VyY2UtPmdl
dEF0dGFjaG1lbnRJbnRlcm5hbEZvcm1hdCh0YXJnZXQpOworICAgICAgICAgICAgY29uc3QgSW50
ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxG
b3JtYXQpOworICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uZGVwdGhCaXRzID09IDAgfHwgZm9y
bWF0SW5mby5zdGVuY2lsQml0cyA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIEF0dGFjaGluZyBudWxscHRyIGRldGFjaGVzIHRoZSBjdXJyZW50IGF0dGFjaG1lbnQuCisg
ICAgICAgICAgICAgICAgYXR0YWNobWVudE9iaiA9IG51bGxwdHI7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBtRGF0YS5tRGVw
dGhBdHRhY2htZW50LmRldGFjaCgpOwotICAgICAgICAgICAgbURhdGEubVN0ZW5jaWxBdHRhY2ht
ZW50LmRldGFjaCgpOwotICAgICAgICB9Ci0gICAgICAgIG1JbXBsLT5vblVwZGF0ZURlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQoKTsKKworICAgICAgICBtRGF0YS5tRGVwdGhBdHRhY2htZW50LmF0dGFj
aCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIGF0dGFjaG1lbnRPYmopOworICAgICAgICBt
RGF0YS5tU3RlbmNpbEF0dGFjaG1lbnQuYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRl
eCwgYXR0YWNobWVudE9iaik7CisgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERVBU
SF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxf
QVRUQUNITUVOVCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHN3aXRjaCAoYmlu
ZGluZykKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfREVQVEg6Ci0gICAgICAgICAgY2Fz
ZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgbURhdGEubURlcHRoQXR0YWNobWVu
dC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7Ci0gICAgICAg
ICAgICBtSW1wbC0+b25VcGRhdGVEZXB0aEF0dGFjaG1lbnQoKTsKKyAgICAgICAgICAgIGNhc2Ug
R0xfREVQVEg6CisgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAg
ICAgICAgICAgbURhdGEubURlcHRoQXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4
dHVyZUluZGV4LCByZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX0RFUFRIX0FUVEFDSE1FTlQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
Y2FzZSBHTF9TVEVOQ0lMOgotICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgot
ICAgICAgICAgICAgbURhdGEubVN0ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5n
LCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKLSAgICAgICAgICAgIG1JbXBsLT5vblVwZGF0ZVN0
ZW5jaWxBdHRhY2htZW50KCk7CisgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAg
ICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICBtRGF0YS5t
U3RlbmNpbEF0dGFjaG1lbnQuYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVz
b3VyY2UpOworICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lM
X0FUVEFDSE1FTlQpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9CQUNL
OgotICAgICAgICAgICAgbURhdGEubUNvbG9yQXR0YWNobWVudHNbMF0uYXR0YWNoKHR5cGUsIGJp
bmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2UpOwotICAgICAgICAgICAgbUltcGwtPm9uVXBk
YXRlQ29sb3JBdHRhY2htZW50KDApOworICAgICAgICAgICAgY2FzZSBHTF9CQUNLOgorICAgICAg
ICAgICAgICAgIG1EYXRhLm1Db2xvckF0dGFjaG1lbnRzWzBdLmF0dGFjaCh0eXBlLCBiaW5kaW5n
LCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNl
dChESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIHNpemVfdCBjb2xvckluZGV4ID0gYmluZGluZyAtIEdMX0NPTE9SX0FUVEFD
SE1FTlQwOwogICAgICAgICAgICAgICAgIEFTU0VSVChjb2xvckluZGV4IDwgbURhdGEubUNvbG9y
QXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBtRGF0YS5tQ29sb3JBdHRhY2ht
ZW50c1tjb2xvckluZGV4XS5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNv
dXJjZSk7Ci0gICAgICAgICAgICAgICAgbUltcGwtPm9uVXBkYXRlQ29sb3JBdHRhY2htZW50KGNv
bG9ySW5kZXgpOworICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xP
Ul9BVFRBQ0hNRU5UXzAgKyBjb2xvckluZGV4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC02NDEsNCArODAwLDEzIEBACiAgICAgc2V0QXR0YWNobWVu
dChHTF9OT05FLCBiaW5kaW5nLCBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLCBudWxscHRyKTsK
IH0KIAordm9pZCBGcmFtZWJ1ZmZlcjo6c3luY1N0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobURp
cnR5Qml0cy5hbnkoKSkKKyAgICB7CisgICAgICAgIG1JbXBsLT5zeW5jU3RhdGUobURpcnR5Qml0
cyk7CisgICAgICAgIG1EaXJ0eUJpdHMucmVzZXQoKTsKKyAgICB9CiB9CisKK30gIC8vIG5hbWVz
cGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1l
YnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0ZyYW1lYnVmZmVyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2
ICsxNCw3IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0NvbnN0YW50cy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0RlYnVnLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRXJyb3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFj
aG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgpAQCAtMjMsNyAr
MjQsNyBAQAogY2xhc3MgSW1wbEZhY3Rvcnk7CiBjbGFzcyBGcmFtZWJ1ZmZlckltcGw7CiBjbGFz
cyBSZW5kZXJidWZmZXJJbXBsOwotc3RydWN0IFdvcmthcm91bmRzOworY2xhc3MgU3VyZmFjZUlt
cGw7CiB9CiAKIG5hbWVzcGFjZSBlZ2wKQEAgLTMzLDYgKzM0LDcgQEAKIAogbmFtZXNwYWNlIGds
CiB7CitjbGFzcyBDb250ZXh0OwogY2xhc3MgUmVuZGVyYnVmZmVyOwogY2xhc3MgU3RhdGU7CiBj
bGFzcyBUZXh0dXJlOwpAQCAtNDMsMzAgKzQ1LDM4IEBACiBzdHJ1Y3QgSW1hZ2VJbmRleDsKIHN0
cnVjdCBSZWN0YW5nbGU7CiAKLWNsYXNzIEZyYW1lYnVmZmVyCitjbGFzcyBGcmFtZWJ1ZmZlciBm
aW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoKIAogICAgIGNsYXNzIERh
dGEgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CiAgICAgICBwdWJsaWM6CisgICAg
ICAgIGV4cGxpY2l0IERhdGEoKTsKICAgICAgICAgZXhwbGljaXQgRGF0YShjb25zdCBDYXBzICZj
YXBzKTsKICAgICAgICAgfkRhdGEoKTsKIAorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0
TGFiZWwoKTsKKwogICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFJlYWRB
dHRhY2htZW50KCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAq
Z2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKICAgICAgICAgY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50ICpnZXREZXB0aE9yU3RlbmNpbEF0dGFjaG1lbnQoKSBjb25zdDsKLSAgICAg
ICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRDb2xvckF0dGFjaG1lbnQodW5zaWdu
ZWQgaW50IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVy
QXR0YWNobWVudCAqZ2V0Q29sb3JBdHRhY2htZW50KHNpemVfdCBjb2xvckF0dGFjaG1lbnQpIGNv
bnN0OwogICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldERlcHRoQXR0YWNo
bWVudCgpIGNvbnN0OwogICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFN0
ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPEdMZW51bT4gJmdldERyYXdCdWZmZXJTdGF0ZXMoKSBjb25zdCB7IHJldHVy
biBtRHJhd0J1ZmZlclN0YXRlczsgfQorICAgICAgICBHTGVudW0gZ2V0UmVhZEJ1ZmZlclN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbVJlYWRCdWZmZXJTdGF0ZTsgfQogICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ+ICZnZXRDb2xvckF0dGFjaG1lbnRzKCkgY29u
c3QgeyByZXR1cm4gbUNvbG9yQXR0YWNobWVudHM7IH0KIAorICAgICAgICBib29sIGF0dGFjaG1l
bnRzSGF2ZVNhbWVEaW1lbnNpb25zKCkgY29uc3Q7CisKICAgICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBGcmFtZWJ1ZmZlcjsKIAorICAgICAgICBzdGQ6OnN0cmluZyBtTGFiZWw7
CisKICAgICAgICAgc3RkOjp2ZWN0b3I8RnJhbWVidWZmZXJBdHRhY2htZW50PiBtQ29sb3JBdHRh
Y2htZW50czsKICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50IG1EZXB0aEF0dGFjaG1lbnQ7
CiAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCBtU3RlbmNpbEF0dGFjaG1lbnQ7CkBAIC03
Niw4ICs4NiwxMiBAQAogICAgIH07CiAKICAgICBGcmFtZWJ1ZmZlcihjb25zdCBDYXBzICZjYXBz
LCByeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCk7CisgICAgRnJhbWVidWZmZXIo
cng6OlN1cmZhY2VJbXBsICpzdXJmYWNlKTsKICAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcigpOwog
CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwor
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAg
Y29uc3Qgcng6OkZyYW1lYnVmZmVySW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJl
dHVybiBtSW1wbDsgfQogICAgIHJ4OjpGcmFtZWJ1ZmZlckltcGwgKmdldEltcGxlbWVudGF0aW9u
KCkgeyByZXR1cm4gbUltcGw7IH0KIApAQCAtOTIsNyArMTA2LDcgQEAKICAgICB2b2lkIGRldGFj
aFRleHR1cmUoR0x1aW50IHRleHR1cmUpOwogICAgIHZvaWQgZGV0YWNoUmVuZGVyYnVmZmVyKEdM
dWludCByZW5kZXJidWZmZXIpOwogCi0gICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpn
ZXRDb2xvcmJ1ZmZlcih1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50KSBjb25zdDsKKyAgICBj
b25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldENvbG9yYnVmZmVyKHNpemVfdCBjb2xvckF0
dGFjaG1lbnQpIGNvbnN0OwogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVw
dGhidWZmZXIoKSBjb25zdDsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFN0
ZW5jaWxidWZmZXIoKSBjb25zdDsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdl
dERlcHRoU3RlbmNpbEJ1ZmZlcigpIGNvbnN0OwpAQCAtMTAzLDE0ICsxMTcsMTggQEAKIAogICAg
IGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0QXR0YWNobWVudChHTGVudW0gYXR0YWNo
bWVudCkgY29uc3Q7CiAKLSAgICBHTGVudW0gZ2V0RHJhd0J1ZmZlclN0YXRlKHVuc2lnbmVkIGlu
dCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0OworICAgIHNpemVfdCBnZXREcmF3YnVmZmVyU3RhdGVD
b3VudCgpIGNvbnN0OworICAgIEdMZW51bSBnZXREcmF3QnVmZmVyU3RhdGUoc2l6ZV90IGRyYXdC
dWZmZXIpIGNvbnN0OworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJmdldERyYXdCdWZm
ZXJTdGF0ZXMoKSBjb25zdDsKICAgICB2b2lkIHNldERyYXdCdWZmZXJzKHNpemVfdCBjb3VudCwg
Y29uc3QgR0xlbnVtICpidWZmZXJzKTsKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmdldERyYXdCdWZmZXIoc2l6ZV90IGRyYXdCdWZmZXIpIGNvbnN0OworICAgIGJvb2wgaGFzRW5h
YmxlZERyYXdCdWZmZXIoKSBjb25zdDsKIAogICAgIEdMZW51bSBnZXRSZWFkQnVmZmVyU3RhdGUo
KSBjb25zdDsKICAgICB2b2lkIHNldFJlYWRCdWZmZXIoR0xlbnVtIGJ1ZmZlcik7CiAKLSAgICBi
b29sIGlzRW5hYmxlZENvbG9yQXR0YWNobWVudCh1bnNpZ25lZCBpbnQgY29sb3JBdHRhY2htZW50
KSBjb25zdDsKLSAgICBib29sIGhhc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKKyAg
ICBzaXplX3QgZ2V0TnVtQ29sb3JCdWZmZXJzKCkgY29uc3Q7CisgICAgYm9vbCBoYXNEZXB0aCgp
IGNvbnN0OwogICAgIGJvb2wgaGFzU3RlbmNpbCgpIGNvbnN0OwogICAgIGludCBnZXRTYW1wbGVz
KGNvbnN0IGdsOjpEYXRhICZkYXRhKSBjb25zdDsKICAgICBib29sIHVzaW5nRXh0ZW5kZWREcmF3
QnVmZmVycygpIGNvbnN0OwpAQCAtMTE4LDI4ICsxMzYsNjggQEAKICAgICBHTGVudW0gY2hlY2tT
dGF0dXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEpIGNvbnN0OwogICAgIGJvb2wgaGFzVmFsaWREZXB0
aFN0ZW5jaWwoKSBjb25zdDsKIAorICAgIEVycm9yIGRpc2NhcmQoc2l6ZV90IGNvdW50LCBjb25z
dCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKICAgICBFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBjb3Vu
dCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CiAgICAgRXJyb3IgaW52YWxpZGF0ZVN1Yihz
aXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJmFyZWEpOwogCiAgICAgRXJyb3IgY2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMYml0
ZmllbGQgbWFzayk7Ci0gICAgRXJyb3IgY2xlYXJCdWZmZXJmdihjb25zdCBTdGF0ZSAmc3RhdGUs
IEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7
Ci0gICAgRXJyb3IgY2xlYXJCdWZmZXJ1aXYoY29uc3QgU3RhdGUgJnN0YXRlLCBHTGVudW0gYnVm
ZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTHVpbnQgKnZhbHVlcyk7Ci0gICAgRXJyb3Ig
Y2xlYXJCdWZmZXJpdihjb25zdCBTdGF0ZSAmc3RhdGUsIEdMZW51bSBidWZmZXIsIEdMaW50IGRy
YXdidWZmZXIsIGNvbnN0IEdMaW50ICp2YWx1ZXMpOwotICAgIEVycm9yIGNsZWFyQnVmZmVyZmko
Y29uc3QgU3RhdGUgJnN0YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBHTGZs
b2F0IGRlcHRoLCBHTGludCBzdGVuY2lsKTsKKyAgICBFcnJvciBjbGVhckJ1ZmZlcmZ2KGNvbnN0
IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworICAgIEVycm9yIGNsZWFyQnVmZmVy
dWl2KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlcyk7CisgICAgRXJyb3Ig
Y2xlYXJCdWZmZXJpdihjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQg
ZHJhd2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbHVlcyk7CisgICAgRXJyb3IgY2xlYXJCdWZmZXJm
aShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBi
dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHN0ZW5jaWwpOwogCiAgICAgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFk
Rm9ybWF0KCkgY29uc3Q7CiAgICAgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlw
ZSgpIGNvbnN0OwotICAgIEVycm9yIHJlYWRQaXhlbHMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
dm9pZCAqcGl4ZWxzKSBjb25zdDsKKyAgICBFcnJvciByZWFkUGl4ZWxzKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
LAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNv
bnN0OwogCi0gICAgRXJyb3IgYmxpdChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKLSAg
ICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlciwgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcik7CisgICAgRXJyb3IgYmxpdChjb25zdCBTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisg
ICAgICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUgJmRlc3RBcmVhLAorICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBtYXNrLAorICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwKKyAgICAgICAg
ICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcik7CiAKKyAgICBlbnVt
IERpcnR5Qml0VHlwZQorICAgIHsKKyAgICAgICAgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRf
MCwKKyAgICAgICAgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfTUFYID0KKyAgICAgICAgICAg
IERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAgKyBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRTLAorICAgICAgICBESVJUWV9CSVRfREVQVEhfQVRUQUNITUVO
VCA9IERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UX01BWCwKKyAgICAgICAgRElSVFlfQklUX1NU
RU5DSUxfQVRUQUNITUVOVCwKKyAgICAgICAgRElSVFlfQklUX0RSQVdfQlVGRkVSUywKKyAgICAg
ICAgRElSVFlfQklUX1JFQURfQlVGRkVSLAorICAgICAgICBESVJUWV9CSVRfVU5LTk9XTiwKKyAg
ICAgICAgRElSVFlfQklUX01BWCA9IERJUlRZX0JJVF9VTktOT1dOLAorICAgIH07CisKKyAgICB0
eXBlZGVmIHN0ZDo6Yml0c2V0PERJUlRZX0JJVF9NQVg+IERpcnR5Qml0czsKKyAgICBib29sIGhh
c0FueURpcnR5Qml0KCkgY29uc3QgeyByZXR1cm4gbURpcnR5Qml0cy5hbnkoKTsgfQorCisgICAg
dm9pZCBzeW5jU3RhdGUoKSBjb25zdDsKKwogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkZXRhY2hS
ZXNvdXJjZUJ5SWQoR0xlbnVtIHJlc291cmNlVHlwZSwgR0x1aW50IHJlc291cmNlSWQpOwogCiAg
ICAgRGF0YSBtRGF0YTsKICAgICByeDo6RnJhbWVidWZmZXJJbXBsICptSW1wbDsKICAgICBHTHVp
bnQgbUlkOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogU2VlIGlmIHdlIGNhbiBtYWtlIHRoaXMg
bm9uLW11dGFibGUuCisgICAgbXV0YWJsZSBEaXJ0eUJpdHMgbURpcnR5Qml0czsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0
dGFjaG1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsMTIgQEAKIAogLy8vLy8vIEZyYW1lYnVm
ZmVyQXR0YWNobWVudDo6VGFyZ2V0IEltcGxlbWVudGF0aW9uIC8vLy8vLwogCitGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQ6OlRhcmdldDo6VGFyZ2V0KCkKKyAgICA6IG1CaW5kaW5nKEdMX05PTkUpLAor
ICAgICAgbVRleHR1cmVJbmRleChJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpKQoreworfQorCiBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldDo6VGFyZ2V0KEdMZW51bSBiaW5kaW5nLCBjb25z
dCBJbWFnZUluZGV4ICZpbWFnZUluZGV4KQogICAgIDogbUJpbmRpbmcoYmluZGluZyksCiAgICAg
ICBtVGV4dHVyZUluZGV4KGltYWdlSW5kZXgpCkBAIC00NCw4ICs1MCw3IEBACiAvLy8vLy8gRnJh
bWVidWZmZXJBdHRhY2htZW50IEltcGxlbWVudGF0aW9uIC8vLy8vLwogCiBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OkZyYW1lYnVmZmVyQXR0YWNobWVudCgpCi0gICAgOiBtVHlwZShHTF9OT05FKSwK
LSAgICAgIG1UYXJnZXQoR0xfTk9ORSwgSW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSkKKyAgICA6
IG1UeXBlKEdMX05PTkUpLCBtUmVzb3VyY2UobnVsbHB0cikKIHsKIH0KIApAQCAtNTMsMTkgKzU4
LDM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEltYWdlSW5kZXggJnRleHR1cmVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCAqcmVzb3Vy
Y2UpCi0gICAgOiBtVHlwZSh0eXBlKSwKLSAgICAgIG1UYXJnZXQoYmluZGluZywgdGV4dHVyZUlu
ZGV4KQorICAgIDogbVJlc291cmNlKG51bGxwdHIpCiB7Ci0gICAgbVJlc291cmNlLnNldChyZXNv
dXJjZSk7CisgICAgYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2Up
OwogfQogCitGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OkZyYW1lYnVmZmVyQXR0YWNobWVudChjb25z
dCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKQorICAgIDogbVJlc291cmNlKG51bGxwdHIp
Cit7CisgICAgYXR0YWNoKG90aGVyLm1UeXBlLCBvdGhlci5tVGFyZ2V0LmJpbmRpbmcoKSwgb3Ro
ZXIubVRhcmdldC50ZXh0dXJlSW5kZXgoKSwgb3RoZXIubVJlc291cmNlKTsKK30KKworRnJhbWVi
dWZmZXJBdHRhY2htZW50ICZGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6Om9wZXJhdG9yPShjb25zdCBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKQoreworICAgIGF0dGFjaChvdGhlci5tVHlwZSwg
b3RoZXIubVRhcmdldC5iaW5kaW5nKCksIG90aGVyLm1UYXJnZXQudGV4dHVyZUluZGV4KCksIG90
aGVyLm1SZXNvdXJjZSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6On5GcmFtZWJ1ZmZlckF0dGFjaG1lbnQoKQoreworICAgIGRldGFjaCgpOworfQorCiB2
b2lkIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6ZGV0YWNoKCkKIHsKICAgICBtVHlwZSA9IEdMX05P
TkU7Ci0gICAgbVJlc291cmNlLnNldChudWxscHRyKTsKKyAgICBpZiAobVJlc291cmNlICE9IG51
bGxwdHIpCisgICAgeworICAgICAgICBtUmVzb3VyY2UtPm9uRGV0YWNoKCk7CisgICAgICAgIG1S
ZXNvdXJjZSA9IG51bGxwdHI7CisgICAgfQogCiAgICAgLy8gbm90IHRlY2huaWNhbGx5IG5lY2Vz
c2FyeSwgY291bGQgb21pdCBmb3IgcGVyZm9ybWFuY2UKLSAgICBtVGFyZ2V0ID0gVGFyZ2V0KEdM
X05PTkUsIEltYWdlSW5kZXg6Ok1ha2VJbnZhbGlkKCkpOworICAgIG1UYXJnZXQgPSBUYXJnZXQo
KTsKIH0KIAogdm9pZCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmF0dGFjaChHTGVudW0gdHlwZSwK
QEAgLTc1LDEyICsxMDAsMTYgQEAKIHsKICAgICBtVHlwZSA9IHR5cGU7CiAgICAgbVRhcmdldCA9
IFRhcmdldChiaW5kaW5nLCB0ZXh0dXJlSW5kZXgpOwotICAgIG1SZXNvdXJjZS5zZXQocmVzb3Vy
Y2UpOwotfQogCi1GcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6On5GcmFtZWJ1ZmZlckF0dGFjaG1lbnQo
KQotewotICAgIG1SZXNvdXJjZS5zZXQobnVsbHB0cik7CisgICAgaWYgKHJlc291cmNlKQorICAg
IHsKKyAgICAgICAgcmVzb3VyY2UtPm9uQXR0YWNoKCk7CisgICAgfQorICAgIGlmIChtUmVzb3Vy
Y2UgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZS0+b25EZXRhY2goKTsKKyAg
ICB9CisgICAgbVJlc291cmNlID0gcmVzb3VyY2U7CiB9CiAKIEdMdWludCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OmdldFJlZFNpemUoKSBjb25zdApAQCAtMTIzLDYgKzE1MiwxMSBAQAogICAgIHJl
dHVybiBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXQoKSkuY29sb3JFbmNv
ZGluZzsKIH0KIAorR0x1aW50IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6aWQoKSBjb25zdAorewor
ICAgIHJldHVybiBtUmVzb3VyY2UtPmdldElkKCk7Cit9CisKIGNvbnN0IEltYWdlSW5kZXggJkZy
YW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0VGV4dHVyZUltYWdlSW5kZXgoKSBjb25zdAogewogICAg
IEFTU0VSVCh0eXBlKCkgPT0gR0xfVEVYVFVSRSk7CkBAIC0xNTgsMTcgKzE5MiwxNyBAQAogCiBU
ZXh0dXJlICpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFRleHR1cmUoKSBjb25zdAogewotICAg
IHJldHVybiByeDo6R2V0QXM8VGV4dHVyZT4obVJlc291cmNlLmdldCgpKTsKKyAgICByZXR1cm4g
cng6OkdldEFzPFRleHR1cmU+KG1SZXNvdXJjZSk7CiB9CiAKIFJlbmRlcmJ1ZmZlciAqRnJhbWVi
dWZmZXJBdHRhY2htZW50OjpnZXRSZW5kZXJidWZmZXIoKSBjb25zdAogewotICAgIHJldHVybiBy
eDo6R2V0QXM8UmVuZGVyYnVmZmVyPihtUmVzb3VyY2UuZ2V0KCkpOworICAgIHJldHVybiByeDo6
R2V0QXM8UmVuZGVyYnVmZmVyPihtUmVzb3VyY2UpOwogfQogCiBjb25zdCBlZ2w6OlN1cmZhY2Ug
KkZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0U3VyZmFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHJ4OjpHZXRBczxlZ2w6OlN1cmZhY2U+KG1SZXNvdXJjZS5nZXQoKSk7CisgICAgcmV0dXJuIHJ4
OjpHZXRBczxlZ2w6OlN1cmZhY2U+KG1SZXNvdXJjZSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZm
ZXJBdHRhY2htZW50LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIsOSArMTIsOSBAQAogCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlSW5kZXguaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgogCiBuYW1lc3BhY2UgZWdsCiB7
CkBAIC01NywyMSArNTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbWFn
ZUluZGV4ICZ0ZXh0dXJlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVm
ZmVyQXR0YWNobWVudE9iamVjdCAqcmVzb3VyY2UpOwogCi0gICAgRnJhbWVidWZmZXJBdHRhY2ht
ZW50KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmb3RoZXIpCi0gICAgICAgOiBtVHlwZShv
dGhlci5tVHlwZSksCi0gICAgICAgICBtVGFyZ2V0KG90aGVyLm1UYXJnZXQpCi0gICAgewotICAg
ICAgICBtUmVzb3VyY2Uuc2V0KG90aGVyLm1SZXNvdXJjZS5nZXQoKSk7Ci0gICAgfQorICAgIEZy
YW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKTsK
KyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm9wZXJhdG9yPShjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgJm90aGVyKTsKIAotICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCAmb3BlcmF0b3I9
KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmb3RoZXIpCi0gICAgewotICAgICAgICBtVHlw
ZSA9IG90aGVyLm1UeXBlOwotICAgICAgICBtVGFyZ2V0ID0gb3RoZXIubVRhcmdldDsKLSAgICAg
ICAgbVJlc291cmNlLnNldChvdGhlci5tUmVzb3VyY2UuZ2V0KCkpOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCiAgICAgfkZyYW1lYnVmZmVyQXR0YWNobWVudCgpOwogCiAgICAgLy8g
QSBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IHBvaW50cyB0byBvbmUgb2YgdGhyZWUgdHlwZXMgb2Yg
cmVzb3VyY2VzOiBSZW5kZXJidWZmZXJzLApAQCAtODMsNiArNzEsNyBAQAogICAgIGNsYXNzIFRh
cmdldAogICAgIHsKICAgICAgIHB1YmxpYzoKKyAgICAgICAgVGFyZ2V0KCk7CiAgICAgICAgIFRh
cmdldChHTGVudW0gYmluZGluZywgY29uc3QgSW1hZ2VJbmRleCAmaW1hZ2VJbmRleCk7CiAgICAg
ICAgIFRhcmdldChjb25zdCBUYXJnZXQgJm90aGVyKTsKICAgICAgICAgVGFyZ2V0ICZvcGVyYXRv
cj0oY29uc3QgVGFyZ2V0ICZvdGhlcik7CkBAIC0xMTUsNyArMTA0LDcgQEAKICAgICBib29sIGlz
UmVuZGVyYnVmZmVyV2l0aElkKEdMdWludCByZW5kZXJidWZmZXJJZCkgY29uc3QgeyByZXR1cm4g
bVR5cGUgPT0gR0xfUkVOREVSQlVGRkVSICYmIGlkKCkgPT0gcmVuZGVyYnVmZmVySWQ7IH0KIAog
ICAgIEdMZW51bSBnZXRCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbVRhcmdldC5iaW5kaW5nKCk7
IH0KLSAgICBHTHVpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtUmVzb3VyY2UuaWQoKTsgfQorICAg
IEdMdWludCBpZCgpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgb25seSBsZWdh
bCB0byBjYWxsIG9uIFRleHR1cmUgYXR0YWNobWVudHMKICAgICBjb25zdCBJbWFnZUluZGV4ICZn
ZXRUZXh0dXJlSW1hZ2VJbmRleCgpIGNvbnN0OwpAQCAtMTIzLDggKzExMiwxMCBAQAogICAgIEdM
aW50IG1pcExldmVsKCkgY29uc3Q7CiAgICAgR0xpbnQgbGF5ZXIoKSBjb25zdDsKIAotICAgIEdM
c2l6ZWkgZ2V0V2lkdGgoKSBjb25zdDsKLSAgICBHTHNpemVpIGdldEhlaWdodCgpIGNvbnN0Owor
ICAgIC8vIFRoZSBzaXplIG9mIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlIHRoZSBhdHRhY2htZW50
IHBvaW50cyB0by4gVGhlICdkZXB0aCcgdmFsdWUgd2lsbAorICAgIC8vIGNvcnJlc3BvbmQgdG8g
YSAzRCB0ZXh0dXJlIGRlcHRoIG9yIHRoZSBsYXllciBjb3VudCBvZiBhIDJEIGFycmF5IHRleHR1
cmUuIEZvciBTdXJmYWNlcyBhbmQKKyAgICAvLyBSZW5kZXJidWZmZXJzLCBpdCB3aWxsIGFsd2F5
cyBiZSAxLgorICAgIEV4dGVudHMgZ2V0U2l6ZSgpIGNvbnN0OwogICAgIEdMZW51bSBnZXRJbnRl
cm5hbEZvcm1hdCgpIGNvbnN0OwogICAgIEdMc2l6ZWkgZ2V0U2FtcGxlcygpIGNvbnN0OwogICAg
IEdMZW51bSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbVR5cGU7IH0KQEAgLTE1MCwyMCArMTQxLDI0
IEBACiAKICAgICBHTGVudW0gbVR5cGU7CiAgICAgVGFyZ2V0IG1UYXJnZXQ7Ci0gICAgQmluZGlu
Z1BvaW50ZXI8RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0PiBtUmVzb3VyY2U7CisgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICptUmVzb3VyY2U7CiB9OwogCiAvLyBBIGJhc2UgY2xh
c3MgZm9yIG9iamVjdHMgdGhhdCBGQk8gQXR0YWNobWVudHMgbWF5IHBvaW50IHRvLgotY2xhc3Mg
RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0IDogcHVibGljIFJlZkNvdW50T2JqZWN0CitjbGFz
cyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QKIHsKICAgcHVibGljOgotICAgIEZyYW1lYnVm
ZmVyQXR0YWNobWVudE9iamVjdChHTHVpbnQgaWQpIDogUmVmQ291bnRPYmplY3QoaWQpIHt9Cisg
ICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0KCkge30KKyAgICB2aXJ0dWFsIH5GcmFtZWJ1
ZmZlckF0dGFjaG1lbnRPYmplY3QoKSB7fQogCi0gICAgdmlydHVhbCBHTHNpemVpIGdldEF0dGFj
aG1lbnRXaWR0aChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBHTHNpemVpIGdldEF0dGFjaG1lbnRIZWlnaHQoY29uc3Qg
RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgRXh0ZW50cyBnZXRBdHRhY2htZW50U2l6ZShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBHTGVudW0gZ2V0QXR0
YWNobWVudEludGVybmFsRm9ybWF0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0
ICZ0YXJnZXQpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0QXR0YWNobWVudFNh
bXBsZXMoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIG9uQXR0YWNoKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBvbkRldGFjaCgpID0gMDsKKyAgICB2aXJ0dWFsIEdMdWludCBnZXRJZCgpIGNvbnN0ID0gMDsK
KwogICAgIEVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgY29u
c3Q7CiAKQEAgLTE3MSwxNiArMTY2LDExIEBACiAgICAgdmlydHVhbCByeDo6RnJhbWVidWZmZXJB
dHRhY2htZW50T2JqZWN0SW1wbCAqZ2V0QXR0YWNobWVudEltcGwoKSBjb25zdCA9IDA7CiB9Owog
Ci1pbmxpbmUgR0xzaXplaSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFdpZHRoKCkgY29uc3QK
K2lubGluZSBFeHRlbnRzIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0U2l6ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0QXR0YWNobWVudFdpZHRoKG1UYXJnZXQpOworICAg
IHJldHVybiBtUmVzb3VyY2UtPmdldEF0dGFjaG1lbnRTaXplKG1UYXJnZXQpOwogfQogCi1pbmxp
bmUgR0xzaXplaSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldEhlaWdodCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0QXR0YWNobWVudEhlaWdodChtVGFyZ2V0KTsKLX0KLQog
aW5saW5lIEdMZW51bSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldEludGVybmFsRm9ybWF0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbVJlc291cmNlLT5nZXRBdHRhY2htZW50SW50ZXJuYWxGb3Jt
YXQobVRhcmdldCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
SGFuZGxlQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvSGFuZGxlQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwLDEzICsyMCwxMyBAQAogewogICAgIGJvb2wgb3BlcmF0b3Io
KShjb25zdCBIYW5kbGVSYW5nZSAmcmFuZ2UsIEdMdWludCBoYW5kbGUpIGNvbnN0CiAgICAgewot
ICAgICAgICByZXR1cm4gKGhhbmRsZSA8IHJhbmdlLmJlZ2luKTsKKyAgICAgICAgcmV0dXJuIChy
YW5nZS5lbmQgPCBoYW5kbGUpOwogICAgIH0KIH07CiAKIEhhbmRsZUFsbG9jYXRvcjo6SGFuZGxl
QWxsb2NhdG9yKCkgOiBtQmFzZVZhbHVlKDEpLCBtTmV4dFZhbHVlKDEpCiB7Ci0gICAgbVVuYWxs
b2NhdGVkTGlzdC5wdXNoX2JhY2soSGFuZGxlUmFuZ2UoMSwgc3RkOjpudW1lcmljX2xpbWl0czxH
THVpbnQ+OjptYXgoKSAtIDEpKTsKKyAgICBtVW5hbGxvY2F0ZWRMaXN0LnB1c2hfYmFjayhIYW5k
bGVSYW5nZSgxLCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpKSk7CiB9CiAKIEhh
bmRsZUFsbG9jYXRvcjo6SGFuZGxlQWxsb2NhdG9yKEdMdWludCBtYXhpbXVtSGFuZGxlVmFsdWUp
IDogbUJhc2VWYWx1ZSgxKSwgbU5leHRWYWx1ZSgxKQpAQCAtMTIwLDE0ICsxMjAsMTUgQEAKICAg
ICAvLyBuZWVkIHRvIHNwbGl0IHRoZSByYW5nZQogICAgIGF1dG8gcGxhY2VtZW50SXQgPSBtVW5h
bGxvY2F0ZWRMaXN0LmVyYXNlKGJvdW5kSXQpOwogCi0gICAgaWYgKGJlZ2luICE9IGhhbmRsZSkK
KyAgICBpZiAoaGFuZGxlICsgMSAhPSBlbmQpCiAgICAgewotICAgICAgICBwbGFjZW1lbnRJdCA9
IG1VbmFsbG9jYXRlZExpc3QuaW5zZXJ0KHBsYWNlbWVudEl0LCBIYW5kbGVSYW5nZShiZWdpbiwg
aGFuZGxlKSk7CisgICAgICAgIHBsYWNlbWVudEl0ID0gbVVuYWxsb2NhdGVkTGlzdC5pbnNlcnQo
cGxhY2VtZW50SXQsIEhhbmRsZVJhbmdlKGhhbmRsZSArIDEsIGVuZCkpOwogICAgIH0KLSAgICBp
ZiAoaGFuZGxlICsgMSAhPSBlbmQpCisgICAgaWYgKGJlZ2luICE9IGhhbmRsZSkKICAgICB7Ci0g
ICAgICAgIG1VbmFsbG9jYXRlZExpc3QuaW5zZXJ0KHBsYWNlbWVudEl0LCBIYW5kbGVSYW5nZSho
YW5kbGUgKyAxLCBlbmQpKTsKKyAgICAgICAgQVNTRVJUKGJlZ2luIDwgaGFuZGxlKTsKKyAgICAg
ICAgbVVuYWxsb2NhdGVkTGlzdC5pbnNlcnQocGxhY2VtZW50SXQsIEhhbmRsZVJhbmdlKGJlZ2lu
LCBoYW5kbGUpKTsKICAgICB9CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbApJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxv
Y2F0b3IuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw2
IEBACiAgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtUmVsZWFzZWRMaXN0OwogfTsKIAotfQorfSAg
Ly8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAgIC8vIExJQkFOR0xFX0hBTkRMRUFMTE9DQVRPUl9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9j
YXRvcl91bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvcl91bml0dGVzdC5jcHAJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0
b3JfdW5pdHRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw0ICs5MCwzNyBAQAogICAgIEVY
UEVDVF9FUShmaW5hbFJlc3VsdCwgMSk7CiB9CiAKKy8vIFRoZSBmb2xsb3dpbmcgdGVzdCBjb3Zl
cnMgcmVzZXJ2aW5nIGEgaGFuZGxlIHdpdGggbWF4IHVpbnQgdmFsdWUuCisvLyBTZWUgaHR0cDov
L2FuZ2xlYnVnLmNvbS8xMDUyCitURVNUKEhhbmRsZUFsbG9jYXRvclRlc3QsIFJlc2VydmVNYXhV
aW50SGFuZGxlKQoreworICAgIGdsOjpIYW5kbGVBbGxvY2F0b3IgYWxsb2NhdG9yOworCisgICAg
R0x1aW50IG1heFVpbnRIYW5kbGUgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgp
OworICAgIGFsbG9jYXRvci5yZXNlcnZlKG1heFVpbnRIYW5kbGUpOworCisgICAgR0x1aW50IG5v
cm1hbEhhbmRsZSA9IGFsbG9jYXRvci5hbGxvY2F0ZSgpOworICAgIEVYUEVDVF9FUSgxdSwgbm9y
bWFsSGFuZGxlKTsKIH0KKworLy8gVG8gdGVzdCBpZiB0aGUgYWxsb2NhdG9yIGtlZXAgdGhlIGhh
bmRsZSBpbiBhIHNvcnRlZCBvcmRlci4KK1RFU1QoSGFuZGxlQWxsb2NhdG9yVGVzdCwgU29ydGVk
T3JkZXJIYW5kbGUpCit7CisgICAgZ2w6OkhhbmRsZUFsbG9jYXRvciBhbGxvY2F0b3I7CisKKyAg
ICBhbGxvY2F0b3IucmVzZXJ2ZSgzKTsKKworICAgIEdMdWludCBhbGxvY2F0ZWRMaXN0WzVdOwor
ICAgIGZvciAoR0x1aW50IGNvdW50ID0gMDsgY291bnQgPCA1OyBjb3VudCsrKQorICAgIHsKKyAg
ICAgICAgYWxsb2NhdGVkTGlzdFtjb3VudF0gPSBhbGxvY2F0b3IuYWxsb2NhdGUoKTsKKyAgICB9
CisKKyAgICBFWFBFQ1RfRVEoMXUsIGFsbG9jYXRlZExpc3RbMF0pOworICAgIEVYUEVDVF9FUSgy
dSwgYWxsb2NhdGVkTGlzdFsxXSk7CisgICAgRVhQRUNUX0VRKDR1LCBhbGxvY2F0ZWRMaXN0WzJd
KTsKKyAgICBFWFBFQ1RfRVEoNXUsIGFsbG9jYXRlZExpc3RbM10pOworICAgIEVYUEVDVF9FUSg2
dSwgYWxsb2NhdGVkTGlzdFs0XSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxOTIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbWFnZS5jcHA6IEltcGxlbWVudHMg
dGhlIGVnbDo6SW1hZ2UgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBFR0xpbWFnZSBvYmplY3QuCisK
KyNpbmNsdWRlICJsaWJBTkdMRS9JbWFnZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xl
dHlwZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBs
LmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK0ltYWdlU2libGluZzo6SW1hZ2VTaWJsaW5nKEdMdWlu
dCBpZCkgOiBSZWZDb3VudE9iamVjdChpZCksIG1Tb3VyY2VzT2YoKSwgbVRhcmdldE9mKCkKK3sK
K30KKworSW1hZ2VTaWJsaW5nOjp+SW1hZ2VTaWJsaW5nKCkKK3sKKyAgICAvLyBFR0wgaW1hZ2Vz
IHNob3VsZCBob2xkIGEgcmVmIHRvIHRoZWlyIHRhcmdldHMgYW5kIHNpYmxpbmdzLCBhIFRleHR1
cmUgc2hvdWxkIG5vdCBiZSBkZWxldGFibGUKKyAgICAvLyB3aGlsZSBpdCBpcyBhdHRhY2hlZCB0
byBhbiBFR0wgaW1hZ2UuCisgICAgQVNTRVJUKG1Tb3VyY2VzT2YuZW1wdHkoKSk7CisgICAgb3Jw
aGFuSW1hZ2VzKCk7Cit9CisKK3ZvaWQgSW1hZ2VTaWJsaW5nOjpzZXRUYXJnZXRJbWFnZShlZ2w6
OkltYWdlICppbWFnZVRhcmdldCkKK3sKKyAgICBBU1NFUlQoaW1hZ2VUYXJnZXQgIT0gbnVsbHB0
cik7CisgICAgbVRhcmdldE9mLnNldChpbWFnZVRhcmdldCk7CisgICAgaW1hZ2VUYXJnZXQtPmFk
ZFRhcmdldFNpYmxpbmcodGhpcyk7Cit9CisKK2dsOjpFcnJvciBJbWFnZVNpYmxpbmc6Om9ycGhh
bkltYWdlcygpCit7CisgICAgaWYgKG1UYXJnZXRPZi5nZXQoKSAhPSBudWxscHRyKQorICAgIHsK
KyAgICAgICAgLy8gQ2FuJ3QgYmUgYSB0YXJnZXQgYW5kIGhhdmUgc291cmNlcy4KKyAgICAgICAg
QVNTRVJUKG1Tb3VyY2VzT2YuZW1wdHkoKSk7CisKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0g
bVRhcmdldE9mLT5vcnBoYW5TaWJsaW5nKHRoaXMpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKwor
ICAgICAgICBtVGFyZ2V0T2Yuc2V0KG51bGxwdHIpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBmb3IgKGF1dG8gJnNvdXJjZUltYWdlIDogbVNvdXJjZXNPZikKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gc291cmNlSW1hZ2UtPm9ycGhhblNpYmxpbmco
dGhpcyk7CisgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBtU291cmNlc09mLmNsZWFyKCk7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7Cit9CisKK3ZvaWQgSW1hZ2VTaWJsaW5nOjphZGRJbWFnZVNvdXJjZShl
Z2w6OkltYWdlICppbWFnZVNvdXJjZSkKK3sKKyAgICBBU1NFUlQoaW1hZ2VTb3VyY2UgIT0gbnVs
bHB0cik7CisgICAgbVNvdXJjZXNPZi5pbnNlcnQoaW1hZ2VTb3VyY2UpOworfQorCit2b2lkIElt
YWdlU2libGluZzo6cmVtb3ZlSW1hZ2VTb3VyY2UoZWdsOjpJbWFnZSAqaW1hZ2VTb3VyY2UpCit7
CisgICAgQVNTRVJUKG1Tb3VyY2VzT2YuZmluZChpbWFnZVNvdXJjZSkgIT0gbVNvdXJjZXNPZi5l
bmQoKSk7CisgICAgbVNvdXJjZXNPZi5lcmFzZShpbWFnZVNvdXJjZSk7Cit9CisKK0ltYWdlOjpJ
bWFnZShyeDo6SW1hZ2VJbXBsICppbXBsLCBFR0xlbnVtIHRhcmdldCwgSW1hZ2VTaWJsaW5nICpi
dWZmZXIsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IFJlZkNvdW50T2JqZWN0
KDApLAorICAgICAgbUltcGxlbWVudGF0aW9uKGltcGwpLAorICAgICAgbUludGVybmFsRm9ybWF0
KEdMX05PTkUpLAorICAgICAgbVdpZHRoKDApLAorICAgICAgbUhlaWdodCgwKSwKKyAgICAgIG1T
YW1wbGVzKDApLAorICAgICAgbVNvdXJjZSgpLAorICAgICAgbVRhcmdldHMoKQoreworICAgIEFT
U0VSVChtSW1wbGVtZW50YXRpb24gIT0gbnVsbHB0cik7CisgICAgQVNTRVJUKGJ1ZmZlciAhPSBu
dWxscHRyKTsKKworICAgIG1Tb3VyY2Uuc2V0KGJ1ZmZlcik7CisgICAgbVNvdXJjZS0+YWRkSW1h
Z2VTb3VyY2UodGhpcyk7CisKKyAgICBpZiAoSXNUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAg
eworICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IHJ4OjpHZXRBczxnbDo6VGV4dHVyZT4o
bVNvdXJjZS5nZXQoKSk7CisgICAgICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZWdsX2dsOjpF
R0xJbWFnZVRhcmdldFRvR0xUZXh0dXJlVGFyZ2V0KHRhcmdldCk7CisgICAgICAgIHNpemVfdCBs
ZXZlbCAgICAgICAgID0gYXR0cmlicy5nZXQoRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCAwKTsK
KyAgICAgICAgbUludGVybmFsRm9ybWF0ICAgICAgPSB0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1h
dCh0ZXh0dXJlVGFyZ2V0LCBsZXZlbCk7CisgICAgICAgIG1XaWR0aCAgICAgICAgICAgICAgID0g
dGV4dHVyZS0+Z2V0V2lkdGgodGV4dHVyZVRhcmdldCwgbGV2ZWwpOworICAgICAgICBtSGVpZ2h0
ICAgICAgICAgICAgICA9IHRleHR1cmUtPmdldEhlaWdodCh0ZXh0dXJlVGFyZ2V0LCBsZXZlbCk7
CisgICAgICAgIG1TYW1wbGVzICAgICAgICAgICAgID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAo
SXNSZW5kZXJidWZmZXJUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGdsOjpSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlciA9IHJ4OjpHZXRBczxnbDo6UmVuZGVyYnVmZmVyPihtU291cmNl
LmdldCgpKTsKKyAgICAgICAgbUludGVybmFsRm9ybWF0ICAgICAgICAgICAgICAgID0gcmVuZGVy
YnVmZmVyLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgICAgICBtV2lkdGggICAgICAgICAgICAg
ICAgICAgICAgICAgPSByZW5kZXJidWZmZXItPmdldFdpZHRoKCk7CisgICAgICAgIG1IZWlnaHQg
ICAgICAgICAgICAgICAgICAgICAgICA9IHJlbmRlcmJ1ZmZlci0+Z2V0SGVpZ2h0KCk7CisgICAg
ICAgIG1TYW1wbGVzICAgICAgICAgICAgICAgICAgICAgICA9IHJlbmRlcmJ1ZmZlci0+Z2V0U2Ft
cGxlcygpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KK30KKworSW1hZ2U6On5JbWFnZSgpCit7CisgICAgU2FmZURlbGV0ZShtSW1wbGVtZW50
YXRpb24pOworCisgICAgLy8gQWxsIHRhcmdldHMgc2hvdWxkIGhvbGQgYSByZWYgdG8gdGhlIGVn
bCBpbWFnZSBhbmQgaXQgc2hvdWxkIG5vdCBiZSBkZWxldGVkIHVudGlsIHRoZXJlIGFyZQorICAg
IC8vIG5vIHNpYmxpbmdzIGxlZnQuCisgICAgQVNTRVJUKG1UYXJnZXRzLmVtcHR5KCkpOworCisg
ICAgLy8gVGVsbCB0aGUgc291cmNlIHRoYXQgaXQgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgdGhpcyBp
bWFnZQorICAgIGlmIChtU291cmNlLmdldCgpICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBt
U291cmNlLT5yZW1vdmVJbWFnZVNvdXJjZSh0aGlzKTsKKyAgICAgICAgbVNvdXJjZS5zZXQobnVs
bHB0cik7CisgICAgfQorfQorCit2b2lkIEltYWdlOjphZGRUYXJnZXRTaWJsaW5nKEltYWdlU2li
bGluZyAqc2libGluZykKK3sKKyAgICBtVGFyZ2V0cy5pbnNlcnQoc2libGluZyk7Cit9CisKK2ds
OjpFcnJvciBJbWFnZTo6b3JwaGFuU2libGluZyhJbWFnZVNpYmxpbmcgKnNpYmxpbmcpCit7Cisg
ICAgLy8gbm90aWZ5IGltcGwKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBtSW1wbGVtZW50YXRpb24t
Pm9ycGhhbihzaWJsaW5nKTsKKworICAgIGlmIChtU291cmNlLmdldCgpID09IHNpYmxpbmcpCisg
ICAgeworICAgICAgICAvLyBJZiB0aGUgc2libGluZyBpcyB0aGUgc291cmNlLCBpdCBjYW5ub3Qg
YmUgYSB0YXJnZXQuCisgICAgICAgIEFTU0VSVChtVGFyZ2V0cy5maW5kKHNpYmxpbmcpID09IG1U
YXJnZXRzLmVuZCgpKTsKKworICAgICAgICBtU291cmNlLnNldChudWxscHRyKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgbVRhcmdldHMuZXJhc2Uoc2libGluZyk7CisgICAgfQor
CisgICAgcmV0dXJuIGVycm9yOworfQorCitHTGVudW0gSW1hZ2U6OmdldEludGVybmFsRm9ybWF0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUludGVybmFsRm9ybWF0OworfQorCitzaXplX3QgSW1h
Z2U6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpZHRoOworfQorCitzaXplX3Qg
SW1hZ2U6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1IZWlnaHQ7Cit9CisKK3Np
emVfdCBJbWFnZTo6Z2V0U2FtcGxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVzOwor
fQorCityeDo6SW1hZ2VJbXBsICpJbWFnZTo6Z2V0SW1wbGVtZW50YXRpb24oKQoreworICAgIHJl
dHVybiBtSW1wbGVtZW50YXRpb247Cit9CisKK2NvbnN0IHJ4OjpJbWFnZUltcGwgKkltYWdlOjpn
ZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbjsK
K30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFn
ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5MSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIEltYWdlLmg6IERlZmluZXMgdGhlIGVnbDo6SW1hZ2UgY2xhc3MgcmVwcmVzZW50aW5nIHRo
ZSBFR0xpbWFnZSBvYmplY3QuCisKKyNpZm5kZWYgTElCQU5HTEVfSU1BR0VfSF8KKyNkZWZpbmUg
TElCQU5HTEVfSU1BR0VfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvQXR0cmlidXRlTWFwLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRXJyb3Iu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgorCisjaW5jbHVkZSA8c2V0
PgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEltYWdlSW1wbDsKK30KKworbmFtZXNwYWNlIGVn
bAoreworY2xhc3MgSW1hZ2U7CisKK2NsYXNzIEltYWdlU2libGluZyA6IHB1YmxpYyBSZWZDb3Vu
dE9iamVjdAoreworICBwdWJsaWM6CisgICAgSW1hZ2VTaWJsaW5nKEdMdWludCBpZCk7CisgICAg
dmlydHVhbCB+SW1hZ2VTaWJsaW5nKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIC8vIFNldCB0aGUg
aW1hZ2UgdGFyZ2V0IG9mIHRoaXMgc2libGluZworICAgIHZvaWQgc2V0VGFyZ2V0SW1hZ2UoZWds
OjpJbWFnZSAqaW1hZ2VUYXJnZXQpOworCisgICAgLy8gT3JwaGFuIGFsbCBFR0wgaW1hZ2Ugc291
cmNlcyBhbmQgdGFyZ2V0cworICAgIGdsOjpFcnJvciBvcnBoYW5JbWFnZXMoKTsKKworICBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbWFnZTsKKworICAgIC8vIENhbGxlZCBmcm9tIEltYWdl
IG9ubHkgdG8gYWRkIGEgbmV3IHNvdXJjZSBpbWFnZQorICAgIHZvaWQgYWRkSW1hZ2VTb3VyY2Uo
ZWdsOjpJbWFnZSAqaW1hZ2VTb3VyY2UpOworCisgICAgLy8gQ2FsbGVkIGZyb20gSW1hZ2Ugb25s
eSB0byByZW1vdmUgYSBzb3VyY2UgaW1hZ2Ugd2hlbiB0aGUgSW1hZ2UgaXMgYmVpbmcgZGVsZXRl
ZAorICAgIHZvaWQgcmVtb3ZlSW1hZ2VTb3VyY2UoZWdsOjpJbWFnZSAqaW1hZ2VTb3VyY2UpOwor
CisgICAgc3RkOjpzZXQ8SW1hZ2UgKj4gbVNvdXJjZXNPZjsKKyAgICBCaW5kaW5nUG9pbnRlcjxJ
bWFnZT4gbVRhcmdldE9mOworfTsKKworY2xhc3MgSW1hZ2UgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRPYmplY3QKK3sKKyAgcHVibGljOgorICAgIEltYWdlKHJ4OjpJbWFnZUltcGwgKmltcGwsIEVH
TGVudW0gdGFyZ2V0LCBJbWFnZVNpYmxpbmcgKmJ1ZmZlciwgY29uc3QgQXR0cmlidXRlTWFwICZh
dHRyaWJzKTsKKyAgICB+SW1hZ2UoKTsKKworICAgIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdCgp
IGNvbnN0OworICAgIHNpemVfdCBnZXRXaWR0aCgpIGNvbnN0OworICAgIHNpemVfdCBnZXRIZWln
aHQoKSBjb25zdDsKKyAgICBzaXplX3QgZ2V0U2FtcGxlcygpIGNvbnN0OworCisgICAgcng6Oklt
YWdlSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKTsKKyAgICBjb25zdCByeDo6SW1hZ2VJbXBsICpn
ZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IEltYWdlU2libGluZzsKKworICAgIC8vIENhbGxlZCBmcm9tIEltYWdlU2libGluZyBvbmx5IG5v
dGlmeSB0aGUgaW1hZ2UgdGhhdCBhIG5ldyB0YXJnZXQgc2libGluZyBleGlzdHMgZm9yIHN0YXRl
CisgICAgLy8gdHJhY2tpbmcuCisgICAgdm9pZCBhZGRUYXJnZXRTaWJsaW5nKEltYWdlU2libGlu
ZyAqc2libGluZyk7CisKKyAgICAvLyBDYWxsZWQgZnJvbSBJbWFnZVNpYmxpbmcgb25seSB0byBu
b3RpZnkgdGhlIGltYWdlIHRoYXQgYSBzaWJsaW5nIChzb3VyY2Ugb3IgdGFyZ2V0KSBoYXMKKyAg
ICAvLyBiZWVuIHJlc3BlY2lmaWVkIGFuZCBzdGF0ZSB0cmFja2luZyBzaG91bGQgYmUgdXBkYXRl
ZC4KKyAgICBnbDo6RXJyb3Igb3JwaGFuU2libGluZyhJbWFnZVNpYmxpbmcgKnNpYmxpbmcpOwor
CisgICAgcng6OkltYWdlSW1wbCAqbUltcGxlbWVudGF0aW9uOworCisgICAgR0xlbnVtIG1JbnRl
cm5hbEZvcm1hdDsKKyAgICBzaXplX3QgbVdpZHRoOworICAgIHNpemVfdCBtSGVpZ2h0OworICAg
IHNpemVfdCBtU2FtcGxlczsKKworICAgIEJpbmRpbmdQb2ludGVyPEltYWdlU2libGluZz4gbVNv
dXJjZTsKKyAgICBzdGQ6OnNldDxJbWFnZVNpYmxpbmcgKj4gbVRhcmdldHM7Cit9OworfQorCisj
ZW5kaWYgIC8vIExJQkFOR0xFX0lNQUdFX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDggQEAKIEltYWdlSW5kZXggSW1hZ2VJbmRleDo6
TWFrZUN1YmUoR0xlbnVtIHRhcmdldCwgR0xpbnQgbWlwSW5kZXgpCiB7CiAgICAgQVNTRVJUKGds
OjpJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpOwotICAgIHJldHVybiBJbWFnZUluZGV4
KHRhcmdldCwgbWlwSW5kZXgsIHN0YXRpY19jYXN0PGludD4oQ3ViZU1hcFRleHR1cmVUYXJnZXRU
b0xheWVySW5kZXgodGFyZ2V0KSkpOworICAgIHJldHVybiBJbWFnZUluZGV4KHRhcmdldCwgbWlw
SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xpbnQ+KEN1YmVNYXBU
ZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4KHRhcmdldCkpKTsKIH0KIAogSW1hZ2VJbmRleCBJbWFn
ZUluZGV4OjpNYWtlMkRBcnJheShHTGludCBtaXBJbmRleCwgR0xpbnQgbGF5ZXJJbmRleCkKQEAg
LTUwLDcgKzUxLDkgQEAKIAogSW1hZ2VJbmRleCBJbWFnZUluZGV4OjpNYWtlR2VuZXJpYyhHTGVu
dW0gdGFyZ2V0LCBHTGludCBtaXBJbmRleCkKIHsKLSAgICBHTGludCBsYXllckluZGV4ID0gSXND
dWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gc3RhdGljX2Nhc3Q8R0xpbnQ+KEN1YmVNYXBU
ZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4KHRhcmdldCkpIDogRU5USVJFX0xFVkVMOworICAgIEdM
aW50IGxheWVySW5kZXggPSBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8R0xpbnQ+KEN1YmVNYXBUZXh0dXJlVGFy
Z2V0VG9MYXllckluZGV4KHRhcmdldCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEVO
VElSRV9MRVZFTDsKICAgICByZXR1cm4gSW1hZ2VJbmRleCh0YXJnZXQsIG1pcEluZGV4LCBsYXll
ckluZGV4KTsKIH0KIApAQCAtODMsMzAgKzg2LDMwIEBACiAKIEltYWdlSW5kZXhJdGVyYXRvciBJ
bWFnZUluZGV4SXRlcmF0b3I6Ok1ha2UyRChHTGludCBtaW5NaXAsIEdMaW50IG1heE1pcCkKIHsK
LSAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfMkQsIHJ4OjpSYW5nZTxH
TGludD4obWluTWlwLCBtYXhNaXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcng6
OlJhbmdlPEdMaW50PihJbWFnZUluZGV4OjpFTlRJUkVfTEVWRUwsIEltYWdlSW5kZXg6OkVOVElS
RV9MRVZFTCksIE5VTEwpOworICAgIHJldHVybiBJbWFnZUluZGV4SXRlcmF0b3IoR0xfVEVYVFVS
RV8yRCwgUmFuZ2U8R0xpbnQ+KG1pbk1pcCwgbWF4TWlwKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhbmdlPEdMaW50PihJbWFnZUluZGV4OjpFTlRJUkVfTEVWRUwsIEltYWdlSW5k
ZXg6OkVOVElSRV9MRVZFTCksIE5VTEwpOwogfQogCiBJbWFnZUluZGV4SXRlcmF0b3IgSW1hZ2VJ
bmRleEl0ZXJhdG9yOjpNYWtlQ3ViZShHTGludCBtaW5NaXAsIEdMaW50IG1heE1pcCkKIHsKLSAg
ICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIHJ4OjpSYW5n
ZTxHTGludD4obWluTWlwLCBtYXhNaXApLCByeDo6UmFuZ2U8R0xpbnQ+KDAsIDYpLCBOVUxMKTsK
KyAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIFJhbmdl
PEdMaW50PihtaW5NaXAsIG1heE1pcCksIFJhbmdlPEdMaW50PigwLCA2KSwgTlVMTCk7CiB9CiAK
IEltYWdlSW5kZXhJdGVyYXRvciBJbWFnZUluZGV4SXRlcmF0b3I6Ok1ha2UzRChHTGludCBtaW5N
aXAsIEdMaW50IG1heE1pcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBtaW5MYXllciwgR0xpbnQgbWF4TGF5ZXIpCiB7Ci0gICAgcmV0dXJuIElt
YWdlSW5kZXhJdGVyYXRvcihHTF9URVhUVVJFXzNELCByeDo6UmFuZ2U8R0xpbnQ+KG1pbk1pcCwg
bWF4TWlwKSwgcng6OlJhbmdlPEdMaW50PihtaW5MYXllciwgbWF4TGF5ZXIpLCBOVUxMKTsKKyAg
ICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfM0QsIFJhbmdlPEdMaW50Piht
aW5NaXAsIG1heE1pcCksIFJhbmdlPEdMaW50PihtaW5MYXllciwgbWF4TGF5ZXIpLCBOVUxMKTsK
IH0KIAogSW1hZ2VJbmRleEl0ZXJhdG9yIEltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTJEQXJyYXko
R0xpbnQgbWluTWlwLCBHTGludCBtYXhNaXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVpICpsYXllckNvdW50cykKIHsKLSAg
ICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfMkRfQVJSQVksIHJ4OjpSYW5n
ZTxHTGludD4obWluTWlwLCBtYXhNaXApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cng6OlJhbmdlPEdMaW50PigwLCBJTVBMRU1FTlRBVElPTl9NQVhfMkRfQVJSQVlfVEVYVFVSRV9M
QVlFUlMpLCBsYXllckNvdW50cyk7CisgICAgcmV0dXJuIEltYWdlSW5kZXhJdGVyYXRvcihHTF9U
RVhUVVJFXzJEX0FSUkFZLCBSYW5nZTxHTGludD4obWluTWlwLCBtYXhNaXApLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmFuZ2U8R0xpbnQ+KDAsIElNUExFTUVOVEFUSU9OX01BWF8y
RF9BUlJBWV9URVhUVVJFX0xBWUVSUyksIGxheWVyQ291bnRzKTsKIH0KIAotSW1hZ2VJbmRleEl0
ZXJhdG9yOjpJbWFnZUluZGV4SXRlcmF0b3IoR0xlbnVtIHR5cGUsIGNvbnN0IHJ4OjpSYW5nZTxH
TGludD4gJm1pcFJhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgcng6OlJhbmdlPEdMaW50PiAmbGF5ZXJSYW5nZSwgY29uc3QgR0xzaXplaSAqbGF5ZXJD
b3VudHMpCitJbWFnZUluZGV4SXRlcmF0b3I6OkltYWdlSW5kZXhJdGVyYXRvcihHTGVudW0gdHlw
ZSwgY29uc3QgUmFuZ2U8R0xpbnQ+ICZtaXBSYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFJhbmdlPEdMaW50PiAmbGF5ZXJSYW5nZSwgY29uc3QgR0xz
aXplaSAqbGF5ZXJDb3VudHMpCiAgICAgOiBtVHlwZSh0eXBlKSwKICAgICAgIG1NaXBSYW5nZSht
aXBSYW5nZSksCiAgICAgICBtTGF5ZXJSYW5nZShsYXllclJhbmdlKSwKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUluZGV4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguaAkocmV2aXNp
b24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdl
SW5kZXguaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTQgKzYxLDE0IEBACiAKICAgcHJpdmF0ZToK
IAotICAgIEltYWdlSW5kZXhJdGVyYXRvcihHTGVudW0gdHlwZSwgY29uc3Qgcng6OlJhbmdlPEdM
aW50PiAmbWlwUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJ4OjpSYW5nZTxH
TGludD4gJmxheWVyUmFuZ2UsIGNvbnN0IEdMc2l6ZWkgKmxheWVyQ291bnRzKTsKKyAgICBJbWFn
ZUluZGV4SXRlcmF0b3IoR0xlbnVtIHR5cGUsIGNvbnN0IFJhbmdlPEdMaW50PiAmbWlwUmFuZ2Us
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJhbmdlPEdMaW50PiAmbGF5ZXJSYW5nZSwg
Y29uc3QgR0xzaXplaSAqbGF5ZXJDb3VudHMpOwogCiAgICAgR0xpbnQgbWF4TGF5ZXIoKSBjb25z
dDsKIAogICAgIEdMZW51bSBtVHlwZTsKLSAgICByeDo6UmFuZ2U8R0xpbnQ+IG1NaXBSYW5nZTsK
LSAgICByeDo6UmFuZ2U8R0xpbnQ+IG1MYXllclJhbmdlOworICAgIFJhbmdlPEdMaW50PiBtTWlw
UmFuZ2U7CisgICAgUmFuZ2U8R0xpbnQ+IG1MYXllclJhbmdlOwogICAgIGNvbnN0IEdMc2l6ZWkg
Km1MYXllckNvdW50czsKICAgICBHTGludCBtQ3VycmVudE1pcDsKICAgICBHTGludCBtQ3VycmVu
dExheWVyOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdl
X3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvSW1hZ2VfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlX3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzMSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlX3VuaXR0ZXN0LmNw
cCA6IFVuaXR0ZXRzIG9mIHRoZSBJbWFnZSBhbmQgSW1hZ2VTaWJsaW5nIGNsYXNzZXMuCisKKyNp
bmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvSW1hZ2VJbXBsX21vY2suaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJl
SW1wbF9tb2NrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1w
bF9tb2NrLmgiCisKK3VzaW5nIDo6dGVzdGluZzo6XzsKK3VzaW5nIDo6dGVzdGluZzo6UmV0dXJu
OworCituYW1lc3BhY2UgYW5nbGUKK3sKKy8vIFZlcmlmeSByZWYgY291bnRzIGFyZSBtYWludGFp
bmVkIGJldHdlZW4gaW1hZ2VzIGFuZCB0aGVpciBzaWJsaW5ncyB3aGVuIG9iamVjdHMgYXJlIGRl
bGV0ZWQKK1RFU1QoSW1hZ2VUZXN0LCBSZWZDb3VudGluZykKK3sKKyAgICAvLyBDcmVhdGUgYSB0
ZXh0dXJlIGFuZCBhbiBFR0wgaW1hZ2UgdGhhdCB1c2VzIHRoZSB0ZXh0dXJlIGFzIGl0cyBzb3Vy
Y2UKKyAgICByeDo6TW9ja1RleHR1cmVJbXBsICp0ZXh0dXJlSW1wbCA9IG5ldyByeDo6TW9ja1Rl
eHR1cmVJbXBsKCk7CisgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBuZXcgZ2w6OlRleHR1cmUo
dGV4dHVyZUltcGwsIDEsIEdMX1RFWFRVUkVfMkQpOworICAgIHRleHR1cmUtPmFkZFJlZigpOwor
CisgICAgcng6Ok1vY2tJbWFnZUltcGwgKmltYWdlSW1wbCA9IG5ldyByeDo6TW9ja0ltYWdlSW1w
bCgpOworICAgIGVnbDo6SW1hZ2UgKmltYWdlID0gbmV3IGVnbDo6SW1hZ2UoaW1hZ2VJbXBsLCBF
R0xfR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgZWdsOjpBdHRyaWJ1dGVNYXAoKSk7CisgICAgaW1h
Z2UtPmFkZFJlZigpOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGltYWdlIGFkZGVkIGEgcmVm
IHRvIHRoZSB0ZXh0dXJlIGFuZCB0aGUgdGV4dHVyZSBoYXMgbm90IGFkZGVkIGEgcmVmIHRvIHRo
ZQorICAgIC8vIGltYWdlCisgICAgRVhQRUNUX0VRKHRleHR1cmUtPmdldFJlZkNvdW50KCksIDJ1
KTsKKyAgICBFWFBFQ1RfRVEoaW1hZ2UtPmdldFJlZkNvdW50KCksIDF1KTsKKworICAgIC8vIENy
ZWF0ZSBhIHJlbmRlcmJ1ZmZlciBhbmQgc2V0IGl0IGFzIGEgdGFyZ2V0IG9mIHRoZSBFR0wgaW1h
Z2UKKyAgICByeDo6TW9ja1JlbmRlcmJ1ZmZlckltcGwgKnJlbmRlcmJ1ZmZlckltcGwgPSBuZXcg
cng6Ok1vY2tSZW5kZXJidWZmZXJJbXBsKCk7CisgICAgZ2w6OlJlbmRlcmJ1ZmZlciAqcmVuZGVy
YnVmZmVyID0gbmV3IGdsOjpSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVySW1wbCwgMSk7CisgICAg
cmVuZGVyYnVmZmVyLT5hZGRSZWYoKTsKKworICAgIEVYUEVDVF9DQUxMKCpyZW5kZXJidWZmZXJJ
bXBsLCBzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoXykpCisgICAgICAgIC5XaWxsT25jZShSZXR1
cm4oZ2w6OkVycm9yKEdMX05PX0VSUk9SKSkpCisgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9u
KCk7CisgICAgcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoaW1hZ2UpOwor
CisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJlbmRlcmJ1ZmZlciBhZGRlZCBhIHJlZiB0byB0aGUg
aW1hZ2UgYW5kIHRoZSBpbWFnZSBkaWQgbm90IGFkZCBhIHJlZiB0bworICAgIC8vIHRoZSByZW5k
ZXJidWZmZXIKKyAgICBFWFBFQ1RfRVEodGV4dHVyZS0+Z2V0UmVmQ291bnQoKSwgMnUpOworICAg
IEVYUEVDVF9FUShpbWFnZS0+Z2V0UmVmQ291bnQoKSwgMnUpOworICAgIEVYUEVDVF9FUShyZW5k
ZXJidWZmZXItPmdldFJlZkNvdW50KCksIDF1KTsKKworICAgIC8vIFNpbXVsYXRlIGRlbGV0aW9u
IG9mIHRoZSB0ZXh0dXJlIGFuZCB2ZXJpZnkgdGhhdCBpdCBzdGlsbCBleGlzdHMgYmVjYXVzZSB0
aGUgaW1hZ2UgaG9sZHMgYQorICAgIC8vIHJlZgorICAgIHRleHR1cmUtPnJlbGVhc2UoKTsKKyAg
ICBFWFBFQ1RfRVEodGV4dHVyZS0+Z2V0UmVmQ291bnQoKSwgMXUpOworICAgIEVYUEVDVF9FUShp
bWFnZS0+Z2V0UmVmQ291bnQoKSwgMnUpOworICAgIEVYUEVDVF9FUShyZW5kZXJidWZmZXItPmdl
dFJlZkNvdW50KCksIDF1KTsKKworICAgIC8vIFNpbXVsYXRlIGRlbGV0aW9uIG9mIHRoZSBpbWFn
ZSBhbmQgdmVyaWZ5IHRoYXQgaXQgc3RpbGwgZXhpc3RzIGJlY2F1c2UgdGhlIHJlbmRlcmJ1ZmZl
ciBob2xkcworICAgIC8vIGEgcmVmCisgICAgaW1hZ2UtPnJlbGVhc2UoKTsKKyAgICBFWFBFQ1Rf
RVEodGV4dHVyZS0+Z2V0UmVmQ291bnQoKSwgMXUpOworICAgIEVYUEVDVF9FUShpbWFnZS0+Z2V0
UmVmQ291bnQoKSwgMXUpOworICAgIEVYUEVDVF9FUShyZW5kZXJidWZmZXItPmdldFJlZkNvdW50
KCksIDF1KTsKKworICAgIC8vIFNpbXVsYXRlIGRlbGV0aW9uIG9mIHRoZSByZW5kZXJidWZmZXIg
YW5kIHZlcmlmeSB0aGF0IHRoZSBkZWxldGlvbiBjYXNjYWRlcyB0byBhbGwgb2JqZWN0cworICAg
IEVYUEVDVF9DQUxMKCppbWFnZUltcGwsIGRlc3RydWN0b3IoKSkuVGltZXMoMSkuUmV0aXJlc09u
U2F0dXJhdGlvbigpOworICAgIEVYUEVDVF9DQUxMKCppbWFnZUltcGwsIG9ycGhhbihfKSkKKyAg
ICAgICAgLldpbGxPbmNlKFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJST1IpKSkKKyAgICAgICAg
LlJldGlyZXNPblNhdHVyYXRpb24oKTsKKworICAgIEVYUEVDVF9DQUxMKCp0ZXh0dXJlSW1wbCwg
ZGVzdHJ1Y3RvcigpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgRVhQRUNU
X0NBTEwoKnJlbmRlcmJ1ZmZlckltcGwsIGRlc3RydWN0b3IoKSkuVGltZXMoMSkuUmV0aXJlc09u
U2F0dXJhdGlvbigpOworCisgICAgcmVuZGVyYnVmZmVyLT5yZWxlYXNlKCk7Cit9CisKKy8vIFZl
cmlmeSB0aGF0IHJlc3BlY2lmaXlpbmcgdGV4dHVyZXMgcmVsZWFzZXMgcmVmZXJlbmNlcyB0byB0
aGUgSW1hZ2UuCitURVNUKEltYWdlVGVzdCwgUmVzcGVjaWZpY2F0aW9uUmVsZWFzZXNSZWZlcmVu
Y2VzKQoreworICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYW5kIGFuIEVHTCBpbWFnZSB0aGF0IHVz
ZXMgdGhlIHRleHR1cmUgYXMgaXRzIHNvdXJjZQorICAgIHJ4OjpNb2NrVGV4dHVyZUltcGwgKnRl
eHR1cmVJbXBsID0gbmV3IHJ4OjpNb2NrVGV4dHVyZUltcGwoKTsKKyAgICBnbDo6VGV4dHVyZSAq
dGV4dHVyZSA9IG5ldyBnbDo6VGV4dHVyZSh0ZXh0dXJlSW1wbCwgMSwgR0xfVEVYVFVSRV8yRCk7
CisgICAgdGV4dHVyZS0+YWRkUmVmKCk7CisKKyAgICBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSBkZWZh
dWx0VW5wYWNrU3RhdGU7CisKKyAgICBFWFBFQ1RfQ0FMTCgqdGV4dHVyZUltcGwsIHNldEltYWdl
KF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGdsOjpF
cnJvcihHTF9OT19FUlJPUikpKQorICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICAg
IHRleHR1cmUtPnNldEltYWdlKGRlZmF1bHRVbnBhY2tTdGF0ZSwgR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQTgsIGdsOjpFeHRlbnRzKDEsIDEsIDEpLCBHTF9SR0JBLAorICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworCisgICAgcng6Ok1vY2tJbWFnZUlt
cGwgKmltYWdlSW1wbCA9IG5ldyByeDo6TW9ja0ltYWdlSW1wbCgpOworICAgIGVnbDo6SW1hZ2Ug
KmltYWdlID0gbmV3IGVnbDo6SW1hZ2UoaW1hZ2VJbXBsLCBFR0xfR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZSwgZWdsOjpBdHRyaWJ1dGVNYXAoKSk7CisgICAgaW1hZ2UtPmFkZFJlZigpOworCisgICAg
Ly8gVmVyaWZ5IHRoYXQgdGhlIGltYWdlIGFkZGVkIGEgcmVmIHRvIHRoZSB0ZXh0dXJlIGFuZCB0
aGUgdGV4dHVyZSBoYXMgbm90IGFkZGVkIGEgcmVmIHRvIHRoZQorICAgIC8vIGltYWdlCisgICAg
RVhQRUNUX0VRKHRleHR1cmUtPmdldFJlZkNvdW50KCksIDJ1KTsKKyAgICBFWFBFQ1RfRVEoaW1h
Z2UtPmdldFJlZkNvdW50KCksIDF1KTsKKworICAgIC8vIFJlc3BlY2lmeSB0aGUgdGV4dHVyZSBh
bmQgdmVyaWZ5IHRoYXQgdGhlIGltYWdlIHJlbGVhc2VzIGl0cyByZWZlcmVuY2UKKyAgICBFWFBF
Q1RfQ0FMTCgqaW1hZ2VJbXBsLCBvcnBoYW4oXykpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4o
Z2w6OkVycm9yKEdMX05PX0VSUk9SKSkpCisgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7
CisgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRJbWFnZShfLCBfLCBfLCBfLCBfLCBf
LCBfLCBfKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
KSkKKyAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKworICAgIHRleHR1cmUtPnNldElt
YWdlKGRlZmF1bHRVbnBhY2tTdGF0ZSwgR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIGdsOjpF
eHRlbnRzKDEsIDEsIDEpLCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIG51bGxwdHIpOworCisgICAgRVhQRUNUX0VRKHRleHR1cmUtPmdldFJlZkNvdW50
KCksIDF1KTsKKyAgICBFWFBFQ1RfRVEoaW1hZ2UtPmdldFJlZkNvdW50KCksIDF1KTsKKworICAg
IC8vIERlbGV0ZSB0aGUgdGV4dHVyZSBhbmQgdmVyaWZ5IHRoYXQgdGhlIGltYWdlIHN0aWxsIGV4
aXN0cworICAgIEVYUEVDVF9DQUxMKCp0ZXh0dXJlSW1wbCwgZGVzdHJ1Y3RvcigpKS5UaW1lcygx
KS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgdGV4dHVyZS0+cmVsZWFzZSgpOworCisgICAg
RVhQRUNUX0VRKGltYWdlLT5nZXRSZWZDb3VudCgpLCAxdSk7CisKKyAgICAvLyBEZWxldGUgdGhl
IGltYWdlCisgICAgRVhQRUNUX0NBTEwoKmltYWdlSW1wbCwgZGVzdHJ1Y3RvcigpKS5UaW1lcygx
KS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgaW1hZ2UtPnJlbGVhc2UoKTsKK30KK30KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbmRleFJhbmdlQ2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9J
bmRleFJhbmdlQ2FjaGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleFJhbmdlQ2FjaGUuY3BwOiBEZWZp
bmVzIHRoZSBnbDo6SW5kZXhSYW5nZUNhY2hlIGNsYXNzIHdoaWNoIHN0b3JlcyBpbmZvcm1hdGlv
biBhYm91dAorLy8gcmFuZ2VzIG9mIGluZGljZXMuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9JbmRl
eFJhbmdlQ2FjaGUuaCIKKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisKK25hbWVzcGFjZSBnbAoreworCit2b2lkIEluZGV4UmFu
Z2VDYWNoZTo6YWRkUmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVS
ZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRl
eFJhbmdlICZyYW5nZSkKK3sKKyAgICBtSW5kZXhSYW5nZUNhY2hlW0luZGV4UmFuZ2VLZXkodHlw
ZSwgb2Zmc2V0LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQpXSA9IHJhbmdlOworfQor
Citib29sIEluZGV4UmFuZ2VDYWNoZTo6ZmluZFJhbmdlKEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluZGV4UmFuZ2UgKm91dFJhbmdlKSBjb25zdAoreworICAgIGF1dG8gaSA9IG1J
bmRleFJhbmdlQ2FjaGUuZmluZChJbmRleFJhbmdlS2V5KHR5cGUsIG9mZnNldCwgY291bnQsIHBy
aW1pdGl2ZVJlc3RhcnRFbmFibGVkKSk7CisgICAgaWYgKGkgIT0gbUluZGV4UmFuZ2VDYWNoZS5l
bmQoKSkKKyAgICB7CisgICAgICAgIGlmIChvdXRSYW5nZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgKm91dFJhbmdlID0gaS0+c2Vjb25kOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAob3V0UmFuZ2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgICpvdXRSYW5nZSA9IEluZGV4UmFuZ2UoKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit2b2lkIEluZGV4UmFuZ2VDYWNoZTo6aW52
YWxpZGF0ZVJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQoreworICAgIHNpemVfdCBp
bnZhbGlkYXRlU3RhcnQgPSBvZmZzZXQ7CisgICAgc2l6ZV90IGludmFsaWRhdGVFbmQgICA9IG9m
ZnNldCArIHNpemU7CisKKyAgICBhdXRvIGkgPSBtSW5kZXhSYW5nZUNhY2hlLmJlZ2luKCk7Cisg
ICAgd2hpbGUgKGkgIT0gbUluZGV4UmFuZ2VDYWNoZS5lbmQoKSkKKyAgICB7CisgICAgICAgIHNp
emVfdCByYW5nZVN0YXJ0ID0gaS0+Zmlyc3Qub2Zmc2V0OworICAgICAgICBzaXplX3QgcmFuZ2VF
bmQgICA9IGktPmZpcnN0Lm9mZnNldCArIChHZXRUeXBlSW5mbyhpLT5maXJzdC50eXBlKS5ieXRl
cyAqIGktPmZpcnN0LmNvdW50KTsKKworICAgICAgICBpZiAoaW52YWxpZGF0ZUVuZCA8IHJhbmdl
U3RhcnQgfHwgaW52YWxpZGF0ZVN0YXJ0ID4gcmFuZ2VFbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgICsraTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1JbmRleFJhbmdlQ2FjaGUuZXJhc2UoaSsrKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBJbmRleFJhbmdlQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBtSW5kZXhSYW5nZUNhY2hlLmNsZWFy
KCk7Cit9CisKK0luZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZUtleTo6SW5kZXhSYW5nZUtleSgp
CisgICAgOiBJbmRleFJhbmdlQ2FjaGU6OkluZGV4UmFuZ2VLZXkoR0xfTk9ORSwgMCwgMCwgZmFs
c2UpCit7Cit9CisKK0luZGV4UmFuZ2VDYWNoZTo6SW5kZXhSYW5nZUtleTo6SW5kZXhSYW5nZUtl
eShHTGVudW0gdHlwZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG9mZnNldF8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGNvdW50XywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkXykKKyAgICA6IHR5
cGUodHlwZV8pLCBvZmZzZXQob2Zmc2V0XyksIGNvdW50KGNvdW50XyksIHByaW1pdGl2ZVJlc3Rh
cnRFbmFibGVkKHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkXykKK3sKK30KKworYm9vbCBJbmRleFJh
bmdlQ2FjaGU6OkluZGV4UmFuZ2VLZXk6Om9wZXJhdG9yPChjb25zdCBJbmRleFJhbmdlS2V5ICZy
aHMpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUgIT0gcmhzLnR5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHlwZSA8IHJocy50eXBlOworICAgIH0KKyAgICBpZiAob2Zmc2V0ICE9IHJocy5vZmZz
ZXQpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0IDwgcmhzLm9mZnNldDsKKyAgICB9Cisg
ICAgaWYgKGNvdW50ICE9IHJocy5jb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBjb3VudCA8
IHJocy5jb3VudDsKKyAgICB9CisgICAgaWYgKHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkICE9IHJo
cy5wcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcmltaXRp
dmVSZXN0YXJ0RW5hYmxlZDsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW5kZXhSYW5nZUNhY2hlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0luZGV4
UmFuZ2VDYWNoZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBJbmRleFJhbmdlQ2FjaGUuaDogRGVmaW5lcyB0aGUgZ2w6
OkluZGV4UmFuZ2VDYWNoZSBjbGFzcyB3aGljaCBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQKKy8v
IHJhbmdlcyBvZiBpbmRpY2VzLgorCisjaWZuZGVmIExJQkFOR0xFX0lOREVYUkFOR0VDQUNIRV9I
XworI2RlZmluZSBMSUJBTkdMRV9JTkRFWFJBTkdFQ0FDSEVfSF8KKworI2luY2x1ZGUgImNvbW1v
bi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisKKyNpbmNsdWRl
ICJhbmdsZV9nbC5oIgorCisjaW5jbHVkZSA8bWFwPgorCituYW1lc3BhY2UgZ2wKK3sKKworY2xh
c3MgSW5kZXhSYW5nZUNhY2hlCit7CisgIHB1YmxpYzoKKyAgICB2b2lkIGFkZFJhbmdlKEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFy
dEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdlICZyYW5nZSk7Cisg
ICAgYm9vbCBmaW5kUmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICBJ
bmRleFJhbmdlICpvdXRSYW5nZSkgY29uc3Q7CisKKyAgICB2b2lkIGludmFsaWRhdGVSYW5nZShz
aXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSk7CisgICAgdm9pZCBjbGVhcigpOworCisgIHByaXZh
dGU6CisgICAgc3RydWN0IEluZGV4UmFuZ2VLZXkKKyAgICB7CisgICAgICAgIEluZGV4UmFuZ2VL
ZXkoKTsKKyAgICAgICAgSW5kZXhSYW5nZUtleShHTGVudW0gdHlwZSwgc2l6ZV90IG9mZnNldCwg
c2l6ZV90IGNvdW50LCBib29sIHByaW1pdGl2ZVJlc3RhcnQpOworCisgICAgICAgIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IEluZGV4UmFuZ2VLZXkgJnJocykgY29uc3Q7CisKKyAgICAgICAgR0xlbnVt
IHR5cGU7CisgICAgICAgIHNpemVfdCBvZmZzZXQ7CisgICAgICAgIHNpemVfdCBjb3VudDsKKyAg
ICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZDsKKyAgICB9OworCisgICAgdHlwZWRl
ZiBzdGQ6Om1hcDxJbmRleFJhbmdlS2V5LCBJbmRleFJhbmdlPiBJbmRleFJhbmdlTWFwOworICAg
IEluZGV4UmFuZ2VNYXAgbUluZGV4UmFuZ2VDYWNoZTsKK307CisKK30KKworI2VuZGlmIC8vIExJ
QkFOR0xFX0lOREVYUkFOR0VDQUNIRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1BsYXRmb3JtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNiwyMCArMTYsMjAgQEAKIH0KIAogLy8gc3RhdGljCi1BTkdMRV9FWFBPUlQg
YW5nbGU6OlBsYXRmb3JtICpBTkdMRVBsYXRmb3JtQ3VycmVudCgpCithbmdsZTo6UGxhdGZvcm0g
KkFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1DdXJyZW50KCkKIHsKICAgICByZXR1cm4gY3Vy
cmVudFBsYXRmb3JtOwogfQogCiAvLyBzdGF0aWMKLUFOR0xFX0VYUE9SVCB2b2lkIEFOR0xFUGxh
dGZvcm1Jbml0aWFsaXplKGFuZ2xlOjpQbGF0Zm9ybSAqcGxhdGZvcm1JbXBsKQordm9pZCBBTkdM
RV9BUElFTlRSWSBBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZShhbmdsZTo6UGxhdGZvcm0gKnBsYXRm
b3JtSW1wbCkKIHsKICAgICBBU1NFUlQocGxhdGZvcm1JbXBsICE9IG51bGxwdHIpOwogICAgIGN1
cnJlbnRQbGF0Zm9ybSA9IHBsYXRmb3JtSW1wbDsKIH0KIAogLy8gc3RhdGljCi1BTkdMRV9FWFBP
UlQgdm9pZCBBTkdMRVBsYXRmb3JtU2h1dGRvd24oKQordm9pZCBBTkdMRV9BUElFTlRSWSBBTkdM
RVBsYXRmb3JtU2h1dGRvd24oKQogewogICAgIGN1cnJlbnRQbGF0Zm9ybSA9IG51bGxwdHI7CiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dy
YW0uY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvUHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAKIAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5o
IgogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5o
IgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKQEAgLTIxLDMyICsyMiwxMjIgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9mZWF0dXJlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgiCiAKIG5hbWVzcGFjZSBnbAog
ewotY29uc3QgY2hhciAqIGNvbnN0IGdfZmFrZXBhdGggPSAiQzpcXGZha2VwYXRoIjsKIAogbmFt
ZXNwYWNlCiB7CiAKLXVuc2lnbmVkIGludCBQYXJzZUFuZFN0cmlwQXJyYXlJbmRleChzdGQ6OnN0
cmluZyogbmFtZSkKK3ZvaWQgV3JpdGVTaGFkZXJWYXIoQmluYXJ5T3V0cHV0U3RyZWFtICpzdHJl
YW0sIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKQogewotICAgIHVuc2lnbmVkIGludCBz
dWJzY3JpcHQgPSBHTF9JTlZBTElEX0lOREVYOworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLnR5
cGUpOworICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyLnByZWNpc2lvbik7CisgICAgc3RyZWFtLT53
cml0ZVN0cmluZyh2YXIubmFtZSk7CisgICAgc3RyZWFtLT53cml0ZVN0cmluZyh2YXIubWFwcGVk
TmFtZSk7CisgICAgc3RyZWFtLT53cml0ZUludCh2YXIuYXJyYXlTaXplKTsKKyAgICBzdHJlYW0t
PndyaXRlSW50KHZhci5zdGF0aWNVc2UpOworICAgIHN0cmVhbS0+d3JpdGVTdHJpbmcodmFyLnN0
cnVjdE5hbWUpOworICAgIEFTU0VSVCh2YXIuZmllbGRzLmVtcHR5KCkpOworfQogCi0gICAgLy8g
U3RyaXAgYW55IHRyYWlsaW5nIGFycmF5IG9wZXJhdG9yIGFuZCByZXRyaWV2ZSB0aGUgc3Vic2Ny
aXB0Ci0gICAgc2l6ZV90IG9wZW4gPSBuYW1lLT5maW5kX2xhc3Rfb2YoJ1snKTsKLSAgICBzaXpl
X3QgY2xvc2UgPSBuYW1lLT5maW5kX2xhc3Rfb2YoJ10nKTsKLSAgICBpZiAob3BlbiAhPSBzdGQ6
OnN0cmluZzo6bnBvcyAmJiBjbG9zZSA9PSBuYW1lLT5sZW5ndGgoKSAtIDEpCit2b2lkIExvYWRT
aGFkZXJWYXIoQmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSwgc2g6OlNoYWRlclZhcmlhYmxlICp2
YXIpCit7CisgICAgdmFyLT50eXBlICAgICAgID0gc3RyZWFtLT5yZWFkSW50PEdMZW51bT4oKTsK
KyAgICB2YXItPnByZWNpc2lvbiAgPSBzdHJlYW0tPnJlYWRJbnQ8R0xlbnVtPigpOworICAgIHZh
ci0+bmFtZSAgICAgICA9IHN0cmVhbS0+cmVhZFN0cmluZygpOworICAgIHZhci0+bWFwcGVkTmFt
ZSA9IHN0cmVhbS0+cmVhZFN0cmluZygpOworICAgIHZhci0+YXJyYXlTaXplICA9IHN0cmVhbS0+
cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CisgICAgdmFyLT5zdGF0aWNVc2UgID0gc3RyZWFtLT5y
ZWFkQm9vbCgpOworICAgIHZhci0+c3RydWN0TmFtZSA9IHN0cmVhbS0+cmVhZFN0cmluZygpOwor
fQorCisvLyBUaGlzIHNpbXBsaWZpZWQgY2FzdCBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gd29y
cnkgYWJvdXQgYWR2YW5jZWQgY29uY2VwdHMgbGlrZQorLy8gZGVwdGggcmFuZ2UgdmFsdWVzLCBv
ciBjYXN0aW5nIHRvIGJvb2wuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdFQsIHR5cGVuYW1lIFNy
Y1Q+CitEZXN0VCBVbmlmb3JtU3RhdGVRdWVyeUNhc3QoU3JjVCB2YWx1ZSk7CisKKy8vIEZyb20t
RmxvYXQtVG8tSW50ZWdlciBDYXN0cwordGVtcGxhdGUgPD4KK0dMaW50IFVuaWZvcm1TdGF0ZVF1
ZXJ5Q2FzdChHTGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiBjbGFtcENhc3Q8R0xpbnQ+KHJv
dW5kZih2YWx1ZSkpOworfQorCit0ZW1wbGF0ZSA8PgorR0x1aW50IFVuaWZvcm1TdGF0ZVF1ZXJ5
Q2FzdChHTGZsb2F0IHZhbHVlKQoreworICAgIHJldHVybiBjbGFtcENhc3Q8R0x1aW50Pihyb3Vu
ZGYodmFsdWUpKTsKK30KKworLy8gRnJvbS1JbnRlZ2VyLXRvLUludGVnZXIgQ2FzdHMKK3RlbXBs
YXRlIDw+CitHTGludCBVbmlmb3JtU3RhdGVRdWVyeUNhc3QoR0x1aW50IHZhbHVlKQoreworICAg
IHJldHVybiBjbGFtcENhc3Q8R0xpbnQ+KHZhbHVlKTsKK30KKwordGVtcGxhdGUgPD4KK0dMdWlu
dCBVbmlmb3JtU3RhdGVRdWVyeUNhc3QoR0xpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIGNsYW1w
Q2FzdDxHTHVpbnQ+KHZhbHVlKTsKK30KKworLy8gRnJvbS1Cb29sZWFuLXRvLUFueXRoaW5nIENh
c3RzCit0ZW1wbGF0ZSA8PgorR0xmbG9hdCBVbmlmb3JtU3RhdGVRdWVyeUNhc3QoR0xib29sZWFu
IHZhbHVlKQoreworICAgIHJldHVybiAodmFsdWUgPT0gR0xfVFJVRSA/IDEuMGYgOiAwLjBmKTsK
K30KKwordGVtcGxhdGUgPD4KK0dMaW50IFVuaWZvcm1TdGF0ZVF1ZXJ5Q2FzdChHTGJvb2xlYW4g
dmFsdWUpCit7CisgICAgcmV0dXJuICh2YWx1ZSA9PSBHTF9UUlVFID8gMSA6IDApOworfQorCit0
ZW1wbGF0ZSA8PgorR0x1aW50IFVuaWZvcm1TdGF0ZVF1ZXJ5Q2FzdChHTGJvb2xlYW4gdmFsdWUp
Cit7CisgICAgcmV0dXJuICh2YWx1ZSA9PSBHTF9UUlVFID8gMXUgOiAwdSk7Cit9CisKKy8vIERl
ZmF1bHQgdG8gc3RhdGljX2Nhc3QKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXN0VCwgdHlwZW5hbWUg
U3JjVD4KK0Rlc3RUIFVuaWZvcm1TdGF0ZVF1ZXJ5Q2FzdChTcmNUIHZhbHVlKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxEZXN0VD4odmFsdWUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
U3JjVCwgdHlwZW5hbWUgRGVzdFQ+Cit2b2lkIFVuaWZvcm1TdGF0ZVF1ZXJ5Q2FzdExvb3AoRGVz
dFQgKmRhdGFPdXQsIGNvbnN0IHVpbnQ4X3QgKnNyY1BvaW50ZXIsIGludCBjb21wb25lbnRzKQor
eworICAgIGZvciAoaW50IGNvbXAgPSAwOyBjb21wIDwgY29tcG9uZW50czsgKytjb21wKQogICAg
IHsKLSAgICAgICAgc3Vic2NyaXB0ID0gYXRvaShuYW1lLT5zdWJzdHIob3BlbiArIDEpLmNfc3Ry
KCkpOwotICAgICAgICBuYW1lLT5lcmFzZShvcGVuKTsKKyAgICAgICAgLy8gV2Ugb25seSB3b3Jr
IHdpdGggc3RyaWRlcyBvZiA0IGJ5dGVzIGZvciB1bmlmb3JtIGNvbXBvbmVudHMuIChHTGZsb2F0
L0dMaW50KQorICAgICAgICAvLyBEb24ndCB1c2UgU3JjVCBzdHJpZGUgZGlyZWN0bHkgc2luY2Ug
R0xib29sZWFuIGhhcyBhIHN0cmlkZSBvZiAxIGJ5dGUuCisgICAgICAgIHNpemVfdCBvZmZzZXQg
ICAgICAgICAgICAgICA9IGNvbXAgKiA0OworICAgICAgICBjb25zdCBTcmNUICp0eXBlZFNyY1Bv
aW50ZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1QgKj4oJnNyY1BvaW50ZXJbb2Zmc2V0
XSk7CisgICAgICAgIGRhdGFPdXRbY29tcF0gICAgICAgICAgICAgICA9IFVuaWZvcm1TdGF0ZVF1
ZXJ5Q2FzdDxEZXN0VD4oKnR5cGVkU3JjUG9pbnRlcik7CiAgICAgfQotCi0gICAgcmV0dXJuIHN1
YnNjcmlwdDsKIH0KIAorYm9vbCBVbmlmb3JtSW5MaXN0KGNvbnN0IHN0ZDo6dmVjdG9yPExpbmtl
ZFVuaWZvcm0+ICZsaXN0LCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKK3sKKyAgICBmb3IgKGNv
bnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gOiBsaXN0KQorICAgIHsKKyAgICAgICAgaWYgKHVu
aWZvcm0ubmFtZSA9PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2NvbnN0
IGNoYXIgKmNvbnN0IGdfZmFrZXBhdGggPSAiQzpcXGZha2VwYXRoIjsKKwogQXR0cmlidXRlQmlu
ZGluZ3M6OkF0dHJpYnV0ZUJpbmRpbmdzKCkKIHsKIH0KQEAgLTY1LDEwICsxNTYsMTEgQEAKIAog
c2l6ZV90IEluZm9Mb2c6OmdldExlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdHJlYW0u
c3RyKCkubGVuZ3RoKCk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmxvZ1N0cmluZyA9IG1TdHJl
YW0uc3RyKCk7CisgICAgcmV0dXJuIGxvZ1N0cmluZy5lbXB0eSgpID8gMCA6IGxvZ1N0cmluZy5s
ZW5ndGgoKSArIDE7CiB9CiAKLXZvaWQgSW5mb0xvZzo6Z2V0TG9nKEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKQordm9pZCBJbmZvTG9nOjpnZXRMb2coR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpIGNvbnN0CiB7CiAg
ICAgc2l6ZV90IGluZGV4ID0gMDsKIApAQCAtMTA5LDI0ICsyMDEsOSBAQAogICAgIH0KICAgICB3
aGlsZSAoZm91bmQgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOwogCi0gICAgbVN0cmVhbSA8PCBtZXNz
YWdlIDw8ICJcbiI7CisgICAgbVN0cmVhbSA8PCBtZXNzYWdlIDw8IHN0ZDo6ZW5kbDsKIH0KIAot
dm9pZCBJbmZvTG9nOjphcHBlbmQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0gICAgaWYg
KCFmb3JtYXQpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFfbGlzdCB2
YXJhcmc7Ci0gICAgdmFfc3RhcnQodmFyYXJnLCBmb3JtYXQpOwotICAgIHN0ZDo6c3RyaW5nIHRl
bXBTdHJpbmcoRm9ybWF0U3RyaW5nKGZvcm1hdCwgdmFyYXJnKSk7Ci0gICAgdmFfZW5kKHZhcmFy
Zyk7Ci0KLSAgICBtU3RyZWFtIDw8IHRlbXBTdHJpbmcgPDwgIlxuIjsKLX0KLQogdm9pZCBJbmZv
TG9nOjpyZXNldCgpCiB7CiB9CkBAIC0xNDUsMjggKzIyMiwxMDQgQEAKIHsKIH0KIAotTGlua2Vk
VmFyeWluZzo6TGlua2VkVmFyeWluZygpCitQcm9ncmFtOjpEYXRhOjpEYXRhKCkKKyAgICA6IG1M
YWJlbCgpLAorICAgICAgbUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIobnVsbHB0ciksCisgICAgICBt
QXR0YWNoZWRWZXJ0ZXhTaGFkZXIobnVsbHB0ciksCisgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJNb2RlKEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpLAorICAgICAgbUJpbmFyeVJldHJpZXZl
YWJsZUhpbnQoZmFsc2UpCiB7CiB9CiAKLUxpbmtlZFZhcnlpbmc6OkxpbmtlZFZhcnlpbmcoY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHNpemUsIGNvbnN0IHN0
ZDo6c3RyaW5nICZzZW1hbnRpY05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBzZW1hbnRpY0luZGV4LCB1bnNpZ25lZCBpbnQgc2VtYW50aWNJbmRleENvdW50
KQotICAgIDogbmFtZShuYW1lKSwgdHlwZSh0eXBlKSwgc2l6ZShzaXplKSwgc2VtYW50aWNOYW1l
KHNlbWFudGljTmFtZSksIHNlbWFudGljSW5kZXgoc2VtYW50aWNJbmRleCksIHNlbWFudGljSW5k
ZXhDb3VudChzZW1hbnRpY0luZGV4Q291bnQpCitQcm9ncmFtOjpEYXRhOjp+RGF0YSgpCiB7Cisg
ICAgaWYgKG1BdHRhY2hlZFZlcnRleFNoYWRlciAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAg
bUF0dGFjaGVkVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgfQorCisgICAgaWYgKG1BdHRh
Y2hlZEZyYWdtZW50U2hhZGVyICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtQXR0YWNoZWRG
cmFnbWVudFNoYWRlci0+cmVsZWFzZSgpOworICAgIH0KIH0KIAotUHJvZ3JhbTo6UHJvZ3JhbShy
eDo6UHJvZ3JhbUltcGwgKmltcGwsIFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhh
bmRsZSkKLSAgICA6IG1Qcm9ncmFtKGltcGwpLAorY29uc3Qgc3RkOjpzdHJpbmcgJlByb2dyYW06
OkRhdGE6OmdldExhYmVsKCkKK3sKKyAgICByZXR1cm4gbUxhYmVsOworfQorCitjb25zdCBMaW5r
ZWRVbmlmb3JtICpQcm9ncmFtOjpEYXRhOjpnZXRVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKSBjb25zdAoreworICAgIGZvciAoY29uc3QgTGlua2VkVW5pZm9ybSAmbGlua2Vk
VW5pZm9ybSA6IG1Vbmlmb3JtcykKKyAgICB7CisgICAgICAgIGlmIChsaW5rZWRVbmlmb3JtLm5h
bWUgPT0gbmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICZsaW5rZWRVbmlmb3Jt
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0dMaW50IFBy
b2dyYW06OkRhdGE6OmdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkg
Y29uc3QKK3sKKyAgICBzaXplX3Qgc3Vic2NyaXB0ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7Cisg
ICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBnbDo6UGFyc2VVbmlmb3JtTmFtZShuYW1lLCAmc3Vi
c2NyaXB0KTsKKworICAgIGZvciAoc2l6ZV90IGxvY2F0aW9uID0gMDsgbG9jYXRpb24gPCBtVW5p
Zm9ybUxvY2F0aW9ucy5zaXplKCk7ICsrbG9jYXRpb24pCisgICAgeworICAgICAgICBjb25zdCBW
YXJpYWJsZUxvY2F0aW9uICZ1bmlmb3JtTG9jYXRpb24gPSBtVW5pZm9ybUxvY2F0aW9uc1tsb2Nh
dGlvbl07CisgICAgICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gICAgICAgICAgICA9
IG1Vbmlmb3Jtc1t1bmlmb3JtTG9jYXRpb24uaW5kZXhdOworCisgICAgICAgIGlmICh1bmlmb3Jt
Lm5hbWUgPT0gYmFzZU5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgodW5pZm9ybS5p
c0FycmF5KCkgJiYgdW5pZm9ybUxvY2F0aW9uLmVsZW1lbnQgPT0gc3Vic2NyaXB0KSB8fAorICAg
ICAgICAgICAgICAgIChzdWJzY3JpcHQgPT0gR0xfSU5WQUxJRF9JTkRFWCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pihsb2NhdGlvbik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gLTE7Cit9CisK
K0dMdWludCBQcm9ncmFtOjpEYXRhOjpnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpIGNvbnN0Cit7CisgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lO
REVYOworICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFt
ZSwgJnN1YnNjcmlwdCk7CisKKyAgICAvLyBUaGUgYXBwIGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNp
ZnkgYXJyYXkgaW5kaWNlcyBvdGhlciB0aGFuIDAgZm9yIGFycmF5cyBvZiBiYXNpYyB0eXBlcwor
ICAgIGlmIChzdWJzY3JpcHQgIT0gMCAmJiBzdWJzY3JpcHQgIT0gR0xfSU5WQUxJRF9JTkRFWCkK
KyAgICB7CisgICAgICAgIHJldHVybiBHTF9JTlZBTElEX0lOREVYOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtVW5pZm9ybXMuc2l6ZSgpOyBpbmRleCsrKQor
ICAgIHsKKyAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1Vbmlmb3Jtc1tp
bmRleF07CisgICAgICAgIGlmICh1bmlmb3JtLm5hbWUgPT0gYmFzZU5hbWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh1bmlmb3JtLmlzQXJyYXkoKSB8fCBzdWJzY3JpcHQgPT0gR0xfSU5W
QUxJRF9JTkRFWCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8R0x1aW50PihpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKK30KKworUHJvZ3JhbTo6UHJvZ3JhbShyeDo6
SW1wbEZhY3RvcnkgKmZhY3RvcnksIFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhh
bmRsZSkKKyAgICA6IG1Qcm9ncmFtKGZhY3RvcnktPmNyZWF0ZVByb2dyYW0obURhdGEpKSwKICAg
ICAgIG1WYWxpZGF0ZWQoZmFsc2UpLAotICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
KSwKLSAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoR0xfTk9ORSksCi0gICAgICBt
RnJhZ21lbnRTaGFkZXIobnVsbHB0ciksCi0gICAgICBtVmVydGV4U2hhZGVyKG51bGxwdHIpLAog
ICAgICAgbUxpbmtlZChmYWxzZSksCiAgICAgICBtRGVsZXRlU3RhdHVzKGZhbHNlKSwKICAgICAg
IG1SZWZDb3VudCgwKSwKICAgICAgIG1SZXNvdXJjZU1hbmFnZXIobWFuYWdlciksCi0gICAgICBt
SGFuZGxlKGhhbmRsZSkKKyAgICAgIG1IYW5kbGUoaGFuZGxlKSwKKyAgICAgIG1TYW1wbGVyVW5p
Zm9ybVJhbmdlKDAsIDApCiB7CiAgICAgQVNTRVJUKG1Qcm9ncmFtKTsKIApAQCAtMTc4LDQwICsz
MzEsNDAgQEAKIHsKICAgICB1bmxpbmsodHJ1ZSk7CiAKLSAgICBpZiAobVZlcnRleFNoYWRlciAh
PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgbVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOwotICAg
IH0KKyAgICBTYWZlRGVsZXRlKG1Qcm9ncmFtKTsKK30KIAotICAgIGlmIChtRnJhZ21lbnRTaGFk
ZXIgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIG1GcmFnbWVudFNoYWRlci0+cmVsZWFzZSgp
OwotICAgIH0KK3ZvaWQgUHJvZ3JhbTo6c2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVs
KQoreworICAgIG1EYXRhLm1MYWJlbCA9IGxhYmVsOworfQogCi0gICAgU2FmZURlbGV0ZShtUHJv
Z3JhbSk7Citjb25zdCBzdGQ6OnN0cmluZyAmUHJvZ3JhbTo6Z2V0TGFiZWwoKSBjb25zdAorewor
ICAgIHJldHVybiBtRGF0YS5tTGFiZWw7CiB9CiAKIGJvb2wgUHJvZ3JhbTo6YXR0YWNoU2hhZGVy
KFNoYWRlciAqc2hhZGVyKQogewogICAgIGlmIChzaGFkZXItPmdldFR5cGUoKSA9PSBHTF9WRVJU
RVhfU0hBREVSKQogICAgIHsKLSAgICAgICAgaWYgKG1WZXJ0ZXhTaGFkZXIpCisgICAgICAgIGlm
IChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG1WZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7
Ci0gICAgICAgIG1WZXJ0ZXhTaGFkZXItPmFkZFJlZigpOworICAgICAgICBtRGF0YS5tQXR0YWNo
ZWRWZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7CisgICAgICAgIG1EYXRhLm1BdHRhY2hlZFZlcnRleFNo
YWRlci0+YWRkUmVmKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKHNoYWRlci0+Z2V0VHlwZSgpID09
IEdMX0ZSQUdNRU5UX1NIQURFUikKICAgICB7Ci0gICAgICAgIGlmIChtRnJhZ21lbnRTaGFkZXIp
CisgICAgICAgIGlmIChtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgbUZyYWdtZW50
U2hhZGVyID0gc2hhZGVyOwotICAgICAgICBtRnJhZ21lbnRTaGFkZXItPmFkZFJlZigpOworICAg
ICAgICBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IHNoYWRlcjsKKyAgICAgICAgbURh
dGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPmFkZFJlZigpOwogICAgIH0KICAgICBlbHNlIFVO
UkVBQ0hBQkxFKCk7CiAKQEAgLTIyMiwyMyArMzc1LDIzIEBACiB7CiAgICAgaWYgKHNoYWRlci0+
Z2V0VHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCiAgICAgewotICAgICAgICBpZiAobVZlcnRl
eFNoYWRlciAhPSBzaGFkZXIpCisgICAgICAgIGlmIChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFk
ZXIgIT0gc2hhZGVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAotICAgICAgICBtVmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1WZXJ0
ZXhTaGFkZXIgPSBudWxscHRyOworICAgICAgICBzaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAg
bURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyID0gbnVsbHB0cjsKICAgICB9CiAgICAgZWxzZSBp
ZiAoc2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQogICAgIHsKLSAgICAg
ICAgaWYgKG1GcmFnbWVudFNoYWRlciAhPSBzaGFkZXIpCisgICAgICAgIGlmIChtRGF0YS5tQXR0
YWNoZWRGcmFnbWVudFNoYWRlciAhPSBzaGFkZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIG1GcmFnbWVudFNoYWRlci0+cmVsZWFz
ZSgpOwotICAgICAgICBtRnJhZ21lbnRTaGFkZXIgPSBudWxscHRyOworICAgICAgICBzaGFkZXIt
PnJlbGVhc2UoKTsKKyAgICAgICAgbURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPSBudWxs
cHRyOwogICAgIH0KICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKQEAgLTI0Nyw3ICs0MDAsNyBA
QAogCiBpbnQgUHJvZ3JhbTo6Z2V0QXR0YWNoZWRTaGFkZXJzQ291bnQoKSBjb25zdAogewotICAg
IHJldHVybiAobVZlcnRleFNoYWRlciA/IDEgOiAwKSArIChtRnJhZ21lbnRTaGFkZXIgPyAxIDog
MCk7CisgICAgcmV0dXJuIChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPyAxIDogMCkgKyAo
bURhdGEubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPyAxIDogMCk7CiB9CiAKIHZvaWQgQXR0cmli
dXRlQmluZGluZ3M6OmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNo
YXIgKm5hbWUpCkBAIC0yNzEsNjUgKzQyNCw2MyBAQAogLy8gTGlua3MgdGhlIEhMU0wgY29kZSBv
ZiB0aGUgdmVydGV4IGFuZCBwaXhlbCBzaGFkZXIgYnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyeWlu
Z3MsCiAvLyBjb21waWxpbmcgdGhlbSBpbnRvIGJpbmFyaWVzLCBkZXRlcm1pbmluZyB0aGUgYXR0
cmlidXRlIG1hcHBpbmdzLCBhbmQgY29sbGVjdGluZwogLy8gYSBsaXN0IG9mIHVuaWZvcm1zCi1F
cnJvciBQcm9ncmFtOjpsaW5rKGNvbnN0IERhdGEgJmRhdGEpCitFcnJvciBQcm9ncmFtOjpsaW5r
KGNvbnN0IGdsOjpEYXRhICZkYXRhKQogewogICAgIHVubGluayhmYWxzZSk7CiAKICAgICBtSW5m
b0xvZy5yZXNldCgpOwogICAgIHJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKTsKIAotICAgIGlm
ICghbUZyYWdtZW50U2hhZGVyIHx8ICFtRnJhZ21lbnRTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAg
ICBpZiAoIW1EYXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyIHx8ICFtRGF0YS5tQXR0YWNoZWRG
cmFnbWVudFNoYWRlci0+aXNDb21waWxlZCgpKQogICAgIHsKICAgICAgICAgcmV0dXJuIEVycm9y
KEdMX05PX0VSUk9SKTsKICAgICB9Ci0gICAgQVNTRVJUKG1GcmFnbWVudFNoYWRlci0+Z2V0VHlw
ZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CisgICAgQVNTRVJUKG1EYXRhLm1BdHRhY2hlZEZy
YWdtZW50U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKTsKIAotICAgIGlm
ICghbVZlcnRleFNoYWRlciB8fCAhbVZlcnRleFNoYWRlci0+aXNDb21waWxlZCgpKQorICAgIGlm
ICghbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyIHx8ICFtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhT
aGFkZXItPmlzQ29tcGlsZWQoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBFcnJvcihHTF9OT19F
UlJPUik7CiAgICAgfQotICAgIEFTU0VSVChtVmVydGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xf
VkVSVEVYX1NIQURFUik7CisgICAgQVNTRVJUKG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+
Z2V0VHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpOwogCi0gICAgaWYgKCFsaW5rQXR0cmlidXRl
cyhkYXRhLCBtSW5mb0xvZywgbUF0dHJpYnV0ZUJpbmRpbmdzLCBtVmVydGV4U2hhZGVyKSkKKyAg
ICBpZiAoIWxpbmtBdHRyaWJ1dGVzKGRhdGEsIG1JbmZvTG9nLCBtQXR0cmlidXRlQmluZGluZ3Ms
IG1EYXRhLm1BdHRhY2hlZFZlcnRleFNoYWRlcikpCiAgICAgewogICAgICAgICByZXR1cm4gRXJy
b3IoR0xfTk9fRVJST1IpOwogICAgIH0KIAotICAgIGludCByZWdpc3RlcnM7Ci0gICAgc3RkOjp2
ZWN0b3I8TGlua2VkVmFyeWluZz4gbGlua2VkVmFyeWluZ3M7Ci0gICAgcng6OkxpbmtSZXN1bHQg
cmVzdWx0ID0gbVByb2dyYW0tPmxpbmsoZGF0YSwgbUluZm9Mb2csIG1GcmFnbWVudFNoYWRlciwg
bVZlcnRleFNoYWRlciwgbVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsIG1UcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnJlZ2lzdGVycywgJmxpbmtlZFZhcnlpbmdzLCAmbU91dHB1dFZhcmlhYmxlcyk7Ci0gICAg
aWYgKHJlc3VsdC5lcnJvci5pc0Vycm9yKCkgfHwgIXJlc3VsdC5saW5rU3VjY2VzcykKKyAgICBp
ZiAoIWxpbmtWYXJ5aW5ncyhtSW5mb0xvZywgbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLCBt
RGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikpCiAgICAgewotICAgICAgICByZXR1cm4gcmVz
dWx0LmVycm9yOworICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogICAgIH0KIAot
ICAgIGlmICghbVByb2dyYW0tPmxpbmtVbmlmb3JtcyhtSW5mb0xvZywgKm1WZXJ0ZXhTaGFkZXIs
ICptRnJhZ21lbnRTaGFkZXIsICpkYXRhLmNhcHMpKQorICAgIGlmICghbGlua1VuaWZvcm1zKG1J
bmZvTG9nLCAqZGF0YS5jYXBzKSkKICAgICB7CiAgICAgICAgIHJldHVybiBFcnJvcihHTF9OT19F
UlJPUik7CiAgICAgfQogCi0gICAgaWYgKCFsaW5rVW5pZm9ybUJsb2NrcyhtSW5mb0xvZywgKm1W
ZXJ0ZXhTaGFkZXIsICptRnJhZ21lbnRTaGFkZXIsICpkYXRhLmNhcHMpKQorICAgIGlmICghbGlu
a1VuaWZvcm1CbG9ja3MobUluZm9Mb2csICpkYXRhLmNhcHMpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9CiAKLSAgICBpZiAoIWdhdGhlclRyYW5zZm9y
bUZlZWRiYWNrTGlua2VkVmFyeWluZ3MobUluZm9Mb2csIGxpbmtlZFZhcnlpbmdzLCBtVHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSwgJm1Qcm9ncmFtLT5nZXRU
cmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzKCksICpkYXRhLmNhcHMpKQorICAgIGNvbnN0
IGF1dG8gJm1lcmdlZFZhcnlpbmdzID0gZ2V0TWVyZ2VkVmFyeWluZ3MoKTsKKworICAgIGlmICgh
bGlua1ZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2sobUluZm9Mb2csIG1lcmdlZFZhcnlpbmdzLCAq
ZGF0YS5jYXBzKSkKICAgICB7CiAgICAgICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiAg
ICAgfQogCi0gICAgLy8gVE9ETzogVGhlIGNvbmNlcHQgb2YgImV4ZWN1dGFibGVzIiBpcyBEM0Qg
b25seSwgYW5kIGFzIHN1Y2ggdGhpcyBiZWxvbmdzIGluIFByb2dyYW1EM0QuIEl0IG11c3QgYmUg
Y2FsbGVkLAotICAgIC8vIGhvd2V2ZXIsIGxhc3QgaW4gdGhpcyBmdW5jdGlvbiwgc28gaXQgY2Fu
J3Qgc2ltcGx5IGJlIG1vdmVkIHRvIFByb2dyYW1EM0Q6Omxpbmsgd2l0aG91dCBmdXJ0aGVyIHNo
dWZmbGluZy4KLSAgICByZXN1bHQgPSBtUHJvZ3JhbS0+Y29tcGlsZVByb2dyYW1FeGVjdXRhYmxl
cyhtSW5mb0xvZywgbUZyYWdtZW50U2hhZGVyLCBtVmVydGV4U2hhZGVyLCByZWdpc3RlcnMpOwor
ICAgIGxpbmtPdXRwdXRWYXJpYWJsZXMoKTsKKworICAgIHJ4OjpMaW5rUmVzdWx0IHJlc3VsdCA9
IG1Qcm9ncmFtLT5saW5rKGRhdGEsIG1JbmZvTG9nKTsKICAgICBpZiAocmVzdWx0LmVycm9yLmlz
RXJyb3IoKSB8fCAhcmVzdWx0LmxpbmtTdWNjZXNzKQogICAgIHsKLSAgICAgICAgbUluZm9Mb2cu
YXBwZW5kKCJGYWlsZWQgdG8gY3JlYXRlIEQzRCBzaGFkZXJzLiIpOwotICAgICAgICB1bmxpbmso
ZmFsc2UpOwogICAgICAgICByZXR1cm4gcmVzdWx0LmVycm9yOwogICAgIH0KIAorICAgIGdhdGhl
clRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MobWVyZ2VkVmFyeWluZ3MpOworICAgIGdhdGhlcklu
dGVyZmFjZUJsb2NrSW5mbygpOworCiAgICAgbUxpbmtlZCA9IHRydWU7CiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CiB9CkBAIC0zNTIsMzAgKzUwMywzMyBAQAogewogICAgIGlm
IChkZXN0cm95KSAgIC8vIE9iamVjdCBiZWluZyBkZXN0cnVjdGVkCiAgICAgewotICAgICAgICBp
ZiAobUZyYWdtZW50U2hhZGVyKQorICAgICAgICBpZiAobURhdGEubUF0dGFjaGVkRnJhZ21lbnRT
aGFkZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1GcmFnbWVudFNoYWRlci0+cmVsZWFzZSgp
OwotICAgICAgICAgICAgbUZyYWdtZW50U2hhZGVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1E
YXRhLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7CisgICAgICAgICAgICBtRGF0
YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAobVZlcnRleFNoYWRlcikKKyAgICAgICAgaWYgKG1EYXRhLm1BdHRhY2hlZFZlcnRleFNo
YWRlcikKICAgICAgICAgewotICAgICAgICAgICAgbVZlcnRleFNoYWRlci0+cmVsZWFzZSgpOwot
ICAgICAgICAgICAgbVZlcnRleFNoYWRlciA9IG51bGxwdHI7CisgICAgICAgICAgICBtRGF0YS5t
QXR0YWNoZWRWZXJ0ZXhTaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1EYXRhLm1BdHRh
Y2hlZFZlcnRleFNoYWRlciA9IG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGQ6
OmZpbGwobUxpbmtlZEF0dHJpYnV0ZSwgbUxpbmtlZEF0dHJpYnV0ZSArIEFycmF5U2l6ZShtTGlu
a2VkQXR0cmlidXRlKSwgc2g6OkF0dHJpYnV0ZSgpKTsKLSAgICBtT3V0cHV0VmFyaWFibGVzLmNs
ZWFyKCk7CisgICAgbURhdGEubUF0dHJpYnV0ZXMuY2xlYXIoKTsKKyAgICBtRGF0YS5tQWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzay5yZXNldCgpOworICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdWYXJzLmNsZWFyKCk7CisgICAgbURhdGEubVVuaWZvcm1zLmNsZWFyKCk7CisgICAg
bURhdGEubVVuaWZvcm1Mb2NhdGlvbnMuY2xlYXIoKTsKKyAgICBtRGF0YS5tVW5pZm9ybUJsb2Nr
cy5jbGVhcigpOworICAgIG1EYXRhLm1PdXRwdXRWYXJpYWJsZXMuY2xlYXIoKTsKIAotICAgIG1Q
cm9ncmFtLT5yZXNldCgpOwotCiAgICAgbVZhbGlkYXRlZCA9IGZhbHNlOwogCiAgICAgbUxpbmtl
ZCA9IGZhbHNlOwogfQogCi1ib29sIFByb2dyYW06OmlzTGlua2VkKCkKK2Jvb2wgUHJvZ3JhbTo6
aXNMaW5rZWQoKSBjb25zdAogewogICAgIHJldHVybiBtTGlua2VkOwogfQpAQCAtMzg3LDIyICs1
NDEsMjAgQEAKICNpZiBBTkdMRV9QUk9HUkFNX0JJTkFSWV9MT0FEICE9IEFOR0xFX0VOQUJMRUQK
ICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogI2Vsc2UKLSAgICBBU1NFUlQoYmluYXJ5
Rm9ybWF0ID09IG1Qcm9ncmFtLT5nZXRCaW5hcnlGb3JtYXQoKSk7Ci0KLSAgICBCaW5hcnlJbnB1
dFN0cmVhbSBzdHJlYW0oYmluYXJ5LCBsZW5ndGgpOwotCi0gICAgR0xlbnVtIGZvcm1hdCA9IHN0
cmVhbS5yZWFkSW50PEdMZW51bT4oKTsKLSAgICBpZiAoZm9ybWF0ICE9IG1Qcm9ncmFtLT5nZXRC
aW5hcnlGb3JtYXQoKSkKKyAgICBBU1NFUlQoYmluYXJ5Rm9ybWF0ID09IEdMX1BST0dSQU1fQklO
QVJZX0FOR0xFKTsKKyAgICBpZiAoYmluYXJ5Rm9ybWF0ICE9IEdMX1BST0dSQU1fQklOQVJZX0FO
R0xFKQogICAgIHsKLSAgICAgICAgbUluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0gYmlu
YXJ5IGZvcm1hdC4iKTsKKyAgICAgICAgbUluZm9Mb2cgPDwgIkludmFsaWQgcHJvZ3JhbSBiaW5h
cnkgZm9ybWF0LiI7CiAgICAgICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiAgICAgfQog
CisgICAgQmluYXJ5SW5wdXRTdHJlYW0gc3RyZWFtKGJpbmFyeSwgbGVuZ3RoKTsKKwogICAgIGlu
dCBtYWpvclZlcnNpb24gPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7CiAgICAgaW50IG1pbm9yVmVy
c2lvbiA9IHN0cmVhbS5yZWFkSW50PGludD4oKTsKICAgICBpZiAobWFqb3JWZXJzaW9uICE9IEFO
R0xFX01BSk9SX1ZFUlNJT04gfHwgbWlub3JWZXJzaW9uICE9IEFOR0xFX01JTk9SX1ZFUlNJT04p
CiAgICAgewotICAgICAgICBtSW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkg
dmVyc2lvbi4iKTsKKyAgICAgICAgbUluZm9Mb2cgPDwgIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkg
dmVyc2lvbi4iOwogICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogICAgIH0KIApA
QCAtNDEwLDI5ICs1NjIsMTA1IEBACiAgICAgc3RyZWFtLnJlYWRCeXRlcyhjb21taXRTdHJpbmcs
IEFOR0xFX0NPTU1JVF9IQVNIX1NJWkUpOwogICAgIGlmIChtZW1jbXAoY29tbWl0U3RyaW5nLCBB
TkdMRV9DT01NSVRfSEFTSCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogQU5HTEVfQ09NTUlUX0hB
U0hfU0laRSkgIT0gMCkKICAgICB7Ci0gICAgICAgIG1JbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBw
cm9ncmFtIGJpbmFyeSB2ZXJzaW9uLiIpOworICAgICAgICBtSW5mb0xvZyA8PCAiSW52YWxpZCBw
cm9ncmFtIGJpbmFyeSB2ZXJzaW9uLiI7CiAgICAgICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJP
Uik7CiAgICAgfQogCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogcmVwbGFjZSBNQVhfVkVSVEVYX0FU
VFJJQlMKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgKytpKQot
ICAgIHsKLSAgICAgICAgc3RyZWFtLnJlYWRJbnQoJm1MaW5rZWRBdHRyaWJ1dGVbaV0udHlwZSk7
Ci0gICAgICAgIHN0cmVhbS5yZWFkU3RyaW5nKCZtTGlua2VkQXR0cmlidXRlW2ldLm5hbWUpOwot
ICAgICAgICBzdHJlYW0ucmVhZEludCgmbVByb2dyYW0tPmdldFNlbWFudGljSW5kZXhlcygpW2ld
KTsKLSAgICB9CisgICAgc3RhdGljX2Fzc2VydChNQVhfVkVSVEVYX0FUVFJJQlMgPD0gc2l6ZW9m
KHVuc2lnbmVkIGxvbmcpICogOCwKKyAgICAgICAgICAgICAgICAgICJUb28gbWFueSB2ZXJ0ZXgg
YXR0cmlicyBmb3IgbWFzayIpOworICAgIG1EYXRhLm1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNr
ID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgbG9uZz4oKTsKIAogICAgIHVuc2lnbmVkIGludCBh
dHRyaWJDb3VudCA9IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKKyAgICBBU1NFUlQo
bURhdGEubUF0dHJpYnV0ZXMuZW1wdHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXR0cmli
SW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJpYkNvdW50OyArK2F0dHJpYkluZGV4KQogICAg
IHsKLSAgICAgICAgR0xlbnVtIHR5cGUgPSBzdHJlYW0ucmVhZEludDxHTGVudW0+KCk7Ci0gICAg
ICAgIEdMZW51bSBwcmVjaXNpb24gPSBzdHJlYW0ucmVhZEludDxHTGVudW0+KCk7Ci0gICAgICAg
IHN0ZDo6c3RyaW5nIG5hbWUgPSBzdHJlYW0ucmVhZFN0cmluZygpOwotICAgICAgICBHTGludCBh
cnJheVNpemUgPSBzdHJlYW0ucmVhZEludDxHTGludD4oKTsKLSAgICAgICAgaW50IGxvY2F0aW9u
ID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOwotICAgICAgICBtUHJvZ3JhbS0+c2V0U2hhZGVyQXR0
cmlidXRlKGF0dHJpYkluZGV4LCB0eXBlLCBwcmVjaXNpb24sIG5hbWUsIGFycmF5U2l6ZSwgbG9j
YXRpb24pOworICAgICAgICBzaDo6QXR0cmlidXRlIGF0dHJpYjsKKyAgICAgICAgTG9hZFNoYWRl
clZhcigmc3RyZWFtLCAmYXR0cmliKTsKKyAgICAgICAgYXR0cmliLmxvY2F0aW9uID0gc3RyZWFt
LnJlYWRJbnQ8aW50PigpOworICAgICAgICBtRGF0YS5tQXR0cmlidXRlcy5wdXNoX2JhY2soYXR0
cmliKTsKICAgICB9CiAKKyAgICB1bnNpZ25lZCBpbnQgdW5pZm9ybUNvdW50ID0gc3RyZWFtLnJl
YWRJbnQ8dW5zaWduZWQgaW50PigpOworICAgIEFTU0VSVChtRGF0YS5tVW5pZm9ybXMuZW1wdHko
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4
IDwgdW5pZm9ybUNvdW50OyArK3VuaWZvcm1JbmRleCkKKyAgICB7CisgICAgICAgIExpbmtlZFVu
aWZvcm0gdW5pZm9ybTsKKyAgICAgICAgTG9hZFNoYWRlclZhcigmc3RyZWFtLCAmdW5pZm9ybSk7
CisKKyAgICAgICAgdW5pZm9ybS5ibG9ja0luZGV4ICAgICAgICAgICAgICAgICA9IHN0cmVhbS5y
ZWFkSW50PGludD4oKTsKKyAgICAgICAgdW5pZm9ybS5ibG9ja0luZm8ub2Zmc2V0ICAgICAgICAg
ICA9IHN0cmVhbS5yZWFkSW50PGludD4oKTsKKyAgICAgICAgdW5pZm9ybS5ibG9ja0luZm8uYXJy
YXlTdHJpZGUgICAgICA9IHN0cmVhbS5yZWFkSW50PGludD4oKTsKKyAgICAgICAgdW5pZm9ybS5i
bG9ja0luZm8ubWF0cml4U3RyaWRlICAgICA9IHN0cmVhbS5yZWFkSW50PGludD4oKTsKKyAgICAg
ICAgdW5pZm9ybS5ibG9ja0luZm8uaXNSb3dNYWpvck1hdHJpeCA9IHN0cmVhbS5yZWFkQm9vbCgp
OworCisgICAgICAgIG1EYXRhLm1Vbmlmb3Jtcy5wdXNoX2JhY2sodW5pZm9ybSk7CisgICAgfQor
CisgICAgY29uc3QgdW5zaWduZWQgaW50IHVuaWZvcm1JbmRleENvdW50ID0gc3RyZWFtLnJlYWRJ
bnQ8dW5zaWduZWQgaW50PigpOworICAgIEFTU0VSVChtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5l
bXB0eSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlmb3JtSW5kZXhJbmRleCA9IDA7IHVu
aWZvcm1JbmRleEluZGV4IDwgdW5pZm9ybUluZGV4Q291bnQ7CisgICAgICAgICB1bmlmb3JtSW5k
ZXhJbmRleCsrKQorICAgIHsKKyAgICAgICAgVmFyaWFibGVMb2NhdGlvbiB2YXJpYWJsZTsKKyAg
ICAgICAgc3RyZWFtLnJlYWRTdHJpbmcoJnZhcmlhYmxlLm5hbWUpOworICAgICAgICBzdHJlYW0u
cmVhZEludCgmdmFyaWFibGUuZWxlbWVudCk7CisgICAgICAgIHN0cmVhbS5yZWFkSW50KCZ2YXJp
YWJsZS5pbmRleCk7CisKKyAgICAgICAgbURhdGEubVVuaWZvcm1Mb2NhdGlvbnMucHVzaF9iYWNr
KHZhcmlhYmxlKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgdW5pZm9ybUJsb2NrQ291bnQg
PSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CisgICAgQVNTRVJUKG1EYXRhLm1Vbmlm
b3JtQmxvY2tzLmVtcHR5KCkpOworICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0lu
ZGV4ID0gMDsgdW5pZm9ybUJsb2NrSW5kZXggPCB1bmlmb3JtQmxvY2tDb3VudDsKKyAgICAgICAg
ICsrdW5pZm9ybUJsb2NrSW5kZXgpCisgICAgeworICAgICAgICBVbmlmb3JtQmxvY2sgdW5pZm9y
bUJsb2NrOworICAgICAgICBzdHJlYW0ucmVhZFN0cmluZygmdW5pZm9ybUJsb2NrLm5hbWUpOwor
ICAgICAgICBzdHJlYW0ucmVhZEJvb2woJnVuaWZvcm1CbG9jay5pc0FycmF5KTsKKyAgICAgICAg
c3RyZWFtLnJlYWRJbnQoJnVuaWZvcm1CbG9jay5hcnJheUVsZW1lbnQpOworICAgICAgICBzdHJl
YW0ucmVhZEludCgmdW5pZm9ybUJsb2NrLmRhdGFTaXplKTsKKyAgICAgICAgc3RyZWFtLnJlYWRC
b29sKCZ1bmlmb3JtQmxvY2sudmVydGV4U3RhdGljVXNlKTsKKyAgICAgICAgc3RyZWFtLnJlYWRC
b29sKCZ1bmlmb3JtQmxvY2suZnJhZ21lbnRTdGF0aWNVc2UpOworCisgICAgICAgIHVuc2lnbmVk
IGludCBudW1NZW1iZXJzID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBibG9ja01lbWJlckluZGV4ID0gMDsgYmxvY2tNZW1iZXJJbmRl
eCA8IG51bU1lbWJlcnM7IGJsb2NrTWVtYmVySW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5pZm9ybUJsb2NrLm1lbWJlclVuaWZvcm1JbmRleGVzLnB1c2hfYmFjayhzdHJlYW0ucmVh
ZEludDx1bnNpZ25lZCBpbnQ+KCkpOworICAgICAgICB9CisKKyAgICAgICAgbURhdGEubVVuaWZv
cm1CbG9ja3MucHVzaF9iYWNrKHVuaWZvcm1CbG9jayk7CisgICAgfQorCisgICAgdW5zaWduZWQg
aW50IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50ID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWdu
ZWQgaW50PigpOworICAgIEFTU0VSVChtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFy
cy5lbXB0eSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCB0cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdJbmRleCA9IDA7CisgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0luZGV4IDwgdHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nQ291bnQ7CisgICAgICAgICsrdHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nSW5kZXgpCisgICAgeworICAgICAgICBzaDo6VmFyeWluZyB2YXJ5aW5nOworICAgICAg
ICBzdHJlYW0ucmVhZEludCgmdmFyeWluZy5hcnJheVNpemUpOworICAgICAgICBzdHJlYW0ucmVh
ZEludCgmdmFyeWluZy50eXBlKTsKKyAgICAgICAgc3RyZWFtLnJlYWRTdHJpbmcoJnZhcnlpbmcu
bmFtZSk7CisKKyAgICAgICAgbURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMucHVz
aF9iYWNrKHZhcnlpbmcpOworICAgIH0KKworICAgIHN0cmVhbS5yZWFkSW50KCZtRGF0YS5tVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKTsKKworICAgIHVuc2lnbmVkIGludCBvdXRwdXRWYXJD
b3VudCA9IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGludCBvdXRwdXRJbmRleCA9IDA7IG91dHB1dEluZGV4IDwgb3V0cHV0VmFyQ291bnQ7ICsrb3V0
cHV0SW5kZXgpCisgICAgeworICAgICAgICBpbnQgbG9jYXRpb25JbmRleCA9IHN0cmVhbS5yZWFk
SW50PGludD4oKTsKKyAgICAgICAgVmFyaWFibGVMb2NhdGlvbiBsb2NhdGlvbkRhdGE7CisgICAg
ICAgIHN0cmVhbS5yZWFkSW50KCZsb2NhdGlvbkRhdGEuZWxlbWVudCk7CisgICAgICAgIHN0cmVh
bS5yZWFkSW50KCZsb2NhdGlvbkRhdGEuaW5kZXgpOworICAgICAgICBzdHJlYW0ucmVhZFN0cmlu
ZygmbG9jYXRpb25EYXRhLm5hbWUpOworICAgICAgICBtRGF0YS5tT3V0cHV0VmFyaWFibGVzW2xv
Y2F0aW9uSW5kZXhdID0gbG9jYXRpb25EYXRhOworICAgIH0KKworICAgIHN0cmVhbS5yZWFkSW50
KCZtU2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydCk7CisgICAgc3RyZWFtLnJlYWRJbnQoJm1TYW1w
bGVyVW5pZm9ybVJhbmdlLmVuZCk7CisKICAgICByeDo6TGlua1Jlc3VsdCByZXN1bHQgPSBtUHJv
Z3JhbS0+bG9hZChtSW5mb0xvZywgJnN0cmVhbSk7CiAgICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vy
cm9yKCkgfHwgIXJlc3VsdC5saW5rU3VjY2VzcykKICAgICB7CkBAIC00NDgsNDIgKzY3Niw5MyBA
QAogewogICAgIGlmIChiaW5hcnlGb3JtYXQpCiAgICAgewotICAgICAgICAqYmluYXJ5Rm9ybWF0
ID0gbVByb2dyYW0tPmdldEJpbmFyeUZvcm1hdCgpOworICAgICAgICAqYmluYXJ5Rm9ybWF0ID0g
R0xfUFJPR1JBTV9CSU5BUllfQU5HTEU7CiAgICAgfQogCiAgICAgQmluYXJ5T3V0cHV0U3RyZWFt
IHN0cmVhbTsKIAotICAgIHN0cmVhbS53cml0ZUludChtUHJvZ3JhbS0+Z2V0QmluYXJ5Rm9ybWF0
KCkpOwogICAgIHN0cmVhbS53cml0ZUludChBTkdMRV9NQUpPUl9WRVJTSU9OKTsKICAgICBzdHJl
YW0ud3JpdGVJbnQoQU5HTEVfTUlOT1JfVkVSU0lPTik7CiAgICAgc3RyZWFtLndyaXRlQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQU5HTEVfQ09NTUlUX0hBU0gp
LCBBTkdMRV9DT01NSVRfSEFTSF9TSVpFKTsKIAotICAgIC8vIFRPRE8oam1hZGlsbCk6IHJlcGxh
Y2UgTUFYX1ZFUlRFWF9BVFRSSUJTCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBN
QVhfVkVSVEVYX0FUVFJJQlM7ICsraSkKKyAgICBzdHJlYW0ud3JpdGVJbnQobURhdGEubUFjdGl2
ZUF0dHJpYkxvY2F0aW9uc01hc2sudG9fdWxvbmcoKSk7CisKKyAgICBzdHJlYW0ud3JpdGVJbnQo
bURhdGEubUF0dHJpYnV0ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUg
JmF0dHJpYiA6IG1EYXRhLm1BdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgc3RyZWFtLndyaXRl
SW50KG1MaW5rZWRBdHRyaWJ1dGVbaV0udHlwZSk7Ci0gICAgICAgIHN0cmVhbS53cml0ZVN0cmlu
ZyhtTGlua2VkQXR0cmlidXRlW2ldLm5hbWUpOwotICAgICAgICBzdHJlYW0ud3JpdGVJbnQobVBy
b2dyYW0tPmdldFNlbWFudGljSW5kZXhlcygpW2ldKTsKKyAgICAgICAgV3JpdGVTaGFkZXJWYXIo
JnN0cmVhbSwgYXR0cmliKTsKKyAgICAgICAgc3RyZWFtLndyaXRlSW50KGF0dHJpYi5sb2NhdGlv
bik7CiAgICAgfQogCi0gICAgY29uc3QgYXV0byAmc2hhZGVyQXR0cmlidXRlcyA9IG1Qcm9ncmFt
LT5nZXRTaGFkZXJBdHRyaWJ1dGVzKCk7Ci0gICAgc3RyZWFtLndyaXRlSW50KHNoYWRlckF0dHJp
YnV0ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJmF0dHJpYiA6IHNoYWRlckF0dHJp
YnV0ZXMpCisgICAgc3RyZWFtLndyaXRlSW50KG1EYXRhLm1Vbmlmb3Jtcy5zaXplKCkpOworICAg
IGZvciAoY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJnVuaWZvcm0gOiBtRGF0YS5tVW5pZm9ybXMp
CiAgICAgewotICAgICAgICBzdHJlYW0ud3JpdGVJbnQoYXR0cmliLnR5cGUpOwotICAgICAgICBz
dHJlYW0ud3JpdGVJbnQoYXR0cmliLnByZWNpc2lvbik7Ci0gICAgICAgIHN0cmVhbS53cml0ZVN0
cmluZyhhdHRyaWIubmFtZSk7Ci0gICAgICAgIHN0cmVhbS53cml0ZUludChhdHRyaWIuYXJyYXlT
aXplKTsKLSAgICAgICAgc3RyZWFtLndyaXRlSW50KGF0dHJpYi5sb2NhdGlvbik7CisgICAgICAg
IFdyaXRlU2hhZGVyVmFyKCZzdHJlYW0sIHVuaWZvcm0pOworCisgICAgICAgIC8vIEZJWE1FOiBy
ZWZlcmVuY2VkCisKKyAgICAgICAgc3RyZWFtLndyaXRlSW50KHVuaWZvcm0uYmxvY2tJbmRleCk7
CisgICAgICAgIHN0cmVhbS53cml0ZUludCh1bmlmb3JtLmJsb2NrSW5mby5vZmZzZXQpOworICAg
ICAgICBzdHJlYW0ud3JpdGVJbnQodW5pZm9ybS5ibG9ja0luZm8uYXJyYXlTdHJpZGUpOworICAg
ICAgICBzdHJlYW0ud3JpdGVJbnQodW5pZm9ybS5ibG9ja0luZm8ubWF0cml4U3RyaWRlKTsKKyAg
ICAgICAgc3RyZWFtLndyaXRlSW50KHVuaWZvcm0uYmxvY2tJbmZvLmlzUm93TWFqb3JNYXRyaXgp
OwogICAgIH0KIAorICAgIHN0cmVhbS53cml0ZUludChtRGF0YS5tVW5pZm9ybUxvY2F0aW9ucy5z
aXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byAmdmFyaWFibGUgOiBtRGF0YS5tVW5pZm9ybUxv
Y2F0aW9ucykKKyAgICB7CisgICAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2YXJpYWJsZS5uYW1l
KTsKKyAgICAgICAgc3RyZWFtLndyaXRlSW50KHZhcmlhYmxlLmVsZW1lbnQpOworICAgICAgICBz
dHJlYW0ud3JpdGVJbnQodmFyaWFibGUuaW5kZXgpOworICAgIH0KKworICAgIHN0cmVhbS53cml0
ZUludChtRGF0YS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgVW5pZm9y
bUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtRGF0YS5tVW5pZm9ybUJsb2NrcykKKyAgICB7CisgICAg
ICAgIHN0cmVhbS53cml0ZVN0cmluZyh1bmlmb3JtQmxvY2submFtZSk7CisgICAgICAgIHN0cmVh
bS53cml0ZUludCh1bmlmb3JtQmxvY2suaXNBcnJheSk7CisgICAgICAgIHN0cmVhbS53cml0ZUlu
dCh1bmlmb3JtQmxvY2suYXJyYXlFbGVtZW50KTsKKyAgICAgICAgc3RyZWFtLndyaXRlSW50KHVu
aWZvcm1CbG9jay5kYXRhU2l6ZSk7CisKKyAgICAgICAgc3RyZWFtLndyaXRlSW50KHVuaWZvcm1C
bG9jay52ZXJ0ZXhTdGF0aWNVc2UpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQodW5pZm9ybUJs
b2NrLmZyYWdtZW50U3RhdGljVXNlKTsKKworICAgICAgICBzdHJlYW0ud3JpdGVJbnQodW5pZm9y
bUJsb2NrLm1lbWJlclVuaWZvcm1JbmRleGVzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IG1lbWJlclVuaWZvcm1JbmRleCA6IHVuaWZvcm1CbG9jay5tZW1iZXJVbmlmb3JtSW5k
ZXhlcykKKyAgICAgICAgeworICAgICAgICAgICAgc3RyZWFtLndyaXRlSW50KG1lbWJlclVuaWZv
cm1JbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJlYW0ud3JpdGVJbnQobURhdGEu
bVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IHNo
OjpWYXJ5aW5nICZ2YXJ5aW5nIDogbURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMp
CisgICAgeworICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFyeWluZy5hcnJheVNpemUpOworICAg
ICAgICBzdHJlYW0ud3JpdGVJbnQodmFyeWluZy50eXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRl
U3RyaW5nKHZhcnlpbmcubmFtZSk7CisgICAgfQorCisgICAgc3RyZWFtLndyaXRlSW50KG1EYXRh
Lm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUpOworCisgICAgc3RyZWFtLndyaXRlSW50KG1E
YXRhLm1PdXRwdXRWYXJpYWJsZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJm91dHB1
dFBhaXIgOiBtRGF0YS5tT3V0cHV0VmFyaWFibGVzKQorICAgIHsKKyAgICAgICAgc3RyZWFtLndy
aXRlSW50KG91dHB1dFBhaXIuZmlyc3QpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQob3V0cHV0
UGFpci5zZWNvbmQuZWxlbWVudCk7CisgICAgICAgIHN0cmVhbS53cml0ZUludChvdXRwdXRQYWly
LnNlY29uZC5pbmRleCk7CisgICAgICAgIHN0cmVhbS53cml0ZVN0cmluZyhvdXRwdXRQYWlyLnNl
Y29uZC5uYW1lKTsKKyAgICB9CisKKyAgICBzdHJlYW0ud3JpdGVJbnQobVNhbXBsZXJVbmlmb3Jt
UmFuZ2Uuc3RhcnQpOworICAgIHN0cmVhbS53cml0ZUludChtU2FtcGxlclVuaWZvcm1SYW5nZS5l
bmQpOworCiAgICAgZ2w6OkVycm9yIGVycm9yID0gbVByb2dyYW0tPnNhdmUoJnN0cmVhbSk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICB9CiAKLSAgICBHTHNpemVpIHN0cmVhbUxlbmd0aCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHN0
cmVhbS5sZW5ndGgoKSk7CisgICAgR0xzaXplaSBzdHJlYW1MZW5ndGggICA9IHN0YXRpY19jYXN0
PEdMc2l6ZWk+KHN0cmVhbS5sZW5ndGgoKSk7CiAgICAgY29uc3Qgdm9pZCAqc3RyZWFtRGF0YSA9
IHN0cmVhbS5kYXRhKCk7CiAKICAgICBpZiAoc3RyZWFtTGVuZ3RoID4gYnVmU2l6ZSkKQEAgLTUy
OSw2ICs4MDgsMTggQEAKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCit2b2lkIFByb2dyYW06OnNl
dEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKQoreworICAgIC8vIFRPRE8o
am1hZGlsbCkgOiByZXBsYWNlIHdpdGggZGlydHkgYml0cworICAgIG1Qcm9ncmFtLT5zZXRCaW5h
cnlSZXRyaWV2YWJsZUhpbnQocmV0cmlldmFibGUpOworICAgIG1EYXRhLm1CaW5hcnlSZXRyaWV2
ZWFibGVIaW50ID0gcmV0cmlldmFibGU7Cit9CisKK2Jvb2wgUHJvZ3JhbTo6Z2V0QmluYXJ5UmV0
cmlldmFibGVIaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURhdGEubUJpbmFyeVJldHJpZXZl
YWJsZUhpbnQ7Cit9CisKIHZvaWQgUHJvZ3JhbTo6cmVsZWFzZSgpCiB7CiAgICAgbVJlZkNvdW50
LS07CkBAIC01NTQsMzMgKzg0NSwzMSBAQAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1J
bmZvTG9nLmdldExlbmd0aCgpKTsKIH0KIAotdm9pZCBQcm9ncmFtOjpnZXRJbmZvTG9nKEdMc2l6
ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZvTG9nKQordm9pZCBQcm9ncmFt
OjpnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICppbmZv
TG9nKSBjb25zdAogewogICAgIHJldHVybiBtSW5mb0xvZy5nZXRMb2coYnVmU2l6ZSwgbGVuZ3Ro
LCBpbmZvTG9nKTsKIH0KIAotdm9pZCBQcm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnMoR0xzaXpl
aSBtYXhDb3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycykKK3ZvaWQgUHJvZ3Jh
bTo6Z2V0QXR0YWNoZWRTaGFkZXJzKEdMc2l6ZWkgbWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBH
THVpbnQgKnNoYWRlcnMpIGNvbnN0CiB7CiAgICAgaW50IHRvdGFsID0gMDsKIAotICAgIGlmICht
VmVydGV4U2hhZGVyKQorICAgIGlmIChtRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpCiAgICAg
ewogICAgICAgICBpZiAodG90YWwgPCBtYXhDb3VudCkKICAgICAgICAgewotICAgICAgICAgICAg
c2hhZGVyc1t0b3RhbF0gPSBtVmVydGV4U2hhZGVyLT5nZXRIYW5kbGUoKTsKKyAgICAgICAgICAg
IHNoYWRlcnNbdG90YWxdID0gbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRIYW5kbGUo
KTsKKyAgICAgICAgICAgIHRvdGFsKys7CiAgICAgICAgIH0KLQotICAgICAgICB0b3RhbCsrOwog
ICAgIH0KIAotICAgIGlmIChtRnJhZ21lbnRTaGFkZXIpCisgICAgaWYgKG1EYXRhLm1BdHRhY2hl
ZEZyYWdtZW50U2hhZGVyKQogICAgIHsKICAgICAgICAgaWYgKHRvdGFsIDwgbWF4Q291bnQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHNoYWRlcnNbdG90YWxdID0gbUZyYWdtZW50U2hhZGVyLT5n
ZXRIYW5kbGUoKTsKKyAgICAgICAgICAgIHNoYWRlcnNbdG90YWxdID0gbURhdGEubUF0dGFjaGVk
RnJhZ21lbnRTaGFkZXItPmdldEhhbmRsZSgpOworICAgICAgICAgICAgdG90YWwrKzsKICAgICAg
ICAgfQotCi0gICAgICAgIHRvdGFsKys7CiAgICAgfQogCiAgICAgaWYgKGNvdW50KQpAQCAtNTg5
LDc0ICs4NzgsMzEgQEAKICAgICB9CiB9CiAKLUdMdWludCBQcm9ncmFtOjpnZXRBdHRyaWJ1dGVM
b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKK0dMdWludCBQcm9ncmFtOjpnZXRBdHRy
aWJ1dGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKIHsKLSAgICBmb3Ig
KGludCBpbmRleCA9IDA7IGluZGV4IDwgTUFYX1ZFUlRFWF9BVFRSSUJTOyBpbmRleCsrKQorICAg
IGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbURhdGEubUF0dHJpYnV0ZXMp
CiAgICAgewotICAgICAgICBpZiAobUxpbmtlZEF0dHJpYnV0ZVtpbmRleF0ubmFtZSA9PSBuYW1l
KQorICAgICAgICBpZiAoYXR0cmlidXRlLm5hbWUgPT0gbmFtZSAmJiBhdHRyaWJ1dGUuc3RhdGlj
VXNlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlLmxvY2F0aW9uOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdMdWludD4oLTEpOwogfQogCi1jb25zdCBpbnQgKlByb2dyYW06OmdldFNl
bWFudGljSW5kZXhlcygpIGNvbnN0Citib29sIFByb2dyYW06OmlzQXR0cmliTG9jYXRpb25BY3Rp
dmUoc2l6ZV90IGF0dHJpYkxvY2F0aW9uKSBjb25zdAogewotICAgIHJldHVybiBtUHJvZ3JhbS0+
Z2V0U2VtYW50aWNJbmRleGVzKCk7CisgICAgQVNTRVJUKGF0dHJpYkxvY2F0aW9uIDwgbURhdGEu
bUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2suc2l6ZSgpKTsKKyAgICByZXR1cm4gbURhdGEubUFj
dGl2ZUF0dHJpYkxvY2F0aW9uc01hc2tbYXR0cmliTG9jYXRpb25dOwogfQogCi1pbnQgUHJvZ3Jh
bTo6Z2V0U2VtYW50aWNJbmRleChpbnQgYXR0cmlidXRlSW5kZXgpCi17Ci0gICAgQVNTRVJUKGF0
dHJpYnV0ZUluZGV4ID49IDAgJiYgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlMp
OwotCi0gICAgcmV0dXJuIG1Qcm9ncmFtLT5nZXRTZW1hbnRpY0luZGV4ZXMoKVthdHRyaWJ1dGVJ
bmRleF07Ci19Ci0KIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRl
eCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0g
KnR5cGUsIEdMY2hhciAqbmFtZSkKIHsKLSAgICBpZiAobUxpbmtlZCkKKyAgICBpZiAoIW1MaW5r
ZWQpCiAgICAgewotICAgICAgICAvLyBTa2lwIG92ZXIgaW5hY3RpdmUgYXR0cmlidXRlcwotICAg
ICAgICB1bnNpZ25lZCBpbnQgYWN0aXZlQXR0cmlidXRlID0gMDsKLSAgICAgICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZTsKLSAgICAgICAgZm9yIChhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBN
QVhfVkVSVEVYX0FUVFJJQlM7IGF0dHJpYnV0ZSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAobUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVdLm5hbWUuZW1wdHkoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKGFjdGl2ZUF0dHJpYnV0ZSA9PSBpbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYWN0aXZlQXR0cmli
dXRlKys7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoYnVmc2l6ZSA+IDApCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cmluZyA9IG1MaW5rZWRBdHRyaWJ1dGVbYXR0cmli
dXRlXS5uYW1lLmNfc3RyKCk7Ci0KLSAgICAgICAgICAgIHN0cm5jcHkobmFtZSwgc3RyaW5nLCBi
dWZzaXplKTsKLSAgICAgICAgICAgIG5hbWVbYnVmc2l6ZSAtIDFdID0gJ1wwJzsKLQotICAgICAg
ICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oc3RybGVuKG5hbWUpKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgICpzaXplID0gMTsgICAvLyBBbHdheXMgYSBzaW5nbGUgJ3R5cGUn
IGluc3RhbmNlCi0KLSAgICAgICAgKnR5cGUgPSBtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZV0u
dHlwZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPiAwKQot
ICAgICAgICB7CiAgICAgICAgICAgICBuYW1lWzBdID0gJ1wwJzsKICAgICAgICAgfQogCkBAIC02
NjcsOTIgKzkxMywxMTQgQEAKIAogICAgICAgICAqdHlwZSA9IEdMX05PTkU7CiAgICAgICAgICpz
aXplID0gMTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLX0KIAotR0xpbnQgUHJvZ3JhbTo6Z2V0
QWN0aXZlQXR0cmlidXRlQ291bnQoKQotewotICAgIGludCBjb3VudCA9IDA7CisgICAgc2l6ZV90
IGF0dHJpYnV0ZUluZGV4ID0gMDsKIAotICAgIGlmIChtTGlua2VkKQorICAgIGZvciAoY29uc3Qg
c2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbURhdGEubUF0dHJpYnV0ZXMpCiAgICAgewotICAg
ICAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgTUFYX1ZF
UlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorICAgICAgICAvLyBTa2lwIG92ZXIgaW5h
Y3RpdmUgYXR0cmlidXRlcworICAgICAgICBpZiAoYXR0cmlidXRlLnN0YXRpY1VzZSkKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtTGlua2VkQXR0cmlidXRlW2F0dHJpYnV0ZUluZGV4XS5u
YW1lLmVtcHR5KCkpCisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkg
PT0gYXR0cmlidXRlSW5kZXgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY291bnQr
KzsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF0
dHJpYnV0ZUluZGV4Kys7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY291bnQ7Ci19
CisgICAgQVNTRVJUKGluZGV4ID09IGF0dHJpYnV0ZUluZGV4ICYmIGF0dHJpYnV0ZUluZGV4IDwg
bURhdGEubUF0dHJpYnV0ZXMuc2l6ZSgpKTsKKyAgICBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRy
aWIgPSBtRGF0YS5tQXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CiAKLUdMaW50IFByb2dyYW06
OmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpCi17Ci0gICAgaW50IG1heExlbmd0aCA9IDA7
CisgICAgaWYgKGJ1ZnNpemUgPiAwKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqc3RyaW5n
ID0gYXR0cmliLm5hbWUuY19zdHIoKTsKIAotICAgIGlmIChtTGlua2VkKQotICAgIHsKLSAgICAg
ICAgZm9yIChpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8IE1BWF9WRVJU
RVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKKyAgICAgICAgc3RybmNweShuYW1lLCBzdHJp
bmcsIGJ1ZnNpemUpOworICAgICAgICBuYW1lW2J1ZnNpemUgLSAxXSA9ICdcMCc7CisKKyAgICAg
ICAgaWYgKGxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtTGlua2VkQXR0cmli
dXRlW2F0dHJpYnV0ZUluZGV4XS5uYW1lLmVtcHR5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgoKGludCkobUxpbmtlZEF0dHJpYnV0ZVthdHRy
aWJ1dGVJbmRleF0ubmFtZS5sZW5ndGgoKSArIDEpLCBtYXhMZW5ndGgpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgKmxlbmd0aCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHN0cmxlbihuYW1l
KSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbWF4TGVuZ3RoOworICAgIC8vIEFs
d2F5cyBhIHNpbmdsZSAndHlwZScgaW5zdGFuY2UKKyAgICAqc2l6ZSA9IDE7CisgICAgKnR5cGUg
PSBhdHRyaWIudHlwZTsKIH0KIAotLy8gUmV0dXJucyBvbmUgbW9yZSB0aGFuIHRoZSBoaWdoZXN0
IHNhbXBsZXIgaW5kZXggdXNlZC4KLUdMaW50IFByb2dyYW06OmdldFVzZWRTYW1wbGVyUmFuZ2Uo
U2FtcGxlclR5cGUgdHlwZSkKK0dMaW50IFByb2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVByb2dyYW0tPmdldFVzZWRTYW1wbGVyUmFuZ2UodHlw
ZSk7Ci19CisgICAgaWYgKCFtTGlua2VkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQogCi1ib29sIFByb2dyYW06OnVzZXNQb2ludFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBt
UHJvZ3JhbS0+dXNlc1BvaW50U2l6ZSgpOworICAgIEdMaW50IGNvdW50ID0gMDsKKworICAgIGZv
ciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogbURhdGEubUF0dHJpYnV0ZXMpCisgICAg
eworICAgICAgICBjb3VudCArPSAoYXR0cmliLnN0YXRpY1VzZSA/IDEgOiAwKTsKKyAgICB9CisK
KyAgICByZXR1cm4gY291bnQ7CiB9CiAKLUdMaW50IFByb2dyYW06OmdldFNhbXBsZXJNYXBwaW5n
KFNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgsIGNvbnN0IENhcHMg
JmNhcHMpCitHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKSBjb25z
dAogewotICAgIHJldHVybiBtUHJvZ3JhbS0+Z2V0U2FtcGxlck1hcHBpbmcodHlwZSwgc2FtcGxl
ckluZGV4LCBjYXBzKTsKLX0KKyAgICBpZiAoIW1MaW5rZWQpCisgICAgeworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CiAKLUdMZW51bSBQcm9ncmFtOjpnZXRTYW1wbGVyVGV4dHVyZVR5cGUoU2Ft
cGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCkKLXsKLSAgICByZXR1cm4g
bVByb2dyYW0tPmdldFNhbXBsZXJUZXh0dXJlVHlwZSh0eXBlLCBzYW1wbGVySW5kZXgpOworICAg
IHNpemVfdCBtYXhMZW5ndGggPSAwOworCisgICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZh
dHRyaWIgOiBtRGF0YS5tQXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIGlmIChhdHRyaWIuc3Rh
dGljVXNlKQorICAgICAgICB7CisgICAgICAgICAgICBtYXhMZW5ndGggPSBzdGQ6Om1heChhdHRy
aWIubmFtZS5sZW5ndGgoKSArIDEsIG1heExlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1heExlbmd0aCk7CiB9CiAKIEdMaW50IFByb2dy
YW06OmdldEZyYWdEYXRhTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7
CiAgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUobmFtZSk7CiAgICAgdW5zaWduZWQgaW50IGFycmF5
SW5kZXggPSBQYXJzZUFuZFN0cmlwQXJyYXlJbmRleCgmYmFzZU5hbWUpOwotICAgIGZvciAoYXV0
byBsb2NhdGlvbkl0ID0gbU91dHB1dFZhcmlhYmxlcy5iZWdpbigpOyBsb2NhdGlvbkl0ICE9IG1P
dXRwdXRWYXJpYWJsZXMuZW5kKCk7IGxvY2F0aW9uSXQrKykKKyAgICBmb3IgKGF1dG8gb3V0cHV0
UGFpciA6IG1EYXRhLm1PdXRwdXRWYXJpYWJsZXMpCiAgICAgewotICAgICAgICBjb25zdCBWYXJp
YWJsZUxvY2F0aW9uICZvdXRwdXRWYXJpYWJsZSA9IGxvY2F0aW9uSXQtPnNlY29uZDsKKyAgICAg
ICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmb3V0cHV0VmFyaWFibGUgPSBvdXRwdXRQYWlyLnNl
Y29uZDsKICAgICAgICAgaWYgKG91dHB1dFZhcmlhYmxlLm5hbWUgPT0gYmFzZU5hbWUgJiYgKGFy
cmF5SW5kZXggPT0gR0xfSU5WQUxJRF9JTkRFWCB8fCBhcnJheUluZGV4ID09IG91dHB1dFZhcmlh
YmxlLmVsZW1lbnQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0xpbnQ+KGxvY2F0aW9uSXQtPmZpcnN0KTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHTGludD4ob3V0cHV0UGFpci5maXJzdCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJu
IC0xOwogfQogCi12b2lkIFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBH
THNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlw
ZSwgR0xjaGFyICpuYW1lKQordm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtKEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGNoYXIgKm5hbWUpIGNvbnN0CiB7CiAgICAgaWYgKG1MaW5rZWQpCiAgICAgewotICAgICAgICBB
U1NFUlQoaW5kZXggPCBtUHJvZ3JhbS0+Z2V0VW5pZm9ybXMoKS5zaXplKCkpOyAgIC8vIGluZGV4
IG11c3QgYmUgc21hbGxlciB0aGFuIGdldEFjdGl2ZVVuaWZvcm1Db3VudCgpCi0gICAgICAgIExp
bmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBtUHJvZ3JhbS0+Z2V0VW5pZm9ybXMoKVtpbmRleF07Cisg
ICAgICAgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIGdldEFjdGl2ZVVuaWZvcm1Db3Vu
dCgpCisgICAgICAgIEFTU0VSVChpbmRleCA8IG1EYXRhLm1Vbmlmb3Jtcy5zaXplKCkpOworICAg
ICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbURhdGEubVVuaWZvcm1zW2luZGV4
XTsKIAogICAgICAgICBpZiAoYnVmc2l6ZSA+IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIHN0cmluZyA9IHVuaWZvcm0tPm5hbWU7Ci0gICAgICAgICAgICBpZiAodW5pZm9y
bS0+aXNBcnJheSgpKQorICAgICAgICAgICAgc3RkOjpzdHJpbmcgc3RyaW5nID0gdW5pZm9ybS5u
YW1lOworICAgICAgICAgICAgaWYgKHVuaWZvcm0uaXNBcnJheSgpKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIHN0cmluZyArPSAiWzBdIjsKICAgICAgICAgICAgIH0KQEAgLTc2Niw4
ICsxMDM0LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgICpzaXplID0g
dW5pZm9ybS0+ZWxlbWVudENvdW50KCk7Ci0gICAgICAgICp0eXBlID0gdW5pZm9ybS0+dHlwZTsK
KyAgICAgICAgKnNpemUgPSB1bmlmb3JtLmVsZW1lbnRDb3VudCgpOworICAgICAgICAqdHlwZSA9
IHVuaWZvcm0udHlwZTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTc4NiwxMSArMTA1NCwx
MSBAQAogICAgIH0KIH0KIAotR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkK
K0dMaW50IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1Db3VudCgpIGNvbnN0CiB7CiAgICAgaWYg
KG1MaW5rZWQpCiAgICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1Qcm9n
cmFtLT5nZXRVbmlmb3JtcygpLnNpemUoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
TGludD4obURhdGEubVVuaWZvcm1zLnNpemUoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBA
IC03OTgsMTkgKzEwNjYsMTggQEAKICAgICB9CiB9CiAKLUdMaW50IFByb2dyYW06OmdldEFjdGl2
ZVVuaWZvcm1NYXhMZW5ndGgoKQorR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9ybU1heExl
bmd0aCgpIGNvbnN0CiB7Ci0gICAgaW50IG1heExlbmd0aCA9IDA7CisgICAgc2l6ZV90IG1heExl
bmd0aCA9IDA7CiAKICAgICBpZiAobUxpbmtlZCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGlu
dCBudW1Vbmlmb3JtcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVByb2dyYW0tPmdldFVu
aWZvcm1zKCkuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4
ID0gMDsgdW5pZm9ybUluZGV4IDwgbnVtVW5pZm9ybXM7IHVuaWZvcm1JbmRleCsrKQorICAgICAg
ICBmb3IgKGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gOiBtRGF0YS5tVW5pZm9ybXMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbVByb2dyYW0tPmdldFVuaWZvcm1zKClbdW5pZm9y
bUluZGV4XS0+bmFtZS5lbXB0eSgpKQorICAgICAgICAgICAgaWYgKCF1bmlmb3JtLm5hbWUuZW1w
dHkoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gKGludCko
bVByb2dyYW0tPmdldFVuaWZvcm1zKClbdW5pZm9ybUluZGV4XS0+bmFtZS5sZW5ndGgoKSArIDEp
OwotICAgICAgICAgICAgICAgIGlmIChtUHJvZ3JhbS0+Z2V0VW5pZm9ybXMoKVt1bmlmb3JtSW5k
ZXhdLT5pc0FycmF5KCkpCisgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHVuaWZvcm0u
bmFtZS5sZW5ndGgoKSArIDF1OworICAgICAgICAgICAgICAgIGlmICh1bmlmb3JtLmlzQXJyYXko
KSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSAzOyAg
Ly8gQ291bnRpbmcgaW4gIlswXSIuCiAgICAgICAgICAgICAgICAgfQpAQCAtODE5LDEyICsxMDg2
LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbWF4TGVuZ3RoOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHTGludD4obWF4TGVuZ3RoKTsKIH0KIAogR0xpbnQgUHJvZ3JhbTo6
Z2V0QWN0aXZlVW5pZm9ybWkoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0mIHVuaWZvcm0gPSAqbVByb2dyYW0tPmdldFVuaWZv
cm1zKClbaW5kZXhdOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1E
YXRhLm1Vbmlmb3Jtcy5zaXplKCkpOworICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlm
b3JtID0gbURhdGEubVVuaWZvcm1zW2luZGV4XTsKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsK
ICAgICAgIGNhc2UgR0xfVU5JRk9STV9UWVBFOiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxH
TGludD4odW5pZm9ybS50eXBlKTsKQEAgLTg0NCwxNjEgKzExMTIsMTY3IEBACiAKIGJvb2wgUHJv
Z3JhbTo6aXNWYWxpZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKIHsKLSAg
ICBBU1NFUlQocng6OklzSW50ZWdlckNhc3RTYWZlPEdMaW50PihtUHJvZ3JhbS0+Z2V0VW5pZm9y
bUluZGljZXMoKS5zaXplKCkpKTsKLSAgICByZXR1cm4gKGxvY2F0aW9uID49IDAgJiYgbG9jYXRp
b24gPCBzdGF0aWNfY2FzdDxHTGludD4obVByb2dyYW0tPmdldFVuaWZvcm1JbmRpY2VzKCkuc2l6
ZSgpKSk7CisgICAgQVNTRVJUKHJ4OjpJc0ludGVnZXJDYXN0U2FmZTxHTGludD4obURhdGEubVVu
aWZvcm1Mb2NhdGlvbnMuc2l6ZSgpKSk7CisgICAgcmV0dXJuIChsb2NhdGlvbiA+PSAwICYmIHN0
YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwgbURhdGEubVVuaWZvcm1Mb2NhdGlvbnMuc2l6
ZSgpKTsKIH0KIAotTGlua2VkVW5pZm9ybSAqUHJvZ3JhbTo6Z2V0VW5pZm9ybUJ5TG9jYXRpb24o
R0xpbnQgbG9jYXRpb24pIGNvbnN0Citjb25zdCBMaW5rZWRVbmlmb3JtICZQcm9ncmFtOjpnZXRV
bmlmb3JtQnlMb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKIHsKLSAgICByZXR1cm4gbVBy
b2dyYW0tPmdldFVuaWZvcm1CeUxvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICBBU1NFUlQobG9jYXRp
b24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA8IG1EYXRhLm1Vbmlmb3Jt
TG9jYXRpb25zLnNpemUoKSk7CisgICAgcmV0dXJuIG1EYXRhLm1Vbmlmb3Jtc1ttRGF0YS5tVW5p
Zm9ybUxvY2F0aW9uc1tsb2NhdGlvbl0uaW5kZXhdOwogfQogCi1MaW5rZWRVbmlmb3JtICpQcm9n
cmFtOjpnZXRVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAorR0xp
bnQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBj
b25zdAogewotICAgIHJldHVybiBtUHJvZ3JhbS0+Z2V0VW5pZm9ybUJ5TmFtZShuYW1lKTsKKyAg
ICByZXR1cm4gbURhdGEuZ2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpOwogfQogCi1HTGludCBQcm9n
cmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCitHTHVpbnQg
UHJvZ3JhbTo6Z2V0VW5pZm9ybUluZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAog
ewotICAgIHJldHVybiBtUHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpOworICAgIHJl
dHVybiBtRGF0YS5nZXRVbmlmb3JtSW5kZXgobmFtZSk7CiB9CiAKLUdMdWludCBQcm9ncmFtOjpn
ZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpCi17Ci0gICAgcmV0dXJuIG1Q
cm9ncmFtLT5nZXRVbmlmb3JtSW5kZXgobmFtZSk7Ci19Ci0KIHZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikK
IHsKKyAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMSwgdik7CiAgICAg
bVByb2dyYW0tPnNldFVuaWZvcm0xZnYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQ
cm9ncmFtOjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0ICp2KQogeworICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQg
KiAyLCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQsIHYp
OwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CisgICAgc2V0VW5pZm9ybUludGVybmFsKGxv
Y2F0aW9uLCBjb3VudCAqIDMsIHYpOwogICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM2Z2KGxvY2F0
aW9uLCBjb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTRmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKKyAgICBzZXRVbmlm
b3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogNCwgdik7CiAgICAgbVByb2dyYW0tPnNldFVu
aWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlm
b3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsK
KyAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMSwgdik7CiAgICAgbVBy
b2dyYW0tPnNldFVuaWZvcm0xaXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9n
cmFtOjpzZXRVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCAqdikKIHsKKyAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMiwg
dik7CiAgICAgbVByb2dyYW0tPnNldFVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0K
IAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdikKIHsKKyAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24s
IGNvdW50ICogMywgdik7CiAgICAgbVByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24sIGNv
dW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKKyAgICBzZXRVbmlmb3JtSW50ZXJu
YWwobG9jYXRpb24sIGNvdW50ICogNCwgdik7CiAgICAgbVByb2dyYW0tPnNldFVuaWZvcm00aXYo
bG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtMXVpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogeworICAgIHNl
dFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQgKiAxLCB2KTsKICAgICBtUHJvZ3JhbS0+
c2V0VW5pZm9ybTF1aXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpz
ZXRVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50
ICp2KQogeworICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQgKiAyLCB2KTsK
ICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJ1aXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAog
dm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtM3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50ICp2KQogeworICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwg
Y291bnQgKiAzLCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTN1aXYobG9jYXRpb24sIGNv
dW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtNHVpdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogeworICAgIHNldFVuaWZvcm1JbnRl
cm5hbChsb2NhdGlvbiwgY291bnQgKiA0LCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTR1
aXYobG9jYXRpb24sIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0
cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0ICp2KQogeworICAgIHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDwyLCAy
Pihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CiAgICAgbVByb2dyYW0tPnNldFVuaWZv
cm1NYXRyaXgyZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOwogfQogCiB2b2lkIFBy
b2dyYW06OnNldFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CisgICAgc2V0TWF0cml4
VW5pZm9ybUludGVybmFsPDMsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKICAg
ICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAq
dikKIHsKKyAgICBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8NCwgND4obG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHYpOwogICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3Jt
TWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CisgICAgc2V0TWF0cml4VW5pZm9ybUludGVybmFs
PDIsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0
VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAog
dm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CisgICAg
c2V0TWF0cml4VW5pZm9ybUludGVybmFsPDIsIDQ+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M3gy
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdMZmxvYXQgKnYpCiB7CisgICAgc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDMsIDI+KGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1h
dHJpeDN4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9n
cmFtOjpzZXRVbmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CisgICAgc2V0TWF0cml4
VW5pZm9ybUludGVybmFsPDMsIDQ+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKICAg
ICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNw
b3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxv
YXQgKnYpCiB7CisgICAgc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDQsIDI+KGxvY2F0aW9uLCBj
b3VudCwgdHJhbnNwb3NlLCB2KTsKICAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4MmZ2
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRV
bmlmb3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CisgICAgc2V0TWF0cml4VW5pZm9ybUlu
dGVybmFsPDQsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKICAgICBtUHJvZ3Jh
bS0+c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsK
IH0KIAotdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtZnYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
KnYpCit2b2lkIFByb2dyYW06OmdldFVuaWZvcm1mdihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAq
dikgY29uc3QKIHsKLSAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCB2KTsKKyAg
ICBnZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIHYpOwogfQogCi12b2lkIFByb2dyYW06Omdl
dFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xpbnQgKnYpCit2b2lkIFByb2dyYW06OmdldFVu
aWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xpbnQgKnYpIGNvbnN0CiB7Ci0gICAgbVByb2dyYW0t
PmdldFVuaWZvcm1pdihsb2NhdGlvbiwgdik7CisgICAgZ2V0VW5pZm9ybUludGVybmFsKGxvY2F0
aW9uLCB2KTsKIH0KIAotdm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtdWl2KEdMaW50IGxvY2F0aW9u
LCBHTHVpbnQgKnYpCit2b2lkIFByb2dyYW06OmdldFVuaWZvcm11aXYoR0xpbnQgbG9jYXRpb24s
IEdMdWludCAqdikgY29uc3QKIHsKLSAgICBtUHJvZ3JhbS0+Z2V0VW5pZm9ybXVpdihsb2NhdGlv
biwgdik7CisgICAgZ2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCB2KTsKIH0KIAotLy8gQXBw
bGllcyBhbGwgdGhlIHVuaWZvcm1zIHNldCBmb3IgdGhpcyBwcm9ncmFtIG9iamVjdCB0byB0aGUg
cmVuZGVyZXIKLUVycm9yIFByb2dyYW06OmFwcGx5VW5pZm9ybXMoKQotewotICAgIHJldHVybiBt
UHJvZ3JhbS0+YXBwbHlVbmlmb3JtcygpOwotfQotCi1FcnJvciBQcm9ncmFtOjphcHBseVVuaWZv
cm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICZkYXRhKQotewotICAgIHJldHVybiBtUHJvZ3JhbS0+
YXBwbHlVbmlmb3JtQnVmZmVycyhkYXRhLCBtVW5pZm9ybUJsb2NrQmluZGluZ3MpOwotfQotCiB2
b2lkIFByb2dyYW06OmZsYWdGb3JEZWxldGlvbigpCiB7CiAgICAgbURlbGV0ZVN0YXR1cyA9IHRy
dWU7CkBAIC0xMDEyLDIyICsxMjg2LDkxIEBACiB2b2lkIFByb2dyYW06OnZhbGlkYXRlKGNvbnN0
IENhcHMgJmNhcHMpCiB7CiAgICAgbUluZm9Mb2cucmVzZXQoKTsKLSAgICBtVmFsaWRhdGVkID0g
ZmFsc2U7CiAKICAgICBpZiAobUxpbmtlZCkKICAgICB7Ci0gICAgICAgIGFwcGx5VW5pZm9ybXMo
KTsKLSAgICAgICAgbVZhbGlkYXRlZCA9IG1Qcm9ncmFtLT52YWxpZGF0ZVNhbXBsZXJzKCZtSW5m
b0xvZywgY2Fwcyk7CisgICAgICAgIG1WYWxpZGF0ZWQgPSAobVByb2dyYW0tPnZhbGlkYXRlKGNh
cHMsICZtSW5mb0xvZykgPT0gR0xfVFJVRSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAg
ICAgIG1JbmZvTG9nLmFwcGVuZCgiUHJvZ3JhbSBoYXMgbm90IGJlZW4gc3VjY2Vzc2Z1bGx5IGxp
bmtlZC4iKTsKKyAgICAgICAgbUluZm9Mb2cgPDwgIlByb2dyYW0gaGFzIG5vdCBiZWVuIHN1Y2Nl
c3NmdWxseSBsaW5rZWQuIjsKICAgICB9CiB9CiAKIGJvb2wgUHJvZ3JhbTo6dmFsaWRhdGVTYW1w
bGVycyhJbmZvTG9nICppbmZvTG9nLCBjb25zdCBDYXBzICZjYXBzKQogewotICAgIHJldHVybiBt
UHJvZ3JhbS0+dmFsaWRhdGVTYW1wbGVycyhpbmZvTG9nLCBjYXBzKTsKKyAgICAvLyBTa2lwIGNh
Y2hlIGlmIHdlJ3JlIHVzaW5nIGFuIGluZm9sb2csIHNvIHdlIGdldCB0aGUgZnVsbCBlcnJvci4K
KyAgICAvLyBBbHNvIHNraXAgdGhlIGNhY2hlIGlmIHRoZSBzYW1wbGUgbWFwcGluZyBoYXMgY2hh
bmdlZCwgb3IgaWYgd2UgaGF2ZW4ndCBldmVyIHZhbGlkYXRlZC4KKyAgICBpZiAoaW5mb0xvZyA9
PSBudWxscHRyICYmIG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0LnZhbGlkKCkpCisgICAg
eworICAgICAgICByZXR1cm4gbUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQudmFsdWUoKTsK
KyAgICB9CisKKyAgICBpZiAobVRleHR1cmVVbml0VHlwZXNDYWNoZS5lbXB0eSgpKQorICAgIHsK
KyAgICAgICAgbVRleHR1cmVVbml0VHlwZXNDYWNoZS5yZXNpemUoY2Fwcy5tYXhDb21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzLCBHTF9OT05FKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgc3RkOjpmaWxsKG1UZXh0dXJlVW5pdFR5cGVzQ2FjaGUuYmVnaW4oKSwgbVRleHR1cmVVbml0
VHlwZXNDYWNoZS5lbmQoKSwgR0xfTk9ORSk7CisgICAgfQorCisgICAgLy8gaWYgYW55IHR3byBh
Y3RpdmUgc2FtcGxlcnMgaW4gYSBwcm9ncmFtIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGJ1dCBy
ZWZlciB0byB0aGUgc2FtZQorICAgIC8vIHRleHR1cmUgaW1hZ2UgdW5pdCwgYW5kIHRoaXMgaXMg
dGhlIGN1cnJlbnQgcHJvZ3JhbSwgdGhlbiBWYWxpZGF0ZVByb2dyYW0gd2lsbCBmYWlsLCBhbmQK
KyAgICAvLyBEcmF3QXJyYXlzIGFuZCBEcmF3RWxlbWVudHMgd2lsbCBpc3N1ZSB0aGUgSU5WQUxJ
RF9PUEVSQVRJT04gZXJyb3IuCisgICAgZm9yICh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0g
bVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQ7CisgICAgICAgICBzYW1wbGVySW5kZXggPCBtU2Ft
cGxlclVuaWZvcm1SYW5nZS5lbmQ7ICsrc2FtcGxlckluZGV4KQorICAgIHsKKyAgICAgICAgY29u
c3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1EYXRhLm1Vbmlmb3Jtc1tzYW1wbGVySW5kZXhd
OworICAgICAgICBBU1NFUlQodW5pZm9ybS5pc1NhbXBsZXIoKSk7CisKKyAgICAgICAgaWYgKCF1
bmlmb3JtLnN0YXRpY1VzZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNvbnN0
IEdMdWludCAqZGF0YVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1aW50ICo+KHVuaWZv
cm0uZ2V0RGF0YVB0clRvRWxlbWVudCgwKSk7CisgICAgICAgIEdMZW51bSB0ZXh0dXJlVHlwZSAg
ICA9IFNhbXBsZXJUeXBlVG9UZXh0dXJlVHlwZSh1bmlmb3JtLnR5cGUpOworCisgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IHVuaWZvcm0u
ZWxlbWVudENvdW50KCk7ICsrYXJyYXlFbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICBH
THVpbnQgdGV4dHVyZVVuaXQgPSBkYXRhUHRyW2FycmF5RWxlbWVudF07CisKKyAgICAgICAgICAg
IGlmICh0ZXh0dXJlVW5pdCA+PSBjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZm9Mb2cpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAoKmluZm9Mb2cpIDw8ICJTYW1wbGVyIHVuaWZvcm0g
KCIgPDwgdGV4dHVyZVVuaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSBl
eGNlZWRzIEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTICgiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
IDw8ICIpIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtQ2FjaGVkVmFs
aWRhdGVTYW1wbGVyc1Jlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1UZXh0dXJlVW5pdFR5cGVzQ2Fj
aGVbdGV4dHVyZVVuaXRdICE9IEdMX05PTkUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKHRleHR1cmVUeXBlICE9IG1UZXh0dXJlVW5pdFR5cGVzQ2FjaGVbdGV4dHVyZVVuaXRd
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZm9Mb2cpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgqaW5mb0xvZykg
PDwgIlNhbXBsZXJzIG9mIGNvbmZsaWN0aW5nIHR5cGVzIHJlZmVyIHRvIHRoZSBzYW1lIHRleHR1
cmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1hZ2UgdW5pdCAo
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB0ZXh0dXJlVW5pdCA8PCAi
KS4iOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hl
ZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtVGV4dHVyZVVuaXRUeXBlc0Nh
Y2hlW3RleHR1cmVVbml0XSA9IHRleHR1cmVUeXBlOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgbUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQgPSB0cnVlOworICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIFByb2dyYW06OmlzVmFsaWRhdGVkKCkgY29uc3QKQEAg
LTEwMzUsMjkgKzEzNzgsMjUgQEAKICAgICByZXR1cm4gbVZhbGlkYXRlZDsKIH0KIAotdm9pZCBQ
cm9ncmFtOjp1cGRhdGVTYW1wbGVyTWFwcGluZygpCitHTHVpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrQ291bnQoKSBjb25zdAogewotICAgIHJldHVybiBtUHJvZ3JhbS0+dXBkYXRl
U2FtcGxlck1hcHBpbmcoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1aW50PihtRGF0YS5t
VW5pZm9ybUJsb2Nrcy5zaXplKCkpOwogfQogCi1HTHVpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5p
Zm9ybUJsb2NrQ291bnQoKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1Qcm9n
cmFtLT5nZXRVbmlmb3JtQmxvY2tzKCkuc2l6ZSgpKTsKLX0KLQogdm9pZCBQcm9ncmFtOjpnZXRB
Y3RpdmVVbmlmb3JtQmxvY2tOYW1lKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqdW5pZm9ybUJsb2NrTmFtZSkgY29uc3QK
IHsKLSAgICBBU1NFUlQodW5pZm9ybUJsb2NrSW5kZXggPCBtUHJvZ3JhbS0+Z2V0VW5pZm9ybUJs
b2NrcygpLnNpemUoKSk7ICAgLy8gaW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gZ2V0QWN0aXZl
VW5pZm9ybUJsb2NrQ291bnQoKQorICAgIEFTU0VSVCh1bmlmb3JtQmxvY2tJbmRleCA8CisgICAg
ICAgICAgIG1EYXRhLm1Vbmlmb3JtQmxvY2tzLnNpemUoKSk7ICAvLyBpbmRleCBtdXN0IGJlIHNt
YWxsZXIgdGhhbiBnZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpCiAKLSAgICBjb25zdCBVbmlm
b3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9ICptUHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrcygpW3Vu
aWZvcm1CbG9ja0luZGV4XTsKKyAgICBjb25zdCBVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9
IG1EYXRhLm1Vbmlmb3JtQmxvY2tzW3VuaWZvcm1CbG9ja0luZGV4XTsKIAogICAgIGlmIChidWZT
aXplID4gMCkKICAgICB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIHN0cmluZyA9IHVuaWZvcm1CbG9j
ay5uYW1lOwogCi0gICAgICAgIGlmICh1bmlmb3JtQmxvY2suaXNBcnJheUVsZW1lbnQoKSkKKyAg
ICAgICAgaWYgKHVuaWZvcm1CbG9jay5pc0FycmF5KQogICAgICAgICB7Ci0gICAgICAgICAgICBz
dHJpbmcgKz0gQXJyYXlTdHJpbmcodW5pZm9ybUJsb2NrLmVsZW1lbnRJbmRleCk7CisgICAgICAg
ICAgICBzdHJpbmcgKz0gQXJyYXlTdHJpbmcodW5pZm9ybUJsb2NrLmFycmF5RWxlbWVudCk7CiAg
ICAgICAgIH0KIAogICAgICAgICBzdHJuY3B5KHVuaWZvcm1CbG9ja05hbWUsIHN0cmluZy5jX3N0
cigpLCBidWZTaXplKTsKQEAgLTEwNzIsOSArMTQxMSwxMCBAQAogCiB2b2lkIFByb2dyYW06Omdl
dEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKSBjb25zdAogewotICAgIEFTU0VSVCh1bmlmb3JtQmxvY2tJbmRl
eCA8IG1Qcm9ncmFtLT5nZXRVbmlmb3JtQmxvY2tzKCkuc2l6ZSgpKTsgICAvLyBpbmRleCBtdXN0
IGJlIHNtYWxsZXIgdGhhbiBnZXRBY3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpCisgICAgQVNTRVJU
KHVuaWZvcm1CbG9ja0luZGV4IDwKKyAgICAgICAgICAgbURhdGEubVVuaWZvcm1CbG9ja3Muc2l6
ZSgpKTsgIC8vIGluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a0NvdW50KCkKIAotICAgIGNvbnN0IFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gKm1Qcm9n
cmFtLT5nZXRVbmlmb3JtQmxvY2tzKClbdW5pZm9ybUJsb2NrSW5kZXhdOworICAgIGNvbnN0IFVu
aWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gbURhdGEubVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJs
b2NrSW5kZXhdOwogCiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CkBAIC0xMDgyLDcgKzE0MjIs
OCBAQAogICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHVuaWZvcm1CbG9jay5k
YXRhU2l6ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLX05B
TUVfTEVOR1RIOgotICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHVuaWZvcm1C
bG9jay5uYW1lLnNpemUoKSArIDEgKyAodW5pZm9ybUJsb2NrLmlzQXJyYXlFbGVtZW50KCkgPyAz
IDogMCkpOworICAgICAgICAgICpwYXJhbXMgPQorICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
TGludD4odW5pZm9ybUJsb2NrLm5hbWUuc2l6ZSgpICsgMSArICh1bmlmb3JtQmxvY2suaXNBcnJh
eSA/IDMgOiAwKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NL
X0FDVElWRV9VTklGT1JNUzoKICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMaW50Pih1
bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMuc2l6ZSgpKTsKQEAgLTEwOTYsMzEgKzE0
MzcsMzEgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfVU5JRk9S
TV9CTE9DS19SRUZFUkVOQ0VEX0JZX1ZFUlRFWF9TSEFERVI6Ci0gICAgICAgICpwYXJhbXMgPSBz
dGF0aWNfY2FzdDxHTGludD4odW5pZm9ybUJsb2NrLmlzUmVmZXJlbmNlZEJ5VmVydGV4U2hhZGVy
KCkpOworICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4odW5pZm9ybUJsb2Nr
LnZlcnRleFN0YXRpY1VzZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9VTklGT1JN
X0JMT0NLX1JFRkVSRU5DRURfQllfRlJBR01FTlRfU0hBREVSOgotICAgICAgICAqcGFyYW1zID0g
c3RhdGljX2Nhc3Q8R0xpbnQ+KHVuaWZvcm1CbG9jay5pc1JlZmVyZW5jZWRCeUZyYWdtZW50U2hh
ZGVyKCkpOworICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4odW5pZm9ybUJs
b2NrLmZyYWdtZW50U3RhdGljVXNlKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOwogICAgIH0KIH0KIAotR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5pZm9y
bUJsb2NrTWF4TGVuZ3RoKCkKK0dMaW50IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1CbG9ja01h
eExlbmd0aCgpIGNvbnN0CiB7CiAgICAgaW50IG1heExlbmd0aCA9IDA7CiAKICAgICBpZiAobUxp
bmtlZCkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxvY2tzID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihtUHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrcygpLnNpemUo
KSk7CisgICAgICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxvY2tzID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihtRGF0YS5tVW5pZm9ybUJsb2Nrcy5zaXplKCkpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCB1bmlmb3JtQmxvY2tJbmRleCA9IDA7IHVuaWZvcm1CbG9ja0luZGV4IDwg
bnVtVW5pZm9ybUJsb2NrczsgdW5pZm9ybUJsb2NrSW5kZXgrKykKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgVW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSAqbVByb2dyYW0tPmdldFVu
aWZvcm1CbG9ja3MoKVt1bmlmb3JtQmxvY2tJbmRleF07CisgICAgICAgICAgICBjb25zdCBVbmlm
b3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9IG1EYXRhLm1Vbmlmb3JtQmxvY2tzW3VuaWZvcm1CbG9j
a0luZGV4XTsKICAgICAgICAgICAgIGlmICghdW5pZm9ybUJsb2NrLm5hbWUuZW1wdHkoKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoID0gc3RhdGljX2Nh
c3Q8aW50Pih1bmlmb3JtQmxvY2submFtZS5sZW5ndGgoKSArIDEpOworICAgICAgICAgICAgICAg
IGNvbnN0IGludCBsZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQ+KHVuaWZvcm1CbG9jay5uYW1lLmxl
bmd0aCgpKSArIDE7CiAKICAgICAgICAgICAgICAgICAvLyBDb3VudGluZyBpbiAiWzBdIi4KLSAg
ICAgICAgICAgICAgICBjb25zdCBpbnQgYXJyYXlMZW5ndGggPSAodW5pZm9ybUJsb2NrLmlzQXJy
YXlFbGVtZW50KCkgPyAzIDogMCk7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGFycmF5TGVu
Z3RoID0gKHVuaWZvcm1CbG9jay5pc0FycmF5ID8gMyA6IDApOwogCiAgICAgICAgICAgICAgICAg
bWF4TGVuZ3RoID0gc3RkOjptYXgobGVuZ3RoICsgYXJyYXlMZW5ndGgsIG1heExlbmd0aCk7CiAg
ICAgICAgICAgICB9CkBAIC0xMTMwLDUxICsxNDcxLDczIEBACiAgICAgcmV0dXJuIG1heExlbmd0
aDsKIH0KIAotR0x1aW50IFByb2dyYW06OmdldFVuaWZvcm1CbG9ja0luZGV4KGNvbnN0IHN0ZDo6
c3RyaW5nICZuYW1lKQorR0x1aW50IFByb2dyYW06OmdldFVuaWZvcm1CbG9ja0luZGV4KGNvbnN0
IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogewotICAgIHJldHVybiBtUHJvZ3JhbS0+Z2V0VW5p
Zm9ybUJsb2NrSW5kZXgobmFtZSk7CisgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZB
TElEX0lOREVYOworICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5h
bWUobmFtZSwgJnN1YnNjcmlwdCk7CisKKyAgICB1bnNpZ25lZCBpbnQgbnVtVW5pZm9ybUJsb2Nr
cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obURhdGEubVVuaWZvcm1CbG9ja3Muc2l6ZSgp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG51
bVVuaWZvcm1CbG9ja3M7IGJsb2NrSW5kZXgrKykKKyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpV
bmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9IG1EYXRhLm1Vbmlmb3JtQmxvY2tzW2Jsb2NrSW5k
ZXhdOworICAgICAgICBpZiAodW5pZm9ybUJsb2NrLm5hbWUgPT0gYmFzZU5hbWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgYXJyYXlFbGVtZW50WmVybyA9CisgICAgICAgICAg
ICAgICAgKHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYICYmCisgICAgICAgICAgICAgICAg
ICghdW5pZm9ybUJsb2NrLmlzQXJyYXkgfHwgdW5pZm9ybUJsb2NrLmFycmF5RWxlbWVudCA9PSAw
KSk7CisgICAgICAgICAgICBpZiAoc3Vic2NyaXB0ID09IHVuaWZvcm1CbG9jay5hcnJheUVsZW1l
bnQgfHwgYXJyYXlFbGVtZW50WmVybykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gYmxvY2tJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiBHTF9JTlZBTElEX0lOREVYOwogfQogCi1jb25zdCBVbmlmb3JtQmxvY2sgKlByb2dy
YW06OmdldFVuaWZvcm1CbG9ja0J5SW5kZXgoR0x1aW50IGluZGV4KSBjb25zdAorY29uc3QgVW5p
Zm9ybUJsb2NrICZQcm9ncmFtOjpnZXRVbmlmb3JtQmxvY2tCeUluZGV4KEdMdWludCBpbmRleCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbVByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0J5SW5kZXgoaW5k
ZXgpOworICAgIEFTU0VSVChpbmRleCA8IHN0YXRpY19jYXN0PEdMdWludD4obURhdGEubVVuaWZv
cm1CbG9ja3Muc2l6ZSgpKSk7CisgICAgcmV0dXJuIG1EYXRhLm1Vbmlmb3JtQmxvY2tzW2luZGV4
XTsKIH0KIAogdm9pZCBQcm9ncmFtOjpiaW5kVW5pZm9ybUJsb2NrKEdMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7Ci0gICAgbVVuaWZvcm1CbG9j
a0JpbmRpbmdzW3VuaWZvcm1CbG9ja0luZGV4XSA9IHVuaWZvcm1CbG9ja0JpbmRpbmc7CisgICAg
bURhdGEubVVuaWZvcm1CbG9ja0JpbmRpbmdzW3VuaWZvcm1CbG9ja0luZGV4XSA9IHVuaWZvcm1C
bG9ja0JpbmRpbmc7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1CbG9ja0JpbmRpbmcodW5pZm9y
bUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogfQogCiBHTHVpbnQgUHJvZ3JhbTo6
Z2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1t1bmlmb3JtQmxvY2tJbmRleF07Cisg
ICAgcmV0dXJuIG1EYXRhLmdldFVuaWZvcm1CbG9ja0JpbmRpbmcodW5pZm9ybUJsb2NrSW5kZXgp
OwogfQogCiB2b2lkIFByb2dyYW06OnJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKQogewogICAg
IGZvciAodW5zaWduZWQgaW50IGJsb2NrSWQgPSAwOyBibG9ja0lkIDwgSU1QTEVNRU5UQVRJT05f
TUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZFUlM7IGJsb2NrSWQrKykKICAgICB7Ci0g
ICAgICAgIG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tibG9ja0lkXSA9IDA7CisgICAgICAgIG1EYXRh
Lm1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tibG9ja0lkXSA9IDA7CiAgICAgfQorICAgIG1EYXRhLm1B
Y3RpdmVVbmlmb3JtQmxvY2tCaW5kaW5ncy5yZXNldCgpOwogfQogCiB2b2lkIFByb2dyYW06OnNl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpj
b25zdCAqdmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2RlKQogewotICAgIG1UcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzLnJlc2l6ZShjb3VudCk7CisgICAgbURhdGEubVRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ05hbWVzLnJlc2l6ZShjb3VudCk7CiAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykKICAgICB7Ci0gICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzW2ld
ID0gdmFyeWluZ3NbaV07CisgICAgICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdO
YW1lc1tpXSA9IHZhcnlpbmdzW2ldOwogICAgIH0KIAotICAgIG1UcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlck1vZGUgPSBidWZmZXJNb2RlOworICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ck1vZGUgPSBidWZmZXJNb2RlOwogfQogCiB2b2lkIFByb2dyYW06OmdldFRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZyhHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkgY29uc3QKIHsKICAg
ICBpZiAobUxpbmtlZCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1Qcm9ncmFtLT5n
ZXRUcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzKCkuc2l6ZSgpKTsKLSAgICAgICAgY29u
c3QgTGlua2VkVmFyeWluZyAmdmFyeWluZyA9IG1Qcm9ncmFtLT5nZXRUcmFuc2Zvcm1GZWVkYmFj
a0xpbmtlZFZhcnlpbmdzKClbaW5kZXhdOworICAgICAgICBBU1NFUlQoaW5kZXggPCBtRGF0YS5t
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5zaXplKCkpOworICAgICAgICBjb25zdCBzaDo6
VmFyeWluZyAmdmFyeWluZyA9IG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzW2lu
ZGV4XTsKICAgICAgICAgR0xzaXplaSBsYXN0TmFtZUlkeCA9IHN0ZDo6bWluKGJ1ZlNpemUgLSAx
LCBzdGF0aWNfY2FzdDxHTHNpemVpPih2YXJ5aW5nLm5hbWUubGVuZ3RoKCkpKTsKICAgICAgICAg
aWYgKGxlbmd0aCkKICAgICAgICAgewpAQCAtMTE4Miw3ICsxNTQ1LDcgQEAKICAgICAgICAgfQog
ICAgICAgICBpZiAoc2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgKnNpemUgPSB2YXJ5aW5n
LnNpemU7CisgICAgICAgICAgICAqc2l6ZSA9IHZhcnlpbmcuZWxlbWVudENvdW50KCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHR5cGUpCiAgICAgICAgIHsKQEAgLTEyMDAsNyArMTU2Myw3IEBA
CiB7CiAgICAgaWYgKG1MaW5rZWQpCiAgICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
R0xzaXplaT4obVByb2dyYW0tPmdldFRyYW5zZm9ybUZlZWRiYWNrTGlua2VkVmFyeWluZ3MoKS5z
aXplKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xzaXplaT4obURhdGEubVRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuc2l6ZSgpKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
QEAgLTEyMTMsOSArMTU3Niw4IEBACiAgICAgaWYgKG1MaW5rZWQpCiAgICAgewogICAgICAgICBH
THNpemVpIG1heFNpemUgPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Qcm9n
cmFtLT5nZXRUcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzKCkuc2l6ZSgpOyBpKyspCisg
ICAgICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiBtRGF0YS5tVHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5nVmFycykKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgTGlua2Vk
VmFyeWluZyAmdmFyeWluZyA9IG1Qcm9ncmFtLT5nZXRUcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZh
cnlpbmdzKClbaV07CiAgICAgICAgICAgICBtYXhTaXplID0gc3RkOjptYXgobWF4U2l6ZSwgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4odmFyeWluZy5uYW1lLmxlbmd0aCgpICsgMSkpOwogICAgICAgICB9
CiAKQEAgLTEyMjksNjQgKzE1OTEsMTIzIEBACiAKIEdMZW51bSBQcm9ncmFtOjpnZXRUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdAogewotICAgIHJldHVybiBtVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXJNb2RlOworICAgIHJldHVybiBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJNb2RlOwogfQogCi1ib29sIFByb2dyYW06OmxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9n
LCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBTaGFkZXIgKnZlcnRleFNoYWRlcikKKy8vIHN0YXRp
YworYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICpmcmFnbWVudFNoYWRlcikKIHsKLSAgICBz
dGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiAmZnJhZ21lbnRWYXJ5aW5ncyA9IGZyYWdtZW50U2hh
ZGVyLT5nZXRWYXJ5aW5ncygpOwotICAgIHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+ICZ2ZXJ0
ZXhWYXJ5aW5ncyA9IHZlcnRleFNoYWRlci0+Z2V0VmFyeWluZ3MoKTsKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZlcnRleFZhcnlpbmdzICAgPSB2ZXJ0ZXhTaGFkZXItPmdl
dFZhcnlpbmdzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICZmcmFnbWVu
dFZhcnlpbmdzID0gZnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCk7CiAKLSAgICBmb3IgKHNp
emVfdCBmcmFnVmFyeWluZ0luZGV4ID0gMDsgZnJhZ1ZhcnlpbmdJbmRleCA8IGZyYWdtZW50VmFy
eWluZ3Muc2l6ZSgpOyBmcmFnVmFyeWluZ0luZGV4KyspCisgICAgZm9yIChjb25zdCBzaDo6VmFy
eWluZyAmb3V0cHV0IDogZnJhZ21lbnRWYXJ5aW5ncykKICAgICB7Ci0gICAgICAgIFBhY2tlZFZh
cnlpbmcgKmlucHV0ID0gJmZyYWdtZW50VmFyeWluZ3NbZnJhZ1ZhcnlpbmdJbmRleF07CiAgICAg
ICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwogCiAgICAgICAgIC8vIEJ1aWx0LWluIHZhcnlpbmdz
IG9iZXkgc3BlY2lhbCBydWxlcwotICAgICAgICBpZiAoaW5wdXQtPmlzQnVpbHRJbigpKQorICAg
ICAgICBpZiAob3V0cHV0LmlzQnVpbHRJbigpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoc2l6ZV90IHZlcnRWYXJ5aW5nSW5kZXgg
PSAwOyB2ZXJ0VmFyeWluZ0luZGV4IDwgdmVydGV4VmFyeWluZ3Muc2l6ZSgpOyB2ZXJ0VmFyeWlu
Z0luZGV4KyspCisgICAgICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJmlucHV0IDogdmVydGV4
VmFyeWluZ3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFBhY2tlZFZhcnlpbmcgKm91dHB1dCA9
ICZ2ZXJ0ZXhWYXJ5aW5nc1t2ZXJ0VmFyeWluZ0luZGV4XTsKLSAgICAgICAgICAgIGlmIChvdXRw
dXQtPm5hbWUgPT0gaW5wdXQtPm5hbWUpCisgICAgICAgICAgICBpZiAob3V0cHV0Lm5hbWUgPT0g
aW5wdXQubmFtZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWxpbmtWYWxp
ZGF0ZVZhcnlpbmdzKGluZm9Mb2csIG91dHB1dC0+bmFtZSwgKmlucHV0LCAqb3V0cHV0KSkKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoIWlucHV0LmlzQnVpbHRJbigpKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWxpbmtWYWxpZGF0ZVZhcnlpbmdzKGluZm9Mb2csIG91dHB1dC5uYW1lLCBpbnB1dCwg
b3V0cHV0KSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBvdXRwdXQtPnJlZ2lz
dGVySW5kZXggPSBpbnB1dC0+cmVnaXN0ZXJJbmRleDsKLSAgICAgICAgICAgICAgICBvdXRwdXQt
PmNvbHVtbkluZGV4ID0gaW5wdXQtPmNvbHVtbkluZGV4OwotCiAgICAgICAgICAgICAgICAgbWF0
Y2hlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBXZSBwZXJtaXQgdW5tYXRjaGVkLCB1bnJlZmVyZW5jZWQgdmFy
eWluZ3MKLSAgICAgICAgaWYgKCFtYXRjaGVkICYmIGlucHV0LT5zdGF0aWNVc2UpCisgICAgICAg
IGlmICghbWF0Y2hlZCAmJiBvdXRwdXQuc3RhdGljVXNlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpbmZvTG9nLmFwcGVuZCgiRnJhZ21lbnQgdmFyeWluZyAlcyBkb2VzIG5vdCBtYXRjaCBhbnkg
dmVydGV4IHZhcnlpbmciLCBpbnB1dC0+bmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIGluZm9M
b2cgPDwgIkZyYWdtZW50IHZhcnlpbmcgIiA8PCBvdXRwdXQubmFtZSA8PCAiIGRvZXMgbm90IG1h
dGNoIGFueSB2ZXJ0ZXggdmFyeWluZyI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICAvLyBUT0RPKGptYWRpbGwpOiB2ZXJpZnkgbm8gdW5tYXRjaGVk
IHZlcnRleCB2YXJ5aW5ncz8KKwogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFByb2dyYW06
OmxpbmtVbmlmb3JtcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMp
Cit7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZ2ZXJ0ZXhVbmlmb3JtcyAg
ID0gbURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRVbmlmb3JtcygpOworICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiAmZnJhZ21lbnRVbmlmb3JtcyA9IG1EYXRhLm1BdHRh
Y2hlZEZyYWdtZW50U2hhZGVyLT5nZXRVbmlmb3JtcygpOworCisgICAgLy8gQ2hlY2sgdGhhdCB1
bmlmb3JtcyBkZWZpbmVkIGluIHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgYXJlIGlk
ZW50aWNhbAorICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBMaW5rZWRVbmlmb3JtPiBsaW5rZWRV
bmlmb3JtczsKKworICAgIGZvciAoY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0gOiB2
ZXJ0ZXhVbmlmb3JtcykKKyAgICB7CisgICAgICAgIGxpbmtlZFVuaWZvcm1zW3ZlcnRleFVuaWZv
cm0ubmFtZV0gPSBMaW5rZWRVbmlmb3JtKHZlcnRleFVuaWZvcm0pOworICAgIH0KKworICAgIGZv
ciAoY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSA6IGZyYWdtZW50VW5pZm9ybXMp
CisgICAgeworICAgICAgICBhdXRvIGVudHJ5ID0gbGlua2VkVW5pZm9ybXMuZmluZChmcmFnbWVu
dFVuaWZvcm0ubmFtZSk7CisgICAgICAgIGlmIChlbnRyeSAhPSBsaW5rZWRVbmlmb3Jtcy5lbmQo
KSkKKyAgICAgICAgeworICAgICAgICAgICAgTGlua2VkVW5pZm9ybSAqdmVydGV4VW5pZm9ybSAg
ID0gJmVudHJ5LT5zZWNvbmQ7CisgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9y
bU5hbWUgPSAidW5pZm9ybSAnIiArIHZlcnRleFVuaWZvcm0tPm5hbWUgKyAiJyI7CisgICAgICAg
ICAgICBpZiAoIWxpbmtWYWxpZGF0ZVVuaWZvcm1zKGluZm9Mb2csIHVuaWZvcm1OYW1lLCAqdmVy
dGV4VW5pZm9ybSwgZnJhZ21lbnRVbmlmb3JtKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBGbGF0dGVuIHRoZSB1bmlmb3JtcyBsaXN0IChuZXN0ZWQgZmllbGRzKSBpbnRvIGEgc2lt
cGxlIGxpc3QgKG5vIG5lc3RpbmcpLgorICAgIC8vIEFsc28gY2hlY2sgdGhlIG1heGltdW0gdW5p
Zm9ybSB2ZWN0b3IgYW5kIHNhbXBsZXIgY291bnRzLgorICAgIGlmICghZmxhdHRlblVuaWZvcm1z
QW5kQ2hlY2tDYXBzKGNhcHMsIGluZm9Mb2cpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGluZGV4VW5pZm9ybXMoKTsKKworICAgIHJldHVybiB0cnVlOworfQor
Cit2b2lkIFByb2dyYW06OmluZGV4VW5pZm9ybXMoKQoreworICAgIGZvciAoc2l6ZV90IHVuaWZv
cm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG1EYXRhLm1Vbmlmb3Jtcy5zaXplKCk7IHVuaWZv
cm1JbmRleCsrKQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJnVuaWZv
cm0gPSBtRGF0YS5tVW5pZm9ybXNbdW5pZm9ybUluZGV4XTsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBhcnJheUluZGV4ID0gMDsgYXJyYXlJbmRleCA8IHVuaWZvcm0uZWxlbWVudENvdW50
KCk7IGFycmF5SW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF1bmlmb3JtLmlz
QnVpbHRJbigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFzc2lnbiBpbi1v
cmRlciB1bmlmb3JtIGxvY2F0aW9ucworICAgICAgICAgICAgICAgIG1EYXRhLm1Vbmlmb3JtTG9j
YXRpb25zLnB1c2hfYmFjayhnbDo6VmFyaWFibGVMb2NhdGlvbigKKyAgICAgICAgICAgICAgICAg
ICAgdW5pZm9ybS5uYW1lLCBhcnJheUluZGV4LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVu
aWZvcm1JbmRleCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogYm9v
bCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVJbnRlcmZhY2VCbG9ja0ZpZWxkcyhJbmZvTG9nICZpbmZv
TG9nLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9ybU5hbWUsIGNvbnN0IHNoOjpJbnRlcmZhY2VC
bG9ja0ZpZWxkICZ2ZXJ0ZXhVbmlmb3JtLCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAm
ZnJhZ21lbnRVbmlmb3JtKQogewotICAgIGlmICghbGlua1ZhbGlkYXRlVmFyaWFibGVzQmFzZShp
bmZvTG9nLCB1bmlmb3JtTmFtZSwgdmVydGV4VW5pZm9ybSwgZnJhZ21lbnRVbmlmb3JtLCB0cnVl
KSkKKyAgICAvLyBXZSBkb24ndCB2YWxpZGF0ZSBwcmVjaXNpb24gb24gVUJPIGZpZWxkcy4gU2Vl
IHJlc29sdXRpb24gb2YgS2hyb25vcyBidWcgMTAyODcuCisgICAgaWYgKCFsaW5rVmFsaWRhdGVW
YXJpYWJsZXNCYXNlKGluZm9Mb2csIHVuaWZvcm1OYW1lLCB2ZXJ0ZXhVbmlmb3JtLCBmcmFnbWVu
dFVuaWZvcm0sIGZhbHNlKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAodmVydGV4VW5pZm9ybS5pc1Jvd01ham9yTGF5b3V0ICE9IGZyYWdtZW50VW5pZm9y
bS5pc1Jvd01ham9yTGF5b3V0KQogICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIk1hdHJp
eCBwYWNraW5ncyBmb3IgJXMgZGlmZmVyIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFk
ZXJzIiwgdW5pZm9ybU5hbWUuY19zdHIoKSk7CisgICAgICAgIGluZm9Mb2cgPDwgIk1hdHJpeCBw
YWNraW5ncyBmb3IgIiA8PCB1bmlmb3JtTmFtZSA8PCAiIGRpZmZlciBiZXR3ZWVuIHZlcnRleCBh
bmQgZnJhZ21lbnQgc2hhZGVycyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTEyOTQsMTU1ICsxNzE1LDE2OCBAQAogfQogCiAvLyBEZXRlcm1pbmVzIHRoZSBtYXBwaW5nIGJl
dHdlZW4gR0wgYXR0cmlidXRlcyBhbmQgRGlyZWN0M0QgOSB2ZXJ0ZXggc3RyZWFtIHVzYWdlIGlu
ZGljZXMKLWJvb2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3QgRGF0YSAmZGF0YSwKK2Jv
b2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZUJpbmRpbmdzICZhdHRyaWJ1dGVCaW5kaW5ncywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIp
CiB7CiAgICAgdW5zaWduZWQgaW50IHVzZWRMb2NhdGlvbnMgPSAwOwotICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZzaGFkZXJBdHRyaWJ1dGVzID0gdmVydGV4U2hhZGVyLT5n
ZXRBY3RpdmVBdHRyaWJ1dGVzKCk7CisgICAgbURhdGEubUF0dHJpYnV0ZXMgICAgICAgICAgPSB2
ZXJ0ZXhTaGFkZXItPmdldEFjdGl2ZUF0dHJpYnV0ZXMoKTsKICAgICBHTHVpbnQgbWF4QXR0cmli
cyA9IGRhdGEuY2Fwcy0+bWF4VmVydGV4QXR0cmlidXRlczsKIAogICAgIC8vIFRPRE8oam1hZGls
bCk6IGhhbmRsZSBhbGlhc2luZyByb2J1c3RseQotICAgIGlmIChzaGFkZXJBdHRyaWJ1dGVzLnNp
emUoKSA+PSBtYXhBdHRyaWJzKQorICAgIGlmIChtRGF0YS5tQXR0cmlidXRlcy5zaXplKCkgPiBt
YXhBdHRyaWJzKQogICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlRvbyBtYW55IHZlcnRl
eCBhdHRyaWJ1dGVzLiIpOworICAgICAgICBpbmZvTG9nIDw8ICJUb28gbWFueSB2ZXJ0ZXggYXR0
cmlidXRlcy4iOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgc3RkOjp2ZWN0
b3I8c2g6OkF0dHJpYnV0ZSAqPiB1c2VkQXR0cmliTWFwKGRhdGEuY2Fwcy0+bWF4VmVydGV4QXR0
cmlidXRlcywgbnVsbHB0cik7CisKICAgICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGEg
YmluZGluZyBsb2NhdGlvbgotICAgIGZvciAodW5zaWduZWQgaW50IGF0dHJpYnV0ZUluZGV4ID0g
MDsgYXR0cmlidXRlSW5kZXggPCBzaGFkZXJBdHRyaWJ1dGVzLnNpemUoKTsgYXR0cmlidXRlSW5k
ZXgrKykKKyAgICBmb3IgKHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1EYXRhLm1BdHRyaWJ1
dGVzKQogICAgIHsKLSAgICAgICAgY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlID0gc2hh
ZGVyQXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07Ci0KKyAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogZG8gc3RhdGljVXNlIGZpbHRlcmluZyBzdGVwIGhlcmUsIG9yIG5vdCBhdCBhbGwKICAgICAg
ICAgQVNTRVJUKGF0dHJpYnV0ZS5zdGF0aWNVc2UpOwogCi0gICAgICAgIGNvbnN0IGludCBsb2Nh
dGlvbiA9IGF0dHJpYnV0ZS5sb2NhdGlvbiA9PSAtMSA/IGF0dHJpYnV0ZUJpbmRpbmdzLmdldEF0
dHJpYnV0ZUJpbmRpbmcoYXR0cmlidXRlLm5hbWUpIDogYXR0cmlidXRlLmxvY2F0aW9uOworICAg
ICAgICBpbnQgYmluZGluZ0xvY2F0aW9uID0gYXR0cmlidXRlQmluZGluZ3MuZ2V0QXR0cmlidXRl
QmluZGluZyhhdHRyaWJ1dGUubmFtZSk7CisgICAgICAgIGlmIChhdHRyaWJ1dGUubG9jYXRpb24g
PT0gLTEgJiYgYmluZGluZ0xvY2F0aW9uICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBh
dHRyaWJ1dGUubG9jYXRpb24gPSBiaW5kaW5nTG9jYXRpb247CisgICAgICAgIH0KIAotICAgICAg
ICBtUHJvZ3JhbS0+c2V0U2hhZGVyQXR0cmlidXRlKGF0dHJpYnV0ZUluZGV4LCBhdHRyaWJ1dGUp
OwotCi0gICAgICAgIGlmIChsb2NhdGlvbiAhPSAtMSkgICAvLyBTZXQgYnkgZ2xCaW5kQXR0cmli
TG9jYXRpb24gb3IgYnkgbG9jYXRpb24gbGF5b3V0IHF1YWxpZmllcgorICAgICAgICBpZiAoYXR0
cmlidXRlLmxvY2F0aW9uICE9IC0xKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBpbnQg
cm93cyA9IFZhcmlhYmxlUmVnaXN0ZXJDb3VudChhdHRyaWJ1dGUudHlwZSk7CisgICAgICAgICAg
ICAvLyBMb2NhdGlvbiBpcyBzZXQgYnkgZ2xCaW5kQXR0cmliTG9jYXRpb24gb3IgYnkgbG9jYXRp
b24gbGF5b3V0IHF1YWxpZmllcgorICAgICAgICAgICAgY29uc3QgaW50IHJlZ3MgPSBWYXJpYWJs
ZVJlZ2lzdGVyQ291bnQoYXR0cmlidXRlLnR5cGUpOwogCi0gICAgICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8R0x1aW50Pihyb3dzICsgbG9jYXRpb24pID4gbWF4QXR0cmlicykKKyAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHJlZ3MgKyBhdHRyaWJ1dGUubG9jYXRpb24pID4gbWF4
QXR0cmlicykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgi
QWN0aXZlIGF0dHJpYnV0ZSAoJXMpIGF0IGxvY2F0aW9uICVkIGlzIHRvbyBiaWcgdG8gZml0Iiwg
YXR0cmlidXRlLm5hbWUuY19zdHIoKSwgbG9jYXRpb24pOworICAgICAgICAgICAgICAgIGluZm9M
b2cgPDwgIkFjdGl2ZSBhdHRyaWJ1dGUgKCIgPDwgYXR0cmlidXRlLm5hbWUgPDwgIikgYXQgbG9j
YXRpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgYXR0cmlidXRlLmxvY2F0aW9uIDw8
ICIgaXMgdG9vIGJpZyB0byBmaXQiOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCByb3dz
OyByb3crKykKKyAgICAgICAgICAgIGZvciAoaW50IHJlZyA9IDA7IHJlZyA8IHJlZ3M7IHJlZysr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGludCByb3dMb2NhdGlvbiA9
IGxvY2F0aW9uICsgcm93OwotICAgICAgICAgICAgICAgIHNoOjpTaGFkZXJWYXJpYWJsZSAmbGlu
a2VkQXR0cmlidXRlID0gbUxpbmtlZEF0dHJpYnV0ZVtyb3dMb2NhdGlvbl07CisgICAgICAgICAg
ICAgICAgY29uc3QgaW50IHJlZ0xvY2F0aW9uICAgICAgICAgICAgICAgPSBhdHRyaWJ1dGUubG9j
YXRpb24gKyByZWc7CisgICAgICAgICAgICAgICAgc2g6OlNoYWRlclZhcmlhYmxlICpsaW5rZWRB
dHRyaWJ1dGUgPSB1c2VkQXR0cmliTWFwW3JlZ0xvY2F0aW9uXTsKIAogICAgICAgICAgICAgICAg
IC8vIEluIEdMU0wgMy4wMCwgYXR0cmlidXRlIGFsaWFzaW5nIHByb2R1Y2VzIGEgbGluayBlcnJv
cgogICAgICAgICAgICAgICAgIC8vIEluIEdMU0wgMS4wMCwgYXR0cmlidXRlIGFsaWFzaW5nIGlz
IGFsbG93ZWQsIGJ1dCBBTkdMRSBjdXJyZW50bHkgaGFzIGEgYnVnCi0gICAgICAgICAgICAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogZml4IGFsaWFzaW5nIG9uIEVTMgotICAgICAgICAgICAgICAgIC8v
IGlmIChtUHJvZ3JhbS0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKKyAgICAgICAgICAgICAg
ICBpZiAobGlua2VkQXR0cmlidXRlKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFsaW5rZWRBdHRyaWJ1dGUubmFtZS5lbXB0eSgpKQorICAgICAgICAgICAgICAg
ICAgICAvLyBUT0RPKGptYWRpbGwpOiBmaXggYWxpYXNpbmcgb24gRVMyCisgICAgICAgICAgICAg
ICAgICAgIC8vIGlmIChtUHJvZ3JhbS0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQo
IkF0dHJpYnV0ZSAnJXMnIGFsaWFzZXMgYXR0cmlidXRlICclcycgYXQgbG9jYXRpb24gJWQiLCBh
dHRyaWJ1dGUubmFtZS5jX3N0cigpLCBsaW5rZWRBdHRyaWJ1dGUubmFtZS5jX3N0cigpLCByb3dM
b2NhdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJBdHRyaWJ1dGUg
JyIgPDwgYXR0cmlidXRlLm5hbWUgPDwgIicgYWxpYXNlcyBhdHRyaWJ1dGUgJyIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgbGlua2VkQXR0cmlidXRlLT5uYW1lIDw8ICInIGF0
IGxvY2F0aW9uICIgPDwgcmVnTG9jYXRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dXNlZEF0dHJpYk1hcFtyZWdMb2NhdGlvbl0gPSAmYXR0cmlidXRlOworICAgICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGxpbmtlZEF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLSAgICAg
ICAgICAgICAgICB1c2VkTG9jYXRpb25zIHw9IDEgPDwgcm93TG9jYXRpb247CisgICAgICAgICAg
ICAgICAgdXNlZExvY2F0aW9ucyB8PSAxIDw8IHJlZ0xvY2F0aW9uOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gTGluayBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgaGF2
ZSBhIGJpbmRpbmcgbG9jYXRpb24KLSAgICBmb3IgKHVuc2lnbmVkIGludCBhdHRyaWJ1dGVJbmRl
eCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgc2hhZGVyQXR0cmlidXRlcy5zaXplKCk7IGF0dHJpYnV0
ZUluZGV4KyspCisgICAgZm9yIChzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5tQXR0
cmlidXRlcykKICAgICB7Ci0gICAgICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA9
IHNoYWRlckF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOwotCiAgICAgICAgIEFTU0VSVChhdHRy
aWJ1dGUuc3RhdGljVXNlKTsKIAotICAgICAgICBjb25zdCBpbnQgbG9jYXRpb24gPSBhdHRyaWJ1
dGUubG9jYXRpb24gPT0gLTEgPyBhdHRyaWJ1dGVCaW5kaW5ncy5nZXRBdHRyaWJ1dGVCaW5kaW5n
KGF0dHJpYnV0ZS5uYW1lKSA6IGF0dHJpYnV0ZS5sb2NhdGlvbjsKLQotICAgICAgICBpZiAobG9j
YXRpb24gPT0gLTEpICAgLy8gTm90IHNldCBieSBnbEJpbmRBdHRyaWJMb2NhdGlvbiBvciBieSBs
b2NhdGlvbiBsYXlvdXQgcXVhbGlmaWVyCisgICAgICAgIC8vIE5vdCBzZXQgYnkgZ2xCaW5kQXR0
cmliTG9jYXRpb24gb3IgYnkgbG9jYXRpb24gbGF5b3V0IHF1YWxpZmllcgorICAgICAgICBpZiAo
YXR0cmlidXRlLmxvY2F0aW9uID09IC0xKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgcm93
cyA9IFZhcmlhYmxlUmVnaXN0ZXJDb3VudChhdHRyaWJ1dGUudHlwZSk7Ci0gICAgICAgICAgICBp
bnQgYXZhaWxhYmxlSW5kZXggPSBBbGxvY2F0ZUZpcnN0RnJlZUJpdHMoJnVzZWRMb2NhdGlvbnMs
IHJvd3MsIG1heEF0dHJpYnMpOworICAgICAgICAgICAgaW50IHJlZ3MgICAgICAgICAgID0gVmFy
aWFibGVSZWdpc3RlckNvdW50KGF0dHJpYnV0ZS50eXBlKTsKKyAgICAgICAgICAgIGludCBhdmFp
bGFibGVJbmRleCA9IEFsbG9jYXRlRmlyc3RGcmVlQml0cygmdXNlZExvY2F0aW9ucywgcmVncywg
bWF4QXR0cmlicyk7CiAKLSAgICAgICAgICAgIGlmIChhdmFpbGFibGVJbmRleCA9PSAtMSB8fCBz
dGF0aWNfY2FzdDxHTHVpbnQ+KGF2YWlsYWJsZUluZGV4ICsgcm93cykgPiBtYXhBdHRyaWJzKQor
ICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUluZGV4ID09IC0xIHx8IHN0YXRpY19jYXN0PEdMdWlu
dD4oYXZhaWxhYmxlSW5kZXggKyByZWdzKSA+IG1heEF0dHJpYnMpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlRvbyBtYW55IGFjdGl2ZSBhdHRyaWJ1dGVz
ICglcykiLCBhdHRyaWJ1dGUubmFtZS5jX3N0cigpKTsKLQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgICAvLyBGYWlsIHRvIGxpbmsKKyAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJU
b28gbWFueSBhY3RpdmUgYXR0cmlidXRlcyAoIiA8PCBhdHRyaWJ1dGUubmFtZSA8PCAiKSI7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBtTGlua2VkQXR0cmlidXRlW2F2YWlsYWJsZUluZGV4XSA9IGF0dHJpYnV0ZTsKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZS5sb2NhdGlvbiA9IGF2YWlsYWJsZUluZGV4OwogICAgICAgICB9CiAgICAg
fQogCi0gICAgZm9yIChHTHVpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8
IG1heEF0dHJpYnM7KQorICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDog
bURhdGEubUF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBpbnQgaW5kZXggPSB2ZXJ0ZXhTaGFk
ZXItPmdldFNlbWFudGljSW5kZXgobUxpbmtlZEF0dHJpYnV0ZVthdHRyaWJ1dGVJbmRleF0ubmFt
ZSk7Ci0gICAgICAgIGludCByb3dzID0gVmFyaWFibGVSZWdpc3RlckNvdW50KG1MaW5rZWRBdHRy
aWJ1dGVbYXR0cmlidXRlSW5kZXhdLnR5cGUpOworICAgICAgICBBU1NFUlQoYXR0cmlidXRlLnN0
YXRpY1VzZSk7CisgICAgICAgIEFTU0VSVChhdHRyaWJ1dGUubG9jYXRpb24gIT0gLTEpOworICAg
ICAgICBpbnQgcmVncyA9IFZhcmlhYmxlUmVnaXN0ZXJDb3VudChhdHRyaWJ1dGUudHlwZSk7CiAK
LSAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCByb3dzOyByKyspCisgICAgICAgIGZvciAoaW50
IHIgPSAwOyByIDwgcmVnczsgcisrKQogICAgICAgICB7Ci0gICAgICAgICAgICBtUHJvZ3JhbS0+
Z2V0U2VtYW50aWNJbmRleGVzKClbYXR0cmlidXRlSW5kZXgrK10gPSBpbmRleCsrOworICAgICAg
ICAgICAgbURhdGEubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2suc2V0KGF0dHJpYnV0ZS5sb2Nh
dGlvbiArIHIpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgUHJvZ3JhbTo6bGlua1VuaWZvcm1CbG9ja3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgU2hh
ZGVyICZ2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFNoYWRlciAmZnJhZ21lbnRTaGFkZXIsIGNvbnN0IENh
cHMgJmNhcHMpCitib29sIFByb2dyYW06OmxpbmtVbmlmb3JtQmxvY2tzKEluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IENhcHMgJmNhcHMpCiB7CisgICAgY29uc3QgU2hhZGVyICZ2ZXJ0ZXhTaGFkZXIg
ICA9ICptRGF0YS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXI7CisgICAgY29uc3QgU2hhZGVyICZmcmFn
bWVudFNoYWRlciA9ICptRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcjsKKwogICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJnZlcnRleEludGVyZmFjZUJsb2NrcyA9
IHZlcnRleFNoYWRlci5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZmcmFnbWVudEludGVyZmFjZUJsb2NrcyA9IGZyYWdtZW50
U2hhZGVyLmdldEludGVyZmFjZUJsb2NrcygpOworCiAgICAgLy8gQ2hlY2sgdGhhdCBpbnRlcmZh
Y2UgYmxvY2tzIGRlZmluZWQgaW4gdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyBhcmUg
aWRlbnRpY2FsCiAgICAgdHlwZWRlZiBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgY29uc3Qgc2g6Oklu
dGVyZmFjZUJsb2NrKj4gVW5pZm9ybUJsb2NrTWFwOwogICAgIFVuaWZvcm1CbG9ja01hcCBsaW5r
ZWRVbmlmb3JtQmxvY2tzOwotICAgIGZvciAodW5zaWduZWQgaW50IGJsb2NrSW5kZXggPSAwOyBi
bG9ja0luZGV4IDwgdmVydGV4SW50ZXJmYWNlQmxvY2tzLnNpemUoKTsgYmxvY2tJbmRleCsrKQor
CisgICAgR0x1aW50IHZlcnRleEJsb2NrQ291bnQgPSAwOworICAgIGZvciAoY29uc3Qgc2g6Oklu
dGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9jayA6IHZlcnRleEludGVyZmFjZUJsb2Nr
cykKICAgICB7Ci0gICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVydGV4SW50ZXJm
YWNlQmxvY2sgPSB2ZXJ0ZXhJbnRlcmZhY2VCbG9ja3NbYmxvY2tJbmRleF07CiAgICAgICAgIGxp
bmtlZFVuaWZvcm1CbG9ja3NbdmVydGV4SW50ZXJmYWNlQmxvY2submFtZV0gPSAmdmVydGV4SW50
ZXJmYWNlQmxvY2s7Ci0gICAgfQotICAgIGZvciAodW5zaWduZWQgaW50IGJsb2NrSW5kZXggPSAw
OyBibG9ja0luZGV4IDwgZnJhZ21lbnRJbnRlcmZhY2VCbG9ja3Muc2l6ZSgpOyBibG9ja0luZGV4
KyspCi0gICAgewotICAgICAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmZyYWdtZW50SW50
ZXJmYWNlQmxvY2sgPSBmcmFnbWVudEludGVyZmFjZUJsb2Nrc1tibG9ja0luZGV4XTsKLSAgICAg
ICAgVW5pZm9ybUJsb2NrTWFwOjpjb25zdF9pdGVyYXRvciBlbnRyeSA9IGxpbmtlZFVuaWZvcm1C
bG9ja3MuZmluZChmcmFnbWVudEludGVyZmFjZUJsb2NrLm5hbWUpOwotICAgICAgICBpZiAoZW50
cnkgIT0gbGlua2VkVW5pZm9ybUJsb2Nrcy5lbmQoKSkKKworICAgICAgICAvLyBOb3RlOiBzaGFy
ZWQgYW5kIHN0ZDE0MCBsYXlvdXRzIGFyZSBhbHdheXMgY29uc2lkZXJlZCBhY3RpdmUKKyAgICAg
ICAgaWYgKHZlcnRleEludGVyZmFjZUJsb2NrLnN0YXRpY1VzZSB8fCB2ZXJ0ZXhJbnRlcmZhY2VC
bG9jay5sYXlvdXQgIT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKICAgICAgICAgewotICAgICAg
ICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9jayA9ICpl
bnRyeS0+c2Vjb25kOwotICAgICAgICAgICAgaWYgKCFhcmVNYXRjaGluZ0ludGVyZmFjZUJsb2Nr
cyhpbmZvTG9nLCB2ZXJ0ZXhJbnRlcmZhY2VCbG9jaywgZnJhZ21lbnRJbnRlcmZhY2VCbG9jaykp
CisgICAgICAgICAgICBpZiAoKyt2ZXJ0ZXhCbG9ja0NvdW50ID4gY2Fwcy5tYXhWZXJ0ZXhVbmlm
b3JtQmxvY2tzKQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIlZl
cnRleCBzaGFkZXIgdW5pZm9ybSBibG9jayBjb3VudCBleGNlZWQgR0xfTUFYX1ZFUlRFWF9VTklG
T1JNX0JMT0NLUyAoIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgY2Fwcy5tYXhWZXJ0ZXhV
bmlmb3JtQmxvY2tzIDw8ICIpIjsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tJ
bmRleCA9IDA7IGJsb2NrSW5kZXggPCB2ZXJ0ZXhJbnRlcmZhY2VCbG9ja3Muc2l6ZSgpOyBibG9j
a0luZGV4KyspCisKKyAgICBHTHVpbnQgZnJhZ21lbnRCbG9ja0NvdW50ID0gMDsKKyAgICBmb3Ig
KGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmZnJhZ21lbnRJbnRlcmZhY2VCbG9jayA6IGZyYWdt
ZW50SW50ZXJmYWNlQmxvY2tzKQogICAgIHsKLSAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJs
b2NrICZpbnRlcmZhY2VCbG9jayA9IHZlcnRleEludGVyZmFjZUJsb2Nrc1tibG9ja0luZGV4XTsK
LSAgICAgICAgLy8gTm90ZTogc2hhcmVkIGFuZCBzdGQxNDAgbGF5b3V0cyBhcmUgYWx3YXlzIGNv
bnNpZGVyZWQgYWN0aXZlCi0gICAgICAgIGlmIChpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2UgfHwg
aW50ZXJmYWNlQmxvY2subGF5b3V0ICE9IHNoOjpCTE9DS0xBWU9VVF9QQUNLRUQpCisgICAgICAg
IGF1dG8gZW50cnkgPSBsaW5rZWRVbmlmb3JtQmxvY2tzLmZpbmQoZnJhZ21lbnRJbnRlcmZhY2VC
bG9jay5uYW1lKTsKKyAgICAgICAgaWYgKGVudHJ5ICE9IGxpbmtlZFVuaWZvcm1CbG9ja3MuZW5k
KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbVByb2dyYW0tPmRlZmluZVVuaWZvcm1C
bG9jayhpbmZvTG9nLCB2ZXJ0ZXhTaGFkZXIsIGludGVyZmFjZUJsb2NrLCBjYXBzKSkKKyAgICAg
ICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVydGV4SW50ZXJmYWNlQmxvY2sgPSAq
ZW50cnktPnNlY29uZDsKKyAgICAgICAgICAgIGlmICghYXJlTWF0Y2hpbmdJbnRlcmZhY2VCbG9j
a3MoaW5mb0xvZywgdmVydGV4SW50ZXJmYWNlQmxvY2ssIGZyYWdtZW50SW50ZXJmYWNlQmxvY2sp
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgIH0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBibG9ja0luZGV4
ID0gMDsgYmxvY2tJbmRleCA8IGZyYWdtZW50SW50ZXJmYWNlQmxvY2tzLnNpemUoKTsgYmxvY2tJ
bmRleCsrKQotICAgIHsKLSAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZh
Y2VCbG9jayA9IGZyYWdtZW50SW50ZXJmYWNlQmxvY2tzW2Jsb2NrSW5kZXhdOworCiAgICAgICAg
IC8vIE5vdGU6IHNoYXJlZCBhbmQgc3RkMTQwIGxheW91dHMgYXJlIGFsd2F5cyBjb25zaWRlcmVk
IGFjdGl2ZQotICAgICAgICBpZiAoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlIHx8IGludGVyZmFj
ZUJsb2NrLmxheW91dCAhPSBzaDo6QkxPQ0tMQVlPVVRfUEFDS0VEKQorICAgICAgICBpZiAoZnJh
Z21lbnRJbnRlcmZhY2VCbG9jay5zdGF0aWNVc2UgfHwKKyAgICAgICAgICAgIGZyYWdtZW50SW50
ZXJmYWNlQmxvY2subGF5b3V0ICE9IHNoOjpCTE9DS0xBWU9VVF9QQUNLRUQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbVByb2dyYW0tPmRlZmluZVVuaWZvcm1CbG9jayhpbmZvTG9nLCBm
cmFnbWVudFNoYWRlciwgaW50ZXJmYWNlQmxvY2ssIGNhcHMpKQorICAgICAgICAgICAgaWYgKCsr
ZnJhZ21lbnRCbG9ja0NvdW50ID4gY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MpCiAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5mb0xvZworICAgICAgICAgICAgICAgICAgICA8
PCAiRnJhZ21lbnQgc2hhZGVyIHVuaWZvcm0gYmxvY2sgY291bnQgZXhjZWVkIEdMX01BWF9GUkFH
TUVOVF9VTklGT1JNX0JMT0NLUyAoIgorICAgICAgICAgICAgICAgICAgICA8PCBjYXBzLm1heEZy
YWdtZW50VW5pZm9ybUJsb2NrcyA8PCAiKSI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTE0NTMsMjggKzE4ODcsMzQgQEAKICAgICAvLyB2YWxpZGF0ZSBibG9ja3MgZm9yIHRo
ZSBzYW1lIG1lbWJlciB0eXBlcwogICAgIGlmICh2ZXJ0ZXhJbnRlcmZhY2VCbG9jay5maWVsZHMu
c2l6ZSgpICE9IGZyYWdtZW50SW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSkKICAgICB7Ci0g
ICAgICAgIGluZm9Mb2cuYXBwZW5kKCJUeXBlcyBmb3IgaW50ZXJmYWNlIGJsb2NrICclcycgZGlm
ZmVyIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzIiwgYmxvY2tOYW1lKTsKKyAg
ICAgICAgaW5mb0xvZyA8PCAiVHlwZXMgZm9yIGludGVyZmFjZSBibG9jayAnIiA8PCBibG9ja05h
bWUKKyAgICAgICAgICAgICAgICA8PCAiJyBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdt
ZW50IHNoYWRlcnMiOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICh2ZXJ0
ZXhJbnRlcmZhY2VCbG9jay5hcnJheVNpemUgIT0gZnJhZ21lbnRJbnRlcmZhY2VCbG9jay5hcnJh
eVNpemUpCiAgICAgewotICAgICAgICBpbmZvTG9nLmFwcGVuZCgiQXJyYXkgc2l6ZXMgZGlmZmVy
IGZvciBpbnRlcmZhY2UgYmxvY2sgJyVzJyBiZXR3ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hh
ZGVycyIsIGJsb2NrTmFtZSk7CisgICAgICAgIGluZm9Mb2cgPDwgIkFycmF5IHNpemVzIGRpZmZl
ciBmb3IgaW50ZXJmYWNlIGJsb2NrICciIDw8IGJsb2NrTmFtZQorICAgICAgICAgICAgICAgIDw8
ICInIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzIjsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICBpZiAodmVydGV4SW50ZXJmYWNlQmxvY2subGF5b3V0ICE9IGZy
YWdtZW50SW50ZXJmYWNlQmxvY2subGF5b3V0IHx8IHZlcnRleEludGVyZmFjZUJsb2NrLmlzUm93
TWFqb3JMYXlvdXQgIT0gZnJhZ21lbnRJbnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KQog
ICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkxheW91dCBxdWFsaWZpZXJzIGRpZmZlciBm
b3IgaW50ZXJmYWNlIGJsb2NrICclcycgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRl
cnMiLCBibG9ja05hbWUpOworICAgICAgICBpbmZvTG9nIDw8ICJMYXlvdXQgcXVhbGlmaWVycyBk
aWZmZXIgZm9yIGludGVyZmFjZSBibG9jayAnIiA8PCBibG9ja05hbWUKKyAgICAgICAgICAgICAg
ICA8PCAiJyBiZXR3ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyI7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IG51bUJsb2NrTWVtYmVy
cyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmVydGV4SW50ZXJmYWNlQmxvY2suZmllbGRz
LnNpemUoKSk7CisgICAgY29uc3QgdW5zaWduZWQgaW50IG51bUJsb2NrTWVtYmVycyA9CisgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmVydGV4SW50ZXJmYWNlQmxvY2suZmllbGRz
LnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tNZW1iZXJJbmRleCA9IDA7IGJs
b2NrTWVtYmVySW5kZXggPCBudW1CbG9ja01lbWJlcnM7IGJsb2NrTWVtYmVySW5kZXgrKykKICAg
ICB7CiAgICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZ2ZXJ0ZXhNZW1iZXIg
PSB2ZXJ0ZXhJbnRlcmZhY2VCbG9jay5maWVsZHNbYmxvY2tNZW1iZXJJbmRleF07CiAgICAgICAg
IGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZmcmFnbWVudE1lbWJlciA9IGZyYWdtZW50
SW50ZXJmYWNlQmxvY2suZmllbGRzW2Jsb2NrTWVtYmVySW5kZXhdOwogICAgICAgICBpZiAodmVy
dGV4TWVtYmVyLm5hbWUgIT0gZnJhZ21lbnRNZW1iZXIubmFtZSkKICAgICAgICAgewotICAgICAg
ICAgICAgaW5mb0xvZy5hcHBlbmQoIk5hbWUgbWlzbWF0Y2ggZm9yIGZpZWxkICVkIG9mIGludGVy
ZmFjZSBibG9jayAnJXMnOiAoaW4gdmVydGV4OiAnJXMnLCBpbiBmcmFnbWVudDogJyVzJykiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tNZW1iZXJJbmRleCwgYmxvY2tOYW1lLCB2
ZXJ0ZXhNZW1iZXIubmFtZS5jX3N0cigpLCBmcmFnbWVudE1lbWJlci5uYW1lLmNfc3RyKCkpOwor
ICAgICAgICAgICAgaW5mb0xvZyA8PCAiTmFtZSBtaXNtYXRjaCBmb3IgZmllbGQgIiA8PCBibG9j
a01lbWJlckluZGV4CisgICAgICAgICAgICAgICAgICAgIDw8ICIgb2YgaW50ZXJmYWNlIGJsb2Nr
ICciIDw8IGJsb2NrTmFtZQorICAgICAgICAgICAgICAgICAgICA8PCAiJzogKGluIHZlcnRleDog
JyIgPDwgdmVydGV4TWVtYmVyLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgPDwgIicsIGluIGZy
YWdtZW50OiAnIiA8PCBmcmFnbWVudE1lbWJlci5uYW1lIDw8ICInKSI7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgc3RkOjpzdHJpbmcgbWVtYmVyTmFtZSA9
ICJpbnRlcmZhY2UgYmxvY2sgJyIgKyB2ZXJ0ZXhJbnRlcmZhY2VCbG9jay5uYW1lICsgIicgbWVt
YmVyICciICsgdmVydGV4TWVtYmVyLm5hbWUgKyAiJyI7CkBAIC0xNDkxLDIzICsxOTMxLDIzIEBA
CiB7CiAgICAgaWYgKHZlcnRleFZhcmlhYmxlLnR5cGUgIT0gZnJhZ21lbnRWYXJpYWJsZS50eXBl
KQogICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIlR5cGVzIGZvciAlcyBkaWZmZXIgYmV0
d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMiLCB2YXJpYWJsZU5hbWUuY19zdHIoKSk7
CisgICAgICAgIGluZm9Mb2cgPDwgIlR5cGVzIGZvciAiIDw8IHZhcmlhYmxlTmFtZSA8PCAiIGRp
ZmZlciBiZXR3ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyI7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgaWYgKHZlcnRleFZhcmlhYmxlLmFycmF5U2l6ZSAhPSBmcmFn
bWVudFZhcmlhYmxlLmFycmF5U2l6ZSkKICAgICB7Ci0gICAgICAgIGluZm9Mb2cuYXBwZW5kKCJB
cnJheSBzaXplcyBmb3IgJXMgZGlmZmVyIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFk
ZXJzIiwgdmFyaWFibGVOYW1lLmNfc3RyKCkpOworICAgICAgICBpbmZvTG9nIDw8ICJBcnJheSBz
aXplcyBmb3IgIiA8PCB2YXJpYWJsZU5hbWUgPDwgIiBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXggYW5k
IGZyYWdtZW50IHNoYWRlcnMiOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlm
ICh2YWxpZGF0ZVByZWNpc2lvbiAmJiB2ZXJ0ZXhWYXJpYWJsZS5wcmVjaXNpb24gIT0gZnJhZ21l
bnRWYXJpYWJsZS5wcmVjaXNpb24pCiAgICAgewotICAgICAgICBpbmZvTG9nLmFwcGVuZCgiUHJl
Y2lzaW9ucyBmb3IgJXMgZGlmZmVyIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJz
IiwgdmFyaWFibGVOYW1lLmNfc3RyKCkpOworICAgICAgICBpbmZvTG9nIDw8ICJQcmVjaXNpb25z
IGZvciAiIDw8IHZhcmlhYmxlTmFtZSA8PCAiIGRpZmZlciBiZXR3ZWVuIHZlcnRleCBhbmQgZnJh
Z21lbnQgc2hhZGVycyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAo
dmVydGV4VmFyaWFibGUuZmllbGRzLnNpemUoKSAhPSBmcmFnbWVudFZhcmlhYmxlLmZpZWxkcy5z
aXplKCkpCiAgICAgewotICAgICAgICBpbmZvTG9nLmFwcGVuZCgiU3RydWN0dXJlIGxlbmd0aHMg
Zm9yICVzIGRpZmZlciBiZXR3ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyIsIHZhcmlh
YmxlTmFtZS5jX3N0cigpKTsKKyAgICAgICAgaW5mb0xvZyA8PCAiU3RydWN0dXJlIGxlbmd0aHMg
Zm9yICIgPDwgdmFyaWFibGVOYW1lIDw8ICIgZGlmZmVyIGJldHdlZW4gdmVydGV4IGFuZCBmcmFn
bWVudCBzaGFkZXJzIjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBjb25zdCB1
bnNpZ25lZCBpbnQgbnVtTWVtYmVycyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odmVydGV4
VmFyaWFibGUuZmllbGRzLnNpemUoKSk7CkBAIC0xNTE4LDkgKzE5NTgsMTAgQEAKIAogICAgICAg
ICBpZiAodmVydGV4TWVtYmVyLm5hbWUgIT0gZnJhZ21lbnRNZW1iZXIubmFtZSkKICAgICAgICAg
ewotICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIk5hbWUgbWlzbWF0Y2ggZm9yIGZpZWxkICcl
ZCcgb2YgJXM6IChpbiB2ZXJ0ZXg6ICclcycsIGluIGZyYWdtZW50OiAnJXMnKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZW1iZXJJbmRleCwgdmFyaWFibGVOYW1lLmNfc3RyKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhNZW1iZXIubmFtZS5jX3N0cigpLCBmcmFn
bWVudE1lbWJlci5uYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgaW5mb0xvZyA8PCAiTmFtZSBt
aXNtYXRjaCBmb3IgZmllbGQgJyIgPDwgbWVtYmVySW5kZXgKKyAgICAgICAgICAgICAgICAgICAg
PDwgIicgb2YgIiA8PCB2YXJpYWJsZU5hbWUKKyAgICAgICAgICAgICAgICAgICAgPDwgIjogKGlu
IHZlcnRleDogJyIgPDwgdmVydGV4TWVtYmVyLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgPDwg
IicsIGluIGZyYWdtZW50OiAnIiA8PCBmcmFnbWVudE1lbWJlci5uYW1lIDw8ICInKSI7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMTUzOCw3ICsxOTc5LDEzIEBA
CiAKIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4
VW5pZm9ybSwgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSkKIHsKLSAgICBpZiAo
IWxpbmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoaW5mb0xvZywgdW5pZm9ybU5hbWUsIHZlcnRleFVu
aWZvcm0sIGZyYWdtZW50VW5pZm9ybSwgdHJ1ZSkpCisjaWYgQU5HTEVfUFJPR1JBTV9MSU5LX1ZB
TElEQVRFX1VOSUZPUk1fUFJFQ0lTSU9OID09IEFOR0xFX0VOQUJMRUQKKyAgICBjb25zdCBib29s
IHZhbGlkYXRlUHJlY2lzaW9uID0gdHJ1ZTsKKyNlbHNlCisgICAgY29uc3QgYm9vbCB2YWxpZGF0
ZVByZWNpc2lvbiA9IGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAoIWxpbmtWYWxpZGF0ZVZhcmlh
Ymxlc0Jhc2UoaW5mb0xvZywgdW5pZm9ybU5hbWUsIHZlcnRleFVuaWZvcm0sIGZyYWdtZW50VW5p
Zm9ybSwgdmFsaWRhdGVQcmVjaXNpb24pKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTE1NTUsNjggKzIwMDIsNTMwIEBACiAKICAgICBpZiAoIXNoOjpJbnRlcnBvbGF0
aW9uVHlwZXNNYXRjaCh2ZXJ0ZXhWYXJ5aW5nLmludGVycG9sYXRpb24sIGZyYWdtZW50VmFyeWlu
Zy5pbnRlcnBvbGF0aW9uKSkKICAgICB7Ci0gICAgICAgIGluZm9Mb2cuYXBwZW5kKCJJbnRlcnBv
bGF0aW9uIHR5cGVzIGZvciAlcyBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNo
YWRlcnMiLCB2YXJ5aW5nTmFtZS5jX3N0cigpKTsKKyAgICAgICAgaW5mb0xvZyA8PCAiSW50ZXJw
b2xhdGlvbiB0eXBlcyBmb3IgIiA8PCB2YXJ5aW5nTmFtZSA8PCAiIGRpZmZlciBiZXR3ZWVuIHZl
cnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjpnYXRoZXJUcmFuc2Zvcm1G
ZWVkYmFja0xpbmtlZFZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHN0ZDo6dmVjdG9y
PExpbmtlZFZhcnlpbmc+ICZsaW5rZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1GZWVkYmFja0J1
ZmZlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8TGlua2VkVmFyeWluZz4gKm91dFRyYW5zZm9ybUZlZWRiYWNrTGlu
a2VkVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcykgY29uc3QKK2Jvb2wgUHJvZ3JhbTo6bGlua1ZhbGlk
YXRlVHJhbnNmb3JtRmVlZGJhY2soSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZh
cnlpbmcgKj4gJnZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDYXBzICZjYXBzKSBjb25zdAogewogICAgIHNpemVfdCB0b3RhbENvbXBv
bmVudHMgPSAwOwogCi0gICAgLy8gR2F0aGVyIHRoZSBsaW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUg
dXNlZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0aGV5IHNob3VsZCBhbGwgZXhpc3QuCi0gICAg
b3V0VHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRWYXJ5aW5ncy0+Y2xlYXIoKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzLnNpemUoKTsgaSsr
KQorICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB1bmlxdWVOYW1lczsKKworICAgIGZvciAoY29u
c3Qgc3RkOjpzdHJpbmcgJnRmVmFyeWluZ05hbWUgOiBtRGF0YS5tVHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5nTmFtZXMpCiAgICAgewogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbGlua2VkVmFyeWluZ3Muc2l6ZSgpOyBqKyspCisgICAg
ICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgKnZhcnlpbmcgOiB2YXJ5aW5ncykKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzW2ldID09IGxp
bmtlZFZhcnlpbmdzW2pdLm5hbWUpCisgICAgICAgICAgICBpZiAodGZWYXJ5aW5nTmFtZSA9PSB2
YXJ5aW5nLT5uYW1lKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGsgPSAwOyBrIDwgb3V0VHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRWYXJ5aW5ncy0+c2l6ZSgpOyBr
KyspCisgICAgICAgICAgICAgICAgaWYgKHVuaXF1ZU5hbWVzLmNvdW50KHRmVmFyeWluZ05hbWUp
ID4gMCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvdXRUcmFu
c2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzLT5hdChrKS5uYW1lID09IGxpbmtlZFZhcnlpbmdz
W2pdLm5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGluZm9Mb2cuYXBwZW5kKCJUd28gdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIHNwZWNpZnkg
dGhlIHNhbWUgb3V0cHV0IHZhcmlhYmxlICglcykuIiwgbGlua2VkVmFyeWluZ3Nbal0ubmFtZS5j
X3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJUd28gdHJhbnNm
b3JtIGZlZWRiYWNrIHZhcnlpbmdzIHNwZWNpZnkgdGhlIHNhbWUgb3V0cHV0IHZhcmlhYmxlICgi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgdGZWYXJ5aW5nTmFtZSA8PCAiKS4iOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHVuaXF1ZU5hbWVzLmluc2VydCh0ZlZhcnlpbmdOYW1lKTsKIAotICAgICAg
ICAgICAgICAgIHNpemVfdCBjb21wb25lbnRDb3VudCA9IGxpbmtlZFZhcnlpbmdzW2pdLnNlbWFu
dGljSW5kZXhDb3VudCAqIDQ7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyTW9kZSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTICYmCisgICAgICAgICAgICAgICAgaWYg
KHZhcnlpbmctPmlzQXJyYXkoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGluZm9Mb2cgPDwgIkNhcHR1cmUgb2YgYXJyYXlzIGlzIHVuZGVmaW5lZCBhbmQgbm90IHN1
cHBvcnRlZC4iOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUg
aW1wbGVtZW50YXRpb24gbGltaXRzIG9uIEQzRDExCisgICAgICAgICAgICAgICAgc2l6ZV90IGNv
bXBvbmVudENvdW50ID0gZ2w6OlZhcmlhYmxlQ29tcG9uZW50Q291bnQodmFyeWluZy0+dHlwZSk7
CisgICAgICAgICAgICAgICAgaWYgKG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUg
PT0gR0xfU0VQQVJBVEVfQVRUUklCUyAmJgogICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRD
b3VudCA+IGNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUNvbXBvbmVudHMpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiVHJhbnNm
b3JtIGZlZWRiYWNrIHZhcnlpbmcncyAlcyBjb21wb25lbnRzICgldSkgZXhjZWVkIHRoZSBtYXhp
bXVtIHNlcGFyYXRlIGNvbXBvbmVudHMgKCV1KS4iLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5rZWRWYXJ5aW5nc1tqXS5uYW1lLmNfc3RyKCksIGNvbXBvbmVudENvdW50
LCBjYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVDb21wb25lbnRzKTsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mb0xvZyA8PCAiVHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmcncyAiIDw8
IHZhcnlpbmctPm5hbWUgPDwgIiBjb21wb25lbnRzICgiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgY29tcG9uZW50Q291bnQgPDwgIikgZXhjZWVkIHRoZSBtYXhpbXVtIHNlcGFyYXRl
IGNvbXBvbmVudHMgKCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjYXBzLm1heFRy
YW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVDb21wb25lbnRzIDw8ICIpLiI7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICB0b3RhbENvbXBvbmVudHMgKz0gY29tcG9uZW50Q291bnQ7Ci0KLSAgICAgICAgICAgICAgICBv
dXRUcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzLT5wdXNoX2JhY2sobGlua2VkVmFyeWlu
Z3Nbal0pOwogICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIGlmICh0ZlZhcnlpbmdO
YW1lLmZpbmQoJ1snKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgeworICAgICAgICAg
ICAgaW5mb0xvZyA8PCAiQ2FwdHVyZSBvZiBhcnJheSBlbGVtZW50cyBpcyB1bmRlZmluZWQgYW5k
IG5vdCBzdXBwb3J0ZWQuIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CiAgICAgICAgIC8vIEFsbCB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgYXJlIGV4cGVjdGVk
IHRvIGV4aXN0IHNpbmNlIHBhY2tWYXJ5aW5ncyBjaGVja3MgZm9yIHRoZW0uCiAgICAgICAgIEFT
U0VSVChmb3VuZCk7CisgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoZm91bmQpOwog
ICAgIH0KIAotICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUgPT0gR0xfSU5URVJM
RUFWRURfQVRUUklCUyAmJiB0b3RhbENvbXBvbmVudHMgPiBjYXBzLm1heFRyYW5zZm9ybUZlZWRi
YWNrSW50ZXJsZWF2ZWRDb21wb25lbnRzKQorICAgIGlmIChtRGF0YS5tVHJhbnNmb3JtRmVlZGJh
Y2tCdWZmZXJNb2RlID09IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMgJiYKKyAgICAgICAgdG90YWxD
b21wb25lbnRzID4gY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50
cykKICAgICB7Ci0gICAgICAgIGluZm9Mb2cuYXBwZW5kKCJUcmFuc2Zvcm0gZmVlZGJhY2sgdmFy
eWluZyB0b3RhbCBjb21wb25lbnRzICgldSkgZXhjZWVkIHRoZSBtYXhpbXVtIGludGVybGVhdmVk
IGNvbXBvbmVudHMgKCV1KS4iLAotICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvbXBvbmVu
dHMsIGNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tJbnRlcmxlYXZlZENvbXBvbmVudHMpOworICAg
ICAgICBpbmZvTG9nIDw8ICJUcmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZyB0b3RhbCBjb21wb25l
bnRzICgiIDw8IHRvdGFsQ29tcG9uZW50cworICAgICAgICAgICAgICAgIDw8ICIpIGV4Y2VlZCB0
aGUgbWF4aW11bSBpbnRlcmxlYXZlZCBjb21wb25lbnRzICgiCisgICAgICAgICAgICAgICAgPDwg
Y2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50cyA8PCAiKS4iOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBzdGQ6OnZl
Y3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiAmdmFyeWluZ3MpCit7CisgICAgLy8gR2F0aGVyIHRo
ZSBsaW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0
aGV5IHNob3VsZCBhbGwgZXhpc3QuCisgICAgbURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z1ZhcnMuY2xlYXIoKTsKKyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZlZhcnlpbmdOYW1l
IDogbURhdGEubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKQorICAgIHsKKyAgICAgICAg
Zm9yIChjb25zdCBzaDo6VmFyeWluZyAqdmFyeWluZyA6IHZhcnlpbmdzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAodGZWYXJ5aW5nTmFtZSA9PSB2YXJ5aW5nLT5uYW1lKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1EYXRhLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJz
LnB1c2hfYmFjaygqdmFyeWluZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CiB9CisKK3N0ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5n
ICo+IFByb2dyYW06OmdldE1lcmdlZFZhcnlpbmdzKCkgY29uc3QKK3sKKyAgICBzdGQ6OnNldDxz
dGQ6OnN0cmluZz4gdW5pcXVlTmFtZXM7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZhcnlp
bmcgKj4gdmFyeWluZ3M7CisKKyAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDog
bURhdGEubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpKQorICAgIHsKKyAgICAg
ICAgaWYgKHVuaXF1ZU5hbWVzLmNvdW50KHZhcnlpbmcubmFtZSkgPT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdW5pcXVlTmFtZXMuaW5zZXJ0KHZhcnlpbmcubmFtZSk7CisgICAgICAgICAg
ICB2YXJ5aW5ncy5wdXNoX2JhY2soJnZhcnlpbmcpOworICAgICAgICB9CisgICAgfQorCisgICAg
Zm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6IG1EYXRhLm1BdHRhY2hlZEZyYWdtZW50
U2hhZGVyLT5nZXRWYXJ5aW5ncygpKQorICAgIHsKKyAgICAgICAgaWYgKHVuaXF1ZU5hbWVzLmNv
dW50KHZhcnlpbmcubmFtZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgdW5pcXVlTmFt
ZXMuaW5zZXJ0KHZhcnlpbmcubmFtZSk7CisgICAgICAgICAgICB2YXJ5aW5ncy5wdXNoX2JhY2so
JnZhcnlpbmcpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHZhcnlpbmdzOworfQor
Cit2b2lkIFByb2dyYW06OmxpbmtPdXRwdXRWYXJpYWJsZXMoKQoreworICAgIGNvbnN0IFNoYWRl
ciAqZnJhZ21lbnRTaGFkZXIgPSBtRGF0YS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcjsKKyAgICBB
U1NFUlQoZnJhZ21lbnRTaGFkZXIgIT0gbnVsbHB0cik7CisKKyAgICAvLyBTa2lwIHRoaXMgc3Rl
cCBmb3IgR0xFUzIgc2hhZGVycy4KKyAgICBpZiAoZnJhZ21lbnRTaGFkZXItPmdldFNoYWRlclZl
cnNpb24oKSA9PSAxMDApCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGF1dG8gJnNoYWRl
ck91dHB1dFZhcnMgPSBmcmFnbWVudFNoYWRlci0+Z2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCk7
CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBhbnkgY2FwcyB2YWxpZGF0aW9uIGhlcmU/CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBvdXRwdXRWYXJpYWJsZUluZGV4ID0gMDsgb3V0cHV0VmFyaWFi
bGVJbmRleCA8IHNoYWRlck91dHB1dFZhcnMuc2l6ZSgpOworICAgICAgICAgb3V0cHV0VmFyaWFi
bGVJbmRleCsrKQorICAgIHsKKyAgICAgICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICZvdXRw
dXRWYXJpYWJsZSA9IHNoYWRlck91dHB1dFZhcnNbb3V0cHV0VmFyaWFibGVJbmRleF07CisKKyAg
ICAgICAgLy8gRG9uJ3Qgc3RvcmUgb3V0cHV0cyBmb3IgZ2xfRnJhZ0RlcHRoLCBnbF9GcmFnQ29s
b3IsIGV0Yy4KKyAgICAgICAgaWYgKG91dHB1dFZhcmlhYmxlLmlzQnVpbHRJbigpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gU2luY2UgbXVsdGlwbGUgb3V0cHV0IGxvY2F0
aW9ucyBtdXN0IGJlIHNwZWNpZmllZCwgdXNlIDAgZm9yIG5vbi1zcGVjaWZpZWQgbG9jYXRpb25z
LgorICAgICAgICBpbnQgYmFzZUxvY2F0aW9uID0gKG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uID09
IC0xID8gMCA6IG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uKTsKKworICAgICAgICBBU1NFUlQob3V0
cHV0VmFyaWFibGUuc3RhdGljVXNlKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVt
ZW50SW5kZXggPSAwOyBlbGVtZW50SW5kZXggPCBvdXRwdXRWYXJpYWJsZS5lbGVtZW50Q291bnQo
KTsKKyAgICAgICAgICAgICBlbGVtZW50SW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgaW50IGxvY2F0aW9uID0gYmFzZUxvY2F0aW9uICsgZWxlbWVudEluZGV4OworICAgICAg
ICAgICAgQVNTRVJUKG1EYXRhLm1PdXRwdXRWYXJpYWJsZXMuY291bnQobG9jYXRpb24pID09IDAp
OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGVsZW1lbnQgPSBvdXRwdXRWYXJpYWJsZS5pc0Fy
cmF5KCkgPyBlbGVtZW50SW5kZXggOiBHTF9JTlZBTElEX0lOREVYOworICAgICAgICAgICAgbURh
dGEubU91dHB1dFZhcmlhYmxlc1tsb2NhdGlvbl0gPQorICAgICAgICAgICAgICAgIFZhcmlhYmxl
TG9jYXRpb24ob3V0cHV0VmFyaWFibGUubmFtZSwgZWxlbWVudCwgb3V0cHV0VmFyaWFibGVJbmRl
eCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgUHJvZ3JhbTo6ZmxhdHRlblVuaWZvcm1z
QW5kQ2hlY2tDYXBzKGNvbnN0IENhcHMgJmNhcHMsIEluZm9Mb2cgJmluZm9Mb2cpCit7CisgICAg
Y29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyID0gbURhdGEuZ2V0QXR0YWNoZWRWZXJ0ZXhT
aGFkZXIoKTsKKyAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgdnNDb3VudHM7CisKKyAgICBzdGQ6
OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBzYW1wbGVyVW5pZm9ybXM7CisKKyAgICBmb3IgKGNvbnN0
IHNoOjpVbmlmb3JtICZ1bmlmb3JtIDogdmVydGV4U2hhZGVyLT5nZXRVbmlmb3JtcygpKQorICAg
IHsKKyAgICAgICAgaWYgKHVuaWZvcm0uc3RhdGljVXNlKQorICAgICAgICB7CisgICAgICAgICAg
ICB2c0NvdW50cyArPSBmbGF0dGVuVW5pZm9ybSh1bmlmb3JtLCB1bmlmb3JtLm5hbWUsICZzYW1w
bGVyVW5pZm9ybXMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHZzQ291bnRzLnZlY3Rv
ckNvdW50ID4gY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycykKKyAgICB7CisgICAgICAgIGlu
Zm9Mb2cgPDwgIlZlcnRleCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1zIGV4Y2VlZCBNQVhfVkVSVEVY
X1VOSUZPUk1fVkVDVE9SUyAoIgorICAgICAgICAgICAgICAgIDw8IGNhcHMubWF4VmVydGV4VW5p
Zm9ybVZlY3RvcnMgPDwgIikuIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICh2c0NvdW50cy5zYW1wbGVyQ291bnQgPiBjYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVu
aXRzKQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8PCAiVmVydGV4IHNoYWRlciBzYW1wbGVyIGNv
dW50IGV4Y2VlZHMgTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTICgiCisgICAgICAgICAg
ICAgICAgPDwgY2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAiKS4iOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRT
aGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgVmVjdG9yQW5k
U2FtcGxlckNvdW50IGZzQ291bnRzOworCisgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdW5p
Zm9ybSA6IGZyYWdtZW50U2hhZGVyLT5nZXRVbmlmb3JtcygpKQorICAgIHsKKyAgICAgICAgaWYg
KHVuaWZvcm0uc3RhdGljVXNlKQorICAgICAgICB7CisgICAgICAgICAgICBmc0NvdW50cyArPSBm
bGF0dGVuVW5pZm9ybSh1bmlmb3JtLCB1bmlmb3JtLm5hbWUsICZzYW1wbGVyVW5pZm9ybXMpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZzQ291bnRzLnZlY3RvckNvdW50ID4gY2Fwcy5t
YXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzKQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8PCAiRnJh
Z21lbnQgc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNlZWQgTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
VkVDVE9SUyAoIgorICAgICAgICAgICAgICAgIDw8IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVj
dG9ycyA8PCAiKS4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGZz
Q291bnRzLnNhbXBsZXJDb3VudCA+IGNhcHMubWF4VGV4dHVyZUltYWdlVW5pdHMpCisgICAgewor
ICAgICAgICBpbmZvTG9nIDw8ICJGcmFnbWVudCBzaGFkZXIgc2FtcGxlciBjb3VudCBleGNlZWRz
IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICgiCisgICAgICAgICAgICAgICAgPDwgY2Fwcy5tYXhU
ZXh0dXJlSW1hZ2VVbml0cyA8PCAiKS4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KG1EYXRhLm1Vbmlmb3Jtcy5zaXplKCkpOworICAgIG1TYW1wbGVyVW5pZm9ybVJhbmdlLmVu
ZCA9CisgICAgICAgIG1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0ICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihzYW1wbGVyVW5pZm9ybXMuc2l6ZSgpKTsKKworICAgIG1EYXRhLm1Vbmlmb3Jt
cy5pbnNlcnQobURhdGEubVVuaWZvcm1zLmVuZCgpLCBzYW1wbGVyVW5pZm9ybXMuYmVnaW4oKSwg
c2FtcGxlclVuaWZvcm1zLmVuZCgpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitQcm9ncmFt
OjpWZWN0b3JBbmRTYW1wbGVyQ291bnQgUHJvZ3JhbTo6ZmxhdHRlblVuaWZvcm0oY29uc3Qgc2g6
OlNoYWRlclZhcmlhYmxlICZ1bmlmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmdWxsTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAqc2FtcGxlclVuaWZvcm1zKQoreworICAgIFZlY3RvckFu
ZFNhbXBsZXJDb3VudCB2ZWN0b3JBbmRTYW1wbGVyQ291bnQ7CisKKyAgICBpZiAodW5pZm9ybS5p
c1N0cnVjdCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4
ID0gMDsgZWxlbWVudEluZGV4IDwgdW5pZm9ybS5lbGVtZW50Q291bnQoKTsgZWxlbWVudEluZGV4
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZlbGVtZW50U3Ry
aW5nID0gKHVuaWZvcm0uaXNBcnJheSgpID8gQXJyYXlTdHJpbmcoZWxlbWVudEluZGV4KSA6ICIi
KTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXgg
PCB1bmlmb3JtLmZpZWxkcy5zaXplKCk7IGZpZWxkSW5kZXgrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJmZpZWxkICA9IHVuaWZvcm0u
ZmllbGRzW2ZpZWxkSW5kZXhdOworICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZm
aWVsZEZ1bGxOYW1lID0gKGZ1bGxOYW1lICsgZWxlbWVudFN0cmluZyArICIuIiArIGZpZWxkLm5h
bWUpOworCisgICAgICAgICAgICAgICAgdmVjdG9yQW5kU2FtcGxlckNvdW50ICs9IGZsYXR0ZW5V
bmlmb3JtKGZpZWxkLCBmaWVsZEZ1bGxOYW1lLCBzYW1wbGVyVW5pZm9ybXMpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHZlY3RvckFuZFNhbXBsZXJDb3VudDsK
KyAgICB9CisKKyAgICAvLyBOb3QgYSBzdHJ1Y3QKKyAgICBib29sIGlzU2FtcGxlciA9IElzU2Ft
cGxlclR5cGUodW5pZm9ybS50eXBlKTsKKyAgICBpZiAoIVVuaWZvcm1Jbkxpc3QobURhdGEuZ2V0
VW5pZm9ybXMoKSwgZnVsbE5hbWUpICYmICFVbmlmb3JtSW5MaXN0KCpzYW1wbGVyVW5pZm9ybXMs
IGZ1bGxOYW1lKSkKKyAgICB7CisgICAgICAgIGdsOjpMaW5rZWRVbmlmb3JtIGxpbmtlZFVuaWZv
cm0odW5pZm9ybS50eXBlLCB1bmlmb3JtLnByZWNpc2lvbiwgZnVsbE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybS5hcnJheVNpemUsIC0xLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpCbG9ja01lbWJlckluZm86
OmdldERlZmF1bHRCbG9ja0luZm8oKSk7CisgICAgICAgIGxpbmtlZFVuaWZvcm0uc3RhdGljVXNl
ID0gdHJ1ZTsKKworICAgICAgICAvLyBTdG9yZSBzYW1wbGVyIHVuaWZvcm1zIHNlcGFyYXRlbHks
IHNvIHdlJ2xsIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisgICAgICAgIGlm
IChpc1NhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNhbXBsZXJVbmlmb3Jtcy0+cHVz
aF9iYWNrKGxpbmtlZFVuaWZvcm0pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgbURhdGEubVVuaWZvcm1zLnB1c2hfYmFjayhsaW5rZWRVbmlmb3JtKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQgICAgICAg
ICAgPSB1bmlmb3JtLmVsZW1lbnRDb3VudCgpOworCisgICAgLy8gU2FtcGxlcnMgYXJlbid0ICJy
ZWFsIiB1bmlmb3Jtcywgc28gdGhleSBkb24ndCBjb3VudCB0b3dhcmRzIHJlZ2lzdGVyIHVzYWdl
LgorICAgIC8vIExpa2V3aXNlLCBkb24ndCBjb3VudCAicmVhbCIgdW5pZm9ybXMgdG93YXJkcyBz
YW1wbGVyIGNvdW50LgorICAgIHZlY3RvckFuZFNhbXBsZXJDb3VudC52ZWN0b3JDb3VudCA9Cisg
ICAgICAgIChpc1NhbXBsZXIgPyAwIDogKFZhcmlhYmxlUmVnaXN0ZXJDb3VudCh1bmlmb3JtLnR5
cGUpICogZWxlbWVudENvdW50KSk7CisgICAgdmVjdG9yQW5kU2FtcGxlckNvdW50LnNhbXBsZXJD
b3VudCA9IChpc1NhbXBsZXIgPyBlbGVtZW50Q291bnQgOiAwKTsKKworICAgIHJldHVybiB2ZWN0
b3JBbmRTYW1wbGVyQ291bnQ7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6Z2F0aGVySW50ZXJmYWNlQmxv
Y2tJbmZvKCkKK3sKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdmlzaXRlZExpc3Q7CisKKyAg
ICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZFZlcnRl
eFNoYWRlcigpOworCisgICAgQVNTRVJUKG1EYXRhLm1Vbmlmb3JtQmxvY2tzLmVtcHR5KCkpOwor
ICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhCbG9jayA6IHZlcnRleFNo
YWRlci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCkpCisgICAgeworICAgICAgICAvLyBPbmx5ICdwYWNr
ZWQnIGJsb2NrcyBhcmUgYWxsb3dlZCB0byBiZSBjb25zaWRlcmVkIGluYWNpdmUuCisgICAgICAg
IGlmICghdmVydGV4QmxvY2suc3RhdGljVXNlICYmIHZlcnRleEJsb2NrLmxheW91dCA9PSBzaDo6
QkxPQ0tMQVlPVVRfUEFDS0VEKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYg
KHZpc2l0ZWRMaXN0LmNvdW50KHZlcnRleEJsb2NrLm5hbWUpID4gMCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGRlZmluZVVuaWZvcm1CbG9jayh2ZXJ0ZXhCbG9jaywgR0xfVkVS
VEVYX1NIQURFUik7CisgICAgICAgIHZpc2l0ZWRMaXN0Lmluc2VydCh2ZXJ0ZXhCbG9jay5uYW1l
KTsKKyAgICB9CisKKyAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1EYXRh
LmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKworICAgIGZvciAoY29uc3Qgc2g6OkludGVy
ZmFjZUJsb2NrICZmcmFnbWVudEJsb2NrIDogZnJhZ21lbnRTaGFkZXItPmdldEludGVyZmFjZUJs
b2NrcygpKQorICAgIHsKKyAgICAgICAgLy8gT25seSAncGFja2VkJyBibG9ja3MgYXJlIGFsbG93
ZWQgdG8gYmUgY29uc2lkZXJlZCBpbmFjaXZlLgorICAgICAgICBpZiAoIWZyYWdtZW50QmxvY2su
c3RhdGljVXNlICYmIGZyYWdtZW50QmxvY2subGF5b3V0ID09IHNoOjpCTE9DS0xBWU9VVF9QQUNL
RUQpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAodmlzaXRlZExpc3QuY291
bnQoZnJhZ21lbnRCbG9jay5uYW1lKSA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
Z2w6OlVuaWZvcm1CbG9jayAmYmxvY2sgOiBtRGF0YS5tVW5pZm9ybUJsb2NrcykKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2submFtZSA9PSBmcmFnbWVudEJsb2NrLm5h
bWUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBibG9jay5mcmFnbWVu
dFN0YXRpY1VzZSA9IGZyYWdtZW50QmxvY2suc3RhdGljVXNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAg
ICAgICBkZWZpbmVVbmlmb3JtQmxvY2soZnJhZ21lbnRCbG9jaywgR0xfRlJBR01FTlRfU0hBREVS
KTsKKyAgICAgICAgdmlzaXRlZExpc3QuaW5zZXJ0KGZyYWdtZW50QmxvY2submFtZSk7CisgICAg
fQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KK3ZvaWQgUHJvZ3JhbTo6ZGVmaW5lVW5p
Zm9ybUJsb2NrTWVtYmVycyhjb25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAmZmllbGRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwcmVm
aXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJsb2NrSW5k
ZXgpCit7CisgICAgZm9yIChjb25zdCBWYXJUICZmaWVsZCA6IGZpZWxkcykKKyAgICB7CisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmdWxsTmFtZSA9IChwcmVmaXguZW1wdHkoKSA/IGZpZWxk
Lm5hbWUgOiBwcmVmaXggKyAiLiIgKyBmaWVsZC5uYW1lKTsKKworICAgICAgICBpZiAoZmllbGQu
aXNTdHJ1Y3QoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXJy
YXlFbGVtZW50ID0gMDsgYXJyYXlFbGVtZW50IDwgZmllbGQuZWxlbWVudENvdW50KCk7IGFycmF5
RWxlbWVudCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHVuaWZvcm1FbGVtZW50TmFtZSA9CisgICAgICAgICAgICAgICAgICAgIGZ1bGxOYW1lICsg
KGZpZWxkLmlzQXJyYXkoKSA/IEFycmF5U3RyaW5nKGFycmF5RWxlbWVudCkgOiAiIik7CisgICAg
ICAgICAgICAgICAgZGVmaW5lVW5pZm9ybUJsb2NrTWVtYmVycyhmaWVsZC5maWVsZHMsIHVuaWZv
cm1FbGVtZW50TmFtZSwgYmxvY2tJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBJZiBnZXRCbG9ja01lbWJlcklu
Zm8gcmV0dXJucyBmYWxzZSwgdGhlIHVuaWZvcm0gaXMgb3B0aW1pemVkIG91dC4KKyAgICAgICAg
ICAgIHNoOjpCbG9ja01lbWJlckluZm8gbWVtYmVySW5mbzsKKyAgICAgICAgICAgIGlmICghbVBy
b2dyYW0tPmdldFVuaWZvcm1CbG9ja01lbWJlckluZm8oZnVsbE5hbWUsICZtZW1iZXJJbmZvKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgTGlua2VkVW5pZm9ybSBuZXdVbmlmb3JtKGZpZWxkLnR5cGUsIGZpZWxk
LnByZWNpc2lvbiwgZnVsbE5hbWUsIGZpZWxkLmFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibG9ja0luZGV4LCBtZW1iZXJJbmZvKTsKKworICAgICAgICAg
ICAgLy8gU2luY2UgYmxvY2sgdW5pZm9ybXMgaGF2ZSBubyBsb2NhdGlvbiwgd2UgZG9uJ3QgbmVl
ZCB0byBzdG9yZSB0aGVtIGluIHRoZSB1bmlmb3JtCisgICAgICAgICAgICAvLyBsb2NhdGlvbnMg
bGlzdC4KKyAgICAgICAgICAgIG1EYXRhLm1Vbmlmb3Jtcy5wdXNoX2JhY2sobmV3VW5pZm9ybSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybUJsb2Nr
KGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssIEdMZW51bSBzaGFkZXJU
eXBlKQoreworICAgIGludCBibG9ja0luZGV4ICAgPSBzdGF0aWNfY2FzdDxpbnQ+KG1EYXRhLm1V
bmlmb3JtQmxvY2tzLnNpemUoKSk7CisgICAgc2l6ZV90IGJsb2NrU2l6ZSA9IDA7CisKKyAgICAv
LyBEb24ndCBkZWZpbmUgdGhpcyBibG9jayBhdCBhbGwgaWYgaXQncyBub3QgYWN0aXZlIGluIHRo
ZSBpbXBsZW1lbnRhdGlvbi4KKyAgICBpZiAoIW1Qcm9ncmFtLT5nZXRVbmlmb3JtQmxvY2tTaXpl
KGludGVyZmFjZUJsb2NrLm5hbWUsICZibG9ja1NpemUpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIFRyYWNrIHRoZSBmaXJzdCBhbmQgbGFzdCB1bmlmb3JtIGluZGV4
IHRvIGRldGVybWluZSB0aGUgcmFuZ2Ugb2YgYWN0aXZlIHVuaWZvcm1zIGluIHRoZQorICAgIC8v
IGJsb2NrLgorICAgIHNpemVfdCBmaXJzdEJsb2NrVW5pZm9ybUluZGV4ID0gbURhdGEubVVuaWZv
cm1zLnNpemUoKTsKKyAgICBkZWZpbmVVbmlmb3JtQmxvY2tNZW1iZXJzKGludGVyZmFjZUJsb2Nr
LmZpZWxkcywgaW50ZXJmYWNlQmxvY2suZmllbGRQcmVmaXgoKSwgYmxvY2tJbmRleCk7CisgICAg
c2l6ZV90IGxhc3RCbG9ja1VuaWZvcm1JbmRleCA9IG1EYXRhLm1Vbmlmb3Jtcy5zaXplKCk7CisK
KyAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBpbnQ+IGJsb2NrVW5pZm9ybUluZGV4ZXM7CisgICAg
Zm9yIChzaXplX3QgYmxvY2tVbmlmb3JtSW5kZXggPSBmaXJzdEJsb2NrVW5pZm9ybUluZGV4Owor
ICAgICAgICAgYmxvY2tVbmlmb3JtSW5kZXggPCBsYXN0QmxvY2tVbmlmb3JtSW5kZXg7ICsrYmxv
Y2tVbmlmb3JtSW5kZXgpCisgICAgeworICAgICAgICBibG9ja1VuaWZvcm1JbmRleGVzLnB1c2hf
YmFjayhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGJsb2NrVW5pZm9ybUluZGV4KSk7CisgICAg
fQorCisgICAgaWYgKGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSA+IDApCisgICAgeworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSAwOyBhcnJheUVsZW1lbnQgPCBpbnRl
cmZhY2VCbG9jay5hcnJheVNpemU7ICsrYXJyYXlFbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICBVbmlmb3JtQmxvY2sgYmxvY2soaW50ZXJmYWNlQmxvY2submFtZSwgdHJ1ZSwgYXJyYXlF
bGVtZW50KTsKKyAgICAgICAgICAgIGJsb2NrLm1lbWJlclVuaWZvcm1JbmRleGVzID0gYmxvY2tV
bmlmb3JtSW5kZXhlczsKKworICAgICAgICAgICAgaWYgKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVY
X1NIQURFUikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBibG9jay52ZXJ0ZXhTdGF0
aWNVc2UgPSBpbnRlcmZhY2VCbG9jay5zdGF0aWNVc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHNoYWRlclR5
cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKTsKKyAgICAgICAgICAgICAgICBibG9jay5mcmFnbWVu
dFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRGV0ZXJtaW5lIGlmIHdlIGNhbiBldmVyIGhh
dmUgYW4gaW5hY3RpdmUgYXJyYXkgZWxlbWVudCBibG9jay4KKyAgICAgICAgICAgIHNpemVfdCBi
bG9ja0VsZW1lbnRTaXplID0gMDsKKyAgICAgICAgICAgIGlmICghbVByb2dyYW0tPmdldFVuaWZv
cm1CbG9ja1NpemUoYmxvY2submFtZVdpdGhBcnJheUluZGV4KCksICZibG9ja0VsZW1lbnRTaXpl
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgQVNTRVJUKGJsb2NrRWxlbWVudFNpemUgPT0gYmxvY2tTaXplKTsK
KyAgICAgICAgICAgIGJsb2NrLmRhdGFTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihi
bG9ja0VsZW1lbnRTaXplKTsKKyAgICAgICAgICAgIG1EYXRhLm1Vbmlmb3JtQmxvY2tzLnB1c2hf
YmFjayhibG9jayk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
VW5pZm9ybUJsb2NrIGJsb2NrKGludGVyZmFjZUJsb2NrLm5hbWUsIGZhbHNlLCAwKTsKKyAgICAg
ICAgYmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMgPSBibG9ja1VuaWZvcm1JbmRleGVzOworCisg
ICAgICAgIGlmIChzaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGJsb2NrLnZlcnRleFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2NrLnN0YXRpY1Vz
ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChzaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CisgICAgICAgICAgICBibG9jay5m
cmFnbWVudFN0YXRpY1VzZSA9IGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZTsKKyAgICAgICAgfQor
CisgICAgICAgIGJsb2NrLmRhdGFTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihibG9j
a1NpemUpOworICAgICAgICBtRGF0YS5tVW5pZm9ybUJsb2Nrcy5wdXNoX2JhY2soYmxvY2spOwor
ICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIFByb2dyYW06OnNldFVuaWZv
cm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgVCAqdikKK3sK
KyAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8gPSBtRGF0YS5tVW5pZm9y
bUxvY2F0aW9uc1tsb2NhdGlvbl07CisgICAgTGlua2VkVW5pZm9ybSAqbGlua2VkVW5pZm9ybSAg
ICAgICAgID0gJm1EYXRhLm1Vbmlmb3Jtc1tsb2NhdGlvbkluZm8uaW5kZXhdOworICAgIHVpbnQ4
X3QgKmRlc3RQb2ludGVyICAgICAgICAgICAgICAgICA9IGxpbmtlZFVuaWZvcm0tPmdldERhdGFQ
dHJUb0VsZW1lbnQobG9jYXRpb25JbmZvLmVsZW1lbnQpOworCisgICAgaWYgKFZhcmlhYmxlQ29t
cG9uZW50VHlwZShsaW5rZWRVbmlmb3JtLT50eXBlKSA9PSBHTF9CT09MKQorICAgIHsKKyAgICAg
ICAgLy8gRG8gYSBjYXN0IGNvbnZlcnNpb24gZm9yIGJvb2xlYW4gdHlwZXMuIEZyb20gdGhlIHNw
ZWM6CisgICAgICAgIC8vICJUaGUgdW5pZm9ybSBpcyBzZXQgdG8gRkFMU0UgaWYgdGhlIGlucHV0
IHZhbHVlIGlzIDAgb3IgMC4wZiwgYW5kIHNldCB0byBUUlVFIG90aGVyd2lzZS4iCisgICAgICAg
IEdMaW50ICpkZXN0QXNJbnQgPSByZWludGVycHJldF9jYXN0PEdMaW50ICo+KGRlc3RQb2ludGVy
KTsKKyAgICAgICAgZm9yIChHTHNpemVpIGNvbXBvbmVudCA9IDA7IGNvbXBvbmVudCA8IGNvdW50
OyArK2NvbXBvbmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVzdEFzSW50W2NvbXBvbmVu
dF0gPSAodltjb21wb25lbnRdICE9IHN0YXRpY19jYXN0PFQ+KDApID8gR0xfVFJVRSA6IEdMX0ZB
TFNFKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBJbnZh
bGlkZSB0aGUgdmFsaWRhdGlvbiBjYWNoZSBpZiB3ZSBtb2RpZnkgdGhlIHNhbXBsZXIgZGF0YS4K
KyAgICAgICAgaWYgKGxpbmtlZFVuaWZvcm0tPmlzU2FtcGxlcigpICYmIG1lbWNtcChkZXN0UG9p
bnRlciwgdiwgc2l6ZW9mKFQpICogY291bnQpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0LnJlc2V0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBtZW1jcHkoZGVzdFBvaW50ZXIsIHYsIHNpemVvZihUKSAqIGNvdW50KTsKKyAgICB9Cit9
CisKK3RlbXBsYXRlIDxzaXplX3QgY29scywgc2l6ZV90IHJvd3MsIHR5cGVuYW1lIFQ+Cit2b2lk
IFByb2dyYW06OnNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAqdikKK3sKKyAgICBp
ZiAoIXRyYW5zcG9zZSkKKyAgICB7CisgICAgICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlv
biwgY291bnQgKiBjb2xzICogcm93cywgdik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBQZXJmb3JtIGEgdHJhbnNwb3NpbmcgY29weS4KKyAgICBjb25zdCBWYXJpYWJsZUxvY2F0
aW9uICZsb2NhdGlvbkluZm8gPSBtRGF0YS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07Cisg
ICAgTGlua2VkVW5pZm9ybSAqbGlua2VkVW5pZm9ybSAgICAgICAgID0gJm1EYXRhLm1Vbmlmb3Jt
c1tsb2NhdGlvbkluZm8uaW5kZXhdOworICAgIFQgKmRlc3RQdHIgPSByZWludGVycHJldF9jYXN0
PFQgKj4obGlua2VkVW5pZm9ybS0+Z2V0RGF0YVB0clRvRWxlbWVudChsb2NhdGlvbkluZm8uZWxl
bWVudCkpOworICAgIGZvciAoR0xzaXplaSBlbGVtZW50ID0gMDsgZWxlbWVudCA8IGNvdW50OyAr
K2VsZW1lbnQpCisgICAgeworICAgICAgICBzaXplX3QgZWxlbWVudE9mZnNldCA9IGVsZW1lbnQg
KiByb3dzICogY29sczsKKworICAgICAgICBmb3IgKHNpemVfdCByb3cgPSAwOyByb3cgPCByb3dz
OyArK3JvdykKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgY29sID0gMDsgY29s
IDwgY29sczsgKytjb2wpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVzdFB0cltj
b2wgKiByb3dzICsgcm93ICsgZWxlbWVudE9mZnNldF0gPSB2W3JvdyAqIGNvbHMgKyBjb2wgKyBl
bGVtZW50T2Zmc2V0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIERlc3RUPgordm9pZCBQcm9ncmFtOjpnZXRVbmlmb3JtSW50ZXJuYWwo
R0xpbnQgbG9jYXRpb24sIERlc3RUICpkYXRhT3V0KSBjb25zdAoreworICAgIGNvbnN0IFZhcmlh
YmxlTG9jYXRpb24gJmxvY2F0aW9uSW5mbyA9IG1EYXRhLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0
aW9uXTsKKyAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtICAgICAgICAgPSBtRGF0YS5t
VW5pZm9ybXNbbG9jYXRpb25JbmZvLmluZGV4XTsKKworICAgIGNvbnN0IHVpbnQ4X3QgKnNyY1Bv
aW50ZXIgPSB1bmlmb3JtLmdldERhdGFQdHJUb0VsZW1lbnQobG9jYXRpb25JbmZvLmVsZW1lbnQp
OworCisgICAgR0xlbnVtIGNvbXBvbmVudFR5cGUgPSBWYXJpYWJsZUNvbXBvbmVudFR5cGUodW5p
Zm9ybS50eXBlKTsKKyAgICBpZiAoY29tcG9uZW50VHlwZSA9PSBHTFR5cGVUb0dMZW51bTxEZXN0
VD46OnZhbHVlKQorICAgIHsKKyAgICAgICAgbWVtY3B5KGRhdGFPdXQsIHNyY1BvaW50ZXIsIHVu
aWZvcm0uZ2V0RWxlbWVudFNpemUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
bnQgY29tcG9uZW50cyA9IFZhcmlhYmxlQ29tcG9uZW50Q291bnQodW5pZm9ybS50eXBlKTsKKwor
ICAgIHN3aXRjaCAoY29tcG9uZW50VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfSU5UOgor
ICAgICAgICAgICAgVW5pZm9ybVN0YXRlUXVlcnlDYXN0TG9vcDxHTGludD4oZGF0YU91dCwgc3Jj
UG9pbnRlciwgY29tcG9uZW50cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBVbmlmb3JtU3RhdGVRdWVyeUNhc3RMb29wPEdM
dWludD4oZGF0YU91dCwgc3JjUG9pbnRlciwgY29tcG9uZW50cyk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgICAgICAgVW5pZm9ybVN0YXRlUXVlcnlD
YXN0TG9vcDxHTGJvb2xlYW4+KGRhdGFPdXQsIHNyY1BvaW50ZXIsIGNvbXBvbmVudHMpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICBVbmlm
b3JtU3RhdGVRdWVyeUNhc3RMb29wPEdMZmxvYXQ+KGRhdGFPdXQsIHNyY1BvaW50ZXIsIGNvbXBv
bmVudHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgIH0KK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uaAkod29ya2luZyBjb3B5
KQpAQCAtMTAsMjcgKzEwLDI5IEBACiAjaWZuZGVmIExJQkFOR0xFX1BST0dSQU1fSF8KICNkZWZp
bmUgTElCQU5HTEVfUFJPR1JBTV9IXwogCi0jaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0YW50cy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0Vy
cm9yLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKLQotI2luY2x1ZGUg
ImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0KICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KICNpbmNsdWRl
IDxHTFNMQU5HL1NoYWRlckxhbmcuaD4KIAotI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxz
ZXQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c2V0
PgorI2luY2x1ZGUgPHZlY3Rvcj4KIAorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisj
aW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgi
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
Q29uc3RhbnRzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGVidWcuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9FcnJvci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCisKIG5h
bWVzcGFjZSByeAogewotY2xhc3MgUmVuZGVyZXI7Ci1jbGFzcyBSZW5kZXJlcjsKK2NsYXNzIElt
cGxGYWN0b3J5OworY2xhc3MgUHJvZ3JhbUltcGw7CiBzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0
ZTsKLWNsYXNzIFByb2dyYW1JbXBsOwogfQogCiBuYW1lc3BhY2UgZ2wKQEAgLTY4LDExICs3MCw2
NSBAQAogICAgIH5JbmZvTG9nKCk7CiAKICAgICBzaXplX3QgZ2V0TGVuZ3RoKCkgY29uc3Q7Ci0g
ICAgdm9pZCBnZXRMb2coR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmlu
Zm9Mb2cpOworICAgIHZvaWQgZ2V0TG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBjaGFyICppbmZvTG9nKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kU2FuaXRpemVkKGNvbnN0
IGNoYXIgKm1lc3NhZ2UpOwotICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIgKmluZm8sIC4uLik7
CiAgICAgdm9pZCByZXNldCgpOworCisgICAgLy8gVGhpcyBoZWxwZXIgY2xhc3MgZW5zdXJlcyB3
ZSBhcHBlbmQgYSBuZXdsaW5lIGFmdGVyIHdyaXRpbmcgYSBsaW5lLgorICAgIGNsYXNzIFN0cmVh
bUhlbHBlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQorICAgIHsKKyAgICAgIHB1YmxpYzoKKyAgICAg
ICAgU3RyZWFtSGVscGVyKFN0cmVhbUhlbHBlciAmJnJocykKKyAgICAgICAgICAgIDogbVN0cmVh
bShyaHMubVN0cmVhbSkKKyAgICAgICAgeworICAgICAgICAgICAgcmhzLm1TdHJlYW0gPSBudWxs
cHRyOworICAgICAgICB9CisKKyAgICAgICAgU3RyZWFtSGVscGVyICZvcGVyYXRvcj0oU3RyZWFt
SGVscGVyICYmcmhzKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN3YXAobVN0cmVhbSwg
cmhzLm1TdHJlYW0pOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAg
ICAgICAgflN0cmVhbUhlbHBlcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFdyaXRlIG5l
d2xpbmUgd2hlbiBkZXN0cm95ZWQgb24gdGhlIHN0YWNrCisgICAgICAgICAgICBpZiAobVN0cmVh
bSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAoKm1TdHJlYW0pIDw8IHN0ZDo6ZW5k
bDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorICAgICAgICBTdHJlYW1IZWxwZXIgJm9wZXJhdG9yPDwoY29uc3QgVCAmdmFsdWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICgqbVN0cmVhbSkgPDwgdmFsdWU7CisgICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIEluZm9Mb2c7CisKKyAgICAgICAgU3RyZWFtSGVscGVyKHN0ZDo6c3RyaW5nc3RyZWFt
ICpzdHJlYW0pCisgICAgICAgICAgICA6IG1TdHJlYW0oc3RyZWFtKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoc3RyZWFtKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6c3RyaW5n
c3RyZWFtICptU3RyZWFtOworICAgIH07CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICBTdHJlYW1IZWxwZXIgb3BlcmF0b3I8PChjb25zdCBUICZ2YWx1ZSkKKyAgICB7CisgICAgICAg
IFN0cmVhbUhlbHBlciBoZWxwZXIoJm1TdHJlYW0pOworICAgICAgICBoZWxwZXIgPDwgdmFsdWU7
CisgICAgICAgIHJldHVybiBoZWxwZXI7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgc3RyKCkg
Y29uc3QgeyByZXR1cm4gbVN0cmVhbS5zdHIoKTsgfQorCiAgIHByaXZhdGU6CiAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gbVN0cmVhbTsKIH07CkBAIC04OCwzMiArMTQ0LDk0IEBACiAgICAgdW5zaWdu
ZWQgaW50IGluZGV4OwogfTsKIAotc3RydWN0IExpbmtlZFZhcnlpbmcKK2NsYXNzIFByb2dyYW0g
ZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7Ci0gICAg
TGlua2VkVmFyeWluZygpOwotICAgIExpbmtlZFZhcnlpbmcoY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUsIEdMZW51bSB0eXBlLCBHTHNpemVpIHNpemUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzZW1hbnRp
Y05hbWUsCi0gICAgICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4LCB1bnNpZ25lZCBpbnQg
c2VtYW50aWNJbmRleENvdW50KTsKKyAgcHVibGljOgorICAgIGNsYXNzIERhdGEgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKKyAgICB7CisgICAgICBwdWJsaWM6CisgICAgICAgIERhdGEoKTsK
KyAgICAgICAgfkRhdGEoKTsKIAotICAgIC8vIE9yaWdpbmFsIEdMIG5hbWUKLSAgICBzdGQ6OnN0
cmluZyBuYW1lOworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKTsKIAotICAg
IEdMZW51bSB0eXBlOwotICAgIEdMc2l6ZWkgc2l6ZTsKKyAgICAgICAgY29uc3QgU2hhZGVyICpn
ZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1BdHRhY2hlZFZlcnRleFNo
YWRlcjsgfQorICAgICAgICBjb25zdCBTaGFkZXIgKmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIo
KSBjb25zdCB7IHJldHVybiBtQXR0YWNoZWRGcmFnbWVudFNoYWRlcjsgfQorICAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05h
bWVzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1UcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdOYW1lczsKKyAgICAgICAgfQorICAgICAgICBHTGludCBnZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdCB7IHJldHVybiBtVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJNb2RlOyB9CisgICAgICAgIEdMdWludCBnZXRVbmlmb3JtQmxvY2tCaW5kaW5nKEdMdWludCB1
bmlmb3JtQmxvY2tJbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHVu
aWZvcm1CbG9ja0luZGV4IDwgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklG
T1JNX0JVRkZFUlMpOworICAgICAgICAgICAgcmV0dXJuIG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1t1
bmlmb3JtQmxvY2tJbmRleF07CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgVW5pZm9ybUJsb2Nr
QmluZGluZ01hc2sgJmdldEFjdGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzTWFzaygpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtQWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3M7
CisgICAgICAgIH0KKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdl
dEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtQXR0cmlidXRlczsgfQorICAgICAgICBjb25z
dCBBdHRyaWJ1dGVzTWFzayAmZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsK
KyAgICAgICAgfQorICAgICAgICBjb25zdCBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+
ICZnZXRPdXRwdXRWYXJpYWJsZXMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbU91dHB1dFZhcmlhYmxlczsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxMaW5rZWRVbmlmb3JtPiAmZ2V0VW5pZm9ybXMoKSBjb25zdCB7IHJldHVybiBtVW5pZm9ybXM7
IH0KKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4gJmdldFVuaWZv
cm1Mb2NhdGlvbnMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbVVuaWZv
cm1Mb2NhdGlvbnM7CisgICAgICAgIH0KKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9y
bUJsb2NrPiAmZ2V0VW5pZm9ybUJsb2NrcygpIGNvbnN0IHsgcmV0dXJuIG1Vbmlmb3JtQmxvY2tz
OyB9CiAKLSAgICAvLyBEaXJlY3RYIHNlbWFudGljIGluZm9ybWF0aW9uCi0gICAgc3RkOjpzdHJp
bmcgc2VtYW50aWNOYW1lOwotICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4OwotICAgIHVu
c2lnbmVkIGludCBzZW1hbnRpY0luZGV4Q291bnQ7Ci19OworICAgICAgICBjb25zdCBMaW5rZWRV
bmlmb3JtICpnZXRVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsK
KyAgICAgICAgR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1l
KSBjb25zdDsKKyAgICAgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmlu
ZyAmbmFtZSkgY29uc3Q7CiAKLWNsYXNzIFByb2dyYW0gOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsK
LSAgcHVibGljOgotICAgIFByb2dyYW0ocng6OlByb2dyYW1JbXBsICppbXBsLCBSZXNvdXJjZU1h
bmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYW5kbGUpOworICAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIFByb2dyYW07CisKKyAgICAgICAgc3RkOjpzdHJpbmcgbUxhYmVsOworCisg
ICAgICAgIFNoYWRlciAqbUF0dGFjaGVkRnJhZ21lbnRTaGFkZXI7CisgICAgICAgIFNoYWRlciAq
bUF0dGFjaGVkVmVydGV4U2hhZGVyOworCisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXM7CisgICAgICAgIHN0ZDo6dmVjdG9yPHNo
OjpWYXJ5aW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFyczsKKyAgICAgICAgR0xlbnVt
IG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGU7CisKKyAgICAgICAgR0x1aW50IG1Vbmlmb3Jt
QmxvY2tCaW5kaW5nc1tJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfU0hBREVSX1VOSUZPUk1f
QlVGRkVSU107CisgICAgICAgIFVuaWZvcm1CbG9ja0JpbmRpbmdNYXNrIG1BY3RpdmVVbmlmb3Jt
QmxvY2tCaW5kaW5nczsKKworICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiBtQXR0
cmlidXRlczsKKyAgICAgICAgc3RkOjpiaXRzZXQ8TUFYX1ZFUlRFWF9BVFRSSUJTPiBtQWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzazsKKworICAgICAgICAvLyBVbmlmb3JtcyBhcmUgc29ydGVkIGlu
IG9yZGVyOgorICAgICAgICAvLyAgMS4gTm9uLXNhbXBsZXIgdW5pZm9ybXMKKyAgICAgICAgLy8g
IDIuIFNhbXBsZXIgdW5pZm9ybXMKKyAgICAgICAgLy8gIDMuIFVuaWZvcm0gYmxvY2sgdW5pZm9y
bXMKKyAgICAgICAgLy8gVGhpcyBtYWtlcyBzYW1wbGVyIHZhbGlkYXRpb24gZWFzaWVyLCBzaW5j
ZSB3ZSBkb24ndCBuZWVkIGEgc2VwYXJhdGUgbGlzdC4KKyAgICAgICAgc3RkOjp2ZWN0b3I8TGlu
a2VkVW5pZm9ybT4gbVVuaWZvcm1zOworICAgICAgICBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0
aW9uPiBtVW5pZm9ybUxvY2F0aW9uczsKKyAgICAgICAgc3RkOjp2ZWN0b3I8VW5pZm9ybUJsb2Nr
PiBtVW5pZm9ybUJsb2NrczsKKworICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiB1c2UgdW5vcmRl
cmVkL2hhc2ggbWFwIHdoZW4gYXZhaWxhYmxlCisgICAgICAgIHN0ZDo6bWFwPGludCwgVmFyaWFi
bGVMb2NhdGlvbj4gbU91dHB1dFZhcmlhYmxlczsKKworICAgICAgICBib29sIG1CaW5hcnlSZXRy
aWV2ZWFibGVIaW50OworICAgIH07CisKKyAgICBQcm9ncmFtKHJ4OjpJbXBsRmFjdG9yeSAqZmFj
dG9yeSwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKTsKICAgICB+UHJv
Z3JhbSgpOwogCiAgICAgR0x1aW50IGlkKCkgY29uc3QgeyByZXR1cm4gbUhhbmRsZTsgfQogCisg
ICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOworCiAgICAgcng6
OlByb2dyYW1JbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1Qcm9ncmFtOyB9CiAg
ICAgY29uc3Qgcng6OlByb2dyYW1JbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1Qcm9ncmFtOyB9CiAKQEAgLTEyMyw0MiArMjQxLDQzIEBACiAKICAgICB2b2lkIGJpbmRB
dHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi0gICAg
RXJyb3IgbGluayhjb25zdCBEYXRhICZkYXRhKTsKLSAgICBib29sIGlzTGlua2VkKCk7CisgICAg
RXJyb3IgbGluayhjb25zdCBnbDo6RGF0YSAmZGF0YSk7CisgICAgYm9vbCBpc0xpbmtlZCgpIGNv
bnN0OwogCiAgICAgRXJyb3IgbG9hZEJpbmFyeShHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2
b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKICAgICBFcnJvciBzYXZlQmluYXJ5KEdMZW51
bSAqYmluYXJ5Rm9ybWF0LCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoKSBjb25zdDsKICAgICBHTGludCBnZXRCaW5hcnlMZW5ndGgoKSBjb25zdDsKKyAgICB2
b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKTsKKyAgICBib29s
IGdldEJpbmFyeVJldHJpZXZhYmxlSGludCgpIGNvbnN0OwogCiAgICAgaW50IGdldEluZm9Mb2dM
ZW5ndGgoKSBjb25zdDsKLSAgICB2b2lkIGdldEluZm9Mb2coR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIGNoYXIgKmluZm9Mb2cpOwotICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJz
KEdMc2l6ZWkgbWF4Q291bnQsIEdMc2l6ZWkgKmNvdW50LCBHTHVpbnQgKnNoYWRlcnMpOworICAg
IHZvaWQgZ2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAq
aW5mb0xvZykgY29uc3Q7CisgICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoR0xzaXplaSBtYXhD
b3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycykgY29uc3Q7CiAKLSAgICBHTHVp
bnQgZ2V0QXR0cmlidXRlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpOwotICAgIGlu
dCBnZXRTZW1hbnRpY0luZGV4KGludCBhdHRyaWJ1dGVJbmRleCk7Ci0gICAgY29uc3QgaW50ICpn
ZXRTZW1hbnRpY0luZGV4ZXMoKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0QXR0cmlidXRlTG9jYXRp
b24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIGJvb2wgaXNBdHRyaWJMb2Nh
dGlvbkFjdGl2ZShzaXplX3QgYXR0cmliTG9jYXRpb24pIGNvbnN0OwogCiAgICAgdm9pZCBnZXRB
Y3RpdmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xjaGFyICpuYW1lKTsKLSAgICBHTGlu
dCBnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpOwotICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0
ZU1heExlbmd0aCgpOworICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkgY29uc3Q7
CisgICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCkgY29uc3Q7CisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdldEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJl
dHVybiBtRGF0YS5tQXR0cmlidXRlczsgfQogCi0gICAgR0xpbnQgZ2V0U2FtcGxlck1hcHBpbmco
U2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCwgY29uc3QgQ2FwcyAm
Y2Fwcyk7Ci0gICAgR0xlbnVtIGdldFNhbXBsZXJUZXh0dXJlVHlwZShTYW1wbGVyVHlwZSB0eXBl
LCB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4KTsKLSAgICBHTGludCBnZXRVc2VkU2FtcGxlclJh
bmdlKFNhbXBsZXJUeXBlIHR5cGUpOwotICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0Owot
CiAgICAgR0xpbnQgZ2V0RnJhZ0RhdGFMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkg
Y29uc3Q7CiAKLSAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LCBHTHNpemVp
IGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnNpemUsIEdMZW51bSAqdHlwZSwgR0xj
aGFyICpuYW1lKTsKLSAgICBHTGludCBnZXRBY3RpdmVVbmlmb3JtQ291bnQoKTsKLSAgICBHTGlu
dCBnZXRBY3RpdmVVbmlmb3JtTWF4TGVuZ3RoKCk7CisgICAgdm9pZCBnZXRBY3RpdmVVbmlmb3Jt
KEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkgY29u
c3Q7CisgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybUNvdW50KCkgY29uc3Q7CisgICAgR0xpbnQg
Z2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpIGNvbnN0OwogICAgIEdMaW50IGdldEFjdGl2ZVVu
aWZvcm1pKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lKSBjb25zdDsKICAgICBib29sIGlzVmFs
aWRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0OwotICAgIExpbmtlZFVuaWZv
cm0gKmdldFVuaWZvcm1CeUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdDsKLSAgICBMaW5r
ZWRVbmlmb3JtICpnZXRVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25z
dDsKKyAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZnZXRVbmlmb3JtQnlMb2NhdGlvbihHTGludCBs
b2NhdGlvbikgY29uc3Q7CiAKLSAgICBHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUpOwotICAgIEdMdWludCBnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpOworICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSkgY29uc3Q7CisgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSkgY29uc3Q7CiAgICAgdm9pZCBzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKICAgICB2b2lkIHNldFVuaWZv
cm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwog
ICAgIHZvaWQgc2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdik7CkBAIC0xODEsMjQgKzMwMCwyMSBAQAogICAgIHZvaWQgc2V0VW5pZm9y
bU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CiAgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4
NHgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKIAotICAgIHZvaWQgZ2V0VW5pZm9ybWZ2KEdMaW50IGxv
Y2F0aW9uLCBHTGZsb2F0ICpwYXJhbXMpOwotICAgIHZvaWQgZ2V0VW5pZm9ybWl2KEdMaW50IGxv
Y2F0aW9uLCBHTGludCAqcGFyYW1zKTsKLSAgICB2b2lkIGdldFVuaWZvcm11aXYoR0xpbnQgbG9j
YXRpb24sIEdMdWludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldFVuaWZvcm1mdihHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCAqcGFyYW1zKSBjb25zdDsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcykgY29uc3Q7CisgICAgdm9pZCBnZXRVbmlmb3JtdWl2
KEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykgY29uc3Q7CiAKLSAgICBFcnJvciBhcHBs
eVVuaWZvcm1zKCk7Ci0gICAgRXJyb3IgYXBwbHlVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6RGF0
YSAmZGF0YSk7Ci0KICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoR0x1aW50IHVu
aWZvcm1CbG9ja0luZGV4LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFy
ICp1bmlmb3JtQmxvY2tOYW1lKSBjb25zdDsKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm1CbG9j
a2l2KEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KSBjb25zdDsKLSAgICBHTHVpbnQgZ2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKTsKLSAgICBH
TGludCBnZXRBY3RpdmVVbmlmb3JtQmxvY2tNYXhMZW5ndGgoKTsKKyAgICBHTHVpbnQgZ2V0QWN0
aXZlVW5pZm9ybUJsb2NrQ291bnQoKSBjb25zdDsKKyAgICBHTGludCBnZXRBY3RpdmVVbmlmb3Jt
QmxvY2tNYXhMZW5ndGgoKSBjb25zdDsKIAotICAgIEdMdWludCBnZXRVbmlmb3JtQmxvY2tJbmRl
eChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSk7CisgICAgR0x1aW50IGdldFVuaWZvcm1CbG9ja0lu
ZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKIAogICAgIHZvaWQgYmluZFVuaWZv
cm1CbG9jayhHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5k
aW5nKTsKICAgICBHTHVpbnQgZ2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgpIGNvbnN0OwogCi0gICAgY29uc3QgVW5pZm9ybUJsb2NrICpnZXRVbmlmb3JtQmxv
Y2tCeUluZGV4KEdMdWludCBpbmRleCkgY29uc3Q7CisgICAgY29uc3QgVW5pZm9ybUJsb2NrICZn
ZXRVbmlmb3JtQmxvY2tCeUluZGV4KEdMdWludCBpbmRleCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyICpj
b25zdCAqdmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2RlKTsKICAgICB2b2lkIGdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTHNpemVpICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSkgY29uc3Q7
CkBAIC0yMDYsNyArMzIyLDYgQEAKICAgICBHTHNpemVpIGdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZ01heExlbmd0aCgpIGNvbnN0OwogICAgIEdMZW51bSBnZXRUcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlck1vZGUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIGxpbmtWYXJ5aW5ncyhJbmZvTG9n
ICZpbmZvTG9nLCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBTaGFkZXIgKnZlcnRleFNoYWRlcik7
CiAgICAgc3RhdGljIGJvb2wgbGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4
VW5pZm9ybSwgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSk7CiAgICAgc3RhdGlj
IGJvb2wgbGlua1ZhbGlkYXRlSW50ZXJmYWNlQmxvY2tGaWVsZHMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tG
aWVsZCAmdmVydGV4VW5pZm9ybSwgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZyYWdt
ZW50VW5pZm9ybSk7CiAKQEAgLTIxOSwxNyArMzM0LDI2IEBACiAgICAgdm9pZCB2YWxpZGF0ZShj
b25zdCBDYXBzICZjYXBzKTsKICAgICBib29sIHZhbGlkYXRlU2FtcGxlcnMoSW5mb0xvZyAqaW5m
b0xvZywgY29uc3QgQ2FwcyAmY2Fwcyk7CiAgICAgYm9vbCBpc1ZhbGlkYXRlZCgpIGNvbnN0Owot
ICAgIHZvaWQgdXBkYXRlU2FtcGxlck1hcHBpbmcoKTsKIAorICAgIGNvbnN0IEF0dHJpYnV0ZXNN
YXNrICZnZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtRGF0YS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsKKyAgICB9CisKICAgcHJp
dmF0ZToKICAgICB2b2lkIHVubGluayhib29sIGRlc3Ryb3kgPSBmYWxzZSk7CiAgICAgdm9pZCBy
ZXNldFVuaWZvcm1CbG9ja0JpbmRpbmdzKCk7CiAKLSAgICBib29sIGxpbmtBdHRyaWJ1dGVzKGNv
bnN0IERhdGEgJmRhdGEsCisgICAgYm9vbCBsaW5rQXR0cmlidXRlcyhjb25zdCBnbDo6RGF0YSAm
ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVCaW5kaW5ncyAmYXR0cmlidXRlQmluZGlu
Z3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXIgKnZlcnRleFNoYWRlcik7
Ci0gICAgYm9vbCBsaW5rVW5pZm9ybUJsb2NrcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBTaGFk
ZXIgJnZlcnRleFNoYWRlciwgY29uc3QgU2hhZGVyICZmcmFnbWVudFNoYWRlciwgY29uc3QgQ2Fw
cyAmY2Fwcyk7CisgICAgYm9vbCBsaW5rVW5pZm9ybUJsb2NrcyhJbmZvTG9nICZpbmZvTG9nLCBj
b25zdCBDYXBzICZjYXBzKTsKKyAgICBzdGF0aWMgYm9vbCBsaW5rVmFyeWluZ3MoSW5mb0xvZyAm
aW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICp2ZXJ0
ZXhTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlciAqZnJh
Z21lbnRTaGFkZXIpOworICAgIGJvb2wgbGlua1VuaWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBjb25zdCBnbDo6Q2FwcyAmY2Fwcyk7CisgICAgdm9pZCBpbmRleFVuaWZvcm1zKCk7CiAgICAg
Ym9vbCBhcmVNYXRjaGluZ0ludGVyZmFjZUJsb2NrcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29u
c3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRlcmZhY2VCbG9jaywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmZnJhZ21l
bnRJbnRlcmZhY2VCbG9jayk7CiAKQEAgLTI0MCwzMiArMzY0LDY0IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHZhbGlkYXRlUHJlY2lzaW9uKTsKIAog
ICAgIHN0YXRpYyBib29sIGxpbmtWYWxpZGF0ZVZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csIGNv
bnN0IHN0ZDo6c3RyaW5nICZ2YXJ5aW5nTmFtZSwgY29uc3Qgc2g6OlZhcnlpbmcgJnZlcnRleFZh
cnlpbmcsIGNvbnN0IHNoOjpWYXJ5aW5nICZmcmFnbWVudFZhcnlpbmcpOwotICAgIGJvb2wgZ2F0
aGVyVHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25z
dCBzdGQ6OnZlY3RvcjxMaW5rZWRWYXJ5aW5nPiAmbGlua2VkVmFyeWluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlck1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPExpbmtlZFZhcnlpbmc+ICpvdXRUcmFuc2Zvcm1GZWVkYmFja0xpbmtl
ZFZhcnlpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDYXBzICZjYXBzKSBjb25zdDsKKyAgICBib29sIGxpbmtWYWxpZGF0ZVRyYW5zZm9y
bUZlZWRiYWNrKEluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiAmbGlua2Vk
VmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
YXBzICZjYXBzKSBjb25zdDsKKworICAgIHZvaWQgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncyhjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiAmdmFyeWluZ3MpOwog
ICAgIGJvb2wgYXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0ZXIoSW5mb0xvZyAmaW5mb0xvZywgVW5p
Zm9ybUJsb2NrICp1bmlmb3JtQmxvY2ssIEdMZW51bSBzaGFkZXIsIHVuc2lnbmVkIGludCByZWdp
c3RlckluZGV4LCBjb25zdCBDYXBzICZjYXBzKTsKICAgICB2b2lkIGRlZmluZU91dHB1dFZhcmlh
YmxlcyhTaGFkZXIgKmZyYWdtZW50U2hhZGVyKTsKIAotICAgIHJ4OjpQcm9ncmFtSW1wbCAqbVBy
b2dyYW07CisgICAgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZhcnlpbmcgKj4gZ2V0TWVyZ2VkVmFy
eWluZ3MoKSBjb25zdDsKKyAgICB2b2lkIGxpbmtPdXRwdXRWYXJpYWJsZXMoKTsKIAotICAgIHNo
OjpBdHRyaWJ1dGUgbUxpbmtlZEF0dHJpYnV0ZVtNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIGJv
b2wgZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzKGNvbnN0IENhcHMgJmNhcHMsIEluZm9Mb2cg
JmluZm9Mb2cpOwogCi0gICAgc3RkOjptYXA8aW50LCBWYXJpYWJsZUxvY2F0aW9uPiBtT3V0cHV0
VmFyaWFibGVzOworICAgIHN0cnVjdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQKKyAgICB7CisgICAg
ICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCgpIDogdmVjdG9yQ291bnQoMCksIHNhbXBsZXJDb3Vu
dCgwKSB7fQorICAgICAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQoY29uc3QgVmVjdG9yQW5kU2Ft
cGxlckNvdW50ICZvdGhlcikgPSBkZWZhdWx0OworICAgICAgICBWZWN0b3JBbmRTYW1wbGVyQ291
bnQgJm9wZXJhdG9yPShjb25zdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQgJm90aGVyKSA9IGRlZmF1
bHQ7CiAKLSAgICBib29sIG1WYWxpZGF0ZWQ7CisgICAgICAgIFZlY3RvckFuZFNhbXBsZXJDb3Vu
dCAmb3BlcmF0b3IrPShjb25zdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQgJm90aGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICB2ZWN0b3JDb3VudCArPSBvdGhlci52ZWN0b3JDb3VudDsKKyAgICAg
ICAgICAgIHNhbXBsZXJDb3VudCArPSBvdGhlci5zYW1wbGVyQ291bnQ7CisgICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgICAgIH0KIAotICAgIFNoYWRlciAqbUZyYWdtZW50U2hhZGVyOwot
ICAgIFNoYWRlciAqbVZlcnRleFNoYWRlcjsKKyAgICAgICAgdW5zaWduZWQgaW50IHZlY3RvckNv
dW50OworICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckNvdW50OworICAgIH07CiAKLSAgICBB
dHRyaWJ1dGVCaW5kaW5ncyBtQXR0cmlidXRlQmluZGluZ3M7CisgICAgVmVjdG9yQW5kU2FtcGxl
ckNvdW50IGZsYXR0ZW5Vbmlmb3JtKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdW5pZm9ybSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJmZ1bGxOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAqc2FtcGxlclVuaWZvcm1zKTsKIAotICAgIEdMdWlu
dCBtVW5pZm9ybUJsb2NrQmluZGluZ3NbSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURF
Ul9VTklGT1JNX0JVRkZFUlNdOworICAgIHZvaWQgZ2F0aGVySW50ZXJmYWNlQmxvY2tJbmZvKCk7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+CisgICAgdm9pZCBkZWZpbmVVbmlmb3JtQmxv
Y2tNZW1iZXJzKGNvbnN0IHN0ZDo6dmVjdG9yPFZhclQ+ICZmaWVsZHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwcmVmaXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBibG9ja0luZGV4KTsKIAotICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczsKLSAgICBHTGVu
dW0gbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZTsKKyAgICB2b2lkIGRlZmluZVVuaWZvcm1C
bG9jayhjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLCBHTGVudW0gc2hh
ZGVyVHlwZSk7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHNldFVuaWZv
cm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgVCAqdik7CisK
KyAgICB0ZW1wbGF0ZSA8c2l6ZV90IGNvbHMsIHNpemVfdCByb3dzLCB0eXBlbmFtZSBUPgorICAg
IHZvaWQgc2V0TWF0cml4VW5pZm9ybUludGVybmFsKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBUICp2KTsKKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBEZXN0VD4KKyAgICB2b2lkIGdldFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlv
biwgRGVzdFQgKmRhdGFPdXQpIGNvbnN0OworCisgICAgRGF0YSBtRGF0YTsKKyAgICByeDo6UHJv
Z3JhbUltcGwgKm1Qcm9ncmFtOworCisgICAgYm9vbCBtVmFsaWRhdGVkOworCisgICAgQXR0cmli
dXRlQmluZGluZ3MgbUF0dHJpYnV0ZUJpbmRpbmdzOworCiAgICAgYm9vbCBtTGlua2VkOwogICAg
IGJvb2wgbURlbGV0ZVN0YXR1czsgICAvLyBGbGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHByb2dy
YW0gY2FuIGJlIGRlbGV0ZWQgd2hlbiBubyBsb25nZXIgaW4gdXNlCiAKQEAgLTI3NSw2ICs0MzEs
MTEgQEAKICAgICBjb25zdCBHTHVpbnQgbUhhbmRsZTsKIAogICAgIEluZm9Mb2cgbUluZm9Mb2c7
CisKKyAgICAvLyBDYWNoZSBmb3Igc2FtcGxlciB2YWxpZGF0aW9uCisgICAgT3B0aW9uYWw8Ym9v
bD4gbUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQ7CisgICAgc3RkOjp2ZWN0b3I8R0xlbnVt
PiBtVGV4dHVyZVVuaXRUeXBlc0NhY2hlOworICAgIFJhbmdlVUkgbVNhbXBsZXJVbmlmb3JtUmFu
Z2U7CiB9OwogfQogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
UHJvZ3JhbV91bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1Byb2dyYW1fdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW1fdW5pdHRlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBVbml0IHRlc3RzIGZv
ciBQcm9ncmFtIGFuZCByZWxhdGVkIGNsYXNzZXMuCisvLworCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KKworI2luY2x1ZGUgInRlc3RzL2FuZ2xlX3VuaXR0ZXN0c191dGlscy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKwordXNpbmcgbmFtZXNwYWNlIGdsOworCituYW1lc3Bh
Y2UKK3sKKworLy8gVGVzdHMgdGhhdCB0aGUgbG9nIGxlbmd0aCBwcm9wZXJseSBjb3VudHMgdGhl
IHRlcm1pbmF0aW5nIFwwLgorVEVTVChJbmZvTG9nVGVzdCwgTG9nTGVuZ3RoQ291bnRzVGVybWlu
YXRvcikKK3sKKyAgICBJbmZvTG9nIGluZm9Mb2c7CisgICAgRVhQRUNUX0VRKDB1LCBpbmZvTG9n
LmdldExlbmd0aCgpKTsKKyAgICBpbmZvTG9nIDw8ICIgIjsKKworICAgIC8vICIgXG5cMCIgPSAz
IGNoYXJhY3RlcnMKKyAgICBFWFBFQ1RfRVEoM3UsIGluZm9Mb2cuZ2V0TGVuZ3RoKCkpOworfQor
CisvLyBUZXN0cyB0aGF0IG5ld2xpbmVzIGdldCBhcHBlbmRlZCB0byB0aGUgaW5mbyBsb2cgcHJv
cGVybHkuCitURVNUKEluZm9Mb2dUZXN0LCBBcHBlbmRpbmdOZXdsaW5lKQoreworICAgIEluZm9M
b2cgaW5mb0xvZzsKKworICAgIGluZm9Mb2cgPDwgIkZpcnN0IiA8PCAxIDw8ICd4JzsKKyAgICBp
bmZvTG9nIDw8ICJTZWNvbmQiIDw8IDIgPDwgJ3knOworCisgICAgc3RkOjpzdHJpbmcgZXhwZWN0
ZWQgPSAiRmlyc3QxeFxuU2Vjb25kMnlcbiI7CisKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGlu
Zm9Mb2cuc3RyKCkpOworfQorCit9IC8vIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1F1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUXVlcnkuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUXVlcnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMSw5ICsxMSw3IEBACiAKIG5hbWVzcGFjZSBnbAogewotUXVlcnk6OlF1ZXJ5
KHJ4OjpRdWVyeUltcGwgKmltcGwsIEdMdWludCBpZCkKLSAgICA6IFJlZkNvdW50T2JqZWN0KGlk
KSwKLSAgICAgIG1RdWVyeShpbXBsKQorUXVlcnk6OlF1ZXJ5KHJ4OjpRdWVyeUltcGwgKmltcGws
IEdMdWludCBpZCkgOiBSZWZDb3VudE9iamVjdChpZCksIG1RdWVyeShpbXBsKSwgbUxhYmVsKCkK
IHsKIH0KIApAQCAtMjIsNiArMjAsMTYgQEAKICAgICBTYWZlRGVsZXRlKG1RdWVyeSk7CiB9CiAK
K3ZvaWQgUXVlcnk6OnNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkKK3sKKyAgICBt
TGFiZWwgPSBsYWJlbDsKK30KKworY29uc3Qgc3RkOjpzdHJpbmcgJlF1ZXJ5OjpnZXRMYWJlbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1MYWJlbDsKK30KKwogRXJyb3IgUXVlcnk6OmJlZ2luKCkK
IHsKICAgICByZXR1cm4gbVF1ZXJ5LT5iZWdpbigpOwpAQCAtMzIsMTMgKzQwLDMzIEBACiAgICAg
cmV0dXJuIG1RdWVyeS0+ZW5kKCk7CiB9CiAKK0Vycm9yIFF1ZXJ5OjpxdWVyeUNvdW50ZXIoKQor
eworICAgIHJldHVybiBtUXVlcnktPnF1ZXJ5Q291bnRlcigpOworfQorCitFcnJvciBRdWVyeTo6
Z2V0UmVzdWx0KEdMaW50ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIG1RdWVyeS0+Z2V0UmVzdWx0
KHBhcmFtcyk7Cit9CisKIEVycm9yIFF1ZXJ5OjpnZXRSZXN1bHQoR0x1aW50ICpwYXJhbXMpCiB7
CiAgICAgcmV0dXJuIG1RdWVyeS0+Z2V0UmVzdWx0KHBhcmFtcyk7CiB9CiAKLUVycm9yIFF1ZXJ5
Ojppc1Jlc3VsdEF2YWlsYWJsZShHTHVpbnQgKmF2YWlsYWJsZSkKK0Vycm9yIFF1ZXJ5OjpnZXRS
ZXN1bHQoR0xpbnQ2NCAqcGFyYW1zKQogeworICAgIHJldHVybiBtUXVlcnktPmdldFJlc3VsdChw
YXJhbXMpOworfQorCitFcnJvciBRdWVyeTo6Z2V0UmVzdWx0KEdMdWludDY0ICpwYXJhbXMpCit7
CisgICAgcmV0dXJuIG1RdWVyeS0+Z2V0UmVzdWx0KHBhcmFtcyk7Cit9CisKK0Vycm9yIFF1ZXJ5
Ojppc1Jlc3VsdEF2YWlsYWJsZShib29sICphdmFpbGFibGUpCit7CiAgICAgcmV0dXJuIG1RdWVy
eS0+aXNSZXN1bHRBdmFpbGFibGUoYXZhaWxhYmxlKTsKIH0KIApAQCAtNDcsNCArNzUsMTMgQEAK
ICAgICByZXR1cm4gbVF1ZXJ5LT5nZXRUeXBlKCk7CiB9CiAKK3J4OjpRdWVyeUltcGwgKlF1ZXJ5
OjpnZXRJbXBsZW1lbnRhdGlvbigpCit7CisgICAgcmV0dXJuIG1RdWVyeTsKIH0KKworY29uc3Qg
cng6OlF1ZXJ5SW1wbCAqUXVlcnk6OmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbVF1ZXJ5OworfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1F1ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1F1ZXJ5LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9RdWVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksNyBA
QAogI2lmbmRlZiBMSUJBTkdMRV9RVUVSWV9IXwogI2RlZmluZSBMSUJBTkdMRV9RVUVSWV9IXwog
CisjaW5jbHVkZSAibGliQU5HTEUvRGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCiAKQEAgLTI0LDIyICsyNSwz
MyBAQAogbmFtZXNwYWNlIGdsCiB7CiAKLWNsYXNzIFF1ZXJ5IDogcHVibGljIFJlZkNvdW50T2Jq
ZWN0CitjbGFzcyBRdWVyeSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9iamVjdCwgcHVibGljIExh
YmVsZWRPYmplY3QKIHsKICAgcHVibGljOgogICAgIFF1ZXJ5KHJ4OjpRdWVyeUltcGwgKmltcGws
IEdMdWludCBpZCk7CiAgICAgdmlydHVhbCB+UXVlcnkoKTsKIAorICAgIHZvaWQgc2V0TGFiZWwo
Y29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKSBvdmVycmlkZTsKKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmZ2V0TGFiZWwoKSBjb25zdCBvdmVycmlkZTsKKwogICAgIEVycm9yIGJlZ2luKCk7CiAgICAg
RXJyb3IgZW5kKCk7Ci0KKyAgICBFcnJvciBxdWVyeUNvdW50ZXIoKTsKKyAgICBFcnJvciBnZXRS
ZXN1bHQoR0xpbnQgKnBhcmFtcyk7CiAgICAgRXJyb3IgZ2V0UmVzdWx0KEdMdWludCAqcGFyYW1z
KTsKLSAgICBFcnJvciBpc1Jlc3VsdEF2YWlsYWJsZShHTHVpbnQgKmF2YWlsYWJsZSk7CisgICAg
RXJyb3IgZ2V0UmVzdWx0KEdMaW50NjQgKnBhcmFtcyk7CisgICAgRXJyb3IgZ2V0UmVzdWx0KEdM
dWludDY0ICpwYXJhbXMpOworICAgIEVycm9yIGlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWls
YWJsZSk7CiAKICAgICBHTGVudW0gZ2V0VHlwZSgpIGNvbnN0OwogCisgICAgcng6OlF1ZXJ5SW1w
bCAqZ2V0SW1wbGVtZW50YXRpb24oKTsKKyAgICBjb25zdCByeDo6UXVlcnlJbXBsICpnZXRJbXBs
ZW1lbnRhdGlvbigpIGNvbnN0OworCiAgIHByaXZhdGU6CiAgICAgcng6OlF1ZXJ5SW1wbCAqbVF1
ZXJ5OworCisgICAgc3RkOjpzdHJpbmcgbUxhYmVsOwogfTsKIAogfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVmQ291bnRPYmplY3Qu
Y3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvUmVmQ291bnRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFJlZkNvdW50T2JqZWN0LmNwcDogRGVmaW5lcyB0aGUg
Z2w6OlJlZkNvdW50T2JqZWN0IGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcwotLy8gbGlmZWN5Y2xl
IHN1cHBvcnQgZm9yIEdMIG9iamVjdHMgdXNpbmcgdGhlIHRyYWRpdGlvbmFsIEJpbmRPYmplY3Qg
c2NoZW1lLCBidXQKLS8vIHRoYXQgbmVlZCB0byBiZSByZWZlcmVuY2UgY291bnRlZCBmb3IgY29y
cmVjdCBjcm9zcy1jb250ZXh0IGRlbGV0aW9uLgotLy8gKENvbmNyZXRlbHksIHRleHR1cmVzLCBi
dWZmZXJzIGFuZCByZW5kZXJidWZmZXJzLikKLQotI2luY2x1ZGUgIlJlZkNvdW50T2JqZWN0Lmgi
Ci0KLVJlZkNvdW50T2JqZWN0OjpSZWZDb3VudE9iamVjdChHTHVpbnQgaWQpCi0gICAgOiBtSWQo
aWQpLAotICAgICAgbVJlZkNvdW50KDApCi17Ci19Ci0KLVJlZkNvdW50T2JqZWN0Ojp+UmVmQ291
bnRPYmplY3QoKQotewotICAgIEFTU0VSVChtUmVmQ291bnQgPT0gMCk7Ci19Ci0KLXZvaWQgUmVm
Q291bnRPYmplY3Q6OmFkZFJlZigpIGNvbnN0Ci17Ci0gICAgbVJlZkNvdW50Kys7Ci19Ci0KLXZv
aWQgUmVmQ291bnRPYmplY3Q6OnJlbGVhc2UoKSBjb25zdAotewotICAgIEFTU0VSVChtUmVmQ291
bnQgPiAwKTsKLQotICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQotICAgIHsKLSAgICAgICAgZGVs
ZXRlIHRoaXM7Ci0gICAgfQotfQotCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvUmVmQ291bnRPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVmQ291bnRPYmplY3QuaAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDE0ICsyMSwyNyBAQAogY2xhc3MgUmVmQ291bnRPYmplY3Qg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIGV4cGxpY2l0IFJlZkNvdW50
T2JqZWN0KEdMdWludCBpZCk7Ci0gICAgdmlydHVhbCB+UmVmQ291bnRPYmplY3QoKTsKKyAgICBl
eHBsaWNpdCBSZWZDb3VudE9iamVjdChHTHVpbnQgaWQpIDogbUlkKGlkKSwgbVJlZkNvdW50KDAp
IHt9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUmVmKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbGVhc2UoKSBjb25zdDsKKyAgICB2b2lkIGFkZFJlZigpIGNvbnN0IHsgKyttUmVmQ291bnQ7
IH0KIAorICAgIHZvaWQgcmVsZWFzZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobVJl
ZkNvdW50ID4gMCk7CisKKyAgICAgICAgaWYgKC0tbVJlZkNvdW50ID09IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICB9CisgICAgfQorCiAgICAgR0x1aW50
IGlkKCkgY29uc3QgeyByZXR1cm4gbUlkOyB9CiAKKyAgICBzaXplX3QgZ2V0UmVmQ291bnQoKSBj
b25zdCB7IHJldHVybiBtUmVmQ291bnQ7IH0KKworICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+
UmVmQ291bnRPYmplY3QoKSB7IEFTU0VSVChtUmVmQ291bnQgPT0gMCk7IH0KKwogICBwcml2YXRl
OgogICAgIEdMdWludCBtSWQ7CiAKQEAgLTM4LDcgKzUxLDcgQEAKIHRlbXBsYXRlIDxjbGFzcyBP
YmplY3RUeXBlPgogY2xhc3MgQmluZGluZ1BvaW50ZXIKIHsKLXB1YmxpYzoKKyAgcHVibGljOgog
ICAgIEJpbmRpbmdQb2ludGVyKCkKICAgICAgICAgOiBtT2JqZWN0KG51bGxwdHIpCiAgICAgewpA
QCAtNzQsNiArODcsMTMgQEAKIAogICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIChtT2Jq
ZWN0ICE9IG51bGxwdHIpID8gbU9iamVjdC0+aWQoKSA6IDA7IH0KIAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBCaW5kaW5nUG9pbnRlcjxPYmplY3RUeXBlPiAmb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbU9iamVjdCA9PSBvdGhlci5tT2JqZWN0OworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaW5kaW5nUG9pbnRlcjxPYmplY3RUeXBlPiAmb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisKICAgcHJpdmF0ZToKICAgICBP
YmplY3RUeXBlICptT2JqZWN0OwogfTsKQEAgLTEwMSw2ICsxMjEsMTYgQEAKICAgICBHTGludHB0
ciBnZXRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtT2Zmc2V0OyB9CiAgICAgR0xzaXplaXB0ciBn
ZXRTaXplKCkgY29uc3QgeyByZXR1cm4gbVNpemU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxPYmplY3RUeXBlPiAmb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy0+Z2V0KCkgPT0gb3RoZXIuZ2V0KCkgJiYgbU9mZnNldCA9
PSBvdGhlci5tT2Zmc2V0ICYmIG1TaXplID09IG90aGVyLm1TaXplOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxPYmplY3RUeXBlPiAmb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAg
fQorCiAgIHByaXZhdGU6CiAgICAgR0xpbnRwdHIgbU9mZnNldDsKICAgICBHTHNpemVpcHRyIG1T
aXplOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlbmRlcmJ1
ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1JlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMiwyMCArMTIsMjEgQEAKIAogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9JbWFnZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5k
ZXJUYXJnZXREM0QuaCIKIAogbmFtZXNwYWNlIGdsCiB7Ci0KIFJlbmRlcmJ1ZmZlcjo6UmVuZGVy
YnVmZmVyKHJ4OjpSZW5kZXJidWZmZXJJbXBsICppbXBsLCBHTHVpbnQgaWQpCi0gIDogRnJhbWVi
dWZmZXJBdHRhY2htZW50T2JqZWN0KGlkKSwKLSAgICBtUmVuZGVyYnVmZmVyKGltcGwpLAotICAg
IG1XaWR0aCgwKSwKLSAgICBtSGVpZ2h0KDApLAotICAgIG1JbnRlcm5hbEZvcm1hdChHTF9SR0JB
NCksCi0gICAgbVNhbXBsZXMoMCkKKyAgICA6IGVnbDo6SW1hZ2VTaWJsaW5nKGlkKSwKKyAgICAg
IG1SZW5kZXJidWZmZXIoaW1wbCksCisgICAgICBtTGFiZWwoKSwKKyAgICAgIG1XaWR0aCgwKSwK
KyAgICAgIG1IZWlnaHQoMCksCisgICAgICBtSW50ZXJuYWxGb3JtYXQoR0xfUkdCQTQpLAorICAg
ICAgbVNhbXBsZXMoMCkKIHsKIH0KIApAQCAtMzQsMTYgKzM1LDI4IEBACiAgICAgU2FmZURlbGV0
ZShtUmVuZGVyYnVmZmVyKTsKIH0KIAordm9pZCBSZW5kZXJidWZmZXI6OnNldExhYmVsKGNvbnN0
IHN0ZDo6c3RyaW5nICZsYWJlbCkKK3sKKyAgICBtTGFiZWwgPSBsYWJlbDsKK30KKworY29uc3Qg
c3RkOjpzdHJpbmcgJlJlbmRlcmJ1ZmZlcjo6Z2V0TGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBtTGFiZWw7Cit9CisKIEVycm9yIFJlbmRlcmJ1ZmZlcjo6c2V0U3RvcmFnZShHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKIHsKKyAgICBvcnBoYW5J
bWFnZXMoKTsKKwogICAgIEVycm9yIGVycm9yID0gbVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZShp
bnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
ICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBtV2lkdGggPSBzdGF0
aWNfY2FzdDxHTHNpemVpPih3aWR0aCk7Ci0gICAgbUhlaWdodCA9IHN0YXRpY19jYXN0PEdMc2l6
ZWk+KGhlaWdodCk7CisgICAgbVdpZHRoICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4o
d2lkdGgpOworICAgIG1IZWlnaHQgICAgICAgICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdo
dCk7CiAgICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7CiAgICAgbVNhbXBsZXMg
PSAwOwogCkBAIC01MiwyMCArNjUsNDIgQEAKIAogRXJyb3IgUmVuZGVyYnVmZmVyOjpzZXRTdG9y
YWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgc2l6
ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogeworICAgIG9ycGhhbkltYWdlcygpOworCiAgICAg
RXJyb3IgZXJyb3IgPSBtUmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgbVdpZHRoID0g
c3RhdGljX2Nhc3Q8R0xzaXplaT4od2lkdGgpOwotICAgIG1IZWlnaHQgPSBzdGF0aWNfY2FzdDxH
THNpemVpPihoZWlnaHQpOworICAgIG1XaWR0aCAgICAgICAgICA9IHN0YXRpY19jYXN0PEdMc2l6
ZWk+KHdpZHRoKTsKKyAgICBtSGVpZ2h0ICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPiho
ZWlnaHQpOwogICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OwotICAgIG1TYW1w
bGVzID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oc2FtcGxlcyk7CisgICAgbVNhbXBsZXMgICAgICAg
ID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oc2FtcGxlcyk7CiAKICAgICByZXR1cm4gRXJyb3IoR0xf
Tk9fRVJST1IpOwogfQogCitFcnJvciBSZW5kZXJidWZmZXI6OnNldFN0b3JhZ2VFR0xJbWFnZVRh
cmdldChlZ2w6OkltYWdlICppbWFnZSkKK3sKKyAgICBvcnBoYW5JbWFnZXMoKTsKKworICAgIEVy
cm9yIGVycm9yID0gbVJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGltYWdl
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9y
OworICAgIH0KKworICAgIHNldFRhcmdldEltYWdlKGltYWdlKTsKKworICAgIG1XaWR0aCAgICAg
ICAgICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGltYWdlLT5nZXRXaWR0aCgpKTsKKyAgICBtSGVp
Z2h0ICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihpbWFnZS0+Z2V0SGVpZ2h0KCkpOwor
ICAgIG1JbnRlcm5hbEZvcm1hdCA9IGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgIG1T
YW1wbGVzICAgICAgICA9IDA7CisKKyAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworfQor
CiByeDo6UmVuZGVyYnVmZmVySW1wbCAqUmVuZGVyYnVmZmVyOjpnZXRJbXBsZW1lbnRhdGlvbigp
CiB7CiAgICAgQVNTRVJUKG1SZW5kZXJidWZmZXIpOwpAQCAtMTI3LDQgKzE2MiwyMyBAQAogICAg
IHJldHVybiBHZXRJbnRlcm5hbEZvcm1hdEluZm8obUludGVybmFsRm9ybWF0KS5zdGVuY2lsQml0
czsKIH0KIAordm9pZCBSZW5kZXJidWZmZXI6Om9uQXR0YWNoKCkKK3sKKyAgICBhZGRSZWYoKTsK
IH0KKwordm9pZCBSZW5kZXJidWZmZXI6Om9uRGV0YWNoKCkKK3sKKyAgICByZWxlYXNlKCk7Cit9
CisKK0dMdWludCBSZW5kZXJidWZmZXI6OmdldElkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaWQo
KTsKK30KKworRXh0ZW50cyBSZW5kZXJidWZmZXI6OmdldEF0dGFjaG1lbnRTaXplKGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYgLyp0YXJnZXQqLykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gRXh0ZW50cyhtV2lkdGgsIG1IZWlnaHQsIDEpOworfQorfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuaAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jl
bmRlcmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMywxMCBAQAogCiAjaW5jbHVk
ZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL0RlYnVnLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9J
bWFnZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaCIK
IAogbmFtZXNwYWNlIGdsCkBAIC0yNCwxNCArMjYsMjAgQEAKIC8vIEZyYW1lYnVmZmVyQXR0YWNo
bWVudCBhbmQgRnJhbWVidWZmZXIgZm9yIGhvdyB0aGV5IGFyZSBhcHBsaWVkIHRvIGFuIEZCTyB2
aWEgYW4KIC8vIGF0dGFjaG1lbnQgcG9pbnQuCiAKLWNsYXNzIFJlbmRlcmJ1ZmZlciA6IHB1Ymxp
YyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QKK2NsYXNzIFJlbmRlcmJ1ZmZlciBmaW5hbCA6
IHB1YmxpYyBlZ2w6OkltYWdlU2libGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgogICAgIFJlbmRlcmJ1
ZmZlcihyeDo6UmVuZGVyYnVmZmVySW1wbCAqaW1wbCwgR0x1aW50IGlkKTsKICAgICB2aXJ0dWFs
IH5SZW5kZXJidWZmZXIoKTsKIAorICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcg
JmxhYmVsKSBvdmVycmlkZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25z
dCBvdmVycmlkZTsKKwogICAgIEVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIGludGVybmFsZm9ybWF0
LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpOwogICAgIEVycm9yIHNldFN0b3JhZ2VNdWx0
aXNhbXBsZShzaXplX3Qgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQpOworICAgIEVycm9yIHNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChl
Z2w6OkltYWdlICppbWFnZVRhcmdldCk7CiAKICAgICByeDo6UmVuZGVyYnVmZmVySW1wbCAqZ2V0
SW1wbGVtZW50YXRpb24oKTsKICAgICBjb25zdCByeDo6UmVuZGVyYnVmZmVySW1wbCAqZ2V0SW1w
bGVtZW50YXRpb24oKSBjb25zdDsKQEAgLTQ4LDE2ICs1NiwyMSBAQAogICAgIEdMdWludCBnZXRT
dGVuY2lsU2l6ZSgpIGNvbnN0OwogCiAgICAgLy8gRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
IEltcGwKLSAgICBHTHNpemVpIGdldEF0dGFjaG1lbnRXaWR0aChjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OlRhcmdldCAmLyp0YXJnZXQqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZ2V0
V2lkdGgoKTsgfQotICAgIEdMc2l6ZWkgZ2V0QXR0YWNobWVudEhlaWdodChjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmLyp0YXJnZXQqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZ2V0SGVpZ2h0KCk7IH0KKyAgICBFeHRlbnRzIGdldEF0dGFjaG1lbnRTaXplKGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogICAg
IEdMZW51bSBnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50OjpUYXJnZXQgJi8qdGFyZ2V0Ki8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGdldElu
dGVybmFsRm9ybWF0KCk7IH0KICAgICBHTHNpemVpIGdldEF0dGFjaG1lbnRTYW1wbGVzKGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYvKnRhcmdldCovKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBnZXRTYW1wbGVzKCk7IH0KIAorICAgIHZvaWQgb25BdHRhY2goKSBvdmVycmlk
ZTsKKyAgICB2b2lkIG9uRGV0YWNoKCkgb3ZlcnJpZGU7CisgICAgR0x1aW50IGdldElkKCkgY29u
c3Qgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICByeDo6RnJhbWVidWZmZXJBdHRhY2htZW50
T2JqZWN0SW1wbCAqZ2V0QXR0YWNobWVudEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
UmVuZGVyYnVmZmVyOyB9CiAKICAgICByeDo6UmVuZGVyYnVmZmVySW1wbCAqbVJlbmRlcmJ1ZmZl
cjsKIAorICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKKwogICAgIEdMc2l6ZWkgbVdpZHRoOwogICAg
IEdMc2l6ZWkgbUhlaWdodDsKICAgICBHTGVudW0gbUludGVybmFsRm9ybWF0OwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNl
TWFuYWdlci5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miwx
OSArODIsMTkgQEAKIHsKICAgICBHTHVpbnQgaGFuZGxlID0gbUJ1ZmZlckhhbmRsZUFsbG9jYXRv
ci5hbGxvY2F0ZSgpOwogCi0gICAgbUJ1ZmZlck1hcFtoYW5kbGVdID0gTlVMTDsKKyAgICBtQnVm
ZmVyTWFwW2hhbmRsZV0gPSBudWxscHRyOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAogLy8g
UmV0dXJucyBhbiB1bnVzZWQgc2hhZGVyL3Byb2dyYW0gbmFtZQotR0x1aW50IFJlc291cmNlTWFu
YWdlcjo6Y3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gdHlwZSkKK0dM
dWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6TGltaXRhdGlvbnMg
JnJlbmRlcmVyTGltaXRhdGlvbnMsIEdMZW51bSB0eXBlKQogewogICAgIEdMdWludCBoYW5kbGUg
PSBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwogCiAgICAgaWYgKHR5
cGUgPT0gR0xfVkVSVEVYX1NIQURFUiB8fCB0eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikKICAg
ICB7Ci0gICAgICAgIG1TaGFkZXJNYXBbaGFuZGxlXSA9IG5ldyBTaGFkZXIodGhpcywgbUZhY3Rv
cnktPmNyZWF0ZVNoYWRlcih0eXBlKSwgdHlwZSwgaGFuZGxlKTsKKyAgICAgICAgbVNoYWRlck1h
cFtoYW5kbGVdID0gbmV3IFNoYWRlcih0aGlzLCBtRmFjdG9yeSwgcmVuZGVyZXJMaW1pdGF0aW9u
cywgdHlwZSwgaGFuZGxlKTsKICAgICB9CiAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogCkBAIC0x
MDYsNyArMTA2LDcgQEAKIHsKICAgICBHTHVpbnQgaGFuZGxlID0gbVByb2dyYW1TaGFkZXJIYW5k
bGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAgIG1Qcm9ncmFtTWFwW2hhbmRsZV0gPSBuZXcg
UHJvZ3JhbShtRmFjdG9yeS0+Y3JlYXRlUHJvZ3JhbSgpLCB0aGlzLCBoYW5kbGUpOworICAgIG1Q
cm9ncmFtTWFwW2hhbmRsZV0gPSBuZXcgUHJvZ3JhbShtRmFjdG9yeSwgdGhpcywgaGFuZGxlKTsK
IAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBAIC0xMTYsNyArMTE2LDcgQEAKIHsKICAgICBHTHVp
bnQgaGFuZGxlID0gbVRleHR1cmVIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAgIG1U
ZXh0dXJlTWFwW2hhbmRsZV0gPSBOVUxMOworICAgIG1UZXh0dXJlTWFwW2hhbmRsZV0gPSBudWxs
cHRyOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KQEAgLTEyNiw3ICsxMjYsNyBAQAogewogICAg
IEdMdWludCBoYW5kbGUgPSBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7
CiAKLSAgICBtUmVuZGVyYnVmZmVyTWFwW2hhbmRsZV0gPSBOVUxMOworICAgIG1SZW5kZXJidWZm
ZXJNYXBbaGFuZGxlXSA9IG51bGxwdHI7CiAKICAgICByZXR1cm4gaGFuZGxlOwogfQpAQCAtMTM2
LDcgKzEzNiw3IEBACiB7CiAgICAgR0x1aW50IGhhbmRsZSA9IG1TYW1wbGVySGFuZGxlQWxsb2Nh
dG9yLmFsbG9jYXRlKCk7CiAKLSAgICBtU2FtcGxlck1hcFtoYW5kbGVdID0gTlVMTDsKKyAgICBt
U2FtcGxlck1hcFtoYW5kbGVdID0gbnVsbHB0cjsKIAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBA
IC0xNTUsNyArMTU1LDcgQEAKIAogdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUJ1ZmZlcihH
THVpbnQgYnVmZmVyKQogewotICAgIEJ1ZmZlck1hcDo6aXRlcmF0b3IgYnVmZmVyT2JqZWN0ID0g
bUJ1ZmZlck1hcC5maW5kKGJ1ZmZlcik7CisgICAgYXV0byBidWZmZXJPYmplY3QgPSBtQnVmZmVy
TWFwLmZpbmQoYnVmZmVyKTsKIAogICAgIGlmIChidWZmZXJPYmplY3QgIT0gbUJ1ZmZlck1hcC5l
bmQoKSkKICAgICB7CkBAIC0xNjcsNyArMTY3LDcgQEAKIAogdm9pZCBSZXNvdXJjZU1hbmFnZXI6
OmRlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogewotICAgIFNoYWRlck1hcDo6aXRlcmF0b3Ig
c2hhZGVyT2JqZWN0ID0gbVNoYWRlck1hcC5maW5kKHNoYWRlcik7CisgICAgYXV0byBzaGFkZXJP
YmplY3QgPSBtU2hhZGVyTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChzaGFkZXJPYmplY3Qg
IT0gbVNoYWRlck1hcC5lbmQoKSkKICAgICB7CkBAIC0xODYsNyArMTg2LDcgQEAKIAogdm9pZCBS
ZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiB7Ci0gICAgUHJv
Z3JhbU1hcDo6aXRlcmF0b3IgcHJvZ3JhbU9iamVjdCA9IG1Qcm9ncmFtTWFwLmZpbmQocHJvZ3Jh
bSk7CisgICAgYXV0byBwcm9ncmFtT2JqZWN0ID0gbVByb2dyYW1NYXAuZmluZChwcm9ncmFtKTsK
IAogICAgIGlmIChwcm9ncmFtT2JqZWN0ICE9IG1Qcm9ncmFtTWFwLmVuZCgpKQogICAgIHsKQEAg
LTIwNSw3ICsyMDUsNyBAQAogCiB2b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlVGV4dHVyZShH
THVpbnQgdGV4dHVyZSkKIHsKLSAgICBUZXh0dXJlTWFwOjppdGVyYXRvciB0ZXh0dXJlT2JqZWN0
ID0gbVRleHR1cmVNYXAuZmluZCh0ZXh0dXJlKTsKKyAgICBhdXRvIHRleHR1cmVPYmplY3QgPSBt
VGV4dHVyZU1hcC5maW5kKHRleHR1cmUpOwogCiAgICAgaWYgKHRleHR1cmVPYmplY3QgIT0gbVRl
eHR1cmVNYXAuZW5kKCkpCiAgICAgewpAQCAtMjE3LDcgKzIxNyw3IEBACiAKIHZvaWQgUmVzb3Vy
Y2VNYW5hZ2VyOjpkZWxldGVSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKLSAg
ICBSZW5kZXJidWZmZXJNYXA6Oml0ZXJhdG9yIHJlbmRlcmJ1ZmZlck9iamVjdCA9IG1SZW5kZXJi
dWZmZXJNYXAuZmluZChyZW5kZXJidWZmZXIpOworICAgIGF1dG8gcmVuZGVyYnVmZmVyT2JqZWN0
ID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKHJlbmRlcmJ1ZmZlcik7CiAKICAgICBpZiAocmVuZGVy
YnVmZmVyT2JqZWN0ICE9IG1SZW5kZXJidWZmZXJNYXAuZW5kKCkpCiAgICAgewpAQCAtMjUzLDEx
ICsyNTMsMTEgQEAKIAogQnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmdldEJ1ZmZlcih1bnNpZ25l
ZCBpbnQgaGFuZGxlKQogewotICAgIEJ1ZmZlck1hcDo6aXRlcmF0b3IgYnVmZmVyID0gbUJ1ZmZl
ck1hcC5maW5kKGhhbmRsZSk7CisgICAgYXV0byBidWZmZXIgPSBtQnVmZmVyTWFwLmZpbmQoaGFu
ZGxlKTsKIAogICAgIGlmIChidWZmZXIgPT0gbUJ1ZmZlck1hcC5lbmQoKSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKQEAgLTI2NywxMSArMjY3LDExIEBACiAKIFNoYWRlciAqUmVzb3VyY2VNYW5hZ2Vy
OjpnZXRTaGFkZXIodW5zaWduZWQgaW50IGhhbmRsZSkKIHsKLSAgICBTaGFkZXJNYXA6Oml0ZXJh
dG9yIHNoYWRlciA9IG1TaGFkZXJNYXAuZmluZChoYW5kbGUpOworICAgIGF1dG8gc2hhZGVyID0g
bVNoYWRlck1hcC5maW5kKGhhbmRsZSk7CiAKICAgICBpZiAoc2hhZGVyID09IG1TaGFkZXJNYXAu
ZW5kKCkpCiAgICAgewotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0yODEsMTMgKzI4MSwxNCBAQAogCiBUZXh0
dXJlICpSZXNvdXJjZU1hbmFnZXI6OmdldFRleHR1cmUodW5zaWduZWQgaW50IGhhbmRsZSkKIHsK
LSAgICBpZiAoaGFuZGxlID09IDApIHJldHVybiBOVUxMOworICAgIGlmIChoYW5kbGUgPT0gMCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBUZXh0dXJlTWFwOjppdGVyYXRvciB0ZXh0
dXJlID0gbVRleHR1cmVNYXAuZmluZChoYW5kbGUpOworICAgIGF1dG8gdGV4dHVyZSA9IG1UZXh0
dXJlTWFwLmZpbmQoaGFuZGxlKTsKIAogICAgIGlmICh0ZXh0dXJlID09IG1UZXh0dXJlTWFwLmVu
ZCgpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjk3LDExICsyOTgsMTEgQEAKIAogUHJvZ3Jh
bSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQcm9ncmFtKHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0
CiB7Ci0gICAgUHJvZ3JhbU1hcDo6Y29uc3RfaXRlcmF0b3IgcHJvZ3JhbSA9IG1Qcm9ncmFtTWFw
LmZpbmQoaGFuZGxlKTsKKyAgICBhdXRvIHByb2dyYW0gPSBtUHJvZ3JhbU1hcC5maW5kKGhhbmRs
ZSk7CiAKICAgICBpZiAocHJvZ3JhbSA9PSBtUHJvZ3JhbU1hcC5lbmQoKSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKQEAgLTMxMSwxMSArMzEyLDExIEBACiAKIFJlbmRlcmJ1ZmZlciAqUmVzb3VyY2VN
YW5hZ2VyOjpnZXRSZW5kZXJidWZmZXIodW5zaWduZWQgaW50IGhhbmRsZSkKIHsKLSAgICBSZW5k
ZXJidWZmZXJNYXA6Oml0ZXJhdG9yIHJlbmRlcmJ1ZmZlciA9IG1SZW5kZXJidWZmZXJNYXAuZmlu
ZChoYW5kbGUpOworICAgIGF1dG8gcmVuZGVyYnVmZmVyID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5k
KGhhbmRsZSk7CiAKICAgICBpZiAocmVuZGVyYnVmZmVyID09IG1SZW5kZXJidWZmZXJNYXAuZW5k
KCkpCiAgICAgewotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0zMjksNyArMzMwLDcgQEAKIAogICAgIGlmIChz
YW1wbGVyID09IG1TYW1wbGVyTWFwLmVuZCgpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMzQz
LDcgKzM0NCw3IEBACiAKICAgICBpZiAoZmVuY2VPYmplY3RJdCA9PSBtRmVuY2VTeW5jTWFwLmVu
ZCgpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMzU2LDk2ICszNTcsMTE3IEBACiAgICAgbVJl
bmRlcmJ1ZmZlck1hcFtoYW5kbGVdID0gYnVmZmVyOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdl
cjo6Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUpCitCdWZmZXIgKlJlc291cmNl
TWFuYWdlcjo6Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUpCiB7Ci0gICAgaWYg
KGhhbmRsZSAhPSAwKQorICAgIGlmIChoYW5kbGUgPT0gMCkKICAgICB7Ci0gICAgICAgIGF1dG8g
YnVmZmVyTWFwSXQgPSBtQnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKLSAgICAgICAgYm9vbCBoYW5k
bGVBbGxvY2F0ZWQgPSAoYnVmZmVyTWFwSXQgIT0gbUJ1ZmZlck1hcC5lbmQoKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KIAotICAgICAgICBpZiAoaGFuZGxlQWxsb2NhdGVkICYm
IGJ1ZmZlck1hcEl0LT5zZWNvbmQgIT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byBidWZmZXJNYXBJdCAgICAgPSBtQnVmZmVyTWFw
LmZpbmQoaGFuZGxlKTsKKyAgICBib29sIGhhbmRsZUFsbG9jYXRlZCA9IChidWZmZXJNYXBJdCAh
PSBtQnVmZmVyTWFwLmVuZCgpKTsKIAotICAgICAgICBCdWZmZXIgKmJ1ZmZlciA9IG5ldyBCdWZm
ZXIobUZhY3RvcnktPmNyZWF0ZUJ1ZmZlcigpLCBoYW5kbGUpOwotICAgICAgICBidWZmZXItPmFk
ZFJlZigpOworICAgIGlmIChoYW5kbGVBbGxvY2F0ZWQgJiYgYnVmZmVyTWFwSXQtPnNlY29uZCAh
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlck1hcEl0LT5zZWNvbmQ7Cisg
ICAgfQogCi0gICAgICAgIGlmIChoYW5kbGVBbGxvY2F0ZWQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGJ1ZmZlck1hcEl0LT5zZWNvbmQgPSBidWZmZXI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBtQnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlc2VydmUo
aGFuZGxlKTsKLSAgICAgICAgICAgIG1CdWZmZXJNYXBbaGFuZGxlXSA9IGJ1ZmZlcjsKLSAgICAg
ICAgfQorICAgIEJ1ZmZlciAqYnVmZmVyID0gbmV3IEJ1ZmZlcihtRmFjdG9yeS0+Y3JlYXRlQnVm
ZmVyKCksIGhhbmRsZSk7CisgICAgYnVmZmVyLT5hZGRSZWYoKTsKKworICAgIGlmIChoYW5kbGVB
bGxvY2F0ZWQpCisgICAgeworICAgICAgICBidWZmZXJNYXBJdC0+c2Vjb25kID0gYnVmZmVyOwog
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtQnVmZmVySGFuZGxlQWxsb2NhdG9yLnJl
c2VydmUoaGFuZGxlKTsKKyAgICAgICAgbUJ1ZmZlck1hcFtoYW5kbGVdID0gYnVmZmVyOworICAg
IH0KKworICAgIHJldHVybiBidWZmZXI7CiB9CiAKLXZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpjaGVj
a1RleHR1cmVBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUsIEdMZW51bSB0eXBlKQorVGV4dHVyZSAq
UmVzb3VyY2VNYW5hZ2VyOjpjaGVja1RleHR1cmVBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUsIEdM
ZW51bSB0eXBlKQogewotICAgIGlmIChoYW5kbGUgIT0gMCkKKyAgICBpZiAoaGFuZGxlID09IDAp
CiAgICAgewotICAgICAgICBhdXRvIHRleHR1cmVNYXBJdCA9IG1UZXh0dXJlTWFwLmZpbmQoaGFu
ZGxlKTsKLSAgICAgICAgYm9vbCBoYW5kbGVBbGxvY2F0ZWQgPSAodGV4dHVyZU1hcEl0ICE9IG1U
ZXh0dXJlTWFwLmVuZCgpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAg
ICAgIGlmIChoYW5kbGVBbGxvY2F0ZWQgJiYgdGV4dHVyZU1hcEl0LT5zZWNvbmQgIT0gbnVsbHB0
cikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byB0
ZXh0dXJlTWFwSXQgICAgPSBtVGV4dHVyZU1hcC5maW5kKGhhbmRsZSk7CisgICAgYm9vbCBoYW5k
bGVBbGxvY2F0ZWQgPSAodGV4dHVyZU1hcEl0ICE9IG1UZXh0dXJlTWFwLmVuZCgpKTsKIAotICAg
ICAgICBUZXh0dXJlICp0ZXh0dXJlID0gbmV3IFRleHR1cmUobUZhY3RvcnktPmNyZWF0ZVRleHR1
cmUodHlwZSksIGhhbmRsZSwgdHlwZSk7Ci0gICAgICAgIHRleHR1cmUtPmFkZFJlZigpOworICAg
IGlmIChoYW5kbGVBbGxvY2F0ZWQgJiYgdGV4dHVyZU1hcEl0LT5zZWNvbmQgIT0gbnVsbHB0cikK
KyAgICB7CisgICAgICAgIHJldHVybiB0ZXh0dXJlTWFwSXQtPnNlY29uZDsKKyAgICB9CiAKLSAg
ICAgICAgaWYgKGhhbmRsZUFsbG9jYXRlZCkKLSAgICAgICAgewotICAgICAgICAgICAgdGV4dHVy
ZU1hcEl0LT5zZWNvbmQgPSB0ZXh0dXJlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgbVRleHR1cmVIYW5kbGVBbGxvY2F0b3IucmVzZXJ2ZShoYW5kbGUp
OwotICAgICAgICAgICAgbVRleHR1cmVNYXBbaGFuZGxlXSA9IHRleHR1cmU7Ci0gICAgICAgIH0K
KyAgICBUZXh0dXJlICp0ZXh0dXJlID0gbmV3IFRleHR1cmUobUZhY3RvcnktPmNyZWF0ZVRleHR1
cmUodHlwZSksIGhhbmRsZSwgdHlwZSk7CisgICAgdGV4dHVyZS0+YWRkUmVmKCk7CisKKyAgICBp
ZiAoaGFuZGxlQWxsb2NhdGVkKQorICAgIHsKKyAgICAgICAgdGV4dHVyZU1hcEl0LT5zZWNvbmQg
PSB0ZXh0dXJlOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtVGV4dHVyZUhhbmRs
ZUFsbG9jYXRvci5yZXNlcnZlKGhhbmRsZSk7CisgICAgICAgIG1UZXh0dXJlTWFwW2hhbmRsZV0g
PSB0ZXh0dXJlOworICAgIH0KKworICAgIHJldHVybiB0ZXh0dXJlOwogfQogCi12b2lkIFJlc291
cmNlTWFuYWdlcjo6Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUpCitS
ZW5kZXJidWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9u
KEdMdWludCBoYW5kbGUpCiB7Ci0gICAgaWYgKGhhbmRsZSAhPSAwKQorICAgIGlmIChoYW5kbGUg
PT0gMCkKICAgICB7Ci0gICAgICAgIGF1dG8gcmVuZGVyYnVmZmVyTWFwSXQgPSBtUmVuZGVyYnVm
ZmVyTWFwLmZpbmQoaGFuZGxlKTsKLSAgICAgICAgYm9vbCBoYW5kbGVBbGxvY2F0ZWQgPSAocmVu
ZGVyYnVmZmVyTWFwSXQgIT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KIAotICAgICAgICBpZiAoaGFuZGxlQWxsb2NhdGVkICYmIHJlbmRl
cmJ1ZmZlck1hcEl0LT5zZWNvbmQgIT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgYXV0byByZW5kZXJidWZmZXJNYXBJdCA9IG1SZW5kZXJi
dWZmZXJNYXAuZmluZChoYW5kbGUpOworICAgIGJvb2wgaGFuZGxlQWxsb2NhdGVkICAgPSAocmVu
ZGVyYnVmZmVyTWFwSXQgIT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSk7CiAKLSAgICAgICAgUmVu
ZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBuZXcgUmVuZGVyYnVmZmVyKG1GYWN0b3J5LT5jcmVh
dGVSZW5kZXJidWZmZXIoKSwgaGFuZGxlKTsKLSAgICAgICAgcmVuZGVyYnVmZmVyLT5hZGRSZWYo
KTsKKyAgICBpZiAoaGFuZGxlQWxsb2NhdGVkICYmIHJlbmRlcmJ1ZmZlck1hcEl0LT5zZWNvbmQg
IT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiByZW5kZXJidWZmZXJNYXBJdC0+c2Vj
b25kOworICAgIH0KIAotICAgICAgICBpZiAoaGFuZGxlQWxsb2NhdGVkKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZW5kZXJidWZmZXJNYXBJdC0+c2Vjb25kID0gcmVuZGVyYnVmZmVyOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbVJlbmRlcmJ1ZmZl
ckhhbmRsZUFsbG9jYXRvci5yZXNlcnZlKGhhbmRsZSk7Ci0gICAgICAgICAgICBtUmVuZGVyYnVm
ZmVyTWFwW2hhbmRsZV0gPSByZW5kZXJidWZmZXI7Ci0gICAgICAgIH0KKyAgICBSZW5kZXJidWZm
ZXIgKnJlbmRlcmJ1ZmZlciA9IG5ldyBSZW5kZXJidWZmZXIobUZhY3RvcnktPmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpLCBoYW5kbGUpOworICAgIHJlbmRlcmJ1ZmZlci0+YWRkUmVmKCk7CisKKyAgICBp
ZiAoaGFuZGxlQWxsb2NhdGVkKQorICAgIHsKKyAgICAgICAgcmVuZGVyYnVmZmVyTWFwSXQtPnNl
Y29uZCA9IHJlbmRlcmJ1ZmZlcjsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVJl
bmRlcmJ1ZmZlckhhbmRsZUFsbG9jYXRvci5yZXNlcnZlKGhhbmRsZSk7CisgICAgICAgIG1SZW5k
ZXJidWZmZXJNYXBbaGFuZGxlXSA9IHJlbmRlcmJ1ZmZlcjsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVuZGVyYnVmZmVyOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdlcjo6Y2hlY2tTYW1wbGVyQWxs
b2NhdGlvbihHTHVpbnQgc2FtcGxlcikKK1NhbXBsZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tT
YW1wbGVyQWxsb2NhdGlvbihHTHVpbnQgc2FtcGxlckhhbmRsZSkKIHsKLSAgICBpZiAoc2FtcGxl
ciAhPSAwICYmICFnZXRTYW1wbGVyKHNhbXBsZXIpKQorICAgIC8vIFNhbXBsZXJzIGNhbm5vdCBi
ZSBjcmVhdGVkIHZpYSBCaW5kCisgICAgaWYgKHNhbXBsZXJIYW5kbGUgPT0gMCkKICAgICB7Ci0g
ICAgICAgIFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPSBuZXcgU2FtcGxlcihzYW1wbGVyKTsKLSAg
ICAgICAgbVNhbXBsZXJNYXBbc2FtcGxlcl0gPSBzYW1wbGVyT2JqZWN0OwotICAgICAgICBzYW1w
bGVyT2JqZWN0LT5hZGRSZWYoKTsKLSAgICAgICAgLy8gU2FtcGxlcnMgY2Fubm90IGJlIGNyZWF0
ZWQgdmlhIEJpbmQKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisgICAgU2FtcGxl
ciAqc2FtcGxlciA9IGdldFNhbXBsZXIoc2FtcGxlckhhbmRsZSk7CisKKyAgICBpZiAoIXNhbXBs
ZXIpCisgICAgeworICAgICAgICBzYW1wbGVyICAgICAgICAgICAgICAgICAgICA9IG5ldyBTYW1w
bGVyKG1GYWN0b3J5LCBzYW1wbGVySGFuZGxlKTsKKyAgICAgICAgbVNhbXBsZXJNYXBbc2FtcGxl
ckhhbmRsZV0gPSBzYW1wbGVyOworICAgICAgICBzYW1wbGVyLT5hZGRSZWYoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gc2FtcGxlcjsKIH0KIAogYm9vbCBSZXNvdXJjZU1hbmFnZXI6OmlzU2FtcGxl
cihHTHVpbnQgc2FtcGxlcikKQEAgLTQ1Myw0ICs0NzUsNCBAQAogICAgIHJldHVybiBtU2FtcGxl
ck1hcC5maW5kKHNhbXBsZXIpICE9IG1TYW1wbGVyTWFwLmVuZCgpOwogfQogCi19Cit9ICAvLyBu
YW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9S
ZXNvdXJjZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUsOCArMTUsNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCIKIAotI2luY2x1ZGUgPG1h
cD4KLQogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBJbXBsRmFjdG9yeTsKQEAgLTI1LDEzICsyMywx
NCBAQAogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBCdWZmZXI7Ci1jbGFzcyBTaGFkZXI7CitzdHJ1
Y3QgRGF0YTsKK2NsYXNzIEZlbmNlU3luYzsKK3N0cnVjdCBMaW1pdGF0aW9uczsKIGNsYXNzIFBy
b2dyYW07Ci1jbGFzcyBUZXh0dXJlOwogY2xhc3MgUmVuZGVyYnVmZmVyOwogY2xhc3MgU2FtcGxl
cjsKLWNsYXNzIEZlbmNlU3luYzsKLXN0cnVjdCBEYXRhOworY2xhc3MgU2hhZGVyOworY2xhc3Mg
VGV4dHVyZTsKIAogY2xhc3MgUmVzb3VyY2VNYW5hZ2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7
CkBAIC00Myw3ICs0Miw3IEBACiAgICAgdm9pZCByZWxlYXNlKCk7CiAKICAgICBHTHVpbnQgY3Jl
YXRlQnVmZmVyKCk7Ci0gICAgR0x1aW50IGNyZWF0ZVNoYWRlcihjb25zdCBnbDo6RGF0YSAmZGF0
YSwgR0xlbnVtIHR5cGUpOworICAgIEdMdWludCBjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OkxpbWl0
YXRpb25zICZyZW5kZXJlckxpbWl0YXRpb25zLCBHTGVudW0gdHlwZSk7CiAgICAgR0x1aW50IGNy
ZWF0ZVByb2dyYW0oKTsKICAgICBHTHVpbnQgY3JlYXRlVGV4dHVyZSgpOwogICAgIEdMdWludCBj
cmVhdGVSZW5kZXJidWZmZXIoKTsKQEAgLTY4LDEwICs2NywxMCBAQAogCiAgICAgdm9pZCBzZXRS
ZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSwgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIpOwog
Ci0gICAgdm9pZCBjaGVja0J1ZmZlckFsbG9jYXRpb24oR0x1aW50IGhhbmRsZSk7Ci0gICAgdm9p
ZCBjaGVja1RleHR1cmVBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUsIEdMZW51bSB0eXBlKTsKLSAg
ICB2b2lkIGNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihHTHVpbnQgaGFuZGxlKTsKLSAgICB2
b2lkIGNoZWNrU2FtcGxlckFsbG9jYXRpb24oR0x1aW50IHNhbXBsZXIpOworICAgIEJ1ZmZlciAq
Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUpOworICAgIFRleHR1cmUgKmNoZWNr
VGV4dHVyZUFsbG9jYXRpb24oR0x1aW50IGhhbmRsZSwgR0xlbnVtIHR5cGUpOworICAgIFJlbmRl
cmJ1ZmZlciAqY2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKEdMdWludCBoYW5kbGUpOworICAg
IFNhbXBsZXIgKmNoZWNrU2FtcGxlckFsbG9jYXRpb24oR0x1aW50IHNhbXBsZXJIYW5kbGUpOwog
CiAgICAgYm9vbCBpc1NhbXBsZXIoR0x1aW50IHNhbXBsZXIpOwogCkBAIC04MSwzNCArODAsMjcg
QEAKICAgICByeDo6SW1wbEZhY3RvcnkgKm1GYWN0b3J5OwogICAgIHN0ZDo6c2l6ZV90IG1SZWZD
b3VudDsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1aW50LCBCdWZmZXIqPiBCdWZmZXJNYXA7
Ci0gICAgQnVmZmVyTWFwIG1CdWZmZXJNYXA7CisgICAgUmVzb3VyY2VNYXA8QnVmZmVyPiBtQnVm
ZmVyTWFwOwogICAgIEhhbmRsZUFsbG9jYXRvciBtQnVmZmVySGFuZGxlQWxsb2NhdG9yOwogCi0g
ICAgdHlwZWRlZiBzdGQ6Om1hcDxHTHVpbnQsIFNoYWRlcio+IFNoYWRlck1hcDsKLSAgICBTaGFk
ZXJNYXAgbVNoYWRlck1hcDsKKyAgICBSZXNvdXJjZU1hcDxTaGFkZXI+IG1TaGFkZXJNYXA7CiAK
LSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMdWludCwgUHJvZ3JhbSo+IFByb2dyYW1NYXA7Ci0gICAg
UHJvZ3JhbU1hcCBtUHJvZ3JhbU1hcDsKKyAgICBSZXNvdXJjZU1hcDxQcm9ncmFtPiBtUHJvZ3Jh
bU1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3I7
CiAKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMdWludCwgVGV4dHVyZSo+IFRleHR1cmVNYXA7Ci0g
ICAgVGV4dHVyZU1hcCBtVGV4dHVyZU1hcDsKKyAgICBSZXNvdXJjZU1hcDxUZXh0dXJlPiBtVGV4
dHVyZU1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbVRleHR1cmVIYW5kbGVBbGxvY2F0b3I7CiAK
LSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMdWludCwgUmVuZGVyYnVmZmVyKj4gUmVuZGVyYnVmZmVy
TWFwOwotICAgIFJlbmRlcmJ1ZmZlck1hcCBtUmVuZGVyYnVmZmVyTWFwOworICAgIFJlc291cmNl
TWFwPFJlbmRlcmJ1ZmZlcj4gbVJlbmRlcmJ1ZmZlck1hcDsKICAgICBIYW5kbGVBbGxvY2F0b3Ig
bVJlbmRlcmJ1ZmZlckhhbmRsZUFsbG9jYXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1
aW50LCBTYW1wbGVyKj4gU2FtcGxlck1hcDsKLSAgICBTYW1wbGVyTWFwIG1TYW1wbGVyTWFwOwor
ICAgIFJlc291cmNlTWFwPFNhbXBsZXI+IG1TYW1wbGVyTWFwOwogICAgIEhhbmRsZUFsbG9jYXRv
ciBtU2FtcGxlckhhbmRsZUFsbG9jYXRvcjsKIAotICAgIHR5cGVkZWYgc3RkOjptYXA8R0x1aW50
LCBGZW5jZVN5bmMqPiBGZW5jZU1hcDsKLSAgICBGZW5jZU1hcCBtRmVuY2VTeW5jTWFwOworICAg
IFJlc291cmNlTWFwPEZlbmNlU3luYz4gbUZlbmNlU3luY01hcDsKICAgICBIYW5kbGVBbGxvY2F0
b3IgbUZlbmNlU3luY0hhbmRsZUFsbG9jYXRvcjsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBn
bAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVTT1VSQ0VNQU5BR0VSX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVz
b3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlcl91bml0dGVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw3IEBACiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4K
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCi0jaW5jbHVkZSAiYW5nbGVfdW5pdHRlc3RzX3V0
aWxzLmgiCisjaW5jbHVkZSAidGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSByeDsKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2FtcGxlci5j
cHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9TYW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSwzNSArOSwxNDQgQEAKIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL1NhbXBsZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9TYW1wbGVySW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKIAot
U2FtcGxlcjo6U2FtcGxlcihHTHVpbnQgaWQpCi0gICAgOiBSZWZDb3VudE9iamVjdChpZCksCi0g
ICAgICBtTWluRmlsdGVyKEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiksCi0gICAgICBtTWFnRmls
dGVyKEdMX0xJTkVBUiksCi0gICAgICBtV3JhcFMoR0xfUkVQRUFUKSwKLSAgICAgIG1XcmFwVChH
TF9SRVBFQVQpLAotICAgICAgbVdyYXBSKEdMX1JFUEVBVCksCi0gICAgICBtTWluTG9kKC0xMDAw
LjBmKSwKLSAgICAgIG1NYXhMb2QoMTAwMC4wZiksCi0gICAgICBtQ29tcGFyaXNvbk1vZGUoR0xf
Tk9ORSksCi0gICAgICBtQ29tcGFyaXNvbkZ1bmMoR0xfTEVRVUFMKQorU2FtcGxlcjo6U2FtcGxl
cihyeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCkKKyAgICA6IFJlZkNvdW50T2Jq
ZWN0KGlkKSwgbUltcGwoZmFjdG9yeS0+Y3JlYXRlU2FtcGxlcigpKSwgbUxhYmVsKCksIG1TYW1w
bGVyU3RhdGUoKQogewogfQogCi12b2lkIFNhbXBsZXI6OmdldFN0YXRlKFNhbXBsZXJTdGF0ZSAq
c2FtcGxlclN0YXRlKSBjb25zdAorU2FtcGxlcjo6flNhbXBsZXIoKQogewotICAgIHNhbXBsZXJT
dGF0ZS0+bWluRmlsdGVyICAgPSBtTWluRmlsdGVyOwotICAgIHNhbXBsZXJTdGF0ZS0+bWFnRmls
dGVyICAgPSBtTWFnRmlsdGVyOwotICAgIHNhbXBsZXJTdGF0ZS0+d3JhcFMgICAgICAgPSBtV3Jh
cFM7Ci0gICAgc2FtcGxlclN0YXRlLT53cmFwVCAgICAgICA9IG1XcmFwVDsKLSAgICBzYW1wbGVy
U3RhdGUtPndyYXBSICAgICAgID0gbVdyYXBSOwotICAgIHNhbXBsZXJTdGF0ZS0+bWluTG9kICAg
ICAgPSBtTWluTG9kOwotICAgIHNhbXBsZXJTdGF0ZS0+bWF4TG9kICAgICAgPSBtTWF4TG9kOwot
ICAgIHNhbXBsZXJTdGF0ZS0+Y29tcGFyZU1vZGUgPSBtQ29tcGFyaXNvbk1vZGU7Ci0gICAgc2Ft
cGxlclN0YXRlLT5jb21wYXJlRnVuYyA9IG1Db21wYXJpc29uRnVuYzsKKyAgICBTYWZlRGVsZXRl
KG1JbXBsKTsKIH0KIAordm9pZCBTYW1wbGVyOjpzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAm
bGFiZWwpCit7CisgICAgbUxhYmVsID0gbGFiZWw7CiB9CisKK2NvbnN0IHN0ZDo6c3RyaW5nICZT
YW1wbGVyOjpnZXRMYWJlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1MYWJlbDsKK30KKwordm9p
ZCBTYW1wbGVyOjpzZXRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlcikKK3sKKyAgICBtU2FtcGxl
clN0YXRlLm1pbkZpbHRlciA9IG1pbkZpbHRlcjsKK30KKworR0xlbnVtIFNhbXBsZXI6OmdldE1p
bkZpbHRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUubWluRmlsdGVyOwor
fQorCit2b2lkIFNhbXBsZXI6OnNldE1hZ0ZpbHRlcihHTGVudW0gbWFnRmlsdGVyKQoreworICAg
IG1TYW1wbGVyU3RhdGUubWFnRmlsdGVyID0gbWFnRmlsdGVyOworfQorCitHTGVudW0gU2FtcGxl
cjo6Z2V0TWFnRmlsdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZS5tYWdG
aWx0ZXI7Cit9CisKK3ZvaWQgU2FtcGxlcjo6c2V0V3JhcFMoR0xlbnVtIHdyYXBTKQoreworICAg
IG1TYW1wbGVyU3RhdGUud3JhcFMgPSB3cmFwUzsKK30KKworR0xlbnVtIFNhbXBsZXI6OmdldFdy
YXBTKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZS53cmFwUzsKK30KKwordm9p
ZCBTYW1wbGVyOjpzZXRXcmFwVChHTGVudW0gd3JhcFQpCit7CisgICAgbVNhbXBsZXJTdGF0ZS53
cmFwVCA9IHdyYXBUOworfQorCitHTGVudW0gU2FtcGxlcjo6Z2V0V3JhcFQoKSBjb25zdAorewor
ICAgIHJldHVybiBtU2FtcGxlclN0YXRlLndyYXBUOworfQorCit2b2lkIFNhbXBsZXI6OnNldFdy
YXBSKEdMZW51bSB3cmFwUikKK3sKKyAgICBtU2FtcGxlclN0YXRlLndyYXBSID0gd3JhcFI7Cit9
CisKK0dMZW51bSBTYW1wbGVyOjpnZXRXcmFwUigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1w
bGVyU3RhdGUud3JhcFI7Cit9CisKK3ZvaWQgU2FtcGxlcjo6c2V0TWF4QW5pc290cm9weShmbG9h
dCBtYXhBbmlzb3Ryb3B5KQoreworICAgIG1TYW1wbGVyU3RhdGUubWF4QW5pc290cm9weSA9IG1h
eEFuaXNvdHJvcHk7Cit9CisKK2Zsb2F0IFNhbXBsZXI6OmdldE1heEFuaXNvdHJvcHkoKSBjb25z
dAoreworICAgIHJldHVybiBtU2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHk7Cit9CisKK3ZvaWQg
U2FtcGxlcjo6c2V0TWluTG9kKEdMZmxvYXQgbWluTG9kKQoreworICAgIG1TYW1wbGVyU3RhdGUu
bWluTG9kID0gbWluTG9kOworfQorCitHTGZsb2F0IFNhbXBsZXI6OmdldE1pbkxvZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUubWluTG9kOworfQorCit2b2lkIFNhbXBsZXI6
OnNldE1heExvZChHTGZsb2F0IG1heExvZCkKK3sKKyAgICBtU2FtcGxlclN0YXRlLm1heExvZCA9
IG1heExvZDsKK30KKworR0xmbG9hdCBTYW1wbGVyOjpnZXRNYXhMb2QoKSBjb25zdAoreworICAg
IHJldHVybiBtU2FtcGxlclN0YXRlLm1heExvZDsKK30KKwordm9pZCBTYW1wbGVyOjpzZXRDb21w
YXJlTW9kZShHTGVudW0gY29tcGFyZU1vZGUpCit7CisgICAgbVNhbXBsZXJTdGF0ZS5jb21wYXJl
TW9kZSA9IGNvbXBhcmVNb2RlOworfQorCitHTGVudW0gU2FtcGxlcjo6Z2V0Q29tcGFyZU1vZGUo
KSBjb25zdAoreworICAgIHJldHVybiBtU2FtcGxlclN0YXRlLmNvbXBhcmVNb2RlOworfQorCit2
b2lkIFNhbXBsZXI6OnNldENvbXBhcmVGdW5jKEdMZW51bSBjb21wYXJlRnVuYykKK3sKKyAgICBt
U2FtcGxlclN0YXRlLmNvbXBhcmVGdW5jID0gY29tcGFyZUZ1bmM7Cit9CisKK0dMZW51bSBTYW1w
bGVyOjpnZXRDb21wYXJlRnVuYygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TYW1wbGVyU3RhdGUu
Y29tcGFyZUZ1bmM7Cit9CisKK2NvbnN0IFNhbXBsZXJTdGF0ZSAmU2FtcGxlcjo6Z2V0U2FtcGxl
clN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZTsKK30KKworY29uc3Qg
cng6OlNhbXBsZXJJbXBsICpTYW1wbGVyOjpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1JbXBsOworfQorCityeDo6U2FtcGxlckltcGwgKlNhbXBsZXI6OmdldEltcGxl
bWVudGF0aW9uKCkKK3sKKyAgICByZXR1cm4gbUltcGw7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2FtcGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmgJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEwLDQ5ICsxMCw2OSBAQAogI2lmbmRlZiBMSUJBTkdMRV9TQU1QTEVS
X0hfCiAjZGVmaW5lIExJQkFOR0xFX1NBTVBMRVJfSF8KIAorI2luY2x1ZGUgImxpYkFOR0xFL2Fu
Z2xldHlwZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1JlZkNvdW50T2JqZWN0LmgiCiAKK25hbWVzcGFjZSByeAoreworY2xhc3MgSW1wbEZhY3Rv
cnk7CitjbGFzcyBTYW1wbGVySW1wbDsKK30KKwogbmFtZXNwYWNlIGdsCiB7Ci1zdHJ1Y3QgU2Ft
cGxlclN0YXRlOwogCi1jbGFzcyBTYW1wbGVyIDogcHVibGljIFJlZkNvdW50T2JqZWN0CitjbGFz
cyBTYW1wbGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50T2JqZWN0LCBwdWJsaWMgTGFiZWxlZE9i
amVjdAogewogICBwdWJsaWM6Ci0gICAgU2FtcGxlcihHTHVpbnQgaWQpOworICAgIFNhbXBsZXIo
cng6OkltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQpOworICAgIH5TYW1wbGVyKCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHNldE1pbkZpbHRlcihHTGVudW0gbWluRmlsdGVyKSB7IG1NaW5G
aWx0ZXIgPSBtaW5GaWx0ZXI7IH0KLSAgICB2b2lkIHNldE1hZ0ZpbHRlcihHTGVudW0gbWFnRmls
dGVyKSB7IG1NYWdGaWx0ZXIgPSBtYWdGaWx0ZXI7IH0KLSAgICB2b2lkIHNldFdyYXBTKEdMZW51
bSB3cmFwUykgeyBtV3JhcFMgPSB3cmFwUzsgfQotICAgIHZvaWQgc2V0V3JhcFQoR0xlbnVtIHdy
YXBUKSB7IG1XcmFwVCA9IHdyYXBUOyB9Ci0gICAgdm9pZCBzZXRXcmFwUihHTGVudW0gd3JhcFIp
IHsgbVdyYXBSID0gd3JhcFI7IH0KLSAgICB2b2lkIHNldE1pbkxvZChHTGZsb2F0IG1pbkxvZCkg
eyBtTWluTG9kID0gbWluTG9kOyB9Ci0gICAgdm9pZCBzZXRNYXhMb2QoR0xmbG9hdCBtYXhMb2Qp
IHsgbU1heExvZCA9IG1heExvZDsgfQotICAgIHZvaWQgc2V0Q29tcGFyaXNvbk1vZGUoR0xlbnVt
IGNvbXBhcmlzb25Nb2RlKSB7IG1Db21wYXJpc29uTW9kZSA9IGNvbXBhcmlzb25Nb2RlOyB9Ci0g
ICAgdm9pZCBzZXRDb21wYXJpc29uRnVuYyhHTGVudW0gY29tcGFyaXNvbkZ1bmMpIHsgbUNvbXBh
cmlzb25GdW5jID0gY29tcGFyaXNvbkZ1bmM7IH0KKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0
ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExh
YmVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBHTGVudW0gZ2V0TWluRmlsdGVyKCkgY29uc3Qg
eyByZXR1cm4gbU1pbkZpbHRlcjsgfQotICAgIEdMZW51bSBnZXRNYWdGaWx0ZXIoKSBjb25zdCB7
IHJldHVybiBtTWFnRmlsdGVyOyB9Ci0gICAgR0xlbnVtIGdldFdyYXBTKCkgY29uc3QgeyByZXR1
cm4gbVdyYXBTOyB9Ci0gICAgR0xlbnVtIGdldFdyYXBUKCkgY29uc3QgeyByZXR1cm4gbVdyYXBU
OyB9Ci0gICAgR0xlbnVtIGdldFdyYXBSKCkgY29uc3QgeyByZXR1cm4gbVdyYXBSOyB9Ci0gICAg
R0xmbG9hdCBnZXRNaW5Mb2QoKSBjb25zdCB7IHJldHVybiBtTWluTG9kOyB9Ci0gICAgR0xmbG9h
dCBnZXRNYXhMb2QoKSBjb25zdCB7IHJldHVybiBtTWF4TG9kOyB9Ci0gICAgR0xlbnVtIGdldENv
bXBhcmlzb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gbUNvbXBhcmlzb25Nb2RlOyB9Ci0gICAgR0xl
bnVtIGdldENvbXBhcmlzb25GdW5jKCkgY29uc3QgeyByZXR1cm4gbUNvbXBhcmlzb25GdW5jOyB9
CisgICAgdm9pZCBzZXRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlcik7CisgICAgR0xlbnVtIGdl
dE1pbkZpbHRlcigpIGNvbnN0OwogCi0gICAgdm9pZCBnZXRTdGF0ZShTYW1wbGVyU3RhdGUgKnNh
bXBsZXJTdGF0ZSkgY29uc3Q7CisgICAgdm9pZCBzZXRNYWdGaWx0ZXIoR0xlbnVtIG1hZ0ZpbHRl
cik7CisgICAgR0xlbnVtIGdldE1hZ0ZpbHRlcigpIGNvbnN0OwogCisgICAgdm9pZCBzZXRXcmFw
UyhHTGVudW0gd3JhcFMpOworICAgIEdMZW51bSBnZXRXcmFwUygpIGNvbnN0OworCisgICAgdm9p
ZCBzZXRXcmFwVChHTGVudW0gd3JhcFQpOworICAgIEdMZW51bSBnZXRXcmFwVCgpIGNvbnN0Owor
CisgICAgdm9pZCBzZXRXcmFwUihHTGVudW0gd3JhcFIpOworICAgIEdMZW51bSBnZXRXcmFwUigp
IGNvbnN0OworCisgICAgdm9pZCBzZXRNYXhBbmlzb3Ryb3B5KGZsb2F0IG1heEFuaXNvdHJvcHkp
OworICAgIGZsb2F0IGdldE1heEFuaXNvdHJvcHkoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TWlu
TG9kKEdMZmxvYXQgbWluTG9kKTsKKyAgICBHTGZsb2F0IGdldE1pbkxvZCgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRNYXhMb2QoR0xmbG9hdCBtYXhMb2QpOworICAgIEdMZmxvYXQgZ2V0TWF4TG9k
KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENvbXBhcmVNb2RlKEdMZW51bSBjb21wYXJlTW9kZSk7
CisgICAgR0xlbnVtIGdldENvbXBhcmVNb2RlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENvbXBh
cmVGdW5jKEdMZW51bSBjb21wYXJlRnVuYyk7CisgICAgR0xlbnVtIGdldENvbXBhcmVGdW5jKCkg
Y29uc3Q7CisKKyAgICBjb25zdCBTYW1wbGVyU3RhdGUgJmdldFNhbXBsZXJTdGF0ZSgpIGNvbnN0
OworCisgICAgY29uc3Qgcng6OlNhbXBsZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0
OworICAgIHJ4OjpTYW1wbGVySW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKTsKKwogICBwcml2YXRl
OgotICAgIEdMZW51bSBtTWluRmlsdGVyOwotICAgIEdMZW51bSBtTWFnRmlsdGVyOwotICAgIEdM
ZW51bSBtV3JhcFM7Ci0gICAgR0xlbnVtIG1XcmFwVDsKLSAgICBHTGVudW0gbVdyYXBSOwotICAg
IEdMZmxvYXQgbU1pbkxvZDsKLSAgICBHTGZsb2F0IG1NYXhMb2Q7Ci0gICAgR0xlbnVtIG1Db21w
YXJpc29uTW9kZTsKLSAgICBHTGVudW0gbUNvbXBhcmlzb25GdW5jOworICAgIHJ4OjpTYW1wbGVy
SW1wbCAqbUltcGw7CisKKyAgICBzdGQ6OnN0cmluZyBtTGFiZWw7CisKKyAgICBTYW1wbGVyU3Rh
dGUgbVNhbXBsZXJTdGF0ZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9TaGFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2hhZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOSwzNyArOSwxMTAgQEAKIC8vIGZ1bmN0aW9uYWxpdHkuIFtPcGVuR0wgRVMgMi4wLjI0
XSBzZWN0aW9uIDIuMTAgcGFnZSAyNCBhbmQgc2VjdGlvbiAzLjggcGFnZSA4NC4KIAogI2luY2x1
ZGUgImxpYkFOR0xFL1NoYWRlci5oIgorCisjaW5jbHVkZSA8c3N0cmVhbT4KKworI2luY2x1ZGUg
ImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9Db21waWxlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0YW50
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0
YW50cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIgogCi0jaW5jbHVk
ZSAiY29tbW9uL3V0aWxpdGllcy5oIgorbmFtZXNwYWNlIGdsCit7CiAKLSNpbmNsdWRlICJHTFNM
QU5HL1NoYWRlckxhbmcuaCIKK25hbWVzcGFjZQorewordGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+
CitzdGQ6OnZlY3RvcjxWYXJUPiBHZXRBY3RpdmVTaGFkZXJWYXJpYWJsZXMoY29uc3Qgc3RkOjp2
ZWN0b3I8VmFyVD4gKnZhcmlhYmxlTGlzdCkKK3sKKyAgICBBU1NFUlQodmFyaWFibGVMaXN0KTsK
KyAgICBzdGQ6OnZlY3RvcjxWYXJUPiByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgdmFySW5kZXgg
PSAwOyB2YXJJbmRleCA8IHZhcmlhYmxlTGlzdC0+c2l6ZSgpOyB2YXJJbmRleCsrKQorICAgIHsK
KyAgICAgICAgY29uc3QgVmFyVCAmdmFyID0gdmFyaWFibGVMaXN0LT5hdCh2YXJJbmRleCk7Cisg
ICAgICAgIGlmICh2YXIuc3RhdGljVXNlKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQu
cHVzaF9iYWNrKHZhcik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
IAotI2luY2x1ZGUgPHNzdHJlYW0+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KK2NvbnN0IHN0
ZDo6dmVjdG9yPFZhclQ+ICZHZXRTaGFkZXJWYXJpYWJsZXMoY29uc3Qgc3RkOjp2ZWN0b3I8VmFy
VD4gKnZhcmlhYmxlTGlzdCkKK3sKKyAgICBBU1NFUlQodmFyaWFibGVMaXN0KTsKKyAgICByZXR1
cm4gKnZhcmlhYmxlTGlzdDsKK30KIAotbmFtZXNwYWNlIGdsCit9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKKy8vIHRydWUgaWYgdmFyeWluZyB4IGhhcyBhIGhpZ2hlciBwcmlvcml0eSBpbiBw
YWNraW5nIHRoYW4geQorYm9vbCBDb21wYXJlU2hhZGVyVmFyKGNvbnN0IHNoOjpTaGFkZXJWYXJp
YWJsZSAmeCwgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ5KQogeworICAgIGlmICh4LnR5cGUg
PT0geS50eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHguYXJyYXlTaXplID4geS5hcnJheVNp
emU7CisgICAgfQogCi1TaGFkZXI6OlNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIHJ4
OjpTaGFkZXJJbXBsICppbXBsLCBHTGVudW0gdHlwZSwgR0x1aW50IGhhbmRsZSkKLSAgICA6IG1T
aGFkZXIoaW1wbCksCisgICAgLy8gU3BlY2lhbCBjYXNlIGZvciBoYW5kbGluZyBzdHJ1Y3RzOiB3
ZSBzb3J0IHRoZXNlIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKKyAgICBpZiAoeC50eXBlID09IEdM
X1NUUlVDVF9BTkdMRVgpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHkudHlwZSA9PSBHTF9TVFJVQ1RfQU5HTEVYKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpWYXJpYWJsZVNvcnRPcmRlcih4LnR5cGUp
IDwgZ2w6OlZhcmlhYmxlU29ydE9yZGVyKHkudHlwZSk7Cit9CisKK1NoYWRlcjo6RGF0YTo6RGF0
YShHTGVudW0gc2hhZGVyVHlwZSkgOiBtTGFiZWwoKSwgbVNoYWRlclR5cGUoc2hhZGVyVHlwZSks
IG1TaGFkZXJWZXJzaW9uKDEwMCkKK3sKK30KKworU2hhZGVyOjpEYXRhOjp+RGF0YSgpCit7Cit9
CisKK1NoYWRlcjo6U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdlciwKKyAgICAgICAgICAg
ICAgIHJ4OjpJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCisgICAgICAgICAgICAgICBjb25zdCBn
bDo6TGltaXRhdGlvbnMgJnJlbmRlcmVyTGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpCisgICAgOiBtRGF0YSh0eXBl
KSwKKyAgICAgIG1JbXBsZW1lbnRhdGlvbihpbXBsRmFjdG9yeS0+Y3JlYXRlU2hhZGVyKG1EYXRh
KSksCisgICAgICBtUmVuZGVyZXJMaW1pdGF0aW9ucyhyZW5kZXJlckxpbWl0YXRpb25zKSwKKyAg
ICAgIG1IYW5kbGUoaGFuZGxlKSwKICAgICAgIG1UeXBlKHR5cGUpLAotICAgICAgbUhhbmRsZSho
YW5kbGUpLAotICAgICAgbVJlc291cmNlTWFuYWdlcihtYW5hZ2VyKSwKICAgICAgIG1SZWZDb3Vu
dCgwKSwKICAgICAgIG1EZWxldGVTdGF0dXMoZmFsc2UpLAotICAgICAgbUNvbXBpbGVkKGZhbHNl
KQorICAgICAgbUNvbXBpbGVkKGZhbHNlKSwKKyAgICAgIG1SZXNvdXJjZU1hbmFnZXIobWFuYWdl
cikKIHsKLSAgICBBU1NFUlQoaW1wbCk7CisgICAgQVNTRVJUKG1JbXBsZW1lbnRhdGlvbik7CiB9
CiAKIFNoYWRlcjo6flNoYWRlcigpCiB7Ci0gICAgU2FmZURlbGV0ZShtU2hhZGVyKTsKKyAgICBT
YWZlRGVsZXRlKG1JbXBsZW1lbnRhdGlvbik7CiB9CiAKK3ZvaWQgU2hhZGVyOjpzZXRMYWJlbChj
b25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpCit7CisgICAgbURhdGEubUxhYmVsID0gbGFiZWw7Cit9
CisKK2NvbnN0IHN0ZDo6c3RyaW5nICZTaGFkZXI6OmdldExhYmVsKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbURhdGEubUxhYmVsOworfQorCiBHTHVpbnQgU2hhZGVyOjpnZXRIYW5kbGUoKSBjb25z
dAogewogICAgIHJldHVybiBtSGFuZGxlOwpAQCAtNjEsMTIgKzEzNCwxNyBAQAogICAgICAgICB9
CiAgICAgfQogCi0gICAgbVNvdXJjZSA9IHN0cmVhbS5zdHIoKTsKKyAgICBtRGF0YS5tU291cmNl
ID0gc3RyZWFtLnN0cigpOwogfQogCiBpbnQgU2hhZGVyOjpnZXRJbmZvTG9nTGVuZ3RoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gIG1TaGFkZXItPmdldEluZm9Mb2coKS5lbXB0eSgpID8gMCA6IHN0
YXRpY19jYXN0PGludD4obVNoYWRlci0+Z2V0SW5mb0xvZygpLmxlbmd0aCgpICsgMSk7CisgICAg
aWYgKG1JbmZvTG9nLmVtcHR5KCkpCisgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICByZXR1cm4gKHN0YXRpY19jYXN0PGludD4obUluZm9Mb2cubGVuZ3RoKCkpICsgMSk7CiB9
CiAKIHZvaWQgU2hhZGVyOjpnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBjaGFyICppbmZvTG9nKSBjb25zdApAQCAtNzUsOCArMTUzLDggQEAKIAogICAgIGlmIChi
dWZTaXplID4gMCkKICAgICB7Ci0gICAgICAgIGluZGV4ID0gc3RkOjptaW4oYnVmU2l6ZSAtIDEs
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1TaGFkZXItPmdldEluZm9Mb2coKS5sZW5ndGgoKSkpOwot
ICAgICAgICBtZW1jcHkoaW5mb0xvZywgbVNoYWRlci0+Z2V0SW5mb0xvZygpLmNfc3RyKCksIGlu
ZGV4KTsKKyAgICAgICAgaW5kZXggPSBzdGQ6Om1pbihidWZTaXplIC0gMSwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4obUluZm9Mb2cubGVuZ3RoKCkpKTsKKyAgICAgICAgbWVtY3B5KGluZm9Mb2csIG1J
bmZvTG9nLmNfc3RyKCksIGluZGV4KTsKIAogICAgICAgICBpbmZvTG9nW2luZGV4XSA9ICdcMCc7
CiAgICAgfQpAQCAtODksMTQgKzE2NywzMCBAQAogCiBpbnQgU2hhZGVyOjpnZXRTb3VyY2VMZW5n
dGgoKSBjb25zdAogewotICAgIHJldHVybiBtU291cmNlLmVtcHR5KCkgPyAwIDogc3RhdGljX2Nh
c3Q8aW50PihtU291cmNlLmxlbmd0aCgpICsgMSk7CisgICAgcmV0dXJuIG1EYXRhLm1Tb3VyY2Uu
ZW1wdHkoKSA/IDAgOiAoc3RhdGljX2Nhc3Q8aW50PihtRGF0YS5tU291cmNlLmxlbmd0aCgpKSAr
IDEpOwogfQogCiBpbnQgU2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlTGVuZ3RoKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbVNoYWRlci0+Z2V0VHJhbnNsYXRlZFNvdXJjZSgpLmVtcHR5KCkgPyAw
IDogc3RhdGljX2Nhc3Q8aW50PihtU2hhZGVyLT5nZXRUcmFuc2xhdGVkU291cmNlKCkubGVuZ3Ro
KCkgKyAxKTsKKyAgICBpZiAobURhdGEubVRyYW5zbGF0ZWRTb3VyY2UuZW1wdHkoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8aW50
PihtRGF0YS5tVHJhbnNsYXRlZFNvdXJjZS5sZW5ndGgoKSkgKyAxKTsKIH0KIAoraW50IFNoYWRl
cjo6Z2V0VHJhbnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0luZm9MZW5ndGgoKSBjb25zdAoreworICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZkZWJ1Z0luZm8gPSBtSW1wbGVtZW50YXRpb24tPmdldERlYnVn
SW5mbygpOworICAgIGlmIChkZWJ1Z0luZm8uZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8aW50PihkZWJ1Z0luZm8ubGVu
Z3RoKCkpICsgMSk7Cit9CisKIHZvaWQgU2hhZGVyOjpnZXRTb3VyY2VJbXBsKGNvbnN0IHN0ZDo6
c3RyaW5nICZzb3VyY2UsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpi
dWZmZXIpCiB7CiAgICAgaW50IGluZGV4ID0gMDsKQEAgLTExNywyMyArMjExLDExNyBAQAogCiB2
b2lkIFNoYWRlcjo6Z2V0U291cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBj
aGFyICpidWZmZXIpIGNvbnN0CiB7Ci0gICAgZ2V0U291cmNlSW1wbChtU291cmNlLCBidWZTaXpl
LCBsZW5ndGgsIGJ1ZmZlcik7CisgICAgZ2V0U291cmNlSW1wbChtRGF0YS5tU291cmNlLCBidWZT
aXplLCBsZW5ndGgsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgU2hhZGVyOjpnZXRUcmFuc2xhdGVkU291
cmNlKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpIGNvbnN0
CiB7Ci0gICAgZ2V0U291cmNlSW1wbChtU2hhZGVyLT5nZXRUcmFuc2xhdGVkU291cmNlKCksIGJ1
ZlNpemUsIGxlbmd0aCwgYnVmZmVyKTsKKyAgICBnZXRTb3VyY2VJbXBsKG1EYXRhLm1UcmFuc2xh
dGVkU291cmNlLCBidWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgU2hhZGVyOjpn
ZXRUcmFuc2xhdGVkU291cmNlV2l0aERlYnVnSW5mbyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgY2hhciAqYnVmZmVyKSBjb25zdAogewotICAgIHN0ZDo6c3RyaW5nIGRlYnVnSW5m
byhtU2hhZGVyLT5nZXREZWJ1Z0luZm8oKSk7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmRlYnVn
SW5mbyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0RGVidWdJbmZvKCk7CiAgICAgZ2V0U291cmNlSW1w
bChkZWJ1Z0luZm8sIGJ1ZlNpemUsIGxlbmd0aCwgYnVmZmVyKTsKIH0KIAogdm9pZCBTaGFkZXI6
OmNvbXBpbGUoQ29tcGlsZXIgKmNvbXBpbGVyKQogewotICAgIG1Db21waWxlZCA9IG1TaGFkZXIt
PmNvbXBpbGUoY29tcGlsZXIsIG1Tb3VyY2UpOworICAgIG1EYXRhLm1UcmFuc2xhdGVkU291cmNl
LmNsZWFyKCk7CisgICAgbUluZm9Mb2cuY2xlYXIoKTsKKyAgICBtRGF0YS5tU2hhZGVyVmVyc2lv
biA9IDEwMDsKKyAgICBtRGF0YS5tVmFyeWluZ3MuY2xlYXIoKTsKKyAgICBtRGF0YS5tVW5pZm9y
bXMuY2xlYXIoKTsKKyAgICBtRGF0YS5tSW50ZXJmYWNlQmxvY2tzLmNsZWFyKCk7CisgICAgbURh
dGEubUFjdGl2ZUF0dHJpYnV0ZXMuY2xlYXIoKTsKKyAgICBtRGF0YS5tQWN0aXZlT3V0cHV0VmFy
aWFibGVzLmNsZWFyKCk7CisKKyAgICBTaEhhbmRsZSBjb21waWxlckhhbmRsZSA9IGNvbXBpbGVy
LT5nZXRDb21waWxlckhhbmRsZShtRGF0YS5tU2hhZGVyVHlwZSk7CisKKyAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzb3VyY2VTdHJlYW07CisKKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VQYXRoOworICAg
IGludCBhZGRpdGlvbmFsT3B0aW9ucyA9CisgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+cHJlcGFy
ZVNvdXJjZUFuZFJldHVybk9wdGlvbnMoJnNvdXJjZVN0cmVhbSwgJnNvdXJjZVBhdGgpOworICAg
IGludCBjb21waWxlT3B0aW9ucyAgICA9IChTSF9PQkpFQ1RfQ09ERSB8IFNIX1ZBUklBQkxFUyB8
IGFkZGl0aW9uYWxPcHRpb25zKTsKKworICAgIC8vIFNvbWUgdGFyZ2V0cyAoZWcgRDNEMTEgRmVh
dHVyZSBMZXZlbCA5XzMgYW5kIGJlbG93KSBkbyBub3Qgc3VwcG9ydCBub24tY29uc3RhbnQgbG9v
cCBpbmRleGVzCisgICAgLy8gaW4gZnJhZ21lbnQgc2hhZGVycy4gU2hhZGVyIGNvbXBpbGF0aW9u
IHdpbGwgZmFpbC4gVG8gcHJvdmlkZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIHdlIGNhbgorICAg
IC8vIGluc3RydWN0IHRoZSBjb21waWxlciB0byBwcmUtdmFsaWRhdGUuCisgICAgaWYgKG1SZW5k
ZXJlckxpbWl0YXRpb25zLnNoYWRlcnNSZXF1aXJlSW5kZXhlZExvb3BWYWxpZGF0aW9uKQorICAg
IHsKKyAgICAgICAgY29tcGlsZU9wdGlvbnMgfD0gU0hfVkFMSURBVEVfTE9PUF9JTkRFWElORzsK
KyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBzb3VyY2VTdHJpbmcgID0gc291cmNlU3RyZWFtLnN0
cigpOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gc291cmNlQ1N0cmluZ3M7CisKKyAg
ICBpZiAoIXNvdXJjZVBhdGguZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHNvdXJjZUNTdHJpbmdz
LnB1c2hfYmFjayhzb3VyY2VQYXRoLmNfc3RyKCkpOworICAgIH0KKworICAgIHNvdXJjZUNTdHJp
bmdzLnB1c2hfYmFjayhzb3VyY2VTdHJpbmcuY19zdHIoKSk7CisKKyAgICBib29sIHJlc3VsdCA9
CisgICAgICAgIFNoQ29tcGlsZShjb21waWxlckhhbmRsZSwgJnNvdXJjZUNTdHJpbmdzWzBdLCBz
b3VyY2VDU3RyaW5ncy5zaXplKCksIGNvbXBpbGVPcHRpb25zKTsKKworICAgIGlmICghcmVzdWx0
KQorICAgIHsKKyAgICAgICAgbUluZm9Mb2cgPSBTaEdldEluZm9Mb2coY29tcGlsZXJIYW5kbGUp
OworICAgICAgICBUUkFDRSgiXG4lcyIsIG1JbmZvTG9nLmNfc3RyKCkpOworICAgICAgICBtQ29t
cGlsZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1EYXRhLm1UcmFu
c2xhdGVkU291cmNlID0gU2hHZXRPYmplY3RDb2RlKGNvbXBpbGVySGFuZGxlKTsKKworI2lmbmRl
ZiBOREVCVUcKKyAgICAvLyBQcmVmaXggdHJhbnNsYXRlZCBzaGFkZXIgd2l0aCBjb21tZW50ZWQg
b3V0IHVuLXRyYW5zbGF0ZWQgc2hhZGVyLgorICAgIC8vIFVzZWZ1bCBpbiBkaWFnbm9zdGljcyB0
b29scyB3aGljaCBjYXB0dXJlIHRoZSBzaGFkZXIgc291cmNlLgorICAgIHN0ZDo6b3N0cmluZ3N0
cmVhbSBzaGFkZXJTdHJlYW07CisgICAgc2hhZGVyU3RyZWFtIDw8ICIvLyBHTFNMXG4iOworICAg
IHNoYWRlclN0cmVhbSA8PCAiLy9cbiI7CisKKyAgICBzaXplX3QgY3VyUG9zID0gMDsKKyAgICB3
aGlsZSAoY3VyUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgc2l6ZV90
IG5leHRMaW5lID0gbURhdGEubVNvdXJjZS5maW5kKCJcbiIsIGN1clBvcyk7CisgICAgICAgIHNp
emVfdCBsZW4gICAgICA9IChuZXh0TGluZSA9PSBzdGQ6OnN0cmluZzo6bnBvcykgPyBzdGQ6OnN0
cmluZzo6bnBvcyA6IChuZXh0TGluZSAtIGN1clBvcyArIDEpOworCisgICAgICAgIHNoYWRlclN0
cmVhbSA8PCAiLy8gIiA8PCBtRGF0YS5tU291cmNlLnN1YnN0cihjdXJQb3MsIGxlbik7CisKKyAg
ICAgICAgY3VyUG9zID0gKG5leHRMaW5lID09IHN0ZDo6c3RyaW5nOjpucG9zKSA/IHN0ZDo6c3Ry
aW5nOjpucG9zIDogKG5leHRMaW5lICsgMSk7CisgICAgfQorICAgIHNoYWRlclN0cmVhbSA8PCAi
XG5cbiI7CisgICAgc2hhZGVyU3RyZWFtIDw8IG1EYXRhLm1UcmFuc2xhdGVkU291cmNlOworICAg
IG1EYXRhLm1UcmFuc2xhdGVkU291cmNlID0gc2hhZGVyU3RyZWFtLnN0cigpOworI2VuZGlmCisK
KyAgICAvLyBHYXRoZXIgdGhlIHNoYWRlciBpbmZvcm1hdGlvbgorICAgIG1EYXRhLm1TaGFkZXJW
ZXJzaW9uID0gU2hHZXRTaGFkZXJWZXJzaW9uKGNvbXBpbGVySGFuZGxlKTsKKworICAgIG1EYXRh
Lm1WYXJ5aW5ncyAgICAgICAgPSBHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRWYXJ5aW5ncyhjb21w
aWxlckhhbmRsZSkpOworICAgIG1EYXRhLm1Vbmlmb3JtcyAgICAgICAgPSBHZXRTaGFkZXJWYXJp
YWJsZXMoU2hHZXRVbmlmb3Jtcyhjb21waWxlckhhbmRsZSkpOworICAgIG1EYXRhLm1JbnRlcmZh
Y2VCbG9ja3MgPSBHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRJbnRlcmZhY2VCbG9ja3MoY29tcGls
ZXJIYW5kbGUpKTsKKworICAgIGlmIChtRGF0YS5tU2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hB
REVSKQorICAgIHsKKyAgICAgICAgbURhdGEubUFjdGl2ZUF0dHJpYnV0ZXMgPSBHZXRBY3RpdmVT
aGFkZXJWYXJpYWJsZXMoU2hHZXRBdHRyaWJ1dGVzKGNvbXBpbGVySGFuZGxlKSk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVChtRGF0YS5tU2hhZGVyVHlwZSA9PSBHTF9G
UkFHTUVOVF9TSEFERVIpOworCisgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQg
d2h5IHdlIG9ubHkgc29ydCBpbiB0aGUgRlMsIGFuZCBpZiB3ZSBuZWVkIHRvLgorICAgICAgICBz
dGQ6OnNvcnQobURhdGEubVZhcnlpbmdzLmJlZ2luKCksIG1EYXRhLm1WYXJ5aW5ncy5lbmQoKSwg
Q29tcGFyZVNoYWRlclZhcik7CisgICAgICAgIG1EYXRhLm1BY3RpdmVPdXRwdXRWYXJpYWJsZXMg
PQorICAgICAgICAgICAgR2V0QWN0aXZlU2hhZGVyVmFyaWFibGVzKFNoR2V0T3V0cHV0VmFyaWFi
bGVzKGNvbXBpbGVySGFuZGxlKSk7CisgICAgfQorCisgICAgQVNTRVJUKCFtRGF0YS5tVHJhbnNs
YXRlZFNvdXJjZS5lbXB0eSgpKTsKKworICAgIG1Db21waWxlZCA9IG1JbXBsZW1lbnRhdGlvbi0+
cG9zdFRyYW5zbGF0ZUNvbXBpbGUoY29tcGlsZXIsICZtSW5mb0xvZyk7CiB9CiAKIHZvaWQgU2hh
ZGVyOjphZGRSZWYoKQpAQCAtMTY2LDYyICszNTQsNDEgQEAKICAgICBtRGVsZXRlU3RhdHVzID0g
dHJ1ZTsKIH0KIAotY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhY2tlZFZhcnlpbmc+ICZTaGFkZXI6
OmdldFZhcnlpbmdzKCkgY29uc3QKK2ludCBTaGFkZXI6OmdldFNoYWRlclZlcnNpb24oKSBjb25z
dAogewotICAgIHJldHVybiBtU2hhZGVyLT5nZXRWYXJ5aW5ncygpOworICAgIHJldHVybiBtRGF0
YS5tU2hhZGVyVmVyc2lvbjsKIH0KIAorY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICZT
aGFkZXI6OmdldFZhcnlpbmdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbURhdGEuZ2V0VmFyeWlu
Z3MoKTsKK30KKwogY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZTaGFkZXI6OmdldFVu
aWZvcm1zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVNoYWRlci0+Z2V0VW5pZm9ybXMoKTsKKyAg
ICByZXR1cm4gbURhdGEuZ2V0VW5pZm9ybXMoKTsKIH0KIAogY29uc3Qgc3RkOjp2ZWN0b3I8c2g6
OkludGVyZmFjZUJsb2NrPiAmU2hhZGVyOjpnZXRJbnRlcmZhY2VCbG9ja3MoKSBjb25zdAogewot
ICAgIHJldHVybiBtU2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKKyAgICByZXR1cm4gbURh
dGEuZ2V0SW50ZXJmYWNlQmxvY2tzKCk7CiB9CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRy
aWJ1dGU+ICZTaGFkZXI6OmdldEFjdGl2ZUF0dHJpYnV0ZXMoKSBjb25zdAogewotICAgIHJldHVy
biBtU2hhZGVyLT5nZXRBY3RpdmVBdHRyaWJ1dGVzKCk7CisgICAgcmV0dXJuIG1EYXRhLmdldEFj
dGl2ZUF0dHJpYnV0ZXMoKTsKIH0KIAotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4g
JlNoYWRlcjo6Z2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCkgY29uc3QKK2NvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gJlNoYWRlcjo6Z2V0QWN0aXZlT3V0cHV0VmFyaWFibGVz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVNoYWRlci0+Z2V0QWN0aXZlT3V0cHV0VmFyaWFibGVz
KCk7CisgICAgcmV0dXJuIG1EYXRhLmdldEFjdGl2ZU91dHB1dFZhcmlhYmxlcygpOwogfQogCi1z
dGQ6OnZlY3RvcjxnbDo6UGFja2VkVmFyeWluZz4gJlNoYWRlcjo6Z2V0VmFyeWluZ3MoKQotewot
ICAgIHJldHVybiBtU2hhZGVyLT5nZXRWYXJ5aW5ncygpOwotfQotCi1zdGQ6OnZlY3RvcjxzaDo6
VW5pZm9ybT4gJlNoYWRlcjo6Z2V0VW5pZm9ybXMoKQotewotICAgIHJldHVybiBtU2hhZGVyLT5n
ZXRVbmlmb3JtcygpOwotfQotCi1zdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZTaGFk
ZXI6OmdldEludGVyZmFjZUJsb2NrcygpCi17Ci0gICAgcmV0dXJuIG1TaGFkZXItPmdldEludGVy
ZmFjZUJsb2NrcygpOwotfQotCi1zdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmU2hhZGVyOjpn
ZXRBY3RpdmVBdHRyaWJ1dGVzKCkKLXsKLSAgICByZXR1cm4gbVNoYWRlci0+Z2V0QWN0aXZlQXR0
cmlidXRlcygpOwotfQotCi1zdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmU2hhZGVyOjpnZXRB
Y3RpdmVPdXRwdXRWYXJpYWJsZXMoKQotewotICAgIHJldHVybiBtU2hhZGVyLT5nZXRBY3RpdmVP
dXRwdXRWYXJpYWJsZXMoKTsKLX0KLQotCiBpbnQgU2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KGNv
bnN0IHN0ZDo6c3RyaW5nICZhdHRyaWJ1dGVOYW1lKSBjb25zdAogewogICAgIGlmICghYXR0cmli
dXRlTmFtZS5lbXB0eSgpKQogICAgIHsKLSAgICAgICAgY29uc3QgYXV0byAmYWN0aXZlQXR0cmli
dXRlcyA9IG1TaGFkZXItPmdldEFjdGl2ZUF0dHJpYnV0ZXMoKTsKKyAgICAgICAgY29uc3QgYXV0
byAmYWN0aXZlQXR0cmlidXRlcyA9IG1EYXRhLmdldEFjdGl2ZUF0dHJpYnV0ZXMoKTsKIAogICAg
ICAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0
ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBhY3RpdmVBdHRyaWJ1dGVzLnNpemUoKTsgYXR0
cmlidXRlSW5kZXgrKykKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9TaGFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvU2hhZGVyLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNDkgKzIxLDgz
IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L2FuZ2xldHlwZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgogCiBuYW1lc3BhY2Ug
cngKIHsKK2NsYXNzIEltcGxGYWN0b3J5OwogY2xhc3MgU2hhZGVySW1wbDsKK2NsYXNzIFNoYWRl
clNoOwogfQogCiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbXBpbGVyOworc3RydWN0IExpbWl0
YXRpb25zOwogY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOwogc3RydWN0IERhdGE7CiAKLXN0cnVjdCBQ
YWNrZWRWYXJ5aW5nIDogcHVibGljIHNoOjpWYXJ5aW5nCitjbGFzcyBTaGFkZXIgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7Ci0gICAgdW5zaWduZWQg
aW50IHJlZ2lzdGVySW5kZXg7IC8vIEFzc2lnbmVkIGR1cmluZyBsaW5rCi0gICAgdW5zaWduZWQg
aW50IGNvbHVtbkluZGV4OyAvLyBBc3NpZ25lZCBkdXJpbmcgbGluaywgZGVmYXVsdHMgdG8gMAor
ICBwdWJsaWM6CisgICAgY2xhc3MgRGF0YSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQorICAg
IHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgRGF0YShHTGVudW0gc2hhZGVyVHlwZSk7CisgICAg
ICAgIH5EYXRhKCk7CiAKLSAgICBQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5
aW5nKQotICAgICAgOiBzaDo6VmFyeWluZyh2YXJ5aW5nKSwKLSAgICAgICAgcmVnaXN0ZXJJbmRl
eChHTF9JTlZBTElEX0lOREVYKSwKLSAgICAgICAgY29sdW1uSW5kZXgoMCkKLSAgICB7fQorICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBtTGFiZWw7
IH0KIAotICAgIGJvb2wgcmVnaXN0ZXJBc3NpZ25lZCgpIGNvbnN0IHsgcmV0dXJuIHJlZ2lzdGVy
SW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsgfQorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
Z2V0U291cmNlKCkgY29uc3QgeyByZXR1cm4gbVNvdXJjZTsgfQorICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZ2V0VHJhbnNsYXRlZFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1UcmFuc2xhdGVk
U291cmNlOyB9CiAKLSAgICB2b2lkIHJlc2V0UmVnaXN0ZXJBc3NpZ25tZW50KCkKLSAgICB7Ci0g
ICAgICAgIHJlZ2lzdGVySW5kZXggPSBHTF9JTlZBTElEX0lOREVYOwotICAgIH0KLX07CisgICAg
ICAgIEdMZW51bSBnZXRTaGFkZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbVNoYWRlclR5cGU7IH0K
KyAgICAgICAgaW50IGdldFNoYWRlclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU2hhZGVyVmVy
c2lvbjsgfQogCi1jbGFzcyBTaGFkZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGlj
OgotICAgIFNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIHJ4OjpTaGFkZXJJbXBsICpp
bXBsLCBHTGVudW0gdHlwZSwgR0x1aW50IGhhbmRsZSk7CisgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHNoOjpWYXJ5aW5nPiAmZ2V0VmFyeWluZ3MoKSBjb25zdCB7IHJldHVybiBtVmFyeWluZ3M7
IH0KKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZnZXRVbmlmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIG1Vbmlmb3JtczsgfQorICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6SW50ZXJmYWNlQmxvY2s+ICZnZXRJbnRlcmZhY2VCbG9ja3MoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbUludGVyZmFjZUJsb2NrczsKKyAgICAgICAgfQorICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QWN0aXZlQXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVBdHRyaWJ1dGVzOyB9CisgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gJmdldEFjdGl2ZU91dHB1dFZhcmlhYmxlcygpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtQWN0aXZlT3V0cHV0VmFyaWFibGVz
OworICAgICAgICB9CiAKKyAgICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFk
ZXI7CisKKyAgICAgICAgc3RkOjpzdHJpbmcgbUxhYmVsOworCisgICAgICAgIEdMZW51bSBtU2hh
ZGVyVHlwZTsKKyAgICAgICAgaW50IG1TaGFkZXJWZXJzaW9uOworICAgICAgICBzdGQ6OnN0cmlu
ZyBtVHJhbnNsYXRlZFNvdXJjZTsKKyAgICAgICAgc3RkOjpzdHJpbmcgbVNvdXJjZTsKKworICAg
ICAgICBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gbVZhcnlpbmdzOworICAgICAgICBzdGQ6OnZl
Y3RvcjxzaDo6VW5pZm9ybT4gbVVuaWZvcm1zOworICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6SW50
ZXJmYWNlQmxvY2s+IG1JbnRlcmZhY2VCbG9ja3M7CisgICAgICAgIHN0ZDo6dmVjdG9yPHNoOjpB
dHRyaWJ1dGU+IG1BY3RpdmVBdHRyaWJ1dGVzOworICAgICAgICBzdGQ6OnZlY3RvcjxzaDo6T3V0
cHV0VmFyaWFibGU+IG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7CisgICAgfTsKKworICAgIFNoYWRl
cihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsCisgICAgICAgICAgIHJ4OjpJbXBsRmFjdG9yeSAq
aW1wbEZhY3RvcnksCisgICAgICAgICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJM
aW1pdGF0aW9ucywKKyAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgIEdMdWludCBo
YW5kbGUpOworCiAgICAgdmlydHVhbCB+U2hhZGVyKCk7CiAKKyAgICB2b2lkIHNldExhYmVsKGNv
bnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBHTGVudW0gZ2V0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1UeXBlOyB9CiAgICAgR0x1aW50IGdldEhhbmRsZSgpIGNvbnN0OwogCi0gICAg
cng6OlNoYWRlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgeyByZXR1cm4gbVNoYWRlcjsgfQot
ICAgIGNvbnN0IHJ4OjpTaGFkZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1TaGFkZXI7IH0KKyAgICBjb25zdCByeDo6U2hhZGVySW1wbCAqZ2V0SW1wbGVtZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtSW1wbGVtZW50YXRpb247IH0KIAogICAgIHZvaWQgZGVsZXRl
U291cmNlKCk7CiAgICAgdm9pZCBzZXRTb3VyY2UoR0xzaXplaSBjb3VudCwgY29uc3QgY2hhciAq
Y29uc3QgKnN0cmluZywgY29uc3QgR0xpbnQgKmxlbmd0aCk7CkBAIC03Miw2ICsxMDYsOCBAQAog
ICAgIGludCBnZXRTb3VyY2VMZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNvdXJjZShHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqYnVmZmVyKSBjb25zdDsKICAgICBp
bnQgZ2V0VHJhbnNsYXRlZFNvdXJjZUxlbmd0aCgpIGNvbnN0OworICAgIGludCBnZXRUcmFuc2xh
dGVkU291cmNlV2l0aERlYnVnSW5mb0xlbmd0aCgpIGNvbnN0OworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZnZXRUcmFuc2xhdGVkU291cmNlKCkgY29uc3QgeyByZXR1cm4gbURhdGEuZ2V0VHJhbnNs
YXRlZFNvdXJjZSgpOyB9CiAgICAgdm9pZCBnZXRUcmFuc2xhdGVkU291cmNlKEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpIGNvbnN0OwogICAgIHZvaWQgZ2V0
VHJhbnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0luZm8oR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsIGNoYXIgKmJ1ZmZlcikgY29uc3Q7CiAKQEAgLTg0LDM0ICsxMjAsMzMgQEAKICAgICBi
b29sIGlzRmxhZ2dlZEZvckRlbGV0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBmbGFnRm9yRGVsZXRp
b24oKTsKIAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYWNrZWRWYXJ5aW5nPiAmZ2V0VmFy
eWluZ3MoKSBjb25zdDsKKyAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0OworCisgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICZnZXRWYXJ5aW5ncygpIGNvbnN0OwogICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiAmZ2V0VW5pZm9ybXMoKSBjb25zdDsKICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZnZXRJbnRlcmZhY2VCbG9j
a3MoKSBjb25zdDsKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QWN0
aXZlQXR0cmlidXRlcygpIGNvbnN0OwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1
dGU+ICZnZXRBY3RpdmVPdXRwdXRWYXJpYWJsZXMoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+ICZnZXRBY3RpdmVPdXRwdXRWYXJpYWJsZXMoKSBjb25z
dDsKIAotICAgIHN0ZDo6dmVjdG9yPGdsOjpQYWNrZWRWYXJ5aW5nPiAmZ2V0VmFyeWluZ3MoKTsK
LSAgICBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmdldFVuaWZvcm1zKCk7Ci0gICAgc3RkOjp2
ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmZ2V0SW50ZXJmYWNlQmxvY2tzKCk7Ci0gICAgc3Rk
Ojp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdldEFjdGl2ZUF0dHJpYnV0ZXMoKTsKLSAgICBzdGQ6
OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCk7Ci0KICAg
ICBpbnQgZ2V0U2VtYW50aWNJbmRleChjb25zdCBzdGQ6OnN0cmluZyAmYXR0cmlidXRlTmFtZSkg
Y29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBnZXRTb3VyY2VJbXBsKGNvbnN0
IHN0ZDo6c3RyaW5nICZzb3VyY2UsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBj
aGFyICpidWZmZXIpOwogCi0gICAgcng6OlNoYWRlckltcGwgKm1TaGFkZXI7CisgICAgRGF0YSBt
RGF0YTsKKyAgICByeDo6U2hhZGVySW1wbCAqbUltcGxlbWVudGF0aW9uOworICAgIGNvbnN0IGds
OjpMaW1pdGF0aW9ucyAmbVJlbmRlcmVyTGltaXRhdGlvbnM7CiAgICAgY29uc3QgR0x1aW50IG1I
YW5kbGU7CiAgICAgY29uc3QgR0xlbnVtIG1UeXBlOwotICAgIHN0ZDo6c3RyaW5nIG1Tb3VyY2U7
CiAgICAgdW5zaWduZWQgaW50IG1SZWZDb3VudDsgICAgIC8vIE51bWJlciBvZiBwcm9ncmFtIG9i
amVjdHMgdGhpcyBzaGFkZXIgaXMgYXR0YWNoZWQgdG8KICAgICBib29sIG1EZWxldGVTdGF0dXM7
ICAgICAgICAgLy8gRmxhZyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzaGFkZXIgY2FuIGJlIGRlbGV0
ZWQgd2hlbiBubyBsb25nZXIgaW4gdXNlCiAgICAgYm9vbCBtQ29tcGlsZWQ7ICAgICAgICAgICAg
IC8vIEluZGljYXRlcyBpZiB0aGlzIHNoYWRlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGls
ZWQKKyAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKIAogICAgIFJlc291cmNlTWFuYWdlciAqbVJl
c291cmNlTWFuYWdlcjsKIH07CiAKK2Jvb2wgQ29tcGFyZVNoYWRlclZhcihjb25zdCBzaDo6U2hh
ZGVyVmFyaWFibGUgJngsIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmeSk7CiB9CiAKICNlbmRp
ZiAgIC8vIExJQkFOR0xFX1NIQURFUl9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1N0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04LDggKzgsMTAgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAKKyNpbmNsdWRl
ICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0Lmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0RlYnVnLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9G
cmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9RdWVyeS5oIgpAQCAt
MjAsOSArMjIsMjggQEAKIHsKIAogU3RhdGU6OlN0YXRlKCkKKyAgICA6IG1NYXhEcmF3QnVmZmVy
cygwKSwKKyAgICAgIG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKDApLAorICAgICAgbURl
cHRoQ2xlYXJWYWx1ZSgwKSwKKyAgICAgIG1TdGVuY2lsQ2xlYXJWYWx1ZSgwKSwKKyAgICAgIG1T
Y2lzc29yVGVzdChmYWxzZSksCisgICAgICBtU2FtcGxlQ292ZXJhZ2UoZmFsc2UpLAorICAgICAg
bVNhbXBsZUNvdmVyYWdlVmFsdWUoMCksCisgICAgICBtU2FtcGxlQ292ZXJhZ2VJbnZlcnQoZmFs
c2UpLAorICAgICAgbVN0ZW5jaWxSZWYoMCksCisgICAgICBtU3RlbmNpbEJhY2tSZWYoMCksCisg
ICAgICBtTGluZVdpZHRoKDApLAorICAgICAgbUdlbmVyYXRlTWlwbWFwSGludChHTF9OT05FKSwK
KyAgICAgIG1GcmFnbWVudFNoYWRlckRlcml2YXRpdmVIaW50KEdMX05PTkUpLAorICAgICAgbU5l
YXJaKDApLAorICAgICAgbUZhclooMCksCisgICAgICBtUmVhZEZyYW1lYnVmZmVyKG51bGxwdHIp
LAorICAgICAgbURyYXdGcmFtZWJ1ZmZlcihudWxscHRyKSwKKyAgICAgIG1Qcm9ncmFtKG51bGxw
dHIpLAorICAgICAgbVZlcnRleEFycmF5KG51bGxwdHIpLAorICAgICAgbUFjdGl2ZVNhbXBsZXIo
MCksCisgICAgICBtUHJpbWl0aXZlUmVzdGFydChmYWxzZSkKIHsKLSAgICBtTWF4RHJhd0J1ZmZl
cnMgPSAwOwotICAgIG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gMDsKIH0KIAogU3Rh
dGU6On5TdGF0ZSgpCkBAIC0zMCw3ICs1MSwxMCBAQAogICAgIHJlc2V0KCk7CiB9CiAKLXZvaWQg
U3RhdGU6OmluaXRpYWxpemUoY29uc3QgQ2FwcyAmY2FwcywgR0x1aW50IGNsaWVudFZlcnNpb24p
Cit2b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENhcHMgJmNhcHMsCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBjbGllbnRWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICBib29s
IGRlYnVnKQogewogICAgIG1NYXhEcmF3QnVmZmVycyA9IGNhcHMubWF4RHJhd0J1ZmZlcnM7CiAg
ICAgbU1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBjYXBzLm1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHM7CkBAIC0xMTIsMTIgKzEzNiw3IEBACiAKICAgICBtQWN0aXZlU2FtcGxlciA9
IDA7CiAKLSAgICBjb25zdCBHTGZsb2F0IGRlZmF1bHRGbG9hdFZhbHVlc1tdID0geyAwLjBmLCAw
LjBmLCAwLjBmLCAxLjBmIH07CiAgICAgbVZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXMucmVzaXpl
KGNhcHMubWF4VmVydGV4QXR0cmlidXRlcyk7Ci0gICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXgg
PSAwOyBhdHRyaWJJbmRleCA8IG1WZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVzLnNpemUoKTsgKyth
dHRyaWJJbmRleCkKLSAgICB7Ci0gICAgICAgIG1WZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVzW2F0
dHJpYkluZGV4XS5zZXRGbG9hdFZhbHVlcyhkZWZhdWx0RmxvYXRWYWx1ZXMpOwotICAgIH0KIAog
ICAgIG1Vbmlmb3JtQnVmZmVycy5yZXNpemUoY2Fwcy5tYXhDb21iaW5lZFVuaWZvcm1CbG9ja3Mp
OwogCkBAIC0xMzIsMTYgKzE1MSwyMCBAQAogCiAgICAgbVNhbXBsZXJzLnJlc2l6ZShjYXBzLm1h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogCi0gICAgbUFjdGl2ZVF1ZXJpZXNbR0xfQU5Z
X1NBTVBMRVNfUEFTU0VEXS5zZXQoTlVMTCk7Ci0gICAgbUFjdGl2ZVF1ZXJpZXNbR0xfQU5ZX1NB
TVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV0uc2V0KE5VTEwpOwotICAgIG1BY3RpdmVRdWVyaWVz
W0dMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU5dLnNldChOVUxMKTsKKyAg
ICBtQWN0aXZlUXVlcmllc1tHTF9BTllfU0FNUExFU19QQVNTRURdLnNldChudWxscHRyKTsKKyAg
ICBtQWN0aXZlUXVlcmllc1tHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFXS5zZXQo
bnVsbHB0cik7CisgICAgbUFjdGl2ZVF1ZXJpZXNbR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1J
VElWRVNfV1JJVFRFTl0uc2V0KG51bGxwdHIpOworICAgIG1BY3RpdmVRdWVyaWVzW0dMX1RJTUVf
RUxBUFNFRF9FWFRdLnNldChudWxscHRyKTsKIAotICAgIG1Qcm9ncmFtID0gTlVMTDsKKyAgICBt
UHJvZ3JhbSA9IG51bGxwdHI7CiAKLSAgICBtUmVhZEZyYW1lYnVmZmVyID0gTlVMTDsKLSAgICBt
RHJhd0ZyYW1lYnVmZmVyID0gTlVMTDsKKyAgICBtUmVhZEZyYW1lYnVmZmVyID0gbnVsbHB0cjsK
KyAgICBtRHJhd0ZyYW1lYnVmZmVyID0gbnVsbHB0cjsKIAogICAgIG1QcmltaXRpdmVSZXN0YXJ0
ID0gZmFsc2U7CisKKyAgICBtRGVidWcuc2V0T3V0cHV0RW5hYmxlZChkZWJ1Zyk7CisgICAgbURl
YnVnLnNldE1heExvZ2dlZE1lc3NhZ2VzKGV4dGVuc2lvbnMubWF4RGVidWdMb2dnZWRNZXNzYWdl
cyk7CiB9CiAKIHZvaWQgU3RhdGU6OnJlc2V0KCkKQEAgLTE4OCw2ICsyMTEsOSBAQAogICAgIG1V
bnBhY2sucGl4ZWxCdWZmZXIuc2V0KE5VTEwpOwogCiAgICAgbVByb2dyYW0gPSBOVUxMOworCisg
ICAgLy8gVE9ETyhqbWFkaWxsKTogSXMgdGhpcyBuZWNlc3Nhcnk/CisgICAgc2V0QWxsRGlydHlC
aXRzKCk7CiB9CiAKIGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZSAmU3RhdGU6OmdldFJhc3Rlcml6ZXJT
dGF0ZSgpIGNvbnN0CkBAIC0yMTEsMTYgKzIzNywxOSBAQAogICAgIG1Db2xvckNsZWFyVmFsdWUu
Z3JlZW4gPSBncmVlbjsKICAgICBtQ29sb3JDbGVhclZhbHVlLmJsdWUgPSBibHVlOwogICAgIG1D
b2xvckNsZWFyVmFsdWUuYWxwaGEgPSBhbHBoYTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9C
SVRfQ0xFQVJfQ09MT1IpOwogfQogCiB2b2lkIFN0YXRlOjpzZXREZXB0aENsZWFyVmFsdWUoZmxv
YXQgZGVwdGgpCiB7CiAgICAgbURlcHRoQ2xlYXJWYWx1ZSA9IGRlcHRoOworICAgIG1EaXJ0eUJp
dHMuc2V0KERJUlRZX0JJVF9DTEVBUl9ERVBUSCk7CiB9CiAKIHZvaWQgU3RhdGU6OnNldFN0ZW5j
aWxDbGVhclZhbHVlKGludCBzdGVuY2lsKQogewogICAgIG1TdGVuY2lsQ2xlYXJWYWx1ZSA9IHN0
ZW5jaWw7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NMRUFSX1NURU5DSUwpOwogfQog
CiB2b2lkIFN0YXRlOjpzZXRDb2xvck1hc2soYm9vbCByZWQsIGJvb2wgZ3JlZW4sIGJvb2wgYmx1
ZSwgYm9vbCBhbHBoYSkKQEAgLTIyOSwxMSArMjU4LDEzIEBACiAgICAgbUJsZW5kLmNvbG9yTWFz
a0dyZWVuID0gZ3JlZW47CiAgICAgbUJsZW5kLmNvbG9yTWFza0JsdWUgPSBibHVlOwogICAgIG1C
bGVuZC5jb2xvck1hc2tBbHBoYSA9IGFscGhhOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJ
VF9DT0xPUl9NQVNLKTsKIH0KIAogdm9pZCBTdGF0ZTo6c2V0RGVwdGhNYXNrKGJvb2wgbWFzaykK
IHsKICAgICBtRGVwdGhTdGVuY2lsLmRlcHRoTWFzayA9IG1hc2s7CisgICAgbURpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX0RFUFRIX01BU0spOwogfQogCiBib29sIFN0YXRlOjppc1Jhc3Rlcml6ZXJE
aXNjYXJkRW5hYmxlZCgpIGNvbnN0CkBAIC0yNDQsNiArMjc1LDcgQEAKIHZvaWQgU3RhdGU6OnNl
dFJhc3Rlcml6ZXJEaXNjYXJkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtUmFzdGVyaXplci5yYXN0
ZXJpemVyRGlzY2FyZCA9IGVuYWJsZWQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1JB
U1RFUklaRVJfRElTQ0FSRF9FTkFCTEVEKTsKIH0KIAogYm9vbCBTdGF0ZTo6aXNDdWxsRmFjZUVu
YWJsZWQoKSBjb25zdApAQCAtMjU0LDE2ICsyODYsMTkgQEAKIHZvaWQgU3RhdGU6OnNldEN1bGxG
YWNlKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtUmFzdGVyaXplci5jdWxsRmFjZSA9IGVuYWJsZWQ7
CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NVTExfRkFDRV9FTkFCTEVEKTsKIH0KIAog
dm9pZCBTdGF0ZTo6c2V0Q3VsbE1vZGUoR0xlbnVtIG1vZGUpCiB7CiAgICAgbVJhc3Rlcml6ZXIu
Y3VsbE1vZGUgPSBtb2RlOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DVUxMX0ZBQ0Up
OwogfQogCiB2b2lkIFN0YXRlOjpzZXRGcm9udEZhY2UoR0xlbnVtIGZyb250KQogewogICAgIG1S
YXN0ZXJpemVyLmZyb250RmFjZSA9IGZyb250OworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJ
VF9GUk9OVF9GQUNFKTsKIH0KIAogYm9vbCBTdGF0ZTo6aXNEZXB0aFRlc3RFbmFibGVkKCkgY29u
c3QKQEAgLTI3NCwxNyArMzA5LDIwIEBACiB2b2lkIFN0YXRlOjpzZXREZXB0aFRlc3QoYm9vbCBl
bmFibGVkKQogewogICAgIG1EZXB0aFN0ZW5jaWwuZGVwdGhUZXN0ID0gZW5hYmxlZDsKKyAgICBt
RGlydHlCaXRzLnNldChESVJUWV9CSVRfREVQVEhfVEVTVF9FTkFCTEVEKTsKIH0KIAogdm9pZCBT
dGF0ZTo6c2V0RGVwdGhGdW5jKEdMZW51bSBkZXB0aEZ1bmMpCiB7CiAgICAgIG1EZXB0aFN0ZW5j
aWwuZGVwdGhGdW5jID0gZGVwdGhGdW5jOworICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
REVQVEhfRlVOQyk7CiB9CiAKIHZvaWQgU3RhdGU6OnNldERlcHRoUmFuZ2UoZmxvYXQgek5lYXIs
IGZsb2F0IHpGYXIpCiB7CiAgICAgbU5lYXJaID0gek5lYXI7CiAgICAgbUZhclogPSB6RmFyOwor
ICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERVBUSF9SQU5HRSk7CiB9CiAKIGZsb2F0IFN0
YXRlOjpnZXROZWFyUGxhbmUoKSBjb25zdApAQCAtMzA1LDYgKzM0Myw3IEBACiB2b2lkIFN0YXRl
OjpzZXRCbGVuZChib29sIGVuYWJsZWQpCiB7CiAgICAgbUJsZW5kLmJsZW5kID0gZW5hYmxlZDsK
KyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfRU5BQkxFRCk7CiB9CiAKIHZvaWQg
U3RhdGU6OnNldEJsZW5kRmFjdG9ycyhHTGVudW0gc291cmNlUkdCLCBHTGVudW0gZGVzdFJHQiwg
R0xlbnVtIHNvdXJjZUFscGhhLCBHTGVudW0gZGVzdEFscGhhKQpAQCAtMzEzLDYgKzM1Miw3IEBA
CiAgICAgbUJsZW5kLmRlc3RCbGVuZFJHQiA9IGRlc3RSR0I7CiAgICAgbUJsZW5kLnNvdXJjZUJs
ZW5kQWxwaGEgPSBzb3VyY2VBbHBoYTsKICAgICBtQmxlbmQuZGVzdEJsZW5kQWxwaGEgPSBkZXN0
QWxwaGE7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTKTsKIH0KIAog
dm9pZCBTdGF0ZTo6c2V0QmxlbmRDb2xvcihmbG9hdCByZWQsIGZsb2F0IGdyZWVuLCBmbG9hdCBi
bHVlLCBmbG9hdCBhbHBoYSkKQEAgLTMyMSwxMiArMzYxLDE0IEBACiAgICAgbUJsZW5kQ29sb3Iu
Z3JlZW4gPSBncmVlbjsKICAgICBtQmxlbmRDb2xvci5ibHVlID0gYmx1ZTsKICAgICBtQmxlbmRD
b2xvci5hbHBoYSA9IGFscGhhOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9D
T0xPUik7CiB9CiAKIHZvaWQgU3RhdGU6OnNldEJsZW5kRXF1YXRpb24oR0xlbnVtIHJnYkVxdWF0
aW9uLCBHTGVudW0gYWxwaGFFcXVhdGlvbikKIHsKICAgICBtQmxlbmQuYmxlbmRFcXVhdGlvblJH
QiA9IHJnYkVxdWF0aW9uOwogICAgIG1CbGVuZC5ibGVuZEVxdWF0aW9uQWxwaGEgPSBhbHBoYUVx
dWF0aW9uOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9FUVVBVElPTlMpOwog
fQogCiBjb25zdCBDb2xvckYgJlN0YXRlOjpnZXRCbGVuZENvbG9yKCkgY29uc3QKQEAgLTM0Miw2
ICszODQsNyBAQAogdm9pZCBTdGF0ZTo6c2V0U3RlbmNpbFRlc3QoYm9vbCBlbmFibGVkKQogewog
ICAgIG1EZXB0aFN0ZW5jaWwuc3RlbmNpbFRlc3QgPSBlbmFibGVkOworICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9TVEVOQ0lMX1RFU1RfRU5BQkxFRCk7CiB9CiAKIHZvaWQgU3RhdGU6OnNl
dFN0ZW5jaWxQYXJhbXMoR0xlbnVtIHN0ZW5jaWxGdW5jLCBHTGludCBzdGVuY2lsUmVmLCBHTHVp
bnQgc3RlbmNpbE1hc2spCkBAIC0zNDksNiArMzkyLDcgQEAKICAgICBtRGVwdGhTdGVuY2lsLnN0
ZW5jaWxGdW5jID0gc3RlbmNpbEZ1bmM7CiAgICAgbVN0ZW5jaWxSZWYgPSAoc3RlbmNpbFJlZiA+
IDApID8gc3RlbmNpbFJlZiA6IDA7CiAgICAgbURlcHRoU3RlbmNpbC5zdGVuY2lsTWFzayA9IHN0
ZW5jaWxNYXNrOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0ZVTkNTX0ZS
T05UKTsKIH0KIAogdm9pZCBTdGF0ZTo6c2V0U3RlbmNpbEJhY2tQYXJhbXMoR0xlbnVtIHN0ZW5j
aWxCYWNrRnVuYywgR0xpbnQgc3RlbmNpbEJhY2tSZWYsIEdMdWludCBzdGVuY2lsQmFja01hc2sp
CkBAIC0zNTYsMTYgKzQwMCwxOSBAQAogICAgIG1EZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGdW5j
ID0gc3RlbmNpbEJhY2tGdW5jOwogICAgIG1TdGVuY2lsQmFja1JlZiA9IChzdGVuY2lsQmFja1Jl
ZiA+IDApID8gc3RlbmNpbEJhY2tSZWYgOiAwOwogICAgIG1EZXB0aFN0ZW5jaWwuc3RlbmNpbEJh
Y2tNYXNrID0gc3RlbmNpbEJhY2tNYXNrOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9T
VEVOQ0lMX0ZVTkNTX0JBQ0spOwogfQogCiB2b2lkIFN0YXRlOjpzZXRTdGVuY2lsV3JpdGVtYXNr
KEdMdWludCBzdGVuY2lsV3JpdGVtYXNrKQogewogICAgIG1EZXB0aFN0ZW5jaWwuc3RlbmNpbFdy
aXRlbWFzayA9IHN0ZW5jaWxXcml0ZW1hc2s7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklU
X1NURU5DSUxfV1JJVEVNQVNLX0ZST05UKTsKIH0KIAogdm9pZCBTdGF0ZTo6c2V0U3RlbmNpbEJh
Y2tXcml0ZW1hc2soR0x1aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrKQogewogICAgIG1EZXB0aFN0
ZW5jaWwuc3RlbmNpbEJhY2tXcml0ZW1hc2sgPSBzdGVuY2lsQmFja1dyaXRlbWFzazsKKyAgICBt
RGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9XUklURU1BU0tfQkFDSyk7CiB9CiAKIHZv
aWQgU3RhdGU6OnNldFN0ZW5jaWxPcGVyYXRpb25zKEdMZW51bSBzdGVuY2lsRmFpbCwgR0xlbnVt
IHN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aFBhc3MpCkBAIC0z
NzMsNiArNDIwLDcgQEAKICAgICBtRGVwdGhTdGVuY2lsLnN0ZW5jaWxGYWlsID0gc3RlbmNpbEZh
aWw7CiAgICAgbURlcHRoU3RlbmNpbC5zdGVuY2lsUGFzc0RlcHRoRmFpbCA9IHN0ZW5jaWxQYXNz
RGVwdGhGYWlsOwogICAgIG1EZXB0aFN0ZW5jaWwuc3RlbmNpbFBhc3NEZXB0aFBhc3MgPSBzdGVu
Y2lsUGFzc0RlcHRoUGFzczsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9P
UFNfRlJPTlQpOwogfQogCiB2b2lkIFN0YXRlOjpzZXRTdGVuY2lsQmFja09wZXJhdGlvbnMoR0xl
bnVtIHN0ZW5jaWxCYWNrRmFpbCwgR0xlbnVtIHN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFpbCwgR0xl
bnVtIHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcykKQEAgLTM4MCw2ICs0MjgsNyBAQAogICAgIG1E
ZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tGYWlsID0gc3RlbmNpbEJhY2tGYWlsOwogICAgIG1EZXB0
aFN0ZW5jaWwuc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsID0gc3RlbmNpbEJhY2tQYXNzRGVwdGhG
YWlsOwogICAgIG1EZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNzID0gc3RlbmNp
bEJhY2tQYXNzRGVwdGhQYXNzOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lM
X09QU19CQUNLKTsKIH0KIAogR0xpbnQgU3RhdGU6OmdldFN0ZW5jaWxSZWYoKSBjb25zdApAQCAt
Mzk5LDcgKzQ0OCw4IEBACiAKIHZvaWQgU3RhdGU6OnNldFBvbHlnb25PZmZzZXRGaWxsKGJvb2wg
ZW5hYmxlZCkKIHsKLSAgICAgbVJhc3Rlcml6ZXIucG9seWdvbk9mZnNldEZpbGwgPSBlbmFibGVk
OworICAgIG1SYXN0ZXJpemVyLnBvbHlnb25PZmZzZXRGaWxsID0gZW5hYmxlZDsKKyAgICBtRGly
dHlCaXRzLnNldChESVJUWV9CSVRfUE9MWUdPTl9PRkZTRVRfRklMTF9FTkFCTEVEKTsKIH0KIAog
dm9pZCBTdGF0ZTo6c2V0UG9seWdvbk9mZnNldFBhcmFtcyhHTGZsb2F0IGZhY3RvciwgR0xmbG9h
dCB1bml0cykKQEAgLTQwNyw2ICs0NTcsNyBAQAogICAgIC8vIEFuIGFwcGxpY2F0aW9uIGNhbiBw
YXNzIE5hTiB2YWx1ZXMgaGVyZSwgc28gaGFuZGxlIHRoaXMgZ3JhY2VmdWxseQogICAgIG1SYXN0
ZXJpemVyLnBvbHlnb25PZmZzZXRGYWN0b3IgPSBmYWN0b3IgIT0gZmFjdG9yID8gMC4wZiA6IGZh
Y3RvcjsKICAgICBtUmFzdGVyaXplci5wb2x5Z29uT2Zmc2V0VW5pdHMgPSB1bml0cyAhPSB1bml0
cyA/IDAuMGYgOiB1bml0czsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfUE9MWUdPTl9P
RkZTRVQpOwogfQogCiBib29sIFN0YXRlOjppc1NhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQo
KSBjb25zdApAQCAtNDE3LDYgKzQ2OCw3IEBACiB2b2lkIFN0YXRlOjpzZXRTYW1wbGVBbHBoYVRv
Q292ZXJhZ2UoYm9vbCBlbmFibGVkKQogewogICAgIG1CbGVuZC5zYW1wbGVBbHBoYVRvQ292ZXJh
Z2UgPSBlbmFibGVkOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TQU1QTEVfQUxQSEFf
VE9fQ09WRVJBR0VfRU5BQkxFRCk7CiB9CiAKIGJvb2wgU3RhdGU6OmlzU2FtcGxlQ292ZXJhZ2VF
bmFibGVkKCkgY29uc3QKQEAgLTQyNywxMiArNDc5LDE0IEBACiB2b2lkIFN0YXRlOjpzZXRTYW1w
bGVDb3ZlcmFnZShib29sIGVuYWJsZWQpCiB7CiAgICAgbVNhbXBsZUNvdmVyYWdlID0gZW5hYmxl
ZDsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0FNUExFX0NPVkVSQUdFX0VOQUJMRUQp
OwogfQogCiB2b2lkIFN0YXRlOjpzZXRTYW1wbGVDb3ZlcmFnZVBhcmFtcyhHTGNsYW1wZiB2YWx1
ZSwgYm9vbCBpbnZlcnQpCiB7CiAgICAgbVNhbXBsZUNvdmVyYWdlVmFsdWUgPSB2YWx1ZTsKICAg
ICBtU2FtcGxlQ292ZXJhZ2VJbnZlcnQgPSBpbnZlcnQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElS
VFlfQklUX1NBTVBMRV9DT1ZFUkFHRSk7CiB9CiAKIEdMY2xhbXBmIFN0YXRlOjpnZXRTYW1wbGVD
b3ZlcmFnZVZhbHVlKCkgY29uc3QKQEAgLTQ1Myw2ICs1MDcsNyBAQAogdm9pZCBTdGF0ZTo6c2V0
U2Npc3NvclRlc3QoYm9vbCBlbmFibGVkKQogewogICAgIG1TY2lzc29yVGVzdCA9IGVuYWJsZWQ7
CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NDSVNTT1JfVEVTVF9FTkFCTEVEKTsKIH0K
IAogdm9pZCBTdGF0ZTo6c2V0U2Npc3NvclBhcmFtcyhHTGludCB4LCBHTGludCB5LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCkKQEAgLTQ2MSw2ICs1MTYsNyBAQAogICAgIG1TY2lzc29y
LnkgPSB5OwogICAgIG1TY2lzc29yLndpZHRoID0gd2lkdGg7CiAgICAgbVNjaXNzb3IuaGVpZ2h0
ID0gaGVpZ2h0OworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TQ0lTU09SKTsKIH0KIAog
Y29uc3QgUmVjdGFuZ2xlICZTdGF0ZTo6Z2V0U2Npc3NvcigpIGNvbnN0CkBAIC00NzYsNiArNTMy
LDcgQEAKIHZvaWQgU3RhdGU6OnNldERpdGhlcihib29sIGVuYWJsZWQpCiB7CiAgICAgbUJsZW5k
LmRpdGhlciA9IGVuYWJsZWQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RJVEhFUl9F
TkFCTEVEKTsKIH0KIAogYm9vbCBTdGF0ZTo6aXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpIGNv
bnN0CkBAIC00ODYsNiArNTQzLDcgQEAKIHZvaWQgU3RhdGU6OnNldFByaW1pdGl2ZVJlc3RhcnQo
Ym9vbCBlbmFibGVkKQogewogICAgIG1QcmltaXRpdmVSZXN0YXJ0ID0gZW5hYmxlZDsKKyAgICBt
RGlydHlCaXRzLnNldChESVJUWV9CSVRfUFJJTUlUSVZFX1JFU1RBUlRfRU5BQkxFRCk7CiB9CiAK
IHZvaWQgU3RhdGU6OnNldEVuYWJsZUZlYXR1cmUoR0xlbnVtIGZlYXR1cmUsIGJvb2wgZW5hYmxl
ZCkKQEAgLTUwMyw2ICs1NjEsMTIgQEAKICAgICAgIGNhc2UgR0xfRElUSEVSOiAgICAgICAgICAg
ICAgICAgICAgICAgIHNldERpdGhlcihlbmFibGVkKTsgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICBjYXNlIEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYOiBzZXRQcmltaXRpdmVS
ZXN0YXJ0KGVuYWJsZWQpOyAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9SQVNURVJJWkVSX0RJ
U0NBUkQ6ICAgICAgICAgICAgc2V0UmFzdGVyaXplckRpc2NhcmQoZW5hYmxlZCk7ICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTOgorICAgICAgICAgIG1E
ZWJ1Zy5zZXRPdXRwdXRTeW5jaHJvbm91cyhlbmFibGVkKTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUOgorICAgICAgICAgIG1EZWJ1Zy5zZXRPdXRwdXRFbmFi
bGVkKGVuYWJsZWQpOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiB9CkBAIC01MjIsNiAr
NTg2LDEwIEBACiAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaXNEaXRoZXJFbmFibGVkKCk7CiAgICAgICBjYXNlIEdMX1BSSU1JVElWRV9SRVNUQVJU
X0ZJWEVEX0lOREVYOiByZXR1cm4gaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpOwogICAgICAg
Y2FzZSBHTF9SQVNURVJJWkVSX0RJU0NBUkQ6ICAgICAgICAgICAgcmV0dXJuIGlzUmFzdGVyaXpl
ckRpc2NhcmRFbmFibGVkKCk7CisgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9V
UzoKKyAgICAgICAgICByZXR1cm4gbURlYnVnLmlzT3V0cHV0U3luY2hyb25vdXMoKTsKKyAgICAg
IGNhc2UgR0xfREVCVUdfT1VUUFVUOgorICAgICAgICAgIHJldHVybiBtRGVidWcuaXNPdXRwdXRF
bmFibGVkKCk7CiAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOyByZXR1cm4gZmFsc2U7CiAgICAgfQogfQpAQCAtNTI5LDYgKzU5Nyw3IEBA
CiB2b2lkIFN0YXRlOjpzZXRMaW5lV2lkdGgoR0xmbG9hdCB3aWR0aCkKIHsKICAgICBtTGluZVdp
ZHRoID0gd2lkdGg7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0xJTkVfV0lEVEgpOwog
fQogCiBmbG9hdCBTdGF0ZTo6Z2V0TGluZVdpZHRoKCkgY29uc3QKQEAgLTUzOSwxMSArNjA4LDEz
IEBACiB2b2lkIFN0YXRlOjpzZXRHZW5lcmF0ZU1pcG1hcEhpbnQoR0xlbnVtIGhpbnQpCiB7CiAg
ICAgbUdlbmVyYXRlTWlwbWFwSGludCA9IGhpbnQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlf
QklUX0dFTkVSQVRFX01JUE1BUF9ISU5UKTsKIH0KIAogdm9pZCBTdGF0ZTo6c2V0RnJhZ21lbnRT
aGFkZXJEZXJpdmF0aXZlSGludChHTGVudW0gaGludCkKIHsKICAgICBtRnJhZ21lbnRTaGFkZXJE
ZXJpdmF0aXZlSGludCA9IGhpbnQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NIQURF
Ul9ERVJJVkFUSVZFX0hJTlQpOwogICAgIC8vIFRPRE86IFByb3BhZ2F0ZSB0aGUgaGludCB0byBz
aGFkZXIgdHJhbnNsYXRvciBzbyB3ZSBjYW4gd3JpdGUKICAgICAvLyBkZHgsIGRkeF9jb2Fyc2Us
IG9yIGRkeF9maW5lIGRlcGVuZGluZyBvbiB0aGUgaGludC4KICAgICAvLyBJZ25vcmUgZm9yIG5v
dy4gSXQgaXMgdmFsaWQgZm9yIGltcGxlbWVudGF0aW9ucyB0byBpZ25vcmUgaGludC4KQEAgLTU1
NSw2ICs2MjYsNyBAQAogICAgIG1WaWV3cG9ydC55ID0geTsKICAgICBtVmlld3BvcnQud2lkdGgg
PSB3aWR0aDsKICAgICBtVmlld3BvcnQuaGVpZ2h0ID0gaGVpZ2h0OworICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9WSUVXUE9SVCk7CiB9CiAKIGNvbnN0IFJlY3RhbmdsZSAmU3RhdGU6Omdl
dFZpZXdwb3J0KCkgY29uc3QKQEAgLTU3NywxMCArNjQ5LDE2IEBACiAgICAgbVNhbXBsZXJUZXh0
dXJlc1t0eXBlXVttQWN0aXZlU2FtcGxlcl0uc2V0KHRleHR1cmUpOwogfQogCitUZXh0dXJlICpT
dGF0ZTo6Z2V0VGFyZ2V0VGV4dHVyZShHTGVudW0gdGFyZ2V0KSBjb25zdAoreworICAgIHJldHVy
biBnZXRTYW1wbGVyVGV4dHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BY3RpdmVTYW1w
bGVyKSwgdGFyZ2V0KTsKK30KKwogVGV4dHVyZSAqU3RhdGU6OmdldFNhbXBsZXJUZXh0dXJlKHVu
c2lnbmVkIGludCBzYW1wbGVyLCBHTGVudW0gdHlwZSkgY29uc3QKIHsKICAgICBjb25zdCBhdXRv
IGl0ID0gbVNhbXBsZXJUZXh0dXJlcy5maW5kKHR5cGUpOwogICAgIEFTU0VSVChpdCAhPSBtU2Ft
cGxlclRleHR1cmVzLmVuZCgpKTsKKyAgICBBU1NFUlQoc2FtcGxlciA8IGl0LT5zZWNvbmQuc2l6
ZSgpKTsKICAgICByZXR1cm4gaXQtPnNlY29uZFtzYW1wbGVyXS5nZXQoKTsKIH0KIApAQCAtNTg4
LDYgKzY2Niw3IEBACiB7CiAgICAgY29uc3QgYXV0byBpdCA9IG1TYW1wbGVyVGV4dHVyZXMuZmlu
ZCh0eXBlKTsKICAgICBBU1NFUlQoaXQgIT0gbVNhbXBsZXJUZXh0dXJlcy5lbmQoKSk7CisgICAg
QVNTRVJUKHNhbXBsZXIgPCBpdC0+c2Vjb25kLnNpemUoKSk7CiAgICAgcmV0dXJuIGl0LT5zZWNv
bmRbc2FtcGxlcl0uaWQoKTsKIH0KIApAQCAtNzI4LDIyICs4MDcsNDQgQEAKIAogdm9pZCBTdGF0
ZTo6c2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZyhGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7
CisgICAgaWYgKG1SZWFkRnJhbWVidWZmZXIgPT0gZnJhbWVidWZmZXIpCisgICAgICAgIHJldHVy
bjsKKwogICAgIG1SZWFkRnJhbWVidWZmZXIgPSBmcmFtZWJ1ZmZlcjsKKyAgICBtRGlydHlCaXRz
LnNldChESVJUWV9CSVRfUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HKTsKKworICAgIGlmIChtUmVh
ZEZyYW1lYnVmZmVyICYmIG1SZWFkRnJhbWVidWZmZXItPmhhc0FueURpcnR5Qml0KCkpCisgICAg
eworICAgICAgICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfUkVBRF9GUkFNRUJVRkZF
Uik7CisgICAgfQogfQogCiB2b2lkIFN0YXRlOjpzZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKEZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKIHsKKyAgICBpZiAobURyYXdGcmFtZWJ1ZmZlciA9PSBm
cmFtZWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgbURyYXdGcmFtZWJ1ZmZlciA9IGZy
YW1lYnVmZmVyOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9EUkFXX0ZSQU1FQlVGRkVS
X0JJTkRJTkcpOworCisgICAgaWYgKG1EcmF3RnJhbWVidWZmZXIgJiYgbURyYXdGcmFtZWJ1ZmZl
ci0+aGFzQW55RGlydHlCaXQoKSkKKyAgICB7CisgICAgICAgIG1EaXJ0eU9iamVjdHMuc2V0KERJ
UlRZX09CSkVDVF9EUkFXX0ZSQU1FQlVGRkVSKTsKKyAgICB9CiB9CiAKIEZyYW1lYnVmZmVyICpT
dGF0ZTo6Z2V0VGFyZ2V0RnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCkgY29uc3QKIHsKICAgICBz
d2l0Y2ggKHRhcmdldCkKICAgICB7Ci0gICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xF
OiAgcmV0dXJuIG1SZWFkRnJhbWVidWZmZXI7Ci0gICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVGRkVS
X0FOR0xFOgotICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6ICAgICAgICAgICAgIHJldHVybiBtRHJh
d0ZyYW1lYnVmZmVyOwotICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7IHJldHVybiBOVUxMOworICAgICAgICBjYXNlIEdMX1JFQURfRlJBTUVCVUZGRVJf
QU5HTEU6CisgICAgICAgICAgICByZXR1cm4gbVJlYWRGcmFtZWJ1ZmZlcjsKKyAgICAgICAgY2Fz
ZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVS
OgorICAgICAgICAgICAgcmV0dXJuIG1EcmF3RnJhbWVidWZmZXI7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAg
ICAgfQogfQogCkBAIC03NzIsNyArODczLDcgQEAKICAgICBpZiAobVJlYWRGcmFtZWJ1ZmZlciAh
PSBudWxscHRyICYmCiAgICAgICAgIG1SZWFkRnJhbWVidWZmZXItPmlkKCkgPT0gZnJhbWVidWZm
ZXIpCiAgICAgewotICAgICAgICBtUmVhZEZyYW1lYnVmZmVyID0gTlVMTDsKKyAgICAgICAgc2V0
UmVhZEZyYW1lYnVmZmVyQmluZGluZyhudWxscHRyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC03ODQsNyArODg1LDcgQEAKICAgICBpZiAobVJlYWRGcmFtZWJ1ZmZlciAhPSBu
dWxscHRyICYmCiAgICAgICAgIG1EcmF3RnJhbWVidWZmZXItPmlkKCkgPT0gZnJhbWVidWZmZXIp
CiAgICAgewotICAgICAgICBtRHJhd0ZyYW1lYnVmZmVyID0gTlVMTDsKKyAgICAgICAgc2V0RHJh
d0ZyYW1lYnVmZmVyQmluZGluZyhudWxscHRyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC03OTQsNiArODk1LDEyIEBACiB2b2lkIFN0YXRlOjpzZXRWZXJ0ZXhBcnJheUJpbmRp
bmcoVmVydGV4QXJyYXkgKnZlcnRleEFycmF5KQogewogICAgIG1WZXJ0ZXhBcnJheSA9IHZlcnRl
eEFycmF5OworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9WRVJURVhfQVJSQVlfQklORElO
Ryk7CisKKyAgICBpZiAobVZlcnRleEFycmF5ICYmIG1WZXJ0ZXhBcnJheS0+aGFzQW55RGlydHlC
aXQoKSkKKyAgICB7CisgICAgICAgIG1EaXJ0eU9iamVjdHMuc2V0KERJUlRZX09CSkVDVF9WRVJU
RVhfQVJSQVkpOworICAgIH0KIH0KIAogR0x1aW50IFN0YXRlOjpnZXRWZXJ0ZXhBcnJheUlkKCkg
Y29uc3QKQEAgLTgxMyw2ICs5MjAsOCBAQAogICAgIGlmIChtVmVydGV4QXJyYXktPmlkKCkgPT0g
dmVydGV4QXJyYXkpCiAgICAgewogICAgICAgICBtVmVydGV4QXJyYXkgPSBOVUxMOworICAgICAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfVkVSVEVYX0FSUkFZX0JJTkRJTkcpOworICAgICAg
ICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04NjgsMTAgKzk3Nyw5IEBACiAKIGJvb2wgU3RhdGU6
OmlzUXVlcnlBY3RpdmUoKSBjb25zdAogewotICAgIGZvciAoU3RhdGU6OkFjdGl2ZVF1ZXJ5TWFw
Ojpjb25zdF9pdGVyYXRvciBpID0gbUFjdGl2ZVF1ZXJpZXMuYmVnaW4oKTsKLSAgICAgICAgaSAh
PSBtQWN0aXZlUXVlcmllcy5lbmQoKTsgaSsrKQorICAgIGZvciAoYXV0byAmaXRlciA6IG1BY3Rp
dmVRdWVyaWVzKQogICAgIHsKLSAgICAgICAgaWYgKGktPnNlY29uZC5nZXQoKSAhPSBOVUxMKQor
ICAgICAgICBpZiAoaXRlci5zZWNvbmQuZ2V0KCkgIT0gTlVMTCkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTg4MCw2ICs5ODgsMTkgQEAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgU3RhdGU6OmlzUXVlcnlBY3RpdmUoUXVlcnkgKnF1ZXJ5
KSBjb25zdAoreworICAgIGZvciAoYXV0byAmaXRlciA6IG1BY3RpdmVRdWVyaWVzKQorICAgIHsK
KyAgICAgICAgaWYgKGl0ZXIuc2Vjb25kLmdldCgpID09IHF1ZXJ5KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogdm9pZCBTdGF0ZTo6c2V0QWN0aXZlUXVlcnkoR0xlbnVtIHRhcmdldCwgUXVlcnkg
KnF1ZXJ5KQogewogICAgIG1BY3RpdmVRdWVyaWVzW3RhcmdldF0uc2V0KHF1ZXJ5KTsKQEAgLTkx
MSwxNyArMTAzMiw2IEBACiAgICAgcmV0dXJuIG1BcnJheUJ1ZmZlci5pZCgpOwogfQogCi1ib29s
IFN0YXRlOjpyZW1vdmVBcnJheUJ1ZmZlckJpbmRpbmcoR0x1aW50IGJ1ZmZlcikKLXsKLSAgICBp
ZiAobUFycmF5QnVmZmVyLmlkKCkgPT0gYnVmZmVyKQotICAgIHsKLSAgICAgICAgbUFycmF5QnVm
ZmVyLnNldChOVUxMKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiB2b2lkIFN0YXRlOjpzZXRHZW5lcmljVW5pZm9ybUJ1ZmZlckJpbmRpbmco
QnVmZmVyICpidWZmZXIpCiB7CiAgICAgbUdlbmVyaWNVbmlmb3JtQnVmZmVyLnNldChidWZmZXIp
OwpAQCAtOTMyLDM0ICsxMDQyLDEyIEBACiAgICAgbVVuaWZvcm1CdWZmZXJzW2luZGV4XS5zZXQo
YnVmZmVyLCBvZmZzZXQsIHNpemUpOwogfQogCi1HTHVpbnQgU3RhdGU6OmdldEluZGV4ZWRVbmlm
b3JtQnVmZmVySWQoR0x1aW50IGluZGV4KSBjb25zdAorY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50
ZXI8QnVmZmVyPiAmU3RhdGU6OmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKHNpemVfdCBpbmRleCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVW5pZm9y
bUJ1ZmZlcnMuc2l6ZSgpKTsKLQotICAgIHJldHVybiBtVW5pZm9ybUJ1ZmZlcnNbaW5kZXhdLmlk
KCk7CisgICAgcmV0dXJuIG1Vbmlmb3JtQnVmZmVyc1tpbmRleF07CiB9CiAKLUJ1ZmZlciAqU3Rh
dGU6OmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKEdMdWludCBpbmRleCkgY29uc3QKLXsKLSAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVW5pZm9ybUJ1ZmZlcnMuc2l6ZSgp
KTsKLQotICAgIHJldHVybiBtVW5pZm9ybUJ1ZmZlcnNbaW5kZXhdLmdldCgpOwotfQotCi1HTGlu
dHB0ciBTdGF0ZTo6Z2V0SW5kZXhlZFVuaWZvcm1CdWZmZXJPZmZzZXQoR0x1aW50IGluZGV4KSBj
b25zdAotewotICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1Vbmlmb3Jt
QnVmZmVycy5zaXplKCkpOwotCi0gICAgcmV0dXJuIG1Vbmlmb3JtQnVmZmVyc1tpbmRleF0uZ2V0
T2Zmc2V0KCk7Ci19Ci0KLUdMc2l6ZWlwdHIgU3RhdGU6OmdldEluZGV4ZWRVbmlmb3JtQnVmZmVy
U2l6ZShHTHVpbnQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oaW5kZXgpIDwgbVVuaWZvcm1CdWZmZXJzLnNpemUoKSk7Ci0KLSAgICByZXR1cm4gbVVuaWZv
cm1CdWZmZXJzW2luZGV4XS5nZXRTaXplKCk7Ci19Ci0KIHZvaWQgU3RhdGU6OnNldENvcHlSZWFk
QnVmZmVyQmluZGluZyhCdWZmZXIgKmJ1ZmZlcikKIHsKICAgICBtQ29weVJlYWRCdWZmZXIuc2V0
KGJ1ZmZlcik7CkBAIC05ODcsNyArMTA3NSw3IEBACiAgICAgICBjYXNlIEdMX0FSUkFZX0JVRkZF
UjogICAgICAgICAgICAgIHJldHVybiBtQXJyYXlCdWZmZXIuZ2V0KCk7CiAgICAgICBjYXNlIEdM
X0NPUFlfUkVBRF9CVUZGRVI6ICAgICAgICAgIHJldHVybiBtQ29weVJlYWRCdWZmZXIuZ2V0KCk7
CiAgICAgICBjYXNlIEdMX0NPUFlfV1JJVEVfQlVGRkVSOiAgICAgICAgIHJldHVybiBtQ29weVdy
aXRlQnVmZmVyLmdldCgpOwotICAgICAgY2FzZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUjogICAg
ICByZXR1cm4gZ2V0VmVydGV4QXJyYXkoKS0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CisgICAg
ICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOiAgICAgIHJldHVybiBnZXRWZXJ0ZXhBcnJh
eSgpLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKICAgICAgIGNhc2UgR0xfUElYRUxf
UEFDS19CVUZGRVI6ICAgICAgICAgcmV0dXJuIG1QYWNrLnBpeGVsQnVmZmVyLmdldCgpOwogICAg
ICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSOiAgICAgICByZXR1cm4gbVVucGFjay5waXhl
bEJ1ZmZlci5nZXQoKTsKICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjog
cmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFjay0+Z2V0R2VuZXJpY0J1ZmZlcigpLmdldCgpOwpAQCAt
OTk2LDM1ICsxMDg0LDc0IEBACiAgICAgfQogfQogCit2b2lkIFN0YXRlOjpkZXRhY2hCdWZmZXIo
R0x1aW50IGJ1ZmZlck5hbWUpCit7CisgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiAqYnVmZmVy
c1tdID0geyZtQXJyYXlCdWZmZXIsICAgICAgICAmbUNvcHlSZWFkQnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbUNvcHlXcml0ZUJ1ZmZlciwgICAgJm1Q
YWNrLnBpeGVsQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbVVucGFjay5waXhlbEJ1ZmZlciwgJm1HZW5lcmljVW5pZm9ybUJ1ZmZlcn07CisgICAgZm9y
IChhdXRvIGJ1ZmZlciA6IGJ1ZmZlcnMpCisgICAgeworICAgICAgICBpZiAoYnVmZmVyLT5pZCgp
ID09IGJ1ZmZlck5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+c2V0KG51bGxw
dHIpOworICAgICAgICB9CisgICAgfQorCisgICAgVHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5z
Zm9ybUZlZWRiYWNrID0gZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgaWYgKGN1
clRyYW5zZm9ybUZlZWRiYWNrKQorICAgIHsKKyAgICAgICAgY3VyVHJhbnNmb3JtRmVlZGJhY2st
PmRldGFjaEJ1ZmZlcihidWZmZXJOYW1lKTsKKyAgICB9CisKKyAgICBnZXRWZXJ0ZXhBcnJheSgp
LT5kZXRhY2hCdWZmZXIoYnVmZmVyTmFtZSk7Cit9CisKIHZvaWQgU3RhdGU6OnNldEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIGJvb2wgZW5hYmxlZCkKIHsK
ICAgICBnZXRWZXJ0ZXhBcnJheSgpLT5lbmFibGVBdHRyaWJ1dGUoYXR0cmliTnVtLCBlbmFibGVk
KTsKKyAgICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKIH0K
IAogdm9pZCBTdGF0ZTo6c2V0VmVydGV4QXR0cmliZihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxv
YXQgdmFsdWVzWzRdKQogewogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8
IG1WZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVzLnNpemUoKSk7CiAgICAgbVZlcnRleEF0dHJpYkN1
cnJlbnRWYWx1ZXNbaW5kZXhdLnNldEZsb2F0VmFsdWVzKHZhbHVlcyk7CisgICAgbURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX0NVUlJFTlRfVkFMVUVfMCArIGluZGV4KTsKIH0KIAogdm9pZCBTdGF0
ZTo6c2V0VmVydGV4QXR0cmlidShHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCB2YWx1ZXNbNF0p
CiB7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVZlcnRleEF0dHJp
YkN1cnJlbnRWYWx1ZXMuc2l6ZSgpKTsKICAgICBtVmVydGV4QXR0cmliQ3VycmVudFZhbHVlc1tp
bmRleF0uc2V0VW5zaWduZWRJbnRWYWx1ZXModmFsdWVzKTsKKyAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfQ1VSUkVOVF9WQUxVRV8wICsgaW5kZXgpOwogfQogCiB2b2lkIFN0YXRlOjpzZXRW
ZXJ0ZXhBdHRyaWJpKEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgdmFsdWVzWzRdKQogewogICAg
IEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1WZXJ0ZXhBdHRyaWJDdXJyZW50
VmFsdWVzLnNpemUoKSk7CiAgICAgbVZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLnNl
dEludFZhbHVlcyh2YWx1ZXMpOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DVVJSRU5U
X1ZBTFVFXzAgKyBpbmRleCk7CiB9CiAKLXZvaWQgU3RhdGU6OnNldFZlcnRleEF0dHJpYlN0YXRl
KHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIEJ1ZmZlciAqYm91bmRCdWZmZXIsIEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLCBib29sIG5vcm1hbGl6ZWQsCi0gICAgYm9vbCBwdXJlSW50ZWdlciwgR0xz
aXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpCit2b2lkIFN0YXRlOjpzZXRWZXJ0ZXhB
dHRyaWJTdGF0ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVyICpib3VuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFs
aXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVyZUludGVnZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7CiAgICAg
Z2V0VmVydGV4QXJyYXkoKS0+c2V0QXR0cmlidXRlU3RhdGUoYXR0cmliTnVtLCBib3VuZEJ1ZmZl
ciwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgcHVyZUludGVnZXIsIHN0cmlkZSwgcG9pbnRlcik7
CisgICAgbURpcnR5T2JqZWN0cy5zZXQoRElSVFlfT0JKRUNUX1ZFUlRFWF9BUlJBWSk7CiB9CiAK
K3ZvaWQgU3RhdGU6OnNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0x1aW50IGluZGV4LCBHTHVpbnQg
ZGl2aXNvcikKK3sKKyAgICBnZXRWZXJ0ZXhBcnJheSgpLT5zZXRWZXJ0ZXhBdHRyaWJEaXZpc29y
KGluZGV4LCBkaXZpc29yKTsKKyAgICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVS
VEVYX0FSUkFZKTsKK30KKwogY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmU3Rh
dGU6OmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKSBj
b25zdAogewogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYk51bSkgPCBtVmVy
dGV4QXR0cmliQ3VycmVudFZhbHVlcy5zaXplKCkpOwpAQCAtMTAzOSw2ICsxMTY2LDcgQEAKIHZv
aWQgU3RhdGU6OnNldFBhY2tBbGlnbm1lbnQoR0xpbnQgYWxpZ25tZW50KQogewogICAgIG1QYWNr
LmFsaWdubWVudCA9IGFsaWdubWVudDsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfUEFD
S19BTElHTk1FTlQpOwogfQogCiBHTGludCBTdGF0ZTo6Z2V0UGFja0FsaWdubWVudCgpIGNvbnN0
CkBAIC0xMDQ5LDYgKzExNzcsNyBAQAogdm9pZCBTdGF0ZTo6c2V0UGFja1JldmVyc2VSb3dPcmRl
cihib29sIHJldmVyc2VSb3dPcmRlcikKIHsKICAgICBtUGFjay5yZXZlcnNlUm93T3JkZXIgPSBy
ZXZlcnNlUm93T3JkZXI7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1BBQ0tfUkVWRVJT
RV9ST1dfT1JERVIpOwogfQogCiBib29sIFN0YXRlOjpnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkg
Y29uc3QKQEAgLTEwNTYsNiArMTE4NSwzOSBAQAogICAgIHJldHVybiBtUGFjay5yZXZlcnNlUm93
T3JkZXI7CiB9CiAKK3ZvaWQgU3RhdGU6OnNldFBhY2tSb3dMZW5ndGgoR0xpbnQgcm93TGVuZ3Ro
KQoreworICAgIG1QYWNrLnJvd0xlbmd0aCA9IHJvd0xlbmd0aDsKKyAgICBtRGlydHlCaXRzLnNl
dChESVJUWV9CSVRfUEFDS19ST1dfTEVOR1RIKTsKK30KKworR0xpbnQgU3RhdGU6OmdldFBhY2tS
b3dMZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtUGFjay5yb3dMZW5ndGg7Cit9CisKK3Zv
aWQgU3RhdGU6OnNldFBhY2tTa2lwUm93cyhHTGludCBza2lwUm93cykKK3sKKyAgICBtUGFjay5z
a2lwUm93cyA9IHNraXBSb3dzOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9QQUNLX1NL
SVBfUk9XUyk7Cit9CisKK0dMaW50IFN0YXRlOjpnZXRQYWNrU2tpcFJvd3MoKSBjb25zdAorewor
ICAgIHJldHVybiBtUGFjay5za2lwUm93czsKK30KKwordm9pZCBTdGF0ZTo6c2V0UGFja1NraXBQ
aXhlbHMoR0xpbnQgc2tpcFBpeGVscykKK3sKKyAgICBtUGFjay5za2lwUGl4ZWxzID0gc2tpcFBp
eGVsczsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfUEFDS19TS0lQX1BJWEVMUyk7Cit9
CisKK0dMaW50IFN0YXRlOjpnZXRQYWNrU2tpcFBpeGVscygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1QYWNrLnNraXBQaXhlbHM7Cit9CisKIGNvbnN0IFBpeGVsUGFja1N0YXRlICZTdGF0ZTo6Z2V0
UGFja1N0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVBhY2s7CkBAIC0xMDY5LDYgKzEyMzEs
NyBAQAogdm9pZCBTdGF0ZTo6c2V0VW5wYWNrQWxpZ25tZW50KEdMaW50IGFsaWdubWVudCkKIHsK
ICAgICBtVW5wYWNrLmFsaWdubWVudCA9IGFsaWdubWVudDsKKyAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfVU5QQUNLX0FMSUdOTUVOVCk7CiB9CiAKIEdMaW50IFN0YXRlOjpnZXRVbnBhY2tB
bGlnbm1lbnQoKSBjb25zdApAQCAtMTA3OSw2ICsxMjQyLDcgQEAKIHZvaWQgU3RhdGU6OnNldFVu
cGFja1Jvd0xlbmd0aChHTGludCByb3dMZW5ndGgpCiB7CiAgICAgbVVucGFjay5yb3dMZW5ndGgg
PSByb3dMZW5ndGg7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1VOUEFDS19ST1dfTEVO
R1RIKTsKIH0KIAogR0xpbnQgU3RhdGU6OmdldFVucGFja1Jvd0xlbmd0aCgpIGNvbnN0CkBAIC0x
MDg2LDYgKzEyNTAsNTAgQEAKICAgICByZXR1cm4gbVVucGFjay5yb3dMZW5ndGg7CiB9CiAKK3Zv
aWQgU3RhdGU6OnNldFVucGFja0ltYWdlSGVpZ2h0KEdMaW50IGltYWdlSGVpZ2h0KQoreworICAg
IG1VbnBhY2suaW1hZ2VIZWlnaHQgPSBpbWFnZUhlaWdodDsKKyAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfVU5QQUNLX0lNQUdFX0hFSUdIVCk7Cit9CisKK0dMaW50IFN0YXRlOjpnZXRVbnBh
Y2tJbWFnZUhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1VbnBhY2suaW1hZ2VIZWlnaHQ7
Cit9CisKK3ZvaWQgU3RhdGU6OnNldFVucGFja1NraXBJbWFnZXMoR0xpbnQgc2tpcEltYWdlcykK
K3sKKyAgICBtVW5wYWNrLnNraXBJbWFnZXMgPSBza2lwSW1hZ2VzOworICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9VTlBBQ0tfU0tJUF9JTUFHRVMpOworfQorCitHTGludCBTdGF0ZTo6Z2V0
VW5wYWNrU2tpcEltYWdlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1VbnBhY2suc2tpcEltYWdl
czsKK30KKwordm9pZCBTdGF0ZTo6c2V0VW5wYWNrU2tpcFJvd3MoR0xpbnQgc2tpcFJvd3MpCit7
CisgICAgbVVucGFjay5za2lwUm93cyA9IHNraXBSb3dzOworICAgIG1EaXJ0eUJpdHMuc2V0KERJ
UlRZX0JJVF9VTlBBQ0tfU0tJUF9ST1dTKTsKK30KKworR0xpbnQgU3RhdGU6OmdldFVucGFja1Nr
aXBSb3dzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVucGFjay5za2lwUm93czsKK30KKwordm9p
ZCBTdGF0ZTo6c2V0VW5wYWNrU2tpcFBpeGVscyhHTGludCBza2lwUGl4ZWxzKQoreworICAgIG1V
bnBhY2suc2tpcFBpeGVscyA9IHNraXBQaXhlbHM7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlf
QklUX1VOUEFDS19TS0lQX1BJWEVMUyk7Cit9CisKK0dMaW50IFN0YXRlOjpnZXRVbnBhY2tTa2lw
UGl4ZWxzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVucGFjay5za2lwUGl4ZWxzOworfQorCiBj
b25zdCBQaXhlbFVucGFja1N0YXRlICZTdGF0ZTo6Z2V0VW5wYWNrU3RhdGUoKSBjb25zdAogewog
ICAgIHJldHVybiBtVW5wYWNrOwpAQCAtMTA5Niw2ICsxMzA0LDE2IEBACiAgICAgcmV0dXJuIG1V
bnBhY2s7CiB9CiAKK2NvbnN0IERlYnVnICZTdGF0ZTo6Z2V0RGVidWcoKSBjb25zdAoreworICAg
IHJldHVybiBtRGVidWc7Cit9CisKK0RlYnVnICZTdGF0ZTo6Z2V0RGVidWcoKQoreworICAgIHJl
dHVybiBtRGVidWc7Cit9CisKIHZvaWQgU3RhdGU6OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwg
R0xib29sZWFuICpwYXJhbXMpCiB7CiAgICAgc3dpdGNoIChwbmFtZSkKQEAgLTExMTksNiArMTMz
NywxOCBAQAogICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gbUJsZW5kLmRpdGhlcjsgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9U
UkFOU0ZPUk1fRkVFREJBQ0tfQUNUSVZFOiAqcGFyYW1zID0gZ2V0Q3VycmVudFRyYW5zZm9ybUZl
ZWRiYWNrKCktPmlzQWN0aXZlKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7IGJyZWFrOwogICAgICAg
Y2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUEFVU0VEOiAqcGFyYW1zID0gZ2V0Q3VycmVudFRy
YW5zZm9ybUZlZWRiYWNrKCktPmlzUGF1c2VkKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7IGJyZWFr
OworICAgICAgY2FzZSBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDoKKyAgICAgICAg
ICAqcGFyYW1zID0gbVByaW1pdGl2ZVJlc3RhcnQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1JBU1RFUklaRVJfRElTQ0FSRDoKKyAgICAgICAgICAqcGFyYW1zID0gaXNSYXN0ZXJp
emVyRGlzY2FyZEVuYWJsZWQoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTOgorICAgICAgICAgICpw
YXJhbXMgPSBtRGVidWcuaXNPdXRwdXRTeW5jaHJvbm91cygpID8gR0xfVFJVRSA6IEdMX0ZBTFNF
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERUJVR19PVVRQVVQ6CisgICAgICAg
ICAgKnBhcmFtcyA9IG1EZWJ1Zy5pc091dHB1dEVuYWJsZWQoKSA/IEdMX1RSVUUgOiBHTF9GQUxT
RTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE3OSw3ICsxNDA5LDcgQEAKICAgICBzd2l0Y2ggKHBu
YW1lKQogICAgIHsKICAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgICAgICAg
ICAgICAgICAgICAgKnBhcmFtcyA9IG1BcnJheUJ1ZmZlci5pZCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9C
SU5ESU5HOiAgICAgICAgICAgICAqcGFyYW1zID0gZ2V0VmVydGV4QXJyYXkoKS0+Z2V0RWxlbWVu
dEFycmF5QnVmZmVySWQoKTsgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgICpwYXJhbXMgPSBnZXRWZXJ0ZXhBcnJheSgpLT5n
ZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5pZCgpOyBicmVhazsKICAgICAgICAgLy9jYXNlIEdMX0ZS
QU1FQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgICAgICAgICAvLyBub3cgZXF1aXZhbGVudCB0
byBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEUKICAgICAgIGNhc2UgR0xfRFJBV19G
UkFNRUJVRkZFUl9CSU5ESU5HX0FOR0xFOiAgICAgICAgICAgKnBhcmFtcyA9IG1EcmF3RnJhbWVi
dWZmZXItPmlkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBH
TF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEU6ICAgICAgICAgICAqcGFyYW1zID0gbVJl
YWRGcmFtZWJ1ZmZlci0+aWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0x
MTg4LDExICsxNDE4LDM0IEBACiAgICAgICBjYXNlIEdMX0NVUlJFTlRfUFJPR1JBTTogICAgICAg
ICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtUHJvZ3JhbSA/IG1Qcm9ncmFtLT5pZCgpIDog
MDsgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1FTlQ6
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1QYWNrLmFsaWdubWVudDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9QQUNLX1JF
VkVSU0VfUk9XX09SREVSX0FOR0xFOiAgICAgICAgICAgICAqcGFyYW1zID0gbVBhY2sucmV2ZXJz
ZVJvd09yZGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X1BBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgICAqcGFyYW1zID0gbVBhY2sucm93TGVuZ3RoOwor
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKKyAgICAgICAg
ICAqcGFyYW1zID0gbVBhY2suc2tpcFJvd3M7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEdMX1BBQ0tfU0tJUF9QSVhFTFM6CisgICAgICAgICAgKnBhcmFtcyA9IG1QYWNrLnNraXBQaXhl
bHM7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSBtVW5wYWNrLmFsaWdubWVudDsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfVU5QQUNLX1JPV19M
RU5HVEg6ICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1VbnBhY2sucm93TGVuZ3Ro
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9VTlBB
Q0tfSU1BR0VfSEVJR0hUOgorICAgICAgICAgICpwYXJhbXMgPSBtVW5wYWNrLmltYWdlSGVpZ2h0
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9JTUFHRVM6Cisg
ICAgICAgICAgKnBhcmFtcyA9IG1VbnBhY2suc2tpcEltYWdlczsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUk9XUzoKKyAgICAgICAgICAqcGFyYW1zID0gbVVu
cGFjay5za2lwUm93czsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVU5QQUNLX1NL
SVBfUElYRUxTOgorICAgICAgICAgICpwYXJhbXMgPSBtVW5wYWNrLnNraXBQaXhlbHM7CisgICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UOiAgICAgICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBtR2VuZXJhdGVNaXBtYXBIaW50OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSX0RFUklW
QVRJVkVfSElOVF9PRVM6ICAgICAgKnBhcmFtcyA9IG1GcmFnbWVudFNoYWRlckRlcml2YXRpdmVI
aW50OyAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVS
RTogICAgICAgICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+
KG1BY3RpdmVTYW1wbGVyICsgR0xfVEVYVFVSRTApOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0FDVElWRV9URVhUVVJFOgorICAgICAgICAgICpwYXJhbXMgPSAoc3RhdGljX2Nhc3Q8R0xpbnQ+
KG1BY3RpdmVTYW1wbGVyKSArIEdMX1RFWFRVUkUwKTsKKyAgICAgICAgICBicmVhazsKICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IG1EZXB0aFN0ZW5jaWwuc3RlbmNpbEZ1bmM7ICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBHTF9TVEVOQ0lMX1JFRjogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqcGFyYW1zID0gbVN0ZW5jaWxSZWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1NURU5DSUxfVkFMVUVfTUFTSzogICAgICAgICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSBjbGFtcFRvSW50KG1EZXB0aFN0ZW5jaWwuc3RlbmNpbE1hc2sp
OyAgICAgICAgICBicmVhazsKQEAgLTEzMTYsMTEgKzE1NjksMTIgQEAKICAgICAgICAgYnJlYWs7
CiAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRDoKICAgICAgICAgQVNTRVJUKG1BY3Rp
dmVTYW1wbGVyIDwgbU1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwotICAgICAgICAqcGFy
YW1zID0gZ2V0U2FtcGxlclRleHR1cmVJZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BY3Rp
dmVTYW1wbGVyKSwgR0xfVEVYVFVSRV8yRCkgOworICAgICAgICAqcGFyYW1zID0gZ2V0U2FtcGxl
clRleHR1cmVJZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BY3RpdmVTYW1wbGVyKSwgR0xf
VEVYVFVSRV8yRCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJ
TkdfQ1VCRV9NQVA6CiAgICAgICAgIEFTU0VSVChtQWN0aXZlU2FtcGxlciA8IG1NYXhDb21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICAgICAgKnBhcmFtcyA9IGdldFNhbXBsZXJUZXh0dXJl
SWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQWN0aXZlU2FtcGxlciksIEdMX1RFWFRVUkVf
Q1VCRV9NQVApOworICAgICAgICAqcGFyYW1zID0KKyAgICAgICAgICAgIGdldFNhbXBsZXJUZXh0
dXJlSWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQWN0aXZlU2FtcGxlciksIEdMX1RFWFRV
UkVfQ1VCRV9NQVApOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5E
SU5HXzNEOgogICAgICAgICBBU1NFUlQobUFjdGl2ZVNhbXBsZXIgPCBtTWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyk7CkBAIC0xMzI4LDExICsxNTgyLDE1IEBACiAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJSQVk6CiAgICAgICAgIEFTU0VSVCht
QWN0aXZlU2FtcGxlciA8IG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICAgICAg
KnBhcmFtcyA9IGdldFNhbXBsZXJUZXh0dXJlSWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Piht
QWN0aXZlU2FtcGxlciksIEdMX1RFWFRVUkVfMkRfQVJSQVkpOworICAgICAgICAqcGFyYW1zID0K
KyAgICAgICAgICAgIGdldFNhbXBsZXJUZXh0dXJlSWQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
PihtQWN0aXZlU2FtcGxlciksIEdMX1RFWFRVUkVfMkRfQVJSQVkpOwogICAgICAgICBicmVhazsK
ICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVJfQklORElORzoKICAgICAgICAgKnBhcmFtcyA9
IG1HZW5lcmljVW5pZm9ybUJ1ZmZlci5pZCgpOwogICAgICAgICBicmVhazsKKyAgICAgIGNhc2Ug
R0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JJTkRJTkc6CisgICAgICAgICpwYXJhbXMgPSBtVHJhbnNm
b3JtRmVlZGJhY2suaWQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1RSQU5TRk9S
TV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKICAgICAgICAgKnBhcmFtcyA9IG1UcmFuc2Zvcm1G
ZWVkYmFjay0+Z2V0R2VuZXJpY0J1ZmZlcigpLmlkKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM0
OCwxMiArMTYwNiw0NCBAQAogICAgICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJ
Tkc6CiAgICAgICAgICpwYXJhbXMgPSBtVW5wYWNrLnBpeGVsQnVmZmVyLmlkKCk7CiAgICAgICAg
IGJyZWFrOworICAgICAgY2FzZSBHTF9SRUFEX0JVRkZFUjoKKyAgICAgICAgICAqcGFyYW1zID0g
bVJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVhZEJ1ZmZlclN0YXRlKCk7CisgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX1NBTVBMRVJfQklORElORzoKKyAgICAgICAgICBBU1NFUlQobUFjdGl2
ZVNhbXBsZXIgPCBtTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgICAgICAgKnBh
cmFtcyA9IGdldFNhbXBsZXJJZChzdGF0aWNfY2FzdDxHTHVpbnQ+KG1BY3RpdmVTYW1wbGVyKSk7
CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUzoK
KyAgICAgICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1EZWJ1Zy5nZXRNZXNzYWdl
Q291bnQoKSk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFQlVHX05FWFRfTE9H
R0VEX01FU1NBR0VfTEVOR1RIOgorICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGlu
dD4obURlYnVnLmdldE5leHRNZXNzYWdlTGVuZ3RoKCkpOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSDoKKyAgICAgICAgICAqcGFyYW1zID0g
c3RhdGljX2Nhc3Q8R0xpbnQ+KG1EZWJ1Zy5nZXRHcm91cFN0YWNrRGVwdGgoKSk7CisgICAgICAg
ICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CiAKK3ZvaWQgU3RhdGU6OmdldFBvaW50ZXJ2KEdMZW51bSBwbmFt
ZSwgdm9pZCAqKnBhcmFtcykgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9ERUJVR19DQUxMQkFDS19GVU5DVElPTjoKKyAgICAgICAgICAgICpwYXJh
bXMgPSByZWludGVycHJldF9jYXN0PHZvaWQgKj4obURlYnVnLmdldENhbGxiYWNrKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfREVCVUdfQ0FMTEJBQ0tfVVNFUl9QQVJB
TToKKyAgICAgICAgICAgICpwYXJhbXMgPSBjb25zdF9jYXN0PHZvaWQgKj4obURlYnVnLmdldFVz
ZXJQYXJhbSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogYm9v
bCBTdGF0ZTo6Z2V0SW5kZXhlZEludGVnZXJ2KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwg
R0xpbnQgKmRhdGEpCiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCkBAIC0xNDE4LDcgKzE3MDgsNyBA
QAogICAgIHsKICAgICAgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyA9IGdldFZlcnRleEFycmF5
KCk7CiAgICAgICAgIGNvbnN0IGF1dG8gJnZlcnRleEF0dHJpYnMgPSB2YW8tPmdldFZlcnRleEF0
dHJpYnV0ZXMoKTsKLSAgICAgICAgdW5zaWduZWQgaW50IG1heEVuYWJsZWRBdHRyaWIgPSB2YW8t
PmdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKTsKKyAgICAgICAgc2l6ZV90IG1heEVuYWJsZWRBdHRy
aWIgPSB2YW8tPmdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKTsKICAgICAgICAgZm9yIChzaXplX3Qg
YXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IG1heEVuYWJsZWRBdHRyaWI7IGF0dHJpYklu
ZGV4KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUg
JnZlcnRleEF0dHJpYiA9IHZlcnRleEF0dHJpYnNbYXR0cmliSW5kZXhdOwpAQCAtMTQzOCw0ICsx
NzI4LDkyIEBACiAgICAgfQogfQogCit2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3RzKCkKK3sK
KyAgICBpZiAoIW1EaXJ0eU9iamVjdHMuYW55KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN5
bmNEaXJ0eU9iamVjdHMobURpcnR5T2JqZWN0cyk7CiB9CisKK3ZvaWQgU3RhdGU6OnN5bmNEaXJ0
eU9iamVjdHMoY29uc3QgRGlydHlPYmplY3RzICZiaXRzZXQpCit7CisgICAgZm9yIChhdXRvIGRp
cnR5T2JqZWN0IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoYml0c2V0KSkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoZGlydHlPYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRElSVFlf
T0JKRUNUX1JFQURfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICAgICAgQVNTRVJUKG1SZWFkRnJh
bWVidWZmZXIpOworICAgICAgICAgICAgICAgIG1SZWFkRnJhbWVidWZmZXItPnN5bmNTdGF0ZSgp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJUWV9PQkpFQ1Rf
RFJBV19GUkFNRUJVRkZFUjoKKyAgICAgICAgICAgICAgICBBU1NFUlQobURyYXdGcmFtZWJ1ZmZl
cik7CisgICAgICAgICAgICAgICAgbURyYXdGcmFtZWJ1ZmZlci0+c3luY1N0YXRlKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERJUlRZX09CSkVDVF9WRVJURVhf
QVJSQVk6CisgICAgICAgICAgICAgICAgQVNTRVJUKG1WZXJ0ZXhBcnJheSk7CisgICAgICAgICAg
ICAgICAgbVZlcnRleEFycmF5LT5zeW5jSW1wbFN0YXRlKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIERJUlRZX09CSkVDVF9QUk9HUkFNOgorICAgICAgICAgICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IGltcGxlbWVudCB0aGlzCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtRGlydHlP
YmplY3RzICY9IH5iaXRzZXQ7Cit9CisKK3ZvaWQgU3RhdGU6OnN5bmNEaXJ0eU9iamVjdChHTGVu
dW0gdGFyZ2V0KQoreworICAgIERpcnR5T2JqZWN0cyBsb2NhbFNldDsKKworICAgIHN3aXRjaCAo
dGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSOgorICAgICAg
ICAgICAgbG9jYWxTZXQuc2V0KERJUlRZX09CSkVDVF9SRUFEX0ZSQU1FQlVGRkVSKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0RSQVdfRlJBTUVCVUZGRVI6CisgICAgICAg
ICAgICBsb2NhbFNldC5zZXQoRElSVFlfT0JKRUNUX0RSQVdfRlJBTUVCVUZGRVIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICBs
b2NhbFNldC5zZXQoRElSVFlfT0JKRUNUX1JFQURfRlJBTUVCVUZGRVIpOworICAgICAgICAgICAg
bG9jYWxTZXQuc2V0KERJUlRZX09CSkVDVF9EUkFXX0ZSQU1FQlVGRkVSKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BUlJBWToKKyAgICAgICAgICAgIGxvY2Fs
U2V0LnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdMX1BST0dSQU06CisgICAgICAgICAgICBsb2NhbFNldC5zZXQoRElSVFlf
T0JKRUNUX1BST0dSQU0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3luY0Rp
cnR5T2JqZWN0cyhsb2NhbFNldCk7Cit9CisKK3ZvaWQgU3RhdGU6OnNldE9iamVjdERpcnR5KEdM
ZW51bSB0YXJnZXQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNl
IEdMX1JFQURfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICBtRGlydHlPYmplY3RzLnNldChESVJU
WV9PQkpFQ1RfUkVBRF9GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9EUkFXX0ZSQU1FQlVGRkVSOgorICAgICAgICAgICAgbURpcnR5T2JqZWN0cy5zZXQo
RElSVFlfT0JKRUNUX0RSQVdfRlJBTUVCVUZGRVIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICBtRGlydHlPYmplY3RzLnNldChE
SVJUWV9PQkpFQ1RfUkVBRF9GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBtRGlydHlPYmplY3Rz
LnNldChESVJUWV9PQkpFQ1RfRFJBV19GUkFNRUJVRkZFUik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9WRVJURVhfQVJSQVk6CisgICAgICAgICAgICBtRGlydHlPYmplY3Rz
LnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1BST0dSQU06CisgICAgICAgICAgICBtRGlydHlPYmplY3RzLnNldChESVJU
WV9PQkpFQ1RfUFJPR1JBTSk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBnbApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1N0YXRlLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05LDE1ICs5LDE5IEBACiAj
aWZuZGVmIExJQkFOR0xFX1NUQVRFX0hfCiAjZGVmaW5lIExJQkFOR0xFX1NUQVRFX0hfCiAKKyNp
bmNsdWRlIDxiaXRzZXQ+CisjaW5jbHVkZSA8bWVtb3J5PgorCiAjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhB
dHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9TYW1wbGVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
UHJvZ3JhbS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1NhbXBsZXIuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgi
CiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMjcsNyArMzEsNyBAQAogc3RydWN0IENhcHM7CiBzdHJ1
Y3QgRGF0YTsKIAotdHlwZWRlZiBzdGQ6Om1hcDwgR0xlbnVtLCBCaW5kaW5nUG9pbnRlcjxUZXh0
dXJlPiA+IFRleHR1cmVNYXA7Cit0eXBlZGVmIHN0ZDo6bWFwPEdMZW51bSwgQmluZGluZ1BvaW50
ZXI8VGV4dHVyZT4+IFRleHR1cmVNYXA7CiAKIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiB7CkBAIC0zNSw3ICszOSwxMCBAQAogICAgIFN0YXRlKCk7CiAgICAgflN0YXRlKCk7CiAK
LSAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgQ2FwcyYgY2FwcywgR0x1aW50IGNsaWVudFZlcnNp
b24pOworICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBDYXBzICZjYXBzLAorICAgICAgICAgICAg
ICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1Zyk7
CiAgICAgdm9pZCByZXNldCgpOwogCiAgICAgLy8gU3RhdGUgY2h1bmsgZ2V0dGVycwpAQCAtMTQy
LDYgKzE0OSw3IEBACiAgICAgdm9pZCBzZXRBY3RpdmVTYW1wbGVyKHVuc2lnbmVkIGludCBhY3Rp
dmUpOwogICAgIHVuc2lnbmVkIGludCBnZXRBY3RpdmVTYW1wbGVyKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTYW1wbGVyVGV4dHVyZShHTGVudW0gdHlwZSwgVGV4dHVyZSAqdGV4dHVyZSk7CisgICAg
VGV4dHVyZSAqZ2V0VGFyZ2V0VGV4dHVyZShHTGVudW0gdGFyZ2V0KSBjb25zdDsKICAgICBUZXh0
dXJlICpnZXRTYW1wbGVyVGV4dHVyZSh1bnNpZ25lZCBpbnQgc2FtcGxlciwgR0xlbnVtIHR5cGUp
IGNvbnN0OwogICAgIEdMdWludCBnZXRTYW1wbGVyVGV4dHVyZUlkKHVuc2lnbmVkIGludCBzYW1w
bGVyLCBHTGVudW0gdHlwZSkgY29uc3Q7CiAgICAgdm9pZCBkZXRhY2hUZXh0dXJlKGNvbnN0IFRl
eHR1cmVNYXAgJnplcm9UZXh0dXJlcywgR0x1aW50IHRleHR1cmUpOwpAQCAtMTg4LDYgKzE5Niw3
IEBACiAKICAgICAvLyBRdWVyeSBiaW5kaW5nIG1hbmlwdWxhdGlvbgogICAgIGJvb2wgaXNRdWVy
eUFjdGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaXNRdWVyeUFjdGl2ZShRdWVyeSAqcXVlcnkpIGNv
bnN0OwogICAgIHZvaWQgc2V0QWN0aXZlUXVlcnkoR0xlbnVtIHRhcmdldCwgUXVlcnkgKnF1ZXJ5
KTsKICAgICBHTHVpbnQgZ2V0QWN0aXZlUXVlcnlJZChHTGVudW0gdGFyZ2V0KSBjb25zdDsKICAg
ICBRdWVyeSAqZ2V0QWN0aXZlUXVlcnkoR0xlbnVtIHRhcmdldCkgY29uc3Q7CkBAIC0xOTYsMTUg
KzIwNSwxMSBAQAogICAgIC8vIEdMX0FSUkFZX0JVRkZFUgogICAgIHZvaWQgc2V0QXJyYXlCdWZm
ZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKTsKICAgICBHTHVpbnQgZ2V0QXJyYXlCdWZmZXJJZCgp
IGNvbnN0OwotICAgIGJvb2wgcmVtb3ZlQXJyYXlCdWZmZXJCaW5kaW5nKEdMdWludCBidWZmZXIp
OwogCiAgICAgLy8gR0xfVU5JRk9STV9CVUZGRVIgLSBCb3RoIGluZGV4ZWQgYW5kIGdlbmVyaWMg
dGFyZ2V0cwogICAgIHZvaWQgc2V0R2VuZXJpY1VuaWZvcm1CdWZmZXJCaW5kaW5nKEJ1ZmZlciAq
YnVmZmVyKTsKICAgICB2b2lkIHNldEluZGV4ZWRVbmlmb3JtQnVmZmVyQmluZGluZyhHTHVpbnQg
aW5kZXgsIEJ1ZmZlciAqYnVmZmVyLCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7
Ci0gICAgR0x1aW50IGdldEluZGV4ZWRVbmlmb3JtQnVmZmVySWQoR0x1aW50IGluZGV4KSBjb25z
dDsKLSAgICBCdWZmZXIgKmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKEdMdWludCBpbmRleCkgY29u
c3Q7Ci0gICAgR0xpbnRwdHIgZ2V0SW5kZXhlZFVuaWZvcm1CdWZmZXJPZmZzZXQoR0x1aW50IGlu
ZGV4KSBjb25zdDsKLSAgICBHTHNpemVpcHRyIGdldEluZGV4ZWRVbmlmb3JtQnVmZmVyU2l6ZShH
THVpbnQgaW5kZXgpIGNvbnN0OworICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZl
cj4gJmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICAv
LyBHTF9DT1BZX1tSRUFEL1dSSVRFXV9CVUZGRVIKICAgICB2b2lkIHNldENvcHlSZWFkQnVmZmVy
QmluZGluZyhCdWZmZXIgKmJ1ZmZlcik7CkBAIC0yMTYsNiArMjIxLDggQEAKIAogICAgIC8vIFJl
dHJpZXZlIHR5cGVkIGJ1ZmZlciBieSB0YXJnZXQgKG5vbi1pbmRleGVkKQogICAgIEJ1ZmZlciAq
Z2V0VGFyZ2V0QnVmZmVyKEdMZW51bSB0YXJnZXQpIGNvbnN0OworICAgIC8vIERldGFjaCBhIGJ1
ZmZlciBmcm9tIGFsbCBiaW5kaW5ncworICAgIHZvaWQgZGV0YWNoQnVmZmVyKEdMdWludCBidWZm
ZXJOYW1lKTsKIAogICAgIC8vIFZlcnRleCBhdHRyaWIgbWFuaXB1bGF0aW9uCiAgICAgdm9pZCBz
ZXRFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtLCBib29sIGVu
YWJsZWQpOwpAQCAtMjI0LDYgKzIzMSw3IEBACiAgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJpKEdM
dWludCBpbmRleCwgY29uc3QgR0xpbnQgdmFsdWVzWzRdKTsKICAgICB2b2lkIHNldFZlcnRleEF0
dHJpYlN0YXRlKHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIEJ1ZmZlciAqYm91bmRCdWZmZXIsIEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBub3JtYWxpemVkLCBib29sIHB1cmVJbnRlZ2VyLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9p
ZCAqcG9pbnRlcik7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRl
eCwgR0x1aW50IGRpdmlzb3IpOwogICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURh
dGEgJmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKSBj
b25zdDsKICAgICBjb25zdCB2b2lkICpnZXRWZXJ0ZXhBdHRyaWJQb2ludGVyKHVuc2lnbmVkIGlu
dCBhdHRyaWJOdW0pIGNvbnN0OwogCkBAIC0yMzIsNiArMjQwLDEyIEBACiAgICAgR0xpbnQgZ2V0
UGFja0FsaWdubWVudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0UGFja1JldmVyc2VSb3dPcmRlcihi
b29sIHJldmVyc2VSb3dPcmRlcik7CiAgICAgYm9vbCBnZXRQYWNrUmV2ZXJzZVJvd09yZGVyKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRQYWNrUm93TGVuZ3RoKEdMaW50IHJvd0xlbmd0aCk7CisgICAg
R0xpbnQgZ2V0UGFja1Jvd0xlbmd0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0UGFja1NraXBSb3dz
KEdMaW50IHNraXBSb3dzKTsKKyAgICBHTGludCBnZXRQYWNrU2tpcFJvd3MoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFBhY2tTa2lwUGl4ZWxzKEdMaW50IHNraXBQaXhlbHMpOworICAgIEdMaW50IGdl
dFBhY2tTa2lwUGl4ZWxzKCkgY29uc3Q7CiAgICAgY29uc3QgUGl4ZWxQYWNrU3RhdGUgJmdldFBh
Y2tTdGF0ZSgpIGNvbnN0OwogICAgIFBpeGVsUGFja1N0YXRlICZnZXRQYWNrU3RhdGUoKTsKIApA
QCAtMjQwLDE4ICsyNTQsMTE2IEBACiAgICAgR0xpbnQgZ2V0VW5wYWNrQWxpZ25tZW50KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRVbnBhY2tSb3dMZW5ndGgoR0xpbnQgcm93TGVuZ3RoKTsKICAgICBH
TGludCBnZXRVbnBhY2tSb3dMZW5ndGgoKSBjb25zdDsKKyAgICB2b2lkIHNldFVucGFja0ltYWdl
SGVpZ2h0KEdMaW50IGltYWdlSGVpZ2h0KTsKKyAgICBHTGludCBnZXRVbnBhY2tJbWFnZUhlaWdo
dCgpIGNvbnN0OworICAgIHZvaWQgc2V0VW5wYWNrU2tpcEltYWdlcyhHTGludCBza2lwSW1hZ2Vz
KTsKKyAgICBHTGludCBnZXRVbnBhY2tTa2lwSW1hZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRV
bnBhY2tTa2lwUm93cyhHTGludCBza2lwUm93cyk7CisgICAgR0xpbnQgZ2V0VW5wYWNrU2tpcFJv
d3MoKSBjb25zdDsKKyAgICB2b2lkIHNldFVucGFja1NraXBQaXhlbHMoR0xpbnQgc2tpcFBpeGVs
cyk7CisgICAgR0xpbnQgZ2V0VW5wYWNrU2tpcFBpeGVscygpIGNvbnN0OwogICAgIGNvbnN0IFBp
eGVsVW5wYWNrU3RhdGUgJmdldFVucGFja1N0YXRlKCkgY29uc3Q7CiAgICAgUGl4ZWxVbnBhY2tT
dGF0ZSAmZ2V0VW5wYWNrU3RhdGUoKTsKIAorICAgIC8vIERlYnVnIHN0YXRlCisgICAgY29uc3Qg
RGVidWcgJmdldERlYnVnKCkgY29uc3Q7CisgICAgRGVidWcgJmdldERlYnVnKCk7CisKICAgICAv
LyBTdGF0ZSBxdWVyeSBmdW5jdGlvbnMKICAgICB2b2lkIGdldEJvb2xlYW52KEdMZW51bSBwbmFt
ZSwgR0xib29sZWFuICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0RmxvYXR2KEdMZW51bSBwbmFtZSwg
R0xmbG9hdCAqcGFyYW1zKTsKICAgICB2b2lkIGdldEludGVnZXJ2KGNvbnN0IGdsOjpEYXRhICZk
YXRhLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0UG9pbnRlcnYo
R0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKSBjb25zdDsKICAgICBib29sIGdldEluZGV4ZWRJ
bnRlZ2VydihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKICAgICBi
b29sIGdldEluZGV4ZWRJbnRlZ2VyNjR2KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xp
bnQ2NCAqZGF0YSk7CiAKICAgICBib29sIGhhc01hcHBlZEJ1ZmZlcihHTGVudW0gdGFyZ2V0KSBj
b25zdDsKIAorICAgIGVudW0gRGlydHlCaXRUeXBlCisgICAgeworICAgICAgICBESVJUWV9CSVRf
U0NJU1NPUl9URVNUX0VOQUJMRUQsCisgICAgICAgIERJUlRZX0JJVF9TQ0lTU09SLAorICAgICAg
ICBESVJUWV9CSVRfVklFV1BPUlQsCisgICAgICAgIERJUlRZX0JJVF9ERVBUSF9SQU5HRSwKKyAg
ICAgICAgRElSVFlfQklUX0JMRU5EX0VOQUJMRUQsCisgICAgICAgIERJUlRZX0JJVF9CTEVORF9D
T0xPUiwKKyAgICAgICAgRElSVFlfQklUX0JMRU5EX0ZVTkNTLAorICAgICAgICBESVJUWV9CSVRf
QkxFTkRfRVFVQVRJT05TLAorICAgICAgICBESVJUWV9CSVRfQ09MT1JfTUFTSywKKyAgICAgICAg
RElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRV9FTkFCTEVELAorICAgICAgICBESVJU
WV9CSVRfU0FNUExFX0NPVkVSQUdFX0VOQUJMRUQsCisgICAgICAgIERJUlRZX0JJVF9TQU1QTEVf
Q09WRVJBR0UsCisgICAgICAgIERJUlRZX0JJVF9ERVBUSF9URVNUX0VOQUJMRUQsCisgICAgICAg
IERJUlRZX0JJVF9ERVBUSF9GVU5DLAorICAgICAgICBESVJUWV9CSVRfREVQVEhfTUFTSywKKyAg
ICAgICAgRElSVFlfQklUX1NURU5DSUxfVEVTVF9FTkFCTEVELAorICAgICAgICBESVJUWV9CSVRf
U1RFTkNJTF9GVU5DU19GUk9OVCwKKyAgICAgICAgRElSVFlfQklUX1NURU5DSUxfRlVOQ1NfQkFD
SywKKyAgICAgICAgRElSVFlfQklUX1NURU5DSUxfT1BTX0ZST05ULAorICAgICAgICBESVJUWV9C
SVRfU1RFTkNJTF9PUFNfQkFDSywKKyAgICAgICAgRElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNL
X0ZST05ULAorICAgICAgICBESVJUWV9CSVRfU1RFTkNJTF9XUklURU1BU0tfQkFDSywKKyAgICAg
ICAgRElSVFlfQklUX0NVTExfRkFDRV9FTkFCTEVELAorICAgICAgICBESVJUWV9CSVRfQ1VMTF9G
QUNFLAorICAgICAgICBESVJUWV9CSVRfRlJPTlRfRkFDRSwKKyAgICAgICAgRElSVFlfQklUX1BP
TFlHT05fT0ZGU0VUX0ZJTExfRU5BQkxFRCwKKyAgICAgICAgRElSVFlfQklUX1BPTFlHT05fT0ZG
U0VULAorICAgICAgICBESVJUWV9CSVRfUkFTVEVSSVpFUl9ESVNDQVJEX0VOQUJMRUQsCisgICAg
ICAgIERJUlRZX0JJVF9MSU5FX1dJRFRILAorICAgICAgICBESVJUWV9CSVRfUFJJTUlUSVZFX1JF
U1RBUlRfRU5BQkxFRCwKKyAgICAgICAgRElSVFlfQklUX0NMRUFSX0NPTE9SLAorICAgICAgICBE
SVJUWV9CSVRfQ0xFQVJfREVQVEgsCisgICAgICAgIERJUlRZX0JJVF9DTEVBUl9TVEVOQ0lMLAor
ICAgICAgICBESVJUWV9CSVRfVU5QQUNLX0FMSUdOTUVOVCwKKyAgICAgICAgRElSVFlfQklUX1VO
UEFDS19ST1dfTEVOR1RILAorICAgICAgICBESVJUWV9CSVRfVU5QQUNLX0lNQUdFX0hFSUdIVCwK
KyAgICAgICAgRElSVFlfQklUX1VOUEFDS19TS0lQX0lNQUdFUywKKyAgICAgICAgRElSVFlfQklU
X1VOUEFDS19TS0lQX1JPV1MsCisgICAgICAgIERJUlRZX0JJVF9VTlBBQ0tfU0tJUF9QSVhFTFMs
CisgICAgICAgIERJUlRZX0JJVF9QQUNLX0FMSUdOTUVOVCwKKyAgICAgICAgRElSVFlfQklUX1BB
Q0tfUkVWRVJTRV9ST1dfT1JERVIsCisgICAgICAgIERJUlRZX0JJVF9QQUNLX1JPV19MRU5HVEgs
CisgICAgICAgIERJUlRZX0JJVF9QQUNLX1NLSVBfUk9XUywKKyAgICAgICAgRElSVFlfQklUX1BB
Q0tfU0tJUF9QSVhFTFMsCisgICAgICAgIERJUlRZX0JJVF9ESVRIRVJfRU5BQkxFRCwKKyAgICAg
ICAgRElSVFlfQklUX0dFTkVSQVRFX01JUE1BUF9ISU5ULAorICAgICAgICBESVJUWV9CSVRfU0hB
REVSX0RFUklWQVRJVkVfSElOVCwKKyAgICAgICAgRElSVFlfQklUX1JFQURfRlJBTUVCVUZGRVJf
QklORElORywKKyAgICAgICAgRElSVFlfQklUX0RSQVdfRlJBTUVCVUZGRVJfQklORElORywKKyAg
ICAgICAgRElSVFlfQklUX1JFTkRFUkJVRkZFUl9CSU5ESU5HLAorICAgICAgICBESVJUWV9CSVRf
VkVSVEVYX0FSUkFZX0JJTkRJTkcsCisgICAgICAgIERJUlRZX0JJVF9QUk9HUkFNX0JJTkRJTkcs
CisgICAgICAgIERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAsCisgICAgICAgIERJUlRZX0JJVF9D
VVJSRU5UX1ZBTFVFX01BWCA9IERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAgKyBNQVhfVkVSVEVY
X0FUVFJJQlMsCisgICAgICAgIERJUlRZX0JJVF9JTlZBTElEICAgICAgICAgICA9IERJUlRZX0JJ
VF9DVVJSRU5UX1ZBTFVFX01BWCwKKyAgICAgICAgRElSVFlfQklUX01BWCAgICAgICAgICAgICAg
ID0gRElSVFlfQklUX0lOVkFMSUQsCisgICAgfTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IENv
bnNpZGVyIHN0b3JpbmcgZGlydHkgb2JqZWN0cyBpbiBhIGxpc3QgaW5zdGVhZCBvZiBieSBiaW5k
aW5nLgorICAgIGVudW0gRGlydHlPYmplY3RUeXBlCisgICAgeworICAgICAgICBESVJUWV9PQkpF
Q1RfUkVBRF9GUkFNRUJVRkZFUiwKKyAgICAgICAgRElSVFlfT0JKRUNUX0RSQVdfRlJBTUVCVUZG
RVIsCisgICAgICAgIERJUlRZX09CSkVDVF9WRVJURVhfQVJSQVksCisgICAgICAgIERJUlRZX09C
SkVDVF9QUk9HUkFNLAorICAgICAgICBESVJUWV9PQkpFQ1RfVU5LTk9XTiwKKyAgICAgICAgRElS
VFlfT0JKRUNUX01BWCA9IERJUlRZX09CSkVDVF9VTktOT1dOLAorICAgIH07CisKKyAgICB0eXBl
ZGVmIHN0ZDo6Yml0c2V0PERJUlRZX0JJVF9NQVg+IERpcnR5Qml0czsKKyAgICBjb25zdCBEaXJ0
eUJpdHMgJmdldERpcnR5Qml0cygpIGNvbnN0IHsgcmV0dXJuIG1EaXJ0eUJpdHM7IH0KKyAgICB2
b2lkIGNsZWFyRGlydHlCaXRzKCkgeyBtRGlydHlCaXRzLnJlc2V0KCk7IH0KKyAgICB2b2lkIGNs
ZWFyRGlydHlCaXRzKGNvbnN0IERpcnR5Qml0cyAmYml0c2V0KSB7IG1EaXJ0eUJpdHMgJj0gfmJp
dHNldDsgfQorICAgIHZvaWQgc2V0QWxsRGlydHlCaXRzKCkgeyBtRGlydHlCaXRzLnNldCgpOyB9
CisKKyAgICB0eXBlZGVmIHN0ZDo6Yml0c2V0PERJUlRZX09CSkVDVF9NQVg+IERpcnR5T2JqZWN0
czsKKyAgICB2b2lkIGNsZWFyRGlydHlPYmplY3RzKCkgeyBtRGlydHlPYmplY3RzLnJlc2V0KCk7
IH0KKyAgICB2b2lkIHNldEFsbERpcnR5T2JqZWN0cygpIHsgbURpcnR5T2JqZWN0cy5zZXQoKTsg
fQorICAgIHZvaWQgc3luY0RpcnR5T2JqZWN0cygpOworICAgIHZvaWQgc3luY0RpcnR5T2JqZWN0
cyhjb25zdCBEaXJ0eU9iamVjdHMgJmJpdHNldCk7CisgICAgdm9pZCBzeW5jRGlydHlPYmplY3Qo
R0xlbnVtIHRhcmdldCk7CisgICAgdm9pZCBzZXRPYmplY3REaXJ0eShHTGVudW0gdGFyZ2V0KTsK
KwogICBwcml2YXRlOgogICAgIC8vIENhY2hlZCB2YWx1ZXMgZnJvbSBDb250ZXh0J3MgY2Fwcwog
ICAgIEdMdWludCBtTWF4RHJhd0J1ZmZlcnM7CkBAIC0yOTcsMTggKzQwOSwxOCBAQAogICAgIC8v
IFRleHR1cmUgYW5kIHNhbXBsZXIgYmluZGluZ3MKICAgICBzaXplX3QgbUFjdGl2ZVNhbXBsZXI7
ICAgLy8gQWN0aXZlIHRleHR1cmUgdW5pdCBzZWxlY3RvciAtIEdMX1RFWFRVUkUwCiAKLSAgICB0
eXBlZGVmIHN0ZDo6dmVjdG9yPCBCaW5kaW5nUG9pbnRlcjxUZXh0dXJlPiA+IFRleHR1cmVCaW5k
aW5nVmVjdG9yOworICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8QmluZGluZ1BvaW50ZXI8VGV4dHVy
ZT4+IFRleHR1cmVCaW5kaW5nVmVjdG9yOwogICAgIHR5cGVkZWYgc3RkOjptYXA8R0xlbnVtLCBU
ZXh0dXJlQmluZGluZ1ZlY3Rvcj4gVGV4dHVyZUJpbmRpbmdNYXA7CiAgICAgVGV4dHVyZUJpbmRp
bmdNYXAgbVNhbXBsZXJUZXh0dXJlczsKIAotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8IEJpbmRp
bmdQb2ludGVyPFNhbXBsZXI+ID4gU2FtcGxlckJpbmRpbmdWZWN0b3I7CisgICAgdHlwZWRlZiBz
dGQ6OnZlY3RvcjxCaW5kaW5nUG9pbnRlcjxTYW1wbGVyPj4gU2FtcGxlckJpbmRpbmdWZWN0b3I7
CiAgICAgU2FtcGxlckJpbmRpbmdWZWN0b3IgbVNhbXBsZXJzOwogCi0gICAgdHlwZWRlZiBzdGQ6
Om1hcDwgR0xlbnVtLCBCaW5kaW5nUG9pbnRlcjxRdWVyeT4gPiBBY3RpdmVRdWVyeU1hcDsKKyAg
ICB0eXBlZGVmIHN0ZDo6bWFwPEdMZW51bSwgQmluZGluZ1BvaW50ZXI8UXVlcnk+PiBBY3RpdmVR
dWVyeU1hcDsKICAgICBBY3RpdmVRdWVyeU1hcCBtQWN0aXZlUXVlcmllczsKIAogICAgIEJpbmRp
bmdQb2ludGVyPEJ1ZmZlcj4gbUdlbmVyaWNVbmlmb3JtQnVmZmVyOwotICAgIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gPiBCdWZmZXJWZWN0b3I7Cisg
ICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+PiBCdWZm
ZXJWZWN0b3I7CiAgICAgQnVmZmVyVmVjdG9yIG1Vbmlmb3JtQnVmZmVyczsKIAogICAgIEJpbmRp
bmdQb2ludGVyPFRyYW5zZm9ybUZlZWRiYWNrPiBtVHJhbnNmb3JtRmVlZGJhY2s7CkBAIC0zMjAs
OSArNDMyLDE0IEBACiAgICAgUGl4ZWxQYWNrU3RhdGUgbVBhY2s7CiAKICAgICBib29sIG1Qcmlt
aXRpdmVSZXN0YXJ0OworCisgICAgRGVidWcgbURlYnVnOworCisgICAgRGlydHlCaXRzIG1EaXJ0
eUJpdHM7CisgICAgRGlydHlPYmplY3RzIG1EaXJ0eU9iamVjdHM7CiB9OwogCi19Cit9ICAvLyBu
YW1lc3BhY2UgZ2wKIAogI2VuZGlmIC8vIExJQkFOR0xFX1NUQVRFX0hfCiAKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdHJlYW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdHJlYW0uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN0cmVh
bS5jcHA6IEltcGxlbWVudHMgdGhlIGVnbDo6U3RyZWFtIGNsYXNzLCByZXByZXNlbnRpbmcgdGhl
IHN0cmVhbQorLy8gd2hlcmUgZnJhbWVzIGFyZSBzdHJlYW1lZCBpbi4gSW1wbGVtZW50cyBFR0xT
dHJlYW5LSFIuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKworI2luY2x1ZGUgPHBs
YXRmb3JtL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAi
Y29tbW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdHJl
YW1JbXBsLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKKworU3RyZWFtOjpTdHJlYW0ocng6OlN0cmVh
bUltcGwgKmltcGwsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicykKKyAgICA6IG1JbXBsZW1l
bnRhdGlvbihpbXBsKSwKKyAgICAgIG1TdGF0ZShFR0xfU1RSRUFNX1NUQVRFX0NSRUFURURfS0hS
KSwKKyAgICAgIG1Qcm9kdWNlckZyYW1lKDApLAorICAgICAgbUNvbnN1bWVyRnJhbWUoMCksCisg
ICAgICBtQ29uc3VtZXJMYXRlbmN5KHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdM
X0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIDApKSksCisgICAgICBtQ29uc3VtZXJBY3F1aXJl
VGltZW91dCgKKyAgICAgICAgICBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9D
T05TVU1FUl9BQ1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDApKSkKK3sKK30KKworU3RyZWFtOjp+
U3RyZWFtKCkKK3sKKyAgICBTYWZlRGVsZXRlKG1JbXBsZW1lbnRhdGlvbik7Cit9CisKK3ZvaWQg
U3RyZWFtOjpzZXRDb25zdW1lckxhdGVuY3koRUdMaW50IGxhdGVuY3kpCit7CisgICAgbUNvbnN1
bWVyTGF0ZW5jeSA9IGxhdGVuY3k7Cit9CisKK0VHTGludCBTdHJlYW06OmdldENvbnN1bWVyTGF0
ZW5jeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Db25zdW1lckxhdGVuY3k7Cit9CisKK0VHTHVp
bnQ2NEtIUiBTdHJlYW06OmdldFByb2R1Y2VyRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBt
UHJvZHVjZXJGcmFtZTsKK30KKworRUdMdWludDY0S0hSIFN0cmVhbTo6Z2V0Q29uc3VtZXJGcmFt
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Db25zdW1lckZyYW1lOworfQorCitFR0xlbnVtIFN0
cmVhbTo6Z2V0U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGU7Cit9CisKK3ZvaWQg
U3RyZWFtOjpzZXRDb25zdW1lckFjcXVpcmVUaW1lb3V0KEVHTGludCB0aW1lb3V0KQoreworICAg
IG1Db25zdW1lckFjcXVpcmVUaW1lb3V0ID0gdGltZW91dDsKK30KKworRUdMaW50IFN0cmVhbTo6
Z2V0Q29uc3VtZXJBY3F1aXJlVGltZW91dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Db25zdW1l
ckFjcXVpcmVUaW1lb3V0OworfQorCit9ICAvLyBuYW1lc3BhY2UgZWdsCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RyZWFtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0cmVhbS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0cmVhbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdHJlYW0uaDogRGVm
aW5lcyB0aGUgZWdsOjpTdHJlYW0gY2xhc3MsIHJlcHJlc2VudGluZyB0aGUgc3RyZWFtCisvLyB3
aGVyZSBmcmFtZXMgYXJlIHN0cmVhbWVkIGluLiBJbXBsZW1lbnRzIEVHTFN0cmVhbktIUi4KKwor
I2lmbmRlZiBMSUJBTkdMRV9TVFJFQU1fSF8KKyNkZWZpbmUgTElCQU5HTEVfU1RSRUFNX0hfCisK
KyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAu
aCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFzcyBTdHJlYW1JbXBsOworfQorCituYW1lc3BhY2Ug
ZWdsCit7CisKK2NsYXNzIFN0cmVhbSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBw
dWJsaWM6CisgICAgU3RyZWFtKHJ4OjpTdHJlYW1JbXBsICppbXBsLCBjb25zdCBBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpOworICAgIH5TdHJlYW0oKTsKKworICAgIEVHTGVudW0gZ2V0U3RhdGUoKSBj
b25zdDsKKworICAgIHZvaWQgc2V0Q29uc3VtZXJMYXRlbmN5KEVHTGludCBsYXRlbmN5KTsKKyAg
ICBFR0xpbnQgZ2V0Q29uc3VtZXJMYXRlbmN5KCkgY29uc3Q7CisKKyAgICBFR0x1aW50NjRLSFIg
Z2V0UHJvZHVjZXJGcmFtZSgpIGNvbnN0OworICAgIEVHTHVpbnQ2NEtIUiBnZXRDb25zdW1lckZy
YW1lKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENvbnN1bWVyQWNxdWlyZVRpbWVvdXQoRUdMaW50
IHRpbWVvdXQpOworICAgIEVHTGludCBnZXRDb25zdW1lckFjcXVpcmVUaW1lb3V0KCkgY29uc3Q7
CisKKyAgcHJpdmF0ZToKKyAgICAvLyBJbXBsZW1lbnRhdGlvbgorICAgIHJ4OjpTdHJlYW1JbXBs
ICptSW1wbGVtZW50YXRpb247CisKKyAgICAvLyBFR0wgZGVmaW5lZCBhdHRyaWJ1dGVzCisgICAg
RUdMaW50IG1TdGF0ZTsKKyAgICBFR0x1aW50NjRLSFIgbVByb2R1Y2VyRnJhbWU7CisgICAgRUdM
dWludDY0S0hSIG1Db25zdW1lckZyYW1lOworICAgIEVHTGludCBtQ29uc3VtZXJMYXRlbmN5Owor
CisgICAgLy8gRUdMIGdsdGV4dHVyZSBjb25zdW1lciBhdHRyaWJ1dGVzCisgICAgRUdMaW50IG1D
b25zdW1lckFjcXVpcmVUaW1lb3V0OworfTsKK30gIC8vIG5hbWVzcGFjZSBlZ2wKKworI2VuZGlm
ICAvLyBMSUJBTkdMRV9TVFJFQU1fSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9TdXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTEsMTYgKzExLDI1IEBACiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogCiAj
aW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZm
ZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCiAKICNpbmNsdWRlIDxFR0wvZWds
ZXh0Lmg+CiAKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKwogbmFtZXNwYWNlIGVnbAogewogCi1TdXJm
YWNlOjpTdXJmYWNlKHJ4OjpTdXJmYWNlSW1wbCAqaW1wbCwgRUdMaW50IHN1cmZhY2VUeXBlLCBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMp
Ci0gICAgOiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QoMCksIC8vIGlkIHVudXNlZAorU3Vy
ZmFjZTo6U3VyZmFjZShyeDo6U3VyZmFjZUltcGwgKmltcGwsCisgICAgICAgICAgICAgICAgIEVH
TGludCBzdXJmYWNlVHlwZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZywKKyAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzKQor
ICAgIDogRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0KCksCiAgICAgICBtSW1wbGVtZW50YXRp
b24oaW1wbCksCisgICAgICBtRGVmYXVsdEZyYW1lYnVmZmVyKG51bGxwdHIpLAorICAgICAgbUN1
cnJlbnRDb3VudCgwKSwKKyAgICAgIG1EZXN0cm95ZWQoZmFsc2UpLAogICAgICAgbVR5cGUoc3Vy
ZmFjZVR5cGUpLAogICAgICAgbUNvbmZpZyhjb25maWcpLAogICAgICAgbVBvc3RTdWJCdWZmZXJS
ZXF1ZXN0ZWQoZmFsc2UpLApAQCAtMzIsNDIgKzQxLDc3IEBACiAgICAgICAvLyBGSVhNRTogRGV0
ZXJtaW5lIGFjdHVhbCBwaXhlbCBhc3BlY3QgcmF0aW8KICAgICAgIG1QaXhlbEFzcGVjdFJhdGlv
KHN0YXRpY19jYXN0PEVHTGludD4oMS4wICogRUdMX0RJU1BMQVlfU0NBTElORykpLAogICAgICAg
bVJlbmRlckJ1ZmZlcihFR0xfQkFDS19CVUZGRVIpLAotICAgICAgbVN3YXBCZWhhdmlvcihFR0xf
QlVGRkVSX1BSRVNFUlZFRCksCi0gICAgICBtVGV4dHVyZShOVUxMKQorICAgICAgbVN3YXBCZWhh
dmlvcihpbXBsLT5nZXRTd2FwQmVoYXZpb3IoKSksCisgICAgICBtT3JpZW50YXRpb24oMCksCisg
ICAgICBtVGV4dHVyZSgpCiB7Ci0gICAgYWRkUmVmKCk7Ci0KICAgICBtUG9zdFN1YkJ1ZmZlclJl
cXVlc3RlZCA9IChhdHRyaWJ1dGVzLmdldChFR0xfUE9TVF9TVUJfQlVGRkVSX1NVUFBPUlRFRF9O
ViwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7CisgICAgbUZsZXhpYmxlU3VyZmFjZUNvbXBhdGli
aWxpdHlSZXF1ZXN0ZWQgPQorICAgICAgICAoYXR0cmlidXRlcy5nZXQoRUdMX0ZMRVhJQkxFX1NV
UkZBQ0VfQ09NUEFUSUJJTElUWV9TVVBQT1JURURfQU5HTEUsIEVHTF9GQUxTRSkgPT0gRUdMX1RS
VUUpOwogCisgICAgbURpcmVjdENvbXBvc2l0aW9uID0gKGF0dHJpYnV0ZXMuZ2V0KEVHTF9ESVJF
Q1RfQ09NUE9TSVRJT05fQU5HTEUsIEVHTF9GQUxTRSkgPT0gRUdMX1RSVUUpOworCiAgICAgbUZp
eGVkU2l6ZSA9IChhdHRyaWJ1dGVzLmdldChFR0xfRklYRURfU0laRV9BTkdMRSwgRUdMX0ZBTFNF
KSA9PSBFR0xfVFJVRSk7CiAgICAgaWYgKG1GaXhlZFNpemUpCiAgICAgewotICAgICAgICBtRml4
ZWRXaWR0aCA9IGF0dHJpYnV0ZXMuZ2V0KEVHTF9XSURUSCwgMCk7Ci0gICAgICAgIG1GaXhlZEhl
aWdodCA9IGF0dHJpYnV0ZXMuZ2V0KEVHTF9IRUlHSFQsIDApOworICAgICAgICBtRml4ZWRXaWR0
aCAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYnV0ZXMuZ2V0KEVHTF9XSURUSCwgMCkpOwor
ICAgICAgICBtRml4ZWRIZWlnaHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYnV0ZXMuZ2V0
KEVHTF9IRUlHSFQsIDApKTsKICAgICB9CiAKICAgICBpZiAobVR5cGUgIT0gRUdMX1dJTkRPV19C
SVQpCiAgICAgewotICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IGF0dHJpYnV0ZXMuZ2V0KEVHTF9U
RVhUVVJFX0ZPUk1BVCwgRUdMX05PX1RFWFRVUkUpOwotICAgICAgICBtVGV4dHVyZVRhcmdldCA9
IGF0dHJpYnV0ZXMuZ2V0KEVHTF9URVhUVVJFX1RBUkdFVCwgRUdMX05PX1RFWFRVUkUpOworICAg
ICAgICBtVGV4dHVyZUZvcm1hdCA9IHN0YXRpY19jYXN0PEVHTGVudW0+KGF0dHJpYnV0ZXMuZ2V0
KEVHTF9URVhUVVJFX0ZPUk1BVCwgRUdMX05PX1RFWFRVUkUpKTsKKyAgICAgICAgbVRleHR1cmVU
YXJnZXQgPSBzdGF0aWNfY2FzdDxFR0xlbnVtPihhdHRyaWJ1dGVzLmdldChFR0xfVEVYVFVSRV9U
QVJHRVQsIEVHTF9OT19URVhUVVJFKSk7CiAgICAgfQorCisgICAgbU9yaWVudGF0aW9uID0gc3Rh
dGljX2Nhc3Q8RUdMaW50PihhdHRyaWJ1dGVzLmdldChFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9B
TkdMRSwgMCkpOworCisgICAgbURlZmF1bHRGcmFtZWJ1ZmZlciA9IGNyZWF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlcigpOworICAgIEFTU0VSVChtRGVmYXVsdEZyYW1lYnVmZmVyICE9IG51bGxwdHIpOwog
fQogCiBTdXJmYWNlOjp+U3VyZmFjZSgpCiB7Ci0gICAgaWYgKG1UZXh0dXJlKQorICAgIGlmICht
VGV4dHVyZS5nZXQoKSkKICAgICB7CiAgICAgICAgIGlmIChtSW1wbGVtZW50YXRpb24pCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+cmVsZWFzZVRleEltYWdlKEVHTF9C
QUNLX0JVRkZFUik7CiAgICAgICAgIH0KLSAgICAgICAgbVRleHR1cmUtPnJlbGVhc2VUZXhJbWFn
ZSgpOwotICAgICAgICBtVGV4dHVyZSA9IE5VTEw7CisgICAgICAgIG1UZXh0dXJlLT5yZWxlYXNl
VGV4SW1hZ2VGcm9tU3VyZmFjZSgpOworICAgICAgICBtVGV4dHVyZS5zZXQobnVsbHB0cik7CiAg
ICAgfQogCisgICAgU2FmZURlbGV0ZShtRGVmYXVsdEZyYW1lYnVmZmVyKTsKICAgICBTYWZlRGVs
ZXRlKG1JbXBsZW1lbnRhdGlvbik7CiB9CiAKK3ZvaWQgU3VyZmFjZTo6c2V0SXNDdXJyZW50KGJv
b2wgaXNDdXJyZW50KQoreworICAgIGlmIChpc0N1cnJlbnQpCisgICAgeworICAgICAgICBtQ3Vy
cmVudENvdW50Kys7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVChtQ3Vy
cmVudENvdW50ID4gMCk7CisgICAgICAgIG1DdXJyZW50Q291bnQtLTsKKyAgICAgICAgaWYgKG1D
dXJyZW50Q291bnQgPT0gMCAmJiBtRGVzdHJveWVkKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWxldGUgdGhpczsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTdXJmYWNlOjpvbkRlc3Ry
b3koKQoreworICAgIG1EZXN0cm95ZWQgPSB0cnVlOworICAgIGlmIChtQ3VycmVudENvdW50ID09
IDApCisgICAgeworICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9Cit9CisKIEVHTGludCBTdXJm
YWNlOjpnZXRUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVR5cGU7CkBAIC0xNDUsMjMgKzE4
OSwzMyBAQAogCiBFcnJvciBTdXJmYWNlOjpiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1
cmUsIEVHTGludCBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKCFtVGV4dHVyZSk7CisgICAgQVNTRVJU
KCFtVGV4dHVyZS5nZXQoKSk7CiAKLSAgICB0ZXh0dXJlLT5iaW5kVGV4SW1hZ2UodGhpcyk7Ci0g
ICAgbVRleHR1cmUgPSB0ZXh0dXJlOwotICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmJpbmRU
ZXhJbWFnZShidWZmZXIpOworICAgIHRleHR1cmUtPmJpbmRUZXhJbWFnZUZyb21TdXJmYWNlKHRo
aXMpOworICAgIG1UZXh0dXJlLnNldCh0ZXh0dXJlKTsKKyAgICByZXR1cm4gbUltcGxlbWVudGF0
aW9uLT5iaW5kVGV4SW1hZ2UodGV4dHVyZSwgYnVmZmVyKTsKIH0KIAogRXJyb3IgU3VyZmFjZTo6
cmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpCiB7Ci0gICAgQVNTRVJUKG1UZXh0dXJlKTsK
LSAgICBnbDo6VGV4dHVyZSAqYm91bmRUZXh0dXJlID0gbVRleHR1cmU7Ci0gICAgbVRleHR1cmUg
PSBOVUxMOworICAgIEFTU0VSVChtVGV4dHVyZS5nZXQoKSk7CisgICAgbVRleHR1cmUtPnJlbGVh
c2VUZXhJbWFnZUZyb21TdXJmYWNlKCk7CisgICAgbVRleHR1cmUuc2V0KG51bGxwdHIpOwogCi0g
ICAgYm91bmRUZXh0dXJlLT5yZWxlYXNlVGV4SW1hZ2UoKTsKICAgICByZXR1cm4gbUltcGxlbWVu
dGF0aW9uLT5yZWxlYXNlVGV4SW1hZ2UoYnVmZmVyKTsKIH0KIAordm9pZCBTdXJmYWNlOjpyZWxl
YXNlVGV4SW1hZ2VGcm9tVGV4dHVyZSgpCit7CisgICAgQVNTRVJUKG1UZXh0dXJlLmdldCgpKTsK
KyAgICBtVGV4dHVyZS5zZXQobnVsbHB0cik7Cit9CisKK2dsOjpFeHRlbnRzIFN1cmZhY2U6Omdl
dEF0dGFjaG1lbnRTaXplKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAm
IC8qdGFyZ2V0Ki8pIGNvbnN0Cit7CisgICAgcmV0dXJuIGdsOjpFeHRlbnRzKGdldFdpZHRoKCks
IGdldEhlaWdodCgpLCAxKTsKK30KKwogR0xlbnVtIFN1cmZhY2U6OmdldEF0dGFjaG1lbnRJbnRl
cm5hbEZvcm1hdChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdl
dCkgY29uc3QKIHsKICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnID0gZ2V0Q29uZmlnKCk7
CkBAIC0xNzMsNCArMjI3LDM1IEBACiAgICAgcmV0dXJuIGdldENvbmZpZygpLT5zYW1wbGVzOwog
fQogCitHTHVpbnQgU3VyZmFjZTo6Z2V0SWQoKSBjb25zdAoreworICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgcmV0dXJuIDA7CiB9CisKK2dsOjpGcmFtZWJ1ZmZlciAqU3VyZmFjZTo6Y3JlYXRlRGVm
YXVsdEZyYW1lYnVmZmVyKCkKK3sKKyAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0g
bmV3IGdsOjpGcmFtZWJ1ZmZlcihtSW1wbGVtZW50YXRpb24pOworCisgICAgR0xlbnVtIGRyYXdC
dWZmZXJTdGF0ZSA9IEdMX0JBQ0s7CisgICAgZnJhbWVidWZmZXItPnNldERyYXdCdWZmZXJzKDEs
ICZkcmF3QnVmZmVyU3RhdGUpOworICAgIGZyYW1lYnVmZmVyLT5zZXRSZWFkQnVmZmVyKEdMX0JB
Q0spOworCisgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQoR0xfRlJBTUVCVUZGRVJfREVG
QVVMVCwgR0xfQkFDSywgZ2w6OkltYWdlSW5kZXg6Ok1ha2VJbnZhbGlkKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisKKyAgICBpZiAobUNvbmZpZy0+ZGVwdGhTaXpl
ID4gMCkKKyAgICB7CisgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRBdHRhY2htZW50KEdMX0ZSQU1F
QlVGRkVSX0RFRkFVTFQsIEdMX0RFUFRILCBnbDo6SW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyk7CisgICAgfQorCisgICAg
aWYgKG1Db25maWctPnN0ZW5jaWxTaXplID4gMCkKKyAgICB7CisgICAgICAgIGZyYW1lYnVmZmVy
LT5zZXRBdHRhY2htZW50KEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQsIEdMX1NURU5DSUwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbWFnZUluZGV4OjpNYWtlSW52YWxp
ZCgpLCB0aGlzKTsKKyAgICB9CisKKyAgICByZXR1cm4gZnJhbWVidWZmZXI7Cit9Cit9CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlLmgJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9T
dXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEwICsxNiwxMiBAQAogI2luY2x1ZGUgImNv
bW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9S
ZWZDb3VudE9iamVjdC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBs
LmgiCiAKIG5hbWVzcGFjZSBnbAogeworY2xhc3MgRnJhbWVidWZmZXI7CiBjbGFzcyBUZXh0dXJl
OwogfQogCkBAIC00OCw2ICs1MCw4IEBACiAgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFs
KTsKKyAgICB2b2lkIHNldElzQ3VycmVudChib29sIGlzQ3VycmVudCk7CisgICAgdm9pZCBvbkRl
c3Ryb3koKTsKIAogICAgIGNvbnN0IENvbmZpZyAqZ2V0Q29uZmlnKCkgY29uc3Q7CiAKQEAgLTYw
LDMyICs2NCw1NiBAQAogICAgIEVHTGVudW0gZ2V0VGV4dHVyZUZvcm1hdCgpIGNvbnN0OwogICAg
IEVHTGVudW0gZ2V0VGV4dHVyZVRhcmdldCgpIGNvbnN0OwogCi0gICAgZ2w6OlRleHR1cmUgKmdl
dEJvdW5kVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlOyB9CisgICAgZ2w6OlRleHR1
cmUgKmdldEJvdW5kVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlLmdldCgpOyB9Cisg
ICAgZ2w6OkZyYW1lYnVmZmVyICpnZXREZWZhdWx0RnJhbWVidWZmZXIoKSB7IHJldHVybiBtRGVm
YXVsdEZyYW1lYnVmZmVyOyB9CiAKICAgICBFR0xpbnQgaXNGaXhlZFNpemUoKSBjb25zdDsKIAog
ICAgIC8vIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCBpbXBsZW1lbnRhdGlvbgotICAgIEdM
c2l6ZWkgZ2V0QXR0YWNobWVudFdpZHRoKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6
OlRhcmdldCAmLyp0YXJnZXQqLykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZ2V0V2lkdGgoKTsg
fQotICAgIEdMc2l6ZWkgZ2V0QXR0YWNobWVudEhlaWdodChjb25zdCBnbDo6RnJhbWVidWZmZXJB
dHRhY2htZW50OjpUYXJnZXQgJi8qdGFyZ2V0Ki8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGdl
dEhlaWdodCgpOyB9CisgICAgZ2w6OkV4dGVudHMgZ2V0QXR0YWNobWVudFNpemUoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEdMZW51bSBnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIEdMc2l6
ZWkgZ2V0QXR0YWNobWVudFNhbXBsZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6
VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBvbkF0dGFjaCgpIG92
ZXJyaWRlIHt9CisgICAgdm9pZCBvbkRldGFjaCgpIG92ZXJyaWRlIHt9CisgICAgR0x1aW50IGdl
dElkKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIGZsZXhpYmxlU3VyZmFjZUNvbXBhdGli
aWxpdHlSZXF1ZXN0ZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1GbGV4aWJsZVN1
cmZhY2VDb21wYXRpYmlsaXR5UmVxdWVzdGVkOworICAgIH0KKyAgICBFR0xpbnQgZ2V0T3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtT3JpZW50YXRpb247IH0KKworICAgIGJvb2wgZGlyZWN0
Q29tcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtRGlyZWN0Q29tcG9zaXRpb247IH0KKwogICBw
cml2YXRlOgogICAgIHZpcnR1YWwgflN1cmZhY2UoKTsKICAgICByeDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0SW1wbCAqZ2V0QXR0YWNobWVudEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtSW1wbGVtZW50YXRpb247IH0KIAorICAgIGdsOjpGcmFtZWJ1ZmZlciAqY3JlYXRlRGVm
YXVsdEZyYW1lYnVmZmVyKCk7CisKKyAgICAvLyBBTkdMRS1vbmx5IG1ldGhvZCwgdXNlZCBpbnRl
cm5hbGx5CisgICAgZnJpZW5kIGNsYXNzIGdsOjpUZXh0dXJlOworICAgIHZvaWQgcmVsZWFzZVRl
eEltYWdlRnJvbVRleHR1cmUoKTsKKwogICAgIHJ4OjpTdXJmYWNlSW1wbCAqbUltcGxlbWVudGF0
aW9uOworICAgIGdsOjpGcmFtZWJ1ZmZlciAqbURlZmF1bHRGcmFtZWJ1ZmZlcjsKKyAgICBpbnQg
bUN1cnJlbnRDb3VudDsKKyAgICBib29sIG1EZXN0cm95ZWQ7CiAKICAgICBFR0xpbnQgbVR5cGU7
CiAKICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZpZzsKIAogICAgIGJvb2wgbVBvc3RTdWJC
dWZmZXJSZXF1ZXN0ZWQ7CisgICAgYm9vbCBtRmxleGlibGVTdXJmYWNlQ29tcGF0aWJpbGl0eVJl
cXVlc3RlZDsKIAogICAgIGJvb2wgbUZpeGVkU2l6ZTsKICAgICBzaXplX3QgbUZpeGVkV2lkdGg7
CiAgICAgc2l6ZV90IG1GaXhlZEhlaWdodDsKIAorICAgIGJvb2wgbURpcmVjdENvbXBvc2l0aW9u
OworCiAgICAgRUdMZW51bSBtVGV4dHVyZUZvcm1hdDsKICAgICBFR0xlbnVtIG1UZXh0dXJlVGFy
Z2V0OwogCkBAIC05Myw3ICsxMjEsOSBAQAogICAgIEVHTGVudW0gbVJlbmRlckJ1ZmZlcjsgICAg
ICAgICAvLyBSZW5kZXIgYnVmZmVyCiAgICAgRUdMZW51bSBtU3dhcEJlaGF2aW9yOyAgICAgICAg
IC8vIEJ1ZmZlciBzd2FwIGJlaGF2aW9yCiAKLSAgICBnbDo6VGV4dHVyZSAqbVRleHR1cmU7Cisg
ICAgRUdMaW50IG1PcmllbnRhdGlvbjsKKworICAgIEJpbmRpbmdQb2ludGVyPGdsOjpUZXh0dXJl
PiBtVGV4dHVyZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9TdXJmYWNlX3VuaXR0ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZV91bml0dGVzdC5jcHAJKHJldmlzaW9uIDE5
OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlX3Vu
aXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNiwxMSArNiwxNyBAQAogCiAjaW5jbHVkZSAi
Z21vY2svZ21vY2suaCIKICNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21vY2suaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIgogCit1c2luZyBuYW1lc3Bh
Y2Ugcng7CisKIG5hbWVzcGFjZQogewogCkBAIC0yMCw0NyArMjYsMzggQEAKICAgICB2aXJ0dWFs
IH5Nb2NrU3VyZmFjZUltcGwoKSB7IGRlc3Ryb3koKTsgfQogCiAgICAgTU9DS19NRVRIT0QwKGlu
aXRpYWxpemUsIGVnbDo6RXJyb3IoKSk7CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZURlZmF1bHRG
cmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgcng6OkZyYW1lYnVmZmVySW1wbCAqKGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkpOwogICAgIE1PQ0tfTUVUSE9EMChzd2FwLCBl
Z2w6OkVycm9yKCkpOwogICAgIE1PQ0tfTUVUSE9ENChwb3N0U3ViQnVmZmVyLCBlZ2w6OkVycm9y
KEVHTGludCwgRUdMaW50LCBFR0xpbnQsIEVHTGludCkpOwogICAgIE1PQ0tfTUVUSE9EMihxdWVy
eVN1cmZhY2VQb2ludGVyQU5HTEUsIGVnbDo6RXJyb3IoRUdMaW50LCB2b2lkKiopKTsKLSAgICBN
T0NLX01FVEhPRDEoYmluZFRleEltYWdlLCBlZ2w6OkVycm9yKEVHTGludCkpOworICAgIE1PQ0tf
TUVUSE9EMihiaW5kVGV4SW1hZ2UsIGVnbDo6RXJyb3IoZ2w6OlRleHR1cmUqLCBFR0xpbnQpKTsK
ICAgICBNT0NLX01FVEhPRDEocmVsZWFzZVRleEltYWdlLCBlZ2w6OkVycm9yKEVHTGludCkpOwog
ICAgIE1PQ0tfTUVUSE9EMShzZXRTd2FwSW50ZXJ2YWwsIHZvaWQoRUdMaW50KSk7CiAgICAgTU9D
S19DT05TVF9NRVRIT0QwKGdldFdpZHRoLCBFR0xpbnQoKSk7CiAgICAgTU9DS19DT05TVF9NRVRI
T0QwKGdldEhlaWdodCwgRUdMaW50KCkpOwogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChpc1Bvc3RT
dWJCdWZmZXJTdXBwb3J0ZWQsIEVHTGludCh2b2lkKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Qw
KGdldFN3YXBCZWhhdmlvciwgRUdMaW50KHZvaWQpKTsKICAgICBNT0NLX01FVEhPRDIoZ2V0QXR0
YWNobWVudFJlbmRlclRhcmdldCwgZ2w6OkVycm9yKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OlRhcmdldCAmLCByeDo6RnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoq
KSk7CiAKICAgICBNT0NLX01FVEhPRDAoZGVzdHJveSwgdm9pZCgpKTsKIH07CiAKLWNsYXNzIFN1
cmZhY2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKK1RFU1QoU3VyZmFjZVRlc3QsIERlc3Ry
dWN0aW9uRGVsZXRlc0ltcGwpCiB7Ci0gIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0
VXAoKQotICAgIHsKLSAgICAgICAgbUltcGwgPSBuZXcgTW9ja1N1cmZhY2VJbXBsOwotICAgICAg
ICBFWFBFQ1RfQ0FMTCgqbUltcGwsIGRlc3Ryb3koKSk7Ci0gICAgICAgIG1TdXJmYWNlID0gbmV3
IGVnbDo6U3VyZmFjZShtSW1wbCwgRUdMX1dJTkRPV19CSVQsICZtQ29uZmlnLCBlZ2w6OkF0dHJp
YnV0ZU1hcCgpKTsKLSAgICB9CisgICAgTW9ja0ZyYW1lYnVmZmVySW1wbCAqZnJhbWVidWZmZXIg
PSBuZXcgTW9ja0ZyYW1lYnVmZmVySW1wbDsKIAotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
Ci0gICAgewotICAgICAgICBtU3VyZmFjZS0+cmVsZWFzZSgpOwotICAgIH0KKyAgICBNb2NrU3Vy
ZmFjZUltcGwgKmltcGwgPSBuZXcgTW9ja1N1cmZhY2VJbXBsOworICAgIEVYUEVDVF9DQUxMKCpp
bXBsLCBnZXRTd2FwQmVoYXZpb3IoKSk7CisgICAgRVhQRUNUX0NBTEwoKmltcGwsIGNyZWF0ZURl
ZmF1bHRGcmFtZWJ1ZmZlcih0ZXN0aW5nOjpfKSkuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKGZy
YW1lYnVmZmVyKSk7CiAKLSAgICBNb2NrU3VyZmFjZUltcGwgKm1JbXBsOwotICAgIGVnbDo6U3Vy
ZmFjZSAqbVN1cmZhY2U7Ci0gICAgZWdsOjpDb25maWcgbUNvbmZpZzsKLX07CisgICAgZWdsOjpD
b25maWcgY29uZmlnOworICAgIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBlZ2w6OlN1cmZh
Y2UoaW1wbCwgRUdMX1dJTkRPV19CSVQsICZjb25maWcsIGVnbDo6QXR0cmlidXRlTWFwKCkpOwog
Ci1URVNUX0YoU3VyZmFjZVRlc3QsIERlc3RydWN0aW9uRGVsZXRlc0ltcGwpCi17Ci0gICAgTW9j
a1N1cmZhY2VJbXBsICppbXBsID0gbmV3IE1vY2tTdXJmYWNlSW1wbDsKKyAgICBFWFBFQ1RfQ0FM
TCgqZnJhbWVidWZmZXIsIGRlc3Ryb3koKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigp
OwogICAgIEVYUEVDVF9DQUxMKCppbXBsLCBkZXN0cm95KCkpLlRpbWVzKDEpLlJldGlyZXNPblNh
dHVyYXRpb24oKTsKIAotICAgIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSA9IG5ldyBlZ2w6OlN1cmZh
Y2UoaW1wbCwgRUdMX1dJTkRPV19CSVQsICZtQ29uZmlnLCBlZ2w6OkF0dHJpYnV0ZU1hcCgpKTsK
LSAgICBzdXJmYWNlLT5yZWxlYXNlKCk7CisgICAgc3VyZmFjZS0+b25EZXN0cm95KCk7CiAKICAg
ICAvLyBPbmx5IG5lZWRlZCBiZWNhdXNlIHRoZSBtb2NrIGlzIGxlYWtlZCBpZiBidWdzIGFyZSBw
cmVzZW50LAogICAgIC8vIHdoaWNoIGxvZ3MgYW4gZXJyb3IsIGJ1dCBkb2VzIG5vdCBjYXVzZSB0
aGUgdGVzdCB0byBmYWlsLgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1RleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9UZXh0dXJlLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSw3ICsxMSw5IEBACiAjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAiY29t
bW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9EYXRhLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvSW1hZ2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKIApAQCAtNDUsMTQgKzQ3LDExIEBACiAgICAg
cmV0dXJuIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/ICgobGV2ZWwgKiA2KSArIEN1
YmVNYXBUZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4KHRhcmdldCkpIDogbGV2ZWw7CiB9CiAKLXVu
c2lnbmVkIGludCBUZXh0dXJlOjptQ3VycmVudFRleHR1cmVTZXJpYWwgPSAxOwotCiBUZXh0dXJl
OjpUZXh0dXJlKHJ4OjpUZXh0dXJlSW1wbCAqaW1wbCwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0
KQotICAgIDogRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0KGlkKSwKKyAgICA6IGVnbDo6SW1h
Z2VTaWJsaW5nKGlkKSwKICAgICAgIG1UZXh0dXJlKGltcGwpLAotICAgICAgbVRleHR1cmVTZXJp
YWwoaXNzdWVUZXh0dXJlU2VyaWFsKCkpLAotICAgICAgbVVzYWdlKEdMX05PTkUpLAotICAgICAg
bUltbXV0YWJsZUxldmVsQ291bnQoMCksCisgICAgICBtTGFiZWwoKSwKKyAgICAgIG1UZXh0dXJl
U3RhdGUoKSwKICAgICAgIG1UYXJnZXQodGFyZ2V0KSwKICAgICAgIG1JbWFnZURlc2NzKElNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyAqICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJF
X01BUCA/IDYgOiAxKSksCiAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUoKSwKQEAgLTcwLDIyICs2
OSwyMTIgQEAKICAgICBTYWZlRGVsZXRlKG1UZXh0dXJlKTsKIH0KIAordm9pZCBUZXh0dXJlOjpz
ZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpCit7CisgICAgbUxhYmVsID0gbGFiZWw7
Cit9CisKK2NvbnN0IHN0ZDo6c3RyaW5nICZUZXh0dXJlOjpnZXRMYWJlbCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1MYWJlbDsKK30KKwogR0xlbnVtIFRleHR1cmU6OmdldFRhcmdldCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1UYXJnZXQ7CiB9CiAKK3ZvaWQgVGV4dHVyZTo6c2V0U3dpenpsZVJl
ZChHTGVudW0gc3dpenpsZVJlZCkKK3sKKyAgICBtVGV4dHVyZVN0YXRlLnN3aXp6bGVSZWQgPSBz
d2l6emxlUmVkOworfQorCitHTGVudW0gVGV4dHVyZTo6Z2V0U3dpenpsZVJlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc3dpenpsZVJlZDsKK30KKwordm9pZCBUZXh0dXJl
OjpzZXRTd2l6emxlR3JlZW4oR0xlbnVtIHN3aXp6bGVHcmVlbikKK3sKKyAgICBtVGV4dHVyZVN0
YXRlLnN3aXp6bGVHcmVlbiA9IHN3aXp6bGVHcmVlbjsKK30KKworR0xlbnVtIFRleHR1cmU6Omdl
dFN3aXp6bGVHcmVlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc3dpenps
ZUdyZWVuOworfQorCit2b2lkIFRleHR1cmU6OnNldFN3aXp6bGVCbHVlKEdMZW51bSBzd2l6emxl
Qmx1ZSkKK3sKKyAgICBtVGV4dHVyZVN0YXRlLnN3aXp6bGVCbHVlID0gc3dpenpsZUJsdWU7Cit9
CisKK0dMZW51bSBUZXh0dXJlOjpnZXRTd2l6emxlQmx1ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1UZXh0dXJlU3RhdGUuc3dpenpsZUJsdWU7Cit9CisKK3ZvaWQgVGV4dHVyZTo6c2V0U3dpenps
ZUFscGhhKEdMZW51bSBzd2l6emxlQWxwaGEpCit7CisgICAgbVRleHR1cmVTdGF0ZS5zd2l6emxl
QWxwaGEgPSBzd2l6emxlQWxwaGE7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRTd2l6emxlQWxw
aGEoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnN3aXp6bGVBbHBoYTsKK30K
Kwordm9pZCBUZXh0dXJlOjpzZXRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlcikKK3sKKyAgICBt
VGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIgPSBtaW5GaWx0ZXI7Cit9CisKK0dM
ZW51bSBUZXh0dXJlOjpnZXRNaW5GaWx0ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVy
ZVN0YXRlLnNhbXBsZXJTdGF0ZS5taW5GaWx0ZXI7Cit9CisKK3ZvaWQgVGV4dHVyZTo6c2V0TWFn
RmlsdGVyKEdMZW51bSBtYWdGaWx0ZXIpCit7CisgICAgbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3Rh
dGUubWFnRmlsdGVyID0gbWFnRmlsdGVyOworfQorCitHTGVudW0gVGV4dHVyZTo6Z2V0TWFnRmls
dGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUubWFn
RmlsdGVyOworfQorCit2b2lkIFRleHR1cmU6OnNldFdyYXBTKEdMZW51bSB3cmFwUykKK3sKKyAg
ICBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS53cmFwUyA9IHdyYXBTOworfQorCitHTGVudW0g
VGV4dHVyZTo6Z2V0V3JhcFMoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNh
bXBsZXJTdGF0ZS53cmFwUzsKK30KKwordm9pZCBUZXh0dXJlOjpzZXRXcmFwVChHTGVudW0gd3Jh
cFQpCit7CisgICAgbVRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUud3JhcFQgPSB3cmFwVDsKK30K
KworR0xlbnVtIFRleHR1cmU6OmdldFdyYXBUKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRleHR1
cmVTdGF0ZS5zYW1wbGVyU3RhdGUud3JhcFQ7Cit9CisKK3ZvaWQgVGV4dHVyZTo6c2V0V3JhcFIo
R0xlbnVtIHdyYXBSKQoreworICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLndyYXBSID0g
d3JhcFI7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRXcmFwUigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLndyYXBSOworfQorCit2b2lkIFRleHR1cmU6
OnNldE1heEFuaXNvdHJvcHkoZmxvYXQgbWF4QW5pc290cm9weSkKK3sKKyAgICBtVGV4dHVyZVN0
YXRlLnNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5ID0gbWF4QW5pc290cm9weTsKK30KKworZmxv
YXQgVGV4dHVyZTo6Z2V0TWF4QW5pc290cm9weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1heEFuaXNvdHJvcHk7Cit9CisKK3ZvaWQgVGV4dHVyZTo6
c2V0TWluTG9kKEdMZmxvYXQgbWluTG9kKQoreworICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0
YXRlLm1pbkxvZCA9IG1pbkxvZDsKK30KKworR0xmbG9hdCBUZXh0dXJlOjpnZXRNaW5Mb2QoKSBj
b25zdAoreworICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5taW5Mb2Q7Cit9
CisKK3ZvaWQgVGV4dHVyZTo6c2V0TWF4TG9kKEdMZmxvYXQgbWF4TG9kKQoreworICAgIG1UZXh0
dXJlU3RhdGUuc2FtcGxlclN0YXRlLm1heExvZCA9IG1heExvZDsKK30KKworR0xmbG9hdCBUZXh0
dXJlOjpnZXRNYXhMb2QoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBs
ZXJTdGF0ZS5tYXhMb2Q7Cit9CisKK3ZvaWQgVGV4dHVyZTo6c2V0Q29tcGFyZU1vZGUoR0xlbnVt
IGNvbXBhcmVNb2RlKQoreworICAgIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLmNvbXBhcmVN
b2RlID0gY29tcGFyZU1vZGU7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRDb21wYXJlTW9kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLmNvbXBhcmVN
b2RlOworfQorCit2b2lkIFRleHR1cmU6OnNldENvbXBhcmVGdW5jKEdMZW51bSBjb21wYXJlRnVu
YykKK3sKKyAgICBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5jb21wYXJlRnVuYyA9IGNvbXBh
cmVGdW5jOworfQorCitHTGVudW0gVGV4dHVyZTo6Z2V0Q29tcGFyZUZ1bmMoKSBjb25zdAorewor
ICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZS5jb21wYXJlRnVuYzsKK30KKwor
Y29uc3QgU2FtcGxlclN0YXRlICZUZXh0dXJlOjpnZXRTYW1wbGVyU3RhdGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZTsKK30KKwordm9pZCBUZXh0dXJl
OjpzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkKK3sKKyAgICBtVGV4dHVyZVN0YXRlLmJh
c2VMZXZlbCA9IGJhc2VMZXZlbDsKK30KKworR0x1aW50IFRleHR1cmU6OmdldEJhc2VMZXZlbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUuYmFzZUxldmVsOworfQorCit2b2lk
IFRleHR1cmU6OnNldE1heExldmVsKEdMdWludCBtYXhMZXZlbCkKK3sKKyAgICBtVGV4dHVyZVN0
YXRlLm1heExldmVsID0gbWF4TGV2ZWw7Cit9CisKK0dMdWludCBUZXh0dXJlOjpnZXRNYXhMZXZl
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlU3RhdGUubWF4TGV2ZWw7Cit9CisKK2Jv
b2wgVGV4dHVyZTo6Z2V0SW1tdXRhYmxlRm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRl
eHR1cmVTdGF0ZS5pbW11dGFibGVGb3JtYXQ7Cit9CisKK0dMdWludCBUZXh0dXJlOjpnZXRJbW11
dGFibGVMZXZlbHMoKSBjb25zdAoreworICAgIHJldHVybiBtVGV4dHVyZVN0YXRlLmltbXV0YWJs
ZUxldmVsczsKK30KKwogdm9pZCBUZXh0dXJlOjpzZXRVc2FnZShHTGVudW0gdXNhZ2UpCiB7Ci0g
ICAgbVVzYWdlID0gdXNhZ2U7CisgICAgbVRleHR1cmVTdGF0ZS51c2FnZSA9IHVzYWdlOwogICAg
IGdldEltcGxlbWVudGF0aW9uKCktPnNldFVzYWdlKHVzYWdlKTsKIH0KIAogR0xlbnVtIFRleHR1
cmU6OmdldFVzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVVzYWdlOworICAgIHJldHVybiBt
VGV4dHVyZVN0YXRlLnVzYWdlOwogfQogCitjb25zdCBUZXh0dXJlU3RhdGUgJlRleHR1cmU6Omdl
dFRleHR1cmVTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJlU3RhdGU7Cit9CisK
IHNpemVfdCBUZXh0dXJlOjpnZXRXaWR0aChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFyZ2V0ID09IEdMX1RF
WFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CkBAIC0x
MTIsNyArMzAxLDcgQEAKIAogYm9vbCBUZXh0dXJlOjppc1NhbXBsZXJDb21wbGV0ZShjb25zdCBT
YW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwgY29uc3QgRGF0YSAmZGF0YSkgY29uc3QKIHsKLSAg
ICBjb25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2MgPSBnZXRJbWFnZURlc2MoZ2V0QmFzZUlt
YWdlVGFyZ2V0KCksIHNhbXBsZXJTdGF0ZS5iYXNlTGV2ZWwpOworICAgIGNvbnN0IEltYWdlRGVz
YyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwgbVRl
eHR1cmVTdGF0ZS5iYXNlTGV2ZWwpOwogICAgIGNvbnN0IFRleHR1cmVDYXBzICZ0ZXh0dXJlQ2Fw
cyA9IGRhdGEudGV4dHVyZUNhcHMtPmdldChiYXNlSW1hZ2VEZXNjLmludGVybmFsRm9ybWF0KTsK
ICAgICBpZiAoIW1Db21wbGV0ZW5lc3NDYWNoZS5jYWNoZVZhbGlkIHx8CiAgICAgICAgIG1Db21w
bGV0ZW5lc3NDYWNoZS5zYW1wbGVyU3RhdGUgIT0gc2FtcGxlclN0YXRlIHx8CkBAIC0xMzAsNiAr
MzE5LDExIEBACiAgICAgcmV0dXJuIG1Db21wbGV0ZW5lc3NDYWNoZS5zYW1wbGVyQ29tcGxldGU7
CiB9CiAKK2Jvb2wgVGV4dHVyZTo6aXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNvbXB1dGVNaXBtYXBDb21wbGV0ZW5lc3MoKTsKK30KKwogLy8gVGVzdHMgZm9yIGN1YmUg
dGV4dHVyZSBjb21wbGV0ZW5lc3MuIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDMuNy4xMCBw
YWdlIDgxLgogYm9vbCBUZXh0dXJlOjppc0N1YmVDb21wbGV0ZSgpIGNvbnN0CiB7CkBAIC0xNTUs
NzYgKzM0OSwxMDMgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdW5zaWduZWQgaW50IFRleHR1
cmU6OmdldFRleHR1cmVTZXJpYWwoKSBjb25zdAorc2l6ZV90IFRleHR1cmU6OmdldE1pcENvbXBs
ZXRlTGV2ZWxzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVRleHR1cmVTZXJpYWw7CisgICAgY29u
c3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRh
cmdldCgpLCAwKTsKKyAgICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFXzNEKQorICAgIHsKKyAg
ICAgICAgY29uc3QgaW50IG1heERpbSA9IHN0ZDo6bWF4KHN0ZDo6bWF4KGJhc2VJbWFnZURlc2Mu
c2l6ZS53aWR0aCwgYmFzZUltYWdlRGVzYy5zaXplLmhlaWdodCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlSW1hZ2VEZXNjLnNpemUuZGVwdGgpOworICAgICAgICBy
ZXR1cm4gbG9nMihtYXhEaW0pICsgMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGxvZzIoc3RkOjptYXgoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoLCBiYXNlSW1hZ2VE
ZXNjLnNpemUuaGVpZ2h0KSkgKyAxOworICAgIH0KIH0KIAotdW5zaWduZWQgaW50IFRleHR1cmU6
Omlzc3VlVGV4dHVyZVNlcmlhbCgpCitlZ2w6OlN1cmZhY2UgKlRleHR1cmU6OmdldEJvdW5kU3Vy
ZmFjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1DdXJyZW50VGV4dHVyZVNlcmlhbCsrOworICAg
IHJldHVybiBtQm91bmRTdXJmYWNlOwogfQogCi1ib29sIFRleHR1cmU6OmlzSW1tdXRhYmxlKCkg
Y29uc3QKK0Vycm9yIFRleHR1cmU6OnNldEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFja1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4
dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgcmV0dXJuIChtSW1tdXRhYmxlTGV2ZWxD
b3VudCA+IDApOwotfQorICAgIEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9
PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkp
OwogCi1pbnQgVGV4dHVyZTo6aW1tdXRhYmxlTGV2ZWxDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1J
bW11dGFibGVMZXZlbENvdW50OwotfQorICAgIC8vIFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxs
cyB0byBlZ2xCaW5kVGV4SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKKyAg
ICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOworICAgIG9ycGhhbkltYWdlcygpOwogCi1FcnJv
ciBUZXh0dXJlOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgY29uc3QgRXh0ZW50cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKLXsKLSAgICBBU1NFUlQodGFyZ2V0ID09IG1U
YXJnZXQgfHwgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0
dXJlVGFyZ2V0KHRhcmdldCkpKTsKLQotICAgIEVycm9yIGVycm9yID0gbVRleHR1cmUtPnNldElt
YWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBzaXplLCBmb3JtYXQsIHR5cGUsIHVu
cGFjaywgcGl4ZWxzKTsKKyAgICBFcnJvciBlcnJvciA9CisgICAgICAgIG1UZXh0dXJlLT5zZXRJ
bWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZm9ybWF0LCB0eXBlLCB1
bnBhY2tTdGF0ZSwgcGl4ZWxzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIHJlbGVhc2VUZXhJbWFnZSgpOwotCiAg
ICAgc2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwsIEltYWdlRGVzYyhzaXplLCBHZXRTaXplZElu
dGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0LCB0eXBlKSkpOwogCiAgICAgcmV0dXJuIEVycm9y
KEdMX05PX0VSUk9SKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRh
cmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitFcnJvciBUZXh0dXJlOjpzZXRTdWJJ
bWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3ggJmFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8
IChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdl
dCh0YXJnZXQpKSk7Ci0KLSAgICByZXR1cm4gbVRleHR1cmUtPnNldFN1YkltYWdlKHRhcmdldCwg
bGV2ZWwsIGFyZWEsIGZvcm1hdCwgdHlwZSwgdW5wYWNrLCBwaXhlbHMpOworICAgIHJldHVybiBt
VGV4dHVyZS0+c2V0U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBlLCB1
bnBhY2tTdGF0ZSwgcGl4ZWxzKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZElt
YWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBj
b25zdCBFeHRlbnRzICZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQorRXJy
b3IgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFja1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAg
IEFTU0VSVCh0YXJnZXQgPT0gbVRhcmdldCB8fCAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVf
TUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOwogCi0gICAgRXJyb3IgZXJy
b3IgPSBtVGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFs
Rm9ybWF0LCBzaXplLCB1bnBhY2ssIHBpeGVscyk7CisgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZp
b3VzIGNhbGxzIHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBh
ZnRlcgorICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CisgICAgb3JwaGFuSW1hZ2VzKCk7
CisKKyAgICBFcnJvciBlcnJvciA9IG1UZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UodGFyZ2V0
LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsIHVucGFja1N0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVNpemUsIHBpeGVscyk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICB9CiAKLSAgICByZWxlYXNlVGV4SW1hZ2UoKTsKLQogICAgIHNldEltYWdlRGVzYyh0YXJnZXQs
IGxldmVsLCBJbWFnZURlc2Moc2l6ZSwgR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZv
cm1hdCwgR0xfVU5TSUdORURfQllURSkpKTsKIAogICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJP
Uik7CiB9CiAKLUVycm9yIFRleHR1cmU6OnNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFy
Z2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IEJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK0Vycm9yIFRleHR1cmU6OnNldENvbXByZXNz
ZWRTdWJJbWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NFUlQodGFyZ2V0
ID09IG1UYXJnZXQgfHwgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVN
YXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKIAotICAgIHJldHVybiBtVGV4dHVyZS0+c2V0Q29t
cHJlc3NlZFN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwgdW5wYWNrLCBwaXhl
bHMpOworICAgIHJldHVybiBtVGV4dHVyZS0+c2V0Q29tcHJlc3NlZFN1YkltYWdlKHRhcmdldCwg
bGV2ZWwsIGFyZWEsIGZvcm1hdCwgdW5wYWNrU3RhdGUsIGltYWdlU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogfQogCiBFcnJvciBUZXh0
dXJlOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBSZWN0YW5n
bGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKQEAgLTIzMiwxNCArNDUzLDE2
IEBACiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtVGFyZ2V0IHx8IChtVGFyZ2V0ID09IEdMX1RF
WFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CiAKKyAg
ICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0byBh
dm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwo
KTsKKyAgICBvcnBoYW5JbWFnZXMoKTsKKwogICAgIEVycm9yIGVycm9yID0gbVRleHR1cmUtPmNv
cHlJbWFnZSh0YXJnZXQsIGxldmVsLCBzb3VyY2VBcmVhLCBpbnRlcm5hbEZvcm1hdCwgc291cmNl
KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9y
OwogICAgIH0KIAotICAgIHJlbGVhc2VUZXhJbWFnZSgpOwotCiAgICAgc2V0SW1hZ2VEZXNjKHRh
cmdldCwgbGV2ZWwsIEltYWdlRGVzYyhFeHRlbnRzKHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFy
ZWEuaGVpZ2h0LCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUp
KSk7CiAKQEAgLTI1OCwzMiArNDgxLDQyIEBACiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtVGFy
Z2V0KTsKIAorICAgIC8vIFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxscyB0byBlZ2xCaW5kVGV4
SW1hZ2UsIHRvIGF2b2lkIGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKKyAgICByZWxlYXNlVGV4SW1h
Z2VJbnRlcm5hbCgpOworICAgIG9ycGhhbkltYWdlcygpOworCiAgICAgRXJyb3IgZXJyb3IgPSBt
VGV4dHVyZS0+c2V0U3RvcmFnZSh0YXJnZXQsIGxldmVscywgaW50ZXJuYWxGb3JtYXQsIHNpemUp
OwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgfQogCi0gICAgcmVsZWFzZVRleEltYWdlKCk7Ci0KLSAgICBtSW1tdXRhYmxlTGV2ZWxD
b3VudCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxldmVscyk7CisgICAgbVRleHR1cmVTdGF0ZS5p
bW11dGFibGVGb3JtYXQgPSB0cnVlOworICAgIG1UZXh0dXJlU3RhdGUuaW1tdXRhYmxlTGV2ZWxz
ID0gc3RhdGljX2Nhc3Q8R0x1aW50PihsZXZlbHMpOwogICAgIGNsZWFySW1hZ2VEZXNjcygpOwog
ICAgIHNldEltYWdlRGVzY0NoYWluKGxldmVscywgc2l6ZSwgaW50ZXJuYWxGb3JtYXQpOwogCiAg
ICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotCiBFcnJvciBUZXh0dXJlOjpnZW5l
cmF0ZU1pcG1hcHMoKQogewotICAgIEVycm9yIGVycm9yID0gbVRleHR1cmUtPmdlbmVyYXRlTWlw
bWFwcyhnZXRTYW1wbGVyU3RhdGUoKSk7CisgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3VzIGNh
bGxzIHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRlcgor
ICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CisKKyAgICAvLyBFR0xfS0hSX2dsX2ltYWdl
IHN0YXRlcyB0aGF0IGltYWdlcyBhcmUgb25seSBvcnBoYW5lZCB3aGVuIGdlbmVyYXRpbmcgbWlw
bWFwcyBpZiB0aGUgdGV4dHVyZQorICAgIC8vIGlzIG5vdCBtaXAgY29tcGxldGUuCisgICAgaWYg
KCFpc01pcG1hcENvbXBsZXRlKCkpCisgICAgeworICAgICAgICBvcnBoYW5JbWFnZXMoKTsKKyAg
ICB9CisKKyAgICBFcnJvciBlcnJvciA9IG1UZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcHMobVRleHR1
cmVTdGF0ZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVy
biBlcnJvcjsKICAgICB9CiAKLSAgICByZWxlYXNlVGV4SW1hZ2UoKTsKLQogICAgIGNvbnN0IElt
YWdlRGVzYyAmYmFzZUltYWdlSW5mbyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQo
KSwgMCk7CiAgICAgc2l6ZV90IG1pcExldmVscyA9IGxvZzIoc3RkOjptYXgoc3RkOjptYXgoYmFz
ZUltYWdlSW5mby5zaXplLndpZHRoLCBiYXNlSW1hZ2VJbmZvLnNpemUuaGVpZ2h0KSwgYmFzZUlt
YWdlSW5mby5zaXplLmRlcHRoKSkgKyAxOwogICAgIHNldEltYWdlRGVzY0NoYWluKG1pcExldmVs
cywgYmFzZUltYWdlSW5mby5zaXplLCBiYXNlSW1hZ2VJbmZvLmludGVybmFsRm9ybWF0KTsKQEAg
LTI5MywxOCArNTI2LDE5IEBACiAKIHZvaWQgVGV4dHVyZTo6c2V0SW1hZ2VEZXNjQ2hhaW4oc2l6
ZV90IGxldmVscywgRXh0ZW50cyBiYXNlU2l6ZSwgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQp
CiB7Ci0gICAgZm9yIChzaXplX3QgbGV2ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgbGV2ZWwrKykK
KyAgICBmb3IgKGludCBsZXZlbCA9IDA7IGxldmVsIDwgc3RhdGljX2Nhc3Q8aW50PihsZXZlbHMp
OyBsZXZlbCsrKQogICAgIHsKLSAgICAgICAgRXh0ZW50cyBsZXZlbFNpemUoc3RkOjptYXg8aW50
PihiYXNlU2l6ZS53aWR0aCA+PiBsZXZlbCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWF4PGludD4oYmFzZVNpemUuaGVpZ2h0ID4+IGxldmVsLCAxKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSkgPyBiYXNlU2l6
ZS5kZXB0aCA6IHN0ZDo6bWF4PGludD4oYmFzZVNpemUuZGVwdGggPj4gbGV2ZWwsIDEpKTsKKyAg
ICAgICAgRXh0ZW50cyBsZXZlbFNpemUoCisgICAgICAgICAgICBzdGQ6Om1heDxpbnQ+KGJhc2VT
aXplLndpZHRoID4+IGxldmVsLCAxKSwgc3RkOjptYXg8aW50PihiYXNlU2l6ZS5oZWlnaHQgPj4g
bGV2ZWwsIDEpLAorICAgICAgICAgICAgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSkg
PyBiYXNlU2l6ZS5kZXB0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiBzdGQ6Om1heDxpbnQ+KGJhc2VTaXplLmRlcHRoID4+IGxldmVsLCAxKSk7CiAgICAg
ICAgIEltYWdlRGVzYyBsZXZlbEluZm8obGV2ZWxTaXplLCBzaXplZEludGVybmFsRm9ybWF0KTsK
IAogICAgICAgICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgICAgICB7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBmYWNlID0gRmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdl
dDsgZmFjZSA8PSBMYXN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UrKykKKyAgICAgICAgICAg
IGZvciAoR0xlbnVtIGZhY2UgPSBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExh
c3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsrKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHNldEltYWdlRGVzYyhzdGF0aWNfY2FzdDxHTGVudW0+KGZhY2UpLCBsZXZlbCwgbGV2
ZWxJbmZvKTsKKyAgICAgICAgICAgICAgICBzZXRJbWFnZURlc2MoZmFjZSwgbGV2ZWwsIGxldmVs
SW5mbyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtMzU0LDEx
ICs1ODgsMTUgQEAKICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOwog
fQogCi12b2lkIFRleHR1cmU6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCit2
b2lkIFRleHR1cmU6OmJpbmRUZXhJbWFnZUZyb21TdXJmYWNlKGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSkKIHsKICAgICBBU1NFUlQoc3VyZmFjZSk7CiAKLSAgICByZWxlYXNlVGV4SW1hZ2UoKTsKKyAg
ICBpZiAobUJvdW5kU3VyZmFjZSkKKyAgICB7CisgICAgICAgIHJlbGVhc2VUZXhJbWFnZUZyb21T
dXJmYWNlKCk7CisgICAgfQorCiAgICAgbVRleHR1cmUtPmJpbmRUZXhJbWFnZShzdXJmYWNlKTsK
ICAgICBtQm91bmRTdXJmYWNlID0gc3VyZmFjZTsKIApAQCAtMzY5LDQwICs2MDcsNjUgQEAKICAg
ICBzZXRJbWFnZURlc2MobVRhcmdldCwgMCwgZGVzYyk7CiB9CiAKLXZvaWQgVGV4dHVyZTo6cmVs
ZWFzZVRleEltYWdlKCkKK3ZvaWQgVGV4dHVyZTo6cmVsZWFzZVRleEltYWdlRnJvbVN1cmZhY2Uo
KQogeworICAgIEFTU0VSVChtQm91bmRTdXJmYWNlKTsKKyAgICBtQm91bmRTdXJmYWNlID0gbnVs
bHB0cjsKKyAgICBtVGV4dHVyZS0+cmVsZWFzZVRleEltYWdlKCk7CisKKyAgICAvLyBFcmFzZSB0
aGUgaW1hZ2UgaW5mbyBmb3IgbGV2ZWwgMAorICAgIEFTU0VSVChtVGFyZ2V0ID09IEdMX1RFWFRV
UkVfMkQpOworICAgIGNsZWFySW1hZ2VEZXNjKG1UYXJnZXQsIDApOworfQorCit2b2lkIFRleHR1
cmU6OnJlbGVhc2VUZXhJbWFnZUludGVybmFsKCkKK3sKICAgICBpZiAobUJvdW5kU3VyZmFjZSkK
ICAgICB7Ci0gICAgICAgIG1Cb3VuZFN1cmZhY2UgPSBOVUxMOwotICAgICAgICBtVGV4dHVyZS0+
cmVsZWFzZVRleEltYWdlKCk7CisgICAgICAgIC8vIE5vdGlmeSB0aGUgc3VyZmFjZQorICAgICAg
ICBtQm91bmRTdXJmYWNlLT5yZWxlYXNlVGV4SW1hZ2VGcm9tVGV4dHVyZSgpOwogCi0gICAgICAg
IC8vIEVyYXNlIHRoZSBpbWFnZSBpbmZvIGZvciBsZXZlbCAwCi0gICAgICAgIEFTU0VSVChtVGFy
Z2V0ID09IEdMX1RFWFRVUkVfMkQpOwotICAgICAgICBjbGVhckltYWdlRGVzYyhtVGFyZ2V0LCAw
KTsKKyAgICAgICAgLy8gVGhlbiwgY2FsbCB0aGUgc2FtZSBtZXRob2QgYXMgZnJvbSB0aGUgc3Vy
ZmFjZQorICAgICAgICByZWxlYXNlVGV4SW1hZ2VGcm9tU3VyZmFjZSgpOwogICAgIH0KIH0KIAot
R0xlbnVtIFRleHR1cmU6OmdldEJhc2VJbWFnZVRhcmdldCgpIGNvbnN0CitFcnJvciBUZXh0dXJl
OjpzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZVRhcmdl
dCkKIHsKLSAgICByZXR1cm4gbVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQID8gRmlyc3RD
dWJlTWFwVGV4dHVyZVRhcmdldCA6IG1UYXJnZXQ7Ci19CisgICAgQVNTRVJUKHRhcmdldCA9PSBt
VGFyZ2V0KTsKKyAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOwogCi1zaXplX3Qg
VGV4dHVyZTo6Z2V0RXhwZWN0ZWRNaXBMZXZlbHMoKSBjb25zdAotewotICAgIGNvbnN0IEltYWdl
RGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwg
MCk7Ci0gICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8zRCkKKyAgICAvLyBSZWxlYXNlIGZy
b20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0byBhdm9pZCBjYWxsaW5nIHRo
ZSBJbXBsIGFmdGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKTsKKyAgICBvcnBoYW5J
bWFnZXMoKTsKKworICAgIEVycm9yIGVycm9yID0gbVRleHR1cmUtPnNldEVHTEltYWdlVGFyZ2V0
KHRhcmdldCwgaW1hZ2VUYXJnZXQpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewot
ICAgICAgICByZXR1cm4gbG9nMihzdGQ6Om1heChzdGQ6Om1heChiYXNlSW1hZ2VEZXNjLnNpemUu
d2lkdGgsIGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpLCBiYXNlSW1hZ2VEZXNjLnNpemUuZGVw
dGgpKSArIDE7CisgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGxvZzIoc3RkOjptYXgoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoLCBi
YXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkgKyAxOwotICAgIH0KKworICAgIHNldFRhcmdldElt
YWdlKGltYWdlVGFyZ2V0KTsKKworICAgIEV4dGVudHMgc2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGlt
YWdlVGFyZ2V0LT5nZXRXaWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
PihpbWFnZVRhcmdldC0+Z2V0SGVpZ2h0KCkpLCAxKTsKKyAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQgPSBpbWFnZVRhcmdldC0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKyAgICBHTGVudW0gdHlwZSAg
ICAgICAgICAgPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpLnR5cGU7CisK
KyAgICBjbGVhckltYWdlRGVzY3MoKTsKKyAgICBzZXRJbWFnZURlc2ModGFyZ2V0LCAwLCBJbWFn
ZURlc2Moc2l6ZSwgR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSkp
KTsKKworICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKK0dMZW51bSBUZXh0dXJl
OjpnZXRCYXNlSW1hZ2VUYXJnZXQoKSBjb25zdAoreworICAgIHJldHVybiBtVGFyZ2V0ID09IEdM
X1RFWFRVUkVfQ1VCRV9NQVAgPyBGaXJzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0IDogbVRhcmdldDsK
K30KKwogYm9vbCBUZXh0dXJlOjpjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhjb25zdCBTYW1w
bGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwgY29uc3QgRGF0YSAmZGF0YSkgY29uc3QKIHsKLSAgICBj
b25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2MgPSBnZXRJbWFnZURlc2MoZ2V0QmFzZUltYWdl
VGFyZ2V0KCksIHNhbXBsZXJTdGF0ZS5iYXNlTGV2ZWwpOworICAgIGNvbnN0IEltYWdlRGVzYyAm
YmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwgbVRleHR1
cmVTdGF0ZS5iYXNlTGV2ZWwpOwogICAgIGlmIChiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggPT0g
MCB8fCBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0ID09IDAgfHwgYmFzZUltYWdlRGVzYy5zaXpl
LmRlcHRoID09IDApCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MzksNyArNzAy
LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICghY29tcHV0ZU1p
cG1hcENvbXBsZXRlbmVzcyhzYW1wbGVyU3RhdGUpKQorICAgICAgICBpZiAoIWNvbXB1dGVNaXBt
YXBDb21wbGV0ZW5lc3MoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CkBAIC00NzMsMTkgKzczNiwxOSBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFRleHR1cmU6OmNvbXB1dGVNaXBtYXBDb21wbGV0ZW5lc3MoY29uc3QgZ2w6OlNhbXBsZXJT
dGF0ZSAmc2FtcGxlclN0YXRlKSBjb25zdAorYm9vbCBUZXh0dXJlOjpjb21wdXRlTWlwbWFwQ29t
cGxldGVuZXNzKCkgY29uc3QKIHsKLSAgICBzaXplX3QgZXhwZWN0ZWRNaXBMZXZlbHMgPSBnZXRF
eHBlY3RlZE1pcExldmVscygpOworICAgIHNpemVfdCBleHBlY3RlZE1pcExldmVscyA9IGdldE1p
cENvbXBsZXRlTGV2ZWxzKCk7CiAKLSAgICBzaXplX3QgbWF4TGV2ZWwgPSBzdGQ6Om1pbjxzaXpl
X3Q+KGV4cGVjdGVkTWlwTGV2ZWxzLCBzYW1wbGVyU3RhdGUubWF4TGV2ZWwgKyAxKTsKKyAgICBz
aXplX3QgbWF4TGV2ZWwgPSBzdGQ6Om1pbjxzaXplX3Q+KGV4cGVjdGVkTWlwTGV2ZWxzLCBtVGV4
dHVyZVN0YXRlLm1heExldmVsICsgMSk7CiAKLSAgICBmb3IgKHNpemVfdCBsZXZlbCA9IHNhbXBs
ZXJTdGF0ZS5iYXNlTGV2ZWw7IGxldmVsIDwgbWF4TGV2ZWw7IGxldmVsKyspCisgICAgZm9yIChz
aXplX3QgbGV2ZWwgPSBtVGV4dHVyZVN0YXRlLmJhc2VMZXZlbDsgbGV2ZWwgPCBtYXhMZXZlbDsg
bGV2ZWwrKykKICAgICB7CiAgICAgICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9N
QVApCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoR0xlbnVtIGZhY2UgPSBGaXJzdEN1YmVN
YXBUZXh0dXJlVGFyZ2V0OyBmYWNlIDw9IExhc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSsr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghY29tcHV0ZUxldmVsQ29tcGxl
dGVuZXNzKGZhY2UsIGxldmVsLCBzYW1wbGVyU3RhdGUpKQorICAgICAgICAgICAgICAgIGlmICgh
Y29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKGZhY2UsIGxldmVsKSkKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CkBA
IC00OTMsNyArNzU2LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghY29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKG1UYXJnZXQsIGxldmVsLCBz
YW1wbGVyU3RhdGUpKQorICAgICAgICAgICAgaWYgKCFjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3Mo
bVRhcmdldCwgbGV2ZWwpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KQEAgLTUwMyw0NyArNzY2LDQ4IEBACiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLQotYm9vbCBUZXh0dXJlOjpjb21wdXRlTGV2ZWxDb21wbGV0ZW5lc3MoR0xlbnVt
IHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3Rh
dGUpIGNvbnN0Citib29sIFRleHR1cmU6OmNvbXB1dGVMZXZlbENvbXBsZXRlbmVzcyhHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGxldmVsIDwgSU1QTEVN
RU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKTsKIAotICAgIGlmIChpc0ltbXV0YWJsZSgpKQor
ICAgIGlmIChtVGV4dHVyZVN0YXRlLmltbXV0YWJsZUZvcm1hdCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IEltYWdlRGVzYyAmYmFzZUltYWdlRGVzYyA9
IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VUYXJnZXQoKSwgc2FtcGxlclN0YXRlLmJhc2VMZXZl
bCk7CisgICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdl
dEJhc2VJbWFnZVRhcmdldCgpLCBtVGV4dHVyZVN0YXRlLmJhc2VMZXZlbCk7CiAgICAgaWYgKGJh
c2VJbWFnZURlc2Muc2l6ZS53aWR0aCA9PSAwIHx8IGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQg
PT0gMCB8fCBiYXNlSW1hZ2VEZXNjLnNpemUuZGVwdGggPT0gMCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBUaGUgYmFzZSBpbWFnZSBsZXZlbCBpcyBjb21w
bGV0ZSBpZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgcG9zaXRpdmUKLSAgICBpZiAobGV2ZWwg
PT0gMCkKKyAgICBjb25zdCBJbWFnZURlc2MgJmxldmVsSW1hZ2VEZXNjID0gZ2V0SW1hZ2VEZXNj
KHRhcmdldCwgbGV2ZWwpOworICAgIGlmIChsZXZlbEltYWdlRGVzYy5zaXplLndpZHRoID09IDAg
fHwgbGV2ZWxJbWFnZURlc2Muc2l6ZS5oZWlnaHQgPT0gMCB8fAorICAgICAgICBsZXZlbEltYWdl
RGVzYy5zaXplLmRlcHRoID09IDApCiAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IEltYWdlRGVzYyAmbGV2ZWxJbWFn
ZURlc2MgPSBnZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCk7CiAgICAgaWYgKGxldmVsSW1hZ2VE
ZXNjLmludGVybmFsRm9ybWF0ICE9IGJhc2VJbWFnZURlc2MuaW50ZXJuYWxGb3JtYXQpCiAgICAg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsSW1hZ2VEZXNj
LnNpemUud2lkdGggIT0gc3RkOjptYXgoMSwgYmFzZUltYWdlRGVzYy5zaXplLndpZHRoID4+IGxl
dmVsKSkKKyAgICBBU1NFUlQobGV2ZWwgPj0gbVRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwpOworICAg
IGNvbnN0IHNpemVfdCByZWxhdGl2ZUxldmVsID0gbGV2ZWwgLSBtVGV4dHVyZVN0YXRlLmJhc2VM
ZXZlbDsKKyAgICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS53aWR0aCAhPSBzdGQ6Om1heCgxLCBi
YXNlSW1hZ2VEZXNjLnNpemUud2lkdGggPj4gcmVsYXRpdmVMZXZlbCkpCiAgICAgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsSW1hZ2VEZXNjLnNpemUuaGVp
Z2h0ICE9IHN0ZDo6bWF4KDEsIGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQgPj4gbGV2ZWwpKQor
ICAgIGlmIChsZXZlbEltYWdlRGVzYy5zaXplLmhlaWdodCAhPSBzdGQ6Om1heCgxLCBiYXNlSW1h
Z2VEZXNjLnNpemUuaGVpZ2h0ID4+IHJlbGF0aXZlTGV2ZWwpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpCiAg
ICAgewotICAgICAgICBpZiAobGV2ZWxJbWFnZURlc2Muc2l6ZS5kZXB0aCAhPSBzdGQ6Om1heCgx
LCBiYXNlSW1hZ2VEZXNjLnNpemUuZGVwdGggPj4gbGV2ZWwpKQorICAgICAgICBpZiAobGV2ZWxJ
bWFnZURlc2Muc2l6ZS5kZXB0aCAhPSBzdGQ6Om1heCgxLCBiYXNlSW1hZ2VEZXNjLnNpemUuZGVw
dGggPj4gcmVsYXRpdmVMZXZlbCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQpAQCAtNTY5LDE2ICs4MzMsMTEgQEAKIHsKIH0KIAotR0xzaXplaSBUZXh0
dXJlOjpnZXRBdHRhY2htZW50V2lkdGgoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6
VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CitFeHRlbnRzIFRleHR1cmU6OmdldEF0dGFjaG1lbnRTaXpl
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdAog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHNpemVpPihnZXRXaWR0aCh0YXJnZXQudGV4dHVy
ZUluZGV4KCkudHlwZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1pcEluZGV4KSk7CisgICAgcmV0
dXJuIGdldEltYWdlRGVzYyh0YXJnZXQudGV4dHVyZUluZGV4KCkudHlwZSwgdGFyZ2V0LnRleHR1
cmVJbmRleCgpLm1pcEluZGV4KS5zaXplOwogfQogCi1HTHNpemVpIFRleHR1cmU6OmdldEF0dGFj
aG1lbnRIZWlnaHQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJn
ZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGdldEhlaWdodCh0
YXJnZXQudGV4dHVyZUluZGV4KCkudHlwZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1pcEluZGV4
KSk7Ci19Ci0KIEdMZW51bSBUZXh0dXJlOjpnZXRBdHRhY2htZW50SW50ZXJuYWxGb3JtYXQoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGdldEludGVybmFsRm9ybWF0KHRhcmdldC50ZXh0dXJlSW5kZXgoKS50eXBlLCB0
YXJnZXQudGV4dHVyZUluZGV4KCkubWlwSW5kZXgpOwpAQCAtNTkwLDQgKzg0OSwxOCBAQAogICAg
IHJldHVybiAwOwogfQogCit2b2lkIFRleHR1cmU6Om9uQXR0YWNoKCkKK3sKKyAgICBhZGRSZWYo
KTsKIH0KKwordm9pZCBUZXh0dXJlOjpvbkRldGFjaCgpCit7CisgICAgcmVsZWFzZSgpOworfQor
CitHTHVpbnQgVGV4dHVyZTo6Z2V0SWQoKSBjb25zdAoreworICAgIHJldHVybiBpZCgpOworfQor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4dHVy
ZS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNSw5ICsxNSwxMSBAQAogI2luY2x1
ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvQ2Fwcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0RlYnVnLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9J
bWFnZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oIgogCkBAIC0zMSw4NSArMzMsMTY4IEBACiBjbGFz
cyBGcmFtZWJ1ZmZlcjsKIHN0cnVjdCBEYXRhOwogCi1ib29sIElzTWlwbWFwRmlsdGVyZWQoY29u
c3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsKK2Jvb2wgSXNNaXBtYXBGaWx0ZXJl
ZChjb25zdCBTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7CiAKLWNsYXNzIFRleHR1cmUgZmlu
YWwgOiBwdWJsaWMgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0CitjbGFzcyBUZXh0dXJlIGZp
bmFsIDogcHVibGljIGVnbDo6SW1hZ2VTaWJsaW5nLAorICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgogICAgIFRleHR1cmUocng6OlRleHR1
cmVJbXBsICppbXBsLCBHTHVpbnQgaWQsIEdMZW51bSB0YXJnZXQpOworICAgIH5UZXh0dXJlKCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CisgICAgdm9pZCBzZXRMYWJlbChj
b25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOworICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgR0xlbnVtIGdldFRhcmdldCgpIGNv
bnN0OwogCi0gICAgY29uc3QgU2FtcGxlclN0YXRlICZnZXRTYW1wbGVyU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtU2FtcGxlclN0YXRlOyB9Ci0gICAgU2FtcGxlclN0YXRlICZnZXRTYW1wbGVyU3Rh
dGUoKSB7IHJldHVybiBtU2FtcGxlclN0YXRlOyB9CisgICAgdm9pZCBzZXRTd2l6emxlUmVkKEdM
ZW51bSBzd2l6emxlUmVkKTsKKyAgICBHTGVudW0gZ2V0U3dpenpsZVJlZCgpIGNvbnN0OwogCisg
ICAgdm9pZCBzZXRTd2l6emxlR3JlZW4oR0xlbnVtIHN3aXp6bGVHcmVlbik7CisgICAgR0xlbnVt
IGdldFN3aXp6bGVHcmVlbigpIGNvbnN0OworCisgICAgdm9pZCBzZXRTd2l6emxlQmx1ZShHTGVu
dW0gc3dpenpsZUJsdWUpOworICAgIEdMZW51bSBnZXRTd2l6emxlQmx1ZSgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRTd2l6emxlQWxwaGEoR0xlbnVtIHN3aXp6bGVBbHBoYSk7CisgICAgR0xlbnVt
IGdldFN3aXp6bGVBbHBoYSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRNaW5GaWx0ZXIoR0xlbnVt
IG1pbkZpbHRlcik7CisgICAgR0xlbnVtIGdldE1pbkZpbHRlcigpIGNvbnN0OworCisgICAgdm9p
ZCBzZXRNYWdGaWx0ZXIoR0xlbnVtIG1hZ0ZpbHRlcik7CisgICAgR0xlbnVtIGdldE1hZ0ZpbHRl
cigpIGNvbnN0OworCisgICAgdm9pZCBzZXRXcmFwUyhHTGVudW0gd3JhcFMpOworICAgIEdMZW51
bSBnZXRXcmFwUygpIGNvbnN0OworCisgICAgdm9pZCBzZXRXcmFwVChHTGVudW0gd3JhcFQpOwor
ICAgIEdMZW51bSBnZXRXcmFwVCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRXcmFwUihHTGVudW0g
d3JhcFIpOworICAgIEdMZW51bSBnZXRXcmFwUigpIGNvbnN0OworCisgICAgdm9pZCBzZXRNYXhB
bmlzb3Ryb3B5KGZsb2F0IG1heEFuaXNvdHJvcHkpOworICAgIGZsb2F0IGdldE1heEFuaXNvdHJv
cHkoKSBjb25zdDsKKworICAgIHZvaWQgc2V0TWluTG9kKEdMZmxvYXQgbWluTG9kKTsKKyAgICBH
TGZsb2F0IGdldE1pbkxvZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRNYXhMb2QoR0xmbG9hdCBt
YXhMb2QpOworICAgIEdMZmxvYXQgZ2V0TWF4TG9kKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENv
bXBhcmVNb2RlKEdMZW51bSBjb21wYXJlTW9kZSk7CisgICAgR0xlbnVtIGdldENvbXBhcmVNb2Rl
KCkgY29uc3Q7CisKKyAgICB2b2lkIHNldENvbXBhcmVGdW5jKEdMZW51bSBjb21wYXJlRnVuYyk7
CisgICAgR0xlbnVtIGdldENvbXBhcmVGdW5jKCkgY29uc3Q7CisKKyAgICBjb25zdCBTYW1wbGVy
U3RhdGUgJmdldFNhbXBsZXJTdGF0ZSgpIGNvbnN0OworCisgICAgdm9pZCBzZXRCYXNlTGV2ZWwo
R0x1aW50IGJhc2VMZXZlbCk7CisgICAgR0x1aW50IGdldEJhc2VMZXZlbCgpIGNvbnN0OworCisg
ICAgdm9pZCBzZXRNYXhMZXZlbChHTHVpbnQgbWF4TGV2ZWwpOworICAgIEdMdWludCBnZXRNYXhM
ZXZlbCgpIGNvbnN0OworCisgICAgYm9vbCBnZXRJbW11dGFibGVGb3JtYXQoKSBjb25zdDsKKwor
ICAgIEdMdWludCBnZXRJbW11dGFibGVMZXZlbHMoKSBjb25zdDsKKwogICAgIHZvaWQgc2V0VXNh
Z2UoR0xlbnVtIHVzYWdlKTsKICAgICBHTGVudW0gZ2V0VXNhZ2UoKSBjb25zdDsKIAorICAgIGNv
bnN0IFRleHR1cmVTdGF0ZSAmZ2V0VGV4dHVyZVN0YXRlKCkgY29uc3Q7CisKICAgICBzaXplX3Qg
Z2V0V2lkdGgoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKICAgICBzaXplX3Qg
Z2V0SGVpZ2h0KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgc2l6ZV90
IGdldERlcHRoKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgR0xlbnVt
IGdldEludGVybmFsRm9ybWF0KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAK
ICAgICBib29sIGlzU2FtcGxlckNvbXBsZXRlKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0
YXRlLCBjb25zdCBEYXRhICZkYXRhKSBjb25zdDsKKyAgICBib29sIGlzTWlwbWFwQ29tcGxldGUo
KSBjb25zdDsKICAgICBib29sIGlzQ3ViZUNvbXBsZXRlKCkgY29uc3Q7CisgICAgc2l6ZV90IGdl
dE1pcENvbXBsZXRlTGV2ZWxzKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEVycm9yIHNldEltYWdl
KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25z
dCBFeHRlbnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKTsKLSAgICB2aXJ0dWFsIEVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgQm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKTsKKyAgICBFcnJvciBzZXRJbWFnZShj
b25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgRXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscyk7CisgICAgRXJyb3Igc2V0U3ViSW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKTsKIAotICAgIHZpcnR1YWwgRXJyb3Igc2V0Q29tcHJl
c3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9y
bWF0LCBjb25zdCBFeHRlbnRzICZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4
ZWxzKTsKLSAgICB2aXJ0dWFsIEVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFy
Z2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IEJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscyk7CisgICAgRXJyb3Igc2V0Q29tcHJlc3Nl
ZEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW50
cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKTsKKyAg
ICBFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94ICZhcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpOwogCi0gICAgdmlydHVhbCBFcnJvciBjb3B5SW1hZ2Uo
R0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGcmFtZWJ1ZmZlciAqc291cmNlKTsKLSAgICB2aXJ0dWFsIEVycm9yIGNvcHlTdWJJbWFnZShH
TGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IE9mZnNldCAmZGVzdE9mZnNldCwgY29u
c3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRnJhbWVidWZmZXIgKnNvdXJjZSk7CisgICAgRXJyb3IgY29weUltYWdlKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVyICpzb3VyY2UpOworICAgIEVycm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IE9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFt
ZWJ1ZmZlciAqc291cmNlKTsKIAotICAgIHZpcnR1YWwgRXJyb3Igc2V0U3RvcmFnZShHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IEV4dGVu
dHMgJnNpemUpOworICAgIEVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRlbnRzICZzaXplKTsKIAotICAg
IHZpcnR1YWwgRXJyb3IgZ2VuZXJhdGVNaXBtYXBzKCk7CisgICAgRXJyb3Igc2V0RUdMSW1hZ2VU
YXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2VUYXJnZXQpOwogCi0gICAgLy8g
VGV4dHVyZSBzZXJpYWxzIHByb3ZpZGUgYSB1bmlxdWUgd2F5IG9mIGlkZW50aWZ5aW5nIGEgVGV4
dHVyZSB0aGF0IGlzbid0IGEgcmF3IHBvaW50ZXIuCi0gICAgLy8gImlkIiBpcyBub3QgZ29vZCBl
bm91Z2gsIGFzIFRleHR1cmVzIGNhbiBiZSBkZWxldGVkLCB0aGVuIHJlLWFsbG9jYXRlZCB3aXRo
IHRoZSBzYW1lIGlkLgotICAgIHVuc2lnbmVkIGludCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3Q7
CisgICAgRXJyb3IgZ2VuZXJhdGVNaXBtYXBzKCk7CiAKLSAgICBib29sIGlzSW1tdXRhYmxlKCkg
Y29uc3Q7Ci0gICAgR0xzaXplaSBpbW11dGFibGVMZXZlbENvdW50KCk7CisgICAgZWdsOjpTdXJm
YWNlICpnZXRCb3VuZFN1cmZhY2UoKSBjb25zdDsKIAotICAgIHZvaWQgYmluZFRleEltYWdlKGVn
bDo6U3VyZmFjZSAqc3VyZmFjZSk7Ci0gICAgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKTsKLQogICAg
IHJ4OjpUZXh0dXJlSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSB7IHJldHVybiBtVGV4dHVyZTsg
fQogICAgIGNvbnN0IHJ4OjpUZXh0dXJlSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7
IHJldHVybiBtVGV4dHVyZTsgfQogCi0gICAgc3RhdGljIGNvbnN0IEdMdWludCBJTkNPTVBMRVRF
X1RFWFRVUkVfSUQgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsgICAvLyBFdmVyeSB0ZXh0dXJl
IHRha2VzIGFuIGlkIGF0IGNyZWF0aW9uIHRpbWUuIFRoZSB2YWx1ZSBpcyBhcmJpdHJhcnkgYmVj
YXVzZSBpdCBpcyBuZXZlciByZWdpc3RlcmVkIHdpdGggdGhlIHJlc291cmNlIG1hbmFnZXIuCi0K
ICAgICAvLyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgaW1wbGVtZW50YXRpb24KLSAgICBH
THNpemVpIGdldEF0dGFjaG1lbnRXaWR0aChjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRh
cmdldCAmdGFyZ2V0KSBjb25zdCBvdmVycmlkZTsKLSAgICBHTHNpemVpIGdldEF0dGFjaG1lbnRI
ZWlnaHQoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgRXh0ZW50cyBnZXRBdHRhY2htZW50U2l6ZShjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdCBvdmVycmlkZTsKICAgICBHTGVudW0g
Z2V0QXR0YWNobWVudEludGVybmFsRm9ybWF0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6
VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIEdMc2l6ZWkgZ2V0QXR0YWNobWVu
dFNhbXBsZXMoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29u
c3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIG9uQXR0YWNoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBv
bkRldGFjaCgpIG92ZXJyaWRlOworICAgIEdMdWludCBnZXRJZCgpIGNvbnN0IG92ZXJyaWRlOwor
CiAgIHByaXZhdGU6CiAgICAgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwgKmdl
dEF0dGFjaG1lbnRJbXBsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVRleHR1cmU7IH0KLSAg
ICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlVGV4dHVyZVNlcmlhbCgpOwogCisgICAgLy8gQU5H
TEUtb25seSBtZXRob2QsIHVzZWQgaW50ZXJuYWxseQorICAgIGZyaWVuZCBjbGFzcyBlZ2w6OlN1
cmZhY2U7CisgICAgdm9pZCBiaW5kVGV4SW1hZ2VGcm9tU3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1
cmZhY2UpOworICAgIHZvaWQgcmVsZWFzZVRleEltYWdlRnJvbVN1cmZhY2UoKTsKKwogICAgIHJ4
OjpUZXh0dXJlSW1wbCAqbVRleHR1cmU7CiAKLSAgICBTYW1wbGVyU3RhdGUgbVNhbXBsZXJTdGF0
ZTsKLSAgICBHTGVudW0gbVVzYWdlOworICAgIHN0ZDo6c3RyaW5nIG1MYWJlbDsKIAotICAgIEdM
c2l6ZWkgbUltbXV0YWJsZUxldmVsQ291bnQ7CisgICAgVGV4dHVyZVN0YXRlIG1UZXh0dXJlU3Rh
dGU7CiAKICAgICBHTGVudW0gbVRhcmdldDsKIAotCiAgICAgc3RydWN0IEltYWdlRGVzYwogICAg
IHsKICAgICAgICAgRXh0ZW50cyBzaXplOwpAQCAtMTE5LDIxICsyMDQsMTggQEAKICAgICAgICAg
SW1hZ2VEZXNjKGNvbnN0IEV4dGVudHMgJnNpemUsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CiAg
ICAgfTsKIAotICAgIGNvbnN0IHVuc2lnbmVkIGludCBtVGV4dHVyZVNlcmlhbDsKLSAgICBzdGF0
aWMgdW5zaWduZWQgaW50IG1DdXJyZW50VGV4dHVyZVNlcmlhbDsKLQogICAgIEdMZW51bSBnZXRC
YXNlSW1hZ2VUYXJnZXQoKSBjb25zdDsKLSAgICBzaXplX3QgZ2V0RXhwZWN0ZWRNaXBMZXZlbHMo
KSBjb25zdDsKIAogICAgIGJvb2wgY29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2Ft
cGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIGNvbnN0IERhdGEgJmRhdGEpIGNvbnN0OwotICAgIGJv
b2wgY29tcHV0ZU1pcG1hcENvbXBsZXRlbmVzcyhjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1w
bGVyU3RhdGUpIGNvbnN0OwotICAgIGJvb2wgY29tcHV0ZUxldmVsQ29tcGxldGVuZXNzKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0
YXRlKSBjb25zdDsKKyAgICBib29sIGNvbXB1dGVNaXBtYXBDb21wbGV0ZW5lc3MoKSBjb25zdDsK
KyAgICBib29sIGNvbXB1dGVMZXZlbENvbXBsZXRlbmVzcyhHTGVudW0gdGFyZ2V0LCBzaXplX3Qg
bGV2ZWwpIGNvbnN0OwogCiAgICAgY29uc3QgSW1hZ2VEZXNjICZnZXRJbWFnZURlc2MoR0xlbnVt
IHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25zdDsKICAgICB2b2lkIHNldEltYWdlRGVzYyhHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IEltYWdlRGVzYyAmZGVzYyk7CiAgICAgdm9p
ZCBzZXRJbWFnZURlc2NDaGFpbihzaXplX3QgbGV2ZWxzLCBFeHRlbnRzIGJhc2VTaXplLCBHTGVu
dW0gc2l6ZWRJbnRlcm5hbEZvcm1hdCk7CiAgICAgdm9pZCBjbGVhckltYWdlRGVzYyhHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWwpOwogICAgIHZvaWQgY2xlYXJJbWFnZURlc2NzKCk7CisgICAg
dm9pZCByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogCiAgICAgc3RkOjp2ZWN0b3I8SW1hZ2VE
ZXNjPiBtSW1hZ2VEZXNjczsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwCShyZXZpc2lvbiAx
OTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3Jt
RmVlZGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDI1ICs4LDM0IEBACiAKICNpbmNsdWRl
ICJsaWJBTkdMRS9CdWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltcGxG
YWN0b3J5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJhY2tJ
bXBsLmgiCiAKIG5hbWVzcGFjZSBnbAogewogCi1UcmFuc2Zvcm1GZWVkYmFjazo6VHJhbnNmb3Jt
RmVlZGJhY2socng6OlRyYW5zZm9ybUZlZWRiYWNrSW1wbCogaW1wbCwgR0x1aW50IGlkLCBjb25z
dCBDYXBzICZjYXBzKQorVHJhbnNmb3JtRmVlZGJhY2s6OlRyYW5zZm9ybUZlZWRiYWNrKHJ4OjpJ
bXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIEdMdWludCBpZCwgY29uc3QgQ2FwcyAmY2FwcykKICAg
ICA6IFJlZkNvdW50T2JqZWN0KGlkKSwKLSAgICAgIG1JbXBsZW1lbnRhdGlvbihpbXBsKSwKKyAg
ICAgIG1JbXBsZW1lbnRhdGlvbihpbXBsRmFjdG9yeS0+Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
KSksCisgICAgICBtTGFiZWwoKSwKICAgICAgIG1BY3RpdmUoZmFsc2UpLAogICAgICAgbVByaW1p
dGl2ZU1vZGUoR0xfTk9ORSksCiAgICAgICBtUGF1c2VkKGZhbHNlKSwKKyAgICAgIG1Qcm9ncmFt
KG51bGxwdHIpLAogICAgICAgbUdlbmVyaWNCdWZmZXIoKSwKICAgICAgIG1JbmRleGVkQnVmZmVy
cyhjYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQogewotICAgIEFT
U0VSVChpbXBsICE9IE5VTEwpOworICAgIEFTU0VSVChtSW1wbGVtZW50YXRpb24gIT0gbnVsbHB0
cik7CiB9CiAKIFRyYW5zZm9ybUZlZWRiYWNrOjp+VHJhbnNmb3JtRmVlZGJhY2soKQogeworICAg
IGlmIChtUHJvZ3JhbSkKKyAgICB7CisgICAgICAgIG1Qcm9ncmFtLT5yZWxlYXNlKCk7CisgICAg
ICAgIG1Qcm9ncmFtID0gbnVsbHB0cjsKKyAgICB9CiAgICAgbUdlbmVyaWNCdWZmZXIuc2V0KG51
bGxwdHIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUluZGV4ZWRCdWZmZXJzLnNpemUo
KTsgaSsrKQogICAgIHsKQEAgLTM2LDEyICs0NSwyMyBAQAogICAgIFNhZmVEZWxldGUobUltcGxl
bWVudGF0aW9uKTsKIH0KIAotdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6YmVnaW4oR0xlbnVtIHBy
aW1pdGl2ZU1vZGUpCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpzZXRMYWJlbChjb25zdCBzdGQ6
OnN0cmluZyAmbGFiZWwpCiB7CisgICAgbUxhYmVsID0gbGFiZWw7Cit9CisKK2NvbnN0IHN0ZDo6
c3RyaW5nICZUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0TGFiZWwoKSBjb25zdAoreworICAgIHJldHVy
biBtTGFiZWw7Cit9CisKK3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OmJlZ2luKEdMZW51bSBwcmlt
aXRpdmVNb2RlLCBQcm9ncmFtICpwcm9ncmFtKQorewogICAgIG1BY3RpdmUgPSB0cnVlOwogICAg
IG1QcmltaXRpdmVNb2RlID0gcHJpbWl0aXZlTW9kZTsKICAgICBtUGF1c2VkID0gZmFsc2U7CiAg
ICAgbUltcGxlbWVudGF0aW9uLT5iZWdpbihwcmltaXRpdmVNb2RlKTsKKyAgICBiaW5kUHJvZ3Jh
bShwcm9ncmFtKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6ZW5kKCkKQEAgLTUwLDYg
KzcwLDExIEBACiAgICAgbVByaW1pdGl2ZU1vZGUgPSBHTF9OT05FOwogICAgIG1QYXVzZWQgPSBm
YWxzZTsKICAgICBtSW1wbGVtZW50YXRpb24tPmVuZCgpOworICAgIGlmIChtUHJvZ3JhbSkKKyAg
ICB7CisgICAgICAgIG1Qcm9ncmFtLT5yZWxlYXNlKCk7CisgICAgICAgIG1Qcm9ncmFtID0gbnVs
bHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OnBhdXNlKCkKQEAgLTc5
LDEyICsxMDQsNTEgQEAKICAgICByZXR1cm4gbVByaW1pdGl2ZU1vZGU7CiB9CiAKK3ZvaWQgVHJh
bnNmb3JtRmVlZGJhY2s6OmJpbmRQcm9ncmFtKFByb2dyYW0gKnByb2dyYW0pCit7CisgICAgaWYg
KG1Qcm9ncmFtICE9IHByb2dyYW0pCisgICAgeworICAgICAgICBpZiAobVByb2dyYW0gIT0gbnVs
bHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgbVByb2dyYW0tPnJlbGVhc2UoKTsKKyAgICAg
ICAgfQorICAgICAgICBtUHJvZ3JhbSA9IHByb2dyYW07CisgICAgICAgIGlmIChtUHJvZ3JhbSAh
PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBtUHJvZ3JhbS0+YWRkUmVmKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgVHJhbnNmb3JtRmVlZGJhY2s6Omhhc0JvdW5kUHJv
Z3JhbShHTHVpbnQgcHJvZ3JhbSkgY29uc3QKK3sKKyAgICByZXR1cm4gbVByb2dyYW0gIT0gbnVs
bHB0ciAmJiBtUHJvZ3JhbS0+aWQoKSA9PSBwcm9ncmFtOworfQorCiB2b2lkIFRyYW5zZm9ybUZl
ZWRiYWNrOjpiaW5kR2VuZXJpY0J1ZmZlcihCdWZmZXIgKmJ1ZmZlcikKIHsKICAgICBtR2VuZXJp
Y0J1ZmZlci5zZXQoYnVmZmVyKTsKICAgICBtSW1wbGVtZW50YXRpb24tPmJpbmRHZW5lcmljQnVm
ZmVyKG1HZW5lcmljQnVmZmVyKTsKIH0KIAordm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6ZGV0YWNo
QnVmZmVyKEdMdWludCBidWZmZXJOYW1lKQoreworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBtSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpOyBpbmRleCsrKQorICAgIHsKKyAgICAgICAg
aWYgKG1JbmRleGVkQnVmZmVyc1tpbmRleF0uaWQoKSA9PSBidWZmZXJOYW1lKQorICAgICAgICB7
CisgICAgICAgICAgICBtSW5kZXhlZEJ1ZmZlcnNbaW5kZXhdLnNldChudWxscHRyKTsKKyAgICAg
ICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+YmluZEluZGV4ZWRCdWZmZXIoaW5kZXgsIG1JbmRleGVk
QnVmZmVyc1tpbmRleF0pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1HZW5lcmljQnVm
ZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICB7CisgICAgICAgIG1HZW5lcmljQnVmZmVyLnNl
dChudWxscHRyKTsKKyAgICAgICAgbUltcGxlbWVudGF0aW9uLT5iaW5kR2VuZXJpY0J1ZmZlciht
R2VuZXJpY0J1ZmZlcik7CisgICAgfQorfQorCiBjb25zdCBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+
ICZUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0R2VuZXJpY0J1ZmZlcigpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1HZW5lcmljQnVmZmVyOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmgJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVk
YmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCwxMSArMTAsMTMgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9SZWZDb3VudE9iamVjdC5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9EZWJ1Zy5oIgogCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKIAog
bmFtZXNwYWNlIHJ4CiB7CitjbGFzcyBJbXBsRmFjdG9yeTsKIGNsYXNzIFRyYW5zZm9ybUZlZWRi
YWNrSW1wbDsKIH0KIApAQCAtMjIsMTQgKzI0LDE4IEBACiB7CiBjbGFzcyBCdWZmZXI7CiBzdHJ1
Y3QgQ2FwczsKK2NsYXNzIFByb2dyYW07CiAKLWNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrIDogcHVi
bGljIFJlZkNvdW50T2JqZWN0CitjbGFzcyBUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudE9iamVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgotICAg
IFRyYW5zZm9ybUZlZWRiYWNrKHJ4OjpUcmFuc2Zvcm1GZWVkYmFja0ltcGwqIGltcGwsIEdMdWlu
dCBpZCwgY29uc3QgQ2FwcyAmY2Fwcyk7CisgICAgVHJhbnNmb3JtRmVlZGJhY2socng6OkltcGxG
YWN0b3J5ICppbXBsRmFjdG9yeSwgR0x1aW50IGlkLCBjb25zdCBDYXBzICZjYXBzKTsKICAgICB2
aXJ0dWFsIH5UcmFuc2Zvcm1GZWVkYmFjaygpOwogCi0gICAgdm9pZCBiZWdpbihHTGVudW0gcHJp
bWl0aXZlTW9kZSk7CisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwp
IG92ZXJyaWRlOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgdm9pZCBiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSwgUHJvZ3JhbSAqcHJv
Z3JhbSk7CiAgICAgdm9pZCBlbmQoKTsKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1
bWUoKTsKQEAgLTM4LDYgKzQ0LDggQEAKICAgICBib29sIGlzUGF1c2VkKCkgY29uc3Q7CiAgICAg
R0xlbnVtIGdldFByaW1pdGl2ZU1vZGUoKSBjb25zdDsKIAorICAgIGJvb2wgaGFzQm91bmRQcm9n
cmFtKEdMdWludCBwcm9ncmFtKSBjb25zdDsKKwogICAgIHZvaWQgYmluZEdlbmVyaWNCdWZmZXIo
QnVmZmVyICpidWZmZXIpOwogICAgIGNvbnN0IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEdl
bmVyaWNCdWZmZXIoKSBjb25zdDsKIApAQCAtNDUsMTYgKzUzLDI0IEBACiAgICAgY29uc3QgT2Zm
c2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmZ2V0SW5kZXhlZEJ1ZmZlcihzaXplX3QgaW5kZXgp
IGNvbnN0OwogICAgIHNpemVfdCBnZXRJbmRleGVkQnVmZmVyQ291bnQoKSBjb25zdDsKIAorICAg
IHZvaWQgZGV0YWNoQnVmZmVyKEdMdWludCBidWZmZXJOYW1lKTsKKwogICAgIHJ4OjpUcmFuc2Zv
cm1GZWVkYmFja0ltcGwgKmdldEltcGxlbWVudGF0aW9uKCk7CiAgICAgY29uc3Qgcng6OlRyYW5z
Zm9ybUZlZWRiYWNrSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdDsKIAogICBwcml2YXRl
OgorICAgIHZvaWQgYmluZFByb2dyYW0oUHJvZ3JhbSAqcHJvZ3JhbSk7CisKICAgICByeDo6VHJh
bnNmb3JtRmVlZGJhY2tJbXBsKiBtSW1wbGVtZW50YXRpb247CiAKKyAgICBzdGQ6OnN0cmluZyBt
TGFiZWw7CisKICAgICBib29sIG1BY3RpdmU7CiAgICAgR0xlbnVtIG1QcmltaXRpdmVNb2RlOwog
ICAgIGJvb2wgbVBhdXNlZDsKIAorICAgIFByb2dyYW0gKm1Qcm9ncmFtOworCiAgICAgQmluZGlu
Z1BvaW50ZXI8QnVmZmVyPiBtR2VuZXJpY0J1ZmZlcjsKICAgICBzdGQ6OnZlY3RvcjxPZmZzZXRC
aW5kaW5nUG9pbnRlcjxCdWZmZXI+PiBtSW5kZXhlZEJ1ZmZlcnM7CiB9OwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrX3VuaXR0ZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRlc3QuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRl
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02LDEwICs2LDEyIEBACiAKICNpbmNsdWRlICJnbW9j
ay9nbW9jay5oIgogI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
QnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L1RyYW5zZm9ybUZlZWRiYWNrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQnVmZmVy
SW1wbF9tb2NrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVHJhbnNmb3JtRmVlZGJh
Y2tJbXBsX21vY2suaCIKKyNpbmNsdWRlICJ0ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaCIK
IAogdXNpbmcgOjp0ZXN0aW5nOjpfOwogdXNpbmcgOjp0ZXN0aW5nOjpSZXR1cm47CkBAIC0xOCw1
MiArMjAsNTggQEAKIG5hbWVzcGFjZQogewogCitjbGFzcyBNb2NrRmFjdG9yeSA6IHB1YmxpYyBy
eDo6TnVsbEZhY3RvcnkKK3sKKyAgcHVibGljOgorICAgIE1PQ0tfTUVUSE9EMChjcmVhdGVUcmFu
c2Zvcm1GZWVkYmFjaywgcng6OlRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqKCkpOworfTsKKwogY2xh
c3MgVHJhbnNmb3JtRmVlZGJhY2tUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKIHsKICAgcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgVHJhbnNmb3JtRmVlZGJhY2tU
ZXN0KCkgOiBtSW1wbChudWxscHRyKSwgbUZlZWRiYWNrKG51bGxwdHIpIHt9CisKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKICAgICB7CisgICAgICAgIG1JbXBsID0gbmV3IHJ4OjpNb2NrVHJh
bnNmb3JtRmVlZGJhY2tJbXBsOworICAgICAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkpCisgICAgICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKG1J
bXBsKSkKKyAgICAgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisKICAgICAgICAgLy8g
U2V0IGEgcmVhc29uYWJsZSBudW1iZXIgb2YgdGYgYXR0cmlidXRlcwogICAgICAgICBtQ2Fwcy5t
YXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcyA9IDg7CiAKLSAgICAgICAgbUlt
cGwgPSBuZXcgcng6Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGw7CiAgICAgICAgIEVYUEVDVF9D
QUxMKCptSW1wbCwgZGVzdHJ1Y3RvcigpKTsKLSAgICAgICAgbUZlZWRiYWNrID0gbmV3IGdsOjpU
cmFuc2Zvcm1GZWVkYmFjayhtSW1wbCwgMSwgbUNhcHMpOworICAgICAgICBtRmVlZGJhY2sgPSBu
ZXcgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrKCZtTW9ja0ZhY3RvcnksIDEsIG1DYXBzKTsKICAgICAg
ICAgbUZlZWRiYWNrLT5hZGRSZWYoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRv
d24oKQorICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgbUZlZWRi
YWNrLT5yZWxlYXNlKCk7CisgICAgICAgIGlmIChtRmVlZGJhY2spCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1GZWVkYmFjay0+cmVsZWFzZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gT25s
eSBuZWVkZWQgYmVjYXVzZSB0aGUgbW9jayBpcyBsZWFrZWQgaWYgYnVncyBhcmUgcHJlc2VudCwK
KyAgICAgICAgLy8gd2hpY2ggbG9ncyBhbiBlcnJvciwgYnV0IGRvZXMgbm90IGNhdXNlIHRoZSB0
ZXN0IHRvIGZhaWwuCisgICAgICAgIC8vIE9yZGluYXJpbHkgbW9ja3MgYXJlIHZlcmlmaWVkIHdo
ZW4gZGVzdHJveWVkLgorICAgICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhcihtSW1w
bCk7CiAgICAgfQogCisgICAgTW9ja0ZhY3RvcnkgbU1vY2tGYWN0b3J5OwogICAgIHJ4OjpNb2Nr
VHJhbnNmb3JtRmVlZGJhY2tJbXBsKiBtSW1wbDsKICAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sq
IG1GZWVkYmFjazsKICAgICBnbDo6Q2FwcyBtQ2FwczsKIH07CiAKLVRFU1RfRihUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3QsIERlc3RydWN0aW9uRGVsZXRlc0ltcGwpCi17Ci0gICAgcng6Ok1vY2tUcmFu
c2Zvcm1GZWVkYmFja0ltcGwqIGltcGwgPSBuZXcgcng6Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0lt
cGw7Ci0gICAgRVhQRUNUX0NBTEwoKmltcGwsIGRlc3RydWN0b3IoKSkuVGltZXMoMSkuUmV0aXJl
c09uU2F0dXJhdGlvbigpOwotCi0gICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFjayA9
IG5ldyBnbDo6VHJhbnNmb3JtRmVlZGJhY2soaW1wbCwgMSwgbUNhcHMpOwotICAgIGZlZWRiYWNr
LT5hZGRSZWYoKTsKLSAgICBmZWVkYmFjay0+cmVsZWFzZSgpOwotCi0gICAgLy8gT25seSBuZWVk
ZWQgYmVjYXVzZSB0aGUgbW9jayBpcyBsZWFrZWQgaWYgYnVncyBhcmUgcHJlc2VudCwKLSAgICAv
LyB3aGljaCBsb2dzIGFuIGVycm9yLCBidXQgZG9lcyBub3QgY2F1c2UgdGhlIHRlc3QgdG8gZmFp
bC4KLSAgICAvLyBPcmRpbmFyaWx5IG1vY2tzIGFyZSB2ZXJpZmllZCB3aGVuIGRlc3Ryb3llZC4K
LSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhcihpbXBsKTsKLX0KLQogVEVTVF9GKFRy
YW5zZm9ybUZlZWRiYWNrVGVzdCwgU2lkZUVmZmVjdHNPZlN0YXJ0QW5kU3RvcCkKIHsKICAgICB0
ZXN0aW5nOjpJblNlcXVlbmNlIHNlcTsKIAogICAgIEVYUEVDVF9GQUxTRShtRmVlZGJhY2stPmlz
QWN0aXZlKCkpOwogICAgIEVYUEVDVF9DQUxMKCptSW1wbCwgYmVnaW4oR0xfVFJJQU5HTEVTKSk7
Ci0gICAgbUZlZWRiYWNrLT5iZWdpbihHTF9UUklBTkdMRVMpOworICAgIG1GZWVkYmFjay0+YmVn
aW4oR0xfVFJJQU5HTEVTLCBudWxscHRyKTsKICAgICBFWFBFQ1RfVFJVRShtRmVlZGJhY2stPmlz
QWN0aXZlKCkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX1RSSUFOR0xF
UyksIG1GZWVkYmFjay0+Z2V0UHJpbWl0aXZlTW9kZSgpKTsKICAgICBFWFBFQ1RfQ0FMTCgqbUlt
cGwsIGVuZCgpKTsKQEAgLTc3LDcgKzg1LDcgQEAKIAogICAgIEVYUEVDVF9GQUxTRShtRmVlZGJh
Y2stPmlzQWN0aXZlKCkpOwogICAgIEVYUEVDVF9DQUxMKCptSW1wbCwgYmVnaW4oR0xfVFJJQU5H
TEVTKSk7Ci0gICAgbUZlZWRiYWNrLT5iZWdpbihHTF9UUklBTkdMRVMpOworICAgIG1GZWVkYmFj
ay0+YmVnaW4oR0xfVFJJQU5HTEVTLCBudWxscHRyKTsKICAgICBFWFBFQ1RfRkFMU0UobUZlZWRi
YWNrLT5pc1BhdXNlZCgpKTsKICAgICBFWFBFQ1RfQ0FMTCgqbUltcGwsIHBhdXNlKCkpOwogICAg
IG1GZWVkYmFjay0+cGF1c2UoKTsKQEAgLTk3LDM1ICsxMDUsMzYgQEAKIAogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgYmluZEluZGV4ID0gMDsKIAotICAgIHJ4OjpNb2NrVHJhbnNmb3JtRmVlZGJh
Y2tJbXBsICpmZWVkYmFja0ltcGwgPSBuZXcgcng6Ok1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGw7
Ci0gICAgRVhQRUNUX0NBTEwoKmZlZWRiYWNrSW1wbCwgZGVzdHJ1Y3RvcigpKS5UaW1lcygxKS5S
ZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgRVhQRUNUX0VRKG1GZWVkYmFjay0+Z2V0SW5kZXhl
ZEJ1ZmZlckNvdW50KCksIG1DYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1
dGVzKTsKIAotICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFjayAqZmVlZGJhY2sgPSBuZXcgZ2w6OlRy
YW5zZm9ybUZlZWRiYWNrKGZlZWRiYWNrSW1wbCwgMSwgbUNhcHMpOworICAgIEVYUEVDVF9DQUxM
KCptSW1wbCwgYmluZEdlbmVyaWNCdWZmZXIoXykpOworICAgIG1GZWVkYmFjay0+YmluZEdlbmVy
aWNCdWZmZXIoYnVmZmVyKTsKKyAgICBFWFBFQ1RfRVEobUZlZWRiYWNrLT5nZXRHZW5lcmljQnVm
ZmVyKCkuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICBFWFBFQ1RfRVEoZmVlZGJhY2stPmdldEluZGV4
ZWRCdWZmZXJDb3VudCgpLCBtQ2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmli
dXRlcyk7Ci0KLSAgICBFWFBFQ1RfQ0FMTCgqZmVlZGJhY2tJbXBsLCBiaW5kR2VuZXJpY0J1ZmZl
cihfKSk7Ci0gICAgZmVlZGJhY2stPmJpbmRHZW5lcmljQnVmZmVyKGJ1ZmZlcik7Ci0gICAgRVhQ
RUNUX0VRKGZlZWRiYWNrLT5nZXRHZW5lcmljQnVmZmVyKCkuZ2V0KCksIGJ1ZmZlcik7Ci0KLSAg
ICBFWFBFQ1RfQ0FMTCgqZmVlZGJhY2tJbXBsLCBiaW5kSW5kZXhlZEJ1ZmZlcihfLCBfKSk7Ci0g
ICAgZmVlZGJhY2stPmJpbmRJbmRleGVkQnVmZmVyKGJpbmRJbmRleCwgYnVmZmVyLCAwLCAxKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291
bnQoKTsgaSsrKQorICAgIEVYUEVDVF9DQUxMKCptSW1wbCwgYmluZEluZGV4ZWRCdWZmZXIoXywg
XykpOworICAgIG1GZWVkYmFjay0+YmluZEluZGV4ZWRCdWZmZXIoYmluZEluZGV4LCBidWZmZXIs
IDAsIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZlZWRiYWNrLT5nZXRJbmRleGVk
QnVmZmVyQ291bnQoKTsgaSsrKQogICAgIHsKICAgICAgICAgaWYgKGkgPT0gYmluZEluZGV4KQog
ICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZmVlZGJhY2stPmdldEluZGV4ZWRCdWZm
ZXIoaSkuZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgICAgICBFWFBFQ1RfRVEobUZlZWRiYWNrLT5n
ZXRJbmRleGVkQnVmZmVyKGkpLmdldCgpLCBidWZmZXIpOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UKICAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0VRKGZlZWRiYWNrLT5nZXRJbmRleGVk
QnVmZmVyKGkpLmdldCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShtRmVlZGJh
Y2stPmdldEluZGV4ZWRCdWZmZXIoaSkuZ2V0KCksIG51bGxwdHIpOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgZmVlZGJhY2stPmFkZFJlZigpOwotICAgIGZlZWRiYWNrLT5yZWxlYXNlKCk7Cisg
ICAgLy8gZm9yY2UtcmVsZWFzZSB0aGUgZmVlZGJhY2sgb2JqZWN0IHRvIGVuc3VyZSB0aGUgYnVm
ZmVyIGlzIHJlbGVhc2VkLgorICAgIGNvbnN0IHNpemVfdCByZWxlYXNlQ291bnQgPSBtRmVlZGJh
Y2stPmdldFJlZkNvdW50KCk7CisgICAgZm9yIChzaXplX3QgY291bnQgPSAwOyBjb3VudCA8IHJl
bGVhc2VDb3VudDsgKytjb3VudCkKKyAgICB7CisgICAgICAgIG1GZWVkYmFjay0+cmVsZWFzZSgp
OworICAgIH0KIAorICAgIG1GZWVkYmFjayA9IG51bGxwdHI7CisKICAgICB0ZXN0aW5nOjpNb2Nr
OjpWZXJpZnlBbmRDbGVhcihidWZmZXJJbXBsKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Vbmlmb3JtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVW5pZm9ybS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTMsNTUgKzEzLDUxIEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotTGlua2VkVW5pZm9ybTo6TGlu
a2VkVW5pZm9ybShHTGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUsIHVuc2lnbmVkIGludCBhcnJheVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGludCBibG9ja0luZGV4LCBjb25zdCBzaDo6QmxvY2tNZW1iZXJJbmZvICZi
bG9ja0luZm8pCi0gICAgOiB0eXBlKHR5cGUpLAotICAgICAgcHJlY2lzaW9uKHByZWNpc2lvbiks
Ci0gICAgICBuYW1lKG5hbWUpLAotICAgICAgYXJyYXlTaXplKGFycmF5U2l6ZSksCi0gICAgICBi
bG9ja0luZGV4KGJsb2NrSW5kZXgpLAotICAgICAgYmxvY2tJbmZvKGJsb2NrSW5mbyksCi0gICAg
ICBkYXRhKE5VTEwpLAotICAgICAgZGlydHkodHJ1ZSksCi0gICAgICBwc1JlZ2lzdGVySW5kZXgo
R0xfSU5WQUxJRF9JTkRFWCksCi0gICAgICB2c1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRF
WCksCi0gICAgICByZWdpc3RlckNvdW50KDApLAotICAgICAgcmVnaXN0ZXJFbGVtZW50KDApCitM
aW5rZWRVbmlmb3JtOjpMaW5rZWRVbmlmb3JtKCkKKyAgICA6IGJsb2NrSW5kZXgoLTEpLCBibG9j
a0luZm8oc2g6OkJsb2NrTWVtYmVySW5mbzo6Z2V0RGVmYXVsdEJsb2NrSW5mbygpKQogewotICAg
IC8vIFdlIHVzZSBkYXRhIHN0b3JhZ2UgZm9yIGRlZmF1bHQgYmxvY2sgdW5pZm9ybXMgdG8gY2Fj
aGUgdmFsdWVzIHRoYXQgYXJlIHNlbnQgdG8gRDNEIGR1cmluZyByZW5kZXJpbmcKLSAgICAvLyBV
bmlmb3JtIGJsb2Nrcy9idWZmZXJzIGFyZSB0cmVhdGVkIHNlcGFyYXRlbHkgYnkgdGhlIFJlbmRl
cmVyIChFUzMgcGF0aCBvbmx5KQotICAgIGlmIChpc0luRGVmYXVsdEJsb2NrKCkpCi0gICAgewot
ICAgICAgICBzaXplX3QgYnl0ZXMgPSBkYXRhU2l6ZSgpOwotICAgICAgICBkYXRhID0gbmV3IHVu
c2lnbmVkIGNoYXJbYnl0ZXNdOwotICAgICAgICBtZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOwotICAg
ICAgICByZWdpc3RlckNvdW50ID0gVmFyaWFibGVSb3dDb3VudCh0eXBlKSAqIGVsZW1lbnRDb3Vu
dCgpOwotICAgIH0KIH0KIAotTGlua2VkVW5pZm9ybTo6fkxpbmtlZFVuaWZvcm0oKQorTGlua2Vk
VW5pZm9ybTo6TGlua2VkVW5pZm9ybShHTGVudW0gdHlwZUluLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcHJlY2lzaW9uSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBhcnJheVNpemVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgaW50IGJsb2NrSW5kZXhJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc2g6OkJsb2NrTWVtYmVySW5mbyAmYmxvY2tJbmZvSW4pCisgICAgOiBibG9ja0luZGV4
KGJsb2NrSW5kZXhJbiksIGJsb2NrSW5mbyhibG9ja0luZm9JbikKIHsKLSAgICBkZWxldGVbXSBk
YXRhOworICAgIHR5cGUgICAgICA9IHR5cGVJbjsKKyAgICBwcmVjaXNpb24gPSBwcmVjaXNpb25J
bjsKKyAgICBuYW1lICAgICAgPSBuYW1lSW47CisgICAgYXJyYXlTaXplID0gYXJyYXlTaXplSW47
CiB9CiAKLWJvb2wgTGlua2VkVW5pZm9ybTo6aXNBcnJheSgpIGNvbnN0CitMaW5rZWRVbmlmb3Jt
OjpMaW5rZWRVbmlmb3JtKGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtKQorICAgIDogc2g6OlVu
aWZvcm0odW5pZm9ybSksIGJsb2NrSW5kZXgoLTEpLCBibG9ja0luZm8oc2g6OkJsb2NrTWVtYmVy
SW5mbzo6Z2V0RGVmYXVsdEJsb2NrSW5mbygpKQogewotICAgIHJldHVybiBhcnJheVNpemUgPiAw
OwogfQogCi11bnNpZ25lZCBpbnQgTGlua2VkVW5pZm9ybTo6ZWxlbWVudENvdW50KCkgY29uc3QK
K0xpbmtlZFVuaWZvcm06OkxpbmtlZFVuaWZvcm0oY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9y
bSkKKyAgICA6IHNoOjpVbmlmb3JtKHVuaWZvcm0pLCBibG9ja0luZGV4KHVuaWZvcm0uYmxvY2tJ
bmRleCksIGJsb2NrSW5mbyh1bmlmb3JtLmJsb2NrSW5mbykKIHsKLSAgICByZXR1cm4gYXJyYXlT
aXplID4gMCA/IGFycmF5U2l6ZSA6IDE7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgaW50
ZW5kZWQgdG8gYmUgY2FsbGVkIGR1cmluZyBydW50aW1lLgorICAgIEFTU0VSVCh1bmlmb3JtLm1M
YXp5RGF0YS5lbXB0eSgpKTsKIH0KIAotYm9vbCBMaW5rZWRVbmlmb3JtOjppc1JlZmVyZW5jZWRC
eVZlcnRleFNoYWRlcigpIGNvbnN0CitMaW5rZWRVbmlmb3JtICZMaW5rZWRVbmlmb3JtOjpvcGVy
YXRvcj0oY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSkKIHsKLSAgICByZXR1cm4gdnNSZWdp
c3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBu
b3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGR1cmluZyBydW50aW1lLgorICAgIEFTU0VSVCh1bmlm
b3JtLm1MYXp5RGF0YS5lbXB0eSgpKTsKKworICAgIHNoOjpVbmlmb3JtOjpvcGVyYXRvcj0odW5p
Zm9ybSk7CisgICAgYmxvY2tJbmRleCAgICAgICAgICAgPSB1bmlmb3JtLmJsb2NrSW5kZXg7Cisg
ICAgYmxvY2tJbmZvICAgICAgICAgICAgPSB1bmlmb3JtLmJsb2NrSW5mbzsKKworICAgIHJldHVy
biAqdGhpczsKIH0KIAotYm9vbCBMaW5rZWRVbmlmb3JtOjppc1JlZmVyZW5jZWRCeUZyYWdtZW50
U2hhZGVyKCkgY29uc3QKK0xpbmtlZFVuaWZvcm06On5MaW5rZWRVbmlmb3JtKCkKIHsKLSAgICBy
ZXR1cm4gcHNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7CiB9CiAKIGJvb2wgTGlu
a2VkVW5pZm9ybTo6aXNJbkRlZmF1bHRCbG9jaygpIGNvbnN0CkBAIC03Miw0MSArNjgsODIgQEAK
IHNpemVfdCBMaW5rZWRVbmlmb3JtOjpkYXRhU2l6ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHR5
cGUgIT0gR0xfU1RSVUNUX0FOR0xFWCk7Ci0gICAgcmV0dXJuIFZhcmlhYmxlSW50ZXJuYWxTaXpl
KHR5cGUpICogZWxlbWVudENvdW50KCk7CisgICAgaWYgKG1MYXp5RGF0YS5lbXB0eSgpKQorICAg
IHsKKyAgICAgICAgbUxhenlEYXRhLnJlc2l6ZShWYXJpYWJsZUV4dGVybmFsU2l6ZSh0eXBlKSAq
IGVsZW1lbnRDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCFtTGF6eURhdGEuZW1wdHkoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1MYXp5RGF0YS5zaXplKCk7CiB9CiAKK3VpbnQ4X3QgKkxpbmtl
ZFVuaWZvcm06OmRhdGEoKQoreworICAgIGlmIChtTGF6eURhdGEuZW1wdHkoKSkKKyAgICB7Cisg
ICAgICAgIC8vIGRhdGFTaXplKCkgd2lsbCBpbml0IHRoZSBkYXRhIHN0b3JlLgorICAgICAgICBz
aXplX3Qgc2l6ZSA9IGRhdGFTaXplKCk7CisgICAgICAgIG1lbXNldChtTGF6eURhdGEuZGF0YSgp
LCAwLCBzaXplKTsKKyAgICB9CisKKyAgICByZXR1cm4gbUxhenlEYXRhLmRhdGEoKTsKK30KKwor
Y29uc3QgdWludDhfdCAqTGlua2VkVW5pZm9ybTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8TGlua2VkVW5pZm9ybSAqPih0aGlzKS0+ZGF0YSgpOworfQorCiBib29sIExp
bmtlZFVuaWZvcm06OmlzU2FtcGxlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIElzU2FtcGxlclR5
cGUodHlwZSk7CiB9CiAKLWJvb2wgTGlua2VkVW5pZm9ybTo6aXNCdWlsdEluKCkgY29uc3QKK2Jv
b2wgTGlua2VkVW5pZm9ybTo6aXNGaWVsZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG5hbWUuY29t
cGFyZSgwLCAzLCAiZ2xfIikgPT0gMDsKKyAgICByZXR1cm4gbmFtZS5maW5kKCcuJykgIT0gc3Rk
OjpzdHJpbmc6Om5wb3M7CiB9CiAKLVVuaWZvcm1CbG9jazo6VW5pZm9ybUJsb2NrKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4LCB1bnNpZ25lZCBpbnQg
ZGF0YVNpemUpCi0gICAgOiBuYW1lKG5hbWUpLAotICAgICAgZWxlbWVudEluZGV4KGVsZW1lbnRJ
bmRleCksCi0gICAgICBkYXRhU2l6ZShkYXRhU2l6ZSksCi0gICAgICBwc1JlZ2lzdGVySW5kZXgo
R0xfSU5WQUxJRF9JTkRFWCksCi0gICAgICB2c1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRF
WCkKK3NpemVfdCBMaW5rZWRVbmlmb3JtOjpnZXRFbGVtZW50U2l6ZSgpIGNvbnN0CiB7CisgICAg
cmV0dXJuIFZhcmlhYmxlRXh0ZXJuYWxTaXplKHR5cGUpOwogfQogCi1ib29sIFVuaWZvcm1CbG9j
azo6aXNBcnJheUVsZW1lbnQoKSBjb25zdAordWludDhfdCAqTGlua2VkVW5pZm9ybTo6Z2V0RGF0
YVB0clRvRWxlbWVudChzaXplX3QgZWxlbWVudEluZGV4KQogewotICAgIHJldHVybiBlbGVtZW50
SW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsKKyAgICBBU1NFUlQoKCFpc0FycmF5KCkgJiYgZWxl
bWVudEluZGV4ID09IDApIHx8IChpc0FycmF5KCkgJiYgZWxlbWVudEluZGV4IDwgYXJyYXlTaXpl
KSk7CisgICAgcmV0dXJuIGRhdGEoKSArIGdldEVsZW1lbnRTaXplKCkgKiBlbGVtZW50SW5kZXg7
CiB9CiAKLWJvb2wgVW5pZm9ybUJsb2NrOjppc1JlZmVyZW5jZWRCeVZlcnRleFNoYWRlcigpIGNv
bnN0Citjb25zdCB1aW50OF90ICpMaW5rZWRVbmlmb3JtOjpnZXREYXRhUHRyVG9FbGVtZW50KHNp
emVfdCBlbGVtZW50SW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHZzUmVnaXN0ZXJJbmRleCAh
PSBHTF9JTlZBTElEX0lOREVYOworICAgIHJldHVybiBjb25zdF9jYXN0PExpbmtlZFVuaWZvcm0g
Kj4odGhpcyktPmdldERhdGFQdHJUb0VsZW1lbnQoZWxlbWVudEluZGV4KTsKIH0KIAotYm9vbCBV
bmlmb3JtQmxvY2s6OmlzUmVmZXJlbmNlZEJ5RnJhZ21lbnRTaGFkZXIoKSBjb25zdAorVW5pZm9y
bUJsb2NrOjpVbmlmb3JtQmxvY2soKQorICAgIDogaXNBcnJheShmYWxzZSksIGFycmF5RWxlbWVu
dCgwKSwgZGF0YVNpemUoMCksIHZlcnRleFN0YXRpY1VzZShmYWxzZSksIGZyYWdtZW50U3RhdGlj
VXNlKGZhbHNlKQogewotICAgIHJldHVybiBwc1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9J
TkRFWDsKIH0KIAorVW5pZm9ybUJsb2NrOjpVbmlmb3JtQmxvY2soY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWVJbiwgYm9vbCBpc0FycmF5SW4sIHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnRJbikKKyAg
ICA6IG5hbWUobmFtZUluKSwKKyAgICAgIGlzQXJyYXkoaXNBcnJheUluKSwKKyAgICAgIGFycmF5
RWxlbWVudChhcnJheUVsZW1lbnRJbiksCisgICAgICBkYXRhU2l6ZSgwKSwKKyAgICAgIHZlcnRl
eFN0YXRpY1VzZShmYWxzZSksCisgICAgICBmcmFnbWVudFN0YXRpY1VzZShmYWxzZSkKK3sKIH0K
Kworc3RkOjpzdHJpbmcgVW5pZm9ybUJsb2NrOjpuYW1lV2l0aEFycmF5SW5kZXgoKSBjb25zdAor
eworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGZ1bGxOYW1lU3RyOworICAgIGZ1bGxOYW1lU3RyIDw8
IG5hbWU7CisgICAgaWYgKGlzQXJyYXkpCisgICAgeworICAgICAgICBmdWxsTmFtZVN0ciA8PCAi
WyIgPDwgYXJyYXlFbGVtZW50IDw8ICJdIjsKKyAgICB9CisKKyAgICByZXR1cm4gZnVsbE5hbWVT
dHIuc3RyKCk7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvVW5pZm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Vbmlmb3JtLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEy
LDcgQEAKIAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAiY29tbW9uL01lbW9yeUJ1ZmZlci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvYmxvY2tsYXlvdXQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgi
CiAKQEAgLTE5LDU4ICsyMCw1MSBAQAogewogCiAvLyBIZWxwZXIgc3RydWN0IHJlcHJlc2VudGlu
ZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9ybQotc3RydWN0IExpbmtlZFVuaWZvcm0gOiBhbmdsZTo6
Tm9uQ29weWFibGUKK3N0cnVjdCBMaW5rZWRVbmlmb3JtIDogcHVibGljIHNoOjpVbmlmb3JtCiB7
CisgICAgTGlua2VkVW5pZm9ybSgpOwogICAgIExpbmtlZFVuaWZvcm0oR0xlbnVtIHR5cGUsIEdM
ZW51bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJy
YXlTaXplLCBjb25zdCBpbnQgYmxvY2tJbmRleCwgY29uc3Qgc2g6OkJsb2NrTWVtYmVySW5mbyAm
YmxvY2tJbmZvKTsKLQorICAgIExpbmtlZFVuaWZvcm0oY29uc3Qgc2g6OlVuaWZvcm0gJnVuaWZv
cm0pOworICAgIExpbmtlZFVuaWZvcm0oY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSk7Cisg
ICAgTGlua2VkVW5pZm9ybSAmb3BlcmF0b3I9KGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0p
OwogICAgIH5MaW5rZWRVbmlmb3JtKCk7CiAKLSAgICBib29sIGlzQXJyYXkoKSBjb25zdDsKLSAg
ICB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1JlZmVyZW5j
ZWRCeVZlcnRleFNoYWRlcigpIGNvbnN0OwotICAgIGJvb2wgaXNSZWZlcmVuY2VkQnlGcmFnbWVu
dFNoYWRlcigpIGNvbnN0OwotICAgIGJvb2wgaXNJbkRlZmF1bHRCbG9jaygpIGNvbnN0OwogICAg
IHNpemVfdCBkYXRhU2l6ZSgpIGNvbnN0OworICAgIHVpbnQ4X3QgKmRhdGEoKTsKKyAgICBjb25z
dCB1aW50OF90ICpkYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NhbXBsZXIoKSBjb25zdDsKLSAg
ICBib29sIGlzQnVpbHRJbigpIGNvbnN0OworICAgIGJvb2wgaXNJbkRlZmF1bHRCbG9jaygpIGNv
bnN0OworICAgIGJvb2wgaXNGaWVsZCgpIGNvbnN0OworICAgIHNpemVfdCBnZXRFbGVtZW50U2l6
ZSgpIGNvbnN0OworICAgIHVpbnQ4X3QgKmdldERhdGFQdHJUb0VsZW1lbnQoc2l6ZV90IGVsZW1l
bnRJbmRleCk7CisgICAgY29uc3QgdWludDhfdCAqZ2V0RGF0YVB0clRvRWxlbWVudChzaXplX3Qg
ZWxlbWVudEluZGV4KSBjb25zdDsKIAotICAgIGNvbnN0IEdMZW51bSB0eXBlOwotICAgIGNvbnN0
IEdMZW51bSBwcmVjaXNpb247Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZTsKLSAgICBjb25z
dCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOwotICAgIGNvbnN0IGludCBibG9ja0luZGV4OwotICAg
IGNvbnN0IHNoOjpCbG9ja01lbWJlckluZm8gYmxvY2tJbmZvOworICAgIGludCBibG9ja0luZGV4
OworICAgIHNoOjpCbG9ja01lbWJlckluZm8gYmxvY2tJbmZvOwogCi0gICAgdW5zaWduZWQgY2hh
ciAqZGF0YTsKLSAgICBib29sIGRpcnR5OwotCi0gICAgdW5zaWduZWQgaW50IHBzUmVnaXN0ZXJJ
bmRleDsKLSAgICB1bnNpZ25lZCBpbnQgdnNSZWdpc3RlckluZGV4OwotICAgIHVuc2lnbmVkIGlu
dCByZWdpc3RlckNvdW50OwotCi0gICAgLy8gUmVnaXN0ZXIgImVsZW1lbnRzIiBhcmUgdXNlZCBm
b3IgdW5pZm9ybSBzdHJ1Y3RzIGluIEVTMywgdG8gYXBwcm9wcmlhdGVseSBpZGVudGlmeSBzaW5n
bGUgdW5pZm9ybXMKLSAgICAvLyBpbnNpZGUgYWdncmVnYXRlIHR5cGVzLCB3aGljaCBhcmUgcGFj
a2VkIGFjY29yZGluZyBDLWxpa2Ugc3RydWN0dXJlIHJ1bGVzLgotICAgIHVuc2lnbmVkIGludCBy
ZWdpc3RlckVsZW1lbnQ7CisgIHByaXZhdGU6CisgICAgbXV0YWJsZSByeDo6TWVtb3J5QnVmZmVy
IG1MYXp5RGF0YTsKIH07CiAKIC8vIEhlbHBlciBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgc2luZ2xl
IHNoYWRlciB1bmlmb3JtIGJsb2NrCi1zdHJ1Y3QgVW5pZm9ybUJsb2NrIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCitzdHJ1Y3QgVW5pZm9ybUJsb2NrCiB7Ci0gICAgLy8gdXNlIEdMX0lOVkFMSURfSU5E
RVggZm9yIG5vbi1hcnJheSBlbGVtZW50cwotICAgIFVuaWZvcm1CbG9jayhjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSwgdW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCwgdW5zaWduZWQgaW50IGRhdGFT
aXplKTsKKyAgICBVbmlmb3JtQmxvY2soKTsKKyAgICBVbmlmb3JtQmxvY2soY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWVJbiwgYm9vbCBpc0FycmF5SW4sIHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnRJ
bik7CisgICAgVW5pZm9ybUJsb2NrKGNvbnN0IFVuaWZvcm1CbG9jayAmb3RoZXIpID0gZGVmYXVs
dDsKKyAgICBVbmlmb3JtQmxvY2sgJm9wZXJhdG9yPShjb25zdCBVbmlmb3JtQmxvY2sgJm90aGVy
KSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIGlzQXJyYXlFbGVtZW50KCkgY29uc3Q7Ci0gICAgYm9v
bCBpc1JlZmVyZW5jZWRCeVZlcnRleFNoYWRlcigpIGNvbnN0OwotICAgIGJvb2wgaXNSZWZlcmVu
Y2VkQnlGcmFnbWVudFNoYWRlcigpIGNvbnN0OworICAgIHN0ZDo6c3RyaW5nIG5hbWVXaXRoQXJy
YXlJbmRleCgpIGNvbnN0OwogCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgbmFtZTsKLSAgICBjb25z
dCB1bnNpZ25lZCBpbnQgZWxlbWVudEluZGV4OwotICAgIGNvbnN0IHVuc2lnbmVkIGludCBkYXRh
U2l6ZTsKKyAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgIGJvb2wgaXNBcnJheTsKKyAgICB1bnNp
Z25lZCBpbnQgYXJyYXlFbGVtZW50OworICAgIHVuc2lnbmVkIGludCBkYXRhU2l6ZTsKIAorICAg
IGJvb2wgdmVydGV4U3RhdGljVXNlOworICAgIGJvb2wgZnJhZ21lbnRTdGF0aWNVc2U7CisKICAg
ICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBpbnQ+IG1lbWJlclVuaWZvcm1JbmRleGVzOwotCi0gICAg
dW5zaWduZWQgaW50IHBzUmVnaXN0ZXJJbmRleDsKLSAgICB1bnNpZ25lZCBpbnQgdnNSZWdpc3Rl
ckluZGV4OwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1ZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVmVyc2lvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gVmVyc2lvbi5oOiBFbmNhcHN1bGF0aW9uIG9mIGEgR0wgdmVy
c2lvbi4KKworI2lmbmRlZiBMSUJBTkdMRV9WRVJTSU9OX0hfCisjZGVmaW5lIExJQkFOR0xFX1ZF
UlNJT05fSF8KKworI2luY2x1ZGUgPGFuZ2xlX2dsLmg+CisKK25hbWVzcGFjZSBnbAoreworCitz
dHJ1Y3QgVmVyc2lvbgoreworICAgIFZlcnNpb24oKTsKKyAgICBWZXJzaW9uKEdMdWludCBtYWpv
ciwgR0x1aW50IG1pbm9yKTsKKworICAgIEdMdWludCBtYWpvcjsKKyAgICBHTHVpbnQgbWlub3I7
Cit9OworCitib29sIG9wZXJhdG9yPj0oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAm
Yik7Citib29sIG9wZXJhdG9yPChjb25zdCBWZXJzaW9uICZhLCBjb25zdCBWZXJzaW9uICZiKTsK
KworfQorCisjaW5jbHVkZSAiVmVyc2lvbi5pbmwiCisKKyNlbmRpZiAvLyBMSUJBTkdMRV9WRVJT
SU9OX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVyc2lv
bi5pbmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1ZlcnNpb24uaW5sCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1ZlcnNpb24uaW5sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCisvLyBWZXJzaW9uLmlubDogRW5jYXBzdWxhdGlvbiBvZiBhIEdMIHZlcnNp
b24uCisKK25hbWVzcGFjZSBnbAoreworCitpbmxpbmUgVmVyc2lvbjo6VmVyc2lvbigpCisgICAg
OiBWZXJzaW9uKDAsIDApCit7Cit9CisKK2lubGluZSBWZXJzaW9uOjpWZXJzaW9uKEdMdWludCBt
YWpvcl8sIEdMdWludCBtaW5vcl8pCit7CisgICAgbWFqb3IgPSBtYWpvcl87CisgICAgbWlub3Ig
PSBtaW5vcl87Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVmVyc2lvbiAmYSwg
Y29uc3QgVmVyc2lvbiAmYikKK3sKKyAgICByZXR1cm4gYS5tYWpvciA+IGIubWFqb3IgfHwgKGEu
bWFqb3IgPT0gYi5tYWpvciAmJiBhLm1pbm9yID49IGIubWlub3IpOworfQorCitpbmxpbmUgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYikKK3sKKyAgICBy
ZXR1cm4gIShhID49IGIpOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvVmVydGV4QXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJheS5jcHAJKHJldmlzaW9uIDE5OTY4MikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJheS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgsMTA4ICs4LDEzMSBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUv
VmVydGV4QXJyYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9JbXBsRmFjdG9yeS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL1ZlcnRleEFycmF5SW1wbC5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKIAotVmVydGV4QXJyYXk6
OlZlcnRleEFycmF5KHJ4OjpWZXJ0ZXhBcnJheUltcGwgKmltcGwsIEdMdWludCBpZCwgc2l6ZV90
IG1heEF0dHJpYnMpCi0gICAgOiBtSWQoaWQpLAotICAgICAgbVZlcnRleEFycmF5KGltcGwpLAot
ICAgICAgbVZlcnRleEF0dHJpYnV0ZXMobWF4QXR0cmlicyksCi0gICAgICBtTWF4RW5hYmxlZEF0
dHJpYnV0ZSgwKQorVmVydGV4QXJyYXk6OkRhdGE6OkRhdGEoc2l6ZV90IG1heEF0dHJpYnMpCisg
ICAgOiBtTGFiZWwoKSwgbVZlcnRleEF0dHJpYnV0ZXMobWF4QXR0cmlicyksIG1NYXhFbmFibGVk
QXR0cmlidXRlKDApCiB7Ci0gICAgQVNTRVJUKGltcGwgIT0gTlVMTCk7CiB9CiAKLVZlcnRleEFy
cmF5Ojp+VmVydGV4QXJyYXkoKQorVmVydGV4QXJyYXk6OkRhdGE6On5EYXRhKCkKIHsKLSAgICBT
YWZlRGVsZXRlKG1WZXJ0ZXhBcnJheSk7Ci0KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdl
dE1heEF0dHJpYnMoKTsgaSsrKQogICAgIHsKLSAgICAgICAgbVZlcnRleEF0dHJpYnV0ZXNbaV0u
YnVmZmVyLnNldChOVUxMKTsKKyAgICAgICAgbVZlcnRleEF0dHJpYnV0ZXNbaV0uYnVmZmVyLnNl
dChudWxscHRyKTsKICAgICB9Ci0gICAgbUVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoTlVMTCk7Cisg
ICAgbUVsZW1lbnRBcnJheUJ1ZmZlci5zZXQobnVsbHB0cik7CiB9CiAKK1ZlcnRleEFycmF5OjpW
ZXJ0ZXhBcnJheShyeDo6SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCwgc2l6ZV90IG1h
eEF0dHJpYnMpCisgICAgOiBtSWQoaWQpLCBtRGF0YShtYXhBdHRyaWJzKSwgbVZlcnRleEFycmF5
KGZhY3RvcnktPmNyZWF0ZVZlcnRleEFycmF5KG1EYXRhKSkKK3sKK30KKworVmVydGV4QXJyYXk6
On5WZXJ0ZXhBcnJheSgpCit7CisgICAgU2FmZURlbGV0ZShtVmVydGV4QXJyYXkpOworfQorCiBH
THVpbnQgVmVydGV4QXJyYXk6OmlkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbUlkOwogfQogCit2
b2lkIFZlcnRleEFycmF5OjpzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpCit7Cisg
ICAgbURhdGEubUxhYmVsID0gbGFiZWw7Cit9CisKK2NvbnN0IHN0ZDo6c3RyaW5nICZWZXJ0ZXhB
cnJheTo6Z2V0TGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBtRGF0YS5tTGFiZWw7Cit9CisK
IHZvaWQgVmVydGV4QXJyYXk6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyTmFtZSkKIHsKICAg
ICBmb3IgKHNpemVfdCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBnZXRNYXhBdHRyaWJzKCk7
IGF0dHJpYnV0ZSsrKQogICAgIHsKLSAgICAgICAgaWYgKG1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJp
YnV0ZV0uYnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICAgICAgaWYgKG1EYXRhLm1WZXJ0
ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICAg
ICAgewotICAgICAgICAgICAgbVZlcnRleEF0dHJpYnV0ZXNbYXR0cmlidXRlXS5idWZmZXIuc2V0
KE5VTEwpOworICAgICAgICAgICAgbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbYXR0cmlidXRlXS5i
dWZmZXIuc2V0KG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1FbGVtZW50
QXJyYXlCdWZmZXIuaWQoKSA9PSBidWZmZXJOYW1lKQorICAgIGlmIChtRGF0YS5tRWxlbWVudEFy
cmF5QnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICB7Ci0gICAgICAgIG1FbGVtZW50QXJy
YXlCdWZmZXIuc2V0KE5VTEwpOworICAgICAgICBtRGF0YS5tRWxlbWVudEFycmF5QnVmZmVyLnNl
dChudWxscHRyKTsKICAgICB9CiB9CiAKLWNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgVmVydGV4QXJy
YXk6OmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgYXR0cmlidXRlSW5kZXgpIGNvbnN0Citjb25z
dCBWZXJ0ZXhBdHRyaWJ1dGUgJlZlcnRleEFycmF5OjpnZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6ZV90
IGF0dHJpYnV0ZUluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChhdHRyaWJ1dGVJbmRleCA8IGdl
dE1heEF0dHJpYnMoKSk7Ci0gICAgcmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZUlu
ZGV4XTsKKyAgICByZXR1cm4gbURhdGEubVZlcnRleEF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhd
OwogfQogCi1jb25zdCBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZWZXJ0ZXhBcnJheTo6
Z2V0VmVydGV4QXR0cmlidXRlcygpIGNvbnN0Cit2b2lkIFZlcnRleEFycmF5OjpzZXRWZXJ0ZXhB
dHRyaWJEaXZpc29yKHNpemVfdCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7Ci0gICAgcmV0dXJu
IG1WZXJ0ZXhBdHRyaWJ1dGVzOwotfQotCi12b2lkIFZlcnRleEFycmF5OjpzZXRWZXJ0ZXhBdHRy
aWJEaXZpc29yKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCi17CiAgICAgQVNTRVJUKGlu
ZGV4IDwgZ2V0TWF4QXR0cmlicygpKTsKLSAgICBtVmVydGV4QXR0cmlidXRlc1tpbmRleF0uZGl2
aXNvciA9IGRpdmlzb3I7Ci0gICAgbVZlcnRleEFycmF5LT5zZXRBdHRyaWJ1dGVEaXZpc29yKGlu
ZGV4LCBkaXZpc29yKTsKKyAgICBtRGF0YS5tVmVydGV4QXR0cmlidXRlc1tpbmRleF0uZGl2aXNv
ciA9IGRpdmlzb3I7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0FUVFJJQl8wX0RJVklT
T1IgKyBpbmRleCk7CiB9CiAKLXZvaWQgVmVydGV4QXJyYXk6OmVuYWJsZUF0dHJpYnV0ZSh1bnNp
Z25lZCBpbnQgYXR0cmlidXRlSW5kZXgsIGJvb2wgZW5hYmxlZFN0YXRlKQordm9pZCBWZXJ0ZXhB
cnJheTo6ZW5hYmxlQXR0cmlidXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFibGVk
U3RhdGUpCiB7CiAgICAgQVNTRVJUKGF0dHJpYnV0ZUluZGV4IDwgZ2V0TWF4QXR0cmlicygpKTsK
LSAgICBtVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF0uZW5hYmxlZCA9IGVuYWJsZWRT
dGF0ZTsKLSAgICBtVmVydGV4QXJyYXktPmVuYWJsZUF0dHJpYnV0ZShhdHRyaWJ1dGVJbmRleCwg
ZW5hYmxlZFN0YXRlKTsKKyAgICBtRGF0YS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRl
eF0uZW5hYmxlZCA9IGVuYWJsZWRTdGF0ZTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
QVRUUklCXzBfRU5BQkxFRCArIGF0dHJpYnV0ZUluZGV4KTsKIAogICAgIC8vIFVwZGF0ZSBzdGF0
ZSBjYWNoZQogICAgIGlmIChlbmFibGVkU3RhdGUpCiAgICAgewotICAgICAgICBtTWF4RW5hYmxl
ZEF0dHJpYnV0ZSA9IHN0ZDo6bWF4KGF0dHJpYnV0ZUluZGV4LCBtTWF4RW5hYmxlZEF0dHJpYnV0
ZSk7CisgICAgICAgIG1EYXRhLm1NYXhFbmFibGVkQXR0cmlidXRlID0gc3RkOjptYXgoYXR0cmli
dXRlSW5kZXggKyAxLCBtRGF0YS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSk7CiAgICAgfQotICAgIGVs
c2UgaWYgKG1NYXhFbmFibGVkQXR0cmlidXRlID09IGF0dHJpYnV0ZUluZGV4KQorICAgIGVsc2Ug
aWYgKG1EYXRhLm1NYXhFbmFibGVkQXR0cmlidXRlID09IGF0dHJpYnV0ZUluZGV4ICsgMSkKICAg
ICB7Ci0gICAgICAgIHdoaWxlIChtTWF4RW5hYmxlZEF0dHJpYnV0ZSA+IDAgJiYgIW1WZXJ0ZXhB
dHRyaWJ1dGVzW21NYXhFbmFibGVkQXR0cmlidXRlXS5lbmFibGVkKQorICAgICAgICB3aGlsZSAo
bURhdGEubU1heEVuYWJsZWRBdHRyaWJ1dGUgPiAwICYmCisgICAgICAgICAgICAgICAhbURhdGEu
bVZlcnRleEF0dHJpYnV0ZXNbbURhdGEubU1heEVuYWJsZWRBdHRyaWJ1dGUgLSAxXS5lbmFibGVk
KQogICAgICAgICB7Ci0gICAgICAgICAgICAtLW1NYXhFbmFibGVkQXR0cmlidXRlOworICAgICAg
ICAgICAgLS1tRGF0YS5tTWF4RW5hYmxlZEF0dHJpYnV0ZTsKICAgICAgICAgfQogICAgIH0KIH0K
IAotdm9pZCBWZXJ0ZXhBcnJheTo6c2V0QXR0cmlidXRlU3RhdGUodW5zaWduZWQgaW50IGF0dHJp
YnV0ZUluZGV4LCBnbDo6QnVmZmVyICpib3VuZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5
cGUsCit2b2lkIFZlcnRleEFycmF5OjpzZXRBdHRyaWJ1dGVTdGF0ZShzaXplX3QgYXR0cmlidXRl
SW5kZXgsIGdsOjpCdWZmZXIgKmJvdW5kQnVmZmVyLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwgYm9v
bCBwdXJlSW50ZWdlciwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7CiAg
ICAgQVNTRVJUKGF0dHJpYnV0ZUluZGV4IDwgZ2V0TWF4QXR0cmlicygpKTsKLSAgICBtVmVydGV4
QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF0uYnVmZmVyLnNldChib3VuZEJ1ZmZlcik7Ci0gICAg
bVZlcnRleEF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdLnNpemUgPSBzaXplOwotICAgIG1WZXJ0
ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XS50eXBlID0gdHlwZTsKLSAgICBtVmVydGV4QXR0
cmlidXRlc1thdHRyaWJ1dGVJbmRleF0ubm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQ7Ci0gICAgbVZl
cnRleEF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdLnB1cmVJbnRlZ2VyID0gcHVyZUludGVnZXI7
Ci0gICAgbVZlcnRleEF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdLnN0cmlkZSA9IHN0cmlkZTsK
LSAgICBtVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF0ucG9pbnRlciA9IHBvaW50ZXI7
Ci0gICAgbVZlcnRleEFycmF5LT5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlSW5kZXgsIG1WZXJ0ZXhB
dHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XSk7CisKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUgKmF0dHJp
YiA9ICZtRGF0YS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07CisKKyAgICBhdHRy
aWItPmJ1ZmZlci5zZXQoYm91bmRCdWZmZXIpOworICAgIGF0dHJpYi0+c2l6ZSA9IHNpemU7Cisg
ICAgYXR0cmliLT50eXBlID0gdHlwZTsKKyAgICBhdHRyaWItPm5vcm1hbGl6ZWQgPSBub3JtYWxp
emVkOworICAgIGF0dHJpYi0+cHVyZUludGVnZXIgPSBwdXJlSW50ZWdlcjsKKyAgICBhdHRyaWIt
PnN0cmlkZSA9IHN0cmlkZTsKKyAgICBhdHRyaWItPnBvaW50ZXIgPSBwb2ludGVyOworICAgIG1E
aXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSICsgYXR0cmlidXRlSW5kZXgp
OwogfQogCiB2b2lkIFZlcnRleEFycmF5OjpzZXRFbGVtZW50QXJyYXlCdWZmZXIoQnVmZmVyICpi
dWZmZXIpCiB7Ci0gICAgbUVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoYnVmZmVyKTsKLSAgICBtVmVy
dGV4QXJyYXktPnNldEVsZW1lbnRBcnJheUJ1ZmZlcihidWZmZXIpOworICAgIG1EYXRhLm1FbGVt
ZW50QXJyYXlCdWZmZXIuc2V0KGJ1ZmZlcik7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklU
X0VMRU1FTlRfQVJSQVlfQlVGRkVSKTsKIH0KIAordm9pZCBWZXJ0ZXhBcnJheTo6c3luY0ltcGxT
dGF0ZSgpCit7CisgICAgaWYgKG1EaXJ0eUJpdHMuYW55KCkpCisgICAgeworICAgICAgICBtVmVy
dGV4QXJyYXktPnN5bmNTdGF0ZShtRGlydHlCaXRzKTsKKyAgICAgICAgbURpcnR5Qml0cy5yZXNl
dCgpOworICAgIH0KIH0KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1ZlcnRleEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNSwxMiArMTUsMTUgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvRGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1ZlcnRleEF0dHJpYnV0ZS5oIgogCiAjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2Ug
cngKIHsKK2NsYXNzIEltcGxGYWN0b3J5OwogY2xhc3MgVmVydGV4QXJyYXlJbXBsOwogfQogCkBA
IC0yOCw0MCArMzEsOTMgQEAKIHsKIGNsYXNzIEJ1ZmZlcjsKIAotY2xhc3MgVmVydGV4QXJyYXkK
K2NsYXNzIFZlcnRleEFycmF5IGZpbmFsIDogcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVi
bGljOgotICAgIFZlcnRleEFycmF5KHJ4OjpWZXJ0ZXhBcnJheUltcGwgKmltcGwsIEdMdWludCBp
ZCwgc2l6ZV90IG1heEF0dHJpYnMpOworICAgIFZlcnRleEFycmF5KHJ4OjpJbXBsRmFjdG9yeSAq
ZmFjdG9yeSwgR0x1aW50IGlkLCBzaXplX3QgbWF4QXR0cmlicyk7CiAgICAgflZlcnRleEFycmF5
KCk7CiAKICAgICBHTHVpbnQgaWQoKSBjb25zdDsKIAotICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0
ZSYgZ2V0VmVydGV4QXR0cmlidXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCkgY29uc3Q7Ci0gICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8VmVydGV4QXR0cmlidXRlPiAmZ2V0VmVydGV4QXR0cmlidXRlcygp
IGNvbnN0OworICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKSBvdmVy
cmlkZTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmZ2V0VmVydGV4QXR0cmlidXRlKHNpemVfdCBh
dHRyaWJ1dGVJbmRleCkgY29uc3Q7CisKICAgICB2b2lkIGRldGFjaEJ1ZmZlcihHTHVpbnQgYnVm
ZmVyTmFtZSk7Ci0gICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwg
R0x1aW50IGRpdmlzb3IpOwotICAgIHZvaWQgZW5hYmxlQXR0cmlidXRlKHVuc2lnbmVkIGludCBh
dHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFibGVkU3RhdGUpOwotICAgIHZvaWQgc2V0QXR0cmlidXRl
U3RhdGUodW5zaWduZWQgaW50IGF0dHJpYnV0ZUluZGV4LCBnbDo6QnVmZmVyICpib3VuZEJ1ZmZl
ciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsCisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZp
c29yKHNpemVfdCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworICAgIHZvaWQgZW5hYmxlQXR0cmli
dXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFibGVkU3RhdGUpOworICAgIHZvaWQg
c2V0QXR0cmlidXRlU3RhdGUoc2l6ZV90IGF0dHJpYnV0ZUluZGV4LCBnbDo6QnVmZmVyICpib3Vu
ZEJ1ZmZlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIG5vcm1hbGl6ZWQsIGJvb2wgcHVyZUludGVnZXIsIEdMc2l6ZWkgc3RyaWRlLCBj
b25zdCB2b2lkICpwb2ludGVyKTsKIAotICAgIEJ1ZmZlciAqZ2V0RWxlbWVudEFycmF5QnVmZmVy
KCkgY29uc3QgeyByZXR1cm4gbUVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKTsgfQogICAgIHZvaWQg
c2V0RWxlbWVudEFycmF5QnVmZmVyKEJ1ZmZlciAqYnVmZmVyKTsKLSAgICBHTHVpbnQgZ2V0RWxl
bWVudEFycmF5QnVmZmVySWQoKSBjb25zdCB7IHJldHVybiBtRWxlbWVudEFycmF5QnVmZmVyLmlk
KCk7IH0KLSAgICBzaXplX3QgZ2V0TWF4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhB
dHRyaWJ1dGVzLnNpemUoKTsgfQogCisgICAgY29uc3QgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiAm
Z2V0RWxlbWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbURhdGEuZ2V0RWxlbWVudEFy
cmF5QnVmZmVyKCk7IH0KKyAgICBzaXplX3QgZ2V0TWF4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJu
IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMoKS5zaXplKCk7IH0KKyAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZnZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1
cm4gbURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygpOyB9CisKICAgICByeDo6VmVydGV4QXJyYXlJ
bXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIHsgcmV0dXJuIG1WZXJ0ZXhBcnJheTsgfQogICAgIGNv
bnN0IHJ4OjpWZXJ0ZXhBcnJheUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbVZlcnRleEFycmF5OyB9CiAKLSAgICB1bnNpZ25lZCBpbnQgZ2V0TWF4RW5hYmxlZEF0dHJp
YnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1NYXhFbmFibGVkQXR0cmlidXRlOyB9CisgICAgc2l6ZV90
IGdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtRGF0YS5nZXRNYXhFbmFi
bGVkQXR0cmlidXRlKCk7IH0KIAorICAgIGNsYXNzIERhdGEgZmluYWwgOiBwdWJsaWMgYW5nbGU6
Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBEYXRh
KHNpemVfdCBtYXhBdHRyaWJzKTsKKyAgICAgICAgfkRhdGEoKTsKKworICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBtTGFiZWw7IH0KKworICAgICAg
ICBjb25zdCBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+ICZnZXRFbGVtZW50QXJyYXlCdWZmZXIoKSBj
b25zdCB7IHJldHVybiBtRWxlbWVudEFycmF5QnVmZmVyOyB9CisgICAgICAgIHNpemVfdCBnZXRN
YXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbVZlcnRleEF0dHJpYnV0ZXMuc2l6ZSgpOyB9Cisg
ICAgICAgIHNpemVfdCBnZXRNYXhFbmFibGVkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbU1h
eEVuYWJsZWRBdHRyaWJ1dGU7IH0KKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmVydGV4QXR0
cmlidXRlPiAmZ2V0VmVydGV4QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBdHRy
aWJ1dGVzOyB9CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmZ2V0VmVydGV4QXR0cmli
dXRlKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1W
ZXJ0ZXhBdHRyaWJ1dGVzW2luZGV4XTsKKyAgICAgICAgfQorCisgICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgVmVydGV4QXJyYXk7CisgICAgICAgIHN0ZDo6c3RyaW5nIG1MYWJl
bDsKKyAgICAgICAgc3RkOjp2ZWN0b3I8VmVydGV4QXR0cmlidXRlPiBtVmVydGV4QXR0cmlidXRl
czsKKyAgICAgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtRWxlbWVudEFycmF5QnVmZmVyOwor
ICAgICAgICBzaXplX3QgbU1heEVuYWJsZWRBdHRyaWJ1dGU7CisgICAgfTsKKworICAgIGVudW0g
RGlydHlCaXRUeXBlCisgICAgeworICAgICAgICBESVJUWV9CSVRfRUxFTUVOVF9BUlJBWV9CVUZG
RVIsCisKKyAgICAgICAgLy8gUmVzZXJ2ZSBiaXRzIGZvciBlbmFibGVkIGZsYWdzCisgICAgICAg
IERJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVELAorICAgICAgICBESVJUWV9CSVRfQVRUUklCX01B
WF9FTkFCTEVEID0gRElSVFlfQklUX0FUVFJJQl8wX0VOQUJMRUQgKyBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTLAorCisgICAgICAgIC8vIFJlc2VydmUgYml0cyBmb3IgYXR0cmliIHBvaW50ZXJzCisg
ICAgICAgIERJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSICAgPSBESVJUWV9CSVRfQVRUUklCX01B
WF9FTkFCTEVELAorICAgICAgICBESVJUWV9CSVRfQVRUUklCX01BWF9QT0lOVEVSID0gRElSVFlf
QklUX0FUVFJJQl8wX1BPSU5URVIgKyBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTLAorCisgICAgICAg
IC8vIFJlc2VydmUgYml0cyBmb3IgZGl2aXNvcnMKKyAgICAgICAgRElSVFlfQklUX0FUVFJJQl8w
X0RJVklTT1IgICA9IERJUlRZX0JJVF9BVFRSSUJfTUFYX1BPSU5URVIsCisgICAgICAgIERJUlRZ
X0JJVF9BVFRSSUJfTUFYX0RJVklTT1IgPSBESVJUWV9CSVRfQVRUUklCXzBfRElWSVNPUiArIGds
OjpNQVhfVkVSVEVYX0FUVFJJQlMsCisKKyAgICAgICAgRElSVFlfQklUX1VOS05PV04gPSBESVJU
WV9CSVRfQVRUUklCX01BWF9ESVZJU09SLAorICAgICAgICBESVJUWV9CSVRfTUFYICAgICA9IERJ
UlRZX0JJVF9VTktOT1dOLAorICAgIH07CisKKyAgICB0eXBlZGVmIHN0ZDo6Yml0c2V0PERJUlRZ
X0JJVF9NQVg+IERpcnR5Qml0czsKKworICAgIHZvaWQgc3luY0ltcGxTdGF0ZSgpOworICAgIGJv
b2wgaGFzQW55RGlydHlCaXQoKSBjb25zdCB7IHJldHVybiBtRGlydHlCaXRzLmFueSgpOyB9CisK
ICAgcHJpdmF0ZToKICAgICBHTHVpbnQgbUlkOwogCisgICAgRGF0YSBtRGF0YTsKKyAgICBEaXJ0
eUJpdHMgbURpcnR5Qml0czsKKwogICAgIHJ4OjpWZXJ0ZXhBcnJheUltcGwgKm1WZXJ0ZXhBcnJh
eTsKLSAgICBzdGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+IG1WZXJ0ZXhBdHRyaWJ1dGVzOwot
ICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gbUVsZW1lbnRBcnJheUJ1ZmZlcjsKLSAgICB1bnNp
Z25lZCBpbnQgbU1heEVuYWJsZWRBdHRyaWJ1dGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRl
LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI0ICsyMyw2
IEBACiB7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmEsIGNv
bnN0IFZlcnRleEF0dHJpYnV0ZSAmYikKLXsKLSAgICByZXR1cm4gYS5lbmFibGVkID09IGIuZW5h
YmxlZCAmJgotICAgICAgICAgICBhLnR5cGUgPT0gYi50eXBlICYmCi0gICAgICAgICAgIGEuc2l6
ZSA9PSBiLnNpemUgJiYKLSAgICAgICAgICAgYS5ub3JtYWxpemVkID09IGIubm9ybWFsaXplZCAm
JgotICAgICAgICAgICBhLnB1cmVJbnRlZ2VyID09IGIucHVyZUludGVnZXIgJiYKLSAgICAgICAg
ICAgYS5zdHJpZGUgPT0gYi5zdHJpZGUgJiYKLSAgICAgICAgICAgYS5wb2ludGVyID09IGIucG9p
bnRlciAmJgotICAgICAgICAgICBhLmJ1ZmZlci5nZXQoKSA9PSBiLmJ1ZmZlci5nZXQoKSAmJgot
ICAgICAgICAgICBhLmRpdmlzb3IgPT0gYi5kaXZpc29yOwotfQotCi1ib29sIG9wZXJhdG9yIT0o
Y29uc3QgVmVydGV4QXR0cmlidXRlICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmIpCi17Ci0g
ICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogc2l6ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVU
eXBlU2l6ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYikKIHsKICAgICBHTHVpbnQgc2l6
ZSA9IGF0dHJpYi5zaXplOwpAQCAtNzAsNCArNTIsMjMgQEAKICAgICByZXR1cm4gYXR0cmliLnN0
cmlkZSA/IGF0dHJpYi5zdHJpZGUgOiBDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0
cmliKTsKIH0KIAorc2l6ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVFbGVtZW50Q291bnQoY29u
c3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgZHJhd0NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGluc3RhbmNlQ291bnQpCit7CisgICAgLy8gRm9yIGlu
c3RhbmNlZCByZW5kZXJpbmcsIHdlIGRyYXcgImluc3RhbmNlRHJhd0NvdW50IiBzZXRzIG9mICJ2
ZXJ0ZXhEcmF3Q291bnQiIHZlcnRpY2VzLgorICAgIC8vCisgICAgLy8gQSB2ZXJ0ZXggYXR0cmli
dXRlIHdpdGggYSBwb3NpdGl2ZSBkaXZpc29yIGxvYWRzIG9uZSBpbnN0YW5jZWQgdmVydGV4IGZv
ciBldmVyeSBzZXQgb2YKKyAgICAvLyBub24taW5zdGFuY2VkIHZlcnRpY2VzLCBhbmQgdGhlIGlu
c3RhbmNlZCB2ZXJ0ZXggaW5kZXggYWR2YW5jZXMgb25jZSBldmVyeSAibURpdmlzb3IiCisgICAg
Ly8gaW5zdGFuY2VzLgorICAgIGlmIChpbnN0YW5jZUNvdW50ID4gMCAmJiBhdHRyaWIuZGl2aXNv
ciA+IDApCisgICAgeworICAgICAgICAvLyBXaGVuIGluc3RhbmNlRHJhd0NvdW50IGlzIG5vdCBh
IG11bHRpcGxlIGF0dHJpYi5kaXZpc29yLCB0aGUgZGl2aXNpb24gbXVzdCByb3VuZCB1cC4KKyAg
ICAgICAgLy8gRm9yIGluc3RhbmNlLCB3aXRoIDUgbm9uLWluc3RhbmNlZCB2ZXJ0aWNlcyBhbmQg
YSBkaXZpc29yIGVxdWFsIHRvIDMsIHdlIG5lZWQgMiBpbnN0YW5jZWQKKyAgICAgICAgLy8gdmVy
dGljZXMuCisgICAgICAgIHJldHVybiAoaW5zdGFuY2VDb3VudCArIGF0dHJpYi5kaXZpc29yIC0g
MXUpIC8gYXR0cmliLmRpdmlzb3I7CisgICAgfQorCisgICAgcmV0dXJuIGRyYXdDb3VudDsKIH0K
K30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRy
aWJ1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvVmVydGV4QXR0cmlidXRlLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsMzQgKzQwLDEzIEBACiBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVydGV4QXR0cmlidXRl
ICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmIpOwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
LVQgUXVlcnlTaW5nbGVWZXJ0ZXhBdHRyaWJ1dGVQYXJhbWV0ZXIoY29uc3QgVmVydGV4QXR0cmli
dXRlJiBhdHRyaWIsIEdMZW51bSBwbmFtZSkKLXsKLSAgc3dpdGNoIChwbmFtZSkKLSAgewotICAg
IGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOgotICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KGF0dHJpYi5lbmFibGVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKLSAgICBjYXNl
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRToKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
PihhdHRyaWIuc2l6ZSk7Ci0gICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERToK
LSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihhdHRyaWIuc3RyaWRlKTsKLSAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihh
dHRyaWIudHlwZSk7Ci0gICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6
Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXR0cmliLm5vcm1hbGl6ZWQgPyBHTF9UUlVF
IDogR0xfRkFMU0UpOwotICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklO
RElORzoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihhdHRyaWIuYnVmZmVyLmlkKCkpOwot
ICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SOgotICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFQ+KGF0dHJpYi5kaXZpc29yKTsKLSAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfSU5URUdFUjoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihhdHRyaWIucHVyZUlu
dGVnZXIgPyBHTF9UUlVFIDogR0xfRkFMU0UpOwotICAgIGRlZmF1bHQ6Ci0gICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KDApOwotICB9Ci19CitUIFF1ZXJ5
U2luZ2xlVmVydGV4QXR0cmlidXRlUGFyYW1ldGVyKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0
cmliLCBHTGVudW0gcG5hbWUpOwogCiBzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVT
aXplKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKTsKIHNpemVfdCBDb21wdXRlVmVydGV4
QXR0cmlidXRlU3RyaWRlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKTsKK3NpemVfdCBD
b21wdXRlVmVydGV4QXR0cmlidXRlRWxlbWVudENvdW50KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAm
YXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRyYXdDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnN0YW5jZUNvdW50KTsKIAogc3RydWN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURh
dGEKIHsKQEAgLTc5LDQ0ICs1OCwxOCBAQAogICAgIH07CiAgICAgR0xlbnVtIFR5cGU7CiAKLSAg
ICB2b2lkIHNldEZsb2F0VmFsdWVzKGNvbnN0IEdMZmxvYXQgZmxvYXRWYWx1ZXNbNF0pCi0gICAg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCB2YWx1ZUluZGV4ID0gMDsgdmFsdWVJbmRleCA8
IDQ7IHZhbHVlSW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgRmxvYXRWYWx1ZXNbdmFs
dWVJbmRleF0gPSBmbG9hdFZhbHVlc1t2YWx1ZUluZGV4XTsKLSAgICAgICAgfQotICAgICAgICBU
eXBlID0gR0xfRkxPQVQ7Ci0gICAgfQorICAgIFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEo
KTsKIAotICAgIHZvaWQgc2V0SW50VmFsdWVzKGNvbnN0IEdMaW50IGludFZhbHVlc1s0XSkKLSAg
ICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IHZhbHVlSW5kZXggPSAwOyB2YWx1ZUluZGV4
IDwgNDsgdmFsdWVJbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBJbnRWYWx1ZXNbdmFs
dWVJbmRleF0gPSBpbnRWYWx1ZXNbdmFsdWVJbmRleF07Ci0gICAgICAgIH0KLSAgICAgICAgVHlw
ZSA9IEdMX0lOVDsKLSAgICB9CisgICAgdm9pZCBzZXRGbG9hdFZhbHVlcyhjb25zdCBHTGZsb2F0
IGZsb2F0VmFsdWVzWzRdKTsKKyAgICB2b2lkIHNldEludFZhbHVlcyhjb25zdCBHTGludCBpbnRW
YWx1ZXNbNF0pOworICAgIHZvaWQgc2V0VW5zaWduZWRJbnRWYWx1ZXMoY29uc3QgR0x1aW50IHVu
c2lnbmVkSW50VmFsdWVzWzRdKTsKK307CiAKLSAgICB2b2lkIHNldFVuc2lnbmVkSW50VmFsdWVz
KGNvbnN0IEdMdWludCB1bnNpZ25lZEludFZhbHVlc1s0XSkKLSAgICB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaW50IHZhbHVlSW5kZXggPSAwOyB2YWx1ZUluZGV4IDwgNDsgdmFsdWVJbmRleCsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBVbnNpZ25lZEludFZhbHVlc1t2YWx1ZUluZGV4XSA9
IHVuc2lnbmVkSW50VmFsdWVzW3ZhbHVlSW5kZXhdOwotICAgICAgICB9Ci0gICAgICAgIFR5cGUg
PSBHTF9VTlNJR05FRF9JTlQ7Ci0gICAgfQorYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlcnRleEF0
dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmEsIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURh
dGEgJmIpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURh
dGEgJmEsIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmIpOwogCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJm90aGVyKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIChUeXBlID09IG90aGVyLlR5cGUgJiYgbWVtY21wKEZsb2F0
VmFsdWVzLCBvdGhlci5GbG9hdFZhbHVlcywgc2l6ZW9mKGZsb2F0KSAqIDQpID09IDApOwotICAg
IH0KK30KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWVEYXRhICZvdGhlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICB9Ci19OworI2luY2x1ZGUgIlZlcnRleEF0dHJpYnV0ZS5pbmwiCiAKLX0KLQogI2VuZGlm
IC8vIExJQkFOR0xFX1ZFUlRFWEFUVFJJQlVURV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5pbmwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5pbmwJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4
QXR0cmlidXRlLmlubAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMyBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBWZXJ0ZXhBdHRyaWJ1dGUuaW5sOiBJbmxpbmUgdmVydGV4IGF0dHJpYnV0ZSBtZXRo
b2RzCisvLworCituYW1lc3BhY2UgZ2wKK3sKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBWZXJ0ZXhBdHRyaWJ1dGUgJmEsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYikKK3sKKyAgICBy
ZXR1cm4gYS5lbmFibGVkID09IGIuZW5hYmxlZCAmJgorICAgICAgICAgICBhLnR5cGUgPT0gYi50
eXBlICYmCisgICAgICAgICAgIGEuc2l6ZSA9PSBiLnNpemUgJiYKKyAgICAgICAgICAgYS5ub3Jt
YWxpemVkID09IGIubm9ybWFsaXplZCAmJgorICAgICAgICAgICBhLnB1cmVJbnRlZ2VyID09IGIu
cHVyZUludGVnZXIgJiYKKyAgICAgICAgICAgYS5zdHJpZGUgPT0gYi5zdHJpZGUgJiYKKyAgICAg
ICAgICAgYS5wb2ludGVyID09IGIucG9pbnRlciAmJgorICAgICAgICAgICBhLmJ1ZmZlci5nZXQo
KSA9PSBiLmJ1ZmZlci5nZXQoKSAmJgorICAgICAgICAgICBhLmRpdmlzb3IgPT0gYi5kaXZpc29y
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYSwg
Y29uc3QgVmVydGV4QXR0cmlidXRlICZiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorVCBRdWVyeVNpbmdsZVZlcnRleEF0dHJpYnV0ZVBhcmFt
ZXRlcihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYiwgR0xlbnVtIHBuYW1lKQoreworICBz
d2l0Y2ggKHBuYW1lKQorICB7CisgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJM
RUQ6CisgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXR0cmliLmVuYWJsZWQgPyBHTF9UUlVF
IDogR0xfRkFMU0UpOworICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgorICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi5zaXplKTsKKyAgICBjYXNlIEdMX1ZFUlRF
WF9BVFRSSUJfQVJSQVlfU1RSSURFOgorICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJp
Yi5zdHJpZGUpOworICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOgorICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFQ+KGF0dHJpYi50eXBlKTsKKyAgICBjYXNlIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfTk9STUFMSVpFRDoKKyAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihhdHRy
aWIubm9ybWFsaXplZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7CisgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+
KGF0dHJpYi5idWZmZXIuaWQoKSk7CisgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0RJ
VklTT1I6CisgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oYXR0cmliLmRpdmlzb3IpOworICAg
IGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9JTlRFR0VSOgorICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFQ+KGF0dHJpYi5wdXJlSW50ZWdlciA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7CisgICAg
ZGVmYXVsdDoKKyAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VD4oMCk7CisgIH0KK30KKworaW5saW5lIFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGE6OlZl
cnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEoKQorICAgIDogVHlwZShHTF9GTE9BVCkKK3sKKyAg
ICBGbG9hdFZhbHVlc1swXSA9IDAuMGY7CisgICAgRmxvYXRWYWx1ZXNbMV0gPSAwLjBmOworICAg
IEZsb2F0VmFsdWVzWzJdID0gMC4wZjsKKyAgICBGbG9hdFZhbHVlc1szXSA9IDEuMGY7Cit9CisK
K2lubGluZSB2b2lkIFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGE6OnNldEZsb2F0VmFsdWVz
KGNvbnN0IEdMZmxvYXQgZmxvYXRWYWx1ZXNbNF0pCit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
dmFsdWVJbmRleCA9IDA7IHZhbHVlSW5kZXggPCA0OyB2YWx1ZUluZGV4KyspCisgICAgeworICAg
ICAgICBGbG9hdFZhbHVlc1t2YWx1ZUluZGV4XSA9IGZsb2F0VmFsdWVzW3ZhbHVlSW5kZXhdOwor
ICAgIH0KKyAgICBUeXBlID0gR0xfRkxPQVQ7Cit9CisKK2lubGluZSB2b2lkIFZlcnRleEF0dHJp
YkN1cnJlbnRWYWx1ZURhdGE6OnNldEludFZhbHVlcyhjb25zdCBHTGludCBpbnRWYWx1ZXNbNF0p
Cit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgdmFsdWVJbmRleCA9IDA7IHZhbHVlSW5kZXggPCA0
OyB2YWx1ZUluZGV4KyspCisgICAgeworICAgICAgICBJbnRWYWx1ZXNbdmFsdWVJbmRleF0gPSBp
bnRWYWx1ZXNbdmFsdWVJbmRleF07CisgICAgfQorICAgIFR5cGUgPSBHTF9JTlQ7Cit9CisKK2lu
bGluZSB2b2lkIFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGE6OnNldFVuc2lnbmVkSW50VmFs
dWVzKGNvbnN0IEdMdWludCB1bnNpZ25lZEludFZhbHVlc1s0XSkKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGludCB2YWx1ZUluZGV4ID0gMDsgdmFsdWVJbmRleCA8IDQ7IHZhbHVlSW5kZXgrKykKKyAg
ICB7CisgICAgICAgIFVuc2lnbmVkSW50VmFsdWVzW3ZhbHVlSW5kZXhdID0gdW5zaWduZWRJbnRW
YWx1ZXNbdmFsdWVJbmRleF07CisgICAgfQorICAgIFR5cGUgPSBHTF9VTlNJR05FRF9JTlQ7Cit9
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVl
RGF0YSAmYSwgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmYikKK3sKKyAgICBy
ZXR1cm4gKGEuVHlwZSA9PSBiLlR5cGUgJiYgbWVtY21wKGEuRmxvYXRWYWx1ZXMsIGIuRmxvYXRW
YWx1ZXMsIHNpemVvZihmbG9hdCkgKiA0KSA9PSAwKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZhLCBjb25zdCBWZXJ0ZXhB
dHRyaWJDdXJyZW50VmFsdWVEYXRhICZiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
YW5nbGV0eXBlcy5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTkg
KzE1LDMwIEBACiBuYW1lc3BhY2UgZ2wKIHsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlY3Rh
bmdsZSAmYSwgY29uc3QgUmVjdGFuZ2xlICZiKQorUHJpbWl0aXZlVHlwZSBHZXRQcmltaXRpdmVU
eXBlKEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJgotICAgICAg
ICAgICBhLnkgPT0gYi55ICYmCi0gICAgICAgICAgIGEud2lkdGggPT0gYi53aWR0aCAmJgotICAg
ICAgICAgICBhLmhlaWdodCA9PSBiLmhlaWdodDsKKyAgICBzd2l0Y2ggKGRyYXdNb2RlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9QT0lOVFM6CisgICAgICAgICAgICByZXR1cm4gUFJJTUlUSVZF
X1BPSU5UUzsKKyAgICAgICAgY2FzZSBHTF9MSU5FUzoKKyAgICAgICAgICAgIHJldHVybiBQUklN
SVRJVkVfTElORVM7CisgICAgICAgIGNhc2UgR0xfTElORV9TVFJJUDoKKyAgICAgICAgICAgIHJl
dHVybiBQUklNSVRJVkVfTElORV9TVFJJUDsKKyAgICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6Cisg
ICAgICAgICAgICByZXR1cm4gUFJJTUlUSVZFX0xJTkVfTE9PUDsKKyAgICAgICAgY2FzZSBHTF9U
UklBTkdMRVM6CisgICAgICAgICAgICByZXR1cm4gUFJJTUlUSVZFX1RSSUFOR0xFUzsKKyAgICAg
ICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgICAgIHJldHVybiBQUklNSVRJVkVf
VFJJQU5HTEVfU1RSSVA7CisgICAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgorICAgICAgICAg
ICAgcmV0dXJuIFBSSU1JVElWRV9UUklBTkdMRV9GQU47CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIFBSSU1JVElWRV9UWVBF
X01BWDsKKyAgICB9CiB9CiAKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0YW5nbGUgJmEsIGNv
bnN0IFJlY3RhbmdsZSAmYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBTYW1wbGVy
U3RhdGU6OlNhbXBsZXJTdGF0ZSgpCiAgICAgOiBtaW5GaWx0ZXIoR0xfTkVBUkVTVF9NSVBNQVBf
TElORUFSKSwKICAgICAgIG1hZ0ZpbHRlcihHTF9MSU5FQVIpLApAQCAtMzUsNDcgKzQ2LDMxIEBA
CiAgICAgICB3cmFwVChHTF9SRVBFQVQpLAogICAgICAgd3JhcFIoR0xfUkVQRUFUKSwKICAgICAg
IG1heEFuaXNvdHJvcHkoMS4wZiksCi0gICAgICBiYXNlTGV2ZWwoMCksCi0gICAgICBtYXhMZXZl
bCgxMDAwKSwKICAgICAgIG1pbkxvZCgtMTAwMC4wZiksCiAgICAgICBtYXhMb2QoMTAwMC4wZiks
CiAgICAgICBjb21wYXJlTW9kZShHTF9OT05FKSwKLSAgICAgIGNvbXBhcmVGdW5jKEdMX0xFUVVB
TCksCi0gICAgICBzd2l6emxlUmVkKEdMX1JFRCksCi0gICAgICBzd2l6emxlR3JlZW4oR0xfR1JF
RU4pLAotICAgICAgc3dpenpsZUJsdWUoR0xfQkxVRSksCi0gICAgICBzd2l6emxlQWxwaGEoR0xf
QUxQSEEpCi17fQotCi1ib29sIFNhbXBsZXJTdGF0ZTo6c3dpenpsZVJlcXVpcmVkKCkgY29uc3QK
KyAgICAgIGNvbXBhcmVGdW5jKEdMX0xFUVVBTCkKIHsKLSAgICByZXR1cm4gc3dpenpsZVJlZCAh
PSBHTF9SRUQgfHwgc3dpenpsZUdyZWVuICE9IEdMX0dSRUVOIHx8Ci0gICAgICAgICAgIHN3aXp6
bGVCbHVlICE9IEdMX0JMVUUgfHwgc3dpenpsZUFscGhhICE9IEdMX0FMUEhBOwogfQogCi1ib29s
IFNhbXBsZXJTdGF0ZTo6b3BlcmF0b3I9PShjb25zdCBTYW1wbGVyU3RhdGUgJm90aGVyKSBjb25z
dAorVGV4dHVyZVN0YXRlOjpUZXh0dXJlU3RhdGUoKQorICAgIDogc3dpenpsZVJlZChHTF9SRUQp
LAorICAgICAgc3dpenpsZUdyZWVuKEdMX0dSRUVOKSwKKyAgICAgIHN3aXp6bGVCbHVlKEdMX0JM
VUUpLAorICAgICAgc3dpenpsZUFscGhhKEdMX0FMUEhBKSwKKyAgICAgIHNhbXBsZXJTdGF0ZSgp
LAorICAgICAgYmFzZUxldmVsKDApLAorICAgICAgbWF4TGV2ZWwoMTAwMCksCisgICAgICBpbW11
dGFibGVGb3JtYXQoZmFsc2UpLAorICAgICAgaW1tdXRhYmxlTGV2ZWxzKDApLAorICAgICAgdXNh
Z2UoR0xfTk9ORSkKIHsKLSAgICByZXR1cm4gbWluRmlsdGVyID09IG90aGVyLm1pbkZpbHRlciAm
JgotICAgICAgICAgICBtYWdGaWx0ZXIgPT0gb3RoZXIubWFnRmlsdGVyICYmCi0gICAgICAgICAg
IHdyYXBTID09IG90aGVyLndyYXBTICYmCi0gICAgICAgICAgIHdyYXBUID09IG90aGVyLndyYXBU
ICYmCi0gICAgICAgICAgIHdyYXBSID09IG90aGVyLndyYXBSICYmCi0gICAgICAgICAgIG1heEFu
aXNvdHJvcHkgPT0gb3RoZXIubWF4QW5pc290cm9weSAmJgotICAgICAgICAgICBiYXNlTGV2ZWwg
PT0gb3RoZXIuYmFzZUxldmVsICYmCi0gICAgICAgICAgIG1heExldmVsID09IG90aGVyLm1heExl
dmVsICYmCi0gICAgICAgICAgIG1pbkxvZCA9PSBvdGhlci5taW5Mb2QgJiYKLSAgICAgICAgICAg
bWF4TG9kID09IG90aGVyLm1heExvZCAmJgotICAgICAgICAgICBjb21wYXJlTW9kZSA9PSBvdGhl
ci5jb21wYXJlTW9kZSAmJgotICAgICAgICAgICBjb21wYXJlRnVuYyA9PSBvdGhlci5jb21wYXJl
RnVuYyAmJgotICAgICAgICAgICBzd2l6emxlUmVkID09IG90aGVyLnN3aXp6bGVSZWQgJiYKLSAg
ICAgICAgICAgc3dpenpsZUdyZWVuID09IG90aGVyLnN3aXp6bGVHcmVlbiAmJgotICAgICAgICAg
ICBzd2l6emxlQmx1ZSA9PSBvdGhlci5zd2l6emxlQmx1ZSAmJgotICAgICAgICAgICBzd2l6emxl
QWxwaGEgPT0gb3RoZXIuc3dpenpsZUFscGhhOwogfQogCi1ib29sIFNhbXBsZXJTdGF0ZTo6b3Bl
cmF0b3IhPShjb25zdCBTYW1wbGVyU3RhdGUgJm90aGVyKSBjb25zdAorYm9vbCBUZXh0dXJlU3Rh
dGU6OnN3aXp6bGVSZXF1aXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOworICAgIHJldHVybiBzd2l6emxlUmVkICE9IEdMX1JFRCB8fCBzd2l6emxlR3JlZW4gIT0g
R0xfR1JFRU4gfHwKKyAgICAgICAgICAgc3dpenpsZUJsdWUgIT0gR0xfQkxVRSB8fCBzd2l6emxl
QWxwaGEgIT0gR0xfQUxQSEE7CiB9CiAKIHN0YXRpYyB2b2lkIE1pbk1heChpbnQgYSwgaW50IGIs
IGludCAqbWluaW11bSwgaW50ICptYXhpbXVtKQpAQCAtMTI4LDExOSArMTIzLDI0IEBACiAgICAg
fQogfQogCi1WZXJ0ZXhGb3JtYXQ6OlZlcnRleEZvcm1hdCgpCi0gICAgOiBtVHlwZShHTF9OT05F
KSwKLSAgICAgIG1Ob3JtYWxpemVkKEdMX0ZBTFNFKSwKLSAgICAgIG1Db21wb25lbnRzKDApLAot
ICAgICAgbVB1cmVJbnRlZ2VyKGZhbHNlKQote30KLQotVmVydGV4Rm9ybWF0OjpWZXJ0ZXhGb3Jt
YXQoR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHVpbnQgY29tcG9uZW50cywg
Ym9vbCBwdXJlSW50ZWdlcikKLSAgICA6IG1UeXBlKHR5cGUpLAotICAgICAgbU5vcm1hbGl6ZWQo
bm9ybWFsaXplZCksCi0gICAgICBtQ29tcG9uZW50cyhjb21wb25lbnRzKSwKLSAgICAgIG1QdXJl
SW50ZWdlcihwdXJlSW50ZWdlcikKK2Jvb2wgQm94OjpvcGVyYXRvcj09KGNvbnN0IEJveCAmb3Ro
ZXIpIGNvbnN0CiB7Ci0gICAgLy8gRmxvYXQgZGF0YSBjYW4gbm90IGJlIG5vcm1hbGl6ZWQsIHNv
IGlnbm9yZSB0aGUgdXNlciBzZXR0aW5nCi0gICAgaWYgKG1UeXBlID09IEdMX0ZMT0FUIHx8IG1U
eXBlID09IEdMX0hBTEZfRkxPQVQgfHwgbVR5cGUgPT0gR0xfRklYRUQpCi0gICAgewotICAgICAg
ICBtTm9ybWFsaXplZCA9IEdMX0ZBTFNFOwotICAgIH0KKyAgICByZXR1cm4gKHggPT0gb3RoZXIu
eCAmJiB5ID09IG90aGVyLnkgJiYgeiA9PSBvdGhlci56ICYmCisgICAgICAgICAgICB3aWR0aCA9
PSBvdGhlci53aWR0aCAmJiBoZWlnaHQgPT0gb3RoZXIuaGVpZ2h0ICYmIGRlcHRoID09IG90aGVy
LmRlcHRoKTsKIH0KIAotVmVydGV4Rm9ybWF0OjpWZXJ0ZXhGb3JtYXQoY29uc3QgVmVydGV4QXR0
cmlidXRlICZhdHRyaWIpCi0gICAgOiBtVHlwZShhdHRyaWIudHlwZSksCi0gICAgICBtTm9ybWFs
aXplZChhdHRyaWIubm9ybWFsaXplZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSksCi0gICAgICBtQ29t
cG9uZW50cyhhdHRyaWIuc2l6ZSksCi0gICAgICBtUHVyZUludGVnZXIoYXR0cmliLnB1cmVJbnRl
Z2VyKQorYm9vbCBCb3g6Om9wZXJhdG9yIT0oY29uc3QgQm94ICZvdGhlcikgY29uc3QKIHsKLSAg
ICAvLyBFbnN1cmUgd2UgYXJlbid0IGluaXRpYWxpemluZyBhIHZlcnRleCBmb3JtYXQgd2hpY2gg
c2hvdWxkIGJlIHVzaW5nCi0gICAgLy8gdGhlIGN1cnJlbnQtdmFsdWUgdHlwZQotICAgIEFTU0VS
VChhdHRyaWIuZW5hYmxlZCk7Ci0KLSAgICAvLyBGbG9hdCBkYXRhIGNhbiBub3QgYmUgbm9ybWFs
aXplZCwgc28gaWdub3JlIHRoZSB1c2VyIHNldHRpbmcKLSAgICBpZiAobVR5cGUgPT0gR0xfRkxP
QVQgfHwgbVR5cGUgPT0gR0xfSEFMRl9GTE9BVCB8fCBtVHlwZSA9PSBHTF9GSVhFRCkKLSAgICB7
Ci0gICAgICAgIG1Ob3JtYWxpemVkID0gR0xfRkFMU0U7Ci0gICAgfQotfQotCi1WZXJ0ZXhGb3Jt
YXQ6OlZlcnRleEZvcm1hdChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xlbnVtIGN1
cnJlbnRWYWx1ZVR5cGUpCi0gICAgOiBtVHlwZShhdHRyaWIudHlwZSksCi0gICAgICBtTm9ybWFs
aXplZChhdHRyaWIubm9ybWFsaXplZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSksCi0gICAgICBtQ29t
cG9uZW50cyhhdHRyaWIuc2l6ZSksCi0gICAgICBtUHVyZUludGVnZXIoYXR0cmliLnB1cmVJbnRl
Z2VyKQotewotICAgIGlmICghYXR0cmliLmVuYWJsZWQpCi0gICAgewotICAgICAgICBtVHlwZSA9
IGN1cnJlbnRWYWx1ZVR5cGU7Ci0gICAgICAgIG1Ob3JtYWxpemVkID0gR0xfRkFMU0U7Ci0gICAg
ICAgIG1Db21wb25lbnRzID0gNDsKLSAgICAgICAgbVB1cmVJbnRlZ2VyID0gKGN1cnJlbnRWYWx1
ZVR5cGUgIT0gR0xfRkxPQVQpOwotICAgIH0KLQotICAgIC8vIEZsb2F0IGRhdGEgY2FuIG5vdCBi
ZSBub3JtYWxpemVkLCBzbyBpZ25vcmUgdGhlIHVzZXIgc2V0dGluZwotICAgIGlmIChtVHlwZSA9
PSBHTF9GTE9BVCB8fCBtVHlwZSA9PSBHTF9IQUxGX0ZMT0FUIHx8IG1UeXBlID09IEdMX0ZJWEVE
KQotICAgIHsKLSAgICAgICAgbU5vcm1hbGl6ZWQgPSBHTF9GQUxTRTsKLSAgICB9Ci19Ci0KLXZv
aWQgVmVydGV4Rm9ybWF0OjpHZXRJbnB1dExheW91dChWZXJ0ZXhGb3JtYXQgKmlucHV0TGF5b3V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW0gKnByb2dyYW0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RhdGUgJnN0YXRlKQotewot
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZlcnRleEF0dHJpYnV0ZT4gJnZlcnRleEF0dHJpYnV0ZXMg
PSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8IHZlcnRl
eEF0dHJpYnV0ZXMuc2l6ZSgpOyBhdHRyaWJ1dGVJbmRleCsrKQotICAgIHsKLSAgICAgICAgaW50
IHNlbWFudGljSW5kZXggPSBwcm9ncmFtLT5nZXRTZW1hbnRpY0luZGV4KGF0dHJpYnV0ZUluZGV4
KTsKLQotICAgICAgICBpZiAoc2VtYW50aWNJbmRleCAhPSAtMSkKLSAgICAgICAgewotICAgICAg
ICAgICAgaW5wdXRMYXlvdXRbc2VtYW50aWNJbmRleF0gPSBWZXJ0ZXhGb3JtYXQodmVydGV4QXR0
cmlidXRlc1thdHRyaWJ1dGVJbmRleF0sIHN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZShhdHRyaWJ1dGVJbmRleCkuVHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgVmVy
dGV4Rm9ybWF0OjpvcGVyYXRvcj09KGNvbnN0IFZlcnRleEZvcm1hdCAmb3RoZXIpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIChtVHlwZSA9PSBvdGhlci5tVHlwZSAgICAgICAgICAgICAgICAmJgotICAg
ICAgICAgICAgbUNvbXBvbmVudHMgPT0gb3RoZXIubUNvbXBvbmVudHMgICAgJiYKLSAgICAgICAg
ICAgIG1Ob3JtYWxpemVkID09IG90aGVyLm1Ob3JtYWxpemVkICAgICYmCi0gICAgICAgICAgICBt
UHVyZUludGVnZXIgPT0gb3RoZXIubVB1cmVJbnRlZ2VyICApOwotfQotCi1ib29sIFZlcnRleEZv
cm1hdDo6b3BlcmF0b3IhPShjb25zdCBWZXJ0ZXhGb3JtYXQgJm90aGVyKSBjb25zdAotewogICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKIH0KIAotYm9vbCBWZXJ0ZXhGb3JtYXQ6Om9wZXJh
dG9yPChjb25zdCBWZXJ0ZXhGb3JtYXQmIG90aGVyKSBjb25zdAorYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEV4dGVudHMgJmxocywgY29uc3QgRXh0ZW50cyAmcmhzKQogewotICAgIGlmIChtVHlwZSAh
PSBvdGhlci5tVHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtVHlwZSA8IG90aGVyLm1UeXBl
OwotICAgIH0KLSAgICBpZiAobU5vcm1hbGl6ZWQgIT0gb3RoZXIubU5vcm1hbGl6ZWQpCi0gICAg
ewotICAgICAgICByZXR1cm4gbU5vcm1hbGl6ZWQgPCBvdGhlci5tTm9ybWFsaXplZDsKLSAgICB9
Ci0gICAgaWYgKG1Db21wb25lbnRzICE9IG90aGVyLm1Db21wb25lbnRzKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1Db21wb25lbnRzIDwgb3RoZXIubUNvbXBvbmVudHM7Ci0gICAgfQotICAgIHJl
dHVybiBtUHVyZUludGVnZXIgPCBvdGhlci5tUHVyZUludGVnZXI7CisgICAgcmV0dXJuIGxocy53
aWR0aCA9PSByaHMud2lkdGggJiYgbGhzLmhlaWdodCA9PSByaHMuaGVpZ2h0ICYmIGxocy5kZXB0
aCA9PSByaHMuZGVwdGg7CiB9CiAKLWJvb2wgQm94OjpvcGVyYXRvcj09KGNvbnN0IEJveCAmb3Ro
ZXIpIGNvbnN0Citib29sIG9wZXJhdG9yIT0oY29uc3QgRXh0ZW50cyAmbGhzLCBjb25zdCBFeHRl
bnRzICZyaHMpCiB7Ci0gICAgcmV0dXJuICh4ID09IG90aGVyLnggJiYgeSA9PSBvdGhlci55ICYm
IHogPT0gb3RoZXIueiAmJgotICAgICAgICAgICAgd2lkdGggPT0gb3RoZXIud2lkdGggJiYgaGVp
Z2h0ID09IG90aGVyLmhlaWdodCAmJiBkZXB0aCA9PSBvdGhlci5kZXB0aCk7CisgICAgcmV0dXJu
ICEobGhzID09IHJocyk7CiB9Ci0KLWJvb2wgQm94OjpvcGVyYXRvciE9KGNvbnN0IEJveCAmb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogfQotCi19CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVz
LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9hbmdsZXR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDkgQEAKIAogI2lu
Y2x1ZGUgPHN0ZGludC5oPgogCisjaW5jbHVkZSA8Yml0c2V0PgorI2luY2x1ZGUgPHVub3JkZXJl
ZF9tYXA+CisKIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQnVmZmVyOwpAQCAtMjIsNiArMjUsMjAg
QEAKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CiBzdHJ1Y3QgVmVydGV4QXR0cmliQ3VycmVudFZh
bHVlRGF0YTsKIAorZW51bSBQcmltaXRpdmVUeXBlCit7CisgICAgUFJJTUlUSVZFX1BPSU5UUywK
KyAgICBQUklNSVRJVkVfTElORVMsCisgICAgUFJJTUlUSVZFX0xJTkVfU1RSSVAsCisgICAgUFJJ
TUlUSVZFX0xJTkVfTE9PUCwKKyAgICBQUklNSVRJVkVfVFJJQU5HTEVTLAorICAgIFBSSU1JVElW
RV9UUklBTkdMRV9TVFJJUCwKKyAgICBQUklNSVRJVkVfVFJJQU5HTEVfRkFOLAorICAgIFBSSU1J
VElWRV9UWVBFX01BWCwKK307CisKK1ByaW1pdGl2ZVR5cGUgR2V0UHJpbWl0aXZlVHlwZShHTGVu
dW0gZHJhd01vZGUpOworCiBlbnVtIFNhbXBsZXJUeXBlCiB7CiAgICAgU0FNUExFUl9QSVhFTCwK
QEAgLTQxLDE5ICs1OCwxMCBAQAogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKQotewotICAgIHJl
dHVybiBhLnJlZCA9PSBiLnJlZCAmJgotICAgICAgICAgICBhLmdyZWVuID09IGIuZ3JlZW4gJiYK
LSAgICAgICAgICAgYS5ibHVlID09IGIuYmx1ZSAmJgotICAgICAgICAgICBhLmFscGhhID09IGIu
YWxwaGE7Ci19Citib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9y
PFQ+ICZiKTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7
Ci19Citib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3I8VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZi
KTsKIAogdHlwZWRlZiBDb2xvcjxmbG9hdD4gQ29sb3JGOwogdHlwZWRlZiBDb2xvcjxpbnQ+IENv
bG9ySTsKQEAgLTYxLDEzICs2OSwyMSBAQAogCiBzdHJ1Y3QgUmVjdGFuZ2xlCiB7CisgICAgUmVj
dGFuZ2xlKCkgOiB4KDApLCB5KDApLCB3aWR0aCgwKSwgaGVpZ2h0KDApIHt9CisgICAgUmVjdGFu
Z2xlKGludCB4X2luLCBpbnQgeV9pbiwgaW50IHdpZHRoX2luLCBpbnQgaGVpZ2h0X2luKQorICAg
ICAgICA6IHgoeF9pbiksIHkoeV9pbiksIHdpZHRoKHdpZHRoX2luKSwgaGVpZ2h0KGhlaWdodF9p
bikKKyAgICB7CisgICAgfQorCisgICAgaW50IHgwKCkgY29uc3QgeyByZXR1cm4geDsgfQorICAg
IGludCB5MCgpIGNvbnN0IHsgcmV0dXJuIHk7IH0KKyAgICBpbnQgeDEoKSBjb25zdCB7IHJldHVy
biB4ICsgd2lkdGg7IH0KKyAgICBpbnQgeTEoKSBjb25zdCB7IHJldHVybiB5ICsgaGVpZ2h0OyB9
CisKICAgICBpbnQgeDsKICAgICBpbnQgeTsKICAgICBpbnQgd2lkdGg7CiAgICAgaW50IGhlaWdo
dDsKLQotICAgIFJlY3RhbmdsZSgpIDogeCgwKSwgeSgwKSwgd2lkdGgoMCksIGhlaWdodCgwKSB7
IH0KLSAgICBSZWN0YW5nbGUoaW50IHhfaW4sIGludCB5X2luLCBpbnQgd2lkdGhfaW4sIGludCBo
ZWlnaHRfaW4pIDogeCh4X2luKSwgeSh5X2luKSwgd2lkdGgod2lkdGhfaW4pLCBoZWlnaHQoaGVp
Z2h0X2luKSB7IH0KIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWN0YW5nbGUgJmEsIGNv
bnN0IFJlY3RhbmdsZSAmYik7CkBAIC05Nyw2ICsxMTMsOSBAQAogICAgIGJvb2wgZW1wdHkoKSBj
b25zdCB7IHJldHVybiAod2lkdGggKiBoZWlnaHQgKiBkZXB0aCkgPT0gMDsgfQogfTsKIAorYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEV4dGVudHMgJmxocywgY29uc3QgRXh0ZW50cyAmcmhzKTsKK2Jv
b2wgb3BlcmF0b3IhPShjb25zdCBFeHRlbnRzICZsaHMsIGNvbnN0IEV4dGVudHMgJnJocyk7CisK
IHN0cnVjdCBCb3gKIHsKICAgICBpbnQgeDsKQEAgLTE3MSwzNiArMTkwLDU4IEBACiAgICAgR0x1
aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrOwogfTsKIAorLy8gU3RhdGUgZnJvbSBUYWJsZSA2LjEw
IChzdGF0ZSBwZXIgc2FtcGxlciBvYmplY3QpCiBzdHJ1Y3QgU2FtcGxlclN0YXRlCiB7CiAgICAg
U2FtcGxlclN0YXRlKCk7CiAKICAgICBHTGVudW0gbWluRmlsdGVyOwogICAgIEdMZW51bSBtYWdG
aWx0ZXI7CisKICAgICBHTGVudW0gd3JhcFM7CiAgICAgR0xlbnVtIHdyYXBUOwogICAgIEdMZW51
bSB3cmFwUjsKKworICAgIC8vIEZyb20gRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAg
ICAgZmxvYXQgbWF4QW5pc290cm9weTsKIAotICAgIEdMaW50IGJhc2VMZXZlbDsKLSAgICBHTGlu
dCBtYXhMZXZlbDsKICAgICBHTGZsb2F0IG1pbkxvZDsKICAgICBHTGZsb2F0IG1heExvZDsKIAog
ICAgIEdMZW51bSBjb21wYXJlTW9kZTsKICAgICBHTGVudW0gY29tcGFyZUZ1bmM7Cit9OwogCiti
b29sIG9wZXJhdG9yPT0oY29uc3QgU2FtcGxlclN0YXRlICZhLCBjb25zdCBTYW1wbGVyU3RhdGUg
JmIpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgU2FtcGxl
clN0YXRlICZiKTsKKworLy8gU3RhdGUgZnJvbSBUYWJsZSA2LjkgKHN0YXRlIHBlciB0ZXh0dXJl
IG9iamVjdCkgaW4gdGhlIE9wZW5HTCBFUyAzLjAuMiBzcGVjLgorc3RydWN0IFRleHR1cmVTdGF0
ZQoreworICAgIFRleHR1cmVTdGF0ZSgpOworCiAgICAgR0xlbnVtIHN3aXp6bGVSZWQ7CiAgICAg
R0xlbnVtIHN3aXp6bGVHcmVlbjsKICAgICBHTGVudW0gc3dpenpsZUJsdWU7CiAgICAgR0xlbnVt
IHN3aXp6bGVBbHBoYTsKIAorICAgIFNhbXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7CisKKyAgICBH
THVpbnQgYmFzZUxldmVsOworICAgIEdMdWludCBtYXhMZXZlbDsKKworICAgIGJvb2wgaW1tdXRh
YmxlRm9ybWF0OworICAgIEdMdWludCBpbW11dGFibGVMZXZlbHM7CisKKyAgICAvLyBGcm9tIEdM
X0FOR0xFX3RleHR1cmVfdXNhZ2UKKyAgICBHTGVudW0gdXNhZ2U7CisKICAgICBib29sIHN3aXp6
bGVSZXF1aXJlZCgpIGNvbnN0OwotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNhbXBsZXJT
dGF0ZSAmb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTYW1wbGVyU3Rh
dGUgJm90aGVyKSBjb25zdDsKIH07CiAKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0dXJlU3Rh
dGUgJmEsIGNvbnN0IFRleHR1cmVTdGF0ZSAmYik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4
dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpOworCiBzdHJ1Y3QgUGl4ZWxVbnBh
Y2tTdGF0ZQogewogICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gcGl4ZWxCdWZmZXI7CkBAIC0y
NTYsMzcgKzI5NywyNiBAQAogICAgIHt9CiB9OwogCi1zdHJ1Y3QgVmVydGV4Rm9ybWF0Ci17Ci0g
ICAgR0xlbnVtICAgICAgbVR5cGU7Ci0gICAgR0xib29sZWFuICAgbU5vcm1hbGl6ZWQ7Ci0gICAg
R0x1aW50ICAgICAgbUNvbXBvbmVudHM7Ci0gICAgYm9vbCAgICAgICAgbVB1cmVJbnRlZ2VyOwor
Ly8gVXNlZCBpbiBQcm9ncmFtIGFuZCBWZXJ0ZXhBcnJheS4KK3R5cGVkZWYgc3RkOjpiaXRzZXQ8
TUFYX1ZFUlRFWF9BVFRSSUJTPiBBdHRyaWJ1dGVzTWFzazsKIAotICAgIFZlcnRleEZvcm1hdCgp
OwotICAgIFZlcnRleEZvcm1hdChHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdM
dWludCBjb21wb25lbnRzLCBib29sIHB1cmVJbnRlZ2VyKTsKLSAgICBleHBsaWNpdCBWZXJ0ZXhG
b3JtYXQoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpOwotICAgIFZlcnRleEZvcm1h
dChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgR0xlbnVtIGN1cnJlbnRWYWx1ZVR5
cGUpOworLy8gVXNlIGluIFByb2dyYW0KK3R5cGVkZWYgc3RkOjpiaXRzZXQ8SU1QTEVNRU5UQVRJ
T05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZFUlM+IFVuaWZvcm1CbG9ja0JpbmRp
bmdNYXNrOwogCi0gICAgc3RhdGljIHZvaWQgR2V0SW5wdXRMYXlvdXQoVmVydGV4Rm9ybWF0ICpp
bnB1dExheW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9ncmFtICpwcm9n
cmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0YXRlJiBjdXJyZW50
VmFsdWVzKTsKLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZXJ0ZXhGb3JtYXQgJm90aGVy
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVydGV4Rm9ybWF0ICZvdGhlcikg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVmVydGV4Rm9ybWF0JiBvdGhlcikgY29u
c3Q7Ci19OwotCisvLyBBIG1hcCBvZiBHTCBvYmplY3RzIGluZGV4ZWQgYnkgb2JqZWN0IElELiBU
aGUgc3BlY2lmaWMgbWFwIGltcGxlbWVudGF0aW9uIG1heSBjaGFuZ2UuCisvLyBDbGllbnQgY29k
ZSBzaG91bGQgdHJlYXQgaXQgYXMgYSBzdGQ6Om1hcC4KK3RlbXBsYXRlIDxjbGFzcyBSZXNvdXJj
ZVQ+Cit1c2luZyBSZXNvdXJjZU1hcCA9IHN0ZDo6dW5vcmRlcmVkX21hcDxHTHVpbnQsIFJlc291
cmNlVCAqPjsKIH0KIAogbmFtZXNwYWNlIHJ4CiB7Ci0KIGVudW0gVmVuZG9ySUQgOiB1aW50MzJf
dAogewotICAgIFZFTkRPUl9JRF9BTUQgPSAweDEwMDIsCi0gICAgVkVORE9SX0lEX0lOVEVMID0g
MHg4MDg2LAotICAgIFZFTkRPUl9JRF9OVklESUEgPSAweDEwREUsCisgICAgVkVORE9SX0lEX1VO
S05PV04gPSAweDAsCisgICAgVkVORE9SX0lEX0FNRCAgICAgPSAweDEwMDIsCisgICAgVkVORE9S
X0lEX0lOVEVMICAgPSAweDgwODYsCisgICAgVkVORE9SX0lEX05WSURJQSAgPSAweDEwREUsCiB9
OwogCiAvLyBBIG1hY3JvIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBn
aXZlbiBydW50aW1lIHR5cGUuCkBAIC0zMzcsNCArMzY3LDUyIEBACiAKIH0KIAorI2luY2x1ZGUg
ImFuZ2xldHlwZXMuaW5sIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKy8vIFplcm8tYmFzZWQgZm9y
IGJldHRlciBhcnJheSBpbmRleGluZworZW51bSBGcmFtZWJ1ZmZlckJpbmRpbmcKK3sKKyAgICBG
cmFtZWJ1ZmZlckJpbmRpbmdSZWFkID0gMCwKKyAgICBGcmFtZWJ1ZmZlckJpbmRpbmdEcmF3LAor
ICAgIEZyYW1lYnVmZmVyQmluZGluZ1NpbmdsZXRvbk1heCwKKyAgICBGcmFtZWJ1ZmZlckJpbmRp
bmdCb3RoID0gRnJhbWVidWZmZXJCaW5kaW5nU2luZ2xldG9uTWF4LAorICAgIEZyYW1lYnVmZmVy
QmluZGluZ01heCwKKyAgICBGcmFtZWJ1ZmZlckJpbmRpbmdVbmtub3duID0gRnJhbWVidWZmZXJC
aW5kaW5nTWF4LAorfTsKKworaW5saW5lIEZyYW1lYnVmZmVyQmluZGluZyBFbnVtVG9GcmFtZWJ1
ZmZlckJpbmRpbmcoR0xlbnVtIGVudW1WYWx1ZSkKK3sKKyAgICBzd2l0Y2ggKGVudW1WYWx1ZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfUkVBRF9GUkFNRUJVRkZFUjoKKyAgICAgICAgICAgIHJl
dHVybiBGcmFtZWJ1ZmZlckJpbmRpbmdSZWFkOworICAgICAgICBjYXNlIEdMX0RSQVdfRlJBTUVC
VUZGRVI6CisgICAgICAgICAgICByZXR1cm4gRnJhbWVidWZmZXJCaW5kaW5nRHJhdzsKKyAgICAg
ICAgY2FzZSBHTF9GUkFNRUJVRkZFUjoKKyAgICAgICAgICAgIHJldHVybiBGcmFtZWJ1ZmZlckJp
bmRpbmdCb3RoOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBGcmFtZWJ1ZmZlckJpbmRpbmdVbmtub3duOworICAgIH0KK30K
KworaW5saW5lIEdMZW51bSBGcmFtZWJ1ZmZlckJpbmRpbmdUb0VudW0oRnJhbWVidWZmZXJCaW5k
aW5nIGJpbmRpbmcpCit7CisgICAgc3dpdGNoIChiaW5kaW5nKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBGcmFtZWJ1ZmZlckJpbmRpbmdSZWFkOgorICAgICAgICAgICAgcmV0dXJuIEdMX1JFQURfRlJB
TUVCVUZGRVI7CisgICAgICAgIGNhc2UgRnJhbWVidWZmZXJCaW5kaW5nRHJhdzoKKyAgICAgICAg
ICAgIHJldHVybiBHTF9EUkFXX0ZSQU1FQlVGRkVSOworICAgICAgICBjYXNlIEZyYW1lYnVmZmVy
QmluZGluZ0JvdGg6CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVI7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJu
IEdMX05PTkU7CisgICAgfQorfQorfQorCiAjZW5kaWYgLy8gTElCQU5HTEVfQU5HTEVUWVBFU19I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMu
aW5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9h
bmdsZXR5cGVzLmlubAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9hbmdsZXR5cGVzLmlubAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEyLTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBhbmdsZXR5cGVzLmlubCA6IElubGluZSBkZWZpbml0
aW9ucyBvZiBzb21lIGZ1bmN0aW9ucyBmcm9tIGFuZ2xldHlwZXMuaAorCituYW1lc3BhY2UgZ2wK
K3sKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3I8
VD4gJmEsIGNvbnN0IENvbG9yPFQ+ICZiKQoreworICAgIHJldHVybiBhLnJlZCA9PSBiLnJlZCAm
JgorICAgICAgICAgICBhLmdyZWVuID09IGIuZ3JlZW4gJiYKKyAgICAgICAgICAgYS5ibHVlID09
IGIuYmx1ZSAmJgorICAgICAgICAgICBhLmFscGhhID09IGIuYWxwaGE7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBUPgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yPFQ+ICZhLCBjb25zdCBD
b2xvcjxUPiAmYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCitpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlY3RhbmdsZSAmYSwgY29uc3QgUmVjdGFuZ2xlICZiKQoreworICAg
IHJldHVybiBhLnggPT0gYi54ICYmCisgICAgICAgICAgIGEueSA9PSBiLnkgJiYKKyAgICAgICAg
ICAgYS53aWR0aCA9PSBiLndpZHRoICYmCisgICAgICAgICAgIGEuaGVpZ2h0ID09IGIuaGVpZ2h0
OworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlY3RhbmdsZSAmYSwgY29uc3Qg
UmVjdGFuZ2xlICZiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9CisKK2lubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2FtcGxlclN0YXRlICZhLCBjb25zdCBTYW1wbGVyU3RhdGUgJmIp
Cit7CisgICAgcmV0dXJuIGEubWluRmlsdGVyID09IGIubWluRmlsdGVyICYmCisgICAgICAgICAg
IGEubWFnRmlsdGVyID09IGIubWFnRmlsdGVyICYmCisgICAgICAgICAgIGEud3JhcFMgPT0gYi53
cmFwUyAmJgorICAgICAgICAgICBhLndyYXBUID09IGIud3JhcFQgJiYKKyAgICAgICAgICAgYS53
cmFwUiA9PSBiLndyYXBSICYmCisgICAgICAgICAgIGEubWF4QW5pc290cm9weSA9PSBiLm1heEFu
aXNvdHJvcHkgJiYKKyAgICAgICAgICAgYS5taW5Mb2QgPT0gYi5taW5Mb2QgJiYKKyAgICAgICAg
ICAgYS5tYXhMb2QgPT0gYi5tYXhMb2QgJiYKKyAgICAgICAgICAgYS5jb21wYXJlTW9kZSA9PSBi
LmNvbXBhcmVNb2RlICYmCisgICAgICAgICAgIGEuY29tcGFyZUZ1bmMgPT0gYi5jb21wYXJlRnVu
YzsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTYW1wbGVyU3RhdGUgJmEsIGNv
bnN0IFNhbXBsZXJTdGF0ZSAmYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHR1cmVTdGF0ZSAmYSwgY29uc3QgVGV4dHVyZVN0
YXRlICZiKQoreworICAgIHJldHVybiBhLnN3aXp6bGVSZWQgPT0gYi5zd2l6emxlUmVkICYmCisg
ICAgICAgICAgIGEuc3dpenpsZUdyZWVuID09IGIuc3dpenpsZUdyZWVuICYmCisgICAgICAgICAg
IGEuc3dpenpsZUJsdWUgPT0gYi5zd2l6emxlQmx1ZSAmJgorICAgICAgICAgICBhLnN3aXp6bGVB
bHBoYSA9PSBiLnN3aXp6bGVBbHBoYSAmJgorICAgICAgICAgICBhLnNhbXBsZXJTdGF0ZSA9PSBi
LnNhbXBsZXJTdGF0ZSAmJgorICAgICAgICAgICBhLmJhc2VMZXZlbCA9PSBiLmJhc2VMZXZlbCAm
JgorICAgICAgICAgICBhLm1heExldmVsID09IGIubWF4TGV2ZWwgJiYKKyAgICAgICAgICAgYS5p
bW11dGFibGVGb3JtYXQgPT0gYi5pbW11dGFibGVGb3JtYXQgJiYKKyAgICAgICAgICAgYS5pbW11
dGFibGVMZXZlbHMgPT0gYi5pbW11dGFibGVMZXZlbHMgJiYKKyAgICAgICAgICAgYS51c2FnZSA9
PSBiLnVzYWdlOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHR1cmVTdGF0
ZSAmYSwgY29uc3QgVGV4dHVyZVN0YXRlICZiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mZWF0dXJl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9m
ZWF0dXJlcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvZmVhdHVyZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMjIgQEAK
ICNkZWZpbmUgQU5HTEVfUFJPR1JBTV9CSU5BUllfTE9BRCBBTkdMRV9FTkFCTEVECiAjZW5kaWYK
IAotLy8gU2hhZGVyIGRlYnVnIGluZm8KLSNpZiAhZGVmaW5lZChBTkdMRV9TSEFERVJfREVCVUdf
SU5GTykKLSNkZWZpbmUgQU5HTEVfU0hBREVSX0RFQlVHX0lORk8gQU5HTEVfRElTQUJMRUQKKy8v
IEFwcGVuZCBITFNMIGFzc2VtYmx5IHRvIHNoYWRlciBkZWJ1ZyBpbmZvLiBEZWZhdWx0cyB0byBl
bmFibGVkIGluIERlYnVnIGFuZCBvZmYgaW4gUmVsZWFzZS4KKyNpZiAhZGVmaW5lZChBTkdMRV9B
UFBFTkRfQVNTRU1CTFlfVE9fU0hBREVSX0RFQlVHX0lORk8pCisjaWYgIWRlZmluZWQoTkRFQlVH
KQorI2RlZmluZSBBTkdMRV9BUFBFTkRfQVNTRU1CTFlfVE9fU0hBREVSX0RFQlVHX0lORk8gQU5H
TEVfRU5BQkxFRAorI2Vsc2UKKyNkZWZpbmUgQU5HTEVfQVBQRU5EX0FTU0VNQkxZX1RPX1NIQURF
Ul9ERUJVR19JTkZPIEFOR0xFX0RJU0FCTEVECisjZW5kaWYgIC8vICFkZWZpbmVkKE5ERUJVRykK
KyNlbmRpZiAgLy8gIWRlZmluZWQoQU5HTEVfQVBQRU5EX0FTU0VNQkxZX1RPX1NIQURFUl9ERUJV
R19JTkZPKQorCisvLyBQcm9ncmFtIGxpbmsgdmFsaWRhdGlvbiBvZiBwcmVjaXNpb25zIGZvciB1
bmlmb3Jtcy4gVGhpcyBmZWF0dXJlIHdhcworLy8gcmVxdWVzdGVkIGJ5IGRldmVsb3BlcnMgdG8g
YWxsb3cgbm9uLWNvbmZvcm1hbnQgc2hhZGVycyB0byBiZSB1c2VkIHdoaWNoCisvLyBjb250YWlu
IG1pc21hdGNoZWQgcHJlY2lzaW9ucy4KKy8vIEVOQUJMRUQgdmFsaWRhdGUgdGhhdCBwcmVjaXNp
b24gZm9yIHVuaWZvcm1zIG1hdGNoIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJz
CisvLyBESVNBQkxFRCBhbGxvdyBwcmVjaXNpb24gZm9yIHVuaWZvcm1zIHRvIGRpZmZlciBiZXR3
ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycworI2lmICFkZWZpbmVkKEFOR0xFX1BST0dS
QU1fTElOS19WQUxJREFURV9VTklGT1JNX1BSRUNJU0lPTikKKyNkZWZpbmUgQU5HTEVfUFJPR1JB
TV9MSU5LX1ZBTElEQVRFX1VOSUZPUk1fUFJFQ0lTSU9OIEFOR0xFX0VOQUJMRUQKICNlbmRpZgog
CiAjZW5kaWYgLy8gTElCQU5HTEVfRkVBVFVSRVNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0
aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDExICsxNjMsNiBAQAogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCBVbmltcGxlbWVudGVkU3VwcG9ydChHTHVpbnQsIGNvbnN0
IEV4dGVuc2lvbnMgJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBib29sIE5l
dmVyU3VwcG9ydGVkKEdMdWludCwgY29uc3QgRXh0ZW5zaW9ucyAmKQogewogICAgIHJldHVybiBm
YWxzZTsKQEAgLTIxNyw2ICsyMTIsNjEgQEAKICAgICByZXR1cm4gZXh0ZW5zaW9ucy4qYm9vbDEg
JiYgZXh0ZW5zaW9ucy4qYm9vbDI7CiB9CiAKKy8vIENoZWNrIHN1cHBvcnQgZm9yIGVpdGhlciBv
ZiB0d28gZXh0ZW5zaW9ucwordGVtcGxhdGUgPEV4dGVuc2lvbkJvb2wgYm9vbDEsIEV4dGVuc2lv
bkJvb2wgYm9vbDI+CitzdGF0aWMgYm9vbCBSZXF1aXJlRXh0T3JFeHQoR0x1aW50LCBjb25zdCBF
eHRlbnNpb25zICZleHRlbnNpb25zKQoreworICAgIHJldHVybiBleHRlbnNpb25zLipib29sMSB8
fCBleHRlbnNpb25zLipib29sMjsKK30KKworLy8gU3BlY2lhbCBmdW5jdGlvbiBmb3IgaGFsZiBm
bG9hdCBmb3JtYXRzIHdpdGggdGhyZWUgb3IgZm91ciBjaGFubmVscy4KK3N0YXRpYyBib29sIEhh
bGZGbG9hdFN1cHBvcnQoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4
dGVuc2lvbnMpCit7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gMyB8fCBleHRlbnNpb25z
LnRleHR1cmVIYWxmRmxvYXQ7Cit9CisKK3N0YXRpYyBib29sIEhhbGZGbG9hdFJlbmRlcmFibGVT
dXBwb3J0KEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25z
KQoreworICAgIHJldHVybiBIYWxmRmxvYXRTdXBwb3J0KGNsaWVudFZlcnNpb24sIGV4dGVuc2lv
bnMpICYmIGV4dGVuc2lvbnMuY29sb3JCdWZmZXJIYWxmRmxvYXQ7Cit9CisKKy8vIFNwZWNpYWwg
ZnVuY3Rpb24gZm9yIGhhbGYgZmxvYXQgZm9ybWF0cyB3aXRoIG9uZSBvciB0d28gY2hhbm5lbHMu
CitzdGF0aWMgYm9vbCBIYWxmRmxvYXRTdXBwb3J0UkcoR0x1aW50IGNsaWVudFZlcnNpb24sIGNv
bnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCit7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24g
Pj0gMyB8fCAoZXh0ZW5zaW9ucy50ZXh0dXJlSGFsZkZsb2F0ICYmIGV4dGVuc2lvbnMudGV4dHVy
ZVJHKTsKK30KKworc3RhdGljIGJvb2wgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRyhHTHVp
bnQgY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKK3sKKyAgICBy
ZXR1cm4gSGFsZkZsb2F0U3VwcG9ydFJHKGNsaWVudFZlcnNpb24sIGV4dGVuc2lvbnMpICYmIGV4
dGVuc2lvbnMuY29sb3JCdWZmZXJIYWxmRmxvYXQ7Cit9CisKKy8vIFNwZWNpYWwgZnVuY3Rpb24g
Zm9yIGZsb2F0IGZvcm1hdHMgd2l0aCB0aHJlZSBvciBmb3VyIGNoYW5uZWxzLgorc3RhdGljIGJv
b2wgRmxvYXRTdXBwb3J0KEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZl
eHRlbnNpb25zKQoreworICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IDMgfHwgZXh0ZW5zaW9u
cy50ZXh0dXJlRmxvYXQ7Cit9CisKK3N0YXRpYyBib29sIEZsb2F0UmVuZGVyYWJsZVN1cHBvcnQo
R0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCit7Cisg
ICAgLy8gV2UgZG9uJ3QgZXhwb3NlIGNvbG9yQnVmZmVyRmxvYXQgaW4gRVMyLCBidXQgd2Ugc2ls
ZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgdG8gZmxvYXQuCisgICAgcmV0dXJuIEZsb2F0U3VwcG9y
dChjbGllbnRWZXJzaW9uLCBleHRlbnNpb25zKSAmJgorICAgICAgICAgICAoZXh0ZW5zaW9ucy5j
b2xvckJ1ZmZlckZsb2F0IHx8IGNsaWVudFZlcnNpb24gPT0gMik7Cit9CisKKy8vIFNwZWNpYWwg
ZnVuY3Rpb24gZm9yIGZsb2F0IGZvcm1hdHMgd2l0aCBvbmUgb3IgdHdvIGNoYW5uZWxzLgorc3Rh
dGljIGJvb2wgRmxvYXRTdXBwb3J0UkcoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVu
c2lvbnMgJmV4dGVuc2lvbnMpCit7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gMyB8fCAo
ZXh0ZW5zaW9ucy50ZXh0dXJlRmxvYXQgJiYgZXh0ZW5zaW9ucy50ZXh0dXJlUkcpOworfQorCitz
dGF0aWMgYm9vbCBGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcoR0x1aW50IGNsaWVudFZlcnNpb24s
IGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCit7CisgICAgLy8gV2UgZG9uJ3QgZXhwb3Nl
IGNvbG9yQnVmZmVyRmxvYXQgaW4gRVMyLCBidXQgd2Ugc2lsZW50bHkgc3VwcG9ydCByZW5kZXJp
bmcgdG8gZmxvYXQuCisgICAgcmV0dXJuIEZsb2F0U3VwcG9ydFJHKGNsaWVudFZlcnNpb24sIGV4
dGVuc2lvbnMpICYmCisgICAgICAgICAgIChleHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQgfHwg
Y2xpZW50VmVyc2lvbiA9PSAyKTsKK30KKwogSW50ZXJuYWxGb3JtYXQ6OkludGVybmFsRm9ybWF0
KCkKICAgICA6IHJlZEJpdHMoMCksCiAgICAgICBncmVlbkJpdHMoMCksCkBAIC0yMjgsMTMgKzI3
OCwxMyBAQAogICAgICAgc3RlbmNpbEJpdHMoMCksCiAgICAgICBwaXhlbEJ5dGVzKDApLAogICAg
ICAgY29tcG9uZW50Q291bnQoMCksCisgICAgICBjb21wcmVzc2VkKGZhbHNlKSwKICAgICAgIGNv
bXByZXNzZWRCbG9ja1dpZHRoKDApLAogICAgICAgY29tcHJlc3NlZEJsb2NrSGVpZ2h0KDApLAog
ICAgICAgZm9ybWF0KEdMX05PTkUpLAogICAgICAgdHlwZShHTF9OT05FKSwKICAgICAgIGNvbXBv
bmVudFR5cGUoR0xfTk9ORSksCiAgICAgICBjb2xvckVuY29kaW5nKEdMX05PTkUpLAotICAgICAg
Y29tcHJlc3NlZChmYWxzZSksCiAgICAgICB0ZXh0dXJlU3VwcG9ydChOZXZlclN1cHBvcnRlZCks
CiAgICAgICByZW5kZXJTdXBwb3J0KE5ldmVyU3VwcG9ydGVkKSwKICAgICAgIGZpbHRlclN1cHBv
cnQoTmV2ZXJTdXBwb3J0ZWQpCkBAIC0zNDYsNiArMzk2LDcgQEAKIHsKICAgICBJbnRlcm5hbEZv
cm1hdEluZm9NYXAgbWFwOwogCisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgIC8vIEZyb20g
RVMgMy4wLjEgc3BlYywgdGFibGUgMy4xMgogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9OT05FLCAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQoKSkpOwogCkBAIC0z
NjIsNyArNDEzLDcgQEAKICAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xf
UkdCQTgsICAgICAgICAgICAgIFJHQkFGb3JtYXQoIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkEs
ICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+
LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgQWx3YXlzU3VwcG9y
dGVkKSkpOwogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SR0JBOF9T
Tk9STSwgICAgICAgUkdCQUZvcm1hdCggOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQSwgICAgICAg
ICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwg
ICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7
CiAgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjEwX0EyLCAgICAg
ICAgICBSR0JBRm9ybWF0KDEwLCAxMCwgMTAsICAyLCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNl
LCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCMTBfQTJVSSwgICAgICAgIFJH
QkFGb3JtYXQoMTAsIDEwLCAxMCwgIDIsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdORURf
SU5UXzJfMTBfMTBfMTBfUkVWLCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjEwX0EyVUksICAgICAgICBSR0JBRm9ybWF0
KDEwLCAxMCwgMTAsICAyLCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0lOVF8yXzEw
XzEwXzEwX1JFViwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKSkpOwogICAgIG1hcC5pbnNlcnQoSW50ZXJu
YWxGb3JtYXRJbmZvUGFpcihHTF9TUkdCOCwgICAgICAgICAgICAgUkdCQUZvcm1hdCggOCwgIDgs
ICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCB0cnVlLCAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OnNSR0I+LCAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7CiAgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX1NSR0I4X0FMUEhBOCwgICAgICBSR0JBRm9ybWF0KCA4LCAgOCwgIDgsICA4
LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIHRydWUsICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9u
czo6c1JHQj4sICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAg
IEFsd2F5c1N1cHBvcnRlZCkpKTsKICAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfUjExRl9HMTFGX0IxMEYsICAgIFJHQkFGb3JtYXQoMTEsIDExLCAxMCwgIDAsIDAsIEdM
X1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViwgR0xfRkxPQVQs
ICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpjb2xvckJ1ZmZlckZsb2F0PiwgQWx3YXlz
U3VwcG9ydGVkKSkpOwpAQCAtMzk3LDIzICs0NDgsMjMgQEAKICAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfQkdSNV9BMV9BTkdMRVgsICAgIFJHQkFGb3JtYXQoIDUsICA1
LCAgNSwgIDEsIDAsIEdMX0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9S
RVZfRVhULCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4
dHVyZUZvcm1hdEJHUkE4ODg4PiwgQWx3YXlzU3VwcG9ydGVkKSkpOwogCiAgICAgLy8gRmxvYXRp
bmcgcG9pbnQgcmVuZGVyYWJpbGl0eSBhbmQgZmlsdGVyaW5nIGlzIHByb3ZpZGVkIGJ5IE9FU190
ZXh0dXJlX2Zsb2F0IGFuZCBPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Ci0gICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgIHwgICAgICAgICAgfCBE
IHxTIHwgRm9ybWF0ICAgICAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBDb21wICAgfCBTUkdCIHwgIFRleHR1cmUgc3VwcG9ydGVkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVy
YWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfAotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgIHwgICB8ICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHlwZSAgIHwgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5mb1BhaXIoR0xfUjE2RiwgICAgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsICAwLCAg
MCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgR0xfRkxPQVQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dEFuZEV4dDwzLCAmRXh0ZW5zaW9uczo6
dGV4dHVyZUhhbGZGbG9hdCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIFJlcXVpcmVFU09yRXh0
QW5kRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0LCAmRXh0ZW5zaW9uczo6dGV4
dHVyZVJHPiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUhhbGZGbG9hdExpbmVhcj4p
KSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHMTZGLCAgICAg
ICAgICAgICBSR0JBRm9ybWF0KDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdM
X0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgUmVxdWlyZUVT
T3JFeHRBbmRFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXQsICZFeHRlbnNpb25z
Ojp0ZXh0dXJlUkc+LCBSZXF1aXJlRVNPckV4dEFuZEV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVy
ZUhhbGZGbG9hdCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIFJlcXVpcmVFeHQ8JkV4dGVuc2lv
bnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxG
b3JtYXRJbmZvUGFpcihHTF9SR0IxNkYsICAgICAgICAgICAgUkdCQUZvcm1hdCgxNiwgMTYsIDE2
LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAg
ICBHTF9GTE9BVCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJl
SGFsZkZsb2F0PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8
MywgJkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXQ+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0TGluZWFyPikp
KTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCQTE2RiwgICAg
ICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEsICAgICAgICAgR0xf
SEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBSZXF1aXJlRVNP
ckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUhhbGZGbG9hdD4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZs
b2F0PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9u
czo6dGV4dHVyZUhhbGZGbG9hdExpbmVhcj4pKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX1IzMkYsICAgICAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAgMCwgIDAs
ICAwLCAwLCBHTF9SRUQsICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULCBmYWxzZSwgUmVxdWlyZUVTT3JFeHRBbmRFeHQ8MywgJkV4dGVuc2lvbnM6OnRl
eHR1cmVGbG9hdCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sICAgICBSZXF1aXJlRVNPckV4dEFu
ZEV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0LCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJH
PiwgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExpbmVhcj4gICAgKSkp
OwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzMyRiwgICAgICAg
ICAgICAgUkdCQUZvcm1hdCgzMiwgMzIsICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9G
TE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIFJlcXVpcmVFU09y
RXh0QW5kRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXQsICZFeHRlbnNpb25zOjp0ZXh0
dXJlUkc+LCAgICAgUmVxdWlyZUVTT3JFeHRBbmRFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVG
bG9hdCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25z
Ojp0ZXh0dXJlRmxvYXRMaW5lYXI+ICAgICkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9y
bWF0SW5mb1BhaXIoR0xfUkdCMzJGLCAgICAgICAgICAgIFJHQkFGb3JtYXQoMzIsIDMyLCAzMiwg
IDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAg
R0xfRkxPQVQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUZs
b2F0PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMs
ICZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXQ+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICApKSk7
Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQkEzMkYsICAgICAg
ICAgICBSR0JBRm9ybWF0KDMyLCAzMiwgMzIsIDMyLCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX0ZM
T0FULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgUmVxdWlyZUVTT3JF
eHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdD4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0Piwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6
OnRleHR1cmVGbG9hdExpbmVhcj4gICAgKSkpOworICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICB8ICAgICAgICAgIHwgRCB8UyB8IEZvcm1h
dCAgICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
Q29tcCAgIHwgU1JHQiB8ICBUZXh0dXJlIHN1cHBvcnRlZCB8IFJlbmRlcmFibGUgICAgICAgICAg
ICAgICAgICB8IEZpbHRlcmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgfCAgIHwgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0eXBlICAgfCAgICAgIHwgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9y
bWF0SW5mb1BhaXIoR0xfUjE2RiwgICAgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsICAwLCAgMCwg
IDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAg
R0xfRkxPQVQsIGZhbHNlLCBIYWxmRmxvYXRTdXBwb3J0UkcsIEhhbGZGbG9hdFJlbmRlcmFibGVT
dXBwb3J0UkcsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+
KSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SRzE2RiwgICAg
ICAgICAgICAgUkdCQUZvcm1hdCgxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBH
TF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEhhbGZGbG9h
dFN1cHBvcnRSRywgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRywgUmVxdWlyZUV4dDwmRXh0
ZW5zaW9uczo6dGV4dHVyZUhhbGZGbG9hdExpbmVhcj4pKSk7CisgICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX1JHQjE2RiwgICAgICAgICAgICBSR0JBRm9ybWF0KDE2LCAx
NiwgMTYsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAg
ICAgICAgIEdMX0ZMT0FULCBmYWxzZSwgSGFsZkZsb2F0U3VwcG9ydCwgICBIYWxmRmxvYXRSZW5k
ZXJhYmxlU3VwcG9ydCwgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlSGFsZkZsb2F0
TGluZWFyPikpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdC
QTE2RiwgICAgICAgICAgIFJHQkFGb3JtYXQoMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEsICAg
ICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBI
YWxmRmxvYXRTdXBwb3J0LCAgIEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0LCAgIFJlcXVpcmVF
eHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXRMaW5lYXI+KSkpOworICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9SMzJGLCAgICAgICAgICAgICAgUkdCQUZvcm1h
dCgzMiwgIDAsICAwLCAgMCwgMCwgR0xfUkVELCAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydFJHLCAgICAgRmxvYXRS
ZW5kZXJhYmxlU3VwcG9ydFJHLCAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZs
b2F0TGluZWFyPiAgICApKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX1JHMzJGLCAgICAgICAgICAgICBSR0JBRm9ybWF0KDMyLCAzMiwgIDAsICAwLCAwLCBHTF9S
RywgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCBm
YWxzZSwgRmxvYXRTdXBwb3J0UkcsICAgICBGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcsICAgICBS
ZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRmxvYXRMaW5lYXI+ICAgICkpKTsKKyAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfUkdCMzJGLCAgICAgICAgICAgIFJH
QkFGb3JtYXQoMzIsIDMyLCAzMiwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfRkxPQVQsICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZhbHNlLCBGbG9hdFN1cHBvcnQsICAgICAg
IEZsb2F0UmVuZGVyYWJsZVN1cHBvcnQsICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRl
eHR1cmVGbG9hdExpbmVhcj4gICAgKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9SR0JBMzJGLCAgICAgICAgICAgUkdCQUZvcm1hdCgzMiwgMzIsIDMyLCAzMiwg
MCwgR0xfUkdCQSwgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9G
TE9BVCwgZmFsc2UsIEZsb2F0U3VwcG9ydCwgICAgICAgRmxvYXRSZW5kZXJhYmxlU3VwcG9ydCwg
ICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICApKSk7
CiAKICAgICAvLyBEZXB0aCBzdGVuY2lsIGZvcm1hdHMKICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICB8IEQgfFMgfCBYIHwgRm9ybWF0ICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAgICB8IFN1cHBvcnRlZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZp
bHRlcmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgIG1hcC5pbnNl
cnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9ERVBUSF9DT01QT05FTlQxNiwgICAgIERlcHRo
U3RlbmNpbEZvcm1hdCgxNiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURf
U0hPUlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVM8
Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4pKSk7
CiAgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0RFUFRIX0NPTVBPTkVO
VDI0LCAgICAgRGVwdGhTdGVuY2lsRm9ybWF0KDI0LCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5U
LCBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTEla
RUQsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpkZXB0
aFRleHR1cmVzPikpKTsKICAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xf
REVQVEhfQ09NUE9ORU5UMzJGLCAgICBEZXB0aFN0ZW5jaWxGb3JtYXQoMzIsIDAsICAwLCBHTF9E
RVBUSF9DT01QT05FTlQsIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxP
QVQsICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsIERlcHRoU3RlbmNpbEZvcm1hdCgz
MiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpk
ZXB0aFRleHR1cmVzPiwgICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVy
ZXM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNT
dXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSk7CisgICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywgRGVwdGhT
dGVuY2lsRm9ybWF0KDMyLCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9J
TlQsICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFeHRP
ckV4dDwmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVuc2lvbnM6OmRlcHRoMzI+LCBS
ZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25zOjpk
ZXB0aDMyPiwgQWx3YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpKTsK
ICAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfREVQVEgyNF9TVEVOQ0lM
OCwgICAgICBEZXB0aFN0ZW5jaWxGb3JtYXQoMjQsIDgsICAwLCBHTF9ERVBUSF9TVEVOQ0lMLCAg
IEdMX1VOU0lHTkVEX0lOVF8yNF84LCAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+LCBSZXF1aXJl
RVNPckV4dE9yRXh0PDMsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9uczo6
cGFja2VkRGVwdGhTdGVuY2lsPiwgQWx3YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKSkpOwogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9E
RVBUSDMyRl9TVEVOQ0lMOCwgICAgIERlcHRoU3RlbmNpbEZvcm1hdCgzMiwgOCwgMjQsIEdMX0RF
UFRIX1NURU5DSUwsICAgR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWLCBHTF9GTE9B
VCwgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApKSk7CiAgICAgLy8gU1RFTkNJTF9JTkRFWDggaXMgc3Bl
Y2lhbC1jYXNlZCwgc2VlIGFyb3VuZCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LgpAQCAtNDUwLDI5
ICs1MDEsNjQgQEAKICAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfU1JH
Ql9BTFBIQV9FWFQsICBVbnNpemVkRm9ybWF0KEdMX1JHQkEsICAgICAgICAgICAgUmVxdWlyZUVT
T3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0
PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpKSk7
CiAKICAgICAvLyBDb21wcmVzc2VkIGZvcm1hdHMsIEZyb20gRVMgMy4wLjEgc3BlYywgdGFibGUg
My4xNgotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9y
bWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxXIHxIIHwg
QlMgfENDfCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVHlw
ZSAgICAgICAgICAgIHwgU1JHQiB8IFN1cHBvcnRlZCAgICAgICAgICB8IFJlbmRlcmFibGUgICAg
ICAgICAgIHwgRmlsdGVyYWJsZSAgICAgICAgIHwKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9y
bWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAg
IENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAxLCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFVuaW1wbGVtZW50
ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpKSk7
Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU0lH
TkVEX1IxMV9FQUMsICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwg
MSwgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIGZhbHNlLCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBv
cnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3Jt
YXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAg
Q29tcHJlc3NlZEZvcm1hdCg0LCA0LCAxMjgsIDIsIEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgVW5pbXBsZW1lbnRl
ZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCkpKTsK
LSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TSUdO
RURfUkcxMV9FQUMsICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCAy
LCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfQllURSwgZmFsc2UsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgICBD
b21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBVbmltcGxlbWVudGVk
U3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KSkpOwot
ICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0I4
X0VUQzIsICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCAgNjQsIDMs
IEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9CWVRFLCB0cnVlLCAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0
LCBVbmltcGxlbWVudGVkU3VwcG9ydCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0
SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgIENv
bXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyLCAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFVuaW1wbGVtZW50ZWRT
dXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpKSk7Ci0g
ICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywg
R0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsIEdMX1VOU0lHTkVE
X0JZVEUsIHRydWUsICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQs
IFVuaW1wbGVtZW50ZWRTdXBwb3J0KSkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAgICAgICAgQ29t
cHJlc3NlZEZvcm1hdCg0LCA0LCAxMjgsIDQsIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMs
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgVW5pbXBsZW1lbnRlZFN1
cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCkpKTsKLSAg
ICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfRVRDMl9FQUMsICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCA0LCBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgdHJ1ZSwgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwg
VW5pbXBsZW1lbnRlZFN1cHBvcnQpKSk7CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgfFcgfEggfCBCUyB8Q0N8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBTUkdCIHwgU3VwcG9ydGVkICAgfCBS
ZW5kZXJhYmxlICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUjExX0VBQywgICAgICAgICAgICAgICAgICAgICAg
ICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMSwgR0xfQ09NUFJFU1NFRF9SMTFfRUFDLCAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8
Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJ
bnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsICAgICAg
ICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMSwgR0xfQ09NUFJFU1NFRF9T
SUdORURfUjExX0VBQywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBS
ZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFw
Lmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsICAg
ICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwgMiwgR0xfQ09N
UFJFU1NFRF9SRzExX0VBQywgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
IGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7
CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU0lH
TkVEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwg
MiwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBw
b3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBS
RVNTRURfUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQs
IDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBB
bHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2Vk
Rm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAgICAgICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRVM8Mz4sIE5ldmVyU3Vw
cG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsICBD
b21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMiwgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
IE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyLCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9TUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1
aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMs
ICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwgNCwgR0xfQ09NUFJF
U1NFRF9SR0JBOF9FVEMyX0VBQywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7Cisg
ICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0VUQzJfRUFDLCAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwgNCwg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMsICAgICAgICAgIEdMX1VOU0lHTkVE
X0JZVEUsIHRydWUsICBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0
ZWQpKSk7CiAKICAgICAvLyBGcm9tIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLSAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxXIHxIIHwgQlMgfENDfCBGb3JtYXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBTUkdCIHwgU3VwcG9y
dGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFibGUgICAg
fCBGaWx0ZXJhYmxlICAgIHwKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIo
R0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgICAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0
LCAgNjQsIDMsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsICAgIEdMX1VOU0lHTkVE
X0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25E
WFQxPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQs
ICAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCAgNjQsIDQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhULCAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNp
b25zOjp0ZXh0dXJlQ29tcHJlc3Npb25EWFQxPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBv
cnRlZCkpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFs
IGZvcm1hdCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxXIHxIIHwgQlMgfEND
fCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBT
UkdCIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IFJlbmRlcmFibGUgICAgfCBGaWx0ZXJhYmxlICAgIHwKKyAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwgICAgQ29tcHJl
c3NlZEZvcm1hdCg0LCA0LCAgNjQsIDMsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQs
ICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0
dXJlQ29tcHJlc3Npb25EWFQxPiwgICAgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkp
KTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQsICAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCAgNjQsIDQsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBS
ZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25EWFQxPiwgICAgTmV2ZXJT
dXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKIAogICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4
dHVyZV9jb21wcmVzc2lvbl9keHQzCi0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9Q
YWlyKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUsIENvbXByZXNzZWRGb3JtYXQo
NCwgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCBHTF9VTlNJ
R05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNz
aW9uRFhUNT4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
QU5HTEUsIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQzX0FOR0xFLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0
ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uRFhUNT4sICAgIE5ldmVyU3VwcG9ydGVkLCBBbHdh
eXNTdXBwb3J0ZWQpKSk7CiAKICAgICAvLyBGcm9tIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0NQotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwgNCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgR0xfVU5TSUdORURfQllURSwgZmFs
c2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkRYVDU+LCBOZXZl
clN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxG
b3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFLCBDb21wcmVz
c2VkRm9ybWF0KDQsIDQsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdM
RSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1
cmVDb21wcmVzc2lvbkRYVDU+LCAgICBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkp
OwogCisgICAgLy8gRnJvbSBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZQorICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9FVEMxX1JHQjhfT0VTLCAgICAg
ICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfRVRDMV9SR0I4
X09FUywgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVF
eHQ8JkV4dGVuc2lvbnM6OmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmU+LCBOZXZlclN1cHBvcnRl
ZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworCisgICAgLy8gRnJvbSBLSFJfdGV4dHVyZV9jb21wcmVz
c2lvbl9hc3RjX2hkcgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50
ZXJuYWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwg
VyB8IEggfCBCUyB8Q0N8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBUeXBlICAgICAgICAgICAgfCBTUkdCIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgUmVuZGVyYWJsZSAgICAgfCBGaWx0ZXJhYmxlICAgIHwKKyAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwg
ICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoIDQsICA0LCAxMjgsIDQsIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzR4NF9LSFIsICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVx
dWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0
ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdh
eXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIsICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0
KCA1LCAgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSLCAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6
dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lv
bkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5p
bnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDVf
S0hSLCAgICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCggNSwgIDUsIDEyOCwgNCwgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfNXg1X0tIUiwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNl
LCBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIs
ICZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBwb3J0ZWQs
IEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiwgICAgICAgICAgIENvbXByZXNzZWRG
b3JtYXQoIDYsICA1LCAxMjgsIDQsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsICAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNp
b25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXBy
ZXNzaW9uQVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzZ4Nl9LSFIsICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KCA2LCAgNiwgMTI4LCA0LCBHTF9D
T01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ZmFsc2UsIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNU
Q0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBv
cnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSLCAgICAgICAgICAgQ29tcHJl
c3NlZEZvcm1hdCggOCwgIDUsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tI
UiwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0T3JFeHQ8JkV4
dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIsICZFeHRlbnNpb25zOjp0ZXh0dXJl
Q29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsK
KyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg2X0tIUiwgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoIDgsICA2LCAxMjgsIDQs
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsICAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCBmYWxzZSwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Np
b25BU1RDSERSLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUj4sIE5ldmVy
U3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZv
cm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsICAgICAgICAgICBD
b21wcmVzc2VkRm9ybWF0KCA4LCAgOCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184
eDhfS0hSLCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFeHRPckV4
dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVuc2lvbnM6OnRl
eHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVk
KSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ18xMHg1X0tIUiwgICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCgxMCwgIDUsIDEy
OCwgNCwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21w
cmVzc2lvbkFTVENIRFIsICZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwg
TmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIsICAgICAg
ICAgIENvbXByZXNzZWRGb3JtYXQoMTAsICA2LCAxMjgsIDQsIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzEweDZfS0hSLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4
dE9yRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0ZW5zaW9u
czo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBw
b3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDhfS0hSLCAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDEwLCAg
OCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVy
ZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENM
RFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQo
SW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIs
ICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCgxMCwgMTAsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfMTB4MTBfS0hSLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1
aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIsICZFeHRl
bnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5
c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSLCAgICAgICAgIENvbXByZXNzZWRGb3JtYXQo
MTIsIDEwLCAxMjgsIDQsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiwgICAgICAg
ICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjp0
ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9u
QVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEy
X0tIUiwgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDEyLCAxMiwgMTI4LCA0LCBHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ18xMngxMl9LSFIsICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2Us
IFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwg
JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwg
QWx3YXlzU3VwcG9ydGVkKSkpOworCisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9Q
YWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiwgICBDb21wcmVzc2Vk
Rm9ybWF0KCA0LCAgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4
NF9LSFIsICAgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21w
cmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzV4NF9LSFIsICAgQ29tcHJlc3NlZEZvcm1hdCggNSwgIDQsIDEyOCwgNCwgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLCAgIEdMX1VOU0lHTkVEX0JZVEUs
IHRydWUsICBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFT
VENIRFIsICZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBw
b3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0
SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSLCAgIENvbXBy
ZXNzZWRGb3JtYXQoIDUsICA1LCAxMjgsIDQsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg1X0tIUiwgICBHTF9VTlNJR05FRF9CWVRFLCB0cnVlLCAgUmVxdWlyZUV4dE9yRXh0PCZF
eHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0ZW5zaW9uczo6dGV4dHVy
ZUNvbXByZXNzaW9uQVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7
CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUiwgICBDb21wcmVzc2VkRm9ybWF0KCA2LCAgNSwgMTI4LCA0
LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIsICAgR0xfVU5TSUdORURf
QllURSwgdHJ1ZSwgIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNz
aW9uQVNUQ0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZl
clN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxG
b3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsICAg
Q29tcHJlc3NlZEZvcm1hdCggNiwgIDYsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ182eDZfS0hSLCAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRXh0T3JF
eHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIsICZFeHRlbnNpb25zOjp0
ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRl
ZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSLCAgIENvbXByZXNzZWRGb3JtYXQoIDgsICA1LCAx
MjgsIDQsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwgICBHTF9VTlNJ
R05FRF9CWVRFLCB0cnVlLCAgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29t
cHJlc3Npb25BU1RDSERSLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUj4s
IE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tI
UiwgICBDb21wcmVzc2VkRm9ybWF0KCA4LCAgNiwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzh4Nl9LSFIsICAgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVF
eHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVuc2lv
bnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3Vw
cG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsICAgQ29tcHJlc3NlZEZvcm1hdCggOCwg
IDgsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSLCAgIEdM
X1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1
cmVDb21wcmVzc2lvbkFTVENIRFIsICZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RD
TERSPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18x
MHg1X0tIUiwgIENvbXByZXNzZWRGb3JtYXQoMTAsICA1LCAxMjgsIDQsIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsICBHTF9VTlNJR05FRF9CWVRFLCB0cnVlLCAgUmVx
dWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0
ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdh
eXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsICBDb21wcmVzc2VkRm9ybWF0
KDEwLCAgNiwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hS
LCAgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6
dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lv
bkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5p
bnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDhfS0hSLCAgQ29tcHJlc3NlZEZvcm1hdCgxMCwgIDgsIDEyOCwgNCwgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUs
ICBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIs
ICZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBwb3J0ZWQs
IEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsIENvbXByZXNzZWRG
b3JtYXQoMTAsIDEwLCAxMjgsIDQsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
MTBfS0hSLCBHTF9VTlNJR05FRF9CWVRFLCB0cnVlLCAgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNp
b25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSLCAmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXBy
ZXNzaW9uQVNUQ0xEUj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTBfS0hSLCBDb21wcmVzc2VkRm9ybWF0KDEyLCAxMCwgMTI4LCA0LCBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiwgR0xfVU5TSUdORURfQllURSwg
dHJ1ZSwgIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNU
Q0hEUiwgJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBv
cnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJ
bmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiwgQ29tcHJl
c3NlZEZvcm1hdCgxMiwgMTIsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMngxMl9LSFIsIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRXh0T3JFeHQ8JkV4
dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENIRFIsICZFeHRlbnNpb25zOjp0ZXh0dXJl
Q29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsK
KwogICAgIC8vIEZvciBTVEVOQ0lMX0lOREVYOCB3ZSBjaG9zZSBhIG5vcm1hbGl6ZWQgY29tcG9u
ZW50IHR5cGUgZm9yIHRoZSBmb2xsb3dpbmcgcmVhc29uczoKICAgICAvLyAtIE11bHRpc2FtcGxl
ZCBidWZmZXIgYXJlIGRpc2FsbG93ZWQgZm9yIG5vbi1ub3JtYWxpemVkIGludGVnZXIgY29tcG9u
ZW50IHR5cGVzIGFuZCB3ZSB3YW50IHRvIHN1cHBvcnQgaXQgZm9yIFNURU5DSUxfSU5ERVg4CiAg
ICAgLy8gLSBBbGwgb3RoZXIgc3RlbmNpbCBmb3JtYXRzIChhbGwgZGVwdGgtc3RlbmNpbCkgYXJl
IGVpdGhlciBmbG9hdCBvciBub3JtYWxpemVkCkBAIC00ODAsNiArNTY2LDExIEBACiAgICAgLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgIHwgICAgICAg
ICAgICAgICAgICB8RCB8UyB8WCB8IEZvcm1hdCAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8
IENvbXBvbmVudCB0eXBlICAgICAgICB8IFN1cHBvcnRlZCAgIHwgUmVuZGVyYWJsZSAgfCBGaWx0
ZXJhYmxlICAgfAogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9TVEVO
Q0lMX0lOREVYOCwgRGVwdGhTdGVuY2lsRm9ybWF0KDAsIDgsIDAsIEdMX0RFUFRIX1NURU5DSUws
IEdMX1VOU0lHTkVEX0JZVEUsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFUzwyPiwg
UmVxdWlyZUVTPDI+LCBOZXZlclN1cHBvcnRlZCkpKTsKIAorICAgIC8vIEZyb20gR0xfQU5HTEVf
bG9zc3lfZXRjX2RlY29kZQorICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihH
TF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDY0
LCAzLCBHTF9FVEMxX1JHQjhfT0VTLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4
dDwmRXh0ZW5zaW9uczo6bG9zc3lFVENEZWNvZGU+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3Vw
cG9ydGVkKSkpOworCisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKICAgICByZXR1cm4gbWFwOwog
fQogCkBAIC01OTIsOSArNjgzLDIzIEBACiAgICAgcmV0dXJuIHJ4Ojpyb3VuZFVwKHJvd0J5dGVz
LCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGFsaWdubWVudCkpOwogfQogCi1HTHVpbnQgSW50ZXJuYWxG
b3JtYXQ6OmNvbXB1dGVEZXB0aFBpdGNoKEdMZW51bSBmb3JtYXRUeXBlLCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYWxpZ25tZW50LCBHTGludCByb3dMZW5ndGgpIGNvbnN0
CitHTHVpbnQgSW50ZXJuYWxGb3JtYXQ6OmNvbXB1dGVEZXB0aFBpdGNoKEdMZW51bSBmb3JtYXRU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYWxp
Z25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBy
b3dMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGltYWdlSGVpZ2h0KSBjb25zdAogewotICAgIHJldHVybiBjb21wdXRlUm93UGl0Y2goZm9ybWF0
VHlwZSwgd2lkdGgsIGFsaWdubWVudCwgcm93TGVuZ3RoKSAqIGhlaWdodDsKKyAgICBHTHVpbnQg
cm93czsKKyAgICBpZiAoaW1hZ2VIZWlnaHQgPiAwKQorICAgIHsKKyAgICAgICAgcm93cyA9IGlt
YWdlSGVpZ2h0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByb3dzID0gaGVpZ2h0
OworICAgIH0KKyAgICByZXR1cm4gY29tcHV0ZVJvd1BpdGNoKGZvcm1hdFR5cGUsIHdpZHRoLCBh
bGlnbm1lbnQsIHJvd0xlbmd0aCkgKiByb3dzOwogfQogCiBHTHVpbnQgSW50ZXJuYWxGb3JtYXQ6
OmNvbXB1dGVCbG9ja1NpemUoR0xlbnVtIGZvcm1hdFR5cGUsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KSBjb25zdApAQCAtNjE5LDYgKzcyNCwxNSBAQAogICAgIH0KIH0KIAorR0x1aW50
IEludGVybmFsRm9ybWF0Ojpjb21wdXRlU2tpcFBpeGVscyhHTGludCByb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVwdGhQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcEltYWdlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcFJvd3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNraXBQaXhl
bHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNraXBJbWFnZXMgKiBkZXB0aFBpdGNoICsgc2tpcFJv
d3MgKiByb3dQaXRjaCArIHNraXBQaXhlbHMgKiBwaXhlbEJ5dGVzOworfQorCiBHTGVudW0gR2V0
U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSB0eXBlKQog
ewogICAgIGNvbnN0IEludGVybmFsRm9ybWF0JiBmb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKGludGVybmFsRm9ybWF0KTsKQEAgLTY0Nyw0ICs3NjEsNzk2IEBACiAgICAgcmV0dXJu
IGZvcm1hdFNldDsKIH0KIAorQXR0cmlidXRlVHlwZSBHZXRBdHRyaWJ1dGVUeXBlKEdMZW51bSBl
bnVtVmFsdWUpCit7CisgICAgc3dpdGNoIChlbnVtVmFsdWUpCisgICAgeworICAgICAgICBjYXNl
IEdMX0ZMT0FUOgorICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9GTE9BVDsKKyAgICAgICAg
Y2FzZSBHTF9GTE9BVF9WRUMyOgorICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9WRUMyOwor
ICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzM6CisgICAgICAgICAgICByZXR1cm4gQVRUUklCVVRF
X1ZFQzM7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKKyAgICAgICAgICAgIHJldHVybiBB
VFRSSUJVVEVfVkVDNDsKKyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAgICAgICAgICByZXR1cm4g
QVRUUklCVVRFX0lOVDsKKyAgICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKKyAgICAgICAgICAgIHJl
dHVybiBBVFRSSUJVVEVfSVZFQzI7CisgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CisgICAgICAg
ICAgICByZXR1cm4gQVRUUklCVVRFX0lWRUMzOworICAgICAgICBjYXNlIEdMX0lOVF9WRUM0Ogor
ICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9JVkVDNDsKKyAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlQ6CisgICAgICAgICAgICByZXR1cm4gQVRUUklCVVRFX1VJTlQ7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UX1ZFQzI6CisgICAgICAgICAgICByZXR1cm4gQVRUUklCVVRFX1VW
RUMyOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9WRUMzOgorICAgICAgICAgICAgcmV0
dXJuIEFUVFJJQlVURV9VVkVDMzsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDNDoK
KyAgICAgICAgICAgIHJldHVybiBBVFRSSUJVVEVfVVZFQzQ7CisgICAgICAgIGNhc2UgR0xfRkxP
QVRfTUFUMjoKKyAgICAgICAgICAgIHJldHVybiBBVFRSSUJVVEVfTUFUMjsKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9NQVQzOworICAg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgICByZXR1cm4gQVRUUklCVVRFX01B
VDQ7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMngzOgorICAgICAgICAgICAgcmV0dXJuIEFU
VFJJQlVURV9NQVQyeDM7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMng0OgorICAgICAgICAg
ICAgcmV0dXJuIEFUVFJJQlVURV9NQVQyeDQ7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3gy
OgorICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9NQVQzeDI7CisgICAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUM3g0OgorICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9NQVQzeDQ7CisgICAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgyOgorICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9N
QVQ0eDI7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgzOgorICAgICAgICAgICAgcmV0dXJu
IEFUVFJJQlVURV9NQVQ0eDM7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIEFUVFJJQlVURV9GTE9BVDsKKyAgICB9CiB9CisK
K1ZlcnRleEZvcm1hdFR5cGUgR2V0VmVydGV4Rm9ybWF0VHlwZShHTGVudW0gdHlwZSwgR0xib29s
ZWFuIG5vcm1hbGl6ZWQsIEdMdWludCBjb21wb25lbnRzLCBib29sIHB1cmVJbnRlZ2VyKQorewor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAg
ICAgIHN3aXRjaCAoY29tcG9uZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NCWVRFMV9JTlQ7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFZFUlRFWF9GT1JNQVRfU0JZVEUxX05PUk07CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBW
RVJURVhfRk9STUFUX1NCWVRFMTsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBWRVJURVhfRk9STUFUX1NCWVRFMl9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3Jt
YWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU0JZ
VEUyX05PUk07CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NCWVRF
MjsKKyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIGlmIChwdXJl
SW50ZWdlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NC
WVRFM19JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU0JZVEUzX05PUk07CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NCWVRFMzsKKyAgICAgICAgICAgICAg
ICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NCWVRFNF9JTlQ7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFZFUlRFWF9GT1JNQVRfU0JZVEU0X05PUk07CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBWRVJURVhfRk9STUFUX1NCWVRFNDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgc3dpdGNoIChjb21wb25lbnRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUJZVEUxX0lOVDsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VkVSVEVYX0ZPUk1BVF9VQllURTFfTk9STTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZF
UlRFWF9GT1JNQVRfVUJZVEUxOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFZFUlRFWF9GT1JNQVRfVUJZVEUyX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1h
bGl6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9VQllU
RTJfTk9STTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUJZVEUy
OworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJ
bnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUJZ
VEUzX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9VQllURTNfTk9STTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUJZVEUzOworICAgICAgICAgICAgICAg
IGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUJZVEU0X0lOVDsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVkVSVEVYX0ZPUk1BVF9VQllURTRfTk9STTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFZFUlRFWF9GT1JNQVRfVUJZVEU0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICAgICAgc3dpdGNo
IChjb21wb25lbnRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU1NIT1JUMV9JTlQ7CisgICAgICAgICAgICAgICAgICAg
IGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9G
T1JNQVRfU1NIT1JUMV9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZP
Uk1BVF9TU0hPUlQxOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRF
WF9GT1JNQVRfU1NIT1JUMl9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVk
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU1NIT1JUMl9O
T1JNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TU0hPUlQyOwor
ICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRl
Z2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU1NIT1JU
M19JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU1NIT1JUM19OT1JNOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TU0hPUlQzOworICAgICAgICAgICAgICAg
IGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfU1NIT1JUNF9JTlQ7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFZFUlRFWF9GT1JNQVRfU1NIT1JUNF9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVkVSVEVYX0ZPUk1BVF9TU0hPUlQ0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAg
ICAgICAgc3dpdGNoIChjb21wb25lbnRzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVVNIT1JUMV9JTlQ7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFZFUlRFWF9GT1JNQVRfVVNIT1JUMV9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVkVSVEVYX0ZPUk1BVF9VU0hPUlQxOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFZFUlRFWF9GT1JNQVRfVVNIT1JUMl9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlm
IChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JN
QVRfVVNIT1JUMl9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1B
VF9VU0hPUlQyOworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAg
aWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9G
T1JNQVRfVVNIT1JUM19JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVVNIT1JUM19OT1JN
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9VU0hPUlQzOworICAg
ICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2Vy
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVVNIT1JUNF9J
TlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVVNIT1JUNF9OT1JNOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9VU0hPUlQ0OworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAg
ICAgICAgIHN3aXRjaCAoY29tcG9uZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NJTlQxX0lOVDsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVkVSVEVYX0ZPUk1BVF9TSU5UMV9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VkVSVEVYX0ZPUk1BVF9TSU5UMTsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAg
ICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBWRVJURVhfRk9STUFUX1NJTlQyX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1h
bGl6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TSU5U
Ml9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TSU5UMjsK
KyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIGlmIChwdXJlSW50
ZWdlcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NJTlQz
X0lOVDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TSU5UM19OT1JNOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TSU5UMzsKKyAgICAgICAgICAgICAgICBjYXNl
IDQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX1NJTlQ0X0lOVDsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG5vcm1hbGl6ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVS
VEVYX0ZPUk1BVF9TSU5UNF9OT1JNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVY
X0ZPUk1BVF9TSU5UNDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBzd2l0Y2gg
KGNvbXBvbmVudHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAg
ICAgICAgICAgICAgICAgICBpZiAocHVyZUludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9VSU5UMV9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlm
IChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JN
QVRfVUlOVDFfTk9STTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRf
VUlOVDE7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICBpZiAo
cHVyZUludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1B
VF9VSU5UMl9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUlOVDJfTk9STTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUlOVDI7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICBpZiAocHVyZUludGVnZXIpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9VSU5UM19JTlQ7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFZFUlRFWF9GT1JNQVRfVUlOVDNfTk9STTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFZFUlRFWF9GT1JNQVRfVUlOVDM7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAg
ICAgICAgICAgICBpZiAocHVyZUludGVnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVkVSVEVYX0ZPUk1BVF9VSU5UNF9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChub3Jt
YWxpemVkKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUlO
VDRfTk9STTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUlOVDQ7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudHMpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gVkVSVEVYX0ZPUk1BVF9GTE9BVDE7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9GTE9BVDI7CisgICAgICAgICAgICAg
ICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9GTE9B
VDM7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VkVSVEVYX0ZPUk1BVF9GTE9BVDQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVDoKKyAgICAgICAgICAgIHN3
aXRjaCAoY29tcG9uZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX0hBTEYxOworICAgICAg
ICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JN
QVRfSEFMRjI7CisgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gVkVSVEVYX0ZPUk1BVF9IQUxGMzsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9STUFUX0hBTEY0OworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0ZJWEVE
OgorICAgICAgICAgICAgc3dpdGNoIChjb21wb25lbnRzKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JN
QVRfRklYRUQxOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFZFUlRFWF9GT1JNQVRfRklYRUQyOworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfRklYRUQzOworICAgICAgICAg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRf
RklYRUQ0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgICAgIGlmIChwdXJl
SW50ZWdlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gVkVSVEVYX0ZPUk1BVF9TSU5UMjEwX0lO
VDsKKyAgICAgICAgICAgIGlmIChub3JtYWxpemVkKQorICAgICAgICAgICAgICAgIHJldHVybiBW
RVJURVhfRk9STUFUX1NJTlQyMTBfTk9STTsKKyAgICAgICAgICAgIHJldHVybiBWRVJURVhfRk9S
TUFUX1NJTlQyMTA7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVW
OgorICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgICAgIHJldHVybiBW
RVJURVhfRk9STUFUX1VJTlQyMTBfSU5UOworICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUlOVDIxMF9OT1JNOworICAgICAg
ICAgICAgcmV0dXJuIFZFUlRFWF9GT1JNQVRfVUlOVDIxMDsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIFZFUlRFWF9GT1JNQVRfVUJZVEUxOworfQorCitWZXJ0ZXhGb3JtYXRUeXBlIEdldFZl
cnRleEZvcm1hdFR5cGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIpCit7CisgICAgcmV0
dXJuIEdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliLnR5cGUsIGF0dHJpYi5ub3JtYWxpemVkLCBh
dHRyaWIuc2l6ZSwgYXR0cmliLnB1cmVJbnRlZ2VyKTsKK30KKworVmVydGV4Rm9ybWF0VHlwZSBH
ZXRWZXJ0ZXhGb3JtYXRUeXBlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGVudW0g
Y3VycmVudFZhbHVlVHlwZSkKK3sKKyAgICBpZiAoIWF0dHJpYi5lbmFibGVkKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIEdldFZlcnRleEZvcm1hdFR5cGUoY3VycmVudFZhbHVlVHlwZSwgR0xfRkFM
U0UsIDQsIChjdXJyZW50VmFsdWVUeXBlICE9IEdMX0ZMT0FUKSk7CisgICAgfQorICAgIHJldHVy
biBHZXRWZXJ0ZXhGb3JtYXRUeXBlKGF0dHJpYik7Cit9CisKK2NvbnN0IFZlcnRleEZvcm1hdCAm
R2V0VmVydGV4Rm9ybWF0RnJvbVR5cGUoVmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBl
KQoreworICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9TQllURTE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0JZVEUsIEdMX0ZBTFNFLCAxLCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZP
Uk1BVF9TQllURTFfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBmb3JtYXQoR0xfQllURSwgR0xfVFJVRSwgMSwgZmFsc2UpOworICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRf
U0JZVEUyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0
IGZvcm1hdChHTF9CWVRFLCBHTF9GQUxTRSwgMiwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZVEUyX05P
Uk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9y
bWF0KEdMX0JZVEUsIEdMX1RSVUUsIDIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3Jt
YXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFMzoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfQllU
RSwgR0xfRkFMU0UsIDMsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFM19OT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9CWVRFLCBH
TF9UUlVFLCAzLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9
CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0JZVEUsIEdMX0ZBTFNFLCA0
LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAg
IGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfQllURSwgR0xfVFJVRSwgNCwgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfVUJZVEUxOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMSwgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfVUJZVEUxX05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUsIDEs
IGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VCWVRFMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UsIDIs
IGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VCWVRFMl9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9VTlNJR05FRF9CWVRFLCBHTF9UUlVF
LCAyLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1VOU0lHTkVEX0JZVEUsIEdMX0ZBTFNF
LCAzLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTNfTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfQllURSwgR0xf
VFJVRSwgMywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEU0OgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9VTlNJR05FRF9CWVRFLCBHTF9G
QUxTRSwgNCwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEU0X05PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1VOU0lHTkVEX0JZVEUs
IEdMX1RSVUUsIDQsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDE6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1NIT1JULCBHTF9GQUxT
RSwgMSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUMV9OT1JNOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9TSE9SVCwgR0xfVFJVRSwg
MSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfU0hPUlQsIEdMX0ZBTFNFLCAyLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9TU0hPUlQyX05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1NIT1JULCBHTF9UUlVFLCAyLCBmYWxzZSk7
CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9TU0hPUlQzOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VmVydGV4Rm9ybWF0IGZvcm1hdChHTF9TSE9SVCwgR0xfRkFMU0UsIDMsIGZhbHNlKTsKKyAgICAg
ICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9S
TUFUX1NTSE9SVDNfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBmb3JtYXQoR0xfU0hPUlQsIEdMX1RSVUUsIDMsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X1NTSE9SVDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3Jt
YXQgZm9ybWF0KEdMX1NIT1JULCBHTF9GQUxTRSwgNCwgZmFsc2UpOworICAgICAgICAgICAgcmV0
dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JU
NF9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0
IGZvcm1hdChHTF9TSE9SVCwgR0xfVFJVRSwgNCwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUMToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQo
R0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAxLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQx
X05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
Zm9ybWF0KEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFLCAxLCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9V
U0hPUlQyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0
IGZvcm1hdChHTF9VTlNJR05FRF9TSE9SVCwgR0xfRkFMU0UsIDIsIGZhbHNlKTsKKyAgICAgICAg
ICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X1VTSE9SVDJfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfU0hPUlQsIEdMX1RSVUUsIDIsIGZhbHNlKTsKKyAg
ICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhf
Rk9STUFUX1VTSE9SVDM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgZm9ybWF0KEdMX1VOU0lHTkVEX1NIT1JULCBHTF9GQUxTRSwgMywgZmFsc2UpOwor
ICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRF
WF9GT1JNQVRfVVNIT1JUM19OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9VTlNJR05FRF9TSE9SVCwgR0xfVFJVRSwgMywgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfVVNIT1JUNDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCA0LCBm
YWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNh
c2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQ0X05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVF
LCA0LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UMToKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfSU5ULCBHTF9GQUxTRSwgMSwgZmFsc2Up
OworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZF
UlRFWF9GT1JNQVRfU0lOVDFfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfSU5ULCBHTF9UUlVFLCAxLCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZP
Uk1BVF9TSU5UMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZv
cm1hdCBmb3JtYXQoR0xfSU5ULCBHTF9GQUxTRSwgMiwgZmFsc2UpOworICAgICAgICAgICAgcmV0
dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDJf
Tk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBm
b3JtYXQoR0xfSU5ULCBHTF9UUlVFLCAyLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9y
bWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UMzoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfSU5U
LCBHTF9GQUxTRSwgMywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDNfTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfSU5ULCBHTF9U
UlVFLCAzLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UNDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfSU5ULCBHTF9GQUxTRSwgNCwgZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfU0lOVDRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfSU5ULCBHTF9UUlVFLCA0LCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VSU5UMToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9GQUxTRSwgMSwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfVUlOVDFfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9UUlVFLCAxLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VSU5UMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9GQUxTRSwgMiwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfVUlOVDJfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9UUlVFLCAyLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VSU5UMzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9GQUxTRSwgMywgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfVUlOVDNfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9UUlVFLCAzLCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VSU5UNDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9GQUxTRSwgNCwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfVUlOVDRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9UUlVFLCA0LCBmYWxzZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9TQllURTFfSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VmVydGV4Rm9ybWF0IGZvcm1hdChHTF9CWVRFLCBHTF9GQUxTRSwgMSwgdHJ1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1B
VF9TQllURTJfSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4
Rm9ybWF0IGZvcm1hdChHTF9CWVRFLCBHTF9GQUxTRSwgMiwgdHJ1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllU
RTNfSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0
IGZvcm1hdChHTF9CWVRFLCBHTF9GQUxTRSwgMywgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4g
Zm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTRfSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1h
dChHTF9CWVRFLCBHTF9GQUxTRSwgNCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTFfSU5UOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9V
TlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9y
bWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTJfSU5UOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChH
TF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMiwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4g
Zm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTNfSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1h
dChHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMywgdHJ1ZSk7CisgICAgICAgICAgICByZXR1
cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTRf
SU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZv
cm1hdChHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgNCwgdHJ1ZSk7CisgICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hP
UlQxX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1h
dCBmb3JtYXQoR0xfU0hPUlQsIEdMX0ZBTFNFLCAxLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVy
biBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDJf
SU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZv
cm1hdChHTF9TSE9SVCwgR0xfRkFMU0UsIDIsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGZv
cm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUM19JTlQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0
KEdMX1NIT1JULCBHTF9GQUxTRSwgMywgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hPUlQ0X0lOVDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xf
U0hPUlQsIEdMX0ZBTFNFLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VTSE9SVDFfSU5UOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9VTlNJ
R05FRF9TSE9SVCwgR0xfRkFMU0UsIDEsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1h
dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUMl9JTlQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdM
X1VOU0lHTkVEX1NIT1JULCBHTF9GQUxTRSwgMiwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4g
Zm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQzX0lO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3Jt
YXQoR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAzLCB0cnVlKTsKKyAgICAgICAgICAgIHJl
dHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VTSE9S
VDRfSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0
IGZvcm1hdChHTF9VTlNJR05FRF9TSE9SVCwgR0xfRkFMU0UsIDQsIHRydWUpOworICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRf
U0lOVDFfSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9y
bWF0IGZvcm1hdChHTF9JTlQsIEdMX0ZBTFNFLCAxLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVy
biBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJTlQyX0lO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3Jt
YXQoR0xfSU5ULCBHTF9GQUxTRSwgMiwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UM19JTlQ6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0lO
VCwgR0xfRkFMU0UsIDMsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDRfSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9JTlQsIEdMX0ZB
TFNFLCA0LCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQxX0lOVDoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBHTF9G
QUxTRSwgMSwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMl9JTlQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX1VOU0lHTkVEX0lOVCwgR0xf
RkFMU0UsIDIsIHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUlOVDNfSU5UOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9VTlNJR05FRF9JTlQsIEdM
X0ZBTFNFLCAzLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQ0X0lOVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5ULCBH
TF9GQUxTRSwgNCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9
CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9GSVhFRDE6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0ZJWEVELCBHTF9GQUxTRSwg
MSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFZFUlRFWF9GT1JNQVRfRklYRUQyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9GSVhFRCwgR0xfRkFMU0UsIDIsIGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBW
RVJURVhfRk9STUFUX0ZJWEVEMzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfRklYRUQsIEdMX0ZBTFNFLCAzLCBmYWxzZSk7CisgICAg
ICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZP
Uk1BVF9GSVhFRDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgZm9ybWF0KEdMX0ZJWEVELCBHTF9GQUxTRSwgNCwgZmFsc2UpOworICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfSEFM
RjE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9y
bWF0KEdMX0hBTEZfRkxPQVQsIEdMX0ZBTFNFLCAxLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1
cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9IQUxGMjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQo
R0xfSEFMRl9GTE9BVCwgR0xfRkFMU0UsIDIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBm
b3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0hBTEYzOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9I
QUxGX0ZMT0FULCBHTF9GQUxTRSwgMywgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1h
dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfSEFMRjQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0hBTEZf
RkxPQVQsIEdMX0ZBTFNFLCA0LCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0Owor
ICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9GTE9BVDE6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0ZMT0FULCBH
TF9GQUxTRSwgMSwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfRkxPQVQyOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9GTE9BVCwgR0xfRkFMU0Us
IDIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBWRVJURVhfRk9STUFUX0ZMT0FUMzoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfRkxPQVQsIEdMX0ZBTFNFLCAzLCBmYWxz
ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9GTE9BVDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBWZXJ0ZXhGb3JtYXQgZm9ybWF0KEdMX0ZMT0FULCBHTF9GQUxTRSwgNCwgZmFsc2UpOworICAg
ICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfU0lOVDIxMDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBmb3JtYXQoR0xfSU5UXzJfMTBfMTBfMTBfUkVWLCBHTF9GQUxTRSwgNCwgZmFsc2Up
OworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFZF
UlRFWF9GT1JNQVRfVUlOVDIxMDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCBHTF9G
QUxTRSwgNCwgZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDIxMF9OT1JNOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGZvcm1hdChHTF9JTlRfMl8xMF8xMF8x
MF9SRVYsIEdMX1RSVUUsIDQsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQ7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQyMTBfTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5T
SUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCBHTF9UUlVFLCA0LCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9T
SU5UMjEwX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZv
cm1hdCBmb3JtYXQoR0xfSU5UXzJfMTBfMTBfMTBfUkVWLCBHTF9GQUxTRSwgNCwgdHJ1ZSk7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VSU5UMjEwX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFZlcnRleEZvcm1hdCBmb3JtYXQoR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCBHTF9G
QUxTRSwgNCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0OworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgZm9ybWF0KEdMX05PTkUsIEdMX0ZBTFNFLCAwLCBmYWxzZSk7CisgICAgICAgICAg
ICByZXR1cm4gZm9ybWF0OworICAgICAgICB9CisgICAgfQorfQorCitWZXJ0ZXhGb3JtYXQ6OlZl
cnRleEZvcm1hdChHTGVudW0gdHlwZUluLCBHTGJvb2xlYW4gbm9ybWFsaXplZEluLCBHTHVpbnQg
Y29tcG9uZW50c0luLCBib29sIHB1cmVJbnRlZ2VySW4pCisgICAgOiB0eXBlKHR5cGVJbiksCisg
ICAgICBub3JtYWxpemVkKG5vcm1hbGl6ZWRJbiksCisgICAgICBjb21wb25lbnRzKGNvbXBvbmVu
dHNJbiksCisgICAgICBwdXJlSW50ZWdlcihwdXJlSW50ZWdlckluKQoreworICAgIC8vIGZsb2F0
IC0+ICFub3JtYWxpemVkCisgICAgQVNTRVJUKCEodHlwZSA9PSBHTF9GTE9BVCB8fCB0eXBlID09
IEdMX0hBTEZfRkxPQVQgfHwgdHlwZSA9PSBHTF9GSVhFRCkgfHwgbm9ybWFsaXplZCA9PSBHTF9G
QUxTRSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9mb3JtYXR1dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjYsOCArNjYsMTggQEAKICAgICBTdXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0
OwogCiAgICAgR0x1aW50IGNvbXB1dGVSb3dQaXRjaChHTGVudW0gZm9ybWF0VHlwZSwgR0xzaXpl
aSB3aWR0aCwgR0xpbnQgYWxpZ25tZW50LCBHTGludCByb3dMZW5ndGgpIGNvbnN0OwotICAgIEdM
dWludCBjb21wdXRlRGVwdGhQaXRjaChHTGVudW0gZm9ybWF0VHlwZSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMaW50IGFsaWdubWVudCwgR0xpbnQgcm93TGVuZ3RoKSBjb25zdDsK
KyAgICBHTHVpbnQgY29tcHV0ZURlcHRoUGl0Y2goR0xlbnVtIGZvcm1hdFR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBhbGlnbm1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJvd0xl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW1hZ2VIZWlnaHQpIGNv
bnN0OwogICAgIEdMdWludCBjb21wdXRlQmxvY2tTaXplKEdMZW51bSBmb3JtYXRUeXBlLCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgY29uc3Q7CisgICAgR0x1aW50IGNvbXB1dGVTa2lw
UGl4ZWxzKEdMaW50IHJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBkZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBza2lwSW1h
Z2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBza2lwUm93cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcFBpeGVscykgY29uc3Q7CiB9OwogY29u
c3QgSW50ZXJuYWxGb3JtYXQgJkdldEludGVybmFsRm9ybWF0SW5mbyhHTGVudW0gaW50ZXJuYWxG
b3JtYXQpOwogCkBAIC03Niw2ICs4NiwxNDkgQEAKIHR5cGVkZWYgc3RkOjpzZXQ8R0xlbnVtPiBG
b3JtYXRTZXQ7CiBjb25zdCBGb3JtYXRTZXQgJkdldEFsbFNpemVkSW50ZXJuYWxGb3JtYXRzKCk7
CiAKLX0KKy8vIEZyb20gdGhlIEVTU0wgMy4wMC40IHNwZWM6CisvLyBWZXJ0ZXggc2hhZGVyIGlu
cHV0cyBjYW4gb25seSBiZSBmbG9hdCwgZmxvYXRpbmctcG9pbnQgdmVjdG9ycywgbWF0cmljZXMs
IHNpZ25lZCBhbmQgdW5zaWduZWQKKy8vIGludGVnZXJzIGFuZCBpbnRlZ2VyIHZlY3RvcnMuIFZl
cnRleCBzaGFkZXIgaW5wdXRzIGNhbm5vdCBiZSBhcnJheXMgb3Igc3RydWN0dXJlcy4KIAorZW51
bSBBdHRyaWJ1dGVUeXBlCit7CisgICAgQVRUUklCVVRFX0ZMT0FULAorICAgIEFUVFJJQlVURV9W
RUMyLAorICAgIEFUVFJJQlVURV9WRUMzLAorICAgIEFUVFJJQlVURV9WRUM0LAorICAgIEFUVFJJ
QlVURV9JTlQsCisgICAgQVRUUklCVVRFX0lWRUMyLAorICAgIEFUVFJJQlVURV9JVkVDMywKKyAg
ICBBVFRSSUJVVEVfSVZFQzQsCisgICAgQVRUUklCVVRFX1VJTlQsCisgICAgQVRUUklCVVRFX1VW
RUMyLAorICAgIEFUVFJJQlVURV9VVkVDMywKKyAgICBBVFRSSUJVVEVfVVZFQzQsCisgICAgQVRU
UklCVVRFX01BVDIsCisgICAgQVRUUklCVVRFX01BVDMsCisgICAgQVRUUklCVVRFX01BVDQsCisg
ICAgQVRUUklCVVRFX01BVDJ4MywKKyAgICBBVFRSSUJVVEVfTUFUMng0LAorICAgIEFUVFJJQlVU
RV9NQVQzeDIsCisgICAgQVRUUklCVVRFX01BVDN4NCwKKyAgICBBVFRSSUJVVEVfTUFUNHgyLAor
ICAgIEFUVFJJQlVURV9NQVQ0eDMsCit9OworCitBdHRyaWJ1dGVUeXBlIEdldEF0dHJpYnV0ZVR5
cGUoR0xlbnVtIGVudW1WYWx1ZSk7CisKK2VudW0gVmVydGV4Rm9ybWF0VHlwZQoreworICAgIFZF
UlRFWF9GT1JNQVRfSU5WQUxJRCwKKyAgICBWRVJURVhfRk9STUFUX1NCWVRFMSwKKyAgICBWRVJU
RVhfRk9STUFUX1NCWVRFMV9OT1JNLAorICAgIFZFUlRFWF9GT1JNQVRfU0JZVEUyLAorICAgIFZF
UlRFWF9GT1JNQVRfU0JZVEUyX05PUk0sCisgICAgVkVSVEVYX0ZPUk1BVF9TQllURTMsCisgICAg
VkVSVEVYX0ZPUk1BVF9TQllURTNfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1NCWVRFNCwKKyAg
ICBWRVJURVhfRk9STUFUX1NCWVRFNF9OT1JNLAorICAgIFZFUlRFWF9GT1JNQVRfVUJZVEUxLAor
ICAgIFZFUlRFWF9GT1JNQVRfVUJZVEUxX05PUk0sCisgICAgVkVSVEVYX0ZPUk1BVF9VQllURTIs
CisgICAgVkVSVEVYX0ZPUk1BVF9VQllURTJfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1VCWVRF
MywKKyAgICBWRVJURVhfRk9STUFUX1VCWVRFM19OT1JNLAorICAgIFZFUlRFWF9GT1JNQVRfVUJZ
VEU0LAorICAgIFZFUlRFWF9GT1JNQVRfVUJZVEU0X05PUk0sCisgICAgVkVSVEVYX0ZPUk1BVF9T
U0hPUlQxLAorICAgIFZFUlRFWF9GT1JNQVRfU1NIT1JUMV9OT1JNLAorICAgIFZFUlRFWF9GT1JN
QVRfU1NIT1JUMiwKKyAgICBWRVJURVhfRk9STUFUX1NTSE9SVDJfTk9STSwKKyAgICBWRVJURVhf
Rk9STUFUX1NTSE9SVDMsCisgICAgVkVSVEVYX0ZPUk1BVF9TU0hPUlQzX05PUk0sCisgICAgVkVS
VEVYX0ZPUk1BVF9TU0hPUlQ0LAorICAgIFZFUlRFWF9GT1JNQVRfU1NIT1JUNF9OT1JNLAorICAg
IFZFUlRFWF9GT1JNQVRfVVNIT1JUMSwKKyAgICBWRVJURVhfRk9STUFUX1VTSE9SVDFfTk9STSwK
KyAgICBWRVJURVhfRk9STUFUX1VTSE9SVDIsCisgICAgVkVSVEVYX0ZPUk1BVF9VU0hPUlQyX05P
Uk0sCisgICAgVkVSVEVYX0ZPUk1BVF9VU0hPUlQzLAorICAgIFZFUlRFWF9GT1JNQVRfVVNIT1JU
M19OT1JNLAorICAgIFZFUlRFWF9GT1JNQVRfVVNIT1JUNCwKKyAgICBWRVJURVhfRk9STUFUX1VT
SE9SVDRfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQxLAorICAgIFZFUlRFWF9GT1JNQVRf
U0lOVDFfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQyLAorICAgIFZFUlRFWF9GT1JNQVRf
U0lOVDJfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQzLAorICAgIFZFUlRFWF9GT1JNQVRf
U0lOVDNfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQ0LAorICAgIFZFUlRFWF9GT1JNQVRf
U0lOVDRfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQxLAorICAgIFZFUlRFWF9GT1JNQVRf
VUlOVDFfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQyLAorICAgIFZFUlRFWF9GT1JNQVRf
VUlOVDJfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQzLAorICAgIFZFUlRFWF9GT1JNQVRf
VUlOVDNfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQ0LAorICAgIFZFUlRFWF9GT1JNQVRf
VUlOVDRfTk9STSwKKyAgICBWRVJURVhfRk9STUFUX1NCWVRFMV9JTlQsCisgICAgVkVSVEVYX0ZP
Uk1BVF9TQllURTJfSU5ULAorICAgIFZFUlRFWF9GT1JNQVRfU0JZVEUzX0lOVCwKKyAgICBWRVJU
RVhfRk9STUFUX1NCWVRFNF9JTlQsCisgICAgVkVSVEVYX0ZPUk1BVF9VQllURTFfSU5ULAorICAg
IFZFUlRFWF9GT1JNQVRfVUJZVEUyX0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1VCWVRFM19JTlQs
CisgICAgVkVSVEVYX0ZPUk1BVF9VQllURTRfSU5ULAorICAgIFZFUlRFWF9GT1JNQVRfU1NIT1JU
MV9JTlQsCisgICAgVkVSVEVYX0ZPUk1BVF9TU0hPUlQyX0lOVCwKKyAgICBWRVJURVhfRk9STUFU
X1NTSE9SVDNfSU5ULAorICAgIFZFUlRFWF9GT1JNQVRfU1NIT1JUNF9JTlQsCisgICAgVkVSVEVY
X0ZPUk1BVF9VU0hPUlQxX0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1VTSE9SVDJfSU5ULAorICAg
IFZFUlRFWF9GT1JNQVRfVVNIT1JUM19JTlQsCisgICAgVkVSVEVYX0ZPUk1BVF9VU0hPUlQ0X0lO
VCwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQxX0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQy
X0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1NJTlQzX0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1NJ
TlQ0X0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQxX0lOVCwKKyAgICBWRVJURVhfRk9STUFU
X1VJTlQyX0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQzX0lOVCwKKyAgICBWRVJURVhfRk9S
TUFUX1VJTlQ0X0lOVCwKKyAgICBWRVJURVhfRk9STUFUX0ZJWEVEMSwKKyAgICBWRVJURVhfRk9S
TUFUX0ZJWEVEMiwKKyAgICBWRVJURVhfRk9STUFUX0ZJWEVEMywKKyAgICBWRVJURVhfRk9STUFU
X0ZJWEVENCwKKyAgICBWRVJURVhfRk9STUFUX0hBTEYxLAorICAgIFZFUlRFWF9GT1JNQVRfSEFM
RjIsCisgICAgVkVSVEVYX0ZPUk1BVF9IQUxGMywKKyAgICBWRVJURVhfRk9STUFUX0hBTEY0LAor
ICAgIFZFUlRFWF9GT1JNQVRfRkxPQVQxLAorICAgIFZFUlRFWF9GT1JNQVRfRkxPQVQyLAorICAg
IFZFUlRFWF9GT1JNQVRfRkxPQVQzLAorICAgIFZFUlRFWF9GT1JNQVRfRkxPQVQ0LAorICAgIFZF
UlRFWF9GT1JNQVRfU0lOVDIxMCwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQyMTAsCisgICAgVkVS
VEVYX0ZPUk1BVF9TSU5UMjEwX05PUk0sCisgICAgVkVSVEVYX0ZPUk1BVF9VSU5UMjEwX05PUk0s
CisgICAgVkVSVEVYX0ZPUk1BVF9TSU5UMjEwX0lOVCwKKyAgICBWRVJURVhfRk9STUFUX1VJTlQy
MTBfSU5ULAorfTsKKwordHlwZWRlZiBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4Rm9ybWF0VHlwZT4g
SW5wdXRMYXlvdXQ7CisKK3N0cnVjdCBWZXJ0ZXhGb3JtYXQgOiBhbmdsZTo6Tm9uQ29weWFibGUK
K3sKKyAgICBWZXJ0ZXhGb3JtYXQoR0xlbnVtIHR5cGVJbiwgR0xib29sZWFuIG5vcm1hbGl6ZWRJ
biwgR0x1aW50IGNvbXBvbmVudHNJbiwgYm9vbCBwdXJlSW50ZWdlckluKTsKKworICAgIEdMZW51
bSB0eXBlOworICAgIEdMYm9vbGVhbiBub3JtYWxpemVkOworICAgIEdMdWludCBjb21wb25lbnRz
OworICAgIGJvb2wgcHVyZUludGVnZXI7Cit9OworCitWZXJ0ZXhGb3JtYXRUeXBlIEdldFZlcnRl
eEZvcm1hdFR5cGUoR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHVpbnQgY29t
cG9uZW50cywgYm9vbCBwdXJlSW50ZWdlcik7CitWZXJ0ZXhGb3JtYXRUeXBlIEdldFZlcnRleEZv
cm1hdFR5cGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIpOworVmVydGV4Rm9ybWF0VHlw
ZSBHZXRWZXJ0ZXhGb3JtYXRUeXBlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGVu
dW0gY3VycmVudFZhbHVlVHlwZSk7Citjb25zdCBWZXJ0ZXhGb3JtYXQgJkdldFZlcnRleEZvcm1h
dEZyb21UeXBlKFZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSk7CisKK30gIC8vIG5h
bWVzcGFjZSBnbAorCiAjZW5kaWYgLy8gTElCQU5HTEVfRk9STUFUVVRJTFNfSF8KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9oaXN0b2dyYW1fbWFjcm9zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2hpc3RvZ3Jh
bV9tYWNyb3MuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL2hpc3RvZ3JhbV9tYWNyb3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsOSBAQAogI2RlZmluZSBBTkdMRV9ISVNUT0dSQU1fUEVSQ0VOVEFHRShuYW1lLCB1bmRlcl9v
bmVfaHVuZHJlZCkgXAogICAgIEFOR0xFX0hJU1RPR1JBTV9FTlVNRVJBVElPTihuYW1lLCB1bmRl
cl9vbmVfaHVuZHJlZCwgMTAxKQogCisjZGVmaW5lIEFOR0xFX0hJU1RPR1JBTV9CT09MRUFOKG5h
bWUsIHNhbXBsZSkgXAorICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmhpc3RvZ3JhbUJvb2xl
YW4obmFtZSwgc2FtcGxlKQorCiAjZGVmaW5lIEFOR0xFX0hJU1RPR1JBTV9FTlVNRVJBVElPTihu
YW1lLCBzYW1wbGUsIGJvdW5kYXJ5X3ZhbHVlKSBcCiAgICAgQU5HTEVQbGF0Zm9ybUN1cnJlbnQo
KS0+aGlzdG9ncmFtRW51bWVyYXRpb24obmFtZSwgc2FtcGxlLCBib3VuZGFyeV92YWx1ZSkKIApA
QCAtNTcsNCArNjAsNDggQEAKICNkZWZpbmUgQU5HTEVfSElTVE9HUkFNX01FTU9SWV9NQihuYW1l
LCBzYW1wbGUpIEFOR0xFX0hJU1RPR1JBTV9DVVNUT01fQ09VTlRTKCBcCiAgICAgbmFtZSwgc2Ft
cGxlLCAxLCAxMDAwLCA1MCkKIAorI2RlZmluZSBBTkdMRV9ISVNUT0dSQU1fU1BBUlNFX1NMT1dM
WShuYW1lLCBzYW1wbGUpIFwKKyAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5oaXN0b2dyYW1T
cGFyc2UobmFtZSwgc2FtcGxlKQorCisvLyBTY29wZWQgY2xhc3Mgd2hpY2ggbG9ncyBpdHMgdGlt
ZSBvbiB0aGlzIGVhcnRoIGFzIGEgVU1BIHN0YXRpc3RpYy4gVGhpcyBpcworLy8gcmVjb21tZW5k
ZWQgZm9yIHdoZW4geW91IHdhbnQgYSBoaXN0b2dyYW0gd2hpY2ggbWVhc3VyZXMgdGhlIHRpbWUg
aXQgdGFrZXMKKy8vIGZvciBhIG1ldGhvZCB0byBleGVjdXRlLiBUaGlzIG1lYXN1cmVzIHVwIHRv
IDEwIHNlY29uZHMuCisjZGVmaW5lIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVIobmFtZSkg
XAorICAgIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVJfRVhQQU5ERVIobmFtZSwgZmFsc2Us
IF9fQ09VTlRFUl9fKQorCisvLyBTaW1pbGFyIHNjb3BlZCBoaXN0b2dyYW0gdGltZXIsIGJ1dCB0
aGlzIHVzZXMgQU5HTEVfSElTVE9HUkFNX0xPTkdfVElNRVNfMTAwLAorLy8gd2hpY2ggbWVhc3Vy
ZXMgdXAgdG8gYW4gaG91ciwgYW5kIHVzZXMgMTAwIGJ1Y2tldHMuIFRoaXMgaXMgbW9yZSBleHBl
bnNpdmUKKy8vIHRvIHN0b3JlLCBzbyBvbmx5IHVzZSBpZiB0aGlzIG9mdGVuIHRha2VzID4xMCBz
ZWNvbmRzLgorI2RlZmluZSBTQ09QRURfQU5HTEVfSElTVE9HUkFNX0xPTkdfVElNRVIobmFtZSkg
XAorICAgIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVJfRVhQQU5ERVIobmFtZSwgdHJ1ZSwg
X19DT1VOVEVSX18pCisKKy8vIFRoaXMgbmVzdGVkIG1hY3JvIGlzIG5lY2Vzc2FyeSB0byBleHBh
bmQgX19DT1VOVEVSX18gdG8gYW4gYWN0dWFsIHZhbHVlLgorI2RlZmluZSBTQ09QRURfQU5HTEVf
SElTVE9HUkFNX1RJTUVSX0VYUEFOREVSKG5hbWUsIGlzX2xvbmcsIGtleSkgXAorICAgIFNDT1BF
RF9BTkdMRV9ISVNUT0dSQU1fVElNRVJfVU5JUVVFKG5hbWUsIGlzX2xvbmcsIGtleSkKKworI2Rl
ZmluZSBTQ09QRURfQU5HTEVfSElTVE9HUkFNX1RJTUVSX1VOSVFVRShuYW1lLCBpc19sb25nLCBr
ZXkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNsYXNzIFNjb3BlZEhpc3Rv
Z3JhbVRpbWVyIyNrZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgcHVibGljOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTY29wZWRIaXN0
b2dyYW1UaW1lciMja2V5KCkgOiBjb25zdHJ1Y3RlZF8oQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+
Y3VycmVudFRpbWUoKSkge30gXAorICAgICAgICB+U2NvcGVkSGlzdG9ncmFtVGltZXIjI2tleSgp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYg
KGNvbnN0cnVjdGVkXyA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHJldHVybjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgZG91YmxlIGVsYXBzZWQgPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgp
LT5jdXJyZW50VGltZSgpIC0gY29uc3RydWN0ZWRfOyAgICAgICAgICAgXAorICAgICAgICAgICAg
aW50IGVsYXBzZWRNUyA9IHN0YXRpY19jYXN0PGludD4oZWxhcHNlZCAqIDEwMDAuMCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKGlzX2xvbmcpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgIEFOR0xFX0hJU1RPR1JBTV9MT05HX1RJTUVTXzEwMChuYW1lLCBlbGFwc2VkTVMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIEFOR0xFX0hJ
U1RPR1JBTV9USU1FUyhuYW1lLCBlbGFwc2VkTVMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBkb3VibGUgY29uc3RydWN0ZWRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gc2NvcGVkX2hpc3Rv
Z3JhbV90aW1lcl8jI2tleQorCiAjZW5kaWYgIC8vIEJBU0VfTUVUUklDU19ISVNUT0dSQU1fTUFD
Uk9TX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnlj
b252ZXJzaW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYsMzcgKzYsNDQgQEAKIAogLy8gcXVlcnljb252ZXJzaW9ucy5jcHA6
IEltcGxlbWVudGF0aW9uIG9mIHN0YXRlIHF1ZXJ5IGNhc3QgY29udmVyc2lvbnMKIAorI2luY2x1
ZGUgImxpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaCIKKworI2luY2x1ZGUgPHZlY3Rvcj4KKwog
I2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVz
LmgiCiAKIG5hbWVzcGFjZSBnbAogewogCi0vLyBIZWxwZXIgY2xhc3MgZm9yIGNvbnZlcnRpbmcg
YSBHTCB0eXBlIHRvIGEgR0xlbnVtOgotLy8gV2UgY2FuJ3QgdXNlIENhc3RTdGF0ZVZhbHVlRW51
bSBnZW5lcmFsbHksIGJlY2F1c2Ugb2YgR0xib29sZWFuICsgR0x1Ynl0ZSBvdmVybGFwLgotLy8g
V2UgcmVzdHJpY3Qgb3VyIHVzZSB0byBDYXN0U3RhdGVWYWx1ZSwgd2hlcmUgaXQgZWxpbWluYXRl
cyBkdXBsaWNhdGUgcGFyYW1ldGVycy4KK25hbWVzcGFjZQorewogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgR0xUeXBlPgotc3RydWN0IENhc3RTdGF0ZVZhbHVlRW51bSB7IHN0YXRpYyBHTGVudW0gbUVu
dW1Gb3JUeXBlOyB9OworR0xpbnQ2NCBFeHBhbmRGbG9hdFRvSW50ZWdlcihHTGZsb2F0IHZhbHVl
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludDY0Pigoc3RhdGljX2Nhc3Q8ZG91Ymxl
PigweEZGRkZGRkZGVUxMKSAqIHZhbHVlIC0gMS4wKSAvIDIuMCk7Cit9CiAKLXRlbXBsYXRlIDw+
IEdMZW51bSBDYXN0U3RhdGVWYWx1ZUVudW08R0xpbnQ+OjptRW51bUZvclR5cGUgICAgICA9IEdM
X0lOVDsKLXRlbXBsYXRlIDw+IEdMZW51bSBDYXN0U3RhdGVWYWx1ZUVudW08R0x1aW50Pjo6bUVu
dW1Gb3JUeXBlICAgICA9IEdMX1VOU0lHTkVEX0lOVDsKLXRlbXBsYXRlIDw+IEdMZW51bSBDYXN0
U3RhdGVWYWx1ZUVudW08R0xib29sZWFuPjo6bUVudW1Gb3JUeXBlICA9IEdMX0JPT0w7Ci10ZW1w
bGF0ZSA8PiBHTGVudW0gQ2FzdFN0YXRlVmFsdWVFbnVtPEdMaW50NjQ+OjptRW51bUZvclR5cGUg
ICAgPSBHTF9JTlRfNjRfQU5HTEVYOwotdGVtcGxhdGUgPD4gR0xlbnVtIENhc3RTdGF0ZVZhbHVl
RW51bTxHTGZsb2F0Pjo6bUVudW1Gb3JUeXBlICAgID0gR0xfRkxPQVQ7Cit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUXVlcnlUPgorUXVlcnlUIENsYW1wVG9RdWVyeVJhbmdlKEdMaW50NjQgdmFsdWUpCit7
CisgICAgY29uc3QgR0xpbnQ2NCBtaW4gPSBzdGF0aWNfY2FzdDxHTGludDY0PihzdGQ6Om51bWVy
aWNfbGltaXRzPFF1ZXJ5VD46Om1pbigpKTsKKyAgICBjb25zdCBHTGludDY0IG1heCA9IHN0YXRp
Y19jYXN0PEdMaW50NjQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8UXVlcnlUPjo6bWF4KCkpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxRdWVyeVQ+KGNsYW1wKHZhbHVlLCBtaW4sIG1heCkpOworfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVlcnlULCB0eXBlbmFtZSBOYXRpdmVUPgogUXVlcnlUIENh
c3RTdGF0ZVZhbHVlVG9JbnQoR0xlbnVtIHBuYW1lLCBOYXRpdmVUIHZhbHVlKQogewotICAgIEdM
ZW51bSBxdWVyeVR5cGUgPSBDYXN0U3RhdGVWYWx1ZUVudW08UXVlcnlUPjo6bUVudW1Gb3JUeXBl
OwotICAgIEdMZW51bSBuYXRpdmVUeXBlID0gQ2FzdFN0YXRlVmFsdWVFbnVtPE5hdGl2ZVQ+Ojpt
RW51bUZvclR5cGU7CisgICAgR0xlbnVtIHF1ZXJ5VHlwZSAgPSBHTFR5cGVUb0dMZW51bTxRdWVy
eVQ+Ojp2YWx1ZTsKKyAgICBHTGVudW0gbmF0aXZlVHlwZSA9IEdMVHlwZVRvR0xlbnVtPE5hdGl2
ZVQ+Ojp2YWx1ZTsKIAogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0ZMT0FUKQogICAgIHsKICAg
ICAgICAgLy8gUkdCQSBjb2xvciB2YWx1ZXMgYW5kIERlcHRoUmFuZ2VGIHZhbHVlcyBhcmUgY29u
dmVydGVkIHRvIGludGVnZXIgdXNpbmcgRXF1YXRpb24gMi40IGZyb20gVGFibGUgNC41CiAgICAg
ICAgIGlmIChwbmFtZSA9PSBHTF9ERVBUSF9SQU5HRSB8fCBwbmFtZSA9PSBHTF9DT0xPUl9DTEVB
Ul9WQUxVRSB8fCBwbmFtZSA9PSBHTF9ERVBUSF9DTEVBUl9WQUxVRSB8fCBwbmFtZSA9PSBHTF9C
TEVORF9DT0xPUikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFF1
ZXJ5VD4oKHN0YXRpY19jYXN0PEdMZmxvYXQ+KDB4RkZGRkZGRkYpICogdmFsdWUgLSAxLjBmKSAv
IDIuMGYpOworICAgICAgICAgICAgcmV0dXJuIENsYW1wVG9RdWVyeVJhbmdlPFF1ZXJ5VD4oRXhw
YW5kRmxvYXRUb0ludGVnZXIoc3RhdGljX2Nhc3Q8R0xmbG9hdD4odmFsdWUpKSk7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC01OSw3NyArNjYsODAgQEAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBRdWVyeVQsIHR5cGVuYW1lIE5hdGl2ZVQ+CiBRdWVyeVQgQ2FzdFN0YXRlVmFs
dWUoR0xlbnVtIHBuYW1lLCBOYXRpdmVUIHZhbHVlKQogewotICAgIEdMZW51bSBxdWVyeVR5cGUg
PSBDYXN0U3RhdGVWYWx1ZUVudW08UXVlcnlUPjo6bUVudW1Gb3JUeXBlOworICAgIEdMZW51bSBx
dWVyeVR5cGUgPSBHTFR5cGVUb0dMZW51bTxRdWVyeVQ+Ojp2YWx1ZTsKIAogICAgIHN3aXRjaCAo
cXVlcnlUeXBlKQogICAgIHsKLSAgICAgIGNhc2UgR0xfSU5UOiAgICAgICAgICAgICAgcmV0dXJu
IENhc3RTdGF0ZVZhbHVlVG9JbnQ8UXVlcnlULCBOYXRpdmVUPihwbmFtZSwgdmFsdWUpOwotICAg
ICAgY2FzZSBHTF9JTlRfNjRfQU5HTEVYOiAgICByZXR1cm4gQ2FzdFN0YXRlVmFsdWVUb0ludDxR
dWVyeVQsIE5hdGl2ZVQ+KHBuYW1lLCB2YWx1ZSk7Ci0gICAgICBjYXNlIEdMX0ZMT0FUOiAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxRdWVyeVQ+KHZhbHVlKTsKLSAgICAgIGNhc2UgR0xf
Qk9PTDogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFF1ZXJ5VD4odmFsdWUgPT0gc3Rh
dGljX2Nhc3Q8TmF0aXZlVD4oMCkgPyBHTF9GQUxTRSA6IEdMX1RSVUUpOwotICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBHTF9JTlQ6CisgICAg
ICAgICAgICByZXR1cm4gQ2FzdFN0YXRlVmFsdWVUb0ludDxRdWVyeVQsIE5hdGl2ZVQ+KHBuYW1l
LCB2YWx1ZSk7CisgICAgICAgIGNhc2UgR0xfSU5UXzY0X0FOR0xFWDoKKyAgICAgICAgICAgIHJl
dHVybiBDYXN0U3RhdGVWYWx1ZVRvSW50PFF1ZXJ5VCwgTmF0aXZlVD4ocG5hbWUsIHZhbHVlKTsK
KyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxR
dWVyeVQ+KHZhbHVlKTsKKyAgICAgICAgY2FzZSBHTF9CT09MOgorICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFF1ZXJ5VD4odmFsdWUgPT0gc3RhdGljX2Nhc3Q8TmF0aXZlVD4oMCkgPyBH
TF9GQUxTRSA6IEdMX1RSVUUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIAorfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQorCit0ZW1wbGF0ZSA8PgorR0xlbnVtIEdMVHlwZVRvR0xlbnVtPEdMaW50
Pjo6dmFsdWUgPSBHTF9JTlQ7Cit0ZW1wbGF0ZSA8PgorR0xlbnVtIEdMVHlwZVRvR0xlbnVtPEdM
dWludD46OnZhbHVlID0gR0xfVU5TSUdORURfSU5UOwordGVtcGxhdGUgPD4KK0dMZW51bSBHTFR5
cGVUb0dMZW51bTxHTGJvb2xlYW4+Ojp2YWx1ZSA9IEdMX0JPT0w7Cit0ZW1wbGF0ZSA8PgorR0xl
bnVtIEdMVHlwZVRvR0xlbnVtPEdMaW50NjQ+Ojp2YWx1ZSA9IEdMX0lOVF82NF9BTkdMRVg7Cit0
ZW1wbGF0ZSA8PgorR0xlbnVtIEdMVHlwZVRvR0xlbnVtPEdMZmxvYXQ+Ojp2YWx1ZSA9IEdMX0ZM
T0FUOworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUXVlcnlUPgogdm9pZCBDYXN0U3RhdGVWYWx1ZXMo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hdGl2ZVR5cGUsIEdMZW51bSBwbmFtZSwKICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMsIFF1ZXJ5VCAqb3V0UGFyYW1z
KQogewogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKICAgICB7Ci0gICAgICAgIEdMaW50
ICppbnRQYXJhbXMgPSBOVUxMOwotICAgICAgICBpbnRQYXJhbXMgPSBuZXcgR0xpbnRbbnVtUGFy
YW1zXTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGludFBhcmFtcyhudW1QYXJhbXMsIDAp
OworICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgaW50UGFyYW1zLmRhdGEoKSk7
CiAKLSAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIGludFBhcmFtcyk7Ci0KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKICAgICAg
ICAgewogICAgICAgICAgICAgb3V0UGFyYW1zW2ldID0gQ2FzdFN0YXRlVmFsdWU8UXVlcnlUPihw
bmFtZSwgaW50UGFyYW1zW2ldKTsKICAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSBbXSBpbnRQ
YXJhbXM7CiAgICAgfQogICAgIGVsc2UgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkKICAgICB7
Ci0gICAgICAgIEdMYm9vbGVhbiAqYm9vbFBhcmFtcyA9IE5VTEw7Ci0gICAgICAgIGJvb2xQYXJh
bXMgPSBuZXcgR0xib29sZWFuW251bVBhcmFtc107CisgICAgICAgIHN0ZDo6dmVjdG9yPEdMYm9v
bGVhbj4gYm9vbFBhcmFtcyhudW1QYXJhbXMsIEdMX0ZBTFNFKTsKKyAgICAgICAgY29udGV4dC0+
Z2V0Qm9vbGVhbnYocG5hbWUsIGJvb2xQYXJhbXMuZGF0YSgpKTsKIAotICAgICAgICBjb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSwgYm9vbFBhcmFtcyk7Ci0KICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKICAgICAgICAgewogICAgICAgICAgICAg
b3V0UGFyYW1zW2ldID0gKGJvb2xQYXJhbXNbaV0gPT0gR0xfRkFMU0UgPyBzdGF0aWNfY2FzdDxR
dWVyeVQ+KDApIDogc3RhdGljX2Nhc3Q8UXVlcnlUPigxKSk7CiAgICAgICAgIH0KLQotICAgICAg
ICBkZWxldGUgW10gYm9vbFBhcmFtczsKICAgICB9CiAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9
PSBHTF9GTE9BVCkKICAgICB7Ci0gICAgICAgIEdMZmxvYXQgKmZsb2F0UGFyYW1zID0gTlVMTDsK
LSAgICAgICAgZmxvYXRQYXJhbXMgPSBuZXcgR0xmbG9hdFtudW1QYXJhbXNdOworICAgICAgICBz
dGQ6OnZlY3RvcjxHTGZsb2F0PiBmbG9hdFBhcmFtcyhudW1QYXJhbXMsIDAuMGYpOworICAgICAg
ICBjb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIGZsb2F0UGFyYW1zLmRhdGEoKSk7CiAKLSAgICAg
ICAgY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBmbG9hdFBhcmFtcyk7Ci0KICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKICAgICAgICAgewogICAg
ICAgICAgICAgb3V0UGFyYW1zW2ldID0gQ2FzdFN0YXRlVmFsdWU8UXVlcnlUPihwbmFtZSwgZmxv
YXRQYXJhbXNbaV0pOwogICAgICAgICB9Ci0KLSAgICAgICAgZGVsZXRlIFtdIGZsb2F0UGFyYW1z
OwogICAgIH0KICAgICBlbHNlIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVF82NF9BTkdMRVgpCiAg
ICAgewotICAgICAgICBHTGludDY0ICppbnQ2NFBhcmFtcyA9IE5VTEw7Ci0gICAgICAgIGludDY0
UGFyYW1zID0gbmV3IEdMaW50NjRbbnVtUGFyYW1zXTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0xp
bnQ2ND4gaW50NjRQYXJhbXMobnVtUGFyYW1zLCAwKTsKKyAgICAgICAgY29udGV4dC0+Z2V0SW50
ZWdlcjY0dihwbmFtZSwgaW50NjRQYXJhbXMuZGF0YSgpKTsKIAotICAgICAgICBjb250ZXh0LT5n
ZXRJbnRlZ2VyNjR2KHBuYW1lLCBpbnQ2NFBhcmFtcyk7Ci0KICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKICAgICAgICAgewogICAgICAgICAgICAg
b3V0UGFyYW1zW2ldID0gQ2FzdFN0YXRlVmFsdWU8UXVlcnlUPihwbmFtZSwgaW50NjRQYXJhbXNb
aV0pOwogICAgICAgICB9Ci0KLSAgICAgICAgZGVsZXRlIFtdIGludDY0UGFyYW1zOwogICAgIH0K
ICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNv
bnZlcnNpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYsMTIgKzYsMzEgQEAKIAogLy8gcXVlcnlj
b252ZXJzaW9ucy5oOiBEZWNsYXJhdGlvbiBvZiBzdGF0ZSBxdWVyeSBjYXN0IGNvbnZlcnNpb25z
CiAKKyNpZm5kZWYgTElCQU5HTEVfUVVFUllfQ09OVkVSU0lPTlNfSF8KKyNkZWZpbmUgTElCQU5H
TEVfUVVFUllfQ09OVkVSU0lPTlNfSF8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKwogbmFtZXNwYWNlIGdsCiB7CitjbGFzcyBDb250ZXh0
OwogCisvLyBIZWxwZXIgY2xhc3MgZm9yIGNvbnZlcnRpbmcgYSBHTCB0eXBlIHRvIGEgR0xlbnVt
OgorLy8gV2UgY2FuJ3QgdXNlIENhc3RTdGF0ZVZhbHVlRW51bSBnZW5lcmFsbHksIGJlY2F1c2Ug
b2YgR0xib29sZWFuICsgR0x1Ynl0ZSBvdmVybGFwLgorLy8gV2UgcmVzdHJpY3Qgb3VyIHVzZSB0
byBDYXN0U3RhdGVWYWx1ZSwgd2hlcmUgaXQgZWxpbWluYXRlcyBkdXBsaWNhdGUgcGFyYW1ldGVy
cy4KKwordGVtcGxhdGUgPHR5cGVuYW1lIEdMVHlwZT4KK3N0cnVjdCBHTFR5cGVUb0dMZW51bQor
eworICAgIHN0YXRpYyBHTGVudW0gdmFsdWU7Cit9OworCiAvLyBUaGUgR0wgc3RhdGUgcXVlcnkg
QVBJIHR5cGVzIGFyZTogYm9vbCwgaW50LCB1aW50LCBmbG9hdCwgaW50NjQKIHRlbXBsYXRlIDx0
eXBlbmFtZSBRdWVyeVQ+CiB2b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gbmF0aXZlVHlwZSwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IG51bVBhcmFtcywgUXVlcnlUICpvdXRQYXJhbXMpOwogCiB9CisKKyNlbmRpZiAg
Ly8gTElCQU5HTEVfUVVFUllfQ09OVkVSU0lPTlNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGwu
aAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL0J1ZmZlckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsOCBA
QAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9CVUZGRVJJTVBMX0hfCiAKICNpbmNsdWRlICJj
b21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgorI2luY2x1
ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAKICNp
bmNsdWRlIDxzdGRpbnQuaD4KIApAQCAtMjksOSArMzAsMTEgQEAKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBtYXBSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFj
Y2VzcywgR0x2b2lkICoqbWFwUHRyKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgdW5tYXAo
R0xib29sZWFuICpyZXN1bHQpID0gMDsKIAotICAgIC8vIFRoaXMgbWV0aG9kIG1heSBub3QgaGF2
ZSBhIGNvcnJlc3BvbmRpbmcgR0wtYmFja2VkIGZ1bmN0aW9uLiBJdCBpcyBuZWNlc3NhcnkKLSAg
ICAvLyBmb3IgdmFsaWRhdGlvbiwgZm9yIGNlcnRhaW4gaW5kZXhlZCBkcmF3IGNhbGxzLgotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGdldERhdGEoY29uc3QgdWludDhfdCAqKm91dERhdGEpID0gMDsK
KyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRJbmRleFJhbmdlKEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5kZXhSYW5nZSAqb3V0UmFuZ2UpID0g
MDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9CdWZmZXJJbXBsX21vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbF9tb2NrLmgJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9CdWZmZXJJbXBsX21vY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogY2xh
c3MgTW9ja0J1ZmZlckltcGwgOiBwdWJsaWMgQnVmZmVySW1wbAogewogICBwdWJsaWM6Ci0gICAg
fk1vY2tCdWZmZXJJbXBsKCkgb3ZlcnJpZGUgeyBkZXN0cnVjdG9yKCk7IH0KKyAgICB+TW9ja0J1
ZmZlckltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQogCiAgICAgTU9DS19NRVRIT0QzKHNldERhdGEs
IGdsOjpFcnJvcihjb25zdCB2b2lkKiwgc2l6ZV90LCBHTGVudW0pKTsKICAgICBNT0NLX01FVEhP
RDMoc2V0U3ViRGF0YSwgZ2w6OkVycm9yKGNvbnN0IHZvaWQqLCBzaXplX3QsIHNpemVfdCkpOwpA
QCAtMjgsNyArMjgsNyBAQAogICAgIE1PQ0tfTUVUSE9ENChtYXBSYW5nZSwgZ2w6OkVycm9yKHNp
emVfdCwgc2l6ZV90LCBHTGJpdGZpZWxkLCBHTHZvaWQgKiopKTsKICAgICBNT0NLX01FVEhPRDEo
dW5tYXAsIGdsOjpFcnJvcihHTGJvb2xlYW4gKnJlc3VsdCkpOwogCi0gICAgTU9DS19NRVRIT0Qx
KGdldERhdGEsIGdsOjpFcnJvcihjb25zdCB1aW50OF90ICoqKSk7CisgICAgTU9DS19NRVRIT0Q1
KGdldEluZGV4UmFuZ2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgc2l6ZV90LCBib29sLCBn
bDo6SW5kZXhSYW5nZSAqKSk7CiAKICAgICBNT0NLX01FVEhPRDAoZGVzdHJ1Y3Rvciwgdm9pZCgp
KTsKIH07CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvQ29tcGlsZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbXBpbGVySW1wbC5oCShyZXZpc2lvbiAxOTk2ODIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBACiAvLyAgICAgICAgICAgICAgICAg
Zm9yIHRoZSBnbDo6Q29tcGlsZXIgb2JqZWN0LgogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRp
bHMuaCIKKyNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9FcnJvci5oIgogCiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0NPTVBJTEVSSU1QTF9IXwpA
QCAtMjMsNiArMjQsOSBAQAogICAgIHZpcnR1YWwgfkNvbXBpbGVySW1wbCgpIHt9CiAKICAgICB2
aXJ0dWFsIGdsOjpFcnJvciByZWxlYXNlKCkgPSAwOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
RXhwb3NlIHRyYW5zbGF0b3IgYnVpbHQtaW4gcmVzb3VyY2VzIGluaXQgbWV0aG9kLgorICAgIHZp
cnR1YWwgU2hTaGFkZXJPdXRwdXQgZ2V0VHJhbnNsYXRvck91dHB1dFR5cGUoKSBjb25zdCA9IDA7
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvRGV2aWNlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBsLmgJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDEwIEBACiAgICAgRGV2aWNlSW1wbCgpOwog
ICAgIHZpcnR1YWwgfkRldmljZUltcGwoKTsKIAotICAgIHZpcnR1YWwgZWdsOjpFcnJvciBnZXRE
ZXZpY2UoRUdMQXR0cmliICp2YWx1ZSkgPSAwOworICAgIHZpcnR1YWwgZWdsOjpFcnJvciBnZXRE
ZXZpY2Uodm9pZCAqKm91dFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBFR0xpbnQgZ2V0VHlwZSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGV2aWNlRXh0
ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZXZp
Y2VFeHRlcm5hbGx5U291cmNlZCgpID0gMDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3Bs
YXlJbXBsLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEsMTYgKzIxLDEzIEBACiAKIERpc3BsYXlJbXBsOjp+RGlzcGxheUltcGwoKQogewotICAgIHdo
aWxlICghbVN1cmZhY2VTZXQuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3lTdXJmYWNl
KCptU3VyZmFjZVNldC5iZWdpbigpKTsKLSAgICB9CisgICAgQVNTRVJUKG1TdXJmYWNlU2V0LmVt
cHR5KCkpOwogfQogCiB2b2lkIERpc3BsYXlJbXBsOjpkZXN0cm95U3VyZmFjZShlZ2w6OlN1cmZh
Y2UgKnN1cmZhY2UpCiB7CiAgICAgbVN1cmZhY2VTZXQuZXJhc2Uoc3VyZmFjZSk7Ci0gICAgc3Vy
ZmFjZS0+cmVsZWFzZSgpOworICAgIHN1cmZhY2UtPm9uRGVzdHJveSgpOwogfQogCiBjb25zdCBl
Z2w6OkRpc3BsYXlFeHRlbnNpb25zICZEaXNwbGF5SW1wbDo6Z2V0RXh0ZW5zaW9ucygpIGNvbnN0
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRGlz
cGxheUltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIGNsYXNzIERpc3BsYXk7CiBzdHJ1Y3QgQ29u
ZmlnOwogY2xhc3MgU3VyZmFjZTsKK2NsYXNzIEltYWdlU2libGluZzsKIH0KIAogbmFtZXNwYWNl
IGdsCkBAIC0zNCw4ICszNSwxMCBAQAogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBTdXJmYWNlSW1w
bDsKK2NsYXNzIEltYWdlSW1wbDsKIHN0cnVjdCBDb25maWdEZXNjOwogY2xhc3MgRGV2aWNlSW1w
bDsKK2NsYXNzIFN0cmVhbUltcGw7CiAKIGNsYXNzIERpc3BsYXlJbXBsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiB7CkBAIC00NiwxNyArNDksMjggQEAKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgaW5p
dGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVy
bWluYXRlKCkgPSAwOwogCi0gICAgdmlydHVhbCBlZ2w6OkVycm9yIGNyZWF0ZVdpbmRvd1N1cmZh
Y2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sIEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93LCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpID0g
MDsKLSAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSW1w
bCAqKm91dFN1cmZhY2UpID0gMDsKLSAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgY3JlYXRlUGJ1ZmZl
ckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsIFN1
cmZhY2VJbXBsICoqb3V0U3VyZmFjZSkgPSAwOwotICAgIHZpcnR1YWwgZWdsOjpFcnJvciBjcmVh
dGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLCBOYXRpdmVQ
aXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicywgU3VyZmFjZUltcGwg
KipvdXRTdXJmYWNlKSA9IDA7Ci0gICAgdmlydHVhbCBlZ2w6OkVycm9yIGNyZWF0ZUNvbnRleHQo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4
dCwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKipvdXRDb250ZXh0KSA9IDA7CisgICAgdmly
dHVhbCBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0g
MDsKKyAgICB2aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOwor
ICAgIHZpcnR1YWwgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRs
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOworICAgIHZpcnR1YWwgU3Vy
ZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRp
dmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7CiAK
KyAgICB2aXJ0dWFsIEltYWdlSW1wbCAqY3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2VTaWJsaW5nICpidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKSA9IDA7CisKKyAgICB2aXJ0dWFsIGdsOjpDb250ZXh0ICpjcmVhdGVDb250
ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpID0gMDsKKworICAgIHZpcnR1YWwgU3RyZWFtSW1wbCAqY3JlYXRlU3RyZWFtKGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7CisKICAgICB2aXJ0dWFsIGVnbDo6RXJy
b3IgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwgZWdsOjpTdXJmYWNlICpy
ZWFkU3VyZmFjZSwgZ2w6OkNvbnRleHQgKmNvbnRleHQpID0gMDsKIAogICAgIHZpcnR1YWwgZWds
OjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgY29uc3QgPSAwOwpAQCAtNzEsNiArODUsMTEg
QEAKIAogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmlj
ZSkgPSAwOwogCisgICAgdmlydHVhbCBlZ2w6OkVycm9yIHdhaXRDbGllbnQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBlZ2w6OkVycm9yIHdhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZh
Y2UpIGNvbnN0ID0gMDsKKwogICAgIGNvbnN0IGVnbDo6Q2FwcyAmZ2V0Q2FwcygpIGNvbnN0Owog
CiAgICAgdHlwZWRlZiBzdGQ6OnNldDxlZ2w6OlN1cmZhY2UqPiBTdXJmYWNlU2V0OwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVy
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGwuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMiArMzEsMjggQEAKICAgICBleHBsaWNpdCBGcmFtZWJ1
ZmZlckltcGwoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSA6IG1EYXRhKGRhdGEp
IHsgfQogICAgIHZpcnR1YWwgfkZyYW1lYnVmZmVySW1wbCgpIHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIG9uVXBkYXRlQ29sb3JBdHRhY2htZW50KHNpemVfdCBpbmRleCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBvblVwZGF0ZURlcHRoQXR0YWNobWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
b25VcGRhdGVTdGVuY2lsQXR0YWNobWVudCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgb25VcGRh
dGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldERy
YXdCdWZmZXJzKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICpidWZmZXJzKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFJlYWRCdWZmZXIoR0xlbnVtIGJ1ZmZlcikgPSAwOwotCisgICAgdmly
dHVhbCBnbDo6RXJyb3IgZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBjb3Vu
dCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBj
b25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBj
bGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBtYXNrKSA9IDA7Ci0gICAgdmly
dHVhbCBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVu
dW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpID0gMDsK
LSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjbGVhckJ1ZmZlcnVpdihjb25zdCBnbDo6U3RhdGUgJnN0
YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTHVpbnQgKnZhbHVl
cykgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xpbnQg
KnZhbHVlcykgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFyQnVmZmVyZmkoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgR0xmbG9h
dCBkZXB0aCwgR0xpbnQgc3RlbmNpbCkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFy
QnVmZmVyZnYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNs
ZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlcykgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpF
cnJvciBjbGVhckJ1ZmZlcmZpKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc3RlbmNpbCkgPSAwOwogCiAgICAgdmlydHVhbCBHTGVudW0gZ2V0SW1w
bGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBHTGVu
dW0gZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlKCkgY29uc3QgPSAwOwpAQCAtNTUsOCAr
NjEsMTAgQEAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBibGl0KGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JmRlc3RBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLCBH
TGVudW0gZmlsdGVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIEdMZW51bSBjaGVja1N0YXR1cygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpID0g
MDsKKwogICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZ2V0RGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1EYXRhOyB9CiAKICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zy
YW1lYnVmZmVySW1wbF9tb2NrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21vY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gRnJhbWVidWZmZXJJbXBsX21v
Y2suaDoKKy8vICAgRGVmaW5lcyBhIG1vY2sgb2YgdGhlIEZyYW1lYnVmZmVySW1wbCBjbGFzcy4K
Ky8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRlJBTUVCVUZGRVJJTVBMTU9DS19IXwor
I2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9GUkFNRUJVRkZFUklNUExNT0NLX0hfCisKKyNpbmNs
dWRlICJnbW9jay9nbW9jay5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVi
dWZmZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBNb2NrRnJhbWVidWZmZXJJ
bXBsIDogcHVibGljIHJ4OjpGcmFtZWJ1ZmZlckltcGwKK3sKKyAgcHVibGljOgorICAgIE1vY2tG
cmFtZWJ1ZmZlckltcGwoKSA6IHJ4OjpGcmFtZWJ1ZmZlckltcGwoZ2w6OkZyYW1lYnVmZmVyOjpE
YXRhKCkpIHt9CisgICAgdmlydHVhbCB+TW9ja0ZyYW1lYnVmZmVySW1wbCgpIHsgZGVzdHJveSgp
OyB9CisKKyAgICBNT0NLX01FVEhPRDIoZGlzY2FyZCwgZ2w6OkVycm9yKHNpemVfdCwgY29uc3Qg
R0xlbnVtICopKTsKKyAgICBNT0NLX01FVEhPRDIoaW52YWxpZGF0ZSwgZ2w6OkVycm9yKHNpemVf
dCwgY29uc3QgR0xlbnVtICopKTsKKyAgICBNT0NLX01FVEhPRDMoaW52YWxpZGF0ZVN1YiwgZ2w6
OkVycm9yKHNpemVfdCwgY29uc3QgR0xlbnVtICosIGNvbnN0IGdsOjpSZWN0YW5nbGUgJikpOwor
CisgICAgTU9DS19NRVRIT0QyKGNsZWFyLCBnbDo6RXJyb3IoY29uc3QgZ2w6OkRhdGEgJiwgR0xi
aXRmaWVsZCkpOworICAgIE1PQ0tfTUVUSE9ENChjbGVhckJ1ZmZlcmZ2LCBnbDo6RXJyb3IoY29u
c3QgZ2w6OkRhdGEgJiwgR0xlbnVtLCBHTGludCwgY29uc3QgR0xmbG9hdCAqKSk7CisgICAgTU9D
S19NRVRIT0Q0KGNsZWFyQnVmZmVydWl2LCBnbDo6RXJyb3IoY29uc3QgZ2w6OkRhdGEgJiwgR0xl
bnVtLCBHTGludCwgY29uc3QgR0x1aW50ICopKTsKKyAgICBNT0NLX01FVEhPRDQoY2xlYXJCdWZm
ZXJpdiwgZ2w6OkVycm9yKGNvbnN0IGdsOjpEYXRhICYsIEdMZW51bSwgR0xpbnQsIGNvbnN0IEdM
aW50ICopKTsKKyAgICBNT0NLX01FVEhPRDUoY2xlYXJCdWZmZXJmaSwgZ2w6OkVycm9yKGNvbnN0
IGdsOjpEYXRhICYsIEdMZW51bSwgR0xpbnQsIEdMZmxvYXQsIEdMaW50KSk7CisKKyAgICBNT0NL
X0NPTlNUX01FVEhPRDAoZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQsIEdMZW51bSgp
KTsKKyAgICBNT0NLX0NPTlNUX01FVEhPRDAoZ2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBl
LCBHTGVudW0oKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0Q1KAorICAgICAgICByZWFkUGl4ZWxz
LAorICAgICAgICBnbDo6RXJyb3IoY29uc3QgZ2w6OlN0YXRlICYsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJiwgR0xlbnVtLCBHTGVudW0sIEdMdm9pZCAqKSk7CisKKyAgICBNT0NLX01FVEhPRDYoYmxp
dCwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKGNvbnN0IGdsOjpTdGF0ZSAmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xiaXRmaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqKSk7CisK
KyAgICBNT0NLX0NPTlNUX01FVEhPRDAoY2hlY2tTdGF0dXMsIGJvb2woKSk7CisKKyAgICBNT0NL
X01FVEhPRDEoc3luY1N0YXRlLCB2b2lkKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRz
ICYpKTsKKworICAgIE1PQ0tfTUVUSE9EMChkZXN0cm95LCB2b2lkKCkpOworfTsKKworaW5saW5l
IDo6dGVzdGluZzo6TmljZU1vY2s8TW9ja0ZyYW1lYnVmZmVySW1wbD4gKk1ha2VGcmFtZWJ1ZmZl
ck1vY2soKQoreworICAgIDo6dGVzdGluZzo6TmljZU1vY2s8TW9ja0ZyYW1lYnVmZmVySW1wbD4g
KmZyYW1lYnVmZmVySW1wbCA9CisgICAgICAgIG5ldyA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tG
cmFtZWJ1ZmZlckltcGw+KCk7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogYWRkIE9OX0NBTExTIGZv
ciBvdGhlciByZXR1cm5pbmcgbWV0aG9kcworICAgIE9OX0NBTEwoKmZyYW1lYnVmZmVySW1wbCwg
Y2hlY2tTdGF0dXMoKSkuV2lsbEJ5RGVmYXVsdCg6OnRlc3Rpbmc6OlJldHVybih0cnVlKSk7CisK
KyAgICAvLyBXZSBtdXN0IG1vY2sgdGhlIGRlc3RydWN0b3Igc2luY2UgTmljZU1vY2sgZG9lc24n
dCB3b3JrIGZvciBkZXN0cnVjdG9ycy4KKyAgICBFWFBFQ1RfQ0FMTCgqZnJhbWVidWZmZXJJbXBs
LCBkZXN0cm95KCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKworICAgIHJldHVy
biBmcmFtZWJ1ZmZlckltcGw7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8v
IExJQkFOR0xFX1JFTkRFUkVSX0ZSQU1FQlVGRkVSSU1QTE1PQ0tfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvSW1h
Z2VJbXBsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBA
QAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlSW1wbC5oOiBEZWZpbmVzIHRoZSByeDo6SW1hZ2VJ
bXBsIGNsYXNzIHJlcHJlc2VudGluZyB0aGUgRUdMaW1hZ2Ugb2JqZWN0LgorCisjaWZuZGVmIExJ
QkFOR0xFX1JFTkRFUkVSX0lNQUdFSU1QTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9J
TUFHRUlNUExfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvRXJyb3IuaCIKKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgSW1hZ2VTaWJsaW5n
OworfQorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIEltYWdlSW1wbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQoreworICBwdWJsaWM6CisgICAgdmlydHVhbCB+SW1hZ2VJbXBsKCkge30KKyAgICB2aXJ0
dWFsIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpID0gMDsKKworICAgIHZpcnR1YWwgZ2w6OkVycm9y
IG9ycGhhbihlZ2w6OkltYWdlU2libGluZyAqc2libGluZykgPSAwOworfTsKK30KKworI2VuZGlm
ICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9JTUFHRUlNUExfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGxfbW9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9JbWFn
ZUltcGxfbW9jay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbF9tb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEltYWdlSW1wbF9tb2NrLmg6IERlZmluZXMg
YSBtb2NrIG9mIHRoZSBJbWFnZUltcGwgY2xhc3MuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVS
RVJfSU1BR0VJTVBMTU9DS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9JTUFHRUlNUExN
T0NLX0hfCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvSW1hZ2VJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgTW9ja0ltYWdl
SW1wbCA6IHB1YmxpYyBJbWFnZUltcGwKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tJ
bWFnZUltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQorICAgIE1PQ0tfTUVUSE9EMChpbml0aWFsaXpl
LCBlZ2w6OkVycm9yKHZvaWQpKTsKKyAgICBNT0NLX01FVEhPRDEob3JwaGFuLCBnbDo6RXJyb3Io
ZWdsOjpJbWFnZVNpYmxpbmcgKikpOworICAgIE1PQ0tfTUVUSE9EMChkZXN0cnVjdG9yLCB2b2lk
KCkpOworfTsKK30KKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9JTUFHRUlNUExNT0NL
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
SW1wbEZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvSW1wbEZhY3RvcnkuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDkgQEAKICNkZWZpbmUgTElCQU5HTEVfUkVOREVS
RVJfSU1QTEZBQ1RPUllfSF8KIAogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCiAKIG5hbWVzcGFjZSByeAogewpA
QCAtMjIsMTAgKzI1LDEyIEBACiBjbGFzcyBQcm9ncmFtSW1wbDsKIGNsYXNzIFF1ZXJ5SW1wbDsK
IGNsYXNzIFJlbmRlcmJ1ZmZlckltcGw7CitjbGFzcyBTYW1wbGVySW1wbDsKIGNsYXNzIFNoYWRl
ckltcGw7CiBjbGFzcyBUZXh0dXJlSW1wbDsKIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrSW1wbDsK
IGNsYXNzIFZlcnRleEFycmF5SW1wbDsKK2NsYXNzIFN0cmVhbUltcGw7CiAKIGNsYXNzIEltcGxG
YWN0b3J5IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CkBAIC0zNCwxMiArMzksMTEgQEAKICAgICB2
aXJ0dWFsIH5JbXBsRmFjdG9yeSgpIHt9CiAKICAgICAvLyBTaGFkZXIgY3JlYXRpb24KLSAgICB2
aXJ0dWFsIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEp
ID0gMDsKLSAgICB2aXJ0dWFsIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkg
PSAwOwotICAgIHZpcnR1YWwgUHJvZ3JhbUltcGwgKmNyZWF0ZVByb2dyYW0oKSA9IDA7CisgICAg
dmlydHVhbCBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgPSAwOworICAgIHZpcnR1YWwg
U2hhZGVySW1wbCAqY3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEpID0g
MDsKKyAgICB2aXJ0dWFsIFByb2dyYW1JbXBsICpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9n
cmFtOjpEYXRhICZkYXRhKSA9IDA7CiAKICAgICAvLyBGcmFtZWJ1ZmZlciBjcmVhdGlvbgotICAg
IHZpcnR1YWwgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSA9IDA7CiAgICAgdmlydHVhbCBGcmFtZWJ1ZmZl
ckltcGwgKmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0
YSkgPSAwOwogCiAgICAgLy8gVGV4dHVyZSBjcmVhdGlvbgpAQCAtNTIsNyArNTYsNyBAQAogICAg
IHZpcnR1YWwgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKCkgPSAwOwogCiAgICAgLy8gVmVydGV4
IEFycmF5IGNyZWF0aW9uCi0gICAgdmlydHVhbCBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRl
eEFycmF5KCkgPSAwOworICAgIHZpcnR1YWwgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhB
cnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpID0gMDsKIAogICAgIC8vIFF1
ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgogICAgIHZpcnR1YWwgUXVlcnlJbXBsICpjcmVhdGVRdWVy
eShHTGVudW0gdHlwZSkgPSAwOwpAQCAtNjEsNiArNjUsOSBAQAogCiAgICAgLy8gVHJhbnNmb3Jt
IEZlZWRiYWNrIGNyZWF0aW9uCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKmNy
ZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCkgPSAwOworCisgICAgLy8gU2FtcGxlciBvYmplY3QgY3Jl
YXRpb24KKyAgICB2aXJ0dWFsIFNhbXBsZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgPSAwOwogfTsK
IAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1Byb2dyYW1JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMywzMyArMjMsMjQgQEAKIAogc3RydWN0IExpbmtSZXN1bHQK
IHsKKyAgICBMaW5rUmVzdWx0KGJvb2wgbGlua1N1Y2Nlc3MsIGNvbnN0IGdsOjpFcnJvciAmZXJy
b3IpIDogbGlua1N1Y2Nlc3MobGlua1N1Y2Nlc3MpLCBlcnJvcihlcnJvcikge30KKwogICAgIGJv
b2wgbGlua1N1Y2Nlc3M7CiAgICAgZ2w6OkVycm9yIGVycm9yOwotICAgIExpbmtSZXN1bHQoYm9v
bCBsaW5rU3VjY2VzcywgY29uc3QgZ2w6OkVycm9yICZlcnJvcik7CiB9OwogCiBjbGFzcyBQcm9n
cmFtSW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgdHlwZWRlZiBp
bnQgU2VtYW50aWNJbmRleEFycmF5W2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIFByb2dy
YW1JbXBsKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKSA6IG1EYXRhKGRhdGEpIHt9Cisg
ICAgdmlydHVhbCB+UHJvZ3JhbUltcGwoKSB7fQogCi0gICAgUHJvZ3JhbUltcGwoKSB7IH0KLSAg
ICB2aXJ0dWFsIH5Qcm9ncmFtSW1wbCgpOwotCi0gICAgdmlydHVhbCBib29sIHVzZXNQb2ludFNp
emUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUo
KSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRCaW5hcnlGb3JtYXQoKSA9IDA7
CiAgICAgdmlydHVhbCBMaW5rUmVzdWx0IGxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpC
aW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2F2
ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpID0gMDsKIAotICAgIHZp
cnR1YWwgTGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBnbDo6SW5mb0xvZyAm
aW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6U2hhZGVyICpmcmFnbWVu
dFNoYWRlciwgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcmVnaXN0
ZXJzLCBzdGQ6OnZlY3RvcjxnbDo6TGlua2VkVmFyeWluZz4gKmxpbmtlZFZhcnlpbmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPGludCwgZ2w6OlZhcmlhYmxlTG9jYXRp
b24+ICpvdXRwdXRWYXJpYWJsZXMpID0gMDsKKyAgICB2aXJ0dWFsIExpbmtSZXN1bHQgbGluayhj
b25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpID0gMDsKKyAgICB2aXJ0
dWFsIEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6OkluZm9Mb2cg
KmluZm9Mb2cpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRVbmlmb3JtMWZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpID0gMDsKQEAgLTczLDY3ICs2NCwyMCBAQAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRVbmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldFVuaWZvcm1NYXRyaXg0eDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpID0gMDsKIAotICAgIHZp
cnR1YWwgdm9pZCBnZXRVbmlmb3JtZnYoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgKnBhcmFtcykg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRVbmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMaW50
ICpwYXJhbXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9ybXVpdihHTGludCBsb2Nh
dGlvbiwgR0x1aW50ICpwYXJhbXMpID0gMDsKKyAgICAvLyBUT0RPOiBzeW5jaHJvbml6ZSBpbiBz
eW5jU3RhdGUgd2hlbiBkaXJ0eSBiaXRzIGV4aXN0LgorICAgIHZpcnR1YWwgdm9pZCBzZXRVbmlm
b3JtQmxvY2tCaW5kaW5nKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50IHVuaWZvcm1C
bG9ja0JpbmRpbmcpID0gMDsKIAotICAgIC8vIFRPRE86IFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25z
IGFyZSBwb3NzaWJseSBvbmx5IGFwcGxpY2FibGUgdG8gRDNEIGJhY2tlbmRzLiBUaGUgc2hvdWxk
IGJlIGNhcmVmdWxseSBldmFsdWF0ZWQgdG8KLSAgICAvLyBkZXRlcm1pbmUgaWYgdGhleSBjYW4g
YmUgcmVtb3ZlZCBmcm9tIHRoaXMgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgR0xpbnQgZ2V0U2Ft
cGxlck1hcHBpbmcoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1wbGVySW5k
ZXgsIGNvbnN0IGdsOjpDYXBzICZjYXBzKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBHTGVudW0g
Z2V0U2FtcGxlclRleHR1cmVUeXBlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQg
c2FtcGxlckluZGV4KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBHTGludCBnZXRVc2VkU2FtcGxl
clJhbmdlKGdsOjpTYW1wbGVyVHlwZSB0eXBlKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNhbXBsZXJNYXBwaW5nKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZVNh
bXBsZXJzKGdsOjpJbmZvTG9nICppbmZvTG9nLCBjb25zdCBnbDo6Q2FwcyAmY2FwcykgPSAwOwor
ICAgIC8vIE1heSBvbmx5IGJlIGNhbGxlZCBhZnRlciBhIHN1Y2Nlc3NmdWwgbGluayBvcGVyYXRp
b24uCisgICAgLy8gUmV0dXJuIGZhbHNlIGZvciBpbmFjdGl2ZSBibG9ja3MuCisgICAgdmlydHVh
bCBib29sIGdldFVuaWZvcm1CbG9ja1NpemUoY29uc3Qgc3RkOjpzdHJpbmcgJmJsb2NrTmFtZSwg
c2l6ZV90ICpzaXplT3V0KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIExpbmtSZXN1bHQgY29t
cGlsZVByb2dyYW1FeGVjdXRhYmxlcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OlNoYWRlciAq
ZnJhZ21lbnRTaGFkZXIsIGdsOjpTaGFkZXIgKnZlcnRleFNoYWRlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJzKSA9IDA7Cisg
ICAgLy8gTWF5IG9ubHkgYmUgY2FsbGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBsaW5rIG9wZXJhdGlv
bi4KKyAgICAvLyBSZXR1cm5zIGZhbHNlIGZvciBpbmFjdGl2ZSBtZW1iZXJzLgorICAgIHZpcnR1
YWwgYm9vbCBnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1i
ZXJVbmlmb3JtTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaDo6QmxvY2tNZW1iZXJJbmZvICptZW1iZXJJbmZvT3V0KSBjb25zdCA9IDA7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgbGlua1VuaWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBnbDo6
U2hhZGVyICZ2ZXJ0ZXhTaGFkZXIsIGNvbnN0IGdsOjpTaGFkZXIgJmZyYWdtZW50U2hhZGVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgZGVmaW5lVW5pZm9ybUJsb2NrKGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBjb25zdCBnbDo6U2hhZGVyICZzaGFkZXIsIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50
ZXJmYWNlQmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6Q2FwcyAmY2FwcykgPSAwOwotCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgYXBwbHlVbmlmb3Jt
cygpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseVVuaWZvcm1CdWZmZXJzKGNvbnN0
IGdsOjpEYXRhICZkYXRhLCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZ3NbXSkgPSAwOwotICAg
IHZpcnR1YWwgYm9vbCBhc3NpZ25Vbmlmb3JtQmxvY2tSZWdpc3RlcihnbDo6SW5mb0xvZyAmaW5m
b0xvZywgZ2w6OlVuaWZvcm1CbG9jayAqdW5pZm9ybUJsb2NrLCBHTGVudW0gc2hhZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVn
aXN0ZXJJbmRleCwgY29uc3QgZ2w6OkNhcHMgJmNhcHMpID0gMDsKLQotICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3JtKj4gJmdldFVuaWZvcm1zKCkgY29uc3QgeyByZXR1cm4g
bVVuaWZvcm1zOyB9Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlZhcmlhYmxlTG9jYXRpb24+
ICZnZXRVbmlmb3JtSW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1Vbmlmb3JtSW5kZXg7IH0KLSAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6VW5pZm9ybUJsb2NrKj4gJmdldFVuaWZvcm1CbG9ja3Mo
KSBjb25zdCB7IHJldHVybiBtVW5pZm9ybUJsb2NrczsgfQotICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PGdsOjpMaW5rZWRWYXJ5aW5nPiAmZ2V0VHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRWYXJ5aW5ncygp
IGNvbnN0IHsgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzOyB9Ci0gICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gZ2V0U2hhZGVyQXR0cmlidXRlcygpIHsg
cmV0dXJuIG1TaGFkZXJBdHRyaWJ1dGVzOyB9Ci0gICAgY29uc3QgU2VtYW50aWNJbmRleEFycmF5
ICZnZXRTZW1hbnRpY0luZGV4ZXMoKSBjb25zdCB7IHJldHVybiBtU2VtYW50aWNJbmRleDsgfQot
Ci0gICAgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0qPiAmZ2V0VW5pZm9ybXMoKSB7IHJl
dHVybiBtVW5pZm9ybXM7IH0KLSAgICBzdGQ6OnZlY3RvcjxnbDo6VmFyaWFibGVMb2NhdGlvbj4g
JmdldFVuaWZvcm1JbmRpY2VzKCkgeyByZXR1cm4gbVVuaWZvcm1JbmRleDsgfQotICAgIHN0ZDo6
dmVjdG9yPGdsOjpVbmlmb3JtQmxvY2sqPiAmZ2V0VW5pZm9ybUJsb2NrcygpIHsgcmV0dXJuIG1V
bmlmb3JtQmxvY2tzOyB9Ci0gICAgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFZhcnlpbmc+ICZnZXRU
cmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzKCkgeyByZXR1cm4gbVRyYW5zZm9ybUZlZWRi
YWNrTGlua2VkVmFyeWluZ3M7IH0KLSAgICBTZW1hbnRpY0luZGV4QXJyYXkgJmdldFNlbWFudGlj
SW5kZXhlcygpIHsgcmV0dXJuIG1TZW1hbnRpY0luZGV4OyB9Ci0KLSAgICBnbDo6TGlua2VkVW5p
Zm9ybSAqZ2V0VW5pZm9ybUJ5TG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0OwotICAgIGds
OjpMaW5rZWRVbmlmb3JtICpnZXRVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1l
KSBjb25zdDsKLSAgICBnbDo6VW5pZm9ybUJsb2NrICpnZXRVbmlmb3JtQmxvY2tCeUluZGV4KEdM
dWludCBibG9ja0luZGV4KSBjb25zdDsKLQotICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7Ci0gICAgR0x1aW50IGdldFVuaWZvcm1JbmRl
eChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7Ci0gICAgR0x1aW50IGdldFVuaWZvcm1C
bG9ja0luZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKLQotICAgIHZvaWQgc2V0
U2hhZGVyQXR0cmlidXRlKHNpemVfdCBpbmRleCwgY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmli
KTsKLSAgICB2b2lkIHNldFNoYWRlckF0dHJpYnV0ZShzaXplX3QgaW5kZXgsIEdMZW51bSB0eXBl
LCBHTGVudW0gcHJlY2lzaW9uLCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgR0xpbnQgc2l6ZSwg
aW50IGxvY2F0aW9uKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpOwotCiAgIHByb3RlY3Rl
ZDoKLSAgICBzdGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybSo+IG1Vbmlmb3JtczsKLSAgICBz
dGQ6OnZlY3RvcjxnbDo6VmFyaWFibGVMb2NhdGlvbj4gbVVuaWZvcm1JbmRleDsKLSAgICBzdGQ6
OnZlY3RvcjxnbDo6VW5pZm9ybUJsb2NrKj4gbVVuaWZvcm1CbG9ja3M7Ci0gICAgc3RkOjp2ZWN0
b3I8Z2w6OkxpbmtlZFZhcnlpbmc+IG1UcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzOwot
Ci0gICAgU2VtYW50aWNJbmRleEFycmF5IG1TZW1hbnRpY0luZGV4OwotCi0gIHByaXZhdGU6Ci0g
ICAgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gbVNoYWRlckF0dHJpYnV0ZXM7CisgICAgY29u
c3QgZ2w6OlByb2dyYW06OkRhdGEgJm1EYXRhOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsX21vY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
UHJvZ3JhbUltcGxfbW9jay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsX21vY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDc1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJvZ3JhbUltcGxfbW9jay5oOgorLy8g
ICBEZWZpbmVzIGEgbW9jayBvZiB0aGUgUHJvZ3JhbUltcGwgY2xhc3MuCisvLworCisjaWZuZGVm
IExJQkFOR0xFX1JFTkRFUkVSX1BST0dSQU1JTVBMTU9DS19IXworI2RlZmluZSBMSUJBTkdMRV9S
RU5ERVJFUl9QUk9HUkFNSU1QTE1PQ0tfSF8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgorCituYW1lc3BhY2Ug
cngKK3sKKworY2xhc3MgTW9ja1Byb2dyYW1JbXBsIDogcHVibGljIHJ4OjpQcm9ncmFtSW1wbAor
eworICBwdWJsaWM6CisgICAgTW9ja1Byb2dyYW1JbXBsKCkgOiBQcm9ncmFtSW1wbChnbDo6UHJv
Z3JhbTo6RGF0YSgpKSB7fQorICAgIHZpcnR1YWwgfk1vY2tQcm9ncmFtSW1wbCgpIHsgZGVzdHJv
eSgpOyB9CisKKyAgICBNT0NLX01FVEhPRDIobG9hZCwgTGlua1Jlc3VsdChnbDo6SW5mb0xvZyAm
LCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKikpOworICAgIE1PQ0tfTUVUSE9EMShzYXZlLCBnbDo6
RXJyb3IoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqKSk7CisgICAgTU9DS19NRVRIT0QxKHNldEJp
bmFyeVJldHJpZXZhYmxlSGludCwgdm9pZChib29sKSk7CisKKyAgICBNT0NLX01FVEhPRDIobGlu
aywgTGlua1Jlc3VsdChjb25zdCBnbDo6RGF0YSAmLCBnbDo6SW5mb0xvZyAmKSk7CisgICAgTU9D
S19NRVRIT0QyKHZhbGlkYXRlLCBHTGJvb2xlYW4oY29uc3QgZ2w6OkNhcHMgJiwgZ2w6OkluZm9M
b2cgKikpOworCisgICAgTU9DS19NRVRIT0QzKHNldFVuaWZvcm0xZnYsIHZvaWQoR0xpbnQsIEdM
c2l6ZWksIGNvbnN0IEdMZmxvYXQgKikpOworICAgIE1PQ0tfTUVUSE9EMyhzZXRVbmlmb3JtMmZ2
LCB2b2lkKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0ICopKTsKKyAgICBNT0NLX01FVEhP
RDMoc2V0VW5pZm9ybTNmdiwgdm9pZChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCAqKSk7
CisgICAgTU9DS19NRVRIT0QzKHNldFVuaWZvcm00ZnYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIGNv
bnN0IEdMZmxvYXQgKikpOworICAgIE1PQ0tfTUVUSE9EMyhzZXRVbmlmb3JtMWl2LCB2b2lkKEdM
aW50LCBHTHNpemVpLCBjb25zdCBHTGludCAqKSk7CisgICAgTU9DS19NRVRIT0QzKHNldFVuaWZv
cm0yaXYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50ICopKTsKKyAgICBNT0NLX01F
VEhPRDMoc2V0VW5pZm9ybTNpdiwgdm9pZChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQgKikp
OworICAgIE1PQ0tfTUVUSE9EMyhzZXRVbmlmb3JtNGl2LCB2b2lkKEdMaW50LCBHTHNpemVpLCBj
b25zdCBHTGludCAqKSk7CisgICAgTU9DS19NRVRIT0QzKHNldFVuaWZvcm0xdWl2LCB2b2lkKEdM
aW50LCBHTHNpemVpLCBjb25zdCBHTHVpbnQgKikpOworICAgIE1PQ0tfTUVUSE9EMyhzZXRVbmlm
b3JtMnVpdiwgdm9pZChHTGludCwgR0xzaXplaSwgY29uc3QgR0x1aW50ICopKTsKKyAgICBNT0NL
X01FVEhPRDMoc2V0VW5pZm9ybTN1aXYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMdWlu
dCAqKSk7CisgICAgTU9DS19NRVRIT0QzKHNldFVuaWZvcm00dWl2LCB2b2lkKEdMaW50LCBHTHNp
emVpLCBjb25zdCBHTHVpbnQgKikpOworCisgICAgTU9DS19NRVRIT0Q0KHNldFVuaWZvcm1NYXRy
aXgyZnYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCAqKSk7
CisgICAgTU9DS19NRVRIT0Q0KHNldFVuaWZvcm1NYXRyaXgzZnYsIHZvaWQoR0xpbnQsIEdMc2l6
ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCAqKSk7CisgICAgTU9DS19NRVRIT0Q0KHNldFVu
aWZvcm1NYXRyaXg0ZnYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xm
bG9hdCAqKSk7CisgICAgTU9DS19NRVRIT0Q0KHNldFVuaWZvcm1NYXRyaXgyeDNmdiwgdm9pZChH
TGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0ICopKTsKKyAgICBNT0NLX01F
VEhPRDQoc2V0VW5pZm9ybU1hdHJpeDN4MmZ2LCB2b2lkKEdMaW50LCBHTHNpemVpLCBHTGJvb2xl
YW4sIGNvbnN0IEdMZmxvYXQgKikpOworICAgIE1PQ0tfTUVUSE9ENChzZXRVbmlmb3JtTWF0cml4
Mng0ZnYsIHZvaWQoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCAqKSk7
CisgICAgTU9DS19NRVRIT0Q0KHNldFVuaWZvcm1NYXRyaXg0eDJmdiwgdm9pZChHTGludCwgR0xz
aXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0ICopKTsKKyAgICBNT0NLX01FVEhPRDQoc2V0
VW5pZm9ybU1hdHJpeDN4NGZ2LCB2b2lkKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0
IEdMZmxvYXQgKikpOworICAgIE1PQ0tfTUVUSE9ENChzZXRVbmlmb3JtTWF0cml4NHgzZnYsIHZv
aWQoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCAqKSk7CisKKyAgICBN
T0NLX01FVEhPRDIoc2V0VW5pZm9ybUJsb2NrQmluZGluZywgdm9pZChHTHVpbnQsIEdMdWludCkp
OworICAgIE1PQ0tfQ09OU1RfTUVUSE9EMihnZXRVbmlmb3JtQmxvY2tTaXplLCBib29sKGNvbnN0
IHN0ZDo6c3RyaW5nICYsIHNpemVfdCAqKSk7CisgICAgTU9DS19DT05TVF9NRVRIT0QyKGdldFVu
aWZvcm1CbG9ja01lbWJlckluZm8sIGJvb2woY29uc3Qgc3RkOjpzdHJpbmcgJiwgc2g6OkJsb2Nr
TWVtYmVySW5mbyAqKSk7CisKKyAgICBNT0NLX01FVEhPRDAoZGVzdHJveSwgdm9pZCgpKTsKK307
CisKK2lubGluZSA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tQcm9ncmFtSW1wbD4gKk1ha2VQcm9n
cmFtTW9jaygpCit7CisgICAgOjp0ZXN0aW5nOjpOaWNlTW9jazxNb2NrUHJvZ3JhbUltcGw+ICpw
cm9ncmFtSW1wbCA9IG5ldyA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tQcm9ncmFtSW1wbD4oKTsK
KyAgICAvLyBUT0RPKGptYWRpbGwpOiBhZGQgT05fQ0FMTFMgZm9yIHJldHVybmluZyBtZXRob2Rz
CisgICAgLy8gV2UgbXVzdCBtb2NrIHRoZSBkZXN0cnVjdG9yIHNpbmNlIE5pY2VNb2NrIGRvZXNu
J3Qgd29yayBmb3IgZGVzdHJ1Y3RvcnMuCisgICAgRVhQRUNUX0NBTEwoKnByb2dyYW1JbXBsLCBk
ZXN0cm95KCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKworICAgIHJldHVybiBw
cm9ncmFtSW1wbDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5H
TEVfUkVOREVSRVJfUFJPR1JBTUlNUExNT0NLX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUXVlcnlJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1F1ZXJ5SW1wbC5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvUXVlcnlJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEyIEBACiAK
ICAgICB2aXJ0dWFsIGdsOjpFcnJvciBiZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBlbmQoKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgcXVlcnlDb3VudGVyKCkgPSAwOwor
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFJlc3VsdChHTGludCAqcGFyYW1zKSA9IDA7CiAgICAg
dmlydHVhbCBnbDo6RXJyb3IgZ2V0UmVzdWx0KEdMdWludCAqcGFyYW1zKSA9IDA7Ci0gICAgdmly
dHVhbCBnbDo6RXJyb3IgaXNSZXN1bHRBdmFpbGFibGUoR0x1aW50ICphdmFpbGFibGUpID0gMDsK
KyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRSZXN1bHQoR0xpbnQ2NCAqcGFyYW1zKSA9IDA7Cisg
ICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0UmVzdWx0KEdMdWludDY0ICpwYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBpc1Jlc3VsdEF2YWlsYWJsZShib29sICphdmFpbGFibGUpID0g
MDsKIAogICAgIEdMZW51bSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbVR5cGU7ICB9CiAKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJi
dWZmZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZl
ckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQsMTcgKzE0LDIzIEBACiAjaW5jbHVkZSAibGli
QU5HTEUvRXJyb3IuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQu
aCIKIAorbmFtZXNwYWNlIGVnbAoreworY2xhc3MgSW1hZ2U7Cit9CisKIG5hbWVzcGFjZSByeAog
ewogCiBjbGFzcyBSZW5kZXJidWZmZXJJbXBsIDogcHVibGljIEZyYW1lYnVmZmVyQXR0YWNobWVu
dE9iamVjdEltcGwKIHsKICAgcHVibGljOgotICAgIFJlbmRlcmJ1ZmZlckltcGwoKTsKLSAgICB2
aXJ0dWFsIH5SZW5kZXJidWZmZXJJbXBsKCkgPSAwOworICAgIFJlbmRlcmJ1ZmZlckltcGwoKSB7
fQorICAgIHZpcnR1YWwgflJlbmRlcmJ1ZmZlckltcGwoKSB7fQogCiAgICAgdmlydHVhbCBnbDo6
RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNh
bXBsZShzaXplX3Qgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTdG9yYWdlRUdM
SW1hZ2VUYXJnZXQoZWdsOjpJbWFnZSAqaW1hZ2UpID0gMDsKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZmZXJJbXBs
X21vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbF9tb2NrLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1w
bF9tb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFJlbmRlcmJ1ZmZlckltcGxfbW9jay5oOiBEZWZpbmVzIGEgbW9jayBvZiB0aGUgUmVuZGVy
YnVmZmVySW1wbCBjbGFzcy4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9SRU5ERVJCVUZG
RVJJTVBMTU9DS19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9SRU5ERVJCVUZGRVJJTVBM
TU9DS19IXworCisjaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKKworI2luY2x1ZGUgImxpYkFOR0xF
L0ltYWdlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5o
IgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgTW9ja1JlbmRlcmJ1ZmZlckltcGwgOiBwdWJs
aWMgUmVuZGVyYnVmZmVySW1wbAoreworICBwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja1JlbmRl
cmJ1ZmZlckltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQorICAgIE1PQ0tfTUVUSE9EMyhzZXRTdG9y
YWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIHNpemVfdCkpOworICAgIE1PQ0tfTUVUSE9E
NChzZXRTdG9yYWdlTXVsdGlzYW1wbGUsIGdsOjpFcnJvcihzaXplX3QsIEdMZW51bSwgc2l6ZV90
LCBzaXplX3QpKTsKKyAgICBNT0NLX01FVEhPRDEoc2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0LCBn
bDo6RXJyb3IoZWdsOjpJbWFnZSAqKSk7CisKKyAgICBNT0NLX01FVEhPRDIoZ2V0QXR0YWNobWVu
dFJlbmRlclRhcmdldCwgZ2w6OkVycm9yKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6
OlRhcmdldCAmLCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKiopKTsKKworICAg
IE1PQ0tfTUVUSE9EMChkZXN0cnVjdG9yLCB2b2lkKCkpOworfTsKKworfQorCisjZW5kaWYgLy8g
TElCQU5HTEVfUkVOREVSRVJfUkVOREVSQlVGRkVSSU1QTE1PQ0tfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Jl
bmRlcmVyLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQs
MTAgKzE0LDcgQEAKIAogbmFtZXNwYWNlIHJ4CiB7Ci0KLVJlbmRlcmVyOjpSZW5kZXJlcigpCi0g
ICAgOiBtQ2Fwc0luaXRpYWxpemVkKGZhbHNlKSwKLSAgICAgIG1Xb3JrYXJvdW5kc0luaXRpYWxp
emVkKGZhbHNlKQorUmVuZGVyZXI6OlJlbmRlcmVyKCkgOiBtQ2Fwc0luaXRpYWxpemVkKGZhbHNl
KQogewogfQogCkBAIC0yNSw0OCArMjIsNDEgQEAKIHsKIH0KIAotY29uc3QgZ2w6OkNhcHMgJlJl
bmRlcmVyOjpnZXRSZW5kZXJlckNhcHMoKSBjb25zdAordm9pZCBSZW5kZXJlcjo6ZW5zdXJlQ2Fw
c0luaXRpYWxpemVkKCkgY29uc3QKIHsKICAgICBpZiAoIW1DYXBzSW5pdGlhbGl6ZWQpCiAgICAg
ewotICAgICAgICBnZW5lcmF0ZUNhcHMoJm1DYXBzLCAmbVRleHR1cmVDYXBzLCAmbUV4dGVuc2lv
bnMpOworICAgICAgICBnZW5lcmF0ZUNhcHMoJm1DYXBzLCAmbVRleHR1cmVDYXBzLCAmbUV4dGVu
c2lvbnMsICZtTGltaXRhdGlvbnMpOwogICAgICAgICBtQ2Fwc0luaXRpYWxpemVkID0gdHJ1ZTsK
ICAgICB9Cit9CiAKK2NvbnN0IGdsOjpDYXBzICZSZW5kZXJlcjo6Z2V0UmVuZGVyZXJDYXBzKCkg
Y29uc3QKK3sKKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKKwogICAgIHJldHVybiBtQ2Fw
czsKIH0KIAogY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZSZW5kZXJlcjo6Z2V0UmVuZGVyZXJU
ZXh0dXJlQ2FwcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtQ2Fwc0luaXRpYWxpemVkKQotICAgIHsK
LSAgICAgICAgZ2VuZXJhdGVDYXBzKCZtQ2FwcywgJm1UZXh0dXJlQ2FwcywgJm1FeHRlbnNpb25z
KTsKLSAgICAgICAgbUNhcHNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQorICAgIGVuc3VyZUNh
cHNJbml0aWFsaXplZCgpOwogCiAgICAgcmV0dXJuIG1UZXh0dXJlQ2FwczsKIH0KIAogY29uc3Qg
Z2w6OkV4dGVuc2lvbnMgJlJlbmRlcmVyOjpnZXRSZW5kZXJlckV4dGVuc2lvbnMoKSBjb25zdAog
ewotICAgIGlmICghbUNhcHNJbml0aWFsaXplZCkKLSAgICB7Ci0gICAgICAgIGdlbmVyYXRlQ2Fw
cygmbUNhcHMsICZtVGV4dHVyZUNhcHMsICZtRXh0ZW5zaW9ucyk7Ci0gICAgICAgIG1DYXBzSW5p
dGlhbGl6ZWQgPSB0cnVlOwotICAgIH0KKyAgICBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKTsKIAog
ICAgIHJldHVybiBtRXh0ZW5zaW9uczsKIH0KIAotY29uc3QgV29ya2Fyb3VuZHMgJlJlbmRlcmVy
OjpnZXRXb3JrYXJvdW5kcygpIGNvbnN0Citjb25zdCBnbDo6TGltaXRhdGlvbnMgJlJlbmRlcmVy
OjpnZXRSZW5kZXJlckxpbWl0YXRpb25zKCkgY29uc3QKIHsKLSAgICBpZiAoIW1Xb3JrYXJvdW5k
c0luaXRpYWxpemVkKQotICAgIHsKLSAgICAgICAgbVdvcmthcm91bmRzID0gZ2VuZXJhdGVXb3Jr
YXJvdW5kcygpOwotICAgICAgICBtV29ya2Fyb3VuZHNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAg
fQorICAgIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpOwogCi0gICAgcmV0dXJuIG1Xb3JrYXJvdW5k
czsKKyAgICByZXR1cm4gbUxpbWl0YXRpb25zOwogfQogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIu
aAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzLDEwICsxMywxMCBA
QAogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
U3RhdGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Vbmlmb3JtLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltcGxGYWN0b3J5
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvV29ya2Fyb3VuZHMuaCIKICNpbmNsdWRl
ICJjb21tb24vbWF0aHV0aWwuaCIKIAogI2luY2x1ZGUgPHN0ZGludC5oPgpAQCAtMzAsMTYgKzMw
LDExIEBACiBjbGFzcyBTdXJmYWNlOwogfQogCi1uYW1lc3BhY2UgZ2wKLXsKLWNsYXNzIEJ1ZmZl
cjsKLXN0cnVjdCBEYXRhOwotfQotCiBuYW1lc3BhY2UgcngKIHsKIHN0cnVjdCBUcmFuc2xhdGVk
SW5kZXhEYXRhOwotc3RydWN0IFdvcmthcm91bmRzOworc3RydWN0IFNvdXJjZUluZGV4RGF0YTsK
K3N0cnVjdCBXb3JrYXJvdW5kc0QzRDsKIGNsYXNzIERpc3BsYXlJbXBsOwogCiBjbGFzcyBSZW5k
ZXJlciA6IHB1YmxpYyBJbXBsRmFjdG9yeQpAQCAtNTEsMTIgKzQ2LDM1IEBACiAgICAgdmlydHVh
bCBnbDo6RXJyb3IgZmx1c2goKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZmluaXNoKCkg
PSAwOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd0FycmF5cyhjb25zdCBnbDo6RGF0YSAm
ZGF0YSwgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpID0gMDsKLSAgICB2aXJ0
dWFsIGdsOjpFcnJvciBkcmF3RWxlbWVudHMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBt
b2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmFuZ2VVSSAmaW5kZXhSYW5n
ZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdBcnJheXMoY29uc3QgZ2w6OkRhdGEg
JmRhdGEsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkgPSAwOworICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VDb3VudCkgPSAwOwogCisgICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzKGNv
bnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2Ug
JmluZGV4UmFuZ2UpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbnN0
YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFu
Z2UgJmluZGV4UmFuZ2UpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3UmFuZ2VFbGVt
ZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgPSAwOworCiAgICAgLy8gbG9z
dCBkZXZpY2UKICAgICAvL1RPRE8oam1hZGlsbCk6IGludmVzdGlnYXRlIGlmIHRoaXMgc3R1ZmYg
aXMgbmVjZXNzYXJ5IGluIEdMCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeURldmljZUxvc3QoKSA9
IDA7CkBAIC02NCwyNyArODIsMzkgQEAKICAgICB2aXJ0dWFsIGJvb2wgdGVzdERldmljZUxvc3Qo
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHRlc3REZXZpY2VSZXNldHRhYmxlKCkgPSAwOwogCi0g
ICAgdmlydHVhbCBWZW5kb3JJRCBnZXRWZW5kb3JJZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0
ZDo6c3RyaW5nIGdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1h
cmtlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5n
dGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1h
cmtlcigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgPSAwOworCisg
ICAgLy8gRGlzam9pbnQgdGltZXIgcXVlcmllcworICAgIHZpcnR1YWwgR0xpbnQgZ2V0R1BVRGlz
am9pbnQoKSA9IDA7CisgICAgdmlydHVhbCBHTGludDY0IGdldFRpbWVzdGFtcCgpID0gMDsKKwor
ICAgIC8vIENvbnRleHQgc3dpdGNoaW5nCisgICAgdmlydHVhbCB2b2lkIG9uTWFrZUN1cnJlbnQo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEpID0gMDsKKwogICAgIC8vIFJlbmRlcmVyIGNhcGFiaWxpdGll
cwogICAgIGNvbnN0IGdsOjpDYXBzICZnZXRSZW5kZXJlckNhcHMoKSBjb25zdDsKICAgICBjb25z
dCBnbDo6VGV4dHVyZUNhcHNNYXAgJmdldFJlbmRlcmVyVGV4dHVyZUNhcHMoKSBjb25zdDsKICAg
ICBjb25zdCBnbDo6RXh0ZW5zaW9ucyAmZ2V0UmVuZGVyZXJFeHRlbnNpb25zKCkgY29uc3Q7Ci0g
ICAgY29uc3QgV29ya2Fyb3VuZHMgJmdldFdvcmthcm91bmRzKCkgY29uc3Q7CisgICAgY29uc3Qg
Z2w6OkxpbWl0YXRpb25zICZnZXRSZW5kZXJlckxpbWl0YXRpb25zKCkgY29uc3Q7CiAKICAgcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBzICpvdXRDYXBzLCBn
bDo6VGV4dHVyZUNhcHNNYXAqIG91dFRleHR1cmVDYXBzLCBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0
ZW5zaW9ucykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgV29ya2Fyb3VuZHMgZ2VuZXJhdGVXb3Jr
YXJvdW5kcygpIGNvbnN0ID0gMDsKKyAgICB2b2lkIGVuc3VyZUNhcHNJbml0aWFsaXplZCgpIGNv
bnN0OworICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsIGds
OjpUZXh0dXJlQ2Fwc01hcCogb3V0VGV4dHVyZUNhcHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpMaW1pdGF0aW9ucyAqb3V0TGltaXRhdGlvbnMpIGNvbnN0ID0gMDsK
IAogICAgIG11dGFibGUgYm9vbCBtQ2Fwc0luaXRpYWxpemVkOwogICAgIG11dGFibGUgZ2w6OkNh
cHMgbUNhcHM7CiAgICAgbXV0YWJsZSBnbDo6VGV4dHVyZUNhcHNNYXAgbVRleHR1cmVDYXBzOwog
ICAgIG11dGFibGUgZ2w6OkV4dGVuc2lvbnMgbUV4dGVuc2lvbnM7Ci0KLSAgICBtdXRhYmxlIGJv
b2wgbVdvcmthcm91bmRzSW5pdGlhbGl6ZWQ7Ci0gICAgbXV0YWJsZSBXb3JrYXJvdW5kcyBtV29y
a2Fyb3VuZHM7CisgICAgbXV0YWJsZSBnbDo6TGltaXRhdGlvbnMgbUxpbWl0YXRpb25zOwogfTsK
IAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1NhbXBsZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1NhbXBsZXJJbXBsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU2FtcGxlckltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTYW1wbGVySW1wbC5o
OiBEZWZpbmVzIHRoZSBhYnN0cmFjdCByeDo6U2FtcGxlckltcGwgY2xhc3MuCisKKyNpZm5kZWYg
TElCQU5HTEVfUkVOREVSRVJfU0FNUExFUklNUExfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVS
RVJfU0FNUExFUklNUExfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25h
bWVzcGFjZSByeAoreworCitjbGFzcyBTYW1wbGVySW1wbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29w
eWFibGUKK3sKKyAgcHVibGljOgorICAgIFNhbXBsZXJJbXBsKCkge30KKyAgICB2aXJ0dWFsIH5T
YW1wbGVySW1wbCgpIHt9Cit9OworfQorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1NB
TVBMRVJJTVBMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvU2hhZGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgJKHJldmlzaW9uIDE5OTY4MikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw2IEBACiAjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX1NIQURFUklNUExfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfU0hBREVSSU1Q
TF9IXwogCi0jaW5jbHVkZSA8dmVjdG9yPgotCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9TaGFkZXIuaCIKIApAQCAtMjAsMzYgKzE4LDIxIEBACiBj
bGFzcyBTaGFkZXJJbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBT
aGFkZXJJbXBsKCkgeyB9CisgICAgU2hhZGVySW1wbChjb25zdCBnbDo6U2hhZGVyOjpEYXRhICZk
YXRhKSA6IG1EYXRhKGRhdGEpIHt9CiAgICAgdmlydHVhbCB+U2hhZGVySW1wbCgpIHsgfQogCi0g
ICAgdmlydHVhbCBib29sIGNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNvdXJjZSkgPSAwOworICAgIC8vIFJldHVybnMgYWRkaXRpb25hbCBTaENvbXBp
bGUgb3B0aW9ucy4KKyAgICB2aXJ0dWFsIGludCBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9u
cyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICpzb3VyY2VQYXRoKSA9IDA7Cisg
ICAgLy8gUmV0dXJucyBzdWNjZXNzIGZvciBjb21waWxpbmcgb24gdGhlIGRyaXZlci4gUmV0dXJu
cyBzdWNjZXNzLgorICAgIHZpcnR1YWwgYm9vbCBwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29t
cGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmluZyAqaW5mb0xvZykgPSAwOworCiAgICAgdmlydHVh
bCBzdGQ6OnN0cmluZyBnZXREZWJ1Z0luZm8oKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IHN0ZDo6c3RyaW5nICZnZXRJbmZvTG9nKCkgY29uc3QgeyByZXR1cm4gbUluZm9Mb2c7IH0K
LSAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRUcmFuc2xhdGVkU291cmNlKCkgY29u
c3QgeyByZXR1cm4gbVRyYW5zbGF0ZWRTb3VyY2U7IH0KKyAgICBjb25zdCBnbDo6U2hhZGVyOjpE
YXRhICZnZXREYXRhKCkgY29uc3QgeyByZXR1cm4gbURhdGE7IH0KIAotICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPGdsOjpQYWNrZWRWYXJ5aW5nPiAmZ2V0VmFyeWluZ3MoKSBjb25zdCB7IHJldHVybiBt
VmFyeWluZ3M7IH0KLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmdldFVuaWZv
cm1zKCkgY29uc3QgeyByZXR1cm4gbVVuaWZvcm1zOyB9Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OkludGVyZmFjZUJsb2NrPiAmZ2V0SW50ZXJmYWNlQmxvY2tzKCkgY29uc3QgIHsgcmV0dXJu
IG1JbnRlcmZhY2VCbG9ja3M7IH0KLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRl
PiAmZ2V0QWN0aXZlQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVBdHRyaWJ1dGVz
OyB9Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdldEFjdGl2ZU91dHB1
dFZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1BY3RpdmVPdXRwdXRWYXJpYWJsZXM7IH0KLQot
ICAgIHN0ZDo6dmVjdG9yPGdsOjpQYWNrZWRWYXJ5aW5nPiAmZ2V0VmFyeWluZ3MoKSB7IHJldHVy
biBtVmFyeWluZ3M7IH0KLSAgICBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmdldFVuaWZvcm1z
KCkgeyByZXR1cm4gbVVuaWZvcm1zOyB9Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJs
b2NrPiAmZ2V0SW50ZXJmYWNlQmxvY2tzKCkgeyByZXR1cm4gbUludGVyZmFjZUJsb2NrczsgfQot
ICAgIHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZnZXRBY3RpdmVBdHRyaWJ1dGVzKCkgeyBy
ZXR1cm4gbUFjdGl2ZUF0dHJpYnV0ZXM7IH0KLSAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRl
PiAmZ2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCkgeyByZXR1cm4gbUFjdGl2ZU91dHB1dFZhcmlh
YmxlczsgfQotCiAgIHByb3RlY3RlZDoKLSAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKLSAgICBz
dGQ6OnN0cmluZyBtVHJhbnNsYXRlZFNvdXJjZTsKLQotICAgIHN0ZDo6dmVjdG9yPGdsOjpQYWNr
ZWRWYXJ5aW5nPiBtVmFyeWluZ3M7Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+IG1Vbmlm
b3JtczsKLSAgICBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+IG1JbnRlcmZhY2VCbG9j
a3M7Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gbUFjdGl2ZUF0dHJpYnV0ZXM7Ci0g
ICAgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gbUFjdGl2ZU91dHB1dFZhcmlhYmxlczsKKyAg
ICBjb25zdCBnbDo6U2hhZGVyOjpEYXRhICZtRGF0YTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N0
cmVhbUltcGwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwy
NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN0cmVhbUltcGwuaDogRGVmaW5lcyB0aGUgYWJzdHJh
Y3Qgcng6OlN0cmVhbUltcGwgY2xhc3MuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfU1RS
RUFNSU1QTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9TVFJFQU1JTVBMX0hfCisKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3Mg
U3RyZWFtSW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgZXhwbGlj
aXQgU3RyZWFtSW1wbCgpIHt9CisgICAgdmlydHVhbCB+U3RyZWFtSW1wbCgpIHt9Cit9OworfSAg
Ly8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfU1RSRUFNSU1Q
TF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1N1cmZhY2VJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1l
bnQuaCIKIAogbmFtZXNwYWNlIGVnbApAQCAtMjIsNiArMjMsOCBAQAogbmFtZXNwYWNlIHJ4CiB7
CiAKK2NsYXNzIEZyYW1lYnVmZmVySW1wbDsKKwogY2xhc3MgU3VyZmFjZUltcGwgOiBwdWJsaWMg
RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbAogewogICBwdWJsaWM6CkBAIC0yOSwxMCAr
MzIsMTEgQEAKICAgICB2aXJ0dWFsIH5TdXJmYWNlSW1wbCgpOwogCiAgICAgdmlydHVhbCBlZ2w6
OkVycm9yIGluaXRpYWxpemUoKSA9IDA7CisgICAgdmlydHVhbCBGcmFtZWJ1ZmZlckltcGwgKmNy
ZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEp
ID0gMDsKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3Igc3dhcCgpID0gMDsKICAgICB2aXJ0dWFsIGVn
bDo6RXJyb3IgcG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwg
RUdMaW50IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQ
b2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSA9IDA7Ci0gICAgdmly
dHVhbCBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShFR0xpbnQgYnVmZmVyKSA9IDA7CisgICAgdmly
dHVhbCBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50
IGJ1ZmZlcikgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciByZWxlYXNlVGV4SW1hZ2UoRUdM
aW50IGJ1ZmZlcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50
IGludGVydmFsKSA9IDA7CiAKQEAgLTQxLDYgKzQ1LDcgQEAKICAgICB2aXJ0dWFsIEVHTGludCBn
ZXRIZWlnaHQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIEVHTGludCBpc1Bvc3RTdWJCdWZm
ZXJTdXBwb3J0ZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFR0xpbnQgZ2V0U3dhcEJlaGF2
aW9yKCkgY29uc3QgPSAwOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9UZXh0dXJlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBACiBu
YW1lc3BhY2UgZWdsCiB7CiBjbGFzcyBTdXJmYWNlOworY2xhc3MgSW1hZ2U7CiB9CiAKIG5hbWVz
cGFjZSBnbApAQCAtMzAsNyArMzEsNyBAQAogc3RydWN0IFJlY3RhbmdsZTsKIGNsYXNzIEZyYW1l
YnVmZmVyOwogc3RydWN0IFBpeGVsVW5wYWNrU3RhdGU7Ci1zdHJ1Y3QgU2FtcGxlclN0YXRlOwor
c3RydWN0IFRleHR1cmVTdGF0ZTsKIH0KIAogbmFtZXNwYWNlIHJ4CkBAIC01MCw5ICs1MSw5IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSA9IDA7CiAKICAgICB2aXJ0dWFs
IGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVs
LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKSA9IDA7CiAgICAg
dmlydHVhbCBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNp
emVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgPSAwOwog
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xlbnVtIGludGVybmFsRm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXIgKnNvdXJjZSkgPSAwOwpAQCAtNjEsOCArNjIsMTAgQEAKIAogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkgPSAwOwogCi0gICAgdmlydHVhbCBn
bDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJT
dGF0ZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51
bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKSA9IDA7CiAKKyAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKSA9
IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgYmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKSA9IDA7CiB9OwpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJ
bXBsX21vY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsX21vY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGV4
dHVyZUltcGxfbW9jay5oOiBEZWZpbmVzIGEgbW9jayBvZiB0aGUgVGV4dHVyZUltcGwgY2xhc3Mu
CisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVEVYVFVSRUlNUExNT0NLX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX1RFWFRVUkVJTVBMTU9DS19IXworCisjaW5jbHVkZSAiZ21vY2sv
Z21vY2suaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgiCisK
K25hbWVzcGFjZSByeAoreworCitjbGFzcyBNb2NrVGV4dHVyZUltcGwgOiBwdWJsaWMgVGV4dHVy
ZUltcGwKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tUZXh0dXJlSW1wbCgpIHsgZGVz
dHJ1Y3RvcigpOyB9CisgICAgTU9DS19NRVRIT0QxKHNldFVzYWdlLCB2b2lkKEdMZW51bSkpOwor
ICAgIE1PQ0tfTUVUSE9EOChzZXRJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBHTGVu
dW0sIGNvbnN0IGdsOjpFeHRlbnRzICYsIEdMZW51bSwgR0xlbnVtLCBjb25zdCBnbDo6UGl4ZWxV
bnBhY2tTdGF0ZSAmLCBjb25zdCB1aW50OF90ICopKTsKKyAgICBNT0NLX01FVEhPRDcoc2V0U3Vi
SW1hZ2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgY29uc3QgZ2w6OkJveCAmLCBHTGVudW0s
IEdMZW51bSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwgY29uc3QgdWludDhfdCAqKSk7
CisgICAgTU9DS19NRVRIT0Q3KHNldENvbXByZXNzZWRJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwg
c2l6ZV90LCBHTGVudW0sIGNvbnN0IGdsOjpFeHRlbnRzICYsIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICYsIHNpemVfdCwgY29uc3QgdWludDhfdCAqKSk7CisgICAgTU9DS19NRVRIT0Q3KHNl
dENvbXByZXNzZWRTdWJJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBjb25zdCBnbDo6
Qm94ICYsIEdMZW51bSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwgc2l6ZV90LCBjb25z
dCB1aW50OF90ICopKTsKKyAgICBNT0NLX01FVEhPRDUoY29weUltYWdlLCBnbDo6RXJyb3IoR0xl
bnVtLCBzaXplX3QsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwgR0xlbnVtLCBjb25zdCBnbDo6RnJh
bWVidWZmZXIgKikpOworICAgIE1PQ0tfTUVUSE9ENShjb3B5U3ViSW1hZ2UsIGdsOjpFcnJvcihH
TGVudW0sIHNpemVfdCwgY29uc3QgZ2w6Ok9mZnNldCAmLCBjb25zdCBnbDo6UmVjdGFuZ2xlICYs
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqKSk7CisgICAgTU9DS19NRVRIT0Q0KHNldFN0b3JhZ2Us
IGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgR0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAmKSk7
CisgICAgTU9DS19NRVRIT0QyKHNldEVHTEltYWdlVGFyZ2V0LCBnbDo6RXJyb3IoR0xlbnVtLCBl
Z2w6OkltYWdlICopKTsKKyAgICBNT0NLX01FVEhPRDEoZ2VuZXJhdGVNaXBtYXBzLCBnbDo6RXJy
b3IoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmKSk7CisgICAgTU9DS19NRVRIT0QxKGJpbmRUZXhJ
bWFnZSwgdm9pZChlZ2w6OlN1cmZhY2UgKikpOworICAgIE1PQ0tfTUVUSE9EMChyZWxlYXNlVGV4
SW1hZ2UsIHZvaWQodm9pZCkpOworCisgICAgTU9DS19NRVRIT0QyKGdldEF0dGFjaG1lbnRSZW5k
ZXJUYXJnZXQsIGdsOjpFcnJvcihjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJn
ZXQgJiwgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqKSk7CisKKyAgICBNT0NL
X01FVEhPRDAoZGVzdHJ1Y3Rvciwgdm9pZCgpKTsKK307CisKK30KKworI2VuZGlmIC8vIExJQkFO
R0xFX1JFTkRFUkVSX1RFWFRVUkVJTVBMTU9DS19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbF9tb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbF9tb2NrLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVk
YmFja0ltcGxfbW9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiBjbGFzcyBN
b2NrVHJhbnNmb3JtRmVlZGJhY2tJbXBsIDogcHVibGljIFRyYW5zZm9ybUZlZWRiYWNrSW1wbAog
ewogICBwdWJsaWM6Ci0gICAgfk1vY2tUcmFuc2Zvcm1GZWVkYmFja0ltcGwoKSBvdmVycmlkZSB7
IGRlc3RydWN0b3IoKTsgfQorICAgIH5Nb2NrVHJhbnNmb3JtRmVlZGJhY2tJbXBsKCkgeyBkZXN0
cnVjdG9yKCk7IH0KIAogICAgIE1PQ0tfTUVUSE9EMShiZWdpbiwgdm9pZChHTGVudW0gcHJpbWl0
aXZlTW9kZSkpOwogICAgIE1PQ0tfTUVUSE9EMChlbmQsIHZvaWQoKSk7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1ZlcnRleEFycmF5SW1wbC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvVmVy
dGV4QXR0cmlidXRlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKIAogbmFt
ZXNwYWNlIHJ4CiB7CkBAIC0xOSwxMiArMTksMTEgQEAKIGNsYXNzIFZlcnRleEFycmF5SW1wbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CisgICAgVmVydGV4QXJyYXlJbXBsKGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkgOiBtRGF0YShkYXRhKSB7IH0KICAgICB2
aXJ0dWFsIH5WZXJ0ZXhBcnJheUltcGwoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRFbGVt
ZW50QXJyYXlCdWZmZXIoY29uc3QgZ2w6OkJ1ZmZlciAqYnVmZmVyKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldEF0dHJpYnV0ZShzaXplX3QgaWR4LCBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZURpdmlzb3Ioc2l6ZV90
IGlkeCwgR0x1aW50IGRpdmlzb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlQXR0cmli
dXRlKHNpemVfdCBpZHgsIGJvb2wgZW5hYmxlZFN0YXRlKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHN5bmNTdGF0ZShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSB7
fQorICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZtRGF0YTsK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvQnVmZmVyRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5jcHAJKHJldmlzaW9uIDE5
OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvQnVmZmVyRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDExIEBACiAKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNELmgiCiAKKyNpbmNsdWRlICJjb21t
b24vbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4QnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9SZW5kZXJlckQzRC5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTE5LDI5ICsyMiw2MiBA
QAogQnVmZmVyRDNEOjpCdWZmZXJEM0QoQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKICAgICA6
IEJ1ZmZlckltcGwoKSwKICAgICAgIG1GYWN0b3J5KGZhY3RvcnkpLAotICAgICAgbVN0YXRpY1Zl
cnRleEJ1ZmZlcihudWxscHRyKSwKICAgICAgIG1TdGF0aWNJbmRleEJ1ZmZlcihudWxscHRyKSwK
LSAgICAgIG1Vbm1vZGlmaWVkRGF0YVVzZSgwKQorICAgICAgbVN0YXRpY0J1ZmZlckNhY2hlVG90
YWxTaXplKDApLAorICAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlck91dE9mRGF0ZShmYWxzZSksCisg
ICAgICBtVW5tb2RpZmllZERhdGFVc2UoMCksCisgICAgICBtVXNhZ2UoRDNEQnVmZmVyVXNhZ2U6
OlNUQVRJQykKIHsKICAgICB1cGRhdGVTZXJpYWwoKTsKIH0KIAogQnVmZmVyRDNEOjp+QnVmZmVy
RDNEKCkKIHsKLSAgICBTYWZlRGVsZXRlKG1TdGF0aWNWZXJ0ZXhCdWZmZXIpOwogICAgIFNhZmVE
ZWxldGUobVN0YXRpY0luZGV4QnVmZmVyKTsKIH0KIAordm9pZCBCdWZmZXJEM0Q6OmVtcHR5U3Rh
dGljQnVmZmVyQ2FjaGUoKQoreworICAgIG1TdGF0aWNWZXJ0ZXhCdWZmZXJzLmNsZWFyKCk7Cisg
ICAgbVN0YXRpY0J1ZmZlckNhY2hlVG90YWxTaXplID0gMDsKK30KKwogdm9pZCBCdWZmZXJEM0Q6
OnVwZGF0ZVNlcmlhbCgpCiB7CiAgICAgbVNlcmlhbCA9IG1OZXh0U2VyaWFsKys7CiB9CiAKK3Zv
aWQgQnVmZmVyRDNEOjp1cGRhdGVEM0RCdWZmZXJVc2FnZShHTGVudW0gdXNhZ2UpCit7CisgICAg
c3dpdGNoICh1c2FnZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfU1RBVElDX0RSQVc6CisgICAg
ICAgIGNhc2UgR0xfU1RBVElDX1JFQUQ6CisgICAgICAgIGNhc2UgR0xfU1RBVElDX0NPUFk6Cisg
ICAgICAgICAgICBtVXNhZ2UgPSBEM0RCdWZmZXJVc2FnZTo6U1RBVElDOworICAgICAgICAgICAg
aW5pdGlhbGl6ZVN0YXRpY0RhdGEoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgR0xfU1RSRUFNX0RSQVc6CisgICAgICAgIGNhc2UgR0xfU1RSRUFNX1JFQUQ6CisgICAgICAg
IGNhc2UgR0xfU1RSRUFNX0NPUFk6CisgICAgICAgIGNhc2UgR0xfRFlOQU1JQ19SRUFEOgorICAg
ICAgICBjYXNlIEdMX0RZTkFNSUNfQ09QWToKKyAgICAgICAgY2FzZSBHTF9EWU5BTUlDX0RSQVc6
CisgICAgICAgICAgICBtVXNhZ2UgPSBEM0RCdWZmZXJVc2FnZTo6RFlOQU1JQzsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICB9Cit9CisKIHZvaWQgQnVmZmVyRDNEOjppbml0aWFsaXplU3RhdGljRGF0YSgpCiB7Ci0g
ICAgaWYgKCFtU3RhdGljVmVydGV4QnVmZmVyKQorICAgIGlmIChtU3RhdGljVmVydGV4QnVmZmVy
cy5lbXB0eSgpKQogICAgIHsKLSAgICAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlciA9IG5ldyBTdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UobUZhY3RvcnkpOworICAgICAgICBhdXRvIG5ld1N0YXRp
Y0J1ZmZlciA9IG5ldyBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UobUZhY3RvcnkpOworICAg
ICAgICBtU3RhdGljVmVydGV4QnVmZmVycy5wdXNoX2JhY2soCisgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlPihuZXdTdGF0aWNCdWZmZXIpKTsK
ICAgICB9CiAgICAgaWYgKCFtU3RhdGljSW5kZXhCdWZmZXIpCiAgICAgewpAQCAtNDksMTQgKzg1
LDczIEBACiAgICAgfQogfQogCitTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqQnVmZmVyRDNE
OjpnZXRTdGF0aWNJbmRleEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1TdGF0aWNJbmRleEJ1ZmZl
cjsKK30KKworU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXJEM0Q6OmdldFN0YXRp
Y1ZlcnRleEJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpCit7Cisg
ICAgaWYgKG1TdGF0aWNWZXJ0ZXhCdWZmZXJzLmVtcHR5KCkpCisgICAgeworICAgICAgICAvLyBF
YXJseSBvdXQgaWYgdGhlcmUgYXJlbid0IGFueSBzdGF0aWMgYnVmZmVycyBhdCBhbGwKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gRWFybHkgb3V0LCB0aGUgYXR0cmli
dXRlIGNhbiBiZSBhZGRlZCB0byBtU3RhdGljVmVydGV4QnVmZmVyLgorICAgIGlmIChtU3RhdGlj
VmVydGV4QnVmZmVycy5zaXplKCkgPT0gMSAmJiBtU3RhdGljVmVydGV4QnVmZmVyc1swXS0+ZW1w
dHkoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBtU3RhdGljVmVydGV4QnVmZmVyc1swXS5nZXQo
KTsKKyAgICB9CisKKyAgICAvLyBDYWNoZSBzaXplIGxpbWl0aW5nOiB0cmFjayB0aGUgdG90YWwg
YWxsb2NhdGVkIGJ1ZmZlciBzaXplcy4KKyAgICBzaXplX3QgY3VycmVudFRvdGFsU2l6ZSA9IDA7
CisKKyAgICAvLyBBdCB0aGlzIHBvaW50LCBzZWUgaWYgYW55IG9mIHRoZSBleGlzdGluZyBzdGF0
aWMgYnVmZmVycyBjb250YWlucyB0aGUgYXR0cmlidXRlIGRhdGEKKyAgICAvLyBJZiB0aGVyZSBp
cyBhIGNhY2hlZCBzdGF0aWMgYnVmZmVyIHRoYXQgYWxyZWFkeSBjb250YWlucyB0aGUgYXR0cmli
dXRlLCB0aGVuIHJldHVybiBpdAorICAgIGZvciAoY29uc3QgYXV0byAmc3RhdGljQnVmZmVyIDog
bVN0YXRpY1ZlcnRleEJ1ZmZlcnMpCisgICAgeworICAgICAgICBpZiAoc3RhdGljQnVmZmVyLT5t
YXRjaGVzQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBzdGF0aWNCdWZmZXIuZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBjdXJyZW50VG90YWxT
aXplICs9IHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpOworICAgIH0KKworICAgIC8vIENh
Y2hlIHNpemUgbGltaXRpbmc6IENsZWFuLXVwIHRocmVzaG9sZCBpcyBmb3VyIHRpbWVzIHRoZSBi
YXNlIGJ1ZmZlciBzaXplLCB3aXRoIGEgbWluaW11bS4KKyAgICBBU1NFUlQoSXNVbnNpZ25lZE11
bHRpcGxpY2F0aW9uU2FmZShnZXRTaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4oNHUpKSk7Cisg
ICAgc2l6ZV90IHNpemVUaHJlc2hvbGQgPSBzdGQ6Om1heChnZXRTaXplKCkgKiA0dSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PigweDEwMDB1KSk7CisKKyAgICAvLyBJZiB3ZSdyZSBwYXN0IHRoZSB0aHJl
c2hvbGQsIGNsZWFyIHRoZSBidWZmZXIgY2FjaGUuIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVsZWFz
ZSBidWZmZXJzCisgICAgLy8gdGhhdCBhcmUgY3VycmVubHkgYm91bmQsIGFuZCBpbiBhbiBlZGdl
IGNhc2UgY2FuIGV2ZW4gdHJhbnNsYXRlIHRoZSBzYW1lIGF0dHJpYnV0ZSB0d2ljZQorICAgIC8v
IGluIHRoZSBzYW1lIGRyYXcgY2FsbC4gSXQgd2lsbCBub3QgZGVsZXRlIGN1cnJlbnRseSBib3Vu
ZCBidWZmZXJzLCBob3dldmVyLCBiZWNhdXNlIHRoZXkKKyAgICAvLyBhcmUgcmVmIGNvdW50ZWQu
CisgICAgaWYgKGN1cnJlbnRUb3RhbFNpemUgPiBzaXplVGhyZXNob2xkKQorICAgIHsKKyAgICAg
ICAgZW1wdHlTdGF0aWNCdWZmZXJDYWNoZSgpOworICAgIH0KKworICAgIC8vIEF0IHRoaXMgcG9p
bnQsIHdlIG11c3QgY3JlYXRlIGEgbmV3IHN0YXRpYyBidWZmZXIgZm9yIHRoZSBhdHRyaWJ1dGUg
ZGF0YS4KKyAgICBhdXRvIG5ld1N0YXRpY0J1ZmZlciA9IG5ldyBTdGF0aWNWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2UobUZhY3RvcnkpOworICAgIG5ld1N0YXRpY0J1ZmZlci0+c2V0QXR0cmlidXRlKGF0
dHJpYnV0ZSk7CisgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlcnMucHVzaF9iYWNrKHN0ZDo6dW5pcXVl
X3B0cjxTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U+KG5ld1N0YXRpY0J1ZmZlcikpOworICAg
IHJldHVybiBuZXdTdGF0aWNCdWZmZXI7Cit9CisKIHZvaWQgQnVmZmVyRDNEOjppbnZhbGlkYXRl
U3RhdGljRGF0YSgpCiB7Ci0gICAgaWYgKChtU3RhdGljVmVydGV4QnVmZmVyICYmIG1TdGF0aWNW
ZXJ0ZXhCdWZmZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwKSB8fCAobVN0YXRpY0luZGV4QnVmZmVy
ICYmIG1TdGF0aWNJbmRleEJ1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpICE9IDApKQorICAgIGVtcHR5
U3RhdGljQnVmZmVyQ2FjaGUoKTsKKworICAgIGlmIChtU3RhdGljSW5kZXhCdWZmZXIgJiYgbVN0
YXRpY0luZGV4QnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkKICAgICB7Ci0gICAgICAgIFNh
ZmVEZWxldGUobVN0YXRpY1ZlcnRleEJ1ZmZlcik7CiAgICAgICAgIFNhZmVEZWxldGUobVN0YXRp
Y0luZGV4QnVmZmVyKTsKKyAgICB9CiAKLSAgICAgICAgLy8gUmUtaW5pdCBzdGF0aWMgZGF0YSB0
byB0cmFjayB0aGF0IHdlJ3JlIGluIGEgc3RhdGljIGJ1ZmZlcgorICAgIC8vIElmIHRoZSBidWZm
ZXIgd2FzIGNyZWF0ZWQgd2l0aCBhIHN0YXRpYyB1c2FnZSB0aGVuIHdlIHJlY3JlYXRlIHRoZSBz
dGF0aWMKKyAgICAvLyBidWZmZXJzIHNvIHRoYXQgdGhleSBhcmUgcG9wdWxhdGVkIHRoZSBuZXh0
IHRpbWUgd2UgdXNlIHRoaXMgYnVmZmVyLgorICAgIGlmIChtVXNhZ2UgPT0gRDNEQnVmZmVyVXNh
Z2U6OlNUQVRJQykKKyAgICB7CiAgICAgICAgIGluaXRpYWxpemVTdGF0aWNEYXRhKCk7CiAgICAg
fQogCkBAIC02NiwxNSArMTYxLDMyIEBACiAvLyBDcmVhdGVzIHN0YXRpYyBidWZmZXJzIGlmIHN1
ZmZpY2llbnQgdXNlZCBkYXRhIGhhcyBiZWVuIGxlZnQgdW5tb2RpZmllZAogdm9pZCBCdWZmZXJE
M0Q6OnByb21vdGVTdGF0aWNVc2FnZShpbnQgZGF0YVNpemUpCiB7Ci0gICAgaWYgKCFtU3RhdGlj
VmVydGV4QnVmZmVyICYmICFtU3RhdGljSW5kZXhCdWZmZXIpCisgICAgaWYgKG1Vc2FnZSA9PSBE
M0RCdWZmZXJVc2FnZTo6RFlOQU1JQykKICAgICB7CiAgICAgICAgIG1Vbm1vZGlmaWVkRGF0YVVz
ZSArPSBkYXRhU2l6ZTsKIAogICAgICAgICBpZiAobVVubW9kaWZpZWREYXRhVXNlID4gMyAqIGdl
dFNpemUoKSkKICAgICAgICAgewotICAgICAgICAgICAgaW5pdGlhbGl6ZVN0YXRpY0RhdGEoKTsK
KyAgICAgICAgICAgIHVwZGF0ZUQzREJ1ZmZlclVzYWdlKEdMX1NUQVRJQ19EUkFXKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2dsOjpFcnJv
ciBCdWZmZXJEM0Q6OmdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91dFJhbmdlKQoreworICAgIGNvbnN0IHVp
bnQ4X3QgKmRhdGEgPSBudWxscHRyOworICAgIGdsOjpFcnJvciBlcnJvciA9IGdldERhdGEoJmRh
dGEpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJy
b3I7CisgICAgfQorCisgICAgKm91dFJhbmdlID0gZ2w6OkNvbXB1dGVJbmRleFJhbmdlKHR5cGUs
IGRhdGEgKyBvZmZzZXQsIGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCk7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZm
ZXJEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05LDEwICs5LDExIEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9CVUZGRVJEM0RfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0JVRkZFUkQz
RF9IXwogCisjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0J1ZmZlckltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVz
LmgiCiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFj
ZSByeAogewpAQCAtMjAsNiArMjEsMTIgQEAKIGNsYXNzIFN0YXRpY0luZGV4QnVmZmVySW50ZXJm
YWNlOwogY2xhc3MgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOwogCitlbnVtIGNsYXNzIEQz
REJ1ZmZlclVzYWdlCit7CisgICAgU1RBVElDLAorICAgIERZTkFNSUMsCit9OworCiBjbGFzcyBC
dWZmZXJEM0QgOiBwdWJsaWMgQnVmZmVySW1wbAogewogICBwdWJsaWM6CkBAIC0zMCwyNSArMzcs
NDEgQEAKIAogICAgIHZpcnR1YWwgc2l6ZV90IGdldFNpemUoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgbWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2UoKSA9IDA7CisgICAgdmlydHVhbCBnbDo6
RXJyb3IgbWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2UoKSA9IDA7CisgICAgdmlydHVhbCBnbDo6
RXJyb3IgZ2V0RGF0YShjb25zdCB1aW50OF90ICoqb3V0RGF0YSkgPSAwOwogCi0gICAgU3RhdGlj
VmVydGV4QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKSB7IHJldHVybiBt
U3RhdGljVmVydGV4QnVmZmVyOyB9Ci0gICAgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKmdl
dFN0YXRpY0luZGV4QnVmZmVyKCkgeyByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVyOyB9CisgICAg
U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlKTsKKyAgICBTdGF0aWNJbmRleEJ1ZmZlcklu
dGVyZmFjZSAqZ2V0U3RhdGljSW5kZXhCdWZmZXIoKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZVN0
YXRpY0RhdGEoKTsKLSAgICB2b2lkIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CisgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVTdGF0aWNEYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVTdGF0aWNEYXRhKCk7CisKICAgICB2b2lkIHByb21vdGVTdGF0aWNVc2FnZShpbnQgZGF0YVNp
emUpOwogCisgICAgZ2w6OkVycm9yIGdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
SW5kZXhSYW5nZSAqb3V0UmFuZ2UpIG92ZXJyaWRlOworCisgICAgQnVmZmVyRmFjdG9yeUQzRCAq
Z2V0RmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1GYWN0b3J5OyB9CisgICAgRDNEQnVmZmVyVXNh
Z2UgZ2V0VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtVXNhZ2U7IH0KKwogICBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCB1cGRhdGVTZXJpYWwoKTsKKyAgICB2b2lkIHVwZGF0ZUQzREJ1ZmZlclVzYWdlKEdM
ZW51bSB1c2FnZSk7CisgICAgdm9pZCBlbXB0eVN0YXRpY0J1ZmZlckNhY2hlKCk7CiAKICAgICBC
dWZmZXJGYWN0b3J5RDNEICptRmFjdG9yeTsKICAgICB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKICAg
ICBzdGF0aWMgdW5zaWduZWQgaW50IG1OZXh0U2VyaWFsOwogCi0gICAgU3RhdGljVmVydGV4QnVm
ZmVySW50ZXJmYWNlICptU3RhdGljVmVydGV4QnVmZmVyOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U+PiBtU3RhdGljVmVydGV4QnVm
ZmVyczsKICAgICBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqbVN0YXRpY0luZGV4QnVmZmVy
OworICAgIHVuc2lnbmVkIGludCBtU3RhdGljQnVmZmVyQ2FjaGVUb3RhbFNpemU7CisgICAgdW5z
aWduZWQgaW50IG1TdGF0aWNWZXJ0ZXhCdWZmZXJPdXRPZkRhdGU7CiAgICAgdW5zaWduZWQgaW50
IG1Vbm1vZGlmaWVkRGF0YVVzZTsKKyAgICBEM0RCdWZmZXJVc2FnZSBtVXNhZ2U7CiB9OwogCiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0NvbXBpbGVyRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmNwcAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9D
b21waWxlckQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIyICsxLDIwIEBACiAvLwotLy8g
Q29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KIC8vCisvLyBDb21waWxlckQzRDoKKy8vICAgSW1wbGVtZW50YXRpb24gb2Yg
dGhlIEQzRCBjb21waWxlciBtZXRob2RzLgorLy8KIAotLy8gQ29tcGlsZXJEM0QuY3BwOiBJbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgcng6OkNvbXBpbGVyRDNEIGNsYXNzLgotCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgiCiAKLSNpbmNsdWRlICJsaWJBTkdMRS9D
YXBzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCi0KIG5hbWVzcGFjZSByeAogewogCi0vLyBHbG9iYWwgY291bnQgb2YgYWN0aXZlIHNo
YWRlciBjb21waWxlciBoYW5kbGVzLiBOZWVkZWQgdG8ga25vdyB3aGVuIHRvIGNhbGwgU2hJbml0
aWFsaXplIGFuZCBTaEZpbmFsaXplLgotc3RhdGljIHNpemVfdCBhY3RpdmVDb21waWxlckhhbmRs
ZXMgPSAwOwotCi1Db21waWxlckQzRDo6Q29tcGlsZXJEM0QoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
IFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpCi0gICAgOiBtU3BlYyhkYXRhLmNsaWVudFZlcnNp
b24gPiAyID8gU0hfR0xFUzNfU1BFQyA6IFNIX0dMRVMyX1NQRUMpLAotICAgICAgbU91dHB1dFR5
cGUob3V0cHV0VHlwZSksCi0gICAgICBtUmVzb3VyY2VzKCksCi0gICAgICBtRnJhZ21lbnRDb21w
aWxlcihOVUxMKSwKLSAgICAgIG1WZXJ0ZXhDb21waWxlcihOVUxMKQorQ29tcGlsZXJEM0Q6OkNv
bXBpbGVyRDNEKFNoU2hhZGVyT3V0cHV0IHRyYW5zbGF0b3JPdXRwdXRUeXBlKQorICAgIDogbVRy
YW5zbGF0b3JPdXRwdXRUeXBlKHRyYW5zbGF0b3JPdXRwdXRUeXBlKQogewotICAgIEFTU0VSVChk
YXRhLmNsaWVudFZlcnNpb24gPT0gMiB8fCBkYXRhLmNsaWVudFZlcnNpb24gPT0gMyk7Ci0KLSAg
ICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9ICpkYXRhLmNhcHM7Ci0gICAgY29uc3QgZ2w6OkV4dGVu
c2lvbnMgJmV4dGVuc2lvbnMgPSAqZGF0YS5leHRlbnNpb25zOwotCi0gICAgU2hJbml0QnVpbHRJ
blJlc291cmNlcygmbVJlc291cmNlcyk7Ci0gICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJz
ID0gY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIG1SZXNvdXJjZXMuTWF4VmVydGV4VW5p
Zm9ybVZlY3RvcnMgPSBjYXBzLm1heFZlcnRleFVuaWZvcm1WZWN0b3JzOwotICAgIG1SZXNvdXJj
ZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBjYXBzLm1heFZhcnlpbmdWZWN0b3JzOwotICAgIG1SZXNv
dXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPSBjYXBzLm1heFZlcnRleFRleHR1cmVJ
bWFnZVVuaXRzOwotICAgIG1SZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9
IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsKLSAgICBtUmVzb3VyY2VzLk1heFRl
eHR1cmVJbWFnZVVuaXRzID0gY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0czsKLSAgICBtUmVzb3Vy
Y2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSBjYXBzLm1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnM7Ci0gICAgbVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IGNhcHMubWF4RHJhd0J1ZmZl
cnM7Ci0gICAgbVJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSBleHRlbnNpb25z
LnN0YW5kYXJkRGVyaXZhdGl2ZXM7Ci0gICAgbVJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzID0g
ZXh0ZW5zaW9ucy5kcmF3QnVmZmVyczsKLSAgICBtUmVzb3VyY2VzLkVYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QgPSAxOwotICAgIC8vIHJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gbVJl
bmRlcmVyLT5nZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSA/IDEgOiAwOyAvLyBUT0RPOiBjb21tZW50
ZWQgb3V0IHVudGlsIHRoZSBleHRlbnNpb24gaXMgYWN0dWFsbHkgc3VwcG9ydGVkLgotICAgIG1S
ZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsgICAvLyBTaGFkZXIgTW9kZWwgMisg
YWx3YXlzIHN1cHBvcnRzIEZQMjQgKHMxNmU3KSB3aGljaCBjb3JyZXNwb25kcyB0byBoaWdocAot
ICAgIG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAxOyAvLyBTaGFkZXIgTW9kZWwgMisgYWx3
YXlzIHN1cHBvcnRzIGV4cGxpY2l0IGRlcHRoIG91dHB1dAotCi0gICAgLy8gR0xTTCBFUyAzLjAg
Y29uc3RhbnRzCi0gICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzID0gY2Fwcy5t
YXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzIC8gNDsKLSAgICBtUmVzb3VyY2VzLk1heEZyYWdtZW50
SW5wdXRWZWN0b3JzID0gY2Fwcy5tYXhGcmFnbWVudElucHV0Q29tcG9uZW50cyAvIDQ7Ci0gICAg
bVJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQgPSBjYXBzLm1pblByb2dyYW1UZXhlbE9m
ZnNldDsKLSAgICBtUmVzb3VyY2VzLk1heFByb2dyYW1UZXhlbE9mZnNldCA9IGNhcHMubWF4UHJv
Z3JhbVRleGVsT2Zmc2V0OwogfQogCi1Db21waWxlckQzRDo6fkNvbXBpbGVyRDNEKCkKLXsKLSAg
ICByZWxlYXNlKCk7Ci19Ci0KLWdsOjpFcnJvciBDb21waWxlckQzRDo6cmVsZWFzZSgpCi17Ci0g
ICAgaWYgKG1GcmFnbWVudENvbXBpbGVyKQotICAgIHsKLSAgICAgICAgU2hEZXN0cnVjdChtRnJh
Z21lbnRDb21waWxlcik7Ci0gICAgICAgIG1GcmFnbWVudENvbXBpbGVyID0gTlVMTDsKLQotICAg
ICAgICBBU1NFUlQoYWN0aXZlQ29tcGlsZXJIYW5kbGVzID4gMCk7Ci0gICAgICAgIGFjdGl2ZUNv
bXBpbGVySGFuZGxlcy0tOwotICAgIH0KLQotICAgIGlmIChtVmVydGV4Q29tcGlsZXIpCi0gICAg
ewotICAgICAgICBTaERlc3RydWN0KG1WZXJ0ZXhDb21waWxlcik7Ci0gICAgICAgIG1WZXJ0ZXhD
b21waWxlciA9IE5VTEw7Ci0KLSAgICAgICAgQVNTRVJUKGFjdGl2ZUNvbXBpbGVySGFuZGxlcyA+
IDApOwotICAgICAgICBhY3RpdmVDb21waWxlckhhbmRsZXMtLTsKLSAgICB9Ci0KLSAgICBpZiAo
YWN0aXZlQ29tcGlsZXJIYW5kbGVzID09IDApCi0gICAgewotICAgICAgICBTaEZpbmFsaXplKCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci19Ci0KLVNoSGFu
ZGxlIENvbXBpbGVyRDNEOjpnZXRDb21waWxlckhhbmRsZShHTGVudW0gdHlwZSkKLXsKLSAgICBT
aEhhbmRsZSAqY29tcGlsZXIgPSBOVUxMOwotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAg
ICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6Ci0gICAgICAgIGNvbXBpbGVyID0gJm1WZXJ0ZXhDb21w
aWxlcjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgot
ICAgICAgICBjb21waWxlciA9ICZtRnJhZ21lbnRDb21waWxlcjsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBO
VUxMOwotICAgIH0KLQotICAgIGlmICghKCpjb21waWxlcikpCi0gICAgewotICAgICAgICBpZiAo
YWN0aXZlQ29tcGlsZXJIYW5kbGVzID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNoSW5p
dGlhbGl6ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgKmNvbXBpbGVyID0gU2hDb25zdHJ1Y3RD
b21waWxlcih0eXBlLCBtU3BlYywgbU91dHB1dFR5cGUsICZtUmVzb3VyY2VzKTsKLSAgICAgICAg
YWN0aXZlQ29tcGlsZXJIYW5kbGVzKys7Ci0gICAgfQotCi0gICAgcmV0dXJuICpjb21waWxlcjsK
LX0KLQotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxl
ckQzRC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDM1ICsxMCwyMiBAQAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9DT01QSUxFUkQzRF9IXwog
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJbXBsLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvQ2Fwcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJl
ckQzRC5oIgogCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLW5hbWVzcGFjZSBn
bAotewotc3RydWN0IERhdGE7Ci19Ci0KIG5hbWVzcGFjZSByeAogewogCiBjbGFzcyBDb21waWxl
ckQzRCA6IHB1YmxpYyBDb21waWxlckltcGwKIHsKICAgcHVibGljOgotICAgIENvbXBpbGVyRDNE
KGNvbnN0IGdsOjpEYXRhICZkYXRhLCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlKTsKLSAgICB2
aXJ0dWFsIH5Db21waWxlckQzRCgpOworICAgIENvbXBpbGVyRDNEKFNoU2hhZGVyT3V0cHV0IHRy
YW5zbGF0b3JPdXRwdXRUeXBlKTsKKyAgICB+Q29tcGlsZXJEM0QoKSBvdmVycmlkZSB7fQogCi0g
ICAgZ2w6OkVycm9yIHJlbGVhc2UoKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgcmVsZWFzZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7IH0KKyAgICBTaFNoYWRl
ck91dHB1dCBnZXRUcmFuc2xhdG9yT3V0cHV0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1UcmFuc2xhdG9yT3V0cHV0VHlwZTsgfQogCi0gICAgU2hIYW5kbGUgZ2V0Q29tcGlsZXJIYW5k
bGUoR0xlbnVtIHR5cGUpOwotCiAgIHByaXZhdGU6Ci0gICAgU2hTaGFkZXJTcGVjIG1TcGVjOwot
ICAgIFNoU2hhZGVyT3V0cHV0IG1PdXRwdXRUeXBlOwotICAgIFNoQnVpbHRJblJlc291cmNlcyBt
UmVzb3VyY2VzOwotCi0gICAgU2hIYW5kbGUgbUZyYWdtZW50Q29tcGlsZXI7Ci0gICAgU2hIYW5k
bGUgbVZlcnRleENvbXBpbGVyOworICAgIFNoU2hhZGVyT3V0cHV0IG1UcmFuc2xhdG9yT3V0cHV0
VHlwZTsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0RldmljZUQzRC5jcHAJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvRGV2aWNlRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcsMzUgKzE3LDgzIEBA
CiBuYW1lc3BhY2UgcngKIHsKIAotRGV2aWNlRDNEOjpEZXZpY2VEM0Qocng6OlJlbmRlcmVyRDNE
ICpyZW5kZXJlcikKLSAgICA6IG1SZW5kZXJlcihyZW5kZXJlcikKK0RldmljZUQzRDo6RGV2aWNl
RDNEKCkKKyAgICA6IG1EZXZpY2UoMCksIG1EZXZpY2VUeXBlKDApLCBtRGV2aWNlRXh0ZXJuYWxs
eVNvdXJjZWQoZmFsc2UpLCBtSXNJbml0aWFsaXplZChmYWxzZSkKIHsKIH0KIAotZWdsOjpFcnJv
ciBEZXZpY2VEM0Q6OmdldERldmljZShFR0xBdHRyaWIgKnZhbHVlKQorRGV2aWNlRDNEOjp+RGV2
aWNlRDNEKCkKIHsKLSAgICAqdmFsdWUgPSByZWludGVycHJldF9jYXN0PEVHTEF0dHJpYj4obVJl
bmRlcmVyLT5nZXREM0REZXZpY2UoKSk7Ci0gICAgaWYgKCp2YWx1ZSA9PSAwKQorI2lmIGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX0QzRDExKQorICAgIGlmIChtRGV2aWNlVHlwZSA9PSBFR0xfRDNEMTFf
REVWSUNFX0FOR0xFKQogICAgIHsKKyAgICAgICAgLy8gRGV2aWNlRDNEIGhvbGRzIGEgcmVmIHRv
IGFuIGV4dGVybmFsbHktc291cmNlZCBEM0QxMSBkZXZpY2UuIFdlIG11c3QgcmVsZWFzZSBpdC4K
KyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURl
dmljZSAqPihtRGV2aWNlKTsKKyAgICAgICAgZGV2aWNlLT5SZWxlYXNlKCk7CisgICAgfQorI2Vu
ZGlmCit9CisKK2VnbDo6RXJyb3IgRGV2aWNlRDNEOjpnZXREZXZpY2Uodm9pZCAqKm91dFZhbHVl
KQoreworICAgIGlmICghbUlzSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAgICAqb3V0VmFsdWUg
PSBudWxscHRyOwogICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RFVklDRV9FWFQp
OwogICAgIH0KKworICAgICpvdXRWYWx1ZSA9IG1EZXZpY2U7CiAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOwogfQogCi1FR0xpbnQgRGV2aWNlRDNEOjpnZXRUeXBlKCkKK2VnbDo6
RXJyb3IgRGV2aWNlRDNEOjppbml0aWFsaXplKHZvaWQgKmRldmljZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBkZXZpY2VUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMQm9vbGVhbiBkZXZpY2VFeHRlcm5hbGx5U291cmNlZCkKIHsKLSAg
ICBzd2l0Y2ggKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJDbGFzcygpKQorICAgIEFTU0VSVCghbUlz
SW5pdGlhbGl6ZWQpOworICAgIGlmIChtSXNJbml0aWFsaXplZCkKICAgICB7Ci0gICAgICBjYXNl
IFJFTkRFUkVSX0QzRDExOgotICAgICAgICByZXR1cm4gRUdMX0QzRDExX0RFVklDRV9BTkdMRTsK
LSAgICAgIGNhc2UgUkVOREVSRVJfRDNEOToKLSAgICAgICAgcmV0dXJuIEVHTF9EM0Q5X0RFVklD
RV9BTkdMRTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
IHJldHVybiBFR0xfTk9ORTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9ERVZJ
Q0VfRVhUKTsKICAgICB9CisKKyAgICBtRGV2aWNlICAgICAgICAgICAgICAgICAgPSBkZXZpY2U7
CisgICAgbURldmljZVR5cGUgICAgICAgICAgICAgID0gZGV2aWNlVHlwZTsKKyAgICBtRGV2aWNl
RXh0ZXJuYWxseVNvdXJjZWQgPSAhIWRldmljZUV4dGVybmFsbHlTb3VyY2VkOworCisjaWYgZGVm
aW5lZChBTkdMRV9FTkFCTEVfRDNEMTEpCisgICAgaWYgKG1EZXZpY2VUeXBlID09IEVHTF9EM0Qx
MV9ERVZJQ0VfQU5HTEUpCisgICAgeworICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgZGV2aWNlCisg
ICAgICAgIElVbmtub3duICppdW5rbm93biA9IHJlaW50ZXJwcmV0X2Nhc3Q8SVVua25vd24gKj4o
ZGV2aWNlKTsKKworICAgICAgICBJRDNEMTFEZXZpY2UgKmQzZERldmljZSA9IG51bGxwdHI7Cisg
ICAgICAgIEhSRVNVTFQgaHIgPQorICAgICAgICAgICAgaXVua25vd24tPlF1ZXJ5SW50ZXJmYWNl
KF9fdXVpZG9mKElEM0QxMURldmljZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJmQzZERl
dmljZSkpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJJbnZhbGlkIEQzRCBkZXZpY2Ug
cGFzc2VkIGludG8gRUdMRGV2aWNlRVhUIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUg
UUkgdG8gSUQzRDExRGV2aWNlIGFkZHMgYSByZWYgdG8gdGhlIEQzRDExIGRldmljZS4KKyAgICAg
ICAgLy8gRGVsaWJlcmF0ZWx5IGRvbid0IHJlbGVhc2UgdGhlIHJlZiBoZXJlLCBzbyB0aGF0IHRo
ZSBEZXZpY2VEM0QgaG9sZHMgYSByZWYgdG8gdGhlCisgICAgICAgIC8vIEQzRDExIGRldmljZS4K
KyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBBU1NFUlQoIW1EZXZpY2VF
eHRlcm5hbGx5U291cmNlZCk7CisgICAgfQorCisgICAgbUlzSW5pdGlhbGl6ZWQgPSB0cnVlOwor
CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCitFR0xpbnQgRGV2aWNl
RDNEOjpnZXRUeXBlKCkKK3sKKyAgICByZXR1cm4gbURldmljZVR5cGU7Cit9CisKIHZvaWQgRGV2
aWNlRDNEOjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEZXZpY2VFeHRlbnNpb25zICpvdXRFeHRl
bnNpb25zKSBjb25zdAogewogICAgIG91dEV4dGVuc2lvbnMtPmRldmljZUQzRCA9IHRydWU7Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rl
dmljZUQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE4LDE0ICsxOCwyMCBAQAogY2xhc3MgRGV2aWNlRDNEIDogcHVi
bGljIERldmljZUltcGwKIHsKICAgcHVibGljOgotICAgIERldmljZUQzRChSZW5kZXJlckQzRCAq
cmVuZGVyZXIpOworICAgIERldmljZUQzRCgpOworICAgIH5EZXZpY2VEM0QoKSBvdmVycmlkZTsK
IAotICAgIGVnbDo6RXJyb3IgZ2V0RGV2aWNlKEVHTEF0dHJpYiAqdmFsdWUpIG92ZXJyaWRlOwor
ICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSh2b2lkICpkZXZpY2UsIEVHTGludCBkZXZpY2VUeXBl
LCBFR0xCb29sZWFuIGV4dGVybmFsKTsKKyAgICBlZ2w6OkVycm9yIGdldERldmljZSh2b2lkICoq
b3V0VmFsdWUpIG92ZXJyaWRlOwogICAgIEVHTGludCBnZXRUeXBlKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEZXZpY2VFeHRlbnNpb25zICpvdXRFeHRlbnNp
b25zKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGRldmljZUV4dGVybmFsbHlTb3VyY2VkKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbURldmljZUV4dGVybmFsbHlTb3VyY2VkOyB9CiAKICAgcHJpdmF0
ZToKLSAgICBSZW5kZXJlckQzRCAqbVJlbmRlcmVyOworICAgIHZvaWQgKm1EZXZpY2U7CisgICAg
RUdMaW50IG1EZXZpY2VUeXBlOworICAgIGJvb2wgbURldmljZUV4dGVybmFsbHlTb3VyY2VkOwor
ICAgIGJvb2wgbUlzSW5pdGlhbGl6ZWQ7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
RGlzcGxheUQzRC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2hpc3RvZ3JhbV9t
YWNyb3MuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuaCIKQEAgLTM0LDcgKzM1LDcgQEAKIAogI2lmICFk
ZWZpbmVkKEFOR0xFX0RFRkFVTFRfRDNEMTEpCiAvLyBFbmFibGVzIHVzZSBvZiB0aGUgRGlyZWN0
M0QgMTEgQVBJIGZvciBhIGRlZmF1bHQgZGlzcGxheSwgd2hlbiBhdmFpbGFibGUKLSMgICBkZWZp
bmUgQU5HTEVfREVGQVVMVF9EM0QxMSAwCisjICAgZGVmaW5lIEFOR0xFX0RFRkFVTFRfRDNEMTEg
MQogI2VuZGlmCiAKIG5hbWVzcGFjZSByeApAQCAtNTQsMTAgKzU1LDEzIEBACiAKICAgICBzdGQ6
OnZlY3RvcjxDcmVhdGVSZW5kZXJlckQzREZ1bmN0aW9uPiByZW5kZXJlckNyZWF0aW9uRnVuY3Rp
b25zOwogCi0gICAgY29uc3QgYXV0byAmYXR0cmliTWFwID0gZGlzcGxheS0+Z2V0QXR0cmlidXRl
TWFwKCk7Ci0gICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSA9IGRpc3BsYXkt
PmdldE5hdGl2ZURpc3BsYXlJZCgpOworICAgIGlmIChkaXNwbGF5LT5nZXRQbGF0Zm9ybSgpID09
IEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmF0
dHJpYk1hcCAgICAgICAgICAgICAgPSBkaXNwbGF5LT5nZXRBdHRyaWJ1dGVNYXAoKTsKKyAgICAg
ICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSA9IGRpc3BsYXktPmdldE5hdGl2
ZURpc3BsYXlJZCgpOwogCi0gICAgRUdMaW50IHJlcXVlc3RlZERpc3BsYXlUeXBlID0gYXR0cmli
TWFwLmdldChFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSwgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfREVGQVVMVF9BTkdMRSk7CisgICAgICAgIEVHTGludCByZXF1ZXN0ZWREaXNwbGF5VHlw
ZSA9IHN0YXRpY19jYXN0PEVHTGludD4oCisgICAgICAgICAgICBhdHRyaWJNYXAuZ2V0KEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxU
X0FOR0xFKSk7CiAKICMgICBpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKICAgICAgICAg
aWYgKG5hdGl2ZURpc3BsYXkgPT0gRUdMX0QzRDExX0VMU0VfRDNEOV9ESVNQTEFZX0FOR0xFIHx8
CkBAIC03NiwyOCArODAsNDIgQEAKICAgICAgICAgfQogIyAgIGVuZGlmCiAKLSAgICBpZiAobmF0
aXZlRGlzcGxheSAhPSBFR0xfRDNEMTFfRUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUgJiYKLSAgICAg
ICAgbmF0aXZlRGlzcGxheSAhPSBFR0xfRDNEMTFfT05MWV9ESVNQTEFZX0FOR0xFICYmCi0gICAg
ICAgIHJlcXVlc3RlZERpc3BsYXlUeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFV
TFRfQU5HTEUpCi0gICAgeworICAgICAgICBpZiAobmF0aXZlRGlzcGxheSAhPSBFR0xfRDNEMTFf
RUxTRV9EM0Q5X0RJU1BMQVlfQU5HTEUgJiYKKyAgICAgICAgICAgIG5hdGl2ZURpc3BsYXkgIT0g
RUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRSAmJgorICAgICAgICAgICAgcmVxdWVzdGVkRGlz
cGxheVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRSkKKyAgICAg
ICAgewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXNwbGF5IGlzIHJlcXVlc3RlZCwgdHJ5IHRo
ZSBEM0Q5IGFuZCBEM0QxMSByZW5kZXJlcnMsIG9yZGVyIHRoZW0gdXNpbmcKICAgICAgICAgLy8g
dGhlIGRlZmluaXRpb24gb2YgQU5HTEVfREVGQVVMVF9EM0QxMQogIyAgICAgICBpZiBBTkdMRV9E
RUZBVUxUX0QzRDExCiAjICAgICAgICAgICBpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkK
LSAgICAgICAgICAgICAgICByZW5kZXJlckNyZWF0aW9uRnVuY3Rpb25zLnB1c2hfYmFjayhDcmVh
dGVUeXBlZFJlbmRlcmVyRDNEPFJlbmRlcmVyMTE+KTsKKyAgICAgICAgICAgIHJlbmRlcmVyQ3Jl
YXRpb25GdW5jdGlvbnMucHVzaF9iYWNrKENyZWF0ZVR5cGVkUmVuZGVyZXJEM0Q8UmVuZGVyZXIx
MT4pOwogIyAgICAgICAgICAgZW5kaWYKICMgICAgICAgICAgIGlmIGRlZmluZWQoQU5HTEVfRU5B
QkxFX0QzRDkpCi0gICAgICAgICAgICAgICAgcmVuZGVyZXJDcmVhdGlvbkZ1bmN0aW9ucy5wdXNo
X2JhY2soQ3JlYXRlVHlwZWRSZW5kZXJlckQzRDxSZW5kZXJlcjk+KTsKKyAgICAgICAgICAgIHJl
bmRlcmVyQ3JlYXRpb25GdW5jdGlvbnMucHVzaF9iYWNrKENyZWF0ZVR5cGVkUmVuZGVyZXJEM0Q8
UmVuZGVyZXI5Pik7CiAjICAgICAgICAgICBlbmRpZgogIyAgICAgICBlbHNlCiAjICAgICAgICAg
ICBpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KQotICAgICAgICAgICAgICAgIHJlbmRlcmVy
Q3JlYXRpb25GdW5jdGlvbnMucHVzaF9iYWNrKENyZWF0ZVR5cGVkUmVuZGVyZXJEM0Q8UmVuZGVy
ZXI5Pik7CisgICAgICAgICAgICByZW5kZXJlckNyZWF0aW9uRnVuY3Rpb25zLnB1c2hfYmFjayhD
cmVhdGVUeXBlZFJlbmRlcmVyRDNEPFJlbmRlcmVyOT4pOwogIyAgICAgICAgICAgZW5kaWYKICMg
ICAgICAgICAgIGlmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQotICAgICAgICAgICAgICAg
IHJlbmRlcmVyQ3JlYXRpb25GdW5jdGlvbnMucHVzaF9iYWNrKENyZWF0ZVR5cGVkUmVuZGVyZXJE
M0Q8UmVuZGVyZXIxMT4pOworICAgICAgICAgICAgcmVuZGVyZXJDcmVhdGlvbkZ1bmN0aW9ucy5w
dXNoX2JhY2soQ3JlYXRlVHlwZWRSZW5kZXJlckQzRDxSZW5kZXJlcjExPik7CiAjICAgICAgICAg
ICBlbmRpZgogIyAgICAgICBlbmRpZgorICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKGRp
c3BsYXktPmdldFBsYXRmb3JtKCkgPT0gRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQpCisgICAgewor
I2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKQorICAgICAgICBpZiAoZGlzcGxheS0+Z2V0
RGV2aWNlKCktPmdldFR5cGUoKSA9PSBFR0xfRDNEMTFfREVWSUNFX0FOR0xFKQorICAgICAgICB7
CisgICAgICAgICAgICByZW5kZXJlckNyZWF0aW9uRnVuY3Rpb25zLnB1c2hfYmFjayhDcmVhdGVU
eXBlZFJlbmRlcmVyRDNEPFJlbmRlcmVyMTE+KTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CiAKICAgICBl
Z2w6OkVycm9yIHJlc3VsdChFR0xfTk9UX0lOSVRJQUxJWkVELCAiTm8gYXZhaWxhYmxlIHJlbmRl
cmVycy4iKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbmRlcmVyQ3JlYXRpb25GdW5j
dGlvbnMuc2l6ZSgpOyBpKyspCkBAIC0xNDAsNDkgKzE1OCwyMyBAQAogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLSNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKLW5hbWVz
cGFjZQorRGlzcGxheUQzRDo6RGlzcGxheUQzRCgpIDogbVJlbmRlcmVyKG51bGxwdHIpCiB7Ci0K
LUxSRVNVTFQgQ0FMTEJBQ0sgSW50ZXJtZWRpYXRlV2luZG93UHJvYyhIV05EIHdpbmRvdywgVUlO
VCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQotewotICAgIHN3aXRjaCAo
bWVzc2FnZSkKLSAgICB7Ci0gICAgICBjYXNlIFdNX0VSQVNFQktHTkQ6Ci0gICAgICAgIC8vIFBy
ZXZlbnQgd2luZG93cyBmcm9tIGVyYXNpbmcgdGhlIGJhY2tncm91bmQuCi0gICAgICAgIHJldHVy
biAxOwotICAgICAgY2FzZSBXTV9QQUlOVDoKLSAgICAgICAgLy8gRG8gbm90IHBhaW50IGFueXRo
aW5nLgotICAgICAgICBQQUlOVFNUUlVDVCBwYWludDsKLSAgICAgICAgaWYgKEJlZ2luUGFpbnQo
d2luZG93LCAmcGFpbnQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBFbmRQYWludCh3aW5kb3cs
ICZwYWludCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0
dXJuIERlZldpbmRvd1Byb2Mod2luZG93LCBtZXNzYWdlLCB3UGFyYW0sIGxQYXJhbSk7CiB9CiAK
LX0KLSNlbmRpZgogCi1EaXNwbGF5RDNEOjpEaXNwbGF5RDNEKCkKLSAgICA6IG1EaXNwbGF5KG51
bGxwdHIpLAotICAgICAgbVJlbmRlcmVyKG51bGxwdHIpLAotICAgICAgbUNoaWxkV2luZG93Q2xh
c3MoMCksCi0gICAgICBtRGV2aWNlKG51bGxwdHIpCitTdXJmYWNlSW1wbCAqRGlzcGxheUQzRDo6
Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci19Ci0KLWVnbDo6RXJyb3Ig
RGlzcGxheUQzRDo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMs
IFN1cmZhY2VJbXBsICoqb3V0U3VyZmFjZSkKLXsKICAgICBBU1NFUlQobVJlbmRlcmVyICE9IG51
bGxwdHIpOwogCi0gICAgRUdMaW50IHdpZHRoID0gYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKTsK
LSAgICBFR0xpbnQgaGVpZ2h0ID0gYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCk7Ci0gICAgRUdM
aW50IGZpeGVkU2l6ZSA9IGF0dHJpYnMuZ2V0KEVHTF9GSVhFRF9TSVpFX0FOR0xFLCBFR0xfRkFM
U0UpOworICAgIEVHTGludCB3aWR0aCAgICAgICA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmli
cy5nZXQoRUdMX1dJRFRILCAwKSk7CisgICAgRUdMaW50IGhlaWdodCAgICAgID0gc3RhdGljX2Nh
c3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfSEVJR0hULCAwKSk7CisgICAgRUdMaW50IGZpeGVk
U2l6ZSAgID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfRklYRURfU0laRV9B
TkdMRSwgRUdMX0ZBTFNFKSk7CisgICAgRUdMaW50IG9yaWVudGF0aW9uID0gc3RhdGljX2Nhc3Q8
RUdMaW50PihhdHRyaWJzLmdldChFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRSwgMCkpOwor
ICAgIEVHTGludCBkaXJlY3RDb21wb3NpdGlvbiA9CisgICAgICAgIHN0YXRpY19jYXN0PEVHTGlu
dD4oYXR0cmlicy5nZXQoRUdMX0RJUkVDVF9DT01QT1NJVElPTl9BTkdMRSwgRUdMX0ZBTFNFKSk7
CiAKICAgICBpZiAoIWZpeGVkU2l6ZSkKICAgICB7CkBAIC0xOTAsODggKzE4Miw2NiBAQAogICAg
ICAgICBoZWlnaHQgPSAtMTsKICAgICB9CiAKLSAgICBTdXJmYWNlRDNEICpzdXJmYWNlID0gU3Vy
ZmFjZUQzRDo6Y3JlYXRlRnJvbVdpbmRvdyhtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0
aW9uLCB3aW5kb3csIGZpeGVkU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKLSAgICBlZ2w6OkVycm9yIGVy
cm9yID0gc3VyZmFjZS0+aW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICBTYWZlRGVsZXRlKHN1cmZhY2UpOwotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQotCi0gICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlOwotICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKKyAgICByZXR1cm4gU3VyZmFjZUQzRDo6Y3JlYXRlRnJvbVdpbmRv
dyhtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0aW9uLCB3aW5kb3csIGZpeGVkU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RDb21wb3NpdGlv
biwgd2lkdGgsIGhlaWdodCwgb3JpZW50YXRpb24pOwogfQogCi1lZ2w6OkVycm9yIERpc3BsYXlE
M0Q6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUltcGwgKipvdXRTdXJmYWNlKQorU3VyZmFj
ZUltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAgIEFTU0VSVCht
UmVuZGVyZXIgIT0gbnVsbHB0cik7CiAKLSAgICBFR0xpbnQgd2lkdGggPSBhdHRyaWJzLmdldChF
R0xfV0lEVEgsIDApOwotICAgIEVHTGludCBoZWlnaHQgPSBhdHRyaWJzLmdldChFR0xfSEVJR0hU
LCAwKTsKKyAgICBFR0xpbnQgd2lkdGggID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdl
dChFR0xfV0lEVEgsIDApKTsKKyAgICBFR0xpbnQgaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8RUdMaW50
PihhdHRyaWJzLmdldChFR0xfSEVJR0hULCAwKSk7CiAKLSAgICBTdXJmYWNlRDNEICpzdXJmYWNl
ID0gU3VyZmFjZUQzRDo6Y3JlYXRlT2Zmc2NyZWVuKG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZp
Z3VyYXRpb24sIE5VTEwsIHdpZHRoLCBoZWlnaHQpOwotICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBz
dXJmYWNlLT5pbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIFNhZmVEZWxldGUoc3VyZmFjZSk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9
Ci0KLSAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOworICAgIHJldHVybiBTdXJmYWNlRDNEOjpjcmVhdGVPZmZzY3JlZW4obVJlbmRl
cmVyLCBtRGlzcGxheSwgY29uZmlndXJhdGlvbiwgbnVsbHB0ciwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKLWVnbDo6RXJyb3IgRGlzcGxheUQzRDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhh
bmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsIFN1cmZhY2VJbXBsICoqb3V0U3Vy
ZmFjZSkKK1N1cmZhY2VJbXBsICpEaXNwbGF5RDNEOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1
ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hh
cmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgQVNTRVJU
KG1SZW5kZXJlciAhPSBudWxscHRyKTsKIAotICAgIEVHTGludCB3aWR0aCA9IGF0dHJpYnMuZ2V0
KEVHTF9XSURUSCwgMCk7Ci0gICAgRUdMaW50IGhlaWdodCA9IGF0dHJpYnMuZ2V0KEVHTF9IRUlH
SFQsIDApOworICAgIEVHTGludCB3aWR0aCAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMu
Z2V0KEVHTF9XSURUSCwgMCkpOworICAgIEVHTGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxFR0xp
bnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQsIDApKTsKIAotICAgIFN1cmZhY2VEM0QgKnN1cmZh
Y2UgPSBTdXJmYWNlRDNEOjpjcmVhdGVPZmZzY3JlZW4obVJlbmRlcmVyLCBtRGlzcGxheSwgY29u
ZmlndXJhdGlvbiwgc2hhcmVIYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKLSAgICBlZ2w6OkVycm9yIGVy
cm9yID0gc3VyZmFjZS0+aW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0g
ICAgewotICAgICAgICBTYWZlRGVsZXRlKHN1cmZhY2UpOwotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQotCi0gICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlOwotICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKKyAgICByZXR1cm4gU3VyZmFjZUQzRDo6Y3JlYXRlT2Zmc2NyZWVu
KAorICAgICAgICBtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0aW9uLCBzaGFyZUhhbmRs
ZSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheUQzRDo6Y3JlYXRlUGl4
bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwgTmF0aXZlUGl4bWFw
VHlwZSBuYXRpdmVQaXhtYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsIFN1cmZhY2VJbXBsICoqb3V0
U3VyZmFjZSkKK1N1cmZhY2VJbXBsICpEaXNwbGF5RDNEOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBBU1NFUlQobVJlbmRlcmVyICE9IG51bGxwdHIpOwot
CiAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgICpvdXRTdXJmYWNlID0gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVkpOworICAgIHJldHVybiBudWxscHRyOwog
fQogCitJbWFnZUltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1cm4gbmV3IEVHTEltYWdlRDNEKG1SZW5kZXJl
ciwgdGFyZ2V0LCBidWZmZXIsIGF0dHJpYnMpOworfQorCiBlZ2w6OkVycm9yIERpc3BsYXlEM0Q6
OmdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKQogewotICAgICpkZXZpY2UgPSByZWludGVy
cHJldF9jYXN0PERldmljZUltcGwqPihtRGV2aWNlKTsKLSAgICBBU1NFUlQoKmRldmljZSAhPSBu
dWxscHRyKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgcmV0dXJu
IG1SZW5kZXJlci0+Z2V0RUdMRGV2aWNlKGRldmljZSk7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxh
eUQzRDo6Y3JlYXRlQ29udGV4dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBnbDo6
Q29udGV4dCAqc2hhcmVDb250ZXh0LCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqKm91dENv
bnRleHQpCitnbDo6Q29udGV4dCAqRGlzcGxheUQzRDo6Y3JlYXRlQ29udGV4dChjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAg
IEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CisgICAgcmV0dXJuIG5ldyBnbDo6Q29udGV4
dChjb25maWcsIHNoYXJlQ29udGV4dCwgbVJlbmRlcmVyLCBhdHRyaWJzKTsKK30KIAotICAgIEVH
TGludCBjbGllbnRWZXJzaW9uID0gYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJ
T04sIDEpOwotICAgIGJvb2wgbm90aWZ5UmVzZXRzID0gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhU
X09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhULCBFR0xfTk9fUkVTRVRfTk9U
SUZJQ0FUSU9OX0VYVCkgPT0gRUdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQpOwotICAgIGJv
b2wgcm9idXN0QWNjZXNzID0gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09QRU5HTF9ST0JVU1Rf
QUNDRVNTX0VYVCwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7Ci0KLSAgICAqb3V0Q29udGV4dCA9
IG5ldyBnbDo6Q29udGV4dChjb25maWcsIGNsaWVudFZlcnNpb24sIHNoYXJlQ29udGV4dCwgbVJl
bmRlcmVyLCBub3RpZnlSZXNldHMsIHJvYnVzdEFjY2Vzcyk7Ci0gICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOworU3RyZWFtSW1wbCAqRGlzcGxheUQzRDo6Y3JlYXRlU3RyZWFtKGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIEFTU0VSVChtUmVuZGVyZXIg
IT0gbnVsbHB0cik7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Y3JlYXRlU3RyZWFtKGF0dHJpYnMp
OwogfQogCiBlZ2w6OkVycm9yIERpc3BsYXlEM0Q6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAq
ZHJhd1N1cmZhY2UsIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250
ZXh0KQpAQCAtMjg5LDQ5ICsyNTksMTIgQEAKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0K
IAotICAgIEFTU0VSVChtRGV2aWNlID09IG51bGxwdHIpOwotICAgIG1EZXZpY2UgPSBuZXcgRGV2
aWNlRDNEKG1SZW5kZXJlcik7Ci0KLSNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19T
VE9SRSkKLSAgICAvLyBXb3JrIGFyb3VuZCBjb21waWxlIGVycm9yIGZyb20gbm90IGRlZmluaW5n
ICJVTklDT0RFIiB3aGlsZSBDaHJvbWl1bSBkb2VzCi0gICAgY29uc3QgTFBTVFIgaWRjQXJyb3cg
PSBNQUtFSU5UUkVTT1VSQ0VBKDMyNTEyKTsKLQotICAgIHN0ZDo6c3RyaW5nIGNsYXNzTmFtZSA9
IEZvcm1hdFN0cmluZygiQU5HTEUgRGlzcGxheUQzRCAweCUwLjhwIENoaWxkIFdpbmRvdyBDbGFz
cyIsIG1EaXNwbGF5KTsKLQotICAgIFdORENMQVNTQSBjaGlsZFdpbmRvd0NsYXNzRGVzYyA9IHsg
MCB9OwotICAgIGNoaWxkV2luZG93Q2xhc3NEZXNjLnN0eWxlID0gQ1NfT1dOREM7Ci0gICAgY2hp
bGRXaW5kb3dDbGFzc0Rlc2MubHBmblduZFByb2MgPSBJbnRlcm1lZGlhdGVXaW5kb3dQcm9jOwot
ICAgIGNoaWxkV2luZG93Q2xhc3NEZXNjLmNiQ2xzRXh0cmEgPSAwOwotICAgIGNoaWxkV2luZG93
Q2xhc3NEZXNjLmNiV25kRXh0cmEgPSAwOwotICAgIGNoaWxkV2luZG93Q2xhc3NEZXNjLmhJbnN0
YW5jZSA9IEdldE1vZHVsZUhhbmRsZShudWxscHRyKTsKLSAgICBjaGlsZFdpbmRvd0NsYXNzRGVz
Yy5oSWNvbiA9IG51bGxwdHI7Ci0gICAgY2hpbGRXaW5kb3dDbGFzc0Rlc2MuaEN1cnNvciA9IExv
YWRDdXJzb3JBKG51bGxwdHIsIGlkY0Fycm93KTsKLSAgICBjaGlsZFdpbmRvd0NsYXNzRGVzYy5o
YnJCYWNrZ3JvdW5kID0gMDsKLSAgICBjaGlsZFdpbmRvd0NsYXNzRGVzYy5scHN6TWVudU5hbWUg
PSBudWxscHRyOwotICAgIGNoaWxkV2luZG93Q2xhc3NEZXNjLmxwc3pDbGFzc05hbWUgPSBjbGFz
c05hbWUuY19zdHIoKTsKLQotICAgIG1DaGlsZFdpbmRvd0NsYXNzID0gUmVnaXN0ZXJDbGFzc0Eo
JmNoaWxkV2luZG93Q2xhc3NEZXNjKTsKLSAgICBpZiAoIW1DaGlsZFdpbmRvd0NsYXNzKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkZhaWxl
ZCB0byByZWdpc3RlciBjaGlsZCB3aW5kb3cgY2xhc3MuIik7Ci0gICAgfQotI2VuZGlmCi0KICAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKIHZvaWQgRGlzcGxheUQzRDo6
dGVybWluYXRlKCkKIHsKLSAgICBTYWZlRGVsZXRlKG1EZXZpY2UpOwogICAgIFNhZmVEZWxldGUo
bVJlbmRlcmVyKTsKLQotI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQot
ICAgIGlmIChtQ2hpbGRXaW5kb3dDbGFzcyAhPSAwKQotICAgIHsKLSAgICAgICAgVW5yZWdpc3Rl
ckNsYXNzQShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtQ2hpbGRXaW5kb3dDbGFzcyks
IE5VTEwpOwotICAgICAgICBtQ2hpbGRXaW5kb3dDbGFzcyA9IDA7Ci0gICAgfQotI2VuZGlmCiB9
CiAKIGVnbDo6Q29uZmlnU2V0IERpc3BsYXlEM0Q6OmdlbmVyYXRlQ29uZmlncygpIGNvbnN0CkBA
IC0zOTIsMjYgKzMyNSw3IEBACiAKIHZvaWQgRGlzcGxheUQzRDo6Z2VuZXJhdGVFeHRlbnNpb25z
KGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7Ci0gICAgb3V0
RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPSB0cnVlOwotCi0gICAgLy8gQU5H
TEUtc3BlY2lmaWMgZXh0ZW5zaW9ucwotICAgIGlmIChtUmVuZGVyZXItPmdldFNoYXJlSGFuZGxl
U3VwcG9ydCgpKQotICAgIHsKLSAgICAgICAgb3V0RXh0ZW5zaW9ucy0+ZDNkU2hhcmVIYW5kbGVD
bGllbnRCdWZmZXIgPSB0cnVlOwotICAgICAgICBvdXRFeHRlbnNpb25zLT5zdXJmYWNlRDNEVGV4
dHVyZTJEU2hhcmVIYW5kbGUgPSB0cnVlOwotICAgIH0KLQotICAgIG91dEV4dGVuc2lvbnMtPnF1
ZXJ5U3VyZmFjZVBvaW50ZXIgPSB0cnVlOwotICAgIG91dEV4dGVuc2lvbnMtPndpbmRvd0ZpeGVk
U2l6ZSA9IHRydWU7Ci0KLSAgICBpZiAobVJlbmRlcmVyLT5nZXRQb3N0U3ViQnVmZmVyU3VwcG9y
dCgpKQotICAgIHsKLSAgICAgICAgb3V0RXh0ZW5zaW9ucy0+cG9zdFN1YkJ1ZmZlciA9IHRydWU7
Ci0gICAgfQotCi0gICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCA9IHRydWU7Ci0KLSAg
ICBvdXRFeHRlbnNpb25zLT5kZXZpY2VRdWVyeSA9IHRydWU7CisgICAgbVJlbmRlcmVyLT5nZW5l
cmF0ZURpc3BsYXlFeHRlbnNpb25zKG91dEV4dGVuc2lvbnMpOwogfQogCiBzdGQ6OnN0cmluZyBE
aXNwbGF5RDNEOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdApAQCAtNDMzLDkgKzM0NywxNyBAQAog
ICAgIG91dENhcHMtPnRleHR1cmVOUE9UID0gbVJlbmRlcmVyLT5nZXRSZW5kZXJlckV4dGVuc2lv
bnMoKS50ZXh0dXJlTlBPVDsKIH0KIAotQVRPTSBEaXNwbGF5RDNEOjpnZXRDaGlsZFdpbmRvd0Ns
YXNzKCkgY29uc3QKK2VnbDo6RXJyb3IgRGlzcGxheUQzRDo6d2FpdENsaWVudCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1DaGlsZFdpbmRvd0NsYXNzOworICAgIC8vIFVuaW1wbGVtZW50ZWQgYXMg
aXQgaXMgYSBub29wIG9uIEQzRAorICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
IH0KIAorZWdsOjpFcnJvciBEaXNwbGF5RDNEOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRT
dXJmYWNlKSBjb25zdAoreworICAgIC8vIFVuaW1wbGVtZW50ZWQgYXMgaXQgaXMgYSBub29wIG9u
IEQzRAorICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KK30KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQz
RC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvRGlzcGxheUQzRC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQsMTggKzI0LDI5IEBACiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXpl
KGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1p
bmF0ZSgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN1cmZhY2VJbXBsICoqb3V0U3VyZmFjZSkgb3ZlcnJpZGU7Ci0gICAg
ZWdsOjpFcnJvciBjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpIG92ZXJyaWRl
OwotICAgIGVnbDo6RXJyb3IgY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzLCBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpIG92ZXJyaWRlOwot
ICAgIGVnbDo6RXJyb3IgY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlndXJhdGlvbiwgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzLCBT
dXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpIG92ZXJyaWRlOworICAgIC8vIFN1cmZhY2UgY3JlYXRp
b24KKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAg
U3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlk
ZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAK
LSAgICBlZ2w6OkVycm9yIGNyZWF0ZUNvbnRleHQoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywg
Y29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICoqb3V0
Q29udGV4dCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VJbXBsICpjcmVhdGVJbWFnZShFR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2VTaWJsaW5nICpidWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykgb3ZlcnJpZGU7CiAKKyAgICBnbDo6Q29udGV4dCAqY3JlYXRlQ29udGV4dChjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCisgICAg
U3RyZWFtSW1wbCAqY3JlYXRlU3RyZWFtKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KSBvdmVycmlkZTsKKwogICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpk
cmF3U3VyZmFjZSwgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpIG92ZXJyaWRlOwogCiAgICAgZWdsOjpDb25maWdTZXQgZ2VuZXJhdGVDb25maWdzKCkgY29u
c3Qgb3ZlcnJpZGU7CkBAIC01MCw3ICs2MSwxMCBAQAogCiAgICAgc3RkOjpzdHJpbmcgZ2V0VmVu
ZG9yU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBBVE9NIGdldENoaWxkV2luZG93Q2xh
c3MoKSBjb25zdDsKKyAgICBlZ2w6OkVycm9yIHdhaXRDbGllbnQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIHdhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
cHJpdmF0ZToKICAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNp
b25zICpvdXRFeHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsKQEAgLTU5LDkgKzczLDYgQEAKICAg
ICBlZ2w6OkRpc3BsYXkgKm1EaXNwbGF5OwogCiAgICAgcng6OlJlbmRlcmVyRDNEICptUmVuZGVy
ZXI7Ci0gICAgQVRPTSBtQ2hpbGRXaW5kb3dDbGFzczsKLQotICAgIERldmljZUltcGwgKm1EZXZp
Y2U7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNwcAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwLDE1ICsxMCwx
NCBAQAogCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1NoYWRlckQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5k
ZXJlckQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9TaGFkZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1NoYWRlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5
aW5nUGFja2luZy5oIgogCi0vLyBGb3IgdXNlIHdpdGggQXJyYXlTdHJpbmcsIHNlZSBhbmdsZXV0
aWxzLmgKLXN0YXRpY19hc3NlcnQoR0xfSU5WQUxJRF9JTkRFWCA9PSBVSU5UX01BWCwgIkdMX0lO
VkFMSURfSU5ERVggbXVzdCBiZSBlcXVhbCB0byB0aGUgbWF4IHVuc2lnbmVkIGludC4iKTsKLQog
dXNpbmcgbmFtZXNwYWNlIGdsOwogCiBuYW1lc3BhY2UgcngKQEAgLTMxLDEyICszMCwxNyBAQAog
ewogICAgIHN3aXRjaCAoY29tcG9uZW50VHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1VOU0lH
TkVEX0lOVDogICAgICAgICByZXR1cm4gInVpbnQiOwotICAgICAgY2FzZSBHTF9JTlQ6ICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJpbnQiOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVEOgotICAgICAgY2FzZSBHTF9TSUdORURfTk9STUFMSVpFRDoKLSAgICAgIGNhc2UgR0xfRkxP
QVQ6ICAgICAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOwotICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsgICAgICAgcmV0dXJuICJub3QtY29tcG9uZW50LXR5cGUiOworICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIHJldHVybiAidWludCI7CisgICAgICAgIGNh
c2UgR0xfSU5UOgorICAgICAgICAgICAgcmV0dXJuICJpbnQiOworICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQ6CisgICAgICAgIGNhc2UgR0xfU0lHTkVEX05PUk1BTElaRUQ6Cisg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1
cm4gIm5vdC1jb21wb25lbnQtdHlwZSI7CiAgICAgfQogfQogCkBAIC00OSwxNiArNTMsMjcgQEAK
IHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOiAg
ICAgcmV0dXJuICJmbG9hdDJ4MiI7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6ICAgICByZXR1
cm4gImZsb2F0M3gzIjsKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDogICAgIHJldHVybiAiZmxv
YXQ0eDQiOwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyeDM6ICAgcmV0dXJuICJmbG9hdDJ4MyI7
Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4MjogICByZXR1cm4gImZsb2F0M3gyIjsKLSAgICAg
IGNhc2UgR0xfRkxPQVRfTUFUMng0OiAgIHJldHVybiAiZmxvYXQyeDQiOwotICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQ0eDI6ICAgcmV0dXJuICJmbG9hdDR4MiI7Ci0gICAgICBjYXNlIEdMX0ZMT0FU
X01BVDN4NDogICByZXR1cm4gImZsb2F0M3g0IjsKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgz
OiAgIHJldHVybiAiZmxvYXQ0eDMiOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0
dXJuICJub3QtbWF0cml4LXR5cGUiOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6CisgICAg
ICAgICAgICByZXR1cm4gImZsb2F0MngyIjsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgor
ICAgICAgICAgICAgcmV0dXJuICJmbG9hdDN4MyI7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFU
NDoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0eDQiOworICAgICAgICBjYXNlIEdMX0ZMT0FU
X01BVDJ4MzoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQyeDMiOworICAgICAgICBjYXNlIEdM
X0ZMT0FUX01BVDN4MjoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQzeDIiOworICAgICAgICBj
YXNlIEdMX0ZMT0FUX01BVDJ4NDoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQyeDQiOworICAg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDR4MjoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0eDIi
OworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4NDoKKyAgICAgICAgICAgIHJldHVybiAiZmxv
YXQzeDQiOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDR4MzoKKyAgICAgICAgICAgIHJldHVy
biAiZmxvYXQ0eDMiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIHJldHVybiAibm90LW1hdHJpeC10eXBlIjsKICAgICB9CiB9CiAKQEAg
LTY5LDExICs4NCwxMyBAQAogICAgICAgICByZXR1cm4gSExTTE1hdHJpeFR5cGVTdHJpbmcodHlw
ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIEhMU0xDb21wb25lbnRUeXBlU3RyaW5nKGdsOjpWYXJp
YWJsZUNvbXBvbmVudFR5cGUodHlwZSksIGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHR5cGUp
KTsKKyAgICByZXR1cm4gSExTTENvbXBvbmVudFR5cGVTdHJpbmcoZ2w6OlZhcmlhYmxlQ29tcG9u
ZW50VHlwZSh0eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlZh
cmlhYmxlQ29tcG9uZW50Q291bnQodHlwZSkpOwogfQogCi1jb25zdCBQaXhlbFNoYWRlck91dHB1
dFZhcmlhYmxlICpGaW5kT3V0cHV0QXRMb2NhdGlvbihjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNo
YWRlck91dHB1dFZhcmlhYmxlPiAmb3V0cHV0VmFyaWFibGVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbG9jYXRp
b24pCitjb25zdCBQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlICpGaW5kT3V0cHV0QXRMb2NhdGlv
bigKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlPiAmb3V0
cHV0VmFyaWFibGVzLAorICAgIHVuc2lnbmVkIGludCBsb2NhdGlvbikKIHsKICAgICBmb3IgKHNp
emVfdCB2YXJpYWJsZUluZGV4ID0gMDsgdmFyaWFibGVJbmRleCA8IG91dHB1dFZhcmlhYmxlcy5z
aXplKCk7ICsrdmFyaWFibGVJbmRleCkKICAgICB7CkBAIC04MywzMTQgKzEwMCwxMDIgQEAKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBudWxscHRyOwog
fQogCi1jb25zdCBzdGQ6OnN0cmluZyBWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RSSU5HID0gIkBA
IFZFUlRFWCBBVFRSSUJVVEVTIEBAIjsKLWNvbnN0IHN0ZDo6c3RyaW5nIFBJWEVMX09VVFBVVF9T
VFVCX1NUUklORyA9ICJAQCBQSVhFTCBPVVRQVVQgQEAiOwotCi19Ci0KLUR5bmFtaWNITFNMOjpE
eW5hbWljSExTTChSZW5kZXJlckQzRCAqY29uc3QgcmVuZGVyZXIpCi0gICAgOiBtUmVuZGVyZXIo
cmVuZGVyZXIpCit2b2lkIFdyaXRlQXJyYXlTdHJpbmcoc3RkOjpzdHJpbmdzdHJlYW0gJnN0cnN0
ciwgdW5zaWduZWQgaW50IGkpCiB7Ci19Ci0KLXN0YXRpYyBib29sIHBhY2tWYXJ5aW5nKFBhY2tl
ZFZhcnlpbmcgKnZhcnlpbmcsIGNvbnN0IGludCBtYXhWYXJ5aW5nVmVjdG9ycywgVmFyeWluZ1Bh
Y2tpbmcgcGFja2luZykKLXsKLSAgICAvLyBNYWtlIHN1cmUgd2UgdXNlIHRyYW5zcG9zZWQgbWF0
cml4IHR5cGVzIHRvIGNvdW50IHJlZ2lzdGVycyBjb3JyZWN0bHkuCi0gICAgaW50IHJlZ2lzdGVy
cyA9IDA7Ci0gICAgaW50IGVsZW1lbnRzID0gMDsKLQotICAgIGlmICh2YXJ5aW5nLT5pc1N0cnVj
dCgpKQorICAgIHN0YXRpY19hc3NlcnQoR0xfSU5WQUxJRF9JTkRFWCA9PSBVSU5UX01BWCwKKyAg
ICAgICAgICAgICAgICAgICJHTF9JTlZBTElEX0lOREVYIG11c3QgYmUgZXF1YWwgdG8gdGhlIG1h
eCB1bnNpZ25lZCBpbnQuIik7CisgICAgaWYgKGkgPT0gVUlOVF9NQVgpCiAgICAgewotICAgICAg
ICByZWdpc3RlcnMgPSBITFNMVmFyaWFibGVSZWdpc3RlckNvdW50KCp2YXJ5aW5nLCB0cnVlKSAq
IHZhcnlpbmctPmVsZW1lbnRDb3VudCgpOwotICAgICAgICBlbGVtZW50cyA9IDQ7CisgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgR0xlbnVtIHRyYW5zcG9z
ZWRUeXBlID0gVHJhbnNwb3NlTWF0cml4VHlwZSh2YXJ5aW5nLT50eXBlKTsKLSAgICAgICAgcmVn
aXN0ZXJzID0gVmFyaWFibGVSb3dDb3VudCh0cmFuc3Bvc2VkVHlwZSkgKiB2YXJ5aW5nLT5lbGVt
ZW50Q291bnQoKTsKLSAgICAgICAgZWxlbWVudHMgPSBWYXJpYWJsZUNvbHVtbkNvdW50KHRyYW5z
cG9zZWRUeXBlKTsKLSAgICB9CiAKLSAgICBpZiAoZWxlbWVudHMgPj0gMiAmJiBlbGVtZW50cyA8
PSA0KQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPD0gbWF4VmFyeWluZ1ZlY3Rv
cnMgLSByZWdpc3RlcnM7IHIrKykKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBhdmFpbGFi
bGUgPSB0cnVlOworICAgIHN0cnN0ciA8PCAiWyI7CisgICAgc3Ryc3RyIDw8IGk7CisgICAgc3Ry
c3RyIDw8ICJdIjsKK30KIAotICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWdpc3Rl
cnMgJiYgYXZhaWxhYmxlOyB5KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCBlbGVtZW50cyAmJiBhdmFpbGFibGU7IHgrKykKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYWNraW5nW3IgKyB5XVt4XSkKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Citjb25zdCBzdGQ6OnN0cmluZyBWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RSSU5HID0gIkBA
IFZFUlRFWCBBVFRSSUJVVEVTIEBAIjsKK2NvbnN0IHN0ZDo6c3RyaW5nIFBJWEVMX09VVFBVVF9T
VFVCX1NUUklORyAgICAgPSAiQEAgUElYRUwgT1VUUFVUIEBAIjsKK30gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAotICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB2YXJ5aW5nLT5yZWdpc3RlckluZGV4ID0gcjsKLSAgICAgICAgICAgICAg
ICB2YXJ5aW5nLT5jb2x1bW5JbmRleCA9IDA7CitzdGQ6OnN0cmluZyBHZXRWYXJ5aW5nU2VtYW50
aWMoaW50IG1ham9yU2hhZGVyTW9kZWwsIGJvb2wgcHJvZ3JhbVVzZXNQb2ludFNpemUpCit7Cisg
ICAgLy8gU00zIHJlc2VydmVzIHRoZSBURVhDT09SRCBzZW1hbnRpYyBmb3IgcG9pbnQgc3ByaXRl
IHRleGNvb3JkcyAoZ2xfUG9pbnRDb29yZCkKKyAgICAvLyBJbiBEM0QxMSB3ZSBtYW51YWxseSBj
b21wdXRlIGdsX1BvaW50Q29vcmQgaW4gdGhlIEdTLgorICAgIHJldHVybiAoKHByb2dyYW1Vc2Vz
UG9pbnRTaXplICYmIG1ham9yU2hhZGVyTW9kZWwgPCA0KSA/ICJDT0xPUiIgOiAiVEVYQ09PUkQi
KTsKK30KIAotICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVnaXN0ZXJzOyB5
KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IGVsZW1lbnRzOyB4KyspCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhY2tpbmdbciArIHldW3hdID0gJip2YXJ5aW5nOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorLy8gRHluYW1pY0hMU0wgaW1wbGVtZW50YXRp
b24KIAotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKGVsZW1lbnRzID09IDIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZvciAoaW50IHIgPSBtYXhWYXJ5aW5nVmVjdG9ycyAtIHJlZ2lzdGVyczsgciA+PSAwOyByLS0p
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9vbCBhdmFpbGFibGUgPSB0cnVlOwot
Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCByZWdpc3RlcnMgJiYgYXZhaWxh
YmxlOyB5KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGlu
dCB4ID0gMjsgeCA8IDQgJiYgYXZhaWxhYmxlOyB4KyspCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWNraW5nW3IgKyB5XVt4XSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGUpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nLT5yZWdpc3Rlcklu
ZGV4ID0gcjsKLSAgICAgICAgICAgICAgICAgICAgdmFyeWluZy0+Y29sdW1uSW5kZXggPSAyOwot
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcmVnaXN0ZXJzOyB5Kysp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50
IHggPSAyOyB4IDwgNDsgeCsrKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhY2tpbmdbciArIHldW3hdID0gJip2YXJ5aW5nOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGVsZW1lbnRzID09IDEpCi0gICAgewotICAg
ICAgICBpbnQgc3BhY2VbNF0gPSB7IDAgfTsKLQotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IG1heFZhcnlpbmdWZWN0b3JzOyB5KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgNDsgeCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNwYWNl
W3hdICs9IHBhY2tpbmdbeV1beF0gPyAwIDogMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGludCBjb2x1bW4gPSAwOwotCi0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
NDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoc3BhY2VbeF0gPj0gcmVnaXN0ZXJz
ICYmIChzcGFjZVtjb2x1bW5dIDwgcmVnaXN0ZXJzIHx8IHNwYWNlW3hdIDwgc3BhY2VbY29sdW1u
XSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29sdW1uID0geDsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzcGFjZVtjb2x1bW5dID49IHJlZ2lzdGVy
cykKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgciA9IDA7IHIgPCBtYXhWYXJ5aW5n
VmVjdG9yczsgcisrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghcGFja2lu
Z1tyXVtjb2x1bW5dKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
eWluZy0+cmVnaXN0ZXJJbmRleCA9IHI7Ci0gICAgICAgICAgICAgICAgICAgIHZhcnlpbmctPmNv
bHVtbkluZGV4ID0gY29sdW1uOwotCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSBy
OyB5IDwgciArIHJlZ2lzdGVyczsgeSsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBwYWNraW5nW3ldW2NvbHVtbl0gPSAmKnZhcnlpbmc7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKLQotICAgIHJldHVybiBmYWxzZTsK
K0R5bmFtaWNITFNMOjpEeW5hbWljSExTTChSZW5kZXJlckQzRCAqY29uc3QgcmVuZGVyZXIpIDog
bVJlbmRlcmVyKHJlbmRlcmVyKQorewogfQogCi0vLyBQYWNrcyB2YXJ5aW5ncyBpbnRvIGdlbmVy
aWMgdmFyeWluZyByZWdpc3RlcnMsIHVzaW5nIHRoZSBhbGdvcml0aG0gZnJvbSBbT3BlbkdMIEVT
IFNoYWRpbmcgTGFuZ3VhZ2UgMS4wMCByZXYuIDE3XSBhcHBlbmRpeCBBIHNlY3Rpb24gNyBwYWdl
IDExMQotLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHVzZWQgdmFyeWluZyByZWdpc3RlcnMsIG9y
IC0xIGlmIHVuc3VjY2VzZnVsCi1pbnQgRHluYW1pY0hMU0w6OnBhY2tWYXJ5aW5ncyhJbmZvTG9n
ICZpbmZvTG9nLCBWYXJ5aW5nUGFja2luZyBwYWNraW5nLCBTaGFkZXJEM0QgKmZyYWdtZW50U2hh
ZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFk
ZXIsIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncykKK3ZvaWQgRHluYW1pY0hMU0w6OmdlbmVyYXRlVmFyeWluZ0hMU0woY29uc3QgVmFyeWlu
Z1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSAmaGxzbFN0cmVhbSkgY29uc3QKIHsKLSAgICAvLyBU
T0RPIChnZW9mZmxhbmcpOiAgVXNlIGNvbnRleHQncyBjYXBzCi0gICAgY29uc3QgaW50IG1heFZh
cnlpbmdWZWN0b3JzID0gbVJlbmRlcmVyLT5nZXRSZW5kZXJlckNhcHMoKS5tYXhWYXJ5aW5nVmVj
dG9yczsKKyAgICBzdGQ6OnN0cmluZyB2YXJ5aW5nU2VtYW50aWMgPQorICAgICAgICBHZXRWYXJ5
aW5nU2VtYW50aWMobVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCksIHZhcnlpbmdQYWNr
aW5nLnVzZXNQb2ludFNpemUoKSk7CiAKLSAgICB2ZXJ0ZXhTaGFkZXItPnJlc2V0VmFyeWluZ3NS
ZWdpc3RlckFzc2lnbm1lbnQoKTsKLSAgICBmcmFnbWVudFNoYWRlci0+cmVzZXRWYXJ5aW5nc1Jl
Z2lzdGVyQXNzaWdubWVudCgpOwotCi0gICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHBhY2tlZFZh
cnlpbmdzOwotCi0gICAgc3RkOjp2ZWN0b3I8Z2w6OlBhY2tlZFZhcnlpbmc+ICZmcmFnbWVudFZh
cnlpbmdzID0gZnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCk7Ci0gICAgc3RkOjp2ZWN0b3I8
Z2w6OlBhY2tlZFZhcnlpbmc+ICZ2ZXJ0ZXhWYXJ5aW5ncyA9IHZlcnRleFNoYWRlci0+Z2V0VmFy
eWluZ3MoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJ5aW5nSW5kZXggPSAwOyB2YXJ5aW5n
SW5kZXggPCBmcmFnbWVudFZhcnlpbmdzLnNpemUoKTsgdmFyeWluZ0luZGV4KyspCisgICAgZm9y
IChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA6IHZhcnlpbmdQYWNr
aW5nLmdldFJlZ2lzdGVyTGlzdCgpKQogICAgIHsKLSAgICAgICAgUGFja2VkVmFyeWluZyAqdmFy
eWluZyA9ICZmcmFnbWVudFZhcnlpbmdzW3ZhcnlpbmdJbmRleF07CisgICAgICAgIGNvbnN0IGF1
dG8gJnZhcnlpbmcgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZhcnlpbmc7CisgICAg
ICAgIEFTU0VSVCghdmFyeWluZy5pc1N0cnVjdCgpKTsKIAotICAgICAgICAvLyBEbyBub3QgYXNz
aWduIHJlZ2lzdGVycyB0byBidWlsdC1pbiBvciB1bnJlZmVyZW5jZWQgdmFyeWluZ3MKLSAgICAg
ICAgaWYgKHZhcnlpbmctPmlzQnVpbHRJbigpIHx8ICF2YXJ5aW5nLT5zdGF0aWNVc2UpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8vIFRPRE86
IEFkZCBjaGVja3MgdG8gZW5zdXJlIEQzRCBpbnRlcnBvbGF0aW9uIG1vZGlmaWVycyBkb24ndCBy
ZXN1bHQgaW4gdG9vIG1hbnkKKyAgICAgICAgLy8gcmVnaXN0ZXJzIGJlaW5nIHVzZWQuCisgICAg
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGVyZSBhcmUgTiByZWdpc3RlcnMsIGFuZCB3ZSBoYXZl
IE4gdmVjMyB2YXJ5aW5ncyBhbmQgMSBmbG9hdAorICAgICAgICAvLyB2YXJ5aW5nLCB0aGVuIEQz
RCB3aWxsIHBhY2sgdGhlbSBpbnRvIE4gcmVnaXN0ZXJzLgorICAgICAgICAvLyBJZiB0aGUgZmxv
YXQgdmFyeWluZyBoYXMgdGhlICdub2ludGVycG9sYXRpb24nIG1vZGlmaWVyIG9uIGl0IHRoZW4g
d2Ugd291bGQgbmVlZAorICAgICAgICAvLyBOICsgMSByZWdpc3RlcnMsIGFuZCBEM0QgY29tcGls
YXRpb24gd2lsbCBmYWlsLgogCi0gICAgICAgIGlmIChwYWNrVmFyeWluZyh2YXJ5aW5nLCBtYXhW
YXJ5aW5nVmVjdG9ycywgcGFja2luZykpCisgICAgICAgIHN3aXRjaCAocmVnaXN0ZXJJbmZvLnBh
Y2tlZFZhcnlpbmctPmludGVycG9sYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHBhY2tl
ZFZhcnlpbmdzLmluc2VydCh2YXJ5aW5nLT5uYW1lKTsKKyAgICAgICAgICAgIGNhc2Ugc2g6OklO
VEVSUE9MQVRJT05fU01PT1RIOgorICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAgICAi
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBzaDo6SU5URVJQT0xB
VElPTl9GTEFUOgorICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAgICBub2ludGVycG9s
YXRpb24gIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugc2g6OklO
VEVSUE9MQVRJT05fQ0VOVFJPSUQ6CisgICAgICAgICAgICAgICAgaGxzbFN0cmVhbSA8PCAiICAg
IGNlbnRyb2lkICI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IHBhY2sg
dmFyeWluZyAlcyIsIHZhcnlpbmctPm5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAgICByZXR1cm4g
LTE7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCBmZWVkYmFja1Zh
cnlpbmdJbmRleCA9IDA7IGZlZWRiYWNrVmFyeWluZ0luZGV4IDwgdHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncy5zaXplKCk7IGZlZWRiYWNrVmFyeWluZ0luZGV4KyspCi0gICAgewotICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nID0gdHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5nc1tmZWVkYmFja1ZhcnlpbmdJbmRleF07Ci0KLSAgICAgICAgaWYgKHRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZyA9PSAiZ2xfUG9zaXRpb24iIHx8IHRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZyA9PSAiZ2xfUG9pbnRTaXplIikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gZG8g
bm90IHBhY2sgYnVpbHRpbiBYRkIgdmFyeWluZ3MKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHBhY2tlZFZhcnlpbmdzLmZpbmQodHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nKSA9PSBwYWNrZWRWYXJ5aW5ncy5lbmQoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgdmFy
eWluZ0luZGV4ID0gMDsgdmFyeWluZ0luZGV4IDwgdmVydGV4VmFyeWluZ3Muc2l6ZSgpOyB2YXJ5
aW5nSW5kZXgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBQYWNrZWRWYXJ5aW5n
ICp2YXJ5aW5nID0gJnZlcnRleFZhcnlpbmdzW3ZhcnlpbmdJbmRleF07Ci0gICAgICAgICAgICAg
ICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyA9PSB2YXJ5aW5nLT5uYW1lKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWNrVmFyeWluZyh2YXJ5aW5n
LCBtYXhWYXJ5aW5nVmVjdG9ycywgcGFja2luZykpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJDb3VsZCBub3QgcGFjayB2YXJ5
aW5nICVzIiwgdmFyeWluZy0+bmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAg
IGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWZvdW5kKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJUcmFuc2Zvcm0gZmVlZGJhY2sg
dmFyeWluZyAlcyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgdmVydGV4IHNoYWRlci4iLCB0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmcuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwot
ICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIEdMZW51bSB0cmFuc3Bvc2VkVHlwZSA9
IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlpbmcudHlwZSk7CisgICAgICAgIEdMZW51bSBj
b21wb25lbnRUeXBlICA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudFR5cGUodHJhbnNwb3NlZFR5cGUp
OworICAgICAgICBpbnQgY29sdW1uQ291bnQgPSBnbDo6VmFyaWFibGVDb2x1bW5Db3VudCh0cmFu
c3Bvc2VkVHlwZSk7CisgICAgICAgIGhsc2xTdHJlYW0gPDwgSExTTENvbXBvbmVudFR5cGVTdHJp
bmcoY29tcG9uZW50VHlwZSwgY29sdW1uQ291bnQpOworICAgICAgICB1bnNpZ25lZCBpbnQgc2Vt
YW50aWNJbmRleCA9IHJlZ2lzdGVySW5mby5zZW1hbnRpY0luZGV4OworICAgICAgICBobHNsU3Ry
ZWFtIDw8ICIgdiIgPDwgc2VtYW50aWNJbmRleCA8PCAiIDogIiA8PCB2YXJ5aW5nU2VtYW50aWMg
PDwgc2VtYW50aWNJbmRleCA8PCAiO1xuIjsKICAgICB9Ci0KLSAgICAvLyBSZXR1cm4gdGhlIG51
bWJlciBvZiB1c2VkIHJlZ2lzdGVycwotICAgIGludCByZWdpc3RlcnMgPSAwOwotCi0gICAgZm9y
IChpbnQgciA9IDA7IHIgPCBtYXhWYXJ5aW5nVmVjdG9yczsgcisrKQotICAgIHsKLSAgICAgICAg
aWYgKHBhY2tpbmdbcl1bMF0gfHwgcGFja2luZ1tyXVsxXSB8fCBwYWNraW5nW3JdWzJdIHx8IHBh
Y2tpbmdbcl1bM10pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlZ2lzdGVycysrOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlZ2lzdGVyczsKIH0KIAotc3RkOjpzdHJpbmcgRHlu
YW1pY0hMU0w6OmdlbmVyYXRlVmFyeWluZ0hMU0woY29uc3QgU2hhZGVyRDNEICpzaGFkZXIpIGNv
bnN0CitzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVWZXJ0ZXhTaGFkZXJGb3JJbnB1
dExheW91dCgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlU2hhZGVyLAorICAgIGNvbnN0
IElucHV0TGF5b3V0ICZpbnB1dExheW91dCwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0
cmlidXRlPiAmc2hhZGVyQXR0cmlidXRlcykgY29uc3QKIHsKLSAgICBzdGQ6OnN0cmluZyB2YXJ5
aW5nU2VtYW50aWMgPSBnZXRWYXJ5aW5nU2VtYW50aWMoc2hhZGVyLT5tVXNlc1BvaW50U2l6ZSk7
Ci0gICAgc3RkOjpzdHJpbmcgdmFyeWluZ0hMU0w7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ry
dWN0U3RyZWFtOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGluaXRTdHJlYW07CiAKLSAgICBjb25z
dCBzdGQ6OnZlY3RvcjxnbDo6UGFja2VkVmFyeWluZz4gJnZhcnlpbmdzID0gc2hhZGVyLT5nZXRW
YXJ5aW5ncygpOworICAgIHN0cnVjdFN0cmVhbSA8PCAic3RydWN0IFZTX0lOUFVUXG4iCisgICAg
ICAgICAgICAgICAgIDw8ICJ7XG4iOwogCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyeWluZ0lu
ZGV4ID0gMDsgdmFyeWluZ0luZGV4IDwgdmFyeWluZ3Muc2l6ZSgpOyB2YXJ5aW5nSW5kZXgrKykK
LSAgICB7Ci0gICAgICAgIGNvbnN0IFBhY2tlZFZhcnlpbmcgJnZhcnlpbmcgPSB2YXJ5aW5nc1t2
YXJ5aW5nSW5kZXhdOwotICAgICAgICBpZiAodmFyeWluZy5yZWdpc3RlckFzc2lnbmVkKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc0J1aWx0SW4oKSk7Ci0gICAg
ICAgICAgICBHTGVudW0gdHJhbnNwb3NlZFR5cGUgPSBUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlp
bmcudHlwZSk7Ci0gICAgICAgICAgICBpbnQgdmFyaWFibGVSb3dzID0gKHZhcnlpbmcuaXNTdHJ1
Y3QoKSA/IDEgOiBWYXJpYWJsZVJvd0NvdW50KHRyYW5zcG9zZWRUeXBlKSk7Ci0KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8IHZh
cnlpbmcuZWxlbWVudENvdW50KCk7IGVsZW1lbnRJbmRleCsrKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHZhcmlhYmxlUm93czsgcm93Kysp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBBZGQgY2hl
Y2tzIHRvIGVuc3VyZSBEM0QgaW50ZXJwb2xhdGlvbiBtb2RpZmllcnMgZG9uJ3QgcmVzdWx0IGlu
IHRvbyBtYW55IHJlZ2lzdGVycyBiZWluZyB1c2VkLgotICAgICAgICAgICAgICAgICAgICAvLyBG
b3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIE4gcmVnaXN0ZXJzLCBhbmQgd2UgaGF2ZSBOIHZlYzMg
dmFyeWluZ3MgYW5kIDEgZmxvYXQgdmFyeWluZywgdGhlbiBEM0Qgd2lsbCBwYWNrIHRoZW0gaW50
byBOIHJlZ2lzdGVycy4KLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZsb2F0IHZhcnlp
bmcgaGFzIHRoZSAnbm9pbnRlcnBvbGF0aW9uJyBtb2RpZmllciBvbiBpdCB0aGVuIHdlIHdvdWxk
IG5lZWQgTiArIDEgcmVnaXN0ZXJzLCBhbmQgRDNEIGNvbXBpbGF0aW9uIHdpbGwgZmFpbC4KLQot
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhcnlpbmcuaW50ZXJwb2xhdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc2g6OklOVEVSUE9M
QVRJT05fU01PT1RIOiAgIHZhcnlpbmdITFNMICs9ICIgICAgIjsgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc2g6OklOVEVSUE9MQVRJT05fRkxBVDog
ICAgIHZhcnlpbmdITFNMICs9ICIgICAgbm9pbnRlcnBvbGF0aW9uICI7IGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgIGNhc2Ugc2g6OklOVEVSUE9MQVRJT05fQ0VOVFJPSUQ6IHZhcnlpbmdI
TFNMICs9ICIgICAgY2VudHJvaWQgIjsgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNlbWFudGljSW5kZXggPSBlbGVtZW50SW5k
ZXggKiB2YXJpYWJsZVJvd3MgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcnlpbmcuY29sdW1uSW5kZXggKiBtUmVuZGVyZXItPmdldFJlbmRlcmVy
Q2FwcygpLm1heFZhcnlpbmdWZWN0b3JzICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXJ5aW5nLnJlZ2lzdGVySW5kZXggKyByb3c7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG4gPSBTdHIoc2VtYW50aWNJbmRleCk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgdHlwZVN0cmluZzsKLQotICAgICAgICAgICAgICAg
ICAgICBpZiAodmFyeWluZy5pc1N0cnVjdCgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBwYXNzIGJhY2sgdHJhbnNsYXRl
ZCBuYW1lIGZyb20gdGhlIHNoYWRlciB0cmFuc2xhdG9yCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0eXBlU3RyaW5nID0gZGVjb3JhdGVWYXJpYWJsZSh2YXJ5aW5nLnN0cnVjdE5hbWUpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvbXBvbmVudFR5cGUg
PSBWYXJpYWJsZUNvbXBvbmVudFR5cGUodHJhbnNwb3NlZFR5cGUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNvbHVtbkNvdW50ID0gVmFyaWFibGVDb2x1bW5Db3VudCh0cmFuc3Bvc2Vk
VHlwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlU3RyaW5nID0gSExTTENvbXBvbmVu
dFR5cGVTdHJpbmcoY29tcG9uZW50VHlwZSwgY29sdW1uQ291bnQpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhcnlpbmdITFNMICs9IHR5cGVTdHJpbmcgKyAi
IHYiICsgbiArICIgOiAiICsgdmFyeWluZ1NlbWFudGljICsgbiArICI7XG4iOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB2
YXJ5aW5nSExTTDsKLX0KLQotc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlVmVydGV4
U2hhZGVyRm9ySW5wdXRMYXlvdXQoY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZVNoYWRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZlcnRleEZvcm1hdCBpbnB1dExheW91dFtdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OkF0dHJpYnV0ZT4gJnNoYWRlckF0dHJpYnV0ZXMpIGNvbnN0Ci17Ci0gICAgc3RkOjpzdHJp
bmcgc3RydWN0SExTTCwgaW5pdEhMU0w7Ci0KLSAgICBpbnQgc2VtYW50aWNJbmRleCA9IDA7Cisg
ICAgaW50IHNlbWFudGljSW5kZXggICAgICAgPSAwOwogICAgIHVuc2lnbmVkIGludCBpbnB1dElu
ZGV4ID0gMDsKIAogICAgIC8vIElmIGdsX1BvaW50U2l6ZSBpcyB1c2VkIGluIHRoZSBzaGFkZXIg
dGhlbiBwb2ludHNwcml0ZXMgcmVuZGVyaW5nIGlzIGV4cGVjdGVkLgogICAgIC8vIElmIHRoZSBy
ZW5kZXJlciBkb2VzIG5vdCBzdXBwb3J0IEdlb21ldHJ5IHNoYWRlcnMgdGhlbiBJbnN0YW5jZWQg
UG9pbnRTcHJpdGUgZW11bGF0aW9uCiAgICAgLy8gbXVzdCBiZSB1c2VkLgogICAgIGJvb2wgdXNl
c1BvaW50U2l6ZSA9IHNvdXJjZVNoYWRlci5maW5kKCJHTF9VU0VTX1BPSU5UX1NJWkUiKSAhPSBz
dGQ6OnN0cmluZzo6bnBvczsKLSAgICBib29sIHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uID0gdXNlc1BvaW50U2l6ZSAmJiBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkudXNlSW5z
dGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb247CisgICAgYm9vbCB1c2VJbnN0YW5jZWRQb2ludFNw
cml0ZUVtdWxhdGlvbiA9CisgICAgICAgIHVzZXNQb2ludFNpemUgJiYgbVJlbmRlcmVyLT5nZXRX
b3JrYXJvdW5kcygpLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uOwogCiAgICAgLy8g
SW5zdGFuY2VkIFBvaW50U3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlcyBhZGRpdGlvbmFsIGVudHJp
ZXMgaW4gdGhlCiAgICAgLy8gVlNfSU5QVVQgc3RydWN0dXJlIHRvIHN1cHBvcnQgdGhlIHZlcnRp
Y2VzIHRoYXQgbWFrZSB1cCB0aGUgcXVhZCB2ZXJ0aWNlcy4KQEAgLTQwMiw4ICsyMDcsOCBAQAog
ICAgIC8vIGJlZm9yZSBwZXIgaW5zdGFuY2UgZGF0YSBpbiB0aGUgc2hhZGVyLgogICAgIGlmICh1
c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbikKICAgICB7Ci0gICAgICAgIHN0cnVjdEhM
U0wgKz0gIiAgICBmbG9hdDMgc3ByaXRlVmVydGV4UG9zIDogU1BSSVRFUE9TSVRJT04wO1xuIjsK
LSAgICAgICAgc3RydWN0SExTTCArPSAiICAgIGZsb2F0MiBzcHJpdGVUZXhDb29yZCA6IFNQUklU
RVRFWENPT1JEMDtcbiI7CisgICAgICAgIHN0cnVjdFN0cmVhbSA8PCAiICAgIGZsb2F0MyBzcHJp
dGVWZXJ0ZXhQb3MgOiBTUFJJVEVQT1NJVElPTjA7XG4iCisgICAgICAgICAgICAgICAgICAgICA8
PCAiICAgIGZsb2F0MiBzcHJpdGVUZXhDb29yZCA6IFNQUklURVRFWENPT1JEMDtcbiI7CiAgICAg
fQogCiAgICAgZm9yIChzaXplX3QgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRleCA8
IHNoYWRlckF0dHJpYnV0ZXMuc2l6ZSgpOyArK2F0dHJpYnV0ZUluZGV4KQpAQCAtNDEyLDkzICsy
MTcsMTA1IEBACiAgICAgICAgIGlmICghc2hhZGVyQXR0cmlidXRlLm5hbWUuZW1wdHkoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlucHV0SW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJ
QlMpOwotICAgICAgICAgICAgY29uc3QgVmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhGb3JtYXQgPSBpbnB1
dExheW91dFtpbnB1dEluZGV4XTsKKyAgICAgICAgICAgIFZlcnRleEZvcm1hdFR5cGUgdmVydGV4
Rm9ybWF0VHlwZSA9CisgICAgICAgICAgICAgICAgaW5wdXRJbmRleCA8IGlucHV0TGF5b3V0LnNp
emUoKSA/IGlucHV0TGF5b3V0W2lucHV0SW5kZXhdIDogVkVSVEVYX0ZPUk1BVF9JTlZBTElEOwog
CiAgICAgICAgICAgICAvLyBITFNMIGNvZGUgZm9yIGlucHV0IHN0cnVjdHVyZQogICAgICAgICAg
ICAgaWYgKElzTWF0cml4VHlwZShzaGFkZXJBdHRyaWJ1dGUudHlwZSkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgLy8gTWF0cml4IHR5cGVzIGFyZSBhbHdheXMgdHJhbnNwb3NlZAot
ICAgICAgICAgICAgICAgIHN0cnVjdEhMU0wgKz0gIiAgICAiICsgSExTTE1hdHJpeFR5cGVTdHJp
bmcoVHJhbnNwb3NlTWF0cml4VHlwZShzaGFkZXJBdHRyaWJ1dGUudHlwZSkpOworICAgICAgICAg
ICAgICAgIHN0cnVjdFN0cmVhbSA8PCAiICAgICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgSExTTE1hdHJpeFR5cGVTdHJpbmcoVHJhbnNwb3NlTWF0cml4VHlwZShzaGFkZXJBdHRy
aWJ1dGUudHlwZSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEdMZW51bSBjb21wb25lbnRUeXBlID0gbVJlbmRlcmVyLT5n
ZXRWZXJ0ZXhDb21wb25lbnRUeXBlKHZlcnRleEZvcm1hdCk7CisgICAgICAgICAgICAgICAgR0xl
bnVtIGNvbXBvbmVudFR5cGUgPSBtUmVuZGVyZXItPmdldFZlcnRleENvbXBvbmVudFR5cGUodmVy
dGV4Rm9ybWF0VHlwZSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoc2hhZGVyQXR0cmlidXRlLm5h
bWUgPT0gImdsX0luc3RhbmNlSUQiKQorICAgICAgICAgICAgICAgIGlmIChzaGFkZXJBdHRyaWJ1
dGUubmFtZSA9PSAiZ2xfSW5zdGFuY2VJRCIgfHwKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVy
QXR0cmlidXRlLm5hbWUgPT0gImdsX1ZlcnRleElEIikKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIFRoZSBpbnB1dCB0eXBlIG9mIHRoZSBpbnN0YW5jZSBJRCBpbiBI
TFNMICh1aW50KSBkaWZmZXJzIGZyb20gdGhlIG9uZSBpbiBFU1NMIChpbnQpLgotICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3RITFNMICs9ICIgdWludCI7CisgICAgICAgICAgICAgICAgICAgIC8v
IFRoZSBpbnB1dCB0eXBlcyBvZiB0aGUgaW5zdGFuY2UgSUQgYW5kIHZlcnRleCBJRCBpbiBITFNM
ICh1aW50KSBkaWZmZXJzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9uZXMgaW4g
RVNTTCAoaW50KS4KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0U3RyZWFtIDw8ICIgdWludCI7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cnVjdEhMU0wgKz0gIiAgICAiICsgSExTTENvbXBv
bmVudFR5cGVTdHJpbmcoY29tcG9uZW50VHlwZSwgVmFyaWFibGVDb21wb25lbnRDb3VudChzaGFk
ZXJBdHRyaWJ1dGUudHlwZSkpOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RTdHJlYW0gPDwg
IiAgICAiIDw8IEhMU0xDb21wb25lbnRUeXBlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUNvbXBvbmVudENv
dW50KHNoYWRlckF0dHJpYnV0ZS50eXBlKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBzdHJ1Y3RITFNMICs9ICIgIiArIGRlY29yYXRlVmFyaWFibGUo
c2hhZGVyQXR0cmlidXRlLm5hbWUpICsgIiA6ICI7CisgICAgICAgICAgICBzdHJ1Y3RTdHJlYW0g
PDwgIiAiIDw8IGRlY29yYXRlVmFyaWFibGUoc2hhZGVyQXR0cmlidXRlLm5hbWUpIDw8ICIgOiAi
OwogCiAgICAgICAgICAgICBpZiAoc2hhZGVyQXR0cmlidXRlLm5hbWUgPT0gImdsX0luc3RhbmNl
SUQiKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0cnVjdEhMU0wgKz0gIlNWX0lu
c3RhbmNlSUQiOworICAgICAgICAgICAgICAgIHN0cnVjdFN0cmVhbSA8PCAiU1ZfSW5zdGFuY2VJ
RCI7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzaGFkZXJBdHRyaWJ1dGUu
bmFtZSA9PSAiZ2xfVmVydGV4SUQiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0
cnVjdFN0cmVhbSA8PCAiU1ZfVmVydGV4SUQiOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0cnVjdEhMU0wgKz0gIlRFWENP
T1JEIiArIFN0cihzZW1hbnRpY0luZGV4KTsKKyAgICAgICAgICAgICAgICBzdHJ1Y3RTdHJlYW0g
PDwgIlRFWENPT1JEIiA8PCBzZW1hbnRpY0luZGV4OwogICAgICAgICAgICAgICAgIHNlbWFudGlj
SW5kZXggKz0gVmFyaWFibGVSZWdpc3RlckNvdW50KHNoYWRlckF0dHJpYnV0ZS50eXBlKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3RydWN0SExTTCArPSAiO1xuIjsKKyAgICAgICAg
ICAgIHN0cnVjdFN0cmVhbSA8PCAiO1xuIjsKIAogICAgICAgICAgICAgLy8gSExTTCBjb2RlIGZv
ciBpbml0aWFsaXphdGlvbgotICAgICAgICAgICAgaW5pdEhMU0wgKz0gIiAgICAiICsgZGVjb3Jh
dGVWYXJpYWJsZShzaGFkZXJBdHRyaWJ1dGUubmFtZSkgKyAiID0gIjsKKyAgICAgICAgICAgIGlu
aXRTdHJlYW0gPDwgIiAgICAiIDw8IGRlY29yYXRlVmFyaWFibGUoc2hhZGVyQXR0cmlidXRlLm5h
bWUpIDw8ICIgPSAiOwogCiAgICAgICAgICAgICAvLyBNaXNtYXRjaGVkIHZlcnRleCBhdHRyaWJ1
dGUgdG8gdmVydGV4IGlucHV0IG1heSByZXN1bHQgaW4gYW4gdW5kZWZpbmVkCiAgICAgICAgICAg
ICAvLyBkYXRhIHJlaW50ZXJwcmV0YXRpb24gKGVnIGZvciBwdXJlIGludGVnZXItPmZsb2F0LCBm
bG9hdC0+cHVyZSBpbnRlZ2VyKQogICAgICAgICAgICAgLy8gVE9ETzogaXNzdWUgd2FybmluZyB3
aXRoIGdsIGRlYnVnIGluZm8gZXh0ZW5zaW9uLCB3aGVuIHN1cHBvcnRlZAogICAgICAgICAgICAg
aWYgKElzTWF0cml4VHlwZShzaGFkZXJBdHRyaWJ1dGUudHlwZSkgfHwKLSAgICAgICAgICAgICAg
ICAobVJlbmRlcmVyLT5nZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZSh2ZXJ0ZXhGb3JtYXQpICYgVkVS
VEVYX0NPTlZFUlRfR1BVKSAhPSAwKQorICAgICAgICAgICAgICAgIChtUmVuZGVyZXItPmdldFZl
cnRleENvbnZlcnNpb25UeXBlKHZlcnRleEZvcm1hdFR5cGUpICYgVkVSVEVYX0NPTlZFUlRfR1BV
KSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluaXRITFNMICs9IGdlbmVy
YXRlQXR0cmlidXRlQ29udmVyc2lvbkhMU0wodmVydGV4Rm9ybWF0LCBzaGFkZXJBdHRyaWJ1dGUp
OworICAgICAgICAgICAgICAgIGluaXRTdHJlYW0gPDwgZ2VuZXJhdGVBdHRyaWJ1dGVDb252ZXJz
aW9uSExTTCh2ZXJ0ZXhGb3JtYXRUeXBlLCBzaGFkZXJBdHRyaWJ1dGUpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluaXRI
TFNMICs9ICJpbnB1dC4iICsgZGVjb3JhdGVWYXJpYWJsZShzaGFkZXJBdHRyaWJ1dGUubmFtZSk7
CisgICAgICAgICAgICAgICAgaW5pdFN0cmVhbSA8PCAiaW5wdXQuIiA8PCBkZWNvcmF0ZVZhcmlh
YmxlKHNoYWRlckF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aW5pdEhMU0wgKz0gIjtcbiI7CisgICAgICAgICAgICBpbml0U3RyZWFtIDw8ICI7XG4iOwogCiAg
ICAgICAgICAgICBpbnB1dEluZGV4ICs9IFZhcmlhYmxlUm93Q291bnQoVHJhbnNwb3NlTWF0cml4
VHlwZShzaGFkZXJBdHRyaWJ1dGUudHlwZSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgc3Rk
OjpzdHJpbmcgcmVwbGFjZW1lbnRITFNMID0gInN0cnVjdCBWU19JTlBVVFxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iICsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3RITFNMICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAifTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInZvaWQgaW5pdEF0dHJpYnV0ZXMoVlNfSU5QVVQg
aW5wdXQpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIgKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRITFNMICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIjsKKyAgICBzdHJ1Y3RTdHJlYW0gPDwgIn07XG4iCisg
ICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgInZvaWQgaW5pdEF0
dHJpYnV0ZXMoVlNfSU5QVVQgaW5wdXQpXG4iCisgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgIDw8IGluaXRTdHJlYW0uc3RyKCkgPDwgIn1cbiI7CiAKICAgICBzdGQ6
OnN0cmluZyB2ZXJ0ZXhITFNMKHNvdXJjZVNoYWRlcik7CiAKICAgICBzaXplX3QgY29weUluc2Vy
dGlvblBvcyA9IHZlcnRleEhMU0wuZmluZChWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RSSU5HKTsK
LSAgICB2ZXJ0ZXhITFNMLnJlcGxhY2UoY29weUluc2VydGlvblBvcywgVkVSVEVYX0FUVFJJQlVU
RV9TVFVCX1NUUklORy5sZW5ndGgoKSwgcmVwbGFjZW1lbnRITFNMKTsKKyAgICB2ZXJ0ZXhITFNM
LnJlcGxhY2UoY29weUluc2VydGlvblBvcywgVkVSVEVYX0FUVFJJQlVURV9TVFVCX1NUUklORy5s
ZW5ndGgoKSwgc3RydWN0U3RyZWFtLnN0cigpKTsKIAogICAgIHJldHVybiB2ZXJ0ZXhITFNMOwog
fQogCi1zdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVQaXhlbFNoYWRlckZvck91dHB1
dFNpZ25hdHVyZShjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlU2hhZGVyLCBjb25zdCBzdGQ6OnZl
Y3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlPiAmb3V0cHV0VmFyaWFibGVzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1c2VzRnJhZ0RlcHRoLCBjb25zdCBzdGQ6OnZlY3RvcjxHTGVudW0+ICZvdXRwdXRMYXlv
dXQpIGNvbnN0CitzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVQaXhlbFNoYWRlckZv
ck91dHB1dFNpZ25hdHVyZSgKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlU2hhZGVyLAor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBpeGVsU2hhZGVyT3V0cHV0VmFyaWFibGU+ICZvdXRwdXRW
YXJpYWJsZXMsCisgICAgYm9vbCB1c2VzRnJhZ0RlcHRoLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PEdMZW51bT4gJm91dHB1dExheW91dCkgY29uc3QKIHsKLSAgICBjb25zdCBpbnQgc2hhZGVyTW9k
ZWwgPSBtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKTsKKyAgICBjb25zdCBpbnQgc2hh
ZGVyTW9kZWwgICAgICA9IG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpOwogICAgIHN0
ZDo6c3RyaW5nIHRhcmdldFNlbWFudGljID0gKHNoYWRlck1vZGVsID49IDQpID8gIlNWX1RBUkdF
VCIgOiAiQ09MT1IiOwotICAgIHN0ZDo6c3RyaW5nIGRlcHRoU2VtYW50aWMgPSAoc2hhZGVyTW9k
ZWwgPj0gNCkgPyAiU1ZfRGVwdGgiIDogIkRFUFRIIjsKKyAgICBzdGQ6OnN0cmluZyBkZXB0aFNl
bWFudGljICA9IChzaGFkZXJNb2RlbCA+PSA0KSA/ICJTVl9EZXB0aCIgOiAiREVQVEgiOwogCi0g
ICAgc3RkOjpzdHJpbmcgZGVjbGFyYXRpb25ITFNMOwotICAgIHN0ZDo6c3RyaW5nIGNvcHlITFNM
OworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGRlY2xhcmF0aW9uU3RyZWFtOworICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGNvcHlTdHJlYW07CiAKKyAgICBkZWNsYXJhdGlvblN0cmVhbSA8PCAic3RydWN0
IFBTX09VVFBVVFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOworCiAgICAgZm9y
IChzaXplX3QgbGF5b3V0SW5kZXggPSAwOyBsYXlvdXRJbmRleCA8IG91dHB1dExheW91dC5zaXpl
KCk7ICsrbGF5b3V0SW5kZXgpCiAgICAgewogICAgICAgICBHTGVudW0gYmluZGluZyA9IG91dHB1
dExheW91dFtsYXlvdXRJbmRleF07CkBAIC01MDcsNzAzICszMjQsNjY3IEBACiAgICAgICAgIHsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsb2NhdGlvbiA9IChiaW5kaW5nIC0gR0xfQ09MT1Jf
QVRUQUNITUVOVDApOwogCi0gICAgICAgICAgICBjb25zdCBQaXhlbFNoYWRlck91dHB1dFZhcmlh
YmxlICpvdXRwdXRWYXJpYWJsZSA9IEZpbmRPdXRwdXRBdExvY2F0aW9uKG91dHB1dFZhcmlhYmxl
cywgbG9jYXRpb24pOworICAgICAgICAgICAgY29uc3QgUGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJs
ZSAqb3V0cHV0VmFyaWFibGUgPQorICAgICAgICAgICAgICAgIEZpbmRPdXRwdXRBdExvY2F0aW9u
KG91dHB1dFZhcmlhYmxlcywgbG9jYXRpb24pOwogCiAgICAgICAgICAgICAvLyBPcGVuR0wgRVMg
My4wIHNwZWMgJDQuMi4xCi0gICAgICAgICAgICAvLyBJZiBbLi4uXSBub3QgYWxsIHVzZXItZGVm
aW5lZCBvdXRwdXQgdmFyaWFibGVzIGFyZSB3cml0dGVuLCB0aGUgdmFsdWVzIG9mIGZyYWdtZW50
IGNvbG9ycworICAgICAgICAgICAgLy8gSWYgWy4uLl0gbm90IGFsbCB1c2VyLWRlZmluZWQgb3V0
cHV0IHZhcmlhYmxlcyBhcmUgd3JpdHRlbiwgdGhlIHZhbHVlcyBvZiBmcmFnbWVudAorICAgICAg
ICAgICAgLy8gY29sb3JzCiAgICAgICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRvIHVud3JpdHRl
biB2YXJpYWJsZXMgYXJlIHNpbWlsYXJseSB1bmRlZmluZWQuCiAgICAgICAgICAgICBpZiAob3V0
cHV0VmFyaWFibGUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZGVjbGFyYXRpb25I
TFNMICs9ICIgICAgIiArIEhMU0xUeXBlU3RyaW5nKG91dHB1dFZhcmlhYmxlLT50eXBlKSArICIg
IiArIG91dHB1dFZhcmlhYmxlLT5uYW1lICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiA6ICIgKyB0YXJnZXRTZW1hbnRpYyArIFN0cihsYXlvdXRJbmRleCkgKyAiO1xuIjsK
KyAgICAgICAgICAgICAgICBkZWNsYXJhdGlvblN0cmVhbSA8PCAiICAgICIgKyBITFNMVHlwZVN0
cmluZyhvdXRwdXRWYXJpYWJsZS0+dHlwZSkgPDwgIiAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgb3V0cHV0VmFyaWFibGUtPm5hbWUgPDwgIiA6ICIgPDwgdGFyZ2V0U2Vt
YW50aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxp
bnQ+KGxheW91dEluZGV4KSA8PCAiO1xuIjsKIAotICAgICAgICAgICAgICAgIGNvcHlITFNMICs9
ICIgICAgb3V0cHV0LiIgKyBvdXRwdXRWYXJpYWJsZS0+bmFtZSArICIgPSAiICsgb3V0cHV0VmFy
aWFibGUtPnNvdXJjZSArICI7XG4iOworICAgICAgICAgICAgICAgIGNvcHlTdHJlYW0gPDwgIiAg
ICBvdXRwdXQuIiA8PCBvdXRwdXRWYXJpYWJsZS0+bmFtZSA8PCAiID0gIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPDwgb3V0cHV0VmFyaWFibGUtPnNvdXJjZSA8PCAiO1xuIjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICh1c2VzRnJhZ0RlcHRoKQogICAg
IHsKLSAgICAgICAgZGVjbGFyYXRpb25ITFNMICs9ICIgICAgZmxvYXQgZ2xfRGVwdGggOiAiICsg
ZGVwdGhTZW1hbnRpYyArICI7XG4iOwotICAgICAgICBjb3B5SExTTCArPSAiICAgIG91dHB1dC5n
bF9EZXB0aCA9IGdsX0RlcHRoOyBcbiI7CisgICAgICAgIGRlY2xhcmF0aW9uU3RyZWFtIDw8ICIg
ICAgZmxvYXQgZ2xfRGVwdGggOiAiIDw8IGRlcHRoU2VtYW50aWMgPDwgIjtcbiI7CisgICAgICAg
IGNvcHlTdHJlYW0gPDwgIiAgICBvdXRwdXQuZ2xfRGVwdGggPSBnbF9EZXB0aDsgXG4iOwogICAg
IH0KIAotICAgIHN0ZDo6c3RyaW5nIHJlcGxhY2VtZW50SExTTCA9ICJzdHJ1Y3QgUFNfT1VUUFVU
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uSExTTCArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIn07XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQU19PVVRQVVQg
Z2VuZXJhdGVPdXRwdXQoKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBQU19PVVRQVVQgb3V0
cHV0O1xuIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weUhMU0wgKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG91dHB1dDtcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIjsKKyAgICBkZWNsYXJhdGlv
blN0cmVhbSA8PCAifTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIlBTX09VVFBVVCBnZW5lcmF0ZU91dHB1dCgpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIFBT
X09VVFBVVCBvdXRwdXQ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgPDwgY29weVN0cmVhbS5z
dHIoKSA8PCAiICAgIHJldHVybiBvdXRwdXQ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIjsKIAogICAgIHN0ZDo6c3RyaW5nIHBpeGVsSExTTChz
b3VyY2VTaGFkZXIpOwogCiAgICAgc2l6ZV90IG91dHB1dEluc2VydGlvblBvcyA9IHBpeGVsSExT
TC5maW5kKFBJWEVMX09VVFBVVF9TVFVCX1NUUklORyk7Ci0gICAgcGl4ZWxITFNMLnJlcGxhY2Uo
b3V0cHV0SW5zZXJ0aW9uUG9zLCBQSVhFTF9PVVRQVVRfU1RVQl9TVFJJTkcubGVuZ3RoKCksIHJl
cGxhY2VtZW50SExTTCk7CisgICAgcGl4ZWxITFNMLnJlcGxhY2Uob3V0cHV0SW5zZXJ0aW9uUG9z
LCBQSVhFTF9PVVRQVVRfU1RVQl9TVFJJTkcubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAg
ICAgZGVjbGFyYXRpb25TdHJlYW0uc3RyKCkpOwogCiAgICAgcmV0dXJuIHBpeGVsSExTTDsKIH0K
IAotc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdldFZhcnlpbmdTZW1hbnRpYyhib29sIHBvaW50
U2l6ZSkgY29uc3QKK3ZvaWQgRHluYW1pY0hMU0w6OmdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKFNo
YWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtICZsaW5rU3Ry
ZWFtKSBjb25zdAogewotICAgIC8vIFNNMyByZXNlcnZlcyB0aGUgVEVYQ09PUkQgc2VtYW50aWMg
Zm9yIHBvaW50IHNwcml0ZSB0ZXhjb29yZHMgKGdsX1BvaW50Q29vcmQpCi0gICAgLy8gSW4gRDNE
MTEgd2UgbWFudWFsbHkgY29tcHV0ZSBnbF9Qb2ludENvb3JkIGluIHRoZSBHUy4KLSAgICBpbnQg
c2hhZGVyTW9kZWwgPSBtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKTsKLSAgICByZXR1
cm4gKChwb2ludFNpemUgJiYgc2hhZGVyTW9kZWwgPCA0KSA/ICJDT0xPUiIgOiAiVEVYQ09PUkQi
KTsKLX0KKyAgICBjb25zdCBhdXRvICZidWlsdGlucyA9IHZhcnlpbmdQYWNraW5nLmJ1aWx0aW5z
KHNoYWRlclR5cGUpOworICAgIEFTU0VSVChidWlsdGlucy5keFBvc2l0aW9uLmVuYWJsZWQpOwor
ICAgIGxpbmtTdHJlYW0gPDwgIntcbiIKKyAgICAgICAgICAgICAgIDw8ICIgICAgZmxvYXQ0IGR4
X1Bvc2l0aW9uIDogIiA8PCBidWlsdGlucy5keFBvc2l0aW9uLnN0cigpIDw8ICI7XG4iOwogCi1z
dHJ1Y3QgRHluYW1pY0hMU0w6OlNlbWFudGljSW5mbwotewotICAgIHN0cnVjdCBCdWlsdGluSW5m
bworICAgIGlmIChidWlsdGlucy5nbFBvc2l0aW9uLmVuYWJsZWQpCiAgICAgewotICAgICAgICBC
dWlsdGluSW5mbygpCi0gICAgICAgICAgICA6IGVuYWJsZWQoZmFsc2UpLAotICAgICAgICAgICAg
ICBpbmRleCgwKSwKLSAgICAgICAgICAgICAgc3lzdGVtVmFsdWUoZmFsc2UpCi0gICAgICAgIHt9
Ci0KLSAgICAgICAgYm9vbCBlbmFibGVkOwotICAgICAgICBzdGQ6OnN0cmluZyBzZW1hbnRpYzsK
LSAgICAgICAgdW5zaWduZWQgaW50IGluZGV4OwotICAgICAgICBib29sIHN5c3RlbVZhbHVlOwot
Ci0gICAgICAgIHN0ZDo6c3RyaW5nIHN0cigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAoc3lzdGVtVmFsdWUgPyBzZW1hbnRpYyA6IChzZW1hbnRpYyArIFN0cihpbmRleCkp
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgZW5hYmxlU3lzdGVtKGNvbnN0IHN0ZDo6c3Ry
aW5nICZzeXN0ZW1WYWx1ZVNlbWFudGljKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbmFibGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHNlbWFudGljID0gc3lzdGVtVmFsdWVTZW1hbnRpYzsKLSAg
ICAgICAgICAgIHN5c3RlbVZhbHVlID0gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
ZW5hYmxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQgaW50IGluZGV4
VmFsKQotICAgICAgICB7Ci0gICAgICAgICAgICBlbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAg
IHNlbWFudGljID0gc2VtYW50aWNWYWw7Ci0gICAgICAgICAgICBpbmRleCA9IGluZGV4VmFsOwot
ICAgICAgICB9Ci0gICAgfTsKLQotICAgIEJ1aWx0aW5JbmZvIGR4UG9zaXRpb247Ci0gICAgQnVp
bHRpbkluZm8gZ2xQb3NpdGlvbjsKLSAgICBCdWlsdGluSW5mbyBnbEZyYWdDb29yZDsKLSAgICBC
dWlsdGluSW5mbyBnbFBvaW50Q29vcmQ7Ci0gICAgQnVpbHRpbkluZm8gZ2xQb2ludFNpemU7Ci19
OwotCi1EeW5hbWljSExTTDo6U2VtYW50aWNJbmZvIER5bmFtaWNITFNMOjpnZXRTZW1hbnRpY0lu
Zm8oaW50IHN0YXJ0UmVnaXN0ZXJzLCBib29sIHBvc2l0aW9uLCBib29sIGZyYWdDb29yZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHBvaW50Q29vcmQsIGJvb2wgcG9pbnRTaXplLCBib29sIHBpeGVsU2hhZGVyKSBjb25zdAotewot
ICAgIFNlbWFudGljSW5mbyBpbmZvOwotICAgIGJvb2wgaGxzbDQgPSAobVJlbmRlcmVyLT5nZXRN
YWpvclNoYWRlck1vZGVsKCkgPj0gNCk7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdT
ZW1hbnRpYyA9IGdldFZhcnlpbmdTZW1hbnRpYyhwb2ludFNpemUpOwotCi0gICAgaW50IHJlc2Vy
dmVkUmVnaXN0ZXJJbmRleCA9IHN0YXJ0UmVnaXN0ZXJzOwotCi0gICAgaWYgKGhsc2w0KQotICAg
IHsKLSAgICAgICAgaW5mby5keFBvc2l0aW9uLmVuYWJsZVN5c3RlbSgiU1ZfUG9zaXRpb24iKTsK
KyAgICAgICAgbGlua1N0cmVhbSA8PCAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6ICIgPDwgYnVp
bHRpbnMuZ2xQb3NpdGlvbi5zdHIoKSA8PCAiO1xuIjsKICAgICB9Ci0gICAgZWxzZSBpZiAocGl4
ZWxTaGFkZXIpCi0gICAgewotICAgICAgICBpbmZvLmR4UG9zaXRpb24uZW5hYmxlU3lzdGVtKCJW
UE9TIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGluZm8uZHhQb3NpdGlvbi5l
bmFibGVTeXN0ZW0oIlBPU0lUSU9OIik7Ci0gICAgfQogCi0gICAgaWYgKHBvc2l0aW9uKQorICAg
IGlmIChidWlsdGlucy5nbEZyYWdDb29yZC5lbmFibGVkKQogICAgIHsKLSAgICAgICAgaW5mby5n
bFBvc2l0aW9uLmVuYWJsZSh2YXJ5aW5nU2VtYW50aWMsIHJlc2VydmVkUmVnaXN0ZXJJbmRleCsr
KTsKKyAgICAgICAgbGlua1N0cmVhbSA8PCAiICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiAiIDw8
IGJ1aWx0aW5zLmdsRnJhZ0Nvb3JkLnN0cigpIDw8ICI7XG4iOwogICAgIH0KIAotICAgIGlmIChm
cmFnQ29vcmQpCisgICAgaWYgKGJ1aWx0aW5zLmdsUG9pbnRDb29yZC5lbmFibGVkKQogICAgIHsK
LSAgICAgICAgaW5mby5nbEZyYWdDb29yZC5lbmFibGUodmFyeWluZ1NlbWFudGljLCByZXNlcnZl
ZFJlZ2lzdGVySW5kZXgrKyk7CisgICAgICAgIGxpbmtTdHJlYW0gPDwgIiAgICBmbG9hdDIgZ2xf
UG9pbnRDb29yZCA6ICIgPDwgYnVpbHRpbnMuZ2xQb2ludENvb3JkLnN0cigpIDw8ICI7XG4iOwog
ICAgIH0KIAotICAgIGlmIChwb2ludENvb3JkKQorICAgIGlmIChidWlsdGlucy5nbFBvaW50U2l6
ZS5lbmFibGVkKQogICAgIHsKLSAgICAgICAgLy8gU00zIHJlc2VydmVzIHRoZSBURVhDT09SRCBz
ZW1hbnRpYyBmb3IgcG9pbnQgc3ByaXRlIHRleGNvb3JkcyAoZ2xfUG9pbnRDb29yZCkKLSAgICAg
ICAgLy8gSW4gRDNEMTEgd2UgbWFudWFsbHkgY29tcHV0ZSBnbF9Qb2ludENvb3JkIGluIHRoZSBH
Uy4KLSAgICAgICAgaWYgKGhsc2w0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvLmdsUG9p
bnRDb29yZC5lbmFibGUodmFyeWluZ1NlbWFudGljLCByZXNlcnZlZFJlZ2lzdGVySW5kZXgrKyk7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvLmds
UG9pbnRDb29yZC5lbmFibGUoIlRFWENPT1JEIiwgMCk7Ci0gICAgICAgIH0KKyAgICAgICAgbGlu
a1N0cmVhbSA8PCAiICAgIGZsb2F0IGdsX1BvaW50U2l6ZSA6ICIgPDwgYnVpbHRpbnMuZ2xQb2lu
dFNpemUuc3RyKCkgPDwgIjtcbiI7CiAgICAgfQogCi0gICAgLy8gU3BlY2lhbCBjYXNlOiBkbyBu
b3QgaW5jbHVkZSBQU0laRSBzZW1hbnRpYyBpbiBITFNMIDMgcGl4ZWwgc2hhZGVycwotICAgIGlm
IChwb2ludFNpemUgJiYgKCFwaXhlbFNoYWRlciB8fCBobHNsNCkpCi0gICAgewotICAgICAgICBp
bmZvLmdsUG9pbnRTaXplLmVuYWJsZVN5c3RlbSgiUFNJWkUiKTsKLSAgICB9CisgICAgLy8gRG8g
dGhpcyBhZnRlciBnbF9Qb2ludFNpemUsIHRvIHBvdGVudGlhbGx5IGNvbWJpbmUgZ2xfUG9pbnRD
b29yZCBhbmQgZ2xfUG9pbnRTaXplIGludG8gdGhlCisgICAgLy8gc2FtZSByZWdpc3Rlci4KKyAg
ICBnZW5lcmF0ZVZhcnlpbmdITFNMKHZhcnlpbmdQYWNraW5nLCBsaW5rU3RyZWFtKTsKIAotICAg
IHJldHVybiBpbmZvOworICAgIGxpbmtTdHJlYW0gPDwgIn07XG4iOwogfQogCi1zdGQ6OnN0cmlu
ZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVWYXJ5aW5nTGlua0hMU0woY29uc3QgU2VtYW50aWNJbmZv
ICZpbmZvLCBjb25zdCBzdGQ6OnN0cmluZyAmdmFyeWluZ0hMU0wpIGNvbnN0Citib29sIER5bmFt
aWNITFNMOjpnZW5lcmF0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6
RGF0YSAmcHJvZ3JhbURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAmcHJvZ3JhbU1ldGFkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFy
eWluZ1BhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nICpwaXhlbEhMU0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nICp2ZXJ0ZXhITFNMKSBjb25zdAogewotICAgIHN0ZDo6c3RyaW5n
IGxpbmtITFNMID0gIntcbiI7CisgICAgQVNTRVJUKHBpeGVsSExTTC0+ZW1wdHkoKSAmJiB2ZXJ0
ZXhITFNMLT5lbXB0eSgpKTsKIAotICAgIEFTU0VSVChpbmZvLmR4UG9zaXRpb24uZW5hYmxlZCk7
Ci0gICAgbGlua0hMU0wgKz0gIiAgICBmbG9hdDQgZHhfUG9zaXRpb24gOiAiICsgaW5mby5keFBv
c2l0aW9uLnN0cigpICsgIjtcbiI7CisgICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVy
R0wgICA9IHByb2dyYW1EYXRhLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CisgICAgY29uc3Qg
Z2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXJHTCA9IHByb2dyYW1EYXRhLmdldEF0dGFjaGVkRnJh
Z21lbnRTaGFkZXIoKTsKKyAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyICAgID0g
R2V0SW1wbEFzPFNoYWRlckQzRD4oZnJhZ21lbnRTaGFkZXJHTCk7CisgICAgY29uc3QgaW50IHNo
YWRlck1vZGVsICAgICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgp
OwogCi0gICAgaWYgKGluZm8uZ2xQb3NpdGlvbi5lbmFibGVkKQotICAgIHsKLSAgICAgICAgbGlu
a0hMU0wgKz0gIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiICsgaW5mby5nbFBvc2l0aW9uLnN0
cigpICsgIjtcbiI7Ci0gICAgfQorICAgIC8vIHVzZXNWaWV3U2NhbGUoKSBpc24ndCBzdXBwb3J0
ZWQgaW4gdGhlIEQzRDkgcmVuZGVyZXIKKyAgICBBU1NFUlQoc2hhZGVyTW9kZWwgPj0gNCB8fCAh
cHJvZ3JhbU1ldGFkYXRhLnVzZXNWaWV3U2NhbGUoKSk7CiAKLSAgICBpZiAoaW5mby5nbEZyYWdD
b29yZC5lbmFibGVkKQotICAgIHsKLSAgICAgICAgbGlua0hMU0wgKz0gIiAgICBmbG9hdDQgZ2xf
RnJhZ0Nvb3JkIDogIiArIGluZm8uZ2xGcmFnQ29vcmQuc3RyKCkgKyAiO1xuIjsKLSAgICB9Cisg
ICAgYm9vbCB1c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbiA9CisgICAgICAgIHByb2dy
YW1NZXRhZGF0YS51c2VzUG9pbnRTaXplKCkgJiYKKyAgICAgICAgbVJlbmRlcmVyLT5nZXRXb3Jr
YXJvdW5kcygpLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uOwogCi0gICAgaWYgKGlu
Zm8uZ2xQb2ludENvb3JkLmVuYWJsZWQpCi0gICAgewotICAgICAgICBsaW5rSExTTCArPSAiICAg
IGZsb2F0MiBnbF9Qb2ludENvb3JkIDogIiArIGluZm8uZ2xQb2ludENvb3JkLnN0cigpICsgIjtc
biI7Ci0gICAgfQorICAgIC8vIFZhbGlkYXRpb24gZG9uZSBpbiB0aGUgY29tcGlsZXIKKyAgICBB
U1NFUlQoIWZyYWdtZW50U2hhZGVyLT51c2VzRnJhZ0NvbG9yKCkgfHwgIWZyYWdtZW50U2hhZGVy
LT51c2VzRnJhZ0RhdGEoKSk7CiAKLSAgICBpZiAoaW5mby5nbFBvaW50U2l6ZS5lbmFibGVkKQor
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZlcnRleFN0cmVhbTsKKyAgICB2ZXJ0ZXhTdHJlYW0gPDwg
dmVydGV4U2hhZGVyR0wtPmdldFRyYW5zbGF0ZWRTb3VyY2UoKTsKKworICAgIC8vIEluc3RhbmNl
ZCBQb2ludFNwcml0ZSBlbXVsYXRpb24gcmVxdWlyZXMgYWRkaXRpb25hbCBlbnRyaWVzIG9yaWdp
bmFsbHkgZ2VuZXJhdGVkIGluIHRoZQorICAgIC8vIEdlb21ldHJ5U2hhZGVyIEhMU0wuIFRoZXNl
IGluY2x1ZGUgcG9pbnRzaXplIGNsYW1wIHZhbHVlcy4KKyAgICBpZiAodXNlSW5zdGFuY2VkUG9p
bnRTcHJpdGVFbXVsYXRpb24pCiAgICAgewotICAgICAgICBsaW5rSExTTCArPSAiICAgIGZsb2F0
IGdsX1BvaW50U2l6ZSA6ICIgKyBpbmZvLmdsUG9pbnRTaXplLnN0cigpICsgIjtcbiI7CisgICAg
ICAgIHZlcnRleFN0cmVhbSA8PCAic3RhdGljIGZsb2F0IG1pblBvaW50U2l6ZSA9ICIKKyAgICAg
ICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PGludD4oZGF0YS5jYXBzLT5taW5BbGlhc2Vk
UG9pbnRTaXplKSA8PCAiLjBmO1xuIgorICAgICAgICAgICAgICAgICAgICAgPDwgInN0YXRpYyBm
bG9hdCBtYXhQb2ludFNpemUgPSAiCisgICAgICAgICAgICAgICAgICAgICA8PCBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGEuY2Fwcy0+bWF4QWxpYXNlZFBvaW50U2l6ZSkgPDwgIi4wZjtcbiI7CiAgICAg
fQogCi0gICAgLy8gRG8gdGhpcyBhZnRlciBnbFBvaW50U2l6ZSwgdG8gcG90ZW50aWFsbHkgY29t
YmluZSBnbF9Qb2ludENvb3JkIGFuZCBnbF9Qb2ludFNpemUgaW50byB0aGUgc2FtZSByZWdpc3Rl
ci4KLSAgICBsaW5rSExTTCArPSB2YXJ5aW5nSExTTDsKKyAgICAvLyBBZGQgc3R1YiBzdHJpbmcg
dG8gYmUgcmVwbGFjZWQgd2hlbiBzaGFkZXIgaXMgZHluYW1pY2FsbHkgZGVmaW5lZCBieSBpdHMg
bGF5b3V0CisgICAgdmVydGV4U3RyZWFtIDw8ICJcbiIgPDwgVkVSVEVYX0FUVFJJQlVURV9TVFVC
X1NUUklORyArICJcbiI7CiAKLSAgICBsaW5rSExTTCArPSAifTtcbiI7CisgICAgLy8gV3JpdGUg
dGhlIEhMU0wgaW5wdXQvb3V0cHV0IGRlY2xhcmF0aW9ucworICAgIHZlcnRleFN0cmVhbSA8PCAi
c3RydWN0IFZTX09VVFBVVFxuIjsKKyAgICBnZW5lcmF0ZVZhcnlpbmdMaW5rSExTTChTSEFERVJf
VkVSVEVYLCB2YXJ5aW5nUGFja2luZywgdmVydGV4U3RyZWFtKTsKKyAgICB2ZXJ0ZXhTdHJlYW0g
PDwgIlxuIgorICAgICAgICAgICAgICAgICA8PCAiVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5w
dXQpXG4iCisgICAgICAgICAgICAgICAgIDw8ICJ7XG4iCisgICAgICAgICAgICAgICAgIDw8ICIg
ICAgaW5pdEF0dHJpYnV0ZXMoaW5wdXQpO1xuIjsKIAotICAgIHJldHVybiBsaW5rSExTTDsKLX0K
KyAgICB2ZXJ0ZXhTdHJlYW0gPDwgIlxuIgorICAgICAgICAgICAgICAgICA8PCAiICAgIGdsX21h
aW4oKTtcbiIKKyAgICAgICAgICAgICAgICAgPDwgIlxuIgorICAgICAgICAgICAgICAgICA8PCAi
ICAgIFZTX09VVFBVVCBvdXRwdXQ7XG4iOwogCi12b2lkIER5bmFtaWNITFNMOjpzdG9yZUJ1aWx0
aW5MaW5rZWRWYXJ5aW5ncyhjb25zdCBTZW1hbnRpY0luZm8gJmluZm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxMaW5rZWRWYXJ5aW5n
PiAqbGlua2VkVmFyeWluZ3MpIGNvbnN0Ci17Ci0gICAgaWYgKGluZm8uZ2xQb3NpdGlvbi5lbmFi
bGVkKQotICAgIHsKLSAgICAgICAgbGlua2VkVmFyeWluZ3MtPnB1c2hfYmFjayhMaW5rZWRWYXJ5
aW5nKCJnbF9Qb3NpdGlvbiIsIEdMX0ZMT0FUX1ZFQzQsIDEsIGluZm8uZ2xQb3NpdGlvbi5zZW1h
bnRpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
Zm8uZ2xQb3NpdGlvbi5pbmRleCwgMSkpOwotICAgIH0KKyAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhC
dWlsdGlucyA9IHZhcnlpbmdQYWNraW5nLmJ1aWx0aW5zKFNIQURFUl9WRVJURVgpOwogCi0gICAg
aWYgKGluZm8uZ2xGcmFnQ29vcmQuZW5hYmxlZCkKKyAgICBpZiAodmVydGV4QnVpbHRpbnMuZ2xQ
b3NpdGlvbi5lbmFibGVkKQogICAgIHsKLSAgICAgICAgbGlua2VkVmFyeWluZ3MtPnB1c2hfYmFj
ayhMaW5rZWRWYXJ5aW5nKCJnbF9GcmFnQ29vcmQiLCBHTF9GTE9BVF9WRUM0LCAxLCBpbmZvLmds
RnJhZ0Nvb3JkLnNlbWFudGljLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5mby5nbEZyYWdDb29yZC5pbmRleCwgMSkpOworICAgICAgICB2ZXJ0ZXhT
dHJlYW0gPDwgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjtcbiI7CiAgICAg
fQogCi0gICAgaWYgKGluZm8uZ2xQb2ludFNpemUuZW5hYmxlZCkKKyAgICAvLyBPbiBEM0Q5IG9y
IEQzRDExIEZlYXR1cmUgTGV2ZWwgOSwgd2UgbmVlZCB0byBlbXVsYXRlIGxhcmdlIHZpZXdwb3J0
cyB1c2luZyBkeF9WaWV3QWRqdXN0LgorICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0ICYmIG1SZW5k
ZXJlci0+Z2V0U2hhZGVyTW9kZWxTdWZmaXgoKSA9PSAiIikKICAgICB7Ci0gICAgICAgIGxpbmtl
ZFZhcnlpbmdzLT5wdXNoX2JhY2soTGlua2VkVmFyeWluZygiZ2xfUG9pbnRTaXplIiwgR0xfRkxP
QVQsIDEsICJQU0laRSIsIDAsIDEpKTsKLSAgICB9Ci19CisgICAgICAgIHZlcnRleFN0cmVhbSA8
PCAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi54ID0gZ2xfUG9zaXRpb24ueDtcbiI7CiAKLXZvaWQg
RHluYW1pY0hMU0w6OnN0b3JlVXNlckxpbmtlZFZhcnlpbmdzKGNvbnN0IFNoYWRlckQzRCAqdmVy
dGV4U2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8TGlua2VkVmFyeWluZz4gKmxpbmtlZFZhcnlpbmdzKSBjb25zdAotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZ2YXJ5aW5nU2VtYW50aWMgPSBnZXRWYXJ5aW5nU2VtYW50aWModmVy
dGV4U2hhZGVyLT5tVXNlc1BvaW50U2l6ZSk7Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2Vk
VmFyeWluZz4gJnZhcnlpbmdzID0gdmVydGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpOwotCi0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgdmFyeWluZ0luZGV4ID0gMDsgdmFyeWluZ0luZGV4IDwgdmFyeWlu
Z3Muc2l6ZSgpOyB2YXJ5aW5nSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IFBhY2tlZFZh
cnlpbmcgJnZhcnlpbmcgPSB2YXJ5aW5nc1t2YXJ5aW5nSW5kZXhdOwotCi0gICAgICAgIGlmICh2
YXJ5aW5nLnJlZ2lzdGVyQXNzaWduZWQoKSkKKyAgICAgICAgaWYgKHByb2dyYW1NZXRhZGF0YS51
c2VzVmlld1NjYWxlKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCghdmFyeWluZy5p
c0J1aWx0SW4oKSk7Ci0gICAgICAgICAgICBHTGVudW0gdHJhbnNwb3NlZFR5cGUgPSBUcmFuc3Bv
c2VNYXRyaXhUeXBlKHZhcnlpbmcudHlwZSk7Ci0gICAgICAgICAgICBpbnQgdmFyaWFibGVSb3dz
ID0gKHZhcnlpbmcuaXNTdHJ1Y3QoKSA/IDEgOiBWYXJpYWJsZVJvd0NvdW50KHRyYW5zcG9zZWRU
eXBlKSk7Ci0KLSAgICAgICAgICAgIGxpbmtlZFZhcnlpbmdzLT5wdXNoX2JhY2soTGlua2VkVmFy
eWluZyh2YXJ5aW5nLm5hbWUsIHZhcnlpbmcudHlwZSwgdmFyeWluZy5lbGVtZW50Q291bnQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJ5
aW5nU2VtYW50aWMsIHZhcnlpbmcucmVnaXN0ZXJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZVJvd3MgKiB2YXJ5aW5nLmVs
ZW1lbnRDb3VudCgpKSk7CisgICAgICAgICAgICAvLyBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IGR4
X1ZpZXdTY2FsZS55ID0gLTEuMGYgd2hlbiByZW5kZXJpbmcgdG8gdGV4dHVyZSwgYW5kICsxLjBm
CisgICAgICAgICAgICAvLyB3aGVuIHJlbmRlcmluZyB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZl
ci4gTm8gb3RoZXIgdmFsdWVzIGFyZSB2YWxpZC4KKyAgICAgICAgICAgIHZlcnRleFN0cmVhbSA8
PCAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0gZHhfVmlld1NjYWxlLnkgKiBnbF9Qb3NpdGlv
bi55O1xuIjsKICAgICAgICAgfQotICAgIH0KLX0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICB2ZXJ0ZXhTdHJlYW0gPDwgIiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueSA9IC0g
Z2xfUG9zaXRpb24ueTtcbiI7CisgICAgICAgIH0KIAotYm9vbCBEeW5hbWljSExTTDo6Z2VuZXJh
dGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6RGF0YSAmZGF0YSwgSW5mb0xvZyAmaW5mb0xvZywg
aW50IHJlZ2lzdGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVmFyeWluZ1BhY2tpbmcgcGFja2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgJnBpeGVsSExTTCwgc3RkOjpzdHJpbmcgJnZlcnRl
eEhMU0wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckQz
RCAqZnJhZ21lbnRTaGFkZXIsIFNoYWRlckQzRCAqdmVydGV4U2hhZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFZhcnlpbmc+ICpsaW5rZWRWYXJ5aW5n
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8aW50
LCBWYXJpYWJsZUxvY2F0aW9uPiAqcHJvZ3JhbU91dHB1dFZhcnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFBpeGVsU2hhZGVyT3V0cHV0VmFy
aWFibGU+ICpvdXRQaXhlbFNoYWRlcktleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCAqb3V0VXNlc0ZyYWdEZXB0aCkgY29uc3QKLXsKLSAgICBpZiAocGl4
ZWxITFNMLmVtcHR5KCkgfHwgdmVydGV4SExTTC5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB2ZXJ0ZXhTdHJlYW0gPDwgIiAgICBvdXRwdXQuZHhfUG9zaXRp
b24ueiA9IChnbF9Qb3NpdGlvbi56ICsgZ2xfUG9zaXRpb24udykgKiAwLjU7XG4iCisgICAgICAg
ICAgICAgICAgICAgICA8PCAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24u
dztcbiI7CiAgICAgfQotCi0gICAgYm9vbCB1c2VzTVJUID0gZnJhZ21lbnRTaGFkZXItPm1Vc2Vz
TXVsdGlwbGVSZW5kZXJUYXJnZXRzOwotICAgIGJvb2wgdXNlc0ZyYWdDb2xvciA9IGZyYWdtZW50
U2hhZGVyLT5tVXNlc0ZyYWdDb2xvcjsKLSAgICBib29sIHVzZXNGcmFnRGF0YSA9IGZyYWdtZW50
U2hhZGVyLT5tVXNlc0ZyYWdEYXRhOwotICAgIGJvb2wgdXNlc0ZyYWdDb29yZCA9IGZyYWdtZW50
U2hhZGVyLT5tVXNlc0ZyYWdDb29yZDsKLSAgICBib29sIHVzZXNQb2ludENvb3JkID0gZnJhZ21l
bnRTaGFkZXItPm1Vc2VzUG9pbnRDb29yZDsKLSAgICBib29sIHVzZXNQb2ludFNpemUgPSB2ZXJ0
ZXhTaGFkZXItPm1Vc2VzUG9pbnRTaXplOwotICAgIGJvb2wgdXNlSW5zdGFuY2VkUG9pbnRTcHJp
dGVFbXVsYXRpb24gPSB1c2VzUG9pbnRTaXplICYmIG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMo
KS51c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbjsKLQotICAgIGlmICh1c2VzRnJhZ0Nv
bG9yICYmIHVzZXNGcmFnRGF0YSkKKyAgICBlbHNlCiAgICAgewotICAgICAgICBpbmZvTG9nLmFw
cGVuZCgiQ2Fubm90IHVzZSBib3RoIGdsX0ZyYWdDb2xvciBhbmQgZ2xfRnJhZ0RhdGEgaW4gdGhl
IHNhbWUgZnJhZ21lbnQgc2hhZGVyLiIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQor
ICAgICAgICB2ZXJ0ZXhTdHJlYW0gPDwgIiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueCA9IGdsX1Bv
c2l0aW9uLnggKiBkeF9WaWV3QWRqdXN0LnogKyAiCisgICAgICAgICAgICAgICAgICAgICAgICAi
ZHhfVmlld0FkanVzdC54ICogZ2xfUG9zaXRpb24udztcbiI7CiAKLSAgICAvLyBXcml0ZSB0aGUg
SExTTCBpbnB1dC9vdXRwdXQgZGVjbGFyYXRpb25zCi0gICAgY29uc3QgaW50IHNoYWRlck1vZGVs
ID0gbVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCk7Ci0gICAgY29uc3QgaW50IHJlZ2lz
dGVyc05lZWRlZCA9IHJlZ2lzdGVycyArICh1c2VzRnJhZ0Nvb3JkID8gMSA6IDApICsgKHVzZXNQ
b2ludENvb3JkID8gMSA6IDApOworICAgICAgICAvLyBJZiB1c2VzVmlld1NjYWxlKCkgaXMgdHJ1
ZSBhbmQgd2UncmUgdXNpbmcgdGhlIEQzRDExIHJlbmRlcmVyIHZpYSBGZWF0dXJlIExldmVsIDlf
KiwKKyAgICAgICAgLy8gdGhlbiB3ZSBuZWVkIHRvIG11bHRpcGx5IHRoZSBnbF9Qb3NpdGlvbi55
IGJ5IHRoZSB2aWV3U2NhbGUuCisgICAgICAgIC8vIHVzZXNWaWV3U2NhbGUoKSBpc24ndCBzdXBw
b3J0ZWQgd2hlbiB1c2luZyB0aGUgRDNEOSByZW5kZXJlci4KKyAgICAgICAgaWYgKHByb2dyYW1N
ZXRhZGF0YS51c2VzVmlld1NjYWxlKCkgJiYKKyAgICAgICAgICAgIChzaGFkZXJNb2RlbCA+PSA0
ICYmIG1SZW5kZXJlci0+Z2V0U2hhZGVyTW9kZWxTdWZmaXgoKSAhPSAiIikpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZlcnRleFN0cmVhbSA8PCAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ID0g
ZHhfVmlld1NjYWxlLnkgKiAoZ2xfUG9zaXRpb24ueSAqICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZHhfVmlld0FkanVzdC53ICsgZHhfVmlld0FkanVzdC55ICogZ2xfUG9zaXRpb24u
dyk7XG4iOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
dmVydGV4U3RyZWFtIDw8ICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtKGdsX1Bvc2l0aW9u
LnkgKiBkeF9WaWV3QWRqdXN0LncgKyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImR4
X1ZpZXdBZGp1c3QueSAqIGdsX1Bvc2l0aW9uLncpO1xuIjsKKyAgICAgICAgfQogCi0gICAgLy8g
VHdvIGNhc2VzIHdoZW4gd3JpdGluZyB0byBnbF9GcmFnQ29sb3IgYW5kIHVzaW5nIEVTU0wgMS4w
OgotICAgIC8vIC0gd2l0aCBhIDMuMCBjb250ZXh0LCB0aGUgb3V0cHV0IGNvbG9yIGlzIGNvcGll
ZCB0byBjaGFubmVsIDAKLSAgICAvLyAtIHdpdGggYSAyLjAgY29udGV4dCwgdGhlIG91dHB1dCBj
b2xvciBpcyBicm9hZGNhc3QgdG8gYWxsIGNoYW5uZWxzCi0gICAgY29uc3QgYm9vbCBicm9hZGNh
c3QgPSAoZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0NvbG9yICYmIGRhdGEuY2xpZW50VmVyc2lv
biA8IDMpOwotICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1SZW5kZXJUYXJnZXRzID0gKGJyb2Fk
Y2FzdCB8fCB1c2VzTVJUID8gZGF0YS5jYXBzLT5tYXhEcmF3QnVmZmVycyA6IDEpOwotCi0gICAg
Ly8gZ2xfUG9zaXRpb24gb25seSBuZWVkcyB0byBiZSBvdXRwdXR0ZWQgZnJvbSB0aGUgdmVydGV4
IHNoYWRlciBpZiB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgYWN0aXZlLgotICAgIC8vIFRoaXMgaXNu
J3Qgc3VwcG9ydGVkIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zLCBzbyB3ZSBkb24ndCBvdXRw
dXQgZ2xfUG9zaXRpb24gZnJvbSB0aGUgdmVydGV4IHNoYWRlciBpbiB0aGlzIGNhc2UuCi0gICAg
Ly8gVGhpcyBzYXZlcyB1cyAxIG91dHB1dCB2ZWN0b3IuCi0gICAgYm9vbCBvdXRwdXRQb3NpdGlv
bkZyb21WUyA9ICEoc2hhZGVyTW9kZWwgPj0gNCAmJiBtUmVuZGVyZXItPmdldFNoYWRlck1vZGVs
U3VmZml4KCkgIT0gIiIpOwotCi0gICAgaW50IHNoYWRlclZlcnNpb24gPSB2ZXJ0ZXhTaGFkZXIt
PmdldFNoYWRlclZlcnNpb24oKTsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHJlZ2lz
dGVyc05lZWRlZCkgPiBkYXRhLmNhcHMtPm1heFZhcnlpbmdWZWN0b3JzKQotICAgIHsKLSAgICAg
ICAgaW5mb0xvZy5hcHBlbmQoIk5vIHZhcnlpbmcgcmVnaXN0ZXJzIGxlZnQgdG8gc3VwcG9ydCBn
bF9GcmFnQ29vcmQvZ2xfUG9pbnRDb29yZCIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHZlcnRleFN0cmVhbSA8PCAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0
aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKKyAgICAgICAgICAgICAgICAgICAgIDw8
ICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uLncgPSBnbF9Qb3NpdGlvbi53O1xuIjsKICAgICB9CiAK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyeWluZ0hMU0wgPSBnZW5lcmF0ZVZhcnlpbmdITFNM
KHZlcnRleFNoYWRlcik7Ci0KLSAgICAvLyBJbnN0YW5jZWQgUG9pbnRTcHJpdGUgZW11bGF0aW9u
IHJlcXVpcmVzIHRoYXQgZ2xfUG9pbnRDb29yZCBpcyBwcmVzZW50IGluIHRoZSB2ZXJ0ZXggc2hh
ZGVyIFZTX09VVFBVVAotICAgIC8vIHN0cnVjdHVyZSB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3
aXRoIHRoZSBnZW5lcmF0ZWQgUFNfSU5QVVQgb2YgdGhlIHBpeGVsIHNoYWRlci4KLSAgICAvLyBH
ZW9tZXRyeVNoYWRlciBQb2ludFNwcml0ZSBlbXVsYXRpb24gZG9lcyBub3QgcmVxdWlyZSB0aGlz
IGFkZGl0aW9uYWwgZW50cnkgYmVjYXVzZSB0aGUKLSAgICAvLyBHU19PVVRQVVQgb2YgdGhlIEdl
b21ldHJ5IHNoYWRlciBjb250YWlucyB0aGUgcG9pbnRDb29yZCB2YWx1ZSBhbmQgYWxyZWFkeSBt
YXRjaGVzIHRoZSBQU19JTlBVVCBvZiB0aGUKLSAgICAvLyBnZW5lcmF0ZWQgcGl4ZWwgc2hhZGVy
LgotICAgIC8vIFRoZSBHZW9tZXRyeSBTaGFkZXIgcG9pbnQgc3ByaXRlIGltcGxlbWVudGF0aW9u
IG5lZWRzIGdsX1BvaW50U2l6ZSB0byBiZSBpbiBWU19PVVRQVVQgYW5kIEdTX0lOUFVULgotICAg
IC8vIEluc3RhbmNlZCBwb2ludCBzcHJpdGVzIGRvZXNuJ3QgbmVlZCBnbF9Qb2ludFNpemUgaW4g
VlNfT1VUUFVULgotICAgIGNvbnN0IFNlbWFudGljSW5mbyAmdmVydGV4U2VtYW50aWNzID0gZ2V0
U2VtYW50aWNJbmZvKHJlZ2lzdGVycywgb3V0cHV0UG9zaXRpb25Gcm9tVlMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlc0ZyYWdD
b29yZCwgKHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uICYmIHVzZXNQb2ludENvb3Jk
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoIXVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uICYmIHVzZXNQb2ludFNpemUp
LCBmYWxzZSk7Ci0KLSAgICBzdG9yZVVzZXJMaW5rZWRWYXJ5aW5ncyh2ZXJ0ZXhTaGFkZXIsIGxp
bmtlZFZhcnlpbmdzKTsKLSAgICBzdG9yZUJ1aWx0aW5MaW5rZWRWYXJ5aW5ncyh2ZXJ0ZXhTZW1h
bnRpY3MsIGxpbmtlZFZhcnlpbmdzKTsKLQotICAgIC8vIEluc3RhbmNlZCBQb2ludFNwcml0ZSBl
bXVsYXRpb24gcmVxdWlyZXMgYWRkaXRpb25hbCBlbnRyaWVzIG9yaWdpbmFsbHkgZ2VuZXJhdGVk
IGluIHRoZQotICAgIC8vIEdlb21ldHJ5U2hhZGVyIEhMU0wuICBUaGVzZSBpbmNsdWRlIHBvaW50
c2l6ZSBjbGFtcCB2YWx1ZXMuCi0gICAgaWYgKHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uKQorICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gb3V0cHV0IGdsX1BvaW50U2l6ZSBpZiB3ZSB1
c2UgYXJlIGVtdWxhdGluZyBwb2ludCBzcHJpdGVzIHZpYSBpbnN0YW5jaW5nLgorICAgIGlmICh2
ZXJ0ZXhCdWlsdGlucy5nbFBvaW50U2l6ZS5lbmFibGVkKQogICAgIHsKLSAgICAgICAgdmVydGV4
SExTTCArPSAic3RhdGljIGZsb2F0IG1pblBvaW50U2l6ZSA9ICIgKyBTdHIoKGludCltUmVuZGVy
ZXItPmdldFJlbmRlcmVyQ2FwcygpLm1pbkFsaWFzZWRQb2ludFNpemUpICsgIi4wZjtcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAic3RhdGljIGZsb2F0IG1heFBvaW50U2l6ZSA9ICIgKyBTdHIo
KGludCltUmVuZGVyZXItPmdldFJlbmRlcmVyQ2FwcygpLm1heEFsaWFzZWRQb2ludFNpemUpICsg
Ii4wZjtcbiI7CisgICAgICAgIHZlcnRleFN0cmVhbSA8PCAiICAgIG91dHB1dC5nbF9Qb2ludFNp
emUgPSBnbF9Qb2ludFNpemU7XG4iOwogICAgIH0KIAotICAgIC8vIEFkZCBzdHViIHN0cmluZyB0
byBiZSByZXBsYWNlZCB3aGVuIHNoYWRlciBpcyBkeW5hbWljYWxseSBkZWZpbmVkIGJ5IGl0cyBs
YXlvdXQKLSAgICB2ZXJ0ZXhITFNMICs9ICJcbiIgKyBWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RS
SU5HICsgIlxuIgotICAgICAgICAgICAgICAgICAgInN0cnVjdCBWU19PVVRQVVRcbiIgKyBnZW5l
cmF0ZVZhcnlpbmdMaW5rSExTTCh2ZXJ0ZXhTZW1hbnRpY3MsIHZhcnlpbmdITFNMKSArICJcbiIK
LSAgICAgICAgICAgICAgICAgICJWU19PVVRQVVQgbWFpbihWU19JTlBVVCBpbnB1dClcbiIKLSAg
ICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAiICAgIGluaXRBdHRyaWJ1
dGVzKGlucHV0KTtcbiI7Ci0KLSAgICBpZiAodmVydGV4U2hhZGVyLT51c2VzRGVmZXJyZWRJbml0
KCkpCisgICAgaWYgKHZlcnRleEJ1aWx0aW5zLmdsRnJhZ0Nvb3JkLmVuYWJsZWQpCiAgICAgewot
ICAgICAgICB2ZXJ0ZXhITFNMICs9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiICAgIGlu
aXRpYWxpemVEZWZlcnJlZEdsb2JhbHMoKTtcbiI7CisgICAgICAgIHZlcnRleFN0cmVhbSA8PCAi
ICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlvbjtcbiI7CiAgICAgfQogCi0gICAg
dmVydGV4SExTTCArPSAiXG4iCi0gICAgICAgICAgICAgICAgICAiICAgIGdsX21haW4oKTtcbiIK
LSAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICIgICAgVlNfT1VUUFVU
IG91dHB1dDtcbiI7Ci0KLSAgICBpZiAob3V0cHV0UG9zaXRpb25Gcm9tVlMpCisgICAgZm9yIChj
b25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA6IHZhcnlpbmdQYWNraW5n
LmdldFJlZ2lzdGVyTGlzdCgpKQogICAgIHsKLSAgICAgICAgdmVydGV4SExTTCArPSAiICAgIG91
dHB1dC5nbF9Qb3NpdGlvbiA9IGdsX1Bvc2l0aW9uO1xuIjsKLSAgICB9CisgICAgICAgIGNvbnN0
IGF1dG8gJnBhY2tlZFZhcnlpbmcgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmc7CisgICAg
ICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOworICAgICAg
ICBBU1NFUlQoIXZhcnlpbmcuaXNTdHJ1Y3QoKSk7CiAKLSAgICAvLyBPbiBEM0Q5IG9yIEQzRDEx
IEZlYXR1cmUgTGV2ZWwgOSwgd2UgbmVlZCB0byBlbXVsYXRlIGxhcmdlIHZpZXdwb3J0cyB1c2lu
ZyBkeF9WaWV3QWRqdXN0LgotICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0ICAmJiBtUmVuZGVyZXIt
PmdldFNoYWRlck1vZGVsU3VmZml4KCkgPT0gIiIpCi0gICAgewotICAgICAgICB2ZXJ0ZXhITFNM
ICs9ICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnggPSBnbF9Qb3NpdGlvbi54O1xuIgotICAgICAg
ICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtZ2xfUG9zaXRpb24u
eTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0g
KGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3NpdGlvbi53KSAqIDAuNTtcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBvdXRwdXQu
ZHhfUG9zaXRpb24ueCA9IGdsX1Bvc2l0aW9uLnggKiBkeF9WaWV3QWRqdXN0LnogKyBkeF9WaWV3
QWRqdXN0LnggKiBnbF9Qb3NpdGlvbi53O1xuIgotICAgICAgICAgICAgICAgICAgICAgICIgICAg
b3V0cHV0LmR4X1Bvc2l0aW9uLnkgPSAtKGdsX1Bvc2l0aW9uLnkgKiBkeF9WaWV3QWRqdXN0Lncg
KyBkeF9WaWV3QWRqdXN0LnkgKiBnbF9Qb3NpdGlvbi53KTtcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi56ID0gKGdsX1Bvc2l0aW9uLnogKyBnbF9Qb3Np
dGlvbi53KSAqIDAuNTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5keF9Q
b3NpdGlvbi53ID0gZ2xfUG9zaXRpb24udztcbiI7Ci0gICAgfQorICAgICAgICB2ZXJ0ZXhTdHJl
YW0gPDwgIiAgICBvdXRwdXQudiIgPDwgcmVnaXN0ZXJJbmZvLnNlbWFudGljSW5kZXggPDwgIiA9
ICI7CiAKLSAgICAvLyBXZSBkb24ndCBuZWVkIHRvIG91dHB1dCBnbF9Qb2ludFNpemUgaWYgd2Ug
dXNlIGFyZSBlbXVsYXRpbmcgcG9pbnQgc3ByaXRlcyB2aWEgaW5zdGFuY2luZy4KLSAgICBpZiAo
dXNlc1BvaW50U2l6ZSAmJiBzaGFkZXJNb2RlbCA+PSAzICYmICF1c2VJbnN0YW5jZWRQb2ludFNw
cml0ZUVtdWxhdGlvbikKLSAgICB7Ci0gICAgICAgIHZlcnRleEhMU0wgKz0gIiAgICBvdXRwdXQu
Z2xfUG9pbnRTaXplID0gZ2xfUG9pbnRTaXplO1xuIjsKLSAgICB9CisgICAgICAgIGlmIChwYWNr
ZWRWYXJ5aW5nLmlzU3RydWN0RmllbGQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgdmVydGV4
U3RyZWFtIDw8IGRlY29yYXRlVmFyaWFibGUocGFja2VkVmFyeWluZy5wYXJlbnRTdHJ1Y3ROYW1l
KSA8PCAiLiI7CisgICAgICAgIH0KIAotICAgIGlmICh1c2VzRnJhZ0Nvb3JkKQotICAgIHsKLSAg
ICAgICAgdmVydGV4SExTTCArPSAiICAgIG91dHB1dC5nbF9GcmFnQ29vcmQgPSBnbF9Qb3NpdGlv
bjtcbiI7Ci0gICAgfQorICAgICAgICB2ZXJ0ZXhTdHJlYW0gPDwgZGVjb3JhdGVWYXJpYWJsZSh2
YXJ5aW5nLm5hbWUpOwogCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4gJnZl
cnRleFZhcnlpbmdzID0gdmVydGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpOwotICAgIGZvciAodW5z
aWduZWQgaW50IHZlcnRWYXJ5aW5nSW5kZXggPSAwOyB2ZXJ0VmFyeWluZ0luZGV4IDwgdmVydGV4
VmFyeWluZ3Muc2l6ZSgpOyB2ZXJ0VmFyeWluZ0luZGV4KyspCi0gICAgewotICAgICAgICBjb25z
dCBQYWNrZWRWYXJ5aW5nICZ2YXJ5aW5nID0gdmVydGV4VmFyeWluZ3NbdmVydFZhcnlpbmdJbmRl
eF07Ci0gICAgICAgIGlmICh2YXJ5aW5nLnJlZ2lzdGVyQXNzaWduZWQoKSkKKyAgICAgICAgaWYg
KHZhcnlpbmcuaXNBcnJheSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBlbGVtZW50SW5kZXggPSAwOyBlbGVtZW50SW5kZXggPCB2YXJ5aW5nLmVsZW1lbnRDb3Vu
dCgpOyBlbGVtZW50SW5kZXgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQg
dmFyaWFibGVSb3dzID0gKHZhcnlpbmcuaXNTdHJ1Y3QoKSA/IDEgOiBWYXJpYWJsZVJvd0NvdW50
KFRyYW5zcG9zZU1hdHJpeFR5cGUodmFyeWluZy50eXBlKSkpOworICAgICAgICAgICAgV3JpdGVB
cnJheVN0cmluZyh2ZXJ0ZXhTdHJlYW0sIHJlZ2lzdGVySW5mby52YXJ5aW5nQXJyYXlJbmRleCk7
CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHZh
cmlhYmxlUm93czsgcm93KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBpbnQgciA9IHZhcnlpbmcucmVnaXN0ZXJJbmRleCArIHZhcnlpbmcuY29sdW1uSW5kZXggKiBk
YXRhLmNhcHMtPm1heFZhcnlpbmdWZWN0b3JzICsgZWxlbWVudEluZGV4ICogdmFyaWFibGVSb3dz
ICsgcm93OwotICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9ICIgICAgb3V0cHV0LnYi
ICsgU3RyKHIpOworICAgICAgICBpZiAoVmFyaWFibGVSb3dDb3VudCh2YXJ5aW5nLnR5cGUpID4g
MSkKKyAgICAgICAgeworICAgICAgICAgICAgV3JpdGVBcnJheVN0cmluZyh2ZXJ0ZXhTdHJlYW0s
IHJlZ2lzdGVySW5mby52YXJ5aW5nUm93SW5kZXgpOworICAgICAgICB9CiAKLSAgICAgICAgICAg
ICAgICAgICAgdmVydGV4SExTTCArPSAiID0gXyIgKyB2YXJ5aW5nLm5hbWU7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhcnlpbmcuaXNBcnJheSgpKQotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0ZXhITFNMICs9IEFycmF5U3RyaW5nKGVsZW1l
bnRJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBp
ZiAodmFyaWFibGVSb3dzID4gMSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdmVydGV4SExTTCArPSBBcnJheVN0cmluZyhyb3cpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgdmVydGV4SExTTCArPSAiO1xuIjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgdmVydGV4
U3RyZWFtIDw8ICI7XG4iOwogICAgIH0KIAogICAgIC8vIEluc3RhbmNlZCBQb2ludFNwcml0ZSBl
bXVsYXRpb24gcmVxdWlyZXMgYWRkaXRpb25hbCBlbnRyaWVzIHRvIGNhbGN1bGF0ZQogICAgIC8v
IHRoZSBmaW5hbCBvdXRwdXQgdmVydGV4IHBvc2l0aW9ucyBvZiB0aGUgcXVhZCB0aGF0IHJlcHJl
c2VudHMgZWFjaCBzcHJpdGUuCiAgICAgaWYgKHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uKQogICAgIHsKLSAgICAgICAgdmVydGV4SExTTCArPSAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgIiAgICBnbF9Qb2ludFNpemUgPSBjbGFtcChnbF9Qb2ludFNpemUsIG1pblBvaW50U2l6
ZSwgbWF4UG9pbnRTaXplKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5k
eF9Qb3NpdGlvbi54eXogKz0gZmxvYXQzKGlucHV0LnNwcml0ZVZlcnRleFBvcy54ICogZ2xfUG9p
bnRTaXplIC8gKGR4X1ZpZXdDb29yZHMueCoyKSwgaW5wdXQuc3ByaXRlVmVydGV4UG9zLnkgKiBn
bF9Qb2ludFNpemUgLyAoZHhfVmlld0Nvb3Jkcy55KjIpLCBpbnB1dC5zcHJpdGVWZXJ0ZXhQb3Mu
eikgKiBvdXRwdXQuZHhfUG9zaXRpb24udztcbiI7CisgICAgICAgIHZlcnRleFN0cmVhbSA8PCAi
XG4iCisgICAgICAgICAgICAgICAgICAgICA8PCAiICAgIGdsX1BvaW50U2l6ZSA9IGNsYW1wKGds
X1BvaW50U2l6ZSwgbWluUG9pbnRTaXplLCBtYXhQb2ludFNpemUpO1xuIjsKIAotICAgICAgICBp
ZiAodXNlc1BvaW50Q29vcmQpCisgICAgICAgIHZlcnRleFN0cmVhbSA8PCAiICAgIG91dHB1dC5k
eF9Qb3NpdGlvbi54ICs9IChpbnB1dC5zcHJpdGVWZXJ0ZXhQb3MueCAqIGdsX1BvaW50U2l6ZSAv
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICIoZHhfVmlld0Nvb3Jkcy54KjIpKSAqIG91dHB1
dC5keF9Qb3NpdGlvbi53OyI7CisKKyAgICAgICAgaWYgKHByb2dyYW1NZXRhZGF0YS51c2VzVmll
d1NjYWxlKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZlcnRleEhMU0wgKz0gIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIG91dHB1dC5nbF9Qb2ludENvb3JkID0gaW5wdXQu
c3ByaXRlVGV4Q29vcmQ7XG4iOworICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgVmlld1NjYWxl
IHRvIGludmVydCB0aGUgcmVuZGVyaW5nIHdoZW4gYXBwcm9wcmlhdGUKKyAgICAgICAgICAgIHZl
cnRleFN0cmVhbSA8PCAiICAgIG91dHB1dC5keF9Qb3NpdGlvbi55ICs9ICgtZHhfVmlld1NjYWxl
LnkgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0LnNwcml0ZVZlcnRleFBv
cy55ICogZ2xfUG9pbnRTaXplIC8gKGR4X1ZpZXdDb29yZHMueSoyKSkgKiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm91dHB1dC5keF9Qb3NpdGlvbi53OyI7CiAgICAgICAgIH0KLSAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgdmVydGV4U3RyZWFtIDw8
ICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uLnkgKz0gKGlucHV0LnNwcml0ZVZlcnRleFBvcy55ICog
Z2xfUG9pbnRTaXplIC8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoZHhfVmlld0Nv
b3Jkcy55KjIpKSAqIG91dHB1dC5keF9Qb3NpdGlvbi53OyI7CisgICAgICAgIH0KIAotICAgIHZl
cnRleEhMU0wgKz0gIlxuIgotICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gb3V0cHV0O1xu
IgotICAgICAgICAgICAgICAgICAgIn1cbiI7CisgICAgICAgIHZlcnRleFN0cmVhbQorICAgICAg
ICAgICAgPDwgIiAgICBvdXRwdXQuZHhfUG9zaXRpb24ueiArPSBpbnB1dC5zcHJpdGVWZXJ0ZXhQ
b3MueiAqIG91dHB1dC5keF9Qb3NpdGlvbi53O1xuIjsKIAotICAgIGNvbnN0IFNlbWFudGljSW5m
byAmcGl4ZWxTZW1hbnRpY3MgPSBnZXRTZW1hbnRpY0luZm8ocmVnaXN0ZXJzLCBvdXRwdXRQb3Np
dGlvbkZyb21WUywgdXNlc0ZyYWdDb29yZCwgdXNlc1BvaW50Q29vcmQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIXVzZUluc3RhbmNl
ZFBvaW50U3ByaXRlRW11bGF0aW9uICYmIHVzZXNQb2ludFNpemUpLCB0cnVlKTsKLQotICAgIHBp
eGVsSExTTCArPSAic3RydWN0IFBTX0lOUFVUXG4iICsgZ2VuZXJhdGVWYXJ5aW5nTGlua0hMU0wo
cGl4ZWxTZW1hbnRpY3MsIHZhcnlpbmdITFNMKSArICJcbiI7Ci0KLSAgICBpZiAoc2hhZGVyVmVy
c2lvbiA8IDMwMCkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IHJlbmRlclRhcmdl
dEluZGV4ID0gMDsgcmVuZGVyVGFyZ2V0SW5kZXggPCBudW1SZW5kZXJUYXJnZXRzOyByZW5kZXJU
YXJnZXRJbmRleCsrKQorICAgICAgICBpZiAocHJvZ3JhbU1ldGFkYXRhLnVzZXNQb2ludENvb3Jk
KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFBpeGVsU2hhZGVyT3V0cHV0VmFyaWFibGUgb3V0
cHV0S2V5VmFyaWFibGU7Ci0gICAgICAgICAgICBvdXRwdXRLZXlWYXJpYWJsZS50eXBlID0gR0xf
RkxPQVRfVkVDNDsKLSAgICAgICAgICAgIG91dHB1dEtleVZhcmlhYmxlLm5hbWUgPSAiZ2xfQ29s
b3IiICsgU3RyKHJlbmRlclRhcmdldEluZGV4KTsKLSAgICAgICAgICAgIG91dHB1dEtleVZhcmlh
YmxlLnNvdXJjZSA9IGJyb2FkY2FzdCA/ICJnbF9Db2xvclswXSIgOiAiZ2xfQ29sb3JbIiArIFN0
cihyZW5kZXJUYXJnZXRJbmRleCkgKyAiXSI7Ci0gICAgICAgICAgICBvdXRwdXRLZXlWYXJpYWJs
ZS5vdXRwdXRJbmRleCA9IHJlbmRlclRhcmdldEluZGV4OwotCi0gICAgICAgICAgICBvdXRQaXhl
bFNoYWRlcktleS0+cHVzaF9iYWNrKG91dHB1dEtleVZhcmlhYmxlKTsKKyAgICAgICAgICAgIHZl
cnRleFN0cmVhbSA8PCAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgICBvdXRw
dXQuZ2xfUG9pbnRDb29yZCA9IGlucHV0LnNwcml0ZVRleENvb3JkO1xuIjsKICAgICAgICAgfQor
ICAgIH0KIAotICAgICAgICAqb3V0VXNlc0ZyYWdEZXB0aCA9IGZyYWdtZW50U2hhZGVyLT5tVXNl
c0ZyYWdEZXB0aDsKKyAgICAvLyBSZW5kZXJlcnMgdGhhdCBlbmFibGUgaW5zdGFuY2VkIHBvaW50
c3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlIHRoZSB2ZXJ0ZXggc2hhZGVyIG91dHB1dCBtZW1iZXIK
KyAgICAvLyBnbF9Qb2ludENvb3JkIHRvIGJlIHNldCB0byBhIGRlZmF1bHQgdmFsdWUgaWYgdXNl
ZCB3aXRob3V0IGdsX1BvaW50U2l6ZS4gMC41LDAuNSBpcyB0aGUgc2FtZQorICAgIC8vIGRlZmF1
bHQgdmFsdWUgdXNlZCBpbiB0aGUgZ2VuZXJhdGVkIHBpeGVsIHNoYWRlci4KKyAgICBpZiAocHJv
Z3JhbU1ldGFkYXRhLnVzZXNJbnNlcnRlZFBvaW50Q29vcmRWYWx1ZSgpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCF1c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbik7CisgICAgICAgIHZl
cnRleFN0cmVhbSA8PCAiXG4iCisgICAgICAgICAgICAgICAgICAgICA8PCAiICAgIG91dHB1dC5n
bF9Qb2ludENvb3JkID0gZmxvYXQyKDAuNSwgMC41KTtcbiI7CiAgICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIGRlZmluZU91dHB1dFZhcmlhYmxlcyhmcmFnbWVudFNoYWRlciwgcHJvZ3Jh
bU91dHB1dFZhcnMpOwogCi0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+
ICZzaGFkZXJPdXRwdXRWYXJzID0gZnJhZ21lbnRTaGFkZXItPmdldEFjdGl2ZU91dHB1dFZhcmlh
YmxlcygpOwotICAgICAgICBmb3IgKGF1dG8gbG9jYXRpb25JdCA9IHByb2dyYW1PdXRwdXRWYXJz
LT5iZWdpbigpOyBsb2NhdGlvbkl0ICE9IHByb2dyYW1PdXRwdXRWYXJzLT5lbmQoKTsgbG9jYXRp
b25JdCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZv
dXRwdXRMb2NhdGlvbiA9IGxvY2F0aW9uSXQtPnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IHNo
OjpTaGFkZXJWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBzaGFkZXJPdXRwdXRWYXJzW291dHB1
dExvY2F0aW9uLmluZGV4XTsKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJpYWJs
ZU5hbWUgPSAib3V0XyIgKyBvdXRwdXRMb2NhdGlvbi5uYW1lOwotICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmVsZW1lbnRTdHJpbmcgPSAob3V0cHV0TG9jYXRpb24uZWxlbWVudCA9PSBH
TF9JTlZBTElEX0lOREVYID8gIiIgOiBTdHIob3V0cHV0TG9jYXRpb24uZWxlbWVudCkpOworICAg
IHZlcnRleFN0cmVhbSA8PCAiXG4iCisgICAgICAgICAgICAgICAgIDw8ICIgICAgcmV0dXJuIG91
dHB1dDtcbiIKKyAgICAgICAgICAgICAgICAgPDwgIn1cbiI7CiAKLSAgICAgICAgICAgIEFTU0VS
VChvdXRwdXRWYXJpYWJsZS5zdGF0aWNVc2UpOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHBpeGVs
U3RyZWFtOworICAgIHBpeGVsU3RyZWFtIDw8IGZyYWdtZW50U2hhZGVyR0wtPmdldFRyYW5zbGF0
ZWRTb3VyY2UoKTsKKyAgICBwaXhlbFN0cmVhbSA8PCAic3RydWN0IFBTX0lOUFVUXG4iOworICAg
IGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKFNIQURFUl9QSVhFTCwgdmFyeWluZ1BhY2tpbmcsIHBp
eGVsU3RyZWFtKTsKKyAgICBwaXhlbFN0cmVhbSA8PCAiXG4iOwogCi0gICAgICAgICAgICBQaXhl
bFNoYWRlck91dHB1dFZhcmlhYmxlIG91dHB1dEtleVZhcmlhYmxlOwotICAgICAgICAgICAgb3V0
cHV0S2V5VmFyaWFibGUudHlwZSA9IG91dHB1dFZhcmlhYmxlLnR5cGU7Ci0gICAgICAgICAgICBv
dXRwdXRLZXlWYXJpYWJsZS5uYW1lID0gdmFyaWFibGVOYW1lICsgZWxlbWVudFN0cmluZzsKLSAg
ICAgICAgICAgIG91dHB1dEtleVZhcmlhYmxlLnNvdXJjZSA9IHZhcmlhYmxlTmFtZSArIEFycmF5
U3RyaW5nKG91dHB1dExvY2F0aW9uLmVsZW1lbnQpOwotICAgICAgICAgICAgb3V0cHV0S2V5VmFy
aWFibGUub3V0cHV0SW5kZXggPSBsb2NhdGlvbkl0LT5maXJzdDsKKyAgICBwaXhlbFN0cmVhbSA8
PCBQSVhFTF9PVVRQVVRfU1RVQl9TVFJJTkcgKyAiXG4iOwogCi0gICAgICAgICAgICBvdXRQaXhl
bFNoYWRlcktleS0+cHVzaF9iYWNrKG91dHB1dEtleVZhcmlhYmxlKTsKLSAgICAgICAgfQotCi0g
ICAgICAgICpvdXRVc2VzRnJhZ0RlcHRoID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcGl4ZWxITFNM
ICs9IFBJWEVMX09VVFBVVF9TVFVCX1NUUklORyArICJcbiI7Ci0KLSAgICBpZiAoZnJhZ21lbnRT
aGFkZXItPm1Vc2VzRnJvbnRGYWNpbmcpCisgICAgaWYgKGZyYWdtZW50U2hhZGVyLT51c2VzRnJv
bnRGYWNpbmcoKSkKICAgICB7CiAgICAgICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBwaXhlbEhMU0wgKz0gIlBTX09VVFBVVCBtYWluKFBTX0lOUFVUIGlu
cHV0LCBib29sIGlzRnJvbnRGYWNlIDogU1ZfSXNGcm9udEZhY2UpXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIntcbiI7CisgICAgICAgICAgICBwaXhlbFN0cmVhbSA8PCAiUFNfT1VUUFVU
IG1haW4oUFNfSU5QVVQgaW5wdXQsIGJvb2wgaXNGcm9udEZhY2UgOiBTVl9Jc0Zyb250RmFjZSlc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ7XG4iOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgcGl4ZWxITFNMICs9ICJQU19PVVRQVVQgbWFp
bihQU19JTlBVVCBpbnB1dCwgZmxvYXQgdkZhY2UgOiBWRkFDRSlcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAie1xuIjsKKyAgICAgICAgICAgIHBpeGVsU3RyZWFtIDw8ICJQU19PVVRQVVQg
bWFpbihQU19JTlBVVCBpbnB1dCwgZmxvYXQgdkZhY2UgOiBWRkFDRSlcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIDw8ICJ7XG4iOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIHBpeGVsSExTTCArPSAiUFNfT1VUUFVUIG1haW4oUFNfSU5QVVQgaW5wdXQpXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAie1xuIjsKKyAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIlBT
X09VVFBVVCBtYWluKFBTX0lOUFVUIGlucHV0KVxuIgorICAgICAgICAgICAgICAgICAgICA8PCAi
e1xuIjsKICAgICB9CiAKLSAgICBpZiAodXNlc0ZyYWdDb29yZCkKKyAgICBjb25zdCBhdXRvICZw
aXhlbEJ1aWx0aW5zID0gdmFyeWluZ1BhY2tpbmcuYnVpbHRpbnMoU0hBREVSX1BJWEVMKTsKKwor
ICAgIGlmIChwaXhlbEJ1aWx0aW5zLmdsRnJhZ0Nvb3JkLmVuYWJsZWQpCiAgICAgewotICAgICAg
ICBwaXhlbEhMU0wgKz0gIiAgICBmbG9hdCByaHcgPSAxLjAgLyBpbnB1dC5nbF9GcmFnQ29vcmQu
dztcbiI7CisgICAgICAgIHBpeGVsU3RyZWFtIDw8ICIgICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5w
dXQuZ2xfRnJhZ0Nvb3JkLnc7XG4iOwogCiAgICAgICAgIC8vIENlcnRhaW4gU2hhZGVyIE1vZGVs
cyAoNF8wKyBhbmQgM18wKSBhbGxvdyByZWFkaW5nIGZyb20gZHhfUG9zaXRpb24gaW4gdGhlIHBp
eGVsIHNoYWRlci4KLSAgICAgICAgLy8gT3RoZXIgU2hhZGVyIE1vZGVscyAoNF8wX2xldmVsXzlf
MyBhbmQgMl94KSBkb24ndCBzdXBwb3J0IHRoaXMsIHNvIHdlIGVtdWxhdGUgaXQgdXNpbmcgZHhf
Vmlld0Nvb3Jkcy4KKyAgICAgICAgLy8gT3RoZXIgU2hhZGVyIE1vZGVscyAoNF8wX2xldmVsXzlf
MyBhbmQgMl94KSBkb24ndCBzdXBwb3J0IHRoaXMsIHNvIHdlIGVtdWxhdGUgaXQgdXNpbmcKKyAg
ICAgICAgLy8gZHhfVmlld0Nvb3Jkcy4KICAgICAgICAgaWYgKHNoYWRlck1vZGVsID49IDQgJiYg
bVJlbmRlcmVyLT5nZXRTaGFkZXJNb2RlbFN1ZmZpeCgpID09ICIiKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1Bvc2l0
aW9uLng7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29vcmQueSA9
IGlucHV0LmR4X1Bvc2l0aW9uLnk7XG4iOworICAgICAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIiAg
ICBnbF9GcmFnQ29vcmQueCA9IGlucHV0LmR4X1Bvc2l0aW9uLng7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICA8PCAiICAgIGdsX0ZyYWdDb29yZC55ID0gaW5wdXQuZHhfUG9zaXRpb24ueTtc
biI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoc2hhZGVyTW9kZWwgPT0gMykKICAgICAg
ICAgewotICAgICAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1
dC5keF9Qb3NpdGlvbi54ICsgMC41O1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
Z2xfRnJhZ0Nvb3JkLnkgPSBpbnB1dC5keF9Qb3NpdGlvbi55ICsgMC41O1xuIjsKKyAgICAgICAg
ICAgIHBpeGVsU3RyZWFtIDw8ICIgICAgZ2xfRnJhZ0Nvb3JkLnggPSBpbnB1dC5keF9Qb3NpdGlv
bi54ICsgMC41O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgICBnbF9GcmFnQ29v
cmQueSA9IGlucHV0LmR4X1Bvc2l0aW9uLnkgKyAwLjU7XG4iOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgLy8gZHhfVmlld0Nvb3JkcyBjb250YWlucyB0
aGUgdmlld3BvcnQgd2lkdGgvMiwgaGVpZ2h0LzIsIGNlbnRlci54IGFuZCBjZW50ZXIueS4gU2Vl
IFJlbmRlcmVyOjpzZXRWaWV3cG9ydCgpCi0gICAgICAgICAgICBwaXhlbEhMU0wgKz0gIiAgICBn
bF9GcmFnQ29vcmQueCA9IChpbnB1dC5nbF9GcmFnQ29vcmQueCAqIHJodykgKiBkeF9WaWV3Q29v
cmRzLnggKyBkeF9WaWV3Q29vcmRzLno7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICBnbF9GcmFnQ29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykgKiBkeF9WaWV3
Q29vcmRzLnkgKyBkeF9WaWV3Q29vcmRzLnc7XG4iOworICAgICAgICAgICAgLy8gZHhfVmlld0Nv
b3JkcyBjb250YWlucyB0aGUgdmlld3BvcnQgd2lkdGgvMiwgaGVpZ2h0LzIsIGNlbnRlci54IGFu
ZCBjZW50ZXIueS4gU2VlCisgICAgICAgICAgICAvLyBSZW5kZXJlcjo6c2V0Vmlld3BvcnQoKQor
ICAgICAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIiAgICBnbF9GcmFnQ29vcmQueCA9IChpbnB1dC5n
bF9GcmFnQ29vcmQueCAqIHJodykgKiBkeF9WaWV3Q29vcmRzLnggKyAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZHhfVmlld0Nvb3Jkcy56O1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiAgICBnbF9GcmFnQ29vcmQueSA9IChpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykg
KiBkeF9WaWV3Q29vcmRzLnkgKyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiZHhfVmll
d0Nvb3Jkcy53O1xuIjsKICAgICAgICAgfQogCi0gICAgICAgIHBpeGVsSExTTCArPSAiICAgIGds
X0ZyYWdDb29yZC56ID0gKGlucHV0LmdsX0ZyYWdDb29yZC56ICogcmh3KSAqIGR4X0RlcHRoRnJv
bnQueCArIGR4X0RlcHRoRnJvbnQueTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xf
RnJhZ0Nvb3JkLncgPSByaHc7XG4iOworICAgICAgICBpZiAocHJvZ3JhbU1ldGFkYXRhLnVzZXNW
aWV3U2NhbGUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRm9yIEZlYXR1cmUgTGV2ZWwg
OV8zIGFuZCBiZWxvdywgd2UgbmVlZCB0byBjb3JyZWN0IGdsX0ZyYWdDb29yZC55IHRvIGFjY291
bnQKKyAgICAgICAgICAgIC8vIGZvciBkeF9WaWV3U2NhbGUuIE9uIEZlYXR1cmUgTGV2ZWwgMTBf
MCssIGdsX0ZyYWdDb29yZC55IGlzIGNhbGN1bGF0ZWQgYWJvdmUgdXNpbmcKKyAgICAgICAgICAg
IC8vIGR4X1ZpZXdDb29yZHMgYW5kIGlzIGFsd2F5cyBjb3JyZWN0IGlycmVzcGVjdGl2ZSBvZiBk
eF9WaWV3U2NhbGUncyB2YWx1ZS4KKyAgICAgICAgICAgIC8vIE5PVEU6IHVzZXNWaWV3U2NhbGUo
KSBjYW4gb25seSBiZSB0cnVlIG9uIEQzRDExIChpLmUuIFNoYWRlciBNb2RlbCA0LjArKS4KKyAg
ICAgICAgICAgIGlmIChzaGFkZXJNb2RlbCA+PSA0ICYmIG1SZW5kZXJlci0+Z2V0U2hhZGVyTW9k
ZWxTdWZmaXgoKSA9PSAiIikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBTb21l
IGFzc3VtcHRpb25zOgorICAgICAgICAgICAgICAgIC8vICAtIGR4X1ZpZXdTY2FsZS55ID0gLTEu
MGYgd2hlbiByZW5kZXJpbmcgdG8gdGV4dHVyZQorICAgICAgICAgICAgICAgIC8vICAtIGR4X1Zp
ZXdTY2FsZS55ID0gKzEuMGYgd2hlbiByZW5kZXJpbmcgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZm
ZXIKKyAgICAgICAgICAgICAgICAvLyAgLSBnbF9GcmFnQ29vcmQueSBoYXMgYmVlbiBzZXQgY29y
cmVjdGx5IGFib3ZlLgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gV2hl
biByZW5kZXJpbmcgdG8gdGhlIGJhY2tidWZmZXIsIHRoZSBjb2RlIGludmVydHMgZ2xfRnJhZ0Nv
b3JkJ3MgeSBjb29yZGluYXRlLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaW52b2x2ZXMgc3Vi
dHJhY3RpbmcgdGhlIHkgY29vcmRpbmF0ZSBmcm9tIHRoZSBoZWlnaHQgb2YgdGhlIGFyZWEgYmVp
bmcKKyAgICAgICAgICAgICAgICAvLyByZW5kZXJlZCB0by4KKyAgICAgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgICAgIC8vIEZpcnN0IHdlIGNhbGN1bGF0ZSB0aGUgaGVpZ2h0IG9mIHRoZSBh
cmVhIGJlaW5nIHJlbmRlcmVkIHRvOgorICAgICAgICAgICAgICAgIC8vICAgIHJlbmRlcl9hcmVh
X2hlaWdodCA9ICgyLjBmIC8gKDEuMGYgLSBpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykpICoK
KyAgICAgICAgICAgICAgICAvLyAgICBnbF9GcmFnQ29vcmQueQorICAgICAgICAgICAgICAgIC8v
CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHdoZW4gd2UncmUgcmVuZGVyaW5nIHRvIGRl
ZmF1bHQgRkIsIHdlIHdhbnQgb3VyIG91dHB1dCB0byBiZQorICAgICAgICAgICAgICAgIC8vIGVx
dWl2YWxlbnQgdG86CisgICAgICAgICAgICAgICAgLy8gICAgImdsX0ZyYWdDb29yZC55ID0gcmVu
ZGVyX2FyZWFfaGVpZ2h0IC0gZ2xfRnJhZ0Nvb3JkLnkiCisgICAgICAgICAgICAgICAgLy8KKyAg
ICAgICAgICAgICAgICAvLyBXaGVuIHdlJ3JlIHJlbmRlcmluZyB0byBhIHRleHR1cmUsIHdlIHdh
bnQgb3VyIG91dHB1dCB0byBiZSBlcXVpdmFsZW50IHRvOgorICAgICAgICAgICAgICAgIC8vICAg
ICJnbF9GcmFnQ29vcmQueSA9IGdsX0ZyYWdDb29yZC55OyIKKyAgICAgICAgICAgICAgICAvLwor
ICAgICAgICAgICAgICAgIC8vIElmIHdlIHNldCBzY2FsZV9mYWN0b3IgPSAoKDEuMGYgKyBkeF9W
aWV3U2NhbGUueSkgLyAyLjBmKSwgdGhlbiBub3RpY2UgdGhhdAorICAgICAgICAgICAgICAgIC8v
ICAtIFdoZW4gcmVuZGVyaW5nIHRvIGRlZmF1bHQgRkI6IHNjYWxlX2ZhY3RvciA9IDEuMGYKKyAg
ICAgICAgICAgICAgICAvLyAgLSBXaGVuIHJlbmRlcmluZyB0byB0ZXh0dXJlOiAgICBzY2FsZV9m
YWN0b3IgPSAwLjBmCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBUaGVy
ZWZvcmUsIHdlIGNhbiBnZXQgb3VyIGRlc2lyZWQgb3V0cHV0IGJ5IHNldHRpbmc6CisgICAgICAg
ICAgICAgICAgLy8gICAgImdsX0ZyYWdDb29yZC55ID0gc2NhbGVfZmFjdG9yICogcmVuZGVyX2Fy
ZWFfaGVpZ2h0IC0gZHhfVmlld1NjYWxlLnkgKgorICAgICAgICAgICAgICAgIC8vICAgIGdsX0Zy
YWdDb29yZC55IgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gU2ltcGxp
ZnlpbmcsIHRoaXMgYmVjb21lczoKKyAgICAgICAgICAgICAgICBwaXhlbFN0cmVhbQorICAgICAg
ICAgICAgICAgICAgICA8PCAiICAgIGdsX0ZyYWdDb29yZC55ID0gKDEuMGYgKyBkeF9WaWV3U2Nh
bGUueSkgKiBnbF9GcmFnQ29vcmQueSAvIgorICAgICAgICAgICAgICAgICAgICAgICAiKDEuMGYg
LSBpbnB1dC5nbF9GcmFnQ29vcmQueSAqIHJodykgIC0gZHhfVmlld1NjYWxlLnkgKiBnbF9GcmFn
Q29vcmQueTtcbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwaXhlbFN0
cmVhbSA8PCAiICAgIGdsX0ZyYWdDb29yZC56ID0gKGlucHV0LmdsX0ZyYWdDb29yZC56ICogcmh3
KSAqIGR4X0RlcHRoRnJvbnQueCArICIKKyAgICAgICAgICAgICAgICAgICAgICAgImR4X0RlcHRo
RnJvbnQueTtcbiIKKyAgICAgICAgICAgICAgICAgICAgPDwgIiAgICBnbF9GcmFnQ29vcmQudyA9
IHJodztcbiI7CiAgICAgfQogCi0gICAgaWYgKHVzZXNQb2ludENvb3JkICYmIHNoYWRlck1vZGVs
ID49IDMpCisgICAgaWYgKHBpeGVsQnVpbHRpbnMuZ2xQb2ludENvb3JkLmVuYWJsZWQgJiYgc2hh
ZGVyTW9kZWwgPj0gMykKICAgICB7Ci0gICAgICAgIHBpeGVsSExTTCArPSAiICAgIGdsX1BvaW50
Q29vcmQueCA9IGlucHV0LmdsX1BvaW50Q29vcmQueDtcbiI7Ci0gICAgICAgIHBpeGVsSExTTCAr
PSAiICAgIGdsX1BvaW50Q29vcmQueSA9IDEuMCAtIGlucHV0LmdsX1BvaW50Q29vcmQueTtcbiI7
CisgICAgICAgIHBpeGVsU3RyZWFtIDw8ICIgICAgZ2xfUG9pbnRDb29yZC54ID0gaW5wdXQuZ2xf
UG9pbnRDb29yZC54O1xuIgorICAgICAgICAgICAgICAgICAgICA8PCAiICAgIGdsX1BvaW50Q29v
cmQueSA9IDEuMCAtIGlucHV0LmdsX1BvaW50Q29vcmQueTtcbiI7CiAgICAgfQogCi0gICAgaWYg
KGZyYWdtZW50U2hhZGVyLT5tVXNlc0Zyb250RmFjaW5nKQorICAgIGlmIChmcmFnbWVudFNoYWRl
ci0+dXNlc0Zyb250RmFjaW5nKCkpCiAgICAgewogICAgICAgICBpZiAoc2hhZGVyTW9kZWwgPD0g
MykKICAgICAgICAgewotICAgICAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJvbnRGYWNp
bmcgPSAodkZhY2UgKiBkeF9EZXB0aEZyb250LnogPj0gMC4wKTtcbiI7CisgICAgICAgICAgICBw
aXhlbFN0cmVhbSA8PCAiICAgIGdsX0Zyb250RmFjaW5nID0gKHZGYWNlICogZHhfRGVwdGhGcm9u
dC56ID49IDAuMCk7XG4iOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAg
ICAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgZ2xfRnJvbnRGYWNpbmcgPSBpc0Zyb250RmFjZTtc
biI7CisgICAgICAgICAgICBwaXhlbFN0cmVhbSA8PCAiICAgIGdsX0Zyb250RmFjaW5nID0gaXNG
cm9udEZhY2U7XG4iOwogICAgICAgICB9CiAgICAgfQogCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8
UGFja2VkVmFyeWluZz4gJmZyYWdtZW50VmFyeWluZ3MgPSBmcmFnbWVudFNoYWRlci0+Z2V0VmFy
eWluZ3MoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJ5aW5nSW5kZXggPSAwOyB2YXJ5aW5n
SW5kZXggPCBmcmFnbWVudFZhcnlpbmdzLnNpemUoKTsgdmFyeWluZ0luZGV4KyspCisgICAgZm9y
IChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA6IHZhcnlpbmdQYWNr
aW5nLmdldFJlZ2lzdGVyTGlzdCgpKQogICAgIHsKLSAgICAgICAgY29uc3QgUGFja2VkVmFyeWlu
ZyAmdmFyeWluZyA9IGZyYWdtZW50VmFyeWluZ3NbdmFyeWluZ0luZGV4XTsKLSAgICAgICAgaWYg
KHZhcnlpbmcucmVnaXN0ZXJBc3NpZ25lZCgpKQorICAgICAgICBjb25zdCBhdXRvICZwYWNrZWRW
YXJ5aW5nID0gKnJlZ2lzdGVySW5mby5wYWNrZWRWYXJ5aW5nOworICAgICAgICBjb25zdCBhdXRv
ICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWluZzsKKyAgICAgICAgQVNTRVJUKCF2YXJ5
aW5nLmlzQnVpbHRJbigpICYmICF2YXJ5aW5nLmlzU3RydWN0KCkpOworCisgICAgICAgIC8vIERv
bid0IHJlZmVyZW5jZSBWUy1vbmx5IHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyBpbiB0aGUg
UFMuCisgICAgICAgIGlmIChyZWdpc3RlckluZm8ucGFja2VkVmFyeWluZy0+dmVydGV4T25seSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHBpeGVsU3RyZWFtIDw8ICIgICAgIjsK
KworICAgICAgICBpZiAocGFja2VkVmFyeWluZy5pc1N0cnVjdEZpZWxkKCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc0J1aWx0SW4oKSk7Ci0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBlbGVtZW50SW5kZXggPSAwOyBlbGVtZW50SW5kZXggPCB2YXJ5aW5n
LmVsZW1lbnRDb3VudCgpOyBlbGVtZW50SW5kZXgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBHTGVudW0gdHJhbnNwb3NlZFR5cGUgPSBUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlp
bmcudHlwZSk7Ci0gICAgICAgICAgICAgICAgaW50IHZhcmlhYmxlUm93cyA9ICh2YXJ5aW5nLmlz
U3RydWN0KCkgPyAxIDogVmFyaWFibGVSb3dDb3VudCh0cmFuc3Bvc2VkVHlwZSkpOwotICAgICAg
ICAgICAgICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHZhcmlhYmxlUm93czsgcm93KyspCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBuID0gU3Ry
KHZhcnlpbmcucmVnaXN0ZXJJbmRleCArIHZhcnlpbmcuY29sdW1uSW5kZXggKiBkYXRhLmNhcHMt
Pm1heFZhcnlpbmdWZWN0b3JzICsgZWxlbWVudEluZGV4ICogdmFyaWFibGVSb3dzICsgcm93KTsK
LSAgICAgICAgICAgICAgICAgICAgcGl4ZWxITFNMICs9ICIgICAgXyIgKyB2YXJ5aW5nLm5hbWU7
CisgICAgICAgICAgICBwaXhlbFN0cmVhbSA8PCBkZWNvcmF0ZVZhcmlhYmxlKHBhY2tlZFZhcnlp
bmcucGFyZW50U3RydWN0TmFtZSkgPDwgIi4iOworICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHZhcnlpbmcuaXNBcnJheSgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwaXhlbEhMU0wgKz0gQXJyYXlTdHJpbmcoZWxlbWVudEluZGV4
KTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBwaXhlbFN0cmVhbSA8PCBkZWNvcmF0
ZVZhcmlhYmxlKHZhcnlpbmcubmFtZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlh
YmxlUm93cyA+IDEpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBpeGVsSExTTCArPSBBcnJheVN0cmluZyhyb3cpOwotICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgIGlmICh2YXJ5aW5nLmlzQXJyYXkoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
V3JpdGVBcnJheVN0cmluZyhwaXhlbFN0cmVhbSwgcmVnaXN0ZXJJbmZvLnZhcnlpbmdBcnJheUlu
ZGV4KTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJ5aW5nLmlzU3Ry
dWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVsSExTTCArPSAiID0gaW5wdXQudiIgKyBuICsgIjtcbiI7ICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKFZhcmlhYmxlQ29sdW1uQ291bnQo
dHJhbnNwb3NlZFR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDE6IHBpeGVsSExTTCArPSAiID0gaW5wdXQudiIgKyBuICsgIi54
O1xuIjsgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBwaXhlbEhM
U0wgKz0gIiA9IGlucHV0LnYiICsgbiArICIueHk7XG4iOyAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMzogcGl4ZWxITFNMICs9ICIgPSBpbnB1dC52IiArIG4gKyAiLnh5
ejtcbiI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHBpeGVsSExT
TCArPSAiID0gaW5wdXQudiIgKyBuICsgIjtcbiI7ICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KKyAgICAgICAgR0xlbnVtIHRyYW5zcG9zZWRUeXBlID0gVHJhbnNwb3NlTWF0cml4VHlw
ZSh2YXJ5aW5nLnR5cGUpOworICAgICAgICBpZiAoVmFyaWFibGVSb3dDb3VudCh0cmFuc3Bvc2Vk
VHlwZSkgPiAxKQorICAgICAgICB7CisgICAgICAgICAgICBXcml0ZUFycmF5U3RyaW5nKHBpeGVs
U3RyZWFtLCByZWdpc3RlckluZm8udmFyeWluZ1Jvd0luZGV4KTsKICAgICAgICAgfQotICAgICAg
ICBlbHNlCisKKyAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIiA9IGlucHV0LnYiIDw8IHJlZ2lzdGVy
SW5mby5zZW1hbnRpY0luZGV4OworCisgICAgICAgIHN3aXRjaCAoVmFyaWFibGVDb2x1bW5Db3Vu
dCh0cmFuc3Bvc2VkVHlwZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVCh2YXJ5aW5n
LmlzQnVpbHRJbigpIHx8ICF2YXJ5aW5nLnN0YXRpY1VzZSk7CisgICAgICAgICAgICBjYXNlIDE6
CisgICAgICAgICAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIi54IjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBwaXhlbFN0cmVhbSA8
PCAiLnh5IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoKKyAg
ICAgICAgICAgICAgICBwaXhlbFN0cmVhbSA8PCAiLnh5eiI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgIH0K
KyAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIjtcbiI7CiAgICAgfQogCi0gICAgaWYgKGZyYWdtZW50
U2hhZGVyLT51c2VzRGVmZXJyZWRJbml0KCkpCi0gICAgewotICAgICAgICBwaXhlbEhMU0wgKz0g
IlxuIgotICAgICAgICAgICAgICAgICAgICAgIiAgICBpbml0aWFsaXplRGVmZXJyZWRHbG9iYWxz
KCk7XG4iOwotICAgIH0KKyAgICBwaXhlbFN0cmVhbSA8PCAiXG4iCisgICAgICAgICAgICAgICAg
PDwgIiAgICBnbF9tYWluKCk7XG4iCisgICAgICAgICAgICAgICAgPDwgIlxuIgorICAgICAgICAg
ICAgICAgIDw8ICIgICAgcmV0dXJuIGdlbmVyYXRlT3V0cHV0KCk7XG4iCisgICAgICAgICAgICAg
ICAgPDwgIn1cbiI7CiAKLSAgICBwaXhlbEhMU0wgKz0gIlxuIgotICAgICAgICAgICAgICAgICAi
ICAgIGdsX21haW4oKTtcbiIKLSAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiBnZW5lcmF0ZU91dHB1dCgpO1xuIgotICAgICAgICAgICAgICAgICAifVxu
IjsKKyAgICAqdmVydGV4SExTTCA9IHZlcnRleFN0cmVhbS5zdHIoKTsKKyAgICAqcGl4ZWxITFNM
ICA9IHBpeGVsU3RyZWFtLnN0cigpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRHlu
YW1pY0hMU0w6OmRlZmluZU91dHB1dFZhcmlhYmxlcyhTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVy
LCBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+ICpwcm9ncmFtT3V0cHV0VmFycykgY29u
c3QKK3N0ZDo6c3RyaW5nIER5bmFtaWNITFNMOjpnZW5lcmF0ZUdlb21ldHJ5U2hhZGVyUHJlYW1i
bGUoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nKSBjb25zdAogewotICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZzaGFkZXJPdXRwdXRWYXJzID0gZnJhZ21l
bnRTaGFkZXItPmdldEFjdGl2ZU91dHB1dFZhcmlhYmxlcygpOworICAgIEFTU0VSVChtUmVuZGVy
ZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSA0KTsKIAotICAgIGZvciAodW5zaWduZWQgaW50
IG91dHB1dFZhcmlhYmxlSW5kZXggPSAwOyBvdXRwdXRWYXJpYWJsZUluZGV4IDwgc2hhZGVyT3V0
cHV0VmFycy5zaXplKCk7IG91dHB1dFZhcmlhYmxlSW5kZXgrKykKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBwcmVhbWJsZVN0cmVhbTsKKworICAgIGNvbnN0IGF1dG8gJmJ1aWx0aW5zID0gdmFyeWlu
Z1BhY2tpbmcuYnVpbHRpbnMoU0hBREVSX1ZFUlRFWCk7CisKKyAgICBwcmVhbWJsZVN0cmVhbSA8
PCAic3RydWN0IEdTX0lOUFVUXG4iOworICAgIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKFNIQURF
Ul9WRVJURVgsIHZhcnlpbmdQYWNraW5nLCBwcmVhbWJsZVN0cmVhbSk7CisgICAgcHJlYW1ibGVT
dHJlYW0gPDwgIlxuIgorICAgICAgICAgICAgICAgICAgIDw8ICJzdHJ1Y3QgR1NfT1VUUFVUXG4i
OworICAgIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKFNIQURFUl9HRU9NRVRSWSwgdmFyeWluZ1Bh
Y2tpbmcsIHByZWFtYmxlU3RyZWFtKTsKKyAgICBwcmVhbWJsZVN0cmVhbQorICAgICAgICA8PCAi
XG4iCisgICAgICAgIDw8ICJ2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91dHB1dCwg
R1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dClcbiIKKyAgICAgICAgPDwgIntcbiIK
KyAgICAgICAgPDwgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBpbnB1dC5nbF9Qb3NpdGlvbjtc
biI7CisKKyAgICBpZiAoYnVpbHRpbnMuZ2xQb2ludFNpemUuZW5hYmxlZCkKICAgICB7Ci0gICAg
ICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJm91dHB1dFZhcmlhYmxlID0gc2hhZGVyT3V0cHV0VmFy
c1tvdXRwdXRWYXJpYWJsZUluZGV4XTsKLSAgICAgICAgY29uc3QgaW50IGJhc2VMb2NhdGlvbiA9
IG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uID09IC0xID8gMCA6IG91dHB1dFZhcmlhYmxlLmxvY2F0
aW9uOworICAgICAgICBwcmVhbWJsZVN0cmVhbSA8PCAiICAgIG91dHB1dC5nbF9Qb2ludFNpemUg
PSBpbnB1dC5nbF9Qb2ludFNpemU7XG4iOworICAgIH0KIAotICAgICAgICBBU1NFUlQob3V0cHV0
VmFyaWFibGUuc3RhdGljVXNlKTsKLQotICAgICAgICBpZiAob3V0cHV0VmFyaWFibGUuYXJyYXlT
aXplID4gMCkKKyAgICBmb3IgKGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmdmFyeWluZ1Jl
Z2lzdGVyIDogdmFyeWluZ1BhY2tpbmcuZ2V0UmVnaXN0ZXJMaXN0KCkpCisgICAgeworICAgICAg
ICBwcmVhbWJsZVN0cmVhbSA8PCAiICAgIG91dHB1dC52IiA8PCB2YXJ5aW5nUmVnaXN0ZXIuc2Vt
YW50aWNJbmRleCA8PCAiID0gIjsKKyAgICAgICAgaWYgKHZhcnlpbmdSZWdpc3Rlci5wYWNrZWRW
YXJ5aW5nLT5pbnRlcnBvbGF0aW9uID09IHNoOjpJTlRFUlBPTEFUSU9OX0ZMQVQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1l
bnRJbmRleCA8IG91dHB1dFZhcmlhYmxlLmFycmF5U2l6ZTsgZWxlbWVudEluZGV4KyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgaW50IGxvY2F0aW9uID0gYmFzZUxvY2F0
aW9uICsgZWxlbWVudEluZGV4OwotICAgICAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtT3V0cHV0
VmFycy0+Y291bnQobG9jYXRpb24pID09IDApOwotICAgICAgICAgICAgICAgICgqcHJvZ3JhbU91
dHB1dFZhcnMpW2xvY2F0aW9uXSA9IFZhcmlhYmxlTG9jYXRpb24ob3V0cHV0VmFyaWFibGUubmFt
ZSwgZWxlbWVudEluZGV4LCBvdXRwdXRWYXJpYWJsZUluZGV4KTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHByZWFtYmxlU3RyZWFtIDw8ICJmbGF0IjsKICAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtT3V0cHV0VmFycy0+Y291
bnQoYmFzZUxvY2F0aW9uKSA9PSAwKTsKLSAgICAgICAgICAgICgqcHJvZ3JhbU91dHB1dFZhcnMp
W2Jhc2VMb2NhdGlvbl0gPSBWYXJpYWJsZUxvY2F0aW9uKG91dHB1dFZhcmlhYmxlLm5hbWUsIEdM
X0lOVkFMSURfSU5ERVgsIG91dHB1dFZhcmlhYmxlSW5kZXgpOwotICAgICAgICB9CisgICAgICAg
IHByZWFtYmxlU3RyZWFtIDw8ICJpbnB1dC52IiA8PCB2YXJ5aW5nUmVnaXN0ZXIuc2VtYW50aWNJ
bmRleCA8PCAiOyBcbiI7CiAgICAgfQotfQogCi1zdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2Vu
ZXJhdGVHZW9tZXRyeVNoYWRlckhMU0woaW50IHJlZ2lzdGVycywgU2hhZGVyRDNEICpmcmFnbWVu
dFNoYWRlciwgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXIpIGNvbnN0Ci17Ci0gICAgLy8gZm9yIG5v
dyB3ZSBvbmx5IGhhbmRsZSBwb2ludCBzcHJpdGUgZW11bGF0aW9uCi0gICAgQVNTRVJUKHZlcnRl
eFNoYWRlci0+bVVzZXNQb2ludFNpemUgJiYgbVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVs
KCkgPj0gNCk7Ci0gICAgcmV0dXJuIGdlbmVyYXRlUG9pbnRTcHJpdGVITFNMKHJlZ2lzdGVycywg
ZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlcik7CisgICAgaWYgKGJ1aWx0aW5zLmdsRnJhZ0Nv
b3JkLmVuYWJsZWQpCisgICAgeworICAgICAgICBwcmVhbWJsZVN0cmVhbSA8PCAiICAgIG91dHB1
dC5nbF9GcmFnQ29vcmQgPSBpbnB1dC5nbF9GcmFnQ29vcmQ7XG4iOworICAgIH0KKworICAgIC8v
IE9ubHkgd3JpdGUgdGhlIGR4X1Bvc2l0aW9uIGlmIHdlIGFyZW4ndCB1c2luZyBwb2ludCBzcHJp
dGVzCisgICAgcHJlYW1ibGVTdHJlYW0gPDwgIiNpZm5kZWYgQU5HTEVfUE9JTlRfU1BSSVRFX1NI
QURFUlxuIgorICAgICAgICAgICAgICAgICAgIDw8ICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0g
aW5wdXQuZHhfUG9zaXRpb247XG4iCisgICAgICAgICAgICAgICAgICAgPDwgIiNlbmRpZiAgLy8g
QU5HTEVfUE9JTlRfU1BSSVRFX1NIQURFUlxuIgorICAgICAgICAgICAgICAgICAgIDw8ICJ9XG4i
OworCisgICAgcmV0dXJuIHByZWFtYmxlU3RyZWFtLnN0cigpOwogfQogCi1zdGQ6OnN0cmluZyBE
eW5hbWljSExTTDo6Z2VuZXJhdGVQb2ludFNwcml0ZUhMU0woaW50IHJlZ2lzdGVycywgU2hhZGVy
RDNEICpmcmFnbWVudFNoYWRlciwgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXIpIGNvbnN0CitzdGQ6
OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVHZW9tZXRyeVNoYWRlckhMU0woZ2w6OlByaW1p
dGl2ZVR5cGUgcHJpbWl0aXZlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6
RGF0YSAmcHJvZ3JhbURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgYm9vbCB1c2VWaWV3U2NhbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBy
ZWFtYmxlU3RyaW5nKSBjb25zdAogewotICAgIEFTU0VSVChyZWdpc3RlcnMgPj0gMCk7Ci0gICAg
QVNTRVJUKHZlcnRleFNoYWRlci0+bVVzZXNQb2ludFNpemUpOwogICAgIEFTU0VSVChtUmVuZGVy
ZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSA0KTsKIAotICAgIHN0ZDo6c3RyaW5nIGdlb21I
TFNMOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNoYWRlclN0cmVhbTsKIAotICAgIGNvbnN0IFNl
bWFudGljSW5mbyAmaW5TZW1hbnRpY3MgPSBnZXRTZW1hbnRpY0luZm8ocmVnaXN0ZXJzLCB0cnVl
LCBmcmFnbWVudFNoYWRlci0+bVVzZXNGcmFnQ29vcmQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwotICAg
IGNvbnN0IFNlbWFudGljSW5mbyAmb3V0U2VtYW50aWNzID0gZ2V0U2VtYW50aWNJbmZvKHJlZ2lz
dGVycywgdHJ1ZSwgZnJhZ21lbnRTaGFkZXItPm1Vc2VzRnJhZ0Nvb3JkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVy
LT5tVXNlc1BvaW50Q29vcmQsIHRydWUsIGZhbHNlKTsKKyAgICBjb25zdCBib29sIHBvaW50U3By
aXRlcyAgID0gKHByaW1pdGl2ZVR5cGUgPT0gUFJJTUlUSVZFX1BPSU5UUyk7CisgICAgY29uc3Qg
Ym9vbCB1c2VzUG9pbnRDb29yZCA9IHByZWFtYmxlU3RyaW5nLmZpbmQoImdsX1BvaW50Q29vcmQi
KSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKIAotICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdITFNMID0g
Z2VuZXJhdGVWYXJ5aW5nSExTTCh2ZXJ0ZXhTaGFkZXIpOwotICAgIHN0ZDo6c3RyaW5nIGluTGlu
a0hMU0wgPSBnZW5lcmF0ZVZhcnlpbmdMaW5rSExTTChpblNlbWFudGljcywgdmFyeWluZ0hMU0wp
OwotICAgIHN0ZDo6c3RyaW5nIG91dExpbmtITFNMID0gZ2VuZXJhdGVWYXJ5aW5nTGlua0hMU0wo
b3V0U2VtYW50aWNzLCB2YXJ5aW5nSExTTCk7CisgICAgY29uc3QgY2hhciAqaW5wdXRQVCAgPSBu
dWxscHRyOworICAgIGNvbnN0IGNoYXIgKm91dHB1dFBUID0gbnVsbHB0cjsKKyAgICBpbnQgaW5w
dXRTaXplICAgICAgICA9IDA7CisgICAgaW50IG1heFZlcnRleE91dHB1dCAgPSAwOwogCi0gICAg
Ly8gVE9ETyhnZW9mZmxhbmcpOiB1c2UgY29udGV4dCdzIGNhcHMKLSAgICBnZW9tSExTTCArPSAi
dW5pZm9ybSBmbG9hdDQgZHhfVmlld0Nvb3JkcyA6IHJlZ2lzdGVyKGMxKTtcbiIKLSAgICAgICAg
ICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgInN0cnVjdCBHU19JTlBVVFxuIiArIGluTGlu
a0hMU0wgKyAiXG4iICsKLSAgICAgICAgICAgICAgICAic3RydWN0IEdTX09VVFBVVFxuIiArIG91
dExpbmtITFNMICsgIlxuIiArCi0gICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICJzdGF0aWMgZmxvYXQyIHBvaW50U3ByaXRlQ29ybmVyc1tdID0gXG4iCi0gICAgICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICAgICAiICAgIGZsb2F0MiggMC41ZiwgLTAuNWYpLFxuIgot
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKCAwLjVmLCAgMC41ZiksXG4iCi0gICAgICAgICAg
ICAgICAgIiAgICBmbG9hdDIoLTAuNWYsIC0wLjVmKSxcbiIKLSAgICAgICAgICAgICAgICAiICAg
IGZsb2F0MigtMC41ZiwgIDAuNWYpXG4iCi0gICAgICAgICAgICAgICAgIn07XG4iCi0gICAgICAg
ICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQyIHBvaW50U3ByaXRl
VGV4Y29vcmRzW10gPSBcbiIKLSAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICIgICAgZmxvYXQyKDEuMGYsIDEuMGYpLFxuIgotICAgICAgICAgICAgICAgICIgICAgZmxvYXQy
KDEuMGYsIDAuMGYpLFxuIgotICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDAuMGYsIDEuMGYp
LFxuIgotICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDAuMGYsIDAuMGYpXG4iCi0gICAgICAg
ICAgICAgICAgIn07XG4iCi0gICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICJz
dGF0aWMgZmxvYXQgbWluUG9pbnRTaXplID0gIiArIFN0cihzdGF0aWNfY2FzdDxpbnQ+KG1SZW5k
ZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCkubWluQWxpYXNlZFBvaW50U2l6ZSkpICsgIi4wZjtcbiIK
LSAgICAgICAgICAgICAgICAic3RhdGljIGZsb2F0IG1heFBvaW50U2l6ZSA9ICIgKyBTdHIoc3Rh
dGljX2Nhc3Q8aW50PihtUmVuZGVyZXItPmdldFJlbmRlcmVyQ2FwcygpLm1heEFsaWFzZWRQb2lu
dFNpemUpKSArICIuMGY7XG4iCi0gICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICJbbWF4dmVydGV4Y291bnQoNCldXG4iCi0gICAgICAgICAgICAgICAgInZvaWQgbWFpbihwb2lu
dCBHU19JTlBVVCBpbnB1dFsxXSwgaW5vdXQgVHJpYW5nbGVTdHJlYW08R1NfT1VUUFVUPiBvdXRT
dHJlYW0pXG4iCi0gICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICAiICAgIEdT
X09VVFBVVCBvdXRwdXQgPSAoR1NfT1VUUFVUKTA7XG4iCi0gICAgICAgICAgICAgICAgIiAgICBv
dXRwdXQuZ2xfUG9zaXRpb24gPSBpbnB1dFswXS5nbF9Qb3NpdGlvbjtcbiIKLSAgICAgICAgICAg
ICAgICAiICAgIG91dHB1dC5nbF9Qb2ludFNpemUgPSBpbnB1dFswXS5nbF9Qb2ludFNpemU7XG4i
OworICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgUFJJTUlU
SVZFX1BPSU5UUzoKKyAgICAgICAgICAgIGlucHV0UFQgICAgICAgICA9ICJwb2ludCI7CisgICAg
ICAgICAgICBvdXRwdXRQVCAgICAgICAgPSAiVHJpYW5nbGUiOworICAgICAgICAgICAgaW5wdXRT
aXplICAgICAgID0gMTsKKyAgICAgICAgICAgIG1heFZlcnRleE91dHB1dCA9IDQ7CisgICAgICAg
ICAgICBicmVhazsKIAotICAgIGZvciAoaW50IHIgPSAwOyByIDwgcmVnaXN0ZXJzOyByKyspCisg
ICAgICAgIGNhc2UgUFJJTUlUSVZFX0xJTkVTOgorICAgICAgICBjYXNlIFBSSU1JVElWRV9MSU5F
X1NUUklQOgorICAgICAgICBjYXNlIFBSSU1JVElWRV9MSU5FX0xPT1A6CisgICAgICAgICAgICBp
bnB1dFBUICAgICAgICAgPSAibGluZSI7CisgICAgICAgICAgICBvdXRwdXRQVCAgICAgICAgPSAi
TGluZSI7CisgICAgICAgICAgICBpbnB1dFNpemUgICAgICAgPSAyOworICAgICAgICAgICAgbWF4
VmVydGV4T3V0cHV0ID0gMjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUFJJ
TUlUSVZFX1RSSUFOR0xFUzoKKyAgICAgICAgY2FzZSBQUklNSVRJVkVfVFJJQU5HTEVfU1RSSVA6
CisgICAgICAgIGNhc2UgUFJJTUlUSVZFX1RSSUFOR0xFX0ZBTjoKKyAgICAgICAgICAgIGlucHV0
UFQgICAgICAgICA9ICJ0cmlhbmdsZSI7CisgICAgICAgICAgICBvdXRwdXRQVCAgICAgICAgPSAi
VHJpYW5nbGUiOworICAgICAgICAgICAgaW5wdXRTaXplICAgICAgID0gMzsKKyAgICAgICAgICAg
IG1heFZlcnRleE91dHB1dCA9IDM7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGlmIChwb2ludFNwcml0ZXMpCiAgICAgewotICAgICAgICBnZW9tSExTTCArPSAi
ICAgIG91dHB1dC52IiArIFN0cihyKSArICIgPSBpbnB1dFswXS52IiArIFN0cihyKSArICI7XG4i
OworICAgICAgICBzaGFkZXJTdHJlYW0gPDwgIiNkZWZpbmUgQU5HTEVfUE9JTlRfU1BSSVRFX1NI
QURFUlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgInVuaWZvcm0gZmxvYXQ0IGR4X1ZpZXdDb29yZHMgOiByZWdpc3RlcihjMSk7XG4iOwor
CisgICAgICAgIGlmICh1c2VWaWV3U2NhbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNoYWRl
clN0cmVhbSA8PCAidW5pZm9ybSBmbG9hdDIgZHhfVmlld1NjYWxlIDogcmVnaXN0ZXIoYzMpO1xu
IjsKKyAgICAgICAgfQorCisgICAgICAgIHNoYWRlclN0cmVhbSA8PCAiXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAic3RhdGljIGZsb2F0MiBwb2ludFNwcml0ZUNvcm5lcnNbXSA9IFxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgZmxvYXQyKCAwLjVmLCAtMC41ZiksXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IGZsb2F0MiggMC41ZiwgIDAuNWYpLFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdDIoLTAuNWYsIC0wLjVmKSxcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxv
YXQyKC0wLjVmLCAgMC41ZilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ9O1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRp
YyBmbG9hdDIgcG9pbnRTcHJpdGVUZXhjb29yZHNbXSA9IFxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDEuMGYsIDEu
MGYpLFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIoMS4wZiwgMC4wZiks
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MigwLjBmLCAxLjBmKSxcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyKDAuMGYsIDAuMGYpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAifTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0aWMgZmxvYXQgbWluUG9pbnRTaXplID0gIgor
ICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8aW50PihkYXRhLmNhcHMtPm1pbkFs
aWFzZWRQb2ludFNpemUpCisgICAgICAgICAgICAgICAgICAgICA8PCAiLjBmO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgInN0YXRpYyBmbG9hdCBtYXhQb2ludFNpemUgPSAiCisgICAgICAg
ICAgICAgICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEuY2Fwcy0+bWF4QWxpYXNlZFBv
aW50U2l6ZSkgPDwgIi4wZjtcbiIKKyAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiI7CiAgICAg
fQogCi0gICAgaWYgKGZyYWdtZW50U2hhZGVyLT5tVXNlc0ZyYWdDb29yZCkKKyAgICBzaGFkZXJT
dHJlYW0gPDwgcHJlYW1ibGVTdHJpbmcgPDwgIlxuIgorICAgICAgICAgICAgICAgICA8PCAiW21h
eHZlcnRleGNvdW50KCIgPDwgbWF4VmVydGV4T3V0cHV0IDw8ICIpXVxuIgorICAgICAgICAgICAg
ICAgICA8PCAidm9pZCBtYWluKCIgPDwgaW5wdXRQVCA8PCAiIEdTX0lOUFVUIGlucHV0WyIgPDwg
aW5wdXRTaXplIDw8ICJdLCAiOworCisgICAgaWYgKHByaW1pdGl2ZVR5cGUgPT0gUFJJTUlUSVZF
X1RSSUFOR0xFX1NUUklQKQogICAgIHsKLSAgICAgICAgZ2VvbUhMU0wgKz0gIiAgICBvdXRwdXQu
Z2xfRnJhZ0Nvb3JkID0gaW5wdXRbMF0uZ2xfRnJhZ0Nvb3JkO1xuIjsKKyAgICAgICAgc2hhZGVy
U3RyZWFtIDw8ICJ1aW50IHByaW1pdGl2ZUlEIDogU1ZfUHJpbWl0aXZlSUQsICI7CiAgICAgfQog
Ci0gICAgZ2VvbUhMU0wgKz0gIiAgICBcbiIKLSAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGds
X1BvaW50U2l6ZSA9IGNsYW1wKGlucHV0WzBdLmdsX1BvaW50U2l6ZSwgbWluUG9pbnRTaXplLCBt
YXhQb2ludFNpemUpO1xuIgotICAgICAgICAgICAgICAgICIgICAgZmxvYXQ0IGR4X1Bvc2l0aW9u
ID0gaW5wdXRbMF0uZHhfUG9zaXRpb247XG4iCi0gICAgICAgICAgICAgICAgIiAgICBmbG9hdDIg
dmlld3BvcnRTY2FsZSA9IGZsb2F0MigxLjBmIC8gZHhfVmlld0Nvb3Jkcy54LCAxLjBmIC8gZHhf
Vmlld0Nvb3Jkcy55KSAqIGR4X1Bvc2l0aW9uLnc7XG4iOworICAgIHNoYWRlclN0cmVhbSA8PCAi
IGlub3V0ICIgPDwgb3V0cHV0UFQgPDwgIlN0cmVhbTxHU19PVVRQVVQ+IG91dFN0cmVhbSlcbiIK
KyAgICAgICAgICAgICAgICAgPDwgIntcbiIKKyAgICAgICAgICAgICAgICAgPDwgIiAgICBHU19P
VVRQVVQgb3V0cHV0ID0gKEdTX09VVFBVVCkwO1xuIjsKIAotICAgIGZvciAoaW50IGNvcm5lciA9
IDA7IGNvcm5lciA8IDQ7IGNvcm5lcisrKQorICAgIGlmIChwcmltaXRpdmVUeXBlID09IFBSSU1J
VElWRV9UUklBTkdMRV9TVFJJUCkKICAgICB7Ci0gICAgICAgIGdlb21ITFNMICs9ICIgICAgXG4i
Ci0gICAgICAgICAgICAgICAgICAgICIgICAgb3V0cHV0LmR4X1Bvc2l0aW9uID0gZHhfUG9zaXRp
b24gKyBmbG9hdDQocG9pbnRTcHJpdGVDb3JuZXJzWyIgKyBTdHIoY29ybmVyKSArICJdICogdmll
d3BvcnRTY2FsZSAqIGdsX1BvaW50U2l6ZSwgMC4wZiwgMC4wZik7XG4iOworICAgICAgICBzaGFk
ZXJTdHJlYW0gPDwgIiAgICB1aW50IGxhc3RWZXJ0ZXhJbmRleCA9IChwcmltaXRpdmVJRCAlIDIg
PT0gMCA/IDIgOiAxKTtcbiI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNoYWRl
clN0cmVhbSA8PCAiICAgIHVpbnQgbGFzdFZlcnRleEluZGV4ID0gIiA8PCAoaW5wdXRTaXplIC0g
MSkgPDwgIjtcbiI7CisgICAgfQogCi0gICAgICAgIGlmIChmcmFnbWVudFNoYWRlci0+bVVzZXNQ
b2ludENvb3JkKQorICAgIGZvciAoaW50IHZlcnRleEluZGV4ID0gMDsgdmVydGV4SW5kZXggPCBp
bnB1dFNpemU7ICsrdmVydGV4SW5kZXgpCisgICAgeworICAgICAgICBzaGFkZXJTdHJlYW0gPDwg
IiAgICBjb3B5VmVydGV4KG91dHB1dCwgaW5wdXRbIiA8PCB2ZXJ0ZXhJbmRleAorICAgICAgICAg
ICAgICAgICAgICAgPDwgIl0sIGlucHV0W2xhc3RWZXJ0ZXhJbmRleF0pO1xuIjsKKworICAgICAg
ICBpZiAoIXBvaW50U3ByaXRlcykKICAgICAgICAgewotICAgICAgICAgICAgZ2VvbUhMU0wgKz0g
IiAgICBvdXRwdXQuZ2xfUG9pbnRDb29yZCA9IHBvaW50U3ByaXRlVGV4Y29vcmRzWyIgKyBTdHIo
Y29ybmVyKSArICJdO1xuIjsKKyAgICAgICAgICAgIEFTU0VSVChpbnB1dFNpemUgPT0gbWF4VmVy
dGV4T3V0cHV0KTsKKyAgICAgICAgICAgIHNoYWRlclN0cmVhbSA8PCAiICAgIG91dFN0cmVhbS5B
cHBlbmQob3V0cHV0KTtcbiI7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgZ2VvbUhMU0wg
Kz0gIiAgICBvdXRTdHJlYW0uQXBwZW5kKG91dHB1dCk7XG4iOworICAgIGlmIChwb2ludFNwcml0
ZXMpCisgICAgeworICAgICAgICBzaGFkZXJTdHJlYW0gPDwgIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICBmbG9hdDQgZHhfUG9zaXRpb24gPSBpbnB1dFswXS5keF9Qb3NpdGlvbjtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQgZ2xfUG9pbnRTaXplID0gY2xh
bXAoaW5wdXRbMF0uZ2xfUG9pbnRTaXplLCBtaW5Qb2ludFNpemUsICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICJtYXhQb2ludFNpemUpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICBmbG9hdDIgdmlld3BvcnRTY2FsZSA9IGZsb2F0MigxLjBmIC8gZHhfVmlld0Nvb3Jkcy54LCAx
LjBmIC8gIgorICAgICAgICAgICAgICAgICAgICAgICAgImR4X1ZpZXdDb29yZHMueSkgKiBkeF9Q
b3NpdGlvbi53O1xuIjsKKworICAgICAgICBmb3IgKGludCBjb3JuZXIgPSAwOyBjb3JuZXIgPCA0
OyBjb3JuZXIrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHVzZVZpZXdTY2FsZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaGFkZXJTdHJlYW0gPDwgIiAgICBcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZHhfUG9zaXRpb24gPSBk
eF9Qb3NpdGlvbiArIGZsb2F0NCgxLjBmLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICItZHhfVmlld1NjYWxlLnksIDEuMGYsIDEuMGYpIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgICAgICAqIGZsb2F0NChwb2ludFNwcml0ZUNvcm5lcnNbIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCBjb3JuZXIgPDwgIl0gKiB2aWV3cG9ydFNjYWxlICog
Z2xfUG9pbnRTaXplLCAwLjBmLCAwLjBmKTtcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc2hhZGVyU3RyZWFtIDw8ICJc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBvdXRwdXQuZHhfUG9zaXRp
b24gPSBkeF9Qb3NpdGlvbiArIGZsb2F0NChwb2ludFNwcml0ZUNvcm5lcnNbIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCBjb3JuZXIgPDwgIl0gKiB2aWV3cG9ydFNjYWxlICogZ2xf
UG9pbnRTaXplLCAwLjBmLCAwLjBmKTtcbiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICh1c2VzUG9pbnRDb29yZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaGFk
ZXJTdHJlYW0gPDwgIiAgICBvdXRwdXQuZ2xfUG9pbnRDb29yZCA9IHBvaW50U3ByaXRlVGV4Y29v
cmRzWyIgPDwgY29ybmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJdO1xuIjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hhZGVyU3RyZWFtIDw8ICIgICAgb3V0U3Ry
ZWFtLkFwcGVuZChvdXRwdXQpO1xuIjsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGdlb21ITFNM
ICs9ICIgICAgXG4iCi0gICAgICAgICAgICAgICAgIiAgICBvdXRTdHJlYW0uUmVzdGFydFN0cmlw
KCk7XG4iCi0gICAgICAgICAgICAgICAgIn1cbiI7CisgICAgc2hhZGVyU3RyZWFtIDw8ICIgICAg
XG4iCisgICAgICAgICAgICAgICAgICAgICIgICAgb3V0U3RyZWFtLlJlc3RhcnRTdHJpcCgpO1xu
IgorICAgICAgICAgICAgICAgICAgICAifVxuIjsKIAotICAgIHJldHVybiBnZW9tSExTTDsKKyAg
ICByZXR1cm4gc2hhZGVyU3RyZWFtLnN0cigpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBuZWVkcyB0
byBtYXRjaCBPdXRwdXRITFNMOjpkZWNvcmF0ZQpAQCAtMTIxNyw5ICs5OTgsMTIgQEAKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAotc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlQXR0cmli
dXRlQ29udmVyc2lvbkhMU0woY29uc3QgVmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhGb3JtYXQsIGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAmc2hhZGVyQXR0cmliKSBjb25zdAorc3RkOjpzdHJpbmcgRHlu
YW1pY0hMU0w6OmdlbmVyYXRlQXR0cmlidXRlQ29udmVyc2lvbkhMU0woCisgICAgZ2w6OlZlcnRl
eEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSwKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFi
bGUgJnNoYWRlckF0dHJpYikgY29uc3QKIHsKLSAgICBzdGQ6OnN0cmluZyBhdHRyaWJTdHJpbmcg
PSAiaW5wdXQuIiArIGRlY29yYXRlVmFyaWFibGUoc2hhZGVyQXR0cmliLm5hbWUpOworICAgIGNv
bnN0IGdsOjpWZXJ0ZXhGb3JtYXQgJnZlcnRleEZvcm1hdCA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRG
cm9tVHlwZSh2ZXJ0ZXhGb3JtYXRUeXBlKTsKKyAgICBzdGQ6OnN0cmluZyBhdHRyaWJTdHJpbmcg
ICAgICAgICAgICAgPSAiaW5wdXQuIiArIGRlY29yYXRlVmFyaWFibGUoc2hhZGVyQXR0cmliLm5h
bWUpOwogCiAgICAgLy8gTWF0cml4CiAgICAgaWYgKElzTWF0cml4VHlwZShzaGFkZXJBdHRyaWIu
dHlwZSkpCkBAIC0xMjI4LDE1ICsxMDEyLDE2IEBACiAgICAgfQogCiAgICAgR0xlbnVtIHNoYWRl
ckNvbXBvbmVudFR5cGUgPSBWYXJpYWJsZUNvbXBvbmVudFR5cGUoc2hhZGVyQXR0cmliLnR5cGUp
OwotICAgIGludCBzaGFkZXJDb21wb25lbnRDb3VudCA9IFZhcmlhYmxlQ29tcG9uZW50Q291bnQo
c2hhZGVyQXR0cmliLnR5cGUpOworICAgIGludCBzaGFkZXJDb21wb25lbnRDb3VudCAgID0gVmFy
aWFibGVDb21wb25lbnRDb3VudChzaGFkZXJBdHRyaWIudHlwZSk7CiAKICAgICAvLyBQZXJmb3Jt
IGludGVnZXIgdG8gZmxvYXQgY29udmVyc2lvbiAoaWYgbmVjZXNzYXJ5KQotICAgIGJvb2wgcmVx
dWlyZXNUeXBlQ29udmVyc2lvbiA9IChzaGFkZXJDb21wb25lbnRUeXBlID09IEdMX0ZMT0FUICYm
IHZlcnRleEZvcm1hdC5tVHlwZSAhPSBHTF9GTE9BVCk7CisgICAgYm9vbCByZXF1aXJlc1R5cGVD
b252ZXJzaW9uID0KKyAgICAgICAgKHNoYWRlckNvbXBvbmVudFR5cGUgPT0gR0xfRkxPQVQgJiYg
dmVydGV4Rm9ybWF0LnR5cGUgIT0gR0xfRkxPQVQpOwogCiAgICAgaWYgKHJlcXVpcmVzVHlwZUNv
bnZlcnNpb24pCiAgICAgewogICAgICAgICAvLyBUT0RPOiBub3JtYWxpemF0aW9uIGZvciAzMi1i
aXQgaW50ZWdlciBmb3JtYXRzCi0gICAgICAgIEFTU0VSVCghdmVydGV4Rm9ybWF0Lm1Ob3JtYWxp
emVkICYmICF2ZXJ0ZXhGb3JtYXQubVB1cmVJbnRlZ2VyKTsKKyAgICAgICAgQVNTRVJUKCF2ZXJ0
ZXhGb3JtYXQubm9ybWFsaXplZCAmJiAhdmVydGV4Rm9ybWF0LnB1cmVJbnRlZ2VyKTsKICAgICAg
ICAgcmV0dXJuICJmbG9hdCIgKyBTdHIoc2hhZGVyQ29tcG9uZW50Q291bnQpICsgIigiICsgYXR0
cmliU3RyaW5nICsgIikiOwogICAgIH0KIApAQCAtMTI0NCwyMiArMTAyOSw1NyBAQAogICAgIHJl
dHVybiBhdHRyaWJTdHJpbmc7CiB9CiAKLXZvaWQgRHluYW1pY0hMU0w6OmdldElucHV0TGF5b3V0
U2lnbmF0dXJlKGNvbnN0IFZlcnRleEZvcm1hdCBpbnB1dExheW91dFtdLCBHTGVudW0gc2lnbmF0
dXJlW10pIGNvbnN0Cit2b2lkIER5bmFtaWNITFNMOjpnZXRQaXhlbFNoYWRlck91dHB1dEtleShj
b25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZwcm9ncmFtRGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAm
bWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlPiAqb3V0UGl4ZWxTaGFkZXJLZXkpCiB7
Ci0gICAgZm9yIChzaXplX3QgaW5wdXRJbmRleCA9IDA7IGlucHV0SW5kZXggPCBNQVhfVkVSVEVY
X0FUVFJJQlM7IGlucHV0SW5kZXgrKykKKyAgICAvLyBUd28gY2FzZXMgd2hlbiB3cml0aW5nIHRv
IGdsX0ZyYWdDb2xvciBhbmQgdXNpbmcgRVNTTCAxLjA6CisgICAgLy8gLSB3aXRoIGEgMy4wIGNv
bnRleHQsIHRoZSBvdXRwdXQgY29sb3IgaXMgY29waWVkIHRvIGNoYW5uZWwgMAorICAgIC8vIC0g
d2l0aCBhIDIuMCBjb250ZXh0LCB0aGUgb3V0cHV0IGNvbG9yIGlzIGJyb2FkY2FzdCB0byBhbGwg
Y2hhbm5lbHMKKyAgICBib29sIGJyb2FkY2FzdCA9IG1ldGFkYXRhLnVzZXNCcm9hZGNhc3QoZGF0
YSk7CisgICAgY29uc3QgdW5zaWduZWQgaW50IG51bVJlbmRlclRhcmdldHMgPQorICAgICAgICAo
YnJvYWRjYXN0IHx8IG1ldGFkYXRhLnVzZXNNdWx0aXBsZUZyYWdtZW50T3V0cygpID8gZGF0YS5j
YXBzLT5tYXhEcmF3QnVmZmVycyA6IDEpOworCisgICAgaWYgKG1ldGFkYXRhLmdldE1ham9yU2hh
ZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKLSAgICAgICAgY29uc3QgVmVydGV4Rm9ybWF0ICZ2
ZXJ0ZXhGb3JtYXQgPSBpbnB1dExheW91dFtpbnB1dEluZGV4XTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgcmVuZGVyVGFyZ2V0SW5kZXggPSAwOyByZW5kZXJUYXJnZXRJbmRleCA8IG51bVJl
bmRlclRhcmdldHM7CisgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0SW5kZXgrKykKKyAgICAgICAg
eworICAgICAgICAgICAgUGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJsZSBvdXRwdXRLZXlWYXJpYWJs
ZTsKKyAgICAgICAgICAgIG91dHB1dEtleVZhcmlhYmxlLnR5cGUgPSBHTF9GTE9BVF9WRUM0Owor
ICAgICAgICAgICAgb3V0cHV0S2V5VmFyaWFibGUubmFtZSA9ICJnbF9Db2xvciIgKyBTdHIocmVu
ZGVyVGFyZ2V0SW5kZXgpOworICAgICAgICAgICAgb3V0cHV0S2V5VmFyaWFibGUuc291cmNlID0K
KyAgICAgICAgICAgICAgICBicm9hZGNhc3QgPyAiZ2xfQ29sb3JbMF0iIDogImdsX0NvbG9yWyIg
KyBTdHIocmVuZGVyVGFyZ2V0SW5kZXgpICsgIl0iOworICAgICAgICAgICAgb3V0cHV0S2V5VmFy
aWFibGUub3V0cHV0SW5kZXggPSByZW5kZXJUYXJnZXRJbmRleDsKIAotICAgICAgICBpZiAodmVy
dGV4Rm9ybWF0Lm1UeXBlID09IEdMX05PTkUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNpZ25h
dHVyZVtpbnB1dEluZGV4XSA9IEdMX05PTkU7CisgICAgICAgICAgICBvdXRQaXhlbFNoYWRlcktl
eS0+cHVzaF9iYWNrKG91dHB1dEtleVZhcmlhYmxlKTsKICAgICAgICAgfQotICAgICAgICBlbHNl
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJnNoYWRlck91dHB1
dFZhcnMgPQorICAgICAgICAgICAgbWV0YWRhdGEuZ2V0RnJhZ21lbnRTaGFkZXIoKS0+Z2V0RGF0
YSgpLmdldEFjdGl2ZU91dHB1dFZhcmlhYmxlcygpOworCisgICAgICAgIGZvciAoYXV0byBvdXRw
dXRQYWlyIDogcHJvZ3JhbURhdGEuZ2V0T3V0cHV0VmFyaWFibGVzKCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGJvb2wgZ3B1Q29udmVydGVkID0gKChtUmVuZGVyZXItPmdldFZlcnRleENvbnZl
cnNpb25UeXBlKHZlcnRleEZvcm1hdCkgJiBWRVJURVhfQ09OVkVSVF9HUFUpICE9IDApOwotICAg
ICAgICAgICAgc2lnbmF0dXJlW2lucHV0SW5kZXhdID0gKGdwdUNvbnZlcnRlZCA/IEdMX1RSVUUg
OiBHTF9GQUxTRSk7CisgICAgICAgICAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZvdXRwdXRM
b2NhdGlvbiAgID0gb3V0cHV0UGFpci5zZWNvbmQ7CisgICAgICAgICAgICBjb25zdCBzaDo6U2hh
ZGVyVmFyaWFibGUgJm91dHB1dFZhcmlhYmxlID0gc2hhZGVyT3V0cHV0VmFyc1tvdXRwdXRMb2Nh
dGlvbi5pbmRleF07CisgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyaWFibGVOYW1l
ID0gIm91dF8iICsgb3V0cHV0TG9jYXRpb24ubmFtZTsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZlbGVtZW50U3RyaW5nID0KKyAgICAgICAgICAgICAgICAob3V0cHV0TG9jYXRpb24u
ZWxlbWVudCA9PSBHTF9JTlZBTElEX0lOREVYID8gIiIgOiBTdHIob3V0cHV0TG9jYXRpb24uZWxl
bWVudCkpOworCisgICAgICAgICAgICBBU1NFUlQob3V0cHV0VmFyaWFibGUuc3RhdGljVXNlKTsK
KworICAgICAgICAgICAgUGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJsZSBvdXRwdXRLZXlWYXJpYWJs
ZTsKKyAgICAgICAgICAgIG91dHB1dEtleVZhcmlhYmxlLnR5cGUgICAgICAgID0gb3V0cHV0VmFy
aWFibGUudHlwZTsKKyAgICAgICAgICAgIG91dHB1dEtleVZhcmlhYmxlLm5hbWUgICAgICAgID0g
dmFyaWFibGVOYW1lICsgZWxlbWVudFN0cmluZzsKKyAgICAgICAgICAgIG91dHB1dEtleVZhcmlh
YmxlLnNvdXJjZSAgICAgID0gdmFyaWFibGVOYW1lICsgQXJyYXlTdHJpbmcob3V0cHV0TG9jYXRp
b24uZWxlbWVudCk7CisgICAgICAgICAgICBvdXRwdXRLZXlWYXJpYWJsZS5vdXRwdXRJbmRleCA9
IG91dHB1dFBhaXIuZmlyc3Q7CisKKyAgICAgICAgICAgIG91dFBpeGVsU2hhZGVyS2V5LT5wdXNo
X2JhY2sob3V0cHV0S2V5VmFyaWFibGUpOwogICAgICAgICB9CiAgICAgfQogfQogCi19Cit9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvRHluYW1pY0hMU0wuaAkod29ya2luZyBjb3B5KQpAQCAtOSwxNCArOSwxNiBAQAog
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRFlOQU1JQ0hMU0xfSF8KICNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfRDNEX0RZTkFNSUNITFNMX0hfCiAKKyNpbmNsdWRlIDxtYXA+CisjaW5j
bHVkZSA8dmVjdG9yPgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJjb21tb24v
YW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnN0YW50cy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgogCi0jaW5jbHVk
ZSAiYW5nbGVfZ2wuaCIKLQotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxtYXA+Ci0KIG5h
bWVzcGFjZSBzaAogewogc3RydWN0IEF0dHJpYnV0ZTsKQEAgLTI3LDIwICsyOSwxNyBAQAogewog
Y2xhc3MgSW5mb0xvZzsKIHN0cnVjdCBWYXJpYWJsZUxvY2F0aW9uOwotc3RydWN0IExpbmtlZFZh
cnlpbmc7CiBzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOwotc3RydWN0IFZlcnRleEZvcm1hdDsKLXN0
cnVjdCBQYWNrZWRWYXJ5aW5nOwogc3RydWN0IERhdGE7CiB9CiAKIG5hbWVzcGFjZSByeAogewot
Y2xhc3MgUmVuZGVyZXJEM0Q7CitzdHJ1Y3QgUGFja2VkVmFyeWluZzsKK2NsYXNzIFByb2dyYW1E
M0RNZXRhZGF0YTsKIGNsYXNzIFNoYWRlckQzRDsKK2NsYXNzIFZhcnlpbmdQYWNraW5nOwogCi10
eXBlZGVmIGNvbnN0IGdsOjpQYWNrZWRWYXJ5aW5nICpWYXJ5aW5nUGFja2luZ1tnbDo6SU1QTEVN
RU5UQVRJT05fTUFYX1ZBUllJTkdfVkVDVE9SU11bNF07Ci0KIHN0cnVjdCBQaXhlbFNoYWRlck91
dHB1dFZhcmlhYmxlCiB7CiAgICAgR0xlbnVtIHR5cGU7CkBAIC01NCw0NyArNTMsNTIgQEAKICAg
cHVibGljOgogICAgIGV4cGxpY2l0IER5bmFtaWNITFNMKFJlbmRlcmVyRDNEICpjb25zdCByZW5k
ZXJlcik7CiAKLSAgICBpbnQgcGFja1ZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBWYXJ5
aW5nUGFja2luZyBwYWNraW5nLCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXIsIGNvbnN0IHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiYgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk7Ci0gICAgc3RkOjpzdHJpbmcg
Z2VuZXJhdGVWZXJ0ZXhTaGFkZXJGb3JJbnB1dExheW91dChjb25zdCBzdGQ6OnN0cmluZyAmc291
cmNlU2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlZlcnRleEZvcm1hdCBpbnB1dExheW91dFtdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OkF0dHJpYnV0ZT4gJnNoYWRlckF0dHJpYnV0ZXMpIGNvbnN0OwotICAgIHN0ZDo6c3RyaW5n
IGdlbmVyYXRlUGl4ZWxTaGFkZXJGb3JPdXRwdXRTaWduYXR1cmUoY29uc3Qgc3RkOjpzdHJpbmcg
JnNvdXJjZVNoYWRlciwgY29uc3Qgc3RkOjp2ZWN0b3I8UGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJs
ZT4gJm91dHB1dFZhcmlhYmxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlc0ZyYWdEZXB0aCwgY29uc3Qgc3RkOjp2ZWN0b3I8
R0xlbnVtPiAmb3V0cHV0TGF5b3V0KSBjb25zdDsKLSAgICBib29sIGdlbmVyYXRlU2hhZGVyTGlu
a0hMU0woY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nLCBpbnQgcmVn
aXN0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYXJ5aW5nUGFj
a2luZyBwYWNraW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyAmcGl4ZWxITFNMLCBzdGQ6OnN0cmluZyAmdmVydGV4SExTTCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlciwgU2hhZGVyRDNEICp2ZXJ0
ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFZhcnlpbmc+ICpsaW5r
ZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8aW50
LCBnbDo6VmFyaWFibGVMb2NhdGlvbj4gKnByb2dyYW1PdXRwdXRWYXJzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxl
PiAqb3V0UGl4ZWxTaGFkZXJLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgKm91dFVzZXNGcmFnRGVwdGgpIGNvbnN0OworICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlVmVy
dGV4U2hhZGVyRm9ySW5wdXRMYXlvdXQoCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3Vy
Y2VTaGFkZXIsCisgICAgICAgIGNvbnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCisg
ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICZzaGFkZXJBdHRyaWJ1dGVz
KSBjb25zdDsKKyAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZVBpeGVsU2hhZGVyRm9yT3V0cHV0U2ln
bmF0dXJlKAorICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlU2hhZGVyLAorICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlPiAmb3V0cHV0VmFy
aWFibGVzLAorICAgICAgICBib29sIHVzZXNGcmFnRGVwdGgsCisgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPEdMZW51bT4gJm91dHB1dExheW91dCkgY29uc3Q7CisgICAgYm9vbCBnZW5lcmF0ZVNo
YWRlckxpbmtITFNMKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmcHJvZ3JhbURhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAmcHJvZ3Jh
bU1ldGFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYXJ5aW5n
UGFja2luZyAmdmFyeWluZ1BhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nICpwaXhlbEhMU0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nICp2ZXJ0ZXhITFNMKSBjb25zdDsKIAotICAgIHN0ZDo6c3RyaW5nIGdlbmVy
YXRlR2VvbWV0cnlTaGFkZXJITFNMKGludCByZWdpc3RlcnMsIFNoYWRlckQzRCAqZnJhZ21lbnRT
aGFkZXIsIFNoYWRlckQzRCAqdmVydGV4U2hhZGVyKSBjb25zdDsKLSAgICB2b2lkIGdldElucHV0
TGF5b3V0U2lnbmF0dXJlKGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgaW5wdXRMYXlvdXRbXSwgR0xl
bnVtIHNpZ25hdHVyZVtdKSBjb25zdDsKKyAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZUdlb21ldHJ5
U2hhZGVyUHJlYW1ibGUoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nKSBjb25z
dDsKIAorICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2VvbWV0cnlTaGFkZXJITFNMKGdsOjpQcmlt
aXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJnByb2dyYW1EYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wg
dXNlVmlld1NjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZwcmVhbWJsZVN0cmluZykgY29uc3Q7CisKKyAgICB2b2lkIGdl
dFBpeGVsU2hhZGVyT3V0cHV0S2V5KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJnByb2dyYW1EYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbUQzRE1ldGFk
YXRhICZtZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPFBpeGVsU2hhZGVyT3V0cHV0VmFyaWFibGU+ICpvdXRQaXhlbFNoYWRlcktleSk7CisKICAg
cHJpdmF0ZToKICAgICBSZW5kZXJlckQzRCAqY29uc3QgbVJlbmRlcmVyOwogCi0gICAgc3RydWN0
IFNlbWFudGljSW5mbzsKKyAgICB2b2lkIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKFNoYWRlclR5
cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZh
cnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtICZsaW5rU3RyZWFtKSBjb25zdDsKKyAgICB2b2lkIGdl
bmVyYXRlVmFyeWluZ0hMU0woY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSAmaGxzbFN0cmVh
bSkgY29uc3Q7CiAKLSAgICBzdGQ6OnN0cmluZyBnZXRWYXJ5aW5nU2VtYW50aWMoYm9vbCBwb2lu
dFNpemUpIGNvbnN0OwotICAgIFNlbWFudGljSW5mbyBnZXRTZW1hbnRpY0luZm8oaW50IHN0YXJ0
UmVnaXN0ZXJzLCBib29sIHBvc2l0aW9uLCBib29sIGZyYWdDb29yZCwgYm9vbCBwb2ludENvb3Jk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwb2ludFNpemUsIGJvb2wg
cGl4ZWxTaGFkZXIpIGNvbnN0OwotICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlVmFyeWluZ0xpbmtI
TFNMKGNvbnN0IFNlbWFudGljSW5mbyAmaW5mbywgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdI
TFNMKSBjb25zdDsKLSAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZVZhcnlpbmdITFNMKGNvbnN0IFNo
YWRlckQzRCAqc2hhZGVyKSBjb25zdDsKLSAgICB2b2lkIHN0b3JlVXNlckxpbmtlZFZhcnlpbmdz
KGNvbnN0IFNoYWRlckQzRCAqdmVydGV4U2hhZGVyLCBzdGQ6OnZlY3RvcjxnbDo6TGlua2VkVmFy
eWluZz4gKmxpbmtlZFZhcnlpbmdzKSBjb25zdDsKLSAgICB2b2lkIHN0b3JlQnVpbHRpbkxpbmtl
ZFZhcnlpbmdzKGNvbnN0IFNlbWFudGljSW5mbyAmaW5mbywgc3RkOjp2ZWN0b3I8Z2w6Okxpbmtl
ZFZhcnlpbmc+ICpsaW5rZWRWYXJ5aW5ncykgY29uc3Q7Ci0gICAgdm9pZCBkZWZpbmVPdXRwdXRW
YXJpYWJsZXMoU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlciwgc3RkOjptYXA8aW50LCBnbDo6VmFy
aWFibGVMb2NhdGlvbj4gKnByb2dyYW1PdXRwdXRWYXJzKSBjb25zdDsKLSAgICBzdGQ6OnN0cmlu
ZyBnZW5lcmF0ZVBvaW50U3ByaXRlSExTTChpbnQgcmVnaXN0ZXJzLCBTaGFkZXJEM0QgKmZyYWdt
ZW50U2hhZGVyLCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlcikgY29uc3Q7Ci0KICAgICAvLyBQcmVw
ZW5kIGFuIHVuZGVyc2NvcmUKICAgICBzdGF0aWMgc3RkOjpzdHJpbmcgZGVjb3JhdGVWYXJpYWJs
ZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSk7CiAKLSAgICBzdGQ6OnN0cmluZyBnZW5lcmF0ZUF0
dHJpYnV0ZUNvbnZlcnNpb25ITFNMKGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgJnZlcnRleEZvcm1h
dCwgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZzaGFkZXJBdHRyaWIpIGNvbnN0OworICAgIHN0
ZDo6c3RyaW5nIGdlbmVyYXRlQXR0cmlidXRlQ29udmVyc2lvbkhMU0woZ2w6OlZlcnRleEZvcm1h
dFR5cGUgdmVydGV4Rm9ybWF0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmc2hhZGVyQXR0cmliKSBj
b25zdDsKIH07CiAKK3N0ZDo6c3RyaW5nIEdldFZhcnlpbmdTZW1hbnRpYyhpbnQgbWFqb3JTaGFk
ZXJNb2RlbCwgYm9vbCBwcm9ncmFtVXNlc1BvaW50U2l6ZSk7CiB9CiAKLSNlbmRpZiAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9EM0RfRFlOQU1JQ0hMU0xfSF8KKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVO
REVSRVJfRDNEX0RZTkFNSUNITFNMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdl
RDNELmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTM1IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRUdMSW1hZ2VEM0QuY3BwOiBJbXBsZW1lbnRz
IHRoZSByeDo6RUdMSW1hZ2VEM0QgY2xhc3MsIHRoZSBEM0QgaW1wbGVtZW50YXRpb24gb2YgRUdM
IGltYWdlcworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmgi
CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvQXR0cmlidXRlTWFwLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvVGV4dHVyZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZm
ZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaCIKKworI2luY2x1ZGUgPEVHTC9lZ2xl
eHQuaD4KKworbmFtZXNwYWNlIHJ4Cit7CitzdGF0aWMgZ2w6OkltYWdlSW5kZXggR2V0SW1hZ2VJ
bmRleChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbWlwLCBzaXplX3QgbGF5ZXIpCit7CisgICAgaWYg
KHRhcmdldCA9PSBHTF9URVhUVVJFXzNEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpJbWFn
ZUluZGV4OjpNYWtlM0Qoc3RhdGljX2Nhc3Q8R0xpbnQ+KG1pcCksIHN0YXRpY19jYXN0PEdMaW50
PihsYXllcikpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NFUlQobGF5ZXIg
PT0gMCk7CisgICAgICAgIHJldHVybiBnbDo6SW1hZ2VJbmRleDo6TWFrZUdlbmVyaWModGFyZ2V0
LCBzdGF0aWNfY2FzdDxHTGludD4obWlwKSk7CisgICAgfQorfQorCitFR0xJbWFnZUQzRDo6RUdM
SW1hZ2VEM0QoUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2VTaWJs
aW5nICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCisgICAgOiBtUmVuZGVyZXIocmVuZGVyZXIpLCBtQnVmZmVyKGJ1ZmZl
ciksIG1BdHRhY2htZW50QnVmZmVyKG51bGxwdHIpLCBtUmVuZGVyVGFyZ2V0KG51bGxwdHIpCit7
CisgICAgQVNTRVJUKHJlbmRlcmVyICE9IG51bGxwdHIpOworICAgIEFTU0VSVChidWZmZXIgIT0g
bnVsbHB0cik7CisKKyAgICBpZiAoZWdsOjpJc1RleHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAgICB7
CisgICAgICAgIG1BdHRhY2htZW50QnVmZmVyID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+KEdldEFz
PGdsOjpUZXh0dXJlPihidWZmZXIpKTsKKyAgICAgICAgbUF0dGFjaG1lbnRUYXJnZXQgPSBnbDo6
RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQoCisgICAgICAgICAgICBHTF9OT05FLCBHZXRJ
bWFnZUluZGV4KGVnbF9nbDo6RUdMSW1hZ2VUYXJnZXRUb0dMVGV4dHVyZVRhcmdldCh0YXJnZXQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJzLmdldChFR0xfR0xf
VEVYVFVSRV9MRVZFTF9LSFIsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJzLmdldChFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiwgMCkpKTsKKyAgICB9Cisg
ICAgZWxzZSBpZiAoZWdsOjpJc1JlbmRlcmJ1ZmZlclRhcmdldCh0YXJnZXQpKQorICAgIHsKKyAg
ICAgICAgbUF0dGFjaG1lbnRCdWZmZXIgPSBHZXRJbXBsQXM8UmVuZGVyYnVmZmVyRDNEPihHZXRB
czxnbDo6UmVuZGVyYnVmZmVyPihidWZmZXIpKTsKKyAgICAgICAgbUF0dGFjaG1lbnRUYXJnZXQg
PQorICAgICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0KEdMX05PTkUs
IGdsOjpJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKK0VHTEltYWdlRDNEOjp+RUdMSW1h
Z2VEM0QoKQoreworICAgIFNhZmVEZWxldGUobVJlbmRlclRhcmdldCk7Cit9CisKK2VnbDo6RXJy
b3IgRUdMSW1hZ2VEM0Q6OmluaXRpYWxpemUoKQoreworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9TVUNDRVNTKTsKK30KKworZ2w6OkVycm9yIEVHTEltYWdlRDNEOjpvcnBoYW4oZWdsOjpJbWFn
ZVNpYmxpbmcgKnNpYmxpbmcpCit7CisgICAgaWYgKHNpYmxpbmcgPT0gbUJ1ZmZlcikKKyAgICB7
CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGNvcHlUb0xvY2FsUmVuZGVydGFyZ2V0KCk7Cisg
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworfQorCitnbDo6RXJyb3IgRUdMSW1hZ2VEM0Q6OmdldFJlbmRlclRhcmdldChSZW5k
ZXJUYXJnZXREM0QgKipvdXRSVCkgY29uc3QKK3sKKyAgICBpZiAobUF0dGFjaG1lbnRCdWZmZXIp
CisgICAgeworICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKnJ0ID0g
bnVsbHB0cjsKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUF0dGFjaG1lbnRCdWZmZXItPmdl
dEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQobUF0dGFjaG1lbnRUYXJnZXQsICZydCk7CisgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICAgICAgfQorCisgICAgICAgICpvdXRSVCA9IHN0YXRpY19jYXN0PFJlbmRlclRhcmdl
dEQzRCAqPihydCk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NFUlQobVJlbmRlclRhcmdldCk7CisgICAg
ICAgICpvdXRSVCA9IG1SZW5kZXJUYXJnZXQ7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIH0KK30KKworZ2w6OkVycm9yIEVHTEltYWdlRDNEOjpjb3B5VG9Mb2Nh
bFJlbmRlcnRhcmdldCgpCit7CisgICAgQVNTRVJUKG1CdWZmZXIgIT0gbnVsbHB0cik7CisgICAg
QVNTRVJUKG1BdHRhY2htZW50QnVmZmVyICE9IG51bGxwdHIpOworICAgIEFTU0VSVChtUmVuZGVy
VGFyZ2V0ID09IG51bGxwdHIpOworCisgICAgUmVuZGVyVGFyZ2V0RDNEICpjdXJSZW5kZXJUYXJn
ZXQgPSBudWxscHRyOworICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlbmRlclRhcmdldCgmY3Vy
UmVuZGVyVGFyZ2V0KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGVycm9yOworICAgIH0KKworICAgIC8vIFRoaXMgb25seSBjdXJyZW50bHkgYXBwbGll
cyBkbyBEM0QxMSwgd2hlcmUgaXQgaW52YWxpZGF0ZXMgRkJPcyB3aXRoIHRoaXMgSW1hZ2UgYXR0
YWNoZWQuCisgICAgY3VyUmVuZGVyVGFyZ2V0LT5zaWduYWxEaXJ0eSgpOworCisgICAgLy8gQ2xl
YXIgdGhlIHNvdXJjZSBpbWFnZSBidWZmZXJzCisgICAgbUJ1ZmZlciAgICAgICAgICAgPSBudWxs
cHRyOworICAgIG1BdHRhY2htZW50QnVmZmVyID0gbnVsbHB0cjsKKworICAgIHJldHVybiBtUmVu
ZGVyZXItPmNyZWF0ZVJlbmRlclRhcmdldENvcHkoY3VyUmVuZGVyVGFyZ2V0LCAmbVJlbmRlclRh
cmdldCk7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9FR0xJbWFnZUQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBFR0xJbWFnZUQzRC5oOiBEZWZpbmVzIHRoZSByeDo6RUdMSW1hZ2VEM0QgY2xh
c3MsIHRoZSBEM0QgaW1wbGVtZW50YXRpb24gb2YgRUdMIGltYWdlcworCisjaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9FR0xJTUFHRUQzRF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9EM0RfRUdMSU1BR0VEM0RfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0
YWNobWVudC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oIgorCitu
YW1lc3BhY2UgZWdsCit7CitjbGFzcyBBdHRyaWJ1dGVNYXA7Cit9CisKK25hbWVzcGFjZSByeAor
eworY2xhc3MgVGV4dHVyZUQzRDsKK2NsYXNzIFJlbmRlcmJ1ZmZlckQzRDsKK2NsYXNzIFJlbmRl
cmVyRDNEOworY2xhc3MgUmVuZGVyVGFyZ2V0RDNEOworCitjbGFzcyBFR0xJbWFnZUQzRCBmaW5h
bCA6IHB1YmxpYyBJbWFnZUltcGwKK3sKKyAgcHVibGljOgorICAgIEVHTEltYWdlRDNEKFJlbmRl
cmVyRDNEICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICBFR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICBlZ2w6OkltYWdlU2libGluZyAqYnVmZmVyLAorICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKKyAgICB+RUdMSW1hZ2VEM0QoKSBvdmVy
cmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIG9ycGhhbihlZ2w6OkltYWdlU2libGluZyAqc2libGluZykgb3ZlcnJpZGU7CisKKyAg
ICBnbDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSBjb25z
dDsKKworICBwcml2YXRlOgorICAgIGdsOjpFcnJvciBjb3B5VG9Mb2NhbFJlbmRlcnRhcmdldCgp
OworCisgICAgUmVuZGVyZXJEM0QgKm1SZW5kZXJlcjsKKworICAgIGVnbDo6SW1hZ2VTaWJsaW5n
ICptQnVmZmVyOworCisgICAgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0IG1BdHRh
Y2htZW50VGFyZ2V0OworICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwgKm1BdHRh
Y2htZW50QnVmZmVyOworCisgICAgUmVuZGVyVGFyZ2V0RDNEICptUmVuZGVyVGFyZ2V0OworfTsK
K30KKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRUdMSU1BR0VEM0RfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJh
bWVidWZmZXJEM0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwCShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0ZyYW1lYnVmZmVyRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAKIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oIgogCisjaW5jbHVk
ZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRp
bHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgpAQCAtNTMsNyArNTQsNyBAQAogICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBzdGF0ZS5nZXREcmF3RnJhbWVi
dWZmZXIoKTsKICAgICBpZiAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpCiAgICAgewotICAg
ICAgICBpZiAoZnJhbWVidWZmZXJPYmplY3QtPmhhc0VuYWJsZWRDb2xvckF0dGFjaG1lbnQoKSkK
KyAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5oYXNFbmFibGVkRHJhd0J1ZmZlcigpKQog
ICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEFycmF5
U2l6ZShjbGVhclBhcmFtcy5jbGVhckNvbG9yKTsgaSsrKQogICAgICAgICAgICAgewpAQCAtODUs
NjcgKzg2LDI4IEBACiB9CiAKIEZyYW1lYnVmZmVyRDNEOjpGcmFtZWJ1ZmZlckQzRChjb25zdCBn
bDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKLSAgICA6
IEZyYW1lYnVmZmVySW1wbChkYXRhKSwKLSAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAg
ICBtQ29sb3JBdHRhY2htZW50c0ZvclJlbmRlcihtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCku
c2l6ZSgpLCBudWxscHRyKSwKLSAgICAgIG1JbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2FjaGUo
dHJ1ZSkKKyAgICA6IEZyYW1lYnVmZmVySW1wbChkYXRhKSwgbVJlbmRlcmVyKHJlbmRlcmVyKQog
ewotICAgIEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CiB9CiAKIEZyYW1lYnVmZmVyRDNE
Ojp+RnJhbWVidWZmZXJEM0QoKQogewogfQogCi12b2lkIEZyYW1lYnVmZmVyRDNEOjpvblVwZGF0
ZUNvbG9yQXR0YWNobWVudChzaXplX3QgLyppbmRleCovKQotewotICAgIG1JbnZhbGlkYXRlQ29s
b3JBdHRhY2htZW50Q2FjaGUgPSB0cnVlOwotfQotCi12b2lkIEZyYW1lYnVmZmVyRDNEOjpvblVw
ZGF0ZURlcHRoQXR0YWNobWVudCgpCi17Ci19Ci0KLXZvaWQgRnJhbWVidWZmZXJEM0Q6Om9uVXBk
YXRlU3RlbmNpbEF0dGFjaG1lbnQoKQotewotfQotCi12b2lkIEZyYW1lYnVmZmVyRDNEOjpvblVw
ZGF0ZURlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKQotewotfQotCi12b2lkIEZyYW1lYnVmZmVyRDNE
OjpzZXREcmF3QnVmZmVycyhzaXplX3QsIGNvbnN0IEdMZW51bSAqKQotewotICAgIG1JbnZhbGlk
YXRlQ29sb3JBdHRhY2htZW50Q2FjaGUgPSB0cnVlOwotfQotCi12b2lkIEZyYW1lYnVmZmVyRDNE
OjpzZXRSZWFkQnVmZmVyKEdMZW51bSkKLXsKLX0KLQotZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNE
OjppbnZhbGlkYXRlKHNpemVfdCwgY29uc3QgR0xlbnVtICopCi17Ci0gICAgLy8gTm8tb3AgaW4g
RDNECi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci19Ci0KLWdsOjpFcnJvciBG
cmFtZWJ1ZmZlckQzRDo6aW52YWxpZGF0ZVN1YihzaXplX3QsIGNvbnN0IEdMZW51bSAqLCBjb25z
dCBnbDo6UmVjdGFuZ2xlICYpCi17Ci0gICAgLy8gTm8tb3AgaW4gRDNECi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7Ci19Ci0KIGdsOjpFcnJvciBGcmFtZWJ1ZmZlckQzRDo6Y2xl
YXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMYml0ZmllbGQgbWFzaykKIHsKICAgICBjb25zdCBn
bDo6U3RhdGUgJnN0YXRlID0gKmRhdGEuc3RhdGU7CiAgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFy
UGFyYW1zID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKHN0YXRlLCBtYXNrKTsKLSAgICByZXR1cm4gY2xl
YXIoc3RhdGUsIGNsZWFyUGFyYW1zKTsKKyAgICByZXR1cm4gY2xlYXIoZGF0YSwgY2xlYXJQYXJh
bXMpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyZnYoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3Qg
R0xmbG9hdCAqdmFsdWVzKQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcmZ2
KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpCiB7CiAgICAgLy8gZ2xDbGVhckJ1ZmZlcmZ2
IGNhbiBiZSBjYWxsZWQgdG8gY2xlYXIgdGhlIGNvbG9yIGJ1ZmZlciBvciBkZXB0aCBidWZmZXIK
LSAgICBDbGVhclBhcmFtZXRlcnMgY2xlYXJQYXJhbXMgPSBHZXRDbGVhclBhcmFtZXRlcnMoc3Rh
dGUsIDApOworICAgIENsZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFyUGFyYW1l
dGVycygqZGF0YS5zdGF0ZSwgMCk7CiAKICAgICBpZiAoYnVmZmVyID09IEdMX0NPTE9SKQogICAg
IHsKQEAgLTE2MywxMyArMTI1LDE2IEBACiAgICAgICAgIGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJW
YWx1ZSA9IHZhbHVlc1swXTsKICAgICB9CiAKLSAgICByZXR1cm4gY2xlYXIoc3RhdGUsIGNsZWFy
UGFyYW1zKTsKKyAgICByZXR1cm4gY2xlYXIoZGF0YSwgY2xlYXJQYXJhbXMpOwogfQogCi1nbDo6
RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVydWl2KGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsIEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMdWludCAqdmFsdWVz
KQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcnVpdihjb25zdCBnbDo6RGF0
YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICp2YWx1ZXMpCiB7CiAgICAgLy8gZ2xDbGVhckJ1ZmZlcnVpdiBjYW4gb25seSBi
ZSBjYWxsZWQgdG8gY2xlYXIgYSBjb2xvciBidWZmZXIKLSAgICBDbGVhclBhcmFtZXRlcnMgY2xl
YXJQYXJhbXMgPSBHZXRDbGVhclBhcmFtZXRlcnMoc3RhdGUsIDApOworICAgIENsZWFyUGFyYW1l
dGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFyUGFyYW1ldGVycygqZGF0YS5zdGF0ZSwgMCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBcnJheVNpemUoY2xlYXJQYXJhbXMuY2xl
YXJDb2xvcik7IGkrKykKICAgICB7CiAgICAgICAgIGNsZWFyUGFyYW1zLmNsZWFyQ29sb3JbaV0g
PSAoZHJhd2J1ZmZlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGkpKTsKQEAgLTE3NywxMyArMTQyLDE2
IEBACiAgICAgY2xlYXJQYXJhbXMuY29sb3JVSUNsZWFyVmFsdWUgPSBnbDo6Q29sb3JVSSh2YWx1
ZXNbMF0sIHZhbHVlc1sxXSwgdmFsdWVzWzJdLCB2YWx1ZXNbM10pOwogICAgIGNsZWFyUGFyYW1z
LmNvbG9yQ2xlYXJUeXBlID0gR0xfVU5TSUdORURfSU5UOwogCi0gICAgcmV0dXJuIGNsZWFyKHN0
YXRlLCBjbGVhclBhcmFtcyk7CisgICAgcmV0dXJuIGNsZWFyKGRhdGEsIGNsZWFyUGFyYW1zKTsK
IH0KIAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcml2KGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsIEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50
ICp2YWx1ZXMpCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyaXYoY29uc3Qg
Z2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7CiAgICAgLy8gZ2xDbGVhckJ1ZmZlcml2IGNhbiBiZSBj
YWxsZWQgdG8gY2xlYXIgdGhlIGNvbG9yIGJ1ZmZlciBvciBzdGVuY2lsIGJ1ZmZlcgotICAgIENs
ZWFyUGFyYW1ldGVycyBjbGVhclBhcmFtcyA9IEdldENsZWFyUGFyYW1ldGVycyhzdGF0ZSwgMCk7
CisgICAgQ2xlYXJQYXJhbWV0ZXJzIGNsZWFyUGFyYW1zID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKCpk
YXRhLnN0YXRlLCAwKTsKIAogICAgIGlmIChidWZmZXIgPT0gR0xfQ09MT1IpCiAgICAgewpAQCAt
MjAxLDE5ICsxNjksMjMgQEAKICAgICAgICAgY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUg
PSB2YWx1ZXNbMV07CiAgICAgfQogCi0gICAgcmV0dXJuIGNsZWFyKHN0YXRlLCBjbGVhclBhcmFt
cyk7CisgICAgcmV0dXJuIGNsZWFyKGRhdGEsIGNsZWFyUGFyYW1zKTsKIH0KIAotZ2w6OkVycm9y
IEZyYW1lYnVmZmVyRDNEOjpjbGVhckJ1ZmZlcmZpKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdM
ZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIEdMZmxvYXQgZGVwdGgsIEdMaW50IHN0ZW5j
aWwpCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6OmNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c3RlbmNpbCkKIHsKICAgICAvLyBnbENsZWFyQnVmZmVyZmkgY2FuIG9ubHkgYmUgY2FsbGVkIHRv
IGNsZWFyIGEgZGVwdGggc3RlbmNpbCBidWZmZXIKLSAgICBDbGVhclBhcmFtZXRlcnMgY2xlYXJQ
YXJhbXMgPSBHZXRDbGVhclBhcmFtZXRlcnMoc3RhdGUsIDApOworICAgIENsZWFyUGFyYW1ldGVy
cyBjbGVhclBhcmFtcyAgID0gR2V0Q2xlYXJQYXJhbWV0ZXJzKCpkYXRhLnN0YXRlLCAwKTsKICAg
ICBjbGVhclBhcmFtcy5jbGVhckRlcHRoID0gdHJ1ZTsKICAgICBjbGVhclBhcmFtcy5kZXB0aENs
ZWFyVmFsdWUgPSBkZXB0aDsKICAgICBjbGVhclBhcmFtcy5jbGVhclN0ZW5jaWwgPSB0cnVlOwog
ICAgIGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlID0gc3RlbmNpbDsKIAotICAgIHJldHVy
biBjbGVhcihzdGF0ZSwgY2xlYXJQYXJhbXMpOworICAgIHJldHVybiBjbGVhcihkYXRhLCBjbGVh
clBhcmFtcyk7CiB9CiAKIEdMZW51bSBGcmFtZWJ1ZmZlckQzRDo6Z2V0SW1wbGVtZW50YXRpb25D
b2xvclJlYWRGb3JtYXQoKSBjb25zdApAQCAtMjY0LDE3ICsyMzYsMTUgQEAKIHsKICAgICBjb25z
dCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2tTdGF0ZSA9IHN0YXRlLmdldFBhY2tTdGF0ZSgpOwog
Ci0gICAgaWYgKHBhY2tTdGF0ZS5yb3dMZW5ndGggIT0gMCB8fCBwYWNrU3RhdGUuc2tpcFJvd3Mg
IT0gMCB8fCBwYWNrU3RhdGUuc2tpcFBpeGVscyAhPSAwKQotICAgIHsKLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiaW52YWxpZCBwaXhlbCBzdG9yZSBwYXJhbWV0ZXJzIGluIHJlYWRQaXhlbHMiKTsKLSAgICB9
Ci0KICAgICBHTGVudW0gc2l6ZWRJbnRlcm5hbEZvcm1hdCA9IGdsOjpHZXRTaXplZEludGVybmFs
Rm9ybWF0KGZvcm1hdCwgdHlwZSk7CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZzaXpl
ZEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHNpemVkSW50ZXJuYWxGb3Jt
YXQpOwotICAgIEdMdWludCBvdXRwdXRQaXRjaCA9IHNpemVkRm9ybWF0SW5mby5jb21wdXRlUm93
UGl0Y2godHlwZSwgYXJlYS53aWR0aCwgcGFja1N0YXRlLmFsaWdubWVudCwgMCk7CisgICAgR0x1
aW50IG91dHB1dFBpdGNoID0KKyAgICAgICAgc2l6ZWRGb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRj
aCh0eXBlLCBhcmVhLndpZHRoLCBwYWNrU3RhdGUuYWxpZ25tZW50LCBwYWNrU3RhdGUucm93TGVu
Z3RoKTsKKyAgICBHTHNpemVpIG91dHB1dFNraXBCeXRlcyA9IHNpemVkRm9ybWF0SW5mby5jb21w
dXRlU2tpcFBpeGVscygKKyAgICAgICAgb3V0cHV0UGl0Y2gsIDAsIDAsIHBhY2tTdGF0ZS5za2lw
Um93cywgcGFja1N0YXRlLnNraXBQaXhlbHMpOwogCi0gICAgcmV0dXJuIHJlYWRQaXhlbHMoYXJl
YSwgZm9ybWF0LCB0eXBlLCBvdXRwdXRQaXRjaCwgcGFja1N0YXRlLCByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihwaXhlbHMpKTsKKyAgICByZXR1cm4gcmVhZFBpeGVsc0ltcGwoYXJlYSwgZm9y
bWF0LCB0eXBlLCBvdXRwdXRQaXRjaCwgcGFja1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4ocGl4ZWxzKSArIG91dHB1dFNraXBCeXRl
cyk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlckQzRDo6YmxpdChjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFu
Z2xlICZkZXN0QXJlYSwKQEAgLTMxOCw4ICsyODgsMTYgQEAKICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKIH0KIAotR0xlbnVtIEZyYW1lYnVmZmVyRDNEOjpjaGVja1N0YXR1cygp
IGNvbnN0Citib29sIEZyYW1lYnVmZmVyRDNEOjpjaGVja1N0YXR1cygpIGNvbnN0CiB7CisgICAg
Ly8gaWYgd2UgaGF2ZSBib3RoIGEgZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVyLCB0aGV5IG11c3Qg
cmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0CisgICAgLy8gc2luY2Ugd2Ugb25seSBzdXBwb3J0IHBh
Y2tlZF9kZXB0aF9zdGVuY2lsIGFuZCBub3Qgc2VwYXJhdGUgZGVwdGggYW5kIHN0ZW5jaWwKKyAg
ICBpZiAobURhdGEuZ2V0RGVwdGhBdHRhY2htZW50KCkgIT0gbnVsbHB0ciAmJiBtRGF0YS5nZXRT
dGVuY2lsQXR0YWNobWVudCgpICE9IG51bGxwdHIgJiYKKyAgICAgICAgbURhdGEuZ2V0RGVwdGhT
dGVuY2lsQXR0YWNobWVudCgpID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgLy8gRDNEMTEgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJsYXBwaW5n
IFJlbmRlclRhcmdldFZpZXdzLCBzbyBlbnN1cmUgdW5pcXVlbmVzcwogICAgIGNvbnN0IGF1dG8g
JmNvbG9yQXR0YWNobWVudHMgPSBtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCk7CiAgICAgZm9y
IChzaXplX3QgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgY29sb3JBdHRh
Y2htZW50cy5zaXplKCk7IGNvbG9yQXR0YWNobWVudCsrKQpAQCAtMzM0LDI3ICszMTIsNTEgQEAK
ICAgICAgICAgICAgICAgICAgICAgKGF0dGFjaG1lbnQuaWQoKSA9PSBwcmV2QXR0YWNobWVudC5p
ZCgpICYmCiAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LnR5cGUoKSA9PSBwcmV2QXR0
YWNobWVudC50eXBlKCkpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFOworICAgIC8vIEQz
RCByZXF1aXJlcyBhbGwgcmVuZGVyIHRhcmdldHMgdG8gaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb25z
LgorICAgIGlmICghbURhdGEuYXR0YWNobWVudHNIYXZlU2FtZURpbWVuc2lvbnMoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Y29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZGcmFtZWJ1ZmZlckQzRDo6Z2V0Q29sb3JBdHRhY2ht
ZW50c0ZvclJlbmRlcihjb25zdCBXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMpIGNvbnN0Cit2b2lk
IEZyYW1lYnVmZmVyRDNEOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJp
dHMgJmRpcnR5Qml0cykKIHsKLSAgICBpZiAoIW1JbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2Fj
aGUpCisgICAgYm9vbCBpbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2FjaGUgPSBmYWxzZTsKKwor
ICAgIGlmICghbUNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIudmFsaWQoKSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtQ29sb3JBdHRhY2htZW50c0ZvclJlbmRlcjsKKyAgICAgICAgaW52YWxpZGF0
ZUNvbG9yQXR0YWNobWVudENhY2hlID0gdHJ1ZTsKICAgICB9CiAKKyAgICBmb3IgKGF1dG8gZGly
dHlCaXQgOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChkaXJ0eUJpdHMpKQorICAgIHsKKyAgICAgICAg
aWYgKChkaXJ0eUJpdCA+PSBnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xPUl9BVFRBQ0hN
RU5UXzAgJiYKKyAgICAgICAgICAgICBkaXJ0eUJpdCA8IGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlf
QklUX0NPTE9SX0FUVEFDSE1FTlRfTUFYKSB8fAorICAgICAgICAgICAgZGlydHlCaXQgPT0gZ2w6
OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfRFJBV19CVUZGRVJTKQorICAgICAgICB7CisgICAgICAg
ICAgICBpbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2FjaGUgPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKCFpbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2FjaGUpCisgICAgewor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRG9lcyBub3QgYWN0dWFsbHkgZnJlZSBt
ZW1vcnkKLSAgICBtQ29sb3JBdHRhY2htZW50c0ZvclJlbmRlci5jbGVhcigpOworICAgIGdsOjpB
dHRhY2htZW50TGlzdCBjb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyOwogCiAgICAgY29uc3QgYXV0
byAmY29sb3JBdHRhY2htZW50cyA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKTsKICAgICBj
b25zdCBhdXRvICZkcmF3QnVmZmVyU3RhdGVzID0gbURhdGEuZ2V0RHJhd0J1ZmZlclN0YXRlcygp
OworICAgIGNvbnN0IGF1dG8gJndvcmthcm91bmRzICAgICAgPSBtUmVuZGVyZXItPmdldFdvcmth
cm91bmRzKCk7CiAKICAgICBmb3IgKHNpemVfdCBhdHRhY2htZW50SW5kZXggPSAwOyBhdHRhY2ht
ZW50SW5kZXggPCBjb2xvckF0dGFjaG1lbnRzLnNpemUoKTsgKythdHRhY2htZW50SW5kZXgpCiAg
ICAgewpAQCAtMzY0LDU3ICszNjYsMjEgQEAKICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC5p
c0F0dGFjaGVkKCkgJiYgZHJhd0J1ZmZlclN0YXRlICE9IEdMX05PTkUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChkcmF3QnVmZmVyU3RhdGUgPT0gR0xfQkFDSyB8fCBkcmF3QnVmZmVy
U3RhdGUgPT0gKEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGF0dGFjaG1lbnRJbmRleCkpOwot
ICAgICAgICAgICAgbUNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIucHVzaF9iYWNrKCZjb2xvckF0
dGFjaG1lbnQpOworICAgICAgICAgICAgY29sb3JBdHRhY2htZW50c0ZvclJlbmRlci5wdXNoX2Jh
Y2soJmNvbG9yQXR0YWNobWVudCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIXdvcmth
cm91bmRzLm1ydFBlcmZXb3JrYXJvdW5kKQogICAgICAgICB7Ci0gICAgICAgICAgICBtQ29sb3JB
dHRhY2htZW50c0ZvclJlbmRlci5wdXNoX2JhY2sobnVsbHB0cik7CisgICAgICAgICAgICBjb2xv
ckF0dGFjaG1lbnRzRm9yUmVuZGVyLnB1c2hfYmFjayhudWxscHRyKTsKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1JbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2FjaGUgPSBmYWxzZTsKLSAgICBy
ZXR1cm4gbUNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXI7CisgICAgbUNvbG9yQXR0YWNobWVudHNG
b3JSZW5kZXIgPSBzdGQ6Om1vdmUoY29sb3JBdHRhY2htZW50c0ZvclJlbmRlcik7CiB9CiAKLS8v
IE5vdGU6IFJlbmRlclRhcmdldCBzZXJpYWxzIHNob3VsZCBpZGVhbGx5IGJlIGluIHRoZSBSZW5k
ZXJUYXJnZXRzIHRoZW1zZWx2ZXMuCi11bnNpZ25lZCBpbnQgR2V0QXR0YWNobWVudFNlcmlhbChj
b25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50KQorY29uc3QgZ2w6OkF0
dGFjaG1lbnRMaXN0ICZGcmFtZWJ1ZmZlckQzRDo6Z2V0Q29sb3JBdHRhY2htZW50c0ZvclJlbmRl
cigpIGNvbnN0CiB7Ci0gICAgaWYgKGF0dGFjaG1lbnQtPnR5cGUoKSA9PSBHTF9URVhUVVJFKQot
ICAgIHsKLSAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBhdHRhY2htZW50LT5nZXRUZXh0
dXJlKCk7Ci0gICAgICAgIEFTU0VSVCh0ZXh0dXJlKTsKLSAgICAgICAgVGV4dHVyZUQzRCAqdGV4
dHVyZUQzRCA9IEdldEltcGxBczxUZXh0dXJlRDNEPih0ZXh0dXJlKTsKLSAgICAgICAgY29uc3Qg
Z2w6OkltYWdlSW5kZXggJmluZGV4ID0gYXR0YWNobWVudC0+Z2V0VGV4dHVyZUltYWdlSW5kZXgo
KTsKLSAgICAgICAgcmV0dXJuIHRleHR1cmVEM0QtPmdldFJlbmRlclRhcmdldFNlcmlhbChpbmRl
eCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGF0dGFjaG1lbnQtPnR5cGUoKSA9PSBHTF9SRU5ERVJC
VUZGRVIpCi0gICAgewotICAgICAgICBnbDo6UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBh
dHRhY2htZW50LT5nZXRSZW5kZXJidWZmZXIoKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlcmJ1ZmZl
cik7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlckQzRCAqcmVuZGVyYnVmZmVyRDNEID0gR2V0SW1wbEFz
PFJlbmRlcmJ1ZmZlckQzRD4ocmVuZGVyYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmJ1
ZmZlckQzRC0+Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGF0
dGFjaG1lbnQtPnR5cGUoKSA9PSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUKQotICAgIHsKLSAgICAg
ICAgY29uc3QgZWdsOjpTdXJmYWNlICpzdXJmYWNlID0gYXR0YWNobWVudC0+Z2V0U3VyZmFjZSgp
OwotICAgICAgICBBU1NFUlQoc3VyZmFjZSk7Ci0gICAgICAgIGNvbnN0IFN1cmZhY2VEM0QgKnN1
cmZhY2VEM0QgPSBHZXRJbXBsQXM8U3VyZmFjZUQzRD4oc3VyZmFjZSk7Ci0gICAgICAgIEFTU0VS
VChzdXJmYWNlRDNEKTsKLQotICAgICAgICBpZiAoYXR0YWNobWVudC0+Z2V0QmluZGluZygpID09
IEdMX0JBQ0spCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdXJmYWNlRDNELT5nZXRT
d2FwQ2hhaW4oKS0+Z2V0Q29sb3JSZW5kZXJUYXJnZXQoKS0+Z2V0U2VyaWFsKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3VyZmFjZUQz
RC0+Z2V0U3dhcENoYWluKCktPmdldERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgpLT5nZXRTZXJp
YWwoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgQVNTRVJUKG1Db2xvckF0dGFj
aG1lbnRzRm9yUmVuZGVyLnZhbGlkKCkpOworICAgIHJldHVybiBtQ29sb3JBdHRhY2htZW50c0Zv
clJlbmRlci52YWx1ZSgpOwogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJE
M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJE
M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgPHZlY3Rvcj4K
ICNpbmNsdWRlIDxjc3RkaW50PgogCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L0ZyYW1lYnVmZmVySW1wbC5oIgogCkBAIC0yNiw4ICsyNyw5IEBACiAKIG5hbWVzcGFjZSByeAog
eworY2xhc3MgUmVuZGVyZXJEM0Q7CiBjbGFzcyBSZW5kZXJUYXJnZXREM0Q7Ci1jbGFzcyBSZW5k
ZXJlckQzRDsKK3N0cnVjdCBXb3JrYXJvdW5kc0QzRDsKIAogc3RydWN0IENsZWFyUGFyYW1ldGVy
cwogewpAQCAtNTgsMjIgKzYwLDI0IEBACiAgICAgRnJhbWVidWZmZXJEM0QoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyOjpEYXRhICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpOwogICAgIHZpcnR1
YWwgfkZyYW1lYnVmZmVyRDNEKCk7CiAKLSAgICB2b2lkIG9uVXBkYXRlQ29sb3JBdHRhY2htZW50
KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBvblVwZGF0ZURlcHRoQXR0YWNobWVu
dCgpIG92ZXJyaWRlOwotICAgIHZvaWQgb25VcGRhdGVTdGVuY2lsQXR0YWNobWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgb25VcGRhdGVEZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgb3ZlcnJpZGU7
Ci0KLSAgICB2b2lkIHNldERyYXdCdWZmZXJzKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICpi
dWZmZXJzKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFJlYWRCdWZmZXIoR0xlbnVtIGJ1ZmZlcikg
b3ZlcnJpZGU7Ci0KLSAgICBnbDo6RXJyb3IgaW52YWxpZGF0ZShzaXplX3QgY291bnQsIGNvbnN0
IEdMZW51bSAqYXR0YWNobWVudHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBpbnZhbGlkYXRl
U3ViKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmYXJlYSkgb3ZlcnJpZGU7Ci0KICAgICBnbDo6RXJyb3IgY2xlYXIoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsIEdMYml0ZmllbGQgbWFzaykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNs
ZWFyQnVmZmVyZnYoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQg
ZHJhd2J1ZmZlciwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJy
b3IgY2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwg
R0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2YWx1ZXMpIG92ZXJyaWRlOwotICAgIGds
OjpFcnJvciBjbGVhckJ1ZmZlcml2KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMZW51bSBidWZm
ZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50ICp2YWx1ZXMpIG92ZXJyaWRlOwotICAg
IGdsOjpFcnJvciBjbGVhckJ1ZmZlcmZpKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMZW51bSBi
dWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIEdMZmxvYXQgZGVwdGgsIEdMaW50IHN0ZW5jaWwpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcmZ2KGNvbnN0IGdsOjpEYXRhICZkYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBj
bGVhckJ1ZmZlcnVpdihjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp2YWx1ZXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZlcml2KGNvbnN0IGds
OjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWVzKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgY2xlYXJCdWZmZXJmaShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGVuY2lsKSBvdmVy
cmlkZTsKIAogICAgIEdMZW51bSBnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEdMZW51bSBnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUo
KSBjb25zdCBvdmVycmlkZTsKQEAgLTgyLDMyICs4NiwzMiBAQAogICAgIGdsOjpFcnJvciBibGl0
KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
IGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAogICAgICAgICAgICAgICAgICAgIEdMYml0
ZmllbGQgbWFzaywgR0xlbnVtIGZpbHRlciwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VG
cmFtZWJ1ZmZlcikgb3ZlcnJpZGU7CiAKLSAgICBHTGVudW0gY2hlY2tTdGF0dXMoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGNoZWNrU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBj
b25zdCBnbDo6QXR0YWNobWVudExpc3QgJmdldENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIoY29u
c3QgV29ya2Fyb3VuZHMgJndvcmthcm91bmRzKSBjb25zdDsKKyAgICB2b2lkIHN5bmNTdGF0ZShj
b25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKIAot
ICBwcm90ZWN0ZWQ6Ci0gICAgLy8gQ2FjaGUgdmFyaWFibGUKLSAgICBtdXRhYmxlIGdsOjpBdHRh
Y2htZW50TGlzdCBtQ29sb3JBdHRhY2htZW50c0ZvclJlbmRlcjsKLSAgICBtdXRhYmxlIGJvb2wg
bUludmFsaWRhdGVDb2xvckF0dGFjaG1lbnRDYWNoZTsKKyAgICBjb25zdCBnbDo6QXR0YWNobWVu
dExpc3QgJmdldENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIoKSBjb25zdDsKIAogICBwcml2YXRl
OgotICAgIFJlbmRlcmVyRDNEICpjb25zdCBtUmVuZGVyZXI7CisgICAgdmlydHVhbCBnbDo6RXJy
b3IgY2xlYXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xl
YXJQYXJhbXMpID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMpID0gMDsKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciByZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZh
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFBpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0
ZSAmcGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpw
aXhlbHMpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHJlYWRQaXhlbHMoY29u
c3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHNpemVf
dCBvdXRwdXRQaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywgdWludDhfdCAqcGl4ZWxzKSBjb25zdCA9IDA7Ci0KICAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBibGl0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
IGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lz
c29yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBi
b29sIGJsaXREZXB0aCwgYm9vbCBibGl0U3RlbmNpbCwgR0xlbnVtIGZpbHRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZm
ZXIpID0gMDsKIAogICAgIHZpcnR1YWwgR0xlbnVtIGdldFJlbmRlclRhcmdldEltcGxlbWVudGF0
aW9uRm9ybWF0KFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0KSBjb25zdCA9IDA7CisKKyAg
ICBSZW5kZXJlckQzRCAqbVJlbmRlcmVyOworICAgIE9wdGlvbmFsPGdsOjpBdHRhY2htZW50TGlz
dD4gbUNvbG9yQXR0YWNobWVudHNGb3JSZW5kZXI7CiB9OwogCi11bnNpZ25lZCBpbnQgR2V0QXR0
YWNobWVudFNlcmlhbChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50
KTsKLQogfQogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0ZSQU1CVUZGRVJEM0Rf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvSExTTENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hMU0xDb21waWxlci5jcHAJKHJldmlzaW9uIDE5
OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvSExTTENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNSwxNyArNSwxNiBAQAogLy8K
IAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuaCIKKworI2lu
Y2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvZmVhdHVyZXMuaCIKLQotI2luY2x1ZGUgImNvbW1vbi91dGls
aXRpZXMuaCIKLQorI2luY2x1ZGUgImxpYkFOR0xFL2hpc3RvZ3JhbV9tYWNyb3MuaCIKICNpbmNs
dWRlICJ0aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgogCi0vLyBEZWZpbml0
aW9ucyBsb2NhbCB0byB0aGUgdHJhbnNsYXRpb24gdW5pdAorI2lmIEFOR0xFX0FQUEVORF9BU1NF
TUJMWV9UT19TSEFERVJfREVCVUdfSU5GTyA9PSBBTkdMRV9FTkFCTEVECiBuYW1lc3BhY2UKIHsK
LQogI2lmZGVmIENSRUFURV9DT01QSUxFUl9GTEFHX0lORk8KICAgICAjdW5kZWYgQ1JFQVRFX0NP
TVBJTEVSX0ZMQUdfSU5GTwogI2VuZGlmCkBAIC03NiwyMCArNzUsOSBAQAogICAgICAgICByZXR1
cm4gaXNGbGFnU2V0OwogICAgIH0KIH0KK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKyNlbmRp
ZiAgLy8gQU5HTEVfQVBQRU5EX0FTU0VNQkxZX1RPX1NIQURFUl9ERUJVR19JTkZPID09IEFOR0xF
X0VOQUJMRUQKIAotY29uc3QgY2hhciAqR2V0Q29tcGlsZXJGbGFnTmFtZShVSU5UIG1hc2ssIHNp
emVfdCBmbGFnSXgpCi17Ci0gICAgY29uc3QgQ29tcGlsZXJGbGFnSW5mbyAmZmxhZ0luZm8gPSBD
b21waWxlckZsYWdJbmZvc1tmbGFnSXhdOwotICAgIGlmIChJc0NvbXBpbGVyRmxhZ1NldChtYXNr
LCBmbGFnSW5mby5tRmxhZykpCi0gICAgewotICAgICAgICByZXR1cm4gZmxhZ0luZm8ubU5hbWU7
Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLX0KLQogbmFtZXNwYWNlIHJ4CiB7
CiAKQEAgLTEwNiw5ICs5NCwxMCBAQAogfQogCiBITFNMQ29tcGlsZXI6OkhMU0xDb21waWxlcigp
Ci0gICAgOiBtRDNEQ29tcGlsZXJNb2R1bGUoTlVMTCksCi0gICAgICBtRDNEQ29tcGlsZUZ1bmMo
TlVMTCksCi0gICAgICBtRDNERGlzYXNzZW1ibGVGdW5jKE5VTEwpCisgICAgOiBtSW5pdGlhbGl6
ZWQoZmFsc2UpLAorICAgICAgbUQzRENvbXBpbGVyTW9kdWxlKG51bGxwdHIpLAorICAgICAgbUQz
RENvbXBpbGVGdW5jKG51bGxwdHIpLAorICAgICAgbUQzRERpc2Fzc2VtYmxlRnVuYyhudWxscHRy
KQogewogfQogCkBAIC0xMTcsOCArMTA2LDEzIEBACiAgICAgcmVsZWFzZSgpOwogfQogCi1ib29s
IEhMU0xDb21waWxlcjo6aW5pdGlhbGl6ZSgpCitnbDo6RXJyb3IgSExTTENvbXBpbGVyOjppbml0
aWFsaXplKCkKIHsKKyAgICBpZiAobUluaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgfQorCiAgICAgVFJBQ0VfRVZFTlQwKCJncHUu
YW5nbGUiLCAiSExTTENvbXBpbGVyOjppbml0aWFsaXplIik7CiAjaWYgIWRlZmluZWQoQU5HTEVf
RU5BQkxFX1dJTkRPV1NfU1RPUkUpCiAjaWYgZGVmaW5lZChBTkdMRV9QUkVMT0FERURfRDNEQ09N
UElMRVJfTU9EVUxFX05BTUVTKQpAQCAtMTQyLDggKzEzNiw3IEBACiAKICAgICBpZiAoIW1EM0RD
b21waWxlck1vZHVsZSkKICAgICB7Ci0gICAgICAgIEVSUigiTm8gRDNEIGNvbXBpbGVyIG1vZHVs
ZSBmb3VuZCAtIGFib3J0aW5nIVxuIik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIEQzRCBjb21waWxlciBt
b2R1bGUgZm91bmQgLSBhYm9ydGluZyFcbiIpOwogICAgIH0KIAogICAgIG1EM0RDb21waWxlRnVu
YyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cEQzRENvbXBpbGU+KEdldFByb2NBZGRyZXNzKG1EM0RDb21w
aWxlck1vZHVsZSwgIkQzRENvbXBpbGUiKSk7CkBAIC0xNTUsMjkgKzE0OCw0MiBAQAogI2Vsc2UK
ICAgICAvLyBEM0QgU2hhZGVyIGNvbXBpbGVyIGlzIGxpbmtlZCBhbHJlYWR5IGludG8gdGhpcyBt
b2R1bGUsIHNvIHRoZSBleHBvcnQKICAgICAvLyBjYW4gYmUgZGlyZWN0bHkgYXNzaWduZWQuCi0g
ICAgbUQzRENvbXBpbGVyTW9kdWxlID0gTlVMTDsKKyAgICBtRDNEQ29tcGlsZXJNb2R1bGUgPSBu
dWxscHRyOwogICAgIG1EM0RDb21waWxlRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cEQzRENvbXBp
bGU+KEQzRENvbXBpbGUpOwogICAgIG1EM0REaXNhc3NlbWJsZUZ1bmMgPSByZWludGVycHJldF9j
YXN0PHBEM0REaXNhc3NlbWJsZT4oRDNERGlzYXNzZW1ibGUpOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gbUQzRENvbXBpbGVGdW5jICE9IE5VTEw7CisgICAgaWYgKG1EM0RDb21waWxlRnVuYyA9PSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkVycm9yIGZpbmRpbmcgRDNEQ29tcGlsZSBlbnRyeSBwb2ludCIpOworICAgIH0KKwor
ICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CiB9CiAKIHZvaWQgSExTTENvbXBpbGVyOjpyZWxlYXNlKCkKIHsKLSAgICBpZiAobUQzRENv
bXBpbGVyTW9kdWxlKQorICAgIGlmIChtSW5pdGlhbGl6ZWQpCiAgICAgewogICAgICAgICBGcmVl
TGlicmFyeShtRDNEQ29tcGlsZXJNb2R1bGUpOwotICAgICAgICBtRDNEQ29tcGlsZXJNb2R1bGUg
PSBOVUxMOwotICAgICAgICBtRDNEQ29tcGlsZUZ1bmMgPSBOVUxMOwotICAgICAgICBtRDNERGlz
YXNzZW1ibGVGdW5jID0gTlVMTDsKKyAgICAgICAgbUQzRENvbXBpbGVyTW9kdWxlID0gbnVsbHB0
cjsKKyAgICAgICAgbUQzRENvbXBpbGVGdW5jID0gbnVsbHB0cjsKKyAgICAgICAgbUQzRERpc2Fz
c2VtYmxlRnVuYyA9IG51bGxwdHI7CisgICAgICAgIG1Jbml0aWFsaXplZCA9IGZhbHNlOwogICAg
IH0KIH0KIAogZ2w6OkVycm9yIEhMU0xDb21waWxlcjo6Y29tcGlsZVRvQmluYXJ5KGdsOjpJbmZv
TG9nICZpbmZvTG9nLCBjb25zdCBzdGQ6OnN0cmluZyAmaGxzbCwgY29uc3Qgc3RkOjpzdHJpbmcg
JnByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8Q29tcGlsZUNvbmZpZz4gJmNvbmZpZ3MsIGNvbnN0IEQzRF9TSEFERVJfTUFD
Uk8gKm92ZXJyaWRlTWFjcm9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0RCbG9iICoqb3V0Q29tcGlsZWRCbG9iLCBzdGQ6OnN0cmluZyAqb3V0RGVidWdJbmZv
KSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0RCbG9i
ICoqb3V0Q29tcGlsZWRCbG9iLCBzdGQ6OnN0cmluZyAqb3V0RGVidWdJbmZvKQogeworICAgIGds
OjpFcnJvciBlcnJvciA9IGluaXRpYWxpemUoKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKwogI2lmICFkZWZpbmVkKEFOR0xF
X0VOQUJMRV9XSU5ET1dTX1NUT1JFKQogICAgIEFTU0VSVChtRDNEQ29tcGlsZXJNb2R1bGUpOwog
I2VuZGlmCkBAIC0xOTIsMTUgKzE5OCwyMSBAQAogICAgIH0KICNlbmRpZgogCi0gICAgY29uc3Qg
RDNEX1NIQURFUl9NQUNSTyAqbWFjcm9zID0gb3ZlcnJpZGVNYWNyb3MgPyBvdmVycmlkZU1hY3Jv
cyA6IE5VTEw7CisgICAgY29uc3QgRDNEX1NIQURFUl9NQUNSTyAqbWFjcm9zID0gb3ZlcnJpZGVN
YWNyb3MgPyBvdmVycmlkZU1hY3JvcyA6IG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvbmZpZ3Muc2l6ZSgpOyArK2kpCiAgICAgewotICAgICAgICBJRDNEQmxvYiAqZXJy
b3JNZXNzYWdlID0gTlVMTDsKLSAgICAgICAgSUQzREJsb2IgKmJpbmFyeSA9IE5VTEw7CisgICAg
ICAgIElEM0RCbG9iICplcnJvck1lc3NhZ2UgPSBudWxscHRyOworICAgICAgICBJRDNEQmxvYiAq
YmluYXJ5ID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgICAgICAgICA9IFNfT0s7
CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRDNEQ29tcGlsZUZ1bmMoaGxzbC5jX3N0cigp
LCBobHNsLmxlbmd0aCgpLCBnbDo6Z19mYWtlcGF0aCwgbWFjcm9zLCBOVUxMLCAibWFpbiIsIHBy
b2ZpbGUuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uZmlnc1tpXS5mbGFncywgMCwgJmJpbmFyeSwgJmVycm9yTWVzc2FnZSk7CisgICAgICAgIHsK
KyAgICAgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIkQzRENvbXBpbGUiKTsKKyAg
ICAgICAgICAgIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVIoIkdQVS5BTkdMRS5EM0RDb21w
aWxlTVMiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EM0RDb21waWxlRnVuYyhobHNsLmNfc3Ry
KCksIGhsc2wubGVuZ3RoKCksIGdsOjpnX2Zha2VwYXRoLCBtYWNyb3MsIG51bGxwdHIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW4iLCBwcm9maWxlLmNfc3RyKCks
IGNvbmZpZ3NbaV0uZmxhZ3MsIDAsICZiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmVycm9yTWVzc2FnZSk7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoZXJy
b3JNZXNzYWdlKQogICAgICAgICB7CkBAIC0yMTEsMTMgKzIyMywxNCBAQAogICAgICAgICAgICAg
VFJBQ0UoIlxuJXMiLCBobHNsLmNfc3RyKCkpOwogICAgICAgICAgICAgVFJBQ0UoIlxuJXMiLCBt
ZXNzYWdlLmNfc3RyKCkpOwogCi0gICAgICAgICAgICBpZiAobWVzc2FnZS5maW5kKCJlcnJvciBY
MzUzMToiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyB8fCAvLyAiY2FuJ3QgdW5yb2xsIGxvb3BzIG1h
cmtlZCB3aXRoIGxvb3AgYXR0cmlidXRlIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UuZmluZCgi
ZXJyb3IgWDQwMTQ6IikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpICAgLy8gImNhbm5vdCBoYXZlIGdy
YWRpZW50IG9wZXJhdGlvbnMgaW5zaWRlIGxvb3BzIHdpdGggZGl2ZXJnZW50IGZsb3cgY29udHJv
bCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCBpdCBpcyBjb3VudGVyLWludHVpdGl2ZSB0
byBkaXNhYmxlIHVucm9sbGluZyBmb3IgdGhpcyBlcnJvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvbWUg
dmVyeSBsb25nIHNoYWRlcnMgaGF2ZSB0cm91YmxlIGRlY2lkaW5nIHdoaWNoIGxvb3BzIHRvIHVu
cm9sbCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHR1cm5pbmcgb2ZmIGZvcmNlZCB1bnJvbGxzIGFsbG93
cyB0aGVtIHRvIGNvbXBpbGUgcHJvcGVybHkuCisgICAgICAgICAgICBpZiAoKG1lc3NhZ2UuZmlu
ZCgiZXJyb3IgWDM1MzE6IikgIT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwgIC8vICJjYW4ndCB1bnJv
bGwgbG9vcHMgbWFya2VkIHdpdGggbG9vcCBhdHRyaWJ1dGUiCisgICAgICAgICAgICAgICAgIG1l
c3NhZ2UuZmluZCgiZXJyb3IgWDQwMTQ6IikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpICYmIC8vICJj
YW5ub3QgaGF2ZSBncmFkaWVudCBvcGVyYXRpb25zIGluc2lkZSBsb29wcyB3aXRoIGRpdmVyZ2Vu
dCBmbG93IGNvbnRyb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCBpdCBpcyBjb3Vu
dGVyLWludHVpdGl2ZSB0byBkaXNhYmxlIHVucm9sbGluZyBmb3IgdGhpcyBlcnJvciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gc29tZSB2ZXJ5IGxvbmcgc2hhZGVycyBoYXZlIHRyb3VibGUgZGVjaWRpbmcg
d2hpY2ggbG9vcHMgdG8gdW5yb2xsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0dXJuaW5nIG9mZiBm
b3JjZWQgdW5yb2xscyBhbGxvd3MgdGhlbSB0byBjb21waWxlIHByb3Blcmx5LgorICAgICAgICAg
ICAgICAgIG1hY3JvcyAhPSBudWxscHRyKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IG1hY3JvcyA9IE5VTEw7ICAgLy8gRGlzYWJsZSBbbG9vcF0gYW5kIFtmbGF0dGVuXQorICAgICAg
ICAgICAgICAgIG1hY3JvcyA9IG51bGxwdHI7ICAgLy8gRGlzYWJsZSBbbG9vcF0gYW5kIFtmbGF0
dGVuXQogCiAgICAgICAgICAgICAgICAgLy8gUmV0cnkgd2l0aG91dCBjaGFuZ2luZyBjb21waWxl
ciBmbGFncwogICAgICAgICAgICAgICAgIGktLTsKQEAgLTIyOSwxNiArMjQyLDE2IEBACiAgICAg
ICAgIHsKICAgICAgICAgICAgICpvdXRDb21waWxlZEJsb2IgPSBiaW5hcnk7CiAKLSNpZiBBTkdM
RV9TSEFERVJfREVCVUdfSU5GTyA9PSBBTkdMRV9FTkFCTEVECiAgICAgICAgICAgICAoKm91dERl
YnVnSW5mbykgKz0gIi8vIENPTVBJTEVSIElOUFVUIEhMU0wgQkVHSU5cblxuIiArIGhsc2wgKyAi
XG4vLyBDT01QSUxFUiBJTlBVVCBITFNMIEVORFxuIjsKKworI2lmIEFOR0xFX0FQUEVORF9BU1NF
TUJMWV9UT19TSEFERVJfREVCVUdfSU5GTyA9PSBBTkdMRV9FTkFCTEVECiAgICAgICAgICAgICAo
Km91dERlYnVnSW5mbykgKz0gIlxuXG4vLyBBU1NFTUJMWSBCRUdJTlxuXG4iOwogICAgICAgICAg
ICAgKCpvdXREZWJ1Z0luZm8pICs9ICIvLyBDb21waWxlciBjb25maWd1cmF0aW9uOiAiICsgY29u
Zmlnc1tpXS5uYW1lICsgIlxuLy8gRmxhZ3M6XG4iOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
Zkl4ID0gMDsgZkl4IDwgQXJyYXlTaXplKENvbXBpbGVyRmxhZ0luZm9zKTsgKytmSXgpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZmxhZ05hbWUgPSBHZXRDb21w
aWxlckZsYWdOYW1lKGNvbmZpZ3NbaV0uZmxhZ3MsIGZJeCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGZsYWdOYW1lICE9IG51bGxwdHIpCisgICAgICAgICAgICAgICAgaWYgKElzQ29tcGlsZXJGbGFn
U2V0KGNvbmZpZ3NbaV0uZmxhZ3MsIENvbXBpbGVyRmxhZ0luZm9zW2ZJeF0ubUZsYWcpKQogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKCpvdXREZWJ1Z0luZm8pICs9IHN0
ZDo6c3RyaW5nKCIvLyAiKSArIGZsYWdOYW1lICsgIlxuIjsKKyAgICAgICAgICAgICAgICAgICAg
KCpvdXREZWJ1Z0luZm8pICs9IHN0ZDo6c3RyaW5nKCIvLyAiKSArIENvbXBpbGVyRmxhZ0luZm9z
W2ZJeF0ubU5hbWUgKyAiXG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApA
QCAtMjU1LDUyICsyNjgsNjUgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICgqb3V0RGVidWdJbmZvKSArPSAiXG4iICsgZGlzYXNzZW1ibGVCaW5hcnko
YmluYXJ5KSArICJcbi8vIEFTU0VNQkxZIEVORFxuIjsKLSNlbmRpZgotCisgICAgICAgICAgICBz
dGQ6OnN0cmluZyBkaXNhc3NlbWJseTsKKyAgICAgICAgICAgIGVycm9yID0gZGlzYXNzZW1ibGVC
aW5hcnkoYmluYXJ5LCAmZGlzYXNzZW1ibHkpOworICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAoKm91dERlYnVnSW5mbykgKz0gIlxuIiArIGRpc2Fzc2Vt
Ymx5ICsgIlxuLy8gQVNTRU1CTFkgRU5EXG4iOworI2VuZGlmICAvLyBBTkdMRV9BUFBFTkRfQVNT
RU1CTFlfVE9fU0hBREVSX0RFQlVHX0lORk8gPT0gQU5HTEVfRU5BQkxFRAogICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQor
CisgICAgICAgIGlmIChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICpvdXRDb21waWxlZEJsb2IgPSBOVUxMOwotICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkhMU0wgY29tcGlsZXIgaGFkIGFuIHVuZXhw
ZWN0ZWQgZmFpbHVyZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICAqb3V0Q29tcGlsZWRCbG9iID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkhMU0wgY29tcGlsZXIgaGFkIGFuIHVuZXhw
ZWN0ZWQgZmFpbHVyZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIldhcm5pbmc6IEQzRCBzaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkIHdpdGggJXMgZmxhZ3MuIiwgY29uZmlnc1tpXS5uYW1lLmNfc3RyKCkpOworICAgICAg
ICBpbmZvTG9nIDw8ICJXYXJuaW5nOiBEM0Qgc2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRo
ICIgPDwgY29uZmlnc1tpXS5uYW1lIDw8ICIgZmxhZ3MuICgiCisgICAgICAgICAgICAgICAgPDwg
cHJvZmlsZSA8PCAiKSI7CiAKLSAgICAgICAgICAgIGlmIChpICsgMSA8IGNvbmZpZ3Muc2l6ZSgp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCIgUmV0cnlp
bmcgd2l0aCAlcy5cbiIsIGNvbmZpZ3NbaSArIDFdLm5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgIGlmIChpICsgMSA8IGNvbmZpZ3Muc2l6ZSgpKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbmZvTG9nIDw8ICIgUmV0cnlpbmcgd2l0aCAiIDw8IGNvbmZpZ3NbaSArIDFdLm5h
bWU7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBOb25lIG9mIHRoZSBjb25maWd1cmF0aW9u
cyBzdWNjZWVkZWQgaW4gY29tcGlsaW5nIHRoaXMgc2hhZGVyIGJ1dCB0aGUgY29tcGlsZXIgaXMg
c3RpbGwgaW50YWN0Ci0gICAgKm91dENvbXBpbGVkQmxvYiA9IE5VTEw7CisgICAgKm91dENvbXBp
bGVkQmxvYiA9IG51bGxwdHI7CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKLXN0ZDo6c3RyaW5nIEhMU0xDb21waWxlcjo6ZGlzYXNzZW1ibGVCaW5hcnkoSUQzREJsb2Ig
KnNoYWRlckJpbmFyeSkgY29uc3QKK2dsOjpFcnJvciBITFNMQ29tcGlsZXI6OmRpc2Fzc2VtYmxl
QmluYXJ5KElEM0RCbG9iICpzaGFkZXJCaW5hcnksIHN0ZDo6c3RyaW5nICpkaXNhc3NlbWJseU91
dCkKIHsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplKCk7CisgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKICAgICAv
LyBSZXRyaWV2ZSBkaXNhc3NlbWJseQogICAgIFVJTlQgZmxhZ3MgPSBEM0RfRElTQVNNX0VOQUJM
RV9ERUZBVUxUX1ZBTFVFX1BSSU5UUyB8IEQzRF9ESVNBU01fRU5BQkxFX0lOU1RSVUNUSU9OX05V
TUJFUklORzsKLSAgICBJRDNEQmxvYiAqZGlzYXNzZW1ibHkgPSBOVUxMOworICAgIElEM0RCbG9i
ICpkaXNhc3NlbWJseSA9IG51bGxwdHI7CiAgICAgcEQzRERpc2Fzc2VtYmxlIGRpc2Fzc2VtYmxl
RnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cEQzRERpc2Fzc2VtYmxlPihtRDNERGlzYXNzZW1ibGVG
dW5jKTsKICAgICBMUENWT0lEIGJ1ZmZlciA9IHNoYWRlckJpbmFyeS0+R2V0QnVmZmVyUG9pbnRl
cigpOwogICAgIFNJWkVfVCBidWZTaXplID0gc2hhZGVyQmluYXJ5LT5HZXRCdWZmZXJTaXplKCk7
CiAgICAgSFJFU1VMVCByZXN1bHQgPSBkaXNhc3NlbWJsZUZ1bmMoYnVmZmVyLCBidWZTaXplLCBm
bGFncywgIiIsICZkaXNhc3NlbWJseSk7CiAKLSAgICBzdGQ6OnN0cmluZyBhc21TcmM7CiAgICAg
aWYgKFNVQ0NFRURFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgYXNtU3JjID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZGlzYXNzZW1ibHktPkdldEJ1ZmZlclBvaW50ZXIoKSk7Cisg
ICAgICAgICpkaXNhc3NlbWJseU91dCA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRpc2Fzc2VtYmx5LT5HZXRCdWZmZXJQb2ludGVyKCkpKTsKICAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgKmRpc2Fzc2VtYmx5T3V0ID0gIiI7CisgICAgfQogCiAgICAg
U2FmZVJlbGVhc2UoZGlzYXNzZW1ibHkpOwogCi0gICAgcmV0dXJuIGFzbVNyYzsKKyAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hM
U0xDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmgJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENv
bXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE4ICszMiwyMCBAQAogICAgIEhMU0xDb21w
aWxlcigpOwogICAgIH5ITFNMQ29tcGlsZXIoKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwog
ICAgIHZvaWQgcmVsZWFzZSgpOwogCiAgICAgLy8gQXR0ZW1wdCB0byBjb21waWxlIGEgSExTTCBz
aGFkZXIgdXNpbmcgdGhlIHN1cHBsaWVkIGNvbmZpZ3VyYXRpb25zLCBtYXkgb3V0cHV0IGEgTlVM
TCBjb21waWxlZCBibG9iCiAgICAgLy8gZXZlbiBpZiBubyBHTCBlcnJvcnMgYXJlIHJldHVybmVk
LgogICAgIGdsOjpFcnJvciBjb21waWxlVG9CaW5hcnkoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNv
bnN0IHN0ZDo6c3RyaW5nICZobHNsLCBjb25zdCBzdGQ6OnN0cmluZyAmcHJvZmlsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPENvbXBpbGVDb25maWc+
ICZjb25maWdzLCBjb25zdCBEM0RfU0hBREVSX01BQ1JPICpvdmVycmlkZU1hY3JvcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElEM0RCbG9iICoqb3V0Q29tcGlsZWRCbG9iLCBzdGQ6
OnN0cmluZyAqb3V0RGVidWdJbmZvKSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0RCbG9iICoqb3V0Q29tcGlsZWRCbG9iLCBzdGQ6OnN0cmluZyAqb3V0RGVidWdJbmZv
KTsKIAotICAgIHN0ZDo6c3RyaW5nIGRpc2Fzc2VtYmxlQmluYXJ5KElEM0RCbG9iKiBzaGFkZXJC
aW5hcnkpIGNvbnN0OworICAgIGdsOjpFcnJvciBkaXNhc3NlbWJsZUJpbmFyeShJRDNEQmxvYiAq
c2hhZGVyQmluYXJ5LCBzdGQ6OnN0cmluZyAqZGlzYXNzZW1ibHlPdXQpOwogCiAgIHByaXZhdGU6
CisgICAgZ2w6OkVycm9yIGluaXRpYWxpemUoKTsKKworICAgIGJvb2wgbUluaXRpYWxpemVkOwog
ICAgIEhNT0RVTEUgbUQzRENvbXBpbGVyTW9kdWxlOwogICAgIHBEM0RDb21waWxlIG1EM0RDb21w
aWxlRnVuYzsKICAgICBwRDNERGlzYXNzZW1ibGUgbUQzRERpc2Fzc2VtYmxlRnVuYzsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VE
M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMsMjYgKzIzLDEwIEBACiAgICAgICBtSGVpZ2h0KDApLAogICAg
ICAgbURlcHRoKDApLAogICAgICAgbUludGVybmFsRm9ybWF0KEdMX05PTkUpLAorICAgICAgbVJl
bmRlcmFibGUoZmFsc2UpLAogICAgICAgbVRhcmdldChHTF9OT05FKSwKLSAgICAgIG1SZW5kZXJh
YmxlKGZhbHNlKSwKICAgICAgIG1EaXJ0eShmYWxzZSkKIHsKIH0KIAotZ2w6OkVycm9yIEltYWdl
RDNEOjpjb3B5KGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQotewotICAgIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnNyY0F0dGFjaG1lbnQgPSBzb3VyY2UtPmdl
dFJlYWRDb2xvcmJ1ZmZlcigpOwotICAgIEFTU0VSVChzcmNBdHRhY2htZW50KTsKLQotICAgIFJl
bmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBzcmNBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0K
LSAgICBBU1NFUlQocmVuZGVyVGFyZ2V0KTsKLSAgICByZXR1cm4gY29weShkZXN0T2Zmc2V0LCBz
b3VyY2VBcmVhLCByZW5kZXJUYXJnZXQpOwotfQotCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1h
Z2VEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDEyIEBACiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0
TWFuYWdlZFN1cmZhY2UyREFycmF5KFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgbGF5ZXIs
IGludCBsZXZlbCkgeyByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsgfTsKICAgICB2aXJ0
dWFsIGdsOjpFcnJvciBjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBjb25z
dCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjpCb3ggJnJlZ2lvbikgPSAwOwogCi0g
ICAgdmlydHVhbCBnbDo6RXJyb3IgY29weShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBj
b25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkltYWdlSW5kZXggJnNvdXJjZUluZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKSA9
IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJ
bWFnZUluZGV4ICZpbWFnZUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc291cmNlKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJy
b3IgY29weUZyb21GcmFtZWJ1ZmZlcihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSA9IDA7CiAKLSAgICBnbDo6RXJyb3IgY29w
eShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSk7Ci0KICAgcHJvdGVjdGVkOgog
ICAgIEdMc2l6ZWkgbVdpZHRoOwogICAgIEdMc2l6ZWkgbUhlaWdodDsKQEAgLTc0LDkgKzc1LDYg
QEAKICAgICBHTGVudW0gbVRhcmdldDsKIAogICAgIGJvb2wgbURpcnR5OwotCi0gIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0
LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBSZW5kZXJUYXJnZXREM0QgKnNvdXJj
ZSkgPSAwOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9JbmRleEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIuaAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9JbmRleEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw2IEBA
CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vy
cm9yLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW5kZXhSYW5nZUNhY2hlLmgiCiAK
IG5hbWVzcGFjZSByeAogewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1h
bmFnZXIuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04LDYgKzgsOCBAQAogLy8gcnVucyB0aGUgQnVmZmVyIHRyYW5zbGF0aW9uIHByb2Nl
c3MgZm9yIGluZGV4IGJ1ZmZlcnMuCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
SW5kZXhEYXRhTWFuYWdlci5oIgorCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9CdWZm
ZXIuaCIKQEAgLTE2LDQ1ICsxOCwxMTEgQEAKIG5hbWVzcGFjZSByeAogewogCi1zdGF0aWMgdm9p
ZCBDb252ZXJ0SW5kaWNlcyhHTGVudW0gc291cmNlVHlwZSwgR0xlbnVtIGRlc3RpbmF0aW9uVHlw
ZSwgY29uc3Qgdm9pZCAqaW5wdXQsIEdMc2l6ZWkgY291bnQsIHZvaWQgKm91dHB1dCkKK25hbWVz
cGFjZQogewotICAgIGlmIChzb3VyY2VUeXBlID09IEdMX1VOU0lHTkVEX0JZVEUpCisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dFQsIHR5cGVuYW1lIERlc3RUPgordm9pZCBDb252ZXJ0SW5kZXhB
cnJheShjb25zdCB2b2lkICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNv
dXJjZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm91dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RpbmF0aW9uVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VQcmlt
aXRpdmVSZXN0YXJ0Rml4ZWRJbmRleCkKK3sKKyAgICBjb25zdCBJbnB1dFQgKmluID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgSW5wdXRUICo+KGlucHV0KTsKKyAgICBEZXN0VCAqb3V0ICAgICAgID0gc3Rh
dGljX2Nhc3Q8RGVzdFQgKj4ob3V0cHV0KTsKKworICAgIGlmICh1c2VQcmltaXRpdmVSZXN0YXJ0
Rml4ZWRJbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChkZXN0aW5hdGlvblR5cGUgPT0gR0xf
VU5TSUdORURfU0hPUlQpOwotICAgICAgICBjb25zdCBHTHVieXRlICppbiA9IHN0YXRpY19jYXN0
PGNvbnN0IEdMdWJ5dGUqPihpbnB1dCk7Ci0gICAgICAgIEdMdXNob3J0ICpvdXQgPSBzdGF0aWNf
Y2FzdDxHTHVzaG9ydCo+KG91dHB1dCk7Ci0KKyAgICAgICAgSW5wdXRUIHNyY1Jlc3RhcnRJbmRl
eCA9IHN0YXRpY19jYXN0PElucHV0VD4oZ2w6OkdldFByaW1pdGl2ZVJlc3RhcnRJbmRleChzb3Vy
Y2VUeXBlKSk7CisgICAgICAgIERlc3RUIGRlc3RSZXN0YXJ0SW5kZXggPSBzdGF0aWNfY2FzdDxE
ZXN0VD4oZ2w6OkdldFByaW1pdGl2ZVJlc3RhcnRJbmRleChkZXN0aW5hdGlvblR5cGUpKTsKICAg
ICAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgewotICAg
ICAgICAgICAgb3V0W2ldID0gaW5baV07CisgICAgICAgICAgICBvdXRbaV0gPSAoaW5baV0gPT0g
c3JjUmVzdGFydEluZGV4ID8gZGVzdFJlc3RhcnRJbmRleCA6IHN0YXRpY19jYXN0PERlc3RUPihp
bltpXSkpOwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKHNvdXJjZVR5cGUgPT0gR0xf
VU5TSUdORURfSU5UKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIEFTU0VSVChkZXN0aW5hdGlv
blR5cGUgPT0gR0xfVU5TSUdORURfSU5UKTsKLSAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQs
IGNvdW50ICogc2l6ZW9mKEdMdWludCkpOwotICAgIH0KLSAgICBlbHNlIGlmIChzb3VyY2VUeXBl
ID09IEdMX1VOU0lHTkVEX1NIT1JUKQotICAgIHsKLSAgICAgICAgaWYgKGRlc3RpbmF0aW9uVHlw
ZSA9PSBHTF9VTlNJR05FRF9TSE9SVCkKKyAgICAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgbWVtY3B5KG91dHB1dCwgaW5wdXQs
IGNvdW50ICogc2l6ZW9mKEdMdXNob3J0KSk7CisgICAgICAgICAgICBvdXRbaV0gPSBzdGF0aWNf
Y2FzdDxEZXN0VD4oaW5baV0pOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGRlc3RpbmF0
aW9uVHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IEdMdXNob3J0ICppbiA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5wdXQpOwotICAg
ICAgICAgICAgR0x1aW50ICpvdXQgPSBzdGF0aWNfY2FzdDxHTHVpbnQqPihvdXRwdXQpOworICAg
IH0KK30KIAotICAgICAgICAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRbaV0gPSBpbltpXTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7Cit2b2lkIENvbnZl
cnRJbmRpY2VzKEdMZW51bSBzb3VyY2VUeXBlLAorICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZGVzdGluYXRpb25UeXBlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICppbnB1dCwK
KyAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
dm9pZCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICBib29sIHVzZVByaW1pdGl2ZVJlc3Rh
cnRGaXhlZEluZGV4KQoreworICAgIGlmIChzb3VyY2VUeXBlID09IGRlc3RpbmF0aW9uVHlwZSkK
KyAgICB7CisgICAgICAgIGNvbnN0IGdsOjpUeXBlICZ0eXBlSW5mbyA9IGdsOjpHZXRUeXBlSW5m
byhkZXN0aW5hdGlvblR5cGUpOworICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgY291bnQg
KiB0eXBlSW5mby5ieXRlcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoc291
cmNlVHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRlc3Rp
bmF0aW9uVHlwZSA9PSBHTF9VTlNJR05FRF9TSE9SVCk7CisgICAgICAgIENvbnZlcnRJbmRleEFy
cmF5PEdMdWJ5dGUsIEdMdXNob3J0PihpbnB1dCwgc291cmNlVHlwZSwgb3V0cHV0LCBkZXN0aW5h
dGlvblR5cGUsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXNlUHJpbWl0aXZlUmVzdGFydEZpeGVkSW5kZXgpOworICAgIH0KKyAgICBlbHNlIGlm
IChzb3VyY2VUeXBlID09IEdMX1VOU0lHTkVEX1NIT1JUKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGRlc3RpbmF0aW9uVHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpOworICAgICAgICBDb252ZXJ0SW5k
ZXhBcnJheTxHTHVzaG9ydCwgR0x1aW50PihpbnB1dCwgc291cmNlVHlwZSwgb3V0cHV0LCBkZXN0
aW5hdGlvblR5cGUsIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2VQcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleCk7CisgICAgfQogICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKIH0KIAorZ2w6OkVycm9yIFN0cmVhbUluSW5kZXhCdWZmZXIoSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZVByaW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvZmZzZXQpCit7
CisgICAgY29uc3QgZ2w6OlR5cGUgJmRzdFR5cGVJbmZvID0gZ2w6OkdldFR5cGVJbmZvKGRzdFR5
cGUpOworCisgICAgaWYgKGNvdW50ID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50
Pjo6bWF4KCkgPj4gZHN0VHlwZUluZm8uYnl0ZXNTaGlmdCkpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IlJlc2VydmluZyAldSBpbmRpY2VzIG9mICV1IGJ5dGVzIGVhY2ggZXhjZWVkcyB0aGUgbWF4aW11
bSBidWZmZXIgc2l6ZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBkc3RUeXBl
SW5mby5ieXRlcyk7CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJ1ZmZlclNpemVSZXF1aXJl
ZCA9IGNvdW50IDw8IGRzdFR5cGVJbmZvLmJ5dGVzU2hpZnQ7CisgICAgZ2w6OkVycm9yIGVycm9y
ID0gYnVmZmVyLT5yZXNlcnZlQnVmZmVyU3BhY2UoYnVmZmVyU2l6ZVJlcXVpcmVkLCBkc3RUeXBl
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9y
OworICAgIH0KKworICAgIHZvaWQgKm91dHB1dCA9IG51bGxwdHI7CisgICAgZXJyb3IgPSBidWZm
ZXItPm1hcEJ1ZmZlcihidWZmZXJTaXplUmVxdWlyZWQsICZvdXRwdXQsIG9mZnNldCk7CisgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9
CisKKyAgICBDb252ZXJ0SW5kaWNlcyhzcmNUeXBlLCBkc3RUeXBlLCBkYXRhLCBjb3VudCwgb3V0
cHV0LCB1c2VQcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleCk7CisKKyAgICBlcnJvciA9IGJ1ZmZl
ci0+dW5tYXBCdWZmZXIoKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKIEluZGV4RGF0YU1hbmFnZXI6
OkluZGV4RGF0YU1hbmFnZXIoQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSwgUmVuZGVyZXJDbGFz
cyByZW5kZXJlckNsYXNzKQogICAgIDogbUZhY3RvcnkoZmFjdG9yeSksCiAgICAgICBtUmVuZGVy
ZXJDbGFzcyhyZW5kZXJlckNsYXNzKSwKQEAgLTY5LDE2OSArMTM3LDE4MCBAQAogICAgIFNhZmVE
ZWxldGUobVN0cmVhbWluZ0J1ZmZlckludCk7CiB9CiAKLWdsOjpFcnJvciBJbmRleERhdGFNYW5h
Z2VyOjpwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSB0eXBlLCBHTHNpemVpIGNvdW50LCBnbDo6QnVm
ZmVyICpidWZmZXIsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgVHJhbnNsYXRlZEluZGV4RGF0YSAq
dHJhbnNsYXRlZCkKKy8vIFRoaXMgZnVuY3Rpb24gdHJhbnNsYXRlcyBhIEdMLXN0eWxlIGluZGlj
ZXMgaW50byBEWC1zdHlsZSBpbmRpY2VzLCB3aXRoIHRoZWlyIGRlc2NyaXB0aW9uCisvLyByZXR1
cm5lZCBpbiB0cmFuc2xhdGVkLgorLy8gR0wgY2FuIHNwZWNpZnkgdmVydGV4IGRhdGEgaW4gaW1t
ZWRpYXRlIG1vZGUgKHBvaW50ZXIgdG8gQ1BVIGFycmF5IG9mIGluZGljZXMpLCB3aGljaCBpcyBu
b3QKKy8vIHBvc3NpYmxlIGluIERYIGFuZCByZXF1aXJlcyBzdHJlYW1pbmcgKENhc2UgMSkuIElm
IHRoZSBHTCBpbmRpY2VzIGFyZSBzcGVjaWZpZWQgd2l0aCBhIGJ1ZmZlcgorLy8gKENhc2UgMiks
IGluIGEgZm9ybWF0IHN1cHBvcnRlZCBieSBEWCAoc3ViY2FzZSBhKSB0aGVuIGFsbCBpcyBnb29k
LgorLy8gV2hlbiB3ZSBoYXZlIGEgYnVmZmVyIHdpdGggYW4gdW5zdXBwb3J0ZWQgZm9ybWF0IChz
dWJjYXNlIGIpIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHRyYW5zbGF0aW9uOgorLy8gd2Ugd2ls
bCBzdGFydCBieSBmYWxsaW5nIGJhY2sgdG8gc3RyZWFtaW5nLCBhbmQgYWZ0ZXIgYSB3aGlsZSB3
aWxsIHN0YXJ0IHVzaW5nIGEgc3RhdGljIHRyYW5zbGF0ZWQKKy8vIGNvcHkgb2YgdGhlIGluZGV4
IGJ1ZmZlci4KK2dsOjpFcnJvciBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXRhKEdM
ZW51bSBzcmNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpCdWZmZXIgKmdsQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNs
YXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cHJpbWl0aXZlUmVzdGFydEZpeGVkSW5kZXhFbmFibGVkKQogewotICAgIGNvbnN0IGdsOjpUeXBl
ICZ0eXBlSW5mbyA9IGdsOjpHZXRUeXBlSW5mbyh0eXBlKTsKKyAgICAvLyBBdm9pZCBEM0QxMSdz
IHByaW1pdGl2ZSByZXN0YXJ0IGluZGV4IHZhbHVlCisgICAgLy8gc2VlIGh0dHA6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYmIyMDUxMjQodj12cy44
NSkuYXNweAorICAgIGJvb2wgaGFzUHJpbWl0aXZlUmVzdGFydEluZGV4ID0KKyAgICAgICAgdHJh
bnNsYXRlZC0+aW5kZXhSYW5nZS52ZXJ0ZXhJbmRleENvdW50IDwgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihjb3VudCkgfHwKKyAgICAgICAgdHJhbnNsYXRlZC0+aW5kZXhSYW5nZS5lbmQgPT0gZ2w6Okdl
dFByaW1pdGl2ZVJlc3RhcnRJbmRleChzcmNUeXBlKTsKKyAgICBib29sIHByaW1pdGl2ZVJlc3Rh
cnRXb3JrYXJvdW5kID0gbVJlbmRlcmVyQ2xhc3MgPT0gUkVOREVSRVJfRDNEMTEgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByaW1pdGl2ZVJlc3RhcnRGaXhlZElu
ZGV4RW5hYmxlZCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQ
cmltaXRpdmVSZXN0YXJ0SW5kZXggJiYgc3JjVHlwZSA9PSBHTF9VTlNJR05FRF9TSE9SVDsKIAot
ICAgIEdMZW51bSBkZXN0aW5hdGlvbkluZGV4VHlwZSA9ICh0eXBlID09IEdMX1VOU0lHTkVEX0lO
VCkgPyBHTF9VTlNJR05FRF9JTlQgOiBHTF9VTlNJR05FRF9TSE9SVDsKKyAgICAvLyBXZSBzaG91
bGQgbmV2ZXIgaGF2ZSB0byBkZWFsIHdpdGggTUFYX1VJTlQgaW5kaWNlcywgc2luY2Ugd2UgcmVz
dHJpY3QgaXQgdmlhCisgICAgLy8gTUFYX0VMRU1FTlRfSU5ERVguCisgICAgQVNTRVJUKCEobVJl
bmRlcmVyQ2xhc3MgPT0gUkVOREVSRVJfRDNEMTEgJiYgIXByaW1pdGl2ZVJlc3RhcnRGaXhlZElu
ZGV4RW5hYmxlZCAmJgorICAgICAgICAgICAgIGhhc1ByaW1pdGl2ZVJlc3RhcnRJbmRleCAmJiBz
cmNUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkpOwogCi0gICAgdW5zaWduZWQgaW50IG9mZnNldCA9
IDA7Ci0gICAgYm9vbCBhbGlnbmVkT2Zmc2V0ID0gZmFsc2U7CisgICAgY29uc3QgR0xlbnVtIGRz
dFR5cGUgPSAoc3JjVHlwZSA9PSBHTF9VTlNJR05FRF9JTlQgfHwgcHJpbWl0aXZlUmVzdGFydFdv
cmthcm91bmQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCA6
IEdMX1VOU0lHTkVEX1NIT1JUOwogCi0gICAgQnVmZmVyRDNEICpzdG9yYWdlID0gTlVMTDsKKyAg
ICBjb25zdCBnbDo6VHlwZSAmc3JjVHlwZUluZm8gPSBnbDo6R2V0VHlwZUluZm8oc3JjVHlwZSk7
CisgICAgY29uc3QgZ2w6OlR5cGUgJmRzdFR5cGVJbmZvID0gZ2w6OkdldFR5cGVJbmZvKGRzdFR5
cGUpOwogCi0gICAgaWYgKGJ1ZmZlciAhPSBOVUxMKQotICAgIHsKLSAgICAgICAgb2Zmc2V0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5k
aWNlcykpOworICAgIEJ1ZmZlckQzRCAqYnVmZmVyID0gZ2xCdWZmZXIgPyBHZXRJbXBsQXM8QnVm
ZmVyRDNEPihnbEJ1ZmZlcikgOiBudWxscHRyOwogCi0gICAgICAgIHN0b3JhZ2UgPSBHZXRJbXBs
QXM8QnVmZmVyRDNEPihidWZmZXIpOworICAgIHRyYW5zbGF0ZWQtPmluZGV4VHlwZSA9IGRzdFR5
cGU7CisgICAgdHJhbnNsYXRlZC0+c3JjSW5kZXhEYXRhLnNyY0J1ZmZlciAgICA9IGJ1ZmZlcjsK
KyAgICB0cmFuc2xhdGVkLT5zcmNJbmRleERhdGEuc3JjSW5kaWNlcyAgID0gaW5kaWNlczsKKyAg
ICB0cmFuc2xhdGVkLT5zcmNJbmRleERhdGEuc3JjSW5kZXhUeXBlID0gc3JjVHlwZTsKKyAgICB0
cmFuc2xhdGVkLT5zcmNJbmRleERhdGEuc3JjQ291bnQgICAgID0gY291bnQ7CiAKLSAgICAgICAg
Ly8gV2UnbGwgdHJ1c3QgdGhhdCB0aGUgY29tcGlsZXIgd2lsbCBvcHRpbWl6ZSB0aGUgJSBiZWxv
dzoKLSAgICAgICAgLy8gdGhlIG9wZXJhbmRzIGFyZSB1bnNpZ25lZCBhbmQgdGhlIGRpdmlzb3Ig
aXMgYSBjb25zdGFudC4KLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOiAgYWxpZ25lZE9mZnNldCA9IChvZmZzZXQgJSBzaXpl
b2YoR0x1Ynl0ZSkgPT0gMCk7ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUOiBhbGlnbmVkT2Zmc2V0ID0gKG9mZnNldCAlIHNpemVvZihHTHVzaG9ydCkgPT0gMCk7IGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOiAgIGFsaWduZWRPZmZzZXQgPSAo
b2Zmc2V0ICUgc2l6ZW9mKEdMdWludCkgPT0gMCk7ICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVs
dDogVU5SRUFDSEFCTEUoKTsgYWxpZ25lZE9mZnNldCA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgQVNTRVJUKHR5cGVJbmZvLmJ5dGVzICogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihj
b3VudCkgKyBvZmZzZXQgPD0gc3RvcmFnZS0+Z2V0U2l6ZSgpKTsKLQotICAgICAgICBjb25zdCB1
aW50OF90ICpidWZmZXJEYXRhID0gTlVMTDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gc3Rv
cmFnZS0+Z2V0RGF0YSgmYnVmZmVyRGF0YSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGluZGljZXMgPSBidWZmZXJEYXRhICsgb2Zmc2V0OworICAgIC8vIENhc2UgMTogdGhlIGlu
ZGljZXMgYXJlIHBhc3NlZCBieSBwb2ludGVyLCB3aGljaCBmb3JjZXMgdGhlIHN0cmVhbWluZyBv
ZiBpbmRleCBkYXRhCisgICAgaWYgKGdsQnVmZmVyID09IG51bGxwdHIpCisgICAgeworICAgICAg
ICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIHN0cmVhbUlu
ZGV4RGF0YShpbmRpY2VzLCBjb3VudCwgc3JjVHlwZSwgZHN0VHlwZSwgcHJpbWl0aXZlUmVzdGFy
dEZpeGVkSW5kZXhFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
bGF0ZWQpOwogICAgIH0KIAotICAgIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpzdGF0aWNC
dWZmZXIgPSBzdG9yYWdlID8gc3RvcmFnZS0+Z2V0U3RhdGljSW5kZXhCdWZmZXIoKSA6IE5VTEw7
Ci0gICAgSW5kZXhCdWZmZXJJbnRlcmZhY2UgKmluZGV4QnVmZmVyID0gTlVMTDsKLSAgICBib29s
IGRpcmVjdFN0b3JhZ2UgPSBhbGlnbmVkT2Zmc2V0ICYmIHN0b3JhZ2UgJiYgc3RvcmFnZS0+c3Vw
cG9ydHNEaXJlY3RCaW5kaW5nKCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5h
dGlvbkluZGV4VHlwZSA9PSB0eXBlOwotICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZzZXQgPSAw
OworICAgIC8vIENhc2UgMjogdGhlIGluZGljZXMgYXJlIGFscmVhZHkgaW4gYSBidWZmZXIKKyAg
ICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oaW5kaWNlcykpOworICAgIEFTU0VSVChzcmNUeXBlSW5mby5i
eXRlcyAqIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpICsgb2Zmc2V0IDw9IGJ1ZmZl
ci0+Z2V0U2l6ZSgpKTsKIAotICAgIC8vIEF2b2lkIEQzRDExJ3MgcHJpbWl0aXZlIHJlc3RhcnQg
aW5kZXggdmFsdWUKLSAgICAvLyBzZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9s
aWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9iYjIwNTEyNCh2PXZzLjg1KS5hc3B4Ci0gICAgYm9vbCBw
cmltaXRpdmVSZXN0YXJ0V29ya2Fyb3VuZCA9IG1SZW5kZXJlckNsYXNzID09IFJFTkRFUkVSX0Qz
RDExICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQt
PmluZGV4UmFuZ2UuZW5kID09IDB4RkZGRiAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlID09IEdMX1VOU0lHTkVEX1NIT1JUOwotCi0gICAgaWYgKHByaW1pdGl2
ZVJlc3RhcnRXb3JrYXJvdW5kKQorICAgIGJvb2wgb2Zmc2V0QWxpZ25lZDsKKyAgICBzd2l0Y2gg
KHNyY1R5cGUpCiAgICAgewotICAgICAgICBkZXN0aW5hdGlvbkluZGV4VHlwZSA9IEdMX1VOU0lH
TkVEX0lOVDsKLSAgICAgICAgZGlyZWN0U3RvcmFnZSA9IGZhbHNlOworICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOiAgb2Zmc2V0QWxpZ25lZCA9IChvZmZzZXQgJSBzaXplb2YoR0x1Ynl0ZSkg
PT0gMCk7ICBicmVhazsKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6IG9mZnNldEFsaWdu
ZWQgPSAob2Zmc2V0ICUgc2l6ZW9mKEdMdXNob3J0KSA9PSAwKTsgYnJlYWs7CisgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVDogICBvZmZzZXRBbGlnbmVkID0gKG9mZnNldCAlIHNpemVvZihHTHVp
bnQpID09IDApOyAgIGJyZWFrOworICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgb2Zmc2V0
QWxpZ25lZCA9IGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpUeXBlICZkZXN0VHlwZUlu
Zm8gPSBnbDo6R2V0VHlwZUluZm8oZGVzdGluYXRpb25JbmRleFR5cGUpOwotCi0gICAgaWYgKGRp
cmVjdFN0b3JhZ2UpCisgICAgLy8gQ2FzZSAyYTogdGhlIGJ1ZmZlciBjYW4gYmUgdXNlZCBkaXJl
Y3RseQorICAgIGlmIChvZmZzZXRBbGlnbmVkICYmIGJ1ZmZlci0+c3VwcG9ydHNEaXJlY3RCaW5k
aW5nKCkgJiYKKyAgICAgICAgZHN0VHlwZSA9PSBzcmNUeXBlICYmICFwcmltaXRpdmVSZXN0YXJ0
V29ya2Fyb3VuZCkKICAgICB7Ci0gICAgICAgIHN0cmVhbU9mZnNldCA9IG9mZnNldDsKKyAgICAg
ICAgdHJhbnNsYXRlZC0+c3RvcmFnZSA9IGJ1ZmZlcjsKKyAgICAgICAgdHJhbnNsYXRlZC0+aW5k
ZXhCdWZmZXIgPSBudWxscHRyOworICAgICAgICB0cmFuc2xhdGVkLT5zZXJpYWwgPSBidWZmZXIt
PmdldFNlcmlhbCgpOworICAgICAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4ID0gKG9mZnNldCA+
PiBzcmNUeXBlSW5mby5ieXRlc1NoaWZ0KTsKKyAgICAgICAgdHJhbnNsYXRlZC0+c3RhcnRPZmZz
ZXQgPSBvZmZzZXQ7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogICAg
IH0KLSAgICBlbHNlIGlmIChzdGF0aWNCdWZmZXIgJiYKLSAgICAgICAgICAgICBzdGF0aWNCdWZm
ZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwICYmCi0gICAgICAgICAgICAgYWxpZ25lZE9mZnNldCAm
JgotICAgICAgICAgICAgIHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gZGVzdGluYXRp
b25JbmRleFR5cGUpCisgICAgZWxzZQogICAgIHsKLSAgICAgICAgaW5kZXhCdWZmZXIgPSBzdGF0
aWNCdWZmZXI7Ci0KLSAgICAgICAgLy8gVXNpbmcgYml0LXNoaWZ0IGhlcmUgaXMgZmFzdGVyIHRo
YW4gdXNpbmcgZGl2aXNpb24uCi0gICAgICAgIHN0cmVhbU9mZnNldCA9IChvZmZzZXQgPj4gdHlw
ZUluZm8uYnl0ZXNTaGlmdCkgPDwgZGVzdFR5cGVJbmZvLmJ5dGVzU2hpZnQ7CisgICAgICAgIHRy
YW5zbGF0ZWQtPnN0b3JhZ2UgPSBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghZGlyZWN0U3Rv
cmFnZSAmJiAhaW5kZXhCdWZmZXIpCi0gICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBn
ZXRTdHJlYW1pbmdJbmRleEJ1ZmZlcihkZXN0aW5hdGlvbkluZGV4VHlwZSwgJmluZGV4QnVmZmVy
KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgLy8gQ2FzZSAyYjogdXNlIGEgc3RhdGljIHRy
YW5zbGF0ZWQgY29weSBvciBmYWxsIGJhY2sgdG8gc3RyZWFtaW5nCisgICAgU3RhdGljSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlci0+Z2V0U3RhdGljSW5kZXhCdWZm
ZXIoKTsKIAotICAgICAgICB1bnNpZ25lZCBpbnQgY29udmVydENvdW50ID0gY291bnQ7CisgICAg
Ym9vbCBzdGF0aWNCdWZmZXJJbml0aWFsaXplZCA9IHN0YXRpY0J1ZmZlciAmJiBzdGF0aWNCdWZm
ZXItPmdldEJ1ZmZlclNpemUoKSAhPSAwOworICAgIGJvb2wgc3RhdGljQnVmZmVyVXNhYmxlID0g
c3RhdGljQnVmZmVyICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRBbGln
bmVkICYmIHN0YXRpY0J1ZmZlci0+Z2V0SW5kZXhUeXBlKCkgPT0gZHN0VHlwZTsKIAotICAgICAg
ICBpZiAoc3RhdGljQnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoc3RhdGljQnVm
ZmVyLT5nZXRCdWZmZXJTaXplKCkgPT0gMCAmJiBhbGlnbmVkT2Zmc2V0KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGluZGV4QnVmZmVyID0gc3RhdGljQnVmZmVyOwotICAgICAgICAg
ICAgICAgIC8vIFVzaW5nIGJpdC1zaGlmdCBoZXJlIGlzIGZhc3RlciB0aGFuIHVzaW5nIGRpdmlz
aW9uLgotICAgICAgICAgICAgICAgIGNvbnZlcnRDb3VudCA9IHN0b3JhZ2UtPmdldFNpemUoKSA+
PiB0eXBlSW5mby5ieXRlc1NoaWZ0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0b3JhZ2UtPmludmFsaWRhdGVTdGF0aWNE
YXRhKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGljQnVmZmVyID0gTlVMTDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQorICAgIGlmIChzdGF0aWNCdWZmZXJJbml0aWFsaXplZCAmJiAhc3RhdGlj
QnVmZmVyVXNhYmxlKQorICAgIHsKKyAgICAgICAgYnVmZmVyLT5pbnZhbGlkYXRlU3RhdGljRGF0
YSgpOworICAgICAgICBzdGF0aWNCdWZmZXIgPSBudWxscHRyOworICAgIH0KIAotICAgICAgICBB
U1NFUlQoaW5kZXhCdWZmZXIpOwotCi0gICAgICAgIC8vIFVzaW5nIGJpdC1zaGlmdCBoZXJlIGlz
IGZhc3RlciB0aGFuIHVzaW5nIGRpdmlzaW9uLgotICAgICAgICBpZiAoY29udmVydENvdW50ID4g
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgPj4gZGVzdFR5cGVJbmZv
LmJ5dGVzU2hpZnQpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksICJSZXNlcnZpbmcgJXUgaW5kaWNlcyBvZiAldSBieXRlcyBlYWNoIGV4
Y2VlZHMgdGhlIG1heGltdW0gYnVmZmVyIHNpemUuIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udmVydENvdW50LCBkZXN0VHlwZUluZm8uYnl0ZXMpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdW5zaWduZWQgaW50IGJ1ZmZlclNpemVSZXF1aXJlZCA9IGNvbnZlcnRDb3VudCA8PCBk
ZXN0VHlwZUluZm8uYnl0ZXNTaGlmdDsKLSAgICAgICAgZXJyb3IgPSBpbmRleEJ1ZmZlci0+cmVz
ZXJ2ZUJ1ZmZlclNwYWNlKGJ1ZmZlclNpemVSZXF1aXJlZCwgZGVzdGluYXRpb25JbmRleFR5cGUp
OworICAgIGlmIChzdGF0aWNCdWZmZXIgPT0gbnVsbHB0ciB8fCAhb2Zmc2V0QWxpZ25lZCkKKyAg
ICB7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlckRhdGEgPSBudWxscHRyOworICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBidWZmZXItPmdldERhdGEoJmJ1ZmZlckRhdGEpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJy
b3I7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKGJ1ZmZlckRhdGEgIT0gbnVsbHB0cik7CiAK
LSAgICAgICAgdm9pZCogb3V0cHV0ID0gTlVMTDsKLSAgICAgICAgZXJyb3IgPSBpbmRleEJ1ZmZl
ci0+bWFwQnVmZmVyKGJ1ZmZlclNpemVSZXF1aXJlZCwgJm91dHB1dCwgJnN0cmVhbU9mZnNldCk7
CisgICAgICAgIGVycm9yID0gc3RyZWFtSW5kZXhEYXRhKGJ1ZmZlckRhdGEgKyBvZmZzZXQsIGNv
dW50LCBzcmNUeXBlLCBkc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleEVuYWJsZWQsIHRyYW5zbGF0ZWQpOwogICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgICAgIH0KLQotICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhUG9pbnRlciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGluZGljZXMpOwotICAgICAgICBpZiAoc3RhdGlj
QnVmZmVyKQorICAgICAgICBidWZmZXItPnByb21vdGVTdGF0aWNVc2FnZShjb3VudCA8PCBzcmNU
eXBlSW5mby5ieXRlc1NoaWZ0KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaWYg
KCFzdGF0aWNCdWZmZXJJbml0aWFsaXplZCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3Ig
PSBzdG9yYWdlLT5nZXREYXRhKCZkYXRhUG9pbnRlcik7CisgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpidWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9
IGJ1ZmZlci0+Z2V0RGF0YSgmYnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBDb252ZXJ0SW5kaWNlcyh0eXBlLCBkZXN0
aW5hdGlvbkluZGV4VHlwZSwgZGF0YVBvaW50ZXIsIGNvbnZlcnRDb3VudCwgb3V0cHV0KTsKKyAg
ICAgICAgICAgIEFTU0VSVChidWZmZXJEYXRhICE9IG51bGxwdHIpOwogCi0gICAgICAgIGVycm9y
ID0gaW5kZXhCdWZmZXItPnVubWFwQnVmZmVyKCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGludCBjb252ZXJ0Q291bnQgPQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4oYnVmZmVyLT5nZXRTaXplKCkpID4+IHNyY1R5cGVJbmZvLmJ5dGVzU2hpZnQ7
CisgICAgICAgICAgICBlcnJvciA9IFN0cmVhbUluSW5kZXhCdWZmZXIoc3RhdGljQnVmZmVyLCBi
dWZmZXJEYXRhLCBjb252ZXJ0Q291bnQsIHNyY1R5cGUsIGRzdFR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlUmVzdGFydEZpeGVkSW5kZXhFbmFi
bGVkLCBudWxscHRyKTsKKyAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQogICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChvZmZzZXRBbGlnbmVkICYmIHN0YXRpY0J1ZmZlci0+Z2V0
SW5kZXhUeXBlKCkgPT0gZHN0VHlwZSk7CiAKLSAgICAgICAgaWYgKHN0YXRpY0J1ZmZlcikKLSAg
ICAgICAgewotICAgICAgICAgICAgLy8gVXNpbmcgYml0LXNoaWZ0IGhlcmUgaXMgZmFzdGVyIHRo
YW4gdXNpbmcgZGl2aXNpb24uCi0gICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSAob2Zmc2V0ID4+
IHR5cGVJbmZvLmJ5dGVzU2hpZnQpIDw8IGRlc3RUeXBlSW5mby5ieXRlc1NoaWZ0OwotICAgICAg
ICB9CisgICAgICAgIHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gc3RhdGljQnVmZmVyLT5nZXRJ
bmRleEJ1ZmZlcigpOworICAgICAgICB0cmFuc2xhdGVkLT5zZXJpYWwgPSBzdGF0aWNCdWZmZXIt
PmdldFNlcmlhbCgpOworICAgICAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4ID0gKG9mZnNldCA+
PiBzcmNUeXBlSW5mby5ieXRlc1NoaWZ0KTsKKyAgICAgICAgdHJhbnNsYXRlZC0+c3RhcnRPZmZz
ZXQgPSAob2Zmc2V0ID4+IHNyY1R5cGVJbmZvLmJ5dGVzU2hpZnQpIDw8IGRzdFR5cGVJbmZvLmJ5
dGVzU2hpZnQ7CiAgICAgfQogCi0gICAgdHJhbnNsYXRlZC0+c3RvcmFnZSA9IGRpcmVjdFN0b3Jh
Z2UgPyBzdG9yYWdlIDogTlVMTDsKLSAgICB0cmFuc2xhdGVkLT5pbmRleEJ1ZmZlciA9IGluZGV4
QnVmZmVyID8gaW5kZXhCdWZmZXItPmdldEluZGV4QnVmZmVyKCkgOiBOVUxMOwotICAgIHRyYW5z
bGF0ZWQtPnNlcmlhbCA9IGRpcmVjdFN0b3JhZ2UgPyBzdG9yYWdlLT5nZXRTZXJpYWwoKSA6IGlu
ZGV4QnVmZmVyLT5nZXRTZXJpYWwoKTsKLSAgICAvLyBVc2luZyBiaXQtc2hpZnQgaGVyZSBpcyBm
YXN0ZXIgdGhhbiB1c2luZyBkaXZpc2lvbi4KLSAgICB0cmFuc2xhdGVkLT5zdGFydEluZGV4ID0g
KHN0cmVhbU9mZnNldCA+PiBkZXN0VHlwZUluZm8uYnl0ZXNTaGlmdCk7Ci0gICAgdHJhbnNsYXRl
ZC0+c3RhcnRPZmZzZXQgPSBzdHJlYW1PZmZzZXQ7Ci0gICAgdHJhbnNsYXRlZC0+aW5kZXhUeXBl
ID0gZGVzdGluYXRpb25JbmRleFR5cGU7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7Cit9CiAKLSAgICBpZiAoc3RvcmFnZSkKK2dsOjpFcnJvciBJbmRleERhdGFNYW5hZ2VyOjpz
dHJlYW1JbmRleERhdGEoY29uc3QgR0x2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0VHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VQcmltaXRpdmVS
ZXN0YXJ0Rml4ZWRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCkKK3sKKyAgICBjb25zdCBnbDo6
VHlwZSAmZHN0VHlwZUluZm8gPSBnbDo6R2V0VHlwZUluZm8oZHN0VHlwZSk7CisKKyAgICBJbmRl
eEJ1ZmZlckludGVyZmFjZSAqaW5kZXhCdWZmZXIgPSBudWxscHRyOworICAgIGdsOjpFcnJvciBl
cnJvciA9IGdldFN0cmVhbWluZ0luZGV4QnVmZmVyKGRzdFR5cGUsICZpbmRleEJ1ZmZlcik7Cisg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIHN0b3JhZ2UtPnByb21vdGVT
dGF0aWNVc2FnZShjb3VudCA8PCB0eXBlSW5mby5ieXRlc1NoaWZ0KTsKKyAgICAgICAgcmV0dXJu
IGVycm9yOwogICAgIH0KKyAgICBBU1NFUlQoaW5kZXhCdWZmZXIgIT0gbnVsbHB0cik7CiAKKyAg
ICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworICAgIFN0cmVhbUluSW5kZXhCdWZmZXIoaW5kZXhCdWZm
ZXIsIGRhdGEsIGNvdW50LCBzcmNUeXBlLCBkc3RUeXBlLCB1c2VQcmltaXRpdmVSZXN0YXJ0Rml4
ZWRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICZvZmZzZXQpOworCisgICAgdHJhbnNs
YXRlZC0+aW5kZXhCdWZmZXIgPSBpbmRleEJ1ZmZlci0+Z2V0SW5kZXhCdWZmZXIoKTsKKyAgICB0
cmFuc2xhdGVkLT5zZXJpYWwgPSBpbmRleEJ1ZmZlci0+Z2V0U2VyaWFsKCk7CisgICAgdHJhbnNs
YXRlZC0+c3RhcnRJbmRleCA9IChvZmZzZXQgPj4gZHN0VHlwZUluZm8uYnl0ZXNTaGlmdCk7Cisg
ICAgdHJhbnNsYXRlZC0+c3RhcnRPZmZzZXQgPSBvZmZzZXQ7CisKICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEluZGV4RGF0YU1hbmFnZXI6OmdldFN0
cmVhbWluZ0luZGV4QnVmZmVyKEdMZW51bSBkZXN0aW5hdGlvbkluZGV4VHlwZSwgSW5kZXhCdWZm
ZXJJbnRlcmZhY2UgKipvdXRCdWZmZXIpCitnbDo6RXJyb3IgSW5kZXhEYXRhTWFuYWdlcjo6Z2V0
U3RyZWFtaW5nSW5kZXhCdWZmZXIoR0xlbnVtIGRlc3RpbmF0aW9uSW5kZXhUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4QnVmZmVy
SW50ZXJmYWNlICoqb3V0QnVmZmVyKQogewogICAgIEFTU0VSVChvdXRCdWZmZXIpOwogICAgIGlm
IChkZXN0aW5hdGlvbkluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpCkBAIC0yMzksNyArMzE4
LDggQEAKICAgICAgICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVySW50KQogICAgICAgICB7CiAgICAg
ICAgICAgICBtU3RyZWFtaW5nQnVmZmVySW50ID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50
ZXJmYWNlKG1GYWN0b3J5KTsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1TdHJlYW1p
bmdCdWZmZXJJbnQtPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpF
LCBHTF9VTlNJR05FRF9JTlQpOworICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVN0cmVh
bWluZ0J1ZmZlckludC0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJ
WkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5UKTsKICAgICAgICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2FmZURlbGV0ZSht
U3RyZWFtaW5nQnVmZmVySW50KTsKQEAgLTI1Nyw3ICszMzcsOCBAQAogICAgICAgICBpZiAoIW1T
dHJlYW1pbmdCdWZmZXJTaG9ydCkKICAgICAgICAgewogICAgICAgICAgICAgbVN0cmVhbWluZ0J1
ZmZlclNob3J0ID0gbmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKG1GYWN0b3J5KTsK
LSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1TdHJlYW1pbmdCdWZmZXJTaG9ydC0+cmVz
ZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX1NI
T1JUKTsKKyAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1TdHJlYW1pbmdCdWZmZXJTaG9y
dC0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9VTlNJR05FRF9TSE9SVCk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNhZmVEZWxldGUobVN0cmVhbWlu
Z0J1ZmZlclNob3J0KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdl
ci5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsOSArMzYsMTggQEAKIGNsYXNzIEJ1ZmZlckQzRDsKIGNsYXNzIFJlbmRlcmVyRDNEOwogCitz
dHJ1Y3QgU291cmNlSW5kZXhEYXRhCit7CisgICAgQnVmZmVyRDNEICpzcmNCdWZmZXI7CisgICAg
Y29uc3QgR0x2b2lkICpzcmNJbmRpY2VzOworICAgIHVuc2lnbmVkIGludCBzcmNDb3VudDsKKyAg
ICBHTGVudW0gc3JjSW5kZXhUeXBlOworICAgIGJvb2wgc3JjSW5kaWNlc0NoYW5nZWQ7Cit9Owor
CiBzdHJ1Y3QgVHJhbnNsYXRlZEluZGV4RGF0YQogewotICAgIFJhbmdlVUkgaW5kZXhSYW5nZTsK
KyAgICBnbDo6SW5kZXhSYW5nZSBpbmRleFJhbmdlOwogICAgIHVuc2lnbmVkIGludCBzdGFydElu
ZGV4OwogICAgIHVuc2lnbmVkIGludCBzdGFydE9mZnNldDsgICAvLyBJbiBieXRlcwogCkBAIC00
Niw2ICs1NSw4IEBACiAgICAgQnVmZmVyRDNEICpzdG9yYWdlOwogICAgIEdMZW51bSBpbmRleFR5
cGU7CiAgICAgdW5zaWduZWQgaW50IHNlcmlhbDsKKworICAgIFNvdXJjZUluZGV4RGF0YSBzcmNJ
bmRleERhdGE7CiB9OwogCiBjbGFzcyBJbmRleERhdGFNYW5hZ2VyIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCkBAIC01NCwxMCArNjUsMjIgQEAKICAgICBleHBsaWNpdCBJbmRleERhdGFNYW5hZ2VyKEJ1
ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnksIFJlbmRlcmVyQ2xhc3MgcmVuZGVyZXJDbGFzcyk7CiAg
ICAgdmlydHVhbCB+SW5kZXhEYXRhTWFuYWdlcigpOwogCi0gICAgZ2w6OkVycm9yIHByZXBhcmVJ
bmRleERhdGEoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIGdsOjpCdWZmZXIgKmFycmF5RWxl
bWVudEJ1ZmZlciwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBUcmFuc2xhdGVkSW5kZXhEYXRhICp0
cmFuc2xhdGVkKTsKKyAgICBnbDo6RXJyb3IgcHJlcGFyZUluZGV4RGF0YShHTGVudW0gc3JjVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpCdWZmZXIgKmdsQnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICp0cmFuc2xhdGVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEZpeGVkSW5k
ZXhFbmFibGVkKTsKIAogICBwcml2YXRlOgotICAgIGdsOjpFcnJvciBnZXRTdHJlYW1pbmdJbmRl
eEJ1ZmZlcihHTGVudW0gZGVzdGluYXRpb25JbmRleFR5cGUsIEluZGV4QnVmZmVySW50ZXJmYWNl
ICoqb3V0QnVmZmVyKTsKKyAgICBnbDo6RXJyb3Igc3RyZWFtSW5kZXhEYXRhKGNvbnN0IEdMdm9p
ZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVzZVByaW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCk7
CisgICAgZ2w6OkVycm9yIGdldFN0cmVhbWluZ0luZGV4QnVmZmVyKEdMZW51bSBkZXN0aW5hdGlv
bkluZGV4VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKipvdXRCdWZmZXIpOwogCiAgICAgQnVmZmVyRmFjdG9yeUQzRCAqY29u
c3QgbUZhY3Rvcnk7CiAgICAgUmVuZGVyZXJDbGFzcyBtUmVuZGVyZXJDbGFzczsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQz
RC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOCwxNiArOCwxOSBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIKIAorI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVy
YXRvci5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVu
dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9W
ZXJ0ZXhBcnJheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1JlbmRlcmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1No
YWRlckQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJFeGVjdXRh
YmxlRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5n
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgi
CiAKIG5hbWVzcGFjZSByeApAQCAtMjYsNjkgKzI5LDQxIEBACiBuYW1lc3BhY2UKIHsKIAotR0xl
bnVtIEdldFRleHR1cmVUeXBlKEdMZW51bSBzYW1wbGVyVHlwZSkKK2dsOjpJbnB1dExheW91dCBH
ZXREZWZhdWx0SW5wdXRMYXlvdXRGcm9tU2hhZGVyKGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRleFNo
YWRlcikKIHsKLSAgICBzd2l0Y2ggKHNhbXBsZXJUeXBlKQorICAgIGdsOjpJbnB1dExheW91dCBk
ZWZhdWx0TGF5b3V0OworICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmc2hhZGVyQXR0ciA6
IHZlcnRleFNoYWRlci0+Z2V0QWN0aXZlQXR0cmlidXRlcygpKQogICAgIHsKLSAgICAgIGNhc2Ug
R0xfU0FNUExFUl8yRDoKLSAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfMkQ6Ci0gICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEOgotICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX1NI
QURPVzoKLSAgICAgICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Ci0gICAgICBjYXNlIEdMX1NBTVBM
RVJfM0Q6Ci0gICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzNEOgotICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9JTlRfU0FNUExFUl8zRDoKLSAgICAgICAgcmV0dXJuIEdMX1RFWFRVUkVfM0Q7Ci0gICAg
ICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKLSAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFX1NIQURP
VzoKLSAgICAgICAgcmV0dXJuIEdMX1RFWFRVUkVfQ1VCRV9NQVA7Ci0gICAgICBjYXNlIEdMX0lO
VF9TQU1QTEVSX0NVQkU6Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6
Ci0gICAgICAgIHJldHVybiBHTF9URVhUVVJFX0NVQkVfTUFQOwotICAgICAgY2FzZSBHTF9TQU1Q
TEVSXzJEX0FSUkFZOgotICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRF9BUlJBWToKLSAgICAg
IGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk6Ci0gICAgICBjYXNlIEdMX1NB
TVBMRVJfMkRfQVJSQVlfU0hBRE9XOgotICAgICAgICByZXR1cm4gR0xfVEVYVFVSRV8yRF9BUlJB
WTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIEdM
X1RFWFRVUkVfMkQ7Ci19Ci0KLXZvaWQgR2V0RGVmYXVsdElucHV0TGF5b3V0RnJvbVNoYWRlcihj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmc2hhZGVyQXR0cmlidXRlcywgZ2w6OlZl
cnRleEZvcm1hdCBpbnB1dExheW91dFtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSkKLXsKLSAgICBz
aXplX3QgbGF5b3V0SW5kZXggPSAwOwotICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0g
MDsgYXR0cmlidXRlSW5kZXggPCBzaGFkZXJBdHRyaWJ1dGVzLnNpemUoKTsgYXR0cmlidXRlSW5k
ZXgrKykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChsYXlvdXRJbmRleCA8IGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlMpOwotCi0gICAgICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJnNoYWRlckF0dHIgPSBz
aGFkZXJBdHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XTsKLQogICAgICAgICBpZiAoc2hhZGVyQXR0
ci50eXBlICE9IEdMX05PTkUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEdMZW51bSB0cmFuc3Bv
c2VkVHlwZSA9IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHNoYWRlckF0dHIudHlwZSk7CiAKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHJvd0luZGV4ID0gMDsgc3RhdGljX2Nhc3Q8aW50Pihyb3dJ
bmRleCkgPCBnbDo6VmFyaWFibGVSb3dDb3VudCh0cmFuc3Bvc2VkVHlwZSk7IHJvd0luZGV4Kyss
IGxheW91dEluZGV4KyspCisgICAgICAgICAgICBmb3IgKHNpemVfdCByb3dJbmRleCA9IDA7Cisg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocm93SW5kZXgpIDwgZ2w6OlZhcmlhYmxl
Um93Q291bnQodHJhbnNwb3NlZFR5cGUpOyArK3Jvd0luZGV4KQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXQgKmRlZmF1bHRGb3JtYXQgPSAmaW5wdXRMYXlv
dXRbbGF5b3V0SW5kZXhdOworICAgICAgICAgICAgICAgIEdMZW51bSBjb21wb25lbnRUeXBlID0g
Z2w6OlZhcmlhYmxlQ29tcG9uZW50VHlwZSh0cmFuc3Bvc2VkVHlwZSk7CisgICAgICAgICAgICAg
ICAgR0x1aW50IGNvbXBvbmVudHMgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGdsOjpWYXJpYWJs
ZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKSk7CisgICAgICAgICAgICAgICAgYm9vbCBwdXJl
SW50ID0gKGNvbXBvbmVudFR5cGUgIT0gR0xfRkxPQVQpOworICAgICAgICAgICAgICAgIGdsOjpW
ZXJ0ZXhGb3JtYXRUeXBlIGRlZmF1bHRUeXBlID0KKyAgICAgICAgICAgICAgICAgICAgZ2w6Okdl
dFZlcnRleEZvcm1hdFR5cGUoY29tcG9uZW50VHlwZSwgR0xfRkFMU0UsIGNvbXBvbmVudHMsIHB1
cmVJbnQpOwogCi0gICAgICAgICAgICAgICAgZGVmYXVsdEZvcm1hdC0+bVR5cGUgPSBnbDo6VmFy
aWFibGVDb21wb25lbnRUeXBlKHRyYW5zcG9zZWRUeXBlKTsKLSAgICAgICAgICAgICAgICBkZWZh
dWx0Rm9ybWF0LT5tTm9ybWFsaXplZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGRlZmF1bHRG
b3JtYXQtPm1QdXJlSW50ZWdlciA9IChkZWZhdWx0Rm9ybWF0LT5tVHlwZSAhPSBHTF9GTE9BVCk7
IC8vIG5vdGU6IGlucHV0cyBjYW4gbm90IGJlIGJvb2wKLSAgICAgICAgICAgICAgICBkZWZhdWx0
Rm9ybWF0LT5tQ29tcG9uZW50cyA9IGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRU
eXBlKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0TGF5b3V0LnB1c2hfYmFjayhkZWZhdWx0VHlw
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gZGVmYXVs
dExheW91dDsKIH0KIAotc3RkOjp2ZWN0b3I8R0xlbnVtPiBHZXREZWZhdWx0T3V0cHV0TGF5b3V0
RnJvbVNoYWRlcihjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlPiAm
c2hhZGVyT3V0cHV0VmFycykKK3N0ZDo6dmVjdG9yPEdMZW51bT4gR2V0RGVmYXVsdE91dHB1dExh
eW91dEZyb21TaGFkZXIoCisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGl4ZWxTaGFkZXJPdXRwdXRW
YXJpYWJsZT4gJnNoYWRlck91dHB1dFZhcnMpCiB7CiAgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBk
ZWZhdWx0UGl4ZWxPdXRwdXQ7CiAKICAgICBpZiAoIXNoYWRlck91dHB1dFZhcnMuZW1wdHkoKSkK
ICAgICB7Ci0gICAgICAgIGRlZmF1bHRQaXhlbE91dHB1dC5wdXNoX2JhY2soR0xfQ09MT1JfQVRU
QUNITUVOVDAgKyBzaGFkZXJPdXRwdXRWYXJzWzBdLm91dHB1dEluZGV4KTsKKyAgICAgICAgZGVm
YXVsdFBpeGVsT3V0cHV0LnB1c2hfYmFjayhHTF9DT0xPUl9BVFRBQ0hNRU5UMCArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihz
aGFkZXJPdXRwdXRWYXJzWzBdLm91dHB1dEluZGV4KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRl
ZmF1bHRQaXhlbE91dHB1dDsKQEAgLTEwNCw2MSArNzksNDczIEBACiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdHJ1Y3QgQXR0cmlidXRlU29ydGVyCisvLyB0cnVlIGlmIHZhcnlpbmcgeCBoYXMg
YSBoaWdoZXIgcHJpb3JpdHkgaW4gcGFja2luZyB0aGFuIHkKK2Jvb2wgQ29tcGFyZVBhY2tlZFZh
cnlpbmcoY29uc3QgUGFja2VkVmFyeWluZyAmeCwgY29uc3QgUGFja2VkVmFyeWluZyAmeSkKIHsK
LSAgICBBdHRyaWJ1dGVTb3J0ZXIoY29uc3QgUHJvZ3JhbUltcGw6OlNlbWFudGljSW5kZXhBcnJh
eSAmc2VtYW50aWNJbmRpY2VzKQotICAgICAgICA6IG9yaWdpbmFsSW5kaWNlcygmc2VtYW50aWNJ
bmRpY2VzKQorICAgIHJldHVybiBnbDo6Q29tcGFyZVNoYWRlclZhcigqeC52YXJ5aW5nLCAqeS52
YXJ5aW5nKTsKK30KKworc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4gTWVyZ2VWYXJ5aW5ncyhj
b25zdCBnbDo6U2hhZGVyICZ2ZXJ0ZXhTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgJmZyYWdtZW50U2hhZGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gJnRmVmFyeWluZ3MpCit7CisgICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4g
cGFja2VkVmFyeWluZ3M7CisKKyAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZvdXRwdXQgOiB2
ZXJ0ZXhTaGFkZXIuZ2V0VmFyeWluZ3MoKSkKICAgICB7CisgICAgICAgIGJvb2wgcGFja2VkID0g
ZmFsc2U7CisKKyAgICAgICAgLy8gQnVpbHQtaW4gdmFyeWluZ3Mgb2JleSBzcGVjaWFsIHJ1bGVz
CisgICAgICAgIGlmIChvdXRwdXQuaXNCdWlsdEluKCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAm
aW5wdXQgOiBmcmFnbWVudFNoYWRlci5nZXRWYXJ5aW5ncygpKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAob3V0cHV0Lm5hbWUgPT0gaW5wdXQubmFtZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAob3V0cHV0LmlzU3RydWN0KCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIW91dHB1dC5pc0FycmF5KCkpOworICAgICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmZpZWxkIDogb3V0cHV0LmZpZWxkcykKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFmaWVsZC5pc1N0
cnVjdCgpICYmICFmaWVsZC5pc0FycmF5KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFj
a2VkVmFyeWluZ3MucHVzaF9iYWNrKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2tl
ZFZhcnlpbmcoZmllbGQsIGlucHV0LmludGVycG9sYXRpb24sIGlucHV0Lm5hbWUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWNrZWRWYXJ5aW5ncy5w
dXNoX2JhY2soUGFja2VkVmFyeWluZyhpbnB1dCwgaW5wdXQuaW50ZXJwb2xhdGlvbikpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYWNrZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gS2Vl
cCBUcmFuc2Zvcm0gRkIgdmFyeWluZ3MgaW4gdGhlIG1lcmdlZCBsaXN0IGFsd2F5cy4KKyAgICAg
ICAgaWYgKCFwYWNrZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoY29uc3Qgc3RkOjpz
dHJpbmcgJnRmVmFyeWluZyA6IHRmVmFyeWluZ3MpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKHRmVmFyeWluZyA9PSBvdXRwdXQubmFtZSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayBmb3IgdmFyeWluZyBzdHJ1
Y3RzIGlzIHVuZGVyc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgICAgICAvLyBTZWUgS2hyb25v
cyBidWcgOTg1Ni4KKyAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJl
IG91dCBob3cgdG8gYmUgc3BlYy1jb21wbGlhbnQgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFvdXRwdXQuaXNTdHJ1Y3QoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFja2VkVmFyeWluZ3MucHVzaF9iYWNrKFBhY2tlZFZhcnlpbmcob3V0
cHV0LCBvdXRwdXQuaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFj
a2VkVmFyeWluZ3MuYmFjaygpLnZlcnRleE9ubHkgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IoKShpbnQgYSwg
aW50IGIpCisgICAgc3RkOjpzb3J0KHBhY2tlZFZhcnlpbmdzLmJlZ2luKCksIHBhY2tlZFZhcnlp
bmdzLmVuZCgpLCBDb21wYXJlUGFja2VkVmFyeWluZyk7CisKKyAgICByZXR1cm4gcGFja2VkVmFy
eWluZ3M7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgordm9pZCBHZXRVbmlmb3JtQmxv
Y2tJbmZvKGNvbnN0IHN0ZDo6dmVjdG9yPFZhclQ+ICZmaWVsZHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBzaDo6QmxvY2tMYXlvdXRFbmNvZGVyICplbmNvZGVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaW5Sb3dNYWpvckxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1hcDxzdGQ6OnN0cmluZywgc2g6OkJsb2NrTWVtYmVySW5mbz4gKmJsb2NrSW5mb091dCkK
K3sKKyAgICBmb3IgKGNvbnN0IFZhclQgJmZpZWxkIDogZmllbGRzKQogICAgIHsKLSAgICAgICAg
aW50IGluZGV4QSA9ICgqb3JpZ2luYWxJbmRpY2VzKVthXTsKLSAgICAgICAgaW50IGluZGV4QiA9
ICgqb3JpZ2luYWxJbmRpY2VzKVtiXTsKKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZpZWxk
TmFtZSA9IChwcmVmaXguZW1wdHkoKSA/IGZpZWxkLm5hbWUgOiBwcmVmaXggKyAiLiIgKyBmaWVs
ZC5uYW1lKTsKIAotICAgICAgICBpZiAoaW5kZXhBID09IC0xKSByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIGlmIChpbmRleEIgPT0gLTEpIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gKGluZGV4
QSA8IGluZGV4Qik7CisgICAgICAgIGlmIChmaWVsZC5pc1N0cnVjdCgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBib29sIHJvd01ham9yTGF5b3V0ID0gKGluUm93TWFqb3JMYXlvdXQgfHwgSXNS
b3dNYWpvckxheW91dChmaWVsZCkpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBh
cnJheUVsZW1lbnQgPSAwOyBhcnJheUVsZW1lbnQgPCBmaWVsZC5lbGVtZW50Q291bnQoKTsgYXJy
YXlFbGVtZW50KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW50
ZXJBZ2dyZWdhdGVUeXBlKCk7CisKKyAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB1
bmlmb3JtRWxlbWVudE5hbWUgPQorICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgKyAoZmll
bGQuaXNBcnJheSgpID8gQXJyYXlTdHJpbmcoYXJyYXlFbGVtZW50KSA6ICIiKTsKKyAgICAgICAg
ICAgICAgICBHZXRVbmlmb3JtQmxvY2tJbmZvKGZpZWxkLmZpZWxkcywgdW5pZm9ybUVsZW1lbnRO
YW1lLCBlbmNvZGVyLCByb3dNYWpvckxheW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJsb2NrSW5mb091dCk7CisKKyAgICAgICAgICAgICAgICBlbmNvZGVyLT5leGl0
QWdncmVnYXRlVHlwZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgYm9vbCBpc1Jvd01ham9yTWF0cml4ID0gKGdsOjpJc01h
dHJpeFR5cGUoZmllbGQudHlwZSkgJiYgaW5Sb3dNYWpvckxheW91dCk7CisgICAgICAgICAgICAo
KmJsb2NrSW5mb091dClbZmllbGROYW1lXSA9CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlVHlwZShmaWVsZC50eXBlLCBmaWVsZC5hcnJheVNpemUsIGlzUm93TWFqb3JNYXRyaXgpOwor
ICAgICAgICB9CiAgICAgfQorfQogCi0gICAgY29uc3QgUHJvZ3JhbUltcGw6OlNlbWFudGljSW5k
ZXhBcnJheSAqb3JpZ2luYWxJbmRpY2VzOwotfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3Rh
dGljIGlubGluZSB2b2lkIFNldElmRGlydHkoVCAqZGVzdCwgY29uc3QgVCAmc291cmNlLCBib29s
ICpkaXJ0eUZsYWcpCit7CisgICAgQVNTRVJUKGRlc3QgIT0gTlVMTCk7CisgICAgQVNTRVJUKGRp
cnR5RmxhZyAhPSBOVUxMKTsKIAorICAgICpkaXJ0eUZsYWcgPSAqZGlydHlGbGFnIHx8IChtZW1j
bXAoZGVzdCwgJnNvdXJjZSwgc2l6ZW9mKFQpKSAhPSAwKTsKKyAgICAqZGVzdCAgICAgID0gc291
cmNlOwogfQogCi1Qcm9ncmFtRDNEOjpWZXJ0ZXhFeGVjdXRhYmxlOjpWZXJ0ZXhFeGVjdXRhYmxl
KGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgaW5wdXRMYXlvdXRbXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIHNpZ25hdHVyZVtdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVj
dXRhYmxlRDNEICpzaGFkZXJFeGVjdXRhYmxlKQotICAgIDogbVNoYWRlckV4ZWN1dGFibGUoc2hh
ZGVyRXhlY3V0YWJsZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorYm9vbCBUcmFuc3Bvc2VNYXRy
aXgoVCAqdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0V2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICBpbnQgdGFyZ2V0SGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgaW50IHNyY1dpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgaW50IHNyY0hlaWdodCkKIHsKLSAgICBmb3IgKHNpemVf
dCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUzsgYXR0cmlidXRlSW5kZXgrKykKKyAgICBib29sIGRpcnR5ID0gZmFsc2U7CisgICAgaW50
IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdldEhlaWdodCwgc3JjV2lkdGgpOworICAgIGludCBj
b3B5SGVpZ2h0ID0gc3RkOjptaW4odGFyZ2V0V2lkdGgsIHNyY0hlaWdodCk7CisKKyAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IGNvcHlXaWR0aDsgeCsrKQogICAgIHsKLSAgICAgICAgbUlucHV0c1th
dHRyaWJ1dGVJbmRleF0gPSBpbnB1dExheW91dFthdHRyaWJ1dGVJbmRleF07Ci0gICAgICAgIG1T
aWduYXR1cmVbYXR0cmlidXRlSW5kZXhdID0gc2lnbmF0dXJlW2F0dHJpYnV0ZUluZGV4XTsKKyAg
ICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHggKiB0YXJnZXRXaWR0aCArIHkpLCBzdGF0
aWNfY2FzdDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSksCisgICAgICAgICAgICAgICAgICAg
ICAgICZkaXJ0eSk7CisgICAgICAgIH0KICAgICB9CisgICAgLy8gY2xlYXIgdW5maWxsZWQgcmln
aHQgc2lkZQorICAgIGZvciAoaW50IHkgPSAwOyB5IDwgY29weVdpZHRoOyB5KyspCisgICAgewor
ICAgICAgICBmb3IgKGludCB4ID0gY29weUhlaWdodDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCisg
ICAgICAgIHsKKyAgICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0
aCArIHgpLCBzdGF0aWNfY2FzdDxUPigwKSwgJmRpcnR5KTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAvLyBjbGVhciB1bmZpbGxlZCBib3R0b20uCisgICAgZm9yIChpbnQgeSA9IGNvcHlXaWR0aDsg
eSA8IHRhcmdldEhlaWdodDsgeSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCB0YXJnZXRXaWR0aDsgeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBTZXRJZkRpcnR5KHRh
cmdldCArICh5ICogdGFyZ2V0V2lkdGggKyB4KSwgc3RhdGljX2Nhc3Q8VD4oMCksICZkaXJ0eSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZGlydHk7CiB9CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorYm9vbCBFeHBhbmRNYXRyaXgoVCAqdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0V2lk
dGgsCisgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0SGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgaW50IHNyY1dpZHRoLAorICAgICAgICAgICAgICAgICAgaW50IHNyY0hlaWdodCkKK3sKKyAg
ICBib29sIGRpcnR5ID0gZmFsc2U7CisgICAgaW50IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdl
dFdpZHRoLCBzcmNXaWR0aCk7CisgICAgaW50IGNvcHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRI
ZWlnaHQsIHNyY0hlaWdodCk7CisKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGNvcHlIZWlnaHQ7
IHkrKykKKyAgICB7CisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgY29weVdpZHRoOyB4Kysp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRX
aWR0aCArIHgpLCBzdGF0aWNfY2FzdDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSksCisgICAg
ICAgICAgICAgICAgICAgICAgICZkaXJ0eSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gY2xl
YXIgdW5maWxsZWQgcmlnaHQgc2lkZQorICAgIGZvciAoaW50IHkgPSAwOyB5IDwgY29weUhlaWdo
dDsgeSsrKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgeCA9IGNvcHlXaWR0aDsgeCA8IHRhcmdl
dFdpZHRoOyB4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsg
KHkgKiB0YXJnZXRXaWR0aCArIHgpLCBzdGF0aWNfY2FzdDxUPigwKSwgJmRpcnR5KTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAvLyBjbGVhciB1bmZpbGxlZCBib3R0b20uCisgICAgZm9yIChpbnQg
eSA9IGNvcHlIZWlnaHQ7IHkgPCB0YXJnZXRIZWlnaHQ7IHkrKykKKyAgICB7CisgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgdGFyZ2V0V2lkdGg7IHgrKykKKyAgICAgICAgeworICAgICAgICAg
ICAgU2V0SWZEaXJ0eSh0YXJnZXQgKyAoeSAqIHRhcmdldFdpZHRoICsgeCksIHN0YXRpY19jYXN0
PFQ+KDApLCAmZGlydHkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGRpcnR5Owor
fQorCitnbDo6UHJpbWl0aXZlVHlwZSBHZXRHZW9tZXRyeVNoYWRlclR5cGVGcm9tRHJhd01vZGUo
R0xlbnVtIGRyYXdNb2RlKQoreworICAgIHN3aXRjaCAoZHJhd01vZGUpCisgICAgeworICAgICAg
ICAvLyBVc2VzIHRoZSBwb2ludCBzcHJpdGUgZ2VvbWV0cnkgc2hhZGVyLgorICAgICAgICBjYXNl
IEdMX1BPSU5UUzoKKyAgICAgICAgICAgIHJldHVybiBnbDo6UFJJTUlUSVZFX1BPSU5UUzsKKwor
ICAgICAgICAvLyBBbGwgbGluZSBkcmF3aW5nIHVzZXMgdGhlIHNhbWUgZ2VvbWV0cnkgc2hhZGVy
LgorICAgICAgICBjYXNlIEdMX0xJTkVTOgorICAgICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6Cisg
ICAgICAgIGNhc2UgR0xfTElORV9MT09QOgorICAgICAgICAgICAgcmV0dXJuIGdsOjpQUklNSVRJ
VkVfTElORVM7CisKKyAgICAgICAgLy8gVGhlIHRyaWFuZ2xlIGZhbiBwcmltaXRpdmUgaXMgZW11
bGF0ZWQgd2l0aCBzdHJpcHMgaW4gRDNEMTEuCisgICAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOgor
ICAgICAgICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjoKKyAgICAgICAgICAgIHJldHVybiBnbDo6UFJJ
TUlUSVZFX1RSSUFOR0xFUzsKKworICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHRyaWFuZ2xl
IHN0cmlwcy4KKyAgICAgICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgICAgIHJl
dHVybiBnbDo6UFJJTUlUSVZFX1RSSUFOR0xFX1NUUklQOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpQUklNSVRJ
VkVfVFlQRV9NQVg7CisgICAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8v
IEQzRFVuaWZvcm0gSW1wbGVtZW50YXRpb24KKworRDNEVW5pZm9ybTo6RDNEVW5pZm9ybShHTGVu
dW0gdHlwZUluLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFt
ZUluLAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplSW4sCisg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVmYXVsdEJsb2NrKQorICAgIDogdHlwZSh0eXBl
SW4pLAorICAgICAgbmFtZShuYW1lSW4pLAorICAgICAgYXJyYXlTaXplKGFycmF5U2l6ZUluKSwK
KyAgICAgIGRhdGEobnVsbHB0ciksCisgICAgICBkaXJ0eSh0cnVlKSwKKyAgICAgIHZzUmVnaXN0
ZXJJbmRleChHTF9JTlZBTElEX0lOREVYKSwKKyAgICAgIHBzUmVnaXN0ZXJJbmRleChHTF9JTlZB
TElEX0lOREVYKSwKKyAgICAgIHJlZ2lzdGVyQ291bnQoMCksCisgICAgICByZWdpc3RlckVsZW1l
bnQoMCkKK3sKKyAgICAvLyBXZSB1c2UgZGF0YSBzdG9yYWdlIGZvciBkZWZhdWx0IGJsb2NrIHVu
aWZvcm1zIHRvIGNhY2hlIHZhbHVlcyB0aGF0IGFyZSBzZW50IHRvIEQzRCBkdXJpbmcKKyAgICAv
LyByZW5kZXJpbmcKKyAgICAvLyBVbmlmb3JtIGJsb2Nrcy9idWZmZXJzIGFyZSB0cmVhdGVkIHNl
cGFyYXRlbHkgYnkgdGhlIFJlbmRlcmVyIChFUzMgcGF0aCBvbmx5KQorICAgIGlmIChkZWZhdWx0
QmxvY2spCisgICAgeworICAgICAgICBzaXplX3QgYnl0ZXMgPSBnbDo6VmFyaWFibGVJbnRlcm5h
bFNpemUodHlwZSkgKiBlbGVtZW50Q291bnQoKTsKKyAgICAgICAgZGF0YSA9IG5ldyB1aW50OF90
W2J5dGVzXTsKKyAgICAgICAgbWVtc2V0KGRhdGEsIDAsIGJ5dGVzKTsKKworICAgICAgICAvLyBU
T0RPKGptYWRpbGwpOiBpcyB0aGlzIGNvcnJlY3Qgd2l0aCBub24tc3F1YXJlIG1hdHJpY2VzPwor
ICAgICAgICByZWdpc3RlckNvdW50ID0gZ2w6OlZhcmlhYmxlUm93Q291bnQodHlwZSkgKiBlbGVt
ZW50Q291bnQoKTsKKyAgICB9Cit9CisKK0QzRFVuaWZvcm06On5EM0RVbmlmb3JtKCkKK3sKKyAg
ICBTYWZlRGVsZXRlQXJyYXkoZGF0YSk7Cit9CisKK2Jvb2wgRDNEVW5pZm9ybTo6aXNTYW1wbGVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2w6OklzU2FtcGxlclR5cGUodHlwZSk7Cit9CisKK2Jv
b2wgRDNEVW5pZm9ybTo6aXNSZWZlcmVuY2VkQnlWZXJ0ZXhTaGFkZXIoKSBjb25zdAoreworICAg
IHJldHVybiB2c1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsKK30KKworYm9vbCBE
M0RVbmlmb3JtOjppc1JlZmVyZW5jZWRCeUZyYWdtZW50U2hhZGVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gcHNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7Cit9CisKKy8vIEQzRFZh
cnlpbmcgSW1wbGVtZW50YXRpb24KKworRDNEVmFyeWluZzo6RDNEVmFyeWluZygpIDogc2VtYW50
aWNJbmRleCgwKSwgY29tcG9uZW50Q291bnQoMCksIG91dHB1dFNsb3QoMCkKK3sKK30KKworRDNE
VmFyeWluZzo6RDNEVmFyeWluZyhjb25zdCBzdGQ6OnN0cmluZyAmc2VtYW50aWNOYW1lSW4sCisg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4SW4sCisgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRDb3VudEluLAorICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3V0cHV0U2xvdEluKQorICAgIDogc2VtYW50
aWNOYW1lKHNlbWFudGljTmFtZUluKSwKKyAgICAgIHNlbWFudGljSW5kZXgoc2VtYW50aWNJbmRl
eEluKSwKKyAgICAgIGNvbXBvbmVudENvdW50KGNvbXBvbmVudENvdW50SW4pLAorICAgICAgb3V0
cHV0U2xvdChvdXRwdXRTbG90SW4pCit7Cit9CisKKy8vIFByb2dyYW1EM0RNZXRhZGF0YSBJbXBs
ZW1lbnRhdGlvbgorCitQcm9ncmFtRDNETWV0YWRhdGE6OlByb2dyYW1EM0RNZXRhZGF0YShpbnQg
cmVuZGVyZXJNYWpvclNoYWRlck1vZGVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlck1vZGVsU3VmZml4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VzSW5zdGFuY2VkUG9pbnRTcHJp
dGVFbXVsYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHVzZXNWaWV3U2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXIpCisgICAgOiBtUmVu
ZGVyZXJNYWpvclNoYWRlck1vZGVsKHJlbmRlcmVyTWFqb3JTaGFkZXJNb2RlbCksCisgICAgICBt
U2hhZGVyTW9kZWxTdWZmaXgoc2hhZGVyTW9kZWxTdWZmaXgpLAorICAgICAgbVVzZXNJbnN0YW5j
ZWRQb2ludFNwcml0ZUVtdWxhdGlvbih1c2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24p
LAorICAgICAgbVVzZXNWaWV3U2NhbGUodXNlc1ZpZXdTY2FsZSksCisgICAgICBtVmVydGV4U2hh
ZGVyKHZlcnRleFNoYWRlciksCisgICAgICBtRnJhZ21lbnRTaGFkZXIoZnJhZ21lbnRTaGFkZXIp
Cit7Cit9CisKK2ludCBQcm9ncmFtRDNETWV0YWRhdGE6OmdldFJlbmRlcmVyTWFqb3JTaGFkZXJN
b2RlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZW5kZXJlck1ham9yU2hhZGVyTW9kZWw7Cit9
CisKK2Jvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2VzQnJvYWRjYXN0KGNvbnN0IGdsOjpEYXRh
ICZkYXRhKSBjb25zdAoreworICAgIHJldHVybiAobUZyYWdtZW50U2hhZGVyLT51c2VzRnJhZ0Nv
bG9yKCkgJiYgZGF0YS5jbGllbnRWZXJzaW9uIDwgMyk7Cit9CisKK2Jvb2wgUHJvZ3JhbUQzRE1l
dGFkYXRhOjp1c2VzRnJhZ0RlcHRoKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZwcm9ncmFtRGF0
YSkgY29uc3QKK3sKKyAgICByZXR1cm4gbUZyYWdtZW50U2hhZGVyLT51c2VzRnJhZ0RlcHRoKCk7
Cit9CisKK2Jvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2VzUG9pbnRDb29yZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1GcmFnbWVudFNoYWRlci0+dXNlc1BvaW50Q29vcmQoKTsKK30KKworYm9v
bCBQcm9ncmFtRDNETWV0YWRhdGE6OnVzZXNGcmFnQ29vcmQoKSBjb25zdAoreworICAgIHJldHVy
biBtRnJhZ21lbnRTaGFkZXItPnVzZXNGcmFnQ29vcmQoKTsKK30KKworYm9vbCBQcm9ncmFtRDNE
TWV0YWRhdGE6OnVzZXNQb2ludFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtVmVydGV4U2hh
ZGVyLT51c2VzUG9pbnRTaXplKCk7Cit9CisKK2Jvb2wgUHJvZ3JhbUQzRE1ldGFkYXRhOjp1c2Vz
SW5zZXJ0ZWRQb2ludENvb3JkVmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiAhdXNlc1BvaW50
U2l6ZSgpICYmIHVzZXNQb2ludENvb3JkKCkgJiYgbVJlbmRlcmVyTWFqb3JTaGFkZXJNb2RlbCA+
PSA0OworfQorCitib29sIFByb2dyYW1EM0RNZXRhZGF0YTo6dXNlc1ZpZXdTY2FsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1Vc2VzVmlld1NjYWxlOworfQorCitib29sIFByb2dyYW1EM0RNZXRh
ZGF0YTo6YWRkc1BvaW50Q29vcmRUb1ZlcnRleFNoYWRlcigpIGNvbnN0Cit7CisgICAgLy8gSW5z
dGFuY2VkIFBvaW50U3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlcyB0aGF0IGdsX1BvaW50Q29vcmQg
aXMgcHJlc2VudCBpbiB0aGUgdmVydGV4IHNoYWRlcgorICAgIC8vIFZTX09VVFBVVCBzdHJ1Y3R1
cmUgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgZ2VuZXJhdGVkIFBTX0lOUFVUIG9m
IHRoZSBwaXhlbCBzaGFkZXIuCisgICAgLy8gR2VvbWV0cnlTaGFkZXIgUG9pbnRTcHJpdGUgZW11
bGF0aW9uIGRvZXMgbm90IHJlcXVpcmUgdGhpcyBhZGRpdGlvbmFsIGVudHJ5IGJlY2F1c2UgdGhl
CisgICAgLy8gR1NfT1VUUFVUIG9mIHRoZSBHZW9tZXRyeSBzaGFkZXIgY29udGFpbnMgdGhlIHBv
aW50Q29vcmQgdmFsdWUgYW5kIGFscmVhZHkgbWF0Y2hlcyB0aGUKKyAgICAvLyBQU19JTlBVVCBv
ZiB0aGUgZ2VuZXJhdGVkIHBpeGVsIHNoYWRlci4gVGhlIEdlb21ldHJ5IFNoYWRlciBwb2ludCBz
cHJpdGUgaW1wbGVtZW50YXRpb24gbmVlZHMKKyAgICAvLyBnbF9Qb2ludFNpemUgdG8gYmUgaW4g
VlNfT1VUUFVUIGFuZCBHU19JTlBVVC4gSW5zdGFuY2VkIHBvaW50IHNwcml0ZXMgZG9lc24ndCBu
ZWVkCisgICAgLy8gZ2xfUG9pbnRTaXplIGluIFZTX09VVFBVVC4KKyAgICByZXR1cm4gKG1Vc2Vz
SW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24gJiYgdXNlc1BvaW50Q29vcmQoKSkgfHwKKyAg
ICAgICAgICAgdXNlc0luc2VydGVkUG9pbnRDb29yZFZhbHVlKCk7Cit9CisKK2Jvb2wgUHJvZ3Jh
bUQzRE1ldGFkYXRhOjp1c2VzVHJhbnNmb3JtRmVlZGJhY2tHTFBvc2l0aW9uKCkgY29uc3QKK3sK
KyAgICAvLyBnbF9Qb3NpdGlvbiBvbmx5IG5lZWRzIHRvIGJlIG91dHB1dHRlZCBmcm9tIHRoZSB2
ZXJ0ZXggc2hhZGVyIGlmIHRyYW5zZm9ybSBmZWVkYmFjayBpcworICAgIC8vIGFjdGl2ZS4gVGhp
cyBpc24ndCBzdXBwb3J0ZWQgb24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMsIHNvIHdlIGRvbid0
IG91dHB1dCBnbF9Qb3NpdGlvbiBmcm9tCisgICAgLy8gdGhlIHZlcnRleCBzaGFkZXIgaW4gdGhp
cyBjYXNlLiBUaGlzIHNhdmVzIHVzIDEgb3V0cHV0IHZlY3Rvci4KKyAgICByZXR1cm4gIShtUmVu
ZGVyZXJNYWpvclNoYWRlck1vZGVsID49IDQgJiYgbVNoYWRlck1vZGVsU3VmZml4ICE9ICIiKTsK
K30KKworYm9vbCBQcm9ncmFtRDNETWV0YWRhdGE6OnVzZXNTeXN0ZW1WYWx1ZVBvaW50U2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtVXNlc0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9u
ICYmIHVzZXNQb2ludFNpemUoKTsKK30KKworYm9vbCBQcm9ncmFtRDNETWV0YWRhdGE6OnVzZXNN
dWx0aXBsZUZyYWdtZW50T3V0cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1GcmFnbWVudFNoYWRl
ci0+dXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0cygpOworfQorCitHTGludCBQcm9ncmFtRDNETWV0
YWRhdGE6OmdldE1ham9yU2hhZGVyVmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1WZXJ0
ZXhTaGFkZXItPmdldERhdGEoKS5nZXRTaGFkZXJWZXJzaW9uKCk7Cit9CisKK2NvbnN0IFNoYWRl
ckQzRCAqUHJvZ3JhbUQzRE1ldGFkYXRhOjpnZXRGcmFnbWVudFNoYWRlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1GcmFnbWVudFNoYWRlcjsKK30KKworLy8gUHJvZ3JhbUQzRCBJbXBsZW1lbnRh
dGlvbgorCitQcm9ncmFtRDNEOjpWZXJ0ZXhFeGVjdXRhYmxlOjpWZXJ0ZXhFeGVjdXRhYmxlKGNv
bnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpZ25hdHVyZSAmc2lnbmF0dXJlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRh
YmxlRDNEICpzaGFkZXJFeGVjdXRhYmxlKQorICAgIDogbUlucHV0cyhpbnB1dExheW91dCksIG1T
aWduYXR1cmUoc2lnbmF0dXJlKSwgbVNoYWRlckV4ZWN1dGFibGUoc2hhZGVyRXhlY3V0YWJsZSkK
K3sKK30KKwogUHJvZ3JhbUQzRDo6VmVydGV4RXhlY3V0YWJsZTo6flZlcnRleEV4ZWN1dGFibGUo
KQogewogICAgIFNhZmVEZWxldGUobVNoYWRlckV4ZWN1dGFibGUpOwogfQogCi1ib29sIFByb2dy
YW1EM0Q6OlZlcnRleEV4ZWN1dGFibGU6Om1hdGNoZXNTaWduYXR1cmUoY29uc3QgR0xlbnVtIHNp
Z25hdHVyZVtdKSBjb25zdAorLy8gc3RhdGljCitQcm9ncmFtRDNEOjpWZXJ0ZXhFeGVjdXRhYmxl
OjpITFNMQXR0cmliVHlwZSBQcm9ncmFtRDNEOjpWZXJ0ZXhFeGVjdXRhYmxlOjpHZXRBdHRyaWJU
eXBlKAorICAgIEdMZW51bSB0eXBlKQogewotICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4
ID0gMDsgYXR0cmlidXRlSW5kZXggPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBhdHRyaWJ1dGVJ
bmRleCsrKQorICAgIHN3aXRjaCAodHlwZSkKICAgICB7Ci0gICAgICAgIGlmIChtU2lnbmF0dXJl
W2F0dHJpYnV0ZUluZGV4XSAhPSBzaWduYXR1cmVbYXR0cmlidXRlSW5kZXhdKQotICAgICAgICB7
CisgICAgICAgIGNhc2UgR0xfSU5UOgorICAgICAgICAgICAgcmV0dXJuIEhMU0xBdHRyaWJUeXBl
OjpTSUdORURfSU5UOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAg
IHJldHVybiBITFNMQXR0cmliVHlwZTo6VU5TSUdORURfSU5UOworICAgICAgICBjYXNlIEdMX1NJ
R05FRF9OT1JNQUxJWkVEOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ6Cisg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICByZXR1cm4gSExTTEF0dHJpYlR5cGU6
OkZMT0FUOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBITFNMQXR0cmliVHlwZTo6RkxPQVQ7CisgICAgfQorfQorCisvLyBz
dGF0aWMKK3ZvaWQgUHJvZ3JhbUQzRDo6VmVydGV4RXhlY3V0YWJsZTo6Z2V0U2lnbmF0dXJlKFJl
bmRlcmVyRDNEICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUgKnNpZ25h
dHVyZU91dCkKK3sKKyAgICBzaWduYXR1cmVPdXQtPmFzc2lnbihpbnB1dExheW91dC5zaXplKCks
IEhMU0xBdHRyaWJUeXBlOjpGTE9BVCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgaW5wdXRMYXlvdXQuc2l6ZSgpOyArK2luZGV4KQorICAgIHsKKyAgICAgICAgZ2w6OlZl
cnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSA9IGlucHV0TGF5b3V0W2luZGV4XTsKKyAg
ICAgICAgaWYgKHZlcnRleEZvcm1hdFR5cGUgPT0gZ2w6OlZFUlRFWF9GT1JNQVRfSU5WQUxJRCkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFZlcnRleENvbnZlcnNpb25UeXBlIGNv
bnZlcnNpb25UeXBlID0gcmVuZGVyZXItPmdldFZlcnRleENvbnZlcnNpb25UeXBlKHZlcnRleEZv
cm1hdFR5cGUpOworICAgICAgICBpZiAoKGNvbnZlcnNpb25UeXBlICYgVkVSVEVYX0NPTlZFUlRf
R1BVKSA9PSAwKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgR0xlbnVtIGNvbXBv
bmVudFR5cGUgPSByZW5kZXJlci0+Z2V0VmVydGV4Q29tcG9uZW50VHlwZSh2ZXJ0ZXhGb3JtYXRU
eXBlKTsKKyAgICAgICAgKCpzaWduYXR1cmVPdXQpW2luZGV4XSA9IEdldEF0dHJpYlR5cGUoY29t
cG9uZW50VHlwZSk7CisgICAgfQorfQorCitib29sIFByb2dyYW1EM0Q6OlZlcnRleEV4ZWN1dGFi
bGU6Om1hdGNoZXNTaWduYXR1cmUoY29uc3QgU2lnbmF0dXJlICZzaWduYXR1cmUpIGNvbnN0Cit7
CisgICAgc2l6ZV90IGxpbWl0ID0gc3RkOjptYXgobVNpZ25hdHVyZS5zaXplKCksIHNpZ25hdHVy
ZS5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBsaW1pdDsgKytp
bmRleCkKKyAgICB7CisgICAgICAgIC8vIHRyZWF0IHVuZGVmaW5lZCBpbmRleGVzIGFzIEZMT0FU
CisgICAgICAgIGF1dG8gYSA9IGluZGV4IDwgc2lnbmF0dXJlLnNpemUoKSA/IHNpZ25hdHVyZVtp
bmRleF0gOiBITFNMQXR0cmliVHlwZTo6RkxPQVQ7CisgICAgICAgIGF1dG8gYiA9IGluZGV4IDwg
bVNpZ25hdHVyZS5zaXplKCkgPyBtU2lnbmF0dXJlW2luZGV4XSA6IEhMU0xBdHRyaWJUeXBlOjpG
TE9BVDsKKyAgICAgICAgaWYgKGEgIT0gYikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1Qcm9ncmFtRDNEOjpQaXhl
bEV4ZWN1dGFibGU6OlBpeGVsRXhlY3V0YWJsZShjb25zdCBzdGQ6OnZlY3RvcjxHTGVudW0+ICZv
dXRwdXRTaWduYXR1cmUsIFNoYWRlckV4ZWN1dGFibGVEM0QgKnNoYWRlckV4ZWN1dGFibGUpCi0g
ICAgOiBtT3V0cHV0U2lnbmF0dXJlKG91dHB1dFNpZ25hdHVyZSksCi0gICAgICBtU2hhZGVyRXhl
Y3V0YWJsZShzaGFkZXJFeGVjdXRhYmxlKQorUHJvZ3JhbUQzRDo6UGl4ZWxFeGVjdXRhYmxlOjpQ
aXhlbEV4ZWN1dGFibGUoY29uc3Qgc3RkOjp2ZWN0b3I8R0xlbnVtPiAmb3V0cHV0U2lnbmF0dXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhl
Y3V0YWJsZUQzRCAqc2hhZGVyRXhlY3V0YWJsZSkKKyAgICA6IG1PdXRwdXRTaWduYXR1cmUob3V0
cHV0U2lnbmF0dXJlKSwgbVNoYWRlckV4ZWN1dGFibGUoc2hhZGVyRXhlY3V0YWJsZSkKIHsKIH0K
IApAQCAtMTczLDE5ICs1NjAsMTggQEAKIAogdW5zaWduZWQgaW50IFByb2dyYW1EM0Q6Om1DdXJy
ZW50U2VyaWFsID0gMTsKIAotUHJvZ3JhbUQzRDo6UHJvZ3JhbUQzRChSZW5kZXJlckQzRCAqcmVu
ZGVyZXIpCi0gICAgOiBQcm9ncmFtSW1wbCgpLAorUHJvZ3JhbUQzRDo6UHJvZ3JhbUQzRChjb25z
dCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQorICAgIDog
UHJvZ3JhbUltcGwoZGF0YSksCiAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbUR5
bmFtaWNITFNMKE5VTEwpLAotICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZShOVUxMKSwKKyAgICAg
IG1HZW9tZXRyeUV4ZWN1dGFibGVzKGdsOjpQUklNSVRJVkVfVFlQRV9NQVgsIG51bGxwdHIpLAog
ICAgICAgbVVzZXNQb2ludFNpemUoZmFsc2UpLAorICAgICAgbVVzZXNGbGF0SW50ZXJwb2xhdGlv
bihmYWxzZSksCiAgICAgICBtVmVydGV4VW5pZm9ybVN0b3JhZ2UoTlVMTCksCiAgICAgICBtRnJh
Z21lbnRVbmlmb3JtU3RvcmFnZShOVUxMKSwKICAgICAgIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdl
KDApLAogICAgICAgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSgwKSwKICAgICAgIG1EaXJ0eVNhbXBs
ZXJNYXBwaW5nKHRydWUpLAotICAgICAgbVRleHR1cmVVbml0VHlwZXNDYWNoZShyZW5kZXJlci0+
Z2V0UmVuZGVyZXJDYXBzKCkubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyksCi0gICAgICBt
U2hhZGVyVmVyc2lvbigxMDApLAogICAgICAgbVNlcmlhbChpc3N1ZVNlcmlhbCgpKQogewogICAg
IG1EeW5hbWljSExTTCA9IG5ldyBEeW5hbWljSExTTChyZW5kZXJlcik7CkBAIC0yMDIsOCArNTg4
LDEzIEBACiAgICAgcmV0dXJuIG1Vc2VzUG9pbnRTaXplICYmIG1SZW5kZXJlci0+Z2V0TWFqb3JT
aGFkZXJNb2RlbCgpID49IDQ7CiB9CiAKLWJvb2wgUHJvZ3JhbUQzRDo6dXNlc0dlb21ldHJ5U2hh
ZGVyKCkgY29uc3QKK2Jvb2wgUHJvZ3JhbUQzRDo6dXNlc0dlb21ldHJ5U2hhZGVyKEdMZW51bSBk
cmF3TW9kZSkgY29uc3QKIHsKKyAgICBpZiAoZHJhd01vZGUgIT0gR0xfUE9JTlRTKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1Vc2VzRmxhdEludGVycG9sYXRpb247CisgICAgfQorCiAgICAgcmV0
dXJuIHVzZXNQb2ludFNwcml0ZUVtdWxhdGlvbigpICYmICF1c2VzSW5zdGFuY2VkUG9pbnRTcHJp
dGVFbXVsYXRpb24oKTsKIH0KIApAQCAtMjEyLDMwICs2MDMsMzQgQEAKICAgICByZXR1cm4gbVJl
bmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9u
OwogfQogCi1HTGludCBQcm9ncmFtRDNEOjpnZXRTYW1wbGVyTWFwcGluZyhnbDo6U2FtcGxlclR5
cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCwgY29uc3QgZ2w6OkNhcHMgJmNhcHMp
IGNvbnN0CitHTGludCBQcm9ncmFtRDNEOjpnZXRTYW1wbGVyTWFwcGluZyhnbDo6U2FtcGxlclR5
cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBzYW1wbGVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Q2FwcyAmY2FwcykgY29uc3QKIHsKICAgICBHTGludCBsb2dpY2FsVGV4dHVyZVVuaXQg
PSAtMTsKIAogICAgIHN3aXRjaCAodHlwZSkKICAgICB7Ci0gICAgICBjYXNlIGdsOjpTQU1QTEVS
X1BJWEVMOgotICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgY2Fwcy5tYXhUZXh0dXJlSW1h
Z2VVbml0cyk7Ci0gICAgICAgIGlmIChzYW1wbGVySW5kZXggPCBtU2FtcGxlcnNQUy5zaXplKCkg
JiYgbVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3RpdmUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRleF0ubG9naWNh
bFRleHR1cmVVbml0OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBnbDo6
U0FNUExFUl9WRVJURVg6Ci0gICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBjYXBzLm1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLSAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IG1TYW1w
bGVyc1ZTLnNpemUoKSAmJiBtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzVlNbc2FtcGxl
ckluZGV4XS5sb2dpY2FsVGV4dHVyZVVuaXQ7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICBjYXNlIGdsOjpTQU1QTEVSX1BJ
WEVMOgorICAgICAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRleCA8IGNhcHMubWF4VGV4dHVyZUlt
YWdlVW5pdHMpOworICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IG1TYW1wbGVyc1BTLnNp
emUoKSAmJiBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBsb2dpY2FsVGV4dHVyZVVuaXQgPSBtU2FtcGxlcnNQU1tzYW1wbGVy
SW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIGdsOjpTQU1QTEVSX1ZFUlRFWDoKKyAgICAgICAgICAgIEFTU0VS
VChzYW1wbGVySW5kZXggPCBjYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICAg
ICAgICAgIGlmIChzYW1wbGVySW5kZXggPCBtU2FtcGxlcnNWUy5zaXplKCkgJiYgbVNhbXBsZXJz
VlNbc2FtcGxlckluZGV4XS5hY3RpdmUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
bG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4
dHVyZVVuaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCi0gICAgaWYgKGxvZ2lj
YWxUZXh0dXJlVW5pdCA+PSAwICYmIGxvZ2ljYWxUZXh0dXJlVW5pdCA8IHN0YXRpY19jYXN0PEdM
aW50PihjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpKQorICAgIGlmIChsb2dpY2Fs
VGV4dHVyZVVuaXQgPj0gMCAmJgorICAgICAgICBsb2dpY2FsVGV4dHVyZVVuaXQgPCBzdGF0aWNf
Y2FzdDxHTGludD4oY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBsb2dpY2FsVGV4dHVyZVVuaXQ7CiAgICAgfQpAQCAtMjQ5LDMxICs2NDQs
MzIgQEAKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBnbDo6U0FNUExF
Ul9QSVhFTDoKLSAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRleCA8IG1TYW1wbGVyc1BTLnNpemUo
KSk7Ci0gICAgICAgIEFTU0VSVChtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7Ci0g
ICAgICAgIHJldHVybiBtU2FtcGxlcnNQU1tzYW1wbGVySW5kZXhdLnRleHR1cmVUeXBlOwotICAg
ICAgY2FzZSBnbDo6U0FNUExFUl9WRVJURVg6Ci0gICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXgg
PCBtU2FtcGxlcnNWUy5zaXplKCkpOwotICAgICAgICBBU1NFUlQobVNhbXBsZXJzVlNbc2FtcGxl
ckluZGV4XS5hY3RpdmUpOwotICAgICAgICByZXR1cm4gbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4
XS50ZXh0dXJlVHlwZTsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNh
c2UgZ2w6OlNBTVBMRVJfUElYRUw6CisgICAgICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwg
bVNhbXBsZXJzUFMuc2l6ZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtU2FtcGxlcnNQU1tzYW1w
bGVySW5kZXhdLmFjdGl2ZSk7CisgICAgICAgICAgICByZXR1cm4gbVNhbXBsZXJzUFNbc2FtcGxl
ckluZGV4XS50ZXh0dXJlVHlwZTsKKyAgICAgICAgY2FzZSBnbDo6U0FNUExFUl9WRVJURVg6Cisg
ICAgICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgbVNhbXBsZXJzVlMuc2l6ZSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChtU2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7CisgICAg
ICAgICAgICByZXR1cm4gbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlwZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIEdMX1RFWFRVUkVfMkQ7CiB9CiAKLUdMaW50IFByb2dyYW1EM0Q6OmdldFVzZWRTYW1w
bGVyUmFuZ2UoZ2w6OlNhbXBsZXJUeXBlIHR5cGUpIGNvbnN0CitHTHVpbnQgUHJvZ3JhbUQzRDo6
Z2V0VXNlZFNhbXBsZXJSYW5nZShnbDo6U2FtcGxlclR5cGUgdHlwZSkgY29uc3QKIHsKICAgICBz
d2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBnbDo6U0FNUExFUl9QSVhFTDoKLSAgICAg
ICAgcmV0dXJuIG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2U7Ci0gICAgICBjYXNlIGdsOjpTQU1QTEVS
X1ZFUlRFWDoKLSAgICAgICAgcmV0dXJuIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlOwotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGNhc2UgZ2w6OlNBTVBMRVJfUElYRUw6CisgICAgICAgICAgICByZXR1cm4gbVVzZWRQaXhl
bFNhbXBsZXJSYW5nZTsKKyAgICAgICAgY2FzZSBnbDo6U0FNUExFUl9WRVJURVg6CisgICAgICAg
ICAgICByZXR1cm4gbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDB1OwogICAgIH0K
IH0KIApAQCAtMjg3LDE1NyArNjgzLDc3IEBACiAgICAgbURpcnR5U2FtcGxlck1hcHBpbmcgPSBm
YWxzZTsKIAogICAgIC8vIFJldHJpZXZlIHNhbXBsZXIgdW5pZm9ybSB2YWx1ZXMKLSAgICBmb3Ig
KHNpemVfdCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBtVW5pZm9ybXMuc2l6ZSgp
OyB1bmlmb3JtSW5kZXgrKykKKyAgICBmb3IgKGNvbnN0IEQzRFVuaWZvcm0gKmQzZFVuaWZvcm0g
OiBtRDNEVW5pZm9ybXMpCiAgICAgewotICAgICAgICBnbDo6TGlua2VkVW5pZm9ybSAqdGFyZ2V0
VW5pZm9ybSA9IG1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOworICAgICAgICBpZiAoIWQzZFVuaWZv
cm0tPmRpcnR5KQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHRhcmdldFVu
aWZvcm0tPmRpcnR5KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZ2w6OklzU2FtcGxlclR5
cGUodGFyZ2V0VW5pZm9ybS0+dHlwZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW50IGNvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7Ci0gICAgICAgICAgICAg
ICAgR0xpbnQgKCp2KVs0XSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQoKilbNF0+KHRhcmdldFVu
aWZvcm0tPmRhdGEpOworICAgICAgICBpZiAoIWQzZFVuaWZvcm0tPmlzU2FtcGxlcigpKQorICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VW5pZm9ybS0+
aXNSZWZlcmVuY2VkQnlGcmFnbWVudFNoYWRlcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0SW5kZXggPSB0YXJnZXRVbmlmb3JtLT5w
c1JlZ2lzdGVySW5kZXg7CisgICAgICAgIGludCBjb3VudCA9IGQzZFVuaWZvcm0tPmVsZW1lbnRD
b3VudCgpOworICAgICAgICBjb25zdCBHTGludCgqdilbNF0gPSByZWludGVycHJldF9jYXN0PGNv
bnN0IEdMaW50KCopWzRdPihkM2RVbmlmb3JtLT5kYXRhKTsKIAotICAgICAgICAgICAgICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBmaXJz
dEluZGV4ICsgaTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8
IG1TYW1wbGVyc1BTLnNpemUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobVNhbXBsZXJzUFNbc2FtcGxlckluZGV4XS5hY3Rp
dmUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1BTW3NhbXBsZXJJbmRl
eF0ubG9naWNhbFRleHR1cmVVbml0ID0gdltpXVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgIGlmICh0YXJnZXRVbmlmb3JtLT5pc1JlZmVyZW5jZWRCeVZlcnRleFNoYWRlcigpKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0
SW5kZXggPSB0YXJnZXRVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXg7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0g
Zmlyc3RJbmRleCArIGk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYW1wbGVySW5k
ZXggPCBtU2FtcGxlcnNWUy5zaXplKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRleF0u
YWN0aXZlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNWU1tzYW1wbGVy
SW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgUHJvZ3JhbUQzRDo6dmFsaWRhdGVT
YW1wbGVycyhnbDo6SW5mb0xvZyAqaW5mb0xvZywgY29uc3QgZ2w6OkNhcHMgJmNhcHMpCi17Ci0g
ICAgLy8gU2tpcCBjYWNoZSBpZiB3ZSdyZSB1c2luZyBhbiBpbmZvbG9nLCBzbyB3ZSBnZXQgdGhl
IGZ1bGwgZXJyb3IuCi0gICAgLy8gQWxzbyBza2lwIHRoZSBjYWNoZSBpZiB0aGUgc2FtcGxlIG1h
cHBpbmcgaGFzIGNoYW5nZWQsIG9yIGlmIHdlIGhhdmVuJ3QgZXZlciB2YWxpZGF0ZWQuCi0gICAg
aWYgKCFtRGlydHlTYW1wbGVyTWFwcGluZyAmJiBpbmZvTG9nID09IG51bGxwdHIgJiYgbUNhY2hl
ZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQudmFsaWQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
Q2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jlc3VsdC52YWx1ZSgpOwotICAgIH0KLQotICAgIC8vIGlm
IGFueSB0d28gYWN0aXZlIHNhbXBsZXJzIGluIGEgcHJvZ3JhbSBhcmUgb2YgZGlmZmVyZW50IHR5
cGVzLCBidXQgcmVmZXIgdG8gdGhlIHNhbWUKLSAgICAvLyB0ZXh0dXJlIGltYWdlIHVuaXQsIGFu
ZCB0aGlzIGlzIHRoZSBjdXJyZW50IHByb2dyYW0sIHRoZW4gVmFsaWRhdGVQcm9ncmFtIHdpbGwg
ZmFpbCwgYW5kCi0gICAgLy8gRHJhd0FycmF5cyBhbmQgRHJhd0VsZW1lbnRzIHdpbGwgaXNzdWUg
dGhlIElOVkFMSURfT1BFUkFUSU9OIGVycm9yLgotICAgIHVwZGF0ZVNhbXBsZXJNYXBwaW5nKCk7
Ci0KLSAgICBzdGQ6OmZpbGwobVRleHR1cmVVbml0VHlwZXNDYWNoZS5iZWdpbigpLCBtVGV4dHVy
ZVVuaXRUeXBlc0NhY2hlLmVuZCgpLCBHTF9OT05FKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgbVVzZWRQaXhlbFNhbXBsZXJSYW5nZTsgKytpKQotICAgIHsKLSAgICAgICAg
aWYgKG1TYW1wbGVyc1BTW2ldLmFjdGl2ZSkKKyAgICAgICAgaWYgKGQzZFVuaWZvcm0tPmlzUmVm
ZXJlbmNlZEJ5RnJhZ21lbnRTaGFkZXIoKSkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHVuaXQgPSBtU2FtcGxlcnNQU1tpXS5sb2dpY2FsVGV4dHVyZVVuaXQ7CisgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZmlyc3RJbmRleCA9IGQzZFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRl
eDsKIAotICAgICAgICAgICAgaWYgKHVuaXQgPj0gY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFn
ZVVuaXRzKQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChpbmZvTG9nKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb0xvZy0+YXBwZW5kKCJTYW1wbGVyIHVuaWZvcm0g
KCVkKSBleGNlZWRzIEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkiLCB1
bml0LCBjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwotICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gZmlyc3RJbmRl
eCArIGk7CiAKLSAgICAgICAgICAgICAgICBtQ2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jlc3VsdCA9
IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKG1UZXh0dXJlVW5pdFR5cGVzQ2FjaGVbdW5pdF0gIT0gR0xfTk9ORSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobVNhbXBsZXJzUFNbaV0udGV4dHVy
ZVR5cGUgIT0gbVRleHR1cmVVbml0VHlwZXNDYWNoZVt1bml0XSkKKyAgICAgICAgICAgICAgICBp
ZiAoc2FtcGxlckluZGV4IDwgbVNhbXBsZXJzUFMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm9Mb2cpCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2ctPmFwcGVuZCgiU2FtcGxlcnMgb2YgY29u
ZmxpY3RpbmcgdHlwZXMgcmVmZXIgdG8gdGhlIHNhbWUgdGV4dHVyZSBpbWFnZSB1bml0ICglZCku
IiwgdW5pdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBt
Q2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jlc3VsdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtU2FtcGxlcnNQU1tz
YW1wbGVySW5kZXhdLmFjdGl2ZSk7CisgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1BTW3Nh
bXBsZXJJbmRleF0ubG9naWNhbFRleHR1cmVVbml0ID0gdltpXVswXTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbVRleHR1cmVVbml0VHlwZXNDYWNoZVt1bml0XSA9IG1TYW1wbGVyc1BTW2ld
LnRleHR1cmVUeXBlOwotICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQogCi0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZTsgKytpKQot
ICAgIHsKLSAgICAgICAgaWYgKG1TYW1wbGVyc1ZTW2ldLmFjdGl2ZSkKKyAgICAgICAgaWYgKGQz
ZFVuaWZvcm0tPmlzUmVmZXJlbmNlZEJ5VmVydGV4U2hhZGVyKCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGludCB1bml0ID0gbVNhbXBsZXJzVlNbaV0ubG9naWNhbFRleHR1cmVV
bml0OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0SW5kZXggPSBkM2RVbmlmb3JtLT52
c1JlZ2lzdGVySW5kZXg7CiAKLSAgICAgICAgICAgIGlmICh1bml0ID49IGNhcHMubWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cykKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291
bnQ7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5mb0xvZykKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9Mb2ctPmFwcGVuZCgiU2Ft
cGxlciB1bmlmb3JtICglZCkgZXhjZWVkcyBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9V
TklUUyAoJWQpIiwgdW5pdCwgY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRl
eCA9IGZpcnN0SW5kZXggKyBpOwogCi0gICAgICAgICAgICAgICAgbUNhY2hlZFZhbGlkYXRlU2Ft
cGxlcnNSZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtVGV4dHVyZVVuaXRUeXBlc0NhY2hlW3VuaXRd
ICE9IEdMX05PTkUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG1TYW1wbGVy
c1ZTW2ldLnRleHR1cmVUeXBlICE9IG1UZXh0dXJlVW5pdFR5cGVzQ2FjaGVbdW5pdF0pCisgICAg
ICAgICAgICAgICAgaWYgKHNhbXBsZXJJbmRleCA8IG1TYW1wbGVyc1ZTLnNpemUoKSkKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvTG9nKQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmZvTG9nLT5hcHBlbmQoIlNh
bXBsZXJzIG9mIGNvbmZsaWN0aW5nIHR5cGVzIHJlZmVyIHRvIHRoZSBzYW1lIHRleHR1cmUgaW1h
Z2UgdW5pdCAoJWQpLiIsIHVuaXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgbUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5hY3RpdmUpOworICAgICAgICAgICAgICAgICAgICBt
U2FtcGxlcnNWU1tzYW1wbGVySW5kZXhdLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1UZXh0dXJlVW5pdFR5cGVzQ2FjaGVbdW5pdF0gPSBt
U2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KLQotICAgIG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0ID0gdHJ1ZTsKLSAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2FkKGdsOjpJbmZvTG9nICZp
bmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKIHsKKyAgICByZXNldCgpOwor
CisgICAgRGV2aWNlSWRlbnRpZmllciBiaW5hcnlEZXZpY2VJZGVudGlmaWVyID0gezB9OworICAg
IHN0cmVhbS0+cmVhZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPigmYmlu
YXJ5RGV2aWNlSWRlbnRpZmllciksCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKERldmlj
ZUlkZW50aWZpZXIpKTsKKworICAgIERldmljZUlkZW50aWZpZXIgaWRlbnRpZmllciA9IG1SZW5k
ZXJlci0+Z2V0QWRhcHRlcklkZW50aWZpZXIoKTsKKyAgICBpZiAobWVtY21wKCZpZGVudGlmaWVy
LCAmYmluYXJ5RGV2aWNlSWRlbnRpZmllciwgc2l6ZW9mKERldmljZUlkZW50aWZpZXIpKSAhPSAw
KQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8PCAiSW52YWxpZCBwcm9ncmFtIGJpbmFyeSwgZGV2
aWNlIGNvbmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQuIjsKKyAgICAgICAgcmV0dXJuIExpbmtSZXN1
bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgIH0KKwogICAgIGludCBjb21w
aWxlRmxhZ3MgPSBzdHJlYW0tPnJlYWRJbnQ8aW50PigpOwogICAgIGlmIChjb21waWxlRmxhZ3Mg
IT0gQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwpCiAgICAgewotICAgICAgICBpbmZv
TG9nLmFwcGVuZCgiTWlzbWF0Y2hlZCBjb21waWxhdGlvbiBmbGFncy4iKTsKKyAgICAgICAgaW5m
b0xvZyA8PCAiTWlzbWF0Y2hlZCBjb21waWxhdGlvbiBmbGFncy4iOwogICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQogCi0gICAg
c3RyZWFtLT5yZWFkSW50KCZtU2hhZGVyVmVyc2lvbik7CisgICAgZm9yIChpbnQgJmluZGV4IDog
bUF0dHJpYkxvY2F0aW9uVG9EM0RTZW1hbnRpYykKKyAgICB7CisgICAgICAgIHN0cmVhbS0+cmVh
ZEludCgmaW5kZXgpOworICAgIH0KIAogICAgIGNvbnN0IHVuc2lnbmVkIGludCBwc1NhbXBsZXJD
b3VudCA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBwc1NhbXBsZXJDb3VudDsgKytpKQpAQCAtNDY0LDEwNSArNzgwLDY5
IEBACiAgICAgY29uc3QgdW5zaWduZWQgaW50IHVuaWZvcm1Db3VudCA9IHN0cmVhbS0+cmVhZElu
dDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAgaWYgKHN0cmVhbS0+ZXJyb3IoKSkKICAgICB7Ci0gICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCJJbnZhbGlkIHByb2dyYW0gYmluYXJ5LiIpOworICAgICAgICBp
bmZvTG9nIDw8ICJJbnZhbGlkIHByb2dyYW0gYmluYXJ5LiI7CiAgICAgICAgIHJldHVybiBMaW5r
UmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKICAgICB9CiAKLSAgICBtVW5p
Zm9ybXMucmVzaXplKHVuaWZvcm1Db3VudCk7CisgICAgY29uc3QgYXV0byAmbGlua2VkVW5pZm9y
bXMgPSBtRGF0YS5nZXRVbmlmb3JtcygpOworICAgIEFTU0VSVChtRDNEVW5pZm9ybXMuZW1wdHko
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4
IDwgdW5pZm9ybUNvdW50OyB1bmlmb3JtSW5kZXgrKykKICAgICB7Ci0gICAgICAgIEdMZW51bSB0
eXBlID0gc3RyZWFtLT5yZWFkSW50PEdMZW51bT4oKTsKLSAgICAgICAgR0xlbnVtIHByZWNpc2lv
biA9IHN0cmVhbS0+cmVhZEludDxHTGVudW0+KCk7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUg
PSBzdHJlYW0tPnJlYWRTdHJpbmcoKTsKLSAgICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZSA9
IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7Ci0gICAgICAgIGludCBibG9ja0luZGV4
ID0gc3RyZWFtLT5yZWFkSW50PGludD4oKTsKKyAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZv
cm0gJmxpbmtlZFVuaWZvcm0gPSBsaW5rZWRVbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwogCi0gICAg
ICAgIGludCBvZmZzZXQgPSBzdHJlYW0tPnJlYWRJbnQ8aW50PigpOwotICAgICAgICBpbnQgYXJy
YXlTdHJpZGUgPSBzdHJlYW0tPnJlYWRJbnQ8aW50PigpOwotICAgICAgICBpbnQgbWF0cml4U3Ry
aWRlID0gc3RyZWFtLT5yZWFkSW50PGludD4oKTsKLSAgICAgICAgYm9vbCBpc1Jvd01ham9yTWF0
cml4ID0gc3RyZWFtLT5yZWFkQm9vbCgpOworICAgICAgICBEM0RVbmlmb3JtICpkM2RVbmlmb3Jt
ID0KKyAgICAgICAgICAgIG5ldyBEM0RVbmlmb3JtKGxpbmtlZFVuaWZvcm0udHlwZSwgbGlua2Vk
VW5pZm9ybS5uYW1lLCBsaW5rZWRVbmlmb3JtLmFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmtlZFVuaWZvcm0uaXNJbkRlZmF1bHRCbG9jaygpKTsKKyAgICAgICAgc3Ry
ZWFtLT5yZWFkSW50KCZkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJl
YW0tPnJlYWRJbnQoJmQzZFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVh
bS0+cmVhZEludCgmZDNkVW5pZm9ybS0+cmVnaXN0ZXJDb3VudCk7CisgICAgICAgIHN0cmVhbS0+
cmVhZEludCgmZDNkVW5pZm9ybS0+cmVnaXN0ZXJFbGVtZW50KTsKIAotICAgICAgICBjb25zdCBz
aDo6QmxvY2tNZW1iZXJJbmZvIGJsb2NrSW5mbyhvZmZzZXQsIGFycmF5U3RyaWRlLCBtYXRyaXhT
dHJpZGUsIGlzUm93TWFqb3JNYXRyaXgpOwotCi0gICAgICAgIGdsOjpMaW5rZWRVbmlmb3JtICp1
bmlmb3JtID0gbmV3IGdsOjpMaW5rZWRVbmlmb3JtKHR5cGUsIHByZWNpc2lvbiwgbmFtZSwgYXJy
YXlTaXplLCBibG9ja0luZGV4LCBibG9ja0luZm8pOwotCi0gICAgICAgIHN0cmVhbS0+cmVhZElu
dCgmdW5pZm9ybS0+cHNSZWdpc3RlckluZGV4KTsKLSAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZ1
bmlmb3JtLT52c1JlZ2lzdGVySW5kZXgpOwotICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJnVuaWZv
cm0tPnJlZ2lzdGVyQ291bnQpOwotICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJnVuaWZvcm0tPnJl
Z2lzdGVyRWxlbWVudCk7Ci0KLSAgICAgICAgbVVuaWZvcm1zW3VuaWZvcm1JbmRleF0gPSB1bmlm
b3JtOworICAgICAgICBtRDNEVW5pZm9ybXMucHVzaF9iYWNrKGQzZFVuaWZvcm0pOwogICAgIH0K
IAotICAgIGNvbnN0IHVuc2lnbmVkIGludCB1bmlmb3JtSW5kZXhDb3VudCA9IHN0cmVhbS0+cmVh
ZEludDx1bnNpZ25lZCBpbnQ+KCk7CisgICAgY29uc3QgdW5zaWduZWQgaW50IGJsb2NrQ291bnQg
PSBzdHJlYW0tPnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOwogICAgIGlmIChzdHJlYW0tPmVycm9y
KCkpCiAgICAgewotICAgICAgICBpbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBwcm9ncmFtIGJpbmFy
eS4iKTsKKyAgICAgICAgaW5mb0xvZyA8PCAiSW52YWxpZCBwcm9ncmFtIGJpbmFyeS4iOwogICAg
ICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAg
ICAgfQogCi0gICAgbVVuaWZvcm1JbmRleC5yZXNpemUodW5pZm9ybUluZGV4Q291bnQpOwotICAg
IGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleEluZGV4ID0gMDsgdW5pZm9ybUluZGV4SW5k
ZXggPCB1bmlmb3JtSW5kZXhDb3VudDsgdW5pZm9ybUluZGV4SW5kZXgrKykKKyAgICBBU1NFUlQo
bUQzRFVuaWZvcm1CbG9ja3MuZW1wdHkoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tJ
bmRleCA9IDA7IGJsb2NrSW5kZXggPCBibG9ja0NvdW50OyArK2Jsb2NrSW5kZXgpCiAgICAgewot
ICAgICAgICBzdHJlYW0tPnJlYWRTdHJpbmcoJm1Vbmlmb3JtSW5kZXhbdW5pZm9ybUluZGV4SW5k
ZXhdLm5hbWUpOwotICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJm1Vbmlmb3JtSW5kZXhbdW5pZm9y
bUluZGV4SW5kZXhdLmVsZW1lbnQpOwotICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJm1Vbmlmb3Jt
SW5kZXhbdW5pZm9ybUluZGV4SW5kZXhdLmluZGV4KTsKKyAgICAgICAgRDNEVW5pZm9ybUJsb2Nr
IHVuaWZvcm1CbG9jazsKKyAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZ1bmlmb3JtQmxvY2sucHNS
ZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZ1bmlmb3JtQmxvY2sudnNS
ZWdpc3RlckluZGV4KTsKKyAgICAgICAgbUQzRFVuaWZvcm1CbG9ja3MucHVzaF9iYWNrKHVuaWZv
cm1CbG9jayk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0NvdW50ID0g
c3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKLSAgICBpZiAoc3RyZWFtLT5lcnJvcigp
KQorICAgIGNvbnN0IHVuc2lnbmVkIGludCBzdHJlYW1PdXRWYXJ5aW5nQ291bnQgPSBzdHJlYW0t
PnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOworICAgIG1TdHJlYW1PdXRWYXJ5aW5ncy5yZXNpemUo
c3RyZWFtT3V0VmFyeWluZ0NvdW50KTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJ5aW5nSW5k
ZXggPSAwOyB2YXJ5aW5nSW5kZXggPCBzdHJlYW1PdXRWYXJ5aW5nQ291bnQ7ICsrdmFyeWluZ0lu
ZGV4KQogICAgIHsKLSAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkludmFsaWQgcHJvZ3JhbSBiaW5h
cnkuIik7Ci0gICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpKTsKLSAgICB9CisgICAgICAgIEQzRFZhcnlpbmcgKnZhcnlpbmcgPSAmbVN0cmVhbU91
dFZhcnlpbmdzW3ZhcnlpbmdJbmRleF07CiAKLSAgICBtVW5pZm9ybUJsb2Nrcy5yZXNpemUodW5p
Zm9ybUJsb2NrQ291bnQpOwotICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0luZGV4
ID0gMDsgdW5pZm9ybUJsb2NrSW5kZXggPCB1bmlmb3JtQmxvY2tDb3VudDsgKyt1bmlmb3JtQmxv
Y2tJbmRleCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG5hbWUgPSBzdHJlYW0tPnJlYWRT
dHJpbmcoKTsKLSAgICAgICAgdW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9IHN0cmVhbS0+cmVh
ZEludDx1bnNpZ25lZCBpbnQ+KCk7Ci0gICAgICAgIHVuc2lnbmVkIGludCBkYXRhU2l6ZSA9IHN0
cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7Ci0KLSAgICAgICAgZ2w6OlVuaWZvcm1CbG9j
ayAqdW5pZm9ybUJsb2NrID0gbmV3IGdsOjpVbmlmb3JtQmxvY2sobmFtZSwgZWxlbWVudEluZGV4
LCBkYXRhU2l6ZSk7Ci0KLSAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZ1bmlmb3JtQmxvY2stPnBz
UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgIHN0cmVhbS0+cmVhZEludCgmdW5pZm9ybUJsb2NrLT52
c1JlZ2lzdGVySW5kZXgpOwotCi0gICAgICAgIHVuc2lnbmVkIGludCBudW1NZW1iZXJzID0gc3Ry
ZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKLSAgICAgICAgdW5pZm9ybUJsb2NrLT5tZW1i
ZXJVbmlmb3JtSW5kZXhlcy5yZXNpemUobnVtTWVtYmVycyk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGJsb2NrTWVtYmVySW5kZXggPSAwOyBibG9ja01lbWJlckluZGV4IDwgbnVtTWVtYmVy
czsgYmxvY2tNZW1iZXJJbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJlYW0tPnJl
YWRJbnQoJnVuaWZvcm1CbG9jay0+bWVtYmVyVW5pZm9ybUluZGV4ZXNbYmxvY2tNZW1iZXJJbmRl
eF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgbVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5k
ZXhdID0gdW5pZm9ybUJsb2NrOworICAgICAgICBzdHJlYW0tPnJlYWRTdHJpbmcoJnZhcnlpbmct
PnNlbWFudGljTmFtZSk7CisgICAgICAgIHN0cmVhbS0+cmVhZEludCgmdmFyeWluZy0+c2VtYW50
aWNJbmRleCk7CisgICAgICAgIHN0cmVhbS0+cmVhZEludCgmdmFyeWluZy0+Y29tcG9uZW50Q291
bnQpOworICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJnZhcnlpbmctPm91dHB1dFNsb3QpOwogICAg
IH0KIAotICAgIHN0cmVhbS0+cmVhZEludCgmbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSk7
Ci0gICAgY29uc3QgdW5zaWduZWQgaW50IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50ID0g
c3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKLSAgICBtVHJhbnNmb3JtRmVlZGJhY2tM
aW5rZWRWYXJ5aW5ncy5yZXNpemUodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nQ291bnQpOwotICAg
IGZvciAodW5zaWduZWQgaW50IHZhcnlpbmdJbmRleCA9IDA7IHZhcnlpbmdJbmRleCA8IHRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50OyB2YXJ5aW5nSW5kZXgrKykKLSAgICB7Ci0gICAgICAg
IGdsOjpMaW5rZWRWYXJ5aW5nICZ2YXJ5aW5nID0gbVRyYW5zZm9ybUZlZWRiYWNrTGlua2VkVmFy
eWluZ3NbdmFyeWluZ0luZGV4XTsKLQotICAgICAgICBzdHJlYW0tPnJlYWRTdHJpbmcoJnZhcnlp
bmcubmFtZSk7Ci0gICAgICAgIHN0cmVhbS0+cmVhZEludCgmdmFyeWluZy50eXBlKTsKLSAgICAg
ICAgc3RyZWFtLT5yZWFkSW50KCZ2YXJ5aW5nLnNpemUpOwotICAgICAgICBzdHJlYW0tPnJlYWRT
dHJpbmcoJnZhcnlpbmcuc2VtYW50aWNOYW1lKTsKLSAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZ2
YXJ5aW5nLnNlbWFudGljSW5kZXgpOwotICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJnZhcnlpbmcu
c2VtYW50aWNJbmRleENvdW50KTsKLSAgICB9Ci0KICAgICBzdHJlYW0tPnJlYWRTdHJpbmcoJm1W
ZXJ0ZXhITFNMKTsKLSAgICBzdHJlYW0tPnJlYWRCeXRlcyhyZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPigmbVZlcnRleFdvcmthcm91bmRzKSwgc2l6ZW9mKEQzRENvbXBpbGVyV29ya2Fy
b3VuZHMpKTsKKyAgICBzdHJlYW0tPnJlYWRCeXRlcyhyZWludGVycHJldF9jYXN0PHVuc2lnbmVk
IGNoYXIgKj4oJm1WZXJ0ZXhXb3JrYXJvdW5kcyksCisgICAgICAgICAgICAgICAgICAgICAgc2l6
ZW9mKEQzRENvbXBpbGVyV29ya2Fyb3VuZHMpKTsKICAgICBzdHJlYW0tPnJlYWRTdHJpbmcoJm1Q
aXhlbEhMU0wpOwotICAgIHN0cmVhbS0+cmVhZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KCZtUGl4ZWxXb3JrYXJvdW5kcyksIHNpemVvZihEM0RDb21waWxlcldvcmthcm91
bmRzKSk7CisgICAgc3RyZWFtLT5yZWFkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBj
aGFyICo+KCZtUGl4ZWxXb3JrYXJvdW5kcyksCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KEQzRENvbXBpbGVyV29ya2Fyb3VuZHMpKTsKICAgICBzdHJlYW0tPnJlYWRCb29sKCZtVXNlc0Zy
YWdEZXB0aCk7CiAgICAgc3RyZWFtLT5yZWFkQm9vbCgmbVVzZXNQb2ludFNpemUpOworICAgIHN0
cmVhbS0+cmVhZEJvb2woJm1Vc2VzRmxhdEludGVycG9sYXRpb24pOwogCiAgICAgY29uc3Qgc2l6
ZV90IHBpeGVsU2hhZGVyS2V5U2l6ZSA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7
CiAgICAgbVBpeGVsU2hhZGVyS2V5LnJlc2l6ZShwaXhlbFNoYWRlcktleVNpemUpOwotICAgIGZv
ciAoc2l6ZV90IHBpeGVsU2hhZGVyS2V5SW5kZXggPSAwOyBwaXhlbFNoYWRlcktleUluZGV4IDwg
cGl4ZWxTaGFkZXJLZXlTaXplOyBwaXhlbFNoYWRlcktleUluZGV4KyspCisgICAgZm9yIChzaXpl
X3QgcGl4ZWxTaGFkZXJLZXlJbmRleCA9IDA7IHBpeGVsU2hhZGVyS2V5SW5kZXggPCBwaXhlbFNo
YWRlcktleVNpemU7CisgICAgICAgICBwaXhlbFNoYWRlcktleUluZGV4KyspCiAgICAgewogICAg
ICAgICBzdHJlYW0tPnJlYWRJbnQoJm1QaXhlbFNoYWRlcktleVtwaXhlbFNoYWRlcktleUluZGV4
XS50eXBlKTsKICAgICAgICAgc3RyZWFtLT5yZWFkU3RyaW5nKCZtUGl4ZWxTaGFkZXJLZXlbcGl4
ZWxTaGFkZXJLZXlJbmRleF0ubmFtZSk7CkBAIC01NzAsMzEgKzg1MCwzMCBAQAogICAgICAgICBz
dHJlYW0tPnJlYWRJbnQoJm1QaXhlbFNoYWRlcktleVtwaXhlbFNoYWRlcktleUluZGV4XS5vdXRw
dXRJbmRleCk7CiAgICAgfQogCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciogYmluYXJ5ID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oc3RyZWFtLT5kYXRhKCkpOworICAg
IHN0cmVhbS0+cmVhZFN0cmluZygmbUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUpOwogCisgICAgY29u
c3QgdW5zaWduZWQgY2hhciAqYmluYXJ5ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyICo+KHN0cmVhbS0+ZGF0YSgpKTsKKwogICAgIGNvbnN0IHVuc2lnbmVkIGludCB2ZXJ0
ZXhTaGFkZXJDb3VudCA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgdmVydGV4U2hhZGVySW5kZXggPSAwOyB2ZXJ0ZXhTaGFkZXJJbmRleCA8
IHZlcnRleFNoYWRlckNvdW50OyB2ZXJ0ZXhTaGFkZXJJbmRleCsrKQorICAgIGZvciAodW5zaWdu
ZWQgaW50IHZlcnRleFNoYWRlckluZGV4ID0gMDsgdmVydGV4U2hhZGVySW5kZXggPCB2ZXJ0ZXhT
aGFkZXJDb3VudDsKKyAgICAgICAgIHZlcnRleFNoYWRlckluZGV4KyspCiAgICAgewotICAgICAg
ICBnbDo6VmVydGV4Rm9ybWF0IGlucHV0TGF5b3V0W2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwor
ICAgICAgICBzaXplX3QgaW5wdXRMYXlvdXRTaXplID0gc3RyZWFtLT5yZWFkSW50PHNpemVfdD4o
KTsKKyAgICAgICAgZ2w6OklucHV0TGF5b3V0IGlucHV0TGF5b3V0KGlucHV0TGF5b3V0U2l6ZSwg
Z2w6OlZFUlRFWF9GT1JNQVRfSU5WQUxJRCk7CiAKLSAgICAgICAgZm9yIChzaXplX3QgaW5wdXRJ
bmRleCA9IDA7IGlucHV0SW5kZXggPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpbnB1dEluZGV4
KyspCisgICAgICAgIGZvciAoc2l6ZV90IGlucHV0SW5kZXggPSAwOyBpbnB1dEluZGV4IDwgaW5w
dXRMYXlvdXRTaXplOyBpbnB1dEluZGV4KyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpW
ZXJ0ZXhGb3JtYXQgKnZlcnRleElucHV0ID0gJmlucHV0TGF5b3V0W2lucHV0SW5kZXhdOwotICAg
ICAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZ2ZXJ0ZXhJbnB1dC0+bVR5cGUpOwotICAgICAgICAg
ICAgc3RyZWFtLT5yZWFkSW50KCZ2ZXJ0ZXhJbnB1dC0+bU5vcm1hbGl6ZWQpOwotICAgICAgICAg
ICAgc3RyZWFtLT5yZWFkSW50KCZ2ZXJ0ZXhJbnB1dC0+bUNvbXBvbmVudHMpOwotICAgICAgICAg
ICAgc3RyZWFtLT5yZWFkQm9vbCgmdmVydGV4SW5wdXQtPm1QdXJlSW50ZWdlcik7CisgICAgICAg
ICAgICBpbnB1dExheW91dFtpbnB1dEluZGV4XSA9IHN0cmVhbS0+cmVhZEludDxnbDo6VmVydGV4
Rm9ybWF0VHlwZT4oKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGludCB2ZXJ0ZXhT
aGFkZXJTaXplID0gc3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKKyAgICAgICAgdW5z
aWduZWQgaW50IHZlcnRleFNoYWRlclNpemUgICAgICAgICAgICAgPSBzdHJlYW0tPnJlYWRJbnQ8
dW5zaWduZWQgaW50PigpOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp2ZXJ0ZXhTaGFk
ZXJGdW5jdGlvbiA9IGJpbmFyeSArIHN0cmVhbS0+b2Zmc2V0KCk7CiAKLSAgICAgICAgU2hhZGVy
RXhlY3V0YWJsZUQzRCAqc2hhZGVyRXhlY3V0YWJsZSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJv
ciBlcnJvciA9IG1SZW5kZXJlci0+bG9hZEV4ZWN1dGFibGUodmVydGV4U2hhZGVyRnVuY3Rpb24s
IHZlcnRleFNoYWRlclNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU0hBREVSX1ZFUlRFWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRWYXJ5aW5n
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhZGVy
RXhlY3V0YWJsZSk7CisgICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKnNoYWRlckV4ZWN1dGFi
bGUgPSBudWxscHRyOworCisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+bG9h
ZEV4ZWN1dGFibGUoCisgICAgICAgICAgICB2ZXJ0ZXhTaGFkZXJGdW5jdGlvbiwgdmVydGV4U2hh
ZGVyU2l6ZSwgU0hBREVSX1ZFUlRFWCwgbVN0cmVhbU91dFZhcnlpbmdzLAorICAgICAgICAgICAg
KG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FU
VFJJQlMpLCAmc2hhZGVyRXhlY3V0YWJsZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBlcnJvcik7
CkBAIC02MDIsMTYgKzg4MSwxNyBAQAogCiAgICAgICAgIGlmICghc2hhZGVyRXhlY3V0YWJsZSkK
ICAgICAgICAgewotICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkNvdWxkIG5vdCBjcmVhdGUg
dmVydGV4IHNoYWRlci4iKTsKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBjcmVh
dGUgdmVydGV4IHNoYWRlci4iOwogICAgICAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2Us
IGdsOjpFcnJvcihHTF9OT19FUlJPUikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gZ2VuZXJh
dGVkIGNvbnZlcnRlZCBpbnB1dCBsYXlvdXQKLSAgICAgICAgR0xlbnVtIHNpZ25hdHVyZVtnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXTsKLSAgICAgICAgZ2V0SW5wdXRMYXlvdXRTaWduYXR1cmUoaW5w
dXRMYXlvdXQsIHNpZ25hdHVyZSk7CisgICAgICAgIFZlcnRleEV4ZWN1dGFibGU6OlNpZ25hdHVy
ZSBzaWduYXR1cmU7CisgICAgICAgIFZlcnRleEV4ZWN1dGFibGU6OmdldFNpZ25hdHVyZShtUmVu
ZGVyZXIsIGlucHV0TGF5b3V0LCAmc2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBhZGQgbmV3IGJp
bmFyeQotICAgICAgICBtVmVydGV4RXhlY3V0YWJsZXMucHVzaF9iYWNrKG5ldyBWZXJ0ZXhFeGVj
dXRhYmxlKGlucHV0TGF5b3V0LCBzaWduYXR1cmUsIHNoYWRlckV4ZWN1dGFibGUpKTsKKyAgICAg
ICAgbVZlcnRleEV4ZWN1dGFibGVzLnB1c2hfYmFjaygKKyAgICAgICAgICAgIG5ldyBWZXJ0ZXhF
eGVjdXRhYmxlKGlucHV0TGF5b3V0LCBzaWduYXR1cmUsIHNoYWRlckV4ZWN1dGFibGUpKTsKIAog
ICAgICAgICBzdHJlYW0tPnNraXAodmVydGV4U2hhZGVyU2l6ZSk7CiAgICAgfQpAQCAtNjI2LDEz
ICs5MDYsMTMgQEAKICAgICAgICAgICAgIHN0cmVhbS0+cmVhZEludCgmb3V0cHV0c1tvdXRwdXRJ
bmRleF0pOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3Qgc2l6ZV90IHBpeGVsU2hhZGVyU2l6
ZSA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CisgICAgICAgIGNvbnN0IHNpemVf
dCBwaXhlbFNoYWRlclNpemUgICAgICAgICAgICAgPSBzdHJlYW0tPnJlYWRJbnQ8dW5zaWduZWQg
aW50PigpOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwaXhlbFNoYWRlckZ1bmN0aW9u
ID0gYmluYXJ5ICsgc3RyZWFtLT5vZmZzZXQoKTsKLSAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQz
RCAqc2hhZGVyRXhlY3V0YWJsZSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1S
ZW5kZXJlci0+bG9hZEV4ZWN1dGFibGUocGl4ZWxTaGFkZXJGdW5jdGlvbiwgcGl4ZWxTaGFkZXJT
aXplLCBTSEFERVJfUElYRUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrTGlua2VkVmFyeWluZ3MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1UcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlck1vZGUgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYWRlckV4ZWN1dGFibGUp
OworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpzaGFkZXJFeGVjdXRhYmxlICAgID0gbnVs
bHB0cjsKKworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRh
YmxlKAorICAgICAgICAgICAgcGl4ZWxTaGFkZXJGdW5jdGlvbiwgcGl4ZWxTaGFkZXJTaXplLCBT
SEFERVJfUElYRUwsIG1TdHJlYW1PdXRWYXJ5aW5ncywKKyAgICAgICAgICAgIChtRGF0YS5nZXRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwgJnNo
YWRlckV4ZWN1dGFibGUpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZXJyb3IpOwpAQCAtNjQwLDcg
KzkyMCw3IEBACiAKICAgICAgICAgaWYgKCFzaGFkZXJFeGVjdXRhYmxlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiQ291bGQgbm90IGNyZWF0ZSBwaXhlbCBzaGFkZXIu
Iik7CisgICAgICAgICAgICBpbmZvTG9nIDw8ICJDb3VsZCBub3QgY3JlYXRlIHBpeGVsIHNoYWRl
ci4iOwogICAgICAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9O
T19FUlJPUikpOwogICAgICAgICB9CiAKQEAgLTY1MCw0OSArOTMwLDU1IEBACiAgICAgICAgIHN0
cmVhbS0+c2tpcChwaXhlbFNoYWRlclNpemUpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGludCBn
ZW9tZXRyeVNoYWRlclNpemUgPSBzdHJlYW0tPnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOworICAg
IGZvciAodW5zaWduZWQgaW50IGdlb21ldHJ5RXhlSW5kZXggPSAwOyBnZW9tZXRyeUV4ZUluZGV4
IDwgZ2w6OlBSSU1JVElWRV9UWVBFX01BWDsKKyAgICAgICAgICsrZ2VvbWV0cnlFeGVJbmRleCkK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBnZW9tZXRyeVNoYWRlclNpemUgPSBzdHJlYW0t
PnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOworICAgICAgICBpZiAoZ2VvbWV0cnlTaGFkZXJTaXpl
ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21l
dHJ5RXhlSW5kZXhdID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CiAKLSAgICBpZiAoZ2VvbWV0cnlTaGFkZXJTaXplID4gMCkKLSAgICB7CiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIgKmdlb21ldHJ5U2hhZGVyRnVuY3Rpb24gPSBiaW5hcnkgKyBzdHJlYW0t
Pm9mZnNldCgpOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVj
dXRhYmxlKGdlb21ldHJ5U2hhZGVyRnVuY3Rpb24sIGdlb21ldHJ5U2hhZGVyU2l6ZSwgU0hBREVS
X0dFT01FVFJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXJNb2RlID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtR2VvbWV0cnlFeGVjdXRhYmxlKTsKKyAg
ICAgICAgYm9vbCBzcGxpdEF0dHJpYnMgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChtRGF0
YS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJT
KTsKKworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxl
KAorICAgICAgICAgICAgZ2VvbWV0cnlTaGFkZXJGdW5jdGlvbiwgZ2VvbWV0cnlTaGFkZXJTaXpl
LCBTSEFERVJfR0VPTUVUUlksIG1TdHJlYW1PdXRWYXJ5aW5ncywKKyAgICAgICAgICAgIHNwbGl0
QXR0cmlicywgJm1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5RXhlSW5kZXhdKTsKICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIExp
bmtSZXN1bHQoZmFsc2UsIGVycm9yKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghbUdlb21l
dHJ5RXhlY3V0YWJsZSkKKyAgICAgICAgaWYgKCFtR2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRy
eUV4ZUluZGV4XSkKICAgICAgICAgewotICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmQoIkNvdWxk
IG5vdCBjcmVhdGUgZ2VvbWV0cnkgc2hhZGVyLiIpOworICAgICAgICAgICAgaW5mb0xvZyA8PCAi
Q291bGQgbm90IGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIuIjsKICAgICAgICAgICAgIHJldHVybiBM
aW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKICAgICAgICAgfQogICAg
ICAgICBzdHJlYW0tPnNraXAoZ2VvbWV0cnlTaGFkZXJTaXplKTsKICAgICB9CiAKLSAgICBHVUlE
IGJpbmFyeUlkZW50aWZpZXIgPSB7MH07Ci0gICAgc3RyZWFtLT5yZWFkQnl0ZXMocmVpbnRlcnBy
ZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJmJpbmFyeUlkZW50aWZpZXIpLCBzaXplb2YoR1VJRCkp
OwotCi0gICAgR1VJRCBpZGVudGlmaWVyID0gbVJlbmRlcmVyLT5nZXRBZGFwdGVySWRlbnRpZmll
cigpOwotICAgIGlmIChtZW1jbXAoJmlkZW50aWZpZXIsICZiaW5hcnlJZGVudGlmaWVyLCBzaXpl
b2YoR1VJRCkpICE9IDApCi0gICAgewotICAgICAgICBpbmZvTG9nLmFwcGVuZCgiSW52YWxpZCBw
cm9ncmFtIGJpbmFyeS4iKTsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpF
cnJvcihHTF9OT19FUlJPUikpOwotICAgIH0KLQogICAgIGluaXRpYWxpemVVbmlmb3JtU3RvcmFn
ZSgpOwotICAgIGluaXRBdHRyaWJ1dGVzQnlMYXlvdXQoKTsKIAogICAgIHJldHVybiBMaW5rUmVz
dWx0KHRydWUsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOwogfQogCiBnbDo6RXJyb3IgUHJvZ3Jh
bUQzRDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCiB7CisgICAgLy8gT3V0
cHV0IHRoZSBEZXZpY2VJZGVudGlmaWVyIGJlZm9yZSB3ZSBvdXRwdXQgYW55IHNoYWRlciBjb2Rl
CisgICAgLy8gV2hlbiB3ZSBsb2FkIHRoZSBiaW5hcnkgYWdhaW4gbGF0ZXIsIHdlIGNhbiB2YWxp
ZGF0ZSB0aGUgZGV2aWNlIGlkZW50aWZpZXIgYmVmb3JlIHRyeWluZyB0bworICAgIC8vIGNvbXBp
bGUgYW55IEhMU0wKKyAgICBEZXZpY2VJZGVudGlmaWVyIGJpbmFyeUlkZW50aWZpZXIgPSBtUmVu
ZGVyZXItPmdldEFkYXB0ZXJJZGVudGlmaWVyKCk7CisgICAgc3RyZWFtLT53cml0ZUJ5dGVzKHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPigmYmluYXJ5SWRlbnRpZmllciksCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVvZihEZXZpY2VJZGVudGlmaWVyKSk7CisKICAgICBzdHJl
YW0tPndyaXRlSW50KEFOR0xFX0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMKTsKIAotICAgIHN0
cmVhbS0+d3JpdGVJbnQobVNoYWRlclZlcnNpb24pOworICAgIGZvciAoaW50IGQzZFNlbWFudGlj
IDogbUF0dHJpYkxvY2F0aW9uVG9EM0RTZW1hbnRpYykKKyAgICB7CisgICAgICAgIHN0cmVhbS0+
d3JpdGVJbnQoZDNkU2VtYW50aWMpOworICAgIH0KIAogICAgIHN0cmVhbS0+d3JpdGVJbnQobVNh
bXBsZXJzUFMuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1TYW1w
bGVyc1BTLnNpemUoKTsgKytpKQpAQCAtNzEzLDc5ICs5OTksNDYgQEAKICAgICBzdHJlYW0tPndy
aXRlSW50KG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKICAgICBzdHJlYW0tPndyaXRlSW50KG1V
c2VkUGl4ZWxTYW1wbGVyUmFuZ2UpOwogCi0gICAgc3RyZWFtLT53cml0ZUludChtVW5pZm9ybXMu
c2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXgg
PCBtVW5pZm9ybXMuc2l6ZSgpOyArK3VuaWZvcm1JbmRleCkKKyAgICBzdHJlYW0tPndyaXRlSW50
KG1EM0RVbmlmb3Jtcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgRDNEVW5pZm9ybSAqdW5pZm9y
bSA6IG1EM0RVbmlmb3JtcykKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3Jt
ICZ1bmlmb3JtID0gKm1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwotCi0gICAgICAgIHN0cmVhbS0+
d3JpdGVJbnQodW5pZm9ybS50eXBlKTsKLSAgICAgICAgc3RyZWFtLT53cml0ZUludCh1bmlmb3Jt
LnByZWNpc2lvbik7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVTdHJpbmcodW5pZm9ybS5uYW1lKTsK
LSAgICAgICAgc3RyZWFtLT53cml0ZUludCh1bmlmb3JtLmFycmF5U2l6ZSk7Ci0gICAgICAgIHN0
cmVhbS0+d3JpdGVJbnQodW5pZm9ybS5ibG9ja0luZGV4KTsKLQotICAgICAgICBzdHJlYW0tPndy
aXRlSW50KHVuaWZvcm0uYmxvY2tJbmZvLm9mZnNldCk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJ
bnQodW5pZm9ybS5ibG9ja0luZm8uYXJyYXlTdHJpZGUpOwotICAgICAgICBzdHJlYW0tPndyaXRl
SW50KHVuaWZvcm0uYmxvY2tJbmZvLm1hdHJpeFN0cmlkZSk7Ci0gICAgICAgIHN0cmVhbS0+d3Jp
dGVJbnQodW5pZm9ybS5ibG9ja0luZm8uaXNSb3dNYWpvck1hdHJpeCk7Ci0KLSAgICAgICAgc3Ry
ZWFtLT53cml0ZUludCh1bmlmb3JtLnBzUmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgIHN0cmVhbS0+
d3JpdGVJbnQodW5pZm9ybS52c1JlZ2lzdGVySW5kZXgpOwotICAgICAgICBzdHJlYW0tPndyaXRl
SW50KHVuaWZvcm0ucmVnaXN0ZXJDb3VudCk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnQodW5p
Zm9ybS5yZWdpc3RlckVsZW1lbnQpOworICAgICAgICAvLyBUeXBlLCBuYW1lIGFuZCBhcnJheVNp
emUgYXJlIHJlZHVuZGFudCwgc28gYXJlbid0IHN0b3JlZCBpbiB0aGUgYmluYXJ5LgorICAgICAg
ICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0
cmVhbS0+d3JpdGVJbnQodW5pZm9ybS0+dnNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3RyZWFt
LT53cml0ZUludCh1bmlmb3JtLT5yZWdpc3RlckNvdW50KTsKKyAgICAgICAgc3RyZWFtLT53cml0
ZUludCh1bmlmb3JtLT5yZWdpc3RlckVsZW1lbnQpOwogICAgIH0KIAotICAgIHN0cmVhbS0+d3Jp
dGVJbnQobVVuaWZvcm1JbmRleC5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bVVuaWZvcm1JbmRleC5zaXplKCk7ICsraSkKKyAgICBzdHJlYW0tPndyaXRlSW50KG1EM0RVbmlm
b3JtQmxvY2tzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBEM0RVbmlmb3JtQmxvY2sgJnVuaWZv
cm1CbG9jayA6IG1EM0RVbmlmb3JtQmxvY2tzKQogICAgIHsKLSAgICAgICAgc3RyZWFtLT53cml0
ZVN0cmluZyhtVW5pZm9ybUluZGV4W2ldLm5hbWUpOwotICAgICAgICBzdHJlYW0tPndyaXRlSW50
KG1Vbmlmb3JtSW5kZXhbaV0uZWxlbWVudCk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnQobVVu
aWZvcm1JbmRleFtpXS5pbmRleCk7Ci0gICAgfQotCi0gICAgc3RyZWFtLT53cml0ZUludChtVW5p
Zm9ybUJsb2Nrcy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IHVuaWZvcm1CbG9ja0luZGV4ID0g
MDsgdW5pZm9ybUJsb2NrSW5kZXggPCBtVW5pZm9ybUJsb2Nrcy5zaXplKCk7ICsrdW5pZm9ybUJs
b2NrSW5kZXgpCi0gICAgewotICAgICAgICBjb25zdCBnbDo6VW5pZm9ybUJsb2NrJiB1bmlmb3Jt
QmxvY2sgPSAqbVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2NrSW5kZXhdOwotCi0gICAgICAgIHN0
cmVhbS0+d3JpdGVTdHJpbmcodW5pZm9ybUJsb2NrLm5hbWUpOwotICAgICAgICBzdHJlYW0tPndy
aXRlSW50KHVuaWZvcm1CbG9jay5lbGVtZW50SW5kZXgpOwotICAgICAgICBzdHJlYW0tPndyaXRl
SW50KHVuaWZvcm1CbG9jay5kYXRhU2l6ZSk7Ci0KLSAgICAgICAgc3RyZWFtLT53cml0ZUludCh1
bmlmb3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgYmxvY2tNZW1iZXJJbmRleCA9IDA7IGJsb2NrTWVtYmVySW5kZXggPCB1bmlm
b3JtQmxvY2subWVtYmVyVW5pZm9ybUluZGV4ZXMuc2l6ZSgpOyBibG9ja01lbWJlckluZGV4Kysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQodW5pZm9ybUJsb2NrLm1l
bWJlclVuaWZvcm1JbmRleGVzW2Jsb2NrTWVtYmVySW5kZXhdKTsKLSAgICAgICAgfQotCiAgICAg
ICAgIHN0cmVhbS0+d3JpdGVJbnQodW5pZm9ybUJsb2NrLnBzUmVnaXN0ZXJJbmRleCk7CiAgICAg
ICAgIHN0cmVhbS0+d3JpdGVJbnQodW5pZm9ybUJsb2NrLnZzUmVnaXN0ZXJJbmRleCk7CiAgICAg
fQogCi0gICAgc3RyZWFtLT53cml0ZUludChtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKTsK
LSAgICBzdHJlYW0tPndyaXRlSW50KG1UcmFuc2Zvcm1GZWVkYmFja0xpbmtlZFZhcnlpbmdzLnNp
emUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhbnNmb3JtRmVlZGJhY2tMaW5r
ZWRWYXJ5aW5ncy5zaXplKCk7IGkrKykKKyAgICBzdHJlYW0tPndyaXRlSW50KG1TdHJlYW1PdXRW
YXJ5aW5ncy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byAmdmFyeWluZyA6IG1TdHJlYW1P
dXRWYXJ5aW5ncykKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRWYXJ5aW5nICZ2YXJ5
aW5nID0gbVRyYW5zZm9ybUZlZWRiYWNrTGlua2VkVmFyeWluZ3NbaV07Ci0KLSAgICAgICAgc3Ry
ZWFtLT53cml0ZVN0cmluZyh2YXJ5aW5nLm5hbWUpOwotICAgICAgICBzdHJlYW0tPndyaXRlSW50
KHZhcnlpbmcudHlwZSk7Ci0gICAgICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyeWluZy5zaXplKTsK
ICAgICAgICAgc3RyZWFtLT53cml0ZVN0cmluZyh2YXJ5aW5nLnNlbWFudGljTmFtZSk7CiAgICAg
ICAgIHN0cmVhbS0+d3JpdGVJbnQodmFyeWluZy5zZW1hbnRpY0luZGV4KTsKLSAgICAgICAgc3Ry
ZWFtLT53cml0ZUludCh2YXJ5aW5nLnNlbWFudGljSW5kZXhDb3VudCk7CisgICAgICAgIHN0cmVh
bS0+d3JpdGVJbnQodmFyeWluZy5jb21wb25lbnRDb3VudCk7CisgICAgICAgIHN0cmVhbS0+d3Jp
dGVJbnQodmFyeWluZy5vdXRwdXRTbG90KTsKICAgICB9CiAKICAgICBzdHJlYW0tPndyaXRlU3Ry
aW5nKG1WZXJ0ZXhITFNMKTsKLSAgICBzdHJlYW0tPndyaXRlQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oJm1WZXJ0ZXhXb3JrYXJvdW5kcyksIHNpemVvZihEM0RDb21waWxl
cldvcmthcm91bmRzKSk7CisgICAgc3RyZWFtLT53cml0ZUJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgY2hhciAqPigmbVZlcnRleFdvcmthcm91bmRzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKEQzRENvbXBpbGVyV29ya2Fyb3VuZHMpKTsKICAgICBzdHJlYW0tPndyaXRl
U3RyaW5nKG1QaXhlbEhMU0wpOwotICAgIHN0cmVhbS0+d3JpdGVCeXRlcyhyZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGNoYXIqPigmbVBpeGVsV29ya2Fyb3VuZHMpLCBzaXplb2YoRDNEQ29tcGls
ZXJXb3JrYXJvdW5kcykpOworICAgIHN0cmVhbS0+d3JpdGVCeXRlcyhyZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGNoYXIgKj4oJm1QaXhlbFdvcmthcm91bmRzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKEQzRENvbXBpbGVyV29ya2Fyb3VuZHMpKTsKICAgICBzdHJlYW0tPndyaXRl
SW50KG1Vc2VzRnJhZ0RlcHRoKTsKICAgICBzdHJlYW0tPndyaXRlSW50KG1Vc2VzUG9pbnRTaXpl
KTsKKyAgICBzdHJlYW0tPndyaXRlSW50KG1Vc2VzRmxhdEludGVycG9sYXRpb24pOwogCiAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8UGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJsZT4gJnBpeGVsU2hhZGVy
S2V5ID0gbVBpeGVsU2hhZGVyS2V5OwogICAgIHN0cmVhbS0+d3JpdGVJbnQocGl4ZWxTaGFkZXJL
ZXkuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBwaXhlbFNoYWRlcktleUluZGV4ID0gMDsgcGl4
ZWxTaGFkZXJLZXlJbmRleCA8IHBpeGVsU2hhZGVyS2V5LnNpemUoKTsgcGl4ZWxTaGFkZXJLZXlJ
bmRleCsrKQorICAgIGZvciAoc2l6ZV90IHBpeGVsU2hhZGVyS2V5SW5kZXggPSAwOyBwaXhlbFNo
YWRlcktleUluZGV4IDwgcGl4ZWxTaGFkZXJLZXkuc2l6ZSgpOworICAgICAgICAgcGl4ZWxTaGFk
ZXJLZXlJbmRleCsrKQogICAgIHsKICAgICAgICAgY29uc3QgUGl4ZWxTaGFkZXJPdXRwdXRWYXJp
YWJsZSAmdmFyaWFibGUgPSBwaXhlbFNoYWRlcktleVtwaXhlbFNoYWRlcktleUluZGV4XTsKICAg
ICAgICAgc3RyZWFtLT53cml0ZUludCh2YXJpYWJsZS50eXBlKTsKQEAgLTc5NCwxOCArMTA0Nywy
MCBAQAogICAgICAgICBzdHJlYW0tPndyaXRlSW50KHZhcmlhYmxlLm91dHB1dEluZGV4KTsKICAg
ICB9CiAKKyAgICBzdHJlYW0tPndyaXRlU3RyaW5nKG1HZW9tZXRyeVNoYWRlclByZWFtYmxlKTsK
KwogICAgIHN0cmVhbS0+d3JpdGVJbnQobVZlcnRleEV4ZWN1dGFibGVzLnNpemUoKSk7Ci0gICAg
Zm9yIChzaXplX3QgdmVydGV4RXhlY3V0YWJsZUluZGV4ID0gMDsgdmVydGV4RXhlY3V0YWJsZUlu
ZGV4IDwgbVZlcnRleEV4ZWN1dGFibGVzLnNpemUoKTsgdmVydGV4RXhlY3V0YWJsZUluZGV4Kysp
CisgICAgZm9yIChzaXplX3QgdmVydGV4RXhlY3V0YWJsZUluZGV4ID0gMDsgdmVydGV4RXhlY3V0
YWJsZUluZGV4IDwgbVZlcnRleEV4ZWN1dGFibGVzLnNpemUoKTsKKyAgICAgICAgIHZlcnRleEV4
ZWN1dGFibGVJbmRleCsrKQogICAgIHsKICAgICAgICAgVmVydGV4RXhlY3V0YWJsZSAqdmVydGV4
RXhlY3V0YWJsZSA9IG1WZXJ0ZXhFeGVjdXRhYmxlc1t2ZXJ0ZXhFeGVjdXRhYmxlSW5kZXhdOwog
Ci0gICAgICAgIGZvciAoc2l6ZV90IGlucHV0SW5kZXggPSAwOyBpbnB1dEluZGV4IDwgZ2w6Ok1B
WF9WRVJURVhfQVRUUklCUzsgaW5wdXRJbmRleCsrKQorICAgICAgICBjb25zdCBhdXRvICZpbnB1
dExheW91dCA9IHZlcnRleEV4ZWN1dGFibGUtPmlucHV0cygpOworICAgICAgICBzdHJlYW0tPndy
aXRlSW50KGlucHV0TGF5b3V0LnNpemUoKSk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5wdXRJ
bmRleCA9IDA7IGlucHV0SW5kZXggPCBpbnB1dExheW91dC5zaXplKCk7IGlucHV0SW5kZXgrKykK
ICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEZvcm1hdCAmdmVydGV4SW5w
dXQgPSB2ZXJ0ZXhFeGVjdXRhYmxlLT5pbnB1dHMoKVtpbnB1dEluZGV4XTsKLSAgICAgICAgICAg
IHN0cmVhbS0+d3JpdGVJbnQodmVydGV4SW5wdXQubVR5cGUpOwotICAgICAgICAgICAgc3RyZWFt
LT53cml0ZUludCh2ZXJ0ZXhJbnB1dC5tTm9ybWFsaXplZCk7Ci0gICAgICAgICAgICBzdHJlYW0t
PndyaXRlSW50KHZlcnRleElucHV0Lm1Db21wb25lbnRzKTsKLSAgICAgICAgICAgIHN0cmVhbS0+
d3JpdGVJbnQodmVydGV4SW5wdXQubVB1cmVJbnRlZ2VyKTsKKyAgICAgICAgICAgIHN0cmVhbS0+
d3JpdGVJbnQoaW5wdXRMYXlvdXRbaW5wdXRJbmRleF0pOwogICAgICAgICB9CiAKICAgICAgICAg
c2l6ZV90IHZlcnRleFNoYWRlclNpemUgPSB2ZXJ0ZXhFeGVjdXRhYmxlLT5zaGFkZXJFeGVjdXRh
YmxlKCktPmdldExlbmd0aCgpOwpAQCAtODE2LDcgKzEwNzEsOCBAQAogICAgIH0KIAogICAgIHN0
cmVhbS0+d3JpdGVJbnQobVBpeGVsRXhlY3V0YWJsZXMuc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVf
dCBwaXhlbEV4ZWN1dGFibGVJbmRleCA9IDA7IHBpeGVsRXhlY3V0YWJsZUluZGV4IDwgbVBpeGVs
RXhlY3V0YWJsZXMuc2l6ZSgpOyBwaXhlbEV4ZWN1dGFibGVJbmRleCsrKQorICAgIGZvciAoc2l6
ZV90IHBpeGVsRXhlY3V0YWJsZUluZGV4ID0gMDsgcGl4ZWxFeGVjdXRhYmxlSW5kZXggPCBtUGl4
ZWxFeGVjdXRhYmxlcy5zaXplKCk7CisgICAgICAgICBwaXhlbEV4ZWN1dGFibGVJbmRleCsrKQog
ICAgIHsKICAgICAgICAgUGl4ZWxFeGVjdXRhYmxlICpwaXhlbEV4ZWN1dGFibGUgPSBtUGl4ZWxF
eGVjdXRhYmxlc1twaXhlbEV4ZWN1dGFibGVJbmRleF07CiAKQEAgLTgzNCwyNyArMTA5MCwzMyBA
QAogICAgICAgICBzdHJlYW0tPndyaXRlQnl0ZXMocGl4ZWxCbG9iLCBwaXhlbFNoYWRlclNpemUp
OwogICAgIH0KIAotICAgIHNpemVfdCBnZW9tZXRyeVNoYWRlclNpemUgPSAobUdlb21ldHJ5RXhl
Y3V0YWJsZSAhPSBOVUxMKSA/IG1HZW9tZXRyeUV4ZWN1dGFibGUtPmdldExlbmd0aCgpIDogMDsK
LSAgICBzdHJlYW0tPndyaXRlSW50KGdlb21ldHJ5U2hhZGVyU2l6ZSk7CisgICAgZm9yIChjb25z
dCBTaGFkZXJFeGVjdXRhYmxlRDNEICpnZW9tZXRyeUV4ZSA6IG1HZW9tZXRyeUV4ZWN1dGFibGVz
KQorICAgIHsKKyAgICAgICAgaWYgKGdlb21ldHJ5RXhlID09IG51bGxwdHIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQoMCk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQogCi0gICAgaWYgKG1HZW9tZXRyeUV4ZWN1dGFibGUgIT0gTlVMTCAmJiBnZW9t
ZXRyeVNoYWRlclNpemUgPiAwKQotICAgIHsKLSAgICAgICAgY29uc3QgdWludDhfdCAqZ2VvbWV0
cnlCbG9iID0gbUdlb21ldHJ5RXhlY3V0YWJsZS0+Z2V0RnVuY3Rpb24oKTsKLSAgICAgICAgc3Ry
ZWFtLT53cml0ZUJ5dGVzKGdlb21ldHJ5QmxvYiwgZ2VvbWV0cnlTaGFkZXJTaXplKTsKKyAgICAg
ICAgc2l6ZV90IGdlb21ldHJ5U2hhZGVyU2l6ZSA9IGdlb21ldHJ5RXhlLT5nZXRMZW5ndGgoKTsK
KyAgICAgICAgc3RyZWFtLT53cml0ZUludChnZW9tZXRyeVNoYWRlclNpemUpOworICAgICAgICBz
dHJlYW0tPndyaXRlQnl0ZXMoZ2VvbWV0cnlFeGUtPmdldEZ1bmN0aW9uKCksIGdlb21ldHJ5U2hh
ZGVyU2l6ZSk7CiAgICAgfQogCi0gICAgR1VJRCBiaW5hcnlJZGVudGlmaWVyID0gbVJlbmRlcmVy
LT5nZXRBZGFwdGVySWRlbnRpZmllcigpOwotICAgIHN0cmVhbS0+d3JpdGVCeXRlcyhyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmYmluYXJ5SWRlbnRpZmllciksIHNpemVvZihHVUlE
KSk7Ci0KICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9y
IFByb2dyYW1EM0Q6OmdldFBpeGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlciAqZmJvLCBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJsZSkKK3Zv
aWQgUHJvZ3JhbUQzRDo6c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgLyogcmV0cmlldmFi
bGUgKi8pCiB7Cit9CisKK2dsOjpFcnJvciBQcm9ncmFtRDNEOjpnZXRQaXhlbEV4ZWN1dGFibGVG
b3JGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZibywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxl
RDNEICoqb3V0RXhlY3V0YWJsZSkKK3sKICAgICBtUGl4ZWxTaGFkZXJPdXRwdXRGb3JtYXRDYWNo
ZS5jbGVhcigpOwogCiAgICAgY29uc3QgRnJhbWVidWZmZXJEM0QgKmZib0QzRCA9IEdldEltcGxB
czxGcmFtZWJ1ZmZlckQzRD4oZmJvKTsKLSAgICBjb25zdCBnbDo6QXR0YWNobWVudExpc3QgJmNv
bG9yYnVmZmVycyA9IGZib0QzRC0+Z2V0Q29sb3JBdHRhY2htZW50c0ZvclJlbmRlcihtUmVuZGVy
ZXItPmdldFdvcmthcm91bmRzKCkpOworICAgIGNvbnN0IGdsOjpBdHRhY2htZW50TGlzdCAmY29s
b3JidWZmZXJzID0gZmJvRDNELT5nZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKCk7CiAKICAg
ICBmb3IgKHNpemVfdCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBjb2xv
cmJ1ZmZlcnMuc2l6ZSgpOyArK2NvbG9yQXR0YWNobWVudCkKICAgICB7CkBAIC04NjIsNyArMTEy
NCw5IEBACiAKICAgICAgICAgaWYgKGNvbG9yYnVmZmVyKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtUGl4ZWxTaGFkZXJPdXRwdXRGb3JtYXRDYWNoZS5wdXNoX2JhY2soY29sb3JidWZmZXItPmdl
dEJpbmRpbmcoKSA9PSBHTF9CQUNLID8gR0xfQ09MT1JfQVRUQUNITUVOVDAgOiBjb2xvcmJ1ZmZl
ci0+Z2V0QmluZGluZygpKTsKKyAgICAgICAgICAgIG1QaXhlbFNoYWRlck91dHB1dEZvcm1hdENh
Y2hlLnB1c2hfYmFjayhjb2xvcmJ1ZmZlci0+Z2V0QmluZGluZygpID09IEdMX0JBQ0sKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBHTF9D
T0xPUl9BVFRBQ0hNRU5UMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA6IGNvbG9yYnVmZmVyLT5nZXRCaW5kaW5nKCkpOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtODg2LDggKzExNTAsOCBAQAogICAgICAgICB9
CiAgICAgfQogCi0gICAgc3RkOjpzdHJpbmcgZmluYWxQaXhlbEhMU0wgPSBtRHluYW1pY0hMU0wt
PmdlbmVyYXRlUGl4ZWxTaGFkZXJGb3JPdXRwdXRTaWduYXR1cmUobVBpeGVsSExTTCwgbVBpeGVs
U2hhZGVyS2V5LCBtVXNlc0ZyYWdEZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRTaWduYXR1cmUpOworICAgIHN0ZDo6c3RyaW5nIGZpbmFsUGl4ZWxITFNMID0gbUR5bmFt
aWNITFNMLT5nZW5lcmF0ZVBpeGVsU2hhZGVyRm9yT3V0cHV0U2lnbmF0dXJlKAorICAgICAgICBt
UGl4ZWxITFNMLCBtUGl4ZWxTaGFkZXJLZXksIG1Vc2VzRnJhZ0RlcHRoLCBvdXRwdXRTaWduYXR1
cmUpOwogCiAgICAgLy8gR2VuZXJhdGUgbmV3IHBpeGVsIGV4ZWN1dGFibGUKICAgICBTaGFkZXJF
eGVjdXRhYmxlRDNEICpwaXhlbEV4ZWN1dGFibGUgPSBOVUxMOwpAQCAtODk1LDEwICsxMTU5LDEw
IEBACiAgICAgZ2w6OkluZm9Mb2cgdGVtcEluZm9Mb2c7CiAgICAgZ2w6OkluZm9Mb2cgKmN1cnJl
bnRJbmZvTG9nID0gaW5mb0xvZyA/IGluZm9Mb2cgOiAmdGVtcEluZm9Mb2c7CiAKLSAgICBnbDo6
RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoKmN1cnJlbnRJbmZv
TG9nLCBmaW5hbFBpeGVsSExTTCwgU0hBREVSX1BJWEVMLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tMaW5rZWRW
YXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUgPT0gR0xfU0VQQVJBVEVfQVRUUklC
UyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1QaXhlbFdvcmthcm91bmRzLCAmcGl4ZWxFeGVjdXRhYmxlKTsKKyAgICBnbDo6RXJyb3IgZXJy
b3IgPSBtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoCisgICAgICAgICpjdXJyZW50SW5m
b0xvZywgZmluYWxQaXhlbEhMU0wsIFNIQURFUl9QSVhFTCwgbVN0cmVhbU91dFZhcnlpbmdzLAor
ICAgICAgICAobURhdGEuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQ
QVJBVEVfQVRUUklCUyksIG1QaXhlbFdvcmthcm91bmRzLAorICAgICAgICAmcGl4ZWxFeGVjdXRh
YmxlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVy
cm9yOwpAQCAtOTExLDcgKzExNzUsNyBAQAogICAgIGVsc2UgaWYgKCFpbmZvTG9nKQogICAgIHsK
ICAgICAgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gdGVtcENoYXJCdWZmZXIodGVtcEluZm9Mb2cuZ2V0
TGVuZ3RoKCkgKyAzKTsKLSAgICAgICAgdGVtcEluZm9Mb2cuZ2V0TG9nKHRlbXBJbmZvTG9nLmdl
dExlbmd0aCgpLCBOVUxMLCAmdGVtcENoYXJCdWZmZXJbMF0pOworICAgICAgICB0ZW1wSW5mb0xv
Zy5nZXRMb2coc3RhdGljX2Nhc3Q8R0xzaXplaT4odGVtcEluZm9Mb2cuZ2V0TGVuZ3RoKCkpLCBO
VUxMLCAmdGVtcENoYXJCdWZmZXJbMF0pOwogICAgICAgICBFUlIoIkVycm9yIGNvbXBpbGluZyBk
eW5hbWljIHBpeGVsIGV4ZWN1dGFibGU6XG4lc1xuIiwgJnRlbXBDaGFyQnVmZmVyWzBdKTsKICAg
ICB9CiAKQEAgLTkxOSwxNiArMTE4MywxNSBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOwogfQogCi1nbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJsZUZv
cklucHV0TGF5b3V0KGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgaW5wdXRMYXlvdXRbZ2w6Ok1BWF9W
RVJURVhfQVRUUklCU10sCitnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJs
ZUZvcklucHV0TGF5b3V0KGNvbnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
ckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAqaW5mb0xvZykKIHsK
LSAgICBHTGVudW0gc2lnbmF0dXJlW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwotICAgIGdldElu
cHV0TGF5b3V0U2lnbmF0dXJlKGlucHV0TGF5b3V0LCBzaWduYXR1cmUpOworICAgIFZlcnRleEV4
ZWN1dGFibGU6OmdldFNpZ25hdHVyZShtUmVuZGVyZXIsIGlucHV0TGF5b3V0LCAmbUNhY2hlZFZl
cnRleFNpZ25hdHVyZSk7CiAKICAgICBmb3IgKHNpemVfdCBleGVjdXRhYmxlSW5kZXggPSAwOyBl
eGVjdXRhYmxlSW5kZXggPCBtVmVydGV4RXhlY3V0YWJsZXMuc2l6ZSgpOyBleGVjdXRhYmxlSW5k
ZXgrKykKICAgICB7Ci0gICAgICAgIGlmIChtVmVydGV4RXhlY3V0YWJsZXNbZXhlY3V0YWJsZUlu
ZGV4XS0+bWF0Y2hlc1NpZ25hdHVyZShzaWduYXR1cmUpKQorICAgICAgICBpZiAobVZlcnRleEV4
ZWN1dGFibGVzW2V4ZWN1dGFibGVJbmRleF0tPm1hdGNoZXNTaWduYXR1cmUobUNhY2hlZFZlcnRl
eFNpZ25hdHVyZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgICpvdXRFeGVjdHVhYmxlID0gbVZl
cnRleEV4ZWN1dGFibGVzW2V4ZWN1dGFibGVJbmRleF0tPnNoYWRlckV4ZWN1dGFibGUoKTsKICAg
ICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwpAQCAtOTM2LDcgKzExOTks
OCBAQAogICAgIH0KIAogICAgIC8vIEdlbmVyYXRlIG5ldyBkeW5hbWljIGxheW91dCB3aXRoIGF0
dHJpYnV0ZSBjb252ZXJzaW9ucwotICAgIHN0ZDo6c3RyaW5nIGZpbmFsVmVydGV4SExTTCA9IG1E
eW5hbWljSExTTC0+Z2VuZXJhdGVWZXJ0ZXhTaGFkZXJGb3JJbnB1dExheW91dChtVmVydGV4SExT
TCwgaW5wdXRMYXlvdXQsIGdldFNoYWRlckF0dHJpYnV0ZXMoKSk7CisgICAgc3RkOjpzdHJpbmcg
ZmluYWxWZXJ0ZXhITFNMID0gbUR5bmFtaWNITFNMLT5nZW5lcmF0ZVZlcnRleFNoYWRlckZvcklu
cHV0TGF5b3V0KAorICAgICAgICBtVmVydGV4SExTTCwgaW5wdXRMYXlvdXQsIG1EYXRhLmdldEF0
dHJpYnV0ZXMoKSk7CiAKICAgICAvLyBHZW5lcmF0ZSBuZXcgdmVydGV4IGV4ZWN1dGFibGUKICAg
ICBTaGFkZXJFeGVjdXRhYmxlRDNEICp2ZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKQEAgLTk0NCwx
MCArMTIwOCwxMCBAQAogICAgIGdsOjpJbmZvTG9nIHRlbXBJbmZvTG9nOwogICAgIGdsOjpJbmZv
TG9nICpjdXJyZW50SW5mb0xvZyA9IGluZm9Mb2cgPyBpbmZvTG9nIDogJnRlbXBJbmZvTG9nOwog
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKCpj
dXJyZW50SW5mb0xvZywgZmluYWxWZXJ0ZXhITFNMLCBTSEFERVJfVkVSVEVYLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVHJhbnNmb3JtRmVl
ZGJhY2tMaW5rZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUgPT0gR0xfU0VQ
QVJBVEVfQVRUUklCUyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1WZXJ0ZXhXb3JrYXJvdW5kcywgJnZlcnRleEV4ZWN1dGFibGUpOworICAg
IGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZSgKKyAgICAg
ICAgKmN1cnJlbnRJbmZvTG9nLCBmaW5hbFZlcnRleEhMU0wsIFNIQURFUl9WRVJURVgsIG1TdHJl
YW1PdXRWYXJ5aW5ncywKKyAgICAgICAgKG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
TW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCBtVmVydGV4V29ya2Fyb3VuZHMsCisgICAg
ICAgICZ2ZXJ0ZXhFeGVjdXRhYmxlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtOTU1LDEyICsxMjE5LDEzIEBACiAKICAgICBpZiAo
dmVydGV4RXhlY3V0YWJsZSkKICAgICB7Ci0gICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxlcy5wdXNo
X2JhY2sobmV3IFZlcnRleEV4ZWN1dGFibGUoaW5wdXRMYXlvdXQsIHNpZ25hdHVyZSwgdmVydGV4
RXhlY3V0YWJsZSkpOworICAgICAgICBtVmVydGV4RXhlY3V0YWJsZXMucHVzaF9iYWNrKAorICAg
ICAgICAgICAgbmV3IFZlcnRleEV4ZWN1dGFibGUoaW5wdXRMYXlvdXQsIG1DYWNoZWRWZXJ0ZXhT
aWduYXR1cmUsIHZlcnRleEV4ZWN1dGFibGUpKTsKICAgICB9CiAgICAgZWxzZSBpZiAoIWluZm9M
b2cpCiAgICAgewogICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiB0ZW1wQ2hhckJ1ZmZlcih0ZW1w
SW5mb0xvZy5nZXRMZW5ndGgoKSArIDMpOwotICAgICAgICB0ZW1wSW5mb0xvZy5nZXRMb2codGVt
cEluZm9Mb2cuZ2V0TGVuZ3RoKCksIE5VTEwsICZ0ZW1wQ2hhckJ1ZmZlclswXSk7CisgICAgICAg
IHRlbXBJbmZvTG9nLmdldExvZyhzdGF0aWNfY2FzdDxHTHNpemVpPih0ZW1wSW5mb0xvZy5nZXRM
ZW5ndGgoKSksIE5VTEwsICZ0ZW1wQ2hhckJ1ZmZlclswXSk7CiAgICAgICAgIEVSUigiRXJyb3Ig
Y29tcGlsaW5nIGR5bmFtaWMgdmVydGV4IGV4ZWN1dGFibGU6XG4lc1xuIiwgJnRlbXBDaGFyQnVm
ZmVyWzBdKTsKICAgICB9CiAKQEAgLTk2OCw1MCArMTIzMyw5NiBAQAogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmNvbXBpbGVQ
cm9ncmFtRXhlY3V0YWJsZXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpTaGFkZXIgKmZyYWdt
ZW50U2hhZGVyLCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlZ2lzdGVycykKK2dsOjpFcnJvciBQ
cm9ncmFtRDNEOjpnZXRHZW9tZXRyeUV4ZWN1dGFibGVGb3JQcmltaXRpdmVUeXBlKGNvbnN0IGds
OjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQz
RCAqKm91dEV4ZWN1dGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAqaW5mb0xvZykKIHsKLSAgICBTaGFk
ZXJEM0QgKnZlcnRleFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KHZlcnRleFNoYWRl
cik7Ci0gICAgU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJE
M0Q+KGZyYWdtZW50U2hhZGVyKTsKKyAgICBpZiAob3V0RXhlY3V0YWJsZSkKKyAgICB7CisgICAg
ICAgICpvdXRFeGVjdXRhYmxlID0gbnVsbHB0cjsKKyAgICB9CiAKLSAgICBnbDo6VmVydGV4Rm9y
bWF0IGRlZmF1bHRJbnB1dExheW91dFtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKLSAgICBHZXRE
ZWZhdWx0SW5wdXRMYXlvdXRGcm9tU2hhZGVyKHZlcnRleFNoYWRlci0+Z2V0QWN0aXZlQXR0cmli
dXRlcygpLCBkZWZhdWx0SW5wdXRMYXlvdXQpOworICAgIC8vIFJldHVybiBhIG51bGwgc2hhZGVy
IGlmIHRoZSBjdXJyZW50IHJlbmRlcmluZyBkb2Vzbid0IHVzZSBhIGdlb21ldHJ5IHNoYWRlcgor
ICAgIGlmICghdXNlc0dlb21ldHJ5U2hhZGVyKGRyYXdNb2RlKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIH0KKworICAgIGdsOjpQcmltaXRpdmVU
eXBlIGdlb21ldHJ5U2hhZGVyVHlwZSA9IEdldEdlb21ldHJ5U2hhZGVyVHlwZUZyb21EcmF3TW9k
ZShkcmF3TW9kZSk7CisKKyAgICBpZiAobUdlb21ldHJ5RXhlY3V0YWJsZXNbZ2VvbWV0cnlTaGFk
ZXJUeXBlXSAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgaWYgKG91dEV4ZWN1dGFibGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgICpvdXRFeGVjdXRhYmxlID0gbUdlb21ldHJ5RXhlY3V0YWJs
ZXNbZ2VvbWV0cnlTaGFkZXJUeXBlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBnZW9tZXRyeUhMU0wg
PSBtRHluYW1pY0hMU0wtPmdlbmVyYXRlR2VvbWV0cnlTaGFkZXJITFNMKAorICAgICAgICBnZW9t
ZXRyeVNoYWRlclR5cGUsIGRhdGEsIG1EYXRhLCBtUmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVu
YWJsZWQoKSwKKyAgICAgICAgbUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUpOworCisgICAgZ2w6Oklu
Zm9Mb2cgdGVtcEluZm9Mb2c7CisgICAgZ2w6OkluZm9Mb2cgKmN1cnJlbnRJbmZvTG9nID0gaW5m
b0xvZyA/IGluZm9Mb2cgOiAmdGVtcEluZm9Mb2c7CisKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBt
UmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoCisgICAgICAgICpjdXJyZW50SW5mb0xvZywg
Z2VvbWV0cnlITFNMLCBTSEFERVJfR0VPTUVUUlksIG1TdHJlYW1PdXRWYXJ5aW5ncywKKyAgICAg
ICAgKG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRF
X0FUVFJJQlMpLCBEM0RDb21waWxlcldvcmthcm91bmRzKCksCisgICAgICAgICZtR2VvbWV0cnlF
eGVjdXRhYmxlc1tnZW9tZXRyeVNoYWRlclR5cGVdKTsKKworICAgIGlmICghaW5mb0xvZyAmJiBl
cnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiB0ZW1wQ2hh
ckJ1ZmZlcih0ZW1wSW5mb0xvZy5nZXRMZW5ndGgoKSArIDMpOworICAgICAgICB0ZW1wSW5mb0xv
Zy5nZXRMb2coc3RhdGljX2Nhc3Q8R0xzaXplaT4odGVtcEluZm9Mb2cuZ2V0TGVuZ3RoKCkpLCBO
VUxMLCAmdGVtcENoYXJCdWZmZXJbMF0pOworICAgICAgICBFUlIoIkVycm9yIGNvbXBpbGluZyBk
eW5hbWljIGdlb21ldHJ5IGV4ZWN1dGFibGU6XG4lc1xuIiwgJnRlbXBDaGFyQnVmZmVyWzBdKTsK
KyAgICB9CisKKyAgICBpZiAob3V0RXhlY3V0YWJsZSkKKyAgICB7CisgICAgICAgICpvdXRFeGVj
dXRhYmxlID0gbUdlb21ldHJ5RXhlY3V0YWJsZXNbZ2VvbWV0cnlTaGFkZXJUeXBlXTsKKyAgICB9
CisgICAgcmV0dXJuIGVycm9yOworfQorCitMaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmNvbXBpbGVQ
cm9ncmFtRXhlY3V0YWJsZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZv
TG9nKQoreworICAgIGNvbnN0IGdsOjpJbnB1dExheW91dCAmZGVmYXVsdElucHV0TGF5b3V0ID0K
KyAgICAgICAgR2V0RGVmYXVsdElucHV0TGF5b3V0RnJvbVNoYWRlcihtRGF0YS5nZXRBdHRhY2hl
ZFZlcnRleFNoYWRlcigpKTsKICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpkZWZhdWx0VmVydGV4
RXhlY3V0YWJsZSA9IE5VTEw7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0VmVydGV4RXhlY3V0
YWJsZUZvcklucHV0TGF5b3V0KGRlZmF1bHRJbnB1dExheW91dCwgJmRlZmF1bHRWZXJ0ZXhFeGVj
dXRhYmxlLCAmaW5mb0xvZyk7CisgICAgZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgZ2V0VmVy
dGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0KGRlZmF1bHRJbnB1dExheW91dCwgJmRlZmF1bHRW
ZXJ0ZXhFeGVjdXRhYmxlLCAmaW5mb0xvZyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBlcnJvcik7CiAgICAgfQogCi0g
ICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBkZWZhdWx0UGl4ZWxPdXRwdXQgPSBHZXREZWZhdWx0T3V0
cHV0TGF5b3V0RnJvbVNoYWRlcihnZXRQaXhlbFNoYWRlcktleSgpKTsKKyAgICBzdGQ6OnZlY3Rv
cjxHTGVudW0+IGRlZmF1bHRQaXhlbE91dHB1dCAgICAgID0gR2V0RGVmYXVsdE91dHB1dExheW91
dEZyb21TaGFkZXIoZ2V0UGl4ZWxTaGFkZXJLZXkoKSk7CiAgICAgU2hhZGVyRXhlY3V0YWJsZUQz
RCAqZGVmYXVsdFBpeGVsRXhlY3V0YWJsZSA9IE5VTEw7Ci0gICAgZXJyb3IgPSBnZXRQaXhlbEV4
ZWN1dGFibGVGb3JPdXRwdXRMYXlvdXQoZGVmYXVsdFBpeGVsT3V0cHV0LCAmZGVmYXVsdFBpeGVs
RXhlY3V0YWJsZSwgJmluZm9Mb2cpOworICAgIGVycm9yID0KKyAgICAgICAgZ2V0UGl4ZWxFeGVj
dXRhYmxlRm9yT3V0cHV0TGF5b3V0KGRlZmF1bHRQaXhlbE91dHB1dCwgJmRlZmF1bHRQaXhlbEV4
ZWN1dGFibGUsICZpbmZvTG9nKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGVycm9yKTsKICAgICB9CiAKLSAgICBpZiAo
dXNlc0dlb21ldHJ5U2hhZGVyKCkpCisgICAgLy8gQXV0by1nZW5lcmF0ZSB0aGUgZ2VvbWV0cnkg
c2hhZGVyIGhlcmUsIGlmIHdlIGV4cGVjdCB0byBiZSB1c2luZyBwb2ludCByZW5kZXJpbmcgaW4g
RDNEMTEuCisgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqcG9pbnRHUyA9IG51bGxwdHI7CisgICAg
aWYgKHVzZXNHZW9tZXRyeVNoYWRlcihHTF9QT0lOVFMpKQogICAgIHsKLSAgICAgICAgc3RkOjpz
dHJpbmcgZ2VvbWV0cnlITFNMID0gbUR5bmFtaWNITFNMLT5nZW5lcmF0ZUdlb21ldHJ5U2hhZGVy
SExTTChyZWdpc3RlcnMsIGZyYWdtZW50U2hhZGVyRDNELCB2ZXJ0ZXhTaGFkZXJEM0QpOworICAg
ICAgICBnZXRHZW9tZXRyeUV4ZWN1dGFibGVGb3JQcmltaXRpdmVUeXBlKGRhdGEsIEdMX1BPSU5U
UywgJnBvaW50R1MsICZpbmZvTG9nKTsKKyAgICB9CiAKKyAgICBjb25zdCBTaGFkZXJEM0QgKnZl
cnRleFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1EYXRhLmdldEF0dGFjaGVkVmVy
dGV4U2hhZGVyKCkpOwogCi0gICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVj
dXRhYmxlKGluZm9Mb2csIGdlb21ldHJ5SExTTCwgU0hBREVSX0dFT01FVFJZLCBtVHJhbnNmb3Jt
RmVlZGJhY2tMaW5rZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUgPT0gR0xfU0VQQVJB
VEVfQVRUUklCUyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzRENvbXBpbGVyV29ya2Fyb3VuZHMoKSwgJm1HZW9tZXRyeUV4ZWN1dGFibGUpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZXJyb3IpOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgQU5HTEVf
U0hBREVSX0RFQlVHX0lORk8gPT0gQU5HTEVfRU5BQkxFRAotICAgIGlmICh1c2VzR2VvbWV0cnlT
aGFkZXIoKSAmJiBtR2VvbWV0cnlFeGVjdXRhYmxlKQorICAgIGlmICh1c2VzR2VvbWV0cnlTaGFk
ZXIoR0xfUE9JTlRTKSAmJiBwb2ludEdTKQogICAgIHsKLSAgICAgICAgLy8gR2VvbWV0cnkgc2hh
ZGVycyBhcmUgY3VycmVudGx5IG9ubHkgdXNlZCBpbnRlcm5hbGx5LCBzbyB0aGVyZSBpcyBubyBj
b3JyZXNwb25kaW5nIHNoYWRlciBvYmplY3QgYXQgdGhlIGludGVyZmFjZSBsZXZlbAotICAgICAg
ICAvLyBGb3Igbm93IHRoZSBnZW9tZXRyeSBzaGFkZXIgZGVidWcgaW5mbyBpcyBwcmUtcGVuZGVk
IHRvIHRoZSB2ZXJ0ZXggc2hhZGVyLCB0aGlzIGlzIGEgYml0IG9mIGEgY2x1dGNoCisgICAgICAg
IC8vIEdlb21ldHJ5IHNoYWRlcnMgYXJlIGN1cnJlbnRseSBvbmx5IHVzZWQgaW50ZXJuYWxseSwg
c28gdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBzaGFkZXIKKyAgICAgICAgLy8gb2JqZWN0IGF0
IHRoZSBpbnRlcmZhY2UgbGV2ZWwuIEZvciBub3cgdGhlIGdlb21ldHJ5IHNoYWRlciBkZWJ1ZyBp
bmZvIGlzIHByZXBlbmRlZCB0bworICAgICAgICAvLyB0aGUgdmVydGV4IHNoYWRlci4KICAgICAg
ICAgdmVydGV4U2hhZGVyRDNELT5hcHBlbmREZWJ1Z0luZm8oIi8vIEdFT01FVFJZIFNIQURFUiBC
RUdJTlxuXG4iKTsKLSAgICAgICAgdmVydGV4U2hhZGVyRDNELT5hcHBlbmREZWJ1Z0luZm8obUdl
b21ldHJ5RXhlY3V0YWJsZS0+Z2V0RGVidWdJbmZvKCkpOworICAgICAgICB2ZXJ0ZXhTaGFkZXJE
M0QtPmFwcGVuZERlYnVnSW5mbyhwb2ludEdTLT5nZXREZWJ1Z0luZm8oKSk7CiAgICAgICAgIHZl
cnRleFNoYWRlckQzRC0+YXBwZW5kRGVidWdJbmZvKCJcbkdFT01FVFJZIFNIQURFUiBFTkRcblxu
XG4iKTsKICAgICB9CiAKQEAgLTEwMjIsMjAwICsxMzMzLDMwNiBAQAogCiAgICAgaWYgKGRlZmF1
bHRQaXhlbEV4ZWN1dGFibGUpCiAgICAgeworICAgICAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdt
ZW50U2hhZGVyRDNEID0KKyAgICAgICAgICAgIEdldEltcGxBczxTaGFkZXJEM0Q+KG1EYXRhLmdl
dEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKSk7CiAgICAgICAgIGZyYWdtZW50U2hhZGVyRDNELT5h
cHBlbmREZWJ1Z0luZm8oZGVmYXVsdFBpeGVsRXhlY3V0YWJsZS0+Z2V0RGVidWdJbmZvKCkpOwog
ICAgIH0KLSNlbmRpZgogCi0gICAgYm9vbCBsaW5rU3VjY2VzcyA9IChkZWZhdWx0VmVydGV4RXhl
Y3V0YWJsZSAmJiBkZWZhdWx0UGl4ZWxFeGVjdXRhYmxlICYmICghdXNlc0dlb21ldHJ5U2hhZGVy
KCkgfHwgbUdlb21ldHJ5RXhlY3V0YWJsZSkpOworICAgIGJvb2wgbGlua1N1Y2Nlc3MgPSAoZGVm
YXVsdFZlcnRleEV4ZWN1dGFibGUgJiYgZGVmYXVsdFBpeGVsRXhlY3V0YWJsZSAmJgorICAgICAg
ICAgICAgICAgICAgICAgICAgKCF1c2VzR2VvbWV0cnlTaGFkZXIoR0xfUE9JTlRTKSB8fCBwb2lu
dEdTKSk7CiAgICAgcmV0dXJuIExpbmtSZXN1bHQobGlua1N1Y2Nlc3MsIGdsOjpFcnJvcihHTF9O
T19FUlJPUikpOwogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxpbmsoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0cmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICpyZWdpc3RlcnMsIHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5aW5n
PiAqbGlua2VkVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8
aW50LCBnbDo6VmFyaWFibGVMb2NhdGlvbj4gKm91dHB1dFZhcmlhYmxlcykKK0xpbmtSZXN1bHQg
UHJvZ3JhbUQzRDo6bGluayhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9M
b2cpCiB7Ci0gICAgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVy
RDNEPih2ZXJ0ZXhTaGFkZXIpOwotICAgIFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXJEM0QgPSBH
ZXRJbXBsQXM8U2hhZGVyRDNEPihmcmFnbWVudFNoYWRlcik7CisgICAgcmVzZXQoKTsKIAotICAg
IG1TYW1wbGVyc1BTLnJlc2l6ZShkYXRhLmNhcHMtPm1heFRleHR1cmVJbWFnZVVuaXRzKTsKLSAg
ICBtU2FtcGxlcnNWUy5yZXNpemUoZGF0YS5jYXBzLT5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0
cyk7CisgICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyICAgPSBtRGF0YS5nZXRBdHRh
Y2hlZFZlcnRleFNoYWRlcigpOworICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVy
ID0gbURhdGEuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwogCi0gICAgbVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyTW9kZSA9IHRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZTsKKyAgICBjb25z
dCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4odmVy
dGV4U2hhZGVyKTsKKyAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyRDNEID0gR2V0
SW1wbEFzPFNoYWRlckQzRD4oZnJhZ21lbnRTaGFkZXIpOwogCi0gICAgbVBpeGVsSExTTCA9IGZy
YWdtZW50U2hhZGVyRDNELT5nZXRUcmFuc2xhdGVkU291cmNlKCk7Ci0gICAgZnJhZ21lbnRTaGFk
ZXJEM0QtPmdlbmVyYXRlV29ya2Fyb3VuZHMoJm1QaXhlbFdvcmthcm91bmRzKTsKKyAgICBtU2Ft
cGxlcnNWUy5yZXNpemUoZGF0YS5jYXBzLT5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Cisg
ICAgbVNhbXBsZXJzUFMucmVzaXplKGRhdGEuY2Fwcy0+bWF4VGV4dHVyZUltYWdlVW5pdHMpOwog
Ci0gICAgbVZlcnRleEhMU0wgPSB2ZXJ0ZXhTaGFkZXJEM0QtPmdldFRyYW5zbGF0ZWRTb3VyY2Uo
KTsKICAgICB2ZXJ0ZXhTaGFkZXJEM0QtPmdlbmVyYXRlV29ya2Fyb3VuZHMoJm1WZXJ0ZXhXb3Jr
YXJvdW5kcyk7Ci0gICAgbVNoYWRlclZlcnNpb24gPSB2ZXJ0ZXhTaGFkZXJEM0QtPmdldFNoYWRl
clZlcnNpb24oKTsKKyAgICBmcmFnbWVudFNoYWRlckQzRC0+Z2VuZXJhdGVXb3JrYXJvdW5kcygm
bVBpeGVsV29ya2Fyb3VuZHMpOwogCisgICAgaWYgKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJMaW1p
dGF0aW9ucygpLm5vRnJvbnRGYWNpbmdTdXBwb3J0KQorICAgIHsKKyAgICAgICAgaWYgKGZyYWdt
ZW50U2hhZGVyRDNELT51c2VzRnJvbnRGYWNpbmcoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
aW5mb0xvZyA8PCAiVGhlIGN1cnJlbnQgcmVuZGVyZXIgZG9lc24ndCBzdXBwb3J0IGdsX0Zyb250
RmFjaW5nIjsKKyAgICAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPFBhY2tl
ZFZhcnlpbmc+IHBhY2tlZFZhcnlpbmdzID0KKyAgICAgICAgTWVyZ2VWYXJ5aW5ncygqdmVydGV4
U2hhZGVyLCAqZnJhZ21lbnRTaGFkZXIsIG1EYXRhLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z05hbWVzKCkpOworCiAgICAgLy8gTWFwIHRoZSB2YXJ5aW5ncyB0byB0aGUgcmVnaXN0ZXIgZmls
ZQotICAgIFZhcnlpbmdQYWNraW5nIHBhY2tpbmcgPSB7IE5VTEwgfTsKLSAgICAqcmVnaXN0ZXJz
ID0gbUR5bmFtaWNITFNMLT5wYWNrVmFyeWluZ3MoaW5mb0xvZywgcGFja2luZywgZnJhZ21lbnRT
aGFkZXJEM0QsIHZlcnRleFNoYWRlckQzRCwgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk7Cisg
ICAgVmFyeWluZ1BhY2tpbmcgdmFyeWluZ1BhY2tpbmcoZGF0YS5jYXBzLT5tYXhWYXJ5aW5nVmVj
dG9ycyk7CisgICAgaWYgKCF2YXJ5aW5nUGFja2luZy5wYWNrVmFyeWluZ3MoaW5mb0xvZywgcGFj
a2VkVmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEu
Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKSkpCisgICAgeworICAgICAgICByZXR1
cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CisgICAgfQogCi0g
ICAgaWYgKCpyZWdpc3RlcnMgPCAwKQorICAgIFByb2dyYW1EM0RNZXRhZGF0YSBtZXRhZGF0YSht
UmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSwgbVJlbmRlcmVyLT5nZXRTaGFkZXJNb2Rl
bFN1ZmZpeCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VzSW5zdGFuY2Vk
UG9pbnRTcHJpdGVFbXVsYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVJlbmRlcmVyLT5wcmVzZW50UGF0aEZhc3RFbmFibGVkKCksIHZlcnRleFNoYWRlckQzRCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJEM0QpOworCisgICAg
dmFyeWluZ1BhY2tpbmcuZW5hYmxlQnVpbHRpbnMoU0hBREVSX1ZFUlRFWCwgbWV0YWRhdGEpOwor
ICAgIHZhcnlpbmdQYWNraW5nLmVuYWJsZUJ1aWx0aW5zKFNIQURFUl9QSVhFTCwgbWV0YWRhdGEp
OworCisgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4odmFyeWluZ1BhY2tpbmcuZ2V0UmVnaXN0
ZXJDb3VudCgpKSA+IGRhdGEuY2Fwcy0+bWF4VmFyeWluZ1ZlY3RvcnMpCiAgICAgeworICAgICAg
ICBpbmZvTG9nIDw8ICJObyB2YXJ5aW5nIHJlZ2lzdGVycyBsZWZ0IHRvIHN1cHBvcnQgZ2xfRnJh
Z0Nvb3JkL2dsX1BvaW50Q29vcmQiOwogICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwg
Z2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQogCi0gICAgaWYgKCFnbDo6UHJvZ3JhbTo6
bGlua1ZhcnlpbmdzKGluZm9Mb2csIGZyYWdtZW50U2hhZGVyLCB2ZXJ0ZXhTaGFkZXIpKQorICAg
IC8vIFRPRE8oam1hZGlsbCk6IEltcGxlbWVudCBtb3JlIHNvcGhpc3RpY2F0ZWQgY29tcG9uZW50
IHBhY2tpbmcgaW4gRDNEOS4KKyAgICAvLyBXZSBjYW4gZmFpbCBoZXJlIGJlY2F1c2Ugd2UgdXNl
IG9uZSBzZW1hbnRpYyBwZXIgR0xTTCB2YXJ5aW5nLiBEM0QxMSBjYW4gcGFjayB2YXJ5aW5ncwor
ICAgIC8vIGludGVsbGlnZW50bHksIGJ1dCBEM0Q5IGFzc3VtZXMgb25lIHNlbWFudGljIHBlciBy
ZWdpc3Rlci4KKyAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlckNsYXNzKCkgPT0gUkVOREVS
RVJfRDNEOSAmJgorICAgICAgICB2YXJ5aW5nUGFja2luZy5nZXRNYXhTZW1hbnRpY0luZGV4KCkg
PiBkYXRhLmNhcHMtPm1heFZhcnlpbmdWZWN0b3JzKQogICAgIHsKKyAgICAgICAgaW5mb0xvZyA8
PCAiQ2Fubm90IHBhY2sgdGhlc2UgdmFyeWluZ3Mgb24gRDNEOS4iOwogICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQogCi0gICAg
aWYgKCFtRHluYW1pY0hMU0wtPmdlbmVyYXRlU2hhZGVyTGlua0hMU0woZGF0YSwgaW5mb0xvZywg
KnJlZ2lzdGVycywgcGFja2luZywgbVBpeGVsSExTTCwgbVZlcnRleEhMU0wsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJEM0QsIHZl
cnRleFNoYWRlckQzRCwgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRWYXJ5aW5ncywgb3V0cHV0VmFy
aWFibGVzLCAmbVBpeGVsU2hhZGVyS2V5LCAmbVVzZXNGcmFnRGVwdGgpKQorICAgIGlmICghbUR5
bmFtaWNITFNMLT5nZW5lcmF0ZVNoYWRlckxpbmtITFNMKGRhdGEsIG1EYXRhLCBtZXRhZGF0YSwg
dmFyeWluZ1BhY2tpbmcsICZtUGl4ZWxITFNMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZtVmVydGV4SExTTCkpCiAgICAgewogICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CiAgICAgfQogCiAgICAg
bVVzZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFkZXJEM0QtPnVzZXNQb2ludFNpemUoKTsKKyAgICBt
RHluYW1pY0hMU0wtPmdldFBpeGVsU2hhZGVyT3V0cHV0S2V5KGRhdGEsIG1EYXRhLCBtZXRhZGF0
YSwgJm1QaXhlbFNoYWRlcktleSk7CisgICAgbVVzZXNGcmFnRGVwdGggPSBtZXRhZGF0YS51c2Vz
RnJhZ0RlcHRoKG1EYXRhKTsKIAotICAgIGluaXRBdHRyaWJ1dGVzQnlMYXlvdXQoKTsKKyAgICAv
LyBDYWNoZSBpZiB3ZSB1c2UgZmxhdCBzaGFkaW5nCisgICAgbVVzZXNGbGF0SW50ZXJwb2xhdGlv
biA9IGZhbHNlOworICAgIGZvciAoY29uc3QgYXV0byAmdmFyeWluZyA6IHBhY2tlZFZhcnlpbmdz
KQorICAgIHsKKyAgICAgICAgaWYgKHZhcnlpbmcuaW50ZXJwb2xhdGlvbiA9PSBzaDo6SU5URVJQ
T0xBVElPTl9GTEFUKQorICAgICAgICB7CisgICAgICAgICAgICBtVXNlc0ZsYXRJbnRlcnBvbGF0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogCisgICAg
aWYgKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpID49IDQpCisgICAgeworICAgICAg
ICB2YXJ5aW5nUGFja2luZy5lbmFibGVCdWlsdGlucyhTSEFERVJfR0VPTUVUUlksIG1ldGFkYXRh
KTsKKyAgICAgICAgbUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUgPSBtRHluYW1pY0hMU0wtPmdlbmVy
YXRlR2VvbWV0cnlTaGFkZXJQcmVhbWJsZSh2YXJ5aW5nUGFja2luZyk7CisgICAgfQorCisgICAg
aW5pdEF0dHJpYkxvY2F0aW9uc1RvRDNEU2VtYW50aWMoKTsKKworICAgIGRlZmluZVVuaWZvcm1z
QW5kQXNzaWduUmVnaXN0ZXJzKCk7CisKKyAgICBnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzKHZhcnlpbmdQYWNraW5nKTsKKworICAgIExpbmtSZXN1bHQgcmVzdWx0ID0gY29tcGlsZVBy
b2dyYW1FeGVjdXRhYmxlcyhkYXRhLCBpbmZvTG9nKTsKKyAgICBpZiAocmVzdWx0LmVycm9yLmlz
RXJyb3IoKSB8fCAhcmVzdWx0LmxpbmtTdWNjZXNzKQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8
PCAiRmFpbGVkIHRvIGNyZWF0ZSBEM0Qgc2hhZGVycy4iOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGluaXRVbmlmb3JtQmxvY2tJbmZvKCk7CisKICAgICByZXR1cm4gTGlu
a1Jlc3VsdCh0cnVlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKIH0KIAotdm9pZCBQcm9ncmFt
RDNEOjpnZXRJbnB1dExheW91dFNpZ25hdHVyZShjb25zdCBnbDo6VmVydGV4Rm9ybWF0IGlucHV0
TGF5b3V0W10sIEdMZW51bSBzaWduYXR1cmVbXSkgY29uc3QKK0dMYm9vbGVhbiBQcm9ncmFtRDNE
Ojp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmIC8qY2FwcyovLCBnbDo6SW5mb0xvZyAqIC8qaW5m
b0xvZyovKQogewotICAgIG1EeW5hbWljSExTTC0+Z2V0SW5wdXRMYXlvdXRTaWduYXR1cmUoaW5w
dXRMYXlvdXQsIHNpZ25hdHVyZSk7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRG8gc29tZXRoaW5n
IHVzZWZ1bCBoZXJlPworICAgIHJldHVybiBHTF9UUlVFOwogfQogCit2b2lkIFByb2dyYW1EM0Q6
OmluaXRVbmlmb3JtQmxvY2tJbmZvKCkKK3sKKyAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworCisgICAgZm9yIChjb25z
dCBzaDo6SW50ZXJmYWNlQmxvY2sgJnZlcnRleEJsb2NrIDogdmVydGV4U2hhZGVyLT5nZXRJbnRl
cmZhY2VCbG9ja3MoKSkKKyAgICB7CisgICAgICAgIGlmICghdmVydGV4QmxvY2suc3RhdGljVXNl
ICYmIHZlcnRleEJsb2NrLmxheW91dCA9PSBzaDo6QkxPQ0tMQVlPVVRfUEFDS0VEKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKG1CbG9ja0RhdGFTaXplcy5jb3VudCh2ZXJ0
ZXhCbG9jay5uYW1lKSA+IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaXpl
X3QgZGF0YVNpemUgICAgICAgICAgICAgICAgICAgPSBnZXRVbmlmb3JtQmxvY2tJbmZvKHZlcnRl
eEJsb2NrKTsKKyAgICAgICAgbUJsb2NrRGF0YVNpemVzW3ZlcnRleEJsb2NrLm5hbWVdID0gZGF0
YVNpemU7CisgICAgfQorCisgICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBt
RGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisKKyAgICBmb3IgKGNvbnN0IHNoOjpJ
bnRlcmZhY2VCbG9jayAmZnJhZ21lbnRCbG9jayA6IGZyYWdtZW50U2hhZGVyLT5nZXRJbnRlcmZh
Y2VCbG9ja3MoKSkKKyAgICB7CisgICAgICAgIGlmICghZnJhZ21lbnRCbG9jay5zdGF0aWNVc2Ug
JiYgZnJhZ21lbnRCbG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChtQmxvY2tEYXRhU2l6ZXMuY291bnQoZnJh
Z21lbnRCbG9jay5uYW1lKSA+IDApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBz
aXplX3QgZGF0YVNpemUgICAgICAgICAgICAgICAgICAgICA9IGdldFVuaWZvcm1CbG9ja0luZm8o
ZnJhZ21lbnRCbG9jayk7CisgICAgICAgIG1CbG9ja0RhdGFTaXplc1tmcmFnbWVudEJsb2NrLm5h
bWVdID0gZGF0YVNpemU7CisgICAgfQorfQorCit2b2lkIFByb2dyYW1EM0Q6OmFzc2lnblVuaWZv
cm1CbG9ja1JlZ2lzdGVycygpCit7CisgICAgbUQzRFVuaWZvcm1CbG9ja3MuY2xlYXIoKTsKKwor
ICAgIC8vIEFzc2lnbiByZWdpc3RlcnMgYW5kIHVwZGF0ZSBzaXplcy4KKyAgICBjb25zdCBTaGFk
ZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obURhdGEuZ2V0
QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7CisgICAgY29uc3QgU2hhZGVyRDNEICpmcmFnbWVudFNo
YWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1EYXRhLmdldEF0dGFjaGVkRnJhZ21lbnRT
aGFkZXIoKSk7CisKKyAgICBmb3IgKGNvbnN0IGdsOjpVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9j
ayA6IG1EYXRhLmdldFVuaWZvcm1CbG9ja3MoKSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGlu
dCB1bmlmb3JtQmxvY2tFbGVtZW50ID0gdW5pZm9ybUJsb2NrLmlzQXJyYXkgPyB1bmlmb3JtQmxv
Y2suYXJyYXlFbGVtZW50IDogMDsKKworICAgICAgICBEM0RVbmlmb3JtQmxvY2sgZDNkVW5pZm9y
bUJsb2NrOworCisgICAgICAgIGlmICh1bmlmb3JtQmxvY2sudmVydGV4U3RhdGljVXNlKQorICAg
ICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZVJlZ2lzdGVyID0KKyAgICAgICAg
ICAgICAgICB2ZXJ0ZXhTaGFkZXJEM0QtPmdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIodW5pZm9y
bUJsb2NrLm5hbWUpOworICAgICAgICAgICAgZDNkVW5pZm9ybUJsb2NrLnZzUmVnaXN0ZXJJbmRl
eCA9IGJhc2VSZWdpc3RlciArIHVuaWZvcm1CbG9ja0VsZW1lbnQ7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAodW5pZm9ybUJsb2NrLmZyYWdtZW50U3RhdGljVXNlKQorICAgICAgICB7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZVJlZ2lzdGVyID0KKyAgICAgICAgICAgICAgICBmcmFn
bWVudFNoYWRlckQzRC0+Z2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcih1bmlmb3JtQmxvY2submFt
ZSk7CisgICAgICAgICAgICBkM2RVbmlmb3JtQmxvY2sucHNSZWdpc3RlckluZGV4ID0gYmFzZVJl
Z2lzdGVyICsgdW5pZm9ybUJsb2NrRWxlbWVudDsKKyAgICAgICAgfQorCisgICAgICAgIG1EM0RV
bmlmb3JtQmxvY2tzLnB1c2hfYmFjayhkM2RVbmlmb3JtQmxvY2spOworICAgIH0KK30KKwogdm9p
ZCBQcm9ncmFtRDNEOjppbml0aWFsaXplVW5pZm9ybVN0b3JhZ2UoKQogewogICAgIC8vIENvbXB1
dGUgdG90YWwgZGVmYXVsdCBibG9jayBzaXplCi0gICAgdW5zaWduZWQgaW50IHZlcnRleFJlZ2lz
dGVycyA9IDA7CisgICAgdW5zaWduZWQgaW50IHZlcnRleFJlZ2lzdGVycyAgID0gMDsKICAgICB1
bnNpZ25lZCBpbnQgZnJhZ21lbnRSZWdpc3RlcnMgPSAwOwotICAgIGZvciAoc2l6ZV90IHVuaWZv
cm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG1Vbmlmb3Jtcy5zaXplKCk7IHVuaWZvcm1JbmRl
eCsrKQorICAgIGZvciAoY29uc3QgRDNEVW5pZm9ybSAqZDNkVW5pZm9ybSA6IG1EM0RVbmlmb3Jt
cykKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gKm1V
bmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwotCi0gICAgICAgIGlmICghZ2w6OklzU2FtcGxlclR5cGUo
dW5pZm9ybS50eXBlKSkKKyAgICAgICAgaWYgKCFkM2RVbmlmb3JtLT5pc1NhbXBsZXIoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKHVuaWZvcm0uaXNSZWZlcmVuY2VkQnlWZXJ0ZXhTaGFk
ZXIoKSkKKyAgICAgICAgICAgIGlmIChkM2RVbmlmb3JtLT5pc1JlZmVyZW5jZWRCeVZlcnRleFNo
YWRlcigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZlcnRleFJlZ2lzdGVycyA9
IHN0ZDo6bWF4KHZlcnRleFJlZ2lzdGVycywgdW5pZm9ybS52c1JlZ2lzdGVySW5kZXggKyB1bmlm
b3JtLnJlZ2lzdGVyQ291bnQpOworICAgICAgICAgICAgICAgIHZlcnRleFJlZ2lzdGVycyA9IHN0
ZDo6bWF4KHZlcnRleFJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkM2RVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXggKyBkM2RVbmlmb3JtLT5yZWdp
c3RlckNvdW50KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh1bmlmb3JtLmlzUmVm
ZXJlbmNlZEJ5RnJhZ21lbnRTaGFkZXIoKSkKKyAgICAgICAgICAgIGlmIChkM2RVbmlmb3JtLT5p
c1JlZmVyZW5jZWRCeUZyYWdtZW50U2hhZGVyKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZnJhZ21lbnRSZWdpc3RlcnMgPSBzdGQ6Om1heChmcmFnbWVudFJlZ2lzdGVycywgdW5p
Zm9ybS5wc1JlZ2lzdGVySW5kZXggKyB1bmlmb3JtLnJlZ2lzdGVyQ291bnQpOworICAgICAgICAg
ICAgICAgIGZyYWdtZW50UmVnaXN0ZXJzID0gc3RkOjptYXgoCisgICAgICAgICAgICAgICAgICAg
IGZyYWdtZW50UmVnaXN0ZXJzLCBkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggKyBkM2RVbmlm
b3JtLT5yZWdpc3RlckNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAot
ICAgIG1WZXJ0ZXhVbmlmb3JtU3RvcmFnZSA9IG1SZW5kZXJlci0+Y3JlYXRlVW5pZm9ybVN0b3Jh
Z2UodmVydGV4UmVnaXN0ZXJzICogMTZ1KTsKKyAgICBtVmVydGV4VW5pZm9ybVN0b3JhZ2UgICA9
IG1SZW5kZXJlci0+Y3JlYXRlVW5pZm9ybVN0b3JhZ2UodmVydGV4UmVnaXN0ZXJzICogMTZ1KTsK
ICAgICBtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZSA9IG1SZW5kZXJlci0+Y3JlYXRlVW5pZm9ybVN0
b3JhZ2UoZnJhZ21lbnRSZWdpc3RlcnMgKiAxNnUpOwogfQogCi1nbDo6RXJyb3IgUHJvZ3JhbUQz
RDo6YXBwbHlVbmlmb3JtcygpCitnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6YXBwbHlVbmlmb3JtcyhH
TGVudW0gZHJhd01vZGUpCiB7Ci0gICAgdXBkYXRlU2FtcGxlck1hcHBpbmcoKTsKKyAgICBBU1NF
UlQoIW1EaXJ0eVNhbXBsZXJNYXBwaW5nKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5k
ZXJlci0+YXBwbHlVbmlmb3JtcygqdGhpcywgbVVuaWZvcm1zKTsKKyAgICBnbDo6RXJyb3IgZXJy
b3IgPSBtUmVuZGVyZXItPmFwcGx5VW5pZm9ybXMoKnRoaXMsIGRyYXdNb2RlLCBtRDNEVW5pZm9y
bXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJy
b3I7CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUlu
ZGV4IDwgbVVuaWZvcm1zLnNpemUoKTsgdW5pZm9ybUluZGV4KyspCisgICAgZm9yIChEM0RVbmlm
b3JtICpkM2RVbmlmb3JtIDogbUQzRFVuaWZvcm1zKQogICAgIHsKLSAgICAgICAgbVVuaWZvcm1z
W3VuaWZvcm1JbmRleF0tPmRpcnR5ID0gZmFsc2U7CisgICAgICAgIGQzZFVuaWZvcm0tPmRpcnR5
ID0gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKLWdsOjpFcnJvciBQcm9ncmFtRDNEOjphcHBseVVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpE
YXRhICZkYXRhLCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZ3NbXSkKK2dsOjpFcnJvciBQcm9n
cmFtRDNEOjphcHBseVVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICZkYXRhKQogewotICAg
IEdMaW50IHZlcnRleFVuaWZvcm1CdWZmZXJzW2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVY
X1NIQURFUl9VTklGT1JNX0JVRkZFUlNdOwotICAgIEdMaW50IGZyYWdtZW50VW5pZm9ybUJ1ZmZl
cnNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9GUkFHTUVOVF9TSEFERVJfVU5JRk9STV9CVUZGRVJT
XTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXggPSAwOyByZWdpc3Rlcklu
ZGV4IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfU0hBREVSX1VOSUZPUk1fQlVGRkVS
UzsgKytyZWdpc3RlckluZGV4KQorICAgIGlmIChtRGF0YS5nZXRVbmlmb3JtQmxvY2tzKCkuZW1w
dHkoKSkKICAgICB7Ci0gICAgICAgIHZlcnRleFVuaWZvcm1CdWZmZXJzW3JlZ2lzdGVySW5kZXhd
ID0gLTE7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogICAgIH0KIAot
ICAgIGZvciAodW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXggPSAwOyByZWdpc3RlckluZGV4IDwg
Z2w6OklNUExFTUVOVEFUSU9OX01BWF9GUkFHTUVOVF9TSEFERVJfVU5JRk9STV9CVUZGRVJTOyAr
K3JlZ2lzdGVySW5kZXgpCisgICAgLy8gTGF6eSBpbml0LgorICAgIGlmIChtRDNEVW5pZm9ybUJs
b2Nrcy5lbXB0eSgpKQogICAgIHsKLSAgICAgICAgZnJhZ21lbnRVbmlmb3JtQnVmZmVyc1tyZWdp
c3RlckluZGV4XSA9IC0xOworICAgICAgICBhc3NpZ25Vbmlmb3JtQmxvY2tSZWdpc3RlcnMoKTsK
ICAgICB9CiAKKyAgICBtVmVydGV4VUJPQ2FjaGUuY2xlYXIoKTsKKyAgICBtRnJhZ21lbnRVQk9D
YWNoZS5jbGVhcigpOworCiAgICAgY29uc3QgdW5zaWduZWQgaW50IHJlc2VydmVkQnVmZmVyc0lu
VlMgPSBtUmVuZGVyZXItPmdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKTsKICAgICBj
b25zdCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWRCdWZmZXJzSW5GUyA9IG1SZW5kZXJlci0+Z2V0UmVz
ZXJ2ZWRGcmFnbWVudFVuaWZvcm1CdWZmZXJzKCk7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCB1
bmlmb3JtQmxvY2tJbmRleCA9IDA7IHVuaWZvcm1CbG9ja0luZGV4IDwgbVVuaWZvcm1CbG9ja3Mu
c2l6ZSgpOyB1bmlmb3JtQmxvY2tJbmRleCsrKQorICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZv
cm1CbG9ja0luZGV4ID0gMDsgdW5pZm9ybUJsb2NrSW5kZXggPCBtRDNEVW5pZm9ybUJsb2Nrcy5z
aXplKCk7CisgICAgICAgICB1bmlmb3JtQmxvY2tJbmRleCsrKQogICAgIHsKLSAgICAgICAgZ2w6
OlVuaWZvcm1CbG9jayAqdW5pZm9ybUJsb2NrID0gbVVuaWZvcm1CbG9ja3NbdW5pZm9ybUJsb2Nr
SW5kZXhdOwotICAgICAgICBHTHVpbnQgYmxvY2tCaW5kaW5nID0gdW5pZm9ybUJsb2NrQmluZGlu
Z3NbdW5pZm9ybUJsb2NrSW5kZXhdOworICAgICAgICBjb25zdCBEM0RVbmlmb3JtQmxvY2sgJnVu
aWZvcm1CbG9jayA9IG1EM0RVbmlmb3JtQmxvY2tzW3VuaWZvcm1CbG9ja0luZGV4XTsKKyAgICAg
ICAgR0x1aW50IGJsb2NrQmluZGluZyAgICAgICAgICAgICAgICAgPSBtRGF0YS5nZXRVbmlmb3Jt
QmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9ja0luZGV4KTsKIAotICAgICAgICBBU1NFUlQodW5pZm9y
bUJsb2NrKTsKLQogICAgICAgICAvLyBVbm5lY2Vzc2FyeSB0byBhcHBseSBhbiB1bnJlZmVyZW5j
ZWQgc3RhbmRhcmQgb3Igc2hhcmVkIFVCTwotICAgICAgICBpZiAoIXVuaWZvcm1CbG9jay0+aXNS
ZWZlcmVuY2VkQnlWZXJ0ZXhTaGFkZXIoKSAmJiAhdW5pZm9ybUJsb2NrLT5pc1JlZmVyZW5jZWRC
eUZyYWdtZW50U2hhZGVyKCkpCisgICAgICAgIGlmICghdW5pZm9ybUJsb2NrLnZlcnRleFN0YXRp
Y1VzZSgpICYmICF1bmlmb3JtQmxvY2suZnJhZ21lbnRTdGF0aWNVc2UoKSkKICAgICAgICAgewog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodW5pZm9ybUJs
b2NrLT5pc1JlZmVyZW5jZWRCeVZlcnRleFNoYWRlcigpKQorICAgICAgICBpZiAodW5pZm9ybUJs
b2NrLnZlcnRleFN0YXRpY1VzZSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBp
bnQgcmVnaXN0ZXJJbmRleCA9IHVuaWZvcm1CbG9jay0+dnNSZWdpc3RlckluZGV4IC0gcmVzZXJ2
ZWRCdWZmZXJzSW5WUzsKLSAgICAgICAgICAgIEFTU0VSVCh2ZXJ0ZXhVbmlmb3JtQnVmZmVyc1ty
ZWdpc3RlckluZGV4XSA9PSAtMSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJ
bmRleCA9IHVuaWZvcm1CbG9jay52c1JlZ2lzdGVySW5kZXggLSByZXNlcnZlZEJ1ZmZlcnNJblZT
OwogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVySW5kZXggPCBkYXRhLmNhcHMtPm1heFZlcnRl
eFVuaWZvcm1CbG9ja3MpOwotICAgICAgICAgICAgdmVydGV4VW5pZm9ybUJ1ZmZlcnNbcmVnaXN0
ZXJJbmRleF0gPSBibG9ja0JpbmRpbmc7CisKKyAgICAgICAgICAgIGlmIChtVmVydGV4VUJPQ2Fj
aGUuc2l6ZSgpIDw9IHJlZ2lzdGVySW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgbVZlcnRleFVCT0NhY2hlLnJlc2l6ZShyZWdpc3RlckluZGV4ICsgMSwgLTEpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBBU1NFUlQobVZlcnRleFVCT0NhY2hlW3JlZ2lzdGVySW5k
ZXhdID09IC0xKTsKKyAgICAgICAgICAgIG1WZXJ0ZXhVQk9DYWNoZVtyZWdpc3RlckluZGV4XSA9
IGJsb2NrQmluZGluZzsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1bmlmb3JtQmxvY2stPmlz
UmVmZXJlbmNlZEJ5RnJhZ21lbnRTaGFkZXIoKSkKKyAgICAgICAgaWYgKHVuaWZvcm1CbG9jay5m
cmFnbWVudFN0YXRpY1VzZSgpKQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQg
cmVnaXN0ZXJJbmRleCA9IHVuaWZvcm1CbG9jay0+cHNSZWdpc3RlckluZGV4IC0gcmVzZXJ2ZWRC
dWZmZXJzSW5GUzsKLSAgICAgICAgICAgIEFTU0VSVChmcmFnbWVudFVuaWZvcm1CdWZmZXJzW3Jl
Z2lzdGVySW5kZXhdID09IC0xKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWdpc3Rlcklu
ZGV4ID0gdW5pZm9ybUJsb2NrLnBzUmVnaXN0ZXJJbmRleCAtIHJlc2VydmVkQnVmZmVyc0luRlM7
CiAgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJJbmRleCA8IGRhdGEuY2Fwcy0+bWF4RnJhZ21l
bnRVbmlmb3JtQmxvY2tzKTsKLSAgICAgICAgICAgIGZyYWdtZW50VW5pZm9ybUJ1ZmZlcnNbcmVn
aXN0ZXJJbmRleF0gPSBibG9ja0JpbmRpbmc7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXR1
cm4gbVJlbmRlcmVyLT5zZXRVbmlmb3JtQnVmZmVycyhkYXRhLCB2ZXJ0ZXhVbmlmb3JtQnVmZmVy
cywgZnJhZ21lbnRVbmlmb3JtQnVmZmVycyk7Ci19CisgICAgICAgICAgICBpZiAobUZyYWdtZW50
VUJPQ2FjaGUuc2l6ZSgpIDw9IHJlZ2lzdGVySW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbUZyYWdtZW50VUJPQ2FjaGUucmVzaXplKHJlZ2lzdGVySW5kZXggKyAxLCAtMSk7
CisgICAgICAgICAgICB9CiAKLWJvb2wgUHJvZ3JhbUQzRDo6YXNzaWduVW5pZm9ybUJsb2NrUmVn
aXN0ZXIoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpVbmlmb3JtQmxvY2sgKnVuaWZvcm1CbG9j
aywgR0xlbnVtIHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgsIGNvbnN0IGdsOjpDYXBzICZjYXBzKQot
ewotICAgIGlmIChzaGFkZXIgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICB7Ci0gICAgICAgIHVu
aWZvcm1CbG9jay0+dnNSZWdpc3RlckluZGV4ID0gcmVnaXN0ZXJJbmRleDsKLSAgICAgICAgaWYg
KHJlZ2lzdGVySW5kZXggLSBtUmVuZGVyZXItPmdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZl
cnMoKSA+PSBjYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGluZm9Mb2cuYXBwZW5kKCJWZXJ0ZXggc2hhZGVyIHVuaWZvcm0gYmxvY2sgY291bnQgZXhj
ZWVkIEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgKCV1KSIsIGNhcHMubWF4VmVydGV4VW5p
Zm9ybUJsb2Nrcyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBBU1NF
UlQobUZyYWdtZW50VUJPQ2FjaGVbcmVnaXN0ZXJJbmRleF0gPT0gLTEpOworICAgICAgICAgICAg
bUZyYWdtZW50VUJPQ2FjaGVbcmVnaXN0ZXJJbmRleF0gPSBibG9ja0JpbmRpbmc7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgZWxzZSBpZiAoc2hhZGVyID09IEdMX0ZSQUdNRU5UX1NIQURFUikKLSAg
ICB7Ci0gICAgICAgIHVuaWZvcm1CbG9jay0+cHNSZWdpc3RlckluZGV4ID0gcmVnaXN0ZXJJbmRl
eDsKLSAgICAgICAgaWYgKHJlZ2lzdGVySW5kZXggLSBtUmVuZGVyZXItPmdldFJlc2VydmVkRnJh
Z21lbnRVbmlmb3JtQnVmZmVycygpID49IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRnJhZ21lbnQgc2hhZGVyIHVu
aWZvcm0gYmxvY2sgY291bnQgZXhjZWVkIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX0JMT0NLUyAo
JXUpIiwgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MpOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIAotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBtUmVuZGVyZXItPnNldFVuaWZvcm1CdWZmZXJzKGRh
dGEsIG1WZXJ0ZXhVQk9DYWNoZSwgbUZyYWdtZW50VUJPQ2FjaGUpOwogfQogCiB2b2lkIFByb2dy
YW1EM0Q6OmRpcnR5QWxsVW5pZm9ybXMoKQogewotICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3Jt
cyA9IG1Vbmlmb3Jtcy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaW5kZXggPSAwOyBp
bmRleCA8IG51bVVuaWZvcm1zOyBpbmRleCsrKQorICAgIGZvciAoRDNEVW5pZm9ybSAqZDNkVW5p
Zm9ybSA6IG1EM0RVbmlmb3JtcykKICAgICB7Ci0gICAgICAgIG1Vbmlmb3Jtc1tpbmRleF0tPmRp
cnR5ID0gdHJ1ZTsKKyAgICAgICAgZDNkVW5pZm9ybS0+ZGlydHkgPSB0cnVlOwogICAgIH0KIH0K
IAotdm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQordm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtMWZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewogICAg
IHNldFVuaWZvcm0obG9jYXRpb24sIGNvdW50LCB2LCBHTF9GTE9BVCk7CiB9CkBAIC0xMjM1LDQ3
ICsxNjUyLDc0IEBACiAgICAgc2V0VW5pZm9ybShsb2NhdGlvbiwgY291bnQsIHYsIEdMX0ZMT0FU
X1ZFQzQpOwogfQogCi12b2lkIFByb2dyYW1EM0Q6OnNldFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxv
YXQgKnZhbHVlKQordm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5z
cG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSkKIHsKICAgICBzZXRVbmlmb3JtTWF0cml4ZnY8MiwgMj4obG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlLCBHTF9GTE9BVF9NQVQyKTsKIH0KIAotdm9pZCBQcm9ncmFtRDNE
OjpzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKK3ZvaWQgUHJvZ3JhbUQzRDo6
c2V0VW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgc2V0VW5pZm9ybU1h
dHJpeGZ2PDMsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwgR0xfRkxPQVRf
TUFUMyk7CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9h
dCAqdmFsdWUpCit2b2lkIFByb2dyYW1EM0Q6OnNldFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQg
KnZhbHVlKQogewogICAgIHNldFVuaWZvcm1NYXRyaXhmdjw0LCA0Pihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUsIEdMX0ZMT0FUX01BVDQpOwogfQogCi12b2lkIFByb2dyYW1EM0Q6
OnNldFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xi
b29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIFByb2dyYW1EM0Q6
OnNldFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgc2V0
VW5pZm9ybU1hdHJpeGZ2PDIsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSwg
R0xfRkxPQVRfTUFUMngzKTsKIH0KIAotdm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtTWF0cml4
M3gyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtTWF0cml4
M3gyZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIHNldFVuaWZvcm1NYXRyaXhmdjwz
LCAyPihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsIEdMX0ZMT0FUX01BVDN4Mik7
CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSkKK3ZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZSkKIHsKICAgICBzZXRVbmlmb3JtTWF0cml4ZnY8MiwgND4obG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlLCBHTF9GTE9BVF9NQVQyeDQpOwogfQogCi12b2lkIFByb2dy
YW1EM0Q6OnNldFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit2b2lkIFByb2dy
YW1EM0Q6OnNldFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAg
ICAgc2V0VW5pZm9ybU1hdHJpeGZ2PDQsIDI+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSwgR0xfRkxPQVRfTUFUNHgyKTsKIH0KIAotdm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3Jt
TWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQordm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3Jt
TWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIHNldFVuaWZvcm1NYXRy
aXhmdjwzLCA0Pihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUsIEdMX0ZMT0FUX01B
VDN4NCk7CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSkKK3ZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50
IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBzZXRVbmlmb3JtTWF0cml4ZnY8NCwgMz4obG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlLCBHTF9GTE9BVF9NQVQ0eDMpOwogfQpAQCAtMTMy
MCwxMDcgKzE3NjQsODggQEAKICAgICBzZXRVbmlmb3JtKGxvY2F0aW9uLCBjb3VudCwgdiwgR0xf
VU5TSUdORURfSU5UX1ZFQzQpOwogfQogCi12b2lkIFByb2dyYW1EM0Q6OmdldFVuaWZvcm1mdihH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKQordm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlm
b3JtQmxvY2tCaW5kaW5nKEdMdWludCAvKnVuaWZvcm1CbG9ja0luZGV4Ki8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IC8qdW5pZm9ybUJsb2NrQmluZGlu
ZyovKQogewotICAgIGdldFVuaWZvcm12KGxvY2F0aW9uLCBwYXJhbXMsIEdMX0ZMT0FUKTsKIH0K
IAotdm9pZCBQcm9ncmFtRDNEOjpnZXRVbmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMaW50ICpw
YXJhbXMpCit2b2lkIFByb2dyYW1EM0Q6OmRlZmluZVVuaWZvcm1zQW5kQXNzaWduUmVnaXN0ZXJz
KCkKIHsKLSAgICBnZXRVbmlmb3Jtdihsb2NhdGlvbiwgcGFyYW1zLCBHTF9JTlQpOwotfQorICAg
IEQzRFVuaWZvcm1NYXAgdW5pZm9ybU1hcDsKKyAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworICAgIGZvciAoY29uc3Qg
c2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0gOiB2ZXJ0ZXhTaGFkZXItPmdldFVuaWZvcm1zKCkp
CiAKLXZvaWQgUHJvZ3JhbUQzRDo6Z2V0VW5pZm9ybXVpdihHTGludCBsb2NhdGlvbiwgR0x1aW50
ICpwYXJhbXMpCi17Ci0gICAgZ2V0VW5pZm9ybXYobG9jYXRpb24sIHBhcmFtcywgR0xfVU5TSUdO
RURfSU5UKTsKLX0KLQotYm9vbCBQcm9ncmFtRDNEOjpsaW5rVW5pZm9ybXMoZ2w6OkluZm9Mb2cg
JmluZm9Mb2csIGNvbnN0IGdsOjpTaGFkZXIgJnZlcnRleFNoYWRlciwgY29uc3QgZ2w6OlNoYWRl
ciAmZnJhZ21lbnRTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6Q2FwcyAmY2FwcykKLXsKLSAgICBjb25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCA9
IEdldEltcGxBczxTaGFkZXJEM0Q+KCZ2ZXJ0ZXhTaGFkZXIpOwotICAgIGNvbnN0IFNoYWRlckQz
RCAqZnJhZ21lbnRTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPigmZnJhZ21lbnRTaGFk
ZXIpOwotCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZ2ZXJ0ZXhVbmlmb3Jt
cyA9IHZlcnRleFNoYWRlci5nZXRVbmlmb3JtcygpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNo
OjpVbmlmb3JtPiAmZnJhZ21lbnRVbmlmb3JtcyA9IGZyYWdtZW50U2hhZGVyLmdldFVuaWZvcm1z
KCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IHVuaWZvcm1zIGRlZmluZWQgaW4gdGhlIHZlcnRleCBh
bmQgZnJhZ21lbnQgc2hhZGVycyBhcmUgaWRlbnRpY2FsCi0gICAgdHlwZWRlZiBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgY29uc3Qgc2g6OlVuaWZvcm0qPiBVbmlmb3JtTWFwOwotICAgIFVuaWZvcm1N
YXAgbGlua2VkVW5pZm9ybXM7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCB2ZXJ0ZXhVbmlmb3Jt
SW5kZXggPSAwOyB2ZXJ0ZXhVbmlmb3JtSW5kZXggPCB2ZXJ0ZXhVbmlmb3Jtcy5zaXplKCk7IHZl
cnRleFVuaWZvcm1JbmRleCsrKQogICAgIHsKLSAgICAgICAgY29uc3Qgc2g6OlVuaWZvcm0gJnZl
cnRleFVuaWZvcm0gPSB2ZXJ0ZXhVbmlmb3Jtc1t2ZXJ0ZXhVbmlmb3JtSW5kZXhdOwotICAgICAg
ICBsaW5rZWRVbmlmb3Jtc1t2ZXJ0ZXhVbmlmb3JtLm5hbWVdID0gJnZlcnRleFVuaWZvcm07Ci0g
ICAgfQotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgZnJhZ21lbnRVbmlmb3JtSW5kZXggPSAwOyBm
cmFnbWVudFVuaWZvcm1JbmRleCA8IGZyYWdtZW50VW5pZm9ybXMuc2l6ZSgpOyBmcmFnbWVudFVu
aWZvcm1JbmRleCsrKQotICAgIHsKLSAgICAgICAgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50
VW5pZm9ybSA9IGZyYWdtZW50VW5pZm9ybXNbZnJhZ21lbnRVbmlmb3JtSW5kZXhdOwotICAgICAg
ICBVbmlmb3JtTWFwOjpjb25zdF9pdGVyYXRvciBlbnRyeSA9IGxpbmtlZFVuaWZvcm1zLmZpbmQo
ZnJhZ21lbnRVbmlmb3JtLm5hbWUpOwotICAgICAgICBpZiAoZW50cnkgIT0gbGlua2VkVW5pZm9y
bXMuZW5kKCkpCisgICAgICAgIGlmICh2ZXJ0ZXhVbmlmb3JtLnN0YXRpY1VzZSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0gPSAqZW50cnkt
PnNlY29uZDsKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFtZSA9ICJ1
bmlmb3JtICciICsgdmVydGV4VW5pZm9ybS5uYW1lICsgIiciOwotICAgICAgICAgICAgaWYgKCFn
bDo6UHJvZ3JhbTo6bGlua1ZhbGlkYXRlVW5pZm9ybXMoaW5mb0xvZywgdW5pZm9ybU5hbWUsIHZl
cnRleFVuaWZvcm0sIGZyYWdtZW50VW5pZm9ybSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmaW5lVW5p
Zm9ybUJhc2UodmVydGV4U2hhZGVyLCB2ZXJ0ZXhVbmlmb3JtLCAmdW5pZm9ybU1hcCk7CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlmb3JtSW5kZXggPSAwOyB1
bmlmb3JtSW5kZXggPCB2ZXJ0ZXhVbmlmb3Jtcy5zaXplKCk7IHVuaWZvcm1JbmRleCsrKQorICAg
IGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbURhdGEuZ2V0QXR0YWNoZWRGcmFn
bWVudFNoYWRlcigpOworICAgIGZvciAoY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9y
bSA6IGZyYWdtZW50U2hhZGVyLT5nZXRVbmlmb3JtcygpKQogICAgIHsKLSAgICAgICAgY29uc3Qg
c2g6OlVuaWZvcm0gJnVuaWZvcm0gPSB2ZXJ0ZXhVbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwotCi0g
ICAgICAgIGlmICh1bmlmb3JtLnN0YXRpY1VzZSkKKyAgICAgICAgaWYgKGZyYWdtZW50VW5pZm9y
bS5zdGF0aWNVc2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWdpc3Rl
ckJhc2UgPSB1bmlmb3JtLmlzQnVpbHRJbigpID8gR0xfSU5WQUxJRF9JTkRFWCA6Ci0gICAgICAg
ICAgICAgICAgdmVydGV4U2hhZGVyRDNELT5nZXRVbmlmb3JtUmVnaXN0ZXIodW5pZm9ybS5uYW1l
KTsKLSAgICAgICAgICAgIGRlZmluZVVuaWZvcm1CYXNlKHZlcnRleFNoYWRlckQzRCwgdW5pZm9y
bSwgcmVnaXN0ZXJCYXNlKTsKKyAgICAgICAgICAgIGRlZmluZVVuaWZvcm1CYXNlKGZyYWdtZW50
U2hhZGVyLCBmcmFnbWVudFVuaWZvcm0sICZ1bmlmb3JtTWFwKTsKICAgICAgICAgfQogICAgIH0K
IAotICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8
IGZyYWdtZW50VW5pZm9ybXMuc2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKKyAgICAvLyBJbml0aWFs
aXplIHRoZSBEM0RVbmlmb3JtIGxpc3QgdG8gbWlycm9yIHRoZSBpbmRleGluZyBvZiB0aGUgR0wg
bGF5ZXIuCisgICAgZm9yIChjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmZ2xVbmlmb3JtIDogbURh
dGEuZ2V0VW5pZm9ybXMoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlm
b3JtID0gZnJhZ21lbnRVbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOworICAgICAgICBpZiAoIWdsVW5p
Zm9ybS5pc0luRGVmYXVsdEJsb2NrKCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBpZiAodW5pZm9ybS5zdGF0aWNVc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGludCByZWdpc3RlckJhc2UgPSB1bmlmb3JtLmlzQnVpbHRJbigpID8gR0xfSU5WQUxJRF9JTkRF
WCA6Ci0gICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJEM0QtPmdldFVuaWZvcm1SZWdpc3Rl
cih1bmlmb3JtLm5hbWUpOwotICAgICAgICAgICAgZGVmaW5lVW5pZm9ybUJhc2UoZnJhZ21lbnRT
aGFkZXJEM0QsIHVuaWZvcm0sIHJlZ2lzdGVyQmFzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0
byBtYXBFbnRyeSA9IHVuaWZvcm1NYXAuZmluZChnbFVuaWZvcm0ubmFtZSk7CisgICAgICAgIEFT
U0VSVChtYXBFbnRyeSAhPSB1bmlmb3JtTWFwLmVuZCgpKTsKKyAgICAgICAgbUQzRFVuaWZvcm1z
LnB1c2hfYmFjayhtYXBFbnRyeS0+c2Vjb25kKTsKICAgICB9CiAKLSAgICBpZiAoIWluZGV4VW5p
Zm9ybXMoaW5mb0xvZywgY2FwcykpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCisgICAgYXNzaWduQWxsU2FtcGxlclJlZ2lzdGVycygpOwogICAgIGluaXRpYWxpemVVbmlm
b3JtU3RvcmFnZSgpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6
ZGVmaW5lVW5pZm9ybUJhc2UoY29uc3QgU2hhZGVyRDNEICpzaGFkZXIsIGNvbnN0IHNoOjpVbmlm
b3JtICZ1bmlmb3JtLCB1bnNpZ25lZCBpbnQgdW5pZm9ybVJlZ2lzdGVyKQordm9pZCBQcm9ncmFt
RDNEOjpkZWZpbmVVbmlmb3JtQmFzZShjb25zdCBnbDo6U2hhZGVyICpzaGFkZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RVbmlmb3JtTWFwICp1bmlmb3Jt
TWFwKQogewotICAgIGlmICh1bmlmb3JtUmVnaXN0ZXIgPT0gR0xfSU5WQUxJRF9JTkRFWCkKKyAg
ICAvLyBTYW1wbGVycyBnZXQgdGhlaXIgcmVnaXN0ZXJzIGFzc2lnbmVkIGluIGFzc2lnbkFsbFNh
bXBsZXJSZWdpc3RlcnMuCisgICAgaWYgKHVuaWZvcm0uaXNCdWlsdEluKCkgfHwgZ2w6OklzU2Ft
cGxlclR5cGUodW5pZm9ybS50eXBlKSkKICAgICB7Ci0gICAgICAgIGRlZmluZVVuaWZvcm0oc2hh
ZGVyLCB1bmlmb3JtLCB1bmlmb3JtLm5hbWUsIG51bGxwdHIpOworICAgICAgICBkZWZpbmVVbmlm
b3JtKHNoYWRlci0+Z2V0VHlwZSgpLCB1bmlmb3JtLCB1bmlmb3JtLm5hbWUsIG51bGxwdHIsIHVu
aWZvcm1NYXApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2hTaGFkZXJPdXRwdXQg
b3V0cHV0VHlwZSA9IHNoYWRlci0+Z2V0Q29tcGlsZXJPdXRwdXRUeXBlKCk7CisgICAgY29uc3Qg
U2hhZGVyRDNEICpzaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihzaGFkZXIpOworCisg
ICAgdW5zaWduZWQgaW50IHN0YXJ0UmVnaXN0ZXIgPSBzaGFkZXJEM0QtPmdldFVuaWZvcm1SZWdp
c3Rlcih1bmlmb3JtLm5hbWUpOworICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUgPSBzaGFk
ZXJEM0QtPmdldENvbXBpbGVyT3V0cHV0VHlwZSgpOwogICAgIHNoOjpITFNMQmxvY2tFbmNvZGVy
IGVuY29kZXIoc2g6OkhMU0xCbG9ja0VuY29kZXI6OkdldFN0cmF0ZWd5Rm9yKG91dHB1dFR5cGUp
KTsKLSAgICBlbmNvZGVyLnNraXBSZWdpc3RlcnModW5pZm9ybVJlZ2lzdGVyKTsKKyAgICBlbmNv
ZGVyLnNraXBSZWdpc3RlcnMoc3RhcnRSZWdpc3Rlcik7CiAKLSAgICBkZWZpbmVVbmlmb3JtKHNo
YWRlciwgdW5pZm9ybSwgdW5pZm9ybS5uYW1lLCAmZW5jb2Rlcik7CisgICAgZGVmaW5lVW5pZm9y
bShzaGFkZXItPmdldFR5cGUoKSwgdW5pZm9ybSwgdW5pZm9ybS5uYW1lLCAmZW5jb2RlciwgdW5p
Zm9ybU1hcCk7CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6ZGVmaW5lVW5pZm9ybShjb25zdCBTaGFk
ZXJEM0QgKnNoYWRlciwgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ1bmlmb3JtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmdWxsTmFtZSwgc2g6
OkhMU0xCbG9ja0VuY29kZXIgKmVuY29kZXIpCitEM0RVbmlmb3JtICpQcm9ncmFtRDNEOjpnZXRE
M0RVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQogeworICAgIGZvciAoRDNE
VW5pZm9ybSAqZDNkVW5pZm9ybSA6IG1EM0RVbmlmb3JtcykKKyAgICB7CisgICAgICAgIGlmIChk
M2RVbmlmb3JtLT5uYW1lID09IG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBk
M2RVbmlmb3JtOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3ZvaWQgUHJvZ3JhbUQzRDo6ZGVmaW5lVW5pZm9ybShHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnVuaWZv
cm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZ1
bGxOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpITFNMQmxvY2tFbmNv
ZGVyICplbmNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVuaWZvcm1N
YXAgKnVuaWZvcm1NYXApCit7CiAgICAgaWYgKHVuaWZvcm0uaXNTdHJ1Y3QoKSkKICAgICB7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8
IHVuaWZvcm0uZWxlbWVudENvdW50KCk7IGVsZW1lbnRJbmRleCsrKQpAQCAtMTQzMiw1NyArMTg1
Nyw3MCBAQAogCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBmaWVsZEluZGV4ID0gMDsgZmllbGRJ
bmRleCA8IHVuaWZvcm0uZmllbGRzLnNpemUoKTsgZmllbGRJbmRleCsrKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZmllbGQgPSB1bmlm
b3JtLmZpZWxkc1tmaWVsZEluZGV4XTsKKyAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVy
VmFyaWFibGUgJmZpZWxkICA9IHVuaWZvcm0uZmllbGRzW2ZpZWxkSW5kZXhdOwogICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmaWVsZEZ1bGxOYW1lID0gKGZ1bGxOYW1lICsgZWxl
bWVudFN0cmluZyArICIuIiArIGZpZWxkLm5hbWUpOwogCi0gICAgICAgICAgICAgICAgZGVmaW5l
VW5pZm9ybShzaGFkZXIsIGZpZWxkLCBmaWVsZEZ1bGxOYW1lLCBlbmNvZGVyKTsKKyAgICAgICAg
ICAgICAgICAvLyBTYW1wbGVycyBnZXQgdGhlaXIgcmVnaXN0ZXJzIGFzc2lnbmVkIGluIGFzc2ln
bkFsbFNhbXBsZXJSZWdpc3RlcnMuCisgICAgICAgICAgICAgICAgLy8gQWxzbyB0aGV5IGNvdWxk
bid0IHVzZSB0aGUgc2FtZSBlbmNvZGVyIGFzIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3QsIHNpbmNl
IHRoZXkgYXJlCisgICAgICAgICAgICAgICAgLy8gZXh0cmFjdGVkIG91dCBvZiB0aGUgc3RydWN0
IGJ5IHRoZSBzaGFkZXIgdHJhbnNsYXRvci4KKyAgICAgICAgICAgICAgICBpZiAoZ2w6OklzU2Ft
cGxlclR5cGUoZmllbGQudHlwZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBkZWZpbmVVbmlmb3JtKHNoYWRlclR5cGUsIGZpZWxkLCBmaWVsZEZ1bGxOYW1lLCBudWxs
cHRyLCB1bmlmb3JtTWFwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lVW5pZm9ybShz
aGFkZXJUeXBlLCBmaWVsZCwgZmllbGRGdWxsTmFtZSwgZW5jb2RlciwgdW5pZm9ybU1hcCk7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZW5jb2Rl
cikKICAgICAgICAgICAgICAgICBlbmNvZGVyLT5leGl0QWdncmVnYXRlVHlwZSgpOwogICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWxzZSAvLyBOb3QgYSBzdHJ1Y3QKKwor
ICAgIC8vIE5vdCBhIHN0cnVjdC4gQXJyYXlzIGFyZSB0cmVhdGVkIGFzIGFnZ3JlZ2F0ZSB0eXBl
cy4KKyAgICBpZiAodW5pZm9ybS5pc0FycmF5KCkgJiYgZW5jb2RlcikKICAgICB7Ci0gICAgICAg
IC8vIEFycmF5cyBhcmUgdHJlYXRlZCBhcyBhZ2dyZWdhdGUgdHlwZXMKLSAgICAgICAgaWYgKHVu
aWZvcm0uaXNBcnJheSgpICYmIGVuY29kZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVuY29k
ZXItPmVudGVyQWdncmVnYXRlVHlwZSgpOwotICAgICAgICB9CisgICAgICAgIGVuY29kZXItPmVu
dGVyQWdncmVnYXRlVHlwZSgpOworICAgIH0KIAotICAgICAgICBnbDo6TGlua2VkVW5pZm9ybSAq
bGlua2VkVW5pZm9ybSA9IGdldFVuaWZvcm1CeU5hbWUoZnVsbE5hbWUpOworICAgIC8vIEFkdmFu
Y2UgdGhlIHVuaWZvcm0gb2Zmc2V0LCB0byB0cmFjayByZWdpc3RlcnMgYWxsb2NhdGlvbiBmb3Ig
c3RydWN0cworICAgIHNoOjpCbG9ja01lbWJlckluZm8gYmxvY2tJbmZvID0KKyAgICAgICAgZW5j
b2RlciA/IGVuY29kZXItPmVuY29kZVR5cGUodW5pZm9ybS50eXBlLCB1bmlmb3JtLmFycmF5U2l6
ZSwgZmFsc2UpCisgICAgICAgICAgICAgICAgOiBzaDo6QmxvY2tNZW1iZXJJbmZvOjpnZXREZWZh
dWx0QmxvY2tJbmZvKCk7CiAKLSAgICAgICAgLy8gQWR2YW5jZSB0aGUgdW5pZm9ybSBvZmZzZXQs
IHRvIHRyYWNrIHJlZ2lzdGVycyBhbGxvY2F0aW9uIGZvciBzdHJ1Y3RzCi0gICAgICAgIHNoOjpC
bG9ja01lbWJlckluZm8gYmxvY2tJbmZvID0gZW5jb2RlciA/Ci0gICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGVUeXBlKHVuaWZvcm0udHlwZSwgdW5pZm9ybS5hcnJheVNpemUsIGZhbHNlKSA6Ci0g
ICAgICAgICAgICBzaDo6QmxvY2tNZW1iZXJJbmZvOjpnZXREZWZhdWx0QmxvY2tJbmZvKCk7Cisg
ICAgYXV0byB1bmlmb3JtTWFwRW50cnkgICA9IHVuaWZvcm1NYXAtPmZpbmQoZnVsbE5hbWUpOwor
ICAgIEQzRFVuaWZvcm0gKmQzZFVuaWZvcm0gPSBudWxscHRyOwogCi0gICAgICAgIGlmICghbGlu
a2VkVW5pZm9ybSkKKyAgICBpZiAodW5pZm9ybU1hcEVudHJ5ICE9IHVuaWZvcm1NYXAtPmVuZCgp
KQorICAgIHsKKyAgICAgICAgZDNkVW5pZm9ybSA9IHVuaWZvcm1NYXBFbnRyeS0+c2Vjb25kOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBkM2RVbmlmb3JtID0gbmV3IEQzRFVuaWZv
cm0odW5pZm9ybS50eXBlLCBmdWxsTmFtZSwgdW5pZm9ybS5hcnJheVNpemUsIHRydWUpOworICAg
ICAgICAoKnVuaWZvcm1NYXApW2Z1bGxOYW1lXSA9IGQzZFVuaWZvcm07CisgICAgfQorCisgICAg
aWYgKGVuY29kZXIpCisgICAgeworICAgICAgICBkM2RVbmlmb3JtLT5yZWdpc3RlckVsZW1lbnQg
PQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzaDo6SExTTEJsb2NrRW5j
b2Rlcjo6Z2V0QmxvY2tSZWdpc3RlckVsZW1lbnQoYmxvY2tJbmZvKSk7CisgICAgICAgIHVuc2ln
bmVkIGludCByZWcgPQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzaDo6
SExTTEJsb2NrRW5jb2Rlcjo6Z2V0QmxvY2tSZWdpc3RlcihibG9ja0luZm8pKTsKKyAgICAgICAg
aWYgKHNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBsaW5rZWRVbmlmb3JtID0gbmV3IGdsOjpMaW5rZWRVbmlmb3JtKHVuaWZvcm0udHlwZSwg
dW5pZm9ybS5wcmVjaXNpb24sIGZ1bGxOYW1lLCB1bmlmb3JtLmFycmF5U2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIHNoOjpCbG9ja01l
bWJlckluZm86OmdldERlZmF1bHRCbG9ja0luZm8oKSk7Ci0gICAgICAgICAgICBBU1NFUlQobGlu
a2VkVW5pZm9ybSk7Ci0KLSAgICAgICAgICAgIGlmIChlbmNvZGVyKQotICAgICAgICAgICAgICAg
IGxpbmtlZFVuaWZvcm0tPnJlZ2lzdGVyRWxlbWVudCA9IHNoOjpITFNMQmxvY2tFbmNvZGVyOjpn
ZXRCbG9ja1JlZ2lzdGVyRWxlbWVudChibG9ja0luZm8pOwotICAgICAgICAgICAgbVVuaWZvcm1z
LnB1c2hfYmFjayhsaW5rZWRVbmlmb3JtKTsKKyAgICAgICAgICAgIGQzZFVuaWZvcm0tPnBzUmVn
aXN0ZXJJbmRleCA9IHJlZzsKICAgICAgICAgfQotCi0gICAgICAgIGlmIChlbmNvZGVyKQorICAg
ICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChzaGFkZXItPmdldFNoYWRlclR5
cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgbGlua2VkVW5pZm9ybS0+cHNSZWdpc3RlckluZGV4ID0gc2g6OkhMU0xCbG9ja0VuY29kZXI6
OmdldEJsb2NrUmVnaXN0ZXIoYmxvY2tJbmZvKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UgaWYgKHNoYWRlci0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbGlua2VkVW5pZm9ybS0+dnNSZWdpc3Rlcklu
ZGV4ID0gc2g6OkhMU0xCbG9ja0VuY29kZXI6OmdldEJsb2NrUmVnaXN0ZXIoYmxvY2tJbmZvKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChzaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpOworICAgICAgICAgICAg
ZDNkVW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID0gcmVnOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gQXJyYXlzIGFyZSB0cmVhdGVkIGFzIGFnZ3JlZ2F0ZSB0eXBlcwotICAgICAgICBpZiAodW5p
Zm9ybS5pc0FycmF5KCkgJiYgZW5jb2RlcikKKyAgICAgICAgaWYgKHVuaWZvcm0uaXNBcnJheSgp
KQogICAgICAgICB7CiAgICAgICAgICAgICBlbmNvZGVyLT5leGl0QWdncmVnYXRlVHlwZSgpOwog
ICAgICAgICB9CkBAIC0xNDkwLDM0ICsxOTI4LDI0IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotc3RhdGljIGlubGluZSB2b2lkIFNldElmRGlydHkoVCAqZGVzdCwgY29uc3QgVCYgc291
cmNlLCBib29sICpkaXJ0eUZsYWcpCit2b2lkIFByb2dyYW1EM0Q6OnNldFVuaWZvcm0oR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnRJbiwgY29uc3QgVCAqdiwgR0xlbnVtIHRhcmdldFVuaWZv
cm1UeXBlKQogewotICAgIEFTU0VSVChkZXN0ICE9IE5VTEwpOwotICAgIEFTU0VSVChkaXJ0eUZs
YWcgIT0gTlVMTCk7Ci0KLSAgICAqZGlydHlGbGFnID0gKmRpcnR5RmxhZyB8fCAobWVtY21wKGRl
c3QsICZzb3VyY2UsIHNpemVvZihUKSkgIT0gMCk7Ci0gICAgKmRlc3QgPSBzb3VyY2U7Ci19Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtKEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBUKiB2LCBHTGVudW0gdGFyZ2V0VW5pZm9y
bVR5cGUpCi17Ci0gICAgY29uc3QgaW50IGNvbXBvbmVudHMgPSBnbDo6VmFyaWFibGVDb21wb25l
bnRDb3VudCh0YXJnZXRVbmlmb3JtVHlwZSk7CisgICAgY29uc3QgaW50IGNvbXBvbmVudHMgICAg
ICAgID0gZ2w6OlZhcmlhYmxlQ29tcG9uZW50Q291bnQodGFyZ2V0VW5pZm9ybVR5cGUpOwogICAg
IGNvbnN0IEdMZW51bSB0YXJnZXRCb29sVHlwZSA9IGdsOjpWYXJpYWJsZUJvb2xWZWN0b3JUeXBl
KHRhcmdldFVuaWZvcm1UeXBlKTsKIAotICAgIGdsOjpMaW5rZWRVbmlmb3JtICp0YXJnZXRVbmlm
b3JtID0gZ2V0VW5pZm9ybUJ5TG9jYXRpb24obG9jYXRpb24pOworICAgIEQzRFVuaWZvcm0gKnRh
cmdldFVuaWZvcm0gPSBnZXREM0RVbmlmb3JtRnJvbUxvY2F0aW9uKGxvY2F0aW9uKTsKIAotICAg
IGludCBlbGVtZW50Q291bnQgPSB0YXJnZXRVbmlmb3JtLT5lbGVtZW50Q291bnQoKTsKKyAgICB1
bnNpZ25lZCBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7
CisgICAgdW5zaWduZWQgaW50IGFycmF5RWxlbWVudCA9IG1EYXRhLmdldFVuaWZvcm1Mb2NhdGlv
bnMoKVtsb2NhdGlvbl0uZWxlbWVudDsKKyAgICB1bnNpZ25lZCBpbnQgY291bnQgICAgICAgID0g
c3RkOjptaW4oZWxlbWVudENvdW50IC0gYXJyYXlFbGVtZW50LCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KGNvdW50SW4pKTsKIAotICAgIGNvdW50ID0gc3RkOjptaW4oZWxlbWVudENvdW50IC0g
KGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7Ci0KICAgICBpZiAo
dGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSB0YXJnZXRVbmlmb3JtVHlwZSkKICAgICB7Ci0gICAgICAg
IFQgKnRhcmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHRhcmdldFVuaWZvcm0tPmRhdGEpICsg
bVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CisgICAgICAgIFQgKnRhcmdldCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8VCAqPih0YXJnZXRVbmlmb3JtLT5kYXRhKSArIGFycmF5RWxlbWVu
dCAqIDQ7CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFQgKmRlc3QgPSB0YXJnZXQgKyAoaSAqIDQpOworICAgICAgICAgICAgVCAqZGVz
dCAgICAgICAgID0gdGFyZ2V0ICsgKGkgKiA0KTsKICAgICAgICAgICAgIGNvbnN0IFQgKnNvdXJj
ZSA9IHYgKyAoaSAqIGNvbXBvbmVudHMpOwogCiAgICAgICAgICAgICBmb3IgKGludCBjID0gMDsg
YyA8IGNvbXBvbmVudHM7IGMrKykKQEAgLTE1MzIsMTYgKzE5NjAsMTcgQEAKICAgICB9CiAgICAg
ZWxzZSBpZiAodGFyZ2V0VW5pZm9ybS0+dHlwZSA9PSB0YXJnZXRCb29sVHlwZSkKICAgICB7Ci0g
ICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KHRhcmdl
dFVuaWZvcm0tPmRhdGEpICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7Cisg
ICAgICAgIEdMaW50ICpib29sUGFyYW1zID0gcmVpbnRlcnByZXRfY2FzdDxHTGludCAqPih0YXJn
ZXRVbmlmb3JtLT5kYXRhKSArIGFycmF5RWxlbWVudCAqIDQ7CiAKLSAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IGNvdW50OyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIEdMaW50ICpkZXN0ID0gYm9v
bFBhcmFtcyArIChpICogNCk7CisgICAgICAgICAgICBHTGludCAqZGVzdCAgICAgPSBib29sUGFy
YW1zICsgKGkgKiA0KTsKICAgICAgICAgICAgIGNvbnN0IFQgKnNvdXJjZSA9IHYgKyAoaSAqIGNv
bXBvbmVudHMpOwogCiAgICAgICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbXBvbmVudHM7
IGMrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTZXRJZkRpcnR5KGRlc3QgKyBj
LCAoc291cmNlW2NdID09IHN0YXRpY19jYXN0PFQ+KDApKSA/IEdMX0ZBTFNFIDogR0xfVFJVRSwg
JnRhcmdldFVuaWZvcm0tPmRpcnR5KTsKKyAgICAgICAgICAgICAgICBTZXRJZkRpcnR5KGRlc3Qg
KyBjLCAoc291cmNlW2NdID09IHN0YXRpY19jYXN0PFQ+KDApKSA/IEdMX0ZBTFNFIDogR0xfVFJV
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXRVbmlmb3JtLT5kaXJ0eSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGludCBjID0gY29tcG9uZW50czsgYyA8IDQ7
IGMrKykKICAgICAgICAgICAgIHsKQEAgLTE1NDksMTggKzE5NzgsMTggQEAKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChnbDo6SXNTYW1wbGVyVHlwZSh0YXJn
ZXRVbmlmb3JtLT50eXBlKSkKKyAgICBlbHNlIGlmICh0YXJnZXRVbmlmb3JtLT5pc1NhbXBsZXIo
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0YXJnZXRVbmlmb3JtVHlwZSA9PSBHTF9JTlQpOwog
Ci0gICAgICAgIEdMaW50ICp0YXJnZXQgPSByZWludGVycHJldF9jYXN0PEdMaW50Kj4odGFyZ2V0
VW5pZm9ybS0+ZGF0YSkgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKKyAg
ICAgICAgR0xpbnQgKnRhcmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQgKj4odGFyZ2V0VW5p
Zm9ybS0+ZGF0YSkgKyBhcnJheUVsZW1lbnQgKiA0OwogCiAgICAgICAgIGJvb2wgd2FzRGlydHkg
PSB0YXJnZXRVbmlmb3JtLT5kaXJ0eTsKIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKICAgICAgICAgewotICAgICAgICAgICAgR0xpbnQgKmRlc3QgPSB0YXJnZXQgKyAoaSAqIDQp
OwotICAgICAgICAgICAgY29uc3QgR0xpbnQgKnNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0xpbnQqPih2KSArIChpICogY29tcG9uZW50cyk7CisgICAgICAgICAgICBHTGludCAqZGVz
dCAgICAgICAgID0gdGFyZ2V0ICsgKGkgKiA0KTsKKyAgICAgICAgICAgIGNvbnN0IEdMaW50ICpz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEdMaW50ICo+KHYpICsgKGkgKiBjb21wb25l
bnRzKTsKIAogICAgICAgICAgICAgU2V0SWZEaXJ0eShkZXN0ICsgMCwgc291cmNlWzBdLCAmdGFy
Z2V0VW5pZm9ybS0+ZGlydHkpOwogICAgICAgICAgICAgU2V0SWZEaXJ0eShkZXN0ICsgMSwgMCwg
JnRhcmdldFVuaWZvcm0tPmRpcnR5KTsKQEAgLTE1NzMsNDA4ICsyMDAyLDE0NiBAQAogICAgICAg
ICAgICAgbURpcnR5U2FtcGxlck1hcHBpbmcgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAg
IGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICBlbHNlCisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIHRyYW5zcG9zZU1hdHJpeChUICp0YXJnZXQs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlLCBpbnQgdGFyZ2V0V2lkdGgsIGludCB0YXJnZXRIZWlnaHQs
IGludCBzcmNXaWR0aCwgaW50IHNyY0hlaWdodCkKLXsKLSAgICBib29sIGRpcnR5ID0gZmFsc2U7
Ci0gICAgaW50IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdldEhlaWdodCwgc3JjV2lkdGgpOwot
ICAgIGludCBjb3B5SGVpZ2h0ID0gc3RkOjptaW4odGFyZ2V0V2lkdGgsIHNyY0hlaWdodCk7Ci0K
LSAgICBmb3IgKGludCB4ID0gMDsgeCA8IGNvcHlXaWR0aDsgeCsrKQotICAgIHsKLSAgICAgICAg
Zm9yIChpbnQgeSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHggKiB0YXJnZXRXaWR0aCArIHkpLCBzdGF0aWNfY2Fz
dDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSksICZkaXJ0eSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgLy8gY2xlYXIgdW5maWxsZWQgcmlnaHQgc2lkZQotICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgY29weVdpZHRoOyB5KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB4ID0gY29weUhlaWdo
dDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNldElmRGly
dHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0aCArIHgpLCBzdGF0aWNfY2FzdDxUPigwKSwgJmRp
cnR5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyBjbGVhciB1bmZpbGxlZCBib3R0b20uCi0g
ICAgZm9yIChpbnQgeSA9IGNvcHlXaWR0aDsgeSA8IHRhcmdldEhlaWdodDsgeSsrKQotICAgIHsK
LSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB0YXJnZXRXaWR0aDsgeCsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBTZXRJZkRpcnR5KHRhcmdldCArICh5ICogdGFyZ2V0V2lkdGggKyB4KSwg
c3RhdGljX2Nhc3Q8VD4oMCksICZkaXJ0eSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1
cm4gZGlydHk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIGV4cGFuZE1hdHJpeChU
ICp0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlLCBpbnQgdGFyZ2V0V2lkdGgsIGludCB0YXJn
ZXRIZWlnaHQsIGludCBzcmNXaWR0aCwgaW50IHNyY0hlaWdodCkKLXsKLSAgICBib29sIGRpcnR5
ID0gZmFsc2U7Ci0gICAgaW50IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNX
aWR0aCk7Ci0gICAgaW50IGNvcHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY0hl
aWdodCk7Ci0KLSAgICBmb3IgKGludCB5ID0gMDsgeSA8IGNvcHlIZWlnaHQ7IHkrKykKLSAgICB7
Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgY29weVdpZHRoOyB4KyspCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0aCArIHgpLCBz
dGF0aWNfY2FzdDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSksICZkaXJ0eSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgLy8gY2xlYXIgdW5maWxsZWQgcmlnaHQgc2lkZQotICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgY29weUhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9
IGNvcHlXaWR0aDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IFNldElmRGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0aCArIHgpLCBzdGF0aWNfY2FzdDxU
PigwKSwgJmRpcnR5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyBjbGVhciB1bmZpbGxlZCBi
b3R0b20uCi0gICAgZm9yIChpbnQgeSA9IGNvcHlIZWlnaHQ7IHkgPCB0YXJnZXRIZWlnaHQ7IHkr
KykKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdGFyZ2V0V2lkdGg7IHgrKykK
LSAgICAgICAgewotICAgICAgICAgICAgU2V0SWZEaXJ0eSh0YXJnZXQgKyAoeSAqIHRhcmdldFdp
ZHRoICsgeCksIHN0YXRpY19jYXN0PFQ+KDApLCAmZGlydHkpOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIGRpcnR5OwotfQotCiB0ZW1wbGF0ZSA8aW50IGNvbHMsIGludCByb3dzPgot
dm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtTWF0cml4ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlLCBHTGVu
dW0gdGFyZ2V0VW5pZm9ybVR5cGUpCit2b2lkIFByb2dyYW1EM0Q6OnNldFVuaWZvcm1NYXRyaXhm
dihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXRVbmlmb3JtVHlwZSkKIHsKLSAgICBnbDo6TGlua2VkVW5pZm9ybSAqdGFyZ2V0
VW5pZm9ybSA9IGdldFVuaWZvcm1CeUxvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICBEM0RVbmlmb3Jt
ICp0YXJnZXRVbmlmb3JtID0gZ2V0RDNEVW5pZm9ybUZyb21Mb2NhdGlvbihsb2NhdGlvbik7CiAK
LSAgICBpbnQgZWxlbWVudENvdW50ID0gdGFyZ2V0VW5pZm9ybS0+ZWxlbWVudENvdW50KCk7Cisg
ICAgdW5zaWduZWQgaW50IGVsZW1lbnRDb3VudCA9IHRhcmdldFVuaWZvcm0tPmVsZW1lbnRDb3Vu
dCgpOworICAgIHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSBtRGF0YS5nZXRVbmlmb3JtTG9j
YXRpb25zKClbbG9jYXRpb25dLmVsZW1lbnQ7CisgICAgdW5zaWduZWQgaW50IGNvdW50ICAgICAg
ICA9IHN0ZDo6bWluKGVsZW1lbnRDb3VudCAtIGFycmF5RWxlbWVudCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pihjb3VudEluKSk7CiAKLSAgICBjb3VudCA9IHN0ZDo6bWluKGVsZW1lbnRDb3Vu
dCAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOwogICAgIGNv
bnN0IHVuc2lnbmVkIGludCB0YXJnZXRNYXRyaXhTdHJpZGUgPSAoNCAqIHJvd3MpOwotICAgIEdM
ZmxvYXQgKnRhcmdldCA9IChHTGZsb2F0KikodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3Jt
SW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xmbG9hdCkgKiB0YXJnZXRNYXRyaXhT
dHJpZGUpOworICAgIEdMZmxvYXQgKnRhcmdldCA9CisgICAgICAgIChHTGZsb2F0ICopKHRhcmdl
dFVuaWZvcm0tPmRhdGEgKyBhcnJheUVsZW1lbnQgKiBzaXplb2YoR0xmbG9hdCkgKiB0YXJnZXRN
YXRyaXhTdHJpZGUpOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICB7CiAgICAgICAg
IC8vIEludGVybmFsbHkgc3RvcmUgbWF0cmljZXMgYXMgdHJhbnNwb3NlZCB2ZXJzaW9ucyB0byBh
Y2NvbW9kYXRlIEhMU0wgbWF0cml4IGluZGV4aW5nCiAgICAgICAgIGlmICh0cmFuc3Bvc2UgPT0g
R0xfRkFMU0UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0g
dHJhbnNwb3NlTWF0cml4PEdMZmxvYXQ+KHRhcmdldCwgdmFsdWUsIDQsIHJvd3MsIHJvd3MsIGNv
bHMpIHx8IHRhcmdldFVuaWZvcm0tPmRpcnR5OworICAgICAgICAgICAgdGFyZ2V0VW5pZm9ybS0+
ZGlydHkgPSBUcmFuc3Bvc2VNYXRyaXg8R0xmbG9hdD4odGFyZ2V0LCB2YWx1ZSwgNCwgcm93cywg
cm93cywgY29scykgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0
VW5pZm9ybS0+ZGlydHk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAg
ICAgICAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0eSA9IGV4cGFuZE1hdHJpeDxHTGZsb2F0Pih0YXJn
ZXQsIHZhbHVlLCA0LCByb3dzLCBjb2xzLCByb3dzKSB8fCB0YXJnZXRVbmlmb3JtLT5kaXJ0eTsK
KyAgICAgICAgICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5ID0KKyAgICAgICAgICAgICAgICBFeHBh
bmRNYXRyaXg8R0xmbG9hdD4odGFyZ2V0LCB2YWx1ZSwgNCwgcm93cywgY29scywgcm93cykgfHwg
dGFyZ2V0VW5pZm9ybS0+ZGlydHk7CiAgICAgICAgIH0KICAgICAgICAgdGFyZ2V0ICs9IHRhcmdl
dE1hdHJpeFN0cmlkZTsKICAgICAgICAgdmFsdWUgKz0gY29scyAqIHJvd3M7CiAgICAgfQogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUHJvZ3JhbUQzRDo6Z2V0VW5pZm9ybXYoR0xp
bnQgbG9jYXRpb24sIFQgKnBhcmFtcywgR0xlbnVtIHVuaWZvcm1UeXBlKQorc2l6ZV90IFByb2dy
YW1EM0Q6OmdldFVuaWZvcm1CbG9ja0luZm8oY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRl
cmZhY2VCbG9jaykKIHsKLSAgICBnbDo6TGlua2VkVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSA9IG1V
bmlmb3Jtc1ttVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5pbmRleF07CisgICAgQVNTRVJUKGludGVy
ZmFjZUJsb2NrLnN0YXRpY1VzZSB8fCBpbnRlcmZhY2VCbG9jay5sYXlvdXQgIT0gc2g6OkJMT0NL
TEFZT1VUX1BBQ0tFRCk7CiAKLSAgICBpZiAoZ2w6OklzTWF0cml4VHlwZSh0YXJnZXRVbmlmb3Jt
LT50eXBlKSkKKyAgICAvLyBkZWZpbmUgbWVtYmVyIHVuaWZvcm1zCisgICAgc2g6OlN0ZDE0MEJs
b2NrRW5jb2RlciBzdGQxNDBFbmNvZGVyOworICAgIHNoOjpITFNMQmxvY2tFbmNvZGVyIGhsc2xF
bmNvZGVyKHNoOjpITFNMQmxvY2tFbmNvZGVyOjpFTkNPREVfUEFDS0VEKTsKKyAgICBzaDo6Qmxv
Y2tMYXlvdXRFbmNvZGVyICplbmNvZGVyID0gbnVsbHB0cjsKKworICAgIGlmIChpbnRlcmZhY2VC
bG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1NUQU5EQVJEKQogICAgIHsKLSAgICAgICAg
Y29uc3QgaW50IHJvd3MgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0YXJnZXRVbmlmb3JtLT50eXBl
KTsKLSAgICAgICAgY29uc3QgaW50IGNvbHMgPSBnbDo6VmFyaWFibGVDb2x1bW5Db3VudCh0YXJn
ZXRVbmlmb3JtLT50eXBlKTsKLSAgICAgICAgdHJhbnNwb3NlTWF0cml4KHBhcmFtcywgKEdMZmxv
YXQqKXRhcmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50
ICogNCAqIHJvd3MsIHJvd3MsIGNvbHMsIDQsIHJvd3MpOworICAgICAgICBlbmNvZGVyID0gJnN0
ZDE0MEVuY29kZXI7CiAgICAgfQotICAgIGVsc2UgaWYgKHVuaWZvcm1UeXBlID09IGdsOjpWYXJp
YWJsZUNvbXBvbmVudFR5cGUodGFyZ2V0VW5pZm9ybS0+dHlwZSkpCisgICAgZWxzZQogICAgIHsK
LSAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBnbDo6VmFyaWFibGVDb21wb25lbnRDb3VudCh0
YXJnZXRVbmlmb3JtLT50eXBlKTsKLSAgICAgICAgbWVtY3B5KHBhcmFtcywgdGFyZ2V0VW5pZm9y
bS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0ICogc2l6ZW9mKFQp
LAotICAgICAgICAgICAgICAgIHNpemUgKiBzaXplb2YoVCkpOworICAgICAgICBlbmNvZGVyID0g
Jmhsc2xFbmNvZGVyOwogICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICB1bnNpZ25lZCBp
bnQgc2l6ZSA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHRhcmdldFVuaWZvcm0tPnR5cGUp
OwotICAgICAgICBzd2l0Y2ggKGdsOjpWYXJpYWJsZUNvbXBvbmVudFR5cGUodGFyZ2V0VW5pZm9y
bS0+dHlwZSkpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0JPT0w6Ci0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgR0xpbnQgKmJvb2xQYXJhbXMgPSAoR0xpbnQqKXRhcmdldFVu
aWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKIAotICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gKGJvb2xQYXJh
bXNbaV0gPT0gR0xfRkFMU0UpID8gc3RhdGljX2Nhc3Q8VD4oMCkgOiBzdGF0aWNfY2FzdDxUPigx
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
KyAgICBHZXRVbmlmb3JtQmxvY2tJbmZvKGludGVyZmFjZUJsb2NrLmZpZWxkcywgaW50ZXJmYWNl
QmxvY2suZmllbGRQcmVmaXgoKSwgZW5jb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVyZmFjZUJsb2NrLmlzUm93TWFqb3JMYXlvdXQsICZtQmxvY2tJbmZvKTsKIAotICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgR0xmbG9hdCAq
ZmxvYXRQYXJhbXMgPSAoR0xmbG9hdCopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5k
ZXhbbG9jYXRpb25dLmVsZW1lbnQgKiA0OwotCi0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBwYXJhbXNbaV0gPSBzdGF0aWNfY2FzdDxUPihmbG9hdFBhcmFtc1tpXSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTGlu
dCAqaW50UGFyYW1zID0gKEdMaW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRl
eFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHBhcmFtc1tpXSA9IHN0YXRpY19jYXN0PFQ+KGludFBhcmFtc1tpXSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBHTHVpbnQgKnVpbnRQYXJhbXMgPSAoR0x1aW50Kil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVu
aWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7Ci0KLSAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IHN0YXRpY19jYXN0PFQ+KHVpbnRQYXJhbXNb
aV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgfQotICAgIH0K
KyAgICByZXR1cm4gZW5jb2Rlci0+Z2V0QmxvY2tTaXplKCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBWYXJUPgotdm9pZCBQcm9ncmFtRDNEOjpkZWZpbmVVbmlmb3JtQmxvY2tNZW1iZXJzKGNv
bnN0IHN0ZDo6dmVjdG9yPFZhclQ+ICZmaWVsZHMsIGNvbnN0IHN0ZDo6c3RyaW5nICZwcmVmaXgs
IGludCBibG9ja0luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNoOjpCbG9ja0xheW91dEVuY29kZXIgKmVuY29kZXIsIHN0ZDo6dmVjdG9yPHVuc2lnbmVk
IGludD4gKmJsb2NrVW5pZm9ybUluZGV4ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpblJvd01ham9yTGF5b3V0KQordm9pZCBQcm9ncmFtRDNEOjph
c3NpZ25BbGxTYW1wbGVyUmVnaXN0ZXJzKCkKIHsKLSAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlm
b3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBmaWVsZHMuc2l6ZSgpOyB1bmlmb3JtSW5kZXgr
KykKKyAgICBmb3IgKEQzRFVuaWZvcm0gKmQzZFVuaWZvcm0gOiBtRDNEVW5pZm9ybXMpCiAgICAg
ewotICAgICAgICBjb25zdCBWYXJUICZmaWVsZCA9IGZpZWxkc1t1bmlmb3JtSW5kZXhdOwotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZmllbGROYW1lID0gKHByZWZpeC5lbXB0eSgpID8gZmll
bGQubmFtZSA6IHByZWZpeCArICIuIiArIGZpZWxkLm5hbWUpOwotCi0gICAgICAgIGlmIChmaWVs
ZC5pc1N0cnVjdCgpKQorICAgICAgICBpZiAoZDNkVW5pZm9ybS0+aXNTYW1wbGVyKCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGJvb2wgcm93TWFqb3JMYXlvdXQgPSAoaW5Sb3dNYWpvckxheW91
dCB8fCBJc1Jvd01ham9yTGF5b3V0KGZpZWxkKSk7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IGZpZWxkLmVsZW1lbnRDb3Vu
dCgpOyBhcnJheUVsZW1lbnQrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlbmNv
ZGVyLT5lbnRlckFnZ3JlZ2F0ZVR5cGUoKTsKLQotICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHVuaWZvcm1FbGVtZW50TmFtZSA9IGZpZWxkTmFtZSArIChmaWVsZC5pc0FycmF5KCkg
PyBBcnJheVN0cmluZyhhcnJheUVsZW1lbnQpIDogIiIpOwotICAgICAgICAgICAgICAgIGRlZmlu
ZVVuaWZvcm1CbG9ja01lbWJlcnMoZmllbGQuZmllbGRzLCB1bmlmb3JtRWxlbWVudE5hbWUsIGJs
b2NrSW5kZXgsIGVuY29kZXIsIGJsb2NrVW5pZm9ybUluZGV4ZXMsIHJvd01ham9yTGF5b3V0KTsK
LQotICAgICAgICAgICAgICAgIGVuY29kZXItPmV4aXRBZ2dyZWdhdGVUeXBlKCk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBhc3NpZ25TYW1wbGVyUmVnaXN0ZXJzKGQzZFVuaWZvcm0pOwog
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBpc1Jv
d01ham9yTWF0cml4ID0gKGdsOjpJc01hdHJpeFR5cGUoZmllbGQudHlwZSkgJiYgaW5Sb3dNYWpv
ckxheW91dCk7Ci0KLSAgICAgICAgICAgIHNoOjpCbG9ja01lbWJlckluZm8gbWVtYmVySW5mbyA9
IGVuY29kZXItPmVuY29kZVR5cGUoZmllbGQudHlwZSwgZmllbGQuYXJyYXlTaXplLCBpc1Jvd01h
am9yTWF0cml4KTsKLQotICAgICAgICAgICAgZ2w6OkxpbmtlZFVuaWZvcm0gKm5ld1VuaWZvcm0g
PSBuZXcgZ2w6OkxpbmtlZFVuaWZvcm0oZmllbGQudHlwZSwgZmllbGQucHJlY2lzaW9uLCBmaWVs
ZE5hbWUsIGZpZWxkLmFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja0luZGV4LCBtZW1iZXJJbmZvKTsKLQotICAg
ICAgICAgICAgLy8gYWRkIHRvIHVuaWZvcm0gbGlzdCwgYnV0IG5vdCBpbmRleCwgc2luY2UgdW5p
Zm9ybSBibG9jayB1bmlmb3JtcyBoYXZlIG5vIGxvY2F0aW9uCi0gICAgICAgICAgICBibG9ja1Vu
aWZvcm1JbmRleGVzLT5wdXNoX2JhY2sobVVuaWZvcm1zLnNpemUoKSk7Ci0gICAgICAgICAgICBt
VW5pZm9ybXMucHVzaF9iYWNrKG5ld1VuaWZvcm0pOwotICAgICAgICB9CiAgICAgfQogfQogCi1i
b29sIFByb2dyYW1EM0Q6OmRlZmluZVVuaWZvcm1CbG9jayhnbDo6SW5mb0xvZyAmaW5mb0xvZywg
Y29uc3QgZ2w6OlNoYWRlciAmc2hhZGVyLCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVy
ZmFjZUJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkNhcHMgJmNhcHMpCit2b2lkIFByb2dyYW1EM0Q6OmFzc2lnblNhbXBsZXJSZWdpc3RlcnMoRDNE
VW5pZm9ybSAqZDNkVW5pZm9ybSkKIHsKLSAgICBjb25zdCBTaGFkZXJEM0QqIHNoYWRlckQzRCA9
IEdldEltcGxBczxTaGFkZXJEM0Q+KCZzaGFkZXIpOwotCi0gICAgLy8gY3JlYXRlIHVuaWZvcm0g
YmxvY2sgZW50cmllcyBpZiB0aGV5IGRvIG5vdCBleGlzdAotICAgIGlmIChnZXRVbmlmb3JtQmxv
Y2tJbmRleChpbnRlcmZhY2VCbG9jay5uYW1lKSA9PSBHTF9JTlZBTElEX0lOREVYKQorICAgIEFT
U0VSVChkM2RVbmlmb3JtLT5pc1NhbXBsZXIoKSk7CisgICAgY29uc3QgU2hhZGVyRDNEICp2ZXJ0
ZXhTaGFkZXJEM0QgICA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1EYXRhLmdldEF0dGFjaGVkVmVy
dGV4U2hhZGVyKCkpOworICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXJEM0QgPSBH
ZXRJbXBsQXM8U2hhZGVyRDNEPihtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCkpOwor
ICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXJEM0QtPmhhc1VuaWZvcm0oZDNkVW5pZm9ybSkgfHwgZnJh
Z21lbnRTaGFkZXJEM0QtPmhhc1VuaWZvcm0oZDNkVW5pZm9ybSkpOworICAgIGlmICh2ZXJ0ZXhT
aGFkZXJEM0QtPmhhc1VuaWZvcm0oZDNkVW5pZm9ybSkpCiAgICAgewotICAgICAgICBzdGQ6OnZl
Y3Rvcjx1bnNpZ25lZCBpbnQ+IGJsb2NrVW5pZm9ybUluZGV4ZXM7Ci0gICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBibG9ja0luZGV4ID0gbVVuaWZvcm1CbG9ja3Muc2l6ZSgpOwotCi0gICAgICAg
IC8vIGRlZmluZSBtZW1iZXIgdW5pZm9ybXMKLSAgICAgICAgc2g6OkJsb2NrTGF5b3V0RW5jb2Rl
ciAqZW5jb2RlciA9IE5VTEw7Ci0KLSAgICAgICAgaWYgKGludGVyZmFjZUJsb2NrLmxheW91dCA9
PSBzaDo6QkxPQ0tMQVlPVVRfU1RBTkRBUkQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVuY29k
ZXIgPSBuZXcgc2g6OlN0ZDE0MEJsb2NrRW5jb2RlcjsKLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGVuY29kZXIgPSBuZXcgc2g6OkhMU0xCbG9ja0VuY29k
ZXIoc2g6OkhMU0xCbG9ja0VuY29kZXI6OkVOQ09ERV9QQUNLRUQpOwotICAgICAgICB9Ci0gICAg
ICAgIEFTU0VSVChlbmNvZGVyKTsKLQotICAgICAgICBkZWZpbmVVbmlmb3JtQmxvY2tNZW1iZXJz
KGludGVyZmFjZUJsb2NrLmZpZWxkcywgIiIsIGJsb2NrSW5kZXgsIGVuY29kZXIsICZibG9ja1Vu
aWZvcm1JbmRleGVzLCBpbnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KTsKLQotICAgICAg
ICBzaXplX3QgZGF0YVNpemUgPSBlbmNvZGVyLT5nZXRCbG9ja1NpemUoKTsKLQotICAgICAgICAv
LyBjcmVhdGUgYWxsIHRoZSB1bmlmb3JtIGJsb2NrcwotICAgICAgICBpZiAoaW50ZXJmYWNlQmxv
Y2suYXJyYXlTaXplID4gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgdW5pZm9ybUJsb2NrRWxlbWVudCA9IDA7IHVuaWZvcm1CbG9ja0VsZW1lbnQgPCBpbnRlcmZh
Y2VCbG9jay5hcnJheVNpemU7IHVuaWZvcm1CbG9ja0VsZW1lbnQrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBnbDo6VW5pZm9ybUJsb2NrICpuZXdVbmlmb3JtQmxvY2sgPSBuZXcg
Z2w6OlVuaWZvcm1CbG9jayhpbnRlcmZhY2VCbG9jay5uYW1lLCB1bmlmb3JtQmxvY2tFbGVtZW50
LCBkYXRhU2l6ZSk7Ci0gICAgICAgICAgICAgICAgbmV3VW5pZm9ybUJsb2NrLT5tZW1iZXJVbmlm
b3JtSW5kZXhlcyA9IGJsb2NrVW5pZm9ybUluZGV4ZXM7Ci0gICAgICAgICAgICAgICAgbVVuaWZv
cm1CbG9ja3MucHVzaF9iYWNrKG5ld1VuaWZvcm1CbG9jayk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6VW5pZm9ybUJs
b2NrICpuZXdVbmlmb3JtQmxvY2sgPSBuZXcgZ2w6OlVuaWZvcm1CbG9jayhpbnRlcmZhY2VCbG9j
ay5uYW1lLCBHTF9JTlZBTElEX0lOREVYLCBkYXRhU2l6ZSk7Ci0gICAgICAgICAgICBuZXdVbmlm
b3JtQmxvY2stPm1lbWJlclVuaWZvcm1JbmRleGVzID0gYmxvY2tVbmlmb3JtSW5kZXhlczsKLSAg
ICAgICAgICAgIG1Vbmlmb3JtQmxvY2tzLnB1c2hfYmFjayhuZXdVbmlmb3JtQmxvY2spOwotICAg
ICAgICB9CisgICAgICAgIGQzZFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCA9IHZlcnRleFNoYWRl
ckQzRC0+Z2V0VW5pZm9ybVJlZ2lzdGVyKGQzZFVuaWZvcm0tPm5hbWUpOworICAgICAgICBBU1NF
UlQoZDNkVW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVgpOworICAg
ICAgICBBc3NpZ25TYW1wbGVycyhkM2RVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXgsIGQzZFVuaWZv
cm0tPnR5cGUsIGQzZFVuaWZvcm0tPmFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
bVNhbXBsZXJzVlMsICZtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSk7CiAgICAgfQotCi0gICAgaWYg
KGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZSkKKyAgICBpZiAoZnJhZ21lbnRTaGFkZXJEM0QtPmhh
c1VuaWZvcm0oZDNkVW5pZm9ybSkpCiAgICAgewotICAgICAgICAvLyBBc3NpZ24gcmVnaXN0ZXJz
IHRvIHRoZSB1bmlmb3JtIGJsb2NrcwotICAgICAgICBjb25zdCBHTHVpbnQgYmxvY2tJbmRleCA9
IGdldFVuaWZvcm1CbG9ja0luZGV4KGludGVyZmFjZUJsb2NrLm5hbWUpOwotICAgICAgICBjb25z
dCB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50ID0gc3RkOjptYXgoMXUsIGludGVyZmFjZUJsb2Nr
LmFycmF5U2l6ZSk7Ci0gICAgICAgIEFTU0VSVChibG9ja0luZGV4ICE9IEdMX0lOVkFMSURfSU5E
RVgpOwotICAgICAgICBBU1NFUlQoYmxvY2tJbmRleCArIGVsZW1lbnRDb3VudCA8PSBtVW5pZm9y
bUJsb2Nrcy5zaXplKCkpOwotCi0gICAgICAgIHVuc2lnbmVkIGludCBpbnRlcmZhY2VCbG9ja1Jl
Z2lzdGVyID0gc2hhZGVyRDNELT5nZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGludGVyZmFjZUJs
b2NrLm5hbWUpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0VsZW1l
bnQgPSAwOyB1bmlmb3JtQmxvY2tFbGVtZW50IDwgZWxlbWVudENvdW50OyB1bmlmb3JtQmxvY2tF
bGVtZW50KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpVbmlmb3JtQmxvY2sgKnVuaWZv
cm1CbG9jayA9IG1Vbmlmb3JtQmxvY2tzW2Jsb2NrSW5kZXggKyB1bmlmb3JtQmxvY2tFbGVtZW50
XTsKLSAgICAgICAgICAgIEFTU0VSVCh1bmlmb3JtQmxvY2stPm5hbWUgPT0gaW50ZXJmYWNlQmxv
Y2submFtZSk7Ci0KLSAgICAgICAgICAgIGlmICghYXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0ZXIo
aW5mb0xvZywgdW5pZm9ybUJsb2NrLCBzaGFkZXIuZ2V0VHlwZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2VCbG9ja1JlZ2lzdGVyICsgdW5p
Zm9ybUJsb2NrRWxlbWVudCwgY2FwcykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGQzZFVuaWZv
cm0tPnBzUmVnaXN0ZXJJbmRleCA9IGZyYWdtZW50U2hhZGVyRDNELT5nZXRVbmlmb3JtUmVnaXN0
ZXIoZDNkVW5pZm9ybS0+bmFtZSk7CisgICAgICAgIEFTU0VSVChkM2RVbmlmb3JtLT5wc1JlZ2lz
dGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCk7CisgICAgICAgIEFzc2lnblNhbXBsZXJzKGQz
ZFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCwgZDNkVW5pZm9ybS0+dHlwZSwgZDNkVW5pZm9ybS0+
YXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNQUywgJm1Vc2VkUGl4
ZWxTYW1wbGVyUmFuZ2UpOwogICAgIH0KLQotICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFBy
b2dyYW1EM0Q6OmFzc2lnblNhbXBsZXJzKHVuc2lnbmVkIGludCBzdGFydFNhbXBsZXJJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNhbXBsZXJUeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTYW1w
bGVyPiAmb3V0U2FtcGxlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCAqb3V0VXNlZFJhbmdlKQorLy8gc3RhdGljCit2b2lkIFByb2dyYW1EM0Q6OkFzc2lnblNh
bXBsZXJzKHVuc2lnbmVkIGludCBzdGFydFNhbXBsZXJJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHNhbXBsZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlckNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTYW1wbGVyPiAmb3V0U2FtcGxlcnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqb3V0VXNlZFJhbmdlKQogewogICAgIHVu
c2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBzdGFydFNhbXBsZXJJbmRleDsKIAogICAgIGRvCiAg
ICAgewotICAgICAgICBpZiAoc2FtcGxlckluZGV4IDwgb3V0U2FtcGxlcnMuc2l6ZSgpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBTYW1wbGVyJiBzYW1wbGVyID0gb3V0U2FtcGxlcnNbc2FtcGxl
ckluZGV4XTsKLSAgICAgICAgICAgIHNhbXBsZXIuYWN0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAg
IHNhbXBsZXIudGV4dHVyZVR5cGUgPSBHZXRUZXh0dXJlVHlwZShzYW1wbGVyVHlwZSk7Ci0gICAg
ICAgICAgICBzYW1wbGVyLmxvZ2ljYWxUZXh0dXJlVW5pdCA9IDA7Ci0gICAgICAgICAgICAqb3V0
VXNlZFJhbmdlID0gc3RkOjptYXgoc2FtcGxlckluZGV4ICsgMSwgKm91dFVzZWRSYW5nZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLQorICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgb3V0U2FtcGxl
cnMuc2l6ZSgpKTsKKyAgICAgICAgU2FtcGxlciAqc2FtcGxlciAgICAgICAgICAgID0gJm91dFNh
bXBsZXJzW3NhbXBsZXJJbmRleF07CisgICAgICAgIHNhbXBsZXItPmFjdGl2ZSAgICAgICAgICAg
ICA9IHRydWU7CisgICAgICAgIHNhbXBsZXItPnRleHR1cmVUeXBlICAgICAgICA9IGdsOjpTYW1w
bGVyVHlwZVRvVGV4dHVyZVR5cGUoc2FtcGxlclR5cGUpOworICAgICAgICBzYW1wbGVyLT5sb2dp
Y2FsVGV4dHVyZVVuaXQgPSAwOworICAgICAgICAqb3V0VXNlZFJhbmdlICAgICAgICAgICAgICAg
PSBzdGQ6Om1heChzYW1wbGVySW5kZXggKyAxLCAqb3V0VXNlZFJhbmdlKTsKICAgICAgICAgc2Ft
cGxlckluZGV4Kys7CiAgICAgfSB3aGlsZSAoc2FtcGxlckluZGV4IDwgc3RhcnRTYW1wbGVySW5k
ZXggKyBzYW1wbGVyQ291bnQpOwotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJvZ3Jh
bUQzRDo6aW5kZXhTYW1wbGVyVW5pZm9ybShjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmdW5pZm9y
bSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGdsOjpDYXBzICZjYXBzKQotewotICAgIEFT
U0VSVChnbDo6SXNTYW1wbGVyVHlwZSh1bmlmb3JtLnR5cGUpKTsKLSAgICBBU1NFUlQodW5pZm9y
bS52c1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCB8fCB1bmlmb3JtLnBzUmVnaXN0
ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKTsKLQotICAgIGlmICh1bmlmb3JtLnZzUmVnaXN0
ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKQotICAgIHsKLSAgICAgICAgaWYgKCFhc3NpZ25T
YW1wbGVycyh1bmlmb3JtLnZzUmVnaXN0ZXJJbmRleCwgdW5pZm9ybS50eXBlLCB1bmlmb3JtLmFy
cmF5U2l6ZSwgbVNhbXBsZXJzVlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Vc2Vk
VmVydGV4U2FtcGxlclJhbmdlKSkKLSAgICAgICAgewotICAgICAgICAgICAgaW5mb0xvZy5hcHBl
bmQoIlZlcnRleCBzaGFkZXIgc2FtcGxlciBjb3VudCBleGNlZWRzIHRoZSBtYXhpbXVtIHZlcnRl
eCB0ZXh0dXJlIHVuaXRzICglZCkuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TYW1w
bGVyc1ZTLnNpemUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQot
ICAgICAgICB1bnNpZ25lZCBpbnQgbWF4VmVydGV4VmVjdG9ycyA9IG1SZW5kZXJlci0+Z2V0UmVz
ZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpICsgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9y
czsKLSAgICAgICAgaWYgKHVuaWZvcm0udnNSZWdpc3RlckluZGV4ICsgdW5pZm9ybS5yZWdpc3Rl
ckNvdW50ID4gbWF4VmVydGV4VmVjdG9ycykKLSAgICAgICAgewotICAgICAgICAgICAgaW5mb0xv
Zy5hcHBlbmQoIlZlcnRleCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1zIGV4Y2VlZCBHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUyAoJXUpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
cHMubWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHVuaWZvcm0ucHNSZWdpc3RlckluZGV4ICE9IEdM
X0lOVkFMSURfSU5ERVgpCi0gICAgewotICAgICAgICBpZiAoIWFzc2lnblNhbXBsZXJzKHVuaWZv
cm0ucHNSZWdpc3RlckluZGV4LCB1bmlmb3JtLnR5cGUsIHVuaWZvcm0uYXJyYXlTaXplLCBtU2Ft
cGxlcnNQUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVVzZWRQaXhlbFNhbXBsZXJS
YW5nZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kKCJQaXhlbCBzaGFk
ZXIgc2FtcGxlciBjb3VudCBleGNlZWRzIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICglZCkuIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1BTLnNpemUoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB1bnNpZ25lZCBpbnQgbWF4
RnJhZ21lbnRWZWN0b3JzID0gbVJlbmRlcmVyLT5nZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMoKSArIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yczsKLSAgICAgICAgaWYgKHVu
aWZvcm0ucHNSZWdpc3RlckluZGV4ICsgdW5pZm9ybS5yZWdpc3RlckNvdW50ID4gbWF4RnJhZ21l
bnRWZWN0b3JzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvTG9nLmFwcGVuZCgiRnJhZ21l
bnQgc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNlZWQgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1f
VkVDVE9SUyAoJXUpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHMubWF4RnJhZ21l
bnRVbmlmb3JtVmVjdG9ycyk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtRDNEOjppbmRleFVu
aWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBnbDo6Q2FwcyAmY2FwcykKLXsKLSAg
ICBmb3IgKHNpemVfdCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCBtVW5pZm9ybXMu
c2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRV
bmlmb3JtICZ1bmlmb3JtID0gKm1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwotCi0gICAgICAgIGlm
IChnbDo6SXNTYW1wbGVyVHlwZSh1bmlmb3JtLnR5cGUpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIWluZGV4U2FtcGxlclVuaWZvcm0odW5pZm9ybSwgaW5mb0xvZywgY2FwcykpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCA9IDA7IGFy
cmF5SW5kZXggPCB1bmlmb3JtLmVsZW1lbnRDb3VudCgpOyBhcnJheUluZGV4KyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghdW5pZm9ybS5pc0J1aWx0SW4oKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBtVW5pZm9ybUluZGV4LnB1c2hfYmFjayhnbDo6VmFyaWFibGVMb2Nh
dGlvbih1bmlmb3JtLm5hbWUsIGFycmF5SW5kZXgsIHVuaWZvcm1JbmRleCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgUHJv
Z3JhbUQzRDo6cmVzZXQoKQogewotICAgIFByb2dyYW1JbXBsOjpyZXNldCgpOwotCiAgICAgU2Fm
ZURlbGV0ZUNvbnRhaW5lcihtVmVydGV4RXhlY3V0YWJsZXMpOwogICAgIFNhZmVEZWxldGVDb250
YWluZXIobVBpeGVsRXhlY3V0YWJsZXMpOwotICAgIFNhZmVEZWxldGUobUdlb21ldHJ5RXhlY3V0
YWJsZSk7CiAKLSAgICBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID0gR0xfTk9ORTsKKyAg
ICBmb3IgKGF1dG8gJmVsZW1lbnQgOiBtR2VvbWV0cnlFeGVjdXRhYmxlcykKKyAgICB7CisgICAg
ICAgIFNhZmVEZWxldGUoZWxlbWVudCk7CisgICAgfQogCiAgICAgbVZlcnRleEhMU0wuY2xlYXIo
KTsKLSAgICBtVmVydGV4V29ya2Fyb3VuZHMucmVzZXQoKTsKLSAgICBtU2hhZGVyVmVyc2lvbiA9
IDEwMDsKKyAgICBtVmVydGV4V29ya2Fyb3VuZHMgPSBEM0RDb21waWxlcldvcmthcm91bmRzKCk7
CiAKICAgICBtUGl4ZWxITFNMLmNsZWFyKCk7Ci0gICAgbVBpeGVsV29ya2Fyb3VuZHMucmVzZXQo
KTsKKyAgICBtUGl4ZWxXb3JrYXJvdW5kcyA9IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMoKTsKICAg
ICBtVXNlc0ZyYWdEZXB0aCA9IGZhbHNlOwogICAgIG1QaXhlbFNoYWRlcktleS5jbGVhcigpOwog
ICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNGbGF0SW50ZXJwb2xhdGlvbiA9
IGZhbHNlOwogCisgICAgU2FmZURlbGV0ZUNvbnRhaW5lcihtRDNEVW5pZm9ybXMpOworICAgIG1E
M0RVbmlmb3JtQmxvY2tzLmNsZWFyKCk7CisKICAgICBTYWZlRGVsZXRlKG1WZXJ0ZXhVbmlmb3Jt
U3RvcmFnZSk7CiAgICAgU2FmZURlbGV0ZShtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZSk7CiAKQEAg
LTE5ODIsMTAgKzIxNDksMTQgQEAKICAgICBtU2FtcGxlcnNWUy5jbGVhcigpOwogCiAgICAgbVVz
ZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UgPSAwOwotICAgIG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2UgPSAw
OwotICAgIG1EaXJ0eVNhbXBsZXJNYXBwaW5nID0gdHJ1ZTsKKyAgICBtVXNlZFBpeGVsU2FtcGxl
clJhbmdlICA9IDA7CisgICAgbURpcnR5U2FtcGxlck1hcHBpbmcgICAgPSB0cnVlOwogCi0gICAg
c3RkOjpmaWxsKG1BdHRyaWJ1dGVzQnlMYXlvdXQsIG1BdHRyaWJ1dGVzQnlMYXlvdXQgKyBBcnJh
eVNpemUobUF0dHJpYnV0ZXNCeUxheW91dCksIC0xKTsKKyAgICBtQXR0cmliTG9jYXRpb25Ub0Qz
RFNlbWFudGljLmZpbGwoLTEpOworCisgICAgbVN0cmVhbU91dFZhcnlpbmdzLmNsZWFyKCk7CisK
KyAgICBtR2VvbWV0cnlTaGFkZXJQcmVhbWJsZS5jbGVhcigpOwogfQogCiB1bnNpZ25lZCBpbnQg
UHJvZ3JhbUQzRDo6Z2V0U2VyaWFsKCkgY29uc3QKQEAgLTE5OTgsMzIgKzIxNjksMTQzIEBACiAg
ICAgcmV0dXJuIG1DdXJyZW50U2VyaWFsKys7CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6aW5pdEF0
dHJpYnV0ZXNCeUxheW91dCgpCit2b2lkIFByb2dyYW1EM0Q6OmluaXRBdHRyaWJMb2NhdGlvbnNU
b0QzRFNlbWFudGljKCkKIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlM7IGkrKykKKyAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBtRGF0
YS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXIgIT0g
bnVsbHB0cik7CisKKyAgICAvLyBJbml0IHNlbWFudGljIGluZGV4CisgICAgZm9yIChjb25zdCBz
aDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtRGF0YS5nZXRBdHRyaWJ1dGVzKCkpCiAgICAgewot
ICAgICAgICBtQXR0cmlidXRlc0J5TGF5b3V0W2ldID0gaTsKKyAgICAgICAgaW50IGQzZFNlbWFu
dGljID0gdmVydGV4U2hhZGVyLT5nZXRTZW1hbnRpY0luZGV4KGF0dHJpYnV0ZS5uYW1lKTsKKyAg
ICAgICAgaW50IHJlZ0NvdW50ICAgID0gZ2w6OlZhcmlhYmxlUmVnaXN0ZXJDb3VudChhdHRyaWJ1
dGUudHlwZSk7CisKKyAgICAgICAgZm9yIChpbnQgcmVnID0gMDsgcmVnIDwgcmVnQ291bnQ7ICsr
cmVnKQorICAgICAgICB7CisgICAgICAgICAgICBtQXR0cmliTG9jYXRpb25Ub0QzRFNlbWFudGlj
W2F0dHJpYnV0ZS5sb2NhdGlvbiArIHJlZ10gPSBkM2RTZW1hbnRpYyArIHJlZzsKKyAgICAgICAg
fQogICAgIH0KK30KIAotICAgIHN0ZDo6c29ydCgmbUF0dHJpYnV0ZXNCeUxheW91dFswXSwgJm1B
dHRyaWJ1dGVzQnlMYXlvdXRbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10sIEF0dHJpYnV0ZVNvcnRl
cihtU2VtYW50aWNJbmRleCkpOwordm9pZCBQcm9ncmFtRDNEOjp1cGRhdGVDYWNoZWRJbnB1dExh
eW91dChjb25zdCBnbDo6U3RhdGUgJnN0YXRlKQoreworICAgIG1DYWNoZWRJbnB1dExheW91dC5j
bGVhcigpOworICAgIGNvbnN0IGF1dG8gJnZlcnRleEF0dHJpYnV0ZXMgPSBzdGF0ZS5nZXRWZXJ0
ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBsb2NhdGlvbkluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQobURhdGEuZ2V0QWN0aXZlQXR0
cmliTG9jYXRpb25zTWFzaygpKSkKKyAgICB7CisgICAgICAgIGludCBkM2RTZW1hbnRpYyA9IG1B
dHRyaWJMb2NhdGlvblRvRDNEU2VtYW50aWNbbG9jYXRpb25JbmRleF07CisKKyAgICAgICAgaWYg
KGQzZFNlbWFudGljICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobUNhY2hlZElu
cHV0TGF5b3V0LnNpemUoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oZDNkU2VtYW50aWMgKyAxKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtQ2FjaGVkSW5wdXRMYXlvdXQucmVzaXpl
KGQzZFNlbWFudGljICsgMSwgZ2w6OlZFUlRFWF9GT1JNQVRfSU5WQUxJRCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtQ2FjaGVkSW5wdXRMYXlvdXRbZDNkU2VtYW50aWNdID0KKyAgICAg
ICAgICAgICAgICBHZXRWZXJ0ZXhGb3JtYXRUeXBlKHZlcnRleEF0dHJpYnV0ZXNbbG9jYXRpb25J
bmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWUobG9jYXRpb25JbmRleCkuVHlwZSk7CisgICAgICAgIH0KKyAg
ICB9CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6c29ydEF0dHJpYnV0ZXNCeUxheW91dChyeDo6VHJh
bnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3J0ZWRTZW1hbnRpY0lu
ZGljZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU10pIGNvbnN0Cit2b2lkIFByb2dyYW1EM0Q6Omdh
dGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlp
bmdQYWNraW5nKQogewotICAgIHJ4OjpUcmFuc2xhdGVkQXR0cmlidXRlIG9sZFRyYW5zbGF0ZWRB
dHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworICAgIGNvbnN0IGF1dG8gJmJ1aWx0
aW5zID0gdmFyeWluZ1BhY2tpbmcuYnVpbHRpbnMoU0hBREVSX1ZFUlRFWCk7CiAKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICBjb25zdCBz
dGQ6OnN0cmluZyAmdmFyeWluZ1NlbWFudGljID0KKyAgICAgICAgR2V0VmFyeWluZ1NlbWFudGlj
KG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpLCB1c2VzUG9pbnRTaXplKCkpOworCisg
ICAgLy8gR2F0aGVyIHRoZSBsaW5rZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgdHJhbnNm
b3JtIGZlZWRiYWNrLCB0aGV5IHNob3VsZCBhbGwgZXhpc3QuCisgICAgbVN0cmVhbU91dFZhcnlp
bmdzLmNsZWFyKCk7CisKKyAgICBjb25zdCBhdXRvICZ0ZlZhcnlpbmdOYW1lcyA9IG1EYXRhLmdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
b3V0cHV0U2xvdCA9IDA7IG91dHB1dFNsb3QgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHRm
VmFyeWluZ05hbWVzLnNpemUoKSk7CisgICAgICAgICArK291dHB1dFNsb3QpCiAgICAgewotICAg
ICAgICBvbGRUcmFuc2xhdGVkQXR0cmlidXRlc1tpXSA9IGF0dHJpYnV0ZXNbaV07CisgICAgICAg
IGNvbnN0IGF1dG8gJnRmVmFyeWluZ05hbWUgPSB0ZlZhcnlpbmdOYW1lc1tvdXRwdXRTbG90XTsK
KyAgICAgICAgaWYgKHRmVmFyeWluZ05hbWUgPT0gImdsX1Bvc2l0aW9uIikKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKGJ1aWx0aW5zLmdsUG9zaXRpb24uZW5hYmxlZCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBtU3RyZWFtT3V0VmFyeWluZ3MucHVzaF9iYWNrKEQzRFZhcnlp
bmcoYnVpbHRpbnMuZ2xQb3NpdGlvbi5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuZ2xQb3NpdGlvbi5pbmRl
eCwgNCwgb3V0cHV0U2xvdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKHRmVmFyeWluZ05hbWUgPT0gImdsX0ZyYWdDb29yZCIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChidWlsdGlucy5nbEZyYWdDb29yZC5lbmFibGVkKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1TdHJlYW1PdXRWYXJ5aW5ncy5wdXNoX2JhY2soRDNEVmFyeWluZyhi
dWlsdGlucy5nbEZyYWdDb29yZC5zZW1hbnRpYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuZ2xGcmFnQ29vcmQuaW5kZXgs
IDQsIG91dHB1dFNsb3QpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmICh0ZlZhcnlpbmdOYW1lID09ICJnbF9Qb2ludFNpemUiKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoYnVpbHRpbnMuZ2xQb2ludFNpemUuZW5hYmxlZCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBtU3RyZWFtT3V0VmFyeWluZ3MucHVzaF9iYWNrKEQzRFZhcnlpbmcoIlBT
SVpFIiwgMCwgMSwgb3V0cHV0U2xvdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5aW5n
UmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA6IHZhcnlpbmdQYWNraW5nLmdldFJlZ2lzdGVyTGlzdCgp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgICA9
ICpyZWdpc3RlckluZm8ucGFja2VkVmFyeWluZy0+dmFyeWluZzsKKyAgICAgICAgICAgICAgICBH
TGVudW0gdHJhbnNwb3NlZFR5cGUgPSBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZSh2YXJ5aW5nLnR5
cGUpOworICAgICAgICAgICAgICAgIGludCBjb21wb25lbnRDb3VudCA9IGdsOjpWYXJpYWJsZUNv
bHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXZhcnlp
bmcuaXNCdWlsdEluKCkpOworCisgICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNr
IGZvciB2YXJ5aW5nIHN0cnVjdHMgaXMgdW5kZXJzcGVjaWZpZWQuCisgICAgICAgICAgICAgICAg
Ly8gU2VlIEtocm9ub3MgYnVnIDk4NTYuCisgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogRmlndXJlIG91dCBob3cgdG8gYmUgc3BlYy1jb21wbGlhbnQgaGVyZS4KKyAgICAgICAgICAg
ICAgICBpZiAocmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmctPmlzU3RydWN0RmllbGQoKSB8fCB2
YXJ5aW5nLmlzU3RydWN0KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgICAgICAgICAgLy8gVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgcmVnaXN0ZXIgYXNzaWdu
ZWQgdG8gYSBwYXJ0aWN1bGFyIHZhcnlpbmcsIGFuZCBlYWNoCisgICAgICAgICAgICAgICAgLy8g
cmVnaXN0ZXIgbmVlZHMgaXRzIG93biBzdHJlYW0gb3V0IGVudHJ5LgorICAgICAgICAgICAgICAg
IGlmICh0ZlZhcnlpbmdOYW1lID09IHZhcnlpbmcubmFtZSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1TdHJlYW1PdXRWYXJ5aW5ncy5wdXNoX2JhY2soRDNEVmFyeWlu
ZygKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcnlpbmdTZW1hbnRpYywgcmVnaXN0ZXJJbmZv
LnNlbWFudGljSW5kZXgsIGNvbXBvbmVudENvdW50LCBvdXRwdXRTbG90KSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorfQogCi0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCitEM0RVbmlmb3JtICpQ
cm9ncmFtRDNEOjpnZXREM0RVbmlmb3JtRnJvbUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKQorewor
ICAgIHJldHVybiBtRDNEVW5pZm9ybXNbbURhdGEuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0
aW9uXS5pbmRleF07Cit9CisKK2Jvb2wgUHJvZ3JhbUQzRDo6Z2V0VW5pZm9ybUJsb2NrU2l6ZShj
b25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lLCBzaXplX3QgKnNpemVPdXQpIGNvbnN0Cit7Cisg
ICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBibG9ja05hbWU7CisgICAgZ2w6OlBhcnNlQW5kU3Ry
aXBBcnJheUluZGV4KCZiYXNlTmFtZSk7CisKKyAgICBhdXRvIHNpemVJdGVyID0gbUJsb2NrRGF0
YVNpemVzLmZpbmQoYmFzZU5hbWUpOworICAgIGlmIChzaXplSXRlciA9PSBtQmxvY2tEYXRhU2l6
ZXMuZW5kKCkpCiAgICAgewotICAgICAgICBpbnQgb2xkSW5kZXggPSBtQXR0cmlidXRlc0J5TGF5
b3V0W2ldOwotICAgICAgICBzb3J0ZWRTZW1hbnRpY0luZGljZXNbaV0gPSBtU2VtYW50aWNJbmRl
eFtvbGRJbmRleF07Ci0gICAgICAgIGF0dHJpYnV0ZXNbaV0gPSBvbGRUcmFuc2xhdGVkQXR0cmli
dXRlc1tvbGRJbmRleF07CisgICAgICAgICpzaXplT3V0ID0gMDsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KKworICAgICpzaXplT3V0ID0gc2l6ZUl0ZXItPnNlY29uZDsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorYm9vbCBQcm9ncmFtRDNEOjpnZXRVbmlmb3JtQmxvY2tNZW1iZXJJbmZv
KGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6QmxvY2tNZW1iZXJJbmZvICptZW1iZXJJbmZv
T3V0KSBjb25zdAoreworICAgIGF1dG8gaW5mb0l0ZXIgPSBtQmxvY2tJbmZvLmZpbmQobWVtYmVy
VW5pZm9ybU5hbWUpOworICAgIGlmIChpbmZvSXRlciA9PSBtQmxvY2tJbmZvLmVuZCgpKQorICAg
IHsKKyAgICAgICAgKm1lbWJlckluZm9PdXQgPSBzaDo6QmxvY2tNZW1iZXJJbmZvOjpnZXREZWZh
dWx0QmxvY2tJbmZvKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAqbWVt
YmVySW5mb091dCA9IGluZm9JdGVyLT5zZWNvbmQ7CisgICAgcmV0dXJuIHRydWU7CiB9Cit9ICAv
LyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1Byb2dyYW1EM0QuaAkod29ya2luZyBjb3B5KQpAQCAtOSwyMyArOSwxNiBAQAogI2lm
bmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfUFJPR1JBTUQzRF9IXwogI2RlZmluZSBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfUFJPR1JBTUQzRF9IXwogCi0jaW5jbHVkZSAiY29tbW9uL09wdGlvbmFs
LmgiCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKwogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
Q29uc3RhbnRzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL1dvcmthcm91bmRzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5
bmFtaWNITFNMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1dvcmthcm91bmRz
RDNELmgiCiAKLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1uYW1lc3Bh
Y2UgZ2wKLXsKLXN0cnVjdCBMaW5rZWRVbmlmb3JtOwotc3RydWN0IFZhcmlhYmxlTG9jYXRpb247
Ci1zdHJ1Y3QgVmVydGV4Rm9ybWF0OwotfQotCiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIFJlbmRl
cmVyRDNEOwpAQCAtMzgsNTMgKzMxLDE1MyBAQAogI2RlZmluZSBBTkdMRV9DT01QSUxFX09QVElN
SVpBVElPTl9MRVZFTCBEM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDEKICNlbmRpZgogCisv
LyBIZWxwZXIgc3RydWN0IHJlcHJlc2VudGluZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9ybQorc3Ry
dWN0IEQzRFVuaWZvcm0gOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBEM0RVbmlmb3JtKEdM
ZW51bSB0eXBlSW4sCisgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZUluLAor
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZUluLAorICAgICAgICAgICAgICAg
Ym9vbCBkZWZhdWx0QmxvY2spOworICAgIH5EM0RVbmlmb3JtKCk7CisKKyAgICBib29sIGlzU2Ft
cGxlcigpIGNvbnN0OworICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQoKSBjb25zdCB7IHJl
dHVybiBzdGQ6Om1heCgxdSwgYXJyYXlTaXplKTsgfQorICAgIGJvb2wgaXNSZWZlcmVuY2VkQnlW
ZXJ0ZXhTaGFkZXIoKSBjb25zdDsKKyAgICBib29sIGlzUmVmZXJlbmNlZEJ5RnJhZ21lbnRTaGFk
ZXIoKSBjb25zdDsKKworICAgIC8vIER1cGxpY2F0ZWQgZnJvbSB0aGUgR0wgbGF5ZXIKKyAgICBH
TGVudW0gdHlwZTsKKyAgICBzdGQ6OnN0cmluZyBuYW1lOworICAgIHVuc2lnbmVkIGludCBhcnJh
eVNpemU7CisKKyAgICAvLyBQb2ludGVyIHRvIGEgc3lzdGVtIGNvcHkgb2YgdGhlIGRhdGEuCisg
ICAgLy8gVE9ETyhqbWFkaWxsKTogcmVtb3ZlIHRoaXMgaW4gZmF2b3Igb2YgZ2w6OkxpbmtlZFVu
aWZvcm06OmRhdGEoKS4KKyAgICB1aW50OF90ICpkYXRhOworCisgICAgLy8gSGFzIHRoZSBkYXRh
IGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgbGFzdCBzeW5jPworICAgIGJvb2wgZGlydHk7CisKKyAg
ICAvLyBSZWdpc3RlciBpbmZvcm1hdGlvbi4KKyAgICB1bnNpZ25lZCBpbnQgdnNSZWdpc3Rlcklu
ZGV4OworICAgIHVuc2lnbmVkIGludCBwc1JlZ2lzdGVySW5kZXg7CisgICAgdW5zaWduZWQgaW50
IHJlZ2lzdGVyQ291bnQ7CisKKyAgICAvLyBSZWdpc3RlciAiZWxlbWVudHMiIGFyZSB1c2VkIGZv
ciB1bmlmb3JtIHN0cnVjdHMgaW4gRVMzLCB0byBhcHByb3ByaWF0ZWx5IGlkZW50aWZ5IHNpbmds
ZQorICAgIC8vIHVuaWZvcm1zCisgICAgLy8gaW5zaWRlIGFnZ3JlZ2F0ZSB0eXBlcywgd2hpY2gg
YXJlIHBhY2tlZCBhY2NvcmRpbmcgQy1saWtlIHN0cnVjdHVyZSBydWxlcy4KKyAgICB1bnNpZ25l
ZCBpbnQgcmVnaXN0ZXJFbGVtZW50OworfTsKKworc3RydWN0IEQzRFVuaWZvcm1CbG9jaworewor
ICAgIEQzRFVuaWZvcm1CbG9jaygpIDogdnNSZWdpc3RlckluZGV4KEdMX0lOVkFMSURfSU5ERVgp
LCBwc1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRFWCkge30KKworICAgIGJvb2wgdmVydGV4
U3RhdGljVXNlKCkgY29uc3QgeyByZXR1cm4gdnNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURf
SU5ERVg7IH0KKworICAgIGJvb2wgZnJhZ21lbnRTdGF0aWNVc2UoKSBjb25zdCB7IHJldHVybiBw
c1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsgfQorCisgICAgdW5zaWduZWQgaW50
IHZzUmVnaXN0ZXJJbmRleDsKKyAgICB1bnNpZ25lZCBpbnQgcHNSZWdpc3RlckluZGV4OworfTsK
Kworc3RydWN0IEQzRFZhcnlpbmcgZmluYWwKK3sKKyAgICBEM0RWYXJ5aW5nKCk7CisgICAgRDNE
VmFyeWluZyhjb25zdCBzdGQ6OnN0cmluZyAmc2VtYW50aWNOYW1lSW4sCisgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgc2VtYW50aWNJbmRleEluLAorICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGNvbXBvbmVudENvdW50SW4sCisgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3V0cHV0
U2xvdEluKTsKKworICAgIEQzRFZhcnlpbmcoY29uc3QgRDNEVmFyeWluZyAmKSA9IGRlZmF1bHQ7
CisgICAgRDNEVmFyeWluZyAmb3BlcmF0b3I9KGNvbnN0IEQzRFZhcnlpbmcgJikgPSBkZWZhdWx0
OworCisgICAgc3RkOjpzdHJpbmcgc2VtYW50aWNOYW1lOworICAgIHVuc2lnbmVkIGludCBzZW1h
bnRpY0luZGV4OworICAgIHVuc2lnbmVkIGludCBjb21wb25lbnRDb3VudDsKKyAgICB1bnNpZ25l
ZCBpbnQgb3V0cHV0U2xvdDsKK307CisKK2NsYXNzIFByb2dyYW1EM0RNZXRhZGF0YSA6IGFuZ2xl
OjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgUHJvZ3JhbUQzRE1ldGFkYXRhKGludCBy
ZW5kZXJlck1ham9yU2hhZGVyTW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJNb2RlbFN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCB1c2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdXNlc1ZpZXdTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hh
ZGVyRDNEICp2ZXJ0ZXhTaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRl
ckQzRCAqZnJhZ21lbnRTaGFkZXIpOworCisgICAgaW50IGdldFJlbmRlcmVyTWFqb3JTaGFkZXJN
b2RlbCgpIGNvbnN0OworICAgIGJvb2wgdXNlc0Jyb2FkY2FzdChjb25zdCBnbDo6RGF0YSAmZGF0
YSkgY29uc3Q7CisgICAgYm9vbCB1c2VzRnJhZ0RlcHRoKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRh
ICZwcm9ncmFtRGF0YSkgY29uc3Q7CisgICAgYm9vbCB1c2VzUG9pbnRDb29yZCgpIGNvbnN0Owor
ICAgIGJvb2wgdXNlc0ZyYWdDb29yZCgpIGNvbnN0OworICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgp
IGNvbnN0OworICAgIGJvb2wgdXNlc0luc2VydGVkUG9pbnRDb29yZFZhbHVlKCkgY29uc3Q7Cisg
ICAgYm9vbCB1c2VzVmlld1NjYWxlKCkgY29uc3Q7CisgICAgYm9vbCBhZGRzUG9pbnRDb29yZFRv
VmVydGV4U2hhZGVyKCkgY29uc3Q7CisgICAgYm9vbCB1c2VzVHJhbnNmb3JtRmVlZGJhY2tHTFBv
c2l0aW9uKCkgY29uc3Q7CisgICAgYm9vbCB1c2VzU3lzdGVtVmFsdWVQb2ludFNpemUoKSBjb25z
dDsKKyAgICBib29sIHVzZXNNdWx0aXBsZUZyYWdtZW50T3V0cygpIGNvbnN0OworICAgIEdMaW50
IGdldE1ham9yU2hhZGVyVmVyc2lvbigpIGNvbnN0OworICAgIGNvbnN0IFNoYWRlckQzRCAqZ2V0
RnJhZ21lbnRTaGFkZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIGNvbnN0IGludCBtUmVu
ZGVyZXJNYWpvclNoYWRlck1vZGVsOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1TaGFkZXJNb2Rl
bFN1ZmZpeDsKKyAgICBjb25zdCBib29sIG1Vc2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRp
b247CisgICAgY29uc3QgYm9vbCBtVXNlc1ZpZXdTY2FsZTsKKyAgICBjb25zdCBTaGFkZXJEM0Qg
Km1WZXJ0ZXhTaGFkZXI7CisgICAgY29uc3QgU2hhZGVyRDNEICptRnJhZ21lbnRTaGFkZXI7Cit9
OworCiBjbGFzcyBQcm9ncmFtRDNEIDogcHVibGljIFByb2dyYW1JbXBsCiB7CiAgIHB1YmxpYzoK
LSAgICBQcm9ncmFtRDNEKFJlbmRlcmVyRDNEICpyZW5kZXJlcik7CisgICAgUHJvZ3JhbUQzRChj
b25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKTsKICAg
ICB2aXJ0dWFsIH5Qcm9ncmFtRDNEKCk7CiAKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQaXhlbFNo
YWRlck91dHB1dFZhcmlhYmxlPiAmZ2V0UGl4ZWxTaGFkZXJLZXkoKSB7IHJldHVybiBtUGl4ZWxT
aGFkZXJLZXk7IH0KLSAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1T
aGFkZXJWZXJzaW9uOyB9Ci0gICAgR0xlbnVtIGdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGU7IH0KIAotICAg
IEdMaW50IGdldFNhbXBsZXJNYXBwaW5nKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBp
bnQgc2FtcGxlckluZGV4LCBjb25zdCBnbDo6Q2FwcyAmY2FwcykgY29uc3Q7CisgICAgR0xpbnQg
Z2V0U2FtcGxlck1hcHBpbmcoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcykgY29uc3Q7CiAgICAgR0xlbnVtIGdldFNh
bXBsZXJUZXh0dXJlVHlwZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXBs
ZXJJbmRleCkgY29uc3Q7Ci0gICAgR0xpbnQgZ2V0VXNlZFNhbXBsZXJSYW5nZShnbDo6U2FtcGxl
clR5cGUgdHlwZSkgY29uc3Q7CisgICAgR0x1aW50IGdldFVzZWRTYW1wbGVyUmFuZ2UoZ2w6OlNh
bXBsZXJUeXBlIHR5cGUpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2FtcGxlck1hcHBpbmcoKTsK
LSAgICBib29sIHZhbGlkYXRlU2FtcGxlcnMoZ2w6OkluZm9Mb2cgKmluZm9Mb2csIGNvbnN0IGds
OjpDYXBzICZjYXBzKTsKIAogICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1Vc2VzUG9pbnRTaXplOyB9CiAgICAgYm9vbCB1c2VzUG9pbnRTcHJpdGVFbXVsYXRpb24oKSBj
b25zdDsKLSAgICBib29sIHVzZXNHZW9tZXRyeVNoYWRlcigpIGNvbnN0OworICAgIGJvb2wgdXNl
c0dlb21ldHJ5U2hhZGVyKEdMZW51bSBkcmF3TW9kZSkgY29uc3Q7CiAgICAgYm9vbCB1c2VzSW5z
dGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24oKSBjb25zdDsKIAotICAgIEdMZW51bSBnZXRCaW5h
cnlGb3JtYXQoKSB7IHJldHVybiBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRTsgfQotICAgIExpbmtS
ZXN1bHQgbG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpz
dHJlYW0pOwotICAgIGdsOjpFcnJvciBzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVh
bSk7CisgICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5
SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNhdmUoZ2w6OkJp
bmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJpbmFyeVJl
dHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJv
ciBnZXRQaXhlbEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXIg
KmZibywgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN0dWFibGUpOwotICAgIGdsOjpFcnJv
ciBnZXRQaXhlbEV4ZWN1dGFibGVGb3JPdXRwdXRMYXlvdXQoY29uc3Qgc3RkOjp2ZWN0b3I8R0xl
bnVtPiAmb3V0cHV0TGF5b3V0LCBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1YWJsZSwg
Z2w6OkluZm9Mb2cgKmluZm9Mb2cpOwotICAgIGdsOjpFcnJvciBnZXRWZXJ0ZXhFeGVjdXRhYmxl
Rm9ySW5wdXRMYXlvdXQoY29uc3QgZ2w6OlZlcnRleEZvcm1hdCBpbnB1dExheW91dFtnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXSwgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN0dWFibGUsIGds
OjpJbmZvTG9nICppbmZvTG9nKTsKLSAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpnZXRHZW9tZXRy
eUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtR2VvbWV0cnlFeGVjdXRhYmxlOyB9CisgICAg
Z2w6OkVycm9yIGdldFBpeGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqZmJvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1YWJsZSk7CisgICAgZ2w6OkVycm9y
IGdldFBpeGVsRXhlY3V0YWJsZUZvck91dHB1dExheW91dChjb25zdCBzdGQ6OnZlY3RvcjxHTGVu
dW0+ICZvdXRwdXRMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1YWJsZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICppbmZv
TG9nKTsKKyAgICBnbDo6RXJyb3IgZ2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0KGNv
bnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1
YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpJbmZvTG9nICppbmZvTG9nKTsKKyAgICBnbDo6RXJyb3IgZ2V0R2VvbWV0cnlFeGVjdXRhYmxl
Rm9yUHJpbWl0aXZlVHlwZShjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJhd01vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhl
Y3V0YWJsZUQzRCAqKm91dEV4ZWN1dGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgKmluZm9Mb2cpOwogCi0gICAgTGlu
a1Jlc3VsdCBjb21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBn
bDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciwgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnaXN0ZXJzKTsKKyAg
ICBMaW5rUmVzdWx0IGxpbmsoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZv
TG9nKSBvdmVycmlkZTsKKyAgICBHTGJvb2xlYW4gdmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJmNh
cHMsIGdsOjpJbmZvTG9nICppbmZvTG9nKSBvdmVycmlkZTsKIAotICAgIExpbmtSZXN1bHQgbGlu
ayhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAg
ICAgICAgICAgIGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBnbDo6U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgaW50ICpy
ZWdpc3RlcnMsIHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5aW5nPiAqbGlua2VkVmFyeWluZ3Ms
Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPGludCwgZ2w6OlZhcmlhYmxlTG9jYXRpb24+
ICpvdXRwdXRWYXJpYWJsZXMpOworICAgIGJvb2wgZ2V0VW5pZm9ybUJsb2NrU2l6ZShjb25zdCBz
dGQ6OnN0cmluZyAmYmxvY2tOYW1lLCBzaXplX3QgKnNpemVPdXQpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgZ2V0VW5pZm9ybUJsb2NrTWVtYmVySW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmbWVt
YmVyVW5pZm9ybU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpC
bG9ja01lbWJlckluZm8gKm1lbWJlckluZm9PdXQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBnZXRJbnB1dExheW91dFNpZ25hdHVyZShjb25zdCBnbDo6VmVydGV4Rm9ybWF0IGlucHV0TGF5
b3V0W10sIEdMZW51bSBzaWduYXR1cmVbXSkgY29uc3Q7Ci0KICAgICB2b2lkIGluaXRpYWxpemVV
bmlmb3JtU3RvcmFnZSgpOwotICAgIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKCk7Ci0gICAgZ2w6
OkVycm9yIGFwcGx5VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMdWludCB1
bmlmb3JtQmxvY2tCaW5kaW5nc1tdKSBvdmVycmlkZTsKLSAgICBib29sIGFzc2lnblVuaWZvcm1C
bG9ja1JlZ2lzdGVyKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6VW5pZm9ybUJsb2NrICp1bmlm
b3JtQmxvY2ssIEdMZW51bSBzaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJbmRleCwgY29uc3QgZ2w6OkNhcHMgJmNhcHMpOwor
ICAgIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKEdMZW51bSBkcmF3TW9kZSk7CisgICAgZ2w6OkVy
cm9yIGFwcGx5VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRhdGEgJmRhdGEpOwogICAgIHZvaWQg
ZGlydHlBbGxVbmlmb3JtcygpOwogCiAgICAgdm9pZCBzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKQEAgLTk5LDYzICsxOTIsMTA2
IEBACiAgICAgdm9pZCBzZXRVbmlmb3JtMnVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50ICp2KTsKICAgICB2b2lkIHNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpOwogICAgIHZvaWQgc2V0VW5pZm9y
bTR1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdik7Ci0g
ICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBz
ZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3Jt
TWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNw
b3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4Mngz
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKLSAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgzeDJmdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xm
bG9hdCAqdmFsdWUpOwotICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2
YWx1ZSk7Ci0gICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsK
LSAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwotICAgIHZv
aWQgc2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CisgICAgdm9pZCBzZXRV
bmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0
cml4NGZ2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNw
b3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
CisgICAgdm9pZCBzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRy
aXgzeDJmdihHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dmFsdWUpOworICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CisgICAgdm9pZCBzZXRVbmlm
b3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIHZvaWQg
c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CiAKLSAgICB2b2lkIGdldFVuaWZvcm1mdihHTGludCBsb2Nh
dGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKLSAgICB2b2lkIGdldFVuaWZvcm1pdihHTGludCBsb2Nh
dGlvbiwgR0xpbnQgKnBhcmFtcyk7Ci0gICAgdm9pZCBnZXRVbmlmb3JtdWl2KEdMaW50IGxvY2F0
aW9uLCBHTHVpbnQgKnBhcmFtcyk7CisgICAgdm9pZCBzZXRVbmlmb3JtQmxvY2tCaW5kaW5nKEdM
dWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIG92ZXJy
aWRlOwogCiAgICAgY29uc3QgVW5pZm9ybVN0b3JhZ2VEM0QgJmdldFZlcnRleFVuaWZvcm1TdG9y
YWdlKCkgY29uc3QgeyByZXR1cm4gKm1WZXJ0ZXhVbmlmb3JtU3RvcmFnZTsgfQogICAgIGNvbnN0
IFVuaWZvcm1TdG9yYWdlRDNEICZnZXRGcmFnbWVudFVuaWZvcm1TdG9yYWdlKCkgY29uc3QgeyBy
ZXR1cm4gKm1GcmFnbWVudFVuaWZvcm1TdG9yYWdlOyB9CiAKLSAgICBib29sIGxpbmtVbmlmb3Jt
cyhnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgZ2w6OlNoYWRlciAmdmVydGV4U2hhZGVyLCBj
b25zdCBnbDo6U2hhZGVyICZmcmFnbWVudFNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Q2FwcyAmY2Fwcyk7Ci0gICAgYm9vbCBkZWZpbmVVbmlmb3JtQmxvY2soZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csIGNvbnN0IGdsOjpTaGFkZXIgJnNoYWRlciwgY29uc3Qgc2g6OkludGVy
ZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywgY29uc3QgZ2w6OkNhcHMgJmNhcHMpOworICAgIHVu
c2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKIAotICAgIHZvaWQgcmVzZXQoKTsKKyAgICBj
b25zdCBBdHRyaWJJbmRleEFycmF5ICZnZXRBdHRyaWJMb2NhdGlvblRvRDNEU2VtYW50aWNzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtQXR0cmliTG9jYXRpb25Ub0QzRFNlbWFudGlj
OworICAgIH0KIAotICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKKyAgICB2b2lk
IHVwZGF0ZUNhY2hlZElucHV0TGF5b3V0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpOworICAgIGNv
bnN0IGdsOjpJbnB1dExheW91dCAmZ2V0Q2FjaGVkSW5wdXRMYXlvdXQoKSBjb25zdCB7IHJldHVy
biBtQ2FjaGVkSW5wdXRMYXlvdXQ7IH0KIAotICAgIHZvaWQgaW5pdEF0dHJpYnV0ZXNCeUxheW91
dCgpOwotICAgIHZvaWQgc29ydEF0dHJpYnV0ZXNCeUxheW91dChyeDo6VHJhbnNsYXRlZEF0dHJp
YnV0ZSBhdHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc29ydGVkU2VtYW50aWNJbmRpY2VzW2dsOjpNQVhfVkVSVEVY
X0FUVFJJQlNdKSBjb25zdDsKKyAgICBib29sIGlzU2FtcGxlck1hcHBpbmdEaXJ0eSgpIHsgcmV0
dXJuIG1EaXJ0eVNhbXBsZXJNYXBwaW5nOyB9CiAKICAgcHJpdmF0ZToKICAgICBjbGFzcyBWZXJ0
ZXhFeGVjdXRhYmxlCiAgICAgewogICAgICAgcHVibGljOgotICAgICAgICBWZXJ0ZXhFeGVjdXRh
YmxlKGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgaW5wdXRMYXlvdXRbZ2w6Ok1BWF9WRVJURVhfQVRU
UklCU10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIHNpZ25hdHVyZVtn
bDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwKKyAgICAgICAgZW51bSBITFNMQXR0cmliVHlwZQorICAg
ICAgICB7CisgICAgICAgICAgICBGTE9BVCwKKyAgICAgICAgICAgIFVOU0lHTkVEX0lOVCwKKyAg
ICAgICAgICAgIFNJR05FRF9JTlQsCisgICAgICAgIH07CisKKyAgICAgICAgdHlwZWRlZiBzdGQ6
OnZlY3RvcjxITFNMQXR0cmliVHlwZT4gU2lnbmF0dXJlOworCisgICAgICAgIFZlcnRleEV4ZWN1
dGFibGUoY29uc3QgZ2w6OklucHV0TGF5b3V0ICZpbnB1dExheW91dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTaWduYXR1cmUgJnNpZ25hdHVyZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpzaGFkZXJFeGVjdXRhYmxlKTsKICAgICAgICAg
flZlcnRleEV4ZWN1dGFibGUoKTsKIAotICAgICAgICBib29sIG1hdGNoZXNTaWduYXR1cmUoY29u
c3QgR0xlbnVtIGNvbnZlcnRlZExheW91dFtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSkgY29uc3Q7
CisgICAgICAgIGJvb2wgbWF0Y2hlc1NpZ25hdHVyZShjb25zdCBTaWduYXR1cmUgJnNpZ25hdHVy
ZSkgY29uc3Q7CisgICAgICAgIHN0YXRpYyB2b2lkIGdldFNpZ25hdHVyZShSZW5kZXJlckQzRCAq
cmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5w
dXRMYXlvdXQgJmlucHV0TGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2lnbmF0dXJlICpzaWduYXR1cmVPdXQpOwogCi0gICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhGb3Jt
YXQgKmlucHV0cygpIGNvbnN0IHsgcmV0dXJuIG1JbnB1dHM7IH0KLSAgICAgICAgY29uc3QgR0xl
bnVtICpzaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtU2lnbmF0dXJlOyB9CisgICAgICAgIGNv
bnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRzKCkgY29uc3QgeyByZXR1cm4gbUlucHV0czsgfQor
ICAgICAgICBjb25zdCBTaWduYXR1cmUgJnNpZ25hdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1TaWdu
YXR1cmU7IH0KICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqc2hhZGVyRXhlY3V0YWJsZSgp
IGNvbnN0IHsgcmV0dXJuIG1TaGFkZXJFeGVjdXRhYmxlOyB9CiAKICAgICAgIHByaXZhdGU6Ci0g
ICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXQgbUlucHV0c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsK
LSAgICAgICAgR0xlbnVtIG1TaWduYXR1cmVbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107CisgICAg
ICAgIHN0YXRpYyBITFNMQXR0cmliVHlwZSBHZXRBdHRyaWJUeXBlKEdMZW51bSB0eXBlKTsKKwor
ICAgICAgICBnbDo6SW5wdXRMYXlvdXQgbUlucHV0czsKKyAgICAgICAgU2lnbmF0dXJlIG1TaWdu
YXR1cmU7CiAgICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKm1TaGFkZXJFeGVjdXRhYmxlOwog
ICAgIH07CiAKICAgICBjbGFzcyBQaXhlbEV4ZWN1dGFibGUKICAgICB7CiAgICAgICBwdWJsaWM6
Ci0gICAgICAgIFBpeGVsRXhlY3V0YWJsZShjb25zdCBzdGQ6OnZlY3RvcjxHTGVudW0+ICZvdXRw
dXRTaWduYXR1cmUsIFNoYWRlckV4ZWN1dGFibGVEM0QgKnNoYWRlckV4ZWN1dGFibGUpOworICAg
ICAgICBQaXhlbEV4ZWN1dGFibGUoY29uc3Qgc3RkOjp2ZWN0b3I8R0xlbnVtPiAmb3V0cHV0U2ln
bmF0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqc2hh
ZGVyRXhlY3V0YWJsZSk7CiAgICAgICAgIH5QaXhlbEV4ZWN1dGFibGUoKTsKIAotICAgICAgICBi
b29sIG1hdGNoZXNTaWduYXR1cmUoY29uc3Qgc3RkOjp2ZWN0b3I8R0xlbnVtPiAmc2lnbmF0dXJl
KSBjb25zdCB7IHJldHVybiBtT3V0cHV0U2lnbmF0dXJlID09IHNpZ25hdHVyZTsgfQorICAgICAg
ICBib29sIG1hdGNoZXNTaWduYXR1cmUoY29uc3Qgc3RkOjp2ZWN0b3I8R0xlbnVtPiAmc2lnbmF0
dXJlKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbU91dHB1dFNpZ25hdHVy
ZSA9PSBzaWduYXR1cmU7CisgICAgICAgIH0KIAogICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxH
TGVudW0+ICZvdXRwdXRTaWduYXR1cmUoKSBjb25zdCB7IHJldHVybiBtT3V0cHV0U2lnbmF0dXJl
OyB9CiAgICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKnNoYWRlckV4ZWN1dGFibGUoKSBjb25z
dCB7IHJldHVybiBtU2hhZGVyRXhlY3V0YWJsZTsgfQpAQCAtMTc0LDM0ICszMTAsNTYgQEAKICAg
ICAgICAgR0xlbnVtIHRleHR1cmVUeXBlOwogICAgIH07CiAKLSAgICB2b2lkIGRlZmluZVVuaWZv
cm1CYXNlKGNvbnN0IFNoYWRlckQzRCAqc2hhZGVyLCBjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9y
bSwgdW5zaWduZWQgaW50IHVuaWZvcm1SZWdpc3Rlcik7Ci0gICAgdm9pZCBkZWZpbmVVbmlmb3Jt
KGNvbnN0IFNoYWRlckQzRCAqc2hhZGVyLCBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnVuaWZv
cm0sIGNvbnN0IHN0ZDo6c3RyaW5nICZmdWxsTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
c2g6OkhMU0xCbG9ja0VuY29kZXIgKmVuY29kZXIpOwotICAgIGJvb2wgaW5kZXhTYW1wbGVyVW5p
Zm9ybShjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSwgZ2w6OkluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IGdsOjpDYXBzICZjYXBzKTsKLSAgICBib29sIGluZGV4VW5pZm9ybXMoZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csIGNvbnN0IGdsOjpDYXBzICZjYXBzKTsKLSAgICBzdGF0aWMgYm9vbCBh
c3NpZ25TYW1wbGVycyh1bnNpZ25lZCBpbnQgc3RhcnRTYW1wbGVySW5kZXgsIEdMZW51bSBzYW1w
bGVyVHlwZSwgdW5zaWduZWQgaW50IHNhbXBsZXJDb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxTYW1wbGVyPiAmb3V0U2FtcGxlcnMsIEdMdWludCAqb3V0
VXNlZFJhbmdlKTsKKyAgICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBEM0RVbmlmb3Jt
ICo+IEQzRFVuaWZvcm1NYXA7CiAKKyAgICB2b2lkIGRlZmluZVVuaWZvcm1zQW5kQXNzaWduUmVn
aXN0ZXJzKCk7CisgICAgdm9pZCBkZWZpbmVVbmlmb3JtQmFzZShjb25zdCBnbDo6U2hhZGVyICpz
aGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6VW5pZm9ybSAmdW5p
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRFVuaWZvcm1NYXAgKnVuaWZvcm1N
YXApOworICAgIHZvaWQgZGVmaW5lVW5pZm9ybShHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ1bmlmb3JtLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnVsbE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgIHNoOjpITFNMQmxvY2tFbmNvZGVyICplbmNvZGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICBEM0RVbmlmb3JtTWFwICp1bmlmb3JtTWFwKTsKKyAgICB2b2lkIGFzc2lnbkFs
bFNhbXBsZXJSZWdpc3RlcnMoKTsKKyAgICB2b2lkIGFzc2lnblNhbXBsZXJSZWdpc3RlcnMoRDNE
VW5pZm9ybSAqZDNkVW5pZm9ybSk7CisKKyAgICBzdGF0aWMgdm9pZCBBc3NpZ25TYW1wbGVycyh1
bnNpZ25lZCBpbnQgc3RhcnRTYW1wbGVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNhbXBsZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzYW1wbGVyQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8U2FtcGxlcj4gJm91dFNhbXBsZXJzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCAqb3V0VXNlZFJhbmdlKTsKKwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotICAgIHZvaWQgc2V0VW5pZm9ybShHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgVCogdiwgR0xlbnVtIHRhcmdldFVuaWZvcm1UeXBlKTsKKyAgICB2b2lkIHNldFVu
aWZvcm0oR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IFQgKnYsIEdMZW51bSB0
YXJnZXRVbmlmb3JtVHlwZSk7CiAKICAgICB0ZW1wbGF0ZSA8aW50IGNvbHMsIGludCByb3dzPgot
ICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJpeGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSwgR0xlbnVtIHRhcmdl
dFVuaWZvcm1UeXBlKTsKKyAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXhmdihHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldFVuaWZvcm1UeXBlKTsKIAotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotICAgIHZvaWQgZ2V0VW5pZm9ybXYoR0xpbnQgbG9jYXRpb24sIFQgKnBhcmFtcywgR0xl
bnVtIHVuaWZvcm1UeXBlKTsKKyAgICBMaW5rUmVzdWx0IGNvbXBpbGVQcm9ncmFtRXhlY3V0YWJs
ZXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKIAotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotICAgIHZvaWQgZGVmaW5lVW5pZm9ybUJsb2NrTWVtYmVy
cyhjb25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAmZmllbGRzLCBjb25zdCBzdGQ6OnN0cmluZyAmcHJl
Zml4LCBpbnQgYmxvY2tJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2g6OkJsb2NrTGF5b3V0RW5jb2RlciAqZW5jb2Rlciwgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50
PiAqYmxvY2tVbmlmb3JtSW5kZXhlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpblJvd01ham9yTGF5b3V0KTsKKyAgICB2b2lkIGdhdGhlclRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdzKTsKKyAgICBEM0RVbmlm
b3JtICpnZXREM0RVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKTsKKyAgICBE
M0RVbmlmb3JtICpnZXREM0RVbmlmb3JtRnJvbUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKTsKIAor
ICAgIHZvaWQgaW5pdEF0dHJpYkxvY2F0aW9uc1RvRDNEU2VtYW50aWMoKTsKKworICAgIHZvaWQg
cmVzZXQoKTsKKyAgICB2b2lkIGFzc2lnblVuaWZvcm1CbG9ja1JlZ2lzdGVycygpOworCisgICAg
dm9pZCBpbml0VW5pZm9ybUJsb2NrSW5mbygpOworICAgIHNpemVfdCBnZXRVbmlmb3JtQmxvY2tJ
bmZvKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2spOworCiAgICAgUmVu
ZGVyZXJEM0QgKm1SZW5kZXJlcjsKICAgICBEeW5hbWljSExTTCAqbUR5bmFtaWNITFNMOwogCiAg
ICAgc3RkOjp2ZWN0b3I8VmVydGV4RXhlY3V0YWJsZSAqPiBtVmVydGV4RXhlY3V0YWJsZXM7CiAg
ICAgc3RkOjp2ZWN0b3I8UGl4ZWxFeGVjdXRhYmxlICo+IG1QaXhlbEV4ZWN1dGFibGVzOwotICAg
IFNoYWRlckV4ZWN1dGFibGVEM0QgKm1HZW9tZXRyeUV4ZWN1dGFibGU7CisgICAgc3RkOjp2ZWN0
b3I8U2hhZGVyRXhlY3V0YWJsZUQzRCAqPiBtR2VvbWV0cnlFeGVjdXRhYmxlczsKIAogICAgIHN0
ZDo6c3RyaW5nIG1WZXJ0ZXhITFNMOwogICAgIEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgbVZlcnRl
eFdvcmthcm91bmRzOwpAQCAtMjExLDM3ICszNjksNDUgQEAKICAgICBib29sIG1Vc2VzRnJhZ0Rl
cHRoOwogICAgIHN0ZDo6dmVjdG9yPFBpeGVsU2hhZGVyT3V0cHV0VmFyaWFibGU+IG1QaXhlbFNo
YWRlcktleTsKIAorICAgIC8vIENvbW1vbiBjb2RlIGZvciBhbGwgZHluYW1pYyBnZW9tZXRyeSBz
aGFkZXJzLiBDb25zaXN0cyBtYWlubHkgb2YgdGhlIEdTIGlucHV0IGFuZCBvdXRwdXQKKyAgICAv
LyBzdHJ1Y3R1cmVzLCBidWlsdCBmcm9tIHRoZSBsaW5rZWQgdmFyeWluZyBpbmZvLiBXZSBzdG9y
ZSB0aGUgc3RyaW5nIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZQorICAgIC8vIHBhY2tlZCB2YXJ5aW5n
cyBmb3Igc2ltcGxpY2l0eS4KKyAgICBzdGQ6OnN0cmluZyBtR2VvbWV0cnlTaGFkZXJQcmVhbWJs
ZTsKKwogICAgIGJvb2wgbVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc0ZsYXRJbnRlcnBv
bGF0aW9uOwogCiAgICAgVW5pZm9ybVN0b3JhZ2VEM0QgKm1WZXJ0ZXhVbmlmb3JtU3RvcmFnZTsK
ICAgICBVbmlmb3JtU3RvcmFnZUQzRCAqbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2U7CiAKLSAgICBH
TGVudW0gbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZTsKLQogICAgIHN0ZDo6dmVjdG9yPFNh
bXBsZXI+IG1TYW1wbGVyc1BTOwogICAgIHN0ZDo6dmVjdG9yPFNhbXBsZXI+IG1TYW1wbGVyc1ZT
OwogICAgIEdMdWludCBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZTsKICAgICBHTHVpbnQgbVVzZWRQ
aXhlbFNhbXBsZXJSYW5nZTsKICAgICBib29sIG1EaXJ0eVNhbXBsZXJNYXBwaW5nOwogCi0gICAg
Ly8gQ2FjaGUgZm9yIHZhbGlkYXRlU2FtcGxlcnMKLSAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IG1U
ZXh0dXJlVW5pdFR5cGVzQ2FjaGU7Ci0KICAgICAvLyBDYWNoZSBmb3IgZ2V0UGl4ZWxFeGVjdXRh
YmxlRm9yRnJhbWVidWZmZXIKICAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IG1QaXhlbFNoYWRlck91
dHB1dEZvcm1hdENhY2hlOwogCi0gICAgaW50IG1TaGFkZXJWZXJzaW9uOworICAgIEF0dHJpYklu
ZGV4QXJyYXkgbUF0dHJpYkxvY2F0aW9uVG9EM0RTZW1hbnRpYzsKIAotICAgIGludCBtQXR0cmli
dXRlc0J5TGF5b3V0W2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwotCiAgICAgdW5zaWduZWQgaW50
IG1TZXJpYWw7CiAKLSAgICBPcHRpb25hbDxib29sPiBtQ2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jl
c3VsdDsKKyAgICBzdGQ6OnZlY3RvcjxHTGludD4gbVZlcnRleFVCT0NhY2hlOworICAgIHN0ZDo6
dmVjdG9yPEdMaW50PiBtRnJhZ21lbnRVQk9DYWNoZTsKKyAgICBWZXJ0ZXhFeGVjdXRhYmxlOjpT
aWduYXR1cmUgbUNhY2hlZFZlcnRleFNpZ25hdHVyZTsKKyAgICBnbDo6SW5wdXRMYXlvdXQgbUNh
Y2hlZElucHV0TGF5b3V0OwogCisgICAgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4gbVN0cmVhbU91
dFZhcnlpbmdzOworICAgIHN0ZDo6dmVjdG9yPEQzRFVuaWZvcm0gKj4gbUQzRFVuaWZvcm1zOwor
ICAgIHN0ZDo6dmVjdG9yPEQzRFVuaWZvcm1CbG9jaz4gbUQzRFVuaWZvcm1CbG9ja3M7CisKKyAg
ICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc2g6OkJsb2NrTWVtYmVySW5mbz4gbUJsb2NrSW5mbzsK
KyAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc2l6ZV90PiBtQmxvY2tEYXRhU2l6ZXM7CisKICAg
ICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlU2VyaWFsKCk7CiAgICAgc3RhdGljIHVuc2lnbmVk
IGludCBtQ3VycmVudFNlcmlhbDsKIH07Ci0KIH0KIAotI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRF
UkVSX0QzRF9QUk9HUkFNRDNEX0hfCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9Q
Uk9HUkFNRDNEX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDkgQEAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdDsKICAg
ICBzdGF0aWMgdW5zaWduZWQgaW50IGlzc3VlU2VyaWFscyh1bnNpZ25lZCBpbnQgY291bnQpOwog
CisgICAgLy8gT25seSBjdXJyZW50bHkgYXBwbGllcyB0byBEM0QxMS4KKyAgICB2aXJ0dWFsIHZv
aWQgc2lnbmFsRGlydHkoKSB7fQorCiAgIHByaXZhdGU6CiAgICAgY29uc3QgdW5zaWduZWQgaW50
IG1TZXJpYWw7CiAgICAgc3RhdGljIHVuc2lnbmVkIGludCBtQ3VycmVudFNlcmlhbDsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVy
YnVmZmVyRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5jcHAJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
UmVuZGVyYnVmZmVyRDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSwxOSArOSwyMiBAQAogCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5oIgogCisjaW5j
bHVkZSAibGliQU5HTEUvSW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
RUdMSW1hZ2VEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJE
M0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFyZ2V0RDNELmgi
CiAKIG5hbWVzcGFjZSByeAogewotUmVuZGVyYnVmZmVyRDNEOjpSZW5kZXJidWZmZXJEM0QoUmVu
ZGVyZXJEM0QgKnJlbmRlcmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKK1JlbmRlcmJ1ZmZlckQz
RDo6UmVuZGVyYnVmZmVyRDNEKFJlbmRlcmVyRDNEICpyZW5kZXJlcikKKyAgICA6IG1SZW5kZXJl
cihyZW5kZXJlciksIG1SZW5kZXJUYXJnZXQobnVsbHB0ciksIG1JbWFnZShudWxscHRyKQogewot
ICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxMOwogfQogCiBSZW5kZXJidWZmZXJEM0Q6On5SZW5kZXJi
dWZmZXJEM0QoKQogewogICAgIFNhZmVEZWxldGUobVJlbmRlclRhcmdldCk7CisgICAgbUltYWdl
ID0gbnVsbHB0cjsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlckQzRDo6c2V0U3RvcmFnZShH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKQEAgLTUz
LDMzICs1Niw0NiBAQAogICAgIH0KIAogICAgIFJlbmRlclRhcmdldEQzRCAqbmV3UlQgPSBOVUxM
OwotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHdp
ZHRoLCBoZWlnaHQsIGNyZWF0aW9uRm9ybWF0LCBzYW1wbGVzLCAmbmV3UlQpOworICAgIGdsOjpF
cnJvciBlcnJvciA9CisgICAgICAgIG1SZW5kZXJlci0+Y3JlYXRlUmVuZGVyVGFyZ2V0KHN0YXRp
Y19jYXN0PGludD4od2lkdGgpLCBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uRm9ybWF0LCBzdGF0aWNfY2FzdDxH
THNpemVpPihzYW1wbGVzKSwgJm5ld1JUKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAogICAgIFNhZmVEZWxldGUobVJlbmRl
clRhcmdldCk7CisgICAgbUltYWdlICAgICAgICA9IG51bGxwdHI7CiAgICAgbVJlbmRlclRhcmdl
dCA9IG5ld1JUOwogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLVJl
bmRlclRhcmdldEQzRCAqUmVuZGVyYnVmZmVyRDNEOjpnZXRSZW5kZXJUYXJnZXQoKQorZ2w6OkVy
cm9yIFJlbmRlcmJ1ZmZlckQzRDo6c2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2Ug
KmltYWdlKQogewotICAgIHJldHVybiBtUmVuZGVyVGFyZ2V0OworICAgIG1JbWFnZSA9IEdldElt
cGxBczxFR0xJbWFnZUQzRD4oaW1hZ2UpOworICAgIFNhZmVEZWxldGUobVJlbmRlclRhcmdldCk7
CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotdW5zaWduZWQgaW50
IFJlbmRlcmJ1ZmZlckQzRDo6Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKCkgY29uc3QKK2dsOjpFcnJv
ciBSZW5kZXJidWZmZXJEM0Q6OmdldFJlbmRlclRhcmdldChSZW5kZXJUYXJnZXREM0QgKipvdXRS
ZW5kZXJUYXJnZXQpCiB7Ci0gICAgcmV0dXJuIChtUmVuZGVyVGFyZ2V0ID8gbVJlbmRlclRhcmdl
dC0+Z2V0U2VyaWFsKCkgOiAwKTsKKyAgICBpZiAobUltYWdlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KG91dFJlbmRlclRhcmdldCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgICpvdXRSZW5kZXJUYXJnZXQgPSBtUmVuZGVyVGFyZ2V0Owor
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICB9CiB9CiAKIGdsOjpF
cnJvciBSZW5kZXJidWZmZXJEM0Q6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVu
dFJlbmRlclRhcmdldCAqKnJ0T3V0KQogewotICAgICpydE91dCA9IG1SZW5kZXJUYXJnZXQ7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdldFJlbmRlclRh
cmdldChyZWludGVycHJldF9jYXN0PFJlbmRlclRhcmdldEQzRCAqKj4ocnRPdXQpKTsKIH0KIAog
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9SZW5kZXJidWZmZXJEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5oCShyZXZpc2lvbiAx
OTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1JlbmRlcmJ1ZmZlckQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiw3IEBACiAK
IG5hbWVzcGFjZSByeAogeworY2xhc3MgRUdMSW1hZ2VEM0Q7CiBjbGFzcyBSZW5kZXJlckQzRDsK
IGNsYXNzIFJlbmRlclRhcmdldEQzRDsKIGNsYXNzIFN3YXBDaGFpbkQzRDsKQEAgLTI2LDE5ICsy
NywyMyBAQAogICAgIFJlbmRlcmJ1ZmZlckQzRChSZW5kZXJlckQzRCAqcmVuZGVyZXIpOwogICAg
IHZpcnR1YWwgflJlbmRlcmJ1ZmZlckQzRCgpOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0
U3RvcmFnZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdo
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0U3RvcmFnZU11bHRpc2FtcGxl
KHNpemVfdCBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIGlu
dGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3Igc2V0U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2UgKmltYWdlKSBvdmVy
cmlkZTsKIAotICAgIFJlbmRlclRhcmdldEQzRCAqZ2V0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgdW5z
aWduZWQgaW50IGdldFJlbmRlclRhcmdldFNlcmlhbCgpIGNvbnN0OwotCisgICAgZ2w6OkVycm9y
IGdldFJlbmRlclRhcmdldChSZW5kZXJUYXJnZXREM0QgKipvdXRSZW5kZXJUYXJnZXQpOwogICAg
IGdsOjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBv
dmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIFJlbmRlcmVyRDNEICptUmVuZGVyZXI7CiAgICAg
UmVuZGVyVGFyZ2V0RDNEICptUmVuZGVyVGFyZ2V0OworICAgIEVHTEltYWdlRDNEICptSW1hZ2U7
CiB9OworCiB9CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfUkVOREVSQlVGRkVS
RDNEX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1JlbmRlcmVyRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNwcAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9SZW5kZXJlckQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMTggKzgsMjIgQEAKIAog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgogCisjaW5jbHVk
ZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL01lbW9yeUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5Lmgi
CisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9G
cmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvSW5kZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Q
cm9ncmFtRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1NhbXBsZXJEM0Qu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9TdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvQnVmZmVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlE
M0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5o
IgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTMwLDEyICszNCwxNyBAQAogLy8gcmVsZWFzZSBhbmQg
cmVjcmVhdGUgdGhlIHNjcmF0Y2ggYnVmZmVyLiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgaGF2ZSBh
CiAvLyBkZWdlbmVyYXRlIGNhc2Ugd2hlcmUgd2UgYXJlIHN0dWNrIGhvZ2dpbmcgbWVtb3J5Lgog
Y29uc3QgaW50IFNjcmF0Y2hNZW1vcnlCdWZmZXJMaWZldGltZSA9IDEwMDA7Ci19CiAKK30gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKKwogUmVuZGVyZXJEM0Q6OlJlbmRlcmVyRDNEKGVnbDo6RGlz
cGxheSAqZGlzcGxheSkKICAgICA6IG1EaXNwbGF5KGRpc3BsYXkpLAogICAgICAgbURldmljZUxv
c3QoZmFsc2UpLAotICAgICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIoMCkKKyAg
ICAgIG1Bbm5vdGF0b3IobnVsbHB0ciksCisgICAgICBtUHJlc2VudFBhdGhGYXN0RW5hYmxlZChm
YWxzZSksCisgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlcigwKSwKKyAgICAg
IG1Xb3JrYXJvdW5kc0luaXRpYWxpemVkKGZhbHNlKSwKKyAgICAgIG1EaXNqb2ludChmYWxzZSkK
IHsKIH0KIApAQCAtNDksMjYwICs1OCwxOTAgQEAKICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlci5y
ZXNpemUoMCk7CiAgICAgZm9yIChhdXRvICZpbmNvbXBsZXRlVGV4dHVyZSA6IG1JbmNvbXBsZXRl
VGV4dHVyZXMpCiAgICAgewotICAgICAgICBpbmNvbXBsZXRlVGV4dHVyZS5zZWNvbmQuc2V0KE5V
TEwpOworICAgICAgICBpbmNvbXBsZXRlVGV4dHVyZS5zZWNvbmQuc2V0KG51bGxwdHIpOwogICAg
IH0KICAgICBtSW5jb21wbGV0ZVRleHR1cmVzLmNsZWFyKCk7CisKKyAgICBpZiAobUFubm90YXRv
ciAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgZ2w6OlVuaW5pdGlhbGl6ZURlYnVnQW5ub3Rh
dGlvbnMoKTsKKyAgICAgICAgU2FmZURlbGV0ZShtQW5ub3RhdG9yKTsKKyAgICB9CiB9CiAKK1Nh
bXBsZXJJbXBsICpSZW5kZXJlckQzRDo6Y3JlYXRlU2FtcGxlcigpCit7CisgICAgcmV0dXJuIG5l
dyBTYW1wbGVyRDNEKCk7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0FycmF5cyhj
b25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNv
dW50KQoreworICAgIHJldHVybiBnZW5lcmljRHJhd0FycmF5cyhkYXRhLCBtb2RlLCBmaXJzdCwg
Y291bnQsIDApOworfQorCitnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmRyYXdBcnJheXNJbnN0YW5j
ZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpCit7CisgICAgcmV0dXJuIGdlbmVy
aWNEcmF3QXJyYXlzKGRhdGEsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7Cit9
CisKIGdsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZk
YXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsIEdM
c2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJhbmdlVUkgJmluZGV4UmFuZ2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQogewot
ICAgIGlmIChkYXRhLnN0YXRlLT5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpCi0gICAgewot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJQcmltaXRpdmUgcmVzdGFydCBub3QgaW1wbGVtZW50ZWQiKTsKLSAg
ICB9CisgICAgcmV0dXJuIGdlbmVyaWNEcmF3RWxlbWVudHMoZGF0YSwgbW9kZSwgY291bnQsIHR5
cGUsIGluZGljZXMsIDAsIGluZGV4UmFuZ2UpOworfQogCitnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6
OmRyYXdFbGVtZW50c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICByZXR1cm4gZ2Vu
ZXJpY0RyYXdFbGVtZW50cyhkYXRhLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFu
Y2VzLCBpbmRleFJhbmdlKTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmVyRDNEOjpkcmF3UmFuZ2VF
bGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit7CisgICAg
cmV0dXJuIGdlbmVyaWNEcmF3RWxlbWVudHMoZGF0YSwgbW9kZSwgY291bnQsIHR5cGUsIGluZGlj
ZXMsIDAsIGluZGV4UmFuZ2UpOworfQorCitnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmdlbmVyaWNE
cmF3RWxlbWVudHMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFu
Z2UgJmluZGV4UmFuZ2UpCit7CiAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBkYXRhLnN0YXRl
LT5nZXRQcm9ncmFtKCk7Ci0gICAgQVNTRVJUKHByb2dyYW0gIT0gTlVMTCk7CisgICAgQVNTRVJU
KHByb2dyYW0gIT0gbnVsbHB0cik7CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldElt
cGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKKyAgICBib29sIHVzZXNQb2ludFNpemUgICAgID0g
cHJvZ3JhbUQzRC0+dXNlc1BvaW50U2l6ZSgpOwogCi0gICAgcHJvZ3JhbS0+dXBkYXRlU2FtcGxl
ck1hcHBpbmcoKTsKKyAgICBwcm9ncmFtRDNELT51cGRhdGVTYW1wbGVyTWFwcGluZygpOwogCi0g
ICAgZ2w6OkVycm9yIGVycm9yID0gZ2VuZXJhdGVTd2l6emxlcyhkYXRhKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkoZ2VuZXJhdGVTd2l6emxlcyhkYXRhKSk7CiAKLSAgICBpZiAoIWFwcGx5UHJpbWl0
aXZlVHlwZShtb2RlLCBjb3VudCwgcHJvZ3JhbS0+dXNlc1BvaW50U2l6ZSgpKSkKKyAgICBpZiAo
IWFwcGx5UHJpbWl0aXZlVHlwZShtb2RlLCBjb3VudCwgdXNlc1BvaW50U2l6ZSkpCiAgICAgewot
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgZXJyb3IgPSBhcHBseVJlbmRlclRhcmdldChkYXRh
LCBtb2RlLCBmYWxzZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKHVwZGF0ZVN0YXRlKGRhdGEsIG1v
ZGUpKTsKIAotICAgIGVycm9yID0gYXBwbHlTdGF0ZShkYXRhLCBtb2RlKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAg
IGdsOjpWZXJ0ZXhBcnJheSAqdmFvID0gZGF0YS5zdGF0ZS0+Z2V0VmVydGV4QXJyYXkoKTsKICAg
ICBUcmFuc2xhdGVkSW5kZXhEYXRhIGluZGV4SW5mbzsKICAgICBpbmRleEluZm8uaW5kZXhSYW5n
ZSA9IGluZGV4UmFuZ2U7Ci0gICAgZXJyb3IgPSBhcHBseUluZGV4QnVmZmVyKGluZGljZXMsIHZh
by0+Z2V0RWxlbWVudEFycmF5QnVmZmVyKCksIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZv
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9y
OwotICAgIH0KIAorICAgIEFOR0xFX1RSWShhcHBseUluZGV4QnVmZmVyKGRhdGEsIGluZGljZXMs
IGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKSk7CisKICAgICBhcHBseVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVycygqZGF0YS5zdGF0ZSk7CiAgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNrIGlz
IG5vdCBhbGxvd2VkIGZvciBEcmF3RWxlbWVudHMsIHRoaXMgZXJyb3Igc2hvdWxkIGhhdmUgYmVl
biBjYXVnaHQgYXQgdGhlIEFQSSB2YWxpZGF0aW9uCiAgICAgLy8gbGF5ZXIuCiAgICAgQVNTRVJU
KCFkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSk7CiAKLSAg
ICBHTHNpemVpIHZlcnRleENvdW50ID0gaW5kZXhJbmZvLmluZGV4UmFuZ2UubGVuZ3RoKCkgKyAx
OwotICAgIGVycm9yID0gYXBwbHlWZXJ0ZXhCdWZmZXIoKmRhdGEuc3RhdGUsIG1vZGUsIGluZGV4
SW5mby5pbmRleFJhbmdlLnN0YXJ0LCB2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VzKTsKLSAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAg
ICBzaXplX3QgdmVydGV4Q291bnQgPSBpbmRleEluZm8uaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgp
OworICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcigqZGF0YS5zdGF0ZSwgbW9kZSwgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4oaW5kZXhJbmZvLmluZGV4UmFuZ2Uuc3RhcnQpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPih2ZXJ0ZXhDb3VudCks
IGluc3RhbmNlcywgJmluZGV4SW5mbykpOworICAgIEFOR0xFX1RSWShhcHBseVRleHR1cmVzKGRh
dGEpKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlTaGFkZXJzKGRhdGEsIG1vZGUpKTsKKyAgICBBTkdM
RV9UUlkocHJvZ3JhbUQzRC0+YXBwbHlVbmlmb3JtQnVmZmVycyhkYXRhKSk7CiAKLSAgICBlcnJv
ciA9IGFwcGx5U2hhZGVycyhkYXRhKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIGVycm9yID0gYXBwbHlUZXh0dXJl
cyhkYXRhKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLQotICAgIGVycm9yID0gcHJvZ3JhbS0+YXBwbHlVbmlmb3JtQnVmZmVy
cyhkYXRhKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgIH0KLQogICAgIGlmICghc2tpcERyYXcoZGF0YSwgbW9kZSkpCiAgICAgewot
ICAgICAgICBlcnJvciA9IGRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywg
dmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKSwgaW5kZXhJbmZvLCBpbnN0YW5jZXMpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKGRyYXdFbGVtZW50c0ltcGwoZGF0
YSwgaW5kZXhJbmZvLCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlckQzRDo6ZHJhd0FycmF5cyhjb25z
dCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gbW9kZSwgR0xpbnQgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCitnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6
OmdlbmVyaWNEcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKQogewogICAgIGdsOjpQcm9n
cmFtICpwcm9ncmFtID0gZGF0YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgpOwotICAgIEFTU0VSVChwcm9n
cmFtICE9IE5VTEwpOworICAgIEFTU0VSVChwcm9ncmFtICE9IG51bGxwdHIpOworICAgIFByb2dy
YW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7CisgICAg
Ym9vbCB1c2VzUG9pbnRTaXplICAgICA9IHByb2dyYW1EM0QtPnVzZXNQb2ludFNpemUoKTsKIAot
ICAgIHByb2dyYW0tPnVwZGF0ZVNhbXBsZXJNYXBwaW5nKCk7CisgICAgcHJvZ3JhbUQzRC0+dXBk
YXRlU2FtcGxlck1hcHBpbmcoKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IGdlbmVyYXRlU3dp
enpsZXMoZGF0YSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICBBTkdMRV9UUlkoZ2Vu
ZXJhdGVTd2l6emxlcyhkYXRhKSk7CisgICAgaWYgKCFhcHBseVByaW1pdGl2ZVR5cGUobW9kZSwg
Y291bnQsIHVzZXNQb2ludFNpemUpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOworICAg
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICBpZiAoIWFwcGx5UHJpbWl0
aXZlVHlwZShtb2RlLCBjb3VudCwgcHJvZ3JhbS0+dXNlc1BvaW50U2l6ZSgpKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KKyAgICBBTkdMRV9U
UlkodXBkYXRlU3RhdGUoZGF0YSwgbW9kZSkpOworICAgIEFOR0xFX1RSWShhcHBseVRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVycygqZGF0YS5zdGF0ZSkpOworICAgIEFOR0xFX1RSWShhcHBseVZlcnRl
eEJ1ZmZlcigqZGF0YS5zdGF0ZSwgbW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZXMsIG51bGxw
dHIpKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlUZXh0dXJlcyhkYXRhKSk7CisgICAgQU5HTEVfVFJZ
KGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7CisgICAgQU5HTEVfVFJZKHByb2dyYW1EM0QtPmFw
cGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOwogCi0gICAgZXJyb3IgPSBhcHBseVJlbmRlclRhcmdl
dChkYXRhLCBtb2RlLCBmYWxzZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBlcnJvciA9IGFwcGx5U3RhdGUoZGF0
YSwgbW9kZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9Ci0KLSAgICBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycygqZGF0
YS5zdGF0ZSk7Ci0KLSAgICBlcnJvciA9IGFwcGx5VmVydGV4QnVmZmVyKCpkYXRhLnN0YXRlLCBt
b2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlcyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBlcnJvciA9IGFwcGx5
U2hhZGVycyhkYXRhKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIGVycm9yID0gYXBwbHlUZXh0dXJlcyhkYXRhKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KLQotICAgIGVycm9yID0gcHJvZ3JhbS0+YXBwbHlVbmlmb3JtQnVmZmVycyhkYXRhKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KLQogICAgIGlmICghc2tpcERyYXcoZGF0YSwgbW9kZSkpCiAgICAgewotICAgICAgICBl
cnJvciA9IGRyYXdBcnJheXMoZGF0YSwgbW9kZSwgY291bnQsIGluc3RhbmNlcywgcHJvZ3JhbS0+
dXNlc1BvaW50U2l6ZSgpKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RS
WShkcmF3QXJyYXlzSW1wbChkYXRhLCBtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlcykpOwog
CiAgICAgICAgIGlmIChkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVz
ZWQoKSkKICAgICAgICAgewotICAgICAgICAgICAgbWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2Uo
ZGF0YSk7CisgICAgICAgICAgICBBTkdMRV9UUlkobWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2Uo
ZGF0YSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJl
ckQzRDo6Z2VuZXJhdGVTd2l6emxlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSwgZ2w6OlNhbXBsZXJU
eXBlIHR5cGUpCiB7Ci0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBkYXRhLnN0YXRlLT5nZXRQ
cm9ncmFtKCk7CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFt
RDNEPihkYXRhLnN0YXRlLT5nZXRQcm9ncmFtKCkpOwogCi0gICAgc2l6ZV90IHNhbXBsZXJSYW5n
ZSA9IHByb2dyYW0tPmdldFVzZWRTYW1wbGVyUmFuZ2UodHlwZSk7CisgICAgdW5zaWduZWQgaW50
IHNhbXBsZXJSYW5nZSA9IHByb2dyYW1EM0QtPmdldFVzZWRTYW1wbGVyUmFuZ2UodHlwZSk7CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbXBsZXJSYW5nZTsgaSsrKQorICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2FtcGxlclJhbmdlOyBpKyspCiAgICAgewotICAgICAg
ICBHTGVudW0gdGV4dHVyZVR5cGUgPSBwcm9ncmFtLT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUodHlw
ZSwgaSk7Ci0gICAgICAgIEdMaW50IHRleHR1cmVVbml0ID0gcHJvZ3JhbS0+Z2V0U2FtcGxlck1h
cHBpbmcodHlwZSwgaSwgKmRhdGEuY2Fwcyk7CisgICAgICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9
IHByb2dyYW1EM0QtPmdldFNhbXBsZXJUZXh0dXJlVHlwZSh0eXBlLCBpKTsKKyAgICAgICAgR0xp
bnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyTWFwcGluZyh0eXBlLCBpLCAq
ZGF0YS5jYXBzKTsKICAgICAgICAgaWYgKHRleHR1cmVVbml0ICE9IC0xKQogICAgICAgICB7CiAg
ICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGRhdGEuc3RhdGUtPmdldFNhbXBsZXJU
ZXh0dXJlKHRleHR1cmVVbml0LCB0ZXh0dXJlVHlwZSk7CiAgICAgICAgICAgICBBU1NFUlQodGV4
dHVyZSk7Ci0gICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuc3dpenps
ZVJlcXVpcmVkKCkpCisgICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0VGV4dHVyZVN0YXRlKCku
c3dpenpsZVJlcXVpcmVkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6OkVy
cm9yIGVycm9yID0gZ2VuZXJhdGVTd2l6emxlKHRleHR1cmUpOwotICAgICAgICAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEFOR0xF
X1RSWShnZW5lcmF0ZVN3aXp6bGUodGV4dHVyZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlckQzRDo6Z2VuZXJhdGVTd2l6
emxlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSkKIHsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZW5l
cmF0ZVN3aXp6bGVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICBlcnJv
ciA9IGdlbmVyYXRlU3dpenpsZXMoZGF0YSwgZ2w6OlNBTVBMRVJfUElYRUwpOwotICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgQU5HTEVfVFJZKGdlbmVyYXRl
U3dpenpsZXMoZGF0YSwgZ2w6OlNBTVBMRVJfVkVSVEVYKSk7CisgICAgQU5HTEVfVFJZKGdlbmVy
YXRlU3dpenpsZXMoZGF0YSwgZ2w6OlNBTVBMRVJfUElYRUwpKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotLy8gQXBwbGllcyB0aGUgcmVuZGVyIHRhcmdldCBzdXJmYWNlLCBkZXB0
aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJlY3RhbmdsZSBhbmQKLS8vIHNjaXNzb3IgcmVj
dGFuZ2xlIHRvIHRoZSByZW5kZXJlcgotZ2w6OkVycm9yIFJlbmRlcmVyRDNEOjphcHBseVJlbmRl
clRhcmdldChjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlLCBib29sIGlnbm9y
ZVZpZXdwb3J0KQordW5zaWduZWQgaW50IFJlbmRlcmVyRDNEOjpHZXRCbGVuZFNhbXBsZU1hc2so
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsIGludCBzYW1wbGVzKQogewotICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBkYXRhLnN0YXRlLT5nZXREcmF3RnJhbWVidWZm
ZXIoKTsKLSAgICBBU1NFUlQoZnJhbWVidWZmZXJPYmplY3QgJiYgZnJhbWVidWZmZXJPYmplY3Qt
PmNoZWNrU3RhdHVzKGRhdGEpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKLQotICAgIGds
OjpFcnJvciBlcnJvciA9IGFwcGx5UmVuZGVyVGFyZ2V0KGZyYW1lYnVmZmVyT2JqZWN0KTsKLSAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAg
IH0KLQotICAgIGZsb2F0IG5lYXJaID0gZGF0YS5zdGF0ZS0+Z2V0TmVhclBsYW5lKCk7Ci0gICAg
ZmxvYXQgZmFyWiA9IGRhdGEuc3RhdGUtPmdldEZhclBsYW5lKCk7Ci0gICAgc2V0Vmlld3BvcnQo
ZGF0YS5zdGF0ZS0+Z2V0Vmlld3BvcnQoKSwgbmVhclosIGZhclosIGRyYXdNb2RlLAotICAgICAg
ICAgICAgICAgIGRhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250RmFjZSwgaWdu
b3JlVmlld3BvcnQpOwotCi0gICAgc2V0U2Npc3NvclJlY3RhbmdsZShkYXRhLnN0YXRlLT5nZXRT
Y2lzc29yKCksIGRhdGEuc3RhdGUtPmlzU2Npc3NvclRlc3RFbmFibGVkKCkpOwotCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci19Ci0KLS8vIEFwcGxpZXMgdGhlIGZpeGVkLWZ1
bmN0aW9uIHN0YXRlIChjdWxsaW5nLCBkZXB0aCB0ZXN0LCBhbHBoYSBibGVuZGluZywgc3RlbmNp
bGluZywgZXRjKSB0byB0aGUgRGlyZWN0M0QgZGV2aWNlCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6
OmFwcGx5U3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKLXsKLSAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gZGF0YS5zdGF0ZS0+
Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgaW50IHNhbXBsZXMgPSBmcmFtZWJ1ZmZlck9iamVj
dC0+Z2V0U2FtcGxlcyhkYXRhKTsKLQotICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgcmFzdGVyaXpl
ciA9IGRhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpOwotICAgIHJhc3Rlcml6ZXIucG9p
bnREcmF3TW9kZSA9IChkcmF3TW9kZSA9PSBHTF9QT0lOVFMpOwotICAgIHJhc3Rlcml6ZXIubXVs
dGlTYW1wbGUgPSAoc2FtcGxlcyAhPSAwKTsKLQotICAgIGdsOjpFcnJvciBlcnJvciA9IHNldFJh
c3Rlcml6ZXJTdGF0ZShyYXN0ZXJpemVyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQogICAgIHVuc2lnbmVkIGludCBtYXNr
ID0gMDsKICAgICBpZiAoZGF0YS5zdGF0ZS0+aXNTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoKSkKICAg
ICB7CkBAIC0zMzMsMTQ3ICsyNzIsMTAzIEBACiAgICAgewogICAgICAgICBtYXNrID0gMHhGRkZG
RkZGRjsKICAgICB9Ci0gICAgZXJyb3IgPSBzZXRCbGVuZFN0YXRlKGZyYW1lYnVmZmVyT2JqZWN0
LCBkYXRhLnN0YXRlLT5nZXRCbGVuZFN0YXRlKCksIGRhdGEuc3RhdGUtPmdldEJsZW5kQ29sb3Io
KSwgbWFzayk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CiAKLSAgICBlcnJvciA9IHNldERlcHRoU3RlbmNpbFN0YXRlKGRhdGEu
c3RhdGUtPmdldERlcHRoU3RlbmNpbFN0YXRlKCksIGRhdGEuc3RhdGUtPmdldFN0ZW5jaWxSZWYo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdldFN0ZW5j
aWxCYWNrUmVmKCksIHJhc3Rlcml6ZXIuZnJvbnRGYWNlID09IEdMX0NDVyk7Ci0gICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gbWFzazsKIH0KIAog
Ly8gQXBwbGllcyB0aGUgc2hhZGVycyBhbmQgc2hhZGVyIGNvbnN0YW50cyB0byB0aGUgRGlyZWN0
M0QgZGV2aWNlCi1nbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmFwcGx5U2hhZGVycyhjb25zdCBnbDo6
RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBSZW5kZXJlckQzRDo6YXBwbHlTaGFkZXJzKGNvbnN0IGds
OjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpCiB7CiAgICAgZ2w6OlByb2dyYW0gKnByb2dy
YW0gPSBkYXRhLnN0YXRlLT5nZXRQcm9ncmFtKCk7CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQz
RCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKKyAgICBwcm9ncmFtRDNELT51cGRh
dGVDYWNoZWRJbnB1dExheW91dCgqZGF0YS5zdGF0ZSk7CiAKLSAgICBnbDo6VmVydGV4Rm9ybWF0
IGlucHV0TGF5b3V0W2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwotICAgIGdsOjpWZXJ0ZXhGb3Jt
YXQ6OkdldElucHV0TGF5b3V0KGlucHV0TGF5b3V0LCBwcm9ncmFtLCAqZGF0YS5zdGF0ZSk7Cisg
ICAgQU5HTEVfVFJZKGFwcGx5U2hhZGVyc0ltcGwoZGF0YSwgZHJhd01vZGUpKTsKIAotICAgIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZmJvID0gZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVy
KCk7Ci0KLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBhcHBseVNoYWRlcnMocHJvZ3JhbSwgaW5wdXRM
YXlvdXQsIGZibywgZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCkucmFzdGVyaXplckRp
c2NhcmQsIGRhdGEuc3RhdGUtPmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwot
ICAgIH0KLQotICAgIHJldHVybiBwcm9ncmFtLT5hcHBseVVuaWZvcm1zKCk7CisgICAgcmV0dXJu
IHByb2dyYW1EM0QtPmFwcGx5VW5pZm9ybXMoZHJhd01vZGUpOwogfQogCiAvLyBGb3IgZWFjaCBE
aXJlY3QzRCBzYW1wbGVyIG9mIGVpdGhlciB0aGUgcGl4ZWwgb3IgdmVydGV4IHN0YWdlLAogLy8g
bG9va3MgdXAgdGhlIGNvcnJlc3BvbmRpbmcgT3BlbkdMIHRleHR1cmUgaW1hZ2UgdW5pdCBhbmQg
dGV4dHVyZSB0eXBlLAogLy8gYW5kIHNldHMgdGhlIHRleHR1cmUgYW5kIGl0cyBhZGRyZXNzaW5n
L2ZpbHRlcmluZyBzdGF0ZSAob3IgTlVMTCB3aGVuIGluYWN0aXZlKS4KKy8vIFNhbXBsZXIgbWFw
cGluZyBuZWVkcyB0byBiZSB1cC10by1kYXRlIG9uIHRoZSBwcm9ncmFtIG9iamVjdCBiZWZvcmUg
dGhpcyBpcyBjYWxsZWQuCiBnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmFwcGx5VGV4dHVyZXMoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSBzaGFkZXJUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlh
bEFycmF5ICZmcmFtZWJ1ZmZlclNlcmlhbHMsIHNpemVfdCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVy
VGV4dHVyZUFycmF5ICZmcmFtZWJ1ZmZlclRleHR1cmVzLCBzaXplX3QgZnJhbWVidWZmZXJUZXh0
dXJlQ291bnQpCiB7Ci0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBkYXRhLnN0YXRlLT5nZXRQ
cm9ncmFtKCk7CisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFt
RDNEPihkYXRhLnN0YXRlLT5nZXRQcm9ncmFtKCkpOwogCi0gICAgc2l6ZV90IHNhbXBsZXJSYW5n
ZSA9IHByb2dyYW0tPmdldFVzZWRTYW1wbGVyUmFuZ2Uoc2hhZGVyVHlwZSk7Ci0gICAgZm9yIChz
aXplX3Qgc2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlclJhbmdlOyBzYW1w
bGVySW5kZXgrKykKKyAgICBBU1NFUlQoIXByb2dyYW1EM0QtPmlzU2FtcGxlck1hcHBpbmdEaXJ0
eSgpKTsKKworICAgIHVuc2lnbmVkIGludCBzYW1wbGVyUmFuZ2UgPSBwcm9ncmFtRDNELT5nZXRV
c2VkU2FtcGxlclJhbmdlKHNoYWRlclR5cGUpOworICAgIGZvciAodW5zaWduZWQgaW50IHNhbXBs
ZXJJbmRleCA9IDA7IHNhbXBsZXJJbmRleCA8IHNhbXBsZXJSYW5nZTsgc2FtcGxlckluZGV4Kysp
CiAgICAgewotICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBwcm9ncmFtLT5nZXRTYW1wbGVy
VGV4dHVyZVR5cGUoc2hhZGVyVHlwZSwgc2FtcGxlckluZGV4KTsKLSAgICAgICAgR0xpbnQgdGV4
dHVyZVVuaXQgPSBwcm9ncmFtLT5nZXRTYW1wbGVyTWFwcGluZyhzaGFkZXJUeXBlLCBzYW1wbGVy
SW5kZXgsICpkYXRhLmNhcHMpOworICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBwcm9ncmFt
RDNELT5nZXRTYW1wbGVyVGV4dHVyZVR5cGUoc2hhZGVyVHlwZSwgc2FtcGxlckluZGV4KTsKKyAg
ICAgICAgR0xpbnQgdGV4dHVyZVVuaXQgPSBwcm9ncmFtRDNELT5nZXRTYW1wbGVyTWFwcGluZyhz
aGFkZXJUeXBlLCBzYW1wbGVySW5kZXgsICpkYXRhLmNhcHMpOwogICAgICAgICBpZiAodGV4dHVy
ZVVuaXQgIT0gLTEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJl
ID0gZGF0YS5zdGF0ZS0+Z2V0U2FtcGxlclRleHR1cmUodGV4dHVyZVVuaXQsIHRleHR1cmVUeXBl
KTsKICAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlKTsKLSAgICAgICAgICAgIGdsOjpTYW1wbGVy
U3RhdGUgc2FtcGxlciA9IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpOwogCiAgICAgICAgICAg
ICBnbDo6U2FtcGxlciAqc2FtcGxlck9iamVjdCA9IGRhdGEuc3RhdGUtPmdldFNhbXBsZXIodGV4
dHVyZVVuaXQpOwotICAgICAgICAgICAgaWYgKHNhbXBsZXJPYmplY3QpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgc2FtcGxlck9iamVjdC0+Z2V0U3RhdGUoJnNhbXBsZXIpOwotICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVy
U3RhdGUgPQorICAgICAgICAgICAgICAgIHNhbXBsZXJPYmplY3QgPyBzYW1wbGVyT2JqZWN0LT5n
ZXRTYW1wbGVyU3RhdGUoKSA6IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpOworCiAgICAgICAg
ICAgICAvLyBUT0RPOiBzdGQ6OmJpbmFyeV9zZWFyY2ggbWF5IGJlY29tZSB1bmF2YWlsYWJsZSB1
c2luZyBvbGRlciB2ZXJzaW9ucyBvZiBHQ0MKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc1Nh
bXBsZXJDb21wbGV0ZShzYW1wbGVyLCBkYXRhKSAmJgotICAgICAgICAgICAgICAgICFzdGQ6OmJp
bmFyeV9zZWFyY2goZnJhbWVidWZmZXJTZXJpYWxzLmJlZ2luKCksIGZyYW1lYnVmZmVyU2VyaWFs
cy5iZWdpbigpICsgZnJhbWVidWZmZXJTZXJpYWxDb3VudCwgdGV4dHVyZS0+Z2V0VGV4dHVyZVNl
cmlhbCgpKSkKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5pc1NhbXBsZXJDb21wbGV0ZShzYW1w
bGVyU3RhdGUsIGRhdGEpICYmCisgICAgICAgICAgICAgICAgIXN0ZDo6YmluYXJ5X3NlYXJjaChm
cmFtZWJ1ZmZlclRleHR1cmVzLmJlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFtZWJ1ZmZlclRleHR1cmVzLmJlZ2luKCkgKyBmcmFtZWJ1ZmZlclRleHR1cmVD
b3VudCwgdGV4dHVyZSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gc2V0U2FtcGxlclN0YXRlKHNoYWRlclR5cGUsIHNhbXBsZXJJbmRleCwgdGV4dHVy
ZSwgc2FtcGxlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBlcnJvciA9IHNldFRleHR1cmUoc2hhZGVyVHlw
ZSwgc2FtcGxlckluZGV4LCB0ZXh0dXJlKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBBTkdMRV9UUlkoc2V0U2Ft
cGxlclN0YXRlKHNoYWRlclR5cGUsIHNhbXBsZXJJbmRleCwgdGV4dHVyZSwgc2FtcGxlclN0YXRl
KSk7CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKHNldFRleHR1cmUoc2hhZGVyVHlwZSwgc2Ft
cGxlckluZGV4LCB0ZXh0dXJlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gVGV4dHVyZSBpcyBub3Qgc2FtcGxlciBj
b21wbGV0ZSBvciBpdCBpcyBpbiB1c2UgYnkgdGhlIGZyYW1lYnVmZmVyLiAgQmluZCB0aGUgaW5j
b21wbGV0ZSB0ZXh0dXJlLgogICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlICppbmNvbXBsZXRl
VGV4dHVyZSA9IGdldEluY29tcGxldGVUZXh0dXJlKHRleHR1cmVUeXBlKTsKLSAgICAgICAgICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRUZXh0dXJlKHNoYWRlclR5cGUsIHNhbXBsZXJJbmRl
eCwgaW5jb21wbGV0ZVRleHR1cmUpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKHNldFNhbXBs
ZXJTdGF0ZShzaGFkZXJUeXBlLCBzYW1wbGVySW5kZXgsIGluY29tcGxldGVUZXh0dXJlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21wbGV0ZVRleHR1cmUt
PmdldFNhbXBsZXJTdGF0ZSgpKSk7CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZKHNldFRleHR1
cmUoc2hhZGVyVHlwZSwgc2FtcGxlckluZGV4LCBpbmNvbXBsZXRlVGV4dHVyZSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gTm8gdGV4dHVyZSBib3VuZCB0byB0aGlzIHNsb3QgZXZlbiB0aG91Z2ggaXQgaXMgdXNlZCBi
eSB0aGUgc2hhZGVyLCBiaW5kIGEgTlVMTCB0ZXh0dXJlCi0gICAgICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBzZXRUZXh0dXJlKHNoYWRlclR5cGUsIHNhbXBsZXJJbmRleCwgTlVMTCk7Ci0gICAg
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShz
ZXRUZXh0dXJlKHNoYWRlclR5cGUsIHNhbXBsZXJJbmRleCwgbnVsbHB0cikpOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgLy8gU2V0IGFsbCB0aGUgcmVtYWluaW5nIHRleHR1cmVzIHRvIE5VTEwK
ICAgICBzaXplX3Qgc2FtcGxlckNvdW50ID0gKHNoYWRlclR5cGUgPT0gZ2w6OlNBTVBMRVJfUElY
RUwpID8gZGF0YS5jYXBzLT5tYXhUZXh0dXJlSW1hZ2VVbml0cwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBkYXRhLmNhcHMtPm1h
eFZlcnRleFRleHR1cmVJbWFnZVVuaXRzOwotICAgIGZvciAoc2l6ZV90IHNhbXBsZXJJbmRleCA9
IHNhbXBsZXJSYW5nZTsgc2FtcGxlckluZGV4IDwgc2FtcGxlckNvdW50OyBzYW1wbGVySW5kZXgr
KykKLSAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHNldFRleHR1cmUoc2hhZGVyVHlw
ZSwgc2FtcGxlckluZGV4LCBOVUxMKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgfQorICAg
IGNsZWFyVGV4dHVyZXMoc2hhZGVyVHlwZSwgc2FtcGxlclJhbmdlLCBzYW1wbGVyQ291bnQpOwog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlckQzRDo6YXBwbHlUZXh0dXJlcyhjb25zdCBn
bDo6RGF0YSAmZGF0YSkKIHsKLSAgICBGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxBcnJheSBmcmFt
ZWJ1ZmZlclNlcmlhbHM7Ci0gICAgc2l6ZV90IGZyYW1lYnVmZmVyU2VyaWFsQ291bnQgPSBnZXRC
b3VuZEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlhbHMoZGF0YSwgJmZyYW1lYnVmZmVyU2VyaWFscyk7
CisgICAgRnJhbWVidWZmZXJUZXh0dXJlQXJyYXkgZnJhbWVidWZmZXJUZXh0dXJlczsKKyAgICBz
aXplX3QgZnJhbWVidWZmZXJTZXJpYWxDb3VudCA9IGdldEJvdW5kRnJhbWVidWZmZXJUZXh0dXJl
cyhkYXRhLCAmZnJhbWVidWZmZXJUZXh0dXJlcyk7CiAKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBh
cHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRFWCwgZnJhbWVidWZmZXJTZXJpYWxz
LCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIGVycm9yID0gYXBwbHlUZXh0
dXJlcyhkYXRhLCBnbDo6U0FNUExFUl9QSVhFTCwgZnJhbWVidWZmZXJTZXJpYWxzLCBmcmFtZWJ1
ZmZlclNlcmlhbENvdW50KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIEFOR0xFX1RSWShhcHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVSX1ZFUlRF
WCwgZnJhbWVidWZmZXJUZXh0dXJlcywgZnJhbWVidWZmZXJTZXJpYWxDb3VudCkpOworICAgIEFO
R0xFX1RSWShhcHBseVRleHR1cmVzKGRhdGEsIGdsOjpTQU1QTEVSX1BJWEVMLCBmcmFtZWJ1ZmZl
clRleHR1cmVzLCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50KSk7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGJvb2wgUmVuZGVyZXJEM0Q6OnNraXBEcmF3KGNvbnN0IGdsOjpEYXRhICZk
YXRhLCBHTGVudW0gZHJhd01vZGUpCiB7CisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9ICpk
YXRhLnN0YXRlOworCiAgICAgaWYgKGRyYXdNb2RlID09IEdMX1BPSU5UUykKICAgICB7CisgICAg
ICAgIGJvb2wgdXNlc1BvaW50U2l6ZSA9IEdldEltcGxBczxQcm9ncmFtRDNEPihzdGF0ZS5nZXRQ
cm9ncmFtKCkpLT51c2VzUG9pbnRTaXplKCk7CisKICAgICAgICAgLy8gUHJvZ3JhbUJpbmFyeSBh
c3N1bWVzIG5vbi1wb2ludCByZW5kZXJpbmcgaWYgZ2xfUG9pbnRTaXplIGlzbid0IHdyaXR0ZW4s
CiAgICAgICAgIC8vIHdoaWNoIGFmZmVjdHMgdmFyeWluZyBpbnRlcnBvbGF0aW9uLiBTaW5jZSB0
aGUgdmFsdWUgb2YgZ2xfUG9pbnRTaXplIGlzCiAgICAgICAgIC8vIHVuZGVmaW5lZCB3aGVuIG5v
dCB3cml0dGVuLCBqdXN0IHNraXAgZHJhd2luZyB0byBhdm9pZCB1bmV4cGVjdGVkIHJlc3VsdHMu
Ci0gICAgICAgIGlmICghZGF0YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgpLT51c2VzUG9pbnRTaXplKCkg
JiYgIWRhdGEuc3RhdGUtPmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKQorICAg
ICAgICBpZiAoIXVzZXNQb2ludFNpemUgJiYgIXN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3Rp
dmVVbnBhdXNlZCgpKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHN0aWN0bHkg
c3BlYWtpbmcgbm90IGFuIGVycm9yLCBidXQgZGV2ZWxvcGVycyBzaG91bGQgYmUKICAgICAgICAg
ICAgIC8vIG5vdGlmaWVkIG9mIHJpc2tpbmcgdW5kZWZpbmVkIGJlaGF2aW9yLgpAQCAtNDg0LDcg
KzM3OSw4IEBACiAgICAgfQogICAgIGVsc2UgaWYgKGdsOjpJc1RyaWFuZ2xlTW9kZShkcmF3TW9k
ZSkpCiAgICAgewotICAgICAgICBpZiAoZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCku
Y3VsbEZhY2UgJiYgZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCkuY3VsbE1vZGUgPT0g
R0xfRlJPTlRfQU5EX0JBQ0spCisgICAgICAgIGlmIChzdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUo
KS5jdWxsRmFjZSAmJgorICAgICAgICAgICAgc3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkuY3Vs
bE1vZGUgPT0gR0xfRlJPTlRfQU5EX0JBQ0spCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CkBAIC00OTMsNyArMzg5LDcgQEAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgUmVuZGVyZXJEM0Q6Om1hcmtUcmFuc2Zvcm1GZWVkYmFja1VzYWdlKGNvbnN0
IGdsOjpEYXRhICZkYXRhKQorZ2w6OkVycm9yIFJlbmRlcmVyRDNEOjptYXJrVHJhbnNmb3JtRmVl
ZGJhY2tVc2FnZShjb25zdCBnbDo6RGF0YSAmZGF0YSkKIHsKICAgICBjb25zdCBnbDo6VHJhbnNm
b3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gZGF0YS5zdGF0ZS0+Z2V0Q3VycmVudFRy
YW5zZm9ybUZlZWRiYWNrKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1G
ZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZlckNvdW50KCk7IGkrKykKQEAgLTUwMiwzNyArMzk4LDM2
IEBACiAgICAgICAgIGlmIChiaW5kaW5nLmdldCgpICE9IG51bGxwdHIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYmlu
ZGluZy5nZXQoKSk7Ci0gICAgICAgICAgICBidWZmZXJEM0QtPm1hcmtUcmFuc2Zvcm1GZWVkYmFj
a1VzYWdlKCk7CisgICAgICAgICAgICBBTkdMRV9UUlkoYnVmZmVyRDNELT5tYXJrVHJhbnNmb3Jt
RmVlZGJhY2tVc2FnZSgpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCi1zaXplX3QgUmVuZGVyZXJEM0Q6OmdldEJvdW5kRnJhbWVidWZmZXJUZXh0
dXJlU2VyaWFscyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlhbEFy
cmF5ICpvdXRTZXJpYWxBcnJheSkKK3NpemVfdCBSZW5kZXJlckQzRDo6Z2V0Qm91bmRGcmFtZWJ1
ZmZlclRleHR1cmVzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBGcmFtZWJ1ZmZlclRleHR1cmVBcnJh
eSAqb3V0VGV4dHVyZUFycmF5KQogewotICAgIHNpemVfdCBzZXJpYWxDb3VudCA9IDA7CisgICAg
c2l6ZV90IHRleHR1cmVDb3VudCA9IDA7CiAKICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmRy
YXdGcmFtZWJ1ZmZlciA9IGRhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGF0YS5jYXBzLT5tYXhDb2xvckF0dGFjaG1lbnRz
OyBpKyspCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkcmF3RnJhbWVidWZmZXItPmdldE51
bUNvbG9yQnVmZmVycygpOyBpKyspCiAgICAgewogICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZl
cihpKTsKICAgICAgICAgaWYgKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+dHlwZSgpID09IEdM
X1RFWFRVUkUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0g
YXR0YWNobWVudC0+Z2V0VGV4dHVyZSgpOwotICAgICAgICAgICAgKCpvdXRTZXJpYWxBcnJheSlb
c2VyaWFsQ291bnQrK10gPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCk7CisgICAgICAgICAg
ICAoKm91dFRleHR1cmVBcnJheSlbdGV4dHVyZUNvdW50KytdID0gYXR0YWNobWVudC0+Z2V0VGV4
dHVyZSgpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0RGVw
dGhPclN0ZW5jaWxidWZmZXIoKTsKICAgICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudCAmJiBk
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LT50eXBlKCkgPT0gR0xfVEVYVFVSRSkKICAgICB7Ci0gICAg
ICAgIGdsOjpUZXh0dXJlICpkZXB0aFN0ZW5jaWxUZXh0dXJlID0gZGVwdGhTdGVuY2lsQXR0YWNo
bWVudC0+Z2V0VGV4dHVyZSgpOwotICAgICAgICAoKm91dFNlcmlhbEFycmF5KVtzZXJpYWxDb3Vu
dCsrXSA9IGRlcHRoU3RlbmNpbFRleHR1cmUtPmdldFRleHR1cmVTZXJpYWwoKTsKKyAgICAgICAg
KCpvdXRUZXh0dXJlQXJyYXkpW3RleHR1cmVDb3VudCsrXSA9IGRlcHRoU3RlbmNpbEF0dGFjaG1l
bnQtPmdldFRleHR1cmUoKTsKICAgICB9CiAKLSAgICBzdGQ6OnNvcnQob3V0U2VyaWFsQXJyYXkt
PmJlZ2luKCksIG91dFNlcmlhbEFycmF5LT5iZWdpbigpICsgc2VyaWFsQ291bnQpOworICAgIHN0
ZDo6c29ydChvdXRUZXh0dXJlQXJyYXktPmJlZ2luKCksIG91dFRleHR1cmVBcnJheS0+YmVnaW4o
KSArIHRleHR1cmVDb3VudCk7CiAKLSAgICByZXR1cm4gc2VyaWFsQ291bnQ7CisgICAgcmV0dXJu
IHRleHR1cmVDb3VudDsKIH0KIAogZ2w6OlRleHR1cmUgKlJlbmRlcmVyRDNEOjpnZXRJbmNvbXBs
ZXRlVGV4dHVyZShHTGVudW0gdHlwZSkKQEAgLTU0MSwyMCArNDM2LDI2IEBACiAgICAgewogICAg
ICAgICBjb25zdCBHTHVieXRlIGNvbG9yW10gPSB7IDAsIDAsIDAsIDI1NSB9OwogICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyBjb2xvclNpemUoMSwgMSwgMSk7Ci0gICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlIGluY29tcGxldGVVbnBhY2tTdGF0ZSgxLCAwKTsKKyAgICAgICAgY29u
c3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgdW5wYWNrKDEsIDApOworICAgICAgICBjb25zdCBnbDo6
Qm94IGFyZWEoMCwgMCwgMCwgMSwgMSwgMSk7CiAKLSAgICAgICAgZ2w6OlRleHR1cmUqIHQgPSBu
ZXcgZ2w6OlRleHR1cmUoY3JlYXRlVGV4dHVyZSh0eXBlKSwgZ2w6OlRleHR1cmU6OklOQ09NUExF
VEVfVEVYVFVSRV9JRCwgdHlwZSk7CisgICAgICAgIC8vIFNraXAgdGhlIEFQSSBsYXllciB0byBh
dm9pZCBuZWVkaW5nIHRvIHBhc3MgdGhlIENvbnRleHQgYW5kIG1lc3Mgd2l0aCBkaXJ0eSBiaXRz
LgorICAgICAgICBnbDo6VGV4dHVyZSAqdCA9CisgICAgICAgICAgICBuZXcgZ2w6OlRleHR1cmUo
Y3JlYXRlVGV4dHVyZSh0eXBlKSwgc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSwg
dHlwZSk7CisgICAgICAgIHQtPnNldFN0b3JhZ2UodHlwZSwgMSwgR0xfUkdCQTgsIGNvbG9yU2l6
ZSk7CiAKICAgICAgICAgaWYgKHR5cGUgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKICAgICAgICAg
ewogICAgICAgICAgICAgZm9yIChHTGVudW0gZmFjZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWDsgZmFjZSA8PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o7IGZhY2UrKykK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0LT5zZXRJbWFnZShmYWNlLCAwLCBHTF9S
R0JBLCBjb2xvclNpemUsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGluY29tcGxldGVVbnBh
Y2tTdGF0ZSwgY29sb3IpOworICAgICAgICAgICAgICAgIHQtPmdldEltcGxlbWVudGF0aW9uKCkt
PnNldFN1YkltYWdlKGZhY2UsIDAsIGFyZWEsIEdMX1JHQkE4LCBHTF9VTlNJR05FRF9CWVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFj
aywgY29sb3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgdC0+c2V0SW1hZ2UodHlwZSwgMCwgR0xfUkdCQSwgY29sb3JTaXpl
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBpbmNvbXBsZXRlVW5wYWNrU3RhdGUsIGNvbG9y
KTsKKyAgICAgICAgICAgIHQtPmdldEltcGxlbWVudGF0aW9uKCktPnNldFN1YkltYWdlKHR5cGUs
IDAsIGFyZWEsIEdMX1JHQkE4LCBHTF9VTlNJR05FRF9CWVRFLCB1bnBhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcik7CiAgICAgICAgIH0K
IAogICAgICAgICBtSW5jb21wbGV0ZVRleHR1cmVzW3R5cGVdLnNldCh0KTsKQEAgLTYxOCw0ICs1
MTksNjggQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAordm9pZCBS
ZW5kZXJlckQzRDo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikKK3sKKyAgICBzdGQ6OnZlY3Rvcjx3Y2hhcl90PiB3Y3N0cmluZyAobGVuZ3RoICsg
MSk7CisgICAgc2l6ZV90IGNvbnZlcnRlZENoYXJzID0gMDsKKyAgICBlcnJub190IGVyciA9IG1i
c3Rvd2NzX3MoJmNvbnZlcnRlZENoYXJzLCB3Y3N0cmluZy5kYXRhKCksIGxlbmd0aCArIDEsIG1h
cmtlciwgX1RSVU5DQVRFKTsKKyAgICBpZiAoZXJyID09IDApCisgICAgeworICAgICAgICBnZXRB
bm5vdGF0b3IoKS0+c2V0TWFya2VyKHdjc3RyaW5nLmRhdGEoKSk7CisgICAgfQogfQorCit2b2lk
IFJlbmRlcmVyRDNEOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikKK3sKKyAgICBzdGQ6OnZlY3Rvcjx3Y2hhcl90PiB3Y3N0cmluZyhsZW5ndGggKyAx
KTsKKyAgICBzaXplX3QgY29udmVydGVkQ2hhcnMgPSAwOworICAgIGVycm5vX3QgZXJyID0gbWJz
dG93Y3NfcygmY29udmVydGVkQ2hhcnMsIHdjc3RyaW5nLmRhdGEoKSwgbGVuZ3RoICsgMSwgbWFy
a2VyLCBfVFJVTkNBVEUpOworICAgIGlmIChlcnIgPT0gMCkKKyAgICB7CisgICAgICAgIGdldEFu
bm90YXRvcigpLT5iZWdpbkV2ZW50KHdjc3RyaW5nLmRhdGEoKSk7CisgICAgfQorfQorCit2b2lk
IFJlbmRlcmVyRDNEOjpwb3BHcm91cE1hcmtlcigpCit7CisgICAgZ2V0QW5ub3RhdG9yKCktPmVu
ZEV2ZW50KCk7Cit9CisKK3ZvaWQgUmVuZGVyZXJEM0Q6OnNldEdQVURpc2pvaW50KCkKK3sKKyAg
ICBtRGlzam9pbnQgPSB0cnVlOworfQorCitHTGludCBSZW5kZXJlckQzRDo6Z2V0R1BVRGlzam9p
bnQoKQoreworICAgIGJvb2wgZGlzam9pbnQgPSBtRGlzam9pbnQ7CisKKyAgICAvLyBEaXNqb2lu
dCBmbGFnIGlzIGNsZWFyZWQgd2hlbiByZWFkCisgICAgbURpc2pvaW50ID0gZmFsc2U7CisKKyAg
ICByZXR1cm4gZGlzam9pbnQ7Cit9CisKK0dMaW50NjQgUmVuZGVyZXJEM0Q6OmdldFRpbWVzdGFt
cCgpCit7CisgICAgLy8gRDNEIGhhcyBubyB3YXkgdG8gZ2V0IGFuIGFjdHVhbCB0aW1lc3RhbXAg
cmVsaWFibHkgc28gMCBpcyByZXR1cm5lZAorICAgIHJldHVybiAwOworfQorCit2b2lkIFJlbmRl
cmVyRDNEOjpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKQoreworfQorCit2b2lk
IFJlbmRlcmVyRDNEOjppbml0aWFsaXplRGVidWdBbm5vdGF0b3IoKQoreworICAgIGNyZWF0ZUFu
bm90YXRvcigpOworICAgIEFTU0VSVChtQW5ub3RhdG9yKTsKKyAgICBnbDo6SW5pdGlhbGl6ZURl
YnVnQW5ub3RhdGlvbnMobUFubm90YXRvcik7Cit9CisKK2dsOjpEZWJ1Z0Fubm90YXRvciAqUmVu
ZGVyZXJEM0Q6OmdldEFubm90YXRvcigpCit7CisgICAgQVNTRVJUKG1Bbm5vdGF0b3IpOworICAg
IHJldHVybiBtQW5ub3RhdG9yOworfQorfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9SZW5kZXJlckQzRC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgJKHdvcmtp
bmcgY29weSkKQEAgLTksMTAgKzksMTUgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNE
X1JFTkRFUkVSRDNEX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9SRU5ERVJFUkQz
RF9IXwogCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL01lbW9y
eUJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0RhdGEuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9EZXZpY2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2Zvcm1hdHV0aWxzRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1dv
cmthcm91bmRzRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05h
dGl2ZVdpbmRvdy5oIgogCiAvL0ZJWE1FKGptYWRpbGwpOiBzdGQ6OmFycmF5IGlzIGN1cnJlbnRs
eSBwcm9oaWJpdGVkIGJ5IENocm9taXVtIHN0eWxlIGd1aWRlCkBAIC0yNSwxNSArMzAsMjEgQEAK
IAogbmFtZXNwYWNlIGdsCiB7CitjbGFzcyBEZWJ1Z0Fubm90YXRvcjsKIGNsYXNzIEluZm9Mb2c7
CitjbGFzcyBUZXh0dXJlOwogc3RydWN0IExpbmtlZFZhcnlpbmc7Ci1jbGFzcyBUZXh0dXJlOwog
fQogCiBuYW1lc3BhY2UgcngKIHsKK3N0cnVjdCBEM0RVbmlmb3JtOworc3RydWN0IEQzRFZhcnlp
bmc7CitjbGFzcyBEZXZpY2VEM0Q7CitjbGFzcyBFR0xJbWFnZUQzRDsKIGNsYXNzIEltYWdlRDNE
OwogY2xhc3MgSW5kZXhCdWZmZXI7CitjbGFzcyBQcm9ncmFtRDNEOwogY2xhc3MgUmVuZGVyVGFy
Z2V0RDNEOwogY2xhc3MgU2hhZGVyRXhlY3V0YWJsZUQzRDsKIGNsYXNzIFN3YXBDaGFpbkQzRDsK
QEAgLTQ1LDkgKzU2LDE5IEBACiB7CiAgICAgU0hBREVSX1ZFUlRFWCwKICAgICBTSEFERVJfUElY
RUwsCi0gICAgU0hBREVSX0dFT01FVFJZCisgICAgU0hBREVSX0dFT01FVFJZLAorICAgIFNIQURF
Ul9UWVBFX01BWAogfTsKIAorc3RydWN0IERldmljZUlkZW50aWZpZXIKK3sKKyAgICBVSU5UIFZl
bmRvcklkOworICAgIFVJTlQgRGV2aWNlSWQ7CisgICAgVUlOVCBTdWJTeXNJZDsKKyAgICBVSU5U
IFJldmlzaW9uOworICAgIFVJTlQgRmVhdHVyZUxldmVsOworfTsKKwogZW51bSBSZW5kZXJlckNs
YXNzCiB7CiAgICAgUkVOREVSRVJfRDNEMTEsCkBAIC02NSwxMCArODYsMTYgQEAKICAgICB2aXJ0
dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJbmRleEJ1ZmZlcigpID0gMDsKIAogICAgIC8vIFRPRE8o
am1hZGlsbCk6IGFkZCBWZXJ0ZXhGb3JtYXRDYXBzCi0gICAgdmlydHVhbCBWZXJ0ZXhDb252ZXJz
aW9uVHlwZSBnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZShjb25zdCBnbDo6VmVydGV4Rm9ybWF0ICZ2
ZXJ0ZXhGb3JtYXQpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRWZXJ0ZXhDb21w
b25lbnRUeXBlKGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgJnZlcnRleEZvcm1hdCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgVmVydGV4Q29udmVyc2lvblR5cGUgZ2V0VmVydGV4Q29udmVyc2lvblR5
cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgR0xlbnVtIGdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5
cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yT3JS
ZXN1bHQ8dW5zaWduZWQgaW50PiBnZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKAorICAgICAgICBjb25z
dCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdCA9IDA7CiB9OwogCit1c2luZyBBdHRyaWJJ
bmRleEFycmF5ID0gc3RkOjphcnJheTxpbnQsIGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM+OworCiBj
bGFzcyBSZW5kZXJlckQzRCA6IHB1YmxpYyBSZW5kZXJlciwgcHVibGljIEJ1ZmZlckZhY3RvcnlE
M0QKIHsKICAgcHVibGljOgpAQCAtNzgsNjYgKzEwNSw5MiBAQAogICAgIHZpcnR1YWwgZWdsOjpF
cnJvciBpbml0aWFsaXplKCkgPSAwOwogCiAgICAgdmlydHVhbCBlZ2w6OkNvbmZpZ1NldCBnZW5l
cmF0ZUNvbmZpZ3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlRGlzcGxh
eUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qg
PSAwOwogCi0gICAgZ2w6OkVycm9yIGRyYXdBcnJheXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xl
bnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3IgZHJhd0FycmF5c0luc3RhbmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZHJhd0Vs
ZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIGluc3RhbmNlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJhbmdlVUkgJmluZGV4UmFuZ2UpIG92ZXJy
aWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5n
ZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luc3Rh
bmNlZChjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdSYW5n
ZUVsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGlzRGV2aWNlTG9zdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6c3RyaW5n
IGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgU2FtcGxlckltcGwgKmNy
ZWF0ZVNhbXBsZXIoKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgaW50IGdldE1pbm9yU2hhZGVy
TW9kZWwoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRTaGFkZXJNb2Rl
bFN1ZmZpeCgpIGNvbnN0ID0gMDsKIAogICAgIC8vIERpcmVjdDNEIFNwZWNpZmljIG1ldGhvZHMK
LSAgICB2aXJ0dWFsIEdVSUQgZ2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBEZXZpY2VJZGVudGlmaWVyIGdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QgPSAw
OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENyZWF0ZUNoaWxkV2luZG93Rm9yU3VyZmFjZShF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU3dhcENo
YWluRDNEICpjcmVhdGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywgSEFORExF
IHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVy
Rm9ybWF0KSA9IDA7CisgICAgdmlydHVhbCBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihO
YXRpdmVXaW5kb3cgbmF0aXZlV2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRp
b24pID0gMDsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdlbmVyYXRlU3dpenpsZShnbDo6VGV4
dHVyZSAqdGV4dHVyZSkgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFNhbXBsZXJTdGF0
ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSwg
Y29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlcikgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1
cmUgKnRleHR1cmUpID0gMDsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFVuaWZvcm1CdWZm
ZXJzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMaW50IHZlcnRleFVuaWZvcm1CdWZmZXJzW10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgZnJhZ21lbnRVbmlmb3Jt
QnVmZmVyc1tdKSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4g
JmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMpID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNl
dFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXJTdGF0ZSkg
PSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNv
bnN0IGdsOjpDb2xvckYgJmJsZW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzaykgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIHNldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZGVw
dGhTdGVuY2lsU3RhdGUsIGludCBzdGVuY2lsUmVmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzdGVuY2lsQmFja1JlZiwgYm9vbCBmcm9udEZhY2VDQ1cp
ID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciB1cGRhdGVTdGF0ZShjb25zdCBnbDo6RGF0YSAm
ZGF0YSwgR0xlbnVtIGRyYXdNb2RlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3Nv
clJlY3RhbmdsZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmll
d3BvcnQsIGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyLCBHTGVudW0gZHJhd01vZGUsIEdMZW51bSBm
cm9udEZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlVmlld3Bv
cnQpID0gMDsKLQogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5UmVuZGVyVGFyZ2V0KGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZmZXIpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBhcHBseVNoYWRlcnMoZ2w6OlByb2dyYW0gKnByb2dyYW0sIGNvbnN0IGdsOjpWZXJ0ZXhGb3Jt
YXQgaW5wdXRMYXlvdXRbXSwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByYXN0ZXJpemVyRGlzY2FyZCwg
Ym9vbCB0cmFuc2Zvcm1GZWVkYmFja0FjdGl2ZSkgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGFwcGx5VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUltcGwgJnByb2dyYW0sIGNvbnN0IHN0ZDo6dmVj
dG9yPGdsOjpMaW5rZWRVbmlmb3JtKj4gJnVuaWZvcm1BcnJheSkgPSAwOworICAgIHZpcnR1YWwg
Z2w6OkVycm9yIGFwcGx5VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQzRCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFVuaWZv
cm0gKj4gJnVuaWZvcm1BcnJheSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseVByaW1pdGl2
ZVR5cGUoR0xlbnVtIHByaW1pdGl2ZVR5cGUsIEdMc2l6ZWkgZWxlbWVudENvdW50LCBib29sIHVz
ZXNQb2ludFNpemUpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseVZlcnRleEJ1ZmZl
cihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Ig
YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1l
bnRBcnJheUJ1ZmZlciwgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBU
cmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlJiBzdGF0ZSkgPSAwOwor
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5k
ZXhEYXRhICppbmRleEluZm8pID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseUluZGV4
QnVmZmVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pID0gMDsKKyAgICB2aXJ0dWFs
IGdsOjpFcnJvciBhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6U3RhdGUg
JnN0YXRlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKSA9IDA7
Ci0KICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0
b3JzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJh
Z21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtQnVmZmVycygpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3QgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBnZXRQb3N0U3ViQnVmZmVyU3VwcG9ydCgpIGNvbnN0ID0gMDsK
IAogICAgIHZpcnR1YWwgaW50IGdldE1ham9yU2hhZGVyTW9kZWwoKSBjb25zdCA9IDA7CiAKKyAg
ICBjb25zdCBXb3JrYXJvdW5kc0QzRCAmZ2V0V29ya2Fyb3VuZHMoKSBjb25zdDsKKwogICAgIC8v
IFBpeGVsIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5SW1hZ2UyRChjb25z
dCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdl
LCBHTGludCBsZXZlbCkgPSAwOwpAQCAtMTUwLDIyICsyMDMsMzEgQEAKIAogICAgIC8vIFJlbmRl
clRhcmdldCBjcmVhdGlvbgogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdl
dChpbnQgd2lkdGgsIGludCBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywg
UmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVh
dGVSZW5kZXJUYXJnZXRDb3B5KFJlbmRlclRhcmdldEQzRCAqc291cmNlLCBSZW5kZXJUYXJnZXRE
M0QgKipvdXRSVCkgPSAwOwogCiAgICAgLy8gU2hhZGVyIG9wZXJhdGlvbnMKLSAgICB2aXJ0dWFs
IGdsOjpFcnJvciBsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxl
bmd0aCwgU2hhZGVyVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5aW5nPiAmdHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNl
cGFyYXRlZE91dHB1dEJ1ZmZlcnMsIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdXRhYmxl
KSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5m
b0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlckhMU0wsIFNoYWRlclR5cGUg
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5aW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVk
T3V0cHV0QnVmZmVycywgY29uc3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMs
CisgICAgdmlydHVhbCBnbDo6RXJyb3IgbG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJUeXBlIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNE
VmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJsZSkg
PSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9M
b2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVySExTTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoYWRlclR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFZhcnlpbmc+ICZzdHJlYW1P
dXRWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJs
ZUQzRCAqKm91dEV4ZWN0dWFibGUpID0gMDsKICAgICB2aXJ0dWFsIFVuaWZvcm1TdG9yYWdlRDNE
ICpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpID0gMDsKIAogICAgIC8v
IEltYWdlIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIEltYWdlRDNEICpjcmVhdGVJbWFnZSgpID0g
MDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChJbWFnZUQzRCAqZGVzdCwg
SW1hZ2VEM0QgKnNvdXJjZSkgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdlbmVyYXRlTWlw
bWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBjb25zdCBnbDo6U2FtcGxlclN0
YXRlICZzYW1wbGVyU3RhdGUpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcHNVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0
dXJlU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJl
U3RvcmFnZTJEKFN3YXBDaGFpbkQzRCAqc3dhcENoYWluKSA9IDA7CisgICAgdmlydHVhbCBUZXh0
dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFnZUQzRCAqZWds
SW1hZ2UpID0gMDsKICAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3Rv
cmFnZTJEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQgbGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5
KSA9IDA7CiAgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2VD
dWJlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIGludCBzaXplLCBp
bnQgbGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KSA9IDA7CiAgICAgdmlydHVhbCBUZXh0
dXJlU3RvcmFnZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UzRChHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXpl
aSBkZXB0aCwgaW50IGxldmVscykgPSAwOwpAQCAtMTg0LDU2ICsyNDYsMTA1IEBACiAKICAgICBn
bDo6RXJyb3IgZ2V0U2NyYXRjaE1lbW9yeUJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgTWVt
b3J5QnVmZmVyICoqYnVmZmVyT3V0KTsKIAorICAgIC8vIEVYVF9kZWJ1Z19tYXJrZXIKKyAgICB2
b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIp
IG92ZXJyaWRlOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgc2V0R1BVRGlzam9pbnQoKTsKKworICAgIEdMaW50IGdldEdQVURp
c2pvaW50KCkgb3ZlcnJpZGU7CisgICAgR0xpbnQ2NCBnZXRUaW1lc3RhbXAoKSBvdmVycmlkZTsK
KworICAgIHZvaWQgb25NYWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7
CisKKyAgICAvLyBJbiBEM0QxMSwgZmFzdGVyIHRoYW4gY2FsbGluZyBzZXRUZXh0dXJlIGEgamls
bGlvbiB0aW1lcworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNsZWFyVGV4dHVyZXMoZ2w6OlNhbXBs
ZXJUeXBlIHNhbXBsZXJUeXBlLCBzaXplX3QgcmFuZ2VTdGFydCwgc2l6ZV90IHJhbmdlRW5kKSA9
IDA7CisKKyAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgZ2V0RUdMRGV2aWNlKERldmljZUltcGwgKipk
ZXZpY2UpID0gMDsKKworICAgIGJvb2wgcHJlc2VudFBhdGhGYXN0RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1QcmVzZW50UGF0aEZhc3RFbmFibGVkOyB9CisKKyAgICAvLyBTdHJlYW0gY3JlYXRp
b24KKyAgICB2aXJ0dWFsIFN0cmVhbUltcGwgKmNyZWF0ZVN0cmVhbShjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgPSAwOworCiAgIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGdsOjpF
cnJvciBkcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIGJvb2wgdXNlc1BvaW50U2l6ZSkgPSAwOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBU
cmFuc2xhdGVkSW5kZXhEYXRhICZpbmRleEluZm8sIEdMc2l6ZWkgaW5zdGFuY2VzKSA9IDA7Ci0K
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVpZCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5U2hhZGVyc0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsIEdMZW51bSBkcmF3TW9kZSkgPSAwOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlQW5ub3RhdG9yKCkgPSAwOworCisgICAgc3RhdGljIHVuc2lnbmVk
IGludCBHZXRCbGVuZFNhbXBsZU1hc2soY29uc3QgZ2w6OkRhdGEgJmRhdGEsIGludCBzYW1wbGVz
KTsKKyAgICAvLyBkaXJ0eVBvaW50ZXIgaXMgYSBzcGVjaWFsIHZhbHVlIHRoYXQgd2lsbCBtYWtl
IHRoZSBjb21wYXJpc29uIHdpdGggYW55IHZhbGlkIHBvaW50ZXIgZmFpbCBhbmQgZm9yY2UgdGhl
IHJlbmRlcmVyIHRvIHJlLWFwcGx5IHRoZSBzdGF0ZS4KKwogICAgIGVnbDo6RGlzcGxheSAqbURp
c3BsYXk7CiAgICAgYm9vbCBtRGV2aWNlTG9zdDsKIAorICAgIHZvaWQgaW5pdGlhbGl6ZURlYnVn
QW5ub3RhdG9yKCk7CisgICAgZ2w6OkRlYnVnQW5ub3RhdG9yICptQW5ub3RhdG9yOworCisgICAg
Ym9vbCBtUHJlc2VudFBhdGhGYXN0RW5hYmxlZDsKKwogICBwcml2YXRlOgorICAgIGdsOjpFcnJv
ciBnZW5lcmljRHJhd0FycmF5cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlcyk7CisKKyAgICBnbDo6RXJyb3IgZ2VuZXJpY0RyYXdFbGVtZW50cyhjb25zdCBnbDo6RGF0
YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7CisKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydFZlcnRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSA9IDA7CisgICAg
dmlydHVhbCBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJ
bmRleERhdGEgJmluZGV4SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZXMpID0gMDsKKwogICAgIC8vRklYTUUoam1hZGlsbCk6IHN0ZDo6YXJy
YXkgaXMgY3VycmVudGx5IHByb2hpYml0ZWQgYnkgQ2hyb21pdW0gc3R5bGUgZ3VpZGUKLSAgICB0
eXBlZGVmIHN0ZDo6YXJyYXk8dW5zaWduZWQgaW50LCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRTPiBGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxBcnJheTsKKyAg
ICB0eXBlZGVmIHN0ZDo6YXJyYXk8Z2w6OlRleHR1cmUqLCBnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRTPiBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheTsKIAogICAg
IGdsOjpFcnJvciBnZW5lcmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBnbDo6U2Ft
cGxlclR5cGUgdHlwZSk7CiAgICAgZ2w6OkVycm9yIGdlbmVyYXRlU3dpenpsZXMoY29uc3QgZ2w6
OkRhdGEgJmRhdGEpOwogCi0gICAgZ2w6OkVycm9yIGFwcGx5UmVuZGVyVGFyZ2V0KGNvbnN0IGds
OjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUsIGJvb2wgaWdub3JlVmlld3BvcnQpOwogICAg
IGdsOjpFcnJvciBhcHBseVN0YXRlKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01v
ZGUpOwotICAgIGdsOjpFcnJvciBhcHBseVNoYWRlcnMoY29uc3QgZ2w6OkRhdGEgJmRhdGEpOwor
ICAgIGdsOjpFcnJvciBhcHBseVNoYWRlcnMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBk
cmF3TW9kZSk7CiAgICAgZ2w6OkVycm9yIGFwcGx5VGV4dHVyZXMoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsIGdsOjpTYW1wbGVyVHlwZSBzaGFkZXJUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZyYW1lYnVmZmVyVGV4dHVyZVNlcmlhbEFycmF5ICZmcmFtZWJ1ZmZlclNlcmlh
bHMsIHNpemVfdCBmcmFtZWJ1ZmZlclNlcmlhbENvdW50KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSAmZnJhbWVidWZmZXJUZXh0dXJl
cywgc2l6ZV90IGZyYW1lYnVmZmVyVGV4dHVyZUNvdW50KTsKICAgICBnbDo6RXJyb3IgYXBwbHlU
ZXh0dXJlcyhjb25zdCBnbDo6RGF0YSAmZGF0YSk7CiAKICAgICBib29sIHNraXBEcmF3KGNvbnN0
IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOwotICAgIHZvaWQgbWFya1RyYW5zZm9y
bUZlZWRiYWNrVXNhZ2UoY29uc3QgZ2w6OkRhdGEgJmRhdGEpOworICAgIGdsOjpFcnJvciBtYXJr
VHJhbnNmb3JtRmVlZGJhY2tVc2FnZShjb25zdCBnbDo6RGF0YSAmZGF0YSk7CiAKLSAgICBzaXpl
X3QgZ2V0Qm91bmRGcmFtZWJ1ZmZlclRleHR1cmVTZXJpYWxzKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZm
ZXJUZXh0dXJlU2VyaWFsQXJyYXkgKm91dFNlcmlhbEFycmF5KTsKKyAgICBzaXplX3QgZ2V0Qm91
bmRGcmFtZWJ1ZmZlclRleHR1cmVzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBGcmFtZWJ1ZmZlclRl
eHR1cmVBcnJheSAqb3V0VGV4dHVyZUFycmF5KTsKICAgICBnbDo6VGV4dHVyZSAqZ2V0SW5jb21w
bGV0ZVRleHR1cmUoR0xlbnVtIHR5cGUpOwogCisgICAgZ2w6OkRlYnVnQW5ub3RhdG9yICpnZXRB
bm5vdGF0b3IoKTsKKworICAgIHZpcnR1YWwgV29ya2Fyb3VuZHNEM0QgZ2VuZXJhdGVXb3JrYXJv
dW5kcygpIGNvbnN0ID0gMDsKKwogICAgIGdsOjpUZXh0dXJlTWFwIG1JbmNvbXBsZXRlVGV4dHVy
ZXM7CiAgICAgTWVtb3J5QnVmZmVyIG1TY3JhdGNoTWVtb3J5QnVmZmVyOwogICAgIHVuc2lnbmVk
IGludCBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlcjsKLX07CiAKLXN0cnVjdCBkeF9W
ZXJ0ZXhDb25zdGFudHMKLXsKLSAgICBmbG9hdCBkZXB0aFJhbmdlWzRdOwotICAgIGZsb2F0IHZp
ZXdBZGp1c3RbNF07Ci0gICAgZmxvYXQgdmlld0Nvb3Jkc1s0XTsKLX07CisgICAgbXV0YWJsZSBi
b29sIG1Xb3JrYXJvdW5kc0luaXRpYWxpemVkOworICAgIG11dGFibGUgV29ya2Fyb3VuZHNEM0Qg
bVdvcmthcm91bmRzOwogCi1zdHJ1Y3QgZHhfUGl4ZWxDb25zdGFudHMKLXsKLSAgICBmbG9hdCBk
ZXB0aFJhbmdlWzRdOwotICAgIGZsb2F0IHZpZXdDb29yZHNbNF07Ci0gICAgZmxvYXQgZGVwdGhG
cm9udFs0XTsKKyAgICBib29sIG1EaXNqb2ludDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2FtcGxlckQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvU2FtcGxlckQzRC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TYW1wbGVyRDNELmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU2FtcGxlckQzRC5oOiBEZWZpbmVzIHRoZSBy
eDo6U2FtcGxlckQzRCBjbGFzcywgYW4gaW1wbGVtZW50YXRpb24gb2YgU2FtcGxlckltcGwuCisK
KyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX1NBTVBMRVJEM0RfSF8KKyNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfRDNEX1NBTVBMRVJEM0RfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL1NhbXBsZXJJbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBTYW1wbGVy
RDNEIDogcHVibGljIFNhbXBsZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBTYW1wbGVyRDNEKCkg
e30KKyAgICB+U2FtcGxlckQzRCgpIG92ZXJyaWRlIHt9Cit9OworfQorCisjZW5kaWYgIC8vIExJ
QkFOR0xFX1JFTkRFUkVSX0QzRF9TQU1QTEVSRDNEX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9T
aGFkZXJEM0QuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYsMTQgKzYsMTQgQEAKIAogLy8gU2hhZGVyRDNELmNwcDogRGVmaW5lcyB0aGUgcng6OlNo
YWRlckQzRCBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHJ4OjpTaGFkZXJJbXBsLgogCi0jaW5jbHVk
ZSAibGliQU5HTEUvU2hhZGVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvQ29tcGlsZXIuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvZmVhdHVyZXMuaCIK
IAogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Db21w
aWxlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L2ZlYXR1cmVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNE
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIKIAogLy8g
RGVmaW5pdGlvbnMgbG9jYWwgdG8gdGhlIHRyYW5zbGF0aW9uIHVuaXQKIG5hbWVzcGFjZQpAQCAt
MjMsNTIgKzIzLDI1IEBACiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSAgICAgIGNhc2Ug
R0xfVkVSVEVYX1NIQURFUjoKLSAgICAgICAgcmV0dXJuICJWRVJURVgiOworICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICByZXR1cm4gIlZFUlRFWCI7CiAKLSAgICAg
IGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgotICAgICAgICByZXR1cm4gIkZSQUdNRU5UIjsKKyAg
ICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgICAgICByZXR1cm4gIkZSQUdN
RU5UIjsKIAotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
cmV0dXJuICIiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiAiIjsKICAgICB9CiB9CiAKLX0KK30gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgot
dm9pZCBGaWx0ZXJJbmFjdGl2ZVZhcmlhYmxlcyhzdGQ6OnZlY3RvcjxWYXJUPiAqdmFyaWFibGVM
aXN0KQorU2hhZGVyRDNEOjpTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSkg
OiBTaGFkZXJJbXBsKGRhdGEpCiB7Ci0gICAgQVNTRVJUKHZhcmlhYmxlTGlzdCk7Ci0KLSAgICBm
b3IgKHNpemVfdCB2YXJJbmRleCA9IDA7IHZhckluZGV4IDwgdmFyaWFibGVMaXN0LT5zaXplKCk7
KQotICAgIHsKLSAgICAgICAgaWYgKCEoKnZhcmlhYmxlTGlzdClbdmFySW5kZXhdLnN0YXRpY1Vz
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyaWFibGVMaXN0LT5lcmFzZSh2YXJpYWJsZUxp
c3QtPmJlZ2luKCkgKyB2YXJJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICB2YXJJbmRleCsrOwotICAgICAgICB9Ci0gICAgfQotfQotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVmFyVD4KLWNvbnN0IHN0ZDo6dmVjdG9yPFZhclQ+ICpHZXRTaGFkZXJW
YXJpYWJsZXMoY29uc3Qgc3RkOjp2ZWN0b3I8VmFyVD4gKnZhcmlhYmxlTGlzdCkKLXsKLSAgICBB
U1NFUlQodmFyaWFibGVMaXN0KTsKLSAgICByZXR1cm4gdmFyaWFibGVMaXN0OwotfQotCi1TaGFk
ZXJEM0Q6OlNoYWRlckQzRChHTGVudW0gdHlwZSkKLSAgICA6IG1TaGFkZXJUeXBlKHR5cGUpLAot
ICAgICAgbVNoYWRlclZlcnNpb24oMTAwKQotewogICAgIHVuY29tcGlsZSgpOwogfQogCkBAIC03
OCw1MyArNTEsMTUgQEAKIAogc3RkOjpzdHJpbmcgU2hhZGVyRDNEOjpnZXREZWJ1Z0luZm8oKSBj
b25zdAogewotICAgIHJldHVybiBtRGVidWdJbmZvICsgc3RkOjpzdHJpbmcoIlxuLy8gIikgKyBH
ZXRTaGFkZXJUeXBlU3RyaW5nKG1TaGFkZXJUeXBlKSArICIgU0hBREVSIEVORFxuIjsKKyAgICBy
ZXR1cm4gbURlYnVnSW5mbyArIHN0ZDo6c3RyaW5nKCJcbi8vICIpICsgR2V0U2hhZGVyVHlwZVN0
cmluZyhtRGF0YS5nZXRTaGFkZXJUeXBlKCkpICsKKyAgICAgICAgICAgIiBTSEFERVIgRU5EXG4i
OwogfQogCi0KLXZvaWQgU2hhZGVyRDNEOjpwYXJzZVZhcnlpbmdzKFNoSGFuZGxlIGNvbXBpbGVy
KQotewotICAgIGlmICghbVRyYW5zbGF0ZWRTb3VyY2UuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAqdmFyeWluZ3MgPSBTaEdldFZhcnlpbmdz
KGNvbXBpbGVyKTsKLSAgICAgICAgQVNTRVJUKHZhcnlpbmdzKTsKLQotICAgICAgICBmb3IgKHNp
emVfdCB2YXJ5aW5nSW5kZXggPSAwOyB2YXJ5aW5nSW5kZXggPCB2YXJ5aW5ncy0+c2l6ZSgpOyB2
YXJ5aW5nSW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgbVZhcnlpbmdzLnB1c2hfYmFj
ayhnbDo6UGFja2VkVmFyeWluZygoKnZhcnlpbmdzKVt2YXJ5aW5nSW5kZXhdKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBtVXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0cyAgID0gbVRyYW5zbGF0ZWRT
b3VyY2UuZmluZCgiR0xfVVNFU19NUlQiKSAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gc3Rk
OjpzdHJpbmc6Om5wb3M7Ci0gICAgICAgIG1Vc2VzRnJhZ0NvbG9yICAgICAgICAgICAgICAgPSBt
VHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX0ZSQUdfQ09MT1IiKSAgICAgICAgICAgICAg
ICAgICAhPSBzdGQ6OnN0cmluZzo6bnBvczsKLSAgICAgICAgbVVzZXNGcmFnRGF0YSAgICAgICAg
ICAgICAgICA9IG1UcmFuc2xhdGVkU291cmNlLmZpbmQoIkdMX1VTRVNfRlJBR19EQVRBIikgICAg
ICAgICAgICAgICAgICAgICE9IHN0ZDo6c3RyaW5nOjpucG9zOwotICAgICAgICBtVXNlc0ZyYWdD
b29yZCAgICAgICAgICAgICAgID0gbVRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19GUkFH
X0NPT1JEIikgICAgICAgICAgICAgICAgICAgIT0gc3RkOjpzdHJpbmc6Om5wb3M7Ci0gICAgICAg
IG1Vc2VzRnJvbnRGYWNpbmcgICAgICAgICAgICAgPSBtVHJhbnNsYXRlZFNvdXJjZS5maW5kKCJH
TF9VU0VTX0ZST05UX0ZBQ0lORyIpICAgICAgICAgICAgICAgICAhPSBzdGQ6OnN0cmluZzo6bnBv
czsKLSAgICAgICAgbVVzZXNQb2ludFNpemUgICAgICAgICAgICAgICA9IG1UcmFuc2xhdGVkU291
cmNlLmZpbmQoIkdMX1VTRVNfUE9JTlRfU0laRSIpICAgICAgICAgICAgICAgICAgICE9IHN0ZDo6
c3RyaW5nOjpucG9zOwotICAgICAgICBtVXNlc1BvaW50Q29vcmQgICAgICAgICAgICAgID0gbVRy
YW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19QT0lOVF9DT09SRCIpICAgICAgICAgICAgICAg
ICAgIT0gc3RkOjpzdHJpbmc6Om5wb3M7Ci0gICAgICAgIG1Vc2VzRGVwdGhSYW5nZSAgICAgICAg
ICAgICAgPSBtVHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX0RFUFRIX1JBTkdFIikgICAg
ICAgICAgICAgICAgICAhPSBzdGQ6OnN0cmluZzo6bnBvczsKLSAgICAgICAgbVVzZXNGcmFnRGVw
dGggICAgICAgICAgICAgICA9IG1UcmFuc2xhdGVkU291cmNlLmZpbmQoIkdMX1VTRVNfRlJBR19E
RVBUSCIpICAgICAgICAgICAgICAgICAgICE9IHN0ZDo6c3RyaW5nOjpucG9zOwotICAgICAgICBt
VXNlc0Rpc2NhcmRSZXdyaXRpbmcgICAgICAgID0gbVRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiQU5H
TEVfVVNFU19ESVNDQVJEX1JFV1JJVElORyIpICAgICAgICAgIT0gc3RkOjpzdHJpbmc6Om5wb3M7
Ci0gICAgICAgIG1Vc2VzTmVzdGVkQnJlYWsgICAgICAgICAgICAgPSBtVHJhbnNsYXRlZFNvdXJj
ZS5maW5kKCJBTkdMRV9VU0VTX05FU1RFRF9CUkVBSyIpICAgICAgICAgICAgICAhPSBzdGQ6OnN0
cmluZzo6bnBvczsKLSAgICAgICAgbVVzZXNEZWZlcnJlZEluaXQgICAgICAgICAgICA9IG1UcmFu
c2xhdGVkU291cmNlLmZpbmQoIkFOR0xFX1VTRVNfREVGRVJSRURfSU5JVCIpICAgICAgICAgICAg
ICE9IHN0ZDo6c3RyaW5nOjpucG9zOwotICAgICAgICBtUmVxdWlyZXNJRUVFU3RyaWN0Q29tcGls
aW5nID0gbVRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiQU5HTEVfUkVRVUlSRVNfSUVFRV9TVFJJQ1Rf
Q09NUElMSU5HIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7Ci0gICAgfQotfQotCi12b2lkIFNoYWRl
ckQzRDo6cmVzZXRWYXJ5aW5nc1JlZ2lzdGVyQXNzaWdubWVudCgpCi17Ci0gICAgZm9yIChzaXpl
X3QgdmFyeWluZ0luZGV4ID0gMDsgdmFyeWluZ0luZGV4IDwgbVZhcnlpbmdzLnNpemUoKTsgdmFy
eWluZ0luZGV4KyspCi0gICAgewotICAgICAgICBtVmFyeWluZ3NbdmFyeWluZ0luZGV4XS5yZXNl
dFJlZ2lzdGVyQXNzaWdubWVudCgpOwotICAgIH0KLX0KLQogLy8gaW5pdGlhbGl6ZS9jbGVhbiB1
cCBwcmV2aW91cyBzdGF0ZQogdm9pZCBTaGFkZXJEM0Q6OnVuY29tcGlsZSgpCiB7CiAgICAgLy8g
c2V0IGJ5IGNvbXBpbGVUb0hMU0wKICAgICBtQ29tcGlsZXJPdXRwdXRUeXBlID0gU0hfRVNTTF9P
VVRQVVQ7Ci0gICAgbVRyYW5zbGF0ZWRTb3VyY2UuY2xlYXIoKTsKLSAgICBtSW5mb0xvZy5jbGVh
cigpOwogCiAgICAgbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMgPSBmYWxzZTsKICAgICBtVXNl
c0ZyYWdDb2xvciA9IGZhbHNlOwpAQCAtMTM1LDEyNSArNzAsMTMgQEAKICAgICBtVXNlc1BvaW50
Q29vcmQgPSBmYWxzZTsKICAgICBtVXNlc0RlcHRoUmFuZ2UgPSBmYWxzZTsKICAgICBtVXNlc0Zy
YWdEZXB0aCA9IGZhbHNlOwotICAgIG1TaGFkZXJWZXJzaW9uID0gMTAwOwogICAgIG1Vc2VzRGlz
Y2FyZFJld3JpdGluZyA9IGZhbHNlOwogICAgIG1Vc2VzTmVzdGVkQnJlYWsgPSBmYWxzZTsKLSAg
ICBtVXNlc0RlZmVycmVkSW5pdCA9IGZhbHNlOwogICAgIG1SZXF1aXJlc0lFRUVTdHJpY3RDb21w
aWxpbmcgPSBmYWxzZTsKIAotICAgIG1WYXJ5aW5ncy5jbGVhcigpOwotICAgIG1Vbmlmb3Jtcy5j
bGVhcigpOwotICAgIG1JbnRlcmZhY2VCbG9ja3MuY2xlYXIoKTsKLSAgICBtQWN0aXZlQXR0cmli
dXRlcy5jbGVhcigpOwotICAgIG1BY3RpdmVPdXRwdXRWYXJpYWJsZXMuY2xlYXIoKTsKICAgICBt
RGVidWdJbmZvLmNsZWFyKCk7CiB9CiAKLXZvaWQgU2hhZGVyRDNEOjpjb21waWxlVG9ITFNMKFNo
SGFuZGxlIGNvbXBpbGVyLCBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlKQotewotICAgIGludCBj
b21waWxlT3B0aW9ucyA9IChTSF9PQkpFQ1RfQ09ERSB8IFNIX1ZBUklBQkxFUyk7Ci0gICAgc3Rk
OjpzdHJpbmcgc291cmNlUGF0aDsKLQotI2lmICFkZWZpbmVkIChBTkdMRV9FTkFCTEVfV0lORE9X
U19TVE9SRSkKLSAgICBpZiAoZ2w6OkRlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKSkKLSAgICB7Ci0g
ICAgICAgIHNvdXJjZVBhdGggPSBnZXRUZW1wUGF0aCgpOwotICAgICAgICB3cml0ZUZpbGUoc291
cmNlUGF0aC5jX3N0cigpLCBzb3VyY2UuY19zdHIoKSwgc291cmNlLmxlbmd0aCgpKTsKLSAgICAg
ICAgY29tcGlsZU9wdGlvbnMgfD0gU0hfTElORV9ESVJFQ1RJVkVTOwotICAgIH0KLSNlbmRpZgot
Ci0gICAgaW50IHJlc3VsdDsKLSAgICBpZiAoc291cmNlUGF0aC5lbXB0eSgpKQotICAgIHsKLSAg
ICAgICAgY29uc3QgY2hhciogc291cmNlU3RyaW5nc1tdID0KLSAgICAgICAgewotICAgICAgICAg
ICAgc291cmNlLmNfc3RyKCksCi0gICAgICAgIH07Ci0KLSAgICAgICAgcmVzdWx0ID0gU2hDb21w
aWxlKGNvbXBpbGVyLCBzb3VyY2VTdHJpbmdzLCBBcnJheVNpemUoc291cmNlU3RyaW5ncyksIGNv
bXBpbGVPcHRpb25zKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgY29uc3QgY2hh
ciogc291cmNlU3RyaW5nc1tdID0KLSAgICAgICAgewotICAgICAgICAgICAgc291cmNlUGF0aC5j
X3N0cigpLAotICAgICAgICAgICAgc291cmNlLmNfc3RyKCksCi0gICAgICAgIH07Ci0KLSAgICAg
ICAgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVyLCBzb3VyY2VTdHJpbmdzLCBBcnJheVNpemUo
c291cmNlU3RyaW5ncyksIGNvbXBpbGVPcHRpb25zIHwgU0hfU09VUkNFX1BBVEgpOwotICAgIH0K
LQotICAgIG1TaGFkZXJWZXJzaW9uID0gU2hHZXRTaGFkZXJWZXJzaW9uKGNvbXBpbGVyKTsKLQot
ICAgIGlmIChyZXN1bHQpCi0gICAgewotICAgICAgICBtVHJhbnNsYXRlZFNvdXJjZSA9IFNoR2V0
T2JqZWN0Q29kZShjb21waWxlcik7Ci0KLSNpZmRlZiBfREVCVUcKLSAgICAgICAgLy8gUHJlZml4
IGhsc2wgc2hhZGVyIHdpdGggY29tbWVudGVkIG91dCBnbHNsIHNoYWRlcgotICAgICAgICAvLyBV
c2VmdWwgaW4gZGlhZ25vc3RpY3MgdG9vbHMgbGlrZSBwaXggd2hpY2ggY2FwdHVyZSB0aGUgaGxz
bCBzaGFkZXJzCi0gICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBobHNsU3RyZWFtOwotICAgICAg
ICBobHNsU3RyZWFtIDw8ICIvLyBHTFNMXG4iOwotICAgICAgICBobHNsU3RyZWFtIDw8ICIvL1xu
IjsKLQotICAgICAgICBzaXplX3QgY3VyUG9zID0gMDsKLSAgICAgICAgd2hpbGUgKGN1clBvcyAh
PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG5leHRM
aW5lID0gc291cmNlLmZpbmQoIlxuIiwgY3VyUG9zKTsKLSAgICAgICAgICAgIHNpemVfdCBsZW4g
PSAobmV4dExpbmUgPT0gc3RkOjpzdHJpbmc6Om5wb3MpID8gc3RkOjpzdHJpbmc6Om5wb3MgOiAo
bmV4dExpbmUgLSBjdXJQb3MgKyAxKTsKLQotICAgICAgICAgICAgaGxzbFN0cmVhbSA8PCAiLy8g
IiA8PCBzb3VyY2Uuc3Vic3RyKGN1clBvcywgbGVuKTsKLQotICAgICAgICAgICAgY3VyUG9zID0g
KG5leHRMaW5lID09IHN0ZDo6c3RyaW5nOjpucG9zKSA/IHN0ZDo6c3RyaW5nOjpucG9zIDogKG5l
eHRMaW5lICsgMSk7Ci0gICAgICAgIH0KLSAgICAgICAgaGxzbFN0cmVhbSA8PCAiXG5cbiI7Ci0g
ICAgICAgIGhsc2xTdHJlYW0gPDwgbVRyYW5zbGF0ZWRTb3VyY2U7Ci0gICAgICAgIG1UcmFuc2xh
dGVkU291cmNlID0gaGxzbFN0cmVhbS5zdHIoKTsKLSNlbmRpZgotCi0gICAgICAgIG1Vbmlmb3Jt
cyA9ICpHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRVbmlmb3Jtcyhjb21waWxlcikpOwotCi0gICAg
ICAgIGZvciAoc2l6ZV90IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG1Vbmlmb3Jt
cy5zaXplKCk7IHVuaWZvcm1JbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBz
aDo6VW5pZm9ybSAmdW5pZm9ybSA9IG1Vbmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwotCi0gICAgICAg
ICAgICBpZiAodW5pZm9ybS5zdGF0aWNVc2UgJiYgIXVuaWZvcm0uaXNCdWlsdEluKCkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluZGV4ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PigtMSk7Ci0gICAgICAgICAgICAgICAgYm9vbCBnZXRVbmlmb3JtUmVn
aXN0ZXJSZXN1bHQgPSBTaEdldFVuaWZvcm1SZWdpc3Rlcihjb21waWxlciwgdW5pZm9ybS5uYW1l
LCAmaW5kZXgpOwotICAgICAgICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoZ2V0
VW5pZm9ybVJlZ2lzdGVyUmVzdWx0KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0VW5pZm9y
bVJlZ2lzdGVyUmVzdWx0KTsKLQotICAgICAgICAgICAgICAgIG1Vbmlmb3JtUmVnaXN0ZXJNYXBb
dW5pZm9ybS5uYW1lXSA9IGluZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgbUludGVyZmFjZUJsb2NrcyA9ICpHZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRJbnRlcmZhY2VC
bG9ja3MoY29tcGlsZXIpKTsKLQotICAgICAgICBmb3IgKHNpemVfdCBibG9ja0luZGV4ID0gMDsg
YmxvY2tJbmRleCA8IG1JbnRlcmZhY2VCbG9ja3Muc2l6ZSgpOyBibG9ja0luZGV4KyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxv
Y2sgPSBtSW50ZXJmYWNlQmxvY2tzW2Jsb2NrSW5kZXhdOwotCi0gICAgICAgICAgICBpZiAoaW50
ZXJmYWNlQmxvY2suc3RhdGljVXNlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oLTEpOwotICAgICAg
ICAgICAgICAgIGJvb2wgYmxvY2tSZWdpc3RlclJlc3VsdCA9IFNoR2V0SW50ZXJmYWNlQmxvY2tS
ZWdpc3Rlcihjb21waWxlciwgaW50ZXJmYWNlQmxvY2submFtZSwgJmluZGV4KTsKLSAgICAgICAg
ICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGJsb2NrUmVnaXN0ZXJSZXN1bHQpOwot
ICAgICAgICAgICAgICAgIEFTU0VSVChibG9ja1JlZ2lzdGVyUmVzdWx0KTsKLQotICAgICAgICAg
ICAgICAgIG1JbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwW2ludGVyZmFjZUJsb2NrLm5hbWVdID0g
aW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgbUluZm9Mb2cgPSBTaEdldEluZm9Mb2coY29tcGlsZXIpOwotCi0gICAgICAgIFRS
QUNFKCJcbiVzIiwgbUluZm9Mb2cuY19zdHIoKSk7Ci0gICAgfQotfQotCiB2b2lkIFNoYWRlckQz
RDo6Z2VuZXJhdGVXb3JrYXJvdW5kcyhEM0RDb21waWxlcldvcmthcm91bmRzICp3b3JrYXJvdW5k
cykgY29uc3QKIHsKICAgICBpZiAobVVzZXNEaXNjYXJkUmV3cml0aW5nKQpAQCAtMjc3LDI4ICsx
MDAsNiBAQAogICAgIH0KIH0KIAotLy8gdHJ1ZSBpZiB2YXJ5aW5nIHggaGFzIGEgaGlnaGVyIHBy
aW9yaXR5IGluIHBhY2tpbmcgdGhhbiB5Ci1ib29sIFNoYWRlckQzRDo6Y29tcGFyZVZhcnlpbmco
Y29uc3QgZ2w6OlBhY2tlZFZhcnlpbmcgJngsIGNvbnN0IGdsOjpQYWNrZWRWYXJ5aW5nICZ5KQot
ewotICAgIGlmICh4LnR5cGUgPT0geS50eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHguYXJy
YXlTaXplID4geS5hcnJheVNpemU7Ci0gICAgfQotCi0gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBo
YW5kbGluZyBzdHJ1Y3RzOiB3ZSBzb3J0IHRoZXNlIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKLSAg
ICBpZiAoeC50eXBlID09IEdMX1NUUlVDVF9BTkdMRVgpCi0gICAgewotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgaWYgKHkudHlwZSA9PSBHTF9TVFJVQ1RfQU5HTEVYKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdsOjpWYXJpYWJs
ZVNvcnRPcmRlcih4LnR5cGUpIDwgZ2w6OlZhcmlhYmxlU29ydE9yZGVyKHkudHlwZSk7Ci19Ci0K
IHVuc2lnbmVkIGludCBTaGFkZXJEM0Q6OmdldFVuaWZvcm1SZWdpc3Rlcihjb25zdCBzdGQ6OnN0
cmluZyAmdW5pZm9ybU5hbWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1Vbmlmb3JtUmVnaXN0ZXJN
YXAuY291bnQodW5pZm9ybU5hbWUpID4gMCk7CkBAIC0zMTEsNjYgKzExMiw5MSBAQAogICAgIHJl
dHVybiBtSW50ZXJmYWNlQmxvY2tSZWdpc3Rlck1hcC5maW5kKGJsb2NrTmFtZSktPnNlY29uZDsK
IH0KIAotR0xlbnVtIFNoYWRlckQzRDo6Z2V0U2hhZGVyVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1TaGFkZXJUeXBlOwotfQotCiBTaFNoYWRlck91dHB1dCBTaGFkZXJEM0Q6OmdldENvbXBp
bGVyT3V0cHV0VHlwZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1Db21waWxlck91dHB1dFR5cGU7
CiB9CiAKLWJvb2wgU2hhZGVyRDNEOjpjb21waWxlKGdsOjpDb21waWxlciAqY29tcGlsZXIsIGNv
bnN0IHN0ZDo6c3RyaW5nICZzb3VyY2UpCitpbnQgU2hhZGVyRDNEOjpwcmVwYXJlU291cmNlQW5k
UmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc2hhZGVyU291cmNlU3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNv
dXJjZVBhdGgpCiB7CiAgICAgdW5jb21waWxlKCk7CiAKLSAgICBDb21waWxlckQzRCAqY29tcGls
ZXJEM0QgPSBHZXRJbXBsQXM8Q29tcGlsZXJEM0Q+KGNvbXBpbGVyKTsKLSAgICBTaEhhbmRsZSBj
b21waWxlckhhbmRsZSA9IGNvbXBpbGVyRDNELT5nZXRDb21waWxlckhhbmRsZShtU2hhZGVyVHlw
ZSk7CisgICAgaW50IGFkZGl0aW9uYWxPcHRpb25zID0gMDsKIAotICAgIG1Db21waWxlck91dHB1
dFR5cGUgPSBTaEdldFNoYWRlck91dHB1dFR5cGUoY29tcGlsZXJIYW5kbGUpOworICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzb3VyY2UgPSBtRGF0YS5nZXRTb3VyY2UoKTsKIAotICAgIGNvbXBpbGVU
b0hMU0woY29tcGlsZXJIYW5kbGUsIHNvdXJjZSk7Ci0KLSAgICBpZiAobVNoYWRlclR5cGUgPT0g
R0xfVkVSVEVYX1NIQURFUikKKyNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9S
RSkKKyAgICBpZiAoZ2w6OkRlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKSkKICAgICB7Ci0gICAgICAg
IHBhcnNlQXR0cmlidXRlcyhjb21waWxlckhhbmRsZSk7CisgICAgICAgICpzb3VyY2VQYXRoID0g
Z2V0VGVtcFBhdGgoKTsKKyAgICAgICAgd3JpdGVGaWxlKHNvdXJjZVBhdGgtPmNfc3RyKCksIHNv
dXJjZS5jX3N0cigpLCBzb3VyY2UubGVuZ3RoKCkpOworICAgICAgICBhZGRpdGlvbmFsT3B0aW9u
cyB8PSBTSF9MSU5FX0RJUkVDVElWRVMgfCBTSF9TT1VSQ0VfUEFUSDsKICAgICB9CisjZW5kaWYK
IAotICAgIHBhcnNlVmFyeWluZ3MoY29tcGlsZXJIYW5kbGUpOworICAgICpzaGFkZXJTb3VyY2VT
dHJlYW0gPDwgc291cmNlOworICAgIHJldHVybiBhZGRpdGlvbmFsT3B0aW9uczsKK30KIAotICAg
IGlmIChtU2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCitib29sIFNoYWRlckQzRDo6
aGFzVW5pZm9ybShjb25zdCBEM0RVbmlmb3JtICpkM2RVbmlmb3JtKSBjb25zdAoreworICAgIHJl
dHVybiBtVW5pZm9ybVJlZ2lzdGVyTWFwLmZpbmQoZDNkVW5pZm9ybS0+bmFtZSkgIT0gbVVuaWZv
cm1SZWdpc3Rlck1hcC5lbmQoKTsKK30KKworY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVu
c2lnbmVkIGludD4gJkdldFVuaWZvcm1SZWdpc3Rlck1hcCgKKyAgICBjb25zdCBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiAqdW5pZm9ybVJlZ2lzdGVyTWFwKQoreworICAgIEFT
U0VSVCh1bmlmb3JtUmVnaXN0ZXJNYXApOworICAgIHJldHVybiAqdW5pZm9ybVJlZ2lzdGVyTWFw
OworfQorCitib29sIFNoYWRlckQzRDo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVy
ICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cpCit7CisgICAgLy8gVE9ETyhqbWFkaWxs
KTogV2Ugc2hvdWxkbid0IG5lZWQgdG8gY2FjaGUgdGhpcy4KKyAgICBtQ29tcGlsZXJPdXRwdXRU
eXBlID0gY29tcGlsZXItPmdldFNoYWRlck91dHB1dFR5cGUoKTsKKworICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZ0cmFuc2xhdGVkU291cmNlID0gbURhdGEuZ2V0VHJhbnNsYXRlZFNvdXJjZSgpOwor
CisgICAgbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMgPSB0cmFuc2xhdGVkU291cmNlLmZpbmQo
IkdMX1VTRVNfTVJUIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgbVVzZXNGcmFnQ29sb3Ig
ICAgICAgICAgICAgPSB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkdMX1VTRVNfRlJBR19DT0xPUiIp
ICE9IHN0ZDo6c3RyaW5nOjpucG9zOworICAgIG1Vc2VzRnJhZ0RhdGEgICAgICAgICAgICAgID0g
dHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX0ZSQUdfREFUQSIpICE9IHN0ZDo6c3RyaW5n
OjpucG9zOworICAgIG1Vc2VzRnJhZ0Nvb3JkICAgICAgICAgICAgID0gdHJhbnNsYXRlZFNvdXJj
ZS5maW5kKCJHTF9VU0VTX0ZSQUdfQ09PUkQiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICBt
VXNlc0Zyb250RmFjaW5nICAgICAgICAgICA9IHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNF
U19GUk9OVF9GQUNJTkciKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICBtVXNlc1BvaW50U2l6
ZSAgICAgICAgICAgICA9IHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19QT0lOVF9TSVpF
IikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgbVVzZXNQb2ludENvb3JkICAgICAgICAgICAg
PSB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkdMX1VTRVNfUE9JTlRfQ09PUkQiKSAhPSBzdGQ6OnN0
cmluZzo6bnBvczsKKyAgICBtVXNlc0RlcHRoUmFuZ2UgICAgICAgICAgICA9IHRyYW5zbGF0ZWRT
b3VyY2UuZmluZCgiR0xfVVNFU19ERVBUSF9SQU5HRSIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwor
ICAgIG1Vc2VzRnJhZ0RlcHRoID0gdHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX0ZSQUdf
REVQVEgiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICBtVXNlc0Rpc2NhcmRSZXdyaXRpbmcg
PQorICAgICAgICB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkFOR0xFX1VTRVNfRElTQ0FSRF9SRVdS
SVRJTkciKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICBtVXNlc05lc3RlZEJyZWFrICA9IHRy
YW5zbGF0ZWRTb3VyY2UuZmluZCgiQU5HTEVfVVNFU19ORVNURURfQlJFQUsiKSAhPSBzdGQ6OnN0
cmluZzo6bnBvczsKKyAgICBtUmVxdWlyZXNJRUVFU3RyaWN0Q29tcGlsaW5nID0KKyAgICAgICAg
dHJhbnNsYXRlZFNvdXJjZS5maW5kKCJBTkdMRV9SRVFVSVJFU19JRUVFX1NUUklDVF9DT01QSUxJ
TkciKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKworICAgIFNoSGFuZGxlIGNvbXBpbGVySGFuZGxl
ID0gY29tcGlsZXItPmdldENvbXBpbGVySGFuZGxlKG1EYXRhLmdldFNoYWRlclR5cGUoKSk7CisK
KyAgICBtVW5pZm9ybVJlZ2lzdGVyTWFwID0gR2V0VW5pZm9ybVJlZ2lzdGVyTWFwKFNoR2V0VW5p
Zm9ybVJlZ2lzdGVyTWFwKGNvbXBpbGVySGFuZGxlKSk7CisKKyAgICBmb3IgKGNvbnN0IHNoOjpJ
bnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgOiBtRGF0YS5nZXRJbnRlcmZhY2VCbG9ja3Mo
KSkKICAgICB7Ci0gICAgICAgIHN0ZDo6c29ydChtVmFyeWluZ3MuYmVnaW4oKSwgbVZhcnlpbmdz
LmVuZCgpLCBjb21wYXJlVmFyeWluZyk7CisgICAgICAgIGlmIChpbnRlcmZhY2VCbG9jay5zdGF0
aWNVc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBpbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oLTEpOworICAgICAgICAgICAgYm9vbCBibG9ja1JlZ2lzdGVy
UmVzdWx0ID0KKyAgICAgICAgICAgICAgICBTaEdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29t
cGlsZXJIYW5kbGUsIGludGVyZmFjZUJsb2NrLm5hbWUsICZpbmRleCk7CisgICAgICAgICAgICBV
TlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGJsb2NrUmVnaXN0ZXJSZXN1bHQpOworICAgICAgICAg
ICAgQVNTRVJUKGJsb2NrUmVnaXN0ZXJSZXN1bHQpOwogCi0gICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZobHNsID0gZ2V0VHJhbnNsYXRlZFNvdXJjZSgpOwotICAgICAgICBpZiAoIWhsc2wuZW1w
dHkoKSkKLSAgICAgICAgewotICAgICAgICAgICAgbUFjdGl2ZU91dHB1dFZhcmlhYmxlcyA9ICpH
ZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRPdXRwdXRWYXJpYWJsZXMoY29tcGlsZXJIYW5kbGUpKTsK
LSAgICAgICAgICAgIEZpbHRlckluYWN0aXZlVmFyaWFibGVzKCZtQWN0aXZlT3V0cHV0VmFyaWFi
bGVzKTsKKyAgICAgICAgICAgIG1JbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwW2ludGVyZmFjZUJs
b2NrLm5hbWVdID0gaW5kZXg7CiAgICAgICAgIH0KICAgICB9CiAKLSNpZiBBTkdMRV9TSEFERVJf
REVCVUdfSU5GTyA9PSBBTkdMRV9FTkFCTEVECi0gICAgbURlYnVnSW5mbyArPSBzdGQ6OnN0cmlu
ZygiLy8gIikgKyBHZXRTaGFkZXJUeXBlU3RyaW5nKG1TaGFkZXJUeXBlKSArICIgU0hBREVSIEJF
R0lOXG4iOwotICAgIG1EZWJ1Z0luZm8gKz0gIlxuLy8gR0xTTCBCRUdJTlxuXG4iICsgc291cmNl
ICsgIlxuXG4vLyBHTFNMIEVORFxuXG5cbiI7Ci0gICAgbURlYnVnSW5mbyArPSAiLy8gSU5JVElB
TCBITFNMIEJFR0lOXG5cbiIgKyBnZXRUcmFuc2xhdGVkU291cmNlKCkgKyAiXG4vLyBJTklUSUFM
IEhMU0wgRU5EXG5cblxuIjsKKyAgICBtRGVidWdJbmZvICs9CisgICAgICAgIHN0ZDo6c3RyaW5n
KCIvLyAiKSArIEdldFNoYWRlclR5cGVTdHJpbmcobURhdGEuZ2V0U2hhZGVyVHlwZSgpKSArICIg
U0hBREVSIEJFR0lOXG4iOworICAgIG1EZWJ1Z0luZm8gKz0gIlxuLy8gR0xTTCBCRUdJTlxuXG4i
ICsgbURhdGEuZ2V0U291cmNlKCkgKyAiXG5cbi8vIEdMU0wgRU5EXG5cblxuIjsKKyAgICBtRGVi
dWdJbmZvICs9ICIvLyBJTklUSUFMIEhMU0wgQkVHSU5cblxuIiArIHRyYW5zbGF0ZWRTb3VyY2Ug
KyAiXG4vLyBJTklUSUFMIEhMU0wgRU5EXG5cblxuIjsKICAgICAvLyBTdWNjZXNzaXZlIHN0ZXBz
IHdpbGwgYXBwZW5kIG1vcmUgaW5mbwotI2Vsc2UKLSAgICBtRGVidWdJbmZvICs9IGdldFRyYW5z
bGF0ZWRTb3VyY2UoKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuICFnZXRUcmFuc2xhdGVkU291cmNl
KCkuZW1wdHkoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTaGFkZXJEM0Q6OnBhcnNl
QXR0cmlidXRlcyhTaEhhbmRsZSBjb21waWxlcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
aGxzbCA9IGdldFRyYW5zbGF0ZWRTb3VyY2UoKTsKLSAgICBpZiAoIWhsc2wuZW1wdHkoKSkKLSAg
ICB7Ci0gICAgICAgIG1BY3RpdmVBdHRyaWJ1dGVzID0gKkdldFNoYWRlclZhcmlhYmxlcyhTaEdl
dEF0dHJpYnV0ZXMoY29tcGlsZXIpKTsKLSAgICAgICAgRmlsdGVySW5hY3RpdmVWYXJpYWJsZXMo
Jm1BY3RpdmVBdHRyaWJ1dGVzKTsKLSAgICB9Ci19Ci0KLX0KK30gIC8vIG5hbWVzcGFjZSByeApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9T
aGFkZXJEM0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw2IEBACiAjZGVmaW5lIExJQkFOR0xFX1JFTkRF
UkVSX0QzRF9TSEFERVJEM0RfSF8KIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1NoYWRl
ckltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Xb3JrYXJvdW5kcy5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL1NoYWRlci5oIgogCiAjaW5jbHVkZSA8bWFwPgogCkBAIC0xOSw0OCAr
MTcsNDggQEAKIHsKIGNsYXNzIER5bmFtaWNITFNMOwogY2xhc3MgUmVuZGVyZXJEM0Q7CitzdHJ1
Y3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kczsKK3N0cnVjdCBEM0RVbmlmb3JtOwogCiBjbGFzcyBT
aGFkZXJEM0QgOiBwdWJsaWMgU2hhZGVySW1wbAogewotICAgIGZyaWVuZCBjbGFzcyBEeW5hbWlj
SExTTDsKLQogICBwdWJsaWM6Ci0gICAgU2hhZGVyRDNEKEdMZW51bSB0eXBlKTsKKyAgICBTaGFk
ZXJEM0QoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAmZGF0YSk7CiAgICAgdmlydHVhbCB+U2hhZGVy
RDNEKCk7CiAKICAgICAvLyBTaGFkZXJJbXBsIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCBz
dGQ6OnN0cmluZyBnZXREZWJ1Z0luZm8oKSBjb25zdDsKKyAgICBpbnQgcHJlcGFyZVNvdXJjZUFu
ZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpIG92
ZXJyaWRlOworICAgIGJvb2wgcG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21w
aWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cpIG92ZXJyaWRlOworICAgIHN0ZDo6c3RyaW5nIGdl
dERlYnVnSW5mbygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRDNELXNwZWNpZmljIG1ldGhv
ZHMKLSAgICB2aXJ0dWFsIHZvaWQgdW5jb21waWxlKCk7Ci0gICAgdm9pZCByZXNldFZhcnlpbmdz
UmVnaXN0ZXJBc3NpZ25tZW50KCk7CisgICAgdm9pZCB1bmNvbXBpbGUoKTsKKworICAgIGJvb2wg
aGFzVW5pZm9ybShjb25zdCBEM0RVbmlmb3JtICpkM2RVbmlmb3JtKSBjb25zdDsKKworICAgIC8v
IFF1ZXJ5IHJlZ3VsYXIgdW5pZm9ybXMgd2l0aCB0aGVpciBuYW1lLiBRdWVyeSBzYW1wbGVyIGZp
ZWxkcyBvZiBzdHJ1Y3RzIHdpdGggZmllbGQgc2VsZWN0aW9uCisgICAgLy8gdXNpbmcgZG90ICgu
KSBvcGVyYXRvci4KICAgICB1bnNpZ25lZCBpbnQgZ2V0VW5pZm9ybVJlZ2lzdGVyKGNvbnN0IHN0
ZDo6c3RyaW5nICZ1bmlmb3JtTmFtZSkgY29uc3Q7CisKICAgICB1bnNpZ25lZCBpbnQgZ2V0SW50
ZXJmYWNlQmxvY2tSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lKSBjb25zdDsK
LSAgICB2b2lkIGFwcGVuZERlYnVnSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmaW5mbykgeyBtRGVi
dWdJbmZvICs9IGluZm87IH0KKyAgICB2b2lkIGFwcGVuZERlYnVnSW5mbyhjb25zdCBzdGQ6OnN0
cmluZyAmaW5mbykgY29uc3QgeyBtRGVidWdJbmZvICs9IGluZm87IH0KIAogICAgIHZvaWQgZ2Vu
ZXJhdGVXb3JrYXJvdW5kcyhEM0RDb21waWxlcldvcmthcm91bmRzICp3b3JrYXJvdW5kcykgY29u
c3Q7Ci0gICAgaW50IGdldFNoYWRlclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU2hhZGVyVmVy
c2lvbjsgfQorCisgICAgYm9vbCB1c2VzTXVsdGlwbGVSZW5kZXJUYXJnZXRzKCkgY29uc3QgeyBy
ZXR1cm4gbVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHM7IH0KKyAgICBib29sIHVzZXNGcmFnQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtVXNlc0ZyYWdDb2xvcjsgfQorICAgIGJvb2wgdXNlc0ZyYWdE
YXRhKCkgY29uc3QgeyByZXR1cm4gbVVzZXNGcmFnRGF0YTsgfQorICAgIGJvb2wgdXNlc0ZyYWdD
b29yZCgpIGNvbnN0IHsgcmV0dXJuIG1Vc2VzRnJhZ0Nvb3JkOyB9CisgICAgYm9vbCB1c2VzRnJv
bnRGYWNpbmcoKSBjb25zdCB7IHJldHVybiBtVXNlc0Zyb250RmFjaW5nOyB9CisgICAgYm9vbCB1
c2VzUG9pbnRTaXplKCkgY29uc3QgeyByZXR1cm4gbVVzZXNQb2ludFNpemU7IH0KKyAgICBib29s
IHVzZXNQb2ludENvb3JkKCkgY29uc3QgeyByZXR1cm4gbVVzZXNQb2ludENvb3JkOyB9CiAgICAg
Ym9vbCB1c2VzRGVwdGhSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1Vc2VzRGVwdGhSYW5nZTsgfQot
ICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1Vc2VzUG9pbnRTaXplOyB9
Ci0gICAgYm9vbCB1c2VzRGVmZXJyZWRJbml0KCkgY29uc3QgeyByZXR1cm4gbVVzZXNEZWZlcnJl
ZEluaXQ7IH0KKyAgICBib29sIHVzZXNGcmFnRGVwdGgoKSBjb25zdCB7IHJldHVybiBtVXNlc0Zy
YWdEZXB0aDsgfQogCi0gICAgR0xlbnVtIGdldFNoYWRlclR5cGUoKSBjb25zdDsKICAgICBTaFNo
YWRlck91dHB1dCBnZXRDb21waWxlck91dHB1dFR5cGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBjb21waWxlKGdsOjpDb21waWxlciAqY29tcGlsZXIsIGNvbnN0IHN0ZDo6c3RyaW5nICZz
b3VyY2UpOwotCiAgIHByaXZhdGU6Ci0gICAgdm9pZCBjb21waWxlVG9ITFNMKFNoSGFuZGxlIGNv
bXBpbGVyLCBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlKTsKLSAgICB2b2lkIHBhcnNlVmFyeWlu
Z3MoU2hIYW5kbGUgY29tcGlsZXIpOwotCi0gICAgdm9pZCBwYXJzZUF0dHJpYnV0ZXMoU2hIYW5k
bGUgY29tcGlsZXIpOwotCi0gICAgc3RhdGljIGJvb2wgY29tcGFyZVZhcnlpbmcoY29uc3QgZ2w6
OlBhY2tlZFZhcnlpbmcgJngsIGNvbnN0IGdsOjpQYWNrZWRWYXJ5aW5nICZ5KTsKLQotICAgIEdM
ZW51bSBtU2hhZGVyVHlwZTsKLQotICAgIGludCBtU2hhZGVyVmVyc2lvbjsKLQogICAgIGJvb2wg
bVVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHM7CiAgICAgYm9vbCBtVXNlc0ZyYWdDb2xvcjsKICAg
ICBib29sIG1Vc2VzRnJhZ0RhdGE7CkBAIC03MiwxNSArNzAsMTMgQEAKICAgICBib29sIG1Vc2Vz
RnJhZ0RlcHRoOwogICAgIGJvb2wgbVVzZXNEaXNjYXJkUmV3cml0aW5nOwogICAgIGJvb2wgbVVz
ZXNOZXN0ZWRCcmVhazsKLSAgICBib29sIG1Vc2VzRGVmZXJyZWRJbml0OwogICAgIGJvb2wgbVJl
cXVpcmVzSUVFRVN0cmljdENvbXBpbGluZzsKIAogICAgIFNoU2hhZGVyT3V0cHV0IG1Db21waWxl
ck91dHB1dFR5cGU7Ci0gICAgc3RkOjpzdHJpbmcgbURlYnVnSW5mbzsKKyAgICBtdXRhYmxlIHN0
ZDo6c3RyaW5nIG1EZWJ1Z0luZm87CiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVk
IGludD4gbVVuaWZvcm1SZWdpc3Rlck1hcDsKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5z
aWduZWQgaW50PiBtSW50ZXJmYWNlQmxvY2tSZWdpc3Rlck1hcDsKIH07Ci0KIH0KIAotI2VuZGlm
IC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9TSEFERVJEM0RfSF8KKyNlbmRpZiAgLy8gTElCQU5H
TEVfUkVOREVSRVJfRDNEX1NIQURFUkQzRF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZh
Y2VEM0QuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvU3VyZmFjZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9E
aXNwbGF5RDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNE
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuaCIKQEAgLTI1LDQ0
ICsyNCw1NCBAQAogU3VyZmFjZUQzRCAqU3VyZmFjZUQzRDo6Y3JlYXRlT2Zmc2NyZWVuKFJlbmRl
cmVyRDNEICpyZW5kZXJlciwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlnLCBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQogewot
ICAgIHJldHVybiBuZXcgU3VyZmFjZUQzRChyZW5kZXJlciwgZGlzcGxheSwgY29uZmlnLCB3aWR0
aCwgaGVpZ2h0LCBFR0xfVFJVRSwgc2hhcmVIYW5kbGUsIE5VTEwpOworICAgIHJldHVybiBuZXcg
U3VyZmFjZUQzRChyZW5kZXJlciwgZGlzcGxheSwgY29uZmlnLCB3aWR0aCwgaGVpZ2h0LCBFR0xf
VFJVRSwgMCwgRUdMX0ZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUhhbmRs
ZSwgTlVMTCk7CiB9CiAKLVN1cmZhY2VEM0QgKlN1cmZhY2VEM0Q6OmNyZWF0ZUZyb21XaW5kb3co
UmVuZGVyZXJEM0QgKnJlbmRlcmVyLCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWcsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgZml4ZWRTaXplLCBFR0xpbnQgd2lk
dGgsIEVHTGludCBoZWlnaHQpCitTdXJmYWNlRDNEICpTdXJmYWNlRDNEOjpjcmVhdGVGcm9tV2lu
ZG93KFJlbmRlcmVyRDNEICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGZpeGVk
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGRp
cmVjdENvbXBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBvcmllbnRhdGlvbikKIHsKLSAgICByZXR1cm4gbmV3IFN1cmZhY2VEM0QocmVuZGVy
ZXIsIGRpc3BsYXksIGNvbmZpZywgd2lkdGgsIGhlaWdodCwgZml4ZWRTaXplLCBzdGF0aWNfY2Fz
dDxFR0xDbGllbnRCdWZmZXI+KDApLCB3aW5kb3cpOworICAgIHJldHVybiBuZXcgU3VyZmFjZUQz
RChyZW5kZXJlciwgZGlzcGxheSwgY29uZmlnLCB3aWR0aCwgaGVpZ2h0LCBmaXhlZFNpemUsIG9y
aWVudGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RDb21wb3NpdGlvbiwg
c3RhdGljX2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPigwKSwgd2luZG93KTsKIH0KIAotU3VyZmFjZUQz
RDo6U3VyZmFjZUQzRChSZW5kZXJlckQzRCAqcmVuZGVyZXIsIGVnbDo6RGlzcGxheSAqZGlzcGxh
eSwgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
LCBFR0xpbnQgZml4ZWRTaXplLAotICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgc2hhcmVIYW5kbGUsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQorU3VyZmFjZUQzRDo6
U3VyZmFjZUQzRChSZW5kZXJlckQzRCAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAg
IGVnbDo6RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICBFR0xpbnQgZml4ZWRTaXplLAorICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3Jp
ZW50YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBkaXJlY3RDb21wb3NpdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAor
ICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykKICAgICA6
IFN1cmZhY2VJbXBsKCksCiAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbURpc3Bs
YXkoZGlzcGxheSksCiAgICAgICBtRml4ZWRTaXplKGZpeGVkU2l6ZSA9PSBFR0xfVFJVRSksCisg
ICAgICBtT3JpZW50YXRpb24ob3JpZW50YXRpb24pLAogICAgICAgbVJlbmRlclRhcmdldEZvcm1h
dChjb25maWctPnJlbmRlclRhcmdldEZvcm1hdCksCiAgICAgICBtRGVwdGhTdGVuY2lsRm9ybWF0
KGNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0KSwKICAgICAgIG1Td2FwQ2hhaW4obnVsbHB0ciks
CiAgICAgICBtU3dhcEludGVydmFsRGlydHkodHJ1ZSksCi0gICAgICBtTmF0aXZlV2luZG93KHdp
bmRvdyksCisgICAgICBtTmF0aXZlV2luZG93KHdpbmRvdywgY29uZmlnLCBkaXJlY3RDb21wb3Np
dGlvbiA9PSBFR0xfVFJVRSksCiAgICAgICBtV2lkdGgod2lkdGgpLAogICAgICAgbUhlaWdodCho
ZWlnaHQpLAotICAgICAgbUNoaWxkV2luZG93KG51bGxwdHIpLAogICAgICAgbVN3YXBJbnRlcnZh
bCgxKSwKLSAgICAgIG1TaGFyZUhhbmRsZShyZWludGVycHJldF9jYXN0PEhBTkRMRSo+KHNoYXJl
SGFuZGxlKSkKKyAgICAgIG1TaGFyZUhhbmRsZShyZWludGVycHJldF9jYXN0PEhBTkRMRSAqPihz
aGFyZUhhbmRsZSkpCiB7CiB9CiAKIFN1cmZhY2VEM0Q6On5TdXJmYWNlRDNEKCkKIHsKICAgICBy
ZWxlYXNlU3dhcENoYWluKCk7Ci0KLSNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19T
VE9SRSkKLSAgICBpZiAobUNoaWxkV2luZG93LmdldE5hdGl2ZVdpbmRvdygpICE9IG51bGxwdHIp
Ci0gICAgewotICAgICAgICBEZXN0cm95V2luZG93KG1DaGlsZFdpbmRvdy5nZXROYXRpdmVXaW5k
b3coKSk7Ci0gICAgfQotI2VuZGlmCiB9CiAKIHZvaWQgU3VyZmFjZUQzRDo6cmVsZWFzZVN3YXBD
aGFpbigpCkBAIC03NCw0NCArODMsNiBAQAogewogICAgIGlmIChtTmF0aXZlV2luZG93LmdldE5h
dGl2ZVdpbmRvdygpKQogICAgIHsKLSNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19T
VE9SRSkKLSAgICAgICAgaWYgKG1SZW5kZXJlci0+c2hvdWxkQ3JlYXRlQ2hpbGRXaW5kb3dGb3JT
dXJmYWNlKG1OYXRpdmVXaW5kb3cuZ2V0TmF0aXZlV2luZG93KCkpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBSRUNUIHJlY3Q7Ci0gICAgICAgICAgICBpZiAoIW1OYXRpdmVXaW5kb3cuZ2V0Q2xp
ZW50UmVjdCgmcmVjdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVn
bDo6RXJyb3IoRUdMX0JBRF9OQVRJVkVfV0lORE9XLCAiRmFpbGVkIHRvIGdldCB0aGUgc2l6ZSBv
ZiB0aGUgbmF0aXZlIHdpbmRvdy4iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgRGlz
cGxheUQzRCAqZGlzcGxheUQzRCA9IEdldEltcGxBczxEaXNwbGF5RDNEPihtRGlzcGxheSk7Ci0g
ICAgICAgICAgICBBVE9NIHdpbmRvd0NsYXNzID0gZGlzcGxheUQzRC0+Z2V0Q2hpbGRXaW5kb3dD
bGFzcygpOwotCi0gICAgICAgICAgICBIV05EIGNoaWxkV2luZG93ID0gQ3JlYXRlV2luZG93RXhB
KFdTX0VYX05PUEFSRU5UTk9USUZZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih3aW5kb3dDbGFzcyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBTkdMRSBJ
bnRlcm1lZGlhdGUgU3VyZmFjZSBXaW5kb3ciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXU19DSElMRFdJTkRPVyB8IFdTX0RJU0FCTEVEIHwgV1NfVklT
SUJMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5yaWdodCAtIHJl
Y3QubGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVjdC5ib3R0b20gLSByZWN0LnRvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbU5hdGl2ZVdpbmRvdy5nZXROYXRpdmVXaW5kb3coKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAg
ICAgICBpZiAoIWNoaWxkV2luZG93KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJGYWlsZWQgdG8gY3JlYXRlIGNo
aWxkIHdpbmRvdy4iKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUNoaWxkV2luZG93
ID0gTmF0aXZlV2luZG93KGNoaWxkV2luZG93KTsKLQotICAgICAgICAgICAgaWYgKCFtQ2hpbGRX
aW5kb3cuaW5pdGlhbGl6ZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSNlbmRpZgotCiAgICAgICAgIGlmICghbU5hdGl2ZVdpbmRvdy5pbml0aWFsaXplKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7CkBA
IC0xMjcsOCArOTgsMTMgQEAKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9
CiAKLWVnbDo6RXJyb3IgU3VyZmFjZUQzRDo6YmluZFRleEltYWdlKEVHTGludCkKK0ZyYW1lYnVm
ZmVySW1wbCAqU3VyZmFjZUQzRDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKIHsKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5jcmVhdGVG
cmFtZWJ1ZmZlcihkYXRhKTsKK30KKworZWdsOjpFcnJvciBTdXJmYWNlRDNEOjpiaW5kVGV4SW1h
Z2UoZ2w6OlRleHR1cmUgKiwgRUdMaW50KQorewogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKIH0KIApAQCAtMTY0LDggKzE0MCw4IEBACiAgICAgICAgIGhlaWdodCA9IG1IZWln
aHQ7CiAgICAgfQogCi0gICAgY29uc3QgTmF0aXZlV2luZG93ICZ3aW5kb3cgPSAobUNoaWxkV2lu
ZG93LmdldE5hdGl2ZVdpbmRvdygpICE9IG51bGxwdHIpID8gbUNoaWxkV2luZG93IDogbU5hdGl2
ZVdpbmRvdzsKLSAgICBtU3dhcENoYWluID0gbVJlbmRlcmVyLT5jcmVhdGVTd2FwQ2hhaW4od2lu
ZG93LCBtU2hhcmVIYW5kbGUsIG1SZW5kZXJUYXJnZXRGb3JtYXQsIG1EZXB0aFN0ZW5jaWxGb3Jt
YXQpOworICAgIG1Td2FwQ2hhaW4gPSBtUmVuZGVyZXItPmNyZWF0ZVN3YXBDaGFpbihtTmF0aXZl
V2luZG93LCBtU2hhcmVIYW5kbGUsIG1SZW5kZXJUYXJnZXRGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQsIG1Pcmll
bnRhdGlvbik7CiAgICAgaWYgKCFtU3dhcENoYWluKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVn
bDo6RXJyb3IoRUdMX0JBRF9BTExPQyk7CkBAIC0yMDEsMTcgKzE3Nyw2IEBACiAgICAgbVdpZHRo
ID0gYmFja2J1ZmZlcldpZHRoOwogICAgIG1IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OwogCi0j
aWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUpCi0gICAgaWYgKG1DaGlsZFdp
bmRvdy5nZXROYXRpdmVXaW5kb3coKSkKLSAgICB7Ci0gICAgICAgIC8vIFJlc2l6ZSB0aGUgY2hp
bGQgd2luZG93Ci0gICAgICAgIGlmICghTW92ZVdpbmRvdyhtQ2hpbGRXaW5kb3cuZ2V0TmF0aXZl
V2luZG93KCksIDAsIDAsIG1XaWR0aCwgbUhlaWdodCwgRkFMU0UpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1NVUkZBQ0UsICJGYWlsZWQgdG8gbW92
ZSB0aGUgY2hpbGQgd2luZG93LiIpOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCi0KICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKQEAgLTM1NCwxMCArMzE5LDIzIEBA
CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCitFR0xpbnQgU3VyZmFjZUQzRDo6Z2V0U3dhcEJl
aGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7Cit9CisK
IGVnbDo6RXJyb3IgU3VyZmFjZUQzRDo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBh
dHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkKIHsKLSAgICBBU1NFUlQoYXR0cmlidXRlID09IEVHTF9E
M0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUpOwotICAgICp2YWx1ZSA9IG1Td2FwQ2hh
aW4tPmdldFNoYXJlSGFuZGxlKCk7CisgICAgaWYgKGF0dHJpYnV0ZSA9PSBFR0xfRDNEX1RFWFRV
UkVfMkRfU0hBUkVfSEFORExFX0FOR0xFKQorICAgIHsKKyAgICAgICAgKnZhbHVlID0gbVN3YXBD
aGFpbi0+Z2V0U2hhcmVIYW5kbGUoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoYXR0cmlidXRlID09
IEVHTF9EWEdJX0tFWUVEX01VVEVYX0FOR0xFKQorICAgIHsKKyAgICAgICAgKnZhbHVlID0gbVN3
YXBDaGFpbi0+Z2V0S2V5ZWRNdXRleCgpOworICAgIH0KKyAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7
CisKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvU3VyZmFjZUQzRC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsMTkgKzI1LDI3IEBACiBjbGFzcyBTdXJmYWNlRDNEIDogcHVibGljIFN1
cmZhY2VJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBzdGF0aWMgU3VyZmFjZUQzRCAqY3JlYXRlRnJv
bVdpbmRvdyhSZW5kZXJlckQzRCAqcmVuZGVyZXIsIGVnbDo6RGlzcGxheSAqZGlzcGxheSwgY29u
c3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgRUdMaW50IGZpeGVkU2l6ZSwgRUdM
aW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KTsKKyAgICBzdGF0aWMgU3VyZmFjZUQzRCAqY3JlYXRl
RnJvbVdpbmRvdyhSZW5kZXJlckQzRCAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGZp
eGVkU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQg
ZGlyZWN0Q29tcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IG9yaWVudGF0aW9uKTsKICAgICBzdGF0aWMgU3VyZmFjZUQzRCAqY3JlYXRlT2Zmc2Ny
ZWVuKFJlbmRlcmVyRDNEICpyZW5kZXJlciwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWln
aHQpOwogICAgIH5TdXJmYWNlRDNEKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWxlYXNlU3dhcENo
YWluKCk7CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBGcmFt
ZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZm
ZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwogCiAgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJp
ZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdM
aW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5
U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJy
aWRlOwotICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRl
OworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xp
bnQgYnVmZmVyKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xp
bnQgYnVmZmVyKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50
ZXJ2YWwpIG92ZXJyaWRlOwogCkBAIC00NSw2ICs1Myw3IEBACiAgICAgRUdMaW50IGdldEhlaWdo
dCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRl
ZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3IoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEQzRCBpbXBsZW1lbnRhdGlvbnMKICAgICBTd2FwQ2hhaW5EM0Qg
KmdldFN3YXBDaGFpbigpIGNvbnN0OwpAQCAtNTgsOCArNjcsMTYgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJn
ZXQgKipydE91dCkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBTdXJmYWNlRDNEKFJlbmRl
cmVyRDNEICpyZW5kZXJlciwgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlnLCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICBF
R0xpbnQgZml4ZWRTaXplLCBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93KTsKKyAgICBTdXJmYWNlRDNEKFJlbmRlcmVyRDNEICpyZW5kZXJlciwK
KyAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCisg
ICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgRUdMaW50IGZpeGVk
U2l6ZSwKKyAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbiwKKyAgICAgICAgICAgICAg
IEVHTGludCBkaXJlY3RDb21wb3NpdGlvbiwKKyAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZl
ciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
KTsKIAogICAgIGVnbDo6RXJyb3Igc3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQg
d2lkdGgsIEVHTGludCBoZWlnaHQpOwogICAgIGVnbDo6RXJyb3IgcmVzZXRTd2FwQ2hhaW4oaW50
IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpOwpAQCAtNjksNiArODYsNyBA
QAogICAgIGVnbDo6RGlzcGxheSAqbURpc3BsYXk7CiAKICAgICBib29sIG1GaXhlZFNpemU7Cisg
ICAgR0xpbnQgbU9yaWVudGF0aW9uOwogCiAgICAgR0xlbnVtIG1SZW5kZXJUYXJnZXRGb3JtYXQ7
CiAgICAgR0xlbnVtIG1EZXB0aFN0ZW5jaWxGb3JtYXQ7CkBAIC04MCw4ICs5OCw2IEBACiAgICAg
RUdMaW50IG1XaWR0aDsKICAgICBFR0xpbnQgbUhlaWdodDsKIAotICAgIE5hdGl2ZVdpbmRvdyBt
Q2hpbGRXaW5kb3c7Ci0KICAgICBFR0xpbnQgbVN3YXBJbnRlcnZhbDsKIAogICAgIEhBTkRMRSBt
U2hhcmVIYW5kbGU7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL1N3YXBDaGFpbkQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNELmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvU3dhcENoYWluRDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAK
IHsKICAgcHVibGljOgogICAgIFN3YXBDaGFpbkQzRChyeDo6TmF0aXZlV2luZG93IG5hdGl2ZVdp
bmRvdywgSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVt
IGRlcHRoQnVmZmVyRm9ybWF0KQotICAgICAgICA6IG1OYXRpdmVXaW5kb3cobmF0aXZlV2luZG93
KSwgbVNoYXJlSGFuZGxlKHNoYXJlSGFuZGxlKSwgbUJhY2tCdWZmZXJGb3JtYXQoYmFja0J1ZmZl
ckZvcm1hdCksIG1EZXB0aEJ1ZmZlckZvcm1hdChkZXB0aEJ1ZmZlckZvcm1hdCkKKyAgICAgICAg
OiBtTmF0aXZlV2luZG93KG5hdGl2ZVdpbmRvdyksIG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3Jt
YXQoYmFja0J1ZmZlckZvcm1hdCksIG1EZXB0aEJ1ZmZlckZvcm1hdChkZXB0aEJ1ZmZlckZvcm1h
dCksIG1TaGFyZUhhbmRsZShzaGFyZUhhbmRsZSkKICAgICB7CiAgICAgfQogCkBAIC00NSwxNCAr
NDUsMTUgQEAKICAgICB2aXJ0dWFsIFJlbmRlclRhcmdldEQzRCAqZ2V0Q29sb3JSZW5kZXJUYXJn
ZXQoKSA9IDA7CiAgICAgdmlydHVhbCBSZW5kZXJUYXJnZXREM0QgKmdldERlcHRoU3RlbmNpbFJl
bmRlclRhcmdldCgpID0gMDsKIAotICAgIEdMZW51bSBHZXRCYWNrQnVmZmVySW50ZXJuYWxGb3Jt
YXQoKSBjb25zdCB7IHJldHVybiBtQmFja0J1ZmZlckZvcm1hdDsgfQorICAgIEdMZW51bSBHZXRS
ZW5kZXJUYXJnZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1PZmZzY3JlZW5SZW5k
ZXJUYXJnZXRGb3JtYXQ7IH0KICAgICBHTGVudW0gR2V0RGVwdGhCdWZmZXJJbnRlcm5hbEZvcm1h
dCgpIGNvbnN0IHsgcmV0dXJuIG1EZXB0aEJ1ZmZlckZvcm1hdDsgfQogCiAgICAgSEFORExFIGdl
dFNoYXJlSGFuZGxlKCkgeyByZXR1cm4gbVNoYXJlSGFuZGxlOyB9CisgICAgdmlydHVhbCB2b2lk
ICpnZXRLZXllZE11dGV4KCkgPSAwOwogCiAgIHByb3RlY3RlZDoKICAgICByeDo6TmF0aXZlV2lu
ZG93IG1OYXRpdmVXaW5kb3c7ICAvLyBIYW5kbGVyIGZvciB0aGUgV2luZG93IHRoYXQgdGhlIHN1
cmZhY2UgaXMgY3JlYXRlZCBmb3IuCi0gICAgY29uc3QgR0xlbnVtIG1CYWNrQnVmZmVyRm9ybWF0
OworICAgIGNvbnN0IEdMZW51bSBtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0OwogICAgIGNv
bnN0IEdMZW51bSBtRGVwdGhCdWZmZXJGb3JtYXQ7CiAKICAgICBIQU5ETEUgbVNoYXJlSGFuZGxl
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9UZXh0dXJlRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuY3BwCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Rl
eHR1cmVEM0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMSArMTMsMTMgQEAKICNpbmNsdWRl
ICJsaWJBTkdMRS9CdWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1
cmUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0J1ZmZlckltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvQnVmZmVyRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdl
RDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oIgpAQCAtMTU3LDE2ICsxNTksMTIg
QEAKICAgICByZXR1cm4gKG1UZXhTdG9yYWdlICYmICFpbnRlcm5hbEZvcm1hdC5jb21wcmVzc2Vk
KTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnNldEltYWdlKGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsYXllck9mZnNldCkK
K2dsOjpFcnJvciBUZXh0dXJlRDNEOjpzZXRJbWFnZUltcGwoY29uc3QgZ2w6OkltYWdlSW5kZXgg
JmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqcGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJk
aWZmX3QgbGF5ZXJPZmZzZXQpCiB7Ci0gICAgaWYgKHVucGFjay5za2lwUm93cyAhPSAwIHx8IHVu
cGFjay5za2lwUGl4ZWxzICE9IDAgfHwgdW5wYWNrLmltYWdlSGVpZ2h0ICE9IDAgfHwgdW5wYWNr
LnNraXBJbWFnZXMgIT0gMCkKLSAgICB7Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgInVuaW1wbGVtZW50ZWQg
cGl4ZWwgc3RvcmUgc3RhdGUiKTsKLSAgICB9Ci0KICAgICBJbWFnZUQzRCAqaW1hZ2UgPSBnZXRJ
bWFnZShpbmRleCk7CiAgICAgQVNTRVJUKGltYWdlKTsKIApAQCAtMTg1LDcgKzE4Myw3IEBACiAg
ICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBpZiAocGl4ZWxEYXRhICE9IE5VTEwp
CisgICAgaWYgKHBpeGVsRGF0YSAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHNob3Vs
ZFVzZVNldERhdGEoaW1hZ2UpKQogICAgICAgICB7CkBAIC0yNDcsMTUgKzI0NSwxMSBAQAogICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQz
RDo6c2V0Q29tcHJlc3NlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzLCBwdHJkaWZmX3QgbGF5ZXJPZmZz
ZXQpCitnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c2V0Q29tcHJlc3NlZEltYWdlSW1wbChjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90
IGxheWVyT2Zmc2V0KQogewotICAgIGlmICh1bnBhY2suc2tpcFJvd3MgIT0gMCB8fCB1bnBhY2su
c2tpcFBpeGVscyAhPSAwIHx8IHVucGFjay5pbWFnZUhlaWdodCAhPSAwIHx8IHVucGFjay5za2lw
SW1hZ2VzICE9IDApCi0gICAgewotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJ1bmltcGxlbWVudGVkIHBpeGVs
IHN0b3JlIHN0YXRlIik7Ci0gICAgfQotCiAgICAgLy8gV2Ugbm8gbG9uZ2VyIG5lZWQgdGhlICJH
TGVudW0gZm9ybWF0IiBwYXJhbWV0ZXIgdG8gVGV4SW1hZ2UgdG8gZGV0ZXJtaW5lIHdoYXQgZGF0
YSBmb3JtYXQgInBpeGVscyIgY29udGFpbnMuCiAgICAgLy8gRnJvbSBvdXIgaW1hZ2UgaW50ZXJu
YWwgZm9ybWF0IHdlIGtub3cgaG93IG1hbnkgY2hhbm5lbHMgdG8gZXhwZWN0LCBhbmQgInR5cGUi
IGdpdmVzIHRoZSBmb3JtYXQgb2YgcGl4ZWwncyBjb21wb25lbnRzLgogICAgIGNvbnN0IHVpbnQ4
X3QgKnBpeGVsRGF0YSA9IE5VTEw7CkBAIC0yODcsMTIgKzI4MSw2IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHRyZGlmZl90IGxheWVyT2Zmc2V0KQogewotICAgIGlmICh1bnBhY2su
c2tpcFJvd3MgIT0gMCB8fCB1bnBhY2suc2tpcFBpeGVscyAhPSAwIHx8IHVucGFjay5pbWFnZUhl
aWdodCAhPSAwIHx8IHVucGFjay5za2lwSW1hZ2VzICE9IDApCi0gICAgewotICAgICAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJ1bmltcGxlbWVudGVkIHBpeGVsIHN0b3JlIHN0YXRlIik7Ci0gICAgfQotCiAgICAgY29u
c3QgdWludDhfdCAqcGl4ZWxEYXRhID0gTlVMTDsKICAgICBnbDo6RXJyb3IgZXJyb3IgPSBHZXRV
bnBhY2tQb2ludGVyKHVucGFjaywgcGl4ZWxzLCBsYXllck9mZnNldCwgJnBpeGVsRGF0YSk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKQEAgLTMyNSw2ICszMTMsMTUgQEAKIGdsOjpFcnJvciBU
ZXh0dXJlRDNEOjpmYXN0VW5wYWNrUGl4ZWxzKGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscywgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2l6ZWRJbnRlcm5h
bEZvcm1hdCwgR0xlbnVtIHR5cGUsIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCkK
IHsKKyAgICBpZiAodW5wYWNrLnNraXBSb3dzICE9IDAgfHwgdW5wYWNrLnNraXBQaXhlbHMgIT0g
MCB8fCB1bnBhY2suaW1hZ2VIZWlnaHQgIT0gMCB8fAorICAgICAgICB1bnBhY2suc2tpcEltYWdl
cyAhPSAwKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogYWRkaXRpb25hbCB1bnBh
Y2sgcGFyYW1ldGVycworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
IlVuaW1wbGVtZW50ZWQgcGl4ZWwgc3RvcmUgcGFyYW1ldGVycyBpbiBmYXN0VW5wYWNrUGl4ZWxz
Iik7CisgICAgfQorCiAgICAgLy8gTm8tb3AKICAgICBpZiAoZGVzdEFyZWEud2lkdGggPD0gMCAm
JiBkZXN0QXJlYS5oZWlnaHQgPD0gMCAmJiBkZXN0QXJlYS5kZXB0aCA8PSAwKQogICAgIHsKQEAg
LTM3Niw3ICszNzMsNyBAQAogICAgIHJldHVybiBnZXRJbWFnZShnZXRJbWFnZUluZGV4KDAsIDAp
KTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRlTWlwbWFwcyhjb25zdCBnbDo6
U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpCitnbDo6RXJyb3IgVGV4dHVyZUQzRDo6Z2VuZXJh
dGVNaXBtYXBzKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkKIHsKICAgICBH
TGludCBtaXBDb3VudCA9IG1pcExldmVscygpOwogCkBAIC00MTQsNyArNDExLDcgQEAKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBtaXBtYXAgY2hhaW4gdXNpbmcgdGhlIGFk
LWhvYyBEaXJlY3RYIGZ1bmN0aW9uLgotICAgICAgICBlcnJvciA9IG1SZW5kZXJlci0+Z2VuZXJh
dGVNaXBtYXBzVXNpbmdEM0QobVRleFN0b3JhZ2UsIHNhbXBsZXJTdGF0ZSk7CisgICAgICAgIGVy
cm9yID0gbVJlbmRlcmVyLT5nZW5lcmF0ZU1pcG1hcHNVc2luZ0QzRChtVGV4U3RvcmFnZSwgdGV4
dHVyZVN0YXRlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtNDUzLDkgKzQ1MCw3IEBACiAgICAgICAgICAgICAg
ICAgZ2w6OkltYWdlSW5kZXggc3JjSW5kZXggPSBnZXRJbWFnZUluZGV4KDAsIGxheWVyKTsKIAog
ICAgICAgICAgICAgICAgIEltYWdlRDNEICppbWFnZSA9IGdldEltYWdlKHNyY0luZGV4KTsKLSAg
ICAgICAgICAgICAgICBnbDo6Qm94IGFyZWEoMCwgMCwgMCwgaW1hZ2UtPmdldFdpZHRoKCksIGlt
YWdlLT5nZXRIZWlnaHQoKSwgaW1hZ2UtPmdldERlcHRoKCkpOwotICAgICAgICAgICAgICAgIGds
OjpPZmZzZXQgb2Zmc2V0KDAsIDAsIDApOwotICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IGltYWdlLT5jb3B5KG9mZnNldCwgYXJlYSwgc3JjSW5kZXgsIG1UZXhTdG9yYWdlKTsKKyAg
ICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbWFnZS0+Y29weUZyb21UZXhTdG9yYWdl
KHNyY0luZGV4LCBtVGV4U3RvcmFnZSk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKQEAgLTYyMCw2ICs2MTUsNyBAQAogVGV4dHVyZUQzRF8yRDo6VGV4dHVyZUQzRF8yRChSZW5k
ZXJlckQzRCAqcmVuZGVyZXIpCiAgICAgOiBUZXh0dXJlRDNEKHJlbmRlcmVyKQogeworICAgIG1F
R0xJbWFnZVRhcmdldCA9IGZhbHNlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6OklNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgKytpKQogICAgIHsKICAgICAgICAgbUltYWdl
QXJyYXlbaV0gPSByZW5kZXJlci0+Y3JlYXRlSW1hZ2UoKTsKQEAgLTY4OSwxNiArNjg1LDIzIEBA
CiAgICAgcmV0dXJuIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXQo
bGV2ZWwpKS5kZXB0aEJpdHMgPiAwOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0
SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8y
RDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RF
WFRVUkVfMkQgJiYgc2l6ZS5kZXB0aCA9PSAxKTsKIAogICAgIEdMZW51bSBzaXplZEludGVybmFs
Rm9ybWF0ID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIHR5cGUp
OwogCiAgICAgYm9vbCBmYXN0VW5wYWNrZWQgPSBmYWxzZTsKKyAgICBHTGludCBsZXZlbCAgICAg
ICA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKIAotICAgIHJlZGVmaW5lSW1hZ2Uo
bGV2ZWwsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHNpemUpOworICAgIHJlZGVmaW5lSW1hZ2UobGV2
ZWwsIHNpemVkSW50ZXJuYWxGb3JtYXQsIHNpemUsIGZhbHNlKTsKIAogICAgIGdsOjpJbWFnZUlu
ZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRChsZXZlbCk7CiAKQEAgLTcyOSw3ICs3
MzIsNyBAQAogCiAgICAgaWYgKCFmYXN0VW5wYWNrZWQpCiAgICAgewotICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPSBUZXh0dXJlRDNEOjpzZXRJbWFnZShpbmRleCwgdHlwZSwgdW5wYWNrLCBwaXhl
bHMsIDApOworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRJbWFnZUltcGwoaW5kZXgsIHR5
cGUsIHVucGFjaywgcGl4ZWxzLCAwKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtNzM5LDE3ICs3NDIsMTcgQEAK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1
cmVEM0RfMkQ6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3Qg
Z2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldFN1
YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVCh0YXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCAmJiBhcmVhLmRlcHRoID09IDEgJiYgYXJlYS56ID09IDApOwogCi0g
ICAgaWYgKHVucGFjay5za2lwUm93cyAhPSAwIHx8IHVucGFjay5za2lwUGl4ZWxzICE9IDAgfHwg
dW5wYWNrLmltYWdlSGVpZ2h0ICE9IDAgfHwgdW5wYWNrLnNraXBJbWFnZXMgIT0gMCkKLSAgICB7
Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgInVuaW1wbGVtZW50ZWQgcGl4ZWwgc3RvcmUgc3RhdGUiKTsKLSAg
ICB9Ci0KKyAgICBHTGludCBsZXZlbCAgICAgICAgICA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFn
ZUxldmVsKTsKICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtl
MkQobGV2ZWwpOwogICAgIGlmIChpc0Zhc3RVbnBhY2thYmxlKHVucGFjaywgZ2V0SW50ZXJuYWxG
b3JtYXQobGV2ZWwpKSAmJiBpc0xldmVsQ29tcGxldGUobGV2ZWwpKQogICAgIHsKQEAgLTc3MCwy
NCArNzczLDI5IEBACiAgICAgfQogfQogCi0KLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRD
b21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNr
LCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29t
cHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJU
KHRhcmdldCA9PSBHTF9URVhUVVJFXzJEICYmIHNpemUuZGVwdGggPT0gMSk7CisgICAgR0xpbnQg
bGV2ZWwgPSBzdGF0aWNfY2FzdDxHTGludD4oaW1hZ2VMZXZlbCk7CiAKICAgICAvLyBjb21wcmVz
c2VkIGZvcm1hdHMgZG9uJ3QgaGF2ZSBzZXBhcmF0ZSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLS0g
d2UgY2FuIGp1c3QgdXNlIHRoZSBjb21wcmVzc2VkIGZvcm1hdCBkaXJlY3RseQotICAgIHJlZGVm
aW5lSW1hZ2UobGV2ZWwsIGludGVybmFsRm9ybWF0LCBzaXplKTsKKyAgICByZWRlZmluZUltYWdl
KGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZmFsc2UpOwogCi0gICAgcmV0dXJuIFRleHR1
cmVEM0Q6OnNldENvbXByZXNzZWRJbWFnZShnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKGxldmVsKSwg
dW5wYWNrLCBwaXhlbHMsIDApOworICAgIHJldHVybiBzZXRDb21wcmVzc2VkSW1hZ2VJbXBsKGds
OjpJbWFnZUluZGV4OjpNYWtlMkQobGV2ZWwpLCB1bnBhY2ssIHBpeGVscywgMCk7CiB9CiAKIGds
OjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4
ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykK
IHsKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgJiYgYXJlYS5kZXB0aCA9PSAx
ICYmIGFyZWEueiA9PSAwKTsKIAotICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdl
SW5kZXg6Ok1ha2UyRChsZXZlbCk7CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1h
Z2VJbmRleDo6TWFrZTJEKHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCkpOwogICAgIGdsOjpFcnJv
ciBlcnJvciA9IFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChpbmRleCwgYXJlYSwgZm9y
bWF0LCB1bnBhY2ssIHBpeGVscywgMCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7
CkBAIC03OTcsMTMgKzgwNSwxOCBAQAogICAgIHJldHVybiBjb21taXRSZWdpb24oaW5kZXgsIGFy
ZWEpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weUltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xlbnVt
IGludGVybmFsRm9ybWF0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlJbWFnZShHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1h
Z2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09
IEdMX1RFWFRVUkVfMkQpOwogCisgICAgR0xpbnQgbGV2ZWwgICAgICAgICAgICAgICAgPSBzdGF0
aWNfY2FzdDxHTGludD4oaW1hZ2VMZXZlbCk7CiAgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3Jt
YXQgPSBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgR0xfVU5TSUdO
RURfQllURSk7Ci0gICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwg
Z2w6OkV4dGVudHMoc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEpKTsKKyAg
ICByZWRlZmluZUltYWdlKGxldmVsLCBzaXplZEludGVybmFsRm9ybWF0LCBnbDo6RXh0ZW50cyhz
b3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCwgMSksCisgICAgICAgICAgICAgICAg
ICBmYWxzZSk7CiAKICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpN
YWtlMkQobGV2ZWwpOwogICAgIGdsOjpPZmZzZXQgZGVzdE9mZnNldCgwLCAwLCAwKTsKQEAgLTgx
Miw3ICs4MjUsNyBAQAogICAgIC8vIHNvIHdlIHNob3VsZCB1c2UgdGhlIG5vbi1yZW5kZXJpbmcg
Y29weSBwYXRoLgogICAgIGlmICghY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgp
IHx8IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS56ZXJvTWF4TG9kV29ya2Fyb3VuZCkKICAg
ICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZUFycmF5W2xldmVsXS0+Y29weShk
ZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBzb3VyY2UpOworICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBtSW1hZ2VBcnJheVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdE9mZnNldCwgc291
cmNlQXJlYSwgc291cmNlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtODQzLDcgKzg1NiwxMCBAQAogICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8y
RDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKK2dsOjpF
cnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0g
R0xfVEVYVFVSRV8yRCAmJiBkZXN0T2Zmc2V0LnogPT0gMCk7CkBAIC04NTEsMTMgKzg2NywxNCBA
QAogICAgIC8vIGNhbiBvbmx5IG1ha2Ugb3VyIHRleHR1cmUgc3RvcmFnZSB0byBhIHJlbmRlciB0
YXJnZXQgaWYgbGV2ZWwgMCBpcyBkZWZpbmVkICh3aXRoIGEgd2lkdGggJiBoZWlnaHQpIGFuZAog
ICAgIC8vIHRoZSBjdXJyZW50IGxldmVsIHdlJ3JlIGNvcHlpbmcgdG8gaXMgZGVmaW5lZCAod2l0
aCBhcHByb3ByaWF0ZSBmb3JtYXQsIHdpZHRoICYgaGVpZ2h0KQogCisgICAgR0xpbnQgbGV2ZWwg
ICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTGludD4oaW1hZ2VMZXZlbCk7CiAgICAgZ2w6OkltYWdl
SW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKGxldmVsKTsKIAogICAgIC8vIElm
IHRoZSB6ZXJvIG1heCBMT0Qgd29ya2Fyb3VuZCBpcyBhY3RpdmUsIHRoZW4gd2UgY2FuJ3Qgc2Ft
cGxlIGZyb20gaW5kaXZpZHVhbCBsYXllcnMgb2YgdGhlIGZyYW1lYnVmZmVyIGluIHNoYWRlcnMs
CiAgICAgLy8gc28gd2Ugc2hvdWxkIHVzZSB0aGUgbm9uLXJlbmRlcmluZyBjb3B5IHBhdGguCiAg
ICAgaWYgKCFjYW5DcmVhdGVSZW5kZXJUYXJnZXRGb3JJbWFnZShpbmRleCkgfHwgbVJlbmRlcmVy
LT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5kKQogICAgIHsKLSAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0gbUltYWdlQXJyYXlbbGV2ZWxdLT5jb3B5KGRlc3RPZmZzZXQsIHNv
dXJjZUFyZWEsIHNvdXJjZSk7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZUFycmF5
W2xldmVsXS0+Y29weUZyb21GcmFtZWJ1ZmZlcihkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBzb3Vy
Y2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7CkBAIC05MDMsMTcgKzkyMCwxOCBAQAogICAgICAgICBnbDo6RXh0ZW50
cyBsZXZlbFNpemUoc3RkOjptYXgoMSwgc2l6ZS53aWR0aCA+PiBsZXZlbCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heCgxLCBzaXplLmhlaWdodCA+PiBsZXZlbCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKLSAgICAgICAgbUltYWdlQXJyYXlbbGV2
ZWxdLT5yZWRlZmluZShHTF9URVhUVVJFXzJELCBpbnRlcm5hbEZvcm1hdCwgbGV2ZWxTaXplLCB0
cnVlKTsKKyAgICAgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGxldmVs
U2l6ZSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgZm9yIChpbnQgbGV2ZWwgPSBsZXZlbHM7IGxldmVs
IDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykKKyAgICBm
b3IgKHNpemVfdCBsZXZlbCA9IGxldmVsczsgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFY
X1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQogICAgIHsKLSAgICAgICAgbUltYWdlQXJyYXlbbGV2
ZWxdLT5yZWRlZmluZShHTF9URVhUVVJFXzJELCBHTF9OT05FLCBnbDo6RXh0ZW50cygwLCAwLCAw
KSwgdHJ1ZSk7CisgICAgICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIEdMX05PTkUsIGdsOjpFeHRl
bnRzKDAsIDAsIDEpLCB0cnVlKTsKICAgICB9CiAKICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFZl
cmlmeSBzdG9yYWdlIGNyZWF0aW9uIGhhZCBubyBlcnJvcnMKICAgICBib29sIHJlbmRlclRhcmdl
dCA9IElzUmVuZGVyVGFyZ2V0VXNhZ2UobVVzYWdlKTsKLSAgICBUZXh0dXJlU3RvcmFnZSAqc3Rv
cmFnZSA9IG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChpbnRlcm5hbEZvcm1hdCwg
cmVuZGVyVGFyZ2V0LCBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgbGV2ZWxzLCBmYWxzZSk7Cisg
ICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPSBtUmVuZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9y
YWdlMkQoCisgICAgICAgIGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHNpemUud2lkdGgs
IHNpemUuaGVpZ2h0LCBzdGF0aWNfY2FzdDxpbnQ+KGxldmVscyksIGZhbHNlKTsKIAogICAgIGds
OjpFcnJvciBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9yYWdlKTsKICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQpAQCAtOTM5LDcgKzk1Nyw3IEBACiAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0ID0gc3VyZmFjZS0+Z2V0Q29uZmlnKCktPnJlbmRlclRhcmdldEZvcm1hdDsKIAogICAg
IGdsOjpFeHRlbnRzIHNpemUoc3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+Z2V0SGVpZ2h0
KCksIDEpOwotICAgIG1JbWFnZUFycmF5WzBdLT5yZWRlZmluZShHTF9URVhUVVJFXzJELCBpbnRl
cm5hbGZvcm1hdCwgc2l6ZSwgdHJ1ZSk7CisgICAgcmVkZWZpbmVJbWFnZSgwLCBpbnRlcm5hbGZv
cm1hdCwgc2l6ZSwgdHJ1ZSk7CiAKICAgICBpZiAobVRleFN0b3JhZ2UpCiAgICAgewpAQCAtOTUw
LDYgKzk2OCw3IEBACiAgICAgQVNTRVJUKHN1cmZhY2VEM0QpOwogCiAgICAgbVRleFN0b3JhZ2Ug
PSBtUmVuZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoc3VyZmFjZUQzRC0+Z2V0U3dhcENo
YWluKCkpOworICAgIG1FR0xJbWFnZVRhcmdldCA9IGZhbHNlOwogCiAgICAgbURpcnR5SW1hZ2Vz
ID0gdHJ1ZTsKIH0KQEAgLTk2MywxMCArOTgyLDM0IEBACiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKICAgICB7Ci0g
ICAgICAgIG1JbWFnZUFycmF5W2ldLT5yZWRlZmluZShHTF9URVhUVVJFXzJELCBHTF9OT05FLCBn
bDo6RXh0ZW50cygwLCAwLCAwKSwgdHJ1ZSk7CisgICAgICAgIHJlZGVmaW5lSW1hZ2UoaSwgR0xf
Tk9ORSwgZ2w6OkV4dGVudHMoMCwgMCwgMSksIHRydWUpOwogICAgIH0KIH0KIAorZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkQ6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1h
Z2UgKmltYWdlKQoreworICAgIEVHTEltYWdlRDNEICplZ2xJbWFnZWQzZCA9IEdldEltcGxBczxF
R0xJbWFnZUQzRD4oaW1hZ2UpOworCisgICAgLy8gU2V0IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBi
YXNlIG1pcCBsZXZlbCBmcm9tIHRoZSBFR0wgaW1hZ2UKKyAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQgPSBpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKKyAgICBnbDo6RXh0ZW50cyBzaXplKHN0
YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldFdpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KGltYWdl
LT5nZXRIZWlnaHQoKSksIDEpOworICAgIHJlZGVmaW5lSW1hZ2UoMCwgaW50ZXJuYWxmb3JtYXQs
IHNpemUsIHRydWUpOworCisgICAgLy8gQ2xlYXIgYWxsIG90aGVyIGltYWdlcy4KKyAgICBmb3Ig
KHNpemVfdCBsZXZlbCA9IDE7IGxldmVsIDwgQXJyYXlTaXplKG1JbWFnZUFycmF5KTsgbGV2ZWwr
KykKKyAgICB7CisgICAgICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIEdMX05PTkUsIGdsOjpFeHRl
bnRzKDAsIDAsIDEpLCB0cnVlKTsKKyAgICB9CisKKyAgICBTYWZlRGVsZXRlKG1UZXhTdG9yYWdl
KTsKKyAgICBtSW1hZ2VBcnJheVswXS0+bWFya0NsZWFuKCk7CisKKyAgICBtVGV4U3RvcmFnZSAg
ICAgPSBtUmVuZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlRUdMSW1hZ2UoZWdsSW1hZ2VkM2Qp
OworICAgIG1FR0xJbWFnZVRhcmdldCA9IHRydWU7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKK30KKwogdm9pZCBUZXh0dXJlRDNEXzJEOjppbml0TWlwbWFwc0ltYWdlcygp
CiB7CiAgICAgLy8gUHVyZ2UgYXJyYXkgbGV2ZWxzIDEgdGhyb3VnaCBxIGFuZCByZXNldCB0aGVt
IHRvIHJlcHJlc2VudCB0aGUgZ2VuZXJhdGVkIG1pcG1hcCBsZXZlbHMuCkBAIC05NzcsMTYgKzEw
MjAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KGdldEJhc2VM
ZXZlbEhlaWdodCgpID4+IGxldmVsLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEpOwogCi0gICAgICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGdldEJhc2VMZXZlbEludGVybmFs
Rm9ybWF0KCksIGxldmVsU2l6ZSk7CisgICAgICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGdldEJh
c2VMZXZlbEludGVybmFsRm9ybWF0KCksIGxldmVsU2l6ZSwgZmFsc2UpOwogICAgIH0KIH0KIAot
dW5zaWduZWQgaW50IFRleHR1cmVEM0RfMkQ6OmdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgpCi17Ci0gICAgQVNTRVJUKCFpbmRleC5oYXNMYXllcigpKTsK
LSAgICByZXR1cm4gKCFlbnN1cmVSZW5kZXJUYXJnZXQoKS5pc0Vycm9yKCkgPyBtVGV4U3RvcmFn
ZS0+Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKGluZGV4KSA6IDApOwotfQotCiBnbDo6RXJyb3IgVGV4
dHVyZUQzRF8yRDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwg
UmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7CiAgICAgQVNTRVJUKCFpbmRleC5oYXNMYXllcigp
KTsKQEAgLTExOTMsNyArMTIzMCwxMCBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwogfQogCi12b2lkIFRleHR1cmVEM0RfMkQ6OnJlZGVmaW5lSW1hZ2UoR0xpbnQgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCit2b2lkIFRl
eHR1cmVEM0RfMkQ6OnJlZGVmaW5lSW1hZ2Uoc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZvcmNlUmVsZWFzZSkKIHsKICAgICBBU1NFUlQo
c2l6ZS5kZXB0aCA9PSAxKTsKIApAQCAtMTIwMiwxOCArMTI0MiwyNiBAQAogICAgIGNvbnN0IGlu
dCBzdG9yYWdlSGVpZ2h0ID0gc3RkOjptYXgoMSwgZ2V0QmFzZUxldmVsSGVpZ2h0KCkgPj4gbGV2
ZWwpOwogICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJu
YWxGb3JtYXQoKTsKIAotICAgIG1JbWFnZUFycmF5W2xldmVsXS0+cmVkZWZpbmUoR0xfVEVYVFVS
RV8yRCwgaW50ZXJuYWxmb3JtYXQsIHNpemUsIGZhbHNlKTsKKyAgICBtSW1hZ2VBcnJheVtsZXZl
bF0tPnJlZGVmaW5lKEdMX1RFWFRVUkVfMkQsIGludGVybmFsZm9ybWF0LCBzaXplLCBmb3JjZVJl
bGVhc2UpOwogCiAgICAgaWYgKG1UZXhTdG9yYWdlKQogICAgIHsKLSAgICAgICAgY29uc3QgaW50
IHN0b3JhZ2VMZXZlbHMgPSBtVGV4U3RvcmFnZS0+Z2V0TGV2ZWxDb3VudCgpOworICAgICAgICBj
b25zdCBzaXplX3Qgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9yYWdlLT5nZXRMZXZlbENvdW50KCk7
CiAKKyAgICAgICAgLy8gSWYgdGhlIHN0b3JhZ2Ugd2FzIGZyb20gYW4gRUdMIGltYWdlLCBjb3B5
IGl0IGJhY2sgaW50byBsb2NhbCBpbWFnZXMgdG8gcHJlc2VydmUgaXQKKyAgICAgICAgLy8gd2hp
bGUgb3JwaGFuaW5nCisgICAgICAgIGlmIChsZXZlbCAhPSAwICYmIG1FR0xJbWFnZVRhcmdldCkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRG9uJ3QgZGlzY2FyZCBl
cnJvci4KKyAgICAgICAgICAgIG1JbWFnZUFycmF5WzBdLT5jb3B5RnJvbVRleFN0b3JhZ2UoZ2w6
OkltYWdlSW5kZXg6Ok1ha2UyRCgwKSwgbVRleFN0b3JhZ2UpOworICAgICAgICB9CisKICAgICAg
ICAgaWYgKChsZXZlbCA+PSBzdG9yYWdlTGV2ZWxzICYmIHN0b3JhZ2VMZXZlbHMgIT0gMCkgfHwK
ICAgICAgICAgICAgIHNpemUud2lkdGggIT0gc3RvcmFnZVdpZHRoIHx8CiAgICAgICAgICAgICBz
aXplLmhlaWdodCAhPSBzdG9yYWdlSGVpZ2h0IHx8CiAgICAgICAgICAgICBpbnRlcm5hbGZvcm1h
dCAhPSBzdG9yYWdlRm9ybWF0KSAgIC8vIERpc2NhcmQgbWlzbWF0Y2hlZCBzdG9yYWdlCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVOVEFUSU9O
X01BWF9URVhUVVJFX0xFVkVMUzsgaSsrKQorICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKyspCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgbUltYWdlQXJyYXlbaV0tPm1hcmtEaXJ0eSgpOwogICAg
ICAgICAgICAgfQpAQCAtMTIyMiw2ICsxMjcwLDkgQEAKICAgICAgICAgICAgIG1EaXJ0eUltYWdl
cyA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBDYW4ndCBiZSBhbiBFR0wgaW1h
Z2UgdGFyZ2V0IGFmdGVyIGJlaW5nIHJlZGVmaW5lZAorICAgIG1FR0xJbWFnZVRhcmdldCA9IGZh
bHNlOwogfQogCiBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yIFRleHR1cmVEM0RfMkQ6OmltYWdlSXRl
cmF0b3IoKSBjb25zdApAQCAtMTMwMiwxNyArMTM1MywyMyBAQAogICAgIHJldHVybiBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKGdldEludGVybmFsRm9ybWF0KGxldmVsLCBsYXllcikpLmRlcHRo
Qml0cyA+IDA7CiB9CiAKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldEVHTEltYWdlVGFy
Z2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKQoreworICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKIGds
OjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpw
aXhlbHMpCiB7CiAgICAgQVNTRVJUKHNpemUuZGVwdGggPT0gMSk7CiAKICAgICBHTGVudW0gc2l6
ZWRJbnRlcm5hbEZvcm1hdCA9IGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVybmFsRm9y
bWF0LCB0eXBlKTsKLSAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpN
YWtlQ3ViZSh0YXJnZXQsIGxldmVsKTsKKyAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCAgICAgICA9
IGdsOjpJbWFnZUluZGV4OjpNYWtlQ3ViZSh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZl
bCkpOwogCi0gICAgcmVkZWZpbmVJbWFnZShpbmRleC5sYXllckluZGV4LCBsZXZlbCwgc2l6ZWRJ
bnRlcm5hbEZvcm1hdCwgc2l6ZSk7CisgICAgcmVkZWZpbmVJbWFnZShpbmRleC5sYXllckluZGV4
LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBzaXplZEludGVybmFsRm9ybWF0LCBzaXplKTsK
IAotICAgIHJldHVybiBUZXh0dXJlRDNEOjpzZXRJbWFnZShpbmRleCwgdHlwZSwgdW5wYWNrLCBw
aXhlbHMsIDApOworICAgIHJldHVybiBzZXRJbWFnZUltcGwoaW5kZXgsIHR5cGUsIHVucGFjaywg
cGl4ZWxzLCAwKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0U3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwKQEAgLTEzMjAsMzAgKzEzNzcsMzAgQEAKIHsKICAgICBBU1NF
UlQoYXJlYS5kZXB0aCA9PSAxICYmIGFyZWEueiA9PSAwKTsKIAotICAgIGdsOjpJbWFnZUluZGV4
IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgbGV2ZWwpOworICAgIGds
OjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgc3Rh
dGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSk7CiAgICAgcmV0dXJuIFRleHR1cmVEM0Q6OnN1YkltYWdl
KGluZGV4LCBhcmVhLCBmb3JtYXQsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCAwKTsKIH0KIAogZ2w6
OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAq
cGl4ZWxzKQogewogICAgIEFTU0VSVChzaXplLmRlcHRoID09IDEpOwogCiAgICAgLy8gY29tcHJl
c3NlZCBmb3JtYXRzIGRvbid0IGhhdmUgc2VwYXJhdGUgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0cy0t
IHdlIGNhbiBqdXN0IHVzZSB0aGUgY29tcHJlc3NlZCBmb3JtYXQgZGlyZWN0bHkKICAgICBzaXpl
X3QgZmFjZUluZGV4ID0gZ2w6OkN1YmVNYXBUZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4KHRhcmdl
dCk7CiAKLSAgICByZWRlZmluZUltYWdlKGZhY2VJbmRleCwgbGV2ZWwsIGludGVybmFsRm9ybWF0
LCBzaXplKTsKKyAgICByZWRlZmluZUltYWdlKHN0YXRpY19jYXN0PGludD4oZmFjZUluZGV4KSwg
c3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgaW50ZXJuYWxGb3JtYXQsIHNpemUpOwogCi0gICAg
Z2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1YmUodGFyZ2V0LCBs
ZXZlbCk7Ci0gICAgcmV0dXJuIFRleHR1cmVEM0Q6OnNldENvbXByZXNzZWRJbWFnZShpbmRleCwg
dW5wYWNrLCBwaXhlbHMsIDApOworICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdl
SW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSk7CisgICAg
cmV0dXJuIHNldENvbXByZXNzZWRJbWFnZUltcGwoaW5kZXgsIHVucGFjaywgcGl4ZWxzLCAwKTsK
IH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVChhcmVhLmRlcHRoID09IDEgJiYgYXJlYS56ID09
IDApOwogCi0gICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1
YmUodGFyZ2V0LCBsZXZlbCk7CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJ
bmRleDo6TWFrZUN1YmUodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpKTsKIAogICAg
IGdsOjpFcnJvciBlcnJvciA9IFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChpbmRleCwg
YXJlYSwgZm9ybWF0LCB1bnBhY2ssIHBpeGVscywgMCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKQEAgLTEzNTQsMTQgKzE0MTEsMTkgQEAKICAgICByZXR1cm4gY29tbWl0UmVnaW9uKGluZGV4
LCBhcmVhKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6Y29weUltYWdlKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwg
R0xlbnVtIGludGVybmFsRm9ybWF0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6Y29weUlt
YWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCiB7Ci0gICAg
c2l6ZV90IGZhY2VJbmRleCA9IGdsOjpDdWJlTWFwVGV4dHVyZVRhcmdldFRvTGF5ZXJJbmRleCh0
YXJnZXQpOworICAgIGludCBmYWNlSW5kZXggICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8aW50
PihnbDo6Q3ViZU1hcFRleHR1cmVUYXJnZXRUb0xheWVySW5kZXgodGFyZ2V0KSk7CiAgICAgR0xl
bnVtIHNpemVkSW50ZXJuYWxGb3JtYXQgPSBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRl
cm5hbEZvcm1hdCwgR0xfVU5TSUdORURfQllURSk7CiAKKyAgICBHTGludCBsZXZlbCA9IHN0YXRp
Y19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKKwogICAgIGdsOjpFeHRlbnRzIHNpemUoc291cmNl
QXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEpOwotICAgIHJlZGVmaW5lSW1hZ2UoZmFj
ZUluZGV4LCBsZXZlbCwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwgc2l6ZSk7CisgICAgcmVkZWZpbmVJ
bWFnZShzdGF0aWNfY2FzdDxpbnQ+KGZhY2VJbmRleCksIGxldmVsLCBzaXplZEludGVybmFsRm9y
bWF0LCBzaXplKTsKIAogICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6
Ok1ha2VDdWJlKHRhcmdldCwgbGV2ZWwpOwogICAgIGdsOjpPZmZzZXQgZGVzdE9mZnNldCgwLCAw
LCAwKTsKQEAgLTEzNzAsNyArMTQzMiw4IEBACiAgICAgLy8gc28gd2Ugc2hvdWxkIHVzZSB0aGUg
bm9uLXJlbmRlcmluZyBjb3B5IHBhdGguCiAgICAgaWYgKCFjYW5DcmVhdGVSZW5kZXJUYXJnZXRG
b3JJbWFnZShpbmRleCkgfHwgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RX
b3JrYXJvdW5kKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUltYWdlQXJyYXlb
ZmFjZUluZGV4XVtsZXZlbF0tPmNvcHkoZGVzdE9mZnNldCwgc291cmNlQXJlYSwgc291cmNlKTsK
KyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgICAgIG1JbWFnZUFycmF5W2ZhY2VJ
bmRleF1bbGV2ZWxdLT5jb3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEs
IHNvdXJjZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTE0MDMsMTggKzE0NjYsMjMgQEAKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6
Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9mZnNl
dCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKK2dsOjpFcnJv
ciBUZXh0dXJlRDNEX0N1YmU6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKIHsKLSAgICBzaXplX3QgZmFj
ZUluZGV4ID0gZ2w6OkN1YmVNYXBUZXh0dXJlVGFyZ2V0VG9MYXllckluZGV4KHRhcmdldCk7Cisg
ICAgaW50IGZhY2VJbmRleCA9IHN0YXRpY19jYXN0PGludD4oZ2w6OkN1YmVNYXBUZXh0dXJlVGFy
Z2V0VG9MYXllckluZGV4KHRhcmdldCkpOwogCisgICAgR0xpbnQgbGV2ZWwgICAgICAgICAgPSBz
dGF0aWNfY2FzdDxHTGludD4oaW1hZ2VMZXZlbCk7CiAgICAgZ2w6OkltYWdlSW5kZXggaW5kZXgg
PSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1YmUodGFyZ2V0LCBsZXZlbCk7CiAKICAgICAvLyBJZiB0
aGUgemVybyBtYXggTE9EIHdvcmthcm91bmQgaXMgYWN0aXZlLCB0aGVuIHdlIGNhbid0IHNhbXBs
ZSBmcm9tIGluZGl2aWR1YWwgbGF5ZXJzIG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBzaGFkZXJzLAog
ICAgIC8vIHNvIHdlIHNob3VsZCB1c2UgdGhlIG5vbi1yZW5kZXJpbmcgY29weSBwYXRoLgogICAg
IGlmICghY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgpIHx8IG1SZW5kZXJlci0+
Z2V0V29ya2Fyb3VuZHMoKS56ZXJvTWF4TG9kV29ya2Fyb3VuZCkKICAgICB7Ci0gICAgICAgIGds
OjpFcnJvciBlcnJvciA9IG1JbWFnZUFycmF5W2ZhY2VJbmRleF1bbGV2ZWxdLT5jb3B5KGRlc3RP
ZmZzZXQsIHNvdXJjZUFyZWEsIHNvdXJjZSk7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9Cisg
ICAgICAgICAgICBtSW1hZ2VBcnJheVtmYWNlSW5kZXhdW2xldmVsXS0+Y29weUZyb21GcmFtZWJ1
ZmZlcihkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBzb3VyY2UpOwogICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0xNDY0
LDcgKzE1MzIsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChpbnQgbGV2ZWwgPSBs
ZXZlbHM7IGxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2
ZWwrKykKKyAgICBmb3IgKHNpemVfdCBsZXZlbCA9IGxldmVsczsgbGV2ZWwgPCBnbDo6SU1QTEVN
RU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBsZXZlbCsrKQogICAgIHsKICAgICAgICAgZm9y
IChpbnQgZmFjZUluZGV4ID0gMDsgZmFjZUluZGV4IDwgNjsgZmFjZUluZGV4KyspCiAgICAgICAg
IHsKQEAgLTE0NzUsNyArMTU0Myw4IEBACiAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBWZXJpZnkg
c3RvcmFnZSBjcmVhdGlvbiBoYWQgbm8gZXJyb3JzCiAgICAgYm9vbCByZW5kZXJUYXJnZXQgPSBJ
c1JlbmRlclRhcmdldFVzYWdlKG1Vc2FnZSk7CiAKLSAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFn
ZSA9IG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKGludGVybmFsRm9ybWF0LCBy
ZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsIGxldmVscywgZmFsc2UpOworICAgIFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUN1YmUoCisgICAg
ICAgIGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsIHN0YXRpY19jYXN0
PGludD4obGV2ZWxzKSwgZmFsc2UpOwogCiAgICAgZ2w6OkVycm9yIGVycm9yID0gc2V0Q29tcGxl
dGVUZXhTdG9yYWdlKHN0b3JhZ2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCkBAIC0xNTQ5
LDExICsxNjE4LDYgQEAKICAgICB9CiB9CiAKLXVuc2lnbmVkIGludCBUZXh0dXJlRDNEX0N1YmU6
OmdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCi17Ci0g
ICAgcmV0dXJuICghZW5zdXJlUmVuZGVyVGFyZ2V0KCkuaXNFcnJvcigpID8gbVRleFN0b3JhZ2Ut
PmdldFJlbmRlclRhcmdldFNlcmlhbChpbmRleCkgOiAwKTsKLX0KLQogZ2w6OkVycm9yIFRleHR1
cmVEM0RfQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwg
UmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7CiAgICAgQVNTRVJUKGdsOjpJc0N1YmVNYXBUZXh0
dXJlVGFyZ2V0KGluZGV4LnR5cGUpKTsKQEAgLTE4OTIsMTIgKzE5NTYsMjUgQEAKICAgICByZXR1
cm4gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRJbnRlcm5hbEZvcm1hdChsZXZlbCkpLmRl
cHRoQml0cyA+IDA7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRJbWFnZShHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6
OkV4dGVudHMgJnNpemUsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
IGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRFR0xJ
bWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkKIHsKKyAgICBVTlJF
QUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwor
fQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sK
ICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpOwogICAgIEdMZW51bSBzaXplZElu
dGVybmFsRm9ybWF0ID0gZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQs
IHR5cGUpOwogCisgICAgR0xpbnQgbGV2ZWwgPSBzdGF0aWNfY2FzdDxHTGludD4oaW1hZ2VMZXZl
bCk7CiAgICAgcmVkZWZpbmVJbWFnZShsZXZlbCwgc2l6ZWRJbnRlcm5hbEZvcm1hdCwgc2l6ZSk7
CiAKICAgICBib29sIGZhc3RVbnBhY2tlZCA9IGZhbHNlOwpAQCAtMTkzMSw3ICsyMDA4LDcgQEAK
IAogICAgIGlmICghZmFzdFVucGFja2VkKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9y
ID0gVGV4dHVyZUQzRDo6c2V0SW1hZ2UoaW5kZXgsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCAwKTsK
KyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gc2V0SW1hZ2VJbXBsKGluZGV4LCB0eXBlLCB1bnBh
Y2ssIHBpeGVscywgMCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTE5NDEsMTEgKzIwMTgsMTcgQEAKICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Rf
M0Q6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJv
eCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29u
c3QgdWludDhfdCAqcGl4ZWxzKQorZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldFN1YkltYWdl
KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGltYWdlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xf
VEVYVFVSRV8zRCk7CiAKKyAgICBHTGludCBsZXZlbCAgICAgICAgICA9IHN0YXRpY19jYXN0PEdM
aW50PihpbWFnZUxldmVsKTsKICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUlu
ZGV4OjpNYWtlM0QobGV2ZWwpOwogCiAgICAgLy8gQXR0ZW1wdCBhIGZhc3QgZ3B1IGNvcHkgb2Yg
dGhlIHBpeGVsIGRhdGEgdG8gdGhlIHN1cmZhY2UgaWYgdGhlIGFwcCBib3VuZCBhbiB1bnBhY2sg
YnVmZmVyCkBAIC0xOTY4LDI0ICsyMDUxLDMwIEBACiAgICAgfQogfQogCi1nbDo6RXJyb3IgVGV4
dHVyZUQzRF8zRDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZl
bCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQorZ2w6OkVycm9yIFRleHR1
cmVEM0RfM0Q6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxz
KQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8zRCk7CiAKKyAgICBHTGludCBs
ZXZlbCA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICAvLyBjb21wcmVzc2Vk
IGZvcm1hdHMgZG9uJ3QgaGF2ZSBzZXBhcmF0ZSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLS0gd2Ug
Y2FuIGp1c3QgdXNlIHRoZSBjb21wcmVzc2VkIGZvcm1hdCBkaXJlY3RseQogICAgIHJlZGVmaW5l
SW1hZ2UobGV2ZWwsIGludGVybmFsRm9ybWF0LCBzaXplKTsKIAogICAgIGdsOjpJbWFnZUluZGV4
IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UzRChsZXZlbCk7Ci0gICAgcmV0dXJuIFRleHR1
cmVEM0Q6OnNldENvbXByZXNzZWRJbWFnZShpbmRleCwgdW5wYWNrLCBwaXhlbHMsIDApOworICAg
IHJldHVybiBzZXRDb21wcmVzc2VkSW1hZ2VJbXBsKGluZGV4LCB1bnBhY2ssIHBpeGVscywgMCk7
CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpOwogCi0gICAg
Z2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsKTsKKyAg
ICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlM0Qoc3RhdGljX2Nh
c3Q8R0xpbnQ+KGxldmVsKSk7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gVGV4dHVyZUQzRDo6c3Vi
SW1hZ2VDb21wcmVzc2VkKGluZGV4LCBhcmVhLCBmb3JtYXQsIHVucGFjaywgcGl4ZWxzLCAwKTsK
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKQEAgLTIwMDIsMTYgKzIwOTEsMjAgQEAK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29weWluZyAzRCB0
ZXh0dXJlcyBpcyB1bmltcGxlbWVudGVkLiIpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8z
RDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKK2dsOjpF
cnJvciBUZXh0dXJlRDNEXzNEOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0g
R0xfVEVYVFVSRV8zRCk7CiAKKyAgICBHTGludCBsZXZlbCAgICAgICAgICA9IHN0YXRpY19jYXN0
PEdMaW50PihpbWFnZUxldmVsKTsKICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFn
ZUluZGV4OjpNYWtlM0QobGV2ZWwpOwogCiAgICAgaWYgKGNhbkNyZWF0ZVJlbmRlclRhcmdldEZv
ckltYWdlKGluZGV4KSkKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZUFy
cmF5W2xldmVsXS0+Y29weShkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBzb3VyY2UpOworICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBtSW1hZ2VBcnJheVtsZXZlbF0tPmNvcHlGcm9tRnJhbWVidWZm
ZXIoZGVzdE9mZnNldCwgc291cmNlQXJlYSwgc291cmNlKTsKICAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjA2MCwx
NCArMjE1MywxNiBAQAogICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKEdMX1RF
WFRVUkVfM0QsIGludGVybmFsRm9ybWF0LCBsZXZlbFNpemUsIHRydWUpOwogICAgIH0KIAotICAg
IGZvciAoaW50IGxldmVsID0gbGV2ZWxzOyBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFM7IGxldmVsKyspCisgICAgZm9yIChzaXplX3QgbGV2ZWwgPSBsZXZlbHM7
IGxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykK
ICAgICB7CiAgICAgICAgIG1JbWFnZUFycmF5W2xldmVsXS0+cmVkZWZpbmUoR0xfVEVYVFVSRV8z
RCwgR0xfTk9ORSwgZ2w6OkV4dGVudHMoMCwgMCwgMCksIHRydWUpOwogICAgIH0KIAogICAgIC8v
IFRPRE8oZ2VvZmZsYW5nKTogVmVyaWZ5IHN0b3JhZ2UgY3JlYXRpb24gaGFkIG5vIGVycm9ycwog
ICAgIGJvb2wgcmVuZGVyVGFyZ2V0ID0gSXNSZW5kZXJUYXJnZXRVc2FnZShtVXNhZ2UpOwotICAg
IFRleHR1cmVTdG9yYWdlICpzdG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFn
ZTNEKGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0
LCBzaXplLmRlcHRoLCBsZXZlbHMpOworICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlID0KKyAg
ICAgICAgbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZTNEKGludGVybmFsRm9ybWF0LCBy
ZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS5kZXB0aCwgc3RhdGljX2Nhc3Q8aW50PihsZXZl
bHMpKTsKIAogICAgIGdsOjpFcnJvciBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShzdG9y
YWdlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQpAQCAtMjExMiwxMSArMjIwNyw2IEBACiAg
ICAgfQogfQogCi11bnNpZ25lZCBpbnQgVGV4dHVyZUQzRF8zRDo6Z2V0UmVuZGVyVGFyZ2V0U2Vy
aWFsKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkKLXsKLSAgICByZXR1cm4gKCFlbnN1cmVS
ZW5kZXJUYXJnZXQoKS5pc0Vycm9yKCkgPyBtVGV4U3RvcmFnZS0+Z2V0UmVuZGVyVGFyZ2V0U2Vy
aWFsKGluZGV4KSA6IDApOwotfQotCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6Z2V0UmVuZGVy
VGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0
UlQpCiB7CiAgICAgLy8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZApA
QCAtMjQyNSwyMyArMjUxNSwzNyBAQAogICAgIHJldHVybiBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGdldEludGVybmFsRm9ybWF0KGxldmVsKSkuZGVwdGhCaXRzID4gMDsKIH0KIAotZ2w6OkVy
cm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldEVHTEltYWdlVGFyZ2V0
KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKQogeworICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpF
cnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRz
ICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RF
WFRVUkVfMkRfQVJSQVkpOwogCiAgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQgPSBnbDo6
R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7CiAKKyAgICBHTGlu
dCBsZXZlbCA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICByZWRlZmluZUlt
YWdlKGxldmVsLCBzaXplZEludGVybmFsRm9ybWF0LCBzaXplKTsKIAogICAgIGNvbnN0IGdsOjpJ
bnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6
ZWRJbnRlcm5hbEZvcm1hdCk7Ci0gICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggPSBmb3JtYXRJ
bmZvLmNvbXB1dGVEZXB0aFBpdGNoKHR5cGUsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCB1bnBh
Y2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoKTsKKyAgICBHTHNpemVpIGlucHV0RGVwdGhQ
aXRjaCA9IGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goCisgICAgICAgIHR5cGUsIHNpemUu
d2lkdGgsIHNpemUuaGVpZ2h0LCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoLCB1
bnBhY2suaW1hZ2VIZWlnaHQpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplLmRlcHRo
OyBpKyspCiAgICAgewogICAgICAgICBjb25zdCBwdHJkaWZmX3QgbGF5ZXJPZmZzZXQgPSAoaW5w
dXREZXB0aFBpdGNoICogaSk7CiAgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6Oklt
YWdlSW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBpKTsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9y
ID0gVGV4dHVyZUQzRDo6c2V0SW1hZ2UoaW5kZXgsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCBsYXll
ck9mZnNldCk7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHNldEltYWdlSW1wbChpbmRleCwg
dHlwZSwgdW5wYWNrLCBwaXhlbHMsIGxheWVyT2Zmc2V0KTsKICAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjQ1MSwx
MyArMjU1NSwxOSBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1n
bDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBz
aXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQorZ2w6OkVy
cm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAm
YXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJUKHRhcmdl
dCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZKTsKLQorICAgIEdMaW50IGxldmVsICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICBjb25z
dCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGdldEludGVybmFsRm9ybWF0KGxldmVsKSk7Ci0gICAgR0xzaXplaSBpbnB1dERlcHRoUGl0
Y2ggPSBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKHR5cGUsIGFyZWEud2lkdGgsIGFyZWEu
aGVpZ2h0LCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoKTsKKyAgICBHTHNpemVp
IGlucHV0RGVwdGhQaXRjaCA9IGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goCisgICAgICAg
IHR5cGUsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2su
cm93TGVuZ3RoLCB1bnBhY2suaW1hZ2VIZWlnaHQpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBhcmVhLmRlcHRoOyBpKyspCiAgICAgewpAQCAtMjQ3NywyMyArMjU4NywzMCBAQAogICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8y
REFycmF5OjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBUZXh0
dXJlRDNEXzJEQXJyYXk6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVCh0YXJn
ZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSk7CiAKKyAgICBHTGludCBsZXZlbCA9IHN0YXRpY19j
YXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICAvLyBjb21wcmVzc2VkIGZvcm1hdHMgZG9uJ3Qg
aGF2ZSBzZXBhcmF0ZSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLS0gd2UgY2FuIGp1c3QgdXNlIHRo
ZSBjb21wcmVzc2VkIGZvcm1hdCBkaXJlY3RseQogICAgIHJlZGVmaW5lSW1hZ2UobGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBzaXplKTsKIAogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9y
bWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwotICAg
IEdMc2l6ZWkgaW5wdXREZXB0aFBpdGNoID0gZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaChH
TF9VTlNJR05FRF9CWVRFLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgMSwgMCk7CisgICAgR0xz
aXplaSBpbnB1dERlcHRoUGl0Y2ggPQorICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBp
dGNoKEdMX1VOU0lHTkVEX0JZVEUsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCAxLCAwLCAwKTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZS5kZXB0aDsgaSsrKQogICAgIHsKICAgICAg
ICAgY29uc3QgcHRyZGlmZl90IGxheWVyT2Zmc2V0ID0gKGlucHV0RGVwdGhQaXRjaCAqIGkpOwog
CiAgICAgICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFy
cmF5KGxldmVsLCBpKTsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gVGV4dHVyZUQzRDo6c2V0
Q29tcHJlc3NlZEltYWdlKGluZGV4LCB1bnBhY2ssIHBpeGVscywgbGF5ZXJPZmZzZXQpOworICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRDb21wcmVzc2VkSW1hZ2VJbXBsKGluZGV4LCB1bnBh
Y2ssIHBpeGVscywgbGF5ZXJPZmZzZXQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0yNTA0LDEyICsyNjIxLDEz
IEBACiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldENvbXByZXNzZWRTdWJJ
bWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdM
ZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhf
dCAqcGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNp
emUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RF
WFRVUkVfMkRfQVJSQVkpOwogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJ
bmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhmb3JtYXQpOwotICAgIEdMc2l6ZWkgaW5w
dXREZXB0aFBpdGNoID0gZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQaXRjaChHTF9VTlNJR05FRF9C
WVRFLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgMSwgMCk7CisgICAgR0xzaXplaSBpbnB1dERl
cHRoUGl0Y2ggPQorICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKEdMX1VOU0lH
TkVEX0JZVEUsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxLCAwLCAwKTsKIAogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgYXJlYS5kZXB0aDsgaSsrKQogICAgIHsKQEAgLTI1MTgsNyArMjYzNiw3
IEBACiAKICAgICAgICAgZ2w6OkJveCBsYXllckFyZWEoYXJlYS54LCBhcmVhLnksIDAsIGFyZWEu
d2lkdGgsIGFyZWEuaGVpZ2h0LCAxKTsKIAotICAgICAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9
IGdsOjpJbWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgbGF5ZXIpOworICAgICAgICBnbDo6
SW1hZ2VJbmRleCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkRBcnJheShzdGF0aWNfY2Fz
dDxHTGludD4obGV2ZWwpLCBsYXllcik7CiAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IFRleHR1
cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChpbmRleCwgbGF5ZXJBcmVhLCBmb3JtYXQsIHVucGFj
aywgcGl4ZWxzLCBsYXllck9mZnNldCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgICAgIHsKQEAgLTI1NDIsMTcgKzI2NjAsMjIgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ29weWluZyAyRCBhcnJheSB0ZXh0dXJlcyBpcyB1bmltcGxl
bWVudGVkLiIpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5Ojpjb3B5U3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zm
c2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorZ2w6OkVycm9yIFRleHR1cmVE
M0RfMkRBcnJheTo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIEFTU0VS
VCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSk7CiAKKyAgICBHTGludCBsZXZlbCAgICAg
ICAgICA9IHN0YXRpY19jYXN0PEdMaW50PihpbWFnZUxldmVsKTsKICAgICBnbDo6SW1hZ2VJbmRl
eCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgZGVzdE9mZnNldC56
KTsKIAogICAgIGlmIChjYW5DcmVhdGVSZW5kZXJUYXJnZXRGb3JJbWFnZShpbmRleCkpCiAgICAg
ewogICAgICAgICBnbDo6T2Zmc2V0IGRlc3RMYXllck9mZnNldChkZXN0T2Zmc2V0LngsIGRlc3RP
ZmZzZXQueSwgMCk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZUFycmF5W2xldmVs
XVtkZXN0T2Zmc2V0LnpdLT5jb3B5KGRlc3RMYXllck9mZnNldCwgc291cmNlQXJlYSwgc291cmNl
KTsKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUltYWdlQXJyYXlbbGV2ZWxdW2Rlc3RPZmZz
ZXQuel0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdExheWVyT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzb3VyY2VBcmVhLCBzb3VyY2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0yNjE2LDcgKzI3
MzksOSBAQAogCiAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBWZXJpZnkgc3RvcmFnZSBjcmVhdGlv
biBoYWQgbm8gZXJyb3JzCiAgICAgYm9vbCByZW5kZXJUYXJnZXQgPSBJc1JlbmRlclRhcmdldFVz
YWdlKG1Vc2FnZSk7Ci0gICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UgPSBtUmVuZGVyZXItPmNy
ZWF0ZVRleHR1cmVTdG9yYWdlMkRBcnJheShpbnRlcm5hbEZvcm1hdCwgcmVuZGVyVGFyZ2V0LCBz
aXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCwgbGV2ZWxzKTsKKyAgICBUZXh0dXJl
U3RvcmFnZSAqc3RvcmFnZSA9CisgICAgICAgIG1SZW5kZXJlci0+Y3JlYXRlVGV4dHVyZVN0b3Jh
Z2UyREFycmF5KGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHNpemUud2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUuaGVpZ2h0LCBz
aXplLmRlcHRoLCBzdGF0aWNfY2FzdDxpbnQ+KGxldmVscykpOwogCiAgICAgZ2w6OkVycm9yIGVy
cm9yID0gc2V0Q29tcGxldGVUZXhTdG9yYWdlKHN0b3JhZ2UpOwogICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCkBAIC0yNjY2LDExICsyNzkxLDYgQEAKICAgICB9CiB9CiAKLXVuc2lnbmVkIGludCBU
ZXh0dXJlRDNEXzJEQXJyYXk6OmdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmaW5kZXgpCi17Ci0gICAgcmV0dXJuICghZW5zdXJlUmVuZGVyVGFyZ2V0KCkuaXNFcnJv
cigpID8gbVRleFN0b3JhZ2UtPmdldFJlbmRlclRhcmdldFNlcmlhbChpbmRleCkgOiAwKTsKLX0K
LQogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7CiAgICAgLy8g
ZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHRleHR1cmUgaXMgY3JlYXRlZApAQCAtMjg4MSwyMSArMzAw
MSwzMCBAQAogICAgIGNvbnN0IGludCBzdG9yYWdlRGVwdGggPSBnZXRMYXllckNvdW50KDApOwog
ICAgIGNvbnN0IEdMZW51bSBzdG9yYWdlRm9ybWF0ID0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3Jt
YXQoKTsKIAotICAgIGZvciAoaW50IGxheWVyID0gMDsgbGF5ZXIgPCBtTGF5ZXJDb3VudHNbbGV2
ZWxdOyBsYXllcisrKQorICAgIC8vIE9ubHkgcmVhbGxvY2F0ZSB0aGUgbGF5ZXJzIGlmIHRoZSBz
aXplIGRvZXNuJ3QgbWF0Y2gKKyAgICBpZiAoc2l6ZS5kZXB0aCAhPSBtTGF5ZXJDb3VudHNbbGV2
ZWxdKQogICAgIHsKLSAgICAgICAgZGVsZXRlIG1JbWFnZUFycmF5W2xldmVsXVtsYXllcl07Cisg
ICAgICAgIGZvciAoaW50IGxheWVyID0gMDsgbGF5ZXIgPCBtTGF5ZXJDb3VudHNbbGV2ZWxdOyBs
YXllcisrKQorICAgICAgICB7CisgICAgICAgICAgICBTYWZlRGVsZXRlKG1JbWFnZUFycmF5W2xl
dmVsXVtsYXllcl0pOworICAgICAgICB9CisgICAgICAgIFNhZmVEZWxldGVBcnJheShtSW1hZ2VB
cnJheVtsZXZlbF0pOworICAgICAgICBtTGF5ZXJDb3VudHNbbGV2ZWxdID0gc2l6ZS5kZXB0aDsK
KworICAgICAgICBpZiAoc2l6ZS5kZXB0aCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1J
bWFnZUFycmF5W2xldmVsXSA9IG5ldyBJbWFnZUQzRCpbc2l6ZS5kZXB0aF07CisgICAgICAgICAg
ICBmb3IgKGludCBsYXllciA9IDA7IGxheWVyIDwgbUxheWVyQ291bnRzW2xldmVsXTsgbGF5ZXIr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF1bbGF5
ZXJdID0gbVJlbmRlcmVyLT5jcmVhdGVJbWFnZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgfQotICAgIGRlbGV0ZVtdIG1JbWFnZUFycmF5W2xldmVsXTsKLSAgICBtSW1hZ2VBcnJh
eVtsZXZlbF0gPSBOVUxMOwotICAgIG1MYXllckNvdW50c1tsZXZlbF0gPSBzaXplLmRlcHRoOwog
CiAgICAgaWYgKHNpemUuZGVwdGggPiAwKQogICAgIHsKLSAgICAgICAgbUltYWdlQXJyYXlbbGV2
ZWxdID0gbmV3IEltYWdlRDNEKltzaXplLmRlcHRoXSgpOwotCiAgICAgICAgIGZvciAoaW50IGxh
eWVyID0gMDsgbGF5ZXIgPCBtTGF5ZXJDb3VudHNbbGV2ZWxdOyBsYXllcisrKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtSW1hZ2VBcnJheVtsZXZlbF1bbGF5ZXJdID0gbVJlbmRlcmVyLT5jcmVh
dGVJbWFnZSgpOwogICAgICAgICAgICAgbUltYWdlQXJyYXlbbGV2ZWxdW2xheWVyXS0+cmVkZWZp
bmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgaW50ZXJuYWxmb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0ZW50cyhzaXplLndpZHRoLCBz
aXplLmhlaWdodCwgMSksIGZhbHNlKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9U
ZXh0dXJlRDNELmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMCw5ICsyMCw4IEBACiAKIG5hbWVzcGFjZSByeAogewotCitjbGFzcyBFR0xJbWFnZUQzRDsK
IGNsYXNzIEltYWdlRDNEOwotY2xhc3MgSW1hZ2VEM0Q7CiBjbGFzcyBSZW5kZXJlckQzRDsKIGNs
YXNzIFJlbmRlclRhcmdldEQzRDsKIGNsYXNzIFRleHR1cmVTdG9yYWdlOwpAQCAtNTAsNyArNDks
NiBAQAogICAgIGJvb2wgaXNJbW11dGFibGUoKSBjb25zdCB7IHJldHVybiBtSW1tdXRhYmxlOyB9
CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgPSAwOwotICAgIHZpcnR1YWwg
dW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW5kZXgpID0gMDsKIAogICAgIC8vIFJldHVybnMgYW4gaXRlcmF0b3Igb3ZlciBhbGwgIkltYWdl
cyIgZm9yIHRoaXMgcGFydGljdWxhciBUZXh0dXJlLgogICAgIHZpcnR1YWwgZ2w6OkltYWdlSW5k
ZXhJdGVyYXRvciBpbWFnZUl0ZXJhdG9yKCkgY29uc3QgPSAwOwpAQCAtNjAsNyArNTgsNyBAQAog
ICAgIHZpcnR1YWwgZ2w6OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50
IGxheWVyKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWRJbmRleChjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGdlbmVyYXRlTWlwbWFwcyhjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpOwor
ICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4
dHVyZVN0YXRlKSBvdmVycmlkZTsKICAgICBUZXh0dXJlU3RvcmFnZSAqZ2V0U3RvcmFnZSgpOwog
ICAgIEltYWdlRDNEICpnZXRCYXNlTGV2ZWxJbWFnZSgpIGNvbnN0OwogCkBAIC02OCwxMyArNjYs
MTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CiAKICAgcHJvdGVjdGVk
OgotICAgIGdsOjpFcnJvciBzZXRJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIEdM
ZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgIHB0cmRpZmZfdCBsYXllck9mZnNldCk7CisgICAgZ2w6OkVycm9yIHNldEltYWdlSW1wbChj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGF5ZXJP
ZmZzZXQpOwogICAgIGdsOjpFcnJvciBzdWJJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBj
b25zdCB1aW50OF90ICpwaXhlbHMsIHB0cmRpZmZfdCBsYXllck9mZnNldCk7Ci0gICAgZ2w6OkVy
cm9yIHNldENvbXByZXNzZWRJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMsIHB0cmRpZmZfdCBsYXllck9mZnNldCk7Cisg
ICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZUltcGwoY29uc3QgZ2w6OkltYWdlSW5kZXgg
JmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB0cmRpZmZfdCBsYXllck9mZnNldCk7CiAgICAgZ2w6OkVycm9yIHN1YkltYWdl
Q29tcHJlc3NlZChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMsIHB0
cmRpZmZfdCBsYXllck9mZnNldCk7CiAgICAgYm9vbCBpc0Zhc3RVbnBhY2thYmxlKGNvbnN0IGds
OjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0KTsK
QEAgLTEzNCw5ICsxMzYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRl
OwogCiAgICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXpl
X3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKICAg
ICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
IGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3Qg
aW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCiAgICAgZ2w6OkVy
cm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKQEAgLTE0
OCw4ICsxNTAsOSBAQAogICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNl
ICpzdXJmYWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRleEltYWdlKCk7CiAKKyAgICBn
bDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1h
Z2UpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpOwotICAg
IHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgpOwogCiAgICAgdmlydHVhbCBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yIGlt
YWdlSXRlcmF0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGdsOjpJbWFnZUluZGV4IGdldEltYWdl
SW5kZXgoR0xpbnQgbWlwLCBHTGludCBsYXllcikgY29uc3Q7CkBAIC0xNjksOCArMTcyLDEyIEBA
CiAKICAgICBnbDo6RXJyb3IgdXBkYXRlU3RvcmFnZUxldmVsKGludCBsZXZlbCk7CiAKLSAgICB2
b2lkIHJlZGVmaW5lSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgY29u
c3QgZ2w6OkV4dGVudHMgJnNpemUpOworICAgIHZvaWQgcmVkZWZpbmVJbWFnZShzaXplX3QgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZm9yY2VSZWxlYXNlKTsKIAorICAgIGJvb2wgbUVHTEltYWdlVGFyZ2V0
OwogICAgIEltYWdlRDNEICptSW1hZ2VBcnJheVtnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRV
UkVfTEVWRUxTXTsKIH07CiAKQEAgLTE5Nyw5ICsyMDQsOSBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90
ICpwaXhlbHMpIG92ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShH
TGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3Qg
Z2w6OkV4dGVudHMgJnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAqcGl4
ZWxzKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJy
aWRlOwogCiAgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2
ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNl
KSBvdmVycmlkZTsKQEAgLTIxMSw4ICsyMTgsOSBAQAogICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4
SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRl
eEltYWdlKCk7CiAKKyAgICBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdl
dCwgZWdsOjpJbWFnZSAqaW1hZ2UpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0
RDNEICoqb3V0UlQpOwotICAgIHZpcnR1YWwgdW5zaWduZWQgaW50IGdldFJlbmRlclRhcmdldFNl
cmlhbChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpOwogCiAgICAgdmlydHVhbCBnbDo6SW1h
Z2VJbmRleEl0ZXJhdG9yIGltYWdlSXRlcmF0b3IoKSBjb25zdDsKICAgICB2aXJ0dWFsIGdsOjpJ
bWFnZUluZGV4IGdldEltYWdlSW5kZXgoR0xpbnQgbWlwLCBHTGludCBsYXllcikgY29uc3Q7CkBA
IC0yNTksOSArMjY3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsK
IAogICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
IHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAgICAg
Z2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2
ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBj
b25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGlt
YWdlU2l6ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJv
ciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CkBAIC0yNzMs
OCArMjgxLDkgQEAKICAgICB2aXJ0dWFsIHZvaWQgYmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAq
c3VyZmFjZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VUZXhJbWFnZSgpOwogCisgICAgZ2w6
OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdl
KSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChjb25z
dCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKTsKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZW5kZXJUYXJnZXRTZXJpYWwoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4KTsKIAogICAgIHZpcnR1YWwgZ2w6OkltYWdlSW5kZXhJdGVyYXRvciBpbWFn
ZUl0ZXJhdG9yKCkgY29uc3Q7CiAgICAgdmlydHVhbCBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUlu
ZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5ZXIpIGNvbnN0OwpAQCAtMzE5LDkgKzMyOCw5IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3Igc2V0
Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBj
b25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBzZXRDb21wcmVz
c2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZh
cmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxz
KSBvdmVycmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4
X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0
YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xl
bnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwpAQCAtMzMzLDggKzM0Miw5IEBACiAgICAgdmly
dHVhbCB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwogICAgIHZpcnR1
YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKTsKIAorICAgIGdsOjpFcnJvciBzZXRFR0xJbWFnZVRh
cmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkgb3ZlcnJpZGU7CisKICAgICB2
aXJ0dWFsIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmlu
ZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCk7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQg
Z2V0UmVuZGVyVGFyZ2V0U2VyaWFsKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCk7CiAKICAg
ICB2aXJ0dWFsIGdsOjpJbWFnZUluZGV4SXRlcmF0b3IgaW1hZ2VJdGVyYXRvcigpIGNvbnN0Owog
ICAgIHZpcnR1YWwgZ2w6OkltYWdlSW5kZXggZ2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50
IGxheWVyKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdlLmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCAr
MzMsOCBAQAogY2xhc3MgVGV4dHVyZVN0b3JhZ2UgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAg
cHVibGljOgotICAgIFRleHR1cmVTdG9yYWdlKCk7Ci0gICAgdmlydHVhbCB+VGV4dHVyZVN0b3Jh
Z2UoKSB7fTsKKyAgICBUZXh0dXJlU3RvcmFnZSgpIHt9CisgICAgdmlydHVhbCB+VGV4dHVyZVN0
b3JhZ2UoKSB7fQogCiAgICAgdmlydHVhbCBpbnQgZ2V0VG9wTGV2ZWwoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGlzUmVuZGVyVGFyZ2V0KCkgY29uc3QgPSAwOwpAQCAtNDksMTggKzQ5
LDggQEAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0IGdsOjpJbWFnZUluZGV4
ICZpbmRleCwgSW1hZ2VEM0QgKmltYWdlLCBjb25zdCBnbDo6Qm94ICpkZXN0Qm94LCBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVsRGF0YSkgPSAwOwogCi0gICAgdW5z
aWduZWQgaW50IGdldFJlbmRlclRhcmdldFNlcmlhbChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGludCBnZXRUZXh0dXJlU2VyaWFsKCkgY29uc3Q7Ci0K
ICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgZm9yIG1vc3QgaW1wbGVtZW50YXRpb25zIG9mIFRleHR1
cmVTdG9yYWdlLiBTb21lIChlLmcuIFRleHR1cmVTdG9yYWdlMTFfMkQpIG1pZ2h0IG92ZXJyaWRl
IGl0LgogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJl
KGJvb2wgdXNlTGV2ZWxaZXJvVGV4dHVyZSkgeyByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsgfQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIGluaXRpYWxpemVTZXJpYWxzKHVuc2lnbmVk
IGludCBydFNlcmlhbHNUb1Jlc2VydmUsIHVuc2lnbmVkIGludCBydFNlcmlhbHNMYXllclN0cmlk
ZSk7Ci0KLSAgcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBpbnQgbUZpcnN0UmVuZGVyVGFyZ2V0U2Vy
aWFsOwotICAgIHVuc2lnbmVkIGludCBtUmVuZGVyVGFyZ2V0U2VyaWFsc0xheWVyU3RyaWRlOwog
fTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9WYXJ5aW5nUGFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5NyBA
QAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIFZhcnlpbmdQYWNraW5nOgorLy8gICBDbGFzcyB3aGljaCBkZXNjcmli
ZXMgYSBtYXBwaW5nIGZyb20gdmFyeWluZ3MgdG8gcmVnaXN0ZXJzIGluIEQzRAorLy8gICBmb3Ig
bGlua2luZyBiZXR3ZWVuIHNoYWRlciBzdGFnZXMuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmgiCisKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgorCituYW1lc3BhY2UgcngKK3sK
KworLy8gSW1wbGVtZW50YXRpb24gb2YgVmFyeWluZ1BhY2tpbmc6OkJ1aWx0aW5WYXJ5aW5nCitW
YXJ5aW5nUGFja2luZzo6QnVpbHRpblZhcnlpbmc6OkJ1aWx0aW5WYXJ5aW5nKCkgOiBlbmFibGVk
KGZhbHNlKSwgaW5kZXgoMCksIHN5c3RlbVZhbHVlKGZhbHNlKQoreworfQorCitzdGQ6OnN0cmlu
ZyBWYXJ5aW5nUGFja2luZzo6QnVpbHRpblZhcnlpbmc6OnN0cigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIChzeXN0ZW1WYWx1ZSA/IHNlbWFudGljIDogKHNlbWFudGljICsgU3RyKGluZGV4KSkpOwor
fQorCit2b2lkIFZhcnlpbmdQYWNraW5nOjpCdWlsdGluVmFyeWluZzo6ZW5hYmxlU3lzdGVtKGNv
bnN0IHN0ZDo6c3RyaW5nICZzeXN0ZW1WYWx1ZVNlbWFudGljKQoreworICAgIGVuYWJsZWQgICAg
ID0gdHJ1ZTsKKyAgICBzZW1hbnRpYyAgICA9IHN5c3RlbVZhbHVlU2VtYW50aWM7CisgICAgc3lz
dGVtVmFsdWUgPSB0cnVlOworfQorCit2b2lkIFZhcnlpbmdQYWNraW5nOjpCdWlsdGluVmFyeWlu
Zzo6ZW5hYmxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQgaW50IGlu
ZGV4VmFsKQoreworICAgIGVuYWJsZWQgID0gdHJ1ZTsKKyAgICBzZW1hbnRpYyA9IHNlbWFudGlj
VmFsOworICAgIGluZGV4ICAgID0gaW5kZXhWYWw7Cit9CisKKy8vIEltcGxlbWVudGF0aW9uIG9m
IFZhcnlpbmdQYWNraW5nCitWYXJ5aW5nUGFja2luZzo6VmFyeWluZ1BhY2tpbmcoR0x1aW50IG1h
eFZhcnlpbmdWZWN0b3JzKQorICAgIDogbVJlZ2lzdGVyTWFwKG1heFZhcnlpbmdWZWN0b3JzKSwg
bUJ1aWx0aW5JbmZvKFNIQURFUl9UWVBFX01BWCkKK3sKK30KKworLy8gUGFja3MgdmFyeWluZ3Mg
aW50byBnZW5lcmljIHZhcnlpbmcgcmVnaXN0ZXJzLCB1c2luZyB0aGUgYWxnb3JpdGhtIGZyb20K
Ky8vIFNlZSBbT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMS4wMCByZXYuIDE3XSBhcHBlbmRp
eCBBIHNlY3Rpb24gNyBwYWdlIDExMQorLy8gQWxzbyBbT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3Vh
Z2UgMy4wMCByZXYuIDRdIFNlY3Rpb24gMTEgcGFnZSAxMTkKKy8vIFJldHVybnMgZmFsc2UgaWYg
dW5zdWNjZXNzZnVsLgorYm9vbCBWYXJ5aW5nUGFja2luZzo6cGFja1ZhcnlpbmcoY29uc3QgUGFj
a2VkVmFyeWluZyAmcGFja2VkVmFyeWluZykKK3sKKyAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ1Jv
d3MgICAgPSAwOworICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucyA9IDA7CisKKyAgICBj
b25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWluZzsKKworICAgIC8vICJO
b24gLSBzcXVhcmUgbWF0cmljZXMgb2YgdHlwZSBtYXRDeFIgY29uc3VtZSB0aGUgc2FtZSBzcGFj
ZSBhcyBhIHNxdWFyZSBtYXRyaXggb2YgdHlwZSBtYXROCisgICAgLy8gd2hlcmUgTiBpcyB0aGUg
Z3JlYXRlciBvZiBDIGFuZCBSLlZhcmlhYmxlcyBvZiB0eXBlIG1hdDIgb2NjdXBpZXMgMiBjb21w
bGV0ZSByb3dzLiIKKyAgICAvLyBIZXJlIHdlIGFyZSBhIGJpdCBtb3JlIGNvbnNlcnZhdGl2ZSBh
bmQgYWxsb3cgcGFja2luZyBub24tc3F1YXJlIG1hdHJpY2VzIG1vcmUgdGlnaHRseS4KKyAgICAv
LyBNYWtlIHN1cmUgd2UgdXNlIHRyYW5zcG9zZWQgbWF0cml4IHR5cGVzIHRvIGNvdW50IHJlZ2lz
dGVycyBjb3JyZWN0bHkuCisgICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkpOworICAgIEdM
ZW51bSB0cmFuc3Bvc2VkVHlwZSA9IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlpbmcudHlw
ZSk7CisgICAgdmFyeWluZ1Jvd3MgICAgICAgICAgID0gZ2w6OlZhcmlhYmxlUm93Q291bnQodHJh
bnNwb3NlZFR5cGUpOworICAgIHZhcnlpbmdDb2x1bW5zICAgICAgICA9IGdsOjpWYXJpYWJsZUNv
bHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKKworICAgIC8vICJBcnJheXMgb2Ygc2l6ZSBOIGFy
ZSBhc3N1bWVkIHRvIHRha2UgTiB0aW1lcyB0aGUgc2l6ZSBvZiB0aGUgYmFzZSB0eXBlIgorICAg
IHZhcnlpbmdSb3dzICo9IHZhcnlpbmcuZWxlbWVudENvdW50KCk7CisKKyAgICB1bnNpZ25lZCBp
bnQgbWF4VmFyeWluZ1ZlY3RvcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1SZWdpc3Rl
ck1hcC5zaXplKCkpOworCisgICAgLy8gIkZvciAyLCAzIGFuZCA0IGNvbXBvbmVudCB2YXJpYWJs
ZXMgcGFja2luZyBpcyBzdGFydGVkIHVzaW5nIHRoZSAxc3QgY29sdW1uIG9mIHRoZSAxc3Qgcm93
LgorICAgIC8vIFZhcmlhYmxlcyBhcmUgdGhlbiBhbGxvY2F0ZWQgdG8gc3VjY2Vzc2l2ZSByb3dz
LCBhbGlnbmluZyB0aGVtIHRvIHRoZSAxc3QgY29sdW1uLiIKKyAgICBpZiAodmFyeWluZ0NvbHVt
bnMgPj0gMiAmJiB2YXJ5aW5nQ29sdW1ucyA8PSA0KQorICAgIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgcm93ID0gMDsgcm93IDw9IG1heFZhcnlpbmdWZWN0b3JzIC0gdmFyeWluZ1Jvd3M7
ICsrcm93KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNGcmVlKHJvdywgMCwgdmFyeWlu
Z1Jvd3MsIHZhcnlpbmdDb2x1bW5zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
bnNlcnQocm93LCAwLCBwYWNrZWRWYXJ5aW5nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vICJGb3IgMiBjb21wb25l
bnQgdmFyaWFibGVzLCB3aGVuIHRoZXJlIGFyZSBubyBzcGFyZSByb3dzLCB0aGUgc3RyYXRlZ3kg
aXMgc3dpdGNoZWQgdG8KKyAgICAgICAgLy8gdXNpbmcgdGhlIGhpZ2hlc3QgbnVtYmVyZWQgcm93
IGFuZCB0aGUgbG93ZXN0IG51bWJlcmVkIGNvbHVtbiB3aGVyZSB0aGUgdmFyaWFibGUgd2lsbAor
ICAgICAgICAvLyBmaXQuIgorICAgICAgICBpZiAodmFyeWluZ0NvbHVtbnMgPT0gMikKKyAgICAg
ICAgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgciA9IG1heFZhcnlpbmdWZWN0b3Jz
IC0gdmFyeWluZ1Jvd3MgKyAxOyByLS0gPj0gMTspCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKGlzRnJlZShyLCAyLCB2YXJ5aW5nUm93cywgMikpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBpbnNlcnQociwgMiwgcGFja2VkVmFyeWluZyk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAv
LyAiMSBjb21wb25lbnQgdmFyaWFibGVzIGhhdmUgdGhlaXIgb3duIHBhY2tpbmcgcnVsZS4gVGhl
eSBhcmUgcGFja2VkIGluIG9yZGVyIG9mIHNpemUsIGxhcmdlc3QKKyAgICAvLyBmaXJzdC4gRWFj
aCB2YXJpYWJsZSBpcyBwbGFjZWQgaW4gdGhlIGNvbHVtbiB0aGF0IGxlYXZlcyB0aGUgbGVhc3Qg
YW1vdW50IG9mIHNwYWNlIGluIHRoZQorICAgIC8vIGNvbHVtbiBhbmQgYWxpZ25lZCB0byB0aGUg
bG93ZXN0IGF2YWlsYWJsZSByb3dzIHdpdGhpbiB0aGF0IGNvbHVtbi4iCisgICAgQVNTRVJUKHZh
cnlpbmdDb2x1bW5zID09IDEpOworICAgIHVuc2lnbmVkIGludCBjb250aWd1b3VzU3BhY2VbNF0g
ICAgID0gezB9OworICAgIHVuc2lnbmVkIGludCBiZXN0Q29udGlndW91c1NwYWNlWzRdID0gezB9
OworICAgIHVuc2lnbmVkIGludCB0b3RhbFNwYWNlWzRdICAgICAgICAgID0gezB9OworCisgICAg
Zm9yICh1bnNpZ25lZCBpbnQgcm93ID0gMDsgcm93IDwgbWF4VmFyeWluZ1ZlY3RvcnM7ICsrcm93
KQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sdW1uID0gMDsgY29sdW1uIDwg
NDsgKytjb2x1bW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJNYXBbcm93
XVtjb2x1bW5dKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpZ3VvdXNTcGFj
ZVtjb2x1bW5dID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250aWd1b3VzU3BhY2VbY29sdW1uXSsrOworICAgICAg
ICAgICAgICAgIHRvdGFsU3BhY2VbY29sdW1uXSsrOworCisgICAgICAgICAgICAgICAgaWYgKGNv
bnRpZ3VvdXNTcGFjZVtjb2x1bW5dID4gYmVzdENvbnRpZ3VvdXNTcGFjZVtjb2x1bW5dKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYmVzdENvbnRpZ3VvdXNTcGFjZVtj
b2x1bW5dID0gY29udGlndW91c1NwYWNlW2NvbHVtbl07CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgaW50IGJlc3RDb2x1
bW4gPSAwOworICAgIGZvciAodW5zaWduZWQgaW50IGNvbHVtbiA9IDE7IGNvbHVtbiA8IDQ7ICsr
Y29sdW1uKQorICAgIHsKKyAgICAgICAgaWYgKGJlc3RDb250aWd1b3VzU3BhY2VbY29sdW1uXSA+
PSB2YXJ5aW5nUm93cyAmJgorICAgICAgICAgICAgKGJlc3RDb250aWd1b3VzU3BhY2VbYmVzdENv
bHVtbl0gPCB2YXJ5aW5nUm93cyB8fAorICAgICAgICAgICAgIHRvdGFsU3BhY2VbY29sdW1uXSA8
IHRvdGFsU3BhY2VbYmVzdENvbHVtbl0pKQorICAgICAgICB7CisgICAgICAgICAgICBiZXN0Q29s
dW1uID0gY29sdW1uOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJlc3RDb250aWd1b3Vz
U3BhY2VbYmVzdENvbHVtbl0gPj0gdmFyeWluZ1Jvd3MpCisgICAgeworICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCByb3cgPSAwOyByb3cgPCBtYXhWYXJ5aW5nVmVjdG9yczsgcm93KyspCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChpc0ZyZWUocm93LCBiZXN0Q29sdW1uLCB2YXJ5aW5nUm93
cywgMSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
YXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXggPCB2YXJ5aW5nUm93czsgKythcnJheUluZGV4KQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdmFyeWluZ1Jvd3Mg
PiAxLCBpdCBtdXN0IGJlIGFuIGFycmF5LgorICAgICAgICAgICAgICAgICAgICBQYWNrZWRWYXJ5
aW5nUmVnaXN0ZXIgcmVnaXN0ZXJJbmZvOworICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcklu
Zm8ucGFja2VkVmFyeWluZyAgICAgPSAmcGFja2VkVmFyeWluZzsKKyAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyUm93ICAgICAgID0gcm93ICsgYXJyYXlJbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyQ29sdW1uICAgID0gYmVzdENv
bHVtbjsKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdBcnJheUluZGV4
ID0gYXJyYXlJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdS
b3dJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1SZWdpc3Rlckxpc3QucHVzaF9iYWNr
KHJlZ2lzdGVySW5mbyk7CisgICAgICAgICAgICAgICAgICAgIG1SZWdpc3Rlck1hcFtyb3cgKyBh
cnJheUluZGV4XVtiZXN0Q29sdW1uXSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBWYXJ5aW5nUGFj
a2luZzo6aXNGcmVlKHVuc2lnbmVkIGludCByZWdpc3RlclJvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb2x1bW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucykgY29uc3QKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCByb3cgPSAwOyByb3cgPCB2YXJ5aW5nUm93czsgKytyb3cpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnaXN0ZXJSb3cgKyByb3cgPCBtUmVnaXN0ZXJNYXAuc2l6ZSgpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgdmFyeWluZ0Nv
bHVtbnM7ICsrY29sdW1uKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmVnaXN0ZXJD
b2x1bW4gKyBjb2x1bW4gPCA0KTsKKyAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJNYXBbcmVnaXN0
ZXJSb3cgKyByb3ddW3JlZ2lzdGVyQ29sdW1uICsgY29sdW1uXSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBWYXJ5aW5nUGFja2luZzo6aW5zZXJ0
KHVuc2lnbmVkIGludCByZWdpc3RlclJvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZykKK3sKKyAgICB1bnNpZ25lZCBpbnQg
dmFyeWluZ1Jvd3MgICAgPSAwOworICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucyA9IDA7
CisKKyAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWluZzsKKyAg
ICBBU1NFUlQoIXZhcnlpbmcuaXNTdHJ1Y3QoKSk7CisgICAgR0xlbnVtIHRyYW5zcG9zZWRUeXBl
ID0gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5cGUodmFyeWluZy50eXBlKTsKKyAgICB2YXJ5aW5nUm93
cyAgICAgICAgICAgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0cmFuc3Bvc2VkVHlwZSk7CisgICAg
dmFyeWluZ0NvbHVtbnMgICAgICAgID0gZ2w6OlZhcmlhYmxlQ29sdW1uQ291bnQodHJhbnNwb3Nl
ZFR5cGUpOworCisgICAgUGFja2VkVmFyeWluZ1JlZ2lzdGVyIHJlZ2lzdGVySW5mbzsKKyAgICBy
ZWdpc3RlckluZm8ucGFja2VkVmFyeWluZyAgPSAmcGFja2VkVmFyeWluZzsKKyAgICByZWdpc3Rl
ckluZm8ucmVnaXN0ZXJDb2x1bW4gPSByZWdpc3RlckNvbHVtbjsKKworICAgIGZvciAodW5zaWdu
ZWQgaW50IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IHZhcnlpbmcuZWxlbWVudENv
dW50KCk7ICsrYXJyYXlFbGVtZW50KQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQg
dmFyeWluZ1JvdyA9IDA7IHZhcnlpbmdSb3cgPCB2YXJ5aW5nUm93czsgKyt2YXJ5aW5nUm93KQor
ICAgICAgICB7CisgICAgICAgICAgICByZWdpc3RlckluZm8ucmVnaXN0ZXJSb3cgICAgICAgPSBy
ZWdpc3RlclJvdyArIChhcnJheUVsZW1lbnQgKiB2YXJ5aW5nUm93cykgKyB2YXJ5aW5nUm93Owor
ICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdSb3dJbmRleCAgID0gdmFyeWluZ1JvdzsK
KyAgICAgICAgICAgIHJlZ2lzdGVySW5mby52YXJ5aW5nQXJyYXlJbmRleCA9IGFycmF5RWxlbWVu
dDsKKyAgICAgICAgICAgIG1SZWdpc3Rlckxpc3QucHVzaF9iYWNrKHJlZ2lzdGVySW5mbyk7CisK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbHVtbkluZGV4ID0gMDsgY29sdW1uSW5k
ZXggPCB2YXJ5aW5nQ29sdW1uczsgKytjb2x1bW5JbmRleCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBtUmVnaXN0ZXJNYXBbcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyUm93XVtyZWdpc3Rl
ckNvbHVtbiArIGNvbHVtbkluZGV4XSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy8vIFNlZSBjb21tZW50IG9uIHBhY2tWYXJ5aW5nLgorYm9vbCBWYXJ5aW5n
UGFja2luZzo6cGFja1ZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+ICZw
YWNrZWRWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpCit7Cisg
ICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZVZhcnlpbmdOYW1lczsKKworICAgIC8vICJW
YXJpYWJsZXMgYXJlIHBhY2tlZCBpbnRvIHRoZSByZWdpc3RlcnMgb25lIGF0IGEgdGltZSBzbyB0
aGF0IHRoZXkgZWFjaCBvY2N1cHkgYSBjb250aWd1b3VzCisgICAgLy8gc3VicmVjdGFuZ2xlLiBO
byBzcGxpdHRpbmcgb2YgdmFyaWFibGVzIGlzIHBlcm1pdHRlZC4iCisgICAgZm9yIChjb25zdCBQ
YWNrZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nIDogcGFja2VkVmFyeWluZ3MpCisgICAgeworICAg
ICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWluZzsKKworICAg
ICAgICAvLyBEbyBub3QgYXNzaWduIHJlZ2lzdGVycyB0byBidWlsdC1pbiBvciB1bnJlZmVyZW5j
ZWQgdmFyeWluZ3MKKyAgICAgICAgaWYgKHZhcnlpbmcuaXNCdWlsdEluKCkgfHwgKCF2YXJ5aW5n
LnN0YXRpY1VzZSAmJiAhcGFja2VkVmFyeWluZy5pc1N0cnVjdEZpZWxkKCkpKQorICAgICAgICB7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVCghdmFy
eWluZy5pc1N0cnVjdCgpKTsKKyAgICAgICAgQVNTRVJUKHVuaXF1ZVZhcnlpbmdOYW1lcy5jb3Vu
dCh2YXJ5aW5nLm5hbWUpID09IDApOworCisgICAgICAgIGlmIChwYWNrVmFyeWluZyhwYWNrZWRW
YXJ5aW5nKSkKKyAgICAgICAgeworICAgICAgICAgICAgdW5pcXVlVmFyeWluZ05hbWVzLmluc2Vy
dCh2YXJ5aW5nLm5hbWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgaW5mb0xvZyA8PCAiQ291bGQgbm90IHBhY2sgdmFyeWluZyAiIDw8IHZhcnlpbmcu
bmFtZTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWUgOiB0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKQorICAgIHsKKyAgICAgICAgaWYgKHRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ05hbWUuY29tcGFyZSgwLCAzLCAiZ2xfIikgPT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gZG8gbm90IHBhY2sgYnVpbHRpbiBYRkIgdmFyeWluZ3MKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5
aW5nICZwYWNrZWRWYXJ5aW5nIDogcGFja2VkVmFyeWluZ3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOworCisgICAg
ICAgICAgICAvLyBNYWtlIHN1cmUgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIGFyZW4ndCBv
cHRpbWl6ZWQgb3V0LgorICAgICAgICAgICAgaWYgKHVuaXF1ZVZhcnlpbmdOYW1lcy5jb3VudCh0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAodHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nTmFtZSA9PSB2YXJ5aW5nLm5hbWUpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhY2tWYXJ5aW5nKHBhY2tlZFZhcnlpbmcpKQor
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8
ICJDb3VsZCBub3QgcGFjayB2YXJ5aW5nICIgPDwgdmFyeWluZy5uYW1lOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIlRyYW5zZm9ybSBmZWVk
YmFjayB2YXJ5aW5nICIgPDwgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8ICIgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHZlcnRleCBzaGFk
ZXIuIjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNvcnQgdGhlIHBh
Y2tlZCByZWdpc3RlciBsaXN0CisgICAgc3RkOjpzb3J0KG1SZWdpc3Rlckxpc3QuYmVnaW4oKSwg
bVJlZ2lzdGVyTGlzdC5lbmQoKSk7CisKKyAgICAvLyBBc3NpZ24gc2VtYW50aWMgaW5kaWNlcwor
ICAgIGZvciAodW5zaWduZWQgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAgICAgc2VtYW50
aWNJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVJlZ2lzdGVyTGlzdC5zaXplKCkp
OyArK3NlbWFudGljSW5kZXgpCisgICAgeworICAgICAgICBtUmVnaXN0ZXJMaXN0W3NlbWFudGlj
SW5kZXhdLnNlbWFudGljSW5kZXggPSBzZW1hbnRpY0luZGV4OworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCit1bnNpZ25lZCBpbnQgVmFyeWluZ1BhY2tpbmc6OmdldFJlZ2lzdGVyQ291
bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7CisKKyAgICBmb3IgKGNv
bnN0IFJlZ2lzdGVyICZyZWcgOiBtUmVnaXN0ZXJNYXApCisgICAgeworICAgICAgICBpZiAocmVn
LmRhdGFbMF0gfHwgcmVnLmRhdGFbMV0gfHwgcmVnLmRhdGFbMl0gfHwgcmVnLmRhdGFbM10pCisg
ICAgICAgIHsKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobUJ1aWx0aW5JbmZvW1NIQURFUl9QSVhFTF0uZ2xGcmFnQ29vcmQuZW5hYmxlZCkKKyAgICB7
CisgICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgaWYgKG1CdWlsdGluSW5mb1tTSEFERVJf
UElYRUxdLmdsUG9pbnRDb29yZC5lbmFibGVkKQorICAgIHsKKyAgICAgICAgKytjb3VudDsKKyAg
ICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3ZvaWQgVmFyeWluZ1BhY2tpbmc6OmVuYWJs
ZUJ1aWx0aW5zKFNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAmcHJvZ3JhbU1ldGFkYXRhKQor
eworICAgIGludCBtYWpvclNoYWRlck1vZGVsID0gcHJvZ3JhbU1ldGFkYXRhLmdldFJlbmRlcmVy
TWFqb3JTaGFkZXJNb2RlbCgpOworICAgIGJvb2wgcG9zaXRpb24gICAgICAgID0gcHJvZ3JhbU1l
dGFkYXRhLnVzZXNUcmFuc2Zvcm1GZWVkYmFja0dMUG9zaXRpb24oKTsKKyAgICBib29sIGZyYWdD
b29yZCAgICAgICA9IHByb2dyYW1NZXRhZGF0YS51c2VzRnJhZ0Nvb3JkKCk7CisgICAgYm9vbCBw
b2ludENvb3JkID0gc2hhZGVyVHlwZSA9PSBTSEFERVJfVkVSVEVYID8gcHJvZ3JhbU1ldGFkYXRh
LmFkZHNQb2ludENvb3JkVG9WZXJ0ZXhTaGFkZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb2dyYW1NZXRhZGF0YS51c2VzUG9pbnRDb29y
ZCgpOworICAgIGJvb2wgcG9pbnRTaXplICAgICAgICAgICAgICAgICAgPSBwcm9ncmFtTWV0YWRh
dGEudXNlc1N5c3RlbVZhbHVlUG9pbnRTaXplKCk7CisgICAgYm9vbCBobHNsNCAgICAgICAgICAg
ICAgICAgICAgICA9IChtYWpvclNoYWRlck1vZGVsID49IDQpOworICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ1c2VyU2VtYW50aWMgPSBHZXRWYXJ5aW5nU2VtYW50aWMobWFqb3JTaGFkZXJNb2RlbCwg
cG9pbnRTaXplKTsKKworICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFNlbWFudGljSW5kZXggPSBn
ZXRNYXhTZW1hbnRpY0luZGV4KCk7CisKKyAgICBCdWlsdGluSW5mbyAqYnVpbHRpbnMgPSAmbUJ1
aWx0aW5JbmZvW3NoYWRlclR5cGVdOworCisgICAgaWYgKGhsc2w0KQorICAgIHsKKyAgICAgICAg
YnVpbHRpbnMtPmR4UG9zaXRpb24uZW5hYmxlU3lzdGVtKCJTVl9Qb3NpdGlvbiIpOworICAgIH0K
KyAgICBlbHNlIGlmIChzaGFkZXJUeXBlID09IFNIQURFUl9QSVhFTCkKKyAgICB7CisgICAgICAg
IGJ1aWx0aW5zLT5keFBvc2l0aW9uLmVuYWJsZVN5c3RlbSgiVlBPUyIpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBidWlsdGlucy0+ZHhQb3NpdGlvbi5lbmFibGVTeXN0ZW0oIlBP
U0lUSU9OIik7CisgICAgfQorCisgICAgaWYgKHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgYnVp
bHRpbnMtPmdsUG9zaXRpb24uZW5hYmxlKHVzZXJTZW1hbnRpYywgcmVzZXJ2ZWRTZW1hbnRpY0lu
ZGV4KyspOworICAgIH0KKworICAgIGlmIChmcmFnQ29vcmQpCisgICAgeworICAgICAgICBidWls
dGlucy0+Z2xGcmFnQ29vcmQuZW5hYmxlKHVzZXJTZW1hbnRpYywgcmVzZXJ2ZWRTZW1hbnRpY0lu
ZGV4KyspOworICAgIH0KKworICAgIGlmIChwb2ludENvb3JkKQorICAgIHsKKyAgICAgICAgLy8g
U00zIHJlc2VydmVzIHRoZSBURVhDT09SRCBzZW1hbnRpYyBmb3IgcG9pbnQgc3ByaXRlIHRleGNv
b3JkcyAoZ2xfUG9pbnRDb29yZCkKKyAgICAgICAgLy8gSW4gRDNEMTEgd2UgbWFudWFsbHkgY29t
cHV0ZSBnbF9Qb2ludENvb3JkIGluIHRoZSBHUy4KKyAgICAgICAgaWYgKGhsc2w0KQorICAgICAg
ICB7CisgICAgICAgICAgICBidWlsdGlucy0+Z2xQb2ludENvb3JkLmVuYWJsZSh1c2VyU2VtYW50
aWMsIHJlc2VydmVkU2VtYW50aWNJbmRleCsrKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGJ1aWx0aW5zLT5nbFBvaW50Q29vcmQuZW5hYmxlKCJURVhD
T09SRCIsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gU3BlY2lhbCBjYXNlOiBkbyBu
b3QgaW5jbHVkZSBQU0laRSBzZW1hbnRpYyBpbiBITFNMIDMgcGl4ZWwgc2hhZGVycworICAgIGlm
IChwb2ludFNpemUgJiYgKHNoYWRlclR5cGUgIT0gU0hBREVSX1BJWEVMIHx8IGhsc2w0KSkKKyAg
ICB7CisgICAgICAgIGJ1aWx0aW5zLT5nbFBvaW50U2l6ZS5lbmFibGVTeXN0ZW0oIlBTSVpFIik7
CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1ZhcnlpbmdQYWNraW5nLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNzUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWYXJ5aW5nUGFja2luZzoKKy8vICAg
Q2xhc3Mgd2hpY2ggZGVzY3JpYmVzIGEgbWFwcGluZyBmcm9tIHZhcnlpbmdzIHRvIHJlZ2lzdGVy
cyBpbiBEM0QKKy8vICAgZm9yIGxpbmtpbmcgYmV0d2VlbiBzaGFkZXIgc3RhZ2VzLgorLy8KKwor
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfVkFSWUlOR1BBQ0tJTkdfSF8KKyNkZWZpbmUg
TElCQU5HTEVfUkVOREVSRVJfRDNEX1ZBUllJTkdQQUNLSU5HX0hfCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKKworbmFtZXNwYWNlIHJ4Cit7CitjbGFz
cyBQcm9ncmFtRDNETWV0YWRhdGE7CisKK3N0cnVjdCBQYWNrZWRWYXJ5aW5nCit7CisgICAgUGFj
a2VkVmFyeWluZyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmdJbiwgc2g6OkludGVy
cG9sYXRpb25UeXBlIGludGVycG9sYXRpb25JbikKKyAgICAgICAgOiB2YXJ5aW5nKCZ2YXJ5aW5n
SW4pLCB2ZXJ0ZXhPbmx5KGZhbHNlKSwgaW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uSW4pCisg
ICAgeworICAgIH0KKyAgICBQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAm
dmFyeWluZ0luLAorICAgICAgICAgICAgICAgICAgc2g6OkludGVycG9sYXRpb25UeXBlIGludGVy
cG9sYXRpb25JbiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwYXJlbnRT
dHJ1Y3ROYW1lSW4pCisgICAgICAgIDogdmFyeWluZygmdmFyeWluZ0luKSwKKyAgICAgICAgICB2
ZXJ0ZXhPbmx5KGZhbHNlKSwKKyAgICAgICAgICBpbnRlcnBvbGF0aW9uKGludGVycG9sYXRpb25J
biksCisgICAgICAgICAgcGFyZW50U3RydWN0TmFtZShwYXJlbnRTdHJ1Y3ROYW1lSW4pCisgICAg
eworICAgIH0KKworICAgIGJvb2wgaXNTdHJ1Y3RGaWVsZCgpIGNvbnN0IHsgcmV0dXJuICFwYXJl
bnRTdHJ1Y3ROYW1lLmVtcHR5KCk7IH0KKworICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAq
dmFyeWluZzsKKworICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyBjYW4gYmUgb25s
eSByZWZlcmVuY2VkIGluIHRoZSBWUy4KKyAgICBib29sIHZlcnRleE9ubHk7CisKKyAgICAvLyBD
YWNoZWQgc28gd2UgY2FuIHN0b3JlIHNoOjpTaGFkZXJWYXJpYWJsZSB0byBwb2ludCB0byB2YXJ5
aW5nIGZpZWxkcy4KKyAgICBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbjsKKwor
ICAgIC8vIFN0cnVjdCBuYW1lCisgICAgc3RkOjpzdHJpbmcgcGFyZW50U3RydWN0TmFtZTsKK307
CisKK3N0cnVjdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgZmluYWwKK3sKKyAgICBQYWNrZWRWYXJ5
aW5nUmVnaXN0ZXIoKQorICAgICAgICA6IHBhY2tlZFZhcnlpbmcobnVsbHB0ciksCisgICAgICAg
ICAgdmFyeWluZ0FycmF5SW5kZXgoMCksCisgICAgICAgICAgdmFyeWluZ1Jvd0luZGV4KDApLAor
ICAgICAgICAgIHJlZ2lzdGVyUm93KDApLAorICAgICAgICAgIHJlZ2lzdGVyQ29sdW1uKDApCisg
ICAgeworICAgIH0KKworICAgIFBhY2tlZFZhcnlpbmdSZWdpc3Rlcihjb25zdCBQYWNrZWRWYXJ5
aW5nUmVnaXN0ZXIgJikgPSBkZWZhdWx0OworICAgIFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmb3Bl
cmF0b3I9KGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmKSA9IGRlZmF1bHQ7CisKKyAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJm90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHNvcnRPcmRlcigpIDwgb3RoZXIuc29ydE9yZGVyKCk7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgaW50IHNvcnRPcmRlcigpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBUT0RPKGptYWRpbGwpOiBIYW5kbGUgaW50ZXJwb2xhdGlvbiB0eXBlcworICAgICAgICBy
ZXR1cm4gcmVnaXN0ZXJSb3cgKiA0ICsgcmVnaXN0ZXJDb2x1bW47CisgICAgfQorCisgICAgYm9v
bCBpc1N0cnVjdEZpZWxkKCkgY29uc3QgeyByZXR1cm4gIXN0cnVjdEZpZWxkTmFtZS5lbXB0eSgp
OyB9CisKKyAgICAvLyBJbmRleCB0byB0aGUgYXJyYXkgb2YgdmFyeWluZ3MuCisgICAgY29uc3Qg
UGFja2VkVmFyeWluZyAqcGFja2VkVmFyeWluZzsKKworICAgIC8vIFRoZSBhcnJheSBlbGVtZW50
IG9mIHRoZSBwYWNrZWQgdmFyeWluZy4KKyAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ0FycmF5SW5k
ZXg7CisKKyAgICAvLyBUaGUgcm93IG9mIHRoZSBhcnJheSBlbGVtZW50IG9mIHRoZSBwYWNrZWQg
dmFyeWluZy4KKyAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ1Jvd0luZGV4OworCisgICAgLy8gVGhl
IHJlZ2lzdGVyIHJvdyB0byB3aGljaCB3ZSd2ZSBhc3NpZ25lZCB0aGlzIHBhY2tlZCB2YXJ5aW5n
LgorICAgIHVuc2lnbmVkIGludCByZWdpc3RlclJvdzsKKworICAgIC8vIFRoZSBjb2x1bW4gb2Yg
dGhlIHJlZ2lzdGVyIHJvdyBpbnRvIHdoaWNoIHdlJ3ZlIHBhY2tlZCB0aGlzIHZhcnlpbmcuCisg
ICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ29sdW1uOworCisgICAgLy8gQXNzaWduZWQgYWZ0ZXIg
cGFja2luZworICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4OworCisgICAgLy8gU3RydWN0
IG1lbWJlciB0aGlzIHZhcnlpbmcgY29ycmVzcG9uZHMgdG8uCisgICAgc3RkOjpzdHJpbmcgc3Ry
dWN0RmllbGROYW1lOworfTsKKworY2xhc3MgVmFyeWluZ1BhY2tpbmcgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIFZhcnlpbmdQYWNraW5nKEdMdWludCBtYXhW
YXJ5aW5nVmVjdG9ycyk7CisKKyAgICBib29sIHBhY2tWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5m
b0xvZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5
aW5nPiAmcGFja2VkVmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKTsKKworICAgIHN0
cnVjdCBSZWdpc3RlcgorICAgIHsKKyAgICAgICAgUmVnaXN0ZXIoKSB7IGRhdGFbMF0gPSBkYXRh
WzFdID0gZGF0YVsyXSA9IGRhdGFbM10gPSBmYWxzZTsgfQorCisgICAgICAgIGJvb2wgJm9wZXJh
dG9yW10odW5zaWduZWQgaW50IGluZGV4KSB7IHJldHVybiBkYXRhW2luZGV4XTsgfQorICAgICAg
ICBib29sIG9wZXJhdG9yW10odW5zaWduZWQgaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBkYXRh
W2luZGV4XTsgfQorCisgICAgICAgIGJvb2wgZGF0YVs0XTsKKyAgICB9OworCisgICAgUmVnaXN0
ZXIgJm9wZXJhdG9yW10odW5zaWduZWQgaW50IGluZGV4KSB7IHJldHVybiBtUmVnaXN0ZXJNYXBb
aW5kZXhdOyB9CisgICAgY29uc3QgUmVnaXN0ZXIgJm9wZXJhdG9yW10odW5zaWduZWQgaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtUmVnaXN0ZXJNYXBbaW5kZXhdOyB9CisKKyAgICBjb25zdCBz
dGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nUmVnaXN0ZXI+ICZnZXRSZWdpc3Rlckxpc3QoKSBjb25z
dCB7IHJldHVybiBtUmVnaXN0ZXJMaXN0OyB9CisgICAgdW5zaWduZWQgaW50IGdldE1heFNlbWFu
dGljSW5kZXgoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4obVJlZ2lzdGVyTGlzdC5zaXplKCkpOworICAgIH0KKyAgICB1bnNpZ25lZCBpbnQg
Z2V0UmVnaXN0ZXJDb3VudCgpIGNvbnN0OworCisgICAgdm9pZCBlbmFibGVCdWlsdGlucyhTaGFk
ZXJUeXBlIHNoYWRlclR5cGUsIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAmcHJvZ3JhbU1ldGFk
YXRhKTsKKworICAgIHN0cnVjdCBCdWlsdGluVmFyeWluZyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQorICAgIHsKKyAgICAgICAgQnVpbHRpblZhcnlpbmcoKTsKKworICAgICAgICBzdGQ6OnN0
cmluZyBzdHIoKSBjb25zdDsKKyAgICAgICAgdm9pZCBlbmFibGVTeXN0ZW0oY29uc3Qgc3RkOjpz
dHJpbmcgJnN5c3RlbVZhbHVlU2VtYW50aWMpOworICAgICAgICB2b2lkIGVuYWJsZShjb25zdCBz
dGQ6OnN0cmluZyAmc2VtYW50aWNWYWwsIHVuc2lnbmVkIGludCBpbmRleFZhbCk7CisKKyAgICAg
ICAgYm9vbCBlbmFibGVkOworICAgICAgICBzdGQ6OnN0cmluZyBzZW1hbnRpYzsKKyAgICAgICAg
dW5zaWduZWQgaW50IGluZGV4OworICAgICAgICBib29sIHN5c3RlbVZhbHVlOworICAgIH07CisK
KyAgICBzdHJ1Y3QgQnVpbHRpbkluZm8KKyAgICB7CisgICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGR4
UG9zaXRpb247CisgICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGdsUG9zaXRpb247CisgICAgICAgIEJ1
aWx0aW5WYXJ5aW5nIGdsRnJhZ0Nvb3JkOworICAgICAgICBCdWlsdGluVmFyeWluZyBnbFBvaW50
Q29vcmQ7CisgICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGdsUG9pbnRTaXplOworICAgIH07CisKKyAg
ICBjb25zdCBCdWlsdGluSW5mbyAmYnVpbHRpbnMoU2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25z
dCB7IHJldHVybiBtQnVpbHRpbkluZm9bc2hhZGVyVHlwZV07IH0KKworICAgIGJvb2wgdXNlc1Bv
aW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1CdWlsdGluSW5mb1tTSEFERVJfVkVSVEVYXS5nbFBv
aW50U2l6ZS5lbmFibGVkOyB9CisKKyAgcHJpdmF0ZToKKyAgICBib29sIHBhY2tWYXJ5aW5nKGNv
bnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcpOworICAgIGJvb2wgaXNGcmVlKHVuc2ln
bmVkIGludCByZWdpc3RlclJvdywKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0
ZXJDb2x1bW4sCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dzLAorICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucykgY29uc3Q7CisgICAgdm9p
ZCBpbnNlcnQodW5zaWduZWQgaW50IHJlZ2lzdGVyUm93LAorICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCByZWdpc3RlckNvbHVtbiwKKyAgICAgICAgICAgICAgICBjb25zdCBQYWNrZWRWYXJ5
aW5nICZwYWNrZWRWYXJ5aW5nKTsKKworICAgIHN0ZDo6dmVjdG9yPFJlZ2lzdGVyPiBtUmVnaXN0
ZXJNYXA7CisgICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZ1JlZ2lzdGVyPiBtUmVnaXN0ZXJM
aXN0OworCisgICAgc3RkOjp2ZWN0b3I8QnVpbHRpbkluZm8+IG1CdWlsdGluSW5mbzsKK307CisK
K30gIC8vIG5hbWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9W
QVJZSU5HUEFDS0lOR19IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmNw
cAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDE4
ICs4LDE5IEBACiAvLyBjbGFzcyB3aXRoIGRlcml2YXRpb25zLCBjbGFzc2VzIHRoYXQgcGVyZm9y
bSBncmFwaGljcyBBUEkgYWdub3N0aWMgdmVydGV4IGJ1ZmZlciBvcGVyYXRpb25zLgogCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5oIgorCisjaW5jbHVkZSAi
Y29tbW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZl
ckQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5oIgogCi0jaW5jbHVkZSAiY29tbW9u
L21hdGh1dGlsLmgiCi0KIG5hbWVzcGFjZSByeAogewogCisvLyBWZXJ0ZXhCdWZmZXIgSW1wbGVt
ZW50YXRpb24KIHVuc2lnbmVkIGludCBWZXJ0ZXhCdWZmZXI6Om1OZXh0U2VyaWFsID0gMTsKIAot
VmVydGV4QnVmZmVyOjpWZXJ0ZXhCdWZmZXIoKQorVmVydGV4QnVmZmVyOjpWZXJ0ZXhCdWZmZXIo
KSA6IG1SZWZDb3VudCgxKQogewogICAgIHVwZGF0ZVNlcmlhbCgpOwogfQpAQCAtMzgsMTkgKzM5
LDM0IEBACiAgICAgcmV0dXJuIG1TZXJpYWw7CiB9CiAKLVZlcnRleEJ1ZmZlckludGVyZmFjZTo6
VmVydGV4QnVmZmVySW50ZXJmYWNlKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnksIGJvb2wgZHlu
YW1pYykKLSAgICA6IG1GYWN0b3J5KGZhY3RvcnkpCit2b2lkIFZlcnRleEJ1ZmZlcjo6YWRkUmVm
KCkKIHsKLSAgICBtRHluYW1pYyA9IGR5bmFtaWM7Ci0gICAgbVdyaXRlUG9zaXRpb24gPSAwOwot
ICAgIG1SZXNlcnZlZFNwYWNlID0gMDsKKyAgICBtUmVmQ291bnQrKzsKK30KIAotICAgIG1WZXJ0
ZXhCdWZmZXIgPSBmYWN0b3J5LT5jcmVhdGVWZXJ0ZXhCdWZmZXIoKTsKK3ZvaWQgVmVydGV4QnVm
ZmVyOjpyZWxlYXNlKCkKK3sKKyAgICBBU1NFUlQobVJlZkNvdW50ID4gMCk7CisgICAgbVJlZkNv
dW50LS07CisKKyAgICBpZiAobVJlZkNvdW50ID09IDApCisgICAgeworICAgICAgICBkZWxldGUg
dGhpczsKKyAgICB9CiB9CiAKKy8vIFZlcnRleEJ1ZmZlckludGVyZmFjZSBJbXBsZW1lbnRhdGlv
bgorVmVydGV4QnVmZmVySW50ZXJmYWNlOjpWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoQnVmZmVyRmFj
dG9yeUQzRCAqZmFjdG9yeSwgYm9vbCBkeW5hbWljKQorICAgIDogbUZhY3RvcnkoZmFjdG9yeSks
IG1WZXJ0ZXhCdWZmZXIoZmFjdG9yeS0+Y3JlYXRlVmVydGV4QnVmZmVyKCkpLCBtRHluYW1pYyhk
eW5hbWljKQoreworfQorCiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5WZXJ0ZXhCdWZmZXJJbnRl
cmZhY2UoKQogewotICAgIGRlbGV0ZSBtVmVydGV4QnVmZmVyOworICAgIGlmIChtVmVydGV4QnVm
ZmVyKQorICAgIHsKKyAgICAgICAgbVZlcnRleEJ1ZmZlci0+cmVsZWFzZSgpOworICAgIH0KIH0K
IAogdW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U2VyaWFsKCkgY29uc3QK
QEAgLTY5LDU2ICs4NSw5MSBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXIt
PmluaXRpYWxpemUoc2l6ZSwgbUR5bmFtaWMpOwogICAgIH0KLSAgICBlbHNlCisKKyAgICByZXR1
cm4gbVZlcnRleEJ1ZmZlci0+c2V0QnVmZmVyU2l6ZShzaXplKTsKK30KKworZ2w6OkVycm9yT3JS
ZXN1bHQ8dW5zaWduZWQgaW50PiBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmdldFNwYWNlUmVxdWly
ZWQoCisgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgaW50
IHNwYWNlUmVxdWlyZWQgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQobUZhY3RvcnktPmdldFZl
cnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKSwgc3BhY2VSZXF1aXJl
ZCk7CisKKyAgICAvLyBBbGlnbiB0byAxNi1ieXRlIGJvdW5kYXJ5CisgICAgdW5zaWduZWQgaW50
IGFsaWduZWRTcGFjZVJlcXVpcmVkID0gcm91bmRVcChzcGFjZVJlcXVpcmVkLCAxNnUpOworCisg
ICAgaWYgKGFsaWduZWRTcGFjZVJlcXVpcmVkIDwgc3BhY2VSZXF1aXJlZCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtVmVydGV4QnVmZmVyLT5zZXRCdWZmZXJTaXplKHNpemUpOworICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIlZlcnRleCBidWZmZXIgb3ZlcmZsb3cgaW4gVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRT
cGFjZVJlcXVpcmVkLiIpOwogICAgIH0KKworICAgIHJldHVybiBhbGlnbmVkU3BhY2VSZXF1aXJl
ZDsKIH0KIAotdW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0V3JpdGVQb3Np
dGlvbigpIGNvbnN0CitnbDo6RXJyb3IgVmVydGV4QnVmZmVySW50ZXJmYWNlOjpkaXNjYXJkKCkK
IHsKLSAgICByZXR1cm4gbVdyaXRlUG9zaXRpb247CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXIt
PmRpc2NhcmQoKTsKIH0KIAotdm9pZCBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldFdyaXRlUG9z
aXRpb24odW5zaWduZWQgaW50IHdyaXRlUG9zaXRpb24pCitWZXJ0ZXhCdWZmZXIgKlZlcnRleEJ1
ZmZlckludGVyZmFjZTo6Z2V0VmVydGV4QnVmZmVyKCkgY29uc3QKIHsKLSAgICBtV3JpdGVQb3Np
dGlvbiA9IHdyaXRlUG9zaXRpb247CisgICAgcmV0dXJuIG1WZXJ0ZXhCdWZmZXI7CiB9CiAKLWds
OjpFcnJvciBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OmRpc2NhcmQoKQorLy8gU3RyZWFtaW5nVmVy
dGV4QnVmZmVySW50ZXJmYWNlIEltcGxlbWVudGF0aW9uCitTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2U6OlN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZShCdWZmZXJGYWN0b3J5RDNE
ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpCisgICAgOiBWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2UoZmFjdG9yeSwgdHJ1ZSksIG1Xcml0ZVBvc2l0aW9uKDApLCBtUmVzZXJ2
ZWRTcGFjZSgwKQogewotICAgIHJldHVybiBtVmVydGV4QnVmZmVyLT5kaXNjYXJkKCk7CisgICAg
c2V0QnVmZmVyU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluaXRpYWxTaXplKSk7CiB9
CiAKLWdsOjpFcnJvciBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlVmVydGV4QXR0cmlidXRl
cyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCkKK1N0
cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6flN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVy
ZmFjZSgpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yKEdMX05PX0VSUk9SKTsKK30KIAotICAgIHVu
c2lnbmVkIGludCBzcGFjZVJlcXVpcmVkOwotICAgIGVycm9yID0gbVZlcnRleEJ1ZmZlci0+Z2V0
U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMsICZzcGFjZVJlcXVpcmVkKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorZ2w6OkVycm9yIFN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHVuc2ln
bmVkIGludCBjdXJCdWZmZXJTaXplID0gZ2V0QnVmZmVyU2l6ZSgpOworICAgIGlmIChzaXplID4g
Y3VyQnVmZmVyU2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgQU5H
TEVfVFJZKHNldEJ1ZmZlclNpemUoc3RkOjptYXgoc2l6ZSwgMyAqIGN1ckJ1ZmZlclNpemUgLyAy
KSkpOworICAgICAgICBtV3JpdGVQb3NpdGlvbiA9IDA7CiAgICAgfQorICAgIGVsc2UgaWYgKG1X
cml0ZVBvc2l0aW9uICsgc2l6ZSA+IGN1ckJ1ZmZlclNpemUpCisgICAgeworICAgICAgICBBTkdM
RV9UUlkoZGlzY2FyZCgpKTsKKyAgICAgICAgbVdyaXRlUG9zaXRpb24gPSAwOworICAgIH0KIAot
ICAgIGlmIChtV3JpdGVQb3NpdGlvbiArIHNwYWNlUmVxdWlyZWQgPCBtV3JpdGVQb3NpdGlvbikK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFN0cmVhbWluZ1ZlcnRl
eEJ1ZmZlckludGVyZmFjZTo6c3RvcmVEeW5hbWljQXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY3VycmVudFZhbHVlVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEpCit7CisgICAgdW5zaWduZWQgaW50IHNwYWNlUmVxdWly
ZWQgPSAwOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNv
dW50LCBpbnN0YW5jZXMpLCBzcGFjZVJlcXVpcmVkKTsKKworICAgIC8vIFByb3RlY3QgYWdhaW5z
dCBpbnRlZ2VyIG92ZXJmbG93CisgICAgaWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1Xcml0
ZVBvc2l0aW9uLCBzcGFjZVJlcXVpcmVkKSkKICAgICB7CiAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIGVycm9yLCBuZXcgdmVydGV4IGJ1ZmZlciB3
cml0ZSBwb3NpdGlvbiB3b3VsZCBvdmVyZmxvdy4iKTsKICAgICB9CiAKLSAgICBlcnJvciA9IHJl
c2VydmVTcGFjZShtUmVzZXJ2ZWRTcGFjZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKHJlc2VydmVT
cGFjZShtUmVzZXJ2ZWRTcGFjZSkpOwogICAgIG1SZXNlcnZlZFNwYWNlID0gMDsKIAotICAgIGVy
cm9yID0gbVZlcnRleEJ1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgY3VycmVu
dFZhbHVlLCBzdGFydCwgY291bnQsIGluc3RhbmNlcywgbVdyaXRlUG9zaXRpb24pOwotICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQor
ICAgIEFOR0xFX1RSWShtVmVydGV4QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmli
LCBjdXJyZW50VmFsdWVUeXBlLCBzdGFydCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMsIG1Xcml0ZVBvc2l0aW9uLCBz
b3VyY2VEYXRhKSk7CiAKICAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KQogICAgIHsKQEAgLTEyNywx
MTMgKzE3OCw2NSBAQAogCiAgICAgbVdyaXRlUG9zaXRpb24gKz0gc3BhY2VSZXF1aXJlZDsKIAot
ICAgIC8vIEFsaWduIHRvIDE2LWJ5dGUgYm91bmRhcnkKLSAgICBtV3JpdGVQb3NpdGlvbiA9IHJv
dW5kVXAobVdyaXRlUG9zaXRpb24sIDE2dSk7Ci0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFZlcnRl
eEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVZlcnRleFNwYWNlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCitnbDo6RXJy
b3IgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlVmVydGV4U3BhY2UoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZSA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VM
VChtRmFjdG9yeS0+Z2V0VmVydGV4U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5j
ZXMpLCByZXF1aXJlZFNwYWNlKTsKIAotICAgIHVuc2lnbmVkIGludCByZXF1aXJlZFNwYWNlOwot
ICAgIGVycm9yID0gbVZlcnRleEJ1ZmZlci0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50
LCBpbnN0YW5jZXMsICZyZXF1aXJlZFNwYWNlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICAvLyBBbGlnbiB0byAxNi1i
eXRlIGJvdW5kYXJ5CisgICAgdW5zaWduZWQgaW50IGFsaWduZWRSZXF1aXJlZFNwYWNlID0gcm91
bmRVcChyZXF1aXJlZFNwYWNlLCAxNnUpOwogCiAgICAgLy8gUHJvdGVjdCBhZ2FpbnN0IGludGVn
ZXIgb3ZlcmZsb3cKLSAgICBpZiAobVJlc2VydmVkU3BhY2UgKyByZXF1aXJlZFNwYWNlIDwgbVJl
c2VydmVkU3BhY2UpCisgICAgaWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25TYWZlKG1SZXNlcnZlZFNw
YWNlLCBhbGlnbmVkUmVxdWlyZWRTcGFjZSkgfHwKKyAgICAgICAgYWxpZ25lZFJlcXVpcmVkU3Bh
Y2UgPCByZXF1aXJlZFNwYWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCAiVW5hYmxlIHRvIHJlc2VydmUgJXUgZXh0cmEgYnl0ZXMgaW4gaW50ZXJu
YWwgdmVydGV4IGJ1ZmZlciwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJpdCB3b3VsZCBy
ZXN1bHQgaW4gYW4gb3ZlcmZsb3cuIiwgcmVxdWlyZWRTcGFjZSk7CisgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVW5h
YmxlIHRvIHJlc2VydmUgJXUgZXh0cmEgYnl0ZXMgaW4gaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciwg
IgorICAgICAgICAgICAgICAgICAgICAgICAgICJpdCB3b3VsZCByZXN1bHQgaW4gYW4gb3ZlcmZs
b3cuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFNwYWNlKTsKICAgICB9CiAK
LSAgICBtUmVzZXJ2ZWRTcGFjZSArPSByZXF1aXJlZFNwYWNlOworICAgIG1SZXNlcnZlZFNwYWNl
ICs9IGFsaWduZWRSZXF1aXJlZFNwYWNlOwogCi0gICAgLy8gQWxpZ24gdG8gMTYtYnl0ZSBib3Vu
ZGFyeQotICAgIG1SZXNlcnZlZFNwYWNlID0gcm91bmRVcChtUmVzZXJ2ZWRTcGFjZSwgMTZ1KTsK
LQotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCi1WZXJ0ZXhCdWZmZXIqIFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0VmVy
dGV4QnVmZmVyKCkgY29uc3QKKy8vIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSBJbXBsZW1l
bnRhdGlvbgorU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpBdHRyaWJ1dGVTaWduYXR1cmU6
OkF0dHJpYnV0ZVNpZ25hdHVyZSgpCisgICAgOiB0eXBlKEdMX05PTkUpLCBzaXplKDApLCBzdHJp
ZGUoMCksIG5vcm1hbGl6ZWQoZmFsc2UpLCBwdXJlSW50ZWdlcihmYWxzZSksIG9mZnNldCgwKQog
ewotICAgIHJldHVybiBtVmVydGV4QnVmZmVyOwogfQogCi1ib29sIFZlcnRleEJ1ZmZlckludGVy
ZmFjZTo6ZGlyZWN0U3RvcmFnZVBvc3NpYmxlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZSkgY29u
c3QKK2Jvb2wgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpBdHRyaWJ1dGVTaWduYXR1cmU6
Om1hdGNoZXNBdHRyaWJ1dGUoCisgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
KSBjb25zdAogewotICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7
Ci0gICAgQnVmZmVyRDNEICpzdG9yYWdlID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1ZmZlckQzRD4o
YnVmZmVyKSA6IE5VTEw7CisgICAgc2l6ZV90IGF0dHJpYlN0cmlkZSA9IENvbXB1dGVWZXJ0ZXhB
dHRyaWJ1dGVTdHJpZGUoYXR0cmliKTsKIAotICAgIGlmICghc3RvcmFnZSB8fCAhc3RvcmFnZS0+
c3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkpCisgICAgaWYgKHR5cGUgIT0gYXR0cmliLnR5cGUgfHwg
c2l6ZSAhPSBhdHRyaWIuc2l6ZSB8fCBzdGF0aWNfY2FzdDxHTHVpbnQ+KHN0cmlkZSkgIT0gYXR0
cmliU3RyaWRlIHx8CisgICAgICAgIG5vcm1hbGl6ZWQgIT0gYXR0cmliLm5vcm1hbGl6ZWQgfHwg
cHVyZUludGVnZXIgIT0gYXR0cmliLnB1cmVJbnRlZ2VyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIEFsaWdubWVudCByZXN0cmljdGlvbnM6IEluIEQzRCwg
dmVydGV4IGRhdGEgbXVzdCBiZSBhbGlnbmVkIHRvCi0gICAgLy8gIHRoZSBmb3JtYXQgc3RyaWRl
LCBvciB0byBhIDQtYnl0ZSBib3VuZGFyeSwgd2hpY2hldmVyIGlzIHNtYWxsZXIuCi0gICAgLy8g
IChVbmRvY3VtZW50ZWQsIGFuZCBleHBlcmltZW50YWxseSBjb25maXJtZWQpCi0gICAgc2l6ZV90
IGFsaWdubWVudCA9IDQ7Ci0gICAgYm9vbCByZXF1aXJlc0NvbnZlcnNpb24gPSBmYWxzZTsKLQot
ICAgIGlmIChhdHRyaWIudHlwZSAhPSBHTF9GTE9BVCkKLSAgICB7Ci0gICAgICAgIGdsOjpWZXJ0
ZXhGb3JtYXQgdmVydGV4Rm9ybWF0KGF0dHJpYiwgY3VycmVudFZhbHVlLlR5cGUpOwotCi0gICAg
ICAgIHVuc2lnbmVkIGludCBvdXRwdXRFbGVtZW50U2l6ZTsKLSAgICAgICAgZ2V0VmVydGV4QnVm
ZmVyKCktPmdldFNwYWNlUmVxdWlyZWQoYXR0cmliLCAxLCAwLCAmb3V0cHV0RWxlbWVudFNpemUp
OwotICAgICAgICBhbGlnbm1lbnQgPSBzdGQ6Om1pbjxzaXplX3Q+KG91dHB1dEVsZW1lbnRTaXpl
LCA0KTsKLQotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBhZGQgVmVydGV4Rm9ybWF0Q2Fwcwot
ICAgICAgICByZXF1aXJlc0NvbnZlcnNpb24gPSAobUZhY3RvcnktPmdldFZlcnRleENvbnZlcnNp
b25UeXBlKHZlcnRleEZvcm1hdCkgJiBWRVJURVhfQ09OVkVSVF9DUFUpICE9IDA7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0FsaWduZWQgPSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihDb21wdXRlVmVydGV4
QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpICUgYWxpZ25tZW50ID09IDApICYmCi0gICAgICAgICAg
ICAgICAgICAgICAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhdHRyaWIub2Zmc2V0KSAlIGFsaWdubWVu
dCA9PSAwKTsKLQotICAgIHJldHVybiAhcmVxdWlyZXNDb252ZXJzaW9uICYmIGlzQWxpZ25lZDsK
KyAgICBzaXplX3QgYXR0cmliT2Zmc2V0ID0gKHN0YXRpY19jYXN0PHNpemVfdD4oYXR0cmliLm9m
ZnNldCkgJSBhdHRyaWJTdHJpZGUpOworICAgIHJldHVybiAob2Zmc2V0ID09IGF0dHJpYk9mZnNl
dCk7CiB9CiAKLVN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6U3RyZWFtaW5nVmVydGV4
QnVmZmVySW50ZXJmYWNlKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnksIHN0ZDo6c2l6ZV90IGlu
aXRpYWxTaXplKQotICAgIDogVmVydGV4QnVmZmVySW50ZXJmYWNlKGZhY3RvcnksIHRydWUpCit2
b2lkIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6QXR0cmlidXRlU2lnbmF0dXJlOjpzZXQo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKQogewotICAgIHNldEJ1ZmZlclNpemUo
aW5pdGlhbFNpemUpOworICAgIHR5cGUgICAgICAgID0gYXR0cmliLnR5cGU7CisgICAgc2l6ZSAg
ICAgICAgPSBhdHRyaWIuc2l6ZTsKKyAgICBub3JtYWxpemVkICA9IGF0dHJpYi5ub3JtYWxpemVk
OworICAgIHB1cmVJbnRlZ2VyID0gYXR0cmliLnB1cmVJbnRlZ2VyOworICAgIG9mZnNldCA9IHN0
cmlkZSA9IHN0YXRpY19jYXN0PEdMdWludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShh
dHRyaWIpKTsKKyAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYi5vZmZzZXQp
ICUgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpOwogfQogCi1TdHJlYW1pbmdW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKQot
ewotfQotCi1nbDo6RXJyb3IgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZl
U3BhY2UodW5zaWduZWQgaW50IHNpemUpCi17Ci0gICAgdW5zaWduZWQgaW50IGN1ckJ1ZmZlclNp
emUgPSBnZXRCdWZmZXJTaXplKCk7Ci0gICAgaWYgKHNpemUgPiBjdXJCdWZmZXJTaXplKQotICAg
IHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gc2V0QnVmZmVyU2l6ZShzdGQ6Om1heChzaXpl
LCAzICogY3VyQnVmZmVyU2l6ZSAvIDIpKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgICAg
IHNldFdyaXRlUG9zaXRpb24oMCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGdldFdyaXRlUG9zaXRp
b24oKSArIHNpemUgPiBjdXJCdWZmZXJTaXplKQotICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVy
cm9yID0gZGlzY2FyZCgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0V3JpdGVQ
b3NpdGlvbigwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
LX0KLQogU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRl
cmZhY2UoQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKICAgICA6IFZlcnRleEJ1ZmZlckludGVy
ZmFjZShmYWN0b3J5LCBmYWxzZSkKIHsKQEAgLTI0Myw2OSArMjQ2LDMzIEBACiB7CiB9CiAKLWJv
b2wgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpsb29rdXBBdHRyaWJ1dGUoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCkK
K2Jvb2wgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjptYXRjaGVzQXR0cmlidXRlKGNvbnN0
IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKIHsKLSAgICBmb3IgKHVuc2lnbmVk
IGludCBlbGVtZW50ID0gMDsgZWxlbWVudCA8IG1DYWNoZS5zaXplKCk7IGVsZW1lbnQrKykKLSAg
ICB7Ci0gICAgICAgIGlmIChtQ2FjaGVbZWxlbWVudF0udHlwZSA9PSBhdHRyaWIudHlwZSAmJgot
ICAgICAgICAgICAgbUNhY2hlW2VsZW1lbnRdLnNpemUgPT0gYXR0cmliLnNpemUgJiYKLSAgICAg
ICAgICAgIG1DYWNoZVtlbGVtZW50XS5zdHJpZGUgPT0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0
cmlkZShhdHRyaWIpICYmCi0gICAgICAgICAgICBtQ2FjaGVbZWxlbWVudF0ubm9ybWFsaXplZCA9
PSBhdHRyaWIubm9ybWFsaXplZCAmJgotICAgICAgICAgICAgbUNhY2hlW2VsZW1lbnRdLnB1cmVJ
bnRlZ2VyID09IGF0dHJpYi5wdXJlSW50ZWdlcikKLSAgICAgICAgewotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IChzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYi5vZmZzZXQpICUgQ29tcHV0
ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpKTsKLSAgICAgICAgICAgIGlmIChtQ2FjaGVb
ZWxlbWVudF0uYXR0cmlidXRlT2Zmc2V0ID09IG9mZnNldCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpZiAob3V0U3RyZWFtT2Zmc2V0KQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgKm91dFN0cmVhbU9mZnNldCA9IG1DYWNoZVtlbGVtZW50XS5zdHJlYW1P
ZmZzZXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBtU2lnbmF0dXJlLm1hdGNoZXNBdHRyaWJ1dGUoYXR0cmliKTsKIH0KIAotZ2w6OkVy
cm9yIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGlu
dCBzaXplKQordm9pZCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNldEF0dHJpYnV0ZShj
b25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpCiB7Ci0gICAgdW5zaWduZWQgaW50IGN1
clNpemUgPSBnZXRCdWZmZXJTaXplKCk7Ci0gICAgaWYgKGN1clNpemUgPT0gMCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBzZXRCdWZmZXJTaXplKHNpemUpOwotICAgIH0KLSAgICBlbHNlIGlmIChj
dXJTaXplID49IHNpemUpCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkludGVybmFsIGVy
cm9yLCBTdGF0aWMgdmVydGV4IGJ1ZmZlcnMgY2FuJ3QgYmUgcmVzaXplZC4iKTsKLSAgICB9Cisg
ICAgcmV0dXJuIG1TaWduYXR1cmUuc2V0KGF0dHJpYik7CiB9CiAKLWdsOjpFcnJvciBTdGF0aWNW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVE
YXRhICZjdXJyZW50VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6
ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCkKK2dsOjpFcnJvciBT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlU3RhdGljQXR0cmlidXRlKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0
YSkKIHsKLSAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zmc2V0OwotICAgIGdsOjpFcnJvciBlcnJv
ciA9IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwg
Y3VycmVudFZhbHVlLCBzdGFydCwgY291bnQsIGluc3RhbmNlcywgJnN0cmVhbU9mZnNldCk7Ci0g
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICB9CisgICAgdW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQgPSAwOworICAgIEFOR0xFX1RSWV9S
RVNVTFQoZ2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCBzcGFjZVJl
cXVpcmVkKTsKKyAgICBzZXRCdWZmZXJTaXplKHNwYWNlUmVxdWlyZWQpOwogCi0gICAgc2l6ZV90
IGF0dHJpYnV0ZU9mZnNldCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYXR0cmliLm9mZnNldCkgJSBD
b21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYik7Ci0gICAgVmVydGV4RWxlbWVudCBl
bGVtZW50ID0geyBhdHRyaWIudHlwZSwgYXR0cmliLnNpemUsIHN0YXRpY19jYXN0PEdMdWludD4o
Q29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpKSwgYXR0cmliLm5vcm1hbGl6ZWQs
IGF0dHJpYi5wdXJlSW50ZWdlciwgYXR0cmlidXRlT2Zmc2V0LCBzdHJlYW1PZmZzZXQgfTsKLSAg
ICBtQ2FjaGUucHVzaF9iYWNrKGVsZW1lbnQpOworICAgIEFTU0VSVChhdHRyaWIuZW5hYmxlZCk7
CisgICAgQU5HTEVfVFJZKG1WZXJ0ZXhCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRy
aWIsIEdMX05PTkUsIHN0YXJ0LCBjb3VudCwgaW5zdGFuY2VzLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlRGF0YSkpOwogCi0gICAg
aWYgKG91dFN0cmVhbU9mZnNldCkKLSAgICB7Ci0gICAgICAgICpvdXRTdHJlYW1PZmZzZXQgPSBz
dHJlYW1PZmZzZXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgbVNpZ25hdHVyZS5zZXQoYXR0cmliKTsKKyAgICBtVmVydGV4QnVmZmVyLT5oaW50VW5t
YXBSZXNvdXJjZSgpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi19Cit9ICAvLyBu
YW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaAkocmV2aXNp
b24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTYsNiArMTYsNyBAQAog
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgogCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxj
c3RkaW50PgogI2luY2x1ZGUgPHZlY3Rvcj4KIAogbmFtZXNwYWNlIGdsCkBAIC0yOCwxOCArMjks
MjIgQEAKIHsKIGNsYXNzIEJ1ZmZlckZhY3RvcnlEM0Q7CiAKKy8vIFVzZSBhIHJlZi1jb3VudGlu
ZyBzY2hlbWUgd2l0aCBzZWxmLWRlbGV0aW9uIG9uIHJlbGVhc2UuIFdlIGRvIHRoaXMgc28gdGhh
dCB3ZSBjYW4gbW9yZQorLy8gZWFzaWx5IG1hbmFnZSB0aGUgc3RhdGljIGJ1ZmZlciBjYWNoZSwg
d2l0aG91dCBkZWxldGluZyBjdXJyZW50bHkgYm91bmQgYnVmZmVycy4KIGNsYXNzIFZlcnRleEJ1
ZmZlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CiAgICAgVmVydGV4QnVmZmVy
KCk7Ci0gICAgdmlydHVhbCB+VmVydGV4QnVmZmVyKCk7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBpbml0aWFsaXplKHVuc2lnbmVkIGludCBzaXplLCBib29sIGR5bmFtaWNVc2FnZSkgPSAwOwog
Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Igc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpW
ZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgY29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZURhdGEgJmN1cnJlbnRWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLCB1
bnNpZ25lZCBpbnQgb2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3BhY2VS
ZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291bnQs
IEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVkKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBnbDo6RXJyb3Igc3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGN1cnJlbnRWYWx1ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0
YSkgPSAwOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBz
aXplKSA9IDA7CkBAIC01MCwxMiArNTUsMTggQEAKICAgICAvLyBUaGlzIG1heSBiZSBvdmVycmlk
ZGVuIChlLmcuIGJ5IFZlcnRleEJ1ZmZlcjExKSBpZiBuZWNlc3NhcnkuCiAgICAgdmlydHVhbCB2
b2lkIGhpbnRVbm1hcFJlc291cmNlKCkgeyB9OwogCisgICAgLy8gUmVmZXJlbmNlIGNvdW50aW5n
LgorICAgIHZvaWQgYWRkUmVmKCk7CisgICAgdm9pZCByZWxlYXNlKCk7CisKICAgcHJvdGVjdGVk
OgogICAgIHZvaWQgdXBkYXRlU2VyaWFsKCk7CisgICAgdmlydHVhbCB+VmVydGV4QnVmZmVyKCk7
CiAKICAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBpbnQgbVNlcmlhbDsKICAgICBzdGF0aWMgdW5z
aWduZWQgaW50IG1OZXh0U2VyaWFsOworICAgIHVuc2lnbmVkIGludCBtUmVmQ291bnQ7CiB9Owog
CiBjbGFzcyBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgOiBhbmdsZTo6Tm9uQ29weWFibGUKQEAgLTY0
LDM3ICs3NSwyMiBAQAogICAgIFZlcnRleEJ1ZmZlckludGVyZmFjZShCdWZmZXJGYWN0b3J5RDNE
ICpmYWN0b3J5LCBib29sIGR5bmFtaWMpOwogICAgIHZpcnR1YWwgflZlcnRleEJ1ZmZlckludGVy
ZmFjZSgpOwogCi0gICAgZ2w6OkVycm9yIHJlc2VydmVWZXJ0ZXhTcGFjZShjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWJ1dGUsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2Vz
KTsKLQogICAgIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXplKCkgY29uc3Q7CisgICAgYm9vbCBl
bXB0eSgpIGNvbnN0IHsgcmV0dXJuIGdldEJ1ZmZlclNpemUoKSA9PSAwOyB9CiAKICAgICB1bnNp
Z25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBjb25z
dCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGludCAqb3V0U3RyZWFtT2Zmc2V0
KTsKKyAgICBWZXJ0ZXhCdWZmZXIgKmdldFZlcnRleEJ1ZmZlcigpIGNvbnN0OwogCi0gICAgYm9v
bCBkaXJlY3RTdG9yYWdlUG9zc2libGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWUpIGNvbnN0OwotCi0gICAgVmVydGV4QnVmZmVy
KiBnZXRWZXJ0ZXhCdWZmZXIoKSBjb25zdDsKLQogICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBn
bDo6RXJyb3IgcmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKSA9IDA7Ci0KLSAgICB1bnNp
Z25lZCBpbnQgZ2V0V3JpdGVQb3NpdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0V3JpdGVQb3Np
dGlvbih1bnNpZ25lZCBpbnQgd3JpdGVQb3NpdGlvbik7Ci0KICAgICBnbDo6RXJyb3IgZGlzY2Fy
ZCgpOwogCiAgICAgZ2w6OkVycm9yIHNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpOwot
Ci0gIHByaXZhdGU6CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBnZXRTcGFj
ZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMpIGNvbnN0OwogICAgIEJ1ZmZlckZhY3RvcnlEM0QgKmNvbnN0IG1GYWN0
b3J5OwotCi0gICAgVmVydGV4QnVmZmVyKiBtVmVydGV4QnVmZmVyOwotCi0gICAgdW5zaWduZWQg
aW50IG1Xcml0ZVBvc2l0aW9uOwotICAgIHVuc2lnbmVkIGludCBtUmVzZXJ2ZWRTcGFjZTsKKyAg
ICBWZXJ0ZXhCdWZmZXIgKm1WZXJ0ZXhCdWZmZXI7CiAgICAgYm9vbCBtRHluYW1pYzsKIH07CiAK
QEAgLTEwNCw4ICsxMDAsMjMgQEAKICAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2Uo
QnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSwgc3RkOjpzaXplX3QgaW5pdGlhbFNpemUpOwogICAg
IH5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKIAotICBwcm90ZWN0ZWQ6CisgICAg
Z2w6OkVycm9yIHN0b3JlRHluYW1pY0F0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY3Vy
cmVudFZhbHVlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpvdXRT
dHJlYW1PZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpzb3VyY2VEYXRhKTsKKworICAgIGdsOjpFcnJvciByZXNlcnZlVmVydGV4U3BhY2Uo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKworICBwcml2YXRlOgogICAgIGdsOjpFcnJvciBy
ZXNlcnZlU3BhY2UodW5zaWduZWQgaW50IHNpemUpOworCisgICAgdW5zaWduZWQgaW50IG1Xcml0
ZVBvc2l0aW9uOworICAgIHVuc2lnbmVkIGludCBtUmVzZXJ2ZWRTcGFjZTsKIH07CiAKIGNsYXNz
IFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSA6IHB1YmxpYyBWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UKQEAgLTExNCwzMCArMTI1LDM1IEBACiAgICAgZXhwbGljaXQgU3RhdGljVmVydGV4QnVmZmVy
SW50ZXJmYWNlKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpOwogICAgIH5TdGF0aWNWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2UoKTsKIAotICAgIGdsOjpFcnJvciBzdG9yZVZlcnRleEF0dHJpYnV0ZXMo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBjb25zdCBnbDo6VmVydGV4QXR0cmli
Q3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2Vz
LCB1bnNpZ25lZCBpbnQgKm91dFN0cmVhbU9mZnNldCk7CisgICAgZ2w6OkVycm9yIHN0b3JlU3Rh
dGljQXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhKTsKIAotICAgIGJvb2wgbG9va3Vw
QXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgdW5zaWduZWQg
aW50KiBvdXRTdHJlYW1GZmZzZXQpOworICAgIGJvb2wgbWF0Y2hlc0F0dHJpYnV0ZShjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpIGNvbnN0OworICAgIHZvaWQgc2V0QXR0cmli
dXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CiAKLSAgcHJvdGVjdGVk
OgotICAgIGdsOjpFcnJvciByZXNlcnZlU3BhY2UodW5zaWduZWQgaW50IHNpemUpOwotCiAgIHBy
aXZhdGU6Ci0gICAgc3RydWN0IFZlcnRleEVsZW1lbnQKKyAgICBjbGFzcyBBdHRyaWJ1dGVTaWdu
YXR1cmUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CisgICAgICBwdWJsaWM6Cisg
ICAgICAgIEF0dHJpYnV0ZVNpZ25hdHVyZSgpOworICAgICAgICBib29sIG1hdGNoZXNBdHRyaWJ1
dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKKyAgICAgICAgdm9p
ZCBzZXQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKTsKKworICAgICAgcHJpdmF0
ZToKICAgICAgICAgR0xlbnVtIHR5cGU7CiAgICAgICAgIEdMdWludCBzaXplOwogICAgICAgICBH
THVpbnQgc3RyaWRlOwogICAgICAgICBib29sIG5vcm1hbGl6ZWQ7CiAgICAgICAgIGJvb2wgcHVy
ZUludGVnZXI7Ci0gICAgICAgIHNpemVfdCBhdHRyaWJ1dGVPZmZzZXQ7Ci0KLSAgICAgICAgdW5z
aWduZWQgaW50IHN0cmVhbU9mZnNldDsKKyAgICAgICAgc2l6ZV90IG9mZnNldDsKICAgICB9Owog
Ci0gICAgc3RkOjp2ZWN0b3I8VmVydGV4RWxlbWVudD4gbUNhY2hlOworICAgIEF0dHJpYnV0ZVNp
Z25hdHVyZSBtU2lnbmF0dXJlOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRp
ZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfVkVSVEVYQlVGRkVSX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0
ZXhEYXRhTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTksMjUgKzksMzIgQEAKIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5oIgogCisjaW5j
bHVkZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVy
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmgiCiAKK25hbWVzcGFjZSByeAorewogbmFtZXNw
YWNlCiB7Ci0gICAgZW51bSB7IElOSVRJQUxfU1RSRUFNX0JVRkZFUl9TSVpFID0gMTAyNCoxMDI0
IH07Ci0gICAgLy8gVGhpcyBoYXMgdG8gYmUgYXQgbGVhc3QgNGsgb3IgZWxzZSBpdCBmYWlscyBv
biBBVEkgY2FyZHMuCi0gICAgZW51bSB7IENPTlNUQU5UX1ZFUlRFWF9CVUZGRVJfU0laRSA9IDQw
OTYgfTsKLX0KLQotbmFtZXNwYWNlIHJ4CitlbnVtCiB7CisgICAgSU5JVElBTF9TVFJFQU1fQlVG
RkVSX1NJWkUgPSAxMDI0ICogMTAyNAorfTsKKy8vIFRoaXMgaGFzIHRvIGJlIGF0IGxlYXN0IDRr
IG9yIGVsc2UgaXQgZmFpbHMgb24gQVRJIGNhcmRzLgorZW51bQoreworICAgIENPTlNUQU5UX1ZF
UlRFWF9CVUZGRVJfU0laRSA9IDQwOTYKK307CiAKLXN0YXRpYyBpbnQgRWxlbWVudHNJbkJ1ZmZl
cihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIHVuc2lnbmVkIGludCBzaXplKQor
aW50IEVsZW1lbnRzSW5CdWZmZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCB1
bnNpZ25lZCBpbnQgc2l6ZSkKIHsKICAgICAvLyBTaXplIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBh
IEdMc2l6ZWkKICAgICBpZiAoc2l6ZSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCkBAIC0zNSwzNjIgKzQyLDU1NSBAQAogICAgICAg
ICBzaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpKTsKICAgICB9CiAKLSAgICBHTHNpemVpIHN0cmlkZSA9IENvbXB1dGVWZXJ0ZXhB
dHRyaWJ1dGVTdHJpZGUoYXR0cmliKTsKLSAgICByZXR1cm4gKHNpemUgLSBhdHRyaWIub2Zmc2V0
ICUgc3RyaWRlICsgKHN0cmlkZSAtIENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRy
aWIpKSkgLyBzdHJpZGU7CisgICAgR0xzaXplaSBzdHJpZGUgPSBzdGF0aWNfY2FzdDxHTHNpemVp
PihDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAgIHJldHVybiAoc2l6
ZSAtIGF0dHJpYi5vZmZzZXQgJSBzdHJpZGUgKworICAgICAgICAgICAgKHN0cmlkZSAtIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRyaWIpKSkp
IC8KKyAgICAgICAgICAgc3RyaWRlOwogfQogCi1zdGF0aWMgaW50IFN0cmVhbWluZ0J1ZmZlckVs
ZW1lbnRDb3VudChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIGludCB2ZXJ0ZXhE
cmF3Q291bnQsIGludCBpbnN0YW5jZURyYXdDb3VudCkKK2Jvb2wgRGlyZWN0U3RvcmFnZVBvc3Np
YmxlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikKIHsKLSAgICAvLyBGb3IgaW5z
dGFuY2VkIHJlbmRlcmluZywgd2UgZHJhdyAiaW5zdGFuY2VEcmF3Q291bnQiIHNldHMgb2YgInZl
cnRleERyYXdDb3VudCIgdmVydGljZXMuCi0gICAgLy8KLSAgICAvLyBBIHZlcnRleCBhdHRyaWJ1
dGUgd2l0aCBhIHBvc2l0aXZlIGRpdmlzb3IgbG9hZHMgb25lIGluc3RhbmNlZCB2ZXJ0ZXggZm9y
IGV2ZXJ5IHNldCBvZgotICAgIC8vIG5vbi1pbnN0YW5jZWQgdmVydGljZXMsIGFuZCB0aGUgaW5z
dGFuY2VkIHZlcnRleCBpbmRleCBhZHZhbmNlcyBvbmNlIGV2ZXJ5ICJtRGl2aXNvciIgaW5zdGFu
Y2VzLgotICAgIGlmIChpbnN0YW5jZURyYXdDb3VudCA+IDAgJiYgYXR0cmliLmRpdmlzb3IgPiAw
KQorICAgIC8vIEN1cnJlbnQgdmFsdWUgYXR0cmlicyBtYXkgbm90IHVzZSBkaXJlY3Qgc3RvcmFn
ZS4KKyAgICBpZiAoIWF0dHJpYi5lbmFibGVkKQogICAgIHsKLSAgICAgICAgLy8gV2hlbiBpbnN0
YW5jZURyYXdDb3VudCBpcyBub3QgYSBtdWx0aXBsZSBhdHRyaWIuZGl2aXNvciwgdGhlIGRpdmlz
aW9uIG11c3Qgcm91bmQgdXAuCi0gICAgICAgIC8vIEZvciBpbnN0YW5jZSwgd2l0aCA1IG5vbi1p
bnN0YW5jZWQgdmVydGljZXMgYW5kIGEgZGl2aXNvciBlcXVhbCB0byAzLCB3ZSBuZWVkIDIgaW5z
dGFuY2VkIHZlcnRpY2VzLgotICAgICAgICByZXR1cm4gKGluc3RhbmNlRHJhd0NvdW50ICsgYXR0
cmliLmRpdmlzb3IgLSAxKSAvIGF0dHJpYi5kaXZpc29yOworICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgcmV0dXJuIHZlcnRleERyYXdDb3VudDsKLX0KKyAgICBnbDo6QnVmZmVy
ICpidWZmZXIgPSBhdHRyaWIuYnVmZmVyLmdldCgpOworICAgIGlmICghYnVmZmVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotVmVydGV4RGF0YU1hbmFnZXI6OlZlcnRl
eERhdGFNYW5hZ2VyKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpCi0gICAgOiBtRmFjdG9yeShm
YWN0b3J5KQotewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklC
UzsgaSsrKQorICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4o
YnVmZmVyKTsKKyAgICBBU1NFUlQoYnVmZmVyRDNEKTsKKyAgICBpZiAoIWJ1ZmZlckQzRC0+c3Vw
cG9ydHNEaXJlY3RCaW5kaW5nKCkpCiAgICAgewotICAgICAgICBtQ3VycmVudFZhbHVlW2ldLkZs
b2F0VmFsdWVzWzBdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOwot
ICAgICAgICBtQ3VycmVudFZhbHVlW2ldLkZsb2F0VmFsdWVzWzFdID0gc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OnF1aWV0X05hTigpOwotICAgICAgICBtQ3VycmVudFZhbHVlW2ldLkZsb2F0
VmFsdWVzWzJdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOwotICAg
ICAgICBtQ3VycmVudFZhbHVlW2ldLkZsb2F0VmFsdWVzWzNdID0gc3RkOjpudW1lcmljX2xpbWl0
czxmbG9hdD46OnF1aWV0X05hTigpOwotICAgICAgICBtQ3VycmVudFZhbHVlW2ldLlR5cGUgPSBH
TF9GTE9BVDsKLSAgICAgICAgbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXSA9IE5VTEw7Ci0gICAgICAg
IG1DdXJyZW50VmFsdWVPZmZzZXRzW2ldID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIG1TdHJlYW1pbmdCdWZmZXIgPSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50
ZXJmYWNlKGZhY3RvcnksIElOSVRJQUxfU1RSRUFNX0JVRkZFUl9TSVpFKTsKKyAgICAvLyBBbGln
bm1lbnQgcmVzdHJpY3Rpb25zOiBJbiBEM0QsIHZlcnRleCBkYXRhIG11c3QgYmUgYWxpZ25lZCB0
byB0aGUgZm9ybWF0IHN0cmlkZSwgb3IgdG8gYQorICAgIC8vIDQtYnl0ZSBib3VuZGFyeSwgd2hp
Y2hldmVyIGlzIHNtYWxsZXIuIChVbmRvY3VtZW50ZWQsIGFuZCBleHBlcmltZW50YWxseSBjb25m
aXJtZWQpCisgICAgc2l6ZV90IGFsaWdubWVudCA9IDQ7CiAKLSAgICBpZiAoIW1TdHJlYW1pbmdC
dWZmZXIpCisgICAgaWYgKGF0dHJpYi50eXBlICE9IEdMX0ZMT0FUKQogICAgIHsKLSAgICAgICAg
RVJSKCJGYWlsZWQgdG8gYWxsb2NhdGUgdGhlIHN0cmVhbWluZyB2ZXJ0ZXggYnVmZmVyLiIpOwor
ICAgICAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlID0gZ2w6OkdldFZl
cnRleEZvcm1hdFR5cGUoYXR0cmliKTsKKworICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBhZGQg
VmVydGV4Rm9ybWF0Q2FwcworICAgICAgICBCdWZmZXJGYWN0b3J5RDNEICpmYWN0b3J5ID0gYnVm
ZmVyRDNELT5nZXRGYWN0b3J5KCk7CisKKyAgICAgICAgYXV0byBlcnJvck9yRWxlbWVudFNpemUg
PSBmYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgMSwgMCk7CisgICAgICAg
IGlmIChlcnJvck9yRWxlbWVudFNpemUuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIlVubG9nZ2VkIGVycm9yIGluIERpcmVjdFN0b3JhZ2VQb3NzaWJsZS4iKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGFsaWdubWVudCA9IHN0
ZDo6bWluPHNpemVfdD4oZXJyb3JPckVsZW1lbnRTaXplLmdldFJlc3VsdCgpLCA0KTsKKworICAg
ICAgICAvLyBDUFUtY29udmVydGVkIHZlcnRleCBkYXRhIG11c3QgYmUgY29udmVydGVkIChuYXR1
cmFsbHkpLgorICAgICAgICBpZiAoKGZhY3RvcnktPmdldFZlcnRleENvbnZlcnNpb25UeXBlKHZl
cnRleEZvcm1hdFR5cGUpICYgVkVSVEVYX0NPTlZFUlRfQ1BVKSAhPSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBGaW5h
bCBhbGlnbm1lbnQgY2hlY2sgLSB1bmFsaWduZWQgZGF0YSBtdXN0IGJlIGNvbnZlcnRlZC4KKyAg
ICByZXR1cm4gKHN0YXRpY19jYXN0PHNpemVfdD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlk
ZShhdHRyaWIpKSAlIGFsaWdubWVudCA9PSAwKSAmJgorICAgICAgICAgICAoc3RhdGljX2Nhc3Q8
c2l6ZV90PihhdHRyaWIub2Zmc2V0KSAlIGFsaWdubWVudCA9PSAwKTsKIH0KK30gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKIAotVmVydGV4RGF0YU1hbmFnZXI6On5WZXJ0ZXhEYXRhTWFuYWdlcigp
CitUcmFuc2xhdGVkQXR0cmlidXRlOjpUcmFuc2xhdGVkQXR0cmlidXRlKCkKKyAgICA6IGFjdGl2
ZShmYWxzZSksCisgICAgICBhdHRyaWJ1dGUobnVsbHB0ciksCisgICAgICBjdXJyZW50VmFsdWVU
eXBlKEdMX05PTkUpLAorICAgICAgYmFzZU9mZnNldCgwKSwKKyAgICAgIHVzZXNGaXJzdFZlcnRl
eE9mZnNldChmYWxzZSksCisgICAgICBzdHJpZGUoMCksCisgICAgICB2ZXJ0ZXhCdWZmZXIoKSwK
KyAgICAgIHN0b3JhZ2UobnVsbHB0ciksCisgICAgICBzZXJpYWwoMCksCisgICAgICBkaXZpc29y
KDApCiB7Ci0gICAgZGVsZXRlIG1TdHJlYW1pbmdCdWZmZXI7Cit9CiAKLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKK2dsOjpFcnJvck9yUmVzdWx0
PHVuc2lnbmVkIGludD4gVHJhbnNsYXRlZEF0dHJpYnV0ZTo6Y29tcHV0ZU9mZnNldChHTGludCBz
dGFydFZlcnRleCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0gYmFzZU9mZnNl
dDsKKyAgICBpZiAodXNlc0ZpcnN0VmVydGV4T2Zmc2V0KQogICAgIHsKLSAgICAgICAgZGVsZXRl
IG1DdXJyZW50VmFsdWVCdWZmZXJbaV07CisgICAgICAgIHVuc2lnbmVkIGludCBzdGFydFZlcnRl
eFVuc2lnbmVkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGFydFZlcnRleCk7CisKKyAg
ICAgICAgaWYgKCFJc1Vuc2lnbmVkTXVsdGlwbGljYXRpb25TYWZlKHN0cmlkZSwgc3RhcnRWZXJ0
ZXhVbnNpZ25lZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdWx0aXBs
aWNhdGlvbiBvdmVyZmxvdyBpbiBUcmFuc2xhdGVkQXR0cmlidXRlOjpjb21wdXRlT2Zmc2V0Iik7
CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQgc3RyaWRlT2Zmc2V0ID0gc3RyaWRl
ICogc3RhcnRWZXJ0ZXhVbnNpZ25lZDsKKyAgICAgICAgaWYgKCFJc1Vuc2lnbmVkQWRkaXRpb25T
YWZlKG9mZnNldCwgc3RyaWRlT2Zmc2V0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkFkZGl0aW9uIG92ZXJmbG93IGluIFRyYW5zbGF0ZWRBdHRyaWJ1dGU6OmNvbXB1dGVP
ZmZzZXQiKTsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCArPSBzdHJpZGVPZmZzZXQ7CiAg
ICAgfQorICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLXZvaWQgVmVydGV4RGF0YU1hbmFnZXI6Omhp
bnRVbm1hcEFsbFJlc291cmNlcyhjb25zdCBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4QXR0cmlidXRl
PiAmdmVydGV4QXR0cmlidXRlcykKK1ZlcnRleFN0b3JhZ2VUeXBlIENsYXNzaWZ5QXR0cmlidXRl
U3RvcmFnZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpCiB7Ci0gICAgbVN0cmVh
bWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmhpbnRVbm1hcFJlc291cmNlKCk7CisgICAg
Ly8gSWYgYXR0cmlidXRlIGlzIGRpc2FibGVkLCB3ZSB1c2UgdGhlIGN1cnJlbnQgdmFsdWUuCisg
ICAgaWYgKCFhdHRyaWIuZW5hYmxlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBWZXJ0ZXhTdG9y
YWdlVHlwZTo6Q1VSUkVOVF9WQUxVRTsKKyAgICB9CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHZlcnRleEF0dHJpYnV0ZXMuc2l6ZSgpOyBpKyspCisgICAgLy8gSWYgc3BlY2lmaWVkIHdp
dGggaW1tZWRpYXRlIGRhdGEsIHdlIG11c3QgdXNlIGR5bmFtaWMgc3RvcmFnZS4KKyAgICBhdXRv
ICpidWZmZXIgPSBhdHRyaWIuYnVmZmVyLmdldCgpOworICAgIGlmICghYnVmZmVyKQogICAgIHsK
LSAgICAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gdmVydGV4QXR0cmli
dXRlc1tpXTsKLSAgICAgICAgaWYgKGF0dHJpYi5lbmFibGVkKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIuYnVmZmVyLmdldCgpOwotICAgICAgICAg
ICAgQnVmZmVyRDNEICpzdG9yYWdlID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVm
ZmVyKSA6IE5VTEw7Ci0gICAgICAgICAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0
YXRpY0J1ZmZlciA9IHN0b3JhZ2UgPyBzdG9yYWdlLT5nZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoKSA6
IE5VTEw7CisgICAgICAgIHJldHVybiBWZXJ0ZXhTdG9yYWdlVHlwZTo6RFlOQU1JQzsKKyAgICB9
CiAKLSAgICAgICAgICAgIGlmIChzdGF0aWNCdWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGljQnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+aGludFVubWFwUmVzb3Vy
Y2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIENoZWNrIGlmIHRoZSBidWZm
ZXIgc3VwcG9ydHMgZGlyZWN0IHN0b3JhZ2UuCisgICAgaWYgKERpcmVjdFN0b3JhZ2VQb3NzaWJs
ZShhdHRyaWIpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFZlcnRleFN0b3JhZ2VUeXBlOjpESVJF
Q1Q7CiAgICAgfQogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRS
SUJTOyBpKyspCisgICAgLy8gT3RoZXJ3aXNlIHRoZSBzdG9yYWdlIGlzIHN0YXRpYyBvciBkeW5h
bWljLgorICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVm
ZmVyKTsKKyAgICBBU1NFUlQoYnVmZmVyRDNEKTsKKyAgICBzd2l0Y2ggKGJ1ZmZlckQzRC0+Z2V0
VXNhZ2UoKSkKICAgICB7Ci0gICAgICAgIGlmIChtQ3VycmVudFZhbHVlQnVmZmVyW2ldICE9IE5V
TEwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1DdXJyZW50VmFsdWVCdWZmZXJbaV0tPmdldFZl
cnRleEJ1ZmZlcigpLT5oaW50VW5tYXBSZXNvdXJjZSgpOwotICAgICAgICB9CisgICAgICAgIGNh
c2UgRDNEQnVmZmVyVXNhZ2U6OkRZTkFNSUM6CisgICAgICAgICAgICByZXR1cm4gVmVydGV4U3Rv
cmFnZVR5cGU6OkRZTkFNSUM7CisgICAgICAgIGNhc2UgRDNEQnVmZmVyVXNhZ2U6OlNUQVRJQzoK
KyAgICAgICAgICAgIHJldHVybiBWZXJ0ZXhTdG9yYWdlVHlwZTo6U1RBVElDOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBW
ZXJ0ZXhTdG9yYWdlVHlwZTo6VU5LTk9XTjsKICAgICB9CiB9CiAKLWdsOjpFcnJvciBWZXJ0ZXhE
YXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERhdGEoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xp
bnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWQsIEdMc2l6ZWkg
aW5zdGFuY2VzKQorVmVydGV4RGF0YU1hbmFnZXI6OkN1cnJlbnRWYWx1ZVN0YXRlOjpDdXJyZW50
VmFsdWVTdGF0ZSgpCisgICAgOiBidWZmZXIobnVsbHB0ciksCisgICAgICBvZmZzZXQoMCkKIHsK
KyAgICBkYXRhLkZsb2F0VmFsdWVzWzBdID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1
aWV0X05hTigpOworICAgIGRhdGEuRmxvYXRWYWx1ZXNbMV0gPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6cXVpZXRfTmFOKCk7CisgICAgZGF0YS5GbG9hdFZhbHVlc1syXSA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKTsKKyAgICBkYXRhLkZsb2F0VmFsdWVzWzNd
ID0gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpOworICAgIGRhdGEuVHlw
ZSA9IEdMX0ZMT0FUOworfQorCitWZXJ0ZXhEYXRhTWFuYWdlcjo6Q3VycmVudFZhbHVlU3RhdGU6
On5DdXJyZW50VmFsdWVTdGF0ZSgpCit7CisgICAgU2FmZURlbGV0ZShidWZmZXIpOworfQorCitW
ZXJ0ZXhEYXRhTWFuYWdlcjo6VmVydGV4RGF0YU1hbmFnZXIoQnVmZmVyRmFjdG9yeUQzRCAqZmFj
dG9yeSkKKyAgICA6IG1GYWN0b3J5KGZhY3RvcnkpLAorICAgICAgbVN0cmVhbWluZ0J1ZmZlcihu
dWxscHRyKSwKKyAgICAgIC8vIFRPRE8oam1hZGlsbCk6IHVzZSBjb250ZXh0IGNhcHMKKyAgICAg
IG1DdXJyZW50VmFsdWVDYWNoZShnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQoreworICAgIG1TdHJl
YW1pbmdCdWZmZXIgPSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlKGZhY3Rvcnks
IElOSVRJQUxfU1RSRUFNX0JVRkZFUl9TSVpFKTsKKwogICAgIGlmICghbVN0cmVhbWluZ0J1ZmZl
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIklu
dGVybmFsIHN0cmVhbWluZyB2ZXJ0ZXggYnVmZmVyIGlzIHVuZXhwZWN0ZWRseSBOVUxMLiIpOwor
ICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5nIHZlcnRleCBidWZm
ZXIuIik7CiAgICAgfQorfQogCitWZXJ0ZXhEYXRhTWFuYWdlcjo6flZlcnRleERhdGFNYW5hZ2Vy
KCkKK3sKKyAgICBTYWZlRGVsZXRlKG1TdHJlYW1pbmdCdWZmZXIpOworfQorCitnbDo6RXJyb3Ig
VmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhEYXRhKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiAqdHJhbnNsYXRlZEF0dHJpYnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aW5zdGFuY2VzKQoreworICAgIEFTU0VSVChtU3RyZWFtaW5nQnVmZmVyKTsKKwogICAgIGNvbnN0
IGdsOjpWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOwot
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJ1dGU+ICZ2ZXJ0ZXhBdHRyaWJ1
dGVzID0gdmVydGV4QXJyYXktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRv
ICZ2ZXJ0ZXhBdHRyaWJ1dGVzICAgICAgID0gdmVydGV4QXJyYXktPmdldFZlcnRleEF0dHJpYnV0
ZXMoKTsKIAotICAgIC8vIEludmFsaWRhdGUgc3RhdGljIGJ1ZmZlcnMgdGhhdCBkb24ndCBjb250
YWluIG1hdGNoaW5nIGF0dHJpYnV0ZXMKLSAgICBmb3IgKGludCBhdHRyaWJ1dGVJbmRleCA9IDA7
IGF0dHJpYnV0ZUluZGV4IDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgr
KykKKyAgICBtRHluYW1pY0F0dHJpYnNNYXNrQ2FjaGUucmVzZXQoKTsKKyAgICBjb25zdCBnbDo6
UHJvZ3JhbSAqcHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKKworICAgIHRyYW5zbGF0ZWRB
dHRyaWJzLT5jbGVhcigpOworCisgICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAwOyBhdHRy
aWJJbmRleCA8IHZlcnRleEF0dHJpYnV0ZXMuc2l6ZSgpOyArK2F0dHJpYkluZGV4KQogICAgIHsK
LSAgICAgICAgdHJhbnNsYXRlZFthdHRyaWJ1dGVJbmRleF0uYWN0aXZlID0gKHN0YXRlLmdldFBy
b2dyYW0oKS0+Z2V0U2VtYW50aWNJbmRleChhdHRyaWJ1dGVJbmRleCkgIT0gLTEpOwotICAgICAg
ICBpZiAodHJhbnNsYXRlZFthdHRyaWJ1dGVJbmRleF0uYWN0aXZlICYmIHZlcnRleEF0dHJpYnV0
ZXNbYXR0cmlidXRlSW5kZXhdLmVuYWJsZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludmFs
aWRhdGVNYXRjaGluZ1N0YXRpY0RhdGEodmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF0s
IHN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShhdHRyaWJ1dGVJbmRleCkpOwotICAg
ICAgICB9Ci0gICAgfQorICAgICAgICAvLyBTa2lwIGF0dHJpYiBsb2NhdGlvbnMgdGhlIHByb2dy
YW0gZG9lc24ndCB1c2UuCisgICAgICAgIGlmICghcHJvZ3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFj
dGl2ZShhdHRyaWJJbmRleCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIC8vIFJlc2Vy
dmUgdGhlIHJlcXVpcmVkIHNwYWNlIGluIHRoZSBidWZmZXJzCi0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCi0gICAgewotICAgICAgICBpZiAodHJh
bnNsYXRlZFtpXS5hY3RpdmUgJiYgdmVydGV4QXR0cmlidXRlc1tpXS5lbmFibGVkKQorICAgICAg
ICBjb25zdCBhdXRvICZhdHRyaWIgPSB2ZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XTsKKwor
ICAgICAgICAvLyBSZXNpemUgYXV0b21hdGljYWxseSBwdXRzIGluIGVtcHR5IGF0dHJpYnMKKyAg
ICAgICAgdHJhbnNsYXRlZEF0dHJpYnMtPnJlc2l6ZShhdHRyaWJJbmRleCArIDEpOworCisgICAg
ICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWQgPSAmKCp0cmFuc2xhdGVkQXR0cmli
cylbYXR0cmliSW5kZXhdOworICAgICAgICBhdXRvIGN1cnJlbnRWYWx1ZURhdGEgPQorICAgICAg
ICAgICAgc3RhdGUuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oYXR0cmliSW5kZXgpKTsKKworICAgICAgICAvLyBSZWNvcmQgdGhlIGF0dHJpYnV0
ZSBub3cKKyAgICAgICAgdHJhbnNsYXRlZC0+YWN0aXZlICAgICAgICAgICA9IHRydWU7CisgICAg
ICAgIHRyYW5zbGF0ZWQtPmF0dHJpYnV0ZSAgICAgICAgPSAmYXR0cmliOworICAgICAgICB0cmFu
c2xhdGVkLT5jdXJyZW50VmFsdWVUeXBlID0gY3VycmVudFZhbHVlRGF0YS5UeXBlOworICAgICAg
ICB0cmFuc2xhdGVkLT5kaXZpc29yICAgICAgICAgID0gYXR0cmliLmRpdmlzb3I7CisKKyAgICAg
ICAgc3dpdGNoIChDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoYXR0cmliKSkKICAgICAgICAgewot
ICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gcmVzZXJ2ZVNwYWNlRm9yQXR0cmliKHZlcnRl
eEF0dHJpYnV0ZXNbaV0sIHN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpKSwgY291
bnQsIGluc3RhbmNlcyk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAg
ICAgICAgY2FzZSBWZXJ0ZXhTdG9yYWdlVHlwZTo6U1RBVElDOgogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICAvLyBTdG9yZSBzdGF0
aWMgYXR0cmlidXRlLgorICAgICAgICAgICAgICAgIEFOR0xFX1RSWShTdG9yZVN0YXRpY0F0dHJp
Yih0cmFuc2xhdGVkLCBjb3VudCwgaW5zdGFuY2VzKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5B
TUlDOgorICAgICAgICAgICAgICAgIC8vIER5bmFtaWMgYXR0cmlidXRlcyBtdXN0IGJlIGhhbmRs
ZWQgdG9nZXRoZXIuCisgICAgICAgICAgICAgICAgbUR5bmFtaWNBdHRyaWJzTWFza0NhY2hlLnNl
dChhdHRyaWJJbmRleCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IFZlcnRleFN0b3JhZ2VUeXBlOjpESVJFQ1Q6CisgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRy
YW5zbGF0ZWQgZGF0YSBmb3IgZGlyZWN0IGF0dHJpYnV0ZXMuCisgICAgICAgICAgICAgICAgU3Rv
cmVEaXJlY3RBdHRyaWIodHJhbnNsYXRlZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpDVVJSRU5UX1ZBTFVFOgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEFOR0xFX1RSWShzdG9yZUN1cnJlbnRWYWx1ZShjdXJyZW50
VmFsdWVEYXRhLCB0cmFuc2xhdGVkLCBhdHRyaWJJbmRleCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgLy8gUGVyZm9ybSB0aGUgdmVydGV4IGRhdGEgdHJhbnNsYXRpb25zCi0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgaWYgKG1E
eW5hbWljQXR0cmlic01hc2tDYWNoZS5ub25lKCkpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6
VmVydGV4QXR0cmlidXRlICZjdXJBdHRyaWIgPSB2ZXJ0ZXhBdHRyaWJ1dGVzW2ldOwotICAgICAg
ICBpZiAodHJhbnNsYXRlZFtpXS5hY3RpdmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChj
dXJBdHRyaWIuZW5hYmxlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPSBzdG9yZUF0dHJpYnV0ZShjdXJBdHRyaWIsIHN0YXRlLmdldFZlcnRleEF0dHJp
YkN1cnJlbnRWYWx1ZShpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmdHJhbnNsYXRlZFtpXSwgc3RhcnQsIGNvdW50LCBpbnN0YW5jZXMpOworICAg
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
aGludFVubWFwQWxsUmVzb3VyY2VzKHZlcnRleEF0dHJpYnV0ZXMpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbUN1cnJl
bnRWYWx1ZUJ1ZmZlcltpXSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IG1DdXJyZW50VmFsdWVCdWZmZXJbaV0gPSBuZXcgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJm
YWNlKG1GYWN0b3J5LCBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJWkUpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICBBTkdMRV9UUlkoCisgICAgICAgIHN0b3JlRHluYW1pY0F0dHJpYnModHJhbnNs
YXRlZEF0dHJpYnMsIG1EeW5hbWljQXR0cmlic01hc2tDYWNoZSwgc3RhcnQsIGNvdW50LCBpbnN0
YW5jZXMpKTsKIAotICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHN0b3JlQ3VycmVu
dFZhbHVlKGN1ckF0dHJpYiwgc3RhdGUuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGkpLCAm
dHJhbnNsYXRlZFtpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmbUN1cnJlbnRWYWx1ZVtpXSwgJm1DdXJyZW50VmFsdWVPZmZzZXRzW2ldLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJy
ZW50VmFsdWVCdWZmZXJbaV0pOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBoaW50VW5tYXBBbGxSZXNv
dXJjZXModmVydGV4QXR0cmlidXRlcyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBQcm9t
b3RlRHluYW1pY0F0dHJpYnMoKnRyYW5zbGF0ZWRBdHRyaWJzLCBtRHluYW1pY0F0dHJpYnNNYXNr
Q2FjaGUsIGNvdW50KTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCisvLyBzdGF0
aWMKK3ZvaWQgVmVydGV4RGF0YU1hbmFnZXI6OlN0b3JlRGlyZWN0QXR0cmliKFRyYW5zbGF0ZWRB
dHRyaWJ1dGUgKmRpcmVjdEF0dHJpYikKK3sKKyAgICBjb25zdCBhdXRvICZhdHRyaWIgICA9ICpk
aXJlY3RBdHRyaWItPmF0dHJpYnV0ZTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgICA9IGF0dHJp
Yi5idWZmZXIuZ2V0KCk7CisgICAgQnVmZmVyRDNEICpidWZmZXJEM0QgPSBidWZmZXIgPyBHZXRJ
bXBsQXM8QnVmZmVyRDNEPihidWZmZXIpIDogbnVsbHB0cjsKKworICAgIEFTU0VSVChEaXJlY3RT
dG9yYWdlUG9zc2libGUoYXR0cmliKSk7CisgICAgZGlyZWN0QXR0cmliLT52ZXJ0ZXhCdWZmZXIu
c2V0KG51bGxwdHIpOworICAgIGRpcmVjdEF0dHJpYi0+c3RvcmFnZSA9IGJ1ZmZlckQzRDsKKyAg
ICBkaXJlY3RBdHRyaWItPnNlcmlhbCAgPSBidWZmZXJEM0QtPmdldFNlcmlhbCgpOworICAgIGRp
cmVjdEF0dHJpYi0+c3RyaWRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihDb21wdXRlVmVy
dGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAgIGRpcmVjdEF0dHJpYi0+YmFzZU9mZnNl
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYXR0cmliLm9mZnNldCk7CisKKyAgICAvLyBJ
bnN0YW5jZWQgdmVydGljZXMgZG8gbm90IGFwcGx5IHRoZSAnc3RhcnQnIG9mZnNldAorICAgIGRp
cmVjdEF0dHJpYi0+dXNlc0ZpcnN0VmVydGV4T2Zmc2V0ID0gKGF0dHJpYi5kaXZpc29yID09IDAp
OworfQorCisvLyBzdGF0aWMKK2dsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVTdGF0
aWNBdHRyaWIoVHJhbnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMp
Cit7CisgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gKnRyYW5zbGF0ZWQt
PmF0dHJpYnV0ZTsKKworICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5idWZmZXIuZ2V0
KCk7CisgICAgQVNTRVJUKGJ1ZmZlciAmJiBhdHRyaWIuZW5hYmxlZCAmJiAhRGlyZWN0U3RvcmFn
ZVBvc3NpYmxlKGF0dHJpYikpOworICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gR2V0SW1wbEFz
PEJ1ZmZlckQzRD4oYnVmZmVyKTsKKworICAgIC8vIENvbXB1dGUgc291cmNlIGRhdGEgcG9pbnRl
cgorICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEgPSBudWxscHRyOworCisgICAgQU5HTEVf
VFJZKGJ1ZmZlckQzRC0+Z2V0RGF0YSgmc291cmNlRGF0YSkpOworICAgIHNvdXJjZURhdGEgKz0g
c3RhdGljX2Nhc3Q8aW50PihhdHRyaWIub2Zmc2V0KTsKKworICAgIHVuc2lnbmVkIGludCBzdHJl
YW1PZmZzZXQgPSAwOworCisgICAgdHJhbnNsYXRlZC0+c3RvcmFnZSA9IG51bGxwdHI7CisgICAg
QU5HTEVfVFJZX1JFU1VMVChidWZmZXJEM0QtPmdldEZhY3RvcnkoKS0+Z2V0VmVydGV4U3BhY2VS
ZXF1aXJlZChhdHRyaWIsIDEsIDApLAorICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZC0+
c3RyaWRlKTsKKworICAgIGF1dG8gKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlckQzRC0+Z2V0U3RhdGlj
VmVydGV4QnVmZmVyKGF0dHJpYik7CisgICAgQVNTRVJUKHN0YXRpY0J1ZmZlcik7CisKKyAgICBp
ZiAoc3RhdGljQnVmZmVyLT5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgLy8gQ29udmVydCB0aGUg
ZW50aXJlIGJ1ZmZlcgorICAgICAgICBpbnQgdG90YWxDb3VudCA9IEVsZW1lbnRzSW5CdWZmZXIo
YXR0cmliLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGJ1ZmZlckQzRC0+Z2V0U2l6ZSgpKSk7
CisgICAgICAgIGludCBzdGFydEluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWIub2Zmc2V0
KSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihDb21wdXRlVmVy
dGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworCisgICAgICAgIEFOR0xFX1RSWSgKKyAgICAg
ICAgICAgIHN0YXRpY0J1ZmZlci0+c3RvcmVTdGF0aWNBdHRyaWJ1dGUoYXR0cmliLCAtc3RhcnRJ
bmRleCwgdG90YWxDb3VudCwgMCwgc291cmNlRGF0YSkpOwogICAgIH0KIAotICAgIC8vIEhpbnQg
dG8gdW5tYXAgYWxsIHRoZSByZXNvdXJjZXMKLSAgICBoaW50VW5tYXBBbGxSZXNvdXJjZXModmVy
dGV4QXR0cmlidXRlcyk7CisgICAgdW5zaWduZWQgaW50IGZpcnN0RWxlbWVudE9mZnNldCA9Cisg
ICAgICAgIChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGF0dHJpYi5vZmZzZXQpIC8KKyAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlk
ZShhdHRyaWIpKSkgKgorICAgICAgICB0cmFuc2xhdGVkLT5zdHJpZGU7CiAKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICBWZXJ0ZXhCdWZm
ZXIgKnZlcnRleEJ1ZmZlciA9IHN0YXRpY0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCk7CisKKyAg
ICBpZiAoIUlzVW5zaWduZWRBZGRpdGlvblNhZmUoc3RyZWFtT2Zmc2V0LCBmaXJzdEVsZW1lbnRP
ZmZzZXQpKQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmY3VyQXR0
cmliID0gdmVydGV4QXR0cmlidXRlc1tpXTsKLSAgICAgICAgaWYgKHRyYW5zbGF0ZWRbaV0uYWN0
aXZlICYmIGN1ckF0dHJpYi5lbmFibGVkKQorICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlZ2VyIG92ZXJm
bG93IGluIFZlcnRleERhdGFNYW5hZ2VyOjpTdG9yZVN0YXRpY0F0dHJpYiIpOworICAgIH0KKwor
ICAgIHRyYW5zbGF0ZWQtPnZlcnRleEJ1ZmZlci5zZXQodmVydGV4QnVmZmVyKTsKKyAgICB0cmFu
c2xhdGVkLT5zZXJpYWwgPSB2ZXJ0ZXhCdWZmZXItPmdldFNlcmlhbCgpOworICAgIHRyYW5zbGF0
ZWQtPmJhc2VPZmZzZXQgPSBzdHJlYW1PZmZzZXQgKyBmaXJzdEVsZW1lbnRPZmZzZXQ7CisKKyAg
ICAvLyBJbnN0YW5jZWQgdmVydGljZXMgZG8gbm90IGFwcGx5IHRoZSAnc3RhcnQnIG9mZnNldAor
ICAgIHRyYW5zbGF0ZWQtPnVzZXNGaXJzdFZlcnRleE9mZnNldCA9IChhdHRyaWIuZGl2aXNvciA9
PSAwKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgVmVydGV4
RGF0YU1hbmFnZXI6OnN0b3JlRHluYW1pY0F0dHJpYnMoCisgICAgc3RkOjp2ZWN0b3I8VHJhbnNs
YXRlZEF0dHJpYnV0ZT4gKnRyYW5zbGF0ZWRBdHRyaWJzLAorICAgIGNvbnN0IGdsOjpBdHRyaWJ1
dGVzTWFzayAmZHluYW1pY0F0dHJpYnNNYXNrLAorICAgIEdMaW50IHN0YXJ0LAorICAgIEdMc2l6
ZWkgY291bnQsCisgICAgR0xzaXplaSBpbnN0YW5jZXMpCit7CisgICAgLy8gSW5zdGFudGlhdGlu
ZyB0aGlzIGNsYXNzIHdpbGwgZW5zdXJlIHRoZSBzdHJlYW1pbmcgYnVmZmVyIGlzIG5ldmVyIGxl
ZnQgbWFwcGVkLgorICAgIGNsYXNzIFN0cmVhbWluZ0J1ZmZlclVubWFwcGVyIGZpbmFsIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgcHVibGljOgorICAgICAgICBTdHJlYW1pbmdC
dWZmZXJVbm1hcHBlcihTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0cmVhbWluZ0J1
ZmZlcikKKyAgICAgICAgICAgIDogbVN0cmVhbWluZ0J1ZmZlcihzdHJlYW1pbmdCdWZmZXIpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGN1ckF0dHJpYi5idWZm
ZXIuZ2V0KCk7CisgICAgICAgICAgICBBU1NFUlQobVN0cmVhbWluZ0J1ZmZlcik7CisgICAgICAg
IH0KKyAgICAgICAgflN0cmVhbWluZ0J1ZmZlclVubWFwcGVyKCkgeyBtU3RyZWFtaW5nQnVmZmVy
LT5nZXRWZXJ0ZXhCdWZmZXIoKS0+aGludFVubWFwUmVzb3VyY2UoKTsgfQogCi0gICAgICAgICAg
ICBpZiAoYnVmZmVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEJ1ZmZlckQzRCAq
YnVmZmVySW1wbCA9IEdldEltcGxBczxCdWZmZXJEM0Q+KGJ1ZmZlcik7Ci0gICAgICAgICAgICAg
ICAgYnVmZmVySW1wbC0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICogQ29tcHV0ZVZlcnRleEF0
dHJpYnV0ZVR5cGVTaXplKGN1ckF0dHJpYikpOwotICAgICAgICAgICAgfQotICAgICAgICB9Cisg
ICAgICBwcml2YXRlOgorICAgICAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKm1T
dHJlYW1pbmdCdWZmZXI7CisgICAgfTsKKworICAgIC8vIFdpbGwgdHJpZ2dlciB1bm1hcHBpbmcg
b24gcmV0dXJuLgorICAgIFN0cmVhbWluZ0J1ZmZlclVubWFwcGVyIGxvY2FsVW5tYXBwZXIobVN0
cmVhbWluZ0J1ZmZlcik7CisKKyAgICAvLyBSZXNlcnZlIHRoZSByZXF1aXJlZCBzcGFjZSBmb3Ig
dGhlIGR5bmFtaWMgYnVmZmVycy4KKyAgICBmb3IgKGF1dG8gYXR0cmliSW5kZXggOiBhbmdsZTo6
SXRlcmF0ZUJpdFNldChkeW5hbWljQXR0cmlic01hc2spKQorICAgIHsKKyAgICAgICAgY29uc3Qg
YXV0byAmZHluYW1pY0F0dHJpYiA9ICgqdHJhbnNsYXRlZEF0dHJpYnMpW2F0dHJpYkluZGV4XTsK
KyAgICAgICAgQU5HTEVfVFJZKHJlc2VydmVTcGFjZUZvckF0dHJpYihkeW5hbWljQXR0cmliLCBj
b3VudCwgaW5zdGFuY2VzKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgLy8gU3RvcmUgZHluYW1pYyBhdHRyaWJ1dGVzCisgICAgZm9yIChhdXRvIGF0
dHJpYkluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZHluYW1pY0F0dHJpYnNNYXNrKSkKKyAg
ICB7CisgICAgICAgIGF1dG8gKmR5bmFtaWNBdHRyaWIgPSAmKCp0cmFuc2xhdGVkQXR0cmlicylb
YXR0cmliSW5kZXhdOworICAgICAgICBBTkdMRV9UUlkoc3RvcmVEeW5hbWljQXR0cmliKGR5bmFt
aWNBdHRyaWIsIHN0YXJ0LCBjb3VudCwgaW5zdGFuY2VzKSk7CisgICAgfQorCisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKLXZvaWQgVmVydGV4RGF0YU1hbmFnZXI6OmludmFsaWRhdGVN
YXRjaGluZ1N0YXRpY0RhdGEoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlKSBjb25zdAordm9p
ZCBWZXJ0ZXhEYXRhTWFuYWdlcjo6UHJvbW90ZUR5bmFtaWNBdHRyaWJzKAorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZ0cmFuc2xhdGVkQXR0cmlicywKKyAgICBj
b25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmR5bmFtaWNBdHRyaWJzTWFzaywKKyAgICBHTHNpemVp
IGNvdW50KQogewotICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7
Ci0KLSAgICBpZiAoYnVmZmVyKQorICAgIGZvciAoYXV0byBhdHRyaWJJbmRleCA6IGFuZ2xlOjpJ
dGVyYXRlQml0U2V0KGR5bmFtaWNBdHRyaWJzTWFzaykpCiAgICAgewotICAgICAgICBCdWZmZXJE
M0QgKmJ1ZmZlckltcGwgPSBHZXRJbXBsQXM8QnVmZmVyRDNEPihidWZmZXIpOwotICAgICAgICBT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlckltcGwtPmdl
dFN0YXRpY1ZlcnRleEJ1ZmZlcigpOwotCi0gICAgICAgIGlmIChzdGF0aWNCdWZmZXIgJiYKLSAg
ICAgICAgICAgIHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpID4gMCAmJgotICAgICAgICAg
ICAgIXN0YXRpY0J1ZmZlci0+bG9va3VwQXR0cmlidXRlKGF0dHJpYiwgTlVMTCkgJiYKLSAgICAg
ICAgICAgICFzdGF0aWNCdWZmZXItPmRpcmVjdFN0b3JhZ2VQb3NzaWJsZShhdHRyaWIsIGN1cnJl
bnRWYWx1ZSkpCisgICAgICAgIGNvbnN0IGF1dG8gJmR5bmFtaWNBdHRyaWIgPSB0cmFuc2xhdGVk
QXR0cmlic1thdHRyaWJJbmRleF07CisgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGR5bmFt
aWNBdHRyaWIuYXR0cmlidXRlLT5idWZmZXIuZ2V0KCk7CisgICAgICAgIGlmIChidWZmZXIpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGJ1ZmZlckltcGwtPmludmFsaWRhdGVTdGF0aWNEYXRhKCk7
CisgICAgICAgICAgICBCdWZmZXJEM0QgKmJ1ZmZlckQzRCA9IEdldEltcGxBczxCdWZmZXJEM0Q+
KGJ1ZmZlcik7CisgICAgICAgICAgICBzaXplX3QgdHlwZVNpemUgPSBDb21wdXRlVmVydGV4QXR0
cmlidXRlVHlwZVNpemUoKmR5bmFtaWNBdHRyaWIuYXR0cmlidXRlKTsKKyAgICAgICAgICAgIGJ1
ZmZlckQzRC0+cHJvbW90ZVN0YXRpY1VzYWdlKGNvdW50ICogc3RhdGljX2Nhc3Q8aW50Pih0eXBl
U2l6ZSkpOwogICAgICAgICB9CiAgICAgfQogfQogCi1nbDo6RXJyb3IgVmVydGV4RGF0YU1hbmFn
ZXI6OnJlc2VydmVTcGFjZUZvckF0dHJpYihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlLAorZ2w6
OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpyZXNlcnZlU3BhY2VGb3JBdHRyaWIoY29uc3QgVHJh
bnNsYXRlZEF0dHJpYnV0ZSAmdHJhbnNsYXRlZEF0dHJpYiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
cykgY29uc3QKIHsKLSAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRyaWIuYnVmZmVyLmdldCgp
OwotICAgIEJ1ZmZlckQzRCAqYnVmZmVySW1wbCA9IGJ1ZmZlciA/IEdldEltcGxBczxCdWZmZXJE
M0Q+KGJ1ZmZlcikgOiBOVUxMOwotICAgIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqc3Rh
dGljQnVmZmVyID0gYnVmZmVySW1wbCA/IGJ1ZmZlckltcGwtPmdldFN0YXRpY1ZlcnRleEJ1ZmZl
cigpIDogTlVMTDsKLSAgICBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKnZlcnRleEJ1ZmZlciA9IHN0
YXRpY0J1ZmZlciA/IHN0YXRpY0J1ZmZlciA6IHN0YXRpY19jYXN0PFZlcnRleEJ1ZmZlckludGVy
ZmFjZSo+KG1TdHJlYW1pbmdCdWZmZXIpOworICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiA9ICp0cmFuc2xhdGVkQXR0cmliLmF0dHJpYnV0ZTsKKyAgICBBU1NFUlQoIURpcmVj
dFN0b3JhZ2VQb3NzaWJsZShhdHRyaWIpKTsKIAotICAgIGlmICghdmVydGV4QnVmZmVyLT5kaXJl
Y3RTdG9yYWdlUG9zc2libGUoYXR0cmliLCBjdXJyZW50VmFsdWUpKQotICAgIHsKLSAgICAgICAg
aWYgKHN0YXRpY0J1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZl
ci0+Z2V0QnVmZmVyU2l6ZSgpID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW50IHRvdGFsQ291bnQgPSBFbGVtZW50c0luQnVmZmVyKGF0dHJpYiwgYnVmZmVySW1wbC0+Z2V0
U2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzdGF0aWNCdWZmZXIt
PnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWIsIHRvdGFsQ291bnQsIDApOwotICAgICAgICAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgaW50IHRvdGFs
Q291bnQgPSBTdHJlYW1pbmdCdWZmZXJFbGVtZW50Q291bnQoYXR0cmliLCBjb3VudCwgaW5zdGFu
Y2VzKTsKLSAgICAgICAgICAgIEFTU0VSVCghYnVmZmVySW1wbCB8fCBFbGVtZW50c0luQnVmZmVy
KGF0dHJpYiwgYnVmZmVySW1wbC0+Z2V0U2l6ZSgpKSA+PSB0b3RhbENvdW50KTsKKyAgICBnbDo6
QnVmZmVyICpidWZmZXIgICA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7CisgICAgQnVmZmVyRDNEICpi
dWZmZXJEM0QgPSBidWZmZXIgPyBHZXRJbXBsQXM8QnVmZmVyRDNEPihidWZmZXIpIDogbnVsbHB0
cjsKKyAgICBBU1NFUlQoIWJ1ZmZlckQzRCB8fCBidWZmZXJEM0QtPmdldFN0YXRpY1ZlcnRleEJ1
ZmZlcihhdHRyaWIpID09IG51bGxwdHIpOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUo
YnVmZmVyRDNEKTsKIAotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVN0cmVhbWluZ0J1
ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJpYiwgdG90YWxDb3VudCwgaW5zdGFuY2VzKTsK
LSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQor
ICAgIHNpemVfdCB0b3RhbENvdW50ID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZUVsZW1lbnRDb3Vu
dChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpOworICAgIEFTU0VSVCghYnVmZmVyRDNEIHx8Cisg
ICAgICAgICAgIEVsZW1lbnRzSW5CdWZmZXIoYXR0cmliLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGJ1ZmZlckQzRC0+Z2V0U2l6ZSgpKSkgPj0KKyAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludD4odG90YWxDb3VudCkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIG1TdHJlYW1pbmdCdWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWIs
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRvdGFsQ291bnQpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VzKTsKIH0KIAotZ2w6OkVycm9yIFZl
cnRleERhdGFNYW5hZ2VyOjpzdG9yZUF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRBdHRyaWJ1
dGUgKnRyYW5zbGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGluc3RhbmNlcykKK2dsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6
c3RvcmVEeW5hbWljQXR0cmliKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGluc3RhbmNlcykKIHsKKyAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIgPSAqdHJhbnNsYXRlZC0+YXR0cmlidXRlOworCiAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0g
YXR0cmliLmJ1ZmZlci5nZXQoKTsKICAgICBBU1NFUlQoYnVmZmVyIHx8IGF0dHJpYi5wb2ludGVy
KTsKKyAgICBBU1NFUlQoYXR0cmliLmVuYWJsZWQpOwogCi0gICAgQnVmZmVyRDNEICpzdG9yYWdl
ID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVmZmVyKSA6IE5VTEw7Ci0gICAgU3Rh
dGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpzdGF0aWNCdWZmZXIgPSBzdG9yYWdlID8gc3RvcmFn
ZS0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKCkgOiBOVUxMOwotICAgIFZlcnRleEJ1ZmZlckludGVy
ZmFjZSAqdmVydGV4QnVmZmVyID0gc3RhdGljQnVmZmVyID8gc3RhdGljQnVmZmVyIDogc3RhdGlj
X2Nhc3Q8VmVydGV4QnVmZmVySW50ZXJmYWNlKj4obVN0cmVhbWluZ0J1ZmZlcik7Ci0gICAgYm9v
bCBkaXJlY3RTdG9yYWdlID0gdmVydGV4QnVmZmVyLT5kaXJlY3RTdG9yYWdlUG9zc2libGUoYXR0
cmliLCBjdXJyZW50VmFsdWUpOworICAgIEJ1ZmZlckQzRCAqc3RvcmFnZSA9IGJ1ZmZlciA/IEdl
dEltcGxBczxCdWZmZXJEM0Q+KGJ1ZmZlcikgOiBudWxscHRyOwogCi0gICAgdW5zaWduZWQgaW50
IHN0cmVhbU9mZnNldCA9IDA7Ci0gICAgdW5zaWduZWQgaW50IG91dHB1dEVsZW1lbnRTaXplID0g
MDsKLQogICAgIC8vIEluc3RhbmNlZCB2ZXJ0aWNlcyBkbyBub3QgYXBwbHkgdGhlICdzdGFydCcg
b2Zmc2V0Ci0gICAgR0xpbnQgZmlyc3RWZXJ0ZXhJbmRleCA9IChpbnN0YW5jZXMgPiAwICYmIGF0
dHJpYi5kaXZpc29yID4gMCA/IDAgOiBzdGFydCk7CisgICAgR0xpbnQgZmlyc3RWZXJ0ZXhJbmRl
eCA9IChhdHRyaWIuZGl2aXNvciA+IDAgPyAwIDogc3RhcnQpOwogCi0gICAgaWYgKGRpcmVjdFN0
b3JhZ2UpCisgICAgLy8gQ29tcHV0ZSBzb3VyY2UgZGF0YSBwb2ludGVyCisgICAgY29uc3QgdWlu
dDhfdCAqc291cmNlRGF0YSA9IG51bGxwdHI7CisKKyAgICBpZiAoYnVmZmVyKQogICAgIHsKLSAg
ICAgICAgb3V0cHV0RWxlbWVudFNpemUgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0
dHJpYik7Ci0gICAgICAgIHN0cmVhbU9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
YXR0cmliLm9mZnNldCArIG91dHB1dEVsZW1lbnRTaXplICogZmlyc3RWZXJ0ZXhJbmRleCk7Cisg
ICAgICAgIEFOR0xFX1RSWShzdG9yYWdlLT5nZXREYXRhKCZzb3VyY2VEYXRhKSk7CisgICAgICAg
IHNvdXJjZURhdGEgKz0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWIub2Zmc2V0KTsKICAgICB9Ci0g
ICAgZWxzZSBpZiAoc3RhdGljQnVmZmVyKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGdsOjpF
cnJvciBlcnJvciA9IHN0YXRpY0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCktPmdldFNwYWNlUmVx
dWlyZWQoYXR0cmliLCAxLCAwLCAmb3V0cHV0RWxlbWVudFNpemUpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KKyAgICAgICAgc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihh
dHRyaWIucG9pbnRlcik7CisgICAgfQogCi0gICAgICAgIGlmICghc3RhdGljQnVmZmVyLT5sb29r
dXBBdHRyaWJ1dGUoYXR0cmliLCAmc3RyZWFtT2Zmc2V0KSkKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gQ29udmVydCB0aGUgZW50aXJlIGJ1ZmZlcgotICAgICAgICAgICAgaW50IHRvdGFsQ291
bnQgPSBFbGVtZW50c0luQnVmZmVyKGF0dHJpYiwgc3RvcmFnZS0+Z2V0U2l6ZSgpKTsKLSAgICAg
ICAgICAgIGludCBzdGFydEluZGV4ID0gYXR0cmliLm9mZnNldCAvIENvbXB1dGVWZXJ0ZXhBdHRy
aWJ1dGVTdHJpZGUoYXR0cmliKTsKKyAgICB1bnNpZ25lZCBpbnQgc3RyZWFtT2Zmc2V0ID0gMDsK
IAotICAgICAgICAgICAgZXJyb3IgPSBzdGF0aWNCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRl
cyhhdHRyaWIsIGN1cnJlbnRWYWx1ZSwgLXN0YXJ0SW5kZXgsIHRvdGFsQ291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICZzdHJl
YW1PZmZzZXQpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KKyAgICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVT
VUxUKG1GYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgMSwgMCksIHRyYW5z
bGF0ZWQtPnN0cmlkZSk7CiAKLSAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0RWxlbWVudE9mZnNl
dCA9IChhdHRyaWIub2Zmc2V0IC8gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIp
KSAqIG91dHB1dEVsZW1lbnRTaXplOwotICAgICAgICB1bnNpZ25lZCBpbnQgc3RhcnRPZmZzZXQg
PSAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLmRpdmlzb3IgPT0gMCkgPyBmaXJzdFZlcnRleElu
ZGV4ICogb3V0cHV0RWxlbWVudFNpemUgOiAwOwotICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ICsg
Zmlyc3RFbGVtZW50T2Zmc2V0ICsgc3RhcnRPZmZzZXQgPCBzdHJlYW1PZmZzZXQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAg
ICAgIH0KKyAgICBzaXplX3QgdG90YWxDb3VudCA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVFbGVt
ZW50Q291bnQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKIAotICAgICAgICBzdHJlYW1PZmZz
ZXQgKz0gZmlyc3RFbGVtZW50T2Zmc2V0ICsgc3RhcnRPZmZzZXQ7CisgICAgQU5HTEVfVFJZKG1T
dHJlYW1pbmdCdWZmZXItPnN0b3JlRHluYW1pY0F0dHJpYnV0ZSgKKyAgICAgICAgYXR0cmliLCB0
cmFuc2xhdGVkLT5jdXJyZW50VmFsdWVUeXBlLCBmaXJzdFZlcnRleEluZGV4LCBzdGF0aWNfY2Fz
dDxHTHNpemVpPih0b3RhbENvdW50KSwKKyAgICAgICAgaW5zdGFuY2VzLCAmc3RyZWFtT2Zmc2V0
LCBzb3VyY2VEYXRhKSk7CisKKyAgICBWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciA9IG1TdHJl
YW1pbmdCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpOworCisgICAgdHJhbnNsYXRlZC0+dmVydGV4
QnVmZmVyLnNldCh2ZXJ0ZXhCdWZmZXIpOworICAgIHRyYW5zbGF0ZWQtPnNlcmlhbCA9IHZlcnRl
eEJ1ZmZlci0+Z2V0U2VyaWFsKCk7CisgICAgdHJhbnNsYXRlZC0+YmFzZU9mZnNldCAgICAgICAg
ICAgID0gc3RyZWFtT2Zmc2V0OworICAgIHRyYW5zbGF0ZWQtPnVzZXNGaXJzdFZlcnRleE9mZnNl
dCA9IGZhbHNlOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBW
ZXJ0ZXhEYXRhTWFuYWdlcjo6c3RvcmVDdXJyZW50VmFsdWUoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGF0
dHJpYkluZGV4KQoreworICAgIEN1cnJlbnRWYWx1ZVN0YXRlICpjYWNoZWRTdGF0ZSA9ICZtQ3Vy
cmVudFZhbHVlQ2FjaGVbYXR0cmliSW5kZXhdOworICAgIGF1dG8gKiZidWZmZXIgICAgICAgICAg
ICAgICAgICA9IGNhY2hlZFN0YXRlLT5idWZmZXI7CisKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICB7
CisgICAgICAgIGJ1ZmZlciA9IG5ldyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UobUZh
Y3RvcnksIENPTlNUQU5UX1ZFUlRFWF9CVUZGRVJfU0laRSk7CiAgICAgfQotICAgIGVsc2UKKwor
ICAgIGlmIChjYWNoZWRTdGF0ZS0+ZGF0YSAhPSBjdXJyZW50VmFsdWUpCiAgICAgewotICAgICAg
ICBpbnQgdG90YWxDb3VudCA9IFN0cmVhbWluZ0J1ZmZlckVsZW1lbnRDb3VudChhdHRyaWIsIGNv
dW50LCBpbnN0YW5jZXMpOwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtU3RyZWFtaW5nQnVm
ZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKS0+Z2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIDEsIDAsICZv
dXRwdXRFbGVtZW50U2l6ZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSAqdHJhbnNsYXRlZC0+YXR0cmlidXRlOwogCi0g
ICAgICAgIGVycm9yID0gbVN0cmVhbWluZ0J1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0
dHJpYiwgY3VycmVudFZhbHVlLCBmaXJzdFZlcnRleEluZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50LCBpbnN0YW5j
ZXMsICZzdHJlYW1PZmZzZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVf
VFJZKGJ1ZmZlci0+cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJpYiwgMSwgMCkpOworCisgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihjdXJyZW50VmFsdWUuRmxvYXRWYWx1ZXMpOworICAgICAgICB1bnNpZ25lZCBpbnQgc3Ry
ZWFtT2Zmc2V0OworICAgICAgICBBTkdMRV9UUlkoYnVmZmVyLT5zdG9yZUR5bmFtaWNBdHRyaWJ1
dGUoYXR0cmliLCBjdXJyZW50VmFsdWUuVHlwZSwgMCwgMSwgMCwgJnN0cmVhbU9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZURhdGEp
KTsKKworICAgICAgICBidWZmZXItPmdldFZlcnRleEJ1ZmZlcigpLT5oaW50VW5tYXBSZXNvdXJj
ZSgpOworCisgICAgICAgIGNhY2hlZFN0YXRlLT5kYXRhID0gY3VycmVudFZhbHVlOworICAgICAg
ICBjYWNoZWRTdGF0ZS0+b2Zmc2V0ID0gc3RyZWFtT2Zmc2V0OwogICAgIH0KIAotICAgIHRyYW5z
bGF0ZWQtPnN0b3JhZ2UgPSBkaXJlY3RTdG9yYWdlID8gc3RvcmFnZSA6IE5VTEw7Ci0gICAgdHJh
bnNsYXRlZC0+dmVydGV4QnVmZmVyID0gdmVydGV4QnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKTsK
LSAgICB0cmFuc2xhdGVkLT5zZXJpYWwgPSBkaXJlY3RTdG9yYWdlID8gc3RvcmFnZS0+Z2V0U2Vy
aWFsKCkgOiB2ZXJ0ZXhCdWZmZXItPmdldFNlcmlhbCgpOwotICAgIHRyYW5zbGF0ZWQtPmRpdmlz
b3IgPSBhdHRyaWIuZGl2aXNvcjsKKyAgICB0cmFuc2xhdGVkLT52ZXJ0ZXhCdWZmZXIuc2V0KGJ1
ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCkpOwogCi0gICAgdHJhbnNsYXRlZC0+YXR0cmlidXRlID0g
JmF0dHJpYjsKLSAgICB0cmFuc2xhdGVkLT5jdXJyZW50VmFsdWVUeXBlID0gY3VycmVudFZhbHVl
LlR5cGU7Ci0gICAgdHJhbnNsYXRlZC0+c3RyaWRlID0gb3V0cHV0RWxlbWVudFNpemU7Ci0gICAg
dHJhbnNsYXRlZC0+b2Zmc2V0ID0gc3RyZWFtT2Zmc2V0OworICAgIHRyYW5zbGF0ZWQtPnN0b3Jh
Z2UgPSBudWxscHRyOworICAgIHRyYW5zbGF0ZWQtPnNlcmlhbCAgPSBidWZmZXItPmdldFNlcmlh
bCgpOworICAgIHRyYW5zbGF0ZWQtPmRpdmlzb3IgPSAwOworICAgIHRyYW5zbGF0ZWQtPnN0cmlk
ZSAgPSAwOworICAgIHRyYW5zbGF0ZWQtPmJhc2VPZmZzZXQgICAgICAgICAgICA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4oY2FjaGVkU3RhdGUtPm9mZnNldCk7CisgICAgdHJhbnNsYXRlZC0+
dXNlc0ZpcnN0VmVydGV4T2Zmc2V0ID0gZmFsc2U7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFZl
cnRleERhdGFNYW5hZ2VyOjpzdG9yZUN1cnJlbnRWYWx1ZShjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0
ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICpjYWNoZWRW
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90ICpjYWNoZWRPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqYnVmZmVyKQorLy8gVmVy
dGV4QnVmZmVyQmluZGluZyBpbXBsZW1lbnRhdGlvbgorVmVydGV4QnVmZmVyQmluZGluZzo6VmVy
dGV4QnVmZmVyQmluZGluZygpIDogbUJvdW5kVmVydGV4QnVmZmVyKG51bGxwdHIpCiB7Ci0gICAg
aWYgKCpjYWNoZWRWYWx1ZSAhPSBjdXJyZW50VmFsdWUpCit9CisKK1ZlcnRleEJ1ZmZlckJpbmRp
bmc6OlZlcnRleEJ1ZmZlckJpbmRpbmcoY29uc3QgVmVydGV4QnVmZmVyQmluZGluZyAmb3RoZXIp
CisgICAgOiBtQm91bmRWZXJ0ZXhCdWZmZXIob3RoZXIubUJvdW5kVmVydGV4QnVmZmVyKQorewor
ICAgIGlmIChtQm91bmRWZXJ0ZXhCdWZmZXIpCiAgICAgewotICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPSBidWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWIsIDEsIDApOwotICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgICAgIH0KKyAgICAgICAgbUJvdW5kVmVydGV4QnVmZmVyLT5hZGRSZWYoKTsKKyAgICB9
Cit9CiAKLSAgICAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldDsKLSAgICAgICAgZXJyb3Ig
PSBidWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWIsIGN1cnJlbnRWYWx1ZSwgMCwg
MSwgMCwgJnN0cmVhbU9mZnNldCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorVmVydGV4QnVmZmVy
QmluZGluZzo6flZlcnRleEJ1ZmZlckJpbmRpbmcoKQoreworICAgIGlmIChtQm91bmRWZXJ0ZXhC
dWZmZXIpCisgICAgeworICAgICAgICBtQm91bmRWZXJ0ZXhCdWZmZXItPnJlbGVhc2UoKTsKKyAg
ICB9Cit9CiAKLSAgICAgICAgKmNhY2hlZFZhbHVlID0gY3VycmVudFZhbHVlOwotICAgICAgICAq
Y2FjaGVkT2Zmc2V0ID0gc3RyZWFtT2Zmc2V0OworVmVydGV4QnVmZmVyQmluZGluZyAmVmVydGV4
QnVmZmVyQmluZGluZzo6b3BlcmF0b3I9KGNvbnN0IFZlcnRleEJ1ZmZlckJpbmRpbmcgJm90aGVy
KQoreworICAgIG1Cb3VuZFZlcnRleEJ1ZmZlciA9IG90aGVyLm1Cb3VuZFZlcnRleEJ1ZmZlcjsK
KyAgICBpZiAobUJvdW5kVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJvdW5kVmVydGV4
QnVmZmVyLT5hZGRSZWYoKTsKICAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQogCi0gICAgdHJh
bnNsYXRlZC0+c3RvcmFnZSA9IE5VTEw7Ci0gICAgdHJhbnNsYXRlZC0+dmVydGV4QnVmZmVyID0g
YnVmZmVyLT5nZXRWZXJ0ZXhCdWZmZXIoKTsKLSAgICB0cmFuc2xhdGVkLT5zZXJpYWwgPSBidWZm
ZXItPmdldFNlcmlhbCgpOwotICAgIHRyYW5zbGF0ZWQtPmRpdmlzb3IgPSAwOwordm9pZCBWZXJ0
ZXhCdWZmZXJCaW5kaW5nOjpzZXQoVmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIpCit7CisgICAg
aWYgKG1Cb3VuZFZlcnRleEJ1ZmZlciA9PSB2ZXJ0ZXhCdWZmZXIpCisgICAgICAgIHJldHVybjsK
IAotICAgIHRyYW5zbGF0ZWQtPmF0dHJpYnV0ZSA9ICZhdHRyaWI7Ci0gICAgdHJhbnNsYXRlZC0+
Y3VycmVudFZhbHVlVHlwZSA9IGN1cnJlbnRWYWx1ZS5UeXBlOwotICAgIHRyYW5zbGF0ZWQtPnN0
cmlkZSA9IDA7Ci0gICAgdHJhbnNsYXRlZC0+b2Zmc2V0ID0gKmNhY2hlZE9mZnNldDsKKyAgICBp
ZiAobUJvdW5kVmVydGV4QnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJvdW5kVmVydGV4QnVmZmVy
LT5yZWxlYXNlKCk7CisgICAgfQorICAgIGlmICh2ZXJ0ZXhCdWZmZXIpCisgICAgeworICAgICAg
ICB2ZXJ0ZXhCdWZmZXItPmFkZFJlZigpOworICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIG1Cb3VuZFZlcnRleEJ1ZmZlciA9IHZlcnRleEJ1ZmZlcjsKIH0K
IAorVmVydGV4QnVmZmVyICpWZXJ0ZXhCdWZmZXJCaW5kaW5nOjpnZXQoKSBjb25zdAoreworICAg
IHJldHVybiBtQm91bmRWZXJ0ZXhCdWZmZXI7CiB9CisKK30gIC8vIG5hbWVzcGFjZSByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0
ZXhEYXRhTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9WZXJ0ZXhEYXRhTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw5ICsxMCwxMCBAQAog
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfVkVSVEVYREFUQU1BTkFHRVJfSF8KICNkZWZp
bmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX1ZFUlRFWERBVEFNQU5BR0VSX0hfCiAKKyNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9Db25zdGFudHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0
ZXhBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogCiBuYW1lc3Bh
Y2UgZ2wKIHsKQEAgLTI4LDY4ICsyOSwxMTUgQEAKIGNsYXNzIFN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ckludGVyZmFjZTsKIGNsYXNzIFZlcnRleEJ1ZmZlcjsKIAorY2xhc3MgVmVydGV4QnVmZmVyQmlu
ZGluZyBmaW5hbAoreworICBwdWJsaWM6CisgICAgVmVydGV4QnVmZmVyQmluZGluZygpOworICAg
IFZlcnRleEJ1ZmZlckJpbmRpbmcoY29uc3QgVmVydGV4QnVmZmVyQmluZGluZyAmb3RoZXIpOwor
ICAgIH5WZXJ0ZXhCdWZmZXJCaW5kaW5nKCk7CisKKyAgICB2b2lkIHNldChWZXJ0ZXhCdWZmZXIg
KnZlcnRleEJ1ZmZlcik7CisgICAgVmVydGV4QnVmZmVyICpnZXQoKSBjb25zdDsKKyAgICBWZXJ0
ZXhCdWZmZXJCaW5kaW5nICZvcGVyYXRvcj0oY29uc3QgVmVydGV4QnVmZmVyQmluZGluZyAmb3Ro
ZXIpOworCisgIHByaXZhdGU6CisgICAgVmVydGV4QnVmZmVyICptQm91bmRWZXJ0ZXhCdWZmZXI7
Cit9OworCiBzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZQogewotICAgIFRyYW5zbGF0ZWRBdHRy
aWJ1dGUoKSA6IGFjdGl2ZShmYWxzZSksIGF0dHJpYnV0ZShOVUxMKSwgY3VycmVudFZhbHVlVHlw
ZShHTF9OT05FKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQoMCksIHN0cmlk
ZSgwKSwgdmVydGV4QnVmZmVyKE5VTEwpLCBzdG9yYWdlKE5VTEwpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlcmlhbCgwKSwgZGl2aXNvcigwKSB7fTsKKyAgICBUcmFuc2xhdGVkQXR0
cmlidXRlKCk7CisKKyAgICAvLyBDb21wdXRlcyB0aGUgY29ycmVjdCBvZmZzZXQgZnJvbSBiYXNl
T2Zmc2V0LCB1c2VzRmlyc3RWZXJ0ZXhPZmZzZXQsIHN0cmlkZSBhbmQgc3RhcnRWZXJ0ZXguCisg
ICAgLy8gQ2FuIHRocm93IGFuIGVycm9yIG9uIGludGVnZXIgb3ZlcmZsb3cuCisgICAgZ2w6OkVy
cm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBjb21wdXRlT2Zmc2V0KEdMaW50IHN0YXJ0VmVydGV4
KSBjb25zdDsKKwogICAgIGJvb2wgYWN0aXZlOwogCiAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAqYXR0cmlidXRlOwogICAgIEdMZW51bSBjdXJyZW50VmFsdWVUeXBlOwotICAgIHVuc2ln
bmVkIGludCBvZmZzZXQ7CisgICAgdW5zaWduZWQgaW50IGJhc2VPZmZzZXQ7CisgICAgYm9vbCB1
c2VzRmlyc3RWZXJ0ZXhPZmZzZXQ7CiAgICAgdW5zaWduZWQgaW50IHN0cmlkZTsgICAvLyAwIG1l
YW5zIG5vdCB0byBhZHZhbmNlIHRoZSByZWFkIHBvaW50ZXIgYXQgYWxsCiAKLSAgICBWZXJ0ZXhC
dWZmZXIgKnZlcnRleEJ1ZmZlcjsKKyAgICBWZXJ0ZXhCdWZmZXJCaW5kaW5nIHZlcnRleEJ1ZmZl
cjsKICAgICBCdWZmZXJEM0QgKnN0b3JhZ2U7CiAgICAgdW5zaWduZWQgaW50IHNlcmlhbDsKICAg
ICB1bnNpZ25lZCBpbnQgZGl2aXNvcjsKIH07CiAKK2VudW0gY2xhc3MgVmVydGV4U3RvcmFnZVR5
cGUKK3sKKyAgICBVTktOT1dOLAorICAgIFNUQVRJQywgICAgICAgICAvLyBUcmFuc2xhdGUgdGhl
IHZlcnRleCBkYXRhIG9uY2UgYW5kIHJlLXVzZSBpdC4KKyAgICBEWU5BTUlDLCAgICAgICAgLy8g
VHJhbnNsYXRlIHRoZSBkYXRhIGV2ZXJ5IGZyYW1lIGludG8gYSByaW5nIGJ1ZmZlci4KKyAgICBE
SVJFQ1QsICAgICAgICAgLy8gQmluZCBhIEQzRCBidWZmZXIgZGlyZWN0bHkgd2l0aG91dCBhbnkg
dHJhbnNsYXRpb24uCisgICAgQ1VSUkVOVF9WQUxVRSwgIC8vIFVzZSBhIHNpbmdsZSB2YWx1ZSBm
b3IgdGhlIGF0dHJpYnV0ZS4KK307CisKKy8vIEdpdmVuIGEgdmVydGV4IGF0dHJpYnV0ZSwgcmV0
dXJuIHRoZSB0eXBlIG9mIHN0b3JhZ2UgaXQgd2lsbCB1c2UuCitWZXJ0ZXhTdG9yYWdlVHlwZSBD
bGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
KTsKKwogY2xhc3MgVmVydGV4RGF0YU1hbmFnZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAg
cHVibGljOgogICAgIFZlcnRleERhdGFNYW5hZ2VyKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3Rvcnkp
OwogICAgIHZpcnR1YWwgflZlcnRleERhdGFNYW5hZ2VyKCk7CiAKLSAgICBnbDo6RXJyb3IgcHJl
cGFyZVZlcnRleERhdGEoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xpbnQgc3RhcnQsIEdMc2l6
ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRBdHRy
aWJ1dGUgKm91dEF0dHJpYnMsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICBnbDo6RXJyb3IgcHJl
cGFyZVZlcnRleERhdGEoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICp0cmFuc2xhdGVkQXR0cmlicywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpOwogCi0gIHByaXZhdGU6
Ci0gICAgZ2w6OkVycm9yIHJlc2VydmVTcGFjZUZvckF0dHJpYihjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsKKyAgICBz
dGF0aWMgdm9pZCBTdG9yZURpcmVjdEF0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICpkaXJlY3RB
dHRyaWIpOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlTWF0Y2hpbmdTdGF0aWNEYXRhKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRW
YWx1ZSkgY29uc3Q7CisgICAgc3RhdGljIGdsOjpFcnJvciBTdG9yZVN0YXRpY0F0dHJpYihUcmFu
c2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKTsKIAotICAgIGdsOjpFcnJvciBzdG9yZUF0dHJp
YnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJy
ZW50VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRBdHRyaWJ1
dGUgKnRyYW5zbGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcyk7CisgICAgZ2w6OkVycm9yIHN0
b3JlRHluYW1pY0F0dHJpYnMoc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gKnRyYW5z
bGF0ZWRBdHRyaWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpBdHRyaWJ1dGVzTWFzayAmZHluYW1pY0F0dHJpYnNNYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZXMpOwogCi0gICAgZ2w6OkVycm9yIHN0b3JlQ3VycmVudFZhbHVlKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRW
YWx1ZSwKKyAgICAvLyBQcm9tb3RlIHN0YXRpYyB1c2FnZSBvZiBkeW5hbWljIGJ1ZmZlcnMuCisg
ICAgc3RhdGljIHZvaWQgUHJvbW90ZUR5bmFtaWNBdHRyaWJzKGNvbnN0IHN0ZDo6dmVjdG9yPFRy
YW5zbGF0ZWRBdHRyaWJ1dGU+ICZ0cmFuc2xhdGVkQXR0cmlicywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZkeW5hbWljQXR0
cmlic01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQpOworCisgICAgZ2w6OkVycm9yIHN0b3JlQ3VycmVudFZhbHVlKGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRh
ICpjYWNoZWRWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpj
YWNoZWRPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbWluZ1Zl
cnRleEJ1ZmZlckludGVyZmFjZSAqYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGF0dHJpYkluZGV4KTsKIAotICAgIHZvaWQgaGludFVubWFwQWxsUmVzb3Vy
Y2VzKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJ1dGU+ICZ2ZXJ0ZXhBdHRyaWJ1
dGVzKTsKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ3VycmVudFZhbHVlU3RhdGUKKyAgICB7Cisg
ICAgICAgIEN1cnJlbnRWYWx1ZVN0YXRlKCk7CisgICAgICAgIH5DdXJyZW50VmFsdWVTdGF0ZSgp
OwogCisgICAgICAgIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqYnVmZmVyOworICAg
ICAgICBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSBkYXRhOworICAgICAgICBzaXpl
X3Qgb2Zmc2V0OworICAgIH07CisKKyAgICBnbDo6RXJyb3IgcmVzZXJ2ZVNwYWNlRm9yQXR0cmli
KGNvbnN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUgJnRyYW5zbGF0ZWRBdHRyaWIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0OworCisgICAgZ2w6
OkVycm9yIHN0b3JlRHluYW1pY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpOworCiAgICAgQnVmZmVyRmFjdG9y
eUQzRCAqY29uc3QgbUZhY3Rvcnk7CiAKICAgICBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UgKm1TdHJlYW1pbmdCdWZmZXI7Ci0KLSAgICBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVl
RGF0YSBtQ3VycmVudFZhbHVlW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwotCi0gICAgU3RyZWFt
aW5nVmVydGV4QnVmZmVySW50ZXJmYWNlICptQ3VycmVudFZhbHVlQnVmZmVyW2dsOjpNQVhfVkVS
VEVYX0FUVFJJQlNdOwotICAgIHN0ZDo6c2l6ZV90IG1DdXJyZW50VmFsdWVPZmZzZXRzW2dsOjpN
QVhfVkVSVEVYX0FUVFJJQlNdOworICAgIHN0ZDo6dmVjdG9yPEN1cnJlbnRWYWx1ZVN0YXRlPiBt
Q3VycmVudFZhbHVlQ2FjaGU7CisgICAgZ2w6OkF0dHJpYnV0ZXNNYXNrIG1EeW5hbWljQXR0cmli
c01hc2tDYWNoZTsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9EM0RfVkVSVEVYREFUQU1BTkFHRVJfSF8KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1dvcmthcm91bmRzRDNELmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1dvcmthcm91bmRzRDNELmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdvcmthcm91
bmRzRDNELmg6IFdvcmthcm91bmRzIGZvciBEM0QgZHJpdmVyIGJ1Z3MgYW5kIG90aGVyIGlzc3Vl
cy4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfV09SS0FST1VORFNEM0RfSF8KKyNk
ZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX1dPUktBUk9VTkRTRDNEX0hfCisKKy8vIFRPRE8o
am1hZGlsbCx6bW8sZ2VvZmZsYW5nKTogbWFrZSBhIHdvcmthcm91bmRzIGxpYnJhcnkgdGhhdCBj
YW4gb3BlcmF0ZQorLy8gaW5kZXBlbmRlbnQgb2YgQU5HTEUncyByZW5kZXJlci4gV29ya2Fyb3Vu
ZHMgc2hvdWxkIGFsc28gYmUgYWNjZXNzaWJsZQorLy8gb3V0c2lkZSBvZiB0aGUgUmVuZGVyZXIu
CisKK25hbWVzcGFjZSByeAoreworc3RydWN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMKK3sKKyAg
ICBEM0RDb21waWxlcldvcmthcm91bmRzKCkKKyAgICAgICAgOiBza2lwT3B0aW1pemF0aW9uKGZh
bHNlKSwgdXNlTWF4T3B0aW1pemF0aW9uKGZhbHNlKSwgZW5hYmxlSUVFRVN0cmljdG5lc3MoZmFs
c2UpCisgICAgeworICAgIH0KKworICAgIGJvb2wgc2tpcE9wdGltaXphdGlvbjsKKyAgICBib29s
IHVzZU1heE9wdGltaXphdGlvbjsKKworICAgIC8vIElFRUUgc3RyaWN0bmVzcyBuZWVkcyB0byBi
ZSBlbmFibGVkIGZvciBOQU5zIHRvIHdvcmsuCisgICAgYm9vbCBlbmFibGVJRUVFU3RyaWN0bmVz
czsKK307CisKK3N0cnVjdCBXb3JrYXJvdW5kc0QzRAoreworICAgIFdvcmthcm91bmRzRDNEKCkK
KyAgICAgICAgOiBtcnRQZXJmV29ya2Fyb3VuZChmYWxzZSksCisgICAgICAgICAgc2V0RGF0YUZh
c3RlclRoYW5JbWFnZVVwbG9hZChmYWxzZSksCisgICAgICAgICAgemVyb01heExvZFdvcmthcm91
bmQoZmFsc2UpLAorICAgICAgICAgIHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKGZh
bHNlKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBPbiBzb21lIHN5c3RlbXMsIGhhdmluZyBleHRy
YSByZW5kZXJ0YXJnZXRzIHRoYW4gbmVjZXNzYXJ5IHNsb3dzIGRvd24gdGhlIHNoYWRlci4KKyAg
ICAvLyBXZSBjYW4gZml4IHRoaXMgYnkgb3B0aW1pemluZyB0aG9zZSBvdXQgb2YgdGhlIHNoYWRl
ci4gQXQgdGhlIHNhbWUgdGltZSwgd2UgY2FuCisgICAgLy8gd29yayBhcm91bmQgYSBidWcgb24g
c29tZSBuVmlkaWEgZHJpdmVycyB0aGF0IHRoZXkgaWdub3JlICJudWxsIiByZW5kZXIgdGFyZ2V0
cworICAgIC8vIGluIEQzRDExLCBieSBjb21wYWN0aW5nIHRoZSBhY3RpdmUgY29sb3IgYXR0YWNo
bWVudHMgbGlzdCB0byBvbWl0IG51bGwgZW50cmllcy4KKyAgICBib29sIG1ydFBlcmZXb3JrYXJv
dW5kOworCisgICAgYm9vbCBzZXREYXRhRmFzdGVyVGhhbkltYWdlVXBsb2FkOworCisgICAgLy8g
U29tZSByZW5kZXJlcnMgY2FuJ3QgZGlzYWJsZSBtaXBtYXBzIG9uIGEgbWlwbWFwcGVkIHRleHR1
cmUgKGkuZS4gc29sZWx5IHNhbXBsZSBmcm9tIGxldmVsCisgICAgLy8gemVybywgYW5kIGlnbm9y
ZSB0aGUgb3RoZXIgbGV2ZWxzKS4gRDNEMTEgRmVhdHVyZSBMZXZlbCAxMCsgZG9lcyB0aGlzIGJ5
IHNldHRpbmcgTWF4TE9EIHRvCisgICAgLy8gMC4wZiBpbiB0aGUgU2FtcGxlciBzdGF0ZS4gRDNE
OSBzZXRzIEQzRFNBTVBfTUlQRklMVEVSIHRvIEQzRFRFWEZfTk9ORS4gVGhlcmUgaXMgbm8KKyAg
ICAvLyBlcXVpdmFsZW50IHRvIHRoaXMgaW4gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMuIFRoaXMg
Y2F1c2VzIHByb2JsZW1zIHdoZW4gKGZvciBleGFtcGxlKSBhbgorICAgIC8vIGFwcGxpY2F0aW9u
IGNyZWF0ZXMgYSBtaXBtYXBwZWQgdGV4dHVyZTJELCBidXQgc2V0cyBHTF9URVhUVVJFX01JTl9G
SUxURVIgdG8gR0xfTkVBUkVTVAorICAgIC8vIChpLmUgZGlzYWJsZXMgbWlwbWFwcykuIFRvIHdv
cmsgYXJvdW5kIHRoaXMsIEQzRDExIEZMOV8zIGhhcyB0byBjcmVhdGUgdHdvIGNvcGllcyBvZiB0
aGUKKyAgICAvLyB0ZXh0dXJlLiBUaGUgdGV4dHVyZXMnIGxldmVsIHplcm9zIGFyZSBpZGVudGlj
YWwsIGJ1dCBvbmx5IG9uZSB0ZXh0dXJlIGhhcyBtaXBzLgorICAgIGJvb2wgemVyb01heExvZFdv
cmthcm91bmQ7CisKKyAgICAvLyBTb21lIHJlbmRlcmVycyBkbyBub3Qgc3VwcG9ydCBHZW9tZXRy
eSBTaGFkZXJzIHNvIHRoZSBHZW9tZXRyeSBTaGFkZXItYmFzZWQgUG9pbnRTcHJpdGUKKyAgICAv
LyBlbXVsYXRpb24gd2lsbCBub3Qgd29yay4gVG8gd29yayBhcm91bmQgdGhpcywgRDNEMTEgRkw5
XzMgaGFzIHRvIHVzZSBhIGRpZmZlcmVudCBwb2ludHNwcml0ZQorICAgIC8vIGVtdWxhdGlvbiB0
aGF0IGlzIGltcGxlbWVudGVkIHVzaW5nIGluc3RhbmNlZCBxdWFkcy4KKyAgICBib29sIHVzZUlu
c3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uOworfTsKK30KKworI2VuZGlmICAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfV09SS0FST1VORFNEM0RfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0JsaXQxMS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksMTUgKzk5LDE1IEBACiAgICAgc3RhZ2luZ0Rlc2MuTWlzY0ZsYWdzID0g
MDsKICAgICBzdGFnaW5nRGVzYy5CaW5kRmxhZ3MgPSAwOwogCi0gICAgSUQzRDExVGV4dHVyZTJE
ICpzdGFnaW5nVGV4dHVyZSA9IE5VTEw7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNy
ZWF0ZVRleHR1cmUyRCgmc3RhZ2luZ0Rlc2MsIE5VTEwsICZzdGFnaW5nVGV4dHVyZSk7CisgICAg
SUQzRDExVGV4dHVyZTJEICpzdGFnaW5nVGV4dHVyZSA9IG51bGxwdHI7CisgICAgSFJFU1VMVCBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmc3RhZ2luZ0Rlc2MsIG51bGxwdHIsICZz
dGFnaW5nVGV4dHVyZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKICAgICAgICAg
RVJSKCJGYWlsZWQgdG8gY3JlYXRlIHN0YWdpbmcgdGV4dHVyZSBmb3IgZGVwdGggc3RlbmNpbCBi
bGl0LiBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBjb250ZXh0LT5Db3B5U3VicmVzb3Vy
Y2VSZWdpb24oc3RhZ2luZ1RleHR1cmUsIDAsIDAsIDAsIDAsIHNvdXJjZSwgc3VicmVzb3VyY2Us
IE5VTEwpOworICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihzdGFnaW5nVGV4dHVy
ZSwgMCwgMCwgMCwgMCwgc291cmNlLCBzdWJyZXNvdXJjZSwgbnVsbHB0cik7CiAKICAgICByZXR1
cm4gc3RhZ2luZ1RleHR1cmU7CiB9CkBAIC0xOTYsNDAgKzE5NiwxMTQgQEAKICAgICByZXR1cm4g
Y29sb3JJbmRleDsKIH0KIAorRDNEMTFfQkxFTkRfREVTQyBHZXRBbHBoYU1hc2tCbGVuZFN0YXRl
RGVzYygpCit7CisgICAgRDNEMTFfQkxFTkRfREVTQyBkZXNjOworICAgIG1lbXNldCgmZGVzYywg
MCwgc2l6ZW9mKGRlc2MpKTsKKyAgICBkZXNjLlJlbmRlclRhcmdldFswXS5CbGVuZEVuYWJsZSAg
ICAgICAgICAgPSBUUlVFOworICAgIGRlc2MuUmVuZGVyVGFyZ2V0WzBdLlNyY0JsZW5kICAgICAg
ICAgICAgICA9IEQzRDExX0JMRU5EX09ORTsKKyAgICBkZXNjLlJlbmRlclRhcmdldFswXS5EZXN0
QmxlbmQgICAgICAgICAgICAgPSBEM0QxMV9CTEVORF9aRVJPOworICAgIGRlc2MuUmVuZGVyVGFy
Z2V0WzBdLkJsZW5kT3AgICAgICAgICAgICAgICA9IEQzRDExX0JMRU5EX09QX0FERDsKKyAgICBk
ZXNjLlJlbmRlclRhcmdldFswXS5TcmNCbGVuZEFscGhhICAgICAgICAgPSBEM0QxMV9CTEVORF9a
RVJPOworICAgIGRlc2MuUmVuZGVyVGFyZ2V0WzBdLkRlc3RCbGVuZEFscGhhICAgICAgICA9IEQz
RDExX0JMRU5EX1pFUk87CisgICAgZGVzYy5SZW5kZXJUYXJnZXRbMF0uQmxlbmRPcEFscGhhICAg
ICAgICAgID0gRDNEMTFfQkxFTkRfT1BfQUREOworICAgIGRlc2MuUmVuZGVyVGFyZ2V0WzBdLlJl
bmRlclRhcmdldFdyaXRlTWFzayA9IEQzRDExX0NPTE9SX1dSSVRFX0VOQUJMRV9SRUQgfAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0NPTE9S
X1dSSVRFX0VOQUJMRV9HUkVFTiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX0JMVUU7CisgICAgcmV0dXJu
IGRlc2M7Cit9CisKK0QzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBxdWFkMkRMYXlvdXRbXSA9Cit7
CisgICAgeyAiUE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDAsIDAsIEQz
RDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorICAgIHsgIlRFWENPT1JEIiwgMCwgRFhH
SV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCA4LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEs
IDAgfSwKK307CisKK0QzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBxdWFkM0RMYXlvdXRbXSA9Cit7
CisgICAgeyAiUE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsIDAsIDAsIEQz
RDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAorICAgIHsgIkxBWUVSIiwgMCwgRFhHSV9G
T1JNQVRfUjMyX1VJTlQsIDAsIDgsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAor
ICAgIHsgIlRFWENPT1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAwLCAxMiwg
RDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAwIH0sCit9OworCiB9IC8vIG5hbWVzcGFjZQog
CiBCbGl0MTE6OkJsaXQxMShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICA6IG1SZW5kZXJlcihy
ZW5kZXJlciksCi0gICAgICBtVmVydGV4QnVmZmVyKE5VTEwpLAotICAgICAgbVBvaW50U2FtcGxl
cihOVUxMKSwKLSAgICAgIG1MaW5lYXJTYW1wbGVyKE5VTEwpLAotICAgICAgbVNjaXNzb3JFbmFi
bGVkUmFzdGVyaXplclN0YXRlKE5VTEwpLAotICAgICAgbVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6
ZXJTdGF0ZShOVUxMKSwKLSAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZShOVUxMKSwKLSAgICAgIG1R
dWFkMkRJTChOVUxMKSwKLSAgICAgIG1RdWFkMkRWUyhOVUxMKSwKLSAgICAgIG1EZXB0aFBTKE5V
TEwpLAotICAgICAgbVF1YWQzRElMKE5VTEwpLAotICAgICAgbVF1YWQzRFZTKE5VTEwpLAotICAg
ICAgbVF1YWQzREdTKE5VTEwpLAotICAgICAgbVN3aXp6bGVDQihOVUxMKQorICAgICAgbVJlc291
cmNlc0luaXRpYWxpemVkKGZhbHNlKSwKKyAgICAgIG1WZXJ0ZXhCdWZmZXIobnVsbHB0ciksCisg
ICAgICBtUG9pbnRTYW1wbGVyKG51bGxwdHIpLAorICAgICAgbUxpbmVhclNhbXBsZXIobnVsbHB0
ciksCisgICAgICBtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUobnVsbHB0ciksCisgICAg
ICBtU2Npc3NvckRpc2FibGVkUmFzdGVyaXplclN0YXRlKG51bGxwdHIpLAorICAgICAgbURlcHRo
U3RlbmNpbFN0YXRlKG51bGxwdHIpLAorICAgICAgbVF1YWQyRElMKHF1YWQyRExheW91dCwKKyAg
ICAgICAgICAgICAgICBBcnJheVNpemUocXVhZDJETGF5b3V0KSwKKyAgICAgICAgICAgICAgICBn
X1ZTX1Bhc3N0aHJvdWdoMkQsCisgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfUGFzc3Ro
cm91Z2gyRCksCisgICAgICAgICAgICAgICAgIkJsaXQxMSAyRCBpbnB1dCBsYXlvdXQiKSwKKyAg
ICAgIG1RdWFkMkRWUyhnX1ZTX1Bhc3N0aHJvdWdoMkQsIEFycmF5U2l6ZShnX1ZTX1Bhc3N0aHJv
dWdoMkQpLCAiQmxpdDExIDJEIHZlcnRleCBzaGFkZXIiKSwKKyAgICAgIG1EZXB0aFBTKGdfUFNf
UGFzc3Rocm91Z2hEZXB0aDJELAorICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfUGFzc3Ro
cm91Z2hEZXB0aDJEKSwKKyAgICAgICAgICAgICAgICJCbGl0MTEgMkQgZGVwdGggcGl4ZWwgc2hh
ZGVyIiksCisgICAgICBtUXVhZDNESUwocXVhZDNETGF5b3V0LAorICAgICAgICAgICAgICAgIEFy
cmF5U2l6ZShxdWFkM0RMYXlvdXQpLAorICAgICAgICAgICAgICAgIGdfVlNfUGFzc3Rocm91Z2gz
RCwKKyAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19WU19QYXNzdGhyb3VnaDNEKSwKKyAgICAg
ICAgICAgICAgICAiQmxpdDExIDNEIGlucHV0IGxheW91dCIpLAorICAgICAgbVF1YWQzRFZTKGdf
VlNfUGFzc3Rocm91Z2gzRCwgQXJyYXlTaXplKGdfVlNfUGFzc3Rocm91Z2gzRCksICJCbGl0MTEg
M0QgdmVydGV4IHNoYWRlciIpLAorICAgICAgbVF1YWQzREdTKGdfR1NfUGFzc3Rocm91Z2gzRCwg
QXJyYXlTaXplKGdfR1NfUGFzc3Rocm91Z2gzRCksICJCbGl0MTEgM0QgZ2VvbWV0cnkgc2hhZGVy
IiksCisgICAgICBtQWxwaGFNYXNrQmxlbmRTdGF0ZShHZXRBbHBoYU1hc2tCbGVuZFN0YXRlRGVz
YygpLCAiQmxpdDExIEFscGhhIE1hc2sgQmxlbmQiKSwKKyAgICAgIG1Td2l6emxlQ0IobnVsbHB0
cikKIHsKLSAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJCbGl0MTE6OkJsaXQxMSIpOwor
fQogCitCbGl0MTE6On5CbGl0MTEoKQoreworICAgIGZyZWVSZXNvdXJjZXMoKTsKKworICAgIG1R
dWFkMkRJTC5yZWxlYXNlKCk7CisgICAgbVF1YWQyRFZTLnJlbGVhc2UoKTsKKyAgICBtRGVwdGhQ
Uy5yZWxlYXNlKCk7CisKKyAgICBtUXVhZDNESUwucmVsZWFzZSgpOworICAgIG1RdWFkM0RWUy5y
ZWxlYXNlKCk7CisgICAgbVF1YWQzREdTLnJlbGVhc2UoKTsKKworICAgIGNsZWFyU2hhZGVyTWFw
KCk7Cit9CisKK2dsOjpFcnJvciBCbGl0MTE6OmluaXRSZXNvdXJjZXMoKQoreworICAgIGlmICht
UmVzb3VyY2VzSW5pdGlhbGl6ZWQpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICB9CisKKyAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJCbGl0
MTE6OmluaXRSZXNvdXJjZXMiKTsKKwogICAgIEhSRVNVTFQgcmVzdWx0OwogICAgIElEM0QxMURl
dmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAogICAgIEQzRDExX0JVRkZF
Ul9ERVNDIHZiRGVzYzsKLSAgICB2YkRlc2MuQnl0ZVdpZHRoID0gc3RkOjptYXgoc2l6ZW9mKGQz
ZDExOjpQb3NpdGlvbkxheWVyVGV4Q29vcmQzRFZlcnRleCksIHNpemVvZihkM2QxMTo6UG9zaXRp
b25UZXhDb29yZFZlcnRleCkpICoKLSAgICAgICAgICAgICAgICAgICAgICAgNiAqIHJlbmRlcmVy
LT5nZXRSZW5kZXJlckNhcHMoKS5tYXgzRFRleHR1cmVTaXplOworICAgIHZiRGVzYy5CeXRlV2lk
dGggPQorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHN0ZDo6bWF4KHNpemVvZihk
M2QxMTo6UG9zaXRpb25MYXllclRleENvb3JkM0RWZXJ0ZXgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkM2QxMTo6UG9zaXRpb25UZXhDb29yZFZl
cnRleCkpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2ICogbVJlbmRlcmVy
LT5nZXRSZW5kZXJlckNhcHMoKS5tYXgzRFRleHR1cmVTaXplKTsKICAgICB2YkRlc2MuVXNhZ2Ug
PSBEM0QxMV9VU0FHRV9EWU5BTUlDOwogICAgIHZiRGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5E
X1ZFUlRFWF9CVUZGRVI7CiAgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FD
Q0VTU19XUklURTsKICAgICB2YkRlc2MuTWlzY0ZsYWdzID0gMDsKICAgICB2YkRlc2MuU3RydWN0
dXJlQnl0ZVN0cmlkZSA9IDA7CiAKLSAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigm
dmJEZXNjLCBOVUxMLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVCdWZmZXIoJnZiRGVzYywgbnVsbHB0ciwgJm1WZXJ0ZXhCdWZmZXIpOwogICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAg
ICAgZnJlZVJlc291cmNlcygpOworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgdmVydGV4IGJ1ZmZlciwgSFJFU1VMVDogMHgl
WCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICB9CiAgICAgZDNkMTE6
OlNldERlYnVnTmFtZShtVmVydGV4QnVmZmVyLCAiQmxpdDExIHZlcnRleCBidWZmZXIiKTsKIAog
ICAgIEQzRDExX1NBTVBMRVJfREVTQyBwb2ludFNhbXBsZXJEZXNjOwpAQCAtMjQ5LDYgKzMyMywx
MiBAQAogCiAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnBvaW50U2Ft
cGxlckRlc2MsICZtUG9pbnRTYW1wbGVyKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIGZyZWVSZXNvdXJjZXMo
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgcG9pbnQgc2FtcGxlciBzdGF0
ZSwgSFJFU1VMVDogMHglWCIsIHJlc3VsdCk7CisgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05h
bWUobVBvaW50U2FtcGxlciwgIkJsaXQxMSBwb2ludCBzYW1wbGVyIik7CiAKICAgICBEM0QxMV9T
QU1QTEVSX0RFU0MgbGluZWFyU2FtcGxlckRlc2M7CkBAIC0yNjgsNiArMzQ4LDEyIEBACiAKICAg
ICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0ZSgmbGluZWFyU2FtcGxlckRlc2Ms
ICZtTGluZWFyU2FtcGxlcik7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBmcmVlUmVzb3VyY2VzKCk7CisgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBibGl0IGxpbmVhciBzYW1wbGVyIHN0YXRlLCBIUkVT
VUxUOiAweCVYIiwgcmVzdWx0KTsKKyAgICB9CiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtTGlu
ZWFyU2FtcGxlciwgIkJsaXQxMSBsaW5lYXIgc2FtcGxlciIpOwogCiAgICAgLy8gVXNlIGEgcmFz
dGVyaXplciBzdGF0ZSB0aGF0IHdpbGwgbm90IGN1bGwgc28gdGhhdCBpbnZlcnRlZCBxdWFkcyB3
aWxsIG5vdCBiZSBjdWxsZWQKQEAgLTI4NSwxMSArMzcxLDI1IEBACiAgICAgcmFzdGVyRGVzYy5T
Y2lzc29yRW5hYmxlID0gVFJVRTsKICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJhc3Rlcml6
ZXJTdGF0ZSgmcmFzdGVyRGVzYywgJm1TY2lzc29yRW5hYmxlZFJhc3Rlcml6ZXJTdGF0ZSk7CiAg
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgeworICAgICAgICBmcmVlUmVzb3VyY2VzKCk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNy
ZWF0ZSBibGl0IHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0ZSwgSFJFU1VMVDogMHglWCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICB9CiAgICAgZDNkMTE6OlNldERl
YnVnTmFtZShtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUsICJCbGl0MTEgc2Npc3Nvcmlu
ZyByYXN0ZXJpemVyIHN0YXRlIik7CiAKICAgICByYXN0ZXJEZXNjLlNjaXNzb3JFbmFibGUgPSBG
QUxTRTsKICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSgmcmFzdGVy
RGVzYywgJm1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUpOwogICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAg
ZnJlZVJlc291cmNlcygpOworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBubyBz
Y2lzc29yaW5nIHJhc3Rlcml6ZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVNj
aXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZSwgIkJsaXQxMSBubyBzY2lzc29yaW5nIHJhc3Rl
cml6ZXIgc3RhdGUiKTsKIAogICAgIEQzRDExX0RFUFRIX1NURU5DSUxfREVTQyBkZXB0aFN0ZW5j
aWxEZXNjOwpAQCAtMzEwLDQ3ICs0MTAsMTMgQEAKIAogICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsICZtRGVwdGhTdGVuY2lsU3Rh
dGUpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0gICAgZDNkMTE6OlNldERlYnVn
TmFtZShtRGVwdGhTdGVuY2lsU3RhdGUsICJCbGl0MTEgZGVwdGggc3RlbmNpbCBzdGF0ZSIpOwot
Ci0gICAgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDIHF1YWQyRExheW91dFtdID0KKyAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICB7ICJQT1NJVElPTiIsIDAsIERYR0lfRk9S
TUFUX1IzMkczMl9GTE9BVCwgMCwgMCwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAwIH0s
Ci0gICAgICAgIHsgIlRFWENPT1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAwLCA4
LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKLSAgICB9OwotCi0gICAgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChxdWFkMkRMYXlvdXQsIEFycmF5U2l6ZShxdWFk
MkRMYXlvdXQpLCBnX1ZTX1Bhc3N0aHJvdWdoMkQsIEFycmF5U2l6ZShnX1ZTX1Bhc3N0aHJvdWdo
MkQpLCAmbVF1YWQyRElMKTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUobVF1YWQyRElMLCAiQmxpdDExIDJEIGlucHV0IGxheW91dCIpOwot
Ci0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVWZXJ0ZXhTaGFkZXIoZ19WU19QYXNzdGhyb3Vn
aDJELCBBcnJheVNpemUoZ19WU19QYXNzdGhyb3VnaDJEKSwgTlVMTCwgJm1RdWFkMkRWUyk7Ci0g
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1R
dWFkMkRWUywgIkJsaXQxMSAyRCB2ZXJ0ZXggc2hhZGVyIik7Ci0KLSAgICBpZiAocmVuZGVyZXIt
PmlzRVMzQ2FwYWJsZSgpKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVQ
aXhlbFNoYWRlcihnX1BTX1Bhc3N0aHJvdWdoRGVwdGgyRCwgQXJyYXlTaXplKGdfUFNfUGFzc3Ro
cm91Z2hEZXB0aDJEKSwgTlVMTCwgJm1EZXB0aFBTKTsKLSAgICAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKLSAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRGVwdGhQUywgIkJsaXQx
MSAyRCBkZXB0aCBwaXhlbCBzaGFkZXIiKTsKLQotICAgICAgICBEM0QxMV9JTlBVVF9FTEVNRU5U
X0RFU0MgcXVhZDNETGF5b3V0W10gPQotICAgICAgICB7Ci0gICAgICAgICAgICB7ICJQT1NJVElP
TiIsIDAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgMCwgIDAsIEQzRDExX0lOUFVUX1BF
Ul9WRVJURVhfREFUQSwgMCB9LAotICAgICAgICAgICAgeyAiTEFZRVIiLCAgICAwLCBEWEdJX0ZP
Uk1BVF9SMzJfVUlOVCwgICAgICAgIDAsICA4LCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEs
IDAgfSwKLSAgICAgICAgICAgIHsgIlRFWENPT1JEIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
X0ZMT0FULCAwLCAxMiwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAwIH0sCi0gICAgICAg
IH07Ci0KLSAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChxdWFkM0RM
YXlvdXQsIEFycmF5U2l6ZShxdWFkM0RMYXlvdXQpLCBnX1ZTX1Bhc3N0aHJvdWdoM0QsIEFycmF5
U2l6ZShnX1ZTX1Bhc3N0aHJvdWdoM0QpLCAmbVF1YWQzRElMKTsKLSAgICAgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKLSAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUXVhZDNESUws
ICJCbGl0MTEgM0QgaW5wdXQgbGF5b3V0Iik7Ci0KLSAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5D
cmVhdGVWZXJ0ZXhTaGFkZXIoZ19WU19QYXNzdGhyb3VnaDNELCBBcnJheVNpemUoZ19WU19QYXNz
dGhyb3VnaDNEKSwgTlVMTCwgJm1RdWFkM0RWUyk7Ci0gICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7Ci0gICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVF1YWQzRFZTLCAiQmxpdDEx
IDNEIHZlcnRleCBzaGFkZXIiKTsKLQotICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUdl
b21ldHJ5U2hhZGVyKGdfR1NfUGFzc3Rocm91Z2gzRCwgQXJyYXlTaXplKGdfR1NfUGFzc3Rocm91
Z2gzRCksIE5VTEwsICZtUXVhZDNER1MpOwotICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOwotICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1RdWFkM0RHUywgIlJlbmRlcmVyMTEg
Y29weSAzRCB0ZXh0dXJlIGdlb21ldHJ5IHNoYWRlciIpOworICAgICAgICBmcmVlUmVzb3VyY2Vz
KCk7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBibGl0IGRlcHRoIHN0ZW5jaWwgc3Rh
dGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1bHQpOwogICAgIH0KKyAgICBkM2QxMTo6U2V0RGVidWdO
YW1lKG1EZXB0aFN0ZW5jaWxTdGF0ZSwgIkJsaXQxMSBkZXB0aCBzdGVuY2lsIHN0YXRlIik7CiAK
ICAgICBEM0QxMV9CVUZGRVJfREVTQyBzd2l6emxlQnVmZmVyRGVzYzsKICAgICBzd2l6emxlQnVm
ZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplb2YodW5zaWduZWQgaW50KSAqIDQ7CkBAIC0zNjAsMTIg
KzQyNiwyMiBAQAogICAgIHN3aXp6bGVCdWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CiAgICAgc3dp
enpsZUJ1ZmZlckRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CiAKLSAgICByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmc3dpenpsZUJ1ZmZlckRlc2MsIE5VTEwsICZtU3dpenpsZUNC
KTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmc3dpenpsZUJ1ZmZlckRlc2Ms
IG51bGxwdHIsICZtU3dpenpsZUNCKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwor
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIGZyZWVSZXNvdXJjZXMoKTsK
KyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBibGl0IHN3aXp6bGUgYnVmZmVyLCBIUkVTVUxUOiAweCVYIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHQpOworICAgIH0KICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Td2l6
emxlQ0IsICJCbGl0MTEgc3dpenpsZSBjb25zdGFudCBidWZmZXIiKTsKKworICAgIG1SZXNvdXJj
ZXNJbml0aWFsaXplZCA9IHRydWU7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKIH0KIAotQmxpdDExOjp+QmxpdDExKCkKK3ZvaWQgQmxpdDExOjpmcmVlUmVzb3VyY2VzKCkK
IHsKICAgICBTYWZlUmVsZWFzZShtVmVydGV4QnVmZmVyKTsKICAgICBTYWZlUmVsZWFzZShtUG9p
bnRTYW1wbGVyKTsKQEAgLTM3MywyNCArNDQ5LDE1IEBACiAgICAgU2FmZVJlbGVhc2UobVNjaXNz
b3JFbmFibGVkUmFzdGVyaXplclN0YXRlKTsKICAgICBTYWZlUmVsZWFzZShtU2Npc3NvckRpc2Fi
bGVkUmFzdGVyaXplclN0YXRlKTsKICAgICBTYWZlUmVsZWFzZShtRGVwdGhTdGVuY2lsU3RhdGUp
OwotCi0gICAgU2FmZVJlbGVhc2UobVF1YWQyRElMKTsKLSAgICBTYWZlUmVsZWFzZShtUXVhZDJE
VlMpOwotICAgIFNhZmVSZWxlYXNlKG1EZXB0aFBTKTsKLQotICAgIFNhZmVSZWxlYXNlKG1RdWFk
M0RJTCk7Ci0gICAgU2FmZVJlbGVhc2UobVF1YWQzRFZTKTsKLSAgICBTYWZlUmVsZWFzZShtUXVh
ZDNER1MpOwotCiAgICAgU2FmZVJlbGVhc2UobVN3aXp6bGVDQik7CiAKLSAgICBjbGVhclNoYWRl
ck1hcCgpOworICAgIG1SZXNvdXJjZXNJbml0aWFsaXplZCA9IGZhbHNlOwogfQogCiAvLyBzdGF0
aWMKLUJsaXQxMTo6QmxpdFNoYWRlclR5cGUgQmxpdDExOjpHZXRCbGl0U2hhZGVyVHlwZShHTGVu
dW0gZGVzdGluYXRpb25Gb3JtYXQsIGJvb2wgaXNTaWduZWQsIGJvb2wgaXMzRCkKK0JsaXQxMTo6
QmxpdFNoYWRlclR5cGUgQmxpdDExOjpHZXRCbGl0U2hhZGVyVHlwZShHTGVudW0gZGVzdGluYXRp
b25Gb3JtYXQsIGJvb2wgaXNTaWduZWQsIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24pCiB7Ci0g
ICAgaWYgKGlzM0QpCisgICAgaWYgKGRpbWVuc2lvbiA9PSBTSEFERVJfM0QpCiAgICAgewogICAg
ICAgICBpZiAoaXNTaWduZWQpCiAgICAgICAgIHsKQEAgLTM5OSw3ICs0NjYsNyBAQAogICAgICAg
ICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjogcmV0dXJuIEJMSVRTSEFERVJfM0RfUkdCQUk7
CiAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCX0lOVEVHRVI6ICByZXR1cm4gQkxJVFNIQURFUl8z
RF9SR0JJOwogICAgICAgICAgICAgICBjYXNlIEdMX1JHX0lOVEVHRVI6ICAgcmV0dXJuIEJMSVRT
SEFERVJfM0RfUkdJOwotICAgICAgICAgICAgICBjYXNlIEdMX1JFRDogICAgICAgICAgcmV0dXJu
IEJMSVRTSEFERVJfM0RfUkk7CisgICAgICAgICAgICAgIGNhc2UgR0xfUkVEX0lOVEVHRVI6ICBy
ZXR1cm4gQkxJVFNIQURFUl8zRF9SSTsKICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBCTElUU0hBREVS
X0lOVkFMSUQ7CkBAIC00MzQsNyArNTAxLDcgQEAKICAgICAgICAgICBjYXNlIEdMX1JHQkFfSU5U
RUdFUjogcmV0dXJuIEJMSVRTSEFERVJfMkRfUkdCQUk7CiAgICAgICAgICAgY2FzZSBHTF9SR0Jf
SU5URUdFUjogIHJldHVybiBCTElUU0hBREVSXzJEX1JHQkk7CiAgICAgICAgICAgY2FzZSBHTF9S
R19JTlRFR0VSOiAgIHJldHVybiBCTElUU0hBREVSXzJEX1JHSTsKLSAgICAgICAgICBjYXNlIEdM
X1JFRDogICAgICAgICAgcmV0dXJuIEJMSVRTSEFERVJfMkRfUkk7CisgICAgICAgICAgY2FzZSBH
TF9SRURfSU5URUdFUjogIHJldHVybiBCTElUU0hBREVSXzJEX1JJOwogICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgcmV0dXJuIEJMSVRT
SEFERVJfSU5WQUxJRDsKQEAgLTUxNCw5ICs1ODEsNDQgQEAKICAgICB9CiB9CiAKLWdsOjpFcnJv
ciBCbGl0MTE6OnN3aXp6bGVUZXh0dXJlKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNl
LCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlUmVkLCBHTGVu
dW0gc3dpenpsZUdyZWVuLCBHTGVudW0gc3dpenpsZUJsdWUsIEdMZW51bSBzd2l6emxlQWxwaGEp
CitCbGl0MTE6OlNoYWRlclN1cHBvcnQgQmxpdDExOjpnZXRTaGFkZXJTdXBwb3J0KGNvbnN0IFNo
YWRlciAmc2hhZGVyKQogeworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2UoKTsKKyAgICBTaGFkZXJTdXBwb3J0IHN1cHBvcnQ7CisKKyAgICBpZiAoc2hhZGVy
LmRpbWVuc2lvbiA9PSBTSEFERVJfMkQpCisgICAgeworICAgICAgICBzdXBwb3J0LmlucHV0TGF5
b3V0ID0gbVF1YWQyRElMLnJlc29sdmUoZGV2aWNlKTsKKyAgICAgICAgc3VwcG9ydC52ZXJ0ZXhT
aGFkZXIgPSBtUXVhZDJEVlMucmVzb2x2ZShkZXZpY2UpOworICAgICAgICBzdXBwb3J0Lmdlb21l
dHJ5U2hhZGVyID0gbnVsbHB0cjsKKyAgICAgICAgc3VwcG9ydC52ZXJ0ZXhXcml0ZUZ1bmN0aW9u
ID0gV3JpdGUyRFZlcnRpY2VzOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NF
UlQoc2hhZGVyLmRpbWVuc2lvbiA9PSBTSEFERVJfM0QpOworICAgICAgICBzdXBwb3J0LmlucHV0
TGF5b3V0ID0gbVF1YWQzRElMLnJlc29sdmUoZGV2aWNlKTsKKyAgICAgICAgc3VwcG9ydC52ZXJ0
ZXhTaGFkZXIgPSBtUXVhZDNEVlMucmVzb2x2ZShkZXZpY2UpOworICAgICAgICBzdXBwb3J0Lmdl
b21ldHJ5U2hhZGVyID0gbVF1YWQzREdTLnJlc29sdmUoZGV2aWNlKTsKKyAgICAgICAgc3VwcG9y
dC52ZXJ0ZXhXcml0ZUZ1bmN0aW9uID0gV3JpdGUzRFZlcnRpY2VzOworICAgIH0KKworICAgIHJl
dHVybiBzdXBwb3J0OworfQorCitnbDo6RXJyb3IgQmxpdDExOjpzd2l6emxlVGV4dHVyZShJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlUmVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHN3aXp6bGVHcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzd2l6emxlQmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBzd2l6emxlQWxwaGEpCit7CisgICAgZ2w6OkVycm9yIGVycm9yID0gaW5p
dFJlc291cmNlcygpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorCiAgICAgSFJFU1VMVCByZXN1bHQ7CiAgICAgSUQzRDExRGV2
aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgp
OwogCkBAIC01MjQsMTAgKzYyNiwyNiBAQAogICAgIHNvdXJjZS0+R2V0RGVzYygmc291cmNlU1JW
RGVzYyk7CiAKICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPSBk
M2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oc291cmNlU1JWRGVzYy5Gb3JtYXQpOwotICAgIGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAmc291cmNlRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZv
cm1hdEluZm8oZHhnaUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQpOworICAgIEdMZW51bSBjb21w
b25lbnRUeXBlID0gZHhnaUZvcm1hdEluZm8uY29tcG9uZW50VHlwZTsKKyAgICBpZiAoY29tcG9u
ZW50VHlwZSA9PSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgLy8gV2UncmUgc3dpenpsaW5nIHRo
ZSBkZXB0aCBjb21wb25lbnQgb2YgYSBkZXB0aC1zdGVuY2lsIHRleHR1cmUuCisgICAgICAgIHN3
aXRjaCAoc291cmNlU1JWRGVzYy5Gb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTOgorICAgICAgICAgICAgICAgIGNvbXBv
bmVudFR5cGUgPSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1M6
CisgICAgICAgICAgICAgICAgY29tcG9uZW50VHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogCiAgICAg
R0xlbnVtIHNoYWRlclR5cGUgPSBHTF9OT05FOwotICAgIHN3aXRjaCAoc291cmNlRm9ybWF0SW5m
by5jb21wb25lbnRUeXBlKQorICAgIHN3aXRjaCAoY29tcG9uZW50VHlwZSkKICAgICB7CiAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ6CiAgICAgICBjYXNlIEdMX1NJR05FRF9OT1JN
QUxJWkVEOgpAQCAtNTQ2LDcgKzY2NCw3IEBACiAgICAgfQogCiAgICAgY29uc3QgU2hhZGVyICpz
aGFkZXIgPSBudWxscHRyOwotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN3aXp6bGVTaGFkZXIo
c2hhZGVyVHlwZSwgc291cmNlU1JWRGVzYy5WaWV3RGltZW5zaW9uLCAmc2hhZGVyKTsKKyAgICBl
cnJvciA9IGdldFN3aXp6bGVTaGFkZXIoc2hhZGVyVHlwZSwgc291cmNlU1JWRGVzYy5WaWV3RGlt
ZW5zaW9uLCAmc2hhZGVyKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGVycm9yOwpAQCAtNTYwLDEzICs2NzgsMTUgQEAKICAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCB2ZXJ0ZXgg
YnVmZmVyIGZvciBzd2l6emxlLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CiAgICAgfQogCisg
ICAgY29uc3QgU2hhZGVyU3VwcG9ydCAmc3VwcG9ydCA9IGdldFNoYWRlclN1cHBvcnQoKnNoYWRl
cik7CisKICAgICBVSU5UIHN0cmlkZSA9IDA7CiAgICAgVUlOVCBzdGFydElkeCA9IDA7CiAgICAg
VUlOVCBkcmF3Q291bnQgPSAwOwogICAgIEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWSB0b3BvbG9n
eTsKIAogICAgIGdsOjpCb3ggYXJlYSgwLCAwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCwg
c2l6ZS5kZXB0aCk7Ci0gICAgc2hhZGVyLT5tVmVydGV4V3JpdGVGdW5jdGlvbihhcmVhLCBzaXpl
LCBhcmVhLCBzaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwgJnN0cmlkZSwgJmRyYXdDb3VudCwg
JnRvcG9sb2d5KTsKKyAgICBzdXBwb3J0LnZlcnRleFdyaXRlRnVuY3Rpb24oYXJlYSwgc2l6ZSwg
YXJlYSwgc2l6ZSwgbWFwcGVkUmVzb3VyY2UucERhdGEsICZzdHJpZGUsICZkcmF3Q291bnQsICZ0
b3BvbG9neSk7CiAKICAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtVmVydGV4QnVmZmVyLCAwKTsK
IApAQCAtNTkyLDIzICs3MTIsMjQgQEAKICAgICBkZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50
QnVmZmVycygwLCAxLCAmbVN3aXp6bGVDQik7CiAKICAgICAvLyBBcHBseSBzdGF0ZQotICAgIGRl
dmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShOVUxMLCBOVUxMLCAweEZGRkZGRkYpOwotICAg
IGRldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUoTlVMTCwgMHhGRkZGRkZGRik7
CisgICAgZGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4
RkZGRkZGRik7CisgICAgZGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShudWxs
cHRyLCAweEZGRkZGRkZGKTsKICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29y
RGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUpOwogCiAgICAgLy8gQXBwbHkgc2hhZGVycwotICAgIGRl
dmljZUNvbnRleHQtPklBU2V0SW5wdXRMYXlvdXQoc2hhZGVyLT5tSW5wdXRMYXlvdXQpOworICAg
IGRldmljZUNvbnRleHQtPklBU2V0SW5wdXRMYXlvdXQoc3VwcG9ydC5pbnB1dExheW91dCk7CiAg
ICAgZGV2aWNlQ29udGV4dC0+SUFTZXRQcmltaXRpdmVUb3BvbG9neSh0b3BvbG9neSk7Ci0gICAg
ZGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIoc2hhZGVyLT5tVmVydGV4U2hhZGVyLCBOVUxMLCAw
KTsKKyAgICBkZXZpY2VDb250ZXh0LT5WU1NldFNoYWRlcihzdXBwb3J0LnZlcnRleFNoYWRlciwg
bnVsbHB0ciwgMCk7CiAKLSAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlcihzaGFkZXItPm1Q
aXhlbFNoYWRlciwgTlVMTCwgMCk7Ci0gICAgZGV2aWNlQ29udGV4dC0+R1NTZXRTaGFkZXIoc2hh
ZGVyLT5tR2VvbWV0cnlTaGFkZXIsIE5VTEwsIDApOworICAgIGRldmljZUNvbnRleHQtPlBTU2V0
U2hhZGVyKHNoYWRlci0+cGl4ZWxTaGFkZXIsIG51bGxwdHIsIDApOworICAgIGRldmljZUNvbnRl
eHQtPkdTU2V0U2hhZGVyKHN1cHBvcnQuZ2VvbWV0cnlTaGFkZXIsIG51bGxwdHIsIDApOwogCiAg
ICAgLy8gVW5zZXQgdGhlIGN1cnJlbnRseSBib3VuZCBzaGFkZXIgcmVzb3VyY2UgdG8gYXZvaWQg
Y29uZmxpY3RzCi0gICAgbVJlbmRlcmVyLT5zZXRTaGFkZXJSZXNvdXJjZShnbDo6U0FNUExFUl9Q
SVhFTCwgMCwgTlVMTCk7CisgICAgYXV0byBzdGF0ZU1hbmFnZXIgPSBtUmVuZGVyZXItPmdldFN0
YXRlTWFuYWdlcigpOworICAgIHN0YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNB
TVBMRVJfUElYRUwsIDAsIG51bGxwdHIpOwogCiAgICAgLy8gQXBwbHkgcmVuZGVyIHRhcmdldAot
ICAgIG1SZW5kZXJlci0+c2V0T25lVGltZVJlbmRlclRhcmdldChkZXN0KTsKKyAgICBzdGF0ZU1h
bmFnZXItPnNldE9uZVRpbWVSZW5kZXJUYXJnZXQoZGVzdCwgbnVsbHB0cik7CiAKICAgICAvLyBT
ZXQgdGhlIHZpZXdwb3J0CiAgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7CkBAIC02MjEsNyAr
NzQyLDcgQEAKICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFZpZXdwb3J0cygxLCAmdmlld3BvcnQp
OwogCiAgICAgLy8gQXBwbHkgdGV4dHVyZXMKLSAgICBtUmVuZGVyZXItPnNldFNoYWRlclJlc291
cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBzb3VyY2UpOworICAgIHN0YXRlTWFuYWdlci0+c2V0
U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIHNvdXJjZSk7CiAKICAgICAvLyBB
cHBseSBzYW1wbGVycwogICAgIGRldmljZUNvbnRleHQtPlBTU2V0U2FtcGxlcnMoMCwgMSwgJm1Q
b2ludFNhbXBsZXIpOwpAQCAtNjMwLDEyICs3NTEsMTAgQEAKICAgICBkZXZpY2VDb250ZXh0LT5E
cmF3KGRyYXdDb3VudCwgMCk7CiAKICAgICAvLyBVbmJpbmQgdGV4dHVyZXMgYW5kIHJlbmRlciB0
YXJnZXRzIGFuZCB2ZXJ0ZXggYnVmZmVyCi0gICAgbVJlbmRlcmVyLT5zZXRTaGFkZXJSZXNvdXJj
ZShnbDo6U0FNUExFUl9QSVhFTCwgMCwgTlVMTCk7CisgICAgc3RhdGVNYW5hZ2VyLT5zZXRTaGFk
ZXJSZXNvdXJjZShnbDo6U0FNUExFUl9QSVhFTCwgMCwgbnVsbHB0cik7CiAKLSAgICBtUmVuZGVy
ZXItPnVuYXBwbHlSZW5kZXJUYXJnZXRzKCk7Ci0KICAgICBVSU5UIHplcm8gPSAwOwotICAgIElE
M0QxMUJ1ZmZlciAqY29uc3QgbnVsbEJ1ZmZlciA9IE5VTEw7CisgICAgSUQzRDExQnVmZmVyICpj
b25zdCBudWxsQnVmZmVyID0gbnVsbHB0cjsKICAgICBkZXZpY2VDb250ZXh0LT5JQVNldFZlcnRl
eEJ1ZmZlcnMoMCwgMSwgJm51bGxCdWZmZXIsICZ6ZXJvLCAmemVybyk7CiAKICAgICBtUmVuZGVy
ZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7CkBAIC02NDMsMTAgKzc2MiwyMyBAQAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgQmxpdDExOjpjb3B5VGV4
dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwgY29uc3QgZ2w6OkJveCAmc291
cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0LCBjb25zdCBnbDo6Qm94
ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwgR0xlbnVtIGRlc3RG
b3JtYXQsIEdMZW51bSBmaWx0ZXIpCitnbDo6RXJyb3IgQmxpdDExOjpjb3B5VGV4dHVyZShJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG1hc2tPZmZBbHBoYSkKIHsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbml0UmVzb3Vy
Y2VzKCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBl
cnJvcjsKKyAgICB9CisKICAgICBIUkVTVUxUIHJlc3VsdDsKICAgICBJRDNEMTFEZXZpY2VDb250
ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAKQEAg
LTY1NiwxOCArNzg4LDIzIEBACiAgICAgc291cmNlLT5HZXREZXNjKCZzb3VyY2VTUlZEZXNjKTsK
IAogICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0ICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpH
ZXREWEdJRm9ybWF0SW5mbyhzb3VyY2VTUlZEZXNjLkZvcm1hdCk7Ci0gICAgY29uc3QgZ2w6Oklu
dGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGR4Z2lGb3JtYXRJbmZvLmludGVybmFsRm9ybWF0KTsKKyAgICBHTGVudW0gY29tcG9uZW50
VHlwZSAgICAgICAgICAgICAgICAgICAgPSBkeGdpRm9ybWF0SW5mby5jb21wb25lbnRUeXBlOwog
Ci0gICAgYm9vbCBpc1NpZ25lZCA9IChpbnRlcm5hbEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9
PSBHTF9JTlQpOwotICAgIGJvb2wgaXMzRCA9IChzb3VyY2VTUlZEZXNjLlZpZXdEaW1lbnNpb24g
PT0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFM0QpOworICAgIEFTU0VSVChjb21wb25lbnRU
eXBlICE9IEdMX05PTkUpOworICAgIEFTU0VSVChjb21wb25lbnRUeXBlICE9IEdMX1NJR05FRF9O
T1JNQUxJWkVEKTsKKyAgICBib29sIGlzU2lnbmVkID0gKGNvbXBvbmVudFR5cGUgPT0gR0xfSU5U
KTsKIAorICAgIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24gPSAoc291cmNlU1JWRGVzYy5WaWV3
RGltZW5zaW9uID09IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEKSA/IFNIQURFUl8zRCA6
IFNIQURFUl8yRDsKKwogICAgIGNvbnN0IFNoYWRlciAqc2hhZGVyID0gbnVsbHB0cjsKLSAgICBn
bDo6RXJyb3IgZXJyb3IgPSBnZXRCbGl0U2hhZGVyKGRlc3RGb3JtYXQsIGlzU2lnbmVkLCBpczNE
LCAmc2hhZGVyKTsKKyAgICBlcnJvciA9IGdldEJsaXRTaGFkZXIoZGVzdEZvcm1hdCwgaXNTaWdu
ZWQsIGRpbWVuc2lvbiwgJnNoYWRlcik7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7
CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKKyAgICBjb25zdCBTaGFkZXJTdXBwb3J0
ICZzdXBwb3J0ID0gZ2V0U2hhZGVyU3VwcG9ydCgqc2hhZGVyKTsKKwogICAgIC8vIFNldCB2ZXJ0
aWNlcwogICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKICAgICBy
ZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVZlcnRleEJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dS
SVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CkBAIC02ODEsOCArODE4LDggQEAKICAg
ICBVSU5UIGRyYXdDb3VudCA9IDA7CiAgICAgRDNEMTFfUFJJTUlUSVZFX1RPUE9MT0dZIHRvcG9s
b2d5OwogCi0gICAgc2hhZGVyLT5tVmVydGV4V3JpdGVGdW5jdGlvbihzb3VyY2VBcmVhLCBzb3Vy
Y2VTaXplLCBkZXN0QXJlYSwgZGVzdFNpemUsIG1hcHBlZFJlc291cmNlLnBEYXRhLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmlkZSwgJmRyYXdDb3VudCwgJnRvcG9sb2d5
KTsKKyAgICBzdXBwb3J0LnZlcnRleFdyaXRlRnVuY3Rpb24oc291cmNlQXJlYSwgc291cmNlU2l6
ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnN0cmlkZSwgJmRyYXdDb3VudCwgJnRvcG9sb2d5KTsKIAog
ICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwogCkBAIC02OTAsOCAr
ODI3LDE3IEBACiAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZt
VmVydGV4QnVmZmVyLCAmc3RyaWRlLCAmc3RhcnRJZHgpOwogCiAgICAgLy8gQXBwbHkgc3RhdGUK
LSAgICBkZXZpY2VDb250ZXh0LT5PTVNldEJsZW5kU3RhdGUoTlVMTCwgTlVMTCwgMHhGRkZGRkZG
KTsKLSAgICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKE5VTEwsIDB4RkZG
RkZGRkYpOworICAgIGlmIChtYXNrT2ZmQWxwaGEpCisgICAgeworICAgICAgICBJRDNEMTFCbGVu
ZFN0YXRlICpibGVuZFN0YXRlID0gbUFscGhhTWFza0JsZW5kU3RhdGUucmVzb2x2ZShtUmVuZGVy
ZXItPmdldERldmljZSgpKTsKKyAgICAgICAgQVNTRVJUKGJsZW5kU3RhdGUpOworICAgICAgICBk
ZXZpY2VDb250ZXh0LT5PTVNldEJsZW5kU3RhdGUoYmxlbmRTdGF0ZSwgbnVsbHB0ciwgMHhGRkZG
RkZGKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+T01T
ZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4RkZGRkZGRik7CisgICAgfQorICAgIGRl
dmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUobnVsbHB0ciwgMHhGRkZGRkZGRik7
CiAKICAgICBpZiAoc2Npc3NvcikKICAgICB7CkBAIC03MTAsMTggKzg1NiwxOSBAQAogICAgIH0K
IAogICAgIC8vIEFwcGx5IHNoYWRlcnMKLSAgICBkZXZpY2VDb250ZXh0LT5JQVNldElucHV0TGF5
b3V0KHNoYWRlci0+bUlucHV0TGF5b3V0KTsKKyAgICBkZXZpY2VDb250ZXh0LT5JQVNldElucHV0
TGF5b3V0KHN1cHBvcnQuaW5wdXRMYXlvdXQpOwogICAgIGRldmljZUNvbnRleHQtPklBU2V0UHJp
bWl0aXZlVG9wb2xvZ3kodG9wb2xvZ3kpOwotICAgIGRldmljZUNvbnRleHQtPlZTU2V0U2hhZGVy
KHNoYWRlci0+bVZlcnRleFNoYWRlciwgTlVMTCwgMCk7CisgICAgZGV2aWNlQ29udGV4dC0+VlNT
ZXRTaGFkZXIoc3VwcG9ydC52ZXJ0ZXhTaGFkZXIsIG51bGxwdHIsIDApOwogCi0gICAgZGV2aWNl
Q29udGV4dC0+UFNTZXRTaGFkZXIoc2hhZGVyLT5tUGl4ZWxTaGFkZXIsIE5VTEwsIDApOwotICAg
IGRldmljZUNvbnRleHQtPkdTU2V0U2hhZGVyKHNoYWRlci0+bUdlb21ldHJ5U2hhZGVyLCBOVUxM
LCAwKTsKKyAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlcihzaGFkZXItPnBpeGVsU2hhZGVy
LCBudWxscHRyLCAwKTsKKyAgICBkZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihzdXBwb3J0Lmdl
b21ldHJ5U2hhZGVyLCBudWxscHRyLCAwKTsKIAogICAgIC8vIFVuc2V0IHRoZSBjdXJyZW50bHkg
Ym91bmQgc2hhZGVyIHJlc291cmNlIHRvIGF2b2lkIGNvbmZsaWN0cwotICAgIG1SZW5kZXJlci0+
c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIE5VTEwpOworICAgIGF1dG8g
c3RhdGVNYW5hZ2VyID0gbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKTsKKyAgICBzdGF0ZU1h
bmFnZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBudWxscHRyKTsK
IAogICAgIC8vIEFwcGx5IHJlbmRlciB0YXJnZXQKLSAgICBtUmVuZGVyZXItPnNldE9uZVRpbWVS
ZW5kZXJUYXJnZXQoZGVzdCk7CisgICAgc3RhdGVNYW5hZ2VyLT5zZXRPbmVUaW1lUmVuZGVyVGFy
Z2V0KGRlc3QsIG51bGxwdHIpOwogCiAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydAogICAgIEQzRDEx
X1ZJRVdQT1JUIHZpZXdwb3J0OwpAQCAtNzM0LDEwICs4ODEsMTAgQEAKICAgICBkZXZpY2VDb250
ZXh0LT5SU1NldFZpZXdwb3J0cygxLCAmdmlld3BvcnQpOwogCiAgICAgLy8gQXBwbHkgdGV4dHVy
ZXMKLSAgICBtUmVuZGVyZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAw
LCBzb3VyY2UpOworICAgIHN0YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBM
RVJfUElYRUwsIDAsIHNvdXJjZSk7CiAKICAgICAvLyBBcHBseSBzYW1wbGVycwotICAgIElEM0Qx
MVNhbXBsZXJTdGF0ZSAqc2FtcGxlciA9IE5VTEw7CisgICAgSUQzRDExU2FtcGxlclN0YXRlICpz
YW1wbGVyID0gbnVsbHB0cjsKICAgICBzd2l0Y2ggKGZpbHRlcikKICAgICB7CiAgICAgICBjYXNl
IEdMX05FQVJFU1Q6IHNhbXBsZXIgPSBtUG9pbnRTYW1wbGVyOyAgYnJlYWs7CkBAIC03NTMsMTIg
KzkwMCwxMCBAQAogICAgIGRldmljZUNvbnRleHQtPkRyYXcoZHJhd0NvdW50LCAwKTsKIAogICAg
IC8vIFVuYmluZCB0ZXh0dXJlcyBhbmQgcmVuZGVyIHRhcmdldHMgYW5kIHZlcnRleCBidWZmZXIK
LSAgICBtUmVuZGVyZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBO
VUxMKTsKKyAgICBzdGF0ZU1hbmFnZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJ
WEVMLCAwLCBudWxscHRyKTsKIAotICAgIG1SZW5kZXJlci0+dW5hcHBseVJlbmRlclRhcmdldHMo
KTsKLQogICAgIFVJTlQgemVybyA9IDA7Ci0gICAgSUQzRDExQnVmZmVyICpjb25zdCBudWxsQnVm
ZmVyID0gTlVMTDsKKyAgICBJRDNEMTFCdWZmZXIgKmNvbnN0IG51bGxCdWZmZXIgPSBudWxscHRy
OwogICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCAxLCAmbnVsbEJ1ZmZl
ciwgJnplcm8sICZ6ZXJvKTsKIAogICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsK
QEAgLTc3OSw2ICs5MjQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICpkZXN0LCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6
OkV4dGVudHMgJmRlc3RTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgKnNjaXNzb3IpCiB7CisgICAgZ2w6OkVycm9yIGVycm9yID0gaW5pdFJlc291
cmNlcygpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgfQorCiAgICAgSFJFU1VMVCByZXN1bHQ7CiAgICAgSUQzRDExRGV2aWNlQ29u
dGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwogCkBA
IC04MDQsNyArOTU1LDcgQEAKICAgICBkZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMo
MCwgMSwgJm1WZXJ0ZXhCdWZmZXIsICZzdHJpZGUsICZzdGFydElkeCk7CiAKICAgICAvLyBBcHBs
eSBzdGF0ZQotICAgIGRldmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShOVUxMLCBOVUxMLCAw
eEZGRkZGRkYpOworICAgIGRldmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShudWxscHRyLCBu
dWxscHRyLCAweEZGRkZGRkYpOwogICAgIGRldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2ls
U3RhdGUobURlcHRoU3RlbmNpbFN0YXRlLCAweEZGRkZGRkZGKTsKIAogICAgIGlmIChzY2lzc29y
KQpAQCAtODIzLDE5ICs5NzQsMjcgQEAKICAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0
ZShtU2Npc3NvckRpc2FibGVkUmFzdGVyaXplclN0YXRlKTsKICAgICB9CiAKKyAgICBJRDNEMTFE
ZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQzRDExVmVydGV4
U2hhZGVyICpxdWFkMkRWUyA9IG1RdWFkMkRWUy5yZXNvbHZlKGRldmljZSk7CisgICAgaWYgKHF1
YWQyRFZTID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRXJyb3IgY29tcGlsaW5nIGludGVybmFsIDJEIGJsaXQgdmVydGV4
IHNoYWRlciIpOworICAgIH0KKwogICAgIC8vIEFwcGx5IHNoYWRlcnMKLSAgICBkZXZpY2VDb250
ZXh0LT5JQVNldElucHV0TGF5b3V0KG1RdWFkMkRJTCk7CisgICAgZGV2aWNlQ29udGV4dC0+SUFT
ZXRJbnB1dExheW91dChtUXVhZDJESUwucmVzb2x2ZShkZXZpY2UpKTsKICAgICBkZXZpY2VDb250
ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KHRvcG9sb2d5KTsKLSAgICBkZXZpY2VDb250ZXh0
LT5WU1NldFNoYWRlcihtUXVhZDJEVlMsIE5VTEwsIDApOworICAgIGRldmljZUNvbnRleHQtPlZT
U2V0U2hhZGVyKHF1YWQyRFZTLCBudWxscHRyLCAwKTsKIAotICAgIGRldmljZUNvbnRleHQtPlBT
U2V0U2hhZGVyKG1EZXB0aFBTLCBOVUxMLCAwKTsKLSAgICBkZXZpY2VDb250ZXh0LT5HU1NldFNo
YWRlcihOVUxMLCBOVUxMLCAwKTsKKyAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlcihtRGVw
dGhQUy5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOworICAgIGRldmljZUNvbnRleHQtPkdT
U2V0U2hhZGVyKG51bGxwdHIsIG51bGxwdHIsIDApOwogCiAgICAgLy8gVW5zZXQgdGhlIGN1cnJl
bnRseSBib3VuZCBzaGFkZXIgcmVzb3VyY2UgdG8gYXZvaWQgY29uZmxpY3RzCi0gICAgbVJlbmRl
cmVyLT5zZXRTaGFkZXJSZXNvdXJjZShnbDo6U0FNUExFUl9QSVhFTCwgMCwgTlVMTCk7CisgICAg
YXV0byBzdGF0ZU1hbmFnZXIgPSBtUmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpOworICAgIHN0
YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIG51bGxw
dHIpOwogCiAgICAgLy8gQXBwbHkgcmVuZGVyIHRhcmdldAotICAgIGRldmljZUNvbnRleHQtPk9N
U2V0UmVuZGVyVGFyZ2V0cygwLCBOVUxMLCBkZXN0KTsKKyAgICBzdGF0ZU1hbmFnZXItPnNldE9u
ZVRpbWVSZW5kZXJUYXJnZXQobnVsbHB0ciwgZGVzdCk7CiAKICAgICAvLyBTZXQgdGhlIHZpZXdw
b3J0CiAgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7CkBAIC04NDgsNyArMTAwNyw3IEBACiAg
ICAgZGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJnZpZXdwb3J0KTsKIAogICAgIC8v
IEFwcGx5IHRleHR1cmVzCi0gICAgbVJlbmRlcmVyLT5zZXRTaGFkZXJSZXNvdXJjZShnbDo6U0FN
UExFUl9QSVhFTCwgMCwgc291cmNlKTsKKyAgICBzdGF0ZU1hbmFnZXItPnNldFNoYWRlclJlc291
cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBzb3VyY2UpOwogCiAgICAgLy8gQXBwbHkgc2FtcGxl
cnMKICAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsICZtUG9pbnRTYW1wbGVy
KTsKQEAgLTg1NywxMiArMTAxNiwxMCBAQAogICAgIGRldmljZUNvbnRleHQtPkRyYXcoZHJhd0Nv
dW50LCAwKTsKIAogICAgIC8vIFVuYmluZCB0ZXh0dXJlcyBhbmQgcmVuZGVyIHRhcmdldHMgYW5k
IHZlcnRleCBidWZmZXIKLSAgICBtUmVuZGVyZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1Q
TEVSX1BJWEVMLCAwLCBOVUxMKTsKKyAgICBzdGF0ZU1hbmFnZXItPnNldFNoYWRlclJlc291cmNl
KGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBudWxscHRyKTsKIAotICAgIG1SZW5kZXJlci0+dW5hcHBs
eVJlbmRlclRhcmdldHMoKTsKLQogICAgIFVJTlQgemVybyA9IDA7Ci0gICAgSUQzRDExQnVmZmVy
ICpjb25zdCBudWxsQnVmZmVyID0gTlVMTDsKKyAgICBJRDNEMTFCdWZmZXIgKmNvbnN0IG51bGxC
dWZmZXIgPSBudWxscHRyOwogICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygw
LCAxLCAmbnVsbEJ1ZmZlciwgJnplcm8sICZ6ZXJvKTsKIAogICAgIG1SZW5kZXJlci0+bWFya0Fs
bFN0YXRlRGlydHkoKTsKQEAgLTg4Myw2ICsxMDQwLDEyIEBACiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1
YnJlc291cmNlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRl
c3RTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICpzY2lzc29yLCBib29sIHN0ZW5jaWxPbmx5KQogeworICAgIGdsOjpFcnJvciBlcnJv
ciA9IGluaXRSZXNvdXJjZXMoKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKwogICAgIElEM0QxMURldmljZSAqZGV2aWNlID0g
bVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VD
b250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAKQEAgLTkwMSwxOSArMTA2
NCwyNSBAQAogICAgIERYR0lfRk9STUFUIGZvcm1hdCA9IEdldFRleHR1cmVGb3JtYXQoc291cmNl
KTsKICAgICBBU1NFUlQoZm9ybWF0ID09IEdldFRleHR1cmVGb3JtYXQoZGVzdCkpOwogCi0gICAg
Y29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lG
b3JtYXRJbmZvKGZvcm1hdCk7Ci0gICAgdW5zaWduZWQgaW50IHBpeGVsU2l6ZSA9IGR4Z2lGb3Jt
YXRJbmZvLnBpeGVsQnl0ZXM7CisgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdp
Rm9ybWF0U2l6ZUluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKGZvcm1hdCk7Cisg
ICAgdW5zaWduZWQgaW50IHBpeGVsU2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBkeGdp
Rm9ybWF0U2l6ZUluZm8ucGl4ZWxCeXRlczsKICAgICB1bnNpZ25lZCBpbnQgY29weU9mZnNldCA9
IDA7CiAgICAgdW5zaWduZWQgaW50IGNvcHlTaXplID0gcGl4ZWxTaXplOwogICAgIGlmIChzdGVu
Y2lsT25seSkKICAgICB7Ci0gICAgICAgIGNvcHlPZmZzZXQgPSBkeGdpRm9ybWF0SW5mby5kZXB0
aEJpdHMgLyA4OwotICAgICAgICBjb3B5U2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnN0ZW5jaWxCaXRz
IC8gODsKKyAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0g
ZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKGZvcm1hdCk7CiAKLSAgICAgICAgLy8gSXQgd291bGQg
YmUgZXhwZW5zaXZlIHRvIGhhdmUgbm9uLWJ5dGUgc2l6ZWQgc3RlbmNpbCBzaXplcyBzaW5jZSBp
dCB3b3VsZAotICAgICAgICAvLyByZXF1aXJlIHJlYWRpbmcgZnJvbSB0aGUgZGVzdGluYXRpb24s
IGN1cnJlbnRseSB0aGVyZSBhcmVuJ3QgYW55IHRob3VnaC4KLSAgICAgICAgQVNTRVJUKGR4Z2lG
b3JtYXRJbmZvLnN0ZW5jaWxCaXRzICUgOCA9PSAwICYmCi0gICAgICAgICAgICAgICBkeGdpRm9y
bWF0SW5mby5kZXB0aEJpdHMgICAlIDggPT0gMCk7CisgICAgICAgIC8vIFN0ZW5jaWwgY2hhbm5l
bCBzaG91bGQgYmUgcmlnaHQgYWZ0ZXIgdGhlIGRlcHRoIGNoYW5uZWwuIFNvbWUgdmlld3MgdG8g
ZGVwdGgvc3RlbmNpbAorICAgICAgICAvLyByZXNvdXJjZXMgaGF2ZSByZWQgY2hhbm5lbCBmb3Ig
ZGVwdGgsIGluIHdoaWNoIGNhc2UgdGhlIGRlcHRoIGNoYW5uZWwgYml0IHdpZHRoIGlzIGluCisg
ICAgICAgIC8vIHJlZEJpdHMuCisgICAgICAgIEFTU0VSVCgoZHhnaUZvcm1hdEluZm8ucmVkQml0
cyAhPSAwKSAhPSAoZHhnaUZvcm1hdEluZm8uZGVwdGhCaXRzICE9IDApKTsKKyAgICAgICAgR0x1
aW50IGRlcHRoQml0cyA9IGR4Z2lGb3JtYXRJbmZvLnJlZEJpdHMgKyBkeGdpRm9ybWF0SW5mby5k
ZXB0aEJpdHM7CisgICAgICAgIC8vIEtub3duIGZvcm1hdHMgaGF2ZSBlaXRoZXIgMjQgb3IgMzIg
Yml0cyBvZiBkZXB0aC4KKyAgICAgICAgQVNTRVJUKGRlcHRoQml0cyA9PSAyNCB8fCBkZXB0aEJp
dHMgPT0gMzIpOworICAgICAgICBjb3B5T2Zmc2V0ID0gZGVwdGhCaXRzIC8gODsKKworICAgICAg
ICAvLyBTdGVuY2lsIGlzIGFzc3VtZWQgdG8gYmUgOC1iaXQgLSBjdXJyZW50bHkgdGhpcyBpcyB0
cnVlIGZvciBhbGwgcG9zc2libGUgZm9ybWF0cy4KKyAgICAgICAgY29weVNpemUgPSAxOwogICAg
IH0KIAogICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBzb3VyY2VNYXBwaW5nOwpAQCAtOTk5
LDE0ICsxMTY4LDE0IEBACiAKICAgICAvLyBIQUNLOiBVc2UgSUQzRDExRGV2aWNDb250ZXh0OjpV
cGRhdGVTdWJyZXNvdXJjZSB3aGljaCBjYXVzZXMgYW4gZXh0cmEgY29weSBjb21wYXJlZCB0byBJ
RDNEMTFEZXZpY0NvbnRleHQ6OkNvcHlTdWJyZXNvdXJjZVJlZ2lvbgogICAgIC8vICAgICAgIGFj
Y29yZGluZyB0byBNU0ROLgotICAgIGRldmljZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKGRl
c3QsIGRlc3RTdWJyZXNvdXJjZSwgTlVMTCwgZGVzdE1hcHBpbmcucERhdGEsIGRlc3RNYXBwaW5n
LlJvd1BpdGNoLCBkZXN0TWFwcGluZy5EZXB0aFBpdGNoKTsKKyAgICBkZXZpY2VDb250ZXh0LT5V
cGRhdGVTdWJyZXNvdXJjZShkZXN0LCBkZXN0U3VicmVzb3VyY2UsIG51bGxwdHIsIGRlc3RNYXBw
aW5nLnBEYXRhLCBkZXN0TWFwcGluZy5Sb3dQaXRjaCwgZGVzdE1hcHBpbmcuRGVwdGhQaXRjaCk7
CiAKICAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChzb3VyY2VTdGFnaW5nLCAwKTsKICAgICBkZXZp
Y2VDb250ZXh0LT5Vbm1hcChkZXN0U3RhZ2luZywgMCk7CiAKICAgICAvLyBUT0RPOiBEZXRlcm1p
bmUgd2h5IHRoaXMgY2FsbCB0byBJRDNEMTFEZXZpY0NvbnRleHQ6OkNvcHlTdWJyZXNvdXJjZVJl
Z2lvbiBjYXVzZXMgYSBURFIgdGltZW91dCBvbiBzb21lCiAgICAgLy8gICAgICAgc3lzdGVtcyB3
aGVuIGNhbGxlZCByZXBlYXRlZGx5LgotICAgIC8vIGRldmljZUNvbnRleHQtPkNvcHlTdWJyZXNv
dXJjZVJlZ2lvbihkZXN0LCBkZXN0U3VicmVzb3VyY2UsIDAsIDAsIDAsIGRlc3RTdGFnaW5nLCAw
LCBOVUxMKTsKKyAgICAvLyBkZXZpY2VDb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oZGVz
dCwgZGVzdFN1YnJlc291cmNlLCAwLCAwLCAwLCBkZXN0U3RhZ2luZywgMCwgbnVsbHB0cik7CiAK
ICAgICBTYWZlUmVsZWFzZShzb3VyY2VTdGFnaW5nKTsKICAgICBTYWZlUmVsZWFzZShkZXN0U3Rh
Z2luZyk7CkBAIC0xMDE0LDU3ICsxMTgzLDI2IEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CiB9CiAKLXZvaWQgQmxpdDExOjphZGQyREJsaXRTaGFkZXJUb01hcChCbGl0U2hh
ZGVyVHlwZSBibGl0U2hhZGVyVHlwZSwgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKQordm9pZCBCbGl0
MTE6OmFkZEJsaXRTaGFkZXJUb01hcChCbGl0U2hhZGVyVHlwZSBibGl0U2hhZGVyVHlwZSwgU2hh
ZGVyRGltZW5zaW9uIGRpbWVuc2lvbiwgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKQogewogICAgIEFT
U0VSVChtQmxpdFNoYWRlck1hcC5maW5kKGJsaXRTaGFkZXJUeXBlKSA9PSBtQmxpdFNoYWRlck1h
cC5lbmQoKSk7CiAgICAgQVNTRVJUKHBzKTsKIAogICAgIFNoYWRlciBzaGFkZXI7Ci0gICAgc2hh
ZGVyLm1WZXJ0ZXhXcml0ZUZ1bmN0aW9uID0gV3JpdGUyRFZlcnRpY2VzOwotICAgIHNoYWRlci5t
SW5wdXRMYXlvdXQgPSBtUXVhZDJESUw7Ci0gICAgc2hhZGVyLm1WZXJ0ZXhTaGFkZXIgPSBtUXVh
ZDJEVlM7Ci0gICAgc2hhZGVyLm1HZW9tZXRyeVNoYWRlciA9IE5VTEw7Ci0gICAgc2hhZGVyLm1Q
aXhlbFNoYWRlciA9IHBzOworICAgIHNoYWRlci5kaW1lbnNpb24gPSBkaW1lbnNpb247CisgICAg
c2hhZGVyLnBpeGVsU2hhZGVyID0gcHM7CiAKICAgICBtQmxpdFNoYWRlck1hcFtibGl0U2hhZGVy
VHlwZV0gPSBzaGFkZXI7CiB9CiAKLXZvaWQgQmxpdDExOjphZGQzREJsaXRTaGFkZXJUb01hcChC
bGl0U2hhZGVyVHlwZSBibGl0U2hhZGVyVHlwZSwgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKQordm9p
ZCBCbGl0MTE6OmFkZFN3aXp6bGVTaGFkZXJUb01hcChTd2l6emxlU2hhZGVyVHlwZSBzd2l6emxl
U2hhZGVyVHlwZSwgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lvbiwgSUQzRDExUGl4ZWxTaGFkZXIg
KnBzKQogewotICAgIEFTU0VSVChtQmxpdFNoYWRlck1hcC5maW5kKGJsaXRTaGFkZXJUeXBlKSA9
PSBtQmxpdFNoYWRlck1hcC5lbmQoKSk7Ci0gICAgQVNTRVJUKHBzKTsKLQotICAgIFNoYWRlciBz
aGFkZXI7Ci0gICAgc2hhZGVyLm1WZXJ0ZXhXcml0ZUZ1bmN0aW9uID0gV3JpdGUzRFZlcnRpY2Vz
OwotICAgIHNoYWRlci5tSW5wdXRMYXlvdXQgPSBtUXVhZDNESUw7Ci0gICAgc2hhZGVyLm1WZXJ0
ZXhTaGFkZXIgPSBtUXVhZDNEVlM7Ci0gICAgc2hhZGVyLm1HZW9tZXRyeVNoYWRlciA9IG1RdWFk
M0RHUzsKLSAgICBzaGFkZXIubVBpeGVsU2hhZGVyID0gcHM7Ci0KLSAgICBtQmxpdFNoYWRlck1h
cFtibGl0U2hhZGVyVHlwZV0gPSBzaGFkZXI7Ci19Ci0KLXZvaWQgQmxpdDExOjphZGRTd2l6emxl
U2hhZGVyVG9NYXAoU3dpenpsZVNoYWRlclR5cGUgc3dpenpsZVNoYWRlclR5cGUsIGJvb2wgaXMy
RCwgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKQotewogICAgIEFTU0VSVChtU3dpenpsZVNoYWRlck1h
cC5maW5kKHN3aXp6bGVTaGFkZXJUeXBlKSA9PSBtU3dpenpsZVNoYWRlck1hcC5lbmQoKSk7CiAg
ICAgQVNTRVJUKHBzKTsKIAogICAgIFNoYWRlciBzaGFkZXI7Ci0gICAgaWYgKGlzMkQpCi0gICAg
ewotICAgICAgICBzaGFkZXIubVZlcnRleFdyaXRlRnVuY3Rpb24gPSBXcml0ZTJEVmVydGljZXM7
Ci0gICAgICAgIHNoYWRlci5tSW5wdXRMYXlvdXQgPSBtUXVhZDJESUw7Ci0gICAgICAgIHNoYWRl
ci5tVmVydGV4U2hhZGVyID0gbVF1YWQyRFZTOwotICAgICAgICBzaGFkZXIubUdlb21ldHJ5U2hh
ZGVyID0gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc2hhZGVyLm1WZXJ0
ZXhXcml0ZUZ1bmN0aW9uID0gV3JpdGUzRFZlcnRpY2VzOwotICAgICAgICBzaGFkZXIubUlucHV0
TGF5b3V0ID0gbVF1YWQzRElMOwotICAgICAgICBzaGFkZXIubVZlcnRleFNoYWRlciA9IG1RdWFk
M0RWUzsKLSAgICAgICAgc2hhZGVyLm1HZW9tZXRyeVNoYWRlciA9IG1RdWFkM0RHUzsKLSAgICB9
Ci0gICAgc2hhZGVyLm1QaXhlbFNoYWRlciA9IHBzOworICAgIHNoYWRlci5kaW1lbnNpb24gPSBk
aW1lbnNpb247CisgICAgc2hhZGVyLnBpeGVsU2hhZGVyID0gcHM7CiAKICAgICBtU3dpenpsZVNo
YWRlck1hcFtzd2l6emxlU2hhZGVyVHlwZV0gPSBzaGFkZXI7CiB9CkBAIC0xMDczLDIwICsxMjEx
LDIwIEBACiB7CiAgICAgZm9yIChhdXRvICZibGl0U2hhZGVyIDogbUJsaXRTaGFkZXJNYXApCiAg
ICAgewotICAgICAgICBTYWZlUmVsZWFzZShibGl0U2hhZGVyLnNlY29uZC5tUGl4ZWxTaGFkZXIp
OworICAgICAgICBTYWZlUmVsZWFzZShibGl0U2hhZGVyLnNlY29uZC5waXhlbFNoYWRlcik7CiAg
ICAgfQogICAgIG1CbGl0U2hhZGVyTWFwLmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8gJnN3aXp6
bGVTaGFkZXIgOiBtU3dpenpsZVNoYWRlck1hcCkKICAgICB7Ci0gICAgICAgIFNhZmVSZWxlYXNl
KHN3aXp6bGVTaGFkZXIuc2Vjb25kLm1QaXhlbFNoYWRlcik7CisgICAgICAgIFNhZmVSZWxlYXNl
KHN3aXp6bGVTaGFkZXIuc2Vjb25kLnBpeGVsU2hhZGVyKTsKICAgICB9CiAgICAgbVN3aXp6bGVT
aGFkZXJNYXAuY2xlYXIoKTsKIH0KIAotZ2w6OkVycm9yIEJsaXQxMTo6Z2V0QmxpdFNoYWRlcihH
TGVudW0gZGVzdEZvcm1hdCwgYm9vbCBpc1NpZ25lZCwgYm9vbCBpczNELCBjb25zdCBTaGFkZXIg
KipzaGFkZXIpCitnbDo6RXJyb3IgQmxpdDExOjpnZXRCbGl0U2hhZGVyKEdMZW51bSBkZXN0Rm9y
bWF0LCBib29sIGlzU2lnbmVkLCBTaGFkZXJEaW1lbnNpb24gZGltZW5zaW9uLCBjb25zdCBTaGFk
ZXIgKipzaGFkZXIpCiB7Ci0gICAgQmxpdFNoYWRlclR5cGUgYmxpdFNoYWRlclR5cGUgPSBHZXRC
bGl0U2hhZGVyVHlwZShkZXN0Rm9ybWF0LCBpc1NpZ25lZCwgaXMzRCk7CisgICAgQmxpdFNoYWRl
clR5cGUgYmxpdFNoYWRlclR5cGUgPSBHZXRCbGl0U2hhZGVyVHlwZShkZXN0Rm9ybWF0LCBpc1Np
Z25lZCwgZGltZW5zaW9uKTsKIAogICAgIGlmIChibGl0U2hhZGVyVHlwZSA9PSBCTElUU0hBREVS
X0lOVkFMSUQpCiAgICAgewpAQCAtMTEwMCwxMDcgKzEyMzgsMTA3IEBACiAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogICAgIH0KIAotICAgIEFTU0VSVCghaXMzRCB8fCBt
UmVuZGVyZXItPmlzRVMzQ2FwYWJsZSgpKTsKKyAgICBBU1NFUlQoZGltZW5zaW9uID09IFNIQURF
Ul8yRCB8fCBtUmVuZGVyZXItPmlzRVMzQ2FwYWJsZSgpKTsKIAogICAgIElEM0QxMURldmljZSAq
ZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAogICAgIHN3aXRjaCAoYmxpdFNoYWRl
clR5cGUpCiAgICAgewogICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQkFGOgotICAgICAgICBh
ZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZp
Y2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBMkQsICJCbGl0MTEgMkQgUkdCQSBwaXhlbCBzaGFkZXIi
KSk7CisgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJE
LCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyRCwgIkJsaXQx
MSAyRCBSR0JBIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJM
SVRTSEFERVJfMkRfQkdSQUY6Ci0gICAgICAgIGFkZDJEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFk
ZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyRCwg
IkJsaXQxMSAyRCBCR1JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBn
X1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxpdDExIDJEIEJHUkEgcGl4ZWwgc2hhZGVyIikpOwog
ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JGOgotICAgICAgICBh
ZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZp
Y2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyRCwgIkJsaXQxMSAyRCBSR0IgcGl4ZWwgc2hhZGVyIikp
OworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwg
ZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyRCwgIkJsaXQxMSAy
RCBSR0IgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNI
QURFUl8yRF9SR0Y6Ci0gICAgICAgIGFkZDJEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBl
LCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHMkQsICJCbGl0MTEg
MkQgUkcgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNo
YWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Ro
cm91Z2hSRzJELCAiQmxpdDExIDJEIFJHIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICBjYXNlIEJMSVRTSEFERVJfMkRfUkY6Ci0gICAgICAgIGFkZDJEQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhy
b3VnaFIyRCwgIkJsaXQxMSAyRCBSIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNo
YWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjJELCAiQmxpdDExIDJEIFIgcGl4ZWwgc2hhZGVyIikpOwog
ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9BTFBIQToKLSAgICAgICAg
YWRkMkRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxpdDExIDJEIGFscGhhIHBpeGVsIHNoYWRl
ciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJf
MkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJELCAiQmxp
dDExIDJEIGFscGhhIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNl
IEJMSVRTSEFERVJfMkRfTFVNQToKLSAgICAgICAgYWRkMkRCbGl0U2hhZGVyVG9NYXAoYmxpdFNo
YWRlclR5cGUsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoTHVtMkQs
ICJCbGl0MTEgMkQgbHVtIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRv
TWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBn
X1BTX1Bhc3N0aHJvdWdoTHVtMkQsICJCbGl0MTEgMkQgbHVtIHBpeGVsIHNoYWRlciIpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJMSVRTSEFERVJfMkRfTFVNQUFMUEhBOgotICAgICAg
ICBhZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hMdW1BbHBoYTJELCAiQmxpdDExIDJEIGx1bWluYW5jZSBh
bHBoYSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hh
ZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhy
b3VnaEx1bUFscGhhMkQsICJCbGl0MTEgMkQgbHVtaW5hbmNlIGFscGhhIHBpeGVsIHNoYWRlciIp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJMSVRTSEFERVJfMkRfUkdCQVVJOgotICAg
ICAgICBhZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQ
UyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBMkRVSSwgIkJsaXQxMSAyRCBSR0JBIFVJIHBp
eGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBl
LCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdC
QTJEVUksICJCbGl0MTEgMkQgUkdCQSBVSSBwaXhlbCBzaGFkZXIiKSk7CiAgICAgICAgIGJyZWFr
OwogICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JHQkFJOgotICAgICAgICBhZGQyREJsaXRTaGFk
ZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFz
c3Rocm91Z2hSR0JBMkRJLCAiQmxpdDExIDJEIFJHQkEgSSBwaXhlbCBzaGFkZXIiKSk7CisgICAg
ICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6
Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEyREksICJCbGl0MTEgMkQgUkdC
QSBJIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJMSVRTSEFE
RVJfMkRfUkdCVUk6Ci0gICAgICAgIGFkZDJEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBl
LCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQjJEVUksICJCbGl0
MTEgMkQgUkdCIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BT
X1Bhc3N0aHJvdWdoUkdCMkRVSSwgIkJsaXQxMSAyRCBSR0IgVUkgcGl4ZWwgc2hhZGVyIikpOwog
ICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0JJOgotICAgICAgICBh
ZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZp
Y2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyREksICJCbGl0MTEgMkQgUkdCIEkgcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8y
RCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IyREksICJCbGl0
MTEgMkQgUkdCIEkgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2Ug
QkxJVFNIQURFUl8yRF9SR1VJOgotICAgICAgICBhZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hh
ZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSRzJEVUks
ICJCbGl0MTEgMkQgUkcgVUkgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVy
VG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2Us
IGdfUFNfUGFzc3Rocm91Z2hSRzJEVUksICJCbGl0MTEgMkQgUkcgVUkgcGl4ZWwgc2hhZGVyIikp
OwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8yRF9SR0k6Ci0gICAgICAg
IGFkZDJEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRl
dmljZSwgZ19QU19QYXNzdGhyb3VnaFJHMkRJLCAiQmxpdDExIDJEIFJHIEkgcGl4ZWwgc2hhZGVy
IikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8y
RCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSRzJESSwgIkJsaXQx
MSAyRCBSRyBJIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJM
SVRTSEFERVJfMkRfUlVJOgotICAgICAgICBhZGQyREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVy
VHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSMkRVSSwgIkJs
aXQxMSAyRCBSIFVJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFw
KGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfMkQsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BT
X1Bhc3N0aHJvdWdoUjJEVUksICJCbGl0MTEgMkQgUiBVSSBwaXhlbCBzaGFkZXIiKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBCTElUU0hBREVSXzJEX1JJOgotICAgICAgICBhZGQyREJs
aXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdf
UFNfUGFzc3Rocm91Z2hSMkRJLCAiQmxpdDExIDJEIFIgSSBwaXhlbCBzaGFkZXIiKSk7CisgICAg
ICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6
Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIyREksICJCbGl0MTEgMkQgUiBJIHBp
eGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJMSVRTSEFERVJfM0Rf
UkdCQUY6Ci0gICAgICAgIGFkZDNEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBkM2Qx
MTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEzRCwgIkJsaXQxMSAzRCBS
R0JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFk
ZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJv
dWdoUkdCQTNELCAiQmxpdDExIDNEIFJHQkEgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVh
azsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SR0JBVUk6Ci0gICAgICAgIGFkZDNEQmxpdFNo
YWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Q
YXNzdGhyb3VnaFJHQkEzRFVJLCAiQmxpdDExIDNEIFVJIFJHQkEgcGl4ZWwgc2hhZGVyIikpOwor
ICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNk
MTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0RVSSwgIkJsaXQxMSAz
RCBVSSBSR0JBIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJM
SVRTSEFERVJfM0RfUkdCQUk6Ci0gICAgICAgIGFkZDNEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFk
ZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQkEzREks
ICJCbGl0MTEgM0QgSSBSR0JBIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRl
clRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNl
LCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNESSwgIkJsaXQxMSAzRCBJIFJHQkEgcGl4ZWwgc2hhZGVy
IikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9CR1JBRjoKLSAg
ICAgICAgYWRkM0RCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIGQzZDExOjpDb21waWxl
UFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNELCAiQmxpdDExIDNEIEJHUkEgcGl4ZWwg
c2hhZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNI
QURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0Qs
ICJCbGl0MTEgM0QgQkdSQSBwaXhlbCBzaGFkZXIiKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBCTElUU0hBREVSXzNEX1JHQkY6Ci0gICAgICAgIGFkZDNEQmxpdFNoYWRlclRvTWFwKGJs
aXRTaGFkZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJH
QjNELCAiQmxpdDExIDNEIFJHQiBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZEJsaXRTaGFk
ZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmlj
ZSwgZ19QU19QYXNzdGhyb3VnaFJHQjNELCAiQmxpdDExIDNEIFJHQiBwaXhlbCBzaGFkZXIiKSk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHQlVJOgotICAgICAg
ICBhZGQzREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0IzRFVJLCAiQmxpdDExIDNEIFJHQiBVSSBwaXhlbCBz
aGFkZXIiKSk7CisgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hB
REVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHQjNEVUks
ICJCbGl0MTEgM0QgUkdCIFVJIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEJMSVRTSEFERVJfM0RfUkdCSToKLSAgICAgICAgYWRkM0RCbGl0U2hhZGVyVG9NYXAo
YmxpdFNoYWRlclR5cGUsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdo
UkdCM0RJLCAiQmxpdDExIDNEIFJHQiBJIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkQmxp
dFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMo
ZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkdCM0RJLCAiQmxpdDExIDNEIFJHQiBJIHBpeGVsIHNo
YWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEJMSVRTSEFERVJfM0RfUkdGOgot
ICAgICAgICBhZGQzREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBp
bGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSRzNELCAiQmxpdDExIDNEIFJHIHBpeGVsIHNo
YWRlciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFE
RVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkczRCwgIkJs
aXQxMSAzRCBSRyBwaXhlbCBzaGFkZXIiKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBC
TElUU0hBREVSXzNEX1JHVUk6Ci0gICAgICAgIGFkZDNEQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFk
ZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHM0RVSSwg
IkJsaXQxMSAzRCBSRyBVSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZEJsaXRTaGFkZXJU
b01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwg
Z19QU19QYXNzdGhyb3VnaFJHM0RVSSwgIkJsaXQxMSAzRCBSRyBVSSBwaXhlbCBzaGFkZXIiKSk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JHSToKLSAgICAgICAg
YWRkM0RCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUkczREksICJCbGl0MTEgM0QgUkcgSSBwaXhlbCBzaGFkZXIi
KSk7CisgICAgICAgIGFkZEJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNE
LCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFJHM0RJLCAiQmxpdDEx
IDNEIFJHIEkgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJ
VFNIQURFUl8zRF9SRjoKLSAgICAgICAgYWRkM0RCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5
cGUsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjNELCAiQmxpdDEx
IDNEIFIgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNo
YWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Ro
cm91Z2hSM0QsICJCbGl0MTEgM0QgUiBwaXhlbCBzaGFkZXIiKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBCTElUU0hBREVSXzNEX1JVSToKLSAgICAgICAgYWRkM0RCbGl0U2hhZGVyVG9N
YXAoYmxpdFNoYWRlclR5cGUsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJv
dWdoUjNEVUksICJCbGl0MTEgM0QgUiBVSSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZEJs
aXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19QYXNzdGhyb3VnaFIzRFVJLCAiQmxpdDExIDNEIFIgVUkgcGl4ZWwgc2hh
ZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9SSToKLSAg
ICAgICAgYWRkM0RCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIGQzZDExOjpDb21waWxl
UFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoUjNESSwgIkJsaXQxMSAzRCBSIEkgcGl4ZWwgc2hh
ZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURF
Ul8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSM0RJLCAiQmxp
dDExIDNEIFIgSSBwaXhlbCBzaGFkZXIiKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBC
TElUU0hBREVSXzNEX0FMUEhBOgotICAgICAgICBhZGQzREJsaXRTaGFkZXJUb01hcChibGl0U2hh
ZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0Qs
ICJCbGl0MTEgM0QgYWxwaGEgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVy
VG9NYXAoYmxpdFNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2Us
IGdfUFNfUGFzc3Rocm91Z2hSR0JBM0QsICJCbGl0MTEgM0QgYWxwaGEgcGl4ZWwgc2hhZGVyIikp
OwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgQkxJVFNIQURFUl8zRF9MVU1BOgotICAgICAg
ICBhZGQzREJsaXRTaGFkZXJUb01hcChibGl0U2hhZGVyVHlwZSwgZDNkMTE6OkNvbXBpbGVQUyhk
ZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hMdW0zRCwgIkJsaXQxMSAzRCBsdW1pbmFuY2UgcGl4ZWwg
c2hhZGVyIikpOworICAgICAgICBhZGRCbGl0U2hhZGVyVG9NYXAoYmxpdFNoYWRlclR5cGUsIFNI
QURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfUGFzc3Rocm91Z2hMdW0zRCwg
IkJsaXQxMSAzRCBsdW1pbmFuY2UgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgQkxJVFNIQURFUl8zRF9MVU1BQUxQSEE6Ci0gICAgICAgIGFkZDNEQmxpdFNoYWRl
clRvTWFwKGJsaXRTaGFkZXJUeXBlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19QYXNz
dGhyb3VnaEx1bUFscGhhM0QsICJCbGl0MTEgM0QgbHVtaW5hbmNlIGFscGhhIHBpeGVsIHNoYWRl
ciIpKTsKKyAgICAgICAgYWRkQmxpdFNoYWRlclRvTWFwKGJsaXRTaGFkZXJUeXBlLCBTSEFERVJf
M0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1Bhc3N0aHJvdWdoTHVtQWxwaGEzRCwg
IkJsaXQxMSAzRCBsdW1pbmFuY2UgYWxwaGEgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVh
azsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBAIC0xMjM3LDQwICsx
Mzc1LDQwIEBACiAgICAgc3dpdGNoIChzd2l6emxlU2hhZGVyVHlwZSkKICAgICB7CiAgICAgICBj
YXNlIFNXSVpaTEVTSEFERVJfMkRfRkxPQVQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01h
cChzd2l6emxlU2hhZGVyVHlwZSwgdHJ1ZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNf
U3dpenpsZUYyRCwgIkJsaXQxMSAyRCBGIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAg
ICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNk
MTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUYyRCwgIkJsaXQxMSAyRCBGIHN3aXp6
bGUgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgU1dJWlpMRVNI
QURFUl8yRF9VSU5UOgotICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRl
clR5cGUsIHRydWUsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJELCAi
QmxpdDExIDJEIFVJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRTd2l6emxl
U2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8yRCwgZDNkMTE6OkNvbXBpbGVQ
UyhkZXZpY2UsIGdfUFNfU3dpenpsZVVJMkQsICJCbGl0MTEgMkQgVUkgc3dpenpsZSBwaXhlbCBz
aGFkZXIiKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBTV0laWkxFU0hBREVSXzJEX0lO
VDoKLSAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCB0cnVl
LCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJELCAiQmxpdDExIDJEIEkg
c3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChz
d2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzJELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19Q
U19Td2l6emxlSTJELCAiQmxpdDExIDJEIEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgICAgY2FzZSBTV0laWkxFU0hBREVSX0NVQkVfRkxPQVQ6Ci0gICAgICAg
IGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgZmFsc2UsIGQzZDExOjpD
b21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVGMkRBcnJheSwgIkJsaXQxMSAyRCBDdWJlIEYg
c3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChz
d2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19Q
U19Td2l6emxlRjJEQXJyYXksICJCbGl0MTEgMkQgQ3ViZSBGIHN3aXp6bGUgcGl4ZWwgc2hhZGVy
IikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl9DVUJFX1VJTlQ6
Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgZmFsc2Us
IGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJEQXJyYXksICJCbGl0MTEg
MkQgQ3ViZSBVSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkU3dpenpsZVNo
YWRlclRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMo
ZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJEQXJyYXksICJCbGl0MTEgMkQgQ3ViZSBVSSBzd2l6emxl
IHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIFNXSVpaTEVTSEFE
RVJfQ1VCRV9JTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVy
VHlwZSwgZmFsc2UsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVJMkRBcnJh
eSwgIkJsaXQxMSAyRCBDdWJlIEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFk
ZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6
Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlSTJEQXJyYXksICJCbGl0MTEgMkQgQ3ViZSBJ
IHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgU1dJ
WlpMRVNIQURFUl8zRF9GTE9BVDoKLSAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6
bGVTaGFkZXJUeXBlLCBmYWxzZSwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenps
ZUYzRCwgIkJsaXQxMSAzRCBGIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRT
d2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNv
bXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUYzRCwgIkJsaXQxMSAzRCBGIHN3aXp6bGUgcGl4
ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8z
RF9VSU5UOgotICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUs
IGZhbHNlLCBkM2QxMTo6Q29tcGlsZVBTKGRldmljZSwgZ19QU19Td2l6emxlVUkzRCwgIkJsaXQx
MSAzRCBVSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkU3dpenpsZVNoYWRl
clRvTWFwKHN3aXp6bGVTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2
aWNlLCBnX1BTX1N3aXp6bGVVSTNELCAiQmxpdDExIDNEIFVJIHN3aXp6bGUgcGl4ZWwgc2hhZGVy
IikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgU1dJWlpMRVNIQURFUl8zRF9JTlQ6Ci0g
ICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgZmFsc2UsIGQz
ZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVJM0QsICJCbGl0MTEgM0QgSSBzd2l6
emxlIHBpeGVsIHNoYWRlciIpKTsKKyAgICAgICAgYWRkU3dpenpsZVNoYWRlclRvTWFwKHN3aXp6
bGVTaGFkZXJUeXBlLCBTSEFERVJfM0QsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3
aXp6bGVJM0QsICJCbGl0MTEgM0QgSSBzd2l6emxlIHBpeGVsIHNoYWRlciIpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIFNXSVpaTEVTSEFERVJfQVJSQVlfRkxPQVQ6Ci0gICAgICAgIGFk
ZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgZmFsc2UsIGQzZDExOjpDb21w
aWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVGMkRBcnJheSwgIkJsaXQxMSAyRCBBcnJheSBGIHN3
aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAgICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dp
enpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNkMTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNf
U3dpenpsZUYyREFycmF5LCAiQmxpdDExIDJEIEFycmF5IEYgc3dpenpsZSBwaXhlbCBzaGFkZXIi
KSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBTV0laWkxFU0hBREVSX0FSUkFZX1VJTlQ6
Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgZmFsc2Us
IGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVVSTJEQXJyYXksICJCbGl0MTEg
MkQgQXJyYXkgVUkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CisgICAgICAgIGFkZFN3aXp6bGVT
aGFkZXJUb01hcChzd2l6emxlU2hhZGVyVHlwZSwgU0hBREVSXzNELCBkM2QxMTo6Q29tcGlsZVBT
KGRldmljZSwgZ19QU19Td2l6emxlVUkyREFycmF5LCAiQmxpdDExIDJEIEFycmF5IFVJIHN3aXp6
bGUgcGl4ZWwgc2hhZGVyIikpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgU1dJWlpMRVNI
QURFUl9BUlJBWV9JTlQ6Ci0gICAgICAgIGFkZFN3aXp6bGVTaGFkZXJUb01hcChzd2l6emxlU2hh
ZGVyVHlwZSwgZmFsc2UsIGQzZDExOjpDb21waWxlUFMoZGV2aWNlLCBnX1BTX1N3aXp6bGVJMkRB
cnJheSwgIkJsaXQxMSAyRCBBcnJheSBJIHN3aXp6bGUgcGl4ZWwgc2hhZGVyIikpOworICAgICAg
ICBhZGRTd2l6emxlU2hhZGVyVG9NYXAoc3dpenpsZVNoYWRlclR5cGUsIFNIQURFUl8zRCwgZDNk
MTE6OkNvbXBpbGVQUyhkZXZpY2UsIGdfUFNfU3dpenpsZUkyREFycmF5LCAiQmxpdDExIDJEIEFy
cmF5IEkgc3dpenpsZSBwaXhlbCBzaGFkZXIiKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgZGVm
YXVsdDoKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9CbGl0MTEuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaAkod29ya2luZyBjb3B5KQpA
QCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIK
IAogI2luY2x1ZGUgPG1hcD4KIApAQCAtMjgsOSArMjksMTYgQEAKICAgICBnbDo6RXJyb3Igc3dp
enpsZVRleHR1cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsIElEM0QxMVJlbmRl
clRhcmdldFZpZXcgKmRlc3QsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZVJlZCwgR0xlbnVtIHN3aXp6bGVHcmVlbiwg
R0xlbnVtIHN3aXp6bGVCbHVlLCBHTGVudW0gc3dpenpsZUFscGhhKTsKIAotICAgIGdsOjpFcnJv
ciBjb3B5VGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwgY29uc3QgZ2w6
OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3QsIGNvbnN0IGds
OjpCb3ggJmRlc3RBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmZGVzdFNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsIEdMZW51bSBkZXN0
Rm9ybWF0LCBHTGVudW0gZmlsdGVyKTsKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUoSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Qm94ICZkZXN0QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJmRlc3RTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICpzY2lzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVz
dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXNrT2ZmQWxwaGEpOwogCiAgICAgZ2w6OkVycm9y
IGNvcHlTdGVuY2lsKElEM0QxMVJlc291cmNlICpzb3VyY2UsIHVuc2lnbmVkIGludCBzb3VyY2VT
dWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkV4dGVudHMg
JnNvdXJjZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpk
ZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLCBjb25zdCBnbDo6Qm94ICZkZXN0QXJl
YSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLApAQCAtODIsOCArOTAsNiBAQAogICAgICAg
ICBCTElUU0hBREVSXzNEX0xVTUFBTFBIQSwKICAgICB9OwogCi0gICAgc3RhdGljIEJsaXRTaGFk
ZXJUeXBlIEdldEJsaXRTaGFkZXJUeXBlKEdMZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgYm9vbCBp
c1NpZ25lZCwgYm9vbCBpczNEKTsKLQogICAgIGVudW0gU3dpenpsZVNoYWRlclR5cGUKICAgICB7
CiAgICAgICAgIFNXSVpaTEVTSEFERVJfSU5WQUxJRCwKQEAgLTEwMSwzMyArMTA3LDQ5IEBACiAg
ICAgICAgIFNXSVpaTEVTSEFERVJfQVJSQVlfSU5ULAogICAgIH07CiAKLSAgICBzdGF0aWMgU3dp
enpsZVNoYWRlclR5cGUgR2V0U3dpenpsZVNoYWRlclR5cGUoR0xlbnVtIHR5cGUsIEQzRDExX1NS
Vl9ESU1FTlNJT04gZGltZW5zaW9uYWxpdHkpOwotCi0gICAgZ2w6OkVycm9yIGNvcHlEZXB0aFN0
ZW5jaWwoSUQzRDExUmVzb3VyY2UgKnNvdXJjZSwgdW5zaWduZWQgaW50IHNvdXJjZVN1YnJlc291
cmNlLCBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNl
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqZGVz
dCwgdW5zaWduZWQgaW50IGRlc3RTdWJyZXNvdXJjZSwgY29uc3QgZ2w6OkJveCAmZGVzdEFyZWEs
IGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLCBib29sIHN0ZW5jaWxPbmx5KTsKLQog
ICAgIHR5cGVkZWYgdm9pZCAoKldyaXRlVmVydGV4RnVuY3Rpb24pKGNvbnN0IGdsOjpCb3ggJnNv
dXJjZUFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhLCBjb25zdCBn
bDo6RXh0ZW50cyAmZGVzdFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqb3V0VmVydGljZXMsIHVuc2lnbmVkIGludCAqb3V0U3RyaWRlLCB1bnNpZ25l
ZCBpbnQgKm91dFZlcnRleENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWSAqb3V0VG9wb2xvZ3kpOwogCisgICAgZW51
bSBTaGFkZXJEaW1lbnNpb24KKyAgICB7CisgICAgICAgIFNIQURFUl8yRCwKKyAgICAgICAgU0hB
REVSXzNELAorICAgIH07CisKICAgICBzdHJ1Y3QgU2hhZGVyCiAgICAgewotICAgICAgICBXcml0
ZVZlcnRleEZ1bmN0aW9uIG1WZXJ0ZXhXcml0ZUZ1bmN0aW9uOwotICAgICAgICBJRDNEMTFJbnB1
dExheW91dCAqbUlucHV0TGF5b3V0OwotICAgICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKm1WZXJ0
ZXhTaGFkZXI7Ci0gICAgICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICptR2VvbWV0cnlTaGFkZXI7
Ci0gICAgICAgIElEM0QxMVBpeGVsU2hhZGVyICptUGl4ZWxTaGFkZXI7CisgICAgICAgIFNoYWRl
ckRpbWVuc2lvbiBkaW1lbnNpb247CisgICAgICAgIElEM0QxMVBpeGVsU2hhZGVyICpwaXhlbFNo
YWRlcjsKICAgICB9OwogCi0gICAgdm9pZCBhZGQyREJsaXRTaGFkZXJUb01hcChCbGl0U2hhZGVy
VHlwZSBibGl0U2hhZGVyVHlwZSwgSUQzRDExUGl4ZWxTaGFkZXIgKnBzKTsKLSAgICB2b2lkIGFk
ZDNEQmxpdFNoYWRlclRvTWFwKEJsaXRTaGFkZXJUeXBlIGJsaXRTaGFkZXJUeXBlLCBJRDNEMTFQ
aXhlbFNoYWRlciAqcHMpOworICAgIHN0cnVjdCBTaGFkZXJTdXBwb3J0CisgICAgeworICAgICAg
ICBJRDNEMTFJbnB1dExheW91dCAqaW5wdXRMYXlvdXQ7CisgICAgICAgIElEM0QxMVZlcnRleFNo
YWRlciAqdmVydGV4U2hhZGVyOworICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2VvbWV0
cnlTaGFkZXI7CisgICAgICAgIFdyaXRlVmVydGV4RnVuY3Rpb24gdmVydGV4V3JpdGVGdW5jdGlv
bjsKKyAgICB9OwogCi0gICAgZ2w6OkVycm9yIGdldEJsaXRTaGFkZXIoR0xlbnVtIGRlc3RGb3Jt
YXQsIGJvb2wgaXNTaWduZWQsIGJvb2wgaXMzRCwgY29uc3QgU2hhZGVyICoqc2hhZGVyT3V0KTsK
KyAgICBnbDo6RXJyb3IgaW5pdFJlc291cmNlcygpOworICAgIHZvaWQgZnJlZVJlc291cmNlcygp
OworCisgICAgU2hhZGVyU3VwcG9ydCBnZXRTaGFkZXJTdXBwb3J0KGNvbnN0IFNoYWRlciAmc2hh
ZGVyKTsKKworICAgIHN0YXRpYyBCbGl0U2hhZGVyVHlwZSBHZXRCbGl0U2hhZGVyVHlwZShHTGVu
dW0gZGVzdGluYXRpb25Gb3JtYXQsIGJvb2wgaXNTaWduZWQsIFNoYWRlckRpbWVuc2lvbiBkaW1l
bnNpb24pOworICAgIHN0YXRpYyBTd2l6emxlU2hhZGVyVHlwZSBHZXRTd2l6emxlU2hhZGVyVHlw
ZShHTGVudW0gdHlwZSwgRDNEMTFfU1JWX0RJTUVOU0lPTiBkaW1lbnNpb25hbGl0eSk7CisKKyAg
ICBnbDo6RXJyb3IgY29weURlcHRoU3RlbmNpbChJRDNEMTFSZXNvdXJjZSAqc291cmNlLCB1bnNp
Z25lZCBpbnQgc291cmNlU3VicmVzb3VyY2UsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsIGNv
bnN0IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0QxMVJlc291cmNlICpkZXN0LCB1bnNpZ25lZCBpbnQgZGVzdFN1YnJlc291cmNlLCBj
b25zdCBnbDo6Qm94ICZkZXN0QXJlYSwgY29uc3QgZ2w6OkV4dGVudHMgJmRlc3RTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3Is
IGJvb2wgc3RlbmNpbE9ubHkpOworCisgICAgdm9pZCBhZGRCbGl0U2hhZGVyVG9NYXAoQmxpdFNo
YWRlclR5cGUgYmxpdFNoYWRlclR5cGUsIFNoYWRlckRpbWVuc2lvbiBkaW1lbnNpb24sIElEM0Qx
MVBpeGVsU2hhZGVyICpwcyk7CisKKyAgICBnbDo6RXJyb3IgZ2V0QmxpdFNoYWRlcihHTGVudW0g
ZGVzdEZvcm1hdCwgYm9vbCBpc1NpZ25lZCwgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lvbiwgY29u
c3QgU2hhZGVyICoqc2hhZGVyT3V0KTsKICAgICBnbDo6RXJyb3IgZ2V0U3dpenpsZVNoYWRlcihH
TGVudW0gdHlwZSwgRDNEMTFfU1JWX0RJTUVOU0lPTiB2aWV3RGltZW5zaW9uLCBjb25zdCBTaGFk
ZXIgKipzaGFkZXJPdXQpOwogCi0gICAgdm9pZCBhZGRTd2l6emxlU2hhZGVyVG9NYXAoU3dpenps
ZVNoYWRlclR5cGUgc3dpenpsZVNoYWRlclR5cGUsIGJvb2wgaXMyRCwgSUQzRDExUGl4ZWxTaGFk
ZXIgKnBzKTsKKyAgICB2b2lkIGFkZFN3aXp6bGVTaGFkZXJUb01hcChTd2l6emxlU2hhZGVyVHlw
ZSBzd2l6emxlU2hhZGVyVHlwZSwgU2hhZGVyRGltZW5zaW9uIGRpbWVuc2lvbiwgSUQzRDExUGl4
ZWxTaGFkZXIgKnBzKTsKIAogICAgIHZvaWQgY2xlYXJTaGFkZXJNYXAoKTsKIApAQCAtMTM2LDYg
KzE1OCw3IEBACiAgICAgc3RkOjptYXA8QmxpdFNoYWRlclR5cGUsIFNoYWRlcj4gbUJsaXRTaGFk
ZXJNYXA7CiAgICAgc3RkOjptYXA8U3dpenpsZVNoYWRlclR5cGUsIFNoYWRlcj4gbVN3aXp6bGVT
aGFkZXJNYXA7CiAKKyAgICBib29sIG1SZXNvdXJjZXNJbml0aWFsaXplZDsKICAgICBJRDNEMTFC
dWZmZXIgKm1WZXJ0ZXhCdWZmZXI7CiAgICAgSUQzRDExU2FtcGxlclN0YXRlICptUG9pbnRTYW1w
bGVyOwogICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqbUxpbmVhclNhbXBsZXI7CkBAIC0xNDMsMTQg
KzE2NiwxNiBAQAogICAgIElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSAqbVNjaXNzb3JEaXNhYmxlZFJh
c3Rlcml6ZXJTdGF0ZTsKICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSAqbURlcHRoU3RlbmNp
bFN0YXRlOwogCi0gICAgSUQzRDExSW5wdXRMYXlvdXQgKm1RdWFkMkRJTDsKLSAgICBJRDNEMTFW
ZXJ0ZXhTaGFkZXIgKm1RdWFkMkRWUzsKLSAgICBJRDNEMTFQaXhlbFNoYWRlciAqbURlcHRoUFM7
CisgICAgZDNkMTE6OkxhenlJbnB1dExheW91dCBtUXVhZDJESUw7CisgICAgZDNkMTE6OkxhenlT
aGFkZXI8SUQzRDExVmVydGV4U2hhZGVyPiBtUXVhZDJEVlM7CisgICAgZDNkMTE6OkxhenlTaGFk
ZXI8SUQzRDExUGl4ZWxTaGFkZXI+IG1EZXB0aFBTOwogCi0gICAgSUQzRDExSW5wdXRMYXlvdXQg
Km1RdWFkM0RJTDsKLSAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKm1RdWFkM0RWUzsKLSAgICBJRDNE
MTFHZW9tZXRyeVNoYWRlciAqbVF1YWQzREdTOworICAgIGQzZDExOjpMYXp5SW5wdXRMYXlvdXQg
bVF1YWQzRElMOworICAgIGQzZDExOjpMYXp5U2hhZGVyPElEM0QxMVZlcnRleFNoYWRlcj4gbVF1
YWQzRFZTOworICAgIGQzZDExOjpMYXp5U2hhZGVyPElEM0QxMUdlb21ldHJ5U2hhZGVyPiBtUXVh
ZDNER1M7CiAKKyAgICBkM2QxMTo6TGF6eUJsZW5kU3RhdGUgbUFscGhhTWFza0JsZW5kU3RhdGU7
CisKICAgICBJRDNEMTFCdWZmZXIgKm1Td2l6emxlQ0I7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIx
MS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMzkgKzgsNjQgQEAKIAogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oIgogCisjaW5jbHVkZSA8bWVtb3J5Pgor
CiAjaW5jbHVkZSAiY29tbW9uL01lbW9yeUJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9mb3JtYXR1dGlsczExLmgiCiAKIG5hbWVzcGFjZSByeAogewogCituYW1lc3BhY2UK
K3sKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitHTHVpbnQgUmVhZEluZGV4VmFsdWVGcm9tSW5k
aWNlcyhjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3QgaW5kZXgpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCAqPihkYXRhKVtpbmRleF07Cit9Cit0eXBlZGVmIEdMdWlu
dCAoKlJlYWRJbmRleFZhbHVlRnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBp
bmRleCk7CisKK2VudW0gY2xhc3MgQ29weVJlc3VsdAoreworICAgIFJFQ1JFQVRFRCwKKyAgICBO
T1RfUkVDUkVBVEVELAorfTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCiBQYWNrUGl4
ZWxzUGFyYW1zOjpQYWNrUGl4ZWxzUGFyYW1zKCkKLSAgOiBmb3JtYXQoR0xfTk9ORSksCi0gICAg
dHlwZShHTF9OT05FKSwKLSAgICBvdXRwdXRQaXRjaCgwKSwKLSAgICBwYWNrQnVmZmVyKE5VTEwp
LAotICAgIG9mZnNldCgwKQote30KKyAgICA6IGZvcm1hdChHTF9OT05FKSwgdHlwZShHTF9OT05F
KSwgb3V0cHV0UGl0Y2goMCksIHBhY2tCdWZmZXIobnVsbHB0ciksIG9mZnNldCgwKQoreworfQog
Ci1QYWNrUGl4ZWxzUGFyYW1zOjpQYWNrUGl4ZWxzUGFyYW1zKGNvbnN0IGdsOjpSZWN0YW5nbGUg
JmFyZWFJbiwgR0xlbnVtIGZvcm1hdEluLCBHTGVudW0gdHlwZUluLCBHTHVpbnQgb3V0cHV0UGl0
Y2hJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
UGFja1N0YXRlICZwYWNrSW4sIHB0cmRpZmZfdCBvZmZzZXRJbikKLSAgOiBhcmVhKGFyZWFJbiks
Ci0gICAgZm9ybWF0KGZvcm1hdEluKSwKLSAgICB0eXBlKHR5cGVJbiksCi0gICAgb3V0cHV0UGl0
Y2gob3V0cHV0UGl0Y2hJbiksCi0gICAgcGFja0J1ZmZlcihwYWNrSW4ucGl4ZWxCdWZmZXIuZ2V0
KCkpLAotICAgIHBhY2socGFja0luLmFsaWdubWVudCwgcGFja0luLnJldmVyc2VSb3dPcmRlciks
Ci0gICAgb2Zmc2V0KG9mZnNldEluKQote30KK1BhY2tQaXhlbHNQYXJhbXM6OlBhY2tQaXhlbHNQ
YXJhbXMoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYUluLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBvdXRwdXRQaXRjaEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2tJbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IG9mZnNldEluKQorICAgIDogYXJlYShhcmVhSW4p
LAorICAgICAgZm9ybWF0KGZvcm1hdEluKSwKKyAgICAgIHR5cGUodHlwZUluKSwKKyAgICAgIG91
dHB1dFBpdGNoKG91dHB1dFBpdGNoSW4pLAorICAgICAgcGFja0J1ZmZlcihwYWNrSW4ucGl4ZWxC
dWZmZXIuZ2V0KCkpLAorICAgICAgcGFjayhwYWNrSW4uYWxpZ25tZW50LCBwYWNrSW4ucmV2ZXJz
ZVJvd09yZGVyKSwKKyAgICAgIG9mZnNldChvZmZzZXRJbikKK3sKK30KIAogbmFtZXNwYWNlIGds
X2QzZDExCiB7CiAKIEQzRDExX01BUCBHZXREM0RNYXBUeXBlRnJvbUJpdHMoR0xiaXRmaWVsZCBh
Y2Nlc3MpCiB7Ci0gICAgYm9vbCByZWFkQml0ID0gKChhY2Nlc3MgJiBHTF9NQVBfUkVBRF9CSVQp
ICE9IDApOworICAgIGJvb2wgcmVhZEJpdCAgPSAoKGFjY2VzcyAmIEdMX01BUF9SRUFEX0JJVCkg
IT0gMCk7CiAgICAgYm9vbCB3cml0ZUJpdCA9ICgoYWNjZXNzICYgR0xfTUFQX1dSSVRFX0JJVCkg
IT0gMCk7CiAKICAgICBBU1NFUlQocmVhZEJpdCB8fCB3cml0ZUJpdCk7CkBAIC02Niw5ICs5MSw4
IEBACiAgICAgICAgIHJldHVybiBEM0QxMV9NQVBfUkVBRDsKICAgICB9CiB9Cit9ICAvLyBuYW1l
c3BhY2UgZ2xfZDNkMTEKIAotfQotCiAvLyBFYWNoIGluc3RhbmNlIG9mIEJ1ZmZlcjExOjpCdWZm
ZXJTdG9yYWdlIGlzIHNwZWNpYWxpemVkIGZvciBhIGNsYXNzIG9mIEQzRCBiaW5kaW5nIHBvaW50
cwogLy8gLSB2ZXJ0ZXgvdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMKIC8vIC0gaW5kZXggYnVm
ZmVycwpAQCAtODYsMTEgKzExMCwxNiBAQAogCiAgICAgdmlydHVhbCBib29sIGlzTWFwcGFibGUo
KSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29weUZyb21TdG9yYWdlKEJ1ZmZlclN0
b3JhZ2UgKnNvdXJjZSwgc2l6ZV90IHNvdXJjZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLCBzaXplX3QgZGVzdE9mZnNldCkgPSAwOworICAgIHZp
cnR1YWwgZ2w6OkVycm9yT3JSZXN1bHQ8Q29weVJlc3VsdD4gY29weUZyb21TdG9yYWdlKEJ1ZmZl
clN0b3JhZ2UgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlT2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXN0T2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgcmVzaXplKHNp
emVfdCBzaXplLCBib29sIHByZXNlcnZlRGF0YSkgPSAwOwogCi0gICAgdmlydHVhbCB1aW50OF90
ICptYXAoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MpID0g
MDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBtYXAoc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKipt
YXBQb2ludGVyT3V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVubWFwKCkgPSAwOwogCiAgICAg
Z2w6OkVycm9yIHNldERhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IG9mZnNldCwgc2l6
ZV90IHNpemUpOwpAQCAtMTA5LDI2ICsxMzgsNjggQEAKIGNsYXNzIEJ1ZmZlcjExOjpOYXRpdmVT
dG9yYWdlIDogcHVibGljIEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlCiB7CiAgIHB1YmxpYzoKLSAg
ICBOYXRpdmVTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBCdWZmZXJVc2FnZSB1c2FnZSk7
CisgICAgTmF0aXZlU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwgQnVmZmVyVXNhZ2UgdXNh
Z2UsIGNvbnN0IE5vdGlmaWNhdGlvblNldCAqb25TdG9yYWdlQ2hhbmdlZCk7CiAgICAgfk5hdGl2
ZVN0b3JhZ2UoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1Vc2FnZSA9PSBCVUZGRVJfVVNBR0VfU1RBR0lORzsgfQogCiAgICAgSUQz
RDExQnVmZmVyICpnZXROYXRpdmVTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbU5hdGl2ZVN0b3Jh
Z2U7IH0KLQotICAgIGJvb2wgY29weUZyb21TdG9yYWdlKEJ1ZmZlclN0b3JhZ2UgKnNvdXJjZSwg
c2l6ZV90IHNvdXJjZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6
ZSwgc2l6ZV90IGRlc3RPZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvck9yUmVzdWx0PENv
cHlSZXN1bHQ+IGNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9yYWdlICpzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVzdE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIHJlc2l6
ZShzaXplX3Qgc2l6ZSwgYm9vbCBwcmVzZXJ2ZURhdGEpIG92ZXJyaWRlOwogCi0gICAgdWludDhf
dCAqbWFwKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwKHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3Ms
CisgICAgICAgICAgICAgICAgICB1aW50OF90ICoqbWFwUG9pbnRlck91dCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB1bm1hcCgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQg
ZmlsbEJ1ZmZlckRlc2MoRDNEMTFfQlVGRkVSX0RFU0MqIGJ1ZmZlckRlc2MsIFJlbmRlcmVyMTEg
KnJlbmRlcmVyLCBCdWZmZXJVc2FnZSB1c2FnZSwgdW5zaWduZWQgaW50IGJ1ZmZlclNpemUpOwor
ICAgIHN0YXRpYyB2b2lkIGZpbGxCdWZmZXJEZXNjKEQzRDExX0JVRkZFUl9ERVNDICpidWZmZXJE
ZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyMTEgKnJlbmRlcmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBidWZmZXJTaXplKTsKIAog
ICAgIElEM0QxMUJ1ZmZlciAqbU5hdGl2ZVN0b3JhZ2U7CisgICAgY29uc3QgTm90aWZpY2F0aW9u
U2V0ICptT25TdG9yYWdlQ2hhbmdlZDsKIH07CiAKKy8vIEEgZW11bGF0ZWQgaW5kZXhlZCBidWZm
ZXIgc3RvcmFnZSByZXByZXNlbnRzIGFuIHVuZGVybHlpbmcgRDNEMTEgYnVmZmVyIGZvciBkYXRh
CisvLyB0aGF0IGhhcyBiZWVuIGV4cGFuZGVkIHRvIG1hdGNoIHRoZSBpbmRpY2VzIGxpc3QgdXNl
ZC4gVGhpcyBzdG9yYWdlIGlzIG9ubHkKKy8vIHVzZWQgZm9yIEZMOV8zIHBvaW50c3ByaXRlIHJl
bmRlcmluZyBlbXVsYXRpb24uCitjbGFzcyBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFn
ZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQoreworICBwdWJsaWM6CisgICAgRW11
bGF0ZWRJbmRleGVkU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlcik7CisgICAgfkVtdWxhdGVk
SW5kZXhlZFN0b3JhZ2UoKSBvdmVycmlkZTsKKworICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIGdsOjpFcnJvck9yUmVzdWx0PElEM0Qx
MUJ1ZmZlciAqPiBnZXROYXRpdmVTdG9yYWdlKFNvdXJjZUluZGV4RGF0YSAqaW5kZXhJbmZvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydFZlcnRleCk7CisK
KyAgICBnbDo6RXJyb3JPclJlc3VsdDxDb3B5UmVzdWx0PiBjb3B5RnJvbVN0b3JhZ2UoQnVmZmVy
U3RvcmFnZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc291cmNlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RPZmZzZXQpIG92ZXJy
aWRlOworCisgICAgZ2w6OkVycm9yIHJlc2l6ZShzaXplX3Qgc2l6ZSwgYm9vbCBwcmVzZXJ2ZURh
dGEpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIG1hcChzaXplX3Qgb2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
YWNjZXNzLAorICAgICAgICAgICAgICAgICAgdWludDhfdCAqKm1hcFBvaW50ZXJPdXQpIG92ZXJy
aWRlOworICAgIHZvaWQgdW5tYXAoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIElEM0Qx
MUJ1ZmZlciAqbU5hdGl2ZVN0b3JhZ2U7ICAgICAgIC8vIGNvbnRhaW5zIGV4cGFuZGVkIGRhdGEg
Zm9yIHVzZSBieSBEM0QKKyAgICBNZW1vcnlCdWZmZXIgbU1lbW9yeUJ1ZmZlcjsgICAgICAgICAv
LyBvcmlnaW5hbCBkYXRhIChub3QgZXhwYW5kZWQpCisgICAgTWVtb3J5QnVmZmVyIG1JbmRpY2Vz
TWVtb3J5QnVmZmVyOyAgLy8gaW5kaWNlcyBkYXRhCit9OworCiAvLyBQYWNrIHN0b3JhZ2UgcmVw
cmVzZW50cyBpbnRlcm5hbCBzdG9yYWdlIGZvciBwYWNrIGJ1ZmZlcnMuIFdlIGltcGxlbWVudCBw
YWNrIGJ1ZmZlcnMKIC8vIGFzIENQVSBtZW1vcnksIHRpZWQgdG8gYSBzdGFnaW5nIHRleHR1cmUs
IGZvciBhc3luY2hyb25vdXMgdGV4dHVyZSByZWFkYmFjay4KIGNsYXNzIEJ1ZmZlcjExOjpQYWNr
U3RvcmFnZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQpAQCAtMTM4LDI0ICsyMDks
MjcgQEAKICAgICB+UGFja1N0b3JhZ2UoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNNYXBwYWJs
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgY29weUZyb21T
dG9yYWdlKEJ1ZmZlclN0b3JhZ2UgKnNvdXJjZSwgc2l6ZV90IHNvdXJjZU9mZnNldCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwgc2l6ZV90IGRlc3RPZmZzZXQpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvck9yUmVzdWx0PENvcHlSZXN1bHQ+IGNvcHlGcm9tU3RvcmFnZShC
dWZmZXJTdG9yYWdlICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdE9mZnNldCkg
b3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIHJlc2l6ZShzaXplX3Qgc2l6ZSwgYm9vbCBwcmVzZXJ2
ZURhdGEpIG92ZXJyaWRlOwogCi0gICAgdWludDhfdCAqbWFwKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFw
KHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICB1aW50OF90
ICoqbWFwUG9pbnRlck91dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bm1hcCgpIG92ZXJyaWRlOwog
Ci0gICAgZ2w6OkVycm9yIHBhY2tQaXhlbHMoSUQzRDExVGV4dHVyZTJEICpzcmNUZXh1cmUsIFVJ
TlQgc3JjU3VicmVzb3VyY2UsIGNvbnN0IFBhY2tQaXhlbHNQYXJhbXMgJnBhcmFtcyk7CisgICAg
Z2w6OkVycm9yIHBhY2tQaXhlbHMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAmcmVh
ZEF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFja1BpeGVsc1Bh
cmFtcyAmcGFyYW1zKTsKIAogICBwcml2YXRlOgogICAgIGdsOjpFcnJvciBmbHVzaFF1ZXVlZFBh
Y2tDb21tYW5kKCk7CiAKLSAgICBJRDNEMTFUZXh0dXJlMkQgKm1TdGFnaW5nVGV4dHVyZTsKLSAg
ICBEWEdJX0ZPUk1BVCBtVGV4dHVyZUZvcm1hdDsKLSAgICBnbDo6RXh0ZW50cyBtVGV4dHVyZVNp
emU7CisgICAgVGV4dHVyZUhlbHBlcjExIG1TdGFnaW5nVGV4dHVyZTsKICAgICBNZW1vcnlCdWZm
ZXIgbU1lbW9yeUJ1ZmZlcjsKLSAgICBQYWNrUGl4ZWxzUGFyYW1zICptUXVldWVkUGFja0NvbW1h
bmQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhY2tQaXhlbHNQYXJhbXM+IG1RdWV1ZWRQYWNrQ29t
bWFuZDsKICAgICBQYWNrUGl4ZWxzUGFyYW1zIG1QYWNrUGFyYW1zOwogICAgIGJvb2wgbURhdGFN
b2RpZmllZDsKIH07CkBAIC0xNzAsMTIgKzI0NCwxNiBAQAogICAgIH5TeXN0ZW1NZW1vcnlTdG9y
YWdlKCkgb3ZlcnJpZGUge30KIAogICAgIGJvb2wgaXNNYXBwYWJsZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIGJvb2wgY29weUZyb21TdG9yYWdlKEJ1ZmZlclN0b3Jh
Z2UgKnNvdXJjZSwgc2l6ZV90IHNvdXJjZU9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwgc2l6ZV90IGRlc3RPZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ck9yUmVzdWx0PENvcHlSZXN1bHQ+IGNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9yYWdlICpzb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgZ2w6
OkVycm9yIHJlc2l6ZShzaXplX3Qgc2l6ZSwgYm9vbCBwcmVzZXJ2ZURhdGEpIG92ZXJyaWRlOwog
Ci0gICAgdWludDhfdCAqbWFwKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0Zmll
bGQgYWNjZXNzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwKHNpemVfdCBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgR0xiaXRm
aWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICB1aW50OF90ICoqbWFwUG9pbnRlck91dCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB1bm1hcCgpIG92ZXJyaWRlOwogCiAgICAgTWVtb3J5QnVmZmVy
ICpnZXRTeXN0ZW1Db3B5KCkgeyByZXR1cm4gJm1TeXN0ZW1Db3B5OyB9CkBAIC0xODgsNzMgKzI2
Niw1NCBAQAogICAgIDogQnVmZmVyRDNEKHJlbmRlcmVyKSwKICAgICAgIG1SZW5kZXJlcihyZW5k
ZXJlciksCiAgICAgICBtU2l6ZSgwKSwKLSAgICAgIG1NYXBwZWRTdG9yYWdlKE5VTEwpLAorICAg
ICAgbU1hcHBlZFN0b3JhZ2UobnVsbHB0ciksCisgICAgICBtQnVmZmVyU3RvcmFnZXMoQlVGRkVS
X1VTQUdFX0NPVU5ULCBudWxscHRyKSwKICAgICAgIG1Db25zdGFudEJ1ZmZlclN0b3JhZ2VBZGRp
dGlvbmFsU2l6ZSgwKSwKICAgICAgIG1NYXhDb25zdGFudEJ1ZmZlckxydUNvdW50KDApLAotICAg
ICAgbVJlYWRVc2FnZUNvdW50KDApLAotICAgICAgbUhhc1N5c3RlbU1lbW9yeVN0b3JhZ2UoZmFs
c2UpCi17fQorICAgICAgbVJlYWRVc2FnZUNvdW50KDApCit7Cit9CiAKIEJ1ZmZlcjExOjp+QnVm
ZmVyMTEoKQogewotICAgIGZvciAoYXV0byAmcCA6IG1CdWZmZXJTdG9yYWdlcykKKyAgICBmb3Ig
KGF1dG8gJnN0b3JhZ2UgOiBtQnVmZmVyU3RvcmFnZXMpCiAgICAgewotICAgICAgICBTYWZlRGVs
ZXRlKHAuc2Vjb25kKTsKKyAgICAgICAgU2FmZURlbGV0ZShzdG9yYWdlKTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8gJnAgOiBtQ29uc3RhbnRCdWZmZXJSYW5nZVN0b3JhZ2VzQ2FjaGUpCiAgICAg
ewogICAgICAgICBTYWZlRGVsZXRlKHAuc2Vjb25kLnN0b3JhZ2UpOwogICAgIH0KKworICAgIG1S
ZW5kZXJlci0+b25CdWZmZXJEZWxldGUodGhpcyk7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXIxMTo6
c2V0RGF0YShjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQogewot
ICAgIGdsOjpFcnJvciBlcnJvciA9IHNldFN1YkRhdGEoZGF0YSwgc2l6ZSwgMCk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0K
LSAgICBpZiAodXNhZ2UgPT0gR0xfU1RBVElDX0RSQVcpCi0gICAgewotICAgICAgICBpbml0aWFs
aXplU3RhdGljRGF0YSgpOwotICAgIH0KLQotICAgIHJldHVybiBlcnJvcjsKKyAgICB1cGRhdGVE
M0RCdWZmZXJVc2FnZSh1c2FnZSk7CisgICAgQU5HTEVfVFJZKHNldFN1YkRhdGEoZGF0YSwgc2l6
ZSwgMCkpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgQnVmZmVy
MTE6OmdldERhdGEoY29uc3QgdWludDhfdCAqKm91dERhdGEpCiB7CiAgICAgU3lzdGVtTWVtb3J5
U3RvcmFnZSAqc3lzdGVtTWVtb3J5U3RvcmFnZSA9IG51bGxwdHI7Ci0gICAgZ2w6OkVycm9yIGVy
cm9yID0gZ2V0U3lzdGVtTWVtb3J5U3RvcmFnZSgmc3lzdGVtTWVtb3J5U3RvcmFnZSk7CisgICAg
QU5HTEVfVFJZX1JFU1VMVChnZXRTeXN0ZW1NZW1vcnlTdG9yYWdlKCksIHN5c3RlbU1lbW9yeVN0
b3JhZ2UpOwogCi0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgICpvdXRE
YXRhID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQogICAgIG1SZWFk
VXNhZ2VDb3VudCA9IDA7CiAKICAgICBBU1NFUlQoc3lzdGVtTWVtb3J5U3RvcmFnZS0+Z2V0U2l6
ZSgpID49IG1TaXplKTsKIAogICAgICpvdXREYXRhID0gc3lzdGVtTWVtb3J5U3RvcmFnZS0+Z2V0
U3lzdGVtQ29weSgpLT5kYXRhKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6Z2V0
U3lzdGVtTWVtb3J5U3RvcmFnZShTeXN0ZW1NZW1vcnlTdG9yYWdlICoqc3RvcmFnZU91dCkKK2ds
OjpFcnJvck9yUmVzdWx0PEJ1ZmZlcjExOjpTeXN0ZW1NZW1vcnlTdG9yYWdlICo+IEJ1ZmZlcjEx
OjpnZXRTeXN0ZW1NZW1vcnlTdG9yYWdlKCkKIHsKLSAgICBCdWZmZXJTdG9yYWdlICptZW1TdG9y
YWdlVW50eXBlZCA9IGdldEJ1ZmZlclN0b3JhZ2UoQlVGRkVSX1VTQUdFX1NZU1RFTV9NRU1PUlkp
OwotCi0gICAgaWYgKG1lbVN0b3JhZ2VVbnR5cGVkID09IG51bGxwdHIpCi0gICAgewotICAgICAg
ICAvLyBUT0RPKGptYWRpbGwpOiBjb252ZXJ0IGFsbCB0byBlcnJvcnMKLSAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci0KLSAgICAqc3RvcmFnZU91dCA9
IEdldEFzPFN5c3RlbU1lbW9yeVN0b3JhZ2U+KG1lbVN0b3JhZ2VVbnR5cGVkKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0g
bnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3JhZ2UoQlVGRkVSX1VT
QUdFX1NZU1RFTV9NRU1PUlkpLCBzdG9yYWdlKTsKKyAgICByZXR1cm4gR2V0QXM8U3lzdGVtTWVt
b3J5U3RvcmFnZT4oc3RvcmFnZSk7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXIxMTo6c2V0U3ViRGF0
YShjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkKQEAgLTI2OCwy
MyArMzI3LDExIEBACiAgICAgICAgIEJ1ZmZlclN0b3JhZ2UgKndyaXRlQnVmZmVyID0gbnVsbHB0
cjsKICAgICAgICAgaWYgKHN1cHBvcnRzRGlyZWN0QmluZGluZygpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICB3cml0ZUJ1ZmZlciA9IGdldFN0YWdpbmdTdG9yYWdlKCk7Ci0KLSAgICAgICAgICAg
IGlmICghd3JpdGVCdWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGludGVybmFs
IGJ1ZmZlci4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQo
Z2V0U3RhZ2luZ1N0b3JhZ2UoKSwgd3JpdGVCdWZmZXIpOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UKICAgICAgICAgewotICAgICAgICAgICAgU3lzdGVtTWVtb3J5U3RvcmFnZSAqc3lzdGVtTWVt
b3J5U3RvcmFnZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRT
eXN0ZW1NZW1vcnlTdG9yYWdlKCZzeXN0ZW1NZW1vcnlTdG9yYWdlKTsKLSAgICAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB3cml0ZUJ1ZmZlciA9IHN5c3Rl
bU1lbW9yeVN0b3JhZ2U7CisgICAgICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldFN5c3RlbU1l
bW9yeVN0b3JhZ2UoKSwgd3JpdGVCdWZmZXIpOwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJU
KHdyaXRlQnVmZmVyKTsKQEAgLTI5NCwxMSArMzQxLDcgQEAKICAgICAgICAgaWYgKHdyaXRlQnVm
ZmVyLT5nZXRTaXplKCkgPCByZXF1aXJlZFNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGJv
b2wgcHJlc2VydmVEYXRhID0gKG9mZnNldCA+IDApOwotICAgICAgICAgICAgZ2w6OkVycm9yIGVy
cm9yID0gd3JpdGVCdWZmZXItPnJlc2l6ZShyZXF1aXJlZFNpemUsIHByZXNlcnZlRGF0YSk7Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RS
WSh3cml0ZUJ1ZmZlci0+cmVzaXplKHJlcXVpcmVkU2l6ZSwgcHJlc2VydmVEYXRhKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICB3cml0ZUJ1ZmZlci0+c2V0RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90ICo+KGRhdGEpLCBvZmZzZXQsIHNpemUpOwpAQCAtMzA4LDIxICszNTEsMjcgQEAKICAg
ICBtU2l6ZSA9IHN0ZDo6bWF4KG1TaXplLCByZXF1aXJlZFNpemUpOwogICAgIGludmFsaWRhdGVT
dGF0aWNEYXRhKCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjExOjpjb3B5U3ViRGF0
YShCdWZmZXJJbXBsKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNldCwgR0xpbnRwdHIgZGVz
dE9mZnNldCwgR0xzaXplaXB0ciBzaXplKQorZ2w6OkVycm9yIEJ1ZmZlcjExOjpjb3B5U3ViRGF0
YShCdWZmZXJJbXBsICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50cHRyIHNvdXJjZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aXB0ciBzaXplKQogewogICAgIEJ1ZmZlcjExICpzb3VyY2VCdWZmZXIgPSBHZXRBczxCdWZmZXIx
MT4oc291cmNlKTsKLSAgICBBU1NFUlQoc291cmNlQnVmZmVyICE9IE5VTEwpOworICAgIEFTU0VS
VChzb3VyY2VCdWZmZXIgIT0gbnVsbHB0cik7CiAKLSAgICBCdWZmZXJTdG9yYWdlICpjb3B5RGVz
dCA9IGdldExhdGVzdEJ1ZmZlclN0b3JhZ2UoKTsKKyAgICBCdWZmZXJTdG9yYWdlICpjb3B5RGVz
dCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRMYXRlc3RCdWZmZXJTdG9yYWdl
KCksIGNvcHlEZXN0KTsKKwogICAgIGlmICghY29weURlc3QpCiAgICAgewotICAgICAgICBjb3B5
RGVzdCA9IGdldFN0YWdpbmdTdG9yYWdlKCk7CisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0
U3RhZ2luZ1N0b3JhZ2UoKSwgY29weURlc3QpOwogICAgIH0KIAotICAgIEJ1ZmZlclN0b3JhZ2Ug
KmNvcHlTb3VyY2UgPSBzb3VyY2VCdWZmZXItPmdldExhdGVzdEJ1ZmZlclN0b3JhZ2UoKTsKKyAg
ICBCdWZmZXJTdG9yYWdlICpjb3B5U291cmNlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVT
VUxUKHNvdXJjZUJ1ZmZlci0+Z2V0TGF0ZXN0QnVmZmVyU3RvcmFnZSgpLCBjb3B5U291cmNlKTsK
IAogICAgIGlmICghY29weVNvdXJjZSB8fCAhY29weURlc3QpCiAgICAgewpAQCAtMzMzLDExICsz
ODIsMTEgQEAKICAgICAvLyBwYWNrIGJ1ZmZlciBwYXJ0bmVyLCBiZWNhdXNlIG90aGVyIG5hdGl2
ZSBidWZmZXJzIGNhbid0IGJlIG1hcHBlZAogICAgIGlmIChjb3B5RGVzdC0+Z2V0VXNhZ2UoKSA9
PSBCVUZGRVJfVVNBR0VfUElYRUxfUEFDSyAmJiAhY29weVNvdXJjZS0+aXNNYXBwYWJsZSgpKQog
ICAgIHsKLSAgICAgICAgY29weVNvdXJjZSA9IHNvdXJjZUJ1ZmZlci0+Z2V0U3RhZ2luZ1N0b3Jh
Z2UoKTsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChzb3VyY2VCdWZmZXItPmdldFN0YWdpbmdT
dG9yYWdlKCksIGNvcHlTb3VyY2UpOwogICAgIH0KICAgICBlbHNlIGlmIChjb3B5U291cmNlLT5n
ZXRVc2FnZSgpID09IEJVRkZFUl9VU0FHRV9QSVhFTF9QQUNLICYmICFjb3B5RGVzdC0+aXNNYXBw
YWJsZSgpKQogICAgIHsKLSAgICAgICAgY29weURlc3QgPSBnZXRTdGFnaW5nU3RvcmFnZSgpOwor
ICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldFN0YWdpbmdTdG9yYWdlKCksIGNvcHlEZXN0KTsK
ICAgICB9CiAKICAgICAvLyBEM0QxMSBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGVkIGNvcGllcyB1
bnRpbCAxMS4xLCBhbmQgb25seSBpZiB0aGUKQEAgLTM0NywyMSArMzk2LDI0IEBACiAgICAgewog
ICAgICAgICBpZiAoY29weVNvdXJjZS0+Z2V0VXNhZ2UoKSA9PSBCVUZGRVJfVVNBR0VfU1RBR0lO
RykKICAgICAgICAgewotICAgICAgICAgICAgY29weVNvdXJjZSA9IGdldEJ1ZmZlclN0b3JhZ2Uo
QlVGRkVSX1VTQUdFX1ZFUlRFWF9PUl9UUkFOU0ZPUk1fRkVFREJBQ0spOworICAgICAgICAgICAg
QU5HTEVfVFJZX1JFU1VMVChnZXRCdWZmZXJTdG9yYWdlKEJVRkZFUl9VU0FHRV9WRVJURVhfT1Jf
VFJBTlNGT1JNX0ZFRURCQUNLKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVNv
dXJjZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b3B5U291cmNlID0gZ2V0U3RhZ2luZ1N0b3JhZ2UoKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWV9S
RVNVTFQoZ2V0U3RhZ2luZ1N0b3JhZ2UoKSwgY29weVNvdXJjZSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBjb3B5RGVzdC0+Y29weUZyb21TdG9yYWdlKGNvcHlTb3VyY2UsIHNvdXJjZU9mZnNl
dCwgc2l6ZSwgZGVzdE9mZnNldCk7CisgICAgQ29weVJlc3VsdCBjb3B5UmVzdWx0ID0gQ29weVJl
c3VsdDo6Tk9UX1JFQ1JFQVRFRDsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGNvcHlEZXN0LT5jb3B5
RnJvbVN0b3JhZ2UoY29weVNvdXJjZSwgc291cmNlT2Zmc2V0LCBzaXplLCBkZXN0T2Zmc2V0KSwK
KyAgICAgICAgICAgICAgICAgICAgIGNvcHlSZXN1bHQpOwogICAgIGNvcHlEZXN0LT5zZXREYXRh
UmV2aXNpb24oY29weURlc3QtPmdldERhdGFSZXZpc2lvbigpICsgMSk7CiAKICAgICBtU2l6ZSA9
IHN0ZDo6bWF4PHNpemVfdD4obVNpemUsIGRlc3RPZmZzZXQgKyBzaXplKTsKICAgICBpbnZhbGlk
YXRlU3RhdGljRGF0YSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXIxMTo6bWFwKEdM
ZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKQEAgLTM3NiwxOSArNDI4LDIwIEBACiB7CiAg
ICAgQVNTRVJUKCFtTWFwcGVkU3RvcmFnZSk7CiAKLSAgICBCdWZmZXJTdG9yYWdlICpsYXRlc3RT
dG9yYWdlID0gZ2V0TGF0ZXN0QnVmZmVyU3RvcmFnZSgpOwotICAgIGlmIChsYXRlc3RTdG9yYWdl
ICYmCi0gICAgICAgIChsYXRlc3RTdG9yYWdlLT5nZXRVc2FnZSgpID09IEJVRkZFUl9VU0FHRV9Q
SVhFTF9QQUNLIHx8Ci0gICAgICAgICBsYXRlc3RTdG9yYWdlLT5nZXRVc2FnZSgpID09IEJVRkZF
Ul9VU0FHRV9TVEFHSU5HKSkKKyAgICBCdWZmZXJTdG9yYWdlICpsYXRlc3RTdG9yYWdlID0gbnVs
bHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldExhdGVzdEJ1ZmZlclN0b3JhZ2UoKSwgbGF0
ZXN0U3RvcmFnZSk7CisKKyAgICBpZiAobGF0ZXN0U3RvcmFnZSAmJiAobGF0ZXN0U3RvcmFnZS0+
Z2V0VXNhZ2UoKSA9PSBCVUZGRVJfVVNBR0VfUElYRUxfUEFDSyB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBsYXRlc3RTdG9yYWdlLT5nZXRVc2FnZSgpID09IEJVRkZFUl9VU0FHRV9TVEFH
SU5HKSkKICAgICB7CiAgICAgICAgIC8vIExhdGVzdCBzdG9yYWdlIGlzIG1hcHBhYmxlLgogICAg
ICAgICBtTWFwcGVkU3RvcmFnZSA9IGxhdGVzdFN0b3JhZ2U7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIC8vIEZhbGwgYmFjayB0byB1c2luZyB0aGUgc3RhZ2luZyBidWZmZXIgaWYg
dGhlIGxhdGVzdCBzdG9yYWdlIGRvZXMKLSAgICAgICAgLy8gbm90IGV4aXN0IG9yIGlzIG5vdCBD
UFUtYWNjZXNzaWJsZS4KLSAgICAgICAgbU1hcHBlZFN0b3JhZ2UgPSBnZXRTdGFnaW5nU3RvcmFn
ZSgpOworICAgICAgICAvLyBGYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHN0YWdpbmcgYnVmZmVyIGlm
IHRoZSBsYXRlc3Qgc3RvcmFnZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QKKyAgICAgICAgLy8g
Q1BVLWFjY2Vzc2libGUuCisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0U3RhZ2luZ1N0b3Jh
Z2UoKSwgbU1hcHBlZFN0b3JhZ2UpOwogICAgIH0KIAogICAgIGlmICghbU1hcHBlZFN0b3JhZ2Up
CkBAIC00MDAsMzMgKzQ1MywzNCBAQAogICAgIHsKICAgICAgICAgLy8gVXBkYXRlIHRoZSBkYXRh
IHJldmlzaW9uIGltbWVkaWF0ZWx5LCBzaW5jZSB0aGUgZGF0YSBtaWdodCBiZSBjaGFuZ2VkIGF0
IGFueSB0aW1lCiAgICAgICAgIG1NYXBwZWRTdG9yYWdlLT5zZXREYXRhUmV2aXNpb24obU1hcHBl
ZFN0b3JhZ2UtPmdldERhdGFSZXZpc2lvbigpICsgMSk7CisgICAgICAgIGludmFsaWRhdGVTdGF0
aWNEYXRhKCk7CiAgICAgfQogCi0gICAgdWludDhfdCAqbWFwcGVkQnVmZmVyID0gbU1hcHBlZFN0
b3JhZ2UtPm1hcChvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKLSAgICBpZiAoIW1hcHBlZEJ1ZmZl
cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZh
aWxlZCB0byBtYXAgaW50ZXJuYWwgYnVmZmVyLiIpOwotICAgIH0KKyAgICB1aW50OF90ICptYXBw
ZWRCdWZmZXIgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShtTWFwcGVkU3RvcmFnZS0+bWFwKG9m
ZnNldCwgbGVuZ3RoLCBhY2Nlc3MsICZtYXBwZWRCdWZmZXIpKTsKKyAgICBBU1NFUlQobWFwcGVk
QnVmZmVyKTsKIAogICAgICptYXBQdHIgPSBzdGF0aWNfY2FzdDxHTHZvaWQgKj4obWFwcGVkQnVm
ZmVyKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZlcjExOjp1bm1hcChHTGJvb2xlYW4gKnJl
c3VsdCkKIHsKICAgICBBU1NFUlQobU1hcHBlZFN0b3JhZ2UpOwogICAgIG1NYXBwZWRTdG9yYWdl
LT51bm1hcCgpOwotICAgIG1NYXBwZWRTdG9yYWdlID0gTlVMTDsKKyAgICBtTWFwcGVkU3RvcmFn
ZSA9IG51bGxwdHI7CiAKICAgICAvLyBUT0RPOiBkZXRlY3QgaWYgd2UgaGFkIGNvcnJ1cHRpb24u
IGlmIHNvLCByZXR1cm4gZmFsc2UuCiAgICAgKnJlc3VsdCA9IEdMX1RSVUU7CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotdm9pZCBCdWZmZXIxMTo6bWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2UoKQorZ2w6OkVycm9y
IEJ1ZmZlcjExOjptYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZSgpCiB7Ci0gICAgQnVmZmVyU3Rv
cmFnZSAqdHJhbnNmb3JtRmVlZGJhY2tTdG9yYWdlID0gZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJf
VVNBR0VfVkVSVEVYX09SX1RSQU5TRk9STV9GRUVEQkFDSyk7CisgICAgQnVmZmVyU3RvcmFnZSAq
dHJhbnNmb3JtRmVlZGJhY2tTdG9yYWdlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxU
KGdldEJ1ZmZlclN0b3JhZ2UoQlVGRkVSX1VTQUdFX1ZFUlRFWF9PUl9UUkFOU0ZPUk1fRkVFREJB
Q0spLAorICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tTdG9yYWdlKTsKIAog
ICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja1N0b3JhZ2UpCiAgICAgewpAQCAtNDM0LDc4ICs0ODgs
ODIgQEAKICAgICB9CiAKICAgICBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCi12b2lkIEJ1ZmZlcjExOjptYXJrQnVmZmVyVXNhZ2UoKQorZ2w6
OkVycm9yIEJ1ZmZlcjExOjptYXJrQnVmZmVyVXNhZ2UoKQogewogICAgIG1SZWFkVXNhZ2VDb3Vu
dCsrOwogCiAgICAgLy8gRnJlZSB0aGUgc3lzdGVtIG1lbW9yeSBzdG9yYWdlIGlmIHdlIGRlY2lk
ZSBpdCBpc24ndCBiZWluZyB1c2VkIHZlcnkgb2Z0ZW4uCiAgICAgY29uc3QgdW5zaWduZWQgaW50
IHVzYWdlTGltaXQgPSA1OwogCi0gICAgaWYgKG1SZWFkVXNhZ2VDb3VudCA+IHVzYWdlTGltaXQg
JiYgbUhhc1N5c3RlbU1lbW9yeVN0b3JhZ2UpCisgICAgQnVmZmVyU3RvcmFnZSAqJnN5c01lbVVz
YWdlID0gbUJ1ZmZlclN0b3JhZ2VzW0JVRkZFUl9VU0FHRV9TWVNURU1fTUVNT1JZXTsKKyAgICBp
ZiAobVJlYWRVc2FnZUNvdW50ID4gdXNhZ2VMaW1pdCAmJiBzeXNNZW1Vc2FnZSAhPSBudWxscHRy
KQogICAgIHsKLSAgICAgICAgYXV0byBzeXN0ZW1NZW1vcnlTdG9yYWdlSXQgPSBtQnVmZmVyU3Rv
cmFnZXMuZmluZChCVUZGRVJfVVNBR0VfU1lTVEVNX01FTU9SWSk7Ci0gICAgICAgIEFTU0VSVChz
eXN0ZW1NZW1vcnlTdG9yYWdlSXQgIT0gbUJ1ZmZlclN0b3JhZ2VzLmVuZCgpKTsKLQotICAgICAg
ICBpZiAoZ2V0TGF0ZXN0QnVmZmVyU3RvcmFnZSgpICE9IHN5c3RlbU1lbW9yeVN0b3JhZ2VJdC0+
c2Vjb25kKQorICAgICAgICBCdWZmZXJTdG9yYWdlICpsYXRlc3RTdG9yYWdlID0gbnVsbHB0cjsK
KyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRMYXRlc3RCdWZmZXJTdG9yYWdlKCksIGxhdGVz
dFN0b3JhZ2UpOworICAgICAgICBpZiAobGF0ZXN0U3RvcmFnZSAhPSBzeXNNZW1Vc2FnZSkKICAg
ICAgICAgewotICAgICAgICAgICAgU2FmZURlbGV0ZShzeXN0ZW1NZW1vcnlTdG9yYWdlSXQtPnNl
Y29uZCk7Ci0gICAgICAgICAgICBtQnVmZmVyU3RvcmFnZXMuZXJhc2Uoc3lzdGVtTWVtb3J5U3Rv
cmFnZUl0KTsKLSAgICAgICAgICAgIG1IYXNTeXN0ZW1NZW1vcnlTdG9yYWdlID0gZmFsc2U7Cisg
ICAgICAgICAgICBTYWZlRGVsZXRlKHN5c01lbVVzYWdlKTsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1JRDNEMTFCdWZmZXIgKkJ1ZmZlcjExOjpn
ZXRCdWZmZXIoQnVmZmVyVXNhZ2UgdXNhZ2UpCitnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZm
ZXIgKj4gQnVmZmVyMTE6OmdldEJ1ZmZlcihCdWZmZXJVc2FnZSB1c2FnZSkKIHsKLSAgICBtYXJr
QnVmZmVyVXNhZ2UoKTsKKyAgICBBTkdMRV9UUlkobWFya0J1ZmZlclVzYWdlKCkpOwogCi0gICAg
QnVmZmVyU3RvcmFnZSAqYnVmZmVyU3RvcmFnZSA9IGdldEJ1ZmZlclN0b3JhZ2UodXNhZ2UpOwor
ICAgIEJ1ZmZlclN0b3JhZ2UgKnN0b3JhZ2UgPSBudWxscHRyOworICAgIEFOR0xFX1RSWV9SRVNV
TFQoZ2V0QnVmZmVyU3RvcmFnZSh1c2FnZSksIHN0b3JhZ2UpOworICAgIHJldHVybiBHZXRBczxO
YXRpdmVTdG9yYWdlPihzdG9yYWdlKS0+Z2V0TmF0aXZlU3RvcmFnZSgpOworfQogCi0gICAgaWYg
KCFidWZmZXJTdG9yYWdlKQotICAgIHsKLSAgICAgICAgLy8gU3RvcmFnZSBvdXQtb2YtbWVtb3J5
Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KK2dsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1
ZmZlciAqPiBCdWZmZXIxMTo6Z2V0RW11bGF0ZWRJbmRleGVkQnVmZmVyKAorICAgIFNvdXJjZUlu
ZGV4RGF0YSAqaW5kZXhJbmZvLAorICAgIGNvbnN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUgJmF0dHJp
YnV0ZSwKKyAgICBHTGludCBzdGFydFZlcnRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXhJbmZvKTsK
IAotICAgIHJldHVybiBHZXRBczxOYXRpdmVTdG9yYWdlPihidWZmZXJTdG9yYWdlKS0+Z2V0TmF0
aXZlU3RvcmFnZSgpOworICAgIEFOR0xFX1RSWShtYXJrQnVmZmVyVXNhZ2UoKSk7CisKKyAgICBC
dWZmZXJTdG9yYWdlICp1bnR5cGVkU3RvcmFnZSA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZX1JF
U1VMVChnZXRCdWZmZXJTdG9yYWdlKEJVRkZFUl9VU0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRF
WCksIHVudHlwZWRTdG9yYWdlKTsKKworICAgIEVtdWxhdGVkSW5kZXhlZFN0b3JhZ2UgKmVtdWxh
dGVkU3RvcmFnZSA9IEdldEFzPEVtdWxhdGVkSW5kZXhlZFN0b3JhZ2U+KHVudHlwZWRTdG9yYWdl
KTsKKworICAgIElEM0QxMUJ1ZmZlciAqbmF0aXZlU3RvcmFnZSA9IG51bGxwdHI7CisgICAgQU5H
TEVfVFJZX1JFU1VMVChlbXVsYXRlZFN0b3JhZ2UtPmdldE5hdGl2ZVN0b3JhZ2UoaW5kZXhJbmZv
LCBhdHRyaWJ1dGUsIHN0YXJ0VmVydGV4KSwKKyAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVN0
b3JhZ2UpOworCisgICAgcmV0dXJuIG5hdGl2ZVN0b3JhZ2U7CiB9CiAKLUlEM0QxMUJ1ZmZlciAq
QnVmZmVyMTE6OmdldENvbnN0YW50QnVmZmVyUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVp
cHRyIHNpemUpCitnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZmZXIgKj4gQnVmZmVyMTE6Omdl
dENvbnN0YW50QnVmZmVyUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpCiB7
Ci0gICAgbWFya0J1ZmZlclVzYWdlKCk7CisgICAgQU5HTEVfVFJZKG1hcmtCdWZmZXJVc2FnZSgp
KTsKIAotICAgIEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2U7CisgICAgQnVmZmVyU3RvcmFn
ZSAqYnVmZmVyU3RvcmFnZSA9IG51bGxwdHI7CiAKICAgICBpZiAob2Zmc2V0ID09IDApCiAgICAg
ewotICAgICAgICBidWZmZXJTdG9yYWdlID0gZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0Vf
VU5JRk9STSk7CisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0QnVmZmVyU3RvcmFnZShCVUZG
RVJfVVNBR0VfVU5JRk9STSksIGJ1ZmZlclN0b3JhZ2UpOwogICAgIH0KICAgICBlbHNlCiAgICAg
ewotICAgICAgICBidWZmZXJTdG9yYWdlID0gZ2V0Q29udGFudEJ1ZmZlclJhbmdlU3RvcmFnZShv
ZmZzZXQsIHNpemUpOworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldENvbnN0YW50QnVmZmVy
UmFuZ2VTdG9yYWdlKG9mZnNldCwgc2l6ZSksIGJ1ZmZlclN0b3JhZ2UpOwogICAgIH0KIAotICAg
IGlmICghYnVmZmVyU3RvcmFnZSkKLSAgICB7Ci0gICAgICAgIC8vIFN0b3JhZ2Ugb3V0LW9mLW1l
bW9yeQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICByZXR1cm4gR2V0QXM8TmF0
aXZlU3RvcmFnZT4oYnVmZmVyU3RvcmFnZSktPmdldE5hdGl2ZVN0b3JhZ2UoKTsKIH0KIAotSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpCdWZmZXIxMTo6Z2V0U1JWKERYR0lfRk9STUFUIHNydkZv
cm1hdCkKK2dsOjpFcnJvck9yUmVzdWx0PElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqPiBCdWZm
ZXIxMTo6Z2V0U1JWKERYR0lfRk9STUFUIHNydkZvcm1hdCkKIHsKLSAgICBCdWZmZXJTdG9yYWdl
ICpzdG9yYWdlID0gZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0VfUElYRUxfVU5QQUNLKTsK
LQotICAgIGlmICghc3RvcmFnZSkKLSAgICB7Ci0gICAgICAgIC8vIFN0b3JhZ2Ugb3V0LW9mLW1l
bW9yeQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KKyAgICBCdWZmZXJTdG9yYWdlICpz
dG9yYWdlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3JhZ2Uo
QlVGRkVSX1VTQUdFX1BJWEVMX1VOUEFDSyksIHN0b3JhZ2UpOwogICAgIElEM0QxMUJ1ZmZlciAq
YnVmZmVyID0gR2V0QXM8TmF0aXZlU3RvcmFnZT4oc3RvcmFnZSktPmdldE5hdGl2ZVN0b3JhZ2Uo
KTsKIAogICAgIGF1dG8gYnVmZmVyU1JWSXQgPSBtQnVmZmVyUmVzb3VyY2VWaWV3cy5maW5kKHNy
dkZvcm1hdCk7CkBAIC01MjMsMTYgKzU4MSwxNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAg
SUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgIElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqYnVmZmVyU1JWID0gTlVMTDsKKyAgICBJRDNEMTFEZXZpY2Ug
KmRldmljZSAgICAgICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpidWZmZXJTUlYgPSBudWxscHRyOwogCi0gICAgY29uc3Qg
ZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJ
bmZvKHNydkZvcm1hdCk7CisgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9y
bWF0SW5mbyA9IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oc3J2Rm9ybWF0KTsKIAogICAg
IEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0MgYnVmZmVyU1JWRGVzYzsKICAgICBidWZm
ZXJTUlZEZXNjLkJ1ZmZlci5FbGVtZW50T2Zmc2V0ID0gMDsKLSAgICBidWZmZXJTUlZEZXNjLkJ1
ZmZlci5FbGVtZW50V2lkdGggPSBtU2l6ZSAvIGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7Ci0g
ICAgYnVmZmVyU1JWRGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9CVUZG
RVI7Ci0gICAgYnVmZmVyU1JWRGVzYy5Gb3JtYXQgPSBzcnZGb3JtYXQ7CisgICAgYnVmZmVyU1JW
RGVzYy5CdWZmZXIuRWxlbWVudFdpZHRoID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihtU2l6ZSkgLyBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVzOworICAgIGJ1ZmZlclNSVkRl
c2MuVmlld0RpbWVuc2lvbiAgICAgICAgPSBEM0QxMV9TUlZfRElNRU5TSU9OX0JVRkZFUjsKKyAg
ICBidWZmZXJTUlZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgID0gc3J2Rm9ybWF0OwogCiAgICAg
SFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhidWZmZXIs
ICZidWZmZXJTUlZEZXNjLCAmYnVmZmVyU1JWKTsKICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklB
QkxFKHJlc3VsdCk7CkBAIC01NDMsODQgKzYwMiw5MiBAQAogICAgIHJldHVybiBidWZmZXJTUlY7
CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6cGFja1BpeGVscyhJRDNEMTFUZXh0dXJlMkQgKnNy
Y1RleHR1cmUsIFVJTlQgc3JjU3VicmVzb3VyY2UsIGNvbnN0IFBhY2tQaXhlbHNQYXJhbXMgJnBh
cmFtcykKK2dsOjpFcnJvciBCdWZmZXIxMTo6cGFja1BpeGVscyhjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICZyZWFkQXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBQYWNrUGl4ZWxzUGFyYW1zICZwYXJhbXMpCiB7Ci0gICAgUGFja1N0b3JhZ2Ug
KnBhY2tTdG9yYWdlID0gZ2V0UGFja1N0b3JhZ2UoKTsKLSAgICBCdWZmZXJTdG9yYWdlICpsYXRl
c3RTdG9yYWdlID0gZ2V0TGF0ZXN0QnVmZmVyU3RvcmFnZSgpOworICAgIFBhY2tTdG9yYWdlICpw
YWNrU3RvcmFnZSA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRQYWNrU3RvcmFn
ZSgpLCBwYWNrU3RvcmFnZSk7CiAKLSAgICBpZiAocGFja1N0b3JhZ2UpCi0gICAgewotICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBwYWNrU3RvcmFnZS0+cGFja1BpeGVscyhzcmNUZXh0dXJlLCBz
cmNTdWJyZXNvdXJjZSwgcGFyYW1zKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHBh
Y2tTdG9yYWdlLT5zZXREYXRhUmV2aXNpb24obGF0ZXN0U3RvcmFnZSA/IGxhdGVzdFN0b3JhZ2Ut
PmdldERhdGFSZXZpc2lvbigpICsgMSA6IDEpOwotICAgIH0KKyAgICBCdWZmZXJTdG9yYWdlICps
YXRlc3RTdG9yYWdlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldExhdGVzdEJ1
ZmZlclN0b3JhZ2UoKSwgbGF0ZXN0U3RvcmFnZSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICBBU1NFUlQocGFja1N0b3JhZ2UpOworICAgIEFOR0xFX1RSWShwYWNr
U3RvcmFnZS0+cGFja1BpeGVscyhyZWFkQXR0YWNobWVudCwgcGFyYW1zKSk7CisgICAgcGFja1N0
b3JhZ2UtPnNldERhdGFSZXZpc2lvbihsYXRlc3RTdG9yYWdlID8gbGF0ZXN0U3RvcmFnZS0+Z2V0
RGF0YVJldmlzaW9uKCkgKyAxIDogMSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UgKkJ1ZmZlcjExOjpnZXRCdWZmZXJTdG9yYWdlKEJ1
ZmZlclVzYWdlIHVzYWdlKQorc2l6ZV90IEJ1ZmZlcjExOjpnZXRUb3RhbENQVUJ1ZmZlck1lbW9y
eUJ5dGVzKCkgY29uc3QKIHsKLSAgICBCdWZmZXJTdG9yYWdlICpuZXdTdG9yYWdlID0gTlVMTDsK
LSAgICBhdXRvIGRpcmVjdEJ1ZmZlckl0ID0gbUJ1ZmZlclN0b3JhZ2VzLmZpbmQodXNhZ2UpOwot
ICAgIGlmIChkaXJlY3RCdWZmZXJJdCAhPSBtQnVmZmVyU3RvcmFnZXMuZW5kKCkpCi0gICAgewot
ICAgICAgICBuZXdTdG9yYWdlID0gZGlyZWN0QnVmZmVySXQtPnNlY29uZDsKLSAgICB9CisgICAg
c2l6ZV90IGFsbG9jYXRpb25TaXplID0gMDsKIAorICAgIEJ1ZmZlclN0b3JhZ2UgKnN0YWdpbmcg
PSBtQnVmZmVyU3RvcmFnZXNbQlVGRkVSX1VTQUdFX1NUQUdJTkddOworICAgIGFsbG9jYXRpb25T
aXplICs9IHN0YWdpbmcgPyBzdGFnaW5nLT5nZXRTaXplKCkgOiAwOworCisgICAgQnVmZmVyU3Rv
cmFnZSAqc3lzTWVtID0gbUJ1ZmZlclN0b3JhZ2VzW0JVRkZFUl9VU0FHRV9TWVNURU1fTUVNT1JZ
XTsKKyAgICBhbGxvY2F0aW9uU2l6ZSArPSBzeXNNZW0gPyBzeXNNZW0tPmdldFNpemUoKSA6IDA7
CisKKyAgICByZXR1cm4gYWxsb2NhdGlvblNpemU7Cit9CisKK2dsOjpFcnJvck9yUmVzdWx0PEJ1
ZmZlcjExOjpCdWZmZXJTdG9yYWdlICo+IEJ1ZmZlcjExOjpnZXRCdWZmZXJTdG9yYWdlKEJ1ZmZl
clVzYWdlIHVzYWdlKQoreworICAgIEFTU0VSVCgwIDw9IHVzYWdlICYmIHVzYWdlIDwgQlVGRkVS
X1VTQUdFX0NPVU5UKTsKKyAgICBCdWZmZXJTdG9yYWdlICombmV3U3RvcmFnZSA9IG1CdWZmZXJT
dG9yYWdlc1t1c2FnZV07CisKICAgICBpZiAoIW5ld1N0b3JhZ2UpCiAgICAgewotICAgICAgICBp
ZiAodXNhZ2UgPT0gQlVGRkVSX1VTQUdFX1BJWEVMX1BBQ0spCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG5ld1N0b3JhZ2UgPSBuZXcgUGFja1N0b3JhZ2UobVJlbmRlcmVyKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIGlmICh1c2FnZSA9PSBCVUZGRVJfVVNBR0VfU1lTVEVNX01FTU9SWSkKLSAg
ICAgICAgewotICAgICAgICAgICAgbmV3U3RvcmFnZSA9IG5ldyBTeXN0ZW1NZW1vcnlTdG9yYWdl
KG1SZW5kZXJlcik7Ci0gICAgICAgICAgICBtSGFzU3lzdGVtTWVtb3J5U3RvcmFnZSA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBidWZm
ZXIgaXMgbm90IGFsbG9jYXRlZCwgY3JlYXRlIGl0Ci0gICAgICAgICAgICBuZXdTdG9yYWdlID0g
bmV3IE5hdGl2ZVN0b3JhZ2UobVJlbmRlcmVyLCB1c2FnZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtQnVmZmVyU3RvcmFnZXMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHVzYWdlLCBuZXdTdG9yYWdl
KSk7CisgICAgICAgIG5ld1N0b3JhZ2UgPSBhbGxvY2F0ZVN0b3JhZ2UodXNhZ2UpOwogICAgIH0K
IAogICAgIC8vIHJlc2l6ZSBidWZmZXIKICAgICBpZiAobmV3U3RvcmFnZS0+Z2V0U2l6ZSgpIDwg
bVNpemUpCiAgICAgewotICAgICAgICBpZiAobmV3U3RvcmFnZS0+cmVzaXplKG1TaXplLCB0cnVl
KS5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE91dCBvZiBtZW1vcnkgZXJy
b3IKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RS
WShuZXdTdG9yYWdlLT5yZXNpemUobVNpemUsIHRydWUpKTsKICAgICB9CiAKLSAgICB1cGRhdGVC
dWZmZXJTdG9yYWdlKG5ld1N0b3JhZ2UsIDAsIG1TaXplKTsKKyAgICBBTkdMRV9UUlkodXBkYXRl
QnVmZmVyU3RvcmFnZShuZXdTdG9yYWdlLCAwLCBtU2l6ZSkpOwogCiAgICAgcmV0dXJuIG5ld1N0
b3JhZ2U7CiB9CiAKLUJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlICpCdWZmZXIxMTo6Z2V0Q29udGFu
dEJ1ZmZlclJhbmdlU3RvcmFnZShHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSkKK0J1
ZmZlcjExOjpCdWZmZXJTdG9yYWdlICpCdWZmZXIxMTo6YWxsb2NhdGVTdG9yYWdlKEJ1ZmZlclVz
YWdlIHVzYWdlKSBjb25zdAogeworICAgIHN3aXRjaCAodXNhZ2UpCisgICAgeworICAgICAgICBj
YXNlIEJVRkZFUl9VU0FHRV9QSVhFTF9QQUNLOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBQYWNr
U3RvcmFnZShtUmVuZGVyZXIpOworICAgICAgICBjYXNlIEJVRkZFUl9VU0FHRV9TWVNURU1fTUVN
T1JZOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBTeXN0ZW1NZW1vcnlTdG9yYWdlKG1SZW5kZXJl
cik7CisgICAgICAgIGNhc2UgQlVGRkVSX1VTQUdFX0VNVUxBVEVEX0lOREVYRURfVkVSVEVYOgor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBFbXVsYXRlZEluZGV4ZWRTdG9yYWdlKG1SZW5kZXJlcik7
CisgICAgICAgIGNhc2UgQlVGRkVSX1VTQUdFX1ZFUlRFWF9PUl9UUkFOU0ZPUk1fRkVFREJBQ0s6
CisgICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZVN0b3JhZ2UobVJlbmRlcmVyLCB1c2FnZSwg
Jm1EaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrcyk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gbmV3IE5hdGl2ZVN0b3JhZ2UobVJlbmRlcmVyLCB1c2FnZSwgbnVsbHB0cik7
CisgICAgfQorfQorCitnbDo6RXJyb3JPclJlc3VsdDxCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSAq
PiBCdWZmZXIxMTo6Z2V0Q29uc3RhbnRCdWZmZXJSYW5nZVN0b3JhZ2UoCisgICAgR0xpbnRwdHIg
b2Zmc2V0LAorICAgIEdMc2l6ZWlwdHIgc2l6ZSkKK3sKICAgICBCdWZmZXJTdG9yYWdlICpuZXdT
dG9yYWdlOwogCiAgICAgewotICAgICAgICAvLyBLZWVwIHRoZSBjYWNoZUVudHJ5IGluIGEgbGlt
aXRlZCBzY29wZSBiZWNhdXNlIGl0IG1heSBiZSBpbnZhbGlkYXRlZCBsYXRlciBpbiB0aGUgY29k
ZSBpZiB3ZSBuZWVkIHRvIHJlY2xhaW0gc29tZSBzcGFjZS4KKyAgICAgICAgLy8gS2VlcCB0aGUg
Y2FjaGVFbnRyeSBpbiBhIGxpbWl0ZWQgc2NvcGUgYmVjYXVzZSBpdCBtYXkgYmUgaW52YWxpZGF0
ZWQgbGF0ZXIgaW4gdGhlIGNvZGUgaWYKKyAgICAgICAgLy8gd2UgbmVlZCB0byByZWNsYWltIHNv
bWUgc3BhY2UuCiAgICAgICAgIENvbnN0YW50QnVmZmVyQ2FjaGVFbnRyeSAqY2FjaGVFbnRyeSA9
ICZtQ29uc3RhbnRCdWZmZXJSYW5nZVN0b3JhZ2VzQ2FjaGVbb2Zmc2V0XTsKIAogICAgICAgICBp
ZiAoIWNhY2hlRW50cnktPnN0b3JhZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNhY2hlRW50
cnktPnN0b3JhZ2UgPSBuZXcgTmF0aXZlU3RvcmFnZShtUmVuZGVyZXIsIEJVRkZFUl9VU0FHRV9V
TklGT1JNKTsKKyAgICAgICAgICAgIGNhY2hlRW50cnktPnN0b3JhZ2UgID0gYWxsb2NhdGVTdG9y
YWdlKEJVRkZFUl9VU0FHRV9VTklGT1JNKTsKICAgICAgICAgICAgIGNhY2hlRW50cnktPmxydUNv
dW50ID0gKyttTWF4Q29uc3RhbnRCdWZmZXJMcnVDb3VudDsKICAgICAgICAgfQogCiAgICAgICAg
IGNhY2hlRW50cnktPmxydUNvdW50ID0gKyttTWF4Q29uc3RhbnRCdWZmZXJMcnVDb3VudDsKLSAg
ICAgICAgbmV3U3RvcmFnZSA9IGNhY2hlRW50cnktPnN0b3JhZ2U7CisgICAgICAgIG5ld1N0b3Jh
Z2UgICAgICAgICAgID0gY2FjaGVFbnRyeS0+c3RvcmFnZTsKICAgICB9CiAKICAgICBpZiAobmV3
U3RvcmFnZS0+Z2V0U2l6ZSgpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplKSkKQEAgLTYzMSwx
MSArNjk4LDEzIEBACiAKICAgICAgICAgd2hpbGUgKG1Db25zdGFudEJ1ZmZlclN0b3JhZ2VBZGRp
dGlvbmFsU2l6ZSArIHNpemVEZWx0YSA+IG1heGltdW1BbGxvd2VkQWRkaXRpb25hbFNpemUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gaXRlciA9IHN0ZDo6bWluX2VsZW1lbnQoc3RkOjpi
ZWdpbihtQ29uc3RhbnRCdWZmZXJSYW5nZVN0b3JhZ2VzQ2FjaGUpLCBzdGQ6OmVuZChtQ29uc3Rh
bnRCdWZmZXJSYW5nZVN0b3JhZ2VzQ2FjaGUpLAotICAgICAgICAgICAgICAgIFtdKGNvbnN0IENv
bnN0YW50QnVmZmVyQ2FjaGU6OnZhbHVlX3R5cGUgJmEsIGNvbnN0IENvbnN0YW50QnVmZmVyQ2Fj
aGU6OnZhbHVlX3R5cGUgJmIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYS5zZWNvbmQubHJ1Q291bnQgPCBiLnNlY29uZC5scnVDb3VudDsKLSAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHN0ZDo6bWluX2VsZW1lbnQoc3Rk
OjpiZWdpbihtQ29uc3RhbnRCdWZmZXJSYW5nZVN0b3JhZ2VzQ2FjaGUpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChtQ29uc3RhbnRCdWZmZXJSYW5n
ZVN0b3JhZ2VzQ2FjaGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbXShjb25zdCBDb25zdGFudEJ1ZmZlckNhY2hlOjp2YWx1ZV90eXBlICZhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25zdGFudEJ1ZmZlckNh
Y2hlOjp2YWx1ZV90eXBlICZiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYS5zZWNvbmQubHJ1Q291bnQgPCBiLnNlY29uZC5scnVDb3VudDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIEFTU0VSVChpdGVy
LT5zZWNvbmQuc3RvcmFnZSAhPSBuZXdTdG9yYWdlKTsKICAgICAgICAgICAgIEFTU0VSVChtQ29u
c3RhbnRCdWZmZXJTdG9yYWdlQWRkaXRpb25hbFNpemUgPj0gaXRlci0+c2Vjb25kLnN0b3JhZ2Ut
PmdldFNpemUoKSk7CkBAIC02NDUsMjcgKzcxNCwyNiBAQAogICAgICAgICAgICAgbUNvbnN0YW50
QnVmZmVyUmFuZ2VTdG9yYWdlc0NhY2hlLmVyYXNlKGl0ZXIpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKG5ld1N0b3JhZ2UtPnJlc2l6ZShzaXplLCBmYWxzZSkuaXNFcnJvcigpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBPdXQgb2YgbWVtb3J5IGVycm9yCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotCisgICAgICAgIEFOR0xFX1RSWShuZXdTdG9yYWdlLT5y
ZXNpemUoc2l6ZSwgZmFsc2UpKTsKICAgICAgICAgbUNvbnN0YW50QnVmZmVyU3RvcmFnZUFkZGl0
aW9uYWxTaXplICs9IHNpemVEZWx0YTsKIAotICAgICAgICAvLyBXZSBkb24ndCBjb3B5IHRoZSBv
bGQgZGF0YSB3aGVuIHJlc2l6aW5nIHRoZSBjb25zdGFudCBidWZmZXIgYmVjYXVzZSB0aGUgZGF0
YSBtYXkgYmUgb3V0LW9mLWRhdGUKLSAgICAgICAgLy8gdGhlcmVmb3JlIHdlIHJlc2V0IHRoZSBk
YXRhIHJldmlzaW9uIGFuZCBsZXQgdXBkYXRlQnVmZmVyU3RvcmFnZSgpIGhhbmRsZSB0aGUgY29w
eS4KKyAgICAgICAgLy8gV2UgZG9uJ3QgY29weSB0aGUgb2xkIGRhdGEgd2hlbiByZXNpemluZyB0
aGUgY29uc3RhbnQgYnVmZmVyIGJlY2F1c2UgdGhlIGRhdGEgbWF5IGJlCisgICAgICAgIC8vIG91
dC1vZi1kYXRlIHRoZXJlZm9yZSB3ZSByZXNldCB0aGUgZGF0YSByZXZpc2lvbiBhbmQgbGV0IHVw
ZGF0ZUJ1ZmZlclN0b3JhZ2UoKSBoYW5kbGUgdGhlCisgICAgICAgIC8vIGNvcHkuCiAgICAgICAg
IG5ld1N0b3JhZ2UtPnNldERhdGFSZXZpc2lvbigwKTsKICAgICB9CiAKLSAgICB1cGRhdGVCdWZm
ZXJTdG9yYWdlKG5ld1N0b3JhZ2UsIG9mZnNldCwgc2l6ZSk7Ci0KKyAgICBBTkdMRV9UUlkodXBk
YXRlQnVmZmVyU3RvcmFnZShuZXdTdG9yYWdlLCBvZmZzZXQsIHNpemUpKTsKICAgICByZXR1cm4g
bmV3U3RvcmFnZTsKIH0KIAotdm9pZCBCdWZmZXIxMTo6dXBkYXRlQnVmZmVyU3RvcmFnZShCdWZm
ZXJTdG9yYWdlICpzdG9yYWdlLCBzaXplX3Qgc291cmNlT2Zmc2V0LCBzaXplX3Qgc3RvcmFnZVNp
emUpCitnbDo6RXJyb3IgQnVmZmVyMTE6OnVwZGF0ZUJ1ZmZlclN0b3JhZ2UoQnVmZmVyU3RvcmFn
ZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc291cmNlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzdG9yYWdlU2l6ZSkKIHsKLSAgICBCdWZmZXJTdG9yYWdlICpsYXRlc3RCdWZmZXIg
PSBnZXRMYXRlc3RCdWZmZXJTdG9yYWdlKCk7CisgICAgQnVmZmVyU3RvcmFnZSAqbGF0ZXN0QnVm
ZmVyID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldExhdGVzdEJ1ZmZlclN0b3Jh
Z2UoKSwgbGF0ZXN0QnVmZmVyKTsKKwogICAgIGlmIChsYXRlc3RCdWZmZXIgJiYgbGF0ZXN0QnVm
ZmVyLT5nZXREYXRhUmV2aXNpb24oKSA+IHN0b3JhZ2UtPmdldERhdGFSZXZpc2lvbigpKQogICAg
IHsKICAgICAgICAgLy8gQ29weSB0aHJvdWdoIGEgc3RhZ2luZyBidWZmZXIgaWYgd2UncmUgY29w
eWluZyBmcm9tIG9yIHRvIGEgbm9uLXN0YWdpbmcsIG1hcHBhYmxlCkBAIC02NzUsMzYgKzc0Myw0
MyBAQAogICAgICAgICAgICAgc3RvcmFnZS0+Z2V0VXNhZ2UoKSAhPSBCVUZGRVJfVVNBR0VfU1RB
R0lORyAmJgogICAgICAgICAgICAgKCFsYXRlc3RCdWZmZXItPmlzTWFwcGFibGUoKSB8fCAhc3Rv
cmFnZS0+aXNNYXBwYWJsZSgpKSkKICAgICAgICAgewotICAgICAgICAgICAgTmF0aXZlU3RvcmFn
ZSAqc3RhZ2luZ0J1ZmZlciA9IGdldFN0YWdpbmdTdG9yYWdlKCk7CisgICAgICAgICAgICBOYXRp
dmVTdG9yYWdlICpzdGFnaW5nQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEFOR0xFX1RS
WV9SRVNVTFQoZ2V0U3RhZ2luZ1N0b3JhZ2UoKSwgc3RhZ2luZ0J1ZmZlcik7CiAKLSAgICAgICAg
ICAgIHN0YWdpbmdCdWZmZXItPmNvcHlGcm9tU3RvcmFnZShsYXRlc3RCdWZmZXIsIDAsIGxhdGVz
dEJ1ZmZlci0+Z2V0U2l6ZSgpLCAwKTsKKyAgICAgICAgICAgIENvcHlSZXN1bHQgY29weVJlc3Vs
dCA9IENvcHlSZXN1bHQ6Ok5PVF9SRUNSRUFURUQ7CisgICAgICAgICAgICBBTkdMRV9UUllfUkVT
VUxUKAorICAgICAgICAgICAgICAgIHN0YWdpbmdCdWZmZXItPmNvcHlGcm9tU3RvcmFnZShsYXRl
c3RCdWZmZXIsIDAsIGxhdGVzdEJ1ZmZlci0+Z2V0U2l6ZSgpLCAwKSwKKyAgICAgICAgICAgICAg
ICBjb3B5UmVzdWx0KTsKICAgICAgICAgICAgIHN0YWdpbmdCdWZmZXItPnNldERhdGFSZXZpc2lv
bihsYXRlc3RCdWZmZXItPmdldERhdGFSZXZpc2lvbigpKTsKIAogICAgICAgICAgICAgbGF0ZXN0
QnVmZmVyID0gc3RhZ2luZ0J1ZmZlcjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIGlmIGNvcHlG
cm9tU3RvcmFnZSByZXR1cm5zIHRydWUsIHRoZSBEM0QgYnVmZmVyIGhhcyBiZWVuIHJlY3JlYXRl
ZAotICAgICAgICAvLyBhbmQgd2Ugc2hvdWxkIHVwZGF0ZSBvdXIgc2VyaWFsCi0gICAgICAgIGlm
IChzdG9yYWdlLT5jb3B5RnJvbVN0b3JhZ2UobGF0ZXN0QnVmZmVyLCBzb3VyY2VPZmZzZXQsIHN0
b3JhZ2VTaXplLCAwKSkKKyAgICAgICAgQ29weVJlc3VsdCBjb3B5UmVzdWx0ID0gQ29weVJlc3Vs
dDo6Tk9UX1JFQ1JFQVRFRDsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChzdG9yYWdlLT5jb3B5
RnJvbVN0b3JhZ2UobGF0ZXN0QnVmZmVyLCBzb3VyY2VPZmZzZXQsIHN0b3JhZ2VTaXplLCAwKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5UmVzdWx0KTsKKyAgICAgICAgLy8gSWYgdGhl
IEQzRCBidWZmZXIgaGFzIGJlZW4gcmVjcmVhdGVkLCB3ZSBzaG91bGQgdXBkYXRlIG91ciBzZXJp
YWwuCisgICAgICAgIGlmIChjb3B5UmVzdWx0ID09IENvcHlSZXN1bHQ6OlJFQ1JFQVRFRCkKICAg
ICAgICAgewogICAgICAgICAgICAgdXBkYXRlU2VyaWFsKCk7CiAgICAgICAgIH0KICAgICAgICAg
c3RvcmFnZS0+c2V0RGF0YVJldmlzaW9uKGxhdGVzdEJ1ZmZlci0+Z2V0RGF0YVJldmlzaW9uKCkp
OwogICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1CdWZmZXIxMTo6QnVm
ZmVyU3RvcmFnZSAqQnVmZmVyMTE6OmdldExhdGVzdEJ1ZmZlclN0b3JhZ2UoKSBjb25zdAorZ2w6
OkVycm9yT3JSZXN1bHQ8QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UgKj4gQnVmZmVyMTE6OmdldExh
dGVzdEJ1ZmZlclN0b3JhZ2UoKSBjb25zdAogewogICAgIC8vIEV2ZW4gdGhvdWdoIHdlIGl0ZXJh
dGUgb3ZlciBhbGwgdGhlIGRpcmVjdCBidWZmZXJzLCBpdCBpcyBleHBlY3RlZCB0aGF0IG9ubHkK
ICAgICAvLyAxIG9yIDIgd2lsbCBiZSBwcmVzZW50LgotICAgIEJ1ZmZlclN0b3JhZ2UgKmxhdGVz
dFN0b3JhZ2UgPSBOVUxMOworICAgIEJ1ZmZlclN0b3JhZ2UgKmxhdGVzdFN0b3JhZ2UgPSBudWxs
cHRyOwogICAgIERhdGFSZXZpc2lvbiBsYXRlc3RSZXZpc2lvbiA9IDA7Ci0gICAgZm9yIChhdXRv
IGl0ID0gbUJ1ZmZlclN0b3JhZ2VzLmJlZ2luKCk7IGl0ICE9IG1CdWZmZXJTdG9yYWdlcy5lbmQo
KTsgaXQrKykKKyAgICBmb3IgKGF1dG8gJnN0b3JhZ2UgOiBtQnVmZmVyU3RvcmFnZXMpCiAgICAg
ewotICAgICAgICBCdWZmZXJTdG9yYWdlICpzdG9yYWdlID0gaXQtPnNlY29uZDsKLSAgICAgICAg
aWYgKCFsYXRlc3RTdG9yYWdlIHx8IHN0b3JhZ2UtPmdldERhdGFSZXZpc2lvbigpID4gbGF0ZXN0
UmV2aXNpb24pCisgICAgICAgIGlmIChzdG9yYWdlICYmICghbGF0ZXN0U3RvcmFnZSB8fCBzdG9y
YWdlLT5nZXREYXRhUmV2aXNpb24oKSA+IGxhdGVzdFJldmlzaW9uKSkKICAgICAgICAgewotICAg
ICAgICAgICAgbGF0ZXN0U3RvcmFnZSA9IHN0b3JhZ2U7CisgICAgICAgICAgICBsYXRlc3RTdG9y
YWdlICA9IHN0b3JhZ2U7CiAgICAgICAgICAgICBsYXRlc3RSZXZpc2lvbiA9IHN0b3JhZ2UtPmdl
dERhdGFSZXZpc2lvbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzEyLDM5ICs3ODcsMjMgQEAK
ICAgICAvLyByZXNpemUgYnVmZmVyCiAgICAgaWYgKGxhdGVzdFN0b3JhZ2UgJiYgbGF0ZXN0U3Rv
cmFnZS0+Z2V0U2l6ZSgpIDwgbVNpemUpCiAgICAgewotICAgICAgICBpZiAobGF0ZXN0U3RvcmFn
ZS0+cmVzaXplKG1TaXplLCB0cnVlKS5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIE91dCBvZiBtZW1vcnkgZXJyb3IKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAg
ICB9CisgICAgICAgIEFOR0xFX1RSWShsYXRlc3RTdG9yYWdlLT5yZXNpemUobVNpemUsIHRydWUp
KTsKICAgICB9CiAKICAgICByZXR1cm4gbGF0ZXN0U3RvcmFnZTsKIH0KIAotQnVmZmVyMTE6Ok5h
dGl2ZVN0b3JhZ2UgKkJ1ZmZlcjExOjpnZXRTdGFnaW5nU3RvcmFnZSgpCitnbDo6RXJyb3JPclJl
c3VsdDxCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZSAqPiBCdWZmZXIxMTo6Z2V0U3RhZ2luZ1N0b3Jh
Z2UoKQogewotICAgIEJ1ZmZlclN0b3JhZ2UgKnN0YWdpbmdTdG9yYWdlID0gZ2V0QnVmZmVyU3Rv
cmFnZShCVUZGRVJfVVNBR0VfU1RBR0lORyk7Ci0KLSAgICBpZiAoIXN0YWdpbmdTdG9yYWdlKQot
ICAgIHsKLSAgICAgICAgLy8gT3V0LW9mLW1lbW9yeQotICAgICAgICByZXR1cm4gTlVMTDsKLSAg
ICB9Ci0KKyAgICBCdWZmZXJTdG9yYWdlICpzdGFnaW5nU3RvcmFnZSA9IG51bGxwdHI7CisgICAg
QU5HTEVfVFJZX1JFU1VMVChnZXRCdWZmZXJTdG9yYWdlKEJVRkZFUl9VU0FHRV9TVEFHSU5HKSwg
c3RhZ2luZ1N0b3JhZ2UpOwogICAgIHJldHVybiBHZXRBczxOYXRpdmVTdG9yYWdlPihzdGFnaW5n
U3RvcmFnZSk7CiB9CiAKLUJ1ZmZlcjExOjpQYWNrU3RvcmFnZSAqQnVmZmVyMTE6OmdldFBhY2tT
dG9yYWdlKCkKK2dsOjpFcnJvck9yUmVzdWx0PEJ1ZmZlcjExOjpQYWNrU3RvcmFnZSAqPiBCdWZm
ZXIxMTo6Z2V0UGFja1N0b3JhZ2UoKQogewotICAgIEJ1ZmZlclN0b3JhZ2UgKnBhY2tTdG9yYWdl
ID0gZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0VfUElYRUxfUEFDSyk7Ci0KLSAgICBpZiAo
IXBhY2tTdG9yYWdlKQotICAgIHsKLSAgICAgICAgLy8gT3V0LW9mLW1lbW9yeQotICAgICAgICBy
ZXR1cm4gTlVMTDsKLSAgICB9Ci0KKyAgICBCdWZmZXJTdG9yYWdlICpwYWNrU3RvcmFnZSA9IG51
bGxwdHI7CisgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRCdWZmZXJTdG9yYWdlKEJVRkZFUl9VU0FH
RV9QSVhFTF9QQUNLKSwgcGFja1N0b3JhZ2UpOwogICAgIHJldHVybiBHZXRBczxQYWNrU3RvcmFn
ZT4ocGFja1N0b3JhZ2UpOwogfQogCkBAIC03NTIsMTUgKzgxMSw0NyBAQAogewogICAgIC8vIERv
IG5vdCBzdXBwb3J0IGRpcmVjdCBidWZmZXJzIGZvciBkeW5hbWljIGRhdGEuIFRoZSBzdHJlYW1p
bmcgYnVmZmVyCiAgICAgLy8gb2ZmZXJzIGJldHRlciBwZXJmb3JtYW5jZSBmb3IgZGF0YSB3aGlj
aCBjaGFuZ2VzIGV2ZXJ5IGZyYW1lLgotICAgIC8vIENoZWNrIGZvciBhYnNlbmNlIG9mIHN0YXRp
YyBidWZmZXIgaW50ZXJmYWNlcyB0byBkZXRlY3QgZHluYW1pYyBkYXRhLgotICAgIHJldHVybiAo
bVN0YXRpY1ZlcnRleEJ1ZmZlciAmJiBtU3RhdGljSW5kZXhCdWZmZXIpOworICAgIHJldHVybiAo
bVVzYWdlID09IEQzREJ1ZmZlclVzYWdlOjpTVEFUSUMpOwogfQogCit2b2lkIEJ1ZmZlcjExOjpp
bml0aWFsaXplU3RhdGljRGF0YSgpCit7CisgICAgQnVmZmVyRDNEOjppbml0aWFsaXplU3RhdGlj
RGF0YSgpOworCisgICAgLy8gTm90aWZ5IHdoZW4gc3RhdGljIGRhdGEgY2hhbmdlcy4KKyAgICBt
U3RhdGljQnVmZmVyRGlydHlDYWxsYmFja3Muc2lnbmFsKCk7Cit9CisKK3ZvaWQgQnVmZmVyMTE6
OmludmFsaWRhdGVTdGF0aWNEYXRhKCkKK3sKKyAgICBCdWZmZXJEM0Q6OmludmFsaWRhdGVTdGF0
aWNEYXRhKCk7CisKKyAgICAvLyBOb3RpZnkgd2hlbiBzdGF0aWMgZGF0YSBjaGFuZ2VzLgorICAg
IG1TdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrcy5zaWduYWwoKTsKK30KKwordm9pZCBCdWZmZXIx
MTo6YWRkU3RhdGljQnVmZmVyRGlydHlDYWxsYmFjayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFj
ayAqY2FsbGJhY2spCit7CisgICAgbVN0YXRpY0J1ZmZlckRpcnR5Q2FsbGJhY2tzLmFkZChjYWxs
YmFjayk7Cit9CisKK3ZvaWQgQnVmZmVyMTE6OnJlbW92ZVN0YXRpY0J1ZmZlckRpcnR5Q2FsbGJh
Y2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKQoreworICAgIG1TdGF0aWNC
dWZmZXJEaXJ0eUNhbGxiYWNrcy5yZW1vdmUoY2FsbGJhY2spOworfQorCit2b2lkIEJ1ZmZlcjEx
OjphZGREaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNr
ICpjYWxsYmFjaykKK3sKKyAgICBtRGlyZWN0QnVmZmVyRGlydHlDYWxsYmFja3MuYWRkKGNhbGxi
YWNrKTsKK30KKwordm9pZCBCdWZmZXIxMTo6cmVtb3ZlRGlyZWN0QnVmZmVyRGlydHlDYWxsYmFj
ayhjb25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAqY2FsbGJhY2spCit7CisgICAgbURpcmVjdEJ1
ZmZlckRpcnR5Q2FsbGJhY2tzLnJlbW92ZShjYWxsYmFjayk7Cit9CisKIEJ1ZmZlcjExOjpCdWZm
ZXJTdG9yYWdlOjpCdWZmZXJTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBCdWZmZXJVc2Fn
ZSB1c2FnZSkKLSAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAgICBtVXNhZ2UodXNhZ2Up
LAotICAgICAgbVJldmlzaW9uKDApLAotICAgICAgbUJ1ZmZlclNpemUoMCkKKyAgICA6IG1SZW5k
ZXJlcihyZW5kZXJlciksIG1SZXZpc2lvbigwKSwgbVVzYWdlKHVzYWdlKSwgbUJ1ZmZlclNpemUo
MCkKIHsKIH0KIApAQCAtNzY4LDIyICs4NTksMjAgQEAKIHsKICAgICBBU1NFUlQoaXNNYXBwYWJs
ZSgpKTsKIAotICAgIHVpbnQ4X3QgKndyaXRlUG9pbnRlciA9IG1hcChvZmZzZXQsIHNpemUsIEdM
X01BUF9XUklURV9CSVQpOwotICAgIGlmICghd3JpdGVQb2ludGVyKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5h
bCBidWZmZXIuIik7Ci0gICAgfQorICAgIHVpbnQ4X3QgKndyaXRlUG9pbnRlciA9IG51bGxwdHI7
CisgICAgQU5HTEVfVFJZKG1hcChvZmZzZXQsIHNpemUsIEdMX01BUF9XUklURV9CSVQsICZ3cml0
ZVBvaW50ZXIpKTsKIAogICAgIG1lbWNweSh3cml0ZVBvaW50ZXIsIGRhdGEsIHNpemUpOwogCiAg
ICAgdW5tYXAoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1CdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6TmF0aXZl
U3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwgQnVmZmVyVXNhZ2UgdXNhZ2UpCi0gICAgOiBC
dWZmZXJTdG9yYWdlKHJlbmRlcmVyLCB1c2FnZSksCi0gICAgICBtTmF0aXZlU3RvcmFnZShOVUxM
KQorQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6Ok5hdGl2ZVN0b3JhZ2UoUmVuZGVyZXIxMSAqcmVu
ZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJVc2Fn
ZSB1c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5v
dGlmaWNhdGlvblNldCAqb25TdG9yYWdlQ2hhbmdlZCkKKyAgICA6IEJ1ZmZlclN0b3JhZ2UocmVu
ZGVyZXIsIHVzYWdlKSwgbU5hdGl2ZVN0b3JhZ2UobnVsbHB0ciksIG1PblN0b3JhZ2VDaGFuZ2Vk
KG9uU3RvcmFnZUNoYW5nZWQpCiB7CiB9CiAKQEAgLTc5MywxMyArODgyLDE1IEBACiB9CiAKIC8v
IFJldHVybnMgdHJ1ZSBpZiBpdCByZWNyZWF0ZXMgdGhlIGRpcmVjdCBidWZmZXIKLWJvb2wgQnVm
ZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6OmNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9yYWdlICpzb3Vy
Y2UsIHNpemVfdCBzb3VyY2VPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLCBzaXplX3QgZGVzdE9mZnNldCkKK2dsOjpFcnJv
ck9yUmVzdWx0PENvcHlSZXN1bHQ+IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpjb3B5RnJvbVN0
b3JhZ2UoQnVmZmVyU3RvcmFnZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNl
T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRlc3RPZmZzZXQpCiB7CiAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwogCiAgICAgc2l6ZV90IHJlcXVpcmVkU2l6ZSA9IGRl
c3RPZmZzZXQgKyBzaXplOwotICAgIGJvb2wgY3JlYXRlQnVmZmVyID0gIW1OYXRpdmVTdG9yYWdl
IHx8IG1CdWZmZXJTaXplIDwgcmVxdWlyZWRTaXplOworICAgIGJvb2wgY3JlYXRlQnVmZmVyICAg
PSAhbU5hdGl2ZVN0b3JhZ2UgfHwgbUJ1ZmZlclNpemUgPCByZXF1aXJlZFNpemU7CiAKICAgICAv
LyAoUmUpaW5pdGlhbGl6ZSBEM0QgYnVmZmVyIGlmIG5lZWRlZAogICAgIGlmIChjcmVhdGVCdWZm
ZXIpCkBAIC04MTMsMTIgKzkwNCwxOSBAQAogICAgIHsKICAgICAgICAgQVNTRVJUKHNvdXJjZS0+
aXNNYXBwYWJsZSgpKTsKIAotICAgICAgICB1aW50OF90ICpzb3VyY2VQb2ludGVyID0gc291cmNl
LT5tYXAoc291cmNlT2Zmc2V0LCBzaXplLCBHTF9NQVBfUkVBRF9CSVQpOworICAgICAgICB1aW50
OF90ICpzb3VyY2VQb2ludGVyID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZKHNvdXJjZS0+
bWFwKHNvdXJjZU9mZnNldCwgc2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291cmNlUG9pbnRlcikp
OwogCiAgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKICAg
ICAgICAgSFJFU1VMVCBociA9IGNvbnRleHQtPk1hcChtTmF0aXZlU3RvcmFnZSwgMCwgRDNEMTFf
TUFQX1dSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9O
X1ZBUklBQkxFKGhyKTsKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikpOworICAgICAgICBp
ZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAgICAgc291cmNlLT51bm1hcCgpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcigKKyAgICAgICAgICAgICAgICBHTF9PVVRfT0Zf
TUVNT1JZLAorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIG5hdGl2ZSBzdG9yYWdlIGlu
IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpjb3B5RnJvbVN0b3JhZ2UiKTsKKyAgICAgICAgfQog
CiAgICAgICAgIHVpbnQ4X3QgKmRlc3RQb2ludGVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCAqPiht
YXBwZWRSZXNvdXJjZS5wRGF0YSkgKyBkZXN0T2Zmc2V0OwogCkBAIC04MzIsMzUgKzkzMCwzNyBA
QAogICAgIGVsc2UKICAgICB7CiAgICAgICAgIEQzRDExX0JPWCBzcmNCb3g7Ci0gICAgICAgIHNy
Y0JveC5sZWZ0ID0gc291cmNlT2Zmc2V0OwotICAgICAgICBzcmNCb3gucmlnaHQgPSBzb3VyY2VP
ZmZzZXQgKyBzaXplOwotICAgICAgICBzcmNCb3gudG9wID0gMDsKKyAgICAgICAgc3JjQm94Lmxl
ZnQgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlT2Zmc2V0KTsKKyAgICAgICAg
c3JjQm94LnJpZ2h0ICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc291cmNlT2Zmc2V0ICsg
c2l6ZSk7CisgICAgICAgIHNyY0JveC50b3AgICAgPSAwOwogICAgICAgICBzcmNCb3guYm90dG9t
ID0gMTsKLSAgICAgICAgc3JjQm94LmZyb250ID0gMDsKLSAgICAgICAgc3JjQm94LmJhY2sgPSAx
OworICAgICAgICBzcmNCb3guZnJvbnQgID0gMDsKKyAgICAgICAgc3JjQm94LmJhY2sgICA9IDE7
CiAKICAgICAgICAgSUQzRDExQnVmZmVyICpzb3VyY2VCdWZmZXIgPSBHZXRBczxOYXRpdmVTdG9y
YWdlPihzb3VyY2UpLT5nZXROYXRpdmVTdG9yYWdlKCk7CiAKLSAgICAgICAgY29udGV4dC0+Q29w
eVN1YnJlc291cmNlUmVnaW9uKG1OYXRpdmVTdG9yYWdlLCAwLCBkZXN0T2Zmc2V0LCAwLCAwLCBz
b3VyY2VCdWZmZXIsIDAsICZzcmNCb3gpOworICAgICAgICBjb250ZXh0LT5Db3B5U3VicmVzb3Vy
Y2VSZWdpb24obU5hdGl2ZVN0b3JhZ2UsIDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZGVz
dE9mZnNldCksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBz
b3VyY2VCdWZmZXIsIDAsICZzcmNCb3gpOwogICAgIH0KIAotICAgIHJldHVybiBjcmVhdGVCdWZm
ZXI7CisgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlciA/IENvcHlSZXN1bHQ6OlJFQ1JFQVRFRCA6IENv
cHlSZXN1bHQ6Ok5PVF9SRUNSRUFURUQ7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXIxMTo6TmF0aXZl
U3RvcmFnZTo6cmVzaXplKHNpemVfdCBzaXplLCBib29sIHByZXNlcnZlRGF0YSkKIHsKLSAgICBJ
RDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQzRDEx
RGV2aWNlICpkZXZpY2UgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAgICAgSUQz
RDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgp
OwogCiAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVzYzsKLSAgICBmaWxsQnVmZmVyRGVz
YygmYnVmZmVyRGVzYywgbVJlbmRlcmVyLCBtVXNhZ2UsIHNpemUpOworICAgIGZpbGxCdWZmZXJE
ZXNjKCZidWZmZXJEZXNjLCBtUmVuZGVyZXIsIG1Vc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihzaXplKSk7CiAKICAgICBJRDNEMTFCdWZmZXIgKm5ld0J1ZmZlcjsKLSAgICBIUkVTVUxU
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJEZXNjLCBOVUxMLCAmbmV3QnVm
ZmVyKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJE
ZXNjLCBudWxscHRyLCAmbmV3QnVmZmVyKTsKIAogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBjcmVhdGUgaW50ZXJuYWwgYnVmZmVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBp
bnRlcm5hbCBidWZmZXIsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCk7CiAgICAgfQogCiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShuZXdCdWZmZXIsICJC
dWZmZXIxMTo6TmF0aXZlU3RvcmFnZSIpOwpAQCAtODcxLDEyICs5NzEsMTIgQEAKICAgICAgICAg
QVNTRVJUKG1CdWZmZXJTaXplIDw9IHNpemUpOwogCiAgICAgICAgIEQzRDExX0JPWCBzcmNCb3g7
Ci0gICAgICAgIHNyY0JveC5sZWZ0ID0gMDsKLSAgICAgICAgc3JjQm94LnJpZ2h0ID0gbUJ1ZmZl
clNpemU7Ci0gICAgICAgIHNyY0JveC50b3AgPSAwOworICAgICAgICBzcmNCb3gubGVmdCAgID0g
MDsKKyAgICAgICAgc3JjQm94LnJpZ2h0ICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obUJ1
ZmZlclNpemUpOworICAgICAgICBzcmNCb3gudG9wICAgID0gMDsKICAgICAgICAgc3JjQm94LmJv
dHRvbSA9IDE7Ci0gICAgICAgIHNyY0JveC5mcm9udCA9IDA7Ci0gICAgICAgIHNyY0JveC5iYWNr
ID0gMTsKKyAgICAgICAgc3JjQm94LmZyb250ICA9IDA7CisgICAgICAgIHNyY0JveC5iYWNrICAg
PSAxOwogCiAgICAgICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihuZXdCdWZmZXIs
IDAsIDAsIDAsIDAsIG1OYXRpdmVTdG9yYWdlLCAwLCAmc3JjQm94KTsKICAgICB9CkBAIC04ODcs
NzggKzk4Nyw5NiBAQAogCiAgICAgbUJ1ZmZlclNpemUgPSBidWZmZXJEZXNjLkJ5dGVXaWR0aDsK
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIC8vIE5vdGlmeSB0aGF0
IHRoZSBzdG9yYWdlIGhhcyBjaGFuZ2VkLgorICAgIGlmIChtT25TdG9yYWdlQ2hhbmdlZCkKKyAg
ICB7CisgICAgICAgIG1PblN0b3JhZ2VDaGFuZ2VkLT5zaWduYWwoKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotdm9pZCBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6
ZmlsbEJ1ZmZlckRlc2MoRDNEMTFfQlVGRkVSX0RFU0MqIGJ1ZmZlckRlc2MsIFJlbmRlcmVyMTEg
KnJlbmRlcmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZSwgdW5zaWduZWQgaW50IGJ1ZmZlclNpemUpCit2b2lk
IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpmaWxsQnVmZmVyRGVzYyhEM0QxMV9CVUZGRVJfREVT
QyAqYnVmZmVyRGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlbmRlcmVyMTEgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVmZmVyVXNhZ2UgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSkKIHsKLSAgICBi
dWZmZXJEZXNjLT5CeXRlV2lkdGggPSBidWZmZXJTaXplOwotICAgIGJ1ZmZlckRlc2MtPk1pc2NG
bGFncyA9IDA7CisgICAgYnVmZmVyRGVzYy0+Qnl0ZVdpZHRoICAgICAgICAgICA9IGJ1ZmZlclNp
emU7CisgICAgYnVmZmVyRGVzYy0+TWlzY0ZsYWdzICAgICAgICAgICA9IDA7CiAgICAgYnVmZmVy
RGVzYy0+U3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CiAKICAgICBzd2l0Y2ggKHVzYWdlKQogICAg
IHsKLSAgICAgIGNhc2UgQlVGRkVSX1VTQUdFX1NUQUdJTkc6Ci0gICAgICAgIGJ1ZmZlckRlc2Mt
PlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKLSAgICAgICAgYnVmZmVyRGVzYy0+QmluZEZs
YWdzID0gMDsKLSAgICAgICAgYnVmZmVyRGVzYy0+Q1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVf
QUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBCVUZGRVJfVVNBR0VfU1RBR0lORzoKKyAgICAgICAgICAgIGJ1ZmZlckRlc2Mt
PlVzYWdlICAgICAgICAgID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICAgICAgICAgIGJ1ZmZl
ckRlc2MtPkJpbmRGbGFncyAgICAgID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkNQVUFj
Y2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEIHwgRDNEMTFfQ1BVX0FDQ0VTU19XUklU
RTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEJVRkZFUl9VU0FHRV9WRVJURVhf
T1JfVFJBTlNGT1JNX0ZFRURCQUNLOgotICAgICAgICBidWZmZXJEZXNjLT5Vc2FnZSA9IEQzRDEx
X1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGJ1ZmZlckRlc2MtPkJpbmRGbGFncyA9IEQzRDExX0JJ
TkRfVkVSVEVYX0JVRkZFUjsKKyAgICAgICAgY2FzZSBCVUZGRVJfVVNBR0VfVkVSVEVYX09SX1RS
QU5TRk9STV9GRUVEQkFDSzoKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPlVzYWdlICAgICA9IEQz
RDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5CaW5kRmxhZ3MgPSBE
M0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CiAKLSAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0VTM0Nh
cGFibGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgYnVmZmVyRGVzYy0+QmluZEZsYWdzIHw9
IEQzRDExX0JJTkRfU1RSRUFNX09VVFBVVDsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJl
bmRlcmVyLT5pc0VTM0NhcGFibGUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBi
dWZmZXJEZXNjLT5CaW5kRmxhZ3MgfD0gRDNEMTFfQklORF9TVFJFQU1fT1VUUFVUOworICAgICAg
ICAgICAgfQogCi0gICAgICAgIGJ1ZmZlckRlc2MtPkNQVUFjY2Vzc0ZsYWdzID0gMDsKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5DUFVBY2Nlc3NGbGFncyA9IDA7Cisg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBCVUZGRVJfVVNBR0VfSU5ERVg6Ci0gICAg
ICAgIGJ1ZmZlckRlc2MtPlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICAgICAgYnVm
ZmVyRGVzYy0+QmluZEZsYWdzID0gRDNEMTFfQklORF9JTkRFWF9CVUZGRVI7Ci0gICAgICAgIGJ1
ZmZlckRlc2MtPkNQVUFjY2Vzc0ZsYWdzID0gMDsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQlVGRkVSX1VTQUdFX0lOREVYOgorICAgICAgICAgICAgYnVmZmVyRGVzYy0+VXNhZ2UgICAg
ICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICAgICAgYnVmZmVyRGVzYy0+Qmlu
ZEZsYWdzICAgICAgPSBEM0QxMV9CSU5EX0lOREVYX0JVRkZFUjsKKyAgICAgICAgICAgIGJ1ZmZl
ckRlc2MtPkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBj
YXNlIEJVRkZFUl9VU0FHRV9QSVhFTF9VTlBBQ0s6Ci0gICAgICAgIGJ1ZmZlckRlc2MtPlVzYWdl
ID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICAgICAgYnVmZmVyRGVzYy0+QmluZEZsYWdzID0g
RDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0U7Ci0gICAgICAgIGJ1ZmZlckRlc2MtPkNQVUFjY2Vz
c0ZsYWdzID0gMDsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQlVGRkVSX1VTQUdFX1BJ
WEVMX1VOUEFDSzoKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPlVzYWdlICAgICAgICAgID0gRDNE
MTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkJpbmRGbGFncyAgICAg
ID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0U7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5D
UFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBCVUZG
RVJfVVNBR0VfVU5JRk9STToKLSAgICAgICAgYnVmZmVyRGVzYy0+VXNhZ2UgPSBEM0QxMV9VU0FH
RV9EWU5BTUlDOwotICAgICAgICBidWZmZXJEZXNjLT5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX0NP
TlNUQU5UX0JVRkZFUjsKLSAgICAgICAgYnVmZmVyRGVzYy0+Q1BVQWNjZXNzRmxhZ3MgPSBEM0Qx
MV9DUFVfQUNDRVNTX1dSSVRFOworICAgICAgICBjYXNlIEJVRkZFUl9VU0FHRV9VTklGT1JNOgor
ICAgICAgICAgICAgYnVmZmVyRGVzYy0+VXNhZ2UgICAgICAgICAgPSBEM0QxMV9VU0FHRV9EWU5B
TUlDOworICAgICAgICAgICAgYnVmZmVyRGVzYy0+QmluZEZsYWdzICAgICAgPSBEM0QxMV9CSU5E
X0NPTlNUQU5UX0JVRkZFUjsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkNQVUFjY2Vzc0ZsYWdz
ID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKIAotICAgICAgICAvLyBDb25zdGFudCBidWZmZXJz
IG11c3QgYmUgb2YgYSBsaW1pdGVkIHNpemUsIGFuZCBhbGlnbmVkIHRvIDE2IGJ5dGUgYm91bmRh
cmllcwotICAgICAgICAvLyBGb3Igb3VyIHB1cnBvc2VzIHdlIGlnbm9yZSBhbnkgYnVmZmVyIGRh
dGEgcGFzdCB0aGUgbWF4aW11bSBjb25zdGFudCBidWZmZXIgc2l6ZQotICAgICAgICBidWZmZXJE
ZXNjLT5CeXRlV2lkdGggPSByb3VuZFVwKGJ1ZmZlckRlc2MtPkJ5dGVXaWR0aCwgMTZ1KTsKLSAg
ICAgICAgYnVmZmVyRGVzYy0+Qnl0ZVdpZHRoID0gc3RkOjptaW48VUlOVD4oYnVmZmVyRGVzYy0+
Qnl0ZVdpZHRoLCBzdGF0aWNfY2FzdDxVSU5UPihyZW5kZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCku
bWF4VW5pZm9ybUJsb2NrU2l6ZSkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIENv
bnN0YW50IGJ1ZmZlcnMgbXVzdCBiZSBvZiBhIGxpbWl0ZWQgc2l6ZSwgYW5kIGFsaWduZWQgdG8g
MTYgYnl0ZSBib3VuZGFyaWVzCisgICAgICAgICAgICAvLyBGb3Igb3VyIHB1cnBvc2VzIHdlIGln
bm9yZSBhbnkgYnVmZmVyIGRhdGEgcGFzdCB0aGUgbWF4aW11bSBjb25zdGFudCBidWZmZXIgc2l6
ZQorICAgICAgICAgICAgYnVmZmVyRGVzYy0+Qnl0ZVdpZHRoID0gcm91bmRVcChidWZmZXJEZXNj
LT5CeXRlV2lkdGgsIDE2dSk7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5CeXRlV2lkdGggPQor
ICAgICAgICAgICAgICAgIHN0ZDo6bWluPFVJTlQ+KGJ1ZmZlckRlc2MtPkJ5dGVXaWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxVSU5UPihyZW5kZXJlci0+
Z2V0UmVuZGVyZXJDYXBzKCkubWF4VW5pZm9ybUJsb2NrU2l6ZSkpOworICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIH0KIAotdWludDhfdCAq
QnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6Om1hcChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3Ro
LCBHTGJpdGZpZWxkIGFjY2VzcykKK2dsOjpFcnJvciBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6
bWFwKHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICoqbWFwUG9pbnRlck91dCkKIHsKICAgICBBU1NFUlQobVVzYWdlID09IEJVRkZF
Ul9VU0FHRV9TVEFHSU5HKTsKIAogICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRS
ZXNvdXJjZTsKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2VDb250ZXh0KCk7Ci0gICAgRDNEMTFfTUFQIGQzZE1hcFR5cGUgPSBnbF9kM2QxMTo6
R2V0RDNETWFwVHlwZUZyb21CaXRzKGFjY2Vzcyk7Ci0gICAgVUlOVCBkM2RNYXBGbGFnID0gKChh
Y2Nlc3MgJiBHTF9NQVBfVU5TWU5DSFJPTklaRURfQklUKSAhPSAwID8gRDNEMTFfTUFQX0ZMQUdf
RE9fTk9UX1dBSVQgOiAwKTsKKyAgICBEM0QxMV9NQVAgZDNkTWFwVHlwZSAgICAgICAgID0gZ2xf
ZDNkMTE6OkdldEQzRE1hcFR5cGVGcm9tQml0cyhhY2Nlc3MpOworICAgIFVJTlQgZDNkTWFwRmxh
ZyAgICAgICAgICAgICAgPSAoKGFjY2VzcyAmIEdMX01BUF9VTlNZTkNIUk9OSVpFRF9CSVQpICE9
IDAgPyBEM0QxMV9NQVBfRkxBR19ET19OT1RfV0FJVCA6IDApOwogCiAgICAgSFJFU1VMVCByZXN1
bHQgPSBjb250ZXh0LT5NYXAobU5hdGl2ZVN0b3JhZ2UsIDAsIGQzZE1hcFR5cGUsIGQzZE1hcEZs
YWcsICZtYXBwZWRSZXNvdXJjZSk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXN1
bHQpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKSArIG9mZnNldDsKKyAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBtYXAgbmF0aXZl
IHN0b3JhZ2UgaW4gQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6Om1hcCIpOworICAgIH0KKyAgICBB
U1NFUlQobWFwcGVkUmVzb3VyY2UucERhdGEpOworICAgICptYXBQb2ludGVyT3V0ID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCAqPihtYXBwZWRSZXNvdXJjZS5wRGF0YSkgKyBvZmZzZXQ7CisgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKIHZvaWQgQnVmZmVyMTE6Ok5hdGl2ZVN0
b3JhZ2U6OnVubWFwKCkKQEAgLTk2OCwyOCArMTA4NiwxOTYgQEAKICAgICBjb250ZXh0LT5Vbm1h
cChtTmF0aXZlU3RvcmFnZSwgMCk7CiB9CiAKK0J1ZmZlcjExOjpFbXVsYXRlZEluZGV4ZWRTdG9y
YWdlOjpFbXVsYXRlZEluZGV4ZWRTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQorICAgIDog
QnVmZmVyU3RvcmFnZShyZW5kZXJlciwgQlVGRkVSX1VTQUdFX0VNVUxBVEVEX0lOREVYRURfVkVS
VEVYKSwgbU5hdGl2ZVN0b3JhZ2UobnVsbHB0cikKK3sKK30KKworQnVmZmVyMTE6OkVtdWxhdGVk
SW5kZXhlZFN0b3JhZ2U6On5FbXVsYXRlZEluZGV4ZWRTdG9yYWdlKCkKK3sKKyAgICBTYWZlUmVs
ZWFzZShtTmF0aXZlU3RvcmFnZSk7Cit9CisKK2dsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZl
ciAqPiBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZTo6Z2V0TmF0aXZlU3RvcmFnZSgK
KyAgICBTb3VyY2VJbmRleERhdGEgKmluZGV4SW5mbywKKyAgICBjb25zdCBUcmFuc2xhdGVkQXR0
cmlidXRlICZhdHRyaWJ1dGUsCisgICAgR0xpbnQgc3RhcnRWZXJ0ZXgpCit7CisgICAgLy8gSWYg
YSBjaGFuZ2UgaW4gdGhlIGluZGljZXMgYXBwbGllZCBmcm9tIHRoZSBsYXN0IGRyYXcgY2FsbCBp
cyBkZXRlY3RlZCwgdGhlbiB0aGUgZW11bGF0ZWQKKyAgICAvLyBpbmRleGVkIGJ1ZmZlciBuZWVk
cyB0byBiZSBpbnZhbGlkYXRlZC4gIEFmdGVyIGludmFsaWRhdGlvbiwgdGhlIGNoYW5nZSBkZXRl
Y3RlZCBmbGFnIHNob3VsZAorICAgIC8vIGJlIGNsZWFyZWQgdG8gYXZvaWQgdW5uZWNlc3Nhcnkg
cmVjcmVhdGlvbiBvZiB0aGUgYnVmZmVyLgorICAgIGlmIChtTmF0aXZlU3RvcmFnZSA9PSBudWxs
cHRyIHx8IGluZGV4SW5mby0+c3JjSW5kaWNlc0NoYW5nZWQpCisgICAgeworICAgICAgICBTYWZl
UmVsZWFzZShtTmF0aXZlU3RvcmFnZSk7CisKKyAgICAgICAgLy8gQ29weSB0aGUgc291cmNlIGlu
ZGV4IGRhdGEuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBsaWZldGltZSBvZiB0aGUgaW5kaWNlcyBw
b2ludGVyCisgICAgICAgIC8vIHN0YXlzIHdpdGggdGhpcyBzdG9yYWdlIHVudGlsIHRoZSBuZXh0
IHRpbWUgd2UgaW52YWxpZGF0ZS4KKyAgICAgICAgc2l6ZV90IGluZGljZXNEYXRhU2l6ZSA9IDA7
CisgICAgICAgIHN3aXRjaCAoaW5kZXhJbmZvLT5zcmNJbmRleFR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgIGluZGljZXNE
YXRhU2l6ZSA9IHNpemVvZihHTHVpbnQpICogaW5kZXhJbmZvLT5zcmNDb3VudDsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAg
ICAgICAgICAgICAgaW5kaWNlc0RhdGFTaXplID0gc2l6ZW9mKEdMdXNob3J0KSAqIGluZGV4SW5m
by0+c3JjQ291bnQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgaW5kaWNlc0RhdGFTaXplID0gc2l6ZW9m
KEdMdWJ5dGUpICogaW5kZXhJbmZvLT5zcmNDb3VudDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaW5kaWNlc0RhdGFTaXplID0g
c2l6ZW9mKEdMdXNob3J0KSAqIGluZGV4SW5mby0+c3JjQ291bnQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1JbmRpY2VzTWVtb3J5QnVmZmVyLnJl
c2l6ZShpbmRpY2VzRGF0YVNpemUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJF
cnJvciByZXNpemluZyBpbmRleCBtZW1vcnkgYnVmZmVyIGluICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkJ1ZmZlcjExOjpFbXVsYXRlZEluZGV4ZWRTdG9yYWdlOjpnZXROYXRpdmVT
dG9yYWdlIik7CisgICAgICAgIH0KKworICAgICAgICBtZW1jcHkobUluZGljZXNNZW1vcnlCdWZm
ZXIuZGF0YSgpLCBpbmRleEluZm8tPnNyY0luZGljZXMsIGluZGljZXNEYXRhU2l6ZSk7CisKKyAg
ICAgICAgaW5kZXhJbmZvLT5zcmNJbmRpY2VzQ2hhbmdlZCA9IGZhbHNlOworICAgIH0KKworICAg
IGlmICghbU5hdGl2ZVN0b3JhZ2UpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0
ID0gMDsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChhdHRyaWJ1dGUuY29tcHV0ZU9mZnNldChz
dGFydFZlcnRleCksIG9mZnNldCk7CisKKyAgICAgICAgLy8gRXhwYW5kIHRoZSBtZW1vcnkgc3Rv
cmFnZSB1cG9uIHJlcXVlc3QgYW5kIGNhY2hlIHRoZSByZXN1bHRzLgorICAgICAgICB1bnNpZ25l
ZCBpbnQgZXhwYW5kZWREYXRhU2l6ZSA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KChpbmRleEluZm8tPnNyY0NvdW50ICogYXR0cmlidXRlLnN0cmlkZSkgKyBvZmZzZXQp
OworICAgICAgICBNZW1vcnlCdWZmZXIgZXhwYW5kZWREYXRhOworICAgICAgICBpZiAoIWV4cGFu
ZGVkRGF0YS5yZXNpemUoZXhwYW5kZWREYXRhU2l6ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoCisgICAgICAgICAgICAgICAgR0xfT1VUX09GX01FTU9SWSwKKyAg
ICAgICAgICAgICAgICAiRXJyb3IgcmVzaXppbmcgYnVmZmVyIGluIEJ1ZmZlcjExOjpFbXVsYXRl
ZEluZGV4ZWRTdG9yYWdlOjpnZXROYXRpdmVTdG9yYWdlIik7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBDbGVhciB0aGUgY29udGVudHMgb2YgdGhlIGFsbG9jYXRlZCBidWZmZXIKKyAgICAgICAg
WmVyb01lbW9yeShleHBhbmRlZERhdGEuZGF0YSgpLCBleHBhbmRlZERhdGFTaXplKTsKKworICAg
ICAgICB1aW50OF90ICpjdXJyICAgICAgPSBleHBhbmRlZERhdGEuZGF0YSgpOworICAgICAgICBj
b25zdCB1aW50OF90ICpwdHIgPSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90ICo+KGluZGV4SW5m
by0+c3JjSW5kaWNlcyk7CisKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2Ugc3RhcnQgaW4gdGhl
IGNvcnJlY3QgcGxhY2UgZm9yIHRoZSBlbXVsYXRlZCBkYXRhIGNvcHkgb3BlcmF0aW9uIHRvCisg
ICAgICAgIC8vIG1haW50YWluIG9mZnNldCBiZWhhdmlvcnMuCisgICAgICAgIGN1cnIgKz0gb2Zm
c2V0OworCisgICAgICAgIFJlYWRJbmRleFZhbHVlRnVuY3Rpb24gcmVhZEluZGV4VmFsdWUgPSBS
ZWFkSW5kZXhWYWx1ZUZyb21JbmRpY2VzPEdMdXNob3J0PjsKKworICAgICAgICBzd2l0Y2ggKGlu
ZGV4SW5mby0+c3JjSW5kZXhUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVDoKKyAgICAgICAgICAgICAgICByZWFkSW5kZXhWYWx1ZSA9IFJlYWRJbmRleFZh
bHVlRnJvbUluZGljZXM8R0x1aW50PjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgcmVhZEluZGV4VmFs
dWUgPSBSZWFkSW5kZXhWYWx1ZUZyb21JbmRpY2VzPEdMdXNob3J0PjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAg
ICAgICByZWFkSW5kZXhWYWx1ZSA9IFJlYWRJbmRleFZhbHVlRnJvbUluZGljZXM8R0x1Ynl0ZT47
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBJdGVyYXRl
IG92ZXIgdGhlIGNhY2hlZCBpbmRleCBkYXRhIGFuZCBjb3B5IGVudHJpZXMgaW5kaWNhdGVkIGlu
dG8gdGhlIGVtdWxhdGVkIGJ1ZmZlci4KKyAgICAgICAgZm9yIChHTHVpbnQgaSA9IDA7IGkgPCBp
bmRleEluZm8tPnNyY0NvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMdWludCBp
ZHggPSByZWFkSW5kZXhWYWx1ZShwdHIsIGkpOworICAgICAgICAgICAgbWVtY3B5KGN1cnIsIG1N
ZW1vcnlCdWZmZXIuZGF0YSgpICsgKGF0dHJpYnV0ZS5zdHJpZGUgKiBpZHgpLCBhdHRyaWJ1dGUu
c3RyaWRlKTsKKyAgICAgICAgICAgIGN1cnIgKz0gYXR0cmlidXRlLnN0cmlkZTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEZpbmFsbHksIGluaXRpYWxpemUgdGhlIGVtdWxhdGVkIGluZGV4ZWQg
bmF0aXZlIHN0b3JhZ2Ugb2JqZWN0IHdpdGggdGhlIG5ld2x5IGNvcGllZCBkYXRhCisgICAgICAg
IC8vIGFuZCBmcmVlIHRoZSB0ZW1wb3JhcnkgYnVmZmVycyB1c2VkLgorICAgICAgICBJRDNEMTFE
ZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgRDNEMTFf
QlVGRkVSX0RFU0MgYnVmZmVyRGVzYzsKKyAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggICAg
ICAgICAgID0gZXhwYW5kZWREYXRhU2l6ZTsKKyAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3Mg
ICAgICAgICAgID0gMDsKKyAgICAgICAgYnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0g
MDsKKyAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSAgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0Vf
REVGQVVMVDsKKyAgICAgICAgYnVmZmVyRGVzYy5CaW5kRmxhZ3MgICAgICAgICAgID0gRDNEMTFf
QklORF9WRVJURVhfQlVGRkVSOworICAgICAgICBidWZmZXJEZXNjLkNQVUFjY2Vzc0ZsYWdzICAg
ICAgPSAwOworCisgICAgICAgIEQzRDExX1NVQlJFU09VUkNFX0RBVEEgc3ViUmVzb3VyY2VEYXRh
ID0ge2V4cGFuZGVkRGF0YS5kYXRhKCksIDAsIDB9OworCisgICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsICZzdWJSZXNvdXJjZURhdGEsICZt
TmF0aXZlU3RvcmFnZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiQ291bGQgbm90
IGNyZWF0ZSBlbXVsYXRlZCBpbmRleCBkYXRhIGJ1ZmZlcjogJTA4bFgiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUobU5hdGl2ZVN0b3JhZ2UsICJCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFn
ZSIpOworICAgIH0KKworICAgIHJldHVybiBtTmF0aXZlU3RvcmFnZTsKK30KKworZ2w6OkVycm9y
T3JSZXN1bHQ8Q29weVJlc3VsdD4gQnVmZmVyMTE6OkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2U6OmNv
cHlGcm9tU3RvcmFnZSgKKyAgICBCdWZmZXJTdG9yYWdlICpzb3VyY2UsCisgICAgc2l6ZV90IHNv
dXJjZU9mZnNldCwKKyAgICBzaXplX3Qgc2l6ZSwKKyAgICBzaXplX3QgZGVzdE9mZnNldCkKK3sK
KyAgICBBU1NFUlQoc291cmNlLT5pc01hcHBhYmxlKCkpOworICAgIHVpbnQ4X3QgKnNvdXJjZURh
dGEgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShzb3VyY2UtPm1hcChzb3VyY2VPZmZzZXQsIHNp
emUsIEdMX01BUF9SRUFEX0JJVCwgJnNvdXJjZURhdGEpKTsKKyAgICBBU1NFUlQoZGVzdE9mZnNl
dCArIHNpemUgPD0gbU1lbW9yeUJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShtTWVtb3J5QnVm
ZmVyLmRhdGEoKSArIGRlc3RPZmZzZXQsIHNvdXJjZURhdGEsIHNpemUpOworICAgIHNvdXJjZS0+
dW5tYXAoKTsKKyAgICByZXR1cm4gQ29weVJlc3VsdDo6UkVDUkVBVEVEOworfQorCitnbDo6RXJy
b3IgQnVmZmVyMTE6OkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2U6OnJlc2l6ZShzaXplX3Qgc2l6ZSwg
Ym9vbCBwcmVzZXJ2ZURhdGEpCit7CisgICAgaWYgKG1NZW1vcnlCdWZmZXIuc2l6ZSgpIDwgc2l6
ZSkKKyAgICB7CisgICAgICAgIGlmICghbU1lbW9yeUJ1ZmZlci5yZXNpemUoc2l6ZSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZh
aWxlZCB0byByZXNpemUgRW11bGF0ZWRJbmRleGVkU3RvcmFnZSIpOworICAgICAgICB9CisgICAg
ICAgIG1CdWZmZXJTaXplID0gc2l6ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIEJ1ZmZlcjExOjpFbXVsYXRlZEluZGV4ZWRTdG9y
YWdlOjptYXAoc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKiptYXBQb2ludGVyT3V0
KQoreworICAgIEFTU0VSVCghbU1lbW9yeUJ1ZmZlci5lbXB0eSgpICYmIG9mZnNldCArIGxlbmd0
aCA8PSBtTWVtb3J5QnVmZmVyLnNpemUoKSk7CisgICAgKm1hcFBvaW50ZXJPdXQgPSBtTWVtb3J5
QnVmZmVyLmRhdGEoKSArIG9mZnNldDsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKK30KKwordm9pZCBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZTo6dW5tYXAoKQor
eworICAgIC8vIE5vLW9wCit9CisKIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZTo6UGFja1N0b3JhZ2Uo
UmVuZGVyZXIxMSAqcmVuZGVyZXIpCi0gICAgOiBCdWZmZXJTdG9yYWdlKHJlbmRlcmVyLCBCVUZG
RVJfVVNBR0VfUElYRUxfUEFDSyksCi0gICAgICBtU3RhZ2luZ1RleHR1cmUoTlVMTCksCi0gICAg
ICBtVGV4dHVyZUZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIG1RdWV1ZWRQYWNr
Q29tbWFuZChOVUxMKSwKLSAgICAgIG1EYXRhTW9kaWZpZWQoZmFsc2UpCisgICAgOiBCdWZmZXJT
dG9yYWdlKHJlbmRlcmVyLCBCVUZGRVJfVVNBR0VfUElYRUxfUEFDSyksIG1TdGFnaW5nVGV4dHVy
ZSgpLCBtRGF0YU1vZGlmaWVkKGZhbHNlKQogewogfQogCiBCdWZmZXIxMTo6UGFja1N0b3JhZ2U6
On5QYWNrU3RvcmFnZSgpCiB7Ci0gICAgU2FmZVJlbGVhc2UobVN0YWdpbmdUZXh0dXJlKTsKLSAg
ICBTYWZlRGVsZXRlKG1RdWV1ZWRQYWNrQ29tbWFuZCk7CiB9CiAKLWJvb2wgQnVmZmVyMTE6OlBh
Y2tTdG9yYWdlOjpjb3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3RvcmFnZSAqc291cmNlLCBzaXplX3Qg
c291cmNlT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzaXplLCBzaXplX3QgZGVzdE9mZnNldCkKK2dsOjpFcnJvck9yUmVzdWx0PENv
cHlSZXN1bHQ+IEJ1ZmZlcjExOjpQYWNrU3RvcmFnZTo6Y29weUZyb21TdG9yYWdlKEJ1ZmZlclN0
b3JhZ2UgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0T2Zmc2V0KQogewogICAg
IC8vIFdlIGNvcHkgdGhyb3VnaCBhIHN0YWdpbmcgYnVmZmVyIHdoZW4gZHJhd2luZyB3aXRoIGEg
cGFjayBidWZmZXIsCiAgICAgLy8gb3IgZm9yIG90aGVyIGNhc2VzIHdoZXJlIHdlIGFjY2VzcyB0
aGUgcGFjayBidWZmZXIKICAgICBVTlJFQUNIQUJMRSgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gQ29weVJlc3VsdDo6Tk9UX1JFQ1JFQVRFRDsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZl
cjExOjpQYWNrU3RvcmFnZTo6cmVzaXplKHNpemVfdCBzaXplLCBib29sIHByZXNlcnZlRGF0YSkK
QEAgLTEwMDYsNyArMTI5MiwxMCBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OwogfQogCi11aW50OF90ICpCdWZmZXIxMTo6UGFja1N0b3JhZ2U6Om1hcChzaXplX3Qgb2Zmc2V0
LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcykKK2dsOjpFcnJvciBCdWZmZXIxMTo6
UGFja1N0b3JhZ2U6Om1hcChzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqKm1hcFBvaW50ZXJPdXQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCAr
IGxlbmd0aCA8PSBnZXRTaXplKCkpOwogICAgIC8vIFRPRE86IGZhc3QgcGF0aApAQCAtMTAxNCwx
NSArMTMwMywxMiBAQAogICAgIC8vICBhbmQgaWYgRDNEIHBhY2tzIHRoZSBzdGFnaW5nIHRleHR1
cmUgbWVtb3J5IGlkZW50aWNhbGx5IHRvIGhvdyB3ZSB3b3VsZCBmaWxsCiAgICAgLy8gIHRoZSBw
YWNrIGJ1ZmZlciBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgcGFjayBzdGF0ZS4KIAotICAgIGds
OjpFcnJvciBlcnJvciA9IGZsdXNoUXVldWVkUGFja0NvbW1hbmQoKTsKLSAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIEFOR0xF
X1RSWShmbHVzaFF1ZXVlZFBhY2tDb21tYW5kKCkpOwogCiAgICAgbURhdGFNb2RpZmllZCA9ICht
RGF0YU1vZGlmaWVkIHx8IChhY2Nlc3MgJiBHTF9NQVBfV1JJVEVfQklUKSAhPSAwKTsKIAotICAg
IHJldHVybiBtTWVtb3J5QnVmZmVyLmRhdGEoKSArIG9mZnNldDsKKyAgICAqbWFwUG9pbnRlck91
dCA9IG1NZW1vcnlCdWZmZXIuZGF0YSgpICsgb2Zmc2V0OworICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOwogfQogCiB2b2lkIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZTo6dW5tYXAoKQpA
QCAtMTAzMCw2MiArMTMxNiwzNSBAQAogICAgIC8vIE5vLW9wCiB9CiAKLWdsOjpFcnJvciBCdWZm
ZXIxMTo6UGFja1N0b3JhZ2U6OnBhY2tQaXhlbHMoSUQzRDExVGV4dHVyZTJEICpzcmNUZXh1cmUs
IFVJTlQgc3JjU3VicmVzb3VyY2UsIGNvbnN0IFBhY2tQaXhlbHNQYXJhbXMgJnBhcmFtcykKK2ds
OjpFcnJvciBCdWZmZXIxMTo6UGFja1N0b3JhZ2U6OnBhY2tQaXhlbHMoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAmcmVhZEF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tQaXhlbHNQYXJhbXMgJnBhcmFtcykKIHsK
LSAgICBnbDo6RXJyb3IgZXJyb3IgPSBmbHVzaFF1ZXVlZFBhY2tDb21tYW5kKCk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKGZsdXNoUXVldWVkUGFja0NvbW1hbmQoKSk7CiAKLSAgICBtUXVldWVkUGFj
a0NvbW1hbmQgPSBuZXcgUGFja1BpeGVsc1BhcmFtcyhwYXJhbXMpOworICAgIFJlbmRlclRhcmdl
dDExICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShyZWFkQXR0YWNobWVu
dC5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCkpOwogCi0gICAgRDNEMTFfVEVYVFVSRTJE
X0RFU0MgdGV4dHVyZURlc2M7Ci0gICAgc3JjVGV4dXJlLT5HZXREZXNjKCZ0ZXh0dXJlRGVzYyk7
CisgICAgSUQzRDExUmVzb3VyY2UgKnJlbmRlclRhcmdldFJlc291cmNlID0gcmVuZGVyVGFyZ2V0
LT5nZXRUZXh0dXJlKCk7CisgICAgQVNTRVJUKHJlbmRlclRhcmdldFJlc291cmNlKTsKIAotICAg
IGlmIChtU3RhZ2luZ1RleHR1cmUgIT0gTlVMTCAmJgotICAgICAgICAobVRleHR1cmVGb3JtYXQg
IT0gdGV4dHVyZURlc2MuRm9ybWF0IHx8Ci0gICAgICAgICBtVGV4dHVyZVNpemUud2lkdGggIT0g
cGFyYW1zLmFyZWEud2lkdGggfHwKLSAgICAgICAgIG1UZXh0dXJlU2l6ZS5oZWlnaHQgIT0gcGFy
YW1zLmFyZWEuaGVpZ2h0KSkKLSAgICB7Ci0gICAgICAgIFNhZmVSZWxlYXNlKG1TdGFnaW5nVGV4
dHVyZSk7Ci0gICAgICAgIG1UZXh0dXJlU2l6ZS53aWR0aCA9IDA7Ci0gICAgICAgIG1UZXh0dXJl
U2l6ZS5oZWlnaHQgPSAwOwotICAgICAgICBtVGV4dHVyZUZvcm1hdCA9IERYR0lfRk9STUFUX1VO
S05PV047Ci0gICAgfQorICAgIHVuc2lnbmVkIGludCBzcmNTdWJyZXNvdXJjZSA9IHJlbmRlclRh
cmdldC0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOworICAgIFRleHR1cmVIZWxwZXIxMSBzcmNUZXh0
dXJlID0KKyAgICAgICAgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJlbmRlclRh
cmdldFJlc291cmNlLCByZW5kZXJUYXJnZXQtPmdldEFOR0xFRm9ybWF0KCkpOwogCi0gICAgaWYg
KG1TdGFnaW5nVGV4dHVyZSA9PSBOVUxMKQorICAgIG1RdWV1ZWRQYWNrQ29tbWFuZC5yZXNldChu
ZXcgUGFja1BpeGVsc1BhcmFtcyhwYXJhbXMpKTsKKworICAgIGdsOjpFeHRlbnRzIHNyY1RleHR1
cmVTaXplKHBhcmFtcy5hcmVhLndpZHRoLCBwYXJhbXMuYXJlYS5oZWlnaHQsIDEpOworICAgIGlm
ICghbVN0YWdpbmdUZXh0dXJlLmdldFJlc291cmNlKCkgfHwgbVN0YWdpbmdUZXh0dXJlLmdldEZv
cm1hdCgpICE9IHNyY1RleHR1cmUuZ2V0Rm9ybWF0KCkgfHwKKyAgICAgICAgbVN0YWdpbmdUZXh0
dXJlLmdldEV4dGVudHMoKSAhPSBzcmNUZXh0dXJlU2l6ZSkKICAgICB7Ci0gICAgICAgIElEM0Qx
MURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKLSAgICAgICAgSFJFU1VM
VCBocjsKLQotICAgICAgICBtVGV4dHVyZVNpemUud2lkdGggPSBwYXJhbXMuYXJlYS53aWR0aDsK
LSAgICAgICAgbVRleHR1cmVTaXplLmhlaWdodCA9IHBhcmFtcy5hcmVhLmhlaWdodDsKLSAgICAg
ICAgbVRleHR1cmVGb3JtYXQgPSB0ZXh0dXJlRGVzYy5Gb3JtYXQ7Ci0KLSAgICAgICAgRDNEMTFf
VEVYVFVSRTJEX0RFU0Mgc3RhZ2luZ0Rlc2M7Ci0gICAgICAgIHN0YWdpbmdEZXNjLldpZHRoID0g
cGFyYW1zLmFyZWEud2lkdGg7Ci0gICAgICAgIHN0YWdpbmdEZXNjLkhlaWdodCA9IHBhcmFtcy5h
cmVhLmhlaWdodDsKLSAgICAgICAgc3RhZ2luZ0Rlc2MuTWlwTGV2ZWxzID0gMTsKLSAgICAgICAg
c3RhZ2luZ0Rlc2MuQXJyYXlTaXplID0gMTsKLSAgICAgICAgc3RhZ2luZ0Rlc2MuRm9ybWF0ID0g
bVRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIHN0YWdpbmdEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAx
OwotICAgICAgICBzdGFnaW5nRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwotICAgICAgICBz
dGFnaW5nRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX1NUQUdJTkc7Ci0gICAgICAgIHN0YWdpbmdE
ZXNjLkJpbmRGbGFncyA9IDA7Ci0gICAgICAgIHN0YWdpbmdEZXNjLkNQVUFjY2Vzc0ZsYWdzID0g
RDNEMTFfQ1BVX0FDQ0VTU19SRUFEOwotICAgICAgICBzdGFnaW5nRGVzYy5NaXNjRmxhZ3MgPSAw
OwotCi0gICAgICAgIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnN0YWdpbmdEZXNjLCBO
VUxMLCAmbVN0YWdpbmdUZXh0dXJlKTsKLSAgICAgICAgaWYgKEZBSUxFRChocikpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChociA9PSBFX09VVE9GTUVNT1JZKTsKLSAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBhbGxvY2F0ZSBp
bnRlcm5hbCBzdGFnaW5nIHRleHR1cmUuIik7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZ
X1JFU1VMVChDcmVhdGVTdGFnaW5nVGV4dHVyZShzcmNUZXh0dXJlLmdldFRleHR1cmVUeXBlKCks
IHNyY1RleHR1cmUuZ2V0Rm9ybWF0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3JjVGV4dHVyZS5nZXRBTkdMRUZvcm1hdCgpLCBzcmNUZXh0dXJlU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVy
ZXItPmdldERldmljZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhZ2luZ1RleHR1
cmUpOwogICAgIH0KIAogICAgIC8vIFJlYWRQaXhlbHMgZnJvbSBtdWx0aXNhbXBsZWQgRkJPcyBp
c24ndCBzdXBwb3J0ZWQgaW4gY3VycmVudCBHTAotICAgIEFTU0VSVCh0ZXh0dXJlRGVzYy5TYW1w
bGVEZXNjLkNvdW50IDw9IDEpOworICAgIEFTU0VSVChzcmNUZXh0dXJlLmdldFNhbXBsZUNvdW50
KCkgPD0gMSk7CiAKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250ZXh0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAgRDNEMTFfQk9YIHNyY0JveDsKQEAg
LTEwOTMsMTMgKzEzNTIsMjAgQEAKICAgICBzcmNCb3gucmlnaHQgID0gcGFyYW1zLmFyZWEueCAr
IHBhcmFtcy5hcmVhLndpZHRoOwogICAgIHNyY0JveC50b3AgICAgPSBwYXJhbXMuYXJlYS55Owog
ICAgIHNyY0JveC5ib3R0b20gPSBwYXJhbXMuYXJlYS55ICsgcGFyYW1zLmFyZWEuaGVpZ2h0Owot
ICAgIHNyY0JveC5mcm9udCAgPSAwOwotICAgIHNyY0JveC5iYWNrICAgPSAxOwogCisgICAgLy8g
U2VsZWN0IHRoZSBjb3JyZWN0IGxheWVyIGZyb20gYSAzRCBhdHRhY2htZW50CisgICAgc3JjQm94
LmZyb250ID0gMDsKKyAgICBpZiAobVN0YWdpbmdUZXh0dXJlLmdldFRleHR1cmVUeXBlKCkgPT0g
R0xfVEVYVFVSRV8zRCkKKyAgICB7CisgICAgICAgIHNyY0JveC5mcm9udCA9IHN0YXRpY19jYXN0
PFVJTlQ+KHJlYWRBdHRhY2htZW50LmxheWVyKCkpOworICAgIH0KKyAgICBzcmNCb3guYmFjayA9
IHNyY0JveC5mcm9udCArIDE7CisKICAgICAvLyBBc3luY2hyb25vdXMgY29weQotICAgIGltbWVk
aWF0ZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihtU3RhZ2luZ1RleHR1cmUsIDAsIDAs
IDAsIDAsIHNyY1RleHVyZSwgc3JjU3VicmVzb3VyY2UsICZzcmNCb3gpOworICAgIGltbWVkaWF0
ZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihtU3RhZ2luZ1RleHR1cmUuZ2V0UmVzb3Vy
Y2UoKSwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3JjVGV4dHVyZS5nZXRSZXNvdXJjZSgpLCBzcmNTdWJyZXNvdXJjZSwgJnNyY0JveCk7
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZTo6Zmx1c2hRdWV1
ZWRQYWNrQ29tbWFuZCgpCkBAIC0xMTA4LDMwICsxMzc0LDMxIEBACiAKICAgICBpZiAobVF1ZXVl
ZFBhY2tDb21tYW5kKQogICAgIHsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVy
LT5wYWNrUGl4ZWxzKG1TdGFnaW5nVGV4dHVyZSwgKm1RdWV1ZWRQYWNrQ29tbWFuZCwgbU1lbW9y
eUJ1ZmZlci5kYXRhKCkpOwotICAgICAgICBTYWZlRGVsZXRlKG1RdWV1ZWRQYWNrQ29tbWFuZCk7
Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkoCisgICAgICAgICAgICBt
UmVuZGVyZXItPnBhY2tQaXhlbHMobVN0YWdpbmdUZXh0dXJlLCAqbVF1ZXVlZFBhY2tDb21tYW5k
LCBtTWVtb3J5QnVmZmVyLmRhdGEoKSkpOworICAgICAgICBtUXVldWVkUGFja0NvbW1hbmQucmVz
ZXQobnVsbHB0cik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIEJ1ZmZlcjExOjpTeXN0ZW1NZW1vcnlT
dG9yYWdlOjpTeXN0ZW1NZW1vcnlTdG9yYWdlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogICAgIDog
QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UocmVuZGVyZXIsIEJVRkZFUl9VU0FHRV9TWVNURU1fTUVN
T1JZKQote30KK3sKK30KIAotYm9vbCBCdWZmZXIxMTo6U3lzdGVtTWVtb3J5U3RvcmFnZTo6Y29w
eUZyb21TdG9yYWdlKEJ1ZmZlclN0b3JhZ2UgKnNvdXJjZSwgc2l6ZV90IHNvdXJjZU9mZnNldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IGRlc3RPZmZzZXQpCitnbDo6RXJyb3JPclJlc3VsdDxDb3B5UmVzdWx0
PiBCdWZmZXIxMTo6U3lzdGVtTWVtb3J5U3RvcmFnZTo6Y29weUZyb21TdG9yYWdlKEJ1ZmZlclN0
b3JhZ2UgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZU9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXN0T2Zmc2V0KQogewogICAgIEFTU0VSVChzb3VyY2UtPmlzTWFwcGFibGUoKSk7Ci0g
ICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSA9IHNvdXJjZS0+bWFwKHNvdXJjZU9mZnNldCwg
c2l6ZSwgR0xfTUFQX1JFQURfQklUKTsKKyAgICB1aW50OF90ICpzb3VyY2VEYXRhID0gbnVsbHB0
cjsKKyAgICBBTkdMRV9UUlkoc291cmNlLT5tYXAoc291cmNlT2Zmc2V0LCBzaXplLCBHTF9NQVBf
UkVBRF9CSVQsICZzb3VyY2VEYXRhKSk7CiAgICAgQVNTRVJUKGRlc3RPZmZzZXQgKyBzaXplIDw9
IG1TeXN0ZW1Db3B5LnNpemUoKSk7CiAgICAgbWVtY3B5KG1TeXN0ZW1Db3B5LmRhdGEoKSArIGRl
c3RPZmZzZXQsIHNvdXJjZURhdGEsIHNpemUpOwogICAgIHNvdXJjZS0+dW5tYXAoKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gQ29weVJlc3VsdDo6UkVDUkVBVEVEOwogfQogCiBnbDo6
RXJyb3IgQnVmZmVyMTE6OlN5c3RlbU1lbW9yeVN0b3JhZ2U6OnJlc2l6ZShzaXplX3Qgc2l6ZSwg
Ym9vbCBwcmVzZXJ2ZURhdGEpCkBAIC0xMTQ1LDE4ICsxNDEyLDIxIEBACiAgICAgICAgIG1CdWZm
ZXJTaXplID0gc2l6ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotdWludDhfdCAqQnVmZmVyMTE6OlN5
c3RlbU1lbW9yeVN0b3JhZ2U6Om1hcChzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJp
dGZpZWxkIGFjY2VzcykKK2dsOjpFcnJvciBCdWZmZXIxMTo6U3lzdGVtTWVtb3J5U3RvcmFnZTo6
bWFwKHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICoqbWFwUG9pbnRlck91dCkKIHsKICAgICBBU1NF
UlQoIW1TeXN0ZW1Db3B5LmVtcHR5KCkgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1TeXN0ZW1Db3B5
LnNpemUoKSk7Ci0gICAgcmV0dXJuIG1TeXN0ZW1Db3B5LmRhdGEoKSArIG9mZnNldDsKKyAgICAq
bWFwUG9pbnRlck91dCA9IG1TeXN0ZW1Db3B5LmRhdGEoKSArIG9mZnNldDsKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAogdm9pZCBCdWZmZXIxMTo6U3lzdGVtTWVtb3J5
U3RvcmFnZTo6dW5tYXAoKQogewogICAgIC8vIE5vLW9wCiB9Ci0KLX0KK30gIC8vIG5hbWVzcGFj
ZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9CdWZmZXIxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9CdWZmZXIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC05LDEyICs5LDIyIEBACiAj
aWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9CVUZGRVIxMV9IXwogI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfQlVGRkVSMTFfSF8KIAorI2luY2x1ZGUgPG1hcD4K
KwogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvQnVmZmVyRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKIAorbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQ7Cit9CisKIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXIx
MTsKK3N0cnVjdCBTb3VyY2VJbmRleERhdGE7CitzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZTsK
IAogZW51bSBCdWZmZXJVc2FnZQogewpAQCAtMjUsNiArMzUsOSBAQAogICAgIEJVRkZFUl9VU0FH
RV9QSVhFTF9QQUNLLAogICAgIEJVRkZFUl9VU0FHRV9VTklGT1JNLAogICAgIEJVRkZFUl9VU0FH
RV9TWVNURU1fTUVNT1JZLAorICAgIEJVRkZFUl9VU0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRF
WCwKKworICAgIEJVRkZFUl9VU0FHRV9DT1VOVCwKIH07CiAKIHN0cnVjdCBQYWNrUGl4ZWxzUGFy
YW1zCkBAIC01MCwzOSArNjMsNTIgQEAKICAgICBCdWZmZXIxMShSZW5kZXJlcjExICpyZW5kZXJl
cik7CiAgICAgdmlydHVhbCB+QnVmZmVyMTEoKTsKIAotICAgIElEM0QxMUJ1ZmZlciAqZ2V0QnVm
ZmVyKEJ1ZmZlclVzYWdlIHVzYWdlKTsKLSAgICBJRDNEMTFCdWZmZXIgKmdldENvbnN0YW50QnVm
ZmVyUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOwotICAgIElEM0QxMVNo
YWRlclJlc291cmNlVmlldyAqZ2V0U1JWKERYR0lfRk9STUFUIHNydkZvcm1hdCk7Ci0gICAgYm9v
bCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1NYXBwZWRTdG9yYWdlICE9IE5VTEw7IH0KLSAg
ICBnbDo6RXJyb3IgcGFja1BpeGVscyhJRDNEMTFUZXh0dXJlMkQgKnNyY1RleHVyZSwgVUlOVCBz
cmNTdWJyZXNvdXJjZSwgY29uc3QgUGFja1BpeGVsc1BhcmFtcyAmcGFyYW1zKTsKKyAgICBnbDo6
RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZmZXIgKj4gZ2V0QnVmZmVyKEJ1ZmZlclVzYWdlIHVzYWdl
KTsKKyAgICBnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZmZXIgKj4gZ2V0RW11bGF0ZWRJbmRl
eGVkQnVmZmVyKFNvdXJjZUluZGV4RGF0YSAqaW5kZXhJbmZvLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNs
YXRlZEF0dHJpYnV0ZSAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnRWZXJ0ZXgpOworICAg
IGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBnZXRDb25zdGFudEJ1ZmZlclJhbmdl
KEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplKTsKKyAgICBnbDo6RXJyb3JPclJlc3Vs
dDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gZ2V0U1JWKERYR0lfRk9STUFUIHNydkZvcm1h
dCk7CisgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1NYXBwZWRTdG9yYWdlICE9
IG51bGxwdHI7IH0KKyAgICBnbDo6RXJyb3IgcGFja1BpeGVscyhjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICZyZWFkQXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBQYWNrUGl4ZWxzUGFyYW1zICZwYXJhbXMpOworICAgIHNpemVfdCBnZXRUb3RhbENQVUJ1
ZmZlck1lbW9yeUJ5dGVzKCkgY29uc3Q7CiAKICAgICAvLyBCdWZmZXJEM0QgaW1wbGVtZW50YXRp
b24KLSAgICB2aXJ0dWFsIHNpemVfdCBnZXRTaXplKCkgY29uc3QgeyByZXR1cm4gbVNpemU7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Q7CisgICAgc2l6
ZV90IGdldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtU2l6ZTsgfQorICAgIGJvb2wg
c3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdl
dERhdGEoY29uc3QgdWludDhfdCAqKm91dERhdGEpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZVN0YXRpY0RhdGEoKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGVTdGF0aWNEYXRh
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXJJbXBsIGltcGxlbWVudGF0aW9uCi0gICAgdmly
dHVhbCBnbDo6RXJyb3Igc2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgR0xl
bnVtIHVzYWdlKTsKLSAgICBnbDo6RXJyb3IgZ2V0RGF0YShjb25zdCB1aW50OF90ICoqb3V0RGF0
YSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0U3ViRGF0YShjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCk7Ci0gICAgdmlydHVhbCBnbDo6RXJy
b3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCogc291cmNlLCBHTGludHB0ciBzb3VyY2VPZmZzZXQs
IEdMaW50cHRyIGRlc3RPZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7Ci0gICAgdmlydHVhbCBnbDo6
RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cik7Ci0gICAgdmlydHVhbCBn
bDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVs
ZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cik7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgdW5tYXAo
R0xib29sZWFuICpyZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrVHJhbnNmb3JtRmVlZGJh
Y2tVc2FnZSgpOworICAgIGdsOjpFcnJvciBzZXREYXRhKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf
dCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJEYXRh
KGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWlwdHIgc2l6ZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIG1hcChHTGVudW0gYWNj
ZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXBSYW5nZShz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0x2b2lkICoq
bWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdW5tYXAoR0xib29sZWFuICpyZXN1bHQp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZSgpIG92
ZXJyaWRlOwogCisgICAgLy8gV2UgdXNlIHR3byBzZXQgb2YgZGlydHkgY2FsbGJhY2tzIGZvciB0
d28gZXZlbnRzLiBTdGF0aWMgYnVmZmVycyBhcmUgbWFya2VkIGRpcnR5IHdoZW5ldmVyCisgICAg
Ly8gdGhlIGRhdGEgaXMgY2hhbmdlZCwgYmVjYXVzZSB0aGV5IG11c3QgYmUgcmUtdHJhbnNsYXRl
ZC4gRGlyZWN0IGJ1ZmZlcnMgb25seSBuZWVkIHRvIGJlCisgICAgLy8gdXBkYXRlZCB3aGVuIHRo
ZSB1bmRlcmx5aW5nIElEM0QxMUJ1ZmZlciBwb2ludGVyIGNoYW5nZXMgLSBob3BlZnVsbHkgZmFy
IGxlc3Mgb2Z0ZW4uCisgICAgdm9pZCBhZGRTdGF0aWNCdWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0
IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7CisgICAgdm9pZCByZW1vdmVTdGF0aWNC
dWZmZXJEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxsYmFjayk7
CisKKyAgICB2b2lkIGFkZERpcmVjdEJ1ZmZlckRpcnR5Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0
aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKKyAgICB2b2lkIHJlbW92ZURpcmVjdEJ1ZmZlckRpcnR5
Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKKwogICBwcml2
YXRlOgogICAgIGNsYXNzIEJ1ZmZlclN0b3JhZ2U7CisgICAgY2xhc3MgRW11bGF0ZWRJbmRleGVk
U3RvcmFnZTsKICAgICBjbGFzcyBOYXRpdmVTdG9yYWdlOwogICAgIGNsYXNzIFBhY2tTdG9yYWdl
OwogICAgIGNsYXNzIFN5c3RlbU1lbW9yeVN0b3JhZ2U7CiAKLSAgICBSZW5kZXJlcjExICptUmVu
ZGVyZXI7Ci0gICAgc2l6ZV90IG1TaXplOwotCi0gICAgQnVmZmVyU3RvcmFnZSAqbU1hcHBlZFN0
b3JhZ2U7Ci0KLSAgICBzdGQ6Om1hcDxCdWZmZXJVc2FnZSwgQnVmZmVyU3RvcmFnZSo+IG1CdWZm
ZXJTdG9yYWdlczsKLQogICAgIHN0cnVjdCBDb25zdGFudEJ1ZmZlckNhY2hlRW50cnkKICAgICB7
CiAgICAgICAgIENvbnN0YW50QnVmZmVyQ2FjaGVFbnRyeSgpIDogc3RvcmFnZShudWxscHRyKSwg
bHJ1Q291bnQoMCkgeyB9CkBAIC05MSw2ICsxMTcsMjcgQEAKICAgICAgICAgdW5zaWduZWQgaW50
IGxydUNvdW50OwogICAgIH07CiAKKyAgICBnbDo6RXJyb3IgbWFya0J1ZmZlclVzYWdlKCk7Cisg
ICAgZ2w6OkVycm9yT3JSZXN1bHQ8TmF0aXZlU3RvcmFnZSAqPiBnZXRTdGFnaW5nU3RvcmFnZSgp
OworICAgIGdsOjpFcnJvck9yUmVzdWx0PFBhY2tTdG9yYWdlICo+IGdldFBhY2tTdG9yYWdlKCk7
CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8U3lzdGVtTWVtb3J5U3RvcmFnZSAqPiBnZXRTeXN0ZW1N
ZW1vcnlTdG9yYWdlKCk7CisKKyAgICBnbDo6RXJyb3IgdXBkYXRlQnVmZmVyU3RvcmFnZShCdWZm
ZXJTdG9yYWdlICpzdG9yYWdlLCBzaXplX3Qgc291cmNlT2Zmc2V0LCBzaXplX3Qgc3RvcmFnZVNp
emUpOworICAgIGdsOjpFcnJvck9yUmVzdWx0PEJ1ZmZlclN0b3JhZ2UgKj4gZ2V0QnVmZmVyU3Rv
cmFnZShCdWZmZXJVc2FnZSB1c2FnZSk7CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8QnVmZmVyU3Rv
cmFnZSAqPiBnZXRMYXRlc3RCdWZmZXJTdG9yYWdlKCkgY29uc3Q7CisKKyAgICBnbDo6RXJyb3JP
clJlc3VsdDxCdWZmZXJTdG9yYWdlICo+IGdldENvbnN0YW50QnVmZmVyUmFuZ2VTdG9yYWdlKEdM
aW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7CisKKyAgICBCdWZm
ZXJTdG9yYWdlICphbGxvY2F0ZVN0b3JhZ2UoQnVmZmVyVXNhZ2UgdXNhZ2UpIGNvbnN0OworCisg
ICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworICAgIHNpemVfdCBtU2l6ZTsKKworICAgIEJ1ZmZl
clN0b3JhZ2UgKm1NYXBwZWRTdG9yYWdlOworCisgICAgc3RkOjp2ZWN0b3I8QnVmZmVyU3RvcmFn
ZSAqPiBtQnVmZmVyU3RvcmFnZXM7CisKICAgICAvLyBDYWNoZSBvZiBEM0QxMSBjb25zdGFudCBi
dWZmZXIgZm9yIHNwZWNpZmljIHJhbmdlcyBvZiBidWZmZXIgZGF0YS4KICAgICAvLyBUaGlzIGlz
IHVzZWQgdG8gZW11bGF0ZSBVQk8gcmFuZ2VzIG9uIDExLjAgZGV2aWNlcy4KICAgICAvLyBDb25z
dGFudCBidWZmZXJzIGFyZSBpbmRleGVkIGJ5IHRoZXJlIHN0YXJ0IG9mZnNldC4KQEAgLTEwMywy
MCArMTUwLDExIEBACiAgICAgc3RkOjptYXA8RFhHSV9GT1JNQVQsIEJ1ZmZlclNSVlBhaXI+IG1C
dWZmZXJSZXNvdXJjZVZpZXdzOwogCiAgICAgdW5zaWduZWQgaW50IG1SZWFkVXNhZ2VDb3VudDsK
LSAgICBib29sIG1IYXNTeXN0ZW1NZW1vcnlTdG9yYWdlOwogCi0gICAgdm9pZCBtYXJrQnVmZmVy
VXNhZ2UoKTsKLSAgICBOYXRpdmVTdG9yYWdlICpnZXRTdGFnaW5nU3RvcmFnZSgpOwotICAgIFBh
Y2tTdG9yYWdlICpnZXRQYWNrU3RvcmFnZSgpOwotICAgIGdsOjpFcnJvciBnZXRTeXN0ZW1NZW1v
cnlTdG9yYWdlKFN5c3RlbU1lbW9yeVN0b3JhZ2UgKipzdG9yYWdlT3V0KTsKLQotICAgIHZvaWQg
dXBkYXRlQnVmZmVyU3RvcmFnZShCdWZmZXJTdG9yYWdlICpzdG9yYWdlLCBzaXplX3Qgc291cmNl
T2Zmc2V0LCBzaXplX3Qgc3RvcmFnZVNpemUpOwotICAgIEJ1ZmZlclN0b3JhZ2UgKmdldEJ1ZmZl
clN0b3JhZ2UoQnVmZmVyVXNhZ2UgdXNhZ2UpOwotICAgIEJ1ZmZlclN0b3JhZ2UgKmdldExhdGVz
dEJ1ZmZlclN0b3JhZ2UoKSBjb25zdDsKLQotICAgIEJ1ZmZlclN0b3JhZ2UgKmdldENvbnRhbnRC
dWZmZXJSYW5nZVN0b3JhZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOworICAg
IE5vdGlmaWNhdGlvblNldCBtU3RhdGljQnVmZmVyRGlydHlDYWxsYmFja3M7CisgICAgTm90aWZp
Y2F0aW9uU2V0IG1EaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrczsKIH07CiAKLX0KK30gIC8vIG5h
bWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0JVRkZF
UjExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0NsZWFyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAKICAgICBmbG9hdCBib3R0b20gPSAxLjBmOwogCiAgICAgLy8gQ2xpcCB0aGUgcXVhZCBjb29y
ZGluYXRlcyB0byB0aGUgc2Npc3NvciBpZiBuZWVkZWQKLSAgICBpZiAoc2Npc3NvciAhPSBOVUxM
KQorICAgIGlmIChzY2lzc29yICE9IG51bGxwdHIpCiAgICAgewogICAgICAgICBsZWZ0ID0gc3Rk
OjptYXgobGVmdCwgKHNjaXNzb3ItPnggLyBmbG9hdChmcmFtZWJ1ZmZlclNpemUud2lkdGgpKSAq
IDIuMGYgLSAxLjBmKTsKICAgICAgICAgcmlnaHQgPSBzdGQ6Om1pbihyaWdodCwgKChzY2lzc29y
LT54ICsgc2Npc3Nvci0+d2lkdGgpIC8gZmxvYXQoZnJhbWVidWZmZXJTaXplLndpZHRoKSkgKiAy
LjBmIC0gMS4wZik7CkBAIC01OSwzNCArNTksNDMgQEAKICAgICBkM2QxMTo6U2V0UG9zaXRpb25E
ZXB0aENvbG9yVmVydGV4PFQ+KHZlcnRpY2VzICsgMywgcmlnaHQsIHRvcCwgICAgZGVwdGhDbGVh
ciwgY29sb3IpOwogfQogCi10ZW1wbGF0ZSA8dW5zaWduZWQgaW50IHZzU2l6ZSwgdW5zaWduZWQg
aW50IHBzU2l6ZT4KLUNsZWFyMTE6OkNsZWFyU2hhZGVyIENsZWFyMTE6OkNyZWF0ZUNsZWFyU2hh
ZGVyKElEM0QxMURldmljZSAqZGV2aWNlLCBEWEdJX0ZPUk1BVCBjb2xvclR5cGUsIGNvbnN0IEJZ
VEUgKCZ2c0J5dGVDb2RlKVt2c1NpemVdLCBjb25zdCBCWVRFICgmcHNCeXRlQ29kZSlbcHNTaXpl
XSkKK0NsZWFyMTE6OkNsZWFyU2hhZGVyOjpDbGVhclNoYWRlcihEWEdJX0ZPUk1BVCBjb2xvclR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wdXRM
YXlvdXROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJZVEUg
KnZzQnl0ZUNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZz
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2c0Rl
YnVnTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCWVRFICpw
c0J5dGVDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwc1Np
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHNEZWJ1
Z05hbWUpCisgICAgOiBpbnB1dExheW91dChudWxscHRyKSwKKyAgICAgIHZlcnRleFNoYWRlcih2
c0J5dGVDb2RlLCB2c1NpemUsIHZzRGVidWdOYW1lKSwKKyAgICAgIHBpeGVsU2hhZGVyKHBzQnl0
ZUNvZGUsIHBzU2l6ZSwgcHNEZWJ1Z05hbWUpCiB7Ci0gICAgSFJFU1VMVCByZXN1bHQ7Ci0KLSAg
ICBDbGVhclNoYWRlciBzaGFkZXIgPSB7IDAgfTsKLQogICAgIEQzRDExX0lOUFVUX0VMRU1FTlRf
REVTQyBxdWFkTGF5b3V0W10gPQogICAgIHsKICAgICAgICAgeyAiUE9TSVRJT04iLCAwLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDAsICAwLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RB
VEEsIDAgfSwKICAgICAgICAgeyAiQ09MT1IiLCAgICAwLCBjb2xvclR5cGUsICAgICAgICAgICAg
ICAgICAgIDAsIDEyLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAgfSwKICAgICB9Owog
Ci0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVJbnB1dExheW91dChxdWFkTGF5b3V0LCBBcnJh
eVNpemUocXVhZExheW91dCksIHZzQnl0ZUNvZGUsIHZzU2l6ZSwgJnNoYWRlci5pbnB1dExheW91
dCk7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICBpbnB1dExheW91dCA9IG5l
dyBkM2QxMTo6TGF6eUlucHV0TGF5b3V0KHF1YWRMYXlvdXQsIDIsIHZzQnl0ZUNvZGUsIHZzU2l6
ZSwgaW5wdXRMYXlvdXROYW1lKTsKK30KIAotICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVy
dGV4U2hhZGVyKHZzQnl0ZUNvZGUsIHZzU2l6ZSwgTlVMTCwgJnNoYWRlci52ZXJ0ZXhTaGFkZXIp
OwotICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICByZXN1bHQgPSBkZXZpY2Ut
PkNyZWF0ZVBpeGVsU2hhZGVyKHBzQnl0ZUNvZGUsIHBzU2l6ZSwgTlVMTCwgJnNoYWRlci5waXhl
bFNoYWRlcik7Ci0gICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLQotICAgIHJldHVybiBz
aGFkZXI7CitDbGVhcjExOjpDbGVhclNoYWRlcjo6fkNsZWFyU2hhZGVyKCkKK3sKKyAgICBTYWZl
RGVsZXRlKGlucHV0TGF5b3V0KTsKKyAgICB2ZXJ0ZXhTaGFkZXIucmVsZWFzZSgpOworICAgIHBp
eGVsU2hhZGVyLnJlbGVhc2UoKTsKIH0KIAogQ2xlYXIxMTo6Q2xlYXIxMShSZW5kZXJlcjExICpy
ZW5kZXJlcikKLSAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksIG1DbGVhckJsZW5kU3RhdGVzKFN0
cnVjdExlc3NUaGFuPENsZWFyQmxlbmRJbmZvPiksIG1DbGVhckRlcHRoU3RlbmNpbFN0YXRlcyhT
dHJ1Y3RMZXNzVGhhbjxDbGVhckRlcHRoU3RlbmNpbEluZm8+KSwKLSAgICAgIG1WZXJ0ZXhCdWZm
ZXIoTlVMTCksIG1SYXN0ZXJpemVyU3RhdGUoTlVMTCksIG1TdXBwb3J0c0NsZWFyVmlldyhmYWxz
ZSkKKyAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCisgICAgICBtQ2xlYXJCbGVuZFN0YXRlcyhT
dHJ1Y3RMZXNzVGhhbjxDbGVhckJsZW5kSW5mbz4pLAorICAgICAgbUZsb2F0Q2xlYXJTaGFkZXIo
bnVsbHB0ciksCisgICAgICBtVWludENsZWFyU2hhZGVyKG51bGxwdHIpLAorICAgICAgbUludENs
ZWFyU2hhZGVyKG51bGxwdHIpLAorICAgICAgbUNsZWFyRGVwdGhTdGVuY2lsU3RhdGVzKFN0cnVj
dExlc3NUaGFuPENsZWFyRGVwdGhTdGVuY2lsSW5mbz4pLAorICAgICAgbVZlcnRleEJ1ZmZlcihu
dWxscHRyKSwKKyAgICAgIG1SYXN0ZXJpemVyU3RhdGUobnVsbHB0cikKIHsKICAgICBUUkFDRV9F
VkVOVDAoImdwdS5hbmdsZSIsICJDbGVhcjExOjpDbGVhcjExIik7CiAKQEAgLTEwMSw3ICsxMTAs
NyBAQAogICAgIHZiRGVzYy5NaXNjRmxhZ3MgPSAwOwogICAgIHZiRGVzYy5TdHJ1Y3R1cmVCeXRl
U3RyaWRlID0gMDsKIAotICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZ2YkRlc2Ms
IE5VTEwsICZtVmVydGV4QnVmZmVyKTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZl
cigmdmJEZXNjLCBudWxscHRyLCAmbVZlcnRleEJ1ZmZlcik7CiAgICAgQVNTRVJUKFNVQ0NFRURF
RChyZXN1bHQpKTsKICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1WZXJ0ZXhCdWZmZXIsICJDbGVh
cjExIG1hc2tlZCBjbGVhciB2ZXJ0ZXggYnVmZmVyIik7CiAKQEAgLTEyMSwyNyArMTMwLDQ4IEBA
CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KG1SYXN0ZXJpemVyU3RhdGUsICJDbGVhcjExIG1hc2tlZCBjbGVhciByYXN0ZXJpemVyIHN0YXRl
Iik7CiAKLSAgICBpZiAocmVuZGVyZXItPmdldEZlYXR1cmVMZXZlbCgpIDw9IEQzRF9GRUFUVVJF
X0xFVkVMXzlfMykKKyAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2Fwcygp
LmZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewotICAgICAgICBt
RmxvYXRDbGVhclNoYWRlciA9IENyZWF0ZUNsZWFyU2hhZGVyKGRldmljZSwgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULCBnX1ZTX0NsZWFyRmxvYXQsIGdfUFNfQ2xlYXJGbG9hdF9GTDkp
OworICAgICAgICBtRmxvYXRDbGVhclNoYWRlciA9IG5ldyBDbGVhclNoYWRlcihEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDbGVhcjExIEZsb2F0IElMIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19WU19DbGVhckZsb2F0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19WU19DbGVhckZsb2F0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyMTEgRmxvYXQgVlMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX1BTX0NsZWFy
RmxvYXRfRkw5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
cnJheVNpemUoZ19QU19DbGVhckZsb2F0X0ZMOSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJDbGVhcjExIEZsb2F0IFBTIik7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIG1GbG9hdENsZWFyU2hhZGVyID0gQ3JlYXRlQ2xlYXJTaGFkZXIoZGV2
aWNlLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsIGdfVlNfQ2xlYXJGbG9hdCwgZ19Q
U19DbGVhckZsb2F0KTsKKyAgICAgICAgbUZsb2F0Q2xlYXJTaGFkZXIgPSBuZXcgQ2xlYXJTaGFk
ZXIoRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBGbG9hdCBJTCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfVlNfQ2xlYXJGbG9hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfQ2xlYXJG
bG9hdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVh
cjExIEZsb2F0IFZTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19QU19DbGVhckZsb2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBcnJheVNpemUoZ19QU19DbGVhckZsb2F0KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyMTEgRmxvYXQgUFMiKTsKICAgICB9CiAKICAg
ICBpZiAocmVuZGVyZXItPmlzRVMzQ2FwYWJsZSgpKQogICAgIHsKLSAgICAgICAgbVVpbnRDbGVh
clNoYWRlciAgPSBDcmVhdGVDbGVhclNoYWRlcihkZXZpY2UsIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5ULCAgZ19WU19DbGVhclVpbnQsICBnX1BTX0NsZWFyVWludCApOwotICAgICAgICBt
SW50Q2xlYXJTaGFkZXIgICA9IENyZWF0ZUNsZWFyU2hhZGVyKGRldmljZSwgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX1NJTlQsICBnX1ZTX0NsZWFyU2ludCwgIGdfUFNfQ2xlYXJTaW50ICk7Cisg
ICAgICAgIG1VaW50Q2xlYXJTaGFkZXIgPSBuZXcgQ2xlYXJTaGFkZXIoRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNsZWFyMTEgVUlOVCBJTCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19WU19DbGVhclVpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfQ2xlYXJVaW50KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBVSU5UIFZTIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX1BTX0NsZWFyVWludCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19QU19DbGVhclVp
bnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjEx
IFVJTlQgUFMiKTsKKyAgICAgICAgbUludENsZWFyU2hhZGVyID0gbmV3IENsZWFyU2hhZGVyKERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNsZWFyMTEgU0lOVCBJTCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnX1ZTX0NsZWFyU2ludCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1ZTX0NsZWFyU2ludCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBTSU5UIFZTIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfUFNfQ2xlYXJTaW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNf
Q2xlYXJTaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJD
bGVhcjExIFNJTlQgUFMiKTsKICAgICB9Ci0KLSAgICBpZiAocmVuZGVyZXItPmdldERldmljZUNv
bnRleHQxSWZTdXBwb3J0ZWQoKSkKLSAgICB7Ci0gICAgICAgIEQzRDExX0ZFQVRVUkVfREFUQV9E
M0QxMV9PUFRJT05TIGQzZDExT3B0aW9uczsKLSAgICAgICAgZGV2aWNlLT5DaGVja0ZlYXR1cmVT
dXBwb3J0KEQzRDExX0ZFQVRVUkVfRDNEMTFfT1BUSU9OUywgJmQzZDExT3B0aW9ucywgc2l6ZW9m
KEQzRDExX0ZFQVRVUkVfREFUQV9EM0QxMV9PUFRJT05TKSk7Ci0gICAgICAgIG1TdXBwb3J0c0Ns
ZWFyVmlldyA9IChkM2QxMU9wdGlvbnMuQ2xlYXJWaWV3ICE9IEZBTFNFKTsKLSAgICB9CiB9CiAK
IENsZWFyMTE6On5DbGVhcjExKCkKQEAgLTE1MiwyMSArMTgyLDEwIEBACiAgICAgfQogICAgIG1D
bGVhckJsZW5kU3RhdGVzLmNsZWFyKCk7CiAKLSAgICBTYWZlUmVsZWFzZShtRmxvYXRDbGVhclNo
YWRlci5pbnB1dExheW91dCk7Ci0gICAgU2FmZVJlbGVhc2UobUZsb2F0Q2xlYXJTaGFkZXIudmVy
dGV4U2hhZGVyKTsKLSAgICBTYWZlUmVsZWFzZShtRmxvYXRDbGVhclNoYWRlci5waXhlbFNoYWRl
cik7CisgICAgU2FmZURlbGV0ZShtRmxvYXRDbGVhclNoYWRlcik7CisgICAgU2FmZURlbGV0ZSht
VWludENsZWFyU2hhZGVyKTsKKyAgICBTYWZlRGVsZXRlKG1JbnRDbGVhclNoYWRlcik7CiAKLSAg
ICBpZiAobVJlbmRlcmVyLT5pc0VTM0NhcGFibGUoKSkKLSAgICB7Ci0gICAgICAgIFNhZmVSZWxl
YXNlKG1VaW50Q2xlYXJTaGFkZXIuaW5wdXRMYXlvdXQpOwotICAgICAgICBTYWZlUmVsZWFzZSht
VWludENsZWFyU2hhZGVyLnZlcnRleFNoYWRlcik7Ci0gICAgICAgIFNhZmVSZWxlYXNlKG1VaW50
Q2xlYXJTaGFkZXIucGl4ZWxTaGFkZXIpOwotCi0gICAgICAgIFNhZmVSZWxlYXNlKG1JbnRDbGVh
clNoYWRlci5pbnB1dExheW91dCk7Ci0gICAgICAgIFNhZmVSZWxlYXNlKG1JbnRDbGVhclNoYWRl
ci52ZXJ0ZXhTaGFkZXIpOwotICAgICAgICBTYWZlUmVsZWFzZShtSW50Q2xlYXJTaGFkZXIucGl4
ZWxTaGFkZXIpOwotICAgIH0KLQogICAgIGZvciAoQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6
aXRlcmF0b3IgaSA9IG1DbGVhckRlcHRoU3RlbmNpbFN0YXRlcy5iZWdpbigpOyBpICE9IG1DbGVh
ckRlcHRoU3RlbmNpbFN0YXRlcy5lbmQoKTsgaSsrKQogICAgIHsKICAgICAgICAgU2FmZVJlbGVh
c2UoaS0+c2Vjb25kKTsKQEAgLTIxMCwyMSArMjI5LDE1IEBACiAgICAgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAqY29sb3JBdHRhY2htZW50ID0gZmJvRGF0YS5nZXRGaXJzdENvbG9y
QXR0YWNobWVudCgpOwogICAgIGlmIChjb2xvckF0dGFjaG1lbnQgIT0gbnVsbHB0cikKICAgICB7
Ci0gICAgICAgIGZyYW1lYnVmZmVyU2l6ZS53aWR0aCA9IGNvbG9yQXR0YWNobWVudC0+Z2V0V2lk
dGgoKTsKLSAgICAgICAgZnJhbWVidWZmZXJTaXplLmhlaWdodCA9IGNvbG9yQXR0YWNobWVudC0+
Z2V0SGVpZ2h0KCk7Ci0gICAgICAgIGZyYW1lYnVmZmVyU2l6ZS5kZXB0aCA9IDE7CisgICAgICAg
IGZyYW1lYnVmZmVyU2l6ZSA9IGNvbG9yQXR0YWNobWVudC0+Z2V0U2l6ZSgpOwogICAgIH0KICAg
ICBlbHNlIGlmIChkZXB0aEF0dGFjaG1lbnQgIT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGZy
YW1lYnVmZmVyU2l6ZS53aWR0aCA9IGRlcHRoQXR0YWNobWVudC0+Z2V0V2lkdGgoKTsKLSAgICAg
ICAgZnJhbWVidWZmZXJTaXplLmhlaWdodCA9IGRlcHRoQXR0YWNobWVudC0+Z2V0SGVpZ2h0KCk7
Ci0gICAgICAgIGZyYW1lYnVmZmVyU2l6ZS5kZXB0aCA9IDE7CisgICAgICAgIGZyYW1lYnVmZmVy
U2l6ZSA9IGRlcHRoQXR0YWNobWVudC0+Z2V0U2l6ZSgpOwogICAgIH0KICAgICBlbHNlIGlmIChz
dGVuY2lsQXR0YWNobWVudCAhPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXJT
aXplLndpZHRoID0gc3RlbmNpbEF0dGFjaG1lbnQtPmdldFdpZHRoKCk7Ci0gICAgICAgIGZyYW1l
YnVmZmVyU2l6ZS5oZWlnaHQgPSBzdGVuY2lsQXR0YWNobWVudC0+Z2V0SGVpZ2h0KCk7Ci0gICAg
ICAgIGZyYW1lYnVmZmVyU2l6ZS5kZXB0aCA9IDE7CisgICAgICAgIGZyYW1lYnVmZmVyU2l6ZSA9
IHN0ZW5jaWxBdHRhY2htZW50LT5nZXRTaXplKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBA
IC0yNDYsMjAgKzI1OSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLnNjaXNzb3IueSArIGNsZWFyUGFy
YW1zLnNjaXNzb3IuaGVpZ2h0IDwgZnJhbWVidWZmZXJTaXplLmhlaWdodCk7CiAKICAgICBzdGQ6
OnZlY3RvcjxNYXNrZWRSZW5kZXJUYXJnZXQ+IG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0czsKLSAg
ICBSZW5kZXJUYXJnZXQxMSogbWFza2VkQ2xlYXJEZXB0aFN0ZW5jaWwgPSBOVUxMOworICAgIFJl
bmRlclRhcmdldDExKiBtYXNrZWRDbGVhckRlcHRoU3RlbmNpbCA9IG51bGxwdHI7CiAKICAgICBJ
RDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VD
b250ZXh0KCk7CiAgICAgSUQzRDExRGV2aWNlQ29udGV4dDEgKmRldmljZUNvbnRleHQxID0gbVJl
bmRlcmVyLT5nZXREZXZpY2VDb250ZXh0MUlmU3VwcG9ydGVkKCk7CisgICAgSUQzRDExRGV2aWNl
ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCi0gICAgZm9yIChzaXplX3QgY29s
b3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgY29sb3JBdHRhY2htZW50cy5zaXpl
KCk7IGNvbG9yQXR0YWNobWVudCsrKQorICAgIGZvciAoc2l6ZV90IGNvbG9yQXR0YWNobWVudElu
ZGV4ID0gMDsgY29sb3JBdHRhY2htZW50SW5kZXggPCBjb2xvckF0dGFjaG1lbnRzLnNpemUoKTsK
KyAgICAgICAgIGNvbG9yQXR0YWNobWVudEluZGV4KyspCiAgICAgewotICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZhdHRhY2htZW50ID0gY29sb3JBdHRhY2htZW50c1tj
b2xvckF0dGFjaG1lbnRdOworICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50
ICZhdHRhY2htZW50ID0gY29sb3JBdHRhY2htZW50c1tjb2xvckF0dGFjaG1lbnRJbmRleF07CiAK
LSAgICAgICAgaWYgKGNsZWFyUGFyYW1zLmNsZWFyQ29sb3JbY29sb3JBdHRhY2htZW50XSAmJgot
ICAgICAgICAgICAgYXR0YWNobWVudC5pc0F0dGFjaGVkKCkgJiYKLSAgICAgICAgICAgIGRyYXdC
dWZmZXJTdGF0ZXNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FKQorICAgICAgICBpZiAoY2xl
YXJQYXJhbXMuY2xlYXJDb2xvcltjb2xvckF0dGFjaG1lbnRJbmRleF0gJiYgYXR0YWNobWVudC5p
c0F0dGFjaGVkKCkgJiYKKyAgICAgICAgICAgIGRyYXdCdWZmZXJTdGF0ZXNbY29sb3JBdHRhY2ht
ZW50SW5kZXhdICE9IEdMX05PTkUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlclRhcmdl
dDExICpyZW5kZXJUYXJnZXQgPSBOVUxMOworICAgICAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJl
bmRlclRhcmdldCA9IG51bGxwdHI7CiAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBhdHRh
Y2htZW50LmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsKICAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7CkBAIC0yNzEsOSArMjg1LDEyIEBACiAgICAg
ICAgICAgICBpZiAoY2xlYXJQYXJhbXMuY29sb3JDbGVhclR5cGUgPT0gR0xfRkxPQVQgJiYKICAg
ICAgICAgICAgICAgICAhKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCB8fCBm
b3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fCBmb3Jt
YXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1BTElaRUQpKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEVSUigiSXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byBj
bGVhciBhIHJlbmRlciBidWZmZXIgd2hpY2ggaXMgbm90IG5vcm1hbGl6ZWQgZml4ZWQgcG9pbnQg
b3IgZmxvYXRpbmctIgotICAgICAgICAgICAgICAgICAgICAicG9pbnQgdG8gZmxvYXRpbmcgcG9p
bnQgdmFsdWVzIChjb2xvciBhdHRhY2htZW50ICV1IGhhcyBpbnRlcm5hbCBmb3JtYXQgMHglWCku
IiwgY29sb3JBdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LmdldElu
dGVybmFsRm9ybWF0KCkpOworICAgICAgICAgICAgICAgIEVSUigKKyAgICAgICAgICAgICAgICAg
ICAgIkl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgdG8gY2xlYXIgYSByZW5kZXIgYnVmZmVyIHdo
aWNoIGlzIG5vdCBub3JtYWxpemVkICIKKyAgICAgICAgICAgICAgICAgICAgImZpeGVkIHBvaW50
IG9yIGZsb2F0aW5nLSIKKyAgICAgICAgICAgICAgICAgICAgInBvaW50IHRvIGZsb2F0aW5nIHBv
aW50IHZhbHVlcyAoY29sb3IgYXR0YWNobWVudCAldSBoYXMgaW50ZXJuYWwgZm9ybWF0ICIKKyAg
ICAgICAgICAgICAgICAgICAgIjB4JVgpLiIsCisgICAgICAgICAgICAgICAgICAgIGNvbG9yQXR0
YWNobWVudEluZGV4LCBhdHRhY2htZW50LmdldEludGVybmFsRm9ybWF0KCkpOwogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoKGZvcm1hdEluZm8ucmVkQml0cyA9PSAwIHx8ICFjbGVh
clBhcmFtcy5jb2xvck1hc2tSZWQpICYmCkBAIC0yODQsNyArMzAxLDcgQEAKICAgICAgICAgICAg
ICAgICAvLyBFdmVyeSBjaGFubmVsIGVpdGhlciBkb2VzIG5vdCBleGlzdCBpbiB0aGUgcmVuZGVy
IHRhcmdldCBvciBpcyBtYXNrZWQgb3V0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgoIW1TdXBwb3J0c0NsZWFyVmlldyAmJiBu
ZWVkU2Npc3NvcmVkQ2xlYXIpIHx8IGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlICE9IEdMX0ZM
T0FUIHx8CisgICAgICAgICAgICBlbHNlIGlmICgoIShtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFE
ZXZpY2VDYXBzKCkuc3VwcG9ydHNDbGVhclZpZXcpICYmIG5lZWRTY2lzc29yZWRDbGVhcikgfHwg
Y2xlYXJQYXJhbXMuY29sb3JDbGVhclR5cGUgIT0gR0xfRkxPQVQgfHwKICAgICAgICAgICAgICAg
ICAgICAgIChmb3JtYXRJbmZvLnJlZEJpdHMgICA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFz
a1JlZCkgICB8fAogICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdEluZm8uZ3JlZW5CaXRzID4g
MCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4pIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAoZm9ybWF0SW5mby5ibHVlQml0cyAgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVl
KSB8fApAQCAtMjkyLDcgKzMwOSw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Ly8gQSBtYXNrZWQgY2xlYXIgaXMgcmVxdWlyZWQsIG9yIGEgc2Npc3NvcmVkIGNsZWFyIGlzIHJl
cXVpcmVkIGFuZCBJRDNEMTFEZXZpY2VDb250ZXh0MTo6Q2xlYXJWaWV3IGlzIHVuYXZhaWxhYmxl
CiAgICAgICAgICAgICAgICAgTWFza2VkUmVuZGVyVGFyZ2V0IG1hc2tBbmRSdDsKLSAgICAgICAg
ICAgICAgICBib29sIGNsZWFyQ29sb3IgPSBjbGVhclBhcmFtcy5jbGVhckNvbG9yW2NvbG9yQXR0
YWNobWVudF07CisgICAgICAgICAgICAgICAgYm9vbCBjbGVhckNvbG9yICAgICAgICA9IGNsZWFy
UGFyYW1zLmNsZWFyQ29sb3JbY29sb3JBdHRhY2htZW50SW5kZXhdOwogICAgICAgICAgICAgICAg
IG1hc2tBbmRSdC5jb2xvck1hc2tbMF0gPSAoY2xlYXJDb2xvciAmJiBjbGVhclBhcmFtcy5jb2xv
ck1hc2tSZWQpOwogICAgICAgICAgICAgICAgIG1hc2tBbmRSdC5jb2xvck1hc2tbMV0gPSAoY2xl
YXJDb2xvciAmJiBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbik7CiAgICAgICAgICAgICAgICAg
bWFza0FuZFJ0LmNvbG9yTWFza1syXSA9IChjbGVhckNvbG9yICYmIGNsZWFyUGFyYW1zLmNvbG9y
TWFza0JsdWUpOwpAQCAtMzEwLDExICszMjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJuYWwgcmVuZGVyIHRhcmdldCB2
aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7CiAgICAgICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0g
ZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKHJlbmRlclRhcmdldC0+Z2V0RFhHSUZvcm1hdCgpKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBhdXRvICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRE
WEdJRm9ybWF0SW5mbygKKyAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkdldEFOR0xFRm9ybWF0
U2V0KHJlbmRlclRhcmdldC0+Z2V0QU5HTEVGb3JtYXQoKSkucnR2Rm9ybWF0KTsKIAogICAgICAg
ICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBhY3R1YWwgZm9ybWF0IGhhcyBhIGNoYW5uZWwgdGhh
dCB0aGUgaW50ZXJuYWwgZm9ybWF0IGRvZXMgbm90IGFuZCBzZXQgdGhlbSB0byB0aGUKICAgICAg
ICAgICAgICAgICAvLyBkZWZhdWx0IHZhbHVlcwotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0
IGNsZWFyVmFsdWVzWzRdID0KKyAgICAgICAgICAgICAgICBmbG9hdCBjbGVhclZhbHVlc1s0XSA9
CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdEluZm8ucmVk
Qml0cyAgID09IDAgJiYgZHhnaUZvcm1hdEluZm8ucmVkQml0cyAgID4gMCkgPyAwLjBmIDogY2xl
YXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5yZWQpLAogICAgICAgICAgICAgICAgICAgICAoKGZv
cm1hdEluZm8uZ3JlZW5CaXRzID09IDAgJiYgZHhnaUZvcm1hdEluZm8uZ3JlZW5CaXRzID4gMCkg
PyAwLjBmIDogY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZS5ncmVlbiksCkBAIC0zMjIsNiAr
MzQwLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICgoZm9ybWF0SW5mby5hbHBoYUJpdHMgPT0g
MCAmJiBkeGdpRm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwKSA/IDEuMGYgOiBjbGVhclBhcmFtcy5j
b2xvckZDbGVhclZhbHVlLmFscGhhKSwKICAgICAgICAgICAgICAgICB9OwogCisgICAgICAgICAg
ICAgICAgaWYgKGR4Z2lGb3JtYXRJbmZvLmFscGhhQml0cyA9PSAxKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBkcml2ZXJzIGRvIG5vdCBjb3JyZWN0bHkg
aGFuZGxlIGNhbGxpbmcgQ2xlYXIoKSBvbiBhIGZvcm1hdCB3aXRoIDEtYml0IGFscGhhLgorICAg
ICAgICAgICAgICAgICAgICAvLyBUaGV5IGNhbiBpbmNvcnJlY3RseSByb3VuZCBhbGwgbm9uLXpl
cm8gdmFsdWVzIHVwIHRvIDEuMGYuIE5vdGUgdGhhdCBXQVJQIGRvZXMgbm90IGRvIHRoaXMuCisg
ICAgICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBoYW5kbGUgdGhlIHJvdW5kaW5nIGZvciB0
aGVtIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFsdWVzWzNdID0gKGNsZWFy
UGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUuYWxwaGEgPj0gMC41ZikgPyAxLjBmIDogMC4wZjsKKyAg
ICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBpZiAobmVlZFNjaXNzb3JlZENsZWFy
KQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkbid0
IHJlYWNoIGhlcmUgaWYgZGV2aWNlQ29udGV4dDEgaXMgdW5hdmFpbGFibGUuCkBAIC0zNDgsMTQg
KzM3NCwxNSBAQAogICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRh
Y2htZW50ID0gKGRlcHRoQXR0YWNobWVudCAhPSBudWxscHRyKSA/IGRlcHRoQXR0YWNobWVudCA6
IHN0ZW5jaWxBdHRhY2htZW50OwogICAgICAgICBBU1NFUlQoYXR0YWNobWVudCAhPSBudWxscHRy
KTsKIAotICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKKyAgICAg
ICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7CiAgICAgICAgIGdsOjpF
cnJvciBlcnJvciA9IGF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KTsK
ICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQg
JmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKHJlbmRlclRhcmdldC0+
Z2V0RFhHSUZvcm1hdCgpKTsKKyAgICAgICAgY29uc3QgYXV0byAmZHhnaUZvcm1hdEluZm8gPSBk
M2QxMTo6R2V0RFhHSUZvcm1hdEluZm8oCisgICAgICAgICAgICBkM2QxMTo6R2V0QU5HTEVGb3Jt
YXRTZXQocmVuZGVyVGFyZ2V0LT5nZXRBTkdMRUZvcm1hdCgpKS5kc3ZGb3JtYXQpOwogCiAgICAg
ICAgIHVuc2lnbmVkIGludCBzdGVuY2lsVW5tYXNrZWQgPSAoc3RlbmNpbEF0dGFjaG1lbnQgIT0g
bnVsbHB0cikgPyAoMSA8PCBkeGdpRm9ybWF0SW5mby5zdGVuY2lsQml0cykgLSAxIDogMDsKICAg
ICAgICAgYm9vbCBuZWVkTWFza2VkU3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuY2xlYXJTdGVu
Y2lsICYmIChjbGVhclBhcmFtcy5zdGVuY2lsV3JpdGVNYXNrICYgc3RlbmNpbFVubWFza2VkKSAh
PSBzdGVuY2lsVW5tYXNrZWQ7CkBAIC00MjAsNyArNDQ3LDcgQEAKIAogICAgICAgICAgICAgcnR2
c1tpXSA9IHJ0djsKICAgICAgICAgfQotICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpk
c3YgPSBtYXNrZWRDbGVhckRlcHRoU3RlbmNpbCA/IG1hc2tlZENsZWFyRGVwdGhTdGVuY2lsLT5n
ZXREZXB0aFN0ZW5jaWxWaWV3KCkgOiBOVUxMOworICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxW
aWV3ICpkc3YgPSBtYXNrZWRDbGVhckRlcHRoU3RlbmNpbCA/IG1hc2tlZENsZWFyRGVwdGhTdGVu
Y2lsLT5nZXREZXB0aFN0ZW5jaWxWaWV3KCkgOiBudWxscHRyOwogCiAgICAgICAgIElEM0QxMUJs
ZW5kU3RhdGUgKmJsZW5kU3RhdGUgPSBnZXRCbGVuZFN0YXRlKG1hc2tlZENsZWFyUmVuZGVyVGFy
Z2V0cyk7CiAgICAgICAgIGNvbnN0IEZMT0FUIGJsZW5kRmFjdG9yc1s0XSA9IHsgMS4wZiwgMS4w
ZiwgMS4wZiwgMS4wZiB9OwpAQCAtNDMyLDcgKzQ1OSw3IEBACiAgICAgICAgIC8vIFNldCB0aGUg
dmVydGljZXMKICAgICAgICAgVUlOVCB2ZXJ0ZXhTdHJpZGUgPSAwOwogICAgICAgICBjb25zdCBV
SU5UIHN0YXJ0SWR4ID0gMDsKLSAgICAgICAgY29uc3QgQ2xlYXJTaGFkZXIqIHNoYWRlciA9IE5V
TEw7CisgICAgICAgIENsZWFyU2hhZGVyICpzaGFkZXIgPSBudWxscHRyOwogICAgICAgICBEM0Qx
MV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CiAgICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlQ29udGV4dC0+TWFwKG1WZXJ0ZXhCdWZmZXIsIDAsIEQzRDExX01BUF9XUklU
RV9ESVNDQVJELCAwLCAmbWFwcGVkUmVzb3VyY2UpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCkBAIC00NDAsMjUgKzQ2NywyNSBAQAogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBtYXNrZWQgY2xlYXIgdmVy
dGV4IGJ1ZmZlciwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvclB0ciA9IGNsZWFyUGFyYW1zLnNjaXNzb3JF
bmFibGVkID8gJmNsZWFyUGFyYW1zLnNjaXNzb3IgOiBOVUxMOworICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICpzY2lzc29yUHRyID0gY2xlYXJQYXJhbXMuc2Npc3NvckVuYWJsZWQgPyAmY2xl
YXJQYXJhbXMuc2Npc3NvciA6IG51bGxwdHI7CiAgICAgICAgIHN3aXRjaCAoY2xlYXJQYXJhbXMu
Y29sb3JDbGVhclR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgogICAg
ICAgICAgICAgQXBwbHlWZXJ0aWNlcyhmcmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFy
UGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUsIGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwgbWFw
cGVkUmVzb3VyY2UucERhdGEpOwogICAgICAgICAgICAgdmVydGV4U3RyaWRlID0gc2l6ZW9mKGQz
ZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8ZmxvYXQ+KTsKLSAgICAgICAgICAgIHNoYWRl
ciA9ICZtRmxvYXRDbGVhclNoYWRlcjsKKyAgICAgICAgICAgIHNoYWRlciA9IG1GbG9hdENsZWFy
U2hhZGVyOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVDoKICAgICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29y
UHRyLCBjbGVhclBhcmFtcy5jb2xvclVJQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVwdGhDbGVh
clZhbHVlLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CiAgICAgICAgICAgICB2ZXJ0ZXhTdHJpZGUg
PSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDx1bnNpZ25lZCBpbnQ+KTsK
LSAgICAgICAgICAgIHNoYWRlciA9ICZtVWludENsZWFyU2hhZGVyOworICAgICAgICAgICAgc2hh
ZGVyID0gbVVpbnRDbGVhclNoYWRlcjsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAg
Y2FzZSBHTF9JTlQ6CiAgICAgICAgICAgICBBcHBseVZlcnRpY2VzKGZyYW1lYnVmZmVyU2l6ZSwg
c2Npc3NvclB0ciwgY2xlYXJQYXJhbXMuY29sb3JJQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVw
dGhDbGVhclZhbHVlLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CiAgICAgICAgICAgICB2ZXJ0ZXhT
dHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDxpbnQ+KTsKLSAg
ICAgICAgICAgIHNoYWRlciA9ICZtSW50Q2xlYXJTaGFkZXI7CisgICAgICAgICAgICBzaGFkZXIg
PSBtSW50Q2xlYXJTaGFkZXI7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1
bHQ6CkBAIC00ODQsMTcgKzUxMSwxNyBAQAogICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFN0
YXRlKG1SYXN0ZXJpemVyU3RhdGUpOwogCiAgICAgICAgIC8vIEFwcGx5IHNoYWRlcnMKLSAgICAg
ICAgZGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChzaGFkZXItPmlucHV0TGF5b3V0KTsK
LSAgICAgICAgZGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIoc2hhZGVyLT52ZXJ0ZXhTaGFkZXIs
IE5VTEwsIDApOwotICAgICAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlcihzaGFkZXItPnBp
eGVsU2hhZGVyLCBOVUxMLCAwKTsKLSAgICAgICAgZGV2aWNlQ29udGV4dC0+R1NTZXRTaGFkZXIo
TlVMTCwgTlVMTCwgMCk7CisgICAgICAgIGRldmljZUNvbnRleHQtPklBU2V0SW5wdXRMYXlvdXQo
c2hhZGVyLT5pbnB1dExheW91dC0+cmVzb2x2ZShkZXZpY2UpKTsKKyAgICAgICAgZGV2aWNlQ29u
dGV4dC0+VlNTZXRTaGFkZXIoc2hhZGVyLT52ZXJ0ZXhTaGFkZXIucmVzb2x2ZShkZXZpY2UpLCBu
dWxscHRyLCAwKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIoc2hhZGVyLT5w
aXhlbFNoYWRlci5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOworICAgICAgICBkZXZpY2VD
b250ZXh0LT5HU1NldFNoYWRlcihudWxscHRyLCBudWxscHRyLCAwKTsKIAogICAgICAgICAvLyBB
cHBseSB2ZXJ0ZXggYnVmZmVyCiAgICAgICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVm
ZmVycygwLCAxLCAmbVZlcnRleEJ1ZmZlciwgJnZlcnRleFN0cmlkZSwgJnN0YXJ0SWR4KTsKICAg
ICAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRQcmltaXRpdmVUb3BvbG9neShEM0RfUFJJTUlUSVZF
X1RPUE9MT0dZX1RSSUFOR0xFU1RSSVApOwogCiAgICAgICAgIC8vIEFwcGx5IHJlbmRlciB0YXJn
ZXRzCi0gICAgICAgIGRldmljZUNvbnRleHQtPk9NU2V0UmVuZGVyVGFyZ2V0cyhydHZzLnNpemUo
KSwgKHJ0dnMuZW1wdHkoKSA/IE5VTEwgOiAmcnR2c1swXSksIGRzdik7CisgICAgICAgIG1SZW5k
ZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnNldE9uZVRpbWVSZW5kZXJUYXJnZXRzKHJ0dnMsIGRz
dik7CiAKICAgICAgICAgLy8gRHJhdyB0aGUgY2xlYXIgcXVhZAogICAgICAgICBkZXZpY2VDb250
ZXh0LT5EcmF3KDQsIDApOwpAQCAtNTA4LDcgKzUzNSw3IEBACiAKIElEM0QxMUJsZW5kU3RhdGUg
KkNsZWFyMTE6OmdldEJsZW5kU3RhdGUoY29uc3Qgc3RkOjp2ZWN0b3I8TWFza2VkUmVuZGVyVGFy
Z2V0PiYgcnRzKQogewotICAgIENsZWFyQmxlbmRJbmZvIGJsZW5kS2V5ID0geyAwIH07CisgICAg
Q2xlYXJCbGVuZEluZm8gYmxlbmRLZXkgPSB7fTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyBpKyspCiAgICAg
ewogICAgICAgICBpZiAoaSA8IHJ0cy5zaXplKCkpCkBAIC01NTEsMTIgKzU3OCwxMiBAQAogICAg
ICAgICB9CiAKICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOwotICAgICAgICBJRDNEMTFCbGVuZFN0YXRlKiBibGVuZFN0YXRlID0gTlVMTDsKKyAg
ICAgICAgSUQzRDExQmxlbmRTdGF0ZSogYmxlbmRTdGF0ZSA9IG51bGxwdHI7CiAgICAgICAgIEhS
RVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCbGVuZFN0YXRlKCZibGVuZERlc2MsICZibGVu
ZFN0YXRlKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpIHx8ICFibGVuZFN0YXRlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBFUlIoIlVuYWJsZSB0byBjcmVhdGUgYSBJRDNEMTFCbGVuZFN0
YXRlLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAgbUNsZWFy
QmxlbmRTdGF0ZXNbYmxlbmRLZXldID0gYmxlbmRTdGF0ZTsKQEAgLTU5NiwxMiArNjIzLDEyIEBA
CiAgICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRnVuYyA9IEQzRDExX0NPTVBBUklTT05f
QUxXQVlTOwogCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKLSAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUqIGRzU3RhdGUgPSBOVUxM
OworICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSogZHNTdGF0ZSA9IG51bGxwdHI7CiAg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZSgm
ZHNEZXNjLCAmZHNTdGF0ZSk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAhZHNTdGF0
ZSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJVbmFibGUgdG8gY3JlYXRlIGEgSUQzRDEx
RGVwdGhTdGVuY2lsU3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKLSAgICAgICAgICAg
IHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAog
ICAgICAgICBtQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXNbZHNLZXldID0gZHNTdGF0ZTsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Q2xlYXIxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0Ns
ZWFyMTEuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgImxpYkFO
R0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC00MSw0NCAr
NDIsNTQgQEAKICAgICBJRDNEMTFCbGVuZFN0YXRlICpnZXRCbGVuZFN0YXRlKGNvbnN0IHN0ZDo6
dmVjdG9yPE1hc2tlZFJlbmRlclRhcmdldD4gJnJ0cyk7CiAgICAgSUQzRDExRGVwdGhTdGVuY2ls
U3RhdGUgKmdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQ
YXJhbXMpOwogCi0gICAgc3RydWN0IENsZWFyU2hhZGVyCisgICAgc3RydWN0IENsZWFyU2hhZGVy
IGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHsKLSAgICAgICAgSUQzRDEx
SW5wdXRMYXlvdXQgKmlucHV0TGF5b3V0OwotICAgICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKnZl
cnRleFNoYWRlcjsKLSAgICAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVyOworICAg
ICAgICBDbGVhclNoYWRlcihEWEdJX0ZPUk1BVCBjb2xvclR5cGUsCisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmlucHV0TGF5b3V0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgQllURSAqdnNCeXRlQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZzU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdnNEZWJ1Z05hbWUsCisgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEJZVEUgKnBzQnl0ZUNvZGUsCisgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBwc1NpemUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzRGVidWdOYW1l
KTsKKyAgICAgICAgfkNsZWFyU2hhZGVyKCk7CisKKyAgICAgICAgZDNkMTE6OkxhenlJbnB1dExh
eW91dCAqaW5wdXRMYXlvdXQ7CisgICAgICAgIGQzZDExOjpMYXp5U2hhZGVyPElEM0QxMVZlcnRl
eFNoYWRlcj4gdmVydGV4U2hhZGVyOworICAgICAgICBkM2QxMTo6TGF6eVNoYWRlcjxJRDNEMTFQ
aXhlbFNoYWRlcj4gcGl4ZWxTaGFkZXI7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlIDx1bnNpZ25l
ZCBpbnQgdnNTaXplLCB1bnNpZ25lZCBpbnQgcHNTaXplPgogICAgIHN0YXRpYyBDbGVhclNoYWRl
ciBDcmVhdGVDbGVhclNoYWRlcihJRDNEMTFEZXZpY2UgKmRldmljZSwgRFhHSV9GT1JNQVQgY29s
b3JUeXBlLCBjb25zdCBCWVRFKCZ2c0J5dGVDb2RlKVt2c1NpemVdLCBjb25zdCBCWVRFKCZwc0J5
dGVDb2RlKVtwc1NpemVdKTsKIAotICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKLQogICAgIHN0
cnVjdCBDbGVhckJsZW5kSW5mbwogICAgIHsKICAgICAgICAgYm9vbCBtYXNrQ2hhbm5lbHNbRDNE
MTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlRdWzRdOwogICAgIH07CiAgICAgdHlw
ZWRlZiBib29sKCpDbGVhckJsZW5kSW5mb0NvbXBhcmlzb25GdW5jdGlvbikoY29uc3QgQ2xlYXJC
bGVuZEluZm8mLCBjb25zdCBDbGVhckJsZW5kSW5mbyAmKTsKICAgICB0eXBlZGVmIHN0ZDo6bWFw
PENsZWFyQmxlbmRJbmZvLCBJRDNEMTFCbGVuZFN0YXRlKiwgQ2xlYXJCbGVuZEluZm9Db21wYXJp
c29uRnVuY3Rpb24+IENsZWFyQmxlbmRTdGF0ZU1hcDsKLSAgICBDbGVhckJsZW5kU3RhdGVNYXAg
bUNsZWFyQmxlbmRTdGF0ZXM7CiAKLSAgICBDbGVhclNoYWRlciBtRmxvYXRDbGVhclNoYWRlcjsK
LSAgICBDbGVhclNoYWRlciBtVWludENsZWFyU2hhZGVyOwotICAgIENsZWFyU2hhZGVyIG1JbnRD
bGVhclNoYWRlcjsKLQogICAgIHN0cnVjdCBDbGVhckRlcHRoU3RlbmNpbEluZm8KICAgICB7CiAg
ICAgICAgIGJvb2wgY2xlYXJEZXB0aDsKICAgICAgICAgYm9vbCBjbGVhclN0ZW5jaWw7CiAgICAg
ICAgIFVJTlQ4IHN0ZW5jaWxXcml0ZU1hc2s7CiAgICAgfTsKLSAgICB0eXBlZGVmIGJvb2wgKCpD
bGVhckRlcHRoU3RlbmNpbEluZm9Db21wYXJpc29uRnVuY3Rpb24pKGNvbnN0IENsZWFyRGVwdGhT
dGVuY2lsSW5mbyYsIGNvbnN0IENsZWFyRGVwdGhTdGVuY2lsSW5mbyAmKTsKKyAgICB0eXBlZGVm
IGJvb2woKkNsZWFyRGVwdGhTdGVuY2lsSW5mb0NvbXBhcmlzb25GdW5jdGlvbikoY29uc3QgQ2xl
YXJEZXB0aFN0ZW5jaWxJbmZvJiwgY29uc3QgQ2xlYXJEZXB0aFN0ZW5jaWxJbmZvICYpOwogICAg
IHR5cGVkZWYgc3RkOjptYXA8Q2xlYXJEZXB0aFN0ZW5jaWxJbmZvLCBJRDNEMTFEZXB0aFN0ZW5j
aWxTdGF0ZSosIENsZWFyRGVwdGhTdGVuY2lsSW5mb0NvbXBhcmlzb25GdW5jdGlvbj4gQ2xlYXJE
ZXB0aFN0ZW5jaWxTdGF0ZU1hcDsKKworICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKKworICAg
IENsZWFyQmxlbmRTdGF0ZU1hcCBtQ2xlYXJCbGVuZFN0YXRlczsKKworICAgIENsZWFyU2hhZGVy
ICptRmxvYXRDbGVhclNoYWRlcjsKKyAgICBDbGVhclNoYWRlciAqbVVpbnRDbGVhclNoYWRlcjsK
KyAgICBDbGVhclNoYWRlciAqbUludENsZWFyU2hhZGVyOworCiAgICAgQ2xlYXJEZXB0aFN0ZW5j
aWxTdGF0ZU1hcCBtQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXM7CiAKICAgICBJRDNEMTFCdWZmZXIg
Km1WZXJ0ZXhCdWZmZXI7CiAgICAgSUQzRDExUmFzdGVyaXplclN0YXRlICptUmFzdGVyaXplclN0
YXRlOwotCi0gICAgYm9vbCBtU3VwcG9ydHNDbGVhclZpZXc7CiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVn
QW5ub3RhdG9yMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5jcHAJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDQ0ICszNSw4NCBAQAogICAgIH0KIH0KIAotdm9pZCBEZWJ1Z0Fubm90YXRvcjExOjpiZWdpbkV2
ZW50KGNvbnN0IHN0ZDo6d3N0cmluZyAmZXZlbnROYW1lKQordm9pZCBEZWJ1Z0Fubm90YXRvcjEx
OjpiZWdpbkV2ZW50KGNvbnN0IHdjaGFyX3QgKmV2ZW50TmFtZSkKIHsKICAgICBpbml0aWFsaXpl
RGV2aWNlKCk7CiAKLSAgICBtVXNlckRlZmluZWRBbm5vdGF0aW9uLT5CZWdpbkV2ZW50KGV2ZW50
TmFtZS5jX3N0cigpKTsKKyAgICBpZiAobVVzZXJEZWZpbmVkQW5ub3RhdGlvbiAhPSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgbVVzZXJEZWZpbmVkQW5ub3RhdGlvbi0+QmVnaW5FdmVudChldmVu
dE5hbWUpOworICAgIH0KIH0KIAogdm9pZCBEZWJ1Z0Fubm90YXRvcjExOjplbmRFdmVudCgpCiB7
CiAgICAgaW5pdGlhbGl6ZURldmljZSgpOwogCi0gICAgbVVzZXJEZWZpbmVkQW5ub3RhdGlvbi0+
RW5kRXZlbnQoKTsKKyAgICBpZiAobVVzZXJEZWZpbmVkQW5ub3RhdGlvbiAhPSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgbVVzZXJEZWZpbmVkQW5ub3RhdGlvbi0+RW5kRXZlbnQoKTsKKyAgICB9
CiB9CiAKLXZvaWQgRGVidWdBbm5vdGF0b3IxMTo6c2V0TWFya2VyKGNvbnN0IHN0ZDo6d3N0cmlu
ZyAmbWFya2VyTmFtZSkKK3ZvaWQgRGVidWdBbm5vdGF0b3IxMTo6c2V0TWFya2VyKGNvbnN0IHdj
aGFyX3QgKm1hcmtlck5hbWUpCiB7CiAgICAgaW5pdGlhbGl6ZURldmljZSgpOwogCi0gICAgbVVz
ZXJEZWZpbmVkQW5ub3RhdGlvbi0+U2V0TWFya2VyKG1hcmtlck5hbWUuY19zdHIoKSk7CisgICAg
aWYgKG1Vc2VyRGVmaW5lZEFubm90YXRpb24gIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1V
c2VyRGVmaW5lZEFubm90YXRpb24tPlNldE1hcmtlcihtYXJrZXJOYW1lKTsKKyAgICB9CiB9CiAK
IGJvb2wgRGVidWdBbm5vdGF0b3IxMTo6Z2V0U3RhdHVzKCkKIHsKLSAgICAvLyBJRDNEVXNlckRl
ZmluZWRBbm5vdGF0aW9uOjpHZXRTdGF0dXMgZG9lc24ndCB3b3JrIHdpdGggdGhlIEdyYXBoaWNz
IERpYWdub3N0aWNzIHRvb2xzIGluIFZpc3VhbCBTdHVkaW8gMjAxMy4KKyNpZiBkZWZpbmVkKEFO
R0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQorI2lmIChOVERESV9WRVJTSU9OID09IE5URERJX1dJ
TjEwKQorICAgIGluaXRpYWxpemVEZXZpY2UoKTsKIAotI2lmIGRlZmluZWQoX0RFQlVHKSAmJiBk
ZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQotICAgIC8vIEluIHRoZSBXaW5kb3dz
IFN0b3JlLCB3ZSBjYW4gdXNlIElEWEdyYXBoaWNzQW5hbHlzaXMuIFRoZSBjYWxsIHRvIEdldERl
YnVnSW50ZXJmYWNlMSBvbmx5IHN1Y2NlZWRzIGlmIHRoZSBhcHAgaXMgdW5kZXIgY2FwdHVyZS4K
KyAgICBpZiAobVVzZXJEZWZpbmVkQW5ub3RhdGlvbiAhPSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhKG1Vc2VyRGVmaW5lZEFubm90YXRpb24tPkdldFN0YXR1cygpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsgIC8vIERlZmF1bHQgaWYgaW5pdGlhbGl6ZURldmljZSgpIGZh
aWxlZAorI2VsaWYgZGVmaW5lZChfREVCVUcpCisgICAgc3RhdGljIGJvb2wgdW5kZXJDYXB0dXJl
ID0gdHJ1ZTsKKworICAgIC8vIElEM0RVc2VyRGVmaW5lZEFubm90YXRpb246OkdldFN0YXR1cyBk
b2Vzbid0IHdvcmsgd2l0aCB0aGUgR3JhcGhpY3MgRGlhZ25vc3RpY3MgdG9vbHMgaW4KKyAgICAv
LyBXaW5kb3dzIDguMS9WaXN1YWwgU3R1ZGlvIDIwMTMuIFdlIGNhbiB1c2UgSURYR3JhcGhpY3NB
bmFseXNpcywgdGhvdWdoLgorICAgIC8vIFRoZSBjYWxsIHRvIEdldERlYnVnSW50ZXJmYWNlMSBv
bmx5IHN1Y2NlZWRzIGlmIHRoZSBhcHAgaXMgdW5kZXIgY2FwdHVyZS4KICAgICAvLyBUaGlzIHNo
b3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBERUJVRyBtb2RlLgotICAgIC8vIElmIGFuIGFwcCBsaW5r
cyBhZ2FpbnN0IERYR0lHZXREZWJ1Z0ludGVyZmFjZTEgaW4gcmVsZWFzZSBtb2RlIHRoZW4gaXQg
d2lsbCBmYWlsIFdpbmRvd3MgU3RvcmUgaW5nZXN0aW9uIGNoZWNrcy4KLSAgICBJRFhHcmFwaGlj
c0FuYWx5c2lzICpncmFwaGljc0FuYWx5c2lzOwotICAgIERYR0lHZXREZWJ1Z0ludGVyZmFjZTEo
MCwgSUlEX1BQVl9BUkdTKCZncmFwaGljc0FuYWx5c2lzKSk7Ci0gICAgYm9vbCB1bmRlckNhcHR1
cmUgPSAoZ3JhcGhpY3NBbmFseXNpcyAhPSBudWxscHRyKTsKLSAgICBTYWZlUmVsZWFzZShncmFw
aGljc0FuYWx5c2lzKTsKKyAgICAvLyBJZiBhbiBhcHAgbGlua3MgYWdhaW5zdCBEWEdJR2V0RGVi
dWdJbnRlcmZhY2UxIGluIHJlbGVhc2UgbW9kZSB0aGVuIGl0IHdpbGwgZmFpbCBXaW5kb3dzCisg
ICAgLy8gU3RvcmUgaW5nZXN0aW9uIGNoZWNrcy4KKworICAgIC8vIENhY2hlIHRoZSByZXN1bHQg
dG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gRFhHSUdldERlYnVnSW50ZXJmYWNlMQor
ICAgIHN0YXRpYyBib29sIHRyaWVkSURYR3JhcGhpY3NBbmFseXNpcyA9IGZhbHNlOworCisgICAg
aWYgKCF0cmllZElEWEdyYXBoaWNzQW5hbHlzaXMpCisgICAgeworICAgICAgICBJRFhHcmFwaGlj
c0FuYWx5c2lzICpncmFwaGljc0FuYWx5c2lzID0gbnVsbHB0cjsKKworICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IERYR0lHZXREZWJ1Z0ludGVyZmFjZTEoMCwgSUlEX1BQVl9BUkdTKCZncmFwaGlj
c0FuYWx5c2lzKSk7CisgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgewor
ICAgICAgICAgICAgdW5kZXJDYXB0dXJlID0gKGdyYXBoaWNzQW5hbHlzaXMgIT0gbnVsbHB0cik7
CisgICAgICAgIH0KKworICAgICAgICBTYWZlUmVsZWFzZShncmFwaGljc0FuYWx5c2lzKTsKKyAg
ICAgICAgdHJpZWRJRFhHcmFwaGljc0FuYWx5c2lzID0gdHJ1ZTsKKyAgICB9CisKICAgICByZXR1
cm4gdW5kZXJDYXB0dXJlOwotI2VuZGlmIC8vIF9ERUJVRyAmJiAhQU5HTEVfRU5BQkxFX1dJTkRP
V1NfU1RPUkUKLQotICAgIC8vIE90aGVyd2lzZSwgd2UgaGF2ZSB0byByZXR1cm4gdHJ1ZSBoZXJl
LgorI2Vsc2UKKyAgICAvLyBXZSBjYW4ndCBkZXRlY3QgR2V0U3RhdHVzKCkgb24gcmVsZWFzZSBX
aW5SVCA4LjEgYnVpbGRzLCBzbyBhbHdheXMgcmV0dXJuIHRydWUuCiAgICAgcmV0dXJuIHRydWU7
CisjZW5kaWYgIC8vIChOVERESV9WRVJTSU9OID09IE5URERJX1dJTjEwKSBvciBfREVCVUcKKyNl
bHNlCisgICAgLy8gV2UgY2FuJ3QgZGV0ZWN0IEdldFN0YXR1cygpIG9uIGRlc2t0b3AgQU5HTEUg
YnVpbGRzIHNvIGFsd2F5cyByZXR1cm4gdHJ1ZS4KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZiAg
Ly8gQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUKIH0KIAogdm9pZCBEZWJ1Z0Fubm90YXRvcjEx
Ojppbml0aWFsaXplRGV2aWNlKCkKQEAgLTk1LDE0ICsxMzUsMTUgQEAKICAgICAgICAgLy8gQ3Jl
YXRlIGEgRDNEX0RSSVZFUl9UWVBFX05VTEwgZGV2aWNlLCB3aGljaCBpcyBtdWNoIGNoZWFwZXIg
dGhhbiBvdGhlciB0eXBlcyBvZiBkZXZpY2UuCiAgICAgICAgIGhyID0gRDNEMTFDcmVhdGVEZXZp
Y2UoTlVMTCwgRDNEX0RSSVZFUl9UWVBFX05VTEwsIG51bGxwdHIsIDAsIG51bGxwdHIsIDAsIEQz
RDExX1NES19WRVJTSU9OLCAmZGV2aWNlLCBudWxscHRyLCAmY29udGV4dCk7CiAgICAgICAgIEFT
U0VSVChTVUNDRUVERUQoaHIpKTsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChocikpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1Vc2VyRGVmaW5lZEFubm90YXRpb24gPSBkM2QxMTo6RHluYW1pY0Nh
c3RDb21PYmplY3Q8SUQzRFVzZXJEZWZpbmVkQW5ub3RhdGlvbj4oY29udGV4dCk7CisgICAgICAg
ICAgICBBU1NFUlQobVVzZXJEZWZpbmVkQW5ub3RhdGlvbiAhPSBudWxscHRyKTsKKyAgICAgICAg
ICAgIG1Jbml0aWFsaXplZCA9IHRydWU7CisgICAgICAgIH0KIAotICAgICAgICBtVXNlckRlZmlu
ZWRBbm5vdGF0aW9uID0gZDNkMTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEM0RVc2VyRGVmaW5l
ZEFubm90YXRpb24+KGNvbnRleHQpOwotICAgICAgICBBU1NFUlQobVVzZXJEZWZpbmVkQW5ub3Rh
dGlvbiAhPSBudWxscHRyKTsKLQogICAgICAgICBTYWZlUmVsZWFzZShkZXZpY2UpOwogICAgICAg
ICBTYWZlUmVsZWFzZShjb250ZXh0KTsKLQotICAgICAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fu
bm90YXRvcjExLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOSw5ICsxOSw5IEBACiAgIHB1YmxpYzoKICAgICBEZWJ1Z0Fubm90YXRv
cjExKCk7CiAgICAgfkRlYnVnQW5ub3RhdG9yMTEoKSBvdmVycmlkZTsKLSAgICB2b2lkIGJlZ2lu
RXZlbnQoY29uc3Qgc3RkOjp3c3RyaW5nICZldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQg
YmVnaW5FdmVudChjb25zdCB3Y2hhcl90ICpldmVudE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZW5kRXZlbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldE1hcmtlcihjb25zdCBzdGQ6OndzdHJp
bmcgJm1hcmtlck5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TWFya2VyKGNvbnN0IHdjaGFy
X3QgKm1hcmtlck5hbWUpIG92ZXJyaWRlOwogICAgIGJvb2wgZ2V0U3RhdHVzKCkgb3ZlcnJpZGU7
CiAKICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2UxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmNw
cAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIz
LDcgKzEyMyw3IEBACiAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbVF1ZXJ5KE5V
TEwpCiB7Ci0gICAgTEFSR0VfSU5URUdFUiBjb3VudGVyRnJlcWVuY3kgPSB7IDAgfTsKKyAgICBM
QVJHRV9JTlRFR0VSIGNvdW50ZXJGcmVxZW5jeSA9IHt9OwogICAgIEJPT0wgc3VjY2VzcyA9IFF1
ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmNvdW50ZXJGcmVxZW5jeSk7CiAgICAgVU5VU0VEX0FT
U0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKICAgICBBU1NFUlQoc3VjY2Vzcyk7CkBAIC0xNjgs
NyArMTY4LDcgQEAKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAg
fQogCi0gICAgTEFSR0VfSU5URUdFUiBjdXJyZW50Q291bnRlciA9IHsgMCB9OworICAgIExBUkdF
X0lOVEVHRVIgY3VycmVudENvdW50ZXIgPSB7fTsKICAgICBCT09MIHN1Y2Nlc3MgPSBRdWVyeVBl
cmZvcm1hbmNlQ291bnRlcigmY3VycmVudENvdW50ZXIpOwogICAgIFVOVVNFRF9BU1NFUlRJT05f
VkFSSUFCTEUoc3VjY2Vzcyk7CiAgICAgQVNTRVJUKHN1Y2Nlc3MpOwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZl
cjExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuY3BwCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0ZyYW1lYnVmZmVyMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgiCiAKICNp
bmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVmZmVyMTEuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgiCkBAIC0yNCwx
OSArMjUsMTAgQEAKIG5hbWVzcGFjZSByeAogewogCi1GcmFtZWJ1ZmZlcjExOjpGcmFtZWJ1ZmZl
cjExKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwgUmVuZGVyZXIxMSAqcmVuZGVy
ZXIpCi0gICAgOiBGcmFtZWJ1ZmZlckQzRChkYXRhLCByZW5kZXJlciksCi0gICAgICBtUmVuZGVy
ZXIocmVuZGVyZXIpCituYW1lc3BhY2UKIHsKLSAgICBBU1NFUlQobVJlbmRlcmVyICE9IG51bGxw
dHIpOwotfQotCi1GcmFtZWJ1ZmZlcjExOjp+RnJhbWVidWZmZXIxMSgpCitnbDo6RXJyb3IgSW52
YWxpZGF0ZUF0dGFjaG1lbnRTd2l6emxlcyhjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50
ICphdHRhY2htZW50KQogewotfQotCi1zdGF0aWMgZ2w6OkVycm9yIEludmFsaWRhdGVBdHRhY2ht
ZW50U3dpenpsZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCkK
LXsKICAgICBpZiAoYXR0YWNobWVudCAmJiBhdHRhY2htZW50LT50eXBlKCkgPT0gR0xfVEVYVFVS
RSkKICAgICB7CiAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gYXR0YWNobWVudC0+Z2V0
VGV4dHVyZSgpOwpAQCAtNjIsNiArNTQsNjcgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKIH0KIAordm9pZCBVcGRhdGVDYWNoZWRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclRhcmdldDExIComY2FjaGVkUmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgJmNhbGxiYWNrRnVu
YykKK3sKKyAgICBSZW5kZXJUYXJnZXQxMSAqbmV3UmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAg
ICBpZiAoYXR0YWNobWVudCkKKyAgICB7CisgICAgICAgIGF0dGFjaG1lbnQtPmdldFJlbmRlclRh
cmdldCgmbmV3UmVuZGVyVGFyZ2V0KTsKKyAgICB9CisgICAgaWYgKG5ld1JlbmRlclRhcmdldCAh
PSBjYWNoZWRSZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBpZiAoY2FjaGVkUmVuZGVyVGFy
Z2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjYWNoZWRSZW5kZXJUYXJnZXQtPnJlbW92ZURp
cnR5Q2FsbGJhY2soJmNhbGxiYWNrRnVuYyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3
UmVuZGVyVGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBuZXdSZW5kZXJUYXJnZXQtPmFk
ZERpcnR5Q2FsbGJhY2soJmNhbGxiYWNrRnVuYyk7CisgICAgICAgIH0KKworICAgICAgICBjYWNo
ZWRSZW5kZXJUYXJnZXQgPSBuZXdSZW5kZXJUYXJnZXQ7CisgICAgfQorfQorfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQorCitGcmFtZWJ1ZmZlcjExOjpGcmFtZWJ1ZmZlcjExKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwgUmVuZGVyZXIxMSAqcmVuZGVyZXIpCisgICAgOiBGcmFt
ZWJ1ZmZlckQzRChkYXRhLCByZW5kZXJlciksIG1SZW5kZXJlcihyZW5kZXJlciksIG1DYWNoZWRE
ZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQobnVsbHB0cikKK3sKKyAgICBBU1NFUlQobVJlbmRlcmVy
ICE9IG51bGxwdHIpOworICAgIG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHMuZmlsbChudWxscHRy
KTsKKyAgICBmb3IgKHNpemVfdCBjb2xvckluZGV4ID0gMDsgY29sb3JJbmRleCA8IGRhdGEuZ2V0
Q29sb3JBdHRhY2htZW50cygpLnNpemUoKTsgKytjb2xvckluZGV4KQorICAgIHsKKyAgICAgICAg
YXV0byBjYWxsYmFjayA9IFt0aGlzLCBjb2xvckluZGV4XSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRoaXMtPm1hcmtDb2xvclJlbmRlclRhcmdldERpcnR5KGNvbG9ySW5kZXgpOworICAgICAg
ICB9OworICAgICAgICBtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHkucHVzaF9iYWNrKGNhbGxiYWNr
KTsKKyAgICB9CisgICAgbURlcHRoU3RlbmNpbFJlbmRlclRhcmdldERpcnR5ID0gW3RoaXNdKCkK
KyAgICB7CisgICAgICAgIHRoaXMtPm1hcmtEZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXREaXJ0eSgp
OworICAgIH07Cit9CisKK0ZyYW1lYnVmZmVyMTE6On5GcmFtZWJ1ZmZlcjExKCkKK3sKKyAgICBm
b3IgKHNpemVfdCBjb2xvckluZGV4ID0gMDsgY29sb3JJbmRleCA8IG1DYWNoZWRDb2xvclJlbmRl
clRhcmdldHMuc2l6ZSgpOyArK2NvbG9ySW5kZXgpCisgICAgeworICAgICAgICBhdXRvICpjb2xv
clJlbmRlclRhcmdldCA9IG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHNbY29sb3JJbmRleF07Cisg
ICAgICAgIGlmIChjb2xvclJlbmRlclRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgICAgY29s
b3JSZW5kZXJUYXJnZXQtPnJlbW92ZURpcnR5Q2FsbGJhY2soJm1Db2xvclJlbmRlclRhcmdldHNE
aXJ0eVtjb2xvckluZGV4XSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1DYWNoZWREZXB0
aFN0ZW5jaWxSZW5kZXJUYXJnZXQpCisgICAgeworICAgICAgICBtQ2FjaGVkRGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0LT5yZW1vdmVEaXJ0eUNhbGxiYWNrKCZtRGVwdGhTdGVuY2lsUmVuZGVyVGFy
Z2V0RGlydHkpOworICAgIH0KK30KKwogZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmludmFsaWRh
dGVTd2l6emxlcygpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBhdXRvICZjb2xvckF0dGFjaG1l
bnQgOiBtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCkpCkBAIC05MSwxMCArMTQ0LDMwIEBACiAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1
ZmZlcjExOjpjbGVhcihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBDbGVhclBhcmFtZXRl
cnMgJmNsZWFyUGFyYW1zKQorZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmNsZWFyKGNvbnN0IGds
OjpEYXRhICZkYXRhLCBjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKQogewogICAg
IENsZWFyMTEgKmNsZWFyZXIgPSBtUmVuZGVyZXItPmdldENsZWFyZXIoKTsKLSAgICBnbDo6RXJy
b3IgZXJyb3IgPSBjbGVhcmVyLT5jbGVhckZyYW1lYnVmZmVyKGNsZWFyUGFyYW1zLCBtRGF0YSk7
CisgICAgZ2w6OkVycm9yIGVycm9yKEdMX05PX0VSUk9SKTsKKworICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yQXR0YWNobWVudCA9IG1EYXRhLmdldEZpcnN0Q29sb3JB
dHRhY2htZW50KCk7CisgICAgaWYgKGNsZWFyUGFyYW1zLnNjaXNzb3JFbmFibGVkID09IHRydWUg
JiYgY29sb3JBdHRhY2htZW50ICE9IG51bGxwdHIgJiYKKyAgICAgICAgVXNlUHJlc2VudFBhdGhG
YXN0KG1SZW5kZXJlciwgY29sb3JBdHRhY2htZW50KSkKKyAgICB7CisgICAgICAgIC8vIElmIHRo
ZSBjdXJyZW50IGZyYW1lYnVmZmVyIGlzIHVzaW5nIHRoZSBkZWZhdWx0IGNvbG9yYnVmZmVyLCBh
bmQgcHJlc2VudCBwYXRoIGZhc3QgaXMKKyAgICAgICAgLy8gYWN0aXZlLCBhbmQgdGhlIHNjaXNz
b3IgcmVjdCBpcyBlbmFibGVkLCB0aGVuIHdlIHNob3VsZCBpbnZlcnQgdGhlIHNjaXNzb3IgcmVj
dAorICAgICAgICAvLyB2ZXJ0aWNhbGx5CisgICAgICAgIENsZWFyUGFyYW1ldGVycyBwcmVzZW50
UGF0aEZhc3RDbGVhclBhcmFtcyA9IGNsZWFyUGFyYW1zOworICAgICAgICBnbDo6RXh0ZW50cyBm
cmFtZWJ1ZmZlclNpemUgICAgICAgICAgICAgICAgPSBjb2xvckF0dGFjaG1lbnQtPmdldFNpemUo
KTsKKyAgICAgICAgcHJlc2VudFBhdGhGYXN0Q2xlYXJQYXJhbXMuc2Npc3Nvci55ICAgICAgID0g
ZnJhbWVidWZmZXJTaXplLmhlaWdodCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByZXNlbnRQYXRoRmFzdENsZWFyUGFyYW1zLnNjaXNzb3IueSAtCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRQYXRo
RmFzdENsZWFyUGFyYW1zLnNjaXNzb3IuaGVpZ2h0OworICAgICAgICBlcnJvciA9IGNsZWFyZXIt
PmNsZWFyRnJhbWVidWZmZXIocHJlc2VudFBhdGhGYXN0Q2xlYXJQYXJhbXMsIG1EYXRhKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgZXJyb3IgPSBjbGVhcmVyLT5jbGVhckZyYW1l
YnVmZmVyKGNsZWFyUGFyYW1zLCBtRGF0YSk7CisgICAgfQorCiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTEwOSw3NiArMTgyLDE5MSBA
QAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1zdGF0aWMgZ2w6OkVy
cm9yIGdldFJlbmRlclRhcmdldFJlc291cmNlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmNvbG9yYnVmZmVyLCB1bnNpZ25lZCBpbnQgKnN1YnJlc291cmNlSW5kZXhPdXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVRleHR1cmUyRCAqKnRl
eHR1cmUyRE91dCkKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjppbnZhbGlkYXRlKHNpemVfdCBj
b3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKLSAgICBBU1NFUlQoY29sb3JidWZm
ZXIpOworICAgIHJldHVybiBpbnZhbGlkYXRlQmFzZShjb3VudCwgYXR0YWNobWVudHMsIGZhbHNl
KTsKK30KIAotICAgIFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAg
IGdsOjpFcnJvciBlcnJvciA9IGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRh
cmdldCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjEx
OjpkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKK3sKKyAg
ICByZXR1cm4gaW52YWxpZGF0ZUJhc2UoY291bnQsIGF0dGFjaG1lbnRzLCB0cnVlKTsKK30KKwor
Z2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmludmFsaWRhdGVCYXNlKHNpemVfdCBjb3VudCwgY29u
c3QgR0xlbnVtICphdHRhY2htZW50cywgYm9vbCB1c2VFWFRCZWhhdmlvcikgY29uc3QKK3sKKyAg
ICBJRDNEMTFEZXZpY2VDb250ZXh0MSAqZGV2aWNlQ29udGV4dDEgPSBtUmVuZGVyZXItPmdldERl
dmljZUNvbnRleHQxSWZTdXBwb3J0ZWQoKTsKKworICAgIGlmICghZGV2aWNlQ29udGV4dDEpCiAg
ICAgewotICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIC8vIERpc2NhcmRWaWV3KCkgaXMg
b25seSBzdXBwb3J0ZWQgb24gSUQzRDExRGV2aWNlQ29udGV4dDEKKyAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAgfQogCi0gICAgSUQzRDExUmVzb3VyY2UgKnJlbmRl
clRhcmdldFJlc291cmNlID0gcmVuZGVyVGFyZ2V0LT5nZXRUZXh0dXJlKCk7Ci0gICAgQVNTRVJU
KHJlbmRlclRhcmdldFJlc291cmNlKTsKKyAgICBib29sIGZvdW5kRGVwdGggPSBmYWxzZTsKKyAg
ICBib29sIGZvdW5kU3RlbmNpbCA9IGZhbHNlOwogCi0gICAgKnN1YnJlc291cmNlSW5kZXhPdXQg
PSByZW5kZXJUYXJnZXQtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKLSAgICAqdGV4dHVyZTJET3V0
ID0gZDNkMTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEM0QxMVRleHR1cmUyRD4ocmVuZGVyVGFy
Z2V0UmVzb3VyY2UpOwotCi0gICAgaWYgKCEoKnRleHR1cmUyRE91dCkpCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHF1ZXJ5IHRoZSBJRDNEMTFUZXh0dXJlMkQg
ZnJvbSBhIFJlbmRlclRhcmdldCIpOwotICAgIH0KKyAgICAgICAgc3dpdGNoIChhdHRhY2htZW50
c1tpXSkKKyAgICAgICAgeworICAgICAgICAgIC8vIEhhbmRsZSBkZXB0aCBhbmQgc3RlbmNpbCBh
dHRhY2htZW50cy4gRGVmZXIgZGlzY2FyZGluZyB1bnRpbCBsYXRlci4KKyAgICAgICAgICBjYXNl
IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGZvdW5kRGVwdGggPSB0
cnVlOworICAgICAgICAgICAgZm91bmRTdGVuY2lsID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgIGNhc2UgR0xfREVQVEhfRVhUOgorICAgICAgICAgIGNhc2UgR0xfREVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgIGZvdW5kRGVwdGggPSB0cnVlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0VYVDoKKyAgICAgICAgICBjYXNlIEdM
X1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIGZvdW5kU3RlbmNpbCA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8vIEhhbmRsZSBjb2xvciBhdHRhY2htZW50cworICAgICAgICAgICAgICAg
IEFTU0VSVCgoYXR0YWNobWVudHNbaV0gPj0gR0xfQ09MT1JfQVRUQUNITUVOVDAgJiYgYXR0YWNo
bWVudHNbaV0gPD0gR0xfQ09MT1JfQVRUQUNITUVOVDE1KSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAoYXR0YWNobWVudHNbaV0gPT0gR0xfQ09MT1IpKTsKIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwotfQorICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldDExICpyZW5k
ZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICAgICAgICAgIElEM0QxMVZpZXcgKmNvbG9yVmll
dyA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICAgICAgICAgICAgICBzaXplX3QgY29sb3JBdHRhY2htZW50SUQgPSAwOwogCi1nbDo6
RXJyb3IgRnJhbWVidWZmZXIxMTo6cmVhZFBpeGVscyhjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgc2l6ZV90IG91dHB1dFBpdGNoLCBjb25zdCBn
bDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssIHVpbnQ4X3QgKnBpeGVscykgY29uc3QKLXsKLSAgICBJ
RDNEMTFUZXh0dXJlMkQgKmNvbG9yQnVmZmVyVGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgdW5zaWdu
ZWQgaW50IHN1YnJlc291cmNlSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGlmIChhdHRhY2ht
ZW50c1tpXSA9PSBHTF9DT0xPUikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yQXR0YWNobWVudElEID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29sb3JB
dHRhY2htZW50SUQgPSBhdHRhY2htZW50c1tpXSAtIEdMX0NPTE9SX0FUVEFDSE1FTlQwOworICAg
ICAgICAgICAgICAgIH0KIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmNv
bG9yYnVmZmVyID0gbURhdGEuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKLSAgICBBU1NFUlQoY29sb3Ji
dWZmZXIpOworICAgICAgICAgICAgICAgIGlmIChtRGF0YS5nZXRDb2xvckF0dGFjaG1lbnQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvckF0dGFjaG1lbnRJRCkpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBtRGF0YS5nZXRDb2xvckF0dGFjaG1l
bnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvckF0dGFjaG1lbnRJRCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQp
OworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAg
ICAgICAgICAgICAgIH0KIAotICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlbmRlclRhcmdldFJl
c291cmNlKGNvbG9yYnVmZmVyLCAmc3VicmVzb3VyY2VJbmRleCwgJmNvbG9yQnVmZmVyVGV4dHVy
ZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICAgICAgY29sb3JW
aWV3ID0gcmVuZGVyVGFyZ2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGNvbG9yVmlldyAhPSBudWxscHRyKQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDb250ZXh0MS0+RGlzY2FyZFZpZXcoY29s
b3JWaWV3KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCBkaXNjYXJkRGVwdGggPSBmYWxzZTsKKyAgICBib29sIGRpc2NhcmRTdGVuY2lsID0g
ZmFsc2U7CisKKyAgICAvLyBUaGUgRDNEMTEgcmVuZGVyZXIgdXNlcyB0aGUgc2FtZSB2aWV3IGZv
ciBkZXB0aCBhbmQgc3RlbmNpbCBidWZmZXJzLCBzbyB3ZSBtdXN0IGJlIGNhcmVmdWwuCisgICAg
aWYgKHVzZUVYVEJlaGF2aW9yKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICAvLyBJbiB0aGUgZXh0ZW5zaW9uLCBpZiB0aGUgYXBwIGRpc2NhcmRzIG9ubHkgb25lIG9mIHRo
ZSBkZXB0aCBhbmQgc3RlbmNpbCBhdHRhY2htZW50cywgYnV0CisgICAgICAgIC8vIHRob3NlIGFy
ZSBiYWNrZWQgYnkgdGhlIHNhbWUgcGFja2VkX2RlcHRoX3N0ZW5jaWwgYnVmZmVyLCB0aGVuIGJv
dGggaW1hZ2VzIGJlY29tZSB1bmRlZmluZWQuCisgICAgICAgIGRpc2NhcmREZXB0aCA9IGZvdW5k
RGVwdGg7CisKKyAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGRpc2NhcmRpbmcgdGhlIHN0ZW5jaWwg
YnVmZmVyIGlmIHRoZSBkZXB0aCBidWZmZXIgd2lsbCBhbHJlYWR5IGRvIGl0CisgICAgICAgIGRp
c2NhcmRTdGVuY2lsID0gZm91bmRTdGVuY2lsICYmICghZGlzY2FyZERlcHRoIHx8IG1EYXRhLmdl
dERlcHRoQXR0YWNobWVudCgpID09IG51bGxwdHIpOwogICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICAvLyBJbiBFUyAzLjAuNCwgaWYgYSBzcGVjaWZpZWQgYXR0YWNobWVudCBoYXMgYmFz
ZSBpbnRlcm5hbCBmb3JtYXQgREVQVEhfU1RFTkNJTCBidXQgdGhlCisgICAgICAgIC8vIGF0dGFj
aG1lbnRzIGxpc3QgZG9lcyBub3QgaW5jbHVkZSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgb3Ig
Ym90aCBERVBUSF9BVFRBQ0hNRU5UIGFuZAorICAgICAgICAvLyBTVEVOQ0lMX0FUVEFDSE1FTlQs
IHRoZW4gb25seSB0aGUgc3BlY2lmaWVkIHBvcnRpb24gb2YgZXZlcnkgcGl4ZWwgaW4gdGhlIHN1
YnJlZ2lvbiBvZiBwaXhlbHMKKyAgICAgICAgLy8gb2YgdGhlIERFUFRIX1NURU5DSUwgYnVmZmVy
IG1heSBiZSBpbnZhbGlkYXRlZCwgYW5kIHRoZSBvdGhlciBwb3J0aW9uIG11c3QgYmUgcHJlc2Vy
dmVkLgorICAgICAgICBkaXNjYXJkRGVwdGggPSAoZm91bmREZXB0aCAmJiBmb3VuZFN0ZW5jaWwp
IHx8IChmb3VuZERlcHRoICYmIChtRGF0YS5nZXRTdGVuY2lsQXR0YWNobWVudCgpID09IG51bGxw
dHIpKTsKKyAgICAgICAgZGlzY2FyZFN0ZW5jaWwgPSAoZm91bmRTdGVuY2lsICYmIChtRGF0YS5n
ZXREZXB0aEF0dGFjaG1lbnQoKSA9PSBudWxscHRyKSk7CisgICAgfQogCi0gICAgZ2w6OkJ1ZmZl
ciAqcGFja0J1ZmZlciA9IHBhY2sucGl4ZWxCdWZmZXIuZ2V0KCk7Ci0gICAgaWYgKHBhY2tCdWZm
ZXIgIT0gbnVsbHB0cikKKyAgICBpZiAoZGlzY2FyZERlcHRoICYmIG1EYXRhLmdldERlcHRoQXR0
YWNobWVudCgpKQogICAgIHsKLSAgICAgICAgQnVmZmVyMTEgKnBhY2tCdWZmZXJTdG9yYWdlID0g
R2V0SW1wbEFzPEJ1ZmZlcjExPihwYWNrQnVmZmVyKTsKLSAgICAgICAgUGFja1BpeGVsc1BhcmFt
cyBwYWNrUGFyYW1zKGFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0cHV0UGl0Y2gsIHBhY2ssIHJlaW50
ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90PihwaXhlbHMpKTsKKyAgICAgICAgUmVuZGVyVGFyZ2V0MTEg
KnJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIElEM0QxMVZpZXcgKmRlcHRoVmlldyA9
IG51bGxwdHI7CisgICAgICAgIGdsOjpFcnJvciBlcnJvcihHTF9OT19FUlJPUik7CiAKLSAgICAg
ICAgZXJyb3IgPSBwYWNrQnVmZmVyU3RvcmFnZS0+cGFja1BpeGVscyhjb2xvckJ1ZmZlclRleHR1
cmUsIHN1YnJlc291cmNlSW5kZXgsIHBhY2tQYXJhbXMpOworICAgICAgICBlcnJvciA9IG1EYXRh
LmdldERlcHRoQXR0YWNobWVudCgpLT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCk7CiAg
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNhZmVS
ZWxlYXNlKGNvbG9yQnVmZmVyVGV4dHVyZSk7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgICAgIH0KIAotICAgICAgICBwYWNrQnVmZmVyLT5nZXRJbmRleFJhbmdlQ2FjaGUoKS0+Y2xl
YXIoKTsKKyAgICAgICAgZGVwdGhWaWV3ID0gcmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxW
aWV3KCk7CisKKyAgICAgICAgaWYgKGRlcHRoVmlldyAhPSBudWxscHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZXZpY2VDb250ZXh0MS0+RGlzY2FyZFZpZXcoZGVwdGhWaWV3KTsKKyAgICAg
ICAgfQogICAgIH0KLSAgICBlbHNlCisKKyAgICBpZiAoZGlzY2FyZFN0ZW5jaWwgJiYgbURhdGEu
Z2V0U3RlbmNpbEF0dGFjaG1lbnQoKSkKICAgICB7Ci0gICAgICAgIGVycm9yID0gbVJlbmRlcmVy
LT5yZWFkVGV4dHVyZURhdGEoY29sb3JCdWZmZXJUZXh0dXJlLCBzdWJyZXNvdXJjZUluZGV4LCBh
cmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBwYWNrLCBwaXhlbHMpOworICAgICAgICBS
ZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgSUQzRDExVmll
dyAqc3RlbmNpbFZpZXcgPSBudWxscHRyOworICAgICAgICBnbDo6RXJyb3IgZXJyb3IoR0xfTk9f
RVJST1IpOworCisgICAgICAgIGVycm9yID0gbURhdGEuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKS0+
Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBTYWZlUmVsZWFzZShjb2xvckJ1ZmZlclRleHR1
cmUpOwogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9CisKKyAgICAgICAgc3Rl
bmNpbFZpZXcgPSByZW5kZXJUYXJnZXQtPmdldERlcHRoU3RlbmNpbFZpZXcoKTsKKworICAgICAg
ICBpZiAoc3RlbmNpbFZpZXcgIT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgZGV2
aWNlQ29udGV4dDEtPkRpc2NhcmRWaWV3KHN0ZW5jaWxWaWV3KTsKKyAgICAgICAgfQogICAgIH0K
IAotICAgIFNhZmVSZWxlYXNlKGNvbG9yQnVmZmVyVGV4dHVyZSk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7Cit9CiAKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjExOjppbnZhbGlk
YXRlU3ViKHNpemVfdCwgY29uc3QgR0xlbnVtICosIGNvbnN0IGdsOjpSZWN0YW5nbGUgJikKK3sK
KyAgICAvLyBBIG5vLW9wIGltcGxlbWVudGF0aW9uIGNvbmZvcm1zIHRvIHRoZSBzcGVjLCBzbyBk
b24ndCBjYWxsIFVOSU1QTEVNRU5URUQoKQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwogfQogCitnbDo6RXJyb3IgRnJhbWVidWZmZXIxMTo6cmVhZFBpeGVsc0ltcGwoY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcGl4ZWxzKSBjb25zdAoreworICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0gbURhdGEuZ2V0UmVh
ZEF0dGFjaG1lbnQoKTsKKyAgICBBU1NFUlQocmVhZEF0dGFjaG1lbnQpOworCisgICAgZ2w6OkJ1
ZmZlciAqcGFja0J1ZmZlciA9IHBhY2sucGl4ZWxCdWZmZXIuZ2V0KCk7CisgICAgaWYgKHBhY2tC
dWZmZXIgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGlmIChwYWNrLnJvd0xlbmd0aCAhPSAw
IHx8IHBhY2suc2tpcFJvd3MgIT0gMCB8fCBwYWNrLnNraXBQaXhlbHMgIT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlVuaW1wbGVtZW50ZWQgcGl4ZWwgc3RvcmUgcGFyYW1ldGVycyBpbiByZWFkUGl4ZWxzSW1wbCIp
OworICAgICAgICB9CisKKyAgICAgICAgQnVmZmVyMTEgKnBhY2tCdWZmZXJTdG9yYWdlID0gR2V0
SW1wbEFzPEJ1ZmZlcjExPihwYWNrQnVmZmVyKTsKKyAgICAgICAgUGFja1BpeGVsc1BhcmFtcyBw
YWNrUGFyYW1zKGFyZWEsIGZvcm1hdCwgdHlwZSwgc3RhdGljX2Nhc3Q8R0x1aW50PihvdXRwdXRQ
aXRjaCksIHBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PHB0cmRpZmZfdD4ocGl4ZWxzKSk7CisKKyAgICAgICAgcmV0dXJuIHBhY2tCdWZm
ZXJTdG9yYWdlLT5wYWNrUGl4ZWxzKCpyZWFkQXR0YWNobWVudCwgcGFja1BhcmFtcyk7CisgICAg
fQorCisgICAgcmV0dXJuIG1SZW5kZXJlci0+cmVhZEZyb21BdHRhY2htZW50KCpyZWFkQXR0YWNo
bWVudCwgYXJlYSwgZm9ybWF0LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KG91dHB1dFBpdGNoKSwgcGFjaywgcGl4ZWxz
KTsKK30KKwogZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6OmJsaXQoY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmZGVzdEFyZWEsIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgKnNjaXNzb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJs
aXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoLCBib29sIGJsaXRTdGVuY2lsLCBHTGVudW0g
ZmlsdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikKQEAgLTIxNCw4ICs0MDIsMjcgQEAKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRyYXdSZW5kZXJUYXJnZXQpOwogCi0gICAg
ICAgICAgICAgICAgZXJyb3IgPSBtUmVuZGVyZXItPmJsaXRSZW5kZXJidWZmZXJSZWN0KHNvdXJj
ZUFyZWEsIGRlc3RBcmVhLCByZWFkUmVuZGVyVGFyZ2V0LCBkcmF3UmVuZGVyVGFyZ2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0
ZXIsIHNjaXNzb3IsIGJsaXRSZW5kZXJUYXJnZXQsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAg
ICAgICAgY29uc3QgYm9vbCBpbnZlcnRDb2xvclNvdXJjZSAgID0gVXNlUHJlc2VudFBhdGhGYXN0
KG1SZW5kZXJlciwgcmVhZEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZ2w6OlJlY3RhbmdsZSBh
Y3R1YWxTb3VyY2VBcmVhID0gc291cmNlQXJlYTsKKyAgICAgICAgICAgICAgICBpZiAoaW52ZXJ0
Q29sb3JTb3VyY2UpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJUYXJnZXQxMSAqcmVhZFJlbmRlclRhcmdldDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJl
YWRSZW5kZXJUYXJnZXQpOworICAgICAgICAgICAgICAgICAgICBhY3R1YWxTb3VyY2VBcmVhLnkg
ICAgICAgICAgICAgICAgID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRIZWlnaHQoKSAtIHNvdXJj
ZUFyZWEueTsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsU291cmNlQXJlYS5oZWlnaHQgICAg
ICAgICAgICA9IC1zb3VyY2VBcmVhLmhlaWdodDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBjb25zdCBib29sIGludmVydENvbG9yRGVzdCAgID0gVXNlUHJlc2VudFBhdGhG
YXN0KG1SZW5kZXJlciwgJmRyYXdCdWZmZXIpOworICAgICAgICAgICAgICAgIGdsOjpSZWN0YW5n
bGUgYWN0dWFsRGVzdEFyZWEgPSBkZXN0QXJlYTsKKyAgICAgICAgICAgICAgICBpZiAoaW52ZXJ0
Q29sb3JEZXN0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVy
VGFyZ2V0MTEgKmRyYXdSZW5kZXJUYXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihkcmF3
UmVuZGVyVGFyZ2V0KTsKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsRGVzdEFyZWEueSAgICAg
ICAgICAgICAgICAgICA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0SGVpZ2h0KCkgLSBkZXN0QXJl
YS55OworICAgICAgICAgICAgICAgICAgICBhY3R1YWxEZXN0QXJlYS5oZWlnaHQgICAgICAgICAg
ICAgID0gLWRlc3RBcmVhLmhlaWdodDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBlcnJvciA9IG1SZW5kZXJlci0+YmxpdFJlbmRlcmJ1ZmZlclJlY3QoYWN0dWFsU291cmNl
QXJlYSwgYWN0dWFsRGVzdEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJnZXQsIGRyYXdSZW5kZXJUYXJnZXQs
IGZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2Npc3NvciwgYmxpdFJlbmRlclRhcmdldCwgZmFsc2UsIGZhbHNlKTsKICAgICAg
ICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjY4LDggKzQ3NSw4MCBAQAogR0xlbnVt
IEZyYW1lYnVmZmVyMTE6OmdldFJlbmRlclRhcmdldEltcGxlbWVudGF0aW9uRm9ybWF0KFJlbmRl
clRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0KSBjb25zdAogewogICAgIFJlbmRlclRhcmdldDExICpy
ZW5kZXJUYXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJnZXQpOwotICAg
IGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0ICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpHZXREWEdJ
Rm9ybWF0SW5mbyhyZW5kZXJUYXJnZXQxMS0+Z2V0RFhHSUZvcm1hdCgpKTsKLSAgICByZXR1cm4g
ZHhnaUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQ7CisgICAgcmV0dXJuIGQzZDExOjpHZXRBTkdM
RUZvcm1hdFNldChyZW5kZXJUYXJnZXQxMS0+Z2V0QU5HTEVGb3JtYXQoKSkuZ2xJbnRlcm5hbEZv
cm1hdDsKIH0KIAordm9pZCBGcmFtZWJ1ZmZlcjExOjp1cGRhdGVDb2xvclJlbmRlclRhcmdldChz
aXplX3QgY29sb3JJbmRleCkKK3sKKyAgICBVcGRhdGVDYWNoZWRSZW5kZXJUYXJnZXQobURhdGEu
Z2V0Q29sb3JBdHRhY2htZW50KGNvbG9ySW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtQ2FjaGVkQ29sb3JSZW5kZXJUYXJnZXRzW2NvbG9ySW5kZXhdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHlbY29sb3JJbmRleF0pOwog
fQorCit2b2lkIEZyYW1lYnVmZmVyMTE6OnVwZGF0ZURlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgp
Cit7CisgICAgVXBkYXRlQ2FjaGVkUmVuZGVyVGFyZ2V0KG1EYXRhLmdldERlcHRoT3JTdGVuY2ls
QXR0YWNobWVudCgpLCBtQ2FjaGVkRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHkpOworfQor
Cit2b2lkIEZyYW1lYnVmZmVyMTE6OnN5bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRp
cnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkt
PmludmFsaWRhdGVSZW5kZXJUYXJnZXQoKTsKKworICAgIGNvbnN0IGF1dG8gJm1lcmdlZERpcnR5
Qml0cyA9IGRpcnR5Qml0cyB8IG1JbnRlcm5hbERpcnR5Qml0czsKKyAgICBtSW50ZXJuYWxEaXJ0
eUJpdHMucmVzZXQoKTsKKworICAgIGZvciAoYXV0byBkaXJ0eUJpdCA6IGFuZ2xlOjpJdGVyYXRl
Qml0U2V0KG1lcmdlZERpcnR5Qml0cykpCisgICAgeworICAgICAgICBzd2l0Y2ggKGRpcnR5Qml0
KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklU
X0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBjYXNlIGdsOjpGcmFtZWJ1ZmZlcjo6RElS
VFlfQklUX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICB1cGRhdGVEZXB0aFN0
ZW5jaWxSZW5kZXJUYXJnZXQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfRFJBV19CVUZGRVJTOgorICAgICAgICAg
ICAgY2FzZSBnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9SRUFEX0JVRkZFUjoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0NPTE9SX0FUVEFD
SE1FTlRfMCA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgIGRpcnR5Qml0IDwgZ2w6OkZy
YW1lYnVmZmVyOjpESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF9NQVgpOworICAgICAgICAgICAg
ICAgIHNpemVfdCBjb2xvckluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
c2l6ZV90PihkaXJ0eUJpdCAtIGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0NPTE9SX0FUVEFD
SE1FTlRfMCk7CisgICAgICAgICAgICAgICAgdXBkYXRlQ29sb3JSZW5kZXJUYXJnZXQoY29sb3JJ
bmRleCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBXZSBzaG91bGQgbm90IGhhdmUgZGlydGllZCBhbnkgYWRkaXRpb25h
bCBzdGF0ZSBkdXJpbmcgb3VyIHN5bmMuCisgICAgQVNTRVJUKCFtSW50ZXJuYWxEaXJ0eUJpdHMu
YW55KCkpOworCisgICAgRnJhbWVidWZmZXJEM0Q6OnN5bmNTdGF0ZShkaXJ0eUJpdHMpOworfQor
Cit2b2lkIEZyYW1lYnVmZmVyMTE6Om1hcmtDb2xvclJlbmRlclRhcmdldERpcnR5KHNpemVfdCBj
b2xvckluZGV4KQoreworICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoZ2w6OkZyYW1lYnVmZmVy
OjpESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wICsgY29sb3JJbmRleCk7CisgICAgbUNhY2hl
ZENvbG9yUmVuZGVyVGFyZ2V0c1tjb2xvckluZGV4XSA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRnJh
bWVidWZmZXIxMTo6bWFya0RlcHRoU3RlbmNpbFJlbmRlclRhcmdldERpcnR5KCkKK3sKKyAgICAv
LyBTdGVuY2lsIGlzIHJlZHVuZGFudCBpbiB0aGlzIGNhc2UuCisgICAgbUludGVybmFsRGlydHlC
aXRzLnNldChnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAg
ICBtQ2FjaGVkRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKK30KKworYm9vbCBG
cmFtZWJ1ZmZlcjExOjpoYXNBbnlJbnRlcm5hbERpcnR5Qml0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbUludGVybmFsRGlydHlCaXRzLmFueSgpOworfQorCit2b2lkIEZyYW1lYnVmZmVyMTE6OnN5
bmNJbnRlcm5hbFN0YXRlKCkgY29uc3QKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBDbGVhbiB1
cCB0aGlzIGhhY2suCisgICAgY29uc3RfY2FzdDxGcmFtZWJ1ZmZlcjExICo+KHRoaXMpLT5zeW5j
U3RhdGUoZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MCw2ICsxMCw3IEBACiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9GUkFNQlVG
RkVSMTFfSF8KIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQz
RC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0
aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMjEsMjMgKzIyLDYwIEBACiAgICAgRnJhbWVi
dWZmZXIxMShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsIFJlbmRlcmVyMTEgKnJl
bmRlcmVyKTsKICAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcjExKCk7CiAKKyAgICBnbDo6RXJyb3Ig
ZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICph
dHRhY2htZW50cykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGludmFsaWRhdGVTdWIoc2l6ZV90
IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZh
cmVhKSBvdmVycmlkZTsKKwogICAgIC8vIEludmFsaWRhdGUgdGhlIGNhY2hlZCBzd2l6emxlcyBv
ZiBhbGwgYm91bmQgdGV4dHVyZSBhdHRhY2htZW50cy4KICAgICBnbDo6RXJyb3IgaW52YWxpZGF0
ZVN3aXp6bGVzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVi
dWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKworICAgIGNvbnN0IFJlbmRl
clRhcmdldEFycmF5ICZnZXRDYWNoZWRDb2xvclJlbmRlclRhcmdldHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHM7CisgICAgfQorICAgIGNv
bnN0IFJlbmRlclRhcmdldDExICpnZXRDYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1DYWNoZWREZXB0aFN0ZW5jaWxSZW5kZXJUYXJn
ZXQ7CisgICAgfQorCisgICAgdm9pZCBtYXJrQ29sb3JSZW5kZXJUYXJnZXREaXJ0eShzaXplX3Qg
Y29sb3JJbmRleCk7CisgICAgdm9pZCBtYXJrRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHko
KTsKKworICAgIGJvb2wgaGFzQW55SW50ZXJuYWxEaXJ0eUJpdCgpIGNvbnN0OworICAgIC8vIFRP
RE8oam1hZGlsbCk6IG1ha2UgdGhpcyBub24tY29uc3QKKyAgICB2b2lkIHN5bmNJbnRlcm5hbFN0
YXRlKCkgY29uc3Q7CisKICAgcHJpdmF0ZToKLSAgICBnbDo6RXJyb3IgY2xlYXIoY29uc3QgZ2w6
OlN0YXRlICZzdGF0ZSwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcykgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBjb25zdCBDbGVh
clBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciByZWFk
UGl4ZWxzKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBzaXplX3Qgb3V0cHV0UGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLCB1aW50OF90ICpwaXhlbHMpIGNvbnN0IG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciByZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKnBpeGVscykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgYmxp
dChjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZk
ZXN0QXJlYSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwKICAgICAgICAgICAgICAgICAg
ICBib29sIGJsaXRSZW5kZXJUYXJnZXQsIGJvb2wgYmxpdERlcHRoLCBib29sIGJsaXRTdGVuY2ls
LCBHTGVudW0gZmlsdGVyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqc291cmNlRnJhbWVidWZmZXIpIG92ZXJyaWRlOwogCisgICAgZ2w6OkVycm9yIGludmFsaWRh
dGVCYXNlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywgYm9vbCB1c2VF
WFRCZWhhdmlvcikgY29uc3Q7CiAKICAgICBHTGVudW0gZ2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50
YXRpb25Gb3JtYXQoUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0IG92ZXJyaWRl
OwogCisgICAgdm9pZCB1cGRhdGVDb2xvclJlbmRlclRhcmdldChzaXplX3QgY29sb3JJbmRleCk7
CisgICAgdm9pZCB1cGRhdGVEZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQoKTsKKwogICAgIFJlbmRl
cmVyMTEgKmNvbnN0IG1SZW5kZXJlcjsKKyAgICBSZW5kZXJUYXJnZXRBcnJheSBtQ2FjaGVkQ29s
b3JSZW5kZXJUYXJnZXRzOworICAgIFJlbmRlclRhcmdldDExICptQ2FjaGVkRGVwdGhTdGVuY2ls
UmVuZGVyVGFyZ2V0OworCisgICAgc3RkOjp2ZWN0b3I8Tm90aWZpY2F0aW9uQ2FsbGJhY2s+IG1D
b2xvclJlbmRlclRhcmdldHNEaXJ0eTsKKyAgICBOb3RpZmljYXRpb25DYWxsYmFjayBtRGVwdGhT
dGVuY2lsUmVuZGVyVGFyZ2V0RGlydHk7CisKKyAgICBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0
cyBtSW50ZXJuYWxEaXJ0eUJpdHM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdlMTEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvSW1hZ2UxMS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcsMTggKzcsMTkgQEAKIC8vIEltYWdlMTEuaDogSW1wbGVtZW50cyB0aGUg
cng6OkltYWdlMTEgY2xhc3MsIHdoaWNoIGFjdHMgYXMgdGhlIGludGVyZmFjZSB0bwogLy8gdGhl
IGFjdHVhbCB1bmRlcmx5aW5nIHJlc291cmNlcyBvZiBhIFRleHR1cmUKIAorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmgiCisKKyNpbmNsdWRlICJjb21tb24v
dXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVy
QXR0YWNobWVudC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3Jt
YXR1dGlsczExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRl
cmVyMTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDEx
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0
X3RhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVT
dG9yYWdlMTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0
dXRpbHMxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJl
cjExX3V0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9m
b3JtYXR1dGlscy5oIgogCi0jaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgotCiBuYW1lc3Bh
Y2UgcngKIHsKIApAQCAtMzIsOSArMzMsNiBAQAogICAgICAgbUFzc29jaWF0ZWRJbWFnZUluZGV4
KGdsOjpJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpKSwKICAgICAgIG1SZWNvdmVyZWRGcm9tU3Rv
cmFnZUNvdW50KDApCiB7Ci0gICAgLy8gbVJlbmRlcmVyIHNob3VsZCByZW1haW4gdW5jaGFuZ2Vk
IGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgdGhlIEltYWdlMTEgb2JqZWN0LgotICAgIC8vIFRoaXMg
bGV0cyB1cyBzYWZlbHkgdXNlIG1SZW5kZXJlciAoYW5kIGl0cyBGZWF0dXJlIExldmVsKSBpbiBJ
bWFnZTExJ3MgbWV0aG9kcy4KLSAgICBtRmVhdHVyZUxldmVsID0gcmVuZGVyZXItPmdldEZlYXR1
cmVMZXZlbCgpOwogfQogCiBJbWFnZTExOjp+SW1hZ2UxMSgpCkBAIC00MywxNSArNDEsMTQgQEAK
ICAgICByZWxlYXNlU3RhZ2luZ1RleHR1cmUoKTsKIH0KIAotZ2w6OkVycm9yIEltYWdlMTE6Omdl
bmVyYXRlTWlwbWFwKEltYWdlMTEgKmRlc3QsIEltYWdlMTEgKnNyYykKK2dsOjpFcnJvciBJbWFn
ZTExOjpnZW5lcmF0ZU1pcG1hcChJbWFnZTExICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEltYWdlMTEgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVyZXJDYXBzKQogewogICAgIEFT
U0VSVChzcmMtPmdldERYR0lGb3JtYXQoKSA9PSBkZXN0LT5nZXREWEdJRm9ybWF0KCkpOwogICAg
IEFTU0VSVChzcmMtPmdldFdpZHRoKCkgPT0gMSB8fCBzcmMtPmdldFdpZHRoKCkgLyAyID09IGRl
c3QtPmdldFdpZHRoKCkpOwogICAgIEFTU0VSVChzcmMtPmdldEhlaWdodCgpID09IDEgfHwgc3Jj
LT5nZXRIZWlnaHQoKSAvIDIgPT0gZGVzdC0+Z2V0SGVpZ2h0KCkpOwogCi0gICAgY29uc3QgZDNk
MTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZv
KHNyYy0+Z2V0RFhHSUZvcm1hdCgpKTsKLSAgICBBU1NFUlQoZHhnaUZvcm1hdEluZm8ubWlwR2Vu
ZXJhdGlvbkZ1bmN0aW9uICE9IE5VTEwpOwotCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNF
IGRlc3RNYXBwZWQ7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gZGVzdC0+bWFwKEQzRDExX01BUF9X
UklURSwgJmRlc3RNYXBwZWQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCkBAIC03MCw5ICs2
NywxMSBAQAogICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzcmNNYXBwZWQucERhdGEpOwogICAgIHVpbnQ4X3QgKmRlc3REYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGVzdE1hcHBlZC5wRGF0YSk7CiAKLSAgICBk
eGdpRm9ybWF0SW5mby5taXBHZW5lcmF0aW9uRnVuY3Rpb24oc3JjLT5nZXRXaWR0aCgpLCBzcmMt
PmdldEhlaWdodCgpLCBzcmMtPmdldERlcHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZURhdGEsIHNyY01hcHBlZC5Sb3dQaXRjaCwgc3JjTWFwcGVk
LkRlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3REYXRhLCBkZXN0TWFwcGVkLlJvd1BpdGNoLCBkZXN0TWFwcGVkLkRlcHRoUGl0Y2gpOworICAg
IGF1dG8gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZv
KHNyYy0+Z2V0SW50ZXJuYWxGb3JtYXQoKSwgcmVuZGVyZXJDYXBzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXRTZXQtPm1pcEdlbmVyYXRpb25GdW5jdGlvbjsK
KyAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24oc3JjLT5nZXRXaWR0aCgpLCBzcmMtPmdldEhlaWdo
dCgpLCBzcmMtPmdldERlcHRoKCksIHNvdXJjZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNyY01hcHBlZC5Sb3dQaXRjaCwgc3JjTWFwcGVkLkRlcHRoUGl0Y2gsIGRlc3REYXRhLCBk
ZXN0TWFwcGVkLlJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0TWFwcGVk
LkRlcHRoUGl0Y2gpOwogCiAgICAgZGVzdC0+dW5tYXAoKTsKICAgICBzcmMtPnVubWFwKCk7CkBA
IC04OCw5ICs4NywxNCBAQAogICAgIC8vIEFORCBtU3RhZ2luZ1RleHR1cmUgZG9lc24ndCBleGlz
dCBBTkQgbVN0YWdpbmdUZXh0dXJlIGRvZXNuJ3QgbmVlZCB0byBiZSByZWNvdmVyZWQgZnJvbSBU
ZXh0dXJlU3RvcmFnZQogICAgIC8vIEFORCB0aGUgdGV4dHVyZSBkb2Vzbid0IHJlcXVpcmUgaW5p
dCBkYXRhIChpLmUuIGEgYmxhbmsgbmV3IHRleHR1cmUgd2lsbCBzdWZmaWNlKQogICAgIC8vIHRo
ZW4gaXNEaXJ0eSBzaG91bGQgc3RpbGwgcmV0dXJuIGZhbHNlLgotICAgIGlmIChtRGlydHkgJiYg
IW1TdGFnaW5nVGV4dHVyZSAmJiAhbVJlY292ZXJGcm9tU3RvcmFnZSAmJiAhKGQzZDExOjpHZXRU
ZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1GZWF0dXJlTGV2ZWwpLmRhdGFJbml0
aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpKQorICAgIGlmIChtRGlydHkgJiYgIW1TdGFnaW5nVGV4
dHVyZSAmJiAhbVJlY292ZXJGcm9tU3RvcmFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMgPSBtUmVu
ZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCk7CisgICAgICAgIGNvbnN0IGF1dG8gJmZv
cm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obUludGVybmFsRm9ybWF0LCBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgaWYgKGZvcm1hdEluZm8uZGF0YUluaXRpYWxpemVyRnVuY3Rp
b24gPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIG1EaXJ0eTsKQEAgLTIxNiw5ICsyMjAsMTAgQEAK
ICAgICAgICAgbVRhcmdldCA9IHRhcmdldDsKIAogICAgICAgICAvLyBjb21wdXRlIHRoZSBkM2Qg
Zm9ybWF0IHRoYXQgd2lsbCBiZSB1c2VkCi0gICAgICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9y
bWF0ICZmb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsZm9y
bWF0LCBtRmVhdHVyZUxldmVsKTsKLSAgICAgICAgbURYR0lGb3JtYXQgPSBmb3JtYXRJbmZvLnRl
eEZvcm1hdDsKLSAgICAgICAgbVJlbmRlcmFibGUgPSAoZm9ybWF0SW5mby5ydHZGb3JtYXQgIT0g
RFhHSV9GT1JNQVRfVU5LTk9XTik7CisgICAgICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0
ICZmb3JtYXRJbmZvID0KKyAgICAgICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhp
bnRlcm5hbGZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAg
ICAgICAgbURYR0lGb3JtYXQgPSBmb3JtYXRJbmZvLmZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAg
ICAgICBtUmVuZGVyYWJsZSA9IChmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0ICE9IERY
R0lfRk9STUFUX1VOS05PV04pOwogCiAgICAgICAgIHJlbGVhc2VTdGFnaW5nVGV4dHVyZSgpOwog
ICAgICAgICBtRGlydHkgPSAoZm9ybWF0SW5mby5kYXRhSW5pdGlhbGl6ZXJGdW5jdGlvbiAhPSBO
VUxMKTsKQEAgLTI0NCwxMyArMjQ5LDE2IEBACiB7CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9y
bWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3Jt
YXQpOwogICAgIEdMc2l6ZWkgaW5wdXRSb3dQaXRjaCA9IGZvcm1hdEluZm8uY29tcHV0ZVJvd1Bp
dGNoKHR5cGUsIGFyZWEud2lkdGgsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgp
OwotICAgIEdMc2l6ZWkgaW5wdXREZXB0aFBpdGNoID0gZm9ybWF0SW5mby5jb21wdXRlRGVwdGhQ
aXRjaCh0eXBlLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgdW5wYWNrLmFsaWdubWVudCwgdW5w
YWNrLnJvd0xlbmd0aCk7CisgICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggPSBmb3JtYXRJbmZv
LmNvbXB1dGVEZXB0aFBpdGNoKAorICAgICAgICB0eXBlLCBhcmVhLndpZHRoLCBhcmVhLmhlaWdo
dCwgdW5wYWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCwgdW5wYWNrLmltYWdlSGVpZ2h0
KTsKKyAgICBHTHNpemVpIGlucHV0U2tpcEJ5dGVzID0gZm9ybWF0SW5mby5jb21wdXRlU2tpcFBp
eGVscygKKyAgICAgICAgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCB1bnBhY2suc2tp
cEltYWdlcywgdW5wYWNrLnNraXBSb3dzLCB1bnBhY2suc2tpcFBpeGVscyk7CiAKLSAgICBjb25z
dCBkM2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1h
dEluZm8obURYR0lGb3JtYXQpOworICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0U2l6ZSAmZHhn
aUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1EWEdJRm9ybWF0KTsK
ICAgICBHTHVpbnQgb3V0cHV0UGl4ZWxTaXplID0gZHhnaUZvcm1hdEluZm8ucGl4ZWxCeXRlczsK
IAotICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZkM2RGb3JtYXRJbmZvID0gZDNkMTE6
OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCwgbUZlYXR1cmVMZXZlbCk7Ci0g
ICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5mby5sb2FkRnVu
Y3Rpb25zLmF0KHR5cGUpOworICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZkM2RGb3Jt
YXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCwgbVJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBMb2FkSW1hZ2VGdW5jdGlv
biBsb2FkRnVuY3Rpb24gPSBkM2RGb3JtYXRJbmZvLmxvYWRGdW5jdGlvbnMuYXQodHlwZSkubG9h
ZEZ1bmN0aW9uOwogCiAgICAgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOwog
ICAgIGdsOjpFcnJvciBlcnJvciA9IG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSk7
CkBAIC0yNjEsOCArMjY5LDggQEAKIAogICAgIHVpbnQ4X3QgKm9mZnNldE1hcHBlZERhdGEgPSAo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obWFwcGVkSW1hZ2UucERhdGEpICsgKGFyZWEueSAq
IG1hcHBlZEltYWdlLlJvd1BpdGNoICsgYXJlYS54ICogb3V0cHV0UGl4ZWxTaXplICsgYXJlYS56
ICogbWFwcGVkSW1hZ2UuRGVwdGhQaXRjaCkpOwogICAgIGxvYWRGdW5jdGlvbihhcmVhLndpZHRo
LCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCwKLSAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQpLCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gsCi0gICAgICAgICAgICAgICAgIG9mZnNldE1hcHBlZERhdGEsIG1hcHBlZEltYWdlLlJvd1Bp
dGNoLCBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKTsKKyAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGlucHV0KSArIGlucHV0U2tpcEJ5dGVzLCBpbnB1dFJv
d1BpdGNoLAorICAgICAgICAgICAgICAgICBpbnB1dERlcHRoUGl0Y2gsIG9mZnNldE1hcHBlZERh
dGEsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKTsKIAogICAg
IHVubWFwKCk7CiAKQEAgLTI3Myw5ICsyODEsMTAgQEAKIHsKICAgICBjb25zdCBnbDo6SW50ZXJu
YWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5h
bEZvcm1hdCk7CiAgICAgR0xzaXplaSBpbnB1dFJvd1BpdGNoID0gZm9ybWF0SW5mby5jb21wdXRl
Um93UGl0Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgMSwgMCk7Ci0gICAgR0xzaXpl
aSBpbnB1dERlcHRoUGl0Y2ggPSBmb3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKEdMX1VOU0lH
TkVEX0JZVEUsIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCAxLCAwKTsKKyAgICBHTHNpemVpIGlu
cHV0RGVwdGhQaXRjaCA9CisgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goR0xf
VU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIDEsIDAsIDApOwogCi0gICAg
Y29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lG
b3JtYXRJbmZvKG1EWEdJRm9ybWF0KTsKKyAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUg
JmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhtRFhHSUZvcm1h
dCk7CiAgICAgR0x1aW50IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0
ZXM7CiAgICAgR0x1aW50IG91dHB1dEJsb2NrV2lkdGggPSBkeGdpRm9ybWF0SW5mby5ibG9ja1dp
ZHRoOwogICAgIEdMdWludCBvdXRwdXRCbG9ja0hlaWdodCA9IGR4Z2lGb3JtYXRJbmZvLmJsb2Nr
SGVpZ2h0OwpAQCAtMjgzLDggKzI5Miw4IEBACiAgICAgQVNTRVJUKGFyZWEueCAlIG91dHB1dEJs
b2NrV2lkdGggPT0gMCk7CiAgICAgQVNTRVJUKGFyZWEueSAlIG91dHB1dEJsb2NrSGVpZ2h0ID09
IDApOwogCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmQzZEZvcm1hdEluZm8gPSBk
M2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obUludGVybmFsRm9ybWF0LCBtRmVhdHVyZUxldmVs
KTsKLSAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2FkRnVuY3Rpb24gPSBkM2RGb3JtYXRJbmZvLmxv
YWRGdW5jdGlvbnMuYXQoR0xfVU5TSUdORURfQllURSk7CisgICAgY29uc3QgZDNkMTE6OlRleHR1
cmVGb3JtYXQgJmQzZEZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8obUlu
dGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOworICAg
IExvYWRJbWFnZUZ1bmN0aW9uIGxvYWRGdW5jdGlvbiA9IGQzZEZvcm1hdEluZm8ubG9hZEZ1bmN0
aW9ucy5hdChHTF9VTlNJR05FRF9CWVRFKS5sb2FkRnVuY3Rpb247CiAKICAgICBEM0QxMV9NQVBQ
RURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gbWFwKEQz
RDExX01BUF9XUklURSwgJm1hcHBlZEltYWdlKTsKQEAgLTMwNiwxODAgKzMxNSwxNjEgQEAKICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEltYWdlMTE6
OmNvcHkoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
c291cmNlQXJlYSwgUmVuZGVyVGFyZ2V0RDNEICpzb3VyY2UpCitnbDo6RXJyb3IgSW1hZ2UxMTo6
Y29weUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUluZGV4LCBUZXh0
dXJlU3RvcmFnZSAqc291cmNlKQogewotICAgIFJlbmRlclRhcmdldDExICpzb3VyY2VSZW5kZXJU
YXJnZXQgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4oc291cmNlKTsKLSAgICBBU1NFUlQoc291cmNl
UmVuZGVyVGFyZ2V0LT5nZXRUZXh0dXJlKCkpOworICAgIFRleHR1cmVTdG9yYWdlMTEgKnN0b3Jh
Z2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTE+KHNvdXJjZSk7CiAKLSAgICBJRDNEMTFSZXNv
dXJjZSAqcmVzb3VyY2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFRleHR1cmUoKTsKLSAgICBV
SU5UIHN1YnJlc291cmNlSW5kZXggPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFN1YnJlc291cmNl
SW5kZXgoKTsKLQotICAgIGdsOjpCb3ggc291cmNlQm94KHNvdXJjZUFyZWEueCwgc291cmNlQXJl
YS55LCAwLCBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCwgMSk7Ci0gICAgZ2w6
OkVycm9yIGVycm9yID0gY29weShkZXN0T2Zmc2V0LCBzb3VyY2VCb3gsIHJlc291cmNlLCBzdWJy
ZXNvdXJjZUluZGV4KTsKLQotICAgIFNhZmVSZWxlYXNlKHJlc291cmNlKTsKLQotICAgIHJldHVy
biBlcnJvcjsKLX0KLQotZ2w6OkVycm9yIEltYWdlMTE6OmNvcHkoY29uc3QgZ2w6Ok9mZnNldCAm
ZGVzdE9mZnNldCwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgY29uc3QgZ2w6OkltYWdlSW5k
ZXggJnNvdXJjZUluZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKQotewotICAgIFRleHR1cmVT
dG9yYWdlMTEgKnNvdXJjZVN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTE+KHNvdXJj
ZSk7Ci0KLSAgICBVSU5UIHN1YnJlc291cmNlSW5kZXggPSBzb3VyY2VTdG9yYWdlMTEtPmdldFN1
YnJlc291cmNlSW5kZXgoc291cmNlSW5kZXgpOwotICAgIElEM0QxMVJlc291cmNlICpyZXNvdXJj
ZSA9IE5VTEw7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gc291cmNlU3RvcmFnZTExLT5nZXRSZXNv
dXJjZSgmcmVzb3VyY2UpOworICAgIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSA9IG51bGxwdHI7
CisgICAgZ2w6OkVycm9yIGVycm9yID0gc3RvcmFnZTExLT5nZXRSZXNvdXJjZSgmcmVzb3VyY2Up
OwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgfQogCi0gICAgZXJyb3IgPSBjb3B5KGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEsIHJlc291
cmNlLCBzdWJyZXNvdXJjZUluZGV4KTsKKyAgICBVSU5UIHN1YnJlc291cmNlSW5kZXggICAgICAg
ICA9IHN0b3JhZ2UxMS0+Z2V0U3VicmVzb3VyY2VJbmRleChpbWFnZUluZGV4KTsKKyAgICBUZXh0
dXJlSGVscGVyMTEgdGV4dHVyZUhlbHBlciA9CisgICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFr
ZUFuZFJlZmVyZW5jZShyZXNvdXJjZSwgc3RvcmFnZTExLT5nZXRBTkdMRUZvcm1hdCgpKTsKIAot
ICAgIFNhZmVSZWxlYXNlKHJlc291cmNlKTsKLQotICAgIHJldHVybiBlcnJvcjsKKyAgICBnbDo6
Qm94IHNvdXJjZUJveCgwLCAwLCAwLCBtV2lkdGgsIG1IZWlnaHQsIG1EZXB0aCk7CisgICAgcmV0
dXJuIGNvcHlXaXRob3V0Q29udmVyc2lvbihnbDo6T2Zmc2V0KCksIHNvdXJjZUJveCwgdGV4dHVy
ZUhlbHBlciwgc3VicmVzb3VyY2VJbmRleCk7CiB9CiAKLWdsOjpFcnJvciBJbWFnZTExOjpjb3B5
KGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEs
IElEM0QxMVJlc291cmNlICpzb3VyY2UsIFVJTlQgc291cmNlU3ViUmVzb3VyY2UpCitnbDo6RXJy
b3IgSW1hZ2UxMTo6Y29weUZyb21GcmFtZWJ1ZmZlcihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlRkJPKQogewotICAgIEQzRDExX1JFU09V
UkNFX0RJTUVOU0lPTiBkaW07Ci0gICAgc291cmNlLT5HZXRUeXBlKCZkaW0pOworICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnNyY0F0dGFjaG1lbnQgPSBzb3VyY2VGQk8tPmdl
dFJlYWRDb2xvcmJ1ZmZlcigpOworICAgIEFTU0VSVChzcmNBdHRhY2htZW50KTsKIAotICAgIERY
R0lfRk9STUFUIGZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047Ci0gICAgZ2w6OkV4dGVudHMg
ZXh0ZW50czsKLSAgICBVSU5UIHNhbXBsZUNvdW50ID0gMDsKKyAgICBjb25zdCBhdXRvICZkM2Qx
MUZvcm1hdCA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhzcmNBdHRhY2htZW50LT5nZXRJ
bnRlcm5hbEZvcm1hdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7
CiAKLSAgICBJRDNEMTFUZXh0dXJlMkQgKnNvdXJjZTJEID0gTlVMTDsKLQotICAgIGlmIChkaW0g
PT0gRDNEMTFfUkVTT1VSQ0VfRElNRU5TSU9OX1RFWFRVUkUyRCkKKyAgICBpZiAoZDNkMTFGb3Jt
YXQuZm9ybWF0U2V0LT50ZXhGb3JtYXQgPT0gbURYR0lGb3JtYXQpCiAgICAgewotICAgICAgICBE
M0QxMV9URVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYzJEOwotICAgICAgICBzb3VyY2UyRCA9IGQz
ZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRDNEMTFUZXh0dXJlMkQ+KHNvdXJjZSk7Ci0gICAg
ICAgIEFTU0VSVChzb3VyY2UyRCk7Ci0gICAgICAgIHNvdXJjZTJELT5HZXREZXNjKCZ0ZXh0dXJl
RGVzYzJEKTsKKyAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQgPSBudWxscHRy
OworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzcmNBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJn
ZXQoJnJlbmRlclRhcmdldCk7CisgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQogCi0gICAgICAgIGZvcm1h
dCA9IHRleHR1cmVEZXNjMkQuRm9ybWF0OwotICAgICAgICBleHRlbnRzID0gZ2w6OkV4dGVudHMo
dGV4dHVyZURlc2MyRC5XaWR0aCwgdGV4dHVyZURlc2MyRC5IZWlnaHQsIDEpOwotICAgICAgICBz
YW1wbGVDb3VudCA9IHRleHR1cmVEZXNjMkQuU2FtcGxlRGVzYy5Db3VudDsKKyAgICAgICAgUmVu
ZGVyVGFyZ2V0MTEgKnJ0MTEgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4ocmVuZGVyVGFyZ2V0KTsK
KyAgICAgICAgQVNTRVJUKHJ0MTEtPmdldFRleHR1cmUoKSk7CisKKyAgICAgICAgVGV4dHVyZUhl
bHBlcjExIHRleHR1cmVIZWxwZXIgPQorICAgICAgICAgICAgVGV4dHVyZUhlbHBlcjExOjpNYWtl
QW5kUmVmZXJlbmNlKHJ0MTEtPmdldFRleHR1cmUoKSwgcnQxMS0+Z2V0QU5HTEVGb3JtYXQoKSk7
CisgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VTdWJSZXNvdXJjZSA9IHJ0MTEtPmdldFN1YnJl
c291cmNlSW5kZXgoKTsKKworICAgICAgICBnbDo6Qm94IHNvdXJjZUJveChzb3VyY2VBcmVhLngs
IHNvdXJjZUFyZWEueSwgMCwgc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEp
OworICAgICAgICByZXR1cm4gY29weVdpdGhvdXRDb252ZXJzaW9uKGRlc3RPZmZzZXQsIHNvdXJj
ZUJveCwgdGV4dHVyZUhlbHBlciwgc291cmNlU3ViUmVzb3VyY2UpOwogICAgIH0KLSAgICBlbHNl
IGlmIChkaW0gPT0gRDNEMTFfUkVTT1VSQ0VfRElNRU5TSU9OX1RFWFRVUkUzRCkKLSAgICB7Ci0g
ICAgICAgIEQzRDExX1RFWFRVUkUzRF9ERVNDIHRleHR1cmVEZXNjM0Q7Ci0gICAgICAgIElEM0Qx
MVRleHR1cmUzRCAqc291cmNlM0QgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SUQzRDEx
VGV4dHVyZTNEPihzb3VyY2UpOwotICAgICAgICBBU1NFUlQoc291cmNlM0QpOwotICAgICAgICBz
b3VyY2UzRC0+R2V0RGVzYygmdGV4dHVyZURlc2MzRCk7CiAKLSAgICAgICAgZm9ybWF0ID0gdGV4
dHVyZURlc2MzRC5Gb3JtYXQ7Ci0gICAgICAgIGV4dGVudHMgPSBnbDo6RXh0ZW50cyh0ZXh0dXJl
RGVzYzNELldpZHRoLCB0ZXh0dXJlRGVzYzNELkhlaWdodCwgdGV4dHVyZURlc2MzRC5EZXB0aCk7
Ci0gICAgICAgIHNhbXBsZUNvdW50ID0gMTsKLSAgICB9Ci0gICAgZWxzZQorICAgIC8vIFRoaXMg
Zm9ybWF0IHJlcXVpcmVzIGNvbnZlcnNpb24sIHNvIHdlIG11c3QgY29weSB0aGUgdGV4dHVyZSB0
byBzdGFnaW5nIGFuZCBtYW51YWxseSBjb252ZXJ0CisgICAgLy8gdmlhIHJlYWRQaXhlbHMKKyAg
ICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7CisgICAgZ2w6OkVycm9yIGVy
cm9yID0gbWFwKEQzRDExX01BUF9XUklURSwgJm1hcHBlZEltYWdlKTsKKyAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJu
IGVycm9yOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgPT0gbURYR0lGb3JtYXQpCi0gICAgewot
ICAgICAgICAvLyBObyBjb252ZXJzaW9uIG5lZWRlZC0tIHVzZSBjb3B5YmFjayBmYXN0cGF0aAot
ICAgICAgICBJRDNEMTFSZXNvdXJjZSAqc3RhZ2luZ1RleHR1cmUgPSBOVUxMOwotICAgICAgICB1
bnNpZ25lZCBpbnQgc3RhZ2luZ1N1YnJlc291cmNlSW5kZXggPSAwOwotICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPSBnZXRTdGFnaW5nVGV4dHVyZSgmc3RhZ2luZ1RleHR1cmUsICZzdGFnaW5nU3Vi
cmVzb3VyY2VJbmRleCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQorICAgIC8vIGRldGVybWluZSB0
aGUgb2Zmc2V0IGNvb3JkaW5hdGUgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyCisgICAgY29u
c3QgYXV0byAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1E
WEdJRm9ybWF0KTsKKyAgICBHTHNpemVpIHJvd09mZnNldCAgICAgICAgICA9IGR4Z2lGb3JtYXRJ
bmZvLnBpeGVsQnl0ZXMgKiBkZXN0T2Zmc2V0Lng7CiAKLSAgICAgICAgSUQzRDExRGV2aWNlICpk
ZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgICAgICBJRDNEMTFEZXZpY2VDb250
ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAg
dWludDhfdCAqZGF0YU9mZnNldCA9IHN0YXRpY19jYXN0PHVpbnQ4X3QgKj4obWFwcGVkSW1hZ2Uu
cERhdGEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkSW1hZ2UuUm93UGl0Y2gg
KiBkZXN0T2Zmc2V0LnkgKyByb3dPZmZzZXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0T2Zmc2V0LnogKiBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoOwogCi0gICAgICAgIFVJTlQgc3Vi
cmVzb3VyY2VBZnRlclJlc29sdmUgPSBzb3VyY2VTdWJSZXNvdXJjZTsKKyAgICBjb25zdCBnbDo6
SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1J
bnRlcm5hbEZvcm1hdCk7CiAKLSAgICAgICAgSUQzRDExUmVzb3VyY2UgKnNyY1RleCA9IE5VTEw7
CisgICAgZXJyb3IgPSBtUmVuZGVyZXItPnJlYWRGcm9tQXR0YWNobWVudCgqc3JjQXR0YWNobWVu
dCwgc291cmNlQXJlYSwgZm9ybWF0SW5mby5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3JtYXRJbmZvLnR5cGUsIG1hcHBlZEltYWdlLlJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlBpeGVsUGFj
a1N0YXRlKCksIGRhdGFPZmZzZXQpOwogCi0gICAgICAgIGJvb2wgbmVlZFJlc29sdmUgPSAoZGlt
ID09IEQzRDExX1JFU09VUkNFX0RJTUVOU0lPTl9URVhUVVJFMkQgJiYgc2FtcGxlQ291bnQgPiAx
KTsKKyAgICB1bm1hcCgpOworICAgIG1EaXJ0eSA9IHRydWU7CiAKLSAgICAgICAgaWYgKG5lZWRS
ZXNvbHZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyByZXNv
bHZlRGVzYzsKLSAgICAgICAgICAgIHJlc29sdmVEZXNjLldpZHRoID0gZXh0ZW50cy53aWR0aDsK
LSAgICAgICAgICAgIHJlc29sdmVEZXNjLkhlaWdodCA9IGV4dGVudHMuaGVpZ2h0OwotICAgICAg
ICAgICAgcmVzb2x2ZURlc2MuTWlwTGV2ZWxzID0gMTsKLSAgICAgICAgICAgIHJlc29sdmVEZXNj
LkFycmF5U2l6ZSA9IDE7Ci0gICAgICAgICAgICByZXNvbHZlRGVzYy5Gb3JtYXQgPSBmb3JtYXQ7
Ci0gICAgICAgICAgICByZXNvbHZlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKLSAgICAgICAg
ICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAgICAgICAgICByZXNv
bHZlRGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgICAgICByZXNvbHZl
RGVzYy5CaW5kRmxhZ3MgPSAwOwotICAgICAgICAgICAgcmVzb2x2ZURlc2MuQ1BVQWNjZXNzRmxh
Z3MgPSAwOwotICAgICAgICAgICAgcmVzb2x2ZURlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICByZXR1
cm4gZXJyb3I7Cit9CiAKLSAgICAgICAgICAgIElEM0QxMVRleHR1cmUyRCAqc3JjVGV4MkQgPSBO
VUxMOwotICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUy
RCgmcmVzb2x2ZURlc2MsIE5VTEwsICZzcmNUZXgyRCk7Ci0gICAgICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSByZXNvbHZlIHRleHR1cmUgZm9y
IEltYWdlMTE6OmNvcHksIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNyY1RleCA9IHNyY1RleDJEOworZ2w6OkVycm9yIEltYWdlMTE6OmNvcHlX
aXRob3V0Q29udmVyc2lvbihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZzb3VyY2VBcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJl
SGVscGVyMTEgJnRleHR1cmVIZWxwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVJTlQgc291cmNlU3ViUmVzb3VyY2UpCit7CisgICAgLy8gTm8gY29udmVyc2lv
biBuZWVkZWQtLSB1c2UgY29weWJhY2sgZmFzdHBhdGgKKyAgICBJRDNEMTFSZXNvdXJjZSAqc3Rh
Z2luZ1RleHR1cmUgICAgICAgPSBudWxscHRyOworICAgIHVuc2lnbmVkIGludCBzdGFnaW5nU3Vi
cmVzb3VyY2VJbmRleCA9IDA7CisgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0U3RhZ2luZ1RleHR1
cmUoJnN0YWdpbmdUZXh0dXJlLCAmc3RhZ2luZ1N1YnJlc291cmNlSW5kZXgpOworICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQogCi0g
ICAgICAgICAgICBkZXZpY2VDb250ZXh0LT5SZXNvbHZlU3VicmVzb3VyY2Uoc3JjVGV4LCAwLCBz
b3VyY2UsIHNvdXJjZVN1YlJlc291cmNlLCBmb3JtYXQpOwotICAgICAgICAgICAgc3VicmVzb3Vy
Y2VBZnRlclJlc29sdmUgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgc3JjVGV4ID0gc291cmNlOwotICAgICAgICB9CisgICAgSUQzRDExRGV2aWNl
ICpkZXZpY2UgICAgICAgICAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQz
RDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpOwogCi0gICAgICAgIEQzRDExX0JPWCBzcmNCb3g7Ci0gICAgICAgIHNyY0JveC5sZWZ0
ID0gc291cmNlQXJlYS54OwotICAgICAgICBzcmNCb3gucmlnaHQgPSBzb3VyY2VBcmVhLnggKyBz
b3VyY2VBcmVhLndpZHRoOwotICAgICAgICBzcmNCb3gudG9wID0gc291cmNlQXJlYS55OwotICAg
ICAgICBzcmNCb3guYm90dG9tID0gc291cmNlQXJlYS55ICsgc291cmNlQXJlYS5oZWlnaHQ7Ci0g
ICAgICAgIHNyY0JveC5mcm9udCA9IHNvdXJjZUFyZWEuejsKLSAgICAgICAgc3JjQm94LmJhY2sg
PSBzb3VyY2VBcmVhLnogKyBzb3VyY2VBcmVhLmRlcHRoOworICAgIFVJTlQgc3VicmVzb3VyY2VB
ZnRlclJlc29sdmUgPSBzb3VyY2VTdWJSZXNvdXJjZTsKIAotICAgICAgICBkZXZpY2VDb250ZXh0
LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oc3RhZ2luZ1RleHR1cmUsIHN0YWdpbmdTdWJyZXNvdXJj
ZUluZGV4LCBkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueiwgc3JjVGV4LCBzdWJyZXNvdXJj
ZUFmdGVyUmVzb2x2ZSwgJnNyY0JveCk7CisgICAgSUQzRDExUmVzb3VyY2UgKnNyY1RleCAgICAg
PSBudWxscHRyOworICAgIGNvbnN0IGdsOjpFeHRlbnRzICZleHRlbnRzID0gdGV4dHVyZUhlbHBl
ci5nZXRFeHRlbnRzKCk7CiAKLSAgICAgICAgaWYgKG5lZWRSZXNvbHZlKQorICAgIGJvb2wgbmVl
ZFJlc29sdmUgPQorICAgICAgICAodGV4dHVyZUhlbHBlci5nZXRUZXh0dXJlVHlwZSgpID09IEdM
X1RFWFRVUkVfMkQgJiYgdGV4dHVyZUhlbHBlci5nZXRTYW1wbGVDb3VudCgpID4gMSk7CisKKyAg
ICBpZiAobmVlZFJlc29sdmUpCisgICAgeworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBy
ZXNvbHZlRGVzYzsKKyAgICAgICAgcmVzb2x2ZURlc2MuV2lkdGggICAgICAgICAgICAgID0gZXh0
ZW50cy53aWR0aDsKKyAgICAgICAgcmVzb2x2ZURlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gZXh0
ZW50cy5oZWlnaHQ7CisgICAgICAgIHJlc29sdmVEZXNjLk1pcExldmVscyAgICAgICAgICA9IDE7
CisgICAgICAgIHJlc29sdmVEZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7CisgICAgICAgIHJl
c29sdmVEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IHRleHR1cmVIZWxwZXIuZ2V0Rm9ybWF0KCk7
CisgICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CisgICAgICAgIHJl
c29sdmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLlVz
YWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIHJlc29sdmVE
ZXNjLkJpbmRGbGFncyAgICAgICAgICA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLkNQVUFjY2Vz
c0ZsYWdzICAgICA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLk1pc2NGbGFncyAgICAgICAgICA9
IDA7CisKKyAgICAgICAgSUQzRDExVGV4dHVyZTJEICpzcmNUZXgyRCA9IE5VTEw7CisgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnJlc29sdmVEZXNjLCBO
VUxMLCAmc3JjVGV4MkQpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNyY1RleCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJG
YWlsZWQgdG8gY3JlYXRlIHJlc29sdmUgdGV4dHVyZSBmb3IgSW1hZ2UxMTo6Y29weSwgSFJFU1VM
VDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAg
ICB9CisgICAgICAgIHNyY1RleCA9IHNyY1RleDJEOworCisgICAgICAgIGRldmljZUNvbnRleHQt
PlJlc29sdmVTdWJyZXNvdXJjZShzcmNUZXgsIDAsIHRleHR1cmVIZWxwZXIuZ2V0VGV4dHVyZTJE
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VTdWJS
ZXNvdXJjZSwgdGV4dHVyZUhlbHBlci5nZXRGb3JtYXQoKSk7CisgICAgICAgIHN1YnJlc291cmNl
QWZ0ZXJSZXNvbHZlID0gMDsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgLy8gVGhp
cyBmb3JtYXQgcmVxdWlyZXMgY29udmVyc2lvbiwgc28gd2UgbXVzdCBjb3B5IHRoZSB0ZXh0dXJl
IHRvIHN0YWdpbmcgYW5kIG1hbnVhbGx5IGNvbnZlcnQgdmlhIHJlYWRQaXhlbHMKLSAgICAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZEltYWdlOwotICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBtYXAoRDNEMTFfTUFQX1dSSVRFLCAmbWFwcGVkSW1hZ2UpOwotICAgICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0g
ICAgICAgIH0KKyAgICAgICAgc3JjVGV4ID0gdGV4dHVyZUhlbHBlci5nZXRSZXNvdXJjZSgpOwor
ICAgIH0KIAotICAgICAgICAvLyBkZXRlcm1pbmUgdGhlIG9mZnNldCBjb29yZGluYXRlIGludG8g
dGhlIGRlc3RpbmF0aW9uIGJ1ZmZlcgotICAgICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAm
ZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8obURYR0lGb3JtYXQpOwot
ICAgICAgICBHTHNpemVpIHJvd09mZnNldCA9IGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0ZXMgKiBk
ZXN0T2Zmc2V0Lng7Ci0gICAgICAgIHVpbnQ4X3QgKmRhdGFPZmZzZXQgPSBzdGF0aWNfY2FzdDx1
aW50OF90Kj4obWFwcGVkSW1hZ2UucERhdGEpICsgbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKiBkZXN0
T2Zmc2V0LnkgKyByb3dPZmZzZXQgKyBkZXN0T2Zmc2V0LnogKiBtYXBwZWRJbWFnZS5EZXB0aFBp
dGNoOworICAgIEQzRDExX0JPWCBzcmNCb3g7CisgICAgc3JjQm94LmxlZnQgICA9IHNvdXJjZUFy
ZWEueDsKKyAgICBzcmNCb3gucmlnaHQgID0gc291cmNlQXJlYS54ICsgc291cmNlQXJlYS53aWR0
aDsKKyAgICBzcmNCb3gudG9wICAgID0gc291cmNlQXJlYS55OworICAgIHNyY0JveC5ib3R0b20g
PSBzb3VyY2VBcmVhLnkgKyBzb3VyY2VBcmVhLmhlaWdodDsKKyAgICBzcmNCb3guZnJvbnQgID0g
c291cmNlQXJlYS56OworICAgIHNyY0JveC5iYWNrICAgPSBzb3VyY2VBcmVhLnogKyBzb3VyY2VB
cmVhLmRlcHRoOwogCi0gICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5m
byA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8obUludGVybmFsRm9ybWF0KTsKKyAgICBkZXZp
Y2VDb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24oc3RhZ2luZ1RleHR1cmUsIHN0YWdpbmdT
dWJyZXNvdXJjZUluZGV4LCBkZXN0T2Zmc2V0LngsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueSwgZGVzdE9mZnNldC56LCBzcmNUZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlQWZ0ZXJSZXNv
bHZlLCAmc3JjQm94KTsKIAotICAgICAgICAvLyBDdXJyZW50bHkgaW4gQU5HTEUsIHRoZSBzb3Vy
Y2UgZGF0YSBtYXkgb25seSBuZWVkIHRvIGJlIGNvbnZlcnRlZCBpZiB0aGUgc291cmNlIGlzIHRo
ZSBjdXJyZW50IGZyYW1lYnVmZmVyCi0gICAgICAgIC8vIGFuZCBPcGVuR0wgRVMgZnJhbWVidWZm
ZXJzIG11c3QgYmUgMkQgdGV4dHVyZXMgdGhlcmVmb3JlIHdlIHNob3VsZCBub3QgbmVlZCB0byBj
b252ZXJ0IDNEIHRleHR1cmVzIGJldHdlZW4gZGlmZmVyZW50IGZvcm1hdHMuCi0gICAgICAgIEFT
U0VSVChkaW0gPT0gRDNEMTFfUkVTT1VSQ0VfRElNRU5TSU9OX1RFWFRVUkUyRCk7Ci0gICAgICAg
IEFTU0VSVChzb3VyY2VBcmVhLnogPT0gMCAmJiBzb3VyY2VBcmVhLmRlcHRoID09IDEpOwotICAg
ICAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZVJlY3Qoc291cmNlQXJlYS54LCBzb3VyY2VBcmVhLnks
IHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KTsKLSAgICAgICAgZXJyb3IgPSBt
UmVuZGVyZXItPnJlYWRUZXh0dXJlRGF0YShzb3VyY2UyRCwgc291cmNlU3ViUmVzb3VyY2UsIHNv
dXJjZVJlY3QsIGZvcm1hdEluZm8uZm9ybWF0LCBmb3JtYXRJbmZvLnR5cGUsIG1hcHBlZEltYWdl
LlJvd1BpdGNoLCBnbDo6UGl4ZWxQYWNrU3RhdGUoKSwgZGF0YU9mZnNldCk7Ci0KLSAgICAgICAg
dW5tYXAoKTsKLQotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KKyAgICBpZiAobmVlZFJlc29sdmUpCisg
ICAgeworICAgICAgICBTYWZlUmVsZWFzZShzcmNUZXgpOwogICAgIH0KIAogICAgIG1EaXJ0eSA9
IHRydWU7Ci0KICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIApAQCAtNTM3
LDExICs1MjcsMTEgQEAKICAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9B
Q0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7CiAgICAgICAgIGRlc2MuTWlzY0Zs
YWdzID0gMDsKIAotICAgICAgICBpZiAoZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRl
cm5hbEZvcm1hdCwgbUZlYXR1cmVMZXZlbCkuZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0gTlVM
TCkKKyAgICAgICAgaWYgKGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3Jt
YXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSkuZGF0YUluaXRpYWxpemVy
RnVuY3Rpb24gIT0gTlVMTCkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RDNE
MTFfU1VCUkVTT1VSQ0VfREFUQT4gaW5pdGlhbERhdGE7Ci0gICAgICAgICAgICBzdGQ6OnZlY3Rv
cjwgc3RkOjp2ZWN0b3I8QllURT4gPiB0ZXh0dXJlRGF0YTsKLSAgICAgICAgICAgIGQzZDExOjpH
ZW5lcmF0ZUluaXRpYWxUZXh0dXJlRGF0YShtSW50ZXJuYWxGb3JtYXQsIG1GZWF0dXJlTGV2ZWws
IHdpZHRoLCBoZWlnaHQsIG1EZXB0aCwKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dmVj
dG9yPEJZVEU+PiB0ZXh0dXJlRGF0YTsKKyAgICAgICAgICAgIGQzZDExOjpHZW5lcmF0ZUluaXRp
YWxUZXh0dXJlRGF0YShtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURl
dmljZUNhcHMoKSwgd2lkdGgsIGhlaWdodCwgbURlcHRoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZE9mZnNldCArIDEsICZpbml0aWFsRGF0YSwgJnRl
eHR1cmVEYXRhKTsKIAogICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJl
M0QoJmRlc2MsIGluaXRpYWxEYXRhLmRhdGEoKSwgJm5ld1RleHR1cmUpOwpAQCAtNTc3LDExICs1
NjcsMTEgQEAKICAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1Nf
UkVBRCB8IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7CiAgICAgICAgIGRlc2MuTWlzY0ZsYWdzID0g
MDsKIAotICAgICAgICBpZiAoZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZv
cm1hdCwgbUZlYXR1cmVMZXZlbCkuZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0gTlVMTCkKKyAg
ICAgICAgaWYgKGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQsIG1S
ZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSkuZGF0YUluaXRpYWxpemVyRnVuY3Rp
b24gIT0gTlVMTCkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RDNEMTFfU1VC
UkVTT1VSQ0VfREFUQT4gaW5pdGlhbERhdGE7Ci0gICAgICAgICAgICBzdGQ6OnZlY3Rvcjwgc3Rk
Ojp2ZWN0b3I8QllURT4gPiB0ZXh0dXJlRGF0YTsKLSAgICAgICAgICAgIGQzZDExOjpHZW5lcmF0
ZUluaXRpYWxUZXh0dXJlRGF0YShtSW50ZXJuYWxGb3JtYXQsIG1GZWF0dXJlTGV2ZWwsIHdpZHRo
LCBoZWlnaHQsIDEsCisgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxCWVRFPj4g
dGV4dHVyZURhdGE7CisgICAgICAgICAgICBkM2QxMTo6R2VuZXJhdGVJbml0aWFsVGV4dHVyZURh
dGEobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCks
IHdpZHRoLCBoZWlnaHQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLCAmdGV4dHVyZURhdGEpOwogCiAg
ICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVzYywgaW5pdGlh
bERhdGEuZGF0YSgpLCAmbmV3VGV4dHVyZSk7CkBAIC02MzEsMTMgKzYyMSwxMyBAQAogICAgIEFT
U0VSVChtU3RhZ2luZ1RleHR1cmUpOwogICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlQ29udGV4
dC0+TWFwKHN0YWdpbmdUZXh0dXJlLCBzdWJyZXNvdXJjZUluZGV4LCBtYXBUeXBlLCAwLCBtYXAp
OwogCi0gICAgLy8gdGhpcyBjYW4gZmFpbCBpZiB0aGUgZGV2aWNlIGlzIHJlbW92ZWQgKGZyb20g
VERSKQotICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBtUmVuZGVyZXItPm5vdGlmeURldmljZUxv
c3QoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkpCi0gICAgeworICAgICAg
ICAvLyB0aGlzIGNhbiBmYWlsIGlmIHRoZSBkZXZpY2UgaXMgcmVtb3ZlZCAoZnJvbSBURFIpCisg
ICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgewor
ICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBz
dGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAgIH0KIApAQCAtNjU1
LDQgKzY0NSw0IEBACiAgICAgfQogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW1h
Z2UxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdl
MTEuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsOSBAQAogbmFtZXNwYWNlIHJ4CiB7CiBj
bGFzcyBSZW5kZXJlcjExOworY2xhc3MgVGV4dHVyZUhlbHBlcjExOwogY2xhc3MgVGV4dHVyZVN0
b3JhZ2UxMTsKK3N0cnVjdCBSZW5kZXJlcjExRGV2aWNlQ2FwczsKIAogY2xhc3MgSW1hZ2UxMSA6
IHB1YmxpYyBJbWFnZUQzRAogewpAQCAtMzEsNyArMzMsOSBAQAogICAgIEltYWdlMTEoUmVuZGVy
ZXIxMSAqcmVuZGVyZXIpOwogICAgIHZpcnR1YWwgfkltYWdlMTEoKTsKIAotICAgIHN0YXRpYyBn
bDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAqZGVzdCwgSW1hZ2UxMSAqc3JjKTsKKyAg
ICBzdGF0aWMgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwKEltYWdlMTEgKmRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTExICpzcmMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVy
ZXJDYXBzKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RpcnR5KCkgY29uc3Q7CiAKQEAgLTQ0LDkg
KzQ4LDEwIEBACiAgICAgdmlydHVhbCBnbDo6RXJyb3IgbG9hZERhdGEoY29uc3QgZ2w6OkJveCAm
YXJlYSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmlucHV0KTsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBsb2FkQ29tcHJlc3NlZERh
dGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29uc3Qgdm9pZCAqaW5wdXQpOwogCi0gICAgdmlydHVh
bCBnbDo6RXJyb3IgY29weShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBSZW5kZXJUYXJnZXREM0QgKnNvdXJjZSk7Ci0gICAgdmly
dHVhbCBnbDo6RXJyb3IgY29weShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBn
bDo6Qm94ICZzb3VyY2VBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkltYWdlSW5kZXggJnNvdXJjZUluZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKTsKKyAgICBn
bDo6RXJyb3IgY29weUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbWFnZUlu
ZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29w
eUZyb21GcmFtZWJ1ZmZlcihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpzb3VyY2UpIG92ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIHJlY292ZXJGcm9tQXNzb2NpYXRl
ZFN0b3JhZ2UoKTsKICAgICBib29sIGlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZChUZXh0dXJlU3Rv
cmFnZTExKiB0ZXh0dXJlU3RvcmFnZSkgY29uc3Q7CkBAIC01NywxNSArNjIsMTYgQEAKICAgICB2
b2lkIHVubWFwKCk7CiAKICAgcHJpdmF0ZToKLSAgICBnbDo6RXJyb3IgY29weVRvU3RvcmFnZUlt
cGwoVGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTExLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgsIGNvbnN0IGdsOjpCb3ggJnJlZ2lvbik7Ci0gICAgZ2w6OkVycm9yIGNvcHkoY29uc3QgZ2w6
Ok9mZnNldCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwgSUQzRDExUmVz
b3VyY2UgKnNvdXJjZSwgVUlOVCBzb3VyY2VTdWJSZXNvdXJjZSk7CisgICAgZ2w6OkVycm9yIGNv
cHlXaXRob3V0Q29udmVyc2lvbihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmc291cmNlQXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVIZWxwZXIx
MSAmdGV4dHVyZUhlbHBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJ
TlQgc291cmNlU3ViUmVzb3VyY2UpOwogCiAgICAgZ2w6OkVycm9yIGdldFN0YWdpbmdUZXh0dXJl
KElEM0QxMVJlc291cmNlICoqb3V0U3RhZ2luZ1RleHR1cmUsIHVuc2lnbmVkIGludCAqb3V0U3Vi
cmVzb3VyY2VJbmRleCk7CiAgICAgZ2w6OkVycm9yIGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCk7CiAg
ICAgdm9pZCByZWxlYXNlU3RhZ2luZ1RleHR1cmUoKTsKIAogICAgIFJlbmRlcmVyMTEgKm1SZW5k
ZXJlcjsKLSAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOwogCiAgICAgRFhHSV9G
T1JNQVQgbURYR0lGb3JtYXQ7CiAgICAgSUQzRDExUmVzb3VyY2UgKm1TdGFnaW5nVGV4dHVyZTsK
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hl
LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOCw1MyArOCwxODAgQEAKIC8vIEQzRDExIGlucHV0IGxheW91dHMuCiAKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5oIgorCisj
aW5jbHVkZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL3V0aWxp
dGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW5k
ZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFt
RDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaCIKLSNpbmNsdWRlICJs
aWJBTkdMRS9Qcm9ncmFtLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgi
Ci0KICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgiCiAKIG5h
bWVzcGFjZSByeAogewogCi1zdGF0aWMgdm9pZCBHZXRJbnB1dExheW91dChjb25zdCBUcmFuc2xh
dGVkQXR0cmlidXRlIHRyYW5zbGF0ZWRBdHRyaWJ1dGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlZlcnRleEZvcm1hdCBpbnB1dExheW91
dFtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSkKK25hbWVzcGFjZQogewotICAgIGZvciAodW5zaWdu
ZWQgaW50IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTOyBhdHRyaWJ1dGVJbmRleCsrKQorCitzaXplX3QgR2V0UmVzZXJ2ZWRCdWZmZXJD
b3VudChib29sIHVzZXNQb2ludFNwcml0ZUVtdWxhdGlvbikKK3sKKyAgICByZXR1cm4gdXNlc1Bv
aW50U3ByaXRlRW11bGF0aW9uID8gMSA6IDA7Cit9CisKK2dsOjpJbnB1dExheW91dCBHZXRJbnB1
dExheW91dChjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBUcmFuc2xhdGVkQXR0cmlidXRlICo+ICZ0
cmFuc2xhdGVkQXR0cmlidXRlcykKK3sKKyAgICBnbDo6SW5wdXRMYXlvdXQgaW5wdXRMYXlvdXQo
dHJhbnNsYXRlZEF0dHJpYnV0ZXMuc2l6ZSgpLCBnbDo6VkVSVEVYX0ZPUk1BVF9JTlZBTElEKTsK
KworICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCB0
cmFuc2xhdGVkQXR0cmlidXRlcy5zaXplKCk7ICsrYXR0cmlidXRlSW5kZXgpCiAgICAgewotICAg
ICAgICBjb25zdCBUcmFuc2xhdGVkQXR0cmlidXRlICZ0cmFuc2xhdGVkQXR0cmlidXRlID0gdHJh
bnNsYXRlZEF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOworICAgICAgICBjb25zdCBUcmFuc2xh
dGVkQXR0cmlidXRlICp0cmFuc2xhdGVkQXR0cmlidXRlID0gdHJhbnNsYXRlZEF0dHJpYnV0ZXNb
YXR0cmlidXRlSW5kZXhdOworICAgICAgICBpbnB1dExheW91dFthdHRyaWJ1dGVJbmRleF0gPSBn
bDo6R2V0VmVydGV4Rm9ybWF0VHlwZSgKKyAgICAgICAgICAgICp0cmFuc2xhdGVkQXR0cmlidXRl
LT5hdHRyaWJ1dGUsIHRyYW5zbGF0ZWRBdHRyaWJ1dGUtPmN1cnJlbnRWYWx1ZVR5cGUpOworICAg
IH0KKyAgICByZXR1cm4gaW5wdXRMYXlvdXQ7Cit9CiAKLSAgICAgICAgaWYgKHRyYW5zbGF0ZWRB
dHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XS5hY3RpdmUpCitHTGVudW0gR2V0R0xTTEF0dHJpYnV0
ZVR5cGUoY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJnNoYWRlckF0dHJpYnV0ZXMs
IGludCBpbmRleCkKK3sKKyAgICAvLyBDb3VudCBtYXRyaWNlcyBkaWZmZXJlbnRseQorICAgIGZv
ciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogc2hhZGVyQXR0cmlidXRlcykKKyAgICB7
CisgICAgICAgIGlmIChhdHRyaWIubG9jYXRpb24gPT0gLTEpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlucHV0TGF5b3V0W2F0dHJpYnV0ZUluZGV4XSA9IGdsOjpWZXJ0ZXhGb3JtYXQoKnRyYW5z
bGF0ZWRBdHRyaWJ1dGUuYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmlidXRlLmN1cnJlbnRW
YWx1ZVR5cGUpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKworICAgICAgICBH
TGVudW0gdHJhbnNwb3NlZFR5cGUgPSBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZShhdHRyaWIudHlw
ZSk7CisgICAgICAgIGludCByb3dzICAgICAgICAgICAgICA9IGdsOjpWYXJpYWJsZVJvd0NvdW50
KHRyYW5zcG9zZWRUeXBlKTsKKworICAgICAgICBpZiAoaW5kZXggPj0gYXR0cmliLmxvY2F0aW9u
ICYmIGluZGV4IDwgYXR0cmliLmxvY2F0aW9uICsgcm93cykKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHRyYW5zcG9zZWRUeXBlOworICAgICAgICB9CiAgICAgfQorCisgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICByZXR1cm4gR0xfTk9ORTsKIH0KIAotY29uc3QgdW5zaWduZWQgaW50IElu
cHV0TGF5b3V0Q2FjaGU6OmtNYXhJbnB1dExheW91dHMgPSAxMDI0OworY29uc3QgdW5zaWduZWQg
aW50IGtEZWZhdWx0Q2FjaGVTaXplID0gMTAyNDsKIAotSW5wdXRMYXlvdXRDYWNoZTo6SW5wdXRM
YXlvdXRDYWNoZSgpIDogbUlucHV0TGF5b3V0TWFwKGtNYXhJbnB1dExheW91dHMsIGhhc2hJbnB1
dExheW91dCwgY29tcGFyZUlucHV0TGF5b3V0cykKK3N0cnVjdCBQYWNrZWRBdHRyaWJ1dGUKIHsK
LSAgICBtQ291bnRlciA9IDA7Ci0gICAgbURldmljZSA9IE5VTEw7Ci0gICAgbURldmljZUNvbnRl
eHQgPSBOVUxMOwotICAgIG1DdXJyZW50SUwgPSBOVUxMOwotICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAgIHVpbnQ4X3QgYXR0
cmliVHlwZTsKKyAgICB1aW50OF90IHNlbWFudGljSW5kZXg7CisgICAgdWludDhfdCB2ZXJ0ZXhG
b3JtYXRUeXBlOworICAgIHVpbnQ4X3QgZGl2aXNvcjsKK307CisKK09wdGlvbmFsPHNpemVfdD4g
RmluZEZpcnN0Tm9uSW5zdGFuY2VkKAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IFRyYW5z
bGF0ZWRBdHRyaWJ1dGUgKj4gJmN1cnJlbnRBdHRyaWJ1dGVzKQoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBjdXJyZW50QXR0cmlidXRlcy5zaXplKCk7ICsraW5kZXgpCiAg
ICAgewotICAgICAgICBtQ3VycmVudEJ1ZmZlcnNbaV0gPSBOVUxMOwotICAgICAgICBtQ3VycmVu
dFZlcnRleFN0cmlkZXNbaV0gPSBzdGF0aWNfY2FzdDxVSU5UPigtMSk7Ci0gICAgICAgIG1DdXJy
ZW50VmVydGV4T2Zmc2V0c1tpXSA9IHN0YXRpY19jYXN0PFVJTlQ+KC0xKTsKKyAgICAgICAgaWYg
KGN1cnJlbnRBdHRyaWJ1dGVzW2luZGV4XS0+ZGl2aXNvciA9PSAwKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8c2l6ZV90PihpbmRleCk7CisgICAgICAgIH0KICAgICB9
Ci0gICAgbVBvaW50U3ByaXRlVmVydGV4QnVmZmVyID0gTlVMTDsKLSAgICBtUG9pbnRTcHJpdGVJ
bmRleEJ1ZmZlciA9IE5VTEw7CisKKyAgICByZXR1cm4gT3B0aW9uYWw8c2l6ZV90Pjo6SW52YWxp
ZCgpOwogfQogCit2b2lkIFNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQoY29uc3QgZ2w6OlByb2dyYW0g
KnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJnZlcnRleEFycmF5QXR0cmlicywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiAmY3Vy
cmVudFZhbHVlQXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJJbmRl
eEFycmF5ICpzb3J0ZWREM0RTZW1hbnRpY3NPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgVHJhbnNsYXRlZEF0dHJpYnV0ZSAqPiAqc29ydGVkQXR0cmli
dXRlc091dCkKK3sKKyAgICBzb3J0ZWRBdHRyaWJ1dGVzT3V0LT5jbGVhcigpOworCisgICAgY29u
c3QgYXV0byAmbG9jYXRpb25Ub1NlbWFudGljID0KKyAgICAgICAgR2V0SW1wbEFzPFByb2dyYW1E
M0Q+KHByb2dyYW0pLT5nZXRBdHRyaWJMb2NhdGlvblRvRDNEU2VtYW50aWNzKCk7CisKKyAgICBm
b3IgKGF1dG8gbG9jYXRpb25JbmRleCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KHByb2dyYW0tPmdl
dEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSkpCisgICAgeworICAgICAgICBpbnQgZDNkU2Vt
YW50aWMgPSBsb2NhdGlvblRvU2VtYW50aWNbbG9jYXRpb25JbmRleF07CisgICAgICAgIGlmIChz
b3J0ZWRBdHRyaWJ1dGVzT3V0LT5zaXplKCkgPD0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkM2RTZW1h
bnRpYykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNvcnRlZEF0dHJpYnV0ZXNPdXQtPnJlc2l6
ZShkM2RTZW1hbnRpYyArIDEpOworICAgICAgICB9CisKKyAgICAgICAgKCpzb3J0ZWREM0RTZW1h
bnRpY3NPdXQpW2QzZFNlbWFudGljXSA9IGQzZFNlbWFudGljOworCisgICAgICAgIGNvbnN0IGF1
dG8gKmFycmF5QXR0cmliID0gJnZlcnRleEFycmF5QXR0cmlic1tsb2NhdGlvbkluZGV4XTsKKyAg
ICAgICAgaWYgKGFycmF5QXR0cmliLT5hdHRyaWJ1dGUgJiYgYXJyYXlBdHRyaWItPmF0dHJpYnV0
ZS0+ZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgKCpzb3J0ZWRBdHRyaWJ1dGVzT3V0
KVtkM2RTZW1hbnRpY10gPSBhcnJheUF0dHJpYjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJyZW50VmFsdWVBdHRyaWJzW2xvY2F0aW9u
SW5kZXhdLmF0dHJpYnV0ZSk7CisgICAgICAgICAgICAoKnNvcnRlZEF0dHJpYnV0ZXNPdXQpW2Qz
ZFNlbWFudGljXSA9ICZjdXJyZW50VmFsdWVBdHRyaWJzW2xvY2F0aW9uSW5kZXhdOworICAgICAg
ICB9CisgICAgfQorfQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordm9pZCBJbnB1dExh
eW91dENhY2hlOjpQYWNrZWRBdHRyaWJ1dGVMYXlvdXQ6OmFkZEF0dHJpYnV0ZURhdGEoCisgICAg
R0xlbnVtIGdsVHlwZSwKKyAgICBVSU5UIHNlbWFudGljSW5kZXgsCisgICAgZ2w6OlZlcnRleEZv
cm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSwKKyAgICB1bnNpZ25lZCBpbnQgZGl2aXNvcikKK3sK
KyAgICBnbDo6QXR0cmlidXRlVHlwZSBhdHRyaWJUeXBlID0gZ2w6OkdldEF0dHJpYnV0ZVR5cGUo
Z2xUeXBlKTsKKworICAgIFBhY2tlZEF0dHJpYnV0ZSBwYWNrZWRBdHRyaWI7CisgICAgcGFja2Vk
QXR0cmliLmF0dHJpYlR5cGUgPSBzdGF0aWNfY2FzdDx1aW50OF90PihhdHRyaWJUeXBlKTsKKyAg
ICBwYWNrZWRBdHRyaWIuc2VtYW50aWNJbmRleCA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHNlbWFu
dGljSW5kZXgpOworICAgIHBhY2tlZEF0dHJpYi52ZXJ0ZXhGb3JtYXRUeXBlID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4odmVydGV4Rm9ybWF0VHlwZSk7CisgICAgcGFja2VkQXR0cmliLmRpdmlzb3Ig
PSBzdGF0aWNfY2FzdDx1aW50OF90PihkaXZpc29yKTsKKworICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxnbDo6QXR0cmlidXRlVHlwZT4ocGFja2VkQXR0cmliLmF0dHJpYlR5cGUpID09IGF0dHJpYlR5
cGUpOworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxVSU5UPihwYWNrZWRBdHRyaWIuc2VtYW50aWNJ
bmRleCkgPT0gc2VtYW50aWNJbmRleCk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PGdsOjpWZXJ0
ZXhGb3JtYXRUeXBlPihwYWNrZWRBdHRyaWIudmVydGV4Rm9ybWF0VHlwZSkgPT0gdmVydGV4Rm9y
bWF0VHlwZSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocGFja2VkQXR0
cmliLmRpdmlzb3IpID09IGRpdmlzb3IpOworCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YodWlu
dDMyX3QpID09IHNpemVvZihQYWNrZWRBdHRyaWJ1dGUpLCAiUGFja2VkQXR0cmlidXRlcyBtdXN0
IGJlIDMyLWJpdHMgZXhhY3RseS4iKTsKKworICAgIGF0dHJpYnV0ZURhdGFbbnVtQXR0cmlidXRl
cysrXSA9IGdsOjpiaXRDYXN0PHVpbnQzMl90PihwYWNrZWRBdHRyaWIpOworfQorCitib29sIElu
cHV0TGF5b3V0Q2FjaGU6OlBhY2tlZEF0dHJpYnV0ZUxheW91dDo6b3BlcmF0b3I8KGNvbnN0IFBh
Y2tlZEF0dHJpYnV0ZUxheW91dCAmb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKG51bUF0dHJpYnV0
ZXMgIT0gb3RoZXIubnVtQXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIHJldHVybiBudW1BdHRy
aWJ1dGVzIDwgb3RoZXIubnVtQXR0cmlidXRlczsKKyAgICB9CisKKyAgICBpZiAoZmxhZ3MgIT0g
b3RoZXIuZmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gZmxhZ3MgPCBvdGhlci5mbGFnczsK
KyAgICB9CisKKyAgICByZXR1cm4gbWVtY21wKGF0dHJpYnV0ZURhdGEsIG90aGVyLmF0dHJpYnV0
ZURhdGEsIHNpemVvZih1aW50MzJfdCkgKiBudW1BdHRyaWJ1dGVzKSA8IDA7Cit9CisKK0lucHV0
TGF5b3V0Q2FjaGU6OklucHV0TGF5b3V0Q2FjaGUoKQorICAgIDogbUN1cnJlbnRJTChudWxscHRy
KSwKKyAgICAgIG1Qb2ludFNwcml0ZVZlcnRleEJ1ZmZlcihudWxscHRyKSwKKyAgICAgIG1Qb2lu
dFNwcml0ZUluZGV4QnVmZmVyKG51bGxwdHIpLAorICAgICAgbUNhY2hlU2l6ZShrRGVmYXVsdENh
Y2hlU2l6ZSksCisgICAgICBtRGV2aWNlKG51bGxwdHIpLAorICAgICAgbURldmljZUNvbnRleHQo
bnVsbHB0cikKK3sKKyAgICBtQ3VycmVudEJ1ZmZlcnMuZmlsbChudWxscHRyKTsKKyAgICBtQ3Vy
cmVudFZlcnRleFN0cmlkZXMuZmlsbChzdGQ6Om51bWVyaWNfbGltaXRzPFVJTlQ+OjptYXgoKSk7
CisgICAgbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzLmZpbGwoc3RkOjpudW1lcmljX2xpbWl0czxVSU5U
Pjo6bWF4KCkpOworICAgIG1DdXJyZW50QXR0cmlidXRlcy5yZXNlcnZlKGdsOjpNQVhfVkVSVEVY
X0FUVFJJQlMpOworfQorCiBJbnB1dExheW91dENhY2hlOjp+SW5wdXRMYXlvdXRDYWNoZSgpCiB7
CiAgICAgY2xlYXIoKTsKQEAgLTcwLDExICsxOTcsMTEgQEAKIAogdm9pZCBJbnB1dExheW91dENh
Y2hlOjpjbGVhcigpCiB7Ci0gICAgZm9yIChJbnB1dExheW91dE1hcDo6aXRlcmF0b3IgaSA9IG1J
bnB1dExheW91dE1hcC5iZWdpbigpOyBpICE9IG1JbnB1dExheW91dE1hcC5lbmQoKTsgaSsrKQor
ICAgIGZvciAoYXV0byAmbGF5b3V0IDogbUxheW91dE1hcCkKICAgICB7Ci0gICAgICAgIFNhZmVS
ZWxlYXNlKGktPnNlY29uZC5pbnB1dExheW91dCk7CisgICAgICAgIFNhZmVSZWxlYXNlKGxheW91
dC5zZWNvbmQpOwogICAgIH0KLSAgICBtSW5wdXRMYXlvdXRNYXAuY2xlYXIoKTsKKyAgICBtTGF5
b3V0TWFwLmNsZWFyKCk7CiAgICAgU2FmZVJlbGVhc2UobVBvaW50U3ByaXRlVmVydGV4QnVmZmVy
KTsKICAgICBTYWZlUmVsZWFzZShtUG9pbnRTcHJpdGVJbmRleEJ1ZmZlcik7CiAgICAgbWFya0Rp
cnR5KCk7CkBAIC04MiwyNDMgKzIwOSwxMzMgQEAKIAogdm9pZCBJbnB1dExheW91dENhY2hlOjpt
YXJrRGlydHkoKQogewotICAgIG1DdXJyZW50SUwgPSBOVUxMOworICAgIG1DdXJyZW50SUwgPSBu
dWxscHRyOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6Ok1BWF9WRVJURVhf
QVRUUklCUzsgaSsrKQogICAgIHsKLSAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2ldID0gTlVMTDsK
KyAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2ldICAgICAgID0gbnVsbHB0cjsKICAgICAgICAgbUN1
cnJlbnRWZXJ0ZXhTdHJpZGVzW2ldID0gc3RhdGljX2Nhc3Q8VUlOVD4oLTEpOwogICAgICAgICBt
Q3VycmVudFZlcnRleE9mZnNldHNbaV0gPSBzdGF0aWNfY2FzdDxVSU5UPigtMSk7CiAgICAgfQog
fQogCi1nbDo6RXJyb3IgSW5wdXRMYXlvdXRDYWNoZTo6YXBwbHlWZXJ0ZXhCdWZmZXJzKFRyYW5z
bGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsIGds
OjpQcm9ncmFtICpwcm9ncmFtKQorZ2w6OkVycm9yIElucHV0TGF5b3V0Q2FjaGU6OmFwcGx5VmVy
dGV4QnVmZmVycygKKyAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAorICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZ2ZXJ0ZXhBcnJheUF0dHJpYnMsCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJmN1cnJlbnRWYWx1ZUF0dHJpYnMs
CisgICAgR0xlbnVtIG1vZGUsCisgICAgR0xpbnQgc3RhcnQsCisgICAgVHJhbnNsYXRlZEluZGV4
RGF0YSAqaW5kZXhJbmZvLAorICAgIEdMc2l6ZWkgbnVtSW5kaWNlc1Blckluc3RhbmNlKQogewor
ICAgIEFTU0VSVChtRGV2aWNlICYmIG1EZXZpY2VDb250ZXh0KTsKKworICAgIGdsOjpQcm9ncmFt
ICpwcm9ncmFtICAgPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgUHJvZ3JhbUQzRCAqcHJvZ3Jh
bUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKIAotICAgIGludCBzb3J0ZWRT
ZW1hbnRpY0luZGljZXNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107Ci0gICAgcHJvZ3JhbUQzRC0+
c29ydEF0dHJpYnV0ZXNCeUxheW91dChhdHRyaWJ1dGVzLCBzb3J0ZWRTZW1hbnRpY0luZGljZXMp
OwogICAgIGJvb2wgcHJvZ3JhbVVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZXMgPSBwcm9ncmFtRDNE
LT51c2VzUG9pbnRTaXplKCkgJiYgcHJvZ3JhbUQzRC0+dXNlc0luc3RhbmNlZFBvaW50U3ByaXRl
RW11bGF0aW9uKCk7CiAgICAgYm9vbCBpbnN0YW5jZWRQb2ludFNwcml0ZXNBY3RpdmUgPSBwcm9n
cmFtVXNlc0luc3RhbmNlZFBvaW50U3ByaXRlcyAmJiAobW9kZSA9PSBHTF9QT0lOVFMpOwogCi0g
ICAgaWYgKCFtRGV2aWNlIHx8ICFtRGV2aWNlQ29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIGlucHV0IGxheW91dCBjYWNo
ZSBpcyBub3QgaW5pdGlhbGl6ZWQuIik7Ci0gICAgfQorICAgIEF0dHJpYkluZGV4QXJyYXkgc29y
dGVkU2VtYW50aWNJbmRpY2VzOworICAgIFNvcnRBdHRyaWJ1dGVzQnlMYXlvdXQocHJvZ3JhbSwg
dmVydGV4QXJyYXlBdHRyaWJzLCBjdXJyZW50VmFsdWVBdHRyaWJzLCAmc29ydGVkU2VtYW50aWNJ
bmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1DdXJyZW50QXR0cmlidXRlcyk7
CiAKLSAgICBJbnB1dExheW91dEtleSBpbEtleSA9IHsgMCB9OwotCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIHNlbWFudGljTmFtZSA9ICJURVhDT09SRCI7Ci0KLSAgICB1bnNpZ25lZCBpbnQgZmly
c3RJbmRleGVkRWxlbWVudCA9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7Ci0gICAgdW5zaWduZWQg
aW50IGZpcnN0SW5zdGFuY2VkRWxlbWVudCA9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7Ci0gICAg
dW5zaWduZWQgaW50IG5leHRBdmFpbGFibGVJbnB1dFNsb3QgPSAwOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgLy8g
SWYgd2UgYXJlIHVzaW5nIEZMIDlfMywgbWFrZSBzdXJlIHRoZSBmaXJzdCBhdHRyaWJ1dGUgaXMg
bm90IGluc3RhbmNlZAorICAgIGlmIChtRmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVM
XzlfMyAmJiAhbUN1cnJlbnRBdHRyaWJ1dGVzLmVtcHR5KCkpCiAgICAgewotICAgICAgICBpZiAo
YXR0cmlidXRlc1tpXS5hY3RpdmUpCisgICAgICAgIGlmIChtQ3VycmVudEF0dHJpYnV0ZXNbMF0t
PmRpdmlzb3IgPiAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBEM0QxMV9JTlBVVF9DTEFTU0lG
SUNBVElPTiBpbnB1dENsYXNzID0gYXR0cmlidXRlc1tpXS5kaXZpc29yID4gMCA/IEQzRDExX0lO
UFVUX1BFUl9JTlNUQU5DRV9EQVRBIDogRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBOwotICAg
ICAgICAgICAgLy8gSWYgcmVuZGVyaW5nIHBvaW50cyBhbmQgaW5zdGFuY2VkIHBvaW50c3ByaXRl
IGVtdWxhdGlvbiBpcyBiZWluZyB1c2VkLCB0aGUgaW5wdXRDbGFzcyBpcyByZXF1aXJlZCB0byBi
ZSBjb25maWd1cmVkIGFzIHBlciBpbnN0YW5jZSBkYXRhCi0gICAgICAgICAgICBpbnB1dENsYXNz
ID0gaW5zdGFuY2VkUG9pbnRTcHJpdGVzQWN0aXZlID8gRDNEMTFfSU5QVVRfUEVSX0lOU1RBTkNF
X0RBVEEgOiBpbnB1dENsYXNzOwotCi0gICAgICAgICAgICBnbDo6VmVydGV4Rm9ybWF0IHZlcnRl
eEZvcm1hdCgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUsIGF0dHJpYnV0ZXNbaV0uY3VycmVudFZh
bHVlVHlwZSk7Ci0gICAgICAgICAgICBjb25zdCBkM2QxMTo6VmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhG
b3JtYXRJbmZvID0gZDNkMTE6OkdldFZlcnRleEZvcm1hdEluZm8odmVydGV4Rm9ybWF0LCBtRmVh
dHVyZUxldmVsKTsKLQotICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSB0eXBlIG9mIHRoZSBhc3Nv
Y2lhdGVkIHZlcnRleCBzaGFkZXIgdmVjdG9yIGluIG91ciBrZXkKLSAgICAgICAgICAgIC8vIFRo
aXMgd2lsbCBwcmV2ZW50IG1pc21hdGNoZWQgdmVydGV4IHNoYWRlcnMgZnJvbSB1c2luZyB0aGUg
c2FtZSBpbnB1dCBsYXlvdXQKLSAgICAgICAgICAgIEdMaW50IGF0dHJpYnV0ZVNpemU7Ci0gICAg
ICAgICAgICBwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJ1dGUoaWxLZXkuZWxlbWVudENvdW50LCAw
LCBOVUxMLCAmYXR0cmlidXRlU2l6ZSwgJmlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3Vu
dF0uZ2xzbEVsZW1lbnRUeXBlLCBOVUxMKTsKLQotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNb
aWxLZXkuZWxlbWVudENvdW50XS5kZXNjLlNlbWFudGljTmFtZSA9IHNlbWFudGljTmFtZTsKLSAg
ICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVzYy5TZW1hbnRp
Y0luZGV4ID0gc29ydGVkU2VtYW50aWNJbmRpY2VzW2ldOwotICAgICAgICAgICAgaWxLZXkuZWxl
bWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLkZvcm1hdCA9IHZlcnRleEZvcm1hdEluZm8u
bmF0aXZlRm9ybWF0OwotICAgICAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENv
dW50XS5kZXNjLklucHV0U2xvdCA9IGk7Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtl
eS5lbGVtZW50Q291bnRdLmRlc2MuQWxpZ25lZEJ5dGVPZmZzZXQgPSAwOwotICAgICAgICAgICAg
aWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLklucHV0U2xvdENsYXNzID0g
aW5wdXRDbGFzczsKLSAgICAgICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3Vu
dF0uZGVzYy5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IGluc3RhbmNlZFBvaW50U3ByaXRlc0FjdGl2
ZSA/IDEgOiBhdHRyaWJ1dGVzW2ldLmRpdmlzb3I7Ci0KLSAgICAgICAgICAgIGlmIChpbnB1dENs
YXNzID09IEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSAmJiBmaXJzdEluZGV4ZWRFbGVtZW50
ID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgICAgICBPcHRpb25hbDxzaXplX3Q+
IGZpcnN0Tm9uSW5zdGFuY2VkSW5kZXggPSBGaW5kRmlyc3ROb25JbnN0YW5jZWQobUN1cnJlbnRB
dHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIGlmIChmaXJzdE5vbkluc3RhbmNlZEluZGV4LnZhbGlk
KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZmlyc3RJbmRleGVkRWxlbWVudCA9
IGlsS2V5LmVsZW1lbnRDb3VudDsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBmaXJz
dE5vbkluc3RhbmNlZEluZGV4LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3RkOjpzd2FwKG1D
dXJyZW50QXR0cmlidXRlc1swXSwgbUN1cnJlbnRBdHRyaWJ1dGVzW2luZGV4XSk7CisgICAgICAg
ICAgICAgICAgc3RkOjpzd2FwKHNvcnRlZFNlbWFudGljSW5kaWNlc1swXSwgc29ydGVkU2VtYW50
aWNJbmRpY2VzW2luZGV4XSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChp
bnB1dENsYXNzID09IEQzRDExX0lOUFVUX1BFUl9JTlNUQU5DRV9EQVRBICYmIGZpcnN0SW5zdGFu
Y2VkRWxlbWVudCA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGZpcnN0SW5zdGFuY2VkRWxlbWVudCA9IGlsS2V5LmVsZW1lbnRDb3VudDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWxLZXkuZWxlbWVudENvdW50Kys7Ci0gICAg
ICAgICAgICBuZXh0QXZhaWxhYmxlSW5wdXRTbG90ID0gaSArIDE7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAvLyBJbnN0YW5jZWQgUG9pbnRTcHJpdGUgZW11bGF0aW9uIHJlcXVpcmVzIGFkZGl0
aW9uYWwgZW50cmllcyBpbiB0aGUKLSAgICAvLyBpbnB1dGxheW91dCB0byBzdXBwb3J0IHRoZSB2
ZXJ0aWNlcyB0aGF0IG1ha2UgdXAgdGhlIHBvaW50c3ByaXRlIHF1YWQuCi0gICAgLy8gV2UgZG8g
dGhpcyBldmVuIGlmIG1vZGUgIT0gR0xfUE9JTlRTLCBzaW5jZSB0aGUgc2hhZGVyIHNpZ25hdHVy
ZSBoYXMgdGhlc2UgaW5wdXRzLCBhbmQgdGhlIGlucHV0IGxheW91dCBtdXN0IG1hdGNoIHRoZSBz
aGFkZXIKLSAgICBpZiAocHJvZ3JhbVVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZXMpCi0gICAgewot
ICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2MuU2VtYW50aWNO
YW1lID0gIlNQUklURVBPU0lUSU9OIjsKLSAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxl
bWVudENvdW50XS5kZXNjLlNlbWFudGljSW5kZXggPSAwOwotICAgICAgICBpbEtleS5lbGVtZW50
c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2MuRm9ybWF0ID0gRFhHSV9GT1JNQVRfUjMyRzMyQjMy
X0ZMT0FUOwotICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2Mu
SW5wdXRTbG90ID0gbmV4dEF2YWlsYWJsZUlucHV0U2xvdDsKLSAgICAgICAgaWxLZXkuZWxlbWVu
dHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLkFsaWduZWRCeXRlT2Zmc2V0ID0gMDsKLSAgICAg
ICAgaWxLZXkuZWxlbWVudHNbaWxLZXkuZWxlbWVudENvdW50XS5kZXNjLklucHV0U2xvdENsYXNz
ID0gRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBOwotICAgICAgICBpbEtleS5lbGVtZW50c1tp
bEtleS5lbGVtZW50Q291bnRdLmRlc2MuSW5zdGFuY2VEYXRhU3RlcFJhdGUgPSAwOworICAgIEFO
R0xFX1RSWSh1cGRhdGVJbnB1dExheW91dChzdGF0ZSwgbW9kZSwgc29ydGVkU2VtYW50aWNJbmRp
Y2VzLCBudW1JbmRpY2VzUGVySW5zdGFuY2UpKTsKIAotICAgICAgICAvLyBUaGUgbmV3IGVsZW1l
bnRzIGFyZSBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEgZGF0YSBzbyB0aGUgaW5kZXhlZCBl
bGVtZW50Ci0gICAgICAgIC8vIHRyYWNraW5nIG11c3QgYmUgYXBwbGllZC4gIFRoaXMgZW5zdXJl
cyB0aGF0IHRoZSBpbnN0YW5jaW5nIHNwZWNpZmljCi0gICAgICAgIC8vIGJ1ZmZlciBzd2FwcGlu
ZyBsb2dpYyBjb250aW51ZXMgdG8gd29yay4KLSAgICAgICAgaWYgKGZpcnN0SW5kZXhlZEVsZW1l
bnQgPT0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCUykKLSAgICAgICAgewotICAgICAgICAgICAgZmly
c3RJbmRleGVkRWxlbWVudCA9IGlsS2V5LmVsZW1lbnRDb3VudDsKLSAgICAgICAgfQorICAgIGJv
b2wgZGlydHlCdWZmZXJzID0gZmFsc2U7CisgICAgc2l6ZV90IG1pbkRpZmYgICAgPSBnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTOworICAgIHNpemVfdCBtYXhEaWZmICAgID0gMDsKIAotICAgICAgICBp
bEtleS5lbGVtZW50Q291bnQrKzsKKyAgICAvLyBOb3RlIHRoYXQgaWYgd2UgdXNlIGluc3RhbmNl
IGVtdWxhdGlvbiwgd2UgcmVzZXJ2ZSB0aGUgZmlyc3QgYnVmZmVyIHNsb3QuCisgICAgc2l6ZV90
IHJlc2VydmVkQnVmZmVycyA9IEdldFJlc2VydmVkQnVmZmVyQ291bnQocHJvZ3JhbVVzZXNJbnN0
YW5jZWRQb2ludFNwcml0ZXMpOwogCi0gICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1l
bnRDb3VudF0uZGVzYy5TZW1hbnRpY05hbWUgPSAiU1BSSVRFVEVYQ09PUkQiOwotICAgICAgICBp
bEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2MuU2VtYW50aWNJbmRleCA9IDA7
Ci0gICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5LmVsZW1lbnRDb3VudF0uZGVzYy5Gb3JtYXQg
PSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ7Ci0gICAgICAgIGlsS2V5LmVsZW1lbnRzW2lsS2V5
LmVsZW1lbnRDb3VudF0uZGVzYy5JbnB1dFNsb3QgPSBuZXh0QXZhaWxhYmxlSW5wdXRTbG90Owot
ICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRlc2MuQWxpZ25lZEJ5
dGVPZmZzZXQgPSBzaXplb2YoZmxvYXQpICogMzsKLSAgICAgICAgaWxLZXkuZWxlbWVudHNbaWxL
ZXkuZWxlbWVudENvdW50XS5kZXNjLklucHV0U2xvdENsYXNzID0gRDNEMTFfSU5QVVRfUEVSX1ZF
UlRFWF9EQVRBOwotICAgICAgICBpbEtleS5lbGVtZW50c1tpbEtleS5lbGVtZW50Q291bnRdLmRl
c2MuSW5zdGFuY2VEYXRhU3RlcFJhdGUgPSAwOwotCi0gICAgICAgIGlsS2V5LmVsZW1lbnRDb3Vu
dCsrOwotICAgIH0KLQotICAgIC8vIE9uIDlfMywgd2UgbXVzdCBlbnN1cmUgdGhhdCBzbG90IDAg
Y29udGFpbnMgbm9uLWluc3RhbmNlZCBkYXRhLgotICAgIC8vIElmIHNsb3QgMCBjdXJyZW50bHkg
Y29udGFpbnMgaW5zdGFuY2VkIGRhdGEgdGhlbiB3ZSBzd2FwIGl0IHdpdGggYSBub24taW5zdGFu
Y2VkIGVsZW1lbnQuCi0gICAgLy8gTm90ZSB0aGF0IGluc3RhbmNpbmcgaXMgb25seSBhdmFpbGFi
bGUgb24gOV8zIHZpYSBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLCBzaW5jZSA5XzMgZG9lc24ndCBz
dXBwb3J0IE9wZW5HTCBFUyAzLjAuCi0gICAgLy8gQXMgcGVyIHRoZSBzcGVjIGZvciBBTkdMRV9p
bnN0YW5jZWRfYXJyYXlzLCBub3QgYWxsIGF0dHJpYnV0ZXMgY2FuIGJlIGluc3RhbmNlZCBzaW11
bHRhbmVvdXNseSwgc28gYSBub24taW5zdGFuY2VkIGVsZW1lbnQgbXVzdCBleGlzdC4KLSAgICBB
U1NFUlQoIShtRmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyAmJiBmaXJzdElu
ZGV4ZWRFbGVtZW50ID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpKTsKLSAgICBib29sIG1vdmVG
aXJzdEluZGV4ZWRJbnRvU2xvdFplcm8gPSBtRmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xF
VkVMXzlfMyAmJiBmaXJzdEluc3RhbmNlZEVsZW1lbnQgPT0gMCAmJiBmaXJzdEluZGV4ZWRFbGVt
ZW50ICE9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7Ci0KLSAgICBpZiAobW92ZUZpcnN0SW5kZXhl
ZEludG9TbG90WmVybykKKyAgICBmb3IgKHNpemVfdCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYklu
ZGV4IDwgKGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMgLSByZXNlcnZlZEJ1ZmZlcnMpOworICAgICAg
ICAgKythdHRyaWJJbmRleCkKICAgICB7Ci0gICAgICAgIGlsS2V5LmVsZW1lbnRzW2ZpcnN0SW5z
dGFuY2VkRWxlbWVudF0uZGVzYy5JbnB1dFNsb3QgPSBpbEtleS5lbGVtZW50c1tmaXJzdEluZGV4
ZWRFbGVtZW50XS5kZXNjLklucHV0U2xvdDsKLSAgICAgICAgaWxLZXkuZWxlbWVudHNbZmlyc3RJ
bmRleGVkRWxlbWVudF0uZGVzYy5JbnB1dFNsb3QgPSAwOworICAgICAgICBJRDNEMTFCdWZmZXIg
KmJ1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIFVJTlQgdmVydGV4U3RyaWRlICAgID0gMDsKKyAg
ICAgICAgVUlOVCB2ZXJ0ZXhPZmZzZXQgICAgPSAwOwogCi0gICAgICAgIC8vIEluc3RhbmNlZCBQ
b2ludFNwcml0ZSBlbXVsYXRpb24gdXNlcyBtdWx0aXBsZSBsYXlvdXQgZW50cmllcyBhY3Jvc3Mg
YSBzaW5nbGUgdmVydGV4IGJ1ZmZlci4KLSAgICAgICAgLy8gSWYgYW4gaW5kZXggc3dhcCBpcyBw
ZXJmb3JtZWQsIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgYWxsIGVsZW1lbnRzIGdldCB0aGUgcHJv
cGVyIElucHV0U2xvdC4KLSAgICAgICAgaWYgKHByb2dyYW1Vc2VzSW5zdGFuY2VkUG9pbnRTcHJp
dGVzKQorICAgICAgICBpZiAoYXR0cmliSW5kZXggPCBtQ3VycmVudEF0dHJpYnV0ZXMuc2l6ZSgp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpbEtleS5lbGVtZW50c1tmaXJzdEluZGV4ZWRFbGVt
ZW50ICsgMV0uZGVzYy5JbnB1dFNsb3QgPSAwOwotICAgICAgICB9Ci0gICAgfQorICAgICAgICAg
ICAgY29uc3QgYXV0byAmYXR0cmliICAgICAgPSAqbUN1cnJlbnRBdHRyaWJ1dGVzW2F0dHJpYklu
ZGV4XTsKKyAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlID0gYXR0cmliLnN0b3Jh
Z2UgPyBHZXRBczxCdWZmZXIxMT4oYXR0cmliLnN0b3JhZ2UpIDogbnVsbHB0cjsKIAotICAgIElE
M0QxMUlucHV0TGF5b3V0ICppbnB1dExheW91dCA9IE5VTEw7Ci0KLSAgICBJbnB1dExheW91dE1h
cDo6aXRlcmF0b3Iga2V5SXRlciA9IG1JbnB1dExheW91dE1hcC5maW5kKGlsS2V5KTsKLSAgICBp
ZiAoa2V5SXRlciAhPSBtSW5wdXRMYXlvdXRNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBpbnB1
dExheW91dCA9IGtleUl0ZXItPnNlY29uZC5pbnB1dExheW91dDsKLSAgICAgICAga2V5SXRlci0+
c2Vjb25kLmxhc3RVc2VkVGltZSA9IG1Db3VudGVyKys7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXQgc2hhZGVySW5wdXRMYXlvdXRbZ2w6Ok1BWF9WRVJU
RVhfQVRUUklCU107Ci0gICAgICAgIEdldElucHV0TGF5b3V0KGF0dHJpYnV0ZXMsIHNoYWRlcklu
cHV0TGF5b3V0KTsKLQotICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpzaGFkZXIgPSBOVUxM
OwotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBwcm9ncmFtRDNELT5nZXRWZXJ0ZXhFeGVjdXRh
YmxlRm9ySW5wdXRMYXlvdXQoc2hhZGVySW5wdXRMYXlvdXQsICZzaGFkZXIsIG51bGxwdHIpOwot
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3I7Ci0gICAgICAgIH0KLQotICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpzaGFk
ZXIxMSA9IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4oc2hhZGVyKTsKLQotICAgICAgICBEM0Qx
MV9JTlBVVF9FTEVNRU5UX0RFU0MgZGVzY3NbZ2w6Ok1BWF9WRVJURVhfQVRUUklCU107Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGogPSAwOyBqIDwgaWxLZXkuZWxlbWVudENvdW50OyArK2op
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc2NzW2pdID0gaWxLZXkuZWxlbWVudHNbal0uZGVz
YzsKLSAgICAgICAgfQotCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRl
SW5wdXRMYXlvdXQoZGVzY3MsIGlsS2V5LmVsZW1lbnRDb3VudCwgc2hhZGVyMTEtPmdldEZ1bmN0
aW9uKCksIHNoYWRlcjExLT5nZXRMZW5ndGgoKSwgJmlucHV0TGF5b3V0KTsKLSAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIGlucHV0IGxheW91
dCwgSFJFU1VMVDogMHglMDh4IiwgcmVzdWx0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICht
SW5wdXRMYXlvdXRNYXAuc2l6ZSgpID49IGtNYXhJbnB1dExheW91dHMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1pdCBvZiAldSBpbnB1dCBsYXlvdXRz
LCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCi0gICAgICAgICAgICAgICAgICAi
dG8gbWFrZSByb29tLiIsIGtNYXhJbnB1dExheW91dHMpOwotCi0gICAgICAgICAgICBJbnB1dExh
eW91dE1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRseVVzZWQgPSBtSW5wdXRMYXlvdXRNYXAuYmVn
aW4oKTsKLSAgICAgICAgICAgIGZvciAoSW5wdXRMYXlvdXRNYXA6Oml0ZXJhdG9yIGkgPSBtSW5w
dXRMYXlvdXRNYXAuYmVnaW4oKTsgaSAhPSBtSW5wdXRMYXlvdXRNYXAuZW5kKCk7IGkrKykKKyAg
ICAgICAgICAgIC8vIElmIGluZGV4ZWQgcG9pbnRzcHJpdGUgZW11bGF0aW9uIGlzIGFjdGl2ZSwg
dGhlbiB3ZSBuZWVkIHRvIHRha2UgYSBsZXNzIGVmZmljZW50IGNvZGUgcGF0aC4KKyAgICAgICAg
ICAgIC8vIEVtdWxhdGVkIGluZGV4ZWQgcG9pbnRzcHJpdGUgcmVuZGVyaW5nIHJlcXVpcmVzIHRo
YXQgdGhlIHZlcnRleCBidWZmZXJzIG1hdGNoIGV4YWN0bHkgdG8KKyAgICAgICAgICAgIC8vIHRo
ZSBpbmRpY2VzIHBhc3NlZCBieSB0aGUgY2FsbGVyLiAgVGhpcyBjb3VsZCBleHBhbmQgb3Igc2hy
aW5rIHRoZSB2ZXJ0ZXggYnVmZmVyIGRlcGVuZGluZworICAgICAgICAgICAgLy8gb24gdGhlIG51
bWJlciBvZiBwb2ludHMgaW5kaWNhdGVkIGJ5IHRoZSBpbmRleCBsaXN0IG9yIGhvdyBtYW55IGR1
cGxpY2F0ZXMgYXJlIGZvdW5kIG9uIHRoZSBpbmRleCBsaXN0LgorICAgICAgICAgICAgaWYgKGJ1
ZmZlclN0b3JhZ2UgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaS0+c2Vjb25kLmxhc3RVc2VkVGltZSA8IGxlYXN0UmVjZW50bHlVc2VkLT5zZWNvbmQubGFz
dFVzZWRUaW1lKQorICAgICAgICAgICAgICAgIEFTU0VSVChhdHRyaWIudmVydGV4QnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBHZXRBczxWZXJ0ZXhCdWZmZXIxMT4oYXR0
cmliLnZlcnRleEJ1ZmZlci5nZXQoKSktPmdldEJ1ZmZlcigpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2VkUG9pbnRTcHJpdGVzQWN0aXZlICYmIChpbmRleElu
Zm8gIT0gbnVsbHB0cikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4
SW5mby0+c3JjSW5kZXhEYXRhLnNyY0J1ZmZlciAhPSBudWxscHRyKQogICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgbGVhc3RSZWNlbnRseVVzZWQgPSBpOworICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfVFJZKGluZGV4SW5mby0+c3JjSW5kZXhEYXRhLnNyY0J1ZmZlci0+
Z2V0RGF0YSgmYnVmZmVyRGF0YSkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYnVmZmVy
RGF0YSAhPSBudWxscHRyKTsKKworICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0
ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90Pihp
bmRleEluZm8tPnNyY0luZGV4RGF0YS5zcmNJbmRpY2VzKTsKKyAgICAgICAgICAgICAgICAgICAg
aW5kZXhJbmZvLT5zcmNJbmRleERhdGEuc3JjQnVmZmVyICA9IG51bGxwdHI7CisgICAgICAgICAg
ICAgICAgICAgIGluZGV4SW5mby0+c3JjSW5kZXhEYXRhLnNyY0luZGljZXMgPSBidWZmZXJEYXRh
ICsgb2Zmc2V0OwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEFOR0xFX1RS
WV9SRVNVTFQoYnVmZmVyU3RvcmFnZS0+Z2V0RW11bGF0ZWRJbmRleGVkQnVmZmVyKCZpbmRleElu
Zm8tPnNyY0luZGV4RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIsIHN0YXJ0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcik7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBTYWZlUmVsZWFzZShsZWFzdFJlY2VudGx5VXNlZC0+c2Vjb25kLmlucHV0TGF5b3V0
KTsKLSAgICAgICAgICAgIG1JbnB1dExheW91dE1hcC5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7
Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBBTkdMRV9UUllfUkVTVUxUKAorICAgICAgICAgICAgICAgICAgICBidWZmZXJTdG9yYWdl
LT5nZXRCdWZmZXIoQlVGRkVSX1VTQUdFX1ZFUlRFWF9PUl9UUkFOU0ZPUk1fRkVFREJBQ0spLCBi
dWZmZXIpOworICAgICAgICAgICAgfQogCi0gICAgICAgIElucHV0TGF5b3V0Q291bnRlclBhaXIg
aW5wdXRDb3VudGVyUGFpcjsKLSAgICAgICAgaW5wdXRDb3VudGVyUGFpci5pbnB1dExheW91dCA9
IGlucHV0TGF5b3V0OwotICAgICAgICBpbnB1dENvdW50ZXJQYWlyLmxhc3RVc2VkVGltZSA9IG1D
b3VudGVyKys7Ci0KLSAgICAgICAgbUlucHV0TGF5b3V0TWFwLmluc2VydChzdGQ6Om1ha2VfcGFp
cihpbEtleSwgaW5wdXRDb3VudGVyUGFpcikpOwotICAgIH0KLQotICAgIGlmIChpbnB1dExheW91
dCAhPSBtQ3VycmVudElMKQotICAgIHsKLSAgICAgICAgbURldmljZUNvbnRleHQtPklBU2V0SW5w
dXRMYXlvdXQoaW5wdXRMYXlvdXQpOwotICAgICAgICBtQ3VycmVudElMID0gaW5wdXRMYXlvdXQ7
Ci0gICAgfQotCi0gICAgYm9vbCBkaXJ0eUJ1ZmZlcnMgPSBmYWxzZTsKLSAgICBzaXplX3QgbWlu
RGlmZiA9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM7Ci0gICAgc2l6ZV90IG1heERpZmYgPSAwOwot
ICAgIHVuc2lnbmVkIGludCBuZXh0QXZhaWxhYmxlSW5kZXggPSAwOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCi0gICAgewot
ICAgICAgICBJRDNEMTFCdWZmZXIgKmJ1ZmZlciA9IE5VTEw7Ci0KLSAgICAgICAgaWYgKGF0dHJp
YnV0ZXNbaV0uYWN0aXZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBWZXJ0ZXhCdWZmZXIxMSAq
dmVydGV4QnVmZmVyID0gR2V0QXM8VmVydGV4QnVmZmVyMTE+KGF0dHJpYnV0ZXNbaV0udmVydGV4
QnVmZmVyKTsKLSAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlID0gYXR0cmlidXRl
c1tpXS5zdG9yYWdlID8gR2V0QXM8QnVmZmVyMTE+KGF0dHJpYnV0ZXNbaV0uc3RvcmFnZSkgOiBO
VUxMOwotCi0gICAgICAgICAgICBidWZmZXIgPSBidWZmZXJTdG9yYWdlID8gYnVmZmVyU3RvcmFn
ZS0+Z2V0QnVmZmVyKEJVRkZFUl9VU0FHRV9WRVJURVhfT1JfVFJBTlNGT1JNX0ZFRURCQUNLKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZlcnRleEJ1ZmZlci0+Z2V0QnVm
ZmVyKCk7CisgICAgICAgICAgICB2ZXJ0ZXhTdHJpZGUgPSBhdHRyaWIuc3RyaWRlOworICAgICAg
ICAgICAgQU5HTEVfVFJZX1JFU1VMVChhdHRyaWIuY29tcHV0ZU9mZnNldChzdGFydCksIHZlcnRl
eE9mZnNldCk7CiAgICAgICAgIH0KIAotICAgICAgICBVSU5UIHZlcnRleFN0cmlkZSA9IGF0dHJp
YnV0ZXNbaV0uc3RyaWRlOwotICAgICAgICBVSU5UIHZlcnRleE9mZnNldCA9IGF0dHJpYnV0ZXNb
aV0ub2Zmc2V0OworICAgICAgICBzaXplX3QgYnVmZmVySW5kZXggPSByZXNlcnZlZEJ1ZmZlcnMg
KyBhdHRyaWJJbmRleDsKIAotICAgICAgICBpZiAoYnVmZmVyICE9IG1DdXJyZW50QnVmZmVyc1tp
XSB8fCB2ZXJ0ZXhTdHJpZGUgIT0gbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2ldIHx8Ci0gICAgICAg
ICAgICB2ZXJ0ZXhPZmZzZXQgIT0gbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2ldKQorICAgICAgICBp
ZiAoYnVmZmVyICE9IG1DdXJyZW50QnVmZmVyc1tidWZmZXJJbmRleF0gfHwKKyAgICAgICAgICAg
IHZlcnRleFN0cmlkZSAhPSBtQ3VycmVudFZlcnRleFN0cmlkZXNbYnVmZmVySW5kZXhdIHx8Cisg
ICAgICAgICAgICB2ZXJ0ZXhPZmZzZXQgIT0gbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2J1ZmZlcklu
ZGV4XSkKICAgICAgICAgewogICAgICAgICAgICAgZGlydHlCdWZmZXJzID0gdHJ1ZTsKLSAgICAg
ICAgICAgIG1pbkRpZmYgPSBzdGQ6Om1pbihtaW5EaWZmLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGkp
KTsKLSAgICAgICAgICAgIG1heERpZmYgPSBzdGQ6Om1heChtYXhEaWZmLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGkpKTsKKyAgICAgICAgICAgIG1pbkRpZmYgICAgICA9IHN0ZDo6bWluKG1pbkRpZmYs
IGJ1ZmZlckluZGV4KTsKKyAgICAgICAgICAgIG1heERpZmYgICAgICA9IHN0ZDo6bWF4KG1heERp
ZmYsIGJ1ZmZlckluZGV4KTsKIAotICAgICAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2ldID0gYnVm
ZmVyOwotICAgICAgICAgICAgbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2ldID0gdmVydGV4U3RyaWRl
OwotICAgICAgICAgICAgbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2ldID0gdmVydGV4T2Zmc2V0Owot
Ci0gICAgICAgICAgICAvLyBJZiBhIG5vbiBudWxsIElEM0QxMUJ1ZmZlciBpcyBiZWluZyBhc3Np
Z25lZCB0byBtQ3VycmVudEJ1ZmZlcnMsCi0gICAgICAgICAgICAvLyB0aGVuIHRoZSBuZXh0IGF2
YWlsYWJsZSBpbmRleCBuZWVkcyB0byBiZSB0cmFja2VkIHRvIGVuc3VyZSAKLSAgICAgICAgICAg
IC8vIHRoYXQgYW55IGluc3RhbmNlZCBwb2ludHNwcml0ZSBlbXVsYXRpb24gYnVmZmVycyB3aWxs
IGJlIHByb3Blcmx5IHBhY2tlZC4KLSAgICAgICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbmV4dEF2YWlsYWJsZUluZGV4ID0gaSArIDE7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBtQ3VycmVudEJ1ZmZlcnNbYnVmZmVySW5kZXhdICAgICAgID0g
YnVmZmVyOworICAgICAgICAgICAgbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2J1ZmZlckluZGV4XSA9
IHZlcnRleFN0cmlkZTsKKyAgICAgICAgICAgIG1DdXJyZW50VmVydGV4T2Zmc2V0c1tidWZmZXJJ
bmRleF0gPSB2ZXJ0ZXhPZmZzZXQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJbnN0YW5j
ZWQgUG9pbnRTcHJpdGUgZW11bGF0aW9uIHJlcXVpcmVzIHR3byBhZGRpdGlvbmFsIElEM0QxMUJ1
ZmZlcnMuCi0gICAgLy8gQSB2ZXJ0ZXggYnVmZmVyIG5lZWRzIHRvIGJlIGNyZWF0ZWQgYW5kIGFk
ZGVkIHRvIHRoZSBsaXN0IG9mIGN1cnJlbnQgYnVmZmVycywgCi0gICAgLy8gc3RyaWRlcyBhbmQg
b2Zmc2V0cyBjb2xsZWN0aW9ucy4gIFRoaXMgYnVmZmVyIGNvbnRhaW5zIHRoZSB2ZXJ0aWNlcyBm
b3IgYSBzaW5nbGUKLSAgICAvLyBQb2ludFNwcml0ZSBxdWFkLgotICAgIC8vIEFuIGluZGV4IGJ1
ZmZlciBhbHNvIG5lZWRzIHRvIGJlIGNyZWF0ZWQgYW5kIGFwcGxpZWQgYmVjYXVzZSByZW5kZXJp
bmcgaW5zdGFuY2VkCi0gICAgLy8gZGF0YSBvbiBEM0QxMSBGTDlfMyByZXF1aXJlcyBEcmF3SW5k
ZXhlZEluc3RhbmNlZCgpIHRvIGJlIHVzZWQuCi0gICAgaWYgKGluc3RhbmNlZFBvaW50U3ByaXRl
c0FjdGl2ZSkKKyAgICAvLyBJbnN0YW5jZWQgUG9pbnRTcHJpdGUgZW11bGF0aW9uIHJlcXVpcmVz
IHR3byBhZGRpdGlvbmFsIElEM0QxMUJ1ZmZlcnMuIEEgdmVydGV4IGJ1ZmZlciBuZWVkcworICAg
IC8vIHRvIGJlIGNyZWF0ZWQgYW5kIGFkZGVkIHRvIHRoZSBsaXN0IG9mIGN1cnJlbnQgYnVmZmVy
cywgc3RyaWRlcyBhbmQgb2Zmc2V0cyBjb2xsZWN0aW9ucy4KKyAgICAvLyBUaGlzIGJ1ZmZlciBj
b250YWlucyB0aGUgdmVydGljZXMgZm9yIGEgc2luZ2xlIFBvaW50U3ByaXRlIHF1YWQuCisgICAg
Ly8gQW4gaW5kZXggYnVmZmVyIGFsc28gbmVlZHMgdG8gYmUgY3JlYXRlZCBhbmQgYXBwbGllZCBi
ZWNhdXNlIHJlbmRlcmluZyBpbnN0YW5jZWQgZGF0YSBvbgorICAgIC8vIEQzRDExIEZMOV8zIHJl
cXVpcmVzIERyYXdJbmRleGVkSW5zdGFuY2VkKCkgdG8gYmUgdXNlZC4gU2hhZGVycyB0aGF0IGNv
bnRhaW4gZ2xfUG9pbnRTaXplIGFuZAorICAgIC8vIHVzZWQgd2l0aG91dCB0aGUgR0xfUE9JTlRT
IHJlbmRlcmluZyBtb2RlIHJlcXVpcmUgYSB2ZXJ0ZXggYnVmZmVyIGJlY2F1c2Ugc29tZSBkcml2
ZXJzIGNhbm5vdAorICAgIC8vIGhhbmRsZSBtaXNzaW5nIHZlcnRleCBkYXRhIGFuZCB3aWxsIFRE
UiB0aGUgc3lzdGVtLgorICAgIGlmIChwcm9ncmFtVXNlc0luc3RhbmNlZFBvaW50U3ByaXRlcykK
ICAgICB7CiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gU19PSzsKICAgICAgICAgY29uc3QgVUlO
VCBwb2ludFNwcml0ZVZlcnRleFN0cmlkZSA9IHNpemVvZihmbG9hdCkgKiA1OwpAQCAtMzUyLDEw
ICszNjksMTcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIG1DdXJyZW50
QnVmZmVyc1tuZXh0QXZhaWxhYmxlSW5kZXhdID0gbVBvaW50U3ByaXRlVmVydGV4QnVmZmVyOwot
ICAgICAgICBtQ3VycmVudFZlcnRleFN0cmlkZXNbbmV4dEF2YWlsYWJsZUluZGV4XSA9IHBvaW50
U3ByaXRlVmVydGV4U3RyaWRlOwotICAgICAgICBtQ3VycmVudFZlcnRleE9mZnNldHNbbmV4dEF2
YWlsYWJsZUluZGV4XSA9IDA7CisgICAgICAgIG1DdXJyZW50QnVmZmVyc1swXSA9IG1Qb2ludFNw
cml0ZVZlcnRleEJ1ZmZlcjsKKyAgICAgICAgLy8gU2V0IHRoZSBzdHJpZGUgdG8gMCBpZiBHTF9Q
T0lOVFMgbW9kZSBpcyBub3QgYmVpbmcgdXNlZCB0byBpbnN0cnVjdCB0aGUgZHJpdmVyIHRvIGF2
b2lkCisgICAgICAgIC8vIGluZGV4aW5nIGludG8gdGhlIHZlcnRleCBidWZmZXIuCisgICAgICAg
IG1DdXJyZW50VmVydGV4U3RyaWRlc1swXSA9IGluc3RhbmNlZFBvaW50U3ByaXRlc0FjdGl2ZSA/
IHBvaW50U3ByaXRlVmVydGV4U3RyaWRlIDogMDsKKyAgICAgICAgbUN1cnJlbnRWZXJ0ZXhPZmZz
ZXRzWzBdID0gMDsKIAorICAgICAgICAvLyBVcGRhdGUgbWF4RGlmZiB0byBpbmNsdWRlIHRoZSBh
ZGRpdGlvbmFsIHBvaW50IHNwcml0ZSB2ZXJ0ZXggYnVmZmVyCisgICAgICAgIC8vIHRvIGVuc3Vy
ZSB0aGF0IElBU2V0VmVydGV4QnVmZmVycyB1c2VzIHRoZSBjb3JyZWN0IGJ1ZmZlciBjb3VudC4K
KyAgICAgICAgbWluRGlmZiA9IDA7CisgICAgICAgIG1heERpZmYgPSBzdGQ6Om1heChtYXhEaWZm
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KDApKTsKKwogICAgICAgICBpZiAoIW1Qb2ludFNwcml0ZUlu
ZGV4QnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDcmVhdGUgYW4gaW5kZXggYnVm
ZmVyIGFuZCBzZXQgaXQgZm9yIHBvaW50c3ByaXRlIHJlbmRlcmluZwpAQCAtMzgxLDUwICs0MDUs
MjQ2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAvLyBUaGUgaW5kZXgg
YnVmZmVyIGlzIGFwcGxpZWQgaGVyZSBiZWNhdXNlIEluc3RhbmNlZCBQb2ludFNwcml0ZSBlbXVs
YXRpb24gdXNlcwotICAgICAgICAvLyB0aGUgYSBub24taW5kZXhlZCByZW5kZXJpbmcgcGF0aCBp
biBBTkdMRSAoRHJhd0FycmF5cykuICBUaGlzIG1lYW5zIHRoYXQgYXBwbHlJbmRleEJ1ZmZlcigp
Ci0gICAgICAgIC8vIG9uIHRoZSByZW5kZXJlciB3aWxsIG5vdCBiZSBjYWxsZWQgYW5kIHNldHRp
bmcgdGhpcyBidWZmZXIgaGVyZSBlbnN1cmVzIHRoYXQgdGhlIHJlbmRlcmluZwotICAgICAgICAv
LyBwYXRoIHdpbGwgY29udGFpbiB0aGUgY29ycmVjdCBpbmRleCBidWZmZXJzLgotICAgICAgICBt
RGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihtUG9pbnRTcHJpdGVJbmRleEJ1ZmZlciwg
RFhHSV9GT1JNQVRfUjE2X1VJTlQsIDApOworICAgICAgICBpZiAoaW5zdGFuY2VkUG9pbnRTcHJp
dGVzQWN0aXZlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgaW5kZXggYnVmZmVyIGlz
IGFwcGxpZWQgaGVyZSBiZWNhdXNlIEluc3RhbmNlZCBQb2ludFNwcml0ZSBlbXVsYXRpb24gdXNl
cyB0aGUgYQorICAgICAgICAgICAgLy8gbm9uLWluZGV4ZWQgcmVuZGVyaW5nIHBhdGggaW4gQU5H
TEUgKERyYXdBcnJheXMpLiBUaGlzIG1lYW5zIHRoYXQgYXBwbHlJbmRleEJ1ZmZlcigpCisgICAg
ICAgICAgICAvLyBvbiB0aGUgcmVuZGVyZXIgd2lsbCBub3QgYmUgY2FsbGVkIGFuZCBzZXR0aW5n
IHRoaXMgYnVmZmVyIGhlcmUgZW5zdXJlcyB0aGF0IHRoZQorICAgICAgICAgICAgLy8gcmVuZGVy
aW5nIHBhdGggd2lsbCBjb250YWluIHRoZSBjb3JyZWN0IGluZGV4IGJ1ZmZlcnMuCisgICAgICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihtUG9pbnRTcHJpdGVJbmRleEJ1
ZmZlciwgRFhHSV9GT1JNQVRfUjE2X1VJTlQsIDApOworICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKG1vdmVGaXJzdEluZGV4ZWRJbnRvU2xvdFplcm8pCisgICAgaWYgKGRpcnR5QnVmZmVycykK
ICAgICB7Ci0gICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc3dhcHBlZCB0aGUgc2xvdHMgb2Yg
dGhlIGZpcnN0IGluc3RhbmNlZCBlbGVtZW50IGFuZCB0aGUgZmlyc3QgaW5kZXhlZCBlbGVtZW50
LCB0byBlbnN1cmUKLSAgICAgICAgLy8gdGhhdCB0aGUgZmlyc3Qgc2xvdCBjb250YWlucyBub24t
aW5zdGFuY2VkIGRhdGEgKHJlcXVpcmVkIGJ5IEZlYXR1cmUgTGV2ZWwgOV8zKS4KLSAgICAgICAg
Ly8gV2UgbXVzdCBhbHNvIHN3YXAgdGhlIGNvcnJlc3BvbmRpbmcgYnVmZmVycyBzZW50IHRvIElB
U2V0VmVydGV4QnVmZmVycyBzbyB0aGF0IHRoZSBjb3JyZWN0IGRhdGEgaXMgc2VudCB0byBlYWNo
IHNsb3QuCi0gICAgICAgIHN0ZDo6c3dhcChtQ3VycmVudEJ1ZmZlcnNbZmlyc3RJbmRleGVkRWxl
bWVudF0sIG1DdXJyZW50QnVmZmVyc1tmaXJzdEluc3RhbmNlZEVsZW1lbnRdKTsKLSAgICAgICAg
c3RkOjpzd2FwKG1DdXJyZW50VmVydGV4U3RyaWRlc1tmaXJzdEluZGV4ZWRFbGVtZW50XSwgbUN1
cnJlbnRWZXJ0ZXhTdHJpZGVzW2ZpcnN0SW5zdGFuY2VkRWxlbWVudF0pOwotICAgICAgICBzdGQ6
OnN3YXAobUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2ZpcnN0SW5kZXhlZEVsZW1lbnRdLCBtQ3VycmVu
dFZlcnRleE9mZnNldHNbZmlyc3RJbnN0YW5jZWRFbGVtZW50XSk7CisgICAgICAgIEFTU0VSVCht
aW5EaWZmIDw9IG1heERpZmYgJiYgbWF4RGlmZiA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpOwor
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKAorICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8VUlOVD4obWluRGlmZiksIHN0YXRpY19jYXN0PFVJTlQ+KG1heERpZmYgLSBt
aW5EaWZmICsgMSksCisgICAgICAgICAgICAmbUN1cnJlbnRCdWZmZXJzW21pbkRpZmZdLCAmbUN1
cnJlbnRWZXJ0ZXhTdHJpZGVzW21pbkRpZmZdLAorICAgICAgICAgICAgJm1DdXJyZW50VmVydGV4
T2Zmc2V0c1ttaW5EaWZmXSk7CiAgICAgfQogCi0gICAgaWYgKGRpcnR5QnVmZmVycykKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIElucHV0TGF5b3V0Q2FjaGU6OnVw
ZGF0ZVZlcnRleE9mZnNldHNGb3JQb2ludFNwcml0ZXNFbXVsYXRpb24oR0xpbnQgc3RhcnRWZXJ0
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGVtdWxhdGVkSW5zdGFuY2VJZCkKK3sKKyAgICBz
aXplX3QgcmVzZXJ2ZWRCdWZmZXJzID0gR2V0UmVzZXJ2ZWRCdWZmZXJDb3VudCh0cnVlKTsKKyAg
ICBmb3IgKHNpemVfdCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgbUN1cnJlbnRBdHRy
aWJ1dGVzLnNpemUoKTsgKythdHRyaWJJbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtaW5E
aWZmIDw9IG1heERpZmYgJiYgbWF4RGlmZiA8IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpOwotICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKG1pbkRpZmYsIG1heERpZmYg
LSBtaW5EaWZmICsgMSwgbUN1cnJlbnRCdWZmZXJzICsgbWluRGlmZiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ3VycmVudFZlcnRleFN0cmlkZXMgKyBtaW5E
aWZmLCBtQ3VycmVudFZlcnRleE9mZnNldHMgKyBtaW5EaWZmKTsKKyAgICAgICAgY29uc3QgYXV0
byAmYXR0cmliID0gKm1DdXJyZW50QXR0cmlidXRlc1thdHRyaWJJbmRleF07CisgICAgICAgIHNp
emVfdCBidWZmZXJJbmRleCA9IHJlc2VydmVkQnVmZmVycyArIGF0dHJpYkluZGV4OworCisgICAg
ICAgIGlmIChhdHRyaWIuZGl2aXNvciA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGludCBvZmZzZXQgPSAwOworICAgICAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChhdHRyaWIu
Y29tcHV0ZU9mZnNldChzdGFydFZlcnRleCksIG9mZnNldCk7CisgICAgICAgICAgICBtQ3VycmVu
dFZlcnRleE9mZnNldHNbYnVmZmVySW5kZXhdID0KKyAgICAgICAgICAgICAgICBvZmZzZXQgKyAo
YXR0cmliLnN0cmlkZSAqIChlbXVsYXRlZEluc3RhbmNlSWQgLyBhdHRyaWIuZGl2aXNvcikpOwor
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgbURldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCBnbDo6TUFYX1ZFUlRFWF9B
VFRSSUJTLCBtQ3VycmVudEJ1ZmZlcnMuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzLmRhdGEoKSwgbUN1cnJlbnRWZXJ0
ZXhPZmZzZXRzLmRhdGEoKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotc3Rk
OjpzaXplX3QgSW5wdXRMYXlvdXRDYWNoZTo6aGFzaElucHV0TGF5b3V0KGNvbnN0IElucHV0TGF5
b3V0S2V5ICZpbnB1dExheW91dCkKK2dsOjpFcnJvciBJbnB1dExheW91dENhY2hlOjp1cGRhdGVJ
bnB1dExheW91dChjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYkluZGV4QXJyYXkgJnNvcnRl
ZFNlbWFudGljSW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bUluZGljZXNQZXJJbnN0YW5jZSkKIHsKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgaW50IHNlZWQgPSAweERFQURCRUVGOworICAgIGdsOjpQcm9ncmFtICpwcm9n
cmFtICAgICAgICAgPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgY29uc3QgYXV0byAmc2hhZGVy
QXR0cmlidXRlcyA9IHByb2dyYW0tPmdldEF0dHJpYnV0ZXMoKTsKKyAgICBQYWNrZWRBdHRyaWJ1
dGVMYXlvdXQgbGF5b3V0OwogCi0gICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7Ci0gICAgTXVybXVy
SGFzaDNfeDg2XzMyKGlucHV0TGF5b3V0LmJlZ2luKCksIHN0YXRpY19jYXN0PGludD4oaW5wdXRM
YXlvdXQuZW5kKCkgLSBpbnB1dExheW91dC5iZWdpbigpKSwgc2VlZCwgJmhhc2gpOwotICAgIHJl
dHVybiBoYXNoOworICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3Jh
bUQzRD4ocHJvZ3JhbSk7CisgICAgYm9vbCBwcm9ncmFtVXNlc0luc3RhbmNlZFBvaW50U3ByaXRl
cyA9CisgICAgICAgIHByb2dyYW1EM0QtPnVzZXNQb2ludFNpemUoKSAmJiBwcm9ncmFtRDNELT51
c2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24oKTsKKyAgICBib29sIGluc3RhbmNlZFBv
aW50U3ByaXRlc0FjdGl2ZSA9IHByb2dyYW1Vc2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVzICYmICht
b2RlID09IEdMX1BPSU5UUyk7CisKKyAgICBpZiAocHJvZ3JhbVVzZXNJbnN0YW5jZWRQb2ludFNw
cml0ZXMpCisgICAgeworICAgICAgICBsYXlvdXQuZmxhZ3MgfD0gUGFja2VkQXR0cmlidXRlTGF5
b3V0OjpGTEFHX1VTRVNfSU5TVEFOQ0VEX1NQUklURVM7CisgICAgfQorCisgICAgaWYgKGluc3Rh
bmNlZFBvaW50U3ByaXRlc0FjdGl2ZSkKKyAgICB7CisgICAgICAgIGxheW91dC5mbGFncyB8PSBQ
YWNrZWRBdHRyaWJ1dGVMYXlvdXQ6OkZMQUdfSU5TVEFOQ0VEX1NQUklURVNfQUNUSVZFOworICAg
IH0KKworICAgIGlmIChudW1JbmRpY2VzUGVySW5zdGFuY2UgPiAwKQorICAgIHsKKyAgICAgICAg
bGF5b3V0LmZsYWdzIHw9IFBhY2tlZEF0dHJpYnV0ZUxheW91dDo6RkxBR19JTlNUQU5DRURfUkVO
REVSSU5HX0FDVElWRTsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICZhdHRyaWJzICAgICAgICAg
ICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAg
Y29uc3QgYXV0byAmbG9jYXRpb25Ub1NlbWFudGljID0gcHJvZ3JhbUQzRC0+Z2V0QXR0cmliTG9j
YXRpb25Ub0QzRFNlbWFudGljcygpOworCisgICAgZm9yICh1bnNpZ25lZCBsb25nIGF0dHJpYklu
ZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQocHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRp
b25zTWFzaygpKSkKKyAgICB7CisgICAgICAgIC8vIFJlY29yZCB0aGUgdHlwZSBvZiB0aGUgYXNz
b2NpYXRlZCB2ZXJ0ZXggc2hhZGVyIHZlY3RvciBpbiBvdXIga2V5CisgICAgICAgIC8vIFRoaXMg
d2lsbCBwcmV2ZW50IG1pc21hdGNoZWQgdmVydGV4IHNoYWRlcnMgZnJvbSB1c2luZyB0aGUgc2Ft
ZSBpbnB1dCBsYXlvdXQKKyAgICAgICAgR0xlbnVtIGdsc2xFbGVtZW50VHlwZSA9IEdldEdMU0xB
dHRyaWJ1dGVUeXBlKHNoYWRlckF0dHJpYnV0ZXMsIGF0dHJpYkluZGV4KTsKKworICAgICAgICBj
b25zdCBhdXRvICZhdHRyaWIgPSBhdHRyaWJzW2F0dHJpYkluZGV4XTsKKyAgICAgICAgaW50IGQz
ZFNlbWFudGljICAgID0gbG9jYXRpb25Ub1NlbWFudGljW2F0dHJpYkluZGV4XTsKKworICAgICAg
ICBjb25zdCBhdXRvICZjdXJyZW50VmFsdWUgICAgICAgICAgICAgID0gc3RhdGUuZ2V0VmVydGV4
QXR0cmliQ3VycmVudFZhbHVlKGF0dHJpYkluZGV4KTsKKyAgICAgICAgZ2w6OlZlcnRleEZvcm1h
dFR5cGUgdmVydGV4Rm9ybWF0VHlwZSA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRUeXBlKGF0dHJpYiwg
Y3VycmVudFZhbHVlLlR5cGUpOworCisgICAgICAgIGxheW91dC5hZGRBdHRyaWJ1dGVEYXRhKGds
c2xFbGVtZW50VHlwZSwgZDNkU2VtYW50aWMsIHZlcnRleEZvcm1hdFR5cGUsIGF0dHJpYi5kaXZp
c29yKTsKKyAgICB9CisKKyAgICBJRDNEMTFJbnB1dExheW91dCAqaW5wdXRMYXlvdXQgPSBudWxs
cHRyOworICAgIGlmIChsYXlvdXQubnVtQXR0cmlidXRlcyA+IDAgfHwgbGF5b3V0LmZsYWdzICE9
IDApCisgICAgeworICAgICAgICBhdXRvIGxheW91dE1hcEl0ID0gbUxheW91dE1hcC5maW5kKGxh
eW91dCk7CisgICAgICAgIGlmIChsYXlvdXRNYXBJdCAhPSBtTGF5b3V0TWFwLmVuZCgpKQorICAg
ICAgICB7CisgICAgICAgICAgICBpbnB1dExheW91dCA9IGxheW91dE1hcEl0LT5zZWNvbmQ7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBTkdMRV9UUlko
Y3JlYXRlSW5wdXRMYXlvdXQoc29ydGVkU2VtYW50aWNJbmRpY2VzLCBtb2RlLCBwcm9ncmFtLCBu
dW1JbmRpY2VzUGVySW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmlucHV0TGF5b3V0KSk7CisgICAgICAgICAgICBpZiAobUxheW91dE1hcC5zaXplKCkg
Pj0gbUNhY2hlU2l6ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBUUkFDRSgiT3Zl
cmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgaW5wdXQgbGF5b3V0cywgcHVyZ2luZyBoYWxmIHRoZSBj
YWNoZS4iLAorICAgICAgICAgICAgICAgICAgICAgIG1DYWNoZVNpemUpOworCisgICAgICAgICAg
ICAgICAgLy8gUmFuZG9tbHkgcmVsZWFzZSBldmVyeSBzZWNvbmQgZWxlbWVudAorICAgICAgICAg
ICAgICAgIGF1dG8gaXQgPSBtTGF5b3V0TWFwLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgd2hp
bGUgKGl0ICE9IG1MYXlvdXRNYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBpdCsrOworICAgICAgICAgICAgICAgICAgICBpZiAoaXQgIT0gbUxheW91dE1h
cC5lbmQoKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYysrMTEgZXJhc2UgYWxsb3dzIHVzIHRvIGVhc2lseSBkZWxldGUgdGhlIGN1cnJlbnQgaXRl
cmF0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShpdC0+c2Vjb25kKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGl0ID0gbUxheW91dE1hcC5lcmFzZShpdCk7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1MYXlvdXRNYXBbbGF5b3V0XSA9IGlucHV0TGF5b3V0OworICAgICAgICB9Cisg
ICAgfQorCisgICAgaWYgKGlucHV0TGF5b3V0ICE9IG1DdXJyZW50SUwpCisgICAgeworICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbnB1dExheW91dChpbnB1dExheW91dCk7CisgICAgICAg
IG1DdXJyZW50SUwgPSBpbnB1dExheW91dDsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAotYm9vbCBJbnB1dExheW91dENhY2hlOjpjb21wYXJlSW5wdXRMYXlvdXRzKGNv
bnN0IElucHV0TGF5b3V0S2V5ICZhLCBjb25zdCBJbnB1dExheW91dEtleSAmYikKK2dsOjpFcnJv
ciBJbnB1dExheW91dENhY2hlOjpjcmVhdGVJbnB1dExheW91dChjb25zdCBBdHRyaWJJbmRleEFy
cmF5ICZzb3J0ZWRTZW1hbnRpY0luZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1JbmRpY2VzUGVySW5z
dGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQz
RDExSW5wdXRMYXlvdXQgKippbnB1dExheW91dE91dCkKIHsKLSAgICBpZiAoYS5lbGVtZW50Q291
bnQgIT0gYi5lbGVtZW50Q291bnQpCisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldElt
cGxBczxQcm9ncmFtRDNEPihwcm9ncmFtKTsKKworICAgIGJvb2wgcHJvZ3JhbVVzZXNJbnN0YW5j
ZWRQb2ludFNwcml0ZXMgPQorICAgICAgICBwcm9ncmFtRDNELT51c2VzUG9pbnRTaXplKCkgJiYg
cHJvZ3JhbUQzRC0+dXNlc0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uKCk7CisKKyAgICB1
bnNpZ25lZCBpbnQgaW5wdXRFbGVtZW50Q291bnQgPSAwOworICAgIHN0ZDo6YXJyYXk8RDNEMTFf
SU5QVVRfRUxFTUVOVF9ERVNDLCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTPiBpbnB1dEVsZW1lbnRz
OworCisgICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IG1DdXJy
ZW50QXR0cmlidXRlcy5zaXplKCk7ICsrYXR0cmliSW5kZXgpCiAgICAgewotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IGF1dG8gJmF0dHJpYiAgICA9ICptQ3VycmVudEF0dHJp
YnV0ZXNbYXR0cmliSW5kZXhdOworICAgICAgICBjb25zdCBpbnQgc29ydGVkSW5kZXggPSBzb3J0
ZWRTZW1hbnRpY0luZGljZXNbYXR0cmliSW5kZXhdOworCisgICAgICAgIEQzRDExX0lOUFVUX0NM
QVNTSUZJQ0FUSU9OIGlucHV0Q2xhc3MgPQorICAgICAgICAgICAgYXR0cmliLmRpdmlzb3IgPiAw
ID8gRDNEMTFfSU5QVVRfUEVSX0lOU1RBTkNFX0RBVEEgOiBEM0QxMV9JTlBVVF9QRVJfVkVSVEVY
X0RBVEE7CisKKyAgICAgICAgY29uc3QgYXV0byAmdmVydGV4Rm9ybWF0VHlwZSA9CisgICAgICAg
ICAgICBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZSgqYXR0cmliLmF0dHJpYnV0ZSwgYXR0cmliLmN1
cnJlbnRWYWx1ZVR5cGUpOworICAgICAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhGb3JtYXRJbmZvID0g
ZDNkMTE6OkdldFZlcnRleEZvcm1hdEluZm8odmVydGV4Rm9ybWF0VHlwZSwgbUZlYXR1cmVMZXZl
bCk7CisKKyAgICAgICAgYXV0byAqaW5wdXRFbGVtZW50ID0gJmlucHV0RWxlbWVudHNbaW5wdXRF
bGVtZW50Q291bnRdOworCisgICAgICAgIGlucHV0RWxlbWVudC0+U2VtYW50aWNOYW1lICAgICAg
ICAgPSAiVEVYQ09PUkQiOworICAgICAgICBpbnB1dEVsZW1lbnQtPlNlbWFudGljSW5kZXggICAg
ICAgID0gc29ydGVkSW5kZXg7CisgICAgICAgIGlucHV0RWxlbWVudC0+Rm9ybWF0ICAgICAgICAg
ICAgICAgPSB2ZXJ0ZXhGb3JtYXRJbmZvLm5hdGl2ZUZvcm1hdDsKKyAgICAgICAgaW5wdXRFbGVt
ZW50LT5JbnB1dFNsb3QgICAgICAgICAgICA9IHN0YXRpY19jYXN0PFVJTlQ+KGF0dHJpYkluZGV4
KTsKKyAgICAgICAgaW5wdXRFbGVtZW50LT5BbGlnbmVkQnl0ZU9mZnNldCAgICA9IDA7CisgICAg
ICAgIGlucHV0RWxlbWVudC0+SW5wdXRTbG90Q2xhc3MgICAgICAgPSBpbnB1dENsYXNzOworICAg
ICAgICBpbnB1dEVsZW1lbnQtPkluc3RhbmNlRGF0YVN0ZXBSYXRlID0gYXR0cmliLmRpdmlzb3I7
CisKKyAgICAgICAgaW5wdXRFbGVtZW50Q291bnQrKzsKICAgICB9CiAKLSAgICByZXR1cm4gc3Rk
OjplcXVhbChhLmJlZ2luKCksIGEuZW5kKCksIGIuYmVnaW4oKSk7CisgICAgLy8gSW5zdGFuY2Vk
IFBvaW50U3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlcyBhZGRpdGlvbmFsIGVudHJpZXMgaW4gdGhl
CisgICAgLy8gaW5wdXRsYXlvdXQgdG8gc3VwcG9ydCB0aGUgdmVydGljZXMgdGhhdCBtYWtlIHVw
IHRoZSBwb2ludHNwcml0ZSBxdWFkLgorICAgIC8vIFdlIGRvIHRoaXMgZXZlbiBpZiBtb2RlICE9
IEdMX1BPSU5UUywgc2luY2UgdGhlIHNoYWRlciBzaWduYXR1cmUgaGFzIHRoZXNlIGlucHV0cywg
YW5kIHRoZQorICAgIC8vIGlucHV0IGxheW91dCBtdXN0IG1hdGNoIHRoZSBzaGFkZXIKKyAgICBp
ZiAocHJvZ3JhbVVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZXMpCisgICAgeworICAgICAgICAvLyBP
biA5XzMsIHdlIG11c3QgZW5zdXJlIHRoYXQgc2xvdCAwIGNvbnRhaW5zIG5vbi1pbnN0YW5jZWQg
ZGF0YS4KKyAgICAgICAgLy8gSWYgc2xvdCAwIGN1cnJlbnRseSBjb250YWlucyBpbnN0YW5jZWQg
ZGF0YSB0aGVuIHdlIHN3YXAgaXQgd2l0aCBhIG5vbi1pbnN0YW5jZWQgZWxlbWVudC4KKyAgICAg
ICAgLy8gTm90ZSB0aGF0IGluc3RhbmNpbmcgaXMgb25seSBhdmFpbGFibGUgb24gOV8zIHZpYSBB
TkdMRV9pbnN0YW5jZWRfYXJyYXlzLCBzaW5jZSA5XzMKKyAgICAgICAgLy8gZG9lc24ndCBzdXBw
b3J0IE9wZW5HTCBFUyAzLjAuCisgICAgICAgIC8vIEFzIHBlciB0aGUgc3BlYyBmb3IgQU5HTEVf
aW5zdGFuY2VkX2FycmF5cywgbm90IGFsbCBhdHRyaWJ1dGVzIGNhbiBiZSBpbnN0YW5jZWQKKyAg
ICAgICAgLy8gc2ltdWx0YW5lb3VzbHksIHNvIGEgbm9uLWluc3RhbmNlZCBlbGVtZW50IG11c3Qg
ZXhpc3QuCisgICAgICAgIGZvciAoc2l6ZV90IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRl
eCA8IGlucHV0RWxlbWVudENvdW50OyArK2VsZW1lbnRJbmRleCkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gSWYgcmVuZGVyaW5nIHBvaW50cyBhbmQgaW5zdGFuY2VkIHBvaW50c3ByaXRlIGVt
dWxhdGlvbiBpcyBiZWluZyB1c2VkLCB0aGUKKyAgICAgICAgICAgIC8vIGlucHV0Q2xhc3MgaXMg
cmVxdWlyZWQgdG8gYmUgY29uZmlndXJlZCBhcyBwZXIgaW5zdGFuY2UgZGF0YQorICAgICAgICAg
ICAgaWYgKG1vZGUgPT0gR0xfUE9JTlRTKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGlucHV0RWxlbWVudHNbZWxlbWVudEluZGV4XS5JbnB1dFNsb3RDbGFzcyAgICAgICA9IEQzRDEx
X0lOUFVUX1BFUl9JTlNUQU5DRV9EQVRBOworICAgICAgICAgICAgICAgIGlucHV0RWxlbWVudHNb
ZWxlbWVudEluZGV4XS5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IDE7CisgICAgICAgICAgICAgICAg
aWYgKG51bUluZGljZXNQZXJJbnN0YW5jZSA+IDAgJiYgbUN1cnJlbnRBdHRyaWJ1dGVzW2VsZW1l
bnRJbmRleF0tPmRpdmlzb3IgPiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgaW5wdXRFbGVtZW50c1tlbGVtZW50SW5kZXhdLkluc3RhbmNlRGF0YVN0ZXBSYXRlID0g
bnVtSW5kaWNlc1Blckluc3RhbmNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlucHV0RWxlbWVudHNbZWxlbWVudEluZGV4XS5JbnB1dFNsb3QrKzsKKyAg
ICAgICAgfQorCisgICAgICAgIGlucHV0RWxlbWVudHNbaW5wdXRFbGVtZW50Q291bnRdLlNlbWFu
dGljTmFtZSAgICAgICAgID0gIlNQUklURVBPU0lUSU9OIjsKKyAgICAgICAgaW5wdXRFbGVtZW50
c1tpbnB1dEVsZW1lbnRDb3VudF0uU2VtYW50aWNJbmRleCAgICAgICAgPSAwOworICAgICAgICBp
bnB1dEVsZW1lbnRzW2lucHV0RWxlbWVudENvdW50XS5Gb3JtYXQgICAgICAgICAgICAgICA9IERY
R0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDsKKyAgICAgICAgaW5wdXRFbGVtZW50c1tpbnB1dEVs
ZW1lbnRDb3VudF0uSW5wdXRTbG90ICAgICAgICAgICAgPSAwOworICAgICAgICBpbnB1dEVsZW1l
bnRzW2lucHV0RWxlbWVudENvdW50XS5BbGlnbmVkQnl0ZU9mZnNldCAgICA9IDA7CisgICAgICAg
IGlucHV0RWxlbWVudHNbaW5wdXRFbGVtZW50Q291bnRdLklucHV0U2xvdENsYXNzICAgICAgID0g
RDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBOworICAgICAgICBpbnB1dEVsZW1lbnRzW2lucHV0
RWxlbWVudENvdW50XS5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IDA7CisgICAgICAgIGlucHV0RWxl
bWVudENvdW50Kys7CisKKyAgICAgICAgaW5wdXRFbGVtZW50c1tpbnB1dEVsZW1lbnRDb3VudF0u
U2VtYW50aWNOYW1lICAgICAgICAgPSAiU1BSSVRFVEVYQ09PUkQiOworICAgICAgICBpbnB1dEVs
ZW1lbnRzW2lucHV0RWxlbWVudENvdW50XS5TZW1hbnRpY0luZGV4ICAgICAgICA9IDA7CisgICAg
ICAgIGlucHV0RWxlbWVudHNbaW5wdXRFbGVtZW50Q291bnRdLkZvcm1hdCAgICAgICAgICAgICAg
ID0gRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUOworICAgICAgICBpbnB1dEVsZW1lbnRzW2lucHV0
RWxlbWVudENvdW50XS5JbnB1dFNsb3QgICAgICAgICAgICA9IDA7CisgICAgICAgIGlucHV0RWxl
bWVudHNbaW5wdXRFbGVtZW50Q291bnRdLkFsaWduZWRCeXRlT2Zmc2V0ICAgID0gc2l6ZW9mKGZs
b2F0KSAqIDM7CisgICAgICAgIGlucHV0RWxlbWVudHNbaW5wdXRFbGVtZW50Q291bnRdLklucHV0
U2xvdENsYXNzICAgICAgID0gRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBOworICAgICAgICBp
bnB1dEVsZW1lbnRzW2lucHV0RWxlbWVudENvdW50XS5JbnN0YW5jZURhdGFTdGVwUmF0ZSA9IDA7
CisgICAgICAgIGlucHV0RWxlbWVudENvdW50Kys7CisgICAgfQorCisgICAgY29uc3QgZ2w6Oklu
cHV0TGF5b3V0ICZzaGFkZXJJbnB1dExheW91dCA9IEdldElucHV0TGF5b3V0KG1DdXJyZW50QXR0
cmlidXRlcyk7CisKKyAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpzaGFkZXIgPSBudWxscHRyOwor
ICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5nZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlv
dXQoc2hhZGVySW5wdXRMYXlvdXQsICZzaGFkZXIsIG51bGxwdHIpKTsKKworICAgIFNoYWRlckV4
ZWN1dGFibGVEM0QgKnNoYWRlcjExID0gR2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPihzaGFkZXIp
OworCisgICAgSFJFU1VMVCByZXN1bHQgPQorICAgICAgICBtRGV2aWNlLT5DcmVhdGVJbnB1dExh
eW91dChpbnB1dEVsZW1lbnRzLmRhdGEoKSwgaW5wdXRFbGVtZW50Q291bnQsIHNoYWRlcjExLT5n
ZXRGdW5jdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXIx
MS0+Z2V0TGVuZ3RoKCksIGlucHV0TGF5b3V0T3V0KTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgaW5wdXQgbGF5
b3V0LCBIUkVTVUxUOiAweCUwOHgiLCByZXN1bHQpOworICAgIH0KKworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5oCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0lucHV0TGF5b3V0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAsMTUgKzEwLDE5IEBA
CiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9JTlBVVExBWU9VVENBQ0hFX0hf
CiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9JTlBVVExBWU9VVENBQ0hFX0hf
CiAKLSNpbmNsdWRlICJsaWJBTkdMRS9Db25zdGFudHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9F
cnJvci5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0KICNpbmNsdWRlIDxHTEVT
Mi9nbDIuaD4KIAogI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4K
IAorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG1hcD4KKworI2luY2x1ZGUgImNvbW1vbi9h
bmdsZXV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvRXJyb3IuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgorCiBuYW1lc3BhY2Ug
Z2wKIHsKIGNsYXNzIFByb2dyYW07CkBAIC0yNyw2ICszMSw5IEBACiBuYW1lc3BhY2UgcngKIHsK
IHN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlOworc3RydWN0IFRyYW5zbGF0ZWRJbmRleERhdGE7
CitzdHJ1Y3QgU291cmNlSW5kZXhEYXRhOworY2xhc3MgUHJvZ3JhbUQzRDsKIAogY2xhc3MgSW5w
dXRMYXlvdXRDYWNoZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewpAQCAtMzgsNjYgKzQ1LDc2IEBA
CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgbWFya0RpcnR5KCk7CiAKLSAgICBnbDo6RXJy
b3IgYXBwbHlWZXJ0ZXhCdWZmZXJzKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlLCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSk7CisgICAgZ2w6OkVycm9yIGFwcGx5VmVy
dGV4QnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJnZlcnRl
eEFycmF5QXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZjdXJyZW50VmFsdWVBdHRyaWJzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtSW5kaWNlc1Blckluc3RhbmNlKTsKIAorICAg
IGdsOjpFcnJvciB1cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9pbnRTcHJpdGVzRW11bGF0aW9uKEdM
aW50IHN0YXJ0VmVydGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZW11bGF0ZWRJbnN0YW5jZUlkKTsKKworICAgIC8v
IFVzZWZ1bCBmb3IgdGVzdGluZworICAgIHZvaWQgc2V0Q2FjaGVTaXplKHVuc2lnbmVkIGludCBj
YWNoZVNpemUpIHsgbUNhY2hlU2l6ZSA9IGNhY2hlU2l6ZTsgfQorCiAgIHByaXZhdGU6Ci0gICAg
c3RydWN0IElucHV0TGF5b3V0RWxlbWVudAorICAgIHN0cnVjdCBQYWNrZWRBdHRyaWJ1dGVMYXlv
dXQKICAgICB7Ci0gICAgICAgIEQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBkZXNjOwotICAgICAg
ICBHTGVudW0gZ2xzbEVsZW1lbnRUeXBlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgSW5wdXRMYXlv
dXRLZXkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQ7Ci0gICAgICAg
IElucHV0TGF5b3V0RWxlbWVudCBlbGVtZW50c1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKLQot
ICAgICAgICBjb25zdCBjaGFyICpiZWdpbigpIGNvbnN0CisgICAgICAgIFBhY2tlZEF0dHJpYnV0
ZUxheW91dCgpCisgICAgICAgICAgICA6IG51bUF0dHJpYnV0ZXMoMCksCisgICAgICAgICAgICAg
IGZsYWdzKDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIqPigmZWxlbWVudENvdW50KTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0
IGNoYXIgKmVuZCgpIGNvbnN0CisgICAgICAgIHZvaWQgYWRkQXR0cmlidXRlRGF0YShHTGVudW0g
Z2xUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCBzZW1hbnRpY0luZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVy
dGV4Rm9ybWF0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBkaXZpc29yKTsKKworICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBQYWNrZWRBdHRyaWJ1
dGVMYXlvdXQgJm90aGVyKSBjb25zdDsKKworICAgICAgICBlbnVtIEZsYWdzCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmZWxlbWVu
dHNbZWxlbWVudENvdW50XSk7Ci0gICAgICAgIH0KLSAgICB9OworICAgICAgICAgICAgRkxBR19V
U0VTX0lOU1RBTkNFRF9TUFJJVEVTICAgICA9IDB4MSwKKyAgICAgICAgICAgIEZMQUdfSU5TVEFO
Q0VEX1NQUklURVNfQUNUSVZFICAgPSAweDIsCisgICAgICAgICAgICBGTEFHX0lOU1RBTkNFRF9S
RU5ERVJJTkdfQUNUSVZFID0gMHg0LAorICAgICAgICB9OwogCi0gICAgc3RydWN0IElucHV0TGF5
b3V0Q291bnRlclBhaXIKLSAgICB7Ci0gICAgICAgIElEM0QxMUlucHV0TGF5b3V0ICppbnB1dExh
eW91dDsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGxhc3RVc2VkVGltZTsKKyAgICAgICAg
c2l6ZV90IG51bUF0dHJpYnV0ZXM7CisgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKKyAgICAg
ICAgdWludDMyX3QgYXR0cmlidXRlRGF0YVtnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKICAgICB9
OwogCisgICAgZ2w6OkVycm9yIHVwZGF0ZUlucHV0TGF5b3V0KGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJJbmRleEFycmF5ICZzb3J0ZWRT
ZW1hbnRpY0luZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
bnVtSW5kaWNlc1Blckluc3RhbmNlKTsKKyAgICBnbDo6RXJyb3IgY3JlYXRlSW5wdXRMYXlvdXQo
Y29uc3QgQXR0cmliSW5kZXhBcnJheSAmc29ydGVkU2VtYW50aWNJbmRpY2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbnVtSW5kaWNlc1Blckluc3RhbmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFJbnB1dExheW91dCAqKmlucHV0TGF5b3V0T3V0KTsKKwor
ICAgIHN0ZDo6bWFwPFBhY2tlZEF0dHJpYnV0ZUxheW91dCwgSUQzRDExSW5wdXRMYXlvdXQgKj4g
bUxheW91dE1hcDsKKwogICAgIElEM0QxMUlucHV0TGF5b3V0ICptQ3VycmVudElMOwotICAgIElE
M0QxMUJ1ZmZlciAqbUN1cnJlbnRCdWZmZXJzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwotICAg
IFVJTlQgbUN1cnJlbnRWZXJ0ZXhTdHJpZGVzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOwotICAg
IFVJTlQgbUN1cnJlbnRWZXJ0ZXhPZmZzZXRzW2dsOjpNQVhfVkVSVEVYX0FUVFJJQlNdOworICAg
IHN0ZDo6YXJyYXk8SUQzRDExQnVmZmVyICosIGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM+IG1DdXJy
ZW50QnVmZmVyczsKKyAgICBzdGQ6OmFycmF5PFVJTlQsIGdsOjpNQVhfVkVSVEVYX0FUVFJJQlM+
IG1DdXJyZW50VmVydGV4U3RyaWRlczsKKyAgICBzdGQ6OmFycmF5PFVJTlQsIGdsOjpNQVhfVkVS
VEVYX0FUVFJJQlM+IG1DdXJyZW50VmVydGV4T2Zmc2V0czsKKyAgICBzdGQ6OnZlY3Rvcjxjb25z
dCBUcmFuc2xhdGVkQXR0cmlidXRlICo+IG1DdXJyZW50QXR0cmlidXRlczsKIAogICAgIElEM0Qx
MUJ1ZmZlciAqbVBvaW50U3ByaXRlVmVydGV4QnVmZmVyOwogICAgIElEM0QxMUJ1ZmZlciAqbVBv
aW50U3ByaXRlSW5kZXhCdWZmZXI7CiAKLSAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFzaElucHV0
TGF5b3V0KGNvbnN0IElucHV0TGF5b3V0S2V5ICZpbnB1dExheW91dCk7Ci0gICAgc3RhdGljIGJv
b2wgY29tcGFyZUlucHV0TGF5b3V0cyhjb25zdCBJbnB1dExheW91dEtleSAmYSwgY29uc3QgSW5w
dXRMYXlvdXRLZXkgJmIpOworICAgIHVuc2lnbmVkIGludCBtQ2FjaGVTaXplOwogCi0gICAgdHlw
ZWRlZiBzdGQ6OnNpemVfdCAoKklucHV0TGF5b3V0SGFzaEZ1bmN0aW9uKShjb25zdCBJbnB1dExh
eW91dEtleSAmKTsKLSAgICB0eXBlZGVmIGJvb2wgKCpJbnB1dExheW91dEVxdWFsaXR5RnVuY3Rp
b24pKGNvbnN0IElucHV0TGF5b3V0S2V5ICYsIGNvbnN0IElucHV0TGF5b3V0S2V5ICYpOwotICAg
IHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPElucHV0TGF5b3V0S2V5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElucHV0TGF5b3V0Q291bnRlclBhaXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5wdXRMYXlvdXRIYXNoRnVuY3Rpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW5wdXRMYXlvdXRFcXVhbGl0eUZ1bmN0aW9uPiBJbnB1dExheW91
dE1hcDsKLSAgICBJbnB1dExheW91dE1hcCBtSW5wdXRMYXlvdXRNYXA7Ci0KLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW50IGtNYXhJbnB1dExheW91dHM7Ci0KLSAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbUNvdW50ZXI7Ci0KICAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7CiAgICAgSUQzRDEx
RGV2aWNlQ29udGV4dCAqbURldmljZUNvbnRleHQ7CiAgICAgRDNEX0ZFQVRVUkVfTEVWRUwgbUZl
YXR1cmVMZXZlbDsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElC
QU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX0lOUFVUTEFZT1VUQ0FDSEVfSF8KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZl
V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9OYXRpdmVXaW5kb3cuaAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9OYXRpdmVXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1
ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgogCiAjaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+Cisj
aW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCiAKIC8vIERYR0lTd2FwQ2hhaW4gYW5kIERYR0lG
YWN0b3J5IGFyZSB0eXBlZGVmJ2QgdG8gc3BlY2lmaWMgcmVxdWlyZWQKIC8vIHR5cGVzLiBUaGUg
SFdORCBOYXRpdmVXaW5kb3cgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgSURYR0lTd2FwQ2hhaW4K
QEAgLTQzLDE0ICs0NCwyMSBAQAogdHlwZWRlZiBJRFhHSUZhY3RvcnkgRFhHSUZhY3Rvcnk7CiAj
ZW5kaWYKIAordHlwZWRlZiBpbnRlcmZhY2UgSURDb21wb3NpdGlvbkRldmljZSBJRENvbXBvc2l0
aW9uRGV2aWNlOwordHlwZWRlZiBpbnRlcmZhY2UgSURDb21wb3NpdGlvblRhcmdldCBJRENvbXBv
c2l0aW9uVGFyZ2V0OwordHlwZWRlZiBpbnRlcmZhY2UgSURDb21wb3NpdGlvblZpc3VhbCBJRENv
bXBvc2l0aW9uVmlzdWFsOworCiBuYW1lc3BhY2UgcngKIHsKIAogY2xhc3MgTmF0aXZlV2luZG93
CiB7CiAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBOYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93
VHlwZSB3aW5kb3cpOworICAgIGV4cGxpY2l0IE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXJlY3RDb21wb3NpdGlv
bik7CiAKKyAgICB+TmF0aXZlV2luZG93KCk7CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAgICAg
Ym9vbCBnZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KTsKICAgICBib29sIGlzSWNvbmljKCk7CkBA
IC02Miw5ICs3MCwxNiBAQAogCiAgICAgaW5saW5lIEVHTE5hdGl2ZVdpbmRvd1R5cGUgZ2V0TmF0
aXZlV2luZG93KCkgY29uc3QgeyByZXR1cm4gbVdpbmRvdzsgfQogCisgICAgdm9pZCBjb21taXRD
aGFuZ2UoKTsKKwogICBwcml2YXRlOgogICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbVdpbmRvdzsK
IAorICAgIGJvb2wgbURpcmVjdENvbXBvc2l0aW9uOworICAgIElEQ29tcG9zaXRpb25EZXZpY2Ug
Km1EZXZpY2U7CisgICAgSURDb21wb3NpdGlvblRhcmdldCAqbUNvbXBvc2l0aW9uVGFyZ2V0Owor
ICAgIElEQ29tcG9zaXRpb25WaXN1YWwgKm1WaXN1YWw7CisgICAgY29uc3QgZWdsOjpDb25maWcg
Km1Db25maWc7CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKICAgICBz
dGQ6OnNoYXJlZF9wdHI8SW5zcGVjdGFibGVOYXRpdmVXaW5kb3c+IG1JbXBsOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1BpeGVsVHJhbnNmZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuY3Bw
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1BpeGVsVHJhbnNmZXIxMS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDIzICsxMCwyNSBAQAogLy8KIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL0J1ZmZlci5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3Jt
YXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIx
MS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczEx
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L1RleHR1cmUuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9Db250ZXh0LmgiCiAKIC8vIFByZWNvbXBpbGVkIHNoYWRlcnMKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUx
MV92cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX2dzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNGYuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9i
dWZmZXJ0b3RleHR1cmUxMV9wc180aS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzR1aS5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZl
cnRvdGV4dHVyZTExX3ZzLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtNjIsNyArNjQsNyBAQAog
ewogICAgIGlmIChtUmVzb3VyY2VzTG9hZGVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0K
IAogICAgIEhSRVNVTFQgcmVzdWx0ID0gU19PSzsKQEAgLTEzOSwxNyArMTQxLDEzIEBACiAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUg
aW50ZXJuYWwgYnVmZmVyIHRvIHRleHR1cmUgZ2VvbWV0cnkgc2hhZGVyLiIpOwogICAgIH0KIAot
ICAgIGdsOjpFcnJvciBlcnJvciA9IGJ1aWxkU2hhZGVyTWFwKCk7Ci0gICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVf
VFJZKGJ1aWxkU2hhZGVyTWFwKCkpOwogCiAgICAgU3RydWN0WmVybygmbVBhcmFtc0RhdGEpOwog
CiAgICAgbVJlc291cmNlc0xvYWRlZCA9IHRydWU7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBQaXhlbFRy
YW5zZmVyMTE6OnNldEJ1ZmZlclRvVGV4dHVyZUNvcHlQYXJhbXMoY29uc3QgZ2w6OkJveCAmZGVz
dEFyZWEsIGNvbnN0IGdsOjpFeHRlbnRzICZkZXN0U2l6ZSwgR0xlbnVtIGludGVybmFsRm9ybWF0
LApAQCAtMTc4LDExICsxNzYsNyBAQAogZ2w6OkVycm9yIFBpeGVsVHJhbnNmZXIxMTo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCB1bnNpZ25l
ZCBpbnQgb2Zmc2V0LCBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0aW5hdGlv
bkZvcm1hdCwgR0xlbnVtIHNvdXJjZVBpeGVsc1R5cGUsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVh
KQogewotICAgIGdsOjpFcnJvciBlcnJvciA9IGxvYWRSZXNvdXJjZXMoKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkobG9hZFJlc291cmNlcygpKTsKIAogICAgIGdsOjpFeHRlbnRzIGRlc3RTaXplID0g
ZGVzdFJlbmRlclRhcmdldC0+Z2V0RXh0ZW50cygpOwogCkBAIC0yMDIsMzEgKzE5NiwzMyBAQAog
ICAgIEdMZW51bSB1bnNpemVkRm9ybWF0ID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhkZXN0
aW5hdGlvbkZvcm1hdCkuZm9ybWF0OwogICAgIEdMZW51bSBzb3VyY2VGb3JtYXQgPSBnbDo6R2V0
U2l6ZWRJbnRlcm5hbEZvcm1hdCh1bnNpemVkRm9ybWF0LCBzb3VyY2VQaXhlbHNUeXBlKTsKIAot
ICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZzb3VyY2VGb3JtYXRJbmZvID0gZDNkMTE6
OkdldFRleHR1cmVGb3JtYXRJbmZvKHNvdXJjZUZvcm1hdCwgbVJlbmRlcmVyLT5nZXRGZWF0dXJl
TGV2ZWwoKSk7Ci0gICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0ID0gc291cmNlRm9ybWF0SW5mby5z
cnZGb3JtYXQ7CisgICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJnNvdXJjZUZvcm1hdElu
Zm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oc291cmNlRm9ybWF0LCBtUmVuZGVyZXIt
PmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOworICAgIERYR0lfRk9STUFUIHNydkZvcm1hdCA9
IHNvdXJjZUZvcm1hdEluZm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQ7CiAgICAgQVNTRVJUKHNydkZv
cm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKICAgICBCdWZmZXIxMSAqYnVmZmVyU3RvcmFn
ZTExID0gR2V0QXM8QnVmZmVyMTE+KHNvdXJjZUJ1ZmZlci5nZXRJbXBsZW1lbnRhdGlvbigpKTsK
LSAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJ1ZmZlclNSViA9IGJ1ZmZlclN0b3JhZ2Ux
MS0+Z2V0U1JWKHNydkZvcm1hdCk7Ci0gICAgQVNTRVJUKGJ1ZmZlclNSViAhPSBOVUxMKTsKKyAg
ICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJ1ZmZlclNSViA9IG51bGxwdHI7CisgICAgQU5H
TEVfVFJZX1JFU1VMVChidWZmZXJTdG9yYWdlMTEtPmdldFNSVihzcnZGb3JtYXQpLCBidWZmZXJT
UlYpOworICAgIEFTU0VSVChidWZmZXJTUlYgIT0gbnVsbHB0cik7CiAKICAgICBJRDNEMTFSZW5k
ZXJUYXJnZXRWaWV3ICp0ZXh0dXJlUlRWID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KGRlc3RSZW5k
ZXJUYXJnZXQpLT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7Ci0gICAgQVNTRVJUKHRleHR1cmVSVFYg
IT0gTlVMTCk7CisgICAgQVNTRVJUKHRleHR1cmVSVFYgIT0gbnVsbHB0cik7CiAKICAgICBDb3B5
U2hhZGVyUGFyYW1zIHNoYWRlclBhcmFtczsKICAgICBzZXRCdWZmZXJUb1RleHR1cmVDb3B5UGFy
YW1zKGRlc3RBcmVhLCBkZXN0U2l6ZSwgc291cmNlRm9ybWF0LCB1bnBhY2ssIG9mZnNldCwgJnNo
YWRlclBhcmFtcyk7CiAKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAKLSAgICBJRDNEMTFCdWZmZXIgKm51bGxC
dWZmZXIgPSBOVUxMOworICAgIElEM0QxMUJ1ZmZlciAqbnVsbEJ1ZmZlciA9IG51bGxwdHI7CiAg
ICAgVUlOVCB6ZXJvID0gMDsKIAogICAgIC8vIEFyZSB3ZSBkb2luZyBhIDJEIG9yIDNEIGNvcHk/
CiAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKmdlb21ldHJ5U2hhZGVyID0gKChkZXN0U2l6ZS5k
ZXB0aCA+IDEpID8gbUJ1ZmZlclRvVGV4dHVyZUdTIDogTlVMTCk7CisgICAgYXV0byBzdGF0ZU1h
bmFnZXIgICAgICAgICAgICAgICAgICAgID0gbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKTsK
IAogICAgIGRldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKG1CdWZmZXJUb1RleHR1cmVWUywgTlVM
TCwgMCk7CiAgICAgZGV2aWNlQ29udGV4dC0+R1NTZXRTaGFkZXIoZ2VvbWV0cnlTaGFkZXIsIE5V
TEwsIDApOwogICAgIGRldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBOVUxM
LCAwKTsKLSAgICBtUmVuZGVyZXItPnNldFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVM
LCAwLCBidWZmZXJTUlYpOworICAgIHN0YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6
OlNBTVBMRVJfUElYRUwsIDAsIGJ1ZmZlclNSVik7CiAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRJ
bnB1dExheW91dChOVUxMKTsKICAgICBkZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9s
b2d5KEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJU1QpOwogCkBAIC0yMzUsNyArMjMx
LDcgQEAKICAgICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKG1Db3B5RGVw
dGhTdGVuY2lsU3RhdGUsIDB4RkZGRkZGRkYpOwogICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3Rh
dGUobUNvcHlSYXN0ZXJpemVyU3RhdGUpOwogCi0gICAgbVJlbmRlcmVyLT5zZXRPbmVUaW1lUmVu
ZGVyVGFyZ2V0KHRleHR1cmVSVFYpOworICAgIHN0YXRlTWFuYWdlci0+c2V0T25lVGltZVJlbmRl
clRhcmdldCh0ZXh0dXJlUlRWLCBudWxscHRyKTsKIAogICAgIGlmICghU3RydWN0RXF1YWxzKG1Q
YXJhbXNEYXRhLCBzaGFkZXJQYXJhbXMpKQogICAgIHsKQEAgLTI1OSwxMiArMjU1LDEyIEBACiAg
ICAgZGV2aWNlQ29udGV4dC0+RHJhdyhudW1QaXhlbHMsIDApOwogCiAgICAgLy8gVW5iaW5kIHRl
eHR1cmVzIGFuZCByZW5kZXIgdGFyZ2V0cyBhbmQgdmVydGV4IGJ1ZmZlcgotICAgIG1SZW5kZXJl
ci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIE5VTEwpOworICAgIHN0
YXRlTWFuYWdlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIE5VTEwp
OwogICAgIGRldmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKDAsIDEsICZudWxsQnVm
ZmVyKTsKIAogICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgUGl4ZWxUcmFuc2ZlcjExOjpidWlsZFNoYWRlck1hcCgpCkBAIC0yODQsNyAr
MjgwLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBJRDNEMTFQaXhlbFNoYWRl
ciAqUGl4ZWxUcmFuc2ZlcjExOjpmaW5kQnVmZmVyVG9UZXh0dXJlUFMoR0xlbnVtIGludGVybmFs
Rm9ybWF0KSBjb25zdApAQCAtMjk5LDQgKzI5NSw0IEBACiAgICAgcmV0dXJuIChzaGFkZXJNYXBJ
dCA9PSBtQnVmZmVyVG9UZXh0dXJlUFNNYXAuZW5kKCkgPyBOVUxMIDogc2hhZGVyTWFwSXQtPnNl
Y29uZCk7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1F1ZXJ5MTEuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMywxMDIgKzEzLDI0OCBAQAogCiAjaW5jbHVkZSA8R0xFUzIvZ2wy
ZXh0Lmg+CiAKK25hbWVzcGFjZQoreworCitHTHVpbnQ2NCBNZXJnZVF1ZXJ5UmVzdWx0cyhHTGVu
dW0gdHlwZSwgR0x1aW50NjQgY3VycmVudFJlc3VsdCwgR0x1aW50NjQgbmV3UmVzdWx0KQorewor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFT
U0VEOgorICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU6Cisg
ICAgICAgICAgICByZXR1cm4gKGN1cnJlbnRSZXN1bHQgPT0gR0xfVFJVRSB8fCBuZXdSZXN1bHQg
PT0gR0xfVFJVRSkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisKKyAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgorICAgICAgICAgICAgcmV0dXJuIGN1
cnJlbnRSZXN1bHQgKyBuZXdSZXN1bHQ7CisKKyAgICAgICAgY2FzZSBHTF9USU1FX0VMQVBTRURf
RVhUOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRSZXN1bHQgKyBuZXdSZXN1bHQ7CisKKyAg
ICAgICAgY2FzZSBHTF9USU1FU1RBTVBfRVhUOgorICAgICAgICAgICAgcmV0dXJuIG5ld1Jlc3Vs
dDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQor
CiBuYW1lc3BhY2UgcngKIHsKIAorUXVlcnkxMTo6UXVlcnlTdGF0ZTo6UXVlcnlTdGF0ZSgpCisg
ICAgOiBxdWVyeShudWxscHRyKSwgYmVnaW5UaW1lc3RhbXAobnVsbHB0ciksIGVuZFRpbWVzdGFt
cChudWxscHRyKSwgZmluaXNoZWQoZmFsc2UpCit7Cit9CisKK1F1ZXJ5MTE6OlF1ZXJ5U3RhdGU6
On5RdWVyeVN0YXRlKCkKK3sKKyAgICBTYWZlUmVsZWFzZShiZWdpblRpbWVzdGFtcCk7CisgICAg
U2FmZVJlbGVhc2UoZW5kVGltZXN0YW1wKTsKKyAgICBTYWZlUmVsZWFzZShxdWVyeSk7Cit9CisK
IFF1ZXJ5MTE6OlF1ZXJ5MTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEdMZW51bSB0eXBlKQotICAg
IDogUXVlcnlJbXBsKHR5cGUpLAotICAgICAgbVJlc3VsdCgwKSwKLSAgICAgIG1RdWVyeUZpbmlz
aGVkKGZhbHNlKSwKLSAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAgICBtUXVlcnkoTlVM
TCkKKyAgICA6IFF1ZXJ5SW1wbCh0eXBlKSwgbVJlc3VsdCgwKSwgbVJlc3VsdFN1bSgwKSwgbVJl
bmRlcmVyKHJlbmRlcmVyKQogeworICAgIG1BY3RpdmVRdWVyeSA9IHN0ZDo6dW5pcXVlX3B0cjxR
dWVyeVN0YXRlPihuZXcgUXVlcnlTdGF0ZSgpKTsKIH0KIAogUXVlcnkxMTo6flF1ZXJ5MTEoKQog
ewotICAgIFNhZmVSZWxlYXNlKG1RdWVyeSk7CisgICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFn
ZXIoKS0+b25EZWxldGVRdWVyeU9iamVjdCh0aGlzKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5MTE6
OmJlZ2luKCkKIHsKLSAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCi0gICAgewotICAgICAgICBEM0Qx
MV9RVUVSWV9ERVNDIHF1ZXJ5RGVzYzsKLSAgICAgICAgcXVlcnlEZXNjLlF1ZXJ5ID0gZ2xfZDNk
MTE6OkNvbnZlcnRRdWVyeVR5cGUoZ2V0VHlwZSgpKTsKLSAgICAgICAgcXVlcnlEZXNjLk1pc2NG
bGFncyA9IDA7CisgICAgbVJlc3VsdFN1bSA9IDA7CisgICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1h
bmFnZXIoKS0+b25CZWdpblF1ZXJ5KHRoaXMpOworICAgIHJldHVybiByZXN1bWUoKTsKK30KIAot
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1
ZXJ5KCZxdWVyeURlc2MsICZtUXVlcnkpOwotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwg
IkludGVybmFsIHF1ZXJ5IGNyZWF0aW9uIGZhaWxlZCwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7
Ci0gICAgICAgIH0KLSAgICB9CitnbDo6RXJyb3IgUXVlcnkxMTo6ZW5kKCkKK3sKKyAgICByZXR1
cm4gcGF1c2UoKTsKK30KIAotICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5CZWdp
bihtUXVlcnkpOworZ2w6OkVycm9yIFF1ZXJ5MTE6OnF1ZXJ5Q291bnRlcigpCit7CisgICAgLy8g
VGhpcyBkb2Vzbid0IGRvIGFueXRoaW5nIGZvciBEM0QxMSBhcyB3ZSBkb24ndCBzdXBwb3J0IHRp
bWVzdGFtcHMKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IEdMX1RJTUVTVEFNUF9FWFQpOworICAg
IG1SZXN1bHRTdW0gPSAwOworICAgIG1QZW5kaW5nUXVlcmllcy5wdXNoX2JhY2soc3RkOjp1bmlx
dWVfcHRyPFF1ZXJ5U3RhdGU+KG5ldyBRdWVyeVN0YXRlKCkpKTsKICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5MTE6OmVuZCgpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KK2dsOjpFcnJvciBRdWVyeTExOjpnZXRSZXN1bHRCYXNlKFQgKnBhcmFt
cykKIHsKLSAgICBBU1NFUlQobVF1ZXJ5KTsKLSAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRl
eHQoKS0+RW5kKG1RdWVyeSk7CisgICAgQVNTRVJUKG1BY3RpdmVRdWVyeS0+cXVlcnkgPT0gbnVs
bHB0cik7CiAKLSAgICBtUXVlcnlGaW5pc2hlZCA9IGZhbHNlOwotICAgIG1SZXN1bHQgPSBHTF9G
QUxTRTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBmbHVzaCh0cnVlKTsKKyAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KIAorICAgIEFT
U0VSVChtUGVuZGluZ1F1ZXJpZXMuZW1wdHkoKSk7CisgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0
PFQ+KG1SZXN1bHRTdW0pOworCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKK2dsOjpFcnJvciBRdWVyeTExOjpnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykKK3sKKyAgICBy
ZXR1cm4gZ2V0UmVzdWx0QmFzZShwYXJhbXMpOworfQorCiBnbDo6RXJyb3IgUXVlcnkxMTo6Z2V0
UmVzdWx0KEdMdWludCAqcGFyYW1zKQogewotICAgIHdoaWxlICghbVF1ZXJ5RmluaXNoZWQpCisg
ICAgcmV0dXJuIGdldFJlc3VsdEJhc2UocGFyYW1zKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5MTE6
OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIGdldFJlc3VsdEJhc2Uo
cGFyYW1zKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5MTE6OmdldFJlc3VsdChHTHVpbnQ2NCAqcGFy
YW1zKQoreworICAgIHJldHVybiBnZXRSZXN1bHRCYXNlKHBhcmFtcyk7Cit9CisKK2dsOjpFcnJv
ciBRdWVyeTExOjppc1Jlc3VsdEF2YWlsYWJsZShib29sICphdmFpbGFibGUpCit7CisgICAgZ2w6
OkVycm9yIGVycm9yID0gZmx1c2goZmFsc2UpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB0ZXN0UXVlcnkoKTsKKyAgICAgICAgcmV0
dXJuIGVycm9yOworICAgIH0KKworICAgICphdmFpbGFibGUgPSBtUGVuZGluZ1F1ZXJpZXMuZW1w
dHkoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9y
IFF1ZXJ5MTE6OnBhdXNlKCkKK3sKKyAgICBpZiAobUFjdGl2ZVF1ZXJ5LT5xdWVyeSAhPSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAgICAgIC8vIElmIHdlIGFyZSBkb2luZyB0
aW1lIGVsYXBzZWQgcXVlcnkgdGhlIGVuZCB0aW1lc3RhbXAKKyAgICAgICAgaWYgKGdldFR5cGUo
KSA9PSBHTF9USU1FX0VMQVBTRURfRVhUKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5FbmQobUFjdGl2ZVF1ZXJ5LT5lbmRUaW1lc3RhbXApOworICAgICAgICB9CisKKyAgICAgICAg
Y29udGV4dC0+RW5kKG1BY3RpdmVRdWVyeS0+cXVlcnkpOworCisgICAgICAgIG1QZW5kaW5nUXVl
cmllcy5wdXNoX2JhY2soc3RkOjptb3ZlKG1BY3RpdmVRdWVyeSkpOworICAgICAgICBtQWN0aXZl
UXVlcnkgPSBzdGQ6OnVuaXF1ZV9wdHI8UXVlcnlTdGF0ZT4obmV3IFF1ZXJ5U3RhdGUoKSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGZsdXNoKGZhbHNlKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5MTE6
OnJlc3VtZSgpCit7CisgICAgaWYgKG1BY3RpdmVRdWVyeS0+cXVlcnkgPT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGZsdXNoKGZhbHNlKTsKICAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFtUXVlcnlGaW5pc2hlZCkKKyAgICAgICAgRDNEMTFf
UVVFUllfREVTQyBxdWVyeURlc2M7CisgICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSAgICAgPSBnbF9k
M2QxMTo6Q29udmVydFF1ZXJ5VHlwZShnZXRUeXBlKCkpOworICAgICAgICBxdWVyeURlc2MuTWlz
Y0ZsYWdzID0gMDsKKworICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlKCk7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVF1
ZXJ5KCZxdWVyeURlc2MsICZtQWN0aXZlUXVlcnktPnF1ZXJ5KTsKKyAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBTY2hlZHVsZVlpZWxkKCk7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCBxdWVy
eSBjcmVhdGlvbiBmYWlsZWQsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGRvaW5n
IHRpbWUgZWxhcHNlZCB3ZSBhbHNvIG5lZWQgYSBxdWVyeSB0byBhY3R1YWxseSBxdWVyeSB0aGUg
dGltZXN0YW1wCisgICAgICAgIGlmIChnZXRUeXBlKCkgPT0gR0xfVElNRV9FTEFQU0VEX0VYVCkK
KyAgICAgICAgeworICAgICAgICAgICAgRDNEMTFfUVVFUllfREVTQyBkZXNjOworICAgICAgICAg
ICAgZGVzYy5RdWVyeSAgICAgPSBEM0QxMV9RVUVSWV9USU1FU1RBTVA7CisgICAgICAgICAgICBk
ZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVF1
ZXJ5KCZkZXNjLCAmbUFjdGl2ZVF1ZXJ5LT5iZWdpblRpbWVzdGFtcCk7CisgICAgICAgICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJuYWwgcXVlcnkgY3JlYXRpb24gZmFp
bGVkLCByZXN1bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVF1ZXJ5KCZkZXNjLCAmbUFjdGl2ZVF1ZXJ5LT5lbmRUaW1lc3RhbXApOworICAgICAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIHF1ZXJ5IGNyZWF0aW9uIGZh
aWxlZCwgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSUQzRDExRGV2aWNl
Q29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOworCisgICAg
ICAgIGNvbnRleHQtPkJlZ2luKG1BY3RpdmVRdWVyeS0+cXVlcnkpOworCisgICAgICAgIC8vIElm
IHdlIGFyZSBkb2luZyB0aW1lIGVsYXBzZWQsIHF1ZXJ5IHRoZSBiZWdpbiB0aW1lc3RhbXAKKyAg
ICAgICAgaWYgKGdldFR5cGUoKSA9PSBHTF9USU1FX0VMQVBTRURfRVhUKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5FbmQobUFjdGl2ZVF1ZXJ5LT5iZWdpblRpbWVzdGFtcCk7Cisg
ICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQobVF1ZXJ5RmluaXNoZWQpOwotICAgICpwYXJh
bXMgPSBtUmVzdWx0OwotCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAK
LWdsOjpFcnJvciBRdWVyeTExOjppc1Jlc3VsdEF2YWlsYWJsZShHTHVpbnQgKmF2YWlsYWJsZSkK
K2dsOjpFcnJvciBRdWVyeTExOjpmbHVzaChib29sIGZvcmNlKQogewotICAgIGdsOjpFcnJvciBl
cnJvciA9IHRlc3RRdWVyeSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgd2hpbGUg
KCFtUGVuZGluZ1F1ZXJpZXMuZW1wdHkoKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsK
KyAgICAgICAgUXVlcnlTdGF0ZSAqcXVlcnkgPSBtUGVuZGluZ1F1ZXJpZXMuZnJvbnQoKS5nZXQo
KTsKKworICAgICAgICBkbworICAgICAgICB7CisgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSB0ZXN0UXVlcnkocXVlcnkpOworICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIXF1ZXJ5LT5maW5pc2hlZCAmJiAhZm9yY2UpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKCFxdWVyeS0+ZmluaXNoZWQpOworCisgICAgICAg
IG1SZXN1bHRTdW0gPSBNZXJnZVF1ZXJ5UmVzdWx0cyhnZXRUeXBlKCksIG1SZXN1bHRTdW0sIG1S
ZXN1bHQpOworICAgICAgICBtUGVuZGluZ1F1ZXJpZXMucG9wX2Zyb250KCk7CiAgICAgfQogCi0g
ICAgKmF2YWlsYWJsZSA9IChtUXVlcnlGaW5pc2hlZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Ci0K
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5
MTE6OnRlc3RRdWVyeSgpCitnbDo6RXJyb3IgUXVlcnkxMTo6dGVzdFF1ZXJ5KFF1ZXJ5U3RhdGUg
KnF1ZXJ5U3RhdGUpCiB7Ci0gICAgaWYgKCFtUXVlcnlGaW5pc2hlZCkKKyAgICBpZiAoIXF1ZXJ5
U3RhdGUtPmZpbmlzaGVkKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1RdWVyeSk7Ci0KICAgICAg
ICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpOwogICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKSkKICAgICAgICAgewogICAgICAgICAg
IGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDoKICAgICAgICAgICBjYXNlIEdMX0FOWV9T
QU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgogICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChxdWVyeVN0YXRlLT5xdWVyeSk7CiAgICAgICAgICAgICAgICAgVUlOVDY0
IG51bVBpeGVscyA9IDA7Ci0gICAgICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBjb250ZXh0
LT5HZXREYXRhKG1RdWVyeSwgJm51bVBpeGVscywgc2l6ZW9mKG51bVBpeGVscyksIDApOworICAg
ICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0KKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+R2V0RGF0YShxdWVyeVN0YXRlLT5xdWVyeSwgJm51bVBpeGVscywgc2l6ZW9mKG51bVBpeGVs
cyksIDApOwogICAgICAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgIkZhaWxlZCB0byBnZXQgdGhlIGRhdGEgb2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3Vs
dDogMHglWC4iLCByZXN1bHQpOwpAQCAtMTE2LDcgKzI2Miw3IEBACiAKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFNfT0spCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBtUXVlcnlGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5U3Rh
dGUtPmZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbVJlc3VsdCA9IChudW1Q
aXhlbHMgPiAwKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CkBAIC0xMjQsOCArMjcwLDkgQEAKIAogICAgICAgICAgIGNhc2UgR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTjoKICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQocXVlcnlTdGF0ZS0+cXVlcnkpOwogICAgICAgICAgICAgICAgIEQzRDEx
X1FVRVJZX0RBVEFfU09fU1RBVElTVElDUyBzb1N0YXRzID0geyAwIH07Ci0gICAgICAgICAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBjb250ZXh0LT5HZXREYXRhKG1RdWVyeSwgJnNvU3RhdHMsIHNp
emVvZihzb1N0YXRzKSwgMCk7CisgICAgICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBjb250
ZXh0LT5HZXREYXRhKHF1ZXJ5U3RhdGUtPnF1ZXJ5LCAmc29TdGF0cywgc2l6ZW9mKHNvU3RhdHMp
LCAwKTsKICAgICAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJGYWlsZWQgdG8gZ2V0IHRoZSBkYXRhIG9mIGFuIGludGVybmFsIHF1ZXJ5LCByZXN1bHQ6
IDB4JVguIiwgcmVzdWx0KTsKQEAgLTEzMywxOCArMjgwLDkwIEBACiAKICAgICAgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFNfT0spCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBtUXVlcnlGaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIG1SZXN1bHQg
PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHNvU3RhdHMuTnVtUHJpbWl0aXZlc1dyaXR0ZW4pOworICAg
ICAgICAgICAgICAgICAgICBxdWVyeVN0YXRlLT5maW5pc2hlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIG1SZXN1bHQgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1aW50NjQ+KHNvU3RhdHMu
TnVtUHJpbWl0aXZlc1dyaXR0ZW4pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBjYXNlIEdMX1RJTUVfRUxBUFNFRF9F
WFQ6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHF1ZXJ5U3RhdGUtPnF1
ZXJ5KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocXVlcnlTdGF0ZS0+YmVnaW5UaW1lc3RhbXAp
OworICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeVN0YXRlLT5lbmRUaW1lc3RhbXApOworICAg
ICAgICAgICAgICAgIEQzRDExX1FVRVJZX0RBVEFfVElNRVNUQU1QX0RJU0pPSU5UIHRpbWVTdGF0
cyA9IHswfTsKKyAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPkdldERhdGEocXVlcnlTdGF0ZS0+cXVlcnksICZ0aW1lU3RhdHMsIHNp
emVvZih0aW1lU3RhdHMpLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkZhaWxlZCB0byBnZXQgdGhlIGRhdGEgb2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHgl
WC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTX09LKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgVUlOVDY0IGJlZ2luVGltZSA9IDA7
CisgICAgICAgICAgICAgICAgICAgIEhSRVNVTFQgYmVnaW5SZXMgPQorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+R2V0RGF0YShxdWVyeVN0YXRlLT5iZWdpblRpbWVzdGFtcCwgJmJl
Z2luVGltZSwgc2l6ZW9mKFVJTlQ2NCksIDApOworICAgICAgICAgICAgICAgICAgICBpZiAoRkFJ
TEVEKGJlZ2luUmVzKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9P
VVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0
IHRoZSBkYXRhIG9mIGFuIGludGVybmFsIHF1ZXJ5LCByZXN1bHQ6IDB4JVguIiwgYmVnaW5SZXMp
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFVJTlQ2NCBlbmRU
aW1lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSFJFU1VMVCBlbmRSZXMgPQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+R2V0RGF0YShxdWVyeVN0YXRlLT5lbmRUaW1lc3RhbXAs
ICZlbmRUaW1lLCBzaXplb2YoVUlOVDY0KSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChG
QUlMRUQoZW5kUmVzKSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9P
VVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0
IHRoZSBkYXRhIG9mIGFuIGludGVybmFsIHF1ZXJ5LCByZXN1bHQ6IDB4JVguIiwgZW5kUmVzKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChiZWdpblJl
cyA9PSBTX09LICYmIGVuZFJlcyA9PSBTX09LKQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBxdWVyeVN0YXRlLT5maW5pc2hlZCA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodGltZVN0YXRzLkRpc2pvaW50KQorICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+c2V0R1BV
RGlzam9pbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVJTlQ2NCkgPT0gc2l6ZW9mKHVuc2lnbmVkIGxv
bmcgbG9uZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEM0QgVUlO
VDY0IGlzbid0IDY0IGJpdHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyeDo6SXNV
bnNpZ25lZE11bHRpcGxpY2F0aW9uU2FmZShlbmRUaW1lIC0gYmVnaW5UaW1lLCAxMDAwMDAwMDAw
dWxsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtUmVzdWx0ID0gKChlbmRUaW1lIC0gYmVnaW5UaW1lKSAqIDEwMDAwMDAwMDB1bGwpIC8g
dGltZVN0YXRzLkZyZXF1ZW5jeTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUmVzdWx0ID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ2
ND46Om1heCgpIC8gdGltZVN0YXRzLkZyZXF1ZW5jeTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJZiBhbiBvdmVyZmxvdyBkb2VzIHNvbWVob3cgb2NjdXIsIHRoZXJlIGlzIG5vIHdh
eSB0aGUgZWxhcHNlZCB0aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgYWNj
dXJhdGUsIHNvIHdlIGdlbmVyYXRlIGEgZGlzam9pbnQgZXZlbnQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtUmVuZGVyZXItPnNldEdQVURpc2pvaW50KCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9USU1F
U1RBTVBfRVhUOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEQzRDExIGRvZXNu
J3Qgc3VwcG9ydCBHTCB0aW1lc3RhbXAgcXVlcmllcyBhcyBEM0QgdGltZXN0YW1wcyBhcmUgbm90
IGd1YXJhbnRlZWQKKyAgICAgICAgICAgICAgICAvLyB0byBoYXZlIGFueSBzb3J0IG9mIGNvbnRp
bnVpdHkgb3V0c2lkZSBvZiBhIGRpc2pvaW50IHRpbWVzdGFtcCBxdWVyeSBibG9jaywgd2hpY2gK
KyAgICAgICAgICAgICAgICAvLyBHTCBkZXBlbmRzIG9uCisgICAgICAgICAgICAgICAgQVNTRVJU
KHF1ZXJ5U3RhdGUtPnF1ZXJ5ID09IG51bGxwdHIpOworICAgICAgICAgICAgICAgIG1SZXN1bHQg
PSAwOworICAgICAgICAgICAgICAgIHF1ZXJ5U3RhdGUtPmZpbmlzaGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIW1RdWVyeUZpbmlzaGVkICYmIG1SZW5kZXJlci0+dGVzdERldmljZUxvc3QoKSkK
KyAgICAgICAgaWYgKCFxdWVyeVN0YXRlLT5maW5pc2hlZCAmJiBtUmVuZGVyZXItPnRlc3REZXZp
Y2VMb3N0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNl
TG9zdCgpOwogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAi
RmFpbGVkIHRvIHRlc3QgZ2V0IHF1ZXJ5IHJlc3VsdCwgZGV2aWNlIGlzIGxvc3QuIik7CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1F1ZXJ5MTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuaAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9R
dWVyeTExLmgJKHdvcmtpbmcgY29weSkKQEAgLTksNiArOSw4IEBACiAjaWZuZGVmIExJQkFOR0xF
X1JFTkRFUkVSX0QzRF9EM0QxMV9RVUVSWTExX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9EM0QxMV9RVUVSWTExX0hfCiAKKyNpbmNsdWRlIDxkZXF1ZT4KKwogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL1F1ZXJ5SW1wbC5oIgogCiBuYW1lc3BhY2UgcngKQEAgLTE5LDIyICsy
MSw0NSBAQAogewogICBwdWJsaWM6CiAgICAgUXVlcnkxMShSZW5kZXJlcjExICpyZW5kZXJlciwg
R0xlbnVtIHR5cGUpOwotICAgIHZpcnR1YWwgflF1ZXJ5MTEoKTsKKyAgICB+UXVlcnkxMSgpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgYmVnaW4oKTsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBlbmQoKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRSZXN1bHQoR0x1aW50ICpw
YXJhbXMpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGlzUmVzdWx0QXZhaWxhYmxlKEdMdWludCAq
YXZhaWxhYmxlKTsKKyAgICBnbDo6RXJyb3IgYmVnaW4oKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3IgZW5kKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHF1ZXJ5Q291bnRlcigpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGdldFJlc3VsdChHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIGdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBn
ZXRSZXN1bHQoR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGlzUmVz
dWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkgb3ZlcnJpZGU7CiAKKyAgICBnbDo6RXJyb3Ig
cGF1c2UoKTsKKyAgICBnbDo6RXJyb3IgcmVzdW1lKCk7CisKICAgcHJpdmF0ZToKLSAgICBnbDo6
RXJyb3IgdGVzdFF1ZXJ5KCk7CisgICAgc3RydWN0IFF1ZXJ5U3RhdGUgZmluYWwgOiBwdWJsaWMg
YW5nbGU6Ok5vbkNvcHlhYmxlCisgICAgeworICAgICAgICBRdWVyeVN0YXRlKCk7CisgICAgICAg
IH5RdWVyeVN0YXRlKCk7CiAKLSAgICBHTHVpbnQgbVJlc3VsdDsKKyAgICAgICAgSUQzRDExUXVl
cnkgKnF1ZXJ5OworICAgICAgICBJRDNEMTFRdWVyeSAqYmVnaW5UaW1lc3RhbXA7CisgICAgICAg
IElEM0QxMVF1ZXJ5ICplbmRUaW1lc3RhbXA7CisgICAgICAgIGJvb2wgZmluaXNoZWQ7CisgICAg
fTsKIAotICAgIGJvb2wgbVF1ZXJ5RmluaXNoZWQ7CisgICAgZ2w6OkVycm9yIGZsdXNoKGJvb2wg
Zm9yY2UpOworICAgIGdsOjpFcnJvciB0ZXN0UXVlcnkoUXVlcnlTdGF0ZSAqcXVlcnlTdGF0ZSk7
CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBnbDo6RXJyb3IgZ2V0UmVzdWx0QmFz
ZShUICpwYXJhbXMpOworCisgICAgR0x1aW50NjQgbVJlc3VsdDsKKyAgICBHTHVpbnQ2NCBtUmVz
dWx0U3VtOworCiAgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOwotICAgIElEM0QxMVF1ZXJ5ICpt
UXVlcnk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVlcnlTdGF0ZT4gbUFjdGl2ZVF1ZXJ5Owor
ICAgIHN0ZDo6ZGVxdWU8c3RkOjp1bmlxdWVfcHRyPFF1ZXJ5U3RhdGU+PiBtUGVuZGluZ1F1ZXJp
ZXM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVu
ZGVyU3RhdGVDYWNoZS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIAogbmFtZXNwYWNlIHJ4CiB7Cit1
c2luZyBuYW1lc3BhY2UgZ2xfZDNkMTE7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBtYXBUeXBlPgog
c3RhdGljIHZvaWQgQ2xlYXJTdGF0ZU1hcChtYXBUeXBlICZtYXApCkBAIC00MiwxMiArNDMsMTIg
QEAKIAogUmVuZGVyU3RhdGVDYWNoZTo6UmVuZGVyU3RhdGVDYWNoZShSZW5kZXJlcjExICpyZW5k
ZXJlcikKICAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAgICBtRGV2aWNlKE5VTEwpLAog
ICAgICAgbUNvdW50ZXIoMCksCiAgICAgICBtQmxlbmRTdGF0ZUNhY2hlKGtNYXhCbGVuZFN0YXRl
cywgaGFzaEJsZW5kU3RhdGUsIGNvbXBhcmVCbGVuZFN0YXRlcyksCiAgICAgICBtUmFzdGVyaXpl
clN0YXRlQ2FjaGUoa01heFJhc3Rlcml6ZXJTdGF0ZXMsIGhhc2hSYXN0ZXJpemVyU3RhdGUsIGNv
bXBhcmVSYXN0ZXJpemVyU3RhdGVzKSwKICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlKGtN
YXhEZXB0aFN0ZW5jaWxTdGF0ZXMsIGhhc2hEZXB0aFN0ZW5jaWxTdGF0ZSwgY29tcGFyZURlcHRo
U3RlbmNpbFN0YXRlcyksCi0gICAgICBtU2FtcGxlclN0YXRlQ2FjaGUoa01heFNhbXBsZXJTdGF0
ZXMsIGhhc2hTYW1wbGVyU3RhdGUsIGNvbXBhcmVTYW1wbGVyU3RhdGVzKQorICAgICAgbVNhbXBs
ZXJTdGF0ZUNhY2hlKGtNYXhTYW1wbGVyU3RhdGVzLCBoYXNoU2FtcGxlclN0YXRlLCBjb21wYXJl
U2FtcGxlclN0YXRlcyksCisgICAgICBtRGV2aWNlKE5VTEwpCiB7CiB9CiAKQEAgLTk1LDkgKzk2
LDkgQEAKICAgICBib29sIG1ydCA9IGZhbHNlOwogCiAgICAgY29uc3QgRnJhbWVidWZmZXJEM0Qg
KmZyYW1lYnVmZmVyRDNEID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyRDNEPihmcmFtZWJ1ZmZlcik7
Ci0gICAgY29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZjb2xvcmJ1ZmZlcnMgPSBmcmFtZWJ1ZmZl
ckQzRC0+Z2V0Q29sb3JBdHRhY2htZW50c0ZvclJlbmRlcihtUmVuZGVyZXItPmdldFdvcmthcm91
bmRzKCkpOworICAgIGNvbnN0IGdsOjpBdHRhY2htZW50TGlzdCAmY29sb3JidWZmZXJzID0gZnJh
bWVidWZmZXJEM0QtPmdldENvbG9yQXR0YWNobWVudHNGb3JSZW5kZXIoKTsKIAotICAgIEJsZW5k
U3RhdGVLZXkga2V5ID0geyAwIH07CisgICAgQmxlbmRTdGF0ZUtleSBrZXkgPSB7fTsKICAgICBr
ZXkuYmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGU7CiAgICAgZm9yIChzaXplX3QgY29sb3JBdHRhY2ht
ZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgY29sb3JidWZmZXJzLnNpemUoKTsgKytjb2xvckF0
dGFjaG1lbnQpCiAgICAgewpAQCAtMjA5LDcgKzIxMCw3IEBACiAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIGVycm9yLCBSZW5kZXJTdGF0ZUNhY2hl
IGlzIG5vdCBpbml0aWFsaXplZC4iKTsKICAgICB9CiAKLSAgICBSYXN0ZXJpemVyU3RhdGVLZXkg
a2V5ID0geyAwIH07CisgICAgUmFzdGVyaXplclN0YXRlS2V5IGtleSA9IHt9OwogICAgIGtleS5y
YXN0ZXJpemVyU3RhdGUgPSByYXN0ZXJTdGF0ZTsKICAgICBrZXkuc2Npc3NvckVuYWJsZWQgPSBz
Y2lzc29yRW5hYmxlZDsKIApAQCAtMjk3LDE0ICsyOTgsMzEgQEAKICAgICByZXR1cm4gbWVtY21w
KCZhLCAmYiwgc2l6ZW9mKGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSkpID09IDA7CiB9CiAKLWdsOjpF
cnJvciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVw
dGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUsIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICoqb3V0RFNT
dGF0ZSkKK2dsOjpFcnJvciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShj
b25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJm9yaWdpbmFsU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNhYmxlRGVwdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNh
YmxlU3RlbmNpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSAqKm91dERTU3RhdGUpCiB7CiAgICAgaWYgKCFt
RGV2aWNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAiSW50ZXJuYWwgZXJyb3IsIFJlbmRlclN0YXRlQ2FjaGUgaXMgbm90IGluaXRpYWxpemVkLiIp
OwogICAgIH0KIAotICAgIERlcHRoU3RlbmNpbFN0YXRlTWFwOjppdGVyYXRvciBrZXlJdGVyID0g
bURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuZmluZChkc1N0YXRlKTsKKyAgICBnbDo6RGVwdGhTdGVu
Y2lsU3RhdGUgZ2xTdGF0ZSA9IG9yaWdpbmFsU3RhdGU7CisgICAgaWYgKGRpc2FibGVEZXB0aCkK
KyAgICB7CisgICAgICAgIGdsU3RhdGUuZGVwdGhUZXN0ID0gZmFsc2U7CisgICAgICAgIGdsU3Rh
dGUuZGVwdGhNYXNrID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGRpc2FibGVTdGVuY2lsKQor
ICAgIHsKKyAgICAgICAgZ2xTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICAgICA9IDA7CisgICAgICAg
IGdsU3RhdGUuc3RlbmNpbEJhY2tXcml0ZW1hc2sgPSAwOworICAgICAgICBnbFN0YXRlLnN0ZW5j
aWxUZXN0ICAgICAgICAgID0gZmFsc2U7CisgICAgfQorCisgICAgYXV0byBrZXlJdGVyID0gbURl
cHRoU3RlbmNpbFN0YXRlQ2FjaGUuZmluZChnbFN0YXRlKTsKICAgICBpZiAoa2V5SXRlciAhPSBt
RGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKSkKICAgICB7CiAgICAgICAgIERlcHRoU3RlbmNp
bFN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0ga2V5SXRlci0+c2Vjb25kOwpAQCAtMzEyLDUzICsz
MzAsNTUgQEAKICAgICAgICAgKm91dERTU3RhdGUgPSBzdGF0ZS5maXJzdDsKICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAgfQotICAgIGVsc2UKKworICAgIGlmICht
RGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5zaXplKCkgPj0ga01heERlcHRoU3RlbmNpbFN0YXRlcykK
ICAgICB7Ci0gICAgICAgIGlmIChtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5zaXplKCkgPj0ga01h
eERlcHRoU3RlbmNpbFN0YXRlcykKKyAgICAgICAgVFJBQ0UoCisgICAgICAgICAgICAiT3ZlcmZs
b3dlZCB0aGUgbGltaXQgb2YgJXUgZGVwdGggc3RlbmNpbCBzdGF0ZXMsIHJlbW92aW5nIHRoZSBs
ZWFzdCByZWNlbnRseSB1c2VkICIKKyAgICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwKKyAgICAg
ICAgICAgIGtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXMpOworCisgICAgICAgIGF1dG8gbGVhc3RSZWNl
bnRseVVzZWQgPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5iZWdpbigpOworICAgICAgICBmb3Ig
KGF1dG8gaSA9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbURlcHRoU3Rl
bmNpbFN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgVFJBQ0Uo
Ik92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IGRlcHRoIHN0ZW5jaWwgc3RhdGVzLCByZW1vdmlu
ZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCi0gICAgICAgICAgICAgICAgICAidG8gbWFrZSBy
b29tLiIsIGtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXMpOwotCi0gICAgICAgICAgICBEZXB0aFN0ZW5j
aWxTdGF0ZU1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRseVVzZWQgPSBtRGVwdGhTdGVuY2lsU3Rh
dGVDYWNoZS5iZWdpbigpOwotICAgICAgICAgICAgZm9yIChEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6
aXRlcmF0b3IgaSA9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbURlcHRo
U3RlbmNpbFN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKKyAgICAgICAgICAgIGlmIChpLT5zZWNvbmQu
c2Vjb25kIDwgbGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5zZWNvbmQpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKGktPnNlY29uZC5zZWNvbmQgPCBsZWFzdFJlY2VudGx5VXNl
ZC0+c2Vjb25kLnNlY29uZCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGxlYXN0UmVjZW50bHlVc2VkID0gaTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbGVhc3RSZWNlbnRseVVzZWQgPSBpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgU2Fm
ZVJlbGVhc2UobGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5maXJzdCk7Ci0gICAgICAgICAgICBt
RGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lcmFzZShsZWFzdFJlY2VudGx5VXNlZCk7CiAgICAgICAg
IH0KKyAgICAgICAgU2FmZVJlbGVhc2UobGVhc3RSZWNlbnRseVVzZWQtPnNlY29uZC5maXJzdCk7
CisgICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmVyYXNlKGxlYXN0UmVjZW50bHlVc2Vk
KTsKKyAgICB9CiAKLSAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9ERVNDIGRzRGVzYyA9IHsg
MCB9OwotICAgICAgICBkc0Rlc2MuRGVwdGhFbmFibGUgPSBkc1N0YXRlLmRlcHRoVGVzdCA/IFRS
VUUgOiBGQUxTRTsKLSAgICAgICAgZHNEZXNjLkRlcHRoV3JpdGVNYXNrID0gZ2xfZDNkMTE6OkNv
bnZlcnREZXB0aE1hc2soZHNTdGF0ZS5kZXB0aE1hc2spOwotICAgICAgICBkc0Rlc2MuRGVwdGhG
dW5jID0gZ2xfZDNkMTE6OkNvbnZlcnRDb21wYXJpc29uKGRzU3RhdGUuZGVwdGhGdW5jKTsKLSAg
ICAgICAgZHNEZXNjLlN0ZW5jaWxFbmFibGUgPSBkc1N0YXRlLnN0ZW5jaWxUZXN0ID8gVFJVRSA6
IEZBTFNFOwotICAgICAgICBkc0Rlc2MuU3RlbmNpbFJlYWRNYXNrID0gZ2xfZDNkMTE6OkNvbnZl
cnRTdGVuY2lsTWFzayhkc1N0YXRlLnN0ZW5jaWxNYXNrKTsKLSAgICAgICAgZHNEZXNjLlN0ZW5j
aWxXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxNYXNrKGRzU3RhdGUuc3RlbmNp
bFdyaXRlbWFzayk7Ci0gICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbEZhaWxPcCA9IGds
X2QzZDExOjpDb252ZXJ0U3RlbmNpbE9wKGRzU3RhdGUuc3RlbmNpbEZhaWwpOwotICAgICAgICBk
c0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxEZXB0aEZhaWxPcCA9IGdsX2QzZDExOjpDb252ZXJ0U3Rl
bmNpbE9wKGRzU3RhdGUuc3RlbmNpbFBhc3NEZXB0aEZhaWwpOwotICAgICAgICBkc0Rlc2MuRnJv
bnRGYWNlLlN0ZW5jaWxQYXNzT3AgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxPcChkc1N0YXRl
LnN0ZW5jaWxQYXNzRGVwdGhQYXNzKTsKLSAgICAgICAgZHNEZXNjLkZyb250RmFjZS5TdGVuY2ls
RnVuYyA9IGdsX2QzZDExOjpDb252ZXJ0Q29tcGFyaXNvbihkc1N0YXRlLnN0ZW5jaWxGdW5jKTsK
LSAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxGYWlsT3AgPSBnbF9kM2QxMTo6Q29udmVy
dFN0ZW5jaWxPcChkc1N0YXRlLnN0ZW5jaWxCYWNrRmFpbCk7Ci0gICAgICAgIGRzRGVzYy5CYWNr
RmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgPSBnbF9kM2QxMTo6Q29udmVydFN0ZW5jaWxPcChkc1N0
YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoRmFpbCk7Ci0gICAgICAgIGRzRGVzYy5CYWNrRmFjZS5T
dGVuY2lsUGFzc09wID0gZ2xfZDNkMTE6OkNvbnZlcnRTdGVuY2lsT3AoZHNTdGF0ZS5zdGVuY2ls
QmFja1Bhc3NEZXB0aFBhc3MpOwotICAgICAgICBkc0Rlc2MuQmFja0ZhY2UuU3RlbmNpbEZ1bmMg
PSBnbF9kM2QxMTo6Q29udmVydENvbXBhcmlzb24oZHNTdGF0ZS5zdGVuY2lsQmFja0Z1bmMpOwor
ICAgIEQzRDExX0RFUFRIX1NURU5DSUxfREVTQyBkc0Rlc2MgICAgID0gezB9OworICAgIGRzRGVz
Yy5EZXB0aEVuYWJsZSAgICAgICAgICAgICAgICAgID0gZ2xTdGF0ZS5kZXB0aFRlc3QgPyBUUlVF
IDogRkFMU0U7CisgICAgZHNEZXNjLkRlcHRoV3JpdGVNYXNrICAgICAgICAgICAgICAgPSBDb252
ZXJ0RGVwdGhNYXNrKGdsU3RhdGUuZGVwdGhNYXNrKTsKKyAgICBkc0Rlc2MuRGVwdGhGdW5jICAg
ICAgICAgICAgICAgICAgICA9IENvbnZlcnRDb21wYXJpc29uKGdsU3RhdGUuZGVwdGhGdW5jKTsK
KyAgICBkc0Rlc2MuU3RlbmNpbEVuYWJsZSAgICAgICAgICAgICAgICA9IGdsU3RhdGUuc3RlbmNp
bFRlc3QgPyBUUlVFIDogRkFMU0U7CisgICAgZHNEZXNjLlN0ZW5jaWxSZWFkTWFzayAgICAgICAg
ICAgICAgPSBDb252ZXJ0U3RlbmNpbE1hc2soZ2xTdGF0ZS5zdGVuY2lsTWFzayk7CisgICAgZHNE
ZXNjLlN0ZW5jaWxXcml0ZU1hc2sgICAgICAgICAgICAgPSBDb252ZXJ0U3RlbmNpbE1hc2soZ2xT
dGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKKyAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGYWls
T3AgICAgICA9IENvbnZlcnRTdGVuY2lsT3AoZ2xTdGF0ZS5zdGVuY2lsRmFpbCk7CisgICAgZHNE
ZXNjLkZyb250RmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgPSBDb252ZXJ0U3RlbmNpbE9wKGdsU3Rh
dGUuc3RlbmNpbFBhc3NEZXB0aEZhaWwpOworICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbFBh
c3NPcCAgICAgID0gQ29udmVydFN0ZW5jaWxPcChnbFN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhQYXNz
KTsKKyAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGdW5jICAgICAgICA9IENvbnZlcnRDb21w
YXJpc29uKGdsU3RhdGUuc3RlbmNpbEZ1bmMpOworICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2ls
RmFpbE9wICAgICAgID0gQ29udmVydFN0ZW5jaWxPcChnbFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCk7
CisgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxEZXB0aEZhaWxPcCAgPSBDb252ZXJ0U3RlbmNp
bE9wKGdsU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsKTsKKyAgICBkc0Rlc2MuQmFja0Zh
Y2UuU3RlbmNpbFBhc3NPcCAgICAgICA9IENvbnZlcnRTdGVuY2lsT3AoZ2xTdGF0ZS5zdGVuY2ls
QmFja1Bhc3NEZXB0aFBhc3MpOworICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRnVuYyAgICAg
ICAgID0gQ29udmVydENvbXBhcmlzb24oZ2xTdGF0ZS5zdGVuY2lsQmFja0Z1bmMpOwogCi0gICAg
ICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICpkeDExRGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxM
OwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN0
YXRlKCZkc0Rlc2MsICZkeDExRGVwdGhTdGVuY2lsU3RhdGUpOwotICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkgfHwgIWR4MTFEZXB0aFN0ZW5jaWxTdGF0ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiVW5hYmxlIHRvIGNyZWF0ZSBh
IElEM0QxMURlcHRoU3RlbmNpbFN0YXRlLCBIUkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7Ci0gICAg
ICAgIH0KKyAgICBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSAqZHgxMURlcHRoU3RlbmNpbFN0YXRl
ID0gTlVMTDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNp
bFN0YXRlKCZkc0Rlc2MsICZkeDExRGVwdGhTdGVuY2lsU3RhdGUpOworICAgIGlmIChGQUlMRUQo
cmVzdWx0KSB8fCAhZHgxMURlcHRoU3RlbmNpbFN0YXRlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICJV
bmFibGUgdG8gY3JlYXRlIGEgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUsIEhSRVNVTFQ6IDB4JVgu
IiwgcmVzdWx0KTsKKyAgICB9CiAKLSAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuaW5z
ZXJ0KHN0ZDo6bWFrZV9wYWlyKGRzU3RhdGUsIHN0ZDo6bWFrZV9wYWlyKGR4MTFEZXB0aFN0ZW5j
aWxTdGF0ZSwgbUNvdW50ZXIrKykpKTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5pbnNl
cnQoCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGdsU3RhdGUsIHN0ZDo6bWFrZV9wYWlyKGR4MTFE
ZXB0aFN0ZW5jaWxTdGF0ZSwgbUNvdW50ZXIrKykpKTsKIAotICAgICAgICAqb3V0RFNTdGF0ZSA9
IGR4MTFEZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7Ci0gICAgfQorICAgICpvdXREU1N0YXRlID0gZHgxMURlcHRoU3RlbmNpbFN0YXRlOwor
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCiBzdGQ6OnNpemVfdCBSZW5k
ZXJTdGF0ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNh
bXBsZXJTdGF0ZSkKQEAgLTQyNSw3ICs0NDUsNyBAQAogICAgICAgICBzYW1wbGVyRGVzYy5NaW5M
T0QgPSBzYW1wbGVyU3RhdGUubWluTG9kOwogICAgICAgICBzYW1wbGVyRGVzYy5NYXhMT0QgPSBz
YW1wbGVyU3RhdGUubWF4TG9kOwogCi0gICAgICAgIGlmIChtUmVuZGVyZXItPmdldEZlYXR1cmVM
ZXZlbCgpIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMykKKyAgICAgICAgaWYgKG1SZW5kZXJlci0+
Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRVUkVfTEVW
RUxfOV8zKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IG1heExPRCBpcyBu
ZWFybHkgRkxUX01BWCAoMTAwMC4wZiBpcyB0aGUgZGVmYXVsdCksIHNpbmNlIDlfMyBkb2Vzbid0
IHN1cHBvcnQgYW55dGhpbmcgb3RoZXIgdGhhbiBGTFRfTUFYLgogICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IEZlYXR1cmUgTGV2ZWwgOV8qIG9ubHkgc3VwcG9ydHMgR0wgRVMgMi4wLCBzbyB0aGUg
Y29uc3VtZXIgb2YgQU5HTEUgY2FuJ3QgbW9kaWZ5IHRoZSBNYXggTE9EIHRoZW1zZWx2ZXMuCklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1JlbmRlclN0YXRlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDEwIEBACiAKICAgICBnbDo6RXJyb3IgZ2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0
ZSwgSUQzRDExQmxlbmRTdGF0ZSAqKm91dEJsZW5kU3RhdGUpOwogICAgIGdsOjpFcnJvciBnZXRS
YXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUsIGJv
b2wgc2Npc3NvckVuYWJsZWQsIElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSAqKm91dFJhc3Rlcml6ZXJT
dGF0ZSk7Ci0gICAgZ2w6OkVycm9yIGdldERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0
aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSwgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKipvdXREU1N0
YXRlKTsKKyAgICBnbDo6RXJyb3IgZ2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRo
U3RlbmNpbFN0YXRlICZkc1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGRpc2FibGVEZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBkaXNhYmxlU3RlbmNpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKipvdXREU1N0YXRlKTsKICAgICBnbDo6RXJyb3IgZ2V0
U2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwgSUQzRDEx
U2FtcGxlclN0YXRlICoqb3V0U2FtcGxlclN0YXRlKTsKIAogICBwcml2YXRlOgpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5k
ZXJUYXJnZXQxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAJKHJldmlzaW9u
IDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDEwICs4
LDEyIEBACiAvLyByZXRhaW5lZCBieSBSZW5kZXJidWZmZXJzLgogCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIgogCiBuYW1lc3BhY2UgcngK
IHsKQEAgLTE3NiwxOSArMTc4LDU1IEBACiAgICAgcmV0dXJuIEQzRDExQ2FsY1N1YnJlc291cmNl
KG1pcFNsaWNlLCBhcnJheVNsaWNlLCBtaXBMZXZlbHMpOwogfQogCi1UZXh0dXJlUmVuZGVyVGFy
Z2V0MTE6OlRleHR1cmVSZW5kZXJUYXJnZXQxMShJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYs
IElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo
LCBHTHNpemVpIHNhbXBsZXMpCi0gICAgOiBtV2lkdGgod2lkdGgpLAorUmVuZGVyVGFyZ2V0MTE6
OlJlbmRlclRhcmdldDExKGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCkgOiBtQU5HTEVG
b3JtYXQoYW5nbGVGb3JtYXQpCit7Cit9CisKK1JlbmRlclRhcmdldDExOjp+UmVuZGVyVGFyZ2V0
MTEoKQoreworICAgIHNpZ25hbERpcnR5KCk7Cit9CisKK3ZvaWQgUmVuZGVyVGFyZ2V0MTE6OmFk
ZERpcnR5Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKQorewor
ICAgIG1EaXJ0eUNhbGxiYWNrcy5hZGQoY2FsbGJhY2spOworfQorCit2b2lkIFJlbmRlclRhcmdl
dDExOjpyZW1vdmVEaXJ0eUNhbGxiYWNrKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpjYWxs
YmFjaykKK3sKKyAgICBtRGlydHlDYWxsYmFja3MucmVtb3ZlKGNhbGxiYWNrKTsKK30KKwordm9p
ZCBSZW5kZXJUYXJnZXQxMTo6c2lnbmFsRGlydHkoKQoreworICAgIG1EaXJ0eUNhbGxiYWNrcy5z
aWduYWwoKTsKKworICAgIC8vIENsZWFyIHRoZSBzaWduYWwgbGlzdC4gV2UgY2FuJ3QgZG8gdGhp
cyBpbiB0aGUgY2FsbGJhY2sgYmVjYXVzZSBpdCBtdXRhdGVzIHRoZSBpdGVyYXRvci4KKyAgICBt
RGlydHlDYWxsYmFja3MuY2xlYXIoKTsKK30KKworVGV4dHVyZVJlbmRlclRhcmdldDExOjpUZXh0
dXJlUmVuZGVyVGFyZ2V0MTEoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcnR2LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291
cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJsaXRTUlYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkM2QxMTo6
QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzKQorICAgIDogUmVuZGVy
VGFyZ2V0MTEoYW5nbGVGb3JtYXQpLAorICAgICAgbVdpZHRoKHdpZHRoKSwKICAgICAgIG1IZWln
aHQoaGVpZ2h0KSwKICAgICAgIG1EZXB0aChkZXB0aCksCiAgICAgICBtSW50ZXJuYWxGb3JtYXQo
aW50ZXJuYWxGb3JtYXQpLAotICAgICAgbURYR0lGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiks
CiAgICAgICBtU2FtcGxlcyhzYW1wbGVzKSwKICAgICAgIG1TdWJyZXNvdXJjZUluZGV4KDApLAog
ICAgICAgbVRleHR1cmUocmVzb3VyY2UpLAogICAgICAgbVJlbmRlclRhcmdldChydHYpLAogICAg
ICAgbURlcHRoU3RlbmNpbChOVUxMKSwKLSAgICAgIG1TaGFkZXJSZXNvdXJjZShzcnYpCisgICAg
ICBtU2hhZGVyUmVzb3VyY2Uoc3J2KSwKKyAgICAgIG1CbGl0U2hhZGVyUmVzb3VyY2UoYmxpdFNS
VikKIHsKICAgICBpZiAobVRleHR1cmUpCiAgICAgewpAQCAtMjA1LDI5ICsyNDMsMzkgQEAKICAg
ICAgICAgbVNoYWRlclJlc291cmNlLT5BZGRSZWYoKTsKICAgICB9CiAKKyAgICBpZiAobUJsaXRT
aGFkZXJSZXNvdXJjZSkKKyAgICB7CisgICAgICAgIG1CbGl0U2hhZGVyUmVzb3VyY2UtPkFkZFJl
ZigpOworICAgIH0KKwogICAgIGlmIChtUmVuZGVyVGFyZ2V0ICYmIG1UZXh0dXJlKQogICAgIHsK
ICAgICAgICAgbVN1YnJlc291cmNlSW5kZXggPSBnZXRSVFZTdWJyZXNvdXJjZUluZGV4KG1UZXh0
dXJlLCBtUmVuZGVyVGFyZ2V0KTsKLQotICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdf
REVTQyBkZXNjOwotICAgICAgICBtUmVuZGVyVGFyZ2V0LT5HZXREZXNjKCZkZXNjKTsKLSAgICAg
ICAgbURYR0lGb3JtYXQgPSBkZXNjLkZvcm1hdDsKICAgICB9CisgICAgQVNTRVJUKG1BTkdMRUZv
cm1hdCAhPSBkM2QxMTo6QU5HTEVfRk9STUFUX05PTkUgfHwgbVdpZHRoID09IDAgfHwgbUhlaWdo
dCA9PSAwKTsKIH0KIAotVGV4dHVyZVJlbmRlclRhcmdldDExOjpUZXh0dXJlUmVuZGVyVGFyZ2V0
MTEoSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2LCBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2Us
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xzaXplaSBzYW1wbGVzKQotICAgIDog
bVdpZHRoKHdpZHRoKSwKK1RleHR1cmVSZW5kZXJUYXJnZXQxMTo6VGV4dHVyZVJlbmRlclRhcmdl
dDExKElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqc3J2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2Ft
cGxlcykKKyAgICA6IFJlbmRlclRhcmdldDExKGFuZ2xlRm9ybWF0KSwKKyAgICAgIG1XaWR0aCh3
aWR0aCksCiAgICAgICBtSGVpZ2h0KGhlaWdodCksCiAgICAgICBtRGVwdGgoZGVwdGgpLAogICAg
ICAgbUludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSwKLSAgICAgIG1EWEdJRm9ybWF0KERY
R0lfRk9STUFUX1VOS05PV04pLAogICAgICAgbVNhbXBsZXMoc2FtcGxlcyksCiAgICAgICBtU3Vi
cmVzb3VyY2VJbmRleCgwKSwKICAgICAgIG1UZXh0dXJlKHJlc291cmNlKSwKICAgICAgIG1SZW5k
ZXJUYXJnZXQoTlVMTCksCiAgICAgICBtRGVwdGhTdGVuY2lsKGRzdiksCi0gICAgICBtU2hhZGVy
UmVzb3VyY2Uoc3J2KQorICAgICAgbVNoYWRlclJlc291cmNlKHNydiksCisgICAgICBtQmxpdFNo
YWRlclJlc291cmNlKG51bGxwdHIpCiB7CiAgICAgaWYgKG1UZXh0dXJlKQogICAgIHsKQEAgLTI0
NywxMSArMjk1LDggQEAKICAgICBpZiAobURlcHRoU3RlbmNpbCAmJiBtVGV4dHVyZSkKICAgICB7
CiAgICAgICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gZ2V0RFNWU3VicmVzb3VyY2VJbmRleChtVGV4
dHVyZSwgbURlcHRoU3RlbmNpbCk7Ci0KLSAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVX
X0RFU0MgZGVzYzsKLSAgICAgICAgbURlcHRoU3RlbmNpbC0+R2V0RGVzYygmZGVzYyk7Ci0gICAg
ICAgIG1EWEdJRm9ybWF0ID0gZGVzYy5Gb3JtYXQ7CiAgICAgfQorICAgIEFTU0VSVChtQU5HTEVG
b3JtYXQgIT0gZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FIHx8IG1XaWR0aCA9PSAwIHx8IG1IZWln
aHQgPT0gMCk7CiB9CiAKIFRleHR1cmVSZW5kZXJUYXJnZXQxMTo6flRleHR1cmVSZW5kZXJUYXJn
ZXQxMSgpCkBAIC0yNjAsNiArMzA1LDcgQEAKICAgICBTYWZlUmVsZWFzZShtUmVuZGVyVGFyZ2V0
KTsKICAgICBTYWZlUmVsZWFzZShtRGVwdGhTdGVuY2lsKTsKICAgICBTYWZlUmVsZWFzZShtU2hh
ZGVyUmVzb3VyY2UpOworICAgIFNhZmVSZWxlYXNlKG1CbGl0U2hhZGVyUmVzb3VyY2UpOwogfQog
CiBJRDNEMTFSZXNvdXJjZSAqVGV4dHVyZVJlbmRlclRhcmdldDExOjpnZXRUZXh0dXJlKCkgY29u
c3QKQEAgLTI4Miw2ICszMjgsMTEgQEAKICAgICByZXR1cm4gbVNoYWRlclJlc291cmNlOwogfQog
CitJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKlRleHR1cmVSZW5kZXJUYXJnZXQxMTo6Z2V0Qmxp
dFNoYWRlclJlc291cmNlVmlldygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1CbGl0U2hhZGVyUmVz
b3VyY2U7Cit9CisKIEdMc2l6ZWkgVGV4dHVyZVJlbmRlclRhcmdldDExOjpnZXRXaWR0aCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1XaWR0aDsKQEAgLTMxMiwxNyArMzYzLDE5IEBACiAgICAgcmV0
dXJuIG1TdWJyZXNvdXJjZUluZGV4OwogfQogCi1EWEdJX0ZPUk1BVCBUZXh0dXJlUmVuZGVyVGFy
Z2V0MTE6OmdldERYR0lGb3JtYXQoKSBjb25zdAotewotICAgIHJldHVybiBtRFhHSUZvcm1hdDsK
LX0KLQotU3VyZmFjZVJlbmRlclRhcmdldDExOjpTdXJmYWNlUmVuZGVyVGFyZ2V0MTEoU3dhcENo
YWluMTEgKnN3YXBDaGFpbiwgUmVuZGVyZXIxMSAqcmVuZGVyZXIsIGJvb2wgZGVwdGgpCi0gICAg
OiBtU3dhcENoYWluKHN3YXBDaGFpbiksCitTdXJmYWNlUmVuZGVyVGFyZ2V0MTE6OlN1cmZhY2VS
ZW5kZXJUYXJnZXQxMShTd2FwQ2hhaW4xMSAqc3dhcENoYWluLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXIxMSAqcmVuZGVyZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlcHRoKQorICAgIDog
UmVuZGVyVGFyZ2V0MTEoZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05FKSwgIC8vIGZvcm1hdCB3aWxs
IGJlIGRldGVybWluZWQgaW4gY29uc3RydWN0b3IgYm9keQorICAgICAgbVN3YXBDaGFpbihzd2Fw
Q2hhaW4pLAogICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKICAgICAgIG1EZXB0aChkZXB0aCkK
IHsKICAgICBBU1NFUlQobVN3YXBDaGFpbik7CisKKyAgICBtQU5HTEVGb3JtYXQgPSBkM2QxMTo6
R2V0VGV4dHVyZUZvcm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXRJbnRlcm5hbCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVuZGVyZXItPmdldFJl
bmRlcmVyMTFEZXZpY2VDYXBzKCkpCisgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXRTZXQt
PmZvcm1hdDsKIH0KIAogU3VyZmFjZVJlbmRlclRhcmdldDExOjp+U3VyZmFjZVJlbmRlclRhcmdl
dDExKCkKQEAgLTM0Niw5ICszOTksMTQgQEAKIAogR0xlbnVtIFN1cmZhY2VSZW5kZXJUYXJnZXQx
MTo6Z2V0SW50ZXJuYWxGb3JtYXQoKSBjb25zdAogewotICAgIHJldHVybiAobURlcHRoID8gbVN3
YXBDaGFpbi0+R2V0RGVwdGhCdWZmZXJJbnRlcm5hbEZvcm1hdCgpIDogbVN3YXBDaGFpbi0+R2V0
QmFja0J1ZmZlckludGVybmFsRm9ybWF0KCkpOworICAgIHJldHVybiBnZXRJbnRlcm5hbEZvcm1h
dEludGVybmFsKCk7CiB9CiAKK0dMZW51bSBTdXJmYWNlUmVuZGVyVGFyZ2V0MTE6OmdldEludGVy
bmFsRm9ybWF0SW50ZXJuYWwoKSBjb25zdAoreworICAgIHJldHVybiAobURlcHRoID8gbVN3YXBD
aGFpbi0+R2V0RGVwdGhCdWZmZXJJbnRlcm5hbEZvcm1hdCgpIDogbVN3YXBDaGFpbi0+R2V0UmVu
ZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKSk7Cit9CisKIEdMc2l6ZWkgU3VyZmFjZVJlbmRlclRh
cmdldDExOjpnZXRTYW1wbGVzKCkgY29uc3QKIHsKICAgICAvLyBPdXIgRUdMIHN1cmZhY2VzIGRv
IG5vdCBzdXBwb3J0IG11bHRpc2FtcGxpbmcuCkBAIC0zNzIsMTcgKzQzMCwxOSBAQAogCiBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKlN1cmZhY2VSZW5kZXJUYXJnZXQxMTo6Z2V0U2hhZGVyUmVz
b3VyY2VWaWV3KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKG1EZXB0aCA/IG1Td2FwQ2hhaW4tPmdl
dERlcHRoU3RlbmNpbFNoYWRlclJlc291cmNlKCkgOiBtU3dhcENoYWluLT5nZXRSZW5kZXJUYXJn
ZXRTaGFkZXJSZXNvdXJjZSgpKTsKKyAgICByZXR1cm4gKG1EZXB0aCA/IG1Td2FwQ2hhaW4tPmdl
dERlcHRoU3RlbmNpbFNoYWRlclJlc291cmNlKCkKKyAgICAgICAgICAgICAgICAgICA6IG1Td2Fw
Q2hhaW4tPmdldFJlbmRlclRhcmdldFNoYWRlclJlc291cmNlKCkpOwogfQogCi11bnNpZ25lZCBp
bnQgU3VyZmFjZVJlbmRlclRhcmdldDExOjpnZXRTdWJyZXNvdXJjZUluZGV4KCkgY29uc3QKK0lE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqU3VyZmFjZVJlbmRlclRhcmdldDExOjpnZXRCbGl0U2hh
ZGVyUmVzb3VyY2VWaWV3KCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICAvLyBUaGUgU3Vy
ZmFjZVJlbmRlclRhcmdldFZpZXcgZm9ybWF0IHNob3VsZCBhbHdheXMgYmUgc3VjaCB0aGF0IHRo
ZSBub3JtYWwgU1JWIHdvcmtzIGZvciBibGl0cy4KKyAgICByZXR1cm4gZ2V0U2hhZGVyUmVzb3Vy
Y2VWaWV3KCk7CiB9CiAKLURYR0lfRk9STUFUIFN1cmZhY2VSZW5kZXJUYXJnZXQxMTo6Z2V0RFhH
SUZvcm1hdCgpIGNvbnN0Cit1bnNpZ25lZCBpbnQgU3VyZmFjZVJlbmRlclRhcmdldDExOjpnZXRT
dWJyZXNvdXJjZUluZGV4KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZDNkMTE6OkdldFRleHR1cmVG
b3JtYXRJbmZvKGdldEludGVybmFsRm9ybWF0KCksIG1SZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVs
KCkpLnRleEZvcm1hdDsKKyAgICByZXR1cm4gMDsKIH0KIAogfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQx
MS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9S
ZW5kZXJUYXJnZXQxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSwxMCBAQAogI2RlZmlu
ZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfUkVOREVSVEFSR0VUMTFfSF8KIAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJUYXJnZXREM0QuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKIAorI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCisK
IG5hbWVzcGFjZSByeAogewogY2xhc3MgU3dhcENoYWluMTE7CkBAIC0yMCwzMCArMjMsNTEgQEAK
IGNsYXNzIFJlbmRlclRhcmdldDExIDogcHVibGljIFJlbmRlclRhcmdldEQzRAogewogICBwdWJs
aWM6Ci0gICAgUmVuZGVyVGFyZ2V0MTEoKSB7IH0KLSAgICB2aXJ0dWFsIH5SZW5kZXJUYXJnZXQx
MSgpIHsgfQorICAgIFJlbmRlclRhcmdldDExKGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1h
dCk7CisgICAgdmlydHVhbCB+UmVuZGVyVGFyZ2V0MTEoKTsKIAogICAgIHZpcnR1YWwgSUQzRDEx
UmVzb3VyY2UgKmdldFRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJRDNEMTFSZW5k
ZXJUYXJnZXRWaWV3ICpnZXRSZW5kZXJUYXJnZXRWaWV3KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZ2V0RGVwdGhTdGVuY2lsVmlldygpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U2hhZGVyUmVzb3Vy
Y2VWaWV3KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpnZXRCbGl0U2hhZGVyUmVzb3VyY2VWaWV3KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB1
bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1
YWwgRFhHSV9GT1JNQVQgZ2V0RFhHSUZvcm1hdCgpIGNvbnN0ID0gMDsKKyAgICB2b2lkIGFkZERp
cnR5Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKTsKKyAgICB2
b2lkIHJlbW92ZURpcnR5Q2FsbGJhY2soY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxi
YWNrKTsKKyAgICB2b2lkIHNpZ25hbERpcnR5KCkgb3ZlcnJpZGU7CiAKLSAgcHJpdmF0ZToKLSAg
ICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOworICAgIGQzZDExOjpBTkdMRUZvcm1h
dCBnZXRBTkdMRUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1BTkdMRUZvcm1hdDsgfQorCisgIHBy
b3RlY3RlZDoKKyAgICBOb3RpZmljYXRpb25TZXQgbURpcnR5Q2FsbGJhY2tzOworICAgIGQzZDEx
OjpBTkdMRUZvcm1hdCBtQU5HTEVGb3JtYXQ7CiB9OwogCiBjbGFzcyBUZXh0dXJlUmVuZGVyVGFy
Z2V0MTEgOiBwdWJsaWMgUmVuZGVyVGFyZ2V0MTEKIHsKICAgcHVibGljOgogICAgIC8vIFRleHR1
cmVSZW5kZXJUYXJnZXQxMSB0YWtlcyBvd25lcnNoaXAgb2YgYW55IEQzRDExIHJlc291cmNlcyBp
dCBpcyBnaXZlbiBhbmQgd2lsbCBBZGRSZWYgdGhlbQotICAgIFRleHR1cmVSZW5kZXJUYXJnZXQx
MShJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwg
SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLCBHTHNpemVpIHNhbXBsZXMpOwotICAgIFRleHR1cmVSZW5kZXJUYXJnZXQx
MShJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwg
SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBH
THNpemVpIGRlcHRoLCBHTHNpemVpIHNhbXBsZXMpOworICAgIFRleHR1cmVSZW5kZXJUYXJnZXQx
MShJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IElEM0QxMVJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSViwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBkM2Qx
MTo6QU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMpOworICAgIFRleHR1cmVSZW5kZXJUYXJnZXQxMShJ
RDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgIElE
M0QxMVJlc291cmNlICpyZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xF
Rm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzYW1wbGVzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlUmVuZGVyVGFyZ2V0MTEo
KTsKIAogICAgIEdMc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKQEAgLTU2LDE3ICs4
MCwxNSBAQAogICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmdldFJlbmRlclRhcmdldFZpZXco
KSBjb25zdCBvdmVycmlkZTsKICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpnZXREZXB0aFN0
ZW5jaWxWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpnZXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJRDNEMTFTaGFk
ZXJSZXNvdXJjZVZpZXcgKmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHVuc2lnbmVkIGludCBnZXRTdWJyZXNvdXJjZUluZGV4KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICBEWEdJX0ZPUk1BVCBnZXREWEdJRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
ICAgcHJpdmF0ZToKICAgICBHTHNpemVpIG1XaWR0aDsKICAgICBHTHNpemVpIG1IZWlnaHQ7CiAg
ICAgR0xzaXplaSBtRGVwdGg7CiAgICAgR0xlbnVtIG1JbnRlcm5hbEZvcm1hdDsKLSAgICBEWEdJ
X0ZPUk1BVCBtRFhHSUZvcm1hdDsKICAgICBHTHNpemVpIG1TYW1wbGVzOwogCiAgICAgdW5zaWdu
ZWQgaW50IG1TdWJyZXNvdXJjZUluZGV4OwpAQCAtNzQsNiArOTYsMTAgQEAKICAgICBJRDNEMTFS
ZW5kZXJUYXJnZXRWaWV3ICptUmVuZGVyVGFyZ2V0OwogICAgIElEM0QxMURlcHRoU3RlbmNpbFZp
ZXcgKm1EZXB0aFN0ZW5jaWw7CiAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICptU2hhZGVy
UmVzb3VyY2U7CisKKyAgICAvLyBTaGFkZXIgcmVzb3VyY2UgdmlldyB0byB1c2Ugd2l0aCBpbnRl
cm5hbCBibGl0IHNoYWRlcnMuIE5vdCBzZXQgZm9yIGRlcHRoL3N0ZW5jaWwgcmVuZGVyCisgICAg
Ly8gdGFyZ2V0cy4KKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKm1CbGl0U2hhZGVyUmVz
b3VyY2U7CiB9OwogCiBjbGFzcyBTdXJmYWNlUmVuZGVyVGFyZ2V0MTEgOiBwdWJsaWMgUmVuZGVy
VGFyZ2V0MTEKQEAgLTkyLDEyICsxMTgsMTUgQEAKICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICpnZXRSZW5kZXJUYXJnZXRWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSUQzRDExRGVwdGhT
dGVuY2lsVmlldyAqZ2V0RGVwdGhTdGVuY2lsVmlldygpIGNvbnN0IG92ZXJyaWRlOwogICAgIElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqZ2V0U2hhZGVyUmVzb3VyY2VWaWV3KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpnZXRCbGl0U2hhZGVyUmVzb3Vy
Y2VWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3Vy
Y2VJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgRFhHSV9GT1JNQVQgZ2V0RFhHSUZvcm1h
dCgpIGNvbnN0IG92ZXJyaWRlOworICBwcml2YXRlOgorICAgIC8vIFRoZSBpbnRlcm5hbCB2ZXJz
aW9ucyBvZiB0aGUgZnVuY3Rpb25zIGFyZSBuZWVkZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBzYWZl
bHkgY2FsbGVkCisgICAgLy8gZnJvbSB0aGUgY29uc3RydWN0b3IuCisgICAgR0xlbnVtIGdldElu
dGVybmFsRm9ybWF0SW50ZXJuYWwoKSBjb25zdDsKIAotICBwcml2YXRlOgogICAgIFN3YXBDaGFp
bjExICptU3dhcENoYWluOwogICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKICAgICBib29sIG1E
ZXB0aDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw1
MCArOCw2MyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRl
cmVyMTEuaCIKIAorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KICNpbmNsdWRlIDxzc3RyZWFtPgot
I2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlIDx2ZXJzaW9uaGVscGVycy5oPgogCisj
aW5jbHVkZSAiY29tbW9uL3Rscy5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKLSNp
bmNsdWRlICJjb21tb24vdGxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxz
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9oaXN0b2dyYW1f
bWFjcm9zLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL1N0YXRlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL2Zvcm1hdHV0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvaGlzdG9ncmFtX21hY3Jv
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oIgotI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmgiCi0jaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1NoYWRlckQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNl
RDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVHJhbnNmb3JtRmVlZGJhY2tEM0QuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0ltYWdlMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
SW5kZXhCdWZmZXIxMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Q
aXhlbFRyYW5zZmVyMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
UXVlcnkxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJl
cjExX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRl
clRhcmdldDExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1NoYWRl
ckV4ZWN1dGFibGUxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dHJlYW0xMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hh
aW4xMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zv
cm1hdF90YWJsZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0
dXJlU3RvcmFnZTExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Ry
aW0xMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJh
eTExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZl
cjExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxz
MTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91
dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9EZXZpY2VEM0QuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L1JlbmRlcmJ1ZmZlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFk
ZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1RyYW5zZm9ybUZlZWRiYWNrRDNELmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvU3RhdGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCiAjaW5jbHVkZSAi
dGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIKIAorLy8gSW5jbHVkZSB0aGUg
RDNEOSBkZWJ1ZyBhbm5vdGF0b3IgaGVhZGVyIGZvciB1c2UgYnkgdGhlIGRlc2t0b3AgRDNEMTEg
cmVuZGVyZXIKKy8vIGJlY2F1c2UgdGhlIEQzRDExIGludGVyZmFjZSBtZXRob2QgSUQzRFVzZXJE
ZWZpbmVkQW5ub3RhdGlvbjo6R2V0U3RhdHVzCisvLyBkb2Vzbid0IHdvcmsgd2l0aCB0aGUgR3Jh
cGhpY3MgRGlhZ25vc3RpY3MgdG9vbHMgaW4gVmlzdWFsIFN0dWRpbyAyMDEzLgorI2lmZGVmIEFO
R0xFX0VOQUJMRV9EM0Q5CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRGVi
dWdBbm5vdGF0b3I5LmgiCisjZW5kaWYKKwogLy8gRW5hYmxlIEFOR0xFX1NLSVBfRFhHSV8xXzJf
Q0hFQ0sgaWYgdGhlcmUgaXMgbm90IGEgcG9zc2liaWxpdHkgb2YgdXNpbmcgY3Jvc3MtcHJvY2Vz
cwogLy8gSFdORHMgb3IgdGhlIFdpbmRvd3MgNyBQbGF0Zm9ybSBVcGRhdGUgKEtCMjY3MDgzOCkg
aXMgZXhwZWN0ZWQgdG8gYmUgaW5zdGFsbGVkLgogI2lmbmRlZiBBTkdMRV9TS0lQX0RYR0lfMV8y
X0NIRUNLCkBAIC03NSwxMTMgKzg4LDMxMSBAQAogICAgIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
X1ZURl9TTTQgPSAxNgogfTsKIAotLy8gZGlydHlQb2ludGVyIGlzIGEgc3BlY2lhbCB2YWx1ZSB0
aGF0IHdpbGwgbWFrZSB0aGUgY29tcGFyaXNvbiB3aXRoIGFueSB2YWxpZCBwb2ludGVyIGZhaWwg
YW5kIGZvcmNlIHRoZSByZW5kZXJlciB0byByZS1hcHBseSB0aGUgc3RhdGUuCi1zdGF0aWMgY29u
c3QgdWludHB0cl90IERpcnR5UG9pbnRlciA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oLTEpOwor
dm9pZCBDYWxjdWxhdGVDb25zdGFudEJ1ZmZlclBhcmFtcyhHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgc2l6ZSwgVUlOVCAqb3V0Rmlyc3RDb25zdGFudCwgVUlOVCAqb3V0TnVtQ29uc3RhbnRz
KQoreworICAgIC8vIFRoZSBvZmZzZXQgbXVzdCBiZSBhbGlnbmVkIHRvIDI1NiBieXRlcyAoc2hv
dWxkIGhhdmUgYmVlbiBlbmZvcmNlZCBieSBnbEJpbmRCdWZmZXJSYW5nZSkuCisgICAgQVNTRVJU
KG9mZnNldCAlIDI1NiA9PSAwKTsKIAotc3RhdGljIGJvb2wgSW1hZ2VJbmRleENvbmZsaWN0c1dp
dGhTUlYoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBEM0QxMV9TSEFERVJfUkVTT1VSQ0Vf
VklFV19ERVNDIGRlc2MpCisgICAgLy8gZmlyc3RDb25zdGFudCBhbmQgbnVtQ29uc3RhbnRzIGFy
ZSBleHByZXNzZWQgaW4gY29uc3RhbnRzIG9mIDE2LWJ5dGVzLiBGdXJ0aGVybW9yZSB0aGV5IG11
c3QgYmUgYSBtdWx0aXBsZSBvZiAxNiBjb25zdGFudHMuCisgICAgKm91dEZpcnN0Q29uc3RhbnQg
PSBzdGF0aWNfY2FzdDxVSU5UPihvZmZzZXQgLyAxNik7CisKKyAgICAvLyBUaGUgR0wgc2l6ZSBp
cyBub3QgcmVxdWlyZWQgdG8gYmUgYWxpZ25lZCB0byBhIDI1NiBieXRlcyBib3VuZGFyeS4KKyAg
ICAvLyBSb3VuZCB0aGUgc2l6ZSB1cCB0byBhIDI1NiBieXRlcyBib3VuZGFyeSB0aGVuIGV4cHJl
c3MgdGhlIHJlc3VsdHMgaW4gY29uc3RhbnRzIG9mIDE2LWJ5dGVzLgorICAgICpvdXROdW1Db25z
dGFudHMgPSBzdGF0aWNfY2FzdDxVSU5UPihyeDo6cm91bmRVcChzaXplLCBzdGF0aWNfY2FzdDxH
THNpemVpcHRyPigyNTYpKSAvIDE2KTsKKworICAgIC8vIFNpbmNlIHRoZSBzaXplIGlzIHJvdW5k
ZWQgdXAsIGZpcnN0Q29uc3RhbnQgKyBudW1Db25zdGFudHMgbWF5IGJlIGJpZ2dlciB0aGFuIHRo
ZSBhY3R1YWwgc2l6ZSBvZiB0aGUgYnVmZmVyLgorICAgIC8vIFRoaXMgYmVoYXZpb3VyIGlzIGV4
cGxpY3RseSBhbGxvd2VkIGFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiBvbiBJRDNEMTFE
ZXZpY2VDb250ZXh0MTo6UFNTZXRDb25zdGFudEJ1ZmZlcnMxCisgICAgLy8gaHR0cHM6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvaGg0MDQ2NDklMjh2
PXZzLjg1JTI5LmFzcHgKK30KKworZW51bSBBTkdMRUZlYXR1cmVMZXZlbAogewotICAgIHVuc2ln
bmVkIG1pcExldmVsID0gaW5kZXgubWlwSW5kZXg7Ci0gICAgdW5zaWduZWQgbGF5ZXJJbmRleCA9
IGluZGV4LmxheWVySW5kZXg7Ci0gICAgR0xlbnVtIHR5cGUgPSBpbmRleC50eXBlOworICAgIEFO
R0xFX0ZFQVRVUkVfTEVWRUxfSU5WQUxJRCwKKyAgICBBTkdMRV9GRUFUVVJFX0xFVkVMXzlfMywK
KyAgICBBTkdMRV9GRUFUVVJFX0xFVkVMXzEwXzAsCisgICAgQU5HTEVfRkVBVFVSRV9MRVZFTF8x
MF8xLAorICAgIEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTFfMCwKKyAgICBBTkdMRV9GRUFUVVJFX0xF
VkVMXzExXzEsCisgICAgTlVNX0FOR0xFX0ZFQVRVUkVfTEVWRUxTCit9OwogCi0gICAgc3dpdGNo
IChkZXNjLlZpZXdEaW1lbnNpb24pCitBTkdMRUZlYXR1cmVMZXZlbCBHZXRBTkdMRUZlYXR1cmVM
ZXZlbChEM0RfRkVBVFVSRV9MRVZFTCBkM2RGZWF0dXJlTGV2ZWwpCit7CisgICAgc3dpdGNoIChk
M2RGZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RF
WFRVUkUyRDoKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbWF4U3J2TWlwID0gZGVz
Yy5UZXh0dXJlMkQuTWlwTGV2ZWxzICsgZGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwOwot
ICAgICAgICAgICAgbWF4U3J2TWlwID0gKGRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9PSAtMSkg
PyBJTlRfTUFYIDogbWF4U3J2TWlwOworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6
IHJldHVybiBBTkdMRV9GRUFUVVJFX0xFVkVMXzlfMzsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMDogcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTBfMDsKKyAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTBfMTsK
KyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEFOR0xFX0ZFQVRVUkVf
TEVWRUxfMTFfMDsKKyAgICAgIC8vIE5vdGU6IHdlIGRvbid0IGV2ZXIgcmVxdWVzdCBhIDExXzEg
ZGV2aWNlLCBiZWNhdXNlIHRoaXMgZ2l2ZXMKKyAgICAgIC8vIGFuIEVfSU5WQUxJREFSRyBlcnJv
ciBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgcGxhdGZvcm0gdXBkYXRlLgorICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOiByZXR1cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF8x
MV8xOworICAgICAgZGVmYXVsdDogcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfSU5WQUxJRDsK
KyAgICB9Cit9CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIG1pcE1pbiA9IGluZGV4Lm1pcEluZGV4
OwotICAgICAgICAgICAgdW5zaWduZWQgbWlwTWF4ID0gKGxheWVySW5kZXggPT0gLTEpID8gSU5U
X01BWCA6IGxheWVySW5kZXg7Cit2b2lkIFNldExpbmVMb29wSW5kaWNlcyhHTHVpbnQgKmRlc3Qs
IHNpemVfdCBjb3VudCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKysp
CisgICAgeworICAgICAgICBkZXN0W2ldID0gc3RhdGljX2Nhc3Q8R0x1aW50PihpKTsKKyAgICB9
CisgICAgZGVzdFtjb3VudF0gPSAwOworfQogCi0gICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBH
TF9URVhUVVJFXzJEICYmIFJhbmdlVUkobWlwTWluLCBtaXBNYXgpLmludGVyc2VjdHMoUmFuZ2VV
SShkZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAsIG1heFNydk1pcCkpOwotICAgICAgICB9
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3ZvaWQgQ29weUxpbmVMb29wSW5kaWNlcyhjb25zdCBH
THZvaWQgKmluZGljZXMsIEdMdWludCAqZGVzdCwgc2l6ZV90IGNvdW50KQoreworICAgIGNvbnN0
IFQgKnNyY1B0ciA9IHN0YXRpY19jYXN0PGNvbnN0IFQgKj4oaW5kaWNlcyk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgIHsKKyAgICAgICAgZGVzdFtpXSA9IHN0
YXRpY19jYXN0PEdMdWludD4oc3JjUHRyW2ldKTsKKyAgICB9CisgICAgZGVzdFtjb3VudF0gPSBz
dGF0aWNfY2FzdDxHTHVpbnQ+KHNyY1B0clswXSk7Cit9CiAKLSAgICAgIGNhc2UgRDNEMTFfU1JW
X0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWToKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWdu
ZWQgbWF4U3J2TWlwID0gZGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgKyBkZXNjLlRleHR1
cmUyREFycmF5Lk1vc3REZXRhaWxlZE1pcDsKLSAgICAgICAgICAgIG1heFNydk1pcCA9IChkZXNj
LlRleHR1cmUyREFycmF5Lk1pcExldmVscyA9PSAtMSkgPyBJTlRfTUFYIDogbWF4U3J2TWlwOwor
dm9pZCBTZXRUcmlhbmdsZUZhbkluZGljZXMoR0x1aW50ICpkZXN0UHRyLCBzaXplX3QgbnVtVHJp
cykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVRyaXM7IGkrKykKKyAgICB7Cisg
ICAgICAgIGRlc3RQdHJbaSAqIDMgKyAwXSA9IDA7CisgICAgICAgIGRlc3RQdHJbaSAqIDMgKyAx
XSA9IHN0YXRpY19jYXN0PEdMdWludD4oaSkgKyAxOworICAgICAgICBkZXN0UHRyW2kgKiAzICsg
Ml0gPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGkpICsgMjsKKyAgICB9Cit9CiAKLSAgICAgICAgICAg
IHVuc2lnbmVkIG1heFNsaWNlID0gZGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2Ug
KyBkZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
dm9pZCBDb3B5TGluZUxvb3BJbmRpY2VzV2l0aFJlc3RhcnQoY29uc3QgR0x2b2lkICppbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGluZGV4VHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gKmJ1ZmZl
ck91dCkKK3sKKyAgICBHTHVpbnQgcmVzdGFydEluZGV4ICAgID0gZ2w6OkdldFByaW1pdGl2ZVJl
c3RhcnRJbmRleChpbmRleFR5cGUpOworICAgIEdMdWludCBkM2RSZXN0YXJ0SW5kZXggPSBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGQzZDExOjpHZXRQcmltaXRpdmVSZXN0YXJ0SW5kZXgoKSk7CisgICAg
Y29uc3QgVCAqc3JjUHRyICAgICAgICA9IHN0YXRpY19jYXN0PGNvbnN0IFQgKj4oaW5kaWNlcyk7
CisgICAgT3B0aW9uYWw8R0x1aW50PiBjdXJyZW50TG9vcFN0YXJ0OwogCi0gICAgICAgICAgICAv
LyBDdWJlIG1hcHMgY2FuIGJlIG1hcHBlZCB0byBUZXh0dXJlMkRBcnJheSBTUlZzCi0gICAgICAg
ICAgICByZXR1cm4gKHR5cGUgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSB8fCBnbDo6SXNDdWJlTWFw
VGV4dHVyZVRhcmdldCh0eXBlKSkgJiYKLSAgICAgICAgICAgICAgICAgICBkZXNjLlRleHR1cmUy
REFycmF5Lk1vc3REZXRhaWxlZE1pcCA8PSBtaXBMZXZlbCAmJiBtaXBMZXZlbCA8IG1heFNydk1p
cCAmJgotICAgICAgICAgICAgICAgICAgIGRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNs
aWNlIDw9IGxheWVySW5kZXggJiYgbGF5ZXJJbmRleCA8IG1heFNsaWNlOwotICAgICAgICB9Cisg
ICAgYnVmZmVyT3V0LT5jbGVhcigpOwogCi0gICAgICBjYXNlIEQzRDExX1NSVl9ESU1FTlNJT05f
VEVYVFVSRUNVQkU6CisgICAgZm9yIChzaXplX3QgaW5kZXhJZHggPSAwOyBpbmRleElkeCA8IGNv
dW50OyArK2luZGV4SWR4KQorICAgIHsKKyAgICAgICAgR0x1aW50IHZhbHVlID0gc3RhdGljX2Nh
c3Q8R0x1aW50PihzcmNQdHJbaW5kZXhJZHhdKTsKKworICAgICAgICBpZiAodmFsdWUgPT0gcmVz
dGFydEluZGV4KQogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBtYXhTcnZNaXAgPSBk
ZXNjLlRleHR1cmVDdWJlLk1pcExldmVscyArIGRlc2MuVGV4dHVyZUN1YmUuTW9zdERldGFpbGVk
TWlwOwotICAgICAgICAgICAgbWF4U3J2TWlwID0gKGRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxz
ID09IC0xKSA/IElOVF9NQVggOiBtYXhTcnZNaXA7Ci0KLSAgICAgICAgICAgIHJldHVybiBnbDo6
SXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0eXBlKSAmJgotICAgICAgICAgICAgICAgICAgIGRlc2Mu
VGV4dHVyZUN1YmUuTW9zdERldGFpbGVkTWlwIDw9IG1pcExldmVsICYmIG1pcExldmVsIDwgbWF4
U3J2TWlwOworICAgICAgICAgICAgaWYgKGN1cnJlbnRMb29wU3RhcnQudmFsaWQoKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXJPdXQtPnB1c2hfYmFjayhjdXJyZW50TG9v
cFN0YXJ0LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJ1ZmZlck91dC0+cHVzaF9iYWNrKGQz
ZFJlc3RhcnRJbmRleCk7CisgICAgICAgICAgICAgICAgY3VycmVudExvb3BTdGFydC5yZXNldCgp
OworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgYnVmZmVyT3V0LT5wdXNoX2JhY2sodmFsdWUpOworICAgICAgICAgICAgaWYgKCFj
dXJyZW50TG9vcFN0YXJ0LnZhbGlkKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y3VycmVudExvb3BTdGFydCA9IHZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQogCi0gICAgICBjYXNlIEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEOgorICAgIGlmIChj
dXJyZW50TG9vcFN0YXJ0LnZhbGlkKCkpCisgICAgeworICAgICAgICBidWZmZXJPdXQtPnB1c2hf
YmFjayhjdXJyZW50TG9vcFN0YXJ0LnZhbHVlKCkpOworICAgIH0KK30KKwordm9pZCBHZXRMaW5l
TG9vcEluZGljZXMoY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGluZGV4VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlUHJpbWl0aXZlUmVzdGFydEZpeGVk
SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICpidWZm
ZXJPdXQpCit7CisgICAgaWYgKGluZGV4VHlwZSAhPSBHTF9OT05FICYmIHVzZVByaW1pdGl2ZVJl
c3RhcnRGaXhlZEluZGV4KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChpbmRleFR5cGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIG1heFNydk1pcCA9IGRlc2MuVGV4dHVyZTNELk1p
cExldmVscyArIGRlc2MuVGV4dHVyZTNELk1vc3REZXRhaWxlZE1pcDsKLSAgICAgICAgICAgIG1h
eFNydk1pcCA9IChkZXNjLlRleHR1cmUzRC5NaXBMZXZlbHMgPT0gLTEpID8gSU5UX01BWCA6IG1h
eFNydk1pcDsKLQotICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gR0xfVEVYVFVSRV8zRCAmJgot
ICAgICAgICAgICAgICAgICAgIGRlc2MuVGV4dHVyZTNELk1vc3REZXRhaWxlZE1pcCA8PSBtaXBM
ZXZlbCAmJiBtaXBMZXZlbCA8IG1heFNydk1pcDsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgICAgICBDb3B5TGluZUxvb3BJbmRpY2VzV2l0aFJlc3RhcnQ8
R0x1Ynl0ZT4oaW5kaWNlcywgY291bnQsIGluZGV4VHlwZSwgYnVmZmVyT3V0KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAg
ICAgICAgICAgICAgQ29weUxpbmVMb29wSW5kaWNlc1dpdGhSZXN0YXJ0PEdMdXNob3J0PihpbmRp
Y2VzLCBjb3VudCwgaW5kZXhUeXBlLCBidWZmZXJPdXQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgQ29w
eUxpbmVMb29wSW5kaWNlc1dpdGhSZXN0YXJ0PEdMdWludD4oaW5kaWNlcywgY291bnQsIGluZGV4
VHlwZSwgYnVmZmVyT3V0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgLy8gV2Ugb25seSBoYW5k
bGUgdGhlIGNhc2VzIGNvcnJlc3BvbmRpbmcgdG8gdmFsaWQgaW1hZ2UgaW5kZXhlcwotICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgLy8gRm9yIG5vbi1wcmltaXRpdmUtcmVzdGFydCBkcmF3cywgdGhlIGluZGV4
IGNvdW50IGlzIHN0YXRpYy4KKyAgICBidWZmZXJPdXQtPnJlc2l6ZShzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvdW50KSArIDEpOworCisgICAgc3dpdGNoIChpbmRleFR5cGUpCisgICAgeworICAgICAg
ICAvLyBOb24taW5kZXhlZCBkcmF3CisgICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgICAg
IFNldExpbmVMb29wSW5kaWNlcygmKCpidWZmZXJPdXQpWzBdLCBjb3VudCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgQ29w
eUxpbmVMb29wSW5kaWNlczxHTHVieXRlPihpbmRpY2VzLCAmKCpidWZmZXJPdXQpWzBdLCBjb3Vu
dCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoK
KyAgICAgICAgICAgIENvcHlMaW5lTG9vcEluZGljZXM8R0x1c2hvcnQ+KGluZGljZXMsICYoKmJ1
ZmZlck91dClbMF0sIGNvdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX0lOVDoKKyAgICAgICAgICAgIENvcHlMaW5lTG9vcEluZGljZXM8R0x1aW50Pihp
bmRpY2VzLCAmKCpidWZmZXJPdXQpWzBdLCBjb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CiB9CiAKLS8vIERvZXMgKm5vdCogaW5jcmVtZW50IHRoZSByZXNvdXJjZSBy
ZWYgY291bnQhIQotSUQzRDExUmVzb3VyY2UgKkdldFZpZXdSZXNvdXJjZShJRDNEMTFWaWV3ICp2
aWV3KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIENvcHlUcmlhbmdsZUZhbkluZGljZXMo
Y29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHVpbnQgKmRlc3RQdHIsIHNpemVfdCBudW1UcmlzKQog
ewotICAgIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSA9IE5VTEw7Ci0gICAgQVNTRVJUKHZpZXcp
OwotICAgIHZpZXctPkdldFJlc291cmNlKCZyZXNvdXJjZSk7Ci0gICAgcmVzb3VyY2UtPlJlbGVh
c2UoKTsKLSAgICByZXR1cm4gcmVzb3VyY2U7CisgICAgY29uc3QgVCAqc3JjUHRyID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgVCAqPihpbmRpY2VzKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtVHJpczsgaSsrKQorICAgIHsKKyAgICAgICAgZGVzdFB0cltpICogMyArIDBdID0gc3RhdGlj
X2Nhc3Q8R0x1aW50PihzcmNQdHJbMF0pOworICAgICAgICBkZXN0UHRyW2kgKiAzICsgMV0gPSBz
dGF0aWNfY2FzdDxHTHVpbnQ+KHNyY1B0cltpICsgMV0pOworICAgICAgICBkZXN0UHRyW2kgKiAz
ICsgMl0gPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHNyY1B0cltpICsgMl0pOworICAgIH0KIH0KIAot
dm9pZCBDYWxjdWxhdGVDb25zdGFudEJ1ZmZlclBhcmFtcyhHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgc2l6ZSwgVUlOVCAqb3V0Rmlyc3RDb25zdGFudCwgVUlOVCAqb3V0TnVtQ29uc3RhbnRz
KQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit2b2lkIENvcHlUcmlhbmdsZUZhbkluZGljZXNXaXRo
UmVzdGFydChjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaW5kZXhDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbmRleFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICpidWZmZXJPdXQpCiB7Ci0gICAg
Ly8gVGhlIG9mZnNldCBtdXN0IGJlIGFsaWduZWQgdG8gMjU2IGJ5dGVzIChzaG91bGQgaGF2ZSBi
ZWVuIGVuZm9yY2VkIGJ5IGdsQmluZEJ1ZmZlclJhbmdlKS4KLSAgICBBU1NFUlQob2Zmc2V0ICUg
MjU2ID09IDApOworICAgIEdMdWludCByZXN0YXJ0SW5kZXggICAgPSBnbDo6R2V0UHJpbWl0aXZl
UmVzdGFydEluZGV4KGluZGV4VHlwZSk7CisgICAgR0x1aW50IGQzZFJlc3RhcnRJbmRleCA9IGds
OjpHZXRQcmltaXRpdmVSZXN0YXJ0SW5kZXgoR0xfVU5TSUdORURfSU5UKTsKKyAgICBjb25zdCBU
ICpzcmNQdHIgICAgICAgID0gc3RhdGljX2Nhc3Q8Y29uc3QgVCAqPihpbmRpY2VzKTsKKyAgICBP
cHRpb25hbDxHTHVpbnQ+IHZlcnRleEE7CisgICAgT3B0aW9uYWw8R0x1aW50PiB2ZXJ0ZXhCOwog
Ci0gICAgLy8gZmlyc3RDb25zdGFudCBhbmQgbnVtQ29uc3RhbnRzIGFyZSBleHByZXNzZWQgaW4g
Y29uc3RhbnRzIG9mIDE2LWJ5dGVzLiBGdXJ0aGVybW9yZSB0aGV5IG11c3QgYmUgYSBtdWx0aXBs
ZSBvZiAxNiBjb25zdGFudHMuCi0gICAgKm91dEZpcnN0Q29uc3RhbnQgPSBzdGF0aWNfY2FzdDxV
SU5UPihvZmZzZXQgLyAxNik7CisgICAgYnVmZmVyT3V0LT5jbGVhcigpOwogCi0gICAgLy8gVGhl
IEdMIHNpemUgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGFsaWduZWQgdG8gYSAyNTYgYnl0ZXMgYm91
bmRhcnkuCi0gICAgLy8gUm91bmQgdGhlIHNpemUgdXAgdG8gYSAyNTYgYnl0ZXMgYm91bmRhcnkg
dGhlbiBleHByZXNzIHRoZSByZXN1bHRzIGluIGNvbnN0YW50cyBvZiAxNi1ieXRlcy4KLSAgICAq
b3V0TnVtQ29uc3RhbnRzID0gc3RhdGljX2Nhc3Q8VUlOVD4ocng6OnJvdW5kVXAoc2l6ZSwgc3Rh
dGljX2Nhc3Q8R0xzaXplaXB0cj4oMjU2KSkgLyAxNik7CisgICAgZm9yIChzaXplX3QgaW5kZXhJ
ZHggPSAwOyBpbmRleElkeCA8IGluZGV4Q291bnQ7ICsraW5kZXhJZHgpCisgICAgeworICAgICAg
ICBHTHVpbnQgdmFsdWUgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHNyY1B0cltpbmRleElkeF0pOwog
Ci0gICAgLy8gU2luY2UgdGhlIHNpemUgaXMgcm91bmRlZCB1cCwgZmlyc3RDb25zdGFudCArIG51
bUNvbnN0YW50cyBtYXkgYmUgYmlnZ2VyIHRoYW4gdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBidWZm
ZXIuCi0gICAgLy8gVGhpcyBiZWhhdmlvdXIgaXMgZXhwbGljdGx5IGFsbG93ZWQgYWNjb3JkaW5n
IHRvIHRoZSBkb2N1bWVudGF0aW9uIG9uIElEM0QxMURldmljZUNvbnRleHQxOjpQU1NldENvbnN0
YW50QnVmZmVyczEKLSAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJy
YXJ5L3dpbmRvd3MvZGVza3RvcC9oaDQwNDY0OSUyOHY9dnMuODUlMjkuYXNweAorICAgICAgICBp
ZiAodmFsdWUgPT0gcmVzdGFydEluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBidWZmZXJP
dXQtPnB1c2hfYmFjayhkM2RSZXN0YXJ0SW5kZXgpOworICAgICAgICAgICAgdmVydGV4QS5yZXNl
dCgpOworICAgICAgICAgICAgdmVydGV4Qi5yZXNldCgpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF2ZXJ0ZXhBLnZhbGlkKCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmVydGV4QSA9IHZhbHVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZSBpZiAoIXZlcnRleEIudmFsaWQoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2ZXJ0ZXhCID0gdmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmZmVyT3V0LT5wdXNoX2Jh
Y2sodmVydGV4QS52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBidWZmZXJPdXQtPnB1c2hfYmFj
ayh2ZXJ0ZXhCLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGJ1ZmZlck91dC0+cHVzaF9iYWNr
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICB2ZXJ0ZXhCID0gdmFsdWU7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CiB9CiAKLWVnbDo6RXJyb3IgR2VuZXJhdGVEM0QxMUNyZWF0ZURl
dmljZUVycihIUkVTVUxUIGVycm9yQ29kZSkKK3ZvaWQgR2V0VHJpRmFuSW5kaWNlcyhjb25zdCBH
THZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGluZGV4VHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1c2VQcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICpidWZmZXJPdXQpCiB7Ci0gICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgZXJyb3JDb2RlLCAiQ291bGQgbm90IGNyZWF0ZSBE
M0QxMSBkZXZpY2UuIik7CisgICAgaWYgKGluZGV4VHlwZSAhPSBHTF9OT05FICYmIHVzZVByaW1p
dGl2ZVJlc3RhcnRGaXhlZEluZGV4KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChpbmRleFR5cGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAg
ICAgICAgICBDb3B5VHJpYW5nbGVGYW5JbmRpY2VzV2l0aFJlc3RhcnQ8R0x1Ynl0ZT4oaW5kaWNl
cywgY291bnQsIGluZGV4VHlwZSwgYnVmZmVyT3V0KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgQ29w
eVRyaWFuZ2xlRmFuSW5kaWNlc1dpdGhSZXN0YXJ0PEdMdXNob3J0PihpbmRpY2VzLCBjb3VudCwg
aW5kZXhUeXBlLCBidWZmZXJPdXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICAgICAgQ29weVRyaWFuZ2xlRmFu
SW5kaWNlc1dpdGhSZXN0YXJ0PEdMdWludD4oaW5kaWNlcywgY291bnQsIGluZGV4VHlwZSwgYnVm
ZmVyT3V0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRm9yIG5vbi1wcmltaXRp
dmUtcmVzdGFydCBkcmF3cywgdGhlIGluZGV4IGNvdW50IGlzIHN0YXRpYy4KKyAgICBHTHVpbnQg
bnVtVHJpcyA9IGNvdW50IC0gMjsKKyAgICBidWZmZXJPdXQtPnJlc2l6ZShudW1UcmlzICogMyk7
CisKKyAgICBzd2l0Y2ggKGluZGV4VHlwZSkKKyAgICB7CisgICAgICAgIC8vIE5vbi1pbmRleGVk
IGRyYXcKKyAgICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICAgICAgU2V0VHJpYW5nbGVGYW5J
bmRpY2VzKCYoKmJ1ZmZlck91dClbMF0sIG51bVRyaXMpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIENvcHlUcmlhbmdsZUZh
bkluZGljZXM8R0x1Ynl0ZT4oaW5kaWNlcywgJigqYnVmZmVyT3V0KVswXSwgbnVtVHJpcyk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAgICAg
ICAgICAgIENvcHlUcmlhbmdsZUZhbkluZGljZXM8R0x1c2hvcnQ+KGluZGljZXMsICYoKmJ1ZmZl
ck91dClbMF0sIG51bVRyaXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UOgorICAgICAgICAgICAgQ29weVRyaWFuZ2xlRmFuSW5kaWNlczxHTHVpbnQ+
KGluZGljZXMsICYoKmJ1ZmZlck91dClbMF0sIG51bVRyaXMpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQogfQogCitpbnQgR2V0V3JhcEJpdHMoR0xlbnVtIHdyYXApCit7Cisg
ICAgc3dpdGNoICh3cmFwKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DTEFNUF9UT19FREdFOgor
ICAgICAgICAgICAgcmV0dXJuIDB4MTsKKyAgICAgICAgY2FzZSBHTF9SRVBFQVQ6CisgICAgICAg
ICAgICByZXR1cm4gMHgyOworICAgICAgICBjYXNlIEdMX01JUlJPUkVEX1JFUEVBVDoKKyAgICAg
ICAgICAgIHJldHVybiAweDM7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfQogCit9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCisKIFJlbmRlcmVyMTE6OlJlbmRlcmVyMTEoZWdsOjpEaXNwbGF5ICpkaXNw
bGF5KQogICAgIDogUmVuZGVyZXJEM0QoZGlzcGxheSksCiAgICAgICBtU3RhdGVDYWNoZSh0aGlz
KSwKKyAgICAgIG1TdGF0ZU1hbmFnZXIodGhpcyksCisgICAgICBtTGFzdEhpc3RvZ3JhbVVwZGF0
ZVRpbWUoQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkpLAogICAgICAgbURlYnVnKG51bGxwdHIpCiB7Ci0gICAgLy8gSW5pdGlhbGl6ZSBnbG9iYWwg
YW5ub3RhdG9yCi0gICAgZ2w6OkluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKCZtQW5ub3RhdG9y
KTsKLQogICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IE5VTEw7CiAgICAgbUluZGV4RGF0YU1hbmFn
ZXIgPSBOVUxMOwogCiAgICAgbUxpbmVMb29wSUIgPSBOVUxMOwogICAgIG1UcmlhbmdsZUZhbklC
ID0gTlVMTDsKKyAgICBtQXBwbGllZElCQ2hhbmdlZCA9IGZhbHNlOwogCiAgICAgbUJsaXQgPSBO
VUxMOwogICAgIG1QaXhlbFRyYW5zZmVyID0gTlVMTDsKQEAgLTE5MiwxMCArNDAzLDE4IEBACiAK
ICAgICBtU3luY1F1ZXJ5ID0gTlVMTDsKIAotICAgIG1TdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zm
c2V0cyA9IGZhbHNlOworICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NsZWFyVmll
dyA9IGZhbHNlOworICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVm
ZmVyT2Zmc2V0cyA9IGZhbHNlOworICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0RY
R0kxXzIgPSBmYWxzZTsKKyAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNlI1c3VwcG9ydCA9
IDA7CisgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCA9IDA7CisgICAg
bVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1RzVSNUExc3VwcG9ydCA9IDA7CiAKICAgICBtRDNkMTFN
b2R1bGUgPSBOVUxMOwogICAgIG1EeGdpTW9kdWxlID0gTlVMTDsKKyAgICBtRENvbXBNb2R1bGUg
ICAgICAgICAgPSBOVUxMOworICAgIG1DcmVhdGVkV2l0aERldmljZUVYVCA9IGZhbHNlOworICAg
IG1FR0xEZXZpY2UgICAgICAgICAgICA9IG51bGxwdHI7CiAKICAgICBtRGV2aWNlID0gTlVMTDsK
ICAgICBtRGV2aWNlQ29udGV4dCA9IE5VTEw7CkBAIC0yMTIsNjYgKzQzMSw4OCBAQAogCiAgICAg
bUFwcGxpZWROdW1YRkJCaW5kaW5ncyA9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOwogCi0gICAg
Y29uc3QgYXV0byAmYXR0cmlidXRlcyA9IG1EaXNwbGF5LT5nZXRBdHRyaWJ1dGVNYXAoKTsKKyAg
ICBaZXJvTWVtb3J5KCZtQWRhcHRlckRlc2NyaXB0aW9uLCBzaXplb2YobUFkYXB0ZXJEZXNjcmlw
dGlvbikpOwogCi0gICAgRUdMaW50IHJlcXVlc3RlZE1ham9yVmVyc2lvbiA9IGF0dHJpYnV0ZXMu
Z2V0KEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwgRUdMX0RPTlRf
Q0FSRSk7Ci0gICAgRUdMaW50IHJlcXVlc3RlZE1pbm9yVmVyc2lvbiA9IGF0dHJpYnV0ZXMuZ2V0
KEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSwgRUdMX0RPTlRfQ0FS
RSk7CisgICAgaWYgKG1EaXNwbGF5LT5nZXRQbGF0Zm9ybSgpID09IEVHTF9QTEFURk9STV9BTkdM
RV9BTkdMRSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmF0dHJpYnV0ZXMgPSBtRGlzcGxh
eS0+Z2V0QXR0cmlidXRlTWFwKCk7CiAKLSAgICBpZiAocmVxdWVzdGVkTWFqb3JWZXJzaW9uID09
IEVHTF9ET05UX0NBUkUgfHwgcmVxdWVzdGVkTWFqb3JWZXJzaW9uID49IDExKQotICAgIHsKLSAg
ICAgICAgaWYgKHJlcXVlc3RlZE1pbm9yVmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFIHx8IHJlcXVl
c3RlZE1pbm9yVmVyc2lvbiA+PSAwKQorICAgICAgICBFR0xpbnQgcmVxdWVzdGVkTWFqb3JWZXJz
aW9uID0gc3RhdGljX2Nhc3Q8RUdMaW50PigKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuZ2V0KEVH
TF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwgRUdMX0RPTlRfQ0FSRSkp
OworICAgICAgICBFR0xpbnQgcmVxdWVzdGVkTWlub3JWZXJzaW9uID0gc3RhdGljX2Nhc3Q8RUdM
aW50PigKKyAgICAgICAgICAgIGF0dHJpYnV0ZXMuZ2V0KEVHTF9QTEFURk9STV9BTkdMRV9NQVhf
VkVSU0lPTl9NSU5PUl9BTkdMRSwgRUdMX0RPTlRfQ0FSRSkpOworCisgICAgICAgIGlmIChyZXF1
ZXN0ZWRNYWpvclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSB8fCByZXF1ZXN0ZWRNYWpvclZlcnNp
b24gPj0gMTEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1BdmFpbGFibGVGZWF0dXJlTGV2ZWxz
LnB1c2hfYmFjayhEM0RfRkVBVFVSRV9MRVZFTF8xMV8wKTsKKyAgICAgICAgICAgIGlmIChyZXF1
ZXN0ZWRNaW5vclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSB8fCByZXF1ZXN0ZWRNaW5vclZlcnNp
b24gPj0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtQXZhaWxhYmxlRmVhdHVy
ZUxldmVscy5wdXNoX2JhY2soRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMCk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICB9CiAKLSAgICBpZiAocmVxdWVzdGVkTWFqb3JWZXJzaW9uID09IEVH
TF9ET05UX0NBUkUgfHwgcmVxdWVzdGVkTWFqb3JWZXJzaW9uID49IDEwKQotICAgIHsKLSAgICAg
ICAgaWYgKHJlcXVlc3RlZE1pbm9yVmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFIHx8IHJlcXVlc3Rl
ZE1pbm9yVmVyc2lvbiA+PSAxKQorICAgICAgICBpZiAocmVxdWVzdGVkTWFqb3JWZXJzaW9uID09
IEVHTF9ET05UX0NBUkUgfHwgcmVxdWVzdGVkTWFqb3JWZXJzaW9uID49IDEwKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtQXZhaWxhYmxlRmVhdHVyZUxldmVscy5wdXNoX2JhY2soRDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMSk7CisgICAgICAgICAgICBpZiAocmVxdWVzdGVkTWlub3JWZXJzaW9uID09
IEVHTF9ET05UX0NBUkUgfHwgcmVxdWVzdGVkTWlub3JWZXJzaW9uID49IDEpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMucHVzaF9iYWNrKEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJl
cXVlc3RlZE1pbm9yVmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFIHx8IHJlcXVlc3RlZE1pbm9yVmVy
c2lvbiA+PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1BdmFpbGFibGVGZWF0
dXJlTGV2ZWxzLnB1c2hfYmFjayhEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBpZiAocmVxdWVzdGVkTWlub3JWZXJzaW9uID09IEVHTF9E
T05UX0NBUkUgfHwgcmVxdWVzdGVkTWlub3JWZXJzaW9uID49IDApCisKKyAgICAgICAgaWYgKHJl
cXVlc3RlZE1ham9yVmVyc2lvbiA9PSA5ICYmIHJlcXVlc3RlZE1pbm9yVmVyc2lvbiA9PSAzKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtQXZhaWxhYmxlRmVhdHVyZUxldmVscy5wdXNoX2JhY2so
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCk7CisgICAgICAgICAgICBtQXZhaWxhYmxlRmVhdHVyZUxl
dmVscy5wdXNoX2JhY2soRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKTsKICAgICAgICAgfQotICAgIH0K
IAotICAgIGlmIChyZXF1ZXN0ZWRNYWpvclZlcnNpb24gPT0gOSAmJiByZXF1ZXN0ZWRNaW5vclZl
cnNpb24gPT0gMykKLSAgICB7Ci0gICAgICAgIG1BdmFpbGFibGVGZWF0dXJlTGV2ZWxzLnB1c2hf
YmFjayhEM0RfRkVBVFVSRV9MRVZFTF85XzMpOwotICAgIH0KKyAgICAgICAgRUdMaW50IHJlcXVl
c3RlZERldmljZVR5cGUgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnV0ZXMuZ2V0KAorICAg
ICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFLCBFR0xfUExBVEZP
Uk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpKTsKKyAgICAgICAgc3dpdGNoIChy
ZXF1ZXN0ZWREZXZpY2VUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVHTF9QTEFU
Rk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRToKKyAgICAgICAgICAgICAgICBt
UmVxdWVzdGVkRHJpdmVyVHlwZSA9IEQzRF9EUklWRVJfVFlQRV9IQVJEV0FSRTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKIAotICAgIEVHTGludCByZXF1ZXN0ZWREZXZpY2VUeXBlID0gYXR0cmli
dXRlcy5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKLSAgICBzd2l0Y2ggKHJlcXVlc3RlZERldmlj
ZVR5cGUpCi0gICAgewotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVf
SEFSRFdBUkVfQU5HTEU6Ci0gICAgICAgIG1Ecml2ZXJUeXBlID0gRDNEX0RSSVZFUl9UWVBFX0hB
UkRXQVJFOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEU6CisgICAgICAgICAgICAgICAgbVJlcXVlc3RlZERy
aXZlclR5cGUgPSBEM0RfRFJJVkVSX1RZUEVfV0FSUDsKKyAgICAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRToK
LSAgICAgICAgbURyaXZlclR5cGUgPSBEM0RfRFJJVkVSX1RZUEVfV0FSUDsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZF
UkVOQ0VfQU5HTEU6CisgICAgICAgICAgICAgICAgbVJlcXVlc3RlZERyaXZlclR5cGUgPSBEM0Rf
RFJJVkVSX1RZUEVfUkVGRVJFTkNFOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBj
YXNlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZFUkVOQ0VfQU5HTEU6Ci0gICAg
ICAgIG1Ecml2ZXJUeXBlID0gRDNEX0RSSVZFUl9UWVBFX1JFRkVSRU5DRTsKLSAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxM
X0FOR0xFOgorICAgICAgICAgICAgICAgIG1SZXF1ZXN0ZWREcml2ZXJUeXBlID0gRDNEX0RSSVZF
Ul9UWVBFX05VTEw7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5HTEU6Ci0gICAgICAgIG1Ecml2ZXJUeXBl
ID0gRDNEX0RSSVZFUl9UWVBFX05VTEw7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CiAKLSAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNvbnN0IEVHTGVudW0g
cHJlc2VudFBhdGggPSBzdGF0aWNfY2FzdDxFR0xlbnVtPihhdHRyaWJ1dGVzLmdldCgKKyAgICAg
ICAgICAgIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0FOR0xFLCBFR0xfRVhQRVJJTUVO
VEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFKSk7CisgICAgICAgIG1QcmVzZW50UGF0aEZhc3RF
bmFibGVkID0gKHByZXNlbnRQYXRoID09IEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZB
U1RfQU5HTEUpOwogICAgIH0KKyAgICBlbHNlIGlmIChkaXNwbGF5LT5nZXRQbGF0Zm9ybSgpID09
IEVHTF9QTEFURk9STV9ERVZJQ0VfRVhUKQorICAgIHsKKyAgICAgICAgbUVHTERldmljZSA9IEdl
dEltcGxBczxEZXZpY2VEM0Q+KGRpc3BsYXktPmdldERldmljZSgpKTsKKyAgICAgICAgQVNTRVJU
KG1FR0xEZXZpY2UgIT0gbnVsbHB0cik7CisgICAgICAgIG1DcmVhdGVkV2l0aERldmljZUVYVCA9
IHRydWU7CisKKyAgICAgICAgLy8gQWxzbyBzZXQgRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFIHZh
cmlhYmxlcywgaW4gY2FzZSB0aGV5J3JlIHVzZWQgZWxzZXdoZXJlIGluIEFOR0xFCisgICAgICAg
IC8vIG1BdmFpbGFibGVGZWF0dXJlTGV2ZWxzIGRlZmF1bHRzIHRvIGVtcHR5CisgICAgICAgIG1S
ZXF1ZXN0ZWREcml2ZXJUeXBlID0gRDNEX0RSSVZFUl9UWVBFX1VOS05PV047CisgICAgICAgIG1Q
cmVzZW50UGF0aEZhc3RFbmFibGVkID0gZmFsc2U7CisgICAgfQorCisgICAgaW5pdGlhbGl6ZURl
YnVnQW5ub3RhdG9yKCk7CiB9CiAKIFJlbmRlcmVyMTE6On5SZW5kZXJlcjExKCkKIHsKICAgICBy
ZWxlYXNlKCk7Ci0KLSAgICBnbDo6VW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOwogfQog
CiAjaWZuZGVmIF9fZDNkMTFfMV9oX18KQEAgLTI4MCwxMTggKzUyMSw0OSBAQAogCiBlZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OmluaXRpYWxpemUoKQogewotICAgIGlmICghbUNvbXBpbGVyLmluaXRp
YWxpemUoKSkKKyAgICBIUkVTVUxUIHJlc3VsdCA9IFNfT0s7CisKKyAgICBlZ2w6OkVycm9yIGVy
cm9yID0gaW5pdGlhbGl6ZUQzRERldmljZSgpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9JTklUX0NPTVBJTEVSX0VSUk9SLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgY29tcGlsZXIuIik7Cisg
ICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKICNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVf
V0lORE9XU19TVE9SRSkKLSAgICBQRk5fRDNEMTFfQ1JFQVRFX0RFVklDRSBEM0QxMUNyZWF0ZURl
dmljZSA9IG51bGxwdHI7CisjaWYgIUFOR0xFX1NLSVBfRFhHSV8xXzJfQ0hFQ0sKICAgICB7Ci0g
ICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIlJlbmRlcmVyMTE6OmluaXRpYWxpemUg
KExvYWQgRExMcykiKTsKLSAgICAgICAgbUR4Z2lNb2R1bGUgPSBMb2FkTGlicmFyeShURVhUKCJk
eGdpLmRsbCIpKTsKLSAgICAgICAgbUQzZDExTW9kdWxlID0gTG9hZExpYnJhcnkoVEVYVCgiZDNk
MTEuZGxsIikpOwotCi0gICAgICAgIGlmIChtRDNkMTFNb2R1bGUgPT0gbnVsbHB0ciB8fCBtRHhn
aU1vZHVsZSA9PSBudWxscHRyKQorICAgICAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJS
ZW5kZXJlcjExOjppbml0aWFsaXplIChEWEdJQ2hlY2spIik7CisgICAgICAgIC8vIEluIG9yZGVy
IHRvIGNyZWF0ZSBhIHN3YXAgY2hhaW4gZm9yIGFuIEhXTkQgb3duZWQgYnkgYW5vdGhlciBwcm9j
ZXNzLCBEWEdJIDEuMiBpcyByZXF1aXJlZC4KKyAgICAgICAgLy8gVGhlIGVhc2llc3Qgd2F5IHRv
IGNoZWNrIGlzIHRvIHF1ZXJ5IGZvciBhIElEWEdJRGV2aWNlMi4KKyAgICAgICAgYm9vbCByZXF1
aXJlRFhHSTFfMiA9IGZhbHNlOworICAgICAgICBIV05EIGh3bmQgPSBXaW5kb3dGcm9tREMobURp
c3BsYXktPmdldE5hdGl2ZURpc3BsYXlJZCgpKTsKKyAgICAgICAgaWYgKGh3bmQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9JTklUX01JU1NJTkdfREVQLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBsb2FkIEQzRDExIG9yIERYR0kg
bGlicmFyeS4iKTsKKyAgICAgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJy
ZW50UHJvY2Vzc0lkKCk7CisgICAgICAgICAgICBEV09SRCB3bmRQcm9jZXNzSWQ7CisgICAgICAg
ICAgICBHZXRXaW5kb3dUaHJlYWRQcm9jZXNzSWQoaHduZCwgJnduZFByb2Nlc3NJZCk7CisgICAg
ICAgICAgICByZXF1aXJlRFhHSTFfMiA9IChjdXJyZW50UHJvY2Vzc0lkICE9IHduZFByb2Nlc3NJ
ZCk7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBjcmVhdGUgdGhlIEQzRDExIGRldmljZQotICAg
ICAgICBBU1NFUlQobURldmljZSA9PSBudWxscHRyKTsKLSAgICAgICAgRDNEMTFDcmVhdGVEZXZp
Y2UgPSByZWludGVycHJldF9jYXN0PFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFPihHZXRQcm9jQWRk
cmVzcyhtRDNkMTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmljZSIpKTsKLQotICAgICAgICBpZiAo
RDNEMTFDcmVhdGVEZXZpY2UgPT0gbnVsbHB0cikKKyAgICAgICAgZWxzZQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfSU5JVF9NSVNTSU5HX0RFUCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgcmV0cmlldmUgRDNEMTFDcmVhdGVEZXZp
Y2UgYWRkcmVzcy4iKTsKKyAgICAgICAgICAgIHJlcXVpcmVEWEdJMV8yID0gdHJ1ZTsKICAgICAg
ICAgfQotICAgIH0KLSNlbmRpZgogCi0gICAgSFJFU1VMVCByZXN1bHQgPSBTX09LOwotI2lmZGVm
IF9ERUJVRwotICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiRDNEMTFD
cmVhdGVEZXZpY2UgKERlYnVnKSIpOwotICAgICAgICByZXN1bHQgPSBEM0QxMUNyZWF0ZURldmlj
ZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRHJpdmVyVHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRDNEMTFfQ1JFQVRFX0RFVklDRV9ERUJVRywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuZGF0YSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXZhaWxhYmxlRmVhdHVyZUxl
dmVscy5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NE
S19WRVJTSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURldmljZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1GZWF0dXJlTGV2ZWwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRGV2aWNlQ29udGV4dCk7Ci0gICAgfQot
Ci0gICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgRVJS
KCJGYWlsZWQgY3JlYXRpbmcgRGVidWcgRDNEMTEgZGV2aWNlIC0gZmFsbGluZyBiYWNrIHRvIHJl
bGVhc2UgcnVudGltZS5cbiIpOwotICAgIH0KLQotICAgIGlmICghbURldmljZSB8fCBGQUlMRUQo
cmVzdWx0KSkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgZG91YmxlIGNyZWF0ZURldmljZUJlZ2lu
ID0gQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+Y3VycmVudFRpbWUoKTsKLQotICAgICAgICBUUkFD
RV9FVkVOVDAoImdwdS5hbmdsZSIsICJEM0QxMUNyZWF0ZURldmljZSIpOwotICAgICAgICByZXN1
bHQgPSBEM0QxMUNyZWF0ZURldmljZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtRHJpdmVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXZhaWxhYmxlRmVhdHVyZUxldmVs
cy5zaXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NES19W
RVJTSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURldmljZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1GZWF0dXJlTGV2ZWwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRGV2aWNlQ29udGV4dCk7Ci0KLSAgICAgICAg
Ly8gQ2xlYW51cCBkb25lIGJ5IGRlc3RydWN0b3IKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgICAgICBpZiAocmVxdWlyZURYR0kxXzIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8v
IE1vc3QgbGlrZWx5IGVycm9yIGNvZGVzLCBzZWUKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vbXNk
bi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDc2MDgyJTI4
dj12cy44NSUyOS5hc3B4Ci0gICAgICAgICAgICAvLyBBbmQgaHR0cHM6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmY0NzYxNzQodj12cy44NSkuYXNw
eAotICAgICAgICAgICAgc3dpdGNoIChyZXN1bHQpCisgICAgICAgICAgICBJRFhHSURldmljZTIg
KmR4Z2lEZXZpY2UyID0gTlVMTDsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1ZXJ5
SW50ZXJmYWNlKF9fdXVpZG9mKElEWEdJRGV2aWNlMiksICh2b2lkKiopJmR4Z2lEZXZpY2UyKTsK
KyAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgY2FzZSBFX0lOVkFMSURBUkc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRl
RDNEMTFDcmVhdGVEZXZpY2VFcnIoRDNEMTFfSU5JVF9DUkVBVEVERVZJQ0VfSU5WQUxJREFSRyk7
Ci0gICAgICAgICAgICAgIGNhc2UgRV9GQUlMOgotICAgICAgICAgICAgICAgIHJldHVybiBHZW5l
cmF0ZUQzRDExQ3JlYXRlRGV2aWNlRXJyKEQzRDExX0lOSVRfQ1JFQVRFREVWSUNFX0ZBSUwpOwot
ICAgICAgICAgICAgICBjYXNlIEVfTk9USU1QTDoKLSAgICAgICAgICAgICAgICByZXR1cm4gR2Vu
ZXJhdGVEM0QxMUNyZWF0ZURldmljZUVycihEM0QxMV9JTklUX0NSRUFURURFVklDRV9OT1RJTVBM
KTsKLSAgICAgICAgICAgICAgY2FzZSBFX09VVE9GTUVNT1JZOgotICAgICAgICAgICAgICAgIHJl
dHVybiBHZW5lcmF0ZUQzRDExQ3JlYXRlRGV2aWNlRXJyKEQzRDExX0lOSVRfQ1JFQVRFREVWSUNF
X09VVE9GTUVNT1JZKTsKLSAgICAgICAgICAgICAgY2FzZSBEWEdJX0VSUk9SX0lOVkFMSURfQ0FM
TDoKLSAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhdGVEM0QxMUNyZWF0ZURldmljZUVycihE
M0QxMV9JTklUX0NSRUFURURFVklDRV9JTlZBTElEQ0FMTCk7Ci0gICAgICAgICAgICAgIGNhc2Ug
RFhHSV9FUlJPUl9TREtfQ09NUE9ORU5UX01JU1NJTkc6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEdlbmVyYXRlRDNEMTFDcmVhdGVEZXZpY2VFcnIoRDNEMTFfSU5JVF9DUkVBVEVERVZJQ0VfQ09N
UE9ORU5UTUlTU0lORyk7Ci0gICAgICAgICAgICAgIGNhc2UgRFhHSV9FUlJPUl9XQVNfU1RJTExf
RFJBV0lORzoKLSAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhdGVEM0QxMUNyZWF0ZURldmlj
ZUVycihEM0QxMV9JTklUX0NSRUFURURFVklDRV9XQVNTVElMTERSQVdJTkcpOwotICAgICAgICAg
ICAgICBjYXNlIERYR0lfRVJST1JfTk9UX0NVUlJFTlRMWV9BVkFJTEFCTEU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEdlbmVyYXRlRDNEMTFDcmVhdGVEZXZpY2VFcnIoRDNEMTFfSU5JVF9DUkVB
VEVERVZJQ0VfTk9UQVZBSUxBQkxFKTsKLSAgICAgICAgICAgICAgY2FzZSBEWEdJX0VSUk9SX0RF
VklDRV9IVU5HOgotICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmF0ZUQzRDExQ3JlYXRlRGV2
aWNlRXJyKEQzRDExX0lOSVRfQ1JFQVRFREVWSUNFX0RFVklDRUhVTkcpOwotICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmF0ZUQzRDExQ3JlYXRlRGV2
aWNlRXJyKEQzRDExX0lOSVRfQ1JFQVRFREVWSUNFX0VSUk9SKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEQzRDExX0lOSVRfSU5DT01QQVRJQkxFX0RYR0ksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRYR0kgMS4yIHJlcXVpcmVkIHRvIHByZXNlbnQgdG8g
SFdORHMgb3duZWQgYnkgYW5vdGhlciBwcm9jZXNzLiIpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgU2FmZVJlbGVhc2UoZHhnaURldmljZTIpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCFtRGV2aWNlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gR2VuZXJhdGVEM0QxMUNy
ZWF0ZURldmljZUVycihEM0QxMV9JTklUX0NSRUFURURFVklDRV9OVUxMKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGRvdWJsZSBjcmVhdGVEZXZpY2VTZWMgPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgp
LT5jdXJyZW50VGltZSgpIC0gY3JlYXRlRGV2aWNlQmVnaW47Ci0gICAgICAgIGludCBjcmVhdGVE
ZXZpY2VNUyA9IHN0YXRpY19jYXN0PGludD4oY3JlYXRlRGV2aWNlU2VjICogMTAwMCk7Ci0gICAg
ICAgIEFOR0xFX0hJU1RPR1JBTV9USU1FUygiR1BVLkFOR0xFLkQzRDExQ3JlYXRlRGV2aWNlTVMi
LCBjcmVhdGVEZXZpY2VNUyk7CiAgICAgfQorI2VuZGlmCisjZW5kaWYKIAogICAgIHsKICAgICAg
ICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZSAoQ29t
UXVlcmllcykiKTsKQEAgLTQyNSwyOSArNTk3LDM4IEBACiAKICAgICAgICAgLy8gT24gRDNEX0ZF
QVRVUkVfTEVWRUxfOV8qLCBJRFhHSUFkYXB0ZXI6OkdldERlc2MgcmV0dXJucyAiU29mdHdhcmUg
QWRhcHRlciIgZm9yIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcuCiAgICAgICAgIC8vIElmIERYR0kx
LjIgaXMgYXZhaWxhYmxlIHRoZW4gSURYR0lBZGFwdGVyMjo6R2V0RGVzYzIgY2FuIGJlIHVzZWQg
dG8gZ2V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgdmFsdWVzLgotICAgICAgICBpZiAobUZlYXR1cmVM
ZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMgJiYgZHhnaUFkYXB0ZXIyICE9IE5VTEwpCisg
ICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsIDw9IEQzRF9GRUFU
VVJFX0xFVkVMXzlfMyAmJiBkeGdpQWRhcHRlcjIgIT0gTlVMTCkKICAgICAgICAgewotICAgICAg
ICAgICAgRFhHSV9BREFQVEVSX0RFU0MyIGFkYXB0ZXJEZXNjMiA9IHsgMCB9OwotICAgICAgICAg
ICAgZHhnaUFkYXB0ZXIyLT5HZXREZXNjMigmYWRhcHRlckRlc2MyKTsKLQotICAgICAgICAgICAg
Ly8gQ29weSB0aGUgY29udGVudHMgb2YgdGhlIERYR0lfQURBUFRFUl9ERVNDMiBpbnRvIG1BZGFw
dGVyRGVzY3JpcHRpb24gKGEgRFhHSV9BREFQVEVSX0RFU0MpLgotICAgICAgICAgICAgbWVtY3B5
KG1BZGFwdGVyRGVzY3JpcHRpb24uRGVzY3JpcHRpb24sIGFkYXB0ZXJEZXNjMi5EZXNjcmlwdGlv
biwgc2l6ZW9mKG1BZGFwdGVyRGVzY3JpcHRpb24uRGVzY3JpcHRpb24pKTsKLSAgICAgICAgICAg
IG1BZGFwdGVyRGVzY3JpcHRpb24uVmVuZG9ySWQgPSBhZGFwdGVyRGVzYzIuVmVuZG9ySWQ7Ci0g
ICAgICAgICAgICBtQWRhcHRlckRlc2NyaXB0aW9uLkRldmljZUlkID0gYWRhcHRlckRlc2MyLkRl
dmljZUlkOwotICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5TdWJTeXNJZCA9IGFkYXB0
ZXJEZXNjMi5TdWJTeXNJZDsKLSAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uUmV2aXNp
b24gPSBhZGFwdGVyRGVzYzIuUmV2aXNpb247Ci0gICAgICAgICAgICBtQWRhcHRlckRlc2NyaXB0
aW9uLkRlZGljYXRlZFZpZGVvTWVtb3J5ID0gYWRhcHRlckRlc2MyLkRlZGljYXRlZFZpZGVvTWVt
b3J5OwotICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5EZWRpY2F0ZWRTeXN0ZW1NZW1v
cnkgPSBhZGFwdGVyRGVzYzIuRGVkaWNhdGVkU3lzdGVtTWVtb3J5OwotICAgICAgICAgICAgbUFk
YXB0ZXJEZXNjcmlwdGlvbi5TaGFyZWRTeXN0ZW1NZW1vcnkgPSBhZGFwdGVyRGVzYzIuU2hhcmVk
U3lzdGVtTWVtb3J5OwotICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5BZGFwdGVyTHVp
ZCA9IGFkYXB0ZXJEZXNjMi5BZGFwdGVyTHVpZDsKKyAgICAgICAgICAgIERYR0lfQURBUFRFUl9E
RVNDMiBhZGFwdGVyRGVzYzIgPSB7fTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGR4Z2lBZGFwdGVy
Mi0+R2V0RGVzYzIoJmFkYXB0ZXJEZXNjMik7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJl
c3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgY29udGVu
dHMgb2YgdGhlIERYR0lfQURBUFRFUl9ERVNDMiBpbnRvIG1BZGFwdGVyRGVzY3JpcHRpb24gKGEg
RFhHSV9BREFQVEVSX0RFU0MpLgorICAgICAgICAgICAgICAgIG1lbWNweShtQWRhcHRlckRlc2Ny
aXB0aW9uLkRlc2NyaXB0aW9uLCBhZGFwdGVyRGVzYzIuRGVzY3JpcHRpb24sIHNpemVvZihtQWRh
cHRlckRlc2NyaXB0aW9uLkRlc2NyaXB0aW9uKSk7CisgICAgICAgICAgICAgICAgbUFkYXB0ZXJE
ZXNjcmlwdGlvbi5WZW5kb3JJZCA9IGFkYXB0ZXJEZXNjMi5WZW5kb3JJZDsKKyAgICAgICAgICAg
ICAgICBtQWRhcHRlckRlc2NyaXB0aW9uLkRldmljZUlkID0gYWRhcHRlckRlc2MyLkRldmljZUlk
OworICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uU3ViU3lzSWQgPSBhZGFwdGVy
RGVzYzIuU3ViU3lzSWQ7CisgICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5SZXZp
c2lvbiA9IGFkYXB0ZXJEZXNjMi5SZXZpc2lvbjsKKyAgICAgICAgICAgICAgICBtQWRhcHRlckRl
c2NyaXB0aW9uLkRlZGljYXRlZFZpZGVvTWVtb3J5ID0gYWRhcHRlckRlc2MyLkRlZGljYXRlZFZp
ZGVvTWVtb3J5OworICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uRGVkaWNhdGVk
U3lzdGVtTWVtb3J5ID0gYWRhcHRlckRlc2MyLkRlZGljYXRlZFN5c3RlbU1lbW9yeTsKKyAgICAg
ICAgICAgICAgICBtQWRhcHRlckRlc2NyaXB0aW9uLlNoYXJlZFN5c3RlbU1lbW9yeSA9IGFkYXB0
ZXJEZXNjMi5TaGFyZWRTeXN0ZW1NZW1vcnk7CisgICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNj
cmlwdGlvbi5BZGFwdGVyTHVpZCA9IGFkYXB0ZXJEZXNjMi5BZGFwdGVyTHVpZDsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1E
eGdpQWRhcHRlci0+R2V0RGVzYygmbUFkYXB0ZXJEZXNjcmlwdGlvbik7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtRHhnaUFkYXB0ZXItPkdldERlc2MoJm1BZGFwdGVyRGVzY3JpcHRpb24pOwogICAg
ICAgICB9CiAKICAgICAgICAgU2FmZVJlbGVhc2UoZHhnaUFkYXB0ZXIyKTsKIAorICAgICAgICBp
ZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9OT1RfSU5JVElBTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
M0QxMV9JTklUX09USEVSX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
dWxkIG5vdCByZWFkIERYR0kgYWRhcHRvciBkZXNjcmlwdGlvbi4iKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIG1lbXNldChtRGVzY3JpcHRpb24sIDAsIHNpemVvZihtRGVzY3JpcHRpb24pKTsKICAg
ICAgICAgd2NzdG9tYnMobURlc2NyaXB0aW9uLCBtQWRhcHRlckRlc2NyaXB0aW9uLkRlc2NyaXB0
aW9uLCBzaXplb2YobURlc2NyaXB0aW9uKSAtIDEpOwogCkBAIC00NzUsOCArNjU2LDggQEAKICAg
ICAgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9EUkFXX1JFTkRFUlRBUkdFVFZJ
RVdfTk9UX1NFVAogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgRDNEMTFfSU5GT19RVUVV
RV9GSUxURVIgZmlsdGVyID0geyAwIH07Ci0gICAgICAgICAgICBmaWx0ZXIuRGVueUxpc3QuTnVt
SURzID0gQXJyYXlTaXplKGhpZGVNZXNzYWdlcyk7CisgICAgICAgICAgICBEM0QxMV9JTkZPX1FV
RVVFX0ZJTFRFUiBmaWx0ZXIgPSB7fTsKKyAgICAgICAgICAgIGZpbHRlci5EZW55TGlzdC5OdW1J
RHMgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oQXJyYXlTaXplKGhpZGVNZXNz
YWdlcykpOwogICAgICAgICAgICAgZmlsdGVyLkRlbnlMaXN0LnBJRExpc3QgPSBoaWRlTWVzc2Fn
ZXM7CiAKICAgICAgICAgICAgIGluZm9RdWV1ZS0+QWRkU3RvcmFnZUZpbHRlckVudHJpZXMoJmZp
bHRlcik7CkBAIC00OTQsMTMgKzY3NSwxMjAgQEAKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xf
U1VDQ0VTUyk7CiB9CiAKK2VnbDo6RXJyb3IgUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZUQzRERldmlj
ZSgpCit7CisgICAgSFJFU1VMVCByZXN1bHQgPSBTX09LOworCisgICAgaWYgKCFtQ3JlYXRlZFdp
dGhEZXZpY2VFWFQpCisgICAgeworI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NU
T1JFKQorICAgICAgICBQRk5fRDNEMTFfQ1JFQVRFX0RFVklDRSBEM0QxMUNyZWF0ZURldmljZSA9
IG51bGxwdHI7CisgICAgICAgIHsKKyAgICAgICAgICAgIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1f
VElNRVIoIkdQVS5BTkdMRS5SZW5kZXJlcjExSW5pdGlhbGl6ZURMTHNNUyIpOworICAgICAgICAg
ICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZSAoTG9h
ZCBETExzKSIpOworICAgICAgICAgICAgbUR4Z2lNb2R1bGUgID0gTG9hZExpYnJhcnkoVEVYVCgi
ZHhnaS5kbGwiKSk7CisgICAgICAgICAgICBtRDNkMTFNb2R1bGUgPSBMb2FkTGlicmFyeShURVhU
KCJkM2QxMS5kbGwiKSk7CisgICAgICAgICAgICBtRENvbXBNb2R1bGUgPSBMb2FkTGlicmFyeShU
RVhUKCJkY29tcC5kbGwiKSk7CisKKyAgICAgICAgICAgIGlmIChtRDNkMTFNb2R1bGUgPT0gbnVs
bHB0ciB8fCBtRHhnaU1vZHVsZSA9PSBudWxscHRyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsIEQzRDExX0lOSVRf
TUlTU0lOR19ERVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5v
dCBsb2FkIEQzRDExIG9yIERYR0kgbGlicmFyeS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gY3JlYXRlIHRoZSBEM0QxMSBkZXZpY2UKKyAgICAgICAgICAgIEFTU0VSVChtRGV2
aWNlID09IG51bGxwdHIpOworICAgICAgICAgICAgRDNEMTFDcmVhdGVEZXZpY2UgPSByZWludGVy
cHJldF9jYXN0PFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFPigKKyAgICAgICAgICAgICAgICBHZXRQ
cm9jQWRkcmVzcyhtRDNkMTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmljZSIpKTsKKworICAgICAg
ICAgICAgaWYgKEQzRDExQ3JlYXRlRGV2aWNlID09IG51bGxwdHIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgRDNE
MTFfSU5JVF9NSVNTSU5HX0RFUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q291bGQgbm90IHJldHJpZXZlIEQzRDExQ3JlYXRlRGV2aWNlIGFkZHJlc3MuIik7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCisjaWZkZWYgX0RFQlVHCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIkQzRDExQ3JlYXRlRGV2aWNlIChE
ZWJ1ZykiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IEQzRDExQ3JlYXRlRGV2aWNlKG51bGxwdHIs
IG1SZXF1ZXN0ZWREcml2ZXJUeXBlLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfQ1JFQVRFX0RFVklDRV9ERUJVRywgbUF2YWlsYWJsZUZlYXR1
cmVMZXZlbHMuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtQXZhaWxhYmxlRmVhdHVyZUxldmVscy5zaXplKCkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJ
T04sICZtRGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiht
UmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKSwgJm1EZXZpY2VDb250ZXh0KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghbURldmljZSB8fCBGQUlMRUQocmVzdWx0KSkKKyAgICAg
ICAgeworICAgICAgICAgICAgRVJSKCJGYWlsZWQgY3JlYXRpbmcgRGVidWcgRDNEMTEgZGV2aWNl
IC0gZmFsbGluZyBiYWNrIHRvIHJlbGVhc2UgcnVudGltZS5cbiIpOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQorI2VuZGlmCisgICAgICAgIHsK
KyAgICAgICAgICAgIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVIoIkdQVS5BTkdMRS5EM0Qx
MUNyZWF0ZURldmljZU1TIik7CisgICAgICAgICAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIs
ICJEM0QxMUNyZWF0ZURldmljZSIpOworCisgICAgICAgICAgICByZXN1bHQgPSBEM0QxMUNyZWF0
ZURldmljZSgKKyAgICAgICAgICAgICAgICBudWxscHRyLCBtUmVxdWVzdGVkRHJpdmVyVHlwZSwg
bnVsbHB0ciwgMCwgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuZGF0YSgpLAorICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuc2l6
ZSgpKSwgRDNEMTFfU0RLX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgJm1EZXZpY2UsICYobVJl
bmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCksICZtRGV2aWNlQ29udGV4dCk7CisKKyAg
ICAgICAgICAgIC8vIENsZWFudXAgZG9uZSBieSBkZXN0cnVjdG9yCisgICAgICAgICAgICBpZiAo
IW1EZXZpY2UgfHwgRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgQU5HTEVfSElTVE9HUkFNX1NQQVJTRV9TTE9XTFkoIkdQVS5BTkdMRS5EM0QxMUNyZWF0ZURl
dmljZUVycm9yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsIEQzRDExX0lOSVRfQ1JFQVRFREVWSUNFX0VSUk9S
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgY3JlYXRlIEQz
RDExIGRldmljZS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICAvLyBXZSBzaG91bGQgdXNlIHRoZSBpbnB1dHRlZCBEM0QxMSBkZXZp
Y2UgaW5zdGVhZAorICAgICAgICB2b2lkICpkZXZpY2UgICAgID0gbnVsbHB0cjsKKyAgICAgICAg
ZWdsOjpFcnJvciBlcnJvciA9IG1FR0xEZXZpY2UtPmdldERldmljZSgmZGV2aWNlKTsKKyAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOworICAgICAgICB9CisKKyAgICAgICAgSUQzRDExRGV2aWNlICpkM2REZXZpY2UgPSByZWlu
dGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2UpOworICAgICAgICBpZiAoRkFJTEVE
KGQzZERldmljZS0+R2V0RGV2aWNlUmVtb3ZlZFJlYXNvbigpKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIklucHV0dGVkIEQz
RDExIGRldmljZSBoYXMgYmVlbiBsb3N0LiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGQz
ZERldmljZS0+R2V0RmVhdHVyZUxldmVsKCkgPCBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5wdXR0ZWQgRDNEMTEgZGV2aWNlIG11
c3QgYmUgRmVhdHVyZSBMZXZlbCA5XzMgb3IgZ3JlYXRlci4iKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFRoZSBSZW5kZXJlcjExIGFkZHMgYSByZWYgdG8gdGhlIGlucHV0dGVkIEQzRDExIGRl
dmljZSwgbGlrZSBEM0QxMUNyZWF0ZURldmljZSBkb2VzLgorICAgICAgICBtRGV2aWNlID0gZDNk
RGV2aWNlOworICAgICAgICBtRGV2aWNlLT5BZGRSZWYoKTsKKyAgICAgICAgbURldmljZS0+R2V0
SW1tZWRpYXRlQ29udGV4dCgmbURldmljZUNvbnRleHQpOworICAgICAgICBtUmVuZGVyZXIxMURl
dmljZUNhcHMuZmVhdHVyZUxldmVsID0gbURldmljZS0+R2V0RmVhdHVyZUxldmVsKCk7CisgICAg
fQorCisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRGV2aWNlQ29udGV4dCwgIkRldmljZUNvbnRl
eHQiKTsKKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwogLy8gZG8g
YW55IG9uZS10aW1lIGRldmljZSBpbml0aWFsaXphdGlvbgogLy8gTk9URTogdGhpcyBpcyBhbHNv
IG5lZWRlZCBhZnRlciBhIGRldmljZSBsb3N0L3Jlc2V0CiAvLyB0byByZXNldCB0aGUgc2NlbmUg
c3RhdHVzIGFuZCBlbnN1cmUgdGhlIGRlZmF1bHQgc3RhdGVzIGFyZSByZXNldC4KIHZvaWQgUmVu
ZGVyZXIxMTo6aW5pdGlhbGl6ZURldmljZSgpCiB7CisgICAgU0NPUEVEX0FOR0xFX0hJU1RPR1JB
TV9USU1FUigiR1BVLkFOR0xFLlJlbmRlcmVyMTFJbml0aWFsaXplRGV2aWNlTVMiKTsKICAgICBU
UkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJSZW5kZXJlcjExOjppbml0aWFsaXplRGV2aWNlIik7
CiAKKyAgICBwb3B1bGF0ZVJlbmRlcmVyMTFEZXZpY2VDYXBzKCk7CisKICAgICBtU3RhdGVDYWNo
ZS5pbml0aWFsaXplKG1EZXZpY2UpOwogICAgIG1JbnB1dExheW91dENhY2hlLmluaXRpYWxpemUo
bURldmljZSwgbURldmljZUNvbnRleHQpOwogCkBAIC01MTgsNyArODA2LDggQEAKICAgICAvLyBJ
ZiBhdXRvbWF0aWMgdHJpbSBpcyBlbmFibGVkLCBEWEdJRGV2aWNlMzo6VHJpbSggKSBpcyBjYWxs
ZWQgZm9yIHRoZSBhcHBsaWNhdGlvbgogICAgIC8vIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBhcHBs
aWNhdGlvbiBpcyBzdXNwZW5kZWQgYnkgdGhlIE9TLiBUaGlzIGZlYXR1cmUgaXMgY3VycmVudGx5
CiAgICAgLy8gb25seSBzdXBwb3J0ZWQgZm9yIFdpbmRvd3MgU3RvcmUgYXBwbGljYXRpb25zLgot
ICAgIEVHTGludCBlbmFibGVBdXRvVHJpbSA9IGF0dHJpYnV0ZXMuZ2V0KEVHTF9QTEFURk9STV9B
TkdMRV9FTkFCTEVfQVVUT01BVElDX1RSSU1fQU5HTEUsIEVHTF9GQUxTRSk7CisgICAgRUdMaW50
IGVuYWJsZUF1dG9UcmltID0gc3RhdGljX2Nhc3Q8RUdMaW50PigKKyAgICAgICAgYXR0cmlidXRl
cy5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJTV9BTkdMRSwgRUdM
X0ZBTFNFKSk7CiAKICAgICBpZiAoZW5hYmxlQXV0b1RyaW0gPT0gRUdMX1RSVUUpCiAgICAgewpA
QCAtNTMxLDMyICs4MjAsOTcgQEAKIAogICAgIGNvbnN0IGdsOjpDYXBzICZyZW5kZXJlckNhcHMg
PSBnZXRSZW5kZXJlckNhcHMoKTsKIAotICAgIGlmIChnZXREZXZpY2VDb250ZXh0MUlmU3VwcG9y
dGVkKCkpCi0gICAgewotICAgICAgICBEM0QxMV9GRUFUVVJFX0RBVEFfRDNEMTFfT1BUSU9OUyBk
M2QxMU9wdGlvbnM7Ci0gICAgICAgIG1EZXZpY2UtPkNoZWNrRmVhdHVyZVN1cHBvcnQoRDNEMTFf
RkVBVFVSRV9EM0QxMV9PUFRJT05TLCAmZDNkMTFPcHRpb25zLCBzaXplb2YoRDNEMTFfRkVBVFVS
RV9EQVRBX0QzRDExX09QVElPTlMpKTsKLSAgICAgICAgbVN1cHBvcnRzQ29uc3RhbnRCdWZmZXJP
ZmZzZXRzID0gKGQzZDExT3B0aW9ucy5Db25zdGFudEJ1ZmZlck9mZnNldHRpbmcgIT0gRkFMU0Up
OwotICAgIH0KKyAgICBtU3RhdGVNYW5hZ2VyLmluaXRpYWxpemUocmVuZGVyZXJDYXBzKTsKIAog
ICAgIG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXMucmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhW
ZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CiAgICAgbUN1clZlcnRleFNhbXBsZXJTdGF0ZXMucmVz
aXplKHJlbmRlcmVyQ2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgbVNhbXBs
ZXJNZXRhZGF0YVZTLmluaXREYXRhKHJlbmRlcmVyQ2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VV
bml0cyk7CiAKICAgICBtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXMucmVzaXplKHJlbmRlcmVy
Q2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0cyk7CiAgICAgbUN1clBpeGVsU2FtcGxlclN0YXRlcy5y
ZXNpemUocmVuZGVyZXJDYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICBtU2FtcGxlck1l
dGFkYXRhUFMuaW5pdERhdGEocmVuZGVyZXJDYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKIAot
ICAgIG1DdXJWZXJ0ZXhTUlZzLnJlc2l6ZShyZW5kZXJlckNhcHMubWF4VmVydGV4VGV4dHVyZUlt
YWdlVW5pdHMpOwotICAgIG1DdXJQaXhlbFNSVnMucmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhUZXh0
dXJlSW1hZ2VVbml0cyk7CisgICAgbVN0YXRlTWFuYWdlci5pbml0aWFsaXplKHJlbmRlcmVyQ2Fw
cyk7CiAKICAgICBtYXJrQWxsU3RhdGVEaXJ0eSgpOworCisgICAgLy8gR2F0aGVyIHN0YXRzIG9u
IERYR0kgYW5kIEQzRCBmZWF0dXJlIGxldmVsCisgICAgQU5HTEVfSElTVE9HUkFNX0JPT0xFQU4o
IkdQVS5BTkdMRS5TdXBwb3J0c0RYR0kxXzIiLCBtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9y
dHNEWEdJMV8yKTsKKworICAgIEFOR0xFRmVhdHVyZUxldmVsIGFuZ2xlRmVhdHVyZUxldmVsID0g
R2V0QU5HTEVGZWF0dXJlTGV2ZWwobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7
CisKKyAgICAvLyBXZSBkb24ndCBhY3R1YWxseSByZXF1ZXN0IGEgMTFfMSBkZXZpY2UsIGJlY2F1
c2Ugb2YgY29tcGxpY2F0aW9ucyB3aXRoIHRoZSBwbGF0Zm9ybQorICAgIC8vIHVwZGF0ZS4gSW5z
dGVhZCB3ZSBjaGVjayBpZiB0aGUgbURldmljZUNvbnRleHQxIHBvaW50ZXIgY2FzdCBzdWNjZWVk
ZWQuCisgICAgLy8gTm90ZTogd2Ugc2hvdWxkIHN1cHBvcnQgRDNEMTFfMCBhbHdheXMsIGJ1dCB3
ZSBhcmVuJ3QgZ3VhcmFudGVlZCB0byBiZSBhdCBGTDExXzAKKyAgICAvLyBiZWNhdXNlIHRoZSBh
cHAgY2FuIHNwZWNpZnkgYSBsb3dlciB2ZXJzaW9uIChzdWNoIGFzIDlfMykgb24gRGlzcGxheSBj
cmVhdGlvbi4KKyAgICBpZiAobURldmljZUNvbnRleHQxICE9IG51bGxwdHIpCisgICAgeworICAg
ICAgICBhbmdsZUZlYXR1cmVMZXZlbCA9IEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTFfMTsKKyAgICB9
CisKKyAgICBBTkdMRV9ISVNUT0dSQU1fRU5VTUVSQVRJT04oIkdQVS5BTkdMRS5EM0QxMUZlYXR1
cmVMZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlRmVhdHVyZUxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVU1fQU5HTEVfRkVBVFVSRV9M
RVZFTFMpOwogfQogCit2b2lkIFJlbmRlcmVyMTE6OnBvcHVsYXRlUmVuZGVyZXIxMURldmljZUNh
cHMoKQoreworICAgIEhSRVNVTFQgaHIgPSBTX09LOworCisgICAgaWYgKG1EZXZpY2VDb250ZXh0
MSkKKyAgICB7CisgICAgICAgIEQzRDExX0ZFQVRVUkVfREFUQV9EM0QxMV9PUFRJT05TIGQzZDEx
T3B0aW9uczsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DaGVja0ZlYXR1cmVT
dXBwb3J0KEQzRDExX0ZFQVRVUkVfRDNEMTFfT1BUSU9OUywgJmQzZDExT3B0aW9ucywgc2l6ZW9m
KEQzRDExX0ZFQVRVUkVfREFUQV9EM0QxMV9PUFRJT05TKSk7CisgICAgICAgIGlmIChTVUNDRUVE
RUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBz
LnN1cHBvcnRzQ2xlYXJWaWV3ID0gKGQzZDExT3B0aW9ucy5DbGVhclZpZXcgIT0gRkFMU0UpOwor
ICAgICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJP
ZmZzZXRzID0gKGQzZDExT3B0aW9ucy5Db25zdGFudEJ1ZmZlck9mZnNldHRpbmcgIT0gRkFMU0Up
OworICAgICAgICB9CisgICAgfQorCisgICAgaHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBv
cnQoRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLCAmKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5CNUc2
UjVzdXBwb3J0KSk7CisgICAgaWYgKEZBSUxFRChocikpCisgICAgeworICAgICAgICBtUmVuZGVy
ZXIxMURldmljZUNhcHMuQjVHNlI1c3VwcG9ydCA9IDA7CisgICAgfQorCisgICAgaHIgPSBtRGV2
aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sICYobVJl
bmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCkpOworICAgIGlmIChGQUlMRUQoaHIp
KQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCA9
IDA7CisgICAgfQorCisgICAgaHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9G
T1JNQVRfQjVHNVI1QTFfVU5PUk0sICYobVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1RzVSNUExc3Vw
cG9ydCkpOworICAgIGlmIChGQUlMRUQoaHIpKQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyMTFE
ZXZpY2VDYXBzLkI1RzVSNUExc3VwcG9ydCA9IDA7CisgICAgfQorCisgICAgSURYR0lBZGFwdGVy
MiAqZHhnaUFkYXB0ZXIyID0gZDNkMTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEWEdJQWRhcHRl
cjI+KG1EeGdpQWRhcHRlcik7CisgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1cHBvcnRzRFhH
STFfMiA9IChkeGdpQWRhcHRlcjIgIT0gbnVsbHB0cik7CisgICAgU2FmZVJlbGVhc2UoZHhnaUFk
YXB0ZXIyKTsKK30KKwogZWdsOjpDb25maWdTZXQgUmVuZGVyZXIxMTo6Z2VuZXJhdGVDb25maWdz
KCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGNvbG9yQnVmZmVyRm9ybWF0c1td
ID0KKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IGNvbG9yQnVmZmVyRm9ybWF0czsKKworICAgIC8v
IDMyLWJpdCBzdXBwb3J0ZWQgZm9ybWF0cworICAgIGNvbG9yQnVmZmVyRm9ybWF0cy5wdXNoX2Jh
Y2soR0xfQkdSQThfRVhUKTsKKyAgICBjb2xvckJ1ZmZlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JH
QkE4X09FUyk7CisKKyAgICAvLyAyNC1iaXQgc3VwcG9ydGVkIGZvcm1hdHMKKyAgICBjb2xvckJ1
ZmZlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQjhfT0VTKTsKKworICAgIGlmICghbVByZXNlbnRQ
YXRoRmFzdEVuYWJsZWQpCiAgICAgewotICAgICAgICBHTF9CR1JBOF9FWFQsCi0gICAgICAgIEdM
X1JHQkE4X09FUywKLSAgICB9OworICAgICAgICAvLyAxNi1iaXQgc3VwcG9ydGVkIGZvcm1hdHMK
KyAgICAgICAgLy8gVGhlc2UgYXJlbid0IHZhbGlkIEQzRDExIHN3YXBjaGFpbiBmb3JtYXRzLCBz
byBkb24ndCBleHBvc2UgdGhlbSBhcyBjb25maWdzCisgICAgICAgIC8vIGlmIHByZXNlbnQgcGF0
aCBmYXN0IGlzIGFjdGl2ZQorICAgICAgICBjb2xvckJ1ZmZlckZvcm1hdHMucHVzaF9iYWNrKEdM
X1JHQkE0KTsKKyAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0I1X0Ex
KTsKKyAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0I1NjUpOworICAg
IH0KIAogICAgIHN0YXRpYyBjb25zdCBHTGVudW0gZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0c1td
ID0KICAgICB7CkBAIC01NjgsNjQgKzkyMiw4NyBAQAogICAgIGNvbnN0IGdsOjpDYXBzICZyZW5k
ZXJlckNhcHMgPSBnZXRSZW5kZXJlckNhcHMoKTsKICAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNN
YXAgJnJlbmRlcmVyVGV4dHVyZUNhcHMgPSBnZXRSZW5kZXJlclRleHR1cmVDYXBzKCk7CiAKKyAg
ICBjb25zdCBFR0xpbnQgb3B0aW1hbFN1cmZhY2VPcmllbnRhdGlvbiA9CisgICAgICAgIG1QcmVz
ZW50UGF0aEZhc3RFbmFibGVkID8gMCA6IEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0lOVkVSVF9Z
X0FOR0xFOworCiAgICAgZWdsOjpDb25maWdTZXQgY29uZmlnczsKLSAgICBmb3IgKHNpemVfdCBm
b3JtYXRJbmRleCA9IDA7IGZvcm1hdEluZGV4IDwgQXJyYXlTaXplKGNvbG9yQnVmZmVyRm9ybWF0
cyk7IGZvcm1hdEluZGV4KyspCisgICAgZm9yIChHTGVudW0gY29sb3JCdWZmZXJJbnRlcm5hbEZv
cm1hdCA6IGNvbG9yQnVmZmVyRm9ybWF0cykKICAgICB7Ci0gICAgICAgIEdMZW51bSBjb2xvckJ1
ZmZlckludGVybmFsRm9ybWF0ID0gY29sb3JCdWZmZXJGb3JtYXRzW2Zvcm1hdEluZGV4XTsKICAg
ICAgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZjb2xvckJ1ZmZlckZvcm1hdENhcHMgPSByZW5k
ZXJlclRleHR1cmVDYXBzLmdldChjb2xvckJ1ZmZlckludGVybmFsRm9ybWF0KTsKLSAgICAgICAg
aWYgKGNvbG9yQnVmZmVyRm9ybWF0Q2Fwcy5yZW5kZXJhYmxlKQorICAgICAgICBpZiAoIWNvbG9y
QnVmZmVyRm9ybWF0Q2Fwcy5yZW5kZXJhYmxlKQogICAgICAgICB7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBkZXB0aFN0ZW5jaWxJbmRleCA9IDA7IGRlcHRoU3RlbmNpbEluZGV4IDwgQXJyYXlT
aXplKGRlcHRoU3RlbmNpbEJ1ZmZlckZvcm1hdHMpOyBkZXB0aFN0ZW5jaWxJbmRleCsrKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKEdMZW51bSBkZXB0
aFN0ZW5jaWxCdWZmZXJJbnRlcm5hbEZvcm1hdCA6IGRlcHRoU3RlbmNpbEJ1ZmZlckZvcm1hdHMp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2FwcyAmZGVwdGhTdGVu
Y2lsQnVmZmVyRm9ybWF0Q2FwcyA9CisgICAgICAgICAgICAgICAgcmVuZGVyZXJUZXh0dXJlQ2Fw
cy5nZXQoZGVwdGhTdGVuY2lsQnVmZmVySW50ZXJuYWxGb3JtYXQpOworICAgICAgICAgICAgaWYg
KCFkZXB0aFN0ZW5jaWxCdWZmZXJGb3JtYXRDYXBzLnJlbmRlcmFibGUgJiYKKyAgICAgICAgICAg
ICAgICBkZXB0aFN0ZW5jaWxCdWZmZXJJbnRlcm5hbEZvcm1hdCAhPSBHTF9OT05FKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aFN0ZW5jaWxCdWZmZXJJbnRlcm5h
bEZvcm1hdCA9IGRlcHRoU3RlbmNpbEJ1ZmZlckZvcm1hdHNbZGVwdGhTdGVuY2lsSW5kZXhdOwot
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2FwcyAmZGVwdGhTdGVuY2lsQnVmZmVy
Rm9ybWF0Q2FwcyA9IHJlbmRlcmVyVGV4dHVyZUNhcHMuZ2V0KGRlcHRoU3RlbmNpbEJ1ZmZlcklu
dGVybmFsRm9ybWF0KTsKLSAgICAgICAgICAgICAgICBpZiAoZGVwdGhTdGVuY2lsQnVmZmVyRm9y
bWF0Q2Fwcy5yZW5kZXJhYmxlIHx8IGRlcHRoU3RlbmNpbEJ1ZmZlckludGVybmFsRm9ybWF0ID09
IEdMX05PTkUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6SW50ZXJuYWxGb3JtYXQgJmNvbG9yQnVmZmVyRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5h
bEZvcm1hdEluZm8oY29sb3JCdWZmZXJJbnRlcm5hbEZvcm1hdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5m
byA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZGVwdGhTdGVuY2lsQnVmZmVySW50ZXJuYWxG
b3JtYXQpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgICAgIGVnbDo6Q29uZmlnIGNvbmZpZzsKLSAgICAgICAgICAgICAgICAgICAg
Y29uZmlnLnJlbmRlclRhcmdldEZvcm1hdCA9IGNvbG9yQnVmZmVySW50ZXJuYWxGb3JtYXQ7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBkZXB0aFN0ZW5j
aWxCdWZmZXJJbnRlcm5hbEZvcm1hdDsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLmJ1ZmZl
clNpemUgPSBjb2xvckJ1ZmZlckZvcm1hdEluZm8ucGl4ZWxCeXRlcyAqIDg7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbmZpZy5yZWRTaXplID0gY29sb3JCdWZmZXJGb3JtYXRJbmZvLnJlZEJpdHM7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5ncmVlblNpemUgPSBjb2xvckJ1ZmZlckZvcm1h
dEluZm8uZ3JlZW5CaXRzOwotICAgICAgICAgICAgICAgICAgICBjb25maWcuYmx1ZVNpemUgPSBj
b2xvckJ1ZmZlckZvcm1hdEluZm8uYmx1ZUJpdHM7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZp
Zy5sdW1pbmFuY2VTaXplID0gY29sb3JCdWZmZXJGb3JtYXRJbmZvLmx1bWluYW5jZUJpdHM7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUgPSBjb2xvckJ1ZmZlckZvcm1hdElu
Zm8uYWxwaGFCaXRzOwotICAgICAgICAgICAgICAgICAgICBjb25maWcuYWxwaGFNYXNrU2l6ZSA9
IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCID0gKGNvbG9y
QnVmZmVyRm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfUkdCKTsKLSAgICAgICAgICAgICAgICAgICAg
Y29uZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gKGNvbG9yQnVmZmVyRm9ybWF0SW5mby5mb3JtYXQg
PT0gR0xfUkdCQSB8fCBjb2xvckJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0ID09IEdMX0JHUkFfRVhU
KTsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbG9yQnVmZmVyVHlwZSA9IEVHTF9SR0Jf
QlVGRkVSOwotICAgICAgICAgICAgICAgICAgICBjb25maWcuY29uZmlnQ2F2ZWF0ID0gRUdMX05P
TkU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb25maWdJRCA9IHN0YXRpY19jYXN0PEVH
TGludD4oY29uZmlncy5zaXplKCkgKyAxKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2FuIG9u
bHkgc3VwcG9ydCBhIGNvbmZvcm1hbnQgRVMyIHdpdGggZmVhdHVyZSBsZXZlbCBncmVhdGVyIHRo
YW4gMTAuMC4KLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLmNvbmZvcm1hbnQgPSAobUZlYXR1
cmVMZXZlbCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKSA/IChFR0xfT1BFTkdMX0VTMl9CSVQg
fCBFR0xfT1BFTkdMX0VTM19CSVRfS0hSKSA6IEVHTF9OT05FOwotICAgICAgICAgICAgICAgICAg
ICBjb25maWcuZGVwdGhTaXplID0gZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mby5kZXB0aEJp
dHM7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5sZXZlbCA9IDA7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9IEVHTF9OT05FOwotICAgICAgICAgICAg
ICAgICAgICBjb25maWcubWF4UEJ1ZmZlcldpZHRoID0gcmVuZGVyZXJDYXBzLm1heDJEVGV4dHVy
ZVNpemU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5tYXhQQnVmZmVySGVpZ2h0ID0gcmVu
ZGVyZXJDYXBzLm1heDJEVGV4dHVyZVNpemU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5t
YXhQQnVmZmVyUGl4ZWxzID0gcmVuZGVyZXJDYXBzLm1heDJEVGV4dHVyZVNpemUgKiByZW5kZXJl
ckNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLm1heFN3
YXBJbnRlcnZhbCA9IDQ7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5taW5Td2FwSW50ZXJ2
YWwgPSAwOwotICAgICAgICAgICAgICAgICAgICBjb25maWcubmF0aXZlUmVuZGVyYWJsZSA9IEVH
TF9GQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLm5hdGl2ZVZpc3VhbElEID0gMDsK
LSAgICAgICAgICAgICAgICAgICAgY29uZmlnLm5hdGl2ZVZpc3VhbFR5cGUgPSBFR0xfTk9ORTsK
LSAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3Qgc3VwcG9ydCBFUzMgYXQgYWxsIHdpdGhvdXQg
ZmVhdHVyZSBsZXZlbCAxMC4wCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJhYmxl
VHlwZSA9IEVHTF9PUEVOR0xfRVMyX0JJVCB8ICgobUZlYXR1cmVMZXZlbCA+PSBEM0RfRkVBVFVS
RV9MRVZFTF8xMF8wKSA/IEVHTF9PUEVOR0xfRVMzX0JJVF9LSFIgOiAwKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29uZmlnLnNhbXBsZUJ1ZmZlcnMgPSAwOyAvLyBGSVhNRTogZW51bWVyYXRlIG11
bHRpLXNhbXBsaW5nCi0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5zYW1wbGVzID0gMDsKLSAg
ICAgICAgICAgICAgICAgICAgY29uZmlnLnN0ZW5jaWxTaXplID0gZGVwdGhTdGVuY2lsQnVmZmVy
Rm9ybWF0SW5mby5zdGVuY2lsQml0czsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLnN1cmZh
Y2VUeXBlID0gRUdMX1BCVUZGRVJfQklUIHwgRUdMX1dJTkRPV19CSVQgfCBFR0xfU1dBUF9CRUhB
VklPUl9QUkVTRVJWRURfQklUOwotICAgICAgICAgICAgICAgICAgICBjb25maWcudHJhbnNwYXJl
bnRUeXBlID0gRUdMX05PTkU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVu
dFJlZFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRyYW5zcGFyZW50R3Jl
ZW5WYWx1ZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVudEJsdWVW
YWx1ZSA9IDA7CisgICAgICAgICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmNvbG9yQnVm
ZmVyRm9ybWF0SW5mbyA9CisgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5m
byhjb2xvckJ1ZmZlckludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpJbnRl
cm5hbEZvcm1hdCAmZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mbyA9CisgICAgICAgICAgICAg
ICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhkZXB0aFN0ZW5jaWxCdWZmZXJJbnRlcm5hbEZv
cm1hdCk7CiAKLSAgICAgICAgICAgICAgICAgICAgY29uZmlncy5hZGQoY29uZmlnKTsKLSAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlZ2w6OkNvbmZpZyBjb25maWc7CisgICAgICAgICAg
ICBjb25maWcucmVuZGVyVGFyZ2V0Rm9ybWF0ID0gY29sb3JCdWZmZXJJbnRlcm5hbEZvcm1hdDsK
KyAgICAgICAgICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBkZXB0aFN0ZW5jaWxCdWZm
ZXJJbnRlcm5hbEZvcm1hdDsKKyAgICAgICAgICAgIGNvbmZpZy5idWZmZXJTaXplICAgICAgICAg
PSBjb2xvckJ1ZmZlckZvcm1hdEluZm8ucGl4ZWxCeXRlcyAqIDg7CisgICAgICAgICAgICBjb25m
aWcucmVkU2l6ZSAgICAgICAgICAgID0gY29sb3JCdWZmZXJGb3JtYXRJbmZvLnJlZEJpdHM7Cisg
ICAgICAgICAgICBjb25maWcuZ3JlZW5TaXplICAgICAgICAgID0gY29sb3JCdWZmZXJGb3JtYXRJ
bmZvLmdyZWVuQml0czsKKyAgICAgICAgICAgIGNvbmZpZy5ibHVlU2l6ZSAgICAgICAgICAgPSBj
b2xvckJ1ZmZlckZvcm1hdEluZm8uYmx1ZUJpdHM7CisgICAgICAgICAgICBjb25maWcubHVtaW5h
bmNlU2l6ZSAgICAgID0gY29sb3JCdWZmZXJGb3JtYXRJbmZvLmx1bWluYW5jZUJpdHM7CisgICAg
ICAgICAgICBjb25maWcuYWxwaGFTaXplICAgICAgICAgID0gY29sb3JCdWZmZXJGb3JtYXRJbmZv
LmFscGhhQml0czsKKyAgICAgICAgICAgIGNvbmZpZy5hbHBoYU1hc2tTaXplICAgICAgPSAwOwor
ICAgICAgICAgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0IgICA9IChjb2xvckJ1ZmZlckZvcm1h
dEluZm8uZm9ybWF0ID09IEdMX1JHQik7CisgICAgICAgICAgICBjb25maWcuYmluZFRvVGV4dHVy
ZVJHQkEgPSAoY29sb3JCdWZmZXJGb3JtYXRJbmZvLmZvcm1hdCA9PSBHTF9SR0JBIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRJbmZv
LmZvcm1hdCA9PSBHTF9CR1JBX0VYVCk7CisgICAgICAgICAgICBjb25maWcuY29sb3JCdWZmZXJU
eXBlID0gRUdMX1JHQl9CVUZGRVI7CisgICAgICAgICAgICBjb25maWcuY29uZmlnQ2F2ZWF0ICAg
ID0gRUdMX05PTkU7CisgICAgICAgICAgICBjb25maWcuY29uZmlnSUQgICAgICAgID0gc3RhdGlj
X2Nhc3Q8RUdMaW50Pihjb25maWdzLnNpemUoKSArIDEpOworICAgICAgICAgICAgLy8gQ2FuIG9u
bHkgc3VwcG9ydCBhIGNvbmZvcm1hbnQgRVMyIHdpdGggZmVhdHVyZSBsZXZlbCBncmVhdGVyIHRo
YW4gMTAuMC4KKyAgICAgICAgICAgIGNvbmZpZy5jb25mb3JtYW50ID0gKG1SZW5kZXJlcjExRGV2
aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKEVHTF9PUEVOR0xfRVMyX0JJVCB8IEVHTF9P
UEVOR0xfRVMzX0JJVF9LSFIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6
IDA7CisKKyAgICAgICAgICAgIC8vIFByZXNlbnRQYXRoRmFzdCBtYXkgbm90IGJlIGNvbmZvcm1h
bnQKKyAgICAgICAgICAgIGlmIChtUHJlc2VudFBhdGhGYXN0RW5hYmxlZCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25maWcuY29uZm9ybWFudCA9IDA7CiAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNvbmZpZy5kZXB0aFNpemUgICAgICAgICA9IGRlcHRoU3RlbmNpbEJ1
ZmZlckZvcm1hdEluZm8uZGVwdGhCaXRzOworICAgICAgICAgICAgY29uZmlnLmxldmVsICAgICAg
ICAgICAgID0gMDsKKyAgICAgICAgICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9IEVHTF9O
T05FOworICAgICAgICAgICAgY29uZmlnLm1heFBCdWZmZXJXaWR0aCAgID0gcmVuZGVyZXJDYXBz
Lm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgICAgICBjb25maWcubWF4UEJ1ZmZlckhlaWdodCAg
PSByZW5kZXJlckNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGNvbmZpZy5tYXhQ
QnVmZmVyUGl4ZWxzICA9IHJlbmRlcmVyQ2Fwcy5tYXgyRFRleHR1cmVTaXplICogcmVuZGVyZXJD
YXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgICAgICBjb25maWcubWF4U3dhcEludGVydmFs
ICAgPSA0OworICAgICAgICAgICAgY29uZmlnLm1pblN3YXBJbnRlcnZhbCAgID0gMDsKKyAgICAg
ICAgICAgIGNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlICA9IEVHTF9GQUxTRTsKKyAgICAgICAgICAg
IGNvbmZpZy5uYXRpdmVWaXN1YWxJRCAgICA9IDA7CisgICAgICAgICAgICBjb25maWcubmF0aXZl
VmlzdWFsVHlwZSAgPSBFR0xfTk9ORTsKKyAgICAgICAgICAgIC8vIENhbid0IHN1cHBvcnQgRVMz
IGF0IGFsbCB3aXRob3V0IGZlYXR1cmUgbGV2ZWwgMTAuMAorICAgICAgICAgICAgY29uZmlnLnJl
bmRlcmFibGVUeXBlID0KKyAgICAgICAgICAgICAgICBFR0xfT1BFTkdMX0VTMl9CSVQgfCAoKG1S
ZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRUdMX09QRU5H
TF9FUzNfQklUX0tIUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAwKTsKKyAgICAgICAgICAgIGNvbmZpZy5zYW1wbGVCdWZmZXJzICAgICAgICAgPSAwOyAgLy8g
RklYTUU6IGVudW1lcmF0ZSBtdWx0aS1zYW1wbGluZworICAgICAgICAgICAgY29uZmlnLnNhbXBs
ZXMgICAgICAgICAgICAgICA9IDA7CisgICAgICAgICAgICBjb25maWcuc3RlbmNpbFNpemUgICAg
ICAgICAgID0gZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mby5zdGVuY2lsQml0czsKKyAgICAg
ICAgICAgIGNvbmZpZy5zdXJmYWNlVHlwZSAgICAgICAgICAgPSBFR0xfUEJVRkZFUl9CSVQgfCBF
R0xfV0lORE9XX0JJVCB8IEVHTF9TV0FQX0JFSEFWSU9SX1BSRVNFUlZFRF9CSVQ7CisgICAgICAg
ICAgICBjb25maWcudHJhbnNwYXJlbnRUeXBlICAgICAgID0gRUdMX05PTkU7CisgICAgICAgICAg
ICBjb25maWcudHJhbnNwYXJlbnRSZWRWYWx1ZSAgID0gMDsKKyAgICAgICAgICAgIGNvbmZpZy50
cmFuc3BhcmVudEdyZWVuVmFsdWUgPSAwOworICAgICAgICAgICAgY29uZmlnLnRyYW5zcGFyZW50
Qmx1ZVZhbHVlICA9IDA7CisgICAgICAgICAgICBjb25maWcub3B0aW1hbE9yaWVudGF0aW9uICAg
ID0gb3B0aW1hbFN1cmZhY2VPcmllbnRhdGlvbjsKKworICAgICAgICAgICAgY29uZmlncy5hZGQo
Y29uZmlnKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjMzLDYgKzEwMTAsNDQgQEAKICAgICBy
ZXR1cm4gY29uZmlnczsKIH0KIAordm9pZCBSZW5kZXJlcjExOjpnZW5lcmF0ZURpc3BsYXlFeHRl
bnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0Cit7Cisg
ICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPSB0cnVlOworCisgICAg
aWYgKGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpKQorICAgIHsKKyAgICAgICAgb3V0RXh0ZW5zaW9u
cy0+ZDNkU2hhcmVIYW5kbGVDbGllbnRCdWZmZXIgICAgID0gdHJ1ZTsKKyAgICAgICAgb3V0RXh0
ZW5zaW9ucy0+c3VyZmFjZUQzRFRleHR1cmUyRFNoYXJlSGFuZGxlID0gdHJ1ZTsKKyAgICB9CisK
KyAgICBvdXRFeHRlbnNpb25zLT5rZXllZE11dGV4ID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25z
LT5xdWVyeVN1cmZhY2VQb2ludGVyID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25zLT53aW5kb3dG
aXhlZFNpemUgICAgID0gdHJ1ZTsKKworICAgIC8vIElmIHByZXNlbnQgcGF0aCBmYXN0IGlzIGFj
dGl2ZSB0aGVuIHRoZSBzdXJmYWNlIG9yaWVudGF0aW9uIGV4dGVuc2lvbiBpc24ndCBzdXBwb3J0
ZWQKKyAgICBvdXRFeHRlbnNpb25zLT5zdXJmYWNlT3JpZW50YXRpb24gPSAhbVByZXNlbnRQYXRo
RmFzdEVuYWJsZWQ7CisKKyAgICAvLyBEM0QxMSBkb2VzIG5vdCBzdXBwb3J0IHByZXNlbnQgd2l0
aCBkaXJ0eSByZWN0YW5nbGVzIHVudGlsIERYR0kgMS4yLgorICAgIG91dEV4dGVuc2lvbnMtPnBv
c3RTdWJCdWZmZXIgPSBtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNEWEdJMV8yOworCisg
ICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCA9IHRydWU7CisKKyAgICBvdXRFeHRlbnNp
b25zLT5kZXZpY2VRdWVyeSA9IHRydWU7CisKKyAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVDb250
ZXh0Tm9FcnJvciA9IHRydWU7CisKKyAgICBvdXRFeHRlbnNpb25zLT5pbWFnZSAgICAgICAgICAg
ICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmltYWdlQmFzZSAgICAgICAgICAgICA9
IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+Z2xUZXh0dXJlMkRJbWFnZSAgICAgID0gdHJ1ZTsK
KyAgICBvdXRFeHRlbnNpb25zLT5nbFRleHR1cmVDdWJlbWFwSW1hZ2UgPSB0cnVlOworICAgIG91
dEV4dGVuc2lvbnMtPmdsUmVuZGVyYnVmZmVySW1hZ2UgICA9IHRydWU7CisKKyAgICBvdXRFeHRl
bnNpb25zLT5zdHJlYW0gPSB0cnVlOworCisgICAgb3V0RXh0ZW5zaW9ucy0+ZmxleGlibGVTdXJm
YWNlQ29tcGF0aWJpbGl0eSA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+ZGlyZWN0Q29tcG9z
aXRpb24gICAgICAgICAgICA9ICEhbURDb21wTW9kdWxlOworfQorCiBnbDo6RXJyb3IgUmVuZGVy
ZXIxMTo6Zmx1c2goKQogewogICAgIG1EZXZpY2VDb250ZXh0LT5GbHVzaCgpOwpAQCAtNjgyLDQw
ICsxMDk3LDI4IEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWJv
b2wgUmVuZGVyZXIxMTo6c2hvdWxkQ3JlYXRlQ2hpbGRXaW5kb3dGb3JTdXJmYWNlKEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAorU3dhcENoYWluRDNEICpSZW5kZXJlcjExOjpjcmVh
dGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVm
ZmVyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
aW50IG9yaWVudGF0aW9uKQogewotI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NU
T1JFKQotICAgIC8vIEluIG9yZGVyIHRvIGNyZWF0ZSBhIHN3YXAgY2hhaW4gZm9yIGFuIEhXTkQg
b3duZWQgYnkgYW5vdGhlciBwcm9jZXNzLCBEWEdJIDEuMiBpcyByZXF1aXJlZC4KLSAgICAvLyBU
aGUgZWFzaWVzdCB3YXkgdG8gY2hlY2sgaXMgdG8gcXVlcnkgZm9yIGEgSURYR0lEZXZpY2UyLgot
ICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJyZW50UHJvY2Vzc0lkKCk7Ci0gICAg
RFdPUkQgd25kUHJvY2Vzc0lkOwotICAgIEdldFdpbmRvd1RocmVhZFByb2Nlc3NJZCh3aW5kb3cs
ICZ3bmRQcm9jZXNzSWQpOwotICAgIGlmIChjdXJyZW50UHJvY2Vzc0lkID09IHduZFByb2Nlc3NJ
ZCkKKyAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjExKHRoaXMsIG5hdGl2ZVdpbmRvdywgc2hhcmVI
YW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3JpZW50YXRpb24pOworfQorCitDb21waWxlckltcGwgKlJlbmRlcmVy
MTE6OmNyZWF0ZUNvbXBpbGVyKCkKK3sKKyAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZl
YXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewotICAgICAgICAvLyBX
aW5kb3cgaXMgZnJvbSB0aGlzIHByb2Nlc3MsIGNhbiBhbHdheXMgY3JlYXRlIGEgc3dhcCBjaGFp
biBmb3IgaXQKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbmV3IENvbXBp
bGVyRDNEKFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCk7CiAgICAgfQotCi0gICAgSURYR0lEZXZp
Y2UyICpkeGdpRGV2aWNlMiA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSURldmlj
ZTI+KG1EZXZpY2UpOwotICAgIGlmIChkeGdpRGV2aWNlMiAhPSBudWxscHRyKQorICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIC8vIERYR0kgMS4yIGlzIGF2YWlsYWJsZSwgY2FuIGNyZWF0ZSBhIHN3
YXAgY2hhaW4gZm9yIHRoaXMgY3Jvc3MtcHJvY2VzcyB3aW5kb3cKLSAgICAgICAgU2FmZVJlbGVh
c2UoZHhnaURldmljZTIpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBu
ZXcgQ29tcGlsZXJEM0QoU0hfSExTTF80XzFfT1VUUFVUKTsKICAgICB9Ci0KLSAgICAvLyBEWEdJ
IDEuMiBpcyBub3QgYXZhaWxhYmxlLCBuZWVkIHRvIGNyZWF0ZSBhIGNoaWxkIHdpbmRvdy4KLSAg
ICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKLVN3
YXBDaGFpbkQzRCAqUmVuZGVyZXIxMTo6Y3JlYXRlU3dhcENoYWluKE5hdGl2ZVdpbmRvdyBuYXRp
dmVXaW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdM
ZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKLXsKLSAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjExKHRo
aXMsIG5hdGl2ZVdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVm
ZmVyRm9ybWF0KTsKLX0KLQogdm9pZCAqUmVuZGVyZXIxMTo6Z2V0RDNERGV2aWNlKCkKIHsKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obURldmljZSk7CkBAIC03MzgsMTAgKzEx
NDEsMTAgQEAKICAgICAgICAgaWYgKHRleFN0b3JhZ2UpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFRleHR1cmVTdG9yYWdlMTEgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTE+KHRl
eFN0b3JhZ2UpOwotICAgICAgICAgICAgZXJyb3IgPSBzdG9yYWdlMTEtPmdlbmVyYXRlU3dpenps
ZXModGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuc3dpenpsZVJlZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0
ZSgpLnN3aXp6bGVHcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLnN3aXp6bGVCbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2Ft
cGxlclN0YXRlKCkuc3dpenpsZUFscGhhKTsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJl
U3RhdGUgJnRleHR1cmVTdGF0ZSA9IHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpOworICAgICAg
ICAgICAgZXJyb3IgPQorICAgICAgICAgICAgICAgIHN0b3JhZ2UxMS0+Z2VuZXJhdGVTd2l6emxl
cyh0ZXh0dXJlU3RhdGUuc3dpenpsZVJlZCwgdGV4dHVyZVN0YXRlLnN3aXp6bGVHcmVlbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVN0YXRlLnN3
aXp6bGVCbHVlLCB0ZXh0dXJlU3RhdGUuc3dpenpsZUFscGhhKTsKICAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwpAQCAtNzUyLDExICsxMTU1LDEzIEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNh
bXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZVBhcmFtKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OnNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQog
ewogICAgIC8vIE1ha2Ugc3VyZSB0byBhZGQgdGhlIGxldmVsIG9mZnNldCBmb3Igb3VyIHRpbnkg
Y29tcHJlc3NlZCB0ZXh0dXJlIHdvcmthcm91bmQKICAgICBUZXh0dXJlRDNEICp0ZXh0dXJlRDNE
ID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+KHRleHR1cmUpOwotICAgIGdsOjpTYW1wbGVyU3RhdGUg
c2FtcGxlclN0YXRlSW50ZXJuYWwgPSBzYW1wbGVyU3RhdGVQYXJhbTsKIAogICAgIFRleHR1cmVT
dG9yYWdlICpzdG9yYWdlID0gbnVsbHB0cjsKICAgICBnbDo6RXJyb3IgZXJyb3IgPSB0ZXh0dXJl
RDNELT5nZXROYXRpdmVUZXh0dXJlKCZzdG9yYWdlKTsKQEAgLTc2OCwxNiArMTE3MywyMCBAQAog
ICAgIC8vIFN0b3JhZ2Ugc2hvdWxkIGV4aXN0LCB0ZXh0dXJlIHNob3VsZCBiZSBjb21wbGV0ZQog
ICAgIEFTU0VSVChzdG9yYWdlKTsKIAotICAgIHNhbXBsZXJTdGF0ZUludGVybmFsLmJhc2VMZXZl
bCArPSBzdG9yYWdlLT5nZXRUb3BMZXZlbCgpOworICAgIC8vIFNhbXBsZXIgbWV0YWRhdGEgdGhh
dCdzIHBhc3NlZCB0byBzaGFkZXJzIGluIHVuaWZvcm1zIGlzIHN0b3JlZCBzZXBhcmF0ZWx5IGZy
b20gcmVzdCBvZiB0aGUKKyAgICAvLyBzYW1wbGVyIHN0YXRlIHNpbmNlIGhhdmluZyBpdCBpbiBj
b250aWd1b3VzIG1lbW9yeSBtYWtlcyBpdCBwb3NzaWJsZSB0byBtZW1jcHkgdG8gYSBjb25zdGFu
dAorICAgIC8vIGJ1ZmZlciwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBzdGF0ZSBzZXQgYnkg
UFNTZXRTYW1wbGVycy9WU1NldFNhbXBsZXJzLgorICAgIFNhbXBsZXJNZXRhZGF0YUQzRDExICpt
ZXRhZGF0YSA9IG51bGxwdHI7CiAKICAgICBpZiAodHlwZSA9PSBnbDo6U0FNUExFUl9QSVhFTCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluZGV4KSA8
IGdldFJlbmRlcmVyQ2FwcygpLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKIAotICAgICAgICBpZiAo
bUZvcmNlU2V0UGl4ZWxTYW1wbGVyU3RhdGVzW2luZGV4XSB8fCBtZW1jbXAoJnNhbXBsZXJTdGF0
ZUludGVybmFsLCAmbUN1clBpeGVsU2FtcGxlclN0YXRlc1tpbmRleF0sIHNpemVvZihnbDo6U2Ft
cGxlclN0YXRlKSkgIT0gMCkKKyAgICAgICAgaWYgKG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRl
c1tpbmRleF0gfHwKKyAgICAgICAgICAgIG1lbWNtcCgmc2FtcGxlclN0YXRlLCAmbUN1clBpeGVs
U2FtcGxlclN0YXRlc1tpbmRleF0sIHNpemVvZihnbDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKICAg
ICAgICAgewogICAgICAgICAgICAgSUQzRDExU2FtcGxlclN0YXRlICpkeFNhbXBsZXJTdGF0ZSA9
IE5VTEw7Ci0gICAgICAgICAgICBlcnJvciA9IG1TdGF0ZUNhY2hlLmdldFNhbXBsZXJTdGF0ZShz
YW1wbGVyU3RhdGVJbnRlcm5hbCwgJmR4U2FtcGxlclN0YXRlKTsKKyAgICAgICAgICAgIGVycm9y
ID0gbVN0YXRlQ2FjaGUuZ2V0U2FtcGxlclN0YXRlKHNhbXBsZXJTdGF0ZSwgJmR4U2FtcGxlclN0
YXRlKTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtNzg2LDE5ICsxMTk1LDIyIEBACiAgICAg
ICAgICAgICBBU1NFUlQoZHhTYW1wbGVyU3RhdGUgIT0gTlVMTCk7CiAgICAgICAgICAgICBtRGV2
aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycyhpbmRleCwgMSwgJmR4U2FtcGxlclN0YXRlKTsKIAot
ICAgICAgICAgICAgbUN1clBpeGVsU2FtcGxlclN0YXRlc1tpbmRleF0gPSBzYW1wbGVyU3RhdGVJ
bnRlcm5hbDsKKyAgICAgICAgICAgIG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXNbaW5kZXhdID0gc2Ft
cGxlclN0YXRlOwogICAgICAgICB9CiAKICAgICAgICAgbUZvcmNlU2V0UGl4ZWxTYW1wbGVyU3Rh
dGVzW2luZGV4XSA9IGZhbHNlOworCisgICAgICAgIG1ldGFkYXRhID0gJm1TYW1wbGVyTWV0YWRh
dGFQUzsKICAgICB9CiAgICAgZWxzZSBpZiAodHlwZSA9PSBnbDo6U0FNUExFUl9WRVJURVgpCiAg
ICAgewogICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRleCkgPCBn
ZXRSZW5kZXJlckNhcHMoKS5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7CiAKLSAgICAgICAg
aWYgKG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXNbaW5kZXhdIHx8IG1lbWNtcCgmc2FtcGxl
clN0YXRlSW50ZXJuYWwsICZtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0sIHNpemVvZihn
bDo6U2FtcGxlclN0YXRlKSkgIT0gMCkKKyAgICAgICAgaWYgKG1Gb3JjZVNldFZlcnRleFNhbXBs
ZXJTdGF0ZXNbaW5kZXhdIHx8CisgICAgICAgICAgICBtZW1jbXAoJnNhbXBsZXJTdGF0ZSwgJm1D
dXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2luZGV4XSwgc2l6ZW9mKGdsOjpTYW1wbGVyU3RhdGUpKSAh
PSAwKQogICAgICAgICB7CiAgICAgICAgICAgICBJRDNEMTFTYW1wbGVyU3RhdGUgKmR4U2FtcGxl
clN0YXRlID0gTlVMTDsKLSAgICAgICAgICAgIGVycm9yID0gbVN0YXRlQ2FjaGUuZ2V0U2FtcGxl
clN0YXRlKHNhbXBsZXJTdGF0ZUludGVybmFsLCAmZHhTYW1wbGVyU3RhdGUpOworICAgICAgICAg
ICAgZXJyb3IgPSBtU3RhdGVDYWNoZS5nZXRTYW1wbGVyU3RhdGUoc2FtcGxlclN0YXRlLCAmZHhT
YW1wbGVyU3RhdGUpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC04MDcsMTMgKzEyMTksMTgg
QEAKICAgICAgICAgICAgIEFTU0VSVChkeFNhbXBsZXJTdGF0ZSAhPSBOVUxMKTsKICAgICAgICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldFNhbXBsZXJzKGluZGV4LCAxLCAmZHhTYW1wbGVyU3Rh
dGUpOwogCi0gICAgICAgICAgICBtQ3VyVmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF0gPSBzYW1w
bGVyU3RhdGVJbnRlcm5hbDsKKyAgICAgICAgICAgIG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzW2lu
ZGV4XSA9IHNhbXBsZXJTdGF0ZTsKICAgICAgICAgfQogCiAgICAgICAgIG1Gb3JjZVNldFZlcnRl
eFNhbXBsZXJTdGF0ZXNbaW5kZXhdID0gZmFsc2U7CisKKyAgICAgICAgbWV0YWRhdGEgPSAmbVNh
bXBsZXJNZXRhZGF0YVZTOwogICAgIH0KICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CiAKKyAgICBB
U1NFUlQobWV0YWRhdGEgIT0gbnVsbHB0cik7CisgICAgbWV0YWRhdGEtPnVwZGF0ZShpbmRleCwg
KnRleHR1cmUpOworCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKQEAg
LTgzOCwxMCArMTI1NSwxMCBAQAogICAgICAgICBUZXh0dXJlU3RvcmFnZTExICpzdG9yYWdlMTEg
PSBHZXRBczxUZXh0dXJlU3RvcmFnZTExPih0ZXhTdG9yYWdlKTsKIAogICAgICAgICAvLyBNYWtl
IHN1cmUgdG8gYWRkIHRoZSBsZXZlbCBvZmZzZXQgZm9yIG91ciB0aW55IGNvbXByZXNzZWQgdGV4
dHVyZSB3b3JrYXJvdW5kCi0gICAgICAgIGdsOjpTYW1wbGVyU3RhdGUgc2FtcGxlclN0YXRlID0g
dGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCk7Ci0gICAgICAgIHNhbXBsZXJTdGF0ZS5iYXNlTGV2
ZWwgKz0gc3RvcmFnZTExLT5nZXRUb3BMZXZlbCgpOworICAgICAgICBnbDo6VGV4dHVyZVN0YXRl
IHRleHR1cmVTdGF0ZSA9IHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpOworICAgICAgICB0ZXh0
dXJlU3RhdGUuYmFzZUxldmVsICs9IHN0b3JhZ2UxMS0+Z2V0VG9wTGV2ZWwoKTsKIAotICAgICAg
ICBlcnJvciA9IHN0b3JhZ2UxMS0+Z2V0U1JWKHNhbXBsZXJTdGF0ZSwgJnRleHR1cmVTUlYpOwor
ICAgICAgICBlcnJvciA9IHN0b3JhZ2UxMS0+Z2V0U1JWKHRleHR1cmVTdGF0ZSwgJnRleHR1cmVT
UlYpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZXJyb3I7CkBAIC04NTcsMTYgKzEyNzQsMTYgQEAKICAgICBBU1NFUlQoKHR5cGUg
PT0gZ2w6OlNBTVBMRVJfUElYRUwgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbmRleCkg
PCBnZXRSZW5kZXJlckNhcHMoKS5tYXhUZXh0dXJlSW1hZ2VVbml0cykgfHwKICAgICAgICAgICAg
KHR5cGUgPT0gZ2w6OlNBTVBMRVJfVkVSVEVYICYmIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
aW5kZXgpIDwgZ2V0UmVuZGVyZXJDYXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpKTsK
IAotICAgIHNldFNoYWRlclJlc291cmNlKHR5cGUsIGluZGV4LCB0ZXh0dXJlU1JWKTsKKyAgICBt
U3RhdGVNYW5hZ2VyLnNldFNoYWRlclJlc291cmNlKHR5cGUsIGluZGV4LCB0ZXh0dXJlU1JWKTsK
IAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCiBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6c2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgdmVydGV4VW5pZm9y
bUJ1ZmZlcnNbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCBmcmFnbWVudFVuaWZvcm1CdWZmZXJzW10pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3Jt
QnVmZmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxHTGludD4gJmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMpCiB7Ci0gICAgZm9yICh1
bnNpZ25lZCBpbnQgdW5pZm9ybUJ1ZmZlckluZGV4ID0gMDsgdW5pZm9ybUJ1ZmZlckluZGV4IDwg
ZGF0YS5jYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzOyB1bmlmb3JtQnVmZmVySW5kZXgrKykK
KyAgICBmb3IgKHNpemVfdCB1bmlmb3JtQnVmZmVySW5kZXggPSAwOyB1bmlmb3JtQnVmZmVySW5k
ZXggPCB2ZXJ0ZXhVbmlmb3JtQnVmZmVycy5zaXplKCk7IHVuaWZvcm1CdWZmZXJJbmRleCsrKQog
ICAgIHsKICAgICAgICAgR0xpbnQgYmluZGluZyA9IHZlcnRleFVuaWZvcm1CdWZmZXJzW3VuaWZv
cm1CdWZmZXJJbmRleF07CiAKQEAgLTg3NSwyMiArMTI5MiwzNCBAQAogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6QnVmZmVyICp1bmlmb3JtQnVmZmVyID0g
ZGF0YS5zdGF0ZS0+Z2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoYmluZGluZyk7Ci0gICAgICAgIEdM
aW50cHRyIHVuaWZvcm1CdWZmZXJPZmZzZXQgPSBkYXRhLnN0YXRlLT5nZXRJbmRleGVkVW5pZm9y
bUJ1ZmZlck9mZnNldChiaW5kaW5nKTsKLSAgICAgICAgR0xzaXplaXB0ciB1bmlmb3JtQnVmZmVy
U2l6ZSA9IGRhdGEuc3RhdGUtPmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyU2l6ZShiaW5kaW5nKTsK
KyAgICAgICAgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJnVuaWZvcm1C
dWZmZXIgPQorICAgICAgICAgICAgZGF0YS5zdGF0ZS0+Z2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIo
YmluZGluZyk7CisgICAgICAgIEdMaW50cHRyIHVuaWZvcm1CdWZmZXJPZmZzZXQgPSB1bmlmb3Jt
QnVmZmVyLmdldE9mZnNldCgpOworICAgICAgICBHTHNpemVpcHRyIHVuaWZvcm1CdWZmZXJTaXpl
ID0gdW5pZm9ybUJ1ZmZlci5nZXRTaXplKCk7CiAKLSAgICAgICAgaWYgKHVuaWZvcm1CdWZmZXIp
CisgICAgICAgIGlmICh1bmlmb3JtQnVmZmVyLmdldCgpICE9IG51bGxwdHIpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjEx
Pih1bmlmb3JtQnVmZmVyKTsKKyAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlID0g
R2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdldCgpKTsKICAgICAgICAgICAgIElE
M0QxMUJ1ZmZlciAqY29uc3RhbnRCdWZmZXI7CiAKLSAgICAgICAgICAgIGlmIChtU3VwcG9ydHND
b25zdGFudEJ1ZmZlck9mZnNldHMpCisgICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VD
YXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZzZXRzKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVyU3RvcmFnZS0+Z2V0QnVmZmVyKEJVRkZF
Ul9VU0FHRV9VTklGT1JNKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlck9yRXJyb3IgPSBi
dWZmZXJTdG9yYWdlLT5nZXRCdWZmZXIoQlVGRkVSX1VTQUdFX1VOSUZPUk0pOworICAgICAgICAg
ICAgICAgIGlmIChidWZmZXJPckVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVyT3JF
cnJvci5nZXRSZXN1bHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlciA9IGJ1ZmZlclN0b3JhZ2Ut
PmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZl
clNpemUpOworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyT3JFcnJvciA9CisgICAgICAgICAg
ICAgICAgICAgIGJ1ZmZlclN0b3JhZ2UtPmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1
ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUpOworICAgICAgICAgICAgICAgIGlmIChidWZm
ZXJPckVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVyT3JFcnJvci5nZXRSZXN1bHQo
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFjb25zdGFudEJ1ZmZlcikKQEAg
LTkwMiwxNyArMTMzMSwyMSBAQAogICAgICAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZm
ZXJWU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJPZmZzZXQgfHwK
ICAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNTaXplW3VuaWZvcm1CdWZm
ZXJJbmRleF0gIT0gdW5pZm9ybUJ1ZmZlclNpemUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1TdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyAmJiB1bmlmb3JtQnVmZmVy
U2l6ZSAhPSAwKQorICAgICAgICAgICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMuc3Vw
cG9ydHNDb25zdGFudEJ1ZmZlck9mZnNldHMgJiYgdW5pZm9ybUJ1ZmZlclNpemUgIT0gMCkKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFVJTlQgZmlyc3RDb25zdGFudCA9
IDAsIG51bUNvbnN0YW50cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0ZUNvbnN0
YW50QnVmZmVyUGFyYW1zKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJTaXplLCAm
Zmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0MS0+VlNTZXRDb25zdGFudEJ1ZmZlcnMxKGdldFJlc2VydmVkVmVydGV4VW5pZm9y
bUJ1ZmZlcnMoKSArIHVuaWZvcm1CdWZmZXJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmNvbnN0YW50QnVmZmVyLCAm
Zmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7CisgICAgICAgICAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0MS0+VlNTZXRDb25zdGFudEJ1ZmZlcnMxKAorICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtQnVmZmVycygpICsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1CdWZmZXJJbmRleCks
CisgICAgICAgICAgICAgICAgICAgICAgICAxLCAmY29uc3RhbnRCdWZmZXIsICZmaXJzdENvbnN0
YW50LCAmbnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbURldmljZUNvbnRl
eHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMo
KSArIHVuaWZvcm1CdWZmZXJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1ZmZlcik7CisgICAgICAgICAg
ICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldENvbnN0YW50QnVmZmVycygKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3Jt
QnVmZmVySW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmNvbnN0YW50QnVmZmVy
KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50
QnVmZmVyVlNbdW5pZm9ybUJ1ZmZlckluZGV4XSA9IGJ1ZmZlclN0b3JhZ2UtPmdldFNlcmlhbCgp
OwpAQCAtOTIyLDcgKzEzNTUsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgdW5pZm9ybUJ1ZmZlckluZGV4ID0gMDsgdW5pZm9ybUJ1ZmZlckluZGV4IDwgZGF0
YS5jYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3M7IHVuaWZvcm1CdWZmZXJJbmRleCsrKQor
ICAgIGZvciAoc2l6ZV90IHVuaWZvcm1CdWZmZXJJbmRleCA9IDA7IHVuaWZvcm1CdWZmZXJJbmRl
eCA8IGZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpOyB1bmlmb3JtQnVmZmVySW5kZXgrKykK
ICAgICB7CiAgICAgICAgIEdMaW50IGJpbmRpbmcgPSBmcmFnbWVudFVuaWZvcm1CdWZmZXJzW3Vu
aWZvcm1CdWZmZXJJbmRleF07CiAKQEAgLTkzMSwyMiArMTM2NCwzNCBAQAogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBnbDo6QnVmZmVyICp1bmlmb3JtQnVmZmVy
ID0gZGF0YS5zdGF0ZS0+Z2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoYmluZGluZyk7Ci0gICAgICAg
IEdMaW50cHRyIHVuaWZvcm1CdWZmZXJPZmZzZXQgPSBkYXRhLnN0YXRlLT5nZXRJbmRleGVkVW5p
Zm9ybUJ1ZmZlck9mZnNldChiaW5kaW5nKTsKLSAgICAgICAgR0xzaXplaXB0ciB1bmlmb3JtQnVm
ZmVyU2l6ZSA9IGRhdGEuc3RhdGUtPmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyU2l6ZShiaW5kaW5n
KTsKKyAgICAgICAgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJnVuaWZv
cm1CdWZmZXIgPQorICAgICAgICAgICAgZGF0YS5zdGF0ZS0+Z2V0SW5kZXhlZFVuaWZvcm1CdWZm
ZXIoYmluZGluZyk7CisgICAgICAgIEdMaW50cHRyIHVuaWZvcm1CdWZmZXJPZmZzZXQgPSB1bmlm
b3JtQnVmZmVyLmdldE9mZnNldCgpOworICAgICAgICBHTHNpemVpcHRyIHVuaWZvcm1CdWZmZXJT
aXplID0gdW5pZm9ybUJ1ZmZlci5nZXRTaXplKCk7CiAKLSAgICAgICAgaWYgKHVuaWZvcm1CdWZm
ZXIpCisgICAgICAgIGlmICh1bmlmb3JtQnVmZmVyLmdldCgpICE9IG51bGxwdHIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZl
cjExPih1bmlmb3JtQnVmZmVyKTsKKyAgICAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdl
ID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlmb3JtQnVmZmVyLmdldCgpKTsKICAgICAgICAgICAg
IElEM0QxMUJ1ZmZlciAqY29uc3RhbnRCdWZmZXI7CiAKLSAgICAgICAgICAgIGlmIChtU3VwcG9y
dHNDb25zdGFudEJ1ZmZlck9mZnNldHMpCisgICAgICAgICAgICBpZiAobVJlbmRlcmVyMTFEZXZp
Y2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZzZXRzKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVyU3RvcmFnZS0+Z2V0QnVmZmVyKEJV
RkZFUl9VU0FHRV9VTklGT1JNKTsKKyAgICAgICAgICAgICAgICBhdXRvIGJ1ZmZlck9yRXJyb3Ig
PSBidWZmZXJTdG9yYWdlLT5nZXRCdWZmZXIoQlVGRkVSX1VTQUdFX1VOSUZPUk0pOworICAgICAg
ICAgICAgICAgIGlmIChidWZmZXJPckVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVy
T3JFcnJvci5nZXRSZXN1bHQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlciA9IGJ1ZmZlclN0b3Jh
Z2UtPmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1
ZmZlclNpemUpOworICAgICAgICAgICAgICAgIGF1dG8gYnVmZmVyT3JFcnJvciA9CisgICAgICAg
ICAgICAgICAgICAgIGJ1ZmZlclN0b3JhZ2UtPmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9y
bUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUpOworICAgICAgICAgICAgICAgIGlmIChi
dWZmZXJPckVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBidWZmZXJPckVycm9yLmdldEVycm9yKCk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyID0gYnVmZmVyT3JFcnJvci5nZXRSZXN1
bHQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFjb25zdGFudEJ1ZmZlcikK
QEAgLTk1OCwxNyArMTQwMywyMSBAQAogICAgICAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRC
dWZmZXJQU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJPZmZzZXQg
fHwKICAgICAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNTaXplW3VuaWZvcm1C
dWZmZXJJbmRleF0gIT0gdW5pZm9ybUJ1ZmZlclNpemUpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1TdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyAmJiB1bmlmb3JtQnVm
ZmVyU2l6ZSAhPSAwKQorICAgICAgICAgICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMu
c3VwcG9ydHNDb25zdGFudEJ1ZmZlck9mZnNldHMgJiYgdW5pZm9ybUJ1ZmZlclNpemUgIT0gMCkK
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFVJTlQgZmlyc3RDb25zdGFu
dCA9IDAsIG51bUNvbnN0YW50cyA9IDA7CiAgICAgICAgICAgICAgICAgICAgIENhbGN1bGF0ZUNv
bnN0YW50QnVmZmVyUGFyYW1zKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJTaXpl
LCAmZmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIG1E
ZXZpY2VDb250ZXh0MS0+UFNTZXRDb25zdGFudEJ1ZmZlcnMxKGdldFJlc2VydmVkRnJhZ21lbnRV
bmlmb3JtQnVmZmVycygpICsgdW5pZm9ybUJ1ZmZlckluZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAmY29uc3RhbnRCdWZm
ZXIsICZmaXJzdENvbnN0YW50LCAmbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgICAgICAgICAgICAg
bURldmljZUNvbnRleHQxLT5QU1NldENvbnN0YW50QnVmZmVyczEoCisgICAgICAgICAgICAgICAg
ICAgICAgICBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtQnVmZmVy
SW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmNvbnN0YW50QnVmZmVyLCAmZmly
c3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycyhnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9y
bUJ1ZmZlcnMoKSArIHVuaWZvcm1CdWZmZXJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZjb25zdGFudEJ1ZmZlcik7Cisg
ICAgICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtQnVmZmVy
cygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KHVuaWZvcm1CdWZmZXJJbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAxLCAmY29u
c3RhbnRCdWZmZXIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIG1DdXJy
ZW50Q29uc3RhbnRCdWZmZXJQU1t1bmlmb3JtQnVmZmVySW5kZXhdID0gYnVmZmVyU3RvcmFnZS0+
Z2V0U2VyaWFsKCk7CkBAIC05ODEsMjI5ICsxNDMwLDYwIEBACiAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRSYXN0ZXJpemVy
U3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpCitnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6dXBkYXRlU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3
TW9kZSkKIHsKLSAgICBpZiAobUZvcmNlU2V0UmFzdGVyU3RhdGUgfHwgbWVtY21wKCZyYXN0ZXJT
dGF0ZSwgJm1DdXJSYXN0ZXJTdGF0ZSwgc2l6ZW9mKGdsOjpSYXN0ZXJpemVyU3RhdGUpKSAhPSAw
KQorICAgIC8vIEFwcGxpZXMgdGhlIHJlbmRlciB0YXJnZXQgc3VyZmFjZSwgZGVwdGggc3RlbmNp
bCBzdXJmYWNlLCB2aWV3cG9ydCByZWN0YW5nbGUgYW5kCisgICAgLy8gc2Npc3NvciByZWN0YW5n
bGUgdG8gdGhlIHJlbmRlcmVyCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
ck9iamVjdCA9IGRhdGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VSVChm
cmFtZWJ1ZmZlck9iamVjdCAmJiBmcmFtZWJ1ZmZlck9iamVjdC0+Y2hlY2tTdGF0dXMoZGF0YSkg
PT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOworICAgIGdsOjpFcnJvciBlcnJvciA9IGFwcGx5
UmVuZGVyVGFyZ2V0KGZyYW1lYnVmZmVyT2JqZWN0KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQogICAgIHsKLSAgICAgICAgSUQzRDExUmFzdGVyaXplclN0YXRlICpkeFJhc3RlclN0YXRlID0g
TlVMTDsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVN0YXRlQ2FjaGUuZ2V0UmFzdGVyaXpl
clN0YXRlKHJhc3RlclN0YXRlLCBtU2Npc3NvckVuYWJsZWQsICZkeFJhc3RlclN0YXRlKTsKLSAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGVycm9yOwotICAgICAgICB9Ci0KLSAgICAgICAgbURldmljZUNvbnRleHQtPlJTU2V0U3RhdGUo
ZHhSYXN0ZXJTdGF0ZSk7Ci0KLSAgICAgICAgbUN1clJhc3RlclN0YXRlID0gcmFzdGVyU3RhdGU7
CisgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBtRm9yY2VTZXRSYXN0ZXJTdGF0
ZSA9IGZhbHNlOworICAgIC8vIFNldCB0aGUgcHJlc2VudCBwYXRoIHN0YXRlCisgICAgY29uc3Qg
Ym9vbCBwcmVzZW50UGF0aEZhc3RBY3RpdmUgPQorICAgICAgICBVc2VQcmVzZW50UGF0aEZhc3Qo
dGhpcywgZnJhbWVidWZmZXJPYmplY3QtPmdldEZpcnN0Q29sb3JidWZmZXIoKSk7CisgICAgbVN0
YXRlTWFuYWdlci51cGRhdGVQcmVzZW50UGF0aChwcmVzZW50UGF0aEZhc3RBY3RpdmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlck9iamVjdC0+Z2V0Rmly
c3RDb2xvcmJ1ZmZlcigpKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwot
fQorICAgIC8vIFNldHRpbmcgdmlld3BvcnQgc3RhdGUKKyAgICBtU3RhdGVNYW5hZ2VyLnNldFZp
ZXdwb3J0KGRhdGEuY2FwcywgZGF0YS5zdGF0ZS0+Z2V0Vmlld3BvcnQoKSwgZGF0YS5zdGF0ZS0+
Z2V0TmVhclBsYW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXRl
LT5nZXRGYXJQbGFuZSgpKTsKIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldEJsZW5kU3RhdGUo
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OkJsZW5kU3RhdGUg
JmJsZW5kU3RhdGUsIGNvbnN0IGdsOjpDb2xvckYgJmJsZW5kQ29sb3IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzaykKLXsKLSAgICBp
ZiAobUZvcmNlU2V0QmxlbmRTdGF0ZSB8fAotICAgICAgICBtZW1jbXAoJmJsZW5kU3RhdGUsICZt
Q3VyQmxlbmRTdGF0ZSwgc2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSkgIT0gMCB8fAotICAgICAgICBt
ZW1jbXAoJmJsZW5kQ29sb3IsICZtQ3VyQmxlbmRDb2xvciwgc2l6ZW9mKGdsOjpDb2xvckYpKSAh
PSAwIHx8Ci0gICAgICAgIHNhbXBsZU1hc2sgIT0gbUN1clNhbXBsZU1hc2spCi0gICAgewotICAg
ICAgICBJRDNEMTFCbGVuZFN0YXRlICpkeEJsZW5kU3RhdGUgPSBOVUxMOwotICAgICAgICBnbDo6
RXJyb3IgZXJyb3IgPSBtU3RhdGVDYWNoZS5nZXRCbGVuZFN0YXRlKGZyYW1lYnVmZmVyLCBibGVu
ZFN0YXRlLCAmZHhCbGVuZFN0YXRlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgLy8gU2V0
dGluZyBzY2lzc29yIHN0YXRlCisgICAgbVN0YXRlTWFuYWdlci5zZXRTY2lzc29yUmVjdGFuZ2xl
KGRhdGEuc3RhdGUtPmdldFNjaXNzb3IoKSwgZGF0YS5zdGF0ZS0+aXNTY2lzc29yVGVzdEVuYWJs
ZWQoKSk7CiAKLSAgICAgICAgQVNTRVJUKGR4QmxlbmRTdGF0ZSAhPSBOVUxMKTsKKyAgICAvLyBB
cHBseWluZyByYXN0ZXJpemVyIHN0YXRlIHRvIEQzRDExIGRldmljZQorICAgIGludCBzYW1wbGVz
ICAgICAgICAgICAgICAgICAgICA9IGZyYW1lYnVmZmVyT2JqZWN0LT5nZXRTYW1wbGVzKGRhdGEp
OworICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgcmFzdGVyaXplciA9IGRhdGEuc3RhdGUtPmdldFJh
c3Rlcml6ZXJTdGF0ZSgpOworICAgIHJhc3Rlcml6ZXIucG9pbnREcmF3TW9kZSAgICAgICA9IChk
cmF3TW9kZSA9PSBHTF9QT0lOVFMpOworICAgIHJhc3Rlcml6ZXIubXVsdGlTYW1wbGUgICAgICAg
ICA9IChzYW1wbGVzICE9IDApOwogCi0gICAgICAgIGZsb2F0IGJsZW5kQ29sb3JzWzRdID0gezAu
MGZ9OwotICAgICAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBHTF9DT05TVEFO
VF9BTFBIQSAmJiBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19DT05T
VEFOVF9BTFBIQSAmJgotICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xf
Q09OU1RBTlRfQUxQSEEgJiYgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xfT05FX01JTlVT
X0NPTlNUQU5UX0FMUEhBKQotICAgICAgICB7Ci0gICAgICAgICAgICBibGVuZENvbG9yc1swXSA9
IGJsZW5kQ29sb3IucmVkOwotICAgICAgICAgICAgYmxlbmRDb2xvcnNbMV0gPSBibGVuZENvbG9y
LmdyZWVuOwotICAgICAgICAgICAgYmxlbmRDb2xvcnNbMl0gPSBibGVuZENvbG9yLmJsdWU7Ci0g
ICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBibGVuZENvbG9yc1swXSA9IGJs
ZW5kQ29sb3IuYWxwaGE7Ci0gICAgICAgICAgICBibGVuZENvbG9yc1sxXSA9IGJsZW5kQ29sb3Iu
YWxwaGE7Ci0gICAgICAgICAgICBibGVuZENvbG9yc1syXSA9IGJsZW5kQ29sb3IuYWxwaGE7Ci0g
ICAgICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29sb3IuYWxwaGE7Ci0gICAgICAgIH0K
LQotICAgICAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKGR4QmxlbmRTdGF0ZSwg
YmxlbmRDb2xvcnMsIHNhbXBsZU1hc2spOwotCi0gICAgICAgIG1DdXJCbGVuZFN0YXRlID0gYmxl
bmRTdGF0ZTsKLSAgICAgICAgbUN1ckJsZW5kQ29sb3IgPSBibGVuZENvbG9yOwotICAgICAgICBt
Q3VyU2FtcGxlTWFzayA9IHNhbXBsZU1hc2s7Ci0gICAgfQotCi0gICAgbUZvcmNlU2V0QmxlbmRT
dGF0ZSA9IGZhbHNlOwotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci19Ci0K
LWdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVw
dGhTdGVuY2lsU3RhdGUgJmRlcHRoU3RlbmNpbFN0YXRlLCBpbnQgc3RlbmNpbFJlZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYs
IGJvb2wgZnJvbnRGYWNlQ0NXKQotewotICAgIGlmIChtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0
ZSB8fAotICAgICAgICBtZW1jbXAoJmRlcHRoU3RlbmNpbFN0YXRlLCAmbUN1ckRlcHRoU3RlbmNp
bFN0YXRlLCBzaXplb2YoZ2w6OkRlcHRoU3RlbmNpbFN0YXRlKSkgIT0gMCB8fAotICAgICAgICBz
dGVuY2lsUmVmICE9IG1DdXJTdGVuY2lsUmVmIHx8IHN0ZW5jaWxCYWNrUmVmICE9IG1DdXJTdGVu
Y2lsQmFja1JlZikKKyAgICBlcnJvciA9IG1TdGF0ZU1hbmFnZXIuc2V0UmFzdGVyaXplclN0YXRl
KHJhc3Rlcml6ZXIpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBB
U1NFUlQoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayA9PSBkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayk7Ci0gICAgICAgIEFTU0VSVChzdGVuY2lsUmVmID09
IHN0ZW5jaWxCYWNrUmVmKTsKLSAgICAgICAgQVNTRVJUKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5j
aWxNYXNrID09IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzayk7Ci0KLSAgICAgICAg
SUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxMOwotICAg
ICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtU3RhdGVDYWNoZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZShk
ZXB0aFN0ZW5jaWxTdGF0ZSwgJmR4RGVwdGhTdGVuY2lsU3RhdGUpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KLQotICAgICAgICBBU1NFUlQoZHhEZXB0aFN0ZW5jaWxTdGF0ZSk7Ci0KLSAgICAgICAg
Ly8gTWF4IEQzRDExIHN0ZW5jaWwgcmVmZXJlbmNlIHZhbHVlIGlzIDB4RkYsIGNvcnJlc3BvbmRp
bmcgdG8gdGhlIG1heCA4IGJpdHMgaW4gYSBzdGVuY2lsIGJ1ZmZlcgotICAgICAgICAvLyBHTCBz
cGVjaWZpZXMgd2Ugc2hvdWxkIGNsYW1wIHRoZSByZWYgdmFsdWUgdG8gdGhlIG5lYXJlc3QgYml0
IGRlcHRoIHdoZW4gZG9pbmcgc3RlbmNpbCBvcHMKLSAgICAgICAgc3RhdGljX2Fzc2VydChEM0Qx
MV9ERUZBVUxUX1NURU5DSUxfUkVBRF9NQVNLID09IDB4RkYsICJVbmV4cGVjdGVkIHZhbHVlIG9m
IEQzRDExX0RFRkFVTFRfU1RFTkNJTF9SRUFEX01BU0siKTsKLSAgICAgICAgc3RhdGljX2Fzc2Vy
dChEM0QxMV9ERUZBVUxUX1NURU5DSUxfV1JJVEVfTUFTSyA9PSAweEZGLCAiVW5leHBlY3RlZCB2
YWx1ZSBvZiBEM0QxMV9ERUZBVUxUX1NURU5DSUxfV1JJVEVfTUFTSyIpOwotICAgICAgICBVSU5U
IGR4U3RlbmNpbFJlZiA9IHN0ZDo6bWluPFVJTlQ+KHN0ZW5jaWxSZWYsIDB4RkZ1KTsKLQotICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShkeERlcHRoU3RlbmNp
bFN0YXRlLCBkeFN0ZW5jaWxSZWYpOwotCi0gICAgICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSA9
IGRlcHRoU3RlbmNpbFN0YXRlOwotICAgICAgICBtQ3VyU3RlbmNpbFJlZiA9IHN0ZW5jaWxSZWY7
Ci0gICAgICAgIG1DdXJTdGVuY2lsQmFja1JlZiA9IHN0ZW5jaWxCYWNrUmVmOworICAgICAgICBy
ZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgPSBm
YWxzZTsKLQotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotfQotCi12b2lkIFJl
bmRlcmVyMTE6OnNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3Nv
ciwgYm9vbCBlbmFibGVkKQotewotICAgIGlmIChtRm9yY2VTZXRTY2lzc29yIHx8IG1lbWNtcCgm
c2Npc3NvciwgJm1DdXJTY2lzc29yLCBzaXplb2YoZ2w6OlJlY3RhbmdsZSkpICE9IDAgfHwKLSAg
ICAgICAgZW5hYmxlZCAhPSBtU2Npc3NvckVuYWJsZWQpCisgICAgLy8gU2V0dGluZyBibGVuZCBz
dGF0ZQorICAgIHVuc2lnbmVkIGludCBtYXNrID0gR2V0QmxlbmRTYW1wbGVNYXNrKGRhdGEsIHNh
bXBsZXMpOworICAgIGVycm9yID0gbVN0YXRlTWFuYWdlci5zZXRCbGVuZFN0YXRlKGZyYW1lYnVm
ZmVyT2JqZWN0LCBkYXRhLnN0YXRlLT5nZXRCbGVuZFN0YXRlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5zdGF0ZS0+Z2V0QmxlbmRDb2xvcigpLCBtYXNr
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgaWYgKGVuYWJsZWQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEQzRDExX1JFQ1QgcmVjdDsKLSAgICAgICAgICAgIHJl
Y3QubGVmdCA9IHN0ZDo6bWF4KDAsIHNjaXNzb3IueCk7Ci0gICAgICAgICAgICByZWN0LnRvcCA9
IHN0ZDo6bWF4KDAsIHNjaXNzb3IueSk7Ci0gICAgICAgICAgICByZWN0LnJpZ2h0ID0gc2Npc3Nv
ci54ICsgc3RkOjptYXgoMCwgc2Npc3Nvci53aWR0aCk7Ci0gICAgICAgICAgICByZWN0LmJvdHRv
bSA9IHNjaXNzb3IueSArIHN0ZDo6bWF4KDAsIHNjaXNzb3IuaGVpZ2h0KTsKLQotICAgICAgICAg
ICAgbURldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJlY3RzKDEsICZyZWN0KTsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChlbmFibGVkICE9IG1TY2lzc29yRW5hYmxlZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgbUZvcmNlU2V0UmFzdGVyU3RhdGUgPSB0cnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgbUN1clNjaXNzb3IgPSBzY2lzc29yOwotICAgICAgICBtU2Npc3NvckVuYWJsZWQgPSBl
bmFibGVkOworICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgbUZvcmNlU2V0U2Np
c3NvciA9IGZhbHNlOworICAgIC8vIFNldHRpbmcgZGVwdGggc3RlbmNpbCBzdGF0ZQorICAgIGVy
cm9yID0gbVN0YXRlTWFuYWdlci5zZXREZXB0aFN0ZW5jaWxTdGF0ZSgqZGF0YS5zdGF0ZSk7Cisg
ICAgcmV0dXJuIGVycm9yOwogfQogCi12b2lkIFJlbmRlcmVyMTE6OnNldFZpZXdwb3J0KGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQgekZhciwgR0xlbnVt
IGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZVZpZXdwb3J0KQordm9pZCBSZW5kZXJlcjExOjpzeW5jU3RhdGUoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmJpdG1hc2spCiB7
Ci0gICAgZ2w6OlJlY3RhbmdsZSBhY3R1YWxWaWV3cG9ydCA9IHZpZXdwb3J0OwotICAgIGZsb2F0
IGFjdHVhbFpOZWFyID0gZ2w6OmNsYW1wMDEoek5lYXIpOwotICAgIGZsb2F0IGFjdHVhbFpGYXIg
PSBnbDo6Y2xhbXAwMSh6RmFyKTsKLSAgICBpZiAoaWdub3JlVmlld3BvcnQpCi0gICAgewotICAg
ICAgICBhY3R1YWxWaWV3cG9ydC54ID0gMDsKLSAgICAgICAgYWN0dWFsVmlld3BvcnQueSA9IDA7
Ci0gICAgICAgIGFjdHVhbFZpZXdwb3J0LndpZHRoID0gbVJlbmRlclRhcmdldERlc2Mud2lkdGg7
Ci0gICAgICAgIGFjdHVhbFZpZXdwb3J0LmhlaWdodCA9IG1SZW5kZXJUYXJnZXREZXNjLmhlaWdo
dDsKLSAgICAgICAgYWN0dWFsWk5lYXIgPSAwLjBmOwotICAgICAgICBhY3R1YWxaRmFyID0gMS4w
ZjsKLSAgICB9Ci0KLSAgICBib29sIHZpZXdwb3J0Q2hhbmdlZCA9IG1Gb3JjZVNldFZpZXdwb3J0
IHx8IG1lbWNtcCgmYWN0dWFsVmlld3BvcnQsICZtQ3VyVmlld3BvcnQsIHNpemVvZihnbDo6UmVj
dGFuZ2xlKSkgIT0gMCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsWk5lYXIg
IT0gbUN1ck5lYXIgfHwgYWN0dWFsWkZhciAhPSBtQ3VyRmFyOwotCi0gICAgaWYgKHZpZXdwb3J0
Q2hhbmdlZCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpDYXBzJiBjYXBzID0gZ2V0UmVuZGVy
ZXJDYXBzKCk7Ci0KLSAgICAgICAgaW50IGR4TWF4Vmlld3BvcnRCb3VuZHNYID0gc3RhdGljX2Nh
c3Q8aW50PihjYXBzLm1heFZpZXdwb3J0V2lkdGgpOwotICAgICAgICBpbnQgZHhNYXhWaWV3cG9y
dEJvdW5kc1kgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhcHMubWF4Vmlld3BvcnRIZWlnaHQpOwotICAg
ICAgICBpbnQgZHhNaW5WaWV3cG9ydEJvdW5kc1ggPSAtZHhNYXhWaWV3cG9ydEJvdW5kc1g7Ci0g
ICAgICAgIGludCBkeE1pblZpZXdwb3J0Qm91bmRzWSA9IC1keE1heFZpZXdwb3J0Qm91bmRzWTsK
LQotICAgICAgICBpZiAobUZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZlYXR1cmUgTGV2ZWwgOSB2aWV3cG9ydHMgc2hvdWxk
bid0IGV4Y2VlZCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgcmVuZGVydGFyZ2V0LgotICAgICAgICAg
ICAgZHhNYXhWaWV3cG9ydEJvdW5kc1ggPSBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aDsKLSAgICAg
ICAgICAgIGR4TWF4Vmlld3BvcnRCb3VuZHNZID0gbVJlbmRlclRhcmdldERlc2MuaGVpZ2h0Owot
ICAgICAgICAgICAgZHhNaW5WaWV3cG9ydEJvdW5kc1ggPSAwOwotICAgICAgICAgICAgZHhNaW5W
aWV3cG9ydEJvdW5kc1kgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGR4Vmlld3BvcnRU
b3BMZWZ0WCA9IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC54LCBkeE1pblZpZXdwb3J0Qm91bmRz
WCwgZHhNYXhWaWV3cG9ydEJvdW5kc1gpOwotICAgICAgICBpbnQgZHhWaWV3cG9ydFRvcExlZnRZ
ID0gZ2w6OmNsYW1wKGFjdHVhbFZpZXdwb3J0LnksIGR4TWluVmlld3BvcnRCb3VuZHNZLCBkeE1h
eFZpZXdwb3J0Qm91bmRzWSk7Ci0gICAgICAgIGludCBkeFZpZXdwb3J0V2lkdGggPSAgICBnbDo6
Y2xhbXAoYWN0dWFsVmlld3BvcnQud2lkdGgsIDAsIGR4TWF4Vmlld3BvcnRCb3VuZHNYIC0gZHhW
aWV3cG9ydFRvcExlZnRYKTsKLSAgICAgICAgaW50IGR4Vmlld3BvcnRIZWlnaHQgPSAgIGdsOjpj
bGFtcChhY3R1YWxWaWV3cG9ydC5oZWlnaHQsIDAsIGR4TWF4Vmlld3BvcnRCb3VuZHNZIC0gZHhW
aWV3cG9ydFRvcExlZnRZKTsKLQotICAgICAgICBEM0QxMV9WSUVXUE9SVCBkeFZpZXdwb3J0Owot
ICAgICAgICBkeFZpZXdwb3J0LlRvcExlZnRYID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGR4Vmlld3Bv
cnRUb3BMZWZ0WCk7Ci0gICAgICAgIGR4Vmlld3BvcnQuVG9wTGVmdFkgPSBzdGF0aWNfY2FzdDxm
bG9hdD4oZHhWaWV3cG9ydFRvcExlZnRZKTsKLSAgICAgICAgZHhWaWV3cG9ydC5XaWR0aCA9ICAg
IHN0YXRpY19jYXN0PGZsb2F0PihkeFZpZXdwb3J0V2lkdGgpOwotICAgICAgICBkeFZpZXdwb3J0
LkhlaWdodCA9ICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGR4Vmlld3BvcnRIZWlnaHQpOwotICAgICAg
ICBkeFZpZXdwb3J0Lk1pbkRlcHRoID0gYWN0dWFsWk5lYXI7Ci0gICAgICAgIGR4Vmlld3BvcnQu
TWF4RGVwdGggPSBhY3R1YWxaRmFyOwotCi0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5SU1NldFZp
ZXdwb3J0cygxLCAmZHhWaWV3cG9ydCk7Ci0KLSAgICAgICAgbUN1clZpZXdwb3J0ID0gYWN0dWFs
Vmlld3BvcnQ7Ci0gICAgICAgIG1DdXJOZWFyID0gYWN0dWFsWk5lYXI7Ci0gICAgICAgIG1DdXJG
YXIgPSBhY3R1YWxaRmFyOwotCi0gICAgICAgIC8vIE9uIEZlYXR1cmUgTGV2ZWwgOV8qLCB3ZSBt
dXN0IGVtdWxhdGUgbGFyZ2UgYW5kL29yIG5lZ2F0aXZlIHZpZXdwb3J0cyBpbiB0aGUgc2hhZGVy
cyB1c2luZyB2aWV3QWRqdXN0IChsaWtlIHRoZSBEM0Q5IHJlbmRlcmVyKS4KLSAgICAgICAgaWYg
KG1GZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBtVmVydGV4Q29uc3RhbnRzLnZpZXdBZGp1c3RbMF0gPSBzdGF0aWNfY2FzdDxmbG9h
dD4oKGFjdHVhbFZpZXdwb3J0LndpZHRoICAtIGR4Vmlld3BvcnRXaWR0aCkgICsgMiAqIChhY3R1
YWxWaWV3cG9ydC54IC0gZHhWaWV3cG9ydFRvcExlZnRYKSkgLyBkeFZpZXdwb3J0LldpZHRoOwot
ICAgICAgICAgICAgbVZlcnRleENvbnN0YW50cy52aWV3QWRqdXN0WzFdID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KChhY3R1YWxWaWV3cG9ydC5oZWlnaHQgLSBkeFZpZXdwb3J0SGVpZ2h0KSArIDIgKiAo
YWN0dWFsVmlld3BvcnQueSAtIGR4Vmlld3BvcnRUb3BMZWZ0WSkpIC8gZHhWaWV3cG9ydC5IZWln
aHQ7Ci0gICAgICAgICAgICBtVmVydGV4Q29uc3RhbnRzLnZpZXdBZGp1c3RbMl0gPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oYWN0dWFsVmlld3BvcnQud2lkdGgpIC8gZHhWaWV3cG9ydC5XaWR0aDsKLSAg
ICAgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMudmlld0FkanVzdFszXSA9IHN0YXRpY19jYXN0PGZs
b2F0PihhY3R1YWxWaWV3cG9ydC5oZWlnaHQpIC8gZHhWaWV3cG9ydC5IZWlnaHQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdw
b3J0LndpZHRoICAqIDAuNWY7Ci0gICAgICAgIG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzFd
ID0gYWN0dWFsVmlld3BvcnQuaGVpZ2h0ICogMC41ZjsKLSAgICAgICAgbVBpeGVsQ29uc3RhbnRz
LnZpZXdDb29yZHNbMl0gPSBhY3R1YWxWaWV3cG9ydC54ICsgKGFjdHVhbFZpZXdwb3J0LndpZHRo
ICAqIDAuNWYpOwotICAgICAgICBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1szXSA9IGFjdHVh
bFZpZXdwb3J0LnkgKyAoYWN0dWFsVmlld3BvcnQuaGVpZ2h0ICogMC41Zik7Ci0KLSAgICAgICAg
Ly8gSW5zdGFuY2VkIHBvaW50c3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlcyBWaWV3Q29vcmRzIHRv
IGJlIGRlZmluZWQgaW4gdGhlCi0gICAgICAgIC8vIHRoZSB2ZXJ0ZXggc2hhZGVyLgotICAgICAg
ICBtVmVydGV4Q29uc3RhbnRzLnZpZXdDb29yZHNbMF0gPSBtUGl4ZWxDb25zdGFudHMudmlld0Nv
b3Jkc1swXTsKLSAgICAgICAgbVZlcnRleENvbnN0YW50cy52aWV3Q29vcmRzWzFdID0gbVBpeGVs
Q29uc3RhbnRzLnZpZXdDb29yZHNbMV07Ci0gICAgICAgIG1WZXJ0ZXhDb25zdGFudHMudmlld0Nv
b3Jkc1syXSA9IG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzJdOwotICAgICAgICBtVmVydGV4
Q29uc3RhbnRzLnZpZXdDb29yZHNbM10gPSBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1szXTsK
LQotICAgICAgICBtUGl4ZWxDb25zdGFudHMuZGVwdGhGcm9udFswXSA9IChhY3R1YWxaRmFyIC0g
YWN0dWFsWk5lYXIpICogMC41ZjsKLSAgICAgICAgbVBpeGVsQ29uc3RhbnRzLmRlcHRoRnJvbnRb
MV0gPSAoYWN0dWFsWk5lYXIgKyBhY3R1YWxaRmFyKSAqIDAuNWY7Ci0KLSAgICAgICAgbVZlcnRl
eENvbnN0YW50cy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5lYXI7Ci0gICAgICAgIG1WZXJ0ZXhD
b25zdGFudHMuZGVwdGhSYW5nZVsxXSA9IGFjdHVhbFpGYXI7Ci0gICAgICAgIG1WZXJ0ZXhDb25z
dGFudHMuZGVwdGhSYW5nZVsyXSA9IGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVhcjsKLQotICAgICAg
ICBtUGl4ZWxDb25zdGFudHMuZGVwdGhSYW5nZVswXSA9IGFjdHVhbFpOZWFyOwotICAgICAgICBt
UGl4ZWxDb25zdGFudHMuZGVwdGhSYW5nZVsxXSA9IGFjdHVhbFpGYXI7Ci0gICAgICAgIG1QaXhl
bENvbnN0YW50cy5kZXB0aFJhbmdlWzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyOwotICAg
IH0KLQotICAgIG1Gb3JjZVNldFZpZXdwb3J0ID0gZmFsc2U7CisgICAgbVN0YXRlTWFuYWdlci5z
eW5jU3RhdGUoc3RhdGUsIGJpdG1hc2spOwogfQogCiBib29sIFJlbmRlcmVyMTE6OmFwcGx5UHJp
bWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgYm9vbCB1c2VzUG9pbnRTaXpl
KQpAQCAtMTI0NCwxNzQgKzE1MjQsNzQgQEAKICAgICByZXR1cm4gY291bnQgPj0gbWluQ291bnQ7
CiB9CiAKLXZvaWQgUmVuZGVyZXIxMTo6dW5zZXRDb25mbGljdGluZ1NSVnMoZ2w6OlNhbXBsZXJU
eXBlIHNhbXBsZXJUeXBlLCB1aW50cHRyX3QgcmVzb3VyY2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4
ICZpbmRleCkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVJlbmRlclRhcmdldChjb25zdCBn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQogewotICAgIGF1dG8gJmN1cnJlbnRTUlZzID0g
KHNhbXBsZXJUeXBlID09IGdsOjpTQU1QTEVSX1ZFUlRFWCA/IG1DdXJWZXJ0ZXhTUlZzIDogbUN1
clBpeGVsU1JWcyk7Ci0KLSAgICBmb3IgKHNpemVfdCByZXNvdXJjZUluZGV4ID0gMDsgcmVzb3Vy
Y2VJbmRleCA8IGN1cnJlbnRTUlZzLnNpemUoKTsgKytyZXNvdXJjZUluZGV4KQotICAgIHsKLSAg
ICAgICAgYXV0byAmcmVjb3JkID0gY3VycmVudFNSVnNbcmVzb3VyY2VJbmRleF07Ci0KLSAgICAg
ICAgaWYgKHJlY29yZC5zcnYgJiYgcmVjb3JkLnJlc291cmNlID09IHJlc291cmNlICYmIEltYWdl
SW5kZXhDb25mbGljdHNXaXRoU1JWKGluZGV4LCByZWNvcmQuZGVzYykpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHNldFNoYWRlclJlc291cmNlKHNhbXBsZXJUeXBlLCBzdGF0aWNfY2FzdDxVSU5U
PihyZXNvdXJjZUluZGV4KSwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1T
dGF0ZU1hbmFnZXIuc3luY0ZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKIH0KIAotZ2w6OkVycm9y
IFJlbmRlcmVyMTE6OmFwcGx5UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlWZXJ0ZXhCdWZmZXIoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRy
YW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykKIHsKLSAgICAvLyBHZXQgdGhlIGNvbG9yIHJl
bmRlciBidWZmZXIgYW5kIHNlcmlhbAotICAgIC8vIEFsc28gZXh0cmFjdCB0aGUgcmVuZGVyIHRh
cmdldCBkaW1lbnNpb25zIGFuZCB2aWV3Ci0gICAgdW5zaWduZWQgaW50IHJlbmRlclRhcmdldFdp
ZHRoID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gMDsKLSAgICBE
WEdJX0ZPUk1BVCByZW5kZXJUYXJnZXRGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOwotICAg
IElEM0QxMVJlbmRlclRhcmdldFZpZXcqIGZyYW1lYnVmZmVyUlRWc1tnbDo6SU1QTEVNRU5UQVRJ
T05fTUFYX0RSQVdfQlVGRkVSU10gPSB7TlVMTH07Ci0gICAgYm9vbCBtaXNzaW5nQ29sb3JSZW5k
ZXJUYXJnZXQgPSB0cnVlOworICAgIGNvbnN0IGF1dG8gJnZlcnRleEFycmF5ID0gc3RhdGUuZ2V0
VmVydGV4QXJyYXkoKTsKKyAgICBhdXRvICp2ZXJ0ZXhBcnJheTExICAgICA9IEdldEltcGxBczxW
ZXJ0ZXhBcnJheTExPih2ZXJ0ZXhBcnJheSk7CiAKLSAgICBjb25zdCBGcmFtZWJ1ZmZlckQzRCAq
ZnJhbWVidWZmZXJEM0QgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJEM0Q+KGZyYW1lYnVmZmVyKTsK
LSAgICBjb25zdCBnbDo6QXR0YWNobWVudExpc3QgJmNvbG9yYnVmZmVycyA9IGZyYW1lYnVmZmVy
RDNELT5nZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKGdldFdvcmthcm91bmRzKCkpOwotCi0g
ICAgZm9yIChzaXplX3QgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgY29s
b3JidWZmZXJzLnNpemUoKTsgKytjb2xvckF0dGFjaG1lbnQpCisgICAgZ2w6OkVycm9yIGVycm9y
ID0gdmVydGV4QXJyYXkxMS0+dXBkYXRlRGlydHlBbmREeW5hbWljQXR0cmlicyhtVmVydGV4RGF0
YU1hbmFnZXIsIHN0YXRlLCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBpbnN0YW5jZXMpOworICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICpjb2xvcmJ1ZmZlciA9IGNvbG9yYnVmZmVyc1tjb2xvckF0dGFjaG1lbnRd
OwotCi0gICAgICAgIGlmIChjb2xvcmJ1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
dGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgZWl0aGVyICJub25lIiwgImJhY2siIGZvciB0aGUgZGVm
YXVsdCBidWZmZXIgb3IgdGhlIHNhbWUgaW5kZXggYXMgdGhpcyBjb2xvciAoaW4gb3JkZXIpCi0K
LSAgICAgICAgICAgIC8vIGNoZWNrIGZvciB6ZXJvLXNpemVkIGRlZmF1bHQgZnJhbWVidWZmZXIs
IHdoaWNoIGlzIGEgc3BlY2lhbCBjYXNlLgotICAgICAgICAgICAgLy8gaW4gdGhpcyBjYXNlIHdl
IGRvIG5vdCB3aXNoIHRvIG1vZGlmeSBhbnkgc3RhdGUgYW5kIGp1c3Qgc2lsZW50bHkgcmV0dXJu
IGZhbHNlLgotICAgICAgICAgICAgLy8gdGhpcyB3aWxsIG5vdCByZXBvcnQgYW55IGdsIGVycm9y
IGJ1dCB3aWxsIGNhdXNlIHRoZSBjYWxsaW5nIG1ldGhvZCB0byByZXR1cm4uCi0gICAgICAgICAg
ICBpZiAoY29sb3JidWZmZXItPmdldFdpZHRoKCkgPT0gMCB8fCBjb2xvcmJ1ZmZlci0+Z2V0SGVp
Z2h0KCkgPT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRXh0cmFj
dCB0aGUgcmVuZGVyIHRhcmdldCBkaW1lbnNpb25zIGFuZCB2aWV3Ci0gICAgICAgICAgICBSZW5k
ZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gTlVMTDsKLSAgICAgICAgICAgIGdsOjpFcnJvciBl
cnJvciA9IGNvbG9yYnVmZmVyLT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCk7Ci0gICAg
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChyZW5k
ZXJUYXJnZXQpOwotCi0gICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVnNbY29sb3JBdHRhY2htZW50
XSA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOwotICAgICAgICAgICAgQVNT
RVJUKGZyYW1lYnVmZmVyUlRWc1tjb2xvckF0dGFjaG1lbnRdKTsKLQotICAgICAgICAgICAgaWYg
KG1pc3NpbmdDb2xvclJlbmRlclRhcmdldCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZW5kZXJUYXJnZXRXaWR0aCA9IHJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKTsKLSAgICAgICAg
ICAgICAgICByZW5kZXJUYXJnZXRIZWlnaHQgPSByZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpOwot
ICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldEZvcm1hdCA9IHJlbmRlclRhcmdldC0+Z2V0RFhH
SUZvcm1hdCgpOwotICAgICAgICAgICAgICAgIG1pc3NpbmdDb2xvclJlbmRlclRhcmdldCA9IGZh
bHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBVbmJpbmQgcmVuZGVyIHRhcmdl
dCBTUlZzIGZyb20gdGhlIHNoYWRlciBoZXJlIHRvIHByZXZlbnQgRDNEMTEgd2FybmluZ3MuCi0g
ICAgICAgICAgICBpZiAoY29sb3JidWZmZXItPnR5cGUoKSA9PSBHTF9URVhUVVJFKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBydFJlc291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KEdldFZpZXdSZXNvdXJjZShmcmFtZWJ1ZmZlclJUVnNbY29sb3JB
dHRhY2htZW50XSkpOwotICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRl
eCA9IGNvbG9yYnVmZmVyLT5nZXRUZXh0dXJlSW1hZ2VJbmRleCgpOwotICAgICAgICAgICAgICAg
IC8vIFRoZSBpbmRleCBkb2Vzbid0IG5lZWQgdG8gYmUgY29ycmVjdGVkIGZvciB0aGUgc21hbGwg
Y29tcHJlc3NlZCB0ZXh0dXJlIHdvcmthcm91bmQKLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNl
IGEgcmVuZGVydGFyZ2V0IGlzIG5ldmVyIGNvbXByZXNzZWQuCi0gICAgICAgICAgICAgICAgdW5z
ZXRDb25mbGljdGluZ1NSVnMoZ2w6OlNBTVBMRVJfVkVSVEVYLCBydFJlc291cmNlLCBpbmRleCk7
Ci0gICAgICAgICAgICAgICAgdW5zZXRDb25mbGljdGluZ1NSVnMoZ2w6OlNBTVBMRVJfUElYRUws
IHJ0UmVzb3VyY2UsIGluZGV4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgLy8gR2V0IHRoZSBkZXB0aCBzdGVuY2lsIGJ1ZmZl
cnMKLSAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3KiBmcmFtZWJ1ZmZlckRTViA9IE5VTEw7Ci0g
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqZGVwdGhTdGVuY2lsID0gZnJhbWVi
dWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7Ci0gICAgaWYgKGRlcHRoU3RlbmNpbCkK
KyAgICBlcnJvciA9IG1TdGF0ZU1hbmFnZXIudXBkYXRlQ3VycmVudFZhbHVlQXR0cmlicyhzdGF0
ZSwgbVZlcnRleERhdGFNYW5hZ2VyKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsK
LSAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IE5VTEw7
Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGRlcHRoU3RlbmNpbC0+Z2V0UmVuZGVyVGFyZ2V0
KCZkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBTYWZlUmVsZWFzZShmcmFtZWJ1ZmZlclJUVnMpOwot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChkZXB0
aFN0ZW5jaWxSZW5kZXJUYXJnZXQpOwotCi0gICAgICAgIGZyYW1lYnVmZmVyRFNWID0gZGVwdGhT
dGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7Ci0gICAgICAgIEFTU0VS
VChmcmFtZWJ1ZmZlckRTVik7Ci0KLSAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmVuZGVyIGJ1
ZmZlciwgdGhlIHdpZHRoLCBoZWlnaHQgYW5kIGZvcm1hdCB2YWx1ZXMgY29tZSBmcm9tCi0gICAg
ICAgIC8vIHRoZSBkZXB0aCBzdGVuY2lsCi0gICAgICAgIGlmIChtaXNzaW5nQ29sb3JSZW5kZXJU
YXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlbmRlclRhcmdldFdpZHRoID0gZGVwdGhT
dGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpOwotICAgICAgICAgICAgcmVuZGVyVGFyZ2V0
SGVpZ2h0ID0gZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKTsKLSAgICAgICAg
ICAgIHJlbmRlclRhcmdldEZvcm1hdCA9IGRlcHRoU3RlbmNpbFJlbmRlclRhcmdldC0+Z2V0RFhH
SUZvcm1hdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVW5iaW5kIHJlbmRlciB0YXJnZXQg
U1JWcyBmcm9tIHRoZSBzaGFkZXIgaGVyZSB0byBwcmV2ZW50IEQzRDExIHdhcm5pbmdzLgotICAg
ICAgICBpZiAoZGVwdGhTdGVuY2lsLT50eXBlKCkgPT0gR0xfVEVYVFVSRSkKLSAgICAgICAgewot
ICAgICAgICAgICAgdWludHB0cl90IGRlcHRoU3RlbmNpbFJlc291cmNlID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KEdldFZpZXdSZXNvdXJjZShmcmFtZWJ1ZmZlckRTVikpOwotICAgICAg
ICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4ID0gZGVwdGhTdGVuY2lsLT5nZXRUZXh0
dXJlSW1hZ2VJbmRleCgpOwotICAgICAgICAgICAgLy8gVGhlIGluZGV4IGRvZXNuJ3QgbmVlZCB0
byBiZSBjb3JyZWN0ZWQgZm9yIHRoZSBzbWFsbCBjb21wcmVzc2VkIHRleHR1cmUgd29ya2Fyb3Vu
ZAotICAgICAgICAgICAgLy8gYmVjYXVzZSBhIHJlbmRlcnRhcmdldCBpcyBuZXZlciBjb21wcmVz
c2VkLgotICAgICAgICAgICAgdW5zZXRDb25mbGljdGluZ1NSVnMoZ2w6OlNBTVBMRVJfVkVSVEVY
LCBkZXB0aFN0ZW5jaWxSZXNvdXJjZSwgaW5kZXgpOwotICAgICAgICAgICAgdW5zZXRDb25mbGlj
dGluZ1NSVnMoZ2w6OlNBTVBMRVJfUElYRUwsIGRlcHRoU3RlbmNpbFJlc291cmNlLCBpbmRleCk7
Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIC8vIEFwcGx5
IHRoZSByZW5kZXIgdGFyZ2V0IGFuZCBkZXB0aCBzdGVuY2lsCi0gICAgaWYgKCFtUmVuZGVyVGFy
Z2V0RGVzY0luaXRpYWxpemVkIHx8ICFtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgfHwKLSAgICAg
ICAgbWVtY21wKGZyYW1lYnVmZmVyUlRWcywgbUFwcGxpZWRSVFZzLCBzaXplb2YoZnJhbWVidWZm
ZXJSVFZzKSkgIT0gMCB8fAotICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZnJh
bWVidWZmZXJEU1YpICE9IG1BcHBsaWVkRFNWKQorICAgIC8vIElmIGluZGV4IGluZm9ybWF0aW9u
IGlzIHBhc3NlZCwgbWFyayBpdCB3aXRoIHRoZSBjdXJyZW50IGNoYW5nZWQgc3RhdHVzLgorICAg
IGlmIChpbmRleEluZm8pCiAgICAgewotICAgICAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRSZW5k
ZXJUYXJnZXRzKGdldFJlbmRlcmVyQ2FwcygpLm1heERyYXdCdWZmZXJzLCBmcmFtZWJ1ZmZlclJU
VnMsIGZyYW1lYnVmZmVyRFNWKTsKLQotICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aCA9
IHJlbmRlclRhcmdldFdpZHRoOwotICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQgPSBy
ZW5kZXJUYXJnZXRIZWlnaHQ7Ci0gICAgICAgIG1SZW5kZXJUYXJnZXREZXNjLmZvcm1hdCA9IHJl
bmRlclRhcmdldEZvcm1hdDsKLSAgICAgICAgbUZvcmNlU2V0Vmlld3BvcnQgPSB0cnVlOwotICAg
ICAgICBtRm9yY2VTZXRTY2lzc29yID0gdHJ1ZTsKLSAgICAgICAgbUZvcmNlU2V0QmxlbmRTdGF0
ZSA9IHRydWU7Ci0KLSAgICAgICAgaWYgKCFtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1Gb3JjZVNldFJhc3RlclN0YXRlID0gdHJ1ZTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvciAoc2l6ZV90IHJ0SW5kZXggPSAwOyBydEluZGV4IDwgQXJyYXlTaXpl
KGZyYW1lYnVmZmVyUlRWcyk7IHJ0SW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgbUFw
cGxpZWRSVFZzW3J0SW5kZXhdID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGZyYW1lYnVm
ZmVyUlRWc1tydEluZGV4XSk7Ci0gICAgICAgIH0KLSAgICAgICAgbUFwcGxpZWREU1YgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZnJhbWVidWZmZXJEU1YpOwotICAgICAgICBtUmVuZGVy
VGFyZ2V0RGVzY0luaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgbURlcHRoU3RlbmNpbEluaXRp
YWxpemVkID0gdHJ1ZTsKKyAgICAgICAgaW5kZXhJbmZvLT5zcmNJbmRleERhdGEuc3JjSW5kaWNl
c0NoYW5nZWQgPSBtQXBwbGllZElCQ2hhbmdlZDsKICAgICB9CiAKLSAgICBjb25zdCBGcmFtZWJ1
ZmZlcjExICpmcmFtZWJ1ZmZlcjExID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyMTE+KGZyYW1lYnVm
ZmVyKTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBmcmFtZWJ1ZmZlcjExLT5pbnZhbGlkYXRlU3dp
enpsZXMoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIEdMc2l6ZWkgbnVtSW5kaWNl
c1Blckluc3RhbmNlID0gMDsKKyAgICBpZiAoaW5zdGFuY2VzID4gMCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgICAgbnVtSW5kaWNlc1Blckluc3RhbmNlID0gY291bnQ7CiAg
ICAgfQorICAgIGNvbnN0IGF1dG8gJnZlcnRleEFycmF5QXR0cmlicyAgPSB2ZXJ0ZXhBcnJheTEx
LT5nZXRUcmFuc2xhdGVkQXR0cmlicygpOworICAgIGNvbnN0IGF1dG8gJmN1cnJlbnRWYWx1ZUF0
dHJpYnMgPSBtU3RhdGVNYW5hZ2VyLmdldEN1cnJlbnRWYWx1ZUF0dHJpYnMoKTsKKyAgICBBTkdM
RV9UUlkobUlucHV0TGF5b3V0Q2FjaGUuYXBwbHlWZXJ0ZXhCdWZmZXJzKHN0YXRlLCB2ZXJ0ZXhB
cnJheUF0dHJpYnMsIGN1cnJlbnRWYWx1ZUF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlLCBmaXJzdCwgaW5kZXhJbmZvLCBudW1J
bmRpY2VzUGVySW5zdGFuY2UpKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OwotfQorICAgIC8vIElucHV0TGF5b3V0Q2FjaGU6OmFwcGx5VmVydGV4QnVmZmVycyBjYWxscyB0
aHJvdWdoIHRvIHRoZSBCdWZlcjExIHRvIGdldCB0aGUgbmF0aXZlIHZlcnRleAorICAgIC8vIGJ1
ZmZlciAoSUQzRDExQnVmZmVyICopLiBCZWNhdXNlIHdlIGFsbG9jYXRlIHRoZXNlIGJ1ZmZlcnMg
bGF6aWx5LCB0aGlzIHdpbGwgdHJpZ2dlcgorICAgIC8vIGFsbG9jYXRpb24uIFRoaXMgaW4gdHVy
biB3aWxsIHNpZ25hbCB0aGF0IHRoZSBidWZmZXIgaXMgZGlydHkuIFNpbmNlIHdlIGp1c3QgcmVz
b2x2ZWQgdGhlCisgICAgLy8gZGlydHktbmVzcyBpbiBWZXJ0ZXhBcnJheTExOjp1cGRhdGVEaXJ0
eUFuZER5bmFtaWNBdHRyaWJzLCB0aGlzIGNhbiBtYWtlIHVzIGRvIGEgbmVlZGxlc3MKKyAgICAv
LyB1cGRhdGUgb24gdGhlIHNlY29uZCBkcmF3IGNhbGwuCisgICAgLy8gSGVuY2Ugd2UgY2xlYXIg
dGhlIGZsYWdzIGhlcmUsIGFmdGVyIHdlJ3ZlIGFwcGxpZWQgdmVydGV4IGRhdGEsIHNpbmNlIHdl
IGtub3cgZXZlcnl0aGluZworICAgIC8vIGlzIGNsZWFuLiBUaGlzIGlzIGEgYml0IG9mIGEgaGFj
ay4KKyAgICB2ZXJ0ZXhBcnJheTExLT5jbGVhckRpcnR5QW5kUHJvbW90ZUR5bmFtaWNBdHRyaWJz
KHN0YXRlLCBjb3VudCk7CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVZlcnRleEJ1ZmZl
cihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKQotewotICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUg
YXR0cmlidXRlc1tnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTXTsKLSAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBtVmVydGV4RGF0YU1hbmFnZXItPnByZXBhcmVWZXJ0ZXhEYXRhKHN0YXRlLCBmaXJzdCwgY291
bnQsIGF0dHJpYnV0ZXMsIGluc3RhbmNlcyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gbUlucHV0TGF5
b3V0Q2FjaGUuYXBwbHlWZXJ0ZXhCdWZmZXJzKGF0dHJpYnV0ZXMsIG1vZGUsIHN0YXRlLmdldFBy
b2dyYW0oKSk7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5k
ZXJlcjExOjphcHBseUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZl
ciAqZWxlbWVudEFycmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBHTGVudW0gbW9kZSwgR0xlbnVt
IHR5cGUsIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykKK2dsOjpFcnJvciBSZW5kZXJl
cjExOjphcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pCiB7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbUluZGV4RGF0YU1hbmFnZXItPnByZXBhcmVJbmRleERh
dGEodHlwZSwgY291bnQsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5kaWNlcywgaW5kZXhJbmZvKTsK
KyAgICBnbDo6VmVydGV4QXJyYXkgKnZhbyAgICAgICAgICAgPSBkYXRhLnN0YXRlLT5nZXRWZXJ0
ZXhBcnJheSgpOworICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IHZhby0+Z2V0
RWxlbWVudEFycmF5QnVmZmVyKCkuZ2V0KCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0KKyAgICAg
ICAgbUluZGV4RGF0YU1hbmFnZXItPnByZXBhcmVJbmRleERhdGEodHlwZSwgY291bnQsIGVsZW1l
bnRBcnJheUJ1ZmZlciwgaW5kaWNlcywgaW5kZXhJbmZvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXRlLT5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFi
bGVkKCkpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4g
ZXJyb3I7CkBAIC0xNDIzLDcgKzE2MDMsMTIgQEAKICAgICBpZiAoaW5kZXhJbmZvLT5zdG9yYWdl
KQogICAgIHsKICAgICAgICAgQnVmZmVyMTEgKnN0b3JhZ2UgPSBHZXRBczxCdWZmZXIxMT4oaW5k
ZXhJbmZvLT5zdG9yYWdlKTsKLSAgICAgICAgYnVmZmVyID0gc3RvcmFnZS0+Z2V0QnVmZmVyKEJV
RkZFUl9VU0FHRV9JTkRFWCk7CisgICAgICAgIGF1dG8gaW5kZXhPckVycm9yID0gc3RvcmFnZS0+
Z2V0QnVmZmVyKEJVRkZFUl9VU0FHRV9JTkRFWCk7CisgICAgICAgIGlmIChpbmRleE9yRXJyb3Iu
aXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaW5kZXhPckVycm9yLmdl
dEVycm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyID0gaW5kZXhPckVycm9yLmdldFJl
c3VsdCgpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTQzMSw2ICsxNjE2LDcgQEAKICAg
ICAgICAgYnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEJ1ZmZlcigpOwogICAgIH0KIAorICAgIG1B
cHBsaWVkSUJDaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGJ1ZmZlciAhPSBtQXBwbGllZElCIHx8
IGJ1ZmZlckZvcm1hdCAhPSBtQXBwbGllZElCRm9ybWF0IHx8IGluZGV4SW5mby0+c3RhcnRPZmZz
ZXQgIT0gbUFwcGxpZWRJQk9mZnNldCkKICAgICB7CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5J
QVNldEluZGV4QnVmZmVyKGJ1ZmZlciwgYnVmZmVyRm9ybWF0LCBpbmRleEluZm8tPnN0YXJ0T2Zm
c2V0KTsKQEAgLTE0MzgsMTIgKzE2MjQsMTMgQEAKICAgICAgICAgbUFwcGxpZWRJQiA9IGJ1ZmZl
cjsKICAgICAgICAgbUFwcGxpZWRJQkZvcm1hdCA9IGJ1ZmZlckZvcm1hdDsKICAgICAgICAgbUFw
cGxpZWRJQk9mZnNldCA9IGluZGV4SW5mby0+c3RhcnRPZmZzZXQ7CisgICAgICAgIG1BcHBsaWVk
SUJDaGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKIH0KIAotdm9pZCBSZW5kZXJlcjExOjphcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
cyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5VHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpCiB7CiAgICAgc2l6
ZV90IG51bVhGQkJpbmRpbmdzID0gMDsKICAgICBib29sIHJlcXVpcmVzVXBkYXRlID0gZmFsc2U7
CkBAIC0xNDU4LDExICsxNjQ1LDE2IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IE9m
ZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nID0gdHJhbnNmb3JtRmVlZGJh
Y2stPmdldEluZGV4ZWRCdWZmZXIoaSk7CiAKLSAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqZDNk
QnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIElEM0QxMUJ1ZmZlciAqZDNkQnVmZmVyID0gbnVs
bHB0cjsKICAgICAgICAgICAgIGlmIChiaW5kaW5nLmdldCgpICE9IG51bGxwdHIpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgQnVmZmVyMTEgKnN0b3JhZ2UgPSBHZXRJbXBsQXM8QnVm
ZmVyMTE+KGJpbmRpbmcuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGQzZEJ1ZmZlciA9IHN0b3Jh
Z2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0VfVkVSVEVYX09SX1RSQU5TRk9STV9GRUVEQkFDSyk7
CisgICAgICAgICAgICAgICAgYXV0byBidWZmZXJPckVycm9yID0gc3RvcmFnZS0+Z2V0QnVmZmVy
KEJVRkZFUl9VU0FHRV9WRVJURVhfT1JfVFJBTlNGT1JNX0ZFRURCQUNLKTsKKyAgICAgICAgICAg
ICAgICBpZiAoYnVmZmVyT3JFcnJvci5pc0Vycm9yKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyT3JFcnJvci5nZXRFcnJvcigpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkM2RCdWZmZXIgPSBidWZmZXJPckVycm9yLmdl
dFJlc3VsdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBUT0RPOiBtQXBwbGll
ZFRGQnVmZmVycyBhbmQgZnJpZW5kcyBzaG91bGQgYWxzbyBiZSBrZXB0IGluIGEgdmVjdG9yLgpA
QCAtMTQ4Miw3ICsxNjc0LDEyIEBACiAgICAgICAgICAgICBpZiAoYmluZGluZy5nZXQoKSAhPSBu
dWxscHRyKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEJ1ZmZlcjExICpzdG9yYWdl
ID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihiaW5kaW5nLmdldCgpKTsKLSAgICAgICAgICAgICAgICBJ
RDNEMTFCdWZmZXIgKmQzZEJ1ZmZlciA9IHN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0Vf
VkVSVEVYX09SX1RSQU5TRk9STV9GRUVEQkFDSyk7CisgICAgICAgICAgICAgICAgYXV0byBidWZm
ZXJPckVycm9yID0gc3RvcmFnZS0+Z2V0QnVmZmVyKEJVRkZFUl9VU0FHRV9WRVJURVhfT1JfVFJB
TlNGT1JNX0ZFRURCQUNLKTsKKyAgICAgICAgICAgICAgICBpZiAoYnVmZmVyT3JFcnJvci5pc0Vy
cm9yKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVm
ZmVyT3JFcnJvci5nZXRFcnJvcigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBJRDNEMTFCdWZmZXIgKmQzZEJ1ZmZlciA9IGJ1ZmZlck9yRXJyb3IuZ2V0UmVzdWx0KCk7CiAK
ICAgICAgICAgICAgICAgICBtQ3VycmVudEQzRE9mZnNldHNbaV0gPSAobUFwcGxpZWRURkJ1ZmZl
cnNbaV0gIT0gZDNkQnVmZmVyIHx8IG1BcHBsaWVkVEZPZmZzZXRzW2ldICE9IGJpbmRpbmcuZ2V0
T2Zmc2V0KCkpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxVSU5UPihiaW5kaW5nLmdldE9mZnNldCgpKSA6IC0xOwpAQCAtMTQ5MCw3ICsxNjg3
LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBtQXBwbGllZFRGQnVmZmVyc1tpXSA9IE5VTEw7CisgICAgICAgICAgICAg
ICAgbUFwcGxpZWRURkJ1ZmZlcnNbaV0gID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICBtQ3Vy
cmVudEQzRE9mZnNldHNbaV0gPSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbUFwcGxp
ZWRURk9mZnNldHNbaV0gPSBiaW5kaW5nLmdldE9mZnNldCgpOwpAQCAtMTQ5OCwyMiArMTY5NSwy
OSBAQAogCiAgICAgICAgIG1BcHBsaWVkTnVtWEZCQmluZGluZ3MgPSBudW1YRkJCaW5kaW5nczsK
IAotICAgICAgICBtRGV2aWNlQ29udGV4dC0+U09TZXRUYXJnZXRzKG51bVhGQkJpbmRpbmdzLCBt
QXBwbGllZFRGQnVmZmVycywgbUN1cnJlbnREM0RPZmZzZXRzKTsKKyAgICAgICAgbURldmljZUNv
bnRleHQtPlNPU2V0VGFyZ2V0cyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG51bVhGQkJpbmRp
bmdzKSwgbUFwcGxpZWRURkJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbUN1cnJlbnREM0RPZmZzZXRzKTsKICAgICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdBcnJheXMoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGlu
c3RhbmNlcywgYm9vbCB1c2VzUG9pbnRTaXplKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdB
cnJheXNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHN0YXJ0VmVydGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBpbnN0YW5jZXMpCiB7Ci0gICAgYm9vbCB1c2VJbnN0YW5jZWRQb2ludFNwcml0
ZUVtdWxhdGlvbiA9IHVzZXNQb2ludFNpemUgJiYgZ2V0V29ya2Fyb3VuZHMoKS51c2VJbnN0YW5j
ZWRQb2ludFNwcml0ZUVtdWxhdGlvbjsKLSAgICBpZiAobW9kZSA9PSBHTF9QT0lOVFMgJiYgZGF0
YS5zdGF0ZS0+aXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpCisgICAgUHJvZ3Jh
bUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihkYXRhLnN0YXRlLT5nZXRQ
cm9ncmFtKCkpOworCisgICAgaWYgKHByb2dyYW1EM0QtPnVzZXNHZW9tZXRyeVNoYWRlcihtb2Rl
KSAmJiBkYXRhLnN0YXRlLT5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSkKICAg
ICB7Ci0gICAgICAgIC8vIFNpbmNlIHBvaW50IHNwcml0ZXMgYXJlIGdlbmVyYXRlZCB3aXRoIGEg
Z2VvbWV0cnkgc2hhZGVyLCB0b28gbWFueSB2ZXJ0aWNlcyB3aWxsCi0gICAgICAgIC8vIGJlIHdy
aXR0ZW4gaWYgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZS4gIFRvIHdvcmsgYXJvdW5kIHRo
aXMsIGRyYXcgb25seSB0aGUgcG9pbnRzCi0gICAgICAgIC8vIHdpdGggdGhlIHN0cmVhbSBvdXQg
c2hhZGVyIGFuZCBubyBwaXhlbCBzaGFkZXIgdG8gZmVlZCB0aGUgc3RyZWFtIG91dCBidWZmZXJz
IGFuZCB0aGVuIAotICAgICAgICAvLyBkcmF3IGFnYWluIHdpdGggdGhlIHBvaW50IHNwcml0ZSBn
ZW9tZXRyeSBzaGFkZXIgdG8gcmFzdGVyaXplIHRoZSBwb2ludCBzcHJpdGVzLgorICAgICAgICAv
LyBTaW5jZSB3ZSB1c2UgYSBnZW9tZXRyeSBpZi1hbmQtb25seS1pZiB3ZSByZXdyaXRlIHZlcnRl
eCBzdHJlYW1zLCB0cmFuc2Zvcm0gZmVlZGJhY2sKKyAgICAgICAgLy8gd29uJ3QgZ2V0IHRoZSBj
b3JyZWN0IG91dHB1dC4gVG8gd29yayBhcm91bmQgdGhpcywgZHJhdyB3aXRoICpvbmx5KiB0aGUg
c3RyZWFtIG91dAorICAgICAgICAvLyBmaXJzdCAobm8gcGl4ZWwgc2hhZGVyKSB0byBmZWVkIHRo
ZSBzdHJlYW0gb3V0IGJ1ZmZlcnMgYW5kIHRoZW4gZHJhdyBhZ2FpbiB3aXRoIHRoZQorICAgICAg
ICAvLyBnZW9tZXRyeSBzaGFkZXIgKyBwaXhlbCBzaGFkZXIgdG8gcmFzdGVyaXplIHRoZSBwcmlt
aXRpdmVzLgorICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIobnVsbHB0ciwgbnVs
bHB0ciwgMCk7CiAKLSAgICAgICAgbURldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKE5VTEwsIE5V
TEwsIDApOwotCiAgICAgICAgIGlmIChpbnN0YW5jZXMgPiAwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCAw
KTsKQEAgLTE1MjMsOTggKzE3MjcsMTk0IEBACiAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+
RHJhdyhjb3VudCwgMCk7CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtRDNEICpwcm9ncmFt
RDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KGRhdGEuc3RhdGUtPmdldFByb2dyYW0oKSk7Ci0K
LSAgICAgICAgcng6OlNoYWRlckV4ZWN1dGFibGVEM0QgKnBpeGVsRXhlID0gTlVMTDsKKyAgICAg
ICAgcng6OlNoYWRlckV4ZWN1dGFibGVEM0QgKnBpeGVsRXhlID0gbnVsbHB0cjsKICAgICAgICAg
Z2w6OkVycm9yIGVycm9yID0gcHJvZ3JhbUQzRC0+Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yRnJhbWVi
dWZmZXIoZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCksICZwaXhlbEV4ZSk7CiAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFNraXAgdGhpcyBzdGVwIGlmIHdlJ3JlIGRv
aW5nIHJhc3Rlcml6ZXIgZGlzY2FyZC4KLSAgICAgICAgaWYgKHBpeGVsRXhlICYmICFkYXRhLnN0
YXRlLT5nZXRSYXN0ZXJpemVyU3RhdGUoKS5yYXN0ZXJpemVyRGlzY2FyZCAmJiB1c2VzUG9pbnRT
aXplKQorICAgICAgICAvLyBTa2lwIHRoZSBkcmF3IGNhbGwgaWYgcmFzdGVyaXplciBkaXNjYXJk
IGlzIGVuYWJsZWQgKG9yIG5vIGZyYWdtZW50IHNoYWRlcikuCisgICAgICAgIGlmICghcGl4ZWxF
eGUgfHwgZGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRlKCkucmFzdGVyaXplckRpc2NhcmQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIElEM0QxMVBpeGVsU2hhZGVyICpwaXhlbFNoYWRlciA9
IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4ocGl4ZWxFeGUpLT5nZXRQaXhlbFNoYWRlcigpOwot
ICAgICAgICAgICAgQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwaXhlbFNoYWRl
cikgPT0gbUFwcGxpZWRQaXhlbFNoYWRlcik7Ci0gICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+
UFNTZXRTaGFkZXIocGl4ZWxTaGFkZXIsIE5VTEwsIDApOworICAgICAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gUmV0cmll
dmUgdGhlIHBvaW50IHNwcml0ZSBnZW9tZXRyeSBzaGFkZXIKLSAgICAgICAgICAgIHJ4OjpTaGFk
ZXJFeGVjdXRhYmxlRDNEICpnZW9tZXRyeUV4ZSA9IHByb2dyYW1EM0QtPmdldEdlb21ldHJ5RXhl
Y3V0YWJsZSgpOwotICAgICAgICAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKmdlb21ldHJ5U2hh
ZGVyID0gKGdlb21ldHJ5RXhlID8gR2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPihnZW9tZXRyeUV4
ZSktPmdldEdlb21ldHJ5U2hhZGVyKCkgOiBOVUxMKTsKLSAgICAgICAgICAgIG1BcHBsaWVkR2Vv
bWV0cnlTaGFkZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2VvbWV0cnlTaGFkZXIp
OwotICAgICAgICAgICAgQVNTRVJUKGdlb21ldHJ5U2hhZGVyKTsKLSAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5HU1NldFNoYWRlcihnZW9tZXRyeVNoYWRlciwgTlVMTCwgMCk7CisgICAgICAg
IElEM0QxMVBpeGVsU2hhZGVyICpwaXhlbFNoYWRlciA9IEdldEFzPFNoYWRlckV4ZWN1dGFibGUx
MT4ocGl4ZWxFeGUpLT5nZXRQaXhlbFNoYWRlcigpOworICAgICAgICBBU1NFUlQocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHBpeGVsU2hhZGVyKSA9PSBtQXBwbGllZFBpeGVsU2hhZGVyKTsK
KyAgICAgICAgbURldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBOVUxMLCAw
KTsKIAotICAgICAgICAgICAgaWYgKGluc3RhbmNlcyA+IDApCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQoY291bnQsIGluc3RhbmNl
cywgMCwgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXcoY291bnQsIDApOwotICAgICAg
ICAgICAgfQorICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgZ2VvbWV0cnkgc2hhZGVyLgorICAgICAg
ICByeDo6U2hhZGVyRXhlY3V0YWJsZUQzRCAqZ2VvbWV0cnlFeGUgPSBudWxscHRyOworICAgICAg
ICBlcnJvciA9CisgICAgICAgICAgICBwcm9ncmFtRDNELT5nZXRHZW9tZXRyeUV4ZWN1dGFibGVG
b3JQcmltaXRpdmVUeXBlKGRhdGEsIG1vZGUsICZnZW9tZXRyeUV4ZSwgbnVsbHB0cik7CisgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKICAgICAgICAgfQogCisgICAgICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZW9tZXRy
eVNoYWRlciA9CisgICAgICAgICAgICAoZ2VvbWV0cnlFeGUgPyBHZXRBczxTaGFkZXJFeGVjdXRh
YmxlMTE+KGdlb21ldHJ5RXhlKS0+Z2V0R2VvbWV0cnlTaGFkZXIoKSA6IE5VTEwpOworICAgICAg
ICBtQXBwbGllZEdlb21ldHJ5U2hhZGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdl
b21ldHJ5U2hhZGVyKTsKKyAgICAgICAgQVNTRVJUKGdlb21ldHJ5U2hhZGVyKTsKKyAgICAgICAg
bURldmljZUNvbnRleHQtPkdTU2V0U2hhZGVyKGdlb21ldHJ5U2hhZGVyLCBOVUxMLCAwKTsKKwor
ICAgICAgICBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbURldmlj
ZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywgMCwgMCk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+
RHJhdyhjb3VudCwgMCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorCisg
ICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGRyYXdM
aW5lTG9vcChjb3VudCwgR0xfTk9ORSwgTlVMTCwgMCwgTlVMTCk7CisgICAgICAgIHJldHVybiBk
cmF3TGluZUxvb3AoZGF0YSwgY291bnQsIEdMX05PTkUsIG51bGxwdHIsIG51bGxwdHIsIGluc3Rh
bmNlcyk7CiAgICAgfQotICAgIGVsc2UgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFOKQorCisg
ICAgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFOKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGRy
YXdUcmlhbmdsZUZhbihjb3VudCwgR0xfTk9ORSwgTlVMTCwgMCwgTlVMTCwgaW5zdGFuY2VzKTsK
KyAgICAgICAgcmV0dXJuIGRyYXdUcmlhbmdsZUZhbihkYXRhLCBjb3VudCwgR0xfTk9ORSwgbnVs
bHB0ciwgMCwgaW5zdGFuY2VzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkK
KworICAgIGJvb2wgdXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24gPQorICAgICAgICBw
cm9ncmFtRDNELT51c2VzUG9pbnRTaXplKCkgJiYgZ2V0V29ya2Fyb3VuZHMoKS51c2VJbnN0YW5j
ZWRQb2ludFNwcml0ZUVtdWxhdGlvbjsKKworICAgIGlmIChpbnN0YW5jZXMgPiAwKQogICAgIHsK
LSAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywg
MCwgMCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICAvLyBJZiBnbF9Qb2ludFNpemUgaXMgdXNlZCBhbmQgR0xf
UE9JTlRTIGlzIHNwZWNpZmllZCwgdGhlbiBpdCBpcyBleHBlY3RlZCB0byByZW5kZXIgcG9pbnRz
cHJpdGVzLgotICAgICAgICAvLyBJZiBpbnN0YW5jZWQgcG9pbnRzcHJpdGUgZW11bGF0aW9uIGlz
IGJlaW5nIHVzZWQgdGhlIHRvcG9sb2d5IGlzIGV4cGV4dGVkIHRvIGJlIAotICAgICAgICAvLyBE
M0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVCBhbmQgRHJhd0luZGV4ZWRJbnN0YW5j
ZWQgbXVzdCBiZSB1c2VkLgogICAgICAgICBpZiAobW9kZSA9PSBHTF9QT0lOVFMgJiYgdXNlSW5z
dGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZCg2LCBjb3VudCwgMCwgMCwgMCk7CisgICAg
ICAgICAgICAvLyBJZiBwb2ludHNwcml0ZSBlbXVsYXRpb24gaXMgdXNlZCB3aXRoIGdsRHJhd0Fy
cmF5c0luc3RhbmNlZCB0aGVuIHdlIG5lZWQgdG8gdGFrZSBhCisgICAgICAgICAgICAvLyBsZXNz
IGVmZmljZW50IGNvZGUgcGF0aC4KKyAgICAgICAgICAgIC8vIEluc3RhbmNlZCByZW5kZXJpbmcg
b2YgZW11bGF0ZWQgcG9pbnRzcHJpdGVzIHJlcXVpcmVzIGEgbG9vcCB0byBkcmF3IGVhY2ggYmF0
Y2ggb2YKKyAgICAgICAgICAgIC8vIHBvaW50cy4gQW4gb2Zmc2V0IGludG8gdGhlIGluc3RhbmNl
ZCBkYXRhIGJ1ZmZlciBpcyBjYWxjdWxhdGVkIGFuZCBhcHBsaWVkIG9uIGVhY2gKKyAgICAgICAg
ICAgIC8vIGl0ZXJhdGlvbiB0byBlbnN1cmUgYWxsIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgY29y
cmVjdGx5LgorCisgICAgICAgICAgICAvLyBFYWNoIGluc3RhbmNlIGJlaW5nIHJlbmRlcmVkIHJl
cXVpcmVzIHRoZSBpbnB1dGxheW91dCBjYWNoZSB0byByZWFwcGx5IGJ1ZmZlcnMgYW5kCisgICAg
ICAgICAgICAvLyBvZmZzZXRzLgorICAgICAgICAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwg
aW5zdGFuY2VzOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0KKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TGF5b3V0Q2FjaGUudXBkYXRlVmVy
dGV4T2Zmc2V0c0ZvclBvaW50U3ByaXRlc0VtdWxhdGlvbihzdGFydFZlcnRleCwgaSk7CisgICAg
ICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWRJbnN0YW5jZWQoNiwgY291bnQs
IDAsIDAsIDApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXcoY291bnQsIDApOworICAgICAg
ICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywgMCwg
MCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAg
ICAgfQorCisgICAgLy8gSWYgdGhlIHNoYWRlciBpcyB3cml0aW5nIHRvIGdsX1BvaW50U2l6ZSwg
dGhlbiBwb2ludHNwcml0ZXMgYXJlIGJlaW5nIHJlbmRlcmVkLgorICAgIC8vIEVtdWxhdGluZyBp
bnN0YW5jZWQgcG9pbnQgc3ByaXRlcyBmb3IgRkw5XzMgcmVxdWlyZXMgdGhlIHRvcG9sb2d5IHRv
IGJlCisgICAgLy8gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1QgYW5kIERyYXdJ
bmRleGVkSW5zdGFuY2VkIGlzIGNhbGxlZCBpbnN0ZWFkLgorICAgIGlmIChtb2RlID09IEdMX1BP
SU5UUyAmJiB1c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbikKKyAgICB7CisgICAgICAg
IG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZCg2LCBjb3VudCwgMCwgMCwgMCk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KGNv
dW50LCAwKTsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAK
LWdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciwgY29u
c3QgVHJhbnNsYXRlZEluZGV4RGF0YSAmaW5kZXhJbmZvLCBHTHNpemVpIGluc3RhbmNlcykKK2ds
OjpFcnJvciBSZW5kZXJlcjExOjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRl
ZEluZGV4RGF0YSAmaW5kZXhJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGluc3RhbmNlcykKIHsKICAgICBpbnQgbWluSW5kZXggPSBzdGF0aWNfY2FzdDxp
bnQ+KGluZGV4SW5mby5pbmRleFJhbmdlLnN0YXJ0KTsKIAogICAgIGlmIChtb2RlID09IEdMX0xJ
TkVfTE9PUCkKICAgICB7Ci0gICAgICAgIHJldHVybiBkcmF3TGluZUxvb3AoY291bnQsIHR5cGUs
IGluZGljZXMsIG1pbkluZGV4LCBlbGVtZW50QXJyYXlCdWZmZXIpOworICAgICAgICByZXR1cm4g
ZHJhd0xpbmVMb29wKGRhdGEsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAmaW5kZXhJbmZvLCBpbnN0
YW5jZXMpOwogICAgIH0KLSAgICBlbHNlIGlmIChtb2RlID09IEdMX1RSSUFOR0xFX0ZBTikKKwor
ICAgIGlmIChtb2RlID09IEdMX1RSSUFOR0xFX0ZBTikKICAgICB7Ci0gICAgICAgIHJldHVybiBk
cmF3VHJpYW5nbGVGYW4oY291bnQsIHR5cGUsIGluZGljZXMsIG1pbkluZGV4LCBlbGVtZW50QXJy
YXlCdWZmZXIsIGluc3RhbmNlcyk7CisgICAgICAgIHJldHVybiBkcmF3VHJpYW5nbGVGYW4oZGF0
YSwgY291bnQsIHR5cGUsIGluZGljZXMsIG1pbkluZGV4LCBpbnN0YW5jZXMpOwogICAgIH0KLSAg
ICBlbHNlIGlmIChpbnN0YW5jZXMgPiAwKQorCisgICAgY29uc3QgUHJvZ3JhbUQzRCAqcHJvZ3Jh
bUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihkYXRhLnN0YXRlLT5nZXRQcm9ncmFtKCkpOwor
ICAgIGlmIChpbnN0YW5jZXMgPiAwKQogICAgIHsKLSAgICAgICAgbURldmljZUNvbnRleHQtPkRy
YXdJbmRleGVkSW5zdGFuY2VkKGNvdW50LCBpbnN0YW5jZXMsIDAsIC1taW5JbmRleCwgMCk7Cisg
ICAgICAgIGlmIChtb2RlID09IEdMX1BPSU5UUyAmJiBwcm9ncmFtRDNELT51c2VzSW5zdGFuY2Vk
UG9pbnRTcHJpdGVFbXVsYXRpb24oKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSWYgcG9p
bnRzcHJpdGUgZW11bGF0aW9uIGlzIHVzZWQgd2l0aCBnbERyYXdFbGVtZW50c0luc3RhbmNlZCB0
aGVuIHdlIG5lZWQgdG8gdGFrZSBhCisgICAgICAgICAgICAvLyBsZXNzIGVmZmljZW50IGNvZGUg
cGF0aC4KKyAgICAgICAgICAgIC8vIEluc3RhbmNlZCByZW5kZXJpbmcgb2YgZW11bGF0ZWQgcG9p
bnRzcHJpdGVzIHJlcXVpcmVzIGEgbG9vcCB0byBkcmF3IGVhY2ggYmF0Y2ggb2YKKyAgICAgICAg
ICAgIC8vIHBvaW50cy4gQW4gb2Zmc2V0IGludG8gdGhlIGluc3RhbmNlZCBkYXRhIGJ1ZmZlciBp
cyBjYWxjdWxhdGVkIGFuZCBhcHBsaWVkIG9uIGVhY2gKKyAgICAgICAgICAgIC8vIGl0ZXJhdGlv
biB0byBlbnN1cmUgYWxsIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAg
ICAgICAgR0xzaXplaSBlbGVtZW50c1RvUmVuZGVyID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW5k
ZXhJbmZvLmluZGV4UmFuZ2UudmVydGV4Q291bnQoKSk7CisKKyAgICAgICAgICAgIC8vIEVhY2gg
aW5zdGFuY2UgYmVpbmcgcmVuZGVyZWQgcmVxdWlyZXMgdGhlIGlucHV0bGF5b3V0IGNhY2hlIHRv
IHJlYXBwbHkgYnVmZmVycyBhbmQKKyAgICAgICAgICAgIC8vIG9mZnNldHMuCisgICAgICAgICAg
ICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBpbnN0YW5jZXM7IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQorICAgICAgICAgICAgICAgICAgICBt
SW5wdXRMYXlvdXRDYWNoZS51cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9pbnRTcHJpdGVzRW11bGF0
aW9uKG1pbkluZGV4LCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5k
ZXhlZEluc3RhbmNlZCg2LCBlbGVtZW50c1RvUmVuZGVyLCAwLCAwLCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCAtbWlu
SW5kZXgsIDApOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwogICAgIH0KKworICAgIC8vIElmIHRoZSBzaGFkZXIgaXMgd3JpdGluZyB0byBnbF9Qb2lu
dFNpemUsIHRoZW4gcG9pbnRzcHJpdGVzIGFyZSBiZWluZyByZW5kZXJlZC4KKyAgICAvLyBFbXVs
YXRpbmcgaW5zdGFuY2VkIHBvaW50IHNwcml0ZXMgZm9yIEZMOV8zIHJlcXVpcmVzIHRoZSB0b3Bv
bG9neSB0byBiZQorICAgIC8vIEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUIGFu
ZCBEcmF3SW5kZXhlZEluc3RhbmNlZCBpcyBjYWxsZWQgaW5zdGVhZC4KKyAgICBpZiAobW9kZSA9
PSBHTF9QT0lOVFMgJiYgcHJvZ3JhbUQzRC0+dXNlc0luc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uKCkpCisgICAgeworICAgICAgICAvLyBUaGUgY291bnQgcGFyYW1ldGVyIHBhc3NlZCB0byBk
cmF3RWxlbWVudHMgcmVwcmVzZW50cyB0aGUgdG90YWwgbnVtYmVyIG9mIGluc3RhbmNlcworICAg
ICAgICAvLyB0byBiZSByZW5kZXJlZC4gRWFjaCBpbnN0YW5jZSBpcyByZWZlcmVuY2VkIGJ5IHRo
ZSBib3VuZCBpbmRleCBidWZmZXIgZnJvbSB0aGUKKyAgICAgICAgLy8gdGhlIGNhbGxlci4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gSW5kZXhlZCBwb2ludHNwcml0ZSBlbXVsYXRpb24gcmVwbGlj
YXRlcyBkYXRhIGZvciBkdXBsaWNhdGUgZW50cmllcyBmb3VuZAorICAgICAgICAvLyBpbiB0aGUg
aW5kZXggYnVmZmVyLgorICAgICAgICAvLyBUaGlzIGlzIG5vdCBhbiBlZmZpY2VudCByZW5kZXJp
bmcgbWVjaGFuaXNtIGFuZCBpcyBvbmx5IHVzZWQgb24gZG93bmxldmVsIHJlbmRlcmVycworICAg
ICAgICAvLyB0aGF0IGRvIG5vdCBzdXBwb3J0IGdlb21ldHJ5IHNoYWRlcnMuCisgICAgICAgIG1E
ZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZCg2LCBjb3VudCwgMCwgMCwgMCk7Cisg
ICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhl
ZChjb3VudCwgMCwgLW1pbkluZGV4KTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CiAgICAgfQorICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1n
bDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxl
bWVudEFycmF5QnVmZmVyKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcChjb25z
dCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5k
ZXhQb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFu
c2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnN0YW5jZXMpCiB7CisgICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAg
ICAgID0gZGF0YS5zdGF0ZS0+Z2V0VmVydGV4QXJyYXkoKTsKKyAgICBnbDo6QnVmZmVyICplbGVt
ZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOworCisg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzID0gaW5kZXhQb2ludGVyOworCiAgICAgLy8gR2V0IHRo
ZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3CiAgICAgaWYgKHR5cGUgIT0gR0xfTk9O
RSAmJiBlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgewpAQCAtMTY1MCw3ICsxOTUwLDExIEBACiAg
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVh
dGUgYSAzMi1iaXQgbG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUCwgdG9vIG1h
bnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKICAgICB9CiAKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQg
c3BhY2VOZWVkZWQgPSAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKyAxKSAqIHNp
emVvZih1bnNpZ25lZCBpbnQpOworICAgIEdldExpbmVMb29wSW5kaWNlcyhpbmRpY2VzLCB0eXBl
LCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGF0
YS5zdGF0ZS0+aXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpLCAmbVNjcmF0Y2hJbmRleERhdGFC
dWZmZXIpOworCisgICAgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0KKyAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihzaXplb2YoR0x1aW50KSAqIG1TY3JhdGNoSW5kZXhEYXRhQnVm
ZmVyLnNpemUoKSk7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gbUxpbmVMb29wSUItPnJlc2VydmVC
dWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKTsKICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKQEAgLTE2NjUsNDIgKzE5NjksMTAgQEAKICAgICAgICAgcmV0dXJu
IGVycm9yOwogICAgIH0KIAotICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5KTsKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXhC
dWZmZXJPZmZzZXQgPSBvZmZzZXQ7CisgICAgLy8gQ29weSBvdmVyIHRoZSBjb252ZXJ0ZWQgaW5k
ZXggZGF0YS4KKyAgICBtZW1jcHkobWFwcGVkTWVtb3J5LCAmbVNjcmF0Y2hJbmRleERhdGFCdWZm
ZXJbMF0sCisgICAgICAgICAgIHNpemVvZihHTHVpbnQpICogbVNjcmF0Y2hJbmRleERhdGFCdWZm
ZXIuc2l6ZSgpKTsKIAotICAgIHN3aXRjaCAodHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX05P
TkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJhdwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGFbaV0gPSBpOwotICAgICAgICB9
Ci0gICAgICAgIGRhdGFbY291bnRdID0gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5
dGUqPihpbmRpY2VzKVtpXTsKLSAgICAgICAgfQotICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVswXTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxj
b25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2ldOwotICAgICAgICB9Ci0gICAgICAgIGRhdGFbY291
bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVswXTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhW2ldID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4oaW5kaWNlcylbaV07Ci0gICAgICAgIH0KLSAgICAgICAg
ZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVswXTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQogICAg
IGVycm9yID0gbUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCk7CiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7CkBAIC0xNzExLDIxICsxOTgzLDQyIEBACiAgICAgSUQzRDExQnVmZmVyICpk
M2RJbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsKICAgICBEWEdJX0ZPUk1B
VCBpbmRleEZvcm1hdCA9IGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpOwogCi0gICAgaWYg
KG1BcHBsaWVkSUIgIT0gZDNkSW5kZXhCdWZmZXIgfHwgbUFwcGxpZWRJQkZvcm1hdCAhPSBpbmRl
eEZvcm1hdCB8fCBtQXBwbGllZElCT2Zmc2V0ICE9IGluZGV4QnVmZmVyT2Zmc2V0KQorICAgIGlm
IChtQXBwbGllZElCICE9IGQzZEluZGV4QnVmZmVyIHx8IG1BcHBsaWVkSUJGb3JtYXQgIT0gaW5k
ZXhGb3JtYXQgfHwKKyAgICAgICAgbUFwcGxpZWRJQk9mZnNldCAhPSBvZmZzZXQpCiAgICAgewot
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihkM2RJbmRleEJ1ZmZlciwg
aW5kZXhGb3JtYXQsIGluZGV4QnVmZmVyT2Zmc2V0KTsKKyAgICAgICAgbURldmljZUNvbnRleHQt
PklBU2V0SW5kZXhCdWZmZXIoZDNkSW5kZXhCdWZmZXIsIGluZGV4Rm9ybWF0LCBvZmZzZXQpOwog
ICAgICAgICBtQXBwbGllZElCID0gZDNkSW5kZXhCdWZmZXI7CiAgICAgICAgIG1BcHBsaWVkSUJG
b3JtYXQgPSBpbmRleEZvcm1hdDsKLSAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4QnVm
ZmVyT2Zmc2V0OworICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0KIAot
ICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZChjb3VudCArIDEsIDAsIC1taW5JbmRleCk7
CisgICAgSU5UIGJhc2VWZXJ0ZXhMb2NhdGlvbiA9IChpbmRleEluZm8gPyAtc3RhdGljX2Nhc3Q8
aW50PihpbmRleEluZm8tPmluZGV4UmFuZ2Uuc3RhcnQpIDogMCk7CisgICAgVUlOVCBpbmRleENv
dW50ID0gc3RhdGljX2Nhc3Q8VUlOVD4obVNjcmF0Y2hJbmRleERhdGFCdWZmZXIuc2l6ZSgpKTsK
IAorICAgIGlmIChpbnN0YW5jZXMgPiAwKQorICAgIHsKKyAgICAgICAgbURldmljZUNvbnRleHQt
PkRyYXdJbmRleGVkSW5zdGFuY2VkKGluZGV4Q291bnQsIGluc3RhbmNlcywgMCwgYmFzZVZlcnRl
eExvY2F0aW9uLCAwKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbURldmljZUNv
bnRleHQtPkRyYXdJbmRleGVkKGluZGV4Q291bnQsIDAsIGJhc2VWZXJ0ZXhMb2NhdGlvbik7Cisg
ICAgfQorCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJv
ciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUs
IGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50IG1pbkluZGV4LCBnbDo6QnVmZmVyICplbGVtZW50
QXJyYXlCdWZmZXIsIGludCBpbnN0YW5jZXMpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd1Ry
aWFuZ2xlRmFuKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWluSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBpbnN0YW5jZXMpCiB7CisgICAgZ2w6OlZlcnRleEFycmF5ICp2YW8gICAgICAg
ICAgID0gZGF0YS5zdGF0ZS0+Z2V0VmVydGV4QXJyYXkoKTsKKyAgICBnbDo6QnVmZmVyICplbGVt
ZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOworCisg
ICAgY29uc3QgR0x2b2lkICppbmRleFBvaW50ZXIgPSBpbmRpY2VzOworCiAgICAgLy8gR2V0IHRo
ZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3CiAgICAgaWYgKHR5cGUgIT0gR0xfTk9O
RSAmJiBlbGVtZW50QXJyYXlCdWZmZXIpCiAgICAgewpAQCAtMTczOSw3ICsyMDMyLDcgQEAKICAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIGluZGljZXMgPSBi
dWZmZXJEYXRhICsgb2Zmc2V0OworICAgICAgICBpbmRleFBvaW50ZXIgPSBidWZmZXJEYXRhICsg
b2Zmc2V0OwogICAgIH0KIAogICAgIGlmICghbVRyaWFuZ2xlRmFuSUIpCkBAIC0xNzU2LDIxICsy
MDQ5LDI1IEBACiAgICAgLy8gQ2hlY2tlZCBieSBSZW5kZXJlcjExOjphcHBseVByaW1pdGl2ZVR5
cGUKICAgICBBU1NFUlQoY291bnQgPj0gMyk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVt
VHJpcyA9IGNvdW50IC0gMjsKKyAgICBjb25zdCBHTHVpbnQgbnVtVHJpcyA9IGNvdW50IC0gMjsK
IAogICAgIGlmIChudW1UcmlzID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6
bWF4KCkgLyAoc2l6ZW9mKHVuc2lnbmVkIGludCkgKiAzKSkpCiAgICAgewogICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGEgc2NyYXRj
aCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xFX0ZBTiwgdG9vIG1hbnkgaW5kaWNlcyByZXF1
aXJlZC4iKTsKICAgICB9CiAKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSAo
bnVtVHJpcyAqIDMpICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgR2V0VHJpRmFuSW5kaWNl
cyhpbmRleFBvaW50ZXIsIHR5cGUsIGNvdW50LCBkYXRhLnN0YXRlLT5pc1ByaW1pdGl2ZVJlc3Rh
cnRFbmFibGVkKCksCisgICAgICAgICAgICAgICAgICAgICAmbVNjcmF0Y2hJbmRleERhdGFCdWZm
ZXIpOworCisgICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVlZGVkID0KKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihtU2NyYXRjaEluZGV4RGF0YUJ1ZmZlci5zaXplKCkgKiBz
aXplb2YodW5zaWduZWQgaW50KSk7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gbVRyaWFuZ2xlRmFu
SUItPnJlc2VydmVCdWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKTsKICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAg
IH0KIAotICAgIHZvaWQqIG1hcHBlZE1lbW9yeSA9IE5VTEw7CisgICAgdm9pZCAqbWFwcGVkTWVt
b3J5ID0gbnVsbHB0cjsKICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwogICAgIGVycm9yID0gbVRy
aWFuZ2xlRmFuSUItPm1hcEJ1ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNl
dCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKQEAgLTE3NzgsNDYgKzIwNzUsOCBAQAogICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgdW5zaWduZWQgaW50ICpkYXRhID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihtYXBwZWRNZW1vcnkpOwotICAgIHVuc2lnbmVk
IGludCBpbmRleEJ1ZmZlck9mZnNldCA9IG9mZnNldDsKKyAgICBtZW1jcHkobWFwcGVkTWVtb3J5
LCAmbVNjcmF0Y2hJbmRleERhdGFCdWZmZXJbMF0sIHNwYWNlTmVlZGVkKTsKIAotICAgIHN3aXRj
aCAodHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEdMX05PTkU6ICAgLy8gTm9uLWluZGV4ZWQgZHJh
dwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVRyaXM7IGkrKykKLSAg
ICAgICAgewotICAgICAgICAgICAgZGF0YVtpKjMgKyAwXSA9IDA7Ci0gICAgICAgICAgICBkYXRh
W2kqMyArIDFdID0gaSArIDE7Ci0gICAgICAgICAgICBkYXRhW2kqMyArIDJdID0gaSArIDI7Ci0g
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtVHJpczsgaSsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkYXRhW2kqMyArIDBdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0
ZSo+KGluZGljZXMpWzBdOwotICAgICAgICAgICAgZGF0YVtpKjMgKyAxXSA9IHN0YXRpY19jYXN0
PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2VzKVtpICsgMV07Ci0gICAgICAgICAgICBkYXRhW2kqMyAr
IDJdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGljZXMpW2kgKyAyXTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtVHJpczsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBkYXRhW2kqMyArIDBdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQq
PihpbmRpY2VzKVswXTsKLSAgICAgICAgICAgIGRhdGFbaSozICsgMV0gPSBzdGF0aWNfY2FzdDxj
b25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2kgKyAxXTsKLSAgICAgICAgICAgIGRhdGFbaSozICsg
Ml0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpW2kgKyAyXTsKLSAgICAg
ICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVRyaXM7IGkrKykKLSAgICAgICAgewot
ICAgICAgICAgICAgZGF0YVtpKjMgKyAwXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGlu
ZGljZXMpWzBdOwotICAgICAgICAgICAgZGF0YVtpKjMgKyAxXSA9IHN0YXRpY19jYXN0PGNvbnN0
IEdMdWludCo+KGluZGljZXMpW2kgKyAxXTsKLSAgICAgICAgICAgIGRhdGFbaSozICsgMl0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVtpICsgMl07Ci0gICAgICAgIH0KLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQogICAg
IGVycm9yID0gbVRyaWFuZ2xlRmFuSUItPnVubWFwQnVmZmVyKCk7CiAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICB7CkBAIC0xODI4LDMwICsyMDg3LDMzIEBACiAgICAgSUQzRDExQnVmZmVy
ICpkM2RJbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsKICAgICBEWEdJX0ZP
Uk1BVCBpbmRleEZvcm1hdCA9IGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpOwogCi0gICAg
aWYgKG1BcHBsaWVkSUIgIT0gZDNkSW5kZXhCdWZmZXIgfHwgbUFwcGxpZWRJQkZvcm1hdCAhPSBp
bmRleEZvcm1hdCB8fCBtQXBwbGllZElCT2Zmc2V0ICE9IGluZGV4QnVmZmVyT2Zmc2V0KQorICAg
IGlmIChtQXBwbGllZElCICE9IGQzZEluZGV4QnVmZmVyIHx8IG1BcHBsaWVkSUJGb3JtYXQgIT0g
aW5kZXhGb3JtYXQgfHwKKyAgICAgICAgbUFwcGxpZWRJQk9mZnNldCAhPSBvZmZzZXQpCiAgICAg
ewotICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihkM2RJbmRleEJ1ZmZl
ciwgaW5kZXhGb3JtYXQsIGluZGV4QnVmZmVyT2Zmc2V0KTsKKyAgICAgICAgbURldmljZUNvbnRl
eHQtPklBU2V0SW5kZXhCdWZmZXIoZDNkSW5kZXhCdWZmZXIsIGluZGV4Rm9ybWF0LCBvZmZzZXQp
OwogICAgICAgICBtQXBwbGllZElCID0gZDNkSW5kZXhCdWZmZXI7CiAgICAgICAgIG1BcHBsaWVk
SUJGb3JtYXQgPSBpbmRleEZvcm1hdDsKLSAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4
QnVmZmVyT2Zmc2V0OworICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gb2Zmc2V0OwogICAgIH0K
IAorICAgIFVJTlQgaW5kZXhDb3VudCA9IHN0YXRpY19jYXN0PFVJTlQ+KG1TY3JhdGNoSW5kZXhE
YXRhQnVmZmVyLnNpemUoKSk7CisKICAgICBpZiAoaW5zdGFuY2VzID4gMCkKICAgICB7Ci0gICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChudW1UcmlzICogMywgaW5z
dGFuY2VzLCAwLCAtbWluSW5kZXgsIDApOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0lu
ZGV4ZWRJbnN0YW5jZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VzLCAwLCAtbWluSW5kZXgsIDApOwog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4
ZWQobnVtVHJpcyAqIDMsIDAsIC1taW5JbmRleCk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5E
cmF3SW5kZXhlZChpbmRleENvdW50LCAwLCAtbWluSW5kZXgpOwogICAgIH0KIAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBw
bHlTaGFkZXJzKGdsOjpQcm9ncmFtICpwcm9ncmFtLCBjb25zdCBnbDo6VmVydGV4Rm9ybWF0IGlu
cHV0TGF5b3V0W10sIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmFzdGVyaXplckRpc2NhcmQsIGJvb2wg
dHJhbnNmb3JtRmVlZGJhY2tBY3RpdmUpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlTaGFk
ZXJzSW1wbChjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogewotICAgIFBy
b2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7Cisg
ICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCAgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5z
dGF0ZS0+Z2V0UHJvZ3JhbSgpKTsKKyAgICBjb25zdCBhdXRvICZpbnB1dExheW91dCA9IHByb2dy
YW1EM0QtPmdldENhY2hlZElucHV0TGF5b3V0KCk7CiAKICAgICBTaGFkZXJFeGVjdXRhYmxlRDNE
ICp2ZXJ0ZXhFeGUgPSBOVUxMOwogICAgIGdsOjpFcnJvciBlcnJvciA9IHByb2dyYW1EM0QtPmdl
dFZlcnRleEV4ZWN1dGFibGVGb3JJbnB1dExheW91dChpbnB1dExheW91dCwgJnZlcnRleEV4ZSwg
bnVsbHB0cik7CkBAIC0xODYwLDMwICsyMTIyLDM5IEBACiAgICAgICAgIHJldHVybiBlcnJvcjsK
ICAgICB9CiAKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGRh
dGEuc3RhdGUtPmdldERyYXdGcmFtZWJ1ZmZlcigpOwogICAgIFNoYWRlckV4ZWN1dGFibGVEM0Qg
KnBpeGVsRXhlID0gTlVMTDsKLSAgICBlcnJvciA9IHByb2dyYW1EM0QtPmdldFBpeGVsRXhlY3V0
YWJsZUZvckZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyLCAmcGl4ZWxFeGUpOworICAgIGVycm9yID0g
cHJvZ3JhbUQzRC0+Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yRnJhbWVidWZmZXIoZHJhd0ZyYW1lYnVm
ZmVyLCAmcGl4ZWxFeGUpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAg
ICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqZ2VvbWV0
cnlFeGUgPSBwcm9ncmFtRDNELT5nZXRHZW9tZXRyeUV4ZWN1dGFibGUoKTsKKyAgICBTaGFkZXJF
eGVjdXRhYmxlRDNEICpnZW9tZXRyeUV4ZSA9IG51bGxwdHI7CisgICAgZXJyb3IgPQorICAgICAg
ICBwcm9ncmFtRDNELT5nZXRHZW9tZXRyeUV4ZWN1dGFibGVGb3JQcmltaXRpdmVUeXBlKGRhdGEs
IGRyYXdNb2RlLCAmZ2VvbWV0cnlFeGUsIG51bGxwdHIpOworICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQogCiAgICAgSUQzRDExVmVy
dGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSAodmVydGV4RXhlID8gR2V0QXM8U2hhZGVyRXhlY3V0
YWJsZTExPih2ZXJ0ZXhFeGUpLT5nZXRWZXJ0ZXhTaGFkZXIoKSA6IE5VTEwpOwogCiAgICAgSUQz
RDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVyID0gTlVMTDsKICAgICAvLyBTa2lwIHBpeGVsIHNo
YWRlciBpZiB3ZSdyZSBkb2luZyByYXN0ZXJpemVyIGRpc2NhcmQuCisgICAgYm9vbCByYXN0ZXJp
emVyRGlzY2FyZCA9IGRhdGEuc3RhdGUtPmdldFJhc3Rlcml6ZXJTdGF0ZSgpLnJhc3Rlcml6ZXJE
aXNjYXJkOwogICAgIGlmICghcmFzdGVyaXplckRpc2NhcmQpCiAgICAgewogICAgICAgICBwaXhl
bFNoYWRlciA9IChwaXhlbEV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4ocGl4ZWxFeGUp
LT5nZXRQaXhlbFNoYWRlcigpIDogTlVMTCk7CiAgICAgfQogCiAgICAgSUQzRDExR2VvbWV0cnlT
aGFkZXIgKmdlb21ldHJ5U2hhZGVyID0gTlVMTDsKKyAgICBib29sIHRyYW5zZm9ybUZlZWRiYWNr
QWN0aXZlID0gZGF0YS5zdGF0ZS0+aXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCk7
CiAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrQWN0aXZlKQogICAgIHsKICAgICAgICAgZ2VvbWV0
cnlTaGFkZXIgPSAodmVydGV4RXhlID8gR2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPih2ZXJ0ZXhF
eGUpLT5nZXRTdHJlYW1PdXRTaGFkZXIoKSA6IE5VTEwpOwogICAgIH0KLSAgICBlbHNlIGlmICht
Q3VyUmFzdGVyU3RhdGUucG9pbnREcmF3TW9kZSkKKyAgICBlbHNlCiAgICAgewogICAgICAgICBn
ZW9tZXRyeVNoYWRlciA9IChnZW9tZXRyeUV4ZSA/IEdldEFzPFNoYWRlckV4ZWN1dGFibGUxMT4o
Z2VvbWV0cnlFeGUpLT5nZXRHZW9tZXRyeVNoYWRlcigpIDogTlVMTCk7CiAgICAgfQpAQCAtMTkx
OSw3ICsyMTkwLDkgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAot
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUltcGwgJnBy
b2dyYW0sIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRVbmlmb3JtKj4gJnVuaWZvcm1BcnJh
eSkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0Qg
JnByb2dyYW1EM0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZHJhd01vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxEM0RVbmlmb3JtICo+ICZ1bmlmb3JtQXJyYXkpCiB7CiAgICAgdW5zaWduZWQgaW50
IHRvdGFsUmVnaXN0ZXJDb3VudFZTID0gMDsKICAgICB1bnNpZ25lZCBpbnQgdG90YWxSZWdpc3Rl
ckNvdW50UFMgPSAwOwpAQCAtMTkyNywyNiArMjIwMCwyNSBAQAogICAgIGJvb2wgdmVydGV4VW5p
Zm9ybXNEaXJ0eSA9IGZhbHNlOwogICAgIGJvb2wgcGl4ZWxVbmlmb3Jtc0RpcnR5ID0gZmFsc2U7
CiAKLSAgICBmb3IgKHNpemVfdCB1bmlmb3JtSW5kZXggPSAwOyB1bmlmb3JtSW5kZXggPCB1bmlm
b3JtQXJyYXkuc2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKKyAgICBmb3IgKGNvbnN0IEQzRFVuaWZv
cm0gKnVuaWZvcm0gOiB1bmlmb3JtQXJyYXkpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6TGlu
a2VkVW5pZm9ybSAmdW5pZm9ybSA9ICp1bmlmb3JtQXJyYXlbdW5pZm9ybUluZGV4XTsKLQotICAg
ICAgICBpZiAodW5pZm9ybS5pc1JlZmVyZW5jZWRCeVZlcnRleFNoYWRlcigpICYmICF1bmlmb3Jt
LmlzU2FtcGxlcigpKQorICAgICAgICBpZiAodW5pZm9ybS0+aXNSZWZlcmVuY2VkQnlWZXJ0ZXhT
aGFkZXIoKSAmJiAhdW5pZm9ybS0+aXNTYW1wbGVyKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHRvdGFsUmVnaXN0ZXJDb3VudFZTICs9IHVuaWZvcm0ucmVnaXN0ZXJDb3VudDsKLSAgICAgICAg
ICAgIHZlcnRleFVuaWZvcm1zRGlydHkgPSAodmVydGV4VW5pZm9ybXNEaXJ0eSB8fCB1bmlmb3Jt
LmRpcnR5KTsKKyAgICAgICAgICAgIHRvdGFsUmVnaXN0ZXJDb3VudFZTICs9IHVuaWZvcm0tPnJl
Z2lzdGVyQ291bnQ7CisgICAgICAgICAgICB2ZXJ0ZXhVbmlmb3Jtc0RpcnR5ID0gKHZlcnRleFVu
aWZvcm1zRGlydHkgfHwgdW5pZm9ybS0+ZGlydHkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KHVuaWZvcm0uaXNSZWZlcmVuY2VkQnlGcmFnbWVudFNoYWRlcigpICYmICF1bmlmb3JtLmlzU2Ft
cGxlcigpKQorICAgICAgICBpZiAodW5pZm9ybS0+aXNSZWZlcmVuY2VkQnlGcmFnbWVudFNoYWRl
cigpICYmICF1bmlmb3JtLT5pc1NhbXBsZXIoKSkKICAgICAgICAgewotICAgICAgICAgICAgdG90
YWxSZWdpc3RlckNvdW50UFMgKz0gdW5pZm9ybS5yZWdpc3RlckNvdW50OwotICAgICAgICAgICAg
cGl4ZWxVbmlmb3Jtc0RpcnR5ID0gKHBpeGVsVW5pZm9ybXNEaXJ0eSB8fCB1bmlmb3JtLmRpcnR5
KTsKKyAgICAgICAgICAgIHRvdGFsUmVnaXN0ZXJDb3VudFBTICs9IHVuaWZvcm0tPnJlZ2lzdGVy
Q291bnQ7CisgICAgICAgICAgICBwaXhlbFVuaWZvcm1zRGlydHkgPSAocGl4ZWxVbmlmb3Jtc0Rp
cnR5IHx8IHVuaWZvcm0tPmRpcnR5KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IFBy
b2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRBczxQcm9ncmFtRDNEPigmcHJvZ3JhbSk7Ci0gICAg
Y29uc3QgVW5pZm9ybVN0b3JhZ2UxMSAqdmVydGV4VW5pZm9ybVN0b3JhZ2UgPSBHZXRBczxVbmlm
b3JtU3RvcmFnZTExPigmcHJvZ3JhbUQzRC0+Z2V0VmVydGV4VW5pZm9ybVN0b3JhZ2UoKSk7Ci0g
ICAgY29uc3QgVW5pZm9ybVN0b3JhZ2UxMSAqZnJhZ21lbnRVbmlmb3JtU3RvcmFnZSA9IEdldEFz
PFVuaWZvcm1TdG9yYWdlMTE+KCZwcm9ncmFtRDNELT5nZXRGcmFnbWVudFVuaWZvcm1TdG9yYWdl
KCkpOworICAgIGNvbnN0IFVuaWZvcm1TdG9yYWdlMTEgKnZlcnRleFVuaWZvcm1TdG9yYWdlID0K
KyAgICAgICAgR2V0QXM8VW5pZm9ybVN0b3JhZ2UxMT4oJnByb2dyYW1EM0QuZ2V0VmVydGV4VW5p
Zm9ybVN0b3JhZ2UoKSk7CisgICAgY29uc3QgVW5pZm9ybVN0b3JhZ2UxMSAqZnJhZ21lbnRVbmlm
b3JtU3RvcmFnZSA9CisgICAgICAgIEdldEFzPFVuaWZvcm1TdG9yYWdlMTE+KCZwcm9ncmFtRDNE
LmdldEZyYWdtZW50VW5pZm9ybVN0b3JhZ2UoKSk7CiAgICAgQVNTRVJUKHZlcnRleFVuaWZvcm1T
dG9yYWdlKTsKICAgICBBU1NFUlQoZnJhZ21lbnRVbmlmb3JtU3RvcmFnZSk7CiAKQEAgLTE5NzQs
MjYgKzIyNDYsMjYgQEAKICAgICAgICAgbWFwUFMgPSAoZmxvYXQoKilbNF0pbWFwLnBEYXRhOwog
ICAgIH0KIAotICAgIGZvciAoc2l6ZV90IHVuaWZvcm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8
IHVuaWZvcm1BcnJheS5zaXplKCk7IHVuaWZvcm1JbmRleCsrKQorICAgIGZvciAoY29uc3QgRDNE
VW5pZm9ybSAqdW5pZm9ybSA6IHVuaWZvcm1BcnJheSkKICAgICB7Ci0gICAgICAgIGdsOjpMaW5r
ZWRVbmlmb3JtICp1bmlmb3JtID0gdW5pZm9ybUFycmF5W3VuaWZvcm1JbmRleF07CisgICAgICAg
IGlmICh1bmlmb3JtLT5pc1NhbXBsZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGlmICghdW5pZm9ybS0+aXNTYW1wbGVyKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGludCBjb21wb25lbnRDb3VudCA9ICg0IC0gdW5pZm9ybS0+cmVnaXN0ZXJFbGVtZW50
KTsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvbXBvbmVudENvdW50ID0gKDQgLSB1bmlmb3JtLT5y
ZWdpc3RlckVsZW1lbnQpOwogCi0gICAgICAgICAgICAvLyB3ZSBhc3N1bWUgdGhhdCB1bmlmb3Jt
cyBmcm9tIHN0cnVjdHMgYXJlIGFycmFuZ2VkIGluIHN0cnVjdCBvcmRlciBpbiBvdXIgdW5pZm9y
bXMgbGlzdC4gb3RoZXJ3aXNlIHdlIHdvdWxkCi0gICAgICAgICAgICAvLyBvdmVyd3JpdGUgcHJl
dmlvdXNseSB3cml0dGVuIHJlZ2lvbnMgb2YgbWVtb3J5LgorICAgICAgICAvLyB3ZSBhc3N1bWUg
dGhhdCB1bmlmb3JtcyBmcm9tIHN0cnVjdHMgYXJlIGFycmFuZ2VkIGluIHN0cnVjdCBvcmRlciBp
biBvdXIgdW5pZm9ybXMgbGlzdC4KKyAgICAgICAgLy8gb3RoZXJ3aXNlIHdlIHdvdWxkIG92ZXJ3
cml0ZSBwcmV2aW91c2x5IHdyaXR0ZW4gcmVnaW9ucyBvZiBtZW1vcnkuCiAKLSAgICAgICAgICAg
IGlmICh1bmlmb3JtLT5pc1JlZmVyZW5jZWRCeVZlcnRleFNoYWRlcigpICYmIG1hcFZTKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIG1lbWNweSgmbWFwVlNbdW5pZm9ybS0+dnNSZWdp
c3RlckluZGV4XVt1bmlmb3JtLT5yZWdpc3RlckVsZW1lbnRdLCB1bmlmb3JtLT5kYXRhLCB1bmlm
b3JtLT5yZWdpc3RlckNvdW50ICogc2l6ZW9mKGZsb2F0KSAqIGNvbXBvbmVudENvdW50KTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgaWYgKHVuaWZvcm0tPmlzUmVmZXJlbmNlZEJ5VmVydGV4U2hh
ZGVyKCkgJiYgbWFwVlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNweSgmbWFwVlNbdW5p
Zm9ybS0+dnNSZWdpc3RlckluZGV4XVt1bmlmb3JtLT5yZWdpc3RlckVsZW1lbnRdLCB1bmlmb3Jt
LT5kYXRhLAorICAgICAgICAgICAgICAgICAgIHVuaWZvcm0tPnJlZ2lzdGVyQ291bnQgKiBzaXpl
b2YoZmxvYXQpICogY29tcG9uZW50Q291bnQpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
ICh1bmlmb3JtLT5pc1JlZmVyZW5jZWRCeUZyYWdtZW50U2hhZGVyKCkgJiYgbWFwUFMpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbWVtY3B5KCZtYXBQU1t1bmlmb3JtLT5wc1JlZ2lz
dGVySW5kZXhdW3VuaWZvcm0tPnJlZ2lzdGVyRWxlbWVudF0sIHVuaWZvcm0tPmRhdGEsIHVuaWZv
cm0tPnJlZ2lzdGVyQ291bnQgKiBzaXplb2YoZmxvYXQpICogY29tcG9uZW50Q291bnQpOwotICAg
ICAgICAgICAgfQorICAgICAgICBpZiAodW5pZm9ybS0+aXNSZWZlcmVuY2VkQnlGcmFnbWVudFNo
YWRlcigpICYmIG1hcFBTKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoJm1hcFBTW3Vu
aWZvcm0tPnBzUmVnaXN0ZXJJbmRleF1bdW5pZm9ybS0+cmVnaXN0ZXJFbGVtZW50XSwgdW5pZm9y
bS0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICB1bmlmb3JtLT5yZWdpc3RlckNvdW50ICogc2l6
ZW9mKGZsb2F0KSAqIGNvbXBvbmVudENvdW50KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjAw
OSw2OSArMjI4MSw3MSBAQAogCiAgICAgaWYgKG1DdXJyZW50VmVydGV4Q29uc3RhbnRCdWZmZXIg
IT0gdmVydGV4Q29uc3RhbnRCdWZmZXIpCiAgICAgewotICAgICAgICBtRGV2aWNlQ29udGV4dC0+
VlNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJnZlcnRleENvbnN0YW50QnVmZmVyKTsKKyAgICAg
ICAgbURldmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKAorICAgICAgICAgICAgZDNk
MTE6OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0RFRkFVTFRfVU5JRk9STV9CTE9DSywg
MSwgJnZlcnRleENvbnN0YW50QnVmZmVyKTsKICAgICAgICAgbUN1cnJlbnRWZXJ0ZXhDb25zdGFu
dEJ1ZmZlciA9IHZlcnRleENvbnN0YW50QnVmZmVyOwogICAgIH0KIAogICAgIGlmIChtQ3VycmVu
dFBpeGVsQ29uc3RhbnRCdWZmZXIgIT0gcGl4ZWxDb25zdGFudEJ1ZmZlcikKICAgICB7Ci0gICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmcGl4ZWxDb25z
dGFudEJ1ZmZlcik7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVmZmVy
cygKKyAgICAgICAgICAgIGQzZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9ERUZB
VUxUX1VOSUZPUk1fQkxPQ0ssIDEsICZwaXhlbENvbnN0YW50QnVmZmVyKTsKICAgICAgICAgbUN1
cnJlbnRQaXhlbENvbnN0YW50QnVmZmVyID0gcGl4ZWxDb25zdGFudEJ1ZmZlcjsKICAgICB9CiAK
LSAgICAvLyBEcml2ZXIgdW5pZm9ybXMKICAgICBpZiAoIW1Ecml2ZXJDb25zdGFudEJ1ZmZlclZT
KQogICAgIHsKICAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgY29uc3RhbnRCdWZmZXJEZXNjcmlw
dGlvbiA9IHswfTsKLSAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5CeXRlV2lkdGgg
PSBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKTsKLSAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNj
cmlwdGlvbi5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGNvbnN0YW50QnVm
ZmVyRGVzY3JpcHRpb24uQmluZEZsYWdzID0gRDNEMTFfQklORF9DT05TVEFOVF9CVUZGRVI7Ci0g
ICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAg
ICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLk1pc2NGbGFncyA9IDA7Ci0gICAgICAgIGNv
bnN0YW50QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7Ci0KLSAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0YW50QnVmZmVy
RGVzY3JpcHRpb24sIE5VTEwsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7Ci0gICAgICAgIFVO
VVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocmVzdWx0KTsKKyAgICAgICAgZDNkMTE6OkluaXRDb25z
dGFudEJ1ZmZlckRlc2MoCisgICAgICAgICAgICAmY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbiwK
KyAgICAgICAgICAgIHNpemVvZihkeF9WZXJ0ZXhDb25zdGFudHMxMSkgKyBtU2FtcGxlck1ldGFk
YXRhVlMuc2l6ZUJ5dGVzKCkpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAg
ICBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24sIG51bGxw
dHIsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7Ci0KLSAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJz
KDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7CisgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIGNvbnN0YW50IGJ1ZmZlciwg
cmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgbURldmljZUNvbnRl
eHQtPlZTU2V0Q29uc3RhbnRCdWZmZXJzKGQzZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJf
U0xPVF9EUklWRVIsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbURyaXZlckNvbnN0YW50QnVmZmVyVlMpOwogICAgIH0KLQogICAgIGlmICghbURyaXZl
ckNvbnN0YW50QnVmZmVyUFMpCiAgICAgewogICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBjb25z
dGFudEJ1ZmZlckRlc2NyaXB0aW9uID0gezB9OwotICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2Ny
aXB0aW9uLkJ5dGVXaWR0aCA9IHNpemVvZihkeF9QaXhlbENvbnN0YW50cyk7Ci0gICAgICAgIGNv
bnN0YW50QnVmZmVyRGVzY3JpcHRpb24uVXNhZ2UgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOwotICAg
ICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfQ09O
U1RBTlRfQlVGRkVSOwotICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkNQVUFjY2Vz
c0ZsYWdzID0gMDsKLSAgICAgICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5NaXNjRmxhZ3Mg
PSAwOwotICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLlN0cnVjdHVyZUJ5dGVTdHJp
ZGUgPSAwOwotCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQnVmZmVy
KCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAmbURyaXZlckNvbnN0YW50QnVmZmVy
UFMpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CisgICAgICAg
IGQzZDExOjpJbml0Q29uc3RhbnRCdWZmZXJEZXNjKCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZHhfUGl4ZWxD
b25zdGFudHMxMSkgKyBtU2FtcGxlck1ldGFkYXRhUFMuc2l6ZUJ5dGVzKCkpOworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICBtRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0
YW50QnVmZmVyRGVzY3JpcHRpb24sIG51bGxwdHIsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7
CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0KLSAgICAgICAgbURldmljZUNv
bnRleHQtPlBTU2V0Q29uc3RhbnRCdWZmZXJzKDEsIDEsICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQ
Uyk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBwaXhl
bCBzaGFkZXIgY29uc3RhbnQgYnVmZmVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAg
ICAgfQorICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoZDNkMTE6
OlJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0RSSVZFUiwgMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUyk7
CiAgICAgfQogCi0gICAgaWYgKG1lbWNtcCgmbVZlcnRleENvbnN0YW50cywgJm1BcHBsaWVkVmVy
dGV4Q29uc3RhbnRzLCBzaXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKSkgIT0gMCkKLSAgICB7Ci0g
ICAgICAgIG1EZXZpY2VDb250ZXh0LT5VcGRhdGVTdWJyZXNvdXJjZShtRHJpdmVyQ29uc3RhbnRC
dWZmZXJWUywgMCwgTlVMTCwgJm1WZXJ0ZXhDb25zdGFudHMsIDE2LCAwKTsKLSAgICAgICAgbWVt
Y3B5KCZtQXBwbGllZFZlcnRleENvbnN0YW50cywgJm1WZXJ0ZXhDb25zdGFudHMsIHNpemVvZihk
eF9WZXJ0ZXhDb25zdGFudHMpKTsKLSAgICB9CisgICAgLy8gU2FtcGxlciBtZXRhZGF0YSBhbmQg
ZHJpdmVyIGNvbnN0YW50cyBuZWVkIHRvIGNvZXhpc3QgaW4gdGhlIHNhbWUgY29uc3RhbnQgYnVm
ZmVyIHRvIGNvbnNlcnZlCisgICAgLy8gY29uc3RhbnQgYnVmZmVyIHNsb3RzLiBXZSB1cGRhdGUg
Ym90aCBpbiB0aGUgY29uc3RhbnQgYnVmZmVyIGlmIG5lZWRlZC4KKyAgICBjb25zdCBkeF9WZXJ0
ZXhDb25zdGFudHMxMSAmdmVydGV4Q29uc3RhbnRzID0gbVN0YXRlTWFuYWdlci5nZXRWZXJ0ZXhD
b25zdGFudHMoKTsKKyAgICBzaXplX3Qgc2FtcGxlck1ldGFkYXRhUmVmZXJlbmNlZEJ5dGVzVlMg
PSBzaXplb2YoU2FtcGxlck1ldGFkYXRhRDNEMTE6OmR4X1NhbXBsZXJNZXRhZGF0YSkgKgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1EM0QuZ2V0
VXNlZFNhbXBsZXJSYW5nZShnbDo6U0FNUExFUl9WRVJURVgpOworICAgIGFwcGx5RHJpdmVyQ29u
c3RhbnRzSWZOZWVkZWQoJm1BcHBsaWVkVmVydGV4Q29uc3RhbnRzLCB2ZXJ0ZXhDb25zdGFudHMs
ICZtU2FtcGxlck1ldGFkYXRhVlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVyTWV0YWRhdGFSZWZlcmVuY2VkQnl0ZXNWUywgbURyaXZlckNvbnN0YW50QnVmZmVyVlMp
OwogCi0gICAgaWYgKG1lbWNtcCgmbVBpeGVsQ29uc3RhbnRzLCAmbUFwcGxpZWRQaXhlbENvbnN0
YW50cywgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSkgIT0gMCkKLSAgICB7Ci0gICAgICAgIG1E
ZXZpY2VDb250ZXh0LT5VcGRhdGVTdWJyZXNvdXJjZShtRHJpdmVyQ29uc3RhbnRCdWZmZXJQUywg
MCwgTlVMTCwgJm1QaXhlbENvbnN0YW50cywgMTYsIDApOwotICAgICAgICBtZW1jcHkoJm1BcHBs
aWVkUGl4ZWxDb25zdGFudHMsICZtUGl4ZWxDb25zdGFudHMsIHNpemVvZihkeF9QaXhlbENvbnN0
YW50cykpOwotICAgIH0KKyAgICBjb25zdCBkeF9QaXhlbENvbnN0YW50czExICZwaXhlbENvbnN0
YW50cyA9IG1TdGF0ZU1hbmFnZXIuZ2V0UGl4ZWxDb25zdGFudHMoKTsKKyAgICBzaXplX3Qgc2Ft
cGxlck1ldGFkYXRhUmVmZXJlbmNlZEJ5dGVzUFMgPSBzaXplb2YoU2FtcGxlck1ldGFkYXRhRDNE
MTE6OmR4X1NhbXBsZXJNZXRhZGF0YSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1EM0QuZ2V0VXNlZFNhbXBsZXJSYW5nZShnbDo6U0FNUExF
Ul9QSVhFTCk7CisgICAgYXBwbHlEcml2ZXJDb25zdGFudHNJZk5lZWRlZCgmbUFwcGxpZWRQaXhl
bENvbnN0YW50cywgcGl4ZWxDb25zdGFudHMsICZtU2FtcGxlck1ldGFkYXRhUFMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyTWV0YWRhdGFSZWZlcmVuY2VkQnl0ZXNQ
UywgbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOwogCiAgICAgLy8gR1NTZXRDb25zdGFudEJ1ZmZl
cnMgdHJpZ2dlcnMgZGV2aWNlIHJlbW92YWwgb24gOV8zLCBzbyB3ZSBzaG91bGQgb25seSBjYWxs
IGl0IGlmIG5lY2Vzc2FyeQotICAgIGlmIChwcm9ncmFtRDNELT51c2VzR2VvbWV0cnlTaGFkZXIo
KSkKKyAgICBpZiAocHJvZ3JhbUQzRC51c2VzR2VvbWV0cnlTaGFkZXIoZHJhd01vZGUpKQogICAg
IHsKICAgICAgICAgLy8gbmVlZGVkIGZvciB0aGUgcG9pbnQgc3ByaXRlIGdlb21ldHJ5IHNoYWRl
cgogICAgICAgICBpZiAobUN1cnJlbnRHZW9tZXRyeUNvbnN0YW50QnVmZmVyICE9IG1Ecml2ZXJD
b25zdGFudEJ1ZmZlclBTKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobURyaXZlckNv
bnN0YW50QnVmZmVyUFMgIT0gbnVsbHB0cik7CiAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+
R1NTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJm1Ecml2ZXJDb25zdGFudEJ1ZmZlclBTKTsKICAg
ICAgICAgICAgIG1DdXJyZW50R2VvbWV0cnlDb25zdGFudEJ1ZmZlciA9IG1Ecml2ZXJDb25zdGFu
dEJ1ZmZlclBTOwogICAgICAgICB9CkBAIC0yMDgwLDQ5ICsyMzU0LDE3NSBAQAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi12b2lkIFJlbmRlcmVyMTE6Om1hcmtBbGxT
dGF0ZURpcnR5KCkKKy8vIFNhbXBsZXJNZXRhZGF0YUQzRDExIGltcGxlbWVudGF0aW9uCisKK1Jl
bmRlcmVyMTE6OlNhbXBsZXJNZXRhZGF0YUQzRDExOjpTYW1wbGVyTWV0YWRhdGFEM0QxMSgpIDog
bURpcnR5KHRydWUpCiB7Ci0gICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiUmVuZGVyZXIx
MTo6bWFya0FsbFN0YXRlRGlydHkiKTsKK30KIAotICAgIGZvciAoc2l6ZV90IHJ0SW5kZXggPSAw
OyBydEluZGV4IDwgQXJyYXlTaXplKG1BcHBsaWVkUlRWcyk7IHJ0SW5kZXgrKykKK1JlbmRlcmVy
MTE6OlNhbXBsZXJNZXRhZGF0YUQzRDExOjp+U2FtcGxlck1ldGFkYXRhRDNEMTEoKQoreworfQor
Cit2b2lkIFJlbmRlcmVyMTE6OlNhbXBsZXJNZXRhZGF0YUQzRDExOjppbml0RGF0YSh1bnNpZ25l
ZCBpbnQgc2FtcGxlckNvdW50KQoreworICAgIG1TYW1wbGVyTWV0YWRhdGEucmVzaXplKHNhbXBs
ZXJDb3VudCk7Cit9CisKK3ZvaWQgUmVuZGVyZXIxMTo6U2FtcGxlck1ldGFkYXRhRDNEMTE6OnVw
ZGF0ZSh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4LCBjb25zdCBnbDo6VGV4dHVyZSAmdGV4dHVy
ZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgYmFzZUxldmVsID0gdGV4dHVyZS5nZXRCYXNlTGV2ZWwo
KTsKKyAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSB0ZXh0dXJlLmdldEludGVybmFsRm9ybWF0
KHRleHR1cmUuZ2V0VGFyZ2V0KCksIHRleHR1cmUuZ2V0QmFzZUxldmVsKCkpOworICAgIGlmICht
U2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0uYmFzZUxldmVsICE9IHN0YXRpY19jYXN0PGlu
dD4oYmFzZUxldmVsKSkKICAgICB7Ci0gICAgICAgIG1BcHBsaWVkUlRWc1tydEluZGV4XSA9IERp
cnR5UG9pbnRlcjsKKyAgICAgICAgbVNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLmJhc2VM
ZXZlbCA9IHN0YXRpY19jYXN0PGludD4oYmFzZUxldmVsKTsKKyAgICAgICAgbURpcnR5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHRydWU7CiAgICAgfQotICAgIG1BcHBsaWVk
RFNWID0gRGlydHlQb2ludGVyOwotICAgIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCA9IGZhbHNl
OwotICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAotICAgIC8vIFdl
IHJlc2V0IHRoZSBjdXJyZW50IFNSViBkYXRhIGJlY2F1c2UgaXQgbWlnaHQgbm90IGJlIGluIHN5
bmMgd2l0aCBEM0QncyBzdGF0ZQotICAgIC8vIGFueW1vcmUuIEZvciBleGFtcGxlIHdoZW4gYSBj
dXJyZW50bHkgdXNlZCBTUlYgaXMgdXNlZCBhcyBhbiBSVFYsIEQzRCBzaWxlbnRseQotICAgIC8v
IHJlbW92ZSBpdCBmcm9tIGl0cyBzdGF0ZS4KLSAgICBtZW1zZXQobUN1clZlcnRleFNSVnMuZGF0
YSgpLCAwLCBzaXplb2YoU1JWUmVjb3JkKSAqIG1DdXJWZXJ0ZXhTUlZzLnNpemUoKSk7Ci0gICAg
bWVtc2V0KG1DdXJQaXhlbFNSVnMuZGF0YSgpLCAwLCBzaXplb2YoU1JWUmVjb3JkKSAqIG1DdXJQ
aXhlbFNSVnMuc2l6ZSgpKTsKKyAgICAvLyBTb21lIG1ldGFkYXRhIGlzIG5lZWRlZCBvbmx5IGZv
ciBpbnRlZ2VyIHRleHR1cmVzLiBXZSBhdm9pZCB1cGRhdGluZyB0aGUgY29uc3RhbnQgYnVmZmVy
CisgICAgLy8gdW5uZWNlc3NhcmlseSBieSBjaGFuZ2luZyB0aGUgZGF0YSBvbmx5IGluIGNhc2Ug
dGhlIHRleHR1cmUgaXMgYW4gaW50ZWdlciB0ZXh0dXJlIGFuZAorICAgIC8vIHRoZSB2YWx1ZXMg
aGF2ZSBjaGFuZ2VkLgorICAgIGJvb2wgbmVlZEludGVnZXJUZXh0dXJlTWV0YWRhdGEgPSBmYWxz
ZTsKKyAgICAvLyBpbnRlcm5hbEZvcm1hdEJpdHMgPT0gMCBtZWFucyBhIDMyLWJpdCB0ZXh0dXJl
IGluIHRoZSBjYXNlIG9mIGludGVnZXIgdGV4dHVyZXMuCisgICAgaW50IGludGVybmFsRm9ybWF0
Qml0cyA9IDA7CisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfUkdCQTMySToKKyAgICAgICAgY2FzZSBHTF9SR0JBMzJVSToKKyAgICAgICAgY2FzZSBH
TF9SR0IzMkk6CisgICAgICAgIGNhc2UgR0xfUkdCMzJVSToKKyAgICAgICAgY2FzZSBHTF9SRzMy
SToKKyAgICAgICAgY2FzZSBHTF9SRzMyVUk6CisgICAgICAgIGNhc2UgR0xfUjMySToKKyAgICAg
ICAgY2FzZSBHTF9SMzJVSToKKyAgICAgICAgICAgIG5lZWRJbnRlZ2VyVGV4dHVyZU1ldGFkYXRh
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1JHQkExNkk6Cisg
ICAgICAgIGNhc2UgR0xfUkdCQTE2VUk6CisgICAgICAgIGNhc2UgR0xfUkdCMTZJOgorICAgICAg
ICBjYXNlIEdMX1JHQjE2VUk6CisgICAgICAgIGNhc2UgR0xfUkcxNkk6CisgICAgICAgIGNhc2Ug
R0xfUkcxNlVJOgorICAgICAgICBjYXNlIEdMX1IxNkk6CisgICAgICAgIGNhc2UgR0xfUjE2VUk6
CisgICAgICAgICAgICBuZWVkSW50ZWdlclRleHR1cmVNZXRhZGF0YSA9IHRydWU7CisgICAgICAg
ICAgICBpbnRlcm5hbEZvcm1hdEJpdHMgICAgID0gMTY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9SR0JBOEk6CisgICAgICAgIGNhc2UgR0xfUkdCQThVSToKKyAgICAgICAg
Y2FzZSBHTF9SR0I4SToKKyAgICAgICAgY2FzZSBHTF9SR0I4VUk6CisgICAgICAgIGNhc2UgR0xf
Ukc4SToKKyAgICAgICAgY2FzZSBHTF9SRzhVSToKKyAgICAgICAgY2FzZSBHTF9SOEk6CisgICAg
ICAgIGNhc2UgR0xfUjhVSToKKyAgICAgICAgICAgIG5lZWRJbnRlZ2VyVGV4dHVyZU1ldGFkYXRh
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGludGVybmFsRm9ybWF0Qml0cyAgICAgPSA4OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkdCMTBfQTJVSToKKyAgICAgICAgICAgIG5l
ZWRJbnRlZ2VyVGV4dHVyZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICAgICAgICAgIGludGVybmFsRm9y
bWF0Qml0cyAgICAgPSAxMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChuZWVkSW50ZWdlclRleHR1cmVNZXRh
ZGF0YSkKKyAgICB7CisgICAgICAgIGlmIChtU2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0u
aW50ZXJuYWxGb3JtYXRCaXRzICE9IGludGVybmFsRm9ybWF0Qml0cykKKyAgICAgICAgeworICAg
ICAgICAgICAgbVNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLmludGVybmFsRm9ybWF0Qml0
cyA9IGludGVybmFsRm9ybWF0Qml0czsKKyAgICAgICAgICAgIG1EaXJ0eSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgICAgICB9CisgICAgICAg
IC8vIFBhY2sgdGhlIHdyYXAgdmFsdWVzIGludG8gb25lIGludGVnZXIgc28gd2UgY2FuIGZpdCBh
bGwgdGhlIG1ldGFkYXRhIGluIG9uZSA0LWludGVnZXIKKyAgICAgICAgLy8gdmVjdG9yLgorICAg
ICAgICBHTGVudW0gd3JhcFMgID0gdGV4dHVyZS5nZXRXcmFwUygpOworICAgICAgICBHTGVudW0g
d3JhcFQgID0gdGV4dHVyZS5nZXRXcmFwVCgpOworICAgICAgICBHTGVudW0gd3JhcFIgID0gdGV4
dHVyZS5nZXRXcmFwUigpOworICAgICAgICBpbnQgd3JhcE1vZGVzID0gR2V0V3JhcEJpdHMod3Jh
cFMpIHwgKEdldFdyYXBCaXRzKHdyYXBUKSA8PCAyKSB8IChHZXRXcmFwQml0cyh3cmFwUikgPDwg
NCk7CisgICAgICAgIGlmIChtU2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0ud3JhcE1vZGVz
ICE9IHdyYXBNb2RlcykKKyAgICAgICAgeworICAgICAgICAgICAgbVNhbXBsZXJNZXRhZGF0YVtz
YW1wbGVySW5kZXhdLndyYXBNb2RlcyA9IHdyYXBNb2RlczsKKyAgICAgICAgICAgIG1EaXJ0eSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgICAgICB9CisgICAg
fQorfQogCi0gICAgQVNTRVJUKG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXMuc2l6ZSgpID09
IG1DdXJWZXJ0ZXhTUlZzLnNpemUoKSk7Citjb25zdCBSZW5kZXJlcjExOjpTYW1wbGVyTWV0YWRh
dGFEM0QxMTo6ZHhfU2FtcGxlck1ldGFkYXRhICoKK1JlbmRlcmVyMTE6OlNhbXBsZXJNZXRhZGF0
YUQzRDExOjpnZXREYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVNhbXBsZXJNZXRhZGF0YS5k
YXRhKCk7Cit9CisKK3NpemVfdCBSZW5kZXJlcjExOjpTYW1wbGVyTWV0YWRhdGFEM0QxMTo6c2l6
ZUJ5dGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2l6ZW9mKFNhbXBsZXJNZXRhZGF0YUQzRDEx
OjpkeF9TYW1wbGVyTWV0YWRhdGEpICogbVNhbXBsZXJNZXRhZGF0YS5zaXplKCk7Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBUU2hhZGVyQ29uc3RhbnRzPgordm9pZCBSZW5kZXJlcjExOjphcHBseURy
aXZlckNvbnN0YW50c0lmTmVlZGVkKFRTaGFkZXJDb25zdGFudHMgKmFwcGxpZWRDb25zdGFudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNo
YWRlckNvbnN0YW50cyAmY29uc3RhbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNhbXBsZXJNZXRhZGF0YUQzRDExICpzYW1wbGVyTWV0YWRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNhbXBs
ZXJNZXRhZGF0YVJlZmVyZW5jZWRCeXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFCdWZmZXIgKmRyaXZlckNvbnN0YW50QnVmZmVyKQorewor
ICAgIEFTU0VSVChkcml2ZXJDb25zdGFudEJ1ZmZlciAhPSBudWxscHRyKTsKKyAgICBpZiAobWVt
Y21wKGFwcGxpZWRDb25zdGFudHMsICZjb25zdGFudHMsIHNpemVvZihUU2hhZGVyQ29uc3RhbnRz
KSkgIT0gMCB8fAorICAgICAgICBzYW1wbGVyTWV0YWRhdGEtPmlzRGlydHkoKSkKKyAgICB7Cisg
ICAgICAgIG1lbWNweShhcHBsaWVkQ29uc3RhbnRzLCAmY29uc3RhbnRzLCBzaXplb2YoVFNoYWRl
ckNvbnN0YW50cykpOworCisgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwaW5n
ID0gezB9OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICBtRGV2aWNlQ29u
dGV4dC0+TWFwKGRyaXZlckNvbnN0YW50QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBpbmcpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAg
ICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CisgICAgICAgIG1lbWNweSht
YXBwaW5nLnBEYXRhLCBhcHBsaWVkQ29uc3RhbnRzLCBzaXplb2YoVFNoYWRlckNvbnN0YW50cykp
OworICAgICAgICAvLyBQcmV2aW91cyBidWZmZXIgY29udGVudHMgd2VyZSBkaXNjYXJkZWQsIHNv
IHdlIG5lZWQgdG8gcmVmcmVzaCBhbHNvIHRoZSBhcmVhIG9mIHRoZQorICAgICAgICAvLyBidWZm
ZXIgdGhhdCBpc24ndCB1c2VkIGJ5IHRoaXMgcHJvZ3JhbS4KKyAgICAgICAgbWVtY3B5KCZyZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QgKj4obWFwcGluZy5wRGF0YSlbc2l6ZW9mKFRTaGFkZXJDb25z
dGFudHMpXSwKKyAgICAgICAgICAgICAgIHNhbXBsZXJNZXRhZGF0YS0+Z2V0RGF0YSgpLCBzYW1w
bGVyTWV0YWRhdGEtPnNpemVCeXRlcygpKTsKKyAgICAgICAgbURldmljZUNvbnRleHQtPlVubWFw
KGRyaXZlckNvbnN0YW50QnVmZmVyLCAwKTsKKworICAgICAgICBzYW1wbGVyTWV0YWRhdGEtPm1h
cmtDbGVhbigpOworICAgIH0KK30KKwordGVtcGxhdGUgdm9pZCBSZW5kZXJlcjExOjphcHBseURy
aXZlckNvbnN0YW50c0lmTmVlZGVkPGR4X1ZlcnRleENvbnN0YW50czExPigKKyAgICBkeF9WZXJ0
ZXhDb25zdGFudHMxMSAqYXBwbGllZENvbnN0YW50cywKKyAgICBjb25zdCBkeF9WZXJ0ZXhDb25z
dGFudHMxMSAmY29uc3RhbnRzLAorICAgIFNhbXBsZXJNZXRhZGF0YUQzRDExICpzYW1wbGVyTWV0
YWRhdGEsCisgICAgc2l6ZV90IHNhbXBsZXJNZXRhZGF0YVJlZmVyZW5jZWRCeXRlcywKKyAgICBJ
RDNEMTFCdWZmZXIgKmRyaXZlckNvbnN0YW50QnVmZmVyKTsKK3RlbXBsYXRlIHZvaWQgUmVuZGVy
ZXIxMTo6YXBwbHlEcml2ZXJDb25zdGFudHNJZk5lZWRlZDxkeF9QaXhlbENvbnN0YW50czExPigK
KyAgICBkeF9QaXhlbENvbnN0YW50czExICphcHBsaWVkQ29uc3RhbnRzLAorICAgIGNvbnN0IGR4
X1BpeGVsQ29uc3RhbnRzMTEgJmNvbnN0YW50cywKKyAgICBTYW1wbGVyTWV0YWRhdGFEM0QxMSAq
c2FtcGxlck1ldGFkYXRhLAorICAgIHNpemVfdCBzYW1wbGVyTWV0YWRhdGFSZWZlcmVuY2VkQnl0
ZXMsCisgICAgSUQzRDExQnVmZmVyICpkcml2ZXJDb25zdGFudEJ1ZmZlcik7CisKK3ZvaWQgUmVu
ZGVyZXIxMTo6bWFya0FsbFN0YXRlRGlydHkoKQoreworICAgIFRSQUNFX0VWRU5UMCgiZ3B1LmFu
Z2xlIiwgIlJlbmRlcmVyMTE6Om1hcmtBbGxTdGF0ZURpcnR5Iik7CisKICAgICBmb3IgKHNpemVf
dCB2c2FtcGxlcklkID0gMDsgdnNhbXBsZXJJZCA8IG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0
ZXMuc2l6ZSgpOyArK3ZzYW1wbGVySWQpCiAgICAgewogICAgICAgICBtRm9yY2VTZXRWZXJ0ZXhT
YW1wbGVyU3RhdGVzW3ZzYW1wbGVySWRdID0gdHJ1ZTsKICAgICB9CiAKLSAgICBBU1NFUlQobUZv
cmNlU2V0UGl4ZWxTYW1wbGVyU3RhdGVzLnNpemUoKSA9PSBtQ3VyUGl4ZWxTUlZzLnNpemUoKSk7
CiAgICAgZm9yIChzaXplX3QgZnNhbXBsZXJJZCA9IDA7IGZzYW1wbGVySWQgPCBtRm9yY2VTZXRQ
aXhlbFNhbXBsZXJTdGF0ZXMuc2l6ZSgpOyArK2ZzYW1wbGVySWQpCiAgICAgewogICAgICAgICBt
Rm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXNbZnNhbXBsZXJJZF0gPSB0cnVlOwogICAgIH0KIAot
ICAgIG1Gb3JjZVNldEJsZW5kU3RhdGUgPSB0cnVlOwotICAgIG1Gb3JjZVNldFJhc3RlclN0YXRl
ID0gdHJ1ZTsKLSAgICBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSA9IHRydWU7Ci0gICAgbUZv
cmNlU2V0U2Npc3NvciA9IHRydWU7Ci0gICAgbUZvcmNlU2V0Vmlld3BvcnQgPSB0cnVlOworICAg
IG1TdGF0ZU1hbmFnZXIuaW52YWxpZGF0ZUV2ZXJ5dGhpbmcoKTsKIAogICAgIG1BcHBsaWVkSUIg
PSBOVUxMOwogICAgIG1BcHBsaWVkSUJGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOwogICAg
IG1BcHBsaWVkSUJPZmZzZXQgPSAwOwogCi0gICAgbUFwcGxpZWRWZXJ0ZXhTaGFkZXIgPSBEaXJ0
eVBvaW50ZXI7Ci0gICAgbUFwcGxpZWRHZW9tZXRyeVNoYWRlciA9IERpcnR5UG9pbnRlcjsKLSAg
ICBtQXBwbGllZFBpeGVsU2hhZGVyID0gRGlydHlQb2ludGVyOworICAgIG1BcHBsaWVkVmVydGV4
U2hhZGVyICAgPSBhbmdsZTo6RGlydHlQb2ludGVyOworICAgIG1BcHBsaWVkR2VvbWV0cnlTaGFk
ZXIgPSBhbmdsZTo6RGlydHlQb2ludGVyOworICAgIG1BcHBsaWVkUGl4ZWxTaGFkZXIgICAgPSBh
bmdsZTo6RGlydHlQb2ludGVyOwogCiAgICAgbUFwcGxpZWROdW1YRkJCaW5kaW5ncyA9IHN0YXRp
Y19jYXN0PHNpemVfdD4oLTEpOwogCkBAIC0yMTMyLDggKzI1MzIsOCBAQAogICAgICAgICBtQXBw
bGllZFRGT2Zmc2V0c1tpXSA9IDA7CiAgICAgfQogCi0gICAgbWVtc2V0KCZtQXBwbGllZFZlcnRl
eENvbnN0YW50cywgMCwgc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50cykpOwotICAgIG1lbXNldCgm
bUFwcGxpZWRQaXhlbENvbnN0YW50cywgMCwgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzKSk7Cisg
ICAgbWVtc2V0KCZtQXBwbGllZFZlcnRleENvbnN0YW50cywgMCwgc2l6ZW9mKGR4X1ZlcnRleENv
bnN0YW50czExKSk7CisgICAgbWVtc2V0KCZtQXBwbGllZFBpeGVsQ29uc3RhbnRzLCAwLCBzaXpl
b2YoZHhfUGl4ZWxDb25zdGFudHMxMSkpOwogCiAgICAgbUlucHV0TGF5b3V0Q2FjaGUubWFya0Rp
cnR5KCk7CiAKQEAgLTIxNTYsNiArMjU1Niw3IEBACiAKIHZvaWQgUmVuZGVyZXIxMTo6cmVsZWFz
ZURldmljZVJlc291cmNlcygpCiB7CisgICAgbVN0YXRlTWFuYWdlci5kZWluaXRpYWxpemUoKTsK
ICAgICBtU3RhdGVDYWNoZS5jbGVhcigpOwogICAgIG1JbnB1dExheW91dENhY2hlLmNsZWFyKCk7
CiAKQEAgLTIyMTUsMjAgKzI2MTYsMTYgQEAKICAgICBEM0RfRkVBVFVSRV9MRVZFTCBkdW1teUZl
YXR1cmVMZXZlbDsKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0KiBkdW1teUNvbnRleHQ7CiAKLSAg
ICBIUkVTVUxUIHJlc3VsdCA9IEQzRDExQ3JlYXRlRGV2aWNlKE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtRHJpdmVyVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgQVNTRVJUKG1SZXF1ZXN0ZWREcml2ZXJU
eXBlICE9IEQzRF9EUklWRVJfVFlQRV9VTktOT1dOKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEQz
RDExQ3JlYXRlRGV2aWNlKAorICAgICAgICBOVUxMLCBtUmVxdWVzdGVkRHJpdmVyVHlwZSwgTlVM
TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9E
RUJVRykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0NSRUFU
RV9ERVZJQ0VfREVCVUcsCisgICAgICAgIEQzRDExX0NSRUFURV9ERVZJQ0VfREVCVUcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuZGF0YSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuc2l6ZSgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJ
T04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlEZXZpY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlGZWF0dXJlTGV2
ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHVtbXlDb250ZXh0
KTsKKyAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KG1BdmFpbGFibGVGZWF0dXJlTGV2ZWxzLnNpemUoKSksCisgICAgICAgIEQz
RDExX1NES19WRVJTSU9OLCAmZHVtbXlEZXZpY2UsICZkdW1teUZlYXR1cmVMZXZlbCwgJmR1bW15
Q29udGV4dCk7CiAKICAgICBpZiAoIW1EZXZpY2UgfHwgRkFJTEVEKHJlc3VsdCkpCiAgICAgewpA
QCAtMjI0Nyw2ICsyNjQ0LDEzIEBACiAKICAgICByZWxlYXNlRGV2aWNlUmVzb3VyY2VzKCk7CiAK
KyAgICBpZiAoIW1DcmVhdGVkV2l0aERldmljZUVYVCkKKyAgICB7CisgICAgICAgIC8vIE9ubHkg
ZGVsZXRlIHRoZSBkZXZpY2UgaWYgdGhlIFJlbmRlcmVyMTEgb3ducyBpdAorICAgICAgICAvLyBP
dGhlcndpc2Ugd2Ugc2hvdWxkIGtlZXAgaXQgYXJvdW5kIGluIGNhc2Ugd2UgdHJ5IHRvIHJlaW5p
dGlhbGl6ZSB0aGUgcmVuZGVyZXIgbGF0ZXIKKyAgICAgICAgU2FmZURlbGV0ZShtRUdMRGV2aWNl
KTsKKyAgICB9CisKICAgICBTYWZlUmVsZWFzZShtRHhnaUZhY3RvcnkpOwogICAgIFNhZmVSZWxl
YXNlKG1EeGdpQWRhcHRlcik7CiAKQEAgLTIyNzQsNyArMjY3OCwxNSBAQAogICAgICAgICBtRHhn
aU1vZHVsZSA9IE5VTEw7CiAgICAgfQogCisgICAgaWYgKG1EQ29tcE1vZHVsZSkKKyAgICB7Cisg
ICAgICAgIEZyZWVMaWJyYXJ5KG1EQ29tcE1vZHVsZSk7CisgICAgICAgIG1EQ29tcE1vZHVsZSA9
IE5VTEw7CisgICAgfQorCiAgICAgbUNvbXBpbGVyLnJlbGVhc2UoKTsKKworICAgIG1TdXBwb3J0
c1NoYXJlSGFuZGxlcy5yZXNldCgpOwogfQogCiBib29sIFJlbmRlcmVyMTE6OnJlc2V0RGV2aWNl
KCkKQEAgLTIyOTQsMTEgKzI3MDYsNiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZW5kb3JJ
RCBSZW5kZXJlcjExOjpnZXRWZW5kb3JJZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFZlbmRvcklEPihtQWRhcHRlckRlc2NyaXB0aW9uLlZlbmRvcklkKTsKLX0KLQogc3RkOjpz
dHJpbmcgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAg
c3RkOjpvc3RyaW5nc3RyZWFtIHJlbmRlcmVyU3RyaW5nOwpAQCAtMjMxMiwyNCArMjcxOSwyOSBA
QAogICAgIHJldHVybiByZW5kZXJlclN0cmluZy5zdHIoKTsKIH0KIAotR1VJRCBSZW5kZXJlcjEx
OjpnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0CitEZXZpY2VJZGVudGlmaWVyIFJlbmRlcmVy
MTE6OmdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICAvLyBVc2UgdGhlIGFkYXB0
ZXIgTFVJRCBhcyBvdXIgYWRhcHRlciBJRAotICAgIC8vIFRoaXMgbnVtYmVyIGlzIGxvY2FsIHRv
IGEgbWFjaGluZSBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlIGJldHdlZW4gcmVzdGFy
dHMKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihMVUlEKSA8PSBzaXplb2YoR1VJRCksICJTaXpl
IG9mIEdVSUQgbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyBMVUlELiIpOwotICAgIEdVSUQg
YWRhcHRlcklkID0gezB9OwotICAgIG1lbWNweSgmYWRhcHRlcklkLCAmbUFkYXB0ZXJEZXNjcmlw
dGlvbi5BZGFwdGVyTHVpZCwgc2l6ZW9mKExVSUQpKTsKLSAgICByZXR1cm4gYWRhcHRlcklkOwor
ICAgIC8vIERvbid0IHVzZSB0aGUgQWRhcHRlckx1aWQgaGVyZSwgc2luY2UgdGhhdCBkb2Vzbid0
IHBlcnNpc3QgYWNyb3NzIHJlYm9vdC4KKyAgICBEZXZpY2VJZGVudGlmaWVyIGRldmljZUlkZW50
aWZpZXIgPSB7IDAgfTsKKyAgICBkZXZpY2VJZGVudGlmaWVyLlZlbmRvcklkID0gbUFkYXB0ZXJE
ZXNjcmlwdGlvbi5WZW5kb3JJZDsKKyAgICBkZXZpY2VJZGVudGlmaWVyLkRldmljZUlkID0gbUFk
YXB0ZXJEZXNjcmlwdGlvbi5EZXZpY2VJZDsKKyAgICBkZXZpY2VJZGVudGlmaWVyLlN1YlN5c0lk
ID0gbUFkYXB0ZXJEZXNjcmlwdGlvbi5TdWJTeXNJZDsKKyAgICBkZXZpY2VJZGVudGlmaWVyLlJl
dmlzaW9uID0gbUFkYXB0ZXJEZXNjcmlwdGlvbi5SZXZpc2lvbjsKKyAgICBkZXZpY2VJZGVudGlm
aWVyLkZlYXR1cmVMZXZlbCA9IHN0YXRpY19jYXN0PFVJTlQ+KG1SZW5kZXJlcjExRGV2aWNlQ2Fw
cy5mZWF0dXJlTGV2ZWwpOworCisgICAgcmV0dXJuIGRldmljZUlkZW50aWZpZXI7CiB9CiAKIHVu
c2lnbmVkIGludCBSZW5kZXJlcjExOjpnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gMDsgICAvLyBEcml2ZXIgdW5pZm9ybXMgYXJlIHN0b3JlZCBp
biBhIHNlcGFyYXRlIGNvbnN0YW50IGJ1ZmZlcgorICAgIC8vIERyaXZlciB1bmlmb3JtcyBhcmUg
c3RvcmVkIGluIGEgc2VwYXJhdGUgY29uc3RhbnQgYnVmZmVyCisgICAgcmV0dXJuIGQzZDExX2ds
OjpHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5m
ZWF0dXJlTGV2ZWwpOwogfQogCiB1bnNpZ25lZCBpbnQgUmVuZGVyZXIxMTo6Z2V0UmVzZXJ2ZWRG
cmFnbWVudFVuaWZvcm1WZWN0b3JzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsgICAvLyBEcml2
ZXIgdW5pZm9ybXMgYXJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGNvbnN0YW50IGJ1ZmZlcgorICAg
IC8vIERyaXZlciB1bmlmb3JtcyBhcmUgc3RvcmVkIGluIGEgc2VwYXJhdGUgY29uc3RhbnQgYnVm
ZmVyCisgICAgcmV0dXJuIGQzZDExX2dsOjpHZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3Rv
cnMobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7CiB9CiAKIHVuc2lnbmVkIGlu
dCBSZW5kZXJlcjExOjpnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgY29uc3QKQEAg
LTIzNDQsNDUgKzI3NTYsMTAwIEBACiAgICAgcmV0dXJuIDI7CiB9CiAKK2QzZDExOjpBTkdMRUQz
RDExRGV2aWNlVHlwZSBSZW5kZXJlcjExOjpnZXREZXZpY2VUeXBlKCkgY29uc3QKK3sKKyAgICBp
ZiAobUNyZWF0ZWRXaXRoRGV2aWNlRVhUKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGQzZDExOjpH
ZXREZXZpY2VUeXBlKG1EZXZpY2UpOworICAgIH0KKworICAgIGlmICgobVJlcXVlc3RlZERyaXZl
clR5cGUgPT0gRDNEX0RSSVZFUl9UWVBFX1NPRlRXQVJFKSB8fAorICAgICAgICAobVJlcXVlc3Rl
ZERyaXZlclR5cGUgPT0gRDNEX0RSSVZFUl9UWVBFX1JFRkVSRU5DRSkgfHwKKyAgICAgICAgKG1S
ZXF1ZXN0ZWREcml2ZXJUeXBlID09IEQzRF9EUklWRVJfVFlQRV9OVUxMKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkM2QxMTo6QU5HTEVfRDNEMTFfREVWSUNFX1RZUEVfU09GVFdBUkVfUkVGX09S
X05VTEw7CisgICAgfQorCisgICAgaWYgKG1SZXF1ZXN0ZWREcml2ZXJUeXBlID09IEQzRF9EUklW
RVJfVFlQRV9XQVJQKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGQzZDExOjpBTkdMRV9EM0QxMV9E
RVZJQ0VfVFlQRV9XQVJQOworICAgIH0KKworICAgIHJldHVybiBkM2QxMTo6QU5HTEVfRDNEMTFf
REVWSUNFX1RZUEVfSEFSRFdBUkU7Cit9CisKIGJvb2wgUmVuZGVyZXIxMTo6Z2V0U2hhcmVIYW5k
bGVTdXBwb3J0KCkgY29uc3QKIHsKKyAgICBpZiAobVN1cHBvcnRzU2hhcmVIYW5kbGVzLnZhbGlk
KCkpCisgICAgeworICAgICAgICByZXR1cm4gbVN1cHBvcnRzU2hhcmVIYW5kbGVzLnZhbHVlKCk7
CisgICAgfQorCiAgICAgLy8gV2Ugb25seSBjdXJyZW50bHkgc3VwcG9ydCBzaGFyZSBoYW5kbGVz
IHdpdGggQkdSQSBzdXJmYWNlcywgYmVjYXVzZQogICAgIC8vIGNocm9tZSBuZWVkcyBCR1JBLiBP
bmNlIGNocm9tZSBmaXhlcyB0aGlzLCB3ZSBzaG91bGQgYWx3YXlzIHN1cHBvcnQgdGhlbS4KICAg
ICBpZiAoIWdldFJlbmRlcmVyRXh0ZW5zaW9ucygpLnRleHR1cmVGb3JtYXRCR1JBODg4OCkKICAg
ICB7CisgICAgICAgIG1TdXBwb3J0c1NoYXJlSGFuZGxlcyA9IGZhbHNlOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gUElYIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHVz
aW5nIHNoYXJlIGhhbmRsZXMsIHNvIGRpc2FibGUgdGhlbS4KICAgICBpZiAoZ2w6OkRlYnVnQW5u
b3RhdGlvbnNBY3RpdmUoKSkKICAgICB7CisgICAgICAgIG1TdXBwb3J0c1NoYXJlSGFuZGxlcyA9
IGZhbHNlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQWxzbyBkaXNh
YmxlIHNoYXJlIGhhbmRsZXMgb24gRmVhdHVyZSBMZXZlbCA5XzMsIHNpbmNlIGl0IGRvZXNuJ3Qg
c3VwcG9ydCBzaGFyZSBoYW5kbGVzIG9uIFJHQkE4IHRleHR1cmVzL3N3YXBjaGFpbnMuCi0gICAg
aWYgKG1GZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQorICAgIGlmIChtUmVu
ZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMykK
ICAgICB7CisgICAgICAgIG1TdXBwb3J0c1NoYXJlSGFuZGxlcyA9IGZhbHNlOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gQWxzbyBkaXNhYmxlIG9uIG5vbi1oYXJkd2Fy
ZSBkcml2ZXJzLCBzaW5jZSBzaGFyaW5nIGRvZXNuJ3Qgd29yayBjcm9zcy1kcml2ZXIuCi0gICAg
aWYgKG1Ecml2ZXJUeXBlICE9IEQzRF9EUklWRVJfVFlQRV9IQVJEV0FSRSkKKyAgICAvLyBGaW5k
IG91dCB3aGljaCB0eXBlIG9mIEQzRDExIGRldmljZSB0aGUgUmVuZGVyZXIxMSBpcyB1c2luZwor
ICAgIGQzZDExOjpBTkdMRUQzRDExRGV2aWNlVHlwZSBkZXZpY2VUeXBlID0gZ2V0RGV2aWNlVHlw
ZSgpOworICAgIGlmIChkZXZpY2VUeXBlID09IGQzZDExOjpBTkdMRV9EM0QxMV9ERVZJQ0VfVFlQ
RV9VTktOT1dOKQogICAgIHsKKyAgICAgICAgbVN1cHBvcnRzU2hhcmVIYW5kbGVzID0gZmFsc2U7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAoZGV2aWNlVHlwZSA9PSBk
M2QxMTo6QU5HTEVfRDNEMTFfREVWSUNFX1RZUEVfU09GVFdBUkVfUkVGX09SX05VTEwpCisgICAg
eworICAgICAgICAvLyBTb2Z0d2FyZS9SZWZlcmVuY2UvTlVMTCBkZXZpY2VzIGRvbid0IHN1cHBv
cnQgc2hhcmUgaGFuZGxlcworICAgICAgICBtU3VwcG9ydHNTaGFyZUhhbmRsZXMgPSBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChkZXZpY2VUeXBlID09IGQz
ZDExOjpBTkdMRV9EM0QxMV9ERVZJQ0VfVFlQRV9XQVJQKQorICAgIHsKKyNpZm5kZWYgQU5HTEVf
RU5BQkxFX1dJTkRPV1NfU1RPUkUKKyAgICAgICAgaWYgKCFJc1dpbmRvd3M4T3JHcmVhdGVyKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFdBUlAgb24gV2luZG93cyA3IGRvZXNuJ3Qgc3Vw
cG9ydCBzaGFyZWQgaGFuZGxlcworICAgICAgICAgICAgbVN1cHBvcnRzU2hhcmVIYW5kbGVzID0g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyNlbmRpZiAgLy8g
QU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUKKworICAgICAgICAvLyBXQVJQIG9uIFdpbmRvd3Mg
OC4wKyBzdXBwb3J0cyBzaGFyZWQgaGFuZGxlcyB3aGVuIHNoYXJlZCB3aXRoIGFub3RoZXIgV0FS
UCBkZXZpY2UKKyAgICAgICAgLy8gVE9ETzogYWxsb3cgYXBwbGljYXRpb25zIHRvIHF1ZXJ5IGZv
ciBIQVJEV0FSRSBvciBXQVJQLXNwZWNpZmljIHNoYXJlIGhhbmRsZXMsCisgICAgICAgIC8vICAg
ICAgIHRvIHByZXZlbnQgdGhlbSB0cnlpbmcgdG8gdXNlIGEgV0FSUCBzaGFyZSBoYW5kbGUgd2l0
aCBhbiBhIEhXIGRldmljZSAob3IKKyAgICAgICAgLy8gICAgICAgdmljZS12ZXJzYSkKKyAgICAg
ICAgLy8gICAgICAgZS5nLiBieSBjcmVhdGluZyBFR0xfRDNEMTFfW0hBUkRXQVJFL1dBUlBdX0RF
VklDRV9TSEFSRV9IQU5ETEVfQU5HTEUKKyAgICAgICAgbVN1cHBvcnRzU2hhcmVIYW5kbGVzID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQVNTRVJUKG1DcmVhdGVk
V2l0aERldmljZUVYVCB8fCBtUmVxdWVzdGVkRHJpdmVyVHlwZSA9PSBEM0RfRFJJVkVSX1RZUEVf
SEFSRFdBUkUpOworICAgIG1TdXBwb3J0c1NoYXJlSGFuZGxlcyA9IHRydWU7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyZXIxMTo6Z2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBj
b25zdAotewotICAgIC8vIEQzRDExIGRvZXMgbm90IHN1cHBvcnQgcHJlc2VudCB3aXRoIGRpcnR5
IHJlY3RhbmdsZXMgdW50aWwgRDNEMTEuMSBhbmQgRFhHSSAxLjIuCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBpbnQgUmVuZGVyZXIxMTo6Z2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0CiB7Ci0g
ICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHN3aXRjaCAobVJlbmRlcmVyMTFEZXZpY2VD
YXBzLmZlYXR1cmVMZXZlbCkKICAgICB7CiAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzA6IHJldHVybiBEM0QxMV9TSEFERVJfTUFKT1JfVkVSU0lPTjsgICAvLyA1CiAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1NIQURFUl9NQUpPUl9WRVJT
SU9OOyAvLyA0CkBAIC0yMzk0LDcgKzI4NjEsNyBAQAogCiBpbnQgUmVuZGVyZXIxMTo6Z2V0TWlu
b3JTaGFkZXJNb2RlbCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAg
IHN3aXRjaCAobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkKICAgICB7CiAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9TSEFERVJfTUlOT1Jf
VkVSU0lPTjsgICAvLyAwCiAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVy
biBEM0QxMF8xX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAvLyAxCkBAIC0yNDA2LDcgKzI4NzMsNyBA
QAogCiBzdGQ6OnN0cmluZyBSZW5kZXJlcjExOjpnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpIGNvbnN0
CiB7Ci0gICAgc3dpdGNoIChtRmVhdHVyZUxldmVsKQorICAgIHN3aXRjaCAobVJlbmRlcmVyMTFE
ZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkKICAgICB7CiAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzA6IHJldHVybiAiIjsKICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTog
cmV0dXJuICIiOwpAQCAtMjQxNiw2ICsyODgzLDE3IEBACiAgICAgfQogfQogCitjb25zdCBXb3Jr
YXJvdW5kc0QzRCAmUmVuZGVyZXJEM0Q6OmdldFdvcmthcm91bmRzKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1Xb3JrYXJvdW5kc0luaXRpYWxpemVkKQorICAgIHsKKyAgICAgICAgbVdvcmthcm91bmRz
ICAgICAgICAgICAgPSBnZW5lcmF0ZVdvcmthcm91bmRzKCk7CisgICAgICAgIG1Xb3JrYXJvdW5k
c0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbVdvcmthcm91bmRzOwor
fQorCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlMkQoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwgR0xlbnVt
IGRlc3RGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50IGxldmVs
KQogewpAQCAtMjQzMCw3ICsyOTA4LDcgQEAKICAgICB9CiAgICAgQVNTRVJUKHNvdXJjZVJlbmRl
clRhcmdldCk7CiAKLSAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSA9IHNvdXJj
ZVJlbmRlclRhcmdldC0+Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCk7CisgICAgSUQzRDExU2hhZGVy
UmVzb3VyY2VWaWV3ICpzb3VyY2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEJsaXRTaGFkZXJS
ZXNvdXJjZVZpZXcoKTsKICAgICBBU1NFUlQoc291cmNlKTsKIAogICAgIFRleHR1cmVTdG9yYWdl
MTFfMkQgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFfMkQ+KHN0b3JhZ2UpOwpA
QCAtMjQ1MSwxMiArMjkyOSwyMCBAQAogICAgIGdsOjpCb3ggc291cmNlQXJlYShzb3VyY2VSZWN0
LngsIHNvdXJjZVJlY3QueSwgMCwgc291cmNlUmVjdC53aWR0aCwgc291cmNlUmVjdC5oZWlnaHQs
IDEpOwogICAgIGdsOjpFeHRlbnRzIHNvdXJjZVNpemUoc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRX
aWR0aCgpLCBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKIAorICAgIGNvbnN0
IGJvb2wgaW52ZXJ0U291cmNlID0gVXNlUHJlc2VudFBhdGhGYXN0KHRoaXMsIGNvbG9yYnVmZmVy
KTsKKyAgICBpZiAoaW52ZXJ0U291cmNlKQorICAgIHsKKyAgICAgICAgc291cmNlQXJlYS55ICAg
ICAgPSBzb3VyY2VTaXplLmhlaWdodCAtIHNvdXJjZVJlY3QueTsKKyAgICAgICAgc291cmNlQXJl
YS5oZWlnaHQgPSAtc291cmNlQXJlYS5oZWlnaHQ7CisgICAgfQorCiAgICAgZ2w6OkJveCBkZXN0
QXJlYShkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwgMCwgc291cmNlUmVjdC53aWR0aCwgc291
cmNlUmVjdC5oZWlnaHQsIDEpOwogICAgIGdsOjpFeHRlbnRzIGRlc3RTaXplKGRlc3RSZW5kZXJU
YXJnZXQtPmdldFdpZHRoKCksIGRlc3RSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKIAog
ICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QKICAgICAvLyBjb3B5Ci0gICAgbUJs
aXQtPmNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdCwgZGVz
dEFyZWEsIGRlc3RTaXplLCBOVUxMLCBkZXN0Rm9ybWF0LCBHTF9ORUFSRVNUKTsKKyAgICBlcnJv
ciA9IG1CbGl0LT5jb3B5VGV4dHVyZShzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRl
c3QsIGRlc3RBcmVhLCBkZXN0U2l6ZSwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXN0Rm9ybWF0LCBHTF9ORUFSRVNULCBmYWxzZSk7CiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTI0ODEsNyArMjk2Nyw3IEBA
CiAgICAgfQogICAgIEFTU0VSVChzb3VyY2VSZW5kZXJUYXJnZXQpOwogCi0gICAgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UgPSBzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFNoYWRlclJl
c291cmNlVmlldygpOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlID0gc291
cmNlUmVuZGVyVGFyZ2V0LT5nZXRCbGl0U2hhZGVyUmVzb3VyY2VWaWV3KCk7CiAgICAgQVNTRVJU
KHNvdXJjZSk7CiAKICAgICBUZXh0dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2UxMSA9IEdldEFz
PFRleHR1cmVTdG9yYWdlMTFfQ3ViZT4oc3RvcmFnZSk7CkBAIC0yNTAyLDEyICsyOTg4LDIwIEBA
CiAgICAgZ2w6OkJveCBzb3VyY2VBcmVhKHNvdXJjZVJlY3QueCwgc291cmNlUmVjdC55LCAwLCBz
b3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdodCwgMSk7CiAgICAgZ2w6OkV4dGVudHMg
c291cmNlU2l6ZShzb3VyY2VSZW5kZXJUYXJnZXQtPmdldFdpZHRoKCksIHNvdXJjZVJlbmRlclRh
cmdldC0+Z2V0SGVpZ2h0KCksIDEpOwogCisgICAgY29uc3QgYm9vbCBpbnZlcnRTb3VyY2UgPSBV
c2VQcmVzZW50UGF0aEZhc3QodGhpcywgY29sb3JidWZmZXIpOworICAgIGlmIChpbnZlcnRTb3Vy
Y2UpCisgICAgeworICAgICAgICBzb3VyY2VBcmVhLnkgICAgICA9IHNvdXJjZVNpemUuaGVpZ2h0
IC0gc291cmNlUmVjdC55OworICAgICAgICBzb3VyY2VBcmVhLmhlaWdodCA9IC1zb3VyY2VBcmVh
LmhlaWdodDsKKyAgICB9CisKICAgICBnbDo6Qm94IGRlc3RBcmVhKGRlc3RPZmZzZXQueCwgZGVz
dE9mZnNldC55LCAwLCBzb3VyY2VSZWN0LndpZHRoLCBzb3VyY2VSZWN0LmhlaWdodCwgMSk7CiAg
ICAgZ2w6OkV4dGVudHMgZGVzdFNpemUoZGVzdFJlbmRlclRhcmdldC0+Z2V0V2lkdGgoKSwgZGVz
dFJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCksIDEpOwogCiAgICAgLy8gVXNlIG5lYXJlc3QgZmls
dGVyaW5nIGJlY2F1c2Ugc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUgc2l6ZSBm
b3IgdGhlIGRpcmVjdAogICAgIC8vIGNvcHkKLSAgICBlcnJvciA9IG1CbGl0LT5jb3B5VGV4dHVy
ZShzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RBcmVhLCBkZXN0U2l6
ZSwgTlVMTCwgZGVzdEZvcm1hdCwgR0xfTkVBUkVTVCk7CisgICAgZXJyb3IgPSBtQmxpdC0+Y29w
eVRleHR1cmUoc291cmNlLCBzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBkZXN0LCBkZXN0QXJlYSwg
ZGVzdFNpemUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEZvcm1h
dCwgR0xfTkVBUkVTVCwgZmFsc2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewog
ICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0yNTMyLDcgKzMwMjYsNyBAQAogICAgIH0KICAgICBB
U1NFUlQoc291cmNlUmVuZGVyVGFyZ2V0KTsKIAotICAgIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqc291cmNlID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsK
KyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSA9IHNvdXJjZVJlbmRlclRhcmdl
dC0+Z2V0QmxpdFNoYWRlclJlc291cmNlVmlldygpOwogICAgIEFTU0VSVChzb3VyY2UpOwogCiAg
ICAgVGV4dHVyZVN0b3JhZ2UxMV8zRCAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2Ux
MV8zRD4oc3RvcmFnZSk7CkBAIC0yNTU4LDcgKzMwNTIsOCBAQAogCiAgICAgLy8gVXNlIG5lYXJl
c3QgZmlsdGVyaW5nIGJlY2F1c2Ugc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgdGhlIHNhbWUg
c2l6ZSBmb3IgdGhlIGRpcmVjdAogICAgIC8vIGNvcHkKLSAgICBlcnJvciA9IG1CbGl0LT5jb3B5
VGV4dHVyZShzb3VyY2UsIHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3QsIGRlc3RBcmVhLCBk
ZXN0U2l6ZSwgTlVMTCwgZGVzdEZvcm1hdCwgR0xfTkVBUkVTVCk7CisgICAgZXJyb3IgPSBtQmxp
dC0+Y29weVRleHR1cmUoc291cmNlLCBzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBkZXN0LCBkZXN0
QXJlYSwgZGVzdFNpemUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dEZvcm1hdCwgR0xfTkVBUkVTVCwgZmFsc2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0yNTgzLDcgKzMwNzgsNyBAQAogICAgIH0K
ICAgICBBU1NFUlQoc291cmNlUmVuZGVyVGFyZ2V0KTsKIAotICAgIElEM0QxMVNoYWRlclJlc291
cmNlVmlldyAqc291cmNlID0gc291cmNlUmVuZGVyVGFyZ2V0LT5nZXRTaGFkZXJSZXNvdXJjZVZp
ZXcoKTsKKyAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSA9IHNvdXJjZVJlbmRl
clRhcmdldC0+Z2V0QmxpdFNoYWRlclJlc291cmNlVmlldygpOwogICAgIEFTU0VSVChzb3VyY2Up
OwogCiAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5ICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0
dXJlU3RvcmFnZTExXzJEQXJyYXk+KHN0b3JhZ2UpOwpAQCAtMjYwOSw3ICszMTA0LDggQEAKIAog
ICAgIC8vIFVzZSBuZWFyZXN0IGZpbHRlcmluZyBiZWNhdXNlIHNvdXJjZSBhbmQgZGVzdGluYXRp
b24gYXJlIHRoZSBzYW1lIHNpemUgZm9yIHRoZSBkaXJlY3QKICAgICAvLyBjb3B5Ci0gICAgZXJy
b3IgPSBtQmxpdC0+Y29weVRleHR1cmUoc291cmNlLCBzb3VyY2VBcmVhLCBzb3VyY2VTaXplLCBk
ZXN0LCBkZXN0QXJlYSwgZGVzdFNpemUsIE5VTEwsIGRlc3RGb3JtYXQsIEdMX05FQVJFU1QpOwor
ICAgIGVycm9yID0gbUJsaXQtPmNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlQXJlYSwgc291cmNl
U2l6ZSwgZGVzdCwgZGVzdEFyZWEsIGRlc3RTaXplLCBOVUxMLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3RGb3JtYXQsIEdMX05FQVJFU1QsIGZhbHNlKTsKICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMjYyMCwzMSAr
MzExNiw5IEBACiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLXZvaWQg
UmVuZGVyZXIxMTo6dW5hcHBseVJlbmRlclRhcmdldHMoKQotewotICAgIHNldE9uZVRpbWVSZW5k
ZXJUYXJnZXQoTlVMTCk7Ci19Ci0KLS8vIFdoZW4gZmluaXNoZWQgd2l0aCB0aGlzIHJlbmRlcnRh
cmdldCwgbWFya0FsbFN0YXRlRGlydHkgbXVzdCBiZSBjYWxsZWQuCi12b2lkIFJlbmRlcmVyMTE6
OnNldE9uZVRpbWVSZW5kZXJUYXJnZXQoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcmVuZGVyVGFy
Z2V0VmlldykKLXsKLSAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHZBcnJheVtnbDo6SU1Q
TEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSU10gPSB7TlVMTH07Ci0KLSAgICBydHZBcnJheVsw
XSA9IHJlbmRlclRhcmdldFZpZXc7Ci0KLSAgICBtRGV2aWNlQ29udGV4dC0+T01TZXRSZW5kZXJU
YXJnZXRzKGdldFJlbmRlcmVyQ2FwcygpLm1heERyYXdCdWZmZXJzLCBydHZBcnJheSwgTlVMTCk7
Ci0KLSAgICAvLyBEbyBub3QgcHJlc2VydmUgdGhlIHNlcmlhbCBmb3IgdGhpcyBvbmUtdGltZS11
c2UgcmVuZGVyIHRhcmdldAotICAgIGZvciAoc2l6ZV90IHJ0SW5kZXggPSAwOyBydEluZGV4IDwg
QXJyYXlTaXplKG1BcHBsaWVkUlRWcyk7IHJ0SW5kZXgrKykKLSAgICB7Ci0gICAgICAgIG1BcHBs
aWVkUlRWc1tydEluZGV4XSA9IERpcnR5UG9pbnRlcjsKLSAgICB9Ci0gICAgbUFwcGxpZWREU1Yg
PSBEaXJ0eVBvaW50ZXI7Ci19Ci0KIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJU
YXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBs
ZXMsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKQogewotICAgIGNvbnN0IGQzZDExOjpUZXh0dXJl
Rm9ybWF0ICZmb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGZvcm1hdCwg
bUZlYXR1cmVMZXZlbCk7CisgICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdElu
Zm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oZm9ybWF0LCBtUmVuZGVyZXIxMURldmlj
ZUNhcHMpOwogCiAgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGdldFJl
bmRlcmVyVGV4dHVyZUNhcHMoKS5nZXQoZm9ybWF0KTsKICAgICBHTHVpbnQgc3VwcG9ydGVkU2Ft
cGxlcyA9IHRleHR1cmVDYXBzLmdldE5lYXJlc3RTYW1wbGVzKHNhbXBsZXMpOwpAQCAtMjY1Nyw3
ICszMTMxLDcgQEAKICAgICAgICAgZGVzYy5IZWlnaHQgPSBoZWlnaHQ7CiAgICAgICAgIGRlc2Mu
TWlwTGV2ZWxzID0gMTsKICAgICAgICAgZGVzYy5BcnJheVNpemUgPSAxOwotICAgICAgICBkZXNj
LkZvcm1hdCA9IGZvcm1hdEluZm8udGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCAgICAg
ICAgICAgICA9IGZvcm1hdEluZm8uZm9ybWF0U2V0LT50ZXhGb3JtYXQ7CiAgICAgICAgIGRlc2Mu
U2FtcGxlRGVzYy5Db3VudCA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDApID8gMSA6IHN1cHBvcnRl
ZFNhbXBsZXM7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKICAgICAgICAg
ZGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CkBAIC0yNjY4LDE0ICszMTQyLDE1IEBA
CiAgICAgICAgIC8vIHdlJ2xsIGZsYWcgaXQgdG8gYWxsb3cgYmluZGluZyB0aGF0IHdheS4gU2hh
ZGVyIHJlc291cmNlIHZpZXdzIGFyZSBhIGxpdHRsZQogICAgICAgICAvLyBtb3JlIGNvbXBsaWNh
dGVkLgogICAgICAgICBib29sIGJpbmRSVFYgPSBmYWxzZSwgYmluZERTViA9IGZhbHNlLCBiaW5k
U1JWID0gZmFsc2U7Ci0gICAgICAgIGJpbmRSVFYgPSAoZm9ybWF0SW5mby5ydHZGb3JtYXQgIT0g
RFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgICAgIGJpbmREU1YgPSAoZm9ybWF0SW5mby5kc3ZG
b3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgICAgIGlmIChmb3JtYXRJbmZvLnNy
dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgICAgICBiaW5kUlRWID0gKGZvcm1h
dEluZm8uZm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CisgICAg
ICAgIGJpbmREU1YgPSAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPmRzdkZvcm1hdCAhPSBEWEdJX0ZP
Uk1BVF9VTktOT1dOKTsKKyAgICAgICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5zcnZGb3Jt
YXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICAgICAgewogICAgICAgICAgICAgLy8gTXVs
dGlzYW1wbGUgdGFyZ2V0cyBmbGFnZ2VkIGZvciBiaW5kaW5nIGFzIGRlcHRoIHN0ZW5jaWwgY2Fu
bm90IGFsc28gYmUKICAgICAgICAgICAgIC8vIGZsYWdnZWQgZm9yIGJpbmRpbmcgYXMgU1JWLCBz
byBtYWtlIGNlcnRhaW4gbm90IHRvIGFkZCB0aGUgU1JWIGZsYWcgZm9yCiAgICAgICAgICAgICAv
LyB0aGVzZSB0YXJnZXRzLgotICAgICAgICAgICAgYmluZFNSViA9ICEoZm9ybWF0SW5mby5kc3ZG
b3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTiAmJiBkZXNjLlNhbXBsZURlc2MuQ291bnQgPiAx
KTsKKyAgICAgICAgICAgIGJpbmRTUlYgPSAhKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3Jt
YXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgZGVz
Yy5TYW1wbGVEZXNjLkNvdW50ID4gMSk7CiAgICAgICAgIH0KIAogICAgICAgICBkZXNjLkJpbmRG
bGFncyA9IChiaW5kUlRWID8gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUICAgOiAwKSB8CkBAIC0y
NjkzLDExICszMTY4LDEyIEBACiAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJnZXQgdGV4dHVyZSwgcmVzdWx0
OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKnNydiA9IE5VTEw7CisgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
c3J2ICAgICA9IG51bGxwdHI7CisgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxp
dFNSViA9IG51bGxwdHI7CiAgICAgICAgIGlmIChiaW5kU1JWKQogICAgICAgICB7CiAgICAgICAg
ICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7Ci0gICAgICAgICAg
ICBzcnZEZXNjLkZvcm1hdCA9IGZvcm1hdEluZm8uc3J2Rm9ybWF0OworICAgICAgICAgICAgc3J2
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgID0gZm9ybWF0SW5mby5mb3JtYXRTZXQtPnNy
dkZvcm1hdDsKICAgICAgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRT
YW1wbGVzID09IDApID8gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9TUlZf
RElNRU5TSU9OX1RFWFRVUkUyRE1TOwogICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTW9z
dERldGFpbGVkTWlwID0gMDsKICAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJELk1pcExldmVs
cyA9IDE7CkBAIC0yNzA5LDEyICszMTg1LDQwIEBACiAgICAgICAgICAgICAgICAgU2FmZVJlbGVh
c2UodGV4dHVyZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSByZW5kZXIgdGFyZ2V0IHNoYWRlciByZXNvdXJjZSB2
aWV3LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0U2V0LT5ibGl0U1JWRm9ybWF0ICE9IGZvcm1hdEluZm8u
Zm9ybWF0U2V0LT5zcnZGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRDNE
MTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBibGl0U1JWRGVzYzsKKyAgICAgICAgICAgICAg
ICBibGl0U1JWRGVzYy5Gb3JtYXQgICAgICAgID0gZm9ybWF0SW5mby5mb3JtYXRTZXQtPmJsaXRT
UlZGb3JtYXQ7CisgICAgICAgICAgICAgICAgYmxpdFNSVkRlc2MuVmlld0RpbWVuc2lvbiA9IChz
dXBwb3J0ZWRTYW1wbGVzID09IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA/IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJECisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEQzRDExX1NSVl9ESU1FTlNJ
T05fVEVYVFVSRTJETVM7CisgICAgICAgICAgICAgICAgYmxpdFNSVkRlc2MuVGV4dHVyZTJELk1v
c3REZXRhaWxlZE1pcCA9IDA7CisgICAgICAgICAgICAgICAgYmxpdFNSVkRlc2MuVGV4dHVyZTJE
Lk1pcExldmVscyAgICAgICA9IDE7CisKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNl
LT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcodGV4dHVyZSwgJmJsaXRTUlZEZXNjLCAmYmxpdFNS
Vik7CisgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsK
KyAgICAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UodGV4dHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgIFNhZmVSZWxlYXNlKHNydik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIGNyZWF0ZSByZW5kZXIgdGFyZ2V0IHNoYWRlciByZXNvdXJjZSB2aWV3
IGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsaXRzLCByZXN1
bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBibGl0U1JWID0gc3J2OworICAgICAgICAgICAg
ICAgIHNydi0+QWRkUmVmKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoYmluZERTVikKICAgICAgICAgewogICAgICAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9W
SUVXX0RFU0MgZHN2RGVzYzsKLSAgICAgICAgICAgIGRzdkRlc2MuRm9ybWF0ID0gZm9ybWF0SW5m
by5kc3ZGb3JtYXQ7CisgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZv
cm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CiAgICAgICAgICAgICBkc3ZEZXNjLlZpZXdE
aW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQzRDExX0RTVl9ESU1FTlNJT05f
VEVYVFVSRTJEIDogRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzsKICAgICAgICAgICAg
IGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gMDsKICAgICAgICAgICAgIGRzdkRlc2MuRmxh
Z3MgPSAwOwpAQCAtMjcyNiwxNyArMzIzMCwyMCBAQAogICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UodGV4
dHVyZSk7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKKyAgICAgICAgICAgICAg
ICBTYWZlUmVsZWFzZShibGl0U1JWKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJnZXQgZGVwdGgg
c3RlbmNpbCB2aWV3LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgKm91dFJUID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShkc3YsIHRleHR1
cmUsIHNydiwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxLCBzdXBwb3J0ZWRTYW1wbGVzKTsKKyAg
ICAgICAgICAgICpvdXRSVCA9CisgICAgICAgICAgICAgICAgbmV3IFRleHR1cmVSZW5kZXJUYXJn
ZXQxMShkc3YsIHRleHR1cmUsIHNydiwgZm9ybWF0LCBmb3JtYXRJbmZvLmZvcm1hdFNldC0+Zm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhl
aWdodCwgMSwgc3VwcG9ydGVkU2FtcGxlcyk7CiAKICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGRz
dik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYmluZFJUVikKICAgICAgICAgewogICAg
ICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAg
ICAgIHJ0dkRlc2MuRm9ybWF0ID0gZm9ybWF0SW5mby5ydHZGb3JtYXQ7CisgICAgICAgICAgICBy
dHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZvcm1hdEluZm8uZm9ybWF0U2V0LT5ydHZGb3Jt
YXQ7CiAgICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxl
cyA9PSAwKSA/IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEIDogRDNEMTFfUlRWX0RJTUVO
U0lPTl9URVhUVVJFMkRNUzsKICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNl
ID0gMDsKIApAQCAtMjc0Nyw2ICszMjU0LDcgQEAKICAgICAgICAgICAgICAgICBBU1NFUlQocmVz
dWx0ID09IEVfT1VUT0ZNRU1PUlkpOwogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1
cmUpOwogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydik7CisgICAgICAgICAgICAgICAg
U2FmZVJlbGVhc2UoYmxpdFNSVik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSByZW5kZXIgdGFyZ2V0IHJlbmRlciB0
YXJnZXQgdmlldywgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAKQEAg
LTI3NTYsNyArMzI2NCw5IEBACiAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkNsZWFy
UmVuZGVyVGFyZ2V0VmlldyhydHYsIGNsZWFyVmFsdWVzKTsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgKm91dFJUID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShydHYsIHRleHR1cmUs
IHNydiwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxLCBzdXBwb3J0ZWRTYW1wbGVzKTsKKyAgICAg
ICAgICAgICpvdXRSVCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEocnR2LCB0ZXh0dXJlLCBz
cnYsIGJsaXRTUlYsIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0SW5mby5mb3JtYXRTZXQtPmZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9y
dGVkU2FtcGxlcyk7CiAKICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7CiAgICAgICAgIH0K
QEAgLTI3NjcsMTggKzMyNzcsMzggQEAKIAogICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsK
ICAgICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKKyAgICAgICAgU2FmZVJlbGVhc2UoYmxpdFNSVik7
CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgICpvdXRSVCA9IG5ldyBUZXh0dXJlUmVu
ZGVyVGFyZ2V0MTEocmVpbnRlcnByZXRfY2FzdDxJRDNEMTFSZW5kZXJUYXJnZXRWaWV3Kj4oTlVM
TCksIE5VTEwsIE5VTEwsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwgc3VwcG9ydGVkU2FtcGxl
cyk7CisgICAgICAgICpvdXRSVCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoc3RhdGljX2Nh
c3Q8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqPihudWxscHRyKSwgbnVsbHB0ciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxscHRyLCBmb3Jt
YXQsIGQzZDExOjpBTkdMRV9GT1JNQVRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCAxLCBzdXBwb3J0ZWRTYW1wbGVzKTsKICAg
ICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotRnJhbWVidWZm
ZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyOjpEYXRhICZkYXRhKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNyZWF0ZVJlbmRl
clRhcmdldENvcHkoUmVuZGVyVGFyZ2V0RDNEICpzb3VyY2UsIFJlbmRlclRhcmdldEQzRCAqKm91
dFJUKQogewotICAgIHJldHVybiBjcmVhdGVGcmFtZWJ1ZmZlcihkYXRhKTsKKyAgICBBU1NFUlQo
c291cmNlICE9IG51bGxwdHIpOworCisgICAgUmVuZGVyVGFyZ2V0RDNEICpuZXdSVCA9IG51bGxw
dHI7CisgICAgZ2w6OkVycm9yIGVycm9yID0gY3JlYXRlUmVuZGVyVGFyZ2V0KHNvdXJjZS0+Z2V0
V2lkdGgoKSwgc291cmNlLT5nZXRIZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgpLCBzb3VyY2UtPmdldFNh
bXBsZXMoKSwgJm5ld1JUKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDExICpzb3VyY2UxMSA9
IEdldEFzPFJlbmRlclRhcmdldDExPihzb3VyY2UpOworICAgIFJlbmRlclRhcmdldDExICpkZXN0
MTEgICA9IEdldEFzPFJlbmRlclRhcmdldDExPihuZXdSVCk7CisKKyAgICBtRGV2aWNlQ29udGV4
dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGRlc3QxMS0+Z2V0VGV4dHVyZSgpLCBkZXN0MTEtPmdl
dFN1YnJlc291cmNlSW5kZXgoKSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIHNvdXJjZTExLT5nZXRUZXh0dXJlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgp
LCBudWxscHRyKTsKKyAgICAqb3V0UlQgPSBuZXdSVDsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKIH0KIAogRnJhbWVidWZmZXJJbXBsICpSZW5kZXJlcjExOjpjcmVhdGVGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpCkBAIC0yNzg2LDI1ICsz
MzE2LDIzIEBACiAgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlcjExKGRhdGEsIHRoaXMpOwogfQog
Ci1Db21waWxlckltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZUNvbXBpbGVyKGNvbnN0IGdsOjpEYXRh
ICZkYXRhKQorU2hhZGVySW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlU2hhZGVyKGNvbnN0IGdsOjpT
aGFkZXI6OkRhdGEgJmRhdGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21waWxlckQzRChkYXRhLCBT
SF9ITFNMMTFfT1VUUFVUKTsKKyAgICByZXR1cm4gbmV3IFNoYWRlckQzRChkYXRhKTsKIH0KIAot
U2hhZGVySW1wbCAqUmVuZGVyZXIxMTo6Y3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKQorUHJvZ3Jh
bUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW06OkRhdGEg
JmRhdGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBTaGFkZXJEM0QodHlwZSk7CisgICAgcmV0dXJuIG5l
dyBQcm9ncmFtRDNEKGRhdGEsIHRoaXMpOwogfQogCi1Qcm9ncmFtSW1wbCAqUmVuZGVyZXIxMTo6
Y3JlYXRlUHJvZ3JhbSgpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6bG9hZEV4ZWN1dGFibGUoY29u
c3Qgdm9pZCAqZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFk
ZXJUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoq
b3V0RXhlY3V0YWJsZSkKIHsKLSAgICByZXR1cm4gbmV3IFByb2dyYW1EM0QodGhpcyk7Ci19Ci0K
LWdsOjpFcnJvciBSZW5kZXJlcjExOjpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlv
biwgc2l6ZV90IGxlbmd0aCwgU2hhZGVyVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5aW5nPiAmdHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsIFNoYWRlckV4ZWN1dGFibGVEM0QgKipv
dXRFeGVjdXRhYmxlKQotewogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CiAgICAgICBjYXNlIFNI
QURFUl9WRVJURVg6CkBAIC0yODE5LDI5ICszMzQ3LDI4IEBACiAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXgg
c2hhZGVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Muc2l6ZSgpID4gMCkKKyAgICAgICAg
ICAgIGlmICghc3RyZWFtT3V0VmFyeWluZ3MuZW1wdHkoKSkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxEM0QxMV9TT19ERUNMQVJBVElPTl9FTlRSWT4gc29EZWNs
YXJhdGlvbjsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3Muc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgc29EZWNsYXJh
dGlvbi5yZXNlcnZlKHN0cmVhbU91dFZhcnlpbmdzLnNpemUoKSk7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8gJnN0cmVhbU91dFZhcnlpbmcgOiBzdHJlYW1PdXRWYXJ5aW5ncykK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpMaW5rZWRW
YXJ5aW5nICZ2YXJ5aW5nID0gdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nc1tpXTsKLSAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRyYW5zcG9zZWRUeXBlID0gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5
cGUodmFyeWluZy50eXBlKTsKLQotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IHZhcnlpbmcuc2VtYW50aWNJbmRleENvdW50OyBqKyspCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NPX0RFQ0xBUkFUSU9OX0VOVFJZ
IGVudHJ5ID0geyAwIH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5TdHJlYW0gPSAw
OwotICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuU2VtYW50aWNOYW1lID0gdmFyeWluZy5z
ZW1hbnRpY05hbWUuY19zdHIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LlNlbWFu
dGljSW5kZXggPSB2YXJ5aW5nLnNlbWFudGljSW5kZXggKyBqOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZW50cnkuU3RhcnRDb21wb25lbnQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZW50cnkuQ29tcG9uZW50Q291bnQgPSBzdGF0aWNfY2FzdDxCWVRFPihnbDo6VmFyaWFibGVDb2x1
bW5Db3VudCh0cmFuc3Bvc2VkVHlwZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgZW50cnku
T3V0cHV0U2xvdCA9IHN0YXRpY19jYXN0PEJZVEU+KChzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzID8g
aSA6IDApKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvRGVjbGFyYXRpb24ucHVzaF9iYWNr
KGVudHJ5KTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBEM0Qx
MV9TT19ERUNMQVJBVElPTl9FTlRSWSBlbnRyeSA9IHswfTsKKyAgICAgICAgICAgICAgICAgICAg
ZW50cnkuU3RyZWFtICAgICAgICAgICAgICAgICAgICAgPSAwOworICAgICAgICAgICAgICAgICAg
ICBlbnRyeS5TZW1hbnRpY05hbWUgICAgICAgICAgICAgICA9IHN0cmVhbU91dFZhcnlpbmcuc2Vt
YW50aWNOYW1lLmNfc3RyKCk7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LlNlbWFudGljSW5k
ZXggICAgICAgICAgICAgID0gc3RyZWFtT3V0VmFyeWluZy5zZW1hbnRpY0luZGV4OworICAgICAg
ICAgICAgICAgICAgICBlbnRyeS5TdGFydENvbXBvbmVudCAgICAgICAgICAgICA9IDA7CisgICAg
ICAgICAgICAgICAgICAgIGVudHJ5LkNvbXBvbmVudENvdW50ICAgICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8QllURT4oc3RyZWFtT3V0VmFyeWluZy5jb21wb25lbnRDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGVudHJ5Lk91dHB1dFNsb3QgPSBzdGF0aWNfY2FzdDxCWVRFPigKKyAgICAgICAg
ICAgICAgICAgICAgICAgIChzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzID8gc3RyZWFtT3V0VmFyeWlu
Zy5vdXRwdXRTbG90IDogMCkpOworICAgICAgICAgICAgICAgICAgICBzb0RlY2xhcmF0aW9uLnB1
c2hfYmFjayhlbnRyeSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcmVz
dWx0ID0gbURldmljZS0+Q3JlYXRlR2VvbWV0cnlTaGFkZXJXaXRoU3RyZWFtT3V0cHV0KGZ1bmN0
aW9uLCBsZW5ndGgsIHNvRGVjbGFyYXRpb24uZGF0YSgpLCBzb0RlY2xhcmF0aW9uLnNpemUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwgMCwgMCwgTlVMTCwgJnN0cmVhbU91dFNoYWRlcik7CisgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlR2VvbWV0cnlTaGFkZXJXaXRoU3Ry
ZWFtT3V0cHV0KAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihsZW5ndGgpLCBzb0RlY2xhcmF0aW9uLmRhdGEoKSwKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihzb0RlY2xhcmF0aW9uLnNpemUoKSksIE5V
TEwsIDAsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICZzdHJlYW1PdXRTaGFkZXIpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgICAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgICAgIHsKQEAgLTI4ODgsOSArMzQx
NSwxMiBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJy
b3IgUmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlckhMU0wsIFNoYWRlclR5cGUgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpM
aW5rZWRWYXJ5aW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywg
Y29uc3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMsCitnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJITFNMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZWRPdXRwdXRC
dWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1YWJs
ZSkKIHsKICAgICBjb25zdCBjaGFyICpwcm9maWxlVHlwZSA9IE5VTEw7CkBAIC0yOTMzLDYgKzM0
NjMsMTUgQEAKICAgICBjb25maWdzLnB1c2hfYmFjayhDb21waWxlQ29uZmlnKGZsYWdzIHwgRDNE
Q09NUElMRV9TS0lQX1ZBTElEQVRJT04sICAgInNraXAgdmFsaWRhdGlvbiIgICkpOwogICAgIGNv
bmZpZ3MucHVzaF9iYWNrKENvbXBpbGVDb25maWcoZmxhZ3MgfCBEM0RDT01QSUxFX1NLSVBfT1BU
SU1JWkFUSU9OLCAic2tpcCBvcHRpbWl6YXRpb24iKSk7CiAKKyAgICBpZiAoZ2V0TWFqb3JTaGFk
ZXJNb2RlbCgpID09IDQgJiYgZ2V0U2hhZGVyTW9kZWxTdWZmaXgoKSAhPSAiIikKKyAgICB7Cisg
ICAgICAgIC8vIFNvbWUgc2hhZGVycyBtaWdodCBjYXVzZSBhICJibG9iIGNvbnRlbnQgbWlzbWF0
Y2ggYmV0d2VlbiBsZXZlbDkgYW5kIGQzZDEwIHNoYWRlciIuCisgICAgICAgIC8vIGUuZy4gZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmxvb3BfbmVzdGVkX3N0cnVj
dF9hcnJheV8qLgorICAgICAgICAvLyBVc2luZyB0aGUgW3Vucm9sbF0gZGlyZWN0aXZlIHdvcmtz
IGFyb3VuZCB0aGlzLCBhcyBkb2VzIHRoaXMgRDNEQ29tcGlsZSBmbGFnLgorICAgICAgICBjb25m
aWdzLnB1c2hfYmFjaygKKyAgICAgICAgICAgIENvbXBpbGVDb25maWcoZmxhZ3MgfCBEM0RDT01Q
SUxFX0FWT0lEX0ZMT1dfQ09OVFJPTCwgImF2b2lkIGZsb3cgY29udHJvbCIpKTsKKyAgICB9CisK
ICAgICBEM0RfU0hBREVSX01BQ1JPIGxvb3BNYWNyb3NbXSA9IHsgeyJBTkdMRV9FTkFCTEVfTE9P
UF9GTEFUVEVOIiwgIjEifSwgezAsIDB9IH07CiAKICAgICBJRDNEQmxvYiAqYmluYXJ5ID0gTlVM
TDsKQEAgLTI5NTIsNyArMzQ5MSw3IEBACiAgICAgfQogCiAgICAgZXJyb3IgPSBsb2FkRXhlY3V0
YWJsZShiaW5hcnktPkdldEJ1ZmZlclBvaW50ZXIoKSwgYmluYXJ5LT5HZXRCdWZmZXJTaXplKCks
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzLCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzLCBvdXRFeGVjdHVhYmxlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cmVhbU91dFZhcnlpbmdzLCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJz
LCBvdXRFeGVjdHVhYmxlKTsKIAogICAgIFNhZmVSZWxlYXNlKGJpbmFyeSk7CiAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKQEAgLTI5ODUsMTIgKzM1MjQsMTQgQEAKIAogQnVmZmVySW1wbCAqUmVu
ZGVyZXIxMTo6Y3JlYXRlQnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbmV3IEJ1ZmZlcjExKHRoaXMp
OworICAgIEJ1ZmZlcjExICpidWZmZXIgPSBuZXcgQnVmZmVyMTEodGhpcyk7CisgICAgbUFsaXZl
QnVmZmVycy5pbnNlcnQoYnVmZmVyKTsKKyAgICByZXR1cm4gYnVmZmVyOwogfQogCi1WZXJ0ZXhB
cnJheUltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZVZlcnRleEFycmF5KCkKK1ZlcnRleEFycmF5SW1w
bCAqUmVuZGVyZXIxMTo6Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpE
YXRhICZkYXRhKQogewotICAgIHJldHVybiBuZXcgVmVydGV4QXJyYXkxMSh0aGlzKTsKKyAgICBy
ZXR1cm4gbmV3IFZlcnRleEFycmF5MTEoZGF0YSk7CiB9CiAKIFF1ZXJ5SW1wbCAqUmVuZGVyZXIx
MTo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpCkBAIC0zMDEzLDEzICszNTU0LDE3IEBACiAgICAg
cmV0dXJuIG5ldyBUcmFuc2Zvcm1GZWVkYmFja0QzRCgpOwogfQogCitTdHJlYW1JbXBsICpSZW5k
ZXJlcjExOjpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7
CisgICAgcmV0dXJuIG5ldyBTdHJlYW0xMSh0aGlzKTsKK30KKwogYm9vbCBSZW5kZXJlcjExOjpz
dXBwb3J0c0Zhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZ2V0UmVuZGVyZXJFeHRlbnNpb25zKCkucGl4ZWxCdWZmZXJPYmpl
Y3QpOwogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8g
PSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKLSAgICBjb25zdCBk
M2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNkMTFGb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVG
b3JtYXRJbmZvKGludGVybmFsRm9ybWF0LCBtRmVhdHVyZUxldmVsKTsKLSAgICBjb25zdCBkM2Qx
MTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8o
ZDNkMTFGb3JtYXRJbmZvLnRleEZvcm1hdCk7CisgICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3Jt
YXQgJmQzZDExRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5h
bEZvcm1hdCwgbVJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKIAogICAgIC8vIHNSR0IgZm9ybWF0cyBk
byBub3Qgd29yayB3aXRoIEQzRDExIGJ1ZmZlciBTUlZzCiAgICAgaWYgKGludGVybmFsRm9ybWF0
SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpCkBAIC0zMDI4LDcgKzM1NzMsNyBAQAogICAg
IH0KIAogICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IGRpcmVjdCBjb3BpZXMgdG8gbm9uLWNvbG9y
LXJlbmRlcmFibGUgZm9ybWF0cwotICAgIGlmIChkM2QxMUZvcm1hdEluZm8ucnR2Rm9ybWF0ID09
IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgaWYgKGQzZDExRm9ybWF0SW5mby5mb3JtYXRTZXQt
PnJ0dkZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9VTktOT1dOKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTMwNDAsNyArMzU4NSw3IEBACiAgICAgfQogCiAgICAgLy8gV2Ug
ZG9uJ3Qgc3VwcG9ydCBmb3JtYXRzIHdoaWNoIHdlIGNhbid0IHJlcHJlc2VudCB3aXRob3V0IGNv
bnZlcnNpb24KLSAgICBpZiAoZHhnaUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQgIT0gaW50ZXJu
YWxGb3JtYXQpCisgICAgaWYgKGQzZDExRm9ybWF0SW5mby5mb3JtYXRTZXQtPmdsSW50ZXJuYWxG
b3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQpAQCAtMzA2NCwxMCArMzYwOSwxMSBAQAogewogICAgIEltYWdlMTEgKmRlc3QxMSA9IEdl
dEFzPEltYWdlMTE+KGRlc3QpOwogICAgIEltYWdlMTEgKnNyYzExID0gR2V0QXM8SW1hZ2UxMT4o
c3JjKTsKLSAgICByZXR1cm4gSW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXAoZGVzdDExLCBzcmMxMSk7
CisgICAgcmV0dXJuIEltYWdlMTE6OmdlbmVyYXRlTWlwbWFwKGRlc3QxMSwgc3JjMTEsIG1SZW5k
ZXJlcjExRGV2aWNlQ2Fwcyk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmF0ZU1p
cG1hcHNVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgY29uc3QgZ2w6OlNhbXBsZXJT
dGF0ZSAmc2FtcGxlclN0YXRlKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmdlbmVyYXRlTWlwbWFw
c1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVT
dGF0ZSkKIHsKICAgICBUZXh0dXJlU3RvcmFnZTExICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJl
U3RvcmFnZTExPihzdG9yYWdlKTsKIApAQCAtMzA3NSw3ICszNjIxLDcgQEAKICAgICBBU1NFUlQo
c3RvcmFnZTExLT5zdXBwb3J0c05hdGl2ZU1pcG1hcEZ1bmN0aW9uKCkpOwogCiAgICAgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzcnY7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gc3RvcmFnZTEx
LT5nZXRTUlZMZXZlbHMoc2FtcGxlclN0YXRlLmJhc2VMZXZlbCwgc2FtcGxlclN0YXRlLm1heExl
dmVsLCAmc3J2KTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBzdG9yYWdlMTEtPmdldFNSVkxldmVs
cyh0ZXh0dXJlU3RhdGUuYmFzZUxldmVsLCB0ZXh0dXJlU3RhdGUubWF4TGV2ZWwsICZzcnYpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CkBA
IC0zMDkyLDYgKzM2MzgsMTEgQEAKICAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkQo
dGhpcywgc3dhcENoYWluMTEpOwogfQogCitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3Jl
YXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFnZUQzRCAqZWdsSW1hZ2UpCit7CisgICAg
cmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlKHRoaXMsIGVnbEltYWdlKTsKK30K
KwogVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoR0xl
bnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIGludCBsZXZlbHMsIGJvb2wgaGludExldmVsWmVyb09ubHkpCiB7CiAgICAg
cmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzJEKHRoaXMsIGludGVybmFsZm9ybWF0LCByZW5k
ZXJUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIGxldmVscywgaGludExldmVsWmVyb09ubHkpOwpAQCAt
MzEzMywyOCArMzY4NCw1NCBAQAogICAgIHJldHVybiByZW5kZXJidWZmZXI7CiB9CiAKLWdsOjpF
cnJvciBSZW5kZXJlcjExOjpyZWFkVGV4dHVyZURhdGEoSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJl
LCB1bnNpZ25lZCBpbnQgc3ViUmVzb3VyY2UsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsIEdM
ZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLCBHTHVpbnQgb3V0cHV0UGl0Y2gsIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFj
aywgdWludDhfdCAqcGl4ZWxzKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnJlYWRGcm9tQXR0YWNo
bWVudChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZzcmNBdHRhY2htZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG91dHB1dFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVsc091dCkKIHsKLSAgICBBU1NFUlQoYXJl
YS53aWR0aCA+PSAwKTsKLSAgICBBU1NFUlQoYXJlYS5oZWlnaHQgPj0gMCk7CisgICAgQVNTRVJU
KHNvdXJjZUFyZWEud2lkdGggPj0gMCk7CisgICAgQVNTRVJUKHNvdXJjZUFyZWEuaGVpZ2h0ID49
IDApOwogCi0gICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4dHVyZURlc2M7Ci0gICAgdGV4dHVy
ZS0+R2V0RGVzYygmdGV4dHVyZURlc2MpOworICAgIGNvbnN0IGJvb2wgaW52ZXJ0VGV4dHVyZSA9
IFVzZVByZXNlbnRQYXRoRmFzdCh0aGlzLCAmc3JjQXR0YWNobWVudCk7CiAKKyAgICBSZW5kZXJU
YXJnZXREM0QgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgZ2w6OkVycm9yIGVycm9yID0g
c3JjQXR0YWNobWVudC5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCk7CisgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAg
ICBSZW5kZXJUYXJnZXQxMSAqcnQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJn
ZXQpOworICAgIEFTU0VSVChydDExLT5nZXRUZXh0dXJlKCkpOworCisgICAgVGV4dHVyZUhlbHBl
cjExIHRleHR1cmVIZWxwZXIgPQorICAgICAgICBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZl
cmVuY2UocnQxMS0+Z2V0VGV4dHVyZSgpLCBydDExLT5nZXRBTkdMRUZvcm1hdCgpKTsKKyAgICB1
bnNpZ25lZCBpbnQgc291cmNlU3ViUmVzb3VyY2UgPSBydDExLT5nZXRTdWJyZXNvdXJjZUluZGV4
KCk7CisKKyAgICBjb25zdCBnbDo6RXh0ZW50cyAmdGV4U2l6ZSA9IHRleHR1cmVIZWxwZXIuZ2V0
RXh0ZW50cygpOworCisgICAgZ2w6OlJlY3RhbmdsZSBhY3R1YWxBcmVhID0gc291cmNlQXJlYTsK
KyAgICBpZiAoaW52ZXJ0VGV4dHVyZSkKKyAgICB7CisgICAgICAgIGFjdHVhbEFyZWEueSA9IHRl
eFNpemUuaGVpZ2h0IC0gYWN0dWFsQXJlYS55IC0gYWN0dWFsQXJlYS5oZWlnaHQ7CisgICAgfQor
CiAgICAgLy8gQ2xhbXAgcmVhZCByZWdpb24gdG8gdGhlIGRlZmluZWQgdGV4dHVyZSBib3VuZGFy
aWVzLCBwcmV2ZW50aW5nIG91dCBvZiBib3VuZHMgcmVhZHMKICAgICAvLyBhbmQgcmVhZHMgb2Yg
dW5pbml0aWFsaXplZCBkYXRhLgogICAgIGdsOjpSZWN0YW5nbGUgc2FmZUFyZWE7Ci0gICAgc2Fm
ZUFyZWEueCAgICAgID0gZ2w6OmNsYW1wKGFyZWEueCwgMCwgc3RhdGljX2Nhc3Q8aW50Pih0ZXh0
dXJlRGVzYy5XaWR0aCkpOwotICAgIHNhZmVBcmVhLnkgICAgICA9IGdsOjpjbGFtcChhcmVhLnks
IDAsIHN0YXRpY19jYXN0PGludD4odGV4dHVyZURlc2MuSGVpZ2h0KSk7Ci0gICAgc2FmZUFyZWEu
d2lkdGggID0gZ2w6OmNsYW1wKGFyZWEud2lkdGggKyBzdGQ6Om1pbihhcmVhLngsIDApLCAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRleHR1cmVE
ZXNjLldpZHRoKSAtIHNhZmVBcmVhLngpOwotICAgIHNhZmVBcmVhLmhlaWdodCA9IGdsOjpjbGFt
cChhcmVhLmhlaWdodCArIHN0ZDo6bWluKGFyZWEueSwgMCksIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4odGV4dHVyZURlc2MuSGVpZ2h0KSAtIHNh
ZmVBcmVhLnkpOworICAgIHNhZmVBcmVhLnggPSBnbDo6Y2xhbXAoYWN0dWFsQXJlYS54LCAwLCB0
ZXhTaXplLndpZHRoKTsKKyAgICBzYWZlQXJlYS55ID0gZ2w6OmNsYW1wKGFjdHVhbEFyZWEueSwg
MCwgdGV4U2l6ZS5oZWlnaHQpOworICAgIHNhZmVBcmVhLndpZHRoID0KKyAgICAgICAgZ2w6OmNs
YW1wKGFjdHVhbEFyZWEud2lkdGggKyBzdGQ6Om1pbihhY3R1YWxBcmVhLngsIDApLCAwLCB0ZXhT
aXplLndpZHRoIC0gc2FmZUFyZWEueCk7CisgICAgc2FmZUFyZWEuaGVpZ2h0ID0KKyAgICAgICAg
Z2w6OmNsYW1wKGFjdHVhbEFyZWEuaGVpZ2h0ICsgc3RkOjptaW4oYWN0dWFsQXJlYS55LCAwKSwg
MCwgdGV4U2l6ZS5oZWlnaHQgLSBzYWZlQXJlYS55KTsKIAogICAgIEFTU0VSVChzYWZlQXJlYS54
ID49IDAgJiYgc2FmZUFyZWEueSA+PSAwKTsKLSAgICBBU1NFUlQoc2FmZUFyZWEueCArIHNhZmVB
cmVhLndpZHRoICA8PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHR1cmVEZXNjLldpZHRoKSk7Ci0gICAg
QVNTRVJUKHNhZmVBcmVhLnkgKyBzYWZlQXJlYS5oZWlnaHQgPD0gc3RhdGljX2Nhc3Q8aW50Pih0
ZXh0dXJlRGVzYy5IZWlnaHQpKTsKKyAgICBBU1NFUlQoc2FmZUFyZWEueCArIHNhZmVBcmVhLndp
ZHRoIDw9IHRleFNpemUud2lkdGgpOworICAgIEFTU0VSVChzYWZlQXJlYS55ICsgc2FmZUFyZWEu
aGVpZ2h0IDw9IHRleFNpemUuaGVpZ2h0KTsKIAogICAgIGlmIChzYWZlQXJlYS53aWR0aCA9PSAw
IHx8IHNhZmVBcmVhLmhlaWdodCA9PSAwKQogICAgIHsKQEAgLTMxNjIsMzUgKzM3MzksMzAgQEAK
ICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiAgICAgfQogCi0gICAgRDNE
MTFfVEVYVFVSRTJEX0RFU0Mgc3RhZ2luZ0Rlc2M7Ci0gICAgc3RhZ2luZ0Rlc2MuV2lkdGggPSBz
YWZlQXJlYS53aWR0aDsKLSAgICBzdGFnaW5nRGVzYy5IZWlnaHQgPSBzYWZlQXJlYS5oZWlnaHQ7
Ci0gICAgc3RhZ2luZ0Rlc2MuTWlwTGV2ZWxzID0gMTsKLSAgICBzdGFnaW5nRGVzYy5BcnJheVNp
emUgPSAxOwotICAgIHN0YWdpbmdEZXNjLkZvcm1hdCA9IHRleHR1cmVEZXNjLkZvcm1hdDsKLSAg
ICBzdGFnaW5nRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKLSAgICBzdGFnaW5nRGVzYy5TYW1w
bGVEZXNjLlF1YWxpdHkgPSAwOwotICAgIHN0YWdpbmdEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0Vf
U1RBR0lORzsKLSAgICBzdGFnaW5nRGVzYy5CaW5kRmxhZ3MgPSAwOwotICAgIHN0YWdpbmdEZXNj
LkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEOwotICAgIHN0YWdpbmdEZXNj
Lk1pc2NGbGFncyA9IDA7Ci0KLSAgICBJRDNEMTFUZXh0dXJlMkQqIHN0YWdpbmdUZXggPSBOVUxM
OwotICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZzdGFnaW5n
RGVzYywgTlVMTCwgJnN0YWdpbmdUZXgpOwotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICBn
bDo6RXh0ZW50cyBzYWZlU2l6ZShzYWZlQXJlYS53aWR0aCwgc2FmZUFyZWEuaGVpZ2h0LCAxKTsK
KyAgICBhdXRvIGVycm9yT3JSZXN1bHQgPQorICAgICAgICBDcmVhdGVTdGFnaW5nVGV4dHVyZSh0
ZXh0dXJlSGVscGVyLmdldFRleHR1cmVUeXBlKCksIHRleHR1cmVIZWxwZXIuZ2V0Rm9ybWF0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVIZWxwZXIuZ2V0QU5HTEVGb3Jt
YXQoKSwgc2FmZVNpemUsIG1EZXZpY2UpOworICAgIGlmIChlcnJvck9yUmVzdWx0LmlzRXJyb3Io
KSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZh
aWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc3RhZ2luZyB0ZXh0dXJlIGZvciBSZWFkUGl4ZWxzLCBI
UkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBlcnJvck9yUmVzdWx0Lmdl
dEVycm9yKCk7CiAgICAgfQogCi0gICAgSUQzRDExVGV4dHVyZTJEKiBzcmNUZXggPSBOVUxMOwot
ICAgIGlmICh0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID4gMSkKKyAgICBUZXh0dXJlSGVs
cGVyMTEgc3RhZ2luZ0hlbHBlcihlcnJvck9yUmVzdWx0LmdldFJlc3VsdCgpKTsKKyAgICBUZXh0
dXJlSGVscGVyMTEgcmVzb2x2ZWRUZXh0dXJlSGVscGVyOworCisgICAgLy8gInNyY1RleHR1cmUi
IHVzdWFsbHkgcG9pbnRzIHRvIHRoZSBzb3VyY2UgdGV4dHVyZS4KKyAgICAvLyBGb3IgMkQgbXVs
dGlzYW1wbGVkIHRleHR1cmVzLCBpdCBwb2ludHMgdG8gdGhlIG11bHRpc2FtcGxlZCByZXNvbHZl
IHRleHR1cmUuCisgICAgY29uc3QgVGV4dHVyZUhlbHBlcjExICpzcmNUZXh0dXJlID0gJnRleHR1
cmVIZWxwZXI7CisKKyAgICBpZiAodGV4dHVyZUhlbHBlci5nZXRUZXh0dXJlVHlwZSgpID09IEdM
X1RFWFRVUkVfMkQgJiYgdGV4dHVyZUhlbHBlci5nZXRTYW1wbGVDb3VudCgpID4gMSkKICAgICB7
CiAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJlc29sdmVEZXNjOwotICAgICAgICByZXNv
bHZlRGVzYy5XaWR0aCA9IHRleHR1cmVEZXNjLldpZHRoOwotICAgICAgICByZXNvbHZlRGVzYy5I
ZWlnaHQgPSB0ZXh0dXJlRGVzYy5IZWlnaHQ7CisgICAgICAgIHJlc29sdmVEZXNjLldpZHRoICAg
ICAgICAgICAgICA9IHN0YXRpY19jYXN0PFVJTlQ+KHRleFNpemUud2lkdGgpOworICAgICAgICBy
ZXNvbHZlRGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxVSU5UPih0ZXhTaXpl
LmhlaWdodCk7CiAgICAgICAgIHJlc29sdmVEZXNjLk1pcExldmVscyA9IDE7CiAgICAgICAgIHJl
c29sdmVEZXNjLkFycmF5U2l6ZSA9IDE7Ci0gICAgICAgIHJlc29sdmVEZXNjLkZvcm1hdCA9IHRl
eHR1cmVEZXNjLkZvcm1hdDsKKyAgICAgICAgcmVzb2x2ZURlc2MuRm9ybWF0ICAgICAgICAgICAg
ID0gdGV4dHVyZUhlbHBlci5nZXRGb3JtYXQoKTsKICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxl
RGVzYy5Db3VudCA9IDE7CiAgICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9
IDA7CiAgICAgICAgIHJlc29sdmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAg
LTMxOTgsNDkgKzM3NzAsNzYgQEAKICAgICAgICAgcmVzb2x2ZURlc2MuQ1BVQWNjZXNzRmxhZ3Mg
PSAwOwogICAgICAgICByZXNvbHZlRGVzYy5NaXNjRmxhZ3MgPSAwOwogCi0gICAgICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmcmVzb2x2ZURlc2MsIE5VTEwsICZzcmNUZXgp
OworICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKnJlc29sdmVUZXgyRCA9IG51bGxwdHI7CisgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZyZXNvbHZlRGVz
YywgbnVsbHB0ciwgJnJlc29sdmVUZXgyRCk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICAgICAgewotICAgICAgICAgICAgU2FmZVJlbGVhc2Uoc3RhZ2luZ1RleCk7Ci0gICAgICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRl
IGludGVybmFsIHJlc29sdmUgdGV4dHVyZSBmb3IgUmVhZFBpeGVscywgSFJFU1VMVDogMHglWC4i
LCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVuZGVyZXIxMTo6cmVhZFRleHR1cmVE
YXRhIGZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgcmVzb2x2ZSAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXh0dXJlIGZvciBSZWFkUGl4ZWxzLCBIUkVTVUxUOiAweCVYLiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+UmVzb2x2ZVN1YnJlc291cmNlKHNyY1RleCwgMCwgdGV4dHVyZSwg
c3ViUmVzb3VyY2UsIHRleHR1cmVEZXNjLkZvcm1hdCk7Ci0gICAgICAgIHN1YlJlc291cmNlID0g
MDsKKyAgICAgICAgbURldmljZUNvbnRleHQtPlJlc29sdmVTdWJyZXNvdXJjZShyZXNvbHZlVGV4
MkQsIDAsIHRleHR1cmVIZWxwZXIuZ2V0VGV4dHVyZTJEKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlU3ViUmVzb3VyY2UsIHRleHR1cmVIZWxwZXIu
Z2V0Rm9ybWF0KCkpOworICAgICAgICByZXNvbHZlZFRleHR1cmVIZWxwZXIgPQorICAgICAgICAg
ICAgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKHJlc29sdmVUZXgyRCwgdGV4dHVy
ZUhlbHBlci5nZXRBTkdMRUZvcm1hdCgpKTsKKworICAgICAgICBzb3VyY2VTdWJSZXNvdXJjZSA9
IDA7CisgICAgICAgIHNyY1RleHR1cmUgICAgICAgID0gJnJlc29sdmVkVGV4dHVyZUhlbHBlcjsK
ICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc3JjVGV4ID0gdGV4dHVyZTsKLSAgICAg
ICAgc3JjVGV4LT5BZGRSZWYoKTsKLSAgICB9CiAKICAgICBEM0QxMV9CT1ggc3JjQm94OwogICAg
IHNyY0JveC5sZWZ0ICAgPSBzdGF0aWNfY2FzdDxVSU5UPihzYWZlQXJlYS54KTsKICAgICBzcmNC
b3gucmlnaHQgID0gc3RhdGljX2Nhc3Q8VUlOVD4oc2FmZUFyZWEueCArIHNhZmVBcmVhLndpZHRo
KTsKICAgICBzcmNCb3gudG9wICAgID0gc3RhdGljX2Nhc3Q8VUlOVD4oc2FmZUFyZWEueSk7CiAg
ICAgc3JjQm94LmJvdHRvbSA9IHN0YXRpY19jYXN0PFVJTlQ+KHNhZmVBcmVhLnkgKyBzYWZlQXJl
YS5oZWlnaHQpOwotICAgIHNyY0JveC5mcm9udCAgPSAwOwotICAgIHNyY0JveC5iYWNrICAgPSAx
OwogCi0gICAgbURldmljZUNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihzdGFnaW5nVGV4
LCAwLCAwLCAwLCAwLCBzcmNUZXgsIHN1YlJlc291cmNlLCAmc3JjQm94KTsKKyAgICAvLyBTZWxl
Y3QgdGhlIGNvcnJlY3QgbGF5ZXIgZnJvbSBhIDNEIGF0dGFjaG1lbnQKKyAgICBzcmNCb3guZnJv
bnQgPSAwOworICAgIGlmICh0ZXh0dXJlSGVscGVyLmdldFRleHR1cmVUeXBlKCkgPT0gR0xfVEVY
VFVSRV8zRCkKKyAgICB7CisgICAgICAgIHNyY0JveC5mcm9udCA9IHN0YXRpY19jYXN0PFVJTlQ+
KHNyY0F0dGFjaG1lbnQubGF5ZXIoKSk7CisgICAgfQorICAgIHNyY0JveC5iYWNrID0gc3JjQm94
LmZyb250ICsgMTsKIAotICAgIFNhZmVSZWxlYXNlKHNyY1RleCk7CisgICAgbURldmljZUNvbnRl
eHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihzdGFnaW5nSGVscGVyLmdldFJlc291cmNlKCksIDAs
IDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNU
ZXh0dXJlLT5nZXRSZXNvdXJjZSgpLCBzb3VyY2VTdWJSZXNvdXJjZSwgJnNyY0JveCk7CiAKLSAg
ICBQYWNrUGl4ZWxzUGFyYW1zIHBhY2tQYXJhbXMoc2FmZUFyZWEsIGZvcm1hdCwgdHlwZSwgb3V0
cHV0UGl0Y2gsIHBhY2ssIDApOwotICAgIGdsOjpFcnJvciBlcnJvciA9IHBhY2tQaXhlbHMoc3Rh
Z2luZ1RleCwgcGFja1BhcmFtcywgcGl4ZWxzKTsKKyAgICBpZiAoaW52ZXJ0VGV4dHVyZSkKKyAg
ICB7CisgICAgICAgIGdsOjpQaXhlbFBhY2tTdGF0ZSBpbnZlcnRUZXh0dXJlUGFjazsKIAotICAg
IFNhZmVSZWxlYXNlKHN0YWdpbmdUZXgpOworICAgICAgICAvLyBDcmVhdGUgYSBuZXcgUGl4ZWxQ
YWNrU3RhdGUgd2l0aCByZXZlcnNlZCByb3cgb3JkZXIuIE5vdGUgdGhhdCB3ZSBjYW4ndCBqdXN0
IGFzc2lnbgorICAgICAgICAvLyAnaW52ZXJ0VGV4dHVyZVBhY2snIHRvIGJlICdwYWNrJyAob3Ig
bWVtY3B5KSBzaW5jZSB0aGF0IGJyZWFrcyB0aGUgcmVmIGNvdW50aW5nL29iamVjdAorICAgICAg
ICAvLyB0cmFja2luZyBpbiB0aGUgJ3BpeGVsQnVmZmVyJyBtZW1iZXJzLCBjYXVzaW5nIGxlYWtz
LiBJbnN0ZWFkIHdlIG11c3QgdXNlCisgICAgICAgIC8vIHBpeGVsQnVmZmVyLnNldCgpIHR3aWNl
LCB3aGljaCBwZXJmb3JtcyB0aGUgYWRkUmVmL3JlbGVhc2UgY29ycmVjdGx5CisgICAgICAgIGlu
dmVydFRleHR1cmVQYWNrLmFsaWdubWVudCA9IHBhY2suYWxpZ25tZW50OworICAgICAgICBpbnZl
cnRUZXh0dXJlUGFjay5waXhlbEJ1ZmZlci5zZXQocGFjay5waXhlbEJ1ZmZlci5nZXQoKSk7Cisg
ICAgICAgIGludmVydFRleHR1cmVQYWNrLnJldmVyc2VSb3dPcmRlciA9ICFwYWNrLnJldmVyc2VS
b3dPcmRlcjsKIAotICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgUGFja1BpeGVsc1BhcmFtcyBw
YWNrUGFyYW1zKHNhZmVBcmVhLCBmb3JtYXQsIHR5cGUsIG91dHB1dFBpdGNoLCBpbnZlcnRUZXh0
dXJlUGFjaywgMCk7CisgICAgICAgIGVycm9yID0gcGFja1BpeGVscyhzdGFnaW5nSGVscGVyLCBw
YWNrUGFyYW1zLCBwaXhlbHNPdXQpOworCisgICAgICAgIGludmVydFRleHR1cmVQYWNrLnBpeGVs
QnVmZmVyLnNldChudWxscHRyKTsKKworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIFBhY2tQaXhlbHNQYXJhbXMgcGFja1BhcmFtcyhzYWZlQXJl
YSwgZm9ybWF0LCB0eXBlLCBvdXRwdXRQaXRjaCwgcGFjaywgMCk7CisgICAgICAgIHJldHVybiBw
YWNrUGl4ZWxzKHN0YWdpbmdIZWxwZXIsIHBhY2tQYXJhbXMsIHBpeGVsc091dCk7CisgICAgfQog
fQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6cGFja1BpeGVscyhJRDNEMTFUZXh0dXJlMkQgKnJl
YWRUZXh0dXJlLCBjb25zdCBQYWNrUGl4ZWxzUGFyYW1zICZwYXJhbXMsIHVpbnQ4X3QgKnBpeGVs
c091dCkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpwYWNrUGl4ZWxzKGNvbnN0IFRleHR1cmVIZWxw
ZXIxMSAmdGV4dHVyZUhlbHBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBhY2tQaXhlbHNQYXJhbXMgJnBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKnBpeGVsc091dCkKIHsKLSAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0
ZXh0dXJlRGVzYzsKLSAgICByZWFkVGV4dHVyZS0+R2V0RGVzYygmdGV4dHVyZURlc2MpOworICAg
IElEM0QxMVJlc291cmNlICpyZWFkUmVzb3VyY2UgPSB0ZXh0dXJlSGVscGVyLmdldFJlc291cmNl
KCk7CiAKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGluZzsKLSAgICBIUkVTVUxU
IGhyID0gbURldmljZUNvbnRleHQtPk1hcChyZWFkVGV4dHVyZSwgMCwgRDNEMTFfTUFQX1JFQUQs
IDAsICZtYXBwaW5nKTsKKyAgICBIUkVTVUxUIGhyID0gbURldmljZUNvbnRleHQtPk1hcChyZWFk
UmVzb3VyY2UsIDAsIEQzRDExX01BUF9SRUFELCAwLCAmbWFwcGluZyk7CiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgewogICAgICAgICBBU1NFUlQoaHIgPT0gRV9PVVRPRk1FTU9SWSk7CkBAIC0z
MjYwLDggKzM4NTksOSBAQAogICAgICAgICBpbnB1dFBpdGNoID0gc3RhdGljX2Nhc3Q8aW50Piht
YXBwaW5nLlJvd1BpdGNoKTsKICAgICB9CiAKLSAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAm
ZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8odGV4dHVyZURlc2MuRm9y
bWF0KTsKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJnNvdXJjZUZvcm1hdEluZm8gPSBn
bDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGR4Z2lGb3JtYXRJbmZvLmludGVybmFsRm9ybWF0KTsK
KyAgICBjb25zdCBhdXRvICZhbmdsZUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0QU5HTEVGb3JtYXRT
ZXQodGV4dHVyZUhlbHBlci5nZXRBTkdMRUZvcm1hdCgpKTsKKyAgICBjb25zdCBnbDo6SW50ZXJu
YWxGb3JtYXQgJnNvdXJjZUZvcm1hdEluZm8gPQorICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKGFuZ2xlRm9ybWF0SW5mby5nbEludGVybmFsRm9ybWF0KTsKICAgICBpZiAoc291cmNl
Rm9ybWF0SW5mby5mb3JtYXQgPT0gcGFyYW1zLmZvcm1hdCAmJiBzb3VyY2VGb3JtYXRJbmZvLnR5
cGUgPT0gcGFyYW1zLnR5cGUpCiAgICAgewogICAgICAgICB1aW50OF90ICpkZXN0ID0gcGl4ZWxz
T3V0ICsgcGFyYW1zLm9mZnNldDsKQEAgLTMyNzIsOSArMzg3MiwxMCBAQAogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAmc291cmNlRFhHSUZv
cm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdEluZm8odGV4dHVyZURlc2MuRm9ybWF0KTsK
LSAgICAgICAgQ29sb3JDb3B5RnVuY3Rpb24gZmFzdENvcHlGdW5jID0gc291cmNlRFhHSUZvcm1h
dEluZm8uZ2V0RmFzdENvcHlGdW5jdGlvbihwYXJhbXMuZm9ybWF0LCBwYXJhbXMudHlwZSk7Ci0K
KyAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0KKyAgICAg
ICAgICAgIGQzZDExOjpHZXREWEdJRm9ybWF0SW5mbyh0ZXh0dXJlSGVscGVyLmdldEZvcm1hdCgp
KTsKKyAgICAgICAgQ29sb3JDb3B5RnVuY3Rpb24gZmFzdENvcHlGdW5jID0KKyAgICAgICAgICAg
IGR4Z2lGb3JtYXRJbmZvLmdldEZhc3RDb3B5RnVuY3Rpb24ocGFyYW1zLmZvcm1hdCwgcGFyYW1z
LnR5cGUpOwogICAgICAgICBHTGVudW0gc2l6ZWREZXN0SW50ZXJuYWxGb3JtYXQgPSBnbDo6R2V0
U2l6ZWRJbnRlcm5hbEZvcm1hdChwYXJhbXMuZm9ybWF0LCBwYXJhbXMudHlwZSk7CiAgICAgICAg
IGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZGVzdEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJu
YWxGb3JtYXRJbmZvKHNpemVkRGVzdEludGVybmFsRm9ybWF0KTsKIApAQCAtMzI5NCw3ICszODk1
LDcgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENv
bG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uID0gc291cmNlRFhHSUZvcm1hdEluZm8u
Y29sb3JSZWFkRnVuY3Rpb247CisgICAgICAgICAgICBDb2xvclJlYWRGdW5jdGlvbiBjb2xvclJl
YWRGdW5jdGlvbiAgID0gYW5nbGVGb3JtYXRJbmZvLmNvbG9yUmVhZEZ1bmN0aW9uOwogICAgICAg
ICAgICAgQ29sb3JXcml0ZUZ1bmN0aW9uIGNvbG9yV3JpdGVGdW5jdGlvbiA9IEdldENvbG9yV3Jp
dGVGdW5jdGlvbihwYXJhbXMuZm9ybWF0LCBwYXJhbXMudHlwZSk7CiAKICAgICAgICAgICAgIHVp
bnQ4X3QgdGVtcFsxNl07IC8vIE1heGltdW0gc2l6ZSBvZiBhbnkgQ29sb3I8VD4gdHlwZSB1c2Vk
LgpAQCAtMzMxOSwxNCArMzkyMCwyMCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgbURldmlj
ZUNvbnRleHQtPlVubWFwKHJlYWRUZXh0dXJlLCAwKTsKKyAgICBtRGV2aWNlQ29udGV4dC0+VW5t
YXAocmVhZFJlc291cmNlLCAwKTsKIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6YmxpdFJlbmRlcmJ1ZmZlclJlY3QoY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmcmVhZFJlY3QsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0LCBS
ZW5kZXJUYXJnZXREM0QgKnJlYWRSZW5kZXJUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICpkcmF3UmVuZGVyVGFyZ2V0LCBH
TGVudW0gZmlsdGVyLCBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29sb3JCbGl0LCBib29sIGRlcHRo
QmxpdCwgYm9vbCBzdGVuY2lsQmxpdCkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVy
YnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdEluLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdS
ZWN0SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
VGFyZ2V0RDNEICpyZWFkUmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZHJhd1JlbmRlclRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5n
bGUgKnNjaXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjb2xvckJsaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBkZXB0aEJsaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBzdGVuY2lsQmxpdCkKIHsKICAgICAvLyBTaW5jZSBibGl0UmVuZGVyYnVmZmVy
UmVjdCBpcyBjYWxsZWQgZm9yIGVhY2ggcmVuZGVyIGJ1ZmZlciB0aGF0IG5lZWRzIHRvIGJlIGJs
aXR0ZWQsCiAgICAgLy8gaXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgYm90aCBjb2xv
ciBhbmQgZGVwdGgvc3RlbmNpbCBuZWVkIHRvIGJlIGJsaXR0ZWQgYXQKQEAgLTMzNzgsNyArMzk4
NSwxMiBAQAogICAgICAgICByZWFkVGV4dHVyZSA9IHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0VGV4
dHVyZSgpOwogICAgICAgICByZWFkVGV4dHVyZS0+QWRkUmVmKCk7CiAgICAgICAgIHJlYWRTdWJy
ZXNvdXJjZSA9IHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOwotICAg
ICAgICByZWFkU1JWID0gcmVhZFJlbmRlclRhcmdldDExLT5nZXRTaGFkZXJSZXNvdXJjZVZpZXco
KTsKKyAgICAgICAgcmVhZFNSViA9IHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0QmxpdFNoYWRlclJl
c291cmNlVmlldygpOworICAgICAgICBpZiAocmVhZFNSViA9PSBudWxscHRyKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoZGVwdGhCbGl0IHx8IHN0ZW5jaWxCbGl0KTsKKyAgICAgICAg
ICAgIHJlYWRTUlYgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFNoYWRlclJlc291cmNlVmlldygp
OworICAgICAgICB9CiAgICAgICAgIHJlYWRTUlYtPkFkZFJlZigpOwogICAgIH0KIApAQCAtMzM5
MiwxNCArNDAwNCw5NyBAQAogICAgIGdsOjpFeHRlbnRzIHJlYWRTaXplKHJlYWRSZW5kZXJUYXJn
ZXQtPmdldFdpZHRoKCksIHJlYWRSZW5kZXJUYXJnZXQtPmdldEhlaWdodCgpLCAxKTsKICAgICBn
bDo6RXh0ZW50cyBkcmF3U2l6ZShkcmF3UmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpLCBkcmF3UmVu
ZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKSwgMSk7CiAKKyAgICAvLyBGcm9tIHRoZSBzcGVjOgorICAg
IC8vICJUaGUgYWN0dWFsIHJlZ2lvbiB0YWtlbiBmcm9tIHRoZSByZWFkIGZyYW1lYnVmZmVyIGlz
IGxpbWl0ZWQgdG8gdGhlIGludGVyc2VjdGlvbiBvZiB0aGUKKyAgICAvLyBzb3VyY2UgYnVmZmVy
cyBiZWluZyB0cmFuc2ZlcnJlZCwgd2hpY2ggbWF5IGluY2x1ZGUgdGhlIGNvbG9yIGJ1ZmZlciBz
ZWxlY3RlZCBieSB0aGUgcmVhZAorICAgIC8vIGJ1ZmZlciwgdGhlIGRlcHRoIGJ1ZmZlciwgYW5k
IC8gb3IgdGhlIHN0ZW5jaWwgYnVmZmVyIGRlcGVuZGluZyBvbiBtYXNrLiIKKyAgICAvLyBUaGlz
IG1lYW5zIG5lZ2F0aXZlIHggYW5kIHkgYXJlIG91dCBvZiBib3VuZHMsIGFuZCBub3QgdG8gYmUg
cmVhZCBmcm9tLiBXZSBoYW5kbGUgdGhpcyBoZXJlCisgICAgLy8gYnkgaW50ZXJuYWxseSBzY2Fs
aW5nIHRoZSByZWFkIGFuZCBkcmF3IHJlY3RhbmdsZXMuCisgICAgZ2w6OlJlY3RhbmdsZSByZWFk
UmVjdCA9IHJlYWRSZWN0SW47CisgICAgZ2w6OlJlY3RhbmdsZSBkcmF3UmVjdCA9IGRyYXdSZWN0
SW47CisgICAgYXV0byByZWFkVG9EcmF3WCAgICAgICA9IFsmZHJhd1JlY3RJbiwgJnJlYWRSZWN0
SW5dKGludCByZWFkT2Zmc2V0KQorICAgIHsKKyAgICAgICAgZG91YmxlIHJlYWRUb0RyYXdTY2Fs
ZSA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGRyYXdSZWN0SW4ud2lkdGgpIC8g
c3RhdGljX2Nhc3Q8ZG91YmxlPihyZWFkUmVjdEluLndpZHRoKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4ocm91bmQoc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWFkT2Zmc2V0KSAqIHJl
YWRUb0RyYXdTY2FsZSkpOworICAgIH07CisgICAgaWYgKHJlYWRSZWN0LnggPCAwKQorICAgIHsK
KyAgICAgICAgaW50IHJlYWRPZmZzZXQgPSAtcmVhZFJlY3QueDsKKyAgICAgICAgcmVhZFJlY3Qu
eCArPSByZWFkT2Zmc2V0OworICAgICAgICByZWFkUmVjdC53aWR0aCAtPSByZWFkT2Zmc2V0Owor
CisgICAgICAgIGludCBkcmF3T2Zmc2V0ID0gcmVhZFRvRHJhd1gocmVhZE9mZnNldCk7CisgICAg
ICAgIGRyYXdSZWN0LnggKz0gZHJhd09mZnNldDsKKyAgICAgICAgZHJhd1JlY3Qud2lkdGggLT0g
ZHJhd09mZnNldDsKKyAgICB9CisKKyAgICBhdXRvIHJlYWRUb0RyYXdZID0gWyZkcmF3UmVjdElu
LCAmcmVhZFJlY3RJbl0oaW50IHJlYWRPZmZzZXQpCisgICAgeworICAgICAgICBkb3VibGUgcmVh
ZFRvRHJhd1NjYWxlID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oZHJhd1JlY3RJ
bi5oZWlnaHQpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWFkUmVjdEluLmhlaWdodCk7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVh
ZE9mZnNldCkgKiByZWFkVG9EcmF3U2NhbGUpKTsKKyAgICB9OworICAgIGlmIChyZWFkUmVjdC55
IDwgMCkKKyAgICB7CisgICAgICAgIGludCByZWFkT2Zmc2V0ID0gLXJlYWRSZWN0Lnk7CisgICAg
ICAgIHJlYWRSZWN0LnkgKz0gcmVhZE9mZnNldDsKKyAgICAgICAgcmVhZFJlY3QuaGVpZ2h0IC09
IHJlYWRPZmZzZXQ7CisKKyAgICAgICAgaW50IGRyYXdPZmZzZXQgPSByZWFkVG9EcmF3WShyZWFk
T2Zmc2V0KTsKKyAgICAgICAgZHJhd1JlY3QueSArPSBkcmF3T2Zmc2V0OworICAgICAgICBkcmF3
UmVjdC5oZWlnaHQgLT0gZHJhd09mZnNldDsKKyAgICB9CisKKyAgICBpZiAocmVhZFJlY3QueDEo
KSA8IDApCisgICAgeworICAgICAgICBpbnQgcmVhZE9mZnNldCA9IC1yZWFkUmVjdC54MSgpOwor
ICAgICAgICByZWFkUmVjdC53aWR0aCArPSByZWFkT2Zmc2V0OworCisgICAgICAgIGludCBkcmF3
T2Zmc2V0ID0gcmVhZFRvRHJhd1gocmVhZE9mZnNldCk7CisgICAgICAgIGRyYXdSZWN0LndpZHRo
ICs9IGRyYXdPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKHJlYWRSZWN0LnkxKCkgPCAwKQorICAg
IHsKKyAgICAgICAgaW50IHJlYWRPZmZzZXQgPSAtcmVhZFJlY3QueTEoKTsKKyAgICAgICAgcmVh
ZFJlY3QuaGVpZ2h0ICs9IHJlYWRPZmZzZXQ7CisKKyAgICAgICAgaW50IGRyYXdPZmZzZXQgPSBy
ZWFkVG9EcmF3WShyZWFkT2Zmc2V0KTsKKyAgICAgICAgZHJhd1JlY3QuaGVpZ2h0ICs9IGRyYXdP
ZmZzZXQ7CisgICAgfQorCiAgICAgYm9vbCBzY2lzc29yTmVlZGVkID0gc2Npc3NvciAmJiBnbDo6
Q2xpcFJlY3RhbmdsZShkcmF3UmVjdCwgKnNjaXNzb3IsIE5VTEwpOwogCi0gICAgYm9vbCB3aG9s
ZUJ1ZmZlckNvcHkgPSAhc2Npc3Nvck5lZWRlZCAmJgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVhZFJlY3QueCA9PSAwICYmIHJlYWRSZWN0LndpZHRoID09IHJlYWRTaXplLndpZHRoICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkUmVjdC55ID09IDAgJiYgcmVhZFJlY3Qu
aGVpZ2h0ID09IHJlYWRTaXplLmhlaWdodCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHJhd1JlY3QueCA9PSAwICYmIGRyYXdSZWN0LndpZHRoID09IGRyYXdTaXplLndpZHRoICYmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3UmVjdC55ID09IDAgJiYgZHJhd1JlY3QuaGVp
Z2h0ID09IGRyYXdTaXplLmhlaWdodDsKKyAgICBjb25zdCBhdXRvICZkZXN0Rm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZHJhd1JlbmRlclRhcmdldC0+Z2V0SW50ZXJuYWxG
b3JtYXQoKSk7CisgICAgY29uc3QgYXV0byAmc3JjRm9ybWF0SW5mbyAgPSBnbDo6R2V0SW50ZXJu
YWxGb3JtYXRJbmZvKHJlYWRSZW5kZXJUYXJnZXQtPmdldEludGVybmFsRm9ybWF0KCkpOworICAg
IGNvbnN0IGF1dG8gJmZvcm1hdFNldCAgICAgICAgICAgID0gZDNkMTE6OkdldEFOR0xFRm9ybWF0
U2V0KGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0QU5HTEVGb3JtYXQoKSk7CisgICAgY29uc3QgRFhH
SV9GT1JNQVQgZHJhd0RYR0lGb3JtYXQgPSBjb2xvckJsaXQgPyBmb3JtYXRTZXQucnR2Rm9ybWF0
IDogZm9ybWF0U2V0LmRzdkZvcm1hdDsKKyAgICBjb25zdCBhdXRvICZkeGdpRm9ybWF0SW5mbyAg
ICAgICA9IGQzZDExOjpHZXREWEdJRm9ybWF0SW5mbyhkcmF3RFhHSUZvcm1hdCk7CiAKKyAgICAv
LyBTb21lIGJsaXRzIHJlcXVpcmUgbWFza2luZyBvZmYgZW11bGF0ZWQgdGV4dHVyZSBjaGFubmVs
cy4gZWc6IGZyb20gUkdCQTggdG8gUkdCOCwgd2UKKyAgICAvLyBlbXVsYXRlIFJHQjggd2l0aCBS
R0JBOCwgc28gd2UgbmVlZCB0byBtYXNrIG9mZiB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHdlIGNv
cHkuCisKKyAgICBnbDo6Q29sb3I8Ym9vbD4gY29sb3JNYXNrOworICAgIGNvbG9yTWFzay5yZWQg
PSAoc3JjRm9ybWF0SW5mby5yZWRCaXRzID4gMCkgJiYgKGRlc3RGb3JtYXRJbmZvLnJlZEJpdHMg
PT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGR4Z2lGb3JtYXRJbmZvLnJlZEJpdHMgPiAw
KTsKKyAgICBjb2xvck1hc2suZ3JlZW4gPSAoc3JjRm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwKSAm
JiAoZGVzdEZvcm1hdEluZm8uZ3JlZW5CaXRzID09IDApICYmCisgICAgICAgICAgICAgICAgICAg
ICAgKGR4Z2lGb3JtYXRJbmZvLmdyZWVuQml0cyA+IDApOworICAgIGNvbG9yTWFzay5ibHVlID0g
KHNyY0Zvcm1hdEluZm8uYmx1ZUJpdHMgPiAwKSAmJiAoZGVzdEZvcm1hdEluZm8uYmx1ZUJpdHMg
PT0gMCkgJiYKKyAgICAgICAgICAgICAgICAgICAgIChkeGdpRm9ybWF0SW5mby5ibHVlQml0cyA+
IDApOworICAgIGNvbG9yTWFzay5hbHBoYSA9IChzcmNGb3JtYXRJbmZvLmFscGhhQml0cyA+IDAp
ICYmIChkZXN0Rm9ybWF0SW5mby5hbHBoYUJpdHMgPT0gMCkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICAoZHhnaUZvcm1hdEluZm8uYWxwaGFCaXRzID4gMCk7CisKKyAgICAvLyBXZSBvbmx5IGN1
cnJlbnRseSBzdXBwb3J0IG1hc2tpbmcgb2ZmIHRoZSBhbHBoYSBjaGFubmVsLgorICAgIGJvb2wg
Y29sb3JNYXNraW5nTmVlZGVkID0gY29sb3JNYXNrLmFscGhhOworICAgIEFTU0VSVCghY29sb3JN
YXNrLnJlZCAmJiAhY29sb3JNYXNrLmdyZWVuICYmICFjb2xvck1hc2suYmx1ZSk7CisKKyAgICBi
b29sIHdob2xlQnVmZmVyQ29weSA9ICFzY2lzc29yTmVlZGVkICYmICFjb2xvck1hc2tpbmdOZWVk
ZWQgJiYgcmVhZFJlY3QueCA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFk
UmVjdC53aWR0aCA9PSByZWFkU2l6ZS53aWR0aCAmJiByZWFkUmVjdC55ID09IDAgJiYKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRSZWN0LmhlaWdodCA9PSByZWFkU2l6ZS5oZWlnaHQg
JiYgZHJhd1JlY3QueCA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3UmVj
dC53aWR0aCA9PSBkcmF3U2l6ZS53aWR0aCAmJiBkcmF3UmVjdC55ID09IDAgJiYKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyYXdSZWN0LmhlaWdodCA9PSBkcmF3U2l6ZS5oZWlnaHQ7CisK
ICAgICBib29sIHN0cmV0Y2hSZXF1aXJlZCA9IHJlYWRSZWN0LndpZHRoICE9IGRyYXdSZWN0Lndp
ZHRoIHx8IHJlYWRSZWN0LmhlaWdodCAhPSBkcmF3UmVjdC5oZWlnaHQ7CiAKICAgICBib29sIGZs
aXBSZXF1aXJlZCA9IHJlYWRSZWN0LndpZHRoIDwgMCB8fCByZWFkUmVjdC5oZWlnaHQgPCAwIHx8
IGRyYXdSZWN0LndpZHRoIDwgMCB8fCBkcmF3UmVjdC5oZWlnaHQgPCAwOwpAQCAtMzQwOSwxNCAr
NDEwNCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICBkcmF3UmVjdC54IDwgMCB8fCBkcmF3
UmVjdC54ICsgZHJhd1JlY3Qud2lkdGggPiBkcmF3U2l6ZS53aWR0aCB8fAogICAgICAgICAgICAg
ICAgICAgICAgICBkcmF3UmVjdC55IDwgMCB8fCBkcmF3UmVjdC55ICsgZHJhd1JlY3QuaGVpZ2h0
ID4gZHJhd1NpemUuaGVpZ2h0OwogCi0gICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lG
b3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKGRyYXdSZW5kZXJUYXJnZXQxMS0+
Z2V0RFhHSUZvcm1hdCgpKTsKICAgICBib29sIHBhcnRpYWxEU0JsaXQgPSAoZHhnaUZvcm1hdElu
Zm8uZGVwdGhCaXRzID4gMCAmJiBkZXB0aEJsaXQpICE9IChkeGdpRm9ybWF0SW5mby5zdGVuY2ls
Qml0cyA+IDAgJiYgc3RlbmNpbEJsaXQpOwogCiAgICAgZ2w6OkVycm9yIHJlc3VsdChHTF9OT19F
UlJPUik7CiAKLSAgICBpZiAocmVhZFJlbmRlclRhcmdldDExLT5nZXREWEdJRm9ybWF0KCkgPT0g
ZHJhd1JlbmRlclRhcmdldDExLT5nZXREWEdJRm9ybWF0KCkgJiYKKyAgICBpZiAocmVhZFJlbmRl
clRhcmdldDExLT5nZXRBTkdMRUZvcm1hdCgpID09IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0QU5H
TEVGb3JtYXQoKSAmJgogICAgICAgICAhc3RyZXRjaFJlcXVpcmVkICYmICFvdXRPZkJvdW5kcyAm
JiAhZmxpcFJlcXVpcmVkICYmICFwYXJ0aWFsRFNCbGl0ICYmCi0gICAgICAgICghKGRlcHRoQmxp
dCB8fCBzdGVuY2lsQmxpdCkgfHwgd2hvbGVCdWZmZXJDb3B5KSkKKyAgICAgICAgIWNvbG9yTWFz
a2luZ05lZWRlZCAmJiAoIShkZXB0aEJsaXQgfHwgc3RlbmNpbEJsaXQpIHx8IHdob2xlQnVmZmVy
Q29weSkpCiAgICAgewogICAgICAgICBVSU5UIGRzdFggPSBkcmF3UmVjdC54OwogICAgICAgICBV
SU5UIGRzdFkgPSBkcmF3UmVjdC55OwpAQCAtMzQ4Niw5ICs0MTgwLDEwIEBACiAgICAgICAgIH0K
ICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBHTGVudW0gZm9ybWF0ID0gZ2w6
OkdldEludGVybmFsRm9ybWF0SW5mbyhkcmF3UmVuZGVyVGFyZ2V0LT5nZXRJbnRlcm5hbEZvcm1h
dCgpKS5mb3JtYXQ7CisgICAgICAgICAgICAvLyBXZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCBt
YXNraW5nIG9mZiBhbnkgb3RoZXIgY2hhbm5lbCB0aGFuIGFscGhhCisgICAgICAgICAgICBib29s
IG1hc2tPZmZBbHBoYSA9IGNvbG9yTWFza2luZ05lZWRlZCAmJiBjb2xvck1hc2suYWxwaGE7CiAg
ICAgICAgICAgICByZXN1bHQgPSBtQmxpdC0+Y29weVRleHR1cmUocmVhZFNSViwgcmVhZEFyZWEs
IHJlYWRTaXplLCBkcmF3UlRWLCBkcmF3QXJlYSwgZHJhd1NpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2Npc3NvciwgZm9ybWF0LCBmaWx0ZXIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaXNzb3IsIGRlc3RGb3JtYXRJbmZv
LmZvcm1hdCwgZmlsdGVyLCBtYXNrT2ZmQWxwaGEpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0z
NTAwLDkgKzQxOTUsNDkgQEAKIAogYm9vbCBSZW5kZXJlcjExOjppc0VTM0NhcGFibGUoKSBjb25z
dAogewotICAgIHJldHVybiAoZDNkMTFfZ2w6OkdldE1heGltdW1DbGllbnRWZXJzaW9uKG1GZWF0
dXJlTGV2ZWwpID4gMik7CisgICAgcmV0dXJuIChkM2QxMV9nbDo6R2V0TWF4aW11bUNsaWVudFZl
cnNpb24obVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkgPiAyKTsKIH07CiAKK3Zv
aWQgUmVuZGVyZXIxMTo6b25Td2FwKCkKK3sKKyAgICAvLyBTZW5kIGhpc3RvZ3JhbSB1cGRhdGVz
IGV2ZXJ5IGhhbGYgaG91cgorICAgIGNvbnN0IGRvdWJsZSBrSGlzdG9ncmFtVXBkYXRlSW50ZXJ2
YWwgPSAzMCAqIDYwOworCisgICAgY29uc3QgZG91YmxlIGN1cnJlbnRUaW1lID0gQU5HTEVQbGF0
Zm9ybUN1cnJlbnQoKS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgY29uc3Qg
ZG91YmxlIHRpbWVTaW5jZUxhc3RVcGRhdGUgPSBjdXJyZW50VGltZSAtIG1MYXN0SGlzdG9ncmFt
VXBkYXRlVGltZTsKKworICAgIGlmICh0aW1lU2luY2VMYXN0VXBkYXRlID4ga0hpc3RvZ3JhbVVw
ZGF0ZUludGVydmFsKQorICAgIHsKKyAgICAgICAgdXBkYXRlSGlzdG9ncmFtcygpOworICAgICAg
ICBtTGFzdEhpc3RvZ3JhbVVwZGF0ZVRpbWUgPSBjdXJyZW50VGltZTsKKyAgICB9Cit9CisKK3Zv
aWQgUmVuZGVyZXIxMTo6dXBkYXRlSGlzdG9ncmFtcygpCit7CisgICAgLy8gVXBkYXRlIHRoZSBi
dWZmZXIgQ1BVIG1lbW9yeSBoaXN0b2dyYW0KKyAgICB7CisgICAgICAgIHNpemVfdCBzaXplU3Vt
ID0gMDsKKyAgICAgICAgZm9yIChhdXRvICZidWZmZXIgOiBtQWxpdmVCdWZmZXJzKQorICAgICAg
ICB7CisgICAgICAgICAgICBzaXplU3VtICs9IGJ1ZmZlci0+Z2V0VG90YWxDUFVCdWZmZXJNZW1v
cnlCeXRlcygpOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGludCBrT25lTWVnYUJ5dGUgPSAx
MDI0ICogMTAyNDsKKyAgICAgICAgQU5HTEVfSElTVE9HUkFNX01FTU9SWV9NQigiR1BVLkFOR0xF
LkJ1ZmZlcjExQ1BVTWVtb3J5TUIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludD4oc2l6ZVN1bSkgLyBrT25lTWVnYUJ5dGUpOworICAgIH0KK30KKwor
dm9pZCBSZW5kZXJlcjExOjpvbkJ1ZmZlckRlbGV0ZShjb25zdCBCdWZmZXIxMSAqZGVsZXRlZCkK
K3sKKyAgICBtQWxpdmVCdWZmZXJzLmVyYXNlKGRlbGV0ZWQpOworfQorCit2b2lkIFJlbmRlcmVy
MTE6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkRhdGEgJmRhdGEpCit7CisgICAgbVN0YXRlTWFu
YWdlci5vbk1ha2VDdXJyZW50KGRhdGEpOworfQorCiBJRDNEMTFUZXh0dXJlMkQgKlJlbmRlcmVy
MTE6OnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKElEM0QxMVRleHR1cmUyRCAqc291cmNlLCB1
bnNpZ25lZCBpbnQgc3VicmVzb3VyY2UpCiB7CiAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4
dHVyZURlc2M7CkBAIC0zNTYxLDU0ICs0Mjk2LDEwMSBAQAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1WZXJ0ZXhDb252ZXJzaW9uVHlwZSBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhDb252ZXJzaW9uVHlw
ZShjb25zdCBnbDo6VmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhGb3JtYXQpIGNvbnN0CitWZXJ0ZXhDb252
ZXJzaW9uVHlwZSBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZShnbDo6VmVydGV4
Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdAogewotICAgIHJldHVybiBkM2QxMTo6
R2V0VmVydGV4Rm9ybWF0SW5mbyh2ZXJ0ZXhGb3JtYXQsIG1GZWF0dXJlTGV2ZWwpLmNvbnZlcnNp
b25UeXBlOworICAgIHJldHVybiBkM2QxMTo6R2V0VmVydGV4Rm9ybWF0SW5mbyh2ZXJ0ZXhGb3Jt
YXRUeXBlLCBtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKS5jb252ZXJzaW9uVHlw
ZTsKIH0KIAotR0xlbnVtIFJlbmRlcmVyMTE6OmdldFZlcnRleENvbXBvbmVudFR5cGUoY29uc3Qg
Z2w6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0KSBjb25zdAorR0xlbnVtIFJlbmRlcmVyMTE6
OmdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0
VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKGQzZDEx
OjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKHZlcnRleEZvcm1hdCwgbUZlYXR1cmVMZXZlbCkubmF0aXZl
Rm9ybWF0KS5jb21wb25lbnRUeXBlOworICAgIHJldHVybiBkM2QxMTo6R2V0RFhHSUZvcm1hdElu
Zm8oZDNkMTE6OkdldFZlcnRleEZvcm1hdEluZm8odmVydGV4Rm9ybWF0VHlwZSwgbVJlbmRlcmVy
MTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkubmF0aXZlRm9ybWF0KS5jb21wb25lbnRUeXBlOwog
fQogCi12b2lkIFJlbmRlcmVyMTE6OmdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6
OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVu
c2lvbnMpIGNvbnN0CitnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+IFJlbmRlcmVyMTE6
OmdldFZlcnRleFNwYWNlUmVxdWlyZWQoCisgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmliLAorICAgIEdMc2l6ZWkgY291bnQsCisgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0
CiB7Ci0gICAgZDNkMTFfZ2w6OkdlbmVyYXRlQ2FwcyhtRGV2aWNlLCBtRGV2aWNlQ29udGV4dCwg
b3V0Q2Fwcywgb3V0VGV4dHVyZUNhcHMsIG91dEV4dGVuc2lvbnMpOworICAgIGlmICghYXR0cmli
LmVuYWJsZWQpCisgICAgeworICAgICAgICByZXR1cm4gMTZ1OworICAgIH0KKworICAgIHVuc2ln
bmVkIGludCBlbGVtZW50Q291bnQgPSAwOworICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRy
aWIuZGl2aXNvciA9PSAwKQorICAgIHsKKyAgICAgICAgZWxlbWVudENvdW50ID0gY291bnQ7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIFJvdW5kIHVwIHRvIGRpdmlzb3IsIGlm
IHBvc3NpYmxlCisgICAgICAgIGVsZW1lbnRDb3VudCA9IFVuc2lnbmVkQ2VpbERpdmlkZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluc3RhbmNlcyksIGF0dHJpYi5kaXZpc29yKTsKKyAgICB9
CisKKyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSBmb3JtYXRUeXBlICAgICAgPSBnbDo6R2V0VmVy
dGV4Rm9ybWF0VHlwZShhdHRyaWIpOworICAgIGNvbnN0IEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCA9IG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWw7CisgICAgY29uc3Qg
ZDNkMTE6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpH
ZXRWZXJ0ZXhGb3JtYXRJbmZvKGZvcm1hdFR5cGUsIGZlYXR1cmVMZXZlbCk7CisgICAgY29uc3Qg
ZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpH
ZXREWEdJRm9ybWF0U2l6ZUluZm8odmVydGV4Rm9ybWF0SW5mby5uYXRpdmVGb3JtYXQpOworICAg
IHVuc2lnbmVkIGludCBlbGVtZW50U2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7Cisg
ICAgaWYgKGVsZW1lbnRTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+Ojpt
YXgoKSAvIGVsZW1lbnRDb3VudCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIk5ldyB2ZXJ0ZXggYnVmZmVyIHNpemUgd291bGQgcmVzdWx0IGluIGFu
IG92ZXJmbG93LiIpOworICAgIH0KKworICAgIHJldHVybiBlbGVtZW50U2l6ZSAqIGVsZW1lbnRD
b3VudDsKIH0KIAotV29ya2Fyb3VuZHMgUmVuZGVyZXIxMTo6Z2VuZXJhdGVXb3JrYXJvdW5kcygp
IGNvbnN0Cit2b2lkIFJlbmRlcmVyMTE6OmdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2Fwcywg
Z2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zLCBnbDo6TGltaXRhdGlvbnMg
Km91dExpbWl0YXRpb25zKSBjb25zdAogewotICAgIHJldHVybiBkM2QxMTo6R2VuZXJhdGVXb3Jr
YXJvdW5kcyhtRmVhdHVyZUxldmVsKTsKKyAgICBkM2QxMV9nbDo6R2VuZXJhdGVDYXBzKG1EZXZp
Y2UsIG1EZXZpY2VDb250ZXh0LCBtUmVuZGVyZXIxMURldmljZUNhcHMsIG91dENhcHMsIG91dFRl
eHR1cmVDYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0RXh0ZW5zaW9ucywgb3V0
TGltaXRhdGlvbnMpOwogfQogCi12b2lkIFJlbmRlcmVyMTE6OnNldFNoYWRlclJlc291cmNlKGds
OjpTYW1wbGVyVHlwZSBzaGFkZXJUeXBlLCBVSU5UIHJlc291cmNlU2xvdCwgSUQzRDExU2hhZGVy
UmVzb3VyY2VWaWV3ICpzcnYpCitXb3JrYXJvdW5kc0QzRCBSZW5kZXJlcjExOjpnZW5lcmF0ZVdv
cmthcm91bmRzKCkgY29uc3QKIHsKLSAgICBhdXRvICZjdXJyZW50U1JWcyA9IChzaGFkZXJUeXBl
ID09IGdsOjpTQU1QTEVSX1ZFUlRFWCA/IG1DdXJWZXJ0ZXhTUlZzIDogbUN1clBpeGVsU1JWcyk7
CisgICAgcmV0dXJuIGQzZDExOjpHZW5lcmF0ZVdvcmthcm91bmRzKG1SZW5kZXJlcjExRGV2aWNl
Q2Fwcy5mZWF0dXJlTGV2ZWwpOworfQogCi0gICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4o
cmVzb3VyY2VTbG90KSA8IGN1cnJlbnRTUlZzLnNpemUoKSk7Ci0gICAgYXV0byAmcmVjb3JkID0g
Y3VycmVudFNSVnNbcmVzb3VyY2VTbG90XTsKK3ZvaWQgUmVuZGVyZXIxMTo6Y3JlYXRlQW5ub3Rh
dG9yKCkKK3sKKyAgICAvLyBUaGUgRDNEMTEgcmVuZGVyZXIgbXVzdCBjaG9vc2UgdGhlIEQzRDkg
ZGVidWcgYW5ub3RhdG9yIGJlY2F1c2UgdGhlIEQzRDExIGludGVyZmFjZQorICAgIC8vIG1ldGhv
ZCBJRDNEVXNlckRlZmluZWRBbm5vdGF0aW9uOjpHZXRTdGF0dXMgb24gZGVza3RvcCBidWlsZHMg
ZG9lc24ndCB3b3JrIHdpdGggdGhlIEdyYXBoaWNzCisgICAgLy8gRGlhZ25vc3RpY3MgdG9vbHMg
aW4gVmlzdWFsIFN0dWRpbyAyMDEzLgorICAgIC8vIFRoZSBEM0Q5IGFubm90YXRvciB3b3JrcyBw
cm9wZXJseSBmb3IgYm90aCBEM0QxMSBhbmQgRDNEOS4KKyAgICAvLyBJbmNvcnJlY3Qgc3RhdHVz
IHJlcG9ydGluZyBjYW4gY2F1c2UgQU5HTEUgdG8gbG9nIHVubmVjZXNzYXJ5IGRlYnVnIGV2ZW50
cy4KKyNpZmRlZiBBTkdMRV9FTkFCTEVfRDNEOQorICAgIG1Bbm5vdGF0b3IgPSBuZXcgRGVidWdB
bm5vdGF0b3I5KCk7CisjZWxzZQorICAgIG1Bbm5vdGF0b3IgPSBuZXcgRGVidWdBbm5vdGF0b3Ix
MSgpOworI2VuZGlmCit9CiAKLSAgICBpZiAocmVjb3JkLnNydiAhPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oc3J2KSkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpjbGVhclRleHR1cmVzKGds
OjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwgc2l6ZV90IHJhbmdlU3RhcnQsIHNpemVfdCByYW5n
ZUVuZCkKK3sKKyAgICByZXR1cm4gbVN0YXRlTWFuYWdlci5jbGVhclRleHR1cmVzKHNhbXBsZXJU
eXBlLCByYW5nZVN0YXJ0LCByYW5nZUVuZCk7Cit9CisKK2VnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
Z2V0RUdMRGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpCit7CisgICAgaWYgKG1FR0xEZXZpY2Ug
PT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGlmIChzaGFkZXJUeXBlID09IGdsOjpTQU1QTEVS
X1ZFUlRFWCkKLSAgICAgICAgewotICAgICAgICAgICAgbURldmljZUNvbnRleHQtPlZTU2V0U2hh
ZGVyUmVzb3VyY2VzKHJlc291cmNlU2xvdCwgMSwgJnNydik7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXJS
ZXNvdXJjZXMocmVzb3VyY2VTbG90LCAxLCAmc3J2KTsKLSAgICAgICAgfQorICAgICAgICBBU1NF
UlQobURldmljZSAhPSBudWxscHRyKTsKKyAgICAgICAgbUVHTERldmljZSAgICAgICA9IG5ldyBE
ZXZpY2VEM0QoKTsKKyAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9IG1FR0xEZXZpY2UtPmluaXRp
YWxpemUocmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNEMTFfREVWSUNFX0FOR0xF
LCBFR0xfRkFMU0UpOwogCi0gICAgICAgIHJlY29yZC5zcnYgPSByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oc3J2KTsKLSAgICAgICAgaWYgKHNydikKKyAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgcmVjb3JkLnJlc291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KEdldFZpZXdSZXNvdXJjZShzcnYpKTsKLSAgICAgICAgICAgIHNy
di0+R2V0RGVzYygmcmVjb3JkLmRlc2MpOworICAgICAgICAgICAgU2FmZURlbGV0ZShtRUdMRGV2
aWNlKTsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJlY29yZC5yZXNvdXJjZSA9IDA7Ci0gICAgICAgIH0K
ICAgICB9CisKKyAgICAqZGV2aWNlID0gc3RhdGljX2Nhc3Q8RGV2aWNlSW1wbCAqPihtRUdMRGV2
aWNlKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9Ci19CisKK30gIC8v
IG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjEx
LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NCwxMSArMTQsMTQgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0hMU0xDb21waWxlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9n
cmFtRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hl
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjEx
LmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMzMsMTIgKzM2LDI0IEBACiBjbGFzcyBJbmRleERh
dGFNYW5hZ2VyOwogY2xhc3MgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRlcmZhY2U7CiBjbGFzcyBC
bGl0MTE7CitjbGFzcyBCdWZmZXIxMTsKIGNsYXNzIENsZWFyMTE7CiBjbGFzcyBQaXhlbFRyYW5z
ZmVyMTE7CiBjbGFzcyBSZW5kZXJUYXJnZXQxMTsKIGNsYXNzIFRyaW0xMTsKIHN0cnVjdCBQYWNr
UGl4ZWxzUGFyYW1zOwogCitzdHJ1Y3QgUmVuZGVyZXIxMURldmljZUNhcHMKK3sKKyAgICBEM0Rf
RkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWw7CisgICAgYm9vbCBzdXBwb3J0c0RYR0kxXzI7ICAg
ICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3IgRFhHSSAxLjIKKyAgICBib29sIHN1cHBvcnRzQ2xl
YXJWaWV3OyAgICAgICAgICAgICAvLyBTdXBwb3J0IGZvciBJRDNEMTFEZXZpY2VDb250ZXh0MTo6
Q2xlYXJWaWV3CisgICAgYm9vbCBzdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0czsgLy8gU3Vw
cG9ydCBmb3IgQ29uc3RhbnQgYnVmZmVyIG9mZnNldAorICAgIFVJTlQgQjVHNlI1c3VwcG9ydDsg
ICAgICAgICAgICAgICAgIC8vIEJpdGZpZWxkIG9mIEQzRDExX0ZPUk1BVF9TVVBQT1JUIHZhbHVl
cyBmb3IgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNCisgICAgVUlOVCBCNEc0UjRBNHN1cHBvcnQ7
ICAgICAgICAgICAgICAgLy8gQml0ZmllbGQgb2YgRDNEMTFfRk9STUFUX1NVUFBPUlQgdmFsdWVz
IGZvciBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STQorICAgIFVJTlQgQjVHNVI1QTFzdXBwb3J0
OyAgICAgICAgICAgICAgIC8vIEJpdGZpZWxkIG9mIEQzRDExX0ZPUk1BVF9TVVBQT1JUIHZhbHVl
cyBmb3IgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0KK307CisKIGVudW0KIHsKICAgICBNQVhf
VkVSVEVYX1VOSUZPUk1fVkVDVE9SU19EM0QxMSA9IDEwMjQsCkBAIC05Myw2MiArMTA4LDYyIEBA
CiAgICAgdmlydHVhbCBib29sIHJlc2V0RGV2aWNlKCk7CiAKICAgICBlZ2w6OkNvbmZpZ1NldCBn
ZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGdlbmVyYXRlRGlzcGxh
eUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZmx1c2goKSBvdmVycmlkZTsKICAgICBnbDo6RXJy
b3IgZmluaXNoKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNob3VsZENyZWF0ZUNoaWxkV2luZG93
Rm9yU3VyZmFjZShFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3cgbmF0
aXZlV2luZG93LCBIQU5ETEUgc2hhcmVIYW5kbGUsIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBH
TGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpOworICAgIFN3YXBDaGFpbkQzRCAqY3JlYXRlU3dhcENo
YWluKE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pIG92ZXJyaWRlOwogCisgICAgQ29tcGls
ZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBnbDo6RXJy
b3IgZ2VuZXJhdGVTd2l6emxlKGdsOjpUZXh0dXJlICp0ZXh0dXJlKTsKICAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwg
Z2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXIpOwog
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGlu
dCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpOwogCiAgICAgZ2w6OkVycm9yIHNldFVuaWZv
cm1CdWZmZXJzKGNvbnN0IGdsOjpEYXRhICZkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGludCB2ZXJ0ZXhVbmlmb3JtQnVmZmVyc1tdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCBmcmFnbWVudFVuaWZvcm1CdWZmZXJzW10p
IG92ZXJyaWRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxHTGludD4gJnZlcnRleFVuaWZvcm1CdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJmZyYWdtZW50VW5pZm9ybUJ1ZmZl
cnMpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0UmFzdGVyaXplclN0YXRl
KGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3RlclN0YXRlKTsKLSAgICBnbDo6RXJyb3Ig
c2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBn
bDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSwgY29uc3QgZ2w6OkNvbG9yRiAmYmxlbmRDb2xvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlTWFzaykgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3Qg
Z2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxSZWYs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0ZW5jaWxC
YWNrUmVmLCBib29sIGZyb250RmFjZUNDVyk7CisgICAgZ2w6OkVycm9yIHVwZGF0ZVN0YXRlKGNv
bnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gZHJhd01vZGUpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCB2b2lkIHNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3Nv
ciwgYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgZ2w6
OlJlY3RhbmdsZSAmdmlld3BvcnQsIGZsb2F0IHpOZWFyLCBmbG9hdCB6RmFyLCBHTGVudW0gZHJh
d01vZGUsIEdMZW51bSBmcm9udEZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaWdub3JlVmlld3BvcnQpOwotCiAgICAgdmlydHVhbCBib29sIGFwcGx5UHJpbWl0aXZlVHlw
ZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgYm9vbCB1c2VzUG9pbnRTaXplKTsKICAgICBn
bDo6RXJyb3IgYXBwbHlSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1
ZmZlcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgYXBwbHlTaGFkZXJzKGdsOjpQ
cm9ncmFtICpwcm9ncmFtLCBjb25zdCBnbDo6VmVydGV4Rm9ybWF0IGlucHV0TGF5b3V0W10sIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcmFzdGVyaXplckRpc2NhcmQsIGJvb2wgdHJhbnNmb3JtRmVlZGJh
Y2tBY3RpdmUpOworICAgIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0Qg
JnByb2dyYW1EM0QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFVuaWZv
cm0gKj4gJnVuaWZvcm1BcnJheSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgYXBw
bHlWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbyk7CisgICAg
Z2w6OkVycm9yIGFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlZElu
ZGV4RGF0YSAqaW5kZXhJbmZvKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgYXBwbHlUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1JbXBsICZwcm9n
cmFtLCBjb25zdCBzdGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybSo+ICZ1bmlmb3JtQXJyYXkp
OwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXpl
aSBpbnN0YW5jZXMpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5SW5kZXhCdWZmZXIoY29u
c3QgR0x2b2lkICppbmRpY2VzLCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIsIEdMc2l6
ZWkgY291bnQsIEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAq
aW5kZXhJbmZvKTsKLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGNvbnN0
IGdsOjpTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwotCi0gICAgZ2w6OkVycm9yIGRyYXdBcnJheXMo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVp
IGluc3RhbmNlcywgYm9vbCB1c2VzUG9pbnRTaXplKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciwgY29uc3QgVHJhbnNsYXRlZElu
ZGV4RGF0YSAmaW5kZXhJbmZvLCBHTHNpemVpIGluc3RhbmNlcyk7Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgbWFya0FsbFN0YXRlRGlydHkoKTsKLQogICAgIC8vIGxvc3QgZGV2aWNlCiAgICAgYm9vbCB0
ZXN0RGV2aWNlTG9zdCgpIG92ZXJyaWRlOwogICAgIGJvb2wgdGVzdERldmljZVJlc2V0dGFibGUo
KSBvdmVycmlkZTsKIAotICAgIFZlbmRvcklEIGdldFZlbmRvcklkKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIEdVSUQgZ2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBE
ZXZpY2VJZGVudGlmaWVyIGdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3Jz
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2ZWRGcmFnbWVudFVu
aWZvcm1WZWN0b3JzKCkgY29uc3Q7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0UmVzZXJ2
ZWRWZXJ0ZXhVbmlmb3JtQnVmZmVycygpIGNvbnN0OwogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50
IGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtQnVmZmVycygpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBjb25zdDsKIAorICAgIGJvb2wgZ2V0U2hhcmVIYW5kbGVT
dXBwb3J0KCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkg
Y29uc3Q7CiAgICAgaW50IGdldE1pbm9yU2hhZGVyTW9kZWwoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBzdGQ6OnN0cmluZyBnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOwpAQCAt
MTY1LDMxICsxODAsMzggQEAKIAogICAgIC8vIFJlbmRlclRhcmdldCBjcmVhdGlvbgogICAgIHZp
cnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsIGludCBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgc2FtcGxlcywgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQp
OworICAgIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJUYXJnZXRDb3B5KFJlbmRlclRhcmdldEQzRCAq
c291cmNlLCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGcmFt
ZWJ1ZmZlciBjcmVhdGlvbgotICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1l
YnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CiAgICAg
RnJhbWVidWZmZXJJbXBsICpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6
OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwogCiAgICAgLy8gU2hhZGVyIGNyZWF0aW9uCi0gICAgdmly
dHVhbCBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKGNvbnN0IGdsOjpEYXRhICZkYXRhKTsK
LSAgICB2aXJ0dWFsIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSk7Ci0gICAg
dmlydHVhbCBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbSgpOworICAgIFNoYWRlckltcGwgKmNy
ZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKKyAgICBQ
cm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbTo6RGF0YSAmZGF0YSkg
b3ZlcnJpZGU7CiAKICAgICAvLyBTaGFkZXIgb3BlcmF0aW9ucwotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBT
aGFkZXJUeXBlIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFZhcnlpbmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVk
T3V0cHV0QnVmZmVycywgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN1dGFibGUpOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIGNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJITFNMLCBTaGFkZXJUeXBlIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6TGlua2VkVmFyeWluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZl
cnMsIGNvbnN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91
dEV4ZWN0dWFibGUpOwotICAgIHZpcnR1YWwgVW5pZm9ybVN0b3JhZ2VEM0QgKmNyZWF0ZVVuaWZv
cm1TdG9yYWdlKHNpemVfdCBzdG9yYWdlU2l6ZSk7CisgICAgZ2w6OkVycm9yIGxvYWRFeGVjdXRh
YmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJUeXBlIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFZh
cnlpbmc+ICZzdHJlYW1PdXRWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJsZSkgb3ZlcnJpZGU7CisgICAgZ2w6
OkVycm9yIGNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlckhMU0ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFZhcnlp
bmc+ICZzdHJlYW1PdXRWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4
ZWN0dWFibGUpIG92ZXJyaWRlOworICAgIFVuaWZvcm1TdG9yYWdlRDNEICpjcmVhdGVVbmlmb3Jt
U3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1hZ2Ugb3Bl
cmF0aW9ucwogICAgIHZpcnR1YWwgSW1hZ2VEM0QgKmNyZWF0ZUltYWdlKCk7CiAgICAgZ2w6OkVy
cm9yIGdlbmVyYXRlTWlwbWFwKEltYWdlRDNEICpkZXN0LCBJbWFnZUQzRCAqc291cmNlKSBvdmVy
cmlkZTsKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBzVXNpbmdEM0QoVGV4dHVyZVN0b3Jh
Z2UgKnN0b3JhZ2UsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdl
ICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgVGV4
dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hh
aW4pOworICAgIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKEVH
TEltYWdlRDNEICplZ2xJbWFnZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFn
ZSAqY3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVu
ZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgaW50IGxldmVscywgYm9v
bCBoaW50TGV2ZWxaZXJvT25seSk7CiAgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRl
VGV4dHVyZVN0b3JhZ2VDdWJlKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJn
ZXQsIGludCBzaXplLCBpbnQgbGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KTsKICAgICB2
aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3RvcmFnZTNEKEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0LCBHTHNpemVpIGRlcHRoLCBpbnQgbGV2ZWxzKTsKQEAgLTIwNyw3ICsyMjksNyBAQAogICAg
IHZpcnR1YWwgSW5kZXhCdWZmZXIgKmNyZWF0ZUluZGV4QnVmZmVyKCk7CiAKICAgICAvLyBWZXJ0
ZXggQXJyYXkgY3JlYXRpb24KLSAgICB2aXJ0dWFsIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVy
dGV4QXJyYXkoKTsKKyAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0
IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CiAKICAgICAvLyBRdWVyeSBh
bmQgRmVuY2UgY3JlYXRpb24KICAgICB2aXJ0dWFsIFF1ZXJ5SW1wbCAqY3JlYXRlUXVlcnkoR0xl
bnVtIHR5cGUpOwpAQCAtMjE3LDYgKzIzOSw5IEBACiAgICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNr
IGNyZWF0aW9uCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1GZWVkYmFja0ltcGwqIGNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKCk7CiAKKyAgICAvLyBTdHJlYW0gQ3JlYXRpb24KKyAgICBTdHJlYW1JbXBs
ICpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRl
OworCiAgICAgLy8gRDNEMTEtcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcwogICAgIElEM0QxMURl
dmljZSAqZ2V0RGV2aWNlKCkgeyByZXR1cm4gbURldmljZTsgfQogICAgIHZvaWQgKmdldEQzRERl
dmljZSgpIG92ZXJyaWRlOwpAQCAtMjI0LDYgKzI0OSw4IEBACiAgICAgSUQzRDExRGV2aWNlQ29u
dGV4dDEgKmdldERldmljZUNvbnRleHQxSWZTdXBwb3J0ZWQoKSB7IHJldHVybiBtRGV2aWNlQ29u
dGV4dDE7IH07CiAgICAgRFhHSUZhY3RvcnkgKmdldER4Z2lGYWN0b3J5KCkgeyByZXR1cm4gbUR4
Z2lGYWN0b3J5OyB9OwogCisgICAgUmVuZGVyU3RhdGVDYWNoZSAmZ2V0U3RhdGVDYWNoZSgpIHsg
cmV0dXJuIG1TdGF0ZUNhY2hlOyB9CisKICAgICBCbGl0MTEgKmdldEJsaXR0ZXIoKSB7IHJldHVy
biBtQmxpdDsgfQogICAgIENsZWFyMTEgKmdldENsZWFyZXIoKSB7IHJldHVybiBtQ2xlYXI7IH0K
IApAQCAtMjMyLDY1ICsyNTksMTQ0IEBACiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZmFzdENvcHlC
dWZmZXJUb1RleHR1cmUoY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgdW5zaWdu
ZWQgaW50IG9mZnNldCwgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0aW5hdGlv
bkZvcm1hdCwgR0xlbnVtIHNvdXJjZVBpeGVsc1R5cGUsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVh
KTsKIAotICAgIHZvaWQgdW5hcHBseVJlbmRlclRhcmdldHMoKTsKLSAgICB2b2lkIHNldE9uZVRp
bWVSZW5kZXJUYXJnZXQoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcmVuZGVyVGFyZ2V0Vmlldyk7
Ci0gICAgZ2w6OkVycm9yIHBhY2tQaXhlbHMoSUQzRDExVGV4dHVyZTJEICpyZWFkVGV4dHVyZSwg
Y29uc3QgUGFja1BpeGVsc1BhcmFtcyAmcGFyYW1zLCB1aW50OF90ICpwaXhlbHNPdXQpOworICAg
IHZvaWQgbWFya0FsbFN0YXRlRGlydHkoKTsKKyAgICBnbDo6RXJyb3IgcGFja1BpeGVscyhjb25z
dCBUZXh0dXJlSGVscGVyMTEgJnRleHR1cmVIZWxwZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUGFja1BpeGVsc1BhcmFtcyAmcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQ4X3QgKnBpeGVsc091dCk7CiAKICAgICBib29sIGdldExVSUQoTFVJRCAqYWRhcHRl
ckx1aWQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmVydGV4Q29udmVyc2lvblR5cGUg
Z2V0VmVydGV4Q29udmVyc2lvblR5cGUoY29uc3QgZ2w6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9y
bWF0KSBjb25zdDsKLSAgICB2aXJ0dWFsIEdMZW51bSBnZXRWZXJ0ZXhDb21wb25lbnRUeXBlKGNv
bnN0IGdsOjpWZXJ0ZXhGb3JtYXQgJnZlcnRleEZvcm1hdCkgY29uc3Q7CisgICAgVmVydGV4Q29u
dmVyc2lvblR5cGUgZ2V0VmVydGV4Q29udmVyc2lvblR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUg
dmVydGV4Rm9ybWF0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR0xlbnVtIGdldFZlcnRleENv
bXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBnZXRWZXJ0ZXhT
cGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgZ2w6
OkVycm9yIHJlYWRUZXh0dXJlRGF0YShJRDNEMTFUZXh0dXJlMkQgKnRleHR1cmUsIHVuc2lnbmVk
IGludCBzdWJSZXNvdXJjZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1h
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLCBHTHVpbnQgb3V0
cHV0UGl0Y2gsIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywgdWludDhfdCAqcGl4ZWxz
KTsKKyAgICBnbDo6RXJyb3IgcmVhZEZyb21BdHRhY2htZW50KGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgJnNyY0F0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG91dHB1dFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqcGl4ZWxzKTsKIAotICAgIHZvaWQgc2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNh
bXBsZXJUeXBlIHNoYWRlclR5cGUsIFVJTlQgcmVzb3VyY2VTbG90LCBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKnNydik7Ci0KICAgICBnbDo6RXJyb3IgYmxpdFJlbmRlcmJ1ZmZlclJlY3QoY29u
c3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJlY3QsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRyYXdSZWN0
LCBSZW5kZXJUYXJnZXREM0QgKnJlYWRSZW5kZXJUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqZHJhd1JlbmRlclRhcmdldCwgR0xlbnVt
IGZpbHRlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBjb2xvckJsaXQsIGJvb2wgZGVwdGhCbGl0LCBib29sIHN0
ZW5jaWxCbGl0KTsKIAogICAgIGJvb2wgaXNFUzNDYXBhYmxlKCkgY29uc3Q7Ci0gICAgRDNEX0ZF
QVRVUkVfTEVWRUwgZ2V0RmVhdHVyZUxldmVsKCkgY29uc3QgeyByZXR1cm4gbUZlYXR1cmVMZXZl
bDsgfTsKKyAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZ2V0UmVuZGVyZXIxMURldmlj
ZUNhcHMoKSB7IHJldHVybiBtUmVuZGVyZXIxMURldmljZUNhcHM7IH07CiAKICAgICBSZW5kZXJl
ckNsYXNzIGdldFJlbmRlcmVyQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSRU5ERVJF
Ul9EM0QxMTsgfQorICAgIElucHV0TGF5b3V0Q2FjaGUgKmdldElucHV0TGF5b3V0Q2FjaGUoKSB7
IHJldHVybiAmbUlucHV0TGF5b3V0Q2FjaGU7IH0KKyAgICBTdGF0ZU1hbmFnZXIxMSAqZ2V0U3Rh
dGVNYW5hZ2VyKCkgeyByZXR1cm4gJm1TdGF0ZU1hbmFnZXI7IH0KIAorICAgIHZvaWQgb25Td2Fw
KCk7CisgICAgdm9pZCBvbkJ1ZmZlckRlbGV0ZShjb25zdCBCdWZmZXIxMSAqZGVsZXRlZCk7Cisg
ICAgdm9pZCBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKKwor
ICAgIGVnbDo6RXJyb3IgZ2V0RUdMRGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92ZXJyaWRl
OworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIGNyZWF0ZUFubm90YXRvcigpIG92ZXJyaWRlOwor
ICAgIGdsOjpFcnJvciBjbGVhclRleHR1cmVzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwg
c2l6ZV90IHJhbmdlU3RhcnQsIHNpemVfdCByYW5nZUVuZCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIGFwcGx5U2hhZGVyc0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9k
ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmYml0bWFzaykgb3ZlcnJpZGU7CisKICAgcHJp
dmF0ZToKLSAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1
cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFdvcmthcm91bmRzIGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydFZlcnRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxl
bWVudHNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
cykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgZHJhd0xpbmVMb29wKEdMc2l6ZWkgY291bnQs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1
ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKTsKLSAgICBnbDo6RXJyb3IgZHJhd1RyaWFuZ2xlRmFu
KEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBt
aW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBpbnQgaW5zdGFuY2VzKTsK
KyAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBz
TWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9u
cyAqb3V0RXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMg
Km91dExpbWl0YXRpb25zKSBjb25zdCBvdmVycmlkZTsKIAorICAgIFdvcmthcm91bmRzRDNEIGdl
bmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkcmF3
TGluZUxvb3AoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleElu
Zm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zdGFuY2VzKTsKKyAgICBnbDo6
RXJyb3IgZHJhd1RyaWFuZ2xlRmFuKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbklu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlcyk7CisKICAg
ICBJRDNEMTFUZXh0dXJlMkQgKnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKElEM0QxMVRleHR1
cmUyRCAqc291cmNlLCB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2UpOwotICAgIHZvaWQgdW5zZXRD
b25mbGljdGluZ1NSVnMoZ2w6OlNhbXBsZXJUeXBlIHNoYWRlclR5cGUsIHVpbnRwdHJfdCByZXNv
dXJjZSwgY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KTsKIAorICAgIHZvaWQgcG9wdWxhdGVS
ZW5kZXJlcjExRGV2aWNlQ2FwcygpOworCisgICAgdm9pZCB1cGRhdGVIaXN0b2dyYW1zKCk7CisK
KyAgICBjbGFzcyBTYW1wbGVyTWV0YWRhdGFEM0QxMSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQorICAgIHsKKyAgICAgIHB1YmxpYzoKKyAgICAgICAgU2FtcGxlck1ldGFkYXRhRDNEMTEoKTsK
KyAgICAgICAgflNhbXBsZXJNZXRhZGF0YUQzRDExKCk7CisKKyAgICAgICAgc3RydWN0IGR4X1Nh
bXBsZXJNZXRhZGF0YQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgYmFzZUxldmVsOworICAg
ICAgICAgICAgaW50IGludGVybmFsRm9ybWF0Qml0czsKKyAgICAgICAgICAgIGludCB3cmFwTW9k
ZXM7CisgICAgICAgICAgICBpbnQgcGFkZGluZzsgIC8vIFRoaXMganVzdCBwYWRzIHRoZSBzdHJ1
Y3QgdG8gMTYgYnl0ZXMKKyAgICAgICAgfTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
ZHhfU2FtcGxlck1ldGFkYXRhKSA9PSAxNnUsCisgICAgICAgICAgICAgICAgICAgICAgIlNhbXBs
ZXIgbWV0YWRhdGEgc3RydWN0IG11c3QgYmUgb25lIDQtdmVjIC8gMTYgYnl0ZXMuIik7CisKKyAg
ICAgICAgdm9pZCBpbml0RGF0YSh1bnNpZ25lZCBpbnQgc2FtcGxlckNvdW50KTsKKyAgICAgICAg
dm9pZCB1cGRhdGUodW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCwgY29uc3QgZ2w6OlRleHR1cmUg
JnRleHR1cmUpOworCisgICAgICAgIGNvbnN0IGR4X1NhbXBsZXJNZXRhZGF0YSAqZ2V0RGF0YSgp
IGNvbnN0OworICAgICAgICBzaXplX3Qgc2l6ZUJ5dGVzKCkgY29uc3Q7CisgICAgICAgIGJvb2wg
aXNEaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1EaXJ0eTsgfQorICAgICAgICB2b2lkIG1hcmtDbGVh
bigpIHsgbURpcnR5ID0gZmFsc2U7IH0KKworICAgICAgcHJpdmF0ZToKKyAgICAgICAgc3RkOjp2
ZWN0b3I8ZHhfU2FtcGxlck1ldGFkYXRhPiBtU2FtcGxlck1ldGFkYXRhOworICAgICAgICBib29s
IG1EaXJ0eTsKKyAgICB9OworCisgICAgdGVtcGxhdGUgPGNsYXNzIFRTaGFkZXJDb25zdGFudHM+
CisgICAgdm9pZCBhcHBseURyaXZlckNvbnN0YW50c0lmTmVlZGVkKFRTaGFkZXJDb25zdGFudHMg
KmFwcGxpZWRDb25zdGFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTaGFkZXJDb25zdGFudHMgJmNvbnN0YW50cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2FtcGxlck1ldGFkYXRhRDNEMTEgKnNhbXBsZXJNZXRhZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNhbXBsZXJNZXRh
ZGF0YVJlZmVyZW5jZWRCeXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUQzRDExQnVmZmVyICpkcml2ZXJDb25zdGFudEJ1ZmZlcik7CisKICAgICBITU9EVUxFIG1E
M2QxMU1vZHVsZTsKICAgICBITU9EVUxFIG1EeGdpTW9kdWxlOworICAgIEhNT0RVTEUgbURDb21w
TW9kdWxlOwogICAgIHN0ZDo6dmVjdG9yPEQzRF9GRUFUVVJFX0xFVkVMPiBtQXZhaWxhYmxlRmVh
dHVyZUxldmVsczsKLSAgICBEM0RfRFJJVkVSX1RZUEUgbURyaXZlclR5cGU7CisgICAgRDNEX0RS
SVZFUl9UWVBFIG1SZXF1ZXN0ZWREcml2ZXJUeXBlOworICAgIGJvb2wgbUNyZWF0ZWRXaXRoRGV2
aWNlRVhUOworICAgIERldmljZUQzRCAqbUVHTERldmljZTsKIAogICAgIEhMU0xDb21waWxlciBt
Q29tcGlsZXI7CiAKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemVEM0REZXZpY2UoKTsKICAgICB2
b2lkIGluaXRpYWxpemVEZXZpY2UoKTsKICAgICB2b2lkIHJlbGVhc2VEZXZpY2VSZXNvdXJjZXMo
KTsKICAgICB2b2lkIHJlbGVhc2UoKTsKIAorICAgIGQzZDExOjpBTkdMRUQzRDExRGV2aWNlVHlw
ZSBnZXREZXZpY2VUeXBlKCkgY29uc3Q7CisKICAgICBSZW5kZXJTdGF0ZUNhY2hlIG1TdGF0ZUNh
Y2hlOwogCi0gICAgLy8gY3VycmVudCByZW5kZXIgdGFyZ2V0IHN0YXRlcwotICAgIHVpbnRwdHJf
dCBtQXBwbGllZFJUVnNbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlNdOwotICAg
IHVpbnRwdHJfdCBtQXBwbGllZERTVjsKLSAgICBib29sIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXpl
ZDsKLSAgICBib29sIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQ7Ci0KLSAgICBzdHJ1Y3Qg
UmVuZGVyVGFyZ2V0RGVzYwotICAgIHsKLSAgICAgICAgc2l6ZV90IHdpZHRoOwotICAgICAgICBz
aXplX3QgaGVpZ2h0OwotICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQ7Ci0gICAgfTsKLSAgICBS
ZW5kZXJUYXJnZXREZXNjIG1SZW5kZXJUYXJnZXREZXNjOwotCiAgICAgLy8gQ3VycmVudGx5IGFw
cGxpZWQgc2FtcGxlciBzdGF0ZXMKICAgICBzdGQ6OnZlY3Rvcjxib29sPiBtRm9yY2VTZXRWZXJ0
ZXhTYW1wbGVyU3RhdGVzOwogICAgIHN0ZDo6dmVjdG9yPGdsOjpTYW1wbGVyU3RhdGU+IG1DdXJW
ZXJ0ZXhTYW1wbGVyU3RhdGVzOwpAQCAtMjk4LDQzICs0MDQsOCBAQAogICAgIHN0ZDo6dmVjdG9y
PGJvb2w+IG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlczsKICAgICBzdGQ6OnZlY3RvcjxnbDo6
U2FtcGxlclN0YXRlPiBtQ3VyUGl4ZWxTYW1wbGVyU3RhdGVzOwogCi0gICAgLy8gQ3VycmVudGx5
IGFwcGxpZWQgdGV4dHVyZXMKLSAgICBzdHJ1Y3QgU1JWUmVjb3JkCi0gICAgewotICAgICAgICB1
aW50cHRyX3Qgc3J2OwotICAgICAgICB1aW50cHRyX3QgcmVzb3VyY2U7Ci0gICAgICAgIEQzRDEx
X1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0MgZGVzYzsKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9y
PFNSVlJlY29yZD4gbUN1clZlcnRleFNSVnM7Ci0gICAgc3RkOjp2ZWN0b3I8U1JWUmVjb3JkPiBt
Q3VyUGl4ZWxTUlZzOworICAgIFN0YXRlTWFuYWdlcjExIG1TdGF0ZU1hbmFnZXI7CiAKLSAgICAv
LyBDdXJyZW50bHkgYXBwbGllZCBibGVuZCBzdGF0ZQotICAgIGJvb2wgbUZvcmNlU2V0QmxlbmRT
dGF0ZTsKLSAgICBnbDo6QmxlbmRTdGF0ZSBtQ3VyQmxlbmRTdGF0ZTsKLSAgICBnbDo6Q29sb3JG
IG1DdXJCbGVuZENvbG9yOwotICAgIHVuc2lnbmVkIGludCBtQ3VyU2FtcGxlTWFzazsKLQotICAg
IC8vIEN1cnJlbnRseSBhcHBsaWVkIHJhc3Rlcml6ZXIgc3RhdGUKLSAgICBib29sIG1Gb3JjZVNl
dFJhc3RlclN0YXRlOwotICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgbUN1clJhc3RlclN0YXRlOwot
Ci0gICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgZGVwdGggc3RlbmNpbCBzdGF0ZQotICAgIGJvb2wg
bUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGU7Ci0gICAgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlIG1D
dXJEZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICBpbnQgbUN1clN0ZW5jaWxSZWY7Ci0gICAgaW50IG1D
dXJTdGVuY2lsQmFja1JlZjsKLQotICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHNjaXNzb3IgcmVj
dGFuZ2xlCi0gICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOwotICAgIGJvb2wgbVNjaXNzb3JFbmFi
bGVkOwotICAgIGdsOjpSZWN0YW5nbGUgbUN1clNjaXNzb3I7Ci0KLSAgICAvLyBDdXJyZW50bHkg
YXBwbGllZCB2aWV3cG9ydAotICAgIGJvb2wgbUZvcmNlU2V0Vmlld3BvcnQ7Ci0gICAgZ2w6OlJl
Y3RhbmdsZSBtQ3VyVmlld3BvcnQ7Ci0gICAgZmxvYXQgbUN1ck5lYXI7Ci0gICAgZmxvYXQgbUN1
ckZhcjsKLQogICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHByaW1pdGl2ZSB0b3BvbG9neQogICAg
IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWSBtQ3VycmVudFByaW1pdGl2ZVRvcG9sb2d5OwogCkBA
IC0zNDIsNiArNDEzLDcgQEAKICAgICBJRDNEMTFCdWZmZXIgKm1BcHBsaWVkSUI7CiAgICAgRFhH
SV9GT1JNQVQgbUFwcGxpZWRJQkZvcm1hdDsKICAgICB1bnNpZ25lZCBpbnQgbUFwcGxpZWRJQk9m
ZnNldDsKKyAgICBib29sIG1BcHBsaWVkSUJDaGFuZ2VkOwogCiAgICAgLy8gQ3VycmVudGx5IGFw
cGxpZWQgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMKICAgICBzaXplX3QgbUFwcGxpZWROdW1Y
RkJCaW5kaW5nczsKQEAgLTM1OSwxNyArNDMxLDE3IEBACiAgICAgdWludHB0cl90IG1BcHBsaWVk
R2VvbWV0cnlTaGFkZXI7CiAgICAgdWludHB0cl90IG1BcHBsaWVkUGl4ZWxTaGFkZXI7CiAKLSAg
ICBkeF9WZXJ0ZXhDb25zdGFudHMgbVZlcnRleENvbnN0YW50czsKLSAgICBkeF9WZXJ0ZXhDb25z
dGFudHMgbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHM7CisgICAgZHhfVmVydGV4Q29uc3RhbnRzMTEg
bUFwcGxpZWRWZXJ0ZXhDb25zdGFudHM7CiAgICAgSUQzRDExQnVmZmVyICptRHJpdmVyQ29uc3Rh
bnRCdWZmZXJWUzsKKyAgICBTYW1wbGVyTWV0YWRhdGFEM0QxMSBtU2FtcGxlck1ldGFkYXRhVlM7
CiAgICAgSUQzRDExQnVmZmVyICptQ3VycmVudFZlcnRleENvbnN0YW50QnVmZmVyOwogICAgIHVu
c2lnbmVkIGludCBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNbZ2w6OklNUExFTUVOVEFUSU9OX01B
WF9WRVJURVhfU0hBREVSX1VOSUZPUk1fQlVGRkVSU107CiAgICAgR0xpbnRwdHIgbUN1cnJlbnRD
b25zdGFudEJ1ZmZlclZTT2Zmc2V0W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURF
Ul9VTklGT1JNX0JVRkZFUlNdOwogICAgIEdMc2l6ZWlwdHIgbUN1cnJlbnRDb25zdGFudEJ1ZmZl
clZTU2l6ZVtnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZFUlRFWF9TSEFERVJfVU5JRk9STV9CVUZG
RVJTXTsKIAotICAgIGR4X1BpeGVsQ29uc3RhbnRzIG1QaXhlbENvbnN0YW50czsKLSAgICBkeF9Q
aXhlbENvbnN0YW50cyBtQXBwbGllZFBpeGVsQ29uc3RhbnRzOworICAgIGR4X1BpeGVsQ29uc3Rh
bnRzMTEgbUFwcGxpZWRQaXhlbENvbnN0YW50czsKICAgICBJRDNEMTFCdWZmZXIgKm1Ecml2ZXJD
b25zdGFudEJ1ZmZlclBTOworICAgIFNhbXBsZXJNZXRhZGF0YUQzRDExIG1TYW1wbGVyTWV0YWRh
dGFQUzsKICAgICBJRDNEMTFCdWZmZXIgKm1DdXJyZW50UGl4ZWxDb25zdGFudEJ1ZmZlcjsKICAg
ICB1bnNpZ25lZCBpbnQgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclBTW2dsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfRlJBR01FTlRfU0hBREVSX1VOSUZPUk1fQlVGRkVSU107CiAgICAgR0xpbnRwdHIgbUN1
cnJlbnRDb25zdGFudEJ1ZmZlclBTT2Zmc2V0W2dsOjpJTVBMRU1FTlRBVElPTl9NQVhfRlJBR01F
TlRfU0hBREVSX1VOSUZPUk1fQlVGRkVSU107CkBAIC0zOTgsMTEgKzQ3MCwxMyBAQAogICAgIC8v
IFN5bmMgcXVlcnkKICAgICBJRDNEMTFRdWVyeSAqbVN5bmNRdWVyeTsKIAotICAgIC8vIENvbnN0
YW50IGJ1ZmZlciBvZmZzZXQgc3VwcG9ydAotICAgIGJvb2wgbVN1cHBvcnRzQ29uc3RhbnRCdWZm
ZXJPZmZzZXRzOworICAgIC8vIENyZWF0ZWQgb2JqZWN0cyBzdGF0ZSB0cmFja2luZworICAgIHN0
ZDo6c2V0PGNvbnN0IEJ1ZmZlcjExKj4gbUFsaXZlQnVmZmVyczsKIAorICAgIGRvdWJsZSBtTGFz
dEhpc3RvZ3JhbVVwZGF0ZVRpbWU7CisKICAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2U7Ci0gICAg
RDNEX0ZFQVRVUkVfTEVWRUwgbUZlYXR1cmVMZXZlbDsKKyAgICBSZW5kZXJlcjExRGV2aWNlQ2Fw
cyBtUmVuZGVyZXIxMURldmljZUNhcHM7CiAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqbURldmlj
ZUNvbnRleHQ7CiAgICAgSUQzRDExRGV2aWNlQ29udGV4dDEgKm1EZXZpY2VDb250ZXh0MTsKICAg
ICBJRFhHSUFkYXB0ZXIgKm1EeGdpQWRhcHRlcjsKQEAgLTQxMSw3ICs0ODUsOSBAQAogICAgIERY
R0lGYWN0b3J5ICptRHhnaUZhY3Rvcnk7CiAgICAgSUQzRDExRGVidWcgKm1EZWJ1ZzsKIAotICAg
IERlYnVnQW5ub3RhdG9yMTEgbUFubm90YXRvcjsKKyAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1T
Y3JhdGNoSW5kZXhEYXRhQnVmZmVyOworCisgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtU3Vw
cG9ydHNTaGFyZUhhbmRsZXM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1NoYWRlckV4ZWN1dGFibGUxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAK
ICAgICBpZiAoaW5pdGlhbFNpemUgPiAwKQogICAgIHsKICAgICAgICAgRDNEMTFfQlVGRkVSX0RF
U0MgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbiA9IHswfTsKLSAgICAgICAgY29uc3RhbnRCdWZm
ZXJEZXNjcmlwdGlvbi5CeXRlV2lkdGggPSBpbml0aWFsU2l6ZTsKKyAgICAgICAgY29uc3RhbnRC
dWZmZXJEZXNjcmlwdGlvbi5CeXRlV2lkdGggICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pihpbml0aWFsU2l6ZSk7CiAgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24u
VXNhZ2UgPSBEM0QxMV9VU0FHRV9EWU5BTUlDOwogICAgICAgICBjb25zdGFudEJ1ZmZlckRlc2Ny
aXB0aW9uLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfQ09OU1RBTlRfQlVGRkVSOwogICAgICAgICBj
b25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLkNQVUFjY2Vzc0ZsYWdzID0gRDNEMTFfQ1BVX0FDQ0VT
U19XUklURTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5h
Z2VyMTEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMTM2IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3RhdGVNYW5hZ2VyMTEu
Y3BwOiBEZWZpbmVzIGEgY2xhc3MgZm9yIGNhY2hpbmcgRDNEMTEgc3RhdGUKKworI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oIgorCisjaW5jbHVk
ZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL1F1ZXJ5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5oIgorCituYW1lc3BhY2UgcngKK3sKKworbmFtZXNwYWNl
Cit7Citib29sIEltYWdlSW5kZXhDb25mbGljdHNXaXRoU1JWKGNvbnN0IGdsOjpJbWFnZUluZGV4
ICZpbmRleCwgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBkZXNjKQoreworICAgIHVu
c2lnbmVkIG1pcExldmVsICAgPSBpbmRleC5taXBJbmRleDsKKyAgICB1bnNpZ25lZCBsYXllcklu
ZGV4ID0gaW5kZXgubGF5ZXJJbmRleDsKKyAgICBHTGVudW0gdHlwZSAgICAgICAgID0gaW5kZXgu
dHlwZTsKKworICAgIHN3aXRjaCAoZGVzYy5WaWV3RGltZW5zaW9uKQorICAgIHsKKyAgICAgICAg
Y2FzZSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRDoKKyAgICAgICAgeworICAgICAgICAg
ICAgdW5zaWduZWQgbWF4U3J2TWlwID0gZGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzICsgZGVzYy5U
ZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwOworICAgICAgICAgICAgbWF4U3J2TWlwICAgICAgICAg
ID0gKGRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9PSAtMSkgPyBJTlRfTUFYIDogbWF4U3J2TWlw
OworCisgICAgICAgICAgICB1bnNpZ25lZCBtaXBNaW4gPSBpbmRleC5taXBJbmRleDsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1pcE1heCA9IChsYXllckluZGV4ID09IC0xKSA/IElOVF9NQVggOiBs
YXllckluZGV4OworCisgICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBHTF9URVhUVVJFXzJEICYm
CisgICAgICAgICAgICAgICAgICAgZ2w6OlJhbmdlVUkobWlwTWluLCBtaXBNYXgpCisgICAgICAg
ICAgICAgICAgICAgICAgIC5pbnRlcnNlY3RzKGdsOjpSYW5nZVVJKGRlc2MuVGV4dHVyZTJELk1v
c3REZXRhaWxlZE1pcCwgbWF4U3J2TWlwKSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEQz
RDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHVuc2lnbmVkIG1heFNydk1pcCA9CisgICAgICAgICAgICAgICAgZGVzYy5UZXh0dXJlMkRBcnJh
eS5NaXBMZXZlbHMgKyBkZXNjLlRleHR1cmUyREFycmF5Lk1vc3REZXRhaWxlZE1pcDsKKyAgICAg
ICAgICAgIG1heFNydk1pcCA9IChkZXNjLlRleHR1cmUyREFycmF5Lk1pcExldmVscyA9PSAtMSkg
PyBJTlRfTUFYIDogbWF4U3J2TWlwOworCisgICAgICAgICAgICB1bnNpZ25lZCBtYXhTbGljZSA9
IGRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlICsgZGVzYy5UZXh0dXJlMkRBcnJh
eS5BcnJheVNpemU7CisKKyAgICAgICAgICAgIC8vIEN1YmUgbWFwcyBjYW4gYmUgbWFwcGVkIHRv
IFRleHR1cmUyREFycmF5IFNSVnMKKyAgICAgICAgICAgIHJldHVybiAodHlwZSA9PSBHTF9URVhU
VVJFXzJEX0FSUkFZIHx8IGdsOjpJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHR5cGUpKSAmJgorICAg
ICAgICAgICAgICAgICAgIGRlc2MuVGV4dHVyZTJEQXJyYXkuTW9zdERldGFpbGVkTWlwIDw9IG1p
cExldmVsICYmIG1pcExldmVsIDwgbWF4U3J2TWlwICYmCisgICAgICAgICAgICAgICAgICAgZGVz
Yy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPD0gbGF5ZXJJbmRleCAmJiBsYXllcklu
ZGV4IDwgbWF4U2xpY2U7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEQzRDExX1NSVl9ESU1F
TlNJT05fVEVYVFVSRUNVQkU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heFNy
dk1pcCA9IGRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzICsgZGVzYy5UZXh0dXJlQ3ViZS5Nb3N0
RGV0YWlsZWRNaXA7CisgICAgICAgICAgICBtYXhTcnZNaXAgICAgICAgICAgPSAoZGVzYy5UZXh0
dXJlQ3ViZS5NaXBMZXZlbHMgPT0gLTEpID8gSU5UX01BWCA6IG1heFNydk1pcDsKKworICAgICAg
ICAgICAgcmV0dXJuIGdsOjpJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHR5cGUpICYmCisgICAgICAg
ICAgICAgICAgICAgZGVzYy5UZXh0dXJlQ3ViZS5Nb3N0RGV0YWlsZWRNaXAgPD0gbWlwTGV2ZWwg
JiYgbWlwTGV2ZWwgPCBtYXhTcnZNaXA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEQzRDEx
X1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEOgorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBtYXhTcnZNaXAgPSBkZXNjLlRleHR1cmUzRC5NaXBMZXZlbHMgKyBkZXNjLlRleHR1cmUzRC5N
b3N0RGV0YWlsZWRNaXA7CisgICAgICAgICAgICBtYXhTcnZNaXAgICAgICAgICAgPSAoZGVzYy5U
ZXh0dXJlM0QuTWlwTGV2ZWxzID09IC0xKSA/IElOVF9NQVggOiBtYXhTcnZNaXA7CisKKyAgICAg
ICAgICAgIHJldHVybiB0eXBlID09IEdMX1RFWFRVUkVfM0QgJiYgZGVzYy5UZXh0dXJlM0QuTW9z
dERldGFpbGVkTWlwIDw9IG1pcExldmVsICYmCisgICAgICAgICAgICAgICAgICAgbWlwTGV2ZWwg
PCBtYXhTcnZNaXA7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8v
IFdlIG9ubHkgaGFuZGxlIHRoZSBjYXNlcyBjb3JyZXNwb25kaW5nIHRvIHZhbGlkIGltYWdlIGlu
ZGV4ZXMKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKKy8vIERvZXMgKm5vdCogaW5jcmVtZW50IHRoZSByZXNvdXJjZSByZWYgY291
bnQhIQorSUQzRDExUmVzb3VyY2UgKkdldFZpZXdSZXNvdXJjZShJRDNEMTFWaWV3ICp2aWV3KQor
eworICAgIElEM0QxMVJlc291cmNlICpyZXNvdXJjZSA9IE5VTEw7CisgICAgQVNTRVJUKHZpZXcp
OworICAgIHZpZXctPkdldFJlc291cmNlKCZyZXNvdXJjZSk7CisgICAgcmVzb3VyY2UtPlJlbGVh
c2UoKTsKKyAgICByZXR1cm4gcmVzb3VyY2U7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKKwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6U1JWQ2FjaGU6OnVwZGF0ZShzaXplX3QgcmVzb3Vy
Y2VJbmRleCwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYpCit7CisgICAgQVNTRVJUKHJl
c291cmNlSW5kZXggPCBtQ3VycmVudFNSVnMuc2l6ZSgpKTsKKyAgICBTUlZSZWNvcmQgKnJlY29y
ZCA9ICZtQ3VycmVudFNSVnNbcmVzb3VyY2VJbmRleF07CisKKyAgICByZWNvcmQtPnNydiA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzcnYpOworICAgIGlmIChzcnYpCisgICAgeworICAg
ICAgICByZWNvcmQtPnJlc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KEdldFZp
ZXdSZXNvdXJjZShzcnYpKTsKKyAgICAgICAgc3J2LT5HZXREZXNjKCZyZWNvcmQtPmRlc2MpOwor
ICAgICAgICBtSGlnaGVzdFVzZWRTUlYgPSBzdGQ6Om1heChyZXNvdXJjZUluZGV4ICsgMSwgbUhp
Z2hlc3RVc2VkU1JWKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmVjb3JkLT5y
ZXNvdXJjZSA9IDA7CisKKyAgICAgICAgaWYgKHJlc291cmNlSW5kZXggKyAxID09IG1IaWdoZXN0
VXNlZFNSVikKKyAgICAgICAgeworICAgICAgICAgICAgZG8KKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAtLW1IaWdoZXN0VXNlZFNSVjsKKyAgICAgICAgICAgIH0gd2hpbGUgKG1IaWdo
ZXN0VXNlZFNSViA+IDAgJiYgbUN1cnJlbnRTUlZzW21IaWdoZXN0VXNlZFNSVl0uc3J2ID09IDAp
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFuYWdlcjExOjpTUlZDYWNoZTo6
Y2xlYXIoKQoreworICAgIGlmIChtQ3VycmVudFNSVnMuZW1wdHkoKSkKKyAgICB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtZW1zZXQoJm1DdXJyZW50U1JWc1swXSwgMCwgc2l6ZW9m
KFNSVlJlY29yZCkgKiBtQ3VycmVudFNSVnMuc2l6ZSgpKTsKKyAgICBtSGlnaGVzdFVzZWRTUlYg
PSAwOworfQorCitzdGF0aWMgY29uc3QgR0xlbnVtIFF1ZXJ5VHlwZXNbXSA9IHtHTF9BTllfU0FN
UExFU19QQVNTRUQsIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlU
SVZFU19XUklUVEVOLCBHTF9USU1FX0VMQVBTRURfRVhUfTsKKworU3RhdGVNYW5hZ2VyMTE6OlN0
YXRlTWFuYWdlcjExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQorICAgIDogbVJlbmRlcmVyKHJlbmRl
cmVyKSwKKyAgICAgIG1CbGVuZFN0YXRlSXNEaXJ0eShmYWxzZSksCisgICAgICBtQ3VyQmxlbmRD
b2xvcigwLCAwLCAwLCAwKSwKKyAgICAgIG1DdXJTYW1wbGVNYXNrKDApLAorICAgICAgbURlcHRo
U3RlbmNpbFN0YXRlSXNEaXJ0eShmYWxzZSksCisgICAgICBtQ3VyU3RlbmNpbFJlZigwKSwKKyAg
ICAgIG1DdXJTdGVuY2lsQmFja1JlZigwKSwKKyAgICAgIG1DdXJTdGVuY2lsU2l6ZSgwKSwKKyAg
ICAgIG1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5KGZhbHNlKSwKKyAgICAgIG1TY2lzc29yU3RhdGVJ
c0RpcnR5KGZhbHNlKSwKKyAgICAgIG1DdXJTY2lzc29yRW5hYmxlZChmYWxzZSksCisgICAgICBt
Q3VyU2Npc3NvclJlY3QoKSwKKyAgICAgIG1WaWV3cG9ydFN0YXRlSXNEaXJ0eShmYWxzZSksCisg
ICAgICBtQ3VyVmlld3BvcnQoKSwKKyAgICAgIG1DdXJOZWFyKDAuMGYpLAorICAgICAgbUN1ckZh
cigwLjBmKSwKKyAgICAgIG1WaWV3cG9ydEJvdW5kcygpLAorICAgICAgbVJlbmRlclRhcmdldElz
RGlydHkoZmFsc2UpLAorICAgICAgbURpcnR5Q3VycmVudFZhbHVlQXR0cmlicygpLAorICAgICAg
bUN1cnJlbnRWYWx1ZUF0dHJpYnMoKQoreworICAgIG1DdXJCbGVuZFN0YXRlLmJsZW5kICAgICAg
ICAgICAgICAgICA9IGZhbHNlOworICAgIG1DdXJCbGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICAg
ICAgICA9IEdMX09ORTsKKyAgICBtQ3VyQmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgICAgICAgICAg
PSBHTF9aRVJPOworICAgIG1DdXJCbGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgICAgICA9IEdM
X09ORTsKKyAgICBtQ3VyQmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSAgICAgICAgPSBHTF9aRVJP
OworICAgIG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgICAgICA9IEdMX0ZVTkNfQURE
OworICAgIG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSAgICA9IEdMX0ZVTkNfQURE
OworICAgIG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza1JlZCAgICAgICAgICA9IHRydWU7CisgICAg
bUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSAgICAgICAgID0gdHJ1ZTsKKyAgICBtQ3VyQmxl
bmRTdGF0ZS5jb2xvck1hc2tHcmVlbiAgICAgICAgPSB0cnVlOworICAgIG1DdXJCbGVuZFN0YXRl
LmNvbG9yTWFza0FscGhhICAgICAgICA9IHRydWU7CisgICAgbUN1ckJsZW5kU3RhdGUuc2FtcGxl
QWxwaGFUb0NvdmVyYWdlID0gZmFsc2U7CisgICAgbUN1ckJsZW5kU3RhdGUuZGl0aGVyICAgICAg
ICAgICAgICAgID0gZmFsc2U7CisKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhUZXN0
ICAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLmRlcHRo
RnVuYyAgICAgICAgICAgICAgICA9IEdMX0xFU1M7CisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRl
LmRlcHRoTWFzayAgICAgICAgICAgICAgICA9IHRydWU7CisgICAgbUN1ckRlcHRoU3RlbmNpbFN0
YXRlLnN0ZW5jaWxUZXN0ICAgICAgICAgICAgICA9IGZhbHNlOworICAgIG1DdXJEZXB0aFN0ZW5j
aWxTdGF0ZS5zdGVuY2lsTWFzayAgICAgICAgICAgICAgPSB0cnVlOworICAgIG1DdXJEZXB0aFN0
ZW5jaWxTdGF0ZS5zdGVuY2lsRmFpbCAgICAgICAgICAgICAgPSBHTF9LRUVQOworICAgIG1DdXJE
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFzc0RlcHRoRmFpbCAgICAgPSBHTF9LRUVQOworICAg
IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFzc0RlcHRoUGFzcyAgICAgPSBHTF9LRUVQ
OworICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICAgICAgICAgPSBz
dGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNp
bEJhY2tGdW5jICAgICAgICAgID0gR0xfQUxXQVlTOworICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0
ZS5zdGVuY2lsQmFja01hc2sgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsKKyAg
ICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tGYWlsICAgICAgICAgID0gR0xfS0VF
UDsKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsID0g
R0xfS0VFUDsKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhQ
YXNzID0gR0xfS0VFUDsKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tXcml0
ZW1hc2sgICAgID0gc3RhdGljX2Nhc3Q8R0x1aW50PigtMSk7CisKKyAgICBtQ3VyUmFzdGVyU3Rh
dGUucmFzdGVyaXplckRpc2NhcmQgICA9IGZhbHNlOworICAgIG1DdXJSYXN0ZXJTdGF0ZS5jdWxs
RmFjZSAgICAgICAgICAgID0gZmFsc2U7CisgICAgbUN1clJhc3RlclN0YXRlLmN1bGxNb2RlICAg
ICAgICAgICAgPSBHTF9CQUNLOworICAgIG1DdXJSYXN0ZXJTdGF0ZS5mcm9udEZhY2UgICAgICAg
ICAgID0gR0xfQ0NXOworICAgIG1DdXJSYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0RmlsbCAgID0g
ZmFsc2U7CisgICAgbUN1clJhc3RlclN0YXRlLnBvbHlnb25PZmZzZXRGYWN0b3IgPSAwLjBmOwor
ICAgIG1DdXJSYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0VW5pdHMgID0gMC4wZjsKKyAgICBtQ3Vy
UmFzdGVyU3RhdGUucG9pbnREcmF3TW9kZSAgICAgICA9IGZhbHNlOworICAgIG1DdXJSYXN0ZXJT
dGF0ZS5tdWx0aVNhbXBsZSAgICAgICAgID0gZmFsc2U7CisKKyAgICAvLyBJbml0aWFsbHkgYWxs
IGN1cnJlbnQgdmFsdWUgYXR0cmlidXRlcyBtdXN0IGJlIHVwZGF0ZWQgb24gZmlyc3QgdXNlLgor
ICAgIG1EaXJ0eUN1cnJlbnRWYWx1ZUF0dHJpYnMuZmxpcCgpOworfQorCitTdGF0ZU1hbmFnZXIx
MTo6flN0YXRlTWFuYWdlcjExKCkKK3sKK30KKwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6dXBkYXRl
U3RlbmNpbFNpemVJZkNoYW5nZWQoYm9vbCBkZXB0aFN0ZW5jaWxJbml0aWFsaXplZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz
dGVuY2lsU2l6ZSkKK3sKKyAgICBpZiAoIWRlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8IHN0ZW5j
aWxTaXplICE9IG1DdXJTdGVuY2lsU2l6ZSkKKyAgICB7CisgICAgICAgIG1DdXJTdGVuY2lsU2l6
ZSAgICAgICAgICAgPSBzdGVuY2lsU2l6ZTsKKyAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlSXNE
aXJ0eSA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFuYWdlcjExOjpzZXRWaWV3cG9y
dEJvdW5kcyhjb25zdCBpbnQgd2lkdGgsIGNvbnN0IGludCBoZWlnaHQpCit7CisgICAgaWYgKG1S
ZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZF
QVRVUkVfTEVWRUxfOV8zICYmCisgICAgICAgIChtVmlld3BvcnRCb3VuZHMud2lkdGggIT0gd2lk
dGggfHwgbVZpZXdwb3J0Qm91bmRzLmhlaWdodCAhPSBoZWlnaHQpKQorICAgIHsKKyAgICAgICAg
bVZpZXdwb3J0Qm91bmRzICAgICAgID0gZ2w6OkV4dGVudHMod2lkdGgsIGhlaWdodCwgMSk7Cisg
ICAgICAgIG1WaWV3cG9ydFN0YXRlSXNEaXJ0eSA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFN0
YXRlTWFuYWdlcjExOjp1cGRhdGVQcmVzZW50UGF0aChib29sIHByZXNlbnRQYXRoRmFzdEFjdGl2
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmZyYW1lYnVmZmVyQXR0YWNobWVudCkKK3sKKyAgICBjb25zdCBp
bnQgY29sb3JCdWZmZXJIZWlnaHQgPQorICAgICAgICBmcmFtZWJ1ZmZlckF0dGFjaG1lbnQgPyBm
cmFtZWJ1ZmZlckF0dGFjaG1lbnQtPmdldFNpemUoKS5oZWlnaHQgOiAwOworCisgICAgaWYgKCht
Q3VyUHJlc2VudFBhdGhGYXN0RW5hYmxlZCAhPSBwcmVzZW50UGF0aEZhc3RBY3RpdmUpIHx8Cisg
ICAgICAgIChwcmVzZW50UGF0aEZhc3RBY3RpdmUgJiYgKGNvbG9yQnVmZmVySGVpZ2h0ICE9IG1D
dXJQcmVzZW50UGF0aEZhc3RDb2xvckJ1ZmZlckhlaWdodCkpKQorICAgIHsKKyAgICAgICAgbUN1
clByZXNlbnRQYXRoRmFzdEVuYWJsZWQgICAgICAgICAgID0gcHJlc2VudFBhdGhGYXN0QWN0aXZl
OworICAgICAgICBtQ3VyUHJlc2VudFBhdGhGYXN0Q29sb3JCdWZmZXJIZWlnaHQgPSBjb2xvckJ1
ZmZlckhlaWdodDsKKyAgICAgICAgbVZpZXdwb3J0U3RhdGVJc0RpcnR5ICAgICAgICAgICAgICAg
ID0gdHJ1ZTsgIC8vIFZpZXdwb3J0IG1heSBuZWVkIHRvIGJlIHZlcnRpY2FsbHkgaW52ZXJ0ZWQK
KyAgICAgICAgbVNjaXNzb3JTdGF0ZUlzRGlydHkgICAgICAgICAgICAgICAgID0gdHJ1ZTsgIC8v
IFNjaXNzb3IgcmVjdCBtYXkgbmVlZCB0byBiZSB2ZXJ0aWNhbGx5IGludmVydGVkCisgICAgICAg
IG1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5ICAgICAgICAgICAgICA9IHRydWU7ICAvLyBDdWxsIE1v
ZGUgbWF5IG5lZWQgdG8gYmUgaW52ZXJ0ZWQKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2Vy
MTE6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRp
cnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIGlmICghZGlydHlCaXRzLmFueSgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoYXV0byBkaXJ0eUJpdCA6IGFuZ2xl
OjpJdGVyYXRlQml0U2V0KGRpcnR5Qml0cykpCisgICAgeworICAgICAgICBzd2l0Y2ggKGRpcnR5
Qml0KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0JM
RU5EX0VRVUFUSU9OUzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6
QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9IHN0YXRlLmdldEJsZW5kU3RhdGUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCICE9IG1DdXJCbGVuZFN0YXRl
LmJsZW5kRXF1YXRpb25SR0IgfHwKKyAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5ibGVu
ZEVxdWF0aW9uQWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUJsZW5kU3RhdGVJc0RpcnR5ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0ZVTkNT
OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZi
bGVuZFN0YXRlID0gc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpOworICAgICAgICAgICAgICAgIGlmIChi
bGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IG1DdXJCbGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdC
IHx8CisgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IG1DdXJC
bGVuZFN0YXRlLmRlc3RCbGVuZFJHQiB8fAorICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRl
LnNvdXJjZUJsZW5kQWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSB8fAor
ICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhICE9IG1DdXJCbGVu
ZFN0YXRlLmRlc3RCbGVuZEFscGhhKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgbUJsZW5kU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIGdsOjpT
dGF0ZTo6RElSVFlfQklUX0JMRU5EX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRl
LmdldEJsZW5kU3RhdGUoKS5ibGVuZCAhPSBtQ3VyQmxlbmRTdGF0ZS5ibGVuZCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1CbGVuZFN0YXRlSXNEaXJ0eSA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfRU5BQkxF
RDoKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZ2V0QmxlbmRTdGF0ZSgpLnNhbXBsZUFscGhh
VG9Db3ZlcmFnZSAhPQorICAgICAgICAgICAgICAgICAgICBtQ3VyQmxlbmRTdGF0ZS5zYW1wbGVB
bHBoYVRvQ292ZXJhZ2UpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBt
QmxlbmRTdGF0ZUlzRGlydHkgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfRElUSEVS
X0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldEJsZW5kU3RhdGUoKS5kaXRo
ZXIgIT0gbUN1ckJsZW5kU3RhdGUuZGl0aGVyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbUJsZW5kU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElS
VFlfQklUX0NPTE9SX01BU0s6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlKCk7CisgICAg
ICAgICAgICAgICAgaWYgKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkICE9IG1DdXJCbGVuZFN0YXRl
LmNvbG9yTWFza1JlZCB8fAorICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFz
a0dyZWVuICE9IG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuIHx8CisgICAgICAgICAgICAg
ICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSAhPSBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1h
c2tCbHVlIHx8CisgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEg
IT0gbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtQmxlbmRTdGF0ZUlzRGlydHkgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQkxFTkRfQ09MT1I6CisgICAgICAgICAgICAgICAg
aWYgKHN0YXRlLmdldEJsZW5kQ29sb3IoKSAhPSBtQ3VyQmxlbmRDb2xvcikKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1CbGVuZFN0YXRlSXNEaXJ0eSA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9ERVBUSF9NQVNLOgorICAgICAgICAgICAgICAgIGlmIChz
dGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpLmRlcHRoTWFzayAhPSBtQ3VyRGVwdGhTdGVuY2ls
U3RhdGUuZGVwdGhNYXNrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bURlcHRoU3RlbmNpbFN0YXRlSXNEaXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9ERVBUSF9URVNUX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldERlcHRo
U3RlbmNpbFN0YXRlKCkuZGVwdGhUZXN0ICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFRl
c3QpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2ls
U3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0RFUFRIX0ZVTkM6
CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCkuZGVwdGhG
dW5jICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEZ1bmMpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVJc0RpcnR5ID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfVEVTVF9FTkFCTEVEOgorICAgICAgICAg
ICAgICAgIGlmIChzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpLnN0ZW5jaWxUZXN0ICE9IG1D
dXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsVGVzdCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUlzRGlydHkgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6
OlN0YXRlOjpESVJUWV9CSVRfU1RFTkNJTF9GVU5DU19GUk9OVDoKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRlcHRoU3RlbmNpbCA9
IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKGRlcHRo
U3RlbmNpbC5zdGVuY2lsRnVuYyAhPSBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZ1bmMg
fHwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsLnN0ZW5jaWxNYXNrICE9IG1DdXJE
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayB8fAorICAgICAgICAgICAgICAgICAgICBzdGF0
ZS5nZXRTdGVuY2lsUmVmKCkgIT0gbUN1clN0ZW5jaWxSZWYpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfRlVOQ1NfQkFDSzoK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3Rh
dGUgJmRlcHRoU3RlbmNpbCA9IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGRlcHRoU3RlbmNpbC5zdGVuY2lsQmFja0Z1bmMgIT0gbUN1ckRlcHRoU3Rl
bmNpbFN0YXRlLnN0ZW5jaWxCYWNrRnVuYyB8fAorICAgICAgICAgICAgICAgICAgICBkZXB0aFN0
ZW5jaWwuc3RlbmNpbEJhY2tNYXNrICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFj
a01hc2sgfHwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0U3RlbmNpbEJhY2tSZWYoKSAh
PSBtQ3VyU3RlbmNpbEJhY2tSZWYpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBtRGVwdGhTdGVuY2lsU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNl
IGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0ZST05UOgorICAgICAgICAg
ICAgICAgIGlmIChzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpLnN0ZW5jaWxXcml0ZW1hc2sg
IT0KKyAgICAgICAgICAgICAgICAgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0
ZW1hc2spCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVu
Y2lsU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxf
V1JJVEVNQVNLX0JBQ0s6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldERlcHRoU3RlbmNp
bFN0YXRlKCkuc3RlbmNpbEJhY2tXcml0ZW1hc2sgIT0KKyAgICAgICAgICAgICAgICAgICAgbUN1
ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVtYXNrKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlSXNEaXJ0eSA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TVEVOQ0lMX09QU19GUk9OVDoKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRlcHRoU3Rl
bmNpbCA9IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYg
KGRlcHRoU3RlbmNpbC5zdGVuY2lsRmFpbCAhPSBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNp
bEZhaWwgfHwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsLnN0ZW5jaWxQYXNzRGVw
dGhGYWlsICE9CisgICAgICAgICAgICAgICAgICAgICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbFBhc3NEZXB0aEZhaWwgfHwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2ls
LnN0ZW5jaWxQYXNzRGVwdGhQYXNzICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFz
c0RlcHRoUGFzcykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EZXB0
aFN0ZW5jaWxTdGF0ZUlzRGlydHkgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRl
OjpESVJUWV9CSVRfU1RFTkNJTF9PUFNfQkFDSzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRlcHRoU3RlbmNpbCA9IHN0YXRlLmdl
dERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKGRlcHRoU3RlbmNpbC5z
dGVuY2lsQmFja0ZhaWwgIT0gbUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCB8
fAorICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWwuc3RlbmNpbEJhY2tQYXNzRGVwdGhG
YWlsICE9CisgICAgICAgICAgICAgICAgICAgICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3Rl
bmNpbEJhY2tQYXNzRGVwdGhGYWlsIHx8CisgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNp
bC5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1D
dXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVJc0RpcnR5ID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NVTExfRkFDRV9F
TkFCTEVEOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKS5j
dWxsRmFjZSAhPSBtQ3VyUmFzdGVyU3RhdGUuY3VsbEZhY2UpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtUmFzdGVyaXplclN0YXRlSXNEaXJ0eSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bDo6U3RhdGU6OkRJUlRZX0JJVF9DVUxMX0ZBQ0U6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRl
LmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmN1bGxNb2RlICE9IG1DdXJSYXN0ZXJTdGF0ZS5jdWxsTW9k
ZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1SYXN0ZXJpemVyU3Rh
dGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0ZST05UX0ZBQ0U6Cisg
ICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250RmFjZSAh
PSBtQ3VyUmFzdGVyU3RhdGUuZnJvbnRGYWNlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbVJhc3Rlcml6ZXJTdGF0ZUlzRGlydHkgPSB0cnVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRl
OjpESVJUWV9CSVRfUE9MWUdPTl9PRkZTRVRfRklMTF9FTkFCTEVEOgorICAgICAgICAgICAgICAg
IGlmIChzdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKS5wb2x5Z29uT2Zmc2V0RmlsbCAhPQorICAg
ICAgICAgICAgICAgICAgICBtQ3VyUmFzdGVyU3RhdGUucG9seWdvbk9mZnNldEZpbGwpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtUmFzdGVyaXplclN0YXRlSXNEaXJ0
eSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9QT0xZR09OX09GRlNFVDoKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0
ZXJTdGF0ZSA9IHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpOworICAgICAgICAgICAgICAgIGlm
IChyYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0RmFjdG9yICE9IG1DdXJSYXN0ZXJTdGF0ZS5wb2x5
Z29uT2Zmc2V0RmFjdG9yIHx8CisgICAgICAgICAgICAgICAgICAgIHJhc3RlclN0YXRlLnBvbHln
b25PZmZzZXRVbml0cyAhPSBtQ3VyUmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbVJhc3Rlcml6ZXJTdGF0ZUlzRGly
dHkgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUkFTVEVS
SVpFUl9ESVNDQVJEX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldFJhc3Rl
cml6ZXJTdGF0ZSgpLnJhc3Rlcml6ZXJEaXNjYXJkICE9CisgICAgICAgICAgICAgICAgICAgIG1D
dXJSYXN0ZXJTdGF0ZS5yYXN0ZXJpemVyRGlzY2FyZCkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIG1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpT
dGF0ZTo6RElSVFlfQklUX1NDSVNTT1I6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldFNj
aXNzb3IoKSAhPSBtQ3VyU2Npc3NvclJlY3QpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBtU2Npc3NvclN0YXRlSXNEaXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJ
UlRZX0JJVF9TQ0lTU09SX1RFU1RfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUu
aXNTY2lzc29yVGVzdEVuYWJsZWQoKSAhPSBtQ3VyU2Npc3NvckVuYWJsZWQpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBtU2Npc3NvclN0YXRlSXNEaXJ0eSA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIC8vIFJhc3Rlcml6ZXIgc3RhdGUgdXBkYXRlIG5lZWRzIG1D
dXJTY2lzc29yc0VuYWJsZWQgYW5kIHVwZGF0ZXMgd2hlbiBpdCBjaGFuZ2VzCisgICAgICAgICAg
ICAgICAgICAgIG1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6
RElSVFlfQklUX0RFUFRIX1JBTkdFOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXROZWFy
UGxhbmUoKSAhPSBtQ3VyTmVhciB8fCBzdGF0ZS5nZXRGYXJQbGFuZSgpICE9IG1DdXJGYXIpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtVmlld3BvcnRTdGF0ZUlzRGly
dHkgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfVklFV1BPUlQ6CisgICAgICAgICAg
ICAgICAgaWYgKHN0YXRlLmdldFZpZXdwb3J0KCkgIT0gbUN1clZpZXdwb3J0KQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbVZpZXdwb3J0U3RhdGVJc0RpcnR5ID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0RSQVdfRlJBTUVCVUZGRVJfQklORElORzoKKyAg
ICAgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0SXNEaXJ0eSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmIChkaXJ0
eUJpdCA+PSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAgJiYKKyAgICAgICAg
ICAgICAgICAgICAgZGlydHlCaXQgPCBnbDo6U3RhdGU6OkRJUlRZX0JJVF9DVVJSRU5UX1ZBTFVF
X01BWCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhdHRy
aWJJbmRleCA9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGRp
cnR5Qml0IC0gZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVOVF9WQUxVRV8wKTsKKyAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Q3VycmVudFZhbHVlQXR0cmlicy5zZXQoYXR0cmliSW5kZXgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KK30KKworZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzZXRCbGVuZFN0YXRlKGNvbnN0IGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbG9yRiAmYmxlbmRDb2xv
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
c2FtcGxlTWFzaykKK3sKKyAgICBpZiAoIW1CbGVuZFN0YXRlSXNEaXJ0eSAmJiBzYW1wbGVNYXNr
ID09IG1DdXJTYW1wbGVNYXNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgfQorCisgICAgSUQzRDExQmxlbmRTdGF0ZSAqZHhCbGVuZFN0YXRlID0g
bnVsbHB0cjsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPQorICAgICAgICBtUmVuZGVyZXItPmdldFN0
YXRlQ2FjaGUoKS5nZXRCbGVuZFN0YXRlKGZyYW1lYnVmZmVyLCBibGVuZFN0YXRlLCAmZHhCbGVu
ZFN0YXRlKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGVycm9yOworICAgIH0KKworICAgIEFTU0VSVChkeEJsZW5kU3RhdGUgIT0gbnVsbHB0cik7CisK
KyAgICBmbG9hdCBibGVuZENvbG9yc1s0XSA9IHswLjBmfTsKKyAgICBpZiAoYmxlbmRTdGF0ZS5z
b3VyY2VCbGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJgorICAgICAgICBibGVuZFN0YXRl
LnNvdXJjZUJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSAmJgorICAgICAg
ICBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJgorICAgICAg
ICBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAhPSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEp
CisgICAgeworICAgICAgICBibGVuZENvbG9yc1swXSA9IGJsZW5kQ29sb3IucmVkOworICAgICAg
ICBibGVuZENvbG9yc1sxXSA9IGJsZW5kQ29sb3IuZ3JlZW47CisgICAgICAgIGJsZW5kQ29sb3Jz
WzJdID0gYmxlbmRDb2xvci5ibHVlOworICAgICAgICBibGVuZENvbG9yc1szXSA9IGJsZW5kQ29s
b3IuYWxwaGE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGJsZW5kQ29sb3JzWzBd
ID0gYmxlbmRDb2xvci5hbHBoYTsKKyAgICAgICAgYmxlbmRDb2xvcnNbMV0gPSBibGVuZENvbG9y
LmFscGhhOworICAgICAgICBibGVuZENvbG9yc1syXSA9IGJsZW5kQ29sb3IuYWxwaGE7CisgICAg
ICAgIGJsZW5kQ29sb3JzWzNdID0gYmxlbmRDb2xvci5hbHBoYTsKKyAgICB9CisKKyAgICBtUmVu
ZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+T01TZXRCbGVuZFN0YXRlKGR4QmxlbmRTdGF0ZSwg
YmxlbmRDb2xvcnMsIHNhbXBsZU1hc2spOworCisgICAgbUN1ckJsZW5kU3RhdGUgPSBibGVuZFN0
YXRlOworICAgIG1DdXJCbGVuZENvbG9yID0gYmxlbmRDb2xvcjsKKyAgICBtQ3VyU2FtcGxlTWFz
ayA9IHNhbXBsZU1hc2s7CisKKyAgICBtQmxlbmRTdGF0ZUlzRGlydHkgPSBmYWxzZTsKKworICAg
IHJldHVybiBlcnJvcjsKK30KKworZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzZXREZXB0aFN0
ZW5jaWxTdGF0ZShjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpCit7CisgICAgY29uc3QgYXV0byAm
ZmJvID0gKmdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICAvLyBEaXNhYmxlIHRo
ZSBkZXB0aCB0ZXN0L2RlcHRoIHdyaXRlIGlmIHdlIGFyZSB1c2luZyBhIHN0ZW5jaWwtb25seSBh
dHRhY2htZW50LgorICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBBTkdMRSBlbXVsYXRlcyBzdGVuY2ls
LW9ubHkgd2l0aCBEMjRTOCBvbiBEM0QxMSAtIHdlIHNob3VsZCBuZWl0aGVyIHJlYWQKKyAgICAv
LyBub3Igd3JpdGUgdG8gdGhlIHVudXNlZCBkZXB0aCBwYXJ0IG9mIHRoaXMgZW11bGF0ZWQgdGV4
dHVyZS4KKyAgICBib29sIGRpc2FibGVEZXB0aCA9ICghZmJvLmhhc0RlcHRoKCkgJiYgZmJvLmhh
c1N0ZW5jaWwoKSk7CisKKyAgICAvLyBTaW1pbGFybHkgd2UgZGlzYWJsZSB0aGUgc3RlbmNpbCBw
b3J0aW9uIG9mIHRoZSBEUyBhdHRhY2htZW50IGlmIHRoZSBhcHAgb25seSBiaW5kcyBkZXB0aC4K
KyAgICBib29sIGRpc2FibGVTdGVuY2lsID0gKGZiby5oYXNEZXB0aCgpICYmICFmYm8uaGFzU3Rl
bmNpbCgpKTsKKworICAgIC8vIEN1ckRpc2FibGVEZXB0aC9TdGVuY2lsIGFyZSByZXNldCBhdXRv
bWF0aWNhbGx5IGFmdGVyIHdlIGNhbGwgZm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZS4KKyAgICBp
ZiAoIW1EZXB0aFN0ZW5jaWxTdGF0ZUlzRGlydHkgJiYgbUN1ckRpc2FibGVEZXB0aC52YWxpZCgp
ICYmCisgICAgICAgIGRpc2FibGVEZXB0aCA9PSBtQ3VyRGlzYWJsZURlcHRoLnZhbHVlKCkgJiYg
bUN1ckRpc2FibGVTdGVuY2lsLnZhbGlkKCkgJiYKKyAgICAgICAgZGlzYWJsZVN0ZW5jaWwgPT0g
bUN1ckRpc2FibGVTdGVuY2lsLnZhbHVlKCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICZkZXB0aFN0ZW5jaWxT
dGF0ZSA9IGdsU3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsKKyAgICBpbnQgc3RlbmNpbFJl
ZiAgICAgICAgICAgICAgICA9IGdsU3RhdGUuZ2V0U3RlbmNpbFJlZigpOworICAgIGludCBzdGVu
Y2lsQmFja1JlZiAgICAgICAgICAgID0gZ2xTdGF0ZS5nZXRTdGVuY2lsQmFja1JlZigpOworCisg
ICAgLy8gZ2V0IHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHN0ZW5jaWwgcmVmCisgICAgdW5zaWdu
ZWQgaW50IG1heFN0ZW5jaWwgPSAwOworICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2ls
VGVzdCAmJiBtQ3VyU3RlbmNpbFNpemUgPiAwKQorICAgIHsKKyAgICAgICAgbWF4U3RlbmNpbCA9
ICgxIDw8IG1DdXJTdGVuY2lsU2l6ZSkgLSAxOworICAgIH0KKyAgICBBU1NFUlQoKGRlcHRoU3Rl
bmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgJiBtYXhTdGVuY2lsKSA9PQorICAgICAgICAgICAo
ZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tXcml0ZW1hc2sgJiBtYXhTdGVuY2lsKSk7Cisg
ICAgQVNTRVJUKHN0ZW5jaWxSZWYgPT0gc3RlbmNpbEJhY2tSZWYpOworICAgIEFTU0VSVCgoZGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sgJiBtYXhTdGVuY2lsKSA9PQorICAgICAgICAgICAo
ZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWF4U3RlbmNpbCkpOworCisgICAg
SUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxMOworICAg
IGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldERlcHRoU3Rl
bmNpbFN0YXRlKAorICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZSwgZGlzYWJsZURlcHRoLCBkaXNh
YmxlU3RlbmNpbCwgJmR4RGVwdGhTdGVuY2lsU3RhdGUpOworICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgQVNTRVJUKGR4
RGVwdGhTdGVuY2lsU3RhdGUpOworCisgICAgLy8gTWF4IEQzRDExIHN0ZW5jaWwgcmVmZXJlbmNl
IHZhbHVlIGlzIDB4RkYsCisgICAgLy8gY29ycmVzcG9uZGluZyB0byB0aGUgbWF4IDggYml0cyBp
biBhIHN0ZW5jaWwgYnVmZmVyCisgICAgLy8gR0wgc3BlY2lmaWVzIHdlIHNob3VsZCBjbGFtcCB0
aGUgcmVmIHZhbHVlIHRvIHRoZQorICAgIC8vIG5lYXJlc3QgYml0IGRlcHRoIHdoZW4gZG9pbmcg
c3RlbmNpbCBvcHMKKyAgICBzdGF0aWNfYXNzZXJ0KEQzRDExX0RFRkFVTFRfU1RFTkNJTF9SRUFE
X01BU0sgPT0gMHhGRiwKKyAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHZhbHVlIG9mIEQz
RDExX0RFRkFVTFRfU1RFTkNJTF9SRUFEX01BU0siKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEQzRDEx
X0RFRkFVTFRfU1RFTkNJTF9XUklURV9NQVNLID09IDB4RkYsCisgICAgICAgICAgICAgICAgICAi
VW5leHBlY3RlZCB2YWx1ZSBvZiBEM0QxMV9ERUZBVUxUX1NURU5DSUxfV1JJVEVfTUFTSyIpOwor
ICAgIFVJTlQgZHhTdGVuY2lsUmVmID0gc3RkOjptaW48VUlOVD4oc3RlbmNpbFJlZiwgMHhGRnUp
OworCisgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk9NU2V0RGVwdGhTdGVuY2ls
U3RhdGUoZHhEZXB0aFN0ZW5jaWxTdGF0ZSwgZHhTdGVuY2lsUmVmKTsKKworICAgIG1DdXJEZXB0
aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RlbmNpbFN0YXRlOworICAgIG1DdXJTdGVuY2lsUmVmICAg
ICAgICA9IHN0ZW5jaWxSZWY7CisgICAgbUN1clN0ZW5jaWxCYWNrUmVmICAgID0gc3RlbmNpbEJh
Y2tSZWY7CisgICAgbUN1ckRpc2FibGVEZXB0aCAgICAgID0gZGlzYWJsZURlcHRoOworICAgIG1D
dXJEaXNhYmxlU3RlbmNpbCAgICA9IGRpc2FibGVTdGVuY2lsOworCisgICAgbURlcHRoU3RlbmNp
bFN0YXRlSXNEaXJ0eSA9IGZhbHNlOworCisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7Cit9CisKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c2V0UmFzdGVyaXplclN0YXRlKGNv
bnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3RlclN0YXRlKQoreworICAgIC8vIFRPRE86IFJl
bW92ZSBwb2ludERyYXdNb2RlIGFuZCBtdWx0aVNhbXBsZSBmcm9tIGdsOjpSYXN0ZXJpemVyU3Rh
dGUuCisgICAgaWYgKCFtUmFzdGVyaXplclN0YXRlSXNEaXJ0eSAmJiByYXN0ZXJTdGF0ZS5wb2lu
dERyYXdNb2RlID09IG1DdXJSYXN0ZXJTdGF0ZS5wb2ludERyYXdNb2RlICYmCisgICAgICAgIHJh
c3RlclN0YXRlLm11bHRpU2FtcGxlID09IG1DdXJSYXN0ZXJTdGF0ZS5tdWx0aVNhbXBsZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIH0KKworICAg
IElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSAqZHhSYXN0ZXJTdGF0ZSA9IG51bGxwdHI7CisgICAgZ2w6
OkVycm9yIGVycm9yKEdMX05PX0VSUk9SKTsKKworICAgIGlmIChtQ3VyUHJlc2VudFBhdGhGYXN0
RW5hYmxlZCkKKyAgICB7CisgICAgICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgbW9kaWZpZWRSYXN0
ZXJTdGF0ZSA9IHJhc3RlclN0YXRlOworCisgICAgICAgIC8vIElmIHByc2VlbnQgcGF0aCBmYXN0
IGlzIGFjdGl2ZSB0aGVuIHdlIG5lZWQgaW52ZXJ0IHRoZSBmcm9udCBmYWNlIHN0YXRlLgorICAg
ICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBib3RoIGdsX0Zyb250RmFjaW5nIGlzIGNvcnJlY3Qs
IGFuZCBmcm9udC9iYWNrIGN1bGxpbmcKKyAgICAgICAgLy8gaXMgcGVyZm9ybWVkIGNvcnJlY3Rs
eS4KKyAgICAgICAgaWYgKG1vZGlmaWVkUmFzdGVyU3RhdGUuZnJvbnRGYWNlID09IEdMX0NDVykK
KyAgICAgICAgeworICAgICAgICAgICAgbW9kaWZpZWRSYXN0ZXJTdGF0ZS5mcm9udEZhY2UgPSBH
TF9DVzsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChtb2RpZmllZFJhc3RlclN0YXRlLmZyb250RmFjZSA9PSBHTF9DVyk7CisgICAgICAgICAg
ICBtb2RpZmllZFJhc3RlclN0YXRlLmZyb250RmFjZSA9IEdMX0NDVzsKKyAgICAgICAgfQorCisg
ICAgICAgIGVycm9yID0gbVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0UmFzdGVyaXplclN0
YXRlKG1vZGlmaWVkUmFzdGVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJTY2lzc29yRW5hYmxlZCwgJmR4UmFz
dGVyU3RhdGUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBlcnJvciA9IG1SZW5k
ZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldFJhc3Rlcml6ZXJTdGF0ZShyYXN0ZXJTdGF0ZSwgbUN1
clNjaXNzb3JFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZHhSYXN0ZXJTdGF0ZSk7CisgICAgfQorCisgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisK
KyAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+UlNTZXRTdGF0ZShkeFJhc3RlclN0
YXRlKTsKKworICAgIG1DdXJSYXN0ZXJTdGF0ZSAgICAgICAgID0gcmFzdGVyU3RhdGU7CisgICAg
bVJhc3Rlcml6ZXJTdGF0ZUlzRGlydHkgPSBmYWxzZTsKKworICAgIHJldHVybiBlcnJvcjsKK30K
Kwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6c2V0U2Npc3NvclJlY3RhbmdsZShjb25zdCBnbDo6UmVj
dGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpCit7CisgICAgaWYgKCFtU2Npc3NvclN0YXRl
SXNEaXJ0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG1vZGlmaWVkU2Npc3NvclkgPSBz
Y2lzc29yLnk7CisgICAgaWYgKG1DdXJQcmVzZW50UGF0aEZhc3RFbmFibGVkKQorICAgIHsKKyAg
ICAgICAgbW9kaWZpZWRTY2lzc29yWSA9IG1DdXJQcmVzZW50UGF0aEZhc3RDb2xvckJ1ZmZlckhl
aWdodCAtIHNjaXNzb3IuaGVpZ2h0IC0gc2Npc3Nvci55OworICAgIH0KKworICAgIGlmIChlbmFi
bGVkKQorICAgIHsKKyAgICAgICAgRDNEMTFfUkVDVCByZWN0OworICAgICAgICByZWN0LmxlZnQg
ICA9IHN0ZDo6bWF4KDAsIHNjaXNzb3IueCk7CisgICAgICAgIHJlY3QudG9wICAgID0gc3RkOjpt
YXgoMCwgbW9kaWZpZWRTY2lzc29yWSk7CisgICAgICAgIHJlY3QucmlnaHQgID0gc2Npc3Nvci54
ICsgc3RkOjptYXgoMCwgc2Npc3Nvci53aWR0aCk7CisgICAgICAgIHJlY3QuYm90dG9tID0gbW9k
aWZpZWRTY2lzc29yWSArIHN0ZDo6bWF4KDAsIHNjaXNzb3IuaGVpZ2h0KTsKKworICAgICAgICBt
UmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+UlNTZXRTY2lzc29yUmVjdHMoMSwgJnJlY3Qp
OworICAgIH0KKworICAgIG1DdXJTY2lzc29yUmVjdCAgICAgID0gc2Npc3NvcjsKKyAgICBtQ3Vy
U2Npc3NvckVuYWJsZWQgICA9IGVuYWJsZWQ7CisgICAgbVNjaXNzb3JTdGF0ZUlzRGlydHkgPSBm
YWxzZTsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6c2V0Vmlld3BvcnQoY29uc3QgZ2w6OkNh
cHMgKmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICZ2aWV3cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
IHpOZWFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgekZhcikKK3sK
KyAgICBpZiAoIW1WaWV3cG9ydFN0YXRlSXNEaXJ0eSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZmxvYXQgYWN0dWFsWk5lYXIgPSBnbDo6Y2xhbXAwMSh6TmVhcik7CisgICAgZmxvYXQgYWN0dWFs
WkZhciAgPSBnbDo6Y2xhbXAwMSh6RmFyKTsKKworICAgIGludCBkeE1heFZpZXdwb3J0Qm91bmRz
WCA9IHN0YXRpY19jYXN0PGludD4oY2Fwcy0+bWF4Vmlld3BvcnRXaWR0aCk7CisgICAgaW50IGR4
TWF4Vmlld3BvcnRCb3VuZHNZID0gc3RhdGljX2Nhc3Q8aW50PihjYXBzLT5tYXhWaWV3cG9ydEhl
aWdodCk7CisgICAgaW50IGR4TWluVmlld3BvcnRCb3VuZHNYID0gLWR4TWF4Vmlld3BvcnRCb3Vu
ZHNYOworICAgIGludCBkeE1pblZpZXdwb3J0Qm91bmRzWSA9IC1keE1heFZpZXdwb3J0Qm91bmRz
WTsKKworICAgIGlmIChtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkuZmVhdHVy
ZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMykKKyAgICB7CisgICAgICAgIC8vIEZlYXR1
cmUgTGV2ZWwgOSB2aWV3cG9ydHMgc2hvdWxkbid0IGV4Y2VlZCB0aGUgZGltZW5zaW9ucyBvZiB0
aGUgcmVuZGVydGFyZ2V0LgorICAgICAgICBkeE1heFZpZXdwb3J0Qm91bmRzWCA9IHN0YXRpY19j
YXN0PGludD4obVZpZXdwb3J0Qm91bmRzLndpZHRoKTsKKyAgICAgICAgZHhNYXhWaWV3cG9ydEJv
dW5kc1kgPSBzdGF0aWNfY2FzdDxpbnQ+KG1WaWV3cG9ydEJvdW5kcy5oZWlnaHQpOworICAgICAg
ICBkeE1pblZpZXdwb3J0Qm91bmRzWCA9IDA7CisgICAgICAgIGR4TWluVmlld3BvcnRCb3VuZHNZ
ID0gMDsKKyAgICB9CisKKyAgICBpbnQgZHhWaWV3cG9ydFRvcExlZnRYID0gZ2w6OmNsYW1wKHZp
ZXdwb3J0LngsIGR4TWluVmlld3BvcnRCb3VuZHNYLCBkeE1heFZpZXdwb3J0Qm91bmRzWCk7Cisg
ICAgaW50IGR4Vmlld3BvcnRUb3BMZWZ0WSA9IGdsOjpjbGFtcCh2aWV3cG9ydC55LCBkeE1pblZp
ZXdwb3J0Qm91bmRzWSwgZHhNYXhWaWV3cG9ydEJvdW5kc1kpOworICAgIGludCBkeFZpZXdwb3J0
V2lkdGggICAgPSBnbDo6Y2xhbXAodmlld3BvcnQud2lkdGgsIDAsIGR4TWF4Vmlld3BvcnRCb3Vu
ZHNYIC0gZHhWaWV3cG9ydFRvcExlZnRYKTsKKyAgICBpbnQgZHhWaWV3cG9ydEhlaWdodCAgID0g
Z2w6OmNsYW1wKHZpZXdwb3J0LmhlaWdodCwgMCwgZHhNYXhWaWV3cG9ydEJvdW5kc1kgLSBkeFZp
ZXdwb3J0VG9wTGVmdFkpOworCisgICAgRDNEMTFfVklFV1BPUlQgZHhWaWV3cG9ydDsKKyAgICBk
eFZpZXdwb3J0LlRvcExlZnRYID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGR4Vmlld3BvcnRUb3BMZWZ0
WCk7CisKKyAgICBpZiAobUN1clByZXNlbnRQYXRoRmFzdEVuYWJsZWQpCisgICAgeworICAgICAg
ICAvLyBXaGVuIHByZXNlbnQgcGF0aCBmYXN0IGlzIGFjdGl2ZSBhbmQgd2UncmUgcmVuZGVyaW5n
IHRvIGZyYW1lYnVmZmVyIDAsIHdlIG11c3QgaW52ZXJ0CisgICAgICAgIC8vIHRoZSB2aWV3cG9y
dCBpbiBZLWF4aXMuCisgICAgICAgIC8vIE5PVEU6IFdlIGRlbGF5IHRoZSBpbnZlcnNpb24gdW50
aWwgcmlnaHQgYmVmb3JlIHRoZSBjYWxsIHRvIFJTU2V0Vmlld3BvcnRzLCBhbmQgbGVhdmUKKyAg
ICAgICAgLy8gZHhWaWV3cG9ydFRvcExlZnRZIHVuY2hhbmdlZC4gVGhpcyBhbGxvd3MgdXMgdG8g
Y2FsY3VsYXRlIHZpZXdBZGp1c3QgYmVsb3cgdXNpbmcgdGhlCisgICAgICAgIC8vIHVuYWx0ZXJl
ZCBkeFZpZXdwb3J0VG9wTGVmdFkgdmFsdWUuCisgICAgICAgIGR4Vmlld3BvcnQuVG9wTGVmdFkg
PSBzdGF0aWNfY2FzdDxmbG9hdD4obUN1clByZXNlbnRQYXRoRmFzdENvbG9yQnVmZmVySGVpZ2h0
IC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeFZp
ZXdwb3J0VG9wTGVmdFkgLSBkeFZpZXdwb3J0SGVpZ2h0KTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgZHhWaWV3cG9ydC5Ub3BMZWZ0WSA9IHN0YXRpY19jYXN0PGZsb2F0PihkeFZp
ZXdwb3J0VG9wTGVmdFkpOworICAgIH0KKworICAgIGR4Vmlld3BvcnQuV2lkdGggICAgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oZHhWaWV3cG9ydFdpZHRoKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCAg
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGR4Vmlld3BvcnRIZWlnaHQpOworICAgIGR4Vmlld3BvcnQu
TWluRGVwdGggPSBhY3R1YWxaTmVhcjsKKyAgICBkeFZpZXdwb3J0Lk1heERlcHRoID0gYWN0dWFs
WkZhcjsKKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5SU1NldFZpZXdwb3J0
cygxLCAmZHhWaWV3cG9ydCk7CisKKyAgICBtQ3VyVmlld3BvcnQgPSB2aWV3cG9ydDsKKyAgICBt
Q3VyTmVhciAgICAgPSBhY3R1YWxaTmVhcjsKKyAgICBtQ3VyRmFyICAgICAgPSBhY3R1YWxaRmFy
OworCisgICAgLy8gT24gRmVhdHVyZSBMZXZlbCA5XyosIHdlIG11c3QgZW11bGF0ZSBsYXJnZSBh
bmQvb3IgbmVnYXRpdmUgdmlld3BvcnRzIGluIHRoZSBzaGFkZXJzCisgICAgLy8gdXNpbmcgdmll
d0FkanVzdCAobGlrZSB0aGUgRDNEOSByZW5kZXJlcikuCisgICAgaWYgKG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRVUkVfTEVWRUxf
OV8zKQorICAgIHsKKyAgICAgICAgbVZlcnRleENvbnN0YW50cy52aWV3QWRqdXN0WzBdID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KCh2aWV3cG9ydC53aWR0aCAtIGR4Vmlld3BvcnRXaWR0aCkgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MiAqICh2aWV3cG9ydC54IC0gZHhWaWV3cG9ydFRvcExlZnRYKSkgLworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkeFZpZXdwb3J0LldpZHRoOworICAgICAgICBtVmVy
dGV4Q29uc3RhbnRzLnZpZXdBZGp1c3RbMV0gPSBzdGF0aWNfY2FzdDxmbG9hdD4oKHZpZXdwb3J0
LmhlaWdodCAtIGR4Vmlld3BvcnRIZWlnaHQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiAodmlld3BvcnQueSAtIGR4Vmll
d3BvcnRUb3BMZWZ0WSkpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHhWaWV3cG9ydC5IZWlnaHQ7CisgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMudmlld0FkanVz
dFsyXSA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aWV3cG9ydC53aWR0aCkgLyBkeFZpZXdwb3J0Lldp
ZHRoOworICAgICAgICBtVmVydGV4Q29uc3RhbnRzLnZpZXdBZGp1c3RbM10gPSBzdGF0aWNfY2Fz
dDxmbG9hdD4odmlld3BvcnQuaGVpZ2h0KSAvIGR4Vmlld3BvcnQuSGVpZ2h0OworICAgIH0KKwor
ICAgIG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzBdID0gdmlld3BvcnQud2lkdGggKiAwLjVm
OworICAgIG1QaXhlbENvbnN0YW50cy52aWV3Q29vcmRzWzFdID0gdmlld3BvcnQuaGVpZ2h0ICog
MC41ZjsKKyAgICBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1syXSA9IHZpZXdwb3J0LnggKyAo
dmlld3BvcnQud2lkdGggKiAwLjVmKTsKKyAgICBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1sz
XSA9IHZpZXdwb3J0LnkgKyAodmlld3BvcnQuaGVpZ2h0ICogMC41Zik7CisKKyAgICAvLyBJbnN0
YW5jZWQgcG9pbnRzcHJpdGUgZW11bGF0aW9uIHJlcXVpcmVzIFZpZXdDb29yZHMgdG8gYmUgZGVm
aW5lZCBpbiB0aGUKKyAgICAvLyB0aGUgdmVydGV4IHNoYWRlci4KKyAgICBtVmVydGV4Q29uc3Rh
bnRzLnZpZXdDb29yZHNbMF0gPSBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1swXTsKKyAgICBt
VmVydGV4Q29uc3RhbnRzLnZpZXdDb29yZHNbMV0gPSBtUGl4ZWxDb25zdGFudHMudmlld0Nvb3Jk
c1sxXTsKKyAgICBtVmVydGV4Q29uc3RhbnRzLnZpZXdDb29yZHNbMl0gPSBtUGl4ZWxDb25zdGFu
dHMudmlld0Nvb3Jkc1syXTsKKyAgICBtVmVydGV4Q29uc3RhbnRzLnZpZXdDb29yZHNbM10gPSBt
UGl4ZWxDb25zdGFudHMudmlld0Nvb3Jkc1szXTsKKworICAgIG1QaXhlbENvbnN0YW50cy5kZXB0
aEZyb250WzBdID0gKGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVhcikgKiAwLjVmOworICAgIG1QaXhl
bENvbnN0YW50cy5kZXB0aEZyb250WzFdID0gKGFjdHVhbFpOZWFyICsgYWN0dWFsWkZhcikgKiAw
LjVmOworCisgICAgbVZlcnRleENvbnN0YW50cy5kZXB0aFJhbmdlWzBdID0gYWN0dWFsWk5lYXI7
CisgICAgbVZlcnRleENvbnN0YW50cy5kZXB0aFJhbmdlWzFdID0gYWN0dWFsWkZhcjsKKyAgICBt
VmVydGV4Q29uc3RhbnRzLmRlcHRoUmFuZ2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0dWFsWk5lYXI7
CisKKyAgICBtUGl4ZWxDb25zdGFudHMuZGVwdGhSYW5nZVswXSA9IGFjdHVhbFpOZWFyOworICAg
IG1QaXhlbENvbnN0YW50cy5kZXB0aFJhbmdlWzFdID0gYWN0dWFsWkZhcjsKKyAgICBtUGl4ZWxD
b25zdGFudHMuZGVwdGhSYW5nZVsyXSA9IGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVhcjsKKworICAg
IG1QaXhlbENvbnN0YW50cy52aWV3U2NhbGVbMF0gPSAxLjBmOworICAgIG1QaXhlbENvbnN0YW50
cy52aWV3U2NhbGVbMV0gPSBtQ3VyUHJlc2VudFBhdGhGYXN0RW5hYmxlZCA/IDEuMGYgOiAtMS4w
ZjsKKyAgICBtUGl4ZWxDb25zdGFudHMudmlld1NjYWxlWzJdID0gMS4wZjsKKyAgICBtUGl4ZWxD
b25zdGFudHMudmlld1NjYWxlWzNdID0gMS4wZjsKKworICAgIG1WZXJ0ZXhDb25zdGFudHMudmll
d1NjYWxlWzBdID0gbVBpeGVsQ29uc3RhbnRzLnZpZXdTY2FsZVswXTsKKyAgICBtVmVydGV4Q29u
c3RhbnRzLnZpZXdTY2FsZVsxXSA9IG1QaXhlbENvbnN0YW50cy52aWV3U2NhbGVbMV07CisgICAg
bVZlcnRleENvbnN0YW50cy52aWV3U2NhbGVbMl0gPSBtUGl4ZWxDb25zdGFudHMudmlld1NjYWxl
WzJdOworICAgIG1WZXJ0ZXhDb25zdGFudHMudmlld1NjYWxlWzNdID0gbVBpeGVsQ29uc3RhbnRz
LnZpZXdTY2FsZVszXTsKKworICAgIG1WaWV3cG9ydFN0YXRlSXNEaXJ0eSA9IGZhbHNlOworfQor
Cit2b2lkIFN0YXRlTWFuYWdlcjExOjppbnZhbGlkYXRlUmVuZGVyVGFyZ2V0KCkKK3sKKyAgICBt
UmVuZGVyVGFyZ2V0SXNEaXJ0eSA9IHRydWU7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyMTE6Omlu
dmFsaWRhdGVCb3VuZFZpZXdzKCkKK3sKKyAgICBtQ3VyVmVydGV4U1JWcy5jbGVhcigpOworICAg
IG1DdXJQaXhlbFNSVnMuY2xlYXIoKTsKKworICAgIGludmFsaWRhdGVSZW5kZXJUYXJnZXQoKTsK
K30KKwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6aW52YWxpZGF0ZUV2ZXJ5dGhpbmcoKQoreworICAg
IG1CbGVuZFN0YXRlSXNEaXJ0eSAgICAgICAgPSB0cnVlOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0
ZUlzRGlydHkgPSB0cnVlOworICAgIG1SYXN0ZXJpemVyU3RhdGVJc0RpcnR5ICAgPSB0cnVlOwor
ICAgIG1TY2lzc29yU3RhdGVJc0RpcnR5ICAgICAgPSB0cnVlOworICAgIG1WaWV3cG9ydFN0YXRl
SXNEaXJ0eSAgICAgPSB0cnVlOworCisgICAgLy8gV2UgcmVzZXQgdGhlIGN1cnJlbnQgU1JWIGRh
dGEgYmVjYXVzZSBpdCBtaWdodCBub3QgYmUgaW4gc3luYyB3aXRoIEQzRCdzIHN0YXRlCisgICAg
Ly8gYW55bW9yZS4gRm9yIGV4YW1wbGUgd2hlbiBhIGN1cnJlbnRseSB1c2VkIFNSViBpcyB1c2Vk
IGFzIGFuIFJUViwgRDNEIHNpbGVudGx5CisgICAgLy8gcmVtb3ZlIGl0IGZyb20gaXRzIHN0YXRl
LgorICAgIGludmFsaWRhdGVCb3VuZFZpZXdzKCk7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyMTE6
OnNldE9uZVRpbWVSZW5kZXJUYXJnZXQoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcmVuZGVyVGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICpkZXB0aFN0ZW5jaWwpCit7CisgICAgbVJlbmRlcmVyLT5nZXREZXZp
Y2VDb250ZXh0KCktPk9NU2V0UmVuZGVyVGFyZ2V0cygxLCAmcmVuZGVyVGFyZ2V0LCBkZXB0aFN0
ZW5jaWwpOworICAgIG1SZW5kZXJUYXJnZXRJc0RpcnR5ID0gdHJ1ZTsKK30KKwordm9pZCBTdGF0
ZU1hbmFnZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldHMoCisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqPiAmcmVuZGVyVGFyZ2V0cywKKyAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICpkZXB0aFN0ZW5jaWwpCit7CisgICAgVUlOVCBjb3VudCAgICAgICAg
ICAgICAgID0gc3RhdGljX2Nhc3Q8VUlOVD4ocmVuZGVyVGFyZ2V0cy5zaXplKCkpOworICAgIGF1
dG8gcmVuZGVyVGFyZ2V0UG9pbnRlciA9ICghcmVuZGVyVGFyZ2V0cy5lbXB0eSgpID8gcmVuZGVy
VGFyZ2V0cy5kYXRhKCkgOiBudWxscHRyKTsKKworICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpLT5PTVNldFJlbmRlclRhcmdldHMoY291bnQsIHJlbmRlclRhcmdldFBvaW50ZXIsIGRl
cHRoU3RlbmNpbCk7CisgICAgbVJlbmRlclRhcmdldElzRGlydHkgPSB0cnVlOworfQorCit2b2lk
IFN0YXRlTWFuYWdlcjExOjpvbkJlZ2luUXVlcnkoUXVlcnkxMSAqcXVlcnkpCit7CisgICAgbUN1
cnJlbnRRdWVyaWVzLmluc2VydChxdWVyeSk7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyMTE6Om9u
RGVsZXRlUXVlcnlPYmplY3QoUXVlcnkxMSAqcXVlcnkpCit7CisgICAgbUN1cnJlbnRRdWVyaWVz
LmVyYXNlKHF1ZXJ5KTsKK30KKworZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpvbk1ha2VDdXJy
ZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKQoreworICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUg
PSAqZGF0YS5zdGF0ZTsKKworICAgIGZvciAoUXVlcnkxMSAqcXVlcnkgOiBtQ3VycmVudFF1ZXJp
ZXMpCisgICAgeworICAgICAgICBxdWVyeS0+cGF1c2UoKTsKKyAgICB9CisgICAgbUN1cnJlbnRR
dWVyaWVzLmNsZWFyKCk7CisKKyAgICBmb3IgKEdMZW51bSBxdWVyeVR5cGUgOiBRdWVyeVR5cGVz
KQorICAgIHsKKyAgICAgICAgZ2w6OlF1ZXJ5ICpxdWVyeSA9IHN0YXRlLmdldEFjdGl2ZVF1ZXJ5
KHF1ZXJ5VHlwZSk7CisgICAgICAgIGlmIChxdWVyeSAhPSBudWxscHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBRdWVyeTExICpxdWVyeTExID0gR2V0SW1wbEFzPFF1ZXJ5MTE+KHF1ZXJ5KTsK
KyAgICAgICAgICAgIHF1ZXJ5MTEtPnJlc3VtZSgpOworICAgICAgICAgICAgbUN1cnJlbnRRdWVy
aWVzLmluc2VydChxdWVyeTExKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworfQorCit2b2lkIFN0YXRlTWFuYWdlcjExOjpzZXRTaGFkZXJS
ZXNvdXJjZShnbDo6U2FtcGxlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVJTlQgcmVzb3VyY2VTbG90LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYpCit7Cisg
ICAgYXV0byAmY3VycmVudFNSVnMgPSAoc2hhZGVyVHlwZSA9PSBnbDo6U0FNUExFUl9WRVJURVgg
PyBtQ3VyVmVydGV4U1JWcyA6IG1DdXJQaXhlbFNSVnMpOworCisgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHNpemVfdD4ocmVzb3VyY2VTbG90KSA8IGN1cnJlbnRTUlZzLnNpemUoKSk7CisgICAgY29u
c3QgU1JWUmVjb3JkICZyZWNvcmQgPSBjdXJyZW50U1JWc1tyZXNvdXJjZVNsb3RdOworCisgICAg
aWYgKHJlY29yZC5zcnYgIT0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNydikpCisgICAg
eworICAgICAgICBhdXRvIGRldmljZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRl
eHQoKTsKKyAgICAgICAgaWYgKHNoYWRlclR5cGUgPT0gZ2w6OlNBTVBMRVJfVkVSVEVYKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZXZpY2VDb250ZXh0LT5WU1NldFNoYWRlclJlc291cmNlcyhy
ZXNvdXJjZVNsb3QsIDEsICZzcnYpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAg
eworICAgICAgICAgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXJSZXNvdXJjZXMocmVzb3Vy
Y2VTbG90LCAxLCAmc3J2KTsKKyAgICAgICAgfQorCisgICAgICAgIGN1cnJlbnRTUlZzLnVwZGF0
ZShyZXNvdXJjZVNsb3QsIHNydik7CisgICAgfQorfQorCitnbDo6RXJyb3IgU3RhdGVNYW5hZ2Vy
MTE6OmNsZWFyVGV4dHVyZXMoZ2w6OlNhbXBsZXJUeXBlIHNhbXBsZXJUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByYW5nZVN0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByYW5nZUVuZCkKK3sKKyAg
ICBpZiAocmFuZ2VTdGFydCA9PSByYW5nZUVuZCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIH0KKworICAgIGF1dG8gJmN1cnJlbnRTUlZzID0gKHNh
bXBsZXJUeXBlID09IGdsOjpTQU1QTEVSX1ZFUlRFWCA/IG1DdXJWZXJ0ZXhTUlZzIDogbUN1clBp
eGVsU1JWcyk7CisKKyAgICBnbDo6UmFuZ2U8c2l6ZV90PiBjbGVhclJhbmdlKHJhbmdlU3RhcnQs
IHJhbmdlU3RhcnQpOworICAgIGNsZWFyUmFuZ2UuZXh0ZW5kKHN0ZDo6bWluKHJhbmdlRW5kLCBj
dXJyZW50U1JWcy5oaWdoZXN0VXNlZCgpKSk7CisKKyAgICBpZiAoY2xlYXJSYW5nZS5lbXB0eSgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgfQor
CisgICAgYXV0byBkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7
CisgICAgaWYgKHNhbXBsZXJUeXBlID09IGdsOjpTQU1QTEVSX1ZFUlRFWCkKKyAgICB7CisgICAg
ICAgIGRldmljZUNvbnRleHQtPlZTU2V0U2hhZGVyUmVzb3VyY2VzKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4ocmFuZ2VTdGFydCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmFuZ2VFbmQgLSByYW5nZVN0YXJ0
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1OdWxsU1JW
c1swXSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGRldmljZUNvbnRleHQtPlBT
U2V0U2hhZGVyUmVzb3VyY2VzKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmFuZ2VTdGFydCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4ocmFuZ2VFbmQgLSByYW5nZVN0YXJ0KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1OdWxsU1JWc1swXSk7CisgICAgfQorCisgICAg
Zm9yIChzaXplX3Qgc2FtcGxlckluZGV4ID0gcmFuZ2VTdGFydDsgc2FtcGxlckluZGV4IDwgcmFu
Z2VFbmQ7ICsrc2FtcGxlckluZGV4KQorICAgIHsKKyAgICAgICAgY3VycmVudFNSVnMudXBkYXRl
KHNhbXBsZXJJbmRleCwgbnVsbHB0cik7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyMTE6OnVuc2V0Q29uZmxpY3RpbmdT
UlZzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnRwdHJfdCByZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkKK3sK
KyAgICBhdXRvICZjdXJyZW50U1JWcyA9IChzYW1wbGVyVHlwZSA9PSBnbDo6U0FNUExFUl9WRVJU
RVggPyBtQ3VyVmVydGV4U1JWcyA6IG1DdXJQaXhlbFNSVnMpOworCisgICAgZm9yIChzaXplX3Qg
cmVzb3VyY2VJbmRleCA9IDA7IHJlc291cmNlSW5kZXggPCBjdXJyZW50U1JWcy5zaXplKCk7ICsr
cmVzb3VyY2VJbmRleCkKKyAgICB7CisgICAgICAgIGF1dG8gJnJlY29yZCA9IGN1cnJlbnRTUlZz
W3Jlc291cmNlSW5kZXhdOworCisgICAgICAgIGlmIChyZWNvcmQuc3J2ICYmIHJlY29yZC5yZXNv
dXJjZSA9PSByZXNvdXJjZSAmJgorICAgICAgICAgICAgSW1hZ2VJbmRleENvbmZsaWN0c1dpdGhT
UlYoaW5kZXgsIHJlY29yZC5kZXNjKSkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0U2hhZGVy
UmVzb3VyY2Uoc2FtcGxlclR5cGUsIHN0YXRpY19jYXN0PFVJTlQ+KHJlc291cmNlSW5kZXgpLCBO
VUxMKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6dW5zZXRD
b25mbGljdGluZ0F0dGFjaG1lbnRSZXNvdXJjZXMoCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVy
QXR0YWNobWVudCAqYXR0YWNobWVudCwKKyAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2UpCit7
CisgICAgLy8gVW5iaW5kIHJlbmRlciB0YXJnZXQgU1JWcyBmcm9tIHRoZSBzaGFkZXIgaGVyZSB0
byBwcmV2ZW50IEQzRDExIHdhcm5pbmdzLgorICAgIGlmIChhdHRhY2htZW50LT50eXBlKCkgPT0g
R0xfVEVYVFVSRSkKKyAgICB7CisgICAgICAgIHVpbnRwdHJfdCByZXNvdXJjZVB0ciAgICAgICA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZXNvdXJjZSk7CisgICAgICAgIGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCA9IGF0dGFjaG1lbnQtPmdldFRleHR1cmVJbWFnZUluZGV4KCk7
CisgICAgICAgIC8vIFRoZSBpbmRleCBkb2Vzbid0IG5lZWQgdG8gYmUgY29ycmVjdGVkIGZvciB0
aGUgc21hbGwgY29tcHJlc3NlZCB0ZXh0dXJlIHdvcmthcm91bmQKKyAgICAgICAgLy8gYmVjYXVz
ZSBhIHJlbmRlcnRhcmdldCBpcyBuZXZlciBjb21wcmVzc2VkLgorICAgICAgICB1bnNldENvbmZs
aWN0aW5nU1JWcyhnbDo6U0FNUExFUl9WRVJURVgsIHJlc291cmNlUHRyLCBpbmRleCk7CisgICAg
ICAgIHVuc2V0Q29uZmxpY3RpbmdTUlZzKGdsOjpTQU1QTEVSX1BJWEVMLCByZXNvdXJjZVB0ciwg
aW5kZXgpOworICAgIH0KK30KKwordm9pZCBTdGF0ZU1hbmFnZXIxMTo6aW5pdGlhbGl6ZShjb25z
dCBnbDo6Q2FwcyAmY2FwcykKK3sKKyAgICBtQ3VyVmVydGV4U1JWcy5pbml0aWFsaXplKGNhcHMu
bWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIG1DdXJQaXhlbFNSVnMuaW5pdGlhbGl6
ZShjYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKKworICAgIC8vIEluaXRpYWxpemUgY2FjaGVk
IE5VTEwgU1JWIGJsb2NrCisgICAgbU51bGxTUlZzLnJlc2l6ZShjYXBzLm1heFRleHR1cmVJbWFn
ZVVuaXRzLCBudWxscHRyKTsKKworICAgIG1DdXJyZW50VmFsdWVBdHRyaWJzLnJlc2l6ZShjYXBz
Lm1heFZlcnRleEF0dHJpYnV0ZXMpOworfQorCit2b2lkIFN0YXRlTWFuYWdlcjExOjpkZWluaXRp
YWxpemUoKQoreworICAgIG1DdXJyZW50VmFsdWVBdHRyaWJzLmNsZWFyKCk7Cit9CisKK2dsOjpF
cnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIpCit7CisgICAgY29uc3QgRnJhbWVidWZmZXIxMSAqZnJhbWVidWZmZXIx
MSA9IEdldEltcGxBczxGcmFtZWJ1ZmZlcjExPihmcmFtZWJ1ZmZlcik7CisgICAgZ2w6OkVycm9y
IGVycm9yID0gZnJhbWVidWZmZXIxMS0+aW52YWxpZGF0ZVN3aXp6bGVzKCk7CisgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAg
ICBpZiAoZnJhbWVidWZmZXIxMS0+aGFzQW55SW50ZXJuYWxEaXJ0eUJpdCgpKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyLT5pZCgpICE9IDApOworICAgICAgICBmcmFtZWJ1ZmZl
cjExLT5zeW5jSW50ZXJuYWxTdGF0ZSgpOworICAgIH0KKworICAgIGlmICghbVJlbmRlclRhcmdl
dElzRGlydHkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICB9CisKKyAgICBtUmVuZGVyVGFyZ2V0SXNEaXJ0eSA9IGZhbHNlOworCisgICAgLy8gQ2hl
Y2sgZm9yIHplcm8tc2l6ZWQgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgd2hpY2ggaXMgYSBzcGVjaWFs
IGNhc2UuCisgICAgLy8gaW4gdGhpcyBjYXNlIHdlIGRvIG5vdCB3aXNoIHRvIG1vZGlmeSBhbnkg
c3RhdGUgYW5kIGp1c3Qgc2lsZW50bHkgcmV0dXJuIGZhbHNlLgorICAgIC8vIHRoaXMgd2lsbCBu
b3QgcmVwb3J0IGFueSBnbCBlcnJvciBidXQgd2lsbCBjYXVzZSB0aGUgY2FsbGluZyBtZXRob2Qg
dG8gcmV0dXJuLgorICAgIGlmIChmcmFtZWJ1ZmZlci0+aWQoKSA9PSAwKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFmcmFtZWJ1ZmZlcjExLT5oYXNBbnlJbnRlcm5hbERpcnR5Qml0KCkpOworICAg
ICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSA9IGZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9y
YnVmZmVyKCktPmdldFNpemUoKTsKKyAgICAgICAgaWYgKHNpemUud2lkdGggPT0gMCB8fCBzaXpl
LmhlaWdodCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEdldCB0aGUgY29sb3IgcmVu
ZGVyIGJ1ZmZlciBhbmQgc2VyaWFsCisgICAgLy8gQWxzbyBleHRyYWN0IHRoZSByZW5kZXIgdGFy
Z2V0IGRpbWVuc2lvbnMgYW5kIHZpZXcKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0V2lk
dGggID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gMDsKKyAgICBS
VFZBcnJheSBmcmFtZWJ1ZmZlclJUVnM7CisgICAgYm9vbCBtaXNzaW5nQ29sb3JSZW5kZXJUYXJn
ZXQgPSB0cnVlOworCisgICAgZnJhbWVidWZmZXJSVFZzLmZpbGwobnVsbHB0cik7CisKKyAgICBj
b25zdCBhdXRvICZjb2xvclJUcyA9IGZyYW1lYnVmZmVyMTEtPmdldENhY2hlZENvbG9yUmVuZGVy
VGFyZ2V0cygpOworCisgICAgc2l6ZV90IGFwcGxpZWRSVEluZGV4ICA9IDA7CisgICAgYm9vbCBz
a2lwSW5hY3RpdmVSVHMgICA9IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5tcnRQZXJmV29y
a2Fyb3VuZDsKKyAgICBjb25zdCBhdXRvICZkcmF3U3RhdGVzID0gZnJhbWVidWZmZXItPmdldERy
YXdCdWZmZXJTdGF0ZXMoKTsKKworICAgIGZvciAoc2l6ZV90IHJ0SW5kZXggPSAwOyBydEluZGV4
IDwgY29sb3JSVHMuc2l6ZSgpOyArK3J0SW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBSZW5k
ZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gY29sb3JSVHNbcnRJbmRleF07CisKKyAgICAgICAg
Ly8gU2tpcCBpbmFjdGl2ZSByZW5kZXJ0YXJnZXRzIGlmIHRoZSB3b3JrYXJvdW5kIGlzIGVuYWJs
ZWQuCisgICAgICAgIGlmIChza2lwSW5hY3RpdmVSVHMgJiYgKCFyZW5kZXJUYXJnZXQgfHwgZHJh
d1N0YXRlc1tydEluZGV4XSA9PSBHTF9OT05FKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVuZGVyVGFyZ2V0KQorICAgICAgICB7
CisgICAgICAgICAgICBmcmFtZWJ1ZmZlclJUVnNbYXBwbGllZFJUSW5kZXhdID0gcmVuZGVyVGFy
Z2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CisgICAgICAgICAgICBBU1NFUlQoZnJhbWVidWZm
ZXJSVFZzW2FwcGxpZWRSVEluZGV4XSk7CisKKyAgICAgICAgICAgIGlmIChtaXNzaW5nQ29sb3JS
ZW5kZXJUYXJnZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0
V2lkdGggICAgICAgID0gcmVuZGVyVGFyZ2V0LT5nZXRXaWR0aCgpOworICAgICAgICAgICAgICAg
IHJlbmRlclRhcmdldEhlaWdodCAgICAgICA9IHJlbmRlclRhcmdldC0+Z2V0SGVpZ2h0KCk7Cisg
ICAgICAgICAgICAgICAgbWlzc2luZ0NvbG9yUmVuZGVyVGFyZ2V0ID0gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBVbnNldCBjb25mbGljdGluZyB0ZXh0dXJl
IFNSVnMKKyAgICAgICAgY29uc3QgYXV0byAqYXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXRD
b2xvcmJ1ZmZlcihydEluZGV4KTsKKyAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnQpOworICAgICAg
ICB1bnNldENvbmZsaWN0aW5nQXR0YWNobWVudFJlc291cmNlcyhhdHRhY2htZW50LCByZW5kZXJU
YXJnZXQtPmdldFRleHR1cmUoKSk7CisKKyAgICAgICAgYXBwbGllZFJUSW5kZXgrKzsKKyAgICB9
CisKKyAgICAvLyBHZXQgdGhlIGRlcHRoIHN0ZW5jaWwgYnVmZmVycworICAgIElEM0QxMURlcHRo
U3RlbmNpbFZpZXcgKmZyYW1lYnVmZmVyRFNWID0gbnVsbHB0cjsKKyAgICBjb25zdCBhdXRvICpk
ZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgPSBmcmFtZWJ1ZmZlcjExLT5nZXRDYWNoZWREZXB0aFN0
ZW5jaWxSZW5kZXJUYXJnZXQoKTsKKyAgICBpZiAoZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgZnJhbWVidWZmZXJEU1YgPSBkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQt
PmdldERlcHRoU3RlbmNpbFZpZXcoKTsKKyAgICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyRFNWKTsK
KworICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyByZW5kZXIgYnVmZmVyLCB0aGUgd2lkdGgsIGhl
aWdodCBhbmQgZm9ybWF0IHZhbHVlcyBjb21lIGZyb20KKyAgICAgICAgLy8gdGhlIGRlcHRoIHN0
ZW5jaWwKKyAgICAgICAgaWYgKG1pc3NpbmdDb2xvclJlbmRlclRhcmdldCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmVuZGVyVGFyZ2V0V2lkdGggID0gZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
LT5nZXRXaWR0aCgpOworICAgICAgICAgICAgcmVuZGVyVGFyZ2V0SGVpZ2h0ID0gZGVwdGhTdGVu
Y2lsUmVuZGVyVGFyZ2V0LT5nZXRIZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFVu
c2V0IGNvbmZsaWN0aW5nIHRleHR1cmUgU1JWcworICAgICAgICBjb25zdCBhdXRvICphdHRhY2ht
ZW50ID0gZnJhbWVidWZmZXItPmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCk7CisgICAgICAgIEFT
U0VSVChhdHRhY2htZW50KTsKKyAgICAgICAgdW5zZXRDb25mbGljdGluZ0F0dGFjaG1lbnRSZXNv
dXJjZXMoYXR0YWNobWVudCwgZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXRUZXh0dXJlKCkp
OworICAgIH0KKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBjb250ZXh0IGNhcHM/CisgICAg
VUlOVCBkcmF3QnVmZmVycyA9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJDYXBzKCkubWF4RHJhd0J1
ZmZlcnM7CisKKyAgICAvLyBBcHBseSB0aGUgcmVuZGVyIHRhcmdldCBhbmQgZGVwdGggc3RlbmNp
bAorICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5PTVNldFJlbmRlclRhcmdldHMo
ZHJhd0J1ZmZlcnMsIGZyYW1lYnVmZmVyUlRWcy5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckRTVik7CisKKyAg
ICAvLyBUaGUgRDNEMTEgYmxlbmQgc3RhdGUgaXMgaGVhdmlseSBkZXBlbmRlbnQgb24gdGhlIGN1
cnJlbnQgcmVuZGVyIHRhcmdldC4KKyAgICBtQmxlbmRTdGF0ZUlzRGlydHkgPSB0cnVlOworCisg
ICAgc2V0Vmlld3BvcnRCb3VuZHMocmVuZGVyVGFyZ2V0V2lkdGgsIHJlbmRlclRhcmdldEhlaWdo
dCk7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9y
IFN0YXRlTWFuYWdlcjExOjp1cGRhdGVDdXJyZW50VmFsdWVBdHRyaWJzKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmVydGV4RGF0YU1hbmFnZXIgKnZlcnRleERhdGFNYW5hZ2VyKQoreworICAgIGNvbnN0
IGF1dG8gJmFjdGl2ZUF0dHJpYnNNYXNrICA9IHN0YXRlLmdldFByb2dyYW0oKS0+Z2V0QWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzaygpOworICAgIGNvbnN0IGF1dG8gJmRpcnR5QWN0aXZlQXR0cmli
cyA9IChhY3RpdmVBdHRyaWJzTWFzayAmIG1EaXJ0eUN1cnJlbnRWYWx1ZUF0dHJpYnMpOworICAg
IGNvbnN0IGF1dG8gJnZlcnRleEF0dHJpYnV0ZXMgICA9IHN0YXRlLmdldFZlcnRleEFycmF5KCkt
PmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKworICAgIGZvciAoYXV0byBhdHRyaWJJbmRleCA6IGFu
Z2xlOjpJdGVyYXRlQml0U2V0KGRpcnR5QWN0aXZlQXR0cmlicykpCisgICAgeworICAgICAgICBp
ZiAodmVydGV4QXR0cmlidXRlc1thdHRyaWJJbmRleF0uZW5hYmxlZCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIG1EaXJ0eUN1cnJlbnRWYWx1ZUF0dHJpYnMucmVzZXQoYXR0cmli
SW5kZXgpOworCisgICAgICAgIGNvbnN0IGF1dG8gJmN1cnJlbnRWYWx1ZSA9CisgICAgICAgICAg
ICBzdGF0ZS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihhdHRyaWJJbmRleCkpOworICAgICAgICBhdXRvIGN1cnJlbnRWYWx1ZUF0dHJpYiAgICAg
ICAgICAgICAgPSAmbUN1cnJlbnRWYWx1ZUF0dHJpYnNbYXR0cmliSW5kZXhdOworICAgICAgICBj
dXJyZW50VmFsdWVBdHRyaWItPmN1cnJlbnRWYWx1ZVR5cGUgPSBjdXJyZW50VmFsdWUuVHlwZTsK
KyAgICAgICAgY3VycmVudFZhbHVlQXR0cmliLT5hdHRyaWJ1dGUgICAgICAgID0gJnZlcnRleEF0
dHJpYnV0ZXNbYXR0cmliSW5kZXhdOworCisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHZlcnRl
eERhdGFNYW5hZ2VyLT5zdG9yZUN1cnJlbnRWYWx1ZShjdXJyZW50VmFsdWUsIGN1cnJlbnRWYWx1
ZUF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oYXR0cmliSW5kZXgpKTsKKyAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7Cit9CisKK2NvbnN0IHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZTdGF0ZU1h
bmFnZXIxMTo6Z2V0Q3VycmVudFZhbHVlQXR0cmlicygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1D
dXJyZW50VmFsdWVBdHRyaWJzOworfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVN
YW5hZ2VyMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1N0YXRlTWFuYWdlcjExLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDIgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBTdGF0ZU1hbmFnZXIxMS5oOiBEZWZpbmVzIGEgY2xhc3MgZm9yIGNhY2hp
bmcgRDNEMTEgc3RhdGUKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0QxMV9TVEFURU1B
TkFHRVIxMV9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0QxMV9TVEFURU1BTkFHRVIx
MV9IXworCisjaW5jbHVkZSA8YXJyYXk+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRl
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2Fj
aGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91
dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgiCisKK25hbWVz
cGFjZSByeAoreworCitzdHJ1Y3QgUmVuZGVyVGFyZ2V0RGVzYzsKK3N0cnVjdCBSZW5kZXJlcjEx
RGV2aWNlQ2FwczsKKworc3RydWN0IGR4X1ZlcnRleENvbnN0YW50czExCit7CisgICAgZmxvYXQg
ZGVwdGhSYW5nZVs0XTsKKyAgICBmbG9hdCB2aWV3QWRqdXN0WzRdOworICAgIGZsb2F0IHZpZXdD
b29yZHNbNF07CisgICAgZmxvYXQgdmlld1NjYWxlWzRdOworfTsKKworc3RydWN0IGR4X1BpeGVs
Q29uc3RhbnRzMTEKK3sKKyAgICBmbG9hdCBkZXB0aFJhbmdlWzRdOworICAgIGZsb2F0IHZpZXdD
b29yZHNbNF07CisgICAgZmxvYXQgZGVwdGhGcm9udFs0XTsKKyAgICBmbG9hdCB2aWV3U2NhbGVb
NF07Cit9OworCitjbGFzcyBTdGF0ZU1hbmFnZXIxMSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQoreworICBwdWJsaWM6CisgICAgU3RhdGVNYW5hZ2VyMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIp
OworICAgIH5TdGF0ZU1hbmFnZXIxMSgpOworCisgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IGds
OjpDYXBzICZjYXBzKTsKKyAgICB2b2lkIGRlaW5pdGlhbGl6ZSgpOworICAgIHZvaWQgc3luY1N0
YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZk
aXJ0eUJpdHMpOworCisgICAgZ2w6OkVycm9yIHNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Q29sb3JGICZibGVuZENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKTsKKworICAgIGdsOjpFcnJvciBzZXREZXB0aFN0ZW5j
aWxTdGF0ZShjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpOworCisgICAgZ2w6OkVycm9yIHNldFJh
c3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXJTdGF0ZSk7CisK
KyAgICB2b2lkIHNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3Nv
ciwgYm9vbCBlbmFibGVkKTsKKworICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgZ2w6OkNhcHMg
KmNhcHMsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVhciwgZmxvYXQg
ekZhcik7CisKKyAgICB2b2lkIHVwZGF0ZVByZXNlbnRQYXRoKGJvb2wgcHJlc2VudFBhdGhGYXN0
QWN0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVy
QXR0YWNobWVudCAqZnJhbWVidWZmZXJBdHRhY2htZW50KTsKKworICAgIGNvbnN0IGR4X1ZlcnRl
eENvbnN0YW50czExICZnZXRWZXJ0ZXhDb25zdGFudHMoKSBjb25zdCB7IHJldHVybiBtVmVydGV4
Q29uc3RhbnRzOyB9CisgICAgY29uc3QgZHhfUGl4ZWxDb25zdGFudHMxMSAmZ2V0UGl4ZWxDb25z
dGFudHMoKSBjb25zdCB7IHJldHVybiBtUGl4ZWxDb25zdGFudHM7IH0KKworICAgIHZvaWQgdXBk
YXRlU3RlbmNpbFNpemVJZkNoYW5nZWQoYm9vbCBkZXB0aFN0ZW5jaWxJbml0aWFsaXplZCwgdW5z
aWduZWQgaW50IHN0ZW5jaWxTaXplKTsKKworICAgIHZvaWQgc2V0U2hhZGVyUmVzb3VyY2UoZ2w6
OlNhbXBsZXJUeXBlIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5U
IHJlc291cmNlU2xvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJl
c291cmNlVmlldyAqc3J2KTsKKyAgICBnbDo6RXJyb3IgY2xlYXJUZXh0dXJlcyhnbDo6U2FtcGxl
clR5cGUgc2FtcGxlclR5cGUsIHNpemVfdCByYW5nZVN0YXJ0LCBzaXplX3QgcmFuZ2VFbmQpOwor
CisgICAgZ2w6OkVycm9yIHN5bmNGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZVJlbmRlclRhcmdldCgpOworICAgIHZv
aWQgaW52YWxpZGF0ZUJvdW5kVmlld3MoKTsKKyAgICB2b2lkIGludmFsaWRhdGVFdmVyeXRoaW5n
KCk7CisKKyAgICB2b2lkIHNldE9uZVRpbWVSZW5kZXJUYXJnZXQoSUQzRDExUmVuZGVyVGFyZ2V0
VmlldyAqcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNE
MTFEZXB0aFN0ZW5jaWxWaWV3ICpkZXB0aFN0ZW5jaWwpOworICAgIHZvaWQgc2V0T25lVGltZVJl
bmRlclRhcmdldHMoY29uc3Qgc3RkOjp2ZWN0b3I8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqPiAm
cmVuZGVyVGFyZ2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURl
cHRoU3RlbmNpbFZpZXcgKmRlcHRoU3RlbmNpbCk7CisKKyAgICB2b2lkIG9uQmVnaW5RdWVyeShR
dWVyeTExICpxdWVyeSk7CisgICAgdm9pZCBvbkRlbGV0ZVF1ZXJ5T2JqZWN0KFF1ZXJ5MTEgKnF1
ZXJ5KTsKKyAgICBnbDo6RXJyb3Igb25NYWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0YSk7
CisKKyAgICBnbDo6RXJyb3IgdXBkYXRlQ3VycmVudFZhbHVlQXR0cmlicyhjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRl
eERhdGFNYW5hZ2VyICp2ZXJ0ZXhEYXRhTWFuYWdlcik7CisKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxUcmFuc2xhdGVkQXR0cmlidXRlPiAmZ2V0Q3VycmVudFZhbHVlQXR0cmlicygpIGNvbnN0Owor
CisgIHByaXZhdGU6CisgICAgdm9pZCBzZXRWaWV3cG9ydEJvdW5kcyhjb25zdCBpbnQgd2lkdGgs
IGNvbnN0IGludCBoZWlnaHQpOworICAgIHZvaWQgdW5zZXRDb25mbGljdGluZ1NSVnMoZ2w6OlNh
bXBsZXJUeXBlIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50
cHRyX3QgcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
SW1hZ2VJbmRleCAmaW5kZXgpOworICAgIHZvaWQgdW5zZXRDb25mbGljdGluZ0F0dGFjaG1lbnRS
ZXNvdXJjZXMoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNl
ICpyZXNvdXJjZSk7CisKKyAgICBSZW5kZXJlcjExICptUmVuZGVyZXI7CisKKyAgICAvLyBCbGVu
ZCBTdGF0ZQorICAgIGJvb2wgbUJsZW5kU3RhdGVJc0RpcnR5OworICAgIC8vIFRPRE8oZGlhbngp
IHRlbXBvcmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIGRpcnR5IGJpdC4gb25jZSB3ZSBtb3ZlIGVu
b3VnaCBzdGF0ZXMgaW4sCisgICAgLy8gdHJ5IGV4cGVyaW1lbnRpbmcgd2l0aCBkaXJ0eSBiaXQg
aW5zdGVhZCBvZiBhIGJvb2wKKyAgICBnbDo6QmxlbmRTdGF0ZSBtQ3VyQmxlbmRTdGF0ZTsKKyAg
ICBnbDo6Q29sb3JGIG1DdXJCbGVuZENvbG9yOworICAgIHVuc2lnbmVkIGludCBtQ3VyU2FtcGxl
TWFzazsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIGRlcHRoIHN0ZW5jaWwgc3RhdGUKKyAg
ICBib29sIG1EZXB0aFN0ZW5jaWxTdGF0ZUlzRGlydHk7CisgICAgZ2w6OkRlcHRoU3RlbmNpbFN0
YXRlIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBpbnQgbUN1clN0ZW5jaWxSZWY7CisgICAg
aW50IG1DdXJTdGVuY2lsQmFja1JlZjsKKyAgICB1bnNpZ25lZCBpbnQgbUN1clN0ZW5jaWxTaXpl
OworICAgIE9wdGlvbmFsPGJvb2w+IG1DdXJEaXNhYmxlRGVwdGg7CisgICAgT3B0aW9uYWw8Ym9v
bD4gbUN1ckRpc2FibGVTdGVuY2lsOworCisgICAgLy8gQ3VycmVudGx5IGFwcGxpZWQgcmFzdGVy
aXplciBzdGF0ZQorICAgIGJvb2wgbVJhc3Rlcml6ZXJTdGF0ZUlzRGlydHk7CisgICAgZ2w6OlJh
c3Rlcml6ZXJTdGF0ZSBtQ3VyUmFzdGVyU3RhdGU7CisKKyAgICAvLyBDdXJyZW50bHkgYXBwbGll
ZCBzY2lzc29yIHJlY3RhbmdsZSBzdGF0ZQorICAgIGJvb2wgbVNjaXNzb3JTdGF0ZUlzRGlydHk7
CisgICAgYm9vbCBtQ3VyU2Npc3NvckVuYWJsZWQ7CisgICAgZ2w6OlJlY3RhbmdsZSBtQ3VyU2Np
c3NvclJlY3Q7CisKKyAgICAvLyBDdXJyZW50bHkgYXBwbGllZCB2aWV3cG9ydCBzdGF0ZQorICAg
IGJvb2wgbVZpZXdwb3J0U3RhdGVJc0RpcnR5OworICAgIGdsOjpSZWN0YW5nbGUgbUN1clZpZXdw
b3J0OworICAgIGZsb2F0IG1DdXJOZWFyOworICAgIGZsb2F0IG1DdXJGYXI7CisKKyAgICAvLyBU
aGluZ3MgbmVlZGVkIGluIHZpZXdwb3J0IHN0YXRlCisgICAgZHhfVmVydGV4Q29uc3RhbnRzMTEg
bVZlcnRleENvbnN0YW50czsKKyAgICBkeF9QaXhlbENvbnN0YW50czExIG1QaXhlbENvbnN0YW50
czsKKworICAgIC8vIFJlbmRlciB0YXJnZXQgdmFyaWFibGVzCisgICAgZ2w6OkV4dGVudHMgbVZp
ZXdwb3J0Qm91bmRzOworCisgICAgLy8gRUdMX0FOR0xFX2V4cGVyaW1lbnRhbF9wcmVzZW50X3Bh
dGggdmFyaWFibGVzCisgICAgYm9vbCBtQ3VyUHJlc2VudFBhdGhGYXN0RW5hYmxlZDsKKyAgICBp
bnQgbUN1clByZXNlbnRQYXRoRmFzdENvbG9yQnVmZmVySGVpZ2h0OworCisgICAgLy8gQ3VycmVu
dCBSZW5kZXJUYXJnZXQgc3RhdGUKKyAgICBib29sIG1SZW5kZXJUYXJnZXRJc0RpcnR5OworCisg
ICAgLy8gUXVlcmllcyB0aGF0IGFyZSBjdXJyZW50bHkgYWN0aXZlIGluIHRoaXMgc3RhdGUKKyAg
ICBzdGQ6OnNldDxRdWVyeTExICo+IG1DdXJyZW50UXVlcmllczsKKworICAgIC8vIEN1cnJlbnRs
eSBhcHBsaWVkIHRleHR1cmVzCisgICAgc3RydWN0IFNSVlJlY29yZAorICAgIHsKKyAgICAgICAg
dWludHB0cl90IHNydjsKKyAgICAgICAgdWludHB0cl90IHJlc291cmNlOworICAgICAgICBEM0Qx
MV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIGRlc2M7CisgICAgfTsKKworICAgIC8vIEEgY2Fj
aGUgb2YgY3VycmVudCBTUlZzIHRoYXQgYWxzbyB0cmFja3MgdGhlIGhpZ2hlc3QgJ3VzZWQnIChu
b24tTlVMTCkgU1JWCisgICAgLy8gV2UgbWlnaHQgd2FudCB0byBpbnZlc3RpZ2F0ZSBhIG1vcmUg
cm9idXN0IGFwcHJvYWNoIHRoYXQgaXMgYWxzbyBmYXN0IHdoZW4gdGhlcmUncworICAgIC8vIGEg
bGFyZ2UgZ2FwIGJldHdlZW4gdXNlZCBTUlZzIChlLmcuIGlmIFNSViAwIGFuZCA3IGFyZSBub24t
TlVMTCwgdGhpcyBhcHByb2FjaCB3aWxsCisgICAgLy8gd2FzdGUgdGltZSBvbiBTUlZzIDEtNi4p
CisgICAgY2xhc3MgU1JWQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKKyAgICB7CisgICAgICBw
dWJsaWM6CisgICAgICAgIFNSVkNhY2hlKCkgOiBtSGlnaGVzdFVzZWRTUlYoMCkge30KKworICAg
ICAgICB2b2lkIGluaXRpYWxpemUoc2l6ZV90IHNpemUpIHsgbUN1cnJlbnRTUlZzLnJlc2l6ZShz
aXplKTsgfQorCisgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbUN1cnJlbnRT
UlZzLnNpemUoKTsgfQorICAgICAgICBzaXplX3QgaGlnaGVzdFVzZWQoKSBjb25zdCB7IHJldHVy
biBtSGlnaGVzdFVzZWRTUlY7IH0KKworICAgICAgICBjb25zdCBTUlZSZWNvcmQgJm9wZXJhdG9y
W10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtQ3VycmVudFNSVnNbaW5kZXhdOyB9Cisg
ICAgICAgIHZvaWQgY2xlYXIoKTsKKyAgICAgICAgdm9pZCB1cGRhdGUoc2l6ZV90IHJlc291cmNl
SW5kZXgsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2KTsKKworICAgICAgcHJpdmF0ZToK
KyAgICAgICAgc3RkOjp2ZWN0b3I8U1JWUmVjb3JkPiBtQ3VycmVudFNSVnM7CisgICAgICAgIHNp
emVfdCBtSGlnaGVzdFVzZWRTUlY7CisgICAgfTsKKworICAgIFNSVkNhY2hlIG1DdXJWZXJ0ZXhT
UlZzOworICAgIFNSVkNhY2hlIG1DdXJQaXhlbFNSVnM7CisKKyAgICAvLyBBIGJsb2NrIG9mIE5V
TEwgcG9pbnRlcnMsIGNhY2hlZCBzbyB3ZSBkb24ndCByZS1hbGxvY2F0ZSBldmVyeSBkcmF3IGNh
bGwKKyAgICBzdGQ6OnZlY3RvcjxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gbU51bGxTUlZz
OworCisgICAgLy8gQ3VycmVudCB0cmFuc2xhdGlvbnMgb2YgIkN1cnJlbnQtVmFsdWUiIGRhdGEg
LSBvd25lZCBieSBDb250ZXh0LCBub3QgVmVydGV4QXJyYXkuCisgICAgZ2w6OkF0dHJpYnV0ZXNN
YXNrIG1EaXJ0eUN1cnJlbnRWYWx1ZUF0dHJpYnM7CisgICAgc3RkOjp2ZWN0b3I8VHJhbnNsYXRl
ZEF0dHJpYnV0ZT4gbUN1cnJlbnRWYWx1ZUF0dHJpYnM7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ug
cngKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEMTFfU1RBVEVNQU5BR0VSMTFfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvU3RyZWFtMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9TdHJlYW0xMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAorLy8KKy8v
IENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisKKy8vIFN0cmVhbTExLmNwcDogRGVmaW5lcyB0aGUgcng6OlN0cmVhbTExIGNsYXNz
IHdoaWNoIGltcGxlbWVudHMgcng6OlN0cmVhbUltcGwuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuaCIKKworI2luY2x1ZGUgImNvbW1vbi91dGlsaXRp
ZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxz
LmgiCisKK25hbWVzcGFjZSByeAoreworCitTdHJlYW0xMTo6U3RyZWFtMTEoUmVuZGVyZXIxMSAq
cmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQoreworICAgIFVOVVNFRF9WQVJJQUJMRSht
UmVuZGVyZXIpOworfQorCitTdHJlYW0xMTo6flN0cmVhbTExKCkKK3sKK30KK30gIC8vIG5hbWVz
cGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9TdHJlYW0xMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtMTEuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvU3RyZWFtMTEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gU3RyZWFtMTEuaDogRGVmaW5lcyB0aGUgcng6OlN0cmVhbTExIGNsYXNz
IHdoaWNoIGltcGxlbWVudHMgcng6OlN0cmVhbUltcGwuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVO
REVSRVJfRDNEX0QzRDExX1NUUkVBTTExX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0Qz
RF9EM0QxMV9TVFJFQU0xMV9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvU3RyZWFt
SW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKK2NsYXNzIFJlbmRlcmVyMTE7CisKK2NsYXNzIFN0
cmVhbTExIDogcHVibGljIFN0cmVhbUltcGwKK3sKKyAgcHVibGljOgorICAgIFN0cmVhbTExKFJl
bmRlcmVyMTEgKnJlbmRlcmVyKTsKKyAgICB+U3RyZWFtMTEoKSBvdmVycmlkZTsKKworICBwcml2
YXRlOgorICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngK
KworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfU1RSRUFNMTFfSF8KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3dhcENoYWluMTEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3BwCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw0NiArOCw3
OSBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjEx
LmgiCiAKKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKICNpbmNsdWRlICJsaWJBTkdMRS9mZWF0
dXJlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGls
czExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRv
dy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90
YWJsZS5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50Lmgi
CiAKIC8vIFByZWNvbXBpbGVkIHNoYWRlcnMKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDJkMTF2cy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiYTJkMTFwcy5oIgogCisjaWZkZWYgQU5HTEVfRU5BQkxFX0tFWUVETVVURVgKKyNkZWZpbmUg
QU5HTEVfUkVTT1VSQ0VfU0hBUkVfVFlQRSBEM0QxMV9SRVNPVVJDRV9NSVNDX1NIQVJFRF9LRVlF
RE1VVEVYCisjZWxzZQorI2RlZmluZSBBTkdMRV9SRVNPVVJDRV9TSEFSRV9UWVBFIEQzRDExX1JF
U09VUkNFX01JU0NfU0hBUkVECisjZW5kaWYKKwogbmFtZXNwYWNlIHJ4CiB7CiAKLVN3YXBDaGFp
bjExOjpTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwgTmF0aXZlV2luZG93IG5hdGl2
ZVdpbmRvdywgSEFORExFIHNoYXJlSGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQpCi0gICAgOiBt
UmVuZGVyZXIocmVuZGVyZXIpLAotICAgICAgU3dhcENoYWluRDNEKG5hdGl2ZVdpbmRvdywgc2hh
cmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KSwKK25hbWVzcGFj
ZQoreworYm9vbCBOZWVkc09mZnNjcmVlblRleHR1cmUoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIE5h
dGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csIEVHTGludCBvcmllbnRhdGlvbikKK3sKKyAgICAvLyBX
ZSBkb24ndCBuZWVkIGFuIG9mZnNjcmVlbiB0ZXh0dXJlIGlmIGVpdGhlciBvcmllbnRhdGlvbiA9
IElOVkVSVF9ZLAorICAgIC8vIG9yIHByZXNlbnQgcGF0aCBmYXN0IGlzIGVuYWJsZWQgYW5kIHdl
J3JlIG5vdCByZW5kZXJpbmcgb250byBhbiBvZmZzY3JlZW4gc3VyZmFjZS4KKyAgICByZXR1cm4g
b3JpZW50YXRpb24gIT0gRUdMX1NVUkZBQ0VfT1JJRU5UQVRJT05fSU5WRVJUX1lfQU5HTEUgJiYK
KyAgICAgICAgICAgIShyZW5kZXJlci0+cHJlc2VudFBhdGhGYXN0RW5hYmxlZCgpICYmIG5hdGl2
ZVdpbmRvdy5nZXROYXRpdmVXaW5kb3coKSk7Cit9Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CisKK1N3YXBDaGFpbjExOjpTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBOYXRpdmVXaW5kb3cgbmF0aXZlV2luZG93LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
IG9yaWVudGF0aW9uKQorICAgIDogU3dhcENoYWluRDNEKG5hdGl2ZVdpbmRvdywgc2hhcmVIYW5k
bGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0KSwKKyAgICAgIG1SZW5kZXJl
cihyZW5kZXJlciksCisgICAgICBtV2lkdGgoLTEpLAorICAgICAgbUhlaWdodCgtMSksCisgICAg
ICBtT3JpZW50YXRpb24ob3JpZW50YXRpb24pLAorICAgICAgbUFwcENyZWF0ZWRTaGFyZUhhbmRs
ZShtU2hhcmVIYW5kbGUgIT0gbnVsbHB0ciksCisgICAgICBtU3dhcEludGVydmFsKDApLAorICAg
ICAgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdChmYWxzZSksCisgICAgICBtRmlyc3RTd2FwKHRy
dWUpLAorICAgICAgbVN3YXBDaGFpbihudWxscHRyKSwKKyAgICAgIG1Td2FwQ2hhaW4xKG51bGxw
dHIpLAorICAgICAgbUtleWVkTXV0ZXgobnVsbHB0ciksCisgICAgICBtQmFja0J1ZmZlclRleHR1
cmUobnVsbHB0ciksCisgICAgICBtQmFja0J1ZmZlclJUVmlldyhudWxscHRyKSwKKyAgICAgIG1C
YWNrQnVmZmVyU1JWaWV3KG51bGxwdHIpLAorICAgICAgbU5lZWRzT2Zmc2NyZWVuVGV4dHVyZShO
ZWVkc09mZnNjcmVlblRleHR1cmUocmVuZGVyZXIsIG5hdGl2ZVdpbmRvdywgb3JpZW50YXRpb24p
KSwKKyAgICAgIG1PZmZzY3JlZW5UZXh0dXJlKG51bGxwdHIpLAorICAgICAgbU9mZnNjcmVlblJU
VmlldyhudWxscHRyKSwKKyAgICAgIG1PZmZzY3JlZW5TUlZpZXcobnVsbHB0ciksCisgICAgICBt
RGVwdGhTdGVuY2lsVGV4dHVyZShudWxscHRyKSwKKyAgICAgIG1EZXB0aFN0ZW5jaWxEU1ZpZXco
bnVsbHB0ciksCisgICAgICBtRGVwdGhTdGVuY2lsU1JWaWV3KG51bGxwdHIpLAorICAgICAgbVF1
YWRWQihudWxscHRyKSwKKyAgICAgIG1QYXNzVGhyb3VnaFNhbXBsZXIobnVsbHB0ciksCisgICAg
ICBtUGFzc1Rocm91Z2hJTChudWxscHRyKSwKKyAgICAgIG1QYXNzVGhyb3VnaFZTKG51bGxwdHIp
LAorICAgICAgbVBhc3NUaHJvdWdoUFMobnVsbHB0ciksCisgICAgICBtUGFzc1Rocm91Z2hSUyhu
dWxscHRyKSwKICAgICAgIG1Db2xvclJlbmRlclRhcmdldCh0aGlzLCByZW5kZXJlciwgZmFsc2Up
LAogICAgICAgbURlcHRoU3RlbmNpbFJlbmRlclRhcmdldCh0aGlzLCByZW5kZXJlciwgdHJ1ZSkK
IHsKLSAgICBtU3dhcENoYWluID0gTlVMTDsKLSAgICBtQmFja0J1ZmZlclRleHR1cmUgPSBOVUxM
OwotICAgIG1CYWNrQnVmZmVyUlRWaWV3ID0gTlVMTDsKLSAgICBtT2Zmc2NyZWVuVGV4dHVyZSA9
IE5VTEw7Ci0gICAgbU9mZnNjcmVlblJUVmlldyA9IE5VTEw7Ci0gICAgbU9mZnNjcmVlblNSVmll
dyA9IE5VTEw7Ci0gICAgbURlcHRoU3RlbmNpbFRleHR1cmUgPSBOVUxMOwotICAgIG1EZXB0aFN0
ZW5jaWxEU1ZpZXcgPSBOVUxMOwotICAgIG1EZXB0aFN0ZW5jaWxTUlZpZXcgPSBOVUxMOwotICAg
IG1RdWFkVkIgPSBOVUxMOwotICAgIG1QYXNzVGhyb3VnaFNhbXBsZXIgPSBOVUxMOwotICAgIG1Q
YXNzVGhyb3VnaElMID0gTlVMTDsKLSAgICBtUGFzc1Rocm91Z2hWUyA9IE5VTEw7Ci0gICAgbVBh
c3NUaHJvdWdoUFMgPSBOVUxMOwotICAgIG1XaWR0aCA9IC0xOwotICAgIG1IZWlnaHQgPSAtMTsK
LSAgICBtU3dhcEludGVydmFsID0gMDsKLSAgICBtQXBwQ3JlYXRlZFNoYXJlSGFuZGxlID0gbVNo
YXJlSGFuZGxlICE9IE5VTEw7Ci0gICAgbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdCA9IGZhbHNl
OworICAgIC8vIFNhbml0eSBjaGVjayB0aGF0IGlmIHByZXNlbnQgcGF0aCBmYXN0IGlzIGFjdGl2
ZSB0aGVuIHdlJ3JlIHVzaW5nIHRoZSBkZWZhdWx0IG9yaWVudGF0aW9uCisgICAgQVNTRVJUKCFt
UmVuZGVyZXItPnByZXNlbnRQYXRoRmFzdEVuYWJsZWQoKSB8fCBvcmllbnRhdGlvbiA9PSAwKTsK
IH0KIAogU3dhcENoYWluMTE6On5Td2FwQ2hhaW4xMSgpCkBAIC01Nyw5ICs5MCwxMiBAQAogCiB2
b2lkIFN3YXBDaGFpbjExOjpyZWxlYXNlKCkKIHsKKyAgICBTYWZlUmVsZWFzZShtU3dhcENoYWlu
MSk7CiAgICAgU2FmZVJlbGVhc2UobVN3YXBDaGFpbik7CisgICAgU2FmZVJlbGVhc2UobUtleWVk
TXV0ZXgpOwogICAgIFNhZmVSZWxlYXNlKG1CYWNrQnVmZmVyVGV4dHVyZSk7CiAgICAgU2FmZVJl
bGVhc2UobUJhY2tCdWZmZXJSVFZpZXcpOworICAgIFNhZmVSZWxlYXNlKG1CYWNrQnVmZmVyU1JW
aWV3KTsKICAgICBTYWZlUmVsZWFzZShtT2Zmc2NyZWVuVGV4dHVyZSk7CiAgICAgU2FmZVJlbGVh
c2UobU9mZnNjcmVlblJUVmlldyk7CiAgICAgU2FmZVJlbGVhc2UobU9mZnNjcmVlblNSVmlldyk7
CkBAIC03MSw2ICsxMDcsNyBAQAogICAgIFNhZmVSZWxlYXNlKG1QYXNzVGhyb3VnaElMKTsKICAg
ICBTYWZlUmVsZWFzZShtUGFzc1Rocm91Z2hWUyk7CiAgICAgU2FmZVJlbGVhc2UobVBhc3NUaHJv
dWdoUFMpOworICAgIFNhZmVSZWxlYXNlKG1QYXNzVGhyb3VnaFJTKTsKIAogICAgIGlmICghbUFw
cENyZWF0ZWRTaGFyZUhhbmRsZSkKICAgICB7CkBAIC03OCwxOCArMTE1LDQ3IEBACiAgICAgfQog
fQogCi12b2lkIFN3YXBDaGFpbjExOjpyZWxlYXNlT2Zmc2NyZWVuVGV4dHVyZSgpCit2b2lkIFN3
YXBDaGFpbjExOjpyZWxlYXNlT2Zmc2NyZWVuQ29sb3JCdWZmZXIoKQogewogICAgIFNhZmVSZWxl
YXNlKG1PZmZzY3JlZW5UZXh0dXJlKTsKICAgICBTYWZlUmVsZWFzZShtT2Zmc2NyZWVuUlRWaWV3
KTsKICAgICBTYWZlUmVsZWFzZShtT2Zmc2NyZWVuU1JWaWV3KTsKK30KKwordm9pZCBTd2FwQ2hh
aW4xMTo6cmVsZWFzZU9mZnNjcmVlbkRlcHRoQnVmZmVyKCkKK3sKICAgICBTYWZlUmVsZWFzZSht
RGVwdGhTdGVuY2lsVGV4dHVyZSk7CiAgICAgU2FmZVJlbGVhc2UobURlcHRoU3RlbmNpbERTVmll
dyk7CiAgICAgU2FmZVJlbGVhc2UobURlcHRoU3RlbmNpbFNSVmlldyk7CiB9CiAKLUVHTGludCBT
d2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5UZXh0dXJlKGludCBiYWNrYnVmZmVyV2lkdGgsIGlu
dCBiYWNrYnVmZmVySGVpZ2h0KQorRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9mZnNjcmVlbkJ1
ZmZlcnMoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCiB7CisgICAg
aWYgKG1OZWVkc09mZnNjcmVlblRleHR1cmUpCisgICAgeworICAgICAgICBFR0xpbnQgcmVzdWx0
ID0gcmVzZXRPZmZzY3JlZW5Db2xvckJ1ZmZlcihiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJI
ZWlnaHQpOworICAgICAgICBpZiAocmVzdWx0ICE9IEVHTF9TVUNDRVNTKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgRUdMaW50
IHJlc3VsdCA9IHJlc2V0T2Zmc2NyZWVuRGVwdGhCdWZmZXIoYmFja2J1ZmZlcldpZHRoLCBiYWNr
YnVmZmVySGVpZ2h0KTsKKyAgICBpZiAocmVzdWx0ICE9IEVHTF9TVUNDRVNTKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBtV2lkdGggID0gYmFja2J1ZmZlcldp
ZHRoOworICAgIG1IZWlnaHQgPSBiYWNrYnVmZmVySGVpZ2h0OworCisgICAgcmV0dXJuIEVHTF9T
VUNDRVNTOworfQorCitFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuQ29sb3JCdWZm
ZXIoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCit7CisgICAgQVNT
RVJUKG1OZWVkc09mZnNjcmVlblRleHR1cmUpOworCiAgICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5n
bGUiLCAiU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuVGV4dHVyZSIpOwogICAgIElEM0QxMURl
dmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIApAQCAtMTA4LDkgKzE3NCw5
IEBACiAgICAgY29uc3QgaW50IHByZXZpb3VzV2lkdGggPSBtV2lkdGg7CiAgICAgY29uc3QgaW50
IHByZXZpb3VzSGVpZ2h0ID0gbUhlaWdodDsKIAotICAgIHJlbGVhc2VPZmZzY3JlZW5UZXh0dXJl
KCk7CisgICAgcmVsZWFzZU9mZnNjcmVlbkNvbG9yQnVmZmVyKCk7CiAKLSAgICBjb25zdCBkM2Qx
MTo6VGV4dHVyZUZvcm1hdCAmYmFja2J1ZmZlckZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVy
ZUZvcm1hdEluZm8obUJhY2tCdWZmZXJGb3JtYXQsIG1SZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVs
KCkpOworICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZiYWNrYnVmZmVyRm9ybWF0SW5m
byA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9y
bWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOwogCiAgICAgLy8gSWYg
dGhlIGFwcCBwYXNzZWQgaW4gYSBzaGFyZSBoYW5kbGUsIG9wZW4gdGhlIHJlc291cmNlCiAgICAg
Ly8gU2VlIEVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIKQEAgLTE0Miw5
ICsyMDgsOCBAQAogCiAgICAgICAgIGlmIChvZmZzY3JlZW5UZXh0dXJlRGVzYy5XaWR0aCAhPSAo
VUlOVCliYWNrYnVmZmVyV2lkdGggfHwKICAgICAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNj
LkhlaWdodCAhPSAoVUlOVCliYWNrYnVmZmVySGVpZ2h0IHx8Ci0gICAgICAgICAgICBvZmZzY3Jl
ZW5UZXh0dXJlRGVzYy5Gb3JtYXQgIT0gYmFja2J1ZmZlckZvcm1hdEluZm8udGV4Rm9ybWF0IHx8
Ci0gICAgICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5NaXBMZXZlbHMgIT0gMSB8fAotICAg
ICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuQXJyYXlTaXplICE9IDEpCisgICAgICAgICAg
ICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5Gb3JtYXQgIT0gYmFja2J1ZmZlckZvcm1hdEluZm8uZm9y
bWF0U2V0LT50ZXhGb3JtYXQgfHwKKyAgICAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLk1p
cExldmVscyAhPSAxIHx8IG9mZnNjcmVlblRleHR1cmVEZXNjLkFycmF5U2l6ZSAhPSAxKQogICAg
ICAgICB7CiAgICAgICAgICAgICBFUlIoIkludmFsaWQgdGV4dHVyZSBwYXJhbWV0ZXJzIGluIHRo
ZSBzaGFyZWQgb2Zmc2NyZWVuIHRleHR1cmUgcGJ1ZmZlciIpOwogICAgICAgICAgICAgcmVsZWFz
ZSgpOwpAQCAtMTU4LDcgKzIyMyw3IEBACiAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIG9m
ZnNjcmVlblRleHR1cmVEZXNjID0gezB9OwogICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5X
aWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuSGVp
Z2h0ID0gYmFja2J1ZmZlckhlaWdodDsKLSAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuRm9y
bWF0ID0gYmFja2J1ZmZlckZvcm1hdEluZm8udGV4Rm9ybWF0OworICAgICAgICBvZmZzY3JlZW5U
ZXh0dXJlRGVzYy5Gb3JtYXQgICAgICAgICAgICAgICA9IGJhY2tidWZmZXJGb3JtYXRJbmZvLmZv
cm1hdFNldC0+dGV4Rm9ybWF0OwogICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5NaXBMZXZl
bHMgPSAxOwogICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5BcnJheVNpemUgPSAxOwogICAg
ICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKQEAgLTE2Niw3
ICsyMzEsNyBAQAogICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5Vc2FnZSA9IEQzRDExX1VT
QUdFX0RFRkFVTFQ7CiAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkJpbmRGbGFncyA9IEQz
RDExX0JJTkRfUkVOREVSX1RBUkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOwogICAg
ICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7Ci0gICAgICAgIG9m
ZnNjcmVlblRleHR1cmVEZXNjLk1pc2NGbGFncyA9IHVzZVNoYXJlZFJlc291cmNlID8gRDNEMTFf
UkVTT1VSQ0VfTUlTQ19TSEFSRUQgOiAwOworICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5N
aXNjRmxhZ3MgPSB1c2VTaGFyZWRSZXNvdXJjZSA/IEFOR0xFX1JFU09VUkNFX1NIQVJFX1RZUEUg
OiAwOwogCiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQo
Jm9mZnNjcmVlblRleHR1cmVEZXNjLCBOVUxMLCAmbU9mZnNjcmVlblRleHR1cmUpOwogCkBAIC0y
MTIsOSArMjc3LDExIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBUaGlzIG1heSByZXR1
cm4gbnVsbCBpZiB0aGUgb3JpZ2luYWwgdGV4dHVyZSB3YXMgY3JlYXRlZCB3aXRob3V0IGEga2V5
ZWQgbXV0ZXguCisgICAgbUtleWVkTXV0ZXggPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8
SURYR0lLZXllZE11dGV4PihtT2Zmc2NyZWVuVGV4dHVyZSk7CiAKICAgICBEM0QxMV9SRU5ERVJf
VEFSR0VUX1ZJRVdfREVTQyBvZmZzY3JlZW5SVFZEZXNjOwotICAgIG9mZnNjcmVlblJUVkRlc2Mu
Rm9ybWF0ID0gYmFja2J1ZmZlckZvcm1hdEluZm8ucnR2Rm9ybWF0OworICAgIG9mZnNjcmVlblJU
VkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gYmFja2J1ZmZlckZvcm1hdEluZm8uZm9ybWF0U2V0
LT5ydHZGb3JtYXQ7CiAgICAgb2Zmc2NyZWVuUlRWRGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgb2Zmc2NyZWVuUlRWRGVzYy5UZXh0dXJlMkQu
TWlwU2xpY2UgPSAwOwogCkBAIC0yMjMsNyArMjkwLDcgQEAKICAgICBkM2QxMTo6U2V0RGVidWdO
YW1lKG1PZmZzY3JlZW5SVFZpZXcsICJPZmZzY3JlZW4gYmFjayBidWZmZXIgcmVuZGVyIHRhcmdl
dCIpOwogCiAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBvZmZzY3JlZW5TUlZE
ZXNjOwotICAgIG9mZnNjcmVlblNSVkRlc2MuRm9ybWF0ID0gYmFja2J1ZmZlckZvcm1hdEluZm8u
c3J2Rm9ybWF0OworICAgIG9mZnNjcmVlblNSVkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAg
ICA9IGJhY2tidWZmZXJGb3JtYXRJbmZvLmZvcm1hdFNldC0+c3J2Rm9ybWF0OwogICAgIG9mZnNj
cmVlblNSVkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJE
OwogICAgIG9mZnNjcmVlblNSVkRlc2MuVGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7CiAg
ICAgb2Zmc2NyZWVuU1JWRGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gc3RhdGljX2Nhc3Q8VUlO
VD4oLTEpOwpAQCAtMjMyLDE0ICsyOTksNDUgQEAKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOwogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobU9mZnNjcmVlblNSVmlldywgIk9mZnNjcmVl
biBiYWNrIGJ1ZmZlciBzaGFkZXIgcmVzb3VyY2UiKTsKIAotICAgIGNvbnN0IGQzZDExOjpUZXh0
dXJlRm9ybWF0ICZkZXB0aEJ1ZmZlckZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1h
dEluZm8obURlcHRoQnVmZmVyRm9ybWF0LCBtUmVuZGVyZXItPmdldEZlYXR1cmVMZXZlbCgpKTsK
KyAgICBpZiAocHJldmlvdXNPZmZzY3JlZW5UZXh0dXJlICE9IG51bGxwdHIpCisgICAgeworICAg
ICAgICBEM0QxMV9CT1ggc291cmNlQm94ID0gezB9OworICAgICAgICBzb3VyY2VCb3gubGVmdCAg
ICAgID0gMDsKKyAgICAgICAgc291cmNlQm94LnJpZ2h0ICAgICA9IHN0ZDo6bWluKHByZXZpb3Vz
V2lkdGgsIGJhY2tidWZmZXJXaWR0aCk7CisgICAgICAgIHNvdXJjZUJveC50b3AgICAgICAgPSBz
dGQ6Om1heChwcmV2aW91c0hlaWdodCAtIGJhY2tidWZmZXJIZWlnaHQsIDApOworICAgICAgICBz
b3VyY2VCb3guYm90dG9tICAgID0gcHJldmlvdXNIZWlnaHQ7CisgICAgICAgIHNvdXJjZUJveC5m
cm9udCAgICAgPSAwOworICAgICAgICBzb3VyY2VCb3guYmFjayAgICAgID0gMTsKIAorICAgICAg
ICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2VDb250ZXh0KCk7CisgICAgICAgIGNvbnN0IGludCB5b2Zmc2V0ID0gc3RkOjptYXgoYmFja2J1
ZmZlckhlaWdodCAtIHByZXZpb3VzSGVpZ2h0LCAwKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+
Q29weVN1YnJlc291cmNlUmVnaW9uKG1PZmZzY3JlZW5UZXh0dXJlLCAwLCAwLCB5b2Zmc2V0LCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNP
ZmZzY3JlZW5UZXh0dXJlLCAwLCAmc291cmNlQm94KTsKKworICAgICAgICBTYWZlUmVsZWFzZShw
cmV2aW91c09mZnNjcmVlblRleHR1cmUpOworCisgICAgICAgIGlmIChtU3dhcENoYWluKQorICAg
ICAgICB7CisgICAgICAgICAgICBzd2FwUmVjdCgwLCAwLCBiYWNrYnVmZmVyV2lkdGgsIGJhY2ti
dWZmZXJIZWlnaHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEVHTF9TVUNDRVNT
OworfQorCitFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuRGVwdGhCdWZmZXIoaW50
IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCit7CisgICAgcmVsZWFzZU9m
ZnNjcmVlbkRlcHRoQnVmZmVyKCk7CisKICAgICBpZiAobURlcHRoQnVmZmVyRm9ybWF0ICE9IEdM
X05PTkUpCiAgICAgeworICAgICAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZGVwdGhC
dWZmZXJGb3JtYXRJbmZvID0KKyAgICAgICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5m
byhtRGVwdGhCdWZmZXJGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMo
KSk7CisKICAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVwdGhTdGVuY2lsVGV4dHVyZURl
c2M7CiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLldpZHRoID0gYmFja2J1ZmZlcldp
ZHRoOwogICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5IZWlnaHQgPSBiYWNrYnVmZmVy
SGVpZ2h0OwotICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5Gb3JtYXQgPSBkZXB0aEJ1
ZmZlckZvcm1hdEluZm8udGV4Rm9ybWF0OworICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVz
Yy5Gb3JtYXQgICAgICAgICAgICAgPSBkZXB0aEJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0U2V0LT50
ZXhGb3JtYXQ7CiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLk1pcExldmVscyA9IDE7
CiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLkFycmF5U2l6ZSA9IDE7CiAgICAgICAg
IGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOwpAQCAtMjQ3LDcg
KzM0NSw3IEBACiAgICAgICAgIGRlcHRoU3RlbmNpbFRleHR1cmVEZXNjLlVzYWdlID0gRDNEMTFf
VVNBR0VfREVGQVVMVDsKICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuQmluZEZsYWdz
ID0gRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMOwogCi0gICAgICAgIGlmIChkZXB0aEJ1ZmZlckZv
cm1hdEluZm8uc3J2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgIGlmIChk
ZXB0aEJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRf
VU5LTk9XTikKICAgICAgICAgewogICAgICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2Mu
QmluZEZsYWdzIHw9IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOwogICAgICAgICB9CkBAIC0y
NTUsNyArMzUzLDkgQEAKICAgICAgICAgZGVwdGhTdGVuY2lsVGV4dHVyZURlc2MuQ1BVQWNjZXNz
RmxhZ3MgPSAwOwogICAgICAgICBkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYy5NaXNjRmxhZ3MgPSAw
OwogCi0gICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXB0aFN0ZW5j
aWxUZXh0dXJlRGVzYywgTlVMTCwgJm1EZXB0aFN0ZW5jaWxUZXh0dXJlKTsKKyAgICAgICAgSUQz
RDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOworICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9CisgICAgICAgICAgICBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVwdGhT
dGVuY2lsVGV4dHVyZURlc2MsIE5VTEwsICZtRGVwdGhTdGVuY2lsVGV4dHVyZSk7CiAgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewogICAgICAgICAgICAgRVJSKCJDb3VsZCBu
b3QgY3JlYXRlIGRlcHRoc3RlbmNpbCBzdXJmYWNlIGZvciBuZXcgc3dhcCBjaGFpbjogMHglMDhY
IiwgcmVzdWx0KTsKQEAgLTI3Myw3ICszNzMsNyBAQAogICAgICAgICBkM2QxMTo6U2V0RGVidWdO
YW1lKG1EZXB0aFN0ZW5jaWxUZXh0dXJlLCAiT2Zmc2NyZWVuIGRlcHRoIHN0ZW5jaWwgdGV4dHVy
ZSIpOwogCiAgICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxfVklFV19ERVNDIGRlcHRoU3RlbmNp
bERlc2M7Ci0gICAgICAgIGRlcHRoU3RlbmNpbERlc2MuRm9ybWF0ID0gZGVwdGhCdWZmZXJGb3Jt
YXRJbmZvLmRzdkZvcm1hdDsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgPSBkZXB0aEJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CiAgICAg
ICAgIGRlcHRoU3RlbmNpbERlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX0RTVl9ESU1FTlNJT05f
VEVYVFVSRTJEOwogICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLkZsYWdzID0gMDsKICAgICAgICAg
ZGVwdGhTdGVuY2lsRGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSAwOwpAQCAtMjgyLDEwICszODIs
MTAgQEAKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgZDNkMTE6
OlNldERlYnVnTmFtZShtRGVwdGhTdGVuY2lsRFNWaWV3LCAiT2Zmc2NyZWVuIGRlcHRoIHN0ZW5j
aWwgdmlldyIpOwogCi0gICAgICAgIGlmIChkZXB0aEJ1ZmZlckZvcm1hdEluZm8uc3J2Rm9ybWF0
ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgICAgIGlmIChkZXB0aEJ1ZmZlckZvcm1hdElu
Zm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICAgICAg
ewogICAgICAgICAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBkZXB0aFN0ZW5j
aWxTUlZEZXNjOwotICAgICAgICAgICAgZGVwdGhTdGVuY2lsU1JWRGVzYy5Gb3JtYXQgPSBkZXB0
aEJ1ZmZlckZvcm1hdEluZm8uc3J2Rm9ybWF0OworICAgICAgICAgICAgZGVwdGhTdGVuY2lsU1JW
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgID0gZGVwdGhCdWZmZXJGb3JtYXRJbmZvLmZv
cm1hdFNldC0+c3J2Rm9ybWF0OwogICAgICAgICAgICAgZGVwdGhTdGVuY2lsU1JWRGVzYy5WaWV3
RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgICAgICAgICBk
ZXB0aFN0ZW5jaWxTUlZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOwogICAgICAg
ICAgICAgZGVwdGhTdGVuY2lsU1JWRGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gc3RhdGljX2Nh
c3Q8VUlOVD4oLTEpOwpAQCAtMjk2LDMxICszOTYsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbVdpZHRoID0gYmFja2J1ZmZlcldpZHRoOwotICAgIG1IZWlnaHQgPSBiYWNrYnVmZmVySGVp
Z2h0OwotCi0gICAgaWYgKHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVyZSAhPSBOVUxMKQotICAgIHsK
LSAgICAgICAgRDNEMTFfQk9YIHNvdXJjZUJveCA9IHswfTsKLSAgICAgICAgc291cmNlQm94Lmxl
ZnQgPSAwOwotICAgICAgICBzb3VyY2VCb3gucmlnaHQgPSBzdGQ6Om1pbihwcmV2aW91c1dpZHRo
LCBtV2lkdGgpOwotICAgICAgICBzb3VyY2VCb3gudG9wID0gc3RkOjptYXgocHJldmlvdXNIZWln
aHQgLSBtSGVpZ2h0LCAwKTsKLSAgICAgICAgc291cmNlQm94LmJvdHRvbSA9IHByZXZpb3VzSGVp
Z2h0OwotICAgICAgICBzb3VyY2VCb3guZnJvbnQgPSAwOwotICAgICAgICBzb3VyY2VCb3guYmFj
ayA9IDE7Ci0KLSAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwotICAgICAgICBjb25zdCBpbnQgeW9mZnNldCA9
IHN0ZDo6bWF4KG1IZWlnaHQgLSBwcmV2aW91c0hlaWdodCwgMCk7Ci0gICAgICAgIGRldmljZUNv
bnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihtT2Zmc2NyZWVuVGV4dHVyZSwgMCwgMCwgeW9m
ZnNldCwgMCwgcHJldmlvdXNPZmZzY3JlZW5UZXh0dXJlLCAwLCAmc291cmNlQm94KTsKLQotICAg
ICAgICBTYWZlUmVsZWFzZShwcmV2aW91c09mZnNjcmVlblRleHR1cmUpOwotCi0gICAgICAgIGlm
IChtU3dhcENoYWluKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2FwUmVjdCgwLCAwLCBtV2lk
dGgsIG1IZWlnaHQpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgcmV0dXJuIEVHTF9TVUNDRVNT
OwogfQogCkBAIC0zNDAsMTggKzQxNSwzMSBAQAogICAgICAgICByZXR1cm4gRUdMX1NVQ0NFU1M7
CiAgICAgfQogCisgICAgLy8gRG9uJ3QgcmVzaXplIHVubmVjZXNzYXJpbHkKKyAgICBpZiAobVdp
ZHRoID09IGJhY2tidWZmZXJXaWR0aCAmJiBtSGVpZ2h0ID09IGJhY2tidWZmZXJIZWlnaHQpCisg
ICAgeworICAgICAgICByZXR1cm4gRUdMX1NVQ0NFU1M7CisgICAgfQorCiAgICAgLy8gQ2FuIG9u
bHkgY2FsbCByZXNpemUgaWYgd2UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgb3VyIHN3YXAgYnVmZmVy
IGFuZCByZXNvdXJjZXMKLSAgICBBU1NFUlQobVN3YXBDaGFpbiAmJiBtQmFja0J1ZmZlclRleHR1
cmUgJiYgbUJhY2tCdWZmZXJSVFZpZXcpOworICAgIEFTU0VSVChtU3dhcENoYWluICYmIG1CYWNr
QnVmZmVyVGV4dHVyZSAmJiBtQmFja0J1ZmZlclJUVmlldyAmJiBtQmFja0J1ZmZlclNSVmlldyk7
CiAKICAgICBTYWZlUmVsZWFzZShtQmFja0J1ZmZlclRleHR1cmUpOwogICAgIFNhZmVSZWxlYXNl
KG1CYWNrQnVmZmVyUlRWaWV3KTsKKyAgICBTYWZlUmVsZWFzZShtQmFja0J1ZmZlclNSVmlldyk7
CiAKICAgICAvLyBSZXNpemUgc3dhcCBjaGFpbgogICAgIERYR0lfU1dBUF9DSEFJTl9ERVNDIGRl
c2M7Ci0gICAgbVN3YXBDaGFpbi0+R2V0RGVzYygmZGVzYyk7Ci0gICAgY29uc3QgZDNkMTE6OlRl
eHR1cmVGb3JtYXQgJmJhY2tidWZmZXJGb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3Jt
YXRJbmZvKG1CYWNrQnVmZmVyRm9ybWF0LCBtUmVuZGVyZXItPmdldEZlYXR1cmVMZXZlbCgpKTsK
LSAgICBIUkVTVUxUIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPlJlc2l6ZUJ1ZmZlcnMoZGVzYy5CdWZm
ZXJDb3VudCwgYmFja2J1ZmZlcldpZHRoLCBiYWNrYnVmZmVySGVpZ2h0LCBiYWNrYnVmZmVyRm9y
bWF0SW5mby50ZXhGb3JtYXQsIDApOworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVN3YXBDaGFpbi0+
R2V0RGVzYygmZGVzYyk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAg
RVJSKCJFcnJvciByZWFkaW5nIHN3YXAgY2hhaW4gZGVzY3JpcHRpb246IDB4JTA4WCIsIHJlc3Vs
dCk7CisgICAgICAgIHJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7Cisg
ICAgfQogCisgICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+UmVzaXplQnVmZmVycyhkZXNjLkJ1ZmZl
ckNvdW50LCBiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQsIGdldFN3YXBDaGFpbk5h
dGl2ZUZvcm1hdCgpLCAwKTsKKwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7CiAgICAg
ICAgIEVSUigiRXJyb3IgcmVzaXppbmcgc3dhcCBjaGFpbiBidWZmZXJzOiAweCUwOFgiLCByZXN1
bHQpOwpAQCAtMzcyLDIwICs0NjAsNDkgQEAKICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAg
ICAgewogICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyVGV4dHVyZSwgIkJh
Y2sgYnVmZmVyIHRleHR1cmUiKTsKLSAgICB9CisgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlUmVuZGVyVGFyZ2V0VmlldyhtQmFja0J1ZmZlclRleHR1cmUsIE5VTEwsICZtQmFja0J1ZmZl
clJUVmlldyk7CisgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGlm
IChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgZDNkMTE6OlNldERl
YnVnTmFtZShtQmFja0J1ZmZlclJUVmlldywgIkJhY2sgYnVmZmVyIHJlbmRlciB0YXJnZXQiKTsK
KyAgICAgICAgfQogCi0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3
KG1CYWNrQnVmZmVyVGV4dHVyZSwgTlVMTCwgJm1CYWNrQnVmZmVyUlRWaWV3KTsKLSAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKLSAgICB7
Ci0gICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUJhY2tCdWZmZXJSVFZpZXcsICJCYWNrIGJ1
ZmZlciByZW5kZXIgdGFyZ2V0Iik7CisgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hh
ZGVyUmVzb3VyY2VWaWV3KG1CYWNrQnVmZmVyVGV4dHVyZSwgbnVsbHB0ciwgJm1CYWNrQnVmZmVy
U1JWaWV3KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgaWYg
KFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKG1CYWNrQnVmZmVyU1JWaWV3LCAiQmFjayBidWZmZXIgc2hhZGVyIHJlc291cmNlIik7
CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gcmVzZXRPZmZzY3JlZW5UZXh0dXJlKGJh
Y2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CisgICAgbUZpcnN0U3dhcCA9IHRydWU7
CisKKyAgICByZXR1cm4gcmVzZXRPZmZzY3JlZW5CdWZmZXJzKGJhY2tidWZmZXJXaWR0aCwgYmFj
a2J1ZmZlckhlaWdodCk7CiB9CiAKK0RYR0lfRk9STUFUIFN3YXBDaGFpbjExOjpnZXRTd2FwQ2hh
aW5OYXRpdmVGb3JtYXQoKSBjb25zdAoreworICAgIC8vIFJldHVybiBhIHJlbmRlciB0YXJnZXQg
Zm9ybWF0IGZvciBvZmZzY3JlZW4gcmVuZGVyaW5nIGlzIHN1cHBvcnRlZCBieSBJRFhHSVN3YXBD
aGFpbi4KKyAgICAvLyBNU0ROIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvd2luZG93cy9kZXNrdG9wL2JiMTczMDY0KHY9dnMuODUpLmFzcHgKKyAgICByZXR1cm4gKG1P
ZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQgPT0gR0xfQkdSQThfRVhUKSA/IERYR0lfRk9STUFU
X0I4RzhSOEE4X1VOT1JNIDogRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk07Cit9CisKIEVHTGlu
dCBTd2FwQ2hhaW4xMTo6cmVzZXQoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJI
ZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpCiB7CisgICAgbVN3YXBJbnRlcnZhbCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oc3dhcEludGVydmFsKTsKKyAgICBpZiAobVN3YXBJbnRlcnZh
bCA+IDQpCisgICAgeworICAgICAgICAvLyBJRFhHSVN3YXBDaGFpbjo6UHJlc2VudCBkb2N1bWVu
dGF0aW9uIHN0YXRlcyB0aGF0IHZhbGlkIHN5bmMgaW50ZXJ2YWxzIGFyZSBpbiB0aGUgWzAsNF0K
KyAgICAgICAgLy8gcmFuZ2UKKyAgICAgICAgcmV0dXJuIEVHTF9CQURfUEFSQU1FVEVSOworICAg
IH0KKworICAgIC8vIElmIHRoZSBzd2FwIGNoYWluIGFscmVhZHkgZXhpc3RzLCBqdXN0IHJlc2l6
ZQorICAgIGlmIChtU3dhcENoYWluICE9IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4g
cmVzaXplKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CisgICAgfQorCiAgICAg
VFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiU3dhcENoYWluMTE6OnJlc2V0Iik7CiAgICAgSUQz
RDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCkBAIC0zOTYsMzAg
KzUxMywyMiBAQAogCiAgICAgLy8gUmVsZWFzZSBzcGVjaWZpYyByZXNvdXJjZXMgdG8gZnJlZSB1
cCBtZW1vcnkgZm9yIHRoZSBuZXcgcmVuZGVyIHRhcmdldCwgd2hpbGUgdGhlCiAgICAgLy8gb2xk
IHJlbmRlciB0YXJnZXQgc3RpbGwgZXhpc3RzIGZvciB0aGUgcHVycG9zZSBvZiBwcmVzZXJ2aW5n
IGl0cyBjb250ZW50cy4KKyAgICBTYWZlUmVsZWFzZShtU3dhcENoYWluMSk7CiAgICAgU2FmZVJl
bGVhc2UobVN3YXBDaGFpbik7CiAgICAgU2FmZVJlbGVhc2UobUJhY2tCdWZmZXJUZXh0dXJlKTsK
ICAgICBTYWZlUmVsZWFzZShtQmFja0J1ZmZlclJUVmlldyk7CiAKLSAgICBtU3dhcEludGVydmFs
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihzd2FwSW50ZXJ2YWwpOwotICAgIGlmIChtU3dh
cEludGVydmFsID4gNCkKLSAgICB7Ci0gICAgICAgIC8vIElEWEdJU3dhcENoYWluOjpQcmVzZW50
IGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgdmFsaWQgc3luYyBpbnRlcnZhbHMgYXJlIGluIHRo
ZSBbMCw0XSByYW5nZQotICAgICAgICByZXR1cm4gRUdMX0JBRF9QQVJBTUVURVI7Ci0gICAgfQot
CiAgICAgLy8gRUdMIGFsbG93cyBjcmVhdGluZyBhIHN1cmZhY2Ugd2l0aCAweDAgZGltZW5zaW9u
LCBob3dldmVyLCBEWEdJIGRvZXMgbm90IGxpa2UgMHgwIHN3YXBjaGFpbnMKICAgICBpZiAoYmFj
a2J1ZmZlcldpZHRoIDwgMSB8fCBiYWNrYnVmZmVySGVpZ2h0IDwgMSkKICAgICB7Ci0gICAgICAg
IHJlbGVhc2VPZmZzY3JlZW5UZXh0dXJlKCk7CisgICAgICAgIHJlbGVhc2VPZmZzY3JlZW5Db2xv
ckJ1ZmZlcigpOwogICAgICAgICByZXR1cm4gRUdMX1NVQ0NFU1M7CiAgICAgfQogCiAgICAgaWYg
KG1OYXRpdmVXaW5kb3cuZ2V0TmF0aXZlV2luZG93KCkpCiAgICAgewotICAgICAgICBjb25zdCBk
M2QxMTo6VGV4dHVyZUZvcm1hdCAmYmFja2J1ZmZlckZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4
dHVyZUZvcm1hdEluZm8obUJhY2tCdWZmZXJGb3JtYXQsIG1SZW5kZXJlci0+Z2V0RmVhdHVyZUxl
dmVsKCkpOwotCiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbU5hdGl2ZVdpbmRvdy5jcmVhdGVT
d2FwQ2hhaW4oZGV2aWNlLCBtUmVuZGVyZXItPmdldER4Z2lGYWN0b3J5KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tidWZmZXJGb3JtYXRJbmZv
LnRleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0U3dhcENoYWluTmF0aXZlRm9ybWF0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCwg
Jm1Td2FwQ2hhaW4pOwogCiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKQEAgLTQzNyw2ICs1
NDYsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIGlmIChtUmVuZGVy
ZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkuc3VwcG9ydHNEWEdJMV8yKQorICAgICAgICB7
CisgICAgICAgICAgICBtU3dhcENoYWluMSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJ
RFhHSVN3YXBDaGFpbjE+KG1Td2FwQ2hhaW4pOworICAgICAgICB9CisKICAgICAgICAgcmVzdWx0
ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1cmUyRCksIChM
UFZPSUQqKSZtQmFja0J1ZmZlclRleHR1cmUpOwogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOwogICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyVGV4dHVyZSwg
IkJhY2sgYnVmZmVyIHRleHR1cmUiKTsKQEAgLTQ0NCwyMCArNTU4LDI0IEBACiAgICAgICAgIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0VmlldyhtQmFja0J1ZmZlclRleHR1cmUs
IE5VTEwsICZtQmFja0J1ZmZlclJUVmlldyk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CiAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUJhY2tCdWZmZXJSVFZpZXcsICJC
YWNrIGJ1ZmZlciByZW5kZXIgdGFyZ2V0Iik7Ci0gICAgfQogCi0gICAgLy8gSWYgd2UgYXJlIHJl
c2l6aW5nIHRoZSBzd2FwIGNoYWluLCB3ZSBkb24ndCB3aXNoIHRvIHJlY3JlYXRlIGFsbCB0aGUg
c3RhdGljIHJlc291cmNlcwotICAgIGlmICghbVBhc3NUaHJvdWdoUmVzb3VyY2VzSW5pdCkKLSAg
ICB7Ci0gICAgICAgIG1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQgPSB0cnVlOwotICAgICAgICBp
bml0UGFzc1Rocm91Z2hSZXNvdXJjZXMoKTsKKyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVTaGFkZXJSZXNvdXJjZVZpZXcobUJhY2tCdWZmZXJUZXh0dXJlLCBudWxscHRyLCAmbUJhY2tC
dWZmZXJTUlZpZXcpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAg
ICBkM2QxMTo6U2V0RGVidWdOYW1lKG1CYWNrQnVmZmVyU1JWaWV3LCAiQmFjayBidWZmZXIgc2hh
ZGVyIHJlc291cmNlIHZpZXciKTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzZXRPZmZzY3JlZW5U
ZXh0dXJlKGJhY2tidWZmZXJXaWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CisgICAgbUZpcnN0U3dh
cCA9IHRydWU7CisKKyAgICByZXR1cm4gcmVzZXRPZmZzY3JlZW5CdWZmZXJzKGJhY2tidWZmZXJX
aWR0aCwgYmFja2J1ZmZlckhlaWdodCk7CiB9CiAKIHZvaWQgU3dhcENoYWluMTE6OmluaXRQYXNz
VGhyb3VnaFJlc291cmNlcygpCiB7CisgICAgaWYgKG1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQp
CisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgVFJBQ0VfRVZFTlQwKCJncHUu
YW5nbGUiLCAiU3dhcENoYWluMTE6OmluaXRQYXNzVGhyb3VnaFJlc291cmNlcyIpOwogICAgIElE
M0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIApAQCAtNTE1LDE3
ICs2MzMsNTggQEAKICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGdfUFNf
UGFzc3Rocm91Z2hSR0JBMkQsIHNpemVvZihnX1BTX1Bhc3N0aHJvdWdoUkdCQTJEKSwgTlVMTCwg
Jm1QYXNzVGhyb3VnaFBTKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUobVBhc3NUaHJvdWdoUFMsICJTd2FwIGNoYWluIHBhc3MgdGhyb3Vn
aCBwaXhlbCBzaGFkZXIiKTsKKworICAgIC8vIFVzZSB0aGUgZGVmYXVsdCByYXN0ZXJpemVyIHN0
YXRlIGJ1dCB3aXRob3V0IGN1bGxpbmcKKyAgICBEM0QxMV9SQVNURVJJWkVSX0RFU0MgcmFzdGVy
aXplckRlc2M7CisgICAgcmFzdGVyaXplckRlc2MuRmlsbE1vZGUgICAgICAgICAgICAgID0gRDNE
MTFfRklMTF9TT0xJRDsKKyAgICByYXN0ZXJpemVyRGVzYy5DdWxsTW9kZSAgICAgICAgICAgICAg
PSBEM0QxMV9DVUxMX05PTkU7CisgICAgcmFzdGVyaXplckRlc2MuRnJvbnRDb3VudGVyQ2xvY2t3
aXNlID0gRkFMU0U7CisgICAgcmFzdGVyaXplckRlc2MuRGVwdGhCaWFzICAgICAgICAgICAgID0g
MDsKKyAgICByYXN0ZXJpemVyRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlhcyAgPSAwLjBmOworICAg
IHJhc3Rlcml6ZXJEZXNjLkRlcHRoQmlhc0NsYW1wICAgICAgICA9IDAuMGY7CisgICAgcmFzdGVy
aXplckRlc2MuRGVwdGhDbGlwRW5hYmxlICAgICAgID0gVFJVRTsKKyAgICByYXN0ZXJpemVyRGVz
Yy5TY2lzc29yRW5hYmxlICAgICAgICAgPSBGQUxTRTsKKyAgICByYXN0ZXJpemVyRGVzYy5NdWx0
aXNhbXBsZUVuYWJsZSAgICAgPSBGQUxTRTsKKyAgICByYXN0ZXJpemVyRGVzYy5BbnRpYWxpYXNl
ZExpbmVFbmFibGUgPSBGQUxTRTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJhc3Rlcml6
ZXJTdGF0ZSgmcmFzdGVyaXplckRlc2MsICZtUGFzc1Rocm91Z2hSUyk7CisgICAgQVNTRVJUKFNV
Q0NFRURFRChyZXN1bHQpKTsKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1QYXNzVGhyb3VnaFJT
LCAiU3dhcCBjaGFpbiBwYXNzIHRocm91Z2ggcmFzdGVyaXplciBzdGF0ZSIpOworCisgICAgbVBh
c3NUaHJvdWdoUmVzb3VyY2VzSW5pdCA9IHRydWU7CiB9CiAKIC8vIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHZhbGlkYXRlZC9jbGFtcGVkIGJ5IGNhbGxlcgogRUdMaW50IFN3YXBDaGFpbjExOjpzd2Fw
UmVjdChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKIHsK
KyAgICBpZiAobU5lZWRzT2Zmc2NyZWVuVGV4dHVyZSkKKyAgICB7CisgICAgICAgIEVHTGludCBy
ZXN1bHQgPSBjb3B5T2Zmc2NyZWVuVG9CYWNrYnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQpOwor
ICAgICAgICBpZiAocmVzdWx0ICE9IEVHTF9TVUNDRVNTKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgRUdMaW50IHJlc3VsdCA9
IHByZXNlbnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgaWYgKHJlc3VsdCAhPSBFR0xfU1VD
Q0VTUykKKyAgICB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgbVJlbmRl
cmVyLT5vblN3YXAoKTsKKworICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKK30KKworRUdMaW50IFN3
YXBDaGFpbjExOjpjb3B5T2Zmc2NyZWVuVG9CYWNrYnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwg
RUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQorewogICAgIGlmICghbVN3YXBDaGFpbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBFR0xfU1VDQ0VTUzsKICAgICB9CiAKLSAgICBJRDNEMTFEZXZp
Y2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgaW5pdFBhc3NUaHJvdWdo
UmVzb3VyY2VzKCk7CisKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAKICAgICAvLyBTZXQgdmVydGljZXMKQEAg
LTU0OSw2ICs3MDgsMTYgQEAKICAgICBmbG9hdCB1MiA9ICh4ICsgd2lkdGgpIC8gZmxvYXQobVdp
ZHRoKTsKICAgICBmbG9hdCB2MiA9ICh5ICsgaGVpZ2h0KSAvIGZsb2F0KG1IZWlnaHQpOwogCisg
ICAgLy8gSW52ZXJ0IHRoZSBxdWFkIHZlcnRpY2VzIGRlcGVuZGluZyBvbiB0aGUgc3VyZmFjZSBv
cmllbnRhdGlvbi4KKyAgICBpZiAoKG1PcmllbnRhdGlvbiAmIEVHTF9TVVJGQUNFX09SSUVOVEFU
SU9OX0lOVkVSVF9YX0FOR0xFKSAhPSAwKQorICAgIHsKKyAgICAgICAgc3RkOjpzd2FwKHgxLCB4
Mik7CisgICAgfQorICAgIGlmICgobU9yaWVudGF0aW9uICYgRUdMX1NVUkZBQ0VfT1JJRU5UQVRJ
T05fSU5WRVJUX1lfQU5HTEUpICE9IDApCisgICAgeworICAgICAgICBzdGQ6OnN3YXAoeTEsIHky
KTsKKyAgICB9CisKICAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZlcnRleCgmdmVydGlj
ZXNbMF0sIHgxLCB5MSwgdTEsIHYxKTsKICAgICBkM2QxMTo6U2V0UG9zaXRpb25UZXhDb29yZFZl
cnRleCgmdmVydGljZXNbMV0sIHgxLCB5MiwgdTEsIHYyKTsKICAgICBkM2QxMTo6U2V0UG9zaXRp
b25UZXhDb29yZFZlcnRleCgmdmVydGljZXNbMl0sIHgyLCB5MSwgdTIsIHYxKTsKQEAgLTU2Niw3
ICs3MzUsNyBAQAogICAgIHN0YXRpYyBjb25zdCBmbG9hdCBibGVuZEZhY3Rvcls0XSA9IHsgMS4w
ZiwgMS4wZiwgMS4wZiwgMS4wZiB9OwogICAgIGRldmljZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0
ZShOVUxMLCBibGVuZEZhY3RvciwgMHhGRkZGRkZGKTsKIAotICAgIGRldmljZUNvbnRleHQtPlJT
U2V0U3RhdGUoTlVMTCk7CisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtUGFzc1Rocm91
Z2hSUyk7CiAKICAgICAvLyBBcHBseSBzaGFkZXJzCiAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRJ
bnB1dExheW91dChtUGFzc1Rocm91Z2hJTCk7CkBAIC01NzUsOCArNzQ0LDEwIEBACiAgICAgZGV2
aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIobVBhc3NUaHJvdWdoUFMsIE5VTEwsIDApOwogICAgIGRl
dmljZUNvbnRleHQtPkdTU2V0U2hhZGVyKE5VTEwsIE5VTEwsIDApOwogCisgICAgYXV0byBzdGF0
ZU1hbmFnZXIgPSBtUmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpOworCiAgICAgLy8gQXBwbHkg
cmVuZGVyIHRhcmdldHMKLSAgICBtUmVuZGVyZXItPnNldE9uZVRpbWVSZW5kZXJUYXJnZXQobUJh
Y2tCdWZmZXJSVFZpZXcpOworICAgIHN0YXRlTWFuYWdlci0+c2V0T25lVGltZVJlbmRlclRhcmdl
dChtQmFja0J1ZmZlclJUVmlldywgbnVsbHB0cik7CiAKICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0
CiAgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7CkBAIC01ODksMjMgKzc2MCw2OCBAQAogICAg
IGRldmljZUNvbnRleHQtPlJTU2V0Vmlld3BvcnRzKDEsICZ2aWV3cG9ydCk7CiAKICAgICAvLyBB
cHBseSB0ZXh0dXJlcwotICAgIG1SZW5kZXJlci0+c2V0U2hhZGVyUmVzb3VyY2UoZ2w6OlNBTVBM
RVJfUElYRUwsIDAsIG1PZmZzY3JlZW5TUlZpZXcpOworICAgIHN0YXRlTWFuYWdlci0+c2V0U2hh
ZGVyUmVzb3VyY2UoZ2w6OlNBTVBMRVJfUElYRUwsIDAsIG1PZmZzY3JlZW5TUlZpZXcpOwogICAg
IGRldmljZUNvbnRleHQtPlBTU2V0U2FtcGxlcnMoMCwgMSwgJm1QYXNzVGhyb3VnaFNhbXBsZXIp
OwogCiAgICAgLy8gRHJhdwogICAgIGRldmljZUNvbnRleHQtPkRyYXcoNCwgMCk7CiAKKyAgICAv
LyBSZW5kZXJpbmcgdG8gdGhlIHN3YXBjaGFpbiBpcyBub3cgY29tcGxldGUuIE5vdyB3ZSBjYW4g
Y2FsbCBQcmVzZW50KCkuCisgICAgLy8gQmVmb3JlIHRoYXQsIHdlIHBlcmZvcm0gYW55IGNsZWFu
dXAgb24gdGhlIEQzRCBkZXZpY2UuIFdlIGRvIHRoaXMgYmVmb3JlIFByZXNlbnQoKSB0byBtYWtl
IHN1cmUgdGhlCisgICAgLy8gY2xlYW51cCBpcyBjYXVnaHQgdW5kZXIgdGhlIGN1cnJlbnQgZWds
U3dhcEJ1ZmZlcnMoKSBQSVgvR3JhcGhpY3MgRGlhZ25vc3RpY3MgY2FsbCByYXRoZXIgdGhhbiB0
aGUgbmV4dCBvbmUuCisgICAgc3RhdGVNYW5hZ2VyLT5zZXRTaGFkZXJSZXNvdXJjZShnbDo6U0FN
UExFUl9QSVhFTCwgMCwgTlVMTCk7CisKKyAgICBtUmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5
KCk7CisKKyAgICByZXR1cm4gRUdMX1NVQ0NFU1M7Cit9CisKK0VHTGludCBTd2FwQ2hhaW4xMTo6
cHJlc2VudChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkK
K3sKKyAgICBpZiAoIW1Td2FwQ2hhaW4pCisgICAgeworICAgICAgICByZXR1cm4gRUdMX1NVQ0NF
U1M7CisgICAgfQorCisgICAgVUlOVCBzd2FwSW50ZXJ2YWwgPSBtU3dhcEludGVydmFsOwogI2lm
IEFOR0xFX1ZTWU5DID09IEFOR0xFX0RJU0FCTEVECi0gICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+
UHJlc2VudCgwLCAwKTsKLSNlbHNlCi0gICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+UHJlc2VudCht
U3dhcEludGVydmFsLCAwKTsKKyAgICBzd2FwSW50ZXJ2YWwgPSAwOwogI2VuZGlmCiAKKyAgICBI
UkVTVUxUIHJlc3VsdCA9IFNfT0s7CisKKyAgICAvLyBVc2UgSURYR0lTd2FwQ2hhaW4xOjpQcmVz
ZW50MSB3aXRoIGEgZGlydHkgcmVjdCBpZiBEWEdJIDEuMiBpcyBhdmFpbGFibGUuCisgICAgaWYg
KG1Td2FwQ2hhaW4xICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBpZiAobUZpcnN0U3dhcCkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gQ2FuJ3Qgc3dhcCB3aXRoIGEgZGlydHkgcmVjdCBp
ZiB0aGlzIHN3YXAgY2hhaW4gaGFzIG5ldmVyIHN3YXBwZWQgYmVmb3JlCisgICAgICAgICAgICBE
WEdJX1BSRVNFTlRfUEFSQU1FVEVSUyBwYXJhbXMgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0cn07CisgICAgICAgICAgICByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtU3dh
cENoYWluMS0+UHJlc2VudDEoc3dhcEludGVydmFsLCAwLCAmcGFyYW1zKTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFJFQ1QgcmVjdCA9IHtzdGF0aWNf
Y2FzdDxMT05HPih4KSwgc3RhdGljX2Nhc3Q8TE9ORz4obUhlaWdodCAtIHkgLSBoZWlnaHQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PExPTkc+KHggKyB3aWR0aCksIHN0
YXRpY19jYXN0PExPTkc+KG1IZWlnaHQgLSB5KX07CisgICAgICAgICAgICBEWEdJX1BSRVNFTlRf
UEFSQU1FVEVSUyBwYXJhbXMgPSB7MSwgJnJlY3QsIG51bGxwdHIsIG51bGxwdHJ9OworICAgICAg
ICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgID0gbVN3YXBDaGFpbjEtPlByZXNl
bnQxKHN3YXBJbnRlcnZhbCwgMCwgJnBhcmFtcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gbVN3YXBDaGFpbi0+UHJlc2VudChzd2FwSW50ZXJ2
YWwsIDApOworICAgIH0KKworICAgIG1GaXJzdFN3YXAgPSBmYWxzZTsKKworICAgIC8vIFNvbWUg
c3dhcHBpbmcgbWVjaGFuaXNtcyBzdWNoIGFzIERYR0lfU1dBUF9FRkZFQ1RfRkxJUF9TRVFVRU5U
SUFMIHVuYmluZCB0aGUgY3VycmVudCByZW5kZXIKKyAgICAvLyB0YXJnZXQuICBNYXJrIGl0IGRp
cnR5LgorICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPmludmFsaWRhdGVSZW5kZXJU
YXJnZXQoKTsKKwogICAgIGlmIChyZXN1bHQgPT0gRFhHSV9FUlJPUl9ERVZJQ0VfUkVNT1ZFRCkK
ICAgICB7Ci0gICAgICAgIEhSRVNVTFQgcmVtb3ZlZFJlYXNvbiA9IGRldmljZS0+R2V0RGV2aWNl
UmVtb3ZlZFJlYXNvbigpOwotICAgICAgICBVTlVTRURfVFJBQ0VfVkFSSUFCTEUocmVtb3ZlZFJl
YXNvbik7Ci0gICAgICAgIEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2Fz
IHJlbW92ZWQ6IDB4JTA4WCIsIHJlbW92ZWRSZWFzb24pOworICAgICAgICBFUlIoIlByZXNlbnQg
ZmFpbGVkOiB0aGUgRDNEMTEgZGV2aWNlIHdhcyByZW1vdmVkOiAweCUwOFgiLAorICAgICAgICAg
ICAgbVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+R2V0RGV2aWNlUmVtb3ZlZFJlYXNvbigpKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CiAgICAgfQogICAgIGVsc2UgaWYgKHJlc3Vs
dCA9PSBEWEdJX0VSUk9SX0RFVklDRV9SRVNFVCkKQEAgLTYxOCwyOCArODM0LDI0IEBACiAgICAg
ICAgIEVSUigiUHJlc2VudCBmYWlsZWQgd2l0aCBlcnJvciBjb2RlIDB4JTA4WCIsIHJlc3VsdCk7
CiAgICAgfQogCi0gICAgLy8gVW5iaW5kCi0gICAgbVJlbmRlcmVyLT5zZXRTaGFkZXJSZXNvdXJj
ZShnbDo6U0FNUExFUl9QSVhFTCwgMCwgTlVMTCk7CisgICAgbU5hdGl2ZVdpbmRvdy5jb21taXRD
aGFuZ2UoKTsKIAotICAgIG1SZW5kZXJlci0+dW5hcHBseVJlbmRlclRhcmdldHMoKTsKLSAgICBt
UmVuZGVyZXItPm1hcmtBbGxTdGF0ZURpcnR5KCk7Ci0KICAgICByZXR1cm4gRUdMX1NVQ0NFU1M7
CiB9CiAKIElEM0QxMVRleHR1cmUyRCAqU3dhcENoYWluMTE6OmdldE9mZnNjcmVlblRleHR1cmUo
KQogewotICAgIHJldHVybiBtT2Zmc2NyZWVuVGV4dHVyZTsKKyAgICByZXR1cm4gbU5lZWRzT2Zm
c2NyZWVuVGV4dHVyZSA/IG1PZmZzY3JlZW5UZXh0dXJlIDogbUJhY2tCdWZmZXJUZXh0dXJlOwog
fQogCiBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpTd2FwQ2hhaW4xMTo6Z2V0UmVuZGVyVGFyZ2V0
KCkKIHsKLSAgICByZXR1cm4gbU9mZnNjcmVlblJUVmlldzsKKyAgICByZXR1cm4gbU5lZWRzT2Zm
c2NyZWVuVGV4dHVyZSA/IG1PZmZzY3JlZW5SVFZpZXcgOiBtQmFja0J1ZmZlclJUVmlldzsKIH0K
IAogSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpTd2FwQ2hhaW4xMTo6Z2V0UmVuZGVyVGFyZ2V0
U2hhZGVyUmVzb3VyY2UoKQogewotICAgIHJldHVybiBtT2Zmc2NyZWVuU1JWaWV3OworICAgIHJl
dHVybiBtTmVlZHNPZmZzY3JlZW5UZXh0dXJlID8gbU9mZnNjcmVlblNSVmlldyA6IG1CYWNrQnVm
ZmVyU1JWaWV3OwogfQogCiBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpTd2FwQ2hhaW4xMTo6Z2V0
RGVwdGhTdGVuY2lsKCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFp
bjExLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAsOCArMjAsMTIgQEAKIGNsYXNzIFN3YXBDaGFpbjExIDogcHVibGljIFN3YXBDaGFpbkQz
RAogewogICBwdWJsaWM6Ci0gICAgU3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIE5h
dGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAg
ICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsK
KyAgICBTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICBO
YXRpdmVXaW5kb3cgbmF0aXZlV2luZG93LAorICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhh
bmRsZSwKKyAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKKyAgICAgICAg
ICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgRUdMaW50
IG9yaWVudGF0aW9uKTsKICAgICB2aXJ0dWFsIH5Td2FwQ2hhaW4xMSgpOwogCiAgICAgRUdMaW50
IHJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCk7
CkBAIC00MiwyNSArNDYsNDEgQEAKIAogICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1XaWR0aDsgfQogICAgIEVHTGludCBnZXRIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtSGVp
Z2h0OyB9CisgICAgdm9pZCAqZ2V0S2V5ZWRNdXRleCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1LZXll
ZE11dGV4OyB9CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2UoKTsKICAgICB2b2lkIGlu
aXRQYXNzVGhyb3VnaFJlc291cmNlcygpOwotICAgIHZvaWQgcmVsZWFzZU9mZnNjcmVlblRleHR1
cmUoKTsKLSAgICBFR0xpbnQgcmVzZXRPZmZzY3JlZW5UZXh0dXJlKGludCBiYWNrYnVmZmVyV2lk
dGgsIGludCBiYWNrYnVmZmVySGVpZ2h0KTsKIAorICAgIHZvaWQgcmVsZWFzZU9mZnNjcmVlbkNv
bG9yQnVmZmVyKCk7CisgICAgdm9pZCByZWxlYXNlT2Zmc2NyZWVuRGVwdGhCdWZmZXIoKTsKKyAg
ICBFR0xpbnQgcmVzZXRPZmZzY3JlZW5CdWZmZXJzKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBi
YWNrYnVmZmVySGVpZ2h0KTsKKyAgICBFR0xpbnQgcmVzZXRPZmZzY3JlZW5Db2xvckJ1ZmZlcihp
bnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlckhlaWdodCk7CisgICAgRUdMaW50IHJl
c2V0T2Zmc2NyZWVuRGVwdGhCdWZmZXIoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZm
ZXJIZWlnaHQpOworCisgICAgRFhHSV9GT1JNQVQgZ2V0U3dhcENoYWluTmF0aXZlRm9ybWF0KCkg
Y29uc3Q7CisKKyAgICBFR0xpbnQgY29weU9mZnNjcmVlblRvQmFja2J1ZmZlcihFR0xpbnQgeCwg
RUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CisgICAgRUdMaW50IHByZXNl
bnQoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpOworCiAg
ICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworICAgIEVHTGludCBtV2lkdGg7CiAgICAgRUdMaW50
IG1IZWlnaHQ7Ci0gICAgRUdMaW50IG1XaWR0aDsKKyAgICBjb25zdCBFR0xpbnQgbU9yaWVudGF0
aW9uOwogICAgIGJvb2wgbUFwcENyZWF0ZWRTaGFyZUhhbmRsZTsKICAgICB1bnNpZ25lZCBpbnQg
bVN3YXBJbnRlcnZhbDsKICAgICBib29sIG1QYXNzVGhyb3VnaFJlc291cmNlc0luaXQ7CiAKKyAg
ICBib29sIG1GaXJzdFN3YXA7CiAgICAgRFhHSVN3YXBDaGFpbiAqbVN3YXBDaGFpbjsKKyAgICBJ
RFhHSVN3YXBDaGFpbjEgKm1Td2FwQ2hhaW4xOworICAgIElEWEdJS2V5ZWRNdXRleCAqbUtleWVk
TXV0ZXg7CiAKICAgICBJRDNEMTFUZXh0dXJlMkQgKm1CYWNrQnVmZmVyVGV4dHVyZTsKICAgICBJ
RDNEMTFSZW5kZXJUYXJnZXRWaWV3ICptQmFja0J1ZmZlclJUVmlldzsKKyAgICBJRDNEMTFTaGFk
ZXJSZXNvdXJjZVZpZXcgKm1CYWNrQnVmZmVyU1JWaWV3OwogCisgICAgY29uc3QgYm9vbCBtTmVl
ZHNPZmZzY3JlZW5UZXh0dXJlOwogICAgIElEM0QxMVRleHR1cmUyRCAqbU9mZnNjcmVlblRleHR1
cmU7CiAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbU9mZnNjcmVlblJUVmlldzsKICAgICBJ
RDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKm1PZmZzY3JlZW5TUlZpZXc7CkBAIC03NCw2ICs5NCw3
IEBACiAgICAgSUQzRDExSW5wdXRMYXlvdXQgKm1QYXNzVGhyb3VnaElMOwogICAgIElEM0QxMVZl
cnRleFNoYWRlciAqbVBhc3NUaHJvdWdoVlM7CiAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKm1QYXNz
VGhyb3VnaFBTOworICAgIElEM0QxMVJhc3Rlcml6ZXJTdGF0ZSAqbVBhc3NUaHJvdWdoUlM7CiAK
ICAgICBTdXJmYWNlUmVuZGVyVGFyZ2V0MTEgbUNvbG9yUmVuZGVyVGFyZ2V0OwogICAgIFN1cmZh
Y2VSZW5kZXJUYXJnZXQxMSBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0OwpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJl
U3RvcmFnZTExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3BwCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDcg
KzUsOCBAQAogLy8KIAogLy8gVGV4dHVyZVN0b3JhZ2UxMS5jcHA6IEltcGxlbWVudHMgdGhlIGFi
c3RyYWN0IHJ4OjpUZXh0dXJlU3RvcmFnZTExIGNsYXNzIGFuZCBpdHMgY29uY3JldGUgZGVyaXZl
ZAotLy8gY2xhc3NlcyBUZXh0dXJlU3RvcmFnZTExXzJEIGFuZCBUZXh0dXJlU3RvcmFnZTExX0N1
YmUsIHdoaWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBEM0QxMSB0ZXh0dXJlLgorLy8g
Y2xhc3NlcyBUZXh0dXJlU3RvcmFnZTExXzJEIGFuZCBUZXh0dXJlU3RvcmFnZTExX0N1YmUsIHdo
aWNoIGFjdCBhcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBEM0QxMQorLy8gdGV4dHVyZS4KIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgiCiAK
QEAgLTEzLDM2ICsxNCw0MiBAQAogCiAjaW5jbHVkZSAiY29tbW9uL01lbW9yeUJ1ZmZlci5oIgog
I2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1
dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlSW5kZXguaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9mb3JtYXR1dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0
dXJlRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0JsaXQxMS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdlMTEuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKIFRleHR1
cmVTdG9yYWdlMTE6OlN3aXp6bGVDYWNoZVZhbHVlOjpTd2l6emxlQ2FjaGVWYWx1ZSgpCi0gICAg
OiBzd2l6emxlUmVkKEdMX05PTkUpLCBzd2l6emxlR3JlZW4oR0xfTk9ORSksIHN3aXp6bGVCbHVl
KEdMX05PTkUpLCBzd2l6emxlQWxwaGEoR0xfTk9ORSkKKyAgICA6IHN3aXp6bGVSZWQoR0xfSU5W
QUxJRF9JTkRFWCksCisgICAgICBzd2l6emxlR3JlZW4oR0xfSU5WQUxJRF9JTkRFWCksCisgICAg
ICBzd2l6emxlQmx1ZShHTF9JTlZBTElEX0lOREVYKSwKKyAgICAgIHN3aXp6bGVBbHBoYShHTF9J
TlZBTElEX0lOREVYKQogewogfQogCi1UZXh0dXJlU3RvcmFnZTExOjpTd2l6emxlQ2FjaGVWYWx1
ZTo6U3dpenpsZUNhY2hlVmFsdWUoR0xlbnVtIHJlZCwgR0xlbnVtIGdyZWVuLCBHTGVudW0gYmx1
ZSwgR0xlbnVtIGFscGhhKQorVGV4dHVyZVN0b3JhZ2UxMTo6U3dpenpsZUNhY2hlVmFsdWU6OlN3
aXp6bGVDYWNoZVZhbHVlKEdMZW51bSByZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdyZWVuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBibHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBhbHBoYSkKICAgICA6IHN3aXp6bGVSZWQocmVkKSwgc3dpenpsZUdyZWVuKGdyZWVuKSwgc3dp
enpsZUJsdWUoYmx1ZSksIHN3aXp6bGVBbHBoYShhbHBoYSkKIHsKIH0KIAogYm9vbCBUZXh0dXJl
U3RvcmFnZTExOjpTd2l6emxlQ2FjaGVWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBTd2l6emxlQ2Fj
aGVWYWx1ZSAmb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN3aXp6bGVSZWQgPT0gb3RoZXIu
c3dpenpsZVJlZCAmJgotICAgICAgICAgICBzd2l6emxlR3JlZW4gPT0gb3RoZXIuc3dpenpsZUdy
ZWVuICYmCi0gICAgICAgICAgIHN3aXp6bGVCbHVlID09IG90aGVyLnN3aXp6bGVCbHVlICYmCi0g
ICAgICAgICAgIHN3aXp6bGVBbHBoYSA9PSBvdGhlci5zd2l6emxlQWxwaGE7CisgICAgcmV0dXJu
IHN3aXp6bGVSZWQgPT0gb3RoZXIuc3dpenpsZVJlZCAmJiBzd2l6emxlR3JlZW4gPT0gb3RoZXIu
c3dpenpsZUdyZWVuICYmCisgICAgICAgICAgIHN3aXp6bGVCbHVlID09IG90aGVyLnN3aXp6bGVC
bHVlICYmIHN3aXp6bGVBbHBoYSA9PSBvdGhlci5zd2l6emxlQWxwaGE7CiB9CiAKIGJvb2wgVGV4
dHVyZVN0b3JhZ2UxMTo6U3dpenpsZUNhY2hlVmFsdWU6Om9wZXJhdG9yIT0oY29uc3QgU3dpenps
ZUNhY2hlVmFsdWUgJm90aGVyKSBjb25zdApAQCAtNTcsMjggKzY0LDI1IEBACiAKIGJvb2wgVGV4
dHVyZVN0b3JhZ2UxMTo6U1JWS2V5OjpvcGVyYXRvcjwoY29uc3QgU1JWS2V5ICZyaHMpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6dGllKGJhc2VMZXZlbCwgbWlwTGV2ZWxzLCBzd2l6emxlKSA8
IHN0ZDo6dGllKHJocy5iYXNlTGV2ZWwsIHJocy5taXBMZXZlbHMsIHJocy5zd2l6emxlKTsKKyAg
ICByZXR1cm4gc3RkOjp0aWUoYmFzZUxldmVsLCBtaXBMZXZlbHMsIHN3aXp6bGUpIDwKKyAgICAg
ICAgICAgc3RkOjp0aWUocmhzLmJhc2VMZXZlbCwgcmhzLm1pcExldmVscywgcmhzLnN3aXp6bGUp
OwogfQogCiBUZXh0dXJlU3RvcmFnZTExOjpUZXh0dXJlU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJl
bmRlcmVyLCBVSU5UIGJpbmRGbGFncywgVUlOVCBtaXNjRmxhZ3MpCiAgICAgOiBtUmVuZGVyZXIo
cmVuZGVyZXIpLAotICAgICAgbUJpbmRGbGFncyhiaW5kRmxhZ3MpLAotICAgICAgbU1pc2NGbGFn
cyhtaXNjRmxhZ3MpLAogICAgICAgbVRvcExldmVsKDApLAogICAgICAgbU1pcExldmVscygwKSwK
ICAgICAgIG1JbnRlcm5hbEZvcm1hdChHTF9OT05FKSwKLSAgICAgIG1UZXh0dXJlRm9ybWF0KERY
R0lfRk9STUFUX1VOS05PV04pLAotICAgICAgbVNoYWRlclJlc291cmNlRm9ybWF0KERYR0lfRk9S
TUFUX1VOS05PV04pLAotICAgICAgbVJlbmRlclRhcmdldEZvcm1hdChEWEdJX0ZPUk1BVF9VTktO
T1dOKSwKLSAgICAgIG1EZXB0aFN0ZW5jaWxGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisg
ICAgICBtVGV4dHVyZUZvcm1hdFNldChudWxscHRyKSwKKyAgICAgIG1Td2l6emxlRm9ybWF0U2V0
KG51bGxwdHIpLAogICAgICAgbVRleHR1cmVXaWR0aCgwKSwKICAgICAgIG1UZXh0dXJlSGVpZ2h0
KDApLAotICAgICAgbVRleHR1cmVEZXB0aCgwKQorICAgICAgbVRleHR1cmVEZXB0aCgwKSwKKyAg
ICAgIG1CaW5kRmxhZ3MoYmluZEZsYWdzKSwKKyAgICAgIG1NaXNjRmxhZ3MobWlzY0ZsYWdzKQog
ewotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01B
WF9URVhUVVJFX0xFVkVMUzsgaSsrKQotICAgIHsKLSAgICAgICAgbUxldmVsU1JWc1tpXSA9IG51
bGxwdHI7Ci0gICAgfQorICAgIG1MZXZlbFNSVnMuZmlsbChudWxscHRyKTsKKyAgICBtTGV2ZWxC
bGl0U1JWcy5maWxsKG51bGxwdHIpOwogfQogCiBUZXh0dXJlU3RvcmFnZTExOjp+VGV4dHVyZVN0
b3JhZ2UxMSgpCkBAIC04Niw2ICs5MCw3IEBACiAgICAgZm9yICh1bnNpZ25lZCBpbnQgbGV2ZWwg
PSAwOyBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGxldmVs
KyspCiAgICAgewogICAgICAgICBTYWZlUmVsZWFzZShtTGV2ZWxTUlZzW2xldmVsXSk7CisgICAg
ICAgIFNhZmVSZWxlYXNlKG1MZXZlbEJsaXRTUlZzW2xldmVsXSk7CiAgICAgfQogCiAgICAgZm9y
IChTUlZDYWNoZTo6aXRlcmF0b3IgaSA9IG1TcnZDYWNoZS5iZWdpbigpOyBpICE9IG1TcnZDYWNo
ZS5lbmQoKTsgaSsrKQpAQCAtOTUsMjAgKzEwMCwyMyBAQAogICAgIG1TcnZDYWNoZS5jbGVhcigp
OwogfQogCi1EV09SRCBUZXh0dXJlU3RvcmFnZTExOjpHZXRUZXh0dXJlQmluZEZsYWdzKEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsLCBib29sIHJl
bmRlclRhcmdldCkKK0RXT1JEIFRleHR1cmVTdG9yYWdlMTE6OkdldFRleHR1cmVCaW5kRmxhZ3Mo
R0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVyZXIxMURldmljZUNh
cHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVu
ZGVyVGFyZ2V0KQogewogICAgIFVJTlQgYmluZEZsYWdzID0gMDsKIAotICAgIGNvbnN0IGQzZDEx
OjpUZXh0dXJlRm9ybWF0ICZmb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZv
KGludGVybmFsRm9ybWF0LCBmZWF0dXJlTGV2ZWwpOwotICAgIGlmIChmb3JtYXRJbmZvLnNydkZv
cm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQorICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9y
bWF0ICZmb3JtYXRJbmZvID0KKyAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGlu
dGVybmFsRm9ybWF0LCByZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CisgICAgaWYgKGZvcm1hdEluZm8u
Zm9ybWF0U2V0LT5zcnZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKICAgICB7CiAgICAg
ICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRTsKICAgICB9Ci0gICAg
aWYgKGZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgaWYg
KGZvcm1hdEluZm8uZm9ybWF0U2V0LT5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikK
ICAgICB7CiAgICAgICAgIGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUw7CiAg
ICAgfQotICAgIGlmIChmb3JtYXRJbmZvLnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dO
ICYmIHJlbmRlclRhcmdldCkKKyAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnJ0dkZvcm1h
dCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOICYmIHJlbmRlclRhcmdldCkKICAgICB7CiAgICAgICAg
IGJpbmRGbGFncyB8PSBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7CiAgICAgfQpAQCAtMTE2LDE2
ICsxMjQsMjEgQEAKICAgICByZXR1cm4gYmluZEZsYWdzOwogfQogCi1EV09SRCBUZXh0dXJlU3Rv
cmFnZTExOjpHZXRUZXh0dXJlTWlzY0ZsYWdzKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgRDNEX0ZF
QVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsLCBib29sIHJlbmRlclRhcmdldCwgaW50IGxldmVscykK
K0RXT1JEIFRleHR1cmVTdG9yYWdlMTE6OkdldFRleHR1cmVNaXNjRmxhZ3MoR0xlbnVtIGludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVyZXIxMURldmljZUNhcHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzKQog
ewogICAgIFVJTlQgbWlzY0ZsYWdzID0gMDsKIAotICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9y
bWF0ICZmb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsRm9y
bWF0LCBmZWF0dXJlTGV2ZWwpOworICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZmb3Jt
YXRJbmZvID0KKyAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsRm9y
bWF0LCByZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CiAgICAgaWYgKHJlbmRlclRhcmdldCAmJiBsZXZl
bHMgPiAxKQogICAgIHsKLSAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3Jt
YXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKGZvcm1hdEluZm8uc3J2Rm9ybWF0KTsK
KyAgICAgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0KKyAgICAg
ICAgICAgIGQzZDExOjpHZXREWEdJRm9ybWF0SW5mbyhmb3JtYXRJbmZvLmZvcm1hdFNldC0+dGV4
Rm9ybWF0KTsKIAotICAgICAgICBpZiAoZHhnaUZvcm1hdEluZm8ubmF0aXZlTWlwbWFwU3VwcG9y
dChmZWF0dXJlTGV2ZWwpKQorICAgICAgICBpZiAoZHhnaUZvcm1hdEluZm8ubmF0aXZlTWlwbWFw
U3VwcG9ydChyZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtaXNjRmxhZ3MgfD0gRDNEMTFfUkVTT1VSQ0VfTUlTQ19HRU5FUkFURV9NSVBT
OwogICAgICAgICB9CkBAIC0xODYsMjMgKzE5OSwyNSBAQAogCiBVSU5UIFRleHR1cmVTdG9yYWdl
MTE6OmdldFN1YnJlc291cmNlSW5kZXgoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25z
dAogewotICAgIFVJTlQgbWlwU2xpY2UgPSBzdGF0aWNfY2FzdDxVSU5UPihpbmRleC5taXBJbmRl
eCArIG1Ub3BMZXZlbCk7Ci0gICAgVUlOVCBhcnJheVNsaWNlID0gc3RhdGljX2Nhc3Q8VUlOVD4o
aW5kZXguaGFzTGF5ZXIoKSA/IGluZGV4LmxheWVySW5kZXggOiAwKTsKKyAgICBVSU5UIG1pcFNs
aWNlICAgID0gc3RhdGljX2Nhc3Q8VUlOVD4oaW5kZXgubWlwSW5kZXggKyBtVG9wTGV2ZWwpOwor
ICAgIFVJTlQgYXJyYXlTbGljZSAgPSBzdGF0aWNfY2FzdDxVSU5UPihpbmRleC5oYXNMYXllcigp
ID8gaW5kZXgubGF5ZXJJbmRleCA6IDApOwogICAgIFVJTlQgc3VicmVzb3VyY2UgPSBEM0QxMUNh
bGNTdWJyZXNvdXJjZShtaXBTbGljZSwgYXJyYXlTbGljZSwgbU1pcExldmVscyk7CiAgICAgQVNT
RVJUKHN1YnJlc291cmNlICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8VUlOVD46Om1heCgpKTsKICAg
ICByZXR1cm4gc3VicmVzb3VyY2U7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpn
ZXRTUlYoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLCBJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXcgKipvdXRTUlYpCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0U1JW
KGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKQogewot
ICAgIGJvb2wgc3dpenpsZVJlcXVpcmVkID0gc2FtcGxlclN0YXRlLnN3aXp6bGVSZXF1aXJlZCgp
OwotICAgIGJvb2wgbWlwbWFwcGluZyA9IGdsOjpJc01pcG1hcEZpbHRlcmVkKHNhbXBsZXJTdGF0
ZSk7Ci0gICAgdW5zaWduZWQgaW50IG1pcExldmVscyA9IG1pcG1hcHBpbmcgPyAoc2FtcGxlclN0
YXRlLm1heExldmVsIC0gc2FtcGxlclN0YXRlLmJhc2VMZXZlbCArIDEpIDogMTsKKyAgICBib29s
IHN3aXp6bGVSZXF1aXJlZCAgID0gdGV4dHVyZVN0YXRlLnN3aXp6bGVSZXF1aXJlZCgpOworICAg
IGJvb2wgbWlwbWFwcGluZyAgICAgICAgPSBnbDo6SXNNaXBtYXBGaWx0ZXJlZCh0ZXh0dXJlU3Rh
dGUuc2FtcGxlclN0YXRlKTsKKyAgICB1bnNpZ25lZCBpbnQgbWlwTGV2ZWxzID0gbWlwbWFwcGlu
ZyA/ICh0ZXh0dXJlU3RhdGUubWF4TGV2ZWwgLSB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsICsgMSkg
OiAxOwogCi0gICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgJ21pcExldmVscycgbWlwbWFwIGxldmVs
cyBiZWxvdyB0aGUgYmFzZSBsZXZlbCAob2Zmc2V0IGJ5IHRoZSB0b3AgbGV2ZWwsIHdoaWNoIGNv
cnJlc3BvbmRzIHRvIEdMIGxldmVsIDApCi0gICAgbWlwTGV2ZWxzID0gc3RkOjptaW4obWlwTGV2
ZWxzLCBtTWlwTGV2ZWxzIC0gbVRvcExldmVsIC0gc2FtcGxlclN0YXRlLmJhc2VMZXZlbCk7Cisg
ICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgJ21pcExldmVscycgbWlwbWFwIGxldmVscyBiZWxvdyB0
aGUgYmFzZSBsZXZlbCAob2Zmc2V0IGJ5IHRoZSB0b3AgbGV2ZWwsCisgICAgLy8gd2hpY2ggY29y
cmVzcG9uZHMgdG8gR0wgbGV2ZWwgMCkKKyAgICBtaXBMZXZlbHMgPSBzdGQ6Om1pbihtaXBMZXZl
bHMsIG1NaXBMZXZlbHMgLSBtVG9wTGV2ZWwgLSB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsKTsKIAot
ICAgIGlmIChtUmVuZGVyZXItPmdldEZlYXR1cmVMZXZlbCgpIDw9IEQzRF9GRUFUVVJFX0xFVkVM
XzlfMykKKyAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZlYXR1
cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewogICAgICAgICBBU1NFUlQo
IXN3aXp6bGVSZXF1aXJlZCk7CiAgICAgICAgIEFTU0VSVChtaXBMZXZlbHMgPT0gMSB8fCBtaXBM
ZXZlbHMgPT0gbU1pcExldmVscyk7CkBAIC0yMjAsMTAgKzIzNSwxMSBAQAogCiAgICAgaWYgKHN3
aXp6bGVSZXF1aXJlZCkKICAgICB7Ci0gICAgICAgIHZlcmlmeVN3aXp6bGVFeGlzdHMoc2FtcGxl
clN0YXRlLnN3aXp6bGVSZWQsIHNhbXBsZXJTdGF0ZS5zd2l6emxlR3JlZW4sIHNhbXBsZXJTdGF0
ZS5zd2l6emxlQmx1ZSwgc2FtcGxlclN0YXRlLnN3aXp6bGVBbHBoYSk7CisgICAgICAgIHZlcmlm
eVN3aXp6bGVFeGlzdHModGV4dHVyZVN0YXRlLnN3aXp6bGVSZWQsIHRleHR1cmVTdGF0ZS5zd2l6
emxlR3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZVN0YXRlLnN3aXp6
bGVCbHVlLCB0ZXh0dXJlU3RhdGUuc3dpenpsZUFscGhhKTsKICAgICB9CiAKLSAgICBTUlZLZXkg
a2V5KHNhbXBsZXJTdGF0ZS5iYXNlTGV2ZWwsIG1pcExldmVscywgc3dpenpsZVJlcXVpcmVkKTsK
KyAgICBTUlZLZXkga2V5KHRleHR1cmVTdGF0ZS5iYXNlTGV2ZWwsIG1pcExldmVscywgc3dpenps
ZVJlcXVpcmVkKTsKICAgICBhdXRvIGl0ZXIgPSBtU3J2Q2FjaGUuZmluZChrZXkpOwogICAgIGlm
IChpdGVyICE9IG1TcnZDYWNoZS5lbmQoKSkKICAgICB7CkBAIC0yNTAsOCArMjY2LDkgQEAKICAg
ICB9CiAKICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7Ci0gICAg
RFhHSV9GT1JNQVQgZm9ybWF0ID0gKHN3aXp6bGVSZXF1aXJlZCA/IG1Td2l6emxlU2hhZGVyUmVz
b3VyY2VGb3JtYXQgOiBtU2hhZGVyUmVzb3VyY2VGb3JtYXQpOwotICAgIGdsOjpFcnJvciBlcnJv
ciA9IGNyZWF0ZVNSVihzYW1wbGVyU3RhdGUuYmFzZUxldmVsLCBtaXBMZXZlbHMsIGZvcm1hdCwg
dGV4dHVyZSwgJnNydik7CisgICAgRFhHSV9GT1JNQVQgZm9ybWF0ID0KKyAgICAgICAgKHN3aXp6
bGVSZXF1aXJlZCA/IG1Td2l6emxlRm9ybWF0U2V0LT5zcnZGb3JtYXQgOiBtVGV4dHVyZUZvcm1h
dFNldC0+c3J2Rm9ybWF0KTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVTUlYodGV4dHVy
ZVN0YXRlLmJhc2VMZXZlbCwgbWlwTGV2ZWxzLCBmb3JtYXQsIHRleHR1cmUsICZzcnYpOwogICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0y
NjMsMzkgKzI4MCw1OSBAQAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
Ci1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0U1JWTGV2ZWwoaW50IG1pcExldmVsLCBJ
RDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpCitnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMTo6Z2V0U1JWTGV2ZWwoaW50IG1pcExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgYmxpdFNSViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpCiB7CiAgICAg
QVNTRVJUKG1pcExldmVsID49IDAgJiYgbWlwTGV2ZWwgPCBnZXRMZXZlbENvdW50KCkpOwogCi0g
ICAgaWYgKCFtTGV2ZWxTUlZzW21pcExldmVsXSkKKyAgICBhdXRvICZsZXZlbFNSVnMgICAgICA9
IChibGl0U1JWKSA/IG1MZXZlbEJsaXRTUlZzIDogbUxldmVsU1JWczsKKyAgICBhdXRvICZvdGhl
ckxldmVsU1JWcyA9IChibGl0U1JWKSA/IG1MZXZlbFNSVnMgOiBtTGV2ZWxCbGl0U1JWczsKKwor
ICAgIGlmICghbGV2ZWxTUlZzW21pcExldmVsXSkKICAgICB7Ci0gICAgICAgIElEM0QxMVJlc291
cmNlICpyZXNvdXJjZSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlc291
cmNlKCZyZXNvdXJjZSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIC8v
IE9ubHkgY3JlYXRlIGEgZGlmZmVyZW50IFNSViBmb3IgYmxpdCBpZiBibGl0IGZvcm1hdCBpcyBk
aWZmZXJlbnQgZnJvbSByZWd1bGFyIHNydiBmb3JtYXQKKyAgICAgICAgaWYgKG90aGVyTGV2ZWxT
UlZzW21pcExldmVsXSAmJgorICAgICAgICAgICAgbVRleHR1cmVGb3JtYXRTZXQtPnNydkZvcm1h
dCA9PSBtVGV4dHVyZUZvcm1hdFNldC0+YmxpdFNSVkZvcm1hdCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgbGV2ZWxTUlZzW21pcExldmVsXSA9IG90
aGVyTGV2ZWxTUlZzW21pcExldmVsXTsKKyAgICAgICAgICAgIGxldmVsU1JWc1ttaXBMZXZlbF0t
PkFkZFJlZigpOwogICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAg
ICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGdsOjpF
cnJvciBlcnJvciA9IGdldFJlc291cmNlKCZyZXNvdXJjZSk7CisgICAgICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBlcnJvciA9IGNyZWF0ZVNSVihtaXBMZXZlbCwg
MSwgbVNoYWRlclJlc291cmNlRm9ybWF0LCByZXNvdXJjZSwgJm1MZXZlbFNSVnNbbWlwTGV2ZWxd
KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yOworICAgICAgICAgICAgRFhHSV9GT1JNQVQgcmVzb3VyY2VGb3JtYXQgPQor
ICAgICAgICAgICAgICAgIGJsaXRTUlYgPyBtVGV4dHVyZUZvcm1hdFNldC0+YmxpdFNSVkZvcm1h
dCA6IG1UZXh0dXJlRm9ybWF0U2V0LT5zcnZGb3JtYXQ7CisgICAgICAgICAgICBlcnJvciA9IGNy
ZWF0ZVNSVihtaXBMZXZlbCwgMSwgcmVzb3VyY2VGb3JtYXQsIHJlc291cmNlLCAmbGV2ZWxTUlZz
W21pcExldmVsXSk7CisgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIAotICAgICpvdXRTUlYgPSBtTGV2ZWxTUlZzW21pcExldmVsXTsKKyAgICAq
b3V0U1JWID0gbGV2ZWxTUlZzW21pcExldmVsXTsKIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0U1JWTGV2ZWxz
KEdMaW50IGJhc2VMZXZlbCwgR0xpbnQgbWF4TGV2ZWwsIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqKm91dFNSVikKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZXRTUlZMZXZlbHMoR0xp
bnQgYmFzZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBtYXhMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKQogewogICAgIHVuc2lnbmVkIGludCBt
aXBMZXZlbHMgPSBtYXhMZXZlbCAtIGJhc2VMZXZlbCArIDE7CiAKLSAgICAvLyBNYWtlIHN1cmUg
dGhlcmUncyAnbWlwTGV2ZWxzJyBtaXBtYXAgbGV2ZWxzIGJlbG93IHRoZSBiYXNlIGxldmVsIChv
ZmZzZXQgYnkgdGhlIHRvcCBsZXZlbCwgd2hpY2ggY29ycmVzcG9uZHMgdG8gR0wgbGV2ZWwgMCkK
KyAgICAvLyBNYWtlIHN1cmUgdGhlcmUncyAnbWlwTGV2ZWxzJyBtaXBtYXAgbGV2ZWxzIGJlbG93
IHRoZSBiYXNlIGxldmVsIChvZmZzZXQgYnkgdGhlIHRvcCBsZXZlbCwKKyAgICAvLyB3aGljaCBj
b3JyZXNwb25kcyB0byBHTCBsZXZlbCAwKQogICAgIG1pcExldmVscyA9IHN0ZDo6bWluKG1pcExl
dmVscywgbU1pcExldmVscyAtIG1Ub3BMZXZlbCAtIGJhc2VMZXZlbCk7CiAKLSAgICBpZiAobVJl
bmRlcmVyLT5nZXRGZWF0dXJlTGV2ZWwoKSA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCisgICAg
aWYgKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPD0g
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1pcExldmVscyA9
PSAxIHx8IG1pcExldmVscyA9PSBtTWlwTGV2ZWxzKTsKICAgICB9CkBAIC0zMjYsMjAgKzM2Mywy
OCBAQAogICAgIH0KIAogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2ID0gbnVsbHB0
cjsKLSAgICBlcnJvciA9IGNyZWF0ZVNSVihiYXNlTGV2ZWwsIG1pcExldmVscywgbVNoYWRlclJl
c291cmNlRm9ybWF0LCB0ZXh0dXJlLCAmc3J2KTsKKyAgICBlcnJvciA9IGNyZWF0ZVNSVihiYXNl
TGV2ZWwsIG1pcExldmVscywgbVRleHR1cmVGb3JtYXRTZXQtPnNydkZvcm1hdCwgdGV4dHVyZSwg
JnNydik7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBl
cnJvcjsKICAgICB9CiAKICAgICBtU3J2Q2FjaGVba2V5XSA9IHNydjsKLSAgICAqb3V0U1JWID0g
c3J2OworICAgICpvdXRTUlYgICAgICAgID0gc3J2OwogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZW5lcmF0ZVN3
aXp6bGVzKEdMZW51bSBzd2l6emxlUmVkLCBHTGVudW0gc3dpenpsZUdyZWVuLCBHTGVudW0gc3dp
enpsZUJsdWUsIEdMZW51bSBzd2l6emxlQWxwaGEpCitkM2QxMTo6QU5HTEVGb3JtYXQgVGV4dHVy
ZVN0b3JhZ2UxMTo6Z2V0QU5HTEVGb3JtYXQoKSBjb25zdAogeworICAgIHJldHVybiBtVGV4dHVy
ZUZvcm1hdFNldC0+Zm9ybWF0OworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2Vu
ZXJhdGVTd2l6emxlcyhHTGVudW0gc3dpenpsZVJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlR3JlZW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUJsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUFs
cGhhKQorewogICAgIFN3aXp6bGVDYWNoZVZhbHVlIHN3aXp6bGVUYXJnZXQoc3dpenpsZVJlZCwg
c3dpenpsZUdyZWVuLCBzd2l6emxlQmx1ZSwgc3dpenpsZUFscGhhKTsKICAgICBmb3IgKGludCBs
ZXZlbCA9IDA7IGxldmVsIDwgZ2V0TGV2ZWxDb3VudCgpOyBsZXZlbCsrKQogICAgIHsKQEAgLTM0
NywxNCArMzkyLDE1IEBACiAgICAgICAgIGlmIChtU3dpenpsZUNhY2hlW2xldmVsXSAhPSBzd2l6
emxlVGFyZ2V0KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBOZWVkIHRvIHJlLXJlbmRlciB0
aGUgc3dpenpsZSBmb3IgdGhpcyBsZXZlbAotICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICpzb3VyY2VTUlYgPSBOVUxMOwotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0g
Z2V0U1JWTGV2ZWwobGV2ZWwsICZzb3VyY2VTUlYpOworICAgICAgICAgICAgSUQzRDExU2hhZGVy
UmVzb3VyY2VWaWV3ICpzb3VyY2VTUlYgPSBudWxscHRyOworICAgICAgICAgICAgZ2w6OkVycm9y
IGVycm9yICAgICAgICAgICAgICAgICAgICAgPSBnZXRTUlZMZXZlbChsZXZlbCwgdHJ1ZSwgJnNv
dXJjZVNSVik7CisKICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0UlRWID0gTlVMTDsKKyAgICAgICAg
ICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3RSVFYgPSBudWxscHRyOwogICAgICAgICAg
ICAgZXJyb3IgPSBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGxldmVsLCAmZGVzdFJUVik7CiAgICAg
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgewpAQCAtMzY1LDcgKzQx
MSw4IEBACiAKICAgICAgICAgICAgIEJsaXQxMSAqYmxpdHRlciA9IG1SZW5kZXJlci0+Z2V0Qmxp
dHRlcigpOwogCi0gICAgICAgICAgICBlcnJvciA9IGJsaXR0ZXItPnN3aXp6bGVUZXh0dXJlKHNv
dXJjZVNSViwgZGVzdFJUViwgc2l6ZSwgc3dpenpsZVJlZCwgc3dpenpsZUdyZWVuLCBzd2l6emxl
Qmx1ZSwgc3dpenpsZUFscGhhKTsKKyAgICAgICAgICAgIGVycm9yID0gYmxpdHRlci0+c3dpenps
ZVRleHR1cmUoc291cmNlU1JWLCBkZXN0UlRWLCBzaXplLCBzd2l6emxlUmVkLCBzd2l6emxlR3Jl
ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXp6bGVC
bHVlLCBzd2l6emxlQWxwaGEpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0zOTYsMjkgKzQ0
MywyOCBAQAogICAgIH0KIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OnVwZGF0ZVN1
YnJlc291cmNlTGV2ZWwoSUQzRDExUmVzb3VyY2UgKnNyY1RleHR1cmUsIHVuc2lnbmVkIGludCBz
b3VyY2VTdWJyZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6OkJveCAm
Y29weUFyZWEpCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6dXBkYXRlU3VicmVzb3VyY2VM
ZXZlbChJRDNEMTFSZXNvdXJjZSAqc3JjVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzb3VyY2VTdWJyZXNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmNvcHlBcmVhKQogewogICAgIEFT
U0VSVChzcmNUZXh0dXJlKTsKIAotICAgIEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7Cisg
ICAgY29uc3QgR0xpbnQgbGV2ZWwgPSBpbmRleC5taXBJbmRleDsKIAogICAgIGludmFsaWRhdGVT
d2l6emxlQ2FjaGVMZXZlbChsZXZlbCk7CiAKICAgICBnbDo6RXh0ZW50cyB0ZXhTaXplKGdldExl
dmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCksIGdldExldmVsRGVwdGgobGV2
ZWwpKTsKIAotICAgIGJvb2wgZnVsbENvcHkgPSBjb3B5QXJlYS54ID09IDAgJiYKLSAgICAgICAg
ICAgICAgICAgICAgY29weUFyZWEueSA9PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIGNvcHlB
cmVhLnogPT0gMCAmJgotICAgICAgICAgICAgICAgICAgICBjb3B5QXJlYS53aWR0aCAgPT0gdGV4
U2l6ZS53aWR0aCAmJgotICAgICAgICAgICAgICAgICAgICBjb3B5QXJlYS5oZWlnaHQgPT0gdGV4
U2l6ZS5oZWlnaHQgJiYKLSAgICAgICAgICAgICAgICAgICAgY29weUFyZWEuZGVwdGggID09IHRl
eFNpemUuZGVwdGg7CisgICAgYm9vbCBmdWxsQ29weSA9IGNvcHlBcmVhLnggPT0gMCAmJiBjb3B5
QXJlYS55ID09IDAgJiYgY29weUFyZWEueiA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgIGNv
cHlBcmVhLndpZHRoID09IHRleFNpemUud2lkdGggJiYgY29weUFyZWEuaGVpZ2h0ID09IHRleFNp
emUuaGVpZ2h0ICYmCisgICAgICAgICAgICAgICAgICAgIGNvcHlBcmVhLmRlcHRoID09IHRleFNp
emUuZGVwdGg7CiAKLSAgICBJRDNEMTFSZXNvdXJjZSAqZHN0VGV4dHVyZSA9IE5VTEw7CisgICAg
SUQzRDExUmVzb3VyY2UgKmRzdFRleHR1cmUgPSBudWxscHRyOwogICAgIGdsOjpFcnJvciBlcnJv
cihHTF9OT19FUlJPUik7CiAKLSAgICAvLyBJZiB0aGUgemVyby1MT0Qgd29ya2Fyb3VuZCBpcyBh
Y3RpdmUgYW5kIHdlIHdhbnQgdG8gdXBkYXRlIGEgbGV2ZWwgZ3JlYXRlciB0aGFuIHplcm8sIHRo
ZW4gd2Ugc2hvdWxkCi0gICAgLy8gdXBkYXRlIHRoZSBtaXBtYXBwZWQgdGV4dHVyZSwgZXZlbiBp
ZiBtYXBtYXBzIGFyZSBjdXJyZW50bHkgZGlzYWJsZWQuCisgICAgLy8gSWYgdGhlIHplcm8tTE9E
IHdvcmthcm91bmQgaXMgYWN0aXZlIGFuZCB3ZSB3YW50IHRvIHVwZGF0ZSBhIGxldmVsIGdyZWF0
ZXIgdGhhbiB6ZXJvLCB0aGVuIHdlCisgICAgLy8gc2hvdWxkIHVwZGF0ZSB0aGUgbWlwbWFwcGVk
IHRleHR1cmUsIGV2ZW4gaWYgbWFwbWFwcyBhcmUgY3VycmVudGx5IGRpc2FibGVkLgogICAgIGlm
IChpbmRleC5taXBJbmRleCA+IDAgJiYgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9N
YXhMb2RXb3JrYXJvdW5kKQogICAgIHsKICAgICAgICAgZXJyb3IgPSBnZXRNaXBwZWRSZXNvdXJj
ZSgmZHN0VGV4dHVyZSk7CkBAIC00MzcsNDQgKzQ4Myw0OSBAQAogCiAgICAgQVNTRVJUKGRzdFRl
eHR1cmUpOwogCi0gICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0g
ZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKG1UZXh0dXJlRm9ybWF0KTsKLSAgICBpZiAoIWZ1bGxD
b3B5ICYmIChkeGdpRm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwIHx8IGR4Z2lGb3JtYXRJbmZvLnN0
ZW5jaWxCaXRzID4gMCkpCisgICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9y
bWF0U2l6ZUluZm8gPQorICAgICAgICBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1UZXh0
dXJlRm9ybWF0U2V0LT50ZXhGb3JtYXQpOworICAgIGlmICghZnVsbENvcHkgJiYgbVRleHR1cmVG
b3JtYXRTZXQtPmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQogICAgIHsKICAgICAg
ICAgLy8gQ29weVN1YnJlc291cmNlUmVnaW9uIGNhbm5vdCBjb3B5IHBhcnRpYWwgZGVwdGggc3Rl
bmNpbHMsIHVzZSB0aGUgYmxpdHRlciBpbnN0ZWFkCiAgICAgICAgIEJsaXQxMSAqYmxpdHRlciA9
IG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpOwogCiAgICAgICAgIHJldHVybiBibGl0dGVyLT5jb3B5
RGVwdGhTdGVuY2lsKHNyY1RleHR1cmUsIHNvdXJjZVN1YnJlc291cmNlLCBjb3B5QXJlYSwgdGV4
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0VGV4dHVy
ZSwgZHN0U3VicmVzb3VyY2UsIGNvcHlBcmVhLCB0ZXhTaXplLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHN0VGV4dHVyZSwgZHN0U3VicmVzb3VyY2UsIGNvcHlBcmVhLCB0ZXhT
aXplLCBudWxscHRyKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgRDNEMTFfQk9Y
IHNyY0JveDsKICAgICAgICAgc3JjQm94LmxlZnQgPSBjb3B5QXJlYS54OwogICAgICAgICBzcmNC
b3gudG9wID0gY29weUFyZWEueTsKLSAgICAgICAgc3JjQm94LnJpZ2h0ID0gY29weUFyZWEueCAr
IHJvdW5kVXAoc3RhdGljX2Nhc3Q8VUlOVD4oY29weUFyZWEud2lkdGgpLCBkeGdpRm9ybWF0SW5m
by5ibG9ja1dpZHRoKTsKLSAgICAgICAgc3JjQm94LmJvdHRvbSA9IGNvcHlBcmVhLnkgKyByb3Vu
ZFVwKHN0YXRpY19jYXN0PFVJTlQ+KGNvcHlBcmVhLmhlaWdodCksIGR4Z2lGb3JtYXRJbmZvLmJs
b2NrSGVpZ2h0KTsKKyAgICAgICAgc3JjQm94LnJpZ2h0ID0KKyAgICAgICAgICAgIGNvcHlBcmVh
LnggKyByb3VuZFVwKHN0YXRpY19jYXN0PFVJTlQ+KGNvcHlBcmVhLndpZHRoKSwgZHhnaUZvcm1h
dFNpemVJbmZvLmJsb2NrV2lkdGgpOworICAgICAgICBzcmNCb3guYm90dG9tID0gY29weUFyZWEu
eSArCisgICAgICAgICAgICAgICAgICAgICAgICByb3VuZFVwKHN0YXRpY19jYXN0PFVJTlQ+KGNv
cHlBcmVhLmhlaWdodCksIGR4Z2lGb3JtYXRTaXplSW5mby5ibG9ja0hlaWdodCk7CiAgICAgICAg
IHNyY0JveC5mcm9udCA9IGNvcHlBcmVhLno7Ci0gICAgICAgIHNyY0JveC5iYWNrID0gY29weUFy
ZWEueiArIGNvcHlBcmVhLmRlcHRoOworICAgICAgICBzcmNCb3guYmFjayAgPSBjb3B5QXJlYS56
ICsgY29weUFyZWEuZGVwdGg7CiAKICAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4
dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwogCi0gICAgICAgIGNvbnRleHQtPkNv
cHlTdWJyZXNvdXJjZVJlZ2lvbihkc3RUZXh0dXJlLCBkc3RTdWJyZXNvdXJjZSwgY29weUFyZWEu
eCwgY29weUFyZWEueSwgY29weUFyZWEueiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNyY1RleHR1cmUsIHNvdXJjZVN1YnJlc291cmNlLCBmdWxsQ29weSA/IE5VTEwg
OiAmc3JjQm94KTsKKyAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKGRzdFRl
eHR1cmUsIGRzdFN1YnJlc291cmNlLCBjb3B5QXJlYS54LCBjb3B5QXJlYS55LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weUFyZWEueiwgc3JjVGV4dHVyZSwgc291
cmNlU3VicmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
dWxsQ29weSA/IG51bGxwdHIgOiAmc3JjQm94KTsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CiAgICAgfQogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Y29w
eVN1YnJlc291cmNlTGV2ZWwoSUQzRDExUmVzb3VyY2UqIGRzdFRleHR1cmUsIHVuc2lnbmVkIGlu
dCBkc3RTdWJyZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjpCb3ggJnJl
Z2lvbikKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpjb3B5U3VicmVzb3VyY2VMZXZlbChJ
RDNEMTFSZXNvdXJjZSAqZHN0VGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZHN0U3VicmVzb3VyY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpCb3ggJnJlZ2lvbikKIHsKICAgICBBU1NFUlQoZHN0VGV4dHVyZSk7
CiAKLSAgICBJRDNEMTFSZXNvdXJjZSAqc3JjVGV4dHVyZSA9IE5VTEw7CisgICAgSUQzRDExUmVz
b3VyY2UgKnNyY1RleHR1cmUgPSBudWxscHRyOwogICAgIGdsOjpFcnJvciBlcnJvcihHTF9OT19F
UlJPUik7CiAKLSAgICAvLyBJZiB0aGUgemVyby1MT0Qgd29ya2Fyb3VuZCBpcyBhY3RpdmUgYW5k
IHdlIHdhbnQgdG8gdXBkYXRlIGEgbGV2ZWwgZ3JlYXRlciB0aGFuIHplcm8sIHRoZW4gd2Ugc2hv
dWxkCi0gICAgLy8gdXBkYXRlIHRoZSBtaXBtYXBwZWQgdGV4dHVyZSwgZXZlbiBpZiBtYXBtYXBz
IGFyZSBjdXJyZW50bHkgZGlzYWJsZWQuCisgICAgLy8gSWYgdGhlIHplcm8tTE9EIHdvcmthcm91
bmQgaXMgYWN0aXZlIGFuZCB3ZSB3YW50IHRvIHVwZGF0ZSBhIGxldmVsIGdyZWF0ZXIgdGhhbiB6
ZXJvLCB0aGVuIHdlCisgICAgLy8gc2hvdWxkIHVwZGF0ZSB0aGUgbWlwbWFwcGVkIHRleHR1cmUs
IGV2ZW4gaWYgbWFwbWFwcyBhcmUgY3VycmVudGx5IGRpc2FibGVkLgogICAgIGlmIChpbmRleC5t
aXBJbmRleCA+IDAgJiYgbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3Jr
YXJvdW5kKQogICAgIHsKICAgICAgICAgZXJyb3IgPSBnZXRNaXBwZWRSZXNvdXJjZSgmc3JjVGV4
dHVyZSk7CkBAIC00OTUsMjMgKzU0NiwyMyBAQAogCiAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAq
Y29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwogCi0gICAgLy8gRDNEMTEg
Y2FuJ3QgcGVyZm9ybSBwYXJ0aWFsIENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBvbiBkZXB0aC9zdGVu
Y2lsIHRleHR1cmVzLCBzbyBwU3JjQm94IHNob3VsZCBiZSBOVUxMLgorICAgIC8vIEQzRDExIGNh
bid0IHBlcmZvcm0gcGFydGlhbCBDb3B5U3VicmVzb3VyY2VSZWdpb24gb24gZGVwdGgvc3RlbmNp
bCB0ZXh0dXJlcywgc28gcFNyY0JveAorICAgIC8vIHNob3VsZCBiZSBudWxscHRyLgogICAgIEQz
RDExX0JPWCBzcmNCb3g7Ci0gICAgRDNEMTFfQk9YICpwU3JjQm94ID0gTlVMTDsKLSAgICBpZiAo
bVJlbmRlcmVyLT5nZXRGZWF0dXJlTGV2ZWwoKSA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCisg
ICAgRDNEMTFfQk9YICpwU3JjQm94ID0gbnVsbHB0cjsKKyAgICBpZiAobVJlbmRlcmVyLT5nZXRS
ZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85
XzMpCiAgICAgewotICAgICAgICAvLyBIb3dldmVyLCBEM0QxMExldmVsOSBkb2Vzbid0IGFsd2F5
cyBwZXJmb3JtIENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBjb3JyZWN0bHkgdW5sZXNzIHRoZSBzb3Vy
Y2UgYm94Ci0gICAgICAgIC8vIGlzIHNwZWNpZmllZC4gVGhpcyBpcyBva2F5LCBzaW5jZSB3ZSBk
b24ndCBwZXJmb3JtIENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBvbiBkZXB0aC9zdGVuY2lsCi0gICAg
ICAgIC8vIHRleHR1cmVzIG9uIDlfMy4KLSAgICAgICAgQVNTRVJUKGQzZDExOjpHZXREWEdJRm9y
bWF0SW5mbyhtVGV4dHVyZUZvcm1hdCkuZGVwdGhCaXRzID09IDApOwotICAgICAgICBBU1NFUlQo
ZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKG1UZXh0dXJlRm9ybWF0KS5zdGVuY2lsQml0cyA9PSAw
KTsKLSAgICAgICAgc3JjQm94LmxlZnQgPSByZWdpb24ueDsKLSAgICAgICAgc3JjQm94LnJpZ2h0
ID0gcmVnaW9uLnggKyByZWdpb24ud2lkdGg7Ci0gICAgICAgIHNyY0JveC50b3AgPSByZWdpb24u
eTsKKyAgICAgICAgLy8gSG93ZXZlciwgRDNEMTBMZXZlbDkgZG9lc24ndCBhbHdheXMgcGVyZm9y
bSBDb3B5U3VicmVzb3VyY2VSZWdpb24gY29ycmVjdGx5IHVubGVzcyB0aGUKKyAgICAgICAgLy8g
c291cmNlIGJveCBpcyBzcGVjaWZpZWQuIFRoaXMgaXMgb2theSwgc2luY2Ugd2UgZG9uJ3QgcGVy
Zm9ybSBDb3B5U3VicmVzb3VyY2VSZWdpb24gb24KKyAgICAgICAgLy8gZGVwdGgvc3RlbmNpbCB0
ZXh0dXJlcyBvbiA5XzMuCisgICAgICAgIEFTU0VSVChtVGV4dHVyZUZvcm1hdFNldC0+ZHN2Rm9y
bWF0ID09IERYR0lfRk9STUFUX1VOS05PV04pOworICAgICAgICBzcmNCb3gubGVmdCAgID0gcmVn
aW9uLng7CisgICAgICAgIHNyY0JveC5yaWdodCAgPSByZWdpb24ueCArIHJlZ2lvbi53aWR0aDsK
KyAgICAgICAgc3JjQm94LnRvcCAgICA9IHJlZ2lvbi55OwogICAgICAgICBzcmNCb3guYm90dG9t
ID0gcmVnaW9uLnkgKyByZWdpb24uaGVpZ2h0OwotICAgICAgICBzcmNCb3guZnJvbnQgPSByZWdp
b24uejsKLSAgICAgICAgc3JjQm94LmJhY2sgPSByZWdpb24ueiArIHJlZ2lvbi5kZXB0aDsKLSAg
ICAgICAgcFNyY0JveCA9ICZzcmNCb3g7CisgICAgICAgIHNyY0JveC5mcm9udCAgPSByZWdpb24u
ejsKKyAgICAgICAgc3JjQm94LmJhY2sgICA9IHJlZ2lvbi56ICsgcmVnaW9uLmRlcHRoOworICAg
ICAgICBwU3JjQm94ICAgICAgID0gJnNyY0JveDsKICAgICB9CiAKICAgICBjb250ZXh0LT5Db3B5
U3VicmVzb3VyY2VSZWdpb24oZHN0VGV4dHVyZSwgZHN0U3VicmVzb3VyY2UsIHJlZ2lvbi54LCBy
ZWdpb24ueSwgcmVnaW9uLnosCkBAIC01MjAsMjggKzU3MSwzMCBAQAogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2Vu
ZXJhdGVNaXBtYXAoY29uc3QgZ2w6OkltYWdlSW5kZXggJnNvdXJjZUluZGV4LCBjb25zdCBnbDo6
SW1hZ2VJbmRleCAmZGVzdEluZGV4KQorZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdlbmVy
YXRlTWlwbWFwKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmZGVz
dEluZGV4KQogewogICAgIEFTU0VSVChzb3VyY2VJbmRleC5sYXllckluZGV4ID09IGRlc3RJbmRl
eC5sYXllckluZGV4KTsKIAogICAgIGludmFsaWRhdGVTd2l6emxlQ2FjaGVMZXZlbChkZXN0SW5k
ZXgubWlwSW5kZXgpOwogCi0gICAgUmVuZGVyVGFyZ2V0RDNEICpzb3VyY2UgPSBOVUxMOworICAg
IFJlbmRlclRhcmdldEQzRCAqc291cmNlID0gbnVsbHB0cjsKICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBnZXRSZW5kZXJUYXJnZXQoc291cmNlSW5kZXgsICZzb3VyY2UpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgUmVu
ZGVyVGFyZ2V0RDNEICpkZXN0ID0gTlVMTDsKKyAgICBSZW5kZXJUYXJnZXREM0QgKmRlc3QgPSBu
dWxscHRyOwogICAgIGVycm9yID0gZ2V0UmVuZGVyVGFyZ2V0KGRlc3RJbmRleCwgJmRlc3QpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgfQogCi0gICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2VTUlYgPSBHZXRBczxS
ZW5kZXJUYXJnZXQxMT4oc291cmNlKS0+Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCk7Ci0gICAgSUQz
RDExUmVuZGVyVGFyZ2V0VmlldyAqZGVzdFJUViA9IEdldEFzPFJlbmRlclRhcmdldDExPihkZXN0
KS0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
c291cmNlU1JWID0KKyAgICAgICAgR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHNvdXJjZSktPmdldEJs
aXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0
UlRWICAgICA9IEdldEFzPFJlbmRlclRhcmdldDExPihkZXN0KS0+Z2V0UmVuZGVyVGFyZ2V0Vmll
dygpOwogCiAgICAgZ2w6OkJveCBzb3VyY2VBcmVhKDAsIDAsIDAsIHNvdXJjZS0+Z2V0V2lkdGgo
KSwgc291cmNlLT5nZXRIZWlnaHQoKSwgc291cmNlLT5nZXREZXB0aCgpKTsKICAgICBnbDo6RXh0
ZW50cyBzb3VyY2VTaXplKHNvdXJjZS0+Z2V0V2lkdGgoKSwgc291cmNlLT5nZXRIZWlnaHQoKSwg
c291cmNlLT5nZXREZXB0aCgpKTsKQEAgLTU1MCwxMSArNjAzLDE1IEBACiAgICAgZ2w6OkV4dGVu
dHMgZGVzdFNpemUoZGVzdC0+Z2V0V2lkdGgoKSwgZGVzdC0+Z2V0SGVpZ2h0KCksIGRlc3QtPmdl
dERlcHRoKCkpOwogCiAgICAgQmxpdDExICpibGl0dGVyID0gbVJlbmRlcmVyLT5nZXRCbGl0dGVy
KCk7Ci0gICAgcmV0dXJuIGJsaXR0ZXItPmNvcHlUZXh0dXJlKHNvdXJjZVNSViwgc291cmNlQXJl
YSwgc291cmNlU2l6ZSwgZGVzdFJUViwgZGVzdEFyZWEsIGRlc3RTaXplLCBOVUxMLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHNvdXJj
ZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkuZm9ybWF0LCBHTF9MSU5FQVIpOworICAgIHJldHVybiBi
bGl0dGVyLT5jb3B5VGV4dHVyZSgKKyAgICAgICAgc291cmNlU1JWLCBzb3VyY2VBcmVhLCBzb3Vy
Y2VTaXplLCBkZXN0UlRWLCBkZXN0QXJlYSwgZGVzdFNpemUsIG51bGxwdHIsCisgICAgICAgIGds
OjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc291cmNlLT5nZXRJbnRlcm5hbEZvcm1hdCgpKS5mb3Jt
YXQsIEdMX0xJTkVBUiwgZmFsc2UpOwogfQogCi12b2lkIFRleHR1cmVTdG9yYWdlMTE6OnZlcmlm
eVN3aXp6bGVFeGlzdHMoR0xlbnVtIHN3aXp6bGVSZWQsIEdMZW51bSBzd2l6emxlR3JlZW4sIEdM
ZW51bSBzd2l6emxlQmx1ZSwgR0xlbnVtIHN3aXp6bGVBbHBoYSkKK3ZvaWQgVGV4dHVyZVN0b3Jh
Z2UxMTo6dmVyaWZ5U3dpenpsZUV4aXN0cyhHTGVudW0gc3dpenpsZVJlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUdyZWVuLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlQmx1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3dp
enpsZUFscGhhKQogewogICAgIFN3aXp6bGVDYWNoZVZhbHVlIHN3aXp6bGVUYXJnZXQoc3dpenps
ZVJlZCwgc3dpenpsZUdyZWVuLCBzd2l6emxlQmx1ZSwgc3dpenpsZUFscGhhKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBsZXZlbCA9IDA7IGxldmVsIDwgbU1pcExldmVsczsgbGV2ZWwrKykKQEAg
LTU2MywxOSArNjIwLDQ0IEBACiAgICAgfQogfQogCit2b2lkIFRleHR1cmVTdG9yYWdlMTE6OmNs
ZWFyU1JWQ2FjaGUoKQoreworICAgIGludmFsaWRhdGVTd2l6emxlQ2FjaGUoKTsKKworICAgIGF1
dG8gaXRlciA9IG1TcnZDYWNoZS5iZWdpbigpOworICAgIHdoaWxlIChpdGVyICE9IG1TcnZDYWNo
ZS5lbmQoKSkKKyAgICB7CisgICAgICAgIGlmICghaXRlci0+Zmlyc3Quc3dpenpsZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgU2FmZVJlbGVhc2UoaXRlci0+c2Vjb25kKTsKKyAgICAgICAgICAg
IGl0ZXIgPSBtU3J2Q2FjaGUuZXJhc2UoaXRlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICBpdGVyKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBm
b3IgKHNpemVfdCBsZXZlbCA9IDA7IGxldmVsIDwgbUxldmVsU1JWcy5zaXplKCk7IGxldmVsKysp
CisgICAgeworICAgICAgICBTYWZlUmVsZWFzZShtTGV2ZWxTUlZzW2xldmVsXSk7CisgICAgICAg
IFNhZmVSZWxlYXNlKG1MZXZlbEJsaXRTUlZzW2xldmVsXSk7CisgICAgfQorfQorCiBnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMTo6Y29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqZGVzdFN0
b3JhZ2UpCiB7CiAgICAgQVNTRVJUKGRlc3RTdG9yYWdlKTsKIAotICAgIElEM0QxMVJlc291cmNl
ICpzb3VyY2VSZXNvdWNlID0gTlVMTDsKKyAgICBJRDNEMTFSZXNvdXJjZSAqc291cmNlUmVzb3Vj
ZSA9IG51bGxwdHI7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnNvdXJjZVJl
c291Y2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4g
ZXJyb3I7CiAgICAgfQogCi0gICAgVGV4dHVyZVN0b3JhZ2UxMSAqZGVzdDExID0gR2V0QXM8VGV4
dHVyZVN0b3JhZ2UxMT4oZGVzdFN0b3JhZ2UpOwotICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVz
b3VyY2UgPSBOVUxMOworICAgIFRleHR1cmVTdG9yYWdlMTEgKmRlc3QxMSAgICAgPSBHZXRBczxU
ZXh0dXJlU3RvcmFnZTExPihkZXN0U3RvcmFnZSk7CisgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RS
ZXNvdXJjZSA9IG51bGxwdHI7CiAgICAgZXJyb3IgPSBkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0
UmVzb3VyY2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewpAQCAtNTkwLDEyICs2
NzIsMTYgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVy
cm9yIFRleHR1cmVTdG9yYWdlMTE6OnNldERhdGEoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4
LCBJbWFnZUQzRCAqaW1hZ2UsIGNvbnN0IGdsOjpCb3ggKmRlc3RCb3gsIEdMZW51bSB0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxEYXRhKQorZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTE6OnNldERhdGEoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VEM0QgKmltYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAqZGVzdEJveCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBp
eGVsRGF0YSkKIHsKICAgICBBU1NFUlQoIWltYWdlLT5pc0RpcnR5KCkpOwogCi0gICAgSUQzRDEx
UmVzb3VyY2UgKnJlc291cmNlID0gTlVMTDsKKyAgICBJRDNEMTFSZXNvdXJjZSAqcmVzb3VyY2Ug
PSBudWxscHRyOwogICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlc291cmNlKCZyZXNvdXJjZSk7
CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CkBAIC02MDUsMTAgKzY5MSwxMiBAQAog
CiAgICAgVUlOVCBkZXN0U3VicmVzb3VyY2UgPSBnZXRTdWJyZXNvdXJjZUluZGV4KGluZGV4KTsK
IAotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZvID0gZ2w6
OkdldEludGVybmFsRm9ybWF0SW5mbyhpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSk7CisgICAg
Y29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPQorICAgICAgICBn
bDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGltYWdlLT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKIAot
ICAgIGdsOjpCb3ggbGV2ZWxCb3goMCwgMCwgMCwgZ2V0TGV2ZWxXaWR0aChpbmRleC5taXBJbmRl
eCksIGdldExldmVsSGVpZ2h0KGluZGV4Lm1pcEluZGV4KSwgZ2V0TGV2ZWxEZXB0aChpbmRleC5t
aXBJbmRleCkpOwotICAgIGJvb2wgZnVsbFVwZGF0ZSA9IChkZXN0Qm94ID09IE5VTEwgfHwgKmRl
c3RCb3ggPT0gbGV2ZWxCb3gpOworICAgIGdsOjpCb3ggbGV2ZWxCb3goMCwgMCwgMCwgZ2V0TGV2
ZWxXaWR0aChpbmRleC5taXBJbmRleCksIGdldExldmVsSGVpZ2h0KGluZGV4Lm1pcEluZGV4KSwK
KyAgICAgICAgICAgICAgICAgICAgIGdldExldmVsRGVwdGgoaW5kZXgubWlwSW5kZXgpKTsKKyAg
ICBib29sIGZ1bGxVcGRhdGUgPSAoZGVzdEJveCA9PSBudWxscHRyIHx8ICpkZXN0Qm94ID09IGxl
dmVsQm94KTsKICAgICBBU1NFUlQoaW50ZXJuYWxGb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwIHx8
IGZ1bGxVcGRhdGUpOwogCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogSGFuZGxlIGNvbXByZXNzZWQg
Zm9ybWF0cwpAQCAtNjE3LDM0ICs3MDUsNTEgQEAKICAgICAvLyB3aXRoIGNvbXByZXNzZWQgZm9y
bWF0cyBpbiB0aGUgY2FsbGluZyBsb2dpYy4KICAgICBBU1NFUlQoIWludGVybmFsRm9ybWF0SW5m
by5jb21wcmVzc2VkKTsKIAotICAgIGludCB3aWR0aCA9IGRlc3RCb3ggPyBkZXN0Qm94LT53aWR0
aCA6IHN0YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldFdpZHRoKCkpOwotICAgIGludCBoZWlnaHQg
PSBkZXN0Qm94ID8gZGVzdEJveC0+aGVpZ2h0IDogc3RhdGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0
SGVpZ2h0KCkpOwotICAgIGludCBkZXB0aCA9IGRlc3RCb3ggPyBkZXN0Qm94LT5kZXB0aCA6IHN0
YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldERlcHRoKCkpOwotICAgIFVJTlQgc3JjUm93UGl0Y2gg
PSBpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIHdpZHRoLCB1bnBhY2su
YWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoKTsKLSAgICBVSU5UIHNyY0RlcHRoUGl0Y2ggPSBp
bnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2godHlwZSwgd2lkdGgsIGhlaWdodCwg
dW5wYWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCk7CisgICAgY29uc3QgaW50IHdpZHRo
ICA9IGRlc3RCb3ggPyBkZXN0Qm94LT53aWR0aCA6IHN0YXRpY19jYXN0PGludD4oaW1hZ2UtPmdl
dFdpZHRoKCkpOworICAgIGNvbnN0IGludCBoZWlnaHQgPSBkZXN0Qm94ID8gZGVzdEJveC0+aGVp
Z2h0IDogc3RhdGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0SGVpZ2h0KCkpOworICAgIGNvbnN0IGlu
dCBkZXB0aCA9IGRlc3RCb3ggPyBkZXN0Qm94LT5kZXB0aCA6IHN0YXRpY19jYXN0PGludD4oaW1h
Z2UtPmdldERlcHRoKCkpOworICAgIGNvbnN0IFVJTlQgc3JjUm93UGl0Y2ggPQorICAgICAgICBp
bnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIHdpZHRoLCB1bnBhY2suYWxp
Z25tZW50LCB1bnBhY2sucm93TGVuZ3RoKTsKKyAgICBjb25zdCBVSU5UIHNyY0RlcHRoUGl0Y2gg
PSBpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goCisgICAgICAgIHR5cGUsIHdp
ZHRoLCBoZWlnaHQsIHVucGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgsIHVucGFjay5p
bWFnZUhlaWdodCk7CisgICAgY29uc3QgR0xzaXplaSBzcmNTa2lwQnl0ZXMgPSBpbnRlcm5hbEZv
cm1hdEluZm8uY29tcHV0ZVNraXBQaXhlbHMoCisgICAgICAgIHNyY1Jvd1BpdGNoLCBzcmNEZXB0
aFBpdGNoLCB1bnBhY2suc2tpcEltYWdlcywgdW5wYWNrLnNraXBSb3dzLCB1bnBhY2suc2tpcFBp
eGVscyk7CiAKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNkMTFGb3JtYXQgPSBk
M2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW1hZ2UtPmdldEludGVybmFsRm9ybWF0KCksIG1S
ZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVsKCkpOwotICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0
ICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpHZXREWEdJRm9ybWF0SW5mbyhkM2QxMUZvcm1hdC50
ZXhGb3JtYXQpOworICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZkM2QxMUZvcm1hdCA9
IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbygKKyAgICAgICAgaW1hZ2UtPmdldEludGVybmFs
Rm9ybWF0KCksIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisgICAgY29u
c3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDEx
OjpHZXREWEdJRm9ybWF0U2l6ZUluZm8oZDNkMTFGb3JtYXQuZm9ybWF0U2V0LT50ZXhGb3JtYXQp
OwogCi0gICAgc2l6ZV90IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBpeGVsQnl0
ZXM7CisgICAgY29uc3Qgc2l6ZV90IG91dHB1dFBpeGVsU2l6ZSA9IGR4Z2lGb3JtYXRJbmZvLnBp
eGVsQnl0ZXM7CiAKLSAgICBVSU5UIGJ1ZmZlclJvd1BpdGNoID0gb3V0cHV0UGl4ZWxTaXplICog
d2lkdGg7CisgICAgVUlOVCBidWZmZXJSb3dQaXRjaCAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihvdXRwdXRQaXhlbFNpemUpICogd2lkdGg7CiAgICAgVUlOVCBidWZmZXJEZXB0aFBpdGNo
ID0gYnVmZmVyUm93UGl0Y2ggKiBoZWlnaHQ7CiAKLSAgICBzaXplX3QgbmVlZGVkU2l6ZSA9IGJ1
ZmZlckRlcHRoUGl0Y2ggKiBkZXB0aDsKLSAgICBNZW1vcnlCdWZmZXIgKmNvbnZlcnNpb25CdWZm
ZXIgPSBOVUxMOwotICAgIGVycm9yID0gbVJlbmRlcmVyLT5nZXRTY3JhdGNoTWVtb3J5QnVmZmVy
KG5lZWRlZFNpemUsICZjb252ZXJzaW9uQnVmZmVyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQorICAgIGNvbnN0IHNpemVfdCBuZWVkZWRTaXplICAgICAgICA9IGJ1ZmZlckRlcHRoUGl0Y2gg
KiBkZXB0aDsKKyAgICBNZW1vcnlCdWZmZXIgKmNvbnZlcnNpb25CdWZmZXIgPSBudWxscHRyOwor
ICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgICAgICAgICAgICA9IG51bGxwdHI7CisKKyAgICBkM2Qx
MTo6TG9hZEltYWdlRnVuY3Rpb25JbmZvIGxvYWRGdW5jdGlvbkluZm8gPSBkM2QxMUZvcm1hdC5s
b2FkRnVuY3Rpb25zLmF0KHR5cGUpOworICAgIGlmIChsb2FkRnVuY3Rpb25JbmZvLnJlcXVpcmVz
Q29udmVyc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgZXJyb3Ig
PSBtUmVuZGVyZXItPmdldFNjcmF0Y2hNZW1vcnlCdWZmZXIobmVlZGVkU2l6ZSwgJmNvbnZlcnNp
b25CdWZmZXIpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBsb2FkRnVuY3Rpb25J
bmZvLmxvYWRGdW5jdGlvbih3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgcGl4ZWxEYXRhICsgc3JjU2tp
cEJ5dGVzLCBzcmNSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3JjRGVwdGhQaXRjaCwgY29udmVyc2lvbkJ1ZmZlci0+ZGF0YSgpLCBidWZmZXJSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyRGVwdGhQaXRj
aCk7CisgICAgICAgIGRhdGEgPSBjb252ZXJzaW9uQnVmZmVyLT5kYXRhKCk7CiAgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGRhdGEgICAgICAgICAgICAgPSBwaXhlbERhdGEgKyBzcmNT
a2lwQnl0ZXM7CisgICAgICAgIGJ1ZmZlclJvd1BpdGNoICAgPSBzcmNSb3dQaXRjaDsKKyAgICAg
ICAgYnVmZmVyRGVwdGhQaXRjaCA9IHNyY0RlcHRoUGl0Y2g7CisgICAgfQogCi0gICAgLy8gVE9E
TzogZmFzdCBwYXRoCi0gICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkMTFG
b3JtYXQubG9hZEZ1bmN0aW9ucy5hdCh0eXBlKTsKLSAgICBsb2FkRnVuY3Rpb24od2lkdGgsIGhl
aWdodCwgZGVwdGgsCi0gICAgICAgICAgICAgICAgIHBpeGVsRGF0YSwgc3JjUm93UGl0Y2gsIHNy
Y0RlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgIGNvbnZlcnNpb25CdWZmZXItPmRhdGEoKSwg
YnVmZmVyUm93UGl0Y2gsIGJ1ZmZlckRlcHRoUGl0Y2gpOwotCiAgICAgSUQzRDExRGV2aWNlQ29u
dGV4dCAqaW1tZWRpYXRlQ29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwog
CiAgICAgaWYgKCFmdWxsVXBkYXRlKQpAQCAtNjUyLDIxICs3NTcsMTkgQEAKICAgICAgICAgQVNT
RVJUKGRlc3RCb3gpOwogCiAgICAgICAgIEQzRDExX0JPWCBkZXN0RDNEQm94OwotICAgICAgICBk
ZXN0RDNEQm94LmxlZnQgPSBkZXN0Qm94LT54OwotICAgICAgICBkZXN0RDNEQm94LnJpZ2h0ID0g
ZGVzdEJveC0+eCArIGRlc3RCb3gtPndpZHRoOwotICAgICAgICBkZXN0RDNEQm94LnRvcCA9IGRl
c3RCb3gtPnk7CisgICAgICAgIGRlc3REM0RCb3gubGVmdCAgID0gZGVzdEJveC0+eDsKKyAgICAg
ICAgZGVzdEQzREJveC5yaWdodCAgPSBkZXN0Qm94LT54ICsgZGVzdEJveC0+d2lkdGg7CisgICAg
ICAgIGRlc3REM0RCb3gudG9wICAgID0gZGVzdEJveC0+eTsKICAgICAgICAgZGVzdEQzREJveC5i
b3R0b20gPSBkZXN0Qm94LT55ICsgZGVzdEJveC0+aGVpZ2h0OwotICAgICAgICBkZXN0RDNEQm94
LmZyb250ID0gZGVzdEJveC0+ejsKLSAgICAgICAgZGVzdEQzREJveC5iYWNrID0gZGVzdEJveC0+
eiArIGRlc3RCb3gtPmRlcHRoOworICAgICAgICBkZXN0RDNEQm94LmZyb250ICA9IGRlc3RCb3gt
Pno7CisgICAgICAgIGRlc3REM0RCb3guYmFjayAgID0gZGVzdEJveC0+eiArIGRlc3RCb3gtPmRl
cHRoOwogCi0gICAgICAgIGltbWVkaWF0ZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKHJlc291
cmNlLCBkZXN0U3VicmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZkZXN0RDNEQm94LCBjb252ZXJzaW9uQnVmZmVyLT5kYXRhKCksCisgICAgICAg
IGltbWVkaWF0ZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291cmNlKHJlc291cmNlLCBkZXN0U3VicmVz
b3VyY2UsICZkZXN0RDNEQm94LCBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZmZXJSb3dQaXRjaCwgYnVmZmVyRGVwdGhQaXRjaCk7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGltbWVkaWF0ZUNvbnRleHQtPlVwZGF0ZVN1YnJlc291
cmNlKHJlc291cmNlLCBkZXN0U3VicmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5VTEwsIGNvbnZlcnNpb25CdWZmZXItPmRhdGEoKSwKKyAgICAg
ICAgaW1tZWRpYXRlQ29udGV4dC0+VXBkYXRlU3VicmVzb3VyY2UocmVzb3VyY2UsIGRlc3RTdWJy
ZXNvdXJjZSwgbnVsbHB0ciwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVmZmVyUm93UGl0Y2gsIGJ1ZmZlckRlcHRoUGl0Y2gpOwogICAgIH0KIApA
QCAtNjc2LDEwNyArNzc5LDk0IEBACiBUZXh0dXJlU3RvcmFnZTExXzJEOjpUZXh0dXJlU3RvcmFn
ZTExXzJEKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBTd2FwQ2hhaW4xMSAqc3dhcGNoYWluKQogICAg
IDogVGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwgRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUIHwg
RDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UsIDApLAogICAgICAgbVRleHR1cmUoc3dhcGNoYWlu
LT5nZXRPZmZzY3JlZW5UZXh0dXJlKCkpLAotICAgICAgbVN3aXp6bGVUZXh0dXJlKE5VTEwpLAot
ICAgICAgbUxldmVsWmVyb1RleHR1cmUoTlVMTCksCi0gICAgICBtTGV2ZWxaZXJvUmVuZGVyVGFy
Z2V0KE5VTEwpLAotICAgICAgbVVzZUxldmVsWmVyb1RleHR1cmUoZmFsc2UpCisgICAgICBtTGV2
ZWxaZXJvVGV4dHVyZShudWxscHRyKSwKKyAgICAgIG1MZXZlbFplcm9SZW5kZXJUYXJnZXQobnVs
bHB0ciksCisgICAgICBtVXNlTGV2ZWxaZXJvVGV4dHVyZShmYWxzZSksCisgICAgICBtU3dpenps
ZVRleHR1cmUobnVsbHB0cikKIHsKICAgICBtVGV4dHVyZS0+QWRkUmVmKCk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9M
RVZFTFM7IGkrKykKICAgICB7Ci0gICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VzW2ldID0gTlVMTDsK
LSAgICAgICAgbVJlbmRlclRhcmdldFtpXSA9IE5VTEw7Ci0gICAgICAgIG1Td2l6emxlUmVuZGVy
VGFyZ2V0c1tpXSA9IE5VTEw7CisgICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VzW2ldICAgICA9IG51
bGxwdHI7CisgICAgICAgIG1SZW5kZXJUYXJnZXRbaV0gICAgICAgICA9IG51bGxwdHI7CisgICAg
ICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0c1tpXSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgRDNE
MTFfVEVYVFVSRTJEX0RFU0MgdGV4RGVzYzsKICAgICBtVGV4dHVyZS0+R2V0RGVzYygmdGV4RGVz
Yyk7Ci0gICAgbU1pcExldmVscyA9IHRleERlc2MuTWlwTGV2ZWxzOwotICAgIG1UZXh0dXJlRm9y
bWF0ID0gdGV4RGVzYy5Gb3JtYXQ7Ci0gICAgbVRleHR1cmVXaWR0aCA9IHRleERlc2MuV2lkdGg7
CisgICAgbU1pcExldmVscyAgICAgPSB0ZXhEZXNjLk1pcExldmVsczsKKyAgICBtVGV4dHVyZVdp
ZHRoICA9IHRleERlc2MuV2lkdGg7CiAgICAgbVRleHR1cmVIZWlnaHQgPSB0ZXhEZXNjLkhlaWdo
dDsKLSAgICBtVGV4dHVyZURlcHRoID0gMTsKKyAgICBtVGV4dHVyZURlcHRoICA9IDE7CisgICAg
bUhhc0tleWVkTXV0ZXggPSAodGV4RGVzYy5NaXNjRmxhZ3MgJiBEM0QxMV9SRVNPVVJDRV9NSVND
X1NIQVJFRF9LRVlFRE1VVEVYKSAhPSAwOwogCi0gICAgbUludGVybmFsRm9ybWF0ID0gc3dhcGNo
YWluLT5HZXRCYWNrQnVmZmVySW50ZXJuYWxGb3JtYXQoKTsKKyAgICBtSW50ZXJuYWxGb3JtYXQg
PSBzd2FwY2hhaW4tPkdldFJlbmRlclRhcmdldEludGVybmFsRm9ybWF0KCk7CiAKLSAgICBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IHN3YXBjaGFpbi0+Z2V0UmVuZGVyVGFyZ2V0U2hh
ZGVyUmVzb3VyY2UoKTsKLSAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRl
c2M7Ci0gICAgc3J2LT5HZXREZXNjKCZzcnZEZXNjKTsKLSAgICBtU2hhZGVyUmVzb3VyY2VGb3Jt
YXQgPSBzcnZEZXNjLkZvcm1hdDsKLQotICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcqIG9mZnNj
cmVlblJUViA9IHN3YXBjaGFpbi0+Z2V0UmVuZGVyVGFyZ2V0KCk7Ci0gICAgRDNEMTFfUkVOREVS
X1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICBvZmZzY3JlZW5SVFYtPkdldERlc2MoJnJ0
dkRlc2MpOwotICAgIG1SZW5kZXJUYXJnZXRGb3JtYXQgPSBydHZEZXNjLkZvcm1hdDsKLQotICAg
IGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0ICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpHZXREWEdJ
Rm9ybWF0SW5mbyhtVGV4dHVyZUZvcm1hdCk7Ci0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3Jt
YXQgJmZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oZHhnaUZvcm1hdElu
Zm8uaW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVsKCkpOwotICAgIG1T
d2l6emxlVGV4dHVyZUZvcm1hdCA9IGZvcm1hdEluZm8uc3dpenpsZVRleEZvcm1hdDsKLSAgICBt
U3dpenpsZVNoYWRlclJlc291cmNlRm9ybWF0ID0gZm9ybWF0SW5mby5zd2l6emxlU1JWRm9ybWF0
OwotICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0Rm9ybWF0ID0gZm9ybWF0SW5mby5zd2l6emxlUlRW
Rm9ybWF0OwotCi0gICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047
Ci0KLSAgICBpbml0aWFsaXplU2VyaWFscygxLCAxKTsKKyAgICBjb25zdCBhdXRvICZmb3JtYXRJ
bmZvID0KKyAgICAgICAgZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1h
dCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBtVGV4dHVyZUZv
cm1hdFNldCA9IGZvcm1hdEluZm8uZm9ybWF0U2V0OworICAgIG1Td2l6emxlRm9ybWF0U2V0ID0g
Zm9ybWF0SW5mby5zd2l6emxlRm9ybWF0U2V0OwogfQogCi1UZXh0dXJlU3RvcmFnZTExXzJEOjpU
ZXh0dXJlU3RvcmFnZTExXzJEKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
aW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkKLSAgICA6IFRleHR1cmVTdG9yYWdl
MTEocmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIEdldFRleHR1cmVCaW5kRmxhZ3Mo
aW50ZXJuYWxmb3JtYXQsIHJlbmRlcmVyLT5nZXRGZWF0dXJlTGV2ZWwoKSwgcmVuZGVyVGFyZ2V0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgR2V0VGV4dHVyZU1pc2NGbGFncyhpbnRlcm5hbGZv
cm1hdCwgcmVuZGVyZXItPmdldEZlYXR1cmVMZXZlbCgpLCByZW5kZXJUYXJnZXQsIGxldmVscykp
LAotICAgICAgbVRleHR1cmUoTlVMTCksCi0gICAgICBtU3dpenpsZVRleHR1cmUoTlVMTCksCi0g
ICAgICBtTGV2ZWxaZXJvVGV4dHVyZShOVUxMKSwKLSAgICAgIG1MZXZlbFplcm9SZW5kZXJUYXJn
ZXQoTlVMTCksCi0gICAgICBtVXNlTGV2ZWxaZXJvVGV4dHVyZShmYWxzZSkKK1RleHR1cmVTdG9y
YWdlMTFfMkQ6OlRleHR1cmVTdG9yYWdlMTFfMkQoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW5kZXJU
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2
ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhpbnRM
ZXZlbFplcm9Pbmx5KQorICAgIDogVGV4dHVyZVN0b3JhZ2UxMSgKKyAgICAgICAgICByZW5kZXJl
ciwKKyAgICAgICAgICBHZXRUZXh0dXJlQmluZEZsYWdzKGludGVybmFsZm9ybWF0LCByZW5kZXJl
ci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSwgcmVuZGVyVGFyZ2V0KSwKKyAgICAgICAgICBH
ZXRUZXh0dXJlTWlzY0ZsYWdzKGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZXZlbHMpKSwKKyAgICAgIG1UZXh0dXJlKG51bGxwdHIpLAorICAgICAgbUhhc0tl
eWVkTXV0ZXgoZmFsc2UpLAorICAgICAgbUxldmVsWmVyb1RleHR1cmUobnVsbHB0ciksCisgICAg
ICBtTGV2ZWxaZXJvUmVuZGVyVGFyZ2V0KG51bGxwdHIpLAorICAgICAgbVVzZUxldmVsWmVyb1Rl
eHR1cmUoaGludExldmVsWmVyb09ubHkgJiYgbGV2ZWxzID4gMSksCisgICAgICBtU3dpenpsZVRl
eHR1cmUobnVsbHB0cikKIHsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKICAgICB7Ci0gICAgICAgIG1B
c3NvY2lhdGVkSW1hZ2VzW2ldID0gTlVMTDsKLSAgICAgICAgbVJlbmRlclRhcmdldFtpXSA9IE5V
TEw7Ci0gICAgICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0c1tpXSA9IE5VTEw7CisgICAgICAgIG1B
c3NvY2lhdGVkSW1hZ2VzW2ldICAgICA9IG51bGxwdHI7CisgICAgICAgIG1SZW5kZXJUYXJnZXRb
aV0gICAgICAgICA9IG51bGxwdHI7CisgICAgICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0c1tpXSA9
IG51bGxwdHI7CiAgICAgfQogCiAgICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7
CiAKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9IGQzZDExOjpH
ZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdldEZlYXR1cmVM
ZXZlbCgpKTsKLSAgICBtVGV4dHVyZUZvcm1hdCA9IGZvcm1hdEluZm8udGV4Rm9ybWF0OwotICAg
IG1TaGFkZXJSZXNvdXJjZUZvcm1hdCA9IGZvcm1hdEluZm8uc3J2Rm9ybWF0OwotICAgIG1EZXB0
aFN0ZW5jaWxGb3JtYXQgPSBmb3JtYXRJbmZvLmRzdkZvcm1hdDsKLSAgICBtUmVuZGVyVGFyZ2V0
Rm9ybWF0ID0gZm9ybWF0SW5mby5ydHZGb3JtYXQ7Ci0gICAgbVN3aXp6bGVUZXh0dXJlRm9ybWF0
ID0gZm9ybWF0SW5mby5zd2l6emxlVGV4Rm9ybWF0OwotICAgIG1Td2l6emxlU2hhZGVyUmVzb3Vy
Y2VGb3JtYXQgPSBmb3JtYXRJbmZvLnN3aXp6bGVTUlZGb3JtYXQ7Ci0gICAgbVN3aXp6bGVSZW5k
ZXJUYXJnZXRGb3JtYXQgPSBmb3JtYXRJbmZvLnN3aXp6bGVSVFZGb3JtYXQ7CisgICAgY29uc3Qg
ZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPQorICAgICAgICBkM2QxMTo6R2V0VGV4
dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQsIHJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2
aWNlQ2FwcygpKTsKKyAgICBtVGV4dHVyZUZvcm1hdFNldCA9IGZvcm1hdEluZm8uZm9ybWF0U2V0
OworICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gZm9ybWF0SW5mby5zd2l6emxlRm9ybWF0U2V0Owog
Ci0gICAgZDNkMTE6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIG1UZXh0dXJlRm9ybWF0LCAmd2lkdGgs
ICZoZWlnaHQsICZtVG9wTGV2ZWwpOwotICAgIG1NaXBMZXZlbHMgPSBtVG9wTGV2ZWwgKyBsZXZl
bHM7Ci0gICAgbVRleHR1cmVXaWR0aCA9IHdpZHRoOworICAgIGQzZDExOjpNYWtlVmFsaWRTaXpl
KGZhbHNlLCBtVGV4dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0LCAmd2lkdGgsICZoZWlnaHQsICZt
VG9wTGV2ZWwpOworICAgIG1NaXBMZXZlbHMgICAgID0gbVRvcExldmVsICsgbGV2ZWxzOworICAg
IG1UZXh0dXJlV2lkdGggID0gd2lkdGg7CiAgICAgbVRleHR1cmVIZWlnaHQgPSBoZWlnaHQ7Ci0g
ICAgbVRleHR1cmVEZXB0aCA9IDE7CisgICAgbVRleHR1cmVEZXB0aCAgPSAxOwogCi0gICAgaWYg
KGhpbnRMZXZlbFplcm9Pbmx5ICYmIGxldmVscyA+IDEpCi0gICAgewotICAgICAgICAvL1RoZSBM
ZXZlbFplcm9Pbmx5IGhpbnQgc2hvdWxkIG9ubHkgYmUgdHJ1ZSBpZiB0aGUgemVybyBtYXggTE9E
IHdvcmthcm91bmQgaXMgYWN0aXZlLgotICAgICAgICBBU1NFUlQobVJlbmRlcmVyLT5nZXRXb3Jr
YXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5kKTsKLSAgICAgICAgbVVzZUxldmVsWmVyb1Rl
eHR1cmUgPSB0cnVlOwotICAgIH0KLQotICAgIGluaXRpYWxpemVTZXJpYWxzKGdldExldmVsQ291
bnQoKSwgMSk7CisgICAgLy8gVGhlIExldmVsWmVyb09ubHkgaGludCBzaG91bGQgb25seSBiZSB0
cnVlIGlmIHRoZSB6ZXJvIG1heCBMT0Qgd29ya2Fyb3VuZCBpcyBhY3RpdmUuCisgICAgQVNTRVJU
KCFtVXNlTGV2ZWxaZXJvVGV4dHVyZSB8fCBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVy
b01heExvZFdvcmthcm91bmQpOwogfQogCiBUZXh0dXJlU3RvcmFnZTExXzJEOjp+VGV4dHVyZVN0
b3JhZ2UxMV8yRCgpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdsOjpJTVBMRU1F
TlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFM7IGkrKykKICAgICB7Ci0gICAgICAgIGlmIChtQXNz
b2NpYXRlZEltYWdlc1tpXSAhPSBOVUxMKQorICAgICAgICBpZiAobUFzc29jaWF0ZWRJbWFnZXNb
aV0gIT0gbnVsbHB0cikKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCBpbWFnZUFzc29jaWF0
aW9uQ29ycmVjdCA9IG1Bc3NvY2lhdGVkSW1hZ2VzW2ldLT5pc0Fzc29jaWF0ZWRTdG9yYWdlVmFs
aWQodGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QpOwog
CiAgICAgICAgICAgICBpZiAoaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBsZXQgdGhlIEltYWdlcyByZWNvdmVyIHRoZWly
IGRhdGEgYmVmb3JlIHdlIGRlbGV0ZSBpdCBmcm9tIHRoZSBUZXh0dXJlU3RvcmFnZS4KKyAgICAg
ICAgICAgICAgICAvLyBXZSBtdXN0IGxldCB0aGUgSW1hZ2VzIHJlY292ZXIgdGhlaXIgZGF0YSBi
ZWZvcmUgd2UgZGVsZXRlIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgLy8gVGV4dHVyZVN0
b3JhZ2UuCiAgICAgICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUFzc29jaWF0ZWRJbWFn
ZXNbaV0tPnJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2UoKTsKICAgICAgICAgICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgICAgIHsKQEAgLTc5NywxOSArODg3LDI2
IEBACiAgICAgICAgIFNhZmVEZWxldGUobVJlbmRlclRhcmdldFtpXSk7CiAgICAgICAgIFNhZmVS
ZWxlYXNlKG1Td2l6emxlUmVuZGVyVGFyZ2V0c1tpXSk7CiAgICAgfQorCisgICAgaWYgKG1IYXNL
ZXllZE11dGV4KQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhlIGtleWVkIG11dGV4IGlzIHJlbGVh
c2VkIHRoYXQgd2lsbCB1bmJpbmQgaXQgYW5kIGNhdXNlIHRoZSBzdGF0ZSBjYWNoZSB0byBiZWNv
bWUKKyAgICAgICAgLy8gZGVzeW5jaHJvbml6ZWQuCisgICAgICAgIG1SZW5kZXJlci0+Z2V0U3Rh
dGVNYW5hZ2VyKCktPmludmFsaWRhdGVCb3VuZFZpZXdzKCk7CisgICAgfQogfQogCiBnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Y29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqZGVz
dFN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKGRlc3RTdG9yYWdlKTsKIAotICAgIFRleHR1cmVTdG9y
YWdlMTFfMkQgKmRlc3QxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFfMkQ+KGRlc3RTdG9yYWdl
KTsKKyAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpkZXN0MTEgICAgICAgICAgID0gR2V0QXM8VGV4
dHVyZVN0b3JhZ2UxMV8yRD4oZGVzdFN0b3JhZ2UpOworICAgIElEM0QxMURldmljZUNvbnRleHQg
KmltbWVkaWF0ZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKIAogICAg
IGlmIChtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQpCiAg
ICAgewotICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250ZXh0ID0gbVJl
bmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7Ci0KLSAgICAgICAgLy8gSWYgZWl0aGVyIG1UZXh0
dXJlIG9yIG1MZXZlbFplcm9UZXh0dXJlIGV4aXN0LCB0aGVuIHdlIG5lZWQgdG8gY29weSB0aGVt
IGludG8gdGhlIGNvcnJlc3BvbmRpbmcgdGV4dHVyZXMgaW4gZGVzdFN0b3JhZ2UuCisgICAgICAg
IC8vIElmIGVpdGhlciBtVGV4dHVyZSBvciBtTGV2ZWxaZXJvVGV4dHVyZSBleGlzdCwgdGhlbiB3
ZSBuZWVkIHRvIGNvcHkgdGhlbSBpbnRvIHRoZQorICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRl
eHR1cmVzIGluIGRlc3RTdG9yYWdlLgogICAgICAgICBpZiAobVRleHR1cmUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGRlc3QxMS0+dXNlTGV2ZWxaZXJvV29ya2Fy
b3VuZFRleHR1cmUoZmFsc2UpOwpAQCAtODE4LDcgKzkxNSw3IEBACiAgICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBJRDNEMTFSZXNvdXJj
ZSAqZGVzdFJlc291cmNlID0gTlVMTDsKKyAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0
UmVzb3VyY2UgPSBudWxscHRyOwogICAgICAgICAgICAgZXJyb3IgPSBkZXN0MTEtPmdldFJlc291
cmNlKCZkZXN0UmVzb3VyY2UpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICAgICAgICAgIHsKQEAgLTgzNiw3ICs5MzMsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RS
ZXNvdXJjZSA9IE5VTEw7CisgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqZGVzdFJlc291cmNl
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGVycm9yID0gZGVzdDExLT5nZXRSZXNvdXJjZSgmZGVz
dFJlc291cmNlKTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAg
ICB7CkBAIC04NDUsMzQgKzk0MiwzNiBAQAogCiAgICAgICAgICAgICBpbW1lZGlhdGVDb250ZXh0
LT5Db3B5UmVzb3VyY2UoZGVzdFJlc291cmNlLCBtTGV2ZWxaZXJvVGV4dHVyZSk7CiAgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICB9CiAgICAg
ZWxzZQogICAgIHsKLSAgICAgICAgSUQzRDExUmVzb3VyY2UgKnNvdXJjZVJlc291Y2UgPSBOVUxM
OworICAgICAgICBJRDNEMTFSZXNvdXJjZSAqc291cmNlUmVzb3VjZSA9IG51bGxwdHI7CiAgICAg
ICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlc291cmNlKCZzb3VyY2VSZXNvdWNlKTsKICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOwogICAgICAgICB9CiAKLSAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9
IE5VTEw7CisgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3VyY2UgPSBudWxscHRyOwog
ICAgICAgICBlcnJvciA9IGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNvdXJjZSk7CiAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKICAgICAgICAgfQogCi0gICAgICAgIElEM0QxMURldmljZUNvbnRleHQgKmltbWVkaWF0
ZUNvbnRleHQgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKICAgICAgICAgaW1tZWRp
YXRlQ29udGV4dC0+Q29weVJlc291cmNlKGRlc3RSZXNvdXJjZSwgc291cmNlUmVzb3VjZSk7Cisg
ICAgICAgIGRlc3QxMS0+aW52YWxpZGF0ZVN3aXp6bGVDYWNoZSgpOwogICAgIH0KIAotICAgIGRl
c3QxMS0+aW52YWxpZGF0ZVN3aXp6bGVDYWNoZSgpOwotCiAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjp1c2VMZXZl
bFplcm9Xb3JrYXJvdW5kVGV4dHVyZShib29sIHVzZUxldmVsWmVyb1RleHR1cmUpCiB7CisgICAg
Ym9vbCBsYXN0U2V0dGluZyA9IG1Vc2VMZXZlbFplcm9UZXh0dXJlOworCiAgICAgaWYgKHVzZUxl
dmVsWmVyb1RleHR1cmUgJiYgbU1pcExldmVscyA+IDEpCiAgICAgewogICAgICAgICBpZiAoIW1V
c2VMZXZlbFplcm9UZXh0dXJlICYmIG1UZXh0dXJlKQpAQCAtODg2LDcgKzk4NSw3IEBACiAgICAg
ICAgICAgICAvLyBQdWxsIGRhdGEgYmFjayBmcm9tIHRoZSBtaXBwZWQgdGV4dHVyZSBpZiBuZWNl
c3NhcnkuCiAgICAgICAgICAgICBBU1NFUlQobUxldmVsWmVyb1RleHR1cmUpOwogICAgICAgICAg
ICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpOwotICAgICAgICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG1MZXZl
bFplcm9UZXh0dXJlLCAwLCAwLCAwLCAwLCBtVGV4dHVyZSwgMCwgTlVMTCk7CisgICAgICAgICAg
ICBjb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24obUxldmVsWmVyb1RleHR1cmUsIDAsIDAs
IDAsIDAsIG1UZXh0dXJlLCAwLCBudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAgIG1Vc2VM
ZXZlbFplcm9UZXh0dXJlID0gdHJ1ZTsKQEAgLTkwNCwxOCArMTAwMywzNCBAQAogICAgICAgICAg
ICAgLy8gUHVsbCBkYXRhIGJhY2sgZnJvbSB0aGUgbGV2ZWwgemVybyB0ZXh0dXJlIGlmIG5lY2Vz
c2FyeS4KICAgICAgICAgICAgIEFTU0VSVChtVGV4dHVyZSk7CiAgICAgICAgICAgICBJRDNEMTFE
ZXZpY2VDb250ZXh0ICpjb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5Db3B5U3VicmVzb3VyY2VSZWdpb24obVRleHR1cmUsIDAsIDAs
IDAsIDAsIG1MZXZlbFplcm9UZXh0dXJlLCAwLCBOVUxMKTsKKyAgICAgICAgICAgIGNvbnRleHQt
PkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihtVGV4dHVyZSwgMCwgMCwgMCwgMCwgbUxldmVsWmVyb1Rl
eHR1cmUsIDAsIG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgbVVzZUxldmVsWmVyb1Rl
eHR1cmUgPSBmYWxzZTsKICAgICB9CiAKKyAgICBpZiAobGFzdFNldHRpbmcgIT0gbVVzZUxldmVs
WmVyb1RleHR1cmUpCisgICAgeworICAgICAgICAvLyBNYXJrIGV2ZXJ5dGhpbmcgYXMgZGlydHkg
dG8gYmUgY29uc2VydmF0aXZlLgorICAgICAgICBpZiAobUxldmVsWmVyb1JlbmRlclRhcmdldCkK
KyAgICAgICAgeworICAgICAgICAgICAgbUxldmVsWmVyb1JlbmRlclRhcmdldC0+c2lnbmFsRGly
dHkoKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8gKnJlbmRlclRhcmdldCA6IG1SZW5k
ZXJUYXJnZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChyZW5kZXJUYXJnZXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0LT5zaWduYWxEaXJ0eSgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CiB9CiAKLXZvaWQgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6YXNzb2NpYXRlSW1h
Z2UoSW1hZ2UxMSogaW1hZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkKK3ZvaWQgVGV4
dHVyZVN0b3JhZ2UxMV8yRDo6YXNzb2NpYXRlSW1hZ2UoSW1hZ2UxMSAqaW1hZ2UsIGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCkKIHsKLSAgICBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4
OworICAgIGNvbnN0IEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7CiAKICAgICBBU1NFUlQo
MCA8PSBsZXZlbCAmJiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZF
TFMpOwogCkBAIC05MjUsMTMgKzEwNDAsMTUgQEAKICAgICB9CiB9CiAKLWJvb2wgVGV4dHVyZVN0
b3JhZ2UxMV8yRDo6aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW5kZXgsIEltYWdlMTEqIGV4cGVjdGVkSW1hZ2UpCitib29sIFRleHR1cmVTdG9yYWdlMTFfMkQ6
OmlzQXNzb2NpYXRlZEltYWdlVmFsaWQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlMTEgKmV4
cGVjdGVkSW1hZ2UpCiB7Ci0gICAgR0xpbnQgbGV2ZWwgPSBpbmRleC5taXBJbmRleDsKKyAgICBj
b25zdCBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4OwogCiAgICAgaWYgKDAgPD0gbGV2ZWwg
JiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQogICAgIHsK
LSAgICAgICAgLy8gVGhpcyB2YWxpZGF0aW9uIGNoZWNrIHNob3VsZCBuZXZlciByZXR1cm4gZmFs
c2UuIEl0IG1lYW5zIHRoZSBJbWFnZS9UZXh0dXJlU3RvcmFnZSBhc3NvY2lhdGlvbiBpcyBicm9r
ZW4uCisgICAgICAgIC8vIFRoaXMgdmFsaWRhdGlvbiBjaGVjayBzaG91bGQgbmV2ZXIgcmV0dXJu
IGZhbHNlLiBJdCBtZWFucyB0aGUgSW1hZ2UvVGV4dHVyZVN0b3JhZ2UKKyAgICAgICAgLy8gYXNz
b2NpYXRpb24gaXMgYnJva2VuLgogICAgICAgICBib29sIHJldFZhbHVlID0gKG1Bc3NvY2lhdGVk
SW1hZ2VzW2xldmVsXSA9PSBleHBlY3RlZEltYWdlKTsKICAgICAgICAgQVNTRVJUKHJldFZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHJldFZhbHVlOwpAQCAtOTQxLDkgKzEwNTgsOSBAQAogfQogCiAv
LyBkaXNhc3NvY2lhdGVJbWFnZSBhbGxvd3MgYW4gSW1hZ2UgdG8gZW5kIGl0cyBhc3NvY2lhdGlv
biB3aXRoIGEgU3RvcmFnZS4KLXZvaWQgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6ZGlzYXNzb2NpYXRl
SW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExKiBleHBlY3RlZEltYWdl
KQordm9pZCBUZXh0dXJlU3RvcmFnZTExXzJEOjpkaXNhc3NvY2lhdGVJbWFnZShjb25zdCBnbDo6
SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdlMTEgKmV4cGVjdGVkSW1hZ2UpCiB7Ci0gICAgR0xpbnQg
bGV2ZWwgPSBpbmRleC5taXBJbmRleDsKKyAgICBjb25zdCBHTGludCBsZXZlbCA9IGluZGV4Lm1p
cEluZGV4OwogCiAgICAgQVNTRVJUKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5U
QVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKTsKIApAQCAtOTUzLDMxICsxMDcwLDM0IEBACiAKICAg
ICAgICAgaWYgKG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXSA9PSBleHBlY3RlZEltYWdlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gPSBOVUxMOworICAg
ICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdID0gbnVsbHB0cjsKICAgICAgICAgfQog
ICAgIH0KIH0KIAotLy8gcmVsZWFzZUFzc29jaWF0ZWRJbWFnZSBwcmVwYXJlcyB0aGUgU3RvcmFn
ZSBmb3IgYSBuZXcgSW1hZ2UgYXNzb2NpYXRpb24uIEl0IGxldHMgdGhlIG9sZCBJbWFnZSByZWNv
dmVyIGl0cyBkYXRhIGJlZm9yZSBlbmRpbmcgdGhlIGFzc29jaWF0aW9uLgotZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfMkQ6OnJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LCBJbWFnZTExKiBpbmNvbWluZ0ltYWdlKQorLy8gcmVsZWFzZUFzc29jaWF0
ZWRJbWFnZSBwcmVwYXJlcyB0aGUgU3RvcmFnZSBmb3IgYSBuZXcgSW1hZ2UgYXNzb2NpYXRpb24u
IEl0IGxldHMgdGhlIG9sZCBJbWFnZQorLy8gcmVjb3ZlciBpdHMgZGF0YSBiZWZvcmUgZW5kaW5n
IHRoZSBhc3NvY2lhdGlvbi4KK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpyZWxlYXNl
QXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlMTEgKmluY29t
aW5nSW1hZ2UpCiB7Ci0gICAgR0xpbnQgbGV2ZWwgPSBpbmRleC5taXBJbmRleDsKKyAgICBjb25z
dCBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4OwogCiAgICAgQVNTRVJUKDAgPD0gbGV2ZWwg
JiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKTsKIAogICAg
IGlmICgwIDw9IGxldmVsICYmIGxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJF
X0xFVkVMUykKICAgICB7CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gbGV0IHRoZSBvbGQgSW1hZ2Ug
cmVjb3ZlciBpdHMgZGF0YSwgaWYgaXQgaXMgYWxzbyB0aGUgaW5jb21pbmcgSW1hZ2UuCi0gICAg
ICAgIGlmIChtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gIT0gTlVMTCAmJiBtQXNzb2NpYXRlZElt
YWdlc1tsZXZlbF0gIT0gaW5jb21pbmdJbWFnZSkKKyAgICAgICAgaWYgKG1Bc3NvY2lhdGVkSW1h
Z2VzW2xldmVsXSAhPSBudWxscHRyICYmIG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXSAhPSBpbmNv
bWluZ0ltYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgSW1h
Z2UgaXMgc3RpbGwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4dHVyZVN0b3JhZ2UuIFRoaXMgc2hv
dWxkIGJlIHRydWUuCisgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgSW1hZ2UgaXMgc3Rp
bGwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4dHVyZVN0b3JhZ2UuIFRoaXMgc2hvdWxkIGJlCisg
ICAgICAgICAgICAvLyB0cnVlLgogICAgICAgICAgICAgYm9vbCBpbWFnZUFzc29jaWF0aW9uQ29y
cmVjdCA9IG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXS0+aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlk
KHRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKGltYWdlQXNzb2NpYXRpb25Db3JyZWN0KTsKIAog
ICAgICAgICAgICAgaWYgKGltYWdlQXNzb2NpYXRpb25Db3JyZWN0KQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIC8vIEZvcmNlIHRoZSBpbWFnZSB0byByZWNvdmVyIGZyb20gc3RvcmFn
ZSBiZWZvcmUgaXRzIGRhdGEgaXMgb3ZlcndyaXR0ZW4uCi0gICAgICAgICAgICAgICAgLy8gVGhp
cyB3aWxsIHJlc2V0IG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXSB0byBOVUxMIHRvby4KKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmVzZXQgbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdIHRv
IG51bGxwdHIgdG9vLgogICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1Bc3NvY2lh
dGVkSW1hZ2VzW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFnZSgpOwogICAgICAg
ICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICAgICAgewpAQCAtMTAz
NCw0MyArMTE1NCw0OSBAQAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmVuc3VyZVRl
eHR1cmVFeGlzdHMoaW50IG1pcExldmVscykKIHsKICAgICAvLyBJZiBtTWlwTGV2ZWxzID0gMSB0
aGVuIGFsd2F5cyB1c2UgbVRleHR1cmUgcmF0aGVyIHRoYW4gbUxldmVsWmVyb1RleHR1cmUuCi0g
ICAgYm9vbCB1c2VMZXZlbFplcm9UZXh0dXJlID0gbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygp
Lnplcm9NYXhMb2RXb3JrYXJvdW5kID8gKG1pcExldmVscyA9PSAxKSAmJiAobU1pcExldmVscyA+
IDEpIDogZmFsc2U7CisgICAgYm9vbCB1c2VMZXZlbFplcm9UZXh0dXJlID0gbVJlbmRlcmVyLT5n
ZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5kCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID8gKG1pcExldmVscyA9PSAxKSAmJiAobU1pcExldmVscyA+IDEpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7CiAgICAgSUQzRDExVGV4
dHVyZTJEICoqb3V0cHV0VGV4dHVyZSA9IHVzZUxldmVsWmVyb1RleHR1cmUgPyAmbUxldmVsWmVy
b1RleHR1cmUgOiAmbVRleHR1cmU7CiAKICAgICAvLyBpZiB0aGUgd2lkdGggb3IgaGVpZ2h0IGlz
IG5vdCBwb3NpdGl2ZSB0aGlzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFuIGluY29tcGxldGUgdGV4
dHVyZQogICAgIC8vIHdlIGhhbmRsZSB0aGF0IGhlcmUgYnkgc2tpcHBpbmcgdGhlIGQzZCB0ZXh0
dXJlIGNyZWF0aW9uCi0gICAgaWYgKCpvdXRwdXRUZXh0dXJlID09IE5VTEwgJiYgbVRleHR1cmVX
aWR0aCA+IDAgJiYgbVRleHR1cmVIZWlnaHQgPiAwKQorICAgIGlmICgqb3V0cHV0VGV4dHVyZSA9
PSBudWxscHRyICYmIG1UZXh0dXJlV2lkdGggPiAwICYmIG1UZXh0dXJlSGVpZ2h0ID4gMCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVChtaXBMZXZlbHMgPiAwKTsKIAogICAgICAgICBJRDNEMTFEZXZp
Y2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfVEVY
VFVSRTJEX0RFU0MgZGVzYzsKLSAgICAgICAgZGVzYy5XaWR0aCA9IG1UZXh0dXJlV2lkdGg7ICAg
ICAgLy8gQ29tcHJlc3NlZCB0ZXh0dXJlIHNpemUgY29uc3RyYWludHM/Ci0gICAgICAgIGRlc2Mu
SGVpZ2h0ID0gbVRleHR1cmVIZWlnaHQ7Ci0gICAgICAgIGRlc2MuTWlwTGV2ZWxzID0gbWlwTGV2
ZWxzOwotICAgICAgICBkZXNjLkFycmF5U2l6ZSA9IDE7Ci0gICAgICAgIGRlc2MuRm9ybWF0ID0g
bVRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAg
ICAgIGRlc2MuV2lkdGggICAgICAgICAgICAgID0gbVRleHR1cmVXaWR0aDsgIC8vIENvbXByZXNz
ZWQgdGV4dHVyZSBzaXplIGNvbnN0cmFpbnRzPworICAgICAgICBkZXNjLkhlaWdodCAgICAgICAg
ICAgICA9IG1UZXh0dXJlSGVpZ2h0OworICAgICAgICBkZXNjLk1pcExldmVscyAgICAgICAgICA9
IG1pcExldmVsczsKKyAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSAxOworICAgICAg
ICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT50ZXhGb3JtYXQ7
CisgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKICAgICAgICAgZGVzYy5TYW1w
bGVEZXNjLlF1YWxpdHkgPSAwOwotICAgICAgICBkZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVG
QVVMVDsKLSAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSBnZXRCaW5kRmxhZ3MoKTsKLSAgICAgICAg
ZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7Ci0gICAgICAgIGRlc2MuTWlzY0ZsYWdzID0gZ2V0TWlz
Y0ZsYWdzKCk7CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0Vf
REVGQVVMVDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBnZXRCaW5kRmxhZ3Mo
KTsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgPSAwOworICAgICAgICBkZXNjLk1p
c2NGbGFncyAgICAgICAgICA9IGdldE1pc2NGbGFncygpOwogCi0gICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsIG91dHB1dFRleHR1cmUp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNj
LCBudWxscHRyLCBvdXRwdXRUZXh0dXJlKTsKIAogICAgICAgICAvLyB0aGlzIGNhbiBoYXBwZW4g
ZnJvbSB3aW5kb3dzIFREUgogICAgICAgICBpZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJl
c3VsdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9z
dCgpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGNyZWF0ZSAyRCB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLCByZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVk
IHRvIGNyZWF0ZSAyRCB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYg
KEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSAyRCB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHgl
WC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSAyRCB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CisKKyAg
ICAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0cHV0VGV4dHVyZSwgIlRleFN0b3JhZ2UyRC5U
ZXh0dXJlIik7CiAgICAgfQogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CkBA
IC0xMDgwLDEzMSArMTIwNiwxNTUgQEAKIHsKICAgICBBU1NFUlQoIWluZGV4Lmhhc0xheWVyKCkp
OwogCi0gICAgaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7CisgICAgY29uc3QgaW50IGxldmVs
ID0gaW5kZXgubWlwSW5kZXg7CiAgICAgQVNTRVJUKGxldmVsID49IDAgJiYgbGV2ZWwgPCBnZXRM
ZXZlbENvdW50KCkpOwogCi0gICAgLy8gSW4gR0wgRVMgMi4wLCB0aGUgYXBwbGljYXRpb24gY2Fu
IG9ubHkgcmVuZGVyIHRvIGxldmVsIHplcm8gb2YgdGhlIHRleHR1cmUgKFNlY3Rpb24gNC40LjMg
b2YgdGhlIEdMRVMgMi4wIHNwZWMsIHBhZ2UgMTEzIG9mIHZlcnNpb24gMi4wLjI1KS4KLSAgICAv
LyBPdGhlciBwYXJ0cyBvZiBUZXh0dXJlU3RvcmFnZTExXzJEIGNvdWxkIGNyZWF0ZSBSVFZzIG9u
IG5vbi16ZXJvIGxldmVscyBvZiB0aGUgdGV4dHVyZSAoZS5nLiBnZW5lcmF0ZU1pcG1hcCkuCi0g
ICAgLy8gT24gRmVhdHVyZSBMZXZlbCA5XzMsIHRoaXMgaXMgdW5saWtlbHkgdG8gYmUgdXNlZnVs
LiBUaGUgcmVuZGVyZXIgY2FuJ3QgY3JlYXRlIFNSVnMgb24gdGhlIGluZGl2aWR1YWwgbGV2ZWxz
IG9mIHRoZSB0ZXh0dXJlLAotICAgIC8vIHNvIG1ldGhvZHMgbGlrZSBnZW5lcmF0ZU1pcG1hcCBj
YW4ndCBkbyBhbnl0aGluZyB1c2VmdWwgd2l0aCBub24temVyby1sZXZlbCBSVFZzLgotICAgIC8v
IFRoZXJlZm9yZSBpZiBsZXZlbCA+IDAgb24gOV8zIHRoZW4gdGhlcmUncyBhbG1vc3QgY2VydGFp
bmx5IHNvbWV0aGluZyB3cm9uZy4KLSAgICBBU1NFUlQoIShtUmVuZGVyZXItPmdldEZlYXR1cmVM
ZXZlbCgpIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyAmJiBsZXZlbCA+IDApKTsKKyAgICAvLyBJ
biBHTCBFUyAyLjAsIHRoZSBhcHBsaWNhdGlvbiBjYW4gb25seSByZW5kZXIgdG8gbGV2ZWwgemVy
byBvZiB0aGUgdGV4dHVyZSAoU2VjdGlvbiA0LjQuMyBvZgorICAgIC8vIHRoZSBHTEVTIDIuMCBz
cGVjLCBwYWdlIDExMyBvZiB2ZXJzaW9uIDIuMC4yNSkuIE90aGVyIHBhcnRzIG9mIFRleHR1cmVT
dG9yYWdlMTFfMkQgY291bGQKKyAgICAvLyBjcmVhdGUgUlRWcyBvbiBub24temVybyBsZXZlbHMg
b2YgdGhlIHRleHR1cmUgKGUuZy4gZ2VuZXJhdGVNaXBtYXApLgorICAgIC8vIE9uIEZlYXR1cmUg
TGV2ZWwgOV8zLCB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIHVzZWZ1bC4gVGhlIHJlbmRlcmVyIGNh
bid0IGNyZWF0ZSBTUlZzIG9uIHRoZQorICAgIC8vIGluZGl2aWR1YWwgbGV2ZWxzIG9mIHRoZSB0
ZXh0dXJlLCBzbyBtZXRob2RzIGxpa2UgZ2VuZXJhdGVNaXBtYXAgY2FuJ3QgZG8gYW55dGhpbmcg
dXNlZnVsCisgICAgLy8gd2l0aCBub24temVyby1sZXZlbCBSVFZzLiBUaGVyZWZvcmUgaWYgbGV2
ZWwgPiAwIG9uIDlfMyB0aGVuIHRoZXJlJ3MgYWxtb3N0IGNlcnRhaW5seQorICAgIC8vIHNvbWV0
aGluZyB3cm9uZy4KKyAgICBBU1NFUlQoCisgICAgICAgICEobVJlbmRlcmVyLT5nZXRSZW5kZXJl
cjExRGV2aWNlQ2FwcygpLmZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMgJiYg
bGV2ZWwgPiAwKSk7CisgICAgQVNTRVJUKG91dFJUKTsKKyAgICBpZiAobVJlbmRlclRhcmdldFts
ZXZlbF0pCisgICAgeworICAgICAgICAqb3V0UlQgPSBtUmVuZGVyVGFyZ2V0W2xldmVsXTsKKyAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgfQogCi0gICAgaWYgKCFt
UmVuZGVyVGFyZ2V0W2xldmVsXSkKKyAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSA9IG51bGxw
dHI7CisgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVzb3VyY2UoJnRleHR1cmUpOworICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVy
ZSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlc291cmNlKCZ0ZXh0dXJl
KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAK
LSAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYgPSBOVUxMOwotICAgICAgICBl
cnJvciA9IGdldFNSVkxldmVsKGxldmVsLCAmc3J2KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Cisg
ICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYgPSBudWxscHRyOworICAgIGVycm9yID0g
Z2V0U1JWTGV2ZWwobGV2ZWwsIGZhbHNlLCAmc3J2KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KIAotICAgICAgICBpZiAobVVz
ZUxldmVsWmVyb1RleHR1cmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbUxldmVsWmVy
b1JlbmRlclRhcmdldCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJRDNEMTFEZXZp
Y2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKKyAgICBlcnJvciA9IGdldFNSVkxldmVsKGxl
dmVsLCB0cnVlLCAmYmxpdFNSVik7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAKLSAgICAgICAgICAgICAgICBEM0QxMV9SRU5E
RVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwotICAgICAgICAgICAgICAgIHJ0dkRlc2MuRm9y
bWF0ID0gbVJlbmRlclRhcmdldEZvcm1hdDsKLSAgICAgICAgICAgICAgICBydHZEZXNjLlZpZXdE
aW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKLSAgICAgICAgICAgICAg
ICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IG1Ub3BMZXZlbCArIGxldmVsOworICAgIElE
M0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAotICAgICAgICAg
ICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0djsKLSAgICAgICAgICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0VmlldyhtTGV2ZWxaZXJvVGV4
dHVyZSwgJnJ0dkRlc2MsICZydHYpOwotCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBF
X09VVE9GTUVNT1JZKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5h
bCByZW5kZXIgdGFyZ2V0IHZpZXcgZm9yIHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIs
IHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7Ci0KLSAgICAgICAgICAgICAgICBtTGV2ZWxaZXJvUmVuZGVyVGFyZ2V0
ID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShydHYsIG1MZXZlbFplcm9UZXh0dXJlLCBOVUxM
LCBtSW50ZXJuYWxGb3JtYXQsIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChs
ZXZlbCksIDEsIDApOwotCi0gICAgICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFr
ZSBvd25lcnNoaXAgb2YgdGhlc2UgcmVzb3VyY2VzCi0gICAgICAgICAgICAgICAgU2FmZVJlbGVh
c2UocnR2KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQVNTRVJUKG91dFJUKTsKLSAg
ICAgICAgICAgICpvdXRSVCA9IG1MZXZlbFplcm9SZW5kZXJUYXJnZXQ7Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICht
UmVuZGVyVGFyZ2V0Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgaWYgKG1Vc2VM
ZXZlbFplcm9UZXh0dXJlKQorICAgIHsKKyAgICAgICAgaWYgKCFtTGV2ZWxaZXJvUmVuZGVyVGFy
Z2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlKCk7Ci0KICAgICAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklF
V19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgICAgICBydHZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJn
ZXRGb3JtYXQ7Ci0gICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZf
RElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAg
ICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2Mu
Vmlld0RpbWVuc2lvbiAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAgICAg
ICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IG1Ub3BMZXZlbCArIGxldmVsOwog
CiAgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHY7Ci0gICAgICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0Vmlldyh0ZXh0dXJlLCAm
cnR2RGVzYywgJnJ0dik7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlUmVuZGVyVGFyZ2V0VmlldyhtTGV2ZWxaZXJvVGV4dHVyZSwgJnJ0dkRlc2MsICZydHYpOwog
Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVE
KHJlc3VsdCkpOwotICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUg
aW50ZXJuYWwgcmVuZGVyIHRhcmdldCB2aWV3IGZvciB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDog
MHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8g
Y3JlYXRlIGludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBmb3IgdGV4dHVyZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKIAotICAgICAgICAgICAgbVJlbmRl
clRhcmdldFtsZXZlbF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKHJ0diwgdGV4dHVyZSwg
c3J2LCBtSW50ZXJuYWxGb3JtYXQsIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdo
dChsZXZlbCksIDEsIDApOworICAgICAgICAgICAgbUxldmVsWmVyb1JlbmRlclRhcmdldCA9IG5l
dyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoCisgICAgICAgICAgICAgICAgcnR2LCBtTGV2ZWxaZXJv
VGV4dHVyZSwgbnVsbHB0ciwgbnVsbHB0ciwgbUludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgIG1UZXh0dXJlRm9ybWF0U2V0LT5mb3JtYXQsIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRM
ZXZlbEhlaWdodChsZXZlbCksIDEsIDApOwogCiAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQg
d2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKICAgICAgICAgICAgIFNhZmVS
ZWxlYXNlKHJ0dik7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobURlcHRoU3RlbmNpbEZv
cm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQotICAgICAgICB7Ci0gICAgICAgICAgICBJRDNE
MTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKLSAgICAgICAgICAg
IEQzRDExX0RFUFRIX1NURU5DSUxfVklFV19ERVNDIGRzdkRlc2M7Ci0gICAgICAgICAgICBkc3ZE
ZXNjLkZvcm1hdCA9IG1EZXB0aFN0ZW5jaWxGb3JtYXQ7Ci0gICAgICAgICAgICBkc3ZEZXNjLlZp
ZXdEaW1lbnNpb24gPSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRDsKLSAgICAgICAgICAg
IGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbVRvcExldmVsICsgbGV2ZWw7Ci0gICAgICAg
ICAgICBkc3ZEZXNjLkZsYWdzID0gMDsKKyAgICAgICAgKm91dFJUID0gbUxldmVsWmVyb1JlbmRl
clRhcmdldDsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgfQog
Ci0gICAgICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3Y7Ci0gICAgICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyh0ZXh0dXJlLCAm
ZHN2RGVzYywgJmRzdik7CisgICAgaWYgKG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0g
RFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICB7CisgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRf
VklFV19ERVNDIHJ0dkRlc2M7CisgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0g
bVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5z
aW9uICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICAgICAgcnR2RGVz
Yy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBtVG9wTGV2ZWwgKyBsZXZlbDsKIAotICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsKLSAg
ICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksIkZhaWxlZCB0byBjcmVhdGUg
aW50ZXJuYWwgZGVwdGggc3RlbmNpbCB2aWV3IGZvciB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDog
MHglWC4iLCByZXN1bHQpOwotICAgICAgICAgICAgfQorICAgICAgICBJRDNEMTFSZW5kZXJUYXJn
ZXRWaWV3ICpydHY7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5k
ZXJUYXJnZXRWaWV3KHRleHR1cmUsICZydHZEZXNjLCAmcnR2KTsKIAotICAgICAgICAgICAgbVJl
bmRlclRhcmdldFtsZXZlbF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKGRzdiwgdGV4dHVy
ZSwgc3J2LCBtSW50ZXJuYWxGb3JtYXQsIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhl
aWdodChsZXZlbCksIDEsIDApOwotCi0gICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0
YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKLSAgICAgICAgICAgIFNhZmVSZWxlYXNl
KGRzdik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBBU1NFUlQocmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKAorICAgICAgICAgICAgICAgIEdMX09VVF9PRl9NRU1PUlks
CisgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgcmVuZGVyIHRhcmdl
dCB2aWV3IGZvciB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAg
ICAgIHJlc3VsdCk7CiAgICAgICAgIH0KKworICAgICAgICBtUmVuZGVyVGFyZ2V0W2xldmVsXSA9
IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoCisgICAgICAgICAgICBydHYsIHRleHR1cmUsIHNy
diwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAor
ICAgICAgICAgICAgZ2V0TGV2ZWxXaWR0aChsZXZlbCksIGdldExldmVsSGVpZ2h0KGxldmVsKSwg
MSwgMCk7CisKKyAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2Yg
dGhlc2UgcmVzb3VyY2VzCisgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7CisKKyAgICAgICAgKm91
dFJUID0gbVJlbmRlclRhcmdldFtsZXZlbF07CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOwogICAgIH0KIAotICAgIEFTU0VSVChvdXRSVCk7CisgICAgQVNTRVJUKG1UZXh0
dXJlRm9ybWF0U2V0LT5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CisKKyAgICBE
M0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVTQyBkc3ZEZXNjOworICAgIGRzdkRlc2MuRm9ybWF0
ICAgICAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPmRzdkZvcm1hdDsKKyAgICBkc3ZEZXNj
LlZpZXdEaW1lbnNpb24gICAgICA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOworICAg
IGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbVRvcExldmVsICsgbGV2ZWw7CisgICAgZHN2
RGVzYy5GbGFncyAgICAgICAgICAgICAgPSAwOworCisgICAgSUQzRDExRGVwdGhTdGVuY2lsVmll
dyAqZHN2OworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxW
aWV3KHRleHR1cmUsICZkc3ZEZXNjLCAmZHN2KTsKKworICAgIEFTU0VSVChyZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcigKKyAgICAgICAgICAgIEdMX09VVF9P
Rl9NRU1PUlksCisgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCBkZXB0aCBz
dGVuY2lsIHZpZXcgZm9yIHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCisgICAgICAg
ICAgICByZXN1bHQpOworICAgIH0KKworICAgIG1SZW5kZXJUYXJnZXRbbGV2ZWxdID0KKyAgICAg
ICAgbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShkc3YsIHRleHR1cmUsIHNydiwgbUludGVybmFs
Rm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCks
IDEsIDApOworCisgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhl
c2UgcmVzb3VyY2VzCisgICAgU2FmZVJlbGVhc2UoZHN2KTsKKwogICAgICpvdXRSVCA9IG1SZW5k
ZXJUYXJnZXRbbGV2ZWxdOwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
Ci1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Y3JlYXRlU1JWKGludCBiYXNlTGV2ZWws
IGludCBtaXBMZXZlbHMsIERYR0lfRk9STUFUIGZvcm1hdCwgSUQzRDExUmVzb3VyY2UgKnRleHR1
cmUsCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Y3JlYXRlU1JWKGludCBiYXNlTGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaXBMZXZl
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDEx
UmVzb3VyY2UgKnRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNSVikgY29uc3QKIHsKICAgICBBU1NF
UlQob3V0U1JWKTsKIAogICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVz
YzsKLSAgICBzcnZEZXNjLkZvcm1hdCA9IGZvcm1hdDsKLSAgICBzcnZEZXNjLlZpZXdEaW1lbnNp
b24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICBzcnZEZXNjLkZvcm1hdCAg
ICAgICAgICAgICAgICAgICAgPSBmb3JtYXQ7CisgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uICAg
ICAgICAgICAgID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgc3J2RGVzYy5U
ZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gbVRvcExldmVsICsgYmFzZUxldmVsOwotICAgIHNy
dkRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9IG1pcExldmVsczsKKyAgICBzcnZEZXNjLlRleHR1
cmUyRC5NaXBMZXZlbHMgICAgICAgPSBtaXBMZXZlbHM7CiAKICAgICBJRDNEMTFSZXNvdXJjZSAq
c3J2VGV4dHVyZSA9IHRleHR1cmU7CiAKQEAgLTEyMTIsMzEgKzEzNjIsMzUgQEAKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtVG9wTGV2ZWwgPT0gMCk7CiAgICAgICAgIEFTU0VSVChiYXNlTGV2ZWwg
PT0gMCk7Ci0gICAgICAgIC8vIFRoaXMgY29kZSBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgaW5jb21p
bmcgdGV4dHVyZSBlcXVhbHMgZWl0aGVyIG1MZXZlbFplcm9UZXh0dXJlIG9yIG1UZXh0dXJlLgor
ICAgICAgICAvLyBUaGlzIGNvZGUgYWxzbyBhc3N1bWVzIHRoYXQgdGhlIGluY29taW5nIHRleHR1
cmUgZXF1YWxzIGVpdGhlciBtTGV2ZWxaZXJvVGV4dHVyZSBvcgorICAgICAgICAvLyBtVGV4dHVy
ZS4KIAogICAgICAgICBpZiAobWlwTGV2ZWxzID09IDEgJiYgbU1pcExldmVscyA+IDEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIFdlIG11c3QgdXNlIGEgU1JWIG9uIHRoZSBsZXZlbC16ZXJv
LW9ubHkgdGV4dHVyZS4KLSAgICAgICAgICAgIEFTU0VSVChtTGV2ZWxaZXJvVGV4dHVyZSAhPSBO
VUxMICYmIHRleHR1cmUgPT0gbUxldmVsWmVyb1RleHR1cmUpOworICAgICAgICAgICAgQVNTRVJU
KG1MZXZlbFplcm9UZXh0dXJlICE9IG51bGxwdHIgJiYgdGV4dHVyZSA9PSBtTGV2ZWxaZXJvVGV4
dHVyZSk7CiAgICAgICAgICAgICBzcnZUZXh0dXJlID0gbUxldmVsWmVyb1RleHR1cmU7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobWlwTGV2
ZWxzID09IHN0YXRpY19jYXN0PGludD4obU1pcExldmVscykpOwotICAgICAgICAgICAgQVNTRVJU
KG1UZXh0dXJlICE9IE5VTEwgJiYgdGV4dHVyZSA9PSBtVGV4dHVyZSk7CisgICAgICAgICAgICBB
U1NFUlQobVRleHR1cmUgIT0gbnVsbHB0ciAmJiB0ZXh0dXJlID09IG1UZXh0dXJlKTsKICAgICAg
ICAgICAgIHNydlRleHR1cmUgPSBtVGV4dHVyZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElE
M0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKLSAgICBIUkVTVUxU
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHNydlRleHR1cmUsICZz
cnZEZXNjLCBvdXRTUlYpOworICAgIEhSRVNVTFQgcmVzdWx0ICAgICAgID0gZGV2aWNlLT5DcmVh
dGVTaGFkZXJSZXNvdXJjZVZpZXcoc3J2VGV4dHVyZSwgJnNydkRlc2MsIG91dFNSVik7CiAKICAg
ICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOwog
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgdGV4dHVyZSBzdG9y
YWdlIFNSViwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv
IGNyZWF0ZSBpbnRlcm5hbCB0ZXh0dXJlIHN0b3JhZ2UgU1JWLCByZXN1bHQ6IDB4JVguIiwgcmVz
dWx0KTsKICAgICB9CiAKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKCpvdXRTUlYsICJUZXhTdG9y
YWdlMkQuU1JWIik7CisKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIApA
QCAtMTI0OSwyNSArMTQwMywyOCBAQAogICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVz
YzsKLSAgICAgICAgZGVzYy5XaWR0aCA9IG1UZXh0dXJlV2lkdGg7Ci0gICAgICAgIGRlc2MuSGVp
Z2h0ID0gbVRleHR1cmVIZWlnaHQ7Ci0gICAgICAgIGRlc2MuTWlwTGV2ZWxzID0gbU1pcExldmVs
czsKLSAgICAgICAgZGVzYy5BcnJheVNpemUgPSAxOwotICAgICAgICBkZXNjLkZvcm1hdCA9IG1T
d2l6emxlVGV4dHVyZUZvcm1hdDsKLSAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsK
KyAgICAgICAgZGVzYy5XaWR0aCAgICAgICAgICAgICAgPSBtVGV4dHVyZVdpZHRoOworICAgICAg
ICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OworICAgICAgICBkZXNj
Lk1pcExldmVscyAgICAgICAgICA9IG1NaXBMZXZlbHM7CisgICAgICAgIGRlc2MuQXJyYXlTaXpl
ICAgICAgICAgID0gMTsKKyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtU3dpenps
ZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9
IDE7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKLSAgICAgICAgZGVzYy5V
c2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGRlc2MuQmluZEZsYWdzID0gRDNE
MTFfQklORF9TSEFERVJfUkVTT1VSQ0UgfCBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7Ci0gICAg
ICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7
CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsK
KyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBEM0QxMV9CSU5EX1NIQURFUl9SRVNP
VVJDRSB8IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVDsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NG
bGFncyAgICAgPSAwOworICAgICAgICBkZXNjLk1pc2NGbGFncyAgICAgICAgICA9IDA7CiAKLSAg
ICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVzYywgTlVM
TCwgJm1Td2l6emxlVGV4dHVyZSk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5D
cmVhdGVUZXh0dXJlMkQoJmRlc2MsIG51bGxwdHIsICZtU3dpenpsZVRleHR1cmUpOwogCiAgICAg
ICAgIEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7
CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5h
bCBzd2l6emxlIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCBzd2l6emxlIHRleHR1cmUsIHJlc3Vs
dDogMHglWC4iLCByZXN1bHQpOwogICAgICAgICB9CisKKyAgICAgICAgZDNkMTE6OlNldERlYnVn
TmFtZShtU3dpenpsZVRleHR1cmUsICJUZXhTdG9yYWdlMkQuU3dpenpsZVRleHR1cmUiKTsKICAg
ICB9CiAKICAgICAqb3V0VGV4dHVyZSA9IG1Td2l6emxlVGV4dHVyZTsKQEAgLTEyODEsNyArMTQz
OCw3IEBACiAKICAgICBpZiAoIW1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF0pCiAgICAg
ewotICAgICAgICBJRDNEMTFSZXNvdXJjZSAqc3dpenpsZVRleHR1cmUgPSBOVUxMOworICAgICAg
ICBJRDNEMTFSZXNvdXJjZSAqc3dpenpsZVRleHR1cmUgPSBudWxscHRyOwogICAgICAgICBnbDo6
RXJyb3IgZXJyb3IgPSBnZXRTd2l6emxlVGV4dHVyZSgmc3dpenpsZVRleHR1cmUpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CkBAIC0xMjkxLDE2ICsxNDQ4LDE5IEBA
CiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsK
IAogICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwotICAgICAg
ICBydHZEZXNjLkZvcm1hdCA9IG1Td2l6emxlUmVuZGVyVGFyZ2V0Rm9ybWF0OwotICAgICAgICBy
dHZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAg
ICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+cnR2
Rm9ybWF0OworICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICA9IEQzRDExX1JUVl9E
SU1FTlNJT05fVEVYVFVSRTJEOwogICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9
IG1Ub3BMZXZlbCArIG1pcExldmVsOwogCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNl
LT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KG1Td2l6emxlVGV4dHVyZSwgJnJ0dkRlc2MsICZtU3dp
enpsZVJlbmRlclRhcmdldHNbbWlwTGV2ZWxdKTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVN3aXp6bGVUZXh0dXJlLCAmcnR2RGVzYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF0pOwogCiAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCBzd2l6emxlIHJlbmRl
ciB0YXJnZXQgdmlldywgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHN3aXp6bGUgcmVuZGVyIHRhcmdldCB2aWV3
LCByZXN1bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTMwOCw2MCArMTQ2OCwzNDkgQEAKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpUZXh0
dXJlU3RvcmFnZTExX0N1YmUoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIGludCBzaXplLCBpbnQgbGV2ZWxzLCBib29sIGhpbnRM
ZXZlbFplcm9Pbmx5KQotICAgIDogVGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgR2V0VGV4dHVyZUJpbmRGbGFncyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVy
ZXItPmdldEZlYXR1cmVMZXZlbCgpLCByZW5kZXJUYXJnZXQpLAotICAgICAgICAgICAgICAgICAg
ICAgICBHZXRUZXh0dXJlTWlzY0ZsYWdzKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0RmVh
dHVyZUxldmVsKCksIHJlbmRlclRhcmdldCwgbGV2ZWxzKSkKK1RleHR1cmVTdG9yYWdlMTFfRUdM
SW1hZ2U6OlRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEVH
TEltYWdlRDNEICplZ2xJbWFnZSkKKyAgICA6IFRleHR1cmVTdG9yYWdlMTEocmVuZGVyZXIsIEQz
RDExX0JJTkRfUkVOREVSX1RBUkdFVCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFLCAwKSwK
KyAgICAgIG1JbWFnZShlZ2xJbWFnZSksCisgICAgICBtQ3VycmVudFJlbmRlclRhcmdldCgwKSwK
KyAgICAgIG1Td2l6emxlVGV4dHVyZShudWxscHRyKSwKKyAgICAgIG1Td2l6emxlUmVuZGVyVGFy
Z2V0cyhnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTLCBudWxscHRyKQogewot
ICAgIG1UZXh0dXJlID0gTlVMTDsKLSAgICBtU3dpenpsZVRleHR1cmUgPSBOVUxMOworICAgIFJl
bmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEID0gbnVsbHB0cjsKKyAgICBtSW1hZ2UtPmdl
dFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0RDNEKTsKKyAgICBSZW5kZXJUYXJnZXQxMSAqcmVu
ZGVyVGFyZ2V0MTEgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4ocmVuZGVyVGFyZ2V0RDNEKTsKKyAg
ICBtQ3VycmVudFJlbmRlclRhcmdldCAgICAgICAgICAgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4ocmVuZGVyVGFyZ2V0MTEpOwogCisgICAgbU1pcExldmVscyAgICAgID0gMTsKKyAgICBt
VGV4dHVyZUZvcm1hdFNldCA9ICZkM2QxMTo6R2V0QU5HTEVGb3JtYXRTZXQocmVuZGVyVGFyZ2V0
MTEtPmdldEFOR0xFRm9ybWF0KCkpOworICAgIG1Td2l6emxlRm9ybWF0U2V0ID0gJmQzZDExOjpH
ZXRBTkdMRUZvcm1hdFNldChtVGV4dHVyZUZvcm1hdFNldC0+c3dpenpsZUZvcm1hdCk7CisgICAg
bVRleHR1cmVXaWR0aCAgID0gcmVuZGVyVGFyZ2V0MTEtPmdldFdpZHRoKCk7CisgICAgbVRleHR1
cmVIZWlnaHQgID0gcmVuZGVyVGFyZ2V0MTEtPmdldEhlaWdodCgpOworICAgIG1UZXh0dXJlRGVw
dGggICA9IDE7CisgICAgbUludGVybmFsRm9ybWF0ID0gcmVuZGVyVGFyZ2V0MTEtPmdldEludGVy
bmFsRm9ybWF0KCk7Cit9CisKK1RleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6On5UZXh0dXJlU3Rv
cmFnZTExX0VHTEltYWdlKCkKK3sKKyAgICBTYWZlUmVsZWFzZShtU3dpenpsZVRleHR1cmUpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVN3aXp6bGVSZW5kZXJUYXJnZXRzLnNpemUoKTsg
aSsrKQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2UobVN3aXp6bGVSZW5kZXJUYXJnZXRzW2ld
KTsKKyAgICB9Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpnZXRS
ZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKQoreworICAgIGdsOjpFcnJvciBl
cnJvciA9IGNoZWNrRm9yVXBkYXRlZFJlbmRlclRhcmdldCgpOworICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgUmVuZGVy
VGFyZ2V0MTEgKnJlbmRlclRhcmdldDExID0gbnVsbHB0cjsKKyAgICBlcnJvciA9IGdldEltYWdl
UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQxMSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICAqb3V0UmVzb3VyY2Ug
PSByZW5kZXJUYXJnZXQxMS0+Z2V0VGV4dHVyZSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6Z2V0
U1JWKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoq
b3V0U1JWKQoreworICAgIGdsOjpFcnJvciBlcnJvciA9IGNoZWNrRm9yVXBkYXRlZFJlbmRlclRh
cmdldCgpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIFRleHR1cmVTdG9yYWdlMTE6OmdldFNSVih0ZXh0
dXJlU3RhdGUsIG91dFNSVik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTElt
YWdlOjpnZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKikKK3sKKyAgICAvLyBUaGlz
IHNob3VsZG4ndCBiZSBjYWxsZWQgdW5sZXNzIHRoZSB6ZXJvIG1heCBMT0Qgd29ya2Fyb3VuZCBp
cyBhY3RpdmUuCisgICAgLy8gRUdMIGltYWdlcyBhcmUgdW5hdmFpbGFibGUgaW4gdGhpcyBjb25m
aWd1cmF0aW9uLgorICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTElt
YWdlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJn
ZXREM0QgKipvdXRSVCkKK3sKKyAgICBBU1NFUlQoIWluZGV4Lmhhc0xheWVyKCkpOworICAgIEFT
U0VSVChpbmRleC5taXBJbmRleCA9PSAwKTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxF
KGluZGV4KTsKKworICAgIGdsOjpFcnJvciBlcnJvciA9IGNoZWNrRm9yVXBkYXRlZFJlbmRlclRh
cmdldCgpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KG91dFJU
KTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmNvcHlUb1N0b3Jh
Z2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKQoreworICAgIElEM0QxMVJlc291cmNlICpz
b3VyY2VSZXNvdWNlID0gbnVsbHB0cjsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJj
ZSgmc291cmNlUmVzb3VjZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBBU1NFUlQoZGVzdFN0b3JhZ2UpOworICAg
IFRleHR1cmVTdG9yYWdlMTFfMkQgKmRlc3QxMSAgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzJE
PihkZXN0U3RvcmFnZSk7CisgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxw
dHI7CisgICAgZXJyb3IgPSBkZXN0MTEtPmdldFJlc291cmNlKCZkZXN0UmVzb3VyY2UpOworICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
fQorCisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqaW1tZWRpYXRlQ29udGV4dCA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlQ29udGV4dCgpOworICAgIGltbWVkaWF0ZUNvbnRleHQtPkNvcHlSZXNvdXJj
ZShkZXN0UmVzb3VyY2UsIHNvdXJjZVJlc291Y2UpOworCisgICAgZGVzdDExLT5pbnZhbGlkYXRl
U3dpenpsZUNhY2hlKCk7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30K
Kwordm9pZCBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjphc3NvY2lhdGVJbWFnZShJbWFnZTEx
ICosIGNvbnN0IGdsOjpJbWFnZUluZGV4ICYpCit7Cit9CisKK3ZvaWQgVGV4dHVyZVN0b3JhZ2Ux
MV9FR0xJbWFnZTo6ZGlzYXNzb2NpYXRlSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJiwgSW1h
Z2UxMSAqKQoreworfQorCitib29sIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmlzQXNzb2Np
YXRlZEltYWdlVmFsaWQoY29uc3QgZ2w6OkltYWdlSW5kZXggJiwgSW1hZ2UxMSAqKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6
OnJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJiwgSW1hZ2UxMSAq
KQoreworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6dXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUo
Ym9vbCkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFn
ZTo6Z2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKQoreworICAg
IEFTU0VSVChvdXRUZXh0dXJlKTsKKworICAgIGlmICghbVN3aXp6bGVUZXh0dXJlKQorICAgIHsK
KyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwor
CisgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7CisgICAgICAgIGRlc2MuV2lkdGgg
ICAgICAgICAgICAgID0gbVRleHR1cmVXaWR0aDsKKyAgICAgICAgZGVzYy5IZWlnaHQgICAgICAg
ICAgICAgPSBtVGV4dHVyZUhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAg
PSBtTWlwTGV2ZWxzOworICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7CisgICAg
ICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnRleEZvcm1h
dDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOworICAgICAgICBkZXNjLlNh
bXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0g
RDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBE
M0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRSB8IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVDsKKyAg
ICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgPSAwOworICAgICAgICBkZXNjLk1pc2NGbGFn
cyAgICAgICAgICA9IDA7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0
ZVRleHR1cmUyRCgmZGVzYywgbnVsbHB0ciwgJm1Td2l6emxlVGV4dHVyZSk7CisKKyAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsKKyAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHN3aXp6bGUgdGV4dHVyZSwgcmVzdWx0OiAweCVY
LiIsIHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1T
d2l6emxlVGV4dHVyZSwgIlRleFN0b3JhZ2VFR0xJbWFnZS5Td2l6emxlVGV4dHVyZSIpOworICAg
IH0KKworICAgICpvdXRUZXh0dXJlID0gbVN3aXp6bGVUZXh0dXJlOworICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJ
bWFnZTo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZW5k
ZXJUYXJnZXRWaWV3ICoqb3V0UlRWKQoreworICAgIEFTU0VSVChtaXBMZXZlbCA+PSAwICYmIG1p
cExldmVsIDwgZ2V0TGV2ZWxDb3VudCgpKTsKKyAgICBBU1NFUlQob3V0UlRWKTsKKworICAgIGlm
ICghbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXSkKKyAgICB7CisgICAgICAgIElEM0Qx
MVJlc291cmNlICpzd2l6emxlVGV4dHVyZSA9IG51bGxwdHI7CisgICAgICAgIGdsOjpFcnJvciBl
cnJvciA9IGdldFN3aXp6bGVUZXh0dXJlKCZzd2l6emxlVGV4dHVyZSk7CisgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAg
ICAgICAgfQorCisgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXRE
ZXZpY2UoKTsKKworICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNj
OworICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Td2l6emxlRm9ybWF0U2V0
LT5ydHZGb3JtYXQ7CisgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgID0gRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CisgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNs
aWNlID0gbVRvcExldmVsICsgbWlwTGV2ZWw7CisKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVN3aXp6bGVUZXh0dXJlLCAmcnR2RGVzYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF0pOworCisgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv
IGNyZWF0ZSBpbnRlcm5hbCBzd2l6emxlIHJlbmRlciB0YXJnZXQgdmlldywgcmVzdWx0OiAweCVY
LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAqb3V0UlRWID0gbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXTsKKyAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlMTFfRUdMSW1hZ2U6OmNoZWNrRm9yVXBkYXRlZFJlbmRlclRhcmdldCgpCit7CisgICAg
UmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldDExID0gbnVsbHB0cjsKKyAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBnZXRJbWFnZVJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0MTEpOworICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisg
ICAgaWYgKG1DdXJyZW50UmVuZGVyVGFyZ2V0ICE9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihyZW5kZXJUYXJnZXQxMSkpCisgICAgeworICAgICAgICBjbGVhclNSVkNhY2hlKCk7CisgICAg
ICAgIG1DdXJyZW50UmVuZGVyVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHJl
bmRlclRhcmdldDExKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmNyZWF0ZVNSVihp
bnQgYmFzZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbWlwTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJj
ZVZpZXcgKipvdXRTUlYpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJhc2VMZXZlbCA9PSAwKTsKKyAg
ICBBU1NFUlQobWlwTGV2ZWxzID09IDEpOworICAgIEFTU0VSVChvdXRTUlYpOworCisgICAgLy8g
Q3JlYXRlIGEgbmV3IFNSViBvbmx5IGZvciB0aGUgc3dpenpsZSB0ZXh0dXJlLiAgT3RoZXJ3aXNl
IGp1c3QgcmV0dXJuIHRoZSBJbWFnZSdzCisgICAgLy8gUmVuZGVyVGFyZ2V0J3MgU1JWLgorICAg
IGlmICh0ZXh0dXJlID09IG1Td2l6emxlVGV4dHVyZSkKKyAgICB7CisgICAgICAgIEQzRDExX1NI
QURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKKyAgICAgICAgc3J2RGVzYy5Gb3JtYXQg
ICAgICAgICAgICAgICAgICAgID0gZm9ybWF0OworICAgICAgICBzcnZEZXNjLlZpZXdEaW1lbnNp
b24gICAgICAgICAgICAgPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRDsKKyAgICAgICAg
c3J2RGVzYy5UZXh0dXJlMkQuTW9zdERldGFpbGVkTWlwID0gbVRvcExldmVsICsgYmFzZUxldmVs
OworICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5NaXBMZXZlbHMgICAgICAgPSBtaXBMZXZlbHM7
CisKKyAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCAgICAgICA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVz
b3VyY2VWaWV3KHRleHR1cmUsICZzcnZEZXNjLCBvdXRTUlYpOworCisgICAgICAgIEFTU0VSVChy
ZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CisgICAgICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGNyZWF0ZSBpbnRlcm5hbCB0ZXh0dXJlIHN0b3JhZ2UgU1JWLCByZXN1bHQ6IDB4JVguIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGQzZDExOjpTZXREZWJ1Z05hbWUoKm91dFNSViwgIlRleFN0b3JhZ2VFR0xJbWFnZS5TUlYi
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRl
clRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldEltYWdlUmVu
ZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKworICAgICAg
ICBBU1NFUlQodGV4dHVyZSA9PSByZW5kZXJUYXJnZXQtPmdldFRleHR1cmUoKSk7CisKKyAgICAg
ICAgKm91dFNSViA9IHJlbmRlclRhcmdldC0+Z2V0U2hhZGVyUmVzb3VyY2VWaWV3KCk7CisgICAg
ICAgICgqb3V0U1JWKS0+QWRkUmVmKCk7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpn
ZXRJbWFnZVJlbmRlclRhcmdldChSZW5kZXJUYXJnZXQxMSAqKm91dFJUKSBjb25zdAoreworICAg
IFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEID0gbnVsbHB0cjsKKyAgICBnbDo6RXJy
b3IgZXJyb3IgPSBtSW1hZ2UtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0RDNEKTsKKyAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAg
IH0KKworICAgICpvdXRSVCA9IEdldEFzPFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJnZXREM0Qp
OworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitUZXh0dXJlU3RvcmFn
ZTExX0N1YmU6OlRleHR1cmVTdG9yYWdlMTFfQ3ViZShSZW5kZXJlcjExICpyZW5kZXJlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkKKyAgICA6IFRleHR1cmVTdG9yYWdlMTEoCisg
ICAgICAgICAgcmVuZGVyZXIsCisgICAgICAgICAgR2V0VGV4dHVyZUJpbmRGbGFncyhpbnRlcm5h
bGZvcm1hdCwgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCksIHJlbmRlclRhcmdl
dCksCisgICAgICAgICAgR2V0VGV4dHVyZU1pc2NGbGFncyhpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2Fw
cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyVGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzKSksCisgICAgICBtVGV4dHVyZShudWxscHRy
KSwKKyAgICAgIG1MZXZlbFplcm9UZXh0dXJlKG51bGxwdHIpLAorICAgICAgbVVzZUxldmVsWmVy
b1RleHR1cmUoaGludExldmVsWmVyb09ubHkgJiYgbGV2ZWxzID4gMSksCisgICAgICBtU3dpenps
ZVRleHR1cmUobnVsbHB0cikKK3sKICAgICBmb3IgKHVuc2lnbmVkIGludCBsZXZlbCA9IDA7IGxl
dmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykKICAg
ICB7Ci0gICAgICAgIG1Td2l6emxlUmVuZGVyVGFyZ2V0c1tsZXZlbF0gPSBOVUxMOworICAgICAg
ICBtU3dpenpsZVJlbmRlclRhcmdldHNbbGV2ZWxdID0gbnVsbHB0cjsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgZmFjZSA9IDA7IGZhY2UgPCBDVUJFX0ZBQ0VfQ09VTlQ7IGZhY2UrKykKICAg
ICAgICAgewotICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbZmFjZV1bbGV2ZWxdID0gTlVM
TDsKLSAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRbZmFjZV1bbGV2ZWxdID0gTlVMTDsKKyAgICAg
ICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VzW2ZhY2VdW2xldmVsXSA9IG51bGxwdHI7CisgICAgICAg
ICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VdW2xldmVsXSAgICAgPSBudWxscHRyOwogICAgICAgICB9
CiAgICAgfQogCi0gICAgbUxldmVsWmVyb1RleHR1cmUgPSBOVUxMOwotICAgIG1Vc2VMZXZlbFpl
cm9UZXh0dXJlID0gZmFsc2U7Ci0KICAgICBmb3IgKHVuc2lnbmVkIGludCBmYWNlID0gMDsgZmFj
ZSA8IENVQkVfRkFDRV9DT1VOVDsgZmFjZSsrKQogICAgIHsKLSAgICAgICAgbUxldmVsWmVyb1Jl
bmRlclRhcmdldFtmYWNlXSA9IE5VTEw7CisgICAgICAgIG1MZXZlbFplcm9SZW5kZXJUYXJnZXRb
ZmFjZV0gPSBudWxscHRyOwogICAgIH0KIAogICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFs
Zm9ybWF0OwogCi0gICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPSBk
M2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQsIHJlbmRlcmVyLT5nZXRG
ZWF0dXJlTGV2ZWwoKSk7Ci0gICAgbVRleHR1cmVGb3JtYXQgPSBmb3JtYXRJbmZvLnRleEZvcm1h
dDsKLSAgICBtU2hhZGVyUmVzb3VyY2VGb3JtYXQgPSBmb3JtYXRJbmZvLnNydkZvcm1hdDsKLSAg
ICBtRGVwdGhTdGVuY2lsRm9ybWF0ID0gZm9ybWF0SW5mby5kc3ZGb3JtYXQ7Ci0gICAgbVJlbmRl
clRhcmdldEZvcm1hdCA9IGZvcm1hdEluZm8ucnR2Rm9ybWF0OwotICAgIG1Td2l6emxlVGV4dHVy
ZUZvcm1hdCA9IGZvcm1hdEluZm8uc3dpenpsZVRleEZvcm1hdDsKLSAgICBtU3dpenpsZVNoYWRl
clJlc291cmNlRm9ybWF0ID0gZm9ybWF0SW5mby5zd2l6emxlU1JWRm9ybWF0OwotICAgIG1Td2l6
emxlUmVuZGVyVGFyZ2V0Rm9ybWF0ID0gZm9ybWF0SW5mby5zd2l6emxlUlRWRm9ybWF0OworICAg
IGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZmb3JtYXRJbmZvID0KKyAgICAgICAgZDNkMTE6
OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0UmVuZGVy
ZXIxMURldmljZUNhcHMoKSk7CisgICAgbVRleHR1cmVGb3JtYXRTZXQgPSBmb3JtYXRJbmZvLmZv
cm1hdFNldDsKKyAgICBtU3dpenpsZUZvcm1hdFNldCA9IGZvcm1hdEluZm8uc3dpenpsZUZvcm1h
dFNldDsKIAogICAgIC8vIGFkanVzdCBzaXplIGlmIG5lZWRlZCBmb3IgY29tcHJlc3NlZCB0ZXh0
dXJlcwogICAgIGludCBoZWlnaHQgPSBzaXplOwotICAgIGQzZDExOjpNYWtlVmFsaWRTaXplKGZh
bHNlLCBtVGV4dHVyZUZvcm1hdCwgJnNpemUsICZoZWlnaHQsICZtVG9wTGV2ZWwpOworICAgIGQz
ZDExOjpNYWtlVmFsaWRTaXplKGZhbHNlLCBtVGV4dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0LCAm
c2l6ZSwgJmhlaWdodCwgJm1Ub3BMZXZlbCk7CiAKLSAgICBtTWlwTGV2ZWxzID0gbVRvcExldmVs
ICsgbGV2ZWxzOwotICAgIG1UZXh0dXJlV2lkdGggPSBzaXplOworICAgIG1NaXBMZXZlbHMgICAg
ID0gbVRvcExldmVsICsgbGV2ZWxzOworICAgIG1UZXh0dXJlV2lkdGggID0gc2l6ZTsKICAgICBt
VGV4dHVyZUhlaWdodCA9IHNpemU7Ci0gICAgbVRleHR1cmVEZXB0aCA9IDE7CisgICAgbVRleHR1
cmVEZXB0aCAgPSAxOwogCi0gICAgaWYgKGhpbnRMZXZlbFplcm9Pbmx5ICYmIGxldmVscyA+IDEp
Ci0gICAgewotICAgICAgICAvL1RoZSBMZXZlbFplcm9Pbmx5IGhpbnQgc2hvdWxkIG9ubHkgYmUg
dHJ1ZSBpZiB0aGUgemVybyBtYXggTE9EIHdvcmthcm91bmQgaXMgYWN0aXZlLgotICAgICAgICBB
U1NFUlQobVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5kKTsK
LSAgICAgICAgbVVzZUxldmVsWmVyb1RleHR1cmUgPSB0cnVlOwotICAgIH0KLQotICAgIGluaXRp
YWxpemVTZXJpYWxzKGdldExldmVsQ291bnQoKSAqIENVQkVfRkFDRV9DT1VOVCwgQ1VCRV9GQUNF
X0NPVU5UKTsKKyAgICAvLyBUaGUgTGV2ZWxaZXJvT25seSBoaW50IHNob3VsZCBvbmx5IGJlIHRy
dWUgaWYgdGhlIHplcm8gbWF4IExPRCB3b3JrYXJvdW5kIGlzIGFjdGl2ZS4KKyAgICBBU1NFUlQo
IW1Vc2VMZXZlbFplcm9UZXh0dXJlIHx8IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS56ZXJv
TWF4TG9kV29ya2Fyb3VuZCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6flRleHR1cmVT
dG9yYWdlMTFfQ3ViZSgpCkBAIC0xMzcwLDE0ICsxODE5LDE2IEBACiAgICAgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBmYWNlID0gMDsgZmFjZSA8IENVQkVfRkFDRV9DT1VOVDsgZmFjZSsr
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUFzc29jaWF0ZWRJbWFnZXNbZmFjZV1bbGV2
ZWxdICE9IE5VTEwpCisgICAgICAgICAgICBpZiAobUFzc29jaWF0ZWRJbWFnZXNbZmFjZV1bbGV2
ZWxdICE9IG51bGxwdHIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm9vbCBpbWFn
ZUFzc29jaWF0aW9uQ29ycmVjdCA9IG1Bc3NvY2lhdGVkSW1hZ2VzW2ZhY2VdW2xldmVsXS0+aXNB
c3NvY2lhdGVkU3RvcmFnZVZhbGlkKHRoaXMpOworICAgICAgICAgICAgICAgIGJvb2wgaW1hZ2VB
c3NvY2lhdGlvbkNvcnJlY3QgPQorICAgICAgICAgICAgICAgICAgICBtQXNzb2NpYXRlZEltYWdl
c1tmYWNlXVtsZXZlbF0tPmlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZCh0aGlzKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKGltYWdlQXNzb2NpYXRpb25Db3JyZWN0KQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBsZXQgdGhlIEltYWdlcyByZWNvdmVyIHRoZWlyIGRh
dGEgYmVmb3JlIHdlIGRlbGV0ZSBpdCBmcm9tIHRoZSBUZXh0dXJlU3RvcmFnZS4KKyAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgbXVzdCBsZXQgdGhlIEltYWdlcyByZWNvdmVyIHRoZWlyIGRhdGEg
YmVmb3JlIHdlIGRlbGV0ZSBpdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBUZXh0
dXJlU3RvcmFnZS4KICAgICAgICAgICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbZmFjZV1b
bGV2ZWxdLT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9yYWdlKCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMTQwNSwxNyArMTg1NiwxOCBAQAogCiBVSU5UIFRleHR1cmVT
dG9yYWdlMTFfQ3ViZTo6Z2V0U3VicmVzb3VyY2VJbmRleChjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW5kZXgpIGNvbnN0CiB7Ci0gICAgaWYgKG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS56ZXJv
TWF4TG9kV29ya2Fyb3VuZCAmJiBtVXNlTGV2ZWxaZXJvVGV4dHVyZSAmJiBpbmRleC5taXBJbmRl
eCA9PSAwKQorICAgIGlmIChtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdv
cmthcm91bmQgJiYgbVVzZUxldmVsWmVyb1RleHR1cmUgJiYKKyAgICAgICAgaW5kZXgubWlwSW5k
ZXggPT0gMCkKICAgICB7Ci0gICAgICAgIFVJTlQgYXJyYXlTbGljZSA9IHN0YXRpY19jYXN0PFVJ
TlQ+KGluZGV4Lmhhc0xheWVyKCkgPyBpbmRleC5sYXllckluZGV4IDogMCk7CisgICAgICAgIFVJ
TlQgYXJyYXlTbGljZSAgPSBzdGF0aWNfY2FzdDxVSU5UPihpbmRleC5oYXNMYXllcigpID8gaW5k
ZXgubGF5ZXJJbmRleCA6IDApOwogICAgICAgICBVSU5UIHN1YnJlc291cmNlID0gRDNEMTFDYWxj
U3VicmVzb3VyY2UoMCwgYXJyYXlTbGljZSwgMSk7CiAgICAgICAgIEFTU0VSVChzdWJyZXNvdXJj
ZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFVJTlQ+OjptYXgoKSk7CiAgICAgICAgIHJldHVybiBz
dWJyZXNvdXJjZTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgVUlOVCBtaXBTbGlj
ZSA9IHN0YXRpY19jYXN0PFVJTlQ+KGluZGV4Lm1pcEluZGV4ICsgbVRvcExldmVsKTsKLSAgICAg
ICAgVUlOVCBhcnJheVNsaWNlID0gc3RhdGljX2Nhc3Q8VUlOVD4oaW5kZXguaGFzTGF5ZXIoKSA/
IGluZGV4LmxheWVySW5kZXggOiAwKTsKKyAgICAgICAgVUlOVCBtaXBTbGljZSAgICA9IHN0YXRp
Y19jYXN0PFVJTlQ+KGluZGV4Lm1pcEluZGV4ICsgbVRvcExldmVsKTsKKyAgICAgICAgVUlOVCBh
cnJheVNsaWNlICA9IHN0YXRpY19jYXN0PFVJTlQ+KGluZGV4Lmhhc0xheWVyKCkgPyBpbmRleC5s
YXllckluZGV4IDogMCk7CiAgICAgICAgIFVJTlQgc3VicmVzb3VyY2UgPSBEM0QxMUNhbGNTdWJy
ZXNvdXJjZShtaXBTbGljZSwgYXJyYXlTbGljZSwgbU1pcExldmVscyk7CiAgICAgICAgIEFTU0VS
VChzdWJyZXNvdXJjZSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPFVJTlQ+OjptYXgoKSk7CiAgICAg
ICAgIHJldHVybiBzdWJyZXNvdXJjZTsKQEAgLTE0MzIsNyArMTg4NCw4IEBACiAgICAgewogICAg
ICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICppbW1lZGlhdGVDb250ZXh0ID0gbVJlbmRlcmVyLT5n
ZXREZXZpY2VDb250ZXh0KCk7CiAKLSAgICAgICAgLy8gSWYgZWl0aGVyIG1UZXh0dXJlIG9yIG1M
ZXZlbFplcm9UZXh0dXJlIGV4aXN0LCB0aGVuIHdlIG5lZWQgdG8gY29weSB0aGVtIGludG8gdGhl
IGNvcnJlc3BvbmRpbmcgdGV4dHVyZXMgaW4gZGVzdFN0b3JhZ2UuCisgICAgICAgIC8vIElmIGVp
dGhlciBtVGV4dHVyZSBvciBtTGV2ZWxaZXJvVGV4dHVyZSBleGlzdCwgdGhlbiB3ZSBuZWVkIHRv
IGNvcHkgdGhlbSBpbnRvIHRoZQorICAgICAgICAvLyBjb3JyZXNwb25kaW5nIHRleHR1cmVzIGlu
IGRlc3RTdG9yYWdlLgogICAgICAgICBpZiAobVRleHR1cmUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGdsOjpFcnJvciBlcnJvciA9IGRlc3QxMS0+dXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1
cmUoZmFsc2UpOwpAQCAtMTQ0MSw3ICsxODk0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0
UmVzb3VyY2UgPSBOVUxMOworICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJj
ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBlcnJvciA9IGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRl
c3RSZXNvdXJjZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAg
ICAgewpAQCAtMTQ1OSw3ICsxOTEyLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIElEM0QxMVJlc291cmNlICpkZXN0UmVzb3Vy
Y2UgPSBOVUxMOworICAgICAgICAgICAgSUQzRDExUmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51
bGxwdHI7CiAgICAgICAgICAgICBlcnJvciA9IGRlc3QxMS0+Z2V0UmVzb3VyY2UoJmRlc3RSZXNv
dXJjZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAgICAgewpA
QCAtMTQ3MSwxNCArMTkyNCwxNCBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBJ
RDNEMTFSZXNvdXJjZSAqc291cmNlUmVzb3VjZSA9IE5VTEw7CisgICAgICAgIElEM0QxMVJlc291
cmNlICpzb3VyY2VSZXNvdWNlID0gbnVsbHB0cjsKICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0g
Z2V0UmVzb3VyY2UoJnNvdXJjZVJlc291Y2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgIH0KIAotICAg
ICAgICBJRDNEMTFSZXNvdXJjZSAqZGVzdFJlc291cmNlID0gTlVMTDsKKyAgICAgICAgSUQzRDEx
UmVzb3VyY2UgKmRlc3RSZXNvdXJjZSA9IG51bGxwdHI7CiAgICAgICAgIGVycm9yID0gZGVzdDEx
LT5nZXRSZXNvdXJjZSgmZGVzdFJlc291cmNlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKICAgICAgICAgewpAQCAtMTUxMiw3ICsxOTY1LDggQEAKIAogICAgICAgICAgICAgZm9yIChp
bnQgZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+Q29weVN1YnJlc291cmNlUmVnaW9uKG1MZXZlbFplcm9UZXh0dXJlLCBE
M0QxMUNhbGNTdWJyZXNvdXJjZSgwLCBmYWNlLCAxKSwgMCwgMCwgMCwgbVRleHR1cmUsIGZhY2Ug
KiBtTWlwTGV2ZWxzLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5Db3B5U3VicmVz
b3VyY2VSZWdpb24obUxldmVsWmVyb1RleHR1cmUsIEQzRDExQ2FsY1N1YnJlc291cmNlKDAsIGZh
Y2UsIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwLCBtVGV4dHVyZSwgZmFjZSAqIG1NaXBMZXZlbHMsIG51bGxwdHIpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKQEAgLTE1MzQsNyArMTk4OCw4IEBACiAKICAgICAgICAgICAgIGZv
ciAoaW50IGZhY2UgPSAwOyBmYWNlIDwgNjsgZmFjZSsrKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihtVGV4dHVyZSwgRDNEMTFD
YWxjU3VicmVzb3VyY2UoMCwgZmFjZSwgbU1pcExldmVscyksIDAsIDAsIDAsIG1MZXZlbFplcm9U
ZXh0dXJlLCBmYWNlLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5Db3B5U3VicmVz
b3VyY2VSZWdpb24obVRleHR1cmUsIEQzRDExQ2FsY1N1YnJlc291cmNlKDAsIGZhY2UsIG1NaXBM
ZXZlbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwLCBtTGV2ZWxaZXJvVGV4dHVyZSwgZmFjZSwgbnVsbHB0cik7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIApAQCAtMTU0NCwxMCArMTk5OSwxMCBAQAogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwogfQogCi12b2lkIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6YXNzb2Np
YXRlSW1hZ2UoSW1hZ2UxMSogaW1hZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkKK3Zv
aWQgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjphc3NvY2lhdGVJbWFnZShJbWFnZTExICppbWFnZSwg
Y29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KQogewotICAgIEdMaW50IGxldmVsID0gaW5kZXgu
bWlwSW5kZXg7Ci0gICAgR0xpbnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllckluZGV4OworICAg
IGNvbnN0IEdMaW50IGxldmVsICAgICAgID0gaW5kZXgubWlwSW5kZXg7CisgICAgY29uc3QgR0xp
bnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllckluZGV4OwogCiAgICAgQVNTRVJUKDAgPD0gbGV2
ZWwgJiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKTsKICAg
ICBBU1NFUlQoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8IENVQkVfRkFDRV9DT1VO
VCk7CkBAIC0xNTYxLDE2ICsyMDE2LDE4IEBACiAgICAgfQogfQogCi1ib29sIFRleHR1cmVTdG9y
YWdlMTFfQ3ViZTo6aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW5kZXgsIEltYWdlMTEqIGV4cGVjdGVkSW1hZ2UpCitib29sIFRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTEx
ICpleHBlY3RlZEltYWdlKQogewotICAgIEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7Ci0g
ICAgR0xpbnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllckluZGV4OworICAgIGNvbnN0IEdMaW50
IGxldmVsICAgICAgID0gaW5kZXgubWlwSW5kZXg7CisgICAgY29uc3QgR0xpbnQgbGF5ZXJUYXJn
ZXQgPSBpbmRleC5sYXllckluZGV4OwogCiAgICAgaWYgKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKQogICAgIHsKICAgICAgICAgaWYg
KDAgPD0gbGF5ZXJUYXJnZXQgJiYgbGF5ZXJUYXJnZXQgPCBDVUJFX0ZBQ0VfQ09VTlQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIC8vIFRoaXMgdmFsaWRhdGlvbiBjaGVjayBzaG91bGQgbmV2ZXIg
cmV0dXJuIGZhbHNlLiBJdCBtZWFucyB0aGUgSW1hZ2UvVGV4dHVyZVN0b3JhZ2UgYXNzb2NpYXRp
b24gaXMgYnJva2VuLgorICAgICAgICAgICAgLy8gVGhpcyB2YWxpZGF0aW9uIGNoZWNrIHNob3Vs
ZCBuZXZlciByZXR1cm4gZmFsc2UuIEl0IG1lYW5zIHRoZSBJbWFnZS9UZXh0dXJlU3RvcmFnZQor
ICAgICAgICAgICAgLy8gYXNzb2NpYXRpb24gaXMgYnJva2VuLgogICAgICAgICAgICAgYm9vbCBy
ZXRWYWx1ZSA9IChtQXNzb2NpYXRlZEltYWdlc1tsYXllclRhcmdldF1bbGV2ZWxdID09IGV4cGVj
dGVkSW1hZ2UpOwogICAgICAgICAgICAgQVNTRVJUKHJldFZhbHVlKTsKICAgICAgICAgICAgIHJl
dHVybiByZXRWYWx1ZTsKQEAgLTE1ODEsMTAgKzIwMzgsMTAgQEAKIH0KIAogLy8gZGlzYXNzb2Np
YXRlSW1hZ2UgYWxsb3dzIGFuIEltYWdlIHRvIGVuZCBpdHMgYXNzb2NpYXRpb24gd2l0aCBhIFN0
b3JhZ2UuCi12b2lkIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6ZGlzYXNzb2NpYXRlSW1hZ2UoY29u
c3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExKiBleHBlY3RlZEltYWdlKQordm9pZCBU
ZXh0dXJlU3RvcmFnZTExX0N1YmU6OmRpc2Fzc29jaWF0ZUltYWdlKGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCwgSW1hZ2UxMSAqZXhwZWN0ZWRJbWFnZSkKIHsKLSAgICBHTGludCBsZXZlbCA9
IGluZGV4Lm1pcEluZGV4OwotICAgIEdMaW50IGxheWVyVGFyZ2V0ID0gaW5kZXgubGF5ZXJJbmRl
eDsKKyAgICBjb25zdCBHTGludCBsZXZlbCAgICAgICA9IGluZGV4Lm1pcEluZGV4OworICAgIGNv
bnN0IEdMaW50IGxheWVyVGFyZ2V0ID0gaW5kZXgubGF5ZXJJbmRleDsKIAogICAgIEFTU0VSVCgw
IDw9IGxldmVsICYmIGxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVM
Uyk7CiAgICAgQVNTRVJUKDAgPD0gbGF5ZXJUYXJnZXQgJiYgbGF5ZXJUYXJnZXQgPCBDVUJFX0ZB
Q0VfQ09VTlQpOwpAQCAtMTU5NywxNyArMjA1NCwxOSBAQAogCiAgICAgICAgICAgICBpZiAobUFz
c29jaWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVsXSA9PSBleHBlY3RlZEltYWdlKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VzW2xheWVyVGFyZ2V0
XVtsZXZlbF0gPSBOVUxMOworICAgICAgICAgICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VzW2xheWVy
VGFyZ2V0XVtsZXZlbF0gPSBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogfQogCi0vLyByZWxlYXNlQXNzb2NpYXRlZEltYWdlIHByZXBhcmVzIHRoZSBTdG9yYWdlIGZv
ciBhIG5ldyBJbWFnZSBhc3NvY2lhdGlvbi4gSXQgbGV0cyB0aGUgb2xkIEltYWdlIHJlY292ZXIg
aXRzIGRhdGEgYmVmb3JlIGVuZGluZyB0aGUgYXNzb2NpYXRpb24uCi1nbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV9DdWJlOjpyZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCwgSW1hZ2UxMSogaW5jb21pbmdJbWFnZSkKKy8vIHJlbGVhc2VBc3NvY2lhdGVk
SW1hZ2UgcHJlcGFyZXMgdGhlIFN0b3JhZ2UgZm9yIGEgbmV3IEltYWdlIGFzc29jaWF0aW9uLiBJ
dCBsZXRzIHRoZSBvbGQgSW1hZ2UKKy8vIHJlY292ZXIgaXRzIGRhdGEgYmVmb3JlIGVuZGluZyB0
aGUgYXNzb2NpYXRpb24uCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpyZWxlYXNl
QXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2UxMSAqaW5j
b21pbmdJbWFnZSkKIHsKLSAgICBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4OwotICAgIEdM
aW50IGxheWVyVGFyZ2V0ID0gaW5kZXgubGF5ZXJJbmRleDsKKyAgICBjb25zdCBHTGludCBsZXZl
bCAgICAgICA9IGluZGV4Lm1pcEluZGV4OworICAgIGNvbnN0IEdMaW50IGxheWVyVGFyZ2V0ID0g
aW5kZXgubGF5ZXJJbmRleDsKIAogICAgIEFTU0VSVCgwIDw9IGxldmVsICYmIGxldmVsIDwgZ2w6
OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyk7CiAgICAgQVNTRVJUKDAgPD0gbGF5
ZXJUYXJnZXQgJiYgbGF5ZXJUYXJnZXQgPCBDVUJFX0ZBQ0VfQ09VTlQpOwpAQCAtMTYxNywxNyAr
MjA3NiwyMSBAQAogICAgICAgICBpZiAoMCA8PSBsYXllclRhcmdldCAmJiBsYXllclRhcmdldCA8
IENVQkVfRkFDRV9DT1VOVCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBs
ZXQgdGhlIG9sZCBJbWFnZSByZWNvdmVyIGl0cyBkYXRhLCBpZiBpdCBpcyBhbHNvIHRoZSBpbmNv
bWluZyBJbWFnZS4KLSAgICAgICAgICAgIGlmIChtQXNzb2NpYXRlZEltYWdlc1tsYXllclRhcmdl
dF1bbGV2ZWxdICE9IE5VTEwgJiYgbUFzc29jaWF0ZWRJbWFnZXNbbGF5ZXJUYXJnZXRdW2xldmVs
XSAhPSBpbmNvbWluZ0ltYWdlKQorICAgICAgICAgICAgaWYgKG1Bc3NvY2lhdGVkSW1hZ2VzW2xh
eWVyVGFyZ2V0XVtsZXZlbF0gIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgICAgIG1Bc3NvY2lh
dGVkSW1hZ2VzW2xheWVyVGFyZ2V0XVtsZXZlbF0gIT0gaW5jb21pbmdJbWFnZSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgSW1hZ2UgaXMgc3RpbGwg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4dHVyZVN0b3JhZ2UuIFRoaXMgc2hvdWxkIGJlIHRydWUu
Ci0gICAgICAgICAgICAgICAgYm9vbCBpbWFnZUFzc29jaWF0aW9uQ29ycmVjdCA9IG1Bc3NvY2lh
dGVkSW1hZ2VzW2xheWVyVGFyZ2V0XVtsZXZlbF0tPmlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZCh0
aGlzKTsKKyAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgSW1hZ2UgaXMgc3RpbGwg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4dHVyZVN0b3JhZ2UuIFRoaXMgc2hvdWxkCisgICAgICAg
ICAgICAgICAgLy8gYmUgdHJ1ZS4KKyAgICAgICAgICAgICAgICBib29sIGltYWdlQXNzb2NpYXRp
b25Db3JyZWN0ID0KKyAgICAgICAgICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbbGF5ZXJU
YXJnZXRdW2xldmVsXS0+aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlkKHRoaXMpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChpbWFnZUFzc29jaWF0aW9uQ29ycmVjdCk7CiAKICAgICAgICAgICAgICAg
ICBpZiAoaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QpCiAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAvLyBGb3JjZSB0aGUgaW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3JhZ2Ug
YmVmb3JlIGl0cyBkYXRhIGlzIG92ZXJ3cml0dGVuLgotICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIHdpbGwgcmVzZXQgbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdIHRvIE5VTEwgdG9vLgotICAg
ICAgICAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtQXNzb2NpYXRlZEltYWdlc1tsYXll
clRhcmdldF1bbGV2ZWxdLT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9yYWdlKCk7CisgICAgICAg
ICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXNldCBtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0g
dG8gbnVsbHB0ciB0b28uCisgICAgICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtQXNzb2NpYXRlZEltYWdlc1tsYXllclRhcmdldF1bbGV2
ZWxdLT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9yYWdlKCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTE2ODQsNTMgKzIxNDcsOTYgQEAKIGdsOjpF
cnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmVuc3VyZVRleHR1cmVFeGlzdHMoaW50IG1pcExl
dmVscykKIHsKICAgICAvLyBJZiBtTWlwTGV2ZWxzID0gMSB0aGVuIGFsd2F5cyB1c2UgbVRleHR1
cmUgcmF0aGVyIHRoYW4gbUxldmVsWmVyb1RleHR1cmUuCi0gICAgYm9vbCB1c2VMZXZlbFplcm9U
ZXh0dXJlID0gbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5k
ID8gKG1pcExldmVscyA9PSAxKSAmJiAobU1pcExldmVscyA+IDEpIDogZmFsc2U7CisgICAgYm9v
bCB1c2VMZXZlbFplcm9UZXh0dXJlID0gbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9N
YXhMb2RXb3JrYXJvdW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKG1p
cExldmVscyA9PSAxKSAmJiAobU1pcExldmVscyA+IDEpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogZmFsc2U7CiAgICAgSUQzRDExVGV4dHVyZTJEICoqb3V0cHV0VGV4dHVy
ZSA9IHVzZUxldmVsWmVyb1RleHR1cmUgPyAmbUxldmVsWmVyb1RleHR1cmUgOiAmbVRleHR1cmU7
CiAKICAgICAvLyBpZiB0aGUgc2l6ZSBpcyBub3QgcG9zaXRpdmUgdGhpcyBzaG91bGQgYmUgdHJl
YXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRleHR1cmUKICAgICAvLyB3ZSBoYW5kbGUgdGhhdCBoZXJl
IGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgotICAgIGlmICgqb3V0cHV0VGV4
dHVyZSA9PSBOVUxMICYmIG1UZXh0dXJlV2lkdGggPiAwICYmIG1UZXh0dXJlSGVpZ2h0ID4gMCkK
KyAgICBpZiAoKm91dHB1dFRleHR1cmUgPT0gbnVsbHB0ciAmJiBtVGV4dHVyZVdpZHRoID4gMCAm
JiBtVGV4dHVyZUhlaWdodCA+IDApCiAgICAgewogICAgICAgICBBU1NFUlQobU1pcExldmVscyA+
IDApOwogCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKIAogICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBkZXNjOwotICAgICAgICBkZXNj
LldpZHRoID0gbVRleHR1cmVXaWR0aDsKLSAgICAgICAgZGVzYy5IZWlnaHQgPSBtVGV4dHVyZUhl
aWdodDsKLSAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBtaXBMZXZlbHM7Ci0gICAgICAgIGRlc2Mu
QXJyYXlTaXplID0gQ1VCRV9GQUNFX0NPVU5UOwotICAgICAgICBkZXNjLkZvcm1hdCA9IG1UZXh0
dXJlRm9ybWF0OwotICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBk
ZXNjLldpZHRoICAgICAgICAgICAgICA9IG1UZXh0dXJlV2lkdGg7CisgICAgICAgIGRlc2MuSGVp
Z2h0ICAgICAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7CisgICAgICAgIGRlc2MuTWlwTGV2ZWxz
ICAgICAgICAgID0gbWlwTGV2ZWxzOworICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9
IENVQkVfRkFDRV9DT1VOVDsKKyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtVGV4
dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQg
ICA9IDE7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKLSAgICAgICAgZGVz
Yy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGRlc2MuQmluZEZsYWdzID0g
Z2V0QmluZEZsYWdzKCk7Ci0gICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAgICAg
ICBkZXNjLk1pc2NGbGFncyA9IEQzRDExX1JFU09VUkNFX01JU0NfVEVYVFVSRUNVQkUgfCBnZXRN
aXNjRmxhZ3MoKTsKKyAgICAgICAgZGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FH
RV9ERUZBVUxUOworICAgICAgICBkZXNjLkJpbmRGbGFncyAgICAgICAgICA9IGdldEJpbmRGbGFn
cygpOworICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7CisgICAgICAgIGRlc2Mu
TWlzY0ZsYWdzICAgICAgICAgID0gRDNEMTFfUkVTT1VSQ0VfTUlTQ19URVhUVVJFQ1VCRSB8IGdl
dE1pc2NGbGFncygpOwogCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVU
ZXh0dXJlMkQoJmRlc2MsIE5VTEwsIG91dHB1dFRleHR1cmUpOworICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBudWxscHRyLCBvdXRwdXRUZXh0
dXJlKTsKIAogICAgICAgICAvLyB0aGlzIGNhbiBoYXBwZW4gZnJvbSB3aW5kb3dzIFREUgogICAg
ICAgICBpZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1SZW5kZXJlci0+bm90aWZ5RGV2aWNlTG9zdCgpOwotICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBjdWJlIHRl
eHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gY3JlYXRlIGN1YmUgdGV4dHVyZSBzdG9yYWdlLCByZXN1bHQ6IDB4JVgu
IiwgcmVzdWx0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsK
LSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBjcmVhdGUgY3ViZSB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBjdWJlIHRleHR1cmUgc3RvcmFn
ZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgIH0KKworICAgICAgICBkM2QxMTo6
U2V0RGVidWdOYW1lKCpvdXRwdXRUZXh0dXJlLCAiVGV4U3RvcmFnZUN1YmUuVGV4dHVyZSIpOwog
ICAgIH0KIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkKK2dsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExX0N1YmU6OmNyZWF0ZVJlbmRlclRhcmdldFNSVihJRDNEMTFSZXNvdXJjZSAqdGV4
dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgcmVzb3VyY2VGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqc3J2KSBjb25zdAogewotICAgIGludCBmYWNl
SW5kZXggPSBpbmRleC5sYXllckluZGV4OwotICAgIGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4
OworICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAg
ICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7CisgICAgc3J2RGVzYy5G
b3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSByZXNvdXJjZUZvcm1hdDsKKyAgICBzcnZE
ZXNjLlRleHR1cmUyREFycmF5Lk1vc3REZXRhaWxlZE1pcCA9IG1Ub3BMZXZlbCArIGluZGV4Lm1p
cEluZGV4OworICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwTGV2ZWxzICAgICAgID0gMTsK
KyAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA9IGluZGV4LmxheWVy
SW5kZXg7CisgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNpemUgICAgICAgPSAxOwog
CisgICAgaWYgKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2
ZWwgPD0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQorICAgIHsKKyAgICAgICAgc3J2RGVzYy5WaWV3
RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFQ1VCRTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgLy8gV2lsbCBiZSB1c2VkIHdpdGggVGV4dHVyZTJEIHNhbXBs
ZXIsIG5vdCBUZXh0dXJlQ3ViZQorICAgICAgICBzcnZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0Qx
MV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOworICAgIH0KKworICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcodGV4dHVyZSwgJnNydkRlc2Ms
IHNydik7CisKKyAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVE
KHJlc3VsdCkpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoCisgICAgICAgICAgICBHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAg
IkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc2hhZGVyIHJlc291cmNlIHZpZXcgZm9yIHRleHR1
cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICByZXN1bHQpOworICAgIH0K
KyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZW5kZXJUYXJnZXREM0QgKipvdXRSVCkKK3sKKyAgICBjb25zdCBpbnQgZmFjZUluZGV4ID0gaW5k
ZXgubGF5ZXJJbmRleDsKKyAgICBjb25zdCBpbnQgbGV2ZWwgICAgID0gaW5kZXgubWlwSW5kZXg7
CisKICAgICBBU1NFUlQobGV2ZWwgPj0gMCAmJiBsZXZlbCA8IGdldExldmVsQ291bnQoKSk7CiAg
ICAgQVNTRVJUKGZhY2VJbmRleCA+PSAwICYmIGZhY2VJbmRleCA8IENVQkVfRkFDRV9DT1VOVCk7
CiAKQEAgLTE3MzksNyArMjI0NSw3IEBACiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0g
bVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CiAKLSAgICAg
ICAgSUQzRDExUmVzb3VyY2UgKnRleHR1cmUgPSBOVUxMOworICAgICAgICBJRDNEMTFSZXNvdXJj
ZSAqdGV4dHVyZSA9IG51bGxwdHI7CiAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFJlc291
cmNlKCZ0ZXh0dXJlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewpA
QCAtMTc1MSwyMiArMjI1NywyNyBAQAogICAgICAgICAgICAgaWYgKCFtTGV2ZWxaZXJvUmVuZGVy
VGFyZ2V0W2ZhY2VJbmRleF0pCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgRDNEMTFf
UkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgICAgICAgICBydHZEZXNj
LkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRGb3JtYXQ7Ci0gICAgICAgICAgICAgICAgcnR2RGVzYy5W
aWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKLSAgICAg
ICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlID0gbVRvcExldmVsICsg
bGV2ZWw7CisgICAgICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBtVGV4dHVyZUZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgICAgICAgICAgICAgIHJ0
dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lP
Tl9URVhUVVJFMkRBUlJBWTsKKyAgICAgICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5
Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIGxldmVsOwogICAgICAgICAgICAgICAgIHJ0
dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gZmFjZUluZGV4OwotICAgICAg
ICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gMTsKKyAgICAgICAg
ICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IDE7CiAKICAg
ICAgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHY7CiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KG1MZXZlbFplcm9UZXh0
dXJlLCAmcnR2RGVzYywgJnJ0dik7CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVf
T1VUT0ZNRU1PUlkpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFs
IHJlbmRlciB0YXJnZXQgdmlldyBmb3IgdGV4dHVyZSBzdG9yYWdlLCByZXN1bHQ6IDB4JVguIiwg
cmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8g
Y3JlYXRlIGludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBmb3IgdGV4dHVyZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAKLSAg
ICAgICAgICAgICAgICBtTGV2ZWxaZXJvUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF0gPSBuZXcgVGV4
dHVyZVJlbmRlclRhcmdldDExKHJ0diwgbUxldmVsWmVyb1RleHR1cmUsIE5VTEwsIG1JbnRlcm5h
bEZvcm1hdCwgZ2V0TGV2ZWxXaWR0aChsZXZlbCksIGdldExldmVsSGVpZ2h0KGxldmVsKSwgMSwg
MCk7CisgICAgICAgICAgICAgICAgbUxldmVsWmVyb1JlbmRlclRhcmdldFtmYWNlSW5kZXhdID0g
bmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKKyAgICAgICAgICAgICAgICAgICAgcnR2LCBtTGV2
ZWxaZXJvVGV4dHVyZSwgbnVsbHB0ciwgbnVsbHB0ciwgbUludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LCBnZXRMZXZlbFdpZHRoKGxl
dmVsKSwgZ2V0TGV2ZWxIZWlnaHQobGV2ZWwpLCAxLCAwKTsKIAogICAgICAgICAgICAgICAgIC8v
IFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZXNlIHJlc291cmNlcwogICAg
ICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7CkBAIC0xNzc3LDM5ICsyMjg4LDM5IEBACiAg
ICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKICAgICAgICAgfQogCi0g
ICAgICAgIEQzRDExX1NIQURFUl9SRVNPVVJDRV9WSUVXX0RFU0Mgc3J2RGVzYzsKLSAgICAgICAg
c3J2RGVzYy5Gb3JtYXQgPSBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7Ci0gICAgICAgIHNydkRlc2Mu
VGV4dHVyZTJEQXJyYXkuTW9zdERldGFpbGVkTWlwID0gbVRvcExldmVsICsgbGV2ZWw7Ci0gICAg
ICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwTGV2ZWxzID0gMTsKLSAgICAgICAgc3J2RGVz
Yy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSW5kZXg7Ci0gICAgICAgIHNy
dkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gMTsKLQotICAgICAgICBpZiAobVJlbmRl
cmVyLT5nZXRGZWF0dXJlTGV2ZWwoKSA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCisgICAgICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2ID0gbnVsbHB0cjsKKyAgICAgICAgZXJyb3Ig
PSBjcmVhdGVSZW5kZXJUYXJnZXRTUlYodGV4dHVyZSwgaW5kZXgsIG1UZXh0dXJlRm9ybWF0U2V0
LT5zcnZGb3JtYXQsICZzcnYpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBzcnZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9TUlZfRElNRU5T
SU9OX1RFWFRVUkVDVUJFOworICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9Cisg
ICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSViA9IG51bGxwdHI7CisgICAg
ICAgIGlmIChtVGV4dHVyZUZvcm1hdFNldC0+YmxpdFNSVkZvcm1hdCAhPSBtVGV4dHVyZUZvcm1h
dFNldC0+c3J2Rm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvciA9CisgICAgICAg
ICAgICAgICAgY3JlYXRlUmVuZGVyVGFyZ2V0U1JWKHRleHR1cmUsIGluZGV4LCBtVGV4dHVyZUZv
cm1hdFNldC0+YmxpdFNSVkZvcm1hdCwgJmJsaXRTUlYpOworICAgICAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShz
cnYpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNydkRlc2MuVmlld0Rp
bWVuc2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7IC8vIFdpbGwgYmUg
dXNlZCB3aXRoIFRleHR1cmUyRCBzYW1wbGVyLCBub3QgVGV4dHVyZUN1YmUKKyAgICAgICAgICAg
IGJsaXRTUlYgPSBzcnY7CisgICAgICAgICAgICBibGl0U1JWLT5BZGRSZWYoKTsKICAgICAgICAg
fQogCi0gICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2OwotICAgICAgICByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyh0ZXh0dXJlLCAmc3J2RGVzYywg
JnNydik7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUoc3J2LCAiVGV4U3RvcmFnZUN1YmUu
UmVuZGVyVGFyZ2V0U1JWIik7CiAKLSAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgICAgICBpZiAobVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9V
TktOT1dOKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHNoYWRlciByZXNvdXJjZSB2aWV3
IGZvciB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKG1SZW5kZXJUYXJnZXRGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9X
TikKLSAgICAgICAgewogICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0Mg
cnR2RGVzYzsKLSAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gbVJlbmRlclRhcmdldEZvcm1h
dDsKLSAgICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDExX1JUVl9ESU1FTlNJ
T05fVEVYVFVSRTJEQVJSQVk7Ci0gICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1p
cFNsaWNlID0gbVRvcExldmVsICsgbGV2ZWw7CisgICAgICAgICAgICBydHZEZXNjLkZvcm1hdCAg
ICAgICAgICAgICAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7Cisg
ICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDEx
X1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CisgICAgICAgICAgICBydHZEZXNjLlRleHR1
cmUyREFycmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIGxldmVsOwogICAgICAgICAg
ICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSW5kZXg7Ci0g
ICAgICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IDE7CisgICAgICAg
ICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IDE7CiAKICAgICAg
ICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0djsKICAgICAgICAgICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0Vmlldyh0ZXh0dXJlLCAmcnR2RGVzYywgJnJ0dik7
CkBAIC0xODE4LDI0ICsyMzI5LDMzIEBACiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8g
Y3JlYXRlIGludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBmb3IgdGV4dHVyZSBzdG9yYWdlLCBy
ZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShibGl0
U1JWKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRl
cm5hbCByZW5kZXIgdGFyZ2V0IHZpZXcgZm9yIHRleHR1cmUgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
bVJlbmRlclRhcmdldFtmYWNlSW5kZXhdW2xldmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0
MTEocnR2LCB0ZXh0dXJlLCBzcnYsIG1JbnRlcm5hbEZvcm1hdCwgZ2V0TGV2ZWxXaWR0aChsZXZl
bCksIGdldExldmVsSGVpZ2h0KGxldmVsKSwgMSwgMCk7CisgICAgICAgICAgICBkM2QxMTo6U2V0
RGVidWdOYW1lKHJ0diwgIlRleFN0b3JhZ2VDdWJlLlJlbmRlclRhcmdldFJUViIpOwogCisgICAg
ICAgICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF1bbGV2ZWxdID0gbmV3IFRleHR1cmVSZW5k
ZXJUYXJnZXQxMSgKKyAgICAgICAgICAgICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwg
bUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICAgICAg
ICAgIGdldExldmVsV2lkdGgobGV2ZWwpLCBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDApOwor
CiAgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVz
ZSByZXNvdXJjZXMKICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7CiAgICAgICAgICAgICBT
YWZlUmVsZWFzZShzcnYpOworICAgICAgICAgICAgU2FmZVJlbGVhc2UoYmxpdFNSVik7CiAgICAg
ICAgIH0KLSAgICAgICAgZWxzZSBpZiAobURlcHRoU3RlbmNpbEZvcm1hdCAhPSBEWEdJX0ZPUk1B
VF9VTktOT1dOKQorICAgICAgICBlbHNlIGlmIChtVGV4dHVyZUZvcm1hdFNldC0+ZHN2Rm9ybWF0
ICE9IERYR0lfRk9STUFUX1VOS05PV04pCiAgICAgICAgIHsKICAgICAgICAgICAgIEQzRDExX0RF
UFRIX1NURU5DSUxfVklFV19ERVNDIGRzdkRlc2M7Ci0gICAgICAgICAgICBkc3ZEZXNjLkZvcm1h
dCA9IG1EZXB0aFN0ZW5jaWxGb3JtYXQ7Ci0gICAgICAgICAgICBkc3ZEZXNjLlZpZXdEaW1lbnNp
b24gPSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwotICAgICAgICAgICAgZHN2
RGVzYy5GbGFncyA9IDA7Ci0gICAgICAgICAgICBkc3ZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNs
aWNlID0gbVRvcExldmVsICsgbGV2ZWw7CisgICAgICAgICAgICBkc3ZEZXNjLkZvcm1hdCAgICAg
ICAgICAgICAgICAgICAgICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5kc3ZGb3JtYXQ7CisgICAg
ICAgICAgICBkc3ZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDExX0RT
Vl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CisgICAgICAgICAgICBkc3ZEZXNjLkZsYWdzICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisgICAgICAgICAgICBkc3ZEZXNjLlRleHR1cmUy
REFycmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCArIGxldmVsOwogICAgICAgICAgICAg
ZHN2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSBmYWNlSW5kZXg7Ci0gICAg
ICAgICAgICBkc3ZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IDE7CisgICAgICAgICAg
ICBkc3ZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IDE7CiAKICAgICAgICAg
ICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdjsKICAgICAgICAgICAgIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyh0ZXh0dXJlLCAmZHN2RGVzYywgJmRzdik7CkBA
IC0xODQ0LDE0ICsyMzY0LDIzIEBACiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3Jl
YXRlIGludGVybmFsIGRlcHRoIHN0ZW5jaWwgdmlldyBmb3IgdGV4dHVyZSBzdG9yYWdlLCByZXN1
bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShibGl0U1JW
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5h
bCBkZXB0aCBzdGVuY2lsIHZpZXcgZm9yIHRleHR1cmUgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbVJl
bmRlclRhcmdldFtmYWNlSW5kZXhdW2xldmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEo
ZHN2LCB0ZXh0dXJlLCBzcnYsIG1JbnRlcm5hbEZvcm1hdCwgZ2V0TGV2ZWxXaWR0aChsZXZlbCks
IGdldExldmVsSGVpZ2h0KGxldmVsKSwgMSwgMCk7CisgICAgICAgICAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKGRzdiwgIlRleFN0b3JhZ2VDdWJlLlJlbmRlclRhcmdldERTViIpOwogCisgICAgICAg
ICAgICBtUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF1bbGV2ZWxdID0gbmV3IFRleHR1cmVSZW5kZXJU
YXJnZXQxMSgKKyAgICAgICAgICAgICAgICBkc3YsIHRleHR1cmUsIHNydiwgbUludGVybmFsRm9y
bWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LCBnZXRMZXZlbFdpZHRoKGxldmVsKSwKKyAg
ICAgICAgICAgICAgICBnZXRMZXZlbEhlaWdodChsZXZlbCksIDEsIDApOworCiAgICAgICAgICAg
ICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMK
ICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGRzdik7CiAgICAgICAgICAgICBTYWZlUmVsZWFzZShz
cnYpOworICAgICAgICAgICAgU2FmZVJlbGVhc2UoYmxpdFNSVik7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7CkBAIC0xODY0LDcgKzIzOTMsMTAgQEAKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6Y3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsIGludCBtaXBMZXZlbHMsIERYR0lfRk9STUFUIGZv
cm1hdCwgSUQzRDExUmVzb3VyY2UgKnRleHR1cmUsCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MV9DdWJlOjpjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgbWlwTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNv
dXJjZVZpZXcgKipvdXRTUlYpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG91dFNSVik7CkBAIC0xODcy
LDIwICsyNDA0LDIxIEBACiAgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZE
ZXNjOwogICAgIHNydkRlc2MuRm9ybWF0ID0gZm9ybWF0OwogCi0gICAgLy8gVW5ub3JtYWxpemVk
IGludGVnZXIgY3ViZSBtYXBzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IERYMTE7IHdlIGVtdWxhdGUg
dGhlbSBhcyBhbiBhcnJheSBvZiBzaXggMkQgdGV4dHVyZXMKKyAgICAvLyBVbm5vcm1hbGl6ZWQg
aW50ZWdlciBjdWJlIG1hcHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgRFgxMTsgd2UgZW11bGF0ZSB0
aGVtIGFzIGFuIGFycmF5IG9mIHNpeAorICAgIC8vIDJEIHRleHR1cmVzCiAgICAgY29uc3QgZDNk
MTE6OkRYR0lGb3JtYXQgJmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZv
KGZvcm1hdCk7CiAgICAgaWYgKGR4Z2lGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfSU5U
IHx8IGR4Z2lGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQogICAg
IHsKLSAgICAgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9U
RVhUVVJFMkRBUlJBWTsKKyAgICAgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgICAg
ICAgICAgPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwogICAgICAgICBzcnZE
ZXNjLlRleHR1cmUyREFycmF5Lk1vc3REZXRhaWxlZE1pcCA9IG1Ub3BMZXZlbCArIGJhc2VMZXZl
bDsKLSAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgPSAxOworICAgICAg
ICBzcnZEZXNjLlRleHR1cmUyREFycmF5Lk1pcExldmVscyAgICAgICA9IG1pcExldmVsczsKICAg
ICAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSAwOwotICAgICAg
ICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9IENVQkVfRkFDRV9DT1VOVDsKKyAg
ICAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNpemUgICAgICAgPSBDVUJFX0ZBQ0Vf
Q09VTlQ7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHNydkRlc2MuVmlld0RpbWVu
c2lvbiA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRUNVQkU7Ci0gICAgICAgIHNydkRlc2Mu
VGV4dHVyZUN1YmUuTWlwTGV2ZWxzID0gbWlwTGV2ZWxzOworICAgICAgICBzcnZEZXNjLlZpZXdE
aW1lbnNpb24gICAgICAgICAgICAgICA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRUNVQkU7
CisgICAgICAgIHNydkRlc2MuVGV4dHVyZUN1YmUuTWlwTGV2ZWxzICAgICAgID0gbWlwTGV2ZWxz
OwogICAgICAgICBzcnZEZXNjLlRleHR1cmVDdWJlLk1vc3REZXRhaWxlZE1pcCA9IG1Ub3BMZXZl
bCArIGJhc2VMZXZlbDsKICAgICB9CiAKQEAgLTE4OTUsMzEgKzI0MjgsMzUgQEAKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtVG9wTGV2ZWwgPT0gMCk7CiAgICAgICAgIEFTU0VSVChiYXNlTGV2ZWwg
PT0gMCk7Ci0gICAgICAgIC8vIFRoaXMgY29kZSBhbHNvIGFzc3VtZXMgdGhhdCB0aGUgaW5jb21p
bmcgdGV4dHVyZSBlcXVhbHMgZWl0aGVyIG1MZXZlbFplcm9UZXh0dXJlIG9yIG1UZXh0dXJlLgor
ICAgICAgICAvLyBUaGlzIGNvZGUgYWxzbyBhc3N1bWVzIHRoYXQgdGhlIGluY29taW5nIHRleHR1
cmUgZXF1YWxzIGVpdGhlciBtTGV2ZWxaZXJvVGV4dHVyZSBvcgorICAgICAgICAvLyBtVGV4dHVy
ZS4KIAogICAgICAgICBpZiAobWlwTGV2ZWxzID09IDEgJiYgbU1pcExldmVscyA+IDEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIFdlIG11c3QgdXNlIGEgU1JWIG9uIHRoZSBsZXZlbC16ZXJv
LW9ubHkgdGV4dHVyZS4KLSAgICAgICAgICAgIEFTU0VSVChtTGV2ZWxaZXJvVGV4dHVyZSAhPSBO
VUxMICYmIHRleHR1cmUgPT0gbUxldmVsWmVyb1RleHR1cmUpOworICAgICAgICAgICAgQVNTRVJU
KG1MZXZlbFplcm9UZXh0dXJlICE9IG51bGxwdHIgJiYgdGV4dHVyZSA9PSBtTGV2ZWxaZXJvVGV4
dHVyZSk7CiAgICAgICAgICAgICBzcnZUZXh0dXJlID0gbUxldmVsWmVyb1RleHR1cmU7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobWlwTGV2
ZWxzID09IHN0YXRpY19jYXN0PGludD4obU1pcExldmVscykpOwotICAgICAgICAgICAgQVNTRVJU
KG1UZXh0dXJlICE9IE5VTEwgJiYgdGV4dHVyZSA9PSBtVGV4dHVyZSk7CisgICAgICAgICAgICBB
U1NFUlQobVRleHR1cmUgIT0gbnVsbHB0ciAmJiB0ZXh0dXJlID09IG1UZXh0dXJlKTsKICAgICAg
ICAgICAgIHNydlRleHR1cmUgPSBtVGV4dHVyZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIElE
M0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKLSAgICBIUkVTVUxU
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHNydlRleHR1cmUsICZz
cnZEZXNjLCBvdXRTUlYpOworICAgIEhSRVNVTFQgcmVzdWx0ICAgICAgID0gZGV2aWNlLT5DcmVh
dGVTaGFkZXJSZXNvdXJjZVZpZXcoc3J2VGV4dHVyZSwgJnNydkRlc2MsIG91dFNSVik7CiAKICAg
ICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOwog
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgdGV4dHVyZSBzdG9y
YWdlIFNSViwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv
IGNyZWF0ZSBpbnRlcm5hbCB0ZXh0dXJlIHN0b3JhZ2UgU1JWLCByZXN1bHQ6IDB4JVguIiwgcmVz
dWx0KTsKICAgICB9CiAKKyAgICBkM2QxMTo6U2V0RGVidWdOYW1lKCpvdXRTUlYsICJUZXhTdG9y
YWdlQ3ViZS5TUlYiKTsKKwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
CkBAIC0xOTMyLDM5ICsyNDY5LDQzIEBACiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0g
bVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAogICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBk
ZXNjOwotICAgICAgICBkZXNjLldpZHRoID0gbVRleHR1cmVXaWR0aDsKLSAgICAgICAgZGVzYy5I
ZWlnaHQgPSBtVGV4dHVyZUhlaWdodDsKLSAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBtTWlwTGV2
ZWxzOwotICAgICAgICBkZXNjLkFycmF5U2l6ZSA9IENVQkVfRkFDRV9DT1VOVDsKLSAgICAgICAg
ZGVzYy5Gb3JtYXQgPSBtU3dpenpsZVRleHR1cmVGb3JtYXQ7Ci0gICAgICAgIGRlc2MuU2FtcGxl
RGVzYy5Db3VudCA9IDE7CisgICAgICAgIGRlc2MuV2lkdGggICAgICAgICAgICAgID0gbVRleHR1
cmVXaWR0aDsKKyAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4dHVyZUhlaWdo
dDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBtTWlwTGV2ZWxzOworICAgICAg
ICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IENVQkVfRkFDRV9DT1VOVDsKKyAgICAgICAgZGVz
Yy5Gb3JtYXQgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+dGV4Rm9ybWF0OworICAg
ICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVz
Yy5RdWFsaXR5ID0gMDsKLSAgICAgICAgZGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7
Ci0gICAgICAgIGRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UgfCBE
M0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7Ci0gICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAw
OwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9IEQzRDExX1JFU09VUkNFX01JU0NfVEVYVFVSRUNV
QkU7CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVM
VDsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSBEM0QxMV9CSU5EX1NIQURFUl9S
RVNPVVJDRSB8IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVDsKKyAgICAgICAgZGVzYy5DUFVBY2Nl
c3NGbGFncyAgICAgPSAwOworICAgICAgICBkZXNjLk1pc2NGbGFncyAgICAgICAgICA9IEQzRDEx
X1JFU09VUkNFX01JU0NfVEVYVFVSRUNVQkU7CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVzYywgTlVMTCwgJm1Td2l6emxlVGV4dHVyZSk7Cisg
ICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIG51
bGxwdHIsICZtU3dpenpsZVRleHR1cmUpOwogCiAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgIGlmIChGQUlMRUQocmVz
dWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCBzd2l6emxlIHRleHR1cmUsIHJlc3Vs
dDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0
ZSBpbnRlcm5hbCBzd2l6emxlIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAg
ICAgICB9CisKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0VGV4dHVyZSwgIlRleFN0
b3JhZ2VDdWJlLlN3aXp6bGVUZXh0dXJlIik7CiAgICAgfQogCiAgICAgKm91dFRleHR1cmUgPSBt
U3dpenpsZVRleHR1cmU7CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAK
LWdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQo
aW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqb3V0UlRWKQorZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipvdXRSVFYpCiB7CiAgICAgQVNTRVJUKG1pcExl
dmVsID49IDAgJiYgbWlwTGV2ZWwgPCBnZXRMZXZlbENvdW50KCkpOwogICAgIEFTU0VSVChvdXRS
VFYpOwogCiAgICAgaWYgKCFtU3dpenpsZVJlbmRlclRhcmdldHNbbWlwTGV2ZWxdKQogICAgIHsK
LSAgICAgICAgSUQzRDExUmVzb3VyY2UgKnN3aXp6bGVUZXh0dXJlID0gTlVMTDsKKyAgICAgICAg
SUQzRDExUmVzb3VyY2UgKnN3aXp6bGVUZXh0dXJlID0gbnVsbHB0cjsKICAgICAgICAgZ2w6OkVy
cm9yIGVycm9yID0gZ2V0U3dpenpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKTsKICAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewpAQCAtMTk3NCwxOCArMjUxNSwyMSBAQAog
ICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAK
ICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAg
cnR2RGVzYy5Gb3JtYXQgPSBtU3dpenpsZVJlbmRlclRhcmdldEZvcm1hdDsKLSAgICAgICAgcnR2
RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsK
LSAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZSA9IG1Ub3BMZXZlbCArIG1p
cExldmVsOworICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICA9
IG1Td2l6emxlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7CisgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVu
c2lvbiAgICAgICAgICAgICAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJB
WTsKKyAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZSAgICAgICAgPSBtVG9w
TGV2ZWwgKyBtaXBMZXZlbDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFy
cmF5U2xpY2UgPSAwOwotICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSA9
IENVQkVfRkFDRV9DT1VOVDsKKyAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNp
emUgICAgICAgPSBDVUJFX0ZBQ0VfQ09VTlQ7CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcobVN3aXp6bGVUZXh0dXJlLCAmcnR2RGVzYywg
Jm1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF0pOworICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0VmlldyhtU3dpenpsZVRleHR1cmUsICZydHZE
ZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXSk7CiAKICAgICAgICAgQVNTRVJU
KHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHN3aXp6bGUg
cmVuZGVyIHRhcmdldCB2aWV3LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc3dpenpsZSByZW5kZXIgdGFyZ2V0
IHZpZXcsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xOTkzLDU2ICsyNTM3LDYwIEBACiAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLVRleHR1cmVTdG9yYWdlMTFfM0Q6OlRl
eHR1cmVTdG9yYWdlMTFfM0QoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBp
bnQgbGV2ZWxzKQotICAgIDogVGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgR2V0VGV4dHVyZUJpbmRGbGFncyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXIt
PmdldEZlYXR1cmVMZXZlbCgpLCByZW5kZXJUYXJnZXQpLAotICAgICAgICAgICAgICAgICAgICAg
ICBHZXRUZXh0dXJlTWlzY0ZsYWdzKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0RmVhdHVy
ZUxldmVsKCksIHJlbmRlclRhcmdldCwgbGV2ZWxzKSkKK1RleHR1cmVTdG9yYWdlMTFfM0Q6OlRl
eHR1cmVTdG9yYWdlMTFfM0QoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW5kZXJUYXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzKQorICAgIDog
VGV4dHVyZVN0b3JhZ2UxMSgKKyAgICAgICAgICByZW5kZXJlciwKKyAgICAgICAgICBHZXRUZXh0
dXJlQmluZEZsYWdzKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmlj
ZUNhcHMoKSwgcmVuZGVyVGFyZ2V0KSwKKyAgICAgICAgICBHZXRUZXh0dXJlTWlzY0ZsYWdzKGlu
dGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXItPmdl
dFJlbmRlcmVyMTFEZXZpY2VDYXBzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpKQogewot
ICAgIG1UZXh0dXJlID0gTlVMTDsKLSAgICBtU3dpenpsZVRleHR1cmUgPSBOVUxMOworICAgIG1U
ZXh0dXJlICAgICAgICA9IG51bGxwdHI7CisgICAgbVN3aXp6bGVUZXh0dXJlID0gbnVsbHB0cjsK
IAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZ2w6OklNUExFTUVOVEFUSU9OX01B
WF9URVhUVVJFX0xFVkVMUzsgaSsrKQogICAgIHsKLSAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNb
aV0gPSBOVUxMOwotICAgICAgICBtTGV2ZWxSZW5kZXJUYXJnZXRzW2ldID0gTlVMTDsKLSAgICAg
ICAgbVN3aXp6bGVSZW5kZXJUYXJnZXRzW2ldID0gTlVMTDsKKyAgICAgICAgbUFzc29jaWF0ZWRJ
bWFnZXNbaV0gICAgID0gbnVsbHB0cjsKKyAgICAgICAgbUxldmVsUmVuZGVyVGFyZ2V0c1tpXSAg
ID0gbnVsbHB0cjsKKyAgICAgICAgbVN3aXp6bGVSZW5kZXJUYXJnZXRzW2ldID0gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBtSW50ZXJuYWxGb3JtYXQgPSBpbnRlcm5hbGZvcm1hdDsKIAotICAgIGNv
bnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZmb3JtYXRJbmZvID0gZDNkMTE6OkdldFRleHR1cmVG
b3JtYXRJbmZvKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVsKCkpOwot
ICAgIG1UZXh0dXJlRm9ybWF0ID0gZm9ybWF0SW5mby50ZXhGb3JtYXQ7Ci0gICAgbVNoYWRlclJl
c291cmNlRm9ybWF0ID0gZm9ybWF0SW5mby5zcnZGb3JtYXQ7Ci0gICAgbURlcHRoU3RlbmNpbEZv
cm1hdCA9IGZvcm1hdEluZm8uZHN2Rm9ybWF0OwotICAgIG1SZW5kZXJUYXJnZXRGb3JtYXQgPSBm
b3JtYXRJbmZvLnJ0dkZvcm1hdDsKLSAgICBtU3dpenpsZVRleHR1cmVGb3JtYXQgPSBmb3JtYXRJ
bmZvLnN3aXp6bGVUZXhGb3JtYXQ7Ci0gICAgbVN3aXp6bGVTaGFkZXJSZXNvdXJjZUZvcm1hdCA9
IGZvcm1hdEluZm8uc3dpenpsZVNSVkZvcm1hdDsKLSAgICBtU3dpenpsZVJlbmRlclRhcmdldEZv
cm1hdCA9IGZvcm1hdEluZm8uc3dpenpsZVJUVkZvcm1hdDsKKyAgICBjb25zdCBkM2QxMTo6VGV4
dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0
SW5mbyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkp
OworICAgIG1UZXh0dXJlRm9ybWF0U2V0ID0gZm9ybWF0SW5mby5mb3JtYXRTZXQ7CisgICAgbVN3
aXp6bGVGb3JtYXRTZXQgPSBmb3JtYXRJbmZvLnN3aXp6bGVGb3JtYXRTZXQ7CiAKICAgICAvLyBh
ZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4dHVyZXMKLSAgICBkM2QxMTo6
TWFrZVZhbGlkU2l6ZShmYWxzZSwgbVRleHR1cmVGb3JtYXQsICZ3aWR0aCwgJmhlaWdodCwgJm1U
b3BMZXZlbCk7CisgICAgZDNkMTE6Ok1ha2VWYWxpZFNpemUoZmFsc2UsIG1UZXh0dXJlRm9ybWF0
U2V0LT50ZXhGb3JtYXQsICZ3aWR0aCwgJmhlaWdodCwgJm1Ub3BMZXZlbCk7CiAKLSAgICBtTWlw
TGV2ZWxzID0gbVRvcExldmVsICsgbGV2ZWxzOwotICAgIG1UZXh0dXJlV2lkdGggPSB3aWR0aDsK
KyAgICBtTWlwTGV2ZWxzICAgICA9IG1Ub3BMZXZlbCArIGxldmVsczsKKyAgICBtVGV4dHVyZVdp
ZHRoICA9IHdpZHRoOwogICAgIG1UZXh0dXJlSGVpZ2h0ID0gaGVpZ2h0OwotICAgIG1UZXh0dXJl
RGVwdGggPSBkZXB0aDsKLQotICAgIGluaXRpYWxpemVTZXJpYWxzKGdldExldmVsQ291bnQoKSAq
IGRlcHRoLCBkZXB0aCk7CisgICAgbVRleHR1cmVEZXB0aCAgPSBkZXB0aDsKIH0KIAogVGV4dHVy
ZVN0b3JhZ2UxMV8zRDo6flRleHR1cmVTdG9yYWdlMTFfM0QoKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTOyBpKysp
CiAgICAgewotICAgICAgICBpZiAobUFzc29jaWF0ZWRJbWFnZXNbaV0gIT0gTlVMTCkKKyAgICAg
ICAgaWYgKG1Bc3NvY2lhdGVkSW1hZ2VzW2ldICE9IG51bGxwdHIpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGJvb2wgaW1hZ2VBc3NvY2lhdGlvbkNvcnJlY3QgPSBtQXNzb2NpYXRlZEltYWdlc1tp
XS0+aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlkKHRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKGlt
YWdlQXNzb2NpYXRpb25Db3JyZWN0KTsKIAogICAgICAgICAgICAgaWYgKGltYWdlQXNzb2NpYXRp
b25Db3JyZWN0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgbGV0
IHRoZSBJbWFnZXMgcmVjb3ZlciB0aGVpciBkYXRhIGJlZm9yZSB3ZSBkZWxldGUgaXQgZnJvbSB0
aGUgVGV4dHVyZVN0b3JhZ2UuCisgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBsZXQgdGhlIElt
YWdlcyByZWNvdmVyIHRoZWlyIGRhdGEgYmVmb3JlIHdlIGRlbGV0ZSBpdCBmcm9tIHRoZQorICAg
ICAgICAgICAgICAgIC8vIFRleHR1cmVTdG9yYWdlLgogICAgICAgICAgICAgICAgIG1Bc3NvY2lh
dGVkSW1hZ2VzW2ldLT5yZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9yYWdlKCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KQEAgLTIwNTEsNyArMjU5OSw4IEBACiAgICAgU2FmZVJlbGVhc2UobVRl
eHR1cmUpOwogICAgIFNhZmVSZWxlYXNlKG1Td2l6emxlVGV4dHVyZSk7CiAKLSAgICBmb3IgKFJl
bmRlclRhcmdldE1hcDo6aXRlcmF0b3IgaSA9IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5iZWdp
bigpOyBpICE9IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5lbmQoKTsgaSsrKQorICAgIGZvciAo
UmVuZGVyVGFyZ2V0TWFwOjppdGVyYXRvciBpID0gbUxldmVsTGF5ZXJSZW5kZXJUYXJnZXRzLmJl
Z2luKCk7CisgICAgICAgICBpICE9IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5lbmQoKTsgaSsr
KQogICAgIHsKICAgICAgICAgU2FmZURlbGV0ZShpLT5zZWNvbmQpOwogICAgIH0KQEAgLTIwNjQs
OSArMjYxMyw5IEBACiAgICAgfQogfQogCi12b2lkIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmFzc29j
aWF0ZUltYWdlKEltYWdlMTEqIGltYWdlLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCit2
b2lkIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmFzc29jaWF0ZUltYWdlKEltYWdlMTEgKmltYWdlLCBj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCiB7Ci0gICAgR0xpbnQgbGV2ZWwgPSBpbmRleC5t
aXBJbmRleDsKKyAgICBjb25zdCBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4OwogCiAgICAg
QVNTRVJUKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRV
UkVfTEVWRUxTKTsKIApAQCAtMjA3NiwxMyArMjYyNSwxNSBAQAogICAgIH0KIH0KIAotYm9vbCBU
ZXh0dXJlU3RvcmFnZTExXzNEOjppc0Fzc29jaWF0ZWRJbWFnZVZhbGlkKGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbmRleCwgSW1hZ2UxMSogZXhwZWN0ZWRJbWFnZSkKK2Jvb2wgVGV4dHVyZVN0b3Jh
Z2UxMV8zRDo6aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1h
Z2UxMSAqZXhwZWN0ZWRJbWFnZSkKIHsKLSAgICBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4
OworICAgIGNvbnN0IEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7CiAKICAgICBpZiAoMCA8
PSBsZXZlbCAmJiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMp
CiAgICAgewotICAgICAgICAvLyBUaGlzIHZhbGlkYXRpb24gY2hlY2sgc2hvdWxkIG5ldmVyIHJl
dHVybiBmYWxzZS4gSXQgbWVhbnMgdGhlIEltYWdlL1RleHR1cmVTdG9yYWdlIGFzc29jaWF0aW9u
IGlzIGJyb2tlbi4KKyAgICAgICAgLy8gVGhpcyB2YWxpZGF0aW9uIGNoZWNrIHNob3VsZCBuZXZl
ciByZXR1cm4gZmFsc2UuIEl0IG1lYW5zIHRoZSBJbWFnZS9UZXh0dXJlU3RvcmFnZQorICAgICAg
ICAvLyBhc3NvY2lhdGlvbiBpcyBicm9rZW4uCiAgICAgICAgIGJvb2wgcmV0VmFsdWUgPSAobUFz
c29jaWF0ZWRJbWFnZXNbbGV2ZWxdID09IGV4cGVjdGVkSW1hZ2UpOwogICAgICAgICBBU1NFUlQo
cmV0VmFsdWUpOwogICAgICAgICByZXR1cm4gcmV0VmFsdWU7CkBAIC0yMDkyLDkgKzI2NDMsOSBA
QAogfQogCiAvLyBkaXNhc3NvY2lhdGVJbWFnZSBhbGxvd3MgYW4gSW1hZ2UgdG8gZW5kIGl0cyBh
c3NvY2lhdGlvbiB3aXRoIGEgU3RvcmFnZS4KLXZvaWQgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6ZGlz
YXNzb2NpYXRlSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExKiBleHBl
Y3RlZEltYWdlKQordm9pZCBUZXh0dXJlU3RvcmFnZTExXzNEOjpkaXNhc3NvY2lhdGVJbWFnZShj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdlMTEgKmV4cGVjdGVkSW1hZ2UpCiB7Ci0g
ICAgR0xpbnQgbGV2ZWwgPSBpbmRleC5taXBJbmRleDsKKyAgICBjb25zdCBHTGludCBsZXZlbCA9
IGluZGV4Lm1pcEluZGV4OwogCiAgICAgQVNTRVJUKDAgPD0gbGV2ZWwgJiYgbGV2ZWwgPCBnbDo6
SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTKTsKIApAQCAtMjEwNCwzMSArMjY1NSwz
NCBAQAogCiAgICAgICAgIGlmIChtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gPT0gZXhwZWN0ZWRJ
bWFnZSkKICAgICAgICAgewotICAgICAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNbbGV2ZWxdID0g
TlVMTDsKKyAgICAgICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXSA9IG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICB9CiB9CiAKLS8vIHJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UgcHJlcGFyZXMg
dGhlIFN0b3JhZ2UgZm9yIGEgbmV3IEltYWdlIGFzc29jaWF0aW9uLiBJdCBsZXRzIHRoZSBvbGQg
SW1hZ2UgcmVjb3ZlciBpdHMgZGF0YSBiZWZvcmUgZW5kaW5nIHRoZSBhc3NvY2lhdGlvbi4KLWds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzNEOjpyZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1hZ2UxMSogaW5jb21pbmdJbWFnZSkKKy8vIHJlbGVh
c2VBc3NvY2lhdGVkSW1hZ2UgcHJlcGFyZXMgdGhlIFN0b3JhZ2UgZm9yIGEgbmV3IEltYWdlIGFz
c29jaWF0aW9uLiBJdCBsZXRzIHRoZSBvbGQgSW1hZ2UKKy8vIHJlY292ZXIgaXRzIGRhdGEgYmVm
b3JlIGVuZGluZyB0aGUgYXNzb2NpYXRpb24uCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8z
RDo6cmVsZWFzZUFzc29jaWF0ZWRJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFn
ZTExICppbmNvbWluZ0ltYWdlKQogewotICAgIEdMaW50IGxldmVsID0gaW5kZXgubWlwSW5kZXg7
CisgICAgY29uc3QgR0xpbnQgbGV2ZWwgPSBpbmRleC5taXBJbmRleDsKIAogICAgIEFTU0VSVCgo
MCA8PSBsZXZlbCAmJiBsZXZlbCA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZF
TFMpKTsKIAogICAgIGlmICgwIDw9IGxldmVsICYmIGxldmVsIDwgZ2w6OklNUExFTUVOVEFUSU9O
X01BWF9URVhUVVJFX0xFVkVMUykKICAgICB7CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gbGV0IHRo
ZSBvbGQgSW1hZ2UgcmVjb3ZlciBpdHMgZGF0YSwgaWYgaXQgaXMgYWxzbyB0aGUgaW5jb21pbmcg
SW1hZ2UuCi0gICAgICAgIGlmIChtQXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gIT0gTlVMTCAmJiBt
QXNzb2NpYXRlZEltYWdlc1tsZXZlbF0gIT0gaW5jb21pbmdJbWFnZSkKKyAgICAgICAgaWYgKG1B
c3NvY2lhdGVkSW1hZ2VzW2xldmVsXSAhPSBudWxscHRyICYmIG1Bc3NvY2lhdGVkSW1hZ2VzW2xl
dmVsXSAhPSBpbmNvbWluZ0ltYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFbnN1cmUg
dGhhdCB0aGUgSW1hZ2UgaXMgc3RpbGwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4dHVyZVN0b3Jh
Z2UuIFRoaXMgc2hvdWxkIGJlIHRydWUuCisgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUg
SW1hZ2UgaXMgc3RpbGwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4dHVyZVN0b3JhZ2UuIFRoaXMg
c2hvdWxkIGJlCisgICAgICAgICAgICAvLyB0cnVlLgogICAgICAgICAgICAgYm9vbCBpbWFnZUFz
c29jaWF0aW9uQ29ycmVjdCA9IG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXS0+aXNBc3NvY2lhdGVk
U3RvcmFnZVZhbGlkKHRoaXMpOwogICAgICAgICAgICAgQVNTRVJUKGltYWdlQXNzb2NpYXRpb25D
b3JyZWN0KTsKIAogICAgICAgICAgICAgaWYgKGltYWdlQXNzb2NpYXRpb25Db3JyZWN0KQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIEZvcmNlIHRoZSBpbWFnZSB0byByZWNvdmVy
IGZyb20gc3RvcmFnZSBiZWZvcmUgaXRzIGRhdGEgaXMgb3ZlcndyaXR0ZW4uCi0gICAgICAgICAg
ICAgICAgLy8gVGhpcyB3aWxsIHJlc2V0IG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXSB0byBOVUxM
IHRvby4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcmVzZXQgbUFzc29jaWF0ZWRJbWFn
ZXNbbGV2ZWxdIHRvIG51bGxwdHIgdG9vLgogICAgICAgICAgICAgICAgIGdsOjpFcnJvciBlcnJv
ciA9IG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXS0+cmVjb3ZlckZyb21Bc3NvY2lhdGVkU3RvcmFn
ZSgpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICAg
ICAgewpAQCAtMjE0MywxMDAgKzI2OTcsMTE3IEBACiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTExXzNEOjpnZXRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKQogewotICAg
IC8vIElmIHRoZSB3aWR0aCwgaGVpZ2h0IG9yIGRlcHRoIGFyZSBub3QgcG9zaXRpdmUgdGhpcyBz
aG91bGQgYmUgdHJlYXRlZCBhcyBhbiBpbmNvbXBsZXRlIHRleHR1cmUKLSAgICAvLyB3ZSBoYW5k
bGUgdGhhdCBoZXJlIGJ5IHNraXBwaW5nIHRoZSBkM2QgdGV4dHVyZSBjcmVhdGlvbgotICAgIGlm
IChtVGV4dHVyZSA9PSBOVUxMICYmIG1UZXh0dXJlV2lkdGggPiAwICYmIG1UZXh0dXJlSGVpZ2h0
ID4gMCAmJiBtVGV4dHVyZURlcHRoID4gMCkKKyAgICAvLyBJZiB0aGUgd2lkdGgsIGhlaWdodCBv
ciBkZXB0aCBhcmUgbm90IHBvc2l0aXZlIHRoaXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYW4gaW5j
b21wbGV0ZQorICAgIC8vIHRleHR1cmUuIFdlIGhhbmRsZSB0aGF0IGhlcmUgYnkgc2tpcHBpbmcg
dGhlIGQzZCB0ZXh0dXJlIGNyZWF0aW9uLgorICAgIGlmIChtVGV4dHVyZSA9PSBudWxscHRyICYm
IG1UZXh0dXJlV2lkdGggPiAwICYmIG1UZXh0dXJlSGVpZ2h0ID4gMCAmJiBtVGV4dHVyZURlcHRo
ID4gMCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtTWlwTGV2ZWxzID4gMCk7CiAKICAgICAgICAg
SUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAg
IEQzRDExX1RFWFRVUkUzRF9ERVNDIGRlc2M7Ci0gICAgICAgIGRlc2MuV2lkdGggPSBtVGV4dHVy
ZVdpZHRoOwotICAgICAgICBkZXNjLkhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OwotICAgICAgICBk
ZXNjLkRlcHRoID0gbVRleHR1cmVEZXB0aDsKLSAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBtTWlw
TGV2ZWxzOwotICAgICAgICBkZXNjLkZvcm1hdCA9IG1UZXh0dXJlRm9ybWF0OwotICAgICAgICBk
ZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICAgICAgZGVzYy5CaW5kRmxhZ3Mg
PSBnZXRCaW5kRmxhZ3MoKTsKKyAgICAgICAgZGVzYy5XaWR0aCAgICAgICAgICA9IG1UZXh0dXJl
V2lkdGg7CisgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKKyAg
ICAgICAgZGVzYy5EZXB0aCAgICAgICAgICA9IG1UZXh0dXJlRGVwdGg7CisgICAgICAgIGRlc2Mu
TWlwTGV2ZWxzICAgICAgPSBtTWlwTGV2ZWxzOworICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAg
ID0gbVRleHR1cmVGb3JtYXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Vc2FnZSAgICAg
ICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAgICAgIGRlc2MuQmluZEZsYWdzICAgICAg
PSBnZXRCaW5kRmxhZ3MoKTsKICAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7Ci0gICAg
ICAgIGRlc2MuTWlzY0ZsYWdzID0gZ2V0TWlzY0ZsYWdzKCk7CisgICAgICAgIGRlc2MuTWlzY0Zs
YWdzICAgICAgPSBnZXRNaXNjRmxhZ3MoKTsKIAotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlVGV4dHVyZTNEKCZkZXNjLCBOVUxMLCAmbVRleHR1cmUpOworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTNEKCZkZXNjLCBudWxscHRyLCAm
bVRleHR1cmUpOwogCiAgICAgICAgIC8vIHRoaXMgY2FuIGhhcHBlbiBmcm9tIHdpbmRvd3MgVERS
CiAgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKICAgICAgICAg
ewogICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlEZXZpY2VMb3N0KCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIDNE
IHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIDNEIHRl
eHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoRkFJTEVEKHJlc3VsdCkp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7
Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQg
dG8gY3JlYXRlIDNEIHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8g
Y3JlYXRlIDNEIHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgIH0KKworICAgICAgICBkM2QxMTo6U2V0
RGVidWdOYW1lKG1UZXh0dXJlLCAiVGV4U3RvcmFnZTNELlRleHR1cmUiKTsKICAgICB9CiAKICAg
ICAqb3V0UmVzb3VyY2UgPSBtVGV4dHVyZTsKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmNyZWF0ZVNSVihpbnQg
YmFzZUxldmVsLCBpbnQgbWlwTGV2ZWxzLCBEWEdJX0ZPUk1BVCBmb3JtYXQsIElEM0QxMVJlc291
cmNlICp0ZXh0dXJlLAorZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmNyZWF0ZVNSVihp
bnQgYmFzZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbWlwTGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKG91dFNSVik7CiAKICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19E
RVNDIHNydkRlc2M7Ci0gICAgc3J2RGVzYy5Gb3JtYXQgPSBmb3JtYXQ7Ci0gICAgc3J2RGVzYy5W
aWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFM0Q7CisgICAgc3J2RGVz
Yy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgID0gZm9ybWF0OworICAgIHNydkRlc2MuVmlld0Rp
bWVuc2lvbiAgICAgICAgICAgICA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTNEOwogICAg
IHNydkRlc2MuVGV4dHVyZTNELk1vc3REZXRhaWxlZE1pcCA9IGJhc2VMZXZlbDsKLSAgICBzcnZE
ZXNjLlRleHR1cmUzRC5NaXBMZXZlbHMgPSBtaXBMZXZlbHM7CisgICAgc3J2RGVzYy5UZXh0dXJl
M0QuTWlwTGV2ZWxzICAgICAgID0gbWlwTGV2ZWxzOwogCiAgICAgSUQzRDExRGV2aWNlICpkZXZp
Y2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNl
LT5DcmVhdGVTaGFkZXJSZXNvdXJjZVZpZXcodGV4dHVyZSwgJnNydkRlc2MsIG91dFNSVik7Cisg
ICAgSFJFU1VMVCByZXN1bHQgICAgICAgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmll
dyh0ZXh0dXJlLCAmc3J2RGVzYywgb3V0U1JWKTsKIAogICAgIEFTU0VSVChyZXN1bHQgPT0gRV9P
VVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCB0ZXh0dXJlIHN0b3JhZ2UgU1JWLCByZXN1bHQ6IDB4JVgu
IiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHRleHR1
cmUgc3RvcmFnZSBTUlYsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAgIH0KIAorICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUoKm91dFNSViwgIlRleFN0b3JhZ2UzRC5TUlYiKTsKKwogICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8zRDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVu
ZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7Ci0gICAgaW50IG1pcExldmVsID0gaW5kZXgubWlwSW5k
ZXg7CisgICAgY29uc3QgaW50IG1pcExldmVsID0gaW5kZXgubWlwSW5kZXg7CiAgICAgQVNTRVJU
KG1pcExldmVsID49IDAgJiYgbWlwTGV2ZWwgPCBnZXRMZXZlbENvdW50KCkpOwogCi0gICAgQVNT
RVJUKG1SZW5kZXJUYXJnZXRGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7CisgICAgQVNT
RVJUKG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTik7
CiAKICAgICBpZiAoIWluZGV4Lmhhc0xheWVyKCkpCiAgICAgewogICAgICAgICBpZiAoIW1MZXZl
bFJlbmRlclRhcmdldHNbbWlwTGV2ZWxdKQogICAgICAgICB7Ci0gICAgICAgICAgICBJRDNEMTFS
ZXNvdXJjZSAqdGV4dHVyZSA9IE5VTEw7CisgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4
dHVyZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRSZXNvdXJj
ZSgmdGV4dHVyZSk7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYgPSBOVUxMOwotICAgICAgICAg
ICAgZXJyb3IgPSBnZXRTUlZMZXZlbChtaXBMZXZlbCwgJnNydik7CisgICAgICAgICAgICBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7CisgICAgICAgICAgICBlcnJvciA9
IGdldFNSVkxldmVsKG1pcExldmVsLCBmYWxzZSwgJnNydik7CiAgICAgICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBlcnJv
cjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3
ICpibGl0U1JWID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGVycm9yID0gZ2V0U1JWTGV2ZWwobWlw
TGV2ZWwsIHRydWUsICZibGl0U1JWKTsKKyAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAg
ICAgfQorCiAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CiAKICAgICAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0
dkRlc2M7Ci0gICAgICAgICAgICBydHZEZXNjLkZvcm1hdCA9IG1SZW5kZXJUYXJnZXRGb3JtYXQ7
Ci0gICAgICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSBEM0QxMV9SVFZfRElNRU5TSU9O
X1RFWFRVUkUzRDsKLSAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELk1pcFNsaWNlID0gbVRv
cExldmVsICsgbWlwTGV2ZWw7CisgICAgICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAg
ICAgICA9IG1UZXh0dXJlRm9ybWF0U2V0LT5ydHZGb3JtYXQ7CisgICAgICAgICAgICBydHZEZXNj
LlZpZXdEaW1lbnNpb24gICAgICAgICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTNEOwor
ICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2UgICAgPSBtVG9wTGV2ZWwgKyBt
aXBMZXZlbDsKICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELkZpcnN0V1NsaWNlID0gMDsK
LSAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELldTaXplID0gc3RhdGljX2Nhc3Q8VUlOVD4o
LTEpOworICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuV1NpemUgICAgICAgPSBzdGF0aWNf
Y2FzdDxVSU5UPigtMSk7CiAKICAgICAgICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0
djsKICAgICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJn
ZXRWaWV3KHRleHR1cmUsICZydHZEZXNjLCAmcnR2KTsKQEAgLTIyNDUsMTEgKzI4MTYsMTkgQEAK
ICAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBTYWZlUmVsZWFzZShzcnYpOwotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgcmVuZGVyIHRh
cmdldCB2aWV3IGZvciB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRTUlYpOworICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBm
b3IgdGV4dHVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RvcmFnZSwg
cmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtTGV2ZWxSZW5kZXJUYXJnZXRzW21pcExl
dmVsXSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEocnR2LCB0ZXh0dXJlLCBzcnYsIG1JbnRl
cm5hbEZvcm1hdCwgZ2V0TGV2ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExl
dmVsKSwgZ2V0TGV2ZWxEZXB0aChtaXBMZXZlbCksIDApOworICAgICAgICAgICAgZDNkMTE6OlNl
dERlYnVnTmFtZShydHYsICJUZXhTdG9yYWdlM0QuUlRWIik7CiAKKyAgICAgICAgICAgIG1MZXZl
bFJlbmRlclRhcmdldHNbbWlwTGV2ZWxdID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKKyAg
ICAgICAgICAgICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0
LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAgICAgICAgICAgIGdldExldmVsV2lk
dGgobWlwTGV2ZWwpLCBnZXRMZXZlbEhlaWdodChtaXBMZXZlbCksIGdldExldmVsRGVwdGgobWlw
TGV2ZWwpLCAwKTsKKwogICAgICAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25l
cnNoaXAgb2YgdGhlc2UgcmVzb3VyY2VzCiAgICAgICAgICAgICBTYWZlUmVsZWFzZShydHYpOwog
ICAgICAgICB9CkBAIC0yMjYwLDcgKzI4MzksNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewot
ICAgICAgICBpbnQgbGF5ZXIgPSBpbmRleC5sYXllckluZGV4OworICAgICAgICBjb25zdCBpbnQg
bGF5ZXIgPSBpbmRleC5sYXllckluZGV4OwogCiAgICAgICAgIExldmVsTGF5ZXJLZXkga2V5KG1p
cExldmVsLCBsYXllcik7CiAgICAgICAgIGlmIChtTGV2ZWxMYXllclJlbmRlclRhcmdldHMuZmlu
ZChrZXkpID09IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5lbmQoKSkKQEAgLTIyNjgsNyArMjg0
Nyw3IEBACiAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CiAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdDsKIAotICAgICAgICAgICAgSUQz
RDExUmVzb3VyY2UgKnRleHR1cmUgPSBOVUxMOworICAgICAgICAgICAgSUQzRDExUmVzb3VyY2Ug
KnRleHR1cmUgPSBudWxscHRyOwogICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVz
b3VyY2UoJnRleHR1cmUpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAg
ICAgICAgIHsKQEAgLTIyNzYsMTQgKzI4NTUsMTUgQEAKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgLy8gVE9ETywgd2hhdCBraW5kIG9mIFNSViBpcyBleHBlY3RlZCBoZXJlPwotICAgICAg
ICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYgPSBOVUxMOworICAgICAgICAgICAg
SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYgPSBudWxscHRyOworICAgICAgICAgICAgSUQz
RDExU2hhZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKIAogICAgICAgICAgICAg
RDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgICAgIHJ0dkRl
c2MuRm9ybWF0ID0gbVJlbmRlclRhcmdldEZvcm1hdDsKLSAgICAgICAgICAgIHJ0dkRlc2MuVmll
d0RpbWVuc2lvbiA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTNEOwotICAgICAgICAgICAg
cnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2UgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKKyAgICAg
ICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQt
PnJ0dkZvcm1hdDsKKyAgICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgID0g
RDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q7CisgICAgICAgICAgICBydHZEZXNjLlRleHR1
cmUzRC5NaXBTbGljZSAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICAgICAgcnR2
RGVzYy5UZXh0dXJlM0QuRmlyc3RXU2xpY2UgPSBsYXllcjsKLSAgICAgICAgICAgIHJ0dkRlc2Mu
VGV4dHVyZTNELldTaXplID0gMTsKKyAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELldTaXpl
ICAgICAgID0gMTsKIAogICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcnR2Owog
ICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KHRleHR1
cmUsICZydHZEZXNjLCAmcnR2KTsKQEAgLTIyOTEsMTIgKzI4NzEsMjEgQEAKICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CiAg
ICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCByZW5kZXIgdGFyZ2V0IHZpZXcgZm9yIHRleHR1
cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgU2Fm
ZVJlbGVhc2Uoc3J2KTsKKyAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShibGl0U1JWKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCByZW5k
ZXIgdGFyZ2V0IHZpZXcgZm9yIHRleHR1cmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CiAKLSAgICAgICAgICAgIG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0c1tr
ZXldID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMShydHYsIHRleHR1cmUsIHNydiwgbUludGVy
bmFsRm9ybWF0LCBnZXRMZXZlbFdpZHRoKG1pcExldmVsKSwgZ2V0TGV2ZWxIZWlnaHQobWlwTGV2
ZWwpLCAxLCAwKTsKKyAgICAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3Rv
cmFnZTNELkxheWVyUlRWIik7CiAKKyAgICAgICAgICAgIG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0
c1trZXldID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKKyAgICAgICAgICAgICAgICBydHYs
IHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNl
dC0+Zm9ybWF0LAorICAgICAgICAgICAgICAgIGdldExldmVsV2lkdGgobWlwTGV2ZWwpLCBnZXRM
ZXZlbEhlaWdodChtaXBMZXZlbCksIDEsIDApOworCiAgICAgICAgICAgICAvLyBSZW5kZXJUYXJn
ZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKICAgICAgICAgICAgIFNh
ZmVSZWxlYXNlKHJ0dik7CiAgICAgICAgIH0KQEAgLTIzMTYsMjMgKzI5MDUsMjYgQEAKICAgICAg
ICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAg
ICAgIEQzRDExX1RFWFRVUkUzRF9ERVNDIGRlc2M7Ci0gICAgICAgIGRlc2MuV2lkdGggPSBtVGV4
dHVyZVdpZHRoOwotICAgICAgICBkZXNjLkhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OwotICAgICAg
ICBkZXNjLkRlcHRoID0gbVRleHR1cmVEZXB0aDsKLSAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBt
TWlwTGV2ZWxzOwotICAgICAgICBkZXNjLkZvcm1hdCA9IG1Td2l6emxlVGV4dHVyZUZvcm1hdDsK
LSAgICAgICAgZGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGRlc2Mu
QmluZEZsYWdzID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UgfCBEM0QxMV9CSU5EX1JFTkRF
Ul9UQVJHRVQ7CisgICAgICAgIGRlc2MuV2lkdGggICAgICAgICAgPSBtVGV4dHVyZVdpZHRoOwor
ICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgID0gbVRleHR1cmVIZWlnaHQ7CisgICAgICAgIGRl
c2MuRGVwdGggICAgICAgICAgPSBtVGV4dHVyZURlcHRoOworICAgICAgICBkZXNjLk1pcExldmVs
cyAgICAgID0gbU1pcExldmVsczsKKyAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICA9IG1Td2l6
emxlRm9ybWF0U2V0LT50ZXhGb3JtYXQ7CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgPSBE
M0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBkZXNjLkJpbmRGbGFncyAgICAgID0gRDNEMTFf
QklORF9TSEFERVJfUkVTT1VSQ0UgfCBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7CiAgICAgICAg
IGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7Cisg
ICAgICAgIGRlc2MuTWlzY0ZsYWdzICAgICAgPSAwOwogCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0
ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlM0QoJmRlc2MsIE5VTEwsICZtU3dpenpsZVRleHR1cmUp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTNEKCZkZXNj
LCBudWxscHRyLCAmbVN3aXp6bGVUZXh0dXJlKTsKIAogICAgICAgICBBU1NFUlQocmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc3dpenpsZSB0ZXh0dXJlLCBy
ZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBj
cmVhdGUgaW50ZXJuYWwgc3dpenpsZSB0ZXh0dXJlLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsK
ICAgICAgICAgfQorCisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVN3aXp6bGVUZXh0dXJl
LCAiVGV4U3RvcmFnZTNELlN3aXp6bGVUZXh0dXJlIik7CiAgICAgfQogCiAgICAgKm91dFRleHR1
cmUgPSBtU3dpenpsZVRleHR1cmU7CkBAIC0yMzQ2LDcgKzI5MzgsNyBAQAogCiAgICAgaWYgKCFt
U3dpenpsZVJlbmRlclRhcmdldHNbbWlwTGV2ZWxdKQogICAgIHsKLSAgICAgICAgSUQzRDExUmVz
b3VyY2UgKnN3aXp6bGVUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgSUQzRDExUmVzb3VyY2UgKnN3
aXp6bGVUZXh0dXJlID0gbnVsbHB0cjsKICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0U3dp
enpsZVRleHR1cmUoJnN3aXp6bGVUZXh0dXJlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKICAgICAgICAgewpAQCAtMjM1Niw1OSArMjk0OCw2NyBAQAogICAgICAgICBJRDNEMTFEZXZp
Y2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfUkVO
REVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3JtYXQgPSBt
U3dpenpsZVJlbmRlclRhcmdldEZvcm1hdDsKLSAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9u
ID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q7Ci0gICAgICAgIHJ0dkRlc2MuVGV4dHVy
ZTNELk1pcFNsaWNlID0gbVRvcExldmVsICsgbWlwTGV2ZWw7CisgICAgICAgIHJ0dkRlc2MuRm9y
bWF0ICAgICAgICAgICAgICAgID0gbVN3aXp6bGVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAgICAg
ICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RF
WFRVUkUzRDsKKyAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2UgICAgPSBtVG9wTGV2
ZWwgKyBtaXBMZXZlbDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuRmlyc3RXU2xpY2UgPSAw
OwotICAgICAgICBydHZEZXNjLlRleHR1cmUzRC5XU2l6ZSA9IHN0YXRpY19jYXN0PFVJTlQ+KC0x
KTsKKyAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuV1NpemUgICAgICAgPSBzdGF0aWNfY2FzdDxV
SU5UPigtMSk7CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRl
clRhcmdldFZpZXcobVN3aXp6bGVUZXh0dXJlLCAmcnR2RGVzYywgJm1Td2l6emxlUmVuZGVyVGFy
Z2V0c1ttaXBMZXZlbF0pOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRl
UmVuZGVyVGFyZ2V0VmlldyhtU3dpenpsZVRleHR1cmUsICZydHZEZXNjLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVN3aXp6bGVSZW5k
ZXJUYXJnZXRzW21pcExldmVsXSk7CiAKICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9G
TUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHN3aXp6bGUgcmVuZGVyIHRhcmdldCB2aWV3
LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0
byBjcmVhdGUgaW50ZXJuYWwgc3dpenpsZSByZW5kZXIgdGFyZ2V0IHZpZXcsIHJlc3VsdDogMHgl
WC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CisK
KyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtU3dpenpsZVRleHR1cmUsICJUZXhTdG9yYWdl
M0QuU3dpenpsZVJUViIpOwogICAgIH0KIAogICAgICpvdXRSVFYgPSBtU3dpenpsZVJlbmRlclRh
cmdldHNbbWlwTGV2ZWxdOwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
Ci1UZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OlRleHR1cmVTdG9yYWdlMTFfMkRBcnJheShSZW5k
ZXJlcjExICpyZW5kZXJlciwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBpbnQgbGV2ZWxzKQot
ICAgIDogVGV4dHVyZVN0b3JhZ2UxMShyZW5kZXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
R2V0VGV4dHVyZUJpbmRGbGFncyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdldEZlYXR1cmVM
ZXZlbCgpLCByZW5kZXJUYXJnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICBHZXRUZXh0dXJl
TWlzY0ZsYWdzKGludGVybmFsZm9ybWF0LCByZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVsKCksIHJl
bmRlclRhcmdldCwgbGV2ZWxzKSkKK1RleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6VGV4dHVyZVN0
b3JhZ2UxMV8yREFycmF5KFJlbmRlcmVyMTEgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBy
ZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVscykKKyAgICA6
IFRleHR1cmVTdG9yYWdlMTEoCisgICAgICAgICAgcmVuZGVyZXIsCisgICAgICAgICAgR2V0VGV4
dHVyZUJpbmRGbGFncyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCksIHJlbmRlclRhcmdldCksCisgICAgICAgICAgR2V0VGV4dHVyZU1pc2NGbGFncyhp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5n
ZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzKSkKIHsK
LSAgICBtVGV4dHVyZSA9IE5VTEw7Ci0gICAgbVN3aXp6bGVUZXh0dXJlID0gTlVMTDsKKyAgICBt
VGV4dHVyZSAgICAgICAgPSBudWxscHRyOworICAgIG1Td2l6emxlVGV4dHVyZSA9IG51bGxwdHI7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBsZXZlbCA9IDA7IGxldmVsIDwgZ2w6OklNUExFTUVO
VEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgbGV2ZWwrKykKICAgICB7Ci0gICAgICAgIG1Td2l6
emxlUmVuZGVyVGFyZ2V0c1tsZXZlbF0gPSBOVUxMOworICAgICAgICBtU3dpenpsZVJlbmRlclRh
cmdldHNbbGV2ZWxdID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBtSW50ZXJuYWxGb3JtYXQgPSBp
bnRlcm5hbGZvcm1hdDsKIAotICAgIGNvbnN0IGQzZDExOjpUZXh0dXJlRm9ybWF0ICZmb3JtYXRJ
bmZvID0gZDNkMTE6OkdldFRleHR1cmVGb3JtYXRJbmZvKGludGVybmFsZm9ybWF0LCByZW5kZXJl
ci0+Z2V0RmVhdHVyZUxldmVsKCkpOwotICAgIG1UZXh0dXJlRm9ybWF0ID0gZm9ybWF0SW5mby50
ZXhGb3JtYXQ7Ci0gICAgbVNoYWRlclJlc291cmNlRm9ybWF0ID0gZm9ybWF0SW5mby5zcnZGb3Jt
YXQ7Ci0gICAgbURlcHRoU3RlbmNpbEZvcm1hdCA9IGZvcm1hdEluZm8uZHN2Rm9ybWF0OwotICAg
IG1SZW5kZXJUYXJnZXRGb3JtYXQgPSBmb3JtYXRJbmZvLnJ0dkZvcm1hdDsKLSAgICBtU3dpenps
ZVRleHR1cmVGb3JtYXQgPSBmb3JtYXRJbmZvLnN3aXp6bGVUZXhGb3JtYXQ7Ci0gICAgbVN3aXp6
bGVTaGFkZXJSZXNvdXJjZUZvcm1hdCA9IGZvcm1hdEluZm8uc3dpenpsZVNSVkZvcm1hdDsKLSAg
ICBtU3dpenpsZVJlbmRlclRhcmdldEZvcm1hdCA9IGZvcm1hdEluZm8uc3dpenpsZVJUVkZvcm1h
dDsKKyAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9CisgICAgICAg
IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCwgcmVuZGVyZXItPmdl
dFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpOworICAgIG1UZXh0dXJlRm9ybWF0U2V0ID0gZm9ybWF0
SW5mby5mb3JtYXRTZXQ7CisgICAgbVN3aXp6bGVGb3JtYXRTZXQgPSBmb3JtYXRJbmZvLnN3aXp6
bGVGb3JtYXRTZXQ7CiAKICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNz
ZWQgdGV4dHVyZXMKLSAgICBkM2QxMTo6TWFrZVZhbGlkU2l6ZShmYWxzZSwgbVRleHR1cmVGb3Jt
YXQsICZ3aWR0aCwgJmhlaWdodCwgJm1Ub3BMZXZlbCk7CisgICAgZDNkMTE6Ok1ha2VWYWxpZFNp
emUoZmFsc2UsIG1UZXh0dXJlRm9ybWF0U2V0LT50ZXhGb3JtYXQsICZ3aWR0aCwgJmhlaWdodCwg
Jm1Ub3BMZXZlbCk7CiAKLSAgICBtTWlwTGV2ZWxzID0gbVRvcExldmVsICsgbGV2ZWxzOwotICAg
IG1UZXh0dXJlV2lkdGggPSB3aWR0aDsKKyAgICBtTWlwTGV2ZWxzICAgICA9IG1Ub3BMZXZlbCAr
IGxldmVsczsKKyAgICBtVGV4dHVyZVdpZHRoICA9IHdpZHRoOwogICAgIG1UZXh0dXJlSGVpZ2h0
ID0gaGVpZ2h0OwotICAgIG1UZXh0dXJlRGVwdGggPSBkZXB0aDsKLQotICAgIGluaXRpYWxpemVT
ZXJpYWxzKGdldExldmVsQ291bnQoKSAqIGRlcHRoLCBkZXB0aCk7CisgICAgbVRleHR1cmVEZXB0
aCAgPSBkZXB0aDsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5Ojp+VGV4dHVyZVN0b3Jh
Z2UxMV8yREFycmF5KCkKQEAgLTI0MjIsNyArMzAyMiw4IEBACiAKICAgICAgICAgICAgIGlmIChp
bWFnZUFzc29jaWF0aW9uQ29ycmVjdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAv
LyBXZSBtdXN0IGxldCB0aGUgSW1hZ2VzIHJlY292ZXIgdGhlaXIgZGF0YSBiZWZvcmUgd2UgZGVs
ZXRlIGl0IGZyb20gdGhlIFRleHR1cmVTdG9yYWdlLgorICAgICAgICAgICAgICAgIC8vIFdlIG11
c3QgbGV0IHRoZSBJbWFnZXMgcmVjb3ZlciB0aGVpciBkYXRhIGJlZm9yZSB3ZSBkZWxldGUgaXQg
ZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAvLyBUZXh0dXJlU3RvcmFnZS4KICAgICAgICAgICAg
ICAgICBpLT5zZWNvbmQtPnJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2UoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMjQ0NCwxMCArMzA0NSwxMCBAQAogICAgIG1SZW5kZXJUYXJn
ZXRzLmNsZWFyKCk7CiB9CiAKLXZvaWQgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5Ojphc3NvY2lh
dGVJbWFnZShJbWFnZTExKiBpbWFnZSwgY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KQordm9p
ZCBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmFzc29jaWF0ZUltYWdlKEltYWdlMTEgKmltYWdl
LCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpCiB7Ci0gICAgR0xpbnQgbGV2ZWwgPSBpbmRl
eC5taXBJbmRleDsKLSAgICBHTGludCBsYXllclRhcmdldCA9IGluZGV4LmxheWVySW5kZXg7Cisg
ICAgY29uc3QgR0xpbnQgbGV2ZWwgICAgICAgPSBpbmRleC5taXBJbmRleDsKKyAgICBjb25zdCBH
TGludCBsYXllclRhcmdldCA9IGluZGV4LmxheWVySW5kZXg7CiAKICAgICBBU1NFUlQoMCA8PSBs
ZXZlbCAmJiBsZXZlbCA8IGdldExldmVsQ291bnQoKSk7CiAKQEAgLTI0NTgsNTYgKzMwNTksNjQg
QEAKICAgICB9CiB9CiAKLWJvb2wgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5Ojppc0Fzc29jaWF0
ZWRJbWFnZVZhbGlkKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1hZ2UxMSogZXhwZWN0
ZWRJbWFnZSkKK2Jvb2wgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5Ojppc0Fzc29jaWF0ZWRJbWFn
ZVZhbGlkKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlMTEgKmV4cGVjdGVkSW1hZ2Up
CiB7Ci0gICAgR0xpbnQgbGV2ZWwgPSBpbmRleC5taXBJbmRleDsKLSAgICBHTGludCBsYXllclRh
cmdldCA9IGluZGV4LmxheWVySW5kZXg7CisgICAgY29uc3QgR0xpbnQgbGV2ZWwgICAgICAgPSBp
bmRleC5taXBJbmRleDsKKyAgICBjb25zdCBHTGludCBsYXllclRhcmdldCA9IGluZGV4LmxheWVy
SW5kZXg7CiAKICAgICBMZXZlbExheWVyS2V5IGtleShsZXZlbCwgbGF5ZXJUYXJnZXQpOwogCi0g
ICAgLy8gVGhpcyB2YWxpZGF0aW9uIGNoZWNrIHNob3VsZCBuZXZlciByZXR1cm4gZmFsc2UuIEl0
IG1lYW5zIHRoZSBJbWFnZS9UZXh0dXJlU3RvcmFnZSBhc3NvY2lhdGlvbiBpcyBicm9rZW4uCi0g
ICAgYm9vbCByZXRWYWx1ZSA9IChtQXNzb2NpYXRlZEltYWdlcy5maW5kKGtleSkgIT0gbUFzc29j
aWF0ZWRJbWFnZXMuZW5kKCkgJiYgKG1Bc3NvY2lhdGVkSW1hZ2VzW2tleV0gPT0gZXhwZWN0ZWRJ
bWFnZSkpOworICAgIC8vIFRoaXMgdmFsaWRhdGlvbiBjaGVjayBzaG91bGQgbmV2ZXIgcmV0dXJu
IGZhbHNlLiBJdCBtZWFucyB0aGUgSW1hZ2UvVGV4dHVyZVN0b3JhZ2UKKyAgICAvLyBhc3NvY2lh
dGlvbiBpcyBicm9rZW4uCisgICAgYm9vbCByZXRWYWx1ZSA9IChtQXNzb2NpYXRlZEltYWdlcy5m
aW5kKGtleSkgIT0gbUFzc29jaWF0ZWRJbWFnZXMuZW5kKCkgJiYKKyAgICAgICAgICAgICAgICAg
ICAgIChtQXNzb2NpYXRlZEltYWdlc1trZXldID09IGV4cGVjdGVkSW1hZ2UpKTsKICAgICBBU1NF
UlQocmV0VmFsdWUpOwogICAgIHJldHVybiByZXRWYWx1ZTsKIH0KIAogLy8gZGlzYXNzb2NpYXRl
SW1hZ2UgYWxsb3dzIGFuIEltYWdlIHRvIGVuZCBpdHMgYXNzb2NpYXRpb24gd2l0aCBhIFN0b3Jh
Z2UuCi12b2lkIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6ZGlzYXNzb2NpYXRlSW1hZ2UoY29u
c3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExKiBleHBlY3RlZEltYWdlKQordm9pZCBU
ZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmRpc2Fzc29jaWF0ZUltYWdlKGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbWFnZTExICpleHBlY3RlZEltYWdlKQogewotICAgIEdMaW50IGxldmVsID0gaW5k
ZXgubWlwSW5kZXg7Ci0gICAgR0xpbnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllckluZGV4Owor
ICAgIGNvbnN0IEdMaW50IGxldmVsICAgICAgID0gaW5kZXgubWlwSW5kZXg7CisgICAgY29uc3Qg
R0xpbnQgbGF5ZXJUYXJnZXQgPSBpbmRleC5sYXllckluZGV4OwogCiAgICAgTGV2ZWxMYXllcktl
eSBrZXkobGV2ZWwsIGxheWVyVGFyZ2V0KTsKIAotICAgIGJvb2wgaW1hZ2VBc3NvY2lhdGlvbkNv
cnJlY3QgPSAobUFzc29jaWF0ZWRJbWFnZXMuZmluZChrZXkpICE9IG1Bc3NvY2lhdGVkSW1hZ2Vz
LmVuZCgpICYmIChtQXNzb2NpYXRlZEltYWdlc1trZXldID09IGV4cGVjdGVkSW1hZ2UpKTsKKyAg
ICBib29sIGltYWdlQXNzb2NpYXRpb25Db3JyZWN0ID0gKG1Bc3NvY2lhdGVkSW1hZ2VzLmZpbmQo
a2V5KSAhPSBtQXNzb2NpYXRlZEltYWdlcy5lbmQoKSAmJgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKG1Bc3NvY2lhdGVkSW1hZ2VzW2tleV0gPT0gZXhwZWN0ZWRJbWFnZSkp
OwogICAgIEFTU0VSVChpbWFnZUFzc29jaWF0aW9uQ29ycmVjdCk7CiAKICAgICBpZiAoaW1hZ2VB
c3NvY2lhdGlvbkNvcnJlY3QpCiAgICAgewotICAgICAgICBtQXNzb2NpYXRlZEltYWdlc1trZXld
ID0gTlVMTDsKKyAgICAgICAgbUFzc29jaWF0ZWRJbWFnZXNba2V5XSA9IG51bGxwdHI7CiAgICAg
fQogfQogCi0vLyByZWxlYXNlQXNzb2NpYXRlZEltYWdlIHByZXBhcmVzIHRoZSBTdG9yYWdlIGZv
ciBhIG5ldyBJbWFnZSBhc3NvY2lhdGlvbi4gSXQgbGV0cyB0aGUgb2xkIEltYWdlIHJlY292ZXIg
aXRzIGRhdGEgYmVmb3JlIGVuZGluZyB0aGUgYXNzb2NpYXRpb24uCi1nbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV8yREFycmF5OjpyZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbmRleCwgSW1hZ2UxMSogaW5jb21pbmdJbWFnZSkKKy8vIHJlbGVhc2VBc3NvY2lh
dGVkSW1hZ2UgcHJlcGFyZXMgdGhlIFN0b3JhZ2UgZm9yIGEgbmV3IEltYWdlIGFzc29jaWF0aW9u
LiBJdCBsZXRzIHRoZSBvbGQgSW1hZ2UKKy8vIHJlY292ZXIgaXRzIGRhdGEgYmVmb3JlIGVuZGlu
ZyB0aGUgYXNzb2NpYXRpb24uCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5Ojpy
ZWxlYXNlQXNzb2NpYXRlZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1h
Z2UxMSAqaW5jb21pbmdJbWFnZSkKIHsKLSAgICBHTGludCBsZXZlbCA9IGluZGV4Lm1pcEluZGV4
OwotICAgIEdMaW50IGxheWVyVGFyZ2V0ID0gaW5kZXgubGF5ZXJJbmRleDsKKyAgICBjb25zdCBH
TGludCBsZXZlbCAgICAgICA9IGluZGV4Lm1pcEluZGV4OworICAgIGNvbnN0IEdMaW50IGxheWVy
VGFyZ2V0ID0gaW5kZXgubGF5ZXJJbmRleDsKIAogICAgIExldmVsTGF5ZXJLZXkga2V5KGxldmVs
LCBsYXllclRhcmdldCk7CiAKICAgICBpZiAobUFzc29jaWF0ZWRJbWFnZXMuZmluZChrZXkpICE9
IG1Bc3NvY2lhdGVkSW1hZ2VzLmVuZCgpKQogICAgIHsKLSAgICAgICAgaWYgKG1Bc3NvY2lhdGVk
SW1hZ2VzW2tleV0gIT0gTlVMTCAmJiBtQXNzb2NpYXRlZEltYWdlc1trZXldICE9IGluY29taW5n
SW1hZ2UpCisgICAgICAgIGlmIChtQXNzb2NpYXRlZEltYWdlc1trZXldICE9IG51bGxwdHIgJiYg
bUFzc29jaWF0ZWRJbWFnZXNba2V5XSAhPSBpbmNvbWluZ0ltYWdlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgSW1hZ2UgaXMgc3RpbGwgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgVGV4dHVyZVN0b3JhZ2UuIFRoaXMgc2hvdWxkIGJlIHRydWUuCisgICAgICAgICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgSW1hZ2UgaXMgc3RpbGwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVGV4
dHVyZVN0b3JhZ2UuIFRoaXMgc2hvdWxkIGJlCisgICAgICAgICAgICAvLyB0cnVlLgogICAgICAg
ICAgICAgYm9vbCBpbWFnZUFzc29jaWF0aW9uQ29ycmVjdCA9IG1Bc3NvY2lhdGVkSW1hZ2VzW2tl
eV0tPmlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZCh0aGlzKTsKICAgICAgICAgICAgIEFTU0VSVChp
bWFnZUFzc29jaWF0aW9uQ29ycmVjdCk7CiAKICAgICAgICAgICAgIGlmIChpbWFnZUFzc29jaWF0
aW9uQ29ycmVjdCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBGb3JjZSB0aGUg
aW1hZ2UgdG8gcmVjb3ZlciBmcm9tIHN0b3JhZ2UgYmVmb3JlIGl0cyBkYXRhIGlzIG92ZXJ3cml0
dGVuLgotICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZXNldCBtQXNzb2NpYXRlZEltYWdl
c1tsZXZlbF0gdG8gTlVMTCB0b28uCisgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJlc2V0
IG1Bc3NvY2lhdGVkSW1hZ2VzW2xldmVsXSB0byBudWxscHRyIHRvby4KICAgICAgICAgICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBtQXNzb2NpYXRlZEltYWdlc1trZXldLT5yZWNvdmVyRnJvbUFz
c29jaWF0ZWRTdG9yYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
ICAgICAgICAgICAgICAgICB7CkBAIC0yNTI0LDczICszMTMzLDExMiBAQAogewogICAgIC8vIGlm
IHRoZSB3aWR0aCwgaGVpZ2h0IG9yIGRlcHRoIGlzIG5vdCBwb3NpdGl2ZSB0aGlzIHNob3VsZCBi
ZSB0cmVhdGVkIGFzIGFuIGluY29tcGxldGUgdGV4dHVyZQogICAgIC8vIHdlIGhhbmRsZSB0aGF0
IGhlcmUgYnkgc2tpcHBpbmcgdGhlIGQzZCB0ZXh0dXJlIGNyZWF0aW9uCi0gICAgaWYgKG1UZXh0
dXJlID09IE5VTEwgJiYgbVRleHR1cmVXaWR0aCA+IDAgJiYgbVRleHR1cmVIZWlnaHQgPiAwICYm
IG1UZXh0dXJlRGVwdGggPiAwKQorICAgIGlmIChtVGV4dHVyZSA9PSBudWxscHRyICYmIG1UZXh0
dXJlV2lkdGggPiAwICYmIG1UZXh0dXJlSGVpZ2h0ID4gMCAmJiBtVGV4dHVyZURlcHRoID4gMCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChtTWlwTGV2ZWxzID4gMCk7CiAKICAgICAgICAgSUQzRDEx
RGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQzRDEx
X1RFWFRVUkUyRF9ERVNDIGRlc2M7Ci0gICAgICAgIGRlc2MuV2lkdGggPSBtVGV4dHVyZVdpZHRo
OwotICAgICAgICBkZXNjLkhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OwotICAgICAgICBkZXNjLk1p
cExldmVscyA9IG1NaXBMZXZlbHM7Ci0gICAgICAgIGRlc2MuQXJyYXlTaXplID0gbVRleHR1cmVE
ZXB0aDsKLSAgICAgICAgZGVzYy5Gb3JtYXQgPSBtVGV4dHVyZUZvcm1hdDsKLSAgICAgICAgZGVz
Yy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgZGVzYy5XaWR0aCAgICAgICAgICAgICAg
PSBtVGV4dHVyZVdpZHRoOworICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IG1UZXh0
dXJlSGVpZ2h0OworICAgICAgICBkZXNjLk1pcExldmVscyAgICAgICAgICA9IG1NaXBMZXZlbHM7
CisgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAgID0gbVRleHR1cmVEZXB0aDsKKyAgICAg
ICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtVGV4dHVyZUZvcm1hdFNldC0+dGV4Rm9ybWF0
OworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CiAgICAgICAgIGRlc2MuU2Ft
cGxlRGVzYy5RdWFsaXR5ID0gMDsKLSAgICAgICAgZGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX0RF
RkFVTFQ7Ci0gICAgICAgIGRlc2MuQmluZEZsYWdzID0gZ2V0QmluZEZsYWdzKCk7Ci0gICAgICAg
IGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9IGdldE1p
c2NGbGFncygpOworICAgICAgICBkZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdF
X0RFRkFVTFQ7CisgICAgICAgIGRlc2MuQmluZEZsYWdzICAgICAgICAgID0gZ2V0QmluZEZsYWdz
KCk7CisgICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgID0gMDsKKyAgICAgICAgZGVzYy5N
aXNjRmxhZ3MgICAgICAgICAgPSBnZXRNaXNjRmxhZ3MoKTsKIAotICAgICAgICBIUkVTVUxUIHJl
c3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmbVRleHR1cmUpOwor
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBu
dWxscHRyLCAmbVRleHR1cmUpOwogCiAgICAgICAgIC8vIHRoaXMgY2FuIGhhcHBlbiBmcm9tIHdp
bmRvd3MgVERSCiAgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkK
ICAgICAgICAgewogICAgICAgICAgICAgbVJlbmRlcmVyLT5ub3RpZnlEZXZpY2VMb3N0KCk7Ci0g
ICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8g
Y3JlYXRlIDJEIGFycmF5IHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIDJEIGFycmF5IHRleHR1cmUg
c3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIDJEIGFycmF5IHRleHR1cmUgc3RvcmFnZSwg
cmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8g
Y3JlYXRlIDJEIGFycmF5IHRleHR1cmUgc3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7
CiAgICAgICAgIH0KKworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1UZXh0dXJlLCAiVGV4
U3RvcmFnZTJEQXJyYXkuVGV4dHVyZSIpOwogICAgIH0KIAogICAgICpvdXRSZXNvdXJjZSA9IG1U
ZXh0dXJlOwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwgaW50
IG1pcExldmVscywgRFhHSV9GT1JNQVQgZm9ybWF0LCBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSwK
K2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmNyZWF0ZVNSVihpbnQgYmFzZUxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt
aXBMZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNS
VikgY29uc3QKIHsKICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7
Ci0gICAgc3J2RGVzYy5Gb3JtYXQgPSBmb3JtYXQ7Ci0gICAgc3J2RGVzYy5WaWV3RGltZW5zaW9u
ID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKKyAgICBzcnZEZXNjLkZvcm1h
dCAgICAgICAgICAgICAgICAgICAgICAgICA9IGZvcm1hdDsKKyAgICBzcnZEZXNjLlZpZXdEaW1l
bnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJS
QVk7CiAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5Nb3N0RGV0YWlsZWRNaXAgPSBtVG9wTGV2
ZWwgKyBiYXNlTGV2ZWw7Ci0gICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgPSBt
aXBMZXZlbHM7CisgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgICAgICAgPSBt
aXBMZXZlbHM7CiAgICAgc3J2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSAw
OwotICAgIHNydkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gbVRleHR1cmVEZXB0aDsK
KyAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IG1UZXh0dXJlRGVw
dGg7CiAKICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7
Ci0gICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyh0
ZXh0dXJlLCAmc3J2RGVzYywgb3V0U1JWKTsKKyAgICBIUkVTVUxUIHJlc3VsdCAgICAgICA9IGRl
dmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHRleHR1cmUsICZzcnZEZXNjLCBvdXRTUlYp
OwogCiAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1
bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHRleHR1
cmUgc3RvcmFnZSBTUlYsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZh
aWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgdGV4dHVyZSBzdG9yYWdlIFNSViwgcmVzdWx0OiAweCVY
LiIsIHJlc3VsdCk7CiAgICAgfQogCisgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JWLCAi
VGV4U3RvcmFnZTJEQXJyYXkuU1JWIik7CisKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Z2V0UmVuZGVy
VGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0
UlQpCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpjcmVhdGVSZW5kZXJUYXJn
ZXRTUlYoSUQzRDExUmVzb3VyY2UgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmlu
ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUIHJlc291cmNlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqKnNydikgY29uc3QKIHsKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7CisgICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZE
ZXNjOworICAgIHNydkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgID0gcmVzb3Vy
Y2VGb3JtYXQ7CisgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgICAgICAgICAgPSBE
M0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOworICAgIHNydkRlc2MuVGV4dHVyZTJE
QXJyYXkuTW9zdERldGFpbGVkTWlwID0gbVRvcExldmVsICsgaW5kZXgubWlwSW5kZXg7CisgICAg
c3J2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBMZXZlbHMgICAgICAgPSAxOworICAgIHNydkRlc2Mu
VGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gaW5kZXgubGF5ZXJJbmRleDsKKyAgICBz
cnZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IDE7CisKKyAgICBIUkVTVUxU
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHRleHR1cmUsICZzcnZE
ZXNjLCBzcnYpOworCisgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKAorICAgICAgICAgICAgR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAg
ICAgICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFsIHNoYWRlciByZXNvdXJjZSB2aWV3IGZvciB0
ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgcmVzdWx0KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkKK3sKICAgICBBU1NFUlQoaW5kZXgu
aGFzTGF5ZXIoKSk7CiAKLSAgICBpbnQgbWlwTGV2ZWwgPSBpbmRleC5taXBJbmRleDsKLSAgICBp
bnQgbGF5ZXIgPSBpbmRleC5sYXllckluZGV4OworICAgIGNvbnN0IGludCBtaXBMZXZlbCA9IGlu
ZGV4Lm1pcEluZGV4OworICAgIGNvbnN0IGludCBsYXllciAgICA9IGluZGV4LmxheWVySW5kZXg7
CiAKICAgICBBU1NFUlQobWlwTGV2ZWwgPj0gMCAmJiBtaXBMZXZlbCA8IGdldExldmVsQ291bnQo
KSk7CiAKQEAgLTI2MDAsMzggKzMyNDgsNDUgQEAKICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZp
Y2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogICAgICAgICBIUkVTVUxUIHJlc3VsdDsKIAot
ICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSA9IE5VTEw7CisgICAgICAgIElEM0QxMVJl
c291cmNlICp0ZXh0dXJlID0gbnVsbHB0cjsKICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0
UmVzb3VyY2UoJnRleHR1cmUpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgIH0KLQotICAgICAgICBEM0Qx
MV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNydkRlc2M7Ci0gICAgICAgIHNydkRlc2MuRm9y
bWF0ID0gbVNoYWRlclJlc291cmNlRm9ybWF0OwotICAgICAgICBzcnZEZXNjLlZpZXdEaW1lbnNp
b24gPSBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwotICAgICAgICBzcnZEZXNj
LlRleHR1cmUyREFycmF5Lk1vc3REZXRhaWxlZE1pcCA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwot
ICAgICAgICBzcnZEZXNjLlRleHR1cmUyREFycmF5Lk1pcExldmVscyA9IDE7Ci0gICAgICAgIHNy
dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gbGF5ZXI7Ci0gICAgICAgIHNy
dkRlc2MuVGV4dHVyZTJEQXJyYXkuQXJyYXlTaXplID0gMTsKLQogICAgICAgICBJRDNEMTFTaGFk
ZXJSZXNvdXJjZVZpZXcgKnNydjsKLSAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTaGFk
ZXJSZXNvdXJjZVZpZXcodGV4dHVyZSwgJnNydkRlc2MsICZzcnYpOwotCi0gICAgICAgIEFTU0VS
VChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7Ci0gICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgZXJyb3IgPSBjcmVhdGVSZW5kZXJUYXJnZXRT
UlYodGV4dHVyZSwgaW5kZXgsIG1UZXh0dXJlRm9ybWF0U2V0LT5zcnZGb3JtYXQsICZzcnYpOwor
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGludGVybmFs
IHNoYWRlciByZXNvdXJjZSB2aWV3IGZvciB0ZXh0dXJlIHN0b3JhZ2UsIHJlc3VsdDogMHglWC4i
LCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAgICB9CisgICAgICAg
IElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqYmxpdFNSVjsKKyAgICAgICAgaWYgKG1UZXh0dXJl
Rm9ybWF0U2V0LT5ibGl0U1JWRm9ybWF0ICE9IG1UZXh0dXJlRm9ybWF0U2V0LT5zcnZGb3JtYXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yID0KKyAgICAgICAgICAgICAgICBjcmVhdGVS
ZW5kZXJUYXJnZXRTUlYodGV4dHVyZSwgaW5kZXgsIG1UZXh0dXJlRm9ybWF0U2V0LT5ibGl0U1JW
Rm9ybWF0LCAmYmxpdFNSVik7CisgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgYmxpdFNSViA9IHNydjsKKyAgICAgICAgICAgIGJs
aXRTUlYtPkFkZFJlZigpOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1SZW5kZXJUYXJnZXRG
b3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShzcnYsICJUZXhTdG9yYWdlMkRBcnJheS5SZW5kZXJUYXJnZXRTUlYiKTsKKworICAgICAgICBp
ZiAobVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQog
ICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZE
ZXNjOwotICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgPSBtUmVuZGVyVGFyZ2V0Rm9ybWF0Owot
ICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9U
RVhUVVJFMkRBUlJBWTsKLSAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwU2xp
Y2UgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAg
ICAgICAgICAgICAgICAgICAgICAgID0gbVRleHR1cmVGb3JtYXRTZXQtPnJ0dkZvcm1hdDsKKyAg
ICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAgICAgID0gRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKKyAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVy
ZTJEQXJyYXkuTWlwU2xpY2UgICAgICAgID0gbVRvcExldmVsICsgbWlwTGV2ZWw7CiAgICAgICAg
ICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGljZSA9IGxheWVyOwotICAg
ICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNpemUgPSAxOworICAgICAgICAg
ICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNpemUgICAgICAgPSAxOwogCiAgICAgICAg
ICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHY7CiAgICAgICAgICAgICByZXN1bHQgPSBk
ZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcodGV4dHVyZSwgJnJ0dkRlc2MsICZydHYpOwpA
QCAtMjY0MCwxOCArMzI5NSw1OCBAQAogICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydik7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNy
ZWF0ZSBpbnRlcm5hbCByZW5kZXIgdGFyZ2V0IHZpZXcgZm9yIHRleHR1cmUgc3RvcmFnZSwgcmVz
dWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UoYmxpdFNS
Vik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJu
YWwgcmVuZGVyIHRhcmdldCB2aWV3IGZvciB0ZXh0dXJlICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzdG9yYWdlLCByZXN1bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1S
ZW5kZXJUYXJnZXRzW2tleV0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKHJ0diwgdGV4dHVy
ZSwgc3J2LCBtSW50ZXJuYWxGb3JtYXQsIGdldExldmVsV2lkdGgobWlwTGV2ZWwpLCBnZXRMZXZl
bEhlaWdodChtaXBMZXZlbCksIDEsIDApOworICAgICAgICAgICAgZDNkMTE6OlNldERlYnVnTmFt
ZShydHYsICJUZXhTdG9yYWdlMkRBcnJheS5SZW5kZXJUYXJnZXRSVFYiKTsKIAorICAgICAgICAg
ICAgbVJlbmRlclRhcmdldHNba2V5XSA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoCisgICAg
ICAgICAgICAgICAgcnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1JbnRlcm5hbEZvcm1hdCwg
bVRleHR1cmVGb3JtYXRTZXQtPmZvcm1hdCwKKyAgICAgICAgICAgICAgICBnZXRMZXZlbFdpZHRo
KG1pcExldmVsKSwgZ2V0TGV2ZWxIZWlnaHQobWlwTGV2ZWwpLCAxLCAwKTsKKwogICAgICAgICAg
ICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlc2UgcmVzb3VyY2Vz
CiAgICAgICAgICAgICBTYWZlUmVsZWFzZShydHYpOwogICAgICAgICAgICAgU2FmZVJlbGVhc2Uo
c3J2KTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRTUlYpOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChtVGV4dHVyZUZvcm1hdFNldC0+ZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VO
S05PV04pOworCisgICAgICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJRVdfREVTQyBkc3ZE
ZXNjOworICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAg
PSBtVGV4dHVyZUZvcm1hdFNldC0+ZHN2Rm9ybWF0OworICAgICAgICAgICAgZHN2RGVzYy5WaWV3
RGltZW5zaW9uICAgICAgICAgICAgICAgICAgPSBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUy
REFSUkFZOworICAgICAgICAgICAgZHN2RGVzYy5UZXh0dXJlMkRBcnJheS5NaXBTbGljZSAgICAg
ICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKKyAgICAgICAgICAgIGRzdkRlc2MuVGV4dHVyZTJE
QXJyYXkuRmlyc3RBcnJheVNsaWNlID0gbGF5ZXI7CisgICAgICAgICAgICBkc3ZEZXNjLlRleHR1
cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IDE7CisgICAgICAgICAgICBkc3ZEZXNjLkZsYWdz
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CisKKyAgICAgICAgICAgIElEM0QxMURlcHRo
U3RlbmNpbFZpZXcgKmRzdjsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVw
dGhTdGVuY2lsVmlldyh0ZXh0dXJlLCAmZHN2RGVzYywgJmRzdik7CisKKyAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQocmVzdWx0KSk7CisgICAg
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgU2FmZVJlbGVhc2Uoc3J2KTsKKyAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShibGl0U1JW
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBUZXhTdG9y
YWdlMkRBcnJheSBEU1YuIFJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKGRzdiwgIlRleFN0b3JhZ2UyREFycmF5
LlJlbmRlclRhcmdldERTViIpOworCisgICAgICAgICAgICBtUmVuZGVyVGFyZ2V0c1trZXldID0g
bmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKKyAgICAgICAgICAgICAgICBkc3YsIHRleHR1cmUs
IHNydiwgbUludGVybmFsRm9ybWF0LCBtVGV4dHVyZUZvcm1hdFNldC0+Zm9ybWF0LAorICAgICAg
ICAgICAgICAgIGdldExldmVsV2lkdGgobWlwTGV2ZWwpLCBnZXRMZXZlbEhlaWdodChtaXBMZXZl
bCksIDEsIDApOworCisgICAgICAgICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVy
c2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGRzdik7Cisg
ICAgICAgICAgICBTYWZlUmVsZWFzZShzcnYpOworICAgICAgICAgICAgU2FmZVJlbGVhc2UoYmxp
dFNSVik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI2NjcsMzkgKzMzNjIsNDMgQEAKICAgICAg
ICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAg
ICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7Ci0gICAgICAgIGRlc2MuV2lkdGggPSBtVGV4
dHVyZVdpZHRoOwotICAgICAgICBkZXNjLkhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OwotICAgICAg
ICBkZXNjLk1pcExldmVscyA9IG1NaXBMZXZlbHM7Ci0gICAgICAgIGRlc2MuQXJyYXlTaXplID0g
bVRleHR1cmVEZXB0aDsKLSAgICAgICAgZGVzYy5Gb3JtYXQgPSBtU3dpenpsZVRleHR1cmVGb3Jt
YXQ7Ci0gICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIGRlc2MuV2lk
dGggICAgICAgICAgICAgID0gbVRleHR1cmVXaWR0aDsKKyAgICAgICAgZGVzYy5IZWlnaHQgICAg
ICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAg
ICAgPSBtTWlwTGV2ZWxzOworICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IG1UZXh0
dXJlRGVwdGg7CisgICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbVN3aXp6bGVGb3Jt
YXRTZXQtPnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwog
ICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAgICAgIGRlc2MuVXNhZ2Ug
PSBEM0QxMV9VU0FHRV9ERUZBVUxUOwotICAgICAgICBkZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJ
TkRfU0hBREVSX1JFU09VUkNFIHwgRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUOwotICAgICAgICBk
ZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKLSAgICAgICAgZGVzYy5NaXNjRmxhZ3MgPSAwOworICAg
ICAgICBkZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CisgICAg
ICAgIGRlc2MuQmluZEZsYWdzICAgICAgICAgID0gRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0Ug
fCBEM0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQ7CisgICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3Mg
ICAgID0gMDsKKyAgICAgICAgZGVzYy5NaXNjRmxhZ3MgICAgICAgICAgPSAwOwogCi0gICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZt
U3dpenpsZVRleHR1cmUpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRl
VGV4dHVyZTJEKCZkZXNjLCBudWxscHRyLCAmbVN3aXp6bGVUZXh0dXJlKTsKIAogICAgICAgICBB
U1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOwogICAg
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc3dp
enpsZSB0ZXh0dXJlLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgc3dpenpsZSB0ZXh0dXJlLCByZXN1bHQ6IDB4
JVguIiwgcmVzdWx0KTsKICAgICAgICAgfQorCisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUo
Km91dFRleHR1cmUsICJUZXhTdG9yYWdlMkRBcnJheS5Td2l6emxlVGV4dHVyZSIpOwogICAgIH0K
IAogICAgICpvdXRUZXh0dXJlID0gbVN3aXp6bGVUZXh0dXJlOwogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5
OjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFyZ2V0
VmlldyAqKm91dFJUVikKK2dsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFN3
aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICoqb3V0UlRWKQogewogICAgIEFTU0VSVChtaXBMZXZlbCA+PSAwICYmIG1pcExldmVsIDwgZ2V0
TGV2ZWxDb3VudCgpKTsKICAgICBBU1NFUlQob3V0UlRWKTsKIAogICAgIGlmICghbVN3aXp6bGVS
ZW5kZXJUYXJnZXRzW21pcExldmVsXSkKICAgICB7Ci0gICAgICAgIElEM0QxMVJlc291cmNlICpz
d2l6emxlVGV4dHVyZSA9IE5VTEw7CisgICAgICAgIElEM0QxMVJlc291cmNlICpzd2l6emxlVGV4
dHVyZSA9IG51bGxwdHI7CiAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN3aXp6bGVUZXh0
dXJlKCZzd2l6emxlVGV4dHVyZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAg
ICAgIHsKQEAgLTI3MDksMjMgKzM0MDgsMjUgQEAKICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZp
Y2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJH
RVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gbVN3aXp6bGVS
ZW5kZXJUYXJnZXRGb3JtYXQ7Ci0gICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiA9IEQzRDEx
X1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7Ci0gICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJE
QXJyYXkuTWlwU2xpY2UgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKKyAgICAgICAgcnR2RGVzYy5G
b3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtU3dpenpsZUZvcm1hdFNldC0+cnR2Rm9y
bWF0OworICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQz
RDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEQVJSQVk7CisgICAgICAgIHJ0dkRlc2MuVGV4dHVy
ZTJEQXJyYXkuTWlwU2xpY2UgICAgICAgID0gbVRvcExldmVsICsgbWlwTGV2ZWw7CiAgICAgICAg
IHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmlyc3RBcnJheVNsaWNlID0gMDsKLSAgICAgICAgcnR2
RGVzYy5UZXh0dXJlMkRBcnJheS5BcnJheVNpemUgPSBtVGV4dHVyZURlcHRoOworICAgICAgICBy
dHZEZXNjLlRleHR1cmUyREFycmF5LkFycmF5U2l6ZSAgICAgICA9IG1UZXh0dXJlRGVwdGg7CiAK
LSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXco
bVN3aXp6bGVUZXh0dXJlLCAmcnR2RGVzYywgJm1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZl
bF0pOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0
VmlldyhtU3dpenpsZVRleHR1cmUsICZydHZEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21p
cExldmVsXSk7CiAKICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNV
Q0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQg
dG8gY3JlYXRlIGludGVybmFsIHN3aXp6bGUgcmVuZGVyIHRhcmdldCB2aWV3LCByZXN1bHQ6IDB4
JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgaW50
ZXJuYWwgc3dpenpsZSByZW5kZXIgdGFyZ2V0IHZpZXcsIHJlc3VsdDogMHglWC4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Km91dFJUViA9IG1Td2l6emxlUmVuZGVyVGFyZ2V0c1ttaXBMZXZlbF07CiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CiB9Ci0KLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9U
ZXh0dXJlU3RvcmFnZTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3
ICsxMyw5IEBACiAjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9y
YWdlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9y
bWF0X3RhYmxlLmgiCiAKKyNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtYXA+CiAKIG5hbWVz
cGFjZSBnbApAQCAtMjMsMjUgKzI1LDI4IEBACiAKIG5hbWVzcGFjZSByeAogeworY2xhc3MgRUdM
SW1hZ2VEM0Q7CiBjbGFzcyBSZW5kZXJUYXJnZXREM0Q7CiBjbGFzcyBSZW5kZXJUYXJnZXQxMTsK
IGNsYXNzIFJlbmRlcmVyMTE7CiBjbGFzcyBTd2FwQ2hhaW4xMTsKIGNsYXNzIEltYWdlMTE7Citz
dHJ1Y3QgUmVuZGVyZXIxMURldmljZUNhcHM7CiAKIGNsYXNzIFRleHR1cmVTdG9yYWdlMTEgOiBw
dWJsaWMgVGV4dHVyZVN0b3JhZ2UKIHsKICAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVT
dG9yYWdlMTEoKTsKIAotICAgIHN0YXRpYyBEV09SRCBHZXRUZXh0dXJlQmluZEZsYWdzKEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsLCBib29sIHJl
bmRlclRhcmdldCk7Ci0gICAgc3RhdGljIERXT1JEIEdldFRleHR1cmVNaXNjRmxhZ3MoR0xlbnVt
IGludGVybmFsRm9ybWF0LCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwsIGJvb2wgcmVu
ZGVyVGFyZ2V0LCBpbnQgbGV2ZWxzKTsKKyAgICBzdGF0aWMgRFdPUkQgR2V0VGV4dHVyZUJpbmRG
bGFncyhHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZy
ZW5kZXJlcjExRGV2aWNlQ2FwcywgYm9vbCByZW5kZXJUYXJnZXQpOworICAgIHN0YXRpYyBEV09S
RCBHZXRUZXh0dXJlTWlzY0ZsYWdzKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVuZGVy
ZXIxMURldmljZUNhcHMgJnJlbmRlcmVyMTFEZXZpY2VDYXBzLCBib29sIHJlbmRlclRhcmdldCwg
aW50IGxldmVscyk7CiAKICAgICBVSU5UIGdldEJpbmRGbGFncygpIGNvbnN0OwogICAgIFVJTlQg
Z2V0TWlzY0ZsYWdzKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRSZXNvdXJj
ZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJy
b3IgZ2V0U1JWKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSwgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKTsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTUlYo
Y29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpOwogICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgs
IFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBn
ZW5lcmF0ZU1pcG1hcChjb25zdCBnbDo6SW1hZ2VJbmRleCAmc291cmNlSW5kZXgsIGNvbnN0IGds
OjpJbWFnZUluZGV4ICZkZXN0SW5kZXgpOwpAQCAtNzQsNiArNzksOCBAQAogCiAgICAgZ2w6OkVy
cm9yIGdldFNSVkxldmVscyhHTGludCBiYXNlTGV2ZWwsIEdMaW50IG1heExldmVsLCBJRDNEMTFT
aGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpOwogCisgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGdl
dEFOR0xFRm9ybWF0KCkgY29uc3Q7CisKICAgcHJvdGVjdGVkOgogICAgIFRleHR1cmVTdG9yYWdl
MTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIFVJTlQgYmluZEZsYWdzLCBVSU5UIG1pc2NGbGFncyk7
CiAgICAgaW50IGdldExldmVsV2lkdGgoaW50IG1pcExldmVsKSBjb25zdDsKQEAgLTg1LDI1ICs5
MiwyMyBAQAogCiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dpenpsZVRleHR1cmUoSUQzRDEx
UmVzb3VyY2UgKipvdXRUZXh0dXJlKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dp
enpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipv
dXRSVFYpID0gMDsKLSAgICBnbDo6RXJyb3IgZ2V0U1JWTGV2ZWwoaW50IG1pcExldmVsLCBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpOworICAgIGdsOjpFcnJvciBnZXRTUlZMZXZl
bChpbnQgbWlwTGV2ZWwsIGJvb2wgYmxpdFNSViwgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoq
b3V0U1JWKTsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNyZWF0ZVNSVihpbnQgYmFzZUxldmVs
LCBpbnQgbWlwTGV2ZWxzLCBEWEdJX0ZPUk1BVCBmb3JtYXQsIElEM0QxMVJlc291cmNlICp0ZXh0
dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJj
ZVZpZXcgKipvdXRTUlYpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgdmVyaWZ5U3dpenpsZUV4aXN0
cyhHTGVudW0gc3dpenpsZVJlZCwgR0xlbnVtIHN3aXp6bGVHcmVlbiwgR0xlbnVtIHN3aXp6bGVC
bHVlLCBHTGVudW0gc3dpenpsZUFscGhhKTsKIAorICAgIC8vIENsZWFyIGFsbCBjYWNoZWQgbm9u
LXN3aXp6bGUgU1JWcyBhbmQgaW52YWxpZGF0ZSB0aGUgc3dpenpsZSBjYWNoZS4KKyAgICB2b2lk
IGNsZWFyU1JWQ2FjaGUoKTsKKwogICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKICAgICBpbnQg
bVRvcExldmVsOwogICAgIHVuc2lnbmVkIGludCBtTWlwTGV2ZWxzOwogCiAgICAgR0xlbnVtIG1J
bnRlcm5hbEZvcm1hdDsKLSAgICBEWEdJX0ZPUk1BVCBtVGV4dHVyZUZvcm1hdDsKLSAgICBEWEdJ
X0ZPUk1BVCBtU2hhZGVyUmVzb3VyY2VGb3JtYXQ7Ci0gICAgRFhHSV9GT1JNQVQgbVJlbmRlclRh
cmdldEZvcm1hdDsKLSAgICBEWEdJX0ZPUk1BVCBtRGVwdGhTdGVuY2lsRm9ybWF0OwotICAgIERY
R0lfRk9STUFUIG1Td2l6emxlVGV4dHVyZUZvcm1hdDsKLSAgICBEWEdJX0ZPUk1BVCBtU3dpenps
ZVNoYWRlclJlc291cmNlRm9ybWF0OwotICAgIERYR0lfRk9STUFUIG1Td2l6emxlUmVuZGVyVGFy
Z2V0Rm9ybWF0OworICAgIGNvbnN0IGQzZDExOjpBTkdMRUZvcm1hdFNldCAqbVRleHR1cmVGb3Jt
YXRTZXQ7CisgICAgY29uc3QgZDNkMTE6OkFOR0xFRm9ybWF0U2V0ICptU3dpenpsZUZvcm1hdFNl
dDsKICAgICB1bnNpZ25lZCBpbnQgbVRleHR1cmVXaWR0aDsKICAgICB1bnNpZ25lZCBpbnQgbVRl
eHR1cmVIZWlnaHQ7CiAgICAgdW5zaWduZWQgaW50IG1UZXh0dXJlRGVwdGg7CkBAIC0xNDAsNyAr
MTQ1LDggQEAKICAgICB0eXBlZGVmIHN0ZDo6bWFwPFNSVktleSwgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICo+IFNSVkNhY2hlOwogCiAgICAgU1JWQ2FjaGUgbVNydkNhY2hlOwotICAgIElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqbUxldmVsU1JWc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTXTsKKyAgICBzdGQ6OmFycmF5PElEM0QxMVNoYWRlclJlc291cmNlVmlldyAq
LCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTPiBtTGV2ZWxTUlZzOworICAg
IHN0ZDo6YXJyYXk8SUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICosIGdsOjpJTVBMRU1FTlRBVElP
Tl9NQVhfVEVYVFVSRV9MRVZFTFM+IG1MZXZlbEJsaXRTUlZzOwogfTsKIAogY2xhc3MgVGV4dHVy
ZVN0b3JhZ2UxMV8yRCA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTExCkBAIC0xNzUsNiArMTgxLDcg
QEAKIAogICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmU7CiAgICAgUmVuZGVyVGFyZ2V0MTEg
Km1SZW5kZXJUYXJnZXRbZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMU107Cisg
ICAgYm9vbCBtSGFzS2V5ZWRNdXRleDsKIAogICAgIC8vIFRoZXNlIGFyZSBtZW1iZXJzIHJlbGF0
ZWQgdG8gdGhlIHplcm8gbWF4LUxPRCB3b3JrYXJvdW5kLgogICAgIC8vIEQzRDExIEZlYXR1cmUg
TGV2ZWwgOV8zIGNhbid0IGRpc2FibGUgbWlwbWFwcyBvbiBhIG1pcG1hcHBlZCB0ZXh0dXJlIChp
LmUuIHNvbGVseSBzYW1wbGUgZnJvbSBsZXZlbCB6ZXJvKS4KQEAgLTE5Niw2ICsyMDMsNTIgQEAK
ICAgICBJbWFnZTExICptQXNzb2NpYXRlZEltYWdlc1tnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTXTsKIH07CiAKK2NsYXNzIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UgZmlu
YWwgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UxMQoreworICBwdWJsaWM6CisgICAgVGV4dHVyZVN0
b3JhZ2UxMV9FR0xJbWFnZShSZW5kZXJlcjExICpyZW5kZXJlciwgRUdMSW1hZ2VEM0QgKmVnbElt
YWdlKTsKKyAgICB+VGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZSgpIG92ZXJyaWRlOworCisgICAg
Z2w6OkVycm9yIGdldFJlc291cmNlKElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBnZXRTUlYoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVy
ZVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoq
b3V0U1JWKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0TWlwcGVkUmVzb3VyY2UoSUQzRDEx
UmVzb3VyY2UgKipvdXRSZXNvdXJjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJlbmRl
clRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91
dFJUKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9y
YWdlICpkZXN0U3RvcmFnZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGFzc29jaWF0ZUltYWdlKElt
YWdlMTEgKmltYWdlLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzYXNzb2NpYXRlSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFn
ZTExICpleHBlY3RlZEltYWdlKSBvdmVycmlkZTsKKyAgICBib29sIGlzQXNzb2NpYXRlZEltYWdl
VmFsaWQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBJbWFnZTExICpleHBlY3RlZEltYWdl
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgcmVsZWFzZUFzc29jaWF0ZWRJbWFnZShjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgsIEltYWdlMTEgKmluY29taW5nSW1hZ2UpIG92ZXJyaWRlOwor
CisgICAgZ2w6OkVycm9yIHVzZUxldmVsWmVyb1dvcmthcm91bmRUZXh0dXJlKGJvb2wgdXNlTGV2
ZWxaZXJvVGV4dHVyZSkgb3ZlcnJpZGU7CisKKyAgcHJvdGVjdGVkOgorICAgIGdsOjpFcnJvciBn
ZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpIG92ZXJyaWRlOwor
ICAgIGdsOjpFcnJvciBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDEx
UmVuZGVyVGFyZ2V0VmlldyAqKm91dFJUVikgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICAv
LyBDaGVjayBpZiB0aGUgRUdMIGltYWdlJ3MgcmVuZGVyIHRhcmdldCBoYXMgYmVlbiB1cGRhdGVk
IGR1ZSB0byBvcnBoYW5pbmcgYW5kIGRlbGV0ZQorICAgIC8vIGFueSBTUlZzIGFuZCBvdGhlciBy
ZXNvdXJjZXMgYmFzZWQgb24gdGhlIGltYWdlJ3Mgb2xkIHJlbmRlciB0YXJnZXQuCisgICAgZ2w6
OkVycm9yIGNoZWNrRm9yVXBkYXRlZFJlbmRlclRhcmdldCgpOworCisgICAgZ2w6OkVycm9yIGNy
ZWF0ZVNSVihpbnQgYmFzZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pcExl
dmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICoqb3V0U1JWKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRJbWFnZVJlbmRlclRhcmdldChSZW5kZXJUYXJnZXQx
MSAqKm91dFJUKSBjb25zdDsKKworICAgIEVHTEltYWdlRDNEICptSW1hZ2U7CisgICAgdWludHB0
cl90IG1DdXJyZW50UmVuZGVyVGFyZ2V0OworCisgICAgLy8gU3dpenpsZS1yZWxhdGVkIHZhcmlh
YmxlcworICAgIElEM0QxMVRleHR1cmUyRCAqbVN3aXp6bGVUZXh0dXJlOworICAgIHN0ZDo6dmVj
dG9yPElEM0QxMVJlbmRlclRhcmdldFZpZXcgKj4gbVN3aXp6bGVSZW5kZXJUYXJnZXRzOworfTsK
KwogY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlIDogcHVibGljIFRleHR1cmVTdG9yYWdlMTEK
IHsKICAgcHVibGljOgpAQCAtMjI2LDYgKzI3OSwxMCBAQAogICBwcml2YXRlOgogICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLCBpbnQgbWlwTGV2ZWxzLCBEWEdJ
X0ZPUk1BVCBmb3JtYXQsIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpIGNvbnN0
OworICAgIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJUYXJnZXRTUlYoSUQzRDExUmVzb3VyY2UgKnRl
eHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVCByZXNvdXJjZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKnNydikgY29uc3Q7CiAKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IENVQkVfRkFDRV9DT1VOVCA9IDY7CiAKQEAgLTMwMyw2ICszNjAsMTAgQEAK
ICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVhdGVTUlYoaW50IGJhc2VMZXZl
bCwgaW50IG1pcExldmVscywgRFhHSV9GT1JNQVQgZm9ybWF0LCBJRDNEMTFSZXNvdXJjZSAqdGV4
dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExU2hhZGVyUmVzb3Vy
Y2VWaWV3ICoqb3V0U1JWKSBjb25zdDsKKyAgICBnbDo6RXJyb3IgY3JlYXRlUmVuZGVyVGFyZ2V0
U1JWKElEM0QxMVJlc291cmNlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgcmVzb3VyY2VGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKipzcnYp
IGNvbnN0OwogCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8aW50LCBpbnQ+IExldmVsTGF5ZXJLZXk7
CiAgICAgdHlwZWRlZiBzdGQ6Om1hcDxMZXZlbExheWVyS2V5LCBSZW5kZXJUYXJnZXQxMSo+IFJl
bmRlclRhcmdldE1hcDsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuaAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsOSBA
QAogCiAgIHByaXZhdGU6CiAgICAgUmVuZGVyZXIxMSAqbVJlbmRlcmVyOworI2lmIGRlZmluZWQg
KEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQogICAgIEV2ZW50UmVnaXN0cmF0aW9uVG9rZW4g
bUFwcGxpY2F0aW9uU3VzcGVuZGVkRXZlbnRUb2tlbjsKKyNlbmRpZgogCiAgICAgdm9pZCB0cmlt
KCk7CiAgICAgYm9vbCByZWdpc3RlckZvclJlbmRlcmVyVHJpbVJlcXVlc3QoKTsKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QXJyYXkxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNjUgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBWZXJ0ZXhBcnJheTExOgorLy8gICBJbXBsZW1lbnRhdGlvbiBvZiByeDo6
VmVydGV4QXJyYXkxMS4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvVmVydGV4QXJyYXkxMS5oIgorCisjaW5jbHVkZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCisKK25h
bWVzcGFjZSByeAoreworCituYW1lc3BhY2UKK3sKK3NpemVfdCBHZXRBdHRyaWJJbmRleCh1bnNp
Z25lZCBsb25nIGRpcnR5Qml0KQoreworICAgIGlmIChkaXJ0eUJpdCA+PSBnbDo6VmVydGV4QXJy
YXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVEICYmCisgICAgICAgIGRpcnR5Qml0IDwgZ2w6
OlZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCX01BWF9FTkFCTEVEKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGRpcnR5Qml0IC0gZ2w6OlZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBf
RU5BQkxFRDsKKyAgICB9CisKKyAgICBpZiAoZGlydHlCaXQgPj0gZ2w6OlZlcnRleEFycmF5OjpE
SVJUWV9CSVRfQVRUUklCXzBfUE9JTlRFUiAmJgorICAgICAgICBkaXJ0eUJpdCA8IGdsOjpWZXJ0
ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl9NQVhfUE9JTlRFUikKKyAgICB7CisgICAgICAgIHJl
dHVybiBkaXJ0eUJpdCAtIGdsOjpWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX1BPSU5U
RVI7CisgICAgfQorCisgICAgQVNTRVJUKGRpcnR5Qml0ID49IGdsOjpWZXJ0ZXhBcnJheTo6RElS
VFlfQklUX0FUVFJJQl8wX0RJVklTT1IgJiYKKyAgICAgICAgICAgZGlydHlCaXQgPCBnbDo6VmVy
dGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX0RJVklTT1IpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGRpcnR5Qml0KSAtIGdsOjpWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FU
VFJJQl8wX0RJVklTT1I7Cit9Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK1ZlcnRleEFy
cmF5MTE6OlZlcnRleEFycmF5MTEoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRhICZkYXRhKQor
ICAgIDogVmVydGV4QXJyYXlJbXBsKGRhdGEpLAorICAgICAgbUF0dHJpYnV0ZVN0b3JhZ2VUeXBl
cyhkYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMoKS5zaXplKCksIFZlcnRleFN0b3JhZ2VUeXBlOjpD
VVJSRU5UX1ZBTFVFKSwKKyAgICAgIG1UcmFuc2xhdGVkQXR0cmlicyhkYXRhLmdldFZlcnRleEF0
dHJpYnV0ZXMoKS5zaXplKCkpLAorICAgICAgbUN1cnJlbnRCdWZmZXJzKGRhdGEuZ2V0VmVydGV4
QXR0cmlidXRlcygpLnNpemUoKSkKK3sKKyAgICBmb3IgKHNpemVfdCBhdHRyaWJJbmRleCA9IDA7
IGF0dHJpYkluZGV4IDwgbUN1cnJlbnRCdWZmZXJzLnNpemUoKTsgKythdHRyaWJJbmRleCkKKyAg
ICB7CisgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgYXR0cmliSW5kZXhdKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhpcy0+bWFya0J1ZmZlckRhdGFEaXJ0eShhdHRyaWJJbmRleCk7
CisgICAgICAgIH07CisgICAgICAgIG1PbkJ1ZmZlckRhdGFEaXJ0eS5wdXNoX2JhY2soY2FsbGJh
Y2spOworICAgIH0KK30KKworVmVydGV4QXJyYXkxMTo6flZlcnRleEFycmF5MTEoKQoreworICAg
IGZvciAoc2l6ZV90IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBtQ3VycmVudEJ1ZmZl
cnMuc2l6ZSgpOyArK2F0dHJpYkluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKG1DdXJyZW50QnVm
ZmVyc1thdHRyaWJJbmRleF0uZ2V0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVubGlua0J1
ZmZlcihhdHRyaWJJbmRleCwgbUF0dHJpYnV0ZVN0b3JhZ2VUeXBlc1thdHRyaWJJbmRleF0pOwor
ICAgICAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4XS5zZXQobnVsbHB0cik7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVmVydGV4QXJyYXkxMTo6c3luY1N0YXRlKGNvbnN0
IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit7CisgICAgZm9yIChhdXRv
IGRpcnR5Qml0IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZGlydHlCaXRzKSkKKyAgICB7CisgICAg
ICAgIGlmIChkaXJ0eUJpdCA9PSBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9FTEVNRU5UX0FS
UkFZX0JVRkZFUikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNpemVfdCBhdHRy
aWJJbmRleCA9IEdldEF0dHJpYkluZGV4KGRpcnR5Qml0KTsKKyAgICAgICAgbUF0dHJpYnNUb1Vw
ZGF0ZS5zZXQoYXR0cmliSW5kZXgpOworICAgIH0KK30KKwordm9pZCBWZXJ0ZXhBcnJheTExOjp1
cGRhdGVWZXJ0ZXhBdHRyaWJTdG9yYWdlKHNpemVfdCBhdHRyaWJJbmRleCkKK3sKKyAgICBjb25z
dCBhdXRvICZhdHRyaWIgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGUoYXR0cmliSW5kZXgpOwor
CisgICAgLy8gTm90ZTogaGF2aW5nIGFuIHVuY2hhbmdlZCBzdG9yYWdlIHR5cGUgZG9lc24ndCBt
ZWFuIHRoZSBhdHRyaWJ1dGUgaXMgY2xlYW4uCisgICAgYXV0byBvbGRTdG9yYWdlVHlwZSA9IG1B
dHRyaWJ1dGVTdG9yYWdlVHlwZXNbYXR0cmliSW5kZXhdOworICAgIGF1dG8gbmV3U3RvcmFnZVR5
cGUgPSBDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoYXR0cmliKTsKKworICAgIG1BdHRyaWJ1dGVT
dG9yYWdlVHlwZXNbYXR0cmliSW5kZXhdID0gbmV3U3RvcmFnZVR5cGU7CisKKyAgICBpZiAobmV3
U3RvcmFnZVR5cGUgPT0gVmVydGV4U3RvcmFnZVR5cGU6OkRZTkFNSUMpCisgICAgeworICAgICAg
ICBpZiAob2xkU3RvcmFnZVR5cGUgIT0gVmVydGV4U3RvcmFnZVR5cGU6OkRZTkFNSUMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIFN5bmMgZHluYW1pYyBhdHRyaWJzIGluIGEgZGlmZmVyZW50
IHNldC4KKyAgICAgICAgICAgIG1BdHRyaWJzVG9UcmFuc2xhdGUucmVzZXQoYXR0cmliSW5kZXgp
OworICAgICAgICAgICAgbUR5bmFtaWNBdHRyaWJzTWFzay5zZXQoYXR0cmliSW5kZXgpOworICAg
ICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1BdHRyaWJzVG9UcmFuc2xh
dGUuc2V0KGF0dHJpYkluZGV4KTsKKworICAgICAgICBpZiAob2xkU3RvcmFnZVR5cGUgPT0gVmVy
dGV4U3RvcmFnZVR5cGU6OkRZTkFNSUMpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
RHluYW1pY0F0dHJpYnNNYXNrW2F0dHJpYkluZGV4XSk7CisgICAgICAgICAgICBtRHluYW1pY0F0
dHJpYnNNYXNrLnJlc2V0KGF0dHJpYkluZGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGds
OjpCdWZmZXIgKm9sZEJ1ZmZlckdMID0gbUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4XS5nZXQo
KTsKKyAgICBnbDo6QnVmZmVyICpuZXdCdWZmZXJHTCA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7Cisg
ICAgQnVmZmVyMTEgKm9sZEJ1ZmZlcjExICAgPSBvbGRCdWZmZXJHTCA/IEdldEltcGxBczxCdWZm
ZXIxMT4ob2xkQnVmZmVyR0wpIDogbnVsbHB0cjsKKyAgICBCdWZmZXIxMSAqbmV3QnVmZmVyMTEg
ICA9IG5ld0J1ZmZlckdMID8gR2V0SW1wbEFzPEJ1ZmZlcjExPihuZXdCdWZmZXJHTCkgOiBudWxs
cHRyOworCisgICAgaWYgKG9sZEJ1ZmZlcjExICE9IG5ld0J1ZmZlcjExIHx8IG9sZFN0b3JhZ2VU
eXBlICE9IG5ld1N0b3JhZ2VUeXBlKQorICAgIHsKKyAgICAgICAgLy8gTm90ZSB0aGF0IGZvciBz
dGF0aWMgY2FsbGJhY2tzLCBwcm9tb3Rpb24gdG8gYSBzdGF0aWMgYnVmZmVyIGZyb20gYSBkeW5h
bWljIGJ1ZmZlciBtZWFucworICAgICAgICAvLyB3ZSBuZWVkIHRvIHRhZyBkeW5hbWljIGJ1ZmZl
cnMgd2l0aCBzdGF0aWMgY2FsbGJhY2tzLgorICAgICAgICBpZiAob2xkQnVmZmVyMTEgIT0gbnVs
bHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgdW5saW5rQnVmZmVyKGF0dHJpYkluZGV4LCBv
bGRTdG9yYWdlVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld0J1ZmZlcjExICE9IG51
bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChuZXdTdG9yYWdlVHlwZSA9PSBWZXJ0
ZXhTdG9yYWdlVHlwZTo6RElSRUNUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5l
d0J1ZmZlcjExLT5hZGREaXJlY3RCdWZmZXJEaXJ0eUNhbGxiYWNrKCZtT25CdWZmZXJEYXRhRGly
dHlbYXR0cmliSW5kZXhdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG5l
d1N0b3JhZ2VUeXBlID09IFZlcnRleFN0b3JhZ2VUeXBlOjpTVEFUSUMgfHwKKyAgICAgICAgICAg
ICAgICAgICAgIG5ld1N0b3JhZ2VUeXBlID09IFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5BTUlDKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5ld0J1ZmZlcjExLT5hZGRTdGF0aWNCdWZm
ZXJEaXJ0eUNhbGxiYWNrKCZtT25CdWZmZXJEYXRhRGlydHlbYXR0cmliSW5kZXhdKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtQ3VycmVudEJ1ZmZlcnNbYXR0cmliSW5kZXhd
ID0gYXR0cmliLmJ1ZmZlcjsKKyAgICB9Cit9CisKK2dsOjpFcnJvciBWZXJ0ZXhBcnJheTExOjp1
cGRhdGVEaXJ0eUFuZER5bmFtaWNBdHRyaWJzKFZlcnRleERhdGFNYW5hZ2VyICp2ZXJ0ZXhEYXRh
TWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcykKK3sKKyAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSAgPSBzdGF0
ZS5nZXRQcm9ncmFtKCk7CisgICAgY29uc3QgYXV0byAmYWN0aXZlTG9jYXRpb25zID0gcHJvZ3Jh
bS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOworCisgICAgaWYgKG1BdHRyaWJzVG9V
cGRhdGUuYW55KCkpCisgICAgeworICAgICAgICAvLyBTa2lwIGF0dHJpYiBsb2NhdGlvbnMgdGhl
IHByb2dyYW0gZG9lc24ndCB1c2UuCisgICAgICAgIGNvbnN0IGF1dG8gJmFjdGl2ZVRvVXBkYXRl
ID0gKG1BdHRyaWJzVG9VcGRhdGUgJiBhY3RpdmVMb2NhdGlvbnMpOworCisgICAgICAgIGZvciAo
YXV0byB0b1VwZGF0ZUluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoYWN0aXZlVG9VcGRhdGUp
KQorICAgICAgICB7CisgICAgICAgICAgICBtQXR0cmlic1RvVXBkYXRlLnJlc2V0KHRvVXBkYXRl
SW5kZXgpOworICAgICAgICAgICAgdXBkYXRlVmVydGV4QXR0cmliU3RvcmFnZSh0b1VwZGF0ZUlu
ZGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGF1dG8gJmF0dHJpYnMgPSBtRGF0
YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisKKyAgICBpZiAobUF0dHJpYnNUb1RyYW5zbGF0ZS5h
bnkoKSkKKyAgICB7CisgICAgICAgIC8vIFNraXAgYXR0cmliIGxvY2F0aW9ucyB0aGUgcHJvZ3Jh
bSBkb2Vzbid0IHVzZSwgc2F2aW5nIGZvciB0aGUgbmV4dCBmcmFtZS4KKyAgICAgICAgY29uc3Qg
YXV0byAmZGlydHlBY3RpdmVBdHRyaWJzID0gKG1BdHRyaWJzVG9UcmFuc2xhdGUgJiBhY3RpdmVM
b2NhdGlvbnMpOworCisgICAgICAgIGZvciAoYXV0byBkaXJ0eUF0dHJpYkluZGV4IDogYW5nbGU6
Okl0ZXJhdGVCaXRTZXQoZGlydHlBY3RpdmVBdHRyaWJzKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbUF0dHJpYnNUb1RyYW5zbGF0ZS5yZXNldChkaXJ0eUF0dHJpYkluZGV4KTsKKworICAgICAg
ICAgICAgYXV0byAqdHJhbnNsYXRlZEF0dHJpYiA9ICZtVHJhbnNsYXRlZEF0dHJpYnNbZGlydHlB
dHRyaWJJbmRleF07CisgICAgICAgICAgICBjb25zdCBhdXRvICZjdXJyZW50VmFsdWUgPQorICAg
ICAgICAgICAgICAgIHN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KGRpcnR5QXR0cmliSW5kZXgpKTsKKworICAgICAgICAgICAgLy8gUmVj
b3JkIGJhc2ljIGF0dHJpYiBpbmZvCisgICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmliLT5hdHRy
aWJ1dGUgICAgICAgID0gJmF0dHJpYnNbZGlydHlBdHRyaWJJbmRleF07CisgICAgICAgICAgICB0
cmFuc2xhdGVkQXR0cmliLT5jdXJyZW50VmFsdWVUeXBlID0gY3VycmVudFZhbHVlLlR5cGU7Cisg
ICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmliLT5kaXZpc29yICAgICAgICAgID0gdHJhbnNsYXRl
ZEF0dHJpYi0+YXR0cmlidXRlLT5kaXZpc29yOworCisgICAgICAgICAgICBzd2l0Y2ggKG1BdHRy
aWJ1dGVTdG9yYWdlVHlwZXNbZGlydHlBdHRyaWJJbmRleF0pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBWZXJ0ZXhTdG9yYWdlVHlwZTo6RElSRUNUOgorICAgICAgICAgICAg
ICAgICAgICBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVEaXJlY3RBdHRyaWIodHJhbnNsYXRlZEF0
dHJpYik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
VmVydGV4U3RvcmFnZVR5cGU6OlNUQVRJQzoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gZXJyb3IgPQorICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4RGF0
YU1hbmFnZXI6OlN0b3JlU3RhdGljQXR0cmliKHRyYW5zbGF0ZWRBdHRyaWIsIGNvdW50LCBpbnN0
YW5jZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGV4U3RvcmFnZVR5cGU6OkNVUlJF
TlRfVkFMVUU6CisgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnQgdmFsdWUgYXR0cmlicyBh
cmUgbWFuYWdlZCBieSB0aGUgU3RhdGVNYW5hZ2VyMTEuCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKG1EeW5hbWljQXR0cmlic01hc2suYW55KCkpCisgICAg
eworICAgICAgICBhdXRvIGFjdGl2ZUR5bmFtaWNBdHRyaWJzID0gKG1EeW5hbWljQXR0cmlic01h
c2sgJiBhY3RpdmVMb2NhdGlvbnMpOworCisgICAgICAgIGZvciAoYXV0byBkeW5hbWljQXR0cmli
SW5kZXggOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChhY3RpdmVEeW5hbWljQXR0cmlicykpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGF1dG8gKmR5bmFtaWNBdHRyaWIgPSAmbVRyYW5zbGF0ZWRBdHRy
aWJzW2R5bmFtaWNBdHRyaWJJbmRleF07CisgICAgICAgICAgICBjb25zdCBhdXRvICZjdXJyZW50
VmFsdWUgPQorICAgICAgICAgICAgICAgIHN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGR5bmFtaWNBdHRyaWJJbmRleCkpOworCisgICAg
ICAgICAgICAvLyBSZWNvcmQgYmFzaWMgYXR0cmliIGluZm8KKyAgICAgICAgICAgIGR5bmFtaWNB
dHRyaWItPmF0dHJpYnV0ZSAgICAgICAgPSAmYXR0cmlic1tkeW5hbWljQXR0cmliSW5kZXhdOwor
ICAgICAgICAgICAgZHluYW1pY0F0dHJpYi0+Y3VycmVudFZhbHVlVHlwZSA9IGN1cnJlbnRWYWx1
ZS5UeXBlOworICAgICAgICAgICAgZHluYW1pY0F0dHJpYi0+ZGl2aXNvciAgICAgICAgICA9IGR5
bmFtaWNBdHRyaWItPmF0dHJpYnV0ZS0+ZGl2aXNvcjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB2ZXJ0ZXhEYXRhTWFuYWdlci0+c3RvcmVEeW5hbWljQXR0cmlicygmbVRyYW5zbGF0ZWRB
dHRyaWJzLCBhY3RpdmVEeW5hbWljQXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBjb3VudCwgaW5zdGFuY2VzKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworY29uc3Qgc3Rk
Ojp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJlZlcnRleEFycmF5MTE6OmdldFRyYW5zbGF0
ZWRBdHRyaWJzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVRyYW5zbGF0ZWRBdHRyaWJzOworfQor
Cit2b2lkIFZlcnRleEFycmF5MTE6Om1hcmtCdWZmZXJEYXRhRGlydHkoc2l6ZV90IGF0dHJpYklu
ZGV4KQoreworICAgIEFTU0VSVChtQXR0cmlidXRlU3RvcmFnZVR5cGVzW2F0dHJpYkluZGV4XSAh
PSBWZXJ0ZXhTdG9yYWdlVHlwZTo6Q1VSUkVOVF9WQUxVRSk7CisKKyAgICAvLyBUaGlzIGNhbiBj
aGFuZ2UgYSBidWZmZXIncyBzdG9yYWdlLCB3ZSdsbCBuZWVkIHRvIHJlLWNoZWNrLgorICAgIG1B
dHRyaWJzVG9VcGRhdGUuc2V0KGF0dHJpYkluZGV4KTsKK30KKwordm9pZCBWZXJ0ZXhBcnJheTEx
OjpjbGVhckRpcnR5QW5kUHJvbW90ZUR5bmFtaWNBdHRyaWJzKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsIEdMc2l6ZWkgY291bnQpCit7CisgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gID0g
c3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIGNvbnN0IGF1dG8gJmFjdGl2ZUxvY2F0aW9ucyA9IHBy
b2dyYW0tPmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKTsKKyAgICBtQXR0cmlic1RvVXBk
YXRlICY9IH5hY3RpdmVMb2NhdGlvbnM7CisKKyAgICAvLyBQcm9tb3RlIHRvIHN0YXRpYyBhZnRl
ciB3ZSBjbGVhciB0aGUgZGlydHkgYXR0cmlidXRlcywgb3RoZXJ3aXNlIHdlIGNhbiBsb3NlIGRp
cnR5bmVzcy4KKyAgICBhdXRvIGFjdGl2ZUR5bmFtaWNBdHRyaWJzID0gKG1EeW5hbWljQXR0cmli
c01hc2sgJiBhY3RpdmVMb2NhdGlvbnMpOworICAgIFZlcnRleERhdGFNYW5hZ2VyOjpQcm9tb3Rl
RHluYW1pY0F0dHJpYnMobVRyYW5zbGF0ZWRBdHRyaWJzLCBhY3RpdmVEeW5hbWljQXR0cmlicywg
Y291bnQpOworfQorCit2b2lkIFZlcnRleEFycmF5MTE6OnVubGlua0J1ZmZlcihzaXplX3QgYXR0
cmliSW5kZXgsIFZlcnRleFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQoreworICAgIEJ1ZmZlcjEx
ICpidWZmZXIgPSBHZXRJbXBsQXM8QnVmZmVyMTE+KG1DdXJyZW50QnVmZmVyc1thdHRyaWJJbmRl
eF0uZ2V0KCkpOworICAgIGlmIChzdG9yYWdlVHlwZSA9PSBWZXJ0ZXhTdG9yYWdlVHlwZTo6RElS
RUNUKQorICAgIHsKKyAgICAgICAgYnVmZmVyLT5yZW1vdmVEaXJlY3RCdWZmZXJEaXJ0eUNhbGxi
YWNrKCZtT25CdWZmZXJEYXRhRGlydHlbYXR0cmliSW5kZXhdKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoc3RvcmFnZVR5cGUgPT0gVmVydGV4U3RvcmFnZVR5cGU6OlNUQVRJQyB8fCBzdG9yYWdlVHlw
ZSA9PSBWZXJ0ZXhTdG9yYWdlVHlwZTo6RFlOQU1JQykKKyAgICB7CisgICAgICAgIGJ1ZmZlci0+
cmVtb3ZlU3RhdGljQnVmZmVyRGlydHlDYWxsYmFjaygmbU9uQnVmZmVyRGF0YURpcnR5W2F0dHJp
YkluZGV4XSk7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJy
YXkxMS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5oCShyZXZpc2lvbiAxOTk2ODIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1ZlcnRleEFycmF5MTEuaAkod29ya2luZyBjb3B5KQpAQCAtMTksMjIgKzE5LDQyIEBACiBjbGFz
cyBWZXJ0ZXhBcnJheTExIDogcHVibGljIFZlcnRleEFycmF5SW1wbAogewogICBwdWJsaWM6Ci0g
ICAgVmVydGV4QXJyYXkxMShSZW5kZXJlcjExICpyZW5kZXJlcikKLSAgICAgICAgOiBWZXJ0ZXhB
cnJheUltcGwoKSwKLSAgICAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpCi0gICAgewotICAgIH0K
LSAgICB2aXJ0dWFsIH5WZXJ0ZXhBcnJheTExKCkgeyB9CisgICAgVmVydGV4QXJyYXkxMShjb25z
dCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpOworICAgIH5WZXJ0ZXhBcnJheTExKCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RWxlbWVudEFycmF5QnVmZmVyKGNvbnN0IGds
OjpCdWZmZXIgKmJ1ZmZlcikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZShzaXpl
X3QgaWR4LCBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QXR0cmlidXRlRGl2aXNvcihzaXplX3QgaWR4LCBHTHVpbnQgZGl2aXNvcikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGVuYWJsZUF0dHJpYnV0ZShzaXplX3QgaWR4LCBib29sIGVuYWJs
ZWRTdGF0ZSkgeyB9CisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpE
aXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHVwZGF0ZURpcnR5
QW5kRHluYW1pY0F0dHJpYnMoVmVydGV4RGF0YU1hbmFnZXIgKnZlcnRleERhdGFNYW5hZ2VyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGluc3RhbmNlcyk7CisgICAgdm9pZCBjbGVhckRpcnR5QW5kUHJvbW90ZUR5bmFtaWNB
dHRyaWJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMc2l6ZWkgY291bnQpOwogCisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gJmdldFRyYW5zbGF0ZWRBdHRyaWJz
KCkgY29uc3Q7CisKICAgcHJpdmF0ZToKLSAgICBSZW5kZXJlcjExICptUmVuZGVyZXI7CisgICAg
dm9pZCB1cGRhdGVWZXJ0ZXhBdHRyaWJTdG9yYWdlKHNpemVfdCBhdHRyaWJJbmRleCk7CisgICAg
dm9pZCBtYXJrQnVmZmVyRGF0YURpcnR5KHNpemVfdCBhdHRyaWJJbmRleCk7CisgICAgdm9pZCB1
bmxpbmtCdWZmZXIoc2l6ZV90IGF0dHJpYkluZGV4LCBWZXJ0ZXhTdG9yYWdlVHlwZSBzdG9yYWdl
VHlwZSk7CisKKyAgICBzdGQ6OnZlY3RvcjxWZXJ0ZXhTdG9yYWdlVHlwZT4gbUF0dHJpYnV0ZVN0
b3JhZ2VUeXBlczsKKyAgICBzdGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiBtVHJhbnNs
YXRlZEF0dHJpYnM7CisKKyAgICAvLyBUaGUgbWFzayBvZiBhdHRyaWJ1dGVzIG1hcmtlZCBhcyBk
eW5hbWljLgorICAgIGdsOjpBdHRyaWJ1dGVzTWFzayBtRHluYW1pY0F0dHJpYnNNYXNrOworCisg
ICAgLy8gQSBtYXNrIG9mIGF0dHJpYnV0ZXMgdGhhdCBuZWVkIHRvIGJlIHJlLWV2YWx1YXRlZC4K
KyAgICBnbDo6QXR0cmlidXRlc01hc2sgbUF0dHJpYnNUb1VwZGF0ZTsKKworICAgIC8vIEEgc2V0
IG9mIGF0dHJpYnV0ZXMgd2Uga25vdyBhcmUgZGlydHksIGFuZCBuZWVkIHRvIGJlIHJlLXRyYW5z
bGF0ZWQuCisgICAgZ2w6OkF0dHJpYnV0ZXNNYXNrIG1BdHRyaWJzVG9UcmFuc2xhdGU7CisKKyAg
ICAvLyBXZSBuZWVkIHRvIGtlZXAgYSBzYWZlIHBvaW50ZXIgdG8gdGhlIEJ1ZmZlciBzbyB3ZSBj
YW4gYXR0YWNoIHRoZSBjb3JyZWN0IGRpcnR5IGNhbGxiYWNrcy4KKyAgICBzdGQ6OnZlY3RvcjxC
aW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPj4gbUN1cnJlbnRCdWZmZXJzOworCisgICAgc3RkOjp2
ZWN0b3I8Tm90aWZpY2F0aW9uQ2FsbGJhY2s+IG1PbkJ1ZmZlckRhdGFEaXJ0eTsKIH07CiAKLX0K
K30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0Qz
RDExX1ZFUlRFWEFSUkFZMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QnVmZmVyMTEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvVmVydGV4QnVmZmVyMTEuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjEx
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNiArMTAsNyBAQAogCiAjaW5jbHVkZSAibGliQU5H
TEUvQnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvQnVmZmVyMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9SZW5kZXJlcjExLmgiCkBAIC0xMDMsMTYgKzEwNCwyMCBAQAogICAgIH0KIH0KIAotZ2w6
OkVycm9yIFZlcnRleEJ1ZmZlcjExOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLCBjb25zdCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVl
RGF0YSAmY3VycmVudFZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2Vz
LCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQorZ2w6OkVycm9yIFZlcnRleEJ1ZmZlcjExOjpzdG9yZVZl
cnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRW
YWx1ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3Vy
Y2VEYXRhKQogewogICAgIGlmICghbUJ1ZmZlcikKICAgICB7CiAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIHZlcnRleCBidWZmZXIgaXMgbm90IGlu
aXRpYWxpemVkLiIpOwogICAgIH0KIAotICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5i
dWZmZXIuZ2V0KCk7Ci0gICAgaW50IGlucHV0U3RyaWRlID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0
ZVN0cmlkZShhdHRyaWIpOworICAgIGludCBpbnB1dFN0cmlkZSA9IHN0YXRpY19jYXN0PGludD4o
Q29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpKTsKIAogICAgIC8vIFRoaXMgd2ls
bCBtYXAgdGhlIHJlc291cmNlIGlmIGl0IGlzbid0IGFscmVhZHkgbWFwcGVkLgogICAgIGdsOjpF
cnJvciBlcnJvciA9IG1hcFJlc291cmNlKCk7CkBAIC0xMjMsODYgKzEyOCwyMiBAQAogCiAgICAg
dWludDhfdCAqb3V0cHV0ID0gbU1hcHBlZFJlc291cmNlRGF0YSArIG9mZnNldDsKIAotICAgIGNv
bnN0IHVpbnQ4X3QgKmlucHV0ID0gTlVMTDsKLSAgICBpZiAoYXR0cmliLmVuYWJsZWQpCi0gICAg
ewotICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBCdWZmZXJEM0Qg
KnN0b3JhZ2UgPSBHZXRJbXBsQXM8QnVmZmVyRDNEPihidWZmZXIpOwotICAgICAgICAgICAgZXJy
b3IgPSBzdG9yYWdlLT5nZXREYXRhKCZpbnB1dCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlucHV0ICs9IHN0YXRpY19jYXN0PGludD4oYXR0cmli
Lm9mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbnB1dCA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihhdHRyaWIucG9pbnRlcik7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgaW5wdXQgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjdXJyZW50VmFsdWUuRmxvYXRWYWx1ZXMpOwotICAg
IH0KKyAgICBjb25zdCB1aW50OF90ICppbnB1dCA9IHNvdXJjZURhdGE7CiAKICAgICBpZiAoaW5z
dGFuY2VzID09IDAgfHwgYXR0cmliLmRpdmlzb3IgPT0gMCkKICAgICB7CiAgICAgICAgIGlucHV0
ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7CiAgICAgfQogCi0gICAgZ2w6OlZlcnRleEZvcm1hdCB2
ZXJ0ZXhGb3JtYXQoYXR0cmliLCBjdXJyZW50VmFsdWUuVHlwZSk7Ci0gICAgY29uc3QgZDNkMTE6
OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0SW5mbyA9IGQzZDExOjpHZXRWZXJ0ZXhGb3JtYXRJ
bmZvKHZlcnRleEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRGZWF0dXJlTGV2ZWwoKSk7CisgICAgZ2w6
OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRU
eXBlKGF0dHJpYiwgY3VycmVudFZhbHVlVHlwZSk7CisgICAgY29uc3QgRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsID0gbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZl
YXR1cmVMZXZlbDsKKyAgICBjb25zdCBkM2QxMTo6VmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhGb3JtYXRJ
bmZvID0gZDNkMTE6OkdldFZlcnRleEZvcm1hdEluZm8odmVydGV4Rm9ybWF0VHlwZSwgZmVhdHVy
ZUxldmVsKTsKICAgICBBU1NFUlQodmVydGV4Rm9ybWF0SW5mby5jb3B5RnVuY3Rpb24gIT0gTlVM
TCk7CiAgICAgdmVydGV4Rm9ybWF0SW5mby5jb3B5RnVuY3Rpb24oaW5wdXQsIGlucHV0U3RyaWRl
LCBjb3VudCwgb3V0cHV0KTsKIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwog
fQogCi1nbDo6RXJyb3IgVmVydGV4QnVmZmVyMTE6OmdldFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBp
bnQgKm91dFNwYWNlUmVxdWlyZWQpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgaW50IGVsZW1lbnRD
b3VudCA9IDA7Ci0gICAgaWYgKGF0dHJpYi5lbmFibGVkKQotICAgIHsKLSAgICAgICAgaWYgKGlu
c3RhbmNlcyA9PSAwIHx8IGF0dHJpYi5kaXZpc29yID09IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGVsZW1lbnRDb3VudCA9IGNvdW50OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gUm91bmQgdXAgdG8gZGl2aXNvciwgaWYgcG9zc2libGUKLSAg
ICAgICAgICAgIGVsZW1lbnRDb3VudCA9IFVuc2lnbmVkQ2VpbERpdmlkZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KGluc3RhbmNlcyksIGF0dHJpYi5kaXZpc29yKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXQgdmVydGV4Rm9ybWF0KGF0dHJpYik7Ci0gICAgICAgIGNv
bnN0IGQzZDExOjpWZXJ0ZXhGb3JtYXQgJnZlcnRleEZvcm1hdEluZm8gPSBkM2QxMTo6R2V0VmVy
dGV4Rm9ybWF0SW5mbyh2ZXJ0ZXhGb3JtYXQsIG1SZW5kZXJlci0+Z2V0RmVhdHVyZUxldmVsKCkp
OwotICAgICAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPSBkM2Qx
MTo6R2V0RFhHSUZvcm1hdEluZm8odmVydGV4Rm9ybWF0SW5mby5uYXRpdmVGb3JtYXQpOwotICAg
ICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudFNpemUgPSBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVz
OwotICAgICAgICBpZiAoZWxlbWVudFNpemUgPD0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZCBpbnQ+OjptYXgoKSAvIGVsZW1lbnRDb3VudCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KG91dFNwYWNlUmVxdWlyZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKm91dFNw
YWNlUmVxdWlyZWQgPSBlbGVtZW50U2l6ZSAqIGVsZW1lbnRDb3VudDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9P
VVRfT0ZfTUVNT1JZLCAiTmV3IHZlcnRleCBidWZmZXIgc2l6ZSB3b3VsZCByZXN1bHQgaW4gYW4g
b3ZlcmZsb3cuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
Y29uc3QgdW5zaWduZWQgaW50IGVsZW1lbnRTaXplID0gNDsKLSAgICAgICAgaWYgKG91dFNwYWNl
UmVxdWlyZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpvdXRTcGFjZVJlcXVpcmVkID0gZWxl
bWVudFNpemUgKiA0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOwotICAgIH0KLX0KLQogdW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjExOjpnZXRCdWZm
ZXJTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbUJ1ZmZlclNpemU7CkBAIC0yNDYsNCArMTg3
LDQgQEAKICAgICByZXR1cm4gbUJ1ZmZlcjsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1ZlcnRleEJ1ZmZlcjExLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5oCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDI1
ICsyMSwyNyBAQAogewogICBwdWJsaWM6CiAgICAgZXhwbGljaXQgVmVydGV4QnVmZmVyMTEoUmVu
ZGVyZXIxMSAqY29uc3QgcmVuZGVyZXIpOwotICAgIHZpcnR1YWwgflZlcnRleEJ1ZmZlcjExKCk7
CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBpbml0aWFsaXplKHVuc2lnbmVkIGludCBzaXplLCBi
b29sIGR5bmFtaWNVc2FnZSk7CisgICAgZ2w6OkVycm9yIGluaXRpYWxpemUodW5zaWduZWQgaW50
IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0
LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywgdW5zaWduZWQgaW50IG9mZnNldCk7
CisgICAgZ2w6OkVycm9yIHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gY3VycmVudFZhbHVlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnNvdXJjZURhdGEpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3Bh
Y2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVkKSBjb25zdDsKKyAgICB1bnNpZ25l
ZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRC
dWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZGlz
Y2FyZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6
ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEJ1ZmZlclNpemUodW5zaWduZWQg
aW50IHNpemUpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRpc2NhcmQoKTsKKyAgICB2b2lkIGhp
bnRVbm1hcFJlc291cmNlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGludFVubWFw
UmVzb3VyY2UoKTsKLQogICAgIElEM0QxMUJ1ZmZlciAqZ2V0QnVmZmVyKCkgY29uc3Q7CiAKICAg
cHJpdmF0ZToKKyAgICB+VmVydGV4QnVmZmVyMTEoKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Ig
bWFwUmVzb3VyY2UoKTsKIAogICAgIFJlbmRlcmVyMTEgKmNvbnN0IG1SZW5kZXJlcjsKQEAgLTUx
LDYgKzUzLDYgQEAKICAgICB1aW50OF90ICptTWFwcGVkUmVzb3VyY2VEYXRhOwogfTsKIAotfQor
fSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNE
MTFfVkVSVEVYQlVGRkVSMTFfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvY29weXZlcnRleC5pbmwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9j
b3B5dmVydGV4LmlubAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9jb3B5dmVydGV4LmlubAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUsMzQgKzE1LDQzIEBACiAgICAgaWYgKGF0dHJpYlNpemUgPT0gc3RyaWRl
ICYmIGlucHV0Q29tcG9uZW50Q291bnQgPT0gb3V0cHV0Q29tcG9uZW50Q291bnQpCiAgICAgewog
ICAgICAgICBtZW1jcHkob3V0cHV0LCBpbnB1dCwgY291bnQgKiBhdHRyaWJTaXplKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBlbHNlCisKKyAgICBpZiAoaW5wdXRDb21wb25lbnRDb3Vu
dCA9PSBvdXRwdXRDb21wb25lbnRDb3VudCkKICAgICB7Ci0gICAgICAgIGNvbnN0IFQgZGVmYXVs
dEFscGhhVmFsdWUgPSBnbDo6Yml0Q2FzdDxUPihhbHBoYURlZmF1bHRWYWx1ZUJpdHMpOwotICAg
ICAgICBjb25zdCBzaXplX3QgbGFzdE5vbkFscGhhT3V0cHV0Q29tcG9uZW50ID0gc3RkOjptaW48
c2l6ZV90PihvdXRwdXRDb21wb25lbnRDb3VudCwgMyk7Ci0KICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBUICpv
ZmZzZXRJbnB1dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGlucHV0ICsgKGkgKiBzdHJp
ZGUpKTsKICAgICAgICAgICAgIFQgKm9mZnNldE91dHB1dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+
KG91dHB1dCkgKyBpICogb3V0cHV0Q29tcG9uZW50Q291bnQ7CiAKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgaW5wdXRDb21wb25lbnRDb3VudDsgaisrKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG9mZnNldE91dHB1dFtqXSA9IG9mZnNldElucHV0W2pdOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KG9mZnNldE91dHB1dCwgb2Zmc2V0SW5wdXQs
IGF0dHJpYlNpemUpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSBpbnB1dENvbXBvbmVudENvdW50OyBqIDwgbGFzdE5vbkFs
cGhhT3V0cHV0Q29tcG9uZW50OyBqKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Ly8gU2V0IHRoZSByZW1haW5pbmcgRy9CIGNoYW5uZWxzIHRvIDAuCi0gICAgICAgICAgICAgICAg
b2Zmc2V0T3V0cHV0W2pdID0gMDsKLSAgICAgICAgICAgIH0KKyAgICBjb25zdCBUIGRlZmF1bHRB
bHBoYVZhbHVlID0gZ2w6OmJpdENhc3Q8VD4oYWxwaGFEZWZhdWx0VmFsdWVCaXRzKTsKKyAgICBj
b25zdCBzaXplX3QgbGFzdE5vbkFscGhhT3V0cHV0Q29tcG9uZW50ID0gc3RkOjptaW48c2l6ZV90
PihvdXRwdXRDb21wb25lbnRDb3VudCwgMyk7CiAKLSAgICAgICAgICAgIGlmIChpbnB1dENvbXBv
bmVudENvdW50IDwgb3V0cHV0Q29tcG9uZW50Q291bnQgJiYgb3V0cHV0Q29tcG9uZW50Q291bnQg
PT0gNCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHJlbWFpbmlu
ZyBhbHBoYSBjaGFubmVsIHRvIHRoZSBkZWZhdWx0QWxwaGFWYWx1ZS4KLSAgICAgICAgICAgICAg
ICBvZmZzZXRPdXRwdXRbM10gPSBkZWZhdWx0QWxwaGFWYWx1ZTsKLSAgICAgICAgICAgIH0KKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAgICBjb25z
dCBUICpvZmZzZXRJbnB1dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGlucHV0ICsgKGkg
KiBzdHJpZGUpKTsKKyAgICAgICAgVCAqb2Zmc2V0T3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDxU
Kj4ob3V0cHV0KSArIGkgKiBvdXRwdXRDb21wb25lbnRDb3VudDsKKworICAgICAgICBtZW1jcHko
b2Zmc2V0T3V0cHV0LCBvZmZzZXRJbnB1dCwgYXR0cmliU2l6ZSk7CisKKyAgICAgICAgaWYgKGlu
cHV0Q29tcG9uZW50Q291bnQgPCBsYXN0Tm9uQWxwaGFPdXRwdXRDb21wb25lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIFNldCB0aGUgcmVtYWluaW5nIEcvQiBjaGFubmVscyB0byAwLgor
ICAgICAgICAgICAgc2l6ZV90IG51bUNvbXBvbmVudHMgPSAobGFzdE5vbkFscGhhT3V0cHV0Q29t
cG9uZW50IC0gaW5wdXRDb21wb25lbnRDb3VudCk7CisgICAgICAgICAgICBtZW1zZXQoJm9mZnNl
dE91dHB1dFtpbnB1dENvbXBvbmVudENvdW50XSwgMCwgbnVtQ29tcG9uZW50cyAqIHNpemVvZihU
KSk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoaW5wdXRDb21wb25lbnRDb3VudCA8IG91dHB1
dENvbXBvbmVudENvdW50ICYmIG91dHB1dENvbXBvbmVudENvdW50ID09IDQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFNldCB0aGUgcmVtYWluaW5nIGFscGhhIGNoYW5uZWwgdG8gdGhlIGRl
ZmF1bHRBbHBoYVZhbHVlLgorICAgICAgICAgICAgb2Zmc2V0T3V0cHV0WzNdID0gZGVmYXVsdEFs
cGhhVmFsdWU7CisgICAgICAgIH0KICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X2RhdGEu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24JKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTY0IEBA
CitbCisgIHsKKyAgICAiRFhHSV9GT1JNQVRfVU5LTk9XTiI6CisgICAgeworICAgICAgInRleHR1
cmUyRCI6ICJuZXZlciIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICJuZXZlciIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAg
ICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIi
LAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfVFlQRUxFU1MiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3
YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6
ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVy
VGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FUIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAg
ICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwK
KyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMGNoZWNrMTBfMWFsd2F5cyIsCisgICAgICAicmVu
ZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9VSU5UIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisg
ICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlz
IiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6
ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
U0lOVCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAi
c2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwK
KyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTIjoKKyAg
ICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFs
d2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1w
bGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVs
dGlzYW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAg
IH0sCisgICAgIkRYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCI6CisgICAgeworICAgICAgInRl
eHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAg
InRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjExXzBjaGVj
ayIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImNoZWNrIiwKKyAgICAgICJtdWx0aXNhbXBsZVJU
IjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAi
RFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAi
YWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3Vi
ZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVu
ZGVyVGFyZ2V0IjogImNoZWNrIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjMy
RzMyQjMyX1NJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAg
ICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAor
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImNo
ZWNrIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1RZUEVM
RVNTIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVy
ZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJz
aGFkZXJTYW1wbGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisg
ICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5l
dmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCI6CisgICAg
eworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxl
IjogIjEwXzAiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRp
c2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9
LAorICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0iOgorICAgIHsKKyAgICAgICJ0
ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAg
ICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwK
KyAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjog
ImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAi
YWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3Vi
ZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVu
ZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9TTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAor
ICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5
cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInJlbmRlclRhcmdldCI6
ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
U0lOVCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAi
c2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwK
KyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTIjoKKyAgICB7
CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5
cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUi
OiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0s
CisgICAgIkRYR0lfRk9STUFUX1IzMkczMl9GTE9BVCI6CisgICAgeworICAgICAgInRleHR1cmUy
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazEwXzFh
bHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAor
ICAgICJEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJy
ZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwK
KyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRf
UjMyRzMyX1NJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAg
ICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAor
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFs
d2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNT
IjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNE
IjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRl
clNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAg
ICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIi
CisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQiOgorICAgIHsK
KyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAibmV2ZXIi
LAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjog
Im5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJhbHdheXMiCisgICAgfSwK
KyAgICAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTIjoKKyAgICB7CisgICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVyIiwKKyAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8w
Y2hlY2sxMF8xYWx3YXlzIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAg
Im11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIK
KyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlOVCI6CisgICAg
eworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJuZXZl
ciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUi
OiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0s
CisgICAgIkRYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNTIjoKKyAgICB7CisgICAgICAi
dGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAg
ICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIi
LAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6
ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRY
R0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjog
ImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1
YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAicmVu
ZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1Ix
MEcxMEIxMEEyX1VJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAg
ICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMi
LAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0Ijog
ImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhT
dGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9B
VCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUz
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hh
ZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAg
ICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVTUyI6CisgICAgewor
ICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMi
LAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjog
Im5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAor
ICAgICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUy
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAg
InJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2si
LAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STV9TUkdCIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5
cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAi
YWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAicmVuZGVyVGFy
Z2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAi
ZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1VJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0
dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAg
InNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIs
CisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNIjoKKyAgICB7
CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5
cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUi
OiAiMTBfMCIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0s
CisgICAgIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJl
MkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAg
ICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVj
ayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9S
TUFUX1IxNkcxNl9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMi
LAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFs
d2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SMTZHMTZfRkxP
QVQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJl
M0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNo
YWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAg
ICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2
ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNIjoKKyAgICB7CisgICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisg
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBf
MCIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVS
VCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAg
IkRYR0lfRk9STUFUX1IxNkcxNl9VSU5UIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFs
d2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUi
OiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRl
clRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SMTZH
MTZfU05PUk0iOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0
ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAg
ICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlz
IiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwi
OiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQiOgorICAgIHsK
KyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlz
IiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIsCisgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0s
CisgICAgIkRYR0lfRk9STUFUX1IzMl9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUy
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAg
ICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIi
LAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1B
VF9EMzJfRkxPQVQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAg
ICJ0ZXh0dXJlM0QiOiAibmV2ZXIiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisg
ICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2
ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNp
bCI6ICJhbHdheXMiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUIjoKKyAgICB7
CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5
cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUi
OiAiMTBfMGNoZWNrMTBfMWFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5cyIs
CisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjog
Im5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IzMl9VSU5UIjoKKyAgICB7CisgICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisg
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2
ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxl
UlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAg
ICJEWEdJX0ZPUk1BVF9SMzJfU0lOVCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjog
ImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJU
YXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAg
ICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjI0Rzhf
VFlQRUxFU1MiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0
ZXh0dXJlM0QiOiAibmV2ZXIiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAg
ICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIi
LAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCI6Cisg
ICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJu
ZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1w
bGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVs
dGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogImFsd2F5cyIKKyAg
ICB9LAorICAgICJEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MiOgorICAgIHsKKyAg
ICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAibmV2ZXIiLAor
ICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEw
XzBjaGVjazEwXzFhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAg
ICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVy
IgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UIjoKKyAgICB7
CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVy
IiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6
ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNh
bXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwK
KyAgICAiRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUy
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAg
ICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIi
LAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1B
VF9SOEc4X1VOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAg
ICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwK
KyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFs
d2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1I4RzhfVUlOVCI6CisgICAg
eworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxl
IjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJtdWx0
aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAg
fSwKKyAgICAiRFhHSV9GT1JNQVRfUjhHOF9TTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUy
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAg
InJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2si
LAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1B
VF9SOEc4X1NJTlQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAg
ICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAor
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFs
d2F5cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IxNl9UWVBFTEVTUyI6Cisg
ICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJh
bHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2Ft
cGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11
bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICB9LAorICAgICJEWEdJX0ZPUk1BVF9SMTZfRkxPQVQiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJl
MkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0
dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAg
ICJyZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNr
IiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JN
QVRfRDE2X1VOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAg
ICAidGV4dHVyZTNEIjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAor
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5l
dmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5j
aWwiOiAiYWx3YXlzIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IxNl9VTk9STSI6CisgICAg
eworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxl
IjogIjEwXzAiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRp
c2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9
LAorICAgICJEWEdJX0ZPUk1BVF9SMTZfVUlOVCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJy
ZW5kZXJUYXJnZXQiOiAiYWx3YXlzIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwK
KyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRf
UjE2X1NOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAi
dGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAg
ICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogImFsd2F5
cyIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2ls
IjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1IxNl9TSU5UIjoKKyAgICB7Cisg
ICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIs
CisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAi
bmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAor
ICAgICJEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJy
ZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAor
ICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9S
OF9VTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRl
eHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAg
ICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMi
LAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6
ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SOF9VSU5UIjoKKyAgICB7CisgICAg
ICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisg
ICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2
ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxl
UlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAg
ICJEWEdJX0ZPUk1BVF9SOF9TTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdh
eXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjog
ImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInJlbmRlclRh
cmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9SOF9TSU5U
IjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNE
IjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFk
ZXJTYW1wbGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAg
ICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9BOF9VTk9STSI6CisgICAgeworICAgICAgInRl
eHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAg
InRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAor
ICAgICAgInJlbmRlclRhcmdldCI6ICJhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAi
Y2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJ
X0ZPUk1BVF9SMV9VTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAor
ICAgICAgInRleHR1cmUzRCI6ICIxMV8wIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICIxMV8wIiwK
KyAgICAgICJzaGFkZXJTYW1wbGUiOiAibmV2ZXIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJu
ZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVY
UCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUz
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hh
ZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAg
ICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVy
IgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STSI6CisgICAgeworICAg
ICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAor
ICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEw
XzAiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVS
VCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAg
IkRYR0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6
ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVD
dWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAgInJl
bmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX0JD
MV9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAg
InRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIsCisg
ICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2
ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNp
bCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk0iOgorICAgIHsK
KyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlz
IiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6
ICIxMF8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAor
ICAgICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiI6CisgICAgeworICAgICAgInRleHR1cmUy
RCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1
cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAgICAg
InJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIs
CisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFU
X0JDMl9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAorICAg
ICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5cyIs
CisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAi
bmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3Rl
bmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzJfVU5PUk0iOgorICAg
IHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3
YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBs
ZSI6ICIxMF8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRp
c2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9
LAorICAgICJEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQiI6CisgICAgeworICAgICAgInRleHR1
cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRl
eHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAorICAg
ICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZl
ciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9S
TUFUX0JDM19UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMiLAor
ICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFsd2F5
cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQi
OiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk0iOgor
ICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAi
YWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNh
bXBsZSI6ICIxMF8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11
bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQiI6CisgICAgeworICAgICAgInRl
eHR1cmUyRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAg
InRleHR1cmVDdWJlIjogImFsd2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzAiLAor
ICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJu
ZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lf
Rk9STUFUX0JDNF9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJhbHdheXMi
LAorICAgICAgInRleHR1cmUzRCI6ICJhbHdheXMiLAorICAgICAgInRleHR1cmVDdWJlIjogImFs
d2F5cyIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzRfVU5PUk0i
OgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0Qi
OiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRl
clNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAg
Im11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIK
KyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzRfU05PUk0iOgorICAgIHsKKyAgICAgICJ0ZXh0
dXJlMkQiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0
ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAg
ICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2
ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZP
Uk1BVF9CQzVfVFlQRUxFU1MiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwK
KyAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdh
eXMiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0
IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQkM1X1VOT1JNIjoK
KyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjog
ImFsd2F5cyIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJT
YW1wbGUiOiAiMTBfMCIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJt
dWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQkM1X1NOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVy
ZTJEIjogImFsd2F5cyIsCisgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCisgICAgICAidGV4
dHVyZUN1YmUiOiAiYWx3YXlzIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAg
ICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVy
IiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JN
QVRfQjVHNlI1X1VOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImR4Z2kxXzIiLAor
ICAgICAgInRleHR1cmUzRCI6ICJkeGdpMV8yIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJkeGdp
MV8yIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiZHhnaTFfMiIsCisgICAgICAicmVuZGVyVGFy
Z2V0IjogImR4Z2kxXzIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CNUc1UjVB
MV9VTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJkeGdpMV8yIiwKKyAgICAgICJ0
ZXh0dXJlM0QiOiAiZHhnaTFfMiIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiZHhnaTFfMiIsCisg
ICAgICAic2hhZGVyU2FtcGxlIjogImR4Z2kxXzIiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJj
aGVjayIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVu
Y2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNIjoK
KyAgICB7CisgICAgICAidGV4dHVyZTJEIjogImNoZWNrIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAi
Y2hlY2siLAorICAgICAgInRleHR1cmVDdWJlIjogImNoZWNrIiwKKyAgICAgICJzaGFkZXJTYW1w
bGUiOiAiMTBfMGNoZWNrMTFfMGFsd2F5cyIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIjEwXzBj
aGVjazExXzBhbHdheXMiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9COEc4UjhY
OF9VTk9STSI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICJjaGVjayIsCisgICAgICAidGV4
dHVyZTNEIjogImNoZWNrIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJjaGVjayIsCisgICAgICAi
c2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazExXzBhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdl
dCI6ICIxMV8wIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUjEwRzEwQjEwX1hS
X0JJQVNfQTJfVU5PUk0iOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiY2hlY2siLAorICAg
ICAgInRleHR1cmUzRCI6ICJjaGVjayIsCisgICAgICAidGV4dHVyZUN1YmUiOiAibmV2ZXIiLAor
ICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5l
dmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5j
aWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1Mi
OgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiY2hlY2siLAorICAgICAgInRleHR1cmUzRCI6
ICJjaGVjayIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiY2hlY2siLAorICAgICAgInNoYWRlclNh
bXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJt
dWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk1fU1JHQiI6CisgICAgeworICAg
ICAgInRleHR1cmUyRCI6ICJjaGVjayIsCisgICAgICAidGV4dHVyZTNEIjogImNoZWNrIiwKKyAg
ICAgICJ0ZXh0dXJlQ3ViZSI6ICJjaGVjayIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBj
aGVjazExXzBhbHdheXMiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMV8wIiwKKyAgICAgICJt
dWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1MiOgorICAgIHsKKyAgICAg
ICJ0ZXh0dXJlMkQiOiAiY2hlY2siLAorICAgICAgInRleHR1cmUzRCI6ICJjaGVjayIsCisgICAg
ICAidGV4dHVyZUN1YmUiOiAiY2hlY2siLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIs
CisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjog
Im5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhH
SV9GT1JNQVRfQjhHOFI4WDhfVU5PUk1fU1JHQiI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6
ICJjaGVjayIsCisgICAgICAidGV4dHVyZTNEIjogImNoZWNrIiwKKyAgICAgICJ0ZXh0dXJlQ3Vi
ZSI6ICJjaGVjayIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjEwXzBjaGVjazExXzBhbHdheXMi
LAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMV8wIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjog
ImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhH
SV9GT1JNQVRfQkM2SF9UWVBFTEVTUyI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6ICIxMV8w
IiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAiMTFfMCIsCisgICAgICAidGV4dHVyZUN1YmUiOiAiMTFf
MCIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQi
OiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRo
U3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzZIX1VGMTYiOgor
ICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjEx
XzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjExXzAiLAorICAgICAgInNoYWRlclNhbXBsZSI6
ICIxMV8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAor
ICAgICJEWEdJX0ZPUk1BVF9CQzZIX1NGMTYiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAi
MTFfMCIsCisgICAgICAidGV4dHVyZTNEIjogIjExXzAiLAorICAgICAgInRleHR1cmVDdWJlIjog
IjExXzAiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8wIiwKKyAgICAgICJyZW5kZXJUYXJn
ZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRl
cHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9CQzdfVFlQRUxF
U1MiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMCIsCisgICAgICAidGV4dHVyZTNE
IjogIjExXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjExXzAiLAorICAgICAgInNoYWRlclNh
bXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJt
dWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQkM3X1VOT1JNIjoKKyAgICB7CisgICAgICAidGV4dHVy
ZTJEIjogIjExXzAiLAorICAgICAgInRleHR1cmUzRCI6ICIxMV8wIiwKKyAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICIxMV8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMCIsCisgICAgICAicmVu
ZGVyVGFyZ2V0IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAg
ICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQkM3
X1VOT1JNX1NSR0IiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMCIsCisgICAgICAi
dGV4dHVyZTNEIjogIjExXzAiLAorICAgICAgInRleHR1cmVDdWJlIjogIjExXzAiLAorICAgICAg
InNoYWRlclNhbXBsZSI6ICIxMV8wIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAor
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9BWVVWIjoKKyAgICB7CisgICAgICAidGV4
dHVyZTJEIjogIjExXzEiLAorICAgICAgInRleHR1cmUzRCI6ICJuZXZlciIsCisgICAgICAidGV4
dHVyZUN1YmUiOiAibmV2ZXIiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKKyAgICAg
ICJyZW5kZXJUYXJnZXQiOiAiMTFfMSIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIs
CisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFU
X1k0MTAiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMSIsCisgICAgICAidGV4dHVy
ZTNEIjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJuZXZlciIsCisgICAgICAic2hh
ZGVyU2FtcGxlIjogIjExXzEiLAorICAgICAgInJlbmRlclRhcmdldCI6ICJuZXZlciIsCisgICAg
ICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVy
IgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX1k0MTYiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJl
MkQiOiAiMTFfMSIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0dXJl
Q3ViZSI6ICJuZXZlciIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIjExXzEiLAorICAgICAgInJl
bmRlclRhcmdldCI6ICJuZXZlciIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJuZXZlciIsCisg
ICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX05W
MTIiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMSIsCisgICAgICAidGV4dHVyZTNE
IjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJuZXZlciIsCisgICAgICAic2hhZGVy
U2FtcGxlIjogIjExXzEiLAorICAgICAgInJlbmRlclRhcmdldCI6ICIxMV8xIiwKKyAgICAgICJt
dWx0aXNhbXBsZVJUIjogImNoZWNrIiwKKyAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiCisg
ICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUDAxMCI6CisgICAgeworICAgICAgInRleHR1cmUyRCI6
ICIxMV8xIiwKKyAgICAgICJ0ZXh0dXJlM0QiOiAibmV2ZXIiLAorICAgICAgInRleHR1cmVDdWJl
IjogIm5ldmVyIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTFfMSIsCisgICAgICAicmVuZGVy
VGFyZ2V0IjogIjExXzEiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9QMDE2IjoK
KyAgICB7CisgICAgICAidGV4dHVyZTJEIjogIjExXzEiLAorICAgICAgInRleHR1cmUzRCI6ICJu
ZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAibmV2ZXIiLAorICAgICAgInNoYWRlclNhbXBs
ZSI6ICIxMV8xIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiMTFfMSIsCisgICAgICAibXVsdGlz
YW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVwdGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0s
CisgICAgIkRYR0lfRk9STUFUXzQyMF9PUEFRVUUiOgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQi
OiAiMTFfMSIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVyIiwKKyAgICAgICJ0ZXh0dXJlQ3Vi
ZSI6ICJuZXZlciIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5ldmVyIiwKKyAgICAgICJyZW5k
ZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9ZVVky
IjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogIjExXzEiLAorICAgICAgInRleHR1cmUzRCI6
ICJuZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAibmV2ZXIiLAorICAgICAgInNoYWRlclNh
bXBsZSI6ICIxMV8xIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11
bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAg
ICB9LAorICAgICJEWEdJX0ZPUk1BVF9ZMjEwIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjog
IjExXzEiLAorICAgICAgInRleHR1cmUzRCI6ICJuZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUi
OiAibmV2ZXIiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKKyAgICAgICJyZW5kZXJU
YXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAg
ImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAgICJEWEdJX0ZPUk1BVF9ZMjE2IjoK
KyAgICB7CisgICAgICAidGV4dHVyZTJEIjogIjExXzEiLAorICAgICAgInRleHR1cmUzRCI6ICJu
ZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAibmV2ZXIiLAorICAgICAgInNoYWRlclNhbXBs
ZSI6ICIxMV8xIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRp
c2FtcGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9
LAorICAgICJEWEdJX0ZPUk1BVF9OVjExIjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogIjEx
XzEiLAorICAgICAgInRleHR1cmUzRCI6ICJuZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAi
bmV2ZXIiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICIxMV8xIiwKKyAgICAgICJyZW5kZXJUYXJn
ZXQiOiAiMTFfMSIsCisgICAgICAibXVsdGlzYW1wbGVSVCI6ICJjaGVjayIsCisgICAgICAiZGVw
dGhTdGVuY2lsIjogIm5ldmVyIgorICAgIH0sCisgICAgIkRYR0lfRk9STUFUX0FJNDQiOgorICAg
IHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMSIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVy
IiwKKyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJuZXZlciIsCisgICAgICAic2hhZGVyU2FtcGxlIjog
Im5ldmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2Ft
cGxlUlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAor
ICAgICJEWEdJX0ZPUk1BVF9JQTQ0IjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogIjExXzEi
LAorICAgICAgInRleHR1cmUzRCI6ICJuZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAibmV2
ZXIiLAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0
IjogIm5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0
aFN0ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfUDgiOgorICAgIHsK
KyAgICAgICJ0ZXh0dXJlMkQiOiAiMTFfMSIsCisgICAgICAidGV4dHVyZTNEIjogIm5ldmVyIiwK
KyAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJuZXZlciIsCisgICAgICAic2hhZGVyU2FtcGxlIjogIm5l
dmVyIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAorICAgICAgIm11bHRpc2FtcGxl
UlQiOiAibmV2ZXIiLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIKKyAgICB9LAorICAg
ICJEWEdJX0ZPUk1BVF9BOFA4IjoKKyAgICB7CisgICAgICAidGV4dHVyZTJEIjogIjExXzEiLAor
ICAgICAgInRleHR1cmUzRCI6ICJuZXZlciIsCisgICAgICAidGV4dHVyZUN1YmUiOiAibmV2ZXIi
LAorICAgICAgInNoYWRlclNhbXBsZSI6ICJuZXZlciIsCisgICAgICAicmVuZGVyVGFyZ2V0Ijog
Im5ldmVyIiwKKyAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKKyAgICAgICJkZXB0aFN0
ZW5jaWwiOiAibmV2ZXIiCisgICAgfSwKKyAgICAiRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0i
OgorICAgIHsKKyAgICAgICJ0ZXh0dXJlMkQiOiAiZHhnaTFfMiIsCisgICAgICAidGV4dHVyZTNE
IjogImR4Z2kxXzIiLAorICAgICAgInRleHR1cmVDdWJlIjogImR4Z2kxXzIiLAorICAgICAgInNo
YWRlclNhbXBsZSI6ICJkeGdpMV8yIiwKKyAgICAgICJyZW5kZXJUYXJnZXQiOiAiY2hlY2siLAor
ICAgICAgIm11bHRpc2FtcGxlUlQiOiAiY2hlY2siLAorICAgICAgImRlcHRoU3RlbmNpbCI6ICJu
ZXZlciIKKyAgICB9CisgIH0KK10KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9y
dF90YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODQ2IEBACisvLyBHRU5FUkFU
RUQgRklMRSAtIERPIE5PVCBFRElULiBTZWUgZHhnaV9zdXBwb3J0X2RhdGEuanNvbi4KKy8vCisv
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBkeGdpX3N1cHBvcnRfdGFibGU6CisvLyAgIFF1ZXJpZXMgZm9yIERYR0kgc3VwcG9y
dCBvZiB2YXJpb3VzIHRleHR1cmUgZm9ybWF0cy4gRGVwZW5kcyBvbiBEWEdJCisvLyAgIHZlcnNp
b24sIEQzRCBmZWF0dXJlIGxldmVsLCBhbmQgaXMgc29tZXRpbWVzIGd1YXJhbnRlZWQgb3Igb3B0
aW9uYWwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lf
c3VwcG9ydF90YWJsZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFj
ZSByeAoreworCituYW1lc3BhY2UgZDNkMTEKK3sKKworI2RlZmluZSBGXzJEIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX1RFWFRVUkUyRAorI2RlZmluZSBGXzNEIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RF
WFRVUkUzRAorI2RlZmluZSBGX0NVQkUgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkUK
KyNkZWZpbmUgRl9TQU1QTEUgRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRQorI2Rl
ZmluZSBGX1JUIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQKKyNkZWZpbmUgRl9N
UyBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NVUxUSVNBTVBMRV9SRU5ERVJUQVJHRVQKKyNkZWZpbmUg
Rl9EUyBEM0QxMV9GT1JNQVRfU1VQUE9SVF9ERVBUSF9TVEVOQ0lMCisKK25hbWVzcGFjZQorewor
Citjb25zdCBEWEdJU3VwcG9ydCAmR2V0RGVmYXVsdFN1cHBvcnQoKQoreworICAgIHN0YXRpYyBV
SU5UIEFsbFN1cHBvcnRGbGFncyA9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUyRCB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVY
VFVSRTNEIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9URVhUVVJFQ1VCRSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSB8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVCB8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfTVVMVElT
QU1QTEVfUkVOREVSVEFSR0VUIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
M0QxMV9GT1JNQVRfU1VQUE9SVF9ERVBUSF9TVEVOQ0lMOworICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBkZWZhdWx0U3VwcG9ydCgwLCAwLCBBbGxTdXBwb3J0RmxhZ3MpOworICAgIHJldHVy
biBkZWZhdWx0U3VwcG9ydDsKK30KKworY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0
XzEwXzAoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQp
CisgICAgeworICAgICAgICBjYXNlIERYR0lfRk9STUFUXzQyMF9PUEFRVUU6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BOFA4
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBG
X0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQUk0NDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0FZVVY6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1
RzVSNUExX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTLCBGX01TIHwg
Rl9SVCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0I1RzZSNV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9T
QU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhBOF9UWVBFTEVTUzoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfMkQgfCBGXzNEIHwgRl9DVUJFKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBM
RSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9NUyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01T
IHwgRl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4
X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1NBTVBMRSk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I4RzhSOFg4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9N
UyB8IEZfU0FNUExFKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9E
UyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9V
Tk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZf
UlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNX1NS
R0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDM19UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
U0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM0X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZf
UlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JNOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzVfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9TRjE2OgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8
IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDNkhfVUYxNjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM3X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
N19VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNX1NSR0I6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
RFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QxNl9VTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMs
IEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9E
MzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FNUExFLCBGX01T
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNEIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRzhSOF9HOEI4X1VOT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9JQTQ0Ogor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfTlYxMToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8IEZfU0FNUExF
LCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfTlYxMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9SVCB8
IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxMDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RT
IHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxNjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX0RTIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDg6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MTBHMTBCMTBfWFJfQklBU19BMl9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfMkQgfCBGXzNEKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk06CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2
X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxNkcxNl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NB
TVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
IHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQRUxFU1M6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcx
Nl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IxNkcxNl9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8
IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NJTlQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9UWVBF
TEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FN
UExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxX1VOT1JNOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJELCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNE
IHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhf
VFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGX0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQsIEZfU0FNUExF
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZf
RFMsIEZfTVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FUOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9E
UyB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1JULCBGX0RTLCBGX01TIHwgRl9TQU1QTEUpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNTOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl9DVUJFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUywgRl9NUyB8IEZfU0FNUExF
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9E
UyB8IEZfTVMgfCBGX1JULCBGX1NBTVBMRSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9TSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVT
UzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhfQjhHOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMg
fCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZf
RFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU05PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVTUzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBG
X0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUzoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhf
VUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMs
IEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9T
QU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMjRf
VFlQRUxFU1NfRzhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfWDMyX1RZUEVMRVNTX0c4WDI0X1VJTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUs
IEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1kyMTA6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9ZMjE2OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfWTQxMDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1k0MTY6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZVVkyOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1cHBv
cnQoKTsKKyAgICB9Cit9CisKK2NvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF8xMF8x
KERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCit7CisgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAg
IHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF80MjBfT1BBUVVFOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThQODoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0E4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywg
Rl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0FJNDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BWVVWOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
RFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc1UjVB
MV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExF
LCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JN
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9COEc4UjhBOF9VTk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
TVMgfCBGX1NBTVBMRSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1RZUEVMRVNTOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgRl8yRCB8IEZfM0QgfCBGX0NVQkUpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9COEc4UjhYOF9VTk9S
TToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl9EUywgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX01TIHwgRl9TQU1QTEUpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
OEc4UjhYOF9VTk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfTVMgfCBG
X1NBTVBMRSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBG
X01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JNOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1f
U1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9CQzNfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBM
RSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9T
Tk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfQkM0X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBG
X1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9TTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZf
M0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1
X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzVfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZf
RFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNkhfU0YxNjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JU
LCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19U
WVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oMCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5P
Uk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KDAsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19VTk9STV9TUkdCOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGX0RTIHwg
Rl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX0RTLCBGXzNE
IHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
X0NVQkUgfCBGX0RTLCBGXzNEIHwgRl9SVCB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZM
T0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZfUlQg
fCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0c4UjhfRzhCOF9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfSUE0NDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X05WMTE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl9N
Uyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX05WMTI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfUlQgfCBGX1NB
TVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1AwMTA6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1AwMTY6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9EUyB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1A4OgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEw
QTJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NB
TVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjEwRzEw
QjEwX1hSX0JJQVNfQTJfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FN
UExFLCBGXzJEIHwgRl8zRCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZv
KEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZf
U0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBF
TEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9E
UyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9GTE9B
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZHMTZfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUs
IEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMTZHMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RT
LCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NB
TVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9TTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1M6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwg
Rl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNl9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1Q
TEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZf
RFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVM
RVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGXzJEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZf
U0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwg
Rl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNE
IHwgRl9DVUJFLCBGX0RTLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5UOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfU0FNUExFLCBGX01TIHwgRl9SVCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkcz
MkIzMl9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZf
U0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RT
IHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9TSU5U
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IzMkczMl9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9S
VCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
X0NVQkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Iz
Ml9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX1NBTVBMRSwg
Rl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9TSU5UOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMl9UWVBFTEVT
UzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExF
LCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBG
X0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBF
TEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdC
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4RzhfQjhHOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZf
TVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQs
IEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU05PUk06CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVTUzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhHOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwg
Rl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FN
UExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JU
LCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9UWVBFTEVTUzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZf
RFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9Y
MjRfVFlQRUxFU1NfRzhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9S
VCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWDMyX1RZUEVMRVNTX0c4WDI0X1VJTlQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NV
QkUsIEZfM0QgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1kyMTA6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAs
IEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9ZMjE2OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8
IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxMDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1k0MTY6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZVVkyOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1
cHBvcnQoKTsKKyAgICB9Cit9CisKK2NvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF8x
MV8wKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCit7CisgICAgc3dpdGNoIChkeGdpRm9ybWF0KQor
ICAgIHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF80MjBfT1BBUVVFOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQThQODoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwg
Rl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0E4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9E
UywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0FJNDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BWVVWOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZfUlQpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc1
UjVBMV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyB8IEZf
UlQpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FN
UExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVFlQRUxFU1M6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VO
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I4RzhSOEE4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfRFMgfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOFg4X1VO
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5m
byhGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9NUyk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0I4RzhSOFg4X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwg
Rl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBG
XzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
MV9VTk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8
IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JN
X1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDM19UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMgfCBGX01TIHwg
Rl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8
IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkM0X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8
IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwg
Rl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9VTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM1X1NOT1JN
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhG
XzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9CQzVfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQg
fCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NB
TVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9TRjE2OgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1RZ
UEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUsIEZfRFMg
fCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDN19UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9C
QzdfVU5PUk1fU1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lT
dXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMg
fCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfRDE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFIHwgRl9EUywgRl8zRCB8IEZf
UlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJF
IHwgRl9EUywgRl8zRCB8IEZfUlQgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0QzMl9GTE9BVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9E
MzJfRkxPQVRfUzhYMjRfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8IEZfRFMsIEZfM0QgfCBGX1JUIHwgRl9T
QU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9HOFI4X0c4QjhfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9TQU1QTEUsIEZfRFMgfCBGX01TIHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0lBNDQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNE
IHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjEx
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygw
LCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9OVjEyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9QMDEwOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMgfCBGX1JUIHwg
Rl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QMDE2OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfRFMg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9QODoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1RZ
UEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZf
RFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8
IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMF9Y
Ul9CSUFTX0EyX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbygwLCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl8yRCB8IEZfM0QpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwg
Rl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBM
RSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVFlQRUxFU1M6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBG
X1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2
RzE2X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9y
dCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01T
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjE2RzE2X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBM
RSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9UWVBFTEVTUzoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUs
IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQg
fCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2
RzE2X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9N
Uyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNl9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUs
IEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBG
X0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU05PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJF
IHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MTZfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBE
WEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBG
X0RTLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjFfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9N
UyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJF
LCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMjRfVU5P
Uk1fWDhfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJ
U3VwcG9ydCBpbmZvKEZfMkQgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl8zRCB8IEZfRFMgfCBGX01T
IHwgRl9SVCwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUg
fCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8y
RCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfVFlQRUxFU1M6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NUyB8IEZf
UlQgfCBGX1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9B
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfM0QgfCBGX0NVQkUsIEZfRFMsIEZfTVMgfCBGX1JUKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMgfCBGX1JUKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMg
fCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfVUlOVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyB8IEZfUlQpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBGX01TKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzMyX1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBG
X01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUgfCBGX1JULCBGX0RTIHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBF
TEVTUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAw
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwg
Rl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUzoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfQ1VCRSB8
IEZfU0FNUExFLCBGXzNEIHwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1NJTlQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyX1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1
cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9T
QU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1JULCBGX0RT
IHwgRl9TQU1QTEUsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJE
IHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4
RzhCOEE4X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhH
SVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwg
Rl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZf
UlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNX1NSR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3Vw
cG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCB8IEZfU0FNUExFLCBGX0RTLCBG
X01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9COEc4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfU0FNUExF
LCBGX0RTIHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9D
VUJFIHwgRl9SVCwgRl9EUyB8IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4
X1RZUEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9SVCwgRl9EUyB8
IEZfU0FNUExFLCBGX01TKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBG
X1JUIHwgRl9TQU1QTEUsIEZfRFMsIEZfTVMpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOF9TSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NBTVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NOT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwg
Rl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBGX1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1RZ
UEVMRVNTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQg
aW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUs
IDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQsIEZfRFMgfCBGX1NB
TVBMRSwgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSB8IEZfUlQgfCBG
X1NBTVBMRSwgRl9EUywgRl9NUyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0Qg
fCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9X
TjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
MCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwg
MCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl9DVUJFLCBGXzNEIHwgRl9EUyB8
IEZfTVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9YMzJfVFlQRUxFU1NfRzhYMjRfVUlO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8o
Rl8yRCB8IEZfQ1VCRSwgRl8zRCB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfWTIxMDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBw
b3J0IGluZm8oMCwgRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBG
X1NBTVBMRSwgMCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1kyMTY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBEWEdJU3VwcG9ydCBpbmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZf
TVMgfCBGX1JUIHwgRl9TQU1QTEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZNDEwOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbygwLCBGXzJEIHwgRl8zRCB8IEZfQ1VC
RSB8IEZfRFMgfCBGX01TIHwgRl9SVCB8IEZfU0FNUExFLCAwKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxNjoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oMCwgRl8yRCB8
IEZfM0QgfCBGX0NVQkUgfCBGX0RTIHwgRl9NUyB8IEZfUlQgfCBGX1NBTVBMRSwgMCk7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1lVWTI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKDAsIEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9EUyB8IEZfTVMgfCBGX1JUIHwgRl9TQU1Q
TEUsIDApOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBH
ZXREZWZhdWx0U3VwcG9ydCgpOworICAgIH0KK30KKworfQorCisjdW5kZWYgRl8yRAorI3VuZGVm
IEZfM0QKKyN1bmRlZiBGX0NVQkUKKyN1bmRlZiBGX1NBTVBMRQorI3VuZGVmIEZfUlQKKyN1bmRl
ZiBGX01TCisjdW5kZWYgRl9EUworCitjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnQo
RFhHSV9GT1JNQVQgZHhnaUZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQor
eworICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEdldERYR0lTdXBwb3J0XzEwXzAo
ZHhnaUZvcm1hdCk7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKKyAgICAg
ICAgICAgIHJldHVybiBHZXREWEdJU3VwcG9ydF8xMF8xKGR4Z2lGb3JtYXQpOworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gR2V0RFhHSVN1
cHBvcnRfMTFfMChkeGdpRm9ybWF0KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBHZXREZWZhdWx0U3VwcG9ydCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgZDNk
MTEKKworfSAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0
X3RhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGR4
Z2lfc3VwcG9ydF90YWJsZToKKy8vICAgUXVlcmllcyBmb3IgRFhHSSBzdXBwb3J0IG9mIHZhcmlv
dXMgdGV4dHVyZSBmb3JtYXRzLiBEZXBlbmRzIG9uIERYR0kKKy8vICAgdmVyc2lvbiwgRDNEIGZl
YXR1cmUgbGV2ZWwsIGFuZCBpcyBzb21ldGltZXMgZ3VhcmFudGVlZCBvciBvcHRpb25hbC4KKy8v
CisKKyNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK25h
bWVzcGFjZSBkM2QxMQoreworCitzdHJ1Y3QgRFhHSVN1cHBvcnQKK3sKKyAgICBEWEdJU3VwcG9y
dCgpCisgICAgICAgIDogYWx3YXlzU3VwcG9ydGVkRmxhZ3MoMCksCisgICAgICAgICAgbmV2ZXJT
dXBwb3J0ZWRGbGFncygwKSwKKyAgICAgICAgICBvcHRpb25hbGx5U3VwcG9ydGVkRmxhZ3MoMCkK
KyAgICB7CisgICAgfQorCisgICAgRFhHSVN1cHBvcnQoVUlOVCBhbHdheXNTdXBwb3J0ZWRJbiwg
VUlOVCBuZXZlclN1cHBvcnRlZEluLCBVSU5UIG9wdGlvbmFsbHlTdXBwb3J0ZWRJbikKKyAgICAg
ICAgOiBhbHdheXNTdXBwb3J0ZWRGbGFncyhhbHdheXNTdXBwb3J0ZWRJbiksCisgICAgICAgICAg
bmV2ZXJTdXBwb3J0ZWRGbGFncyhuZXZlclN1cHBvcnRlZEluKSwKKyAgICAgICAgICBvcHRpb25h
bGx5U3VwcG9ydGVkRmxhZ3Mob3B0aW9uYWxseVN1cHBvcnRlZEluKQorICAgIHsKKyAgICB9CisK
KyAgICBVSU5UIGFsd2F5c1N1cHBvcnRlZEZsYWdzOworICAgIFVJTlQgbmV2ZXJTdXBwb3J0ZWRG
bGFnczsKKyAgICBVSU5UIG9wdGlvbmFsbHlTdXBwb3J0ZWRGbGFnczsKK307CisKK2NvbnN0IERY
R0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydChEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0LCBEM0RfRkVB
VFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpOworCit9IC8vIG5hbWVzcGFjZSBkM2QxMQorCit9IC8v
IG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1h
dHV0aWxzMTEuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMCwxMSArMTAsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0
dXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvY29weXZlcnRleC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZ2VuZXJhdGVtaXAuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
bG9hZGltYWdlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvcHl2
ZXJ0ZXguaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9SZW5kZXJlci5oIgogCiBuYW1l
c3BhY2UgcngKIHsKQEAgLTIyLDg2ICsyNCw2IEBACiBuYW1lc3BhY2UgZDNkMTEKIHsKIAotdHlw
ZWRlZiBzdGQ6Om1hcDxEWEdJX0ZPUk1BVCwgR0xlbnVtPiBEWEdJVG9FU0Zvcm1hdE1hcDsKLQot
aW5saW5lIHZvaWQgQWRkRFhHSVRvRVNFbnRyeShEWEdJVG9FU0Zvcm1hdE1hcCAqbWFwLCBEWEdJ
X0ZPUk1BVCBrZXksIEdMZW51bSB2YWx1ZSkKLXsKLSAgICBtYXAtPmluc2VydChzdGQ6Om1ha2Vf
cGFpcihrZXksIHZhbHVlKSk7Ci19Ci0KLXN0YXRpYyBEWEdJVG9FU0Zvcm1hdE1hcCBCdWlsZERY
R0lUb0VTRm9ybWF0TWFwKCkKLXsKLSAgICBEWEdJVG9FU0Zvcm1hdE1hcCBtYXA7Ci0KLSAgICBB
ZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1VOS05PV04sICAgICAgICAgICAgICAg
ICAgR0xfTk9ORSk7Ci0KLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX0E4
X1VOT1JNLCAgICAgICAgICAgICAgICAgR0xfQUxQSEE4X0VYVCk7Ci0gICAgQWRkRFhHSVRvRVNF
bnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9VTk9STSwgICAgICAgICAgICAgICAgIEdMX1I4KTsK
LSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sICAgICAg
ICAgICAgICAgR0xfUkc4KTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNLCAgICAgICAgICAgR0xfUkdCQTgpOwotICAgIEFkZERYR0lUb0VTRW50
cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwgICAgICBHTF9TUkdCOF9B
TFBIQTgpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk0sICAgICAgICAgICBHTF9CR1JBOF9FWFQpOwotCi0gICAgQWRkRFhHSVRvRVNFbnRyeSgm
bWFwLCBEWEdJX0ZPUk1BVF9SOF9TTk9STSwgICAgICAgICAgICAgICAgIEdMX1I4X1NOT1JNKTsK
LSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfU05PUk0sICAgICAg
ICAgICAgICAgR0xfUkc4X1NOT1JNKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1NOT1JNLCAgICAgICAgICAgR0xfUkdCQThfU05PUk0pOwotCi0gICAg
QWRkRFhHSVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9VSU5ULCAgICAgICAgICAgICAg
ICAgIEdMX1I4VUkpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjE2
X1VJTlQsICAgICAgICAgICAgICAgICBHTF9SMTZVSSk7Ci0gICAgQWRkRFhHSVRvRVNFbnRyeSgm
bWFwLCBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwgICAgICAgICAgICAgICAgIEdMX1IzMlVJKTsKLSAg
ICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfVUlOVCwgICAgICAgICAg
ICAgICAgR0xfUkc4VUkpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRf
UjE2RzE2X1VJTlQsICAgICAgICAgICAgICBHTF9SRzE2VUkpOwotICAgIEFkZERYR0lUb0VTRW50
cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsICAgICAgICAgICAgICBHTF9SRzMyVUkp
OwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQs
ICAgICAgICAgICBHTF9SR0IzMlVJKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAgICAgICAgR0xfUkdCQThVSSk7Ci0gICAgQWRkRFhH
SVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwgICAgICAgIEdM
X1JHQkExNlVJKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1IzMkcz
MkIzMkEzMl9VSU5ULCAgICAgICAgR0xfUkdCQTMyVUkpOwotCi0gICAgQWRkRFhHSVRvRVNFbnRy
eSgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9TSU5ULCAgICAgICAgICAgICAgICAgIEdMX1I4SSk7Ci0g
ICAgQWRkRFhHSVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwgICAgICAgICAg
ICAgICAgIEdMX1IxNkkpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRf
UjMyX1NJTlQsICAgICAgICAgICAgICAgICBHTF9SMzJJKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5
KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwgICAgICAgICAgICAgICAgR0xfUkc4SSk7Ci0g
ICAgQWRkRFhHSVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwgICAgICAg
ICAgICAgIEdMX1JHMTZJKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFU
X1IzMkczMl9TSU5ULCAgICAgICAgICAgICAgR0xfUkczMkkpOwotICAgIEFkZERYR0lUb0VTRW50
cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQsICAgICAgICAgICBHTF9SR0IzMkkp
OwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwg
ICAgICAgICAgICBHTF9SR0JBOEkpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgICAgICBHTF9SR0JBMTZJKTsKLSAgICBBZGREWEdJ
VG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAgICAgICAgR0xf
UkdCQTMySSk7Ci0KLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1IxMEcx
MEIxMEEyX1VOT1JNLCAgICAgICAgR0xfUkdCMTBfQTIpOwotICAgIEFkZERYR0lUb0VTRW50cnko
Jm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwgICAgICAgICBHTF9SR0IxMF9BMlVJ
KTsKLQotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULCAg
ICAgICAgICAgICAgICBHTF9SMTZGKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lf
Rk9STUFUX1IxNkcxNl9GTE9BVCwgICAgICAgICAgICAgR0xfUkcxNkYpOwotICAgIEFkZERYR0lU
b0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCAgICAgICBHTF9S
R0JBMTZGKTsKLQotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjMyX0ZM
T0FULCAgICAgICAgICAgICAgICBHTF9SMzJGKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAs
IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICAgICAgR0xfUkczMkYpOwotICAgIEFk
ZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAgICAgICAg
ICBHTF9SR0IzMkYpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX0ZMT0FULCAgICAgICBHTF9SR0JBMzJGKTsKLQotICAgIEFkZERYR0lUb0VTRW50
cnkoJm1hcCwgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLCAgICAgICBHTF9SR0I5X0U1
KTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9B
VCwgICAgICAgICAgR0xfUjExRl9HMTFGX0IxMEYpOwotCi0gICAgQWRkRFhHSVRvRVNFbnRyeSgm
bWFwLCBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MsICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBP
TkVOVDE2KTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1IxNl9VTk9S
TSwgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYpOwotICAgIEFkZERYR0lUb0VT
RW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLCAgICAgICAgICAgICAgICBHTF9ERVBU
SF9DT01QT05FTlQxNik7Ci0gICAgQWRkRFhHSVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9S
MjRHOF9UWVBFTEVTUywgICAgICAgICAgIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTKTsKLSAgICBB
ZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywg
ICAgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwg
RFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsICAgICAgICBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUyk7Ci0gICAgQWRkRFhHSVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9U
WVBFTEVTUywgICAgICAgIEdMX0RFUFRIMzJGX1NURU5DSUw4KTsKLSAgICBBZGREWEdJVG9FU0Vu
dHJ5KCZtYXAsIERYR0lfRk9STUFUX1IzMl9GTE9BVF9YOFgyNF9UWVBFTEVTUywgR0xfREVQVEgz
MkZfU1RFTkNJTDgpOwotICAgIEFkZERYR0lUb0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfRDMy
X0ZMT0FUX1M4WDI0X1VJTlQsICAgICBHTF9ERVBUSDMyRl9TVEVOQ0lMOCk7Ci0gICAgQWRkRFhH
SVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MsICAgICAgICAgICAgIEdM
X0RFUFRIX0NPTVBPTkVOVDMyRik7Ci0gICAgQWRkRFhHSVRvRVNFbnRyeSgmbWFwLCBEWEdJX0ZP
Uk1BVF9EMzJfRkxPQVQsICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDMyRik7Ci0K
LSAgICBBZGREWEdJVG9FU0VudHJ5KCZtYXAsIERYR0lfRk9STUFUX0JDMV9VTk9STSwgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwotICAgIEFkZERYR0lU
b0VTRW50cnkoJm1hcCwgRFhHSV9GT1JNQVRfQkMyX1VOT1JNLCAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFKTsKLSAgICBBZGREWEdJVG9FU0VudHJ5KCZt
YXAsIERYR0lfRk9STUFUX0JDM19VTk9STSwgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUNV9BTkdMRSk7Ci0KLSAgICByZXR1cm4gbWFwOwotfQotCiBzdHJ1Y3QgRDNE
MTFGYXN0Q29weUZvcm1hdAogewogICAgIEdMZW51bSBkZXN0Rm9ybWF0OwpAQCAtMTYxLDYgKzgz
LDcgQEAKIHsKICAgICBDb2xvckZvcm1hdEluZm9NYXAgbWFwOwogCisgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgogICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERYR0kgZm9ybWF0
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgUiB8IEcgfCBCIHwgQSB8IFMgfAogICAgIEluc2Vy
dERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfQThfVU5PUk0sICAgICAgICAg
ICAgICAgICAgMCwgIDAsICAwLCAgOCwgIDApOwogICAgIEluc2VydERYR0lDb2xvckZvcm1hdElu
Zm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhfVU5PUk0sICAgICAgICAgICAgICAgICAgOCwgIDAsICAw
LCAgMCwgIDApOwpAQCAtMTY4LDEwICs5MSwxNiBAQAogICAgIEluc2VydERYR0lDb2xvckZvcm1h
dEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgICAgICAgOCwgIDgs
ICA4LCAgOCwgIDApOwogICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwgICAgICAgOCwgIDgsICA4LCAgOCwgIDApOwogICAg
IEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwgIDApOworICAgIEluc2VydERYR0lDb2xvckZv
cm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLCAgICAgICAgICAgICAgICAxNiwg
IDAsICAwLCAgMCwgIDApOworICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhH
SV9GT1JNQVRfUjE2RzE2X1VOT1JNLCAgICAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgIDApOwor
ICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VOT1JNLCAgICAgICAxNiwgMTYsIDE2LCAxNiwgIDApOwogCiAgICAgSW5zZXJ0RFhHSUNv
bG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SOF9TTk9STSwgICAgICAgICAgICAgICAg
ICA4LCAgMCwgIDAsICAwLCAgMCk7CiAgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFw
LCBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLCAgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAg
MCk7CiAgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9TTk9STSwgICAgICAgICAgICA4LCAgOCwgIDgsICA4LCAgMCk7CisgICAgSW5zZXJ0RFhH
SUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfU05PUk0sICAgICAgICAgICAg
ICAgIDE2LCAgMCwgIDAsICAwLCAgMCk7CisgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygm
bWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sICAgICAgICAgICAgIDE2LCAxNiwgIDAsICAw
LCAgMCk7CisgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfU05PUk0sICAgICAgIDE2LCAxNiwgMTYsIDE2LCAgMCk7CiAKICAgICBJbnNl
cnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX1I4X1VJTlQsICAgICAgICAg
ICAgICAgICAgIDgsICAwLCAgMCwgIDAsICAwKTsKICAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJ
bmZvKCZtYXAsIERYR0lfRk9STUFUX1IxNl9VSU5ULCAgICAgICAgICAgICAgICAgMTYsICAwLCAg
MCwgIDAsICAwKTsKQEAgLTE5NSw2ICsxMjQsNyBAQAogICAgIEluc2VydERYR0lDb2xvckZvcm1h
dEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgICAgICAxNiwgMTYs
IDE2LCAxNiwgIDApOwogICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsICAgICAgICAzMiwgMzIsIDMyLCAzMiwgIDApOwogCisg
ICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBB
Ml9UWVBFTEVTUywgICAgIDEwLCAxMCwgMTAsICAyLCAgMCk7CiAgICAgSW5zZXJ0RFhHSUNvbG9y
Rm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwgICAgICAgIDEw
LCAxMCwgMTAsICAyLCAgMCk7CiAgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBE
WEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULCAgICAgICAgIDEwLCAxMCwgMTAsICAyLCAgMCk7
CiAKQEAgLTIxMCwyOCArMTQwLDQ3IEBACiAgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygm
bWFwLCBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAsICAgICAgICA5LCAgOSwgIDksICAw
LCAgNSk7CiAgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9S
MTFHMTFCMTBfRkxPQVQsICAgICAgICAgIDExLCAxMSwgMTAsICAwLCAgMCk7CiAKKyAgICBJbnNl
cnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwgICAg
ICAgICAgICAgIDUsICA2LCAgNSwgIDAsICAwKTsKKyAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJ
bmZvKCZtYXAsIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLCAgICAgICAgICAgIDQsICA0LCAg
NCwgIDQsICAwKTsKKyAgICBJbnNlcnREWEdJQ29sb3JGb3JtYXRJbmZvKCZtYXAsIERYR0lfRk9S
TUFUX0I1RzVSNUExX1VOT1JNLCAgICAgICAgICAgIDUsICA1LCAgNSwgIDEsICAwKTsKKworICAg
IEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhfVFlQRUxFU1Ms
ICAgICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgIDApOworICAgIEluc2VydERYR0lDb2xvckZv
cm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTLCAgICAgICAgICAgICAxNiwg
IDAsICAwLCAgMCwgIDApOworICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhH
SV9GT1JNQVRfUjMyX1RZUEVMRVNTLCAgICAgICAgICAgICAzMiwgIDAsICAwLCAgMCwgIDApOwor
ICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9UWVBF
TEVTUywgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgIDApOworICAgIEluc2VydERYR0lDb2xv
ckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2X1RZUEVMRVNTLCAgICAgICAgICAx
NiwgMTYsICAwLCAgMCwgIDApOworICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwg
RFhHSV9GT1JNQVRfUjMyRzMyX1RZUEVMRVNTLCAgICAgICAgICAzMiwgMzIsICAwLCAgMCwgIDAp
OworICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyX1RZUEVMRVNTLCAgICAgICAzMiwgMzIsIDMyLCAgMCwgIDApOworICAgIEluc2VydERYR0lD
b2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVFlQRUxFU1MsICAgICAg
ICAgOCwgIDgsICA4LCAgOCwgIDApOworICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1h
cCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1RZUEVMRVNTLCAgICAxNiwgMTYsIDE2LCAxNiwg
IDApOworICAgIEluc2VydERYR0lDb2xvckZvcm1hdEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX1RZUEVMRVNTLCAgICAzMiwgMzIsIDMyLCAzMiwgIDApOworCisgICAgSW5zZXJ0
RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywgICAg
ICAgICAgIDI0LCAgOCwgIDAsICAwLCAgMCk7CisgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5m
bygmbWFwLCBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsICAgIDI0LCAgMCwgIDAs
ICAwLCAgMCk7CisgICAgSW5zZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1B
VF9SMzJHOFgyNF9UWVBFTEVTUywgICAgICAgIDMyLCAgOCwgIDAsICAwLCAgMCk7CisgICAgSW5z
ZXJ0RFhHSUNvbG9yRm9ybWF0SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRf
VFlQRUxFU1MsIDMyLCAgMCwgIDAsICAwLCAgMCk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisK
ICAgICByZXR1cm4gbWFwOwogfQogCiBzdHJ1Y3QgRFhHSURlcHRoU3RlbmNpbEluZm8KIHsKICAg
ICB1bnNpZ25lZCBpbnQgZGVwdGhCaXRzOwotICAgIHVuc2lnbmVkIGludCBkZXB0aE9mZnNldDsK
ICAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbEJpdHM7Ci0gICAgdW5zaWduZWQgaW50IHN0ZW5jaWxP
ZmZzZXQ7CiB9OwogCiB0eXBlZGVmIHN0ZDo6bWFwPERYR0lfRk9STUFULCBEWEdJRGVwdGhTdGVu
Y2lsSW5mbz4gRGVwdGhTdGVuY2lsSW5mb01hcDsKIHR5cGVkZWYgc3RkOjpwYWlyPERYR0lfRk9S
TUFULCBEWEdJRGVwdGhTdGVuY2lsSW5mbz4gRGVwdGhTdGVuY2lsSW5mb1BhaXI7CiAKLXN0YXRp
YyBpbmxpbmUgdm9pZCBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5mbyhEZXB0aFN0ZW5jaWxJbmZv
TWFwICptYXAsIERYR0lfRk9STUFUIGZvcm1hdCwgdW5zaWduZWQgaW50IGRlcHRoQml0cywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
ZGVwdGhPZmZzZXQsIHVuc2lnbmVkIGludCBzdGVuY2lsQml0cywgdW5zaWduZWQgaW50IHN0ZW5j
aWxPZmZzZXQpCitzdGF0aWMgaW5saW5lIHZvaWQgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8o
RGVwdGhTdGVuY2lsSW5mb01hcCAqbWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGVwdGhCaXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzdGVu
Y2lsQml0cykKIHsKICAgICBEWEdJRGVwdGhTdGVuY2lsSW5mbyBpbmZvOwogICAgIGluZm8uZGVw
dGhCaXRzID0gZGVwdGhCaXRzOwotICAgIGluZm8uZGVwdGhPZmZzZXQgPSBkZXB0aE9mZnNldDsK
ICAgICBpbmZvLnN0ZW5jaWxCaXRzID0gc3RlbmNpbEJpdHM7Ci0gICAgaW5mby5zdGVuY2lsT2Zm
c2V0ID0gc3RlbmNpbE9mZnNldDsKIAogICAgIG1hcC0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGZv
cm1hdCwgaW5mbykpOwogfQpAQCAtMjQwLDQ0ICsxODksMjcgQEAKIHsKICAgICBEZXB0aFN0ZW5j
aWxJbmZvTWFwIG1hcDsKIAotICAgIEluc2VydERYR0lEZXB0aFN0ZW5jaWxJbmZvKCZtYXAsIERY
R0lfRk9STUFUX1IxNl9UWVBFTEVTUywgICAgICAgICAgICAgMTYsIDAsIDAsICAwKTsKLSAgICBJ
bnNlcnREWEdJRGVwdGhTdGVuY2lsSW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sICAg
ICAgICAgICAgICAgIDE2LCAwLCAwLCAgMCk7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbElu
Zm8oJm1hcCwgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLCAgICAgICAgICAgICAgICAxNiwgMCwgMCwg
IDApOworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKKyAgICBJbnNlcnREWEdJRGVwdGhTdGVuY2ls
SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sICAgICAgICAgICAgICAgIDE2LCAwKTsK
KyAgICBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9EMjRfVU5P
Uk1fUzhfVUlOVCwgICAgICAgIDI0LCA4KTsKKyAgICBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5m
bygmbWFwLCBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQsICAgICAgICAgICAgICAgIDMyLCAwKTsKKyAg
ICBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRf
UzhYMjRfVUlOVCwgICAgIDMyLCA4KTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAotICAgIElu
c2VydERYR0lEZXB0aFN0ZW5jaWxJbmZvKCZtYXAsIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNT
LCAgICAgICAgICAgMjQsIDAsIDgsIDI0KTsKLSAgICBJbnNlcnREWEdJRGVwdGhTdGVuY2lsSW5m
bygmbWFwLCBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsICAgIDI0LCAwLCA4LCAy
NCk7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfRDI0
X1VOT1JNX1M4X1VJTlQsICAgICAgICAyNCwgMCwgOCwgMjQpOwotCi0gICAgSW5zZXJ0RFhHSURl
cHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTLCAgICAgICAgICAg
ICAzMiwgMCwgMCwgIDApOwotICAgIEluc2VydERYR0lEZXB0aFN0ZW5jaWxJbmZvKCZtYXAsIERY
R0lfRk9STUFUX1IzMl9GTE9BVCwgICAgICAgICAgICAgICAgMzIsIDAsIDAsICAwKTsKLSAgICBJ
bnNlcnREWEdJRGVwdGhTdGVuY2lsSW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQsICAg
ICAgICAgICAgICAgIDMyLCAwLCAwLCAgMCk7Ci0KLSAgICBJbnNlcnREWEdJRGVwdGhTdGVuY2ls
SW5mbygmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUywgICAgICAgIDMyLCAwLCA4
LCAzMik7Ci0gICAgSW5zZXJ0RFhHSURlcHRoU3RlbmNpbEluZm8oJm1hcCwgRFhHSV9GT1JNQVRf
UjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLCAzMiwgMCwgOCwgMzIpOwotICAgIEluc2VydERYR0lE
ZXB0aFN0ZW5jaWxJbmZvKCZtYXAsIERYR0lfRk9STUFUX0QzMl9GTE9BVF9TOFgyNF9VSU5ULCAg
ICAgMzIsIDAsIDgsIDMyKTsKLQogICAgIHJldHVybiBtYXA7CiB9CiAKIHR5cGVkZWYgc3RkOjpt
YXA8RFhHSV9GT1JNQVQsIERYR0lGb3JtYXQ+IERYR0lGb3JtYXRJbmZvTWFwOwogCiBEWEdJRm9y
bWF0OjpEWEdJRm9ybWF0KCkKLSAgICA6IHBpeGVsQnl0ZXMoMCksCi0gICAgICBibG9ja1dpZHRo
KDApLAotICAgICAgYmxvY2tIZWlnaHQoMCksCi0gICAgICByZWRCaXRzKDApLAorICAgIDogcmVk
Qml0cygwKSwKICAgICAgIGdyZWVuQml0cygwKSwKICAgICAgIGJsdWVCaXRzKDApLAogICAgICAg
YWxwaGFCaXRzKDApLAogICAgICAgc2hhcmVkQml0cygwKSwKICAgICAgIGRlcHRoQml0cygwKSwK
LSAgICAgIGRlcHRoT2Zmc2V0KDApLAogICAgICAgc3RlbmNpbEJpdHMoMCksCi0gICAgICBzdGVu
Y2lsT2Zmc2V0KDApLAotICAgICAgaW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCiAgICAgICBjb21w
b25lbnRUeXBlKEdMX05PTkUpLAotICAgICAgbWlwR2VuZXJhdGlvbkZ1bmN0aW9uKE5VTEwpLAot
ICAgICAgY29sb3JSZWFkRnVuY3Rpb24oTlVMTCksCiAgICAgICBmYXN0Q29weUZ1bmN0aW9ucygp
LAogICAgICAgbmF0aXZlTWlwbWFwU3VwcG9ydChOVUxMKQogewpAQCAtMzAwLDI0ICsyMzIsMjMg
QEAKICAgICByZXR1cm4gKGl0ZXIgIT0gZmFzdENvcHlGdW5jdGlvbnMuZW5kKCkpID8gaXRlci0+
c2Vjb25kIDogTlVMTDsKIH0KIAotdm9pZCBBZGREWEdJRm9ybWF0KERYR0lGb3JtYXRJbmZvTWFw
ICptYXAsIERYR0lfRk9STUFUIGR4Z2lGb3JtYXQsIEdMdWludCBwaXhlbEJpdHMsIEdMdWludCBi
bG9ja1dpZHRoLCBHTHVpbnQgYmxvY2tIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgR0xlbnVt
IGNvbXBvbmVudFR5cGUsIE1pcEdlbmVyYXRpb25GdW5jdGlvbiBtaXBGdW5jLCBDb2xvclJlYWRG
dW5jdGlvbiByZWFkRnVuYywgTmF0aXZlTWlwbWFwR2VuZXJhdGlvblN1cHBvcnRGdW5jdGlvbiBu
YXRpdmVNaXBtYXBTdXBwb3J0KQordm9pZCBBZGREWEdJRm9ybWF0KERYR0lGb3JtYXRJbmZvTWFw
ICptYXAsCisgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKKyAgICAgICAgICAgICAgICAgICBO
YXRpdmVNaXBtYXBHZW5lcmF0aW9uU3VwcG9ydEZ1bmN0aW9uIG5hdGl2ZU1pcG1hcFN1cHBvcnQp
CiB7CiAgICAgRFhHSUZvcm1hdCBpbmZvOwotICAgIGluZm8ucGl4ZWxCeXRlcyA9IHBpeGVsQml0
cyAvIDg7Ci0gICAgaW5mby5ibG9ja1dpZHRoID0gYmxvY2tXaWR0aDsKLSAgICBpbmZvLmJsb2Nr
SGVpZ2h0ID0gYmxvY2tIZWlnaHQ7CiAKICAgICBzdGF0aWMgY29uc3QgQ29sb3JGb3JtYXRJbmZv
TWFwIGNvbG9ySW5mb01hcCA9IEJ1aWxkQ29sb3JGb3JtYXRJbmZvTWFwKCk7CiAgICAgQ29sb3JG
b3JtYXRJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBjb2xvckluZm9JdGVyID0gY29sb3JJbmZvTWFw
LmZpbmQoZHhnaUZvcm1hdCk7CiAgICAgaWYgKGNvbG9ySW5mb0l0ZXIgIT0gY29sb3JJbmZvTWFw
LmVuZCgpKQogICAgIHsKICAgICAgICAgY29uc3QgRFhHSUNvbG9yRm9ybWF0SW5mbyAmY29sb3JJ
bmZvID0gY29sb3JJbmZvSXRlci0+c2Vjb25kOwotICAgICAgICBpbmZvLnJlZEJpdHMgPSBjb2xv
ckluZm8ucmVkQml0czsKLSAgICAgICAgaW5mby5ncmVlbkJpdHMgPSBjb2xvckluZm8uZ3JlZW5C
aXRzOwotICAgICAgICBpbmZvLmJsdWVCaXRzID0gY29sb3JJbmZvLmJsdWVCaXRzOwotICAgICAg
ICBpbmZvLmFscGhhQml0cyA9IGNvbG9ySW5mby5hbHBoYUJpdHM7Ci0gICAgICAgIGluZm8uc2hh
cmVkQml0cyA9IGNvbG9ySW5mby5zaGFyZWRCaXRzOworICAgICAgICBpbmZvLnJlZEJpdHMgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbG9ySW5mby5yZWRC
aXRzKTsKKyAgICAgICAgaW5mby5ncmVlbkJpdHMgICAgICAgICAgICAgICAgICAgICAgID0gc3Rh
dGljX2Nhc3Q8R0x1aW50Pihjb2xvckluZm8uZ3JlZW5CaXRzKTsKKyAgICAgICAgaW5mby5ibHVl
Qml0cyAgICAgICAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1aW50Pihjb2xvcklu
Zm8uYmx1ZUJpdHMpOworICAgICAgICBpbmZvLmFscGhhQml0cyAgICAgICAgICAgICAgICAgICAg
ICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvbG9ySW5mby5hbHBoYUJpdHMpOworICAgICAgICBp
bmZvLnNoYXJlZEJpdHMgICAgICAgICAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+
KGNvbG9ySW5mby5zaGFyZWRCaXRzKTsKICAgICB9CiAKICAgICBzdGF0aWMgY29uc3QgRGVwdGhT
dGVuY2lsSW5mb01hcCBkc0luZm9NYXAgPSBCdWlsZERlcHRoU3RlbmNpbEluZm9NYXAoKTsKQEAg
LTMyNiwyMCArMjU3LDExIEBACiAgICAgewogICAgICAgICBjb25zdCBEWEdJRGVwdGhTdGVuY2ls
SW5mbyAmZHNJbmZvID0gZHNJbmZvSXRlci0+c2Vjb25kOwogICAgICAgICBpbmZvLmRlcHRoQml0
cyA9IGRzSW5mby5kZXB0aEJpdHM7Ci0gICAgICAgIGluZm8uZGVwdGhPZmZzZXQgPSBkc0luZm8u
ZGVwdGhPZmZzZXQ7CiAgICAgICAgIGluZm8uc3RlbmNpbEJpdHMgPSBkc0luZm8uc3RlbmNpbEJp
dHM7Ci0gICAgICAgIGluZm8uc3RlbmNpbE9mZnNldCA9IGRzSW5mby5zdGVuY2lsT2Zmc2V0Owog
ICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBEWEdJVG9FU0Zvcm1hdE1hcCBkeGdpVG9FU01hcCA9
IEJ1aWxkRFhHSVRvRVNGb3JtYXRNYXAoKTsKLSAgICBEWEdJVG9FU0Zvcm1hdE1hcDo6Y29uc3Rf
aXRlcmF0b3IgZHhnaVRvRVNJdGVyID0gZHhnaVRvRVNNYXAuZmluZChkeGdpRm9ybWF0KTsKLSAg
ICBpbmZvLmludGVybmFsRm9ybWF0ID0gKGR4Z2lUb0VTSXRlciAhPSBkeGdpVG9FU01hcC5lbmQo
KSkgPyBkeGdpVG9FU0l0ZXItPnNlY29uZCA6IEdMX05PTkU7Ci0KICAgICBpbmZvLmNvbXBvbmVu
dFR5cGUgPSBjb21wb25lbnRUeXBlOwogCi0gICAgaW5mby5taXBHZW5lcmF0aW9uRnVuY3Rpb24g
PSBtaXBGdW5jOwotICAgIGluZm8uY29sb3JSZWFkRnVuY3Rpb24gPSByZWFkRnVuYzsKLQogICAg
IHN0YXRpYyBjb25zdCBEM0QxMUZhc3RDb3B5TWFwIGZhc3RDb3B5TWFwID0gQnVpbGRGYXN0Q29w
eU1hcCgpOwogICAgIHN0ZDo6cGFpcjxEM0QxMUZhc3RDb3B5TWFwOjpjb25zdF9pdGVyYXRvciwg
RDNEMTFGYXN0Q29weU1hcDo6Y29uc3RfaXRlcmF0b3I+IGZhc3RDb3B5SXRlciA9IGZhc3RDb3B5
TWFwLmVxdWFsX3JhbmdlKGR4Z2lGb3JtYXQpOwogICAgIGZvciAoRDNEMTFGYXN0Q29weU1hcDo6
Y29uc3RfaXRlcmF0b3IgaSA9IGZhc3RDb3B5SXRlci5maXJzdDsgaSAhPSBmYXN0Q29weUl0ZXIu
c2Vjb25kOyBpKyspCkBAIC0zNTIsODYgKzI3NCwxMDUgQEAKICAgICBtYXAtPmluc2VydChzdGQ6
Om1ha2VfcGFpcihkeGdpRm9ybWF0LCBpbmZvKSk7CiB9CiAKLS8vIEEgbWFwIHRvIGRldGVybWlu
ZSB0aGUgcGl4ZWwgc2l6ZSBhbmQgbWlwbWFwIGdlbmVyYXRpb24gZnVuY3Rpb24gb2YgYSBnaXZl
biBEWEdJIGZvcm1hdAorLy8gQSBtYXAgdG8gZGV0ZXJtaW5lIHRoZSBjb2xvciByZWFkIGZ1bmN0
aW9uIGFuZCBtaXBtYXAgZ2VuZXJhdGlvbiBmdW5jdGlvbiBvZiBhIGdpdmVuIERYR0kgZm9ybWF0
CiBzdGF0aWMgRFhHSUZvcm1hdEluZm9NYXAgQnVpbGREWEdJRm9ybWF0SW5mb01hcCgpCiB7CiAg
ICAgRFhHSUZvcm1hdEluZm9NYXAgbWFwOwogCi0gICAgLy8gICAgICAgICAgICAgICAgfCBEWEdJ
IGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgfFMgICB8VyB8SCB8Q29tcG9uZW50IFR5
cGUgICAgICAgICB8IE1pcCBnZW5lcmF0aW9uIGZ1bmN0aW9uICAgfCBDb2xvciByZWFkIGZ1bmN0
aW9uICAgICAgICAgICAgICAgfCBOYXRpdmUgbWlwbWFwIGZ1bmN0aW9uCi0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgICAgICAgICAgIDAsICAgMCwg
MCwgR0xfTk9ORSwgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIE5V
TEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKKyAgICAvLyAgICAgICAgICAgICAgICB8IERYR0kgZm9ybWF0ICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgQ29tcG9uZW50IFR5cGUgICAgICAgIHwgQ29sb3IgcmVh
ZCBmdW5jdGlvbiAgICAgICAgICAgICAgfCBOYXRpdmUgbWlwbWFwIGZ1bmN0aW9uCisgICAgQWRk
RFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgICAgICAgICAgIEdM
X05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKIAotICAgIEFkZERYR0lGb3Jt
YXQoJm1hcCwgRFhHSV9GT1JNQVRfQThfVU5PUk0sICAgICAgICAgICAgICAgICA4LCAgIDEsIDEs
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIEdlbmVyYXRlTWlwPEE4PiwgICAgICAgICAgICBSZWFk
Q29sb3I8QTgsIEdMZmxvYXQ+LCAgICAgICAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9G
RUFUVVJFX0xFVkVMXzEwXzA+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1I4X1VOT1JNLCAgICAgICAgICAgICAgICAgOCwgICAxLCAxLCBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCBHZW5lcmF0ZU1pcDxSOD4sICAgICAgICAgICAgUmVhZENvbG9yPFI4LCBHTGZsb2F0Piwg
ICAgICAgICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7
Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLCAgICAgICAg
ICAgICAgIDE2LCAgMSwgMSwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgR2VuZXJhdGVNaXA8UjhH
OD4sICAgICAgICAgIFJlYWRDb2xvcjxSOEc4LCBHTGZsb2F0PiwgICAgICAgICAgUmVxdWlyZXNG
ZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQo
Jm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgICAgICAzMiwgIDEsIDEsIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwgICAgICBSZWFkQ29s
b3I8UjhHOEI4QTgsIEdMZmxvYXQ+LCAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFU
VVJFX0xFVkVMXzlfMT4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk1fU1JHQiwgICAgICAzMiwgIDEsIDEsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
IEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+
LCAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlfMT4pOwotICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sICAgICAgICAg
ICAzMiwgIDEsIDEsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIEdlbmVyYXRlTWlwPEI4RzhSOEE4
PiwgICAgICBSZWFkQ29sb3I8QjhHOFI4QTgsIEdMZmxvYXQ+LCAgICAgIFJlcXVpcmVzRmVhdHVy
ZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlfMT4pOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfQThfVU5PUk0sICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7CisgICAg
QWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9VTk9STSwgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJF
X0xFVkVMXzEwXzA+KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNl9V
Tk9STSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTmV2ZXJTdXBwb3J0
ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxE
M0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZP
Uk1BVF9SMTZHMTZfVU5PUk0sICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLCAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZXNGZWF0
dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfOV8xPik7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFw
LCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLCAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzlfMT4pOworICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVS
RV9MRVZFTF85XzE+KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9VTk9STSwgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTmV2ZXJTdXBwb3J0
ZWQpOwogCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9TTk9STSwgICAg
ICAgICAgICAgICAgIDgsICAgMSwgMSwgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgR2VuZXJhdGVN
aXA8UjhTPiwgICAgICAgICAgIFJlYWRDb2xvcjxSOFMsIEdMZmxvYXQ+ICAgICAgLCAgICAgUmVx
dWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERYR0lG
b3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwgICAgICAgICAgICAgICAxNiwgIDEs
IDEsIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIEdlbmVyYXRlTWlwPFI4RzhTPiwgICAgICAgICBS
ZWFkQ29sb3I8UjhHOFMsIEdMZmxvYXQ+ICAgICwgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzA+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1NOT1JNLCAgICAgICAgICAgMzIsICAxLCAxLCBHTF9TSUdORURfTk9STUFM
SVpFRCwgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOFM+LCAgICAgUmVhZENvbG9yPFI4RzhCOEE4Uywg
R0xmbG9hdD4sICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
Pik7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9TTk9STSwgICAgICAg
ICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQz
RF9GRUFUVVJFX0xFVkVMXzEwXzA+KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1IxNl9TTk9STSwgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgTmV2
ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9T
Tk9STSwgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBSZXF1aXJlc0ZlYXR1
cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFw
LCBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJ
WkVELCAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1NOT1JNLCAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgUmVx
dWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOworICAgIEFkZERYR0lG
b3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCAgICAgICBHTF9TSUdO
RURfTk9STUFMSVpFRCwgICBOZXZlclN1cHBvcnRlZCk7CiAKLSAgICBBZGREWEdJRm9ybWF0KCZt
YXAsIERYR0lfRk9STUFUX1I4X1VJTlQsICAgICAgICAgICAgICAgICAgOCwgICAxLCAxLCBHTF9V
TlNJR05FRF9JTlQsICAgICAgICBHZW5lcmF0ZU1pcDxSOD4sICAgICAgICAgICAgUmVhZENvbG9y
PFI4LCBHTHVpbnQ+LCAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwgICAgICAgICAgICAgICAgIDE2LCAgMSwg
MSwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgR2VuZXJhdGVNaXA8UjE2PiwgICAgICAgICAgIFJl
YWRDb2xvcjxSMTYsIEdMdWludD4sICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFk
ZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyX1VJTlQsICAgICAgICAgICAgICAgICAz
MiwgIDEsIDEsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIEdlbmVyYXRlTWlwPFIzMj4sICAgICAg
ICAgICBSZWFkQ29sb3I8UjMyLCBHTHVpbnQ+LCAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsK
LSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfVUlOVCwgICAgICAgICAg
ICAgICAgMTYsICAxLCAxLCBHTF9VTlNJR05FRF9JTlQsICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4
PiwgICAgICAgICAgUmVhZENvbG9yPFI4RzgsIEdMdWludD4sICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwg
ICAgICAgICAgICAgIDMyLCAgMSwgMSwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgR2VuZXJhdGVN
aXA8UjE2RzE2PiwgICAgICAgIFJlYWRDb2xvcjxSMTZHMTYsIEdMdWludD4sICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMy
X1VJTlQsICAgICAgICAgICAgICA2NCwgIDEsIDEsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIEdl
bmVyYXRlTWlwPFIzMkczMj4sICAgICAgICBSZWFkQ29sb3I8UjMyRzMyLCBHTHVpbnQ+LCAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1IzMkczMkIzMl9VSU5ULCAgICAgICAgICAgOTYsICAxLCAxLCBHTF9VTlNJR05FRF9JTlQsICAg
ICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzI+LCAgICAgUmVhZENvbG9yPFIzMkczMkIzMiwgR0x1
aW50PiwgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAgICAgICAgICAgIDMyLCAgMSwgMSwgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LCAgICAgIFJlYWRDb2xvcjxSOEc4QjhB
OCwgR0x1aW50PiwgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1h
cCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICAgICAgICA2NCwgIDEsIDEsIEdMX1VO
U0lHTkVEX0lOVCwgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNj4sICBSZWFkQ29sb3I8
UjE2RzE2QjE2QTE2LCBHTHVpbnQ+LCAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULCAgICAgICAgMTI4LCAxLCAx
LCBHTF9VTlNJR05FRF9JTlQsICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJBMzI+LCAgUmVh
ZENvbG9yPFIzMkczMkIzMkEzMiwgR0x1aW50PiwgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRk
RFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOF9VSU5ULCAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0
KCZtYXAsIERYR0lfRk9STUFUX1IxNl9VSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhH
SV9GT1JNQVRfUjMyX1VJTlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAg
ICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9S
OEc4X1VJTlQsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9VSU5U
LCAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwor
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhH
SUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfVUlOVCwgICAgICAgICAgIEdMX1VO
U0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZt
YXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAgICAgICAgR0xfVU5TSUdORURfSU5U
LCAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBO
ZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfVUlOVCwgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5ldmVyU3VwcG9y
dGVkKTsKIAotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhfU0lOVCwgICAg
ICAgICAgICAgICAgICA4LCAgIDEsIDEsIEdMX0lOVCwgICAgICAgICAgICAgICAgIEdlbmVyYXRl
TWlwPFI4Uz4sICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBHTGludD4sICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNl9T
SU5ULCAgICAgICAgICAgICAgICAgMTYsICAxLCAxLCBHTF9JTlQsICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxSMTZTPiwgICAgICAgICAgUmVhZENvbG9yPFIxNlMsIEdMaW50PiwgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1B
VF9SMzJfU0lOVCwgICAgICAgICAgICAgICAgIDMyLCAgMSwgMSwgR0xfSU5ULCAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjMyUz4sICAgICAgICAgIFJlYWRDb2xvcjxSMzJTLCBHTGludD4s
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhH
SV9GT1JNQVRfUjhHOF9TSU5ULCAgICAgICAgICAgICAgICAxNiwgIDEsIDEsIEdMX0lOVCwgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhTPiwgICAgICAgICBSZWFkQ29sb3I8UjhHOFMs
IEdMaW50PiwgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZt
YXAsIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULCAgICAgICAgICAgICAgMzIsICAxLCAxLCBHTF9J
TlQsICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZTPiwgICAgICAgUmVhZENvbG9y
PFIxNkcxNlMsIEdMaW50PiwgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgICAgICAgICAgICAgIDY0LCAgMSwg
MSwgR0xfSU5ULCAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyUz4sICAgICAgIFJl
YWRDb2xvcjxSMzJHMzJTLCBHTGludD4sICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFk
ZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQsICAgICAgICAgICA5
NiwgIDEsIDEsIEdMX0lOVCwgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMlM+
LCAgICBSZWFkQ29sb3I8UjMyRzMyQjMyUywgR0xpbnQ+LCAgICAgIE5ldmVyU3VwcG9ydGVkKTsK
LSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICAgICAg
ICAgICAgMzIsICAxLCAxLCBHTF9JTlQsICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4
QjhBOFM+LCAgICAgUmVhZENvbG9yPFI4RzhCOEE4UywgR0xpbnQ+LCAgICAgICBOZXZlclN1cHBv
cnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
U0lOVCwgICAgICAgIDY0LCAgMSwgMSwgR0xfSU5ULCAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8UjE2RzE2QjE2QTE2Uz4sIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTZTLCBHTGludD4sICAgTmV2
ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1NJTlQsICAgICAgICAxMjgsIDEsIDEsIEdMX0lOVCwgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFIzMkczMkIzMkEzMlM+LCBSZWFkQ29sb3I8UjMyRzMyQjMyQTMyUywgR0xpbnQ+
LCAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1I4X1NJTlQsICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1NJTlQs
ICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7
CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwgICAgICAgICAg
ICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRE
WEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwgICAgICAgICAgICAgICAgR0xf
SU5ULCAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQo
Jm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAgICAgICBHTF9JTlQsICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJfU0lOVCwgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1Iz
MkczMkIzMl9TSU5ULCAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lO
VCwgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Cisg
ICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgICAg
ICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJ
Rm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAgICAgICAgR0xfSU5U
LCAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwogCi0gICAgQWRkRFhHSUZvcm1hdCgm
bWFwLCBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwgICAgICAgIDMyLCAgMSwgMSwgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwgR2VuZXJhdGVNaXA8UjEwRzEwQjEwQTI+LCAgIFJlYWRDb2xv
cjxSMTBHMTBCMTBBMiwgR0xmbG9hdD4sICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRV
UkVfTEVWRUxfMTBfMD4pOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjEw
RzEwQjEwQTJfVUlOVCwgICAgICAgICAzMiwgIDEsIDEsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAg
IEdlbmVyYXRlTWlwPFIxMEcxMEIxMEEyPiwgICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdMdWlu
dD4sICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1IxMEcxMEIxMEEyX1RZUEVMRVNTLCAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjEwRzEw
QjEwQTJfVU5PUk0sICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1
cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFw
LCBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULCAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKIAotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9G
T1JNQVRfUjE2X0ZMT0FULCAgICAgICAgICAgICAgICAxNiwgIDEsIDEsIEdMX0ZMT0FULCAgICAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkY+LCAgICAgICAgICBSZWFkQ29sb3I8UjE2RiwgR0xm
bG9hdD4sICAgICAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA+KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwg
ICAgICAgICAgICAgMzIsICAxLCAxLCBHTF9GTE9BVCwgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSMTZHMTZGPiwgICAgICAgUmVhZENvbG9yPFIxNkcxNkYsIEdMZmxvYXQ+LCAgICAgICBSZXF1
aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzI+KTsKLSAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwgICAgICAgNjQsICAxLCAx
LCBHTF9GTE9BVCwgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZGPiwgUmVh
ZENvbG9yPFIxNkcxNkIxNkExNkYsIEdMZmxvYXQ+LCBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0Rf
RkVBVFVSRV9MRVZFTF85XzI+KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFU
X1IxNl9GTE9BVCwgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWly
ZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMD4pOworICAgIEFkZERYR0lGb3Jt
YXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULCAgICAgICAgICAgICBHTF9GTE9BVCwg
ICAgICAgICAgICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzI+
KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCwgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNE
X0ZFQVRVUkVfTEVWRUxfOV8yPik7CiAKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1IzMl9GTE9BVCwgICAgICAgICAgICAgICAgMzIsICAxLCAxLCBHTF9GTE9BVCwgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSMzJGPiwgICAgICAgICAgUmVhZENvbG9yPFIzMkYsIEdMZmxv
YXQ+LCAgICAgICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzI+
KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAg
ICAgICAgICAgNjQsICAxLCAxLCBHTF9GTE9BVCwgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MzJHMzJGPiwgICAgICAgUmVhZENvbG9yPFIzMkczMkYsIEdMZmxvYXQ+LCAgICAgICBSZXF1aXJl
c0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF8xMF8wPik7Ci0gICAgQWRkRFhHSUZvcm1h
dCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICAgICAgICAgIDk2LCAgMSwgMSwg
R0xfRkxPQVQsICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERY
R0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAgICAgICAxMjgs
IDEsIDEsIEdMX0ZMT0FULCAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMkEzMkY+
LCBSZWFkQ29sb3I8UjMyRzMyQjMyQTMyRiwgR0xmbG9hdD4sIFJlcXVpcmVzRmVhdHVyZUxldmVs
PEQzRF9GRUFUVVJFX0xFVkVMXzlfMz4pOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9G
T1JNQVRfUjMyX0ZMT0FULCAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBS
ZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVSRV9MRVZFTF85XzI+KTsKKyAgICBBZGREWEdJ
Rm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICAgICAgR0xfRkxP
QVQsICAgICAgICAgICAgICAgUmVxdWlyZXNGZWF0dXJlTGV2ZWw8RDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMD4pOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZM
T0FULCAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Cisg
ICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICAg
ICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFU
VVJFX0xFVkVMXzlfMz4pOwogCi0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9S
OUc5QjlFNV9TSEFSRURFWFAsICAgICAgIDMyLCAgMSwgMSwgR0xfRkxPQVQsICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjlHOUI5RTU+LCAgICAgIFJlYWRDb2xvcjxSOUc5QjlFNSwgR0xmbG9h
dD4sICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9G
T1JNQVRfUjExRzExQjEwX0ZMT0FULCAgICAgICAgICAzMiwgIDEsIDEsIEdMX0ZMT0FULCAgICAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPFIxMUcxMUIxMEY+LCAgICBSZWFkQ29sb3I8UjExRzExQjEw
RiwgR0xmbG9hdD4sICAgIFJlcXVpcmVzRmVhdHVyZUxldmVsPEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzA+KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJF
REVYUCwgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULCAgICAgICAg
ICBHTF9GTE9BVCwgICAgICAgICAgICAgICBSZXF1aXJlc0ZlYXR1cmVMZXZlbDxEM0RfRkVBVFVS
RV9MRVZFTF8xMF8wPik7CiAKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1Ix
Nl9UWVBFTEVTUywgICAgICAgICAgICAgMTYsICAxLCAxLCBHTF9OT05FLCAgICAgICAgICAgICAg
ICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZP
Uk1BVF9SMTZfVU5PUk0sICAgICAgICAgICAgICAgIDE2LCAgMSwgMSwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfRDE2X1VOT1JNLCAgICAgICAgICAgICAgICAxNiwgIDEsIDEsIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0
KCZtYXAsIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLCAgICAgICAgICAgMzIsICAxLCAxLCBH
TF9OT05FLCAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhH
SUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQRUxFU1MsICAgIDMyLCAg
MSwgMSwgR0xfTk9ORSwgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAg
IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsICAgICAg
ICAzMiwgIDEsIDEsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIE5VTEwsICAgICAgICAgICAgICAg
ICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVk
KTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNT
LCAgICAgICAgNjQsICAxLCAxLCBHTF9OT05FLCAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRf
WDhYMjRfVFlQRUxFU1MsIDY0LCAgMSwgMSwgR0xfTk9ORSwgICAgICAgICAgICAgICAgTlVMTCwg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfRDMy
X0ZMT0FUX1M4WDI0X1VJTlQsICAgICA2NCwgIDEsIDEsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAg
IE5VTEwsICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX1IzMl9UWVBFTEVTUywgICAgICAgICAgICAgMzIsICAxLCAxLCBHTF9OT05FLCAgICAgICAg
ICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBE
WEdJX0ZPUk1BVF9EMzJfRkxPQVQsICAgICAgICAgICAgICAgIDMyLCAgMSwgMSwgR0xfRkxPQVQs
ICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQo
Jm1hcCwgRFhHSV9GT1JNQVRfUjhfVFlQRUxFU1MsICAgICAgICAgICAgICBHTF9OT05FLCAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJ
X0ZPUk1BVF9SMTZfVFlQRUxFU1MsICAgICAgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1Iz
Ml9UWVBFTEVTUywgICAgICAgICAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVT
UywgICAgICAgICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Cisg
ICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQRUxFU1MsICAgICAg
ICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJ
Rm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkczMl9UWVBFTEVTUywgICAgICAgICAgR0xfTk9O
RSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1h
cCwgRFhHSV9GT1JNQVRfUjhHOF9UWVBFTEVTUywgICAgICAgICAgICBHTF9OT05FLCAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZP
Uk1BVF9SMTZHMTZfVFlQRUxFU1MsICAgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMkcz
Ml9UWVBFTEVTUywgICAgICAgICAgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVM
RVNTLCAgICAgICBHTF9OT05FLCAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAg
QWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBFTEVTUywgICAgICAg
IEdMX05PTkUsICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9y
bWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9UWVBFTEVTUywgICAgR0xfTk9ORSwg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1RZUEVMRVNTLCAgICBHTF9OT05FLCAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCk7CiAKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX0JDMV9VTk9STSwgICAgICAgICAgICAgICAgNjQsICA0LCA0LCBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBE
WEdJX0ZPUk1BVF9CQzJfVU5PUk0sICAgICAgICAgICAgICAgIDEyOCwgNCwgNCwgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQo
Jm1hcCwgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLCAgICAgICAgICAgICAgICAxMjgsIDQsIDQsIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJ
Rm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLCAgICAgICAgICAgR0xfTk9O
RSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1h
cCwgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLCAgICBHTF9OT05FLCAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZP
Uk1BVF9SMzJHOFgyNF9UWVBFTEVTUywgICAgICAgIEdMX05PTkUsICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IzMl9G
TE9BVF9YOFgyNF9UWVBFTEVTUywgR0xfTk9ORSwgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQpOwogCi0gICAgLy8gVXNlZnVsIGZvcm1hdHMgZm9yIHZlcnRleCBidWZmZXJzCi0gICAgQWRk
RFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sICAgICAgICAgICAgICAgIDE2
LCAgMSwgMSwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgTlVMTCwgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLCAgICAgICAgICAg
ICAgICAxNiwgIDEsIDEsIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwg
ICAgICAgICAgICAgMzIsICAxLCAxLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOVUxMLCAgICAg
ICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCk7Ci0gICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9SMTZHMTZf
U05PUk0sICAgICAgICAgICAgIDMyLCAgMSwgMSwgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgTlVM
TCwgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1VOT1JNLCAgICAgICA2NCwgIDEsIDEsIEdMX1VOU0lHTkVEX05PUk1BTEla
RUQsIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwgICAgICAgNjQsICAxLCAxLCBHTF9TSUdORURfTk9S
TUFMSVpFRCwgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFw
LCBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lfRk9S
TUFUX0QyNF9VTk9STV9TOF9VSU5ULCAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfRDMyX0ZM
T0FUX1M4WDI0X1VJTlQsICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBOZXZlclN1cHBvcnRl
ZCk7CisgICAgQWRkRFhHSUZvcm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQsICAgICAg
ICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKIAorICAg
IEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLCAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkRFhHSUZv
cm1hdCgmbWFwLCBEWEdJX0ZPUk1BVF9CQzJfVU5PUk0sICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAs
IERYR0lfRk9STUFUX0JDM19VTk9STSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgTmV2ZXJTdXBwb3J0ZWQpOworCisgICAgLy8gQjVHNlI1IGluIEQzRDExIGlzIHRyZWF0
ZWQgdGhlIHNhbWUgYXMgUjVHNkI1IGluIEQzRDksIHNvIHJldXNlIHRoZSBSNUc2QjUgZnVuY3Rp
b25zIHVzZWQgYnkgdGhlIEQzRDkgcmVuZGVyZXIuCisgICAgLy8gVGhlIHNhbWUgYXBwbGllcyB0
byBCNEc0UjRBNCBhbmQgQjVHNVI1QTEgd2l0aCBBNFI0RzRCNCBhbmQgQTFSNUc1QjUgcmVzcGVj
dGl2ZWx5LgorICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JN
LCAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlc0ZlYXR1cmVMZXZl
bDxEM0RfRkVBVFVSRV9MRVZFTF85XzE+KTsKKyAgICBBZGREWEdJRm9ybWF0KCZtYXAsIERYR0lf
Rk9STUFUX0I0RzRSNEE0X1VOT1JNLCAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
TmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZERYR0lGb3JtYXQoJm1hcCwgRFhHSV9GT1JNQVRfQjVH
NVI1QTFfVU5PUk0sICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBOZXZlclN1cHBv
cnRlZCk7CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKICAgICByZXR1cm4gbWFwOwogfQogCkBA
IC00NTAsNjE0ICszOTEsMTc2IEBACiAgICAgfQogfQogCi1zdHJ1Y3QgU3dpenpsZVNpemVUeXBl
CitEWEdJRm9ybWF0U2l6ZTo6RFhHSUZvcm1hdFNpemUoR0x1aW50IHBpeGVsQml0cywgR0x1aW50
IGJsb2NrV2lkdGgsIEdMdWludCBibG9ja0hlaWdodCkKKyAgICA6IHBpeGVsQnl0ZXMocGl4ZWxC
aXRzIC8gOCksIGJsb2NrV2lkdGgoYmxvY2tXaWR0aCksIGJsb2NrSGVpZ2h0KGJsb2NrSGVpZ2h0
KQogewotICAgIHNpemVfdCBtYXhDb21wb25lbnRTaXplOwotICAgIEdMZW51bSBjb21wb25lbnRU
eXBlOwotCi0gICAgU3dpenpsZVNpemVUeXBlKCkKLSAgICAgICAgOiBtYXhDb21wb25lbnRTaXpl
KDApLCBjb21wb25lbnRUeXBlKEdMX05PTkUpCi0gICAgeyB9Ci0KLSAgICBTd2l6emxlU2l6ZVR5
cGUoc2l6ZV90IG1heENvbXBvbmVudFNpemUsIEdMZW51bSBjb21wb25lbnRUeXBlKQotICAgICAg
ICA6IG1heENvbXBvbmVudFNpemUobWF4Q29tcG9uZW50U2l6ZSksIGNvbXBvbmVudFR5cGUoY29t
cG9uZW50VHlwZSkKLSAgICB7IH0KLQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFN3aXp6bGVT
aXplVHlwZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG1heENvbXBvbmVu
dFNpemUgIT0gb3RoZXIubWF4Q29tcG9uZW50U2l6ZSkgPyAobWF4Q29tcG9uZW50U2l6ZSA8IG90
aGVyLm1heENvbXBvbmVudFNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA6IChjb21wb25lbnRUeXBlIDwgb3RoZXIuY29tcG9u
ZW50VHlwZSk7Ci0gICAgfQotfTsKLQotc3RydWN0IFN3aXp6bGVGb3JtYXRJbmZvCi17Ci0gICAg
RFhHSV9GT1JNQVQgbVRleEZvcm1hdDsKLSAgICBEWEdJX0ZPUk1BVCBtU1JWRm9ybWF0OwotICAg
IERYR0lfRk9STUFUIG1SVFZGb3JtYXQ7Ci0KLSAgICBTd2l6emxlRm9ybWF0SW5mbygpCi0gICAg
ICAgIDogbVRleEZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwgbVNSVkZvcm1hdChEWEdJX0ZP
Uk1BVF9VTktOT1dOKSwgbVJUVkZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKQotICAgIHsgfQot
Ci0gICAgU3dpenpsZUZvcm1hdEluZm8oRFhHSV9GT1JNQVQgdGV4Rm9ybWF0LCBEWEdJX0ZPUk1B
VCBzcnZGb3JtYXQsIERYR0lfRk9STUFUIHJ0dkZvcm1hdCkKLSAgICAgICAgOiBtVGV4Rm9ybWF0
KHRleEZvcm1hdCksIG1TUlZGb3JtYXQoc3J2Rm9ybWF0KSwgbVJUVkZvcm1hdChydHZGb3JtYXQp
Ci0gICAgeyB9Ci19OwotCi10eXBlZGVmIHN0ZDo6bWFwPFN3aXp6bGVTaXplVHlwZSwgU3dpenps
ZUZvcm1hdEluZm8+IFN3aXp6bGVJbmZvTWFwOwotdHlwZWRlZiBzdGQ6OnBhaXI8U3dpenpsZVNp
emVUeXBlLCBTd2l6emxlRm9ybWF0SW5mbz4gU3dpenpsZUluZm9QYWlyOwotCi1zdGF0aWMgU3dp
enpsZUluZm9NYXAgQnVpbGRTd2l6emxlSW5mb01hcCgpCi17Ci0gICAgU3dpenpsZUluZm9NYXAg
bWFwOwotCi0gICAgbWFwLmluc2VydChTd2l6emxlSW5mb1BhaXIoU3dpenpsZVNpemVUeXBlKCA4
LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVEKSwgU3dpenpsZUZvcm1hdEluZm8oRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0sICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNICAgICkpKTsKLSAgICBtYXAuaW5zZXJ0KFN3aXp6bGVJbmZv
UGFpcihTd2l6emxlU2l6ZVR5cGUoMTYsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQpLCBTd2l6emxl
Rm9ybWF0SW5mbyhEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9VTk9STSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNKSkpOwotICAg
IG1hcC5pbnNlcnQoU3dpenpsZUluZm9QYWlyKFN3aXp6bGVTaXplVHlwZSgyNCwgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCksIFN3aXp6bGVGb3JtYXRJbmZvKERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQpKSk7Ci0gICAgbWFwLmluc2VydChTd2l6emxlSW5mb1BhaXIoU3dpenps
ZVNpemVUeXBlKDMyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVEKSwgU3dpenpsZUZvcm1hdEluZm8o
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
RkxPQVQsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCkpKTsKLQotICAgIG1hcC5pbnNl
cnQoU3dpenpsZUluZm9QYWlyKFN3aXp6bGVTaXplVHlwZSggOCwgR0xfU0lHTkVEX05PUk1BTEla
RUQgICksIFN3aXp6bGVGb3JtYXRJbmZvKERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLCAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9S
TSAgICApKSk7Ci0KLSAgICBtYXAuaW5zZXJ0KFN3aXp6bGVJbmZvUGFpcihTd2l6emxlU2l6ZVR5
cGUoMTYsIEdMX0ZMT0FUICAgICAgICAgICAgICApLCBTd2l6emxlRm9ybWF0SW5mbyhEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUKSkpOwotICAgIG1hcC5pbnNlcnQoU3dpenps
ZUluZm9QYWlyKFN3aXp6bGVTaXplVHlwZSgzMiwgR0xfRkxPQVQgICAgICAgICAgICAgICksIFN3
aXp6bGVGb3JtYXRJbmZvKERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX0ZMT0FULCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQpKSk7
Ci0KLSAgICBtYXAuaW5zZXJ0KFN3aXp6bGVJbmZvUGFpcihTd2l6emxlU2l6ZVR5cGUoIDgsIEdM
X1VOU0lHTkVEX0lOVCAgICAgICApLCBTd2l6emxlRm9ybWF0SW5mbyhEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VSU5ULCAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVUlOVCAgICAgKSkpOwotICAgIG1hcC5pbnNlcnQoU3dpenpsZUluZm9QYWly
KFN3aXp6bGVTaXplVHlwZSgxNiwgR0xfVU5TSUdORURfSU5UICAgICAgICksIFN3aXp6bGVGb3Jt
YXRJbmZvKERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULCAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1VJTlQsICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCApKSk7Ci0gICAgbWFw
Lmluc2VydChTd2l6emxlSW5mb1BhaXIoU3dpenpsZVNpemVUeXBlKDMyLCBHTF9VTlNJR05FRF9J
TlQgICAgICAgKSwgU3dpenpsZUZvcm1hdEluZm8oRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJ
TlQsICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5UICkpKTsKLQotICAgIG1hcC5pbnNlcnQoU3dpenpsZUluZm9QYWlyKFN3aXp6bGVT
aXplVHlwZSggOCwgR0xfSU5UICAgICAgICAgICAgICAgICksIFN3aXp6bGVGb3JtYXRJbmZvKERY
R0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UICAgICApKSk7Ci0gICAgbWFwLmluc2VydChT
d2l6emxlSW5mb1BhaXIoU3dpenpsZVNpemVUeXBlKDE2LCBHTF9JTlQgICAgICAgICAgICAgICAg
KSwgU3dpenpsZUZvcm1hdEluZm8oRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5U
ICkpKTsKLSAgICBtYXAuaW5zZXJ0KFN3aXp6bGVJbmZvUGFpcihTd2l6emxlU2l6ZVR5cGUoMzIs
IEdMX0lOVCAgICAgICAgICAgICAgICApLCBTd2l6emxlRm9ybWF0SW5mbyhEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfU0lOVCwgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQgKSkpOwotCi0gICAgcmV0dXJuIG1hcDsKIH0KIAotdHlw
ZWRlZiBzdGQ6OnBhaXI8R0xpbnQsIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uPiBJbnRl
cm5hbEZvcm1hdEluaXRpYWxpemVyUGFpcjsKLXR5cGVkZWYgc3RkOjptYXA8R0xpbnQsIEluaXRp
YWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uPiBJbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyTWFwOwot
Ci1zdGF0aWMgSW50ZXJuYWxGb3JtYXRJbml0aWFsaXplck1hcCBCdWlsZEludGVybmFsRm9ybWF0
SW5pdGlhbGl6ZXJNYXAoKQorY29uc3QgRFhHSUZvcm1hdFNpemUgJkdldERYR0lGb3JtYXRTaXpl
SW5mbyhEWEdJX0ZPUk1BVCBmb3JtYXQpCiB7Ci0gICAgSW50ZXJuYWxGb3JtYXRJbml0aWFsaXpl
ck1hcCBtYXA7Ci0KLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXJQYWly
KEdMX1JHQjgsICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAgMHgwMCwgICAg
ICAgMHgwMCwgICAgICAgMHgwMCwgICAgICAgMHhGRj4gICAgICAgICAgKSk7Ci0gICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyUGFpcihHTF9SR0I1NjUsICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgIDB4MDAsICAgICAgIDB4MDAsICAgICAgIDB4MDAsICAg
ICAgIDB4RkY+ICAgICAgICAgICkpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbml0
aWFsaXplclBhaXIoR0xfU1JHQjgsICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUs
ICAweDAwLCAgICAgICAweDAwLCAgICAgICAweDAwLCAgICAgICAweEZGPiAgICAgICAgICApKTsK
LSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXJQYWlyKEdMX1JHQjE2Riwg
IEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGhhbGYsICAgMHgwMDAwLCAgICAgMHgwMDAwLCAg
ICAgMHgwMDAwLCAgICAgZ2w6OkZsb2F0MTZPbmU+KSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5h
bEZvcm1hdEluaXRpYWxpemVyUGFpcihHTF9SR0IzMkYsICBJbml0aWFsaXplNENvbXBvbmVudERh
dGE8R0xmbG9hdCwgIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIGdsOjpGbG9h
dDMyT25lPikpOwotICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbml0aWFsaXplclBhaXIo
R0xfUkdCOFVJLCAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsICAweDAwLCAgICAg
ICAweDAwLCAgICAgICAweDAwLCAgICAgICAweDAxPiAgICAgICAgICApKTsKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXJQYWlyKEdMX1JHQjhJLCAgIEluaXRpYWxpemU0
Q29tcG9uZW50RGF0YTxHTGJ5dGUsICAgMHgwMCwgICAgICAgMHgwMCwgICAgICAgMHgwMCwgICAg
ICAgMHgwMT4gICAgICAgICAgKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluaXRp
YWxpemVyUGFpcihHTF9SR0IxNlVJLCBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1c2hvcnQs
IDB4MDAwMCwgICAgIDB4MDAwMCwgICAgIDB4MDAwMCwgICAgIDB4MDAwMT4gICAgICAgICkpOwot
ICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbml0aWFsaXplclBhaXIoR0xfUkdCMTZJLCAg
SW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMc2hvcnQsICAweDAwMDAsICAgICAweDAwMDAsICAg
ICAweDAwMDAsICAgICAweDAwMDE+ICAgICAgICApKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5pdGlhbGl6ZXJQYWlyKEdMX1JHQjMyVUksIEluaXRpYWxpemU0Q29tcG9uZW50RGF0
YTxHTHVpbnQsICAgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw
MT4gICAgKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyUGFpcihH
TF9SR0IzMkksICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xpbnQsICAgIDB4MDAwMDAwMDAs
IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+ICAgICkpOwotCi0gICAgcmV0dXJu
IG1hcDsKLX0KLQotLy8gRVMzIGltYWdlIGxvYWRpbmcgZnVuY3Rpb25zIHZhcnkgYmFzZWQgb24g
dGhlIGludGVybmFsIGZvcm1hdCBhbmQgZGF0YSB0eXBlIGdpdmVuLAotLy8gdGhpcyBtYXAgdHlw
ZSBkZXRlcm1pbmVzIHRoZSBsb2FkaW5nIGZ1bmN0aW9uIGZyb20gdGhlIGludGVybmFsIGZvcm1h
dCBhbmQgdHlwZSBzdXBwbGllZAotLy8gdG8gZ2xUZXgqSW1hZ2UqRCBhbmQgdGhlIGRlc3RpbmF0
aW9uIERYR0lfRk9STUFULiBTb3VyY2UgZm9ybWF0cyBhbmQgdHlwZXMgYXJlIHRha2VuIGZyb20K
LS8vIFRhYmxlcyAzLjIgYW5kIDMuMyBvZiB0aGUgRVMgMyBzcGVjLgotdHlwZWRlZiBzdGQ6OnBh
aXI8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbj4gVHlwZUxvYWRGdW5jdGlvblBhaXI7Ci10eXBl
ZGVmIHN0ZDo6bWFwPEdMZW51bSwgc3RkOjp2ZWN0b3I8VHlwZUxvYWRGdW5jdGlvblBhaXI+ID4g
RDNEMTFMb2FkRnVuY3Rpb25NYXA7Ci0KLXN0YXRpYyB2b2lkIFVuaW1wbGVtZW50ZWRMb2FkRnVu
Y3Rpb24oc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93
UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LX0KLQotc3RhdGljIHZvaWQgVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24oc2l6ZV90IHdpZHRoLCBz
aXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVf
dCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpCi17Ci0gICAgVU5SRUFDSEFCTEUoKTsKLX0KLQotLy8gQSBoZWxwZXIgZnVuY3Rpb24g
dG8gaW5zZXJ0IGRhdGEgaW50byB0aGUgRDNEMTFMb2FkRnVuY3Rpb25NYXAgd2l0aCBmZXdlciBj
aGFyYWN0ZXJzLgotc3RhdGljIGlubGluZSB2b2lkIEluc2VydExvYWRGdW5jdGlvbihEM0QxMUxv
YWRGdW5jdGlvbk1hcCAqbWFwLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSB0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkSW1hZ2VGdW5jdGlvbiBs
b2FkRnVuYykKLXsKLSAgICAoKm1hcClbaW50ZXJuYWxGb3JtYXRdLnB1c2hfYmFjayhUeXBlTG9h
ZEZ1bmN0aW9uUGFpcih0eXBlLCBsb2FkRnVuYykpOwotfQotCi1EM0QxMUxvYWRGdW5jdGlvbk1h
cCBCdWlsZEQzRDExX0ZMOV8zX0xvYWRGdW5jdGlvbk1hcCgpCi17Ci0gICAgRDNEMTFMb2FkRnVu
Y3Rpb25NYXAgbWFwOwotCi0gICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlLiBBbHNv
IHVzZWQgYnkgR0xfQUxQSEE4Ci0gICAgLy8gT24gZmVhdHVyZSBsZXZlbCA5XzMsIEE4X1VOT1JN
IGRvZXNuJ3Qgc3VwcG9ydCBtaXBtYXBzLCBzbyB3ZSBtdXN0IHVzZSBSR0JBOCBpbnN0ZWFkCi0g
ICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0FMUEhBOF9FWFQsIEdMX1VOU0lHTkVEX0JZ
VEUsIExvYWRBOFRvUkdCQTgpOwotICAgIAotICAgIHJldHVybiBtYXA7Ci19Ci0KLUQzRDExTG9h
ZEZ1bmN0aW9uTWFwIEJ1aWxkRDNEMTFfRkwxMF8wUGx1c19Mb2FkRnVuY3Rpb25NYXAoKQotewot
ICAgIEQzRDExTG9hZEZ1bmN0aW9uTWFwIG1hcDsKLQotICAgIC8vIEZyb20gR0xfRVhUX3RleHR1
cmVfc3RvcmFnZS4gQWxzbyB1c2VkIGJ5IEdMX0FMUEhBOAotICAgIEluc2VydExvYWRGdW5jdGlv
bigmbWFwLCBHTF9BTFBIQThfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBMb2FkVG9OYXRpdmU8R0x1
Ynl0ZSwgMT4pOwotCi0gICAgcmV0dXJuIG1hcDsKLX0KLQotRDNEMTFMb2FkRnVuY3Rpb25NYXAg
QnVpbGRCYXNlRDNEMTFMb2FkRnVuY3Rpb25NYXAoKQotewotICAgIEQzRDExTG9hZEZ1bmN0aW9u
TWFwIG1hcDsKLQotICAgIC8vICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0
ICAgICAgfCBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvYWQgZnVuY3Rpb24g
ICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xf
UkdCQTgsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIExv
YWRUb05hdGl2ZTxHTHVieXRlLCA0PiAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5j
dGlvbigmbWFwLCBHTF9SR0I1X0ExLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAg
ICAgICAgICAgICAgTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+ICAgICAgICAgICAgICk7Ci0gICAg
SW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQkE0LCAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfQllURSwgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4gICAgICAg
ICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfU1JHQjhfQUxQSEE4LCAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVi
eXRlLCA0PiAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9S
R0JBOF9TTk9STSwgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9h
ZFRvTmF0aXZlPEdMYnl0ZSwgND4gICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0
aW9uKCZtYXAsIEdMX1JHQkE0LCAgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNF80XzRf
NCwgICAgICAgICBMb2FkUkdCQTRUb1JHQkE4ICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdCMTBfQTIsICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlRfMl8xMF8xMF8xMF9SRVYsICAgIExvYWRUb05hdGl2ZTxHTHVpbnQsIDE+ICAgICAgICAg
ICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0I1X0ExLCAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEsICAgICAgICAgTG9hZFJHQjVBMVRvUkdCQTgg
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JH
QjVfQTEsICAgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICBMb2Fk
UkdCMTBBMlRvUkdCQTggICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rp
b24oJm1hcCwgR0xfUkdCQTE2RiwgICAgICAgICAgICBHTF9IQUxGX0ZMT0FULCAgICAgICAgICAg
ICAgICAgICAgIExvYWRUb05hdGl2ZTxHTGhhbGYsIDQ+ICAgICAgICAgICAgICApOwotICAgIElu
c2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0JBMTZGLCAgICAgICAgICAgIEdMX0hBTEZfRkxP
QVRfT0VTLCAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlPEdMaGFsZiwgND4gICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQkEzMkYsICAgICAgICAg
ICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0xmbG9h
dCwgND4gICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdC
QTE2RiwgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIExvYWQz
MkZUbzE2Rjw0PiAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlv
bigmbWFwLCBHTF9SR0JBOFVJLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAg
ICAgICAgICAgTG9hZFRvTmF0aXZlPEdMdWJ5dGUsIDQ+ICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQkE4SSwgICAgICAgICAgICAgR0xfQllURSwgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0xieXRlLCA0PiAgICAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdCQTE2VUksICAgICAgICAg
ICBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVzaG9y
dCwgND4gICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0JB
MTZJLCAgICAgICAgICAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFRv
TmF0aXZlPEdMc2hvcnQsIDQ+ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9u
KCZtYXAsIEdMX1JHQkEzMlVJLCAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAg
ICAgICAgICBMb2FkVG9OYXRpdmU8R0x1aW50LCA0PiAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdCQTMySSwgICAgICAgICAgICBHTF9JTlQsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTGludCwgND4gICAgICAgICAgICAg
ICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0IxMF9BMlVJLCAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgICAgTG9hZFRvTmF0aXZlPEdMdWludCwg
MT4gICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQjgs
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgICBMb2FkVG9O
YXRpdmUzVG80PEdMdWJ5dGUsIDB4RkY+ICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24o
Jm1hcCwgR0xfUkdCNTY1LCAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgICAgIExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwgMHhGRj4gICAgICApOwotICAgIEluc2Vy
dExvYWRGdW5jdGlvbigmbWFwLCBHTF9TUkdCOCwgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUsICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLCAweEZGPiAgICAg
ICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQjhfU05PUk0sICAgICAgICAg
R0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmUzVG80PEdMYnl0
ZSwgMHg3Rj4gICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdCNTY1
LCAgICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgICAgICAgICAgIExvYWRSNUc2
QjVUb1JHQkE4ICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigm
bWFwLCBHTF9SMTFGX0cxMUZfQjEwRiwgICAgIEdMX1VOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9S
RVYsICAgTG9hZFRvTmF0aXZlPEdMdWludCwgMT4gICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQjlfRTUsICAgICAgICAgICAgR0xfVU5TSUdORURfSU5U
XzVfOV85XzlfUkVWLCAgICAgICBMb2FkVG9OYXRpdmU8R0x1aW50LCAxPiAgICAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdCMTZGLCAgICAgICAgICAgICBH
TF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTNUbzQ8R0xoYWxm
LCBnbDo6RmxvYXQxNk9uZT4pOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0Ix
NkYsICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgTG9hZFRv
TmF0aXZlM1RvNDxHTGhhbGYsIGdsOjpGbG9hdDE2T25lPik7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0
aW9uKCZtYXAsIEdMX1IxMUZfRzExRl9CMTBGLCAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAg
ICAgICAgICAgICBMb2FkUkdCMTZGVG9SRzExQjEwRiAgICAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUjExRl9HMTFGX0IxMEYsICAgICBHTF9IQUxGX0ZM
T0FUX09FUywgICAgICAgICAgICAgICAgIExvYWRSR0IxNkZUb1JHMTFCMTBGICAgICAgICAgICAg
ICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0I5X0U1LCAgICAgICAg
ICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgTG9hZFJHQjE2RlRvUkdCOUU1
ICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JH
QjlfRTUsICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBMb2Fk
UkdCMTZGVG9SR0I5RTUgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rp
b24oJm1hcCwgR0xfUkdCMzJGLCAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAg
ICAgICAgICAgIExvYWRUb05hdGl2ZTNUbzQ8R0xmbG9hdCwgZ2w6OkZsb2F0MzJPbmU+KTsKLSAg
ICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkdCMTZGLCAgICAgICAgICAgICBHTF9GTE9B
VCwgICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRSR0IzMkZUb1JHQkExNkYgICAgICAgICAg
ICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SMTFGX0cxMUZfQjEw
RiwgICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFJHQjMyRlRvUkcx
MUIxMEYgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdM
X1JHQjlfRTUsICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBM
b2FkUkdCMzJGVG9SR0I5RTUgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVu
Y3Rpb24oJm1hcCwgR0xfUkdCOFVJLCAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAg
ICAgICAgICAgICAgIExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwgMHgwMT4gICAgICApOwotICAg
IEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0I4SSwgICAgICAgICAgICAgIEdMX0JZVEUs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlM1RvNDxHTGJ5dGUsIDB4MDE+
ICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQjE2VUksICAgICAg
ICAgICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmUzVG80
PEdMdXNob3J0LCAweDAwMDE+ICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xf
UkdCMTZJLCAgICAgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIExv
YWRUb05hdGl2ZTNUbzQ8R0xzaG9ydCwgMHgwMDAxPiAgICApOwotICAgIEluc2VydExvYWRGdW5j
dGlvbigmbWFwLCBHTF9SR0IzMlVJLCAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAg
ICAgICAgICAgICAgTG9hZFRvTmF0aXZlM1RvNDxHTHVpbnQsIDB4MDAwMDAwMDE+ICk7Ci0gICAg
SW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAgICAgR0xfSU5ULCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmUzVG80PEdMaW50LCAweDAwMDAw
MDAxPiAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkc4LCAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVi
eXRlLCAyPiAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9S
RzhfU05PUk0sICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9h
ZFRvTmF0aXZlPEdMYnl0ZSwgMj4gICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0
aW9uKCZtYXAsIEdMX1JHMTZGLCAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAg
ICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0xoYWxmLCAyPiAgICAgICAgICAgICAgKTsKLSAgICBJ
bnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkcxNkYsICAgICAgICAgICAgICBHTF9IQUxGX0ZM
T0FUX09FUywgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTGhhbGYsIDI+ICAgICAgICAg
ICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SRzMyRiwgICAgICAgICAg
ICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlPEdMZmxv
YXQsIDI+ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JH
MTZGLCAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBMb2Fk
MzJGVG8xNkY8Mj4gICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rp
b24oJm1hcCwgR0xfUkc4VUksICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAg
ICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVieXRlLCAyPiAgICAgICAgICAgICApOwotICAgIElu
c2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SRzhJLCAgICAgICAgICAgICAgIEdMX0JZVEUsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlPEdMYnl0ZSwgMj4gICAgICAgICAg
ICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHMTZVSSwgICAgICAgICAg
ICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0x1c2hv
cnQsIDI+ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUkcx
NkksICAgICAgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRU
b05hdGl2ZTxHTHNob3J0LCAyPiAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlv
bigmbWFwLCBHTF9SRzMyVUksICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAg
ICAgICAgICAgTG9hZFRvTmF0aXZlPEdMdWludCwgMj4gICAgICAgICAgICAgICk7Ci0gICAgSW5z
ZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHMzJJLCAgICAgICAgICAgICAgR0xfSU5ULCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0xpbnQsIDI+ICAgICAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUjgsICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVieXRl
LCAxPiAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SOF9T
Tk9STSwgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFRv
TmF0aXZlPEdMYnl0ZSwgMT4gICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9u
KCZtYXAsIEdMX1IxNkYsICAgICAgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAg
ICAgICAgICBMb2FkVG9OYXRpdmU8R0xoYWxmLCAxPiAgICAgICAgICAgICAgKTsKLSAgICBJbnNl
cnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUjE2RiwgICAgICAgICAgICAgICBHTF9IQUxGX0ZMT0FU
X09FUywgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTGhhbGYsIDE+ICAgICAgICAgICAg
ICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SMzJGLCAgICAgICAgICAgICAg
IEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlPEdMZmxvYXQs
IDE+ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1IxNkYs
ICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkMzJG
VG8xNkY8MT4gICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24o
Jm1hcCwgR0xfUjhVSSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgICAgIExvYWRUb05hdGl2ZTxHTHVieXRlLCAxPiAgICAgICAgICAgICApOwotICAgIEluc2Vy
dExvYWRGdW5jdGlvbigmbWFwLCBHTF9SOEksICAgICAgICAgICAgICAgIEdMX0JZVEUsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZlPEdMYnl0ZSwgMT4gICAgICAgICAgICAg
ICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1IxNlVJLCAgICAgICAgICAgICAg
R0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0x1c2hvcnQs
IDE+ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfUjE2SSwg
ICAgICAgICAgICAgICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRUb05h
dGl2ZTxHTHNob3J0LCAxPiAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigm
bWFwLCBHTF9SMzJVSSwgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAg
ICAgICAgTG9hZFRvTmF0aXZlPEdMdWludCwgMT4gICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0
TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1IzMkksICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0xpbnQsIDE+ICAgICAgICAgICAgICAg
KTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMTYsICBH
TF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVzaG9ydCwg
MT4gICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9ERVBUSF9D
T01QT05FTlQyNCwgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgTG9hZFIzMlRv
UjI0RzggICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZt
YXAsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAg
ICAgICBMb2FkUjMyVG9SMTYgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRM
b2FkRnVuY3Rpb24oJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCBHTF9GTE9BVCwgICAgICAg
ICAgICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTGZsb2F0LCAxPiAgICAgICAgICAgICAp
OwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9ERVBUSDI0X1NURU5DSUw4LCAgIEdM
X1VOU0lHTkVEX0lOVF8yNF84LCAgICAgICAgICAgICAgTG9hZFIzMlRvUjI0RzggICAgICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0RFUFRIMzJG
X1NURU5DSUw4LCAgR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWLCBMb2FkVG9OYXRp
dmU8R0x1aW50LCAyPiAgICAgICAgICAgICAgKTsKLQotICAgIC8vIFVuc2l6ZWQgZm9ybWF0cwot
ICAgIC8vIExvYWQgZnVuY3Rpb25zIGFyZSB1bnJlYWNoYWJsZSBiZWNhdXNlIHRoZXkgYXJlIGNv
bnZlcnRlZCB0byBzaXplZCBpbnRlcm5hbCBmb3JtYXRzIGJhc2VkIG9uCi0gICAgLy8gdGhlIGZv
cm1hdCBhbmQgdHlwZSBiZWZvcmUgbG9hZGluZyB0YWtlcyBwbGFjZS4KLSAgICBJbnNlcnRMb2Fk
RnVuY3Rpb24oJm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAg
ICAgICAgICAgICAgICAgIFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uICAgICAgICAgICAgICApOwot
ICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX1NIT1JUXzRfNF80XzQsICAgICAgICAgVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24gICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX1JHQkEsICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSwgICAgICAgICBVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwg
R0xfUkdCLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAg
IFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRG
dW5jdGlvbigmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVf
Nl81LCAgICAgICAgICAgVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24gICAgICAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfVU5T
SUdORURfQllURSwgICAgICAgICAgICAgICAgICBVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiAgICAg
ICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfTFVNSU5BTkNFLCAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFVucmVhY2hhYmxlTG9h
ZEZ1bmN0aW9uICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBH
TF9BTFBIQSwgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAg
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24gICAgICAgICAgICAgICk7Ci0KLSAgICAvLyBGcm9tIEdM
X09FU190ZXh0dXJlX2Zsb2F0Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0xVTUlO
QU5DRV9BTFBIQSwgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBMb2FkTEEz
MkZUb1JHQkEzMkYgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24o
Jm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAg
ICAgICAgIExvYWRMMzJGVG9SR0JBMzJGICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2Vy
dExvYWRGdW5jdGlvbigmbWFwLCBHTF9BTFBIQSwgICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAg
ICAgICAgICAgICAgICAgICAgICAgTG9hZEEzMkZUb1JHQkEzMkYgICAgICAgICAgICAgICAgICAg
ICk7Ci0KLSAgICAvLyBGcm9tIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQKLSAgICBJbnNlcnRM
b2FkRnVuY3Rpb24oJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBLCAgICBHTF9IQUxGX0ZMT0FULCAg
ICAgICAgICAgICAgICAgICAgIExvYWRMQTE2RlRvUkdCQTE2RiAgICAgICAgICAgICAgICAgICAp
OwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsICAgIEdM
X0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICAgICAgTG9hZExBMTZGVG9SR0JBMTZGICAgICAg
ICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0xVTUlOQU5D
RSwgICAgICAgICAgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAgICAgICBMb2FkTDE2RlRv
UkdCQTE2RiAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1h
cCwgR0xfTFVNSU5BTkNFLCAgICAgICAgICBHTF9IQUxGX0ZMT0FUX09FUywgICAgICAgICAgICAg
ICAgIExvYWRMMTZGVG9SR0JBMTZGICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydExv
YWRGdW5jdGlvbigmbWFwLCBHTF9BTFBIQSwgICAgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAg
ICAgICAgICAgICAgICAgICAgTG9hZEExNkZUb1JHQkExNkYgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xf
SEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBMb2FkQTE2RlRvUkdCQTE2RiAgICAgICAg
ICAgICAgICAgICAgKTsKLQotICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVfc3RvcmFnZQotICAg
IC8vIEdMX0FMUEhBOF9FWFQgR0xfVU5TSUdORURfQllURSBpcyBpbiB0aGUgZmVhdHVyZS1sZXZl
bC1zcGVjaWZpYyBsb2FkIGZ1bmN0aW9uIG1hcHMsIGR1ZSB0byBkaWZmZXJlbmNlcyBiZXR3ZWVu
IDlfMyBhbmQgMTBfMCsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfTFVNSU5BTkNF
OF9FWFQsICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgIExvYWRMOFRvUkdC
QTggICAgICAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFw
LCBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQsICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgTG9hZExBOFRvUkdCQTggICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9h
ZEZ1bmN0aW9uKCZtYXAsIEdMX0FMUEhBMzJGX0VYVCwgICAgICAgICAgIEdMX0ZMT0FULCAgICAg
ICAgICAgICAgICAgICAgICBMb2FkQTMyRlRvUkdCQTMyRiAgICAgICAgICAgICAgICAgICAgKTsK
LSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xfTFVNSU5BTkNFMzJGX0VYVCwgICAgICAg
R0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgIExvYWRMMzJGVG9SR0JBMzJGICAgICAgICAg
ICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9MVU1JTkFOQ0Vf
QUxQSEEzMkZfRVhULCBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgTG9hZExBMzJGVG9S
R0JBMzJGICAgICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAs
IEdMX0FMUEhBMTZGX0VYVCwgICAgICAgICAgIEdMX0hBTEZfRkxPQVQsICAgICAgICAgICAgICAg
ICBMb2FkQTE2RlRvUkdCQTE2RiAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2Fk
RnVuY3Rpb24oJm1hcCwgR0xfQUxQSEExNkZfRVhULCAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9P
RVMsICAgICAgICAgICAgIExvYWRBMTZGVG9SR0JBMTZGICAgICAgICAgICAgICAgICAgICApOwot
ICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9MVU1JTkFOQ0UxNkZfRVhULCAgICAgICBH
TF9IQUxGX0ZMT0FULCAgICAgICAgICAgICAgICAgTG9hZEwxNkZUb1JHQkExNkYgICAgICAgICAg
ICAgICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0xVTUlOQU5DRTE2
Rl9FWFQsICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTLCAgICAgICAgICAgICBMb2FkTDE2RlRvUkdC
QTE2RiAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwg
R0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCwgR0xfSEFMRl9GTE9BVCwgICAgICAgICAgICAgICAg
IExvYWRMQTE2RlRvUkdCQTE2RiAgICAgICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRG
dW5jdGlvbigmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhULCBHTF9IQUxGX0ZMT0FUX09F
UywgICAgICAgICAgICAgTG9hZExBMTZGVG9SR0JBMTZGICAgICAgICAgICAgICAgICAgICk7Ci0K
LSAgICAvLyBGcm9tIEdMX0FOR0xFX2RlcHRoX3RleHR1cmUKLSAgICBJbnNlcnRMb2FkRnVuY3Rp
b24oJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCAgR0xfVU5TSUdORURfSU5ULCAgICAg
ICAgICAgICAgIExvYWRSMzJUb1IyNEc4ICAgICAgICAgICAgICAgICAgICAgICApOwotCi0gICAg
Ly8gRnJvbSBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSAgICBJbnNlcnRMb2FkRnVu
Y3Rpb24oJm1hcCwgR0xfQkdSQThfRVhULCAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ICAgICAgICAgICAgICAgICBMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwgND4gICAgICAgICApOwotICAg
IEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9CR1JBNF9BTkdMRVgsICAgICAgICAgICBHTF9V
TlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQsIExvYWRSR0JBNFRvUkdCQTggICAgICAgICAg
ICAgICAgICk7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0JHUkE0X0FOR0xFWCwg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgTG9hZFRvTmF0aXZl
PEdMdWJ5dGUsIDQ+ICAgICAgICAgKTsKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24oJm1hcCwgR0xf
QkdSNV9BMV9BTkdMRVgsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhU
LCBMb2FkUkdCNUExVG9SR0JBOCAgICAgICAgICAgICAgICApOwotICAgIEluc2VydExvYWRGdW5j
dGlvbigmbWFwLCBHTF9CR1I1X0ExX0FOR0xFWCwgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAg
ICAgICAgICAgICAgICAgIExvYWRUb05hdGl2ZTxHTHVieXRlLCA0PiAgICAgICAgICk7Ci0KLSAg
ICAvLyBDb21wcmVzc2VkIGZvcm1hdHMKLSAgICAvLyBGcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxl
IDMuMTYKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBMb2FkIGZ1bmN0aW9u
ICAgICAgICAgICAgICAgICAgfAotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9DT01Q
UkVTU0VEX1IxMV9FQUMsICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
VW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlv
bigmbWFwLCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAgICAgICApOwotICAgIElu
c2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDLCAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAg
ICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1JHMTFf
RUFDLCAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRl
ZExvYWRGdW5jdGlvbiAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9D
T01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllU
RSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAgICAgICApOwotICAgIEluc2VydExvYWRGdW5j
dGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAgICAgICApOwotICAg
IEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlv
biAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1JH
QjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCAgR0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1l
bnRlZExvYWRGdW5jdGlvbiAgICAgICApOwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBH
TF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgR0xfVU5TSUdORURf
QllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAgICAgICApOwotICAgIEluc2VydExvYWRG
dW5jdGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiAgICAgICApOwot
ICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9F
VEMyX0VBQywgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgVW5pbXBsZW1lbnRlZExvYWRGdW5j
dGlvbiAgICAgICApOwotCi0gICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxCi0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBMb2FkQ29tcHJlc3NlZFRv
TmF0aXZlPDQsIDQsICA4Pik7Ci0gICAgSW5zZXJ0TG9hZEZ1bmN0aW9uKCZtYXAsIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBM
b2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsICA4Pik7Ci0KLSAgICAvLyBGcm9tIEdMX0FOR0xF
X3RleHR1cmVfY29tcHJlc3Npb25fZHh0MwotICAgIEluc2VydExvYWRGdW5jdGlvbigmbWFwLCBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxNj4pOwotCi0gICAgLy8gRnJvbSBH
TF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUKLSAgICBJbnNlcnRMb2FkRnVuY3Rpb24o
Jm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsIExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgMTY+KTsKLQotICAgIHJl
dHVybiBtYXA7Ci19Ci0KLS8vIEZvciBzaXplZCBHTCBpbnRlcm5hbCBmb3JtYXRzLCB0aGVyZSBp
cyBvbmx5IG9uZSBjb3JyZXNwb25kaW5nIEQzRDExIGZvcm1hdC4gVGhpcyBtYXAgdHlwZSBhbGxv
d3MKLS8vIHF1ZXJ5aW5nIGZvciB0aGUgRFhHSSB0ZXh0dXJlIGZvcm1hdHMgdG8gdXNlIGZvciB0
ZXh0dXJlcywgU1JWcywgUlRWcyBhbmQgRFNWcyBnaXZlbiBhIEdMIGludGVybmFsCi0vLyBmb3Jt
YXQuCi10eXBlZGVmIHN0ZDo6bWFwPEdMZW51bSwgVGV4dHVyZUZvcm1hdD4gRDNEMTFFUzNGb3Jt
YXRNYXA7Ci0KLVRleHR1cmVGb3JtYXQ6OlRleHR1cmVGb3JtYXQoKQotICAgIDogdGV4Rm9ybWF0
KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgc3J2Rm9ybWF0KERYR0lfRk9STUFUX1VOS05P
V04pLAotICAgICAgcnR2Rm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgZHN2Rm9y
bWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgcmVuZGVyRm9ybWF0KERYR0lfRk9STUFU
X1VOS05PV04pLAotICAgICAgc3dpenpsZVRleEZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwK
LSAgICAgIHN3aXp6bGVTUlZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBzd2l6
emxlUlRWRm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgZGF0YUluaXRpYWxpemVy
RnVuY3Rpb24oTlVMTCksCi0gICAgICBsb2FkRnVuY3Rpb25zKCkKLXsKLX0KLQotc3RhdGljIGlu
bGluZSB2b2lkIEluc2VydEQzRDExRm9ybWF0SW5mb0Jhc2UoRDNEMTFFUzNGb3JtYXRNYXAgKmZv
cm1hdE1hcCwgY29uc3QgRDNEMTFMb2FkRnVuY3Rpb25NYXAgJmZsTG9hZEZ1bmN0aW9ucywgR0xl
bnVtIGludGVybmFsRm9ybWF0LCBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBzcnZGb3JtYXQsIERY
R0lfRk9STUFUIHJ0dkZvcm1hdCwgRFhHSV9GT1JNQVQgZHN2Rm9ybWF0KQotewotICAgIFRleHR1
cmVGb3JtYXQgaW5mbzsKLSAgICBpbmZvLnRleEZvcm1hdCA9IHRleEZvcm1hdDsKLSAgICBpbmZv
LnNydkZvcm1hdCA9IHNydkZvcm1hdDsKLSAgICBpbmZvLnJ0dkZvcm1hdCA9IHJ0dkZvcm1hdDsK
LSAgICBpbmZvLmRzdkZvcm1hdCA9IGRzdkZvcm1hdDsKLQotICAgIC8vIEdpdmVuIGEgR0wgaW50
ZXJuYWwgZm9ybWF0LCB0aGUgcmVuZGVyRm9ybWF0IGlzIHRoZSBEU1YgZm9ybWF0IGlmIGl0IGlz
IGRlcHRoLSBvciBzdGVuY2lsLXJlbmRlcmFibGUsCi0gICAgLy8gdGhlIFJUViBmb3JtYXQgaWYg
aXQgaXMgY29sb3ItcmVuZGVyYWJsZSwgYW5kIHRoZSAobm9ucmVuZGVyYWJsZSkgdGV4dHVyZSBm
b3JtYXQgb3RoZXJ3aXNlLgotICAgIGlmIChkc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9X
TikKKyAgICBzdGF0aWMgY29uc3QgRFhHSUZvcm1hdFNpemUgc2l6ZVVua25vd24oMCwgMCwgMCk7
CisgICAgc3RhdGljIGNvbnN0IERYR0lGb3JtYXRTaXplIHNpemUxMjgoMTI4LCAxLCAxKTsKKyAg
ICBzdGF0aWMgY29uc3QgRFhHSUZvcm1hdFNpemUgc2l6ZTk2KDk2LCAxLCAxKTsKKyAgICBzdGF0
aWMgY29uc3QgRFhHSUZvcm1hdFNpemUgc2l6ZTY0KDY0LCAxLCAxKTsKKyAgICBzdGF0aWMgY29u
c3QgRFhHSUZvcm1hdFNpemUgc2l6ZTMyKDMyLCAxLCAxKTsKKyAgICBzdGF0aWMgY29uc3QgRFhH
SUZvcm1hdFNpemUgc2l6ZTE2KDE2LCAxLCAxKTsKKyAgICBzdGF0aWMgY29uc3QgRFhHSUZvcm1h
dFNpemUgc2l6ZTgoOCwgMSwgMSk7CisgICAgc3RhdGljIGNvbnN0IERYR0lGb3JtYXRTaXplIHNp
emVCQzEoNjQsIDQsIDQpOworICAgIHN0YXRpYyBjb25zdCBEWEdJRm9ybWF0U2l6ZSBzaXplQkMy
KDEyOCwgNCwgNCk7CisgICAgc3RhdGljIGNvbnN0IERYR0lGb3JtYXRTaXplIHNpemVCQzMoMTI4
LCA0LCA0KTsKKyAgICBzdGF0aWMgY29uc3QgRFhHSUZvcm1hdFNpemUgc2l6ZUJDNCg2NCwgNCwg
NCk7CisgICAgc3RhdGljIGNvbnN0IERYR0lGb3JtYXRTaXplIHNpemVCQzUoMTI4LCA0LCA0KTsK
KyAgICBzdGF0aWMgY29uc3QgRFhHSUZvcm1hdFNpemUgc2l6ZUJDNkgoMTI4LCA0LCA0KTsKKyAg
ICBzdGF0aWMgY29uc3QgRFhHSUZvcm1hdFNpemUgc2l6ZUJDNygxMjgsIDQsIDQpOworICAgIHN3
aXRjaCAoZm9ybWF0KQogICAgIHsKLSAgICAgICAgaW5mby5yZW5kZXJGb3JtYXQgPSBkc3ZGb3Jt
YXQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgICAgIHJldHVy
biBzaXplVW5rbm93bjsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVFlQ
RUxFU1M6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UOgorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOgorICAgICAgICAgICAgcmV0dXJuIHNpemUxMjg7
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1RZUEVMRVNTOgorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJfVUlOVDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lO
VDoKKyAgICAgICAgICAgIHJldHVybiBzaXplOTY7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1RZUEVMRVNTOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9GTE9BVDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNOgorICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TSU5UOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9U
WVBFTEVTUzoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQ6CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjMyRzMyX1NJTlQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1M6
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQ6CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTOgorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1gzMl9UWVBFTEVTU19HOFgyNF9VSU5UOgorICAgICAgICAgICAgcmV0dXJu
IHNpemU2NDsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9UWVBFTEVTUzoK
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STToKKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UOgorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxMUcxMUIxMF9GTE9BVDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9UWVBF
TEVTUzoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCOgorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VJTlQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVFlQRUxFU1M6CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2X0ZMT0FUOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STToK
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVDoKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZHMTZfU05PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2X1NJ
TlQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTOgorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0QzMl9GTE9BVDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyX1VJTlQ6CisgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjMyX1NJTlQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxF
U1M6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTOgorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UOgorICAgICAgICAgICAgcmV0dXJuIHNpemUz
MjsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4X1RZUEVMRVNTOgorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4RzhfVU5PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9V
SU5UOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU05PUk06CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOF9TSU5UOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9UWVBF
TEVTUzoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQ6CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfRDE2X1VOT1JNOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNl9VTk9S
TToKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfVUlOVDoKKyAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZfU05PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1NJTlQ6Cisg
ICAgICAgICAgICByZXR1cm4gc2l6ZTE2OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1RZ
UEVMRVNTOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VOT1JNOgorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1I4X1VJTlQ6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfU0lOVDoKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9BOF9VTk9STToKKyAgICAgICAgICAgIHJldHVybiBzaXplODsKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMV9VTk9STToKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICByZXR1cm4gc2l6ZVVua25vd247CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjlHOUI5
RTVfU0hBUkVERVhQOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfQjhHOF9VTk9STToK
KyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9HOFI4X0c4QjhfVU5PUk06CisgICAgICAgICAgICBy
ZXR1cm4gc2l6ZTMyOworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9UWVBFTEVTUzoKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkMxX1VOT1JNX1NSR0I6CisgICAgICAgICAgICByZXR1cm4gc2l6ZUJDMTsKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzJfVFlQRUxFU1M6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkMyX1VOT1JNOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCOgorICAg
ICAgICAgICAgcmV0dXJuIHNpemVCQzI7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZ
UEVMRVNTOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKKyAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIHJldHVybiBzaXplQkMz
OworICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNF9UWVBFTEVTUzoKKyAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzRfVU5PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM0X1NOT1JN
OgorICAgICAgICAgICAgcmV0dXJuIHNpemVCQzQ7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkM1X1RZUEVMRVNTOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDNV9VTk9STToKKyAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzVfU05PUk06CisgICAgICAgICAgICByZXR1cm4gc2l6ZUJD
NTsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk06CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk06CisgICAgICAgICAgICByZXR1cm4gc2l6ZTE2Owor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0I4RzhSOFg4X1VOT1JNOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxMEcx
MEIxMF9YUl9CSUFTX0EyX1VOT1JNOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4
X1RZUEVMRVNTOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNX1NSR0I6
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVFlQRUxFU1M6CisgICAgICAgIGNh
c2UgRFhHSV9GT1JNQVRfQjhHOFI4WDhfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIHJldHVybiBz
aXplMzI7CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2SF9UWVBFTEVTUzoKKyAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9CQzZIX1VGMTY6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM2
SF9TRjE2OgorICAgICAgICAgICAgcmV0dXJuIHNpemVCQzZIOworICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDN19UWVBFTEVTUzoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzdfVU5PUk06
CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkM3X1VOT1JNX1NSR0I6CisgICAgICAgICAgICBy
ZXR1cm4gc2l6ZUJDNzsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9BWVVWOgorICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1k0MTA6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfWTQxNjoKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9OVjEyOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Aw
MTA6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUDAxNjoKKyAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF80MjBfT1BBUVVFOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1lVWTI6CisgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfWTIxMDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9ZMjE2Ogor
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX05WMTE6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QUk0NDoKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9JQTQ0OgorICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1A4OgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0E4UDg6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIHNpemVVbmtub3duOworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgorICAgICAgICAgICAgcmV0dXJuIHNpemUx
NjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICByZXR1cm4gc2l6ZVVua25vd247CiAgICAgfQotICAgIGVsc2UgaWYgKHJ0dkZvcm1hdCAh
PSBEWEdJX0ZPUk1BVF9VTktOT1dOKQotICAgIHsKLSAgICAgICAgaW5mby5yZW5kZXJGb3JtYXQg
PSBydHZGb3JtYXQ7Ci0gICAgfQotICAgIGVsc2UgaWYgKHRleEZvcm1hdCAhPSBEWEdJX0ZPUk1B
VF9VTktOT1dOKQotICAgIHsKLSAgICAgICAgaW5mby5yZW5kZXJGb3JtYXQgPSB0ZXhGb3JtYXQ7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGluZm8ucmVuZGVyRm9ybWF0ID0gRFhH
SV9GT1JNQVRfVU5LTk9XTjsKLSAgICB9Ci0KLSAgICAvLyBDb21wdXRlIHRoZSBzd2l6emxlIGZv
cm1hdHMKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKLSAgICBpZiAoaW50ZXJuYWxGb3Jt
YXQgIT0gR0xfTk9ORSAmJiBmb3JtYXRJbmZvLnBpeGVsQnl0ZXMgPiAwKQotICAgIHsKLSAgICAg
ICAgaWYgKGZvcm1hdEluZm8uY29tcG9uZW50Q291bnQgIT0gNCB8fCB0ZXhGb3JtYXQgPT0gRFhH
SV9GT1JNQVRfVU5LTk9XTiB8fAotICAgICAgICAgICAgc3J2Rm9ybWF0ID09IERYR0lfRk9STUFU
X1VOS05PV04gfHwgcnR2Rm9ybWF0ID09IERYR0lfRk9STUFUX1VOS05PV04pCi0gICAgICAgIHsK
LSAgICAgICAgICAgIC8vIEdldCB0aGUgbWF4aW11bSBzaXplZCBjb21wb25lbnQKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBtYXhCaXRzID0gMTsKLSAgICAgICAgICAgIGlmIChmb3JtYXRJbmZv
LmNvbXByZXNzZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGNvbXByZXNzZWRCaXRzUGVyQmxvY2sgPSBmb3JtYXRJbmZvLnBpeGVsQnl0ZXMgKiA4OwotICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBibG9ja1NpemUgPSBmb3JtYXRJbmZvLmNvbXByZXNz
ZWRCbG9ja1dpZHRoICogZm9ybWF0SW5mby5jb21wcmVzc2VkQmxvY2tIZWlnaHQ7Ci0gICAgICAg
ICAgICAgICAgbWF4Qml0cyA9IHN0ZDo6bWF4KGNvbXByZXNzZWRCaXRzUGVyQmxvY2sgLyBibG9j
a1NpemUsIG1heEJpdHMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG1heEJpdHMgPSBzdGQ6Om1heChtYXhCaXRzLCBmb3Jt
YXRJbmZvLmFscGhhQml0cyk7Ci0gICAgICAgICAgICAgICAgbWF4Qml0cyA9IHN0ZDo6bWF4KG1h
eEJpdHMsIGZvcm1hdEluZm8ucmVkQml0cyk7Ci0gICAgICAgICAgICAgICAgbWF4Qml0cyA9IHN0
ZDo6bWF4KG1heEJpdHMsIGZvcm1hdEluZm8uZ3JlZW5CaXRzKTsKLSAgICAgICAgICAgICAgICBt
YXhCaXRzID0gc3RkOjptYXgobWF4Qml0cywgZm9ybWF0SW5mby5ibHVlQml0cyk7Ci0gICAgICAg
ICAgICAgICAgbWF4Qml0cyA9IHN0ZDo6bWF4KG1heEJpdHMsIGZvcm1hdEluZm8ubHVtaW5hbmNl
Qml0cyk7Ci0gICAgICAgICAgICAgICAgbWF4Qml0cyA9IHN0ZDo6bWF4KG1heEJpdHMsIGZvcm1h
dEluZm8uZGVwdGhCaXRzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbWF4Qml0cyA9
IHJvdW5kVXAobWF4Qml0cywgOFUpOwotCi0gICAgICAgICAgICBzdGF0aWMgY29uc3QgU3dpenps
ZUluZm9NYXAgc3dpenpsZU1hcCA9IEJ1aWxkU3dpenpsZUluZm9NYXAoKTsKLSAgICAgICAgICAg
IFN3aXp6bGVJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBzd2l6emxlSXRlciA9IHN3aXp6bGVNYXAu
ZmluZChTd2l6emxlU2l6ZVR5cGUobWF4Qml0cywgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlKSk7
Ci0gICAgICAgICAgICBBU1NFUlQoc3dpenpsZUl0ZXIgIT0gc3dpenpsZU1hcC5lbmQoKSk7Ci0K
LSAgICAgICAgICAgIGNvbnN0IFN3aXp6bGVGb3JtYXRJbmZvICZzd2l6emxlSW5mbyA9IHN3aXp6
bGVJdGVyLT5zZWNvbmQ7Ci0gICAgICAgICAgICBpbmZvLnN3aXp6bGVUZXhGb3JtYXQgPSBzd2l6
emxlSW5mby5tVGV4Rm9ybWF0OwotICAgICAgICAgICAgaW5mby5zd2l6emxlU1JWRm9ybWF0ID0g
c3dpenpsZUluZm8ubVNSVkZvcm1hdDsKLSAgICAgICAgICAgIGluZm8uc3dpenpsZVJUVkZvcm1h
dCA9IHN3aXp6bGVJbmZvLm1SVFZGb3JtYXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICAvLyBUaGUgb3JpZ2luYWwgdGV4dHVyZSBmb3JtYXQgaXMgc3Vp
dGFibGUgZm9yIHN3aXp6bGUgb3BlcmF0aW9ucwotICAgICAgICAgICAgaW5mby5zd2l6emxlVGV4
Rm9ybWF0ID0gdGV4Rm9ybWF0OwotICAgICAgICAgICAgaW5mby5zd2l6emxlU1JWRm9ybWF0ID0g
c3J2Rm9ybWF0OwotICAgICAgICAgICAgaW5mby5zd2l6emxlUlRWRm9ybWF0ID0gcnR2Rm9ybWF0
OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIE5vdCBwb3Nz
aWJsZSB0byBzd2l6emxlIHdpdGggdGhpcyB0ZXh0dXJlIGZvcm1hdCBzaW5jZSBpdCBpcyBlaXRo
ZXIgdW5zaXplZCBvciBHTF9OT05FCi0gICAgICAgIGluZm8uc3dpenpsZVRleEZvcm1hdCA9IERY
R0lfRk9STUFUX1VOS05PV047Ci0gICAgICAgIGluZm8uc3dpenpsZVNSVkZvcm1hdCA9IERYR0lf
Rk9STUFUX1VOS05PV047Ci0gICAgICAgIGluZm8uc3dpenpsZVJUVkZvcm1hdCA9IERYR0lfRk9S
TUFUX1VOS05PV047Ci0gICAgfQotCi0gICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gaW5pdGlh
bGl6YXRpb24gZnVuY3Rpb24gZm9yIHRoaXMgdGV4dHVyZSBmb3JtYXQKLSAgICBzdGF0aWMgY29u
c3QgSW50ZXJuYWxGb3JtYXRJbml0aWFsaXplck1hcCBpbml0aWFsaXplck1hcCA9IEJ1aWxkSW50
ZXJuYWxGb3JtYXRJbml0aWFsaXplck1hcCgpOwotICAgIEludGVybmFsRm9ybWF0SW5pdGlhbGl6
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGluaXRpYWxpemVySXRlciA9IGluaXRpYWxpemVyTWFwLmZp
bmQoaW50ZXJuYWxGb3JtYXQpOwotICAgIGluZm8uZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gPSAo
aW5pdGlhbGl6ZXJJdGVyICE9IGluaXRpYWxpemVyTWFwLmVuZCgpKSA/IGluaXRpYWxpemVySXRl
ci0+c2Vjb25kIDogTlVMTDsKLQotICAgIC8vIEdhdGhlciBhbGwgdGhlIGxvYWQgZnVuY3Rpb25z
IGZvciB0aGlzIGludGVybmFsIGZvcm1hdCBmcm9tIHRoZSBiYXNlIGxpc3QKLSAgICBzdGF0aWMg
Y29uc3QgRDNEMTFMb2FkRnVuY3Rpb25NYXAgbG9hZEZ1bmN0aW9ucyA9IEJ1aWxkQmFzZUQzRDEx
TG9hZEZ1bmN0aW9uTWFwKCk7Ci0gICAgRDNEMTFMb2FkRnVuY3Rpb25NYXA6OmNvbnN0X2l0ZXJh
dG9yIGxvYWRGdW5jdGlvbkl0ZXIgPSBsb2FkRnVuY3Rpb25zLmZpbmQoaW50ZXJuYWxGb3JtYXQp
OwotICAgIGlmIChsb2FkRnVuY3Rpb25JdGVyICE9IGxvYWRGdW5jdGlvbnMuZW5kKCkpCi0gICAg
ewotICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxUeXBlTG9hZEZ1bmN0aW9uUGFpcj4gJmxvYWRG
dW5jdGlvblZlY3RvciA9IGxvYWRGdW5jdGlvbkl0ZXItPnNlY29uZDsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsb2FkRnVuY3Rpb25WZWN0b3Iuc2l6ZSgpOyBpKyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEdMZW51bSB0eXBlID0gbG9hZEZ1bmN0aW9uVmVjdG9yW2ldLmZpcnN0
OwotICAgICAgICAgICAgTG9hZEltYWdlRnVuY3Rpb24gZnVuY3Rpb24gPSBsb2FkRnVuY3Rpb25W
ZWN0b3JbaV0uc2Vjb25kOwotICAgICAgICAgICAgaW5mby5sb2FkRnVuY3Rpb25zLmluc2VydChz
dGQ6Om1ha2VfcGFpcih0eXBlLCBmdW5jdGlvbikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gR2F0aGVyIGxvYWQgZnVuY3Rpb25zIGZvciB0aGlzIGludGVybmFsIGZvcm1hdCBmcm9tIHRo
ZSBmZWF0dXJlLWxldmVsLXNwZWNpZmljIGxpc3QKLSAgICBEM0QxMUxvYWRGdW5jdGlvbk1hcDo6
Y29uc3RfaXRlcmF0b3IgZmxMb2FkRnVuY3Rpb25JdGVyID0gZmxMb2FkRnVuY3Rpb25zLmZpbmQo
aW50ZXJuYWxGb3JtYXQpOwotICAgIGlmIChmbExvYWRGdW5jdGlvbkl0ZXIgIT0gZmxMb2FkRnVu
Y3Rpb25zLmVuZCgpKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VHlwZUxvYWRG
dW5jdGlvblBhaXI+ICZmbExvYWRGdW5jdGlvblZlY3RvciA9IGZsTG9hZEZ1bmN0aW9uSXRlci0+
c2Vjb25kOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZsTG9hZEZ1bmN0aW9uVmVj
dG9yLnNpemUoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGVudW0gdHlwZSA9IGZs
TG9hZEZ1bmN0aW9uVmVjdG9yW2ldLmZpcnN0OwotICAgICAgICAgICAgTG9hZEltYWdlRnVuY3Rp
b24gZnVuY3Rpb24gPSBmbExvYWRGdW5jdGlvblZlY3RvcltpXS5zZWNvbmQ7Ci0gICAgICAgICAg
ICBpbmZvLmxvYWRGdW5jdGlvbnMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHR5cGUsIGZ1bmN0aW9u
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3JtYXRNYXAtPmluc2VydChzdGQ6Om1ha2Vf
cGFpcihpbnRlcm5hbEZvcm1hdCwgaW5mbykpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgSW5z
ZXJ0RDNEMTFfRkw5XzNfRm9ybWF0SW5mbyhEM0QxMUVTM0Zvcm1hdE1hcCAqbWFwLCBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIERYR0lfRk9STUFUIHRleEZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHNydkZvcm1hdCwgRFhH
SV9GT1JNQVQgcnR2Rm9ybWF0LCBEWEdJX0ZPUk1BVCBkc3ZGb3JtYXQpCi17Ci0gICAgc3RhdGlj
IGNvbnN0IEQzRDExTG9hZEZ1bmN0aW9uTWFwIGZsTG9hZEZ1bmN0aW9ucyA9IEJ1aWxkRDNEMTFf
Rkw5XzNfTG9hZEZ1bmN0aW9uTWFwKCk7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvQmFzZSht
YXAsIGZsTG9hZEZ1bmN0aW9ucywgaW50ZXJuYWxGb3JtYXQsIHRleEZvcm1hdCwgc3J2Rm9ybWF0
LCBydHZGb3JtYXQsIGRzdkZvcm1hdCk7Ci19Cit0eXBlZGVmIHN0ZDo6bWFwPGdsOjpWZXJ0ZXhG
b3JtYXRUeXBlLCBWZXJ0ZXhGb3JtYXQ+IEQzRDExVmVydGV4Rm9ybWF0SW5mb01hcDsKK3R5cGVk
ZWYgc3RkOjpwYWlyPGdsOjpWZXJ0ZXhGb3JtYXRUeXBlLCBWZXJ0ZXhGb3JtYXQ+IEQzRDExVmVy
dGV4Rm9ybWF0UGFpcjsKIAotc3RhdGljIGlubGluZSB2b2lkIEluc2VydEQzRDExRm9ybWF0SW5m
byhEM0QxMUVTM0Zvcm1hdE1hcCAqbWFwLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIERYR0lfRk9S
TUFUIHRleEZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVQgc3J2Rm9ybWF0LCBEWEdJX0ZPUk1BVCBydHZGb3JtYXQsIERYR0lfRk9STUFU
IGRzdkZvcm1hdCkKLXsKLSAgICBzdGF0aWMgY29uc3QgRDNEMTFMb2FkRnVuY3Rpb25NYXAgZmxM
b2FkRnVuY3Rpb25zID0gQnVpbGREM0QxMV9GTDEwXzBQbHVzX0xvYWRGdW5jdGlvbk1hcCgpOwot
ICAgIEluc2VydEQzRDExRm9ybWF0SW5mb0Jhc2UobWFwLCBmbExvYWRGdW5jdGlvbnMsIGludGVy
bmFsRm9ybWF0LCB0ZXhGb3JtYXQsIHNydkZvcm1hdCwgcnR2Rm9ybWF0LCBkc3ZGb3JtYXQpOwot
fQotCi1zdGF0aWMgRDNEMTFFUzNGb3JtYXRNYXAgQnVpbGREM0QxMV9GTDlfM0Zvcm1hdE92ZXJy
aWRlTWFwKCkKLXsKLSAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVsIDlfMyBkb2Vzbid0IHN1cHBv
cnQgYXMgbWFueSB0ZXh0dXJlIGZvcm1hdHMgYXMgRmVhdHVyZSBMZXZlbCAxMF8wKy4KLSAgICAv
LyBJbiBwYXJ0aWN1bGFyLCBpdCBkb2Vzbid0IHN1cHBvcnQ6Ci0gICAgLy8gICAgICAtIG1pcG1h
cHMgb24gRFhHSV9GT1JNQVRfQThfTk9STQotICAgIC8vICAgICAgLSAqX1RZUEVMRVNTIGZvcm1h
dHMKLSAgICAvLyAgICAgIC0gRFhHSV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlQgb3IgRFhH
SV9GT1JNQVRfRDMyX0ZMT0FUCi0KLSAgICBEM0QxMUVTM0Zvcm1hdE1hcCBtYXA7Ci0KLSAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHTCBpbnRlcm5hbCBmb3JtYXQgICB8
IEQzRDExIHRleHR1cmUgZm9ybWF0ICAgICAgICAgICAgfCBEM0QxMSBTUlYgZm9ybWF0ICAgICAg
ICAgICB8IEQzRDExIFJUViBmb3JtYXQgICAgICAgICAgICB8IEQzRDExIERTViBmb3JtYXQKLSAg
ICBJbnNlcnREM0QxMV9GTDlfM19Gb3JtYXRJbmZvKCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLCAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgRFhHSV9GT1JNQVRfVU5LTk9X
Tik7Ci0gICAgSW5zZXJ0RDNEMTFfRkw5XzNfRm9ybWF0SW5mbygmbWFwLCBHTF9BTFBIQThfRVhU
LCAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgIERYR0lfRk9STUFU
X1VOS05PV04pOwotICAgIEluc2VydEQzRDExX0ZMOV8zX0Zvcm1hdEluZm8oJm1hcCwgR0xfREVQ
VEhfQ09NUE9ORU5UMTYsICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgICBEWEdJ
X0ZPUk1BVF9EMTZfVU5PUk0pOwotICAgIEluc2VydEQzRDExX0ZMOV8zX0Zvcm1hdEluZm8oJm1h
cCwgR0xfREVQVEhfQ09NUE9ORU5UMjQsICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAg
ICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCk7Ci0gICAgSW5zZXJ0RDNEMTFfRkw5
XzNfRm9ybWF0SW5mbygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsIERYR0lfRk9STUFUX1VO
S05PV04sICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04pOwotICAgIEluc2VydEQz
RDExX0ZMOV8zX0Zvcm1hdEluZm8oJm1hcCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgICBEWEdJX0ZP
Uk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VCk7Ci0gICAgSW5zZXJ0RDNEMTFfRkw5XzNfRm9ybWF0SW5mbygmbWFwLCBHTF9ERVBUSDMyRl9T
VEVOQ0lMOCwgIERYR0lfRk9STUFUX1VOS05PV04sICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLCAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04pOwotICAgIEluc2VydEQzRDExX0ZMOV8zX0Zvcm1hdEluZm8oJm1hcCwgR0xfU1RF
TkNJTF9JTkRFWDgsICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgICBEWEdJ
X0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCk7Ci0KLSAgICByZXR1cm4gbWFwOwotfQotCi1zdGF0
aWMgRDNEMTFFUzNGb3JtYXRNYXAgQnVpbGREM0QxMUZvcm1hdE1hcCgpCi17Ci0gICAgRDNEMTFF
UzNGb3JtYXRNYXAgbWFwOwotCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfCBHTCBp
bnRlcm5hbCBmb3JtYXQgIHwgRDNEMTEgdGV4dHVyZSBmb3JtYXQgICAgICAgICAgICB8IEQzRDEx
IFNSViBmb3JtYXQgICAgICAgICAgICAgICB8IEQzRDExIFJUViBmb3JtYXQgICAgICAgICAgICAg
ICB8IEQzRDExIERTViBmb3JtYXQgICB8Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAs
IEdMX05PTkUsICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZv
KCZtYXAsIEdMX1I4LCAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5P
Uk0sICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3Jt
YXRJbmZvKCZtYXAsIEdMX1I4X1NOT1JNLCAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNE
MTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHOCwgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
X1VOT1JNLCAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOF9VTk9STSwgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5z
ZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHOF9TTk9STSwgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4X1NOT1JNLCAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0g
ICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjgsICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
Tik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjhfU05PUk0sICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U05PUk0sICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjU2NSwgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkE0
LCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdM
X1JHQjVfQTEsICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZt
YXAsIEdMX1JHQkE4LCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJ
bmZvKCZtYXAsIEdMX1JHQkE4X1NOT1JNLCAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9S
TSwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFG
b3JtYXRJbmZvKCZtYXAsIEdMX1JHQjEwX0EyLCAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBC
MTBBMl9VTk9STSwgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sICAgRFhHSV9GT1JN
QVRfUjEwRzEwQjEwQTJfVU5PUk0sICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0
RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjEwX0EyVUksICAgICAgICBEWEdJX0ZPUk1BVF9S
MTBHMTBCMTBBMl9VSU5ULCAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwgICAgRFhH
SV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAg
SW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1NSR0I4LCAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLCAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QiwgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7
Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1NSR0I4X0FMUEhBOCwgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLCAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQiwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwgRFhHSV9GT1JNQVRfVU5L
Tk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1IxNkYsICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZM
T0FULCAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULCAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHMTZGLCAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2X0ZMT0FULCAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULCAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JH
QjE2RiwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FU
LCAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAs
IEdMX1JHQkExNkYsICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X0ZMT0FULCAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZv
KCZtYXAsIEdMX1IzMkYsICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZM
T0FULCAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3Jt
YXRJbmZvKCZtYXAsIEdMX1JHMzJGLCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxP
QVQsICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyX0ZMT0FULCAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNE
MTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjMyRiwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQsICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5z
ZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkEzMkYsICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQsICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0g
ICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1IxMUZfRzExRl9CMTBGLCAgICBEWEdJ
X0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQsICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FU
LCAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULCAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
Tik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjlfRTUsICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAsICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVf
U0hBUkVERVhQLCAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1I4SSwgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULCAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhf
U0lOVCwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU0lOVCwgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1I4VUks
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULCAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhfVUlOVCwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdM
X1IxNkksICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2X1NJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1NJTlQsICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZt
YXAsIEdMX1IxNlVJLCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQs
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJ
bmZvKCZtYXAsIEdMX1IzMkksICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1NJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X1NJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFG
b3JtYXRJbmZvKCZtYXAsIEdMX1IzMlVJLCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVUlO
VCwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyX1VJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0
RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHOEksICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4X1NJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULCAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOF9TSU5ULCAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAg
SW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHOFVJLCAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4X1VJTlQsICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULCAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULCAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7
Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHMTZJLCAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQs
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHMTZVSSwgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
X1VJTlQsICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHMzJJLCAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyX1NJTlQsICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JH
MzJVSSwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyRzMyX1VJTlQsICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAs
IEdMX1JHQjhJLCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lO
VCwgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZv
KCZtYXAsIEdMX1JHQjhVSSwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVUlOVCwgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3Jt
YXRJbmZvKCZtYXAsIEdMX1JHQjE2SSwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfU0lOVCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1NJTlQsICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNE
MTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjE2VUksICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfVUlOVCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5z
ZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfU0lOVCwgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0g
ICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQjMyVUksICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJ
TlQsICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsICAgRFhHSV9GT1JNQVRfVU5LTk9X
Tik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkE4SSwgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U0lOVCwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkE4VUksICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVUlOVCwgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdMX1JHQkEx
NkksICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAg
RFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdM
X1JHQkExNlVJLCAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJ
TlQsICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZt
YXAsIEdMX1JHQkEzMkksICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQsICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJ
bmZvKCZtYXAsIEdMX1JHQkEzMlVJLCAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
VUlOVCwgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsICAgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX1VJTlQsICAgRFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0KLSAgICAvLyBVbnNpemVk
IGZvcm1hdHMsIFRPRE86IEFyZSB0eXBlcyBvZiBmbG9hdCBhbmQgaGFsZiBmbG9hdCBhbGxvd2Vk
IGZvciB0aGUgdW5zaXplZCB0eXBlcz8gV291bGQgaXQgY2hhbmdlIHRoZSBEWEdJIGZvcm1hdD8K
LSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICAgIERY
R0lfRk9STUFUX0E4X1VOT1JNLCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNF
X0FMUEhBLCAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfUkdC
LCAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwg
R0xfUkdCQSwgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8o
Jm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCAg
ICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKLQotICAgIC8vIEZyb20gR0xfRVhU
X3RleHR1cmVfc3RvcmFnZQotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHTCBp
bnRlcm5hbCBmb3JtYXQgICAgIHwgRDNEMTEgdGV4dHVyZSBmb3JtYXQgICAgICAgICAgfCBEM0Qx
MSBTUlYgZm9ybWF0ICAgICAgICAgICAgICAgICAgICB8IEQzRDExIFJUViBmb3JtYXQgICAgICAg
ICAgICAgIHwgRDNEMTEgRFNWIGZvcm1hdCAgICAgICAgICAgICAgIHwKLSAgICBJbnNlcnREM0Qx
MUZvcm1hdEluZm8oJm1hcCwgR0xfQUxQSEE4X0VYVCwgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QThfVU5PUk0sICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0E4X1VOT1JNLCAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAg
ICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFOF9F
WFQsICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdElu
Zm8oJm1hcCwgR0xfQUxQSEEzMkZfRVhULCAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX0ZMT0FULCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICAgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsK
LSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFMzJGX0VYVCwgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQsICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgRFhHSV9GT1JN
QVRfVU5LTk9XTiAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwg
R0xfQUxQSEExNkZfRVhULCAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FU
LCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICAgICAgIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCwgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsKLSAgICBJbnNl
cnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFMTZGX0VYVCwgICAgICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwgRFhHSV9GT1JNQVRfVU5LTk9X
TiAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5B
TkNFOF9BTFBIQThfRVhULCAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LCAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZv
cm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCwgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX0ZMT0FULCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICAgICAgIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhB
MTZGX0VYVCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwgRFhH
SV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8o
Jm1hcCwgR0xfQkdSQThfRVhULCAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgICAgICAgICAgIERYR0lfRk9STUFU
X0I4RzhSOEE4X1VOT1JNLCAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsKLSAg
ICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfQkdSQTRfQU5HTEVYLCAgICAgICAgICAg
RFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TSwgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLCAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xf
QkdSNV9BMV9BTkdMRVgsICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sICAgICBE
WEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNLCAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiAgICAgICAgICAgKTsKLQotICAgIC8vIERl
cHRoIHN0ZW5jaWwgZm9ybWF0cwotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9E
RVBUSF9DT01QT05FTlQxNiwgICAgIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUywgICAgICAgIERY
R0lfRk9STUFUX1IxNl9VTk9STSwgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0gICAgICAgICApOwotICAgIEluc2VydEQz
RDExRm9ybWF0SW5mbygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgICAgIERYR0lfRk9STUFU
X1IyNEc4X1RZUEVMRVNTLCAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVCApOwotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9ERVBUSF9DT01Q
T05FTlQzMkYsICAgIERYR0lfRk9STUFUX1IzMl9UWVBFTEVTUywgICAgICAgIERYR0lfRk9STUFU
X1IzMl9GTE9BVCwgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9EMzJfRkxPQVQgICAgICAgICApOwotICAgIEluc2VydEQzRDExRm9ybWF0
SW5mbygmbWFwLCBHTF9ERVBUSDI0X1NURU5DSUw4LCAgICAgIERYR0lfRk9STUFUX1IyNEc4X1RZ
UEVMRVNTLCAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCAp
OwotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwg
ICAgIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNTLCAgIERYR0lfRk9STUFUX1IzMl9GTE9B
VF9YOFgyNF9UWVBFTEVTUywgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVCk7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZt
YXAsIEdMX1NURU5DSUxfSU5ERVg4LCAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1Ms
ICAgICAgRFhHSV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQsICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLCAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UICk7Ci0KLSAg
ICAvLyBGcm9tIEdMX0FOR0xFX2RlcHRoX3RleHR1cmUKLSAgICAvLyBTaW5jZSBEM0QxMSBkb2Vz
bid0IGhhdmUgYSBEMzJfVU5PUk0gZm9ybWF0LCB1c2UgRDI0Uzggd2hpY2ggaGFzIGNvbXBhcmFi
bGUgcHJlY2lzaW9uIGFuZCBtYXRjaGVzIHRoZSBFUzMgZm9ybWF0LgotICAgIEluc2VydEQzRDEx
Rm9ybWF0SW5mbygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsIERYR0lfRk9STUFUX1Iy
NEc4X1RZUEVMRVNTLCAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4
X1VJTlQpOwotCi0gICAgLy8gQ29tcHJlc3NlZCBmb3JtYXRzLCBGcm9tIEVTIDMuMC4xIHNwZWMs
IHRhYmxlIDMuMTYKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR0wgaW50ZXJu
YWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgfCBEM0QxMSB0ZXh0dXJlIGZvcm1hdCB8
IEQzRDExIFNSViBmb3JtYXQgICAgIHwgRDNEMTEgUlRWIGZvcm1hdCAgIHwgRDNEMTEgRFNWIGZv
cm1hdCAgfAotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1Ix
MV9FQUMsICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLCAgIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05P
V04pOwotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1NJR05F
RF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLCAgIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04p
OwotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1JHMTFfRUFD
LCAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLCAgIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwot
ICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQywgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLCAgIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotICAg
IEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLCAgIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotICAgIElu
c2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LCAgIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotICAgIEluc2Vy
dEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FM
UEhBMV9FVEMyLCAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAg
IERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotICAgIEluc2VydEQz
RDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBI
QTFfRVRDMiwgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgIERY
R0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotICAgIEluc2VydEQzRDEx
Rm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgIERYR0lf
Rk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotICAgIEluc2VydEQzRDExRm9y
bWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwgICBEWEdJX0ZPUk1BVF9VTktOT1dOLCAgIERYR0lfRk9S
TUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VOS05PV04pOwotCi0gICAgLy8gRnJvbSBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxCi0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAs
IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CQzFfVU5PUk0sIERYR0lfRk9STUFUX0JDMV9VTk9STSwgRFhHSV9GT1JNQVRfVU5LTk9XTiwg
RFhHSV9GT1JNQVRfVU5LTk9XTik7Ci0gICAgSW5zZXJ0RDNEMTFGb3JtYXRJbmZvKCZtYXAsIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
QzFfVU5PUk0sIERYR0lfRk9STUFUX0JDMV9VTk9STSwgRFhHSV9GT1JNQVRfVU5LTk9XTiwgRFhH
SV9GT1JNQVRfVU5LTk9XTik7Ci0KLSAgICAvLyBGcm9tIEdMX0FOR0xFX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MwotICAgIEluc2VydEQzRDExRm9ybWF0SW5mbygmbWFwLCBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFLCAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMyX1VOT1JNLCBE
WEdJX0ZPUk1BVF9CQzJfVU5PUk0sIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfRk9STUFUX1VO
S05PV04pOwotCi0gICAgLy8gRnJvbSBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUK
LSAgICBJbnNlcnREM0QxMUZvcm1hdEluZm8oJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRSwgICAgICAgICAgIERYR0lfRk9STUFUX0JDM19VTk9STSwgRFhHSV9GT1JNQVRf
QkMzX1VOT1JNLCBEWEdJX0ZPUk1BVF9VTktOT1dOLCBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKLQot
ICAgIHJldHVybiBtYXA7Ci19Ci0KLWNvbnN0IFRleHR1cmVGb3JtYXQgJkdldFRleHR1cmVGb3Jt
YXRJbmZvKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxl
dmVsKQotewotICAgIHN0YXRpYyBjb25zdCBEM0QxMUVTM0Zvcm1hdE1hcCBmb3JtYXRNYXAgPSBC
dWlsZEQzRDExRm9ybWF0TWFwKCk7Ci0gICAgc3RhdGljIGNvbnN0IEQzRDExRVMzRm9ybWF0TWFw
IGZvcm1hdE1hcEZMOV8zT3ZlcnJpZGUgPSBCdWlsZEQzRDExX0ZMOV8zRm9ybWF0T3ZlcnJpZGVN
YXAoKTsKLQotICAgIGlmIChmZWF0dXJlTGV2ZWwgPT0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQot
ICAgIHsKLSAgICAgICAgLy8gRmlyc3Qgc2VlIGlmIHRoZSBpbnRlcm5hbEZvcm1hdCBoYXMgYSBz
cGVjaWFsIG1hcCBmb3IgRkw5XzMKLSAgICAgICAgRDNEMTFFUzNGb3JtYXRNYXA6OmNvbnN0X2l0
ZXJhdG9yIGZsOV8zSXRlciA9IGZvcm1hdE1hcEZMOV8zT3ZlcnJpZGUuZmluZChpbnRlcm5hbEZv
cm1hdCk7Ci0gICAgICAgIGlmIChmbDlfM0l0ZXIgIT0gZm9ybWF0TWFwRkw5XzNPdmVycmlkZS5l
bmQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZsOV8zSXRlci0+c2Vjb25kOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgRDNEMTFFUzNGb3JtYXRNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ZXIgPSBmb3JtYXRNYXAuZmluZChpbnRlcm5hbEZvcm1hdCk7Ci0gICAgaWYgKGl0ZXIgIT0g
Zm9ybWF0TWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
ZGVmYXVsdEluZm87Ci0gICAgICAgIHJldHVybiBkZWZhdWx0SW5mbzsKLSAgICB9Ci19Ci0KLXR5
cGVkZWYgc3RkOjptYXA8Z2w6OlZlcnRleEZvcm1hdCwgVmVydGV4Rm9ybWF0PiBEM0QxMVZlcnRl
eEZvcm1hdEluZm9NYXA7Ci10eXBlZGVmIHN0ZDo6cGFpcjxnbDo6VmVydGV4Rm9ybWF0LCBWZXJ0
ZXhGb3JtYXQ+IEQzRDExVmVydGV4Rm9ybWF0UGFpcjsKLQogVmVydGV4Rm9ybWF0OjpWZXJ0ZXhG
b3JtYXQoKQogICAgIDogY29udmVyc2lvblR5cGUoVkVSVEVYX0NPTlZFUlRfTk9ORSksCiAgICAg
ICBuYXRpdmVGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCkBAIC0xMDY1LDMwICs1NjgsMzEg
QEAKIHsKIH0KIAotc3RhdGljIHZvaWQgQWRkVmVydGV4Rm9ybWF0SW5mbyhEM0QxMVZlcnRleEZv
cm1hdEluZm9NYXAgKm1hcCwgR0xlbnVtIGlucHV0VHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQs
IEdMdWludCBjb21wb25lbnRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVydGV4Q29udmVyc2lvblR5cGUgY29udmVyc2lvblR5cGUsIERYR0lfRk9STUFUIG5hdGl2ZUZv
cm1hdCwgVmVydGV4Q29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbikKK1ZlcnRleEZvcm1hdDo6VmVy
dGV4Rm9ybWF0KFZlcnRleENvbnZlcnNpb25UeXBlIGNvbnZlcnNpb25UeXBlSW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBuYXRpdmVGb3JtYXRJbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnRleENvcHlGdW5jdGlvbiBjb3B5RnVuY3Rpb25JbikKKyAg
ICA6IGNvbnZlcnNpb25UeXBlKGNvbnZlcnNpb25UeXBlSW4pLAorICAgICAgbmF0aXZlRm9ybWF0
KG5hdGl2ZUZvcm1hdEluKSwKKyAgICAgIGNvcHlGdW5jdGlvbihjb3B5RnVuY3Rpb25JbikKIHsK
LSAgICBnbDo6VmVydGV4Rm9ybWF0IGlucHV0Rm9ybWF0KGlucHV0VHlwZSwgbm9ybWFsaXplZCwg
Y29tcG9uZW50Q291bnQsIGZhbHNlKTsKLQotICAgIFZlcnRleEZvcm1hdCBpbmZvOwotICAgIGlu
Zm8uY29udmVyc2lvblR5cGUgPSBjb252ZXJzaW9uVHlwZTsKLSAgICBpbmZvLm5hdGl2ZUZvcm1h
dCA9IG5hdGl2ZUZvcm1hdDsKLSAgICBpbmZvLmNvcHlGdW5jdGlvbiA9IGNvcHlGdW5jdGlvbjsK
LQotICAgIG1hcC0+aW5zZXJ0KEQzRDExVmVydGV4Rm9ybWF0UGFpcihpbnB1dEZvcm1hdCwgaW5m
bykpOwogfQogCi1zdGF0aWMgdm9pZCBBZGRJbnRlZ2VyVmVydGV4Rm9ybWF0SW5mbyhEM0QxMVZl
cnRleEZvcm1hdEluZm9NYXAgKm1hcCwgR0xlbnVtIGlucHV0VHlwZSwgR0x1aW50IGNvbXBvbmVu
dENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVydGV4Q29u
dmVyc2lvblR5cGUgY29udmVyc2lvblR5cGUsIERYR0lfRk9STUFUIG5hdGl2ZUZvcm1hdCwgVmVy
dGV4Q29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbikKK3N0YXRpYyB2b2lkIEFkZFZlcnRleEZvcm1h
dEluZm8oRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwICptYXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnB1dFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgY29tcG9uZW50Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZlcnRleENvbnZlcnNpb25UeXBlIGNvbnZlcnNpb25UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBuYXRpdmVGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlcnRleENvcHlGdW5jdGlvbiBjb3B5RnVuY3Rpb24pCiB7Ci0g
ICAgZ2w6OlZlcnRleEZvcm1hdCBpbnB1dEZvcm1hdChpbnB1dFR5cGUsIEdMX0ZBTFNFLCBjb21w
b25lbnRDb3VudCwgdHJ1ZSk7CisgICAgZ2w6OlZlcnRleEZvcm1hdFR5cGUgZm9ybWF0VHlwZSA9
IGdsOjpHZXRWZXJ0ZXhGb3JtYXRUeXBlKGlucHV0VHlwZSwgbm9ybWFsaXplZCwgY29tcG9uZW50
Q291bnQsIGZhbHNlKTsKIAogICAgIFZlcnRleEZvcm1hdCBpbmZvOwogICAgIGluZm8uY29udmVy
c2lvblR5cGUgPSBjb252ZXJzaW9uVHlwZTsKICAgICBpbmZvLm5hdGl2ZUZvcm1hdCA9IG5hdGl2
ZUZvcm1hdDsKICAgICBpbmZvLmNvcHlGdW5jdGlvbiA9IGNvcHlGdW5jdGlvbjsKIAotICAgIG1h
cC0+aW5zZXJ0KEQzRDExVmVydGV4Rm9ybWF0UGFpcihpbnB1dEZvcm1hdCwgaW5mbykpOworICAg
IG1hcC0+aW5zZXJ0KEQzRDExVmVydGV4Rm9ybWF0UGFpcihmb3JtYXRUeXBlLCBpbmZvKSk7CiB9
CiAKIHN0YXRpYyBEM0QxMVZlcnRleEZvcm1hdEluZm9NYXAgQnVpbGREM0QxMV9GTDlfM1ZlcnRl
eEZvcm1hdEluZm9PdmVycmlkZU1hcCgpCkBAIC0xMTUzLDE4OCArNjU3LDU0MCBAQAogICAgIHJl
dHVybiBtYXA7CiB9CiAKLXN0YXRpYyBEM0QxMVZlcnRleEZvcm1hdEluZm9NYXAgQnVpbGREM0Qx
MVZlcnRleEZvcm1hdEluZm9NYXAoKQorY29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3Jt
YXRJbmZvKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUsIEQzRF9GRUFUVVJF
X0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKLSAgICBEM0QxMVZlcnRleEZvcm1hdEluZm9NYXAgbWFw
OworICAgIGlmIChmZWF0dXJlTGV2ZWwgPT0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQorICAgIHsK
KyAgICAgICAgc3RhdGljIGNvbnN0IEQzRDExVmVydGV4Rm9ybWF0SW5mb01hcCB2ZXJ0ZXhGb3Jt
YXRNYXBGTDlfM092ZXJyaWRlID0KKyAgICAgICAgICAgIEJ1aWxkRDNEMTFfRkw5XzNWZXJ0ZXhG
b3JtYXRJbmZvT3ZlcnJpZGVNYXAoKTsKIAotICAgIC8vIFRPRE86IGNvbHVtbiBsZWdlbmQKKyAg
ICAgICAgLy8gRmlyc3Qgc2VlIGlmIHRoZSBmb3JtYXQgaGFzIGEgc3BlY2lhbCBtYXBwaW5nIGZv
ciBGTDlfMworICAgICAgICBhdXRvIGl0ZXIgPSB2ZXJ0ZXhGb3JtYXRNYXBGTDlfM092ZXJyaWRl
LmZpbmQodmVydGV4Rm9ybWF0VHlwZSk7CisgICAgICAgIGlmIChpdGVyICE9IHZlcnRleEZvcm1h
dE1hcEZMOV8zT3ZlcnJpZGUuZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBp
dGVyLT5zZWNvbmQ7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAvLwotICAgIC8vIEZsb2F0IGZv
cm1hdHMKLSAgICAvLworICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0VHlwZSkKKyAgICB7CisgICAg
ICAgIC8vCisgICAgICAgIC8vIEZsb2F0IGZvcm1hdHMKKyAgICAgICAgLy8KIAotICAgIC8vIEdM
X0JZVEUgLS0gdW4tbm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
QllURSwgICAgICAgICAgIEdMX0ZBTFNFLCAxLCBWRVJURVhfQ09OVkVSVF9HUFUsICBEWEdJX0ZP
Uk1BVF9SOF9TSU5ULCAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDEs
IDEsIDA+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0JZVEUsICAgICAgICAg
ICBHTF9GQUxTRSwgMiwgVkVSVEVYX0NPTlZFUlRfR1BVLCAgRFhHSV9GT1JNQVRfUjhHOF9TSU5U
LCAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAyLCAyLCAwPik7Ci0gICAg
QWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xfRkFMU0UsIDMs
IFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMywgNCwgMT4pOwotICAgIEFkZFZlcnRleEZvcm1h
dEluZm8oJm1hcCwgR0xfQllURSwgICAgICAgICAgIEdMX0ZBTFNFLCA0LCBWRVJURVhfQ09OVkVS
VF9HUFUsICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAgICAgICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTGJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgLy8gR0xfQllURSAtLSB1bi1ub3JtYWxp
emVkCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUxOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
R1BVLCBEWEdJX0ZPUk1BVF9SOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAx
LCAxLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JN
QVRfUjhHOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAyLCAyLCAwPik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1NCWVRFMzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1I4RzhCOEE4
X1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDMsIDQsIDE+KTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfU0JZVEU0OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCA0LCA0LCAwPik7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQogCi0gICAgLy8gR0xfQllURSAtLSBub3JtYWxpemVkCi0gICAg
QWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xfVFJVRSwgIDEs
IFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1NOT1JNLCAgICAgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgMSwgMD4pOwotICAgIEFkZFZlcnRleEZvcm1h
dEluZm8oJm1hcCwgR0xfQllURSwgICAgICAgICAgIEdMX1RSVUUsICAyLCBWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLCAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTGJ5dGUsIDIsIDIsIDA+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdM
X0JZVEUsICAgICAgICAgICBHTF9UUlVFLCAgMywgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfU05PUk0sICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAz
LCA0LCBJTlQ4X01BWD4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfQllURSwg
ICAgICAgICAgIEdMX1RSVUUsICA0LCBWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9TTk9STSwgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDQsIDQsIDA+
KTsKKyAgICAgICAgLy8gR0xfQllURSAtLSBub3JtYWxpemVkCisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfU0JZVEUxX05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9S
OF9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgMSwgMD4pOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9TQllURTJfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhfU05P
Uk0sICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDIsIDIsIDA+KTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRf
U0JZVEUzX05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JN
LCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAzLCA0LCBJTlQ4X01BWD4pOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9TQllURTRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhCOEE4
X1NOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCA0LCA0LCAwPik7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQogCi0gICAgLy8gR0xfVU5TSUdORURfQllURSAt
LSB1bi1ub3JtYWxpemVkCi0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05F
RF9CWVRFLCAgR0xfRkFMU0UsIDEsIFZFUlRFWF9DT05WRVJUX0dQVSwgIERYR0lfRk9STUFUX1I4
X1VJTlQsICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDEsIDEsIDA+
KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICBHTF9G
QUxTRSwgMiwgVkVSVEVYX0NPTlZFUlRfR1BVLCAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULCAgICAg
ICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMiwgMiwgMD4pOwotICAgIEFkZFZl
cnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfQllURSwgIEdMX0ZBTFNFLCAzLCBWRVJU
RVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAgICAgICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTHVieXRlLCAzLCA0LCAxPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5m
bygmbWFwLCBHTF9VTlNJR05FRF9CWVRFLCAgR0xfRkFMU0UsIDQsIFZFUlRFWF9DT05WRVJUX0dQ
VSwgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdWJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgLy8gR0xfVU5TSUdORURfQllURSAtLSB1bi1u
b3JtYWxpemVkCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUxOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SOF9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1
Ynl0ZSwgMSwgMSwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTI6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERY
R0lfRk9STUFUX1I4RzhfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIs
IDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUzOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQk9USCwgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIDQsIDE+KTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfVUJZVEU0OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgNCwgNCwgMD4pOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KIAotICAgIC8vIEdMX1VOU0lHTkVEX0JZVEUg
LS0gbm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURf
QllURSwgIEdMX1RSVUUsICAxLCBWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOF9V
Tk9STSwgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAxLCAxLCAwPik7
Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9CWVRFLCAgR0xfVFJV
RSwgIDIsIFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sICAgICAg
ICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKLSAgICBBZGRWZXJ0
ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICBHTF9UUlVFLCAgMywgVkVSVEVY
X0NPTlZFUlRfQ1BVLCAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgVUlOVDhfTUFYPik7Ci0gICAgQWRkVmVydGV4Rm9y
bWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9CWVRFLCAgR0xfVFJVRSwgIDQsIFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAgICAgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgLy8gR0xfVU5TSUdORURfQllURSAt
LSBub3JtYWxpemVkCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUxX05PUk06
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOF9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdWJ5dGUsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUyX05PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERh
dGE8R0x1Ynl0ZSwgMiwgMiwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTNfTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHVieXRlLCAzLCA0LCBVSU5UOF9NQVg+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEU0X05PUk06Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CiAKLSAgICAvLyBHTF9TSE9SVCAtLSB1bi1ub3JtYWxpemVkCi0gICAgQWRkVmVy
dGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9TSE9SVCwgICAgICAgICAgR0xfRkFMU0UsIDEsIFZFUlRF
WF9DT05WRVJUX0dQVSwgIERYR0lfRk9STUFUX1IxNl9TSU5ULCAgICAgICAgICAgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIDEsIDA+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZv
KCZtYXAsIEdMX1NIT1JULCAgICAgICAgICBHTF9GQUxTRSwgMiwgVkVSVEVYX0NPTlZFUlRfR1BV
LCAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xzaG9ydCwgMiwgMiwgMD4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfU0hP
UlQsICAgICAgICAgIEdMX0ZBTFNFLCAzLCBWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfU0lOVCwgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAzLCA0
LCAxPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9TSE9SVCwgICAgICAgICAg
R0xfRkFMU0UsIDQsIFZFUlRFWF9DT05WRVJUX0dQVSwgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5ULCAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIDQsIDA+KTsKKyAgICAg
ICAgLy8gR0xfU0hPUlQgLS0gdW4tbm9ybWFsaXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NTSE9SVDE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNl9TSU5ULCAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMSwgMD4pOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TU0hP
UlQyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUMzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0xzaG9ydCwgMywgNCwgMT4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQ0OgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVY
X0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CiAKLSAgICAvLyBHTF9TSE9SVCAtLSBub3JtYWxpemVkCi0gICAgQWRkVmVydGV4
Rm9ybWF0SW5mbygmbWFwLCBHTF9TSE9SVCwgICAgICAgICAgR0xfVFJVRSwgIDEsIFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNl9TTk9STSwgICAgICAgICAgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIDEsIDA+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZt
YXAsIEdMX1NIT1JULCAgICAgICAgICBHTF9UUlVFLCAgMiwgVkVSVEVYX0NPTlZFUlRfTk9ORSwg
RFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLCAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xz
aG9ydCwgMiwgMiwgMD4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfU0hPUlQs
ICAgICAgICAgIEdMX1RSVUUsICAzLCBWRVJURVhfQ09OVkVSVF9DUFUsICBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfU05PUk0sICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAzLCA0LCBJ
TlQxNl9NQVg+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1NIT1JULCAgICAg
ICAgICBHTF9UUlVFLCAgNCwgVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgNCwgNCwgMD4pOwor
ICAgICAgICAvLyBHTF9TSE9SVCAtLSBub3JtYWxpemVkCisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfU1NIT1JUMV9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2
X1NOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMSwgMD4pOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9TU0hPUlQyX05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZf
U05PUk0sICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAyLCAyLCAwPik7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NTSE9SVDNfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1NOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMywgNCwgSU5UMTZfTUFY
Pik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1NTSE9SVDRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQs
IDQsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAKLSAgICAvLyBH
TF9VTlNJR05FRF9TSE9SVCAtLSB1bi1ub3JtYWxpemVkCi0gICAgQWRkVmVydGV4Rm9ybWF0SW5m
bygmbWFwLCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfRkFMU0UsIDEsIFZFUlRFWF9DT05WRVJUX0dQ
VSwgIERYR0lfRk9STUFUX1IxNl9VSU5ULCAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdXNob3J0LCAxLCAxLCAwPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9V
TlNJR05FRF9TSE9SVCwgR0xfRkFMU0UsIDIsIFZFUlRFWF9DT05WRVJUX0dQVSwgIERYR0lfRk9S
TUFUX1IxNkcxNl9VSU5ULCAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAy
LCAyLCAwPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9TSE9S
VCwgR0xfRkFMU0UsIDMsIFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9VSU5ULCAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCA0LCAxPik7Ci0g
ICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfRkFMU0Us
IDQsIFZFUlRFWF9DT05WRVJUX0dQVSwgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULCAg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCAwPik7CisgICAgICAgIC8vIEdM
X1VOU0lHTkVEX1NIT1JUIC0tIHVuLW5vcm1hbGl6ZWQKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9VU0hPUlQxOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VT
SE9SVDI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULCAmQ29weU5h
dGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUMzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULCAmQ29weU5h
dGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUNDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KIAotICAgIC8vIEdMX1VOU0lHTkVEX1NIT1JUIC0tIG5vcm1hbGl6ZWQK
LSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVF
LCAgMSwgVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLCAgICAgICAg
ICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDEsIDA+KTsKLSAgICBBZGRWZXJ0
ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFLCAgMiwgVkVSVEVY
X0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLCAgICAgICAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIDA+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZv
KCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFLCAgMywgVkVSVEVYX0NPTlZFUlRfQ1BV
LCAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0x1c2hvcnQsIDMsIDQsIFVJTlQxNl9NQVg+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZt
YXAsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFLCAgNCwgVkVSVEVYX0NPTlZFUlRfTk9ORSwg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1
c2hvcnQsIDQsIDQsIDA+KTsKKyAgICAgICAgLy8gR0xfVU5TSUdORURfU0hPUlQgLS0gbm9ybWFs
aXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDFfTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNl9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdXNob3J0LCAxLCAxLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDJfTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdXNob3J0LCAyLCAyLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDNfTk9STToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLCAmQ29weU5hdGl2ZVZlcnRl
eERhdGE8R0x1c2hvcnQsIDMsIDQsIFVJTlQxNl9NQVg+KTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUNF9O
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLCAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CiAKLSAgICAvLyBHTF9JTlQgLS0gdW4tbm9ybWFsaXplZAot
ICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5ULCAgICAgICAgICAgIEdMX0ZBTFNF
LCAxLCBWRVJURVhfQ09OVkVSVF9HUFUsICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwgICAgICAgICAg
ICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgMSwgMSwgMD4pOwotICAgIEFkZFZlcnRleEZv
cm1hdEluZm8oJm1hcCwgR0xfSU5ULCAgICAgICAgICAgIEdMX0ZBTFNFLCAyLCBWRVJURVhfQ09O
VkVSVF9HUFUsICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgICAgICAgICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTGludCwgMiwgMiwgMD4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwg
R0xfSU5ULCAgICAgICAgICAgIEdMX0ZBTFNFLCAzLCBWRVJURVhfQ09OVkVSVF9HUFUsICBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwg
MywgMywgMD4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5ULCAgICAgICAg
ICAgIEdMX0ZBTFNFLCA0LCBWRVJURVhfQ09OVkVSVF9HUFUsICBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfU0lOVCwgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgNCwgNCwgMD4pOworICAg
ICAgICAvLyBHTF9JTlQgLS0gdW4tbm9ybWFsaXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NJTlQxOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4
Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAxLCAxLCAwPik7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQyOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVS
VEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMaW50LCAyLCAyLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQzOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
R1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
aW50LCAzLCAzLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0OgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCA0
LCA0LCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQogCi0gICAgLy8g
R0xfSU5UIC0tIG5vcm1hbGl6ZWQKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0lO
VCwgICAgICAgICAgICBHTF9UUlVFLCAgMSwgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgRFhHSV9GT1JN
QVRfUjMyX0ZMT0FULCAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxHTGludCwgMSwgMSwg
dHJ1ZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5ULCAgICAgICAgICAg
IEdMX1RSVUUsICAyLCBWRVJURVhfQ09OVkVSVF9DUFUsICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxP
QVQsICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCAyLCAyLCB0cnVlPik7Ci0gICAg
QWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9JTlQsICAgICAgICAgICAgR0xfVFJVRSwgIDMs
IFZFUlRFWF9DT05WRVJUX0NQVSwgIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgICAgJkNv
cHlUbzMyRlZlcnRleERhdGE8R0xpbnQsIDMsIDMsIHRydWU+KTsKLSAgICBBZGRWZXJ0ZXhGb3Jt
YXRJbmZvKCZtYXAsIEdMX0lOVCwgICAgICAgICAgICBHTF9UUlVFLCAgNCwgVkVSVEVYX0NPTlZF
UlRfQ1BVLCAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29weVRvMzJGVmVydGV4
RGF0YTxHTGludCwgNCwgNCwgdHJ1ZT4pOworICAgICAgICAvLyBHTF9JTlQgLS0gbm9ybWFsaXpl
ZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQxX05PUk06CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9DUFUsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xpbnQs
IDEsIDEsIHRydWU+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDJfTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwg
RFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAmQ29weVRvMzJGVmVydGV4RGF0YTxHTGludCwgMiwg
MiwgdHJ1ZT4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UM19OT1JNOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCAzLCAz
LCB0cnVlPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0X05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xpbnQsIDQs
IDQsIHRydWU+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAKLSAgICAv
LyBHTF9VTlNJR05FRF9JTlQgLS0gdW4tbm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdElu
Zm8oJm1hcCwgR0xfVU5TSUdORURfSU5ULCAgIEdMX0ZBTFNFLCAxLCBWRVJURVhfQ09OVkVSVF9H
UFUsICBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHVpbnQsIDEsIDEsIDA+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VO
U0lHTkVEX0lOVCwgICBHTF9GQUxTRSwgMiwgVkVSVEVYX0NPTlZFUlRfR1BVLCAgRFhHSV9GT1JN
QVRfUjMyRzMyX1VJTlQsICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAyLCAy
LCAwPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9JTlQsICAg
R0xfRkFMU0UsIDMsIFZFUlRFWF9DT05WRVJUX0dQVSwgIERYR0lfRk9STUFUX1IzMkczMkIzMl9V
SU5ULCAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMywgMywgMD4pOwotICAgIEFk
ZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfSU5ULCAgIEdMX0ZBTFNFLCA0LCBW
RVJURVhfQ09OVkVSVF9HUFUsICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDQsIDQsIDA+KTsKKyAgICAgICAgLy8gR0xfVU5TSUdO
RURfSU5UIC0tIHVuLW5vcm1hbGl6ZWQKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9V
SU5UMToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyX1VJTlQsICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDI6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMkczMl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0x1aW50LCAyLCAyLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJTlQzOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwg
MywgMywgMD4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UNDoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDQsIDQs
IDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAKLSAgICAvLyBHTF9V
TlNJR05FRF9JTlQgLS0gbm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwg
R0xfVU5TSUdORURfSU5ULCAgIEdMX1RSVUUsICAxLCBWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJ
X0ZPUk1BVF9SMzJfRkxPQVQsICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwg
MSwgMSwgdHJ1ZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURf
SU5ULCAgIEdMX1RSVUUsICAyLCBWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJH
MzJfRkxPQVQsICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgdHJ1ZT4p
OwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfSU5ULCAgIEdMX1RS
VUUsICAzLCBWRVJURVhfQ09OVkVSVF9DUFUsICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQs
ICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwgMywgMywgdHJ1ZT4pOwotICAgIEFkZFZl
cnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfSU5ULCAgIEdMX1RSVUUsICA0LCBWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICZDb3B5VG8z
MkZWZXJ0ZXhEYXRhPEdMdWludCwgNCwgNCwgdHJ1ZT4pOworICAgICAgICAvLyBHTF9VTlNJR05F
RF9JTlQgLS0gbm9ybWFsaXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJTlQx
X05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxH
THVpbnQsIDEsIDEsIHRydWU+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDJfTk9STToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJU
X0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgdHJ1
ZT4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9VSU5UM19OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJfRkxPQVQsICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwgMywgMywgdHJ1
ZT4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9VSU5UNF9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50LCA0LCA0LCB0cnVlPik7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQogCi0gICAgLy8gR0xfRklYRUQKLSAgICBB
ZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0ZJWEVELCAgICAgICAgICBHTF9GQUxTRSwgMSwg
VkVSVEVYX0NPTlZFUlRfQ1BVLCAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCAgICAgICAgICAmQ29w
eTMyRml4ZWRUbzMyRlZlcnRleERhdGE8MSwgMT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8o
Jm1hcCwgR0xfRklYRUQsICAgICAgICAgIEdMX0ZBTFNFLCAyLCBWRVJURVhfQ09OVkVSVF9DUFUs
ICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsICAgICAgICZDb3B5MzJGaXhlZFRvMzJGVmVydGV4
RGF0YTwyLCAyPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9GSVhFRCwgICAg
ICAgICAgR0xfRkFMU0UsIDMsIFZFUlRFWF9DT05WRVJUX0NQVSwgIERYR0lfRk9STUFUX1IzMkcz
MkIzMl9GTE9BVCwgICAgJkNvcHkzMkZpeGVkVG8zMkZWZXJ0ZXhEYXRhPDMsIDM+KTsKLSAgICBB
ZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0ZJWEVELCAgICAgICAgICBHTF9GQUxTRSwgNCwg
VkVSVEVYX0NPTlZFUlRfQ1BVLCAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29w
eTMyRml4ZWRUbzMyRlZlcnRleERhdGE8NCwgND4pOworICAgICAgICAvLyBHTF9GSVhFRAorICAg
ICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZJWEVEMToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhH
SV9GT1JNQVRfUjMyX0ZMT0FULCAmQ29weTMyRml4ZWRUbzMyRlZlcnRleERhdGE8MSwgMT4pOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9GSVhFRDI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9G
TE9BVCwgJkNvcHkzMkZpeGVkVG8zMkZWZXJ0ZXhEYXRhPDIsIDI+KTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRklY
RUQzOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICZDb3B5
MzJGaXhlZFRvMzJGVmVydGV4RGF0YTwzLCAzPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZJWEVENDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29weTMyRml4ZWRU
bzMyRlZlcnRleERhdGE8NCwgND4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KIAotICAgIC8vIEdMX0hBTEZfRkxPQVQKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAs
IEdMX0hBTEZfRkxPQVQsICAgICBHTF9GQUxTRSwgMSwgVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhH
SV9GT1JNQVRfUjE2X0ZMT0FULCAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxm
LCAxLCAxLCAwPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9IQUxGX0ZMT0FU
LCAgICAgR0xfRkFMU0UsIDIsIFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcx
Nl9GTE9BVCwgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaGFsZiwgMiwgMiwgMD4pOwot
ICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSEFMRl9GTE9BVCwgICAgIEdMX0ZBTFNF
LCAzLCBWRVJURVhfQ09OVkVSVF9DUFUsICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
ICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGhhbGYsIDMsIDQsIGdsOjpGbG9hdDE2T25lPik7Ci0g
ICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9IQUxGX0ZMT0FULCAgICAgR0xfRkFMU0Us
IDQsIFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaGFsZiwgNCwgNCwgMD4pOworICAgICAgICAvLyBHTF9I
QUxGX0ZMT0FUCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFMRjE6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
TGhhbGYsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFMRjI6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBE
WEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGhhbGYsIDIs
IDIsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFMRjM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9GTE9BVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaGFsZiwgMywgNCwg
Z2w6OkZsb2F0MTZPbmU+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFMRjQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGhh
bGYsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAKLSAg
ICAvLyBHTF9GTE9BVAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfRkxPQVQsICAg
ICAgICAgIEdMX0ZBTFNFLCAxLCBWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJf
RkxPQVQsICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGZsb2F0LCAxLCAxLCAwPik7
Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9GTE9BVCwgICAgICAgICAgR0xfRkFM
U0UsIDIsIFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAg
ICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMZmxvYXQsIDIsIDIsIDA+KTsKLSAgICBBZGRWZXJ0
ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0ZMT0FULCAgICAgICAgICBHTF9GQUxTRSwgMywgVkVSVEVY
X0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAgICAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0xmbG9hdCwgMywgMywgMD4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8o
Jm1hcCwgR0xfRkxPQVQsICAgICAgICAgIEdMX0ZBTFNFLCA0LCBWRVJURVhfQ09OVkVSVF9OT05F
LCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
TGZsb2F0LCA0LCA0LCAwPik7CisgICAgICAgIC8vIEdMX0ZMT0FUCisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfRkxPQVQxOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xmbG9hdCwgMSwgMSwgMD4pOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9GTE9BVDI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQs
ICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGZsb2F0LCAyLCAyLCAwPik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZM
T0FUMzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMZmxvYXQsIDMsIDMsIDA+KTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRkxPQVQ0
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0xmbG9hdCwgNCwgNCwgMD4pOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KIAotICAgIC8vIEdMX0lOVF8yXzEwXzEwXzEwX1JFVgotICAgIEFk
ZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5UXzJfMTBfMTBfMTBfUkVWLCAgICAgICAgICBH
TF9GQUxTRSwgIDQsIFZFUlRFWF9DT05WRVJUX0NQVSwgIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVlLCBmYWxzZSwgdHJ1
ZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5UXzJfMTBfMTBfMTBfUkVW
LCAgICAgICAgICBHTF9UUlVFLCAgIDQsIFZFUlRFWF9DT05WRVJUX0NQVSwgIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCwgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVl
LCB0cnVlLCAgdHJ1ZT4pOworICAgICAgICAvLyBHTF9JTlRfMl8xMF8xMF8xMF9SRVYKKyAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMjEwOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJ
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICZDb3B5WFlaMTBXMlRvWFlaVzMyRlZlcnRleERh
dGE8dHJ1ZSwgZmFsc2UsIHRydWU+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDIxMF9OT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICZDb3B5WFlaMTBXMlRv
WFlaVzMyRlZlcnRleERhdGE8dHJ1ZSwgdHJ1ZSwgdHJ1ZT4pOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KIAotICAgIC8vIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
VgotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWLCBHTF9GQUxTRSwgIDQsIFZFUlRFWF9DT05WRVJUX0NQVSwgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9GTE9BVCwgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTxmYWxzZSwg
ZmFsc2UsIHRydWU+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVE
X0lOVF8yXzEwXzEwXzEwX1JFViwgR0xfVFJVRSwgICA0LCBWRVJURVhfQ09OVkVSVF9OT05FLCBE
WEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVp
bnQsIDEsIDEsIDA+KTsKKyAgICAgICAgLy8gR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVW
CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDIxMDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQ
VSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29weVhZWjEwVzJUb1hZWlczMkZW
ZXJ0ZXhEYXRhPGZhbHNlLCBmYWxzZSwgdHJ1ZT4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMjEwX05PUk06
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMSwgMSwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KIAotICAgIC8vCi0gICAgLy8gSW50ZWdlciBGb3JtYXRzCi0gICAgLy8K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gSW50ZWdlciBGb3JtYXRzCisgICAgICAgIC8vCiAKLSAg
ICAvLyBHTF9CWVRFCi0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfQllU
RSwgICAgICAgICAgIDEsIFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9SOF9TSU5U
LCAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgMSwgMD4pOwotICAg
IEFkZEludGVnZXJWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0JZVEUsICAgICAgICAgICAyLCBW
RVJURVhfQ09OVkVSVF9OT05FLCAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULCAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDIsIDIsIDA+KTsKLSAgICBBZGRJbnRlZ2VyVmVydGV4
Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgMywgVkVSVEVYX0NPTlZFUlRfQ1BV
LCAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xieXRlLCAzLCA0LCAxPik7Ci0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwg
R0xfQllURSwgICAgICAgICAgIDQsIFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9TSU5ULCAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4p
OworICAgICAgICAvLyBHTF9CWVRFCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZ
VEUxX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1NJTlQsICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUyX0lOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMYnl0ZSwgMiwgMiwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTNfSU5UOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERh
dGE8R0xieXRlLCAzLCA0LCAxPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFNF9JTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xieXRlLCA0LCA0LCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQog
Ci0gICAgLy8gR0xfVU5TSUdORURfQllURQotICAgIEFkZEludGVnZXJWZXJ0ZXhGb3JtYXRJbmZv
KCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICAxLCBWRVJURVhfQ09OVkVSVF9OT05FLCAgRFhHSV9G
T1JNQVRfUjhfVUlOVCwgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAx
LCAxLCAwPik7Ci0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdO
RURfQllURSwgIDIsIFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQs
ICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKLSAgICBB
ZGRJbnRlZ2VyVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9CWVRFLCAgMywgVkVS
VEVYX0NPTlZFUlRfQ1BVLCAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAmQ29weU5h
dGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgMT4pOwotICAgIEFkZEludGVnZXJWZXJ0ZXhG
b3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICA0LCBWRVJURVhfQ09OVkVSVF9OT05F
LCAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THVieXRlLCA0LCA0LCAwPik7CisgICAgICAgIC8vIEdMX1VOU0lHTkVEX0JZVEUKKyAgICAgICAg
Y2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTFfSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhH
SV9GT1JNQVRfUjhfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDEsIDEsIDA+
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfVUJZVEUyX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFU
X1I4RzhfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVUJZVEUzX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIDQsIDE+KTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUJZVEU0X0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCA0LCA0LCAwPik7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQogCi0gICAgLy8gR0xfU0hPUlQKLSAgICBBZGRJ
bnRlZ2VyVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9TSE9SVCwgICAgICAgICAgMSwgVkVSVEVY
X0NPTlZFUlRfTk9ORSwgIERYR0lfRk9STUFUX1IxNl9TSU5ULCAgICAgICAgICAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMSwgMD4pOwotICAgIEFkZEludGVnZXJWZXJ0ZXhGb3Jt
YXRJbmZvKCZtYXAsIEdMX1NIT1JULCAgICAgICAgICAyLCBWRVJURVhfQ09OVkVSVF9OT05FLCAg
RFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNo
b3J0LCAyLCAyLCAwPik7Ci0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
U0hPUlQsICAgICAgICAgIDMsIFZFUlRFWF9DT05WRVJUX0NQVSwgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIDE+KTsK
LSAgICBBZGRJbnRlZ2VyVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9TSE9SVCwgICAgICAgICAg
NCwgVkVSVEVYX0NPTlZFUlRfTk9ORSwgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAvLyBHTF9T
SE9SVAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDFfSU5UOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2X1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THNob3J0LCAxLCAxLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDJfSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
Tk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNo
b3J0LCAyLCAyLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDNfSU5UOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BV
LCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
c2hvcnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUNF9JTlQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9O
T05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMc2hvcnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9
CiAKLSAgICAvLyBHTF9VTlNJR05FRF9TSE9SVAotICAgIEFkZEludGVnZXJWZXJ0ZXhGb3JtYXRJ
bmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCAxLCBWRVJURVhfQ09OVkVSVF9OT05FLCAgRFhH
SV9GT1JNQVRfUjE2X1VJTlQsICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9y
dCwgMSwgMSwgMD4pOwotICAgIEFkZEludGVnZXJWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VO
U0lHTkVEX1NIT1JULCAyLCBWRVJURVhfQ09OVkVSVF9OT05FLCAgRFhHSV9GT1JNQVRfUjE2RzE2
X1VJTlQsICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgMiwgMiwgMD4pOwot
ICAgIEFkZEludGVnZXJWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCAz
LCBWRVJURVhfQ09OVkVSVF9DUFUsICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgMywgNCwgMT4pOwotICAgIEFkZEludGVnZXJW
ZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCA0LCBWRVJURVhfQ09OVkVS
VF9OT05FLCAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAvLyBHTF9VTlNJR05FRF9TSE9SVAor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDFfSU5UOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
Tk9ORSwgRFhHSV9GT1JNQVRfUjE2X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9y
dCwgMSwgMSwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQyX0lOVDoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUs
IERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQs
IDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUM19JTlQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hv
cnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUNF9JTlQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05F
LCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
dXNob3J0LCA0LCA0LCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQog
Ci0gICAgLy8gR0xfSU5UCi0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
SU5ULCAgICAgICAgICAgIDEsIFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9SMzJf
U0lOVCwgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAxLCAxLCAwPik7Ci0g
ICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5ULCAgICAgICAgICAgIDIs
IFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAyLCAyLCAwPik7Ci0gICAgQWRkSW50ZWdlclZlcnRl
eEZvcm1hdEluZm8oJm1hcCwgR0xfSU5ULCAgICAgICAgICAgIDMsIFZFUlRFWF9DT05WRVJUX05P
TkUsICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMaW50LCAzLCAzLCAwPik7Ci0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwg
R0xfSU5ULCAgICAgICAgICAgIDQsIFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCA0LCA0LCAwPik7
CisgICAgICAgIC8vIEdMX0lOVAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQx
X0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMl9TSU5ULCAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0xpbnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDJfSU5UOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVY
X0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTGludCwgMiwgMiwgMD4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UM19JTlQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMaW50LCAzLCAzLCAwPik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0X0lOVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05P
TkUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xpbnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAK
LSAgICAvLyBHTF9VTlNJR05FRF9JTlQKLSAgICBBZGRJbnRlZ2VyVmVydGV4Rm9ybWF0SW5mbygm
bWFwLCBHTF9VTlNJR05FRF9JTlQsICAgMSwgVkVSVEVYX0NPTlZFUlRfTk9ORSwgIERYR0lfRk9S
TUFUX1IzMl9TSU5ULCAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAxLCAx
LCAwPik7Ci0gICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURf
SU5ULCAgIDIsIFZFUlRFWF9DT05WRVJUX05PTkUsICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwg
ICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgMD4pOwotICAgIEFkZElu
dGVnZXJWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0lOVCwgICAzLCBWRVJURVhf
Q09OVkVSVF9OT05FLCAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQsICAgICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTHVpbnQsIDMsIDMsIDA+KTsKLSAgICBBZGRJbnRlZ2VyVmVydGV4Rm9ybWF0
SW5mbygmbWFwLCBHTF9VTlNJR05FRF9JTlQsICAgNCwgVkVSVEVYX0NPTlZFUlRfTk9ORSwgIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50
LCA0LCA0LCAwPik7CisgICAgICAgIC8vIEdMX1VOU0lHTkVEX0lOVAorICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VJTlQxX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFU
X1IzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAxLCAxLCAwPik7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1VJTlQyX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMl9T
SU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAyLCAyLCAwPik7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VJTlQzX0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZv
cm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5U
LCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAzLCAzLCAwPik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJ
TlQ0X0lOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5U
LCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCA0LCA0LCAwPik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQogCi0gICAgLy8gR0xfSU5UXzJfMTBfMTBfMTBfUkVWCi0g
ICAgQWRkSW50ZWdlclZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfSU5UXzJfMTBfMTBfMTBfUkVW
LCA0LCBWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAm
Q29weVhZWjEwVzJUb1hZWlczMkZWZXJ0ZXhEYXRhPHRydWUsIHRydWUsIGZhbHNlPik7CisgICAg
ICAgIC8vIEdMX0lOVF8yXzEwXzEwXzEwX1JFVgorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NJTlQyMTBfSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfU0lOVCwgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVlLCB0cnVlLCBmYWxz
ZT4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KIAotICAgIC8vIEdMX1VO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFVgotICAgIEFkZEludGVnZXJWZXJ0ZXhGb3JtYXRJbmZv
KCZtYXAsIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgNCwgVkVSVEVYX0NPTlZFUlRf
Tk9ORSwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdWludCwgMSwgMSwgMD4pOworICAgICAgICAvLyBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8x
MF9SRVYKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMjEwX0lOVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CiAKLSAgICByZXR1cm4gbWFwOwotfQotCi1jb25zdCBWZXJ0ZXhGb3JtYXQgJkdldFZl
cnRleEZvcm1hdEluZm8oY29uc3QgZ2w6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0LCBEM0Rf
RkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCi17Ci0gICAgc3RhdGljIGNvbnN0IEQzRDExVmVy
dGV4Rm9ybWF0SW5mb01hcCB2ZXJ0ZXhGb3JtYXRNYXAgPSBCdWlsZEQzRDExVmVydGV4Rm9ybWF0
SW5mb01hcCgpOwotICAgIHN0YXRpYyBjb25zdCBEM0QxMVZlcnRleEZvcm1hdEluZm9NYXAgdmVy
dGV4Rm9ybWF0TWFwRkw5XzNPdmVycmlkZSA9IEJ1aWxkRDNEMTFfRkw5XzNWZXJ0ZXhGb3JtYXRJ
bmZvT3ZlcnJpZGVNYXAoKTsKLQotICAgIGlmIChmZWF0dXJlTGV2ZWwgPT0gRDNEX0ZFQVRVUkVf
TEVWRUxfOV8zKQotICAgIHsKLSAgICAgICAgLy8gRmlyc3Qgc2VlIGlmIHRoZSBmb3JtYXQgaGFz
IGEgc3BlY2lhbCBtYXBwaW5nIGZvciBGTDlfMwotICAgICAgICBEM0QxMVZlcnRleEZvcm1hdElu
Zm9NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB2ZXJ0ZXhGb3JtYXRNYXBGTDlfM092ZXJyaWRl
LmZpbmQodmVydGV4Rm9ybWF0KTsKLSAgICAgICAgaWYgKGl0ZXIgIT0gdmVydGV4Rm9ybWF0TWFw
Rkw5XzNPdmVycmlkZS5lbmQoKSkKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgaW5mbzsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
fQotCi0gICAgRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0g
dmVydGV4Rm9ybWF0TWFwLmZpbmQodmVydGV4Rm9ybWF0KTsKLSAgICBpZiAoaXRlciAhPSB2ZXJ0
ZXhGb3JtYXRNYXAuZW5kKCkpCi0gICAgewotICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0
IGRlZmF1bHRJbmZvOwotICAgICAgICByZXR1cm4gZGVmYXVsdEluZm87Ci0gICAgfQogfQogCiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2Zvcm1hdHV0aWxzMTEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDE1
ICsxMCwxNiBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfRk9STUFUVVRJ
TFMxMV9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfRk9STUFUVVRJTFMx
MV9IXwogCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgPG1hcD4KIAogI2lu
Y2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oIgogCi0jaW5jbHVkZSA8bWFwPgotCiBuYW1l
c3BhY2UgcngKIHsKK3N0cnVjdCBSZW5kZXJlcjExRGV2aWNlQ2FwczsKIAogbmFtZXNwYWNlIGQz
ZDExCiB7CkBAIC0zMCwxMCArMzEsNiBAQAogewogICAgIERYR0lGb3JtYXQoKTsKIAotICAgIEdM
dWludCBwaXhlbEJ5dGVzOwotICAgIEdMdWludCBibG9ja1dpZHRoOwotICAgIEdMdWludCBibG9j
a0hlaWdodDsKLQogICAgIEdMdWludCByZWRCaXRzOwogICAgIEdMdWludCBncmVlbkJpdHM7CiAg
ICAgR0x1aW50IGJsdWVCaXRzOwpAQCAtNDEsNTcgKzM4LDQ5IEBACiAgICAgR0x1aW50IHNoYXJl
ZEJpdHM7CiAKICAgICBHTHVpbnQgZGVwdGhCaXRzOwotICAgIEdMdWludCBkZXB0aE9mZnNldDsK
ICAgICBHTHVpbnQgc3RlbmNpbEJpdHM7Ci0gICAgR0x1aW50IHN0ZW5jaWxPZmZzZXQ7CiAKLSAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQ7CiAgICAgR0xlbnVtIGNvbXBvbmVudFR5cGU7CiAKLSAg
ICBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uOwotICAgIENvbG9y
UmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uOwotCiAgICAgRmFzdENvcHlGdW5jdGlvbk1h
cCBmYXN0Q29weUZ1bmN0aW9uczsKIAogICAgIE5hdGl2ZU1pcG1hcEdlbmVyYXRpb25TdXBwb3J0
RnVuY3Rpb24gbmF0aXZlTWlwbWFwU3VwcG9ydDsKIAogICAgIENvbG9yQ29weUZ1bmN0aW9uIGdl
dEZhc3RDb3B5RnVuY3Rpb24oR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUpIGNvbnN0OwogfTsK
KworLy8gVGhpcyBzdHJ1Y3R1cmUgaXMgcHJvYmxlbWF0aWMgYmVjYXVzZSBhIHJlc291cmNlIGlz
IGFzc29jaWF0ZWQgd2l0aCBtdWx0aXBsZSBEWEdJIGZvcm1hdHMuCisvLyBGb3IgZXhhbXBsZSwg
YSB0ZXh0dXJlIG1pZ2h0IGJlIHN0b3JlZCBhcyBEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MgYnV0
IHN0b3JlIGludGVnZXIgY29tcG9uZW50cywKKy8vIHdoaWNoIGFyZSBhY2Nlc3NlZCB0aHJvdWdo
IGFuIERYR0lfRk9STUFUX1IxNl9TSU5UIHZpZXcuIEl0J3MgZWFzeSB0byB3cml0ZSBjb2RlIHdo
aWNoIHF1ZXJpZXMKKy8vIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3cm9uZyBmb3JtYXQuIFRoZXJl
Zm9yZSwgdXNlIG9mIHRoaXMgc2hvdWxkIGJlIGF2b2lkZWQgd2hlcmUgcG9zc2libGUuCiBjb25z
dCBEWEdJRm9ybWF0ICZHZXREWEdJRm9ybWF0SW5mbyhEWEdJX0ZPUk1BVCBmb3JtYXQpOwogCi1z
dHJ1Y3QgVGV4dHVyZUZvcm1hdAorc3RydWN0IERYR0lGb3JtYXRTaXplCiB7Ci0gICAgVGV4dHVy
ZUZvcm1hdCgpOworICAgIERYR0lGb3JtYXRTaXplKEdMdWludCBwaXhlbEJpdHMsIEdMdWludCBi
bG9ja1dpZHRoLCBHTHVpbnQgYmxvY2tIZWlnaHQpOwogCi0gICAgRFhHSV9GT1JNQVQgdGV4Rm9y
bWF0OwotICAgIERYR0lfRk9STUFUIHNydkZvcm1hdDsKLSAgICBEWEdJX0ZPUk1BVCBydHZGb3Jt
YXQ7Ci0gICAgRFhHSV9GT1JNQVQgZHN2Rm9ybWF0OwotICAgIERYR0lfRk9STUFUIHJlbmRlckZv
cm1hdDsKLQotICAgIERYR0lfRk9STUFUIHN3aXp6bGVUZXhGb3JtYXQ7Ci0gICAgRFhHSV9GT1JN
QVQgc3dpenpsZVNSVkZvcm1hdDsKLSAgICBEWEdJX0ZPUk1BVCBzd2l6emxlUlRWRm9ybWF0Owot
Ci0gICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gZGF0YUluaXRpYWxpemVyRnVuY3Rp
b247Ci0KLSAgICB0eXBlZGVmIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb24+IExv
YWRGdW5jdGlvbk1hcDsKLSAgICBMb2FkRnVuY3Rpb25NYXAgbG9hZEZ1bmN0aW9uczsKKyAgICBH
THVpbnQgcGl4ZWxCeXRlczsKKyAgICBHTHVpbnQgYmxvY2tXaWR0aDsKKyAgICBHTHVpbnQgYmxv
Y2tIZWlnaHQ7CiB9OwotY29uc3QgVGV4dHVyZUZvcm1hdCAmR2V0VGV4dHVyZUZvcm1hdEluZm8o
R0xlbnVtIGludGVybmFsRm9ybWF0LCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpOwor
Y29uc3QgRFhHSUZvcm1hdFNpemUgJkdldERYR0lGb3JtYXRTaXplSW5mbyhEWEdJX0ZPUk1BVCBm
b3JtYXQpOwogCiBzdHJ1Y3QgVmVydGV4Rm9ybWF0CiB7CiAgICAgVmVydGV4Rm9ybWF0KCk7Cisg
ICAgVmVydGV4Rm9ybWF0KFZlcnRleENvbnZlcnNpb25UeXBlIGNvbnZlcnNpb25UeXBlLAorICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBuYXRpdmVGb3JtYXQsCisgICAgICAgICAgICAgICAg
IFZlcnRleENvcHlGdW5jdGlvbiBjb3B5RnVuY3Rpb24pOwogCiAgICAgVmVydGV4Q29udmVyc2lv
blR5cGUgY29udmVyc2lvblR5cGU7CiAgICAgRFhHSV9GT1JNQVQgbmF0aXZlRm9ybWF0OwogICAg
IFZlcnRleENvcHlGdW5jdGlvbiBjb3B5RnVuY3Rpb247CiB9OwotY29uc3QgVmVydGV4Rm9ybWF0
ICZHZXRWZXJ0ZXhGb3JtYXRJbmZvKGNvbnN0IGdsOjpWZXJ0ZXhGb3JtYXQgJnZlcnRleEZvcm1h
dCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKK2NvbnN0IFZlcnRleEZvcm1hdCAm
R2V0VmVydGV4Rm9ybWF0SW5mbyhnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRF9GRUFUVVJFX0xF
VkVMIGZlYXR1cmVMZXZlbCk7CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBkM2QxMQogCi19Cit9ICAv
LyBuYW1lc3BhY2UgcngKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9G
T1JNQVRVVElMUzExX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX3N1cHBvcnRfdGFibGVzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdp
X3N1cHBvcnRfdGFibGVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQzIEBACisjIS91
c3IvYmluL3B5dGhvbgorIyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisjIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisjCisjIGdlbl9keGdpX3N1cHBvcnRfdGFibGVzLnB5OgorIyAgQ29kZSBn
ZW5lcmF0aW9uIGZvciB0aGUgRFhHSSBzdXBwb3J0IHRhYmxlcy4gRGV0ZXJtaW5lcyB3aGljaCBm
b3JtYXRzCisjICBhcmUgbmF0aXZlbHkgc3VwcG9ydCBpbiBEM0QxMCsuCisjCisjIE1TRE4gbGlu
a3M6CisjICAxMF8wOiBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dp
bmRvd3MvZGVza3RvcC9jYzYyNzA5MC5hc3B4CisjICAxMF8xOiBodHRwczovL21zZG4ubWljcm9z
b2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9jYzYyNzA5MS5hc3B4CisjICAx
MV8wOiBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVz
a3RvcC9mZjQ3MTMyNS5hc3B4CisjICAxMV8xOiBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9oaDQwNDQ4My5hc3B4CisKK2ltcG9ydCBzeXMK
K2ltcG9ydCBqc29uCisKK21hY3JvX3ByZWZpeCA9ICdGXycKKwordGVtcGxhdGUgPSAiIiIvLyBH
RU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULiBTZWUgZHhnaV9zdXBwb3J0X2RhdGEuanNvbi4K
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBkeGdpX3N1cHBvcnRfdGFibGU6CisvLyAgIFF1ZXJpZXMgZm9yIERYR0kg
c3VwcG9ydCBvZiB2YXJpb3VzIHRleHR1cmUgZm9ybWF0cy4gRGVwZW5kcyBvbiBEWEdJCisvLyAg
IHZlcnNpb24sIEQzRCBmZWF0dXJlIGxldmVsLCBhbmQgaXMgc29tZXRpbWVzIGd1YXJhbnRlZWQg
b3Igb3B0aW9uYWwuCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2R4Z2lfc3VwcG9ydF90YWJsZS5oIgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25h
bWVzcGFjZSByeAore3sKKworbmFtZXNwYWNlIGQzZDExCit7eworCisjZGVmaW5lIHtwcmVmaXh9
MkQgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJECisjZGVmaW5lIHtwcmVmaXh9M0QgRDNE
MTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNECisjZGVmaW5lIHtwcmVmaXh9Q1VCRSBEM0QxMV9G
T1JNQVRfU1VQUE9SVF9URVhUVVJFQ1VCRQorI2RlZmluZSB7cHJlZml4fVNBTVBMRSBEM0QxMV9G
T1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExFCisjZGVmaW5lIHtwcmVmaXh9UlQgRDNEMTFfRk9S
TUFUX1NVUFBPUlRfUkVOREVSX1RBUkdFVAorI2RlZmluZSB7cHJlZml4fU1TIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdFVAorI2RlZmluZSB7cHJlZml4fURTIEQz
RDExX0ZPUk1BVF9TVVBQT1JUX0RFUFRIX1NURU5DSUwKKworbmFtZXNwYWNlCit7eworCitjb25z
dCBEWEdJU3VwcG9ydCAmR2V0RGVmYXVsdFN1cHBvcnQoKQore3sKKyAgICBzdGF0aWMgVUlOVCBB
bGxTdXBwb3J0RmxhZ3MgPSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFMkQgfAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUz
RCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBP
UlRfVEVYVFVSRUNVQkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDEx
X0ZPUk1BVF9TVVBQT1JUX1NIQURFUl9TQU1QTEUgfAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQgfAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExF
X1JFTkRFUlRBUkdFVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFf
Rk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJTDsKKyAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBv
cnQgZGVmYXVsdFN1cHBvcnQoMCwgMCwgQWxsU3VwcG9ydEZsYWdzKTsKKyAgICByZXR1cm4gZGVm
YXVsdFN1cHBvcnQ7Cit9fQorCitjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhHSVN1cHBvcnRfMTBf
MChEWEdJX0ZPUk1BVCBkeGdpRm9ybWF0KQore3sKKyAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisg
ICAge3sKK3t0YWJsZV9kYXRhXzEwXzB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIEdldERlZmF1bHRTdXBwb3J0KCk7Cisg
ICAgfX0KK319CisKK2NvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF8xMF8xKERYR0lf
Rk9STUFUIGR4Z2lGb3JtYXQpCit7eworICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICB7ewor
e3RhYmxlX2RhdGFfMTBfMX0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gR2V0RGVmYXVsdFN1cHBvcnQoKTsKKyAgICB9fQor
fX0KKworY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzExXzAoRFhHSV9GT1JNQVQg
ZHhnaUZvcm1hdCkKK3t7CisgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgIHt7Cit7dGFibGVf
ZGF0YV8xMV8wfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBHZXREZWZhdWx0U3VwcG9ydCgpOworICAgIH19Cit9fQorCit9
fQorCisjdW5kZWYge3ByZWZpeH0yRAorI3VuZGVmIHtwcmVmaXh9M0QKKyN1bmRlZiB7cHJlZml4
fUNVQkUKKyN1bmRlZiB7cHJlZml4fVNBTVBMRQorI3VuZGVmIHtwcmVmaXh9UlQKKyN1bmRlZiB7
cHJlZml4fU1TCisjdW5kZWYge3ByZWZpeH1EUworCitjb25zdCBEWEdJU3VwcG9ydCAmR2V0RFhH
SVN1cHBvcnQoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVy
ZUxldmVsKQore3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7eworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gR2V0RFhHSVN1
cHBvcnRfMTBfMChkeGdpRm9ybWF0KTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8x
MF8xOgorICAgICAgICAgICAgcmV0dXJuIEdldERYR0lTdXBwb3J0XzEwXzEoZHhnaUZvcm1hdCk7
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVy
biBHZXREWEdJU3VwcG9ydF8xMV8wKGR4Z2lGb3JtYXQpOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIEdldERlZmF1bHRTdXBwb3J0KCk7CisgICAgfX0KK319CisKK319IC8v
IG5hbWVzcGFjZSBkM2QxMQorCit9fSAvLyBuYW1lc3BhY2UgcngKKyIiIgorCit0YWJsZV9pbml0
ID0gIiIKKworZGVmIGRvX2Zvcm1hdChmb3JtYXRfZGF0YSk6CisgICAgdGFibGVfZGF0YSA9IHsn
MTBfMCc6ICcnLCAnMTBfMSc6ICcnLCAnMTFfMCc6ICcnfQorCisgICAganNvbl9mbGFnX3RvX2Qz
ZCA9IHsKKyAgICAgICAgJ3RleHR1cmUyRCc6IG1hY3JvX3ByZWZpeCArICcyRCcsCisgICAgICAg
ICd0ZXh0dXJlM0QnOiBtYWNyb19wcmVmaXggKyAnM0QnLAorICAgICAgICAndGV4dHVyZUN1YmUn
OiBtYWNyb19wcmVmaXggKyAnQ1VCRScsCisgICAgICAgICdzaGFkZXJTYW1wbGUnOiBtYWNyb19w
cmVmaXggKyAnU0FNUExFJywKKyAgICAgICAgJ3JlbmRlclRhcmdldCc6IG1hY3JvX3ByZWZpeCAr
ICdSVCcsCisgICAgICAgICdtdWx0aXNhbXBsZVJUJzogbWFjcm9fcHJlZml4ICsgJ01TJywKKyAg
ICAgICAgJ2RlcHRoU3RlbmNpbCc6IG1hY3JvX3ByZWZpeCArICdEUycKKyAgICB9CisKKyAgICBm
b3IgZm9ybWF0X25hbWUsIGZvcm1hdF9zdXBwb3J0IGluIHNvcnRlZChmb3JtYXRfZGF0YS5pdGVy
aXRlbXMoKSk6CisKKyAgICAgICAgYWx3YXlzX3N1cHBvcnRlZCA9IHNldCgpCisgICAgICAgIG5l
dmVyX3N1cHBvcnRlZCA9IHNldCgpCisgICAgICAgIG9wdGlvbmFsbHlfc3VwcG9ydGVkID0gc2V0
KCkKKyAgICAgICAgZmxfMTBfMV9zdXBwb3J0ZWQgPSBzZXQoKQorICAgICAgICBmbF8xMV8wX3N1
cHBvcnRlZCA9IHNldCgpCisgICAgICAgIGZsXzExXzBfY2hlY2sgPSBzZXQoKQorICAgICAgICBm
bF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkID0gc2V0KCkKKyAgICAgICAgZmxfMTBfMF9jaGVj
a18xMV8wX3N1cHBvcnRlZCA9IHNldCgpCisKKyAgICAgICAgZm9yIGpzb25fZmxhZywgc3VwcG9y
dCBpbiBmb3JtYXRfc3VwcG9ydC5pdGVyaXRlbXMoKToKKworICAgICAgICAgICAgZDNkX2ZsYWcg
PSBbanNvbl9mbGFnX3RvX2QzZFtqc29uX2ZsYWddXQorCisgICAgICAgICAgICBpZiBzdXBwb3J0
ID09ICdjaGVjayc6CisgICAgICAgICAgICAgICAgb3B0aW9uYWxseV9zdXBwb3J0ZWQudXBkYXRl
KGQzZF9mbGFnKQorICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICdhbHdheXMnOgorICAgICAg
ICAgICAgICAgIGFsd2F5c19zdXBwb3J0ZWQudXBkYXRlKGQzZF9mbGFnKQorICAgICAgICAgICAg
ZWxpZiBzdXBwb3J0ID09ICduZXZlcic6CisgICAgICAgICAgICAgICAgbmV2ZXJfc3VwcG9ydGVk
LnVwZGF0ZShkM2RfZmxhZykKKyAgICAgICAgICAgIGVsaWYgc3VwcG9ydCA9PSAnMTBfMCc6Cisg
ICAgICAgICAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBGTCA5XzMgaGFuZGxpbmcKKyAgICAgICAg
ICAgICAgICBhbHdheXNfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKKyAgICAgICAgICAgIGVs
aWYgc3VwcG9ydCA9PSAnMTBfMSc6CisgICAgICAgICAgICAgICAgZmxfMTBfMV9zdXBwb3J0ZWQu
dXBkYXRlKGQzZF9mbGFnKQorICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICcxMV8wJzoKKyAg
ICAgICAgICAgICAgICBmbF8xMV8wX3N1cHBvcnRlZC51cGRhdGUoZDNkX2ZsYWcpCisgICAgICAg
ICAgICBlbGlmIHN1cHBvcnQgPT0gJzExXzEnOgorICAgICAgICAgICAgICAgICMgVE9ETyhqbWFk
aWxsKTogRDNEIDExLjEgaGFuZGxpbmcKKyAgICAgICAgICAgICAgICBuZXZlcl9zdXBwb3J0ZWQu
dXBkYXRlKGQzZF9mbGFnKQorICAgICAgICAgICAgZWxpZiBzdXBwb3J0ID09ICdkeGdpMV8yJzoK
KyAgICAgICAgICAgICAgICAjIFRPRE8oam1hZGlsbCk6IERYR0kgMS4yIGhhbmRsaW5nLgorICAg
ICAgICAgICAgICAgIGFsd2F5c19zdXBwb3J0ZWQudXBkYXRlKGQzZF9mbGFnKQorICAgICAgICAg
ICAgZWxpZiBzdXBwb3J0ID09ICcxMF8wY2hlY2sxMF8xYWx3YXlzJzoKKyAgICAgICAgICAgICAg
ICBmbF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkLnVwZGF0ZShkM2RfZmxhZykKKyAgICAgICAg
ICAgIGVsaWYgc3VwcG9ydCA9PSAnMTBfMGNoZWNrMTFfMGFsd2F5cyc6CisgICAgICAgICAgICAg
ICAgZmxfMTBfMF9jaGVja18xMV8wX3N1cHBvcnRlZC51cGRhdGUoZDNkX2ZsYWcpCisgICAgICAg
ICAgICBlbGlmIHN1cHBvcnQgPT0gJzExXzBjaGVjayc6CisgICAgICAgICAgICAgICAgZmxfMTFf
MF9jaGVjay51cGRhdGUoZDNkX2ZsYWcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIHByaW50KCJEYXRhIHNwZWNpZmljYXRpb24gZXJyb3I6ICIgKyBzdXBwb3J0KQorICAgICAg
ICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgZm9yIGZlYXR1cmVfbGV2ZWwgaW4gWycx
MF8wJywgJzEwXzEnLCAnMTFfMCddOgorICAgICAgICAgICAgYWx3YXlzX2Zvcl9mbCA9IGFsd2F5
c19zdXBwb3J0ZWQKKyAgICAgICAgICAgIG9wdGlvbmFsX2Zvcl9mbCA9IG9wdGlvbmFsbHlfc3Vw
cG9ydGVkCisgICAgICAgICAgICBpZiBmZWF0dXJlX2xldmVsID09ICcxMF8wJzoKKyAgICAgICAg
ICAgICAgICBvcHRpb25hbF9mb3JfZmwgPSBmbF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkLnVu
aW9uKG9wdGlvbmFsX2Zvcl9mbCkKKyAgICAgICAgICAgICAgICBvcHRpb25hbF9mb3JfZmwgPSBm
bF8xMF8wX2NoZWNrXzExXzBfc3VwcG9ydGVkLnVuaW9uKG9wdGlvbmFsX2Zvcl9mbCkKKyAgICAg
ICAgICAgIGlmIGZlYXR1cmVfbGV2ZWwgPT0gJzEwXzEnOgorICAgICAgICAgICAgICAgIGFsd2F5
c19mb3JfZmwgPSBmbF8xMF8xX3N1cHBvcnRlZC51bmlvbihhbHdheXNfZm9yX2ZsKQorICAgICAg
ICAgICAgICAgIGFsd2F5c19mb3JfZmwgPSBmbF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkLnVu
aW9uKGFsd2F5c19mb3JfZmwpCisgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9yX2ZsID0gZmxf
MTBfMF9jaGVja18xMV8wX3N1cHBvcnRlZC51bmlvbihvcHRpb25hbF9mb3JfZmwpCisgICAgICAg
ICAgICBlbGlmIGZlYXR1cmVfbGV2ZWwgPT0gJzExXzAnOgorICAgICAgICAgICAgICAgIGFsd2F5
c19mb3JfZmwgPSBmbF8xMF8wX2NoZWNrXzEwXzFfc3VwcG9ydGVkLnVuaW9uKGFsd2F5c19mb3Jf
ZmwpCisgICAgICAgICAgICAgICAgYWx3YXlzX2Zvcl9mbCA9IGZsXzEwXzBfY2hlY2tfMTFfMF9z
dXBwb3J0ZWQudW5pb24oYWx3YXlzX2Zvcl9mbCkKKyAgICAgICAgICAgICAgICBhbHdheXNfZm9y
X2ZsID0gZmxfMTBfMV9zdXBwb3J0ZWQudW5pb24oYWx3YXlzX2Zvcl9mbCkKKyAgICAgICAgICAg
ICAgICBhbHdheXNfZm9yX2ZsID0gZmxfMTFfMF9zdXBwb3J0ZWQudW5pb24oYWx3YXlzX2Zvcl9m
bCkKKworICAgICAgICAgICAgYWx3YXlzID0gJyB8ICcuam9pbihzb3J0ZWQoYWx3YXlzX2Zvcl9m
bCkpCisgICAgICAgICAgICBuZXZlciA9ICcgfCAnLmpvaW4oc29ydGVkKG5ldmVyX3N1cHBvcnRl
ZCkpCisgICAgICAgICAgICBvcHRpb25hbCA9ICcgfCAnLmpvaW4oc29ydGVkKG9wdGlvbmFsX2Zv
cl9mbCkpCisKKyAgICAgICAgICAgIGlmIG5vdCBhbHdheXM6IGFsd2F5cyA9ICcwJworICAgICAg
ICAgICAgaWYgbm90IG5ldmVyOiBuZXZlciA9ICcwJworICAgICAgICAgICAgaWYgbm90IG9wdGlv
bmFsOiBvcHRpb25hbCA9ICcwJworCisgICAgICAgICAgICB0YWJsZV9kYXRhW2ZlYXR1cmVfbGV2
ZWxdICs9ICcgICAgICAgIGNhc2UgJyArIGZvcm1hdF9uYW1lICsgJzpcbicKKyAgICAgICAgICAg
IHRhYmxlX2RhdGFbZmVhdHVyZV9sZXZlbF0gKz0gJyAgICAgICAge1xuJworICAgICAgICAgICAg
dGFibGVfZGF0YVtmZWF0dXJlX2xldmVsXSArPSAnICAgICAgICAgICAgc3RhdGljIGNvbnN0IERY
R0lTdXBwb3J0IGluZm8oJyArIGFsd2F5cyArICcsICcgKyBuZXZlciArICcsICcgKyBvcHRpb25h
bCArICcpO1xuJworICAgICAgICAgICAgdGFibGVfZGF0YVtmZWF0dXJlX2xldmVsXSArPSAnICAg
ICAgICAgICAgcmV0dXJuIGluZm87XG4nCisgICAgICAgICAgICB0YWJsZV9kYXRhW2ZlYXR1cmVf
bGV2ZWxdICs9ICcgICAgICAgIH1cbicKKworICAgIHJldHVybiB0YWJsZV9kYXRhCisKK2RlZiBq
b2luX3RhYmxlX2RhdGEodGFibGVfZGF0YV8xLCB0YWJsZV9kYXRhXzIpOgorICAgIHJldHVybiB7
JzEwXzAnOiB0YWJsZV9kYXRhXzFbJzEwXzAnXSArIHRhYmxlX2RhdGFfMlsnMTBfMCddLAorICAg
ICAgICAgICAgJzEwXzEnOiB0YWJsZV9kYXRhXzFbJzEwXzEnXSArIHRhYmxlX2RhdGFfMlsnMTBf
MSddLAorICAgICAgICAgICAgJzExXzAnOiB0YWJsZV9kYXRhXzFbJzExXzAnXSArIHRhYmxlX2Rh
dGFfMlsnMTFfMCddfQorCit3aXRoIG9wZW4oJ2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24nKSBhcyBk
eGdpX2ZpbGU6CisgICAgZmlsZV9kYXRhID0gZHhnaV9maWxlLnJlYWQoKQorICAgIGR4Z2lfZmls
ZS5jbG9zZSgpCisgICAganNvbl9kYXRhID0ganNvbi5sb2FkcyhmaWxlX2RhdGEpCisKKyAgICB0
YWJsZV9kYXRhID0geycxMF8wJzogJycsICcxMF8xJzogJycsICcxMV8wJzogJyd9CisKKyAgICBm
b3IgZm9ybWF0X2RhdGEgaW4ganNvbl9kYXRhOgorICAgICAgICB0YWJsZV9kYXRhID0gam9pbl90
YWJsZV9kYXRhKHRhYmxlX2RhdGEsIGRvX2Zvcm1hdChmb3JtYXRfZGF0YSkpCisKKyAgICBvdXRf
ZGF0YSA9IHRlbXBsYXRlLmZvcm1hdChwcmVmaXg9bWFjcm9fcHJlZml4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhYmxlX2RhdGFfMTBfMD10YWJsZV9kYXRhWycxMF8wJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZGF0YV8xMF8xPXRhYmxlX2RhdGFb
JzEwXzEnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9kYXRhXzExXzA9
dGFibGVfZGF0YVsnMTFfMCddKQorCisgICAgd2l0aCBvcGVuKCdkeGdpX3N1cHBvcnRfdGFibGUu
Y3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6CisgICAgICAgIG91dF9maWxlLndyaXRlKG91dF9kYXRh
KQorICAgICAgICBvdXRfZmlsZS5jbG9zZSgpCisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2xvYWRfZnVuY3Rpb25zX3Rh
YmxlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2xvYWRfZnVuY3Rpb25zX3RhYmxlLnB5CShyZXZpc2lv
biAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9nZW5fbG9hZF9mdW5jdGlvbnNfdGFibGUucHkJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxOTkgQEAKKyMhL3Vzci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyMKKyMgZ2VuX2xvYWRfZnVuY3Rpb25zX3Rh
YmxlLnB5OgorIyAgQ29kZSBnZW5lcmF0aW9uIGZvciB0aGUgbG9hZCBmdW5jdGlvbiB0YWJsZXMg
dXNlZCBmb3IgdGV4dHVyZSBmb3JtYXRzCisjCisKK2ltcG9ydCBqc29uCisKK3RlbXBsYXRlID0g
IiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSBnZW5f
bG9hZF9mdW5jdGlvbnNfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGxvYWRfZnVuY3Rpb25zX2Rh
dGEuanNvbgorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIGxvYWRfZnVuY3Rpb25zX3RhYmxlOgorLy8gICBDb250YWlu
cyB0aGUgR2V0TG9hZEZ1bmN0aW9uc01hcCBmb3IgdGV4dHVyZV9mb3JtYXRfdXRpbC5oCisvLwor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3Rh
YmxlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxz
MTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3Jt
YXRfdGFibGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZV9ldGMuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7eworCituYW1lc3BhY2UgZDNkMTEKK3t7CisKK25hbWVzcGFjZQore3sKKwor
Ly8gRVMzIGltYWdlIGxvYWRpbmcgZnVuY3Rpb25zIHZhcnkgYmFzZWQgb246CisvLyAgICAtIHRo
ZSBHTCBpbnRlcm5hbCBmb3JtYXQgKHN1cHBsaWVkIHRvIGdsVGV4KkltYWdlKkQpCisvLyAgICAt
IHRoZSBHTCBkYXRhIHR5cGUgZ2l2ZW4gKHN1cHBsaWVkIHRvIGdsVGV4KkltYWdlKkQpCisvLyAg
ICAtIHRoZSB0YXJnZXQgRFhHSV9GT1JNQVQgdGhhdCB0aGUgaW1hZ2Ugd2lsbCBiZSBsb2FkZWQg
aW50byAod2hpY2ggaXMgY2hvc2VuIGJhc2VkIG9uIHRoZSBEM0QKKy8vICAgIGRldmljZSdzIGNh
cGFiaWxpdGllcykKKy8vIFRoaXMgbWFwIHR5cGUgZGV0ZXJtaW5lcyB3aGljaCBsb2FkaW5nIGZ1
bmN0aW9uIHRvIHVzZSwgYmFzZWQgb24gdGhlc2UgdGhyZWUgcGFyYW1ldGVycy4KKy8vIFNvdXJj
ZSBmb3JtYXRzIGFuZCB0eXBlcyBhcmUgdGFrZW4gZnJvbSBUYWJsZXMgMy4yIGFuZCAzLjMgb2Yg
dGhlIEVTIDMgc3BlYy4KK3ZvaWQgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbihzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXREZXB0aFBpdGNoKQore3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9fQorCit2
b2lkIFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93
UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3t7CisgICAgVU5S
RUFDSEFCTEUoKTsKK319CisKK319ICAvLyBuYW1lc3BhY2UKKworLy8gVE9ETyB3ZSBjYW4gcmVw
bGFjZSB0aGVzZSBtYXBzIHdpdGggbW9yZSBnZW5lcmF0ZWQgY29kZQorY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+ICZHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51
bSB7aW50ZXJuYWxfZm9ybWF0fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCB7ZHhnaV9mb3JtYXR9
KQore3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgc3dpdGNoICh7aW50ZXJuYWxfZm9y
bWF0fSkKKyAgICB7ewore2RhdGF9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHt7CisgICAg
ICAgICAgICBzdGF0aWMgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGVt
cHR5TG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgIHJldHVybiBlbXB0eUxvYWRGdW5jdGlv
bnNNYXA7CisgICAgICAgIH19CisgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworfX0g
IC8vIEdldExvYWRGdW5jdGlvbnNNYXAKKworfX0gIC8vIG5hbWVzcGFjZSBkM2QxMQorCit9fSAg
Ly8gbmFtZXNwYWNlIHJ4CisiIiIKKworaW50ZXJuYWxfZm9ybWF0X3BhcmFtID0gJ2ludGVybmFs
Rm9ybWF0JworZHhnaV9mb3JtYXRfcGFyYW0gPSAnZHhnaUZvcm1hdCcKK2R4Z2lfZm9ybWF0X3Vu
a25vd24gPSAiRFhHSV9GT1JNQVRfVU5LTk9XTiIKKworZGVmIGdldF9mdW5jdGlvbl9tYXBzX3N0
cmluZyh0eXBlc3RyLCBmdW5jdGlvbiwgcmVxdWlyZXNDb252ZXJzaW9uKToKKyAgICByZXR1cm4g
JyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbJyArIHR5cGVzdHIgKyAnXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbygnICsgZnVuY3Rpb24gKyAnLCAnICsgcmVxdWlyZXNDb252ZXJzaW9u
ICsgJyk7XG4nCisKK2RlZiBnZXRfdW5rbm93bl9mb3JtYXRfc3RyaW5nKGR4Z2lfdG9fdHlwZV9t
YXAsIGR4Z2lfdW5rbm93bl9zdHJpbmcpOgorICAgICBpZiBkeGdpX3Vua25vd25fc3RyaW5nIG5v
dCBpbiBkeGdpX3RvX3R5cGVfbWFwOgorICAgICAgICByZXR1cm4gJycKKworICAgICB0YWJsZV9k
YXRhID0gJycKKworICAgICBmb3IgdW5rbm93bl90eXBlX2Z1bmN0aW9uIGluIGR4Z2lfdG9fdHlw
ZV9tYXBbZHhnaV91bmtub3duX3N0cmluZ106CisgICAgICAgIHRhYmxlX2RhdGEgKz0gZ2V0X2Z1
bmN0aW9uX21hcHNfc3RyaW5nKHVua25vd25fdHlwZV9mdW5jdGlvblsndHlwZSddLCB1bmtub3du
X3R5cGVfZnVuY3Rpb25bJ2xvYWRGdW5jdGlvbiddLCAndHJ1ZScpCisKKyAgICAgcmV0dXJuIHRh
YmxlX2RhdGEKKworIyBNYWtpbmcgbWFwIGZyb20gZHhnaSB0byB0eXBlIG1hcCBmb3IgYSBwYXJ0
aWN1bGFyIGludGVybmFsRm9ybWF0CitkZWYgY3JlYXRlX2R4Z2lfdG9fdHlwZV9tYXAoZHN0LCBq
c29uX2RhdGEsIGludGVybmFsX2Zvcm1hdF9zdHIpOgorICAgIGZvciB0eXBlX2l0ZW0gaW4gc29y
dGVkKGpzb25fZGF0YVtpbnRlcm5hbF9mb3JtYXRfc3RyXS5pdGVyaXRlbXMoKSk6CisgICAgICAg
IGZvciBlbnRyeV9pbl90eXBlX2l0ZW0gaW4gdHlwZV9pdGVtWzFdOgorICAgICAgICAgICAgZHhn
aV9mb3JtYXRfc3RyID0gZW50cnlfaW5fdHlwZV9pdGVtWydkeGdpRm9ybWF0J10KKworICAgICAg
ICAgICAgaWYgZHhnaV9mb3JtYXRfc3RyIG5vdCBpbiBkc3Q6CisgICAgICAgICAgICAgICAgZHN0
W2R4Z2lfZm9ybWF0X3N0cl0gPSBbXQorCisgICAgICAgICAgICB0eXBlX2R4Z2lfbG9hZF9mdW5j
dGlvbiA9IGVudHJ5X2luX3R5cGVfaXRlbS5jb3B5KCk7CisgICAgICAgICAgICB0eXBlX2R4Z2lf
bG9hZF9mdW5jdGlvblsndHlwZSddID0gdHlwZV9pdGVtWzBdCisgICAgICAgICAgICBkc3RbZHhn
aV9mb3JtYXRfc3RyXS5hcHBlbmQodHlwZV9keGdpX2xvYWRfZnVuY3Rpb24pCisKK2RlZiBnZXRf
bG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldChpbnNlcnRfbWFwX3N0cmluZyk6CisgICAgbG9hZF9m
dW5jdGlvbl9tYXBfc25pcHBldCA9ICcnCisgICAgbG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldCAr
PSAnICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHtcbicKKyAgICBsb2Fk
X2Z1bmN0aW9uX21hcF9zbmlwcGV0ICs9ICcgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDtcbicKKyAgICBsb2FkX2Z1
bmN0aW9uX21hcF9zbmlwcGV0ICs9IGluc2VydF9tYXBfc3RyaW5nCisgICAgbG9hZF9mdW5jdGlv
bl9tYXBfc25pcHBldCArPSAnICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
XG4nCisgICAgbG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldCArPSAnICAgICAgICAgICAgICAgICAg
ICB9KCk7XG5cbicKKyAgICBsb2FkX2Z1bmN0aW9uX21hcF9zbmlwcGV0ICs9ICcgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwO1xuJworCisgICAgcmV0dXJuIGxvYWRf
ZnVuY3Rpb25fbWFwX3NuaXBwZXQKKworZGVmIHBhcnNlX2pzb25faW50b19zd2l0Y2hfc3RyaW5n
KGpzb25fZGF0YSk6CisgICAgdGFibGVfZGF0YSA9ICcnCisgICAgZm9yIGludGVybmFsX2Zvcm1h
dF9pdGVtIGluIHNvcnRlZChqc29uX2RhdGEuaXRlcml0ZW1zKCkpOgorICAgICAgICBpbnRlcm5h
bF9mb3JtYXRfc3RyID0gaW50ZXJuYWxfZm9ybWF0X2l0ZW1bMF0KKyAgICAgICAgdGFibGVfZGF0
YSArPSAnICAgICAgICBjYXNlICcgKyBpbnRlcm5hbF9mb3JtYXRfc3RyICsgJzpcbicKKyAgICAg
ICAgdGFibGVfZGF0YSArPSAnICAgICAgICB7XG4nCisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAg
ICAgICAgICAgIHN3aXRjaCAoJyArIGR4Z2lfZm9ybWF0X3BhcmFtICsgJylcbicKKyAgICAgICAg
dGFibGVfZGF0YSArPSAnICAgICAgICAgICAge1xuJworCisgICAgICAgIGR4Z2lfdG9fdHlwZV9t
YXAgPSB7fTsKKyAgICAgICAgY3JlYXRlX2R4Z2lfdG9fdHlwZV9tYXAoZHhnaV90b190eXBlX21h
cCwganNvbl9kYXRhLCBpbnRlcm5hbF9mb3JtYXRfc3RyKQorCisgICAgICAgIGR4Z2lfdW5rbm93
bl9zdHIgPSBnZXRfdW5rbm93bl9mb3JtYXRfc3RyaW5nKGR4Z2lfdG9fdHlwZV9tYXAsIGR4Z2lf
Zm9ybWF0X3Vua25vd24pOworCisgICAgICAgIGZvciBkeGdpX2Zvcm1hdF9pdGVtIGluIHNvcnRl
ZChkeGdpX3RvX3R5cGVfbWFwLml0ZXJpdGVtcygpKToKKyAgICAgICAgICAgIGR4Z2lfZm9ybWF0
X3N0ciA9IGR4Z2lfZm9ybWF0X2l0ZW1bMF0KKworICAgICAgICAgICAgIyBNYWluIGNhc2Ugc3Rh
dGVtZW50cworICAgICAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgIGNhc2Ug
JyArIGR4Z2lfZm9ybWF0X3N0ciArICc6XG4nCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcg
ICAgICAgICAgICAgICAge1xuJworICAgICAgICAgICAgaW5zZXJ0X21hcF9zdHJpbmcgPSAnJwor
ICAgICAgICAgICAgdHlwZXNfYWxyZWFkeV9pbl9sb2FkbWFwID0gc2V0KCkKKyAgICAgICAgICAg
IGZvciB0eXBlX2Z1bmN0aW9uIGluIHNvcnRlZChkeGdpX2Zvcm1hdF9pdGVtWzFdKToKKyAgICAg
ICAgICAgICAgICBpbnNlcnRfbWFwX3N0cmluZyArPSBnZXRfZnVuY3Rpb25fbWFwc19zdHJpbmco
dHlwZV9mdW5jdGlvblsndHlwZSddLCB0eXBlX2Z1bmN0aW9uWydsb2FkRnVuY3Rpb24nXSwgdHlw
ZV9mdW5jdGlvblsncmVxdWlyZXNDb252ZXJzaW9uJ10pCisgICAgICAgICAgICAgICAgdHlwZXNf
YWxyZWFkeV9pbl9sb2FkbWFwLmFkZCh0eXBlX2Z1bmN0aW9uWyd0eXBlJ10pCisKKyAgICAgICAg
ICAgICMgRFhHSV9GT1JNQVRfVU5LTk9XTiBhZGQgb25zCisgICAgICAgICAgICBpZiBkeGdpX2Zv
cm1hdF91bmtub3duIGluIGR4Z2lfdG9fdHlwZV9tYXA6CisgICAgICAgICAgICAgICAgZm9yIHVu
a25vd25fdHlwZV9mdW5jdGlvbiBpbiBkeGdpX3RvX3R5cGVfbWFwW2R4Z2lfZm9ybWF0X3Vua25v
d25dOgorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgaXQncyBub3QgYWxyZWFkeSBp
biB0aGUgbG9hZG1hcCBzbyBpdCBkb2Vzbid0IG92ZXJyaWRlIHRoZSB2YWx1ZQorICAgICAgICAg
ICAgICAgICAgICBpZiB1bmtub3duX3R5cGVfZnVuY3Rpb25bJ3R5cGUnXSBub3QgaW4gdHlwZXNf
YWxyZWFkeV9pbl9sb2FkbWFwOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0X21hcF9z
dHJpbmcgKz0gZ2V0X2Z1bmN0aW9uX21hcHNfc3RyaW5nKHVua25vd25fdHlwZV9mdW5jdGlvblsn
dHlwZSddLCB1bmtub3duX3R5cGVfZnVuY3Rpb25bJ2xvYWRGdW5jdGlvbiddLCAndHJ1ZScpCisK
KyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gZ2V0X2xvYWRfZnVuY3Rpb25fbWFwX3NuaXBwZXQo
aW5zZXJ0X21hcF9zdHJpbmcpCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAg
ICAgICAgfVxuJworCisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICBkZWZh
dWx0OlxuJworCisgICAgICAgIGlmIGR4Z2lfdW5rbm93bl9zdHI6CisgICAgICAgICAgICB0YWJs
ZV9kYXRhICs9ICcgICAgICAgICAgICAgICAge1xuJworICAgICAgICAgICAgdGFibGVfZGF0YSAr
PSBnZXRfbG9hZF9mdW5jdGlvbl9tYXBfc25pcHBldChkeGdpX3Vua25vd25fc3RyKQorICAgICAg
ICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgIH1cbicKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4n
CisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgIH1cbicKKyAgICAgICAgdGFibGVf
ZGF0YSArPSAnICAgICAgICB9XG4nCisKKyAgICByZXR1cm4gdGFibGVfZGF0YQorCit3aXRoIG9w
ZW4oJ2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbicpIGFzIGZ1bmN0aW9uc19qc29uX2ZpbGU6Cisg
ICAgZnVuY3Rpb25zX2RhdGEgPSBmdW5jdGlvbnNfanNvbl9maWxlLnJlYWQoKTsKKyAgICBmdW5j
dGlvbnNfanNvbl9maWxlLmNsb3NlKCkKKyAgICBqc29uX2RhdGEgPSBqc29uLmxvYWRzKGZ1bmN0
aW9uc19kYXRhKQorCisgICAgdGFibGVfZGF0YSA9IHBhcnNlX2pzb25faW50b19zd2l0Y2hfc3Ry
aW5nKGpzb25fZGF0YSkKKyAgICBvdXRwdXQgPSB0ZW1wbGF0ZS5mb3JtYXQoaW50ZXJuYWxfZm9y
bWF0ID0gaW50ZXJuYWxfZm9ybWF0X3BhcmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkeGdpX2Zvcm1hdCA9IGR4Z2lfZm9ybWF0X3BhcmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhPXRhYmxlX2RhdGEpCisKKyAgICB3aXRoIG9wZW4oJ2xvYWRfZnVuY3Rpb25z
X3RhYmxlX2F1dG9nZW4uY3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6CisgICAgICAgIG91dF9maWxl
LndyaXRlKG91dHB1dCkKKyAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fdGV4dHVy
ZV9mb3JtYXRfdGFibGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fdGV4dHVyZV9mb3JtYXRfdGFibGUu
cHkJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL2dlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weQkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDUyNSBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IDIw
MTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIworIyBnZW5fdGV4dHVy
ZV9mb3JtYXRfdGFibGUucHk6CisjICBDb2RlIGdlbmVyYXRpb24gZm9yIHRleHR1cmUgZm9ybWF0
IG1hcAorIworCitpbXBvcnQganNvbgoraW1wb3J0IG1hdGgKK2ltcG9ydCBwcHJpbnQKK2ltcG9y
dCByZQorCit0ZW1wbGF0ZV90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuX2ggPSAiIiIvLyBH
RU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5IGdlbl90ZXh0dXJl
X2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gdGV4dHVyZV9mb3JtYXRfZGF0YS5qc29u
CisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworCituYW1lc3BhY2UgcngKK3t7CisKK25hbWVzcGFjZSBkM2QxMQore3sKKwor
ZW51bSBBTkdMRUZvcm1hdAore3sKK3thbmdsZV9mb3JtYXRfZW51bX0KK319OworCit9fSAgLy8g
bmFtZXNwYWNlIGQzZDExCisKK319ICAvLyBuYW1lc3BhY2UgcngKKyIiIgorCit0ZW1wbGF0ZV90
ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuX2NwcCA9ICIiIi8vIEdFTkVSQVRFRCBGSUxFIC0g
RE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX3RleHR1cmVfZm9ybWF0X3RhYmxlLnB5
IHVzaW5nIGRhdGEgZnJvbSB0ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24KKy8vCisvLyBDb3B5cmln
aHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyB0
ZXh0dXJlX2Zvcm1hdF90YWJsZToKKy8vICAgUXVlcmllcyBmb3IgZnVsbCB0ZXh0dXJlRm9ybWF0
IGluZm9ybWF0aW9uIGJhc2VkIGluIGludGVybmFsRm9ybWF0CisvLworCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZS5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2NvcHlpbWFnZS5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9nZW5lcmF0ZW1pcC5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2UuaCIKKworbmFtZXNwYWNlIHJ4Cit7eworCituYW1lc3Bh
Y2UgZDNkMTEKK3t7CisKK25hbWVzcGFjZQore3sKKwordHlwZWRlZiBib29sICgqRm9ybWF0U3Vw
cG9ydEZ1bmN0aW9uKShjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmKTsKKworYm9vbCBPbmx5
RkwxMFBsdXMoY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCit7eworICAg
IHJldHVybiAoZGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPj0gRDNEX0ZFQVRVUkVfTEVWRUxfMTBf
MCk7Cit9fQorCitib29sIE9ubHlGTDlfMyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2
aWNlQ2FwcykKK3t7CisgICAgcmV0dXJuIChkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA9PSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzMpOworfX0KKwordGVtcGxhdGUgPERYR0lfRk9STUFUIGZvcm1hdCwg
Ym9vbCByZXF1aXJlU3VwcG9ydD4KK2Jvb2wgU3VwcG9ydHNGb3JtYXQoY29uc3QgUmVuZGVyZXIx
MURldmljZUNhcHMgJmRldmljZUNhcHMpCit7eworICAgIC8vIE11c3Qgc3VwcG9ydCB0ZXh0dXJl
LCBTUlYgYW5kIFJUViBzdXBwb3J0CisgICAgVUlOVCBtdXN0U3VwcG9ydCA9IEQzRDExX0ZPUk1B
VF9TVVBQT1JUX1RFWFRVUkUyRCB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkVDVUJFIHwK
KyAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBM
RSB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUCB8CisgICAgICAgICAgICAgICAgICAgICAgIEQz
RDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9UQVJHRVQ7CisKKyAgICBpZiAoZDNkMTFfZ2w6Okdl
dE1heGltdW1DbGllbnRWZXJzaW9uKGRldmljZUNhcHMuZmVhdHVyZUxldmVsKSA+IDIpCisgICAg
e3sKKyAgICAgICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNE
OworICAgIH19CisKKyAgICBib29sIGZ1bGxTdXBwb3J0ID0gZmFsc2U7CisgICAgaWYgKGZvcm1h
dCA9PSBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0pCisgICAge3sKKyAgICAgICAgLy8gQWxsIGhh
cmR3YXJlIHRoYXQgc3VwcG9ydHMgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIHNob3VsZCBzdXBw
b3J0IGF1dG9nZW4gbWlwbWFwcywgYnV0CisgICAgICAgIC8vIGNoZWNrIGFueXdheS4KKyAgICAg
ICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU47CisgICAg
ICAgIGZ1bGxTdXBwb3J0ID0gKChkZXZpY2VDYXBzLkI1RzZSNXN1cHBvcnQgJiBtdXN0U3VwcG9y
dCkgPT0gbXVzdFN1cHBvcnQpOworICAgIH19CisgICAgZWxzZSBpZiAoZm9ybWF0ID09IERYR0lf
Rk9STUFUX0I0RzRSNEE0X1VOT1JNKQorICAgIHt7CisgICAgICAgIGZ1bGxTdXBwb3J0ID0gKChk
ZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCAmIG11c3RTdXBwb3J0KSA9PSBtdXN0U3VwcG9ydCk7
CisgICAgfX0KKyAgICBlbHNlIGlmIChmb3JtYXQgPT0gRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5P
Uk0pCisgICAge3sKKyAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjVHNVI1QTFz
dXBwb3J0ICYgbXVzdFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKKyAgICB9fQorICAgIGVsc2UK
KyAgICB7eworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfX0KKworICAgIC8vIFRoaXMgJ1N1cHBvcnRzRm9ybWF0JyBmdW5jdGlvbiBpcyB1c2VkIGJ5
IGluZGl2aWR1YWwgZW50cmllcyBpbiB0aGUgRDNEMTEgRm9ybWF0IE1hcCBiZWxvdywKKyAgICAv
LyB3aGljaCBtYXBzIEdMIGZvcm1hdHMgdG8gRFhHSSBmb3JtYXRzLgorICAgIGlmIChyZXF1aXJl
U3VwcG9ydCkKKyAgICB7eworICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgQU5HTEUgd291bGQg
bGlrZSB0byB1c2UgdGhlIGVudHJ5IGluIHRoZSBtYXAgaWYgdGhlIGlucHV0dGVkIERYR0kgZm9y
bWF0CisgICAgICAgIC8vICpJUyogc3VwcG9ydGVkLgorICAgICAgICAvLyBlLmcuIHRoZSBlbnRy
eSBtaWdodCBtYXAgR0xfUkdCNV9BMSB0byBEWEdJX0ZPUk1BVF9CNUc1UjVBMSwgd2hpY2ggc2hv
dWxkIG9ubHkgYmUgdXNlZCBpZgorICAgICAgICAvLyBEWEdJX0ZPUk1BVF9CNUc1UjVBMSBpcyBz
dXBwb3J0ZWQuCisgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIG9ubHkgcmV0dXJu
ICd0cnVlJyBpZiB0aGUgZm9ybWF0ICpJUyogc3VwcG9ydGVkLgorICAgICAgICByZXR1cm4gZnVs
bFN1cHBvcnQ7CisgICAgfX0KKyAgICBlbHNlCisgICAge3sKKyAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IEFOR0xFIHdvdWxkIGxpa2UgdG8gdXNlIHRoZSBlbnRyeSBpbiB0aGUgbWFwIGlmIHRo
ZSBpbnB1dHRlZCBEWEdJIGZvcm1hdAorICAgICAgICAvLyAqSVNOJ1QqIHN1cHBvcnRlZC4KKyAg
ICAgICAgLy8gVGhpcyBtaWdodCBiZSBhIGZhbGxiYWNrIGVudHJ5LiBlLmcuIGZvciBBTkdMRSB0
byB1c2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0gaWYKKyAgICAgICAgLy8gRFhHSV9GT1JN
QVRfQjVHNVI1QTEgaXNuJ3Qgc3VwcG9ydGVkLgorICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdl
IHNob3VsZCBvbmx5IHJldHVybiAndHJ1ZScgaWYgdGhlIGZvcm1hdCAqSVNOJ1QqIHN1cHBvcnRl
ZC4KKyAgICAgICAgcmV0dXJuICFmdWxsU3VwcG9ydDsKKyAgICB9fQorfX0KKworLy8gRW5kIEZv
cm1hdCBTdXBwb3J0IEZ1bmN0aW9ucworfX0gIC8vIG5hbWVzcGFjZQorCitBTkdMRUZvcm1hdFNl
dDo6QU5HTEVGb3JtYXRTZXQoKQorICAgIDogZm9ybWF0KEFOR0xFX0ZPUk1BVF9OT05FKSwKKyAg
ICAgIGdsSW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAgICB0ZXhGb3JtYXQoRFhHSV9GT1JN
QVRfVU5LTk9XTiksCisgICAgICBzcnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAg
ICBydHZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBkc3ZGb3JtYXQoRFhHSV9G
T1JNQVRfVU5LTk9XTiksCisgICAgICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04p
LAorICAgICAgc3dpenpsZUZvcm1hdChBTkdMRV9GT1JNQVRfTk9ORSksCisgICAgICBtaXBHZW5l
cmF0aW9uRnVuY3Rpb24obnVsbHB0ciksCisgICAgICBjb2xvclJlYWRGdW5jdGlvbihudWxscHRy
KQore3sKK319CisKKy8vIEZvciBzaXplZCBHTCBpbnRlcm5hbCBmb3JtYXRzLCB0aGVyZSBhcmUg
c2V2ZXJhbCBwb3NzaWJsZSBjb3JyZXNwb25kaW5nIEQzRDExIGZvcm1hdHMgZGVwZW5kaW5nCisv
LyBvbiBkZXZpY2UgY2FwYWJpbGl0aWVzLgorLy8gVGhpcyBmdW5jdGlvbiBhbGxvd3MgcXVlcnlp
bmcgZm9yIHRoZSBEWEdJIHRleHR1cmUgZm9ybWF0cyB0byB1c2UgZm9yIHRleHR1cmVzLCBTUlZz
LCBSVFZzIGFuZAorLy8gRFNWcyBnaXZlbiBhIEdMIGludGVybmFsIGZvcm1hdC4KK1RleHR1cmVG
b3JtYXQ6OlRleHR1cmVGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gaW50ZXJu
YWxGb3JtYXRJbml0aWFsaXplcikKKyAgICA6IGRhdGFJbml0aWFsaXplckZ1bmN0aW9uKGludGVy
bmFsRm9ybWF0SW5pdGlhbGl6ZXIpCit7eworICAgIGZvcm1hdFNldCAgICAgICAgPSAmR2V0QU5H
TEVGb3JtYXRTZXQoYW5nbGVGb3JtYXQpOworICAgIHN3aXp6bGVGb3JtYXRTZXQgPSAmR2V0QU5H
TEVGb3JtYXRTZXQoZm9ybWF0U2V0LT5zd2l6emxlRm9ybWF0KTsKKworICAgIC8vIEdhdGhlciBh
bGwgdGhlIGxvYWQgZnVuY3Rpb25zIGZvciB0aGlzIGludGVybmFsIGZvcm1hdAorICAgIGxvYWRG
dW5jdGlvbnMgPSBHZXRMb2FkRnVuY3Rpb25zTWFwKGludGVybmFsRm9ybWF0LCBmb3JtYXRTZXQt
PnRleEZvcm1hdCk7CisKKyAgICBBU1NFUlQobG9hZEZ1bmN0aW9ucy5zaXplKCkgIT0gMCB8fCBp
bnRlcm5hbEZvcm1hdCA9PSBHTF9OT05FKTsKK319CisKK0FOR0xFRm9ybWF0U2V0OjpBTkdMRUZv
cm1hdFNldChBTkdMRUZvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGdsSW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVQgdGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUIHNydkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVCBydHZGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVQgZHN2Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUIGJsaXRTUlZGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVGb3JtYXQgc3dpenpsZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
aXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuZXJhdGlvbkZ1bmN0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uKQor
ICAgIDogZm9ybWF0KGZvcm1hdCksCisgICAgICBnbEludGVybmFsRm9ybWF0KGdsSW50ZXJuYWxG
b3JtYXQpLAorICAgICAgdGV4Rm9ybWF0KHRleEZvcm1hdCksCisgICAgICBzcnZGb3JtYXQoc3J2
Rm9ybWF0KSwKKyAgICAgIHJ0dkZvcm1hdChydHZGb3JtYXQpLAorICAgICAgZHN2Rm9ybWF0KGRz
dkZvcm1hdCksCisgICAgICBibGl0U1JWRm9ybWF0KGJsaXRTUlZGb3JtYXQpLAorICAgICAgc3dp
enpsZUZvcm1hdChzd2l6emxlRm9ybWF0KSwKKyAgICAgIG1pcEdlbmVyYXRpb25GdW5jdGlvbiht
aXBHZW5lcmF0aW9uRnVuY3Rpb24pLAorICAgICAgY29sb3JSZWFkRnVuY3Rpb24oY29sb3JSZWFk
RnVuY3Rpb24pCit7eworfX0KKworY29uc3QgQU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0
U2V0KEFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KQore3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
CisgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKKyAgICB7ewore2FuZ2xlX2Zvcm1hdF9pbmZvX2Nh
c2VzfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfX0KKyAgICAv
LyBjbGFuZy1mb3JtYXQgb24KKworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgc3RhdGljIGNvbnN0
IEFOR0xFRm9ybWF0U2V0IGRlZmF1bHRJbmZvOworICAgIHJldHVybiBkZWZhdWx0SW5mbzsKK319
CisKK2NvbnN0IFRleHR1cmVGb3JtYXQgJkdldFRleHR1cmVGb3JtYXRJbmZvKEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZyZW5kZXJlcjExRGV2aWNlQ2FwcykKK3t7CisgICAg
Ly8gY2xhbmctZm9ybWF0IG9mZgorICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAge3sK
K3t0ZXh0dXJlX2Zvcm1hdF9pbmZvX2Nhc2VzfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfX0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKworICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IGRlZmF1bHRJbmZvKEdMX05PTkUsIEFOR0xFX0ZPUk1BVF9OT05F
LCBudWxscHRyKTsKKyAgICByZXR1cm4gZGVmYXVsdEluZm87Cit9fSAgLy8gR2V0VGV4dHVyZUZv
cm1hdEluZm8KKworfX0gIC8vIG5hbWVzcGFjZSBkM2QxMQorCit9fSAgLy8gbmFtZXNwYWNlIHJ4
CisiIiIKKworIyBUT0RPKG9ldHVhaG8pOiBFeHBhbmQgdGhpcyBjb2RlIHNvIHRoYXQgaXQgY291
bGQgZ2VuZXJhdGUgdGhlIGdsIGZvcm1hdCBpbmZvIHRhYmxlcyBhcyB3ZWxsLgorZGVmIGdsX2Zv
cm1hdF9jaGFubmVscyhpbnRlcm5hbF9mb3JtYXQpOgorICAgIGlmIGludGVybmFsX2Zvcm1hdCA9
PSAnR0xfQkdSNV9BMV9BTkdMRVgnOgorICAgICAgICByZXR1cm4gJ2JncmEnCisgICAgaWYgaW50
ZXJuYWxfZm9ybWF0ID09ICdHTF9SMTFGX0cxMUZfQjEwRic6CisgICAgICAgIHJldHVybiAncmdi
JworICAgIGlmIGludGVybmFsX2Zvcm1hdCA9PSAnR0xfUkdCNV9BMSc6CisgICAgICAgIHJldHVy
biAncmdiYScKKyAgICBpZiBpbnRlcm5hbF9mb3JtYXQuZmluZCgnR0xfUkdCMTBfQTInKSA9PSAw
OgorICAgICAgICByZXR1cm4gJ3JnYmEnCisKKyAgICBjaGFubmVsc19wYXR0ZXJuID0gcmUuY29t
cGlsZSgnR0xfKENPTVBSRVNTRURfKT8oU0lHTkVEXyk/KEVUQ1xkXyk/KFtBLVpdKyknKQorICAg
IG1hdGNoID0gcmUuc2VhcmNoKGNoYW5uZWxzX3BhdHRlcm4sIGludGVybmFsX2Zvcm1hdCkKKyAg
ICBjaGFubmVsc19zdHJpbmcgPSBtYXRjaC5ncm91cCg0KQorCisgICAgaWYgY2hhbm5lbHNfc3Ry
aW5nID09ICdBTFBIQSc6CisgICAgICAgIHJldHVybiAnYScKKyAgICBpZiBjaGFubmVsc19zdHJp
bmcgPT0gJ0xVTUlOQU5DRSc6CisgICAgICAgIGlmIChpbnRlcm5hbF9mb3JtYXQuZmluZCgnQUxQ
SEEnKSA+PSAwKToKKyAgICAgICAgICAgIHJldHVybiAnbGEnCisgICAgICAgIHJldHVybiAnbCcK
KyAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ1NSR0InOgorICAgICAgICBpZiAoaW50ZXJuYWxf
Zm9ybWF0LmZpbmQoJ0FMUEhBJykgPj0gMCk6CisgICAgICAgICAgICByZXR1cm4gJ3JnYmEnCisg
ICAgICAgIHJldHVybiAncmdiJworICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnREVQVEgnOgor
ICAgICAgICBpZiAoaW50ZXJuYWxfZm9ybWF0LmZpbmQoJ1NURU5DSUwnKSA+PSAwKToKKyAgICAg
ICAgICAgIHJldHVybiAnZHMnCisgICAgICAgIHJldHVybiAnZCcKKyAgICBpZiBjaGFubmVsc19z
dHJpbmcgPT0gJ1NURU5DSUwnOgorICAgICAgICByZXR1cm4gJ3MnCisgICAgcmV0dXJuIGNoYW5u
ZWxzX3N0cmluZy5sb3dlcigpCisKK2RlZiBnZXRfaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVy
KGludGVybmFsX2Zvcm1hdCwgYW5nbGVfZm9ybWF0KToKKyAgICBpbnRlcm5hbF9mb3JtYXRfaW5p
dGlhbGl6ZXIgPSAnbnVsbHB0cicKKyAgICBnbF9jaGFubmVscyA9IGdsX2Zvcm1hdF9jaGFubmVs
cyhpbnRlcm5hbF9mb3JtYXQpCisgICAgZ2xfZm9ybWF0X25vX2FscGhhID0gZ2xfY2hhbm5lbHMg
PT0gJ3JnYicgb3IgZ2xfY2hhbm5lbHMgPT0gJ2wnCisgICAgaWYgZ2xfZm9ybWF0X25vX2FscGhh
IGFuZCBhbmdsZV9mb3JtYXRbJ2NoYW5uZWxzJ10gPT0gJ3JnYmEnOgorICAgICAgICBpZiBhbmds
ZV9mb3JtYXRbJ3RleEZvcm1hdCddID09ICdEWEdJX0ZPUk1BVF9CQzFfVU5PUk0nOgorICAgICAg
ICAgICAgIyBCQzEgaXMgYSBzcGVjaWFsIGNhc2Ugc2luY2UgdGhlIHRleHR1cmUgZGF0YSBkZXRl
cm1pbmVzIHdoZXRoZXIgZWFjaCBibG9jayBoYXMgYW4gYWxwaGEgY2hhbm5lbCBvciBub3QuCisg
ICAgICAgICAgICAjIFRoaXMgaWYgc3RhdGVtZW50IGlzIGhpdCBieSBDT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDEsIHdoaWNoIGlzIGEgYml0IG9mIGEgbWVzcy4KKyAgICAgICAgICAgICMgVE9ETyhv
ZXR1YWhvKTogTG9vayBpbnRvIHdoZXRoZXIgQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxIHdvcmtz
IHJpZ2h0IGluIGdlbmVyYWwuCisgICAgICAgICAgICAjIFJlZmVyZW5jZTogaHR0cHM6Ly93d3cu
b3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjLnR4
dAorICAgICAgICAgICAgcGFzcworICAgICAgICBlbGlmICdjb21wb25lbnRUeXBlJyBub3QgaW4g
YW5nbGVfZm9ybWF0OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignd2FybmluZzogaW50
ZXJuYWwgZm9ybWF0IGluaXRpYWxpemVyIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgYW5kIG1heSBi
ZSBuZWVkZWQgZm9yICcgKyBpbnRlcm5hbF9mb3JtYXQpCisgICAgICAgIGVsaWYgYW5nbGVfZm9y
bWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ3VpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsn
cmVkJ10gPT0gODoKKyAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4n
CisgICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ3Vub3JtJyBh
bmQgYW5nbGVfZm9ybWF0WydiaXRzJ11bJ3JlZCddID09IDg6CisgICAgICAgICAgICBpbnRlcm5h
bF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+JworICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29t
cG9uZW50VHlwZSddID09ICdpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0g
ODoKKyAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKKyAgICAgICAg
ZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25vcm0nIGFuZCBhbmdsZV9m
b3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoKKyAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9p
bml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAw
LCAweDAwLCAweDdGPicKKyAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUn
XSA9PSAnZmxvYXQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6CisgICAg
ICAgICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25l
bnREYXRhPEdMaGFsZiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgZ2w6OkZsb2F0MTZPbmU+Jwor
ICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICd1aW50JyBhbmQg
YW5nbGVfZm9ybWF0WydiaXRzJ11bJ3JlZCddID09IDE2OgorICAgICAgICAgICAgaW50ZXJuYWxf
Zm9ybWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVzaG9ydCwg
MHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPicKKyAgICAgICAgZWxpZiBhbmdsZV9mb3Jt
YXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnaW50JyBhbmQgYW5nbGVfZm9ybWF0WydiaXRzJ11bJ3Jl
ZCddID09IDE2OgorICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0lu
aXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAw
eDAwMDE+JworICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdm
bG9hdCcgYW5kIGFuZ2xlX2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSAzMjoKKyAgICAgICAgICAg
IGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0xmbG9hdCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgZ2w6OkZsb2F0MzJP
bmU+JworICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdpbnQn
IGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMzI6CisgICAgICAgICAgICBpbnRl
cm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMaW50
LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPicKKyAgICAg
ICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAndWludCcgYW5kIGFuZ2xl
X2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSAzMjoKKyAgICAgICAgICAgIGludGVybmFsX2Zvcm1h
dF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1aW50LCAweDAwMDAw
MDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPicKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dhcm5pbmc6IGludGVybmFsIGZvcm1hdCBp
bml0aWFsaXplciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIGFuZCBtYXkgYmUgbmVlZGVkIGZvciAn
ICsgaW50ZXJuYWxfZm9ybWF0KQorCisgICAgcmV0dXJuIGludGVybmFsX2Zvcm1hdF9pbml0aWFs
aXplcgorCitkZWYgZ2V0X3N3aXp6bGVfZm9ybWF0X2lkKGFuZ2xlX2Zvcm1hdF9pZCwgYW5nbGVf
Zm9ybWF0KToKKyAgICBpZiBhbmdsZV9mb3JtYXRfaWQgPT0gJ0FOR0xFX0ZPUk1BVF9OT05FJzoK
KyAgICAgICAgcmV0dXJuICdBTkdMRV9GT1JNQVRfTk9ORScKKyAgICBlbGlmICdzd2l6emxlRm9y
bWF0JyBpbiBhbmdsZV9mb3JtYXQ6CisgICAgICAgICMgRm9yIHNvbWUgc3BlY2lhbCBmb3JtYXRz
IGxpa2UgY29tcHJlc3NlZCBmb3JtYXRzIHRoYXQgZG9uJ3QgaGF2ZSBhIGNsZWFybHkgZGVmaW5l
ZCBudW1iZXIKKyAgICAgICAgIyBvZiBiaXRzIHBlciBjaGFubmVsLCBzd2l6emxlIGZvcm1hdCBu
ZWVkcyB0byBiZSBzcGVjaWZpZWQgbWFudWFsbHkuCisgICAgICAgIHJldHVybiBhbmdsZV9mb3Jt
YXRbJ3N3aXp6bGVGb3JtYXQnXQorCisgICAgaWYgJ2JpdHMnIG5vdCBpbiBhbmdsZV9mb3JtYXQ6
CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25vIGJpdHMgaW5mb3JtYXRpb24gZm9yIGRldGVy
bWluaW5nIHN3aXp6bGVmb3JtYXQgZm9yIGZvcm1hdDogJyArIGFuZ2xlX2Zvcm1hdF9pZCkKKwor
ICAgIGJpdHMgPSBhbmdsZV9mb3JtYXRbJ2JpdHMnXQorICAgIG1heF9jb21wb25lbnRfYml0cyA9
IG1heChiaXRzLml0ZXJ2YWx1ZXMoKSkKKyAgICBjaGFubmVsc19kaWZmZXJlbnQgPSBub3QgYWxs
KFtjb21wb25lbnRfYml0cyA9PSBiaXRzLml0ZXJ2YWx1ZXMoKS5uZXh0KCkgZm9yIGNvbXBvbmVu
dF9iaXRzIGluIGJpdHMuaXRlcnZhbHVlcygpXSkKKworICAgICMgVGhlIGZvcm1hdCBpdHNlbGYg
Y2FuIGJlIHVzZWQgZm9yIHN3aXp6bGVzIGlmIGl0IGNhbiBiZSBhY2Nlc3NlZCBhcyBhIHJlbmRl
ciB0YXJnZXQgYW5kCisgICAgIyBzYW1wbGVkIGFuZCB0aGUgYml0IGNvdW50IGZvciBhbGwgNCBj
aGFubmVscyBpcyB0aGUgc2FtZS4KKyAgICBpZiAicnR2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQg
YW5kICJzcnZGb3JtYXQiIGluIGFuZ2xlX2Zvcm1hdCBhbmQgbm90IGNoYW5uZWxzX2RpZmZlcmVu
dCBhbmQgbGVuKGFuZ2xlX2Zvcm1hdFsnY2hhbm5lbHMnXSkgPT0gNDoKKyAgICAgICAgcmV0dXJu
IGFuZ2xlX2Zvcm1hdF9pZAorCisgICAgYiA9IGludChtYXRoLmNlaWwoZmxvYXQobWF4X2NvbXBv
bmVudF9iaXRzKSAvIDgpICogOCkKKworICAgICMgRGVwdGggZm9ybWF0cyBuZWVkIHNwZWNpYWwg
aGFuZGxpbmcsIHNpbmNlIGNvbWJpbmVkIGRlcHRoL3N0ZW5jaWwgZm9ybWF0cyBkb24ndCBoYXZl
IGEgY2xlYXJseQorICAgICMgZGVmaW5lZCBjb21wb25lbnQgdHlwZS4KKyAgICBpZiBhbmdsZV9m
b3JtYXRbJ2NoYW5uZWxzJ10uZmluZCgnZCcpID49IDA6CisgICAgICAgIGlmIGIgPT0gMjQgb3Ig
YiA9PSAzMjoKKyAgICAgICAgICAgIHJldHVybiAnQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCcKKyAgICAgICAgaWYgYiA9PSAxNjoKKyAgICAgICAgICAgIHJldHVybiAnQU5HTEVfRk9S
TUFUX1IxNkcxNkIxNkExNl9VTk9STScKKworICAgIGlmIGIgPT0gMjQ6CisgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoJ3VuZXhwZWN0ZWQgMjQtYml0IGZvcm1hdCB3aGVuIGRldGVybWluaW5nIHN3
aXp6bGVmb3JtYXQgZm9yIGZvcm1hdDogJyArIGFuZ2xlX2Zvcm1hdF9pZCkKKworICAgIGlmICdj
b21wb25lbnRUeXBlJyBub3QgaW4gYW5nbGVfZm9ybWF0OgorICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdubyBjb21wb25lbnQgdHlwZSBpbmZvcm1hdGlvbiBmb3IgZGV0ZXJtaW5pbmcgc3dpenps
ZWZvcm1hdCBmb3IgZm9ybWF0OiAnICsgYW5nbGVfZm9ybWF0X2lkKQorCisgICAgY29tcG9uZW50
X3R5cGUgPSBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXQorICAgIGlmIGNvbXBvbmVudF90
eXBlID09ICd1aW50JzoKKyAgICAgICAgcmV0dXJuICdBTkdMRV9GT1JNQVRfUnt9R3t9Qnt9QXt9
X1VJTlQnLmZvcm1hdChiLCBiLCBiLCBiKQorICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ2lu
dCc6CisgICAgICAgIHJldHVybiAnQU5HTEVfRk9STUFUX1J7fUd7fUJ7fUF7fV9TSU5UJy5mb3Jt
YXQoYiwgYiwgYiwgYikKKyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICd1bm9ybSc6CisgICAg
ICAgIHJldHVybiAnQU5HTEVfRk9STUFUX1J7fUd7fUJ7fUF7fV9VTk9STScuZm9ybWF0KGIsIGIs
IGIsIGIpCisgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAnc25vcm0nOgorICAgICAgICByZXR1
cm4gJ0FOR0xFX0ZPUk1BVF9Se31He31Ce31Be31fU05PUk0nLmZvcm1hdChiLCBiLCBiLCBiKQor
ICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ2Zsb2F0JzoKKyAgICAgICAgcmV0dXJuICdBTkdM
RV9GT1JNQVRfUnt9R3t9Qnt9QXt9X0ZMT0FUJy5mb3JtYXQoYiwgYiwgYiwgYikKKyAgICBlbHNl
OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjb3VsZCBub3QgZGV0ZXJtaW5lIHN3aXp6bGVm
b3JtYXQgYmFzZWQgb24gY29tcG9uZW50VHlwZSBmb3IgZm9ybWF0OiAnICsgYW5nbGVfZm9ybWF0
X2lkKQorCitkZWYgZ2V0X3RleHR1cmVfZm9ybWF0X2l0ZW0oaWR4LCBpbnRlcm5hbF9mb3JtYXQs
IHJlcXVpcmVtZW50c19mbiwgYW5nbGVfZm9ybWF0X2lkLCBhbmdsZV9mb3JtYXQpOgorICAgIHRh
YmxlX2RhdGEgPSAnJzsKKworICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9IGdldF9p
bnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV9mb3JtYXQp
CisKKyAgICBpbmRlbnQgPSAnICAgICAgICAgICAgJworICAgIGlmIHJlcXVpcmVtZW50c19mbiAh
PSBOb25lOgorICAgICAgICBpZiBpZHggPT0gMDoKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0g
JyAgICAgICAgICAgIGlmICgnICsgcmVxdWlyZW1lbnRzX2ZuICsgJyhyZW5kZXJlcjExRGV2aWNl
Q2FwcykpXG4nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAg
ICAgICAgICBlbHNlIGlmICgnICsgcmVxdWlyZW1lbnRzX2ZuICsgJyhyZW5kZXJlcjExRGV2aWNl
Q2FwcykpXG4nCisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgIHtcbicKKyAgICAg
ICAgaW5kZW50ICs9ICcgICAgJworCisgICAgdGFibGVfZGF0YSArPSBpbmRlbnQgKyAnc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCxcbicKKyAg
ICB0YWJsZV9kYXRhICs9IGluZGVudCArICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcgKyBhbmdsZV9mb3JtYXRfaWQgKyAnLFxuJworICAgIHRhYmxlX2RhdGEgKz0g
aW5kZW50ICsgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArIGlu
dGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciArICcpO1xuJworICAgIHRhYmxlX2RhdGEgKz0gaW5k
ZW50ICsgJ3JldHVybiB0ZXh0dXJlRm9ybWF0O1xuJworCisgICAgaWYgcmVxdWlyZW1lbnRzX2Zu
ICE9IE5vbmU6CisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgIH1cbicKKworICAg
IHJldHVybiB0YWJsZV9kYXRhCisKK2RlZiBwYXJzZV9qc29uX2ludG9fc3dpdGNoX3RleHR1cmVf
Zm9ybWF0X3N0cmluZyhqc29uX21hcCwganNvbl9kYXRhKToKKyAgICB0YWJsZV9kYXRhID0gJycK
KyAgICBhbmdsZV9mb3JtYXRfbWFwID0ge30KKworICAgIGZvciBpbnRlcm5hbF9mb3JtYXRfaXRl
bSBpbiBzb3J0ZWQoanNvbl9tYXAuaXRlcml0ZW1zKCkpOgorICAgICAgICBpbnRlcm5hbF9mb3Jt
YXQgPSBpbnRlcm5hbF9mb3JtYXRfaXRlbVswXQorICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAg
ICAgIGNhc2UgJyArIGludGVybmFsX2Zvcm1hdCArICc6XG4nCisgICAgICAgIHRhYmxlX2RhdGEg
Kz0gJyAgICAgICAge1xuJworCisgICAgICAgIGlmIGlzaW5zdGFuY2UoanNvbl9tYXBbaW50ZXJu
YWxfZm9ybWF0XSwgYmFzZXN0cmluZyk6CisgICAgICAgICAgICBhbmdsZV9mb3JtYXRfaWQgPSBq
c29uX21hcFtpbnRlcm5hbF9mb3JtYXRdCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9IGdldF90
ZXh0dXJlX2Zvcm1hdF9pdGVtKDAsIGludGVybmFsX2Zvcm1hdCwgTm9uZSwgYW5nbGVfZm9ybWF0
X2lkLCBqc29uX2RhdGFbYW5nbGVfZm9ybWF0X2lkXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGZvciBpZHgsIHJlcXVpcmVtZW50c19tYXAgaW4gZW51bWVyYXRlKHNvcnRlZChqc29uX21h
cFtpbnRlcm5hbF9mb3JtYXRdLml0ZXJpdGVtcygpKSk6CisgICAgICAgICAgICAgICAgYW5nbGVf
Zm9ybWF0X2lkID0gcmVxdWlyZW1lbnRzX21hcFsxXQorICAgICAgICAgICAgICAgIHRhYmxlX2Rh
dGEgKz0gZ2V0X3RleHR1cmVfZm9ybWF0X2l0ZW0oaWR4LCBpbnRlcm5hbF9mb3JtYXQsIHJlcXVp
cmVtZW50c19tYXBbMF0sIGFuZ2xlX2Zvcm1hdF9pZCwganNvbl9kYXRhW2FuZ2xlX2Zvcm1hdF9p
ZF0pCisgICAgICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICBlbHNlXG4nCisgICAg
ICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICB7XG4nCisgICAgICAgICAgICB0YWJs
ZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgYnJlYWs7XG4nCisgICAgICAgICAgICB0YWJsZV9k
YXRhICs9ICcgICAgICAgICAgICB9XG4nCisKKyAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAg
ICB9XG4nCisKKyAgICByZXR1cm4gdGFibGVfZGF0YQorCitkZWYgZ2V0X2NoYW5uZWxfc3RydWN0
KGFuZ2xlX2Zvcm1hdCk6CisgICAgaWYgJ2JpdHMnIG5vdCBpbiBhbmdsZV9mb3JtYXQ6CisgICAg
ICAgIHJldHVybiBOb25lCisgICAgYml0cyA9IGFuZ2xlX2Zvcm1hdFsnYml0cyddCisgICAgaWYg
J2RlcHRoJyBpbiBiaXRzIG9yICdzdGVuY2lsJyBpbiBiaXRzOgorICAgICAgICByZXR1cm4gTm9u
ZQorCisgICAgaWYgJ2NoYW5uZWxTdHJ1Y3QnIGluIGFuZ2xlX2Zvcm1hdDoKKyAgICAgICAgcmV0
dXJuIGFuZ2xlX2Zvcm1hdFsnY2hhbm5lbFN0cnVjdCddCisKKyAgICBzdHJ1Y3RfbmFtZSA9ICcn
CisgICAgZm9yIGNoYW5uZWwgaW4gYW5nbGVfZm9ybWF0WydjaGFubmVscyddOgorICAgICAgICBp
ZiBjaGFubmVsID09ICdyJzoKKyAgICAgICAgICAgIHN0cnVjdF9uYW1lICs9ICdSe30nLmZvcm1h
dChiaXRzWydyZWQnXSkKKyAgICAgICAgaWYgY2hhbm5lbCA9PSAnZyc6CisgICAgICAgICAgICBz
dHJ1Y3RfbmFtZSArPSAnR3t9Jy5mb3JtYXQoYml0c1snZ3JlZW4nXSkKKyAgICAgICAgaWYgY2hh
bm5lbCA9PSAnYic6CisgICAgICAgICAgICBzdHJ1Y3RfbmFtZSArPSAnQnt9Jy5mb3JtYXQoYml0
c1snYmx1ZSddKQorICAgICAgICBpZiBjaGFubmVsID09ICdhJzoKKyAgICAgICAgICAgIHN0cnVj
dF9uYW1lICs9ICdBe30nLmZvcm1hdChiaXRzWydhbHBoYSddKQorICAgIGlmIGFuZ2xlX2Zvcm1h
dFsnY29tcG9uZW50VHlwZSddID09ICdmbG9hdCc6CisgICAgICAgIHN0cnVjdF9uYW1lICs9ICdG
JworICAgIGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdpbnQnIG9yIGFuZ2xl
X2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdzbm9ybSc6CisgICAgICAgIHN0cnVjdF9uYW1l
ICs9ICdTJworICAgIHJldHVybiBzdHJ1Y3RfbmFtZQorCitkZWYgZ2V0X21pcF9nZW5lcmF0aW9u
X2Z1bmN0aW9uKGFuZ2xlX2Zvcm1hdCk6CisgICAgY2hhbm5lbF9zdHJ1Y3QgPSBnZXRfY2hhbm5l
bF9zdHJ1Y3QoYW5nbGVfZm9ybWF0KQorICAgIGlmIGNoYW5uZWxfc3RydWN0ID09IE5vbmU6Cisg
ICAgICAgIHJldHVybiAnbnVsbHB0cicKKyAgICByZXR1cm4gJ0dlbmVyYXRlTWlwPCcgKyBjaGFu
bmVsX3N0cnVjdCArICc+JworCitkZWYgZ2V0X2NvbG9yX3JlYWRfZnVuY3Rpb24oYW5nbGVfZm9y
bWF0KToKKyAgICBjaGFubmVsX3N0cnVjdCA9IGdldF9jaGFubmVsX3N0cnVjdChhbmdsZV9mb3Jt
YXQpCisgICAgaWYgY2hhbm5lbF9zdHJ1Y3QgPT0gTm9uZToKKyAgICAgICAgcmV0dXJuICdudWxs
cHRyJworICAgIGNvbXBvbmVudF90eXBlX21hcCA9IHsKKyAgICAgICAgJ3VpbnQnOiAnR0x1aW50
JywKKyAgICAgICAgJ2ludCc6ICdHTGludCcsCisgICAgICAgICd1bm9ybSc6ICdHTGZsb2F0JywK
KyAgICAgICAgJ3Nub3JtJzogJ0dMZmxvYXQnLAorICAgICAgICAnZmxvYXQnOiAnR0xmbG9hdCcK
KyAgICB9CisgICAgcmV0dXJuICdSZWFkQ29sb3I8JyArIGNoYW5uZWxfc3RydWN0ICsgJywgJysg
Y29tcG9uZW50X3R5cGVfbWFwW2FuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddXSArICc+Jwor
CitkZWYgZ2V0X2JsaXRfc3J2X2Zvcm1hdChhbmdsZV9mb3JtYXQpOgorICAgIGlmICdjaGFubmVs
cycgbm90IGluIGFuZ2xlX2Zvcm1hdDoKKyAgICAgICAgcmV0dXJuICdEWEdJX0ZPUk1BVF9VTktO
T1dOJworICAgIGlmICdyJyBpbiBhbmdsZV9mb3JtYXRbJ2NoYW5uZWxzJ10gYW5kIGFuZ2xlX2Zv
cm1hdFsnY29tcG9uZW50VHlwZSddIGluIFsnaW50JywgJ3VpbnQnXToKKyAgICAgICAgcmV0dXJu
IGFuZ2xlX2Zvcm1hdFsncnR2Rm9ybWF0J10KKworICAgIHJldHVybiBhbmdsZV9mb3JtYXRbInNy
dkZvcm1hdCJdIGlmICJzcnZGb3JtYXQiIGluIGFuZ2xlX2Zvcm1hdCBlbHNlICJEWEdJX0ZPUk1B
VF9VTktOT1dOIgorCitkZWYgcGFyc2VfanNvbl9pbnRvX3N3aXRjaF9hbmdsZV9mb3JtYXRfc3Ry
aW5nKGpzb25fZGF0YSk6CisgICAgdGFibGVfZGF0YSA9ICcnCisgICAgZm9yIGFuZ2xlX2Zvcm1h
dF9pdGVtIGluIHNvcnRlZChqc29uX2RhdGEuaXRlcml0ZW1zKCkpOgorICAgICAgICB0YWJsZV9k
YXRhICs9ICcgICAgICAgIGNhc2UgJyArIGFuZ2xlX2Zvcm1hdF9pdGVtWzBdICsgJzpcbicKKyAg
ICAgICAgYW5nbGVfZm9ybWF0ID0gYW5nbGVfZm9ybWF0X2l0ZW1bMV0KKyAgICAgICAgZ2xfaW50
ZXJuYWxfZm9ybWF0ID0gYW5nbGVfZm9ybWF0WyJnbEludGVybmFsRm9ybWF0Il0gaWYgImdsSW50
ZXJuYWxGb3JtYXQiIGluIGFuZ2xlX2Zvcm1hdCBlbHNlICJHTF9OT05FIgorICAgICAgICB0ZXhf
Zm9ybWF0ID0gYW5nbGVfZm9ybWF0WyJ0ZXhGb3JtYXQiXSBpZiAidGV4Rm9ybWF0IiBpbiBhbmds
ZV9mb3JtYXQgZWxzZSAiRFhHSV9GT1JNQVRfVU5LTk9XTiIKKyAgICAgICAgc3J2X2Zvcm1hdCA9
IGFuZ2xlX2Zvcm1hdFsic3J2Rm9ybWF0Il0gaWYgInNydkZvcm1hdCIgaW4gYW5nbGVfZm9ybWF0
IGVsc2UgIkRYR0lfRk9STUFUX1VOS05PV04iCisgICAgICAgIHJ0dl9mb3JtYXQgPSBhbmdsZV9m
b3JtYXRbInJ0dkZvcm1hdCJdIGlmICJydHZGb3JtYXQiIGluIGFuZ2xlX2Zvcm1hdCBlbHNlICJE
WEdJX0ZPUk1BVF9VTktOT1dOIgorICAgICAgICBkc3ZfZm9ybWF0ID0gYW5nbGVfZm9ybWF0WyJk
c3ZGb3JtYXQiXSBpZiAiZHN2Rm9ybWF0IiBpbiBhbmdsZV9mb3JtYXQgZWxzZSAiRFhHSV9GT1JN
QVRfVU5LTk9XTiIKKyAgICAgICAgYmxpdF9zcnZfZm9ybWF0ID0gZ2V0X2JsaXRfc3J2X2Zvcm1h
dChhbmdsZV9mb3JtYXQpCisgICAgICAgIHN3aXp6bGVfZm9ybWF0ID0gZ2V0X3N3aXp6bGVfZm9y
bWF0X2lkKGFuZ2xlX2Zvcm1hdF9pdGVtWzBdLCBhbmdsZV9mb3JtYXQpCisgICAgICAgIG1pcF9n
ZW5lcmF0aW9uX2Z1bmN0aW9uID0gZ2V0X21pcF9nZW5lcmF0aW9uX2Z1bmN0aW9uKGFuZ2xlX2Zv
cm1hdCkKKyAgICAgICAgY29sb3JfcmVhZF9mdW5jdGlvbiA9IGdldF9jb2xvcl9yZWFkX2Z1bmN0
aW9uKGFuZ2xlX2Zvcm1hdCkKKyAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICB7XG4nCisg
ICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1h
dFNldCBmb3JtYXRJbmZvKCcgKyBhbmdsZV9mb3JtYXRfaXRlbVswXSArICcsXG4nCisgICAgICAg
IHRhYmxlX2RhdGEgKz0gJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcgKyBnbF9pbnRlcm5hbF9mb3JtYXQgKyAnLFxuJworICAgICAgICB0YWJsZV9k
YXRhICs9ICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnICsgdGV4X2Zvcm1hdCArICcsXG4nCisgICAgICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKyBzcnZfZm9ybWF0
ICsgJyxcbicKKyAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyArIHJ0dl9mb3JtYXQgKyAnLFxuJworICAgICAg
ICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnICsgZHN2X2Zvcm1hdCArICcsXG4nCisgICAgICAgIHRhYmxlX2RhdGEgKz0g
JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKyBi
bGl0X3Nydl9mb3JtYXQgKyAnLFxuJworICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgc3dpenpsZV9mb3Jt
YXQgKyAnLFxuJworICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgbWlwX2dlbmVyYXRpb25fZnVuY3Rpb24g
KyAnLFxuJworICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICsgY29sb3JfcmVhZF9mdW5jdGlvbiArICcpO1xu
JworICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbztc
bicKKyAgICAgICAgdGFibGVfZGF0YSArPSAnICAgICAgICB9XG4nCisgICAgcmV0dXJuIHRhYmxl
X2RhdGEKKworZGVmIHBhcnNlX2pzb25faW50b19hbmdsZV9mb3JtYXRfZW51bV9zdHJpbmcoanNv
bl9kYXRhKToKKyAgICBlbnVtX2RhdGEgPSAnJworICAgIGluZGV4ID0gMAorICAgIGZvciBhbmds
ZV9mb3JtYXRfaXRlbSBpbiBzb3J0ZWQoanNvbl9kYXRhLml0ZXJpdGVtcygpKToKKyAgICAgICAg
aWYgaW5kZXggPiAwOgorICAgICAgICAgICAgZW51bV9kYXRhICs9ICcsXG4nCisgICAgICAgIGVu
dW1fZGF0YSArPSAnICAgICcgKyBhbmdsZV9mb3JtYXRfaXRlbVswXQorICAgICAgICBpbmRleCAr
PSAxCisgICAgcmV0dXJuIGVudW1fZGF0YQorCitkZWYgcmVqZWN0X2R1cGxpY2F0ZV9rZXlzKHBh
aXJzKToKKyAgICBmb3VuZF9rZXlzID0ge30KKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYWlyczoK
KyAgICAgICAgaWYga2V5IGluIGZvdW5kX2tleXM6CisgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoImR1cGxpY2F0ZSBrZXk6ICVyIiAlIChrZXksKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgZm91bmRfa2V5c1trZXldID0gdmFsdWUKKyAgICByZXR1cm4gZm91bmRfa2V5cworCit3aXRo
IG9wZW4oJ3RleHR1cmVfZm9ybWF0X21hcC5qc29uJykgYXMgdGV4dHVyZV9mb3JtYXRfbWFwX2Zp
bGU6CisgICAgd2l0aCBvcGVuKCd0ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24nKSBhcyB0ZXh0dXJl
X2Zvcm1hdF9qc29uX2ZpbGU6CisgICAgICAgIHRleHR1cmVfZm9ybWF0X21hcCA9IHRleHR1cmVf
Zm9ybWF0X21hcF9maWxlLnJlYWQoKQorICAgICAgICB0ZXh0dXJlX2Zvcm1hdF9kYXRhID0gdGV4
dHVyZV9mb3JtYXRfanNvbl9maWxlLnJlYWQoKQorICAgICAgICB0ZXh0dXJlX2Zvcm1hdF9tYXBf
ZmlsZS5jbG9zZSgpCisgICAgICAgIHRleHR1cmVfZm9ybWF0X2pzb25fZmlsZS5jbG9zZSgpCisg
ICAgICAgIGpzb25fbWFwID0ganNvbi5sb2Fkcyh0ZXh0dXJlX2Zvcm1hdF9tYXAsIG9iamVjdF9w
YWlyc19ob29rPXJlamVjdF9kdXBsaWNhdGVfa2V5cykKKyAgICAgICAganNvbl9kYXRhID0ganNv
bi5sb2Fkcyh0ZXh0dXJlX2Zvcm1hdF9kYXRhLCBvYmplY3RfcGFpcnNfaG9vaz1yZWplY3RfZHVw
bGljYXRlX2tleXMpCisKKyAgICAgICAgdGV4dHVyZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9qc29u
X2ludG9fc3dpdGNoX3RleHR1cmVfZm9ybWF0X3N0cmluZyhqc29uX21hcCwganNvbl9kYXRhKQor
ICAgICAgICBhbmdsZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9qc29uX2ludG9fc3dpdGNoX2FuZ2xl
X2Zvcm1hdF9zdHJpbmcoanNvbl9kYXRhKQorICAgICAgICBvdXRwdXRfY3BwID0gdGVtcGxhdGVf
dGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbl9jcHAuZm9ybWF0KAorICAgICAgICAgICAgdGV4
dHVyZV9mb3JtYXRfaW5mb19jYXNlcz10ZXh0dXJlX2Zvcm1hdF9jYXNlcywKKyAgICAgICAgICAg
IGFuZ2xlX2Zvcm1hdF9pbmZvX2Nhc2VzPWFuZ2xlX2Zvcm1hdF9jYXNlcykKKyAgICAgICAgd2l0
aCBvcGVuKCd0ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9m
aWxlOgorICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2NwcCkKKyAgICAgICAgICAg
IG91dF9maWxlLmNsb3NlKCkKKworICAgICAgICBlbnVtX2RhdGEgPSBwYXJzZV9qc29uX2ludG9f
YW5nbGVfZm9ybWF0X2VudW1fc3RyaW5nKGpzb25fZGF0YSkKKyAgICAgICAgb3V0cHV0X2ggPSB0
ZW1wbGF0ZV90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuX2guZm9ybWF0KGFuZ2xlX2Zvcm1h
dF9lbnVtPWVudW1fZGF0YSkKKyAgICAgICAgd2l0aCBvcGVuKCd0ZXh0dXJlX2Zvcm1hdF90YWJs
ZV9hdXRvZ2VuLmgnLCAnd3QnKSBhcyBvdXRfZmlsZToKKyAgICAgICAgICAgIG91dF9maWxlLndy
aXRlKG91dHB1dF9oKQorICAgICAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1
bmN0aW9uc19kYXRhLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24J
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExMTYgQEAKK3sKKyAgIkdMX1JHOF9TTk9STSI6IHsKKyAgICAiR0xfQllURSI6
IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xieXRl
LDI+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TTk9STSIsCisg
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9
LAorICAiR0xfU1JHQjgiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7Cisg
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTHVieXRlLDB4RkY+IiwK
KyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiIs
CisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisg
IH0sCisgICJHTF9SR0JBOEkiOiB7CisgICAgIkdMX0JZVEUiOiBbCisgICAgICB7CisgICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMYnl0ZSw0PiIsCisgICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQiLAorICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1I4X1NOT1JN
IjogeworICAgICJHTF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTxHTGJ5dGUsMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SOF9TTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisg
ICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkdCQThfU05PUk0iOiB7CisgICAgIkdMX0JZVEUi
OiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMYnl0
ZSw0PiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JN
IiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBd
CisgIH0sCisgICJHTF9SMTZJIjogeworICAgICJHTF9TSE9SVCI6IFsKKyAgICAgIHsKKyAgICAg
ICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xzaG9ydCwxPiIsCisgICAgICAgICJk
eGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9TSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9FVEMyX0VBQyI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAg
ICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRVRDMlNSR0JBOFRvU1JHQkE4IiwK
KyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiIs
CisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisg
IH0sCisgICJHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIjogewor
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRFVEMyUkdCOEExVG9SR0JBOCIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0
cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQjMyVUkiOiB7CisgICAgIkdMX1VO
U0lHTkVEX0lOVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9O
YXRpdmUzVG80PEdMdWludCwweDAwMDAwMDAxPiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0FMUEhBMzJGX0VYVCI6IHsK
KyAgICAiR0xfRkxPQVQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9h
ZEEzMkZUb1JHQkEzMkYiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktO
T1dOIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAg
IF0KKyAgfSwKKyAgIkdMX1IxNlVJIjogeworICAgICJHTF9VTlNJR05FRF9TSE9SVCI6IFsKKyAg
ICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsMT4i
LAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVUlOVCIsCisgICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9LAorICAi
R0xfUkdCOV9FNSI6IHsKKyAgICAiR0xfSEFMRl9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCMTZGVG9SR0I5RTUiLAorICAgICAgICAiZHhnaUZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAiLAorICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfVU5TSUdORURfSU5U
XzVfOV85XzlfUkVWIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRU
b05hdGl2ZTxHTHVpbnQsMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
OUc5QjlFNV9TSEFSRURFWFAiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNl
IgorICAgICAgfQorICAgIF0sCisgICAgIkdMX0ZMT0FUIjogWworICAgICAgeworICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IzMkZUb1JHQjlFNSIsCisgICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCIsCisgICAgICAgICJyZXF1aXJlc0Nv
bnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJHTF9IQUxGX0ZMT0FUX09F
UyI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCMTZGVG9SR0I5
RTUiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURF
WFAiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAg
XQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9SMTFfRUFDIjogeworICAgICJHTF9VTlNJR05FRF9C
WVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFQUNSMTFUb1I4
IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0iLAorICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAi
R0xfUkdCQTMyVUkiOiB7CisgICAgIkdMX1VOU0lHTkVEX0lOVCI6IFsKKyAgICAgIHsKKyAgICAg
ICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDQ+IiwKKyAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQiLAorICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JH
OFVJIjogeworICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDI+IiwKKyAgICAgICAgImR4Z2lGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9MVU1JTkFOQ0UzMkZfRVhU
IjogeworICAgICJHTF9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJMb2FkTDMyRlRvUkdCQTMyRiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFU
X1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9
CisgICAgXQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzIiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJs
b2FkRnVuY3Rpb24iOiAiTG9hZEVUQzJTUkdCOEExVG9SR0JBOCIsCisgICAgICAgICJkeGdpRm9y
bWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IiLAorICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUjE2RiI6
IHsKKyAgICAiR0xfSEFMRl9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlv
biI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLDE+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxz
ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJHTF9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkMzJGVG8xNkY8MT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZfRkxPQVQiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
InRydWUiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCisgICAg
ICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaGFsZiwxPiIsCisg
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9GTE9BVCIsCisgICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xf
UkdCQThVSSI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiIsCisgICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQiLAorICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0JHUkE0X0FO
R0xFWCI6IHsKKyAgICAiR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUIjogWworICAg
ICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0JBNFRvUkdCQTgiLAorICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdM
dWJ5dGUsND4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwK
KyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisg
IH0sCisgICJHTF9SR0JBMTZGIjogeworICAgICJHTF9IQUxGX0ZMT0FUIjogWworICAgICAgewor
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGhhbGYsND4iLAorICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAorICAgICAg
ICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0sCisgICAgIkdM
X0ZMT0FUIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWQzMkZUbzE2
Rjw0PiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9G
TE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAg
ICBdLAorICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xoYWxmLDQ+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9MVU1JTkFOQ0U4
X0VYVCI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkTDhUb1JHQkE4IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIK
KyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFIjogeworICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDE2PiIsCisgICAgICAgICJk
eGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkdCIjogeworICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAg
ICAgIH0KKyAgICBdLAorICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzZfNSI6IFsKKyAgICAgIHsK
KyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIsCisgICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkdCNV9B
MSI6IHsKKyAgICAiR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIjogWworICAgICAgewor
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IxMEEyVG9SR0JBOCIsCisgICAgICAgICJk
eGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAgICAgInJlcXVp
cmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX1VOU0lHTkVE
X0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZl
PEdMdWJ5dGUsND4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9
CisgICAgXSwKKyAgICAiR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSI6IFsKKyAgICAgIHsKKyAg
ICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCNUExVG9SR0JBOCIsCisgICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVz
Q29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJMb2FkUkdCNUExVG9BMVJHQjUiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9CNUc1UjVBMV9VTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAi
dHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SR0IxNlVJIjogeworICAgICJHTF9V
TlNJR05FRF9TSE9SVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
VG9OYXRpdmUzVG80PEdMdXNob3J0LDB4MDAwMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9CR1JBX0VYVCI6IHsKKyAg
ICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisg
ICAgICB9CisgICAgXQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIiOiB7CisgICAg
IkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
TG9hZEVUQzJSR0I4VG9SR0JBOCIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgor
ICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQkEzMkYiOiB7CisgICAgIkdMX0ZMT0FUIjog
WworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGZsb2F0
LDQ+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAg
ICBdCisgIH0sCisgICJHTF9SR0JBMzJJIjogeworICAgICJHTF9JTlQiOiBbCisgICAgICB7Cisg
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaW50LDQ+IiwKKyAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQiLAorICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdM
X0xVTUlOQU5DRThfQUxQSEE4X0VYVCI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAg
ICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTEE4VG9SR0JBOCIsCisgICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkc4Ijogewor
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDI+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFs
c2UiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkdCMTBfQTIiOiB7CisgICAgIkdMX1VO
U0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDE+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJz
aW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU0lH
TkVEX1JHMTFfRUFDIjogeworICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFQUNSRzExU1RvUkc4IiwKKyAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9ERVBUSF9DT01QT05F
TlQxNiI6IHsKKyAgICAiR0xfVU5TSUdORURfSU5UIjogWworICAgICAgeworICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRSMzJUb1IxNiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IxNl9UWVBFTEVTUyIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1
ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJHTF9VTlNJR05FRF9TSE9SVCI6IFsKKyAgICAgIHsK
KyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsMT4iLAorICAg
ICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MiLAorICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsMT4iLAorICAgICAgICAiZHhn
aUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMTZfVU5PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252
ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQjMySSI6IHsK
KyAgICAiR0xfSU5UIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRU
b05hdGl2ZTNUbzQ8R0xpbnQsMHgwMDAwMDAwMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SOCI6IHsKKyAgICAiR0xf
VU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
VG9OYXRpdmU8R0x1Ynl0ZSwxPiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAgICAg
IH0KKyAgICBdCisgIH0sCisgICJHTF9SR0IzMkYiOiB7CisgICAgIkdMX0ZMT0FUIjogWworICAg
ICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTNUbzQ8R0xmbG9hdCxn
bDo6RmxvYXQzMk9uZT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisg
ICAgICB9CisgICAgXQorICB9LAorICAiR0xfUjExRl9HMTFGX0IxMEYiOiB7CisgICAgIkdMX1VO
U0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVYiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWludCwxPiIsCisgICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfSEFMRl9GTE9BVCI6IFsKKyAg
ICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCMTZGVG9SRzExQjEwRiIsCisg
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCIsCisgICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJH
TF9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCMzJG
VG9SRzExQjEwRiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMUcxMUIx
MF9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0K
KyAgICBdLAorICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsKKyAgICAgIHsKKyAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkUkdCMTZGVG9SRzExQjEwRiIsCisgICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SR0I4IjogeworICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSwweEZGPiIsCisgICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRV9BTFBIQSI6
IHsKKyAgICAiR0xfSEFMRl9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlv
biI6ICJMb2FkTEExNkZUb1JHQkExNkYiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
InRydWUiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAg
IHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiIsCisg
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfRkxPQVQi
OiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZExBMzJGVG9SR0JBMzJG
IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FU
IiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0s
CisgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0
aW9uIjogIkxvYWRMQTE2RlRvUkdCQTE2RiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24i
OiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SR0JBMTZJIjogeworICAgICJH
TF9TSE9SVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRp
dmU8R0xzaG9ydCw0PiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAg
ICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SOEkiOiB7CisgICAgIkdMX0JZVEUiOiBbCisgICAg
ICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMYnl0ZSwxPiIsCisg
ICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1NJTlQiLAorICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JH
QjhfU05PUk0iOiB7CisgICAgIkdMX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxHTGJ5dGUsMHg3Rj4iLAorICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSIsCisgICAgICAgICJyZXF1aXJlc0Nv
bnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SRzMyRiI6IHsK
KyAgICAiR0xfRkxPQVQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9h
ZFRvTmF0aXZlPEdMZmxvYXQsMj4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgor
ICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDMyRiI6IHsKKyAgICAi
R0xfRkxPQVQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0
aXZlPEdMZmxvYXQsMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJf
VFlQRUxFU1MiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAg
fSwKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbmltcGxlbWVudGVkTG9hZEZ1
bmN0aW9uIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisg
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0s
CisgICJHTF9SRzMySSI6IHsKKyAgICAiR0xfSU5UIjogWworICAgICAgeworICAgICAgICAibG9h
ZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGludCwyPiIsCisgICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1IzMkczMl9TSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9BTFBIQThfRVhUIjogewor
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDE+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfQThfVU5PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNl
IgorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQThUb1JH
QkE4IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0i
LAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQor
ICB9LAorICAiR0xfUkczMlVJIjogeworICAgICJHTF9VTlNJR05FRF9JTlQiOiBbCisgICAgICB7
CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWludCwyPiIsCisgICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMl9VSU5UIiwKKyAgICAgICAgInJl
cXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9S
R0JBMTZVSSI6IHsKKyAgICAiR0xfVU5TSUdORURfU0hPUlQiOiBbCisgICAgICB7CisgICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LDQ+IiwKKyAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiLAorICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0NP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUMiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisg
ICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVUQzJSR0JBOFRvUkdCQTgiLAor
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCisgICAg
ICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisg
ICJHTF9SR0I4SSI6IHsKKyAgICAiR0xfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMYnl0ZSwweDAxPiIsCisgICAgICAgICJkeGdp
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQiLAorICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfQ09NUFJFU1NF
RF9TUkdCOF9FVEMyIjogeworICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAg
ICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRFVEMyU1JHQjhUb1JHQkE4IiwKKyAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiIsCisgICAgICAgICJy
ZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9E
RVBUSDMyRl9TVEVOQ0lMOCI6IHsKKyAgICAiR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0Xzhf
UkVWIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxH
THVpbnQsMj4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJHOFgyNF9U
WVBFTEVTUyIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9
LAorICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIlVuaW1wbGVtZW50ZWRMb2FkRnVu
Y3Rpb24iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAg
ICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwK
KyAgIkdMX1JHOEkiOiB7CisgICAgIkdMX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2Fk
RnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMYnl0ZSwyPiIsCisgICAgICAgICJkeGdpRm9ybWF0
IjogIkRYR0lfRk9STUFUX1I4RzhfU0lOVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24i
OiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUjMyVUkiOiB7CisgICAgIkdM
X1VOU0lHTkVEX0lOVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
VG9OYXRpdmU8R0x1aW50LDE+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjMyX1VJTlQiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAg
fQorICAgIF0KKyAgfSwKKyAgIkdMX0JHUjVfQTFfQU5HTEVYIjogeworICAgICJHTF9VTlNJR05F
RF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2
ZTxHTHVieXRlLDQ+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9X
TiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAg
XSwKKyAgICAiR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUIjogWworICAgICAgewor
ICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0I1QTFUb1JHQkE4IiwKKyAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JH
MTFfRUFDIjogeworICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAi
bG9hZEZ1bmN0aW9uIjogIkxvYWRFQUNSRzExVG9SRzgiLAorICAgICAgICAiZHhnaUZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6
ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1NSR0I4X0FMUEhBOCI6IHsKKyAg
ICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6
ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRV9BTFBIQTE2
Rl9FWFQiOiB7CisgICAgIkdMX0hBTEZfRkxPQVQiOiBbCisgICAgICB7CisgICAgICAgICJsb2Fk
RnVuY3Rpb24iOiAiTG9hZExBMTZGVG9SR0JBMTZGIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1
ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJHTF9IQUxGX0ZMT0FUX09FUyI6IFsKKyAgICAgIHsK
KyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkTEExNkZUb1JHQkExNkYiLAorICAgICAgICAi
ZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQkEiOiB7Cisg
ICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24i
OiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgor
ICAgICAgfQorICAgIF0sCisgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiOiBbCisgICAg
ICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAor
ICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJl
cXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX1VOU0lH
TkVEX1NIT1JUXzVfNV81XzEiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAi
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAg
ICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0RFUFRIMjRfU1RFTkNJTDgiOiB7CisgICAgIkdMX1VO
U0lHTkVEX0lOVF8yNF84IjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxv
YWRSMzJUb1IyNEc4IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjI0Rzhf
VFlQRUxFU1MiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9
LAorICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSMzJUb1IyNEc4IiwKKyAg
ICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQiLAorICAg
ICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAor
ICAiR0xfUkdCMTZJIjogeworICAgICJHTF9TSE9SVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMc2hvcnQsMHgwMDAxPiIsCisgICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UIiwKKyAgICAgICAg
InJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdM
X1I4VUkiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJs
b2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsMT4iLAorICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJmYWxzZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9BTFBIQSI6IHsKKyAgICAi
R0xfSEFMRl9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
QTE2RlRvUkdCQTE2RiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAg
ICAgIH0KKyAgICBdLAorICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIlVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uIiwKKyAgICAgICAgImR4
Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJHTF9GTE9BVCI6IFsKKyAgICAg
IHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQTMyRlRvUkdCQTMyRiIsCisgICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCisgICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdLAorICAgICJHTF9I
QUxGX0ZMT0FUX09FUyI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
QTE2RlRvUkdCQTE2RiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAg
ICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SR0IxNkYiOiB7CisgICAgIkdMX0hBTEZfRkxPQVQi
OiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlM1RvNDxH
TGhhbGYsZ2w6OkZsb2F0MTZPbmU+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0
cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX0ZMT0FUIjogWworICAgICAgeworICAgICAg
ICAibG9hZEZ1bmN0aW9uIjogIkxvYWRSR0IzMkZUb1JHQkExNkYiLAorICAgICAgICAiZHhnaUZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQiLAorICAgICAgICAicmVxdWly
ZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfSEFMRl9GTE9B
VF9PRVMiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZl
M1RvNDxHTGhhbGYsZ2w6OkZsb2F0MTZPbmU+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lv
biI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU0lHTkVE
X1IxMV9FQUMiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7CisgICAgICAg
ICJsb2FkRnVuY3Rpb24iOiAiTG9hZEVBQ1IxMVNUb1I4IiwKKyAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhfU05PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjog
InRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVCI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAg
ImxvYWRGdW5jdGlvbiI6ICJMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCw4PiIsCisgICAgICAg
ICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXND
b252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAg
ICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQs
OD4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAgICAg
ICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAg
IkdMX1NURU5DSUxfSU5ERVg4IjogeworICAgICJEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUyI6
IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJVbmltcGxlbWVudGVkTG9hZEZ1
bmN0aW9uIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisg
ICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdLAorICAg
ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxv
YWRGdW5jdGlvbiI6ICJVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9uIiwKKyAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9MVU1JTkFOQ0VfQUxQSEEz
MkZfRVhUIjogeworICAgICJHTF9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5j
dGlvbiI6ICJMb2FkTEEzMkZUb1JHQkEzMkYiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgor
ICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQjhVSSI6IHsKKyAgICAiR0xfVU5TSUdORURf
QllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUz
VG80PEdMdWJ5dGUsMHgwMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VSU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAg
ICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDI0IjogeworICAgICJHTF9V
TlNJR05FRF9JTlQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFIz
MlRvUjI0RzgiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMjRHOF9UWVBF
TEVTUyIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0sCisg
ICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFIzMlRvUjI0RzgiLAorICAgICAg
ICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIsCisgICAgICAg
ICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0sCisgICJH
TF9SMzJJIjogeworICAgICJHTF9JTlQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rp
b24iOiAiTG9hZFRvTmF0aXZlPEdMaW50LDE+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjMyX1NJTlQiLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNl
IgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUyI6IHsK
KyAgICAiR0xfVU5TSUdORURfSU5UIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRSMzJUb1IyNEc4IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
VU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0K
KyAgICBdCisgIH0sCisgICJHTF9SMzJGIjogeworICAgICJHTF9GTE9BVCI6IFsKKyAgICAgIHsK
KyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0xmbG9hdCwxPiIsCisgICAg
ICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9GTE9BVCIsCisgICAgICAgICJyZXF1
aXJlc0NvbnZlcnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkcx
NkYiOiB7CisgICAgIkdMX0hBTEZfRkxPQVQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVu
Y3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMaGFsZiwyPiIsCisgICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24i
OiAiZmFsc2UiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfRkxPQVQiOiBbCisgICAgICB7Cisg
ICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZDMyRlRvMTZGPDI+IiwKKyAgICAgICAgImR4Z2lG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29u
dmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX0hBTEZfRkxPQVRfT0VT
IjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTGhh
bGYsMj4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQi
LAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0K
KyAgfSwKKyAgIkdMX1JHQjU2NSI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAg
IHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsMHhG
Rj4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIs
CisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdLAor
ICAgICJHTF9VTlNJR05FRF9TSE9SVF81XzZfNSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkUjVHNkI1VG9SR0JBOCIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6
ICJ0cnVlIgorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2Fk
VG9OYXRpdmU8R0x1c2hvcnQsMT4iLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9CNUc2UjVfVU5PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgor
ICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX0xVTUlOQU5DRTE2Rl9FWFQiOiB7CisgICAgIkdM
X0hBTEZfRkxPQVQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEwx
NkZUb1JHQkExNkYiLAorICAgICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dO
IiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0s
CisgICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0
aW9uIjogIkxvYWRMMTZGVG9SR0JBMTZGIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfVU5LTk9XTiIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNpb24iOiAidHJ1ZSIKKyAg
ICAgIH0KKyAgICBdCisgIH0sCisgICJHTF9SRzE2VUkiOiB7CisgICAgIkdMX1VOU0lHTkVEX1NI
T1JUIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxH
THVzaG9ydCwyPiIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9V
SU5UIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJmYWxzZSIKKyAgICAgIH0KKyAg
ICBdCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIjogeworICAg
ICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjog
IkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDE2PiIsCisgICAgICAgICJkeGdpRm9ybWF0Ijog
IkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogInRy
dWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkcxNkkiOiB7CisgICAgIkdMX1NIT1JU
IjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHNo
b3J0LDI+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQi
LAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0K
KyAgfSwKKyAgIkdMX0JHUkE4X0VYVCI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAg
ICAgIHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiIs
CisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAi
cmVxdWlyZXNDb252ZXJzaW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdM
X0FMUEhBMTZGX0VYVCI6IHsKKyAgICAiR0xfSEFMRl9GTE9BVCI6IFsKKyAgICAgIHsKKyAgICAg
ICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkQTE2RlRvUkdCQTE2RiIsCisgICAgICAgICJkeGdpRm9y
bWF0IjogIkRYR0lfRk9STUFUX1VOS05PV04iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCisgICAgICB9CisgICAgXSwKKyAgICAiR0xfSEFMRl9GTE9BVF9PRVMiOiBbCisg
ICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZEExNkZUb1JHQkExNkYiLAorICAg
ICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVp
cmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQkE0
IjogeworICAgICJHTF9VTlNJR05FRF9CWVRFIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1
bmN0aW9uIjogIkxvYWRUb05hdGl2ZTxHTHVieXRlLDQ+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJz
aW9uIjogImZhbHNlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX1VOU0lHTkVEX1NIT1JUXzRf
NF80XzQiOiBbCisgICAgICB7CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiTG9hZFJHQkE0VG9S
R0JBOCIsCisgICAgICAgICJkeGdpRm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
IiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfSwKKyAgICAg
IHsKKyAgICAgICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkUkdCQTRUb0FSR0I0IiwKKyAgICAgICAg
ImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0iLAorICAgICAgICAicmVx
dWlyZXNDb252ZXJzaW9uIjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfUkdC
QTgiOiB7CisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7CisgICAgICAgICJsb2Fk
RnVuY3Rpb24iOiAiTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4iLAorICAgICAgICAiZHhnaUZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfTFVNSU5BTkNFIjog
eworICAgICJHTF9IQUxGX0ZMT0FUIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRMMTZGVG9SR0JBMTZGIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0
cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiBbCisgICAgICB7
CisgICAgICAgICJsb2FkRnVuY3Rpb24iOiAiVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24iLAorICAg
ICAgICAiZHhnaUZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9VTktOT1dOIiwKKyAgICAgICAgInJlcXVp
cmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0sCisgICAgIkdMX0ZMT0FUIjog
WworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9uIjogIkxvYWRMMzJGVG9SR0JBMzJGIiwK
KyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwK
KyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0cnVlIgorICAgICAgfQorICAgIF0sCisg
ICAgIkdMX0hBTEZfRkxPQVRfT0VTIjogWworICAgICAgeworICAgICAgICAibG9hZEZ1bmN0aW9u
IjogIkxvYWRMMTZGVG9SR0JBMTZGIiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUIiwKKyAgICAgICAgInJlcXVpcmVzQ29udmVyc2lvbiI6ICJ0
cnVlIgorICAgICAgfQorICAgIF0KKyAgfSwKKyAgIkdMX1JHQjEwX0EyVUkiOiB7CisgICAgIkdM
X1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkVG9OYXRpdmU8R0x1aW50LDE+IiwKKyAgICAgICAgImR4Z2lGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCIsCisgICAgICAgICJyZXF1aXJlc0NvbnZl
cnNpb24iOiAiZmFsc2UiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfRVRDMV9SR0I4X09F
UyI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAgICAgImxvYWRG
dW5jdGlvbiI6ICJMb2FkRVRDMVJHQjhUb1JHQkE4IiwKKyAgICAgICAgImR4Z2lGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAorICAgICAgICAicmVxdWlyZXNDb252ZXJzaW9u
IjogInRydWUiCisgICAgICB9CisgICAgXQorICB9LAorICAiR0xfRVRDMV9SR0I4X0xPU1NZX0RF
Q09ERV9BTkdMRSI6IHsKKyAgICAiR0xfVU5TSUdORURfQllURSI6IFsKKyAgICAgIHsKKyAgICAg
ICAgImxvYWRGdW5jdGlvbiI6ICJMb2FkRVRDMVJHQjhUb0JDMSIsCisgICAgICAgICJkeGdpRm9y
bWF0IjogIkRYR0lfRk9STUFUX0JDMV9VTk9STSIsCisgICAgICAgICJyZXF1aXJlc0NvbnZlcnNp
b24iOiAidHJ1ZSIKKyAgICAgIH0KKyAgICBdCisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1
bmN0aW9uc190YWJsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBsb2FkX2Z1bmN0aW9u
c190YWJsZToKKy8vICAgQ29udGFpbnMgbG9hZCBmdW5jdGlvbnMgdGFibGUgZGVwZW5kaW5nIG9u
IGludGVybmFsIGZvcm1hdCBhbmQgZHhnaSBmb3JtYXQKKy8vCisKKyNpZm5kZWYgTElCQU5HTEVf
UkVOREVSRVJfRDNEX0QzRDExX0xPQURGVU5DVElPTlNUQUJMRV9IXworI2RlZmluZSBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfRDNEMTFfTE9BREZVTkNUSU9OU1RBQkxFX0hfCisKKyNpbmNsdWRlIDxt
YXA+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90
YWJsZS5oIgorCituYW1lc3BhY2UgcngKK3sKKworbmFtZXNwYWNlIGQzZDExCit7CisKK2NvbnN0
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiAmR2V0TG9hZEZ1bmN0aW9u
c01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZHhnaUZv
cm1hdCk7CisKK30gIC8vIG5hbWVzcGFjZSBkM2QxMQorCit9ICAvLyBuYW1lc3BhY2UgcngKKwor
I2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfTE9BREZVTkNUSU9OU1RBQkxF
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
bG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVu
Y3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA5OCBA
QAorLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSBnZW5f
bG9hZF9mdW5jdGlvbnNfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGxvYWRfZnVuY3Rpb25zX2Rh
dGEuanNvbgorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIGxvYWRfZnVuY3Rpb25zX3RhYmxlOgorLy8gICBDb250YWlu
cyB0aGUgR2V0TG9hZEZ1bmN0aW9uc01hcCBmb3IgdGV4dHVyZV9mb3JtYXRfdXRpbC5oCisvLwor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3Rh
YmxlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxz
MTEuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3Jt
YXRfdGFibGUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZV9ldGMuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZSBkM2QxMQoreworCituYW1lc3BhY2UKK3sKKworLy8g
RVMzIGltYWdlIGxvYWRpbmcgZnVuY3Rpb25zIHZhcnkgYmFzZWQgb246CisvLyAgICAtIHRoZSBH
TCBpbnRlcm5hbCBmb3JtYXQgKHN1cHBsaWVkIHRvIGdsVGV4KkltYWdlKkQpCisvLyAgICAtIHRo
ZSBHTCBkYXRhIHR5cGUgZ2l2ZW4gKHN1cHBsaWVkIHRvIGdsVGV4KkltYWdlKkQpCisvLyAgICAt
IHRoZSB0YXJnZXQgRFhHSV9GT1JNQVQgdGhhdCB0aGUgaW1hZ2Ugd2lsbCBiZSBsb2FkZWQgaW50
byAod2hpY2ggaXMgY2hvc2VuIGJhc2VkIG9uIHRoZSBEM0QKKy8vICAgIGRldmljZSdzIGNhcGFi
aWxpdGllcykKKy8vIFRoaXMgbWFwIHR5cGUgZGV0ZXJtaW5lcyB3aGljaCBsb2FkaW5nIGZ1bmN0
aW9uIHRvIHVzZSwgYmFzZWQgb24gdGhlc2UgdGhyZWUgcGFyYW1ldGVycy4KKy8vIFNvdXJjZSBm
b3JtYXRzIGFuZCB0eXBlcyBhcmUgdGFrZW4gZnJvbSBUYWJsZXMgMy4yIGFuZCAzLjMgb2YgdGhl
IEVTIDMgc3BlYy4KK3ZvaWQgVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbihzaXplX3Qgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKwordm9pZCBV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbihzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgVU5SRUFDSEFC
TEUoKTsKK30KKworfSAgLy8gbmFtZXNwYWNlCisKKy8vIFRPRE8gd2UgY2FuIHJlcGxhY2UgdGhl
c2UgbWFwcyB3aXRoIG1vcmUgZ2VuZXJhdGVkIGNvZGUKK2NvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiAmR2V0TG9hZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKK3sKKyAgICAvLyBj
bGFuZy1mb3JtYXQgb2ZmCisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZv
cm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRBMTZGVG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRBMTZGVG9SR0JB
MTZGLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURf
QllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZEEzMkZUb1JHQkEzMkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtH
TF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+
IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAg
ICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9BTFBIQTE2Rl9F
WFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZM
T0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZEEzMkZUb1JHQkEzMkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkQTMyRlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIERYR0lfRk9STUFUX0E4X1VOT1JNOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsMT4sIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk06CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQThUb1JHQkE4
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAg
ICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5j
dGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQkdSNV9BMV9BTkdMRVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFRdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRSR0I1QTFUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VYVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQjVBMVRvUkdCQTgsIHRydWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9CR1JBNF9B
TkdMRVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRS
R0JBNFRvUkdCQTgsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSw0PiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Cisg
ICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9
IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxH
THVieXRlLDQ+LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5T
SUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
UkdCQTRUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25J
bmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSw0PiwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOwor
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0JHUkFf
RVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdO
RURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24s
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VO
U0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0
aW9uLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAg
ICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SMTFfRUFDOgorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SOF9VTk9STToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRFQUNSMTFUb1I4LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9VTk9STToKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVE
X0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFQUNSRzExVG9SRzgsIHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQjhfRVRDMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChk
eGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkRVRDMlJHQjhUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5j
dGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAg
ICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
RVRDMlJHQjhBMVRvUkdCQTgsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgor
ICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lH
TkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyUkdCQThUb1JHQkE4LCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAg
ICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCw4PiwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgp
OworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1h
cDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsOD4sIHRydWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAg
ICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01h
cDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsMTY+LCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCwxNj4sIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsMTY+LCB0cnVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAg
ICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRF
XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsNCwxNj4s
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LDQsOD4sIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAg
IH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCw0LDg+LCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAg
ICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjhfU05PUk06CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkRUFDUjExU1RvUjgsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9S
RzExX0VBQzoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtd
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFQUNSRzExU1RvUkc4
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAg
ICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5j
dGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9C
WVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlNSR0JBOFRvU1JHQkE4LCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAg
ICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNN
YXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZEVUQzJTUkdCOFRvUkdCQTgsIHRydWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NS
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3dp
dGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRFVEMyU1JHQjhBMVRvUkdCQTgsIHRydWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NU
RU5DSUw4OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0lOVF8yNF84XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUjMy
VG9SMjRHOCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXzI0XzhdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1IyNEc4LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfREVQVEgzMkZfU1RFTkNJ
TDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkc4WDI0X1RZUEVMRVNT
OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkVG9OYXRpdmU8R0x1aW50LDI+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF8zMl9VTlNJR05F
RF9JTlRfMjRfOF9SRVZdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2Fk
RnVuY3Rpb24sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX0ZMT0FUXzMyX1VOU0lHTkVEX0lOVF8yNF84X1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBP
TkVOVDE2OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9EMTZfVU5PUk06Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdXNo
b3J0LDE+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUzoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFIzMlRvUjE2LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05h
dGl2ZTxHTHVzaG9ydCwxPiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQyNDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQ6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9J
TlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1IyNEc4LCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjI0RzhfVFlQ
RUxFU1M6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9VTlNJR05FRF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSMzJUb1Iy
NEc4LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAg
ICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRG
dW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJGOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1M6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFRvTmF0aXZlPEdMZmxvYXQsMT4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhVbmltcGxlbWVudGVkTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgp
OworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RF
UFRIX0NPTVBPTkVOVDMyX09FUzoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
VU5LTk9XTjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRv
UjI0RzgsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Cisg
ICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9
IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFIzMlRvUjI0Rzgs
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMVJHQjhUb0JDMSwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9P
RVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xf
VU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzFSR0I4VG9SR0JB
OCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAg
ICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChk
eGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZU
b1JHQkExNkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlv
biwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAg
ICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVu
Y3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5m
byhMb2FkTDMyRlRvUkdCQTMyRiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOwor
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0xVTUlO
QU5DRTE2Rl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBb
XSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtH
TF9IQUxGX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDE2RlRvUkdCQTE2Riwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VT
XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTDE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZEwxNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhU
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51
bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0g
TG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMMzJGVG9SR0JBMzJGLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFw
OworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZEwzMkZUb1JHQkEzMkYsIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0FM
UEhBOF9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkTEE4VG9SR0JBOCwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAg
ICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25z
TWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdO
RURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBOFRvUkdCQTgsIHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0U4X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
VU5LTk9XTjoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMOFRv
UkdCQTgsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Cisg
ICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBz
dGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9
IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFw
W0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMOFRvUkdCQTgs
IHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKExvYWRMQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRfT0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkTEExNkZUb1JHQkExNkYsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxv
YWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1h
cDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1
bmN0aW9uSW5mbyhMb2FkTEEzMkZUb1JHQkEzMkYsIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFw
OworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExv
YWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9h
ZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
RnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZExBMTZGVG9SR0JBMTZGLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTE2RlRvUkdC
QTE2RiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
RnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMTZGVG9SR0JBMTZG
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9P
RVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRMQTE2RlRvUkdCQTE2RiwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAg
ICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1VOS05PV046CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMzJG
VG9SR0JBMzJGLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZExBMzJGVG9SR0JBMzJG
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAg
ICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5j
dGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfUjExRl9HMTFGX0IxMEY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rp
b25JbmZvKExvYWRSR0IxNkZUb1JHMTFCMTBGLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF9PRVNdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRSR0IxNkZUb1JHMTFCMTBGLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRSR0IzMkZUb1JHMTFCMTBG
LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5U
XzEwRl8xMUZfMTFGX1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
dWludCwxPiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9SMTZGOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2gg
KGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMTZfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZDMyRlRv
MTZGPDE+LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9G
TE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwxPiwgZmFs
c2UpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwxPiwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SMTZJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZfU0lOVDoKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1h
cDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1NI
T1JUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xzaG9ydCwxPiwgZmFs
c2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SMTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2X1VJ
TlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAg
PSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZElt
YWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1h
cFtHTF9VTlNJR05FRF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
PEdMdXNob3J0LDE+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1IzMkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IzMl9GTE9BVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2Fk
VG9OYXRpdmU8R0xmbG9hdCwxPiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMzJJOgorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJfU0lOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9u
SW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZFRvTmF0aXZlPEdMaW50LDE+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1IzMlVJOgorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJfVUlOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWludCwxPiwgZmFsc2UpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SODoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhfVU5PUk06CisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0ZSwxPiwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SOEk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1NJTlQ6CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9CWVRF
XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xieXRlLDE+LCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1I4VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4X1VJTlQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1Ynl0
ZSwxPiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7Cisg
ICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9SOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
IChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9G
T1JNQVRfUjhfU05PUk06CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRp
dmU8R0xieXRlLDE+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9h
ZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZGOgorICAgICAgICB7CisgICAgICAgICAgICBz
d2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAg
ICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
TG9hZDMyRlRvMTZGPDI+LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfSEFMRl9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFs
ZiwyPiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZM
T0FUX09FU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiwyPiwg
ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9SRzE2SToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9y
bWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2
RzE2X1NJTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdM
c2hvcnQsMj4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFw
OworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfUkcxNlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0
Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9SMTZHMTZfVUlOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkVG9OYXRpdmU8R0x1c2hvcnQsMj4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkczMkY6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVDoKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9IExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xmbG9hdCwyPiwgZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0o
KTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzMy
SToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQ6CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8
R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9JTlRd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGludCwyPiwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SRzMyVUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMl9VSU5U
OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfSU5UXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1
aW50LDI+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1JHODoKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChk
eGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhHOF9VTk9STToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1
bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xl
bnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAg
ICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRUb05hdGl2ZTxHTHVieXRlLDI+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHOEk6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4RzhfU0lOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsMj4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkc4VUk6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhfVUlOVDoKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDI+LCBmYWxzZSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAg
fSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JH
OF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOF9TTk9STToK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtd
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTGJ5dGUsMj4sIGZh
bHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAg
ICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlv
bnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dO
OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0g
W10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBb
R0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2Fk
RnVuY3Rpb24sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJ
R05FRF9TSE9SVF81XzZfNV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2Fk
RnVuY3Rpb24sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7
CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01h
cCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2Fk
TWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xf
VU5TSUdORURfU0hPUlRfNV82XzVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
TWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTBfQTI6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5UXzJfMTBfMTBf
MTBfUkVWXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0x1aW50LDE+LCBm
YWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAg
ICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rp
b25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX1JHQjEwX0EyVUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhn
aUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVZdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVpbnQsMT4sIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTZG
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBb
XSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtH
TF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFJHQjMyRlRvUkdCQTE2RiwgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xoYWxmLGdsOjpGbG9hdDE2T25l
PiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0hBTEZfRkxPQVRf
T0VTXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMaGFsZixnbDo6
RmxvYXQxNk9uZT4sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRN
YXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rp
b25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfU0hPUlRdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRUb05hdGl2ZTNUbzQ8R0xzaG9ydCwweDAwMDE+LCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTZVSToK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQ6Cisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpt
YXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9V
TlNJR05FRF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxH
THVzaG9ydCwweDAwMDE+LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMzJGOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTGZsb2F0LGdsOjpGbG9hdDMyT25lPiwgdHJ1ZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHQjMySToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlv
bnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAg
bG9hZE1hcFtHTF9JTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8
R0xpbnQsMHgwMDAwMDAwMT4sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IzMlVJOgorICAgICAgICB7CisgICAgICAg
ICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7
CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlM1RvNDxHTHVpbnQsMHgwMDAwMDAwMT4sIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SR0I1NjU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1h
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I1RzZS
NV9VTk9STToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzVfNl81XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkVG9OYXRpdmU8R0x1c2hvcnQsMT4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9T
SE9SVF81XzZfNV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFI1RzZCNVRvUkdCQTgsIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMdWJ5dGUsMHhGRj4sIHRy
dWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9u
c01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SR0I1X0ExOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3Jt
YXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CNUc1
UjVBMV9VTk9STToKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0
aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAg
ICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFdID0gTG9hZEltYWdlRnVuY3Rpb25J
bmZvKExvYWRSR0I1QTFUb0ExUkdCNSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwg
TG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4g
bG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfSU5U
XzJfMTBfMTBfMTBfUkVWXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMTBBMlRvUkdC
QTgsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9T
SE9SVF81XzVfNV8xXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCNUExVG9SR0JBOCwg
dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVd
ID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHQjg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFw
ID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRN
YXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZl
M1RvNDxHTHVieXRlLDB4RkY+LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOEk6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9CWVRFXSA9IExvYWRJbWFnZUZ1bmN0aW9u
SW5mbyhMb2FkVG9OYXRpdmUzVG80PEdMYnl0ZSwweDAxPiwgdHJ1ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjhVSToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVDoKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVE
X0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0ZSww
eDAxPiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
RnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX1JHQjhfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1NOT1JNOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9h
ZFRvTmF0aXZlM1RvNDxHTGJ5dGUsMHg3Rj4sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I5X0U1OgorICAgICAgICB7
CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFA6CisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVt
LCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FU
XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCMTZGVG9SR0I5RTUsIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFJHQjE2RlRvUkdCOUU1LCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxvYWRNYXBbR0xfRkxPQVRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRS
R0IzMkZUb1JHQjlFNSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X1VOU0lHTkVEX0lOVF81XzlfOV85X1JFVl0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMdWludCwxPiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICB7CisgICAgICAgICAg
ICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80XSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFdID0gTG9hZEltYWdlRnVu
Y3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9CWVRFXSA9IExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMV0gPSBMb2Fk
SW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0o
KTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
R0JBMTZGOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNN
YXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9h
ZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtHTF9GTE9BVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZDMyRlRvMTZGPDQ+LCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfSEFMRl9GTE9BVF0gPSBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiw0PiwgZmFsc2UpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9IQUxGX0ZMT0FUX09FU10gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaGFsZiw0PiwgZmFsc2UpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsK
KworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMTZJ
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtd
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dM
X1NIT1JUXSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xzaG9ydCw0Piwg
ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAg
ICAgICAgICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0
aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9SR0JBMTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdp
Rm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X1VJTlQ6CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxv
YWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAg
ICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8oTG9hZFRvTmF0aXZlPEdMdXNob3J0LDQ+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkEzMkY6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVDoKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVu
dW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX0ZMT0FUXSA9
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkVG9OYXRpdmU8R0xmbG9hdCw0PiwgZmFsc2UpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAg
ICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SR0JBMzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfU0lOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9u
c01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBs
b2FkTWFwW0dMX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMaW50
LDQ+LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2Fk
RnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX1JHQkEzMlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2gg
KGR4Z2lGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5m
bz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0lOVF0gPSBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8oTG9hZFRvTmF0aXZlPEdMdWludCw0PiwgZmFsc2UpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk06CisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBM
b2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRGdW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBs
b2FkTWFwOworICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9S
VF80XzRfNF80XSA9IExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkUkdCQTRUb0FSR0I0LCB0cnVl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAg
ICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNN
YXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk06CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3Qgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRG
dW5jdGlvbnNNYXAgPSBbXSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFwPEdM
ZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAg
ICAgICAgbG9hZE1hcFtHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80XSA9IExvYWRJbWFnZUZ1bmN0
aW9uSW5mbyhMb2FkUkdCQTRUb1JHQkE4LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRv
TmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVu
Y3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBsb2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7
CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQThJ
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOgorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFw
PEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfQllU
RV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMYnl0ZSw0PiwgZmFsc2Up
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAg
ICAgICAgIH0oKTsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01h
cDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9SR0JBOFVJOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VSU5UOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25z
TWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExv
YWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxv
YWRNYXBbR0xfVU5TSUdORURfQllURV0gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZFRvTmF0
aXZlPEdMdWJ5dGUsND4sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkTWFwOworICAgICAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGxvYWRGdW5jdGlvbnNNYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQThfU05PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoZHhnaUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNOgorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdl
RnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbR0xfQllURV0gPSBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8oTG9hZFRvTmF0aXZlPEdMYnl0ZSw0PiwgZmFsc2UpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgIH0oKTsKKworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9TUkdCODoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxH
TGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlv
bkluZm8+IGxvYWRNYXA7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lH
TkVEX0JZVEVdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTNUbzQ8R0x1Ynl0
ZSwweEZGPiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsK
KyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBs
b2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1NSR0I4X0FMUEhBODoKKyAgICAgICAgeworICAgICAgICAgICAg
c3dpdGNoIChkeGdpRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZEZ1bmN0aW9uc01hcCA9IFtdKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjptYXA8R0xlbnVtLCBMb2FkSW1hZ2VGdW5jdGlvbkluZm8+IGxvYWRNYXA7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsb2FkTWFwW0dMX1VOU0lHTkVEX0JZVEVdID0gTG9hZElt
YWdlRnVuY3Rpb25JbmZvKExvYWRUb05hdGl2ZTxHTHVieXRlLDQ+LCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgp
OworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1NURU5D
SUxfSU5ERVg4OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGR4Z2lGb3JtYXQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9VTktOT1dOOgor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6
bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZvPiBsb2FkRnVuY3Rpb25zTWFwID0gW10o
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1
bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYXBbRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRdID0gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1w
bGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9h
ZE1hcFtEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTU10gPSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAgICAgICAgfSgpOworCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6bWFwPEdMZW51bSwgTG9hZEltYWdlRnVuY3Rpb25JbmZv
PiBsb2FkRnVuY3Rpb25zTWFwID0gW10oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gbG9hZE1hcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvYWRNYXBbRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRdID0gTG9h
ZEltYWdlRnVuY3Rpb25JbmZvKFVuaW1wbGVtZW50ZWRMb2FkRnVuY3Rpb24sIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgbG9hZE1hcFtEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTU10g
PSBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5pbXBsZW1lbnRlZExvYWRGdW5jdGlvbiwgdHJ1ZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZE1hcDsKKyAgICAgICAgICAgICAg
ICAgICAgfSgpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkRnVuY3Rpb25zTWFw
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBzdGQ6Om1hcDxHTGVudW0s
IExvYWRJbWFnZUZ1bmN0aW9uSW5mbz4gZW1wdHlMb2FkRnVuY3Rpb25zTWFwOworICAgICAgICAg
ICAgcmV0dXJuIGVtcHR5TG9hZEZ1bmN0aW9uc01hcDsKKyAgICAgICAgfQorICAgIH0KKyAgICAv
LyBjbGFuZy1mb3JtYXQgb24KKworfSAgLy8gR2V0TG9hZEZ1bmN0aW9uc01hcAorCit9ICAvLyBu
YW1lc3BhY2UgZDNkMTEKKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRp
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsMTggKzgsMjEg
QEAKIC8vIHNwZWNpZmljIHRvIHRoZSBEM0QxMSByZW5kZXJlci4KIAogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCisKKyNpbmNsdWRlIDxh
bGdvcml0aG0+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1JlbmRlclRhcmdldDExLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvV29y
a2Fyb3VuZHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgotI2luY2x1ZGUg
ImxpYkFOR0xFL1Byb2dyYW0uaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3JrYXJvdW5kc0QzRC5oIgogCi0jaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KIG5hbWVzcGFj
ZSByeAogewogCkBAIC0yMTgsMTYgKzIyMSwxMDYgQEAKICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBM
RVNfUEFTU0VEX0VYVDoKICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZB
VElWRV9FWFQ6ICAgcmV0dXJuIEQzRDExX1FVRVJZX09DQ0xVU0lPTjsKICAgICAgIGNhc2UgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTjogcmV0dXJuIEQzRDExX1FVRVJZ
X1NPX1NUQVRJU1RJQ1M7CisgICAgICBjYXNlIEdMX1RJTUVfRUxBUFNFRF9FWFQ6CisgICAgICAg
ICAgLy8gVHdvIGludGVybmFsIHF1ZXJpZXMgYXJlIGFsc28gY3JlYXRlZCBmb3IgYmVnaW4vZW5k
IHRpbWVzdGFtcHMKKyAgICAgICAgICByZXR1cm4gRDNEMTFfUVVFUllfVElNRVNUQU1QX0RJU0pP
SU5UOwogICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRDNEMTFfUVVFUllfRVZFTlQ7CiAgICAgfQogfQogCi19Cit9ICAvLyBuYW1lc3Bh
Y2UgZ2xfZDNkMTEKIAotCiBuYW1lc3BhY2UgZDNkMTFfZ2wKIHsKIAorbmFtZXNwYWNlCit7CisK
Ky8vIEhlbHBlciBmdW5jdG9yIGZvciBxdWVyeWluZyBEWEdJIHN1cHBvcnQuIFNhdmVzIHBhc3Np
bmcgdGhlIHBhcmFtZXRlcnMgcmVwZWF0ZWRseS4KK2NsYXNzIERYR0lTdXBwb3J0SGVscGVyIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBEWEdJU3VwcG9ydEhlbHBlcihJ
RDNEMTFEZXZpY2UgKmRldmljZSwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQorICAg
ICAgICA6IG1EZXZpY2UoZGV2aWNlKSwKKyAgICAgICAgICBtRmVhdHVyZUxldmVsKGZlYXR1cmVM
ZXZlbCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBxdWVyeShEWEdJX0ZPUk1BVCBkeGdpRm9y
bWF0LCBVSU5UIHN1cHBvcnRNYXNrKQorICAgIHsKKyAgICAgICAgaWYgKGR4Z2lGb3JtYXQgPT0g
RFhHSV9GT1JNQVRfVU5LTk9XTikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBhdXRvIGR4Z2lTdXBwb3J0ID0gZDNkMTE6OkdldERYR0lTdXBwb3J0KGR4Z2lGb3JtYXQsIG1G
ZWF0dXJlTGV2ZWwpOworCisgICAgICAgIFVJTlQgc3VwcG9ydGVkQml0cyA9IGR4Z2lTdXBwb3J0
LmFsd2F5c1N1cHBvcnRlZEZsYWdzOworCisgICAgICAgIGlmICgoZHhnaVN1cHBvcnQub3B0aW9u
YWxseVN1cHBvcnRlZEZsYWdzICYgc3VwcG9ydE1hc2spICE9IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFVJTlQgZm9ybWF0U3VwcG9ydDsKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQobURl
dmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGR4Z2lGb3JtYXQsICZmb3JtYXRTdXBwb3J0KSkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3VwcG9ydGVkQml0cyB8PSAoZm9ybWF0U3Vw
cG9ydCAmIHN1cHBvcnRNYXNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBmaW5kIG91dCB3
aHkgd2UgZmFpbCB0aGlzIGNhbGwgc29tZXRpbWVzIGluIEZMOV8zCisgICAgICAgICAgICAgICAg
Ly8gRVJSKCJFcnJvciBjaGVja2luZyBmb3JtYXQgc3VwcG9ydCBmb3IgZm9ybWF0IDB4JXgiLCBk
eGdpRm9ybWF0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAo
KHN1cHBvcnRlZEJpdHMgJiBzdXBwb3J0TWFzaykgPT0gc3VwcG9ydE1hc2spOworICAgIH0KKwor
ICBwcml2YXRlOgorICAgIElEM0QxMURldmljZSAqbURldmljZTsKKyAgICBEM0RfRkVBVFVSRV9M
RVZFTCBtRmVhdHVyZUxldmVsOworfTsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK3Vu
c2lnbmVkIGludCBHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xF
VkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6Cisg
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiAw
OworCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6
CisgICAgICAgICAgICByZXR1cm4gMzsgIC8vIGR4X1ZpZXdBZGp1c3QsIGR4X1ZpZXdDb29yZHMg
YW5kIGR4X1ZpZXdTY2FsZQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25lZCBpbnQg
R2V0UmVzZXJ2ZWRGcmFnbWVudFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzlfMjoKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAg
ICAgICByZXR1cm4gMzsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogR0xpbnQgR2V0TWF4aW11
bUNsaWVudFZlcnNpb24oRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3
aXRjaCAoZmVhdHVyZUxldmVsKQpAQCAtMjQ1LDUyICszMzgsNjUgQEAKICAgICB9CiB9CiAKLXN0
YXRpYyBnbDo6VGV4dHVyZUNhcHMgR2VuZXJhdGVUZXh0dXJlRm9ybWF0Q2FwcyhHTGludCBtYXhD
bGllbnRWZXJzaW9uLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIElEM0QxMURldmljZSAqZGV2aWNl
KQorc3RhdGljIGdsOjpUZXh0dXJlQ2FwcyBHZW5lcmF0ZVRleHR1cmVGb3JtYXRDYXBzKEdMaW50
IG1heENsaWVudFZlcnNpb24sIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgSUQzRDExRGV2aWNlICpk
ZXZpY2UsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZyZW5kZXJlcjExRGV2aWNlQ2FwcykK
IHsKICAgICBnbDo6VGV4dHVyZUNhcHMgdGV4dHVyZUNhcHM7CiAKLSAgICBjb25zdCBkM2QxMTo6
VGV4dHVyZUZvcm1hdCAmZm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhp
bnRlcm5hbEZvcm1hdCwgZGV2aWNlLT5HZXRGZWF0dXJlTGV2ZWwoKSk7CisgICAgRFhHSVN1cHBv
cnRIZWxwZXIgc3VwcG9ydChkZXZpY2UsIHJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZl
bCk7CisgICAgY29uc3QgZDNkMTE6OlRleHR1cmVGb3JtYXQgJmZvcm1hdEluZm8gPQorICAgICAg
ICBkM2QxMTo6R2V0VGV4dHVyZUZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQsIHJlbmRlcmVyMTFE
ZXZpY2VDYXBzKTsKIAotICAgIFVJTlQgZm9ybWF0U3VwcG9ydDsKLSAgICBpZiAoU1VDQ0VFREVE
KGRldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGZvcm1hdEluZm8udGV4Rm9ybWF0LCAmZm9ybWF0
U3VwcG9ydCkpKQorICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJ
bmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7CisKKyAgICBV
SU5UIHRleFN1cHBvcnRNYXNrID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEOworICAg
IGlmIChpbnRlcm5hbEZvcm1hdEluZm8uZGVwdGhCaXRzID09IDAgJiYgaW50ZXJuYWxGb3JtYXRJ
bmZvLnN0ZW5jaWxCaXRzID09IDApCiAgICAgewotICAgICAgICBjb25zdCBnbDo6SW50ZXJuYWxG
b3JtYXQgJmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50
ZXJuYWxGb3JtYXQpOwotICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmRlcHRoQml0cyA+
IDAgfHwgaW50ZXJuYWxGb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID4gMCkKKyAgICAgICAgdGV4U3Vw
cG9ydE1hc2sgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7CisgICAgICAgIGlm
IChtYXhDbGllbnRWZXJzaW9uID4gMikKICAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZUNh
cHMudGV4dHVyYWJsZSA9ICgoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RF
WFRVUkUyRCkgIT0gMCk7CisgICAgICAgICAgICB0ZXhTdXBwb3J0TWFzayB8PSBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9URVhUVVJFM0Q7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICBVSU5UIGZvcm1hdFN1cHBvcnRNYXNrID0gRDNEMTFfRk9STUFUX1NVUFBP
UlRfVEVYVFVSRTJEIHwgRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7Ci0gICAgICAg
ICAgICBpZiAobWF4Q2xpZW50VmVyc2lvbiA+IDIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZm9ybWF0U3VwcG9ydE1hc2sgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNE
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dHVyZUNhcHMudGV4dHVyYWJsZSA9ICgo
Zm9ybWF0U3VwcG9ydCAmIGZvcm1hdFN1cHBvcnRNYXNrKSA9PSBmb3JtYXRTdXBwb3J0TWFzayk7
Ci0gICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoU1VDQ0VFREVEKGRldmljZS0+Q2hlY2tGb3Jt
YXRTdXBwb3J0KGZvcm1hdEluZm8ucmVuZGVyRm9ybWF0LCAmZm9ybWF0U3VwcG9ydCkpICYmCi0g
ICAgICAgICgoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExF
X1JFTkRFUlRBUkdFVCkgIT0gMCkpCisgICAgdGV4dHVyZUNhcHMudGV4dHVyYWJsZSA9IHN1cHBv
cnQucXVlcnkoZm9ybWF0SW5mby5mb3JtYXRTZXQtPnRleEZvcm1hdCwgdGV4U3VwcG9ydE1hc2sp
OworICAgIHRleHR1cmVDYXBzLmZpbHRlcmFibGUgPQorICAgICAgICBzdXBwb3J0LnF1ZXJ5KGZv
cm1hdEluZm8uZm9ybWF0U2V0LT5zcnZGb3JtYXQsIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1NIQURF
Ul9TQU1QTEUpOworICAgIHRleHR1cmVDYXBzLnJlbmRlcmFibGUgPQorICAgICAgICAoc3VwcG9y
dC5xdWVyeShmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0LCBEM0QxMV9GT1JNQVRfU1VQ
UE9SVF9SRU5ERVJfVEFSR0VUKSkgfHwKKyAgICAgICAgKHN1cHBvcnQucXVlcnkoZm9ybWF0SW5m
by5mb3JtYXRTZXQtPmRzdkZvcm1hdCwgRDNEMTFfRk9STUFUX1NVUFBPUlRfREVQVEhfU1RFTkNJ
TCkpOworCisgICAgRFhHSV9GT1JNQVQgcmVuZGVyRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5LTk9X
TjsKKyAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXRTZXQtPmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1B
VF9VTktOT1dOKQogICAgIHsKLSAgICAgICAgZm9yIChzaXplX3Qgc2FtcGxlQ291bnQgPSAxOyBz
YW1wbGVDb3VudCA8PSBEM0QxMV9NQVhfTVVMVElTQU1QTEVfU0FNUExFX0NPVU5UOyBzYW1wbGVD
b3VudCsrKQorICAgICAgICByZW5kZXJGb3JtYXQgPSBmb3JtYXRJbmZvLmZvcm1hdFNldC0+ZHN2
Rm9ybWF0OworICAgIH0KKyAgICBlbHNlIGlmIChmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9y
bWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pCisgICAgeworICAgICAgICByZW5kZXJGb3JtYXQg
PSBmb3JtYXRJbmZvLmZvcm1hdFNldC0+cnR2Rm9ybWF0OworICAgIH0KKyAgICBpZiAocmVuZGVy
Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04gJiYKKyAgICAgICAgc3VwcG9ydC5xdWVyeShy
ZW5kZXJGb3JtYXQsIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JFTkRFUlRBUkdF
VCkpCisgICAgeworICAgICAgICAvLyBBc3N1bWUgMXgKKyAgICAgICAgdGV4dHVyZUNhcHMuc2Ft
cGxlQ291bnRzLmluc2VydCgxKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBzYW1wbGVD
b3VudCA9IDI7IHNhbXBsZUNvdW50IDw9IEQzRDExX01BWF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09V
TlQ7CisgICAgICAgICAgICAgc2FtcGxlQ291bnQgKj0gMikKICAgICAgICAgewogICAgICAgICAg
ICAgVUlOVCBxdWFsaXR5Q291bnQgPSAwOwotICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkZXZp
Y2UtPkNoZWNrTXVsdGlzYW1wbGVRdWFsaXR5TGV2ZWxzKGZvcm1hdEluZm8ucmVuZGVyRm9ybWF0
LCBzYW1wbGVDb3VudCwgJnF1YWxpdHlDb3VudCkpICYmCi0gICAgICAgICAgICAgICAgcXVhbGl0
eUNvdW50ID4gMCkKKyAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZGV2aWNlLT5DaGVja011bHRp
c2FtcGxlUXVhbGl0eUxldmVscyhyZW5kZXJGb3JtYXQsIHNhbXBsZUNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZx
dWFsaXR5Q291bnQpKSkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBc3N1bWUg
d2UgYWx3YXlzIHN1cHBvcnQgbG93ZXIgc2FtcGxlIGNvdW50cworICAgICAgICAgICAgICAgIGlm
IChxdWFsaXR5Q291bnQgPT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0ZXh0dXJlQ2Fw
cy5zYW1wbGVDb3VudHMuaW5zZXJ0KHNhbXBsZUNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIAotICAgIHRleHR1cmVDYXBzLmZpbHRlcmFibGUgPSBTVUNDRUVERUQoZGV2
aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoZm9ybWF0SW5mby5zcnZGb3JtYXQsICZmb3JtYXRTdXBw
b3J0KSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChmb3JtYXRTdXBwb3J0ICYg
RDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSkpICE9IDA7Ci0gICAgdGV4dHVyZUNh
cHMucmVuZGVyYWJsZSA9IChTVUNDRUVERUQoZGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoZm9y
bWF0SW5mby5ydHZGb3JtYXQsICZmb3JtYXRTdXBwb3J0KSkgJiYKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgoZm9ybWF0U3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRF
Ul9UQVJHRVQpKSAhPSAwKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1VDQ0VF
REVEKGRldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGZvcm1hdEluZm8uZHN2Rm9ybWF0LCAmZm9y
bWF0U3VwcG9ydCkpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGZvcm1hdFN1
cHBvcnQgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9ERVBUSF9TVEVOQ0lMKSAhPSAwKSk7Ci0KICAg
ICByZXR1cm4gdGV4dHVyZUNhcHM7CiB9CiAKQEAgLTY1NCwyNyArNzYwLDI2IEBACiAgICAgICAv
LyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rl
c2t0b3AvZmY0NzYxNDkuYXNweCBJRDNEMTFEZXZpY2VDb250ZXh0OjpWU1NldENvbnN0YW50QnVm
ZmVycwogICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CiAgICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAgcmV0
dXJuIDI1NTsKKyAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgorICAgICAgICAgIHJl
dHVybiAyNTUgLSBkM2QxMV9nbDo6R2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycyhmZWF0
dXJlTGV2ZWwpOwogCiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAw
OwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZm
ZXJzKCkKLXsKLSAgICAvLyBSZXNlcnZlIG9uZSBidWZmZXIgZm9yIHRoZSBhcHBsaWNhdGlvbiB1
bmlmb3JtcywgYW5kIG9uZSBmb3IgZHJpdmVyIHVuaWZvcm1zCi0gICAgcmV0dXJuIDI7Ci19Ci0K
IHN0YXRpYyBzaXplX3QgR2V0TWF4aW11bVZlcnRleFVuaWZvcm1CbG9ja3MoRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQogICAgIHsK
ICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX0NPTU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJf
QVBJX1NMT1RfQ09VTlQgLSBHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCk7CisgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgcmV0dXJuIEQzRDExX0NP
TU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQorICAgICAgICAgICAg
ICAgICBkM2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfQ09VTlQ7CiAKICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMDogcmV0dXJuIEQzRDEwX0NPTU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NM
T1RfQ09VTlQgLSBHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCk7CisgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgcmV0dXJuIEQzRDEwX0NPTU1PTlNI
QURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQorICAgICAgICAgICAgICAgICBk
M2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfQ09VTlQ7CiAKICAgICAgIC8vIFVu
aWZvcm0gYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5CiAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKQEAgLTc3MCwyNyArODc1LDI2IEBACiAgICAg
ICAvLyBGcm9tIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dz
L2Rlc2t0b3AvZmY0NzYxNDkuYXNweCBJRDNEMTFEZXZpY2VDb250ZXh0OjpQU1NldENvbnN0YW50
QnVmZmVycwogICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CiAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMjoKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOiAg
cmV0dXJuIDMyOworICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzE6CisgICAgICAgICAg
cmV0dXJuIDMyIC0gZDNkMTFfZ2w6OkdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyhm
ZWF0dXJlTGV2ZWwpOwogCiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVy
biAwOwogICAgIH0KIH0KIAotc3RhdGljIHNpemVfdCBHZXRSZXNlcnZlZFBpeGVsVW5pZm9ybUJ1
ZmZlcnMoKQotewotICAgIC8vIFJlc2VydmUgb25lIGJ1ZmZlciBmb3IgdGhlIGFwcGxpY2F0aW9u
IHVuaWZvcm1zLCBhbmQgb25lIGZvciBkcml2ZXIgdW5pZm9ybXMKLSAgICByZXR1cm4gMjsKLX0K
LQogc3RhdGljIHNpemVfdCBHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtQmxvY2tzKEQzRF9GRUFUVVJF
X0xFVkVMIGZlYXR1cmVMZXZlbCkKIHsKICAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKICAgICB7
CiAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9DT01NT05TSEFERVJfQ09OU1RBTlRfQlVGRkVS
X0FQSV9TTE9UX0NPVU5UIC0gR2V0UmVzZXJ2ZWRQaXhlbFVuaWZvcm1CdWZmZXJzKCk7CisgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgcmV0dXJuIEQzRDExX0NP
TU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09VTlQgLQorICAgICAgICAgICAg
ICAgICBkM2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfQ09VTlQ7CiAKICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMDogcmV0dXJuIEQzRDEwX0NPTU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NM
T1RfQ09VTlQgLSBHZXRSZXNlcnZlZFBpeGVsVW5pZm9ybUJ1ZmZlcnMoKTsKKyAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKKyAgICAgICAgICByZXR1cm4gRDNEMTBfQ09NTU9OU0hB
REVSX0NPTlNUQU5UX0JVRkZFUl9BUElfU0xPVF9DT1VOVCAtCisgICAgICAgICAgICAgICAgIGQz
ZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9DT1VOVDsKIAogICAgICAgLy8gVW5p
Zm9ybSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBEM0QxMSBGZWF0dXJlIExldmVsIDkKICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgpAQCAtOTU3LDE1ICsxMDYxLDE1IEBACiAgICAg
fQogfQogCi12b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2
aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCwgZ2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fw
c01hcCAqdGV4dHVyZUNhcHNNYXAsIGdsOjpFeHRlbnNpb25zICpleHRlbnNpb25zKQordm9pZCBH
ZW5lcmF0ZUNhcHMoSUQzRDExRGV2aWNlICpkZXZpY2UsIElEM0QxMURldmljZUNvbnRleHQgKmRl
dmljZUNvbnRleHQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZyZW5kZXJlcjExRGV2aWNl
Q2FwcywgZ2w6OkNhcHMgKmNhcHMsCisgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUNhcHNN
YXAgKnRleHR1cmVDYXBzTWFwLCBnbDo6RXh0ZW5zaW9ucyAqZXh0ZW5zaW9ucywgZ2w6OkxpbWl0
YXRpb25zICpsaW1pdGF0aW9ucykKIHsKLSAgICBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2
ZWwgPSBkZXZpY2UtPkdldEZlYXR1cmVMZXZlbCgpOwotCiAgICAgR0x1aW50IG1heFNhbXBsZXMg
PSAwOworICAgIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCA9IHJlbmRlcmVyMTFEZXZp
Y2VDYXBzLmZlYXR1cmVMZXZlbDsKICAgICBjb25zdCBnbDo6Rm9ybWF0U2V0ICZhbGxGb3JtYXRz
ID0gZ2w6OkdldEFsbFNpemVkSW50ZXJuYWxGb3JtYXRzKCk7CiAgICAgZm9yIChnbDo6Rm9ybWF0
U2V0Ojpjb25zdF9pdGVyYXRvciBpbnRlcm5hbEZvcm1hdCA9IGFsbEZvcm1hdHMuYmVnaW4oKTsg
aW50ZXJuYWxGb3JtYXQgIT0gYWxsRm9ybWF0cy5lbmQoKTsgKytpbnRlcm5hbEZvcm1hdCkKICAg
ICB7Ci0gICAgICAgIGdsOjpUZXh0dXJlQ2FwcyB0ZXh0dXJlQ2FwcyA9IEdlbmVyYXRlVGV4dHVy
ZUZvcm1hdENhcHMoR2V0TWF4aW11bUNsaWVudFZlcnNpb24oZmVhdHVyZUxldmVsKSwgKmludGVy
bmFsRm9ybWF0LCBkZXZpY2UpOworICAgICAgICBnbDo6VGV4dHVyZUNhcHMgdGV4dHVyZUNhcHMg
PSBHZW5lcmF0ZVRleHR1cmVGb3JtYXRDYXBzKEdldE1heGltdW1DbGllbnRWZXJzaW9uKGZlYXR1
cmVMZXZlbCksICppbnRlcm5hbEZvcm1hdCwgZGV2aWNlLCByZW5kZXJlcjExRGV2aWNlQ2Fwcyk7
CiAgICAgICAgIHRleHR1cmVDYXBzTWFwLT5pbnNlcnQoKmludGVybmFsRm9ybWF0LCB0ZXh0dXJl
Q2Fwcyk7CiAKICAgICAgICAgbWF4U2FtcGxlcyA9IHN0ZDo6bWF4KG1heFNhbXBsZXMsIHRleHR1
cmVDYXBzLmdldE1heFNhbXBsZXMoKSk7CkBAIC05NzcsMTEgKzEwODEsMTIgQEAKICAgICB9CiAK
ICAgICAvLyBHTCBjb3JlIGZlYXR1cmUgbGltaXRzCi0gICAgY2Fwcy0+bWF4RWxlbWVudEluZGV4
ID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+
OjptYXgoKSk7Ci0gICAgY2Fwcy0+bWF4M0RUZXh0dXJlU2l6ZSA9IEdldE1heGltdW0zRFRleHR1
cmVTaXplKGZlYXR1cmVMZXZlbCk7Ci0gICAgY2Fwcy0+bWF4MkRUZXh0dXJlU2l6ZSA9IEdldE1h
eGltdW0yRFRleHR1cmVTaXplKGZlYXR1cmVMZXZlbCk7Ci0gICAgY2Fwcy0+bWF4Q3ViZU1hcFRl
eHR1cmVTaXplID0gR2V0TWF4aW11bUN1YmVNYXBUZXh0dXJlU2l6ZShmZWF0dXJlTGV2ZWwpOwot
ICAgIGNhcHMtPm1heEFycmF5VGV4dHVyZUxheWVycyA9IEdldE1heGltdW0yRFRleHR1cmVBcnJh
eVNpemUoZmVhdHVyZUxldmVsKTsKKyAgICAvLyBSZXNlcnZlIE1BWF9VSU5UIGZvciBEM0QxMSdz
IHByaW1pdGl2ZSByZXN0YXJ0LgorICAgIGNhcHMtPm1heEVsZW1lbnRJbmRleCAgICAgICA9IHN0
YXRpY19jYXN0PEdMaW50NjQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4
KCkgLSAxKTsKKyAgICBjYXBzLT5tYXgzRFRleHR1cmVTaXplICAgICAgPSBzdGF0aWNfY2FzdDxH
THVpbnQ+KEdldE1heGltdW0zRFRleHR1cmVTaXplKGZlYXR1cmVMZXZlbCkpOworICAgIGNhcHMt
Pm1heDJEVGV4dHVyZVNpemUgICAgICA9IHN0YXRpY19jYXN0PEdMdWludD4oR2V0TWF4aW11bTJE
VGV4dHVyZVNpemUoZmVhdHVyZUxldmVsKSk7CisgICAgY2Fwcy0+bWF4Q3ViZU1hcFRleHR1cmVT
aXplID0gc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtQ3ViZU1hcFRleHR1cmVTaXplKGZl
YXR1cmVMZXZlbCkpOworICAgIGNhcHMtPm1heEFycmF5VGV4dHVyZUxheWVycyA9IHN0YXRpY19j
YXN0PEdMdWludD4oR2V0TWF4aW11bTJEVGV4dHVyZUFycmF5U2l6ZShmZWF0dXJlTGV2ZWwpKTsK
IAogICAgIC8vIFVuaW1wbGVtZW50ZWQsIHNldCB0byBtaW5pbXVtIHJlcXVpcmVkCiAgICAgY2Fw
cy0+bWF4TE9EQmlhcyA9IDIuMGY7CkBAIC05OTEsMTEgKzEwOTYsMTIgQEAKIAogICAgIC8vIE1h
eGltdW0gZHJhdyBidWZmZXJzIGFuZCBjb2xvciBhdHRhY2htZW50cyBhcmUgdGhlIHNhbWUsIG1h
eCBjb2xvciBhdHRhY2htZW50cyBjb3VsZCBldmVudHVhbGx5IGJlCiAgICAgLy8gaW5jcmVhc2Vk
IHRvIDE2Ci0gICAgY2Fwcy0+bWF4RHJhd0J1ZmZlcnMgPSBHZXRNYXhpbXVtU2ltdWx0YW5lb3Vz
UmVuZGVyVGFyZ2V0cyhmZWF0dXJlTGV2ZWwpOwotICAgIGNhcHMtPm1heENvbG9yQXR0YWNobWVu
dHMgPSBHZXRNYXhpbXVtU2ltdWx0YW5lb3VzUmVuZGVyVGFyZ2V0cyhmZWF0dXJlTGV2ZWwpOwor
ICAgIGNhcHMtPm1heERyYXdCdWZmZXJzID0gc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVt
U2ltdWx0YW5lb3VzUmVuZGVyVGFyZ2V0cyhmZWF0dXJlTGV2ZWwpKTsKKyAgICBjYXBzLT5tYXhD
b2xvckF0dGFjaG1lbnRzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVt
U2ltdWx0YW5lb3VzUmVuZGVyVGFyZ2V0cyhmZWF0dXJlTGV2ZWwpKTsKIAogICAgIC8vIEQzRDEx
IGhhcyB0aGUgc2FtZSBsaW1pdCBmb3Igdmlld3BvcnQgd2lkdGggYW5kIGhlaWdodAotICAgIGNh
cHMtPm1heFZpZXdwb3J0V2lkdGggPSBHZXRNYXhpbXVtVmlld3BvcnRTaXplKGZlYXR1cmVMZXZl
bCk7CisgICAgY2Fwcy0+bWF4Vmlld3BvcnRXaWR0aCAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdl
dE1heGltdW1WaWV3cG9ydFNpemUoZmVhdHVyZUxldmVsKSk7CiAgICAgY2Fwcy0+bWF4Vmlld3Bv
cnRIZWlnaHQgPSBjYXBzLT5tYXhWaWV3cG9ydFdpZHRoOwogCiAgICAgLy8gQ2hvb3NlIGEgcmVh
c29uYWJsZSBtYXhpbXVtLCBlbmZvcmNlZCBpbiB0aGUgc2hhZGVyLgpAQCAtMTAwNyw4ICsxMTEz
LDggQEAKICAgICBjYXBzLT5tYXhBbGlhc2VkTGluZVdpZHRoID0gMS4wZjsKIAogICAgIC8vIFBy
aW1pdGl2ZSBjb3VudCBsaW1pdHMKLSAgICBjYXBzLT5tYXhFbGVtZW50c0luZGljZXMgPSBHZXRN
YXhpbXVtRHJhd0luZGV4ZWRJbmRleENvdW50KGZlYXR1cmVMZXZlbCk7Ci0gICAgY2Fwcy0+bWF4
RWxlbWVudHNWZXJ0aWNlcyA9IEdldE1heGltdW1EcmF3VmVydGV4Q291bnQoZmVhdHVyZUxldmVs
KTsKKyAgICBjYXBzLT5tYXhFbGVtZW50c0luZGljZXMgID0gc3RhdGljX2Nhc3Q8R0x1aW50PihH
ZXRNYXhpbXVtRHJhd0luZGV4ZWRJbmRleENvdW50KGZlYXR1cmVMZXZlbCkpOworICAgIGNhcHMt
Pm1heEVsZW1lbnRzVmVydGljZXMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdldE1heGltdW1EcmF3
VmVydGV4Q291bnQoZmVhdHVyZUxldmVsKSk7CiAKICAgICAvLyBQcm9ncmFtIGFuZCBzaGFkZXIg
YmluYXJ5IGZvcm1hdHMgKG5vIHN1cHBvcnRlZCBzaGFkZXIgYmluYXJ5IGZvcm1hdHMpCiAgICAg
Y2Fwcy0+cHJvZ3JhbUJpbmFyeUZvcm1hdHMucHVzaF9iYWNrKEdMX1BST0dSQU1fQklOQVJZX0FO
R0xFKTsKQEAgLTEwMzIsMTkgKzExMzgsMjcgQEAKICAgICBjYXBzLT5tYXhTZXJ2ZXJXYWl0VGlt
ZW91dCA9IDA7CiAKICAgICAvLyBWZXJ0ZXggc2hhZGVyIGxpbWl0cwotICAgIGNhcHMtPm1heFZl
cnRleEF0dHJpYnV0ZXMgPSBHZXRNYXhpbXVtVmVydGV4SW5wdXRTbG90cyhmZWF0dXJlTGV2ZWwp
OwotICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1Db21wb25lbnRzID0gR2V0TWF4aW11bVZlcnRl
eFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVMZXZlbCkgKiA0OwotICAgIGNhcHMtPm1heFZlcnRleFVu
aWZvcm1WZWN0b3JzID0gR2V0TWF4aW11bVZlcnRleFVuaWZvcm1WZWN0b3JzKGZlYXR1cmVMZXZl
bCk7Ci0gICAgY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUJsb2NrcyA9IEdldE1heGltdW1WZXJ0ZXhV
bmlmb3JtQmxvY2tzKGZlYXR1cmVMZXZlbCk7Ci0gICAgY2Fwcy0+bWF4VmVydGV4T3V0cHV0Q29t
cG9uZW50cyA9IEdldE1heGltdW1WZXJ0ZXhPdXRwdXRWZWN0b3JzKGZlYXR1cmVMZXZlbCkgKiA0
OwotICAgIGNhcHMtPm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gR2V0TWF4aW11bVZlcnRl
eFRleHR1cmVVbml0cyhmZWF0dXJlTGV2ZWwpOworICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYnV0
ZXMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdldE1heGltdW1WZXJ0ZXhJbnB1dFNsb3RzKGZlYXR1
cmVMZXZlbCkpOworICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1Db21wb25lbnRzID0KKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtVmVydGV4VW5pZm9ybVZlY3RvcnMoZmVh
dHVyZUxldmVsKSkgKiA0OworICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3JzID0KKyAg
ICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtVmVydGV4VW5pZm9ybVZlY3RvcnMo
ZmVhdHVyZUxldmVsKSk7CisgICAgY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUJsb2NrcyA9IHN0YXRp
Y19jYXN0PEdMdWludD4oR2V0TWF4aW11bVZlcnRleFVuaWZvcm1CbG9ja3MoZmVhdHVyZUxldmVs
KSk7CisgICAgY2Fwcy0+bWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cyA9CisgICAgICAgIHN0YXRp
Y19jYXN0PEdMdWludD4oR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVs
KSkgKiA0OworICAgIGNhcHMtPm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0KKyAgICAgICAg
c3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtVmVydGV4VGV4dHVyZVVuaXRzKGZlYXR1cmVM
ZXZlbCkpOwogCiAgICAgLy8gRnJhZ21lbnQgc2hhZGVyIGxpbWl0cwotICAgIGNhcHMtPm1heEZy
YWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPSBHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtVmVjdG9ycyhm
ZWF0dXJlTGV2ZWwpICogNDsKLSAgICBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0g
R2V0TWF4aW11bVBpeGVsVW5pZm9ybVZlY3RvcnMoZmVhdHVyZUxldmVsKTsKLSAgICBjYXBzLT5t
YXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgPSBHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtQmxvY2tzKGZl
YXR1cmVMZXZlbCk7Ci0gICAgY2Fwcy0+bWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgPSBHZXRN
YXhpbXVtUGl4ZWxJbnB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKSAqIDQ7Ci0gICAgY2Fwcy0+bWF4
VGV4dHVyZUltYWdlVW5pdHMgPSBHZXRNYXhpbXVtUGl4ZWxUZXh0dXJlVW5pdHMoZmVhdHVyZUxl
dmVsKTsKKyAgICBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzID0KKyAgICAgICAg
c3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtVmVjdG9ycyhmZWF0dXJl
TGV2ZWwpKSAqIDQ7CisgICAgY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9CisgICAg
ICAgIHN0YXRpY19jYXN0PEdMdWludD4oR2V0TWF4aW11bVBpeGVsVW5pZm9ybVZlY3RvcnMoZmVh
dHVyZUxldmVsKSk7CisgICAgY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzID0KKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtQmxvY2tzKGZlYXR1
cmVMZXZlbCkpOworICAgIGNhcHMtPm1heEZyYWdtZW50SW5wdXRDb21wb25lbnRzID0KKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtUGl4ZWxJbnB1dFZlY3RvcnMoZmVhdHVy
ZUxldmVsKSkgKiA0OworICAgIGNhcHMtPm1heFRleHR1cmVJbWFnZVVuaXRzICA9IHN0YXRpY19j
YXN0PEdMdWludD4oR2V0TWF4aW11bVBpeGVsVGV4dHVyZVVuaXRzKGZlYXR1cmVMZXZlbCkpOwog
ICAgIGNhcHMtPm1pblByb2dyYW1UZXhlbE9mZnNldCA9IEdldE1pbmltdW1UZXhlbE9mZnNldChm
ZWF0dXJlTGV2ZWwpOwogICAgIGNhcHMtPm1heFByb2dyYW1UZXhlbE9mZnNldCA9IEdldE1heGlt
dW1UZXhlbE9mZnNldChmZWF0dXJlTGV2ZWwpOwogCkBAIC0xMDYzLDE0ICsxMTc3LDE4IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdMaW50NjQ+KGNhcHMtPm1heFZlcnRleFVuaWZvcm1Db21wb25lbnRzKTsKICAgICBjYXBzLT5t
YXhDb21iaW5lZEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPSAoc3RhdGljX2Nhc3Q8R0xpbnQ2
ND4oY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzKSAqIHN0YXRpY19jYXN0PEdMaW50NjQ+
KGNhcHMtPm1heFVuaWZvcm1CbG9ja1NpemUgLyA0KSkgKwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMaW50NjQ+KGNhcHMtPm1h
eEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMpOwotICAgIGNhcHMtPm1heFZhcnlpbmdDb21wb25l
bnRzID0gR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKSAqIDQ7Ci0g
ICAgY2Fwcy0+bWF4VmFyeWluZ1ZlY3RvcnMgPSBHZXRNYXhpbXVtVmVydGV4T3V0cHV0VmVjdG9y
cyhmZWF0dXJlTGV2ZWwpOworICAgIGNhcHMtPm1heFZhcnlpbmdDb21wb25lbnRzID0KKyAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtVmVydGV4T3V0cHV0VmVjdG9ycyhmZWF0
dXJlTGV2ZWwpKSAqIDQ7CisgICAgY2Fwcy0+bWF4VmFyeWluZ1ZlY3RvcnMgICAgICAgICAgICA9
IHN0YXRpY19jYXN0PEdMdWludD4oR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMoZmVhdHVy
ZUxldmVsKSk7CiAgICAgY2Fwcy0+bWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IGNhcHMt
Pm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzICsgY2Fwcy0+bWF4VGV4dHVyZUltYWdlVW5pdHM7
CiAKICAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgbGltaXRzCi0gICAgY2Fwcy0+bWF4VHJhbnNm
b3JtRmVlZGJhY2tJbnRlcmxlYXZlZENvbXBvbmVudHMgPSBHZXRNYXhpbXVtU3RyZWFtT3V0cHV0
SW50ZXJsZWF2ZWRDb21wb25lbnRzKGZlYXR1cmVMZXZlbCk7Ci0gICAgY2Fwcy0+bWF4VHJhbnNm
b3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMgPSBHZXRNYXhpbXVtU3RyZWFtT3V0cHV0QnVm
ZmVycyhmZWF0dXJlTGV2ZWwpOwotICAgIGNhcHMtPm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJh
dGVDb21wb25lbnRzID0gR2V0TWF4aW11bVN0cmVhbU91dHB1dFNlcGFyYXRlQ29tcG9uZW50cyhm
ZWF0dXJlTGV2ZWwpOworICAgIGNhcHMtPm1heFRyYW5zZm9ybUZlZWRiYWNrSW50ZXJsZWF2ZWRD
b21wb25lbnRzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtU3RyZWFt
T3V0cHV0SW50ZXJsZWF2ZWRDb21wb25lbnRzKGZlYXR1cmVMZXZlbCkpOworICAgIGNhcHMtPm1h
eFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzID0KKyAgICAgICAgc3RhdGljX2Nh
c3Q8R0x1aW50PihHZXRNYXhpbXVtU3RyZWFtT3V0cHV0QnVmZmVycyhmZWF0dXJlTGV2ZWwpKTsK
KyAgICBjYXBzLT5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cyA9CisgICAg
ICAgIHN0YXRpY19jYXN0PEdMdWludD4oR2V0TWF4aW11bVN0cmVhbU91dHB1dFNlcGFyYXRlQ29t
cG9uZW50cyhmZWF0dXJlTGV2ZWwpKTsKIAogICAgIC8vIE11bHRpc2FtcGxlIGxpbWl0cwogICAg
IGNhcHMtPm1heFNhbXBsZXMgPSBtYXhTYW1wbGVzOwpAQCAtMTA3OCw3ICsxMTk2LDYgQEAKICAg
ICAvLyBHTCBleHRlbnNpb24gc3VwcG9ydAogICAgIGV4dGVuc2lvbnMtPnNldFRleHR1cmVFeHRl
bnNpb25TdXBwb3J0KCp0ZXh0dXJlQ2Fwc01hcCk7CiAgICAgZXh0ZW5zaW9ucy0+ZWxlbWVudElu
ZGV4VWludCA9IHRydWU7Ci0gICAgZXh0ZW5zaW9ucy0+cGFja2VkRGVwdGhTdGVuY2lsID0gdHJ1
ZTsKICAgICBleHRlbnNpb25zLT5nZXRQcm9ncmFtQmluYXJ5ID0gdHJ1ZTsKICAgICBleHRlbnNp
b25zLT5yZ2I4cmdiYTggPSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPnJlYWRGb3JtYXRCR1JBID0g
dHJ1ZTsKQEAgLTEwOTMsNiArMTIxMCwxMCBAQAogICAgIGV4dGVuc2lvbnMtPm9jY2x1c2lvblF1
ZXJ5Qm9vbGVhbiA9IEdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydChmZWF0dXJlTGV2ZWwpOwogICAg
IGV4dGVuc2lvbnMtPmZlbmNlID0gR2V0RXZlbnRRdWVyeVN1cHBvcnQoZmVhdHVyZUxldmVsKTsK
ICAgICBleHRlbnNpb25zLT50aW1lclF1ZXJ5ID0gZmFsc2U7IC8vIFVuaW1wbGVtZW50ZWQKKyAg
ICBleHRlbnNpb25zLT5kaXNqb2ludFRpbWVyUXVlcnkgICAgICAgICAgPSB0cnVlOworICAgIGV4
dGVuc2lvbnMtPnF1ZXJ5Q291bnRlckJpdHNUaW1lRWxhcHNlZCA9IDY0OworICAgIGV4dGVuc2lv
bnMtPnF1ZXJ5Q291bnRlckJpdHNUaW1lc3RhbXAgPQorICAgICAgICAwOyAgLy8gVGltZXN0YW1w
cyBjYW5ub3QgYmUgc3VwcG9ydGVkIGR1ZSB0byBEM0QxMSBsaW1pdGF0aW9ucwogICAgIGV4dGVu
c2lvbnMtPnJvYnVzdG5lc3MgPSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPmJsZW5kTWluTWF4ID0g
dHJ1ZTsKICAgICBleHRlbnNpb25zLT5mcmFtZWJ1ZmZlckJsaXQgPSBHZXRGcmFtZWJ1ZmZlckJs
aXRTdXBwb3J0KGZlYXR1cmVMZXZlbCk7CkBAIC0xMTAzLDE4ICsxMjI0LDExOSBAQAogICAgIGV4
dGVuc2lvbnMtPnNoYWRlclRleHR1cmVMT0QgPSBHZXRTaGFkZXJUZXh0dXJlTE9EU3VwcG9ydChm
ZWF0dXJlTGV2ZWwpOwogICAgIGV4dGVuc2lvbnMtPmZyYWdEZXB0aCA9IHRydWU7CiAgICAgZXh0
ZW5zaW9ucy0+dGV4dHVyZVVzYWdlID0gdHJ1ZTsgLy8gVGhpcyBjb3VsZCBiZSBmYWxzZSBzaW5j
ZSBpdCBoYXMgbm8gZWZmZWN0IGluIEQzRDExCisgICAgZXh0ZW5zaW9ucy0+ZGlzY2FyZEZyYW1l
YnVmZmVyID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT50cmFuc2xhdGVkU2hhZGVyU291cmNlID0g
dHJ1ZTsKICAgICBleHRlbnNpb25zLT5mYm9SZW5kZXJNaXBtYXAgPSBmYWxzZTsKLX0KKyAgICBl
eHRlbnNpb25zLT5kZWJ1Z01hcmtlciA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+ZWdsSW1hZ2Ug
ICAgICAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBleHRlbnNpb25zLT51bnBhY2tTdWJpbWFnZSAg
ICAgICAgICAgPSB0cnVlOworICAgIGV4dGVuc2lvbnMtPnBhY2tTdWJpbWFnZSAgICAgICAgICAg
ICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+dmVydGV4QXJyYXlPYmplY3QgICAgICAgID0gdHJ1
ZTsKKyAgICBleHRlbnNpb25zLT5ub0Vycm9yICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAg
IGV4dGVuc2lvbnMtPmxvc3N5RVRDRGVjb2RlICAgICAgICAgICA9IHRydWU7CiAKKyAgICAvLyBE
M0QxMSBGZWF0dXJlIExldmVsIDEwXzArIHVzZXMgU1ZfSXNGcm9udEZhY2UgaW4gSExTTCB0byBl
bXVsYXRlIGdsX0Zyb250RmFjaW5nLgorICAgIC8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIGRv
ZXNuJ3Qgc3VwcG9ydCBTVl9Jc0Zyb250RmFjZSwgYW5kIGhhcyBubyBlcXVpdmFsZW50LCBzbyBj
YW4ndCBzdXBwb3J0IGdsX0Zyb250RmFjaW5nLgorICAgIGxpbWl0YXRpb25zLT5ub0Zyb250RmFj
aW5nU3VwcG9ydCA9IChyZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZF
QVRVUkVfTEVWRUxfOV8zKTsKKworICAgIC8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIGRvZXNu
J3Qgc3VwcG9ydCBhbHBoYS10by1jb3ZlcmFnZQorICAgIGxpbWl0YXRpb25zLT5ub1NhbXBsZUFs
cGhhVG9Db3ZlcmFnZVN1cHBvcnQgPSAocmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVs
IDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyk7CisKKyAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVs
cyA5XzMgYW5kIGJlbG93IGRvIG5vdCBzdXBwb3J0IG5vbi1jb25zdGFudCBsb29wIGluZGV4aW5n
IGFuZCByZXF1aXJlCisgICAgLy8gYWRkaXRpb25hbAorICAgIC8vIHByZS12YWxpZGF0aW9uIG9m
IHRoZSBzaGFkZXIgYXQgY29tcGlsZSB0aW1lIHRvIHByb2R1Y2UgYSBiZXR0ZXIgZXJyb3IgbWVz
c2FnZS4KKyAgICBsaW1pdGF0aW9ucy0+c2hhZGVyc1JlcXVpcmVJbmRleGVkTG9vcFZhbGlkYXRp
b24gPQorICAgICAgICAocmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsIDw9IEQzRF9G
RUFUVVJFX0xFVkVMXzlfMyk7CisKKyAgICAvLyBEM0QxMSBoYXMgbm8gY29uY2VwdCBvZiBzZXBh
cmF0ZSBtYXNrcyBhbmQgcmVmcyBmb3IgZnJvbnQgYW5kIGJhY2sgZmFjZXMgaW4gdGhlIGRlcHRo
IHN0ZW5jaWwKKyAgICAvLyBzdGF0ZS4KKyAgICBsaW1pdGF0aW9ucy0+bm9TZXBhcmF0ZVN0ZW5j
aWxSZWZzQW5kTWFza3MgPSB0cnVlOworCisgICAgLy8gRDNEMTEgY2Fubm90IHN1cHBvcnQgY29u
c3RhbnQgY29sb3IgYW5kIGFscGhhIGJsZW5kIGZ1bmNzIHRvZ2V0aGVyCisgICAgbGltaXRhdGlv
bnMtPm5vU2ltdWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRGdW5jID0gdHJ1ZTsK
KworI2lmZGVmIEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFCisgICAgLy8gU2V0dGluZyBhIG5v
bi16ZXJvIGRpdmlzb3Igb24gYXR0cmlidXRlIHplcm8gZG9lc24ndCB3b3JrIG9uIGNlcnRhaW4g
V2luZG93cyBQaG9uZSA4LWVyYSBkZXZpY2VzLgorICAgIC8vIFdlIHNob3VsZCBwcmV2ZW50IGRl
dmVsb3BlcnMgZnJvbSBkb2luZyB0aGlzIG9uIEFMTCBXaW5kb3dzIFN0b3JlIGRldmljZXMuIFRo
aXMgd2lsbCBtYWludGFpbiBjb25zaXN0ZW5jeSBhY3Jvc3MgYWxsIFdpbmRvd3MgZGV2aWNlcy4K
KyAgICAvLyBXZSBhbGxvdyBub24temVybyBkaXZpc29ycyBvbiBhdHRyaWJ1dGUgemVybyBpZiB0
aGUgQ2xpZW50IFZlcnNpb24gPj0gMywgc2luY2UgZGV2aWNlcyBhZmZlY3RlZCBieSB0aGlzIGlz
c3VlIGRvbid0IHN1cHBvcnQgRVMzKy4KKyAgICBsaW1pdGF0aW9ucy0+YXR0cmlidXRlWmVyb1Jl
cXVpcmVzWmVyb0Rpdmlzb3JJbkVYVCA9IHRydWU7CisjZW5kaWYKIH0KIAorfSAgLy8gbmFtZXNw
YWNlIGQzZDExX2dsCisKIG5hbWVzcGFjZSBkM2QxMQogewogCitBTkdMRUQzRDExRGV2aWNlVHlw
ZSBHZXREZXZpY2VUeXBlKElEM0QxMURldmljZSAqZGV2aWNlKQoreworICAgIC8vIE5vdGUgdGhh
dCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gQU5HTEVEM0QxMURldmljZVR5cGUgcmF0aGVyIHRo
YW4gYSBEM0RfRFJJVkVSX1RZUEUgdmFsdWUsCisgICAgLy8gc2luY2UgaXQgaXMgZGlmZmljdWx0
IHRvIHRlbGwgU29mdHdhcmUgYW5kIFJlZmVyZW5jZSBkZXZpY2VzIGFwYXJ0CisKKyAgICBJRFhH
SURldmljZSAqZHhnaURldmljZSAgICAgPSBudWxscHRyOworICAgIElEWEdJQWRhcHRlciAqZHhn
aUFkYXB0ZXIgICA9IG51bGxwdHI7CisgICAgSURYR0lBZGFwdGVyMiAqZHhnaUFkYXB0ZXIyID0g
bnVsbHB0cjsKKworICAgIEFOR0xFRDNEMTFEZXZpY2VUeXBlIHJldERldmljZVR5cGUgPSBBTkdM
RV9EM0QxMV9ERVZJQ0VfVFlQRV9VTktOT1dOOworCisgICAgSFJFU1VMVCBociA9IGRldmljZS0+
UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSURYR0lEZXZpY2UpLCAodm9pZCAqKikmZHhnaURldmlj
ZSk7CisgICAgaWYgKFNVQ0NFRURFRChocikpCisgICAgeworICAgICAgICBociA9IGR4Z2lEZXZp
Y2UtPkdldFBhcmVudChfX3V1aWRvZihJRFhHSUFkYXB0ZXIpLCAodm9pZCAqKikmZHhnaUFkYXB0
ZXIpOworICAgICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjp3c3RyaW5nIGFkYXB0ZXJTdHJpbmc7CisgICAgICAgICAgICBIUkVTVUxUIGFkYXB0ZXIy
aHIgPQorICAgICAgICAgICAgICAgIGR4Z2lBZGFwdGVyLT5RdWVyeUludGVyZmFjZShfX3V1aWRv
ZihkeGdpQWRhcHRlcjIpLCAodm9pZCAqKikmZHhnaUFkYXB0ZXIyKTsKKyAgICAgICAgICAgIGlm
IChTVUNDRUVERUQoYWRhcHRlcjJocikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gT24gRDNEX0ZFQVRVUkVfTEVWRUxfOV8qLCBJRFhHSUFkYXB0ZXI6OkdldERlc2MgcmV0dXJu
cyAiU29mdHdhcmUgQWRhcHRlciIKKyAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIGRlc2NyaXB0
aW9uIHN0cmluZy4gVHJ5IHRvIHVzZSBJRFhHSUFkYXB0ZXIyOjpHZXREZXNjMiB0byBnZXQgdGhl
CisgICAgICAgICAgICAgICAgLy8gYWN0dWFsIGhhcmR3YXJlIHZhbHVlcyBpZiBwb3NzaWJsZS4K
KyAgICAgICAgICAgICAgICBEWEdJX0FEQVBURVJfREVTQzIgYWRhcHRlckRlc2MyOworICAgICAg
ICAgICAgICAgIGR4Z2lBZGFwdGVyMi0+R2V0RGVzYzIoJmFkYXB0ZXJEZXNjMik7CisgICAgICAg
ICAgICAgICAgYWRhcHRlclN0cmluZyA9IHN0ZDo6d3N0cmluZyhhZGFwdGVyRGVzYzIuRGVzY3Jp
cHRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIERYR0lfQURBUFRFUl9ERVNDIGFkYXB0ZXJEZXNjOworICAgICAgICAg
ICAgICAgIGR4Z2lBZGFwdGVyLT5HZXREZXNjKCZhZGFwdGVyRGVzYyk7CisgICAgICAgICAgICAg
ICAgYWRhcHRlclN0cmluZyA9IHN0ZDo6d3N0cmluZyhhZGFwdGVyRGVzYy5EZXNjcmlwdGlvbik7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEJvdGggUmVmZXJlbmNlIGFuZCBTb2Z0
d2FyZSBhZGFwdGVycyB3aWxsIGJlICdTb2Z0d2FyZSBBZGFwdGVyJworICAgICAgICAgICAgY29u
c3QgYm9vbCBpc1NvZnR3YXJlRGV2aWNlID0KKyAgICAgICAgICAgICAgICAoYWRhcHRlclN0cmlu
Zy5maW5kKHN0ZDo6d3N0cmluZyhMIlNvZnR3YXJlIEFkYXB0ZXIiKSkgIT0gc3RkOjpzdHJpbmc6
Om5wb3MpOworICAgICAgICAgICAgY29uc3QgYm9vbCBpc051bGxEZXZpY2UgPSAoYWRhcHRlclN0
cmluZyA9PSBMIiIpOworICAgICAgICAgICAgY29uc3QgYm9vbCBpc1dBUlBEZXZpY2UgPQorICAg
ICAgICAgICAgICAgIChhZGFwdGVyU3RyaW5nLmZpbmQoc3RkOjp3c3RyaW5nKEwiQmFzaWMgUmVu
ZGVyIikpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKKworICAgICAgICAgICAgaWYgKGlzU29mdHdh
cmVEZXZpY2UgfHwgaXNOdWxsRGV2aWNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEFTU0VSVCghaXNXQVJQRGV2aWNlKTsKKyAgICAgICAgICAgICAgICByZXREZXZpY2VUeXBlID0g
QU5HTEVfRDNEMTFfREVWSUNFX1RZUEVfU09GVFdBUkVfUkVGX09SX05VTEw7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlIGlmIChpc1dBUlBEZXZpY2UpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0RGV2aWNlVHlwZSA9IEFOR0xFX0QzRDExX0RFVklDRV9UWVBFX1dB
UlA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgcmV0RGV2aWNlVHlwZSA9IEFOR0xFX0QzRDExX0RFVklDRV9UWVBFX0hBUkRX
QVJFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgU2FmZVJlbGVhc2Uo
ZHhnaURldmljZSk7CisgICAgU2FmZVJlbGVhc2UoZHhnaUFkYXB0ZXIpOworICAgIFNhZmVSZWxl
YXNlKGR4Z2lBZGFwdGVyMik7CisKKyAgICByZXR1cm4gcmV0RGV2aWNlVHlwZTsKK30KKwogdm9p
ZCBNYWtlVmFsaWRTaXplKGJvb2wgaXNJbWFnZSwgRFhHSV9GT1JNQVQgZm9ybWF0LCBHTHNpemVp
ICpyZXF1ZXN0V2lkdGgsIEdMc2l6ZWkgKnJlcXVlc3RIZWlnaHQsIGludCAqbGV2ZWxPZmZzZXQp
CiB7Ci0gICAgY29uc3QgRFhHSUZvcm1hdCAmZHhnaUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhH
SUZvcm1hdEluZm8oZm9ybWF0KTsKKyAgICBjb25zdCBEWEdJRm9ybWF0U2l6ZSAmZHhnaUZvcm1h
dEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKGZvcm1hdCk7CiAKICAgICBpbnQg
dXBzYW1wbGVDb3VudCA9IDA7CiAgICAgLy8gRG9uJ3QgZXhwYW5kIHRoZSBzaXplIG9mIGZ1bGwg
dGV4dHVyZXMgdGhhdCBhcmUgYXQgbGVhc3QgKGJsb2NrV2lkdGggeCBibG9ja0hlaWdodCkgYWxy
ZWFkeS4KQEAgLTExMzEsMTQgKzEzNTMsMjAgQEAKICAgICAqbGV2ZWxPZmZzZXQgPSB1cHNhbXBs
ZUNvdW50OwogfQogCi12b2lkIEdlbmVyYXRlSW5pdGlhbFRleHR1cmVEYXRhKEdMaW50IGludGVy
bmFsRm9ybWF0LCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwsIEdMdWludCB3aWR0aCwg
R0x1aW50IGhlaWdodCwgR0x1aW50IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgbWlwTGV2ZWxzLCBzdGQ6OnZlY3RvcjxEM0QxMV9TVUJSRVNPVVJDRV9EQVRB
PiAqb3V0U3VicmVzb3VyY2VEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3Rvcjwgc3RkOjp2ZWN0b3I8QllURT4gPiAqb3V0RGF0YSkKK3ZvaWQgR2VuZXJhdGVJ
bml0aWFsVGV4dHVyZURhdGEoR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZyZW5kZXJlcjExRGV2
aWNlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtaXBMZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPEQzRDExX1NVQlJFU09VUkNFX0RBVEE+ICpvdXRTdWJyZXNvdXJj
ZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPEJZVEU+PiAqb3V0RGF0YSkKIHsKLSAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1h
dCAmZDNkRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbEZv
cm1hdCwgZmVhdHVyZUxldmVsKTsKKyAgICBjb25zdCBkM2QxMTo6VGV4dHVyZUZvcm1hdCAmZDNk
Rm9ybWF0SW5mbyA9IGQzZDExOjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCwg
cmVuZGVyZXIxMURldmljZUNhcHMpOwogICAgIEFTU0VSVChkM2RGb3JtYXRJbmZvLmRhdGFJbml0
aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpOwogCi0gICAgY29uc3QgZDNkMTE6OkRYR0lGb3JtYXQg
JmR4Z2lGb3JtYXRJbmZvID0gZDNkMTE6OkdldERYR0lGb3JtYXRJbmZvKGQzZEZvcm1hdEluZm8u
dGV4Rm9ybWF0KTsKKyAgICBjb25zdCBkM2QxMTo6RFhHSUZvcm1hdFNpemUgJmR4Z2lGb3JtYXRJ
bmZvID0KKyAgICAgICAgZDNkMTE6OkdldERYR0lGb3JtYXRTaXplSW5mbyhkM2RGb3JtYXRJbmZv
LmZvcm1hdFNldC0+dGV4Rm9ybWF0KTsKIAogICAgIG91dFN1YnJlc291cmNlRGF0YS0+cmVzaXpl
KG1pcExldmVscyk7CiAgICAgb3V0RGF0YS0+cmVzaXplKG1pcExldmVscyk7CkBAIC0xMTYxLDYg
KzEzODksMTEgQEAKICAgICB9CiB9CiAKK1VJTlQgR2V0UHJpbWl0aXZlUmVzdGFydEluZGV4KCkK
K3sKKyAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxVSU5UPjo6bWF4KCk7Cit9CisKIHZv
aWQgU2V0UG9zaXRpb25UZXhDb29yZFZlcnRleChQb3NpdGlvblRleENvb3JkVmVydGV4KiB2ZXJ0
ZXgsIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHUsIGZsb2F0IHYpCiB7CiAgICAgdmVydGV4LT54
ID0geDsKQEAgLTExODMsMTUgKzE0MTYsOTQgQEAKIEhSRVNVTFQgU2V0RGVidWdOYW1lKElEM0Qx
MURldmljZUNoaWxkICpyZXNvdXJjZSwgY29uc3QgY2hhciAqbmFtZSkKIHsKICNpZiBkZWZpbmVk
KF9ERUJVRykKLSAgICByZXR1cm4gcmVzb3VyY2UtPlNldFByaXZhdGVEYXRhKFdLUERJRF9EM0RE
ZWJ1Z09iamVjdE5hbWUsIHN0cmxlbihuYW1lKSwgbmFtZSk7CisgICAgVUlOVCBleGlzdGluZ0Rh
dGFTaXplID0gMDsKKyAgICByZXNvdXJjZS0+R2V0UHJpdmF0ZURhdGEoV0tQRElEX0QzRERlYnVn
T2JqZWN0TmFtZSwgJmV4aXN0aW5nRGF0YVNpemUsIG51bGxwdHIpOworICAgIC8vIERvbid0IGNo
ZWNrIHRoZSBIUkVTVUxULSBpZiBpdCBmYWlsZWQgdGhlbiB0aGF0IHByb2JhYmx5IGp1c3QgbWVh
bnMgdGhhdCBubyBwcml2YXRlIGRhdGEKKyAgICAvLyBleGlzdHMgeWV0CisKKyAgICBpZiAoZXhp
c3RpbmdEYXRhU2l6ZSA+IDApCisgICAgeworICAgICAgICAvLyBJbiBzb21lIGNhc2VzLCBBTkdM
RSB3aWxsIHRyeSB0byBhcHBseSB0d28gbmFtZXMgdG8gb25lIG9iamVjdCwgd2hpY2ggY2F1c2Vz
CisgICAgICAgIC8vIGEgRDNEIFNESyBMYXllcnMgd2FybmluZy4gVGhpcyBjYW4gb2NjdXIgaWYs
IGZvciBleGFtcGxlLCB5b3UgJ2NyZWF0ZScgdHdvIG9iamVjdHMKKyAgICAgICAgLy8gKGUuZy5S
YXN0ZXJpemVyIFN0YXRlcykgd2l0aCBpZGVudGljYWwgREVTQ3Mgb24gdGhlIHNhbWUgZGV2aWNl
LiBEM0QxMSB3aWxsIG9wdGltaXplCisgICAgICAgIC8vIHRoZXNlIGNhbGxzIGFuZCByZXR1cm4g
dGhlIHNhbWUgb2JqZWN0IGJvdGggdGltZXMuCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICpt
dWx0aXBsZU5hbWVzVXNlZCA9ICJNdWx0aXBsZSBuYW1lcyBzZXQgYnkgQU5HTEUiOworCisgICAg
ICAgIC8vIFJlbW92ZSB0aGUgZXhpc3RpbmcgbmFtZQorICAgICAgICBIUkVTVUxUIGhyID0gcmVz
b3VyY2UtPlNldFByaXZhdGVEYXRhKFdLUERJRF9EM0REZWJ1Z09iamVjdE5hbWUsIDAsIG51bGxw
dHIpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGhyOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwbHkgdGhlIG5ldyBuYW1lCisgICAg
ICAgIHJldHVybiByZXNvdXJjZS0+U2V0UHJpdmF0ZURhdGEoV0tQRElEX0QzRERlYnVnT2JqZWN0
TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KHN0cmxlbihtdWx0aXBsZU5hbWVzVXNlZCkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlTmFtZXNVc2VkKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlc291cmNlLT5TZXRQcml2YXRlRGF0YShX
S1BESURfRDNERGVidWdPYmplY3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RybGVuKG5hbWUpKSwgbmFtZSk7
CisgICAgfQogI2Vsc2UKICAgICByZXR1cm4gU19PSzsKICNlbmRpZgogfQogCi1Xb3JrYXJvdW5k
cyBHZW5lcmF0ZVdvcmthcm91bmRzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK0xh
enlJbnB1dExheW91dDo6TGF6eUlucHV0TGF5b3V0KGNvbnN0IEQzRDExX0lOUFVUX0VMRU1FTlRf
REVTQyAqaW5wdXREZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0RGVzY0xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJZ
VEUgKmJ5dGVDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ5
dGVDb2RlTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
ZGVidWdOYW1lKQorICAgIDogbUlucHV0RGVzYyhpbnB1dERlc2NMZW4pLAorICAgICAgbUJ5dGVD
b2RlTGVuKGJ5dGVDb2RlTGVuKSwKKyAgICAgIG1CeXRlQ29kZShieXRlQ29kZSksCisgICAgICBt
RGVidWdOYW1lKGRlYnVnTmFtZSkKIHsKLSAgICBXb3JrYXJvdW5kcyB3b3JrYXJvdW5kczsKKyAg
ICBtZW1jcHkoJm1JbnB1dERlc2NbMF0sIGlucHV0RGVzYywgc2l6ZW9mKEQzRDExX0lOUFVUX0VM
RU1FTlRfREVTQykgKiBpbnB1dERlc2NMZW4pOworfQorCitJRDNEMTFJbnB1dExheW91dCAqTGF6
eUlucHV0TGF5b3V0OjpyZXNvbHZlKElEM0QxMURldmljZSAqZGV2aWNlKQoreworICAgIGNoZWNr
QXNzb2NpYXRlZERldmljZShkZXZpY2UpOworCisgICAgaWYgKG1SZXNvdXJjZSA9PSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPQorICAgICAgICAgICAgZGV2aWNlLT5D
cmVhdGVJbnB1dExheW91dCgmbUlucHV0RGVzY1swXSwgc3RhdGljX2Nhc3Q8VUlOVD4obUlucHV0
RGVzYy5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQnl0
ZUNvZGUsIG1CeXRlQ29kZUxlbiwgJm1SZXNvdXJjZSk7CisgICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CisgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocmVzdWx0KTsK
KyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUmVzb3VyY2UsIG1EZWJ1Z05hbWUpOworICAg
IH0KKworICAgIHJldHVybiBtUmVzb3VyY2U7Cit9CisKK0xhenlCbGVuZFN0YXRlOjpMYXp5Qmxl
bmRTdGF0ZShjb25zdCBEM0QxMV9CTEVORF9ERVNDICZkZXNjLCBjb25zdCBjaGFyICpkZWJ1Z05h
bWUpCisgICAgOiBtRGVzYyhkZXNjKSwgbURlYnVnTmFtZShkZWJ1Z05hbWUpCit7Cit9CisKK0lE
M0QxMUJsZW5kU3RhdGUgKkxhenlCbGVuZFN0YXRlOjpyZXNvbHZlKElEM0QxMURldmljZSAqZGV2
aWNlKQoreworICAgIGNoZWNrQXNzb2NpYXRlZERldmljZShkZXZpY2UpOworCisgICAgaWYgKG1S
ZXNvdXJjZSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZp
Y2UtPkNyZWF0ZUJsZW5kU3RhdGUoJm1EZXNjLCAmbVJlc291cmNlKTsKKyAgICAgICAgQVNTRVJU
KFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShy
ZXN1bHQpOworICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1SZXNvdXJjZSwgbURlYnVnTmFt
ZSk7CisgICAgfQorCisgICAgcmV0dXJuIG1SZXNvdXJjZTsKK30KKworV29ya2Fyb3VuZHNEM0Qg
R2VuZXJhdGVXb3JrYXJvdW5kcyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCit7Cisg
ICAgV29ya2Fyb3VuZHNEM0Qgd29ya2Fyb3VuZHM7CiAgICAgd29ya2Fyb3VuZHMubXJ0UGVyZldv
cmthcm91bmQgPSB0cnVlOwogICAgIHdvcmthcm91bmRzLnNldERhdGFGYXN0ZXJUaGFuSW1hZ2VV
cGxvYWQgPSB0cnVlOwogICAgIHdvcmthcm91bmRzLnplcm9NYXhMb2RXb3JrYXJvdW5kID0gKGZl
YXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpOwpAQCAtMTE5OSw2ICsxNTExLDI0
NSBAQAogICAgIHJldHVybiB3b3JrYXJvdW5kczsKIH0KIAordm9pZCBJbml0Q29uc3RhbnRCdWZm
ZXJEZXNjKEQzRDExX0JVRkZFUl9ERVNDICpjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBzaXpl
X3QgYnl0ZVdpZHRoKQoreworICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24tPkJ5dGVXaWR0
aCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxVSU5UPihieXRlV2lkdGgpOworICAgIGNvbnN0YW50
QnVmZmVyRGVzY3JpcHRpb24tPlVzYWdlICAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9EWU5B
TUlDOworICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24tPkJpbmRGbGFncyAgICAgICAgICAg
PSBEM0QxMV9CSU5EX0NPTlNUQU5UX0JVRkZFUjsKKyAgICBjb25zdGFudEJ1ZmZlckRlc2NyaXB0
aW9uLT5DUFVBY2Nlc3NGbGFncyAgICAgID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICBj
b25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLT5NaXNjRmxhZ3MgICAgICAgICAgID0gMDsKKyAgICBj
b25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLT5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKIH0KIAor
fSAgLy8gbmFtZXNwYWNlIGQzZDExCisKK1RleHR1cmVIZWxwZXIxMTo6VGV4dHVyZUhlbHBlcjEx
KCkKKyAgICA6IG1UZXh0dXJlVHlwZShHTF9OT05FKSwKKyAgICAgIG1Gb3JtYXQoRFhHSV9GT1JN
QVRfVU5LTk9XTiksCisgICAgICBtQU5HTEVGb3JtYXQoZDNkMTE6OkFOR0xFX0ZPUk1BVF9OT05F
KSwKKyAgICAgIG1TYW1wbGVDb3VudCgwKSwKKyAgICAgIG1UZXh0dXJlMkQobnVsbHB0ciksCisg
ICAgICBtVGV4dHVyZTNEKG51bGxwdHIpCit7CiB9CisKK1RleHR1cmVIZWxwZXIxMTo6VGV4dHVy
ZUhlbHBlcjExKFRleHR1cmVIZWxwZXIxMSAmJnRvQ29weSkKKyAgICA6IG1UZXh0dXJlVHlwZSh0
b0NvcHkubVRleHR1cmVUeXBlKSwKKyAgICAgIG1FeHRlbnRzKHRvQ29weS5tRXh0ZW50cyksCisg
ICAgICBtRm9ybWF0KHRvQ29weS5tRm9ybWF0KSwKKyAgICAgIG1BTkdMRUZvcm1hdCh0b0NvcHku
bUFOR0xFRm9ybWF0KSwKKyAgICAgIG1TYW1wbGVDb3VudCh0b0NvcHkubVNhbXBsZUNvdW50KSwK
KyAgICAgIG1UZXh0dXJlMkQodG9Db3B5Lm1UZXh0dXJlMkQpLAorICAgICAgbVRleHR1cmUzRCh0
b0NvcHkubVRleHR1cmUzRCkKK3sKKyAgICB0b0NvcHkucmVzZXQoKTsKK30KKworLy8gc3RhdGlj
CitUZXh0dXJlSGVscGVyMTEgVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNlKElEM0Qx
MVJlc291cmNlICpnZW5lcmljUmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGQzZDExOjpBTkdMRUZvcm1hdCBhbmdsZUZvcm1hdCkKK3sK
KyAgICBUZXh0dXJlSGVscGVyMTEgbmV3SGVscGVyOworICAgIG5ld0hlbHBlci5tQU5HTEVGb3Jt
YXQgPSBhbmdsZUZvcm1hdDsKKyAgICBuZXdIZWxwZXIubVRleHR1cmUyRCAgID0gZDNkMTE6OkR5
bmFtaWNDYXN0Q29tT2JqZWN0PElEM0QxMVRleHR1cmUyRD4oZ2VuZXJpY1Jlc291cmNlKTsKKyAg
ICBuZXdIZWxwZXIubVRleHR1cmUzRCAgID0gZDNkMTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElE
M0QxMVRleHR1cmUzRD4oZ2VuZXJpY1Jlc291cmNlKTsKKyAgICBuZXdIZWxwZXIubVRleHR1cmVU
eXBlID0gbmV3SGVscGVyLm1UZXh0dXJlMkQgPyBHTF9URVhUVVJFXzJEIDogR0xfVEVYVFVSRV8z
RDsKKyAgICBuZXdIZWxwZXIuaW5pdERlc2MoKTsKKyAgICByZXR1cm4gbmV3SGVscGVyOworfQor
CisvLyBzdGF0aWMKK1RleHR1cmVIZWxwZXIxMSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRQb3Nz
ZXNzMkQoSUQzRDExVGV4dHVyZTJEICp0ZXhUb093biwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0
KQoreworICAgIFRleHR1cmVIZWxwZXIxMSBuZXdIZWxwZXI7CisgICAgbmV3SGVscGVyLm1BTkdM
RUZvcm1hdCA9IGFuZ2xlRm9ybWF0OworICAgIG5ld0hlbHBlci5tVGV4dHVyZTJEICAgPSB0ZXhU
b093bjsKKyAgICBuZXdIZWxwZXIubVRleHR1cmVUeXBlID0gR0xfVEVYVFVSRV8yRDsKKyAgICBu
ZXdIZWxwZXIuaW5pdERlc2MoKTsKKyAgICByZXR1cm4gbmV3SGVscGVyOworfQorCisvLyBzdGF0
aWMKK1RleHR1cmVIZWxwZXIxMSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRQb3NzZXNzM0QoSUQz
RDExVGV4dHVyZTNEICp0ZXhUb093biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KQoreworICAg
IFRleHR1cmVIZWxwZXIxMSBuZXdIZWxwZXI7CisgICAgbmV3SGVscGVyLm1BTkdMRUZvcm1hdCA9
IGFuZ2xlRm9ybWF0OworICAgIG5ld0hlbHBlci5tVGV4dHVyZTNEICAgPSB0ZXhUb093bjsKKyAg
ICBuZXdIZWxwZXIubVRleHR1cmVUeXBlID0gR0xfVEVYVFVSRV8zRDsKKyAgICBuZXdIZWxwZXIu
aW5pdERlc2MoKTsKKyAgICByZXR1cm4gbmV3SGVscGVyOworfQorCit2b2lkIFRleHR1cmVIZWxw
ZXIxMTo6aW5pdERlc2MoKQoreworICAgIGlmIChtVGV4dHVyZVR5cGUgPT0gR0xfVEVYVFVSRV8y
RCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbVRleHR1cmUzRCk7CisgICAgICAgIEQzRDExX1RF
WFRVUkUyRF9ERVNDIGRlc2MyRDsKKyAgICAgICAgbVRleHR1cmUyRC0+R2V0RGVzYygmZGVzYzJE
KTsKKworICAgICAgICBtRXh0ZW50cy53aWR0aCAgPSBzdGF0aWNfY2FzdDxpbnQ+KGRlc2MyRC5X
aWR0aCk7CisgICAgICAgIG1FeHRlbnRzLmhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oZGVzYzJE
LkhlaWdodCk7CisgICAgICAgIG1FeHRlbnRzLmRlcHRoICA9IDE7CisgICAgICAgIG1Gb3JtYXQg
ICAgICAgICA9IGRlc2MyRC5Gb3JtYXQ7CisgICAgICAgIG1TYW1wbGVDb3VudCAgICA9IGRlc2My
RC5TYW1wbGVEZXNjLkNvdW50OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NF
UlQobVRleHR1cmUzRCAmJiBtVGV4dHVyZVR5cGUgPT0gR0xfVEVYVFVSRV8zRCk7CisgICAgICAg
IEQzRDExX1RFWFRVUkUzRF9ERVNDIGRlc2MzRDsKKyAgICAgICAgbVRleHR1cmUzRC0+R2V0RGVz
YygmZGVzYzNEKTsKKworICAgICAgICBtRXh0ZW50cy53aWR0aCAgPSBzdGF0aWNfY2FzdDxpbnQ+
KGRlc2MzRC5XaWR0aCk7CisgICAgICAgIG1FeHRlbnRzLmhlaWdodCA9IHN0YXRpY19jYXN0PGlu
dD4oZGVzYzNELkhlaWdodCk7CisgICAgICAgIG1FeHRlbnRzLmRlcHRoICA9IHN0YXRpY19jYXN0
PGludD4oZGVzYzNELkRlcHRoKTsKKyAgICAgICAgbUZvcm1hdCAgICAgICAgID0gZGVzYzNELkZv
cm1hdDsKKyAgICAgICAgbVNhbXBsZUNvdW50ICAgID0gMTsKKyAgICB9CisgICAgQVNTRVJUKG1G
b3JtYXQgPT0gZDNkMTE6OkdldEFOR0xFRm9ybWF0U2V0KG1BTkdMRUZvcm1hdCkudGV4Rm9ybWF0
KTsKK30KKworVGV4dHVyZUhlbHBlcjExOjp+VGV4dHVyZUhlbHBlcjExKCkKK3sKKyAgICBTYWZl
UmVsZWFzZShtVGV4dHVyZTJEKTsKKyAgICBTYWZlUmVsZWFzZShtVGV4dHVyZTNEKTsKK30KKwor
SUQzRDExUmVzb3VyY2UgKlRleHR1cmVIZWxwZXIxMTo6Z2V0UmVzb3VyY2UoKSBjb25zdAorewor
ICAgIHJldHVybiBtVGV4dHVyZTJEID8gc3RhdGljX2Nhc3Q8SUQzRDExUmVzb3VyY2UgKj4obVRl
eHR1cmUyRCkKKyAgICAgICAgICAgICAgICAgICAgICA6IHN0YXRpY19jYXN0PElEM0QxMVJlc291
cmNlICo+KG1UZXh0dXJlM0QpOworfQorCitUZXh0dXJlSGVscGVyMTEgJlRleHR1cmVIZWxwZXIx
MTo6b3BlcmF0b3I9KFRleHR1cmVIZWxwZXIxMSAmJnRleHR1cmUpCit7CisgICAgU2FmZVJlbGVh
c2UobVRleHR1cmUyRCk7CisgICAgU2FmZVJlbGVhc2UobVRleHR1cmUzRCk7CisKKyAgICBtVGV4
dHVyZVR5cGUgPSB0ZXh0dXJlLm1UZXh0dXJlVHlwZTsKKyAgICBtRXh0ZW50cyAgICAgPSB0ZXh0
dXJlLm1FeHRlbnRzOworICAgIG1Gb3JtYXQgICAgICA9IHRleHR1cmUubUZvcm1hdDsKKyAgICBt
QU5HTEVGb3JtYXQgPSB0ZXh0dXJlLm1BTkdMRUZvcm1hdDsKKyAgICBtU2FtcGxlQ291bnQgPSB0
ZXh0dXJlLm1TYW1wbGVDb3VudDsKKyAgICBtVGV4dHVyZTJEICAgPSB0ZXh0dXJlLm1UZXh0dXJl
MkQ7CisgICAgbVRleHR1cmUzRCA9IHRleHR1cmUubVRleHR1cmUzRDsKKyAgICB0ZXh0dXJlLnJl
c2V0KCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFRleHR1cmVIZWxwZXIxMTo6cmVz
ZXQoKQoreworICAgIG1UZXh0dXJlVHlwZSA9IEdMX05PTkU7CisgICAgbUV4dGVudHMgICAgID0g
Z2w6OkV4dGVudHMoKTsKKyAgICBtRm9ybWF0ICAgICAgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOwor
ICAgIG1TYW1wbGVDb3VudCA9IDA7CisgICAgbVRleHR1cmUyRCAgID0gbnVsbHB0cjsKKyAgICBt
VGV4dHVyZTNEICAgPSBudWxscHRyOworfQorCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVs
cGVyMTE+IENyZWF0ZVN0YWdpbmdUZXh0dXJlKEdMZW51bSB0ZXh0dXJlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgZHhnaUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UpCit7CisgICAgaWYgKHRleHR1cmVU
eXBlID09IEdMX1RFWFRVUkVfMkQpCisgICAgeworICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyBzdGFnaW5nRGVzYzsKKyAgICAgICAgc3RhZ2luZ0Rlc2MuV2lkdGggICAgICAgICAgICAgID0g
c2l6ZS53aWR0aDsKKyAgICAgICAgc3RhZ2luZ0Rlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gc2l6
ZS5oZWlnaHQ7CisgICAgICAgIHN0YWdpbmdEZXNjLk1pcExldmVscyAgICAgICAgICA9IDE7Cisg
ICAgICAgIHN0YWdpbmdEZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7CisgICAgICAgIHN0YWdp
bmdEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGR4Z2lGb3JtYXQ7CisgICAgICAgIHN0YWdpbmdE
ZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CisgICAgICAgIHN0YWdpbmdEZXNjLlNhbXBsZURl
c2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHN0YWdpbmdEZXNjLlVzYWdlICAgICAgICAgICAgICA9
IEQzRDExX1VTQUdFX1NUQUdJTkc7CisgICAgICAgIHN0YWdpbmdEZXNjLkJpbmRGbGFncyAgICAg
ICAgICA9IDA7CisgICAgICAgIHN0YWdpbmdEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IEQzRDEx
X0NQVV9BQ0NFU1NfUkVBRDsKKyAgICAgICAgc3RhZ2luZ0Rlc2MuTWlzY0ZsYWdzICAgICAgICAg
ID0gMDsKKworICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKnN0YWdpbmdUZXggPSBudWxscHRyOwor
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZzdGFnaW5n
RGVzYywgbnVsbHB0ciwgJnN0YWdpbmdUZXgpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgIkNyZWF0ZVN0YWdpbmdUZXh0dXJlRm9yIGZhaWxlZCwgSFJFU1VMVDogMHglWC4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFBvc3Nlc3MyRChzdGFnaW5nVGV4LCBhbmds
ZUZvcm1hdCk7CisgICAgfQorICAgIEFTU0VSVCh0ZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzNE
KTsKKworICAgIEQzRDExX1RFWFRVUkUzRF9ERVNDIHN0YWdpbmdEZXNjOworICAgIHN0YWdpbmdE
ZXNjLldpZHRoICAgICAgICAgID0gc2l6ZS53aWR0aDsKKyAgICBzdGFnaW5nRGVzYy5IZWlnaHQg
ICAgICAgICA9IHNpemUuaGVpZ2h0OworICAgIHN0YWdpbmdEZXNjLkRlcHRoICAgICAgICAgID0g
MTsKKyAgICBzdGFnaW5nRGVzYy5NaXBMZXZlbHMgICAgICA9IDE7CisgICAgc3RhZ2luZ0Rlc2Mu
Rm9ybWF0ICAgICAgICAgPSBkeGdpRm9ybWF0OworICAgIHN0YWdpbmdEZXNjLlVzYWdlICAgICAg
ICAgID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICBzdGFnaW5nRGVzYy5CaW5kRmxhZ3MgICAg
ICA9IDA7CisgICAgc3RhZ2luZ0Rlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNT
X1JFQUQ7CisgICAgc3RhZ2luZ0Rlc2MuTWlzY0ZsYWdzICAgICAgPSAwOworCisgICAgSUQzRDEx
VGV4dHVyZTNEICpzdGFnaW5nVGV4ID0gbnVsbHB0cjsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGRl
dmljZS0+Q3JlYXRlVGV4dHVyZTNEKCZzdGFnaW5nRGVzYywgbnVsbHB0ciwgJnN0YWdpbmdUZXgp
OworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgIkNyZWF0ZVN0YWdpbmdUZXh0dXJlRm9yIGZhaWxlZCwgSFJF
U1VMVDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgfQor
CisgICAgcmV0dXJuIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFBvc3Nlc3MzRChzdGFnaW5nVGV4
LCBhbmdsZUZvcm1hdCk7Cit9CisKK2Jvb2wgVXNlUHJlc2VudFBhdGhGYXN0KGNvbnN0IFJlbmRl
cmVyMTEgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAqZnJhbWVidWZmZXJBdHRhY2htZW50KQoreworICAgIGlmIChmcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gKGZyYW1lYnVmZmVyQXR0YWNobWVudC0+dHlwZSgpID09
IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQgJiYKKyAgICAgICAgICAgIHJlbmRlcmVyLT5wcmVzZW50
UGF0aEZhc3RFbmFibGVkKCkpOworfQorCitOb3RpZmljYXRpb25TZXQ6Ok5vdGlmaWNhdGlvblNl
dCgpCit7Cit9CisKK05vdGlmaWNhdGlvblNldDo6fk5vdGlmaWNhdGlvblNldCgpCit7Cit9CisK
K3ZvaWQgTm90aWZpY2F0aW9uU2V0OjphZGQoY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNh
bGxiYWNrKQoreworICAgIEFTU0VSVChtQ2FsbGJhY2tzLmNvdW50KGNhbGxiYWNrKSA9PSAwKTsK
KyAgICBtQ2FsbGJhY2tzLmluc2VydChjYWxsYmFjayk7Cit9CisKK3ZvaWQgTm90aWZpY2F0aW9u
U2V0OjpyZW1vdmUoY29uc3QgTm90aWZpY2F0aW9uQ2FsbGJhY2sgKmNhbGxiYWNrKQoreworICAg
IEFTU0VSVChtQ2FsbGJhY2tzLmNvdW50KGNhbGxiYWNrKSA9PSAxKTsKKyAgICBtQ2FsbGJhY2tz
LmVyYXNlKGNhbGxiYWNrKTsKK30KKwordm9pZCBOb3RpZmljYXRpb25TZXQ6OnNpZ25hbCgpIGNv
bnN0Cit7CisgICAgaWYgKG1DYWxsYmFja3MuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZm9yIChjb25zdCBhdXRvICpjYWxsYmFjayA6IG1DYWxsYmFja3MpCisgICAgeworICAgICAg
ICAoKmNhbGxiYWNrKSgpOworICAgIH0KK30KKwordm9pZCBOb3RpZmljYXRpb25TZXQ6OmNsZWFy
KCkKK3sKKyAgICBtQ2FsbGJhY2tzLmNsZWFyKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9yZW5kZXJlcjExX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCwxMiArMTAsMTYgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1JF
TkRFUkVSMTFfVVRJTFNfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1JF
TkRFUkVSMTFfVVRJTFNfSF8KIAorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPGZ1bmN0aW9u
YWw+CisjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90
YWJsZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgog
Ci0jaW5jbHVkZSA8dmVjdG9yPgotCiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIEZyYW1lYnVmZmVy
QXR0YWNobWVudDsKQEAgLTIzLDkgKzI3LDE0IEBACiAKIG5hbWVzcGFjZSByeAogeworY2xhc3Mg
UmVuZGVyZXIxMTsKIGNsYXNzIFJlbmRlclRhcmdldDExOwotc3RydWN0IFdvcmthcm91bmRzOwor
c3RydWN0IFdvcmthcm91bmRzRDNEOworc3RydWN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzOwogCit1
c2luZyBSZW5kZXJUYXJnZXRBcnJheSA9IHN0ZDo6YXJyYXk8UmVuZGVyVGFyZ2V0MTEgKiwgZ2w6
OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM+OwordXNpbmcgUlRWQXJyYXkgICAgICAg
ICAgPSBzdGQ6OmFycmF5PElEM0QxMVJlbmRlclRhcmdldFZpZXcgKiwgZ2w6OklNUExFTUVOVEFU
SU9OX01BWF9EUkFXX0JVRkZFUlM+OworCiBuYW1lc3BhY2UgZ2xfZDNkMTEKIHsKIApAQCAtNDUs
MjUgKzU0LDQ3IEBACiAKIEQzRDExX1FVRVJZIENvbnZlcnRRdWVyeVR5cGUoR0xlbnVtIHF1ZXJ5
VHlwZSk7CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbF9kM2QxMQogCiBuYW1lc3BhY2UgZDNkMTFf
Z2wKIHsKIAordW5zaWduZWQgaW50IEdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoRDNE
X0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKKwordW5zaWduZWQgaW50IEdldFJlc2VydmVk
RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpOwor
CiBHTGludCBHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpOwotdm9pZCBHZW5lcmF0ZUNhcHMoSUQzRDExRGV2aWNlICpkZXZpY2UsIElEM0QxMURl
dmljZUNvbnRleHQgKmRldmljZUNvbnRleHQsIGdsOjpDYXBzICpjYXBzLCBnbDo6VGV4dHVyZUNh
cHNNYXAgKnRleHR1cmVDYXBzTWFwLCBnbDo6RXh0ZW5zaW9ucyAqZXh0ZW5zaW9ucyk7Cit2b2lk
IEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2aWNlQ29udGV4dCAq
ZGV2aWNlQ29udGV4dCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJlbmRlcmVyMTFEZXZp
Y2VDYXBzLCBnbDo6Q2FwcyAqY2FwcywKKyAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ2Fw
c01hcCAqdGV4dHVyZUNhcHNNYXAsIGdsOjpFeHRlbnNpb25zICpleHRlbnNpb25zLCBnbDo6TGlt
aXRhdGlvbnMgKmxpbWl0YXRpb25zKTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIGQzZDExX2dsCiAK
IG5hbWVzcGFjZSBkM2QxMQogewogCitlbnVtIEFOR0xFRDNEMTFEZXZpY2VUeXBlCit7CisgICAg
QU5HTEVfRDNEMTFfREVWSUNFX1RZUEVfVU5LTk9XTiwKKyAgICBBTkdMRV9EM0QxMV9ERVZJQ0Vf
VFlQRV9IQVJEV0FSRSwKKyAgICBBTkdMRV9EM0QxMV9ERVZJQ0VfVFlQRV9TT0ZUV0FSRV9SRUZf
T1JfTlVMTCwKKyAgICBBTkdMRV9EM0QxMV9ERVZJQ0VfVFlQRV9XQVJQLAorfTsKKworQU5HTEVE
M0QxMURldmljZVR5cGUgR2V0RGV2aWNlVHlwZShJRDNEMTFEZXZpY2UgKmRldmljZSk7CisKIHZv
aWQgTWFrZVZhbGlkU2l6ZShib29sIGlzSW1hZ2UsIERYR0lfRk9STUFUIGZvcm1hdCwgR0xzaXpl
aSAqcmVxdWVzdFdpZHRoLCBHTHNpemVpICpyZXF1ZXN0SGVpZ2h0LCBpbnQgKmxldmVsT2Zmc2V0
KTsKIAotdm9pZCBHZW5lcmF0ZUluaXRpYWxUZXh0dXJlRGF0YShHTGludCBpbnRlcm5hbEZvcm1h
dCwgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsLCBHTHVpbnQgd2lkdGgsIEdMdWludCBo
ZWlnaHQsIEdMdWludCBkZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1pcExldmVscywgc3RkOjp2ZWN0b3I8RDNEMTFfU1VCUkVTT1VSQ0VfREFUQT4gKm91dFN1
YnJlc291cmNlRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8IHN0ZDo6dmVjdG9yPEJZVEU+ID4gKm91dERhdGEpOwordm9pZCBHZW5lcmF0ZUluaXRpYWxU
ZXh0dXJlRGF0YShHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJlbmRlcmVyMTFEZXZpY2VDYXBz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1pcExldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8RDNEMTFfU1VCUkVTT1VSQ0VfREFUQT4gKm91dFN1YnJlc291cmNlRGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8
QllURT4+ICpvdXREYXRhKTsKIAorVUlOVCBHZXRQcmltaXRpdmVSZXN0YXJ0SW5kZXgoKTsKKwog
c3RydWN0IFBvc2l0aW9uVGV4Q29vcmRWZXJ0ZXgKIHsKICAgICBmbG9hdCB4LCB5OwpAQCAtMTMz
LDU2ICsxNjQsMjYzIEBACiAgICAgfQogfQogCi10ZW1wbGF0ZSA8dW5zaWduZWQgaW50IE4+Ci1p
bmxpbmUgSUQzRDExVmVydGV4U2hhZGVyICpDb21waWxlVlMoSUQzRDExRGV2aWNlICpkZXZpY2Us
IGNvbnN0IEJZVEUgKCZieXRlQ29kZSlbTl0sIGNvbnN0IGNoYXIgKm5hbWUpCitpbmxpbmUgSUQz
RDExVmVydGV4U2hhZGVyICpDb21waWxlVlMoSUQzRDExRGV2aWNlICpkZXZpY2UsIGNvbnN0IEJZ
VEUgKmJ5dGVDb2RlLCBzaXplX3QgTiwgY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBJRDNEMTFW
ZXJ0ZXhTaGFkZXIgKnZzID0gTlVMTDsKLSAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlVmVydGV4U2hhZGVyKGJ5dGVDb2RlLCBOLCBOVUxMLCAmdnMpOwotICAgIFVOVVNFRF9BU1NF
UlRJT05fVkFSSUFCTEUocmVzdWx0KTsKKyAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKnZzID0gbnVs
bHB0cjsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVmVydGV4U2hhZGVyKGJ5
dGVDb2RlLCBOLCBudWxscHRyLCAmdnMpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7
Ci0gICAgU2V0RGVidWdOYW1lKHZzLCBuYW1lKTsKLSAgICByZXR1cm4gdnM7CisgICAgaWYgKFNV
Q0NFRURFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgU2V0RGVidWdOYW1lKHZzLCBuYW1lKTsK
KyAgICAgICAgcmV0dXJuIHZzOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdGVt
cGxhdGUgPHVuc2lnbmVkIGludCBOPgotaW5saW5lIElEM0QxMUdlb21ldHJ5U2hhZGVyICpDb21w
aWxlR1MoSUQzRDExRGV2aWNlICpkZXZpY2UsIGNvbnN0IEJZVEUgKCZieXRlQ29kZSlbTl0sIGNv
bnN0IGNoYXIgKm5hbWUpCitJRDNEMTFWZXJ0ZXhTaGFkZXIgKkNvbXBpbGVWUyhJRDNEMTFEZXZp
Y2UgKmRldmljZSwgY29uc3QgQllURSAoJmJ5dGVDb2RlKVtOXSwgY29uc3QgY2hhciAqbmFtZSkK
IHsKLSAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ3MgPSBOVUxMOwotICAgIEhSRVNVTFQgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVHZW9tZXRyeVNoYWRlcihieXRlQ29kZSwgTiwgTlVMTCwgJmdz
KTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CisgICAgcmV0dXJuIENv
bXBpbGVWUyhkZXZpY2UsIGJ5dGVDb2RlLCBOLCBuYW1lKTsKK30KKworaW5saW5lIElEM0QxMUdl
b21ldHJ5U2hhZGVyICpDb21waWxlR1MoSUQzRDExRGV2aWNlICpkZXZpY2UsIGNvbnN0IEJZVEUg
KmJ5dGVDb2RlLCBzaXplX3QgTiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBJRDNEMTFHZW9t
ZXRyeVNoYWRlciAqZ3MgPSBudWxscHRyOworICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5D
cmVhdGVHZW9tZXRyeVNoYWRlcihieXRlQ29kZSwgTiwgbnVsbHB0ciwgJmdzKTsKICAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgIFNldERlYnVnTmFtZShncywgbmFtZSk7Ci0gICAg
cmV0dXJuIGdzOworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIFNl
dERlYnVnTmFtZShncywgbmFtZSk7CisgICAgICAgIHJldHVybiBnczsKKyAgICB9CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHRlbXBsYXRlIDx1bnNpZ25lZCBpbnQgTj4KLWlubGluZSBJRDNE
MTFQaXhlbFNoYWRlciAqQ29tcGlsZVBTKElEM0QxMURldmljZSAqZGV2aWNlLCBjb25zdCBCWVRF
ICgmYnl0ZUNvZGUpW05dLCBjb25zdCBjaGFyICpuYW1lKQorSUQzRDExR2VvbWV0cnlTaGFkZXIg
KkNvbXBpbGVHUyhJRDNEMTFEZXZpY2UgKmRldmljZSwgY29uc3QgQllURSAoJmJ5dGVDb2RlKVtO
XSwgY29uc3QgY2hhciAqbmFtZSkKIHsKLSAgICBJRDNEMTFQaXhlbFNoYWRlciAqcHMgPSBOVUxM
OwotICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihieXRlQ29k
ZSwgTiwgTlVMTCwgJnBzKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7
CisgICAgcmV0dXJuIENvbXBpbGVHUyhkZXZpY2UsIGJ5dGVDb2RlLCBOLCBuYW1lKTsKK30KKwor
aW5saW5lIElEM0QxMVBpeGVsU2hhZGVyICpDb21waWxlUFMoSUQzRDExRGV2aWNlICpkZXZpY2Us
IGNvbnN0IEJZVEUgKmJ5dGVDb2RlLCBzaXplX3QgTiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAg
ICBJRDNEMTFQaXhlbFNoYWRlciAqcHMgPSBudWxscHRyOworICAgIEhSRVNVTFQgcmVzdWx0ID0g
ZGV2aWNlLT5DcmVhdGVQaXhlbFNoYWRlcihieXRlQ29kZSwgTiwgbnVsbHB0ciwgJnBzKTsKICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgIFNldERlYnVnTmFtZShwcywgbmFtZSk7
Ci0gICAgcmV0dXJuIHBzOworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICB7CisgICAg
ICAgIFNldERlYnVnTmFtZShwcywgbmFtZSk7CisgICAgICAgIHJldHVybiBwczsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLS8vIENvcHkgZGF0YSB0byBzbWFsbCBEM0QxMSBidWZm
ZXJzLCBzdWNoIGFzIGZvciBzbWFsbCBjb25zdGFudCBidWZmZXJzLCB3aGljaCB1c2Ugb25lIHN0
cnVjdCB0bwotLy8gcmVwcmVzZW50IGFuIGVudGlyZSBidWZmZXIuCi10ZW1wbGF0ZSA8Y2xhc3Mg
VD4KLWlubGluZSB2b2lkIFNldEJ1ZmZlckRhdGEoSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4
dCwgSUQzRDExQnVmZmVyICpjb25zdGFudEJ1ZmZlciwgY29uc3QgVCAmdmFsdWUpCit0ZW1wbGF0
ZSA8dW5zaWduZWQgaW50IE4+CitJRDNEMTFQaXhlbFNoYWRlciAqQ29tcGlsZVBTKElEM0QxMURl
dmljZSAqZGV2aWNlLCBjb25zdCBCWVRFICgmYnl0ZUNvZGUpW05dLCBjb25zdCBjaGFyICpuYW1l
KQogewotICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKLSAgICBj
b250ZXh0LT5NYXAoY29uc3RhbnRCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAw
LCAmbWFwcGVkUmVzb3VyY2UpOworICAgIHJldHVybiBDb21waWxlUFMoZGV2aWNlLCBieXRlQ29k
ZSwgTiwgbmFtZSk7Cit9CiAKLSAgICBtZW1jcHkobWFwcGVkUmVzb3VyY2UucERhdGEsICZ2YWx1
ZSwgc2l6ZW9mKFQpKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGU+CitjbGFzcyBM
YXp5UmVzb3VyY2UgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAg
ICBMYXp5UmVzb3VyY2UoKSA6IG1SZXNvdXJjZShudWxscHRyKSwgbUFzc29jaWF0ZWREZXZpY2Uo
bnVsbHB0cikge30KKyAgICB2aXJ0dWFsIH5MYXp5UmVzb3VyY2UoKSB7IHJlbGVhc2UoKTsgfQog
Ci0gICAgY29udGV4dC0+VW5tYXAoY29uc3RhbnRCdWZmZXIsIDApOworICAgIHZpcnR1YWwgUmVz
b3VyY2VUeXBlICpyZXNvbHZlKElEM0QxMURldmljZSAqZGV2aWNlKSA9IDA7CisgICAgdm9pZCBy
ZWxlYXNlKCkgeyBTYWZlUmVsZWFzZShtUmVzb3VyY2UpOyB9CisKKyAgcHJvdGVjdGVkOgorICAg
IHZvaWQgY2hlY2tBc3NvY2lhdGVkRGV2aWNlKElEM0QxMURldmljZSAqZGV2aWNlKTsKKworICAg
IFJlc291cmNlVHlwZSAqbVJlc291cmNlOworICAgIElEM0QxMURldmljZSAqbUFzc29jaWF0ZWRE
ZXZpY2U7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzb3VyY2VUeXBlPgordm9pZCBMYXp5
UmVzb3VyY2U8UmVzb3VyY2VUeXBlPjo6Y2hlY2tBc3NvY2lhdGVkRGV2aWNlKElEM0QxMURldmlj
ZSAqZGV2aWNlKQoreworICAgIEFTU0VSVChtQXNzb2NpYXRlZERldmljZSA9PSBudWxscHRyIHx8
IGRldmljZSA9PSBtQXNzb2NpYXRlZERldmljZSk7CisgICAgbUFzc29jaWF0ZWREZXZpY2UgPSBk
ZXZpY2U7CiB9CiAKLVdvcmthcm91bmRzIEdlbmVyYXRlV29ya2Fyb3VuZHMoRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEM0QxMVNoYWRlclR5cGU+
CitjbGFzcyBMYXp5U2hhZGVyIGZpbmFsIDogcHVibGljIExhenlSZXNvdXJjZTxEM0QxMVNoYWRl
clR5cGU+Cit7CisgIHB1YmxpYzoKKyAgICAvLyBBbGwgcGFyYW1ldGVycyBtdXN0IGJlIGNvbnN0
ZXhwci4gTm90IHN1cHBvcnRlZCBpbiBWUzIwMTMuCisgICAgTGF6eVNoYWRlcihjb25zdCBCWVRF
ICpieXRlQ29kZSwKKyAgICAgICAgICAgICAgIHNpemVfdCBieXRlQ29kZVNpemUsCisgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICpuYW1lKQorICAgICAgICA6IG1CeXRlQ29kZShieXRlQ29kZSks
CisgICAgICAgICAgbUJ5dGVDb2RlU2l6ZShieXRlQ29kZVNpemUpLAorICAgICAgICAgIG1OYW1l
KG5hbWUpCisgICAgeworICAgIH0KIAorICAgIEQzRDExU2hhZGVyVHlwZSAqcmVzb2x2ZShJRDNE
MTFEZXZpY2UgKmRldmljZSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBjb25zdCBCWVRF
ICptQnl0ZUNvZGU7CisgICAgc2l6ZV90IG1CeXRlQ29kZVNpemU7CisgICAgY29uc3QgY2hhciAq
bU5hbWU7Cit9OworCit0ZW1wbGF0ZSA8PgoraW5saW5lIElEM0QxMVZlcnRleFNoYWRlciAqTGF6
eVNoYWRlcjxJRDNEMTFWZXJ0ZXhTaGFkZXI+OjpyZXNvbHZlKElEM0QxMURldmljZSAqZGV2aWNl
KQoreworICAgIGNoZWNrQXNzb2NpYXRlZERldmljZShkZXZpY2UpOworICAgIGlmIChtUmVzb3Vy
Y2UgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZSA9IENvbXBpbGVWUyhkZXZp
Y2UsIG1CeXRlQ29kZSwgbUJ5dGVDb2RlU2l6ZSwgbU5hbWUpOworICAgIH0KKyAgICByZXR1cm4g
bVJlc291cmNlOwogfQogCit0ZW1wbGF0ZSA8PgoraW5saW5lIElEM0QxMUdlb21ldHJ5U2hhZGVy
ICpMYXp5U2hhZGVyPElEM0QxMUdlb21ldHJ5U2hhZGVyPjo6cmVzb2x2ZShJRDNEMTFEZXZpY2Ug
KmRldmljZSkKK3sKKyAgICBjaGVja0Fzc29jaWF0ZWREZXZpY2UoZGV2aWNlKTsKKyAgICBpZiAo
bVJlc291cmNlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBtUmVzb3VyY2UgPSBDb21waWxl
R1MoZGV2aWNlLCBtQnl0ZUNvZGUsIG1CeXRlQ29kZVNpemUsIG1OYW1lKTsKKyAgICB9CisgICAg
cmV0dXJuIG1SZXNvdXJjZTsKIH0KIAordGVtcGxhdGUgPD4KK2lubGluZSBJRDNEMTFQaXhlbFNo
YWRlciAqTGF6eVNoYWRlcjxJRDNEMTFQaXhlbFNoYWRlcj46OnJlc29sdmUoSUQzRDExRGV2aWNl
ICpkZXZpY2UpCit7CisgICAgY2hlY2tBc3NvY2lhdGVkRGV2aWNlKGRldmljZSk7CisgICAgaWYg
KG1SZXNvdXJjZSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgbVJlc291cmNlID0gQ29tcGls
ZVBTKGRldmljZSwgbUJ5dGVDb2RlLCBtQnl0ZUNvZGVTaXplLCBtTmFtZSk7CisgICAgfQorICAg
IHJldHVybiBtUmVzb3VyY2U7Cit9CisKK2NsYXNzIExhenlJbnB1dExheW91dCBmaW5hbCA6IHB1
YmxpYyBMYXp5UmVzb3VyY2U8SUQzRDExSW5wdXRMYXlvdXQ+Cit7CisgIHB1YmxpYzoKKyAgICBM
YXp5SW5wdXRMYXlvdXQoY29uc3QgRDNEMTFfSU5QVVRfRUxFTUVOVF9ERVNDICppbnB1dERlc2Ms
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlc2NMZW4sCisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEJZVEUgKmJ5dGVDb2RlLAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Ynl0ZUNvZGVMZW4sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlYnVnTmFtZSk7
CisKKyAgICBJRDNEMTFJbnB1dExheW91dCAqcmVzb2x2ZShJRDNEMTFEZXZpY2UgKmRldmljZSkg
b3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBzdGQ6OnZlY3RvcjxEM0QxMV9JTlBVVF9FTEVN
RU5UX0RFU0M+IG1JbnB1dERlc2M7CisgICAgc2l6ZV90IG1CeXRlQ29kZUxlbjsKKyAgICBjb25z
dCBCWVRFICptQnl0ZUNvZGU7CisgICAgY29uc3QgY2hhciAqbURlYnVnTmFtZTsKK307CisKK2Ns
YXNzIExhenlCbGVuZFN0YXRlIGZpbmFsIDogcHVibGljIExhenlSZXNvdXJjZTxJRDNEMTFCbGVu
ZFN0YXRlPgoreworICBwdWJsaWM6CisgICAgTGF6eUJsZW5kU3RhdGUoY29uc3QgRDNEMTFfQkxF
TkRfREVTQyAmZGVzYywgY29uc3QgY2hhciAqZGVidWdOYW1lKTsKKworICAgIElEM0QxMUJsZW5k
U3RhdGUgKnJlc29sdmUoSUQzRDExRGV2aWNlICpkZXZpY2UpIG92ZXJyaWRlOworCisgIHByaXZh
dGU6CisgICAgRDNEMTFfQkxFTkRfREVTQyBtRGVzYzsKKyAgICBjb25zdCBjaGFyICptRGVidWdO
YW1lOworfTsKKworLy8gQ29weSBkYXRhIHRvIHNtYWxsIEQzRDExIGJ1ZmZlcnMsIHN1Y2ggYXMg
Zm9yIHNtYWxsIGNvbnN0YW50IGJ1ZmZlcnMsIHdoaWNoIHVzZSBvbmUgc3RydWN0IHRvCisvLyBy
ZXByZXNlbnQgYW4gZW50aXJlIGJ1ZmZlci4KK3RlbXBsYXRlIDxjbGFzcyBUPgordm9pZCBTZXRC
dWZmZXJEYXRhKElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQsIElEM0QxMUJ1ZmZlciAqY29u
c3RhbnRCdWZmZXIsIGNvbnN0IFQgJnZhbHVlKQoreworICAgIEQzRDExX01BUFBFRF9TVUJSRVNP
VVJDRSBtYXBwZWRSZXNvdXJjZSA9IHt9OworICAgIEhSRVNVTFQgcmVzdWx0ID0gY29udGV4dC0+
TWFwKGNvbnN0YW50QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBl
ZFJlc291cmNlKTsKKyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGlmIChTVUND
RUVERUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIG1lbWNweShtYXBwZWRSZXNvdXJjZS5wRGF0
YSwgJnZhbHVlLCBzaXplb2YoVCkpOworICAgICAgICBjb250ZXh0LT5Vbm1hcChjb25zdGFudEJ1
ZmZlciwgMCk7CisgICAgfQorfQorCitXb3JrYXJvdW5kc0QzRCBHZW5lcmF0ZVdvcmthcm91bmRz
KEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCk7CisKK2VudW0gUmVzZXJ2ZWRDb25zdGFu
dEJ1ZmZlclNsb3QKK3sKKyAgICBSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJfU0xPVF9ERUZBVUxU
X1VOSUZPUk1fQkxPQ0sgPSAwLAorICAgIFJFU0VSVkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0RS
SVZFUiAgICAgICAgICAgICAgICA9IDEsCisKKyAgICBSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJf
U0xPVF9DT1VOVCA9IDIKK307CisKK3ZvaWQgSW5pdENvbnN0YW50QnVmZmVyRGVzYyhEM0QxMV9C
VUZGRVJfREVTQyAqY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbiwgc2l6ZV90IGJ5dGVXaWR0aCk7
Cit9ICAvLyBuYW1lc3BhY2UgZDNkMTEKKworLy8gQSBoZWxwZXIgY2xhc3Mgd2hpY2ggd3JhcHMg
YSAyRCBvciAzRCB0ZXh0dXJlLgorY2xhc3MgVGV4dHVyZUhlbHBlcjExIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBUZXh0dXJlSGVscGVyMTEoKTsKKyAgICBUZXh0dXJl
SGVscGVyMTEoVGV4dHVyZUhlbHBlcjExICYmdG9Db3B5KTsKKyAgICB+VGV4dHVyZUhlbHBlcjEx
KCk7CisgICAgVGV4dHVyZUhlbHBlcjExICZvcGVyYXRvcj0oVGV4dHVyZUhlbHBlcjExICYmdGV4
dHVyZSk7CisKKyAgICBzdGF0aWMgVGV4dHVyZUhlbHBlcjExIE1ha2VBbmRSZWZlcmVuY2UoSUQz
RDExUmVzb3VyY2UgKmdlbmVyaWNSZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKKyAgICBz
dGF0aWMgVGV4dHVyZUhlbHBlcjExIE1ha2VBbmRQb3NzZXNzMkQoSUQzRDExVGV4dHVyZTJEICp0
ZXhUb093biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNk
MTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KTsKKyAgICBzdGF0aWMgVGV4dHVyZUhlbHBlcjEx
IE1ha2VBbmRQb3NzZXNzM0QoSUQzRDExVGV4dHVyZTNEICp0ZXhUb093biwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xl
Rm9ybWF0KTsKKworICAgIEdMZW51bSBnZXRUZXh0dXJlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1U
ZXh0dXJlVHlwZTsgfQorICAgIGdsOjpFeHRlbnRzIGdldEV4dGVudHMoKSBjb25zdCB7IHJldHVy
biBtRXh0ZW50czsgfQorICAgIERYR0lfRk9STUFUIGdldEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IG1Gb3JtYXQ7IH0KKyAgICBkM2QxMTo6QU5HTEVGb3JtYXQgZ2V0QU5HTEVGb3JtYXQoKSBjb25z
dCB7IHJldHVybiBtQU5HTEVGb3JtYXQ7IH0KKyAgICBpbnQgZ2V0U2FtcGxlQ291bnQoKSBjb25z
dCB7IHJldHVybiBtU2FtcGxlQ291bnQ7IH0KKyAgICBJRDNEMTFUZXh0dXJlMkQgKmdldFRleHR1
cmUyRCgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlMkQ7IH0KKyAgICBJRDNEMTFUZXh0dXJlM0Qg
KmdldFRleHR1cmUzRCgpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlM0Q7IH0KKyAgICBJRDNEMTFS
ZXNvdXJjZSAqZ2V0UmVzb3VyY2UoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIHZvaWQgcmVz
ZXQoKTsKKyAgICB2b2lkIGluaXREZXNjKCk7CisKKyAgICBHTGVudW0gbVRleHR1cmVUeXBlOwor
ICAgIGdsOjpFeHRlbnRzIG1FeHRlbnRzOworICAgIERYR0lfRk9STUFUIG1Gb3JtYXQ7CisgICAg
ZDNkMTE6OkFOR0xFRm9ybWF0IG1BTkdMRUZvcm1hdDsKKyAgICBpbnQgbVNhbXBsZUNvdW50Owor
ICAgIElEM0QxMVRleHR1cmUyRCAqbVRleHR1cmUyRDsKKyAgICBJRDNEMTFUZXh0dXJlM0QgKm1U
ZXh0dXJlM0Q7Cit9OworCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+IENyZWF0
ZVN0YWdpbmdUZXh0dXJlKEdMZW51bSB0ZXh0dXJlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZHhnaUZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZDNkMTE6OkFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSUQzRDExRGV2aWNlICpkZXZpY2UpOworCitib29sIFVzZVByZXNlbnRQYXRoRmFzdChjb25z
dCBSZW5kZXJlcjExICpyZW5kZXJlciwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAq
Y29sb3JidWZmZXIpOworCit1c2luZyBOb3RpZmljYXRpb25DYWxsYmFjayA9IHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPjsKKworY2xhc3MgTm90aWZpY2F0aW9uU2V0IGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBOb3RpZmljYXRpb25TZXQoKTsKKyAgICB+Tm90aWZp
Y2F0aW9uU2V0KCk7CisKKyAgICB2b2lkIGFkZChjb25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAq
Y2FsbGJhY2spOworICAgIHZvaWQgcmVtb3ZlKGNvbnN0IE5vdGlmaWNhdGlvbkNhbGxiYWNrICpj
YWxsYmFjayk7CisgICAgdm9pZCBzaWduYWwoKSBjb25zdDsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgcHJpdmF0ZToKKyAgICBzdGQ6OnNldDxjb25zdCBOb3RpZmljYXRpb25DYWxsYmFjayAqPiBt
Q2FsbGJhY2tzOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKICNlbmRpZiAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfRDNEMTFfUkVOREVSRVIxMV9VVElMU19IXwpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX2dzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBp
bGVkL2J1ZmZlcnRvdGV4dHVyZTExX2dzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9j
b21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2NSAr
MSwxNjUgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25h
dHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIg
U3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUG9zaXRpb24gICAg
ICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4eXp3Ci0vLyBU
RVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHggICAgICAgICAgIDEgICAgIE5PTkUgICAgdWlu
dCAgIHggICAKLS8vIExBWUVSICAgICAgICAgICAgICAgICAgICAwICAgIHkgICAgICAgICAgMSAg
ICAgTk9ORSAgICB1aW50ICAgIHkgIAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8K
LS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAg
Rm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9Qb3NpdGlvbiAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgIHh5encKLS8vIFRFWENPT1JEICAg
ICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgeCAgIAot
Ly8gU1ZfUmVuZGVyVGFyZ2V0QXJyYXlJbmRleCAgICAgMCAgICB5ICAgICAgICAgIDEgIFJUSU5E
RVggICAgdWludCAgICB5ICAKLS8vCi1nc180XzAKLWRjbF9pbnB1dF9zaXYgdlsxXVswXS54eXp3
LCBwb3NpdGlvbgotZGNsX2lucHV0IHZbMV1bMV0ueAotZGNsX2lucHV0IHZbMV1bMV0ueQotZGNs
X2lucHV0cHJpbWl0aXZlIHBvaW50IAotZGNsX291dHB1dHRvcG9sb2d5IHBvaW50bGlzdCAKLWRj
bF9vdXRwdXRfc2l2IG8wLnh5encsIHBvc2l0aW9uCi1kY2xfb3V0cHV0IG8xLngKLWRjbF9vdXRw
dXRfc2l2IG8xLnksIHJlbmRlcnRhcmdldF9hcnJheV9pbmRleAotZGNsX21heG91dCAxCi1tb3Yg
bzAueHl6dywgdlswXVswXS54eXp3Ci1tb3YgbzEueCwgdlswXVsxXS54Ci1tb3YgbzEueSwgdlsw
XVsxXS55Ci1lbWl0IAotcmV0IAotLy8gQXBwcm94aW1hdGVseSA1IGluc3RydWN0aW9uIHNsb3Rz
IHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfR1NfQnVmZmVyVG9UZXh0dXJlW10gPQotewot
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDc5LCAxNjYsIAotICAgIDE5MSwgIDk3LCAgMTYsICA2
MywgMTQyLCAxNjcsIAotICAgIDIzMSwgIDkyLCAxMTksICA3NCwgIDg2LCAgIDcsIAotICAgICA1
OCwgMTY1LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDIxMiwgICAyLCAgIDAsICAgMCwgICA1
LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAotICAgIDE0MCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsIAotICAgICAgMCwgICAwLCAxMzYsICAgMSwgICAwLCAgIDAs
IAotICAgICA4OCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAgODAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDQsIAotICAgICA4MywgIDcxLCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICAyOCwg
ICAwLCAgIDAsICAgMCwgIDc3LCAxMDUsIAotICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAx
MDIsIAotICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIAotICAgICA3MiwgIDc2LCAg
ODMsICA3NiwgIDMyLCAgODMsIAotICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIAot
ICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIAotICAgIDEwMSwgMTE0LCAgMzIsICA1
NCwgIDQ2LCAgNTEsIAotICAgICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsIAotICAgICA0
OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIAotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcx
LCAgNzgsIAotICAgIDEwOCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIAotICAg
ICA5MiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICAgMSwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMiwgICAwLCAgIDAsIAot
ICAgICA4MywgIDg2LCAgOTUsICA4MCwgMTExLCAxMTUsIAotICAgIDEwNSwgMTE2LCAxMDUsIDEx
MSwgMTEwLCAgIDAsIAotICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIAotICAgICA4
MiwgIDY4LCAgIDAsICA3NiwgIDY1LCAgODksIAotICAgICA2OSwgIDgyLCAgIDAsIDE3MSwgIDc5
LCAgODMsIAotICAgICA3MSwgIDc4LCAxMjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAw
LCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgOTIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgICAxLCAgMTQsIAotICAgICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAyLCAgMTMsIAot
ICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAsIAotICAgIDExMSwgMTE1LCAxMDUsIDEx
NiwgMTA1LCAxMTEsIAotICAgIDExMCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIAotICAgICA3
OSwgIDc5LCAgODIsICA2OCwgICAwLCAgODMsIAotICAgICA4NiwgIDk1LCAgODIsIDEwMSwgMTEw
LCAxMDAsIAotICAgIDEwMSwgMTE0LCAgODQsICA5NywgMTE0LCAxMDMsIAotICAgIDEwMSwgMTE2
LCAgNjUsIDExNCwgMTE0LCAgOTcsIAotICAgIDEyMSwgIDczLCAxMTAsIDEwMCwgMTAxLCAxMjAs
IAotICAgICAgMCwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIAotICAgIDIwMCwgICAwLCAgIDAs
ICAgMCwgIDY0LCAgIDAsIAotICAgICAgMiwgICAwLCAgNTAsICAgMCwgICAwLCAgIDAsIAotICAg
ICA5NywgICAwLCAgIDAsICAgNSwgMjQyLCAgMTYsIAotICAgICAzMiwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgOTUsICAgMCwgICAwLCAgIDQsIAotICAgICAxOCwgIDE2LCAgMzIsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA5NSwgICAwLCAg
IDAsICAgNCwgIDM0LCAgMTYsIAotICAgICAzMiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDkzLCAgIDgsIAotICAgICAgMCwgICAxLCAgOTIsICAg
OCwgICAwLCAgIDEsIAotICAgIDEwMywgICAwLCAgIDAsICAgNCwgMjQyLCAgMzIsIAotICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAx
LCAgIDAsIAotICAgICAgMCwgICAzLCAgMTgsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMSwgICAw
LCAgIDAsICAgMCwgMTAzLCAgIDAsIAotICAgICAgMCwgICA0LCAgMzQsICAzMiwgIDE2LCAgIDAs
IAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAgOTQs
ICAgMCwgICAwLCAgIDIsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAg
ICAgMCwgICA2LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDcwLCAgMzAsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICAzMiwgIDE2LCAg
IDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDEwLCAgMTYsIAotICAgICAzMiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAot
ICAgICAgMCwgICA2LCAgMzQsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAg
MCwgIDI2LCAgMTYsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDE5LCAgIDAsIAotICAgICAgMCwgICAxLCAgNjIsICAgMCwgICAw
LCAgIDEsIAotICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDUsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLw0KKy8v
IElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8v
IFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZs
b2F0ICAgeHl6dw0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAg
MSAgICAgTk9ORSAgICB1aW50ICAgeCAgIA0KKy8vIExBWUVSICAgICAgICAgICAgICAgICAgICAw
ICAgIHkgICAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgIHkgIA0KKy8vDQorLy8NCisvLyBP
dXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8g
U1ZfUG9zaXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxv
YXQgICB4eXp3DQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAgICAx
ICAgICBOT05FICAgIHVpbnQgICB4ICAgDQorLy8gU1ZfUmVuZGVyVGFyZ2V0QXJyYXlJbmRleCAg
ICAgMCAgICB5ICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICB5ICANCisvLw0KK2dzXzRf
MA0KK2RjbF9pbnB1dF9zaXYgdlsxXVswXS54eXp3LCBwb3NpdGlvbg0KK2RjbF9pbnB1dCB2WzFd
WzFdLngNCitkY2xfaW5wdXQgdlsxXVsxXS55DQorZGNsX2lucHV0cHJpbWl0aXZlIHBvaW50IA0K
K2RjbF9vdXRwdXR0b3BvbG9neSBwb2ludGxpc3QgDQorZGNsX291dHB1dF9zaXYgbzAueHl6dywg
cG9zaXRpb24NCitkY2xfb3V0cHV0IG8xLngNCitkY2xfb3V0cHV0X3NpdiBvMS55LCByZW5kZXJ0
YXJnZXRfYXJyYXlfaW5kZXgNCitkY2xfbWF4b3V0IDENCittb3YgbzAueHl6dywgdlswXVswXS54
eXp3DQorbW92IG8xLngsIHZbMF1bMV0ueA0KK21vdiBvMS55LCB2WzBdWzFdLnkNCitlbWl0IA0K
K3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDUgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRp
Zg0KKw0KK2NvbnN0IEJZVEUgZ19HU19CdWZmZXJUb1RleHR1cmVbXSA9DQorew0KKyAgICAgNjgs
ICA4OCwgIDY2LCAgNjcsICA3OSwgMTY2LCANCisgICAgMTkxLCAgOTcsICAxNiwgIDYzLCAxNDIs
IDE2NywgDQorICAgIDIzMSwgIDkyLCAxMTksICA3NCwgIDg2LCAgIDcsIA0KKyAgICAgNTgsIDE2
NSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMjEyLCAgIDIsICAgMCwgICAwLCAgIDUsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCANCisgICAgICAwLCAgIDAsIDEzNiwgICAxLCAgIDAsICAgMCwg
DQorICAgICA4OCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAg
IDAsICAgMCwgICA0LCANCisgICAgIDgzLCAgNzEsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAg
ICAyOCwgICAwLCAgIDAsICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUs
IDExMSwgMTAyLCANCisgICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3
MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDEx
NCwgIDMyLCANCisgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwg
MTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsIA0KKyAgICAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwg
IDQ2LCANCisgICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgDQorICAgIDE3MSwgMTcx
LCAgNzMsICA4MywgIDcxLCAgNzgsIA0KKyAgICAxMDgsICAgMCwgICAwLCAgIDAsICAgMywgICAw
LCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUs
ICAxNSwgICAwLCAgIDAsIA0KKyAgICAgOTIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDEsICAgMCwgICAwLCANCisgICAg
MTAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMiwgICAyLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4MCwgMTEx
LCAxMTUsIA0KKyAgICAxMDUsIDExNiwgMTA1LCAxMTEsIDExMCwgICAwLCANCisgICAgIDg0LCAg
NjksICA4OCwgIDY3LCAgNzksICA3OSwgDQorICAgICA4MiwgIDY4LCAgIDAsICA3NiwgIDY1LCAg
ODksIA0KKyAgICAgNjksICA4MiwgICAwLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgs
IDEyOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA5Miwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDEsICAxNCwgDQorICAgICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAyLCAgMTMsIA0KKyAgICAgIDAs
ICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCANCisgICAgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUs
IDExMSwgDQorICAgIDExMCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIA0KKyAgICAgNzksICA3
OSwgIDgyLCAgNjgsICAgMCwgIDgzLCANCisgICAgIDg2LCAgOTUsICA4MiwgMTAxLCAxMTAsIDEw
MCwgDQorICAgIDEwMSwgMTE0LCAgODQsICA5NywgMTE0LCAxMDMsIA0KKyAgICAxMDEsIDExNiwg
IDY1LCAxMTQsIDExNCwgIDk3LCANCisgICAgMTIxLCAgNzMsIDExMCwgMTAwLCAxMDEsIDEyMCwg
DQorICAgICAgMCwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAgICAyMDAsICAgMCwgICAw
LCAgIDAsICA2NCwgICAwLCANCisgICAgICAyLCAgIDAsICA1MCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA5NywgICAwLCAgIDAsICAgNSwgMjQyLCAgMTYsIA0KKyAgICAgMzIsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgOTUsICAgMCwgICAwLCAgIDQsIA0KKyAgICAgMTgsICAxNiwgIDMyLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA5
NSwgICAwLCAgIDAsICAgNCwgIDM0LCAgMTYsIA0KKyAgICAgMzIsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgOTMsICAgOCwgDQorICAgICAgMCwg
ICAxLCAgOTIsICAgOCwgICAwLCAgIDEsIA0KKyAgICAxMDMsICAgMCwgICAwLCAgIDQsIDI0Miwg
IDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAw
LCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgIDE4LCAgMzIsICAxNiwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDMsICAgMCwgDQorICAgICAgMCwgICA0LCAg
MzQsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAN
CisgICAgICAwLCAgIDAsICA5NCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgMjQyLCAgMzIsICAxNiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAg
ICAwLCAgIDYsICAxOCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
IDEwLCAgMTYsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAx
LCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMzQsICAzMiwgIDE2
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyNiwgIDE2LCANCisgICAgIDMyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDE5LCAg
IDAsIA0KKyAgICAgIDAsICAgMSwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQs
ICA2NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9w
c180Zi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9w
c180Zi5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0
dXJlMTFfcHNfNGYuaAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjkgKzEsMjI5IEBACi0jaWYgMAot
Ly8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYu
My45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIEJ1ZmZlciBEZWZpbml0aW9uczogCi0vLwotLy8gY2J1
ZmZlciBCdWZmZXJDb3B5UGFyYW1zCi0vLyB7Ci0vLwotLy8gICB1aW50IEZpcnN0UGl4ZWxPZmZz
ZXQ7ICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAgNCBbdW51c2VkXQotLy8g
ICB1aW50IFBpeGVsc1BlclJvdzsgICAgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgNCBTaXpl
OiAgICAgNCBbdW51c2VkXQotLy8gICB1aW50IFJvd1N0cmlkZTsgICAgICAgICAgICAgICAgICAg
IC8vIE9mZnNldDogICAgOCBTaXplOiAgICAgNCBbdW51c2VkXQotLy8gICB1aW50IFJvd3NQZXJT
bGljZTsgICAgICAgICAgICAgICAgIC8vIE9mZnNldDogICAxMiBTaXplOiAgICAgNCBbdW51c2Vk
XQotLy8gICBmbG9hdDIgUG9zaXRpb25PZmZzZXQ7ICAgICAgICAgICAgIC8vIE9mZnNldDogICAx
NiBTaXplOiAgICAgOCBbdW51c2VkXQotLy8gICBmbG9hdDIgUG9zaXRpb25TY2FsZTsgICAgICAg
ICAgICAgIC8vIE9mZnNldDogICAyNCBTaXplOiAgICAgOCBbdW51c2VkXQotLy8gICBpbnQyIFRl
eExvY2F0aW9uT2Zmc2V0OyAgICAgICAgICAgIC8vIE9mZnNldDogICAzMiBTaXplOiAgICAgOCBb
dW51c2VkXQotLy8gICBpbnQyIFRleExvY2F0aW9uU2NhbGU7ICAgICAgICAgICAgIC8vIE9mZnNl
dDogICA0MCBTaXplOiAgICAgOCBbdW51c2VkXQotLy8gICB1aW50IEZpcnN0U2xpY2U7ICAgICAg
ICAgICAgICAgICAgIC8vIE9mZnNldDogICA0OCBTaXplOiAgICAgNCBbdW51c2VkXQotLy8KLS8v
IH0KLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1l
bnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIEJ1ZmZlcjRGICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICBidWYgICAgMCAgICAgICAgMQotLy8gQnVm
ZmVyQ29weVBhcmFtcyAgICAgICAgICAgICAgICAgIGNidWZmZXIgICAgICBOQSAgICAgICAgICBO
QSAgICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAg
ICAgICAgICAgIDAgICB4ICAgICAgICAgICAxICAgICBOT05FICAgIHVpbnQgICB4ICAgCi0vLwot
Ly8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0K
LS8vIFNWX1RhcmdldCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAg
IGZsb2F0ICAgeHl6dwotLy8KLXBzXzRfMAotZGNsX2NvbnN0YW50YnVmZmVyIGNiMFsxXSwgaW1t
ZWRpYXRlSW5kZXhlZAotZGNsX3Jlc291cmNlX2J1ZmZlciAoZmxvYXQsZmxvYXQsZmxvYXQsZmxv
YXQpIHQwCi1kY2xfaW5wdXRfcHMgY29uc3RhbnQgdjEueAotZGNsX291dHB1dCBvMC54eXp3Ci1s
ZCBvMC54eXp3LCB2MS54eHh4LCB0MC54eXp3Ci1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDIgaW5z
dHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19CdWZmZXJUb1Rl
eHR1cmVfNEZbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxNzYsICAxNSwgCi0gICAg
IDc2LCAxMjMsIDEwMCwgIDM4LCAxNTIsICAyMywgCi0gICAgMTUwLCAgOTksIDE2NSwgMTg0LCAy
MjIsIDE1NywgCi0gICAgMjM1LCAgODAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMjUyLCAg
IDMsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAg
MCwgCi0gICAgMTQwLCAgIDIsICAgMCwgICAwLCAyMjgsICAgMiwgCi0gICAgICAwLCAgIDAsICAy
NCwgICAzLCAgIDAsICAgMCwgCi0gICAgMTI4LCAgIDMsICAgMCwgICAwLCAgODIsICA2OCwgCi0g
ICAgIDY5LCAgNzAsICA4MCwgICAyLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAw
LCAxMjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAs
ICAgMCwgCi0gICAgIDI4LCAgIDIsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA1LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAg
MTAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgCi0gICAgICAwLCAgIDAsICA2NiwgMTE3LCAxMDIsIDEwMiwgCi0gICAgMTAxLCAxMTQsICA1
MiwgIDcwLCAgIDAsICA2NiwgCi0gICAgMTE3LCAxMDIsIDEwMiwgMTAxLCAxMTQsICA2NywgCi0g
ICAgMTExLCAxMTIsIDEyMSwgIDgwLCAgOTcsIDExNCwgCi0gICAgIDk3LCAxMDksIDExNSwgICAw
LCAxNzEsIDE3MSwgCi0gICAgMTAxLCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgCi0gICAgICAw
LCAgIDAsIDE0NCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTA0LCAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMjQsICAgMSwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgMTQwLCAgIDEsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAx
MjQsICAgMSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTUzLCAg
IDEsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMjQsICAgMSwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTYzLCAgIDEsICAgMCwgICAwLCAgMTIsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAxMjQsICAgMSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTc2
LCAgIDEsICAgMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxOTIsICAgMSwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMjA4LCAgIDEsICAgMCwgICAwLCAgMjQsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAxOTIsICAgMSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
MjIyLCAgIDEsICAgMCwgICAwLCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAyNDAsICAgMSwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgNDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAyNDAsICAgMSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDE3LCAgIDIsICAgMCwgICAwLCAgNDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMjQsICAgMSwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAxMDUsIDExNCwgMTE1LCAxMTYs
ICA4MCwgCi0gICAgMTA1LCAxMjAsIDEwMSwgMTA4LCAgNzksIDEwMiwgCi0gICAgMTAyLCAxMTUs
IDEwMSwgMTE2LCAgIDAsIDE3MSwgCi0gICAgMTcxLCAxNzEsICAgMCwgICAwLCAgMTksICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDgwLCAxMDUsIDEyMCwgMTAxLCAxMDgsIDExNSwgCi0gICAg
IDgwLCAxMDEsIDExNCwgIDgyLCAxMTEsIDExOSwgCi0gICAgICAwLCAgODIsIDExMSwgMTE5LCAg
ODMsIDExNiwgCi0gICAgMTE0LCAxMDUsIDEwMCwgMTAxLCAgIDAsICA4MiwgCi0gICAgMTExLCAx
MTksIDExNSwgIDgwLCAxMDEsIDExNCwgCi0gICAgIDgzLCAxMDgsIDEwNSwgIDk5LCAxMDEsICAg
MCwgCi0gICAgIDgwLCAxMTEsIDExNSwgMTA1LCAxMTYsIDEwNSwgCi0gICAgMTExLCAxMTAsICA3
OSwgMTAyLCAxMDIsIDExNSwgCi0gICAgMTAxLCAxMTYsICAgMCwgMTcxLCAgIDEsICAgMCwgCi0g
ICAgICAzLCAgIDAsICAgMSwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MCwgMTExLCAxMTUsIDEwNSwgCi0gICAgMTE2
LCAxMDUsIDExMSwgMTEwLCAgODMsICA5OSwgCi0gICAgIDk3LCAxMDgsIDEwMSwgICAwLCAgODQs
IDEwMSwgCi0gICAgMTIwLCAgNzYsIDExMSwgIDk5LCAgOTcsIDExNiwgCi0gICAgMTA1LCAxMTEs
IDExMCwgIDc5LCAxMDIsIDEwMiwgCi0gICAgMTE1LCAxMDEsIDExNiwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAyLCAgIDAsICAgMSwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA4NCwgMTAxLCAxMjAsICA3NiwgCi0gICAg
MTExLCAgOTksICA5NywgMTE2LCAxMDUsIDExMSwgCi0gICAgMTEwLCAgODMsICA5OSwgIDk3LCAx
MDgsIDEwMSwgCi0gICAgICAwLCAgNzAsIDEwNSwgMTE0LCAxMTUsIDExNiwgCi0gICAgIDgzLCAx
MDgsIDEwNSwgIDk5LCAxMDEsICAgMCwgCi0gICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDEx
NSwgCi0gICAgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgCi0gICAgIDQxLCAgMzIsICA3
MiwgIDc2LCAgODMsICA3NiwgCi0gICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgCi0g
ICAgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgCi0gICAgMTA1LCAxMDgsIDEwMSwgMTE0
LCAgMzIsICA1NCwgCi0gICAgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwgCi0gICAgIDQ4
LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgCi0gICAgIDUyLCAgIDAsIDE3MSwgMTcxLCAgNzMs
ICA4MywgCi0gICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMSwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4
MCwgCi0gICAgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIDExMSwgCi0gICAgMTEwLCAgIDAsICA4
NCwgIDY5LCAgODgsICA2NywgCi0gICAgIDc5LCAgNzksICA4MiwgIDY4LCAgIDAsIDE3MSwgCi0g
ICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgCi0gICAgIDQ0LCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDMy
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAxNSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDg0LCAgOTcsIDExNCwg
Ci0gICAgMTAzLCAxMDEsIDExNiwgICAwLCAxNzEsIDE3MSwgCi0gICAgIDgzLCAgNzIsICA2OCwg
IDgyLCAgOTYsICAgMCwgCi0gICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDI0LCAgIDAsICAgMCwgICAwLCAgODksICAgMCwgCi0gICAgICAwLCAgIDQsICA3MCwgMTQyLCAg
MzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICA4OCwgICA4LCAgIDAsICAgNCwgCi0gICAgICAwLCAxMTIsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICA4NSwgIDg1LCAgIDAsICAgMCwgCi0gICAgIDk4LCAgIDgsICAg
MCwgICAzLCAgMTgsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgMTAxLCAgIDAsICAgMCwgICAzLCAyNDIsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDQ1LCAgIDAsICAgMCwgICA3LCAyNDIsICAzMiwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA2LCAgMTYsICAxNiwgICAwLCAgIDEs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwg
Ci0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBH
ZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4x
NjM4NA0KKy8vDQorLy8NCisvLyBCdWZmZXIgRGVmaW5pdGlvbnM6IA0KKy8vDQorLy8gY2J1ZmZl
ciBCdWZmZXJDb3B5UGFyYW1zDQorLy8gew0KKy8vDQorLy8gICB1aW50IEZpcnN0UGl4ZWxPZmZz
ZXQ7ICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAgNCBbdW51c2VkXQ0KKy8v
ICAgdWludCBQaXhlbHNQZXJSb3c7ICAgICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgIDQgU2l6
ZTogICAgIDQgW3VudXNlZF0NCisvLyAgIHVpbnQgUm93U3RyaWRlOyAgICAgICAgICAgICAgICAg
ICAgLy8gT2Zmc2V0OiAgICA4IFNpemU6ICAgICA0IFt1bnVzZWRdDQorLy8gICB1aW50IFJvd3NQ
ZXJTbGljZTsgICAgICAgICAgICAgICAgIC8vIE9mZnNldDogICAxMiBTaXplOiAgICAgNCBbdW51
c2VkXQ0KKy8vICAgZmxvYXQyIFBvc2l0aW9uT2Zmc2V0OyAgICAgICAgICAgICAvLyBPZmZzZXQ6
ICAgMTYgU2l6ZTogICAgIDggW3VudXNlZF0NCisvLyAgIGZsb2F0MiBQb3NpdGlvblNjYWxlOyAg
ICAgICAgICAgICAgLy8gT2Zmc2V0OiAgIDI0IFNpemU6ICAgICA4IFt1bnVzZWRdDQorLy8gICBp
bnQyIFRleExvY2F0aW9uT2Zmc2V0OyAgICAgICAgICAgIC8vIE9mZnNldDogICAzMiBTaXplOiAg
ICAgOCBbdW51c2VkXQ0KKy8vICAgaW50MiBUZXhMb2NhdGlvblNjYWxlOyAgICAgICAgICAgICAv
LyBPZmZzZXQ6ICAgNDAgU2l6ZTogICAgIDggW3VudXNlZF0NCisvLyAgIHVpbnQgRmlyc3RTbGlj
ZTsgICAgICAgICAgICAgICAgICAgLy8gT2Zmc2V0OiAgIDQ4IFNpemU6ICAgICA0IFt1bnVzZWRd
DQorLy8NCisvLyB9DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAg
IERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gQnVmZmVyNEYg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgIGJ1ZiAgICAw
ICAgICAgICAxDQorLy8gQnVmZmVyQ29weVBhcmFtcyAgICAgICAgICAgICAgICAgIGNidWZmZXIg
ICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5w
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1Zf
UG9zaXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQg
ICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAgICAxICAg
ICBOT05FICAgIHVpbnQgICB4ICAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQor
Ly8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFs
dWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UYXJnZXQgICAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCisvLw0KK3Bz
XzRfMA0KK2RjbF9jb25zdGFudGJ1ZmZlciBjYjBbMV0sIGltbWVkaWF0ZUluZGV4ZWQNCitkY2xf
cmVzb3VyY2VfYnVmZmVyIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRf
cHMgY29uc3RhbnQgdjEueA0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2xkIG8wLnh5encsIHYxLnh4
eHgsIHQwLnh5encNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3Rz
IHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfQnVmZmVyVG9UZXh0dXJlXzRGW10g
PQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxNzYsICAxNSwgDQorICAgICA3NiwgMTIz
LCAxMDAsICAzOCwgMTUyLCAgMjMsIA0KKyAgICAxNTAsICA5OSwgMTY1LCAxODQsIDIyMiwgMTU3
LCANCisgICAgMjM1LCAgODAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDI1MiwgICAzLCAg
IDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAN
CisgICAgMTQwLCAgIDIsICAgMCwgICAwLCAyMjgsICAgMiwgDQorICAgICAgMCwgICAwLCAgMjQs
ICAgMywgICAwLCAgIDAsIA0KKyAgICAxMjgsICAgMywgICAwLCAgIDAsICA4MiwgIDY4LCANCisg
ICAgIDY5LCAgNzAsICA4MCwgICAyLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgMTIwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwg
ICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMiwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAxMDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjYsIDExNywgMTAyLCAxMDIsIA0K
KyAgICAxMDEsIDExNCwgIDUyLCAgNzAsICAgMCwgIDY2LCANCisgICAgMTE3LCAxMDIsIDEwMiwg
MTAxLCAxMTQsICA2NywgDQorICAgIDExMSwgMTEyLCAxMjEsICA4MCwgIDk3LCAxMTQsIA0KKyAg
ICAgOTcsIDEwOSwgMTE1LCAgIDAsIDE3MSwgMTcxLCANCisgICAgMTAxLCAgIDAsICAgMCwgICAw
LCAgIDksICAgMCwgDQorICAgICAgMCwgICAwLCAxNDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
NjQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgIDEwNCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMjQs
ICAgMSwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAg
MSwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI0LCAgIDEsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTUzLCAgIDEsICAgMCwgICAwLCAgIDgsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsIDEyNCwgICAxLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDE2MywgICAxLCAgIDAsICAgMCwgIDEyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMjQsICAgMSwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNzYsICAgMSwgICAwLCAgIDAs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgMTkyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgMjA4LCAgIDEsICAgMCwgICAwLCAgMjQsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDE5Miwg
ICAxLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDIyMiwgICAx
LCAgIDAsICAgMCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAyNDAsICAgMSwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICA0MCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgMjQwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDE3LCAgIDIsICAgMCwgICAwLCAgNDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEyNCwgICAxLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgMTA1LCAxMTQsIDExNSwg
MTE2LCAgODAsIA0KKyAgICAxMDUsIDEyMCwgMTAxLCAxMDgsICA3OSwgMTAyLCANCisgICAgMTAy
LCAxMTUsIDEwMSwgMTE2LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgIDAsICAgMCwgIDE5
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MCwgMTA1LCAxMjAsIDEwMSwgMTA4LCAx
MTUsIA0KKyAgICAgODAsIDEwMSwgMTE0LCAgODIsIDExMSwgMTE5LCANCisgICAgICAwLCAgODIs
IDExMSwgMTE5LCAgODMsIDExNiwgDQorICAgIDExNCwgMTA1LCAxMDAsIDEwMSwgICAwLCAgODIs
IA0KKyAgICAxMTEsIDExOSwgMTE1LCAgODAsIDEwMSwgMTE0LCANCisgICAgIDgzLCAxMDgsIDEw
NSwgIDk5LCAxMDEsICAgMCwgDQorICAgICA4MCwgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIA0K
KyAgICAxMTEsIDExMCwgIDc5LCAxMDIsIDEwMiwgMTE1LCANCisgICAgMTAxLCAxMTYsICAgMCwg
MTcxLCAgIDEsICAgMCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICAyLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA4MCwgMTEx
LCAxMTUsIDEwNSwgDQorICAgIDExNiwgMTA1LCAxMTEsIDExMCwgIDgzLCAgOTksIA0KKyAgICAg
OTcsIDEwOCwgMTAxLCAgIDAsICA4NCwgMTAxLCANCisgICAgMTIwLCAgNzYsIDExMSwgIDk5LCAg
OTcsIDExNiwgDQorICAgIDEwNSwgMTExLCAxMTAsICA3OSwgMTAyLCAxMDIsIA0KKyAgICAxMTUs
IDEwMSwgMTE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAyLCAgIDAsICAgMSwgICAwLCAgIDIs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDg0LCAxMDEsIDEyMCwgIDc2LCANCisgICAgMTExLCAgOTksICA5NywgMTE2LCAxMDUsIDEx
MSwgDQorICAgIDExMCwgIDgzLCAgOTksICA5NywgMTA4LCAxMDEsIA0KKyAgICAgIDAsICA3MCwg
MTA1LCAxMTQsIDExNSwgMTE2LCANCisgICAgIDgzLCAxMDgsIDEwNSwgIDk5LCAxMDEsICAgMCwg
DQorICAgICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIA0KKyAgICAxMTEsIDEwMiwgMTE2
LCAgMzIsICA0MCwgIDgyLCANCisgICAgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgDQor
ICAgICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KKyAgICAxMTQsICAzMiwgIDY3LCAx
MTEsIDEwOSwgMTEyLCANCisgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NCwgDQorICAg
ICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgsIA0KKyAgICAgNDgsICA0NiwgIDQ5LCAgNTQs
ICA1MSwgIDU2LCANCisgICAgIDUyLCAgIDAsIDE3MSwgMTcxLCAgNzMsICA4MywgDQorICAgICA3
MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAg
OCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCAN
CisgICAgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUsIDExMSwgDQorICAgIDExMCwgICAwLCAgODQs
ICA2OSwgIDg4LCAgNjcsIA0KKyAgICAgNzksICA3OSwgIDgyLCAgNjgsICAgMCwgMTcxLCANCisg
ICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAg
IDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDk3
LCAxMTQsIA0KKyAgICAxMDMsIDEwMSwgMTE2LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAg
NzIsICA2OCwgIDgyLCAgOTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgMjQsICAgMCwgICAwLCAgIDAsICA4OSwgICAwLCANCisgICAgICAwLCAgIDQs
ICA3MCwgMTQyLCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDg4LCAgIDgsICAgMCwgICA0LCANCisgICAgICAwLCAxMTIsICAx
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgODUsICA4NSwgICAwLCAgIDAsIA0K
KyAgICAgOTgsICAgOCwgICAwLCAgIDMsICAxOCwgIDE2LCANCisgICAgIDE2LCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAgMzIsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDQ1LCAgIDAsICAgMCwgICA3
LCAyNDIsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDYsICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgMTI2LCAg
MTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMSwgIDgzLCAgODQsICA2NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDIs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZm
ZXJ0b3RleHR1cmUxMV9wc180aS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZm
ZXJ0b3RleHR1cmUxMV9wc180aS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNGkuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMjggKzEs
MTI4IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hh
ZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdz
OgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3Jt
YXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBC
dWZmZXI0SSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAgICAg
YnVmICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0v
LyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZv
cm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUG9zaXRpb24gICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAgICAg
ICAgICAgICAgICAgMCAgIHggICAgICAgICAgIDEgICAgIE5PTkUgICAgdWludCAgIHggICAKLS8v
Ci0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LQotLy8gU1ZfVGFyZ2V0ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VU
ICAgICBpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfYnVmZmVyIChzaW50LHNp
bnQsc2ludCxzaW50KSB0MAotZGNsX2lucHV0X3BzIGNvbnN0YW50IHYxLngKLWRjbF9vdXRwdXQg
bzAueHl6dwotbGQgbzAueHl6dywgdjEueHh4eCwgdDAueHl6dwotcmV0IAotLy8gQXBwcm94aW1h
dGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNf
QnVmZmVyVG9UZXh0dXJlXzRJW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTU0LCAx
MzksIAotICAgICA5NSwgMjEwLCAgNzYsICA1MiwgMjI4LCAgNTUsIAotICAgICAgMSwgMTc1LCAg
NjAsICA5MCwgIDEzLCAyMzQsIAotICAgIDEzOCwgICAzLCAgIDEsICAgMCwgICAwLCAgIDAsIAot
ICAgICAyMCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIsICAg
MCwgICAwLCAgIDAsIAotICAgIDE4MCwgICAwLCAgIDAsICAgMCwgIDEyLCAgIDEsIAotICAgICAg
MCwgICAwLCAgNjQsICAgMSwgICAwLCAgIDAsIAotICAgIDE1MiwgICAxLCAgIDAsICAgMCwgIDgy
LCAgNjgsIAotICAgICA2OSwgIDcwLCAxMjAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAs
ICAgMSwgICAwLCAgIDAsIAotICAgICA2OSwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAg
IDAsIAotICAgICA2NiwgMTE3LCAxMDIsIDEwMiwgMTAxLCAxMTQsIAotICAgICA1MiwgIDczLCAg
IDAsICA3NywgMTA1LCAgOTksIAotICAgIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIAot
ICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIAotICAgICA3NiwgIDgzLCAgNzYsICAz
MiwgIDgzLCAxMDQsIAotICAgICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIAotICAgIDEx
MSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIAotICAgIDExNCwgIDMyLCAgNTQsICA0NiwgIDUx
LCAgNDYsIAotICAgICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksIAotICAgICA1NCwgIDUx
LCAgNTYsICA1MiwgICAwLCAxNzEsIAotICAgICA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAs
ICAgMCwgIDU2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAxLCAg
IDAsICAgMCwgIDgzLCAgODYsIAotICAgICA5NSwgIDgwLCAxMTEsIDExNSwgMTA1LCAxMTYsIAot
ICAgIDEwNSwgMTExLCAxMTAsICAgMCwgIDg0LCAgNjksIAotICAgICA4OCwgIDY3LCAgNzksICA3
OSwgIDgyLCAgNjgsIAotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDc5LCAgODMsIAotICAgICA3
MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4
LCAgIDAsIAotICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAgMCwgICAwLCAgODMs
ICA4NiwgIDk1LCAgODQsIAotICAgICA5NywgMTE0LCAxMDMsIDEwMSwgMTE2LCAgIDAsIAotICAg
IDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIAotICAgICA4MCwgICAwLCAgIDAsICAgMCwg
IDY0LCAgIDAsIAotICAgICAgMCwgICAwLCAgMjAsICAgMCwgICAwLCAgIDAsIAotICAgICA4OCwg
ICA4LCAgIDAsICAgNCwgICAwLCAxMTIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICA1MSwgIDUxLCAgIDAsICAgMCwgIDk4LCAgIDgsIAotICAgICAgMCwgICAzLCAg
MTgsICAxNiwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAot
ICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDQ1LCAgIDAsIAotICAgICAgMCwgICA3LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICA2LCAgMTYsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIAotICAgICA3MCwgMTI2LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgNjIsICAgMCwgICAwLCAgIDEsIAotICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQg
YnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8v
DQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50
cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIEJ1ZmZlcjRJICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlICAgc2ludDQgICAgICAgICBidWYgICAgMCAgICAgICAgMQ0KKy8vDQor
Ly8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLQ0KKy8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
ICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAg
eCAgICAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgeCAgIA0KKy8vDQorLy8NCisvLyBPdXRw
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1Zf
VGFyZ2V0ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBpbnQg
ICB4eXp3DQorLy8NCitwc180XzANCitkY2xfcmVzb3VyY2VfYnVmZmVyIChzaW50LHNpbnQsc2lu
dCxzaW50KSB0MA0KK2RjbF9pbnB1dF9wcyBjb25zdGFudCB2MS54DQorZGNsX291dHB1dCBvMC54
eXp3DQorbGQgbzAueHl6dywgdjEueHh4eCwgdDAueHl6dw0KK3JldCANCisvLyBBcHByb3hpbWF0
ZWx5IDIgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19Q
U19CdWZmZXJUb1RleHR1cmVfNElbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE1
NCwgMTM5LCANCisgICAgIDk1LCAyMTAsICA3NiwgIDUyLCAyMjgsICA1NSwgDQorICAgICAgMSwg
MTc1LCAgNjAsICA5MCwgIDEzLCAyMzQsIA0KKyAgICAxMzgsICAgMywgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDIwLCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxODAsICAgMCwgICAwLCAgIDAsICAxMiwgICAx
LCANCisgICAgICAwLCAgIDAsICA2NCwgICAxLCAgIDAsICAgMCwgDQorICAgIDE1MiwgICAxLCAg
IDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisg
ICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA2OSwgICAwLCAgIDAsICAg
MCwgIDYwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwg
MjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgICA2NiwgMTE3LCAxMDIsIDEwMiwgMTAx
LCAxMTQsIA0KKyAgICAgNTIsICA3MywgICAwLCAgNzcsIDEwNSwgIDk5LCANCisgICAgMTE0LCAx
MTEsIDExNSwgMTExLCAxMDIsIDExNiwgDQorICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAg
NzIsIA0KKyAgICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCANCisgICAgIDk3LCAxMDAs
IDEwMSwgMTE0LCAgMzIsICA2NywgDQorICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEs
IA0KKyAgICAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCANCisgICAgIDU3LCAgNTQsICA0
OCwgIDQ4LCAgNDYsICA0OSwgDQorICAgICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIA0K
KyAgICAgNzMsICA4MywgIDcxLCAgNzgsICA4MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MTUsICAgMCwgICAwLCAgIDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDEsICAgMCwgICAwLCAgODMs
ICA4NiwgDQorICAgICA5NSwgIDgwLCAxMTEsIDExNSwgMTA1LCAxMTYsIA0KKyAgICAxMDUsIDEx
MSwgMTEwLCAgIDAsICA4NCwgIDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2
OCwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwg
IDQ0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwg
DQorICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAg
ODYsICA5NSwgIDg0LCANCisgICAgIDk3LCAxMTQsIDEwMywgMTAxLCAxMTYsICAgMCwgDQorICAg
IDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAgICAgODAsICAgMCwgICAwLCAgIDAs
ICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICAyMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4
OCwgICA4LCAgIDAsICAgNCwgICAwLCAxMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDUxLCAgNTEsICAgMCwgICAwLCAgOTgsICAgOCwgDQorICAgICAgMCwg
ICAzLCAgMTgsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwg
ICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDQ1LCAgIDAsIA0KKyAgICAgIDAsICAgNywgMjQyLCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAxNiwgDQorICAgICAxNiwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAgNjUs
ICA4NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNHVp
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3BzXzR1
aS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJl
MTFfcHNfNHVpLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTI4ICsxLDEyOCBAQAotI2lmIDAKLS8v
Ci0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMu
OTYwMC4xNjM4NAotLy8KLS8vCi0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNs
b3QgRWxlbWVudHMKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQotLy8gQnVmZmVyNFVJICAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHR1cmUgICB1aW50NCAgICAgICAgIGJ1ZiAgICAwICAgICAgICAx
Ci0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAg
ICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0KLS8vIFNWX1Bvc2l0aW9uICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
ICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4
ICAgICAgICAgICAxICAgICBOT05FICAgIHVpbnQgICB4ICAgCi0vLwotLy8KLS8vIE91dHB1dCBz
aWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RhcmdldCAg
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICB1aW50ICAgeHl6dwot
Ly8KLXBzXzRfMAotZGNsX3Jlc291cmNlX2J1ZmZlciAodWludCx1aW50LHVpbnQsdWludCkgdDAK
LWRjbF9pbnB1dF9wcyBjb25zdGFudCB2MS54Ci1kY2xfb3V0cHV0IG8wLnh5encKLWxkIG8wLnh5
encsIHYxLnh4eHgsIHQwLnh5encKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgMiBpbnN0cnVjdGlv
biBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX0J1ZmZlclRvVGV4dHVyZV80
VUlbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMjUsIDE2NCwgCi0gICAgICAxLCAy
MjQsIDI1MCwgMjE5LCAgMTYsIDIwMCwgCi0gICAgIDgzLCAgOTksICAzOCwgMTM3LCAxMTYsIDEy
OSwgCi0gICAgMjAwLCAgMzksICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDIwLCAgIDIsICAg
MCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgMTgwLCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAwLCAgIDAsICA2NCwgICAx
LCAgIDAsICAgMCwgCi0gICAgMTUyLCAgIDEsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5
LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwg
Ci0gICAgIDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDY2LCAx
MTcsIDEwMiwgMTAyLCAxMDEsIDExNCwgCi0gICAgIDUyLCAgODUsICA3MywgICAwLCAgNzcsIDEw
NSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0
MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0g
ICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEy
LCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2
LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIs
ICAgMCwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDE1LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDEsICAgMCwgICAwLCAgODMsICA4
NiwgCi0gICAgIDk1LCAgODAsIDExMSwgMTE1LCAxMDUsIDExNiwgCi0gICAgMTA1LCAxMTEsIDEx
MCwgICAwLCAgODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgCi0g
ICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAw
LCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwg
Ci0gICAgIDk3LCAxMTQsIDEwMywgMTAxLCAxMTYsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4Mywg
IDcyLCAgNjgsICA4MiwgCi0gICAgIDgwLCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgIDgsICAgMCwgICA0LCAg
IDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAg
NjgsICAgMCwgICAwLCAgOTgsICAgOCwgCi0gICAgICAwLCAgIDMsICAxOCwgIDE2LCAgMTYsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0
MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNDUsICAgMCwgCi0g
ICAgICAwLCAgIDcsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDYsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcw
LCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAs
ICAgMSwgCi0gICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIFJlc291
cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0t
IC0tLS0tLS0tDQorLy8gQnVmZmVyNFVJICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUg
ICB1aW50NCAgICAgICAgIGJ1ZiAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5w
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1Zf
UG9zaXRpb24gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQg
ICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAgICAxICAg
ICBOT05FICAgIHVpbnQgICB4ICAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQor
Ly8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFs
dWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UYXJnZXQgICAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAgdWludCAgIHh5encNCisvLw0KK3Bz
XzRfMA0KK2RjbF9yZXNvdXJjZV9idWZmZXIgKHVpbnQsdWludCx1aW50LHVpbnQpIHQwDQorZGNs
X2lucHV0X3BzIGNvbnN0YW50IHYxLngNCitkY2xfb3V0cHV0IG8wLnh5encNCitsZCBvMC54eXp3
LCB2MS54eHh4LCB0MC54eXp3DQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgMiBpbnN0cnVjdGlv
biBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX0J1ZmZlclRvVGV4dHVy
ZV80VUlbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAyNSwgMTY0LCANCisgICAg
ICAxLCAyMjQsIDI1MCwgMjE5LCAgMTYsIDIwMCwgDQorICAgICA4MywgIDk5LCAgMzgsIDEzNywg
MTE2LCAxMjksIA0KKyAgICAyMDAsICAzOSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDIw
LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAxODAsICAgMCwgICAwLCAgIDAsICAxMiwgICAxLCANCisgICAgICAwLCAg
IDAsICA2NCwgICAxLCAgIDAsICAgMCwgDQorICAgIDE1MiwgICAxLCAgIDAsICAgMCwgIDgyLCAg
NjgsIA0KKyAgICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAg
MCwgICAxLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxMywgICAw
LCAgIDAsICAgMCwgDQorICAgICA2NiwgMTE3LCAxMDIsIDEwMiwgMTAxLCAxMTQsIA0KKyAgICAg
NTIsICA4NSwgIDczLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAx
MTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIs
ICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQs
ICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDEx
NCwgIDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0
NiwgDQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAgNzMsICA4Mywg
IDcxLCAgNzgsICA4MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAgMCwgICAwLCAg
IDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAxLCAgIDEsICAgMCwgICAwLCAgODMsICA4NiwgDQorICAgICA5
NSwgIDgwLCAxMTEsIDExNSwgMTA1LCAxMTYsIA0KKyAgICAxMDUsIDExMSwgMTEwLCAgIDAsICA4
NCwgIDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAgICAgMCwg
MTcxLCAxNzEsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDQ0LCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAw
LCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDg0LCAN
CisgICAgIDk3LCAxMTQsIDEwMywgMTAxLCAxMTYsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODMs
ICA3MiwgIDY4LCAgODIsIA0KKyAgICAgODAsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAyMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4OCwgICA4LCAgIDAsICAg
NCwgICAwLCAxMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDY4LCAgNjgsICAgMCwgICAwLCAgOTgsICAgOCwgDQorICAgICAgMCwgICAzLCAgMTgsICAxNiwg
IDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAw
LCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDQ1
LCAgIDAsIA0KKyAgICAgIDAsICAgNywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDYsICAxNiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICA2MiwgICAwLCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwDQorfTsNCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfdnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3No
YWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfdnMuaAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3ZzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsMzExICsxLDMxMSBAQAotI2lmIDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0
IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLyBCdWZm
ZXIgRGVmaW5pdGlvbnM6IAotLy8KLS8vIGNidWZmZXIgQnVmZmVyQ29weVBhcmFtcwotLy8gewot
Ly8KLS8vICAgdWludCBGaXJzdFBpeGVsT2Zmc2V0OyAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAg
IDAgU2l6ZTogICAgIDQKLS8vICAgdWludCBQaXhlbHNQZXJSb3c7ICAgICAgICAgICAgICAgICAv
LyBPZmZzZXQ6ICAgIDQgU2l6ZTogICAgIDQKLS8vICAgdWludCBSb3dTdHJpZGU7ICAgICAgICAg
ICAgICAgICAgICAvLyBPZmZzZXQ6ICAgIDggU2l6ZTogICAgIDQKLS8vICAgdWludCBSb3dzUGVy
U2xpY2U7ICAgICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgMTIgU2l6ZTogICAgIDQKLS8vICAg
ZmxvYXQyIFBvc2l0aW9uT2Zmc2V0OyAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgMTYgU2l6ZTog
ICAgIDgKLS8vICAgZmxvYXQyIFBvc2l0aW9uU2NhbGU7ICAgICAgICAgICAgICAvLyBPZmZzZXQ6
ICAgMjQgU2l6ZTogICAgIDgKLS8vICAgaW50MiBUZXhMb2NhdGlvbk9mZnNldDsgICAgICAgICAg
ICAvLyBPZmZzZXQ6ICAgMzIgU2l6ZTogICAgIDggW3VudXNlZF0KLS8vICAgaW50MiBUZXhMb2Nh
dGlvblNjYWxlOyAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgNDAgU2l6ZTogICAgIDggW3VudXNl
ZF0KLS8vICAgdWludCBGaXJzdFNsaWNlOyAgICAgICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAg
NDggU2l6ZTogICAgIDQKLS8vCi0vLyB9Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgot
Ly8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQg
ICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBCdWZm
ZXJDb3B5UGFyYW1zICAgICAgICAgICAgICAgICAgY2J1ZmZlciAgICAgIE5BICAgICAgICAgIE5B
ICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1h
dCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVmVydGV4SUQgICAgICAgICAgICAgIDAgICB4
ICAgICAgICAgICAwICAgVkVSVElEICAgIHVpbnQgICB4ICAgCi0vLwotLy8KLS8vIE91dHB1dCBz
aWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1Bvc2l0aW9u
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6dwot
Ly8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAgICAxICAgICBOT05FICAg
IHVpbnQgICB4ICAgCi0vLyBMQVlFUiAgICAgICAgICAgICAgICAgICAgMCAgICB5ICAgICAgICAg
IDEgICAgIE5PTkUgICAgdWludCAgICB5ICAKLS8vCi12c180XzAKLWRjbF9jb25zdGFudGJ1ZmZl
ciBjYjBbNF0sIGltbWVkaWF0ZUluZGV4ZWQKLWRjbF9pbnB1dF9zZ3YgdjAueCwgdmVydGV4X2lk
Ci1kY2xfb3V0cHV0X3NpdiBvMC54eXp3LCBwb3NpdGlvbgotZGNsX291dHB1dCBvMS54Ci1kY2xf
b3V0cHV0IG8xLnkKLWRjbF90ZW1wcyAyCi1tb3YgbzAuencsIGwoMCwwLDAsMS4wMDAwMDApCi1p
bXVsIG51bGwsIHIwLnh5LCBjYjBbMF0ud3d3dywgY2IwWzBdLnl6eXkKLXVkaXYgcjAueiwgbnVs
bCwgdjAueCwgcjAueAotaW1hZCByMC54LCAtcjAueiwgcjAueCwgdjAueAotaW1hZCByMC55LCBy
MC56LCByMC55LCBjYjBbMF0ueAotaWFkZCBvMS55LCByMC56LCBjYjBbM10ueAotdWRpdiByMC56
LCBudWxsLCByMC54LCBjYjBbMF0ueQotaW1hZCByMC54LCAtcjAueiwgY2IwWzBdLnksIHIwLngK
LXV0b2YgcjEueHksIHIwLnh6eHgKLWltYWQgcjAueSwgcjAueiwgY2IwWzBdLnosIHIwLnkKLWlh
ZGQgbzEueCwgcjAueCwgcjAueQotbWFkIG8wLnh5LCBjYjBbMV0uend6eiwgcjEueHl4eCwgY2Iw
WzFdLnh5eHgKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgMTMgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNl
ZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19WU19CdWZmZXJUb1RleHR1cmVbXSA9Ci17Ci0gICAg
IDY4LCAgODgsICA2NiwgIDY3LCAgMzksIDIwNywgCi0gICAgMTM4LCAgMTUsICA0MiwgMTk1LCAx
NDEsIDIwOCwgCi0gICAgICAyLCAxMDcsIDEzNSwgMTk3LCAxMjIsICAzNiwgCi0gICAgMTE0LCAy
MjcsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTUyLCAgIDUsICAgMCwgICAwLCAgIDUsICAg
MCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTAwLCAgIDIsICAg
MCwgICAwLCAxNTIsICAgMiwgCi0gICAgICAwLCAgIDAsICAxMiwgICAzLCAgIDAsICAgMCwgCi0g
ICAgIDI4LCAgIDUsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsICA0MCwgICAy
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNCwgCi0gICAgMjU0LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgMjQ0LCAgIDEs
ICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY2LCAxMTcsIDEwMiwgMTAyLCAx
MDEsIDExNCwgCi0gICAgIDY3LCAxMTEsIDExMiwgMTIxLCAgODAsICA5NywgCi0gICAgMTE0LCAg
OTcsIDEwOSwgMTE1LCAgIDAsIDE3MSwgCi0gICAgMTcxLCAxNzEsICA2MCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICA5LCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2
NCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA2NCwgICAxLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0
LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDEwMCwgICAxLCAgIDAs
ICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsIDExMywgICAxLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwg
ICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDg0LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDEyMywgICAxLCAg
IDAsICAgMCwgCi0gICAgIDEyLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAgIDEsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsIDEzNiwgICAxLCAgIDAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgMTUyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDE2OCwgICAx
LCAgIDAsICAgMCwgCi0gICAgIDI0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTUyLCAgIDEsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsIDE4MiwgICAxLCAgIDAsICAgMCwgCi0gICAgIDMyLCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgMjAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDIxNiwg
ICAxLCAgIDAsICAgMCwgCi0gICAgIDQwLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMjAwLCAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDIzMywgICAxLCAgIDAsICAgMCwgCi0gICAgIDQ4LCAg
IDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDg0LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3
MCwgMTA1LCAxMTQsIDExNSwgCi0gICAgMTE2LCAgODAsIDEwNSwgMTIwLCAxMDEsIDEwOCwgCi0g
ICAgIDc5LCAxMDIsIDEwMiwgMTE1LCAxMDEsIDExNiwgCi0gICAgICAwLCAxNzEsIDE3MSwgMTcx
LCAgIDAsICAgMCwgCi0gICAgIDE5LCAgIDAsICAgMSwgICAwLCAgIDEsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MCwgMTA1LCAxMjAs
IDEwMSwgCi0gICAgMTA4LCAxMTUsICA4MCwgMTAxLCAxMTQsICA4MiwgCi0gICAgMTExLCAxMTks
ICAgMCwgIDgyLCAxMTEsIDExOSwgCi0gICAgIDgzLCAxMTYsIDExNCwgMTA1LCAxMDAsIDEwMSwg
Ci0gICAgICAwLCAgODIsIDExMSwgMTE5LCAxMTUsICA4MCwgCi0gICAgMTAxLCAxMTQsICA4Mywg
MTA4LCAxMDUsICA5OSwgCi0gICAgMTAxLCAgIDAsICA4MCwgMTExLCAxMTUsIDEwNSwgCi0gICAg
MTE2LCAxMDUsIDExMSwgMTEwLCAgNzksIDEwMiwgCi0gICAgMTAyLCAxMTUsIDEwMSwgMTE2LCAg
IDAsIDE3MSwgCi0gICAgICAxLCAgIDAsICAgMywgICAwLCAgIDEsICAgMCwgCi0gICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODAsIDEx
MSwgCi0gICAgMTE1LCAxMDUsIDExNiwgMTA1LCAxMTEsIDExMCwgCi0gICAgIDgzLCAgOTksICA5
NywgMTA4LCAxMDEsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgIDc2LCAxMTEsICA5OSwgCi0g
ICAgIDk3LCAxMTYsIDEwNSwgMTExLCAxMTAsICA3OSwgCi0gICAgMTAyLCAxMDIsIDExNSwgMTAx
LCAxMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAy
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODQs
IDEwMSwgCi0gICAgMTIwLCAgNzYsIDExMSwgIDk5LCAgOTcsIDExNiwgCi0gICAgMTA1LCAxMTEs
IDExMCwgIDgzLCAgOTksICA5NywgCi0gICAgMTA4LCAxMDEsICAgMCwgIDcwLCAxMDUsIDExNCwg
Ci0gICAgMTE1LCAxMTYsICA4MywgMTA4LCAxMDUsICA5OSwgCi0gICAgMTAxLCAgIDAsICA3Nywg
MTA1LCAgOTksIDExNCwgCi0gICAgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsICAzMiwgCi0gICAg
IDQwLCAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgCi0gICAgIDgzLCAgNzYsICAzMiwgIDgzLCAx
MDQsICA5NywgCi0gICAgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIDExMSwgCi0gICAgMTA5LCAx
MTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgCi0gICAgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1
NywgCi0gICAgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgCi0gICAgIDUxLCAgNTYsICA1
MiwgICAwLCAxNzEsIDE3MSwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgNDQsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAw
LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA2
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgIDEsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODYs
IDEwMSwgMTE0LCAxMTYsIDEwMSwgCi0gICAgMTIwLCAgNzMsICA2OCwgICAwLCAgNzksICA4Mywg
Ci0gICAgIDcxLCAgNzgsIDEwOCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAg
IDAsICA5MiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAg
MCwgICAwLCAgIDEsICAxNCwgCi0gICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDIsICAxMywgCi0gICAgICAw
LCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgCi0gICAgMTExLCAxMTUsIDEwNSwgMTE2LCAxMDUs
IDExMSwgCi0gICAgMTEwLCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgCi0gICAgIDc5LCAgNzks
ICA4MiwgIDY4LCAgIDAsICA3NiwgCi0gICAgIDY1LCAgODksICA2OSwgIDgyLCAgIDAsIDE3MSwg
Ci0gICAgIDgzLCAgNzIsICA2OCwgIDgyLCAgIDgsICAgMiwgCi0gICAgICAwLCAgIDAsICA2NCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgMTMwLCAgIDAsICAgMCwgICAwLCAgODksICAgMCwgCi0gICAg
ICAwLCAgIDQsICA3MCwgMTQyLCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDQsICAgMCwgCi0gICAgICAwLCAgIDAsICA5NiwgICAwLCAgIDAsICAgNCwgCi0gICAgIDE4LCAg
MTYsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgMTAzLCAgIDAsICAgMCwgICA0LCAyNDIsICAzMiwgCi0gICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0g
ICAgICAwLCAgIDMsICAxOCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAw
LCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsICAzNCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAx
LCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAzMiwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgMTI4LCAgNjMsICAzOCwgICAwLCAgIDAsICAxMCwgCi0gICAg
ICAwLCAyMDgsICAgMCwgICAwLCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgMjQ2LCAxNDMsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTUwLCAxMzMsICAzMiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDc4LCAgIDAsICAg
MCwgICA4LCAgNjYsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAyMDgsICAgMCwgICAwLCAgMTAsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAzNSwgICAwLCAgIDAsICAxMCwgCi0gICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA0MiwgICAwLCAgMTYsIDEyOCwgCi0gICAgIDY1LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDM1LCAgIDAsICAgMCwgIDEwLCAgMzQsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDQyLCAgIDAsICAxNiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAyNiwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgMTAsIDEyOCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzAsICAgMCwgCi0gICAgICAwLCAgIDgsICAz
NCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNDIsICAgMCwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAxMjgsICAzMiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDc4
LCAgIDAsICAgMCwgICA5LCAgNjYsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAyMDgsICAgMCwgICAwLCAgMTAsICAgMCwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI2LCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDM1LCAgIDAsICAgMCwg
IDExLCAgMTgsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDQyLCAgIDAsICAxNiwgMTI4LCAgNjUsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDI2LCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICA4NiwgICAwLCAgIDAsICAgNSwgCi0gICAgIDUwLCAgIDAsICAx
NiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsIDEzNCwgICAwLCAgMTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzUsICAgMCwgCi0gICAgICAwLCAgMTAsICAzNCwgICAw
LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNDIsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDQyLCAxMjgsICAzMiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI2LCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAzMCwgICAwLCAgIDAsICAgNywg
Ci0gICAgIDE4LCAgMzIsICAxNiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwg
ICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMjYsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDUwLCAgIDAsICAgMCwgIDExLCAg
NTAsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMjMwLCAx
MzgsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICA3
MCwgMTI4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAsICAgMSwgCi0gICAgIDgzLCAgODQsICA2NSwgIDg0
LCAxMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAy
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDcsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwCi19OworI2lmIDANCisvLw0KKy8v
IEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAw
LjE2Mzg0DQorLy8NCisvLw0KKy8vIEJ1ZmZlciBEZWZpbml0aW9uczogDQorLy8NCisvLyBjYnVm
ZmVyIEJ1ZmZlckNvcHlQYXJhbXMNCisvLyB7DQorLy8NCisvLyAgIHVpbnQgRmlyc3RQaXhlbE9m
ZnNldDsgICAgICAgICAgICAgLy8gT2Zmc2V0OiAgICAwIFNpemU6ICAgICA0DQorLy8gICB1aW50
IFBpeGVsc1BlclJvdzsgICAgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgNCBTaXplOiAgICAg
NA0KKy8vICAgdWludCBSb3dTdHJpZGU7ICAgICAgICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAg
IDggU2l6ZTogICAgIDQNCisvLyAgIHVpbnQgUm93c1BlclNsaWNlOyAgICAgICAgICAgICAgICAg
Ly8gT2Zmc2V0OiAgIDEyIFNpemU6ICAgICA0DQorLy8gICBmbG9hdDIgUG9zaXRpb25PZmZzZXQ7
ICAgICAgICAgICAgIC8vIE9mZnNldDogICAxNiBTaXplOiAgICAgOA0KKy8vICAgZmxvYXQyIFBv
c2l0aW9uU2NhbGU7ICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgMjQgU2l6ZTogICAgIDgNCisv
LyAgIGludDIgVGV4TG9jYXRpb25PZmZzZXQ7ICAgICAgICAgICAgLy8gT2Zmc2V0OiAgIDMyIFNp
emU6ICAgICA4IFt1bnVzZWRdDQorLy8gICBpbnQyIFRleExvY2F0aW9uU2NhbGU7ICAgICAgICAg
ICAgIC8vIE9mZnNldDogICA0MCBTaXplOiAgICAgOCBbdW51c2VkXQ0KKy8vICAgdWludCBGaXJz
dFNsaWNlOyAgICAgICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgNDggU2l6ZTogICAgIDQNCisv
Lw0KKy8vIH0NCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGlt
IFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBCdWZmZXJDb3B5UGFy
YW1zICAgICAgICAgICAgICAgICAgY2J1ZmZlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAg
ICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAg
IFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9WZXJ0ZXhJRCAgICAgICAgICAgICAgMCAgIHgg
ICAgICAgICAgIDAgICBWRVJUSUQgICAgdWludCAgIHggICANCisvLw0KKy8vDQorLy8gT3V0cHV0
IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1Bv
c2l0aW9uICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAg
eHl6dw0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMSAgICAg
Tk9ORSAgICB1aW50ICAgeCAgIA0KKy8vIExBWUVSICAgICAgICAgICAgICAgICAgICAwICAgIHkg
ICAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgIHkgIA0KKy8vDQordnNfNF8wDQorZGNsX2Nv
bnN0YW50YnVmZmVyIGNiMFs0XSwgaW1tZWRpYXRlSW5kZXhlZA0KK2RjbF9pbnB1dF9zZ3YgdjAu
eCwgdmVydGV4X2lkDQorZGNsX291dHB1dF9zaXYgbzAueHl6dywgcG9zaXRpb24NCitkY2xfb3V0
cHV0IG8xLngNCitkY2xfb3V0cHV0IG8xLnkNCitkY2xfdGVtcHMgMg0KK21vdiBvMC56dywgbCgw
LDAsMCwxLjAwMDAwMCkNCitpbXVsIG51bGwsIHIwLnh5LCBjYjBbMF0ud3d3dywgY2IwWzBdLnl6
eXkNCit1ZGl2IHIwLnosIG51bGwsIHYwLngsIHIwLngNCitpbWFkIHIwLngsIC1yMC56LCByMC54
LCB2MC54DQoraW1hZCByMC55LCByMC56LCByMC55LCBjYjBbMF0ueA0KK2lhZGQgbzEueSwgcjAu
eiwgY2IwWzNdLngNCit1ZGl2IHIwLnosIG51bGwsIHIwLngsIGNiMFswXS55DQoraW1hZCByMC54
LCAtcjAueiwgY2IwWzBdLnksIHIwLngNCit1dG9mIHIxLnh5LCByMC54enh4DQoraW1hZCByMC55
LCByMC56LCBjYjBbMF0ueiwgcjAueQ0KK2lhZGQgbzEueCwgcjAueCwgcjAueQ0KK21hZCBvMC54
eSwgY2IwWzFdLnp3enosIHIxLnh5eHgsIGNiMFsxXS54eXh4DQorcmV0IA0KKy8vIEFwcHJveGlt
YXRlbHkgMTMgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUg
Z19WU19CdWZmZXJUb1RleHR1cmVbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAz
OSwgMjA3LCANCisgICAgMTM4LCAgMTUsICA0MiwgMTk1LCAxNDEsIDIwOCwgDQorICAgICAgMiwg
MTA3LCAxMzUsIDE5NywgMTIyLCAgMzYsIA0KKyAgICAxMTQsIDIyNywgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMTUyLCAgIDUsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDAsICAgMiwgICAwLCAgIDAsIDE1MiwgICAy
LCANCisgICAgICAwLCAgIDAsICAxMiwgICAzLCAgIDAsICAgMCwgDQorICAgICAyOCwgICA1LCAg
IDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDQwLCAgIDIsICAgMCwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisg
ICAgMjU0LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgIDI0NCwgICAxLCAgIDAsICAg
MCwgIDYwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2NiwgMTE3LCAxMDIsIDEwMiwgMTAx
LCAxMTQsIA0KKyAgICAgNjcsIDExMSwgMTEyLCAxMjEsICA4MCwgIDk3LCANCisgICAgMTE0LCAg
OTcsIDEwOSwgMTE1LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAgNjAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDksICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCANCisgICAgICAwLCAgIDAs
ICA2NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDEsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgODQsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwMCwg
ICAxLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDg0LCAgIDEsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTMsICAgMSwgICAwLCAgIDAsIA0KKyAgICAg
IDgsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAg
IDAsICAgMCwgDQorICAgICA4NCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgMTIzLCAgIDEsICAgMCwgICAwLCANCisgICAgIDEyLCAgIDAsICAgMCwgICAwLCAgIDQs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODQsICAg
MSwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEzNiwgICAxLCAgIDAsICAg
MCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTUyLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAxNjgsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjQsICAgMCwgICAw
LCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDE1MiwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTgyLCAg
IDEsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDIxNiwgICAxLCAgIDAsICAgMCwgDQorICAgICA0
MCwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgMjAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAyMzMsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNDgsICAgMCwgICAwLCAgIDAsICAgNCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICA4NCwgICAx
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAxMDUsIDExNCwgMTE1
LCANCisgICAgMTE2LCAgODAsIDEwNSwgMTIwLCAxMDEsIDEwOCwgDQorICAgICA3OSwgMTAyLCAx
MDIsIDExNSwgMTAxLCAxMTYsIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICAgMCwgICAwLCAN
CisgICAgIDE5LCAgIDAsICAgMSwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgwLCAxMDUsIDEyMCwgMTAxLCANCisg
ICAgMTA4LCAxMTUsICA4MCwgMTAxLCAxMTQsICA4MiwgDQorICAgIDExMSwgMTE5LCAgIDAsICA4
MiwgMTExLCAxMTksIA0KKyAgICAgODMsIDExNiwgMTE0LCAxMDUsIDEwMCwgMTAxLCANCisgICAg
ICAwLCAgODIsIDExMSwgMTE5LCAxMTUsICA4MCwgDQorICAgIDEwMSwgMTE0LCAgODMsIDEwOCwg
MTA1LCAgOTksIA0KKyAgICAxMDEsICAgMCwgIDgwLCAxMTEsIDExNSwgMTA1LCANCisgICAgMTE2
LCAxMDUsIDExMSwgMTEwLCAgNzksIDEwMiwgDQorICAgIDEwMiwgMTE1LCAxMDEsIDExNiwgICAw
LCAxNzEsIA0KKyAgICAgIDEsICAgMCwgICAzLCAgIDAsICAgMSwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDgwLCAx
MTEsIA0KKyAgICAxMTUsIDEwNSwgMTE2LCAxMDUsIDExMSwgMTEwLCANCisgICAgIDgzLCAgOTks
ICA5NywgMTA4LCAxMDEsICAgMCwgDQorICAgICA4NCwgMTAxLCAxMjAsICA3NiwgMTExLCAgOTks
IA0KKyAgICAgOTcsIDExNiwgMTA1LCAxMTEsIDExMCwgIDc5LCANCisgICAgMTAyLCAxMDIsIDEx
NSwgMTAxLCAxMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDIsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgIDc2LCAxMTEsICA5OSwgIDk3LCAxMTYsIA0KKyAg
ICAxMDUsIDExMSwgMTEwLCAgODMsICA5OSwgIDk3LCANCisgICAgMTA4LCAxMDEsICAgMCwgIDcw
LCAxMDUsIDExNCwgDQorICAgIDExNSwgMTE2LCAgODMsIDEwOCwgMTA1LCAgOTksIA0KKyAgICAx
MDEsICAgMCwgIDc3LCAxMDUsICA5OSwgMTE0LCANCisgICAgMTExLCAxMTUsIDExMSwgMTAyLCAx
MTYsICAzMiwgDQorICAgICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsIA0KKyAgICAgODMs
ICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3LCANCisgICAgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcs
IDExMSwgDQorICAgIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIA0KKyAgICAgMzIsICA1
NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCANCisgICAgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksICA1
NCwgDQorICAgICA1MSwgIDU2LCAgNTIsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgNzMsICA4Mywg
IDcxLCAgNzgsICA0NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMSwgICAwLCAg
IDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODYsIDEwMSwgMTE0LCAxMTYsIDEwMSwgDQorICAg
IDEyMCwgIDczLCAgNjgsICAgMCwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgMTA4LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAg
MCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgIDE0
LCANCisgICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDIsICAxMywgDQorICAgICAgMCwgICAwLCAgODMs
ICA4NiwgIDk1LCAgODAsIA0KKyAgICAxMTEsIDExNSwgMTA1LCAxMTYsIDEwNSwgMTExLCANCisg
ICAgMTEwLCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2
OCwgICAwLCAgNzYsIA0KKyAgICAgNjUsICA4OSwgIDY5LCAgODIsICAgMCwgMTcxLCANCisgICAg
IDgzLCAgNzIsICA2OCwgIDgyLCAgIDgsICAgMiwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwg
ICAxLCAgIDAsIA0KKyAgICAxMzAsICAgMCwgICAwLCAgIDAsICA4OSwgICAwLCANCisgICAgICAw
LCAgIDQsICA3MCwgMTQyLCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk2LCAgIDAsICAgMCwgICA0LCANCisgICAgIDE4LCAg
MTYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAxMDMsICAgMCwgICAwLCAgIDQsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMywgIDE4LCAgMzIsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAg
MCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAgMzQsICAzMiwgIDE2LCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCANCisgICAgICAwLCAgIDIsICAgMiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgOCwgMTk0LCAgMzIsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgNjQsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTI4LCAgNjMsICAzOCwgICAwLCAg
IDAsICAxMCwgDQorICAgICAgMCwgMjA4LCAgIDAsICAgMCwgIDUwLCAgIDAsIA0KKyAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMjQ2LCAxNDMsICAzMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNTAsIDEz
MywgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA3OCwgICAwLCAgIDAsICAgOCwgIDY2LCAgIDAsIA0KKyAgICAgMTYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAyMDgsICAgMCwgICAwLCAgMTAsICAxNiwg
DQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICAgMCwgIDE2
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAzNSwgICAwLCAgIDAsICAxMCwgDQor
ICAgICAxOCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQyLCAg
IDAsICAxNiwgMTI4LCANCisgICAgIDY1LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAxMCwgIDE2LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAz
NSwgICAwLCAgIDAsICAxMCwgIDM0LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgMjYsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwg
MTI4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDMwLCAgIDAsIA0KKyAgICAgIDAsICAgOCwgIDM0LCAgMzIsICAxNiwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNDIsICAgMCwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICA3OCwgICAwLCAgIDAs
ICAgOSwgIDY2LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAyMDgsICAgMCwgICAwLCAgMTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgMjYsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAzNSwgICAwLCAgIDAsICAxMSwg
IDE4LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDQy
LCAgIDAsICAxNiwgMTI4LCAgNjUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMjYsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDg2LCAgIDAsICAgMCwgICA1LCANCisgICAgIDUwLCAgIDAs
ICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMzQsICAgMCwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAzNSwgICAwLCANCisgICAgICAwLCAgMTAsICAz
NCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDQyLCAgIDAsIA0K
KyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDQyLCAxMjgsICAzMiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMjYsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMCwgICAw
LCAgIDAsICAgNywgDQorICAgICAxOCwgIDMyLCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
MjYsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTAs
ICAgMCwgICAwLCAgMTEsICA1MCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgIDIzMCwgMTM4LCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEyOCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAsICAgMSwg
DQorICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEz
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgNywgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xl
YXJmbG9hdDExX2ZsOXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyZmxv
YXQxMV9mbDlwcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJm
bG9hdDExX2ZsOXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTc2ICsxLDE3NiBAQAotI2lmIDAK
LS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2
LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIENPTE9SICAgICAgICAgICAg
ICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHl6dwotLy8KLS8v
Ci0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4
ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0v
LyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBm
bG9hdCAgIHh5encKLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAxICAgeHl6dyAgICAgICAg
MSAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDIg
ICB4eXp3ICAgICAgICAyICAgVEFSR0VUICAgZmxvYXQgICB4eXp3Ci0vLyBTVl9UQVJHRVQgICAg
ICAgICAgICAgICAgMyAgIHh5encgICAgICAgIDMgICBUQVJHRVQgICBmbG9hdCAgIHh5encKLS8v
Ci0vLwotLy8gTGV2ZWw5IHNoYWRlciBieXRlY29kZToKLS8vCi0gICAgcHNfMl94Ci0gICAgZGNs
IHQwCi0gICAgbW92IG9DMCwgdDAKLSAgICBtb3Ygb0MxLCB0MAotICAgIG1vdiBvQzIsIHQwCi0g
ICAgbW92IG9DMywgdDAKLQotLy8gYXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVz
ZWQKLXBzXzRfMAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eXp3Ci1kY2xfb3V0cHV0IG8wLnh5
encKLWRjbF9vdXRwdXQgbzEueHl6dwotZGNsX291dHB1dCBvMi54eXp3Ci1kY2xfb3V0cHV0IG8z
Lnh5encKLW1vdiBvMC54eXp3LCB2MS54eXp3Ci1tb3YgbzEueHl6dywgdjEueHl6dwotbW92IG8y
Lnh5encsIHYxLnh5encKLW1vdiBvMy54eXp3LCB2MS54eXp3Ci1yZXQgCi0vLyBBcHByb3hpbWF0
ZWx5IDUgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19D
bGVhckZsb2F0X0ZMOVtdID0KLXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAzNiwgMTY3LCAK
LSAgICAgNTksICAyMSwgMjUzLCAgNDYsIDIwNiwgMTMyLCAKLSAgICAyNTQsICAyOCwgIDE4LCAx
MTgsICA1MSwgMTE1LCAKLSAgICAgNDUsICAzMSwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAy
MzYsICAgMiwgICAwLCAgIDAsICAgNiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAg
MCwgICAwLCAKLSAgICAxNjgsICAgMCwgICAwLCAgIDAsICA3MiwgICAxLCAKLSAgICAgIDAsICAg
MCwgMTk2LCAgIDEsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMiwgICAwLCAgIDAsIDExMiwgICAy
LCAKLSAgICAgIDAsICAgMCwgIDY1LCAxMTEsIDExMCwgIDU3LCAKLSAgICAxMDQsICAgMCwgICAw
LCAgIDAsIDEwNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCAKLSAg
ICAgNjgsICAgMCwgICAwLCAgIDAsICAzNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAzNiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDM2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMzYs
ICAgMCwgICAwLCAgIDAsICAzNiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDM2LCAgIDAsICAgMSwg
ICAyLCAKLSAgICAyNTUsIDI1NSwgIDMxLCAgIDAsICAgMCwgICAyLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAxMjgsICAgMCwgICAwLCAKLSAgICAgMTUsIDE3NiwgICAxLCAgIDAsICAgMCwgICAyLCAK
LSAgICAgIDAsICAgOCwgIDE1LCAxMjgsICAgMCwgICAwLCAKLSAgICAyMjgsIDE3NiwgICAxLCAg
IDAsICAgMCwgICAyLCAKLSAgICAgIDEsICAgOCwgIDE1LCAxMjgsICAgMCwgICAwLCAKLSAgICAy
MjgsIDE3NiwgICAxLCAgIDAsICAgMCwgICAyLCAKLSAgICAgIDIsICAgOCwgIDE1LCAxMjgsICAg
MCwgICAwLCAKLSAgICAyMjgsIDE3NiwgICAxLCAgIDAsICAgMCwgICAyLCAKLSAgICAgIDMsICAg
OCwgIDE1LCAxMjgsICAgMCwgICAwLCAKLSAgICAyMjgsIDE3NiwgMjU1LCAyNTUsICAgMCwgICAw
LCAKLSAgICAgODMsICA3MiwgIDY4LCAgODIsIDE1MiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDY0
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMzgsICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCAKLSAg
ICAgIDAsICAgMywgMjQyLCAgMTYsICAxNiwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAs
IDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwg
ICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywg
MjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAK
LSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAg
IDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCAKLSAgICAgMTYsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCAKLSAgICAgMTYsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsICAzMCwgIDE2LCAgIDAsICAgMSwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCAKLSAgICAyNDIsICAzMiwgIDE2
LCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMzAsICAxNiwgICAwLCAKLSAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgMjQyLCAgMzIs
ICAxNiwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCAKLSAgICAgMTYs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4Mywg
IDg0LCAKLSAgICAgNjUsICA4NCwgMTE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDUsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDUsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
IDgyLCAgNjgsICA2OSwgIDcwLCAKLSAgICAgODAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAyOCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDQsIDI1NSwgMjU1LCAKLSAgICAg
IDAsICAgMSwgICAwLCAgIDAsICAyOCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDc3LCAxMDUsICA5
OSwgMTE0LCAKLSAgICAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgIDMyLCAKLSAgICAgNDAsICA4
MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAKLSAgICAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3
LCAKLSAgICAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgMTExLCAKLSAgICAxMDksIDExMiwgMTA1
LCAxMDgsIDEwMSwgMTE0LCAKLSAgICAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAKLSAg
ICAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAKLSAgICAgNTEsICA1NiwgIDUyLCAgIDAs
IDE3MSwgMTcxLCAKLSAgICAgNzMsICA4MywgIDcxLCAgNzgsICA3NiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsICA1Niwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgMTUsICAgMCwgICAwLCAgIDAsICA2OCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTUsICAxNSwgICAwLCAgIDAsICA4
MywgIDg2LCAKLSAgICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAKLSAgICAgNzMsICA3
OSwgIDc4LCAgIDAsICA2NywgIDc5LCAKLSAgICAgNzYsICA3OSwgIDgyLCAgIDAsIDE3MSwgMTcx
LCAKLSAgICAgNzksICA4MywgIDcxLCAgNzgsIDExNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA0
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTUs
ICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTUsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
MTUsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTUsICAgMCwgICAwLCAgIDAsICA4MywgIDg2
LCAKLSAgICAgOTUsICA4NCwgIDY1LCAgODIsICA3MSwgIDY5LCAKLSAgICAgODQsICAgMCwgMTcx
LCAxNzEKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1
dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9Q
T1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAg
ICAgICANCisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAg
IE5PTkUgICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisv
Lw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1
ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAxICAgeHl6dyAgICAgICAgMSAgIFRBUkdFVCAgIGZsb2F0ICAg
eHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAyICAgeHl6dyAgICAgICAgMiAgIFRB
UkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAzICAgeHl6
dyAgICAgICAgMyAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vDQorLy8NCisvLyBMZXZlbDkg
c2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQorICAgIHBzXzJfeA0KKyAgICBkY2wgdDANCisgICAgbW92
IG9DMCwgdDANCisgICAgbW92IG9DMSwgdDANCisgICAgbW92IG9DMiwgdDANCisgICAgbW92IG9D
MywgdDANCisNCisvLyBhcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KK3Bz
XzRfMA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dw0KK2RjbF9vdXRwdXQgbzAueHl6dw0K
K2RjbF9vdXRwdXQgbzEueHl6dw0KK2RjbF9vdXRwdXQgbzIueHl6dw0KK2RjbF9vdXRwdXQgbzMu
eHl6dw0KK21vdiBvMC54eXp3LCB2MS54eXp3DQorbW92IG8xLnh5encsIHYxLnh5encNCittb3Yg
bzIueHl6dywgdjEueHl6dw0KK21vdiBvMy54eXp3LCB2MS54eXp3DQorcmV0IA0KKy8vIEFwcHJv
eGltYXRlbHkgNSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllU
RSBnX1BTX0NsZWFyRmxvYXRfRkw5W10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAg
MzYsIDE2NywgDQorICAgICA1OSwgIDIxLCAyNTMsICA0NiwgMjA2LCAxMzIsIA0KKyAgICAyNTQs
ICAyOCwgIDE4LCAxMTgsICA1MSwgMTE1LCANCisgICAgIDQ1LCAgMzEsICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgIDIzNiwgICAyLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgMTY4LCAgIDAsICAgMCwgICAwLCAgNzIsICAg
MSwgDQorICAgICAgMCwgICAwLCAxOTYsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMiwg
ICAwLCAgIDAsIDExMiwgICAyLCANCisgICAgICAwLCAgIDAsICA2NSwgMTExLCAxMTAsICA1Nywg
DQorICAgIDEwNCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDIsIDI1NSwgMjU1LCANCisgICAgIDY4LCAgIDAsICAgMCwgICAwLCAgMzYsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDM2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDM2LCAg
IDAsICAgMCwgICAwLCANCisgICAgIDM2LCAgIDAsICAgMCwgICAwLCAgMzYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgMzYsICAgMCwgICAxLCAgIDIsIA0KKyAgICAyNTUsIDI1NSwgIDMxLCAgIDAs
ICAgMCwgICAyLCANCisgICAgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwgDQorICAgICAx
NSwgMTc2LCAgIDEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDAsICAgOCwgIDE1LCAxMjgsICAg
MCwgICAwLCANCisgICAgMjI4LCAxNzYsICAgMSwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwg
ICA4LCAgMTUsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDE3NiwgICAxLCAgIDAsICAgMCwg
ICAyLCANCisgICAgICAyLCAgIDgsICAxNSwgMTI4LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTc2
LCAgIDEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDMsICAgOCwgIDE1LCAxMjgsICAgMCwgICAw
LCANCisgICAgMjI4LCAxNzYsIDI1NSwgMjU1LCAgIDAsICAgMCwgDQorICAgICA4MywgIDcyLCAg
NjgsICA4MiwgMTUyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDM4LCAgIDAsICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAgICAgMCwgICAzLCAyNDIs
ICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisg
ICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAg
ICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwg
IDE2LCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAw
LCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgIDU0
LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgMjQyLCAgMzIsICAx
NiwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAzMCwgIDE2LCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0Miwg
IDMyLCAgMTYsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAg
ICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYyLCAgIDAsICAgMCwgICAx
LCAgODMsICA4NCwgDQorICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDUsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA4MiwgIDY4LCAgNjksICA3MCwgDQorICAgICA4
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgNCwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMSwgICAwLCAgIDAsICAyOCwg
ICAwLCANCisgICAgICAwLCAgIDAsICA3NywgMTA1LCAgOTksIDExNCwgDQorICAgIDExMSwgMTE1
LCAxMTEsIDEwMiwgMTE2LCAgMzIsIA0KKyAgICAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2
LCANCisgICAgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsICA5NywgDQorICAgIDEwMCwgMTAxLCAx
MTQsICAzMiwgIDY3LCAxMTEsIA0KKyAgICAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAN
CisgICAgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgDQorICAgICA1NCwgIDQ4LCAgNDgs
ICA0NiwgIDQ5LCAgNTQsIA0KKyAgICAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgMTcxLCANCisg
ICAgIDczLCAgODMsICA3MSwgIDc4LCAgNzYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA1NiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
ICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1
LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgIDE1LCAgIDAsICAgMCwgIDgzLCAg
ODYsIA0KKyAgICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCANCisgICAgIDczLCAgNzks
ICA3OCwgICAwLCAgNjcsICA3OSwgDQorICAgICA3NiwgIDc5LCAgODIsICAgMCwgMTcxLCAxNzEs
IA0KKyAgICAgNzksICA4MywgIDcxLCAgNzgsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAg
NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMTUsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAx
MDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAgMCwg
ICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwg
DQorICAgICA4NCwgICAwLCAxNzEsIDE3MQ0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2Ns
ZWFyZmxvYXQxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyZmxvYXQx
MXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9jbGVhcmZsb2F0MTFw
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5NSArMSwxOTUgQEAKLSNpZiAwCi0vLwotLy8gR2Vu
ZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYz
ODQKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAw
ICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAg
IHh5encgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5encKLS8vCi0vLwotLy8gT3V0cHV0
IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVn
aXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VU
ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3
Ci0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMSAgIHh5encgICAgICAgIDEgICBUQVJHRVQg
ICBmbG9hdCAgIHh5encKLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAyICAgeHl6dyAgICAg
ICAgMiAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAg
IDMgICB4eXp3ICAgICAgICAzICAgVEFSR0VUICAgZmxvYXQgICB4eXp3Ci0vLyBTVl9UQVJHRVQg
ICAgICAgICAgICAgICAgNCAgIHh5encgICAgICAgIDQgICBUQVJHRVQgICBmbG9hdCAgIHh5encK
LS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA1ICAgeHl6dyAgICAgICAgNSAgIFRBUkdFVCAg
IGZsb2F0ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDYgICB4eXp3ICAgICAg
ICA2ICAgVEFSR0VUICAgZmxvYXQgICB4eXp3Ci0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAg
NyAgIHh5encgICAgICAgIDcgICBUQVJHRVQgICBmbG9hdCAgIHh5encKLS8vCi1wc180XzAKLWRj
bF9pbnB1dF9wcyBsaW5lYXIgdjEueHl6dwotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfb3V0cHV0
IG8xLnh5encKLWRjbF9vdXRwdXQgbzIueHl6dwotZGNsX291dHB1dCBvMy54eXp3Ci1kY2xfb3V0
cHV0IG80Lnh5encKLWRjbF9vdXRwdXQgbzUueHl6dwotZGNsX291dHB1dCBvNi54eXp3Ci1kY2xf
b3V0cHV0IG83Lnh5encKLW1vdiBvMC54eXp3LCB2MS54eXp3Ci1tb3YgbzEueHl6dywgdjEueHl6
dwotbW92IG8yLnh5encsIHYxLnh5encKLW1vdiBvMy54eXp3LCB2MS54eXp3Ci1tb3YgbzQueHl6
dywgdjEueHl6dwotbW92IG81Lnh5encsIHYxLnh5encKLW1vdiBvNi54eXp3LCB2MS54eXp3Ci1t
b3YgbzcueHl6dywgdjEueHl6dwotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9u
IHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfQ2xlYXJGbG9hdFtdID0KLXsK
LSAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxOSwgIDMwLCAKLSAgICAxMDIsICA2OSwgMTY2LCAy
MTksIDE2NSwgIDE0LCAKLSAgICAxNzMsICA0MSwgMTcxLCAxMzMsIDE0NCwgIDU4LCAKLSAgICAg
MTQsIDIyNCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgODgsICAgMywgICAwLCAgIDAsICAg
NSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAKLSAgICAxNDAsICAg
MCwgICAwLCAgIDAsIDIyNCwgICAwLCAKLSAgICAgIDAsICAgMCwgMTg4LCAgIDEsICAgMCwgICAw
LCAKLSAgICAyMjAsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCAKLSAgICAgNjksICA3MCwgIDgw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAs
ICAgMCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAgMjgs
ICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCAKLSAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwg
MTAyLCAKLSAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAKLSAgICAgNzIsICA3Niwg
IDgzLCAgNzYsICAzMiwgIDgzLCAKLSAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAK
LSAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAKLSAgICAxMDEsIDExNCwgIDMyLCAg
NTQsICA0NiwgIDUxLCAKLSAgICAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAKLSAgICAg
NDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAKLSAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3
MSwgIDc4LCAKLSAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAg
MCwgICA4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAs
ICAgMCwgIDE1LCAgMTUsICAgMCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwg
IDgzLCAKLSAgICAgNzMsICA4NCwgIDczLCAgNzksICA3OCwgICAwLCAKLSAgICAgNjcsICA3OSwg
IDc2LCAgNzksICA4MiwgICAwLCAKLSAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCAK
LSAgICAyMTIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAgIDAsICAgMCwgICA4LCAg
IDAsICAgMCwgICAwLCAKLSAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1
LCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAs
ICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDAs
ICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwg
IDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAg
IDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAy
MDAsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAg
MCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAw
LCAgIDAsICAgNiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAg
ICAyMDAsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCAKLSAgICAgIDAs
ICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwg
IDgyLCAKLSAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCAKLSAgICAgODMsICA3Miwg
IDY4LCAgODIsICAyNCwgICAxLCAKLSAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCAK
LSAgICAgNzAsICAgMCwgICAwLCAgIDAsICA5OCwgIDE2LCAKLSAgICAgIDAsICAgMywgMjQyLCAg
MTYsICAxNiwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAg
IDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEw
MSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDEsICAg
MCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAw
LCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQy
LCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAg
ICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAs
IDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDUs
ICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwg
ICAwLCAKLSAgICAgIDYsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywg
MjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDcsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAK
LSAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA3MCwgIDMwLCAKLSAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
NTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgNzAsICAzMCwgIDE2LCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAg
MCwgIDU0LCAgIDAsICAgMCwgICA1LCAKLSAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMiwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMzAsICAxNiwgICAwLCAKLSAgICAgIDEsICAgMCwgICAw
LCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCAKLSAg
ICAgIDMsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCAKLSAgICAgMTYsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCAKLSAgICAgMTYs
ICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsICAzMCwgIDE2LCAgIDAsICAgMSwg
ICAwLCAKLSAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCAKLSAgICAyNDIsICAzMiwg
IDE2LCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMzAsICAxNiwgICAwLCAK
LSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgMjQyLCAg
MzIsICAxNiwgICAwLCAKLSAgICAgIDYsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCAKLSAgICAg
MTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0
MiwgIDMyLCAKLSAgICAgMTYsICAgMCwgICA3LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsICAz
MCwgIDE2LCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDYyLCAgIDAsICAgMCwgICAx
LCAKLSAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA5
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICA5LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1
dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9Q
T1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAg
ICAgICANCisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAg
IE5PTkUgICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisv
Lw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1
ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAxICAgeHl6dyAgICAgICAgMSAgIFRBUkdFVCAgIGZsb2F0ICAg
eHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAyICAgeHl6dyAgICAgICAgMiAgIFRB
UkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAzICAgeHl6
dyAgICAgICAgMyAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAg
ICAgICAgICA0ICAgeHl6dyAgICAgICAgNCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICA1ICAgeHl6dyAgICAgICAgNSAgIFRBUkdFVCAgIGZsb2F0
ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA2ICAgeHl6dyAgICAgICAgNiAg
IFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICA3ICAg
eHl6dyAgICAgICAgNyAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNs
X2lucHV0X3BzIGxpbmVhciB2MS54eXp3DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX291dHB1
dCBvMS54eXp3DQorZGNsX291dHB1dCBvMi54eXp3DQorZGNsX291dHB1dCBvMy54eXp3DQorZGNs
X291dHB1dCBvNC54eXp3DQorZGNsX291dHB1dCBvNS54eXp3DQorZGNsX291dHB1dCBvNi54eXp3
DQorZGNsX291dHB1dCBvNy54eXp3DQorbW92IG8wLnh5encsIHYxLnh5encNCittb3YgbzEueHl6
dywgdjEueHl6dw0KK21vdiBvMi54eXp3LCB2MS54eXp3DQorbW92IG8zLnh5encsIHYxLnh5encN
Cittb3YgbzQueHl6dywgdjEueHl6dw0KK21vdiBvNS54eXp3LCB2MS54eXp3DQorbW92IG82Lnh5
encsIHYxLnh5encNCittb3YgbzcueHl6dywgdjEueHl6dw0KK3JldCANCisvLyBBcHByb3hpbWF0
ZWx5IDkgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19Q
U19DbGVhckZsb2F0W10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTksICAzMCwg
DQorICAgIDEwMiwgIDY5LCAxNjYsIDIxOSwgMTY1LCAgMTQsIA0KKyAgICAxNzMsICA0MSwgMTcx
LCAxMzMsIDE0NCwgIDU4LCANCisgICAgIDE0LCAyMjQsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA4OCwgICAzLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAg
IDAsICAgMCwgICAwLCANCisgICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjQsICAgMCwgDQorICAg
ICAgMCwgICAwLCAxODgsICAgMSwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAgMiwgICAwLCAgIDAs
ICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwg
MjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3Nywg
MTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMy
LCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgz
LCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAx
MDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAN
CisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEs
ICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisg
ICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsICAxNSwgIDE1LCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4MCwgIDc5LCAg
ODMsIA0KKyAgICAgNzMsICA4NCwgIDczLCAgNzksICA3OCwgICAwLCANCisgICAgIDY3LCAgNzks
ICA3NiwgIDc5LCAgODIsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgs
IA0KKyAgICAyMTIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
OCwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAyMDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAg
IDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMs
ICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAs
ICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwg
ICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1
LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAg
IDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAg
IDIwMCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAg
NywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywg
ICAwLCAgIDAsICAgMCwgICA3LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5
LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMsICA3MiwgIDY4LCAgODIsICAyNCwgICAx
LCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAg
IDAsICAgMCwgIDk4LCAgMTYsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMTYsICAxNiwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIs
ICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisg
ICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAg
ICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwg
IDE2LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAw
LCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgMTAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA1LCAg
IDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAg
IDAsIA0KKyAgICAgIDYsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMs
IDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgNywgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAs
IA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgMjQyLCAgMzIsICAxNiwgICAw
LCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAzMCwgIDE2LCAgIDAsIA0KKyAgICAg
IDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAg
MTYsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAyNDIs
ICAzMiwgDQorICAgICAxNiwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAz
MCwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAg
NSwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDcwLCAgMzAsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwg
DQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDYsICAgMCwgICAw
LCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICA3LCAg
IDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgMzAsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQs
IDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOSwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA5LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMA0K
K307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyZmxvYXQxMXZzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyZmxvYXQxMXZzLmgJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9jbGVhcmZsb2F0MTF2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3
NSArMSwxNzUgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8KLS8vIElucHV0IHNp
Z25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gUE9TSVRJT04gICAg
ICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAwICAgICBOT05FICAgZmxvYXQgICB4eXogCi0v
LyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICBm
bG9hdCAgIHh5encKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4eXp3Ci0vLyBDT0xPUiAgICAgICAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5encKLS8vCi0vLwotLy8g
UnVudGltZSBnZW5lcmF0ZWQgY29uc3RhbnQgbWFwcGluZ3M6Ci0vLwotLy8gVGFyZ2V0IFJlZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudCBEZXNjcmlwdGlvbgotLy8gLS0t
LS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotLy8gYzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXggU2hhZGVyIHBvc2l0
aW9uIG9mZnNldAotLy8KLS8vCi0vLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOgotLy8KLSAgICB2
c18yX3gKLSAgICBkZWYgYzEsIDEsIDAsIDAsIDAKLSAgICBkY2xfdGV4Y29vcmQgdjAKLSAgICBk
Y2xfdGV4Y29vcmQxIHYxCi0gICAgYWRkIG9Qb3MueHksIHYwLCBjMAotICAgIG1hZCBvUG9zLnp3
LCB2MC56LCBjMS54eXh5LCBjMS54eXl4Ci0gICAgbW92IG9UMCwgdjEKLQotLy8gYXBwcm94aW1h
dGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLXZzXzRfMAotZGNsX2lucHV0IHYwLnh5egot
ZGNsX2lucHV0IHYxLnh5encKLWRjbF9vdXRwdXRfc2l2IG8wLnh5encsIHBvc2l0aW9uCi1kY2xf
b3V0cHV0IG8xLnh5encKLW1vdiBvMC54eXosIHYwLnh5engKLW1vdiBvMC53LCBsKDEuMDAwMDAw
KQotbW92IG8xLnh5encsIHYxLnh5encKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgNCBpbnN0cnVj
dGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1ZTX0NsZWFyRmxvYXRbXSA9
Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAyNTQsIDI1MywgCi0gICAgMjAwLCAxNzQsICAy
MiwgIDM1LCAgOTcsIDE5MCwgCi0gICAgMTg3LCAyMDAsIDI1MywgMTYxLCAyNDYsICA0NSwgCi0g
ICAgIDY3LCAgNjYsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMjA0LCAgIDIsICAgMCwgICAw
LCAgIDYsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgCi0gICAgMjA4
LCAgIDAsICAgMCwgICAwLCAgODQsICAgMSwgCi0gICAgICAwLCAgIDAsIDIwOCwgICAxLCAgIDAs
ICAgMCwgCi0gICAgIDQwLCAgIDIsICAgMCwgICAwLCAxMjAsICAgMiwgCi0gICAgICAwLCAgIDAs
ICA2NSwgMTExLCAxMTAsICA1NywgCi0gICAgMTQ0LCAgIDAsICAgMCwgICAwLCAxNDQsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTQsIDI1NSwgCi0gICAgMTA0LCAgIDAsICAgMCwg
ICAwLCAgNDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMzYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAzNiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDM2LCAgIDAsICAgMCwgICAwLCAg
MzYsICAgMCwgCi0gICAgICAxLCAgIDAsICAzNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMSwgICAyLCAyNTQsIDI1NSwgCi0gICAgIDgxLCAgIDAsICAgMCwgICA1LCAgIDEsICAg
MCwgCi0gICAgIDE1LCAxNjAsICAgMCwgICAwLCAxMjgsICA2MywgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDUsICAgMCwgCi0gICAgICAwLCAxMjgsICAgMCwgICAw
LCAgMTUsIDE0NCwgCi0gICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDUsICAgMCwgCi0gICAgICAx
LCAxMjgsICAgMSwgICAwLCAgMTUsIDE0NCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAzLCAgIDAs
ICAgMCwgCi0gICAgICAzLCAxOTIsICAgMCwgICAwLCAyMjgsIDE0NCwgCi0gICAgICAwLCAgIDAs
IDIyOCwgMTYwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDQsICAgMCwgICAwLCAgMTIsIDE5Miwg
Ci0gICAgICAwLCAgIDAsIDE3MCwgMTQ0LCAgIDEsICAgMCwgCi0gICAgIDY4LCAxNjAsICAgMSwg
ICAwLCAgMjAsIDE2MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgCi0gICAg
IDE1LCAyMjQsICAgMSwgICAwLCAyMjgsIDE0NCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAwLCAg
ODMsICA3MiwgCi0gICAgIDY4LCAgODIsIDEyNCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY0LCAg
IDAsICAgMSwgICAwLCAgMzEsICAgMCwgCi0gICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAg
MywgCi0gICAgMTE0LCAgMTYsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA5
NSwgICAwLCAgIDAsICAgMywgCi0gICAgMjQyLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICAwLCAgIDAsIDEwMywgICAwLCAgIDAsICAgNCwgCi0gICAgMjQyLCAgMzIsICAxNiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTAx
LCAgIDAsICAgMCwgICAzLCAyNDIsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgMTgsICAxNiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgMTMwLCAgMzIsICAxNiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsIDEyOCwgIDYzLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDUsIDI0MiwgIDMyLCAg
MTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgCi0gICAgIDE2LCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYyLCAgIDAsICAgMCwgICAxLCAgODMsICA4
NCwgCi0gICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA4
MiwgIDY4LCAgNjksICA3MCwgCi0gICAgIDgwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICA0LCAyNTQsIDI1NSwgCi0gICAgICAw
LCAgIDEsICAgMCwgICAwLCAgMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICA3NywgMTA1LCAgOTks
IDExNCwgCi0gICAgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsICAzMiwgCi0gICAgIDQwLCAgODIs
ICA0MSwgIDMyLCAgNzIsICA3NiwgCi0gICAgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsICA5Nywg
Ci0gICAgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIDExMSwgCi0gICAgMTA5LCAxMTIsIDEwNSwg
MTA4LCAxMDEsIDExNCwgCi0gICAgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgCi0gICAg
IDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgCi0gICAgIDUxLCAgNTYsICA1MiwgICAwLCAx
NzEsIDE3MSwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgNzIsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICA3LCAgIDcsICAgMCwgICAwLCAgNjUsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgMTUsICAgMCwgICAwLCAgODAs
ICA3OSwgCi0gICAgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksICA3OCwgCi0gICAgICAwLCAgNjcs
ICA3OSwgIDc2LCAgNzksICA4MiwgCi0gICAgICAwLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwg
Ci0gICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAx
NSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDgwLCAgNzksICA4MywgCi0g
ICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgCi0gICAgIDY3LCAgNzksICA3NiwgIDc5
LCAgODIsICAgMCwgCi0gICAgMTcxLCAxNzEKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVk
IGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisv
Lw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0NCisvLyBQT1NJVElPTiAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAg
IDAgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8g
T3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8v
IFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZs
b2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MSAgICAgTk9ORSAgIGZsb2F0ICAgeHl6dw0KKy8vDQorLy8NCisvLyBSdW50aW1lIGdlbmVyYXRl
ZCBjb25zdGFudCBtYXBwaW5nczoNCisvLw0KKy8vIFRhcmdldCBSZWcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ29uc3RhbnQgRGVzY3JpcHRpb24NCisvLyAtLS0tLS0tLS0tIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gYzAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXggU2hhZGVyIHBvc2l0aW9uIG9mZnNldA0K
Ky8vDQorLy8NCisvLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQorICAgIHZzXzJfeA0K
KyAgICBkZWYgYzEsIDEsIDAsIDAsIDANCisgICAgZGNsX3RleGNvb3JkIHYwDQorICAgIGRjbF90
ZXhjb29yZDEgdjENCisgICAgYWRkIG9Qb3MueHksIHYwLCBjMA0KKyAgICBtYWQgb1Bvcy56dywg
djAueiwgYzEueHl4eSwgYzEueHl5eA0KKyAgICBtb3Ygb1QwLCB2MQ0KKw0KKy8vIGFwcHJveGlt
YXRlbHkgMyBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQordnNfNF8wDQorZGNsX2lucHV0IHYwLnh5
eg0KK2RjbF9pbnB1dCB2MS54eXp3DQorZGNsX291dHB1dF9zaXYgbzAueHl6dywgcG9zaXRpb24N
CitkY2xfb3V0cHV0IG8xLnh5encNCittb3YgbzAueHl6LCB2MC54eXp4DQorbW92IG8wLncsIGwo
MS4wMDAwMDApDQorbW92IG8xLnh5encsIHYxLnh5encNCityZXQgDQorLy8gQXBwcm94aW1hdGVs
eSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfVlNf
Q2xlYXJGbG9hdFtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjU0LCAyNTMsIA0K
KyAgICAyMDAsIDE3NCwgIDIyLCAgMzUsICA5NywgMTkwLCANCisgICAgMTg3LCAyMDAsIDI1Mywg
MTYxLCAyNDYsICA0NSwgDQorICAgICA2NywgIDY2LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAyMDQsICAgMiwgICAwLCAgIDAsICAgNiwgICAwLCANCisgICAgICAwLCAgIDAsICA1NiwgICAw
LCAgIDAsICAgMCwgDQorICAgIDIwOCwgICAwLCAgIDAsICAgMCwgIDg0LCAgIDEsIA0KKyAgICAg
IDAsICAgMCwgMjA4LCAgIDEsICAgMCwgICAwLCANCisgICAgIDQwLCAgIDIsICAgMCwgICAwLCAx
MjAsICAgMiwgDQorICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIA0KKyAgICAxNDQs
ICAgMCwgICAwLCAgIDAsIDE0NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTQs
IDI1NSwgDQorICAgIDEwNCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAzNiwgICAwLCANCisgICAgICAwLCAgIDAsICAzNiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAzNiwgICAwLCAgIDAsICAgMCwgIDM2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwg
IDM2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAyLCAyNTQsIDI1NSwg
DQorICAgICA4MSwgICAwLCAgIDAsICAgNSwgICAxLCAgIDAsIA0KKyAgICAgMTUsIDE2MCwgICAw
LCAgIDAsIDEyOCwgIDYzLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMzEsICAgMCwgICAwLCAg
IDIsICAgNSwgICAwLCANCisgICAgICAwLCAxMjgsICAgMCwgICAwLCAgMTUsIDE0NCwgDQorICAg
ICAzMSwgICAwLCAgIDAsICAgMiwgICA1LCAgIDAsIA0KKyAgICAgIDEsIDEyOCwgICAxLCAgIDAs
ICAxNSwgMTQ0LCANCisgICAgICAyLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQorICAgICAg
MywgMTkyLCAgIDAsICAgMCwgMjI4LCAxNDQsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNjAsICAg
NCwgICAwLCANCisgICAgICAwLCAgIDQsICAgMCwgICAwLCAgMTIsIDE5MiwgDQorICAgICAgMCwg
ICAwLCAxNzAsIDE0NCwgICAxLCAgIDAsIA0KKyAgICAgNjgsIDE2MCwgICAxLCAgIDAsICAyMCwg
MTYwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAgICAxNSwgMjI0
LCAgIDEsICAgMCwgMjI4LCAxNDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDAsICA4MywgIDcy
LCANCisgICAgIDY4LCAgODIsIDEyNCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2NCwgICAwLCAg
IDEsICAgMCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk1LCAgIDAsICAgMCwgICAzLCAN
CisgICAgMTE0LCAgMTYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgOTUs
ICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDAsIDEwMywgICAwLCAgIDAsICAgNCwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
MTAxLCAgIDAsICAgMCwgICAzLCAyNDIsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDExNCwgIDMyLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDE4LCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgMTMwLCAg
MzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgMTI4LCAgNjMsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUs
IDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAs
IA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYyLCAgIDAsICAg
MCwgICAxLCAgODMsICA4NCwgDQorICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA4MiwgIDY4LCAgNjksICA3MCwgDQor
ICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgNCwgMjU0LCAyNTUsIA0KKyAgICAgIDAsICAgMSwgICAwLCAgIDAs
ICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICA3NywgMTA1LCAgOTksIDExNCwgDQorICAgIDEx
MSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAgMzIsIA0KKyAgICAgNDAsICA4MiwgIDQxLCAgMzIsICA3
MiwgIDc2LCANCisgICAgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsICA5NywgDQorICAgIDEwMCwg
MTAxLCAxMTQsICAzMiwgIDY3LCAxMTEsIA0KKyAgICAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwg
MTE0LCANCisgICAgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgDQorICAgICA1NCwgIDQ4
LCAgNDgsICA0NiwgIDQ5LCAgNTQsIA0KKyAgICAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgMTcx
LCANCisgICAgIDczLCAgODMsICA3MSwgIDc4LCAgNzIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA1NiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICA3LCAgIDcsICAgMCwgICAwLCAgNjUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgIDE1LCAgIDAsICAgMCwg
IDgwLCAgNzksIA0KKyAgICAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCANCisgICAgICAw
LCAgNjcsICA3OSwgIDc2LCAgNzksICA4MiwgDQorICAgICAgMCwgMTcxLCAgNzksICA4MywgIDcx
LCAgNzgsIA0KKyAgICAgNzYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwg
IDgwLCAgNzksICA4MywgDQorICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIA0KKyAg
ICAgNjcsICA3OSwgIDc2LCAgNzksICA4MiwgICAwLCANCisgICAgMTcxLCAxNzENCit9Ow0KSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvc2hhZGVycy9jb21waWxlZC9jbGVhcnNpbnQxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFyc2ludDExcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL2NsZWFyc2ludDExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxOTUgKzEsMTk1IEBA
Ci0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0v
LwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVl
ICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gQ09MT1IgICAg
ICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBOT05FICAgICBpbnQgICB4eXp3
Ci0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRB
UkdFVCAgICAgaW50ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDEgICB4eXp3
ICAgICAgICAxICAgVEFSR0VUICAgICBpbnQgICB4eXp3Ci0vLyBTVl9UQVJHRVQgICAgICAgICAg
ICAgICAgMiAgIHh5encgICAgICAgIDIgICBUQVJHRVQgICAgIGludCAgIHh5encKLS8vIFNWX1RB
UkdFVCAgICAgICAgICAgICAgICAzICAgeHl6dyAgICAgICAgMyAgIFRBUkdFVCAgICAgaW50ICAg
eHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAgICAgICA0ICAgVEFS
R0VUICAgICBpbnQgICB4eXp3Ci0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgNSAgIHh5encg
ICAgICAgIDUgICBUQVJHRVQgICAgIGludCAgIHh5encKLS8vIFNWX1RBUkdFVCAgICAgICAgICAg
ICAgICA2ICAgeHl6dyAgICAgICAgNiAgIFRBUkdFVCAgICAgaW50ICAgeHl6dwotLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFSR0VUICAgICBpbnQgICB4
eXp3Ci0vLwotcHNfNF8wCi1kY2xfaW5wdXRfcHMgY29uc3RhbnQgdjEueHl6dwotZGNsX291dHB1
dCBvMC54eXp3Ci1kY2xfb3V0cHV0IG8xLnh5encKLWRjbF9vdXRwdXQgbzIueHl6dwotZGNsX291
dHB1dCBvMy54eXp3Ci1kY2xfb3V0cHV0IG80Lnh5encKLWRjbF9vdXRwdXQgbzUueHl6dwotZGNs
X291dHB1dCBvNi54eXp3Ci1kY2xfb3V0cHV0IG83Lnh5encKLW1vdiBvMC54eXp3LCB2MS54eXp3
Ci1tb3YgbzEueHl6dywgdjEueHl6dwotbW92IG8yLnh5encsIHYxLnh5encKLW1vdiBvMy54eXp3
LCB2MS54eXp3Ci1tb3YgbzQueHl6dywgdjEueHl6dwotbW92IG81Lnh5encsIHYxLnh5encKLW1v
diBvNi54eXp3LCB2MS54eXp3Ci1tb3YgbzcueHl6dywgdjEueHl6dwotcmV0IAotLy8gQXBwcm94
aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdf
UFNfQ2xlYXJTaW50W10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjA2LCAxMjksIAot
ICAgIDI1NSwgMjM2LCAxMTUsIDIxNywgMjE2LCAgMjAsIAotICAgICA4OCwgIDQ3LCAxNTUsIDE5
NSwgMTQ1LCAxNzksIAotICAgIDE4MywgIDI4LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA4
OCwgICAzLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAw
LCAgIDAsIAotICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjI0LCAgIDAsIAotICAgICAgMCwgICAw
LCAxODgsICAgMSwgICAwLCAgIDAsIAotICAgIDIyMCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgs
IAotICAgICA2OSwgIDcwLCAgODAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMSwg
ICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3LCAxMDUsIAotICAgICA5OSwg
MTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIAotICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAg
MzIsIAotICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIAotICAgIDEwNCwgIDk3LCAx
MDAsIDEwMSwgMTE0LCAgMzIsIAotICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIAot
ICAgIDEwMSwgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsIAotICAgICA0NiwgIDU3LCAgNTQsICA0
OCwgIDQ4LCAgNDYsIAotICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIAotICAgIDE3
MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIAotICAgICA3NiwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUs
ICAgMCwgICAwLCAgIDAsIAotICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIAotICAgICA4Mywg
IDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIAotICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAg
IDAsIAotICAgICA2NywgIDc5LCAgNzYsICA3OSwgIDgyLCAgIDAsIAotICAgIDE3MSwgMTcxLCAg
NzksICA4MywgIDcxLCAgNzgsIAotICAgIDIxMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAw
LCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAs
ICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwg
ICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAzLCAg
IDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAg
IDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAg
MCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA1
LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAw
LCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUs
ICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICA3LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwg
ICA3LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgICA4Mywg
IDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIAotICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAx
NzEsIAotICAgICA4MywgIDcyLCAgNjgsICA4MiwgIDI0LCAgIDEsIAotICAgICAgMCwgICAwLCAg
NjQsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgICAwLCAgIDAsICAgMCwgIDk4LCAgIDgsIAot
ICAgICAgMCwgICAzLCAyNDIsICAxNiwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAg
MCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2
LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAz
LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAs
IAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMywgICAwLCAgIDAs
ICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAg
ICAgNCwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwg
IDE2LCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwg
ICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgNiwgICAwLCAgIDAsICAgMCwgMTAxLCAg
IDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgNywgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIAotICAgICAxNiwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIAotICAgICAx
NiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAx
LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgIDI0MiwgIDMy
LCAgMTYsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAzMCwgIDE2LCAgIDAs
IAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAyNDIs
ICAzMiwgIDE2LCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIAotICAg
ICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwg
MjQyLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwg
IDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAg
IDUsIAotICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAg
NzAsICAzMCwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAot
ICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgNiwgICAwLCAgIDAsICAg
MCwgIDcwLCAgMzAsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1
NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDcsICAgMCwgICAw
LCAgIDAsIAotICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAw
LCAgNjIsICAgMCwgICAwLCAgIDEsIAotICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDksICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDksICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQg
YnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8v
DQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAg
ICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIENPTE9SICAgICAgICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgICAgaW50ICAgeHl6dw0KKy8vDQorLy8NCisvLyBP
dXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8g
U1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBp
bnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDEgICB4eXp3ICAgICAgICAx
ICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDIg
ICB4eXp3ICAgICAgICAyICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAg
ICAgICAgICAgICAgIDMgICB4eXp3ICAgICAgICAzICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQor
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAgICAgICA0ICAgVEFSR0VUICAg
ICBpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDUgICB4eXp3ICAgICAg
ICA1ICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAg
IDYgICB4eXp3ICAgICAgICA2ICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VU
ICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFSR0VUICAgICBpbnQgICB4eXp3
DQorLy8NCitwc180XzANCitkY2xfaW5wdXRfcHMgY29uc3RhbnQgdjEueHl6dw0KK2RjbF9vdXRw
dXQgbzAueHl6dw0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK2RjbF9vdXRwdXQgbzIueHl6dw0KK2Rj
bF9vdXRwdXQgbzMueHl6dw0KK2RjbF9vdXRwdXQgbzQueHl6dw0KK2RjbF9vdXRwdXQgbzUueHl6
dw0KK2RjbF9vdXRwdXQgbzYueHl6dw0KK2RjbF9vdXRwdXQgbzcueHl6dw0KK21vdiBvMC54eXp3
LCB2MS54eXp3DQorbW92IG8xLnh5encsIHYxLnh5encNCittb3YgbzIueHl6dywgdjEueHl6dw0K
K21vdiBvMy54eXp3LCB2MS54eXp3DQorbW92IG80Lnh5encsIHYxLnh5encNCittb3YgbzUueHl6
dywgdjEueHl6dw0KK21vdiBvNi54eXp3LCB2MS54eXp3DQorbW92IG83Lnh5encsIHYxLnh5encN
CityZXQgDQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5k
aWYNCisNCitjb25zdCBCWVRFIGdfUFNfQ2xlYXJTaW50W10gPQ0KK3sNCisgICAgIDY4LCAgODgs
ICA2NiwgIDY3LCAyMDYsIDEyOSwgDQorICAgIDI1NSwgMjM2LCAxMTUsIDIxNywgMjE2LCAgMjAs
IA0KKyAgICAgODgsICA0NywgMTU1LCAxOTUsIDE0NSwgMTc5LCANCisgICAgMTgzLCAgMjgsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4OCwgICAzLCAgIDAsICAgMCwgICA1LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTQwLCAgIDAsICAgMCwg
ICAwLCAyMjQsICAgMCwgDQorICAgICAgMCwgICAwLCAxODgsICAgMSwgICAwLCAgIDAsIA0KKyAg
ICAyMjAsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA4MCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjgs
ICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEs
IDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIsICA3
NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAz
MiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDExNCwg
IDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0Niwg
DQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDcz
LCAgODMsICA3MSwgIDc4LCANCisgICAgIDc2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDY4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgIDE1LCAgIDAsICAgMCwgDQorICAgICA4Mywg
IDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIA0KKyAgICAgNzMsICA4NCwgIDczLCAgNzksICA3OCwg
ICAwLCANCisgICAgIDY3LCAgNzksICA3NiwgIDc5LCAgODIsICAgMCwgDQorICAgIDE3MSwgMTcx
LCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAyMTIsICAgMCwgICAwLCAgIDAsICAgOCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAg
MjAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAw
LCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAz
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAg
MCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwg
ICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAw
LCAgIDYsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAy
MDAsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAgNjUs
ICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMsICA3
MiwgIDY4LCAgODIsICAyNCwgICAxLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA3MCwgICAwLCAgIDAsICAgMCwgIDk4LCAgIDgsIA0KKyAgICAgIDAsICAgMywg
MjQyLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwg
DQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAg
MzIsICAxNiwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAg
ICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAs
IDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAg
NCwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAx
NiwgICAwLCANCisgICAgICA1LCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwg
ICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDYsICAgMCwgICAwLCAgIDAsIDEwMSwg
ICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgNywgICAw
LCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgDQorICAgICAxNiwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDI0MiwgIDMyLCAN
CisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDMwLCAgMTYs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisg
ICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAz
MCwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAg
ICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwg
IDcwLCAgMzAsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0
LCAgIDAsICAgMCwgICA1LCAyNDIsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDQsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAzMCwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICA1LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMzAsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAs
IA0KKyAgICAgIDYsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCANCisgICAgIDE2LCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIA0K
KyAgICAgMTYsICAgMCwgICA3LCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgMzAsICAxNiwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAg
ICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgOSwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICA5LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyc2lu
dDExdnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW50MTF2cy5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW50MTF2cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEzMCArMSwxMzAgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5
IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0v
LwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LQotLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAwICAgICBOT05F
ICAgZmxvYXQgICB4eXogCi0vLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDEgICAgIE5PTkUgICAgIGludCAgIHh5encKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVy
ZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lz
VmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAg
ICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4eXp3Ci0vLyBDT0xP
UiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICAgIGludCAg
IHh5encKLS8vCi12c180XzAKLWRjbF9pbnB1dCB2MC54eXoKLWRjbF9pbnB1dCB2MS54eXp3Ci1k
Y2xfb3V0cHV0X3NpdiBvMC54eXp3LCBwb3NpdGlvbgotZGNsX291dHB1dCBvMS54eXp3Ci1tb3Yg
bzAueHl6LCB2MC54eXp4Ci1tb3YgbzAudywgbCgxLjAwMDAwMCkKLW1vdiBvMS54eXp3LCB2MS54
eXp3Ci1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2Vu
ZGlmCi0KLWNvbnN0IEJZVEUgZ19WU19DbGVhclNpbnRbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2
NiwgIDY3LCAgMjAsIDI0MCwgCi0gICAgIDg1LCAxMzYsIDI1NSwgMTgxLCAyNTMsIDEwMywgCi0g
ICAgMjA3LCAxODEsIDEyMiwgMTA2LCAgOTIsICAyNSwgCi0gICAgMjI4LCAgODksICAgMSwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDQ4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAw
LCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA0OCwgICAxLCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDEs
ICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAg
MjU0LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAg
NzcsIDEwNSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAg
MzIsICA0MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4
MywgCi0gICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEw
OSwgMTEyLCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0g
ICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2
LCAgNTIsICAgMCwgCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgCi0gICAgIDcy
LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgNywgICA3LCAgIDAsICAgMCwgCi0gICAgIDY1LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNSwgIDE1LCAg
IDAsICAgMCwgCi0gICAgIDgwLCAgNzksICA4MywgIDczLCAgODQsICA3MywgCi0gICAgIDc5LCAg
NzgsICAgMCwgIDY3LCAgNzksICA3NiwgCi0gICAgIDc5LCAgODIsICAgMCwgMTcxLCAgNzksICA4
MywgCi0gICAgIDcxLCAgNzgsICA3NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAsICAg
MCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAw
LCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwg
Ci0gICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgCi0gICAgIDc4LCAgIDAsICA2Nywg
IDc5LCAgNzYsICA3OSwgCi0gICAgIDgyLCAgIDAsIDE3MSwgMTcxLCAgODMsICA3MiwgCi0gICAg
IDY4LCAgODIsIDEyNCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY0LCAgIDAsICAgMSwgICAwLCAg
MzEsICAgMCwgCi0gICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAgMywgCi0gICAgMTE0LCAg
MTYsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAsICAg
MywgCi0gICAgMjQyLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsIDEw
MywgICAwLCAgIDAsICAgNCwgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTAxLCAgIDAsICAgMCwgICAz
LCAyNDIsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0
LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDcwLCAgMTgsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgMTMwLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDEyOCwg
IDYzLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDYyLCAgIDAsICAgMCwgICAxLCAgODMsICA4NCwgCi0gICAgIDY1LCAg
ODQsIDExNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQor
Ly8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2
MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1h
dCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBQT1NJVElPTiAgICAgICAgICAgICAgICAgMCAg
IHh5eiAgICAgICAgIDAgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLyBDT0xPUiAgICAgICAg
ICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICAgIGludCAgIHh5encNCisv
Lw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
ICAgIFBPUyAgIGZsb2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAgICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMSAgICAgTk9ORSAgICAgaW50ICAgeHl6dw0KKy8vDQordnNfNF8wDQorZGNs
X2lucHV0IHYwLnh5eg0KK2RjbF9pbnB1dCB2MS54eXp3DQorZGNsX291dHB1dF9zaXYgbzAueHl6
dywgcG9zaXRpb24NCitkY2xfb3V0cHV0IG8xLnh5encNCittb3YgbzAueHl6LCB2MC54eXp4DQor
bW92IG8wLncsIGwoMS4wMDAwMDApDQorbW92IG8xLnh5encsIHYxLnh5encNCityZXQgDQorLy8g
QXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25z
dCBCWVRFIGdfVlNfQ2xlYXJTaW50W10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAg
MjAsIDI0MCwgDQorICAgICA4NSwgMTM2LCAyNTUsIDE4MSwgMjUzLCAxMDMsIA0KKyAgICAyMDcs
IDE4MSwgMTIyLCAxMDYsICA5MiwgIDI1LCANCisgICAgMjI4LCAgODksICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICA0OCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNDgsICAgMSwgICAwLCAgIDAsIA0KKyAgICAxODAsICAgMSwg
ICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQor
ICAgIDI1NCwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAg
IDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAg
IDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYs
ICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2
NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0
NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgDQorICAgICA0OSwg
IDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwg
IDc4LCANCisgICAgIDcyLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA3LCAgIDcsICAgMCwgICAwLCAN
CisgICAgIDY1LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDAsICAxNSwgIDE1LCAgIDAsICAgMCwgDQorICAgICA4MCwgIDc5LCAgODMsICA3
MywgIDg0LCAgNzMsIA0KKyAgICAgNzksICA3OCwgICAwLCAgNjcsICA3OSwgIDc2LCANCisgICAg
IDc5LCAgODIsICAgMCwgMTcxLCAgNzksICA4MywgDQorICAgICA3MSwgIDc4LCAgNzYsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAw
LCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3
MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3OCwgICAwLCAgNjcsICA3OSwgIDc2LCAgNzksIA0K
KyAgICAgODIsICAgMCwgMTcxLCAxNzEsICA4MywgIDcyLCANCisgICAgIDY4LCAgODIsIDEyNCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA2NCwgICAwLCAgIDEsICAgMCwgIDMxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDk1LCAgIDAsICAgMCwgICAzLCANCisgICAgMTE0LCAgMTYsICAxNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgOTUsICAgMCwgICAwLCAgIDMsIA0KKyAgICAy
NDIsICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsIDEwMywgICAwLCAg
IDAsICAgNCwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTAxLCAgIDAsICAgMCwgICAzLCAyNDIs
ICAzMiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAg
MCwgICAwLCAgIDUsIDExNCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA3MCwgIDE4LCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgMTMwLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTI4
LCAgNjMsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDYyLCAgIDAsICAgMCwgICAxLCAgODMsICA4NCwgDQorICAg
ICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
NCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9jbGVhcnVpbnQxMXBzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFydWludDExcHMuaAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFydWludDExcHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwxOTUgKzEsMTk1IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQg
KFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vCi0vLyBJ
bnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BP
U0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAg
ICAgIAotLy8gQ09MT1IgICAgICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAxICAgICBO
T05FICAgIHVpbnQgICB4eXp3Ci0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICB1aW50ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAg
ICAgICAgICAgIDEgICB4eXp3ICAgICAgICAxICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0vLyBT
Vl9UQVJHRVQgICAgICAgICAgICAgICAgMiAgIHh5encgICAgICAgIDIgICBUQVJHRVQgICAgdWlu
dCAgIHh5encKLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAzICAgeHl6dyAgICAgICAgMyAg
IFRBUkdFVCAgICB1aW50ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4
eXp3ICAgICAgICA0ICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0vLyBTVl9UQVJHRVQgICAgICAg
ICAgICAgICAgNSAgIHh5encgICAgICAgIDUgICBUQVJHRVQgICAgdWludCAgIHh5encKLS8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICA2ICAgeHl6dyAgICAgICAgNiAgIFRBUkdFVCAgICB1aW50
ICAgeHl6dwotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAg
VEFSR0VUICAgIHVpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfaW5wdXRfcHMgY29uc3RhbnQg
djEueHl6dwotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfb3V0cHV0IG8xLnh5encKLWRjbF9vdXRw
dXQgbzIueHl6dwotZGNsX291dHB1dCBvMy54eXp3Ci1kY2xfb3V0cHV0IG80Lnh5encKLWRjbF9v
dXRwdXQgbzUueHl6dwotZGNsX291dHB1dCBvNi54eXp3Ci1kY2xfb3V0cHV0IG83Lnh5encKLW1v
diBvMC54eXp3LCB2MS54eXp3Ci1tb3YgbzEueHl6dywgdjEueHl6dwotbW92IG8yLnh5encsIHYx
Lnh5encKLW1vdiBvMy54eXp3LCB2MS54eXp3Ci1tb3YgbzQueHl6dywgdjEueHl6dwotbW92IG81
Lnh5encsIHYxLnh5encKLW1vdiBvNi54eXp3LCB2MS54eXp3Ci1tb3YgbzcueHl6dywgdjEueHl6
dwotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRp
ZgotCi1jb25zdCBCWVRFIGdfUFNfQ2xlYXJVaW50W10gPQotewotICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgMTE3LCAyMDksIAotICAgIDE0MiwgMTU5LCAgNjUsICAyOSwgMjEyLCAyMDYsIAotICAg
IDI0MiwgIDM3LCAxNjksICA1OCwgIDM1LCAyMzYsIAotICAgIDIyMiwgIDczLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICA4OCwgICAzLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAotICAgIDE0MCwgICAwLCAgIDAsICAgMCwgMjI0LCAg
IDAsIAotICAgICAgMCwgICAwLCAxODgsICAgMSwgICAwLCAgIDAsIAotICAgIDIyMCwgICAyLCAg
IDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAgODAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1
NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3
LCAxMDUsIAotICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIAotICAgIDExNiwgIDMy
LCAgNDAsICA4MiwgIDQxLCAgMzIsIAotICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMs
IAotICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIAotICAgICA2NywgMTExLCAxMDks
IDExMiwgMTA1LCAxMDgsIAotICAgIDEwMSwgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsIAotICAg
ICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsIAotICAgICA0OSwgIDU0LCAgNTEsICA1Niwg
IDUyLCAgIDAsIAotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIAotICAgICA3Niwg
ICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAg
IDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgICA2OCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAw
LCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIAotICAgICA3MywgIDg0
LCAgNzMsICA3OSwgIDc4LCAgIDAsIAotICAgICA2NywgIDc5LCAgNzYsICA3OSwgIDgyLCAgIDAs
IAotICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIAotICAgIDIxMiwgICAwLCAgIDAs
ICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAg
IDIwMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAot
ICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAg
MCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAz
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAw
LCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAs
IAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwg
ICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAg
IDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICAwLCAgIDAsICAg
MCwgICA3LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICA3LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAw
LCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIAotICAgICA3MSwgIDY5
LCAgODQsICAgMCwgMTcxLCAxNzEsIAotICAgICA4MywgIDcyLCAgNjgsICA4MiwgIDI0LCAgIDEs
IAotICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgICAwLCAgIDAs
ICAgMCwgIDk4LCAgIDgsIAotICAgICAgMCwgICAzLCAyNDIsICAxNiwgIDE2LCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwg
ICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAg
IDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMiwgICAwLCAg
IDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAot
ICAgICAgMywgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAz
MiwgIDE2LCAgIDAsIAotICAgICAgNCwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAg
MCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwgMTAx
LCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgNiwgICAw
LCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAs
IAotICAgICAgNywgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAyNDIs
ICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIAotICAg
ICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwg
MjQyLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwg
IDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAg
IDUsIAotICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAg
NzAsICAzMCwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAot
ICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAg
MCwgIDcwLCAgMzAsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1
NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDQsICAgMCwgICAw
LCAgIDAsIAotICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAw
LCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICA1LCAgIDAs
IAotICAgICAgMCwgICAwLCAgNzAsICAzMCwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAg
ICAgNiwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIAotICAgICAxNiwg
ICAwLCAgIDcsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIAotICAgICA4MywgIDg0LCAg
NjUsICA4NCwgMTE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDksICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDksICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQor
Ly8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2
LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAg
Rm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIENPTE9SICAg
ICAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgeHl6
dw0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAg
IDEgICB4eXp3ICAgICAgICAxICAgVEFSR0VUICAgIHVpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VU
ICAgICAgICAgICAgICAgIDIgICB4eXp3ICAgICAgICAyICAgVEFSR0VUICAgIHVpbnQgICB4eXp3
DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDMgICB4eXp3ICAgICAgICAzICAgVEFSR0VU
ICAgIHVpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDQgICB4eXp3ICAg
ICAgICA0ICAgVEFSR0VUICAgIHVpbnQgICB4eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAg
ICAgIDUgICB4eXp3ICAgICAgICA1ICAgVEFSR0VUICAgIHVpbnQgICB4eXp3DQorLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDYgICB4eXp3ICAgICAgICA2ICAgVEFSR0VUICAgIHVpbnQgICB4
eXp3DQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDcgICB4eXp3ICAgICAgICA3ICAgVEFS
R0VUICAgIHVpbnQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfaW5wdXRfcHMgY29uc3RhbnQg
djEueHl6dw0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF9vdXRwdXQgbzEueHl6dw0KK2RjbF9v
dXRwdXQgbzIueHl6dw0KK2RjbF9vdXRwdXQgbzMueHl6dw0KK2RjbF9vdXRwdXQgbzQueHl6dw0K
K2RjbF9vdXRwdXQgbzUueHl6dw0KK2RjbF9vdXRwdXQgbzYueHl6dw0KK2RjbF9vdXRwdXQgbzcu
eHl6dw0KK21vdiBvMC54eXp3LCB2MS54eXp3DQorbW92IG8xLnh5encsIHYxLnh5encNCittb3Yg
bzIueHl6dywgdjEueHl6dw0KK21vdiBvMy54eXp3LCB2MS54eXp3DQorbW92IG80Lnh5encsIHYx
Lnh5encNCittb3YgbzUueHl6dywgdjEueHl6dw0KK21vdiBvNi54eXp3LCB2MS54eXp3DQorbW92
IG83Lnh5encsIHYxLnh5encNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9u
IHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfQ2xlYXJVaW50W10gPQ0K
K3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMTcsIDIwOSwgDQorICAgIDE0MiwgMTU5LCAg
NjUsICAyOSwgMjEyLCAyMDYsIA0KKyAgICAyNDIsICAzNywgMTY5LCAgNTgsICAzNSwgMjM2LCAN
CisgICAgMjIyLCAgNzMsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4OCwgICAzLCAgIDAs
ICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMTQwLCAgIDAsICAgMCwgICAwLCAyMjQsICAgMCwgDQorICAgICAgMCwgICAwLCAxODgsICAg
MSwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAg
IDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAw
LCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAx
MTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAg
MzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcs
IDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgs
IA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1
NCwgIDQ4LCAgNDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0K
KyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisgICAgIDc2LCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgNTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgIDE1LCAgIDAs
ICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIA0KKyAgICAgNzMsICA4
NCwgIDczLCAgNzksICA3OCwgICAwLCANCisgICAgIDY3LCAgNzksICA3NiwgIDc5LCAgODIsICAg
MCwgDQorICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAyMTIsICAgMCwg
ICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwg
DQorICAgIDIwMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAs
ICAgMCwgICAwLCANCisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwg
ICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAw
LCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAN
CisgICAgMjAwLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCANCisg
ICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICAwLCAgIDAsICAg
MCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAyMDAsICAgMCwgICAwLCAgIDAsICAgNywgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA3
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAg
ODYsICA5NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAx
NzEsIA0KKyAgICAgODMsICA3MiwgIDY4LCAgODIsICAyNCwgICAxLCANCisgICAgICAwLCAgIDAs
ICA2NCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAgIDAsICAgMCwgIDk4LCAgIDgs
IA0KKyAgICAgIDAsICAgMywgMjQyLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAg
MCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0Miwg
IDMyLCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAw
LCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAg
MTYsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICA1LCAgIDAsICAgMCwgICAwLCAxMDEs
ICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDYsICAg
MCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAg
MCwgDQorICAgICAgNywgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwg
MjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwg
DQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAw
LCAgIDUsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA3MCwgIDMwLCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAg
IDAsICAgMCwgICA1LCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDIsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNzAsICAzMCwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
ICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAg
MywgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAyNDIsICAzMiwgDQorICAgICAxNiwg
ICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAzMCwgIDE2LCAgIDAsICAgMSwg
ICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDI0MiwgIDMy
LCAgMTYsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMzAsICAxNiwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAy
NDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDYsICAgMCwgICAwLCAgIDAsICA3MCwgIDMwLCAN
CisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAs
ICAgNSwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICA3LCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDcwLCAgMzAsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIsICAg
MCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgOSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA5LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFydWludDExdnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQv
Y2xlYXJ1aW50MTF2cy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xl
YXJ1aW50MTF2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzMCArMSwxMzAgQEAKLSNpZiAwCi0v
LwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4z
Ljk2MDAuMTYzODQKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAg
IFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eXog
ICAgICAgICAwICAgICBOT05FICAgZmxvYXQgICB4eXogCi0vLyBDT0xPUiAgICAgICAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUgICAgdWludCAgIHh5encKLS8vCi0vLwot
Ly8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8g
U1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxv
YXQgICB4eXp3Ci0vLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEg
ICAgIE5PTkUgICAgdWludCAgIHh5encKLS8vCi12c180XzAKLWRjbF9pbnB1dCB2MC54eXoKLWRj
bF9pbnB1dCB2MS54eXp3Ci1kY2xfb3V0cHV0X3NpdiBvMC54eXp3LCBwb3NpdGlvbgotZGNsX291
dHB1dCBvMS54eXp3Ci1tb3YgbzAueHl6LCB2MC54eXp4Ci1tb3YgbzAudywgbCgxLjAwMDAwMCkK
LW1vdiBvMS54eXp3LCB2MS54eXp3Ci1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19WU19DbGVhclVpbnRbXSA9Ci17
Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgNjIsIDE5MSwgCi0gICAgIDUyLCAgOTUsICA2MCwg
IDk4LCAxOTMsICA3NSwgCi0gICAgMTk0LCAgMzYsIDE4NywgMTk0LCAgNTQsICAyNCwgCi0gICAg
MjMyLCAyMjQsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDQ4LCAgIDIsICAgMCwgICAwLCAg
IDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTQwLCAg
IDAsICAgMCwgICAwLCAyMjAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0OCwgICAxLCAgIDAsICAg
MCwgCi0gICAgMTgwLCAgIDEsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsICA4
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgCi0gICAgMjU0LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDI4
LCAgIDAsICAgMCwgICAwLCAgNzcsIDEwNSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEs
IDEwMiwgCi0gICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYs
ICA4MywgIDc2LCAgMzIsICA4MywgCi0gICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwg
Ci0gICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwg
IDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAg
IDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAg
NzEsICA3OCwgCi0gICAgIDcyLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNywgICA3LCAgIDAsICAgMCwgCi0g
ICAgIDY1LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAw
LCAgIDAsICAxNSwgIDE1LCAgIDAsICAgMCwgCi0gICAgIDgwLCAgNzksICA4MywgIDczLCAgODQs
ICA3MywgCi0gICAgIDc5LCAgNzgsICAgMCwgIDY3LCAgNzksICA3NiwgCi0gICAgIDc5LCAgODIs
ICAgMCwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA3NiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA1Niwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
MTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4
MywgIDg2LCAgOTUsICA4MCwgCi0gICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgCi0g
ICAgIDc4LCAgIDAsICA2NywgIDc5LCAgNzYsICA3OSwgCi0gICAgIDgyLCAgIDAsIDE3MSwgMTcx
LCAgODMsICA3MiwgCi0gICAgIDY4LCAgODIsIDEyNCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY0
LCAgIDAsICAgMSwgICAwLCAgMzEsICAgMCwgCi0gICAgICAwLCAgIDAsICA5NSwgICAwLCAgIDAs
ICAgMywgCi0gICAgMTE0LCAgMTYsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA5NSwgICAwLCAgIDAsICAgMywgCi0gICAgMjQyLCAgMTYsICAxNiwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsIDEwMywgICAwLCAgIDAsICAgNCwgCi0gICAgMjQyLCAgMzIsICAxNiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAg
MTAxLCAgIDAsICAgMCwgICAzLCAyNDIsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgMTgsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgMTMwLCAgMzIsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsIDEyOCwgIDYzLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDUsIDI0MiwgIDMy
LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNzAsICAzMCwgCi0gICAgIDE2
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYyLCAgIDAsICAgMCwgICAxLCAgODMs
ICA4NCwgCi0gICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAK
LX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWdu
YXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBQT1NJVElPTiAg
ICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDAgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAN
CisvLyBDT0xPUiAgICAgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDEgICAgIE5PTkUg
ICAgdWludCAgIHh5encNCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8v
IE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9y
bWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6dw0KKy8vIENPTE9SICAgICAg
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgeHl6dw0K
Ky8vDQordnNfNF8wDQorZGNsX2lucHV0IHYwLnh5eg0KK2RjbF9pbnB1dCB2MS54eXp3DQorZGNs
X291dHB1dF9zaXYgbzAueHl6dywgcG9zaXRpb24NCitkY2xfb3V0cHV0IG8xLnh5encNCittb3Yg
bzAueHl6LCB2MC54eXp4DQorbW92IG8wLncsIGwoMS4wMDAwMDApDQorbW92IG8xLnh5encsIHYx
Lnh5encNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQN
CisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfVlNfQ2xlYXJVaW50W10gPQ0KK3sNCisgICAgIDY4
LCAgODgsICA2NiwgIDY3LCAgNjIsIDE5MSwgDQorICAgICA1MiwgIDk1LCAgNjAsICA5OCwgMTkz
LCAgNzUsIA0KKyAgICAxOTQsICAzNiwgMTg3LCAxOTQsICA1NCwgIDI0LCANCisgICAgMjMyLCAy
MjQsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA0OCwgICAyLCAgIDAsICAgMCwgICA1LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTQwLCAgIDAs
ICAgMCwgICAwLCAyMjAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDgsICAgMSwgICAwLCAgIDAs
IA0KKyAgICAxODAsICAgMSwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA4
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgNCwgDQorICAgIDI1NCwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAg
ICAgMjgsICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1
LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAg
NzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAx
MTQsICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEs
IDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgs
ICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3
MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisgICAgIDcyLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA3
LCAgIDcsICAgMCwgICAwLCANCisgICAgIDY1LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgIDE1LCAgIDAsICAgMCwgDQorICAg
ICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsIA0KKyAgICAgNzksICA3OCwgICAwLCAgNjcs
ICA3OSwgIDc2LCANCisgICAgIDc5LCAgODIsICAgMCwgMTcxLCAgNzksICA4MywgDQorICAgICA3
MSwgIDc4LCAgNzYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAg
OCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCAN
CisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3OCwgICAwLCAgNjcs
ICA3OSwgIDc2LCAgNzksIA0KKyAgICAgODIsICAgMCwgMTcxLCAxNzEsICA4MywgIDcyLCANCisg
ICAgIDY4LCAgODIsIDEyNCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2NCwgICAwLCAgIDEsICAg
MCwgIDMxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk1LCAgIDAsICAgMCwgICAzLCANCisgICAg
MTE0LCAgMTYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgOTUsICAgMCwg
ICAwLCAgIDMsIA0KKyAgICAyNDIsICAxNiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsIDEwMywgICAwLCAgIDAsICAgNCwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTAxLCAg
IDAsICAgMCwgICAzLCAyNDIsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDExNCwgIDMyLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgIDE4LCAgMTYsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgMTMwLCAgMzIsICAx
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgMTI4LCAgNjMsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUsIDI0Miwg
IDMyLCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIA0KKyAg
ICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYyLCAgIDAsICAgMCwgICAx
LCAgODMsICA4NCwgDQorICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaDJkMTF2cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhy
b3VnaDJkMTF2cy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Ro
cm91Z2gyZDExdnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzcgKzEsMTc3IEBACi0jaWYgMAot
Ly8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYu
My45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQg
ICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFBPU0lUSU9OICAgICAgICAgICAgICAgICAwICAgeHkg
ICAgICAgICAgMCAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIAotLy8gVEVYQ09PUkQgICAgICAgICAg
ICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0vLwotLy8K
LS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8v
IFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZs
b2F0ICAgeHl6dwotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAx
ICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0vLwotLy8KLS8vIFJ1bnRpbWUgZ2VuZXJhdGVkIGNv
bnN0YW50IG1hcHBpbmdzOgotLy8KLS8vIFRhcmdldCBSZWcgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ29uc3RhbnQgRGVzY3JpcHRpb24KLS8vIC0tLS0tLS0tLS0gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIGMwICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmVydGV4IFNoYWRlciBwb3NpdGlvbiBvZmZzZXQKLS8vCi0vLwot
Ly8gTGV2ZWw5IHNoYWRlciBieXRlY29kZToKLS8vCi0gICAgdnNfMl94Ci0gICAgZGVmIGMxLCAw
LCAxLCAwLCAwCi0gICAgZGNsX3RleGNvb3JkIHYwCi0gICAgZGNsX3RleGNvb3JkMSB2MQotICAg
IGFkZCBvUG9zLnh5LCB2MCwgYzAKLSAgICBtb3Ygb1Bvcy56dywgYzEueHl4eQotICAgIG1vdiBv
VDAueHksIHYxCi0KLS8vIGFwcHJveGltYXRlbHkgMyBpbnN0cnVjdGlvbiBzbG90cyB1c2VkCi12
c180XzAKLWRjbF9pbnB1dCB2MC54eQotZGNsX2lucHV0IHYxLnh5Ci1kY2xfb3V0cHV0X3NpdiBv
MC54eXp3LCBwb3NpdGlvbgotZGNsX291dHB1dCBvMS54eQotbW92IG8wLnh5LCB2MC54eXh4Ci1t
b3YgbzAuencsIGwoMCwwLDAsMS4wMDAwMDApCi1tb3YgbzEueHksIHYxLnh5eHgKLXJldCAKLS8v
IEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3Qg
QllURSBnX1ZTX1Bhc3N0aHJvdWdoMkRbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAy
MzAsICA5NSwgCi0gICAgMTE1LCAyMzAsICA2NSwgMjExLCAgNzQsICA4MiwgCi0gICAgMTQzLCAx
NzAsIDEwOSwgMTc1LCAgNjMsIDIxMCwgCi0gICAgIDE0LCAyMjksICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgMjE2LCAgIDIsICAgMCwgICAwLCAgIDYsICAgMCwgCi0gICAgICAwLCAgIDAsICA1
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgMjAwLCAgIDAsICAgMCwgICAwLCAgODgsICAgMSwgCi0g
ICAgICAwLCAgIDAsIDIxMiwgICAxLCAgIDAsICAgMCwgCi0gICAgIDQ0LCAgIDIsICAgMCwgICAw
LCAxMjgsICAgMiwgCi0gICAgICAwLCAgIDAsICA2NSwgMTExLCAxMTAsICA1NywgCi0gICAgMTM2
LCAgIDAsICAgMCwgICAwLCAxMzYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTQs
IDI1NSwgCi0gICAgIDk2LCAgIDAsICAgMCwgICAwLCAgNDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgMzYsICAgMCwgCi0gICAgICAwLCAgIDAsICAzNiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDM2LCAgIDAsICAgMCwgICAwLCAgMzYsICAgMCwgCi0gICAgICAxLCAgIDAsICAzNiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAyLCAyNTQsIDI1NSwgCi0gICAg
IDgxLCAgIDAsICAgMCwgICA1LCAgIDEsICAgMCwgCi0gICAgIDE1LCAxNjAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDEyOCwgIDYzLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDUsICAg
MCwgCi0gICAgICAwLCAxMjgsICAgMCwgICAwLCAgMTUsIDE0NCwgCi0gICAgIDMxLCAgIDAsICAg
MCwgICAyLCAgIDUsICAgMCwgCi0gICAgICAxLCAxMjgsICAgMSwgICAwLCAgMTUsIDE0NCwgCi0g
ICAgICAyLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgCi0gICAgICAzLCAxOTIsICAgMCwgICAw
LCAyMjgsIDE0NCwgCi0gICAgICAwLCAgIDAsIDIyOCwgMTYwLCAgIDEsICAgMCwgCi0gICAgICAw
LCAgIDIsICAgMCwgICAwLCAgMTIsIDE5MiwgCi0gICAgICAxLCAgIDAsICA2OCwgMTYwLCAgIDEs
ICAgMCwgCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDMsIDIyNCwgCi0gICAgICAxLCAgIDAs
IDIyOCwgMTQ0LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICA4MywgIDcyLCAgNjgsICA4Miwg
Ci0gICAgMTM2LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAxLCAgIDAsICAzNCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDk1LCAgIDAsICAgMCwgICAzLCAgNTAsICAxNiwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDk1LCAgIDAsICAgMCwgICAzLCAg
NTAsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTAzLCAg
IDAsICAgMCwgICA0LCAyNDIsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsICA1
MCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0g
ICAgICAwLCAgIDUsICA1MCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNzAsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0
LCAgIDAsICAgMCwgICA4LCAxOTQsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgMTI4LCAgNjMsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgIDUwLCAgMzIsICAxNiwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4MywgIDg0LCAg
NjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgyLCAg
NjgsICA2OSwgIDcwLCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAy
OCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDQsIDI1NCwgMjU1LCAgIDAsICAgMSwgCi0g
ICAgICAwLCAgIDAsICAyOCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDc3LCAxMDUsICA5OSwgMTE0
LCAxMTEsIDExNSwgCi0gICAgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgCi0gICAgIDQx
LCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgCi0gICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAs
IDEwMSwgCi0gICAgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgCi0gICAgMTA1LCAxMDgs
IDEwMSwgMTE0LCAgMzIsICA1NCwgCi0gICAgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwg
Ci0gICAgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgCi0gICAgIDUyLCAgIDAsIDE3MSwg
MTcxLCAgNzMsICA4MywgCi0gICAgIDcxLCAgNzgsICA3NiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MywgCi0gICAgICAwLCAgIDAsICA2NSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgCi0gICAgICAwLCAgIDAsICA4MCwgIDc5
LCAgODMsICA3MywgCi0gICAgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsICA4NCwgCi0gICAgIDY5
LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgCi0gICAgIDY4LCAgIDAsIDE3MSwgMTcxLCAgNzks
ICA4MywgCi0gICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDMsICAxMiwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4
MCwgCi0gICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgCi0gICAgIDc4LCAgIDAsICA4
NCwgIDY5LCAgODgsICA2NywgCi0gICAgIDc5LCAgNzksICA4MiwgIDY4LCAgIDAsIDE3MSwgCi0g
ICAgMTcxLCAxNzEKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAo
UikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisv
LyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisv
LyBQT1NJVElPTiAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDAgICAgIE5PTkUgICBm
bG9hdCAgIHh5ICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAg
IDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6dw0KKy8v
IFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZs
b2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBSdW50aW1lIGdlbmVyYXRlZCBjb25zdGFudCBtYXBw
aW5nczoNCisvLw0KKy8vIFRhcmdldCBSZWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q29uc3RhbnQgRGVzY3JpcHRpb24NCisvLyAtLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorLy8gYzAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWZXJ0ZXggU2hhZGVyIHBvc2l0aW9uIG9mZnNldA0KKy8vDQorLy8NCisvLyBM
ZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQorICAgIHZzXzJfeA0KKyAgICBkZWYgYzEsIDAs
IDEsIDAsIDANCisgICAgZGNsX3RleGNvb3JkIHYwDQorICAgIGRjbF90ZXhjb29yZDEgdjENCisg
ICAgYWRkIG9Qb3MueHksIHYwLCBjMA0KKyAgICBtb3Ygb1Bvcy56dywgYzEueHl4eQ0KKyAgICBt
b3Ygb1QwLnh5LCB2MQ0KKw0KKy8vIGFwcHJveGltYXRlbHkgMyBpbnN0cnVjdGlvbiBzbG90cyB1
c2VkDQordnNfNF8wDQorZGNsX2lucHV0IHYwLnh5DQorZGNsX2lucHV0IHYxLnh5DQorZGNsX291
dHB1dF9zaXYgbzAueHl6dywgcG9zaXRpb24NCitkY2xfb3V0cHV0IG8xLnh5DQorbW92IG8wLnh5
LCB2MC54eXh4DQorbW92IG8wLnp3LCBsKDAsMCwwLDEuMDAwMDAwKQ0KK21vdiBvMS54eSwgdjEu
eHl4eA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0K
KyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19WU19QYXNzdGhyb3VnaDJEW10gPQ0KK3sNCisgICAg
IDY4LCAgODgsICA2NiwgIDY3LCAyMzAsICA5NSwgDQorICAgIDExNSwgMjMwLCAgNjUsIDIxMSwg
IDc0LCAgODIsIA0KKyAgICAxNDMsIDE3MCwgMTA5LCAxNzUsICA2MywgMjEwLCANCisgICAgIDE0
LCAyMjksICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIxNiwgICAyLCAgIDAsICAgMCwgICA2
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgMjAwLCAg
IDAsICAgMCwgICAwLCAgODgsICAgMSwgDQorICAgICAgMCwgICAwLCAyMTIsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAgNDQsICAgMiwgICAwLCAgIDAsIDEyOCwgICAyLCANCisgICAgICAwLCAgIDAs
ICA2NSwgMTExLCAxMTAsICA1NywgDQorICAgIDEzNiwgICAwLCAgIDAsICAgMCwgMTM2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCANCisgICAgIDk2LCAgIDAsICAg
MCwgICAwLCAgNDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDM2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDM2LCAgIDAsICAgMCwgICAwLCANCisgICAgIDM2LCAgIDAsICAgMCwg
ICAwLCAgMzYsICAgMCwgDQorICAgICAgMSwgICAwLCAgMzYsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAxLCAgIDIsIDI1NCwgMjU1LCANCisgICAgIDgxLCAgIDAsICAgMCwgICA1
LCAgIDEsICAgMCwgDQorICAgICAxNSwgMTYwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgMTI4LCAgNjMsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAzMSwgICAwLCAgIDAsICAgMiwgICA1LCAgIDAsIA0KKyAgICAgIDAs
IDEyOCwgICAwLCAgIDAsICAxNSwgMTQ0LCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDUs
ICAgMCwgDQorICAgICAgMSwgMTI4LCAgIDEsICAgMCwgIDE1LCAxNDQsIA0KKyAgICAgIDIsICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCANCisgICAgICAzLCAxOTIsICAgMCwgICAwLCAyMjgsIDE0
NCwgDQorICAgICAgMCwgICAwLCAyMjgsIDE2MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMiwg
ICAwLCAgIDAsICAxMiwgMTkyLCANCisgICAgICAxLCAgIDAsICA2OCwgMTYwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAzLCAyMjQsIA0KKyAgICAgIDEsICAgMCwgMjI4
LCAxNDQsIDI1NSwgMjU1LCANCisgICAgICAwLCAgIDAsICA4MywgIDcyLCAgNjgsICA4MiwgDQor
ICAgIDEzNiwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgIDM0LCAg
IDAsICAgMCwgICAwLCANCisgICAgIDk1LCAgIDAsICAgMCwgICAzLCAgNTAsICAxNiwgDQorICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgOTUsICAgMCwgICAwLCAgIDMs
ICA1MCwgIDE2LCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEw
MywgICAwLCAgIDAsICAgNCwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwg
ICAzLCAgNTAsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwg
ICAwLCANCisgICAgICAwLCAgIDUsICA1MCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAzMiwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMjgsICA2MywgIDU0LCAgIDAsICAgMCwgICA1LCANCisg
ICAgIDUwLCAgMzIsICAxNiwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAx
NiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCANCisgICAg
ICAwLCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwgDQorICAgIDExNiwgICAwLCAgIDAsICAgMCwg
ICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDgyLCAgNjgsICA2OSwgIDcwLCAg
ODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAyOCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICA0LCAyNTQsIDI1NSwgICAwLCAgIDEsIA0KKyAgICAgIDAsICAg
MCwgIDI4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIDEx
NSwgDQorICAgIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsIA0KKyAgICAgNDEsICAzMiwg
IDcyLCAgNzYsICA4MywgIDc2LCANCisgICAgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwg
DQorICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KKyAgICAxMDUsIDEwOCwgMTAx
LCAxMTQsICAzMiwgIDU0LCANCisgICAgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwgDQor
ICAgICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsIA0KKyAgICAgNTIsICAgMCwgMTcxLCAx
NzEsICA3MywgIDgzLCANCisgICAgIDcxLCAgNzgsICA3NiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MywgICAzLCANCisgICAgICAwLCAgIDAsICA2NSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAw
LCAgODAsICA3OSwgIDgzLCAgNzMsIA0KKyAgICAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgIDg0
LCANCisgICAgIDY5LCAgODgsICA2NywgIDc5LCAgNzksICA4MiwgDQorICAgICA2OCwgICAwLCAx
NzEsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDgwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY4LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgIDEyLCANCisgICAgICAw
LCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDcz
LCAgNzksIA0KKyAgICAgNzgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAg
NzksICA4MiwgIDY4LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxDQorfTsNCkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2gzZDExZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29t
cGlsZWQvcGFzc3Rocm91Z2gzZDExZ3MuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL3Bhc3N0aHJvdWdoM2QxMWdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkxICsxLDE5
MSBAQAotI2lmIDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRl
ciBDb21waWxlciA2LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJl
OgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNW
YWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAg
ICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgIHh5encKLS8vIExBWUVS
ICAgICAgICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAg
eCAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAyICAgICBO
T05FICAgZmxvYXQgICB4eXogCi0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6dwotLy8gU1ZfUkVOREVSVEFSR0VU
QVJSQVlJTkRFWCAgICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgIHggICAK
LS8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAg
IGZsb2F0ICAgeHl6IAotLy8KLWdzXzRfMAotZGNsX2lucHV0X3NpdiB2WzNdWzBdLnh5encsIHBv
c2l0aW9uCi1kY2xfaW5wdXQgdlszXVsxXS54Ci1kY2xfaW5wdXQgdlszXVsyXS54eXoKLWRjbF90
ZW1wcyAxCi1kY2xfaW5wdXRwcmltaXRpdmUgdHJpYW5nbGUgCi1kY2xfb3V0cHV0dG9wb2xvZ3kg
dHJpYW5nbGVzdHJpcCAKLWRjbF9vdXRwdXRfc2l2IG8wLnh5encsIHBvc2l0aW9uCi1kY2xfb3V0
cHV0X3NpdiBvMS54LCByZW5kZXJ0YXJnZXRfYXJyYXlfaW5kZXgKLWRjbF9vdXRwdXQgbzIueHl6
Ci1kY2xfbWF4b3V0IDMKLW1vdiByMC54LCBsKDApCi1sb29wIAotICBpZ2UgcjAueSwgcjAueCwg
bCgzKQotICBicmVha2NfbnogcjAueQotICBtb3YgbzAueHl6dywgdltyMC54ICsgMF1bMF0ueHl6
dwotICBtb3YgbzEueCwgdltyMC54ICsgMF1bMV0ueAotICBtb3YgbzIueHl6LCB2W3IwLnggKyAw
XVsyXS54eXp4Ci0gIGVtaXQgCi0gIGlhZGQgcjAueCwgcjAueCwgbCgxKQotZW5kbG9vcCAKLXJl
dCAKLS8vIEFwcHJveGltYXRlbHkgMTEgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0K
LWNvbnN0IEJZVEUgZ19HU19QYXNzdGhyb3VnaDNEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgIDkyLCAxMjksIAotICAgICA0MSwgMTcwLCAxMTQsICA3NSwgMTYwLCAyNTAsIAotICAg
ICA5NSwgMTYxLCAyMzAsIDE2MSwgIDExLCAgNzgsIAotICAgIDI1MiwgIDY1LCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICA3MiwgICAzLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAotICAgIDE0MCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsIAotICAgICAgMCwgICAwLCAxMzYsICAgMSwgICAwLCAgIDAsIAotICAgIDIwNCwgICAyLCAg
IDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAgODAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgICA4
MywgIDcxLCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc3
LCAxMDUsIAotICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIAotICAgIDExNiwgIDMy
LCAgNDAsICA4MiwgIDQxLCAgMzIsIAotICAgICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMs
IAotICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIAotICAgICA2NywgMTExLCAxMDks
IDExMiwgMTA1LCAxMDgsIAotICAgIDEwMSwgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsIAotICAg
ICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsIAotICAgICA0OSwgIDU0LCAgNTEsICA1Niwg
IDUyLCAgIDAsIAotICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIAotICAgIDEwOCwg
ICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAg
IDAsIAotICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAsIAotICAgICA5MiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMSwgICAw
LCAgIDAsIAotICAgICA5OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAyLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDcsICAgNywgICAwLCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUs
ICA4MCwgIDc5LCAgODMsIAotICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIAotICAg
ICA3NiwgIDY1LCAgODksICA2OSwgIDgyLCAgIDAsIAotICAgICA4NCwgIDY5LCAgODgsICA2Nywg
IDc5LCAgNzksIAotICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgIDc5LCAgODMsIAotICAgICA3MSwg
IDc4LCAxMjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAg
IDAsIAotICAgICAgMCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAgMCwgICAwLCAgOTIsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAx
LCAgMTQsIAotICAgICAgMCwgICAwLCAxMTgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDgsIAotICAgICAgMCwgICAwLCAgODMs
ICA4NiwgIDk1LCAgODAsIAotICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIAotICAg
ICA3OCwgICAwLCAgODMsICA4NiwgIDk1LCAgODIsIAotICAgICA2OSwgIDc4LCAgNjgsICA2OSwg
IDgyLCAgODQsIAotICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgNjUsIAotICAgICA4Miwg
IDgyLCAgNjUsICA4OSwgIDczLCAgNzgsIAotICAgICA2OCwgIDY5LCAgODgsICAgMCwgIDg0LCAg
NjksIAotICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIAotICAgICAgMCwgMTcxLCAg
ODMsICA3MiwgIDY4LCAgODIsIAotICAgICA2MCwgICAxLCAgIDAsICAgMCwgIDY0LCAgIDAsIAot
ICAgICAgMiwgICAwLCAgNzksICAgMCwgICAwLCAgIDAsIAotICAgICA5NywgICAwLCAgIDAsICAg
NSwgMjQyLCAgMTYsIAotICAgICAzMiwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgOTUsICAgMCwgICAw
LCAgIDQsIAotICAgICAxOCwgIDE2LCAgMzIsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA5NSwgICAwLCAgIDAsICAgNCwgMTE0LCAgMTYs
IAotICAgICAzMiwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAs
ICAgMCwgMTA0LCAgIDAsIAotICAgICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAg
ICA5MywgIDI0LCAgIDAsICAgMSwgIDkyLCAgNDAsIAotICAgICAgMCwgICAxLCAxMDMsICAgMCwg
ICAwLCAgIDQsIAotICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMywgICAwLCAgIDAsICAgNCwgIDE4LCAg
MzIsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwgICAwLCAg
IDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAxMTQsICAzMiwgIDE2LCAgIDAsIAot
ICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDk0LCAgIDAsIAotICAgICAgMCwgICAyLCAgIDMsICAg
MCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwgIDE4LCAgIDAsIAotICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDgsICAgMCwgICAwLCAgIDEsIAotICAgICAzMywgICAw
LCAgIDAsICAgNywgIDM0LCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEs
ICA2NCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAg
ICAgNCwgICAzLCAgMjYsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDU0LCAgIDAsIAotICAgICAgMCwgICA3LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDcwLCAgMzAsIAotICAgIDE2MCwgICAwLCAgMTAsICAgMCwgIDE2LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
NTQsICAgMCwgICAwLCAgIDcsIAotICAgICAxOCwgIDMyLCAgMTYsICAgMCwgICAxLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgMTAsICAxNiwgMTYwLCAgIDAsIAotICAgICAxMCwgICAwLCAgMTYsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1
NCwgICAwLCAgIDAsICAgNywgMTE0LCAgMzIsIAotICAgICAxNiwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsIAotICAgICA3MCwgIDE4LCAxNjAsICAgMCwgIDEwLCAgIDAsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDE5LCAgIDAs
IAotICAgICAgMCwgICAxLCAgMzAsICAgMCwgICAwLCAgIDcsIAotICAgICAxOCwgICAwLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICAyMiwgICAwLCAgIDAsICAgMSwgIDYyLCAgIDAsIAotICAgICAgMCwg
ICAxLCAgODMsICA4NCwgIDY1LCAgODQsIAotICAgIDExNiwgICAwLCAgIDAsICAgMCwgIDExLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwg
ICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBz
aWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVn
aXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJ
VElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgIHh5
encNCisvLyBMQVlFUiAgICAgICAgICAgICAgICAgICAgMCAgIHggICAgICAgICAgIDEgICAgIE5P
TkUgICAgdWludCAgIHggICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAg
ICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lU
SU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgeHl6
dw0KKy8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBS
VElOREVYICAgIHVpbnQgICB4ICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4
eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8NCitnc180XzANCitkY2xf
aW5wdXRfc2l2IHZbM11bMF0ueHl6dywgcG9zaXRpb24NCitkY2xfaW5wdXQgdlszXVsxXS54DQor
ZGNsX2lucHV0IHZbM11bMl0ueHl6DQorZGNsX3RlbXBzIDENCitkY2xfaW5wdXRwcmltaXRpdmUg
dHJpYW5nbGUgDQorZGNsX291dHB1dHRvcG9sb2d5IHRyaWFuZ2xlc3RyaXAgDQorZGNsX291dHB1
dF9zaXYgbzAueHl6dywgcG9zaXRpb24NCitkY2xfb3V0cHV0X3NpdiBvMS54LCByZW5kZXJ0YXJn
ZXRfYXJyYXlfaW5kZXgNCitkY2xfb3V0cHV0IG8yLnh5eg0KK2RjbF9tYXhvdXQgMw0KK21vdiBy
MC54LCBsKDApDQorbG9vcCANCisgIGlnZSByMC55LCByMC54LCBsKDMpDQorICBicmVha2Nfbnog
cjAueQ0KKyAgbW92IG8wLnh5encsIHZbcjAueCArIDBdWzBdLnh5encNCisgIG1vdiBvMS54LCB2
W3IwLnggKyAwXVsxXS54DQorICBtb3YgbzIueHl6LCB2W3IwLnggKyAwXVsyXS54eXp4DQorICBl
bWl0IA0KKyAgaWFkZCByMC54LCByMC54LCBsKDEpDQorZW5kbG9vcCANCityZXQgDQorLy8gQXBw
cm94aW1hdGVseSAxMSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3Qg
QllURSBnX0dTX1Bhc3N0aHJvdWdoM0RbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcs
ICA5MiwgMTI5LCANCisgICAgIDQxLCAxNzAsIDExNCwgIDc1LCAxNjAsIDI1MCwgDQorICAgICA5
NSwgMTYxLCAyMzAsIDE2MSwgIDExLCAgNzgsIA0KKyAgICAyNTIsICA2NSwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDcyLCAgIDMsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAxLCANCisgICAgICAwLCAgIDAsIDEzNiwgICAxLCAgIDAsICAgMCwgDQorICAgIDIwNCwgICAy
LCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAN
CisgICAgIDgzLCAgNzEsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAs
ICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisg
ICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3
NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAg
IDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1NCwg
IDQ2LCAgNTEsIA0KKyAgICAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCANCisgICAgIDQ5
LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgNzMsICA4MywgIDcx
LCAgNzgsIA0KKyAgICAxMDgsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAxNSwgICAwLCAgIDAs
IA0KKyAgICAgOTIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAxLCAgIDEsICAgMCwgICAwLCANCisgICAgIDk4LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDMsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNywgICA3
LCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIA0KKyAgICAg
NzMsICA4NCwgIDczLCAgNzksICA3OCwgICAwLCANCisgICAgIDc2LCAgNjUsICA4OSwgIDY5LCAg
ODIsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIs
ICA2OCwgICAwLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsIDEyOCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA5MiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAxNCwgDQor
ICAgICAgMCwgICAwLCAxMTgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDgsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYs
ICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3
OCwgICAwLCAgODMsICA4NiwgIDk1LCAgODIsIA0KKyAgICAgNjksICA3OCwgIDY4LCAgNjksICA4
MiwgIDg0LCANCisgICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICA2NSwgDQorICAgICA4Miwg
IDgyLCAgNjUsICA4OSwgIDczLCAgNzgsIA0KKyAgICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwg
IDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAgICAgMCwgMTcx
LCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAgICAgNjAsICAgMSwgICAwLCAgIDAsICA2NCwgICAw
LCANCisgICAgICAyLCAgIDAsICA3OSwgICAwLCAgIDAsICAgMCwgDQorICAgICA5NywgICAwLCAg
IDAsICAgNSwgMjQyLCAgMTYsIA0KKyAgICAgMzIsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgOTUs
ICAgMCwgICAwLCAgIDQsIA0KKyAgICAgMTgsICAxNiwgIDMyLCAgIDAsICAgMywgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA5NSwgICAwLCAgIDAsICAg
NCwgMTE0LCAgMTYsIA0KKyAgICAgMzIsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAyLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgOTMsICAyNCwgICAwLCAgIDEsICA5MiwgIDQwLCANCisgICAgICAw
LCAgIDEsIDEwMywgICAwLCAgIDAsICAgNCwgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTAzLCAg
IDAsICAgMCwgICA0LCAgMTgsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMs
IDExNCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDk0LCAgIDAs
IA0KKyAgICAgIDAsICAgMiwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAg
MCwgICA1LCAgMTgsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0OCwg
ICAwLCAgIDAsICAgMSwgDQorICAgICAzMywgICAwLCAgIDAsICAgNywgIDM0LCAgIDAsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgIDAsICAxNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0KKyAgICAg
IDMsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICA0LCAgIDMsICAyNiwgICAwLCAg
MTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAs
ICAgNywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAs
ICAzMCwgDQorICAgIDE2MCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAg
NywgDQorICAgICAxOCwgIDMyLCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDEwLCAgMTYsIDE2MCwgICAwLCANCisgICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAw
LCAgIDcsIDExNCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA3MCwgIDE4LCAxNjAsICAgMCwgIDEwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgMTksICAgMCwgDQorICAg
ICAgMCwgICAxLCAgMzAsICAgMCwgICAwLCAgIDcsIA0KKyAgICAgMTgsICAgMCwgIDE2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDIyLCAgIDAsICAgMCwgICAxLCAgNjIsICAgMCwgDQorICAgICAgMCwg
ICAxLCAgODMsICA4NCwgIDY1LCAgODQsIA0KKyAgICAxMTYsICAgMCwgICAwLCAgIDAsICAxMSwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAz
LCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdoM2QxMXZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
M2QxMXZzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aDNkMTF2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NSArMSwxNTUgQEAKLSNpZiAwCi0vLwot
Ly8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2
MDAuMTYzODQKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQotLy8gUE9TSVRJT04gICAgICAgICAgICAgICAgIDAgICB4eSAgICAg
ICAgICAwICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0vLyBMQVlFUiAgICAgICAgICAgICAgICAg
ICAgMCAgIHggICAgICAgICAgIDEgICAgIE5PTkUgICAgdWludCAgIHggICAKLS8vIFRFWENPT1JE
ICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6
IAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAg
ICBQT1MgICBmbG9hdCAgIHh5encKLS8vIExBWUVSICAgICAgICAgICAgICAgICAgICAwICAgeCAg
ICAgICAgICAgMSAgICAgTk9ORSAgICB1aW50ICAgeCAgIAotLy8gVEVYQ09PUkQgICAgICAgICAg
ICAgICAgIDAgICB4eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogCi0vLwotdnNf
NF8wCi1kY2xfaW5wdXQgdjAueHkKLWRjbF9pbnB1dCB2MS54Ci1kY2xfaW5wdXQgdjIueHl6Ci1k
Y2xfb3V0cHV0X3NpdiBvMC54eXp3LCBwb3NpdGlvbgotZGNsX291dHB1dCBvMS54Ci1kY2xfb3V0
cHV0IG8yLnh5egotbW92IG8wLnh5LCB2MC54eXh4Ci1tb3YgbzAuencsIGwoMCwwLDAsMS4wMDAw
MDApCi1tb3YgbzEueCwgdjEueAotbW92IG8yLnh5eiwgdjIueHl6eAotcmV0IAotLy8gQXBwcm94
aW1hdGVseSA1IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdf
VlNfUGFzc3Rocm91Z2gzRFtdID0KLXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDIyOSwgIDY1
LCAKLSAgICAyMTcsIDE3MiwgMTQzLCAxODAsIDE1MiwgIDcyLCAKLSAgICAgMTYsICAxMiwgMjU0
LCAgNjYsICAgMCwgMjE1LCAKLSAgICAgNTAsIDE3MywgICAxLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAxNjgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAxNDAsICAgMCwgICAwLCAgIDAsIDI1MiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgMTEyLCAgIDEsICAgMCwgICAwLCAKLSAgICAgNDQsICAgMiwgICAwLCAgIDAsICA4Miwg
IDY4LCAKLSAgICAgNjksICA3MCwgIDgwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAKLSAgICAyNTQsIDI1NSwgICAwLCAg
IDEsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCAKLSAgICAg
OTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAKLSAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0
MSwgIDMyLCAKLSAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAKLSAgICAxMDQsICA5
NywgMTAwLCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4
LCAKLSAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAKLSAgICAgNDYsICA1NywgIDU0
LCAgNDgsICA0OCwgIDQ2LCAKLSAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAKLSAg
ICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCAKLSAgICAxMDQsICAgMCwgICAwLCAgIDAs
ICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAzLCAgIDMsICAgMCwgICAwLCAKLSAgICAgODksICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDEsICAgMCwgICAwLCAKLSAgICAg
OTUsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAg
MCwgICA3LCAgIDcsICAgMCwgICAwLCAKLSAgICAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgIDcz
LCAKLSAgICAgNzksICA3OCwgICAwLCAgNzYsICA2NSwgIDg5LCAKLSAgICAgNjksICA4MiwgICAw
LCAgODQsICA2OSwgIDg4LCAKLSAgICAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAKLSAg
ICAgNzksICA4MywgIDcxLCAgNzgsIDEwOCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsICA4MCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTUsICAgMCwg
ICAwLCAgIDAsICA5MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAxNCwgICAwLCAgIDAsICA5OCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MywgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDcsICAg
OCwgICAwLCAgIDAsICA4MywgIDg2LCAKLSAgICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0
LCAKLSAgICAgNzMsICA3OSwgIDc4LCAgIDAsICA3NiwgIDY1LCAKLSAgICAgODksICA2OSwgIDgy
LCAgIDAsICA4NCwgIDY5LCAKLSAgICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAKLSAg
ICAgIDAsIDE3MSwgIDgzLCAgNzIsICA2OCwgIDgyLCAKLSAgICAxODAsICAgMCwgICAwLCAgIDAs
ICA2NCwgICAwLCAKLSAgICAgIDEsICAgMCwgIDQ1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgOTUs
ICAgMCwgICAwLCAgIDMsICA1MCwgIDE2LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgOTUsICAgMCwgICAwLCAgIDMsICAxOCwgIDE2LCAKLSAgICAgMTYsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgOTUsICAgMCwgICAwLCAgIDMsIDExNCwgIDE2LCAK
LSAgICAgMTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDMsICAgMCwgICAwLCAg
IDQsIDI0MiwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgIDE4LCAgMzIsICAx
NiwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAg
MywgMTE0LCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICA1NCwgICAw
LCAKLSAgICAgIDAsICAgNSwgIDUwLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA3MCwgIDE2LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgNTQsICAgMCwgICAwLCAgIDgsIDE5NCwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAxMjgsICA2MywgIDU0LCAgIDAsICAgMCwgICA1LCAKLSAgICAgMTgsICAzMiwg
IDE2LCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDEwLCAgMTYsICAxNiwgICAwLCAK
LSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgMTE0LCAg
MzIsICAxNiwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICA3MCwgIDE4LCAKLSAgICAg
MTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4
MywgIDg0LCAKLSAgICAgNjUsICA4NCwgMTE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDUsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNo
YWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFBPU0lUSU9O
ICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMCAgICAgTk9ORSAgIGZsb2F0ICAgeHkg
IA0KKy8vIExBWUVSICAgICAgICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMSAgICAgTk9O
RSAgICB1aW50ICAgeCAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAg
ICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6IA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2ln
bmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJ
T04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICB4eXp3
DQorLy8gTEFZRVIgICAgICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAgICAxICAgICBOT05F
ICAgIHVpbnQgICB4ICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAg
ICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8NCit2c180XzANCitkY2xfaW5wdXQg
djAueHkNCitkY2xfaW5wdXQgdjEueA0KK2RjbF9pbnB1dCB2Mi54eXoNCitkY2xfb3V0cHV0X3Np
diBvMC54eXp3LCBwb3NpdGlvbg0KK2RjbF9vdXRwdXQgbzEueA0KK2RjbF9vdXRwdXQgbzIueHl6
DQorbW92IG8wLnh5LCB2MC54eXh4DQorbW92IG8wLnp3LCBsKDAsMCwwLDEuMDAwMDAwKQ0KK21v
diBvMS54LCB2MS54DQorbW92IG8yLnh5eiwgdjIueHl6eA0KK3JldCANCisvLyBBcHByb3hpbWF0
ZWx5IDUgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19W
U19QYXNzdGhyb3VnaDNEW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAyMjksICA2
NSwgDQorICAgIDIxNywgMTcyLCAxNDMsIDE4MCwgMTUyLCAgNzIsIA0KKyAgICAgMTYsICAxMiwg
MjU0LCAgNjYsICAgMCwgMjE1LCANCisgICAgIDUwLCAxNzMsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgIDE2OCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUy
LCAgIDAsICAgMCwgICAwLCANCisgICAgMTQwLCAgIDAsICAgMCwgICAwLCAyNTIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAxMTIsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNDQsICAgMiwgICAwLCAg
IDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1
NCwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA3
NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwg
IDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwg
IDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2NywgMTEx
LCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUx
LCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAg
NTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCAN
CisgICAgMTA0LCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCANCisgICAg
IDg5LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMSwgICAxLCAgIDAsICAgMCwgDQorICAgICA5NSwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAg
IDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDcsICAgNywgICAwLCAg
IDAsIA0KKyAgICAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCANCisgICAgIDc5LCAgNzgs
ICAgMCwgIDc2LCAgNjUsICA4OSwgDQorICAgICA2OSwgIDgyLCAgIDAsICA4NCwgIDY5LCAgODgs
IA0KKyAgICAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCANCisgICAgIDc5LCAgODMsICA3
MSwgIDc4LCAxMDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA4MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAw
LCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgIDE0LCAgIDAsICAgMCwgIDk4LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDcsICAg
OCwgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4
NCwgDQorICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDc2LCAgNjUsIA0KKyAgICAgODksICA2OSwg
IDgyLCAgIDAsICA4NCwgIDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwg
DQorICAgICAgMCwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAgICAxODAsICAgMCwgICAw
LCAgIDAsICA2NCwgICAwLCANCisgICAgICAxLCAgIDAsICA0NSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA5NSwgICAwLCAgIDAsICAgMywgIDUwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDk1LCAgIDAsICAgMCwgICAzLCAgMTgsICAxNiwgDQorICAg
ICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgOTUsICAgMCwgICAwLCAgIDMs
IDExNCwgIDE2LCANCisgICAgIDE2LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgIDEw
MywgICAwLCAgIDAsICAgNCwgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwg
ICAzLCAgMTgsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwg
ICAwLCANCisgICAgICAwLCAgIDMsIDExNCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMiwgICAw
LCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgIDUwLCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDgsIDE5NCwgIDMyLCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgIDY0LCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEyOCwgIDYzLCAgNTQsICAg
MCwgICAwLCAgIDUsIA0KKyAgICAgMTgsICAzMiwgIDE2LCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAxMCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
IDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgMzIsICAxNiwgICAwLCANCisgICAgICAy
LCAgIDAsICAgMCwgICAwLCAgNzAsICAxOCwgDQorICAgICAxNiwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAg
ODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdoZGVwdGgyZDExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hkZXB0aDJkMTFwcy5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hkZXB0aDJkMTFw
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0NSArMSwxNDUgQEAKLSNpZiAwCi0vLwotLy8gR2Vu
ZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYz
ODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1l
bnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8gVGV4
dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAy
ZCAgICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAg
ICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0vLwot
Ly8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5k
ZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0K
LS8vIFNWX0RFUFRIICAgICAgICAgICAgICAgICAwICAgIE4vQSAgIG9EZXB0aCAgICBERVBUSCAg
IGZsb2F0ICAgIFlFUwotLy8KLXBzXzRfMAotZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdAot
ZGNsX3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwCi1kY2xf
aW5wdXRfcHMgbGluZWFyIHYxLnh5Ci1kY2xfb3V0cHV0IG9EZXB0aAotZGNsX3RlbXBzIDEKLXNh
bXBsZSByMC54eXp3LCB2MS54eXh4LCB0MC54eXp3LCBzMAotbW92IG9EZXB0aCwgcjAueAotcmV0
IAotLy8gQXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1j
b25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hEZXB0aDJEW10gPQotewotICAgICA2OCwgIDg4LCAg
NjYsICA2NywgICA4LCAgMzMsIAotICAgIDE1NCwgIDkyLCAxNjQsICAyOCwgMTM5LCAyMDUsIAot
ICAgICAgMSwgMTY4LCAgMzAsIDIyOSwgIDUxLCAxMjcsIAotICAgIDE3MywgMjIxLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgIDEwMCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAg
MCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAotICAgIDIyMCwgICAwLCAgIDAsICAgMCwgIDUy
LCAgIDEsIAotICAgICAgMCwgICAwLCAxMDQsICAgMSwgICAwLCAgIDAsIAotICAgIDIzMiwgICAx
LCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIs
ICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAg
IDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgIDEwOSwgICAwLCAgIDAsICAgMCwg
IDkyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwgICAwLCAgIDAsICAg
MCwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDEzLCAgIDAsIAotICAgICAgMCwgICAwLCAgODMsICA5NywgMTA5
LCAxMTIsIAotICAgIDEwOCwgMTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIAotICAgIDEyMCwgMTE2
LCAxMTcsIDExNCwgMTAxLCAgNzAsIAotICAgICAgMCwgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEs
IAotICAgIDExNSwgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsIAotICAgICA4MiwgIDQxLCAgMzIs
ICA3MiwgIDc2LCAgODMsIAotICAgICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIAotICAg
IDEwMSwgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIAotICAgIDExMiwgMTA1LCAxMDgsIDEwMSwg
MTE0LCAgMzIsIAotICAgICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsIAotICAgICA0OCwg
IDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsIAotICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAg
ODMsIAotICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAg
IDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAg
MCwgICAwLCAgNjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAw
LCAgIDAsICAgMCwgICAzLCAgIDMsIAotICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAs
IAotICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIAotICAgICA3OCwgICAwLCAgODQs
ICA2OSwgIDg4LCAgNjcsIAotICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIAotICAg
IDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIAotICAgICA0NCwgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICAzMiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAg
IDEsICAxNCwgICAwLCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA2OCwgIDY5LCAgODAsIAot
ICAgICA4NCwgIDcyLCAgIDAsIDE3MSwgMTcxLCAxNzEsIAotICAgICA4MywgIDcyLCAgNjgsICA4
MiwgMTIwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIAotICAgICAz
MCwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIAotICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg4LCAgMjQsIAotICAgICAgMCwgICA0
LCAgIDAsIDExMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUs
IAotICAgICAgMCwgICAwLCAgOTgsICAxNiwgICAwLCAgIDMsIAotICAgICA1MCwgIDE2LCAgMTYs
ICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDIsIAotICAg
ICAgMSwgMTkyLCAgIDAsICAgMCwgMTA0LCAgIDAsIAotICAgICAgMCwgICAyLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICA2OSwgICAwLCAgIDAsICAgOSwgMjQyLCAgIDAsIAotICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgOTYsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICA1NCwgICAwLCAgIDAsICAgNCwgICAxLCAxOTIsIAotICAgICAgMCwgICAwLCAgMTAsICAg
MCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIAotICAgICAg
MCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIAotICAgIDExNiwgICAwLCAgIDAsICAgMCwgICAz
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2Ug
QmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0t
LS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAg
IE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisv
Lw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8g
T3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8v
IFNWX0RFUFRIICAgICAgICAgICAgICAgICAwICAgIE4vQSAgIG9EZXB0aCAgICBERVBUSCAgIGZs
b2F0ICAgIFlFUw0KKy8vDQorcHNfNF8wDQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0K
K2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2Rj
bF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG9EZXB0aA0KK2RjbF90ZW1wcyAx
DQorc2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMwDQorbW92IG9EZXB0aCwgcjAu
eA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDMgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNl
bmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaERlcHRoMkRbXSA9DQorew0KKyAg
ICAgNjgsICA4OCwgIDY2LCAgNjcsICAgOCwgIDMzLCANCisgICAgMTU0LCAgOTIsIDE2NCwgIDI4
LCAxMzksIDIwNSwgDQorICAgICAgMSwgMTY4LCAgMzAsIDIyOSwgIDUxLCAxMjcsIA0KKyAgICAx
NzMsIDIyMSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTAwLCAgIDIsICAgMCwgICAwLCAg
IDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAs
ICAgMCwgICAwLCAgIDAsICA1MiwgICAxLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAxLCAgIDAs
ICAgMCwgDQorICAgIDIzMiwgICAxLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3
MCwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwg
DQorICAgIDEwOSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
IDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1
NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAx
MywgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwg
MTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwg
IDcwLCANCisgICAgICAwLCAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgDQorICAgIDExNSwgMTEx
LCAxMDIsIDExNiwgIDMyLCAgNDAsIA0KKyAgICAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgz
LCANCisgICAgIDc2LCAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgDQorICAgIDEwMSwgMTE0LCAg
MzIsICA2NywgMTExLCAxMDksIA0KKyAgICAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAN
CisgICAgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgDQorICAgICA0OCwgIDQ4LCAgNDYs
ICA0OSwgIDU0LCAgNTEsIA0KKyAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3MywgIDgzLCANCisg
ICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAw
LCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAg
ODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAs
ICA4NCwgIDY5LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEs
IA0KKyAgICAxNzEsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIA0KKyAg
ICAyNTUsIDI1NSwgICAxLCAgMTQsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDY4
LCAgNjksICA4MCwgDQorICAgICA4NCwgIDcyLCAgIDAsIDE3MSwgMTcxLCAxNzEsIA0KKyAgICAg
ODMsICA3MiwgIDY4LCAgODIsIDEyMCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAzMCwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgs
ICAyNCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAg
MywgDQorICAgICA1MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
MTAxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAxLCAxOTIsICAgMCwgICAwLCAxMDQsICAgMCwg
DQorICAgICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjksICAgMCwgICAw
LCAgIDksIDI0MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAx
MjYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICA5NiwgDQorICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDQs
ICAgMSwgMTkyLCANCisgICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAsICAgMSwgIDgzLCAgODQsICA2
NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTJkMTFwcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTJkMTFwcy5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0yZDExcHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxOTYgKzEsMTk2IEBACi0jaWYgMAotLy8KLS8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0
Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50
cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDEKLS8vIFRleHR1
cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICAgMmQg
ICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIAotLy8KLS8v
Ci0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4
ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0v
LyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICBm
bG9hdCAgIHh5encKLS8vCi0vLwotLy8gU2FtcGxlci9SZXNvdXJjZSB0byBEWDkgc2hhZGVyIHNh
bXBsZXIgbWFwcGluZ3M6Ci0vLwotLy8gVGFyZ2V0IFNhbXBsZXIgU291cmNlIFNhbXBsZXIgIFNv
dXJjZSBSZXNvdXJjZQotLy8gLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0t
LS0tLS0tLS0KLS8vIHMwICAgICAgICAgICAgIHMwICAgICAgICAgICAgICB0MCAgICAgICAgICAg
ICAgIAotLy8KLS8vCi0vLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOgotLy8KLSAgICBwc18yX3gK
LSAgICBkZWYgYzAsIDEsIDAsIDAsIDAKLSAgICBkY2wgdDAueHkKLSAgICBkY2xfMmQgczAKLSAg
ICB0ZXhsZCByMCwgdDAsIHMwCi0gICAgbWFkIHIwLCByMC54LCBjMC54eHh5LCBjMC55eXl4Ci0g
ICAgbW92IG9DMCwgcjAKLQotLy8gYXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVz
ZWQgKDEgdGV4dHVyZSwgMiBhcml0aG1ldGljKQotcHNfNF8wCi1kY2xfc2FtcGxlciBzMCwgbW9k
ZV9kZWZhdWx0Ci1kY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9h
dCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNs
X3RlbXBzIDEKLXNhbXBsZSByMC54eXp3LCB2MS54eXh4LCB0MC54eXp3LCBzMAotbW92IG8wLnh5
eiwgcjAueHh4eAotbW92IG8wLncsIGwoMS4wMDAwMDApCi1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5
IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19QYXNz
dGhyb3VnaEx1bTJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTQ0LCAgMTgsIAot
ICAgIDI0MiwgIDg5LCAxNTAsIDEyNSwgIDE4LCAyMTksIAotICAgIDE5MywgMTk2LCAxMjcsIDIw
NywgIDE0LCAxNjUsIAotICAgIDE5OCwgMTE5LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAy
OCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAw
LCAgIDAsIAotICAgIDIwOCwgICAwLCAgIDAsICAgMCwgMTA4LCAgIDEsIAotICAgICAgMCwgICAw
LCAyMzIsICAgMSwgICAwLCAgIDAsIAotICAgIDE0NCwgICAyLCAgIDAsICAgMCwgMjMyLCAgIDIs
IAotICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIAotICAgIDE0NCwgICAwLCAgIDAs
ICAgMCwgMTQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIAotICAg
IDEwNCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIAotICAgICA0MCwg
ICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIAotICAgICA4MSwgICAwLCAg
IDAsICAgNSwgICAwLCAgIDAsIAotICAgICAxNSwgMTYwLCAgIDAsICAgMCwgMTI4LCAgNjMsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIAotICAgICAg
MCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsIAotICAgICAgMCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIAotICAgICA2NiwgICAw
LCAgIDAsICAgMywgICAwLCAgIDAsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYs
IAotICAgICAgMCwgICA4LCAyMjgsIDE2MCwgICA0LCAgIDAsIAotICAgICAgMCwgICA0LCAgIDAs
ICAgMCwgIDE1LCAxMjgsIAotICAgICAgMCwgICAwLCAgIDAsIDEyOCwgICAwLCAgIDAsIAotICAg
ICA2NCwgMTYwLCAgIDAsICAgMCwgIDIxLCAxNjAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDgsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxMjgsIAotICAgIDI1NSwg
MjU1LCAgIDAsICAgMCwgIDgzLCAgNzIsIAotICAgICA2OCwgIDgyLCAxNDgsICAgMCwgICAwLCAg
IDAsIAotICAgICA2NCwgICAwLCAgIDAsICAgMCwgIDM3LCAgIDAsIAotICAgICAgMCwgICAwLCAg
OTAsICAgMCwgICAwLCAgIDMsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgODgsICAyNCwgICAwLCAgIDQsIAotICAgICAgMCwgMTEyLCAgMTYsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODUsICA4NSwgICAwLCAgIDAsIAotICAgICA5
OCwgIDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAgMzIsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIAotICAgIDI0MiwgICAwLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgIDExNCwgIDMyLCAgMTYsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDYsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAxMzAsICAzMiwgIDE2LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgMTI4LCAgNjMsIAotICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIAotICAgICA2
NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODIsICA2OCwgIDY5
LCAgNzAsIAotICAgIDE2MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgNCwgMjU1LCAyNTUsIAotICAgICAgMCwgICAxLCAgIDAs
ICAgMCwgMTA5LCAgIDAsIAotICAgICAgMCwgICAwLCAgOTIsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgNSwgICAwLCAg
IDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTMsICAg
MCwgICAwLCAgIDAsIAotICAgICA4MywgIDk3LCAxMDksIDExMiwgMTA4LCAxMDEsIAotICAgIDEx
NCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIAotICAgIDExNywgMTE0LCAxMDEsICA3MCwgICAw
LCAgNzcsIAotICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIAotICAgIDEwMiwgMTE2
LCAgMzIsICA0MCwgIDgyLCAgNDEsIAotICAgICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIs
IAotICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsIAotICAgICAzMiwgIDY3LCAxMTEs
IDEwOSwgMTEyLCAxMDUsIAotICAgIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsIAotICAg
ICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsIAotICAgICA0NiwgIDQ5LCAgNTQsICA1MSwg
IDU2LCAgNTIsIAotICAgICAgMCwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIAotICAgICA4MCwg
ICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAg
IDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgICA2OCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMywgICAw
LCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIAotICAgICA3MywgIDg0
LCAgNzMsICA3OSwgIDc4LCAgIDAsIAotICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzks
IAotICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgMTcxLCAxNzEsIAotICAgICA3OSwgIDgzLCAgNzEs
ICA3OCwgIDQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgOCwgICAwLCAgIDAsICAgMCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDgzLCAg
ODYsIAotICAgICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIAotICAgICA4NCwgICAwLCAx
NzEsIDE3MQotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBI
TFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJj
ZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAt
LS0tLS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyICAg
ICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0KKy8vIFRleHR1cmVGICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICAgMmQgICAgMCAgICAgICAgMQ0K
Ky8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAg
ICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAg
ICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisv
LyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQor
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAg
ZmxvYXQgICB4eXp3DQorLy8NCisvLw0KKy8vIFNhbXBsZXIvUmVzb3VyY2UgdG8gRFg5IHNoYWRl
ciBzYW1wbGVyIG1hcHBpbmdzOg0KKy8vDQorLy8gVGFyZ2V0IFNhbXBsZXIgU291cmNlIFNhbXBs
ZXIgIFNvdXJjZSBSZXNvdXJjZQ0KKy8vIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLSAt
LS0tLS0tLS0tLS0tLS0tDQorLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAgICAgIHQwICAg
ICAgICAgICAgICAgDQorLy8NCisvLw0KKy8vIExldmVsOSBzaGFkZXIgYnl0ZWNvZGU6DQorLy8N
CisgICAgcHNfMl94DQorICAgIGRlZiBjMCwgMSwgMCwgMCwgMA0KKyAgICBkY2wgdDAueHkNCisg
ICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwgczANCisgICAgbWFkIHIwLCByMC54LCBj
MC54eHh5LCBjMC55eXl4DQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAz
IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMiBhcml0aG1ldGljKQ0KK3BzXzRf
MA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJk
IChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5
DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEu
eHl4eCwgdDAueHl6dywgczANCittb3YgbzAueHl6LCByMC54eHh4DQorbW92IG8wLncsIGwoMS4w
MDAwMDApDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2Vk
DQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoTHVtMkRbXSA9DQorew0K
KyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE0NCwgIDE4LCANCisgICAgMjQyLCAgODksIDE1MCwg
MTI1LCAgMTgsIDIxOSwgDQorICAgIDE5MywgMTk2LCAxMjcsIDIwNywgIDE0LCAxNjUsIA0KKyAg
ICAxOTgsIDExOSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDMsICAgMCwgICAw
LCAgIDYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAy
MDgsICAgMCwgICAwLCAgIDAsIDEwOCwgICAxLCANCisgICAgICAwLCAgIDAsIDIzMiwgICAxLCAg
IDAsICAgMCwgDQorICAgIDE0NCwgICAyLCAgIDAsICAgMCwgMjMyLCAgIDIsIA0KKyAgICAgIDAs
ICAgMCwgIDY1LCAxMTEsIDExMCwgIDU3LCANCisgICAgMTQ0LCAgIDAsICAgMCwgICAwLCAxNDQs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KKyAgICAxMDQsICAg
MCwgICAwLCAgIDAsICA0MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNDAsICAgMCwg
ICAxLCAgIDAsICAzNiwgICAwLCANCisgICAgICAwLCAgIDAsICA0MCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIA0KKyAgICAgODEsICAgMCwgICAw
LCAgIDUsICAgMCwgICAwLCANCisgICAgIDE1LCAxNjAsICAgMCwgICAwLCAxMjgsICA2MywgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIA0KKyAgICAgMzEsICAgMCwgICAwLCAgIDIs
ICAgMCwgICAwLCANCisgICAgICAwLCAxNDQsICAgMCwgICA4LCAgMTUsIDE2MCwgDQorICAgICA2
NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIA0KKyAgICAgMTUsIDEyOCwgICAwLCAgIDAsIDIy
OCwgMTc2LCANCisgICAgICAwLCAgIDgsIDIyOCwgMTYwLCAgIDQsICAgMCwgDQorICAgICAgMCwg
ICA0LCAgIDAsICAgMCwgIDE1LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgICAwLCAxMjgsICAgMCwg
ICAwLCANCisgICAgIDY0LCAxNjAsICAgMCwgICAwLCAgMjEsIDE2MCwgDQorICAgICAgMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDgsIA0KKyAgICAgMTUsIDEyOCwgICAwLCAgIDAsIDIyOCwgMTI4
LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgODMsICA3MiwgDQorICAgICA2OCwgIDgyLCAx
NDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwgICAwLCAgIDAsICAzNywgICAwLCAN
CisgICAgICAwLCAgIDAsICA5MCwgICAwLCAgIDAsICAgMywgDQorICAgICAgMCwgIDk2LCAgMTYs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDg4LCAgMjQsICAgMCwgICA0LCANCisg
ICAgICAwLCAxMTIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgODUsICA4
NSwgICAwLCAgIDAsIA0KKyAgICAgOTgsICAxNiwgICAwLCAgIDMsICA1MCwgIDE2LCANCisgICAg
IDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAwLCAgIDAsICAgMywg
MjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA0
LCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjksICAgMCwgICAw
LCAgIDksIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA3MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAx
MjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgOTYs
ICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUs
IA0KKyAgICAxMTQsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
NiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0K
KyAgICAgIDAsICAgNSwgMTMwLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICA2NCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAg
ICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAgODQsIDExNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgyLCAgNjgs
ICA2OSwgIDcwLCANCisgICAgMTYwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAy
OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICA0LCAyNTUsIDI1NSwgDQorICAgICAgMCwg
ICAxLCAgIDAsICAgMCwgMTA5LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgMTAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICA1LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUs
IDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisg
ICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDk3LCAxMDksIDEx
MiwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAgMCwgIDg0LCAxMDEsIDEyMCwgMTE2LCANCisgICAg
MTE3LCAxMTQsIDEwMSwgIDcwLCAgIDAsICA3NywgDQorICAgIDEwNSwgIDk5LCAxMTQsIDExMSwg
MTE1LCAxMTEsIA0KKyAgICAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCANCisgICAgIDMy
LCAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgDQorICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAx
LCAxMTQsIA0KKyAgICAgMzIsICA2NywgMTExLCAxMDksIDExMiwgMTA1LCANCisgICAgMTA4LCAx
MDEsIDExNCwgIDMyLCAgNTQsICA0NiwgDQorICAgICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAg
NDgsIA0KKyAgICAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCANCisgICAgICAwLCAxNzEs
ICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIA0KKyAgICAg
ODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAg
NzgsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIs
ICA2OCwgICAwLCAxNzEsIDE3MSwgMTcxLCANCisgICAgIDc5LCAgODMsICA3MSwgIDc4LCAgNDQs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAg
MCwgICAwLCAgIDAsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAgODMsICA4Niwg
DQorICAgICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAgODQsICAgMCwgMTcx
LCAxNzENCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTNkMTFwcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTNkMTFwcy5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW0zZDExcHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjAgKzEsMTYwIEBACi0jaWYgMAotLy8KLS8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0
Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50
cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDEKLS8vIFRleHR1
cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICAgM2Qg
ICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFS
UkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICAgICAgCi0v
LyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBm
bG9hdCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfc2FtcGxlciBz
MCwgbW9kZV9kZWZhdWx0Ci1kY2xfcmVzb3VyY2VfdGV4dHVyZTNkIChmbG9hdCxmbG9hdCxmbG9h
dCxmbG9hdCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6Ci1kY2xfb3V0cHV0IG8wLnh5
encKLWRjbF90ZW1wcyAxCi1zYW1wbGUgcjAueHl6dywgdjIueHl6eCwgdDAueHl6dywgczAKLW1v
diBvMC54eXosIHIwLnh4eHgKLW1vdiBvMC53LCBsKDEuMDAwMDAwKQotcmV0IAotLy8gQXBwcm94
aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdf
UFNfUGFzc3Rocm91Z2hMdW0zRFtdID0KLXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE3Mywg
MTc3LCAKLSAgICAyMTksICAzNSwgMTQ5LCAxMzAsICAzMywgMjE1LCAKLSAgICAxODMsIDIxOSwg
MjUwLCAyNDQsIDEwMCwgIDE3LCAKLSAgICAgNjIsIDEwNiwgICAxLCAgIDAsICAgMCwgICAwLCAK
LSAgICAxNzYsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAg
IDAsICAgMCwgICAwLCAKLSAgICAyMjAsICAgMCwgICAwLCAgIDAsIDEwMCwgICAxLCAKLSAgICAg
IDAsICAgMCwgMTUyLCAgIDEsICAgMCwgICAwLCAKLSAgICAgNTIsICAgMiwgICAwLCAgIDAsICA4
MiwgIDY4LCAKLSAgICAgNjksICA3MCwgMTYwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAw
LCAgIDEsICAgMCwgICAwLCAKLSAgICAxMDksICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAxMDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICA1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCAK
LSAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAxMywgICAwLCAKLSAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCAKLSAgICAx
MDgsIDEwMSwgMTE0LCAgIDAsICA4NCwgMTAxLCAKLSAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEw
MSwgIDcwLCAKLSAgICAgIDAsICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAKLSAgICAxMTUsIDEx
MSwgMTAyLCAxMTYsICAzMiwgIDQwLCAKLSAgICAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgz
LCAKLSAgICAgNzYsICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAKLSAgICAxMDEsIDExNCwgIDMy
LCAgNjcsIDExMSwgMTA5LCAKLSAgICAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAKLSAg
ICAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAKLSAgICAgNDgsICA0OCwgIDQ2LCAgNDks
ICA1NCwgIDUxLCAKLSAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3MywgIDgzLCAKLSAgICAgNzEs
ICA3OCwgMTI4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgIDgwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDkyLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAKLSAgICAgIDAsICAgMCwgMTE4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgNywgICA3LCAKLSAgICAgIDAsICAgMCwgIDgz
LCAgODYsICA5NSwgIDgwLCAKLSAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCAKLSAg
ICAgNzgsICAgMCwgIDgzLCAgODYsICA5NSwgIDgyLCAKLSAgICAgNjksICA3OCwgIDY4LCAgNjks
ICA4MiwgIDg0LCAKLSAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDY1LCAKLSAgICAgODIs
ICA4MiwgIDY1LCAgODksICA3MywgIDc4LCAKLSAgICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwg
IDY5LCAKLSAgICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAKLSAgICAgIDAsIDE3MSwg
IDc5LCAgODMsICA3MSwgIDc4LCAKLSAgICAgNDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAK
LSAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMzIsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAg
MCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCAKLSAgICAgNzEsICA2
OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCAKLSAgICAgODMsICA3MiwgIDY4LCAgODIsIDE0OCwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMzcsICAgMCwgICAw
LCAgIDAsICA5MCwgICAwLCAKLSAgICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA4OCwgIDQwLCAKLSAgICAgIDAsICAgNCwgICAwLCAxMTIs
ICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1LCAKLSAgICAgIDAs
ICAgMCwgIDk4LCAgMTYsICAgMCwgICAzLCAKLSAgICAxMTQsICAxNiwgIDE2LCAgIDAsICAgMiwg
ICAwLCAKLSAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCAKLSAgICAyNDIsICAzMiwg
IDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgMTA0LCAgIDAsICAgMCwgICAyLCAK
LSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2OSwgICAwLCAKLSAgICAgIDAsICAgOSwgMjQyLCAg
IDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDE4LCAKLSAgICAg
MTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgOTYsICAxNiwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgMTE0LCAgMzIsICAxNiwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAKLSAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgIDMyLCAKLSAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICA2NCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCAKLSAgICAgODMs
ICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAKLX07Cisj
aWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29t
cGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQor
Ly8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0
ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBT
YW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAg
IE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDNkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8N
CisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0N
CisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1Mg
ICBmbG9hdCAgICAgICANCisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAg
ICAgICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6IA0KKy8vDQor
Ly8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICAgZmxvYXQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9k
ZWZhdWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUzZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQp
IHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8wLnh5encNCitk
Y2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2Mi54eXp4LCB0MC54eXp3LCBzMA0KK21vdiBv
MC54eXosIHIwLnh4eHgNCittb3YgbzAudywgbCgxLjAwMDAwMCkNCityZXQgDQorLy8gQXBwcm94
aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRF
IGdfUFNfUGFzc3Rocm91Z2hMdW0zRFtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2Nywg
MTczLCAxNzcsIA0KKyAgICAyMTksICAzNSwgMTQ5LCAxMzAsICAzMywgMjE1LCANCisgICAgMTgz
LCAyMTksIDI1MCwgMjQ0LCAxMDAsICAxNywgDQorICAgICA2MiwgMTA2LCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAxNzYsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDIyMCwgICAwLCAgIDAsICAgMCwgMTAwLCAg
IDEsIA0KKyAgICAgIDAsICAgMCwgMTUyLCAgIDEsICAgMCwgICAwLCANCisgICAgIDUyLCAgIDIs
ICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0K
KyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgMTA5LCAgIDAsICAgMCwg
ICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTAwLCAgIDAsICAgMCwgICAwLCAg
IDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDgs
ICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDEzLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDgzLCAgOTcsIDEwOSwgMTEyLCANCisgICAgMTA4LCAxMDEsIDExNCwgICAwLCAgODQsIDEw
MSwgDQorICAgIDEyMCwgMTE2LCAxMTcsIDExNCwgMTAxLCAgNzAsIA0KKyAgICAgIDAsICA3Nywg
MTA1LCAgOTksIDExNCwgMTExLCANCisgICAgMTE1LCAxMTEsIDEwMiwgMTE2LCAgMzIsICA0MCwg
DQorICAgICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsIA0KKyAgICAgNzYsICAzMiwgIDgz
LCAxMDQsICA5NywgMTAwLCANCisgICAgMTAxLCAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwgDQor
ICAgIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsIA0KKyAgICAgNTQsICA0NiwgIDUxLCAg
NDYsICA1NywgIDU0LCANCisgICAgIDQ4LCAgNDgsICA0NiwgIDQ5LCAgNTQsICA1MSwgDQorICAg
ICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMsIA0KKyAgICAgNzEsICA3OCwgMTI4LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAg
MCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsIDExOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDcsICAgNywgDQorICAgICAgMCwgICAwLCAgODMs
ICA4NiwgIDk1LCAgODAsIA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisg
ICAgIDc4LCAgIDAsICA4MywgIDg2LCAgOTUsICA4MiwgDQorICAgICA2OSwgIDc4LCAgNjgsICA2
OSwgIDgyLCAgODQsIA0KKyAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDY1LCANCisgICAg
IDgyLCAgODIsICA2NSwgIDg5LCAgNzMsICA3OCwgDQorICAgICA2OCwgIDY5LCAgODgsICAgMCwg
IDg0LCAgNjksIA0KKyAgICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCANCisgICAgICAw
LCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIs
IA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2
OCwgIDgyLCAxNDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgMzcsICAgMCwgICAwLCAgIDAsICA5MCwgICAwLCANCisgICAgICAwLCAgIDMsICAgMCwg
IDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg4LCAgNDAsIA0KKyAg
ICAgIDAsICAgNCwgICAwLCAxMTIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgODUsICA4NSwgDQorICAgICAgMCwgICAwLCAgOTgsICAxNiwgICAwLCAgIDMsIA0KKyAgICAx
MTQsICAxNiwgIDE2LCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsIDEwMSwgICAwLCAg
IDAsICAgMywgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgMTA0LCAgIDAsICAgMCwgICAyLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNjks
ICAgMCwgDQorICAgICAgMCwgICA5LCAyNDIsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICA3MCwgIDE4LCANCisgICAgIDE2LCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgDQorICAgICA3MCwgMTI2LCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwg
DQorICAgICAgMCwgICA1LCAxMTQsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgNiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA1NCwgICAwLCAgIDAsICAgNSwgMTMwLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
IDEyOCwgIDYzLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQs
IDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMA0K
K307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtYWxwaGEyZDExcHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTJkMTFwcy5o
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBo
YTJkMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4NSArMSwxODUgQEAKLSNpZiAwCi0vLwot
Ly8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2
MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90
IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQot
Ly8gVGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAg
ICAgICAyZCAgICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0v
LwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVl
ICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gVEVYQ09PUkQg
ICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAg
Ci0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRB
UkdFVCAgIGZsb2F0ICAgeHl6dwotLy8KLS8vCi0vLyBTYW1wbGVyL1Jlc291cmNlIHRvIERYOSBz
aGFkZXIgc2FtcGxlciBtYXBwaW5nczoKLS8vCi0vLyBUYXJnZXQgU2FtcGxlciBTb3VyY2UgU2Ft
cGxlciAgU291cmNlIFJlc291cmNlCi0vLyAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0g
LS0tLS0tLS0tLS0tLS0tLQotLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAgICAgIHQwICAg
ICAgICAgICAgICAgCi0vLwotLy8KLS8vIExldmVsOSBzaGFkZXIgYnl0ZWNvZGU6Ci0vLwotICAg
IHBzXzJfeAotICAgIGRjbCB0MC54eQotICAgIGRjbF8yZCBzMAotICAgIHRleGxkIHIwLCB0MCwg
czAKLSAgICBtb3YgcjAsIHIwLnh4eHcKLSAgICBtb3Ygb0MwLCByMAotCi0vLyBhcHByb3hpbWF0
ZWx5IDMgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCAyIGFyaXRobWV0aWMpCi1w
c180XzAKLWRjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQKLWRjbF9yZXNvdXJjZV90ZXh0dXJl
MmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54
eQotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotc2FtcGxlIHIwLnh5encsIHYxLnh5
eHgsIHQwLnh5encsIHMwCi1tb3YgbzAueHl6dywgcjAueHh4dwotcmV0IAotLy8gQXBwcm94aW1h
dGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNf
UGFzc3Rocm91Z2hMdW1BbHBoYTJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjQ2
LCAyNDAsIAotICAgIDE1OCwgMjA4LCAyMTQsIDE5NywgMTY2LCAyMjEsIAotICAgICA0NSwgIDU4
LCAyMzUsIDE2NCwgIDEyLCAxNTcsIAotICAgICA2MiwgIDMxLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgIDIzMiwgICAyLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYs
ICAgMCwgICAwLCAgIDAsIAotICAgIDE3NiwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDEsIAotICAg
ICAgMCwgICAwLCAxODAsICAgMSwgICAwLCAgIDAsIAotICAgICA5MiwgICAyLCAgIDAsICAgMCwg
MTgwLCAgIDIsIAotICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIAotICAgIDExMiwg
ICAwLCAgIDAsICAgMCwgMTEyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAy
NTUsIAotICAgICA3MiwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICA0MCwgICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIAotICAgICAz
MSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAz
LCAxNzYsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTQ0
LCAgIDAsICAgOCwgIDE1LCAxNjAsIAotICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAs
IAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIAotICAgICAgMCwgICA4LCAyMjgs
IDE2MCwgICAxLCAgIDAsIAotICAgICAgMCwgICAyLCAgIDAsICAgMCwgIDE1LCAxMjgsIAotICAg
ICAgMCwgICAwLCAxOTIsIDEyOCwgICAxLCAgIDAsIAotICAgICAgMCwgICAyLCAgIDAsICAgOCwg
IDE1LCAxMjgsIAotICAgICAgMCwgICAwLCAyMjgsIDEyOCwgMjU1LCAyNTUsIAotICAgICAgMCwg
ICAwLCAgODMsICA3MiwgIDY4LCAgODIsIAotICAgIDEyOCwgICAwLCAgIDAsICAgMCwgIDY0LCAg
IDAsIAotICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAsIAotICAgICA5MCwgICAwLCAg
IDAsICAgMywgICAwLCAgOTYsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICA4OCwgIDI0LCAgIDAsICAgNCwgICAwLCAxMTIsIAotICAgICAxNiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICA4NSwgIDg1LCAgIDAsICAgMCwgIDk4LCAgMTYsIAotICAgICAg
MCwgICAzLCAgNTAsICAxNiwgIDE2LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAx
LCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgMTA0LCAgIDAsIAotICAgICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgICA2OSwgICAwLCAgIDAsICAgOSwgMjQyLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgOTYsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwg
ICAwLCAgIDAsICAgNSwgMjQyLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgNiwgIDEyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
NjIsICAgMCwgICAwLCAgIDEsIAotICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAxNjAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgIDEwOSwgICAw
LCAgIDAsICAgMCwgIDkyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMCwgICAwLCAgIDAsICAgMCwg
ICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwg
ICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDEzLCAgIDAsIAotICAgICAgMCwgICAwLCAg
ODMsICA5NywgMTA5LCAxMTIsIAotICAgIDEwOCwgMTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIAot
ICAgIDEyMCwgMTE2LCAxMTcsIDExNCwgMTAxLCAgNzAsIAotICAgICAgMCwgIDc3LCAxMDUsICA5
OSwgMTE0LCAxMTEsIAotICAgIDExNSwgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsIAotICAgICA4
MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsIAotICAgICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3
LCAxMDAsIAotICAgIDEwMSwgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIAotICAgIDExMiwgMTA1
LCAxMDgsIDEwMSwgMTE0LCAgMzIsIAotICAgICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQs
IAotICAgICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsIAotICAgICA1NiwgIDUyLCAgIDAs
IDE3MSwgIDczLCAgODMsIAotICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAg
IDAsIAotICAgICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsIAotICAgICAgMCwgICAwLCAgODMsICA4
NiwgIDk1LCAgODAsIAotICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIAotICAgICA3
OCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIAotICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAw
LCAxNzEsIAotICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIAotICAgICA0NCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAs
IAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4NCwg
IDY1LCAgODIsIAotICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEKLX07CisjaWYgMA0K
Ky8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIg
Ni4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisv
LyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAg
ICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAg
IDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZSAgZmxvYXQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJ
bnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1h
c2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBT
Vl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9h
dCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEg
ICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToN
CisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNW
YWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAg
ICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vDQor
Ly8NCisvLyBTYW1wbGVyL1Jlc291cmNlIHRvIERYOSBzaGFkZXIgc2FtcGxlciBtYXBwaW5nczoN
CisvLw0KKy8vIFRhcmdldCBTYW1wbGVyIFNvdXJjZSBTYW1wbGVyICBTb3VyY2UgUmVzb3VyY2UN
CisvLyAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLQ0KKy8v
IHMwICAgICAgICAgICAgIHMwICAgICAgICAgICAgICB0MCAgICAgICAgICAgICAgIA0KKy8vDQor
Ly8NCisvLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOg0KKy8vDQorICAgIHBzXzJfeA0KKyAgICBk
Y2wgdDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwgczANCisgICAgbW92
IHIwLCByMC54eHh3DQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAzIGlu
c3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMiBhcml0aG1ldGljKQ0KK3BzXzRfMA0K
K2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChm
bG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQor
ZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEueHl4
eCwgdDAueHl6dywgczANCittb3YgbzAueHl6dywgcjAueHh4dw0KK3JldCANCisvLyBBcHByb3hp
bWF0ZWx5IDMgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUg
Z19QU19QYXNzdGhyb3VnaEx1bUFscGhhMkRbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAg
NjcsIDI0NiwgMjQwLCANCisgICAgMTU4LCAyMDgsIDIxNCwgMTk3LCAxNjYsIDIyMSwgDQorICAg
ICA0NSwgIDU4LCAyMzUsIDE2NCwgIDEyLCAxNTcsIA0KKyAgICAgNjIsICAzMSwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgMjMyLCAgIDIsICAgMCwgICAwLCAgIDYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNzYsICAgMCwgICAwLCAgIDAsICA1
NiwgICAxLCANCisgICAgICAwLCAgIDAsIDE4MCwgICAxLCAgIDAsICAgMCwgDQorICAgICA5Miwg
ICAyLCAgIDAsICAgMCwgMTgwLCAgIDIsIA0KKyAgICAgIDAsICAgMCwgIDY1LCAxMTEsIDExMCwg
IDU3LCANCisgICAgMTEyLCAgIDAsICAgMCwgICAwLCAxMTIsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KKyAgICAgNzIsICAgMCwgICAwLCAgIDAsICA0MCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNDAsICAgMCwgICAxLCAgIDAsICAzNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICA0MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEs
ICAgMiwgMjU1LCAyNTUsIA0KKyAgICAgMzEsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCANCisg
ICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMsIDE3NiwgDQorICAgICAzMSwgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE0NCwgICAwLCAgIDgsICAxNSwgMTYwLCANCisgICAg
IDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgDQorICAgICAxNSwgMTI4LCAgIDAsICAgMCwg
MjI4LCAxNzYsIA0KKyAgICAgIDAsICAgOCwgMjI4LCAxNjAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDIsICAgMCwgICAwLCAgMTUsIDEyOCwgDQorICAgICAgMCwgICAwLCAxOTIsIDEyOCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDgsICAxNSwgMTI4LCANCisgICAgICAwLCAg
IDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwLCAgODMsICA3MiwgIDY4LCAg
ODIsIA0KKyAgICAxMjgsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAzMiwgICAwLCAgIDAsICAgMCwgDQorICAgICA5MCwgICAwLCAgIDAsICAgMywgICAwLCAgOTYs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDg4LCAgMjQsICAg
MCwgICA0LCAgIDAsIDExMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgODUsICA4NSwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsICA1MCwg
IDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAxMDQsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
NjksICAgMCwgICAwLCAgIDksIDI0MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICA3MCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDcwLCAxMjYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICA5NiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAg
MCwgICAwLCAgIDUsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgNiwgIDEyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4MiwgIDY4LCAN
CisgICAgIDY5LCAgNzAsIDE2MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAg
MSwgICAwLCAgIDAsIA0KKyAgICAxMDksICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAxMDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgNSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgMjU1LCAy
NTUsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgMTMsICAgMCwgDQorICAgICAgMCwgICAwLCAgODMsICA5NywgMTA5LCAxMTIs
IA0KKyAgICAxMDgsIDEwMSwgMTE0LCAgIDAsICA4NCwgMTAxLCANCisgICAgMTIwLCAxMTYsIDEx
NywgMTE0LCAxMDEsICA3MCwgDQorICAgICAgMCwgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIA0K
KyAgICAxMTUsIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCANCisgICAgIDgyLCAgNDEsICAzMiwg
IDcyLCAgNzYsICA4MywgDQorICAgICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIA0KKyAg
ICAxMDEsIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCANCisgICAgMTEyLCAxMDUsIDEwOCwgMTAx
LCAxMTQsICAzMiwgDQorICAgICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsIA0KKyAgICAg
NDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCANCisgICAgIDU2LCAgNTIsICAgMCwgMTcxLCAg
NzMsICA4MywgDQorICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIs
ICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDgz
LCAgODYsICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQor
ICAgICA3OCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIA0KKyAgICAgNzksICA3OSwgIDgyLCAg
NjgsICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAg
ICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4Mywg
IDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwg
MTcxDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTNkMTFw
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhM2Qx
MXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1
bWFscGhhM2QxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTU2ICsxLDE1NiBAQAotI2lmIDAK
LS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2
LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0vLyBOYW1l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGlt
IFNsb3QgRWxlbWVudHMKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0t
LS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQotLy8gU2FtcGxlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAg
ICAxCi0vLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0
ICAgICAgICAgIDNkICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVy
ZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lz
VmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAg
ICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBTVl9S
RU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJTkRFWCAgICB1
aW50ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAy
ICAgICBOT05FICAgZmxvYXQgICB4eXogCi0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0v
LwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVl
ICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dwotLy8KLXBzXzRfMAot
ZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdAotZGNsX3Jlc291cmNlX3RleHR1cmUzZCAoZmxv
YXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5egotZGNs
X291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotc2FtcGxlIHIwLnh5encsIHYyLnh5engsIHQw
Lnh5encsIHMwCi1tb3YgbzAueHl6dywgcjAueHh4dwotcmV0IAotLy8gQXBwcm94aW1hdGVseSAz
IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Ro
cm91Z2hMdW1BbHBoYTNEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjI0LCAxNTIs
IAotICAgIDIwOCwgMjI3LCAgNDQsIDEwNiwgIDYyLCAyMzUsIAotICAgIDEyOSwgIDk3LCAyMDcs
IDIxMywgIDI5LCAyMzIsIAotICAgIDE2MywgICA2LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAg
IDE1NiwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIsICAgMCwg
ICAwLCAgIDAsIAotICAgIDIyMCwgICAwLCAgIDAsICAgMCwgMTAwLCAgIDEsIAotICAgICAgMCwg
ICAwLCAxNTIsICAgMSwgICAwLCAgIDAsIAotICAgICAzMiwgICAyLCAgIDAsICAgMCwgIDgyLCAg
NjgsIAotICAgICA2OSwgIDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAot
ICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAsICAg
MSwgICAwLCAgIDAsIAotICAgIDEwOSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgIDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDUs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIAotICAg
IDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwg
IDEzLCAgIDAsIAotICAgICAgMCwgICAwLCAgODMsICA5NywgMTA5LCAxMTIsIAotICAgIDEwOCwg
MTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIAotICAgIDEyMCwgMTE2LCAxMTcsIDExNCwgMTAxLCAg
NzAsIAotICAgICAgMCwgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIAotICAgIDExNSwgMTExLCAx
MDIsIDExNiwgIDMyLCAgNDAsIAotICAgICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsIAot
ICAgICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIAotICAgIDEwMSwgMTE0LCAgMzIsICA2
NywgMTExLCAxMDksIAotICAgIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIsIAotICAgICA1
NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsIAotICAgICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0
LCAgNTEsIAotICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMsIAotICAgICA3MSwgIDc4
LCAxMjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAs
IAotICAgICAgMCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAgMCwgICAwLCAgOTIsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAxMTgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDcsIAotICAgICAgMCwgICAwLCAgODMsICA4
NiwgIDk1LCAgODAsIAotICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIAotICAgICA3
OCwgICAwLCAgODMsICA4NiwgIDk1LCAgODIsIAotICAgICA2OSwgIDc4LCAgNjgsICA2OSwgIDgy
LCAgODQsIAotICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgNjUsIAotICAgICA4MiwgIDgy
LCAgNjUsICA4OSwgIDczLCAgNzgsIAotICAgICA2OCwgIDY5LCAgODgsICAgMCwgIDg0LCAgNjks
IAotICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIAotICAgICAgMCwgMTcxLCAgNzks
ICA4MywgIDcxLCAgNzgsIAotICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAg
IDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIAotICAgICA3MSwgIDY5LCAg
ODQsICAgMCwgMTcxLCAxNzEsIAotICAgICA4MywgIDcyLCAgNjgsICA4MiwgMTI4LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIAotICAgICAzMiwgICAwLCAgIDAsICAg
MCwgIDkwLCAgIDAsIAotICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDg4LCAgNDAsIAotICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIAotICAgICAgMCwgICAw
LCAgOTgsICAxNiwgICAwLCAgIDMsIAotICAgIDExNCwgIDE2LCAgMTYsICAgMCwgICAyLCAgIDAs
IAotICAgICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIAotICAgIDI0MiwgIDMyLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIAotICAgICAgMCwgICA5LCAyNDIsICAgMCwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMTgsIAotICAgICAxNiwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgMTI2LCAgMTYsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAyNDIsICAzMiwgIDE2LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA2LCAgMTIsIAotICAgICAxNiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQsIAotICAgICA2
NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwCi19OworI2lmIDANCisv
Lw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYu
My45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAg
IERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAw
ICAgICAgICAxDQorLy8gVGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUg
IGZsb2F0NCAgICAgICAgICAzZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5w
dXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1Zf
UE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQg
ICAgICAgDQorLy8gU1ZfUkVOREVSVEFSR0VUQVJSQVlJTkRFWCAgICAgMCAgIHggICAgICAgICAg
IDEgIFJUSU5ERVggICAgdWludCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLw0KKy8vDQorLy8g
T3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAg
TWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8v
IFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZs
b2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0K
K2RjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2Rj
bF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBz
IDENCitzYW1wbGUgcjAueHl6dywgdjIueHl6eCwgdDAueHl6dywgczANCittb3YgbzAueHl6dywg
cjAueHh4dw0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDMgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNl
ZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaEx1bUFscGhhM0RbXSA9
DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDIyNCwgMTUyLCANCisgICAgMjA4LCAyMjcs
ICA0NCwgMTA2LCAgNjIsIDIzNSwgDQorICAgIDEyOSwgIDk3LCAyMDcsIDIxMywgIDI5LCAyMzIs
IA0KKyAgICAxNjMsICAgNiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTU2LCAgIDIsICAg
MCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAyMjAsICAgMCwgICAwLCAgIDAsIDEwMCwgICAxLCANCisgICAgICAwLCAgIDAsIDE1Miwg
ICAxLCAgIDAsICAgMCwgDQorICAgICAzMiwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAg
ICAgNjksICA3MCwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAg
IDAsICAgMCwgDQorICAgIDEwOSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgIDEwMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICA1LCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwg
DQorICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAxMywgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQor
ICAgIDEwOCwgMTAxLCAxMTQsICAgMCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAx
MTQsIDEwMSwgIDcwLCANCisgICAgICAwLCAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgDQorICAg
IDExNSwgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsIA0KKyAgICAgODIsICA0MSwgIDMyLCAgNzIs
ICA3NiwgIDgzLCANCisgICAgIDc2LCAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgDQorICAgIDEw
MSwgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIA0KKyAgICAxMTIsIDEwNSwgMTA4LCAxMDEsIDEx
NCwgIDMyLCANCisgICAgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgDQorICAgICA0OCwg
IDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsIA0KKyAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3Mywg
IDgzLCANCisgICAgIDcxLCAgNzgsIDEyOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAw
LCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCAN
CisgICAgICAwLCAgIDAsICA5MiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTgsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwg
ICA3LCAgIDcsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCANCisgICAgIDc5
LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3OCwgICAwLCAgODMsICA4NiwgIDk1
LCAgODIsIA0KKyAgICAgNjksICA3OCwgIDY4LCAgNjksICA4MiwgIDg0LCANCisgICAgIDY1LCAg
ODIsICA3MSwgIDY5LCAgODQsICA2NSwgDQorICAgICA4MiwgIDgyLCAgNjUsICA4OSwgIDczLCAg
NzgsIA0KKyAgICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwgIDY5LCANCisgICAgIDg4LCAgNjcs
ICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAgICAgMCwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgs
IA0KKyAgICAgNDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAg
OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAw
LCAxNzEsIDE3MSwgDQorICAgICA4MywgIDcyLCAgNjgsICA4MiwgMTI4LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAg
OTAsICAgMCwgDQorICAgICAgMCwgICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICA4OCwgIDQwLCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAg
MCwgIDk4LCAgMTYsICAgMCwgICAzLCANCisgICAgMTE0LCAgMTYsICAxNiwgICAwLCAgIDIsICAg
MCwgDQorICAgICAgMCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwg
IDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQy
LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxOCwgDQor
ICAgICAxNiwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMjQyLCAgMzIs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAxMiwgDQorICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4
MywgIDg0LCANCisgICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocjJkMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aHIyZDExcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJv
dWdocjJkMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5OCArMSwxOTggQEAKLSNpZiAwCi0v
LwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4z
Ljk2MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBT
bG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAg
MQotLy8gVGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAg
ICAgICAgICAyZCAgICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6
Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gVEVYQ09P
UkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4
eSAgCi0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAg
ICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
IFRBUkdFVCAgIGZsb2F0ICAgeHl6dwotLy8KLS8vCi0vLyBTYW1wbGVyL1Jlc291cmNlIHRvIERY
OSBzaGFkZXIgc2FtcGxlciBtYXBwaW5nczoKLS8vCi0vLyBUYXJnZXQgU2FtcGxlciBTb3VyY2Ug
U2FtcGxlciAgU291cmNlIFJlc291cmNlCi0vLyAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0t
LS0gLS0tLS0tLS0tLS0tLS0tLQotLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAgICAgIHQw
ICAgICAgICAgICAgICAgCi0vLwotLy8KLS8vIExldmVsOSBzaGFkZXIgYnl0ZWNvZGU6Ci0vLwot
ICAgIHBzXzJfeAotICAgIGRlZiBjMCwgMSwgMCwgMCwgMAotICAgIGRjbCB0MC54eQotICAgIGRj
bF8yZCBzMAotICAgIHRleGxkIHIwLCB0MCwgczAKLSAgICBtYWQgcjAsIHIwLngsIGMwLnh5eXks
IGMwLnl5eXgKLSAgICBtb3Ygb0MwLCByMAotCi0vLyBhcHByb3hpbWF0ZWx5IDMgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCAyIGFyaXRobWV0aWMpCi1wc180XzAKLWRjbF9zYW1w
bGVyIHMwLCBtb2RlX2RlZmF1bHQKLWRjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZsb2F0
LGZsb2F0LGZsb2F0KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQotZGNsX291dHB1dCBv
MC54eXp3Ci1kY2xfdGVtcHMgMQotc2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQwLnh5encsIHMw
Ci1tb3YgbzAueCwgcjAueAotbW92IG8wLnl6dywgbCgwLDAsMCwxLjAwMDAwMCkKLXJldCAKLS8v
IEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3Qg
QllURSBnX1BTX1Bhc3N0aHJvdWdoUjJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2Nywg
MjEyLCAyNTEsIAotICAgIDExNywgMjUwLCAgOTksIDE4NSwgIDI4LCAgNDQsIAotICAgIDE3OCwg
IDE0LCAgODMsIDEzMywgMTczLCAgIDAsIAotICAgIDE4MiwgMTk2LCAgIDEsICAgMCwgICAwLCAg
IDAsIAotICAgICA0MCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAg
NTYsICAgMCwgICAwLCAgIDAsIAotICAgIDIwOCwgICAwLCAgIDAsICAgMCwgMTIwLCAgIDEsIAot
ICAgICAgMCwgICAwLCAyNDQsICAgMSwgICAwLCAgIDAsIAotICAgIDE1NiwgICAyLCAgIDAsICAg
MCwgMjQ0LCAgIDIsIAotICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIAotICAgIDE0
NCwgICAwLCAgIDAsICAgMCwgMTQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1
LCAyNTUsIAotICAgIDEwNCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAs
IAotICAgICA0MCwgICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIAotICAg
ICA4MSwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsIAotICAgICAxNSwgMTYwLCAgIDAsICAgMCwg
MTI4LCAgNjMsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAg
IDAsIAotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIAotICAgICAzMSwgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIAot
ICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIAotICAgICAxNSwgMTI4LCAgIDAsICAg
MCwgMjI4LCAxNzYsIAotICAgICAgMCwgICA4LCAyMjgsIDE2MCwgICA0LCAgIDAsIAotICAgICAg
MCwgICA0LCAgIDAsICAgMCwgIDE1LCAxMjgsIAotICAgICAgMCwgICAwLCAgIDAsIDEyOCwgICAw
LCAgIDAsIAotICAgICA4NCwgMTYwLCAgIDAsICAgMCwgIDIxLCAxNjAsIAotICAgICAgMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDgsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxMjgs
IAotICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgIDgzLCAgNzIsIAotICAgICA2OCwgIDgyLCAxNjAs
ICAgMCwgICAwLCAgIDAsIAotICAgICA2NCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgOTAsICAgMCwgICAwLCAgIDMsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODgsICAyNCwgICAwLCAgIDQsIAotICAgICAgMCwg
MTEyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODUsICA4NSwgICAwLCAg
IDAsIAotICAgICA5OCwgIDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIAotICAgICAxNiwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAgMzIsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAwLCAgIDAsICAg
MiwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIAotICAgIDI0
MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2
LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgICAxOCwgIDMyLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA4LCAyMjYsICAzMiwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgNjQsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAgNjMsIAotICAgICA2MiwgICAwLCAg
IDAsICAgMSwgIDgzLCAgODQsIAotICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgODIsICA2OCwgIDY5LCAgNzAsIAotICAgIDE2MCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MiwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgNCwgMjU1
LCAyNTUsIAotICAgICAgMCwgICAxLCAgIDAsICAgMCwgMTA5LCAgIDAsIAotICAgICAgMCwgICAw
LCAgOTIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgMTAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwg
ICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgICA4MywgIDk3LCAx
MDksIDExMiwgMTA4LCAxMDEsIAotICAgIDExNCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIAot
ICAgIDExNywgMTE0LCAxMDEsICA3MCwgICAwLCAgNzcsIAotICAgIDEwNSwgIDk5LCAxMTQsIDEx
MSwgMTE1LCAxMTEsIAotICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIAotICAgICAz
MiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsIAotICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAx
LCAxMTQsIAotICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIAotICAgIDEwOCwgMTAx
LCAxMTQsICAzMiwgIDU0LCAgNDYsIAotICAgICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgs
IAotICAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsIAotICAgICAgMCwgMTcxLCAgNzMs
ICA4MywgIDcxLCAgNzgsIAotICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAg
IDAsIAotICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4
MCwgIDc5LCAgODMsIAotICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIAotICAgICA4
NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIAotICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgMTcx
LCAxNzEsIAotICAgICA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDMyLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAxNSwgICAwLCAgIDAsICAgMCwgIDgzLCAgODYsIAotICAgICA5NSwgIDg0LCAgNjUsICA4Miwg
IDcxLCAgNjksIAotICAgICA4NCwgICAwLCAxNzEsIDE3MQotfTsKKyNpZiAwDQorLy8NCisvLyBH
ZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4x
NjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xv
dCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAg
MQ0KKy8vIFRleHR1cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQg
ICAgICAgICAgMmQgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25h
dHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3Rl
ciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9O
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0K
Ky8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAg
IGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8NCisvLw0KKy8vIFNh
bXBsZXIvUmVzb3VyY2UgdG8gRFg5IHNoYWRlciBzYW1wbGVyIG1hcHBpbmdzOg0KKy8vDQorLy8g
VGFyZ2V0IFNhbXBsZXIgU291cmNlIFNhbXBsZXIgIFNvdXJjZSBSZXNvdXJjZQ0KKy8vIC0tLS0t
LS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tDQorLy8gczAgICAgICAg
ICAgICAgczAgICAgICAgICAgICAgIHQwICAgICAgICAgICAgICAgDQorLy8NCisvLw0KKy8vIExl
dmVsOSBzaGFkZXIgYnl0ZWNvZGU6DQorLy8NCisgICAgcHNfMl94DQorICAgIGRlZiBjMCwgMSwg
MCwgMCwgMA0KKyAgICBkY2wgdDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0
MCwgczANCisgICAgbWFkIHIwLCByMC54LCBjMC54eXl5LCBjMC55eXl4DQorICAgIG1vdiBvQzAs
IHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4
dHVyZSwgMiBhcml0aG1ldGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1
bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDAN
CitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3Rl
bXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczANCittb3YgbzAueCwg
cjAueA0KK21vdiBvMC55encsIGwoMCwwLDAsMS4wMDAwMDApDQorcmV0IA0KKy8vIEFwcHJveGlt
YXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBn
X1BTX1Bhc3N0aHJvdWdoUjJEW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAyMTIs
IDI1MSwgDQorICAgIDExNywgMjUwLCAgOTksIDE4NSwgIDI4LCAgNDQsIA0KKyAgICAxNzgsICAx
NCwgIDgzLCAxMzMsIDE3MywgICAwLCANCisgICAgMTgyLCAxOTYsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA0MCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDU2LCAgIDAsICAgMCwgICAwLCANCisgICAgMjA4LCAgIDAsICAgMCwgICAwLCAxMjAsICAgMSwg
DQorICAgICAgMCwgICAwLCAyNDQsICAgMSwgICAwLCAgIDAsIA0KKyAgICAxNTYsICAgMiwgICAw
LCAgIDAsIDI0NCwgICAyLCANCisgICAgICAwLCAgIDAsICA2NSwgMTExLCAxMTAsICA1NywgDQor
ICAgIDE0NCwgICAwLCAgIDAsICAgMCwgMTQ0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDIsIDI1NSwgMjU1LCANCisgICAgMTA0LCAgIDAsICAgMCwgICAwLCAgNDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDQwLCAgIDAsICAgMSwgICAwLCAgMzYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDIsIDI1
NSwgMjU1LCANCisgICAgIDgxLCAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgDQorICAgICAxNSwg
MTYwLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAzMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDEyOCwgICAwLCAgIDAsICAgMywgMTc2
LCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAgICAgMCwgMTQ0LCAg
IDAsICAgOCwgIDE1LCAxNjAsIA0KKyAgICAgNjYsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAN
CisgICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDE3NiwgDQorICAgICAgMCwgICA4LCAyMjgs
IDE2MCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgNCwgICAwLCAgIDAsICAxNSwgMTI4LCANCisg
ICAgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwgDQorICAgICA4NCwgMTYwLCAgIDAsICAg
MCwgIDIxLCAxNjAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCANCisgICAg
IDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDEyOCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMCwg
IDgzLCAgNzIsIA0KKyAgICAgNjgsICA4MiwgMTYwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY0
LCAgIDAsICAgMCwgICAwLCAgNDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgOTAsICAgMCwgICAw
LCAgIDMsIA0KKyAgICAgIDAsICA5NiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA4OCwgIDI0LCAgIDAsICAgNCwgDQorICAgICAgMCwgMTEyLCAgMTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDg1LCAgODUsICAgMCwgICAwLCANCisgICAgIDk4LCAgMTYs
ICAgMCwgICAzLCAgNTAsICAxNiwgDQorICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAxMDEsICAgMCwgICAwLCAgIDMsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNCwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDY5LCAgIDAsICAgMCwgICA5LCANCisgICAgMjQyLCAgIDAsICAxNiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgIDE4LCAgMzIsICAxNiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDgsIDIyNiwgIDMyLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgNjQsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAgICAgNjIsICAgMCwg
ICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgyLCAgNjgsICA2OSwgIDcwLCAN
CisgICAgMTYwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICA0LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAxLCAgIDAsICAg
MCwgMTA5LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA1LCAg
IDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAy
NTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDk3LCAxMDksIDExMiwgMTA4LCAxMDEs
IA0KKyAgICAxMTQsICAgMCwgIDg0LCAxMDEsIDEyMCwgMTE2LCANCisgICAgMTE3LCAxMTQsIDEw
MSwgIDcwLCAgIDAsICA3NywgDQorICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIA0K
KyAgICAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCANCisgICAgIDMyLCAgNzIsICA3Niwg
IDgzLCAgNzYsICAzMiwgDQorICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsIA0KKyAg
ICAgMzIsICA2NywgMTExLCAxMDksIDExMiwgMTA1LCANCisgICAgMTA4LCAxMDEsIDExNCwgIDMy
LCAgNTQsICA0NiwgDQorICAgICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsIA0KKyAgICAg
NDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCANCisgICAgICAwLCAxNzEsICA3MywgIDgzLCAg
NzEsICA3OCwgDQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAg
MCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1
LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgDQor
ICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIsICA2OCwgICAwLCAx
NzEsIDE3MSwgMTcxLCANCisgICAgIDc5LCAgODMsICA3MSwgIDc4LCAgNDQsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAs
ICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAgODMsICA4NiwgDQorICAgICA5NSwg
IDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAgODQsICAgMCwgMTcxLCAxNzENCit9Ow0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIyZGkxMXBzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocjJkaTExcHMuaAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocjJkaTExcHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwxNjcgKzEsMTY3IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3Nv
ZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJl
c291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0t
IC0tLS0tLS0tCi0vLyBUZXh0dXJlSSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAg
IHNpbnQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNp
Z25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04g
ICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0v
LyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBm
bG9hdCAgIHh5ICAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAg
ICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVz
ZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2Vf
dGV4dHVyZTJkIChzaW50LHNpbnQsc2ludCxzaW50KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2
MS54eQotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotcmVzaW5mb191aW50IHIwLnh5
encsIGwoMCksIHQwLnh5encKLXV0b2YgcjAueHksIHIwLnh5eHgKLW11bCByMC54eSwgcjAueHl4
eCwgdjEueHl4eAotZnRvaSByMC54eSwgcjAueHl4eAotbW92IHIwLnp3LCBsKDAsMCwwLDApCi1s
ZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3Ci1tb3YgbzAueCwgcjAueAotbW92IG8wLnl6dywg
bCgwLDAsMCwwKQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVz
ZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSMkRJW10gPQotewotICAg
ICA2OCwgIDg4LCAgNjYsICA2NywgMTIzLCAyMzAsIAotICAgICA0NSwgIDE4LCAgNjMsIDIxNywg
IDEyLCAyMTAsIAotICAgIDE1MSwgMjU0LCAgMTYsICA3OCwgMTA3LCAyMTEsIAotICAgICA1Nywg
MjU1LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDIwOCwgICAyLCAgIDAsICAgMCwgICA1LCAg
IDAsIAotICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAotICAgIDE4MCwgICAwLCAg
IDAsICAgMCwgIDEyLCAgIDEsIAotICAgICAgMCwgICAwLCAgNjQsICAgMSwgICAwLCAgIDAsIAot
ICAgICA4NCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAxMjAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICA2OSwgICAw
LCAgIDAsICAgMCwgIDYwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAyNTUs
IDI1NSwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgICA4NCwgMTAxLCAxMjAsIDExNiwg
MTE3LCAxMTQsIAotICAgIDEwMSwgIDczLCAgIDAsICA3NywgMTA1LCAgOTksIAotICAgIDExNCwg
MTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIAotICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAg
NzIsIAotICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIAotICAgICA5NywgMTAwLCAx
MDEsIDExNCwgIDMyLCAgNjcsIAotICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIAot
ICAgIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIAotICAgICA1NywgIDU0LCAgNDgsICA0
OCwgIDQ2LCAgNDksIAotICAgICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIAotICAgICA3
MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAs
ICAgMCwgIDY4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMywgICAzLCAgIDAsICAgMCwgIDgzLCAgODYsIAotICAgICA5NSwg
IDgwLCAgNzksICA4MywgIDczLCAgODQsIAotICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDg0LCAg
NjksIAotICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIAotICAgICAgMCwgMTcxLCAx
NzEsIDE3MSwgIDc5LCAgODMsIAotICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgMzIsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1
LCAgIDAsIAotICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIAotICAgICA2NSwgIDgy
LCAgNzEsICA2OSwgIDg0LCAgIDAsIAotICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIs
IAotICAgICAxMiwgICAxLCAgIDAsICAgMCwgIDY0LCAgIDAsIAotICAgICAgMCwgICAwLCAgNjcs
ICAgMCwgICAwLCAgIDAsIAotICAgICA4OCwgIDI0LCAgIDAsICAgNCwgICAwLCAxMTIsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1MSwgIDUxLCAgIDAsICAgMCwg
IDk4LCAgMTYsIAotICAgICAgMCwgICAzLCAgNTAsICAxNiwgIDE2LCAgIDAsIAotICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIAotICAgICAgMCwgICAyLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICA2MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0LCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDg2LCAgIDAsIAotICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgNywgIDUwLCAgIDAs
IAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgICAwLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgIDI3LCAgIDAsIAotICAgICAgMCwgICA1LCAgNTAsICAgMCwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIAotICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgOCwgMTk0LCAg
IDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgIDY0LCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDUsICAg
MCwgICAwLCAgIDcsIAotICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgNzAsICAxNCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcw
LCAxMjYsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAw
LCAgIDAsICAgNSwgIDE4LCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQs
ICAgMCwgICAwLCAgIDgsIAotICAgIDIyNiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDIsICA2NCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIAotICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1LCAg
ODQsIAotICAgIDExNiwgICAwLCAgIDAsICAgMCwgICA5LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQor
Ly8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2
MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGlt
IFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBUZXh0dXJlSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAgICAgIDJkICAgIDAgICAg
ICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAg
IFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAg
ICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0K
Ky8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0t
LS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRB
UkdFVCAgICAgaW50ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX3Jlc291cmNlX3RleHR1cmUy
ZCAoc2ludCxzaW50LHNpbnQsc2ludCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQor
ZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHl6dywg
bCgwKSwgdDAueHl6dw0KK3V0b2YgcjAueHksIHIwLnh5eHgNCittdWwgcjAueHksIHIwLnh5eHgs
IHYxLnh5eHgNCitmdG9pIHIwLnh5LCByMC54eXh4DQorbW92IHIwLnp3LCBsKDAsMCwwLDApDQor
bGQgcjAueHl6dywgcjAueHl6dywgdDAueHl6dw0KK21vdiBvMC54LCByMC54DQorbW92IG8wLnl6
dywgbCgwLDAsMCwwKQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDkgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFIyRElbXSA9
DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDEyMywgMjMwLCANCisgICAgIDQ1LCAgMTgs
ICA2MywgMjE3LCAgMTIsIDIxMCwgDQorICAgIDE1MSwgMjU0LCAgMTYsICA3OCwgMTA3LCAyMTEs
IA0KKyAgICAgNTcsIDI1NSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMjA4LCAgIDIsICAg
MCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAxODAsICAgMCwgICAwLCAgIDAsICAxMiwgICAxLCANCisgICAgICAwLCAgIDAsICA2NCwg
ICAxLCAgIDAsICAgMCwgDQorICAgICA4NCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAg
ICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAg
IDAsICAgMCwgDQorICAgICA2OSwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDQs
ICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAg
MCwgDQorICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQsIA0KKyAgICAxMDEsICA3Mywg
ICAwLCAgNzcsIDEwNSwgIDk5LCANCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwg
DQorICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIA0KKyAgICAgNzYsICA4MywgIDc2
LCAgMzIsICA4MywgMTA0LCANCisgICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgDQor
ICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAzMiwgIDU0LCAg
NDYsICA1MSwgIDQ2LCANCisgICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgDQorICAg
ICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIA0KKyAgICAgNzMsICA4MywgIDcxLCAgNzgs
ICA4MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
OCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAgMCwgICAwLCAgIDAsICA2OCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4NiwgDQorICAgICA5NSwgIDgwLCAg
NzksICA4MywgIDczLCAgODQsIA0KKyAgICAgNzMsICA3OSwgIDc4LCAgIDAsICA4NCwgIDY5LCAN
CisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAgICAgMCwgMTcxLCAxNzEs
IDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDQ0LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgMzIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDg0LCANCisgICAgIDY1
LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4
LCAgODIsIA0KKyAgICAgMTIsICAgMSwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAg
IDAsICA2NywgICAwLCAgIDAsICAgMCwgDQorICAgICA4OCwgIDI0LCAgIDAsICAgNCwgICAwLCAx
MTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDUxLCAgNTEs
ICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAgICAgMCwgICAzLCAgNTAsICAxNiwgIDE2LCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0
MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0K
KyAgICAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYxLCAgMTYsICAgMCwg
ICA3LCAyNDIsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgMTI2
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg2LCAgIDAsIA0KKyAgICAg
IDAsICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYs
ICAgMCwgICAwLCAgIDcsICA1MCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICA3MCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDcwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAg
MCwgDQorICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA3MCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICA1NCwgICAwLCAgIDAsICAgOCwgMTk0LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgDQorICAg
IDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTQs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgDQorICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsICAx
OCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwg
ICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwg
ICA4LCANCisgICAgMjI2LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDIsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAsICAgMSwgIDgzLCAgODQsICA2NSwgIDg0LCAN
CisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDANCit9
Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIyZHVpMTFwcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIyZHVpMTFwcy5oCShyZXZpc2lvbiAx
OTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyMmR1aTExcHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwxNjcgKzEsMTY3IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBN
aWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8K
LS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0t
LSAtLS0tIC0tLS0tLS0tCi0vLyBUZXh0dXJlVUkgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZSAgIHVpbnQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElu
cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9T
SVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAg
ICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5P
TkUgICBmbG9hdCAgIHh5ICAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1h
dCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVz
b3VyY2VfdGV4dHVyZTJkICh1aW50LHVpbnQsdWludCx1aW50KSB0MAotZGNsX2lucHV0X3BzIGxp
bmVhciB2MS54eQotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotcmVzaW5mb191aW50
IHIwLnh5encsIGwoMCksIHQwLnh5encKLXV0b2YgcjAueHksIHIwLnh5eHgKLW11bCByMC54eSwg
cjAueHl4eCwgdjEueHl4eAotZnRvaSByMC54eSwgcjAueHl4eAotbW92IHIwLnp3LCBsKDAsMCww
LDApCi1sZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3Ci1tb3YgbzAueCwgcjAueAotbW92IG8w
Lnl6dywgbCgwLDAsMCwwKQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNs
b3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSMkRVSVtdID0K
LXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAgNCwgIDI2LCAKLSAgICAgNjIsIDEwOSwgIDk0
LCAgNDUsIDEyNCwgMjM4LCAKLSAgICAxNTAsIDI0NSwgIDg1LCAxNTUsIDE4NSwgIDM3LCAKLSAg
ICAyMzQsIDE1MiwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDgsICAgMiwgICAwLCAgIDAs
ICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAKLSAgICAxODAs
ICAgMCwgICAwLCAgIDAsICAxMiwgICAxLCAKLSAgICAgIDAsICAgMCwgIDY0LCAgIDEsICAgMCwg
ICAwLCAKLSAgICAgODQsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCAKLSAgICAgNjksICA3MCwg
MTIwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAg
IDAsICAgMCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAg
NzAsICAgMCwgICAwLCAgIDAsICA2MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAg
MCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgODQsIDEwMSwgMTIw
LCAxMTYsIDExNywgMTE0LCAKLSAgICAxMDEsICA4NSwgIDczLCAgIDAsICA3NywgMTA1LCAKLSAg
ICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAKLSAgICAxMTYsICAzMiwgIDQwLCAgODIs
ICA0MSwgIDMyLCAKLSAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAKLSAgICAxMDQs
ICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwg
MTA4LCAKLSAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAKLSAgICAgNDYsICA1Nywg
IDU0LCAgNDgsICA0OCwgIDQ2LCAKLSAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAK
LSAgICAgNzMsICA4MywgIDcxLCAgNzgsICA4MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsICA1NiwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTUsICAg
MCwgICAwLCAgIDAsICA2OCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMywgICAwLCAgIDAsICA4MywgIDg2LCAKLSAg
ICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCAKLSAgICAgNzMsICA3OSwgIDc4LCAgIDAs
ICA4NCwgIDY5LCAKLSAgICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAKLSAgICAgIDAs
IDE3MSwgMTcxLCAxNzEsICA3OSwgIDgzLCAKLSAgICAgNzEsICA3OCwgIDQ0LCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAgIDAsICAgMCwg
IDMyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAxNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDg0LCAKLSAgICAg
NjUsICA4MiwgIDcxLCAgNjksICA4NCwgICAwLCAKLSAgICAxNzEsIDE3MSwgIDgzLCAgNzIsICA2
OCwgIDgyLCAKLSAgICAgMTIsICAgMSwgICAwLCAgIDAsICA2NCwgICAwLCAKLSAgICAgIDAsICAg
MCwgIDY3LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODgsICAyNCwgICAwLCAgIDQsICAgMCwgMTEy
LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjgsICA2OCwgICAw
LCAgIDAsICA5OCwgIDE2LCAKLSAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAwLCAKLSAg
ICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAgMzIs
ICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAKLSAgICAgIDAs
ICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0Miwg
ICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICA2NCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCAKLSAgICAgIDAsICAgNSwgIDUwLCAg
IDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAwLCAKLSAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTYsICAgMCwgICAwLCAgIDcsICA1
MCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsICAg
MCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMTYsICAxNiwgICAw
LCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyNywgICAwLCAKLSAgICAgIDAsICAgNSwgIDUw
LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAwLCAKLSAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDgs
IDE5NCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIs
ICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
IDQ1LCAgIDAsICAgMCwgICA3LCAKLSAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgIDcwLCAgMTQsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA3MCwgMTI2LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
NTQsICAgMCwgICAwLCAgIDUsICAxOCwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgIDU0LCAgIDAsICAgMCwgICA4LCAKLSAgICAyMjYsICAzMiwgIDE2LCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAyLCAgNjQsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCAKLSAgICAgIDAsICAgMSwgIDgzLCAgODQs
ICA2NSwgIDg0LCAKLSAgICAxMTYsICAgMCwgICAwLCAgIDAsICAgOSwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwCi19OworI2lmIDAN
CisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVy
IDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQor
Ly8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAg
ICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gVGV4dHVy
ZVVJICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgICB1aW50NCAgICAgICAgICAyZCAg
ICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQor
Ly8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBG
b3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQg
ICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAg
DQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICBUQVJHRVQgICAgdWludCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9yZXNvdXJjZV90
ZXh0dXJlMmQgKHVpbnQsdWludCx1aW50LHVpbnQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2
MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQorcmVzaW5mb191aW50IHIw
Lnh5encsIGwoMCksIHQwLnh5encNCit1dG9mIHIwLnh5LCByMC54eXh4DQorbXVsIHIwLnh5LCBy
MC54eXh4LCB2MS54eXh4DQorZnRvaSByMC54eSwgcjAueHl4eA0KK21vdiByMC56dywgbCgwLDAs
MCwwKQ0KK2xkIHIwLnh5encsIHIwLnh5encsIHQwLnh5encNCittb3YgbzAueCwgcjAueA0KK21v
diBvMC55encsIGwoMCwwLDAsMCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0
aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hS
MkRVSVtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgICA0LCAgMjYsIA0KKyAgICAg
NjIsIDEwOSwgIDk0LCAgNDUsIDEyNCwgMjM4LCANCisgICAgMTUwLCAyNDUsICA4NSwgMTU1LCAx
ODUsICAzNywgDQorICAgIDIzNCwgMTUyLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDgs
ICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAs
ICAgMCwgDQorICAgIDE4MCwgICAwLCAgIDAsICAgMCwgIDEyLCAgIDEsIA0KKyAgICAgIDAsICAg
MCwgIDY0LCAgIDEsICAgMCwgICAwLCANCisgICAgIDg0LCAgIDIsICAgMCwgICAwLCAgODIsICA2
OCwgDQorICAgICA2OSwgIDcwLCAxMjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAw
LCAgIDEsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAg
IDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEzLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQorICAgIDEw
MSwgIDg1LCAgNzMsICAgMCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDEx
MSwgMTAyLCANCisgICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3Miwg
IDc2LCAgODMsICA3NiwgIDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwg
IDMyLCANCisgICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0
LCAgMzIsICA1NCwgIDQ2LCAgNTEsIA0KKyAgICAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2
LCANCisgICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgDQorICAgICA3MywgIDgzLCAg
NzEsICA3OCwgIDgwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAg
MCwgIDY4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMywgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1
LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgDQorICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDg0
LCAgNjksIA0KKyAgICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCANCisgICAgICAwLCAx
NzEsIDE3MSwgMTcxLCAgNzksICA4MywgDQorICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAzMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIA0K
KyAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgICAwLCANCisgICAgMTcxLCAxNzEsICA4Mywg
IDcyLCAgNjgsICA4MiwgDQorICAgICAxMiwgICAxLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDY3LCAgIDAsICAgMCwgICAwLCANCisgICAgIDg4LCAgMjQsICAgMCwgICA0
LCAgIDAsIDExMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
NjgsICA2OCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsICA1MCwgIDE2LCAg
MTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQs
ICAgMCwgDQorICAgICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjEsICAx
NiwgICAwLCAgIDcsIDI0MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDcwLCAxMjYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwg
DQorICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA3MCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA1NiwgICAwLCAgIDAsICAgNywgIDUwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
ICAyNywgICAwLCANCisgICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAgMCwgDQorICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3
LCANCisgICAgMjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NzAsICAxNCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAs
ICAgNSwgIDE4LCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAg
MCwgICAwLCAgIDgsIA0KKyAgICAyMjYsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMiwgIDY0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgDQorICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1
LCAgODQsIA0KKyAgICAxMTYsICAgMCwgICAwLCAgIDAsICAgOSwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocjNkMTFwcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIzZDExcHMuaAkocmV2aXNp
b24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocjNkMTFwcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE2MiArMSwxNjIgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5
IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0v
LwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t
LS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8gVGV4dHVyZUYgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAzZCAgICAwICAg
ICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2Vk
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAg
ICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gU1ZfUkVOREVSVEFSR0VUQVJSQVlJTkRF
WCAgICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICAKLS8vIFRFWENP
T1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAg
eHl6IAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAg
ICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LS0gLS0tLS0tCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAg
ICBUQVJHRVQgICBmbG9hdCAgIHh5encKLS8vCi1wc180XzAKLWRjbF9zYW1wbGVyIHMwLCBtb2Rl
X2RlZmF1bHQKLWRjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0
KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNs
X3RlbXBzIDEKLXNhbXBsZSByMC54eXp3LCB2Mi54eXp4LCB0MC54eXp3LCBzMAotbW92IG8wLngs
IHIwLngKLW1vdiBvMC55encsIGwoMCwwLDAsMS4wMDAwMDApCi1yZXQgCi0vLyBBcHByb3hpbWF0
ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19Q
YXNzdGhyb3VnaFIzRFtdID0KLXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxMSwgMjM1LCAK
LSAgICAyMDgsIDE0MywgMjE5LCAxODMsIDE0MSwgIDc4LCAKLSAgICAxMzYsIDE4MiwgIDYyLCAx
ODIsIDI0MywgIDEyLCAKLSAgICAyMzksIDEyNSwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAx
ODgsICAgMiwgICAwLCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAg
MCwgICAwLCAKLSAgICAyMjAsICAgMCwgICAwLCAgIDAsIDEwMCwgICAxLCAKLSAgICAgIDAsICAg
MCwgMTUyLCAgIDEsICAgMCwgICAwLCAKLSAgICAgNjQsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4
LCAKLSAgICAgNjksICA3MCwgMTYwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEs
ICAgMCwgICAwLCAKLSAgICAxMDksICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAK
LSAgICAxMDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA1LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCAKLSAgICAy
NTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAx
MywgICAwLCAKLSAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCAKLSAgICAxMDgsIDEw
MSwgMTE0LCAgIDAsICA4NCwgMTAxLCAKLSAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgIDcw
LCAKLSAgICAgIDAsICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAKLSAgICAxMTUsIDExMSwgMTAy
LCAxMTYsICAzMiwgIDQwLCAKLSAgICAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAKLSAg
ICAgNzYsICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAKLSAgICAxMDEsIDExNCwgIDMyLCAgNjcs
IDExMSwgMTA5LCAKLSAgICAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNTQs
ICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAKLSAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwg
IDUxLCAKLSAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3MywgIDgzLCAKLSAgICAgNzEsICA3OCwg
MTI4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAK
LSAgICAgIDAsICAgMCwgIDgwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAKLSAgICAgIDAsICAgMCwgMTE4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDIsICAgMCwgICAwLCAgIDAsICAgNywgICA3LCAKLSAgICAgIDAsICAgMCwgIDgzLCAgODYs
ICA5NSwgIDgwLCAKLSAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCAKLSAgICAgNzgs
ICAgMCwgIDgzLCAgODYsICA5NSwgIDgyLCAKLSAgICAgNjksICA3OCwgIDY4LCAgNjksICA4Miwg
IDg0LCAKLSAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDY1LCAKLSAgICAgODIsICA4Miwg
IDY1LCAgODksICA3MywgIDc4LCAKLSAgICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwgIDY5LCAK
LSAgICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCAKLSAgICAgIDAsIDE3MSwgIDc5LCAg
ODMsICA3MSwgIDc4LCAKLSAgICAgNDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAg
IDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAw
LCAKLSAgICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCAKLSAgICAgNzEsICA2OSwgIDg0
LCAgIDAsIDE3MSwgMTcxLCAKLSAgICAgODMsICA3MiwgIDY4LCAgODIsIDE2MCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNDAsICAgMCwgICAwLCAgIDAs
ICA5MCwgICAwLCAKLSAgICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICA4OCwgIDQwLCAKLSAgICAgIDAsICAgNCwgICAwLCAxMTIsICAxNiwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1LCAKLSAgICAgIDAsICAgMCwg
IDk4LCAgMTYsICAgMCwgICAzLCAKLSAgICAxMTQsICAxNiwgIDE2LCAgIDAsICAgMiwgICAwLCAK
LSAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCAKLSAgICAyNDIsICAzMiwgIDE2LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgMTA0LCAgIDAsICAgMCwgICAyLCAKLSAgICAg
IDEsICAgMCwgICAwLCAgIDAsICA2OSwgICAwLCAKLSAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAx
NiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDE4LCAKLSAgICAgMTYsICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgOTYsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNSwgIDE4LCAgMzIsICAxNiwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDgsIDIyNiwgIDMyLCAKLSAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCAK
LSAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA0LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmlu
ZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw
ZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0t
LS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5B
ICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDNkICAgIDAgICAgICAgIDENCisvLw0K
Ky8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAg
ICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAg
ICAwICAgeCAgICAgICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgICAgIA0KKy8vIFRFWENPT1JE
ICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6
IA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBz
MCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUzZCAoZmxvYXQsZmxvYXQsZmxv
YXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8w
Lnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2Mi54eXp4LCB0MC54eXp3LCBz
MA0KK21vdiBvMC54LCByMC54DQorbW92IG8wLnl6dywgbCgwLDAsMCwxLjAwMDAwMCkNCityZXQg
DQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSM0RbXSA9DQorew0KKyAgICAgNjgsICA4OCwg
IDY2LCAgNjcsICAxMSwgMjM1LCANCisgICAgMjA4LCAxNDMsIDIxOSwgMTgzLCAxNDEsICA3OCwg
DQorICAgIDEzNiwgMTgyLCAgNjIsIDE4MiwgMjQzLCAgMTIsIA0KKyAgICAyMzksIDEyNSwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgMTg4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMjAsICAgMCwgICAwLCAg
IDAsIDEwMCwgICAxLCANCisgICAgICAwLCAgIDAsIDE1MiwgICAxLCAgIDAsICAgMCwgDQorICAg
ICA2NCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTYwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAg
MCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgIDEwOSwg
ICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMCwgICAwLCAg
IDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICA4LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgDQorICAgIDI1NSwgMjU1LCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywgICAwLCANCisg
ICAgICAwLCAgIDAsICA4MywgIDk3LCAxMDksIDExMiwgDQorICAgIDEwOCwgMTAxLCAxMTQsICAg
MCwgIDg0LCAxMDEsIA0KKyAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgIDcwLCANCisgICAg
ICAwLCAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwgDQorICAgIDExNSwgMTExLCAxMDIsIDExNiwg
IDMyLCAgNDAsIA0KKyAgICAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCANCisgICAgIDc2
LCAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA2NywgMTEx
LCAxMDksIA0KKyAgICAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCANCisgICAgIDU0LCAg
NDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgDQorICAgICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAg
NTEsIA0KKyAgICAgNTYsICA1MiwgICAwLCAxNzEsICA3MywgIDgzLCANCisgICAgIDcxLCAgNzgs
IDEyOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA5Miwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDcsIA0KKyAgICAgIDAs
ICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMs
ICA3OSwgDQorICAgICA3OCwgICAwLCAgODMsICA4NiwgIDk1LCAgODIsIA0KKyAgICAgNjksICA3
OCwgIDY4LCAgNjksICA4MiwgIDg0LCANCisgICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICA2
NSwgDQorICAgICA4MiwgIDgyLCAgNjUsICA4OSwgIDczLCAgNzgsIA0KKyAgICAgNjgsICA2OSwg
IDg4LCAgIDAsICA4NCwgIDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwg
DQorICAgICAgMCwgMTcxLCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNDQsICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODQs
ICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgDQorICAgICA4
MywgIDcyLCAgNjgsICA4MiwgMTYwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAg
MCwgICAwLCANCisgICAgIDQwLCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwgDQorICAgICAgMCwg
ICAzLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4OCwg
IDQwLCANCisgICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDg1LCAgODUsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAgMTYsICAgMCwgICAz
LCANCisgICAgMTE0LCAgMTYsICAxNiwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAx
MDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDY5LCAgIDAsIA0KKyAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxOCwgDQorICAgICAxNiwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgIDE4LCAgMzIsICAxNiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDgsIDIyNiwgIDMyLCANCisgICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgIDY0LCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEyOCwgIDYzLCAgNjIsICAgMCwgICAwLCAgIDEs
IA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAg
NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocjNkaTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Ro
cm91Z2hyM2RpMTFwcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hyM2RpMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NCArMSwxNzQgQEAKLSNp
ZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGls
ZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8g
TmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAg
IERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFRleHR1cmVJICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgc2ludDQgICAgICAgICAgM2QgICAgMCAg
ICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNl
ZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5E
RVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICAgICAgCi0vLyBURVhD
T09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAg
IHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAw
ICAgVEFSR0VUICAgICBpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfdGV4dHVy
ZTNkIChzaW50LHNpbnQsc2ludCxzaW50KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoK
LWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLXJlc2luZm9fdWludCByMC54eXp3LCBs
KDApLCB0MC54eXp3Ci11dG9mIHIwLnh5eiwgcjAueHl6eAotbXVsIHIwLnh5eiwgcjAueHl6eCwg
djIueHl6eAotZnRvaSByMC54eXosIHIwLnh5engKLW1vdiByMC53LCBsKDApCi1sZCByMC54eXp3
LCByMC54eXp3LCB0MC54eXp3Ci1tb3YgbzAueCwgcjAueAotbW92IG8wLnl6dywgbCgwLDAsMCww
KQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRp
ZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSM0RJW10gPQotewotICAgICA2OCwgIDg4
LCAgNjYsICA2NywgMjIyLCAyNTEsIAotICAgICAzMCwgIDYxLCAgMTUsICA4MCwgIDgxLCAyNDcs
IAotICAgIDE3NSwgMTM3LCAgNDQsICAxOSwgIDIzLCAgODQsIAotICAgIDE0OSwgMjExLCAgIDEs
ICAgMCwgICAwLCAgIDAsIAotICAgIDI0NCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAotICAgIDE4MCwgICAwLCAgIDAsICAgMCwg
IDYwLCAgIDEsIAotICAgICAgMCwgICAwLCAxMTIsICAgMSwgICAwLCAgIDAsIAotICAgIDEyMCwg
ICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAxMjAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAot
ICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICA2OSwgICAwLCAgIDAsICAg
MCwgIDYwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1
LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAw
LCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQs
IAotICAgIDEwMSwgIDczLCAgIDAsICA3NywgMTA1LCAgOTksIAotICAgIDExNCwgMTExLCAxMTUs
IDExMSwgMTAyLCAxMTYsIAotICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIAotICAg
ICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIAotICAgICA5NywgMTAwLCAxMDEsIDExNCwg
IDMyLCAgNjcsIAotICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIAotICAgIDExNCwg
IDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIAotICAgICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAg
NDksIAotICAgICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIAotICAgICA3MywgIDgzLCAg
NzEsICA3OCwgMTI4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDgwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDky
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTE4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgNywgICA3LCAgIDAsICAgMCwg
IDgzLCAgODYsIAotICAgICA5NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIAotICAgICA3Mywg
IDc5LCAgNzgsICAgMCwgIDgzLCAgODYsIAotICAgICA5NSwgIDgyLCAgNjksICA3OCwgIDY4LCAg
NjksIAotICAgICA4MiwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIAotICAgICA4NCwgIDY1LCAg
ODIsICA4MiwgIDY1LCAgODksIAotICAgICA3MywgIDc4LCAgNjgsICA2OSwgIDg4LCAgIDAsIAot
ICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIAotICAgICA4MiwgIDY4LCAgIDAsIDE3
MSwgIDc5LCAgODMsIAotICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAs
IAotICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIAotICAgICA2NSwgIDgyLCAgNzEs
ICA2OSwgIDg0LCAgIDAsIAotICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIAotICAg
ICAgMCwgICAxLCAgIDAsICAgMCwgIDY0LCAgIDAsIAotICAgICAgMCwgICAwLCAgNjQsICAgMCwg
ICAwLCAgIDAsIAotICAgICA4OCwgIDQwLCAgIDAsICAgNCwgICAwLCAxMTIsIAotICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1MSwgIDUxLCAgIDAsICAgMCwgIDk4LCAg
MTYsIAotICAgICAgMCwgICAzLCAxMTQsICAxNiwgIDE2LCAgIDAsIAotICAgICAgMiwgICAwLCAg
IDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIAotICAgICAgMCwgICAyLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICA2MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIAotICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDg2LCAgIDAsIAotICAgICAgMCwgICA1LCAxMTQsICAgMCwgIDE2LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIAotICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgNywgMTE0LCAgIDAsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgICAyLCAgMTYsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxOCwgIDE2LCAgIDAsIAotICAgICAgMiwg
ICAwLCAgIDAsICAgMCwgIDI3LCAgIDAsIAotICAgICAgMCwgICA1LCAxMTQsICAgMCwgIDE2LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIAotICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwgMTMwLCAgIDAsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0LCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAwLCAgIDcsIAotICAgIDI0
MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNCwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwgIDE4LCAgMzIs
IAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgICAwLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDgsIAotICAg
IDIyNiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICA2NCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAg
IDAsIAotICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIAotICAgIDExNiwgICAwLCAg
IDAsICAgMCwgICA5LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jv
c29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQor
Ly8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t
LS0tIC0tLS0gLS0tLS0tLS0NCisvLyBUZXh0dXJlSSAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZSAgIHNpbnQ0ICAgICAgICAgIDNkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8N
CisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0N
CisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1Mg
ICBmbG9hdCAgICAgICANCisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAg
ICAgICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6IA0KKy8vDQor
Ly8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICAgICBpbnQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfcmVzb3VyY2VfdGV4dHVyZTNk
IChzaW50LHNpbnQsc2ludCxzaW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6DQor
ZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHl6dywg
bCgwKSwgdDAueHl6dw0KK3V0b2YgcjAueHl6LCByMC54eXp4DQorbXVsIHIwLnh5eiwgcjAueHl6
eCwgdjIueHl6eA0KK2Z0b2kgcjAueHl6LCByMC54eXp4DQorbW92IHIwLncsIGwoMCkNCitsZCBy
MC54eXp3LCByMC54eXp3LCB0MC54eXp3DQorbW92IG8wLngsIHIwLngNCittb3YgbzAueXp3LCBs
KDAsMCwwLDApDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgOSBpbnN0cnVjdGlvbiBzbG90cyB1
c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUjNESVtdID0NCit7
DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjIyLCAyNTEsIA0KKyAgICAgMzAsICA2MSwgIDE1
LCAgODAsICA4MSwgMjQ3LCANCisgICAgMTc1LCAxMzcsICA0NCwgIDE5LCAgMjMsICA4NCwgDQor
ICAgIDE0OSwgMjExLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyNDQsICAgMiwgICAwLCAg
IDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAg
IDE4MCwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTEyLCAgIDEs
ICAgMCwgICAwLCANCisgICAgMTIwLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2
OSwgIDcwLCAxMjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwg
ICAwLCANCisgICAgIDY5LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAw
LCANCisgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQorICAgIDEwMSwgIDczLCAgIDAs
ICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisg
ICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAz
MiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAg
MTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTQsICA0Niwg
IDUxLCAgNDYsIA0KKyAgICAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCANCisgICAgIDU0
LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgDQorICAgICA3MywgIDgzLCAgNzEsICA3OCwgMTI4
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAg
IDAsICAgMCwgICAwLCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDExOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA3LCAgIDcsICAgMCwgICAw
LCAgODMsICA4NiwgDQorICAgICA5NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIA0KKyAgICAg
NzMsICA3OSwgIDc4LCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODIsICA2OSwgIDc4LCAg
NjgsICA2OSwgDQorICAgICA4MiwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAgODQs
ICA2NSwgIDgyLCAgODIsICA2NSwgIDg5LCANCisgICAgIDczLCAgNzgsICA2OCwgIDY5LCAgODgs
ICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIsICA2
OCwgICAwLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgDQor
ICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDgzLCAg
NzIsICA2OCwgIDgyLCANCisgICAgICAwLCAgIDEsICAgMCwgICAwLCAgNjQsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICA0MCwgICAwLCAgIDQs
ICAgMCwgMTEyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1
MSwgIDUxLCAgIDAsICAgMCwgIDk4LCAgMTYsIA0KKyAgICAgIDAsICAgMywgMTE0LCAgMTYsICAx
NiwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwg
ICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwg
ICAwLCANCisgICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwgIDE2
LCAgIDAsICAgNywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NzAsIDEyNiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCAN
CisgICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgIDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwg
IDI3LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgICAwLCANCisgICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3LCANCisgICAgMjQyLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNCwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwgIDE4LCAgMzIsIA0K
KyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgIDAsICAxNiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDgsIA0KKyAg
ICAyMjYsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgIDY0
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NjIsICAgMCwgDQorICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIA0KKyAgICAxMTYs
ICAgMCwgICAwLCAgIDAsICAgOSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocjNkdWkxMXBzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocjNkdWkxMXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIzZHVpMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDE3NCArMSwxNzQgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAo
UikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3Vy
Y2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0t
LS0tLS0KLS8vIFRleHR1cmVVSSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWlu
dDQgICAgICAgICAgM2QgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0
dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAg
ICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFNW
X1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAg
IHVpbnQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAg
IDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToK
LS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFs
dWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAg
ICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0vLwotcHNfNF8w
Ci1kY2xfcmVzb3VyY2VfdGV4dHVyZTNkICh1aW50LHVpbnQsdWludCx1aW50KSB0MAotZGNsX2lu
cHV0X3BzIGxpbmVhciB2Mi54eXoKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLXJl
c2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3Ci11dG9mIHIwLnh5eiwgcjAueHl6eAot
bXVsIHIwLnh5eiwgcjAueHl6eCwgdjIueHl6eAotZnRvaSByMC54eXosIHIwLnh5engKLW1vdiBy
MC53LCBsKDApCi1sZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3Ci1tb3YgbzAueCwgcjAueAot
bW92IG8wLnl6dywgbCgwLDAsMCwwKQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0
aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSM0RV
SVtdID0KLXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsICA2OSwgICA1LCAKLSAgICAgODYsIDIx
MiwgMjAxLCAgNTQsICA5NywgMjA1LCAKLSAgICAgODksIDE2MSwgMTAwLCAgNzIsIDI0NiwgMTE0
LCAKLSAgICAgNDAsIDIxNCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAyNDQsICAgMiwgICAw
LCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAxODAsICAgMCwgICAwLCAgIDAsICA2MCwgICAxLCAKLSAgICAgIDAsICAgMCwgMTEyLCAgIDEs
ICAgMCwgICAwLCAKLSAgICAxMjAsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCAKLSAgICAgNjks
ICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCAK
LSAgICAgNzAsICAgMCwgICAwLCAgIDAsICA2MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAg
IDAsICAgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgODQsIDEw
MSwgMTIwLCAxMTYsIDExNywgMTE0LCAKLSAgICAxMDEsICA4NSwgIDczLCAgIDAsICA3NywgMTA1
LCAKLSAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAKLSAgICAxMTYsICAzMiwgIDQw
LCAgODIsICA0MSwgIDMyLCAKLSAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAKLSAg
ICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNjcsIDExMSwgMTA5LCAxMTIs
IDEwNSwgMTA4LCAKLSAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAKLSAgICAgNDYs
ICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAKLSAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1Miwg
ICAwLCAKLSAgICAgNzMsICA4MywgIDcxLCAgNzgsIDEyOCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsICA4MCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
MTUsICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsIDExOCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDcsICAgNywgICAwLCAgIDAsICA4MywgIDg2LCAKLSAgICAgOTUsICA4MCwgIDc5LCAgODMs
ICA3MywgIDg0LCAKLSAgICAgNzMsICA3OSwgIDc4LCAgIDAsICA4MywgIDg2LCAKLSAgICAgOTUs
ICA4MiwgIDY5LCAgNzgsICA2OCwgIDY5LCAKLSAgICAgODIsICA4NCwgIDY1LCAgODIsICA3MSwg
IDY5LCAKLSAgICAgODQsICA2NSwgIDgyLCAgODIsICA2NSwgIDg5LCAKLSAgICAgNzMsICA3OCwg
IDY4LCAgNjksICA4OCwgICAwLCAKLSAgICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCAK
LSAgICAgODIsICA2OCwgICAwLCAxNzEsICA3OSwgIDgzLCAKLSAgICAgNzEsICA3OCwgIDQ0LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAg
IDAsICAgMCwgIDMyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAxNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDg0
LCAKLSAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgICAwLCAKLSAgICAxNzEsIDE3MSwgIDgz
LCAgNzIsICA2OCwgIDgyLCAKLSAgICAgIDAsICAgMSwgICAwLCAgIDAsICA2NCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODgsICA0MCwgICAwLCAgIDQs
ICAgMCwgMTEyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjgs
ICA2OCwgICAwLCAgIDAsICA5OCwgIDE2LCAKLSAgICAgIDAsICAgMywgMTE0LCAgMTYsICAxNiwg
ICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywg
MjQyLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAK
LSAgICAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjEsICAxNiwgICAwLCAg
IDcsIDI0MiwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAx
NiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCAKLSAgICAgIDAsICAg
NSwgMTE0LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAy
LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTYsICAgMCwgICAw
LCAgIDcsIDExNCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMTgs
ICAxNiwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyNywgICAwLCAKLSAgICAgIDAs
ICAgNSwgMTE0LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwg
ICAyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwg
ICAwLCAgIDUsIDEzMCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDQ1LCAg
IDAsICAgMCwgICA3LCAKLSAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgIDcwLCAgMTQsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3
MCwgMTI2LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAg
MCwgICAwLCAgIDUsICAxOCwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDU0
LCAgIDAsICAgMCwgICA4LCAKLSAgICAyMjYsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAyLCAgNjQsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCAKLSAgICAgIDAsICAgMSwgIDgzLCAgODQsICA2NSwg
IDg0LCAKLSAgICAxMTYsICAgMCwgICAwLCAgIDAsICAgOSwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwCi19OworI2lmIDANCisvLw0K
Ky8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45
NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFt
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERp
bSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gVGV4dHVyZVVJICAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgICB1aW50NCAgICAgICAgICAzZCAgICAwICAg
ICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQg
ICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gU1ZfUkVOREVSVEFSR0VU
QVJSQVlJTkRFWCAgICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICAN
CisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUg
ICBmbG9hdCAgIHh5eiANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8v
IE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9y
bWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICB1aW50ICAgeHl6dw0KKy8vDQorcHNfNF8wDQor
ZGNsX3Jlc291cmNlX3RleHR1cmUzZCAodWludCx1aW50LHVpbnQsdWludCkgdDANCitkY2xfaW5w
dXRfcHMgbGluZWFyIHYyLnh5eg0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQor
cmVzaW5mb191aW50IHIwLnh5encsIGwoMCksIHQwLnh5encNCit1dG9mIHIwLnh5eiwgcjAueHl6
eA0KK211bCByMC54eXosIHIwLnh5engsIHYyLnh5engNCitmdG9pIHIwLnh5eiwgcjAueHl6eA0K
K21vdiByMC53LCBsKDApDQorbGQgcjAueHl6dywgcjAueHl6dywgdDAueHl6dw0KK21vdiBvMC54
LCByMC54DQorbW92IG8wLnl6dywgbCgwLDAsMCwwKQ0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5
IDkgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19Q
YXNzdGhyb3VnaFIzRFVJW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAgNjksICAg
NSwgDQorICAgICA4NiwgMjEyLCAyMDEsICA1NCwgIDk3LCAyMDUsIA0KKyAgICAgODksIDE2MSwg
MTAwLCAgNzIsIDI0NiwgMTE0LCANCisgICAgIDQwLCAyMTQsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgIDI0NCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUy
LCAgIDAsICAgMCwgICAwLCANCisgICAgMTgwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMSwgDQor
ICAgICAgMCwgICAwLCAxMTIsICAgMSwgICAwLCAgIDAsIA0KKyAgICAxMjAsICAgMiwgICAwLCAg
IDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1
NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwgICAwLCAgIDAsICA2
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwg
ICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1NSwg
MjU1LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAw
LCAgMTMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODQsIDEwMSwgMTIwLCAxMTYsIDExNywgMTE0
LCANCisgICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAx
MTEsIDExNSwgMTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAN
CisgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAs
IDEwMSwgMTE0LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisg
ICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgDQorICAgICA0NiwgIDU3LCAgNTQsICA0
OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisgICAg
IDczLCAgODMsICA3MSwgIDc4LCAxMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA4MCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAz
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAg
IDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTE4LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDcsICAgNywgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODAsICA3OSwg
IDgzLCAgNzMsICA4NCwgDQorICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDgzLCAgODYsIA0KKyAg
ICAgOTUsICA4MiwgIDY5LCAgNzgsICA2OCwgIDY5LCANCisgICAgIDgyLCAgODQsICA2NSwgIDgy
LCAgNzEsICA2OSwgDQorICAgICA4NCwgIDY1LCAgODIsICA4MiwgIDY1LCAgODksIA0KKyAgICAg
NzMsICA3OCwgIDY4LCAgNjksICA4OCwgICAwLCANCisgICAgIDg0LCAgNjksICA4OCwgIDY3LCAg
NzksICA3OSwgDQorICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEs
ICA3OCwgIDQ0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDgzLCAgODYsICA5NSwgIDg0LCANCisgICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwg
DQorICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAgICAgIDAsICAgMSwgICAw
LCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA4OCwgIDQwLCAgIDAsICAgNCwgICAwLCAxMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgNjgsICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAg
ICAgMCwgICAzLCAxMTQsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAs
IDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgDQorICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDg2LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAgIDcsIDExNCwgICAwLCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAyLCAgMTYs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTgsICAxNiwgICAwLCANCisg
ICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgDQorICAgICAgMCwgICA1LCAxMTQsICAg
MCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCANCisgICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwg
MTMwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAx
LCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAw
LCAgIDcsIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA3MCwgIDE0LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAx
MjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAs
ICAgMCwgICA1LCAgMTgsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA1
NCwgICAwLCAgIDAsICAgOCwgDQorICAgIDIyNiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgNjQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCANCisgICAgICAwLCAgIDEsICA4MywgIDg0
LCAgNjUsICA4NCwgDQorICAgIDExNiwgICAwLCAgIDAsICAgMCwgICA5LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzJkMTFw
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnMmQxMXBzLmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnMmQxMXBz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk4ICsxLDE5OCBAQAotI2lmIDAKLS8vCi0vLyBHZW5l
cmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4
NAotLy8KLS8vCi0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0vLyBOYW1lICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVu
dHMKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQotLy8gU2FtcGxlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxCi0vLyBUZXh0
dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDJk
ICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1h
dCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAg
ICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAKLS8vCi0v
LwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQot
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAg
ZmxvYXQgICB4eXp3Ci0vLwotLy8KLS8vIFNhbXBsZXIvUmVzb3VyY2UgdG8gRFg5IHNoYWRlciBz
YW1wbGVyIG1hcHBpbmdzOgotLy8KLS8vIFRhcmdldCBTYW1wbGVyIFNvdXJjZSBTYW1wbGVyICBT
b3VyY2UgUmVzb3VyY2UKLS8vIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLSAtLS0tLS0t
LS0tLS0tLS0tCi0vLyBzMCAgICAgICAgICAgICBzMCAgICAgICAgICAgICAgdDAgICAgICAgICAg
ICAgICAKLS8vCi0vLwotLy8gTGV2ZWw5IHNoYWRlciBieXRlY29kZToKLS8vCi0gICAgcHNfMl94
Ci0gICAgZGVmIGMwLCAxLCAwLCAwLCAwCi0gICAgZGNsIHQwLnh5Ci0gICAgZGNsXzJkIHMwCi0g
ICAgdGV4bGQgcjAsIHQwLCBzMAotICAgIG1hZCByMCwgcjAueHl4eCwgYzAueHh5eSwgYzAueXl5
eAotICAgIG1vdiBvQzAsIHIwCi0KLS8vIGFwcHJveGltYXRlbHkgMyBpbnN0cnVjdGlvbiBzbG90
cyB1c2VkICgxIHRleHR1cmUsIDIgYXJpdGhtZXRpYykKLXBzXzRfMAotZGNsX3NhbXBsZXIgczAs
IG1vZGVfZGVmYXVsdAotZGNsX3Jlc291cmNlX3RleHR1cmUyZCAoZmxvYXQsZmxvYXQsZmxvYXQs
ZmxvYXQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5Ci1kY2xfb3V0cHV0IG8wLnh5encK
LWRjbF90ZW1wcyAxCi1zYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczAKLW1vdiBv
MC54eSwgcjAueHl4eAotbW92IG8wLnp3LCBsKDAsMCwwLDEuMDAwMDAwKQotcmV0IAotLy8gQXBw
cm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRF
IGdfUFNfUGFzc3Rocm91Z2hSRzJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjE3
LCAxNzEsIAotICAgIDE1MywgMjQ4LCAgMjYsICAxNSwgMTAyLCAxMTksIAotICAgICA4NiwgMTc0
LCAxMjEsIDI0NSwgMjIzLCAgODMsIAotICAgICAgMiwgMTgxLCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgICA0MCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYs
ICAgMCwgICAwLCAgIDAsIAotICAgIDIwOCwgICAwLCAgIDAsICAgMCwgMTIwLCAgIDEsIAotICAg
ICAgMCwgICAwLCAyNDQsICAgMSwgICAwLCAgIDAsIAotICAgIDE1NiwgICAyLCAgIDAsICAgMCwg
MjQ0LCAgIDIsIAotICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIAotICAgIDE0NCwg
ICAwLCAgIDAsICAgMCwgMTQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAy
NTUsIAotICAgIDEwNCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICA0MCwgICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIAotICAgICA4
MSwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsIAotICAgICAxNSwgMTYwLCAgIDAsICAgMCwgMTI4
LCAgNjMsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
IAotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIAotICAgICAzMSwgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIAotICAg
ICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwg
MjI4LCAxNzYsIAotICAgICAgMCwgICA4LCAyMjgsIDE2MCwgICA0LCAgIDAsIAotICAgICAgMCwg
ICA0LCAgIDAsICAgMCwgIDE1LCAxMjgsIAotICAgICAgMCwgICAwLCAgIDQsIDEyOCwgICAwLCAg
IDAsIAotICAgICA4MCwgMTYwLCAgIDAsICAgMCwgIDIxLCAxNjAsIAotICAgICAgMSwgICAwLCAg
IDAsICAgMiwgICAwLCAgIDgsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxMjgsIAot
ICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgIDgzLCAgNzIsIAotICAgICA2OCwgIDgyLCAxNjAsICAg
MCwgICAwLCAgIDAsIAotICAgICA2NCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgOTAsICAgMCwgICAwLCAgIDMsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgODgsICAyNCwgICAwLCAgIDQsIAotICAgICAgMCwgMTEy
LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODUsICA4NSwgICAwLCAgIDAs
IAotICAgICA5OCwgIDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIAotICAgICAxNiwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAgMzIsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAwLCAgIDAsICAgMiwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIAotICAgIDI0Miwg
ICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAg
IDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIAotICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgICA1MCwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAgMCwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA4LCAxOTQsICAzMiwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgNjQsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4LCAgNjMsIAotICAgICA2MiwgICAwLCAgIDAs
ICAgMSwgIDgzLCAgODQsIAotICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgODIsICA2OCwgIDY5LCAgNzAsIAotICAgIDE2MCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwg
ICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgNCwgMjU1LCAy
NTUsIAotICAgICAgMCwgICAxLCAgIDAsICAgMCwgMTA5LCAgIDAsIAotICAgICAgMCwgICAwLCAg
OTIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgMTAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAw
LCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAw
LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgICA4MywgIDk3LCAxMDks
IDExMiwgMTA4LCAxMDEsIAotICAgIDExNCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIAotICAg
IDExNywgMTE0LCAxMDEsICA3MCwgICAwLCAgNzcsIAotICAgIDEwNSwgIDk5LCAxMTQsIDExMSwg
MTE1LCAxMTEsIAotICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIAotICAgICAzMiwg
IDcyLCAgNzYsICA4MywgIDc2LCAgMzIsIAotICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAx
MTQsIAotICAgICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIAotICAgIDEwOCwgMTAxLCAx
MTQsICAzMiwgIDU0LCAgNDYsIAotICAgICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsIAot
ICAgICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsIAotICAgICAgMCwgMTcxLCAgNzMsICA4
MywgIDcxLCAgNzgsIAotICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAs
IAotICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4MCwg
IDc5LCAgODMsIAotICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIAotICAgICA4NCwg
IDY5LCAgODgsICA2NywgIDc5LCAgNzksIAotICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgMTcxLCAx
NzEsIAotICAgICA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDMyLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAx
NSwgICAwLCAgIDAsICAgMCwgIDgzLCAgODYsIAotICAgICA5NSwgIDg0LCAgNjUsICA4MiwgIDcx
LCAgNjksIAotICAgICA4NCwgICAwLCAxNzEsIDE3MQotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5l
cmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4
NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBF
bGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0K
Ky8vIFRleHR1cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAg
ICAgICAgMmQgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8v
IFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZs
b2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQg
ICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4
eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8NCisvLw0KKy8vIFNhbXBs
ZXIvUmVzb3VyY2UgdG8gRFg5IHNoYWRlciBzYW1wbGVyIG1hcHBpbmdzOg0KKy8vDQorLy8gVGFy
Z2V0IFNhbXBsZXIgU291cmNlIFNhbXBsZXIgIFNvdXJjZSBSZXNvdXJjZQ0KKy8vIC0tLS0tLS0t
LS0tLS0tIC0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tDQorLy8gczAgICAgICAgICAg
ICAgczAgICAgICAgICAgICAgIHQwICAgICAgICAgICAgICAgDQorLy8NCisvLw0KKy8vIExldmVs
OSBzaGFkZXIgYnl0ZWNvZGU6DQorLy8NCisgICAgcHNfMl94DQorICAgIGRlZiBjMCwgMSwgMCwg
MCwgMA0KKyAgICBkY2wgdDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwg
czANCisgICAgbWFkIHIwLCByMC54eXh4LCBjMC54eHl5LCBjMC55eXl4DQorICAgIG1vdiBvQzAs
IHIwDQorDQorLy8gYXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4
dHVyZSwgMiBhcml0aG1ldGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1
bHQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDAN
CitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3Rl
bXBzIDENCitzYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczANCittb3YgbzAueHks
IHIwLnh5eHgNCittb3YgbzAuencsIGwoMCwwLDAsMS4wMDAwMDApDQorcmV0IA0KKy8vIEFwcHJv
eGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllU
RSBnX1BTX1Bhc3N0aHJvdWdoUkcyRFtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2Nywg
MjE3LCAxNzEsIA0KKyAgICAxNTMsIDI0OCwgIDI2LCAgMTUsIDEwMiwgMTE5LCANCisgICAgIDg2
LCAxNzQsIDEyMSwgMjQ1LCAyMjMsICA4MywgDQorICAgICAgMiwgMTgxLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNDAsICAgMywgICAwLCAgIDAsICAgNiwgICAwLCANCisgICAgICAwLCAg
IDAsICA1NiwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwOCwgICAwLCAgIDAsICAgMCwgMTIwLCAg
IDEsIA0KKyAgICAgIDAsICAgMCwgMjQ0LCAgIDEsICAgMCwgICAwLCANCisgICAgMTU2LCAgIDIs
ICAgMCwgICAwLCAyNDQsICAgMiwgDQorICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcs
IA0KKyAgICAxNDQsICAgMCwgICAwLCAgIDAsIDE0NCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAyLCAyNTUsIDI1NSwgDQorICAgIDEwNCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA0MCwgICAwLCANCisgICAgICAwLCAgIDAsICA0MCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA0MCwgICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDQwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAy
LCAyNTUsIDI1NSwgDQorICAgICA4MSwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsIA0KKyAgICAg
MTUsIDE2MCwgICAwLCAgIDAsIDEyOCwgIDYzLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMzEs
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCANCisgICAgICAwLCAxMjgsICAgMCwgICAwLCAgIDMs
IDE3NiwgDQorICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgIDAsIDE0
NCwgICAwLCAgIDgsICAxNSwgMTYwLCANCisgICAgIDY2LCAgIDAsICAgMCwgICAzLCAgIDAsICAg
MCwgDQorICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIA0KKyAgICAgIDAsICAgOCwg
MjI4LCAxNjAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDQsICAgMCwgICAwLCAgMTUsIDEyOCwg
DQorICAgICAgMCwgICAwLCAgIDQsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgODAsIDE2MCwgICAw
LCAgIDAsICAyMSwgMTYwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgOCwgDQor
ICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxMjgsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAg
IDAsICA4MywgIDcyLCANCisgICAgIDY4LCAgODIsIDE2MCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA2NCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDkwLCAgIDAs
ICAgMCwgICAzLCANCisgICAgICAwLCAgOTYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgODgsICAyNCwgICAwLCAgIDQsIA0KKyAgICAgIDAsIDExMiwgIDE2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICA4NSwgIDg1LCAgIDAsICAgMCwgDQorICAgICA5OCwg
IDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMTAxLCAgIDAsICAgMCwgICAzLCAyNDIsICAzMiwgDQorICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDQsICAgMCwgICAwLCAgIDIsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsICA2OSwgICAwLCAgIDAsICAgOSwgDQorICAgIDI0MiwgICAwLCAg
MTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTYsICAxNiwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICA5NiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgICA1MCwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgIDAsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA4LCAxOTQsICAzMiwg
IDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgIDY0LCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEyOCwgIDYzLCANCisgICAgIDYyLCAg
IDAsICAgMCwgICAxLCAgODMsICA4NCwgDQorICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA4MiwgIDY4LCAgNjksICA3
MCwgDQorICAgIDE2MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgNCwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMSwgICAw
LCAgIDAsIDEwOSwgICAwLCANCisgICAgICAwLCAgIDAsICA5MiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
IDEwMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
NSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1
NSwgMjU1LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA5NywgMTA5LCAxMTIsIDEwOCwg
MTAxLCANCisgICAgMTE0LCAgIDAsICA4NCwgMTAxLCAxMjAsIDExNiwgDQorICAgIDExNywgMTE0
LCAxMDEsICA3MCwgICAwLCAgNzcsIA0KKyAgICAxMDUsICA5OSwgMTE0LCAxMTEsIDExNSwgMTEx
LCANCisgICAgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgDQorICAgICAzMiwgIDcyLCAg
NzYsICA4MywgIDc2LCAgMzIsIA0KKyAgICAgODMsIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAN
CisgICAgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgDQorICAgIDEwOCwgMTAxLCAxMTQs
ICAzMiwgIDU0LCAgNDYsIA0KKyAgICAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCANCisg
ICAgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgDQorICAgICAgMCwgMTcxLCAgNzMsICA4
MywgIDcxLCAgNzgsIA0KKyAgICAgODAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAz
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYs
ICA5NSwgIDgwLCAgNzksICA4MywgDQorICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAs
IA0KKyAgICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCANCisgICAgIDgyLCAgNjgsICAg
MCwgMTcxLCAxNzEsIDE3MSwgDQorICAgICA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAgIDAsICAgMCwg
ICAwLCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDgzLCAgODYsIA0KKyAgICAg
OTUsICA4NCwgIDY1LCAgODIsICA3MSwgIDY5LCANCisgICAgIDg0LCAgIDAsIDE3MSwgMTcxDQor
fTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzJkaTExcHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzJkaTExcHMuaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmcyZGkxMXBzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTY3ICsxLDE2NyBAQAotI2lmIDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkg
TWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NAotLy8KLS8v
Ci0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0t
LS0gLS0tLSAtLS0tLS0tLQotLy8gVGV4dHVyZUkgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmUgICBzaW50NCAgICAgICAgICAyZCAgICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJ
bnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNr
IFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BP
U0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAg
ICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBO
T05FICAgZmxvYXQgICB4eSAgCi0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8g
TmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3Jt
YXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICAgaW50ICAgeHl6dwotLy8KLXBzXzRfMAotZGNsX3Jl
c291cmNlX3RleHR1cmUyZCAoc2ludCxzaW50LHNpbnQsc2ludCkgdDAKLWRjbF9pbnB1dF9wcyBs
aW5lYXIgdjEueHkKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLXJlc2luZm9fdWlu
dCByMC54eXp3LCBsKDApLCB0MC54eXp3Ci11dG9mIHIwLnh5LCByMC54eXh4Ci1tdWwgcjAueHks
IHIwLnh5eHgsIHYxLnh5eHgKLWZ0b2kgcjAueHksIHIwLnh5eHgKLW1vdiByMC56dywgbCgwLDAs
MCwwKQotbGQgcjAueHl6dywgcjAueHl6dywgdDAueHl6dwotbW92IG8wLnh5LCByMC54eXh4Ci1t
b3YgbzAuencsIGwoMCwwLDAsMCkKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgOSBpbnN0cnVjdGlv
biBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkcyRElb
XSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgODksIDEyMywgCi0gICAgMTI5LCAyNTEs
IDIwNiwgMTA1LCAyMjEsIDE0MSwgCi0gICAgICA1LCAxNjAsIDE4NiwgMTg3LCAxNjgsIDE1Nywg
Ci0gICAgMTQ1LCAyNDYsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMjA4LCAgIDIsICAgMCwg
ICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAg
MTgwLCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAwLCAgIDAsICA2NCwgICAxLCAg
IDAsICAgMCwgCi0gICAgIDg0LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAg
NzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0g
ICAgIDY5LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAw
LCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEs
IDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgNzMsICAgMCwgIDc3LCAxMDUsICA5OSwg
Ci0gICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgCi0gICAgIDMyLCAgNDAsICA4Miwg
IDQxLCAgMzIsICA3MiwgCi0gICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgCi0gICAg
IDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgCi0gICAgMTExLCAxMDksIDExMiwgMTA1LCAx
MDgsIDEwMSwgCi0gICAgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgCi0gICAgIDU3LCAg
NTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgCi0gICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3
MSwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1
LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4Niwg
Ci0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwg
ICAwLCAgODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgCi0gICAg
ICAwLCAxNzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAg
IDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0g
ICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcy
LCAgNjgsICA4MiwgCi0gICAgIDEyLCAgIDEsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAw
LCAgIDAsICA2NywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgMjQsICAgMCwgICA0LCAgIDAs
IDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDUxLCAgNTEs
ICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0Miwg
IDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAg
ICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAy
NDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAg
NjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsICA1
MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3
LCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcw
LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYs
ICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUs
ICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwg
ICA4LCAxOTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDU0LCAgIDAsICAgMCwgICA1LCAgNTAsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICA1NCwgICAwLCAgIDAsICAgOCwgCi0gICAgMTk0LCAgMzIsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4Mywg
IDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNp
ZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21w
aWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisv
Lw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQg
ICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFRl
eHR1cmVJICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgc2ludDQgICAgICAgICAg
MmQgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisv
Lw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1
ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAg
ICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENP
T1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAg
eHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2Vk
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfcmVzb3Vy
Y2VfdGV4dHVyZTJkIChzaW50LHNpbnQsc2ludCxzaW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5l
YXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWlu
dCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRvZiByMC54eSwgcjAueHl4eA0KK211bCByMC54
eSwgcjAueHl4eCwgdjEueHl4eA0KK2Z0b2kgcjAueHksIHIwLnh5eHgNCittb3YgcjAuencsIGwo
MCwwLDAsMCkNCitsZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3DQorbW92IG8wLnh5LCByMC54
eXh4DQorbW92IG8wLnp3LCBsKDAsMCwwLDApDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgOSBp
bnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0
aHJvdWdoUkcyRElbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICA4OSwgMTIzLCAN
CisgICAgMTI5LCAyNTEsIDIwNiwgMTA1LCAyMjEsIDE0MSwgDQorICAgICAgNSwgMTYwLCAxODYs
IDE4NywgMTY4LCAxNTcsIA0KKyAgICAxNDUsIDI0NiwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMjA4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAxODAsICAgMCwgICAwLCAgIDAsICAxMiwgICAxLCANCisgICAg
ICAwLCAgIDAsICA2NCwgICAxLCAgIDAsICAgMCwgDQorICAgICA4NCwgICAyLCAgIDAsICAgMCwg
IDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAy
NTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA2OSwgICAwLCAgIDAsICAgMCwgIDYwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAx
MywgICAwLCAgIDAsICAgMCwgDQorICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQsIA0K
KyAgICAxMDEsICA3MywgICAwLCAgNzcsIDEwNSwgIDk5LCANCisgICAgMTE0LCAxMTEsIDExNSwg
MTExLCAxMDIsIDExNiwgDQorICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIA0KKyAg
ICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCANCisgICAgIDk3LCAxMDAsIDEwMSwgMTE0
LCAgMzIsICA2NywgDQorICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KKyAgICAx
MTQsICAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCANCisgICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAg
NDYsICA0OSwgDQorICAgICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIA0KKyAgICAgNzMs
ICA4MywgIDcxLCAgNzgsICA4MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAgMCwg
ICAwLCAgIDAsICA2OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4NiwgDQor
ICAgICA5NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIA0KKyAgICAgNzMsICA3OSwgIDc4LCAg
IDAsICA4NCwgIDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAg
ICAgMCwgMTcxLCAxNzEsIDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDQ0LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAg
MCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwg
IDg0LCANCisgICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgDQorICAgIDE3MSwgMTcx
LCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAgICAgMTIsICAgMSwgICAwLCAgIDAsICA2NCwgICAw
LCANCisgICAgICAwLCAgIDAsICA2NywgICAwLCAgIDAsICAgMCwgDQorICAgICA4OCwgIDI0LCAg
IDAsICAgNCwgICAwLCAxMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDUxLCAgNTEsICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAgICAgMCwgICAzLCAgNTAs
ICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisg
ICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgMTA0LCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg2
LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAgIDcsICA1MCwgICAwLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAg
MCwgICAwLCAgMjcsICAgMCwgDQorICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgOCwgMTk0LCAgIDAsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgNjQsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0NSwgICAwLCAg
IDAsICAgNywgDQorICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDcwLCAgMTQsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAs
IDEyNiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAg
MCwgICAwLCAgIDUsICA1MCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA3MCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDU0LCAgIDAsICAgMCwgICA4LCANCisgICAgMTk0LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDIsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAsICAgMSwgIDgzLCAg
ODQsICA2NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnMmR1
aTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzJkdWkx
MXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJn
MmR1aTExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjcgKzEsMTY3IEBACi0jaWYgMAotLy8K
LS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45
NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xv
dCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0g
LS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBUZXh0dXJlVUkgICAgICAgICAg
ICAgICAgICAgICAgICAgdGV4dHVyZSAgIHVpbnQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDEK
LS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAg
ICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5
ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAKLS8vCi0vLwotLy8gT3V0cHV0IHNp
Z25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAg
ICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0v
LwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfdGV4dHVyZTJkICh1aW50LHVpbnQsdWludCx1aW50KSB0
MAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVt
cHMgMQotcmVzaW5mb191aW50IHIwLnh5encsIGwoMCksIHQwLnh5encKLXV0b2YgcjAueHksIHIw
Lnh5eHgKLW11bCByMC54eSwgcjAueHl4eCwgdjEueHl4eAotZnRvaSByMC54eSwgcjAueHl4eAot
bW92IHIwLnp3LCBsKDAsMCwwLDApCi1sZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3Ci1tb3Yg
bzAueHksIHIwLnh5eHgKLW1vdiBvMC56dywgbCgwLDAsMCwwKQotcmV0IAotLy8gQXBwcm94aW1h
dGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNf
UGFzc3Rocm91Z2hSRzJEVUlbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAyNTMsIDE4
OCwgCi0gICAgMTM4LCAxNTMsIDIyNiwgMTk0LCAxODIsIDE5NywgCi0gICAgMTg0LCAgMzYsIDEx
MSwgIDI0LCAxOTgsIDE3MSwgCi0gICAgMjQxLCAxNDUsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgMjA4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAw
LCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAw
LCAgIDAsICA2NCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDg0LCAgIDIsICAgMCwgICAwLCAgODIs
ICA2OCwgCi0gICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwg
ICAxLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAg
IDQsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAg
MCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgODUsICA3
MywgICAwLCAgNzcsIDEwNSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0g
ICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2
LCAgMzIsICA4MywgCi0gICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3
LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYs
ICA1MSwgCi0gICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQs
ICA1MSwgIDU2LCAgNTIsICAgMCwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwg
ICAwLCAgNTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDMsICAg
MCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0g
ICAgIDczLCAgNzksICA3OCwgICAwLCAgODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5
LCAgODIsICA2OCwgCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcx
LCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4Mywg
IDg2LCAgOTUsICA4NCwgCi0gICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAg
MTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgCi0gICAgIDEyLCAgIDEsICAgMCwgICAwLCAg
NjQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2NywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAg
MjQsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDY4LCAgNjgsICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsICA1
MCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0g
ICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYx
LCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwg
Ci0gICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDU2LCAgIDAsICAgMCwgICA3LCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICA3MCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAg
MCwgCi0gICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAgNTAsICAzMiwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgOCwgCi0gICAgMTk0LCAg
MzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgIDY0LCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0g
ICAgICAwLCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAw
LCAgIDksICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChS
KSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNv
dXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0t
LSAtLS0tLS0tLQ0KKy8vIFRleHR1cmVVSSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
ICAgdWludDQgICAgICAgICAgMmQgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElu
cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFz
ayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNW
X1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0
ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAg
ICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0K
Ky8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1Zh
bHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAg
ICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3DQorLy8NCitw
c180XzANCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkICh1aW50LHVpbnQsdWludCx1aW50KSB0MA0K
K2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVt
cHMgMQ0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRvZiByMC54eSwg
cjAueHl4eA0KK211bCByMC54eSwgcjAueHl4eCwgdjEueHl4eA0KK2Z0b2kgcjAueHksIHIwLnh5
eHgNCittb3YgcjAuencsIGwoMCwwLDAsMCkNCitsZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3
DQorbW92IG8wLnh5LCByMC54eXh4DQorbW92IG8wLnp3LCBsKDAsMCwwLDApDQorcmV0IA0KKy8v
IEFwcHJveGltYXRlbHkgOSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29u
c3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkcyRFVJW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2
NiwgIDY3LCAyNTMsIDE4OCwgDQorICAgIDEzOCwgMTUzLCAyMjYsIDE5NCwgMTgyLCAxOTcsIA0K
KyAgICAxODQsICAzNiwgMTExLCAgMjQsIDE5OCwgMTcxLCANCisgICAgMjQxLCAxNDUsICAgMSwg
ICAwLCAgIDAsICAgMCwgDQorICAgIDIwOCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTgwLCAgIDAsICAgMCwgICAw
LCAgMTIsICAgMSwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMSwgICAwLCAgIDAsIA0KKyAgICAg
ODQsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDEyMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAg
MCwgICAwLCAgIDAsICA2MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
MjU1LCAyNTUsIDI1NSwgMjU1LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODQsIDEwMSwgMTIw
LCAxMTYsIDExNywgMTE0LCANCisgICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwgDQor
ICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAg
ODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAg
IDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIs
IDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgDQorICAgICA0
NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1
MiwgICAwLCANCisgICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA1Niwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAw
LCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAzLCAgIDAs
ICAgMCwgIDgzLCAgODYsIA0KKyAgICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCANCisg
ICAgIDczLCAgNzksICA3OCwgICAwLCAgODQsICA2OSwgDQorICAgICA4OCwgIDY3LCAgNzksICA3
OSwgIDgyLCAgNjgsIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICA3OSwgIDgzLCANCisgICAg
IDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA4MywgIDg2LCAgOTUsICA4NCwgDQorICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAg
IDAsIA0KKyAgICAxNzEsIDE3MSwgIDgzLCAgNzIsICA2OCwgIDgyLCANCisgICAgIDEyLCAgIDEs
ICAgMCwgICAwLCAgNjQsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjcsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgODgsICAyNCwgICAwLCAgIDQsICAgMCwgMTEyLCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDY4LCAgIDAsICAgMCwgIDk4LCAgMTYsIA0K
KyAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwg
ICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCANCisgICAgICAwLCAgIDIsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA2MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIA0KKyAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCANCisgICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIA0KKyAgICAgMTYsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICA3LCAgNTAsICAg
MCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwg
IDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI3LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgIDUw
LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAg
IDgsIDE5NCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMiwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgNDUsICAgMCwgICAwLCAgIDcsIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAgNTAsICAzMiwgDQorICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgOCwgDQorICAgIDE5NCwgIDMyLCAg
MTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgNjQsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCANCisg
ICAgICAwLCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwgDQorICAgIDExNiwgICAwLCAgIDAsICAg
MCwgICA5LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hyZzNkMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnM2QxMXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnM2QxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYyICsxLDE2MiBA
QAotI2lmIDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA2LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8v
Ci0vLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAg
ICAgICAgRGltIFNsb3QgRWxlbWVudHMKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQotLy8gU2FtcGxl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAg
ICAwICAgICAgICAxCi0vLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVy
ZSAgZmxvYXQ0ICAgICAgICAgIDNkICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0
IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVn
aXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJ
T04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAg
Ci0vLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJ
TkRFWCAgICB1aW50ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXog
ICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogCi0vLwotLy8KLS8vIE91dHB1dCBzaWdu
YXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVy
IFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAt
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dwotLy8K
LXBzXzRfMAotZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdAotZGNsX3Jlc291cmNlX3RleHR1
cmUzZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYy
Lnh5egotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotc2FtcGxlIHIwLnh5encsIHYy
Lnh5engsIHQwLnh5encsIHMwCi1tb3YgbzAueHksIHIwLnh5eHgKLW1vdiBvMC56dywgbCgwLDAs
MCwxLjAwMDAwMCkKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1
c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkczRFtdID0KLXsKLSAg
ICAgNjgsICA4OCwgIDY2LCAgNjcsIDExNywgMTU5LCAKLSAgICAyMzgsICA4MSwgIDUxLCAyMjMs
IDEyNiwgIDMxLCAKLSAgICAyMjMsIDE3MSwgMjI3LCAgIDIsIDI0OCwgICA3LCAKLSAgICAgNzIs
ICA5MSwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAxODgsICAgMiwgICAwLCAgIDAsICAgNSwg
ICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAKLSAgICAyMjAsICAgMCwg
ICAwLCAgIDAsIDEwMCwgICAxLCAKLSAgICAgIDAsICAgMCwgMTUyLCAgIDEsICAgMCwgICAwLCAK
LSAgICAgNjQsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCAKLSAgICAgNjksICA3MCwgMTYwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICAg
MCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAxMDksICAg
MCwgICAwLCAgIDAsICA5MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDAsICAgMCwgICAwLCAgIDAs
ICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgs
ICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywgICAwLCAKLSAgICAgIDAsICAgMCwg
IDgzLCAgOTcsIDEwOSwgMTEyLCAKLSAgICAxMDgsIDEwMSwgMTE0LCAgIDAsICA4NCwgMTAxLCAK
LSAgICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgIDcwLCAKLSAgICAgIDAsICA3NywgMTA1LCAg
OTksIDExNCwgMTExLCAKLSAgICAxMTUsIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAKLSAgICAg
ODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAKLSAgICAgNzYsICAzMiwgIDgzLCAxMDQsICA5
NywgMTAwLCAKLSAgICAxMDEsIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAKLSAgICAxMTIsIDEw
NSwgMTA4LCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0
LCAKLSAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAKLSAgICAgNTYsICA1MiwgICAw
LCAxNzEsICA3MywgIDgzLCAKLSAgICAgNzEsICA3OCwgMTI4LCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDgwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwg
ICAwLCAKLSAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgMTE4LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICAg
NywgICA3LCAKLSAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCAKLSAgICAgNzksICA4
MywgIDczLCAgODQsICA3MywgIDc5LCAKLSAgICAgNzgsICAgMCwgIDgzLCAgODYsICA5NSwgIDgy
LCAKLSAgICAgNjksICA3OCwgIDY4LCAgNjksICA4MiwgIDg0LCAKLSAgICAgNjUsICA4MiwgIDcx
LCAgNjksICA4NCwgIDY1LCAKLSAgICAgODIsICA4MiwgIDY1LCAgODksICA3MywgIDc4LCAKLSAg
ICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwgIDY5LCAKLSAgICAgODgsICA2NywgIDc5LCAgNzks
ICA4MiwgIDY4LCAKLSAgICAgIDAsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCAKLSAgICAgNDQs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAg
ODQsICA2NSwgIDgyLCAKLSAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCAKLSAgICAg
ODMsICA3MiwgIDY4LCAgODIsIDE2MCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAg
MCwgICAwLCAKLSAgICAgNDAsICAgMCwgICAwLCAgIDAsICA5MCwgICAwLCAKLSAgICAgIDAsICAg
MywgICAwLCAgOTYsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4OCwgIDQw
LCAKLSAgICAgIDAsICAgNCwgICAwLCAxMTIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA4NSwgIDg1LCAKLSAgICAgIDAsICAgMCwgIDk4LCAgMTYsICAgMCwgICAzLCAKLSAg
ICAxMTQsICAxNiwgIDE2LCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgMTAxLCAgIDAs
ICAgMCwgICAzLCAKLSAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgMTA0LCAgIDAsICAgMCwgICAyLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2OSwg
ICAwLCAKLSAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA3MCwgIDE4LCAKLSAgICAgMTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
OTYsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAg
IDAsICAgNSwgIDUwLCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3
MCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAg
MCwgICAwLCAgIDgsIDE5NCwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCAKLSAgICAgODMsICA4NCwgIDY1LCAgODQs
IDExNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8g
R2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAu
MTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNs
b3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0t
LSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAg
IDENCisvLyBUZXh0dXJlRiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0
ICAgICAgICAgIDNkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWdu
YXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElP
TiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAN
CisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJ
TkRFWCAgICB1aW50ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6
ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6IA0KKy8vDQorLy8NCisvLyBPdXRwdXQg
c2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJl
Z2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4
eXp3DQorLy8NCitwc180XzANCitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jl
c291cmNlX3RleHR1cmUzZCAoZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0
X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3Nh
bXBsZSByMC54eXp3LCB2Mi54eXp4LCB0MC54eXp3LCBzMA0KK21vdiBvMC54eSwgcjAueHl4eA0K
K21vdiBvMC56dywgbCgwLDAsMCwxLjAwMDAwMCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0
IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFz
c3Rocm91Z2hSRzNEW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMTcsIDE1OSwg
DQorICAgIDIzOCwgIDgxLCAgNTEsIDIyMywgMTI2LCAgMzEsIA0KKyAgICAyMjMsIDE3MSwgMjI3
LCAgIDIsIDI0OCwgICA3LCANCisgICAgIDcyLCAgOTEsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDE4OCwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAg
IDAsICAgMCwgICAwLCANCisgICAgMjIwLCAgIDAsICAgMCwgICAwLCAxMDAsICAgMSwgDQorICAg
ICAgMCwgICAwLCAxNTIsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMiwgICAwLCAgIDAs
ICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDE2MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwg
MjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAxMDksICAgMCwgICAwLCAgIDAsICA5Miwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAs
ICAgMCwgMjU1LCAyNTUsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTMsICAgMCwgDQorICAgICAgMCwgICAwLCAgODMsICA5
NywgMTA5LCAxMTIsIA0KKyAgICAxMDgsIDEwMSwgMTE0LCAgIDAsICA4NCwgMTAxLCANCisgICAg
MTIwLCAxMTYsIDExNywgMTE0LCAxMDEsICA3MCwgDQorICAgICAgMCwgIDc3LCAxMDUsICA5OSwg
MTE0LCAxMTEsIA0KKyAgICAxMTUsIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCANCisgICAgIDgy
LCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgDQorICAgICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3
LCAxMDAsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCANCisgICAgMTEyLCAx
MDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAg
NTQsIA0KKyAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCANCisgICAgIDU2LCAgNTIs
ICAgMCwgMTcxLCAgNzMsICA4MywgDQorICAgICA3MSwgIDc4LCAxMjgsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICA4
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAwLCAgOTIsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgMTE4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIs
ICAgMCwgICAwLCAgIDAsICAgNywgICA3LCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUs
ICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAg
MCwgIDgzLCAgODYsICA5NSwgIDgyLCANCisgICAgIDY5LCAgNzgsICA2OCwgIDY5LCAgODIsICA4
NCwgDQorICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgNjUsIA0KKyAgICAgODIsICA4Miwg
IDY1LCAgODksICA3MywgIDc4LCANCisgICAgIDY4LCAgNjksICA4OCwgICAwLCAgODQsICA2OSwg
DQorICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIA0KKyAgICAgIDAsIDE3MSwgIDc5
LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMzIsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3
MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0KKyAgICAgODMsICA3MiwgIDY4LCAgODIsIDE2
MCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgDQorICAgICA0MCwg
ICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICA0MCwgDQorICAgICAgMCwgICA0
LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1
LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywgDQorICAgIDExNCwgIDE2LCAg
MTYsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCAN
CisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMDQs
ICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2OSwgICAwLCANCisg
ICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDcwLCAgMTgsIA0KKyAgICAgMTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICA5Niwg
IDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAw
LCAgIDUsICA1MCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcw
LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAg
IDAsICAgMCwgICA4LCAxOTQsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAxMjgsICA2MywgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2
NSwgIDg0LCAxMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnM2RpMTFwcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnM2RpMTFwcy5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzNkaTExcHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxNzQgKzEsMTc0IEBACi0jaWYgMAotLy8KLS8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0
Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50
cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBUZXh0dXJlSSAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAgICAgIDNkICAgIDAgICAgICAgIDEKLS8vCi0vLwot
Ly8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQot
Ly8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAg
ZmxvYXQgICAgICAgCi0vLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAg
ICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAg
ICAgIDAgICB4eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogCi0vLwotLy8KLS8v
IE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNW
X1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICAgaW50
ICAgeHl6dwotLy8KLXBzXzRfMAotZGNsX3Jlc291cmNlX3RleHR1cmUzZCAoc2ludCxzaW50LHNp
bnQsc2ludCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6Ci1kY2xfb3V0cHV0IG8wLnh5
encKLWRjbF90ZW1wcyAxCi1yZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6dwotdXRv
ZiByMC54eXosIHIwLnh5engKLW11bCByMC54eXosIHIwLnh5engsIHYyLnh5engKLWZ0b2kgcjAu
eHl6LCByMC54eXp4Ci1tb3YgcjAudywgbCgwKQotbGQgcjAueHl6dywgcjAueHl6dywgdDAueHl6
dwotbW92IG8wLnh5LCByMC54eXh4Ci1tb3YgbzAuencsIGwoMCwwLDAsMCkKLXJldCAKLS8vIEFw
cHJveGltYXRlbHkgOSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllU
RSBnX1BTX1Bhc3N0aHJvdWdoUkczRElbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAg
NjIsIDExOSwgCi0gICAgIDYxLCAgMjEsICA4MywgIDQyLCAgODAsIDEyNSwgCi0gICAgMTIxLCAy
MDgsIDI0NywgIDEwLCAyMjMsICA2MiwgCi0gICAgIDMzLCAgMTgsICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgMjQ0LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1
MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMSwgCi0g
ICAgICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgCi0gICAgMTIwLCAgIDIsICAgMCwgICAw
LCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUs
ICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDY5LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAg
IDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAg
NzMsICAgMCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDEx
NiwgCi0gICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgCi0gICAgIDc2LCAgODMsICA3
NiwgIDMyLCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgCi0g
ICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0gICAgMTE0LCAgMzIsICA1NCwgIDQ2
LCAgNTEsICA0NiwgCi0gICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgCi0gICAgIDU0
LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAxMjgs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAs
ICAgMCwgICAwLCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAg
IDAsICAgMCwgICAwLCAxMTgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA3LCAgIDcsICAgMCwgICAwLCAgODMsICA4NiwgCi0g
ICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwgICAw
LCAgODMsICA4NiwgCi0gICAgIDk1LCAgODIsICA2OSwgIDc4LCAgNjgsICA2OSwgCi0gICAgIDgy
LCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgCi0gICAgIDg0LCAgNjUsICA4MiwgIDgyLCAgNjUs
ICA4OSwgCi0gICAgIDczLCAgNzgsICA2OCwgIDY5LCAgODgsICAgMCwgCi0gICAgIDg0LCAgNjks
ICA4OCwgIDY3LCAgNzksICA3OSwgCi0gICAgIDgyLCAgNjgsICAgMCwgMTcxLCAgNzksICA4Mywg
Ci0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAg
IDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAg
MCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgCi0gICAgICAwLCAgIDEsICAg
MCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDUxLCAgNTEsICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAw
LCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEs
ICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
ODYsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAw
LCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAgMCwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAsICAxNiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAgNTAsICAzMiwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgOCwgCi0gICAgMTk0LCAgMzIsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgIDY0LCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAw
LCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDks
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNM
IFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBC
aW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0t
LS0tLQ0KKy8vIFRleHR1cmVJICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgc2lu
dDQgICAgICAgICAgM2QgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lU
SU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAg
IA0KKy8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBS
VElOREVYICAgIHVpbnQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4
eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8NCisvLw0KKy8vIE91dHB1
dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9U
QVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAgIGludCAg
IHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKHNpbnQsc2ludCxz
aW50LHNpbnQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8w
Lnh5encNCitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3
DQordXRvZiByMC54eXosIHIwLnh5engNCittdWwgcjAueHl6LCByMC54eXp4LCB2Mi54eXp4DQor
ZnRvaSByMC54eXosIHIwLnh5engNCittb3YgcjAudywgbCgwKQ0KK2xkIHIwLnh5encsIHIwLnh5
encsIHQwLnh5encNCittb3YgbzAueHksIHIwLnh5eHgNCittb3YgbzAuencsIGwoMCwwLDAsMCkN
CityZXQgDQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5k
aWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSRzNESVtdID0NCit7DQorICAgICA2
OCwgIDg4LCAgNjYsICA2NywgIDYyLCAxMTksIA0KKyAgICAgNjEsICAyMSwgIDgzLCAgNDIsICA4
MCwgMTI1LCANCisgICAgMTIxLCAyMDgsIDI0NywgIDEwLCAyMjMsICA2MiwgDQorICAgICAzMywg
IDE4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyNDQsICAgMiwgICAwLCAgIDAsICAgNSwg
ICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE4MCwgICAw
LCAgIDAsICAgMCwgIDYwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTEyLCAgIDEsICAgMCwgICAw
LCANCisgICAgMTIwLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAx
MjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisg
ICAgIDY5LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAg
ICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCANCisgICAgIDg0
LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQorICAgIDEwMSwgIDczLCAgIDAsICA3NywgMTA1
LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAg
NDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAx
MDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDks
IDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYs
IA0KKyAgICAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCANCisgICAgIDU0LCAgNTEsICA1
NiwgIDUyLCAgIDAsIDE3MSwgDQorICAgICA3MywgIDgzLCAgNzEsICA3OCwgMTI4LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAgIDAsICAgMCwg
ICAwLCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsIDExOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA3LCAgIDcsICAgMCwgICAwLCAgODMsICA4
NiwgDQorICAgICA5NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIA0KKyAgICAgNzMsICA3OSwg
IDc4LCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODIsICA2OSwgIDc4LCAgNjgsICA2OSwg
DQorICAgICA4MiwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAgODQsICA2NSwgIDgy
LCAgODIsICA2NSwgIDg5LCANCisgICAgIDczLCAgNzgsICA2OCwgIDY5LCAgODgsICAgMCwgDQor
ICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIsICA2OCwgICAwLCAx
NzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDMyLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAx
NSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgDQorICAgICA2NSwg
IDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDgzLCAgNzIsICA2OCwg
IDgyLCANCisgICAgICAwLCAgIDEsICAgMCwgICAwLCAgNjQsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICA0MCwgICAwLCAgIDQsICAgMCwgMTEy
LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1MSwgIDUxLCAg
IDAsICAgMCwgIDk4LCAgMTYsIA0KKyAgICAgIDAsICAgMywgMTE0LCAgMTYsICAxNiwgICAwLCAN
CisgICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIs
ICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCANCisg
ICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwgIDE2LCAgIDAsICAg
NywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEyNiwg
IDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCANCisgICAgICAw
LCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcw
LCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAg
IDAsICAgMCwgICA3LCAxMTQsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICA3MCwgIDE4LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDI3LCAgIDAs
IA0KKyAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3LCANCisgICAgMjQyLCAgIDAsICAxNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNCwgIDE2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwgIDUwLCAgMzIsIA0KKyAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDgsIA0KKyAgICAxOTQsICAz
MiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgIDY0LCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwg
DQorICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIA0KKyAgICAxMTYsICAgMCwgICAw
LCAgIDAsICAgOSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL3Bhc3N0aHJvdWdocmczZHVpMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHJnM2R1aTExcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdocmczZHVpMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3
NCArMSwxNzQgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmlu
ZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUg
IEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0K
LS8vIFRleHR1cmVVSSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAg
ICAgICAgM2QgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgot
Ly8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1
ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0t
LS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFNWX1JFTkRF
UlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQg
ICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAg
IE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0v
LyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZv
cm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xf
cmVzb3VyY2VfdGV4dHVyZTNkICh1aW50LHVpbnQsdWludCx1aW50KSB0MAotZGNsX2lucHV0X3Bz
IGxpbmVhciB2Mi54eXoKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLXJlc2luZm9f
dWludCByMC54eXp3LCBsKDApLCB0MC54eXp3Ci11dG9mIHIwLnh5eiwgcjAueHl6eAotbXVsIHIw
Lnh5eiwgcjAueHl6eCwgdjIueHl6eAotZnRvaSByMC54eXosIHIwLnh5engKLW1vdiByMC53LCBs
KDApCi1sZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3Ci1tb3YgbzAueHksIHIwLnh5eHgKLW1v
diBvMC56dywgbCgwLDAsMCwwKQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9u
IHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSRzNEVUlb
XSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMzcsICA1NiwgCi0gICAgIDQzLCAyMDYs
ICA4MSwgMTM3LCAxMjUsIDE5MSwgCi0gICAgMjE2LCAgNTAsICA4NiwgIDc2LCAgNjEsICA3OCwg
Ci0gICAgIDI1LCAyNDYsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMjQ0LCAgIDIsICAgMCwg
ICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAg
MTgwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMSwgCi0gICAgICAwLCAgIDAsIDExMiwgICAxLCAg
IDAsICAgMCwgCi0gICAgMTIwLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAg
NzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0g
ICAgIDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAw
LCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEs
IDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwg
Ci0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0MCwg
IDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0gICAg
MTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAx
MDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAg
NTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAg
MCwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAxMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAw
LCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1
LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICA3LCAgIDcsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAg
NzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAg
ODIsICA2OSwgIDc4LCAgNjgsICA2OSwgCi0gICAgIDgyLCAgODQsICA2NSwgIDgyLCAgNzEsICA2
OSwgCi0gICAgIDg0LCAgNjUsICA4MiwgIDgyLCAgNjUsICA4OSwgCi0gICAgIDczLCAgNzgsICA2
OCwgIDY5LCAgODgsICAgMCwgCi0gICAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgCi0g
ICAgIDgyLCAgNjgsICAgMCwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAw
LCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwg
Ci0gICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4Mywg
IDcyLCAgNjgsICA4MiwgCi0gICAgICAwLCAgIDEsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgNDAsICAgMCwgICA0LCAg
IDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAg
NjgsICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYsICAg
MCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0
MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0g
ICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3
LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAx
LCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUs
IDExNCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwg
ICA3LCAxMTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDcwLCAgIDIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE4LCAg
MTYsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAg
IDUsIDExNCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAg
MiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAg
MCwgICA1LCAxMzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAw
LCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAs
IDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAs
ICAgMCwgICA1LCAgNTAsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwg
ICAwLCAgIDAsICAgOCwgCi0gICAgMTk0LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMiwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4MywgIDg0LCAgNjUsICA4
NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisv
LyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYw
MC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0g
U2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0t
LS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFRleHR1cmVVSSAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAgICAgICAgM2QgICAgMCAgICAg
ICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFNWX1JFTkRFUlRBUkdFVEFS
UkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICAgICAgDQor
Ly8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAyICAgICBOT05FICAg
ZmxvYXQgICB4eXogDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1h
dCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAg
IHh5encgICAgICAgIDAgICBUQVJHRVQgICAgdWludCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2Rj
bF9yZXNvdXJjZV90ZXh0dXJlM2QgKHVpbnQsdWludCx1aW50LHVpbnQpIHQwDQorZGNsX2lucHV0
X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3Jl
c2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRvZiByMC54eXosIHIwLnh5engN
CittdWwgcjAueHl6LCByMC54eXp4LCB2Mi54eXp4DQorZnRvaSByMC54eXosIHIwLnh5engNCitt
b3YgcjAudywgbCgwKQ0KK2xkIHIwLnh5encsIHIwLnh5encsIHQwLnh5encNCittb3YgbzAueHks
IHIwLnh5eHgNCittb3YgbzAuencsIGwoMCwwLDAsMCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVs
eSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNf
UGFzc3Rocm91Z2hSRzNEVUlbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAzNywg
IDU2LCANCisgICAgIDQzLCAyMDYsICA4MSwgMTM3LCAxMjUsIDE5MSwgDQorICAgIDIxNiwgIDUw
LCAgODYsICA3NiwgIDYxLCAgNzgsIA0KKyAgICAgMjUsIDI0NiwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgMjQ0LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxODAsICAgMCwgICAwLCAgIDAsICA2MCwgICAxLCAN
CisgICAgICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgDQorICAgIDEyMCwgICAyLCAgIDAs
ICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAg
MjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAgIDAsICAgMCwg
IDYwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0
LCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1
LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAx
MTQsIA0KKyAgICAxMDEsICA4NSwgIDczLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQs
IDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIs
IA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEw
MCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0K
KyAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwg
IDQ4LCAgNDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAg
ICAgNzMsICA4MywgIDcxLCAgNzgsIDEyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDgwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUs
ICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgNywgICA3LCAgIDAsICAgMCwgIDgzLCAgODYsIA0KKyAgICAgOTUsICA4MCwgIDc5
LCAgODMsICA3MywgIDg0LCANCisgICAgIDczLCAgNzksICA3OCwgICAwLCAgODMsICA4NiwgDQor
ICAgICA5NSwgIDgyLCAgNjksICA3OCwgIDY4LCAgNjksIA0KKyAgICAgODIsICA4NCwgIDY1LCAg
ODIsICA3MSwgIDY5LCANCisgICAgIDg0LCAgNjUsICA4MiwgIDgyLCAgNjUsICA4OSwgDQorICAg
ICA3MywgIDc4LCAgNjgsICA2OSwgIDg4LCAgIDAsIA0KKyAgICAgODQsICA2OSwgIDg4LCAgNjcs
ICA3OSwgIDc5LCANCisgICAgIDgyLCAgNjgsICAgMCwgMTcxLCAgNzksICA4MywgDQorICAgICA3
MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
OCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgODMsICA4NiwgIDk1LCAgODQsIA0KKyAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgICAw
LCANCisgICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgDQorICAgICAgMCwgICAxLCAg
IDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA2OCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisg
ICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0MiwgICAwLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgODYsICAgMCwgDQorICAgICAgMCwgICA1LCAxMTQsICAgMCwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgNywgMTE0LCAgIDAs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDIsICAx
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxOCwgIDE2LCAgIDAsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyNywgICAwLCANCisgICAgICAwLCAgIDUsIDExNCwg
ICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1
LCAxMzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0NSwgICAwLCAg
IDAsICAgNywgDQorICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDcwLCAgMTQsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAs
IDEyNiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAg
MCwgICAwLCAgIDUsICA1MCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICA3MCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDU0LCAgIDAsICAgMCwgICA4LCANCisgICAgMTk0LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDIsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAsICAgMSwgIDgzLCAg
ODQsICA2NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjJk
MTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjJkMTFw
cy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2Iy
ZDExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxOTYgKzEsMTk2IEBACi0jaWYgMAotLy8KLS8v
IEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAw
LjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBF
bGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBTYW1wbGVyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDEKLS8v
IFRleHR1cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAg
ICAgMmQgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8K
LS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAg
Rm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAg
MCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFRFWENPT1JEICAg
ICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIAot
Ly8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJH
RVQgICBmbG9hdCAgIHh5encKLS8vCi0vLwotLy8gU2FtcGxlci9SZXNvdXJjZSB0byBEWDkgc2hh
ZGVyIHNhbXBsZXIgbWFwcGluZ3M6Ci0vLwotLy8gVGFyZ2V0IFNhbXBsZXIgU291cmNlIFNhbXBs
ZXIgIFNvdXJjZSBSZXNvdXJjZQotLy8gLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0tLS0tLS0KLS8vIHMwICAgICAgICAgICAgIHMwICAgICAgICAgICAgICB0MCAgICAg
ICAgICAgICAgIAotLy8KLS8vCi0vLyBMZXZlbDkgc2hhZGVyIGJ5dGVjb2RlOgotLy8KLSAgICBw
c18yX3gKLSAgICBkZWYgYzAsIDEsIDAsIDAsIDAKLSAgICBkY2wgdDAueHkKLSAgICBkY2xfMmQg
czAKLSAgICB0ZXhsZCByMCwgdDAsIHMwCi0gICAgbWFkIHIwLCByMC54eXp4LCBjMC54eHh5LCBj
MC55eXl4Ci0gICAgbW92IG9DMCwgcjAKLQotLy8gYXBwcm94aW1hdGVseSAzIGluc3RydWN0aW9u
IHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMiBhcml0aG1ldGljKQotcHNfNF8wCi1kY2xfc2FtcGxl
ciBzMCwgbW9kZV9kZWZhdWx0Ci1kY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxm
bG9hdCxmbG9hdCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkKLWRjbF9vdXRwdXQgbzAu
eHl6dwotZGNsX3RlbXBzIDEKLXNhbXBsZSByMC54eXp3LCB2MS54eXh4LCB0MC54eXp3LCBzMAot
bW92IG8wLnh5eiwgcjAueHl6eAotbW92IG8wLncsIGwoMS4wMDAwMDApCi1yZXQgCi0vLyBBcHBy
b3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUg
Z19QU19QYXNzdGhyb3VnaFJHQjJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDUx
LCAgOTAsIAotICAgICA0OSwgMTY3LCAyMTEsICA3OSwgIDIwLCAyMTUsIAotICAgICA1NywgMjI3
LCAgNzAsICA1NiwgMTMyLCAxMTcsIAotICAgICA2NiwgMTU2LCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgICAyOCwgICAzLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYs
ICAgMCwgICAwLCAgIDAsIAotICAgIDIwOCwgICAwLCAgIDAsICAgMCwgMTA4LCAgIDEsIAotICAg
ICAgMCwgICAwLCAyMzIsICAgMSwgICAwLCAgIDAsIAotICAgIDE0NCwgICAyLCAgIDAsICAgMCwg
MjMyLCAgIDIsIAotICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIAotICAgIDE0NCwg
ICAwLCAgIDAsICAgMCwgMTQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAy
NTUsIAotICAgIDEwNCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICA0MCwgICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIAotICAgICA4
MSwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsIAotICAgICAxNSwgMTYwLCAgIDAsICAgMCwgMTI4
LCAgNjMsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
IAotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIAotICAgICAzMSwgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTQ0LCAgIDAsICAgOCwgIDE1LCAxNjAsIAotICAg
ICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwg
MjI4LCAxNzYsIAotICAgICAgMCwgICA4LCAyMjgsIDE2MCwgICA0LCAgIDAsIAotICAgICAgMCwg
ICA0LCAgIDAsICAgMCwgIDE1LCAxMjgsIAotICAgICAgMCwgICAwLCAgMzYsIDEyOCwgICAwLCAg
IDAsIAotICAgICA2NCwgMTYwLCAgIDAsICAgMCwgIDIxLCAxNjAsIAotICAgICAgMSwgICAwLCAg
IDAsICAgMiwgICAwLCAgIDgsIAotICAgICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxMjgsIAot
ICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgIDgzLCAgNzIsIAotICAgICA2OCwgIDgyLCAxNDgsICAg
MCwgICAwLCAgIDAsIAotICAgICA2NCwgICAwLCAgIDAsICAgMCwgIDM3LCAgIDAsIAotICAgICAg
MCwgICAwLCAgOTAsICAgMCwgICAwLCAgIDMsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgODgsICAyNCwgICAwLCAgIDQsIAotICAgICAgMCwgMTEy
LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODUsICA4NSwgICAwLCAgIDAs
IAotICAgICA5OCwgIDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIAotICAgICAxNiwgICAwLCAgIDEs
ICAgMCwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAgMzIsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAwLCAgIDAsICAgMiwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIAotICAgIDI0Miwg
ICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAg
IDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIAotICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgIDExNCwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAgMiwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA1LCAxMzAsICAzMiwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgMTI4LCAgNjMsIAotICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQs
IAotICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgODIs
ICA2OCwgIDY5LCAgNzAsIAotICAgIDE2MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwg
IDI4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgNCwgMjU1LCAyNTUsIAotICAgICAgMCwg
ICAxLCAgIDAsICAgMCwgMTA5LCAgIDAsIAotICAgICAgMCwgICAwLCAgOTIsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAg
MCwgMTAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAg
NSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1
LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAw
LCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgICA4MywgIDk3LCAxMDksIDExMiwgMTA4LCAxMDEs
IAotICAgIDExNCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIAotICAgIDExNywgMTE0LCAxMDEs
ICA3MCwgICAwLCAgNzcsIAotICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIAotICAg
IDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIAotICAgICAzMiwgIDcyLCAgNzYsICA4Mywg
IDc2LCAgMzIsIAotICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsIAotICAgICAzMiwg
IDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIAotICAgIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU0LCAg
NDYsIAotICAgICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsIAotICAgICA0NiwgIDQ5LCAg
NTQsICA1MSwgIDU2LCAgNTIsIAotICAgICAgMCwgMTcxLCAgNzMsICA4MywgIDcxLCAgNzgsIAot
ICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDgsICAg
MCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAgICA2OCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMs
ICAgMywgICAwLCAgIDAsIAotICAgICA4MywgIDg2LCAgOTUsICA4MCwgIDc5LCAgODMsIAotICAg
ICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIAotICAgICA4NCwgIDY5LCAgODgsICA2Nywg
IDc5LCAgNzksIAotICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgMTcxLCAxNzEsIAotICAgICA3OSwg
IDgzLCAgNzEsICA3OCwgIDQ0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAsICAg
MCwgIDgzLCAgODYsIAotICAgICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIAotICAgICA4
NCwgICAwLCAxNzEsIDE3MQotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9z
b2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisv
LyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0t
LS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0KKy8vIFRleHR1cmVGICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICBmbG9hdDQgICAgICAgICAgMmQgICAgMCAg
ICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAg
ICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8v
DQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAg
VEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8NCisvLw0KKy8vIFNhbXBsZXIvUmVzb3VyY2UgdG8g
RFg5IHNoYWRlciBzYW1wbGVyIG1hcHBpbmdzOg0KKy8vDQorLy8gVGFyZ2V0IFNhbXBsZXIgU291
cmNlIFNhbXBsZXIgIFNvdXJjZSBSZXNvdXJjZQ0KKy8vIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0t
LS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tDQorLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAg
ICAgIHQwICAgICAgICAgICAgICAgDQorLy8NCisvLw0KKy8vIExldmVsOSBzaGFkZXIgYnl0ZWNv
ZGU6DQorLy8NCisgICAgcHNfMl94DQorICAgIGRlZiBjMCwgMSwgMCwgMCwgMA0KKyAgICBkY2wg
dDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwgczANCisgICAgbWFkIHIw
LCByMC54eXp4LCBjMC54eHh5LCBjMC55eXl4DQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBw
cm94aW1hdGVseSAzIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMiBhcml0aG1l
dGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCitkY2xfcmVzb3Vy
Y2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5wdXRfcHMg
bGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCitzYW1wbGUg
cjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczANCittb3YgbzAueHl6LCByMC54eXp4DQorbW92
IG8wLncsIGwoMS4wMDAwMDApDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgNCBpbnN0cnVjdGlv
biBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdC
MkRbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICA1MSwgIDkwLCANCisgICAgIDQ5
LCAxNjcsIDIxMSwgIDc5LCAgMjAsIDIxNSwgDQorICAgICA1NywgMjI3LCAgNzAsICA1NiwgMTMy
LCAxMTcsIA0KKyAgICAgNjYsIDE1NiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAg
IDMsICAgMCwgICAwLCAgIDYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAyMDgsICAgMCwgICAwLCAgIDAsIDEwOCwgICAxLCANCisgICAgICAwLCAgIDAs
IDIzMiwgICAxLCAgIDAsICAgMCwgDQorICAgIDE0NCwgICAyLCAgIDAsICAgMCwgMjMyLCAgIDIs
IA0KKyAgICAgIDAsICAgMCwgIDY1LCAxMTEsIDExMCwgIDU3LCANCisgICAgMTQ0LCAgIDAsICAg
MCwgICAwLCAxNDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0K
KyAgICAxMDQsICAgMCwgICAwLCAgIDAsICA0MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgNDAsICAgMCwgICAxLCAgIDAsICAzNiwgICAwLCANCisgICAgICAwLCAgIDAsICA0MCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIA0KKyAgICAg
ODEsICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCANCisgICAgIDE1LCAxNjAsICAgMCwgICAwLCAx
MjgsICA2MywgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYsIA0KKyAgICAgMzEsICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCANCisgICAgICAwLCAxNDQsICAgMCwgICA4LCAgMTUsIDE2
MCwgDQorICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIA0KKyAgICAgMTUsIDEyOCwg
ICAwLCAgIDAsIDIyOCwgMTc2LCANCisgICAgICAwLCAgIDgsIDIyOCwgMTYwLCAgIDQsICAgMCwg
DQorICAgICAgMCwgICA0LCAgIDAsICAgMCwgIDE1LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgIDM2
LCAxMjgsICAgMCwgICAwLCANCisgICAgIDY0LCAxNjAsICAgMCwgICAwLCAgMjEsIDE2MCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsIA0KKyAgICAgMTUsIDEyOCwgICAwLCAg
IDAsIDIyOCwgMTI4LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgODMsICA3MiwgDQorICAg
ICA2OCwgIDgyLCAxNDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwgICAwLCAgIDAs
ICAzNywgICAwLCANCisgICAgICAwLCAgIDAsICA5MCwgICAwLCAgIDAsICAgMywgDQorICAgICAg
MCwgIDk2LCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDg4LCAgMjQsICAg
MCwgICA0LCANCisgICAgICAwLCAxMTIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgODUsICA4NSwgICAwLCAgIDAsIA0KKyAgICAgOTgsICAxNiwgICAwLCAgIDMsICA1MCwg
IDE2LCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAw
LCAgIDAsICAgMywgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTA0LCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NjksICAgMCwgICAwLCAgIDksIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgOTYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAg
MCwgICAwLCAgIDUsIA0KKyAgICAxMTQsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICA3MCwgICAyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTMwLCAgMzIsICAxNiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICA2NCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTI4
LCAgNjMsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAg
ODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDgyLCAgNjgsICA2OSwgIDcwLCANCisgICAgMTYwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwg
ICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICA0LCAyNTUsIDI1NSwg
DQorICAgICAgMCwgICAxLCAgIDAsICAgMCwgMTA5LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDky
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgMTAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICA1LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAg
MCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCANCisgICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgICA4Mywg
IDk3LCAxMDksIDExMiwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAgMCwgIDg0LCAxMDEsIDEyMCwg
MTE2LCANCisgICAgMTE3LCAxMTQsIDEwMSwgIDcwLCAgIDAsICA3NywgDQorICAgIDEwNSwgIDk5
LCAxMTQsIDExMSwgMTE1LCAxMTEsIA0KKyAgICAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgIDQx
LCANCisgICAgIDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgDQorICAgICA4MywgMTA0LCAg
OTcsIDEwMCwgMTAxLCAxMTQsIA0KKyAgICAgMzIsICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAN
CisgICAgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgDQorICAgICA1MSwgIDQ2LCAgNTcs
ICA1NCwgIDQ4LCAgNDgsIA0KKyAgICAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCANCisg
ICAgICAwLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgICA4MCwgICAwLCAgIDAsICAg
MCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAg
IDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAg
IDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQs
ICA3MywgIDc5LCAgNzgsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzks
IA0KKyAgICAgODIsICA2OCwgICAwLCAxNzEsIDE3MSwgMTcxLCANCisgICAgIDc5LCAgODMsICA3
MSwgIDc4LCAgNDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDgsICAgMCwgICAwLCAgIDAsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAw
LCAgODMsICA4NiwgDQorICAgICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAg
ODQsICAgMCwgMTcxLCAxNzENCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aHJnYjJkaTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hy
Z2IyZGkxMXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhy
b3VnaHJnYjJkaTExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjUgKzEsMTY1IEBACi0jaWYg
MAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVy
IDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8KLS8vIE5h
bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBE
aW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBUZXh0dXJlSSAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAgICAgIDJkICAgIDAgICAg
ICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAKLS8vCi0vLwotLy8gT3V0
cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4
eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChzaW50LHNpbnQsc2ludCxz
aW50KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQotZGNsX291dHB1dCBvMC54eXp3Ci1k
Y2xfdGVtcHMgMQotcmVzaW5mb191aW50IHIwLnh5encsIGwoMCksIHQwLnh5encKLXV0b2YgcjAu
eHksIHIwLnh5eHgKLW11bCByMC54eSwgcjAueHl4eCwgdjEueHl4eAotZnRvaSByMC54eSwgcjAu
eHl4eAotbW92IHIwLnp3LCBsKDAsMCwwLDApCi1sZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3
Ci1tb3YgbzAueHl6LCByMC54eXp4Ci1tb3YgbzAudywgbCgwKQotcmV0IAotLy8gQXBwcm94aW1h
dGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNf
UGFzc3Rocm91Z2hSR0IyRElbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTYsIDIy
NywgCi0gICAgMTcyLCAxOTAsIDI0NiwgMTE4LCAyMjMsIDIzOSwgCi0gICAgMTc2LCAgNzgsICA5
MCwgIDExLCAxMzUsIDEzOCwgCi0gICAgMTA5LCAxNzQsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgMTk2LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAw
LCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAw
LCAgIDAsICA2NCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDcyLCAgIDIsICAgMCwgICAwLCAgODIs
ICA2OCwgCi0gICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwg
ICAxLCAgIDAsICAgMCwgCi0gICAgIDY5LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAg
IDQsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAg
MCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgNzMsICAg
MCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgCi0g
ICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgCi0gICAgIDc2LCAgODMsICA3NiwgIDMy
LCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgCi0gICAgMTEx
LCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0gICAgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEs
ICA0NiwgCi0gICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgCi0gICAgIDU0LCAgNTEs
ICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwg
ICAwLCAgNTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDMsICAg
MCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0g
ICAgIDczLCAgNzksICA3OCwgICAwLCAgODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5
LCAgODIsICA2OCwgCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcx
LCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4Mywg
IDg2LCAgOTUsICA4NCwgCi0gICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAg
MTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgCi0gICAgICAwLCAgIDEsICAgMCwgICAwLCAg
NjQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAg
MjQsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDUxLCAgNTEsICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsICA1
MCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0g
ICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYx
LCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwg
Ci0gICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDU2LCAgIDAsICAgMCwgICA3LCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICA3MCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAg
MCwgCi0gICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAxNiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgMTMwLCAg
MzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4
MywgIDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAotfTsK
KyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoN
CisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3Jt
YXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8v
IFRleHR1cmVJICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgc2ludDQgICAgICAg
ICAgMmQgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToN
CisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNW
YWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAg
ICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRF
WENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0
ICAgeHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAg
ICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBV
c2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3
ICAgICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfcmVz
b3VyY2VfdGV4dHVyZTJkIChzaW50LHNpbnQsc2ludCxzaW50KSB0MA0KK2RjbF9pbnB1dF9wcyBs
aW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9f
dWludCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRvZiByMC54eSwgcjAueHl4eA0KK211bCBy
MC54eSwgcjAueHl4eCwgdjEueHl4eA0KK2Z0b2kgcjAueHksIHIwLnh5eHgNCittb3YgcjAuencs
IGwoMCwwLDAsMCkNCitsZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3DQorbW92IG8wLnh5eiwg
cjAueHl6eA0KK21vdiBvMC53LCBsKDApDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgOSBpbnN0
cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJv
dWdoUkdCMkRJW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTYsIDIyNywgDQor
ICAgIDE3MiwgMTkwLCAyNDYsIDExOCwgMjIzLCAyMzksIA0KKyAgICAxNzYsICA3OCwgIDkwLCAg
MTEsIDEzNSwgMTM4LCANCisgICAgMTA5LCAxNzQsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
IDE5NiwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAs
ICAgMCwgICAwLCANCisgICAgMTgwLCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgDQorICAgICAg
MCwgICAwLCAgNjQsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNzIsICAgMiwgICAwLCAgIDAsICA4
MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1
LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNjksICAgMCwgICAwLCAgIDAsICA2MCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAg
IDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTMs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODQsIDEwMSwgMTIwLCAxMTYsIDExNywgMTE0LCANCisg
ICAgMTAxLCAgNzMsICAgMCwgIDc3LCAxMDUsICA5OSwgDQorICAgIDExNCwgMTExLCAxMTUsIDEx
MSwgMTAyLCAxMTYsIA0KKyAgICAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCANCisgICAg
IDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQorICAgICA5NywgMTAwLCAxMDEsIDExNCwg
IDMyLCAgNjcsIA0KKyAgICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCANCisgICAgMTE0
LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgDQorICAgICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2
LCAgNDksIA0KKyAgICAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgMTcxLCANCisgICAgIDczLCAg
ODMsICA3MSwgIDc4LCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA1NiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAg
MCwgICAwLCAgNjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAzLCAgIDAsICAgMCwgIDgzLCAgODYsIA0KKyAg
ICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCANCisgICAgIDczLCAgNzksICA3OCwgICAw
LCAgODQsICA2OSwgDQorICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIA0KKyAgICAg
IDAsIDE3MSwgMTcxLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA0NCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4
NCwgDQorICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIA0KKyAgICAxNzEsIDE3MSwg
IDgzLCAgNzIsICA2OCwgIDgyLCANCisgICAgICAwLCAgIDEsICAgMCwgICAwLCAgNjQsICAgMCwg
DQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICAyNCwgICAw
LCAgIDQsICAgMCwgMTEyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA1MSwgIDUxLCAgIDAsICAgMCwgIDk4LCAgMTYsIA0KKyAgICAgIDAsICAgMywgIDUwLCAg
MTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAg
ICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
IDEwNCwgICAwLCANCisgICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2
MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4Niwg
ICAwLCANCisgICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDcwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDU2LCAgIDAsICAgMCwgICA3LCAgNTAsICAgMCwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDI3LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDgsIDE5NCwgICAwLCANCisgICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgIDY0LCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAw
LCAgIDcsIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA3MCwgIDE0LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAx
MjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAs
ICAgMCwgICA1LCAxMTQsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA1
NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDEzMCwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNjIsICAgMCwgDQorICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIA0KKyAg
ICAxMTYsICAgMCwgICAwLCAgIDAsICAgOSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMmR1aTExcHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IyZHVpMTFwcy5oCShyZXZpc2lvbiAx
OTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IyZHVpMTFwcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE2NSArMSwxNjUgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5
IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0v
LwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t
LS0tIC0tLS0gLS0tLS0tLS0KLS8vIFRleHR1cmVVSSAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXh0dXJlICAgdWludDQgICAgICAgICAgMmQgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8g
SW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFz
ayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9Q
T1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAg
ICAgICAKLS8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAg
Tk9ORSAgIGZsb2F0ICAgeHkgIAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8v
IE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9y
bWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAg
IHh5encgICAgICAgIDAgICBUQVJHRVQgICAgdWludCAgIHh5encKLS8vCi1wc180XzAKLWRjbF9y
ZXNvdXJjZV90ZXh0dXJlMmQgKHVpbnQsdWludCx1aW50LHVpbnQpIHQwCi1kY2xfaW5wdXRfcHMg
bGluZWFyIHYxLnh5Ci1kY2xfb3V0cHV0IG8wLnh5encKLWRjbF90ZW1wcyAxCi1yZXNpbmZvX3Vp
bnQgcjAueHl6dywgbCgwKSwgdDAueHl6dwotdXRvZiByMC54eSwgcjAueHl4eAotbXVsIHIwLnh5
LCByMC54eXh4LCB2MS54eXh4Ci1mdG9pIHIwLnh5LCByMC54eXh4Ci1tb3YgcjAuencsIGwoMCww
LDAsMCkKLWxkIHIwLnh5encsIHIwLnh5encsIHQwLnh5encKLW1vdiBvMC54eXosIHIwLnh5engK
LW1vdiBvMC53LCBsKDApCi1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDkgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQjJEVUlbXSA9
Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAyNDUsIDIxOSwgCi0gICAgIDQ2LCAgMzIsICAz
NCwgIDc0LCAgIDIsICA0NywgCi0gICAgMTI0LCAgOTYsIDIxNiwgIDQwLCAyNTMsIDI0MywgCi0g
ICAgMTA0LCAxNzgsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTk2LCAgIDIsICAgMCwgICAw
LCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgw
LCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAwLCAgIDAsICA2NCwgICAxLCAgIDAs
ICAgMCwgCi0gICAgIDcyLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAs
IDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAg
IDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAg
IDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEy
MCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwgCi0g
ICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0MCwgIDgy
LCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0gICAgMTA0
LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUs
IDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAgNTcs
ICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwg
Ci0gICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAg
IDAsICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4NiwgCi0g
ICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwgICAw
LCAgODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgCi0gICAgICAw
LCAxNzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAg
IDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAg
NjgsICA4MiwgCi0gICAgICAwLCAgIDEsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAg
IDAsICA2NCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgMjQsICAgMCwgICA0LCAgIDAsIDEx
MiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAgNjgsICAg
MCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgCi0g
ICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMy
LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAw
LCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIs
ICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwg
ICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAg
NTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsICA1
MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA4
LCAxOTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAy
LCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgMTMwLCAgMzIsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwgCi0g
ICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5l
cmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4
NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBF
bGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFRleHR1cmVVSSAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAgICAgICAgMmQgICAgMCAgICAgICAgMQ0K
Ky8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAg
ICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0K
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAg
ICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAg
ICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQorLy8NCisv
LyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQor
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAg
IHVpbnQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkICh1aW50
LHVpbnQsdWludCx1aW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0
cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0
MC54eXp3DQordXRvZiByMC54eSwgcjAueHl4eA0KK211bCByMC54eSwgcjAueHl4eCwgdjEueHl4
eA0KK2Z0b2kgcjAueHksIHIwLnh5eHgNCittb3YgcjAuencsIGwoMCwwLDAsMCkNCitsZCByMC54
eXp3LCByMC54eXp3LCB0MC54eXp3DQorbW92IG8wLnh5eiwgcjAueHl6eA0KK21vdiBvMC53LCBs
KDApDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgOSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQor
I2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCMkRVSVtdID0NCit7DQor
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjQ1LCAyMTksIA0KKyAgICAgNDYsICAzMiwgIDM0LCAg
NzQsICAgMiwgIDQ3LCANCisgICAgMTI0LCAgOTYsIDIxNiwgIDQwLCAyNTMsIDI0MywgDQorICAg
IDEwNCwgMTc4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxOTYsICAgMiwgICAwLCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDE4
MCwgICAwLCAgIDAsICAgMCwgIDEyLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDEsICAg
MCwgICAwLCANCisgICAgIDcyLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwg
IDcwLCAxMjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAw
LCANCisgICAgIDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAN
CisgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQorICAgIDEwMSwgIDg1LCAgNzMsICAg
MCwgIDc3LCAxMDUsIA0KKyAgICAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCANCisgICAg
MTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgDQorICAgICA3MiwgIDc2LCAgODMsICA3Niwg
IDMyLCAgODMsIA0KKyAgICAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCANCisgICAgIDY3
LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgDQorICAgIDEwMSwgMTE0LCAgMzIsICA1NCwgIDQ2
LCAgNTEsIA0KKyAgICAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCANCisgICAgIDQ5LCAg
NTQsICA1MSwgIDU2LCAgNTIsICAgMCwgDQorICAgICA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAgIDAs
ICAgMCwgICAwLCAgNTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDMsICAgMywgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODAsICA3OSwgIDgz
LCAgNzMsICA4NCwgDQorICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDg0LCAgNjksIA0KKyAgICAg
ODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAg
NzksICA4MywgDQorICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAg
MCwgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIA0KKyAgICAgNjUsICA4Miwg
IDcxLCAgNjksICA4NCwgICAwLCANCisgICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4Miwg
DQorICAgICAgMCwgICAxLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDY0
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDg4LCAgMjQsICAgMCwgICA0LCAgIDAsIDExMiwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjgsICA2OCwgICAwLCAg
IDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgDQorICAgICAg
MCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0
MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwg
IDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgDQorICAgICAgMCwgICA1
LCAgNTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAw
LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAg
IDAsICAgNywgIDUwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAs
ICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyNywgICAwLCANCisg
ICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDcwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDIsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3LCANCisgICAgMjQyLCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNCwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwgMTE0LCAgMzIs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDIsICAx
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIA0K
KyAgICAxMzAsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwg
IDY0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAg
ICAgIDAsICAgMSwgIDgzLCAgODQsICA2NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAw
LCAgIDksICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYjNkMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnYjNkMTFwcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hyZ2IzZDExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNjAgKzEsMTYw
IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVy
IENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgot
Ly8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQg
ICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBTYW1w
bGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5B
ICAgIDAgICAgICAgIDEKLS8vIFRleHR1cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlICBmbG9hdDQgICAgICAgICAgM2QgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5w
dXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJ
VElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAg
ICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBS
VElOREVYICAgIHVpbnQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5
eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNp
Z25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAg
ICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3Ci0v
LwotcHNfNF8wCi1kY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0Ci1kY2xfcmVzb3VyY2VfdGV4
dHVyZTNkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIg
djIueHl6Ci1kY2xfb3V0cHV0IG8wLnh5encKLWRjbF90ZW1wcyAxCi1zYW1wbGUgcjAueHl6dywg
djIueHl6eCwgdDAueHl6dywgczAKLW1vdiBvMC54eXosIHIwLnh5engKLW1vdiBvMC53LCBsKDEu
MDAwMDAwKQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQK
LSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0IzRFtdID0KLXsKLSAgICAg
NjgsICA4OCwgIDY2LCAgNjcsICAgMywgMjEzLCAKLSAgICAyMjcsIDIwMCwgMTMyLCAyNTUsICAg
NywgIDk1LCAKLSAgICAgIDAsIDI1MiwgIDc3LCAgMzMsIDI1NCwgMTg0LCAKLSAgICAgODMsIDEx
MCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAxNzYsICAgMiwgICAwLCAgIDAsICAgNSwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAKLSAgICAyMjAsICAgMCwgICAw
LCAgIDAsIDEwMCwgICAxLCAKLSAgICAgIDAsICAgMCwgMTUyLCAgIDEsICAgMCwgICAwLCAKLSAg
ICAgNTIsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCAKLSAgICAgNjksICA3MCwgMTYwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAxMDksICAgMCwg
ICAwLCAgIDAsICA5MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDAsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAg
MCwgICAwLCAgIDAsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAxMywgICAwLCAKLSAgICAgIDAsICAgMCwgIDgz
LCAgOTcsIDEwOSwgMTEyLCAKLSAgICAxMDgsIDEwMSwgMTE0LCAgIDAsICA4NCwgMTAxLCAKLSAg
ICAxMjAsIDExNiwgMTE3LCAxMTQsIDEwMSwgIDcwLCAKLSAgICAgIDAsICA3NywgMTA1LCAgOTks
IDExNCwgMTExLCAKLSAgICAxMTUsIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAKLSAgICAgODIs
ICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAKLSAgICAgNzYsICAzMiwgIDgzLCAxMDQsICA5Nywg
MTAwLCAKLSAgICAxMDEsIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAKLSAgICAxMTIsIDEwNSwg
MTA4LCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAK
LSAgICAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAKLSAgICAgNTYsICA1MiwgICAwLCAx
NzEsICA3MywgIDgzLCAKLSAgICAgNzEsICA3OCwgMTI4LCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDgwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNSwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgMTE4LCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgNywg
ICA3LCAKLSAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCAKLSAgICAgNzksICA4Mywg
IDczLCAgODQsICA3MywgIDc5LCAKLSAgICAgNzgsICAgMCwgIDgzLCAgODYsICA5NSwgIDgyLCAK
LSAgICAgNjksICA3OCwgIDY4LCAgNjksICA4MiwgIDg0LCAKLSAgICAgNjUsICA4MiwgIDcxLCAg
NjksICA4NCwgIDY1LCAKLSAgICAgODIsICA4MiwgIDY1LCAgODksICA3MywgIDc4LCAKLSAgICAg
NjgsICA2OSwgIDg4LCAgIDAsICA4NCwgIDY5LCAKLSAgICAgODgsICA2NywgIDc5LCAgNzksICA4
MiwgIDY4LCAKLSAgICAgIDAsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCAKLSAgICAgNDQsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAw
LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAgODQs
ICA2NSwgIDgyLCAKLSAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCAKLSAgICAgODMs
ICA3MiwgIDY4LCAgODIsIDE0OCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgMzcsICAgMCwgICAwLCAgIDAsICA5MCwgICAwLCAKLSAgICAgIDAsICAgMywg
ICAwLCAgOTYsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4OCwgIDQwLCAK
LSAgICAgIDAsICAgNCwgICAwLCAxMTIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA4NSwgIDg1LCAKLSAgICAgIDAsICAgMCwgIDk4LCAgMTYsICAgMCwgICAzLCAKLSAgICAx
MTQsICAxNiwgIDE2LCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAg
MCwgICAzLCAKLSAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgMTA0LCAgIDAsICAgMCwgICAyLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2OSwgICAw
LCAKLSAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA3MCwgIDE4LCAKLSAgICAgMTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgOTYs
ICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAs
ICAgNSwgMTE0LCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwg
ICAyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwg
ICAwLCAgIDUsIDEzMCwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMjgsICA2MywgIDYyLCAg
IDAsICAgMCwgICAxLCAKLSAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCAKLSAgICAg
IDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jv
c29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQor
Ly8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t
LS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLyBUZXh0dXJlRiAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxvYXQ0ICAgICAgICAgIDNkICAgIDAg
ICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBO
YW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1h
dCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0g
LS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAg
IHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBTVl9SRU5ERVJUQVJH
RVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgICAg
IA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9O
RSAgIGZsb2F0ICAgeHl6IA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQor
Ly8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBG
b3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8NCitwc180XzAN
CitkY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0DQorZGNsX3Jlc291cmNlX3RleHR1cmUzZCAo
ZmxvYXQsZmxvYXQsZmxvYXQsZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoN
CitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK3NhbXBsZSByMC54eXp3LCB2Mi54
eXp4LCB0MC54eXp3LCBzMA0KK21vdiBvMC54eXosIHIwLnh5engNCittb3YgbzAudywgbCgxLjAw
MDAwMCkNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSA0IGluc3RydWN0aW9uIHNsb3RzIHVzZWQN
CisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0IzRFtdID0NCit7DQor
ICAgICA2OCwgIDg4LCAgNjYsICA2NywgICAzLCAyMTMsIA0KKyAgICAyMjcsIDIwMCwgMTMyLCAy
NTUsICAgNywgIDk1LCANCisgICAgICAwLCAyNTIsICA3NywgIDMzLCAyNTQsIDE4NCwgDQorICAg
ICA4MywgMTEwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNzYsICAgMiwgICAwLCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDIy
MCwgICAwLCAgIDAsICAgMCwgMTAwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTUyLCAgIDEsICAg
MCwgICAwLCANCisgICAgIDUyLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwg
IDcwLCAxNjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAw
LCANCisgICAgMTA5LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCANCisgICAg
MjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwg
IDEzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgOTcsIDEwOSwgMTEyLCANCisgICAgMTA4
LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgDQorICAgIDEyMCwgMTE2LCAxMTcsIDExNCwgMTAx
LCAgNzAsIA0KKyAgICAgIDAsICA3NywgMTA1LCAgOTksIDExNCwgMTExLCANCisgICAgMTE1LCAx
MTEsIDEwMiwgMTE2LCAgMzIsICA0MCwgDQorICAgICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAg
ODMsIA0KKyAgICAgNzYsICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCANCisgICAgMTAxLCAxMTQs
ICAzMiwgIDY3LCAxMTEsIDEwOSwgDQorICAgIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIs
IA0KKyAgICAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCANCisgICAgIDQ4LCAgNDgsICA0
NiwgIDQ5LCAgNTQsICA1MSwgDQorICAgICA1NiwgIDUyLCAgIDAsIDE3MSwgIDczLCAgODMsIA0K
KyAgICAgNzEsICA3OCwgMTI4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDkyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsIDExOCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDcsICAg
NywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAsIA0KKyAgICAgNzksICA4Mywg
IDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA4MywgIDg2LCAgOTUsICA4Miwg
DQorICAgICA2OSwgIDc4LCAgNjgsICA2OSwgIDgyLCAgODQsIA0KKyAgICAgNjUsICA4MiwgIDcx
LCAgNjksICA4NCwgIDY1LCANCisgICAgIDgyLCAgODIsICA2NSwgIDg5LCAgNzMsICA3OCwgDQor
ICAgICA2OCwgIDY5LCAgODgsICAgMCwgIDg0LCAgNjksIA0KKyAgICAgODgsICA2NywgIDc5LCAg
NzksICA4MiwgIDY4LCANCisgICAgICAwLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAg
ICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4Mywg
IDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwg
MTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAxNDgsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMzcsICAgMCwgICAwLCAgIDAsICA5MCwgICAw
LCANCisgICAgICAwLCAgIDMsICAgMCwgIDk2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDg4LCAgNDAsIA0KKyAgICAgIDAsICAgNCwgICAwLCAxMTIsICAxNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODUsICA4NSwgDQorICAgICAgMCwgICAwLCAgOTgs
ICAxNiwgICAwLCAgIDMsIA0KKyAgICAxMTQsICAxNiwgIDE2LCAgIDAsICAgMiwgICAwLCANCisg
ICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAsICAgMywgDQorICAgIDI0MiwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTA0LCAgIDAsICAgMCwgICAyLCANCisgICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgNjksICAgMCwgDQorICAgICAgMCwgICA5LCAyNDIsICAgMCwg
IDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDE4LCANCisgICAgIDE2
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgMTI2LCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAxMTQsICAzMiwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNSwgMTMwLCAgMzIs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgNjQsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEyOCwgIDYzLCAgNjIsICAgMCwgICAwLCAgIDEsIA0K
KyAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocmdiM2RpMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhy
b3VnaHJnYjNkaTExcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocmdiM2RpMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3MiArMSwxNzIgQEAK
LSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29t
cGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwot
Ly8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAg
ICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFRleHR1cmVJ
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgc2ludDQgICAgICAgICAgM2QgICAg
MCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAg
VXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encg
ICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZ
SU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICAgICAgCi0vLyBU
RVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9h
dCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgVEFSR0VUICAgICBpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfdGV4
dHVyZTNkIChzaW50LHNpbnQsc2ludCxzaW50KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54
eXoKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLXJlc2luZm9fdWludCByMC54eXp3
LCBsKDApLCB0MC54eXp3Ci11dG9mIHIwLnh5eiwgcjAueHl6eAotbXVsIHIwLnh5eiwgcjAueHl6
eCwgdjIueHl6eAotZnRvaSByMC54eXosIHIwLnh5engKLW1vdiByMC53LCBsKDApCi1sZCByMC54
eXp3LCByMC54eXp3LCB0MC54eXp3Ci1tb3YgbzAueHl6LCByMC54eXp4Ci1tb3YgbzAudywgbCgw
KQotcmV0IAotLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRp
ZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0IzRElbXSA9Ci17Ci0gICAgIDY4LCAg
ODgsICA2NiwgIDY3LCAxOTQsIDE1NywgCi0gICAgICA4LCAxOTQsIDE2NywgMjM1LCAgMTQsIDEy
NywgCi0gICAgIDY5LCAxOTgsICAzMiwgIDM1LCAxNjcsICAzNSwgCi0gICAgMjEzLCAyNDgsICAg
MSwgICAwLCAgIDAsICAgMCwgCi0gICAgMjMyLCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDAsICAgMCwgICAw
LCAgNjAsICAgMSwgCi0gICAgICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgCi0gICAgMTA4
LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwg
Ci0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDY5LCAgIDAsICAgMCwg
ICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAzLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAy
NTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDEx
NCwgCi0gICAgMTAxLCAgNzMsICAgMCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAxMTEsIDEx
NSwgMTExLCAxMDIsIDExNiwgCi0gICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgCi0g
ICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEwMSwgMTE0
LCAgMzIsICA2NywgCi0gICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0gICAgMTE0
LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgCi0gICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYs
ICA0OSwgCi0gICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0gICAgIDczLCAgODMs
ICA3MSwgIDc4LCAxMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwg
Ci0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAg
OTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA3LCAgIDcsICAgMCwgICAw
LCAgODMsICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDcz
LCAgNzksICA3OCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODIsICA2OSwgIDc4LCAgNjgs
ICA2OSwgCi0gICAgIDgyLCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgCi0gICAgIDg0LCAgNjUs
ICA4MiwgIDgyLCAgNjUsICA4OSwgCi0gICAgIDczLCAgNzgsICA2OCwgIDY5LCAgODgsICAgMCwg
Ci0gICAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgCi0gICAgIDgyLCAgNjgsICAgMCwg
MTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAzMiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAg
MCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAgIDY1LCAgODIsICA3
MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgCi0g
ICAgMjQ0LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MSwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDUxLCAgNTEsICAgMCwgICAwLCAgOTgs
ICAxNiwgCi0gICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAs
ICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAgMCwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAxNiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgCi0gICAgICAy
LCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAgMCwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAg
MjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAz
MiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0g
ICAgMTMwLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAw
LCAgIDEsICA4MywgIDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDks
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMAotfTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNM
IFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBC
aW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0t
LS0tLQ0KKy8vIFRleHR1cmVJICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgc2lu
dDQgICAgICAgICAgM2QgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lU
SU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAg
IA0KKy8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBS
VElOREVYICAgIHVpbnQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4
eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8NCisvLw0KKy8vIE91dHB1
dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9U
QVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAgIGludCAg
IHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKHNpbnQsc2ludCxz
aW50LHNpbnQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8w
Lnh5encNCitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3
DQordXRvZiByMC54eXosIHIwLnh5engNCittdWwgcjAueHl6LCByMC54eXp4LCB2Mi54eXp4DQor
ZnRvaSByMC54eXosIHIwLnh5engNCittb3YgcjAudywgbCgwKQ0KK2xkIHIwLnh5encsIHIwLnh5
encsIHQwLnh5encNCittb3YgbzAueHl6LCByMC54eXp4DQorbW92IG8wLncsIGwoMCkNCityZXQg
DQorLy8gQXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0IzRElbXSA9DQorew0KKyAgICAgNjgsICA4
OCwgIDY2LCAgNjcsIDE5NCwgMTU3LCANCisgICAgICA4LCAxOTQsIDE2NywgMjM1LCAgMTQsIDEy
NywgDQorICAgICA2OSwgMTk4LCAgMzIsICAzNSwgMTY3LCAgMzUsIA0KKyAgICAyMTMsIDI0OCwg
ICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMjMyLCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwg
DQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxODAsICAgMCwgICAw
LCAgIDAsICA2MCwgICAxLCANCisgICAgICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgDQor
ICAgIDEwOCwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTIwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAs
ICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA2
OSwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwg
ICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwg
ICAwLCANCisgICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgICA4NCwgMTAx
LCAxMjAsIDExNiwgMTE3LCAxMTQsIA0KKyAgICAxMDEsICA3MywgICAwLCAgNzcsIDEwNSwgIDk5
LCANCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgDQorICAgICAzMiwgIDQwLCAg
ODIsICA0MSwgIDMyLCAgNzIsIA0KKyAgICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCAN
CisgICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgDQorICAgIDExMSwgMTA5LCAxMTIs
IDEwNSwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCANCisg
ICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgDQorICAgICA1NCwgIDUxLCAgNTYsICA1
MiwgICAwLCAxNzEsIA0KKyAgICAgNzMsICA4MywgIDcxLCAgNzgsIDEyOCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwg
IDgwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAx
LCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMTUsICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAxMTgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNywgICA3LCAgIDAsICAgMCwgIDgzLCAgODYsIA0K
KyAgICAgOTUsICA4MCwgIDc5LCAgODMsICA3MywgIDg0LCANCisgICAgIDczLCAgNzksICA3OCwg
ICAwLCAgODMsICA4NiwgDQorICAgICA5NSwgIDgyLCAgNjksICA3OCwgIDY4LCAgNjksIA0KKyAg
ICAgODIsICA4NCwgIDY1LCAgODIsICA3MSwgIDY5LCANCisgICAgIDg0LCAgNjUsICA4MiwgIDgy
LCAgNjUsICA4OSwgDQorICAgICA3MywgIDc4LCAgNjgsICA2OSwgIDg4LCAgIDAsIA0KKyAgICAg
ODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCANCisgICAgIDgyLCAgNjgsICAgMCwgMTcxLCAg
NzksICA4MywgDQorICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAg
MCwgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIA0KKyAgICAgNjUsICA4Miwg
IDcxLCAgNjksICA4NCwgICAwLCANCisgICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4Miwg
DQorICAgIDI0NCwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDYx
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTEsICA1MSwgICAwLCAg
IDAsICA5OCwgIDE2LCANCisgICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgDQorICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgDQorICAgICAg
MCwgICAyLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0
MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwg
IDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgDQorICAgICAgMCwgICA1
LCAxMTQsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAy
LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAg
IDAsICAgNywgMTE0LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDcwLCAgIDIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAs
ICAxOCwgIDE2LCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAyNywgICAwLCANCisg
ICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgDQorICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTQsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNzAsIDEyNiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDExNCwgIDMyLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAyLCAgMTYsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgMTMwLCAgMzIsICAx
NiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCANCisgICAgICAwLCAgIDEsICA4Mywg
IDg0LCAgNjUsICA4NCwgDQorICAgIDExNiwgICAwLCAgIDAsICAgMCwgICA5LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2Iz
ZHVpMTFwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjNk
dWkxMXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aHJnYjNkdWkxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTcyICsxLDE3MiBAQAotI2lmIDAK
LS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2
LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0vLyBOYW1l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGlt
IFNsb3QgRWxlbWVudHMKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0t
LS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQotLy8gVGV4dHVyZVVJICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHR1cmUgICB1aW50NCAgICAgICAgICAzZCAgICAwICAgICAg
ICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAg
MCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gU1ZfUkVOREVSVEFSR0VUQVJSQVlJTkRFWCAg
ICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICAKLS8vIFRFWENPT1JE
ICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6
IAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0g
LS0tLS0tCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBU
QVJHRVQgICAgdWludCAgIHh5encKLS8vCi1wc180XzAKLWRjbF9yZXNvdXJjZV90ZXh0dXJlM2Qg
KHVpbnQsdWludCx1aW50LHVpbnQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5egotZGNs
X291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotcmVzaW5mb191aW50IHIwLnh5encsIGwoMCks
IHQwLnh5encKLXV0b2YgcjAueHl6LCByMC54eXp4Ci1tdWwgcjAueHl6LCByMC54eXp4LCB2Mi54
eXp4Ci1mdG9pIHIwLnh5eiwgcjAueHl6eAotbW92IHIwLncsIGwoMCkKLWxkIHIwLnh5encsIHIw
Lnh5encsIHQwLnh5encKLW1vdiBvMC54eXosIHIwLnh5engKLW1vdiBvMC53LCBsKDApCi1yZXQg
Ci0vLyBBcHByb3hpbWF0ZWx5IDkgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNv
bnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQjNEVUlbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2
NiwgIDY3LCAyNTMsIDE0NywgCi0gICAgICAxLCAxNTgsICA0MSwgIDMxLCAyNTMsIDEzOCwgCi0g
ICAgIDUyLCAyMTMsIDEwMywgIDQxLCAxODgsIDE5MiwgCi0gICAgIDc5LCAxOTksICAgMSwgICAw
LCAgIDAsICAgMCwgCi0gICAgMjMyLCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAw
LCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDAsICAgMCwgICAwLCAgNjAs
ICAgMSwgCi0gICAgICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgCi0gICAgMTA4LCAgIDIs
ICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAg
MjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAgMCwgICAwLCAg
NjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAg
IDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1
NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAx
MywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgCi0g
ICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1
LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcy
LCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0gICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQs
ICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQs
ICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0Niwg
Ci0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgCi0gICAgIDczLCAgODMsICA3MSwg
IDc4LCAxMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAg
ICA4LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAgOTIsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA3LCAgIDcsICAgMCwgICAwLCAgODMs
ICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzks
ICA3OCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODIsICA2OSwgIDc4LCAgNjgsICA2OSwg
Ci0gICAgIDgyLCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgCi0gICAgIDg0LCAgNjUsICA4Miwg
IDgyLCAgNjUsICA4OSwgCi0gICAgIDczLCAgNzgsICA2OCwgIDY5LCAgODgsICAgMCwgCi0gICAg
IDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgCi0gICAgIDgyLCAgNjgsICAgMCwgMTcxLCAg
NzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAgIDY1LCAgODIsICA3MSwgIDY5
LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgCi0gICAgMjQ0
LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAgNjgsICAgMCwgICAwLCAgOTgsICAxNiwg
Ci0gICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwg
ICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMSwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAxNiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgMTMw
LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEs
ICA4MywgIDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgIDksICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAot
fTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRl
ciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5n
czoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBG
b3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0K
Ky8vIFRleHR1cmVVSSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAg
ICAgICAgM2QgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8v
IFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVY
ICAgIHVpbnQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAg
ICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWdu
YXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQg
ICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAgdWludCAgIHh5encN
CisvLw0KK3BzXzRfMA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKHVpbnQsdWludCx1aW50LHVp
bnQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0cHV0IG8wLnh5encN
CitkY2xfdGVtcHMgMQ0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRv
ZiByMC54eXosIHIwLnh5engNCittdWwgcjAueHl6LCByMC54eXp4LCB2Mi54eXp4DQorZnRvaSBy
MC54eXosIHIwLnh5engNCittb3YgcjAudywgbCgwKQ0KK2xkIHIwLnh5encsIHIwLnh5encsIHQw
Lnh5encNCittb3YgbzAueHl6LCByMC54eXp4DQorbW92IG8wLncsIGwoMCkNCityZXQgDQorLy8g
QXBwcm94aW1hdGVseSA5IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25z
dCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0IzRFVJW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2
NiwgIDY3LCAyNTMsIDE0NywgDQorICAgICAgMSwgMTU4LCAgNDEsICAzMSwgMjUzLCAxMzgsIA0K
KyAgICAgNTIsIDIxMywgMTAzLCAgNDEsIDE4OCwgMTkyLCANCisgICAgIDc5LCAxOTksICAgMSwg
ICAwLCAgIDAsICAgMCwgDQorICAgIDIzMiwgICAyLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTgwLCAgIDAsICAgMCwgICAw
LCAgNjAsICAgMSwgDQorICAgICAgMCwgICAwLCAxMTIsICAgMSwgICAwLCAgIDAsIA0KKyAgICAx
MDgsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDEyMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAg
MCwgICAwLCAgIDAsICA2MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
MjU1LCAyNTUsIDI1NSwgMjU1LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODQsIDEwMSwgMTIw
LCAxMTYsIDExNywgMTE0LCANCisgICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwgDQor
ICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAg
ODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAg
IDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIs
IDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgDQorICAgICA0
NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1
MiwgICAwLCANCisgICAgIDczLCAgODMsICA3MSwgIDc4LCAxMjgsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDgsICAgMCwgICAwLCAgIDAsICA4MCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAw
LCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgMTE4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDcsICAgNywgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAg
IDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgDQorICAgICA3MywgIDc5LCAgNzgsICAgMCwg
IDgzLCAgODYsIA0KKyAgICAgOTUsICA4MiwgIDY5LCAgNzgsICA2OCwgIDY5LCANCisgICAgIDgy
LCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgDQorICAgICA4NCwgIDY1LCAgODIsICA4MiwgIDY1
LCAgODksIA0KKyAgICAgNzMsICA3OCwgIDY4LCAgNjksICA4OCwgICAwLCANCisgICAgIDg0LCAg
NjksICA4OCwgIDY3LCAgNzksICA3OSwgDQorICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgIDc5LCAg
ODMsIA0KKyAgICAgNzEsICA3OCwgIDQ0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDg0LCANCisgICAgIDY1LCAgODIsICA3MSwg
IDY5LCAgODQsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIA0KKyAg
ICAyNDQsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAsICA2MSwgICAw
LCAgIDAsICAgMCwgDQorICAgICA4OCwgIDQwLCAgIDAsICAgNCwgICAwLCAxMTIsIA0KKyAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgNjgsICAgMCwgICAwLCAg
OTgsICAxNiwgDQorICAgICAgMCwgICAzLCAxMTQsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDIs
ICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0KKyAgICAgIDAsICAg
MiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAg
MCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg2LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0
LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYsICAgMCwgICAwLCAg
IDcsIDExNCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA3MCwgICAyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTgs
ICAxNiwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgDQorICAgICAg
MCwgICA1LCAxMTQsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3
MCwgICAyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwg
ICAwLCAgIDAsICAgNSwgMTMwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNDUsICAgMCwgICAwLCAgIDcsIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMTQsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgIDEzMCwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgDQorICAgICAgMCwgICAxLCAgODMsICA4NCwg
IDY1LCAgODQsIA0KKyAgICAxMTYsICAgMCwgICAwLCAgIDAsICAgOSwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTJkMTFw
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZDExcHMu
aAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTJk
MTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NiArMSwxNzYgQEAKLSNpZiAwCi0vLwotLy8g
R2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAu
MTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVs
ZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8g
VGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAg
ICAyZCAgICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwot
Ly8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBG
b3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gVEVYQ09PUkQgICAg
ICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0v
LwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0t
LS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdF
VCAgIGZsb2F0ICAgeHl6dwotLy8KLS8vCi0vLyBTYW1wbGVyL1Jlc291cmNlIHRvIERYOSBzaGFk
ZXIgc2FtcGxlciBtYXBwaW5nczoKLS8vCi0vLyBUYXJnZXQgU2FtcGxlciBTb3VyY2UgU2FtcGxl
ciAgU291cmNlIFJlc291cmNlCi0vLyAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0gLS0t
LS0tLS0tLS0tLS0tLQotLy8gczAgICAgICAgICAgICAgczAgICAgICAgICAgICAgIHQwICAgICAg
ICAgICAgICAgCi0vLwotLy8KLS8vIExldmVsOSBzaGFkZXIgYnl0ZWNvZGU6Ci0vLwotICAgIHBz
XzJfeAotICAgIGRjbCB0MC54eQotICAgIGRjbF8yZCBzMAotICAgIHRleGxkIHIwLCB0MCwgczAK
LSAgICBtb3Ygb0MwLCByMAotCi0vLyBhcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rpb24gc2xvdHMg
dXNlZCAoMSB0ZXh0dXJlLCAxIGFyaXRobWV0aWMpCi1wc180XzAKLWRjbF9zYW1wbGVyIHMwLCBt
b2RlX2RlZmF1bHQKLWRjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZs
b2F0KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQotZGNsX291dHB1dCBvMC54eXp3Ci1z
YW1wbGUgbzAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczAKLXJldCAKLS8vIEFwcHJveGltYXRl
bHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1Bh
c3N0aHJvdWdoUkdCQTJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMjQwLCAxODYs
IAotICAgIDE2MywgMjIxLCAxNTEsICA0NSwgMTM5LCAgNjgsIAotICAgIDE3MiwgMTIxLCAgMzAs
IDIzMCwgMjAzLCAxMDIsIAotICAgICA5MiwgIDMzLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAg
IDE5MiwgICAyLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTYsICAgMCwg
ICAwLCAgIDAsIAotICAgIDE2NCwgICAwLCAgIDAsICAgMCwgIDE2LCAgIDEsIAotICAgICAgMCwg
ICAwLCAxNDAsICAgMSwgICAwLCAgIDAsIAotICAgICA1MiwgICAyLCAgIDAsICAgMCwgMTQwLCAg
IDIsIAotICAgICAgMCwgICAwLCAgNjUsIDExMSwgMTEwLCAgNTcsIAotICAgIDEwMCwgICAwLCAg
IDAsICAgMCwgMTAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIAot
ICAgICA2MCwgICAwLCAgIDAsICAgMCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDQwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAwLCAgIDAsIAotICAgICA0
MCwgICAwLCAgIDEsICAgMCwgIDM2LCAgIDAsIAotICAgICAgMCwgICAwLCAgNDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMiwgMjU1LCAyNTUsIAotICAgICAzMSwgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTI4LCAgIDAsICAgMCwgICAzLCAxNzYs
IAotICAgICAzMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsIAotICAgICAgMCwgMTQ0LCAgIDAs
ICAgOCwgIDE1LCAxNjAsIAotICAgICA2NiwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsIAotICAg
ICAxNSwgMTI4LCAgIDAsICAgMCwgMjI4LCAxNzYsIAotICAgICAgMCwgICA4LCAyMjgsIDE2MCwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAyLCAgIDAsICAgOCwgIDE1LCAxMjgsIAotICAgICAgMCwg
ICAwLCAyMjgsIDEyOCwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwLCAgODMsICA3MiwgIDY4LCAg
ODIsIAotICAgIDEwMCwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIAotICAgICAgMCwgICAwLCAg
MjUsICAgMCwgICAwLCAgIDAsIAotICAgICA5MCwgICAwLCAgIDAsICAgMywgICAwLCAgOTYsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA4OCwgIDI0LCAgIDAsICAg
NCwgICAwLCAxMTIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA4
NSwgIDg1LCAgIDAsICAgMCwgIDk4LCAgMTYsIAotICAgICAgMCwgICAzLCAgNTAsICAxNiwgIDE2
LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTAxLCAgIDAsIAotICAgICAgMCwgICAz
LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDY5LCAgIDAs
IAotICAgICAgMCwgICA5LCAyNDIsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgIDcwLCAgMTYsIAotICAgICAxNiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAg
ICA3MCwgMTI2LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICA5Niwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIAotICAgICAgMCwg
ICAxLCAgODMsICA4NCwgIDY1LCAgODQsIAotICAgIDExNiwgICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICA4MiwgIDY4LCAgNjksICA3MCwgMTYwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgMjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICA0LCAyNTUsIDI1
NSwgICAwLCAgIDEsIAotICAgICAgMCwgICAwLCAxMDksICAgMCwgICAwLCAgIDAsIAotICAgICA5
MiwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAxMDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAs
ICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIAotICAg
IDI1NSwgMjU1LCAyNTUsIDI1NSwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIAotICAgICAxMywgICAwLCAgIDAsICAgMCwgIDgzLCAgOTcsIAotICAgIDEwOSwg
MTEyLCAxMDgsIDEwMSwgMTE0LCAgIDAsIAotICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAx
MTQsIAotICAgIDEwMSwgIDcwLCAgIDAsICA3NywgMTA1LCAgOTksIAotICAgIDExNCwgMTExLCAx
MTUsIDExMSwgMTAyLCAxMTYsIAotICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIAot
ICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIAotICAgICA5NywgMTAwLCAxMDEsIDEx
NCwgIDMyLCAgNjcsIAotICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIAotICAgIDEx
NCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIAotICAgICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2
LCAgNDksIAotICAgICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIAotICAgICA3MywgIDgz
LCAgNzEsICA3OCwgIDgwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
IAotICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAsICAgMCwg
IDY4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMywgICAzLCAgIDAsICAgMCwgIDgzLCAgODYsIAotICAgICA5NSwgIDgwLCAg
NzksICA4MywgIDczLCAgODQsIAotICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDg0LCAgNjksIAot
ICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIAotICAgICAgMCwgMTcxLCAxNzEsIDE3
MSwgIDc5LCAgODMsIAotICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAs
IAotICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIAotICAgICA2NSwgIDgyLCAgNzEs
ICA2OSwgIDg0LCAgIDAsIAotICAgIDE3MSwgMTcxCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVy
YXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0
DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVs
ZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQor
Ly8gVGV4dHVyZUYgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAg
ICAgICAyZCAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJl
Og0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5
c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0t
LS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAg
ICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8g
VEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxv
YXQgICB4eSAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAg
IFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5
encgICAgICAgIDAgICBUQVJHRVQgICBmbG9hdCAgIHh5encNCisvLw0KKy8vDQorLy8gU2FtcGxl
ci9SZXNvdXJjZSB0byBEWDkgc2hhZGVyIHNhbXBsZXIgbWFwcGluZ3M6DQorLy8NCisvLyBUYXJn
ZXQgU2FtcGxlciBTb3VyY2UgU2FtcGxlciAgU291cmNlIFJlc291cmNlDQorLy8gLS0tLS0tLS0t
LS0tLS0gLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0NCisvLyBzMCAgICAgICAgICAg
ICBzMCAgICAgICAgICAgICAgdDAgICAgICAgICAgICAgICANCisvLw0KKy8vDQorLy8gTGV2ZWw5
IHNoYWRlciBieXRlY29kZToNCisvLw0KKyAgICBwc18yX3gNCisgICAgZGNsIHQwLnh5DQorICAg
IGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1vdiBvQzAsIHIwDQorDQor
Ly8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMSBh
cml0aG1ldGljKQ0KK3BzXzRfMA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCitkY2xf
cmVzb3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5w
dXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQorc2FtcGxlIG8wLnh5encs
IHYxLnh5eHgsIHQwLnh5encsIHMwDQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgMiBpbnN0cnVj
dGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdo
UkdCQTJEW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAyNDAsIDE4NiwgDQorICAg
IDE2MywgMjIxLCAxNTEsICA0NSwgMTM5LCAgNjgsIA0KKyAgICAxNzIsIDEyMSwgIDMwLCAyMzAs
IDIwMywgMTAyLCANCisgICAgIDkyLCAgMzMsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDE5
MiwgICAyLCAgIDAsICAgMCwgICA2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU2LCAgIDAsICAg
MCwgICAwLCANCisgICAgMTY0LCAgIDAsICAgMCwgICAwLCAgMTYsICAgMSwgDQorICAgICAgMCwg
ICAwLCAxNDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNTIsICAgMiwgICAwLCAgIDAsIDE0MCwg
ICAyLCANCisgICAgICAwLCAgIDAsICA2NSwgMTExLCAxMTAsICA1NywgDQorICAgIDEwMCwgICAw
LCAgIDAsICAgMCwgMTAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1
LCANCisgICAgIDYwLCAgIDAsICAgMCwgICAwLCAgNDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDQwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDQwLCAgIDAsICAgMSwgICAwLCAgMzYsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDIsIDI1NSwgMjU1LCANCisg
ICAgIDMxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgDQorICAgICAgMCwgMTI4LCAgIDAsICAg
MCwgICAzLCAxNzYsIA0KKyAgICAgMzEsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCANCisgICAg
ICAwLCAxNDQsICAgMCwgICA4LCAgMTUsIDE2MCwgDQorICAgICA2NiwgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsIA0KKyAgICAgMTUsIDEyOCwgICAwLCAgIDAsIDIyOCwgMTc2LCANCisgICAgICAw
LCAgIDgsIDIyOCwgMTYwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAgOCwgIDE1
LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxMjgsIDI1NSwgMjU1LCANCisgICAgICAwLCAg
IDAsICA4MywgIDcyLCAgNjgsICA4MiwgDQorICAgIDEwMCwgICAwLCAgIDAsICAgMCwgIDY0LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDI1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDkwLCAgIDAs
ICAgMCwgICAzLCAgIDAsICA5NiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgODgsICAyNCwgICAwLCAgIDQsICAgMCwgMTEyLCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4NSwgIDg1LCAgIDAsICAgMCwgIDk4LCAgMTYsIA0K
KyAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwg
ICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA2OSwgICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgIDMy
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAg
MTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCANCisgICAgICAwLCAgIDEsICA4MywgIDg0LCAgNjUs
ICA4NCwgDQorICAgIDExNiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDgyLCAgNjgsICA2OSwgIDcwLCAxNjAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAw
LCANCisgICAgICAwLCAgIDAsICAyOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICA0LCAy
NTUsIDI1NSwgICAwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTA5LCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDkyLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAyNTUsIDI1NSwgMjU1LCAyNTUsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMywgICAwLCAgIDAsICAgMCwgIDgz
LCAgOTcsIA0KKyAgICAxMDksIDExMiwgMTA4LCAxMDEsIDExNCwgICAwLCANCisgICAgIDg0LCAx
MDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQorICAgIDEwMSwgIDcwLCAgIDAsICA3NywgMTA1LCAg
OTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAs
ICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQs
IA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDksIDEx
MiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIA0K
KyAgICAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCANCisgICAgIDU0LCAgNTEsICA1Niwg
IDUyLCAgIDAsIDE3MSwgDQorICAgICA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAgIDAsICAgMCwgICAw
LCAgNTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDY4LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAg
MywgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4
NCwgDQorICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDg0LCAgNjksIA0KKyAgICAgODgsICA2Nywg
IDc5LCAgNzksICA4MiwgIDY4LCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgNzksICA4Mywg
DQorICAgICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODQsIA0KKyAgICAgNjUsICA4MiwgIDcxLCAgNjks
ICA4NCwgICAwLCANCisgICAgMTcxLCAxNzENCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnYmEyZGkxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdocmdiYTJkaTExcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBp
bGVkL3Bhc3N0aHJvdWdocmdiYTJkaTExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTcgKzEs
MTU3IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hh
ZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdz
OgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3Jt
YXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBU
ZXh0dXJlSSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAgICAg
IDJkICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0v
LyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZv
cm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAg
ICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAgICAg
ICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAKLS8v
Ci0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VU
ICAgICBpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChzaW50
LHNpbnQsc2ludCxzaW50KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQotZGNsX291dHB1
dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotcmVzaW5mb191aW50IHIwLnh5encsIGwoMCksIHQwLnh5
encKLXV0b2YgcjAueHksIHIwLnh5eHgKLW11bCByMC54eSwgcjAueHl4eCwgdjEueHl4eAotZnRv
aSByMC54eSwgcjAueHl4eAotbW92IHIwLnp3LCBsKDAsMCwwLDApCi1sZCBvMC54eXp3LCByMC54
eXp3LCB0MC54eXp3Ci1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDcgaW5zdHJ1Y3Rpb24gc2xvdHMg
dXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkEyRElbXSA9Ci17
Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgODEsIDE0NywgCi0gICAgMTk0LCAxNDEsICA5Miwg
MjM2LCAxODQsIDE5MiwgCi0gICAgIDExLCAyNDksICAxNCwgMjE1LCAxMjIsIDExMCwgCi0gICAg
IDM1LCAxMTEsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTU2LCAgIDIsICAgMCwgICAwLCAg
IDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgwLCAg
IDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAwLCAgIDAsICA2NCwgICAxLCAgIDAsICAg
MCwgCi0gICAgIDMyLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDEy
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDY5
LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAs
IDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwg
MTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgNzMsICAgMCwgIDc3LCAxMDUsICA5OSwgCi0gICAg
MTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgCi0gICAgIDMyLCAgNDAsICA4MiwgIDQxLCAg
MzIsICA3MiwgCi0gICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgCi0gICAgIDk3LCAx
MDAsIDEwMSwgMTE0LCAgMzIsICA2NywgCi0gICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEw
MSwgCi0gICAgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgCi0gICAgIDU3LCAgNTQsICA0
OCwgIDQ4LCAgNDYsICA0OSwgCi0gICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0g
ICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAs
ICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAg
IDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwgICAwLCAg
ODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgCi0gICAgICAwLCAx
NzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAz
MiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAgIDY1
LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgs
ICA4MiwgCi0gICAgMjE2LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA1NCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgMjQsICAgMCwgICA0LCAgIDAsIDExMiwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDUxLCAgNTEsICAgMCwg
ICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAg
IDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAg
MCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwgICAw
LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAgNTAs
ICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwg
ICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA4LCAx
OTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAg
NjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0
NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYy
LCAgIDAsICAgMCwgICAxLCAgODMsICA4NCwgCi0gICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICA3LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1p
Y3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8v
DQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBUZXh0dXJlSSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQor
Ly8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0t
LS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQ
T1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAg
ICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdF
VCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICAgaW50ICAgeHl6
dw0KKy8vDQorcHNfNF8wDQorZGNsX3Jlc291cmNlX3RleHR1cmUyZCAoc2ludCxzaW50LHNpbnQs
c2ludCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3
DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6dw0KK3V0
b2YgcjAueHksIHIwLnh5eHgNCittdWwgcjAueHksIHIwLnh5eHgsIHYxLnh5eHgNCitmdG9pIHIw
Lnh5LCByMC54eXh4DQorbW92IHIwLnp3LCBsKDAsMCwwLDApDQorbGQgbzAueHl6dywgcjAueHl6
dywgdDAueHl6dw0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDcgaW5zdHJ1Y3Rpb24gc2xvdHMg
dXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkEyRElbXSA9
DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICA4MSwgMTQ3LCANCisgICAgMTk0LCAxNDEs
ICA5MiwgMjM2LCAxODQsIDE5MiwgDQorICAgICAxMSwgMjQ5LCAgMTQsIDIxNSwgMTIyLCAxMTAs
IA0KKyAgICAgMzUsIDExMSwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTU2LCAgIDIsICAg
MCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAxODAsICAgMCwgICAwLCAgIDAsICAxMiwgICAxLCANCisgICAgICAwLCAgIDAsICA2NCwg
ICAxLCAgIDAsICAgMCwgDQorICAgICAzMiwgICAyLCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAg
ICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAg
IDAsICAgMCwgDQorICAgICA2OSwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDQs
ICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAg
MCwgDQorICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQsIA0KKyAgICAxMDEsICA3Mywg
ICAwLCAgNzcsIDEwNSwgIDk5LCANCisgICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwg
DQorICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIA0KKyAgICAgNzYsICA4MywgIDc2
LCAgMzIsICA4MywgMTA0LCANCisgICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgDQor
ICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KKyAgICAxMTQsICAzMiwgIDU0LCAg
NDYsICA1MSwgIDQ2LCANCisgICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgDQorICAg
ICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIA0KKyAgICAgNzMsICA4MywgIDcxLCAgNzgs
ICA4MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
OCwgICAwLCAgIDAsICAgMCwgIDU2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAgMCwgICAwLCAgIDAsICA2OCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4NiwgDQorICAgICA5NSwgIDgwLCAg
NzksICA4MywgIDczLCAgODQsIA0KKyAgICAgNzMsICA3OSwgIDc4LCAgIDAsICA4NCwgIDY5LCAN
CisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAgICAgMCwgMTcxLCAxNzEs
IDE3MSwgIDc5LCAgODMsIA0KKyAgICAgNzEsICA3OCwgIDQ0LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgMzIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDg0LCANCisgICAgIDY1
LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgDQorICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4
LCAgODIsIA0KKyAgICAyMTYsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAg
IDAsICA1NCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4OCwgIDI0LCAgIDAsICAgNCwgICAwLCAx
MTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDUxLCAgNTEs
ICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAgICAgMCwgICAzLCAgNTAsICAxNiwgIDE2LCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0
MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0K
KyAgICAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYxLCAgMTYsICAgMCwg
ICA3LCAyNDIsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgMTI2
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg2LCAgIDAsIA0KKyAgICAg
IDAsICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTYs
ICAgMCwgICAwLCAgIDcsICA1MCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICA3MCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDcwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAg
MCwgDQorICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA3MCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICA1NCwgICAwLCAgIDAsICAgOCwgMTk0LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgDQorICAg
IDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgMTQs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgDQorICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAwLCAgIDEsICA4
MywgIDg0LCANCisgICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNywg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocmdiYTJkdWkxMXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocmdiYTJkdWkxMXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnYmEyZHVpMTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE1NyArMSwx
NTcgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFk
ZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6
Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1h
dCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFRl
eHR1cmVVSSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAgICAgICAg
MmQgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8v
IE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9y
bWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAg
IHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAKLS8vIFRFWENPT1JEICAgICAg
ICAgICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIAotLy8K
LS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIElu
ZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0t
Ci0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQg
ICAgdWludCAgIHh5encKLS8vCi1wc180XzAKLWRjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKHVpbnQs
dWludCx1aW50LHVpbnQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5Ci1kY2xfb3V0cHV0
IG8wLnh5encKLWRjbF90ZW1wcyAxCi1yZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6
dwotdXRvZiByMC54eSwgcjAueHl4eAotbXVsIHIwLnh5LCByMC54eXh4LCB2MS54eXh4Ci1mdG9p
IHIwLnh5LCByMC54eXh4Ci1tb3YgcjAuencsIGwoMCwwLDAsMCkKLWxkIG8wLnh5encsIHIwLnh5
encsIHQwLnh5encKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgNyBpbnN0cnVjdGlvbiBzbG90cyB1
c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCQTJEVUlbXSA9Ci17
Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMjgsIDI1MiwgCi0gICAgMjU1LCAyMzgsICA2OCwg
MTA5LCAgMTAsIDEzMywgCi0gICAgMTc1LCAxNjMsIDIxNiwgMTUyLCAyMTksIDEwMywgCi0gICAg
MTYzLCAyMjMsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTU2LCAgIDIsICAgMCwgICAwLCAg
IDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgwLCAg
IDAsICAgMCwgICAwLCAgMTIsICAgMSwgCi0gICAgICAwLCAgIDAsICA2NCwgICAxLCAgIDAsICAg
MCwgCi0gICAgIDMyLCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDEy
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDcw
LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAs
IDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwg
MTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEwNSwgCi0gICAg
IDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0MCwgIDgyLCAg
NDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0gICAgMTA0LCAg
OTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEw
OCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAgNTcsICA1
NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgCi0g
ICAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgNTYsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAs
ICAgMCwgICAwLCAgNjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDMsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAg
IDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwgICAwLCAg
ODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgCi0gICAgICAwLCAx
NzEsIDE3MSwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAz
MiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAgIDY1
LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgs
ICA4MiwgCi0gICAgMjE2LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA1NCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgMjQsICAgMCwgICA0LCAgIDAsIDExMiwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAgNjgsICAgMCwg
ICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsICA1MCwgIDE2LCAgMTYsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAg
IDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAg
MCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwgICAw
LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAgNTAs
ICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwg
ICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA4LCAx
OTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAg
NjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0
NSwgICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYy
LCAgIDAsICAgMCwgICAxLCAgODMsICA4NCwgCi0gICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICA3LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1p
Y3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8v
DQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBUZXh0dXJlVUkgICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dHVyZSAgIHVpbnQ0ICAgICAgICAgIDJkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQor
Ly8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJ
bmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0t
LS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQ
T1MgICBmbG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAg
ICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNp
Z25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0t
LS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdF
VCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICB1aW50ICAgeHl6
dw0KKy8vDQorcHNfNF8wDQorZGNsX3Jlc291cmNlX3RleHR1cmUyZCAodWludCx1aW50LHVpbnQs
dWludCkgdDANCitkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQorZGNsX291dHB1dCBvMC54eXp3
DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6dw0KK3V0
b2YgcjAueHksIHIwLnh5eHgNCittdWwgcjAueHksIHIwLnh5eHgsIHYxLnh5eHgNCitmdG9pIHIw
Lnh5LCByMC54eXh4DQorbW92IHIwLnp3LCBsKDAsMCwwLDApDQorbGQgbzAueHl6dywgcjAueHl6
dywgdDAueHl6dw0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDcgaW5zdHJ1Y3Rpb24gc2xvdHMg
dXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkEyRFVJW10g
PQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAxMjgsIDI1MiwgDQorICAgIDI1NSwgMjM4
LCAgNjgsIDEwOSwgIDEwLCAxMzMsIA0KKyAgICAxNzUsIDE2MywgMjE2LCAxNTIsIDIxOSwgMTAz
LCANCisgICAgMTYzLCAyMjMsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDE1NiwgICAyLCAg
IDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAN
CisgICAgMTgwLCAgIDAsICAgMCwgICAwLCAgMTIsICAgMSwgDQorICAgICAgMCwgICAwLCAgNjQs
ICAgMSwgICAwLCAgIDAsIA0KKyAgICAgMzIsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisg
ICAgIDY5LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwg
ICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwgICAwLCAgIDAsICA2MCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA0
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgODQsIDEwMSwgMTIwLCAxMTYsIDExNywgMTE0LCANCisgICAgMTAxLCAgODUs
ICA3MywgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIs
IA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisgICAgIDcyLCAgNzYsICA4
MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsIA0K
KyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAgMTAxLCAxMTQsICAzMiwg
IDU0LCAgNDYsICA1MSwgDQorICAgICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsIA0KKyAg
ICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisgICAgIDczLCAgODMsICA3MSwgIDc4
LCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDgsICAgMCwgICAwLCAgIDAsICA1NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAgNjgs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMywgICAzLCAgIDAsICAgMCwgIDgzLCAgODYsIA0KKyAgICAgOTUsICA4MCwg
IDc5LCAgODMsICA3MywgIDg0LCANCisgICAgIDczLCAgNzksICA3OCwgICAwLCAgODQsICA2OSwg
DQorICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIA0KKyAgICAgIDAsIDE3MSwgMTcx
LCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDMyLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgDQorICAgICA2
NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDgzLCAgNzIsICA2
OCwgIDgyLCANCisgICAgMjE2LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgNTQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICAyNCwgICAwLCAgIDQsICAgMCwg
MTEyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgIDY4
LCAgIDAsICAgMCwgIDk4LCAgMTYsIA0KKyAgICAgIDAsICAgMywgIDUwLCAgMTYsICAxNiwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAy
NDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAN
CisgICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwgIDE2LCAgIDAs
ICAgNywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEy
NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCANCisgICAg
ICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDcwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2
LCAgIDAsICAgMCwgICA3LCAgNTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA3MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI3LCAg
IDAsIA0KKyAgICAgIDAsICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDgsIDE5NCwgICAwLCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAwLCAgIDcsIA0KKyAg
ICAyNDIsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE0
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYyLCAgIDAsICAgMCwgICAxLCAg
ODMsICA4NCwgDQorICAgICA2NSwgIDg0LCAxMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDcs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNz
dGhyb3VnaHJnYmEzZDExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Ro
cm91Z2hyZ2JhM2QxMXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnYmEzZDExcHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNDkgKzEsMTQ5IEBA
Ci0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8K
LS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAg
ICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBTYW1wbGVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAg
IDAgICAgICAgIDEKLS8vIFRleHR1cmVGICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJl
ICBmbG9hdDQgICAgICAgICAgM2QgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQg
c2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElP
TiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAK
LS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElO
REVYICAgIHVpbnQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAg
ICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25h
dHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIg
U3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAg
ICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3Ci0vLwot
cHNfNF8wCi1kY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0Ci1kY2xfcmVzb3VyY2VfdGV4dHVy
ZTNkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIgdjIu
eHl6Ci1kY2xfb3V0cHV0IG8wLnh5encKLXNhbXBsZSBvMC54eXp3LCB2Mi54eXp4LCB0MC54eXp3
LCBzMAotcmV0IAotLy8gQXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNl
bmRpZgotCi1jb25zdCBCWVRFIGdfUFNfUGFzc3Rocm91Z2hSR0JBM0RbXSA9Ci17Ci0gICAgIDY4
LCAgODgsICA2NiwgIDY3LCAyNDYsICA0MSwgCi0gICAgIDE1LCAyNDAsIDE2OCwgMTcyLCAgOTEs
IDE0NSwgCi0gICAgMjM2LCAyMjEsIDE4NywgIDg5LCAgMTIsICAgMCwgCi0gICAgIDkzLCAxNDks
ICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTI4LCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMjIwLCAgIDAsICAgMCwg
ICAwLCAxMDAsICAgMSwgCi0gICAgICAwLCAgIDAsIDE1MiwgICAxLCAgIDAsICAgMCwgCi0gICAg
ICA0LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDE2MCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
NCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgMTA5LCAgIDAsICAg
MCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTAwLCAgIDAsICAgMCwgICAwLCAgIDIs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAs
ICAgMCwgICAwLCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTMsICAgMCwgCi0gICAgICAwLCAgIDAsICA4Mywg
IDk3LCAxMDksIDExMiwgCi0gICAgMTA4LCAxMDEsIDExNCwgICAwLCAgODQsIDEwMSwgCi0gICAg
MTIwLCAxMTYsIDExNywgMTE0LCAxMDEsICA3MCwgCi0gICAgICAwLCAgNzcsIDEwNSwgIDk5LCAx
MTQsIDExMSwgCi0gICAgMTE1LCAxMTEsIDEwMiwgMTE2LCAgMzIsICA0MCwgCi0gICAgIDgyLCAg
NDEsICAzMiwgIDcyLCAgNzYsICA4MywgCi0gICAgIDc2LCAgMzIsICA4MywgMTA0LCAgOTcsIDEw
MCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwgCi0gICAgMTEyLCAxMDUsIDEw
OCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgCi0g
ICAgIDQ4LCAgNDgsICA0NiwgIDQ5LCAgNTQsICA1MSwgCi0gICAgIDU2LCAgNTIsICAgMCwgMTcx
LCAgNzMsICA4MywgCi0gICAgIDcxLCAgNzgsIDEyOCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAz
LCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA5MiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsIDExOCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDcsICAg
NywgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgCi0gICAgIDc5LCAgODMsICA3
MywgIDg0LCAgNzMsICA3OSwgCi0gICAgIDc4LCAgIDAsICA4MywgIDg2LCAgOTUsICA4MiwgCi0g
ICAgIDY5LCAgNzgsICA2OCwgIDY5LCAgODIsICA4NCwgCi0gICAgIDY1LCAgODIsICA3MSwgIDY5
LCAgODQsICA2NSwgCi0gICAgIDgyLCAgODIsICA2NSwgIDg5LCAgNzMsICA3OCwgCi0gICAgIDY4
LCAgNjksICA4OCwgICAwLCAgODQsICA2OSwgCi0gICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIs
ICA2OCwgCi0gICAgICAwLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgCi0gICAgIDQ0LCAgIDAs
ICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDg0LCAg
NjUsICA4MiwgCi0gICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgCi0gICAgIDgzLCAg
NzIsICA2OCwgIDgyLCAxMDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA2NCwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDI1LCAgIDAsICAgMCwgICAwLCAgOTAsICAgMCwgCi0gICAgICAwLCAgIDMsICAg
MCwgIDk2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICA0MCwgCi0g
ICAgICAwLCAgIDQsICAgMCwgMTEyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgODUsICA4NSwgCi0gICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywgCi0gICAgMTE0
LCAgMTYsICAxNiwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAs
ICAgMywgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA2OSwgICAwLCAgIDAsICAgOSwgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwg
ICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgOTYsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MiwgICAwLCAg
IDAsICAgMSwgCi0gICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQg
KFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIFJl
c291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAt
LS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8gVGV4dHVyZUYgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAzZCAgICAwICAgICAg
ICAxDQorLy8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAg
ICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBV
c2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0t
LS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3
ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gU1ZfUkVOREVSVEFSR0VUQVJS
QVlJTkRFWCAgICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICANCisv
LyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBm
bG9hdCAgIHh5eiANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5h
bWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0
ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAg
eHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNs
X3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKGZsb2F0
LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6DQorZGNs
X291dHB1dCBvMC54eXp3DQorc2FtcGxlIG8wLnh5encsIHYyLnh5engsIHQwLnh5encsIHMwDQor
cmV0IA0KKy8vIEFwcHJveGltYXRlbHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlm
DQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNEW10gPQ0KK3sNCisgICAgIDY4
LCAgODgsICA2NiwgIDY3LCAyNDYsICA0MSwgDQorICAgICAxNSwgMjQwLCAxNjgsIDE3MiwgIDkx
LCAxNDUsIA0KKyAgICAyMzYsIDIyMSwgMTg3LCAgODksICAxMiwgICAwLCANCisgICAgIDkzLCAx
NDksICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEyOCwgICAyLCAgIDAsICAgMCwgICA1LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMjIwLCAgIDAs
ICAgMCwgICAwLCAxMDAsICAgMSwgDQorICAgICAgMCwgICAwLCAxNTIsICAgMSwgICAwLCAgIDAs
IA0KKyAgICAgIDQsICAgMiwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsIDE2
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAg
ICAxMDksICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDAs
ICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIA0KKyAgICAyNTUsIDI1
NSwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgODMsICA5NywgMTA5LCAxMTIsIA0KKyAgICAxMDgsIDEwMSwg
MTE0LCAgIDAsICA4NCwgMTAxLCANCisgICAgMTIwLCAxMTYsIDExNywgMTE0LCAxMDEsICA3MCwg
DQorICAgICAgMCwgIDc3LCAxMDUsICA5OSwgMTE0LCAxMTEsIA0KKyAgICAxMTUsIDExMSwgMTAy
LCAxMTYsICAzMiwgIDQwLCANCisgICAgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgDQor
ICAgICA3NiwgIDMyLCAgODMsIDEwNCwgIDk3LCAxMDAsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAg
NjcsIDExMSwgMTA5LCANCisgICAgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgDQorICAg
ICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsIA0KKyAgICAgNDgsICA0OCwgIDQ2LCAgNDks
ICA1NCwgIDUxLCANCisgICAgIDU2LCAgNTIsICAgMCwgMTcxLCAgNzMsICA4MywgDQorICAgICA3
MSwgIDc4LCAxMjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAg
OCwgICAwLCANCisgICAgICAwLCAgIDAsICA4MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAw
LCAgOTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTE4LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgNywgICA3LCANCisg
ICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4MCwgDQorICAgICA3OSwgIDgzLCAgNzMsICA4
NCwgIDczLCAgNzksIA0KKyAgICAgNzgsICAgMCwgIDgzLCAgODYsICA5NSwgIDgyLCANCisgICAg
IDY5LCAgNzgsICA2OCwgIDY5LCAgODIsICA4NCwgDQorICAgICA2NSwgIDgyLCAgNzEsICA2OSwg
IDg0LCAgNjUsIA0KKyAgICAgODIsICA4MiwgIDY1LCAgODksICA3MywgIDc4LCANCisgICAgIDY4
LCAgNjksICA4OCwgICAwLCAgODQsICA2OSwgDQorICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgy
LCAgNjgsIA0KKyAgICAgIDAsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4LCANCisgICAgIDQ0LCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5
NSwgIDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICAgMCwgMTcxLCAxNzEsIA0K
KyAgICAgODMsICA3MiwgIDY4LCAgODIsIDEwMCwgICAwLCANCisgICAgICAwLCAgIDAsICA2NCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAyNSwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMywgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgODgsICA0MCwgDQorICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAg
IDAsICAgMywgDQorICAgIDExNCwgIDE2LCAgMTYsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgMTAxLCAgIDAsICAgMCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgNjksICAgMCwgICAwLCAgIDksIA0KKyAgICAyNDIsICAz
MiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAg
MCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgOTYsICAxNiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwgIDY1
LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTNkaTExcHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhM2RpMTFwcy5o
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhM2Rp
MTFwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2NCArMSwxNjQgQEAKLSNpZiAwCi0vLwotLy8g
R2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAu
MTYzODQKLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVs
ZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0t
LS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFRleHR1cmVJICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0dXJlICAgc2ludDQgICAgICAgICAgM2QgICAgMCAgICAgICAgMQotLy8K
LS8vCi0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tCi0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQ
T1MgICBmbG9hdCAgICAgICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4
ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAg
ICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0v
LwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQot
Ly8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAg
ICBpbnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfcmVzb3VyY2VfdGV4dHVyZTNkIChzaW50LHNp
bnQsc2ludCxzaW50KSB0MAotZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoKLWRjbF9vdXRwdXQg
bzAueHl6dwotZGNsX3RlbXBzIDEKLXJlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3
Ci11dG9mIHIwLnh5eiwgcjAueHl6eAotbXVsIHIwLnh5eiwgcjAueHl6eCwgdjIueHl6eAotZnRv
aSByMC54eXosIHIwLnh5engKLW1vdiByMC53LCBsKDApCi1sZCBvMC54eXp3LCByMC54eXp3LCB0
MC54eXp3Ci1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDcgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAot
I2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19QYXNzdGhyb3VnaFJHQkEzRElbXSA9Ci17Ci0gICAg
IDY4LCAgODgsICA2NiwgIDY3LCAxMzksIDE1OCwgCi0gICAgICA2LCAyNTEsIDE2MywgMTM0LCAg
IDMsIDE4MywgCi0gICAgICA1LCAyMjcsIDE4NSwgMTA4LCAgMzUsICA5MSwgCi0gICAgIDY3LCAx
OTEsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTkyLCAgIDIsICAgMCwgICAwLCAgIDUsICAg
MCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTgwLCAgIDAsICAg
MCwgICAwLCAgNjAsICAgMSwgCi0gICAgICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgCi0g
ICAgIDY4LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsIDEyMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDY5LCAgIDAs
ICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwg
MjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAx
MTcsIDExNCwgCi0gICAgMTAxLCAgNzMsICAgMCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAx
MTEsIDExNSwgMTExLCAxMDIsIDExNiwgCi0gICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3
MiwgCi0gICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEw
MSwgMTE0LCAgMzIsICA2NywgCi0gICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0g
ICAgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgCi0gICAgIDU3LCAgNTQsICA0OCwgIDQ4
LCAgNDYsICA0OSwgCi0gICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0gICAgIDcz
LCAgODMsICA3MSwgIDc4LCAxMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAs
ICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwg
ICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA3LCAgIDcsICAg
MCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgzLCAgNzMsICA4NCwgCi0g
ICAgIDczLCAgNzksICA3OCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODIsICA2OSwgIDc4
LCAgNjgsICA2OSwgCi0gICAgIDgyLCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgCi0gICAgIDg0
LCAgNjUsICA4MiwgIDgyLCAgNjUsICA4OSwgCi0gICAgIDczLCAgNzgsICA2OCwgIDY5LCAgODgs
ICAgMCwgCi0gICAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwgCi0gICAgIDgyLCAgNjgs
ICAgMCwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAzMiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
MTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwgCi0gICAgIDY1LCAg
ODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4
MiwgCi0gICAgMjA0LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAsICA1
MSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDUxLCAgNTEsICAgMCwgICAw
LCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAy
LCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIs
ICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAwLCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAg
MCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDIsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgCi0g
ICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsIDExNCwgICAw
LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAs
ICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywg
Ci0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwg
IDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYyLCAgIDAsICAgMCwgICAxLCAg
ODMsICA4NCwgCi0gICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICA3LCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmlu
ZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlw
ZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0t
LS0NCisvLyBUZXh0dXJlSSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0
ICAgICAgICAgIDNkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWdu
YXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElP
TiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAN
CisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJ
TkRFWCAgICB1aW50ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6
ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6IA0KKy8vDQorLy8NCisvLyBPdXRwdXQg
c2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJl
Z2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4
eXp3DQorLy8NCitwc180XzANCitkY2xfcmVzb3VyY2VfdGV4dHVyZTNkIChzaW50LHNpbnQsc2lu
dCxzaW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6DQorZGNsX291dHB1dCBvMC54
eXp3DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6dw0K
K3V0b2YgcjAueHl6LCByMC54eXp4DQorbXVsIHIwLnh5eiwgcjAueHl6eCwgdjIueHl6eA0KK2Z0
b2kgcjAueHl6LCByMC54eXp4DQorbW92IHIwLncsIGwoMCkNCitsZCBvMC54eXp3LCByMC54eXp3
LCB0MC54eXp3DQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgNyBpbnN0cnVjdGlvbiBzbG90cyB1
c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNESVtdID0N
Cit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTM5LCAxNTgsIA0KKyAgICAgIDYsIDI1MSwg
MTYzLCAxMzQsICAgMywgMTgzLCANCisgICAgICA1LCAyMjcsIDE4NSwgMTA4LCAgMzUsICA5MSwg
DQorICAgICA2NywgMTkxLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxOTIsICAgMiwgICAw
LCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDE4MCwgICAwLCAgIDAsICAgMCwgIDYwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMTEyLCAg
IDEsICAgMCwgICAwLCANCisgICAgIDY4LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAg
ICA2OSwgIDcwLCAxMjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAy
OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAg
MCwgICAwLCANCisgICAgIDY5LCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwg
ICAwLCANCisgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQorICAgIDEwMSwgIDczLCAg
IDAsICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAN
CisgICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYs
ICAzMiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisg
ICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTQsICA0
NiwgIDUxLCAgNDYsIA0KKyAgICAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCANCisgICAg
IDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgDQorICAgICA3MywgIDgzLCAgNzEsICA3OCwg
MTI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4
LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDkyLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAs
ICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDExOCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA3LCAgIDcsICAgMCwg
ICAwLCAgODMsICA4NiwgDQorICAgICA5NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIA0KKyAg
ICAgNzMsICA3OSwgIDc4LCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODIsICA2OSwgIDc4
LCAgNjgsICA2OSwgDQorICAgICA4MiwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAg
ODQsICA2NSwgIDgyLCAgODIsICA2NSwgIDg5LCANCisgICAgIDczLCAgNzgsICA2OCwgIDY5LCAg
ODgsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAgODIs
ICA2OCwgICAwLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA0NCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4NCwg
DQorICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDgz
LCAgNzIsICA2OCwgIDgyLCANCisgICAgMjA0LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNTEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODgsICA0MCwgICAwLCAg
IDQsICAgMCwgMTEyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA1MSwgIDUxLCAgIDAsICAgMCwgIDk4LCAgMTYsIA0KKyAgICAgIDAsICAgMywgMTE0LCAgMTYs
ICAxNiwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAg
MCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEw
NCwgICAwLCANCisgICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwg
IDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNzAsIDEyNiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAw
LCANCisgICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgIDI3LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgICAwLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3LCANCisgICAgMjQyLCAg
MzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNCwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MiwgICAwLCAgIDAsICAgMSwgIDgzLCAgODQs
IA0KKyAgICAgNjUsICA4NCwgMTE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICA3LCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hy
Z2JhM2R1aTExcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hy
Z2JhM2R1aTExcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0
aHJvdWdocmdiYTNkdWkxMXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTY0ICsxLDE2NCBAQAot
I2lmIDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21w
aWxlciA2LjMuOTYwMC4xNjM4NAotLy8KLS8vCi0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0v
LyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAg
ICAgRGltIFNsb3QgRWxlbWVudHMKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQotLy8gVGV4dHVyZVVJ
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgICB1aW50NCAgICAgICAgICAzZCAgICAw
ICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAg
ICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBV
c2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAg
ICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gU1ZfUkVOREVSVEFSR0VUQVJSQVlJ
TkRFWCAgICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICAKLS8vIFRF
WENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0
ICAgeHl6IAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAg
ICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAot
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICBUQVJHRVQgICAgdWludCAgIHh5encKLS8vCi1wc180XzAKLWRjbF9yZXNvdXJjZV90ZXh0
dXJlM2QgKHVpbnQsdWludCx1aW50LHVpbnQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5
egotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotcmVzaW5mb191aW50IHIwLnh5encs
IGwoMCksIHQwLnh5encKLXV0b2YgcjAueHl6LCByMC54eXp4Ci1tdWwgcjAueHl6LCByMC54eXp4
LCB2Mi54eXp4Ci1mdG9pIHIwLnh5eiwgcjAueHl6eAotbW92IHIwLncsIGwoMCkKLWxkIG8wLnh5
encsIHIwLnh5encsIHQwLnh5encKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgNyBpbnN0cnVjdGlv
biBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1Bhc3N0aHJvdWdoUkdCQTNE
VUlbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTYsIDExMSwgCi0gICAgIDU2LCAy
MTgsIDE0OCwgMjMzLCAxMDAsIDE2NCwgCi0gICAgICAwLCAxOTksICA3MywgMTU1LCAyMTMsIDE3
MSwgCi0gICAgIDc4LCAgMTgsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTkyLCAgIDIsICAg
MCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgMTgwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMSwgCi0gICAgICAwLCAgIDAsIDExMiwgICAx
LCAgIDAsICAgMCwgCi0gICAgIDY4LCAgIDIsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5
LCAgNzAsIDEyMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwg
Ci0gICAgIDcwLCAgIDAsICAgMCwgICAwLCAgNjAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAg
ICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDg0LCAx
MDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAxLCAgODUsICA3MywgICAwLCAgNzcsIDEw
NSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0
MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0g
ICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEy
LCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2
LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIs
ICAgMCwgCi0gICAgIDczLCAgODMsICA3MSwgIDc4LCAxMjgsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDE1LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICA3LCAgIDcsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODAsICA3OSwgIDgz
LCAgNzMsICA4NCwgCi0gICAgIDczLCAgNzksICA3OCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1
LCAgODIsICA2OSwgIDc4LCAgNjgsICA2OSwgCi0gICAgIDgyLCAgODQsICA2NSwgIDgyLCAgNzEs
ICA2OSwgCi0gICAgIDg0LCAgNjUsICA4MiwgIDgyLCAgNjUsICA4OSwgCi0gICAgIDczLCAgNzgs
ICA2OCwgIDY5LCAgODgsICAgMCwgCi0gICAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzksICA3OSwg
Ci0gICAgIDgyLCAgNjgsICAgMCwgMTcxLCAgNzksICA4MywgCi0gICAgIDcxLCAgNzgsICA0NCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgMTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4
NCwgCi0gICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICAgMCwgCi0gICAgMTcxLCAxNzEsICA4
MywgIDcyLCAgNjgsICA4MiwgCi0gICAgMjA0LCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA1MSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4LCAgNDAsICAgMCwgICA0
LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4
LCAgNjgsICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMsIDExNCwgIDE2LCAgMTYs
ICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwgCi0gICAgICAwLCAgIDMs
IDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMDQsICAgMCwg
Ci0gICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYxLCAgMTYsICAgMCwg
ICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgODYsICAgMCwgCi0gICAgICAwLCAg
IDUsIDExNCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAg
MiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAg
MCwgICA3LCAxMTQsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDcwLCAgIDIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE4
LCAgMTYsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgMjcsICAgMCwgCi0gICAgICAw
LCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAs
ICAgMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAs
ICAgMCwgICA1LCAxMzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwg
ICAwLCAgIDAsICAgNywgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYyLCAg
IDAsICAgMCwgICAxLCAgODMsICA4NCwgCi0gICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICA3LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jv
c29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQor
Ly8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t
LS0tIC0tLS0gLS0tLS0tLS0NCisvLyBUZXh0dXJlVUkgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4dHVyZSAgIHVpbnQ0ICAgICAgICAgIDNkICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8N
CisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRl
eCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0N
CisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1Mg
ICBmbG9hdCAgICAgICANCisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAg
ICAgICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAgeHl6IA0KKy8vDQor
Ly8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICAgIHVpbnQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfcmVzb3VyY2VfdGV4dHVyZTNk
ICh1aW50LHVpbnQsdWludCx1aW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6DQor
ZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCityZXNpbmZvX3VpbnQgcjAueHl6dywg
bCgwKSwgdDAueHl6dw0KK3V0b2YgcjAueHl6LCByMC54eXp4DQorbXVsIHIwLnh5eiwgcjAueHl6
eCwgdjIueHl6eA0KK2Z0b2kgcjAueHl6LCByMC54eXp4DQorbW92IHIwLncsIGwoMCkNCitsZCBv
MC54eXp3LCByMC54eXp3LCB0MC54eXp3DQorcmV0IA0KKy8vIEFwcHJveGltYXRlbHkgNyBpbnN0
cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1Bhc3N0aHJv
dWdoUkdCQTNEVUlbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2LCAgNjcsICAxNiwgMTExLCAN
CisgICAgIDU2LCAyMTgsIDE0OCwgMjMzLCAxMDAsIDE2NCwgDQorICAgICAgMCwgMTk5LCAgNzMs
IDE1NSwgMjEzLCAxNzEsIA0KKyAgICAgNzgsICAxOCwgICAxLCAgIDAsICAgMCwgICAwLCANCisg
ICAgMTkyLCAgIDIsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAxODAsICAgMCwgICAwLCAgIDAsICA2MCwgICAxLCANCisgICAg
ICAwLCAgIDAsIDExMiwgICAxLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAyLCAgIDAsICAgMCwg
IDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAy
NTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAgIDAsICAgMCwgIDYwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAs
ICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAx
MywgICAwLCAgIDAsICAgMCwgDQorICAgICA4NCwgMTAxLCAxMjAsIDExNiwgMTE3LCAxMTQsIA0K
KyAgICAxMDEsICA4NSwgIDczLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwg
MTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAg
ICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAx
LCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAx
MDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAg
NDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAgNzMs
ICA4MywgIDcxLCAgNzgsIDEyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDgwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAgMCwg
ICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMTgsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgNywgICA3LCAgIDAsICAgMCwgIDgzLCAgODYsIA0KKyAgICAgOTUsICA4MCwgIDc5LCAgODMs
ICA3MywgIDg0LCANCisgICAgIDczLCAgNzksICA3OCwgICAwLCAgODMsICA4NiwgDQorICAgICA5
NSwgIDgyLCAgNjksICA3OCwgIDY4LCAgNjksIA0KKyAgICAgODIsICA4NCwgIDY1LCAgODIsICA3
MSwgIDY5LCANCisgICAgIDg0LCAgNjUsICA4MiwgIDgyLCAgNjUsICA4OSwgDQorICAgICA3Mywg
IDc4LCAgNjgsICA2OSwgIDg4LCAgIDAsIA0KKyAgICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwg
IDc5LCANCisgICAgIDgyLCAgNjgsICAgMCwgMTcxLCAgNzksICA4MywgDQorICAgICA3MSwgIDc4
LCAgNDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAw
LCANCisgICAgICAwLCAgIDAsICAzMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQorICAgICAgMCwgICAwLCAgODMs
ICA4NiwgIDk1LCAgODQsIA0KKyAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgICAwLCANCisg
ICAgMTcxLCAxNzEsICA4MywgIDcyLCAgNjgsICA4MiwgDQorICAgIDIwNCwgICAwLCAgIDAsICAg
MCwgIDY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUxLCAgIDAsICAgMCwgICAwLCANCisgICAg
IDg4LCAgNDAsICAgMCwgICA0LCAgIDAsIDExMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNjgsICA2OCwgICAwLCAgIDAsICA5OCwgIDE2LCANCisgICAgICAw
LCAgIDMsIDExNCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgMTAx
LCAgIDAsIA0KKyAgICAgIDAsICAgMywgMjQyLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAxMDQsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0MiwgICAwLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgODYsICAgMCwgDQorICAgICAgMCwgICA1LCAxMTQsICAgMCwgIDE2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCANCisgICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgNywgMTE0LCAgIDAsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDIsICAxNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxOCwgIDE2LCAgIDAsIA0KKyAgICAg
IDIsICAgMCwgICAwLCAgIDAsICAyNywgICAwLCANCisgICAgICAwLCAgIDUsIDExNCwgICAwLCAg
MTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIA0KKyAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAs
ICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2
NCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAg
NywgDQorICAgIDI0MiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDcwLCAgMTQsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwg
DQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjIsICAgMCwgICAw
LCAgIDEsICA4MywgIDg0LCANCisgICAgIDY1LCAgODQsIDExNiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgNywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBp
bGVkL3N3aXp6bGVmMmRhcnJheXBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3
aXp6bGVmMmRhcnJheXBzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9z
d2l6emxlZjJkYXJyYXlwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI3OCArMSwyNzggQEAKLSNp
ZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGls
ZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gQnVmZmVyIERlZmluaXRpb25zOiAKLS8vCi0v
LyBjYnVmZmVyIFN3aXp6bGVQcm9wZXJ0aWVzCi0vLyB7Ci0vLwotLy8gICB1aW50NCBTd2l6emxl
SW5kaWNlczsgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAxNgotLy8KLS8v
IH0KLS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1l
bnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8gVGV4
dHVyZUYyREFycmF5ICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgMmRhcnJh
eSAgICAwICAgICAgICAxCi0vLyBTd2l6emxlUHJvcGVydGllcyAgICAgICAgICAgICAgICAgY2J1
ZmZlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElu
cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9T
SVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAg
ICAgCi0vLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAg
UlRJTkRFWCAgICB1aW50ICAgeCAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4
eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0vLwotLy8KLS8vIE91dHB1dCBz
aWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lz
dGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0t
LSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAg
ICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dwot
Ly8KLXBzXzRfMAotZGNsX2NvbnN0YW50YnVmZmVyIGNiMFsxXSwgaW1tZWRpYXRlSW5kZXhlZAot
ZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdAotZGNsX3Jlc291cmNlX3RleHR1cmUyZGFycmF5
IChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDAKLWRjbF9pbnB1dF9wc19zaXYgY29uc3RhbnQg
djEueCwgcmVuZGVydGFyZ2V0X2FycmF5X2luZGV4Ci1kY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5
Ci1kY2xfb3V0cHV0IG8wLnh5encKLWRjbF90ZW1wcyAxCi1kY2xfaW5kZXhhYmxlVGVtcCB4MFs2
XSwgNAotdXRvZiByMC56LCB2MS54Ci1tb3YgcjAueHksIHYyLnh5eHgKLXNhbXBsZSByMC54eXp3
LCByMC54eXp4LCB0MC54eXp3LCBzMAotbW92IHgwWzBdLngsIHIwLngKLW1vdiB4MFsxXS54LCBy
MC55Ci1tb3YgeDBbMl0ueCwgcjAuegotbW92IHgwWzNdLngsIHIwLncKLW1vdiB4MFs0XS54LCBs
KDApCi1tb3YgeDBbNV0ueCwgbCgxLjAwMDAwMCkKLW1vdiByMC54LCBjYjBbMF0ueAotbW92IG8w
LngsIHgwW3IwLnggKyAwXS54Ci1tb3YgcjAueCwgY2IwWzBdLnkKLW1vdiBvMC55LCB4MFtyMC54
ICsgMF0ueAotbW92IHIwLngsIGNiMFswXS56Ci1tb3YgbzAueiwgeDBbcjAueCArIDBdLngKLW1v
diByMC54LCBjYjBbMF0udwotbW92IG8wLncsIHgwW3IwLnggKyAwXS54Ci1yZXQgCi0vLyBBcHBy
b3hpbWF0ZWx5IDE4IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRF
IGdfUFNfU3dpenpsZUYyREFycmF5W10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDM5
LCAyMzIsIAotICAgICA5MSwgMTY2LCAxNjUsIDIxNywgIDIyLCAgMzksIAotICAgIDE4MywgMjAy
LCAxOTEsICA2NCwgMjM4LCAxMDQsIAotICAgIDIxNywgMTk5LCAgIDEsICAgMCwgICAwLCAgIDAs
IAotICAgIDIwNCwgICA0LCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIs
ICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAxLCAgIDAsICAgMCwgMjQwLCAgIDEsIAotICAg
ICAgMCwgICAwLCAgMzYsICAgMiwgICAwLCAgIDAsIAotICAgICA4MCwgICA0LCAgIDAsICAgMCwg
IDgyLCAgNjgsIAotICAgICA2OSwgIDcwLCAgNDQsICAgMSwgICAwLCAgIDAsIAotICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgMTY4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAg
IDAsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1NSwgMjU1LCAg
IDAsICAgMSwgICAwLCAgIDAsIAotICAgIDI0OCwgICAwLCAgIDAsICAgMCwgMTI0LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIAotICAgIDEzMiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDUsICAgMCwgICAwLCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwgMjU1LCAyNTUs
IAotICAgIDI1NSwgMjU1LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDEzLCAgIDAsIAotICAgICAgMCwgICAwLCAxNDgsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDgzLCAg
OTcsIAotICAgIDEwOSwgMTEyLCAxMDgsIDEwMSwgMTE0LCAgIDAsIAotICAgICA4NCwgMTAxLCAx
MjAsIDExNiwgMTE3LCAxMTQsIAotICAgIDEwMSwgIDcwLCAgNTAsICA2OCwgIDY1LCAxMTQsIAot
ICAgIDExNCwgIDk3LCAxMjEsICAgMCwgIDgzLCAxMTksIAotICAgIDEwNSwgMTIyLCAxMjIsIDEw
OCwgMTAxLCAgODAsIAotICAgIDExNCwgMTExLCAxMTIsIDEwMSwgMTE0LCAxMTYsIAotICAgIDEw
NSwgMTAxLCAxMTUsICAgMCwgMTcxLCAxNzEsIAotICAgIDE0OCwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsIAotICAgICAgMCwgICAwLCAxOTIsICAgMCwgICAwLCAgIDAsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgIDIxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTYs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgMjMyLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA4MywgMTE5LCAxMDUsIDEyMiwg
MTIyLCAxMDgsIAotICAgIDEwMSwgIDczLCAxMTAsIDEwMCwgMTA1LCAgOTksIAotICAgIDEwMSwg
MTE1LCAgIDAsIDE3MSwgICAxLCAgIDAsIAotICAgICAxOSwgICAwLCAgIDEsICAgMCwgICA0LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
NzcsIDEwNSwgIDk5LCAxMTQsIAotICAgIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAgMzIsIAot
ICAgICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsIAotICAgICA4MywgIDc2LCAgMzIsICA4
MywgMTA0LCAgOTcsIAotICAgIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCAxMTEsIAotICAgIDEw
OSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIAotICAgICAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2
LCAgNTcsIAotICAgICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCAgNTQsIAotICAgICA1MSwgIDU2
LCAgNTIsICAgMCwgMTcxLCAxNzEsIAotICAgICA3MywgIDgzLCAgNzEsICA3OCwgMTI4LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgOCwgICAwLCAgIDAs
ICAgMCwgIDgwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAxLCAg
IDAsICAgMCwgMTE4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAg
MCwgICAwLCAgIDAsIAotICAgICAgNywgICAzLCAgIDAsICAgMCwgIDgzLCAgODYsIAotICAgICA5
NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIAotICAgICA3MywgIDc5LCAgNzgsICAgMCwgIDgz
LCAgODYsIAotICAgICA5NSwgIDgyLCAgNjksICA3OCwgIDY4LCAgNjksIAotICAgICA4MiwgIDg0
LCAgNjUsICA4MiwgIDcxLCAgNjksIAotICAgICA4NCwgIDY1LCAgODIsICA4MiwgIDY1LCAgODks
IAotICAgICA3MywgIDc4LCAgNjgsICA2OSwgIDg4LCAgIDAsIAotICAgICA4NCwgIDY5LCAgODgs
ICA2NywgIDc5LCAgNzksIAotICAgICA4MiwgIDY4LCAgIDAsIDE3MSwgIDc5LCAgODMsIAotICAg
ICA3MSwgIDc4LCAgNDQsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwg
ICA4LCAgIDAsIAotICAgICAgMCwgICAwLCAgMzIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAgMCwgICAwLCAg
ODMsICA4NiwgIDk1LCAgODQsIAotICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIAot
ICAgIDE3MSwgMTcxLCAgODMsICA3MiwgIDY4LCAgODIsIAotICAgICAzNiwgICAyLCAgIDAsICAg
MCwgIDY0LCAgIDAsIAotICAgICAgMCwgICAwLCAxMzcsICAgMCwgICAwLCAgIDAsIAotICAgICA4
OSwgICAwLCAgIDAsICAgNCwgIDcwLCAxNDIsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIAotICAgICAgMCwgICAz
LCAgIDAsICA5NiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDg4LCAgNjQs
IAotICAgICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgIDg1LCAgODUsIAotICAgICAgMCwgICAwLCAxMDAsICAgOCwgICAwLCAgIDQsIAotICAg
ICAxOCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDQsICAgMCwg
ICAwLCAgIDAsIAotICAgICA5OCwgIDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIAotICAgICAxNiwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAg
MzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAwLCAg
IDAsICAgMiwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAxMDUsICAgMCwgICAwLCAgIDQsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDQsICAg
MCwgICAwLCAgIDAsIAotICAgICA4NiwgICAwLCAgIDAsICAgNSwgIDY2LCAgIDAsIAotICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgIDE2LCAgMTYsICAgMCwgICAx
LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDUsIAotICAgICA1MCwgICAw
LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAs
IAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDY5LCAgIDAsIAotICAgICAgMCwgICA5LCAyNDIs
ICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgMTI2LCAgMTYsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICA5NiwgIDE2LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
MTAsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAot
ICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMjYsICAgMCwgIDE2LCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMy
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAw
LCAgNDIsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAs
IAotICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTgsICAgMCwgIDE2LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICA0OCwg
IDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAg
IDAsIAotICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAxMjgsICA2MywgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICAg
MCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAxMjgsIAotICAgICAz
MiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0
LCAgIDAsIAotICAgICAgMCwgICA3LCAgMTgsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDEwLCAgNDgsIAotICAgICAzMiwgICA0LCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQs
ICAgMCwgICAwLCAgIDYsIAotICAgICAxOCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgMjYsIDEyOCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDcsIAotICAgICAzNCwg
IDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICA0OCwgIDMyLCAg
IDQsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIAotICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgIDAsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA0MiwgMTI4LCAgMzIsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1
NCwgICAwLCAgIDAsICAgNywgIDY2LCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAxMCwgIDQ4LCAgMzIsICAgNCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgMTAsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAs
IAotICAgICAgMCwgICA2LCAgMTgsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgIDU4LCAxMjgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA3LCAxMzAsICAzMiwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAgNDgsIAotICAgICAzMiwg
ICA0LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIAotICAgICA4MywgIDg0LCAg
NjUsICA4NCwgMTE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTgsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgNiwgICAw
LCAgIDAsICAgMCwgIDEwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMAotfTsKKyNpZiAwDQor
Ly8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2
LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBCdWZmZXIgRGVmaW5pdGlvbnM6IA0KKy8vDQor
Ly8gY2J1ZmZlciBTd2l6emxlUHJvcGVydGllcw0KKy8vIHsNCisvLw0KKy8vICAgdWludDQgU3dp
enpsZUluZGljZXM7ICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgIDAgU2l6ZTogICAgMTYNCisv
Lw0KKy8vIH0NCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8NCisvLyBOYW1l
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGlt
IFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBTYW1wbGVyICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAg
ICAgIDENCisvLyBUZXh0dXJlRjJEQXJyYXkgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgZmxv
YXQ0ICAgICAyZGFycmF5ICAgIDAgICAgICAgIDENCisvLyBTd2l6emxlUHJvcGVydGllcyAgICAg
ICAgICAgICAgICAgY2J1ZmZlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisv
Lw0KKy8vDQorLy8NCisvLyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAg
ICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLSAtLS0tLS0NCisvLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAg
IDAgICAgICBQT1MgICBmbG9hdCAgICAgICANCisvLyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVY
ICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJTkRFWCAgICB1aW50ICAgeCAgIA0KKy8vIFRFWENP
T1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZsb2F0ICAg
eHkgIA0KKy8vDQorLy8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAg
ICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2Vk
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAg
ICAgICAwICAgVEFSR0VUICAgZmxvYXQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfY29uc3Rh
bnRidWZmZXIgY2IwWzFdLCBpbW1lZGlhdGVJbmRleGVkDQorZGNsX3NhbXBsZXIgczAsIG1vZGVf
ZGVmYXVsdA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlMmRhcnJheSAoZmxvYXQsZmxvYXQsZmxvYXQs
ZmxvYXQpIHQwDQorZGNsX2lucHV0X3BzX3NpdiBjb25zdGFudCB2MS54LCByZW5kZXJ0YXJnZXRf
YXJyYXlfaW5kZXgNCitkY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5DQorZGNsX291dHB1dCBvMC54
eXp3DQorZGNsX3RlbXBzIDENCitkY2xfaW5kZXhhYmxlVGVtcCB4MFs2XSwgNA0KK3V0b2YgcjAu
eiwgdjEueA0KK21vdiByMC54eSwgdjIueHl4eA0KK3NhbXBsZSByMC54eXp3LCByMC54eXp4LCB0
MC54eXp3LCBzMA0KK21vdiB4MFswXS54LCByMC54DQorbW92IHgwWzFdLngsIHIwLnkNCittb3Yg
eDBbMl0ueCwgcjAueg0KK21vdiB4MFszXS54LCByMC53DQorbW92IHgwWzRdLngsIGwoMCkNCitt
b3YgeDBbNV0ueCwgbCgxLjAwMDAwMCkNCittb3YgcjAueCwgY2IwWzBdLngNCittb3YgbzAueCwg
eDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLnkNCittb3YgbzAueSwgeDBbcjAueCAr
IDBdLngNCittb3YgcjAueCwgY2IwWzBdLnoNCittb3YgbzAueiwgeDBbcjAueCArIDBdLngNCitt
b3YgcjAueCwgY2IwWzBdLncNCittb3YgbzAudywgeDBbcjAueCArIDBdLngNCityZXQgDQorLy8g
QXBwcm94aW1hdGVseSAxOCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQorY29u
c3QgQllURSBnX1BTX1N3aXp6bGVGMkRBcnJheVtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYs
ICA2NywgIDM5LCAyMzIsIA0KKyAgICAgOTEsIDE2NiwgMTY1LCAyMTcsICAyMiwgIDM5LCANCisg
ICAgMTgzLCAyMDIsIDE5MSwgIDY0LCAyMzgsIDEwNCwgDQorICAgIDIxNywgMTk5LCAgIDEsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAyMDQsICAgNCwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAg
ICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNCwgICAxLCAgIDAsICAgMCwg
MjQwLCAgIDEsIA0KKyAgICAgIDAsICAgMCwgIDM2LCAgIDIsICAgMCwgICAwLCANCisgICAgIDgw
LCAgIDQsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgNDQsICAgMSwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDE2OCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgMjQ4LCAgIDAs
ICAgMCwgICAwLCAxMjQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTMyLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDUsICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDEzLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgMTQ4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDgzLCAgOTcsIA0KKyAgICAxMDksIDEx
MiwgMTA4LCAxMDEsIDExNCwgICAwLCANCisgICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDEx
NCwgDQorICAgIDEwMSwgIDcwLCAgNTAsICA2OCwgIDY1LCAxMTQsIA0KKyAgICAxMTQsICA5Nywg
MTIxLCAgIDAsICA4MywgMTE5LCANCisgICAgMTA1LCAxMjIsIDEyMiwgMTA4LCAxMDEsICA4MCwg
DQorICAgIDExNCwgMTExLCAxMTIsIDEwMSwgMTE0LCAxMTYsIA0KKyAgICAxMDUsIDEwMSwgMTE1
LCAgIDAsIDE3MSwgMTcxLCANCisgICAgMTQ4LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQor
ICAgICAgMCwgICAwLCAxOTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
IDIxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE2LCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAyMzIsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsIDExOSwgMTA1LCAxMjIsIDEy
MiwgMTA4LCANCisgICAgMTAxLCAgNzMsIDExMCwgMTAwLCAxMDUsICA5OSwgDQorICAgIDEwMSwg
MTE1LCAgIDAsIDE3MSwgICAxLCAgIDAsIA0KKyAgICAgMTksICAgMCwgICAxLCAgIDAsICAgNCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNzcsIDEwNSwgIDk5LCAxMTQsIA0KKyAgICAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgIDMy
LCANCisgICAgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgDQorICAgICA4MywgIDc2LCAg
MzIsICA4MywgMTA0LCAgOTcsIA0KKyAgICAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgMTExLCAN
CisgICAgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgDQorICAgICAzMiwgIDU0LCAgNDYs
ICA1MSwgIDQ2LCAgNTcsIA0KKyAgICAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCANCisg
ICAgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIDE3MSwgDQorICAgICA3MywgIDgzLCAgNzEsICA3
OCwgMTI4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICA4LCAgIDAsICAgMCwgICAwLCAgODAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDky
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDEsICAgMSwgICAwLCAgIDAsIDExOCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICA3LCAgIDMsICAg
MCwgICAwLCAgODMsICA4NiwgDQorICAgICA5NSwgIDgwLCAgNzksICA4MywgIDczLCAgODQsIA0K
KyAgICAgNzMsICA3OSwgIDc4LCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODIsICA2OSwg
IDc4LCAgNjgsICA2OSwgDQorICAgICA4MiwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAg
ICAgODQsICA2NSwgIDgyLCAgODIsICA2NSwgIDg5LCANCisgICAgIDczLCAgNzgsICA2OCwgIDY5
LCAgODgsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAgICAg
ODIsICA2OCwgICAwLCAxNzEsICA3OSwgIDgzLCANCisgICAgIDcxLCAgNzgsICA0NCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgIDg2LCAgOTUsICA4
NCwgDQorICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgIDAsIA0KKyAgICAxNzEsIDE3MSwg
IDgzLCAgNzIsICA2OCwgIDgyLCANCisgICAgIDM2LCAgIDIsICAgMCwgICAwLCAgNjQsICAgMCwg
DQorICAgICAgMCwgICAwLCAxMzcsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODksICAgMCwgICAw
LCAgIDQsICA3MCwgMTQyLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDkwLCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAg
OTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgODgsICA2NCwgDQorICAg
ICAgMCwgICA0LCAgIDAsIDExMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICA4NSwgIDg1LCANCisgICAgICAwLCAgIDAsIDEwMCwgICA4LCAgIDAsICAgNCwgDQorICAgICAx
OCwgIDE2LCAgMTYsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAg
MCwgICAwLCANCisgICAgIDk4LCAgMTYsICAgMCwgICAzLCAgNTAsICAxNiwgDQorICAgICAxNiwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDEsICAgMCwgICAwLCAgIDMsIDI0Miwg
IDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNCwgICAw
LCAgIDAsICAgMiwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTA1LCAgIDAsICAgMCwgICA0
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODYsICAgMCwgICAwLCAgIDUsICA2NiwgICAwLCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgIDE2LCAgMTYs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisg
ICAgIDUwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAx
NiwgIDE2LCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAwLCAgIDAsICA2OSwgICAwLCANCisgICAg
ICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcw
LCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICA5NiwgIDE2
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAg
IDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAy
NiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0K
KyAgICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDIsICAgMCwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4
LCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDU4LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAg
NiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDUsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
MTI4LCAgNjMsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAxMjgsIA0KKyAgICAgMzIsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQor
ICAgICAgMCwgICA3LCAgMTgsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAxMCwgIDQ4LCANCisgICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAs
ICAgMCwgICA2LCANCisgICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgMjYsIDEyOCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNywgDQorICAgICAzNCwg
IDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgNDgsICAzMiwg
ICA0LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgDQorICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgICAw
LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA0MiwgMTI4LCAg
MzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDU0LCAgIDAsICAgMCwgICA3LCAgNjYsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICA0OCwgIDMyLCAgIDQsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNTgsIDEyOCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAw
LCAgIDcsIDEzMCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEw
LCAgNDgsIA0KKyAgICAgMzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAg
IDEsIA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAxOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgNiwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVk
L3N3aXp6bGVmMmRwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxlZjJk
cHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGVmMmRwcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDI1NiArMSwyNTYgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQK
LS8vCi0vLwotLy8gQnVmZmVyIERlZmluaXRpb25zOiAKLS8vCi0vLyBjYnVmZmVyIFN3aXp6bGVQ
cm9wZXJ0aWVzCi0vLyB7Ci0vLwotLy8gICB1aW50NCBTd2l6emxlSW5kaWNlczsgICAgICAgICAg
ICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAxNgotLy8KLS8vIH0KLS8vCi0vLwotLy8gUmVz
b3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0g
LS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyICAg
ICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8gVGV4dHVyZUYyRCAgICAgICAgICAg
ICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAyZCAgICAwICAgICAgICAxCi0v
LyBTd2l6emxlUHJvcGVydGllcyAgICAgICAgICAgICAgICAgY2J1ZmZlciAgICAgIE5BICAgICAg
ICAgIE5BICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8v
Ci0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUg
IEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAg
IDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAg
ICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAK
LS8vCi0vLwotLy8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAg
ICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0t
LS0tLQotLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICAgZmxvYXQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfY29uc3RhbnRidWZmZXIgY2IwWzFd
LCBpbW1lZGlhdGVJbmRleGVkCi1kY2xfc2FtcGxlciBzMCwgbW9kZV9kZWZhdWx0Ci1kY2xfcmVz
b3VyY2VfdGV4dHVyZTJkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDAKLWRjbF9pbnB1dF9w
cyBsaW5lYXIgdjEueHkKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLWRjbF9pbmRl
eGFibGVUZW1wIHgwWzZdLCA0Ci1zYW1wbGUgcjAueHl6dywgdjEueHl4eCwgdDAueHl6dywgczAK
LW1vdiB4MFswXS54LCByMC54Ci1tb3YgeDBbMV0ueCwgcjAueQotbW92IHgwWzJdLngsIHIwLnoK
LW1vdiB4MFszXS54LCByMC53Ci1tb3YgeDBbNF0ueCwgbCgwKQotbW92IHgwWzVdLngsIGwoMS4w
MDAwMDApCi1tb3YgcjAueCwgY2IwWzBdLngKLW1vdiBvMC54LCB4MFtyMC54ICsgMF0ueAotbW92
IHIwLngsIGNiMFswXS55Ci1tb3YgbzAueSwgeDBbcjAueCArIDBdLngKLW1vdiByMC54LCBjYjBb
MF0uegotbW92IG8wLnosIHgwW3IwLnggKyAwXS54Ci1tb3YgcjAueCwgY2IwWzBdLncKLW1vdiBv
MC53LCB4MFtyMC54ICsgMF0ueAotcmV0IAotLy8gQXBwcm94aW1hdGVseSAxNiBpbnN0cnVjdGlv
biBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1N3aXp6bGVGMkRbXSA9Ci17
Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAxODcsIDIwNCwgCi0gICAgMTYwLCAgMzksIDE5NSwg
MTU4LCAyNDUsICA3MiwgCi0gICAgMTI1LCAyNDksICA3MCwgMTQwLCAxNTgsIDE5OSwgCi0gICAg
MjQ2LCAyMjAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDk2LCAgIDQsICAgMCwgICAwLCAg
IDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTAwLCAg
IDEsICAgMCwgICAwLCAxODgsICAgMSwgCi0gICAgICAwLCAgIDAsIDI0MCwgICAxLCAgIDAsICAg
MCwgCi0gICAgMjI4LCAgIDMsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsICA0
MCwgICAxLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxNjQsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgMjQ0
LCAgIDAsICAgMCwgICAwLCAxMjQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTMyLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICA0LCAgIDAsICAgMCwgICAwLCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTMsICAgMCwgCi0gICAgICAwLCAg
IDAsIDE0MywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAxLCAgIDAsICAgMCwgICAwLCAgODMsICA5NywgCi0gICAgMTA5LCAxMTIsIDEwOCwgMTAx
LCAxMTQsICAgMCwgCi0gICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgCi0gICAgMTAx
LCAgNzAsICA1MCwgIDY4LCAgIDAsICA4MywgCi0gICAgMTE5LCAxMDUsIDEyMiwgMTIyLCAxMDgs
IDEwMSwgCi0gICAgIDgwLCAxMTQsIDExMSwgMTEyLCAxMDEsIDExNCwgCi0gICAgMTE2LCAxMDUs
IDEwMSwgMTE1LCAgIDAsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE0MywgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxODgsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsIDIxMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgMjI4LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA4MywgMTE5LCAxMDUsIDEy
MiwgCi0gICAgMTIyLCAxMDgsIDEwMSwgIDczLCAxMTAsIDEwMCwgCi0gICAgMTA1LCAgOTksIDEw
MSwgMTE1LCAgIDAsIDE3MSwgCi0gICAgICAxLCAgIDAsICAxOSwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNzcsIDEwNSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2
LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIs
ICA4MywgCi0gICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEs
IDEwOSwgMTEyLCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwg
Ci0gICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwg
IDU2LCAgNTIsICAgMCwgCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgCi0gICAg
IDgwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY4LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAz
LCAgIDAsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDgwLCAgNzksICA4MywgCi0gICAgIDcz
LCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgCi0gICAgIDg0LCAgNjksICA4OCwgIDY3LCAgNzks
ICA3OSwgCi0gICAgIDgyLCAgNjgsICAgMCwgMTcxLCAxNzEsIDE3MSwgCi0gICAgIDc5LCAgODMs
ICA3MSwgIDc4LCAgNDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAg
ODMsICA4NiwgCi0gICAgIDk1LCAgODQsICA2NSwgIDgyLCAgNzEsICA2OSwgCi0gICAgIDg0LCAg
IDAsIDE3MSwgMTcxLCAgODMsICA3MiwgCi0gICAgIDY4LCAgODIsIDIzNiwgICAxLCAgIDAsICAg
MCwgCi0gICAgIDY0LCAgIDAsICAgMCwgICAwLCAxMjMsICAgMCwgCi0gICAgICAwLCAgIDAsICA4
OSwgICAwLCAgIDAsICAgNCwgCi0gICAgIDcwLCAxNDIsICAzMiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDkwLCAgIDAsICAgMCwgICAz
LCAgIDAsICA5NiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4
LCAgMjQsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDg1LCAgODUsICAgMCwgICAwLCAgOTgsICAxNiwgCi0gICAgICAwLCAgIDMs
ICA1MCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDEsICAgMCwg
Ci0gICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAg
MTA1LCAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgNjksICAgMCwgCi0gICAgICAwLCAg
IDksIDI0MiwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAx
NiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAxMjYsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgIDk2LCAgMTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4
LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQs
ICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAyNiwgICAwLCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwg
IDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA0MiwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICA1OCwgICAwLCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAx
OCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsIDEyOCwgIDYzLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYs
ICAxOCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsIDEyOCwg
Ci0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDcsICAxOCwgIDMyLCAgMTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0OCwgCi0gICAgIDMyLCAgIDQsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICA1NCwgICAwLCAgIDAsICAgNiwgCi0gICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAyNiwgMTI4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNywgCi0g
ICAgIDM0LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgIDQ4
LCAgMzIsICAgNCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgs
ICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDQyLCAxMjgs
ICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDU0LCAgIDAsICAgMCwgICA3LCAgNjYsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgNDgsICAzMiwgICA0LCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNTgsIDEyOCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDcsIDEz
MCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0OCwgCi0g
ICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAxNiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAsICAgMSwgCi0gICAgIDgz
LCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICA2LCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwCi19Owor
I2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIEJ1ZmZlciBEZWZpbml0aW9uczog
DQorLy8NCisvLyBjYnVmZmVyIFN3aXp6bGVQcm9wZXJ0aWVzDQorLy8gew0KKy8vDQorLy8gICB1
aW50NCBTd2l6emxlSW5kaWNlczsgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAg
ICAxNg0KKy8vDQorLy8gfQ0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0K
Ky8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAg
ICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFNhbXBs
ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEg
ICAgMCAgICAgICAgMQ0KKy8vIFRleHR1cmVGMkQgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
dXJlICBmbG9hdDQgICAgICAgICAgMmQgICAgMCAgICAgICAgMQ0KKy8vIFN3aXp6bGVQcm9wZXJ0
aWVzICAgICAgICAgICAgICAgICBjYnVmZmVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAg
ICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUg
ICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAg
VXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0t
LS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFRFWENPT1JEICAgICAgICAg
ICAgICAgICAwICAgeHkgICAgICAgICAgMSAgICAgTk9ORSAgIGZsb2F0ICAgeHkgIA0KKy8vDQor
Ly8NCisvLyBPdXRwdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tDQorLy8gU1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFS
R0VUICAgZmxvYXQgICB4eXp3DQorLy8NCitwc180XzANCitkY2xfY29uc3RhbnRidWZmZXIgY2Iw
WzFdLCBpbW1lZGlhdGVJbmRleGVkDQorZGNsX3NhbXBsZXIgczAsIG1vZGVfZGVmYXVsdA0KK2Rj
bF9yZXNvdXJjZV90ZXh0dXJlMmQgKGZsb2F0LGZsb2F0LGZsb2F0LGZsb2F0KSB0MA0KK2RjbF9p
bnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0K
K2RjbF9pbmRleGFibGVUZW1wIHgwWzZdLCA0DQorc2FtcGxlIHIwLnh5encsIHYxLnh5eHgsIHQw
Lnh5encsIHMwDQorbW92IHgwWzBdLngsIHIwLngNCittb3YgeDBbMV0ueCwgcjAueQ0KK21vdiB4
MFsyXS54LCByMC56DQorbW92IHgwWzNdLngsIHIwLncNCittb3YgeDBbNF0ueCwgbCgwKQ0KK21v
diB4MFs1XS54LCBsKDEuMDAwMDAwKQ0KK21vdiByMC54LCBjYjBbMF0ueA0KK21vdiBvMC54LCB4
MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueQ0KK21vdiBvMC55LCB4MFtyMC54ICsg
MF0ueA0KK21vdiByMC54LCBjYjBbMF0ueg0KK21vdiBvMC56LCB4MFtyMC54ICsgMF0ueA0KK21v
diByMC54LCBjYjBbMF0udw0KK21vdiBvMC53LCB4MFtyMC54ICsgMF0ueA0KK3JldCANCisvLyBB
cHByb3hpbWF0ZWx5IDE2IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25z
dCBCWVRFIGdfUFNfU3dpenpsZUYyRFtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2Nywg
MTg3LCAyMDQsIA0KKyAgICAxNjAsICAzOSwgMTk1LCAxNTgsIDI0NSwgIDcyLCANCisgICAgMTI1
LCAyNDksICA3MCwgMTQwLCAxNTgsIDE5OSwgDQorICAgIDI0NiwgMjIwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgOTYsICAgNCwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMCwgICAxLCAgIDAsICAgMCwgMTg4LCAg
IDEsIA0KKyAgICAgIDAsICAgMCwgMjQwLCAgIDEsICAgMCwgICAwLCANCisgICAgMjI4LCAgIDMs
ICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgNDAsICAgMSwgICAwLCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDE2NCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MywgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0K
KyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgMjQ0LCAgIDAsICAgMCwg
ICAwLCAxMjQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTMyLCAgIDAsICAgMCwgICAwLCAg
IDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQs
ICAgMCwgICAwLCAgIDAsIDI1NSwgMjU1LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDEzLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgMTQzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDgzLCAgOTcsIA0KKyAgICAxMDksIDExMiwgMTA4
LCAxMDEsIDExNCwgICAwLCANCisgICAgIDg0LCAxMDEsIDEyMCwgMTE2LCAxMTcsIDExNCwgDQor
ICAgIDEwMSwgIDcwLCAgNTAsICA2OCwgICAwLCAgODMsIA0KKyAgICAxMTksIDEwNSwgMTIyLCAx
MjIsIDEwOCwgMTAxLCANCisgICAgIDgwLCAxMTQsIDExMSwgMTEyLCAxMDEsIDExNCwgDQorICAg
IDExNiwgMTA1LCAxMDEsIDExNSwgICAwLCAxNzEsIA0KKyAgICAxNzEsIDE3MSwgMTQzLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxODgsICAgMCwgDQorICAgICAg
MCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsIDIxMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMjI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgODMsIDExOSwgMTA1LCAxMjIsIA0KKyAgICAxMjIsIDEwOCwgMTAxLCAgNzMsIDExMCwgMTAw
LCANCisgICAgMTA1LCAgOTksIDEwMSwgMTE1LCAgIDAsIDE3MSwgDQorICAgICAgMSwgICAwLCAg
MTksICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0LCAxMTEs
IDExNSwgMTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCANCisg
ICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAxMDAsIDEw
MSwgMTE0LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCANCisgICAg
MTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgDQorICAgICA0NiwgIDU3LCAgNTQsICA0OCwg
IDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisgICAgMTcx
LCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA2OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAg
MCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsIA0K
KyAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3Mywg
IDc5LCAgNzgsICAgMCwgDQorICAgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzksIA0KKyAg
ICAgODIsICA2OCwgICAwLCAxNzEsIDE3MSwgMTcxLCANCisgICAgIDc5LCAgODMsICA3MSwgIDc4
LCAgNDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDgsICAgMCwgICAwLCAgIDAsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDE1LCAgIDAsICAgMCwgICAwLCAgODMs
ICA4NiwgDQorICAgICA5NSwgIDg0LCAgNjUsICA4MiwgIDcxLCAgNjksIA0KKyAgICAgODQsICAg
MCwgMTcxLCAxNzEsICA4MywgIDcyLCANCisgICAgIDY4LCAgODIsIDIzNiwgICAxLCAgIDAsICAg
MCwgDQorICAgICA2NCwgICAwLCAgIDAsICAgMCwgMTIzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDg5LCAgIDAsICAgMCwgICA0LCANCisgICAgIDcwLCAxNDIsICAzMiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgOTAsICAgMCwgICAw
LCAgIDMsICAgMCwgIDk2LCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA4OCwgIDI0LCAgIDAsICAgNCwgICAwLCAxMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDg1LCAgODUsICAgMCwgICAwLCAgOTgsICAxNiwgDQorICAg
ICAgMCwgICAzLCAgNTAsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
IDEwMSwgICAwLCANCisgICAgICAwLCAgIDMsIDI0MiwgIDMyLCAgMTYsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgMTA0LCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAxLCAgIDAsICAg
MCwgICAwLCANCisgICAgMTA1LCAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICA2OSwg
ICAwLCANCisgICAgICAwLCAgIDksIDI0MiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDcwLCAxMjYsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICA5NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAN
CisgICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0
OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAyNiwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDIsICAgMCwgIDE2
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAg
IDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDU4LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MSwgIDY0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0K
KyAgICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgMTI4LCAgNjMsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgICAw
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAxMjgsIA0KKyAgICAg
MzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgDQorICAgICAgMCwgICA3LCAgMTgsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4LCANCisgICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDU0LCAgIDAsICAgMCwgICA2LCANCisgICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMjYsIDEyOCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNywg
DQorICAgICAzNCwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEw
LCAgNDgsICAzMiwgICA0LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAg
IDYsICAxOCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA0MiwgMTI4LCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA3LCAgNjYsICAzMiwgDQorICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICA0OCwgIDMyLCAgIDQsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAxNiwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTgsIDEyOCwgDQorICAgICAzMiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAw
LCANCisgICAgICAwLCAgIDcsIDEzMCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDEwLCAgNDgsIA0KKyAgICAgMzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIs
ICAgMCwgICAwLCAgIDEsIA0KKyAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNiwgICAwLCAgIDAsICAgMCwgIDEw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFk
ZXJzL2NvbXBpbGVkL3N3aXp6bGVmM2Rwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9zd2l6emxlZjNkcHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3
aXp6bGVmM2Rwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI2NSArMSwyNjUgQEAKLSNpZiAwCi0v
LwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4z
Ljk2MDAuMTYzODQKLS8vCi0vLwotLy8gQnVmZmVyIERlZmluaXRpb25zOiAKLS8vCi0vLyBjYnVm
ZmVyIFN3aXp6bGVQcm9wZXJ0aWVzCi0vLyB7Ci0vLwotLy8gICB1aW50NCBTd2l6emxlSW5kaWNl
czsgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAxNgotLy8KLS8vIH0KLS8v
Ci0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFNhbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8gVGV4dHVyZUYz
RCAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAzZCAgICAw
ICAgICAgICAxCi0vLyBTd2l6emxlUHJvcGVydGllcyAgICAgICAgICAgICAgICAgY2J1ZmZlciAg
ICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNp
Z25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04g
ICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0v
LyBTVl9SRU5ERVJUQVJHRVRBUlJBWUlOREVYICAgICAwICAgeCAgICAgICAgICAgMSAgUlRJTkRF
WCAgICB1aW50ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAg
ICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogCi0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1
cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5
c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0t
LS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAg
ICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeHl6dwotLy8KLXBz
XzRfMAotZGNsX2NvbnN0YW50YnVmZmVyIGNiMFsxXSwgaW1tZWRpYXRlSW5kZXhlZAotZGNsX3Nh
bXBsZXIgczAsIG1vZGVfZGVmYXVsdAotZGNsX3Jlc291cmNlX3RleHR1cmUzZCAoZmxvYXQsZmxv
YXQsZmxvYXQsZmxvYXQpIHQwCi1kY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5egotZGNsX291dHB1
dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotZGNsX2luZGV4YWJsZVRlbXAgeDBbNl0sIDQKLXNhbXBs
ZSByMC54eXp3LCB2Mi54eXp4LCB0MC54eXp3LCBzMAotbW92IHgwWzBdLngsIHIwLngKLW1vdiB4
MFsxXS54LCByMC55Ci1tb3YgeDBbMl0ueCwgcjAuegotbW92IHgwWzNdLngsIHIwLncKLW1vdiB4
MFs0XS54LCBsKDApCi1tb3YgeDBbNV0ueCwgbCgxLjAwMDAwMCkKLW1vdiByMC54LCBjYjBbMF0u
eAotbW92IG8wLngsIHgwW3IwLnggKyAwXS54Ci1tb3YgcjAueCwgY2IwWzBdLnkKLW1vdiBvMC55
LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngsIGNiMFswXS56Ci1tb3YgbzAueiwgeDBbcjAueCAr
IDBdLngKLW1vdiByMC54LCBjYjBbMF0udwotbW92IG8wLncsIHgwW3IwLnggKyAwXS54Ci1yZXQg
Ci0vLyBBcHByb3hpbWF0ZWx5IDE2IGluc3RydWN0aW9uIHNsb3RzIHVzZWQKLSNlbmRpZgotCi1j
b25zdCBCWVRFIGdfUFNfU3dpenpsZUYzRFtdID0KLXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcs
IDIzOCwgIDYwLCAKLSAgICAgODAsICA3NCwgIDQyLCAgNjUsIDEyMCwgMTY1LCAKLSAgICAxNzcs
ICA5MSwgMjUzLCAyMTYsICA4OSwgMTAyLCAKLSAgICAgIDIsIDIyOCwgICAxLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAxNDQsICAgNCwgICAwLCAgIDAsICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwg
IDUyLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDAsICAgMSwgICAwLCAgIDAsIDIzNiwgICAxLCAK
LSAgICAgIDAsICAgMCwgIDMyLCAgIDIsICAgMCwgICAwLCAKLSAgICAgMjAsICAgNCwgICAwLCAg
IDAsICA4MiwgIDY4LCAKLSAgICAgNjksICA3MCwgIDQwLCAgIDEsICAgMCwgICAwLCAKLSAgICAg
IDEsICAgMCwgICAwLCAgIDAsIDE2NCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAKLSAgICAyNTUsIDI1
NSwgICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAyNDQsICAgMCwgICAwLCAgIDAsIDEyNCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAxMzIsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAgIDAsIDI1NSwg
MjU1LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICAxMywgICAwLCAKLSAgICAgIDAsICAgMCwgMTQzLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA4
MywgIDk3LCAKLSAgICAxMDksIDExMiwgMTA4LCAxMDEsIDExNCwgICAwLCAKLSAgICAgODQsIDEw
MSwgMTIwLCAxMTYsIDExNywgMTE0LCAKLSAgICAxMDEsICA3MCwgIDUxLCAgNjgsICAgMCwgIDgz
LCAKLSAgICAxMTksIDEwNSwgMTIyLCAxMjIsIDEwOCwgMTAxLCAKLSAgICAgODAsIDExNCwgMTEx
LCAxMTIsIDEwMSwgMTE0LCAKLSAgICAxMTYsIDEwNSwgMTAxLCAxMTUsICAgMCwgMTcxLCAKLSAg
ICAxNzEsIDE3MSwgMTQzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAs
IDE4OCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgMjEyLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAyMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgIDgzLCAxMTksIDEwNSwgMTIyLCAKLSAgICAxMjIsIDEwOCwgMTAxLCAg
NzMsIDExMCwgMTAwLCAKLSAgICAxMDUsICA5OSwgMTAxLCAxMTUsICAgMCwgMTcxLCAKLSAgICAg
IDEsICAgMCwgIDE5LCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCAKLSAgICAgOTksIDEx
NCwgMTExLCAxMTUsIDExMSwgMTAyLCAKLSAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMy
LCAKLSAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAKLSAgICAxMDQsICA5NywgMTAw
LCAxMDEsIDExNCwgIDMyLCAKLSAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAKLSAg
ICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAKLSAgICAgNDYsICA1NywgIDU0LCAgNDgs
ICA0OCwgIDQ2LCAKLSAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAKLSAgICAxNzEs
IDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCAKLSAgICAxMjgsICAgMCwgICAwLCAgIDAsICAgMywg
ICAwLCAKLSAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgOTIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMTgsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA3
LCAgIDcsICAgMCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCAKLSAg
ICAgNzMsICA4NCwgIDczLCAgNzksICA3OCwgICAwLCAKLSAgICAgODMsICA4NiwgIDk1LCAgODIs
ICA2OSwgIDc4LCAKLSAgICAgNjgsICA2OSwgIDgyLCAgODQsICA2NSwgIDgyLCAKLSAgICAgNzEs
ICA2OSwgIDg0LCAgNjUsICA4MiwgIDgyLCAKLSAgICAgNjUsICA4OSwgIDczLCAgNzgsICA2OCwg
IDY5LCAKLSAgICAgODgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCAKLSAgICAgNzksICA3OSwg
IDgyLCAgNjgsICAgMCwgMTcxLCAKLSAgICAgNzksICA4MywgIDcxLCAgNzgsICA0NCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDgsICAgMCwgICAwLCAg
IDAsICAzMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgMTUsICAgMCwgICAwLCAgIDAsICA4MywgIDg2LCAKLSAgICAgOTUsICA4
NCwgIDY1LCAgODIsICA3MSwgIDY5LCAKLSAgICAgODQsICAgMCwgMTcxLCAxNzEsICA4MywgIDcy
LCAKLSAgICAgNjgsICA4MiwgMjM2LCAgIDEsICAgMCwgICAwLCAKLSAgICAgNjQsICAgMCwgICAw
LCAgIDAsIDEyMywgICAwLCAKLSAgICAgIDAsICAgMCwgIDg5LCAgIDAsICAgMCwgICA0LCAKLSAg
ICAgNzAsIDE0MiwgIDMyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgOTAsICAgMCwgICAwLCAgIDMsICAgMCwgIDk2LCAKLSAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgODgsICA0MCwgICAwLCAgIDQsICAgMCwg
MTEyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgODUsICA4NSwg
ICAwLCAgIDAsICA5OCwgIDE2LCAKLSAgICAgIDAsICAgMywgMTE0LCAgMTYsICAxNiwgICAwLCAK
LSAgICAgIDIsICAgMCwgICAwLCAgIDAsIDEwMSwgICAwLCAKLSAgICAgIDAsICAgMywgMjQyLCAg
MzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCAKLSAgICAg
IDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDUsICAgMCwgICAwLCAgIDQsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDQsICAg
MCwgICAwLCAgIDAsICA2OSwgICAwLCAKLSAgICAgIDAsICAgOSwgMjQyLCAgIDAsICAxNiwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDE4LCAKLSAgICAgMTYsICAgMCwgICAy
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsIDEyNiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgOTYsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICA1NCwgICAwLCAKLSAgICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAxNiwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNiwg
IDE4LCAgNDgsICAzMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAK
LSAgICAgIDAsICAgMCwgIDI2LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgIDQyLCAgIDAsICAx
NiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAg
NiwgIDE4LCAgNDgsICAzMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAw
LCAKLSAgICAgIDAsICAgMCwgIDU4LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgNjQs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAs
ICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNSwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwg
MTI4LCAgNjMsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAxNiwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgMTI4LCAKLSAgICAgMzIsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAg
IDAsICAgNywgIDE4LCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAx
MCwgIDQ4LCAKLSAgICAgMzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTAsICAg
MCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA2
LCAKLSAgICAgMTgsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDI2
LCAxMjgsICAzMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA3LCAKLSAgICAgMzQsICAzMiwgIDE2LCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDEwLCAgNDgsICAzMiwgICA0LCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAxMCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgICAwLCAKLSAgICAgMTYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNDIsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAg
IDcsICA2NiwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
MTAsICA0OCwgIDMyLCAgIDQsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAx
NiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAg
NiwgIDE4LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1OCwgMTI4
LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNywgMTMwLCAgMzIsICAxNiwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4LCAKLSAgICAgMzIsICAgNCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCAKLSAgICAgODMsICA4NCwgIDY1LCAgODQsIDExNiwg
ICAwLCAKLSAgICAgIDAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDYsICAgMCwgICAwLCAgIDAsICAx
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJh
dGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQN
CisvLw0KKy8vDQorLy8gQnVmZmVyIERlZmluaXRpb25zOiANCisvLw0KKy8vIGNidWZmZXIgU3dp
enpsZVByb3BlcnRpZXMNCisvLyB7DQorLy8NCisvLyAgIHVpbnQ0IFN3aXp6bGVJbmRpY2VzOyAg
ICAgICAgICAgICAgLy8gT2Zmc2V0OiAgICAwIFNpemU6ICAgIDE2DQorLy8NCisvLyB9DQorLy8N
CisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRz
DQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAt
LS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQorLy8gU2FtcGxlciAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNhbXBsZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8gVGV4
dHVyZUYzRCAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgIGZsb2F0NCAgICAgICAgICAz
ZCAgICAwICAgICAgICAxDQorLy8gU3dpenpsZVByb3BlcnRpZXMgICAgICAgICAgICAgICAgIGNi
dWZmZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8NCisvLw0KKy8vDQor
Ly8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQor
Ly8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAgUE9TICAg
ZmxvYXQgICAgICAgDQorLy8gU1ZfUkVOREVSVEFSR0VUQVJSQVlJTkRFWCAgICAgMCAgIHggICAg
ICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAg
ICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisvLw0KKy8v
DQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIElu
ZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0t
LQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdF
VCAgIGZsb2F0ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX2NvbnN0YW50YnVmZmVyIGNiMFsx
XSwgaW1tZWRpYXRlSW5kZXhlZA0KK2RjbF9zYW1wbGVyIHMwLCBtb2RlX2RlZmF1bHQNCitkY2xf
cmVzb3VyY2VfdGV4dHVyZTNkIChmbG9hdCxmbG9hdCxmbG9hdCxmbG9hdCkgdDANCitkY2xfaW5w
dXRfcHMgbGluZWFyIHYyLnh5eg0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQor
ZGNsX2luZGV4YWJsZVRlbXAgeDBbNl0sIDQNCitzYW1wbGUgcjAueHl6dywgdjIueHl6eCwgdDAu
eHl6dywgczANCittb3YgeDBbMF0ueCwgcjAueA0KK21vdiB4MFsxXS54LCByMC55DQorbW92IHgw
WzJdLngsIHIwLnoNCittb3YgeDBbM10ueCwgcjAudw0KK21vdiB4MFs0XS54LCBsKDApDQorbW92
IHgwWzVdLngsIGwoMS4wMDAwMDApDQorbW92IHIwLngsIGNiMFswXS54DQorbW92IG8wLngsIHgw
W3IwLnggKyAwXS54DQorbW92IHIwLngsIGNiMFswXS55DQorbW92IG8wLnksIHgwW3IwLnggKyAw
XS54DQorbW92IHIwLngsIGNiMFswXS56DQorbW92IG8wLnosIHgwW3IwLnggKyAwXS54DQorbW92
IHIwLngsIGNiMFswXS53DQorbW92IG8wLncsIHgwW3IwLnggKyAwXS54DQorcmV0IA0KKy8vIEFw
cHJveGltYXRlbHkgMTYgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KKyNlbmRpZg0KKw0KK2NvbnN0
IEJZVEUgZ19QU19Td2l6emxlRjNEW10gPQ0KK3sNCisgICAgIDY4LCAgODgsICA2NiwgIDY3LCAy
MzgsICA2MCwgDQorICAgICA4MCwgIDc0LCAgNDIsICA2NSwgMTIwLCAxNjUsIA0KKyAgICAxNzcs
ICA5MSwgMjUzLCAyMTYsICA4OSwgMTAyLCANCisgICAgICAyLCAyMjgsICAgMSwgICAwLCAgIDAs
ICAgMCwgDQorICAgIDE0NCwgICA0LCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgMTAwLCAgIDEsICAgMCwgICAwLCAyMzYsICAg
MSwgDQorICAgICAgMCwgICAwLCAgMzIsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgMjAsICAgNCwg
ICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAsICA0MCwgICAxLCAgIDAsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTY0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgDQor
ICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAyNDQsICAgMCwgICAwLCAg
IDAsIDEyNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMzIsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgOCwg
ICAwLCAgIDAsICAgMCwgMjU1LCAyNTUsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMTMsICAgMCwgDQorICAgICAgMCwgICAw
LCAxNDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgODMsICA5NywgDQorICAgIDEwOSwgMTEyLCAxMDgs
IDEwMSwgMTE0LCAgIDAsIA0KKyAgICAgODQsIDEwMSwgMTIwLCAxMTYsIDExNywgMTE0LCANCisg
ICAgMTAxLCAgNzAsICA1MSwgIDY4LCAgIDAsICA4MywgDQorICAgIDExOSwgMTA1LCAxMjIsIDEy
MiwgMTA4LCAxMDEsIA0KKyAgICAgODAsIDExNCwgMTExLCAxMTIsIDEwMSwgMTE0LCANCisgICAg
MTE2LCAxMDUsIDEwMSwgMTE1LCAgIDAsIDE3MSwgDQorICAgIDE3MSwgMTcxLCAxNDMsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDE4OCwgICAwLCANCisgICAgICAw
LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMjEyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAyMjgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICA4MywgMTE5LCAxMDUsIDEyMiwgDQorICAgIDEyMiwgMTA4LCAxMDEsICA3MywgMTEwLCAxMDAs
IA0KKyAgICAxMDUsICA5OSwgMTAxLCAxMTUsICAgMCwgMTcxLCANCisgICAgICAxLCAgIDAsICAx
OSwgICAwLCAgIDEsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3NywgMTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwg
MTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAg
ICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAx
LCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAx
MDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCANCisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAg
NDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEs
IDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisgICAgMTI4LCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDkyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgIDExOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDcsICAgNywgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODAs
ICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgDQorICAgICA4
MywgIDg2LCAgOTUsICA4MiwgIDY5LCAgNzgsIA0KKyAgICAgNjgsICA2OSwgIDgyLCAgODQsICA2
NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwgIDY1LCAgODIsICA4MiwgDQorICAgICA2NSwg
IDg5LCAgNzMsICA3OCwgIDY4LCAgNjksIA0KKyAgICAgODgsICAgMCwgIDg0LCAgNjksICA4OCwg
IDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4LCAgIDAsIDE3MSwgDQorICAgICA3OSwgIDgz
LCAgNzEsICA3OCwgIDQ0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCANCisgICAgICA4LCAgIDAsICAgMCwgICAwLCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAs
ICAgMCwgIDgzLCAgODYsIA0KKyAgICAgOTUsICA4NCwgIDY1LCAgODIsICA3MSwgIDY5LCANCisg
ICAgIDg0LCAgIDAsIDE3MSwgMTcxLCAgODMsICA3MiwgDQorICAgICA2OCwgIDgyLCAyMzYsICAg
MSwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwgICAwLCAgIDAsIDEyMywgICAwLCANCisgICAg
ICAwLCAgIDAsICA4OSwgICAwLCAgIDAsICAgNCwgDQorICAgICA3MCwgMTQyLCAgMzIsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDkw
LCAgIDAsICAgMCwgICAzLCAgIDAsICA5NiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgODgsICA0MCwgICAwLCAgIDQsICAgMCwgMTEyLCANCisgICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4NSwgIDg1LCAgIDAsICAgMCwgIDk4LCAg
MTYsIA0KKyAgICAgIDAsICAgMywgMTE0LCAgMTYsICAxNiwgICAwLCANCisgICAgICAyLCAgIDAs
ICAgMCwgICAwLCAxMDEsICAgMCwgDQorICAgICAgMCwgICAzLCAyNDIsICAzMiwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDEwNCwgICAwLCANCisgICAgICAwLCAgIDIsICAg
MSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNSwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwg
ICAwLCAgNjksICAgMCwgDQorICAgICAgMCwgICA5LCAyNDIsICAgMCwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgIDE4LCANCisgICAgIDE2LCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgDQorICAgICA3MCwgMTI2LCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgOTYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAg
NiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMjYsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQy
LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQor
ICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMywgICAwLCANCisgICAgICAwLCAgIDAsICA1OCwgICAwLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgIDE4LCAgNDgs
ICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1
NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgNjQsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsIDEyOCwgIDYzLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA2
LCAgMTgsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgMTI4
LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNywgIDE4LCAgMzIsICAxNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0OCwgDQorICAgICAzMiwgICA0LCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNiwgDQorICAgICAxOCwgICAwLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDI2LCAxMjgsICAzMiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwg
ICAwLCAgIDcsIA0KKyAgICAgMzQsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAxMCwgIDQ4LCAgMzIsICAgNCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEw
LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAg
IDAsICAgMCwgICA2LCAgMTgsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgNDIsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNywgIDY2LCAgMzIs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgNDgsICAz
MiwgICA0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwg
ICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU4LCAxMjgsIA0KKyAg
ICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNTQsICAgMCwgDQorICAgICAgMCwgICA3LCAxMzAsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4LCANCisgICAgIDMyLCAgIDQsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDYyLCAgIDAsICAgMCwgICAxLCANCisgICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDYsICAgMCwgICAw
LCAgIDAsICAxMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxlaTJkYXJyYXlwcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9zd2l6emxlaTJkYXJyYXlwcy5oCShyZXZpc2lvbiAxOTk2ODIpCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZWkyZGFycmF5cHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSwyODYgKzEsMjg2IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIEJ1ZmZlciBE
ZWZpbml0aW9uczogCi0vLwotLy8gY2J1ZmZlciBTd2l6emxlUHJvcGVydGllcwotLy8gewotLy8K
LS8vICAgdWludDQgU3dpenpsZUluZGljZXM7ICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgIDAg
U2l6ZTogICAgMTYKLS8vCi0vLyB9Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgotLy8K
LS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAg
ICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBUZXh0dXJl
STJEQXJyYXkgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0ICAgICAyZGFycmF5ICAg
IDAgICAgICAgIDEKLS8vIFN3aXp6bGVQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICBjYnVmZmVy
ICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5wdXQg
c2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdp
c3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0t
LS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJVElP
TiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAgICAK
LS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElO
REVYICAgIHVpbnQgICB4ICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5eiAg
ICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAKLS8vCi0vLwotLy8gT3V0cHV0IHNpZ25h
dHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIg
U3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAgICAg
ICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4eXp3Ci0vLwot
cHNfNF8wCi1kY2xfY29uc3RhbnRidWZmZXIgY2IwWzFdLCBpbW1lZGlhdGVJbmRleGVkCi1kY2xf
cmVzb3VyY2VfdGV4dHVyZTJkYXJyYXkgKHNpbnQsc2ludCxzaW50LHNpbnQpIHQwCi1kY2xfaW5w
dXRfcHNfc2l2IGNvbnN0YW50IHYxLngsIHJlbmRlcnRhcmdldF9hcnJheV9pbmRleAotZGNsX2lu
cHV0X3BzIGxpbmVhciB2Mi54eQotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQotZGNs
X2luZGV4YWJsZVRlbXAgeDBbNl0sIDQKLXJlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54
eXp3Ci11dG9mIHIwLnh5LCByMC54eXh4Ci1tdWwgcjAueHksIHIwLnh5eHgsIHYyLnh5eHgKLWZ0
b2kgcjAueHksIHIwLnh5eHgKLW1vdiByMC56LCB2MS54Ci1tb3YgcjAudywgbCgwKQotbGQgcjAu
eHl6dywgcjAueHl6dywgdDAueHl6dwotbW92IHgwWzBdLngsIHIwLngKLW1vdiB4MFsxXS54LCBy
MC55Ci1tb3YgeDBbMl0ueCwgcjAuegotbW92IHgwWzNdLngsIHIwLncKLW1vdiB4MFs0XS54LCBs
KDApCi1tb3YgeDBbNV0ueCwgbCgxKQotbW92IHIwLngsIGNiMFswXS54Ci1tb3YgbzAueCwgeDBb
cjAueCArIDBdLngKLW1vdiByMC54LCBjYjBbMF0ueQotbW92IG8wLnksIHgwW3IwLnggKyAwXS54
Ci1tb3YgcjAueCwgY2IwWzBdLnoKLW1vdiBvMC56LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngs
IGNiMFswXS53Ci1tb3YgbzAudywgeDBbcjAueCArIDBdLngKLXJldCAKLS8vIEFwcHJveGltYXRl
bHkgMjIgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19T
d2l6emxlSTJEQXJyYXlbXSA9Ci17Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgODUsICA2MSwg
Ci0gICAgIDYwLCAgMzYsICAzMywgMjQ1LCAgNTgsIDExMywgCi0gICAgMjM4LCAyMjcsIDIzMCwg
MjAwLCAxMzYsIDIyNywgCi0gICAgIDM2LCAxOTMsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAg
MjQwLCAgIDQsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDY0LCAgIDEsICAgMCwgICAwLCAyMDAsICAgMSwgCi0gICAgICAwLCAg
IDAsIDI1MiwgICAxLCAgIDAsICAgMCwgCi0gICAgMTE2LCAgIDQsICAgMCwgICAwLCAgODIsICA2
OCwgCi0gICAgIDY5LCAgNzAsICAgNCwgICAxLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAg
MCwgICAwLCAxMjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAx
LCAgIDAsICAgMCwgCi0gICAgMjA4LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDUs
ICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwg
Ci0gICAgMTA4LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgCi0gICAgICAwLCAgIDAsICA4NCwgMTAxLCAxMjAsIDExNiwgCi0gICAgMTE3LCAx
MTQsIDEwMSwgIDczLCAgNTAsICA2OCwgCi0gICAgIDY1LCAxMTQsIDExNCwgIDk3LCAxMjEsICAg
MCwgCi0gICAgIDgzLCAxMTksIDEwNSwgMTIyLCAxMjIsIDEwOCwgCi0gICAgMTAxLCAgODAsIDEx
NCwgMTExLCAxMTIsIDEwMSwgCi0gICAgMTE0LCAxMTYsIDEwNSwgMTAxLCAxMTUsICAgMCwgCi0g
ICAgMTcxLCAxNzEsIDEwOCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAw
LCAxNTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDE3NiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgMTkyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA4MywgMTE5LCAxMDUsIDEyMiwgCi0gICAgMTIyLCAxMDgsIDEwMSwg
IDczLCAxMTAsIDEwMCwgCi0gICAgMTA1LCAgOTksIDEwMSwgMTE1LCAgIDAsIDE3MSwgCi0gICAg
ICAxLCAgIDAsICAxOSwgICAwLCAgIDEsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzcsIDEwNSwgCi0gICAgIDk5LCAx
MTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgCi0gICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAz
MiwgCi0gICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgCi0gICAgMTA0LCAgOTcsIDEw
MCwgMTAxLCAxMTQsICAzMiwgCi0gICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgCi0g
ICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAgNTcsICA1NCwgIDQ4
LCAgNDgsICA0NiwgCi0gICAgIDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgCi0gICAgMTcx
LCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgCi0gICAgMTI4LCAgIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDkyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAxLCAgIDAsICAgMCwgCi0gICAgMTE4LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
NywgICAzLCAgIDAsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDgwLCAgNzksICA4MywgCi0g
ICAgIDczLCAgODQsICA3MywgIDc5LCAgNzgsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDgy
LCAgNjksICA3OCwgCi0gICAgIDY4LCAgNjksICA4MiwgIDg0LCAgNjUsICA4MiwgCi0gICAgIDcx
LCAgNjksICA4NCwgIDY1LCAgODIsICA4MiwgCi0gICAgIDY1LCAgODksICA3MywgIDc4LCAgNjgs
ICA2OSwgCi0gICAgIDg4LCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgCi0gICAgIDc5LCAgNzks
ICA4MiwgIDY4LCAgIDAsIDE3MSwgCi0gICAgIDc5LCAgODMsICA3MSwgIDc4LCAgNDQsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwg
ICAwLCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDE1LCAgIDAsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAg
ODQsICA2NSwgIDgyLCAgNzEsICA2OSwgCi0gICAgIDg0LCAgIDAsIDE3MSwgMTcxLCAgODMsICA3
MiwgCi0gICAgIDY4LCAgODIsIDExMiwgICAyLCAgIDAsICAgMCwgCi0gICAgIDY0LCAgIDAsICAg
MCwgICAwLCAxNTYsICAgMCwgCi0gICAgICAwLCAgIDAsICA4OSwgICAwLCAgIDAsICAgNCwgCi0g
ICAgIDcwLCAxNDIsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDg4LCAgNjQsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDUxLCAgNTEsICAgMCwgICAwLCAxMDAs
ICAgOCwgCi0gICAgICAwLCAgIDQsICAxOCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywg
Ci0gICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsIDEwMSwg
ICAwLCAgIDAsICAgMywgCi0gICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAx
MDUsICAgMCwgCi0gICAgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA2LCAg
IDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MSwgIDE2LCAgIDAsICAg
NywgCi0gICAgMjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MSwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0g
ICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg2LCAgIDAsICAgMCwgICA1
LCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcw
LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAs
ICAgNywgCi0gICAgIDUwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA3MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwg
Ci0gICAgIDE2LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI3LCAgIDAsICAgMCwg
ICA1LCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAg
IDAsICAgNSwgCi0gICAgIDY2LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAxMCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAg
MCwgCi0gICAgICAwLCAgIDUsIDEzMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDEsICA2NCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDQ1LCAgIDAsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDcwLCAgMTQsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQs
ICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwg
IDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAyNiwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICA0MiwgICAwLCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAx
OCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA1OCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYs
ICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgMTAsIDEyOCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAg
IDcsICAxOCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0
OCwgCi0gICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNiwgCi0g
ICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAyNiwgMTI4
LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICA1NCwgICAwLCAgIDAsICAgNywgCi0gICAgIDM0LCAgMzIsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgIDQ4LCAgMzIsICAgNCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgMTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDQyLCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA3LCAg
NjYsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAg
NDgsICAzMiwgICA0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAx
OCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTgsIDEyOCwgCi0g
ICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDcsIDEzMCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgMTAsICA0OCwgCi0gICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICA2MiwgICAwLCAgIDAsICAgMSwgCi0gICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAyMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA2LCAgIDAsICAgMCwgICAwLCAgMTAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICA2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBi
eSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8N
CisvLw0KKy8vIEJ1ZmZlciBEZWZpbml0aW9uczogDQorLy8NCisvLyBjYnVmZmVyIFN3aXp6bGVQ
cm9wZXJ0aWVzDQorLy8gew0KKy8vDQorLy8gICB1aW50NCBTd2l6emxlSW5kaWNlczsgICAgICAg
ICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAxNg0KKy8vDQorLy8gfQ0KKy8vDQorLy8N
CisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0t
LS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFRleHR1cmVJMkRBcnJheSAgICAgICAgICAgICAgICAg
ICB0ZXh0dXJlICAgc2ludDQgICAgIDJkYXJyYXkgICAgMCAgICAgICAgMQ0KKy8vIFN3aXp6bGVQ
cm9wZXJ0aWVzICAgICAgICAgICAgICAgICBjYnVmZmVyICAgICAgTkEgICAgICAgICAgTkEgICAg
MCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8v
IE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9y
bWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0t
LSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAw
ICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFNWX1JFTkRFUlRB
UkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICB4
ICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAyICAgICBO
T05FICAgZmxvYXQgICB4eSAgDQorLy8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUg
IEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAg
ICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAgIGludCAgIHh5encNCisvLw0KK3BzXzRf
MA0KK2RjbF9jb25zdGFudGJ1ZmZlciBjYjBbMV0sIGltbWVkaWF0ZUluZGV4ZWQNCitkY2xfcmVz
b3VyY2VfdGV4dHVyZTJkYXJyYXkgKHNpbnQsc2ludCxzaW50LHNpbnQpIHQwDQorZGNsX2lucHV0
X3BzX3NpdiBjb25zdGFudCB2MS54LCByZW5kZXJ0YXJnZXRfYXJyYXlfaW5kZXgNCitkY2xfaW5w
dXRfcHMgbGluZWFyIHYyLnh5DQorZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCitk
Y2xfaW5kZXhhYmxlVGVtcCB4MFs2XSwgNA0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0
MC54eXp3DQordXRvZiByMC54eSwgcjAueHl4eA0KK211bCByMC54eSwgcjAueHl4eCwgdjIueHl4
eA0KK2Z0b2kgcjAueHksIHIwLnh5eHgNCittb3YgcjAueiwgdjEueA0KK21vdiByMC53LCBsKDAp
DQorbGQgcjAueHl6dywgcjAueHl6dywgdDAueHl6dw0KK21vdiB4MFswXS54LCByMC54DQorbW92
IHgwWzFdLngsIHIwLnkNCittb3YgeDBbMl0ueCwgcjAueg0KK21vdiB4MFszXS54LCByMC53DQor
bW92IHgwWzRdLngsIGwoMCkNCittb3YgeDBbNV0ueCwgbCgxKQ0KK21vdiByMC54LCBjYjBbMF0u
eA0KK21vdiBvMC54LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueQ0KK21vdiBv
MC55LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueg0KK21vdiBvMC56LCB4MFty
MC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0udw0KK21vdiBvMC53LCB4MFtyMC54ICsgMF0u
eA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDIyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisj
ZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfU3dpenpsZUkyREFycmF5W10gPQ0KK3sNCisgICAg
IDY4LCAgODgsICA2NiwgIDY3LCAgODUsICA2MSwgDQorICAgICA2MCwgIDM2LCAgMzMsIDI0NSwg
IDU4LCAxMTMsIA0KKyAgICAyMzgsIDIyNywgMjMwLCAyMDAsIDEzNiwgMjI3LCANCisgICAgIDM2
LCAxOTMsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDI0MCwgICA0LCAgIDAsICAgMCwgICA1
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDY0LCAg
IDEsICAgMCwgICAwLCAyMDAsICAgMSwgDQorICAgICAgMCwgICAwLCAyNTIsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAxMTYsICAgNCwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAs
ICAgNCwgICAxLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0K
KyAgICAyMDgsICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICA1LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAx
MDgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIA0KKyAgICAxMTcsIDEx
NCwgMTAxLCAgNzMsICA1MCwgIDY4LCANCisgICAgIDY1LCAxMTQsIDExNCwgIDk3LCAxMjEsICAg
MCwgDQorICAgICA4MywgMTE5LCAxMDUsIDEyMiwgMTIyLCAxMDgsIA0KKyAgICAxMDEsICA4MCwg
MTE0LCAxMTEsIDExMiwgMTAxLCANCisgICAgMTE0LCAxMTYsIDEwNSwgMTAxLCAxMTUsICAgMCwg
DQorICAgIDE3MSwgMTcxLCAxMDgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsIDE1MiwgICAwLCANCisgICAgICAwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTc2LCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxOTIsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA4MywgMTE5LCAxMDUsIDEyMiwgDQorICAgIDEy
MiwgMTA4LCAxMDEsICA3MywgMTEwLCAxMDAsIA0KKyAgICAxMDUsICA5OSwgMTAxLCAxMTUsICAg
MCwgMTcxLCANCisgICAgICAxLCAgIDAsICAxOSwgICAwLCAgIDEsICAgMCwgDQorICAgICAgNCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3Nywg
MTA1LCANCisgICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgDQorICAgIDExNiwgIDMy
LCAgNDAsICA4MiwgIDQxLCAgMzIsIA0KKyAgICAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgz
LCANCisgICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgDQorICAgICA2NywgMTExLCAx
MDksIDExMiwgMTA1LCAxMDgsIA0KKyAgICAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAN
CisgICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgDQorICAgICA0OSwgIDU0LCAgNTEs
ICA1NiwgIDUyLCAgIDAsIA0KKyAgICAxNzEsIDE3MSwgIDczLCAgODMsICA3MSwgIDc4LCANCisg
ICAgMTI4LCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDgsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgODAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCANCisgICAgIDky
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAxLCAgIDAsICAgMCwgDQorICAgIDExOCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAs
ICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDcsICAgMywgICAwLCAgIDAs
IA0KKyAgICAgODMsICA4NiwgIDk1LCAgODAsICA3OSwgIDgzLCANCisgICAgIDczLCAgODQsICA3
MywgIDc5LCAgNzgsICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4MiwgIDY5LCAgNzgsIA0K
KyAgICAgNjgsICA2OSwgIDgyLCAgODQsICA2NSwgIDgyLCANCisgICAgIDcxLCAgNjksICA4NCwg
IDY1LCAgODIsICA4MiwgDQorICAgICA2NSwgIDg5LCAgNzMsICA3OCwgIDY4LCAgNjksIA0KKyAg
ICAgODgsICAgMCwgIDg0LCAgNjksICA4OCwgIDY3LCANCisgICAgIDc5LCAgNzksICA4MiwgIDY4
LCAgIDAsIDE3MSwgDQorICAgICA3OSwgIDgzLCAgNzEsICA3OCwgIDQ0LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICA4LCAgIDAsICAgMCwgICAwLCAg
MzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAxNSwgICAwLCAgIDAsICAgMCwgIDgzLCAgODYsIA0KKyAgICAgOTUsICA4
NCwgIDY1LCAgODIsICA3MSwgIDY5LCANCisgICAgIDg0LCAgIDAsIDE3MSwgMTcxLCAgODMsICA3
MiwgDQorICAgICA2OCwgIDgyLCAxMTIsICAgMiwgICAwLCAgIDAsIA0KKyAgICAgNjQsICAgMCwg
ICAwLCAgIDAsIDE1NiwgICAwLCANCisgICAgICAwLCAgIDAsICA4OSwgICAwLCAgIDAsICAgNCwg
DQorICAgICA3MCwgMTQyLCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDg4LCAgNjQsICAgMCwgICA0LCAgIDAsIDExMiwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTEsICA1MSwgICAwLCAg
IDAsIDEwMCwgICA4LCANCisgICAgICAwLCAgIDQsICAxOCwgIDE2LCAgMTYsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDk4LCAgMTYs
ICAgMCwgICAzLCANCisgICAgIDUwLCAgMTYsICAxNiwgICAwLCAgIDIsICAgMCwgDQorICAgICAg
MCwgICAwLCAxMDEsICAgMCwgICAwLCAgIDMsIA0KKyAgICAyNDIsICAzMiwgIDE2LCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsIDEwNCwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwg
ICAwLCAgIDAsICAgMCwgMTA1LCAgIDAsIA0KKyAgICAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNjEsICAxNiwgICAwLCAgIDcsIA0KKyAgICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDg2LCAgIDAsICAgMCwgICA1LCAgNTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgNywgDQorICAgICA1MCwgICAwLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAgIDAsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgDQorICAgICAxNiwgICAwLCAgIDIsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgMjcsICAgMCwgICAwLCAgIDUsICA1MCwgICAwLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3MCwgICAwLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA1LCANCisgICAgIDY2LCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICAxNiwgIDE2LCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDUs
IDEzMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDQ1LCAgIDAsICAg
MCwgICA3LCAyNDIsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNzAsICAxNCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwg
MTI2LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAg
ICAgIDAsICAgNiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4LCAg
MzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgIDI2LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQs
ICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICA0MiwgICAwLCAgMTYsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwg
IDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwg
DQorICAgICAgMCwgICAwLCAgNTgsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAg
NjQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAg
ICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgDQorICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAx
NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsIDEyOCwgDQorICAgICAzMiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwg
ICAwLCANCisgICAgICAwLCAgIDcsICAxOCwgIDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDEwLCAgNDgsIA0KKyAgICAgMzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
NTQsICAgMCwgICAwLCAgIDYsIA0KKyAgICAgMTgsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAyNiwgMTI4LCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA3LCANCisg
ICAgIDM0LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICA0
OCwgIDMyLCAgIDQsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgICAwLCANCisgICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNiwg
IDE4LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDQy
LCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDcsICA2NiwgIDMyLCANCisgICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgIDQ4LCAgMzIsICAgNCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICAgMCwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1OCwgMTI4LCANCisgICAgIDMyLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0K
KyAgICAgIDAsICAgNywgMTMwLCAgMzIsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgMTAsICA0OCwgDQorICAgICAzMiwgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA2MiwgICAw
LCAgIDAsICAgMSwgDQorICAgICA4MywgIDg0LCAgNjUsICA4NCwgMTE2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDIyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgMTAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICA2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMv
Y29tcGlsZWQvc3dpenpsZWkyZHBzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3
aXp6bGVpMmRwcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenps
ZWkyZHBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMjcwICsxLDI3MCBAQAotI2lmIDAKLS8vCi0v
LyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYw
MC4xNjM4NAotLy8KLS8vCi0vLyBCdWZmZXIgRGVmaW5pdGlvbnM6IAotLy8KLS8vIGNidWZmZXIg
U3dpenpsZVByb3BlcnRpZXMKLS8vIHsKLS8vCi0vLyAgIHVpbnQ0IFN3aXp6bGVJbmRpY2VzOyAg
ICAgICAgICAgICAgLy8gT2Zmc2V0OiAgICAwIFNpemU6ICAgIDE2Ci0vLwotLy8gfQotLy8KLS8v
Ci0vLyBSZXNvdXJjZSBCaW5kaW5nczoKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAgICAgICAgRGltIFNsb3QgRWxlbWVudHMKLS8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0t
LS0gLS0tLSAtLS0tLS0tLQotLy8gVGV4dHVyZUkyRCAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmUgICBzaW50NCAgICAgICAgICAyZCAgICAwICAgICAgICAxCi0vLyBTd2l6emxlUHJvcGVy
dGllcyAgICAgICAgICAgICAgICAgY2J1ZmZlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAg
ICAgIDEKLS8vCi0vLwotLy8KLS8vIElucHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAg
ICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAt
LS0tLS0tIC0tLS0tLQotLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAg
MCAgIHh5ICAgICAgICAgIDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICAKLS8vCi0vLwotLy8gT3V0
cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sg
UmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
IC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFS
R0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBpbnQgICB4
eXp3Ci0vLwotcHNfNF8wCi1kY2xfY29uc3RhbnRidWZmZXIgY2IwWzFdLCBpbW1lZGlhdGVJbmRl
eGVkCi1kY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChzaW50LHNpbnQsc2ludCxzaW50KSB0MAotZGNs
X2lucHV0X3BzIGxpbmVhciB2MS54eQotZGNsX291dHB1dCBvMC54eXp3Ci1kY2xfdGVtcHMgMQot
ZGNsX2luZGV4YWJsZVRlbXAgeDBbNl0sIDQKLXJlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0
MC54eXp3Ci11dG9mIHIwLnh5LCByMC54eXh4Ci1tdWwgcjAueHksIHIwLnh5eHgsIHYxLnh5eHgK
LWZ0b2kgcjAueHksIHIwLnh5eHgKLW1vdiByMC56dywgbCgwLDAsMCwwKQotbGQgcjAueHl6dywg
cjAueHl6dywgdDAueHl6dwotbW92IHgwWzBdLngsIHIwLngKLW1vdiB4MFsxXS54LCByMC55Ci1t
b3YgeDBbMl0ueCwgcjAuegotbW92IHgwWzNdLngsIHIwLncKLW1vdiB4MFs0XS54LCBsKDApCi1t
b3YgeDBbNV0ueCwgbCgxKQotbW92IHIwLngsIGNiMFswXS54Ci1tb3YgbzAueCwgeDBbcjAueCAr
IDBdLngKLW1vdiByMC54LCBjYjBbMF0ueQotbW92IG8wLnksIHgwW3IwLnggKyAwXS54Ci1tb3Yg
cjAueCwgY2IwWzBdLnoKLW1vdiBvMC56LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngsIGNiMFsw
XS53Ci1tb3YgbzAudywgeDBbcjAueCArIDBdLngKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgMjEg
aW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19Td2l6emxl
STJEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgMTgwLCAgMzcsIAotICAgICA1NCwg
IDE5LCAgMzksIDEzNCwgMTg1LCAyMzAsIAotICAgIDIzNCwgIDgyLCAxMTMsIDEyOSwgIDY5LCAx
MzUsIAotICAgIDE0MCwgIDI3LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDE2NCwgICA0LCAg
IDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIAot
ICAgICA2MCwgICAxLCAgIDAsICAgMCwgMTQ4LCAgIDEsIAotICAgICAgMCwgICAwLCAyMDAsICAg
MSwgICAwLCAgIDAsIAotICAgICA0MCwgICA0LCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAgICA2
OSwgIDcwLCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTI0
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAs
IAotICAgIDIwNCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAg
ICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMywg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIAotICAgIDExNywgMTE0LCAxMDEsICA3
MywgIDUwLCAgNjgsIAotICAgICAgMCwgIDgzLCAxMTksIDEwNSwgMTIyLCAxMjIsIAotICAgIDEw
OCwgMTAxLCAgODAsIDExNCwgMTExLCAxMTIsIAotICAgIDEwMSwgMTE0LCAxMTYsIDEwNSwgMTAx
LCAxMTUsIAotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgMTAzLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDE0OCwgICAwLCAgIDAsICAgMCwgIDE2LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgMTcyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAxODgsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDgzLCAxMTksIAotICAgIDEwNSwg
MTIyLCAxMjIsIDEwOCwgMTAxLCAgNzMsIAotICAgIDExMCwgMTAwLCAxMDUsICA5OSwgMTAxLCAx
MTUsIAotICAgICAgMCwgMTcxLCAgIDEsICAgMCwgIDE5LCAgIDAsIAotICAgICAgMSwgICAwLCAg
IDQsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIAotICAgIDExMSwgMTAyLCAxMTYsICAz
MiwgIDQwLCAgODIsIAotICAgICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsIAotICAgICAz
MiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIAotICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5
LCAxMTIsIAotICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTQsIAotICAgICA0NiwgIDUx
LCAgNDYsICA1NywgIDU0LCAgNDgsIAotICAgICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYs
IAotICAgICA1MiwgICAwLCAxNzEsIDE3MSwgIDczLCAgODMsIAotICAgICA3MSwgIDc4LCAgODAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgNTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsIAot
ICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAsIAotICAgICA3OSwgIDgzLCAgNzMsICA4
NCwgIDczLCAgNzksIAotICAgICA3OCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIAotICAgICA3
OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIAotICAgIDE3MSwgMTcxLCAgNzksICA4MywgIDcx
LCAgNzgsIAotICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAsIAotICAg
ICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIAotICAgICA3MSwgIDY5LCAgODQsICAgMCwg
MTcxLCAxNzEsIAotICAgICA4MywgIDcyLCAgNjgsICA4MiwgIDg4LCAgIDIsIAotICAgICAgMCwg
ICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIAotICAgIDE1MCwgICAwLCAgIDAsICAgMCwgIDg5LCAg
IDAsIAotICAgICAgMCwgICA0LCAgNzAsIDE0MiwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgODgsICAyNCwgICAwLCAgIDQsIAot
ICAgICAgMCwgMTEyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTEsICA1
MSwgICAwLCAgIDAsIAotICAgICA5OCwgIDE2LCAgIDAsICAgMywgIDUwLCAgMTYsIAotICAgICAx
NiwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQy
LCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwNCwgICAw
LCAgIDAsICAgMiwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAxMDUsICAgMCwgICAwLCAgIDQs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDQs
ICAgMCwgICAwLCAgIDAsIAotICAgICA2MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0LCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDg2LCAgIDAsIAotICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIAotICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgNywgIDUwLCAgIDAsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgICAwLCAgMTYsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxNiwgIDE2LCAgIDAsIAotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDI3LCAgIDAsIAotICAgICAgMCwgICA1LCAgNTAsICAgMCwgIDE2
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgOCwgMTk0LCAgIDAs
IAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgIDY0LCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDUsICAgMCwg
ICAwLCAgIDcsIAotICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgNzAsICAxNCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAx
MjYsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAg
IDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAz
MiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI2
LCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAw
LCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDQyLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAg
ICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwg
IDU4LCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwg
ICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAot
ICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAg
MCwgICAxLCAgNjQsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1
NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAxMCwgMTI4LCAgMzIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNywgIDE4LCAgMzIs
IAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgIDQ4LCAgMzIs
ICAgNCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICAgMCwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDI2LCAxMjgsIAotICAgICAzMiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAg
IDAsIAotICAgICAgMCwgICA3LCAgMzQsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDEwLCAgNDgsIAotICAgICAzMiwgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAg
MCwgICAwLCAgIDYsIAotICAgICAxOCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgNDIsIDEyOCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDcsIAotICAgICA2NiwgIDMy
LCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICA0OCwgIDMyLCAgIDQs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgIDAsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1OCwgMTI4LCAgMzIsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwg
ICAwLCAgIDAsICAgNywgMTMwLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICAxMCwgIDQ4LCAgMzIsICAgNCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
MTAsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIAot
ICAgICAgMCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIAotICAgIDExNiwgICAwLCAgIDAsICAg
MCwgIDIxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAo
UikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gQnVm
ZmVyIERlZmluaXRpb25zOiANCisvLw0KKy8vIGNidWZmZXIgU3dpenpsZVByb3BlcnRpZXMNCisv
LyB7DQorLy8NCisvLyAgIHVpbnQ0IFN3aXp6bGVJbmRpY2VzOyAgICAgICAgICAgICAgLy8gT2Zm
c2V0OiAgICAwIFNpemU6ICAgIDE2DQorLy8NCisvLyB9DQorLy8NCisvLw0KKy8vIFJlc291cmNl
IEJpbmRpbmdzOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0t
LS0tLS0tDQorLy8gVGV4dHVyZUkyRCAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgICBz
aW50NCAgICAgICAgICAyZCAgICAwICAgICAgICAxDQorLy8gU3dpenpsZVByb3BlcnRpZXMgICAg
ICAgICAgICAgICAgIGNidWZmZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQor
Ly8NCisvLw0KKy8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAg
ICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0t
LS0tLS0gLS0tLS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAg
ICAwICAgICAgUE9TICAgZmxvYXQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAg
IDAgICB4eSAgICAgICAgICAxICAgICBOT05FICAgZmxvYXQgICB4eSAgDQorLy8NCisvLw0KKy8v
IE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisv
LyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAg
IGludCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9jb25zdGFudGJ1ZmZlciBjYjBbMV0sIGlt
bWVkaWF0ZUluZGV4ZWQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkIChzaW50LHNpbnQsc2ludCxz
aW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjEueHkNCitkY2xfb3V0cHV0IG8wLnh5encN
CitkY2xfdGVtcHMgMQ0KK2RjbF9pbmRleGFibGVUZW1wIHgwWzZdLCA0DQorcmVzaW5mb191aW50
IHIwLnh5encsIGwoMCksIHQwLnh5encNCit1dG9mIHIwLnh5LCByMC54eXh4DQorbXVsIHIwLnh5
LCByMC54eXh4LCB2MS54eXh4DQorZnRvaSByMC54eSwgcjAueHl4eA0KK21vdiByMC56dywgbCgw
LDAsMCwwKQ0KK2xkIHIwLnh5encsIHIwLnh5encsIHQwLnh5encNCittb3YgeDBbMF0ueCwgcjAu
eA0KK21vdiB4MFsxXS54LCByMC55DQorbW92IHgwWzJdLngsIHIwLnoNCittb3YgeDBbM10ueCwg
cjAudw0KK21vdiB4MFs0XS54LCBsKDApDQorbW92IHgwWzVdLngsIGwoMSkNCittb3YgcjAueCwg
Y2IwWzBdLngNCittb3YgbzAueCwgeDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLnkN
Cittb3YgbzAueSwgeDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLnoNCittb3YgbzAu
eiwgeDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLncNCittb3YgbzAudywgeDBbcjAu
eCArIDBdLngNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAyMSBpbnN0cnVjdGlvbiBzbG90cyB1
c2VkDQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1N3aXp6bGVJMkRbXSA9DQorew0KKyAg
ICAgNjgsICA4OCwgIDY2LCAgNjcsIDE4MCwgIDM3LCANCisgICAgIDU0LCAgMTksICAzOSwgMTM0
LCAxODUsIDIzMCwgDQorICAgIDIzNCwgIDgyLCAxMTMsIDEyOSwgIDY5LCAxMzUsIA0KKyAgICAx
NDAsICAyNywgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTY0LCAgIDQsICAgMCwgICAwLCAg
IDUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjAs
ICAgMSwgICAwLCAgIDAsIDE0OCwgICAxLCANCisgICAgICAwLCAgIDAsIDIwMCwgICAxLCAgIDAs
ICAgMCwgDQorICAgICA0MCwgICA0LCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3
MCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMjQsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwg
ICAwLCAgIDAsICAgMCwgICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwg
DQorICAgIDIwNCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAy
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQor
ICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAg
IDEwMywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCANCisgICAgICAwLCAgIDAsICA4NCwgMTAxLCAxMjAsIDExNiwgDQorICAgIDExNywg
MTE0LCAxMDEsICA3MywgIDUwLCAgNjgsIA0KKyAgICAgIDAsICA4MywgMTE5LCAxMDUsIDEyMiwg
MTIyLCANCisgICAgMTA4LCAxMDEsICA4MCwgMTE0LCAxMTEsIDExMiwgDQorICAgIDEwMSwgMTE0
LCAxMTYsIDEwNSwgMTAxLCAxMTUsIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsIDEwMywgICAw
LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0OCwgICAwLCAg
IDAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAxNzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisg
ICAgICAwLCAgIDAsIDE4OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDgzLCAxMTksIA0KKyAgICAxMDUsIDEyMiwgMTIyLCAxMDgsIDEwMSwgIDczLCANCisgICAg
MTEwLCAxMDAsIDEwNSwgIDk5LCAxMDEsIDExNSwgDQorICAgICAgMCwgMTcxLCAgIDEsICAgMCwg
IDE5LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA3NywgMTA1LCAgOTksIDExNCwgMTEx
LCAxMTUsIA0KKyAgICAxMTEsIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCANCisgICAgIDQxLCAg
MzIsICA3MiwgIDc2LCAgODMsICA3NiwgDQorICAgICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAx
MDEsIA0KKyAgICAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCANCisgICAgMTA1LCAxMDgs
IDEwMSwgMTE0LCAgMzIsICA1NCwgDQorICAgICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgs
IA0KKyAgICAgNDgsICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCANCisgICAgIDUyLCAgIDAsIDE3
MSwgMTcxLCAgNzMsICA4MywgDQorICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICA1Niwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgMTUsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsIA0KKyAgICAgIDAs
ICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMs
ICA3OSwgDQorICAgICA3OCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIA0KKyAgICAgNzksICA3
OSwgIDgyLCAgNjgsICAgMCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3
OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAg
IDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAgODgsICAgMiwgDQorICAg
ICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNTAsICAgMCwgICAwLCAgIDAs
ICA4OSwgICAwLCANCisgICAgICAwLCAgIDQsICA3MCwgMTQyLCAgMzIsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDg4LCAgMjQsICAg
MCwgICA0LCANCisgICAgICAwLCAxMTIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgNTEsICA1MSwgICAwLCAgIDAsIA0KKyAgICAgOTgsICAxNiwgICAwLCAgIDMsICA1MCwg
IDE2LCANCisgICAgIDE2LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAw
LCAgIDAsICAgMywgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTA0LCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAx
MDUsICAgMCwgICAwLCAgIDQsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwgIDE2LCAgIDAs
ICAgNywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEy
NiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCANCisgICAg
ICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDcwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2
LCAgIDAsICAgMCwgICA3LCAgNTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA3MCwgIDE2LCAgMTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI3LCAg
IDAsIA0KKyAgICAgIDAsICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNzAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDgsIDE5NCwgICAwLCANCisgICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAwLCAgIDcsIA0KKyAg
ICAyNDIsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE0
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAg
MTgsICA0OCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAxMCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIA0KKyAgICAgMzIsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjYsICAg
MCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwg
ICAwLCAgIDYsICAxOCwgIDQ4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgDQor
ICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAg
IDAsICA1OCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICA2NCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAx
OCwgIDQ4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNSwg
ICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICAgMCwgDQorICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAg
IDAsICAgNywgIDE4LCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDEwLCAgNDgsICAzMiwgICA0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAs
ICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisg
ICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgIDI2LCAxMjgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA3LCAgMzQsICAzMiwg
IDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4LCANCisgICAgIDMy
LCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA2LCANCisgICAgIDE4LCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDIsIDEyOCwgIDMyLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICA1NCwgICAwLCAgIDAsICAgNywgDQorICAgICA2NiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgIDEwLCAgNDgsICAzMiwgICA0LCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgMTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICA1OCwgMTI4LCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA3
LCAxMzAsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
MTAsICA0OCwgIDMyLCAgIDQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxMCwgICAwLCAg
MTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMSwgIDgzLCAgODQsICA2NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgMjEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6
emxlaTNkcHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZWkzZHBzLmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxlaTNkcHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSwyNzcgKzEsMjc3IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBi
eSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwot
Ly8KLS8vIEJ1ZmZlciBEZWZpbml0aW9uczogCi0vLwotLy8gY2J1ZmZlciBTd2l6emxlUHJvcGVy
dGllcwotLy8gewotLy8KLS8vICAgdWludDQgU3dpenpsZUluZGljZXM7ICAgICAgICAgICAgICAv
LyBPZmZzZXQ6ICAgIDAgU2l6ZTogICAgMTYKLS8vCi0vLyB9Ci0vLwotLy8KLS8vIFJlc291cmNl
IEJpbmRpbmdzOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
eXBlICBGb3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0t
LS0tCi0vLyBUZXh0dXJlSTNEICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHNpbnQ0
ICAgICAgICAgIDNkICAgIDAgICAgICAgIDEKLS8vIFN3aXp6bGVQcm9wZXJ0aWVzICAgICAgICAg
ICAgICAgICBjYnVmZmVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8KLS8v
Ci0vLwotLy8gSW5wdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIElu
ZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0t
Ci0vLyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1Mg
ICBmbG9hdCAgICAgICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAg
ICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAg
ICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0vLwot
Ly8gT3V0cHV0IHNpZ25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8g
U1ZfVEFSR0VUICAgICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgICBp
bnQgICB4eXp3Ci0vLwotcHNfNF8wCi1kY2xfY29uc3RhbnRidWZmZXIgY2IwWzFdLCBpbW1lZGlh
dGVJbmRleGVkCi1kY2xfcmVzb3VyY2VfdGV4dHVyZTNkIChzaW50LHNpbnQsc2ludCxzaW50KSB0
MAotZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3Rl
bXBzIDEKLWRjbF9pbmRleGFibGVUZW1wIHgwWzZdLCA0Ci1yZXNpbmZvX3VpbnQgcjAueHl6dywg
bCgwKSwgdDAueHl6dwotdXRvZiByMC54eXosIHIwLnh5engKLW11bCByMC54eXosIHIwLnh5engs
IHYyLnh5engKLWZ0b2kgcjAueHl6LCByMC54eXp4Ci1tb3YgcjAudywgbCgwKQotbGQgcjAueHl6
dywgcjAueHl6dywgdDAueHl6dwotbW92IHgwWzBdLngsIHIwLngKLW1vdiB4MFsxXS54LCByMC55
Ci1tb3YgeDBbMl0ueCwgcjAuegotbW92IHgwWzNdLngsIHIwLncKLW1vdiB4MFs0XS54LCBsKDAp
Ci1tb3YgeDBbNV0ueCwgbCgxKQotbW92IHIwLngsIGNiMFswXS54Ci1tb3YgbzAueCwgeDBbcjAu
eCArIDBdLngKLW1vdiByMC54LCBjYjBbMF0ueQotbW92IG8wLnksIHgwW3IwLnggKyAwXS54Ci1t
b3YgcjAueCwgY2IwWzBdLnoKLW1vdiBvMC56LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngsIGNi
MFswXS53Ci1tb3YgbzAudywgeDBbcjAueCArIDBdLngKLXJldCAKLS8vIEFwcHJveGltYXRlbHkg
MjEgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19Td2l6
emxlSTNEW10gPQotewotICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDQ4LCAgODQsIAotICAgICA5
NywgMTkzLCAyMTYsIDI0NSwgMTAxLCAxOTYsIAotICAgIDE2NywgIDgxLCAyMTUsIDE2OCwgIDI1
LCAxNjQsIAotICAgIDE0NCwgIDM4LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDIwMCwgICA0
LCAgIDAsICAgMCwgICA1LCAgIDAsIAotICAgICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAs
IAotICAgICA2MCwgICAxLCAgIDAsICAgMCwgMTk2LCAgIDEsIAotICAgICAgMCwgICAwLCAyNDgs
ICAgMSwgICAwLCAgIDAsIAotICAgICA3NiwgICA0LCAgIDAsICAgMCwgIDgyLCAgNjgsIAotICAg
ICA2OSwgIDcwLCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwg
MTI0LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgICAyOCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAg
IDAsIAotICAgIDIwNCwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAot
ICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIAotICAgIDEw
MywgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIAotICAgIDExNywgMTE0LCAxMDEs
ICA3MywgIDUxLCAgNjgsIAotICAgICAgMCwgIDgzLCAxMTksIDEwNSwgMTIyLCAxMjIsIAotICAg
IDEwOCwgMTAxLCAgODAsIDExNCwgMTExLCAxMTIsIAotICAgIDEwMSwgMTE0LCAxMTYsIDEwNSwg
MTAxLCAxMTUsIAotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgMTAzLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgIDE0OCwgICAwLCAgIDAsICAgMCwgIDE2LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgMTcyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAxODgsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDgzLCAxMTksIAotICAgIDEw
NSwgMTIyLCAxMjIsIDEwOCwgMTAxLCAgNzMsIAotICAgIDExMCwgMTAwLCAxMDUsICA5OSwgMTAx
LCAxMTUsIAotICAgICAgMCwgMTcxLCAgIDEsICAgMCwgIDE5LCAgIDAsIAotICAgICAgMSwgICAw
LCAgIDQsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIAotICAgIDExMSwgMTAyLCAxMTYs
ICAzMiwgIDQwLCAgODIsIAotICAgICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsIAotICAg
ICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIAotICAgIDExNCwgIDMyLCAgNjcsIDExMSwg
MTA5LCAxMTIsIAotICAgIDEwNSwgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTQsIAotICAgICA0Niwg
IDUxLCAgNDYsICA1NywgIDU0LCAgNDgsIAotICAgICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAg
NTYsIAotICAgICA1MiwgICAwLCAxNzEsIDE3MSwgIDczLCAgODMsIAotICAgICA3MSwgIDc4LCAx
MjgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIAot
ICAgICAgMCwgICAwLCAgODAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDE1LCAgIDAsIAotICAgICAgMCwgICAwLCAgOTIsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAs
IAotICAgICAgMCwgICAwLCAxMTgsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDcsIAotICAgICAgMCwgICAwLCAgODMsICA4Niwg
IDk1LCAgODAsIAotICAgICA3OSwgIDgzLCAgNzMsICA4NCwgIDczLCAgNzksIAotICAgICA3OCwg
ICAwLCAgODMsICA4NiwgIDk1LCAgODIsIAotICAgICA2OSwgIDc4LCAgNjgsICA2OSwgIDgyLCAg
ODQsIAotICAgICA2NSwgIDgyLCAgNzEsICA2OSwgIDg0LCAgNjUsIAotICAgICA4MiwgIDgyLCAg
NjUsICA4OSwgIDczLCAgNzgsIAotICAgICA2OCwgIDY5LCAgODgsICAgMCwgIDg0LCAgNjksIAot
ICAgICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsIAotICAgICAgMCwgMTcxLCAgNzksICA4
MywgIDcxLCAgNzgsIAotICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTUsICAgMCwgICAwLCAgIDAs
IAotICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIAotICAgICA3MSwgIDY5LCAgODQs
ICAgMCwgMTcxLCAxNzEsIAotICAgICA4MywgIDcyLCAgNjgsICA4MiwgIDc2LCAgIDIsIAotICAg
ICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIAotICAgIDE0NywgICAwLCAgIDAsICAgMCwg
IDg5LCAgIDAsIAotICAgICAgMCwgICA0LCAgNzAsIDE0MiwgIDMyLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgODgsICA0MCwgICAwLCAg
IDQsIAotICAgICAgMCwgMTEyLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
NTEsICA1MSwgICAwLCAgIDAsIAotICAgICA5OCwgIDE2LCAgIDAsICAgMywgMTE0LCAgMTYsIAot
ICAgICAxNiwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIAotICAgIDEwMSwgICAwLCAgIDAsICAg
MywgMjQyLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEw
NCwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAxMDUsICAgMCwgICAw
LCAgIDQsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDQsICAgMCwgICAwLCAgIDAsIAotICAgICA2MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAs
IAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0LCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDg2LCAgIDAsIAotICAgICAgMCwgICA1LCAxMTQsICAgMCwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIAotICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NiwgICAwLCAgIDAsICAgNywgMTE0LCAg
IDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA3MCwgICAyLCAg
MTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAsICAxOCwgIDE2LCAgIDAsIAot
ICAgICAgMiwgICAwLCAgIDAsICAgMCwgIDI3LCAgIDAsIAotICAgICAgMCwgICA1LCAxMTQsICAg
MCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIAotICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNSwgMTMw
LCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgIDY0
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAwLCAgIDcs
IAotICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNzAs
ICAxNCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIAotICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwg
IDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI2LCAgIDAsIAot
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAg
NiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MiwgICAwLCAgIDAsICAgMCwgIDQyLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgIDU4LCAgIDAs
IAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAs
ICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIAotICAgICAzMiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgNSwgICAwLCAgIDAsICAgMCwgICAxLCAg
NjQsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAg
IDAsICAgNiwgIDE4LCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAxMCwgMTI4LCAgMzIsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNywgIDE4LCAgMzIsIAotICAgICAx
NiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgIDQ4LCAgMzIsICAgNCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAgICAgMCwgICA2LCAgMTgsICAgMCwgIDE2LCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDI2LCAxMjgsIAotICAgICAzMiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIAotICAg
ICAgMCwgICA3LCAgMzQsICAzMiwgIDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDEwLCAgNDgsIAotICAgICAzMiwgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwg
ICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAg
IDYsIAotICAgICAxOCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
NDIsIDEyOCwgIDMyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDcsIAotICAgICA2NiwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICA0OCwgIDMyLCAgIDQsIAotICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgIDAsIAotICAgICAxNiwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1OCwgMTI4LCAgMzIsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICA1NCwgICAwLCAgIDAs
ICAgNywgMTMwLCAgMzIsIAotICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAg
ICAxMCwgIDQ4LCAgMzIsICAgNCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgMTAsICAgMCwg
IDE2LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIAotICAgICAgMCwg
ICAxLCAgODMsICA4NCwgIDY1LCAgODQsIAotICAgIDExNiwgICAwLCAgIDAsICAgMCwgIDIxLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAot
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsIAotICAgICAxMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDUs
ICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBT
aGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vDQorLy8gQnVmZmVyIERlZmlu
aXRpb25zOiANCisvLw0KKy8vIGNidWZmZXIgU3dpenpsZVByb3BlcnRpZXMNCisvLyB7DQorLy8N
CisvLyAgIHVpbnQ0IFN3aXp6bGVJbmRpY2VzOyAgICAgICAgICAgICAgLy8gT2Zmc2V0OiAgICAw
IFNpemU6ICAgIDE2DQorLy8NCisvLyB9DQorLy8NCisvLw0KKy8vIFJlc291cmNlIEJpbmRpbmdz
Og0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgIEZv
cm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzDQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tDQor
Ly8gVGV4dHVyZUkzRCAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgICBzaW50NCAgICAg
ICAgICAzZCAgICAwICAgICAgICAxDQorLy8gU3dpenpsZVByb3BlcnRpZXMgICAgICAgICAgICAg
ICAgIGNidWZmZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxDQorLy8NCisvLw0K
Ky8vDQorLy8gSW5wdXQgc2lnbmF0dXJlOg0KKy8vDQorLy8gTmFtZSAgICAgICAgICAgICAgICAg
SW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0t
LS0tDQorLy8gU1ZfUE9TSVRJT04gICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgICAg
UE9TICAgZmxvYXQgICAgICAgDQorLy8gU1ZfUkVOREVSVEFSR0VUQVJSQVlJTkRFWCAgICAgMCAg
IHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgICAgICANCisvLyBURVhDT09SRCAgICAg
ICAgICAgICAgICAgMCAgIHh5eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiANCisv
Lw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAg
ICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0t
IC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAg
IFRBUkdFVCAgICAgaW50ICAgeHl6dw0KKy8vDQorcHNfNF8wDQorZGNsX2NvbnN0YW50YnVmZmVy
IGNiMFsxXSwgaW1tZWRpYXRlSW5kZXhlZA0KK2RjbF9yZXNvdXJjZV90ZXh0dXJlM2QgKHNpbnQs
c2ludCxzaW50LHNpbnQpIHQwDQorZGNsX2lucHV0X3BzIGxpbmVhciB2Mi54eXoNCitkY2xfb3V0
cHV0IG8wLnh5encNCitkY2xfdGVtcHMgMQ0KK2RjbF9pbmRleGFibGVUZW1wIHgwWzZdLCA0DQor
cmVzaW5mb191aW50IHIwLnh5encsIGwoMCksIHQwLnh5encNCit1dG9mIHIwLnh5eiwgcjAueHl6
eA0KK211bCByMC54eXosIHIwLnh5engsIHYyLnh5engNCitmdG9pIHIwLnh5eiwgcjAueHl6eA0K
K21vdiByMC53LCBsKDApDQorbGQgcjAueHl6dywgcjAueHl6dywgdDAueHl6dw0KK21vdiB4MFsw
XS54LCByMC54DQorbW92IHgwWzFdLngsIHIwLnkNCittb3YgeDBbMl0ueCwgcjAueg0KK21vdiB4
MFszXS54LCByMC53DQorbW92IHgwWzRdLngsIGwoMCkNCittb3YgeDBbNV0ueCwgbCgxKQ0KK21v
diByMC54LCBjYjBbMF0ueA0KK21vdiBvMC54LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBj
YjBbMF0ueQ0KK21vdiBvMC55LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueg0K
K21vdiBvMC56LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0udw0KK21vdiBvMC53
LCB4MFtyMC54ICsgMF0ueA0KK3JldCANCisvLyBBcHByb3hpbWF0ZWx5IDIxIGluc3RydWN0aW9u
IHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfUFNfU3dpenpsZUkzRFtdID0N
Cit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2NywgIDQ4LCAgODQsIA0KKyAgICAgOTcsIDE5Mywg
MjE2LCAyNDUsIDEwMSwgMTk2LCANCisgICAgMTY3LCAgODEsIDIxNSwgMTY4LCAgMjUsIDE2NCwg
DQorICAgIDE0NCwgIDM4LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAyMDAsICAgNCwgICAw
LCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA2MCwgICAxLCAgIDAsICAgMCwgMTk2LCAgIDEsIA0KKyAgICAgIDAsICAgMCwgMjQ4LCAg
IDEsICAgMCwgICAwLCANCisgICAgIDc2LCAgIDQsICAgMCwgICAwLCAgODIsICA2OCwgDQorICAg
ICA2OSwgIDcwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
IDEyNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAgICAy
OCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0KKyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAg
MCwgICAwLCANCisgICAgMjA0LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwg
ICAwLCANCisgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAw
LCANCisgICAgMTAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDg0LCAxMDEsIDEyMCwgMTE2LCANCisg
ICAgMTE3LCAxMTQsIDEwMSwgIDczLCAgNTEsICA2OCwgDQorICAgICAgMCwgIDgzLCAxMTksIDEw
NSwgMTIyLCAxMjIsIA0KKyAgICAxMDgsIDEwMSwgIDgwLCAxMTQsIDExMSwgMTEyLCANCisgICAg
MTAxLCAxMTQsIDExNiwgMTA1LCAxMDEsIDExNSwgDQorICAgICAgMCwgMTcxLCAxNzEsIDE3MSwg
MTAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgMTQ4
LCAgIDAsICAgMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsIDE3MiwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgMTg4LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgODMsIDExOSwgDQorICAgIDEwNSwgMTIyLCAxMjIsIDEwOCwgMTAxLCAgNzMs
IA0KKyAgICAxMTAsIDEwMCwgMTA1LCAgOTksIDEwMSwgMTE1LCANCisgICAgICAwLCAxNzEsICAg
MSwgICAwLCAgMTksICAgMCwgDQorICAgICAgMSwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDc3LCAxMDUsICA5OSwg
MTE0LCAxMTEsIDExNSwgDQorICAgIDExMSwgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsIA0KKyAg
ICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCANCisgICAgIDMyLCAgODMsIDEwNCwgIDk3
LCAxMDAsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIA0KKyAgICAx
MDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU0LCANCisgICAgIDQ2LCAgNTEsICA0NiwgIDU3LCAg
NTQsICA0OCwgDQorICAgICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsIA0KKyAgICAgNTIs
ICAgMCwgMTcxLCAxNzEsICA3MywgIDgzLCANCisgICAgIDcxLCAgNzgsIDEyOCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDgwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAxNSwgICAwLCANCisgICAgICAwLCAgIDAsICA5MiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQor
ICAgICAgMCwgICAwLCAxMTgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMiwgICAwLCAgIDAsICAgMCwgICA3LCAgIDcsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYs
ICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3
OCwgICAwLCAgODMsICA4NiwgIDk1LCAgODIsIA0KKyAgICAgNjksICA3OCwgIDY4LCAgNjksICA4
MiwgIDg0LCANCisgICAgIDY1LCAgODIsICA3MSwgIDY5LCAgODQsICA2NSwgDQorICAgICA4Miwg
IDgyLCAgNjUsICA4OSwgIDczLCAgNzgsIA0KKyAgICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwg
IDY5LCANCisgICAgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgDQorICAgICAgMCwgMTcx
LCAgNzksICA4MywgIDcxLCAgNzgsIA0KKyAgICAgNDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAzMiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTUs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgODMsICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCANCisg
ICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgDQorICAgICA4MywgIDcyLCAgNjgsICA4
MiwgIDc2LCAgIDIsIA0KKyAgICAgIDAsICAgMCwgIDY0LCAgIDAsICAgMCwgICAwLCANCisgICAg
MTQ3LCAgIDAsICAgMCwgICAwLCAgODksICAgMCwgDQorICAgICAgMCwgICA0LCAgNzAsIDE0Miwg
IDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAw
LCAgIDAsICA4OCwgIDQwLCAgIDAsICAgNCwgDQorICAgICAgMCwgMTEyLCAgMTYsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUxLCAgNTEsICAgMCwgICAwLCANCisgICAgIDk4LCAg
MTYsICAgMCwgICAzLCAxMTQsICAxNiwgDQorICAgICAxNiwgICAwLCAgIDIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAxMDEsICAgMCwgICAwLCAgIDMsIDI0MiwgIDMyLCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNCwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgMTA1LCAgIDAsICAgMCwgICA0LCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgODYsICAgMCwgDQorICAgICAgMCwgICA1LCAxMTQsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICA1NiwgICAwLCAgIDAsICAgNywgMTE0LCAgIDAsIA0KKyAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgIDIsICAxNiwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxOCwgIDE2LCAgIDAsIA0KKyAgICAgIDIsICAg
MCwgICAwLCAgIDAsICAyNywgICAwLCANCisgICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA1LCAxMzAsICAgMCwg
DQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICA2NCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgDQor
ICAgIDI0MiwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDcwLCAg
MTQsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgDQorICAg
ICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYs
ICAxOCwgIDQ4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgDQorICAgICAzMiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyNiwg
ICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAw
LCAgIDAsICAgNiwgIDE4LCAgNDgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAyLCAgIDAsICAgMCwgICAwLCAgNDIsICAgMCwgDQorICAgICAxNiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCAN
CisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAs
ICAgMCwgIDU4LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgDQorICAgICAzMiwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMSwgIDY0LCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNiwg
IDE4LCAgNDgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICA1
LCAgIDAsICAgMCwgICAwLCAgIDEsICA2NCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgICAwLCANCisgICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgMTI4LCAgMzIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAs
ICAgMCwgICA3LCAgMTgsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgMTAsICA0OCwgIDMyLCAgIDQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAx
MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0K
KyAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgMjYsIDEyOCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDcsICAzNCwgIDMy
LCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAgNDgsIA0KKyAgICAg
MzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgIDAsICAxNiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAgMCwgICAwLCAgIDYsIA0KKyAgICAgMTgs
ICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA0MiwgMTI4LCAgMzIs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDU0LCAgIDAsICAgMCwgICA3LCANCisgICAgIDY2LCAgMzIsICAxNiwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMCwgICAwLCAgMTAsICA0OCwgIDMyLCAgIDQsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAxMCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU4LCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAg
IDcsIDEzMCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAxMCwgIDQ4LCAgMzIsICAgNCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgIDAs
ICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgDQorICAgICAg
MCwgICAxLCAgODMsICA4NCwgIDY1LCAgODQsIA0KKyAgICAxMTYsICAgMCwgICAwLCAgIDAsICAy
MSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3
aXp6bGV1aTJkYXJyYXlwcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxl
dWkyZGFycmF5cHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6
bGV1aTJkYXJyYXlwcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI4NiArMSwyODYgQEAKLSNpZiAw
Ci0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIg
Ni4zLjk2MDAuMTYzODQKLS8vCi0vLwotLy8gQnVmZmVyIERlZmluaXRpb25zOiAKLS8vCi0vLyBj
YnVmZmVyIFN3aXp6bGVQcm9wZXJ0aWVzCi0vLyB7Ci0vLwotLy8gICB1aW50NCBTd2l6emxlSW5k
aWNlczsgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAxNgotLy8KLS8vIH0K
LS8vCi0vLwotLy8gUmVzb3VyY2UgQmluZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFR5cGUgIEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRz
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0t
LS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0KLS8vIFRleHR1cmVVSTJEQXJyYXkgICAgICAgICAgICAg
ICAgICB0ZXh0dXJlICAgdWludDQgICAgIDJkYXJyYXkgICAgMCAgICAgICAgMQotLy8gU3dpenps
ZVByb3BlcnRpZXMgICAgICAgICAgICAgICAgIGNidWZmZXIgICAgICBOQSAgICAgICAgICBOQSAg
ICAwICAgICAgICAxCi0vLwotLy8KLS8vCi0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFt
ZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQg
ICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6
dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0ICAgICAgIAotLy8gU1ZfUkVOREVSVEFSR0VUQVJS
QVlJTkRFWCAgICAgMCAgIHggICAgICAgICAgIDEgIFJUSU5ERVggICAgdWludCAgIHggICAKLS8v
IFRFWENPT1JEICAgICAgICAgICAgICAgICAwICAgeHl6ICAgICAgICAgMiAgICAgTk9ORSAgIGZs
b2F0ICAgeHkgIAotLy8KLS8vCi0vLyBPdXRwdXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAg
ICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNl
ZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0t
IC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAg
ICAgIDAgICBUQVJHRVQgICAgdWludCAgIHh5encKLS8vCi1wc180XzAKLWRjbF9jb25zdGFudGJ1
ZmZlciBjYjBbMV0sIGltbWVkaWF0ZUluZGV4ZWQKLWRjbF9yZXNvdXJjZV90ZXh0dXJlMmRhcnJh
eSAodWludCx1aW50LHVpbnQsdWludCkgdDAKLWRjbF9pbnB1dF9wc19zaXYgY29uc3RhbnQgdjEu
eCwgcmVuZGVydGFyZ2V0X2FycmF5X2luZGV4Ci1kY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5Ci1k
Y2xfb3V0cHV0IG8wLnh5encKLWRjbF90ZW1wcyAxCi1kY2xfaW5kZXhhYmxlVGVtcCB4MFs2XSwg
NAotcmVzaW5mb191aW50IHIwLnh5encsIGwoMCksIHQwLnh5encKLXV0b2YgcjAueHksIHIwLnh5
eHgKLW11bCByMC54eSwgcjAueHl4eCwgdjIueHl4eAotZnRvaSByMC54eSwgcjAueHl4eAotbW92
IHIwLnosIHYxLngKLW1vdiByMC53LCBsKDApCi1sZCByMC54eXp3LCByMC54eXp3LCB0MC54eXp3
Ci1tb3YgeDBbMF0ueCwgcjAueAotbW92IHgwWzFdLngsIHIwLnkKLW1vdiB4MFsyXS54LCByMC56
Ci1tb3YgeDBbM10ueCwgcjAudwotbW92IHgwWzRdLngsIGwoMCkKLW1vdiB4MFs1XS54LCBsKDEp
Ci1tb3YgcjAueCwgY2IwWzBdLngKLW1vdiBvMC54LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngs
IGNiMFswXS55Ci1tb3YgbzAueSwgeDBbcjAueCArIDBdLngKLW1vdiByMC54LCBjYjBbMF0uegot
bW92IG8wLnosIHgwW3IwLnggKyAwXS54Ci1tb3YgcjAueCwgY2IwWzBdLncKLW1vdiBvMC53LCB4
MFtyMC54ICsgMF0ueAotcmV0IAotLy8gQXBwcm94aW1hdGVseSAyMiBpbnN0cnVjdGlvbiBzbG90
cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX1BTX1N3aXp6bGVVSTJEQXJyYXlbXSA9Ci17
Ci0gICAgIDY4LCAgODgsICA2NiwgIDY3LCAgMTUsIDEyNCwgCi0gICAgMTc5LCAgNDksICA0NSwg
IDY5LCAgNjQsIDI0OSwgCi0gICAgMjE2LCAxODksIDEzNSwgMTkwLCAgNzEsIDIzNCwgCi0gICAg
IDcyLCAgMjAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMjQwLCAgIDQsICAgMCwgICAwLCAg
IDUsICAgMCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDY0LCAg
IDEsICAgMCwgICAwLCAyMDAsICAgMSwgCi0gICAgICAwLCAgIDAsIDI1MiwgICAxLCAgIDAsICAg
MCwgCi0gICAgMTE2LCAgIDQsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsICAg
NCwgICAxLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMjgsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgMjA4
LCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAs
IDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgMTA5LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICA4NCwgMTAxLCAxMjAsIDExNiwgCi0gICAgMTE3LCAxMTQsIDEwMSwgIDg1LCAgNzMsICA1
MCwgCi0gICAgIDY4LCAgNjUsIDExNCwgMTE0LCAgOTcsIDEyMSwgCi0gICAgICAwLCAgODMsIDEx
OSwgMTA1LCAxMjIsIDEyMiwgCi0gICAgMTA4LCAxMDEsICA4MCwgMTE0LCAxMTEsIDExMiwgCi0g
ICAgMTAxLCAxMTQsIDExNiwgMTA1LCAxMDEsIDExNSwgCi0gICAgICAwLCAxNzEsIDEwOSwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxNTIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsIDE3NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgMTkyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA4Mywg
MTE5LCAxMDUsIDEyMiwgCi0gICAgMTIyLCAxMDgsIDEwMSwgIDczLCAxMTAsIDEwMCwgCi0gICAg
MTA1LCAgOTksIDEwMSwgMTE1LCAgIDAsIDE3MSwgCi0gICAgICAxLCAgIDAsICAxOSwgICAwLCAg
IDEsICAgMCwgCi0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNzcsIDEwNSwgCi0gICAgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIDEw
MiwgCi0gICAgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgCi0gICAgIDcyLCAgNzYsICA4
MywgIDc2LCAgMzIsICA4MywgCi0gICAgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgCi0g
ICAgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgCi0gICAgMTAxLCAxMTQsICAzMiwgIDU0
LCAgNDYsICA1MSwgCi0gICAgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgCi0gICAgIDQ5
LCAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgCi0gICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEs
ICA3OCwgCi0gICAgMTI4LCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgOCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDkyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMSwgICAxLCAgIDAsICAgMCwgCi0gICAgMTE4LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAg
MCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNywgICAzLCAgIDAsICAgMCwgCi0g
ICAgIDgzLCAgODYsICA5NSwgIDgwLCAgNzksICA4MywgCi0gICAgIDczLCAgODQsICA3MywgIDc5
LCAgNzgsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwgIDgyLCAgNjksICA3OCwgCi0gICAgIDY4
LCAgNjksICA4MiwgIDg0LCAgNjUsICA4MiwgCi0gICAgIDcxLCAgNjksICA4NCwgIDY1LCAgODIs
ICA4MiwgCi0gICAgIDY1LCAgODksICA3MywgIDc4LCAgNjgsICA2OSwgCi0gICAgIDg4LCAgIDAs
ICA4NCwgIDY5LCAgODgsICA2NywgCi0gICAgIDc5LCAgNzksICA4MiwgIDY4LCAgIDAsIDE3MSwg
Ci0gICAgIDc5LCAgODMsICA3MSwgIDc4LCAgNDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICA4LCAgIDAsICAgMCwgICAwLCAgMzIsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE1LCAg
IDAsICAgMCwgICAwLCAgODMsICA4NiwgCi0gICAgIDk1LCAgODQsICA2NSwgIDgyLCAgNzEsICA2
OSwgCi0gICAgIDg0LCAgIDAsIDE3MSwgMTcxLCAgODMsICA3MiwgCi0gICAgIDY4LCAgODIsIDEx
MiwgICAyLCAgIDAsICAgMCwgCi0gICAgIDY0LCAgIDAsICAgMCwgICAwLCAxNTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA4OSwgICAwLCAgIDAsICAgNCwgCi0gICAgIDcwLCAxNDIsICAzMiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDg4
LCAgNjQsICAgMCwgICA0LCAgIDAsIDExMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDY4LCAgNjgsICAgMCwgICAwLCAxMDAsICAgOCwgCi0gICAgICAwLCAgIDQs
ICAxOCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwg
Ci0gICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywgCi0gICAgIDUwLCAgMTYsICAxNiwg
ICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsIDEwMSwgICAwLCAgIDAsICAgMywgCi0gICAg
MjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDEwNCwgICAwLCAg
IDAsICAgMiwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMDUsICAgMCwgCi0gICAgICAwLCAg
IDQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA2LCAgIDAsICAgMCwgICAwLCAgIDQsICAg
MCwgCi0gICAgICAwLCAgIDAsICA2MSwgIDE2LCAgIDAsICAgNywgCi0gICAgMjQyLCAgIDAsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgIDg2LCAgIDAsICAgMCwgICA1LCAgNTAsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgNywgCi0gICAgIDUwLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgICAwLCAgMTYsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDI3LCAgIDAsICAgMCwgICA1LCAgNTAsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNSwgCi0gICAgIDY2LCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgIDE2LCAgMTYsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDUsIDEz
MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICA2NCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDQ1LCAgIDAsICAgMCwgICA3
LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcw
LCAgMTQsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgMTI2LCAgMTYs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYs
ICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAyNiwgICAwLCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAg
IDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgCi0gICAgICAwLCAgIDAsICA0MiwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgCi0gICAgICAwLCAgIDAsICA1OCwgICAw
LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAw
LCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDQs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwg
IDY0LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAg
ICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
MTAsIDEyOCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDcsICAxOCwgIDMyLCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0OCwgCi0gICAgIDMyLCAgIDQsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNiwgCi0gICAgIDE4LCAgIDAsICAxNiwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAyNiwgMTI4LCAgMzIsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAs
ICAgNywgCi0gICAgIDM0LCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAxMCwgIDQ4LCAgMzIsICAgNCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwg
Ci0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwg
ICA2LCAgMTgsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
IDQyLCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA3LCAgNjYsICAzMiwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgNDgsICAzMiwgICA0LCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTgsIDEyOCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAw
LCAgIDcsIDEzMCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAs
ICA0OCwgCi0gICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAs
ICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA2MiwgICAwLCAgIDAsICAgMSwg
Ci0gICAgIDgzLCAgODQsICA2NSwgIDg0LCAxMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAyMiwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICA2LCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wg
U2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIEJ1ZmZlciBEZWZp
bml0aW9uczogDQorLy8NCisvLyBjYnVmZmVyIFN3aXp6bGVQcm9wZXJ0aWVzDQorLy8gew0KKy8v
DQorLy8gICB1aW50NCBTd2l6emxlSW5kaWNlczsgICAgICAgICAgICAgIC8vIE9mZnNldDogICAg
MCBTaXplOiAgICAxNg0KKy8vDQorLy8gfQ0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5n
czoNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBG
b3JtYXQgICAgICAgICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSAtLS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0K
Ky8vIFRleHR1cmVVSTJEQXJyYXkgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAg
IDJkYXJyYXkgICAgMCAgICAgICAgMQ0KKy8vIFN3aXp6bGVQcm9wZXJ0aWVzICAgICAgICAgICAg
ICAgICBjYnVmZmVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0KKy8vDQorLy8N
CisvLw0KKy8vIElucHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAg
IEluZGV4ICAgTWFzayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0t
LS0tLQ0KKy8vIFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAg
IFBPUyAgIGZsb2F0ICAgICAgIA0KKy8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAg
ICB4ICAgICAgICAgICAxICBSVElOREVYICAgIHVpbnQgICB4ICAgDQorLy8gVEVYQ09PUkQgICAg
ICAgICAgICAgICAgIDAgICB4eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eSAgDQor
Ly8NCisvLw0KKy8vIE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAg
ICAgICBJbmRleCAgIE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0t
LSAtLS0tLS0NCisvLyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAg
ICBUQVJHRVQgICAgdWludCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9jb25zdGFudGJ1ZmZl
ciBjYjBbMV0sIGltbWVkaWF0ZUluZGV4ZWQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTJkYXJyYXkg
KHVpbnQsdWludCx1aW50LHVpbnQpIHQwDQorZGNsX2lucHV0X3BzX3NpdiBjb25zdGFudCB2MS54
LCByZW5kZXJ0YXJnZXRfYXJyYXlfaW5kZXgNCitkY2xfaW5wdXRfcHMgbGluZWFyIHYyLnh5DQor
ZGNsX291dHB1dCBvMC54eXp3DQorZGNsX3RlbXBzIDENCitkY2xfaW5kZXhhYmxlVGVtcCB4MFs2
XSwgNA0KK3Jlc2luZm9fdWludCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRvZiByMC54eSwg
cjAueHl4eA0KK211bCByMC54eSwgcjAueHl4eCwgdjIueHl4eA0KK2Z0b2kgcjAueHksIHIwLnh5
eHgNCittb3YgcjAueiwgdjEueA0KK21vdiByMC53LCBsKDApDQorbGQgcjAueHl6dywgcjAueHl6
dywgdDAueHl6dw0KK21vdiB4MFswXS54LCByMC54DQorbW92IHgwWzFdLngsIHIwLnkNCittb3Yg
eDBbMl0ueCwgcjAueg0KK21vdiB4MFszXS54LCByMC53DQorbW92IHgwWzRdLngsIGwoMCkNCitt
b3YgeDBbNV0ueCwgbCgxKQ0KK21vdiByMC54LCBjYjBbMF0ueA0KK21vdiBvMC54LCB4MFtyMC54
ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueQ0KK21vdiBvMC55LCB4MFtyMC54ICsgMF0ueA0K
K21vdiByMC54LCBjYjBbMF0ueg0KK21vdiBvMC56LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54
LCBjYjBbMF0udw0KK21vdiBvMC53LCB4MFtyMC54ICsgMF0ueA0KK3JldCANCisvLyBBcHByb3hp
bWF0ZWx5IDIyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisNCitjb25zdCBCWVRF
IGdfUFNfU3dpenpsZVVJMkRBcnJheVtdID0NCit7DQorICAgICA2OCwgIDg4LCAgNjYsICA2Nywg
IDE1LCAxMjQsIA0KKyAgICAxNzksICA0OSwgIDQ1LCAgNjksICA2NCwgMjQ5LCANCisgICAgMjE2
LCAxODksIDEzNSwgMTkwLCAgNzEsIDIzNCwgDQorICAgICA3MiwgIDIwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAyNDAsICAgNCwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAg
IDAsICA1MiwgICAwLCAgIDAsICAgMCwgDQorICAgICA2NCwgICAxLCAgIDAsICAgMCwgMjAwLCAg
IDEsIA0KKyAgICAgIDAsICAgMCwgMjUyLCAgIDEsICAgMCwgICAwLCANCisgICAgMTE2LCAgIDQs
ICAgMCwgICAwLCAgODIsICA2OCwgDQorICAgICA2OSwgIDcwLCAgIDQsICAgMSwgICAwLCAgIDAs
IA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MiwgICAwLCAgIDAsICAgMCwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDQsIA0K
KyAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgMjA4LCAgIDAsICAgMCwg
ICAwLCAgOTIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDQsICAgMCwgICAwLCAgIDAsICAgNSwgICAwLCANCisgICAgICAwLCAgIDAsIDI1NSwgMjU1
LCAyNTUsIDI1NSwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA5LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDg0LCAxMDEsIDEyMCwgMTE2LCANCisgICAgMTE3LCAxMTQsIDEwMSwgIDg1LCAgNzMsICA1
MCwgDQorICAgICA2OCwgIDY1LCAxMTQsIDExNCwgIDk3LCAxMjEsIA0KKyAgICAgIDAsICA4Mywg
MTE5LCAxMDUsIDEyMiwgMTIyLCANCisgICAgMTA4LCAxMDEsICA4MCwgMTE0LCAxMTEsIDExMiwg
DQorICAgIDEwMSwgMTE0LCAxMTYsIDEwNSwgMTAxLCAxMTUsIA0KKyAgICAgIDAsIDE3MSwgMTA5
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxNTIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDE3NiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAs
ICAgMCwgICAwLCANCisgICAgMTkyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgODMsIDExOSwgMTA1LCAxMjIsIA0KKyAgICAxMjIsIDEwOCwgMTAxLCAgNzMsIDEx
MCwgMTAwLCANCisgICAgMTA1LCAgOTksIDEwMSwgMTE1LCAgIDAsIDE3MSwgDQorICAgICAgMSwg
ICAwLCAgMTksICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzcsIDEwNSwgDQorICAgICA5OSwgMTE0
LCAxMTEsIDExNSwgMTExLCAxMDIsIA0KKyAgICAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgIDMy
LCANCisgICAgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgDQorICAgIDEwNCwgIDk3LCAx
MDAsIDEwMSwgMTE0LCAgMzIsIA0KKyAgICAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAN
CisgICAgMTAxLCAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgDQorICAgICA0NiwgIDU3LCAgNTQs
ICA0OCwgIDQ4LCAgNDYsIA0KKyAgICAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCANCisg
ICAgMTcxLCAxNzEsICA3MywgIDgzLCAgNzEsICA3OCwgDQorICAgIDEyOCwgICAwLCAgIDAsICAg
MCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAg
IDgwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA5MiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAxMTgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAyLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICA3LCAgIDMsICAgMCwgICAwLCANCisgICAgIDgzLCAgODYsICA5
NSwgIDgwLCAgNzksICA4MywgDQorICAgICA3MywgIDg0LCAgNzMsICA3OSwgIDc4LCAgIDAsIA0K
KyAgICAgODMsICA4NiwgIDk1LCAgODIsICA2OSwgIDc4LCANCisgICAgIDY4LCAgNjksICA4Miwg
IDg0LCAgNjUsICA4MiwgDQorICAgICA3MSwgIDY5LCAgODQsICA2NSwgIDgyLCAgODIsIA0KKyAg
ICAgNjUsICA4OSwgIDczLCAgNzgsICA2OCwgIDY5LCANCisgICAgIDg4LCAgIDAsICA4NCwgIDY5
LCAgODgsICA2NywgDQorICAgICA3OSwgIDc5LCAgODIsICA2OCwgICAwLCAxNzEsIA0KKyAgICAg
NzksICA4MywgIDcxLCAgNzgsICA0NCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgOCwgICAwLCAgIDAsICAgMCwgIDMyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTUsICAg
MCwgICAwLCAgIDAsICA4MywgIDg2LCANCisgICAgIDk1LCAgODQsICA2NSwgIDgyLCAgNzEsICA2
OSwgDQorICAgICA4NCwgICAwLCAxNzEsIDE3MSwgIDgzLCAgNzIsIA0KKyAgICAgNjgsICA4Miwg
MTEyLCAgIDIsICAgMCwgICAwLCANCisgICAgIDY0LCAgIDAsICAgMCwgICAwLCAxNTYsICAgMCwg
DQorICAgICAgMCwgICAwLCAgODksICAgMCwgICAwLCAgIDQsIA0KKyAgICAgNzAsIDE0MiwgIDMy
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA4OCwgIDY0LCAgIDAsICAgNCwgICAwLCAxMTIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDY4LCAgNjgsICAgMCwgICAwLCAxMDAsICAgOCwgDQorICAg
ICAgMCwgICA0LCAgMTgsICAxNiwgIDE2LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAs
ICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICA5OCwgIDE2LCAgIDAsICAgMywgDQorICAgICA1
MCwgIDE2LCAgMTYsICAgMCwgICAyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTAxLCAgIDAsICAg
MCwgICAzLCANCisgICAgMjQyLCAgMzIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAxMDQsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEwNSwg
ICAwLCANCisgICAgICAwLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNiwgICAw
LCAgIDAsICAgMCwgICA0LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDYxLCAgMTYsICAgMCwgICA3
LCANCisgICAgMjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDEsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA4NiwgICAwLCAgIDAs
ICAgNSwgIDUwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTYsICAg
MCwgICAwLCAgIDcsIA0KKyAgICAgNTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICA3MCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDcwLCAgMTYsIA0KKyAgICAgMTYsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI3
LCAgIDAsICAgMCwgICA1LCAgNTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICA1NCwgICAwLCAgIDAsICAgNSwgDQorICAgICA2NiwgICAwLCAgMTYsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgMTYsICAxNiwgICAwLCANCisgICAgICAxLCAgIDAs
ICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA1LCAxMzAsICAgMCwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgIDY0LCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICA0NSwgICAwLCAgIDAsICAgNywgMjQyLCAgIDAsIA0K
KyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDcwLCAgMTQsICAxNiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4
LCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
NTQsICAgMCwgDQorICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAyNiwgICAwLCAgMTYs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAg
NiwgIDE4LCAgNDgsICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgDQorICAgICAgMCwgICAwLCAgNDIsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgIDQ4LCAgMzIsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU4
LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQor
ICAgICAgMCwgICA2LCAgMTgsICA0OCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgIDY0LCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNiwgIDE4LCAgNDgs
ICAzMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDEsICA2NCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA1
NCwgICAwLCANCisgICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgIDEwLCAxMjgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA3
LCAgMTgsICAzMiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4
LCANCisgICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAxMCwgICAwLCAg
MTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA2LCAN
CisgICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMjYs
IDEyOCwgIDMyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNywgDQorICAgICAzNCwgIDMyLCAgMTYsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgNDgsICAzMiwgICA0LCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgICAwLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA0MiwgMTI4LCAgMzIsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAg
IDAsICAgMCwgICA3LCAgNjYsICAzMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgMTAsICA0OCwgIDMyLCAgIDQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAxMCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDU0LCAgIDAs
IA0KKyAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgNTgsIDEyOCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDcsIDEzMCwg
IDMyLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDEwLCAgNDgsIA0KKyAg
ICAgMzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgIDAsICAxNiwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjIsICAgMCwgICAwLCAgIDEsIA0KKyAgICAg
ODMsICA4NCwgIDY1LCAgODQsIDExNiwgICAwLCANCisgICAgICAwLCAgIDAsICAyMiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgNiwgICAwLCAgIDAsICAgMCwgIDEwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDAsICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTJk
cHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRwcy5oCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRwcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDI3MCArMSwyNzAgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1p
Y3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLwot
Ly8gQnVmZmVyIERlZmluaXRpb25zOiAKLS8vCi0vLyBjYnVmZmVyIFN3aXp6bGVQcm9wZXJ0aWVz
Ci0vLyB7Ci0vLwotLy8gICB1aW50NCBTd2l6emxlSW5kaWNlczsgICAgICAgICAgICAgIC8vIE9m
ZnNldDogICAgMCBTaXplOiAgICAxNgotLy8KLS8vIH0KLS8vCi0vLwotLy8gUmVzb3VyY2UgQmlu
ZGluZ3M6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUg
IEZvcm1hdCAgICAgICAgIERpbSBTbG90IEVsZW1lbnRzCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0K
LS8vIFRleHR1cmVVSTJEICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAg
ICAgICAgMmQgICAgMCAgICAgICAgMQotLy8gU3dpenpsZVByb3BlcnRpZXMgICAgICAgICAgICAg
ICAgIGNidWZmZXIgICAgICBOQSAgICAgICAgICBOQSAgICAwICAgICAgICAxCi0vLwotLy8KLS8v
Ci0vLyBJbnB1dCBzaWduYXR1cmU6Ci0vLwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXgg
ICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8v
IFNWX1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZs
b2F0ICAgICAgIAotLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAgIDAgICB4eSAgICAgICAgICAx
ICAgICBOT05FICAgZmxvYXQgICB4eSAgCi0vLwotLy8KLS8vIE91dHB1dCBzaWduYXR1cmU6Ci0v
LwotLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBNYXNrIFJlZ2lzdGVyIFN5c1ZhbHVl
ICBGb3JtYXQgICBVc2VkCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0t
LS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0KLS8vIFNWX1RBUkdFVCAgICAgICAgICAgICAg
ICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICB1aW50ICAgeHl6dwotLy8KLXBzXzRfMAot
ZGNsX2NvbnN0YW50YnVmZmVyIGNiMFsxXSwgaW1tZWRpYXRlSW5kZXhlZAotZGNsX3Jlc291cmNl
X3RleHR1cmUyZCAodWludCx1aW50LHVpbnQsdWludCkgdDAKLWRjbF9pbnB1dF9wcyBsaW5lYXIg
djEueHkKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLWRjbF9pbmRleGFibGVUZW1w
IHgwWzZdLCA0Ci1yZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6dwotdXRvZiByMC54
eSwgcjAueHl4eAotbXVsIHIwLnh5LCByMC54eXh4LCB2MS54eXh4Ci1mdG9pIHIwLnh5LCByMC54
eXh4Ci1tb3YgcjAuencsIGwoMCwwLDAsMCkKLWxkIHIwLnh5encsIHIwLnh5encsIHQwLnh5encK
LW1vdiB4MFswXS54LCByMC54Ci1tb3YgeDBbMV0ueCwgcjAueQotbW92IHgwWzJdLngsIHIwLnoK
LW1vdiB4MFszXS54LCByMC53Ci1tb3YgeDBbNF0ueCwgbCgwKQotbW92IHgwWzVdLngsIGwoMSkK
LW1vdiByMC54LCBjYjBbMF0ueAotbW92IG8wLngsIHgwW3IwLnggKyAwXS54Ci1tb3YgcjAueCwg
Y2IwWzBdLnkKLW1vdiBvMC55LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngsIGNiMFswXS56Ci1t
b3YgbzAueiwgeDBbcjAueCArIDBdLngKLW1vdiByMC54LCBjYjBbMF0udwotbW92IG8wLncsIHgw
W3IwLnggKyAwXS54Ci1yZXQgCi0vLyBBcHByb3hpbWF0ZWx5IDIxIGluc3RydWN0aW9uIHNsb3Rz
IHVzZWQKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfUFNfU3dpenpsZVVJMkRbXSA9Ci17Ci0gICAg
IDY4LCAgODgsICA2NiwgIDY3LCAxNjUsIDE5MCwgCi0gICAgIDM1LCAxODgsIDIzNSwgMjAyLCAx
NTQsIDIzNywgCi0gICAgMjI2LCAgODYsIDIyMywgMjEyLCAgMzQsICAzOCwgCi0gICAgIDgxLCAy
NTIsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgMTY0LCAgIDQsICAgMCwgICAwLCAgIDUsICAg
MCwgCi0gICAgICAwLCAgIDAsICA1MiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDYwLCAgIDEsICAg
MCwgICAwLCAxNDgsICAgMSwgCi0gICAgICAwLCAgIDAsIDIwMCwgICAxLCAgIDAsICAgMCwgCi0g
ICAgIDQwLCAgIDQsICAgMCwgICAwLCAgODIsICA2OCwgCi0gICAgIDY5LCAgNzAsICAgMCwgICAx
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAxMjQsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgNCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgMjA0LCAgIDAs
ICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgCi0gICAgICAwLCAgIDAsIDI1NSwg
MjU1LCAyNTUsIDI1NSwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgCi0gICAgMTA0LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICA4
NCwgMTAxLCAxMjAsIDExNiwgCi0gICAgMTE3LCAxMTQsIDEwMSwgIDg1LCAgNzMsICA1MCwgCi0g
ICAgIDY4LCAgIDAsICA4MywgMTE5LCAxMDUsIDEyMiwgCi0gICAgMTIyLCAxMDgsIDEwMSwgIDgw
LCAxMTQsIDExMSwgCi0gICAgMTEyLCAxMDEsIDExNCwgMTE2LCAxMDUsIDEwMSwgCi0gICAgMTE1
LCAgIDAsIDE3MSwgMTcxLCAxMDQsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgMTQ4LCAgIDAsICAgMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxNzIsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsIDE4OCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgODMsIDExOSwgCi0gICAgMTA1LCAxMjIsIDEyMiwgMTA4LCAx
MDEsICA3MywgCi0gICAgMTEwLCAxMDAsIDEwNSwgIDk5LCAxMDEsIDExNSwgCi0gICAgICAwLCAx
NzEsICAgMSwgICAwLCAgMTksICAgMCwgCi0gICAgICAxLCAgIDAsICAgNCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDc3LCAxMDUsICA5
OSwgMTE0LCAxMTEsIDExNSwgCi0gICAgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgCi0g
ICAgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgCi0gICAgIDMyLCAgODMsIDEwNCwgIDk3
LCAxMDAsIDEwMSwgCi0gICAgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgCi0gICAgMTA1
LCAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NCwgCi0gICAgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQs
ICA0OCwgCi0gICAgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgCi0gICAgIDUyLCAgIDAs
IDE3MSwgMTcxLCAgNzMsICA4MywgCi0gICAgIDcxLCAgNzgsICA4MCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgCi0gICAgICAwLCAgIDAsICA1Niwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
MTUsICAgMCwgCi0gICAgICAwLCAgIDAsICA2OCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgCi0gICAgICAwLCAgIDAsICA4
MywgIDg2LCAgOTUsICA4MCwgCi0gICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgCi0g
ICAgIDc4LCAgIDAsICA4NCwgIDY5LCAgODgsICA2NywgCi0gICAgIDc5LCAgNzksICA4MiwgIDY4
LCAgIDAsIDE3MSwgCi0gICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgCi0gICAgIDQ0
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgOCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDgzLCAgODYsICA5NSwg
IDg0LCAgNjUsICA4MiwgCi0gICAgIDcxLCAgNjksICA4NCwgICAwLCAxNzEsIDE3MSwgCi0gICAg
IDgzLCAgNzIsICA2OCwgIDgyLCAgODgsICAgMiwgCi0gICAgICAwLCAgIDAsICA2NCwgICAwLCAg
IDAsICAgMCwgCi0gICAgMTUwLCAgIDAsICAgMCwgICAwLCAgODksICAgMCwgCi0gICAgICAwLCAg
IDQsICA3MCwgMTQyLCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgCi0gICAgICAwLCAgIDAsICA4OCwgIDI0LCAgIDAsICAgNCwgCi0gICAgICAwLCAxMTIsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA2OCwgIDY4LCAgIDAsICAgMCwgCi0g
ICAgIDk4LCAgMTYsICAgMCwgICAzLCAgNTAsICAxNiwgCi0gICAgIDE2LCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgCi0gICAgMTAxLCAgIDAsICAgMCwgICAzLCAyNDIsICAzMiwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTA0LCAgIDAsICAgMCwgICAyLCAgIDEs
ICAgMCwgCi0gICAgICAwLCAgIDAsIDEwNSwgICAwLCAgIDAsICAgNCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDYxLCAgMTYsICAgMCwgICA3LCAyNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICA3MCwgMTI2LCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
ODYsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDU2LCAgIDAsICAgMCwgICA3LCAgNTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDcwLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0g
ICAgICAwLCAgIDAsICA3MCwgIDE2LCAgMTYsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAw
LCAgMjcsICAgMCwgCi0gICAgICAwLCAgIDUsICA1MCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgNzAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA4LCAxOTQsICAgMCwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0NSwgICAwLCAgIDAsICAgNywgCi0gICAg
MjQyLCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA3MCwgIDE0LCAg
MTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAsIDEyNiwgCi0gICAgIDE2LCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0
OCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgMTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0g
ICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjYsICAgMCwgCi0gICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgs
ICA0OCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgNDIsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgCi0gICAgIDMyLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgNTgsICAgMCwgCi0gICAg
IDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAg
MTgsICA0OCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA0LCAg
IDAsICAgMCwgICAwLCAgIDEsICA2NCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgCi0gICAgIDMyLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICA1LCAgIDAsICAgMCwgICAwLCAgIDEsICA2NCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA2
LCAgMTgsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEw
LCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA3LCAgMTgsICAzMiwgCi0gICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgNDgsICAzMiwgICA0LCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAgIDYsICAxOCwgICAwLCAgMTYsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgMjYsIDEyOCwgCi0gICAgIDMyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgCi0gICAgICAwLCAg
IDcsICAzNCwgIDMyLCAgMTYsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0
OCwgCi0gICAgIDMyLCAgIDQsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAx
NiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNiwgCi0g
ICAgIDE4LCAgIDAsICAxNiwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICA0MiwgMTI4
LCAgMzIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICA1NCwgICAwLCAgIDAsICAgNywgCi0gICAgIDY2LCAgMzIsICAxNiwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgIDQ4LCAgMzIsICAgNCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgMTAsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICAgMCwgCi0gICAgIDE2LCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgIDU4LCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDU0LCAgIDAsICAgMCwgICA3LCAx
MzAsICAzMiwgCi0gICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAg
NDgsICAzMiwgICA0LCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgNjIsICAgMCwgCi0gICAgICAwLCAgIDEsICA4
MywgIDg0LCAgNjUsICA4NCwgCi0gICAgMTE2LCAgIDAsICAgMCwgICAwLCAgMjEsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgNiwgICAwLCAgIDAsICAgMCwgCi0gICAgIDEwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgNSwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMAotfTsK
KyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBD
b21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8NCisvLyBCdWZmZXIgRGVmaW5pdGlvbnM6
IA0KKy8vDQorLy8gY2J1ZmZlciBTd2l6emxlUHJvcGVydGllcw0KKy8vIHsNCisvLw0KKy8vICAg
dWludDQgU3dpenpsZUluZGljZXM7ICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAgIDAgU2l6ZTog
ICAgMTYNCisvLw0KKy8vIH0NCisvLw0KKy8vDQorLy8gUmVzb3VyY2UgQmluZGluZ3M6DQorLy8N
CisvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgRm9ybWF0ICAg
ICAgICAgRGltIFNsb3QgRWxlbWVudHMNCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gLS0tLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tIC0tLS0gLS0tLS0tLS0NCisvLyBUZXh0
dXJlVUkyRCAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHVpbnQ0ICAgICAgICAgIDJk
ICAgIDAgICAgICAgIDENCisvLyBTd2l6emxlUHJvcGVydGllcyAgICAgICAgICAgICAgICAgY2J1
ZmZlciAgICAgIE5BICAgICAgICAgIE5BICAgIDAgICAgICAgIDENCisvLw0KKy8vDQorLy8NCisv
LyBJbnB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisv
LyBTVl9QT1NJVElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBm
bG9hdCAgICAgICANCisvLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5ICAgICAgICAg
IDEgICAgIE5PTkUgICBmbG9hdCAgIHh5ICANCisvLw0KKy8vDQorLy8gT3V0cHV0IHNpZ25hdHVy
ZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3RlciBT
eXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tIC0t
LS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNWX1RBUkdFVCAgICAg
ICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgIFRBUkdFVCAgICB1aW50ICAgeHl6dw0KKy8v
DQorcHNfNF8wDQorZGNsX2NvbnN0YW50YnVmZmVyIGNiMFsxXSwgaW1tZWRpYXRlSW5kZXhlZA0K
K2RjbF9yZXNvdXJjZV90ZXh0dXJlMmQgKHVpbnQsdWludCx1aW50LHVpbnQpIHQwDQorZGNsX2lu
cHV0X3BzIGxpbmVhciB2MS54eQ0KK2RjbF9vdXRwdXQgbzAueHl6dw0KK2RjbF90ZW1wcyAxDQor
ZGNsX2luZGV4YWJsZVRlbXAgeDBbNl0sIDQNCityZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwg
dDAueHl6dw0KK3V0b2YgcjAueHksIHIwLnh5eHgNCittdWwgcjAueHksIHIwLnh5eHgsIHYxLnh5
eHgNCitmdG9pIHIwLnh5LCByMC54eXh4DQorbW92IHIwLnp3LCBsKDAsMCwwLDApDQorbGQgcjAu
eHl6dywgcjAueHl6dywgdDAueHl6dw0KK21vdiB4MFswXS54LCByMC54DQorbW92IHgwWzFdLngs
IHIwLnkNCittb3YgeDBbMl0ueCwgcjAueg0KK21vdiB4MFszXS54LCByMC53DQorbW92IHgwWzRd
LngsIGwoMCkNCittb3YgeDBbNV0ueCwgbCgxKQ0KK21vdiByMC54LCBjYjBbMF0ueA0KK21vdiBv
MC54LCB4MFtyMC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueQ0KK21vdiBvMC55LCB4MFty
MC54ICsgMF0ueA0KK21vdiByMC54LCBjYjBbMF0ueg0KK21vdiBvMC56LCB4MFtyMC54ICsgMF0u
eA0KK21vdiByMC54LCBjYjBbMF0udw0KK21vdiBvMC53LCB4MFtyMC54ICsgMF0ueA0KK3JldCAN
CisvLyBBcHByb3hpbWF0ZWx5IDIxIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisjZW5kaWYNCisN
Citjb25zdCBCWVRFIGdfUFNfU3dpenpsZVVJMkRbXSA9DQorew0KKyAgICAgNjgsICA4OCwgIDY2
LCAgNjcsIDE2NSwgMTkwLCANCisgICAgIDM1LCAxODgsIDIzNSwgMjAyLCAxNTQsIDIzNywgDQor
ICAgIDIyNiwgIDg2LCAyMjMsIDIxMiwgIDM0LCAgMzgsIA0KKyAgICAgODEsIDI1MiwgICAxLCAg
IDAsICAgMCwgICAwLCANCisgICAgMTY0LCAgIDQsICAgMCwgICAwLCAgIDUsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgNTIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNjAsICAgMSwgICAwLCAgIDAs
IDE0OCwgICAxLCANCisgICAgICAwLCAgIDAsIDIwMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA0
MCwgICA0LCAgIDAsICAgMCwgIDgyLCAgNjgsIA0KKyAgICAgNjksICA3MCwgICAwLCAgIDEsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAxMjQsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA0LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgIDIwNCwgICAw
LCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAw
LCANCisgICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAy
NTUsIDI1NSwgMjU1LCAyNTUsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAN
CisgICAgICAwLCAgIDAsICAxMywgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICA4NCwgMTAxLCAxMjAsIDExNiwgDQorICAgIDExNywgMTE0LCAxMDEsICA4NSwg
IDczLCAgNTAsIA0KKyAgICAgNjgsICAgMCwgIDgzLCAxMTksIDEwNSwgMTIyLCANCisgICAgMTIy
LCAxMDgsIDEwMSwgIDgwLCAxMTQsIDExMSwgDQorICAgIDExMiwgMTAxLCAxMTQsIDExNiwgMTA1
LCAxMDEsIA0KKyAgICAxMTUsICAgMCwgMTcxLCAxNzEsIDEwNCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDE0OCwgICAwLCAgIDAsICAgMCwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAxNzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsIDE4
OCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDgzLCAxMTksIA0K
KyAgICAxMDUsIDEyMiwgMTIyLCAxMDgsIDEwMSwgIDczLCANCisgICAgMTEwLCAxMDAsIDEwNSwg
IDk5LCAxMDEsIDExNSwgDQorICAgICAgMCwgMTcxLCAgIDEsICAgMCwgIDE5LCAgIDAsIA0KKyAg
ICAgIDEsICAgMCwgICA0LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICA3NywgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIA0KKyAgICAx
MTEsIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCANCisgICAgIDQxLCAgMzIsICA3MiwgIDc2LCAg
ODMsICA3NiwgDQorICAgICAzMiwgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIA0KKyAgICAxMTQs
ICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCANCisgICAgMTA1LCAxMDgsIDEwMSwgMTE0LCAgMzIs
ICA1NCwgDQorICAgICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgsIA0KKyAgICAgNDgsICA0
NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCANCisgICAgIDUyLCAgIDAsIDE3MSwgMTcxLCAgNzMsICA4
MywgDQorICAgICA3MSwgIDc4LCAgODAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDIsICAgMCwg
ICAwLCAgIDAsICAgOCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NiwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTUsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNjgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDgzLCAgODYs
ICA5NSwgIDgwLCANCisgICAgIDc5LCAgODMsICA3MywgIDg0LCAgNzMsICA3OSwgDQorICAgICA3
OCwgICAwLCAgODQsICA2OSwgIDg4LCAgNjcsIA0KKyAgICAgNzksICA3OSwgIDgyLCAgNjgsICAg
MCwgMTcxLCANCisgICAgMTcxLCAxNzEsICA3OSwgIDgzLCAgNzEsICA3OCwgDQorICAgICA0NCwg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwg
ICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAsICAgMCwgDQorICAgICA4MywgIDg2LCAg
OTUsICA4NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCAN
CisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAgODgsICAgMiwgDQorICAgICAgMCwgICAwLCAgNjQs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNTAsICAgMCwgICAwLCAgIDAsICA4OSwgICAwLCANCisg
ICAgICAwLCAgIDQsICA3MCwgMTQyLCAgMzIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDg4LCAgMjQsICAgMCwgICA0LCANCisgICAg
ICAwLCAxMTIsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNjgsICA2OCwg
ICAwLCAgIDAsIA0KKyAgICAgOTgsICAxNiwgICAwLCAgIDMsICA1MCwgIDE2LCANCisgICAgIDE2
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwMSwgICAwLCAgIDAsICAgMywgMjQy
LCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA0LCAg
IDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAxMDUsICAgMCwgICAwLCAg
IDQsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgNCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwgIDE2LCAgIDAsICAgNywgMjQyLCAgIDAs
IA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgNjQsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsIDEyNiwgIDE2LCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAwLCANCisgICAgICAwLCAgIDUsICA1MCwg
ICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAgIDAsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU2LCAgIDAsICAgMCwgICA3
LCAgNTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
NzAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE2LCAg
MTYsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI3LCAgIDAsIA0KKyAgICAgIDAs
ICAgNSwgIDUwLCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNzAs
ICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAg
MCwgICAwLCAgIDgsIDE5NCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMiwgIDY0LCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgNDUsICAgMCwgICAwLCAgIDcsIA0KKyAgICAyNDIsICAgMCwgIDE2
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA3MCwgIDE0LCAgMTYsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDcwLCAxMjYsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgDQorICAg
ICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAxMCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1
NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjYsICAgMCwgDQorICAgICAxNiwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwg
IDQ4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMiwgICAw
LCAgIDAsICAgMCwgIDQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwgDQorICAgICAzMiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDMsICAgMCwgICAwLCAgIDAsICA1OCwgICAwLCAN
CisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAs
ICAgNiwgIDE4LCAgNDgsIA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisg
ICAgICA0LCAgIDAsICAgMCwgICAwLCAgIDEsICA2NCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCANCisgICAg
IDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgNSwgICAwLCAgIDAsICAgMCwg
ICAxLCAgNjQsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0
LCAgIDAsICAgMCwgICA2LCAgMTgsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgMTAsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNywgIDE4LCAg
MzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgNDgs
ICAzMiwgICA0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCANCisgICAgICAwLCAgIDYsICAx
OCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDI2LCAxMjgsIA0K
KyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwgICA3LCAgMzQsICAzMiwgIDE2LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4LCANCisgICAgIDMyLCAgIDQsICAgMCwgICAw
LCAgIDAsICAgMCwgDQorICAgICAxMCwgICAwLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA2LCANCisgICAgIDE4LCAgIDAsICAxNiwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNDIsIDEyOCwgIDMyLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAs
ICAgNywgDQorICAgICA2NiwgIDMyLCAgMTYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgIDEwLCAgNDgsICAzMiwgICA0LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICAg
MCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwg
ICAwLCAgIDYsICAxOCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICA1OCwgMTI4LCAgMzIsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA3LCAxMzAsICAzMiwgDQor
ICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICA0OCwgIDMyLCAg
IDQsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxMCwgICAwLCAgMTYsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgIDYyLCAgIDAsIA0KKyAgICAgIDAsICAgMSwgIDgzLCAgODQs
ICA2NSwgIDg0LCANCisgICAgMTE2LCAgIDAsICAgMCwgICAwLCAgMjEsICAgMCwgDQorICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDYsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDUs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxldWkzZHBzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTNkcHMuaAkocmV2aXNpb24gMTk5
NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTNkcHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSwyNzcgKzEsMjc3IEBACi0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQg
KFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8KLS8vIEJ1ZmZl
ciBEZWZpbml0aW9uczogCi0vLwotLy8gY2J1ZmZlciBTd2l6emxlUHJvcGVydGllcwotLy8gewot
Ly8KLS8vICAgdWludDQgU3dpenpsZUluZGljZXM7ICAgICAgICAgICAgICAvLyBPZmZzZXQ6ICAg
IDAgU2l6ZTogICAgMTYKLS8vCi0vLyB9Ci0vLwotLy8KLS8vIFJlc291cmNlIEJpbmRpbmdzOgot
Ly8KLS8vIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQg
ICAgICAgICBEaW0gU2xvdCBFbGVtZW50cwotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLSAtLS0tIC0tLS0tLS0tCi0vLyBUZXh0
dXJlVUkzRCAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSAgIHVpbnQ0ICAgICAgICAgIDNk
ICAgIDAgICAgICAgIDEKLS8vIFN3aXp6bGVQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICBjYnVm
ZmVyICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQotLy8KLS8vCi0vLwotLy8gSW5w
dXQgc2lnbmF0dXJlOgotLy8KLS8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBS
ZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0g
LS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tCi0vLyBTVl9QT1NJ
VElPTiAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICAgICBQT1MgICBmbG9hdCAgICAg
ICAKLS8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAgICAxICBS
VElOREVYICAgIHVpbnQgICAgICAgCi0vLyBURVhDT09SRCAgICAgICAgICAgICAgICAgMCAgIHh5
eiAgICAgICAgIDIgICAgIE5PTkUgICBmbG9hdCAgIHh5eiAKLS8vCi0vLwotLy8gT3V0cHV0IHNp
Z25hdHVyZToKLS8vCi0vLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAgIE1hc2sgUmVnaXN0
ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQotLy8gU1ZfVEFSR0VUICAg
ICAgICAgICAgICAgIDAgICB4eXp3ICAgICAgICAwICAgVEFSR0VUICAgIHVpbnQgICB4eXp3Ci0v
LwotcHNfNF8wCi1kY2xfY29uc3RhbnRidWZmZXIgY2IwWzFdLCBpbW1lZGlhdGVJbmRleGVkCi1k
Y2xfcmVzb3VyY2VfdGV4dHVyZTNkICh1aW50LHVpbnQsdWludCx1aW50KSB0MAotZGNsX2lucHV0
X3BzIGxpbmVhciB2Mi54eXoKLWRjbF9vdXRwdXQgbzAueHl6dwotZGNsX3RlbXBzIDEKLWRjbF9p
bmRleGFibGVUZW1wIHgwWzZdLCA0Ci1yZXNpbmZvX3VpbnQgcjAueHl6dywgbCgwKSwgdDAueHl6
dwotdXRvZiByMC54eXosIHIwLnh5engKLW11bCByMC54eXosIHIwLnh5engsIHYyLnh5engKLWZ0
b2kgcjAueHl6LCByMC54eXp4Ci1tb3YgcjAudywgbCgwKQotbGQgcjAueHl6dywgcjAueHl6dywg
dDAueHl6dwotbW92IHgwWzBdLngsIHIwLngKLW1vdiB4MFsxXS54LCByMC55Ci1tb3YgeDBbMl0u
eCwgcjAuegotbW92IHgwWzNdLngsIHIwLncKLW1vdiB4MFs0XS54LCBsKDApCi1tb3YgeDBbNV0u
eCwgbCgxKQotbW92IHIwLngsIGNiMFswXS54Ci1tb3YgbzAueCwgeDBbcjAueCArIDBdLngKLW1v
diByMC54LCBjYjBbMF0ueQotbW92IG8wLnksIHgwW3IwLnggKyAwXS54Ci1tb3YgcjAueCwgY2Iw
WzBdLnoKLW1vdiBvMC56LCB4MFtyMC54ICsgMF0ueAotbW92IHIwLngsIGNiMFswXS53Ci1tb3Yg
bzAudywgeDBbcjAueCArIDBdLngKLXJldCAKLS8vIEFwcHJveGltYXRlbHkgMjEgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19QU19Td2l6emxlVUkzRFtdID0K
LXsKLSAgICAgNjgsICA4OCwgIDY2LCAgNjcsIDE4NiwgMTI0LCAKLSAgICAyMjIsIDExMCwgMTg2
LCAxNDUsIDE2NSwgIDU2LCAKLSAgICAxNTIsICA5NywgMjQ3LCAxMTQsIDExNSwgMTk3LCAKLSAg
ICAxNTksIDE5MCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAyMDAsICAgNCwgICAwLCAgIDAs
ICAgNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNjAs
ICAgMSwgICAwLCAgIDAsIDE5NiwgICAxLCAKLSAgICAgIDAsICAgMCwgMjQ4LCAgIDEsICAgMCwg
ICAwLCAKLSAgICAgNzYsICAgNCwgICAwLCAgIDAsICA4MiwgIDY4LCAKLSAgICAgNjksICA3MCwg
ICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsIDEyNCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMjgsICAgMCwgICAwLCAg
IDAsICAgMCwgICA0LCAKLSAgICAyNTUsIDI1NSwgICAwLCAgIDEsICAgMCwgICAwLCAKLSAgICAy
MDQsICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDQsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAgIDAsICAg
MCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDEzLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDQsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAs
ICAgMCwgIDg0LCAxMDEsIDEyMCwgMTE2LCAKLSAgICAxMTcsIDExNCwgMTAxLCAgODUsICA3Mywg
IDUxLCAKLSAgICAgNjgsICAgMCwgIDgzLCAxMTksIDEwNSwgMTIyLCAKLSAgICAxMjIsIDEwOCwg
MTAxLCAgODAsIDExNCwgMTExLCAKLSAgICAxMTIsIDEwMSwgMTE0LCAxMTYsIDEwNSwgMTAxLCAK
LSAgICAxMTUsICAgMCwgMTcxLCAxNzEsIDEwNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAg
IDAsICAgMCwgICAwLCAKLSAgICAxNDgsICAgMCwgICAwLCAgIDAsICAxNiwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsIDE3
MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTYsICAg
MCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwgMTg4LCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4MywgMTE5LCAKLSAgICAxMDUsIDEyMiwgMTIy
LCAxMDgsIDEwMSwgIDczLCAKLSAgICAxMTAsIDEwMCwgMTA1LCAgOTksIDEwMSwgMTE1LCAKLSAg
ICAgIDAsIDE3MSwgICAxLCAgIDAsICAxOSwgICAwLCAKLSAgICAgIDEsICAgMCwgICA0LCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzcs
IDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAKLSAgICAxMTEsIDEwMiwgMTE2LCAgMzIsICA0MCwg
IDgyLCAKLSAgICAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAKLSAgICAgMzIsICA4Mywg
MTA0LCAgOTcsIDEwMCwgMTAxLCAKLSAgICAxMTQsICAzMiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAK
LSAgICAxMDUsIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU0LCAKLSAgICAgNDYsICA1MSwgIDQ2LCAg
NTcsICA1NCwgIDQ4LCAKLSAgICAgNDgsICA0NiwgIDQ5LCAgNTQsICA1MSwgIDU2LCAKLSAgICAg
NTIsICAgMCwgMTcxLCAxNzEsICA3MywgIDgzLCAKLSAgICAgNzEsICA3OCwgMTI4LCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAKLSAgICAgIDAsICAg
MCwgIDgwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAxNSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgNCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAs
ICAgMCwgMTE4LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICAgMCwg
ICAwLCAgIDAsICAgNywgICA3LCAKLSAgICAgIDAsICAgMCwgIDgzLCAgODYsICA5NSwgIDgwLCAK
LSAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCAKLSAgICAgNzgsICAgMCwgIDgzLCAg
ODYsICA5NSwgIDgyLCAKLSAgICAgNjksICA3OCwgIDY4LCAgNjksICA4MiwgIDg0LCAKLSAgICAg
NjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDY1LCAKLSAgICAgODIsICA4MiwgIDY1LCAgODksICA3
MywgIDc4LCAKLSAgICAgNjgsICA2OSwgIDg4LCAgIDAsICA4NCwgIDY5LCAKLSAgICAgODgsICA2
NywgIDc5LCAgNzksICA4MiwgIDY4LCAKLSAgICAgIDAsIDE3MSwgIDc5LCAgODMsICA3MSwgIDc4
LCAKLSAgICAgNDQsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICA4
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDE1LCAgIDAsICAgMCwgICAwLCAKLSAgICAgODMs
ICA4NiwgIDk1LCAgODQsICA2NSwgIDgyLCAKLSAgICAgNzEsICA2OSwgIDg0LCAgIDAsIDE3MSwg
MTcxLCAKLSAgICAgODMsICA3MiwgIDY4LCAgODIsICA3NiwgICAyLCAKLSAgICAgIDAsICAgMCwg
IDY0LCAgIDAsICAgMCwgICAwLCAKLSAgICAxNDcsICAgMCwgICAwLCAgIDAsICA4OSwgICAwLCAK
LSAgICAgIDAsICAgNCwgIDcwLCAxNDIsICAzMiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgIDg4LCAgNDAsICAgMCwgICA0LCAKLSAgICAg
IDAsIDExMiwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDY4LCAgNjgsICAg
MCwgICAwLCAKLSAgICAgOTgsICAxNiwgICAwLCAgIDMsIDExNCwgIDE2LCAKLSAgICAgMTYsICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDEsICAgMCwgICAwLCAgIDMsIDI0MiwgIDMy
LCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDQsICAgMCwgICAw
LCAgIDIsICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgMTA1LCAgIDAsICAgMCwgICA0LCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICA0LCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgNjEsICAxNiwgICAwLCAgIDcsIDI0MiwgICAwLCAKLSAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICA2NCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAxMjYsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICA4NiwgICAwLCAKLSAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCAKLSAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgNTYsICAgMCwgICAwLCAgIDcsIDExNCwgICAwLCAKLSAgICAg
MTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMTgsICAxNiwgICAwLCAKLSAgICAgIDIsICAg
MCwgICAwLCAgIDAsICAyNywgICAwLCAKLSAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgICAyLCAKLSAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgICAwLCAKLSAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDEsICA2NCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3LCAKLSAgICAyNDIs
ICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDcwLCAgMTQsICAxNiwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCAKLSAgICAgMTYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCAK
LSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAxMCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAg
NTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyNiwgICAwLCAKLSAgICAgMTYsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4
LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDIsICAgMCwgICAw
LCAgIDAsICA0MiwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgIDMsICAgMCwgICAwLCAgIDAsICA1OCwgICAwLCAKLSAgICAgMTYs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwg
IDQ4LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDQsICAgMCwg
ICAwLCAgIDAsICAgMSwgIDY0LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCAKLSAgICAgMzIsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDUsICAgMCwgICAwLCAgIDAsICAgMSwgIDY0LCAKLSAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDYsICAx
OCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTAsIDEy
OCwgIDMyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDcsICAxOCwgIDMyLCAKLSAgICAgMTYsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTAsICA0OCwgIDMyLCAgIDQsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICA1NCwgICAwLCAKLSAgICAgIDAsICAgNiwgIDE4LCAgIDAsICAxNiwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAyNiwgMTI4LCAKLSAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA1NCwgICAwLCAKLSAgICAgIDAsICAgNywg
IDM0LCAgMzIsICAxNiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAxMCwgIDQ4LCAK
LSAgICAgMzIsICAgNCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTAsICAgMCwgIDE2LCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDU0LCAgIDAsICAgMCwgICA2LCAKLSAgICAg
MTgsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDQyLCAxMjgsICAz
MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgIDU0LCAgIDAsICAgMCwgICA3LCAKLSAgICAgNjYsICAzMiwgIDE2LCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgIDEwLCAgNDgsICAzMiwgICA0LCAKLSAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAxMCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgICAwLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAKLSAgICAgNTgsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgNTQsICAgMCwgICAwLCAgIDcsIDEzMCwg
IDMyLCAKLSAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTAsICA0OCwg
IDMyLCAgIDQsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAxNiwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCAKLSAgICAgIDAsICAgMSwgIDgzLCAg
ODQsICA2NSwgIDg0LCAKLSAgICAxMTYsICAgMCwgICAwLCAgIDAsICAyMSwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
MiwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICA2
LCAgIDAsICAgMCwgICAwLCAKLSAgICAgMTAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICA1LCAgIDAsICAgMCwg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAKLSAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAK
LSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwCi19OworI2lm
IDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBp
bGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLw0KKy8vIEJ1ZmZlciBEZWZpbml0aW9uczogDQor
Ly8NCisvLyBjYnVmZmVyIFN3aXp6bGVQcm9wZXJ0aWVzDQorLy8gew0KKy8vDQorLy8gICB1aW50
NCBTd2l6emxlSW5kaWNlczsgICAgICAgICAgICAgIC8vIE9mZnNldDogICAgMCBTaXplOiAgICAx
Ng0KKy8vDQorLy8gfQ0KKy8vDQorLy8NCisvLyBSZXNvdXJjZSBCaW5kaW5nczoNCisvLw0KKy8v
IE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICBGb3JtYXQgICAgICAg
ICBEaW0gU2xvdCBFbGVtZW50cw0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAt
LS0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0gLS0tLSAtLS0tLS0tLQ0KKy8vIFRleHR1cmVV
STNEICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlICAgdWludDQgICAgICAgICAgM2QgICAg
MCAgICAgICAgMQ0KKy8vIFN3aXp6bGVQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICBjYnVmZmVy
ICAgICAgTkEgICAgICAgICAgTkEgICAgMCAgICAgICAgMQ0KKy8vDQorLy8NCisvLw0KKy8vIElu
cHV0IHNpZ25hdHVyZToNCisvLw0KKy8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFz
ayBSZWdpc3RlciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tIC0tLS0tIC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KKy8vIFNW
X1BPU0lUSU9OICAgICAgICAgICAgICAwICAgeHl6dyAgICAgICAgMCAgICAgIFBPUyAgIGZsb2F0
ICAgICAgIA0KKy8vIFNWX1JFTkRFUlRBUkdFVEFSUkFZSU5ERVggICAgIDAgICB4ICAgICAgICAg
ICAxICBSVElOREVYICAgIHVpbnQgICAgICAgDQorLy8gVEVYQ09PUkQgICAgICAgICAgICAgICAg
IDAgICB4eXogICAgICAgICAyICAgICBOT05FICAgZmxvYXQgICB4eXogDQorLy8NCisvLw0KKy8v
IE91dHB1dCBzaWduYXR1cmU6DQorLy8NCisvLyBOYW1lICAgICAgICAgICAgICAgICBJbmRleCAg
IE1hc2sgUmVnaXN0ZXIgU3lzVmFsdWUgIEZvcm1hdCAgIFVzZWQNCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLSAtLS0tLSAtLS0tLS0gLS0tLS0tLS0gLS0tLS0tLS0gLS0tLS0tLSAtLS0tLS0NCisv
LyBTVl9UQVJHRVQgICAgICAgICAgICAgICAgMCAgIHh5encgICAgICAgIDAgICBUQVJHRVQgICAg
dWludCAgIHh5encNCisvLw0KK3BzXzRfMA0KK2RjbF9jb25zdGFudGJ1ZmZlciBjYjBbMV0sIGlt
bWVkaWF0ZUluZGV4ZWQNCitkY2xfcmVzb3VyY2VfdGV4dHVyZTNkICh1aW50LHVpbnQsdWludCx1
aW50KSB0MA0KK2RjbF9pbnB1dF9wcyBsaW5lYXIgdjIueHl6DQorZGNsX291dHB1dCBvMC54eXp3
DQorZGNsX3RlbXBzIDENCitkY2xfaW5kZXhhYmxlVGVtcCB4MFs2XSwgNA0KK3Jlc2luZm9fdWlu
dCByMC54eXp3LCBsKDApLCB0MC54eXp3DQordXRvZiByMC54eXosIHIwLnh5engNCittdWwgcjAu
eHl6LCByMC54eXp4LCB2Mi54eXp4DQorZnRvaSByMC54eXosIHIwLnh5engNCittb3YgcjAudywg
bCgwKQ0KK2xkIHIwLnh5encsIHIwLnh5encsIHQwLnh5encNCittb3YgeDBbMF0ueCwgcjAueA0K
K21vdiB4MFsxXS54LCByMC55DQorbW92IHgwWzJdLngsIHIwLnoNCittb3YgeDBbM10ueCwgcjAu
dw0KK21vdiB4MFs0XS54LCBsKDApDQorbW92IHgwWzVdLngsIGwoMSkNCittb3YgcjAueCwgY2Iw
WzBdLngNCittb3YgbzAueCwgeDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLnkNCitt
b3YgbzAueSwgeDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLnoNCittb3YgbzAueiwg
eDBbcjAueCArIDBdLngNCittb3YgcjAueCwgY2IwWzBdLncNCittb3YgbzAudywgeDBbcjAueCAr
IDBdLngNCityZXQgDQorLy8gQXBwcm94aW1hdGVseSAyMSBpbnN0cnVjdGlvbiBzbG90cyB1c2Vk
DQorI2VuZGlmDQorDQorY29uc3QgQllURSBnX1BTX1N3aXp6bGVVSTNEW10gPQ0KK3sNCisgICAg
IDY4LCAgODgsICA2NiwgIDY3LCAxODYsIDEyNCwgDQorICAgIDIyMiwgMTEwLCAxODYsIDE0NSwg
MTY1LCAgNTYsIA0KKyAgICAxNTIsICA5NywgMjQ3LCAxMTQsIDExNSwgMTk3LCANCisgICAgMTU5
LCAxOTAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgIDIwMCwgICA0LCAgIDAsICAgMCwgICA1
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDUyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDYwLCAg
IDEsICAgMCwgICAwLCAxOTYsICAgMSwgDQorICAgICAgMCwgICAwLCAyNDgsICAgMSwgICAwLCAg
IDAsIA0KKyAgICAgNzYsICAgNCwgICAwLCAgIDAsICA4MiwgIDY4LCANCisgICAgIDY5LCAgNzAs
ICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgMTI0LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgIDI4LCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNCwgDQorICAgIDI1NSwgMjU1LCAgIDAsICAgMSwgICAwLCAgIDAsIA0K
KyAgICAyMDQsICAgMCwgICAwLCAgIDAsICA5MiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICA4LCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCANCisgICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDEsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTMsICAgMCwgICAwLCAgIDAsIA0KKyAgICAx
MDQsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDEs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgODQsIDEwMSwgMTIwLCAxMTYsIA0KKyAgICAxMTcsIDEx
NCwgMTAxLCAgODUsICA3MywgIDUxLCANCisgICAgIDY4LCAgIDAsICA4MywgMTE5LCAxMDUsIDEy
MiwgDQorICAgIDEyMiwgMTA4LCAxMDEsICA4MCwgMTE0LCAxMTEsIA0KKyAgICAxMTIsIDEwMSwg
MTE0LCAxMTYsIDEwNSwgMTAxLCANCisgICAgMTE1LCAgIDAsIDE3MSwgMTcxLCAxMDQsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDgsICAgMCwgICAw
LCAgIDAsICAxNiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTcyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgDQorICAg
ICAgMCwgICAwLCAxODgsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICA4MywgMTE5LCANCisgICAgMTA1LCAxMjIsIDEyMiwgMTA4LCAxMDEsICA3MywgDQorICAgIDEx
MCwgMTAwLCAxMDUsICA5OSwgMTAxLCAxMTUsIA0KKyAgICAgIDAsIDE3MSwgICAxLCAgIDAsICAx
OSwgICAwLCANCisgICAgICAxLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzcsIDEwNSwgIDk5LCAxMTQsIDExMSwg
MTE1LCANCisgICAgMTExLCAxMDIsIDExNiwgIDMyLCAgNDAsICA4MiwgDQorICAgICA0MSwgIDMy
LCAgNzIsICA3NiwgIDgzLCAgNzYsIA0KKyAgICAgMzIsICA4MywgMTA0LCAgOTcsIDEwMCwgMTAx
LCANCisgICAgMTE0LCAgMzIsICA2NywgMTExLCAxMDksIDExMiwgDQorICAgIDEwNSwgMTA4LCAx
MDEsIDExNCwgIDMyLCAgNTQsIA0KKyAgICAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAN
CisgICAgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgDQorICAgICA1MiwgICAwLCAxNzEs
IDE3MSwgIDczLCAgODMsIA0KKyAgICAgNzEsICA3OCwgMTI4LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgODAsICAg
MCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDE1LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDkyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAg
IDAsIDExOCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCANCisgICAgICAyLCAgIDAs
ICAgMCwgICAwLCAgIDcsICAgNywgDQorICAgICAgMCwgICAwLCAgODMsICA4NiwgIDk1LCAgODAs
IA0KKyAgICAgNzksICA4MywgIDczLCAgODQsICA3MywgIDc5LCANCisgICAgIDc4LCAgIDAsICA4
MywgIDg2LCAgOTUsICA4MiwgDQorICAgICA2OSwgIDc4LCAgNjgsICA2OSwgIDgyLCAgODQsIA0K
KyAgICAgNjUsICA4MiwgIDcxLCAgNjksICA4NCwgIDY1LCANCisgICAgIDgyLCAgODIsICA2NSwg
IDg5LCAgNzMsICA3OCwgDQorICAgICA2OCwgIDY5LCAgODgsICAgMCwgIDg0LCAgNjksIA0KKyAg
ICAgODgsICA2NywgIDc5LCAgNzksICA4MiwgIDY4LCANCisgICAgICAwLCAxNzEsICA3OSwgIDgz
LCAgNzEsICA3OCwgDQorICAgICA0NCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAxNSwgICAwLCAgIDAs
ICAgMCwgDQorICAgICA4MywgIDg2LCAgOTUsICA4NCwgIDY1LCAgODIsIA0KKyAgICAgNzEsICA2
OSwgIDg0LCAgIDAsIDE3MSwgMTcxLCANCisgICAgIDgzLCAgNzIsICA2OCwgIDgyLCAgNzYsICAg
MiwgDQorICAgICAgMCwgICAwLCAgNjQsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxNDcsICAgMCwg
ICAwLCAgIDAsICA4OSwgICAwLCANCisgICAgICAwLCAgIDQsICA3MCwgMTQyLCAgMzIsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDg4
LCAgNDAsICAgMCwgICA0LCANCisgICAgICAwLCAxMTIsICAxNiwgICAwLCAgIDAsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgNjgsICA2OCwgICAwLCAgIDAsIA0KKyAgICAgOTgsICAxNiwgICAwLCAg
IDMsIDExNCwgIDE2LCANCisgICAgIDE2LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQorICAg
IDEwMSwgICAwLCAgIDAsICAgMywgMjQyLCAgMzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCANCisgICAgMTA0LCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAxMDUsICAgMCwgICAwLCAgIDQsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAg
NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMCwgDQorICAgICA2MSwg
IDE2LCAgIDAsICAgNywgMjQyLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgICAxLCAgNjQsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgNzAsIDEyNiwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA4NiwgICAw
LCANCisgICAgICAwLCAgIDUsIDExNCwgICAwLCAgMTYsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgIDcwLCAgIDIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
CisgICAgIDU2LCAgIDAsICAgMCwgICA3LCAxMTQsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNzAsICAgMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisg
ICAgICAwLCAgIDAsICA3MCwgIDE4LCAgMTYsICAgMCwgDQorICAgICAgMiwgICAwLCAgIDAsICAg
MCwgIDI3LCAgIDAsIA0KKyAgICAgIDAsICAgNSwgMTE0LCAgIDAsICAxNiwgICAwLCANCisgICAg
ICAwLCAgIDAsICAgMCwgICAwLCAgNzAsICAgMiwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDUsIDEzMCwgICAwLCANCisgICAgIDE2
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgIDY0LCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQ1LCAgIDAsICAgMCwgICA3LCANCisgICAgMjQyLCAg
IDAsICAxNiwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNzAsICAxNCwgIDE2LCAg
IDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA3MCwgMTI2LCANCisgICAgIDE2LCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgs
IA0KKyAgICAgMzIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAg
MCwgICAwLCAgMTAsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0K
KyAgICAgNTQsICAgMCwgICAwLCAgIDYsICAxOCwgIDQ4LCANCisgICAgIDMyLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI2LCAgIDAsIA0KKyAg
ICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2
LCAgMTgsICA0OCwgDQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDIsICAgMCwgICAwLCAgIDAsICA0MiwgICAwLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgNDgsIA0KKyAgICAgMzIs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgNTgs
ICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAg
MCwgICAwLCAgIDYsICAxOCwgIDQ4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgICAgNCwgICAwLCAgIDAsICAgMCwgICAxLCAgNjQsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0LCAgIDAsICAgMCwgICA2LCAgMTgsICA0OCwg
DQorICAgICAzMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDUsICAgMCwgICAw
LCAgIDAsICAgMSwgIDY0LCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQor
ICAgICA1NCwgICAwLCAgIDAsICAgNiwgIDE4LCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCANCisgICAgIDEwLCAxMjgsICAzMiwgICAwLCAgIDAsICAgMCwgDQorICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgNTQsICAgMCwgICAwLCAgIDcs
ICAxOCwgIDMyLCANCisgICAgIDE2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAx
MCwgIDQ4LCAgMzIsICAgNCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDEwLCAgIDAsICAx
NiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgNTQsICAgMCwgDQorICAgICAgMCwg
ICA2LCAgMTgsICAgMCwgIDE2LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAyNiwg
MTI4LCANCisgICAgIDMyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAw
LCAgIDAsICAgMCwgIDU0LCAgIDAsIA0KKyAgICAgIDAsICAgNywgIDM0LCAgMzIsICAxNiwgICAw
LCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgMTAsICA0OCwgDQorICAgICAzMiwgICA0LCAg
IDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgMTAsICAgMCwgIDE2LCAgIDAsICAgMCwgICAwLCAN
CisgICAgICAwLCAgIDAsICA1NCwgICAwLCAgIDAsICAgNiwgDQorICAgICAxOCwgICAwLCAgMTYs
ICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgIDQyLCAxMjgsICAzMiwgICAwLCANCisg
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgNTQsICAg
MCwgICAwLCAgIDcsIA0KKyAgICAgNjYsICAzMiwgIDE2LCAgIDAsICAgMCwgICAwLCANCisgICAg
ICAwLCAgIDAsICAxMCwgIDQ4LCAgMzIsICAgNCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwg
IDEwLCAgIDAsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDU0
LCAgIDAsICAgMCwgICA2LCAgMTgsICAgMCwgDQorICAgICAxNiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIA0KKyAgICAgNTgsIDEyOCwgIDMyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgICA1NCwgICAwLCAgIDAsICAgNywgMTMwLCAg
MzIsIA0KKyAgICAgMTYsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgNDgs
ICAzMiwgICA0LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgMTAsICAgMCwgIDE2LCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA2MiwgICAwLCANCisgICAgICAwLCAgIDEsICA4
MywgIDg0LCAgNjUsICA4NCwgDQorICAgIDExNiwgICAwLCAgIDAsICAgMCwgIDIxLCAgIDAsIA0K
KyAgICAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
IDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCANCisgICAgIDEwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAg
MCwgICA1LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
DQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTI1ICsxLDEyNSBAQAotQEVDSE8gT0ZGCi1SRU0KLVJFTSBDb3B5cmlnaHQgKGMpIDIwMTMgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLVJFTSBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi1SRU0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLVJFTQotCi1QQVRIICVQQVRI
JTslUHJvZ3JhbUZpbGVzKHg4NiklXFdpbmRvd3MgS2l0c1w4LjFcYmluXHg4NjslRFhTREtfRElS
JVxVdGlsaXRpZXNcYmluXHg4NgotCi1zZXRsb2NhbAotc2V0IGVycm9yQ291bnQ9MAotc2V0IHN1
Y2Nlc3NDb3VudD0wCi1zZXQgZGVidWc9MAotCi1pZiAiJTEiID09ICJkZWJ1ZyIgKAotICAgIHNl
dCBkZWJ1Zz0xCi0pCi1pZiAiJTEiID09ICJyZWxlYXNlIiAoCi0gICAgc2V0IGRlYnVnPTAKLSkK
LQotOjogU2hhZGVycyBmb3IgT3BlbkdMIEVTIDIuMCBhbmQgT3BlbkdMIEVTIDMuMCsKLTo6ICAg
ICAgICAgICAgICB8IElucHV0IGZpbGUgICAgICAgICAgfCBFbnRyeSBwb2ludCAgICAgICAgICAg
fCBUeXBlICAgICAgICAgICAgfCBPdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwg
RGVidWcgfAotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBWU19QYXNzdGhy
b3VnaDJEICAgICAgICAgdnNfNF8wX2xldmVsXzlfMyAgY29tcGlsZWRccGFzc3Rocm91Z2gyZDEx
dnMuaCAgICAgICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhs
c2wgUFNfUGFzc3Rocm91Z2hSR0JBMkQgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVkXHBh
c3N0aHJvdWdocmdiYTJkMTFwcy5oICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0
aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCMkQgICAgICBwc180XzBfbGV2ZWxfOV8z
ICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjJkMTFwcy5oICAgICAgJWRlYnVnJQotY2FsbDpCdWls
ZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHMkQgICAgICAgcHNf
NF8wX2xldmVsXzlfMyAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzJkMTFwcy5oICAgICAgICVkZWJ1
ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hS
MkQgICAgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjJkMTFwcy5o
ICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBT
X1Bhc3N0aHJvdWdoTHVtMkQgICAgICBwc180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxwYXNzdGhy
b3VnaGx1bTJkMTFwcy5oICAgICAgJWRlYnVnJQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3Vn
aDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaEx1bUFscGhhMkQgcHNfNF8wX2xldmVsXzlfMyAgY29t
cGlsZWRccGFzc3Rocm91Z2hsdW1hbHBoYTJkMTFwcy5oICVkZWJ1ZyUKLQotY2FsbDpCdWlsZFNo
YWRlciBDbGVhcjExLmhsc2wgICAgICAgICBWU19DbGVhckZsb2F0ICAgICAgICAgICAgdnNfNF8w
X2xldmVsXzlfMyAgY29tcGlsZWRcY2xlYXJmbG9hdDExdnMuaCAgICAgICAgICAgICVkZWJ1ZyUK
LWNhbGw6QnVpbGRTaGFkZXIgQ2xlYXIxMS5obHNsICAgICAgICAgUFNfQ2xlYXJGbG9hdF9GTDkg
ICAgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVkXGNsZWFyZmxvYXQxMV9mbDlwcy5oICAg
ICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgIFBTX0Ns
ZWFyRmxvYXQgICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxjbGVhcmZsb2F0
MTFwcy5oICAgICAgICAgICAgJWRlYnVnJQotCi0KLTo6IFNoYWRlcnMgZm9yIE9wZW5HTCBFUyAz
LjArIG9ubHkKLTo6ICAgICAgICAgICAgICB8IElucHV0IGZpbGUgICAgICAgICAgfCBFbnRyeSBw
b2ludCAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBPdXRwdXQgZmlsZSAgICAgICAgICAg
ICAgICAgICAgICAgIHwgRGVidWcgfAotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEu
aGxzbCBQU19QYXNzdGhyb3VnaERlcHRoMkQgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRc
cGFzc3Rocm91Z2hkZXB0aDJkMTFwcy5oICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFz
c3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSR0JBMkRVSSAgIHBzXzRfMCAgICAgICAg
ICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTJkdWkxMXBzLmggICAlZGVidWclCi1jYWxsOkJ1
aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCQTJESSAgICBw
c180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEyZGkxMXBzLmggICAgJWRl
YnVnJQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3Vn
aFJHQjJEVUkgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2IyZHVp
MTFwcy5oICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wg
UFNfUGFzc3Rocm91Z2hSR0IyREkgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0
aHJvdWdocmdiMmRpMTFwcy5oICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJv
dWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkcyRFVJICAgICBwc180XzAgICAgICAgICAgICBj
b21waWxlZFxwYXNzdGhyb3VnaHJnMmR1aTExcHMuaCAgICAgJWRlYnVnJQotY2FsbDpCdWlsZFNo
YWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHMkRJICAgICAgcHNfNF8w
ICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzJkaTExcHMuaCAgICAgICVkZWJ1ZyUK
LWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSMkRV
SSAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjJkdWkxMXBzLmgg
ICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bh
c3N0aHJvdWdoUjJESSAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3Vn
aHIyZGkxMXBzLmggICAgICAgJWRlYnVnJQotCi0KLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91
Z2gzRDExLmhsc2wgVlNfUGFzc3Rocm91Z2gzRCAgICAgICAgIHZzXzRfMCAgICAgICAgICAgIGNv
bXBpbGVkXHBhc3N0aHJvdWdoM2QxMXZzLmggICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hh
ZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIEdTX1Bhc3N0aHJvdWdoM0QgICAgICAgICBnc180XzAg
ICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaDNkMTFncy5oICAgICAgICAgJWRlYnVnJQot
Y2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEz
RCAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhM2QxMXBzLmgg
ICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFz
c3Rocm91Z2hSR0JBM0RVSSAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdo
cmdiYTNkdWkxMXBzLmggICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0Qx
MS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCQTNESSAgICBwc180XzAgICAgICAgICAgICBjb21waWxl
ZFxwYXNzdGhyb3VnaHJnYmEzZGkxMXBzLmggICAgJWRlYnVnJQotY2FsbDpCdWlsZFNoYWRlciBQ
YXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQjNEICAgICAgcHNfNF8wICAgICAg
ICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2IzZDExcHMuaCAgICAgICVkZWJ1ZyUKLWNhbGw6
QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSR0IzRFVJICAg
IHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiM2R1aTExcHMuaCAgICAl
ZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJv
dWdoUkdCM0RJICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjNk
aTExcHMuaCAgICAgJWRlYnVnJQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxz
bCBQU19QYXNzdGhyb3VnaFJHM0QgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFz
c3Rocm91Z2hyZzNkMTFwcy5oICAgICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Ro
cm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSRzNEVUkgICAgIHBzXzRfMCAgICAgICAgICAg
IGNvbXBpbGVkXHBhc3N0aHJvdWdocmczZHVpMTFwcy5oICAgICAlZGVidWclCi1jYWxsOkJ1aWxk
U2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkczREkgICAgICBwc180
XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnM2RpMTFwcy5oICAgICAgJWRlYnVn
JQotY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFIz
RCAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyM2QxMXBzLmgg
ICAgICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNf
UGFzc3Rocm91Z2hSM0RVSSAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJv
dWdocjNkdWkxMXBzLmggICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdo
M0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUjNESSAgICAgICBwc180XzAgICAgICAgICAgICBjb21w
aWxlZFxwYXNzdGhyb3VnaHIzZGkxMXBzLmggICAgICAgJWRlYnVnJQotY2FsbDpCdWlsZFNoYWRl
ciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaEx1bTNEICAgICAgcHNfNF8wICAg
ICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hsdW0zZDExcHMuaCAgICAgICVkZWJ1ZyUKLWNh
bGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hMdW1BbHBo
YTNEIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdobHVtYWxwaGEzZDExcHMu
aCAlZGVidWclCi0KLWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dp
enpsZUYyRCAgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGVmMmRw
cy5oICAgICAgICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNs
ICAgICAgIFBTX1N3aXp6bGVJMkQgICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxl
ZFxzd2l6emxlaTJkcHMuaCAgICAgICAgICAgICAgJWRlYnVnJQotY2FsbDpCdWlsZFNoYWRlciBT
d2l6emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxlVUkyRCAgICAgICAgICAgcHNfNF8wICAgICAg
ICAgICAgY29tcGlsZWRcc3dpenpsZXVpMmRwcy5oICAgICAgICAgICAgICVkZWJ1ZyUKLQotY2Fs
bDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxlRjNEICAgICAgICAg
ICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dpenpsZWYzZHBzLmggICAgICAgICAgICAg
ICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenps
ZUkzRCAgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGVpM2Rwcy5o
ICAgICAgICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAg
ICAgIFBTX1N3aXp6bGVVSTNEICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxz
d2l6emxldWkzZHBzLmggICAgICAgICAgICAgJWRlYnVnJQotCi1jYWxsOkJ1aWxkU2hhZGVyIFN3
aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVGMkRBcnJheSAgICAgICBwc180XzAgICAgICAg
ICAgICBjb21waWxlZFxzd2l6emxlZjJkYXJyYXlwcy5oICAgICAgICAgJWRlYnVnJQotY2FsbDpC
dWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxlSTJEQXJyYXkgICAgICAg
cHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dpenpsZWkyZGFycmF5cHMuaCAgICAgICAgICVk
ZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZVVJ
MkRBcnJheSAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGV1aTJkYXJyYXlw
cy5oICAgICAgICAlZGVidWclCi0KLWNhbGw6QnVpbGRTaGFkZXIgQ2xlYXIxMS5obHNsICAgICAg
ICAgVlNfQ2xlYXJVaW50ICAgICAgICAgICAgIHZzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXGNs
ZWFydWludDExdnMuaCAgICAgICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIENsZWFy
MTEuaGxzbCAgICAgICAgIFBTX0NsZWFyVWludCAgICAgICAgICAgICBwc180XzAgICAgICAgICAg
ICBjb21waWxlZFxjbGVhcnVpbnQxMXBzLmggICAgICAgICAgICAgJWRlYnVnJQotCi1jYWxsOkJ1
aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgIFZTX0NsZWFyU2ludCAgICAgICAgICAgICB2
c180XzAgICAgICAgICAgICBjb21waWxlZFxjbGVhcnNpbnQxMXZzLmggICAgICAgICAgICAgJWRl
YnVnJQotY2FsbDpCdWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAgICAgICBQU19DbGVhclNpbnQg
ICAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcY2xlYXJzaW50MTFwcy5oICAg
ICAgICAgICAgICVkZWJ1ZyUKLQotY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1RleHR1cmUxMS5o
bHNsICBWU19CdWZmZXJUb1RleHR1cmUgICAgICAgIHZzXzRfMCAgICAgICAgY29tcGlsZWQvYnVm
ZmVydG90ZXh0dXJlMTFfdnMuaCAgICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgQnVmZmVy
VG9UZXh0dXJlMTEuaGxzbCAgR1NfQnVmZmVyVG9UZXh0dXJlICAgICAgICBnc180XzAgICAgICAg
IGNvbXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX2dzLmggICAgICAlZGVidWclCi1jYWxsOkJ1aWxk
U2hhZGVyIEJ1ZmZlclRvVGV4dHVyZTExLmhsc2wgIFBTX0J1ZmZlclRvVGV4dHVyZV80RiAgICAg
cHNfNF8wICAgICAgICBjb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180Zi5oICAgJWRlYnVn
JQotY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1RleHR1cmUxMS5obHNsICBQU19CdWZmZXJUb1Rl
eHR1cmVfNEkgICAgIHBzXzRfMCAgICAgICAgY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNf
NGkuaCAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxzbCAg
UFNfQnVmZmVyVG9UZXh0dXJlXzRVSSAgICBwc180XzAgICAgICAgIGNvbXBpbGVkL2J1ZmZlcnRv
dGV4dHVyZTExX3BzXzR1aS5oICAlZGVidWclCi0KLWVjaG8uCi0KLWlmICVzdWNjZXNzQ291bnQl
IEdUUiAwICgKLSAgIGVjaG8gJXN1Y2Nlc3NDb3VudCUgc2hhZGVycyBjb21waWxlZCBzdWNjZXNz
ZnVsbHkuCi0pCi1pZiAlZXJyb3JDb3VudCUgR1RSIDAgKAotICAgZWNobyBUaGVyZSB3ZXJlICVl
cnJvckNvdW50JSBzaGFkZXIgY29tcGlsYXRpb24gZXJyb3JzLgotKQotCi1lbmRsb2NhbAotZXhp
dCAvYgotCi06QnVpbGRTaGFkZXIKLXNldCBpbnB1dD0lfjEKLXNldCBlbnRyeT0lfjIKLXNldCB0
eXBlPSV+Mwotc2V0IG91dHB1dD0lfjQKLXNldCBkZWJ1Zz0lfjUKLQotaWYgJWRlYnVnJSA9PSAw
ICgKLSAgICBzZXQgImJ1aWxkQ01EPWZ4YyAvbm9sb2dvIC9FICVlbnRyeSUgL1QgJXR5cGUlIC9G
aCAlb3V0cHV0JSAlaW5wdXQlIgotKSBlbHNlICgKLSAgICBzZXQgImJ1aWxkQ01EPWZ4YyAvbm9s
b2dvIC9aaSAvT2QgL0UgJWVudHJ5JSAvVCAldHlwZSUgL0ZoICVvdXRwdXQlICVpbnB1dCUiCi0p
Ci0KLXNldCBlcnJvcj0wCi0lYnVpbGRDTUQlIHx8IHNldCBlcnJvcj0xCi0KLWlmICVlcnJvciUg
PT0gMCAoCi0gICAgc2V0IC9hIHN1Y2Nlc3NDb3VudD0lc3VjY2Vzc0NvdW50JSsxCi0pIGVsc2Ug
KAotICAgIHNldCAvYSBlcnJvckNvdW50PSVlcnJvckNvdW50JSsxCi0pCi0KLWV4aXQgL2IKK0BF
Q0hPIE9GRg0KK1JFTQ0KK1JFTSBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCitSRU0gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQ0KK1JFTSBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLg0KK1JFTQ0KKw0KK1BBVEggJVBBVEglOyVQcm9ncmFt
RmlsZXMoeDg2KSVcV2luZG93cyBLaXRzXDguMVxiaW5ceDg2OyVEWFNES19ESVIlXFV0aWxpdGll
c1xiaW5ceDg2DQorDQorc2V0bG9jYWwNCitzZXQgZXJyb3JDb3VudD0wDQorc2V0IHN1Y2Nlc3ND
b3VudD0wDQorc2V0IGRlYnVnPTANCisNCitpZiAiJTEiID09ICJkZWJ1ZyIgKA0KKyAgICBzZXQg
ZGVidWc9MQ0KKykNCitpZiAiJTEiID09ICJyZWxlYXNlIiAoDQorICAgIHNldCBkZWJ1Zz0wDQor
KQ0KKw0KKzo6IFNoYWRlcnMgZm9yIE9wZW5HTCBFUyAyLjAgYW5kIE9wZW5HTCBFUyAzLjArDQor
OjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAgICAgICB8IEVudHJ5IHBvaW50ICAgICAg
ICAgICB8IFR5cGUgICAgICAgICAgICB8IE91dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAg
ICAgfCBEZWJ1ZyB8DQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBWU19Q
YXNzdGhyb3VnaDJEICAgICAgICAgdnNfNF8wX2xldmVsXzlfMyAgY29tcGlsZWRccGFzc3Rocm91
Z2gyZDExdnMuaCAgICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdo
MkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCQTJEICAgICBwc180XzBfbGV2ZWxfOV8zICBjb21w
aWxlZFxwYXNzdGhyb3VnaHJnYmEyZDExcHMuaCAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFk
ZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSR0IyRCAgICAgIHBzXzRfMF9s
ZXZlbF85XzMgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiMmQxMXBzLmggICAgICAlZGVidWclDQor
Y2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHMkQg
ICAgICAgcHNfNF8wX2xldmVsXzlfMyAgY29tcGlsZWRccGFzc3Rocm91Z2hyZzJkMTFwcy5oICAg
ICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bh
c3N0aHJvdWdoUjJEICAgICAgICBwc180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxwYXNzdGhyb3Vn
aHIyZDExcHMuaCAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gy
RDExLmhsc2wgUFNfUGFzc3Rocm91Z2hMdW0yRCAgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBp
bGVkXHBhc3N0aHJvdWdobHVtMmQxMXBzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRl
ciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaEx1bUFscGhhMkQgcHNfNF8wX2xl
dmVsXzlfMyAgY29tcGlsZWRccGFzc3Rocm91Z2hsdW1hbHBoYTJkMTFwcy5oICVkZWJ1ZyUNCisN
CitjYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgIFZTX0NsZWFyRmxvYXQgICAg
ICAgICAgICB2c180XzBfbGV2ZWxfOV8zICBjb21waWxlZFxjbGVhcmZsb2F0MTF2cy5oICAgICAg
ICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQ2xlYXIxMS5obHNsICAgICAgICAgUFNf
Q2xlYXJGbG9hdF9GTDkgICAgICAgIHBzXzRfMF9sZXZlbF85XzMgIGNvbXBpbGVkXGNsZWFyZmxv
YXQxMV9mbDlwcy5oICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBDbGVhcjExLmhs
c2wgICAgICAgICBQU19DbGVhckZsb2F0ICAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29t
cGlsZWRcY2xlYXJmbG9hdDExcHMuaCAgICAgICAgICAgICVkZWJ1ZyUNCisNCisNCis6OiBTaGFk
ZXJzIGZvciBPcGVuR0wgRVMgMy4wKyBvbmx5DQorOjogICAgICAgICAgICAgIHwgSW5wdXQgZmls
ZSAgICAgICAgICB8IEVudHJ5IHBvaW50ICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IE91
dHB1dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWJ1ZyB8DQorY2FsbDpCdWlsZFNo
YWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaERlcHRoMkQgICAgcHNfNF8w
ICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hkZXB0aDJkMTFwcy5oICAgICVkZWJ1ZyUN
CitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdC
QTJEVUkgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEyZHVpMTFw
cy5oICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNf
UGFzc3Rocm91Z2hSR0JBMkRJICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJv
dWdocmdiYTJkaTExcHMuaCAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3Vn
aDJEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQjJEVUkgICAgcHNfNF8wICAgICAgICAgICAgY29t
cGlsZWRccGFzc3Rocm91Z2hyZ2IyZHVpMTFwcy5oICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hh
ZGVyIFBhc3N0aHJvdWdoMkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCMkRJICAgICBwc180XzAg
ICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjJkaTExcHMuaCAgICAgJWRlYnVnJQ0K
K2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSRzJE
VUkgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmcyZHVpMTFwcy5o
ICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDJEMTEuaGxzbCBQU19Q
YXNzdGhyb3VnaFJHMkRJICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91
Z2hyZzJkaTExcHMuaCAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdo
MkQxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUjJEVUkgICAgICBwc180XzAgICAgICAgICAgICBjb21w
aWxlZFxwYXNzdGhyb3VnaHIyZHVpMTFwcy5oICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFk
ZXIgUGFzc3Rocm91Z2gyRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSMkRJICAgICAgIHBzXzRfMCAg
ICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjJkaTExcHMuaCAgICAgICAlZGVidWclDQor
DQorDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBWU19QYXNzdGhyb3Vn
aDNEICAgICAgICAgdnNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2gzZDExdnMu
aCAgICAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNs
IEdTX1Bhc3N0aHJvdWdoM0QgICAgICAgICBnc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNz
dGhyb3VnaDNkMTFncy5oICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Ro
cm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSR0JBM0QgICAgIHBzXzRfMCAgICAgICAgICAg
IGNvbXBpbGVkXHBhc3N0aHJvdWdocmdiYTNkMTFwcy5oICAgICAlZGVidWclDQorY2FsbDpCdWls
ZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQkEzRFVJICAgcHNf
NF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyZ2JhM2R1aTExcHMuaCAgICVkZWJ1
ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdo
UkdCQTNESSAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYmEzZGkx
MXBzLmggICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wg
UFNfUGFzc3Rocm91Z2hSR0IzRCAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0
aHJvdWdocmdiM2QxMXBzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhy
b3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFJHQjNEVUkgICAgcHNfNF8wICAgICAgICAgICAg
Y29tcGlsZWRccGFzc3Rocm91Z2hyZ2IzZHVpMTFwcy5oICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxk
U2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkdCM0RJICAgICBwc180
XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhyb3VnaHJnYjNkaTExcHMuaCAgICAgJWRlYnVn
JQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hS
RzNEICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocmczZDExcHMu
aCAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQ
U19QYXNzdGhyb3VnaFJHM0RVSSAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Ro
cm91Z2hyZzNkdWkxMXBzLmggICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJv
dWdoM0QxMS5obHNsIFBTX1Bhc3N0aHJvdWdoUkczREkgICAgICBwc180XzAgICAgICAgICAgICBj
b21waWxlZFxwYXNzdGhyb3VnaHJnM2RpMTFwcy5oICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRT
aGFkZXIgUGFzc3Rocm91Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hSM0QgICAgICAgIHBzXzRf
MCAgICAgICAgICAgIGNvbXBpbGVkXHBhc3N0aHJvdWdocjNkMTFwcy5oICAgICAgICAlZGVidWcl
DQorY2FsbDpCdWlsZFNoYWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaFIz
RFVJICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hyM2R1aTExcHMu
aCAgICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIFBhc3N0aHJvdWdoM0QxMS5obHNsIFBT
X1Bhc3N0aHJvdWdoUjNESSAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxwYXNzdGhy
b3VnaHIzZGkxMXBzLmggICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgUGFzc3Rocm91
Z2gzRDExLmhsc2wgUFNfUGFzc3Rocm91Z2hMdW0zRCAgICAgIHBzXzRfMCAgICAgICAgICAgIGNv
bXBpbGVkXHBhc3N0aHJvdWdobHVtM2QxMXBzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNo
YWRlciBQYXNzdGhyb3VnaDNEMTEuaGxzbCBQU19QYXNzdGhyb3VnaEx1bUFscGhhM0QgcHNfNF8w
ICAgICAgICAgICAgY29tcGlsZWRccGFzc3Rocm91Z2hsdW1hbHBoYTNkMTFwcy5oICVkZWJ1ZyUN
CisNCitjYWxsOkJ1aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVGMkQg
ICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxzd2l6emxlZjJkcHMuaCAgICAg
ICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAg
UFNfU3dpenpsZUkyRCAgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6
bGVpMmRwcy5oICAgICAgICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6emxl
MTEuaGxzbCAgICAgICBQU19Td2l6emxlVUkyRCAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAg
Y29tcGlsZWRcc3dpenpsZXVpMmRwcy5oICAgICAgICAgICAgICVkZWJ1ZyUNCisNCitjYWxsOkJ1
aWxkU2hhZGVyIFN3aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVGM0QgICAgICAgICAgICBw
c180XzAgICAgICAgICAgICBjb21waWxlZFxzd2l6emxlZjNkcHMuaCAgICAgICAgICAgICAgJWRl
YnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZUkz
RCAgICAgICAgICAgIHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGVpM2Rwcy5oICAg
ICAgICAgICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAg
ICBQU19Td2l6emxlVUkzRCAgICAgICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dp
enpsZXVpM2Rwcy5oICAgICAgICAgICAgICVkZWJ1ZyUNCisNCitjYWxsOkJ1aWxkU2hhZGVyIFN3
aXp6bGUxMS5obHNsICAgICAgIFBTX1N3aXp6bGVGMkRBcnJheSAgICAgICBwc180XzAgICAgICAg
ICAgICBjb21waWxlZFxzd2l6emxlZjJkYXJyYXlwcy5oICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6
QnVpbGRTaGFkZXIgU3dpenpsZTExLmhsc2wgICAgICAgUFNfU3dpenpsZUkyREFycmF5ICAgICAg
IHBzXzRfMCAgICAgICAgICAgIGNvbXBpbGVkXHN3aXp6bGVpMmRhcnJheXBzLmggICAgICAgICAl
ZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBTd2l6emxlMTEuaGxzbCAgICAgICBQU19Td2l6emxl
VUkyREFycmF5ICAgICAgcHNfNF8wICAgICAgICAgICAgY29tcGlsZWRcc3dpenpsZXVpMmRhcnJh
eXBzLmggICAgICAgICVkZWJ1ZyUNCisNCitjYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAg
ICAgICAgIFZTX0NsZWFyVWludCAgICAgICAgICAgICB2c180XzAgICAgICAgICAgICBjb21waWxl
ZFxjbGVhcnVpbnQxMXZzLmggICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIg
Q2xlYXIxMS5obHNsICAgICAgICAgUFNfQ2xlYXJVaW50ICAgICAgICAgICAgIHBzXzRfMCAgICAg
ICAgICAgIGNvbXBpbGVkXGNsZWFydWludDExcHMuaCAgICAgICAgICAgICAlZGVidWclDQorDQor
Y2FsbDpCdWlsZFNoYWRlciBDbGVhcjExLmhsc2wgICAgICAgICBWU19DbGVhclNpbnQgICAgICAg
ICAgICAgdnNfNF8wICAgICAgICAgICAgY29tcGlsZWRcY2xlYXJzaW50MTF2cy5oICAgICAgICAg
ICAgICVkZWJ1ZyUNCitjYWxsOkJ1aWxkU2hhZGVyIENsZWFyMTEuaGxzbCAgICAgICAgIFBTX0Ns
ZWFyU2ludCAgICAgICAgICAgICBwc180XzAgICAgICAgICAgICBjb21waWxlZFxjbGVhcnNpbnQx
MXBzLmggICAgICAgICAgICAgJWRlYnVnJQ0KKw0KK2NhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9U
ZXh0dXJlMTEuaGxzbCAgVlNfQnVmZmVyVG9UZXh0dXJlICAgICAgICB2c180XzAgICAgICAgIGNv
bXBpbGVkL2J1ZmZlcnRvdGV4dHVyZTExX3ZzLmggICAgICAlZGVidWclDQorY2FsbDpCdWlsZFNo
YWRlciBCdWZmZXJUb1RleHR1cmUxMS5obHNsICBHU19CdWZmZXJUb1RleHR1cmUgICAgICAgIGdz
XzRfMCAgICAgICAgY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfZ3MuaCAgICAgICVkZWJ1ZyUN
CitjYWxsOkJ1aWxkU2hhZGVyIEJ1ZmZlclRvVGV4dHVyZTExLmhsc2wgIFBTX0J1ZmZlclRvVGV4
dHVyZV80RiAgICAgcHNfNF8wICAgICAgICBjb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180
Zi5oICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQnVmZmVyVG9UZXh0dXJlMTEuaGxzbCAg
UFNfQnVmZmVyVG9UZXh0dXJlXzRJICAgICBwc180XzAgICAgICAgIGNvbXBpbGVkL2J1ZmZlcnRv
dGV4dHVyZTExX3BzXzRpLmggICAlZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBCdWZmZXJUb1Rl
eHR1cmUxMS5obHNsICBQU19CdWZmZXJUb1RleHR1cmVfNFVJICAgIHBzXzRfMCAgICAgICAgY29t
cGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNHVpLmggICVkZWJ1ZyUNCisNCitlY2hvLg0KKw0K
K2lmICVzdWNjZXNzQ291bnQlIEdUUiAwICgNCisgICBlY2hvICVzdWNjZXNzQ291bnQlIHNoYWRl
cnMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5Lg0KKykNCitpZiAlZXJyb3JDb3VudCUgR1RSIDAgKA0K
KyAgIGVjaG8gVGhlcmUgd2VyZSAlZXJyb3JDb3VudCUgc2hhZGVyIGNvbXBpbGF0aW9uIGVycm9y
cy4NCispDQorDQorZW5kbG9jYWwNCitleGl0IC9iDQorDQorOkJ1aWxkU2hhZGVyDQorc2V0IGlu
cHV0PSV+MQ0KK3NldCBlbnRyeT0lfjINCitzZXQgdHlwZT0lfjMNCitzZXQgb3V0cHV0PSV+NA0K
K3NldCBkZWJ1Zz0lfjUNCisNCitpZiAlZGVidWclID09IDAgKA0KKyAgICBzZXQgImJ1aWxkQ01E
PWZ4YyAvbm9sb2dvIC9FICVlbnRyeSUgL1QgJXR5cGUlIC9GaCAlb3V0cHV0JSAlaW5wdXQlIg0K
KykgZWxzZSAoDQorICAgIHNldCAiYnVpbGRDTUQ9ZnhjIC9ub2xvZ28gL1ppIC9PZCAvRSAlZW50
cnklIC9UICV0eXBlJSAvRmggJW91dHB1dCUgJWlucHV0JSINCispDQorDQorc2V0IGVycm9yPTAN
CislYnVpbGRDTUQlIHx8IHNldCBlcnJvcj0xDQorDQoraWYgJWVycm9yJSA9PSAwICgNCisgICAg
c2V0IC9hIHN1Y2Nlc3NDb3VudD0lc3VjY2Vzc0NvdW50JSsxDQorKSBlbHNlICgNCisgICAgc2V0
IC9hIGVycm9yQ291bnQ9JWVycm9yQ291bnQlKzENCispDQorDQorZXhpdCAvYg0KSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4
dHVyZV9mb3JtYXRfZGF0YS5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfZGF0YS5q
c29uCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MDIgQEAKK3sKKyAgIkFOR0xFX0ZPUk1BVF9OT05FIjogeworCisgIH0s
CisgICJBTkdMRV9GT1JNQVRfQThfVU5PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9BOF9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9BOF9VTk9STSIs
CisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9BOF9VTk9STSIsCisgICAgImNoYW5uZWxz
IjogImEiLAorICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKKyAgICAiYml0cyI6IHsgImFs
cGhhIjogOCB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0FMUEhBOF9FWFQiCisgIH0s
CisgICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjog
InVub3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDgsICJibHVlIjogOCwg
ImFscGhhIjogOCB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQkE4IgorICB9LAor
ICAiQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSI6IHsKKyAgICAidGV4Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0iLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VOT1JNIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNv
bXBvbmVudFR5cGUiOiAidW5vcm0iLAorICAgICJiaXRzIjogeyAicmVkIjogMTYsICJncmVlbiI6
IDE2LCAiYmx1ZSI6IDE2LCAiYWxwaGEiOiAxNiB9CisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FUIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FUIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9GTE9BVCIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQiLAorICAgICJjaGFubmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJmbG9h
dCIsCisgICAgImJpdHMiOiB7ICJyZWQiOiAxNiwgImdyZWVuIjogMTYsICJibHVlIjogMTYsICJh
bHBoYSI6IDE2IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQTE2RiIKKyAgfSwK
KyAgIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQiOiB7CisgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQiLAorICAgICJzcnZGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJj
b21wb25lbnRUeXBlIjogImZsb2F0IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDMyLCAiZ3JlZW4i
OiAzMiwgImJsdWUiOiAzMiwgImFscGhhIjogMzIgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6
ICJHTF9SR0JBMzJGIgorICB9LAorICAiQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNIjogewor
ICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0iLAorICAgICJzcnZG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0iLAorICAgICJydHZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0iLAorICAgICJjaGFubmVscyI6ICJiZ3JhIiwKKyAg
ICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3Jl
ZW4iOiA4LCAiYmx1ZSI6IDgsICJhbHBoYSI6IDggfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6
ICJHTF9CR1JBOF9FWFQiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9O
UkVOREVSQUJMRSI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAg
ICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAorICAg
ICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJsdWUiOiA4LCAiYWxwaGEiOiA4IH0s
CisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQTgiCisgIH0sCisgICJBTkdMRV9GT1JN
QVRfQkMxX1VOT1JNIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JN
IiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDMV9VTk9STSIsCisgICAgImNoYW5u
ZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKKyAgICAic3dpenps
ZUZvcm1hdCI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAorICAgICJnbEludGVybmFs
Rm9ybWF0IjogIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUIgorICB9LAorICAiQU5H
TEVfRk9STUFUX0JDMl9VTk9STSI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JD
Ml9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzJfVU5PUk0iLAorICAg
ICJjaGFubmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAg
InN3aXp6bGVGb3JtYXQiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAiZ2xJ
bnRlcm5hbEZvcm1hdCI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIgorICB9
LAorICAiQU5HTEVfRk9STUFUX0JDM19VTk9STSI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX0JDM19VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzNfVU5P
Uk0iLAorICAgICJjaGFubmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9y
bSIsCisgICAgInN3aXp6bGVGb3JtYXQiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwK
KyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FO
R0xFIgorICB9LAorICAiQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEUiOiB7Cisg
ICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9TTk9STSIsCisgICAgInNydkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SOF9TTk9STSIsCisgICAgImNoYW5uZWxzIjogInIiLAorICAgICJjb21w
b25lbnRUeXBlIjogInNub3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKKyAgICAiZ2xJ
bnRlcm5hbEZvcm1hdCI6ICJHTF9SOF9TTk9STSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SOEc4
X1NOT1JNX05PTlJFTkRFUkFCTEUiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9S
OEc4X1NOT1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfU05PUk0iLAor
ICAgICJjaGFubmVscyI6ICJyZyIsCisgICAgImNvbXBvbmVudFR5cGUiOiAic25vcm0iLAorICAg
ICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCB9LAorICAgICJnbEludGVybmFsRm9ybWF0
IjogIkdMX1JHOF9TTk9STSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9T
UkdCX05PTlJFTkRFUkFCTEUiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STV9TUkdCIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNX1NSR0IiLAorICAgICJjaGFubmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9uZW50VHlw
ZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4LCAiYmx1ZSI6
IDgsICJhbHBoYSI6IDggfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9TUkdCOF9BTFBI
QTgiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwxMCI6IHsKKyAg
ICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTIiwKKyAgICAic3J2Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUyIsCisgICAgImRzdkZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCIsCisgICAgImNoYW5uZWxzIjogImRz
IiwKKyAgICAiYml0cyI6IHsgImRlcHRoIjogMjQsICJzdGVuY2lsIjogOCB9LAorICAgICJnbElu
dGVybmFsRm9ybWF0IjogIkdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTIgorICB9LAorICAiQU5HTEVf
Rk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQiLAorICAgICJkc3ZGb3JtYXQiOiAiRFhHSV9GT1JN
QVRfRDI0X1VOT1JNX1M4X1VJTlQiLAorICAgICJjaGFubmVscyI6ICJkcyIsCisgICAgImJpdHMi
OiB7ICJkZXB0aCI6IDI0LCAic3RlbmNpbCI6IDggfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6
ICJHTF9ERVBUSDI0X1NURU5DSUw4X09FUyIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9EMzJfRkxP
QVRfUzhYMjRfVUlOVF9GTDEwIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMy
RzhYMjRfVFlQRUxFU1MiLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FU
X1g4WDI0X1RZUEVMRVNTIiwKKyAgICAiZHN2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0QzMl9GTE9B
VF9TOFgyNF9VSU5UIiwKKyAgICAiY2hhbm5lbHMiOiAiZHMiLAorICAgICJiaXRzIjogeyAiZGVw
dGgiOiAzMiwgInN0ZW5jaWwiOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfREVQ
VEgzMkZfU1RFTkNJTDgiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfRDE2X1VOT1JNX0ZMMTAiOiB7
CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MiLAorICAgICJzcnZG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X1VOT1JNIiwKKyAgICAiZHN2Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX0QxNl9VTk9STSIsCisgICAgImNoYW5uZWxzIjogImQiLAorICAgICJjb21wb25lbnRU
eXBlIjogInVub3JtIiwKKyAgICAiYml0cyI6IHsgImRlcHRoIjogMTYgfSwKKyAgICAiZ2xJbnRl
cm5hbEZvcm1hdCI6ICJHTF9ERVBUSF9DT01QT05FTlQxNiIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1B
VF9EMTZfVU5PUk1fRkw5XzMiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9EMTZf
VU5PUk0iLAorICAgICJkc3ZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfRDE2X1VOT1JNIiwKKyAgICAi
Y2hhbm5lbHMiOiAiZCIsCisgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAorICAgICJiaXRz
IjogeyAiZGVwdGgiOiAxNiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0RFUFRIX0NP
TVBPTkVOVDE2IgorICB9LAorICAiQU5HTEVfRk9STUFUX0QzMl9GTE9BVCI6IHsKKyAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMl9UWVBFTEVTUyIsCisgICAgInNydkZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMzJfRkxPQVQiLAorICAgICJkc3ZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfRDMy
X0ZMT0FUIiwKKyAgICAiY2hhbm5lbHMiOiAiZCIsCisgICAgImNvbXBvbmVudFR5cGUiOiAiZmxv
YXQiLAorICAgICJiaXRzIjogeyAiZGVwdGgiOiAzMiB9LAorICAgICJnbEludGVybmFsRm9ybWF0
IjogIkdMX0RFUFRIX0NPTVBPTkVOVDMyRiIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SMTFHMTFC
MTBfRkxPQVQiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTFHMTFCMTBfRkxP
QVQiLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUIiwKKyAg
ICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCIsCisgICAgImNoYW5u
ZWxzIjogInJnYiIsCisgICAgImNvbXBvbmVudFR5cGUiOiAgImZsb2F0IiwKKyAgICAiYml0cyI6
IHsgInJlZCI6IDExLCAiZ3JlZW4iOiAxMSwgImJsdWUiOiAxMCB9LAorICAgICJnbEludGVybmFs
Rm9ybWF0IjogIkdMX1IxMUZfRzExRl9CMTBGIgorICB9LAorICAiQU5HTEVfRk9STUFUX1IxNl9G
TE9BVCI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNl9GTE9BVCIsCisgICAg
InNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZfRkxPQVQiLAorICAgICJydHZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjE2X0ZMT0FUIiwKKyAgICAiY2hhbm5lbHMiOiAiciIsCisgICAgImNvbXBv
bmVudFR5cGUiOiAiZmxvYXQiLAorICAgICJiaXRzIjogeyAicmVkIjogMTYgfSwKKyAgICAiZ2xJ
bnRlcm5hbEZvcm1hdCI6ICJHTF9SMTZGIgorICB9LAorICAiQU5HTEVfRk9STUFUX1IxNl9TSU5U
IjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X1NJTlQiLAorICAgICJzcnZG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X1NJTlQiLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjE2X1NJTlQiLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlw
ZSI6ICJpbnQiLAorICAgICJiaXRzIjogeyAicmVkIjogMTYgfSwKKyAgICAiZ2xJbnRlcm5hbEZv
cm1hdCI6ICJHTF9SMTZJIgorICB9LAorICAiQU5HTEVfRk9STUFUX1IxNl9VSU5UIjogeworICAg
ICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2X1VJTlQiLAorICAgICJzcnZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjE2X1VJTlQiLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2
X1VJTlQiLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1aW50
IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDE2IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAi
R0xfUjE2VUkiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjMyX0ZMT0FUIjogeworICAgICJ0ZXhG
b3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyX0ZMT0FUIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX1IzMl9GTE9BVCIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQiLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJmbG9hdCIs
CisgICAgImJpdHMiOiB7ICJyZWQiOiAzMiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdM
X1IzMkYiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjMyX1NJTlQiOiB7CisgICAgInRleEZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9SMzJfU0lOVCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMzJfU0lOVCIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfU0lOVCIsCisg
ICAgImNoYW5uZWxzIjogInIiLAorICAgICJjb21wb25lbnRUeXBlIjogImludCIsCisgICAgImJp
dHMiOiB7ICJyZWQiOiAzMiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1IzMkkiCisg
IH0sCisgICJBTkdMRV9GT1JNQVRfUjMyX1VJTlQiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMzJfVUlOVCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlO
VCIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMzJfVUlOVCIsCisgICAgImNoYW5u
ZWxzIjogInIiLAorICAgICJjb21wb25lbnRUeXBlIjogInVpbnQiLAorICAgICJiaXRzIjogeyAi
cmVkIjogMzIgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SMzJVSSIKKyAgfSwKKyAg
IkFOR0xFX0ZPUk1BVF9SOF9VTk9STV9OT05SRU5ERVJBQkxFIjogeworICAgICJ0ZXhGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhfVU5PUk0iLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjhfVU5PUk0iLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1
bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQi
OiAiR0xfUjgiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjhfVU5PUk0iOiB7CisgICAgInRleEZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SOF9VTk9STSIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VTk9STSIs
CisgICAgImNoYW5uZWxzIjogInIiLAorICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKKyAg
ICAiYml0cyI6IHsgInJlZCI6IDggfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SOCIK
KyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SOF9TSU5UIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhH
SV9GT1JNQVRfUjhfU0lOVCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9TSU5U
IiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4X1NJTlQiLAorICAgICJjaGFubmVs
cyI6ICJyIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJpbnQiLAorICAgICJiaXRzIjogeyAicmVk
IjogOCB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1I4SSIKKyAgfSwKKyAgIkFOR0xF
X0ZPUk1BVF9SOF9VSU5UIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfVUlO
VCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOF9VSU5UIiwKKyAgICAicnR2Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1I4X1VJTlQiLAorICAgICJjaGFubmVscyI6ICJyIiwKKyAgICAi
Y29tcG9uZW50VHlwZSI6ICJ1aW50IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDggfSwKKyAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SOFVJIgorICB9LAorICAiQU5HTEVfRk9STUFUX1I4X1NO
T1JNIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfU05PUk0iLAorICAgICJz
cnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhfU05PUk0iLAorICAgICJjaGFubmVscyI6ICJyIiwK
KyAgICAiY29tcG9uZW50VHlwZSI6ICJzbm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA4IH0s
CisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUjhfU05PUk0iCisgIH0sCisgICJBTkdMRV9G
T1JNQVRfUjE2RzE2X0ZMT0FUIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2
RzE2X0ZMT0FUIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCIs
CisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQiLAorICAgICJjaGFu
bmVscyI6ICJyZyIsCisgICAgImNvbXBvbmVudFR5cGUiOiAiZmxvYXQiLAorICAgICJiaXRzIjog
eyAicmVkIjogMTYsICJncmVlbiI6IDE2IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xf
UkcxNkYiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjE2RzE2X1NJTlQiOiB7CisgICAgInRleEZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9SMTZHMTZfU0lOVCIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZH
MTZfU0lOVCIsCisgICAgImNoYW5uZWxzIjogInJnIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJp
bnQiLAorICAgICJiaXRzIjogeyAicmVkIjogMTYsICJncmVlbiI6IDE2IH0sCisgICAgImdsSW50
ZXJuYWxGb3JtYXQiOiAiR0xfUkcxNkkiCisgIH0sCisgICJBTkdMRV9GT1JNQVRfUjE2RzE2X1VJ
TlQiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCIsCisgICAg
InNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCIsCisgICAgInJ0dkZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCIsCisgICAgImNoYW5uZWxzIjogInJnIiwKKyAgICAi
Y29tcG9uZW50VHlwZSI6ICJ1aW50IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAiZ3JlZW4i
OiAxNiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHMTZVSSIKKyAgfSwKKyAgIkFO
R0xFX0ZPUk1BVF9SMzJHMzJfRkxPQVQiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQiLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjMyRzMyX0ZM
T0FUIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMl9GTE9BVCIsCisgICAg
ImNoYW5uZWxzIjogInJnIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJmbG9hdCIsCisgICAgImJp
dHMiOiB7ICJyZWQiOiAzMiwgImdyZWVuIjogMzIgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6
ICJHTF9SRzMyRiIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SMzJHMzJfU0lOVCI6IHsKKyAgICAi
dGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMl9TSU5UIiwKKyAgICAic3J2Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IzMkczMl9TSU5UIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1IzMkczMl9TSU5UIiwKKyAgICAiY2hhbm5lbHMiOiAicmciLAorICAgICJjb21wb25lbnRUeXBl
IjogImludCIsCisgICAgImJpdHMiOiB7ICJyZWQiOiAzMiwgImdyZWVuIjogMzIgfSwKKyAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzMySSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SMzJH
MzJfVUlOVCI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMl9VSU5UIiwK
KyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMl9VSU5UIiwKKyAgICAicnR2Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1IzMkczMl9VSU5UIiwKKyAgICAiY2hhbm5lbHMiOiAicmciLAor
ICAgICJjb21wb25lbnRUeXBlIjogInVpbnQiLAorICAgICJiaXRzIjogeyAicmVkIjogMzIsICJn
cmVlbiI6IDMyIH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkczMlVJIgorICB9LAor
ICAiQU5HTEVfRk9STUFUX1I4RzhfVU5PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SOEc4X1VOT1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVU5P
Uk0iLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VTk9STSIsCisgICAgImNo
YW5uZWxzIjogInJnIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMi
OiB7ICJyZWQiOiA4LCAiZ3JlZW4iOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xf
Ukc4IgorICB9LAorICAiQU5HTEVfRk9STUFUX1I4RzhfVU5PUk1fTk9OUkVOREVSQUJMRSI6IHsK
KyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVU5PUk0iLAorICAgICJzcnZGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VTk9STSIsCisgICAgImNoYW5uZWxzIjogInJnIiwKKyAg
ICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA4LCAiZ3Jl
ZW4iOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkc4IgorICB9LAorICAiQU5H
TEVfRk9STUFUX1I4RzhfU0lOVCI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4
RzhfU0lOVCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4X1NJTlQiLAorICAg
ICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9TSU5UIiwKKyAgICAiY2hhbm5lbHMiOiAi
cmciLAorICAgICJjb21wb25lbnRUeXBlIjogImludCIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA4
LCAiZ3JlZW4iOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkc4SSIKKyAgfSwK
KyAgIkFOR0xFX0ZPUk1BVF9SOEc4X1VJTlQiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SOEc4X1VJTlQiLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOF9VSU5U
IiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhfVUlOVCIsCisgICAgImNoYW5u
ZWxzIjogInJnIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1aW50IiwKKyAgICAiYml0cyI6IHsg
InJlZCI6IDgsICJncmVlbiI6IDggfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzhV
SSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JNIjogeworICAgICJ0ZXhGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfUjhHOF9TTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SOEc4X1NOT1JNIiwKKyAgICAiY2hhbm5lbHMiOiAicmciLAorICAgICJjb21wb25lbnRUeXBl
IjogInNub3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDggfSwKKyAgICAi
Z2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SRzhfU05PUk0iCisgIH0sCisgICJBTkdMRV9GT1JNQVRf
UjEwRzEwQjEwQTJfVU5PUk0iOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTBH
MTBCMTBBMl9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTBHMTBCMTBB
Ml9VTk9STSIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9S
TSIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjogInVub3Jt
IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDEwLCAiZ3JlZW4iOiAxMCwgImJsdWUiOiAxMCwgImFs
cGhhIjogMiB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQjEwX0EyIgorICB9LAor
ICAiQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQiOiB7CisgICAgInRleEZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5UIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX1IxMEcxMEIxMEEyX1VJTlQiLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjEw
RzEwQjEwQTJfVUlOVCIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRU
eXBlIjogInVpbnQiLAorICAgICJiaXRzIjogeyAicmVkIjogMTAsICJncmVlbiI6IDEwLCAiYmx1
ZSI6IDEwLCAiYWxwaGEiOiAyIH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCMTBf
QTJVSSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCI6IHsKKyAgICAi
dGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UIiwKKyAgICAic3J2Rm9y
bWF0IjogIkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UIiwKKyAgICAicnR2Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5UIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIs
CisgICAgImNvbXBvbmVudFR5cGUiOiAiaW50IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDE2LCAi
Z3JlZW4iOiAxNiwgImJsdWUiOiAxNiwgImFscGhhIjogMTYgfSwKKyAgICAiZ2xJbnRlcm5hbEZv
cm1hdCI6ICJHTF9SR0JBMTZJIgorICB9LAorICAiQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9V
SU5UIjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQi
LAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiLAorICAg
ICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQiLAorICAgICJjaGFu
bmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1aW50IiwKKyAgICAiYml0cyI6
IHsgInJlZCI6IDE2LCAiZ3JlZW4iOiAxNiwgImJsdWUiOiAxNiwgImFscGhhIjogMTYgfSwKKyAg
ICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBMTZVSSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfU0lOVCI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9TSU5UIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9TSU5UIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9T
SU5UIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNvbXBvbmVudFR5cGUiOiAiaW50
IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDMyLCAiZ3JlZW4iOiAzMiwgImJsdWUiOiAzMiwgImFs
cGhhIjogMzIgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBMzJJIgorICB9LAor
ICAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIjogeworICAgICJ0ZXhGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQiLAorICAgICJzcnZGb3JtYXQiOiAiRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQiLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX1VJTlQiLAorICAgICJjaGFubmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9u
ZW50VHlwZSI6ICJ1aW50IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDMyLCAiZ3JlZW4iOiAzMiwg
ImJsdWUiOiAzMiwgImFscGhhIjogMzIgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9S
R0JBMzJVSSIKKyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9CNUc2UjVfVU5PUk0iOiB7CisgICAgInRl
eEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0iLAorICAgICJzcnZGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X0I1RzZSNV9VTk9STSIsCisgICAgImNoYW5uZWxzIjogImJnciIsCisgICAgImNvbXBvbmVudFR5
cGUiOiAgInVub3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDUsICJncmVlbiI6IDYsICJibHVl
IjogNSB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1JHQjU2NSIsCisgICAgImNoYW5u
ZWxTdHJ1Y3QiOiAiUjVHNkI1IgorICB9LAorICAiQU5HTEVfRk9STUFUX0I1RzVSNUExX1VOT1JN
IjogeworICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0iLAorICAg
ICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0iLAorICAgICJydHZGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0iLAorICAgICJjaGFubmVscyI6ICJiZ3Jh
IiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA1
LCAiZ3JlZW4iOiA1LCAiYmx1ZSI6IDUsICJhbHBoYSI6IDEgfSwKKyAgICAiZ2xJbnRlcm5hbEZv
cm1hdCI6ICJHTF9SR0I1X0ExIiwKKyAgICAiY2hhbm5lbFN0cnVjdCI6ICJBMVI1RzVCNSIKKyAg
fSwKKyAgIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TSU5UIjogeworICAgICJ0ZXhGb3JtYXQiOiAi
RFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TSU5UIiwKKyAgICAicnR2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1NJTlQiLAorICAgICJjaGFubmVscyI6ICJyZ2JhIiwKKyAgICAiY29tcG9uZW50VHlwZSI6ICJp
bnQiLAorICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJsdWUiOiA4LCAiYWxw
aGEiOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQThJIgorICB9LAorICAi
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VSU5UIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhC
OEE4X1VJTlQiLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCIs
CisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjogInVpbnQiLAor
ICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJsdWUiOiA4LCAiYWxwaGEiOiA4
IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQThVSSIKKyAgfSwKKyAgIkFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9TTk9STSI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFU
X1I4RzhCOEE4X1NOT1JNIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1NOT1JNIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNvbXBvbmVudFR5cGUiOiAi
c25vcm0iLAorICAgICJiaXRzIjogeyAicmVkIjogOCwgImdyZWVuIjogOCwgImJsdWUiOiA4LCAi
YWxwaGEiOiA4IH0sCisgICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfUkdCQThfU05PUk0iCisg
IH0sCisgICJBTkdMRV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQIjogeworICAgICJ0ZXhGb3Jt
YXQiOiAiRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQIiwKKyAgICAic3J2Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCIsCisgICAgImNoYW5uZWxzIjogInJnYiIs
CisgICAgImNvbXBvbmVudFR5cGUiOiAgImZsb2F0IiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDks
ICJncmVlbiI6IDksICJibHVlIjogOSwgInNoYXJlZCI6IDUgfSwKKyAgICAiZ2xJbnRlcm5hbEZv
cm1hdCI6ICJHTF9SR0I5X0U1IiwKKyAgICAiY2hhbm5lbFN0cnVjdCI6ICAiUjlHOUI5RTUiCisg
IH0sCisgICJBTkdMRV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0iOiB7CisgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9CNEc0UjRBNF9VTk9STSIsCisgICAgInJ0dkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CNEc0
UjRBNF9VTk9STSIsCisgICAgImNoYW5uZWxzIjogImJncmEiLAorICAgICJjb21wb25lbnRUeXBl
IjogICJ1bm9ybSIsCisgICAgImJpdHMiOiB7ICJyZWQiOiA0LCAiZ3JlZW4iOiA0LCAiYmx1ZSI6
IDQsICJhbHBoYSI6IDQgfSwKKyAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9SR0JBNCIsCisg
ICAgImNoYW5uZWxTdHJ1Y3QiOiAgIkE0UjRHNEI0IgorICB9LAorICAiQU5HTEVfRk9STUFUX1I4
RzhCOEE4X1VOT1JNX1NSR0IiOiB7CisgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STV9TUkdCIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNX1NSR0IiLAorICAgICJydHZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQiIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21wb25lbnRUeXBlIjog
InVub3JtIiwKKyAgICAiYml0cyI6IHsgInJlZCI6IDgsICJncmVlbiI6IDgsICJibHVlIjogOCwg
ImFscGhhIjogOCB9LAorICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX1NSR0I4X0FMUEhBOCIK
KyAgfSwKKyAgIkFOR0xFX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVCI6IHsKKyAgICAidGV4
Rm9ybWF0IjogIkRYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTIiwKKyAgICAic3J2Rm9ybWF0Ijog
IkRYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5UIiwKKyAgICAiZHN2Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UIiwKKyAgICAiY2hhbm5lbHMiOiAiZHMiLAorICAg
ICJiaXRzIjogeyAiZGVwdGgiOiAyNCwgInN0ZW5jaWwiOiA4IH0sCisgICAgImdsSW50ZXJuYWxG
b3JtYXQiOiAiR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMiCisgIH0KK30KSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9m
b3JtYXRfbWFwLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9tYXAuanNvbgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfbWFwLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNDggQEAKK3sKKyAgIkdMX0FMUEhBIjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5H
TEVfRk9STUFUX0E4X1VOT1JNIiwKKyAgICAiT25seUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSIKKyAgfSwKKyAgIkdMX0FMUEhBMTZGX0VYVCI6ICJBTkdMRV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FUIiwKKyAgIkdMX0FMUEhBMzJGX0VYVCI6ICJBTkdMRV9GT1JNQVRfUjMy
RzMyQjMyQTMyX0ZMT0FUIiwKKyAgIkdMX0FMUEhBOF9FWFQiOiB7CisgICAgIk9ubHlGTDEwUGx1
cyI6ICJBTkdMRV9GT1JNQVRfQThfVU5PUk0iLAorICAgICJPbmx5Rkw5XzMiOiAiQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNIgorICB9LAorICAiR0xfQkdSNV9BMV9BTkdMRVgiOiAiQU5HTEVf
Rk9STUFUX0I4RzhSOEE4X1VOT1JNIiwKKyAgIkdMX0JHUkE0X0FOR0xFWCI6ICJBTkdMRV9GT1JN
QVRfQjhHOFI4QThfVU5PUk0iLAorICAiR0xfQkdSQThfRVhUIjogIkFOR0xFX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSIsCisgICJHTF9CR1JBX0VYVCI6ICJBTkdMRV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0iLAorICAiR0xfQ09NUFJFU1NFRF9SMTFfRUFDIjogeworICAgICJPbmx5RkwxMFBsdXMiOiAi
QU5HTEVfRk9STUFUX1I4X1VOT1JNX05PTlJFTkRFUkFCTEUiCisgIH0sCisgICJHTF9DT01QUkVT
U0VEX1JHMTFfRUFDIjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4Rzhf
VU5PUk1fTk9OUkVOREVSQUJMRSIKKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfUkdCOF9FVEMyIjog
eworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJF
TkRFUkFCTEUiCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhB
MV9FVEMyIjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VO
T1JNX05PTlJFTkRFUkFCTEUiCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFD
IjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05P
TlJFTkRFUkFCTEUiCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCI6
ICJBTkdMRV9GT1JNQVRfQkMxX1VOT1JNIiwKKyAgIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfQU5HTEUiOiAiQU5HTEVfRk9STUFUX0JDMl9VTk9STSIsCisgICJHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0FOR0xFIjogIkFOR0xFX0ZPUk1BVF9CQzNfVU5PUk0iLAorICAiR0xfQ09N
UFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCI6ICJBTkdMRV9GT1JNQVRfQkMxX1VOT1JNIiwKKyAg
IkdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMiOiB7CisgICAgIk9ubHlGTDEwUGx1cyI6ICJB
TkdMRV9GT1JNQVRfUjhfU05PUk1fTk9OUkVOREVSQUJMRSIKKyAgfSwKKyAgIkdMX0NPTVBSRVNT
RURfU0lHTkVEX1JHMTFfRUFDIjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFU
X1I4RzhfU05PUk1fTk9OUkVOREVSQUJMRSIKKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0VUQzJfRUFDIjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX1I4
RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVSQUJMRSIKKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURf
U1JHQjhfRVRDMiI6IHsKKyAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUiCisgIH0sCisgICJHTF9DT01QUkVTU0VEX1NSR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiI6IHsKKyAgICAiT25seUZMMTBQbHVzIjogIkFOR0xF
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJFTkRFUkFCTEUiCisgIH0sCisgICJHTF9E
RVBUSDI0X1NURU5DSUw4IjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFUX0Qy
NF9VTk9STV9TOF9VSU5UX0ZMMTAiLAorICAgICJPbmx5Rkw5XzMiOiAiQU5HTEVfRk9STUFUX0Qy
NF9VTk9STV9TOF9VSU5UX0ZMOV8zIgorICB9LAorICAiR0xfREVQVEgzMkZfU1RFTkNJTDgiOiB7
CisgICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJTlRf
RkwxMCIsCisgICAgIk9ubHlGTDlfMyI6ICJBTkdMRV9GT1JNQVRfTk9ORSIKKyAgfSwKKyAgIkdM
X0RFUFRIX0NPTVBPTkVOVDE2IjogeworICAgICJPbmx5RkwxMFBsdXMiOiAiQU5HTEVfRk9STUFU
X0QxNl9VTk9STV9GTDEwIiwKKyAgICAiT25seUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9EMTZfVU5P
Uk1fRkw5XzMiCisgIH0sCisgICJHTF9ERVBUSF9DT01QT05FTlQyNCI6IHsKKyAgICAiT25seUZM
MTBQbHVzIjogIkFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwIiwKKyAgICAiT25s
eUZMOV8zIjogIkFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDlfMyIKKyAgfSwKKyAg
IkdMX0RFUFRIX0NPTVBPTkVOVDMyRiI6IHsKKyAgICAiT25seUZMMTBQbHVzIjogIkFOR0xFX0ZP
Uk1BVF9EMzJfRkxPQVQiLAorICAgICJPbmx5Rkw5XzMiOiAiQU5HTEVfRk9STUFUX05PTkUiCisg
IH0sCisgICJHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMiOiB7CisgICAgIk9ubHlGTDEwUGx1cyI6
ICJBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwxMCIKKyAgfSwKKyAgIkdMX0VUQzFf
UkdCOF9PRVMiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJFTkRFUkFCTEUiLAor
ICAiR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSI6ICJBTkdMRV9GT1JNQVRfQkMxX1VO
T1JNIiwKKyAgIkdMX0xVTUlOQU5DRSI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAor
ICAiR0xfTFVNSU5BTkNFMTZGX0VYVCI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FU
IiwKKyAgIkdMX0xVTUlOQU5DRTMyRl9FWFQiOiAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCIsCisgICJHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQiOiAiQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1VOT1JNIiwKKyAgIkdMX0xVTUlOQU5DRThfRVhUIjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSIsCisgICJHTF9MVU1JTkFOQ0VfQUxQSEEiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1VOT1JNIiwKKyAgIkdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQiOiAiQU5HTEVfRk9STUFUX1Ix
NkcxNkIxNkExNl9GTE9BVCIsCisgICJHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhUIjogIkFOR0xF
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQiLAorICAiR0xfTk9ORSI6ICJBTkdMRV9GT1JNQVRf
Tk9ORSIsCisgICJHTF9SMTFGX0cxMUZfQjEwRiI6ICJBTkdMRV9GT1JNQVRfUjExRzExQjEwX0ZM
T0FUIiwKKyAgIkdMX1IxNkYiOiAiQU5HTEVfRk9STUFUX1IxNl9GTE9BVCIsCisgICJHTF9SMTZJ
IjogIkFOR0xFX0ZPUk1BVF9SMTZfU0lOVCIsCisgICJHTF9SMTZVSSI6ICJBTkdMRV9GT1JNQVRf
UjE2X1VJTlQiLAorICAiR0xfUjMyRiI6ICJBTkdMRV9GT1JNQVRfUjMyX0ZMT0FUIiwKKyAgIkdM
X1IzMkkiOiAiQU5HTEVfRk9STUFUX1IzMl9TSU5UIiwKKyAgIkdMX1IzMlVJIjogIkFOR0xFX0ZP
Uk1BVF9SMzJfVUlOVCIsCisgICJHTF9SOCI6ICJBTkdMRV9GT1JNQVRfUjhfVU5PUk0iLAorICAi
R0xfUjhJIjogIkFOR0xFX0ZPUk1BVF9SOF9TSU5UIiwKKyAgIkdMX1I4VUkiOiAiQU5HTEVfRk9S
TUFUX1I4X1VJTlQiLAorICAiR0xfUjhfU05PUk0iOiAiQU5HTEVfRk9STUFUX1I4X1NOT1JNIiwK
KyAgIkdMX1JHMTZGIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZfRkxPQVQiLAorICAiR0xfUkcxNkki
OiAiQU5HTEVfRk9STUFUX1IxNkcxNl9TSU5UIiwKKyAgIkdMX1JHMTZVSSI6ICJBTkdMRV9GT1JN
QVRfUjE2RzE2X1VJTlQiLAorICAiR0xfUkczMkYiOiAiQU5HTEVfRk9STUFUX1IzMkczMl9GTE9B
VCIsCisgICJHTF9SRzMySSI6ICJBTkdMRV9GT1JNQVRfUjMyRzMyX1NJTlQiLAorICAiR0xfUkcz
MlVJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJfVUlOVCIsCisgICJHTF9SRzgiOiAiQU5HTEVfRk9S
TUFUX1I4RzhfVU5PUk0iLAorICAiR0xfUkc4SSI6ICJBTkdMRV9GT1JNQVRfUjhHOF9TSU5UIiwK
KyAgIkdMX1JHOFVJIjogIkFOR0xFX0ZPUk1BVF9SOEc4X1VJTlQiLAorICAiR0xfUkc4X1NOT1JN
IjogIkFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JNIiwKKyAgIkdMX1JHQiI6ICJBTkdMRV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0iLAorICAiR0xfUkdCMTBfQTIiOiAiQU5HTEVfRk9STUFUX1IxMEcxMEIx
MEEyX1VOT1JNIiwKKyAgIkdMX1JHQjEwX0EyVUkiOiAiQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEy
X1VJTlQiLAorICAiR0xfUkdCMTZGIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQi
LAorICAiR0xfUkdCMTZJIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCIsCisgICJH
TF9SR0IxNlVJIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCIsCisgICJHTF9SR0Iz
MkYiOiAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCIsCisgICJHTF9SR0IzMkkiOiAi
QU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UIiwKKyAgIkdMX1JHQjMyVUkiOiAiQU5HTEVf
Rk9STUFUX1IzMkczMkIzMkEzMl9VSU5UIiwKKyAgIkdMX1JHQjU2NSI6IHsKKyAgICAiU3VwcG9y
dHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLGZhbHNlPiI6ICJBTkdMRV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0iLAorICAgICJTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNUc2UjVf
VU5PUk0sdHJ1ZT4iOiAiQU5HTEVfRk9STUFUX0I1RzZSNV9VTk9STSIKKyAgfSwKKyAgIkdMX1JH
QjVfQTEiOiB7CisgICAgIlN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JN
LGZhbHNlPiI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0iLAorICAgICJTdXBwb3J0c0Zv
cm1hdDxEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSx0cnVlPiI6ICJBTkdMRV9GT1JNQVRfQjVH
NVI1QTFfVU5PUk0iCisgIH0sCisgICJHTF9SR0I4IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSIsCisgICJHTF9SR0I4SSI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfU0lOVCIsCisgICJH
TF9SR0I4VUkiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VJTlQiLAorICAiR0xfUkdCOF9TTk9S
TSI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0iLAorICAiR0xfUkdCOV9FNSI6ICJBTkdM
RV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQIiwKKyAgIkdMX1JHQkEiOiAiQU5HTEVfRk9STUFU
X1I4RzhCOEE4X1VOT1JNIiwKKyAgIkdMX1JHQkExNkYiOiAiQU5HTEVfRk9STUFUX1IxNkcxNkIx
NkExNl9GTE9BVCIsCisgICJHTF9SR0JBMTZJIjogIkFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
U0lOVCIsCisgICJHTF9SR0JBMTZVSSI6ICJBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQi
LAorICAiR0xfUkdCQTMyRiI6ICJBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUIiwKKyAg
IkdMX1JHQkEzMkkiOiAiQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UIiwKKyAgIkdMX1JH
QkEzMlVJIjogIkFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCIsCisgICJHTF9SR0JBNCI6
IHsKKyAgICAiU3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sZmFsc2U+
IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIsCisgICAgIlN1cHBvcnRzRm9ybWF0PERY
R0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLHRydWU+IjogIkFOR0xFX0ZPUk1BVF9CNEc0UjRBNF9V
Tk9STSIKKyAgfSwKKyAgIkdMX1JHQkE4IjogIkFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSIs
CisgICJHTF9SR0JBOEkiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJTlQiLAorICAiR0xfUkdC
QThVSSI6ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfVUlOVCIsCisgICJHTF9SR0JBOF9TTk9STSI6
ICJBTkdMRV9GT1JNQVRfUjhHOEI4QThfU05PUk0iLAorICAiR0xfU1JHQjgiOiAiQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVSQUJMRSIsCisgICJHTF9TUkdCOF9BTFBI
QTgiOiAiQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IiLAorICAiR0xfU1RFTkNJTF9J
TkRFWDgiOiB7CisgICAgIk9ubHlGTDEwUGx1cyI6ICJBTkdMRV9GT1JNQVRfWDI0X1RZUEVMRVNT
X0c4X1VJTlQiLAorICAgICJPbmx5Rkw5XzMiOiAiQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9V
SU5UX0ZMOV8zIgorICB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTkgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyB0
ZXh0dXJlX2Zvcm1hdF90YWJsZToKKy8vICAgUXVlcmllcyBmb3IgZnVsbCB0ZXh0dXJlRm9ybWF0
IGluZm9ybWF0aW9uIGJhc2VkIG9uIGludGVybmFsRm9ybWF0CisvLworCisjaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9URVhUVVJFRk9STUFUVEFCTEVfSF8KKyNkZWZpbmUgTElC
QU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1RFWFRVUkVGT1JNQVRUQUJMRV9IXworCisjaW5jbHVk
ZSA8bWFwPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21t
b24vcGxhdGZvcm0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRp
bHNEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9m
b3JtYXRfdGFibGVfYXV0b2dlbi5oIgorCituYW1lc3BhY2UgcngKK3sKKworc3RydWN0IFJlbmRl
cmVyMTFEZXZpY2VDYXBzOworCituYW1lc3BhY2UgZDNkMTEKK3sKKworc3RydWN0IExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbworeworICAgIExvYWRJbWFnZUZ1bmN0aW9uSW5mbygpIDogbG9hZEZ1bmN0
aW9uKG51bGxwdHIpLCByZXF1aXJlc0NvbnZlcnNpb24oZmFsc2UpIHt9CisgICAgTG9hZEltYWdl
RnVuY3Rpb25JbmZvKExvYWRJbWFnZUZ1bmN0aW9uIGxvYWRGdW5jdGlvbiwgYm9vbCByZXF1aXJl
c0NvbnZlcnNpb24pCisgICAgICAgIDogbG9hZEZ1bmN0aW9uKGxvYWRGdW5jdGlvbiksIHJlcXVp
cmVzQ29udmVyc2lvbihyZXF1aXJlc0NvbnZlcnNpb24pCisgICAgeworICAgIH0KKworICAgIExv
YWRJbWFnZUZ1bmN0aW9uIGxvYWRGdW5jdGlvbjsKKyAgICBib29sIHJlcXVpcmVzQ29udmVyc2lv
bjsKK307CisKK3N0cnVjdCBBTkdMRUZvcm1hdFNldAoreworICAgIEFOR0xFRm9ybWF0U2V0KCk7
CisgICAgQU5HTEVGb3JtYXRTZXQoQU5HTEVGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBnbEludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUIHRleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBzcnZGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgcnR2Rm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUIGRzdkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVCBibGl0U1JWRm9ybWF0LAorICAgICAgICAgICAgICAgICAgIEFOR0xFRm9ybWF0IHN3aXp6
bGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgTWlwR2VuZXJhdGlvbkZ1bmN0aW9uIG1pcEdl
bmVyYXRpb25GdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICBDb2xvclJlYWRGdW5jdGlvbiBj
b2xvclJlYWRGdW5jdGlvbik7CisgICAgQU5HTEVGb3JtYXRTZXQoY29uc3QgQU5HTEVGb3JtYXRT
ZXQgJikgPSBkZWZhdWx0OworICAgIEFOR0xFRm9ybWF0U2V0ICZvcGVyYXRvcj0oY29uc3QgQU5H
TEVGb3JtYXRTZXQgJikgPSBkZWZhdWx0OworCisgICAgQU5HTEVGb3JtYXQgZm9ybWF0OworCisg
ICAgLy8gVGhlIGNsb3Nlc3QgbWF0Y2hpbmcgR0wgaW50ZXJuYWwgZm9ybWF0IGZvciB0aGUgRFhH
SSBmb3JtYXRzIHRoaXMgZm9ybWF0IHVzZXMuIE5vdGUgdGhhdCB0aGlzCisgICAgLy8gbWF5IGJl
IGEgZGlmZmVyZW50IGludGVybmFsIGZvcm1hdCB0aGFuIHRoZSBvbmUgdGhpcyBBTkdMRSBmb3Jt
YXQgaXMgdXNlZCBmb3IuCisgICAgR0xlbnVtIGdsSW50ZXJuYWxGb3JtYXQ7CisKKyAgICBEWEdJ
X0ZPUk1BVCB0ZXhGb3JtYXQ7CisgICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0OworICAgIERYR0lf
Rk9STUFUIHJ0dkZvcm1hdDsKKyAgICBEWEdJX0ZPUk1BVCBkc3ZGb3JtYXQ7CisKKyAgICBEWEdJ
X0ZPUk1BVCBibGl0U1JWRm9ybWF0OworCisgICAgQU5HTEVGb3JtYXQgc3dpenpsZUZvcm1hdDsK
KworICAgIE1pcEdlbmVyYXRpb25GdW5jdGlvbiBtaXBHZW5lcmF0aW9uRnVuY3Rpb247CisgICAg
Q29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVuY3Rpb247Cit9OworCitzdHJ1Y3QgVGV4dHVy
ZUZvcm1hdCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBUZXh0dXJlRm9ybWF0
KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEFOR0xFRm9y
bWF0IGFuZ2xlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRh
RnVuY3Rpb24gaW50ZXJuYWxGb3JtYXRJbml0aWFsaXplcik7CisKKyAgICBjb25zdCBBTkdMRUZv
cm1hdFNldCAqZm9ybWF0U2V0OworICAgIGNvbnN0IEFOR0xFRm9ybWF0U2V0ICpzd2l6emxlRm9y
bWF0U2V0OworCisgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gZGF0YUluaXRpYWxp
emVyRnVuY3Rpb247CisgICAgdHlwZWRlZiBzdGQ6Om1hcDxHTGVudW0sIExvYWRJbWFnZUZ1bmN0
aW9uSW5mbz4gTG9hZEZ1bmN0aW9uTWFwOworCisgICAgTG9hZEZ1bmN0aW9uTWFwIGxvYWRGdW5j
dGlvbnM7Cit9OworCitjb25zdCBBTkdMRUZvcm1hdFNldCAmR2V0QU5HTEVGb3JtYXRTZXQoQU5H
TEVGb3JtYXQgYW5nbGVGb3JtYXQpOworCitjb25zdCBUZXh0dXJlRm9ybWF0ICZHZXRUZXh0dXJl
Rm9ybWF0SW5mbyhHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVyZXIx
MURldmljZUNhcHMpOworCit9ICAvLyBuYW1lc3BhY2UgZDNkMTEKKworfSAgLy8gbmFtZXNwYWNl
IHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDExX1RFWFRVUkVGT1JN
QVRUQUJMRV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90
ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE4NzEgQEAKKy8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQg
YnkgZ2VuX3RleHR1cmVfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSB0ZXh0dXJlX2Zv
cm1hdF9kYXRhLmpzb24KKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyB0ZXh0dXJlX2Zvcm1hdF90YWJsZToKKy8vICAg
UXVlcmllcyBmb3IgZnVsbCB0ZXh0dXJlRm9ybWF0IGluZm9ybWF0aW9uIGJhc2VkIGluIGludGVy
bmFsRm9ybWF0CisvLworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3Rl
eHR1cmVfZm9ybWF0X3RhYmxlLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvZm9ybWF0dXRpbHMxMS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2NvcHlpbWFnZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9nZW5l
cmF0ZW1pcC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2UuaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZSBkM2QxMQoreworCituYW1lc3BhY2UKK3sK
KwordHlwZWRlZiBib29sICgqRm9ybWF0U3VwcG9ydEZ1bmN0aW9uKShjb25zdCBSZW5kZXJlcjEx
RGV2aWNlQ2FwcyAmKTsKKworYm9vbCBPbmx5RkwxMFBsdXMoY29uc3QgUmVuZGVyZXIxMURldmlj
ZUNhcHMgJmRldmljZUNhcHMpCit7CisgICAgcmV0dXJuIChkZXZpY2VDYXBzLmZlYXR1cmVMZXZl
bCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKTsKK30KKworYm9vbCBPbmx5Rkw5XzMoY29uc3Qg
UmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpCit7CisgICAgcmV0dXJuIChkZXZpY2VD
YXBzLmZlYXR1cmVMZXZlbCA9PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpOworfQorCit0ZW1wbGF0
ZSA8RFhHSV9GT1JNQVQgZm9ybWF0LCBib29sIHJlcXVpcmVTdXBwb3J0PgorYm9vbCBTdXBwb3J0
c0Zvcm1hdChjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcykKK3sKKyAgICAv
LyBNdXN0IHN1cHBvcnQgdGV4dHVyZSwgU1JWIGFuZCBSVFYgc3VwcG9ydAorICAgIFVJTlQgbXVz
dFN1cHBvcnQgPSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFMkQgfCBEM0QxMV9GT1JNQVRf
U1VQUE9SVF9URVhUVVJFQ1VCRSB8CisgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1B
VF9TVVBQT1JUX1NIQURFUl9TQU1QTEUgfCBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVAgfAorICAg
ICAgICAgICAgICAgICAgICAgICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9SRU5ERVJfVEFSR0VUOwor
CisgICAgaWYgKGQzZDExX2dsOjpHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihkZXZpY2VDYXBzLmZl
YXR1cmVMZXZlbCkgPiAyKQorICAgIHsKKyAgICAgICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9S
TUFUX1NVUFBPUlRfVEVYVFVSRTNEOworICAgIH0KKworICAgIGJvb2wgZnVsbFN1cHBvcnQgPSBm
YWxzZTsKKyAgICBpZiAoZm9ybWF0ID09IERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSkKKyAgICB7
CisgICAgICAgIC8vIEFsbCBoYXJkd2FyZSB0aGF0IHN1cHBvcnRzIERYR0lfRk9STUFUX0I1RzZS
NV9VTk9STSBzaG91bGQgc3VwcG9ydCBhdXRvZ2VuIG1pcG1hcHMsIGJ1dAorICAgICAgICAvLyBj
aGVjayBhbnl3YXkuCisgICAgICAgIG11c3RTdXBwb3J0IHw9IEQzRDExX0ZPUk1BVF9TVVBQT1JU
X01JUF9BVVRPR0VOOworICAgICAgICBmdWxsU3VwcG9ydCA9ICgoZGV2aWNlQ2Fwcy5CNUc2UjVz
dXBwb3J0ICYgbXVzdFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoZm9ybWF0ID09IERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNKQorICAgIHsKKyAgICAgICAg
ZnVsbFN1cHBvcnQgPSAoKGRldmljZUNhcHMuQjRHNFI0QTRzdXBwb3J0ICYgbXVzdFN1cHBvcnQp
ID09IG11c3RTdXBwb3J0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoZm9ybWF0ID09IERYR0lfRk9S
TUFUX0I1RzVSNUExX1VOT1JNKQorICAgIHsKKyAgICAgICAgZnVsbFN1cHBvcnQgPSAoKGRldmlj
ZUNhcHMuQjVHNVI1QTFzdXBwb3J0ICYgbXVzdFN1cHBvcnQpID09IG11c3RTdXBwb3J0KTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoaXMgJ1N1cHBvcnRzRm9ybWF0JyBmdW5jdGlv
biBpcyB1c2VkIGJ5IGluZGl2aWR1YWwgZW50cmllcyBpbiB0aGUgRDNEMTEgRm9ybWF0IE1hcCBi
ZWxvdywKKyAgICAvLyB3aGljaCBtYXBzIEdMIGZvcm1hdHMgdG8gRFhHSSBmb3JtYXRzLgorICAg
IGlmIChyZXF1aXJlU3VwcG9ydCkKKyAgICB7CisgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBB
TkdMRSB3b3VsZCBsaWtlIHRvIHVzZSB0aGUgZW50cnkgaW4gdGhlIG1hcCBpZiB0aGUgaW5wdXR0
ZWQgRFhHSSBmb3JtYXQKKyAgICAgICAgLy8gKklTKiBzdXBwb3J0ZWQuCisgICAgICAgIC8vIGUu
Zy4gdGhlIGVudHJ5IG1pZ2h0IG1hcCBHTF9SR0I1X0ExIHRvIERYR0lfRk9STUFUX0I1RzVSNUEx
LCB3aGljaCBzaG91bGQgb25seSBiZSB1c2VkIGlmCisgICAgICAgIC8vIERYR0lfRk9STUFUX0I1
RzVSNUExIGlzIHN1cHBvcnRlZC4KKyAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQg
b25seSByZXR1cm4gJ3RydWUnIGlmIHRoZSBmb3JtYXQgKklTKiBzdXBwb3J0ZWQuCisgICAgICAg
IHJldHVybiBmdWxsU3VwcG9ydDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8g
VGhpcyBtZWFucyB0aGF0IEFOR0xFIHdvdWxkIGxpa2UgdG8gdXNlIHRoZSBlbnRyeSBpbiB0aGUg
bWFwIGlmIHRoZSBpbnB1dHRlZCBEWEdJIGZvcm1hdAorICAgICAgICAvLyAqSVNOJ1QqIHN1cHBv
cnRlZC4KKyAgICAgICAgLy8gVGhpcyBtaWdodCBiZSBhIGZhbGxiYWNrIGVudHJ5LiBlLmcuIGZv
ciBBTkdMRSB0byB1c2UgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0gaWYKKyAgICAgICAgLy8g
RFhHSV9GT1JNQVRfQjVHNVI1QTEgaXNuJ3Qgc3VwcG9ydGVkLgorICAgICAgICAvLyBJbiB0aGlz
IGNhc2UsIHdlIHNob3VsZCBvbmx5IHJldHVybiAndHJ1ZScgaWYgdGhlIGZvcm1hdCAqSVNOJ1Qq
IHN1cHBvcnRlZC4KKyAgICAgICAgcmV0dXJuICFmdWxsU3VwcG9ydDsKKyAgICB9Cit9CisKKy8v
IEVuZCBGb3JtYXQgU3VwcG9ydCBGdW5jdGlvbnMKK30gIC8vIG5hbWVzcGFjZQorCitBTkdMRUZv
cm1hdFNldDo6QU5HTEVGb3JtYXRTZXQoKQorICAgIDogZm9ybWF0KEFOR0xFX0ZPUk1BVF9OT05F
KSwKKyAgICAgIGdsSW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAgICB0ZXhGb3JtYXQoRFhH
SV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBzcnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiks
CisgICAgICBydHZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBkc3ZGb3JtYXQo
RFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VO
S05PV04pLAorICAgICAgc3dpenpsZUZvcm1hdChBTkdMRV9GT1JNQVRfTk9ORSksCisgICAgICBt
aXBHZW5lcmF0aW9uRnVuY3Rpb24obnVsbHB0ciksCisgICAgICBjb2xvclJlYWRGdW5jdGlvbihu
dWxscHRyKQoreworfQorCisvLyBGb3Igc2l6ZWQgR0wgaW50ZXJuYWwgZm9ybWF0cywgdGhlcmUg
YXJlIHNldmVyYWwgcG9zc2libGUgY29ycmVzcG9uZGluZyBEM0QxMSBmb3JtYXRzIGRlcGVuZGlu
ZworLy8gb24gZGV2aWNlIGNhcGFiaWxpdGllcy4KKy8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHF1
ZXJ5aW5nIGZvciB0aGUgRFhHSSB0ZXh0dXJlIGZvcm1hdHMgdG8gdXNlIGZvciB0ZXh0dXJlcywg
U1JWcywgUlRWcyBhbmQKKy8vIERTVnMgZ2l2ZW4gYSBHTCBpbnRlcm5hbCBmb3JtYXQuCitUZXh0
dXJlRm9ybWF0OjpUZXh0dXJlRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQU5HTEVGb3JtYXQgYW5nbGVGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGlu
dGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIpCisgICAgOiBkYXRhSW5pdGlhbGl6ZXJGdW5jdGlvbihp
bnRlcm5hbEZvcm1hdEluaXRpYWxpemVyKQoreworICAgIGZvcm1hdFNldCAgICAgICAgPSAmR2V0
QU5HTEVGb3JtYXRTZXQoYW5nbGVGb3JtYXQpOworICAgIHN3aXp6bGVGb3JtYXRTZXQgPSAmR2V0
QU5HTEVGb3JtYXRTZXQoZm9ybWF0U2V0LT5zd2l6emxlRm9ybWF0KTsKKworICAgIC8vIEdhdGhl
ciBhbGwgdGhlIGxvYWQgZnVuY3Rpb25zIGZvciB0aGlzIGludGVybmFsIGZvcm1hdAorICAgIGxv
YWRGdW5jdGlvbnMgPSBHZXRMb2FkRnVuY3Rpb25zTWFwKGludGVybmFsRm9ybWF0LCBmb3JtYXRT
ZXQtPnRleEZvcm1hdCk7CisKKyAgICBBU1NFUlQobG9hZEZ1bmN0aW9ucy5zaXplKCkgIT0gMCB8
fCBpbnRlcm5hbEZvcm1hdCA9PSBHTF9OT05FKTsKK30KKworQU5HTEVGb3JtYXRTZXQ6OkFOR0xF
Rm9ybWF0U2V0KEFOR0xFRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZ2xJbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUIHJ0dkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVCBkc3ZGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVQgYmxpdFNSVkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRUZvcm1hdCBzd2l6emxlRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1pcEdlbmVyYXRpb25GdW5jdGlvbiBtaXBHZW5lcmF0aW9uRnVuY3Rpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkRnVuY3Rpb24p
CisgICAgOiBmb3JtYXQoZm9ybWF0KSwKKyAgICAgIGdsSW50ZXJuYWxGb3JtYXQoZ2xJbnRlcm5h
bEZvcm1hdCksCisgICAgICB0ZXhGb3JtYXQodGV4Rm9ybWF0KSwKKyAgICAgIHNydkZvcm1hdChz
cnZGb3JtYXQpLAorICAgICAgcnR2Rm9ybWF0KHJ0dkZvcm1hdCksCisgICAgICBkc3ZGb3JtYXQo
ZHN2Rm9ybWF0KSwKKyAgICAgIGJsaXRTUlZGb3JtYXQoYmxpdFNSVkZvcm1hdCksCisgICAgICBz
d2l6emxlRm9ybWF0KHN3aXp6bGVGb3JtYXQpLAorICAgICAgbWlwR2VuZXJhdGlvbkZ1bmN0aW9u
KG1pcEdlbmVyYXRpb25GdW5jdGlvbiksCisgICAgICBjb2xvclJlYWRGdW5jdGlvbihjb2xvclJl
YWRGdW5jdGlvbikKK3sKK30KKworY29uc3QgQU5HTEVGb3JtYXRTZXQgJkdldEFOR0xFRm9ybWF0
U2V0KEFOR0xFRm9ybWF0IGFuZ2xlRm9ybWF0KQoreworICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYK
KyAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBBTkdMRV9GT1JN
QVRfQThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZv
cm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9BOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FMUEhBOF9FWFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9BOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfQThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBOD4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8QTgsIEdMZmxvYXQ+KTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0I0RzRSNEE0X1VOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhB
TkdMRV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBNCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlw
PEE0UjRHNEI0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxBNFI0RzRCNCwgR0xmbG9hdD4pOworICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfQjVHNVI1
QTFfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1h
dFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjVfQTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxBMVI1RzVCNT4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTFSNUc1QjUsIEdMZmxvYXQ+KTsK
KyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
QU5HTEVfRk9STUFUX0I1RzZSNV9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0I1RzZSNV9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQjU2NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0I1RzZSNV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSNUc2QjU+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI1RzZCNSwgR0xmbG9hdD4p
OworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBBTkdMRV9GT1JNQVRfQjhHOFI4QThfVU5PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0JHUkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4
UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEI4RzhSOEE4PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxCOEc4UjhBOCwgR0xmbG9hdD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfQkMxX1VOT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdM
RV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
QzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5H
TEVfRk9STUFUX0JDMl9VTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX0JDMl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJ
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX0JDM19VTk9STToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdElu
Zm8oQU5HTEVfRk9STUFUX0JDM19VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0JDM19VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgQU5HTEVfRk9STUFUX0QxNl9VTk9STV9GTDEwOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfRDE2
X1VOT1JNX0ZMMTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9UWVBFTEVTUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRf
RDE2X1VOT1JNX0ZMOV8zOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5H
TEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfRDE2X1VOT1JNX0ZMOV8zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhf
Q09NUE9ORU5UMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9EMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0QxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwxMDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1h
dEluZm8oQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMMTAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNT
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VO
T1JNX1g4X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5H
TEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMOV8zOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfRDI0
X1VOT1JNX1M4X1VJTlRfRkw5XzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9S
TV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5P
Uk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfRDMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfREVQVEhfQ09NUE9ORU5UMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1RZUEVMRVNTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4g
Zm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9EMzJfRkxP
QVRfUzhYMjRfVUlOVF9GTDEwOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
QU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfRDMyX0ZMT0FUX1M4WDI0X1VJ
TlRfRkwxMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0RFUFRIMzJGX1NURU5DSUw4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzhYMjRfVFlQRUxFU1MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDMyX0ZM
T0FUX1M4WDI0X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdElu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfTk9ORToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5H
TEVfRk9STUFUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfTk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1B
VF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCMTBfQTJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8UjEwRzEwQjEwQTI+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxMEcxMEIxMEEyLCBHTHVpbnQ+KTsKKyAgICAg
ICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVf
Rk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjEwRzEwQjEwQTJf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0IxMF9BMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEw
QTJfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MTBHMTBCMTBBMj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdMZmxvYXQ+KTsKKyAgICAgICAgICAgIHJl
dHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1Ix
MUcxMUIxMF9GTE9BVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xF
Rm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxMUZfRzEx
Rl9CMTBGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjExRzExQjEwX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTFHMTFCMTBGPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSMTFHMTFCMTBGLCBHTGZsb2F0Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3Jt
YXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZGPiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxS
MTZHMTZCMTZBMTZGLCBHTGZsb2F0Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1h
dEluZm8oQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNlM+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIx
NkExNlMsIEdMaW50Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5H
TEVfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTY+LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNiwgR0x1
aW50Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNiwgR0xmbG9hdD4p
OworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBBTkdMRV9GT1JNQVRfUjE2RzE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjE2RzE2X0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkcxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkY+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkYsIEdM
ZmxvYXQ+KTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQU5HTEVfRk9STUFUX1IxNkcxNl9TSU5UOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjE2
RzE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SRzE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNlM+LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNlMsIEdM
aW50Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEFOR0xFX0ZPUk1BVF9SMTZHMTZfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1IxNkcx
Nl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkcxNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2PiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTYsIEdMdWlu
dD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBBTkdMRV9GT1JNQVRfUjE2X0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjE2X0ZMT0FU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UjE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjE2Rj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RiwgR0xmbG9hdD4pOworICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRf
UjE2X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1h
dFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNkksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZTPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSMTZTLCBHTGludD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjE2X1VJTlQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1B
VF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1IxNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcx
NkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjE2PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTYsIEdMdWludD4pOworICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JN
QVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjMyRzMyQjMyQTMyRj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyQjMyQTMyRiwgR0xmbG9hdD4pOworICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkEzMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
RzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJC
MzJBMzJTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJTLCBHTGludD4pOworICAgICAgICAgICAgcmV0dXJu
IGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZv
cm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMlVJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyQTMyPiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRD
b2xvcjxSMzJHMzJCMzJBMzIsIEdMdWludD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdElu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyRzMyX0ZMT0FUOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0
SW5mbyhBTkdMRV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMkYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlw
PFIzMkczMkY+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPFIzMkczMkYsIEdMZmxvYXQ+KTsKKyAgICAgICAgICAgIHJldHVybiBm
b3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1IzMkczMl9T
SU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQg
Zm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjMyRzMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMySSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlw
PFIzMkczMlM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPFIzMkczMlMsIEdMaW50Pik7CisgICAgICAgICAgICByZXR1cm4gZm9y
bWF0SW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SMzJHMzJfVUlO
VDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZv
cm1hdEluZm8oQU5HTEVfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMlVJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjMyRzMyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxSMzJHMzIsIEdMdWludD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1h
dEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyX0ZMT0FUOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0
SW5mbyhBTkdMRV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRj4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMy
RiwgR0xmbG9hdD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjMyX1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9S
MzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1IzMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxSMzJTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJTLCBHTGludD4pOworICAgICAgICAgICAg
cmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRf
UjMyX1VJTlQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1h
dFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IzMlVJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSMzIsIEdMdWludD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhHOEI4QThfU0lOVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVf
Rk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QThT
PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
YWRDb2xvcjxSOEc4QjhBOFMsIEdMaW50Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1h
dEluZm8oQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPFI4RzhCOEE4Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QThTLCBHTGZsb2F0Pik7CisgICAgICAgICAg
ICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5H
TEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4VUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
OEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTHVpbnQ+KTsK
KyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4
QjhBOCwgR0xmbG9hdD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9OUkVOREVSQUJM
RToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZv
cm1hdEluZm8oQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJFTkRFUkFCTEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTGZsb2F0Pik7Cisg
ICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFO
R0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOEI4
QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+KTsK
KyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
QU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVSQUJMRToKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5H
TEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVSQUJMRSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdC
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4
LCBHTGZsb2F0Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4X1NJTlQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9S
OEc4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SRzhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4
QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjhHOFM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhTLCBHTGludD4pOworICAgICAgICAg
ICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JN
QVRfUjhHOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xF
Rm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhfU05PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRl
TWlwPFI4RzhTPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxSOEc4UywgR0xmbG9hdD4pOworICAgICAgICAgICAgcmV0dXJuIGZv
cm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhHOF9TTk9S
TV9OT05SRU5ERVJBQkxFOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5H
TEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhHOF9TTk9STV9OT05SRU5ERVJB
QkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Uz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOFMsIEdMZmxvYXQ+KTsKKyAgICAg
ICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVf
Rk9STUFUX1I4RzhfVUlOVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFO
R0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOFVJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjhHOD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjhHOCwgR0x1aW50Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5m
byhBTkdMRV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOD4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOCwg
R0xmbG9hdD4pOworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBBTkdMRV9GT1JNQVRfUjhHOF9VTk9STV9OT05SRU5ERVJBQkxFOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhB
TkdMRV9GT1JNQVRfUjhHOF9VTk9STV9OT05SRU5ERVJBQkxFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSOEc4LCBHTGZsb2F0Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOF9TSU5UOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JN
QVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1I4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
ZW5lcmF0ZU1pcDxSOFM+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPFI4UywgR0xpbnQ+KTsKKyAgICAgICAgICAgIHJldHVybiBm
b3JtYXRJbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4X1NOT1JN
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9y
bWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhTPiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOFMsIEdM
ZmxvYXQ+KTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4X1NOT1JNX05PTlJFTkRFUkFCTEU6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBBTkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xF
X0ZPUk1BVF9SOF9TTk9STV9OT05SRU5ERVJBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Uz4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBH
TGZsb2F0Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9SOF9VSU5UOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhBTkdMRV9GT1JNQVRfUjhfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1I4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8Ujg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmVhZENvbG9yPFI4LCBHTHVpbnQ+KTsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRJbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgQU5HTEVfRk9STUFUX1I4X1VOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZm9ybWF0SW5mbyhB
TkdMRV9GT1JNQVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOCwgR0xmbG9hdD4pOworICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBTkdMRV9G
T1JNQVRfUjhfVU5PUk1fTk9OUkVOREVSQUJMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1hdEluZm8oQU5HTEVfRk9STUFUX1I4X1VOT1JN
X05PTlJFTkRFUkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8Ujg+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4LCBHTGZsb2F0Pik7CisgICAgICAgICAgICBy
ZXR1cm4gZm9ybWF0SW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9S
OUc5QjlFNV9TSEFSRURFWFA6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBB
TkdMRUZvcm1hdFNldCBmb3JtYXRJbmZvKEFOR0xFX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0I5X0U1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVE
RVhQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFS
RURFWFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjlHOUI5RTU+LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFI5RzlCOUU1LCBHTGZsb2F0Pik7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0SW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEFOR0xFX0ZPUk1BVF9YMjRfVFlQRUxFU1NfRzhfVUlOVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IEFOR0xFRm9ybWF0U2V0IGZvcm1h
dEluZm8oQU5HTEVfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEgyNF9TVEVOQ0lMOF9P
RVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1gyNF9UWVBFTEVTU19HOF9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfWDI0X1RZUEVM
RVNTX0c4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIGZvcm1hdEluZm87CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICBzdGF0aWMgY29uc3QgQU5HTEVGb3JtYXRTZXQgZGVmYXVsdElu
Zm87CisgICAgcmV0dXJuIGRlZmF1bHRJbmZvOworfQorCitjb25zdCBUZXh0dXJlRm9ybWF0ICZH
ZXRUZXh0dXJlRm9ybWF0SW5mbyhHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAm
cmVuZGVyZXIxMURldmljZUNhcHMpCit7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIHN3
aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBz
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0E4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChPbmx5Rkw5XzMocmVuZGVyZXIxMURldmlj
ZUNhcHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZv
cm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1Ix
NkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAg
ICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0FM
UEhBOF9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVy
ZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9G
T1JNQVRfQThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVy
ZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKE9ubHlGTDlfMyhy
ZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFO
R0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfQkdSNV9BMV9BTkdMRVg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0JHUkE0X0FOR0xFWDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVy
ZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQkdSQThfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfQjhHOFI4
QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5H
TEVfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SMTFfRUFD
OgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZp
Y2VDYXBzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4
X1VOT1JNX05PTlJFTkRFUkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkcxMV9FQUM6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3Jt
YXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOF9VTk9STV9OT05SRU5ERVJBQkxF
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQjhfRVRDMjoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1
cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9OT05SRU5ERVJBQkxFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRD
b21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9V
R0hfQUxQSEExX0VUQzI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMo
cmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9OUkVOREVSQUJMRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VD
YXBzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVy
ZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhC
OEE4X1VOT1JNX05PTlJFTkRFUkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX0JDMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5H
TEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRl
eHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwor
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQzoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjEx
RGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1B
VF9SOF9TTk9STV9OT05SRU5ERVJBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4X1NOT1JNX05P
TlJFTkRFUkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZv
cm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0Jf
Tk9OUkVOREVSQUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
Rm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGlu
dGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0JfTk9OUkVOREVS
QUJMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAw
LCAweEZGPik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1h
dChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCX05PTlJF
TkRFUkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0RFUFRIMjRfU1RFTkNJTDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChPbmx5Rkwx
MFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBTkdMRV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlRfRkwxMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSBpZiAoT25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZM
OV8zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9E
RVBUSDMyRl9TVEVOQ0lMODoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1
cyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFOR0xFX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVF9GTDEwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlIGlmIChPbmx5Rkw5XzMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVG
b3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfTk9ORSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
ICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNh
cHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfRDE2X1VO
T1JNX0ZMMTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKE9ubHlGTDlfMyhyZW5kZXJl
cjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9EMTZfVU5PUk1fRkw5XzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDI0OgorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5UX0ZMMTAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKE9ubHlGTDlfMyhyZW5kZXJlcjExRGV2aWNlQ2Fw
cykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9EMjRfVU5P
Uk1fUzhfVUlOVF9GTDlfMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJGOgorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoT25seUZMMTBQbHVzKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGlu
dGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX0QzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAoT25seUZMOV8zKHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX05PTkUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUzoK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhyZW5kZXJlcjExRGV2aWNl
Q2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1
cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9EMjRf
VU5PUk1fUzhfVUlOVF9GTDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09F
UzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNX05PTlJF
TkRFUkFCTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAw
LCAweEZGPik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwg
MHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVu
dERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4pOwor
ICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xmbG9hdCwgMHgwMDAw
MDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgZ2w6OkZsb2F0MzJPbmU+KTsKKyAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfTFVN
SU5BTkNFOF9BTFBIQThfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U4X0VYVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEz
MkZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1h
dCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFU
X05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9SMTFGX0cxMUZfQjEwRjoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QU5HTEVfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4g
dGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1IxNkY6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZJOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
MTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQg
dGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfUjMyRjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IzMl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1IzMkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBU
ZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMzJf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1IzMlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SODoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVf
Rk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjhJOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZv
cm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1I4VUk6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFOR0xFX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0
dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjhfU05PUk06CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZGOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2X0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfUkcxNkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9y
bWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHMTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1Ix
NkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUkczMkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xF
X0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVG
b3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzMySToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQU5HTEVfRk9STUFUX1IzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkczMlVJOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9y
bWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
Rzg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRl
eHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfUkc4SToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHOFVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhH
OF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfUkc4X1NOT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdM
RV9GT1JNQVRfUjhHOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZv
cm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1
Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxMF9BMjoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChp
bnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAg
ICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
UkdCMTBfQTJVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVG
b3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxMEcxMEIxMEEy
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGhhbGYsIDB4
MDAwMCwgMHgwMDAwLCAweDAwMDAsIGdsOjpGbG9hdDE2T25lPik7CisgICAgICAgICAgICByZXR1
cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2SToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZv
cm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0xzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPik7
CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX1JHQjE2VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0
dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAw
MCwgMHgwMDAwLCAweDAwMDE+KTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMzJGOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xm
bG9hdCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgZ2w6OkZsb2F0MzJPbmU+
KTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCMzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGludCwgMHgwMDAwMDAwMCwgMHgw
MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMT4pOworICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IzMlVJOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTHVpbnQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4
MDAwMDAwMDE+KTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoU3Vw
cG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLGZhbHNlPihyZW5kZXJlcjExRGV2
aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRl
eHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAw
eDAwLCAweDAwLCAweEZGPik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJ
X0ZPUk1BVF9CNUc2UjVfVU5PUk0sdHJ1ZT4ocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I1X0ExOgor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoU3VwcG9ydHNGb3JtYXQ8RFhHSV9GT1JNQVRfQjVH
NVI1QTFfVU5PUk0sZmFsc2U+KHJlbmRlcmVyMTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNUc1UjVBMV9V
Tk9STSx0cnVlPihyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFOR0xFX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCODoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1
Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIHRleHR1
cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I4SToKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0
YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDE+KTsKKyAgICAgICAgICAgIHJldHVybiB0
ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOFVJOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0
KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25l
bnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDE+KTsKKyAgICAgICAgICAgIHJl
dHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOF9TTk9S
TToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDdGPik7CisgICAg
ICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X1JHQjlfRTU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9y
bWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOUc5QjlFNV9TSEFS
RURFWFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3Jt
YXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMTZGOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFs
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTE2
SToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4
dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfUkdCQTE2VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1h
dDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkEzMkY6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFOR0xFX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMzJJ
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0
dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOworICAgICAgICAgICAgcmV0dXJuIHRleHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9SR0JBMzJVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1Iz
MkczMkIzMkEzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChTdXBwb3J0c0Zvcm1hdDxEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSxmYWxzZT4o
cmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYg
KFN1cHBvcnRzRm9ybWF0PERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLHRydWU+KHJlbmRlcmVy
MTFEZXZpY2VDYXBzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9S
TUFUX0I0RzRSNEE0X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0JBODoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5HTEVfRk9STUFUX1I4
RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQThJOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
TkdMRV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4
dHVyZUZvcm1hdDsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkE4VUk6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQo
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAg
ICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdC
QThfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9y
bWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX1NSR0I4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3QgVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTkdMRV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmVGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9TUkdCOF9BTFBIQTg6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVG
b3JtYXQoaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0OworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9JTkRFWDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChPbmx5
RkwxMFBsdXMocmVuZGVyZXIxMURldmljZUNhcHMpKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQoaW50ZXJuYWxG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBTkdMRV9GT1JNQVRfWDI0X1RZUEVMRVNTX0c4X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdGV4dHVyZUZvcm1hdDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UgaWYgKE9ubHlGTDlfMyhyZW5kZXJlcjExRGV2aWNlQ2FwcykpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IFRleHR1cmVGb3JtYXQgdGV4dHVy
ZUZvcm1hdChpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9G
TDlfMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlRm9ybWF0Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKwor
ICAgIHN0YXRpYyBjb25zdCBUZXh0dXJlRm9ybWF0IGRlZmF1bHRJbmZvKEdMX05PTkUsIEFOR0xF
X0ZPUk1BVF9OT05FLCBudWxscHRyKTsKKyAgICByZXR1cm4gZGVmYXVsdEluZm87Cit9ICAvLyBH
ZXRUZXh0dXJlRm9ybWF0SW5mbworCit9ICAvLyBuYW1lc3BhY2UgZDNkMTEKKworfSAgLy8gbmFt
ZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVy
ZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzkgQEAK
Ky8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX3Rl
eHR1cmVfZm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSB0ZXh0dXJlX2Zvcm1hdF9kYXRh
Lmpzb24KKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UgZDNkMTEKK3sK
KworZW51bSBBTkdMRUZvcm1hdAoreworICAgIEFOR0xFX0ZPUk1BVF9BOF9VTk9STSwKKyAgICBB
TkdMRV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgQU5HTEVfRk9STUFUX0I1RzVSNUExX1VO
T1JNLAorICAgIEFOR0xFX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAgQU5HTEVfRk9STUFUX0I4
RzhSOEE4X1VOT1JNLAorICAgIEFOR0xFX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgQU5HTEVfRk9S
TUFUX0JDMl9VTk9STSwKKyAgICBBTkdMRV9GT1JNQVRfQkMzX1VOT1JNLAorICAgIEFOR0xFX0ZP
Uk1BVF9EMTZfVU5PUk1fRkwxMCwKKyAgICBBTkdMRV9GT1JNQVRfRDE2X1VOT1JNX0ZMOV8zLAor
ICAgIEFOR0xFX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVF9GTDEwLAorICAgIEFOR0xFX0ZPUk1B
VF9EMjRfVU5PUk1fUzhfVUlOVF9GTDlfMywKKyAgICBBTkdMRV9GT1JNQVRfRDMyX0ZMT0FULAor
ICAgIEFOR0xFX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVF9GTDEwLAorICAgIEFOR0xFX0ZP
Uk1BVF9OT05FLAorICAgIEFOR0xFX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgIEFOR0xF
X0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICBBTkdMRV9GT1JNQVRfUjExRzExQjEwX0ZM
T0FULAorICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgQU5HTEVfRk9S
TUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgIEFOR0xFX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlO
VCwKKyAgICBBTkdMRV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgIEFOR0xFX0ZPUk1B
VF9SMTZHMTZfRkxPQVQsCisgICAgQU5HTEVfRk9STUFUX1IxNkcxNl9TSU5ULAorICAgIEFOR0xF
X0ZPUk1BVF9SMTZHMTZfVUlOVCwKKyAgICBBTkdMRV9GT1JNQVRfUjE2X0ZMT0FULAorICAgIEFO
R0xFX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICBBTkdMRV9GT1JNQVRfUjE2X1VJTlQsCisgICAgQU5H
TEVfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICBBTkdMRV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQsCisgICAgQU5HTEVfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgIEFOR0xF
X0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgQU5HTEVfRk9STUFUX1IzMkczMl9TSU5ULAorICAg
IEFOR0xFX0ZPUk1BVF9SMzJHMzJfVUlOVCwKKyAgICBBTkdMRV9GT1JNQVRfUjMyX0ZMT0FULAor
ICAgIEFOR0xFX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICBBTkdMRV9GT1JNQVRfUjMyX1VJTlQsCisg
ICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgQU5HTEVfRk9STUFUX1I4RzhCOEE4
X1NOT1JNLAorICAgIEFOR0xFX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgIEFOR0xFX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKKyAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fTk9OUkVO
REVSQUJMRSwKKyAgICBBTkdMRV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICBBTkdM
RV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQl9OT05SRU5ERVJBQkxFLAorICAgIEFOR0xFX0ZP
Uk1BVF9SOEc4X1NJTlQsCisgICAgQU5HTEVfRk9STUFUX1I4RzhfU05PUk0sCisgICAgQU5HTEVf
Rk9STUFUX1I4RzhfU05PUk1fTk9OUkVOREVSQUJMRSwKKyAgICBBTkdMRV9GT1JNQVRfUjhHOF9V
SU5ULAorICAgIEFOR0xFX0ZPUk1BVF9SOEc4X1VOT1JNLAorICAgIEFOR0xFX0ZPUk1BVF9SOEc4
X1VOT1JNX05PTlJFTkRFUkFCTEUsCisgICAgQU5HTEVfRk9STUFUX1I4X1NJTlQsCisgICAgQU5H
TEVfRk9STUFUX1I4X1NOT1JNLAorICAgIEFOR0xFX0ZPUk1BVF9SOF9TTk9STV9OT05SRU5ERVJB
QkxFLAorICAgIEFOR0xFX0ZPUk1BVF9SOF9VSU5ULAorICAgIEFOR0xFX0ZPUk1BVF9SOF9VTk9S
TSwKKyAgICBBTkdMRV9GT1JNQVRfUjhfVU5PUk1fTk9OUkVOREVSQUJMRSwKKyAgICBBTkdMRV9G
T1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAorICAgIEFOR0xFX0ZPUk1BVF9YMjRfVFlQRUxFU1Nf
RzhfVUlOVAorfTsKKworfSAgLy8gbmFtZXNwYWNlIGQzZDExCisKK30gIC8vIG5hbWVzcGFjZSBy
eApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2luMzIvTmF0aXZl
V2luZG93LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03LDE5ICs3LDM4IEBACiAvLyBOYXRpdmVXaW5kb3cuY3BwOiBIYW5k
bGVyIGZvciBtYW5hZ2luZyBIV05EIG5hdGl2ZSB3aW5kb3cgdHlwZXMuCiAKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93LmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuaCIKIAogI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgogCisjaW5jbHVkZSA8aW5pdGd1aWQuaD4KKyNpbmNsdWRlIDxkY29t
cC5oPgorCiBuYW1lc3BhY2UgcngKIHsKIAotTmF0aXZlV2luZG93OjpOYXRpdmVXaW5kb3coRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIDogbVdpbmRvdyh3aW5kb3cpCitOYXRpdmVXaW5kb3c6
Ok5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGRpcmVjdENvbXBvc2l0aW9uKQorICAgIDogbVdpbmRvdyh3aW5kb3cp
LAorICAgICAgbURpcmVjdENvbXBvc2l0aW9uKGRpcmVjdENvbXBvc2l0aW9uKSwKKyAgICAgIG1E
ZXZpY2UobnVsbHB0ciksCisgICAgICBtQ29tcG9zaXRpb25UYXJnZXQobnVsbHB0ciksCisgICAg
ICBtVmlzdWFsKG51bGxwdHIpLAorICAgICAgbUNvbmZpZyhjb25maWcpCiB7CiB9CiAKK05hdGl2
ZVdpbmRvdzo6fk5hdGl2ZVdpbmRvdygpCit7CisgICAgU2FmZVJlbGVhc2UobUNvbXBvc2l0aW9u
VGFyZ2V0KTsKKyAgICBTYWZlUmVsZWFzZShtRGV2aWNlKTsKKyAgICBTYWZlUmVsZWFzZShtVmlz
dWFsKTsKK30KKwogYm9vbCBOYXRpdmVXaW5kb3c6OmluaXRpYWxpemUoKQoteyAKLSAgICByZXR1
cm4gdHJ1ZTsgCit7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgTmF0aXZlV2luZG93Ojpn
ZXRDbGllbnRSZWN0KExQUkVDVCByZWN0KQpAQCAtNDYsNyArNjUsMTEzIEBACiAgICAgICAgIHJl
dHVybiBFX0lOVkFMSURBUkc7CiAgICAgfQogCi0gICAgRFhHSV9TV0FQX0NIQUlOX0RFU0Mgc3dh
cENoYWluRGVzYyA9IHsgMCB9OworICAgIGlmIChtRGlyZWN0Q29tcG9zaXRpb24pCisgICAgewor
ICAgICAgICBITU9EVUxFIGRjb21wID0gOjpHZXRNb2R1bGVIYW5kbGUoVEVYVCgiZGNvbXAuZGxs
IikpOworICAgICAgICBpZiAoIWRjb21wKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
RV9JTlZBTElEQVJHOworICAgICAgICB9CisKKyAgICAgICAgdHlwZWRlZiBIUkVTVUxUKFdJTkFQ
SSAqIFBGTl9EQ09NUE9TSVRJT05fQ1JFQVRFX0RFVklDRSkoCisgICAgICAgICAgICBJRFhHSURl
dmljZSAqIGR4Z2lEZXZpY2UsIFJFRklJRCBpaWQsIHZvaWQgKipkY29tcG9zaXRpb25EZXZpY2Up
OworICAgICAgICBQRk5fRENPTVBPU0lUSU9OX0NSRUFURV9ERVZJQ0UgY3JlYXRlRENvbXAgPQor
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5fRENPTVBPU0lUSU9OX0NSRUFURV9ERVZJ
Q0U+KAorICAgICAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKGRjb21wLCAiRENvbXBvc2l0aW9u
Q3JlYXRlRGV2aWNlIikpOworICAgICAgICBpZiAoIWNyZWF0ZURDb21wKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCFtRGV2aWNlKQorICAgICAgICB7CisgICAgICAgICAgICBJRFhHSURldmljZSAqZHhnaURldmlj
ZSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSURldmljZT4oZGV2aWNlKTsKKyAg
ICAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gY3JlYXRlRENvbXAoZHhnaURldmljZSwgX191dWlk
b2YoSURDb21wb3NpdGlvbkRldmljZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJm1EZXZpY2UpKTsKKyAgICAgICAg
ICAgIFNhZmVSZWxlYXNlKGR4Z2lEZXZpY2UpOworCisgICAgICAgICAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbUNvbXBvc2l0aW9uVGFyZ2V0
KQorICAgICAgICB7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0
ZVRhcmdldEZvckh3bmQobVdpbmRvdywgVFJVRSwgJm1Db21wb3NpdGlvblRhcmdldCk7CisgICAg
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghbVZpc3VhbCkKKyAgICAgICAgeworICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVWaXN1YWwoJm1WaXN1YWwpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBJRFhHSUZhY3RvcnkyICpmYWN0b3J5MiAg
ICAgICAgICAgICA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSUZhY3RvcnkyPihm
YWN0b3J5KTsKKyAgICAgICAgRFhHSV9TV0FQX0NIQUlOX0RFU0MxIHN3YXBDaGFpbkRlc2MgPSB7
MH07CisgICAgICAgIHN3YXBDaGFpbkRlc2MuV2lkdGggICAgICAgICAgICAgICAgID0gd2lkdGg7
CisgICAgICAgIHN3YXBDaGFpbkRlc2MuSGVpZ2h0ICAgICAgICAgICAgICAgID0gaGVpZ2h0Owor
ICAgICAgICBzd2FwQ2hhaW5EZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IGZvcm1hdDsKKyAg
ICAgICAgc3dhcENoYWluRGVzYy5TdGVyZW8gICAgICAgICAgICAgICAgPSBGQUxTRTsKKyAgICAg
ICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgICAgPSAxOworICAgICAgICBzd2Fw
Q2hhaW5EZXNjLlNhbXBsZURlc2MuUXVhbGl0eSAgICA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRl
c2MuQnVmZmVyVXNhZ2UgPQorICAgICAgICAgICAgRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09V
VFBVVCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVIgfCBEWEdJX1VTQUdFX1NIQURFUl9JTlBVVDsK
KyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJDb3VudCAgICAgICAgICAgPSAyOworICAgICAg
ICBzd2FwQ2hhaW5EZXNjLlNjYWxpbmcgICAgICAgICAgICAgICA9IERYR0lfU0NBTElOR19TVFJF
VENIOworICAgICAgICBzd2FwQ2hhaW5EZXNjLlN3YXBFZmZlY3QgPSBEWEdJX1NXQVBfRUZGRUNU
X0ZMSVBfU0VRVUVOVElBTDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5BbHBoYU1vZGUgPQorICAg
ICAgICAgICAgbUNvbmZpZy0+YWxwaGFTaXplID09IDAgPyBEWEdJX0FMUEhBX01PREVfSUdOT1JF
IDogRFhHSV9BTFBIQV9NT0RFX1BSRU1VTFRJUExJRUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2Mu
RmxhZ3MgICAgICAgICA9IDA7CisgICAgICAgIElEWEdJU3dhcENoYWluMSAqc3dhcENoYWluMSA9
IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0KKyAgICAgICAgICAgIGZhY3Rvcnky
LT5DcmVhdGVTd2FwQ2hhaW5Gb3JDb21wb3NpdGlvbihkZXZpY2UsICZzd2FwQ2hhaW5EZXNjLCBu
dWxscHRyLCAmc3dhcENoYWluMSk7CisgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAg
ICAgICAgeworICAgICAgICAgICAgKnN3YXBDaGFpbiA9IHN0YXRpY19jYXN0PERYR0lTd2FwQ2hh
aW4gKj4oc3dhcENoYWluMSk7CisgICAgICAgIH0KKyAgICAgICAgbVZpc3VhbC0+U2V0Q29udGVu
dChzd2FwQ2hhaW4xKTsKKyAgICAgICAgbUNvbXBvc2l0aW9uVGFyZ2V0LT5TZXRSb290KG1WaXN1
YWwpOworICAgICAgICBTYWZlUmVsZWFzZShmYWN0b3J5Mik7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQorCisgICAgLy8gVXNlIElEWEdJRmFjdG9yeTI6OkNyZWF0ZVN3YXBDaGFpbkZv
ckh3bmQgaWYgRFhHSSAxLjIgaXMgYXZhaWxhYmxlIHRvIGNyZWF0ZSBhIERYR0lfU1dBUF9FRkZF
Q1RfU0VRVUVOVElBTCBzd2FwIGNoYWluLgorICAgIElEWEdJRmFjdG9yeTIgKmZhY3RvcnkyID0g
ZDNkMTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEWEdJRmFjdG9yeTI+KGZhY3RvcnkpOworICAg
IGlmIChmYWN0b3J5MiAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgRFhHSV9TV0FQX0NIQUlO
X0RFU0MxIHN3YXBDaGFpbkRlc2MgPSB7IDAgfTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5XaWR0
aCA9IHdpZHRoOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkhlaWdodCA9IGhlaWdodDsKKyAgICAg
ICAgc3dhcENoYWluRGVzYy5Gb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2Mu
U3RlcmVvID0gRkFMU0U7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5Db3VudCA9
IDE7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKKyAgICAg
ICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2FnZSA9CisgICAgICAgICAgICBEWEdJX1VTQUdFX1JF
TkRFUl9UQVJHRVRfT1VUUFVUIHwgRFhHSV9VU0FHRV9TSEFERVJfSU5QVVQgfCBEWEdJX1VTQUdF
X0JBQ0tfQlVGRkVSOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckNvdW50ID0gMTsKKyAg
ICAgICAgc3dhcENoYWluRGVzYy5TY2FsaW5nID0gRFhHSV9TQ0FMSU5HX1NUUkVUQ0g7CisgICAg
ICAgIHN3YXBDaGFpbkRlc2MuU3dhcEVmZmVjdCA9IERYR0lfU1dBUF9FRkZFQ1RfU0VRVUVOVElB
TDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5BbHBoYU1vZGUgPSBEWEdJX0FMUEhBX01PREVfVU5T
UEVDSUZJRUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuRmxhZ3MgPSAwOworICAgICAgICBJRFhH
SVN3YXBDaGFpbjEgKnN3YXBDaGFpbjEgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGZhY3RvcnkyLT5DcmVhdGVTd2FwQ2hhaW5Gb3JId25kKGRldmljZSwgbVdpbmRvdywgJnN3
YXBDaGFpbkRlc2MsIG51bGxwdHIsIG51bGxwdHIsICZzd2FwQ2hhaW4xKTsKKyAgICAgICAgaWYg
KFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICAqc3dhcENoYWluID0g
c3RhdGljX2Nhc3Q8RFhHSVN3YXBDaGFpbio+KHN3YXBDaGFpbjEpOworICAgICAgICB9CisgICAg
ICAgIFNhZmVSZWxlYXNlKGZhY3RvcnkyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBEWEdJX1NXQVBfQ0hBSU5fREVTQyBzd2FwQ2hhaW5EZXNjID0ge307CiAgICAgc3dh
cENoYWluRGVzYy5CdWZmZXJDb3VudCA9IDE7CiAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNj
LkZvcm1hdCA9IGZvcm1hdDsKICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRlc2MuV2lkdGggPSB3
aWR0aDsKQEAgLTU1LDcgKzE4MCw4IEBACiAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlNj
YW5saW5lT3JkZXJpbmcgPSBEWEdJX01PREVfU0NBTkxJTkVfT1JERVJfVU5TUEVDSUZJRUQ7CiAg
ICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlJlZnJlc2hSYXRlLk51bWVyYXRvciA9IDA7CiAg
ICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLlJlZnJlc2hSYXRlLkRlbm9taW5hdG9yID0gMTsK
LSAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVzYWdlID0gRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VU
X09VVFBVVCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVI7CisgICAgc3dhcENoYWluRGVzYy5CdWZm
ZXJVc2FnZSA9CisgICAgICAgIERYR0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJ
X1VTQUdFX1NIQURFUl9JTlBVVCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVI7CiAgICAgc3dhcENo
YWluRGVzYy5GbGFncyA9IDA7CiAgICAgc3dhcENoYWluRGVzYy5PdXRwdXRXaW5kb3cgPSBtV2lu
ZG93OwogICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IDE7CkBAIC02NSw0ICsx
OTEsMTIgQEAKIAogICAgIHJldHVybiBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW4oZGV2aWNlLCAm
c3dhcENoYWluRGVzYywgc3dhcENoYWluKTsKIH0KKwordm9pZCBOYXRpdmVXaW5kb3c6OmNvbW1p
dENoYW5nZSgpCit7CisgICAgaWYgKG1EZXZpY2UpCisgICAgeworICAgICAgICBtRGV2aWNlLT5D
b21taXQoKTsKKyAgICB9CiB9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRpdmVXaW5kb3cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDYgQEAKICAgICBDb21QdHI8SVByb3BlcnR5U2V0PiBwcm9wcyA9
IHByb3BlcnR5U2V0OwogICAgIENvbVB0cjxJSW5zcGVjdGFibGU+IHdpbiA9IHdpbmRvdzsKICAg
ICBTSVpFIHN3YXBDaGFpblNpemUgPSB7fTsKLSAgICBib29sIHN3YXBDaGFpblNpemVTcGVjaWZp
ZWQgPSBmYWxzZTsKICAgICBIUkVTVUxUIHJlc3VsdCA9IFNfT0s7CiAKICAgICAvLyBJUHJvcGVy
dHlTZXQgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIGFuZCBjYW4gYmUgbnVsbC4KQEAgLTMzLDEz
ICszMiw0MSBAQAogICAgIGlmIChwcm9wZXJ0eVNldCkKICAgICB7CiAgICAgICAgIHJlc3VsdCA9
IHByb3BzLkFzKCZtUHJvcGVydHlNYXApOwotICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkp
CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgLy8g
VGhlIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHkgaXMgb3B0aW9uYWwgYW5kIG1heSBiZSBt
aXNzaW5nLiAgVGhlIElQcm9wZXJ0eVNldAotICAgICAgICAgICAgLy8gd2FzIHByZXZhbGlkYXRl
ZCB0byBjb250YWluIHRoZSBFR0xOYXRpdmVXaW5kb3dUeXBlIGJlZm9yZSBiZWluZyBwYXNzZWQg
dG8KLSAgICAgICAgICAgIC8vIHRoaXMgaG9zdC4KLSAgICAgICAgICAgIHJlc3VsdCA9IEdldE9w
dGlvbmFsU2l6ZVByb3BlcnR5VmFsdWUobVByb3BlcnR5TWFwLCBFR0xSZW5kZXJTdXJmYWNlU2l6
ZVByb3BlcnR5LCAmc3dhcENoYWluU2l6ZSwgJnN3YXBDaGFpblNpemVTcGVjaWZpZWQpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIEVHTFJl
bmRlclN1cmZhY2VTaXplUHJvcGVydHkgaXMgb3B0aW9uYWwgYW5kIG1heSBiZSBtaXNzaW5nLiBU
aGUgSVByb3BlcnR5U2V0CisgICAgICAgIC8vIHdhcyBwcmV2YWxpZGF0ZWQgdG8gY29udGFpbiB0
aGUgRUdMTmF0aXZlV2luZG93VHlwZSBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvCisgICAgICAgIC8v
IHRoaXMgaG9zdC4KKyAgICAgICAgcmVzdWx0ID0gR2V0T3B0aW9uYWxTaXplUHJvcGVydHlWYWx1
ZShtUHJvcGVydHlNYXAsIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHksICZzd2FwQ2hhaW5T
aXplLCAmbVN3YXBDaGFpblNpemVTcGVjaWZpZWQpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFRoZSBFR0xSZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9wZXJ0eSBpcyBvcHRpb25h
bCBhbmQgbWF5IGJlIG1pc3NpbmcuIFRoZSBJUHJvcGVydHlTZXQKKyAgICAgICAgLy8gd2FzIHBy
ZXZhbGlkYXRlZCB0byBjb250YWluIHRoZSBFR0xOYXRpdmVXaW5kb3dUeXBlIGJlZm9yZSBiZWlu
ZyBwYXNzZWQgdG8KKyAgICAgICAgLy8gdGhpcyBob3N0LgorICAgICAgICByZXN1bHQgPSBHZXRP
cHRpb25hbFNpbmdsZVByb3BlcnR5VmFsdWUobVByb3BlcnR5TWFwLCBFR0xSZW5kZXJSZXNvbHV0
aW9uU2NhbGVQcm9wZXJ0eSwgJm1Td2FwQ2hhaW5TY2FsZSwgJm1Td2FwQ2hhaW5TY2FsZVNwZWNp
ZmllZCk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtU3dhcENoYWluU2Nh
bGVTcGVjaWZpZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIERlZmF1bHQgdmFsdWUgZm9y
IHRoZSBzY2FsZSBpcyAxLjBmCisgICAgICAgICAgICBtU3dhcENoYWluU2NhbGUgPSAxLjBmOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gQSBFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5IGFu
ZCBhIEVHTFJlbmRlclJlc29sdXRpb25TY2FsZVByb3BlcnR5IGNhbid0IGJvdGggYmUgc3BlY2lm
aWVkCisgICAgICAgIGlmIChtU3dhcENoYWluU2NhbGVTcGVjaWZpZWQgJiYgbVN3YXBDaGFpblNp
emVTcGVjaWZpZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigiSXQgaXMgaW52YWxpZCB0
byBzcGVjaWZ5IGJvdGggYW4gRUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSBhbmQgYSBFR0xS
ZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKQEAgLTU1
LDE0ICs4MiwxOSBAQAogICAgICAgICAvLyBvZiB0aGUgaG9zdC4KICAgICAgICAgLy8gU2NhbGlu
ZyBvZiB0aGUgc3dhcGNoYWluIG91dHB1dCBvY2N1cnMgYXV0b21hdGljYWxseSBiZWNhdXNlIGlm
CiAgICAgICAgIC8vIHRoZSBzY2FsaW5nIG1vZGUgc2V0dGluZyBEWEdJX1NDQUxJTkdfU1RSRVRD
SCBvbiB0aGUgc3dhcGNoYWluLgotICAgICAgICBpZiAoc3dhcENoYWluU2l6ZVNwZWNpZmllZCkK
KyAgICAgICAgaWYgKG1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtQ2xpZW50UmVjdCA9IHsgMCwgMCwgc3dhcENoYWluU2l6ZS5jeCwgc3dhcENoYWluU2l6
ZS5jeSB9OwotICAgICAgICAgICAgbVN1cHBvcnRzU3dhcENoYWluUmVzaXplID0gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBH
ZXRDb3JlV2luZG93U2l6ZUluUGl4ZWxzKG1Db3JlV2luZG93LCAmbUNsaWVudFJlY3QpOworICAg
ICAgICAgICAgU0laRSBjb3JlV2luZG93U2l6ZTsKKyAgICAgICAgICAgIHJlc3VsdCA9IEdldENv
cmVXaW5kb3dTaXplSW5QaXhlbHMobUNvcmVXaW5kb3csICZjb3JlV2luZG93U2l6ZSk7CisKKyAg
ICAgICAgICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBtQ2xpZW50UmVjdCA9IHsgMCwgMCwgc3RhdGljX2Nhc3Q8bG9uZz4oY29yZVdpbmRv
d1NpemUuY3ggKiBtU3dhcENoYWluU2NhbGUpLCBzdGF0aWNfY2FzdDxsb25nPihjb3JlV2luZG93
U2l6ZS5jeSAqIG1Td2FwQ2hhaW5TY2FsZSkgfTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTAyLDcgKzEzNCwxMyBAQAogICAgIG1TaXplQ2hhbmdlZEV2ZW50VG9rZW4u
dmFsdWUgPSAwOwogfQogCi1IUkVTVUxUIENvcmVXaW5kb3dOYXRpdmVXaW5kb3c6OmNyZWF0ZVN3
YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwgRFhHSUZhY3RvcnkgKmZhY3RvcnksIERYR0lf
Rk9STUFUIGZvcm1hdCwgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LCBE
WEdJU3dhcENoYWluICoqc3dhcENoYWluKQorSFJFU1VMVCBDb3JlV2luZG93TmF0aXZlV2luZG93
OjpjcmVhdGVTd2FwQ2hhaW4oSUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJRmFjdG9yeSAqZmFjdG9yeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNvbnRhaW5zQWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJU3dhcENoYWluICoqc3dh
cENoYWluKQogewogICAgIGlmIChkZXZpY2UgPT0gTlVMTCB8fCBmYWN0b3J5ID09IE5VTEwgfHwg
c3dhcENoYWluID09IE5VTEwgfHwgd2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKICAgICB7CkBA
IC0xMTYsMTAgKzE1NCwxMiBAQAogICAgIHN3YXBDaGFpbkRlc2MuU3RlcmVvID0gRkFMU0U7CiAg
ICAgc3dhcENoYWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKICAgICBzd2FwQ2hhaW5EZXNj
LlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2FnZSA9
IERYR0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJX1VTQUdFX0JBQ0tfQlVGRkVS
OworICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyVXNhZ2UgPQorICAgICAgICBEWEdJX1VTQUdFX1NI
QURFUl9JTlBVVCB8IERYR0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJX1VTQUdF
X0JBQ0tfQlVGRkVSOwogICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyQ291bnQgPSAyOwogICAgIHN3
YXBDaGFpbkRlc2MuU3dhcEVmZmVjdCA9IERYR0lfU1dBUF9FRkZFQ1RfRkxJUF9TRVFVRU5USUFM
OwogICAgIHN3YXBDaGFpbkRlc2MuU2NhbGluZyA9IERYR0lfU0NBTElOR19TVFJFVENIOworICAg
IHN3YXBDaGFpbkRlc2MuQWxwaGFNb2RlICAgICAgICAgICAgID0gRFhHSV9BTFBIQV9NT0RFX1VO
U1BFQ0lGSUVEOwogCiAgICAgKnN3YXBDaGFpbiA9IG51bGxwdHI7CiAKQEAgLTE1NCwxMyArMTk0
LDIwIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSFJFU1VMVCBHZXRDb3JlV2luZG93U2l6
ZUluUGl4ZWxzKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRv
dz4mIGNvcmVXaW5kb3csIFJFQ1QgKndpbmRvd1NpemUpCitpbmxpbmUgSFJFU1VMVCBDb3JlV2lu
ZG93TmF0aXZlV2luZG93OjpzY2FsZVN3YXBDaGFpbihjb25zdCBTSVpFICZ3aW5kb3dTaXplLCBj
b25zdCBSRUNUICZjbGllbnRSZWN0KQogeworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55
IGFkZGl0aW9uYWwgd29yayB0byBzY2FsZSBDb3JlV2luZG93IHN3YXBjaGFpbnMuCisgICAgLy8g
VXNpbmcgRFhHSV9TQ0FMSU5HX1NUUkVUQ0ggdG8gY3JlYXRlIHRoZSBzd2FwY2hhaW4gYWJvdmUg
ZG9lcyBhbGwgdGhlIG5lY2Vzc2FyeSB3b3JrLgorICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIEdldENvcmVXaW5kb3dTaXplSW5QaXhlbHMoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6
VUk6OkNvcmU6OklDb3JlV2luZG93PiYgY29yZVdpbmRvdywgU0laRSAqd2luZG93U2l6ZSkKK3sK
ICAgICBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OlJlY3QgYm91bmRzOwogICAgIEhSRVNVTFQg
cmVzdWx0ID0gY29yZVdpbmRvdy0+Z2V0X0JvdW5kcygmYm91bmRzKTsKICAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICAqd2luZG93U2l6ZSA9IHsgMCwgMCwgQ29udmVy
dERpcHNUb1BpeGVscyhib3VuZHMuV2lkdGgpLCBDb252ZXJ0RGlwc1RvUGl4ZWxzKGJvdW5kcy5I
ZWlnaHQpIH07CisgICAgICAgICp3aW5kb3dTaXplID0geyBDb252ZXJ0RGlwc1RvUGl4ZWxzKGJv
dW5kcy5XaWR0aCksIENvbnZlcnREaXBzVG9QaXhlbHMoYm91bmRzLkhlaWdodCkgfTsKICAgICB9
CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTY5LDE2ICsyMTYsMTggQEAKIHN0YXRpYyBmbG9h
dCBHZXRMb2dpY2FsRHBpKCkKIHsKICAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpHcmFwaGljczo6
RGlzcGxheTo6SURpc3BsYXlQcm9wZXJ0aWVzU3RhdGljcz4gZGlzcGxheVByb3BlcnRpZXM7Ci0g
ICAgZmxvYXQgZHBpID0gOTYuMGY7CiAKICAgICBpZiAoU1VDQ0VFREVEKEdldEFjdGl2YXRpb25G
YWN0b3J5KEhTdHJpbmdSZWZlcmVuY2UoUnVudGltZUNsYXNzX1dpbmRvd3NfR3JhcGhpY3NfRGlz
cGxheV9EaXNwbGF5UHJvcGVydGllcykuR2V0KCksIGRpc3BsYXlQcm9wZXJ0aWVzLkdldEFkZHJl
c3NPZigpKSkpCiAgICAgeworICAgICAgICBmbG9hdCBkcGkgPSA5Ni4wZjsKICAgICAgICAgaWYg
KFNVQ0NFRURFRChkaXNwbGF5UHJvcGVydGllcy0+Z2V0X0xvZ2ljYWxEcGkoJmRwaSkpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZHBpOwogICAgICAgICB9CiAgICAgfQotICAgIHJl
dHVybiBkcGk7CisKKyAgICAvLyBSZXR1cm4gOTYgZHBpIGFzIGEgZGVmYXVsdCBpZiBkaXNwbGF5
IHByb3BlcnRpZXMgY2Fubm90IGJlIG9idGFpbmVkLgorICAgIHJldHVybiA5Ni4wZjsKIH0KIAog
bG9uZyBDb252ZXJ0RGlwc1RvUGl4ZWxzKGZsb2F0IGRpcHMpCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5k
b3dOYXRpdmVXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRpdmVXaW5k
b3cuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDEwICsyNCwyMCBAQAogICBwdWJsaWM6CiAgICAgfkNvcmVX
aW5kb3dOYXRpdmVXaW5kb3coKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZShFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbmRvdywgSVByb3BlcnR5U2V0ICpwcm9wZXJ0eVNldCk7CisgICAgYm9vbCBpbml0
aWFsaXplKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBJUHJvcGVydHlTZXQgKnByb3BlcnR5
U2V0KSBvdmVycmlkZTsKKyAgICBIUkVTVUxUIGNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2Ug
KmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJRmFjdG9yeSAqZmFjdG9y
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjb250YWluc0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pIG92ZXJyaWRlOworCisgIHByb3RlY3RlZDoKKyAg
ICBIUkVTVUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndpbmRvd1NpemUsIGNvbnN0IFJF
Q1QgJmNsaWVudFJlY3QpIG92ZXJyaWRlOworCiAgICAgYm9vbCByZWdpc3RlckZvclNpemVDaGFu
Z2VFdmVudHMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JTaXplQ2hhbmdlRXZlbnRzKCk7Ci0g
ICAgSFJFU1VMVCBjcmVhdGVTd2FwQ2hhaW4oSUQzRDExRGV2aWNlICpkZXZpY2UsIERYR0lGYWN0
b3J5ICpmYWN0b3J5LCBEWEdJX0ZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCwgdW5z
aWduZWQgaW50IGhlaWdodCwgRFhHSVN3YXBDaGFpbiAqKnN3YXBDaGFpbik7CiAKICAgcHJpdmF0
ZToKICAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNvcmVXaW5kb3c+IG1Db3Jl
V2luZG93OwpAQCAtNzIsNyArODIsNyBAQAogICAgIHN0ZDo6d2Vha19wdHI8SW5zcGVjdGFibGVO
YXRpdmVXaW5kb3c+IG1Ib3N0OwogfTsKIAotSFJFU1VMVCBHZXRDb3JlV2luZG93U2l6ZUluUGl4
ZWxzKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4mIGNv
cmVXaW5kb3csIFJFQ1QgKndpbmRvd1NpemUpOworSFJFU1VMVCBHZXRDb3JlV2luZG93U2l6ZUlu
UGl4ZWxzKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpDb3JlOjpJQ29yZVdpbmRvdz4m
IGNvcmVXaW5kb3csIFNJWkUgKndpbmRvd1NpemUpOwogfQogCiAjZW5kaWYgLy8gTElCQU5HTEVf
UkVOREVSRVJfRDNEX0QzRDExX1dJTlJUX0NPUkVXSU5ET1dOQVRJVkVXSU5ET1dfSF8KSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
d2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvd191bml0dGVzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93
aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93X3VuaXR0ZXN0LmNwcAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93X3VuaXR0ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYyLDEyICsxNjIsMzUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitIUkVT
VUxUIENyZWF0ZVByb3BlcnR5VmFsdWVTdGF0aWNzKElQcm9wZXJ0eVZhbHVlU3RhdGljcyoqIHBy
b3BlcnR5U3RhdGljcykKK3sKKyAgICBDb21QdHI8SVByb3BlcnR5VmFsdWVTdGF0aWNzPiBwcm9w
ZXJ0eVZhbHVlU3RhdGljczsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEdldEFjdGl2YXRpb25GYWN0
b3J5KEhTdHJpbmdSZWZlcmVuY2UoUnVudGltZUNsYXNzX1dpbmRvd3NfRm91bmRhdGlvbl9Qcm9w
ZXJ0eVZhbHVlKS5HZXQoKSwgJnByb3BlcnR5VmFsdWVTdGF0aWNzKTsKKyAgICBFWFBFQ1RfSFJF
U1VMVF9TVUNDRUVERUQocmVzdWx0KTsKKworICAgIHJlc3VsdCA9IHByb3BlcnR5VmFsdWVTdGF0
aWNzLkNvcHlUbyhwcm9wZXJ0eVN0YXRpY3MpOworICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURF
RChyZXN1bHQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogSFJFU1VMVCBTZXRJbnNwZWN0
YWJsZVByb3BlcnR5VmFsdWUoY29uc3QgQ29tUHRyPElNYXA8SFNUUklORywgSUluc3BlY3RhYmxl
Kj4+JiBwcm9wZXJ0eU1hcCwgY29uc3Qgd2NoYXJfdCogcHJvcGVydHlOYW1lLCBJSW5zcGVjdGFi
bGUqIGluc3BlY3RhYmxlKQogewogICAgIGJvb2xlYW4gcHJvcGVydHlSZXBsYWNlZCA9IGZhbHNl
OwogICAgIHJldHVybiBwcm9wZXJ0eU1hcC0+SW5zZXJ0KEhTdHJpbmdSZWZlcmVuY2UocHJvcGVy
dHlOYW1lKS5HZXQoKSwgaW5zcGVjdGFibGUsICZwcm9wZXJ0eVJlcGxhY2VkKTsKIH0KIAordm9p
ZCBleHBlY3ROYXRpdmVXaW5kb3dJbml0Q2FsbHMoTW9ja0NvcmVXaW5kb3cgJmNvcmVXaW5kb3cs
IGJvb2wgZXhwZWN0Qm91bmRzKQoreworICAgIGlmIChleHBlY3RCb3VuZHMpCisgICAgeworICAg
ICAgICBFWFBFQ1RfQ0FMTChjb3JlV2luZG93LCBnZXRfQm91bmRzKHRlc3Rpbmc6Ol8pKS5UaW1l
cygxKTsKKyAgICB9CisKKyAgICBFWFBFQ1RfQ0FMTChjb3JlV2luZG93LCBhZGRfU2l6ZUNoYW5n
ZWQodGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDEpOworICAgIEVYUEVDVF9DQUxMKGNv
cmVXaW5kb3csIHJlbW92ZV9TaXplQ2hhbmdlZCh0ZXN0aW5nOjpfKSkuVGltZXMoMSk7Cit9CisK
IFRFU1QoTmF0aXZlV2luZG93VGVzdCwgTmF0aXZlV2luZG93TnVsbCkKIHsKICAgICBOYXRpdmVX
aW5kb3cgbmF0aXZlV2luZG93KG51bGxwdHIpOwpAQCAtMTkxLDkgKzIxNCw3IEBACiBURVNUKE5h
dGl2ZVdpbmRvd1Rlc3QsIE5hdGl2ZVdpbmRvd1ZhbGlkQ29yZVdpbmRvdykKIHsKICAgICBNb2Nr
Q29yZVdpbmRvdyBtb2NrQ29yZVdpbmRvdzsKLSAgICBFWFBFQ1RfQ0FMTChtb2NrQ29yZVdpbmRv
dywgZ2V0X0JvdW5kcyh0ZXN0aW5nOjpfKSkuVGltZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwobW9j
a0NvcmVXaW5kb3csIGFkZF9TaXplQ2hhbmdlZCh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGlt
ZXMoMSk7Ci0gICAgRVhQRUNUX0NBTEwobW9ja0NvcmVXaW5kb3csIHJlbW92ZV9TaXplQ2hhbmdl
ZCh0ZXN0aW5nOjpfKSkuVGltZXMoMSk7CisgICAgZXhwZWN0TmF0aXZlV2luZG93SW5pdENhbGxz
KG1vY2tDb3JlV2luZG93LCB0cnVlKTsKICAgICBOYXRpdmVXaW5kb3cgbmF0aXZlV2luZG93KCZt
b2NrQ29yZVdpbmRvdyk7CiAgICAgRVhQRUNUX1RSVUUobmF0aXZlV2luZG93LmluaXRpYWxpemUo
KSk7CiB9CkBAIC0yMDUsMTEgKzIyNiwxMiBAQAogICAgIHsKICAgICAgICAgTW9ja0NvcmVXaW5k
b3cgbW9ja0NvcmVXaW5kb3c7CiAgICAgICAgIENvbVB0cjxJTWFwPEhTVFJJTkcsIElJbnNwZWN0
YWJsZSo+PiBwcm9wZXJ0eVNldDsKLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvcmVXaW5kb3cs
IGdldF9Cb3VuZHModGVzdGluZzo6XykpLlRpbWVzKDEpOwotICAgICAgICBFWFBFQ1RfQ0FMTCht
b2NrQ29yZVdpbmRvdywgYWRkX1NpemVDaGFuZ2VkKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5U
aW1lcygxKTsKLSAgICAgICAgRVhQRUNUX0NBTEwobW9ja0NvcmVXaW5kb3csIHJlbW92ZV9TaXpl
Q2hhbmdlZCh0ZXN0aW5nOjpfKSkuVGltZXMoMSk7CisKKyAgICAgICAgLy8gQWRkIHRoZSBDb3Jl
V2luZG93IHRvIHRoZSBwcm9wZXJ0eSBzZXQKICAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VF
REVEKENyZWF0ZVByb3BlcnR5TWFwKCZwcm9wZXJ0eVNldCkpOwogICAgICAgICBFWFBFQ1RfSFJF
U1VMVF9TVUNDRUVERUQoU2V0SW5zcGVjdGFibGVQcm9wZXJ0eVZhbHVlKHByb3BlcnR5U2V0LCBF
R0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHksICZtb2NrQ29yZVdpbmRvdykpOworCisgICAgICAg
IGV4cGVjdE5hdGl2ZVdpbmRvd0luaXRDYWxscyhtb2NrQ29yZVdpbmRvdywgdHJ1ZSk7CiAgICAg
ICAgIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3cocHJvcGVydHlTZXQuR2V0KCkpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShuYXRpdmVXaW5kb3cuaW5pdGlhbGl6ZSgpKTsKICAgICB9CkBAIC0yMjMs
MTEgKzI0NSwxMTIgQEAKICAgICB7CiAgICAgICAgIE1vY2tDb3JlV2luZG93IG1vY2tDb3JlV2lu
ZG93OwogICAgICAgICBDb21QdHI8SU1hcDxIU1RSSU5HLCBJSW5zcGVjdGFibGUqPj4gcHJvcGVy
dHlTZXQ7CisKICAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKENyZWF0ZVByb3BlcnR5
TWFwKCZwcm9wZXJ0eVNldCkpOworCiAgICAgICAgIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3co
cHJvcGVydHlTZXQuR2V0KCkpOwogICAgICAgICBFWFBFQ1RfRkFMU0UobmF0aXZlV2luZG93Lmlu
aXRpYWxpemUoKSk7CiAgICAgfQogICAgIENvVW5pbml0aWFsaXplKCk7CiB9CiAKKy8vIFRlc3Rz
IHRoYXQgdGhlIHNjYWxlIHByb3BlcnR5IHdvcmtzIGFzIGV4cGVjdGVkIGluIGEgcHJvcGVydHkg
c2V0IHdpdGggYSBTd2FwQ2hhaW5QYW5lbAorY2xhc3MgQ29yZVdpbmRvd1NjYWxlVGVzdCA6IHB1
YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6cGFpcjxmbG9hdCwgYm9vbD4+Cit7Cit9
OworCitURVNUX1AoQ29yZVdpbmRvd1NjYWxlVGVzdCwgVmFsaWRhdGVTY2FsZSkKK3sKKyAgICBm
bG9hdCBzY2FsZSA9IEdldFBhcmFtKCkuZmlyc3Q7CisgICAgYm9vbCBleHBlY3RlZFJlc3VsdCA9
IEdldFBhcmFtKCkuc2Vjb25kOworCisgICAgLy8gQ09NIGlzIHJlcXVpcmVkIHRvIGJlIGluaXRp
YWxpemVkIGZvciBjcmVhdGlvbiBvZiB0aGUgcHJvcGVydHkgc2V0CisgICAgRVhQRUNUX0hSRVNV
TFRfU1VDQ0VFREVEKENvSW5pdGlhbGl6ZUV4KE5VTEwsIENPSU5JVF9NVUxUSVRIUkVBREVEKSk7
CisgICAgeworICAgICAgICBNb2NrQ29yZVdpbmRvdyBtb2NrQ29yZVdpbmRvdzsKKyAgICAgICAg
Q29tUHRyPElNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+IHByb3BlcnR5U2V0OworICAgICAg
ICBDb21QdHI8SVByb3BlcnR5VmFsdWVTdGF0aWNzPiBwcm9wZXJ0eVZhbHVlU3RhdGljczsKKyAg
ICAgICAgQ29tUHRyPElQcm9wZXJ0eVZhbHVlPiBzaW5nbGVWYWx1ZTsKKworICAgICAgICAvLyBD
cmVhdGUgYSBzaW1wbGUgcHJvcGVydHkgc2V0CisgICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NF
RURFRChDcmVhdGVQcm9wZXJ0eU1hcCgmcHJvcGVydHlTZXQpKTsKKyAgICAgICAgRVhQRUNUX0hS
RVNVTFRfU1VDQ0VFREVEKFNldEluc3BlY3RhYmxlUHJvcGVydHlWYWx1ZShwcm9wZXJ0eVNldCwg
RUdMTmF0aXZlV2luZG93VHlwZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PElJbnNwZWN0YWJs
ZSo+KCZtb2NrQ29yZVdpbmRvdykpKTsKKworICAgICAgICAvLyBBZGQgYSB2YWxpZCBzY2FsZSBm
YWN0b3IgdG8gdGhlIHByb3BlcnR5IHNldAorICAgICAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVE
RUQoQ3JlYXRlUHJvcGVydHlWYWx1ZVN0YXRpY3MocHJvcGVydHlWYWx1ZVN0YXRpY3MuR2V0QWRk
cmVzc09mKCkpKTsKKyAgICAgICAgcHJvcGVydHlWYWx1ZVN0YXRpY3MtPkNyZWF0ZVNpbmdsZShz
Y2FsZSwgcmVpbnRlcnByZXRfY2FzdDxJSW5zcGVjdGFibGUqKj4oc2luZ2xlVmFsdWUuR2V0QWRk
cmVzc09mKCkpKTsKKyAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKFNldEluc3BlY3Rh
YmxlUHJvcGVydHlWYWx1ZShwcm9wZXJ0eVNldCwgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJv
cGVydHksIHJlaW50ZXJwcmV0X2Nhc3Q8SUluc3BlY3RhYmxlKj4oc2luZ2xlVmFsdWUuR2V0KCkp
KSk7CisKKyAgICAgICAgLy8gQ2hlY2sgbmF0aXZlIHdpbmRvdyBpbml0IHN0YXR1cyBhbmQgY2Fs
bHMgdG8gdGhlIG1vY2sgc3dhcGNoYWlucGFuZWwKKyAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2
ZVdpbmRvdyhwcm9wZXJ0eVNldC5HZXQoKSk7CisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCkK
KyAgICAgICAgeworICAgICAgICAgICAgZXhwZWN0TmF0aXZlV2luZG93SW5pdENhbGxzKG1vY2tD
b3JlV2luZG93LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIEVYUEVDVF9FUShuYXRpdmVX
aW5kb3cuaW5pdGlhbGl6ZSgpLCBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorICAgIENvVW5pbml0
aWFsaXplKCk7Cit9CisKK3R5cGVkZWYgc3RkOjpwYWlyPGZsb2F0LCBib29sPiBzY2FsZVZhbGlk
UGFpcjsKK3N0YXRpYyBjb25zdCBzY2FsZVZhbGlkUGFpciBzY2FsZXNbXSA9IHsgc2NhbGVWYWxp
ZFBhaXIoMS4wZiwgICB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2NhbGVWYWxpZFBhaXIoMC41ZiwgICB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2NhbGVWYWxpZFBhaXIoMC4wZiwgICBmYWxzZSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlVmFsaWRQYWlyKDAuMDFm
LCAgdHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxl
VmFsaWRQYWlyKDIuMDBmLCAgdHJ1ZSkgfTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTmF0
aXZlV2luZG93VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENvcmVXaW5kb3dTY2FsZVRl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihzY2FsZXMpKTsK
KworLy8gVGVzdHMgdGhhdCB0aGUgc2l6ZSBwcm9wZXJ0eSB3b3JrcyBhcyBleHBlY3RlZCBpbiBh
IHByb3BlcnR5IHNldCB3aXRoIGEgU3dhcENoYWluUGFuZWwKK2NsYXNzIENvcmVXaW5kb3dTaXpl
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6dHVwbGU8ZmxvYXQsIGZs
b2F0LCBib29sPj4KK3sKK307CisKK1RFU1RfUChDb3JlV2luZG93U2l6ZVRlc3QsIFZhbGlkYXRl
U2l6ZSkKK3sKKyAgICBTaXplIHJlbmRlclNpemUgPSB7IHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkp
LCBzdGQ6OmdldDwxPihHZXRQYXJhbSgpKSB9OworICAgIGJvb2wgZXhwZWN0ZWRSZXN1bHQgPSBz
dGQ6OmdldDwyPihHZXRQYXJhbSgpKTsKKworICAgIC8vIENPTSBpcyByZXF1aXJlZCB0byBiZSBp
bml0aWFsaXplZCBmb3IgY3JlYXRpb24gb2YgdGhlIHByb3BlcnR5IHNldAorICAgIEVYUEVDVF9I
UkVTVUxUX1NVQ0NFRURFRChDb0luaXRpYWxpemVFeChOVUxMLCBDT0lOSVRfTVVMVElUSFJFQURF
RCkpOworICAgIHsKKyAgICAgICAgTW9ja0NvcmVXaW5kb3cgbW9ja0NvcmVXaW5kb3c7CisgICAg
ICAgIENvbVB0cjxJTWFwPEhTVFJJTkcsIElJbnNwZWN0YWJsZSo+PiBwcm9wZXJ0eVNldDsKKyAg
ICAgICAgQ29tUHRyPElQcm9wZXJ0eVZhbHVlU3RhdGljcz4gcHJvcGVydHlWYWx1ZVN0YXRpY3M7
CisgICAgICAgIENvbVB0cjxJUHJvcGVydHlWYWx1ZT4gc2l6ZVZhbHVlOworCisgICAgICAgIC8v
IENyZWF0ZSBhIHNpbXBsZSBwcm9wZXJ0eSBzZXQKKyAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VD
Q0VFREVEKENyZWF0ZVByb3BlcnR5TWFwKCZwcm9wZXJ0eVNldCkpOworICAgICAgICBFWFBFQ1Rf
SFJFU1VMVF9TVUNDRUVERUQoU2V0SW5zcGVjdGFibGVQcm9wZXJ0eVZhbHVlKHByb3BlcnR5U2V0
LCBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHksIHJlaW50ZXJwcmV0X2Nhc3Q8SUluc3BlY3Rh
YmxlKj4oJm1vY2tDb3JlV2luZG93KSkpOworCisgICAgICAgIC8vIEFkZCBhIHZhbGlkIHNpemUg
dG8gdGhlIHByb3BlcnR5IHNldAorICAgICAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoQ3Jl
YXRlUHJvcGVydHlWYWx1ZVN0YXRpY3MocHJvcGVydHlWYWx1ZVN0YXRpY3MuR2V0QWRkcmVzc09m
KCkpKTsKKyAgICAgICAgcHJvcGVydHlWYWx1ZVN0YXRpY3MtPkNyZWF0ZVNpemUocmVuZGVyU2l6
ZSwgcmVpbnRlcnByZXRfY2FzdDxJSW5zcGVjdGFibGUqKj4oc2l6ZVZhbHVlLkdldEFkZHJlc3NP
ZigpKSk7CisgICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChTZXRJbnNwZWN0YWJsZVBy
b3BlcnR5VmFsdWUocHJvcGVydHlTZXQsIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHksIHJl
aW50ZXJwcmV0X2Nhc3Q8SUluc3BlY3RhYmxlKj4oc2l6ZVZhbHVlLkdldCgpKSkpOworCisgICAg
ICAgIC8vIENoZWNrIG5hdGl2ZSB3aW5kb3cgaW5pdCBzdGF0dXMgYW5kIGNhbGxzIHRvIHRoZSBt
b2NrIHN3YXBjaGFpbnBhbmVsCisgICAgICAgIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3cocHJv
cGVydHlTZXQuR2V0KCkpOworICAgICAgICBpZiAoZXhwZWN0ZWRSZXN1bHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGV4cGVjdE5hdGl2ZVdpbmRvd0luaXRDYWxscyhtb2NrQ29yZVdpbmRvdywg
ZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgRVhQRUNUX0VRKG5hdGl2ZVdpbmRvdy5pbml0
aWFsaXplKCksIGV4cGVjdGVkUmVzdWx0KTsKKyAgICB9CisgICAgQ29VbmluaXRpYWxpemUoKTsK
K30KKwordHlwZWRlZiBzdGQ6OnR1cGxlPGZsb2F0LCBmbG9hdCwgYm9vbD4gc2l6ZVZhbGlkUGFp
cjsKK3N0YXRpYyBjb25zdCBzaXplVmFsaWRQYWlyIHNpemVzW10gPSB7IHNpemVWYWxpZFBhaXIo
IDgwMCwgIDQ4MCwgdHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplVmFsaWRQYWlyKCAgIDAsICA0ODAsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVWYWxpZFBhaXIoIDgwMCwgICAgMCwgZmFsc2UpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVZhbGlkUGFpciggICAwLCAg
ICAwLCBmYWxzZSkgfTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTmF0aXZlV2luZG93VGVz
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENvcmVXaW5kb3dTaXplVGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlc0luKHNpemVzKSk7CisKIH0gLy8gbmFtZXNw
YWNlCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2luZG93LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2luZG93LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93
aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExLDEx
ICsxMSwyMiBAQAogCiBuYW1lc3BhY2UgcngKIHsKLU5hdGl2ZVdpbmRvdzo6TmF0aXZlV2luZG93
KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQorTmF0aXZlV2luZG93OjpOYXRpdmVXaW5kb3co
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBkaXJlY3RDb21wb3NpdGlvbikKIHsKICAgICBtV2luZG93ID0gd2luZG93OworICAgIG1Db25m
aWcgPSBjb25maWc7CiB9CiAKK05hdGl2ZVdpbmRvdzo6fk5hdGl2ZVdpbmRvdygpCit7Cit9CisK
K3ZvaWQgTmF0aXZlV2luZG93Ojpjb21taXRDaGFuZ2UoKQoreworfQorCiBib29sIE5hdGl2ZVdp
bmRvdzo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgLy8gSWYgdGhlIG5hdGl2ZSB3aW5kb3cgdHlwZSBp
cyBhIElQcm9wZXJ0eVNldCwgZXh0cmFjdCB0aGUKQEAgLTgzLDcgKzk0LDkgQEAKIHsKICAgICBp
ZiAobUltcGwpCiAgICAgewotICAgICAgICByZXR1cm4gbUltcGwtPmNyZWF0ZVN3YXBDaGFpbihk
ZXZpY2UsIGZhY3RvcnksIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgc3dhcENoYWluKTsKKyAgICAg
ICAgYm9vbCBjb250YWluc0FscGhhID0gKG1Db25maWctPmFscGhhU2l6ZSA+IDApOworICAgICAg
ICByZXR1cm4gbUltcGwtPmNyZWF0ZVN3YXBDaGFpbihkZXZpY2UsIGZhY3RvcnksIGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgY29udGFpbnNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3dhcENoYWluKTsKICAgICB9CiAKICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OwpAQCAtMTk3LDE2ICsyMTAsNDcgQEAKIC8vIEEgVmFsaWQgRUdMTmF0aXZlV2luZG93VHlwZSBJ
SW5zcGVjdGFibGUgY2FuIG9ubHkgYmU6CiAvLwogLy8gSUNvcmVXaW5kb3cKKy8vIElTd2FwQ2hh
aW5QYW5lbAogLy8gSVByb3BlcnR5U2V0Ci0vLyAKKy8vCiAvLyBBbnl0aGluZyBlbHNlIHdpbGwg
YmUgcmVqZWN0ZWQgYXMgYW4gaW52YWxpZCBJSW5zcGVjdGFibGUuCiBib29sIElzVmFsaWRFR0xO
YXRpdmVXaW5kb3dUeXBlKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KQogewogICAgIHJldHVy
biBJc0NvcmVXaW5kb3cod2luZG93KSB8fCBJc1N3YXBDaGFpblBhbmVsKHdpbmRvdykgfHwgSXNF
R0xDb25maWd1cmVkUHJvcGVydHlTZXQod2luZG93KTsKIH0KIAorLy8gUmV0cmlldmUgYW4gb3B0
aW9uYWwgcHJvcGVydHkgZnJvbSBhIHByb3BlcnR5IHNldAorSFJFU1VMVCBHZXRPcHRpb25hbFBy
b3BlcnR5VmFsdWUoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6Q29sbGVj
dGlvbnM6OklNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+ICZwcm9wZXJ0eU1hcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdjaGFyX3QgKnByb3BlcnR5TmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gKmhhc0tleSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbVB0cjxBQkk6OldpbmRvd3M6OkZvdW5kYXRp
b246OklQcm9wZXJ0eVZhbHVlPiAmcHJvcGVydHlWYWx1ZSkKK3sKKyAgICBpZiAoIXByb3BlcnR5
TWFwIHx8ICFoYXNLZXkpCisgICAgeworICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOworICAg
IH0KKworICAgIC8vIEFzc3VtZSB0aGF0IHRoZSB2YWx1ZSBkb2VzIG5vdCBleGlzdAorICAgICpo
YXNLZXkgPSBmYWxzZTsKKworICAgIEhSRVNVTFQgcmVzdWx0ID0gcHJvcGVydHlNYXAtPkhhc0tl
eShIU3RyaW5nUmVmZXJlbmNlKHByb3BlcnR5TmFtZSkuR2V0KCksIGhhc0tleSk7CisgICAgaWYg
KFNVQ0NFRURFRChyZXN1bHQpICYmICEoKmhhc0tleSkpCisgICAgeworICAgICAgICAvLyBWYWx1
ZSBkb2VzIG5vdCBleGlzdCwgc28gcmV0dXJuIFNfT0sgYW5kIHNldCB0aGUgZXhpc3RzIHBhcmFt
ZXRlciB0byBmYWxzZSB0byBpbmRpY2F0ZQorICAgICAgICAvLyB0aGF0IGEgdGhlIG9wdGlvbmFs
IHByb3BlcnR5IGRvZXMgbm90IGV4aXN0LgorICAgICAgICByZXR1cm4gU19PSzsKKyAgICB9CisK
KyAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXN1bHQgPSBwcm9w
ZXJ0eU1hcC0+TG9va3VwKEhTdHJpbmdSZWZlcmVuY2UocHJvcGVydHlOYW1lKS5HZXQoKSwgJnBy
b3BlcnR5VmFsdWUpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8vIEF0dGVt
cHRzIHRvIHJlYWQgYW4gb3B0aW9uYWwgU0laRSBwcm9wZXJ0eSB2YWx1ZSB0aGF0IGlzIGFzc3Vt
ZWQgdG8gYmUgaW4gdGhlIGZvcm0gb2YKLS8vIGFuIEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6
U2l6ZS4gIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBTaXplIHZhbHVlIGJlZm9yZSByZXR1
cm5pbmcgCisvLyBhbiBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OlNpemUuICBUaGlzIGZ1bmN0
aW9uIHZhbGlkYXRlcyB0aGUgU2l6ZSB2YWx1ZSBiZWZvcmUgcmV0dXJuaW5nCiAvLyBpdCB0byB0
aGUgY2FsbGVyLgogLy8KIC8vIFBvc3NpYmxlIHJldHVybiB2YWx1ZXMgYXJlOgpAQCAtMjE3LDYz
ICsyNjEsMTEyIEBACiAvLyAgICAqIEludmFsaWQgcHJvcGVydHkgdmFsdWUgKHdpZHRoL2hlaWdo
dCBtdXN0IGJlID4gMCkKIC8vIEFkZGl0aW9uYWwgZXJyb3JzIG1heSBiZSByZXR1cm5lZCBmcm9t
IElNYXAgb3IgSVByb3BlcnR5VmFsdWUKIC8vCi1IUkVTVUxUIEdldE9wdGlvbmFsU2l6ZVByb3Bl
cnR5VmFsdWUoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6Q29sbGVjdGlv
bnM6OklNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+JiBwcm9wZXJ0eU1hcCwgY29uc3Qgd2No
YXJfdCAqcHJvcGVydHlOYW1lLCBTSVpFICp2YWx1ZSwgYm9vbCAqdmFsdWVFeGlzdHMpCitIUkVT
VUxUIEdldE9wdGlvbmFsU2l6ZVByb3BlcnR5VmFsdWUoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93
czo6Rm91bmRhdGlvbjo6Q29sbGVjdGlvbnM6OklNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+
ICZwcm9wZXJ0eU1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3Y2hhcl90ICpwcm9wZXJ0eU5hbWUsIFNJWkUgKnZhbHVlLCBib29sICp2YWx1ZUV4aXN0cykK
IHsKLSAgICBpZiAoIXByb3BlcnR5TWFwIHx8ICFwcm9wZXJ0eU5hbWUgfHwgIXZhbHVlIHx8ICF2
YWx1ZUV4aXN0cykKKyAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpJUHJvcGVy
dHlWYWx1ZT4gcHJvcGVydHlWYWx1ZTsKKyAgICBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OlBy
b3BlcnR5VHlwZSBwcm9wZXJ0eVR5cGUgPSBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OlByb3Bl
cnR5VHlwZTo6UHJvcGVydHlUeXBlX0VtcHR5OworICAgIFNpemUgc2l6ZVZhbHVlID0geyAwLCAw
IH07CisgICAgYm9vbGVhbiBoYXNLZXkgPSBmYWxzZTsKKworICAgIGlmICghcHJvcGVydHlNYXAg
fHwgIXZhbHVlIHx8ICF2YWx1ZUV4aXN0cykKICAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKICAgICB9CiAKICAgICAvLyBBc3N1bWUgdGhh
dCB0aGUgdmFsdWUgZG9lcyBub3QgZXhpc3QKICAgICAqdmFsdWVFeGlzdHMgPSBmYWxzZTsKICAg
ICAqdmFsdWUgPSB7IDAsIDAgfTsKIAorICAgIEhSRVNVTFQgcmVzdWx0ID0gR2V0T3B0aW9uYWxQ
cm9wZXJ0eVZhbHVlKHByb3BlcnR5TWFwLCBwcm9wZXJ0eU5hbWUsICZoYXNLZXksIHByb3BlcnR5
VmFsdWUpOworICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSAmJiBoYXNLZXkpCisgICAgeworICAg
ICAgICByZXN1bHQgPSBwcm9wZXJ0eVZhbHVlLT5nZXRfVHlwZSgmcHJvcGVydHlUeXBlKTsKKwor
ICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXhwZWN0ZWQgU2l6ZSBwcm9wZXJ0eSBpcyBvZiBQcm9w
ZXJ0eVR5cGVfU2l6ZSB0eXBlLgorICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkgJiYgcHJv
cGVydHlUeXBlID09IEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6UHJvcGVydHlUeXBlOjpQcm9w
ZXJ0eVR5cGVfU2l6ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChwcm9w
ZXJ0eVZhbHVlLT5HZXRTaXplKCZzaXplVmFsdWUpKSAmJiAoc2l6ZVZhbHVlLldpZHRoID4gMCAm
JiBzaXplVmFsdWUuSGVpZ2h0ID4gMCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Ly8gQSB2YWxpZCBwcm9wZXJ0eSB2YWx1ZSBleGlzdHMKKyAgICAgICAgICAgICAgICAqdmFsdWUg
PSB7IHN0YXRpY19jYXN0PGxvbmc+KHNpemVWYWx1ZS5XaWR0aCksIHN0YXRpY19jYXN0PGxvbmc+
KHNpemVWYWx1ZS5IZWlnaHQpIH07CisgICAgICAgICAgICAgICAgKnZhbHVlRXhpc3RzID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBTX09LOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEFuIGludmFsaWQg
U2l6ZSBwcm9wZXJ0eSB3YXMgZGV0ZWN0ZWQuIFdpZHRoL0hlaWdodCB2YWx1ZXMgbXVzdCA+IDAK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBFX0lOVkFMSURBUkc7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBBbiBpbnZh
bGlkIHByb3BlcnR5IHR5cGUgd2FzIGRldGVjdGVkLiBTaXplIHByb3BlcnR5IG11c3QgYmUgb2Yg
UHJvcGVydHlUeXBlX1NpemUKKyAgICAgICAgICAgIHJlc3VsdCA9IEVfSU5WQUxJREFSRzsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEF0dGVtcHRzIHRv
IHJlYWQgYW4gb3B0aW9uYWwgZmxvYXQgcHJvcGVydHkgdmFsdWUgdGhhdCBpcyBhc3N1bWVkIHRv
IGJlIGluIHRoZSBmb3JtIG9mCisvLyBhbiBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OlNpbmds
ZS4gIFRoaXMgZnVuY3Rpb24gdmFsaWRhdGVzIHRoZSBTaW5nbGUgdmFsdWUgYmVmb3JlIHJldHVy
bmluZworLy8gaXQgdG8gdGhlIGNhbGxlci4KKy8vCisvLyBQb3NzaWJsZSByZXR1cm4gdmFsdWVz
IGFyZToKKy8vIFNfT0ssIHZhbHVlRXhpc3RzID09IHRydWUgLSBvcHRpb25hbCBTaW5nbGUgdmFs
dWUgd2FzIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgYW5kIHZhbGlkYXRlZAorLy8gU19PSywgdmFs
dWVFeGlzdHMgPT0gZmFsc2UgLSBvcHRpb25hbCBTaW5nbGUgdmFsdWUgd2FzIG5vdCBmb3VuZAor
Ly8gRV9JTlZBTElEQVJHLCB2YWx1ZUV4aXN0cyA9IGZhbHNlIC0gb3B0aW9uYWwgU2luZ2xlIHZh
bHVlIHdhcyBtYWxmb3JtZWQgaW4gdGhlIHByb3BlcnR5IHNldC4KKy8vICAgICogSW5jb3JyZWN0
IHByb3BlcnR5IHR5cGUgKCBtdXN0IGJlIFByb3BlcnR5VHlwZV9TaW5nbGUpCisvLyAgICAqIElu
dmFsaWQgcHJvcGVydHkgdmFsdWUgKG11c3QgYmUgPiAwKQorLy8gQWRkaXRpb25hbCBlcnJvcnMg
bWF5IGJlIHJldHVybmVkIGZyb20gSU1hcCBvciBJUHJvcGVydHlWYWx1ZQorLy8KK0hSRVNVTFQg
R2V0T3B0aW9uYWxTaW5nbGVQcm9wZXJ0eVZhbHVlKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6
OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJTWFwPEhTVFJJTkcsIElJbnNwZWN0YWJsZSo+PiAm
cHJvcGVydHlNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB3Y2hhcl90ICpwcm9wZXJ0eU5hbWUsIGZsb2F0ICp2YWx1ZSwgYm9vbCAqdmFsdWVFeGlzdHMp
Cit7CiAgICAgQ29tUHRyPEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6SVByb3BlcnR5VmFsdWU+
IHByb3BlcnR5VmFsdWU7CiAgICAgQUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpQcm9wZXJ0eVR5
cGUgcHJvcGVydHlUeXBlID0gQUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpQcm9wZXJ0eVR5cGU6
OlByb3BlcnR5VHlwZV9FbXB0eTsKLSAgICBTaXplIHNpemVWYWx1ZSA9IHsgMCwgMCB9OworICAg
IGZsb2F0IHNjYWxlVmFsdWUgPSAwLjBmOwogICAgIGJvb2xlYW4gaGFzS2V5ID0gZmFsc2U7CiAK
LSAgICBIUkVTVUxUIHJlc3VsdCA9IHByb3BlcnR5TWFwLT5IYXNLZXkoSFN0cmluZ1JlZmVyZW5j
ZShwcm9wZXJ0eU5hbWUpLkdldCgpLCAmaGFzS2V5KTsKLSAgICBpZiAoU1VDQ0VFREVEKHJlc3Vs
dCkgJiYgIWhhc0tleSkKKyAgICBpZiAoIXByb3BlcnR5TWFwIHx8ICF2YWx1ZSB8fCAhdmFsdWVF
eGlzdHMpCiAgICAgewotICAgICAgICAvLyBWYWx1ZSBkb2VzIG5vdCBleGlzdCwgc28gcmV0dXJu
IFNfT0sgYW5kIHNldCB0aGUgZXhpc3RzIHBhcmFtZXRlciB0byBmYWxzZSB0byBpbmRpY2F0ZQot
ICAgICAgICAvLyB0aGF0IGEgdGhlIG9wdGlvbmFsIHByb3BlcnR5IGRvZXMgbm90IGV4aXN0Lgot
ICAgICAgICAqdmFsdWVFeGlzdHMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIFNfT0s7CisgICAg
ICAgIHJldHVybiBFX0lOVkFMSURBUkc7CiAgICAgfQogCi0gICAgaWYgKFNVQ0NFRURFRChyZXN1
bHQpKQotICAgIHsKLSAgICAgICAgcmVzdWx0ID0gcHJvcGVydHlNYXAtPkxvb2t1cChIU3RyaW5n
UmVmZXJlbmNlKHByb3BlcnR5TmFtZSkuR2V0KCksICZwcm9wZXJ0eVZhbHVlKTsKLSAgICB9Cisg
ICAgLy8gQXNzdW1lIHRoYXQgdGhlIHZhbHVlIGRvZXMgbm90IGV4aXN0CisgICAgKnZhbHVlRXhp
c3RzID0gZmFsc2U7CisgICAgKnZhbHVlID0gMC4wZjsKIAotICAgIGlmIChTVUNDRUVERUQocmVz
dWx0KSkKKyAgICBIUkVTVUxUIHJlc3VsdCA9IEdldE9wdGlvbmFsUHJvcGVydHlWYWx1ZShwcm9w
ZXJ0eU1hcCwgcHJvcGVydHlOYW1lLCAmaGFzS2V5LCBwcm9wZXJ0eVZhbHVlKTsKKyAgICBpZiAo
U1VDQ0VFREVEKHJlc3VsdCkgJiYgaGFzS2V5KQogICAgIHsKICAgICAgICAgcmVzdWx0ID0gcHJv
cGVydHlWYWx1ZS0+Z2V0X1R5cGUoJnByb3BlcnR5VHlwZSk7Ci0gICAgfQogCi0gICAgLy8gQ2hl
Y2sgaWYgdGhlIGV4cGVjdGVkIFNpemUgcHJvcGVydHkgaXMgb2YgUHJvcGVydHlUeXBlX1NpemUg
dHlwZS4KLSAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkgJiYgcHJvcGVydHlUeXBlID09IEFCSTo6
V2luZG93czo6Rm91bmRhdGlvbjo6UHJvcGVydHlUeXBlOjpQcm9wZXJ0eVR5cGVfU2l6ZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChTVUNDRUVERUQocHJvcGVydHlWYWx1ZS0+R2V0U2l6ZSgmc2l6ZVZh
bHVlKSkgJiYgKHNpemVWYWx1ZS5XaWR0aCA+IDAgJiYgc2l6ZVZhbHVlLkhlaWdodCA+IDApKQor
ICAgICAgICAvLyBDaGVjayBpZiB0aGUgZXhwZWN0ZWQgU2NhbGUgcHJvcGVydHkgaXMgb2YgUHJv
cGVydHlUeXBlX1NpbmdsZSB0eXBlLgorICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkgJiYg
cHJvcGVydHlUeXBlID09IEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6UHJvcGVydHlUeXBlOjpQ
cm9wZXJ0eVR5cGVfU2luZ2xlKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBIHZhbGlkIHBy
b3BlcnR5IHZhbHVlIGV4aXN0cwotICAgICAgICAgICAgKnZhbHVlID0geyBzdGF0aWNfY2FzdDxs
b25nPihzaXplVmFsdWUuV2lkdGgpLCBzdGF0aWNfY2FzdDxsb25nPihzaXplVmFsdWUuSGVpZ2h0
KSB9OwotICAgICAgICAgICAgKnZhbHVlRXhpc3RzID0gdHJ1ZTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IFNfT0s7CisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHByb3BlcnR5VmFsdWUtPkdldFNp
bmdsZSgmc2NhbGVWYWx1ZSkpICYmIChzY2FsZVZhbHVlID4gMC4wZikpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgLy8gQSB2YWxpZCBwcm9wZXJ0eSB2YWx1ZSBleGlzdHMKKyAgICAg
ICAgICAgICAgICAqdmFsdWUgPSBzY2FsZVZhbHVlOworICAgICAgICAgICAgICAgICp2YWx1ZUV4
aXN0cyA9IHRydWU7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gU19PSzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBB
biBpbnZhbGlkIHNjYWxlIHdhcyBzZXQKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBFX0lOVkFM
SURBUkc7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBBbiBpbnZhbGlkIFNpemUgcHJvcGVydHkgd2FzIGRldGVjdGVkLiBX
aWR0aC9IZWlnaHQgdmFsdWVzIG11c3QgPiAwCisgICAgICAgICAgICAvLyBBbiBpbnZhbGlkIHBy
b3BlcnR5IHR5cGUgd2FzIGRldGVjdGVkLiBTaXplIHByb3BlcnR5IG11c3QgYmUgb2YgUHJvcGVy
dHlUeXBlX1NpbmdsZQogICAgICAgICAgICAgcmVzdWx0ID0gRV9JTlZBTElEQVJHOwogICAgICAg
ICB9CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIEFuIGludmFsaWQgcHJvcGVy
dHkgdHlwZSB3YXMgZGV0ZWN0ZWQuIFNpemUgcHJvcGVydHkgbXVzdCBiZSBvZiBQcm9wZXJ0eVR5
cGVfU2l6ZQotICAgICAgICByZXN1bHQgPSBFX0lOVkFMSURBUkc7Ci0gICAgfQogCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KKwogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw5IEBACiAgIHB1YmxpYzoKICAgICBJbnNwZWN0YWJsZU5hdGl2ZVdpbmRv
dygpIDoKICAgICAgICAgbVN1cHBvcnRzU3dhcENoYWluUmVzaXplKHRydWUpLAotICAgICAgICBt
UmVxdWlyZXNTd2FwQ2hhaW5TY2FsaW5nKGZhbHNlKSwKKyAgICAgICAgbVN3YXBDaGFpblNpemVT
cGVjaWZpZWQoZmFsc2UpLAorICAgICAgICBtU3dhcENoYWluU2NhbGVTcGVjaWZpZWQoZmFsc2Up
LAorICAgICAgICBtU3dhcENoYWluU2NhbGUoMS4wZiksCiAgICAgICAgIG1DbGllbnRSZWN0Q2hh
bmdlZChmYWxzZSksCiAgICAgICAgIG1DbGllbnRSZWN0KHswLDAsMCwwfSksCiAgICAgICAgIG1O
ZXdDbGllbnRSZWN0KHswLDAsMCwwfSkKQEAgLTQxLDE0ICs0MywxNyBAQAogICAgIHZpcnR1YWwg
fkluc3BlY3RhYmxlTmF0aXZlV2luZG93KCl7fQogCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxp
emUoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0eVNldCAqcHJvcGVydHlTZXQp
ID0gMDsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgY3JlYXRlU3dhcENoYWluKElEM0QxMURldmljZSAq
ZGV2aWNlLCBEWEdJRmFjdG9yeSAqZmFjdG9yeSwgRFhHSV9GT1JNQVQgZm9ybWF0LCB1bnNpZ25l
ZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsIERYR0lTd2FwQ2hhaW4gKipzd2FwQ2hh
aW4pID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVnaXN0ZXJGb3JTaXplQ2hhbmdlRXZlbnRzKCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9yU2l6ZUNoYW5nZUV2ZW50cygpID0g
MDsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgc2NhbGVTd2FwQ2hhaW4oY29uc3QgU0laRSYgbmV3U2l6
ZSkgeyByZXR1cm4gU19PSzsgfQorICAgIHZpcnR1YWwgSFJFU1VMVCBjcmVhdGVTd2FwQ2hhaW4o
SUQzRDExRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJRmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGNvbnRhaW5zQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJU3dhcENoYWluICoqc3dhcENoYWluKSA9IDA7CiAKICAgICBib29sIGdldENsaWVu
dFJlY3QoUkVDVCAqcmVjdCkKICAgICB7Ci0gICAgICAgIGlmIChtQ2xpZW50UmVjdENoYW5nZWQg
JiYgbVN1cHBvcnRzU3dhcENoYWluUmVzaXplKQorICAgICAgICBpZiAobUNsaWVudFJlY3RDaGFu
Z2VkKQogICAgICAgICB7CiAgICAgICAgICAgICBtQ2xpZW50UmVjdCA9IG1OZXdDbGllbnRSZWN0
OwogICAgICAgICB9CkBAIC01OCwyMyArNjMsNDQgQEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXROZXdDbGllbnRTaXplKGNvbnN0IFNJWkUgJm5ld1NpemUpCisg
ICAgLy8gc2V0TmV3Q2xpZW50U2l6ZSBpcyB1c2VkIGJ5IHRoZSBXaW5SVCBzaXplIGNoYW5nZSBo
YW5kbGVyLiBJdCBpc24ndCB1c2VkIGJ5IHRoZSByZXN0IG9mIEFOR0xFLgorICAgIHZvaWQgc2V0
TmV3Q2xpZW50U2l6ZShjb25zdCBTSVpFICZuZXdXaW5kb3dTaXplKQogICAgIHsKLSAgICAgICAg
aWYgKG1TdXBwb3J0c1N3YXBDaGFpblJlc2l6ZSAmJiAhbVJlcXVpcmVzU3dhcENoYWluU2NhbGlu
ZykKKyAgICAgICAgLy8gSWYgdGhlIGNsaWVudCBkb2Vzbid0IHN1cHBvcnQgc3dhcGNoYWluIHJl
c2l6aW5nIHRoZW4gd2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSB1bnJlZ2lzdGVyZWQgZnJvbSBzaXpl
IGNoYW5nZSBoYW5kbGVyCisgICAgICAgIEFTU0VSVChtU3VwcG9ydHNTd2FwQ2hhaW5SZXNpemUp
OworCisgICAgICAgIGlmIChtU3VwcG9ydHNTd2FwQ2hhaW5SZXNpemUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG1OZXdDbGllbnRSZWN0ID0geyAwLCAwLCBuZXdTaXplLmN4LCBuZXdTaXplLmN5
IH07Ci0gICAgICAgICAgICBtQ2xpZW50UmVjdENoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Cisg
ICAgICAgICAgICAvLyBJZiB0aGUgc3dhcGNoYWluIHNpemUgd2FzIHNwZWNpZmllZCB0aGVuIHdl
IHNob3VsZCBpZ25vcmUgdGhpcyBjYWxsIHRvbworICAgICAgICAgICAgaWYgKCFtU3dhcENoYWlu
U2l6ZVNwZWNpZmllZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBkb24n
dCBoYXZlIHRvIGNoZWNrIGlmIGEgc3dhcGNoYWluIHNjYWxlIHdhcyBzcGVjaWZpZWQgaGVyZTsg
dGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4wZiB3aGljaCB3aWxsIGhhdmUgbm8gZWZmZWN0LgorICAg
ICAgICAgICAgICAgIG1OZXdDbGllbnRSZWN0ID0geyAwLCAwLCBzdGF0aWNfY2FzdDxsb25nPihu
ZXdXaW5kb3dTaXplLmN4ICogbVN3YXBDaGFpblNjYWxlKSwgc3RhdGljX2Nhc3Q8bG9uZz4obmV3
V2luZG93U2l6ZS5jeSAqIG1Td2FwQ2hhaW5TY2FsZSkgfTsKKyAgICAgICAgICAgICAgICBtQ2xp
ZW50UmVjdENoYW5nZWQgPSB0cnVlOwogCi0gICAgICAgIGlmIChtUmVxdWlyZXNTd2FwQ2hhaW5T
Y2FsaW5nKQotICAgICAgICB7Ci0gICAgICAgICAgICBzY2FsZVN3YXBDaGFpbihuZXdTaXplKTsK
KyAgICAgICAgICAgICAgICAvLyBJZiBhIHNjYWxlIHdhcyBzcGVjaWZpZWQsIHRoZW4gbm93IGlz
IHRoZSB0aW1lIHRvIGFwcGx5IHRoZSBzY2FsZSBtYXRyaXggZm9yIHRoZSBuZXcgc3dhcGNoYWlu
IHNpemUgYW5kIHdpbmRvdyBzaXplCisgICAgICAgICAgICAgICAgaWYgKG1Td2FwQ2hhaW5TY2Fs
ZVNwZWNpZmllZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNjYWxl
U3dhcENoYWluKG5ld1dpbmRvd1NpemUsIG1OZXdDbGllbnRSZWN0KTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIHN3YXBjaGFp
biBzaXplIHdhcyBmaXhlZCwgdGhlIHdpbmRvdyBtaWdodCBoYXZlIGNoYW5nZWQgc2l6ZS4KKyAg
ICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIHJlY2FsY3VsYXRlIHRoZSBzY2Fs
ZSBtYXRyaXggdG8gYWNjb3VudCBmb3IgdGhlIG5ldyB3aW5kb3cgc2l6ZQorICAgICAgICAgICAg
aWYgKG1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHNjYWxlU3dhcENoYWluKG5ld1dpbmRvd1NpemUsIG1DbGllbnRSZWN0KTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbVN1cHBvcnRz
U3dhcENoYWluUmVzaXplOwotICAgIGJvb2wgbVJlcXVpcmVzU3dhcENoYWluU2NhbGluZzsKKyAg
cHJvdGVjdGVkOgorICAgIHZpcnR1YWwgSFJFU1VMVCBzY2FsZVN3YXBDaGFpbihjb25zdCBTSVpF
ICZ3aW5kb3dTaXplLCBjb25zdCBSRUNUICZjbGllbnRSZWN0KSA9IDA7CisKKyAgICBib29sIG1T
dXBwb3J0c1N3YXBDaGFpblJlc2l6ZTsgLy8gU3VwcG9ydCBmb3IgSURYR0lTd2FwQ2hhaW46OlJl
c2l6ZUJ1ZmZlcnMgbWV0aG9kCisgICAgYm9vbCBtU3dhcENoYWluU2l6ZVNwZWNpZmllZDsgIC8v
IElmIGFuIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHkgd2FzIHNwZWNpZmllZAorICAgIGJv
b2wgbVN3YXBDaGFpblNjYWxlU3BlY2lmaWVkOyAvLyBJZiBhbiBFR0xSZW5kZXJSZXNvbHV0aW9u
U2NhbGVQcm9wZXJ0eSB3YXMgc3BlY2lmaWVkCisgICAgZmxvYXQgbVN3YXBDaGFpblNjYWxlOyAg
ICAgICAgIC8vIFRoZSBzY2FsZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhlIEVHTFJlbmRlclJlc29s
dXRpb25TY2FsZVByb3BlcnR5IHByb3BlcnR5CiAgICAgUkVDVCBtQ2xpZW50UmVjdDsKICAgICBS
RUNUIG1OZXdDbGllbnRSZWN0OwogICAgIGJvb2wgbUNsaWVudFJlY3RDaGFuZ2VkOwpAQCAtODYs
OCArMTEyLDE3IEBACiBib29sIElzQ29yZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRv
dywgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OkNvcmU6OklDb3JlV2luZG93PiAqY29yZVdpbmRv
dyA9IG51bGxwdHIpOwogYm9vbCBJc1N3YXBDaGFpblBhbmVsKEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93LCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6Q29udHJvbHM6OklTd2FwQ2hh
aW5QYW5lbD4gKnN3YXBDaGFpblBhbmVsID0gbnVsbHB0cik7CiBib29sIElzRUdMQ29uZmlndXJl
ZFByb3BlcnR5U2V0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBBQkk6OldpbmRvd3M6OkZv
dW5kYXRpb246OkNvbGxlY3Rpb25zOjpJUHJvcGVydHlTZXQgKipwcm9wZXJ0eVNldCA9IG51bGxw
dHIsIElJbnNwZWN0YWJsZSAqKmluc3BlY3RhYmxlID0gbnVsbHB0cik7Ci1IUkVTVUxUIEdldE9w
dGlvbmFsU2l6ZVByb3BlcnR5VmFsdWUoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6Rm91bmRh
dGlvbjo6Q29sbGVjdGlvbnM6OklNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+JiBwcm9wZXJ0
eU1hcCwgY29uc3Qgd2NoYXJfdCAqcHJvcGVydHlOYW1lLCBTSVpFICp2YWx1ZSwgYm9vbCAqdmFs
dWVFeGlzdHMpOwogCitIUkVTVUxUIEdldE9wdGlvbmFsUHJvcGVydHlWYWx1ZShjb25zdCBDb21Q
dHI8QUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpDb2xsZWN0aW9uczo6SU1hcDxIU1RSSU5HLCBJ
SW5zcGVjdGFibGUqPj4gJnByb3BlcnR5TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgd2NoYXJfdCAqcHJvcGVydHlOYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbGVhbiAqaGFzS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29tUHRyPEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6SVByb3BlcnR5VmFsdWU+ICZw
cm9wZXJ0eVZhbHVlKTsKKworSFJFU1VMVCBHZXRPcHRpb25hbFNpemVQcm9wZXJ0eVZhbHVlKGNv
bnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OkZvdW5kYXRpb246OkNvbGxlY3Rpb25zOjpJTWFwPEhT
VFJJTkcsIElJbnNwZWN0YWJsZSo+PiAmcHJvcGVydHlNYXAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqcHJvcGVydHlOYW1lLCBTSVpFICp2YWx1
ZSwgYm9vbCAqdmFsdWVFeGlzdHMpOworCitIUkVTVUxUIEdldE9wdGlvbmFsU2luZ2xlUHJvcGVy
dHlWYWx1ZShjb25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpDb2xsZWN0aW9u
czo6SU1hcDxIU1RSSU5HLCBJSW5zcGVjdGFibGUqPj4gJnByb3BlcnR5TWFwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2NoYXJfdCAqcHJvcGVydHlOYW1l
LCBmbG9hdCAqdmFsdWUsIGJvb2wgKnZhbHVlRXhpc3RzKTsKIH0KIAogI2VuZGlmIC8vIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9EM0QxMV9XSU5SVF9JTlNQRUNUQUJMRU5BVElWRVdJTkRPV19IXwpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93
aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
d2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MSw3ICsxMSwxMSBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxtYXRoLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBBQkk6OldpbmRvd3M6OkZvdW5kYXRpb247CiB1c2luZyBuYW1lc3Bh
Y2UgQUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpDb2xsZWN0aW9uczsKK3VzaW5nIG5hbWVzcGFj
ZSBBQkk6OldpbmRvd3M6OlVJOjpDb3JlOwordXNpbmcgbmFtZXNwYWNlIEFCSTo6V2luZG93czo6
VUk6OlhhbWw7Cit1c2luZyBuYW1lc3BhY2UgTWljcm9zb2Z0OjpXUkw7CiAKIG5hbWVzcGFjZSBy
eAogewpAQCAtMjAsMTIgKzI0LDc0IEBACiAgICAgdW5yZWdpc3RlckZvclNpemVDaGFuZ2VFdmVu
dHMoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgQWRkRnRtQmFzZQorewor
ICAgIHR5cGVkZWYgSW1wbGVtZW50czxSdW50aW1lQ2xhc3NGbGFnczxDbGFzc2ljQ29tPiwgVCwg
RnRtQmFzZT4gVHlwZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDT0RFPgorSFJFU1VMVCBS
dW5PblVJVGhyZWFkKENPREUgJiZjb2RlLCBjb25zdCBDb21QdHI8SUNvcmVEaXNwYXRjaGVyPiAm
ZGlzcGF0Y2hlcikKK3sKKyAgICBDb21QdHI8SUFzeW5jQWN0aW9uPiBhc3luY0FjdGlvbjsKKyAg
ICBIUkVTVUxUIHJlc3VsdCA9IFNfT0s7CisKKyAgICBib29sZWFuIGhhc1RocmVhZEFjY2VzczsK
KyAgICByZXN1bHQgPSBkaXNwYXRjaGVyLT5nZXRfSGFzVGhyZWFkQWNjZXNzKCZoYXNUaHJlYWRB
Y2Nlc3MpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgaWYgKGhhc1RocmVhZEFjY2VzcykKKyAgICB7CisgICAgICAg
IHJldHVybiBjb2RlKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEV2ZW50IHdh
aXRFdmVudChDcmVhdGVFdmVudEV4KE5VTEwsIE5VTEwsIENSRUFURV9FVkVOVF9NQU5VQUxfUkVT
RVQsIEVWRU5UX0FMTF9BQ0NFU1MpKTsKKyAgICAgICAgaWYgKCF3YWl0RXZlbnQuSXNWYWxpZCgp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRV9GQUlMOworICAgICAgICB9CisKKyAg
ICAgICAgSFJFU1VMVCBjb2RlUmVzdWx0ID0gRV9GQUlMOworICAgICAgICBhdXRvIGhhbmRsZXIg
PQorICAgICAgICAgICAgQ2FsbGJhY2s8QWRkRnRtQmFzZTxJRGlzcGF0Y2hlZEhhbmRsZXI+OjpU
eXBlPihbJmNvZGVSZXN1bHQsICZjb2RlLCAmd2FpdEV2ZW50XQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlUmVz
dWx0ID0gY29kZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2V0RXZlbnQod2FpdEV2ZW50LkdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBTX09LOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICByZXN1bHQgPSBkaXNwYXRjaGVyLT5SdW5Bc3lu
YyhDb3JlRGlzcGF0Y2hlclByaW9yaXR5X05vcm1hbCwgaGFuZGxlci5HZXQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmNBY3Rpb24uR2V0QWRkcmVzc09mKCkp
OworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHdhaXRSZXN1bHQgPSBXYWl0
Rm9yU2luZ2xlT2JqZWN0RXgod2FpdEV2ZW50LkdldCgpLCAxMCAqIDEwMDAsIHRydWUpOworICAg
ICAgICBpZiAod2FpdFJlc3VsdCAhPSBXQUlUX09CSkVDVF8wKQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBXYWl0IDEwIHNlY29uZHMgYmVmb3JlIGdpdmluZyB1cC4gQXQgdGhpcyBwb2ludCwg
dGhlIGFwcGxpY2F0aW9uIGlzIGluIGFuCisgICAgICAgICAgICAvLyB1bnJlY292ZXJhYmxlIHN0
YXRlIChwcm9iYWJseSBkZWFkbG9ja2VkKS4gV2UgdGhlcmVmb3JlIHRlcm1pbmF0ZSB0aGUgYXBw
bGljYXRpb24KKyAgICAgICAgICAgIC8vIGVudGlyZWx5LiBUaGlzIGFsc28gcHJldmVudHMgc3Rh
Y2sgY29ycnVwdGlvbiBpZiB0aGUgYXN5bmMgb3BlcmF0aW9uIGlzIGV2ZW50dWFsbHkKKyAgICAg
ICAgICAgIC8vIHJ1bi4KKyAgICAgICAgICAgIEVSUigiVGltZW91dCB3YWl0aW5nIGZvciBhc3lu
YyBhY3Rpb24gb24gVUkgdGhyZWFkLiBUaGUgVUkgdGhyZWFkIG1pZ2h0IGJlIGJsb2NrZWQuIik7
CisgICAgICAgICAgICBzdGQ6OnRlcm1pbmF0ZSgpOworICAgICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb2RlUmVzdWx0OworICAgIH0KK30KKwog
Ym9vbCBTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdzo6aW5pdGlhbGl6ZShFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbmRvdywgSVByb3BlcnR5U2V0ICpwcm9wZXJ0eVNldCkKIHsKICAgICBDb21QdHI8
SVByb3BlcnR5U2V0PiBwcm9wcyA9IHByb3BlcnR5U2V0OwogICAgIENvbVB0cjxJSW5zcGVjdGFi
bGU+IHdpbiA9IHdpbmRvdzsKICAgICBTSVpFIHN3YXBDaGFpblNpemUgPSB7fTsKLSAgICBib29s
IHN3YXBDaGFpblNpemVTcGVjaWZpZWQgPSBmYWxzZTsKICAgICBIUkVTVUxUIHJlc3VsdCA9IFNf
T0s7CiAKICAgICAvLyBJUHJvcGVydHlTZXQgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIGFuZCBj
YW4gYmUgbnVsbC4KQEAgLTM0LDEzICsxMDAsNDEgQEAKICAgICBpZiAocHJvcGVydHlTZXQpCiAg
ICAgewogICAgICAgICByZXN1bHQgPSBwcm9wcy5BcygmbVByb3BlcnR5TWFwKTsKLSAgICAgICAg
aWYgKFNVQ0NFRURFRChyZXN1bHQpKQorICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5IGlz
IG9wdGlvbmFsIGFuZCBtYXkgYmUgbWlzc2luZy4gIFRoZSBJUHJvcGVydHlTZXQKLSAgICAgICAg
ICAgIC8vIHdhcyBwcmV2YWxpZGF0ZWQgdG8gY29udGFpbiB0aGUgRUdMTmF0aXZlV2luZG93VHlw
ZSBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvCi0gICAgICAgICAgICAvLyB0aGlzIGhvc3QuCi0gICAg
ICAgICAgICByZXN1bHQgPSBHZXRPcHRpb25hbFNpemVQcm9wZXJ0eVZhbHVlKG1Qcm9wZXJ0eU1h
cCwgRUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSwgJnN3YXBDaGFpblNpemUsICZzd2FwQ2hh
aW5TaXplU3BlY2lmaWVkKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQor
CisgICAgICAgIC8vIFRoZSBFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5IGlzIG9wdGlvbmFs
IGFuZCBtYXkgYmUgbWlzc2luZy4gVGhlIElQcm9wZXJ0eVNldAorICAgICAgICAvLyB3YXMgcHJl
dmFsaWRhdGVkIHRvIGNvbnRhaW4gdGhlIEVHTE5hdGl2ZVdpbmRvd1R5cGUgYmVmb3JlIGJlaW5n
IHBhc3NlZCB0bworICAgICAgICAvLyB0aGlzIGhvc3QuCisgICAgICAgIHJlc3VsdCA9IEdldE9w
dGlvbmFsU2l6ZVByb3BlcnR5VmFsdWUobVByb3BlcnR5TWFwLCBFR0xSZW5kZXJTdXJmYWNlU2l6
ZVByb3BlcnR5LCAmc3dhcENoYWluU2l6ZSwgJm1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKTsKKyAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgRUdMUmVuZGVyUmVzb2x1dGlvblNj
YWxlUHJvcGVydHkgaXMgb3B0aW9uYWwgYW5kIG1heSBiZSBtaXNzaW5nLiBUaGUgSVByb3BlcnR5
U2V0CisgICAgICAgIC8vIHdhcyBwcmV2YWxpZGF0ZWQgdG8gY29udGFpbiB0aGUgRUdMTmF0aXZl
V2luZG93VHlwZSBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvCisgICAgICAgIC8vIHRoaXMgaG9zdC4K
KyAgICAgICAgcmVzdWx0ID0gR2V0T3B0aW9uYWxTaW5nbGVQcm9wZXJ0eVZhbHVlKG1Qcm9wZXJ0
eU1hcCwgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHksICZtU3dhcENoYWluU2NhbGUs
ICZtU3dhcENoYWluU2NhbGVTcGVjaWZpZWQpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghbVN3YXBDaGFpblNjYWxlU3BlY2lmaWVkKQorICAgICAgICB7CisgICAgICAgICAg
ICAvLyBEZWZhdWx0IHZhbHVlIGZvciB0aGUgc2NhbGUgaXMgMS4wZgorICAgICAgICAgICAgbVN3
YXBDaGFpblNjYWxlID0gMS4wZjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEEgRUdMUmVuZGVy
U3VyZmFjZVNpemVQcm9wZXJ0eSBhbmQgYSBFR0xSZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9wZXJ0
eSBjYW4ndCBib3RoIGJlIHNwZWNpZmllZAorICAgICAgICBpZiAobVN3YXBDaGFpblNjYWxlU3Bl
Y2lmaWVkICYmIG1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQorICAgICAgICB7CisgICAgICAgICAg
ICBFUlIoIkl0IGlzIGludmFsaWQgdG8gc3BlY2lmeSBib3RoIGFuIEVHTFJlbmRlclN1cmZhY2VT
aXplUHJvcGVydHkgYW5kIGEgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHkuIik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoU1VD
Q0VFREVEKHJlc3VsdCkpCkBAIC00OCw4ICsxNDIsMjAgQEAKICAgICAgICAgcmVzdWx0ID0gd2lu
LkFzKCZtU3dhcENoYWluUGFuZWwpOwogICAgIH0KIAorICAgIENvbVB0cjxJRGVwZW5kZW5jeU9i
amVjdD4gc3dhcENoYWluUGFuZWxEZXBlbmRlbmN5T2JqZWN0OwogICAgIGlmIChTVUNDRUVERUQo
cmVzdWx0KSkKICAgICB7CisgICAgICAgIHJlc3VsdCA9IG1Td2FwQ2hhaW5QYW5lbC5Bcygmc3dh
cENoYWluUGFuZWxEZXBlbmRlbmN5T2JqZWN0KTsKKyAgICB9CisKKyAgICBpZiAoU1VDQ0VFREVE
KHJlc3VsdCkpCisgICAgeworICAgICAgICByZXN1bHQgPSBzd2FwQ2hhaW5QYW5lbERlcGVuZGVu
Y3lPYmplY3QtPmdldF9EaXNwYXRjaGVyKAorICAgICAgICAgICAgbVN3YXBDaGFpblBhbmVsRGlz
cGF0Y2hlci5HZXRBZGRyZXNzT2YoKSk7CisgICAgfQorCisgICAgaWYgKFNVQ0NFRURFRChyZXN1
bHQpKQorICAgIHsKICAgICAgICAgLy8gSWYgYSBzd2FwY2hhaW4gc2l6ZSBpcyBzcGVjZmllZCwg
dGhlbiB0aGUgYXV0b21hdGljIHJlc2l6ZQogICAgICAgICAvLyBiZWhhdmlvcnMgaW1wbGVtZW50
ZWQgYnkgdGhlIGhvc3Qgc2hvdWxkIGJlIGRpc2FibGVkLiAgVGhlIHN3YXBjaGFpbgogICAgICAg
ICAvLyB3aWxsIGJlIHN0aWxsIGJlIHNjYWxlZCB3aGVuIGJlaW5nIHJlbmRlcmVkIHRvIGZpdCB0
aGUgYm91bmRzCkBAIC01NywxNiArMTYzLDIxIEBACiAgICAgICAgIC8vIFNjYWxpbmcgb2YgdGhl
IHN3YXBjaGFpbiBvdXRwdXQgbmVlZHMgdG8gYmUgaGFuZGxlZCBieSB0aGUKICAgICAgICAgLy8g
aG9zdCBmb3Igc3dhcGNoYWluIHBhbmVscyBldmVuIHRob3VnaCB0aGUgc2NhbGluZyBtb2RlIHNl
dHRpbmcKICAgICAgICAgLy8gRFhHSV9TQ0FMSU5HX1NUUkVUQ0ggaXMgY29uZmlndXJlZCBvbiB0
aGUgc3dhcGNoYWluLgotICAgICAgICBpZiAoc3dhcENoYWluU2l6ZVNwZWNpZmllZCkKKyAgICAg
ICAgaWYgKG1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQogICAgICAgICB7CiAgICAgICAgICAgICBt
Q2xpZW50UmVjdCA9IHsgMCwgMCwgc3dhcENoYWluU2l6ZS5jeCwgc3dhcENoYWluU2l6ZS5jeSB9
OwotCi0gICAgICAgICAgICAvLyBFbmFibGUgaG9zdCBzd2FwY2hhaW4gc2NhbGluZwotICAgICAg
ICAgICAgbVJlcXVpcmVzU3dhcENoYWluU2NhbGluZyA9IHRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQgPSBHZXRTd2FwQ2hhaW5QYW5l
bFNpemUobVN3YXBDaGFpblBhbmVsLCAmbUNsaWVudFJlY3QpOworICAgICAgICAgICAgU0laRSBz
d2FwQ2hhaW5QYW5lbFNpemU7CisgICAgICAgICAgICByZXN1bHQgPSBHZXRTd2FwQ2hhaW5QYW5l
bFNpemUobVN3YXBDaGFpblBhbmVsLCBtU3dhcENoYWluUGFuZWxEaXNwYXRjaGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzd2FwQ2hhaW5QYW5lbFNpemUp
OworCisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjbGllbnQgcmVjdCB0byBhY2NvdW50IGZvciBh
bnkgc3dhcGNoYWluIHNjYWxlIGZhY3RvcgorICAgICAgICAgICAgICAgIG1DbGllbnRSZWN0ID0g
eyAwLCAwLCBzdGF0aWNfY2FzdDxsb25nPihzd2FwQ2hhaW5QYW5lbFNpemUuY3ggKiBtU3dhcENo
YWluU2NhbGUpLCBzdGF0aWNfY2FzdDxsb25nPihzd2FwQ2hhaW5QYW5lbFNpemUuY3kgKiBtU3dh
cENoYWluU2NhbGUpIH07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgy
LDggKzE5Myw4IEBACiAKIGJvb2wgU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3c6OnJlZ2lzdGVy
Rm9yU2l6ZUNoYW5nZUV2ZW50cygpCiB7Ci0gICAgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6Olhh
bWw6OklTaXplQ2hhbmdlZEV2ZW50SGFuZGxlcj4gc2l6ZUNoYW5nZWRIYW5kbGVyOwotICAgIENv
bVB0cjxBQkk6OldpbmRvd3M6OlVJOjpYYW1sOjpJRnJhbWV3b3JrRWxlbWVudD4gZnJhbWV3b3Jr
RWxlbWVudDsKKyAgICBDb21QdHI8SVNpemVDaGFuZ2VkRXZlbnRIYW5kbGVyPiBzaXplQ2hhbmdl
ZEhhbmRsZXI7CisgICAgQ29tUHRyPElGcmFtZXdvcmtFbGVtZW50PiBmcmFtZXdvcmtFbGVtZW50
OwogICAgIEhSRVNVTFQgcmVzdWx0ID0gTWljcm9zb2Z0OjpXUkw6Ok1ha2VBbmRJbml0aWFsaXpl
PFN3YXBDaGFpblBhbmVsU2l6ZUNoYW5nZWRIYW5kbGVyPihzaXplQ2hhbmdlZEhhbmRsZXIuUmVs
ZWFzZUFuZEdldEFkZHJlc3NPZigpLCB0aGlzLT5zaGFyZWRfZnJvbV90aGlzKCkpOwogCiAgICAg
aWYgKFNVQ0NFRURFRChyZXN1bHQpKQpAQCAtOTMsNyArMjA0LDEzIEBACiAKICAgICBpZiAoU1VD
Q0VFREVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICByZXN1bHQgPSBmcmFtZXdvcmtFbGVtZW50
LT5hZGRfU2l6ZUNoYW5nZWQoc2l6ZUNoYW5nZWRIYW5kbGVyLkdldCgpLCAmbVNpemVDaGFuZ2Vk
RXZlbnRUb2tlbik7CisgICAgICAgIHJlc3VsdCA9IFJ1bk9uVUlUaHJlYWQoCisgICAgICAgICAg
ICBbdGhpcywgZnJhbWV3b3JrRWxlbWVudCwgc2l6ZUNoYW5nZWRIYW5kbGVyXQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZXdvcmtFbGVtZW50LT5hZGRfU2l6ZUNo
YW5nZWQoc2l6ZUNoYW5nZWRIYW5kbGVyLkdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1TaXplQ2hhbmdlZEV2ZW50VG9rZW4p
OworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG1Td2FwQ2hhaW5QYW5lbERpc3BhdGNoZXIp
OwogICAgIH0KIAogICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKQEAgLTEwNiwxNiArMjIzLDI3
IEBACiAKIHZvaWQgU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3c6OnVucmVnaXN0ZXJGb3JTaXpl
Q2hhbmdlRXZlbnRzKCkKIHsKLSAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6SUZy
YW1ld29ya0VsZW1lbnQ+IGZyYW1ld29ya0VsZW1lbnQ7Ci0gICAgaWYgKFNVQ0NFRURFRChtU3dh
cENoYWluUGFuZWwuQXMoJmZyYW1ld29ya0VsZW1lbnQpKSkKKyAgICBDb21QdHI8SUZyYW1ld29y
a0VsZW1lbnQ+IGZyYW1ld29ya0VsZW1lbnQ7CisgICAgaWYgKG1Td2FwQ2hhaW5QYW5lbCAmJiBT
VUNDRUVERUQobVN3YXBDaGFpblBhbmVsLkFzKCZmcmFtZXdvcmtFbGVtZW50KSkpCiAgICAgewot
ICAgICAgICAodm9pZClmcmFtZXdvcmtFbGVtZW50LT5yZW1vdmVfU2l6ZUNoYW5nZWQobVNpemVD
aGFuZ2VkRXZlbnRUb2tlbik7CisgICAgICAgIFJ1bk9uVUlUaHJlYWQoCisgICAgICAgICAgICBb
dGhpcywgZnJhbWV3b3JrRWxlbWVudF0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZnJhbWV3b3JrRWxlbWVudC0+cmVtb3ZlX1NpemVDaGFuZ2VkKG1TaXplQ2hhbmdlZEV2
ZW50VG9rZW4pOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG1Td2FwQ2hhaW5QYW5lbERp
c3BhdGNoZXIpOwogICAgIH0KIAogICAgIG1TaXplQ2hhbmdlZEV2ZW50VG9rZW4udmFsdWUgPSAw
OwogfQogCi1IUkVTVUxUIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93OjpjcmVhdGVTd2FwQ2hh
aW4oSUQzRDExRGV2aWNlICpkZXZpY2UsIERYR0lGYWN0b3J5ICpmYWN0b3J5LCBEWEdJX0ZPUk1B
VCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwgRFhHSVN3
YXBDaGFpbiAqKnN3YXBDaGFpbikKK0hSRVNVTFQgU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3c6
OmNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJRmFjdG9yeSAqZmFjdG9yeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb250YWlu
c0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pCiB7CiAgICAgaWYgKGRldmljZSA9PSBOVUxM
IHx8IGZhY3RvcnkgPT0gTlVMTCB8fCBzd2FwQ2hhaW4gPT0gTlVMTCB8fCB3aWR0aCA9PSAwIHx8
IGhlaWdodCA9PSAwKQogICAgIHsKQEAgLTEyOSwxNyArMjU3LDE5IEBACiAgICAgc3dhcENoYWlu
RGVzYy5TdGVyZW8gPSBGQUxTRTsKICAgICBzd2FwQ2hhaW5EZXNjLlNhbXBsZURlc2MuQ291bnQg
PSAxOwogICAgIHN3YXBDaGFpbkRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKLSAgICBzd2Fw
Q2hhaW5EZXNjLkJ1ZmZlclVzYWdlID0gRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVCB8
IERYR0lfVVNBR0VfQkFDS19CVUZGRVI7CisgICAgc3dhcENoYWluRGVzYy5CdWZmZXJVc2FnZSA9
CisgICAgICAgIERYR0lfVVNBR0VfU0hBREVSX0lOUFVUIHwgRFhHSV9VU0FHRV9SRU5ERVJfVEFS
R0VUX09VVFBVVCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVI7CiAgICAgc3dhcENoYWluRGVzYy5C
dWZmZXJDb3VudCA9IDI7CiAgICAgc3dhcENoYWluRGVzYy5Td2FwRWZmZWN0ID0gRFhHSV9TV0FQ
X0VGRkVDVF9GTElQX1NFUVVFTlRJQUw7CiAgICAgc3dhcENoYWluRGVzYy5TY2FsaW5nID0gRFhH
SV9TQ0FMSU5HX1NUUkVUQ0g7Ci0gICAgc3dhcENoYWluRGVzYy5BbHBoYU1vZGUgPSBEWEdJX0FM
UEhBX01PREVfSUdOT1JFOworICAgIHN3YXBDaGFpbkRlc2MuQWxwaGFNb2RlID0KKyAgICAgICAg
Y29udGFpbnNBbHBoYSA/IERYR0lfQUxQSEFfTU9ERV9QUkVNVUxUSVBMSUVEIDogRFhHSV9BTFBI
QV9NT0RFX0lHTk9SRTsKIAogICAgICpzd2FwQ2hhaW4gPSBudWxscHRyOwogCiAgICAgQ29tUHRy
PElEWEdJU3dhcENoYWluMT4gbmV3U3dhcENoYWluOwogICAgIENvbVB0cjxJU3dhcENoYWluUGFu
ZWxOYXRpdmU+IHN3YXBDaGFpblBhbmVsTmF0aXZlOwotICAgIFJFQ1QgY3VycmVudFBhbmVsU2l6
ZSA9IHt9OworICAgIFNJWkUgY3VycmVudFBhbmVsU2l6ZSA9IHt9OwogCiAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBmYWN0b3J5LT5DcmVhdGVTd2FwQ2hhaW5Gb3JDb21wb3NpdGlvbihkZXZpY2UsICZz
d2FwQ2hhaW5EZXNjLCBudWxscHRyLCBuZXdTd2FwQ2hhaW4uUmVsZWFzZUFuZEdldEFkZHJlc3NP
ZigpKTsKIApAQCAtMTUwLDcgKzI4MCwxMiBAQAogCiAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQp
KQogICAgIHsKLSAgICAgICAgcmVzdWx0ID0gc3dhcENoYWluUGFuZWxOYXRpdmUtPlNldFN3YXBD
aGFpbihuZXdTd2FwQ2hhaW4uR2V0KCkpOworICAgICAgICByZXN1bHQgPSBSdW5PblVJVGhyZWFk
KAorICAgICAgICAgICAgW3N3YXBDaGFpblBhbmVsTmF0aXZlLCBuZXdTd2FwQ2hhaW5dCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN3YXBDaGFpblBhbmVsTmF0aXZlLT5T
ZXRTd2FwQ2hhaW4obmV3U3dhcENoYWluLkdldCgpKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICBtU3dhcENoYWluUGFuZWxEaXNwYXRjaGVyKTsKICAgICB9CiAKICAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkpCkBAIC0xNjUsMzQgKzMwMCwyOCBAQAogICAgIC8vIElmIHRoZSBob3N0IGlz
IHJlc3BvbnNpYmxlIGZvciBzY2FsaW5nIHRoZSBvdXRwdXQgb2YgdGhlIHN3YXBjaGFpbiwgdGhl
bgogICAgIC8vIHNjYWxlIGl0IG5vdyBiZWZvcmUgcmV0dXJuaW5nIGFuIGluc3RhbmNlIHRvIHRo
ZSBjYWxsZXIuICBUaGlzIGlzIGRvbmUgYnkKICAgICAvLyBmaXJzdCByZWFkaW5nIHRoZSBjdXJy
ZW50IHNpemUgb2YgdGhlIHN3YXBjaGFpbiBwYW5lbCwgdGhlbiBzY2FsaW5nCi0gICAgaWYgKFNV
Q0NFRURFRChyZXN1bHQpICYmIG1SZXF1aXJlc1N3YXBDaGFpblNjYWxpbmcpCi0gICAgewotICAg
ICAgICByZXN1bHQgPSBHZXRTd2FwQ2hhaW5QYW5lbFNpemUobVN3YXBDaGFpblBhbmVsLCAmY3Vy
cmVudFBhbmVsU2l6ZSk7Ci0gICAgfQotCi0gICAgLy8gU2NhbGUgdGhlIHN3YXBjaGFpbiB0byBm
aXQgaW5zaWRlIHRoZSBjb250ZW50cyBvZiB0aGUgcGFuZWwuCi0gICAgaWYgKFNVQ0NFRURFRChy
ZXN1bHQpICYmIG1SZXF1aXJlc1N3YXBDaGFpblNjYWxpbmcpCi0gICAgewotICAgICAgICBTSVpF
IGN1cnJlbnRTaXplID0geyBjdXJyZW50UGFuZWxTaXplLnJpZ2h0LCBjdXJyZW50UGFuZWxTaXpl
LmJvdHRvbSB9OwotICAgICAgICByZXN1bHQgPSBzY2FsZVN3YXBDaGFpbihjdXJyZW50U2l6ZSk7
Ci0gICAgfQotCiAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgLy8g
SWYgYXV0b21hdGljIHN3YXBjaGFpbiByZXNpemUgYmVoYXZpb3JzIGhhdmUgYmVlbiBkaXNhYmxl
ZCwgdGhlbgotICAgICAgICAvLyB1bnJlZ2lzdGVyIGZvciB0aGUgcmVzaXplIGNoYW5nZSBldmVu
dHMuCi0gICAgICAgIGlmIChtU3VwcG9ydHNTd2FwQ2hhaW5SZXNpemUgPT0gZmFsc2UpCisgICAg
ICAgIGlmIChtU3dhcENoYWluU2l6ZVNwZWNpZmllZCB8fCBtU3dhcENoYWluU2NhbGVTcGVjaWZp
ZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVucmVnaXN0ZXJGb3JTaXplQ2hhbmdlRXZlbnRz
KCk7CisgICAgICAgICAgICByZXN1bHQgPSBHZXRTd2FwQ2hhaW5QYW5lbFNpemUobVN3YXBDaGFp
blBhbmVsLCBtU3dhcENoYWluUGFuZWxEaXNwYXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjdXJyZW50UGFuZWxTaXplKTsKKworICAgICAgICAgICAg
Ly8gU2NhbGUgdGhlIHN3YXBjaGFpbiB0byBmaXQgaW5zaWRlIHRoZSBjb250ZW50cyBvZiB0aGUg
cGFuZWwuCisgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2NhbGVTd2FwQ2hhaW4oY3VycmVudFBhbmVsU2l6
ZSwgbUNsaWVudFJlY3QpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSFJFU1VMVCBTd2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdzo6
c2NhbGVTd2FwQ2hhaW4oY29uc3QgU0laRSAmbmV3U2l6ZSkKK0hSRVNVTFQgU3dhcENoYWluUGFu
ZWxOYXRpdmVXaW5kb3c6OnNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndpbmRvd1NpemUsIGNv
bnN0IFJFQ1QgJmNsaWVudFJlY3QpCiB7Ci0gICAgQUJJOjpXaW5kb3dzOjpGb3VuZGF0aW9uOjpT
aXplIHJlbmRlclNjYWxlID0geyAoZmxvYXQpbmV3U2l6ZS5jeC8oZmxvYXQpbUNsaWVudFJlY3Qu
cmlnaHQsIChmbG9hdCluZXdTaXplLmN5LyhmbG9hdCltQ2xpZW50UmVjdC5ib3R0b20gfTsKKyAg
ICBTaXplIHJlbmRlclNjYWxlID0geyhmbG9hdCl3aW5kb3dTaXplLmN4IC8gKGZsb2F0KWNsaWVu
dFJlY3QucmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpd2luZG93U2l6ZS5j
eSAvIChmbG9hdCljbGllbnRSZWN0LmJvdHRvbX07CiAgICAgLy8gU2V0dXAgYSBzY2FsZSBtYXRy
aXggZm9yIHRoZSBzd2FwIGNoYWluCiAgICAgRFhHSV9NQVRSSVhfM1gyX0Ygc2NhbGVNYXRyaXgg
PSB7fTsKICAgICBzY2FsZU1hdHJpeC5fMTEgPSByZW5kZXJTY2FsZS5XaWR0aDsKQEAgLTIwOCwy
MSArMzM3LDI5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSFJFU1VMVCBHZXRTd2FwQ2hh
aW5QYW5lbFNpemUoY29uc3QgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OlhhbWw6OkNvbnRyb2xz
OjpJU3dhcENoYWluUGFuZWw+ICZzd2FwQ2hhaW5QYW5lbCwgUkVDVCAqd2luZG93U2l6ZSkKK0hS
RVNVTFQgR2V0U3dhcENoYWluUGFuZWxTaXplKAorICAgIGNvbnN0IENvbVB0cjxBQkk6OldpbmRv
d3M6OlVJOjpYYW1sOjpDb250cm9sczo6SVN3YXBDaGFpblBhbmVsPiAmc3dhcENoYWluUGFuZWws
CisgICAgY29uc3QgQ29tUHRyPElDb3JlRGlzcGF0Y2hlcj4gJmRpc3BhdGNoZXIsCisgICAgU0la
RSAqd2luZG93U2l6ZSkKIHsKLSAgICBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6WGFtbDo6SVVJ
RWxlbWVudD4gdWlFbGVtZW50OwotICAgIEFCSTo6V2luZG93czo6Rm91bmRhdGlvbjo6U2l6ZSBy
ZW5kZXJTaXplID0geyAwLCAwIH07CisgICAgQ29tUHRyPElVSUVsZW1lbnQ+IHVpRWxlbWVudDsK
KyAgICBTaXplIHJlbmRlclNpemUgPSB7MCwgMH07CiAgICAgSFJFU1VMVCByZXN1bHQgPSBzd2Fw
Q2hhaW5QYW5lbC5BcygmdWlFbGVtZW50KTsKICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAg
ICAgewotICAgICAgICByZXN1bHQgPSB1aUVsZW1lbnQtPmdldF9SZW5kZXJTaXplKCZyZW5kZXJT
aXplKTsKKyAgICAgICAgcmVzdWx0ID0gUnVuT25VSVRocmVhZCgKKyAgICAgICAgICAgIFt1aUVs
ZW1lbnQsICZyZW5kZXJTaXplXQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biB1aUVsZW1lbnQtPmdldF9SZW5kZXJTaXplKCZyZW5kZXJTaXplKTsKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBkaXNwYXRjaGVyKTsKICAgICB9CiAKICAgICBpZiAoU1VDQ0VFREVEKHJl
c3VsdCkpCiAgICAgewotICAgICAgICAqd2luZG93U2l6ZSA9IHsgMCwgMCwgbHJvdW5kKHJlbmRl
clNpemUuV2lkdGgpLCBscm91bmQocmVuZGVyU2l6ZS5IZWlnaHQpIH07CisgICAgICAgICp3aW5k
b3dTaXplID0geyBscm91bmQocmVuZGVyU2l6ZS5XaWR0aCksIGxyb3VuZChyZW5kZXJTaXplLkhl
aWdodCkgfTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQotfQorfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93LmgJKHJldmlz
aW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsMTQgKzE4LDI0IEBACiAgIHB1YmxpYzoKICAgICB+U3dhcENoYWluUGFu
ZWxOYXRpdmVXaW5kb3coKTsKIAotICAgIGJvb2wgaW5pdGlhbGl6ZShFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywgSVByb3BlcnR5U2V0ICpwcm9wZXJ0eVNldCk7CisgICAgYm9vbCBpbml0aWFs
aXplKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBJUHJvcGVydHlTZXQgKnByb3BlcnR5U2V0
KSBvdmVycmlkZTsKKyAgICBIUkVTVUxUIGNyZWF0ZVN3YXBDaGFpbihJRDNEMTFEZXZpY2UgKmRl
dmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJRmFjdG9yeSAqZmFjdG9yeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjb250YWluc0FscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lTd2FwQ2hhaW4gKipzd2FwQ2hhaW4pIG92ZXJyaWRlOworCisgIHByb3RlY3RlZDoKKyAgICBI
UkVTVUxUIHNjYWxlU3dhcENoYWluKGNvbnN0IFNJWkUgJndpbmRvd1NpemUsIGNvbnN0IFJFQ1Qg
JmNsaWVudFJlY3QpIG92ZXJyaWRlOworCiAgICAgYm9vbCByZWdpc3RlckZvclNpemVDaGFuZ2VF
dmVudHMoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JTaXplQ2hhbmdlRXZlbnRzKCk7Ci0gICAg
SFJFU1VMVCBjcmVhdGVTd2FwQ2hhaW4oSUQzRDExRGV2aWNlICpkZXZpY2UsIERYR0lGYWN0b3J5
ICpmYWN0b3J5LCBEWEdJX0ZPUk1BVCBmb3JtYXQsIHVuc2lnbmVkIGludCB3aWR0aCwgdW5zaWdu
ZWQgaW50IGhlaWdodCwgRFhHSVN3YXBDaGFpbiAqKnN3YXBDaGFpbik7Ci0gICAgSFJFU1VMVCBz
Y2FsZVN3YXBDaGFpbihjb25zdCBTSVpFICZuZXdTaXplKTsKIAogICBwcml2YXRlOgogICAgIENv
bVB0cjxBQkk6OldpbmRvd3M6OlVJOjpYYW1sOjpDb250cm9sczo6SVN3YXBDaGFpblBhbmVsPiBt
U3dhcENoYWluUGFuZWw7CisgICAgQ29tUHRyPEFCSTo6V2luZG93czo6VUk6OkNvcmU6OklDb3Jl
RGlzcGF0Y2hlcj4gbVN3YXBDaGFpblBhbmVsRGlzcGF0Y2hlcjsKICAgICBDb21QdHI8SU1hcDxI
U1RSSU5HLCBJSW5zcGVjdGFibGUqPj4gbVByb3BlcnR5TWFwOwogICAgIENvbVB0cjxEWEdJU3dh
cENoYWluPiBtU3dhcENoYWluOwogfTsKQEAgLTc0LDYgKzg0LDkgQEAKICAgICBzdGQ6OndlYWtf
cHRyPEluc3BlY3RhYmxlTmF0aXZlV2luZG93PiBtSG9zdDsKIH07CiAKLUhSRVNVTFQgR2V0U3dh
cENoYWluUGFuZWxTaXplKGNvbnN0IENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpYYW1sOjpDb250
cm9sczo6SVN3YXBDaGFpblBhbmVsPiAmc3dhcENoYWluUGFuZWwsIFJFQ1QgKndpbmRvd1NpemUp
OworSFJFU1VMVCBHZXRTd2FwQ2hhaW5QYW5lbFNpemUoCisgICAgY29uc3QgQ29tUHRyPEFCSTo6
V2luZG93czo6VUk6OlhhbWw6OkNvbnRyb2xzOjpJU3dhcENoYWluUGFuZWw+ICZzd2FwQ2hhaW5Q
YW5lbCwKKyAgICBjb25zdCBDb21QdHI8QUJJOjpXaW5kb3dzOjpVSTo6Q29yZTo6SUNvcmVEaXNw
YXRjaGVyPiAmZGlzcGF0Y2hlciwKKyAgICBTSVpFICp3aW5kb3dTaXplKTsKIH0KICNlbmRpZiAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfV0lOUlRfU1dBUENIQUlOUEFORUxOQVRJVkVX
SU5ET1dfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3dfdW5pdHRlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3dfdW5pdHRl
c3QuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2lu
ZG93X3VuaXR0ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDM4ICsyNjksMTkyIEBACiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorSFJFU1VMVCBDcmVhdGVQcm9wZXJ0eVZhbHVlU3RhdGlj
cyhJUHJvcGVydHlWYWx1ZVN0YXRpY3MqKiBwcm9wZXJ0eVN0YXRpY3MpCit7CisgICAgQ29tUHRy
PElQcm9wZXJ0eVZhbHVlU3RhdGljcz4gcHJvcGVydHlWYWx1ZVN0YXRpY3M7CisgICAgSFJFU1VM
VCByZXN1bHQgPSBHZXRBY3RpdmF0aW9uRmFjdG9yeShIU3RyaW5nUmVmZXJlbmNlKFJ1bnRpbWVD
bGFzc19XaW5kb3dzX0ZvdW5kYXRpb25fUHJvcGVydHlWYWx1ZSkuR2V0KCksICZwcm9wZXJ0eVZh
bHVlU3RhdGljcyk7CisgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKHJlc3VsdCk7CisKKyAg
ICByZXN1bHQgPSBwcm9wZXJ0eVZhbHVlU3RhdGljcy5Db3B5VG8ocHJvcGVydHlTdGF0aWNzKTsK
KyAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQocmVzdWx0KTsKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKIEhSRVNVTFQgU2V0SW5zcGVjdGFibGVQcm9wZXJ0eVZhbHVlKGNvbnN0IENvbVB0
cjxJTWFwPEhTVFJJTkcsIElJbnNwZWN0YWJsZSo+PiYgcHJvcGVydHlNYXAsIGNvbnN0IHdjaGFy
X3QqIHByb3BlcnR5TmFtZSwgSUluc3BlY3RhYmxlKiBpbnNwZWN0YWJsZSkKIHsKICAgICBib29s
ZWFuIHByb3BlcnR5UmVwbGFjZWQgPSBmYWxzZTsKICAgICByZXR1cm4gcHJvcGVydHlNYXAtPklu
c2VydChIU3RyaW5nUmVmZXJlbmNlKHByb3BlcnR5TmFtZSkuR2V0KCksIGluc3BlY3RhYmxlLCAm
cHJvcGVydHlSZXBsYWNlZCk7CiB9CiAKLVRFU1QoTmF0aXZlV2luZG93VGVzdCwgTmF0aXZlV2lu
ZG93VmFsaWRTd2FwQ2hhaW5QYW5lbCkKK3ZvaWQgZXhwZWN0TmF0aXZlV2luZG93SW5pdENhbGxz
KE1vY2tTd2FwQ2hhaW5QYW5lbCAmcGFuZWwsIGJvb2wgZXhwZWN0UmVuZGVyU2l6ZSkKIHsKKyAg
ICBpZiAoZXhwZWN0UmVuZGVyU2l6ZSkKKyAgICB7CisgICAgICAgIEVYUEVDVF9DQUxMKHBhbmVs
LCBnZXRfUmVuZGVyU2l6ZSh0ZXN0aW5nOjpfKSkuVGltZXMoMSk7CisgICAgfQorCisgICAgRVhQ
RUNUX0NBTEwocGFuZWwsIGFkZF9TaXplQ2hhbmdlZCh0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSku
VGltZXMoMSk7CisgICAgRVhQRUNUX0NBTEwocGFuZWwsIHJlbW92ZV9TaXplQ2hhbmdlZCh0ZXN0
aW5nOjpfKSkuVGltZXMoMSk7Cit9CisKK1RFU1QoTmF0aXZlV2luZG93VGVzdCwgU3dhcENoYWlu
UGFuZWxCeUl0c2VsZikKK3sKICAgICBNb2NrU3dhcENoYWluUGFuZWwgbW9ja1N3YXBDaGFpblBh
bmVsOwogICAgIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxJSW5z
cGVjdGFibGUqPigmbW9ja1N3YXBDaGFpblBhbmVsKSk7Ci0gICAgRVhQRUNUX0NBTEwobW9ja1N3
YXBDaGFpblBhbmVsLCBnZXRfUmVuZGVyU2l6ZSh0ZXN0aW5nOjpfKSkuVGltZXMoMSk7Ci0gICAg
RVhQRUNUX0NBTEwobW9ja1N3YXBDaGFpblBhbmVsLCBhZGRfU2l6ZUNoYW5nZWQodGVzdGluZzo6
XywgdGVzdGluZzo6XykpLlRpbWVzKDEpOwotICAgIEVYUEVDVF9DQUxMKG1vY2tTd2FwQ2hhaW5Q
YW5lbCwgcmVtb3ZlX1NpemVDaGFuZ2VkKHRlc3Rpbmc6Ol8pKS5UaW1lcygxKTsKKyAgICBleHBl
Y3ROYXRpdmVXaW5kb3dJbml0Q2FsbHMobW9ja1N3YXBDaGFpblBhbmVsLCB0cnVlKTsKICAgICBF
WFBFQ1RfVFJVRShuYXRpdmVXaW5kb3cuaW5pdGlhbGl6ZSgpKTsKIH0KIAotVEVTVChOYXRpdmVX
aW5kb3dUZXN0LCBOYXRpdmVXaW5kb3dWYWxpZFN3YXBDaGFpblBhbmVsSW5Qcm9wZXJ0eVNldCkK
K1RFU1QoTmF0aXZlV2luZG93VGVzdCwgU3dhcENoYWluUGFuZWxJblByb3BlcnR5U2V0KQogewog
ICAgIC8vIENPTSBpcyByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3IgY3JlYXRpb24gb2Yg
dGhlIHByb3BlcnR5IHNldAogICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChDb0luaXRpYWxp
emVFeChOVUxMLCBDT0lOSVRfTVVMVElUSFJFQURFRCkpOwogICAgIHsKICAgICAgICAgTW9ja1N3
YXBDaGFpblBhbmVsIG1vY2tTd2FwQ2hhaW5QYW5lbDsKICAgICAgICAgQ29tUHRyPElNYXA8SFNU
UklORywgSUluc3BlY3RhYmxlKj4+IHByb3BlcnR5U2V0OworCisgICAgICAgIC8vIENyZWF0ZSBh
IHNpbXBsZSBwcm9wZXJ0eSBzZXQgd2l0aCB0aGUgc3dhcGNoYWlucGFuZWwKICAgICAgICAgRVhQ
RUNUX0hSRVNVTFRfU1VDQ0VFREVEKENyZWF0ZVByb3BlcnR5TWFwKCZwcm9wZXJ0eVNldCkpOwog
ICAgICAgICBFWFBFQ1RfSFJFU1VMVF9TVUNDRUVERUQoU2V0SW5zcGVjdGFibGVQcm9wZXJ0eVZh
bHVlKHByb3BlcnR5U2V0LCBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHksIHJlaW50ZXJwcmV0
X2Nhc3Q8SUluc3BlY3RhYmxlKj4oJm1vY2tTd2FwQ2hhaW5QYW5lbCkpKTsKKworICAgICAgICAv
LyBDaGVjayBuYXRpdmUgd2luZG93IGluaXQgY2FsbHMKICAgICAgICAgTmF0aXZlV2luZG93IG5h
dGl2ZVdpbmRvdyhwcm9wZXJ0eVNldC5HZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tT
d2FwQ2hhaW5QYW5lbCwgZ2V0X1JlbmRlclNpemUodGVzdGluZzo6XykpLlRpbWVzKDEpOwotICAg
ICAgICBFWFBFQ1RfQ0FMTChtb2NrU3dhcENoYWluUGFuZWwsIGFkZF9TaXplQ2hhbmdlZCh0ZXN0
aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMSk7Ci0gICAgICAgIEVYUEVDVF9DQUxMKG1vY2tT
d2FwQ2hhaW5QYW5lbCwgcmVtb3ZlX1NpemVDaGFuZ2VkKHRlc3Rpbmc6Ol8pKS5UaW1lcygxKTsK
KyAgICAgICAgZXhwZWN0TmF0aXZlV2luZG93SW5pdENhbGxzKG1vY2tTd2FwQ2hhaW5QYW5lbCwg
dHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG5hdGl2ZVdpbmRvdy5pbml0aWFsaXplKCkpOwog
ICAgIH0KICAgICBDb1VuaW5pdGlhbGl6ZSgpOwogfQogCitURVNUKE5hdGl2ZVdpbmRvd1Rlc3Qs
IFN3YXBDaGFpblBhbmVsSW5Qcm9wZXJ0eVNldFdpdGhTaXplQW5kU2NhbGUpCit7CisgICAgLy8g
Q09NIGlzIHJlcXVpcmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBjcmVhdGlvbiBvZiB0aGUgcHJv
cGVydHkgc2V0CisgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKENvSW5pdGlhbGl6ZUV4KE5V
TEwsIENPSU5JVF9NVUxUSVRIUkVBREVEKSk7CisgICAgeworICAgICAgICBNb2NrU3dhcENoYWlu
UGFuZWwgbW9ja1N3YXBDaGFpblBhbmVsOworICAgICAgICBDb21QdHI8SU1hcDxIU1RSSU5HLCBJ
SW5zcGVjdGFibGUqPj4gcHJvcGVydHlTZXQ7CisgICAgICAgIENvbVB0cjxJUHJvcGVydHlWYWx1
ZVN0YXRpY3M+IHByb3BlcnR5VmFsdWVTdGF0aWNzOworICAgICAgICBDb21QdHI8SVByb3BlcnR5
VmFsdWU+IHNpbmdsZVZhbHVlOworICAgICAgICBDb21QdHI8SVByb3BlcnR5VmFsdWU+IHNpemVW
YWx1ZTsKKworICAgICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgcHJvcGVydHkgc2V0IHdpdGggdGhl
IHN3YXBjaGFpbnBhbmVsCisgICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChDcmVhdGVQ
cm9wZXJ0eU1hcCgmcHJvcGVydHlTZXQpKTsKKyAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VF
REVEKFNldEluc3BlY3RhYmxlUHJvcGVydHlWYWx1ZShwcm9wZXJ0eVNldCwgRUdMTmF0aXZlV2lu
ZG93VHlwZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PElJbnNwZWN0YWJsZSo+KCZtb2NrU3dh
cENoYWluUGFuZWwpKSk7CisKKyAgICAgICAgLy8gQWRkIGEgdmFsaWQgc2NhbGUgZmFjdG9yIHRv
IHRoZSBwcm9wZXJ0eSBzZXQKKyAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKENyZWF0
ZVByb3BlcnR5VmFsdWVTdGF0aWNzKHByb3BlcnR5VmFsdWVTdGF0aWNzLkdldEFkZHJlc3NPZigp
KSk7CisgICAgICAgIHByb3BlcnR5VmFsdWVTdGF0aWNzLT5DcmVhdGVTaW5nbGUoMC41ZiwgcmVp
bnRlcnByZXRfY2FzdDxJSW5zcGVjdGFibGUqKj4oc2luZ2xlVmFsdWUuR2V0QWRkcmVzc09mKCkp
KTsKKyAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKFNldEluc3BlY3RhYmxlUHJvcGVy
dHlWYWx1ZShwcm9wZXJ0eVNldCwgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHksIHJl
aW50ZXJwcmV0X2Nhc3Q8SUluc3BlY3RhYmxlKj4oc2luZ2xlVmFsdWUuR2V0KCkpKSk7CisKKyAg
ICAgICAgLy8gQWRkIGEgdmFsaWQgc2l6ZSB0byB0aGUgcHJvcGVydHkgc2V0CisgICAgICAgIEVY
UEVDVF9IUkVTVUxUX1NVQ0NFRURFRChDcmVhdGVQcm9wZXJ0eVZhbHVlU3RhdGljcyhwcm9wZXJ0
eVZhbHVlU3RhdGljcy5HZXRBZGRyZXNzT2YoKSkpOworICAgICAgICBwcm9wZXJ0eVZhbHVlU3Rh
dGljcy0+Q3JlYXRlU2l6ZSh7IDQ4MCwgODAwIH0sIHJlaW50ZXJwcmV0X2Nhc3Q8SUluc3BlY3Rh
YmxlKio+KHNpemVWYWx1ZS5HZXRBZGRyZXNzT2YoKSkpOworICAgICAgICBFWFBFQ1RfSFJFU1VM
VF9TVUNDRUVERUQoU2V0SW5zcGVjdGFibGVQcm9wZXJ0eVZhbHVlKHByb3BlcnR5U2V0LCBFR0xS
ZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PElJbnNwZWN0YWJsZSo+
KHNpemVWYWx1ZS5HZXQoKSkpKTsKKworICAgICAgICAvLyBDaGVjayBuYXRpdmUgd2luZG93IGlu
aXQgZmFpbHMsIHNpbmNlIHdlIHNob3VsZG4ndCBiZSBhYmxlIHRvIHNldCBhIHNpemUgYW5kIGEg
c2NhbGUgdG9nZXRoZXIKKyAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdyhwcm9wZXJ0
eVNldC5HZXQoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShuYXRpdmVXaW5kb3cuaW5pdGlhbGl6
ZSgpKTsKKyAgICB9CisgICAgQ29VbmluaXRpYWxpemUoKTsKK30KKworLy8gVGVzdHMgdGhhdCB0
aGUgc2NhbGUgcHJvcGVydHkgd29ya3MgYXMgZXhwZWN0ZWQgaW4gYSBwcm9wZXJ0eSBzZXQgd2l0
aCBhIFN3YXBDaGFpblBhbmVsCitjbGFzcyBTd2FwQ2hhaW5QYW5lbFNjYWxlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6cGFpcjxmbG9hdCwgYm9vbD4+Cit7Cit9Owor
CitURVNUX1AoU3dhcENoYWluUGFuZWxTY2FsZVRlc3QsIFZhbGlkYXRlU2NhbGUpCit7CisgICAg
ZmxvYXQgc2NhbGUgPSBHZXRQYXJhbSgpLmZpcnN0OworICAgIGJvb2wgZXhwZWN0ZWRSZXN1bHQg
PSBHZXRQYXJhbSgpLnNlY29uZDsKKworICAgIC8vIENPTSBpcyByZXF1aXJlZCB0byBiZSBpbml0
aWFsaXplZCBmb3IgY3JlYXRpb24gb2YgdGhlIHByb3BlcnR5IHNldAorICAgIEVYUEVDVF9IUkVT
VUxUX1NVQ0NFRURFRChDb0luaXRpYWxpemVFeChOVUxMLCBDT0lOSVRfTVVMVElUSFJFQURFRCkp
OworICAgIHsKKyAgICAgICAgTW9ja1N3YXBDaGFpblBhbmVsIG1vY2tTd2FwQ2hhaW5QYW5lbDsK
KyAgICAgICAgQ29tUHRyPElNYXA8SFNUUklORywgSUluc3BlY3RhYmxlKj4+IHByb3BlcnR5U2V0
OworICAgICAgICBDb21QdHI8SVByb3BlcnR5VmFsdWVTdGF0aWNzPiBwcm9wZXJ0eVZhbHVlU3Rh
dGljczsKKyAgICAgICAgQ29tUHRyPElQcm9wZXJ0eVZhbHVlPiBzaW5nbGVWYWx1ZTsKKworICAg
ICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgcHJvcGVydHkgc2V0CisgICAgICAgIEVYUEVDVF9IUkVT
VUxUX1NVQ0NFRURFRChDcmVhdGVQcm9wZXJ0eU1hcCgmcHJvcGVydHlTZXQpKTsKKyAgICAgICAg
RVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKFNldEluc3BlY3RhYmxlUHJvcGVydHlWYWx1ZShwcm9w
ZXJ0eVNldCwgRUdMTmF0aXZlV2luZG93VHlwZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PElJ
bnNwZWN0YWJsZSo+KCZtb2NrU3dhcENoYWluUGFuZWwpKSk7CisKKyAgICAgICAgLy8gQWRkIGEg
dmFsaWQgc2NhbGUgZmFjdG9yIHRvIHRoZSBwcm9wZXJ0eSBzZXQKKyAgICAgICAgRVhQRUNUX0hS
RVNVTFRfU1VDQ0VFREVEKENyZWF0ZVByb3BlcnR5VmFsdWVTdGF0aWNzKHByb3BlcnR5VmFsdWVT
dGF0aWNzLkdldEFkZHJlc3NPZigpKSk7CisgICAgICAgIHByb3BlcnR5VmFsdWVTdGF0aWNzLT5D
cmVhdGVTaW5nbGUoc2NhbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8SUluc3BlY3RhYmxlKio+KHNpbmds
ZVZhbHVlLkdldEFkZHJlc3NPZigpKSk7CisgICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURF
RChTZXRJbnNwZWN0YWJsZVByb3BlcnR5VmFsdWUocHJvcGVydHlTZXQsIEVHTFJlbmRlclJlc29s
dXRpb25TY2FsZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PElJbnNwZWN0YWJsZSo+KHNpbmds
ZVZhbHVlLkdldCgpKSkpOworCisgICAgICAgIC8vIENoZWNrIG5hdGl2ZSB3aW5kb3cgaW5pdCBz
dGF0dXMgYW5kIGNhbGxzIHRvIHRoZSBtb2NrIHN3YXBjaGFpbnBhbmVsCisgICAgICAgIE5hdGl2
ZVdpbmRvdyBuYXRpdmVXaW5kb3cocHJvcGVydHlTZXQuR2V0KCkpOworICAgICAgICBpZiAoZXhw
ZWN0ZWRSZXN1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cGVjdE5hdGl2ZVdpbmRvd0lu
aXRDYWxscyhtb2NrU3dhcENoYWluUGFuZWwsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAg
RVhQRUNUX0VRKG5hdGl2ZVdpbmRvdy5pbml0aWFsaXplKCksIGV4cGVjdGVkUmVzdWx0KTsKKyAg
ICB9CisgICAgQ29VbmluaXRpYWxpemUoKTsKK30KKwordHlwZWRlZiBzdGQ6OnBhaXI8ZmxvYXQs
IGJvb2w+IHNjYWxlVmFsaWRQYWlyOworc3RhdGljIGNvbnN0IHNjYWxlVmFsaWRQYWlyIHNjYWxl
c1tdID0geyBzY2FsZVZhbGlkUGFpcigxLjBmLCAgIHRydWUpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVZhbGlkUGFpcigwLjVmLCAgIHRydWUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVZhbGlkUGFpcigwLjBm
LCAgIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nh
bGVWYWxpZFBhaXIoMC4wMWYsICB0cnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NhbGVWYWxpZFBhaXIoMi4wMGYsICB0cnVlKSB9OworCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUChOYXRpdmVXaW5kb3dUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
U3dhcENoYWluUGFuZWxTY2FsZVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5n
OjpWYWx1ZXNJbihzY2FsZXMpKTsKKworLy8gVGVzdHMgdGhhdCB0aGUgc2l6ZSBwcm9wZXJ0eSB3
b3JrcyBhcyBleHBlY3RlZCBpbiBhIHByb3BlcnR5IHNldCB3aXRoIGEgU3dhcENoYWluUGFuZWwK
K2NsYXNzIFN3YXBDaGFpblBhbmVsU2l6ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQ
YXJhbTxzdGQ6OnR1cGxlPGZsb2F0LCBmbG9hdCwgYm9vbD4+Cit7Cit9OworCitURVNUX1AoU3dh
cENoYWluUGFuZWxTaXplVGVzdCwgVmFsaWRhdGVTaXplKQoreworICAgIFNpemUgcmVuZGVyU2l6
ZSA9IHsgc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSksIHN0ZDo6Z2V0PDE+KEdldFBhcmFtKCkpIH07
CisgICAgYm9vbCBleHBlY3RlZFJlc3VsdCA9IHN0ZDo6Z2V0PDI+KEdldFBhcmFtKCkpOworCisg
ICAgLy8gQ09NIGlzIHJlcXVpcmVkIHRvIGJlIGluaXRpYWxpemVkIGZvciBjcmVhdGlvbiBvZiB0
aGUgcHJvcGVydHkgc2V0CisgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKENvSW5pdGlhbGl6
ZUV4KE5VTEwsIENPSU5JVF9NVUxUSVRIUkVBREVEKSk7CisgICAgeworICAgICAgICBNb2NrU3dh
cENoYWluUGFuZWwgbW9ja1N3YXBDaGFpblBhbmVsOworICAgICAgICBDb21QdHI8SU1hcDxIU1RS
SU5HLCBJSW5zcGVjdGFibGUqPj4gcHJvcGVydHlTZXQ7CisgICAgICAgIENvbVB0cjxJUHJvcGVy
dHlWYWx1ZVN0YXRpY3M+IHByb3BlcnR5VmFsdWVTdGF0aWNzOworICAgICAgICBDb21QdHI8SVBy
b3BlcnR5VmFsdWU+IHNpemVWYWx1ZTsKKworICAgICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgcHJv
cGVydHkgc2V0CisgICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChDcmVhdGVQcm9wZXJ0
eU1hcCgmcHJvcGVydHlTZXQpKTsKKyAgICAgICAgRVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKFNl
dEluc3BlY3RhYmxlUHJvcGVydHlWYWx1ZShwcm9wZXJ0eVNldCwgRUdMTmF0aXZlV2luZG93VHlw
ZVByb3BlcnR5LCByZWludGVycHJldF9jYXN0PElJbnNwZWN0YWJsZSo+KCZtb2NrU3dhcENoYWlu
UGFuZWwpKSk7CisKKyAgICAgICAgLy8gQWRkIGEgdmFsaWQgc2l6ZSB0byB0aGUgcHJvcGVydHkg
c2V0CisgICAgICAgIEVYUEVDVF9IUkVTVUxUX1NVQ0NFRURFRChDcmVhdGVQcm9wZXJ0eVZhbHVl
U3RhdGljcyhwcm9wZXJ0eVZhbHVlU3RhdGljcy5HZXRBZGRyZXNzT2YoKSkpOworICAgICAgICBw
cm9wZXJ0eVZhbHVlU3RhdGljcy0+Q3JlYXRlU2l6ZShyZW5kZXJTaXplLCByZWludGVycHJldF9j
YXN0PElJbnNwZWN0YWJsZSoqPihzaXplVmFsdWUuR2V0QWRkcmVzc09mKCkpKTsKKyAgICAgICAg
RVhQRUNUX0hSRVNVTFRfU1VDQ0VFREVEKFNldEluc3BlY3RhYmxlUHJvcGVydHlWYWx1ZShwcm9w
ZXJ0eVNldCwgRUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSwgcmVpbnRlcnByZXRfY2FzdDxJ
SW5zcGVjdGFibGUqPihzaXplVmFsdWUuR2V0KCkpKSk7CisKKyAgICAgICAgLy8gQ2hlY2sgbmF0
aXZlIHdpbmRvdyBpbml0IHN0YXR1cyBhbmQgY2FsbHMgdG8gdGhlIG1vY2sgc3dhcGNoYWlucGFu
ZWwKKyAgICAgICAgTmF0aXZlV2luZG93IG5hdGl2ZVdpbmRvdyhwcm9wZXJ0eVNldC5HZXQoKSk7
CisgICAgICAgIGlmIChleHBlY3RlZFJlc3VsdCkKKyAgICAgICAgeworICAgICAgICAgICAgZXhw
ZWN0TmF0aXZlV2luZG93SW5pdENhbGxzKG1vY2tTd2FwQ2hhaW5QYW5lbCwgZmFsc2UpOworICAg
ICAgICB9CisKKyAgICAgICAgRVhQRUNUX0VRKG5hdGl2ZVdpbmRvdy5pbml0aWFsaXplKCksIGV4
cGVjdGVkUmVzdWx0KTsKKyAgICB9CisgICAgQ29VbmluaXRpYWxpemUoKTsKK30KKwordHlwZWRl
ZiBzdGQ6OnR1cGxlPGZsb2F0LCBmbG9hdCwgYm9vbD4gc2l6ZVZhbGlkUGFpcjsKK3N0YXRpYyBj
b25zdCBzaXplVmFsaWRQYWlyIHNpemVzW10gPSB7IHNpemVWYWxpZFBhaXIoIDgwMCwgIDQ4MCwg
dHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplVmFsaWRQ
YWlyKCAgIDAsICA0ODAsIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVWYWxpZFBhaXIoIDgwMCwgICAgMCwgZmFsc2UpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZVZhbGlkUGFpciggICAwLCAgICAwLCBmYWxzZSkg
fTsKKworSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoTmF0aXZlV2luZG93VGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFN3YXBDaGFpblBhbmVsU2l6ZVRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihzaXplcykpOworCiB9IC8vIG5hbWVzcGFjZQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0JsaXQ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxp
dDkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNyArMTM1LDcgQEAKIHsKICAgICBJRGlyZWN0
M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCi0gICAgRDNEU2hh
ZGVyVHlwZSAqc2hhZGVyOworICAgIEQzRFNoYWRlclR5cGUgKnNoYWRlciA9IG51bGxwdHI7CiAK
ICAgICBpZiAobUNvbXBpbGVkU2hhZGVyc1tzb3VyY2VdICE9IE5VTEwpCiAgICAgewpAQCAtMjUx
LDEwICsyNTEsMTEgQEAKICAgICBBU1NFUlQoc291cmNlKTsKIAogICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpkZXN0U3VyZmFjZSA9IE5VTEw7Ci0gICAgVGV4dHVyZVN0b3JhZ2U5XzJEICpzdG9yYWdl
OSA9IEdldEFzPFRleHR1cmVTdG9yYWdlOV8yRD4oc3RvcmFnZSk7Ci0gICAgZXJyb3IgPSBzdG9y
YWdlOS0+Z2V0U3VyZmFjZUxldmVsKGxldmVsLCB0cnVlLCAmZGVzdFN1cmZhY2UpOworICAgIFRl
eHR1cmVTdG9yYWdlOSAqc3RvcmFnZTkgICAgICA9IEdldEFzPFRleHR1cmVTdG9yYWdlOT4oc3Rv
cmFnZSk7CisgICAgZXJyb3IgPSBzdG9yYWdlOS0+Z2V0U3VyZmFjZUxldmVsKEdMX1RFWFRVUkVf
MkQsIGxldmVsLCB0cnVlLCAmZGVzdFN1cmZhY2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CiAgICAgeworICAgICAgICBTYWZlUmVsZWFzZShzb3VyY2UpOwogICAgICAgICByZXR1cm4gZXJy
b3I7CiAgICAgfQogICAgIEFTU0VSVChkZXN0U3VyZmFjZSk7CkBAIC0yOTAsMTAgKzI5MSwxMSBA
QAogICAgIEFTU0VSVChzb3VyY2UpOwogCiAgICAgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJm
YWNlID0gTlVMTDsKLSAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc3RvcmFnZTkgPSBHZXRBczxU
ZXh0dXJlU3RvcmFnZTlfQ3ViZT4oc3RvcmFnZSk7Ci0gICAgZXJyb3IgPSBzdG9yYWdlOS0+Z2V0
Q3ViZU1hcFN1cmZhY2UodGFyZ2V0LCBsZXZlbCwgdHJ1ZSwgJmRlc3RTdXJmYWNlKTsKKyAgICBU
ZXh0dXJlU3RvcmFnZTkgKnN0b3JhZ2U5ICAgICAgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTk+KHN0
b3JhZ2UpOworICAgIGVycm9yID0gc3RvcmFnZTktPmdldFN1cmZhY2VMZXZlbCh0YXJnZXQsIGxl
dmVsLCB0cnVlLCAmZGVzdFN1cmZhY2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAg
eworICAgICAgICBTYWZlUmVsZWFzZShzb3VyY2UpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAg
ICAgfQogICAgIEFTU0VSVChkZXN0U3VyZmFjZSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0J1ZmZlcjkuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0LDcgKzE0LDYgQEAKIAogQnVmZmVyOTo6QnVmZmVyOShSZW5kZXJlcjkgKnJl
bmRlcmVyKQogICAgIDogQnVmZmVyRDNEKHJlbmRlcmVyKSwKLSAgICAgIG1SZW5kZXJlcihyZW5k
ZXJlciksCiAgICAgICBtU2l6ZSgwKQoge30KIApAQCAtMzksMTMgKzM4LDEwIEBACiAgICAgICAg
IG1lbWNweShtTWVtb3J5LmRhdGEoKSwgZGF0YSwgc2l6ZSk7CiAgICAgfQogCisgICAgdXBkYXRl
RDNEQnVmZmVyVXNhZ2UodXNhZ2UpOworCiAgICAgaW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKIAot
ICAgIGlmICh1c2FnZSA9PSBHTF9TVEFUSUNfRFJBVykKLSAgICB7Ci0gICAgICAgIGluaXRpYWxp
emVTdGF0aWNEYXRhKCk7Ci0gICAgfQotCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CiB9CiAKQEAgLTEwOCw5ICsxMDQsMTAgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKIH0KIAotdm9pZCBCdWZmZXI5OjptYXJrVHJhbnNmb3JtRmVlZGJh
Y2tVc2FnZSgpCitnbDo6RXJyb3IgQnVmZmVyOTo6bWFya1RyYW5zZm9ybUZlZWRiYWNrVXNhZ2Uo
KQogewogICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvQnVmZmVyOS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwyMyArMjYsMjIgQEAKICAgICAvLyBCdWZmZXJEM0QgaW1wbGVtZW50
YXRpb24KICAgICB2aXJ0dWFsIHNpemVfdCBnZXRTaXplKCkgY29uc3QgeyByZXR1cm4gbVNpemU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBnbDo6RXJyb3IgZ2V0RGF0YShjb25zdCB1aW50OF90ICoqb3V0RGF0
YSkgb3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXJJbXBsIGltcGxlbWVudGF0aW9uCiAgICAgdmly
dHVhbCBnbDo6RXJyb3Igc2V0RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgR0xl
bnVtIHVzYWdlKTsKLSAgICBnbDo6RXJyb3IgZ2V0RGF0YShjb25zdCB1aW50OF90ICoqb3V0RGF0
YSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0U3ViRGF0YShjb25zdCB2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCk7CiAgICAgdmlydHVhbCBnbDo6RXJy
b3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCogc291cmNlLCBHTGludHB0ciBzb3VyY2VPZmZzZXQs
IEdMaW50cHRyIGRlc3RPZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7CiAgICAgdmlydHVhbCBnbDo6
RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cik7CiAgICAgdmlydHVhbCBn
bDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVs
ZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cik7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgdW5tYXAo
R0xib29sZWFuICpyZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBtYXJrVHJhbnNmb3JtRmVlZGJh
Y2tVc2FnZSgpOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIG1hcmtUcmFuc2Zvcm1GZWVkYmFja1Vz
YWdlKCk7CiAKICAgcHJpdmF0ZToKLSAgICBSZW5kZXJlcjkgKm1SZW5kZXJlcjsKICAgICBNZW1v
cnlCdWZmZXIgbU1lbW9yeTsKICAgICBzaXplX3QgbVNpemU7CiB9OwogCi19Cit9ICAvLyBuYW1l
c3BhY2UgcngKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Q5X0JVRkZFUjlf
SF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9EZWJ1Z0Fubm90YXRvcjkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9EZWJ1Z0Fubm90YXRvcjku
Y3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRGVidWdBbm5vdGF0b3I5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMsOSArMTMsOSBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKLXZvaWQgRGVidWdBbm5vdGF0
b3I5OjpiZWdpbkV2ZW50KGNvbnN0IHN0ZDo6d3N0cmluZyAmZXZlbnROYW1lKQordm9pZCBEZWJ1
Z0Fubm90YXRvcjk6OmJlZ2luRXZlbnQoY29uc3Qgd2NoYXJfdCAqZXZlbnROYW1lKQogewotICAg
IEQzRFBFUkZfQmVnaW5FdmVudCgwLCBldmVudE5hbWUuY19zdHIoKSk7CisgICAgRDNEUEVSRl9C
ZWdpbkV2ZW50KDAsIGV2ZW50TmFtZSk7CiB9CiAKIHZvaWQgRGVidWdBbm5vdGF0b3I5OjplbmRF
dmVudCgpCkBAIC0yMyw5ICsyMyw5IEBACiAgICAgRDNEUEVSRl9FbmRFdmVudCgpOwogfQogCi12
b2lkIERlYnVnQW5ub3RhdG9yOTo6c2V0TWFya2VyKGNvbnN0IHN0ZDo6d3N0cmluZyAmbWFya2Vy
TmFtZSkKK3ZvaWQgRGVidWdBbm5vdGF0b3I5OjpzZXRNYXJrZXIoY29uc3Qgd2NoYXJfdCAqbWFy
a2VyTmFtZSkKIHsKLSAgICBEM0RQRVJGX1NldE1hcmtlcigwLCBtYXJrZXJOYW1lLmNfc3RyKCkp
OworICAgIEQzRFBFUkZfU2V0TWFya2VyKDAsIG1hcmtlck5hbWUpOwogfQogCiBib29sIERlYnVn
QW5ub3RhdG9yOTo6Z2V0U3RhdHVzKCkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9EZWJ1Z0Fubm90YXRvcjkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvRGVidWdBbm5vdGF0b3I5LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9EZWJ1Z0Fubm90YXRvcjku
aAkod29ya2luZyBjb3B5KQpAQCAtMTgsOSArMTgsOSBAQAogewogICBwdWJsaWM6CiAgICAgRGVi
dWdBbm5vdGF0b3I5KCkge30KLSAgICB2b2lkIGJlZ2luRXZlbnQoY29uc3Qgc3RkOjp3c3RyaW5n
ICZldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5FdmVudChjb25zdCB3Y2hhcl90
ICpldmVudE5hbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgZW5kRXZlbnQoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNldE1hcmtlcihjb25zdCBzdGQ6OndzdHJpbmcgJm1hcmtlck5hbWUpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0TWFya2VyKGNvbnN0IHdjaGFyX3QgKm1hcmtlck5hbWUpIG92ZXJyaWRl
OwogICAgIGJvb2wgZ2V0U3RhdHVzKCkgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Zy
YW1lYnVmZmVyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDggKzIyLDcgQEAKIHsKIAogRnJh
bWVidWZmZXI5OjpGcmFtZWJ1ZmZlcjkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRh
LCBSZW5kZXJlcjkgKnJlbmRlcmVyKQotICAgIDogRnJhbWVidWZmZXJEM0QoZGF0YSwgcmVuZGVy
ZXIpLAotICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKQorICAgIDogRnJhbWVidWZmZXJEM0QoZGF0
YSwgcmVuZGVyZXIpLCBtUmVuZGVyZXIocmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKG1SZW5kZXJl
ciAhPSBudWxscHRyKTsKIH0KQEAgLTMyLDggKzMxLDI5IEBACiB7CiB9CiAKLWdsOjpFcnJvciBG
cmFtZWJ1ZmZlcjk6OmNsZWFyKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IENsZWFyUGFy
YW1ldGVycyAmY2xlYXJQYXJhbXMpCitnbDo6RXJyb3IgRnJhbWVidWZmZXI5OjpkaXNjYXJkKHNp
emVfdCwgY29uc3QgR0xlbnVtICopCiB7CisgICAgLy8gRXh0ZW5zaW9uIG5vdCBpbXBsZW1lbnRl
ZCBpbiBEM0Q5IHJlbmRlcmVyCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6aW52YWxpZGF0
ZShzaXplX3QsIGNvbnN0IEdMZW51bSAqKQoreworICAgIC8vIFNob3VsZG4ndCBldmVyIHJlYWNo
IGhlcmUgaW4gRDNEOQorICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlcjk6OmludmFsaWRhdGVTdWIo
c2l6ZV90LCBjb25zdCBHTGVudW0gKiwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmKQoreworICAgIC8v
IFNob3VsZG4ndCBldmVyIHJlYWNoIGhlcmUgaW4gRDNEOQorICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1
ZmZlcjk6OmNsZWFyKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBjb25zdCBDbGVhclBhcmFtZXRlcnMg
JmNsZWFyUGFyYW1zKQorewogICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmNv
bG9yQXR0YWNobWVudCA9IG1EYXRhLmdldENvbG9yQXR0YWNobWVudCgwKTsKICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gbURhdGEu
Z2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCk7CiAKQEAgLTQzLDE2ICs2MywyMiBAQAogICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgZmxvYXQgbmVhclogPSBzdGF0ZS5nZXRO
ZWFyUGxhbmUoKTsKLSAgICBmbG9hdCBmYXJaID0gc3RhdGUuZ2V0RmFyUGxhbmUoKTsKLSAgICBt
UmVuZGVyZXItPnNldFZpZXdwb3J0KHN0YXRlLmdldFZpZXdwb3J0KCksIG5lYXJaLCBmYXJaLCBH
TF9UUklBTkdMRVMsIHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250RmFjZSwgdHJ1ZSk7
CisgICAgZmxvYXQgbmVhclogPSBkYXRhLnN0YXRlLT5nZXROZWFyUGxhbmUoKTsKKyAgICBmbG9h
dCBmYXJaID0gZGF0YS5zdGF0ZS0+Z2V0RmFyUGxhbmUoKTsKKyAgICBtUmVuZGVyZXItPnNldFZp
ZXdwb3J0KGRhdGEuY2FwcywgZGF0YS5zdGF0ZS0+Z2V0Vmlld3BvcnQoKSwgbmVhclosIGZhclos
IEdMX1RSSUFOR0xFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuc3RhdGUtPmdl
dFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250RmFjZSwgdHJ1ZSk7CiAKLSAgICBtUmVuZGVyZXItPnNl
dFNjaXNzb3JSZWN0YW5nbGUoc3RhdGUuZ2V0U2Npc3NvcigpLCBzdGF0ZS5pc1NjaXNzb3JUZXN0
RW5hYmxlZCgpKTsKKyAgICBtUmVuZGVyZXItPnNldFNjaXNzb3JSZWN0YW5nbGUoZGF0YS5zdGF0
ZS0+Z2V0U2Npc3NvcigpLCBkYXRhLnN0YXRlLT5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpKTsKIAog
ICAgIHJldHVybiBtUmVuZGVyZXItPmNsZWFyKGNsZWFyUGFyYW1zLCBjb2xvckF0dGFjaG1lbnQs
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXI5Ojpy
ZWFkUGl4ZWxzKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBzaXplX3Qgb3V0cHV0UGl0Y2gsIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFj
aywgdWludDhfdCAqcGl4ZWxzKSBjb25zdAorZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6cmVhZFBp
eGVsc0ltcGwoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBpeGVscykgY29uc3QKIHsK
ICAgICBBU1NFUlQocGFjay5waXhlbEJ1ZmZlci5nZXQoKSA9PSBudWxscHRyKTsKIApJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Zy
YW1lYnVmZmVyOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZlcjkuaAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZyYW1lYnVmZmVyOS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMSArMjEsMTkgQEAKICAg
ICBGcmFtZWJ1ZmZlcjkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhLCBSZW5kZXJl
cjkgKnJlbmRlcmVyKTsKICAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlcjkoKTsKIAorICAgIGdsOjpF
cnJvciBkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVu
dW0gKmF0dGFjaG1lbnRzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgaW52YWxpZGF0ZVN1Yihz
aXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJmFyZWEpIG92ZXJyaWRlOworCiAgIHByaXZhdGU6Ci0gICAgZ2w6OkVycm9yIGNsZWFyKGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwgY29u
c3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJy
b3IgcmVhZFBpeGVscyhjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgc2l6ZV90IG91dHB1dFBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQaXhlbFBhY2tTdGF0ZSAmcGFjaywgdWludDhfdCAqcGl4ZWxzKSBjb25zdCBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgcmVhZFBpeGVsc0ltcGwoY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpwaXhlbHMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZ2w6OkVy
cm9yIGJsaXQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmZGVzdEFyZWEsIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsCiAgICAgICAgICAg
ICAgICAgICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0LCBib29sIGJsaXREZXB0aCwgYm9vbCBibGl0
U3RlbmNpbCwgR0xlbnVtIGZpbHRlciwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFn
ZTkuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMwLDggKzMzMCw4IEBACiBnbDo6RXJyb3IgSW1hZ2U5OjpzZXRNYW5hZ2VkU3VyZmFjZTJEKFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgbGV2ZWwpCiB7CiAgICAgSURpcmVjdDNEU3VyZmFj
ZTkgKnN1cmZhY2UgPSBOVUxMOwotICAgIFRleHR1cmVTdG9yYWdlOV8yRCAqc3RvcmFnZTkgPSBH
ZXRBczxUZXh0dXJlU3RvcmFnZTlfMkQ+KHN0b3JhZ2UpOwotICAgIGdsOjpFcnJvciBlcnJvciA9
IHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwobGV2ZWwsIGZhbHNlLCAmc3VyZmFjZSk7CisgICAg
VGV4dHVyZVN0b3JhZ2U5ICpzdG9yYWdlOSAgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTk+KHN0b3Jh
Z2UpOworICAgIGdsOjpFcnJvciBlcnJvciA9IHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwoR0xf
VEVYVFVSRV8yRCwgbGV2ZWwsIGZhbHNlLCAmc3VyZmFjZSk7CiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTM0Miw4ICszNDIsOSBAQAog
Z2w6OkVycm9yIEltYWdlOTo6c2V0TWFuYWdlZFN1cmZhY2VDdWJlKFRleHR1cmVTdG9yYWdlICpz
dG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsKQogewogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpz
dXJmYWNlID0gTlVMTDsKLSAgICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc3RvcmFnZTkgPSBHZXRB
czxUZXh0dXJlU3RvcmFnZTlfQ3ViZT4oc3RvcmFnZSk7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0g
c3RvcmFnZTktPmdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WCArIGZhY2UsIGxldmVsLCBmYWxzZSwgJnN1cmZhY2UpOworICAgIFRleHR1cmVTdG9yYWdlOSAq
c3RvcmFnZTkgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTk+KHN0b3JhZ2UpOworICAgIGdsOjpFcnJv
ciBlcnJvciA9CisgICAgICAgIHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwoR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwgbGV2ZWwsIGZhbHNlLCAmc3VyZmFjZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTM4
NCwxMiArMzg1LDEzIEBACiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKKyAgICBUZXh0
dXJlU3RvcmFnZTkgKnN0b3JhZ2U5ID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2U5PihzdG9yYWdlKTsK
KwogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0U3VyZmFjZSA9IE5VTEw7CiAKICAgICBpZiAo
aW5kZXgudHlwZSA9PSBHTF9URVhUVVJFXzJEKQogICAgIHsKLSAgICAgICAgVGV4dHVyZVN0b3Jh
Z2U5XzJEICpzdG9yYWdlOSA9IEdldEFzPFRleHR1cmVTdG9yYWdlOV8yRD4oc3RvcmFnZSk7Ci0g
ICAgICAgIGVycm9yID0gc3RvcmFnZTktPmdldFN1cmZhY2VMZXZlbChpbmRleC5taXBJbmRleCwg
dHJ1ZSwgJmRlc3RTdXJmYWNlKTsKKyAgICAgICAgZXJyb3IgPSBzdG9yYWdlOS0+Z2V0U3VyZmFj
ZUxldmVsKEdMX1RFWFRVUkVfMkQsIGluZGV4Lm1pcEluZGV4LCB0cnVlLCAmZGVzdFN1cmZhY2Up
OwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CkBAIC0zOTgsOCArNDAwLDcgQEAKICAgICBlbHNlCiAgICAgewogICAgICAg
ICBBU1NFUlQoZ2w6OklzQ3ViZU1hcFRleHR1cmVUYXJnZXQoaW5kZXgudHlwZSkpOwotICAgICAg
ICBUZXh0dXJlU3RvcmFnZTlfQ3ViZSAqc3RvcmFnZTkgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTlf
Q3ViZT4oc3RvcmFnZSk7Ci0gICAgICAgIGVycm9yID0gc3RvcmFnZTktPmdldEN1YmVNYXBTdXJm
YWNlKGluZGV4LnR5cGUsIGluZGV4Lm1pcEluZGV4LCB0cnVlLCAmZGVzdFN1cmZhY2UpOworICAg
ICAgICBlcnJvciA9IHN0b3JhZ2U5LT5nZXRTdXJmYWNlTGV2ZWwoaW5kZXgudHlwZSwgaW5kZXgu
bWlwSW5kZXgsIHRydWUsICZkZXN0U3VyZmFjZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKQEAgLTQ3OSw2ICs0ODAs
OCBAQAogCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6Okdl
dEludGVybmFsRm9ybWF0SW5mbyhtSW50ZXJuYWxGb3JtYXQpOwogICAgIEdMc2l6ZWkgaW5wdXRS
b3dQaXRjaCA9IGZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIGFyZWEud2lkdGgsIHVu
cGFjay5hbGlnbm1lbnQsIHVucGFjay5yb3dMZW5ndGgpOworICAgIEdMc2l6ZWkgaW5wdXRTa2lw
Qnl0ZXMgPSBmb3JtYXRJbmZvLmNvbXB1dGVTa2lwUGl4ZWxzKGlucHV0Um93UGl0Y2gsIDAsIHVu
cGFjay5za2lwSW1hZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVucGFjay5za2lwUm93cywgdW5wYWNrLnNraXBQaXhlbHMpOwog
CiAgICAgY29uc3QgZDNkOTo6VGV4dHVyZUZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9IGQzZDk6Okdl
dFRleHR1cmVGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCk7CiAgICAgQVNTRVJUKGQzZEZvcm1h
dEluZm8ubG9hZEZ1bmN0aW9uICE9IE5VTEwpOwpAQCAtNDk3LDggKzUwMCw5IEBACiAgICAgfQog
CiAgICAgZDNkRm9ybWF0SW5mby5sb2FkRnVuY3Rpb24oYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQs
IGFyZWEuZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQpLCBpbnB1dFJvd1BpdGNoLCAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGxvY2tlZC5w
Qml0cyksIGxvY2tlZC5QaXRjaCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGlucHV0KSArIGlucHV0U2tpcEJ5dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Um93UGl0Y2gsIDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihsb2NrZWQucEJpdHMpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2tlZC5QaXRjaCwgMCk7CiAKICAgICB1bmxvY2soKTsKIApAQCAtNTEy
LDcgKzUxNiw4IEBACiAKICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8g
PSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKG1JbnRlcm5hbEZvcm1hdCk7CiAgICAgR0xzaXpl
aSBpbnB1dFJvd1BpdGNoID0gZm9ybWF0SW5mby5jb21wdXRlUm93UGl0Y2goR0xfVU5TSUdORURf
QllURSwgYXJlYS53aWR0aCwgMSwgMCk7Ci0gICAgR0xzaXplaSBpbnB1dERlcHRoUGl0Y2ggPSBm
b3JtYXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKEdMX1VOU0lHTkVEX0JZVEUsIGFyZWEud2lkdGgs
IGFyZWEuaGVpZ2h0LCAxLCAwKTsKKyAgICBHTHNpemVpIGlucHV0RGVwdGhQaXRjaCA9CisgICAg
ICAgIGZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goR0xfVU5TSUdORURfQllURSwgYXJlYS53
aWR0aCwgYXJlYS5oZWlnaHQsIDEsIDAsIDApOwogCiAgICAgY29uc3QgZDNkOTo6VGV4dHVyZUZv
cm1hdCAmZDNkOUZvcm1hdEluZm8gPSBkM2Q5OjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtSW50ZXJu
YWxGb3JtYXQpOwogCkBAIC01NDQsNyArNTQ5LDkgQEAKIH0KIAogLy8gVGhpcyBpbXBsZW1lbnRz
IGdsQ29weVRleFtTdWJdSW1hZ2UyRCBmb3Igbm9uLXJlbmRlcmFibGUgaW50ZXJuYWwgdGV4dHVy
ZSBmb3JtYXRzIGFuZCBpbmNvbXBsZXRlIHRleHR1cmVzCi1nbDo6RXJyb3IgSW1hZ2U5Ojpjb3B5
KGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsIFJlbmRlclRhcmdldEQzRCAqc291cmNlKQorZ2w6OkVycm9yIEltYWdlOTo6Y29weUZy
b21SVEludGVybmFsKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKnNv
dXJjZSkKIHsKICAgICBBU1NFUlQoc291cmNlKTsKIApAQCAtNzcyLDExICs3NzksMzUgQEAKICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEltYWdlOTo6
Y29weShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6Qm94ICZhcmVhLCBj
b25zdCBnbDo6SW1hZ2VJbmRleCAmc3JjSW5kZXgsIFRleHR1cmVTdG9yYWdlICpzcmNTdG9yYWdl
KQorZ2w6OkVycm9yIEltYWdlOTo6Y29weUZyb21UZXhTdG9yYWdlKGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbWFnZUluZGV4LCBUZXh0dXJlU3RvcmFnZSAqc291cmNlKQogewotICAgIC8vIEN1cnJl
bnRseSB1bnJlYWNoYWJsZSwgZHVlIHRvIG9ubHkgYmVpbmcgdXNlZCBpbiBhIEQzRDExLW9ubHkg
d29ya2Fyb3VuZAotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRhcmdldCA9
IG51bGxwdHI7CisgICAgZ2w6OkVycm9yIGVycm9yID0gc291cmNlLT5nZXRSZW5kZXJUYXJnZXQo
aW1hZ2VJbmRleCwgJnJlbmRlclRhcmdldCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBnbDo6UmVjdGFuZ2xlIHNv
dXJjZUFyZWEoMCwgMCwgbVdpZHRoLCBtSGVpZ2h0KTsKKyAgICByZXR1cm4gY29weUZyb21SVElu
dGVybmFsKGdsOjpPZmZzZXQoKSwgc291cmNlQXJlYSwgcmVuZGVyVGFyZ2V0KTsKIH0KIAorZ2w6
OkVycm9yIEltYWdlOTo6Y29weUZyb21GcmFtZWJ1ZmZlcihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0
T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXJBdHRhY2htZW50ICpzcmNBdHRhY2htZW50ID0gc291cmNlLT5nZXRSZWFkQ29sb3Ji
dWZmZXIoKTsKKyAgICBBU1NFUlQoc3JjQXR0YWNobWVudCk7CisKKyAgICBSZW5kZXJUYXJnZXRE
M0QgKnJlbmRlclRhcmdldCA9IE5VTEw7CisgICAgZ2w6OkVycm9yIGVycm9yID0gc3JjQXR0YWNo
bWVudC0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXQpOworICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgQVNTRVJU
KHJlbmRlclRhcmdldCk7CisgICAgcmV0dXJuIGNvcHlGcm9tUlRJbnRlcm5hbChkZXN0T2Zmc2V0
LCBzb3VyY2VBcmVhLCByZW5kZXJUYXJnZXQpOwogfQorCit9ICAvLyBuYW1lc3BhY2UgcngKSW5k
ZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9JbWFnZTkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFn
ZTkuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsMTAgQEAKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCBnbDo6UGl4ZWxVbnBhY2tT
dGF0ZSAmdW5wYWNrLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5wdXQpOwogICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGxvYWRDb21wcmVzc2VkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25z
dCB2b2lkICppbnB1dCk7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5KGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIFJlbmRl
clRhcmdldEQzRCAqc291cmNlKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5KGNvbnN0IGds
OjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpCb3ggJnNvdXJjZUFyZWEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmc291cmNlSW5kZXgsIFRl
eHR1cmVTdG9yYWdlICpzb3VyY2UpOworICAgIGdsOjpFcnJvciBjb3B5RnJvbVRleFN0b3JhZ2Uo
Y29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdlSW5kZXgsIFRleHR1cmVTdG9yYWdlICpzb3VyY2Up
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5RnJvbUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKICAgcHJp
dmF0ZToKICAgICBnbDo6RXJyb3IgZ2V0U3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqKm91dFN1
cmZhY2UpOwpAQCAtNTksNiArNjAsMTAgQEAKICAgICBnbDo6RXJyb3IgbG9jayhEM0RMT0NLRURf
UkVDVCAqbG9ja2VkUmVjdCwgY29uc3QgUkVDVCAmcmVjdCk7CiAgICAgdm9pZCB1bmxvY2soKTsK
IAorICAgIGdsOjpFcnJvciBjb3B5RnJvbVJUSW50ZXJuYWwoY29uc3QgZ2w6Ok9mZnNldCAmZGVz
dE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJUYXJnZXREM0QgKnNvdXJjZSk7CisKICAgICBSZW5kZXJlcjkgKm1SZW5kZXJlcjsKIAogICAg
IEQzRFBPT0wgbUQzRFBvb2w7ICAgLy8gY2FuIG9ubHkgYmUgRDNEUE9PTF9TWVNURU1NRU0gb3Ig
RDNEUE9PTF9NQU5BR0VEIHNpbmNlIGl0IG5lZWRzIHRvIGJlIGxvY2thYmxlLgpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5
OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVyeTku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw4ICs2NiwxNSBAQAogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgUXVlcnk5OjpnZXRSZXN1bHQoR0x1aW50
ICpwYXJhbXMpCitnbDo6RXJyb3IgUXVlcnk5OjpxdWVyeUNvdW50ZXIoKQogeworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
VW5pbXBsZW1lbnRlZCIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2dsOjpFcnJvciBR
dWVyeTk6OmdldFJlc3VsdEJhc2UoVCAqcGFyYW1zKQorewogICAgIHdoaWxlICghbVF1ZXJ5Rmlu
aXNoZWQpCiAgICAgewogICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSB0ZXN0UXVlcnkoKTsKQEAg
LTgzLDIwICs5MCwzOSBAQAogICAgIH0KIAogICAgIEFTU0VSVChtUXVlcnlGaW5pc2hlZCk7Ci0g
ICAgKnBhcmFtcyA9IG1SZXN1bHQ7Ci0KKyAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8VD4obVJl
c3VsdCk7CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJv
ciBRdWVyeTk6OmlzUmVzdWx0QXZhaWxhYmxlKEdMdWludCAqYXZhaWxhYmxlKQorZ2w6OkVycm9y
IFF1ZXJ5OTo6Z2V0UmVzdWx0KEdMaW50ICpwYXJhbXMpCiB7CisgICAgcmV0dXJuIGdldFJlc3Vs
dEJhc2UocGFyYW1zKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5OTo6Z2V0UmVzdWx0KEdMdWludCAq
cGFyYW1zKQoreworICAgIHJldHVybiBnZXRSZXN1bHRCYXNlKHBhcmFtcyk7Cit9CisKK2dsOjpF
cnJvciBRdWVyeTk6OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIGdl
dFJlc3VsdEJhc2UocGFyYW1zKTsKK30KKworZ2w6OkVycm9yIFF1ZXJ5OTo6Z2V0UmVzdWx0KEdM
dWludDY0ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIGdldFJlc3VsdEJhc2UocGFyYW1zKTsKK30K
KworZ2w6OkVycm9yIFF1ZXJ5OTo6aXNSZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZhaWxhYmxlKQor
ewogICAgIGdsOjpFcnJvciBlcnJvciA9IHRlc3RRdWVyeSgpOwogICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgKmF2YWls
YWJsZSA9IChtUXVlcnlGaW5pc2hlZCA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7CisgICAgKmF2YWls
YWJsZSA9IG1RdWVyeUZpbmlzaGVkOwogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvUXVlcnk5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5oCShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvUXVlcnk5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEzICsyMywyMCBAQAogCiAgICAg
dmlydHVhbCBnbDo6RXJyb3IgYmVnaW4oKTsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBlbmQoKTsK
KyAgICB2aXJ0dWFsIGdsOjpFcnJvciBxdWVyeUNvdW50ZXIoKTsKKyAgICB2aXJ0dWFsIGdsOjpF
cnJvciBnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcyk7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0
UmVzdWx0KEdMdWludCAqcGFyYW1zKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBpc1Jlc3VsdEF2
YWlsYWJsZShHTHVpbnQgKmF2YWlsYWJsZSk7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0UmVz
dWx0KEdMaW50NjQgKnBhcmFtcyk7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0UmVzdWx0KEdM
dWludDY0ICpwYXJhbXMpOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGlzUmVzdWx0QXZhaWxhYmxl
KGJvb2wgKmF2YWlsYWJsZSk7CiAKICAgcHJpdmF0ZToKICAgICBnbDo6RXJyb3IgdGVzdFF1ZXJ5
KCk7CiAKLSAgICBHTHVpbnQgbVJlc3VsdDsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAg
ICBnbDo6RXJyb3IgZ2V0UmVzdWx0QmFzZShUICpwYXJhbXMpOworCisgICAgR0x1aW50NjQgbVJl
c3VsdDsKICAgICBib29sIG1RdWVyeUZpbmlzaGVkOwogCiAgICAgUmVuZGVyZXI5ICptUmVuZGVy
ZXI7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlclRhcmdldDkuY3Bw
CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3LDcgKzE3LDEzIEBACiB7CiAKIC8vIFRPRE86IEFkZFJlZiB0aGUgaW5jb21pbmcgc3VyZmFj
ZSB0byB0YWtlIG93bmVyc2hpcCBpbnN0ZWFkIG9mIGV4cGVjdGluZyB0aGF0IGl0cyByZWYgaXMg
YmVpbmcgZ2l2ZW4uCi1UZXh0dXJlUmVuZGVyVGFyZ2V0OTo6VGV4dHVyZVJlbmRlclRhcmdldDko
SURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCitUZXh0dXJlUmVuZGVyVGFy
Z2V0OTo6VGV4dHVyZVJlbmRlclRhcmdldDkoSURpcmVjdDNEQmFzZVRleHR1cmU5ICp0ZXh0dXJl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0ZXh0
dXJlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURp
cmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMpCiAgICAgOiBtV2lk
dGgod2lkdGgpLAogICAgICAgbUhlaWdodChoZWlnaHQpLApAQCAtMjUsNiArMzEsOCBAQAogICAg
ICAgbUludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSwKICAgICAgIG1EM0RGb3JtYXQoRDNE
Rk1UX1VOS05PV04pLAogICAgICAgbVNhbXBsZXMoc2FtcGxlcyksCisgICAgICBtVGV4dHVyZSh0
ZXh0dXJlKSwKKyAgICAgIG1UZXh0dXJlTGV2ZWwodGV4dHVyZUxldmVsKSwKICAgICAgIG1SZW5k
ZXJUYXJnZXQoc3VyZmFjZSkKIHsKICAgICBBU1NFUlQobURlcHRoID09IDEpOwpAQCAtMzksNiAr
NDcsNyBAQAogCiBUZXh0dXJlUmVuZGVyVGFyZ2V0OTo6flRleHR1cmVSZW5kZXJUYXJnZXQ5KCkK
IHsKKyAgICBTYWZlUmVsZWFzZShtVGV4dHVyZSk7CiAgICAgU2FmZVJlbGVhc2UobVJlbmRlclRh
cmdldCk7CiB9CiAKQEAgLTY3LDggKzc2LDE4IEBACiAgICAgcmV0dXJuIG1TYW1wbGVzOwogfQog
Ci1JRGlyZWN0M0RTdXJmYWNlOSAqVGV4dHVyZVJlbmRlclRhcmdldDk6OmdldFN1cmZhY2UoKQor
SURpcmVjdDNEQmFzZVRleHR1cmU5ICpUZXh0dXJlUmVuZGVyVGFyZ2V0OTo6Z2V0VGV4dHVyZSgp
IGNvbnN0CiB7CisgICAgcmV0dXJuIG1UZXh0dXJlOworfQorCitzaXplX3QgVGV4dHVyZVJlbmRl
clRhcmdldDk6OmdldFRleHR1cmVMZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UZXh0dXJl
TGV2ZWw7Cit9CisKK0lEaXJlY3QzRFN1cmZhY2U5ICpUZXh0dXJlUmVuZGVyVGFyZ2V0OTo6Z2V0
U3VyZmFjZSgpIGNvbnN0Cit7CiAgICAgLy8gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWxl
YXNpbmcgdGhlIHJldHVybmVkIHN1cmZhY2UgcmVmZXJlbmNlLgogICAgIC8vIFRPRE86IHJlbW92
ZSB0aGUgQWRkUmVmIHRvIG1hdGNoIFJlbmRlclRhcmdldDExCiAgICAgaWYgKG1SZW5kZXJUYXJn
ZXQpCkBAIC0xMTEsNyArMTMwLDcgQEAKIAogR0xlbnVtIFN1cmZhY2VSZW5kZXJUYXJnZXQ5Ojpn
ZXRJbnRlcm5hbEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtRGVwdGggPyBtU3dhcENo
YWluLT5HZXREZXB0aEJ1ZmZlckludGVybmFsRm9ybWF0KCkgOiBtU3dhcENoYWluLT5HZXRCYWNr
QnVmZmVySW50ZXJuYWxGb3JtYXQoKSk7CisgICAgcmV0dXJuIChtRGVwdGggPyBtU3dhcENoYWlu
LT5HZXREZXB0aEJ1ZmZlckludGVybmFsRm9ybWF0KCkgOiBtU3dhcENoYWluLT5HZXRSZW5kZXJU
YXJnZXRJbnRlcm5hbEZvcm1hdCgpKTsKIH0KIAogR0xzaXplaSBTdXJmYWNlUmVuZGVyVGFyZ2V0
OTo6Z2V0U2FtcGxlcygpIGNvbnN0CkBAIC0xMjAsMTEgKzEzOSwyMSBAQAogICAgIHJldHVybiAw
OwogfQogCi1JRGlyZWN0M0RTdXJmYWNlOSAqU3VyZmFjZVJlbmRlclRhcmdldDk6OmdldFN1cmZh
Y2UoKQorSURpcmVjdDNEU3VyZmFjZTkgKlN1cmZhY2VSZW5kZXJUYXJnZXQ5OjpnZXRTdXJmYWNl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gKG1EZXB0aCA/IG1Td2FwQ2hhaW4tPmdldERlcHRoU3Rl
bmNpbCgpIDogbVN3YXBDaGFpbi0+Z2V0UmVuZGVyVGFyZ2V0KCkpOwogfQogCitJRGlyZWN0M0RC
YXNlVGV4dHVyZTkgKlN1cmZhY2VSZW5kZXJUYXJnZXQ5OjpnZXRUZXh0dXJlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gKG1EZXB0aCA/IG51bGxwdHIgOiBtU3dhcENoYWluLT5nZXRPZmZzY3JlZW5U
ZXh0dXJlKCkpOworfQorCitzaXplX3QgU3VyZmFjZVJlbmRlclRhcmdldDk6OmdldFRleHR1cmVM
ZXZlbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDA7Cit9CisKIEQzREZPUk1BVCBTdXJmYWNlUmVu
ZGVyVGFyZ2V0OTo6Z2V0RDNERm9ybWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gZDNkOTo6R2V0
VGV4dHVyZUZvcm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXQoKSkudGV4Rm9ybWF0OwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Jl
bmRlclRhcmdldDkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5oCShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvUmVuZGVyVGFyZ2V0OS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiwxMiBAQAog
ICBwdWJsaWM6CiAgICAgUmVuZGVyVGFyZ2V0OSgpIHsgfQogICAgIHZpcnR1YWwgflJlbmRlclRh
cmdldDkoKSB7IH0KKyAgICAvLyBSZXRyaWV2ZSB0aGUgdGV4dHVyZSB0aGF0IGJhY2tzIHRoaXMg
cmVuZGVyIHRhcmdldCwgbWF5IGJlIG51bGwgZm9yIHN3YXAgY2hhaW4gcmVuZGVyCisgICAgLy8g
dGFyZ2V0cy4KKyAgICB2aXJ0dWFsIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqZ2V0VGV4dHVyZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHNpemVfdCBnZXRUZXh0dXJlTGV2ZWwoKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRTdXJmYWNlKCkgPSAwOwor
ICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFN1cmZhY2UoKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIEQzREZPUk1BVCBnZXREM0RGb3JtYXQoKSBjb25zdCA9IDA7CiB9OwpAQCAt
MzEsNyArMzUsMTMgQEAKIGNsYXNzIFRleHR1cmVSZW5kZXJUYXJnZXQ5IDogcHVibGljIFJlbmRl
clRhcmdldDkKIHsKICAgcHVibGljOgotICAgIFRleHR1cmVSZW5kZXJUYXJnZXQ5KElEaXJlY3Qz
RFN1cmZhY2U5ICpzdXJmYWNlLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLAorICAgIFRleHR1cmVSZW5kZXJUYXJnZXQ5
KElEaXJlY3QzREJhc2VUZXh0dXJlOSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgdGV4dHVyZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgIElEaXJlY3Qz
RFN1cmZhY2U5ICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
YW1wbGVzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlUmVuZGVyVGFyZ2V0OSgpOwogCkBAIC00MSw3
ICs1MSw5IEBACiAgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgR0xzaXplaSBnZXRTYW1wbGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBJRGlyZWN0
M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpIG92ZXJyaWRlOworICAgIElEaXJlY3QzREJhc2VUZXh0
dXJlOSAqZ2V0VGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHNpemVfdCBnZXRUZXh0dXJl
TGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0
IG92ZXJyaWRlOwogCkBAIC01Myw2ICs2NSw4IEBACiAgICAgRDNERk9STUFUIG1EM0RGb3JtYXQ7
CiAgICAgR0xzaXplaSBtU2FtcGxlczsKIAorICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqbVRl
eHR1cmU7CisgICAgc2l6ZV90IG1UZXh0dXJlTGV2ZWw7CiAgICAgSURpcmVjdDNEU3VyZmFjZTkg
Km1SZW5kZXJUYXJnZXQ7CiB9OwogCkBAIC02OCw3ICs4Miw5IEBACiAgICAgR0xlbnVtIGdldElu
dGVybmFsRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgR0xzaXplaSBnZXRTYW1wbGVzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpIG92
ZXJyaWRlOworICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqZ2V0VGV4dHVyZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHNpemVfdCBnZXRUZXh0dXJlTGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0U3VyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
RDNERk9STUFUIGdldEQzREZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRl
cmVyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsNTAgKzgsNTAgQEAKIAogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5oIgogCisjaW5jbHVkZSA8c3N0cmVh
bT4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L0J1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9mZWF0dXJlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1
ZmZlckF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvU3RhdGUuaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvVGV4dHVy
ZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9mZWF0dXJlcy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvUHJvZ3JhbUQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5k
ZXJidWZmZXJEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNE
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oIgotI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1GZWVkYmFja0QzRC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvQnVmZmVyOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ZlbmNlOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1h
dHV0aWxzOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVm
ZmVyOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdlOS5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlclRhcmdldDkuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJFeGVjdXRhYmxlOS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhBcnJheTkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCi0KKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvQ29tcGlsZXJEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
RGV2aWNlRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVy
RDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJidWZmZXJEM0QuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1N1cmZhY2VEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
VGV4dHVyZUQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UcmFuc2Zvcm1G
ZWVkYmFja0QzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvU3VyZmFjZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1RleHR1cmUuaCIKICNpbmNsdWRl
ICJ0aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgogCi0jaW5jbHVkZSA8c3N0
cmVhbT4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CiAKLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+
CiAKICNpZiAhZGVmaW5lZChBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZFTCkKICNkZWZp
bmUgQU5HTEVfQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwgRDNEQ09NUElMRV9PUFRJTUlaQVRJ
T05fTEVWRUwzCkBAIC03NywxMiArNzcsOCBAQAogICAgIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
X1ZURl9TTTMgPSA0CiB9OwogCi1SZW5kZXJlcjk6OlJlbmRlcmVyOShlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkpCi0gICAgOiBSZW5kZXJlckQzRChkaXNwbGF5KQorUmVuZGVyZXI5OjpSZW5kZXJlcjko
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSA6IFJlbmRlcmVyRDNEKGRpc3BsYXkpLCBtU3RhdGVNYW5h
Z2VyKHRoaXMpCiB7Ci0gICAgLy8gSW5pdGlhbGl6ZSBnbG9iYWwgYW5ub3RhdG9yCi0gICAgZ2w6
OkluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKCZtQW5ub3RhdG9yKTsKLQogICAgIG1EM2Q5TW9k
dWxlID0gTlVMTDsKIAogICAgIG1EM2Q5ID0gTlVMTDsKQEAgLTk1LDggKzkxLDggQEAKICAgICBt
QWRhcHRlciA9IEQzREFEQVBURVJfREVGQVVMVDsKIAogICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJ1dGVzID0gZGlzcGxheS0+Z2V0QXR0cmlidXRlTWFwKCk7Ci0gICAgRUdMaW50
IHJlcXVlc3RlZERldmljZVR5cGUgPSBhdHRyaWJ1dGVzLmdldChFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUp
OworICAgIEVHTGludCByZXF1ZXN0ZWREZXZpY2VUeXBlID0gc3RhdGljX2Nhc3Q8RUdMaW50Pihh
dHRyaWJ1dGVzLmdldCgKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FO
R0xFLCBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpKTsKICAg
ICBzd2l0Y2ggKHJlcXVlc3RlZERldmljZVR5cGUpCiAgICAgewogICAgICAgY2FzZSBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEU6CkBAIC0xMzQsNiArMTMwLDEw
IEBACiAgICAgbUFwcGxpZWRWZXJ0ZXhTaGFkZXIgPSBOVUxMOwogICAgIG1BcHBsaWVkUGl4ZWxT
aGFkZXIgPSBOVUxMOwogICAgIG1BcHBsaWVkUHJvZ3JhbVNlcmlhbCA9IDA7CisKKyAgICBpbml0
aWFsaXplRGVidWdBbm5vdGF0b3IoKTsKKworICAgIG1FR0xEZXZpY2UgPSBudWxscHRyOwogfQog
CiBSZW5kZXJlcjk6On5SZW5kZXJlcjkoKQpAQCAtMTQ4LDE2ICsxNDgsMTcgQEAKICAgICB9CiAK
ICAgICByZWxlYXNlKCk7Ci0KLSAgICBnbDo6VW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygp
OwogfQogCiB2b2lkIFJlbmRlcmVyOTo6cmVsZWFzZSgpCiB7CiAgICAgUmVuZGVyZXJEM0Q6OmNs
ZWFudXAoKTsKIAorICAgIG1UcmFuc2xhdGVkQXR0cmliQ2FjaGUuY2xlYXIoKTsKKwogICAgIHJl
bGVhc2VEZXZpY2VSZXNvdXJjZXMoKTsKIAorICAgIFNhZmVEZWxldGUobUVHTERldmljZSk7CiAg
ICAgU2FmZVJlbGVhc2UobURldmljZSk7CiAgICAgU2FmZVJlbGVhc2UobURldmljZUV4KTsKICAg
ICBTYWZlUmVsZWFzZShtRDNkOSk7CkBAIC0xNzYsMTMgKzE3Nyw2IEBACiAKIGVnbDo6RXJyb3Ig
UmVuZGVyZXI5Ojppbml0aWFsaXplKCkKIHsKLSAgICBpZiAoIW1Db21waWxlci5pbml0aWFsaXpl
KCkpCi0gICAgewotICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVE
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBEM0Q5X0lOSVRfQ09NUElMRVJfRVJST1IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJDb21waWxlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4i
KTsKLSAgICB9Ci0KICAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJHZXRNb2R1bGVIYW5k
bGVfZDNkOSIpOwogICAgIG1EM2Q5TW9kdWxlID0gR2V0TW9kdWxlSGFuZGxlKFRFWFQoImQzZDku
ZGxsIikpOwogCkBAIC0zNTQsMTQgKzM0OCwxMSBAQAogCiAgICAgY29uc3QgZ2w6OkNhcHMgJnJl
bmRlcmVyQ2FwcyA9IGdldFJlbmRlcmVyQ2FwcygpOwogCi0gICAgbUZvcmNlU2V0VmVydGV4U2Ft
cGxlclN0YXRlcy5yZXNpemUocmVuZGVyZXJDYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRz
KTsKICAgICBtQ3VyVmVydGV4U2FtcGxlclN0YXRlcy5yZXNpemUocmVuZGVyZXJDYXBzLm1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLQotICAgIG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRl
cy5yZXNpemUocmVuZGVyZXJDYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKICAgICBtQ3VyUGl4
ZWxTYW1wbGVyU3RhdGVzLnJlc2l6ZShyZW5kZXJlckNhcHMubWF4VGV4dHVyZUltYWdlVW5pdHMp
OwogCi0gICAgbUN1clZlcnRleFRleHR1cmVTZXJpYWxzLnJlc2l6ZShyZW5kZXJlckNhcHMubWF4
VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwotICAgIG1DdXJQaXhlbFRleHR1cmVTZXJpYWxzLnJl
c2l6ZShyZW5kZXJlckNhcHMubWF4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIG1DdXJWZXJ0ZXhU
ZXh0dXJlcy5yZXNpemUocmVuZGVyZXJDYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsK
KyAgICBtQ3VyUGl4ZWxUZXh0dXJlcy5yZXNpemUocmVuZGVyZXJDYXBzLm1heFRleHR1cmVJbWFn
ZVVuaXRzKTsKIAogICAgIG1hcmtBbGxTdGF0ZURpcnR5KCk7CiAKQEAgLTM3NCw2ICszNjUsOCBA
QAogICAgIEFTU0VSVCghbVZlcnRleERhdGFNYW5hZ2VyICYmICFtSW5kZXhEYXRhTWFuYWdlcik7
CiAgICAgbVZlcnRleERhdGFNYW5hZ2VyID0gbmV3IFZlcnRleERhdGFNYW5hZ2VyKHRoaXMpOwog
ICAgIG1JbmRleERhdGFNYW5hZ2VyID0gbmV3IEluZGV4RGF0YU1hbmFnZXIodGhpcywgZ2V0UmVu
ZGVyZXJDbGFzcygpKTsKKworICAgIG1UcmFuc2xhdGVkQXR0cmliQ2FjaGUucmVzaXplKGdldFJl
bmRlcmVyQ2FwcygpLm1heFZlcnRleEF0dHJpYnV0ZXMpOwogfQogCiBEM0RQUkVTRU5UX1BBUkFN
RVRFUlMgUmVuZGVyZXI5OjpnZXREZWZhdWx0UHJlc2VudFBhcmFtZXRlcnMoKQpAQCAtNTE4LDYg
KzUxMSwzMSBAQAogICAgIHJldHVybiBjb25maWdzOwogfQogCit2b2lkIFJlbmRlcmVyOTo6Z2Vu
ZXJhdGVEaXNwbGF5RXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNp
b25zKSBjb25zdAoreworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNz
ID0gdHJ1ZTsKKworICAgIGlmIChnZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSkKKyAgICB7CisgICAg
ICAgIG91dEV4dGVuc2lvbnMtPmQzZFNoYXJlSGFuZGxlQ2xpZW50QnVmZmVyICAgICA9IHRydWU7
CisgICAgICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhhbmRsZSA9
IHRydWU7CisgICAgfQorCisgICAgb3V0RXh0ZW5zaW9ucy0+cXVlcnlTdXJmYWNlUG9pbnRlciA9
IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+d2luZG93Rml4ZWRTaXplICAgICA9IHRydWU7Cisg
ICAgb3V0RXh0ZW5zaW9ucy0+cG9zdFN1YkJ1ZmZlciAgICAgICA9IHRydWU7CisgICAgb3V0RXh0
ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dCAgICAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+
ZGV2aWNlUXVlcnkgICAgICAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29u
dGV4dE5vRXJyb3IgPSB0cnVlOworCisgICAgb3V0RXh0ZW5zaW9ucy0+aW1hZ2UgICAgICAgICAg
ICAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+aW1hZ2VCYXNlICAgICAgICAgICA9IHRy
dWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+Z2xUZXh0dXJlMkRJbWFnZSAgICA9IHRydWU7CisgICAg
b3V0RXh0ZW5zaW9ucy0+Z2xSZW5kZXJidWZmZXJJbWFnZSA9IHRydWU7CisKKyAgICBvdXRFeHRl
bnNpb25zLT5mbGV4aWJsZVN1cmZhY2VDb21wYXRpYmlsaXR5ID0gdHJ1ZTsKK30KKwogdm9pZCBS
ZW5kZXJlcjk6OnN0YXJ0U2NlbmUoKQogewogICAgIGlmICghbVNjZW5lU3RhcnRlZCkKQEAgLTYw
Nyw3ICs2MjUsNyBAQAogICAgIHdoaWxlIChyZXN1bHQgPT0gU19GQUxTRSkKICAgICB7CiAgICAg
ICAgIC8vIEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gZG8gc29tZXRo
aW5nIHVzZWZ1bCBmaXJzdAotICAgICAgICBTbGVlcCgwKTsKKyAgICAgICAgU2NoZWR1bGVZaWVs
ZCgpOwogCiAgICAgICAgIHJlc3VsdCA9IHF1ZXJ5LT5HZXREYXRhKE5VTEwsIDAsIEQzREdFVERB
VEFfRkxVU0gpOwogCkBAIC02MzcsMTUgKzY1NSwxOSBAQAogICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOwogfQogCi1ib29sIFJlbmRlcmVyOTo6c2hvdWxkQ3JlYXRlQ2hpbGRXaW5k
b3dGb3JTdXJmYWNlKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAorU3dhcENoYWlu
RDNEICpSZW5kZXJlcjk6OmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3cgbmF0aXZlV2luZG93
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVI
YW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBi
YWNrQnVmZmVyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikKIHsKLSAgICAvLyBEM0Q5IG5ldmVyIG5l
ZWRzIHRvIGNyZWF0ZSBjaGlsZCB3aW5kb3dzCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBuZXcgU3dhcENoYWluOSh0aGlzLCBuYXRpdmVXaW5kb3csIHNoYXJlSGFuZGxlLCBiYWNrQnVm
ZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
b3JpZW50YXRpb24pOwogfQogCi1Td2FwQ2hhaW5EM0QgKlJlbmRlcmVyOTo6Y3JlYXRlU3dhcENo
YWluKE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xlbnVt
IGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKK0NvbXBpbGVySW1w
bCAqUmVuZGVyZXI5OjpjcmVhdGVDb21waWxlcigpCiB7Ci0gICAgcmV0dXJuIG5ldyBTd2FwQ2hh
aW45KHRoaXMsIG5hdGl2ZVdpbmRvdywgc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRl
cHRoQnVmZmVyRm9ybWF0KTsKKyAgICByZXR1cm4gbmV3IENvbXBpbGVyRDNEKFNIX0hMU0xfM18w
X09VVFBVVCk7CiB9CiAKIHZvaWQgKlJlbmRlcmVyOTo6Z2V0RDNERGV2aWNlKCkKQEAgLTcyMiw5
ICs3NDQsOSBAQAogICAgIHJldHVybiBuZXcgQnVmZmVyOSh0aGlzKTsKIH0KIAotVmVydGV4QXJy
YXlJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVZlcnRleEFycmF5KCkKK1ZlcnRleEFycmF5SW1wbCAq
UmVuZGVyZXI5OjpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEg
JmRhdGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheTkodGhpcyk7CisgICAgcmV0dXJu
IG5ldyBWZXJ0ZXhBcnJheTkoZGF0YSk7CiB9CiAKIFF1ZXJ5SW1wbCAqUmVuZGVyZXI5OjpjcmVh
dGVRdWVyeShHTGVudW0gdHlwZSkKQEAgLTc0OSw2ICs3NzEsMTMgQEAKICAgICByZXR1cm4gbmV3
IFRyYW5zZm9ybUZlZWRiYWNrRDNEKCk7CiB9CiAKK1N0cmVhbUltcGwgKlJlbmRlcmVyOTo6Y3Jl
YXRlU3RyZWFtKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIC8vIFN0
cmVhbXMgYXJlIG5vdCBzdXBwb3J0ZWQgdW5kZXIgRDNEOQorICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgUmVuZGVyZXI5OjpzdXBwb3J0c0Zhc3RDb3B5
QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3QKIHsKICAgICAvLyBQ
aXhlbCBidWZmZXIgb2JqZWN0cyBhcmUgbm90IHN1cHBvcnRlZCBpbiBEM0Q5LCBzaW5jZSBEM0Q5
IGlzIEVTMi1vbmx5IGFuZCBQQk9zIGFyZSBFUzMuCkBAIC03NzIsNDYgKzgwMSw1MiBAQAogCiBn
bDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUs
IGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUg
JnNhbXBsZXJTdGF0ZSkKIHsKLSAgICBzdGQ6OnZlY3Rvcjxib29sPiAmZm9yY2VTZXRTYW1wbGVy
cyA9ICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKSA/IG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0
YXRlcyA6IG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXM7Ci0gICAgc3RkOjp2ZWN0b3I8Z2w6
OlNhbXBsZXJTdGF0ZT4gJmFwcGxpZWRTYW1wbGVycyA9ICh0eXBlID09IGdsOjpTQU1QTEVSX1BJ
WEVMKSA/IG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXM6IG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzOwor
ICAgIEN1clNhbXBsZXJTdGF0ZSAmYXBwbGllZFNhbXBsZXIgPSAodHlwZSA9PSBnbDo6U0FNUExF
Ul9QSVhFTCkgPyBtQ3VyUGl4ZWxTYW1wbGVyU3RhdGVzW2luZGV4XQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtQ3Vy
VmVydGV4U2FtcGxlclN0YXRlc1tpbmRleF07CiAKLSAgICBpZiAoZm9yY2VTZXRTYW1wbGVyc1tp
bmRleF0gfHwgbWVtY21wKCZzYW1wbGVyU3RhdGUsICZhcHBsaWVkU2FtcGxlcnNbaW5kZXhdLCBz
aXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSkpICE9IDApCisgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCB0
aGUgbGV2ZWwgb2Zmc2V0IGZvciBvdXIgdGlueSBjb21wcmVzc2VkIHRleHR1cmUgd29ya2Fyb3Vu
ZAorICAgIFRleHR1cmVEM0QgKnRleHR1cmVEM0QgPSBHZXRJbXBsQXM8VGV4dHVyZUQzRD4odGV4
dHVyZSk7CisKKyAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSA9IG51bGxwdHI7CisgICAgZ2w6
OkVycm9yIGVycm9yID0gdGV4dHVyZUQzRC0+Z2V0TmF0aXZlVGV4dHVyZSgmc3RvcmFnZSk7Cisg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIGludCBkM2RTYW1wbGVyT2Zm
c2V0ID0gKHR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwpID8gMCA6IEQzRFZFUlRFWFRFWFRVUkVT
QU1QTEVSMDsKLSAgICAgICAgaW50IGQzZFNhbXBsZXIgPSBpbmRleCArIGQzZFNhbXBsZXJPZmZz
ZXQ7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAKLSAgICAgICAgLy8gTWFrZSBzdXJl
IHRvIGFkZCB0aGUgbGV2ZWwgb2Zmc2V0IGZvciBvdXIgdGlueSBjb21wcmVzc2VkIHRleHR1cmUg
d29ya2Fyb3VuZAotICAgICAgICBUZXh0dXJlRDNEICp0ZXh0dXJlRDNEID0gR2V0SW1wbEFzPFRl
eHR1cmVEM0Q+KHRleHR1cmUpOworICAgIC8vIFN0b3JhZ2Ugc2hvdWxkIGV4aXN0LCB0ZXh0dXJl
IHNob3VsZCBiZSBjb21wbGV0ZQorICAgIEFTU0VSVChzdG9yYWdlKTsKIAotICAgICAgICBUZXh0
dXJlU3RvcmFnZSAqc3RvcmFnZSA9IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9
IHRleHR1cmVEM0QtPmdldE5hdGl2ZVRleHR1cmUoJnN0b3JhZ2UpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
ICAgIH0KKyAgICBEV09SRCBiYXNlTGV2ZWwgPSB0ZXh0dXJlLT5nZXRCYXNlTGV2ZWwoKSArIHN0
b3JhZ2UtPmdldFRvcExldmVsKCk7CiAKLSAgICAgICAgLy8gU3RvcmFnZSBzaG91bGQgZXhpc3Qs
IHRleHR1cmUgc2hvdWxkIGJlIGNvbXBsZXRlCi0gICAgICAgIEFTU0VSVChzdG9yYWdlKTsKKyAg
ICBpZiAoYXBwbGllZFNhbXBsZXIuZm9yY2VTZXQgfHwgYXBwbGllZFNhbXBsZXIuYmFzZUxldmVs
ICE9IGJhc2VMZXZlbCB8fAorICAgICAgICBtZW1jbXAoJnNhbXBsZXJTdGF0ZSwgJmFwcGxpZWRT
YW1wbGVyLCBzaXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSkpICE9IDApCisgICAgeworICAgICAgICBp
bnQgZDNkU2FtcGxlck9mZnNldCA9ICh0eXBlID09IGdsOjpTQU1QTEVSX1BJWEVMKSA/IDAgOiBE
M0RWRVJURVhURVhUVVJFU0FNUExFUjA7CisgICAgICAgIGludCBkM2RTYW1wbGVyID0gaW5kZXgg
KyBkM2RTYW1wbGVyT2Zmc2V0OwogCi0gICAgICAgIERXT1JEIGJhc2VMZXZlbCA9IHNhbXBsZXJT
dGF0ZS5iYXNlTGV2ZWwgKyBzdG9yYWdlLT5nZXRUb3BMZXZlbCgpOwotCiAgICAgICAgIG1EZXZp
Y2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX0FERFJFU1NVLCBnbF9kM2Q5
OjpDb252ZXJ0VGV4dHVyZVdyYXAoc2FtcGxlclN0YXRlLndyYXBTKSk7CiAgICAgICAgIG1EZXZp
Y2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RTQU1QX0FERFJFU1NWLCBnbF9kM2Q5
OjpDb252ZXJ0VGV4dHVyZVdyYXAoc2FtcGxlclN0YXRlLndyYXBUKSk7CiAKICAgICAgICAgbURl
dmljZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUFHRklMVEVSLCBnbF9k
M2Q5OjpDb252ZXJ0TWFnRmlsdGVyKHNhbXBsZXJTdGF0ZS5tYWdGaWx0ZXIsIHNhbXBsZXJTdGF0
ZS5tYXhBbmlzb3Ryb3B5KSk7CisKICAgICAgICAgRDNEVEVYVFVSRUZJTFRFUlRZUEUgZDNkTWlu
RmlsdGVyLCBkM2RNaXBGaWx0ZXI7Ci0gICAgICAgIGdsX2QzZDk6OkNvbnZlcnRNaW5GaWx0ZXIo
c2FtcGxlclN0YXRlLm1pbkZpbHRlciwgJmQzZE1pbkZpbHRlciwgJmQzZE1pcEZpbHRlciwgc2Ft
cGxlclN0YXRlLm1heEFuaXNvdHJvcHkpOworICAgICAgICBmbG9hdCBsb2RCaWFzOworICAgICAg
ICBnbF9kM2Q5OjpDb252ZXJ0TWluRmlsdGVyKHNhbXBsZXJTdGF0ZS5taW5GaWx0ZXIsICZkM2RN
aW5GaWx0ZXIsICZkM2RNaXBGaWx0ZXIsICZsb2RCaWFzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNhbXBsZXJTdGF0ZS5tYXhBbmlzb3Ryb3B5LCBiYXNlTGV2ZWwpOwogICAg
ICAgICBtRGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoZDNkU2FtcGxlciwgRDNEU0FNUF9NSU5GSUxU
RVIsIGQzZE1pbkZpbHRlcik7CiAgICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RT
YW1wbGVyLCBEM0RTQU1QX01JUEZJTFRFUiwgZDNkTWlwRmlsdGVyKTsKICAgICAgICAgbURldmlj
ZS0+U2V0U2FtcGxlclN0YXRlKGQzZFNhbXBsZXIsIEQzRFNBTVBfTUFYTUlQTEVWRUwsIGJhc2VM
ZXZlbCk7CisgICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVyLCBEM0RT
QU1QX01JUE1BUExPREJJQVMsIHN0YXRpY19jYXN0PERXT1JEPihsb2RCaWFzKSk7CiAgICAgICAg
IGlmIChnZXRSZW5kZXJlckV4dGVuc2lvbnMoKS50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1EZXZpY2UtPlNldFNhbXBsZXJTdGF0ZShkM2RTYW1wbGVy
LCBEM0RTQU1QX01BWEFOSVNPVFJPUFksIChEV09SRClzYW1wbGVyU3RhdGUubWF4QW5pc290cm9w
eSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3JjZVNldFNhbXBsZXJzW2luZGV4XSA9IGZh
bHNlOwotICAgIGFwcGxpZWRTYW1wbGVyc1tpbmRleF0gPSBzYW1wbGVyU3RhdGU7CisgICAgYXBw
bGllZFNhbXBsZXIuZm9yY2VTZXQgPSBmYWxzZTsKKyAgICBhcHBsaWVkU2FtcGxlci5zYW1wbGVy
U3RhdGUgPSBzYW1wbGVyU3RhdGU7CisgICAgYXBwbGllZFNhbXBsZXIuYmFzZUxldmVsID0gYmFz
ZUxldmVsOwogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CkBAIC04MjEs
MTAgKzg1Niw5IEBACiAgICAgaW50IGQzZFNhbXBsZXJPZmZzZXQgPSAodHlwZSA9PSBnbDo6U0FN
UExFUl9QSVhFTCkgPyAwIDogRDNEVkVSVEVYVEVYVFVSRVNBTVBMRVIwOwogICAgIGludCBkM2RT
YW1wbGVyID0gaW5kZXggKyBkM2RTYW1wbGVyT2Zmc2V0OwogICAgIElEaXJlY3QzREJhc2VUZXh0
dXJlOSAqZDNkVGV4dHVyZSA9IE5VTEw7Ci0gICAgdW5zaWduZWQgaW50IHNlcmlhbCA9IDA7CiAg
ICAgYm9vbCBmb3JjZVNldFRleHR1cmUgPSBmYWxzZTsKIAotICAgIHN0ZDo6dmVjdG9yPHVuc2ln
bmVkIGludD4gJmFwcGxpZWRTZXJpYWxzID0gKHR5cGUgPT0gZ2w6OlNBTVBMRVJfUElYRUwpID8g
bUN1clBpeGVsVGV4dHVyZVNlcmlhbHMgOiBtQ3VyVmVydGV4VGV4dHVyZVNlcmlhbHM7CisgICAg
c3RkOjp2ZWN0b3I8dWludHB0cl90PiAmYXBwbGllZFRleHR1cmVzID0gKHR5cGUgPT0gZ2w6OlNB
TVBMRVJfUElYRUwpID8gbUN1clBpeGVsVGV4dHVyZXMgOiBtQ3VyVmVydGV4VGV4dHVyZXM7CiAK
ICAgICBpZiAodGV4dHVyZSkKICAgICB7CkBAIC04NTEsMzcyICs4ODUsOTkgQEAKICAgICAgICAg
Ly8gaW4gdGhlIHRleHR1cmUgY2xhc3MgYW5kIHdlJ3JlIHVuZXhwZWN0ZWRseSBtaXNzaW5nIHRo
ZSBkM2QgdGV4dHVyZQogICAgICAgICBBU1NFUlQoZDNkVGV4dHVyZSAhPSBOVUxMKTsKIAotICAg
ICAgICBzZXJpYWwgPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU2VyaWFsKCk7CiAgICAgICAgIGZvcmNl
U2V0VGV4dHVyZSA9IHRleHR1cmVJbXBsLT5oYXNEaXJ0eUltYWdlcygpOwogICAgICAgICB0ZXh0
dXJlSW1wbC0+cmVzZXREaXJ0eSgpOwogICAgIH0KIAotICAgIGlmIChmb3JjZVNldFRleHR1cmUg
fHwgYXBwbGllZFNlcmlhbHNbaW5kZXhdICE9IHNlcmlhbCkKKyAgICBpZiAoZm9yY2VTZXRUZXh0
dXJlIHx8IGFwcGxpZWRUZXh0dXJlc1tpbmRleF0gIT0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KGQzZFRleHR1cmUpKQogICAgIHsKICAgICAgICAgbURldmljZS0+U2V0VGV4dHVyZShkM2RT
YW1wbGVyLCBkM2RUZXh0dXJlKTsKICAgICB9CiAKLSAgICBhcHBsaWVkU2VyaWFsc1tpbmRleF0g
PSBzZXJpYWw7CisgICAgYXBwbGllZFRleHR1cmVzW2luZGV4XSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihkM2RUZXh0dXJlKTsKIAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBn
bDo6RGF0YSAmLypkYXRhKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAvKnZlcnRleFVuaWZvcm1CdWZmZXJzKi9bXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50IC8qZnJhZ21lbnRVbmlmb3JtQnVm
ZmVycyovW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxHTGludD4gJi8qdmVydGV4VW5pZm9ybUJ1ZmZlcnMqLywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmLypm
cmFnbWVudFVuaWZvcm1CdWZmZXJzKi8pCiB7CiAgICAgLy8gTm8gZWZmZWN0IGluIEVTMi9EM0Q5
CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5k
ZXJlcjk6OnNldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0
ZXJTdGF0ZSkKK3ZvaWQgUmVuZGVyZXI5OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmJpdG1hc2spCiB7Ci0gICAgYm9vbCByYXN0
ZXJTdGF0ZUNoYW5nZWQgPSBtRm9yY2VTZXRSYXN0ZXJTdGF0ZSB8fCBtZW1jbXAoJnJhc3RlclN0
YXRlLCAmbUN1clJhc3RlclN0YXRlLCBzaXplb2YoZ2w6OlJhc3Rlcml6ZXJTdGF0ZSkpICE9IDA7
Ci0KLSAgICBpZiAocmFzdGVyU3RhdGVDaGFuZ2VkKQotICAgIHsKLSAgICAgICAgLy8gU2V0IHRo
ZSBjdWxsIG1vZGUKLSAgICAgICAgaWYgKHJhc3RlclN0YXRlLmN1bGxGYWNlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DVUxMTU9ERSwgZ2xf
ZDNkOTo6Q29udmVydEN1bGxNb2RlKHJhc3RlclN0YXRlLmN1bGxNb2RlLCByYXN0ZXJTdGF0ZS5m
cm9udEZhY2UpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0NVTExNT0RFLCBEM0RDVUxMX05PTkUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJhc3RlclN0YXRlLnBvbHlnb25PZmZzZXRGaWxs
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUN1ckRlcHRoU2l6ZSA+IDApCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0xP
UEVTQ0FMRURFUFRIQklBUywgKihEV09SRCopJnJhc3RlclN0YXRlLnBvbHlnb25PZmZzZXRGYWN0
b3IpOwotCi0gICAgICAgICAgICAgICAgZmxvYXQgZGVwdGhCaWFzID0gbGRleHAocmFzdGVyU3Rh
dGUucG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8aW50PihtQ3VyRGVwdGhTaXplKSk7
Ci0gICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVQVEhCSUFT
LCAqKERXT1JEKikmZGVwdGhCaWFzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX1NMT1BFU0NBTEVERVBUSEJJQVMsIDApOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfREVQVEhCSUFTLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1DdXJS
YXN0ZXJTdGF0ZSA9IHJhc3RlclN0YXRlOwotICAgIH0KLQotICAgIG1Gb3JjZVNldFJhc3RlclN0
YXRlID0gZmFsc2U7Ci0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBt
U3RhdGVNYW5hZ2VyLnN5bmNTdGF0ZShzdGF0ZSwgYml0bWFzayk7CiB9CiAKLWdsOjpFcnJvciBS
ZW5kZXJlcjk6OnNldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
ciwgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNvbnN0IGdsOjpDb2xvckYgJmJs
ZW5kQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBzYW1wbGVNYXNrKQorZ2w6OkVycm9yIFJlbmRlcmVyOTo6dXBkYXRlU3RhdGUoY29uc3QgZ2w6
OkRhdGEgJmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKIHsKLSAgICBib29sIGJsZW5kU3RhdGVDaGFu
Z2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBtZW1jbXAoJmJsZW5kU3RhdGUsICZtQ3VyQmxl
bmRTdGF0ZSwgc2l6ZW9mKGdsOjpCbGVuZFN0YXRlKSkgIT0gMDsKLSAgICBib29sIGJsZW5kQ29s
b3JDaGFuZ2VkID0gbUZvcmNlU2V0QmxlbmRTdGF0ZSB8fCBtZW1jbXAoJmJsZW5kQ29sb3IsICZt
Q3VyQmxlbmRDb2xvciwgc2l6ZW9mKGdsOjpDb2xvckYpKSAhPSAwOwotICAgIGJvb2wgc2FtcGxl
TWFza0NoYW5nZWQgPSBtRm9yY2VTZXRCbGVuZFN0YXRlIHx8IHNhbXBsZU1hc2sgIT0gbUN1clNh
bXBsZU1hc2s7CisgICAgLy8gQXBwbGllcyB0aGUgcmVuZGVyIHRhcmdldCBzdXJmYWNlLCBkZXB0
aCBzdGVuY2lsIHN1cmZhY2UsIHZpZXdwb3J0IHJlY3RhbmdsZSBhbmQKKyAgICAvLyBzY2lzc29y
IHJlY3RhbmdsZSB0byB0aGUgcmVuZGVyZXIKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZy
YW1lYnVmZmVyT2JqZWN0ID0gZGF0YS5zdGF0ZS0+Z2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAg
QVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0ICYmIGZyYW1lYnVmZmVyT2JqZWN0LT5jaGVja1N0YXR1
cyhkYXRhKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CiAKLSAgICBpZiAoYmxlbmRTdGF0
ZUNoYW5nZWQgfHwgYmxlbmRDb2xvckNoYW5nZWQpCisgICAgZ2w6OkVycm9yIGVycm9yID0gYXBw
bHlSZW5kZXJUYXJnZXQoZnJhbWVidWZmZXJPYmplY3QpOworICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgewotICAgICAgICBpZiAoYmxlbmRTdGF0ZS5ibGVuZCkKLSAgICAgICAgewotICAg
ICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJMRSwg
VFJVRSk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAKLSAgICAgICAgICAgIGlmIChi
bGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX0NPTlNUQU5UX0FMUEhBICYmIGJsZW5kU3Rh
dGUuc291cmNlQmxlbmRSR0IgIT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBICYmCi0gICAg
ICAgICAgICAgICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xfQ09OU1RBTlRfQUxQSEEg
JiYgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhB
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRl
KEQzRFJTX0JMRU5ERkFDVE9SLCBnbF9kM2Q5OjpDb252ZXJ0Q29sb3IoYmxlbmRDb2xvcikpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0JMRU5ERkFDVE9SLCBEM0RDT0xP
Ul9SR0JBKGdsOjp1bm9ybTw4PihibGVuZENvbG9yLmFscGhhKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bDo6dW5vcm08OD4oYmxlbmRDb2xvci5hbHBoYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OnVub3Jt
PDg+KGJsZW5kQ29sb3IuYWxwaGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjp1bm9ybTw4PihibGVu
ZENvbG9yLmFscGhhKSkpOwotICAgICAgICAgICAgfQorICAgIC8vIFNldHRpbmcgdmlld3BvcnQg
c3RhdGUKKyAgICBzZXRWaWV3cG9ydChkYXRhLmNhcHMsIGRhdGEuc3RhdGUtPmdldFZpZXdwb3J0
KCksIGRhdGEuc3RhdGUtPmdldE5lYXJQbGFuZSgpLAorICAgICAgICAgICAgICAgIGRhdGEuc3Rh
dGUtPmdldEZhclBsYW5lKCksIGRyYXdNb2RlLCBkYXRhLnN0YXRlLT5nZXRSYXN0ZXJpemVyU3Rh
dGUoKS5mcm9udEZhY2UsCisgICAgICAgICAgICAgICAgZmFsc2UpOwogCi0gICAgICAgICAgICBt
RGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVORCwgZ2xfZDNkOTo6Q29udmVydEJs
ZW5kRnVuYyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCKSk7Ci0gICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVNUQkxFTkQsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1
bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IpKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX0JMRU5ET1AsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZE9wKGJsZW5kU3Rh
dGUuYmxlbmRFcXVhdGlvblJHQikpOworICAgIC8vIFNldHRpbmcgc2Npc3NvcnMgc3RhdGUKKyAg
ICBzZXRTY2lzc29yUmVjdGFuZ2xlKGRhdGEuc3RhdGUtPmdldFNjaXNzb3IoKSwgZGF0YS5zdGF0
ZS0+aXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7CiAKLSAgICAgICAgICAgIGlmIChibGVuZFN0YXRl
LnNvdXJjZUJsZW5kUkdCICE9IGJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSB8fAotICAgICAg
ICAgICAgICAgIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCICE9IGJsZW5kU3RhdGUuZGVzdEJsZW5k
QWxwaGEgfHwKLSAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgIT0g
YmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQQVJBVEVBTFBIQUJMRU5ERU5B
QkxFLCBUUlVFKTsKKyAgICAvLyBTZXR0aW5nIGJsZW5kLCBkZXB0aCBzdGVuY2lsLCBhbmQgcmFz
dGVyaXplciBzdGF0ZXMKKyAgICBpbnQgc2FtcGxlcyAgICAgICAgICAgICAgICAgICAgPSBmcmFt
ZWJ1ZmZlck9iamVjdC0+Z2V0U2FtcGxlcyhkYXRhKTsKKyAgICBnbDo6UmFzdGVyaXplclN0YXRl
IHJhc3Rlcml6ZXIgPSBkYXRhLnN0YXRlLT5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKKyAgICByYXN0
ZXJpemVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xfUE9JTlRTKTsKKyAg
ICByYXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAhPSAwKTsKIAotICAg
ICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NSQ0JMRU5EQUxQSEEs
IGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhKSk7
Ci0gICAgICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5E
QUxQSEEsIGdsX2QzZDk6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBo
YSkpOwotICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0JMRU5E
T1BBTFBIQSwgZ2xfZDNkOTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9u
QWxwaGEpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TRVBBUkFURUFM
UEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQz
RFJTX0FMUEhBQkxFTkRFTkFCTEUsIEZBTFNFKTsKLSAgICAgICAgfQorICAgIHVuc2lnbmVkIGlu
dCBtYXNrID0gR2V0QmxlbmRTYW1wbGVNYXNrKGRhdGEsIHNhbXBsZXMpOworICAgIGVycm9yICAg
ICAgICAgICAgID0gc2V0QmxlbmREZXB0aFJhc3RlclN0YXRlcyhkYXRhLCBtYXNrKTsKIAotICAg
ICAgICBpZiAoYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEZJWE1FKCJTYW1wbGUgYWxwaGEgdG8gY292ZXJhZ2UgaXMgdW5pbXBsZW1lbnRl
ZC4iKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmF0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpOwotICAg
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSBhdHRhY2htZW50ID8gYXR0YWNobWVudC0+Z2V0
SW50ZXJuYWxGb3JtYXQoKSA6IEdMX05PTkU7Ci0KLSAgICAgICAgLy8gU2V0IHRoZSBjb2xvciBt
YXNrCi0gICAgICAgIGJvb2wgemVyb0NvbG9yTWFza0FsbG93ZWQgPSBnZXRWZW5kb3JJZCgpICE9
IFZFTkRPUl9JRF9BTUQ7Ci0gICAgICAgIC8vIEFwcGFyZW50bHkgc29tZSBBVEkgY2FyZHMgaGF2
ZSBhIGJ1ZyB3aGVyZSBhIGRyYXcgd2l0aCBhIHplcm8gY29sb3IKLSAgICAgICAgLy8gd3JpdGUg
bWFzayBjYW4gY2F1c2UgbGF0ZXIgZHJhd3MgdG8gaGF2ZSBpbmNvcnJlY3QgcmVzdWx0cy4gSW5z
dGVhZCwKLSAgICAgICAgLy8gc2V0IGEgbm9uemVybyBjb2xvciB3cml0ZSBtYXNrIGJ1dCBtb2Rp
ZnkgdGhlIGJsZW5kIHN0YXRlIHNvIHRoYXQgbm8KLSAgICAgICAgLy8gZHJhd2luZyBpcyBkb25l
LgotICAgICAgICAvLyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vl
cy9kZXRhaWw/aWQ9MTY5Ci0KLSAgICAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3Jt
YXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7Ci0gICAg
ICAgIERXT1JEIGNvbG9yTWFzayA9IGdsX2QzZDk6OkNvbnZlcnRDb2xvck1hc2soZm9ybWF0SW5m
by5yZWRCaXRzICAgPiAwICYmIGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdEluZm8uZ3JlZW5C
aXRzID4gMCAmJiBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdEluZm8uYmx1ZUJpdHMgID4g
MCAmJiBibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwICYmIGJs
ZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpOwotICAgICAgICBpZiAoY29sb3JNYXNrID09IDAgJiYg
IXplcm9Db2xvck1hc2tBbGxvd2VkKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFbmFibGUg
Z3JlZW4gY2hhbm5lbCwgYnV0IHNldCBibGVuZGluZyBzbyBub3RoaW5nIHdpbGwgYmUgZHJhd24u
Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRFRU5B
QkxFLCBEM0RDT0xPUldSSVRFRU5BQkxFX0dSRUVOKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKEQzRFJTX0FMUEhBQkxFTkRFTkFCTEUsIFRSVUUpOwotCi0gICAgICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TUkNCTEVORCwgRDNEQkxFTkRfWkVSTyk7
Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19ERVNUQkxFTkQsIEQz
REJMRU5EX09ORSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19C
TEVORE9QLCBEM0RCTEVORE9QX0FERCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19DT0xPUldSSVRF
RU5BQkxFLCBjb2xvck1hc2spOwotICAgICAgICB9Ci0KLSAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfRElUSEVSRU5BQkxFLCBibGVuZFN0YXRlLmRpdGhlciA/IFRSVUUgOiBG
QUxTRSk7Ci0KLSAgICAgICAgbUN1ckJsZW5kU3RhdGUgPSBibGVuZFN0YXRlOwotICAgICAgICBt
Q3VyQmxlbmRDb2xvciA9IGJsZW5kQ29sb3I7Ci0gICAgfQotCi0gICAgaWYgKHNhbXBsZU1hc2tD
aGFuZ2VkKQorICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICAvLyBTZXQg
dGhlIG11bHRpc2FtcGxlIG1hc2sKLSAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfTVVMVElTQU1QTEVBTlRJQUxJQVMsIFRSVUUpOwotICAgICAgICBtRGV2aWNlLT5TZXRSZW5k
ZXJTdGF0ZShEM0RSU19NVUxUSVNBTVBMRU1BU0ssIHN0YXRpY19jYXN0PERXT1JEPihzYW1wbGVN
YXNrKSk7Ci0KLSAgICAgICAgbUN1clNhbXBsZU1hc2sgPSBzYW1wbGVNYXNrOworICAgICAgICBy
ZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgbUZvcmNlU2V0QmxlbmRTdGF0ZSA9IGZhbHNlOwor
ICAgIG1TdGF0ZU1hbmFnZXIucmVzZXREaXJ0eUJpdHMoKTsKIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBlcnJvcjsKIH0KIAotZ2w6OkVycm9yIFJlbmRl
cmVyOTo6c2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZk
ZXB0aFN0ZW5jaWxTdGF0ZSwgaW50IHN0ZW5jaWxSZWYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNlQ0NX
KQordm9pZCBSZW5kZXJlcjk6OnNldFNjaXNzb3JSZWN0YW5nbGUoY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc2Npc3NvciwgYm9vbCBlbmFibGVkKQogewotICAgIGJvb2wgZGVwdGhTdGVuY2lsU3RhdGVD
aGFuZ2VkID0gbUZvcmNlU2V0RGVwdGhTdGVuY2lsU3RhdGUgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lbWNtcCgmZGVwdGhTdGVuY2lsU3RhdGUsICZtQ3VyRGVwdGhT
dGVuY2lsU3RhdGUsIHNpemVvZihnbDo6RGVwdGhTdGVuY2lsU3RhdGUpKSAhPSAwOwotICAgIGJv
b2wgc3RlbmNpbFJlZkNoYW5nZWQgPSBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSB8fCBzdGVu
Y2lsUmVmICE9IG1DdXJTdGVuY2lsUmVmIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZW5jaWxCYWNrUmVmICE9IG1DdXJTdGVuY2lsQmFja1JlZjsKLSAgICBib29sIGZyb250RmFj
ZUNDV0NoYW5nZWQgPSBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSB8fCBmcm9udEZhY2VDQ1cg
IT0gbUN1ckZyb250RmFjZUNDVzsKLQotICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0ZUNoYW5nZWQp
Ci0gICAgewotICAgICAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhUZXN0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aRU5BQkxFLCBE
M0RaQl9UUlVFKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pG
VU5DLCBnbF9kM2Q5OjpDb252ZXJ0Q29tcGFyaXNvbihkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEZ1
bmMpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1E
ZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1pFTkFCTEUsIEQzRFpCX0ZBTFNFKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSA9IGRlcHRoU3RlbmNpbFN0YXRl
OwotICAgIH0KLQotICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0ZUNoYW5nZWQgfHwgc3RlbmNpbFJl
ZkNoYW5nZWQgfHwgZnJvbnRGYWNlQ0NXQ2hhbmdlZCkKLSAgICB7Ci0gICAgICAgIGlmIChkZXB0
aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsVGVzdCAmJiBtQ3VyU3RlbmNpbFNpemUgPiAwKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5B
QkxFLCBUUlVFKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1RX
T1NJREVEU1RFTkNJTE1PREUsIFRSVUUpOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogVW5zdXBw
b3J0ZWQgYnkgRDNEOQotICAgICAgICAgICAgY29uc3QgRDNEUkVOREVSU1RBVEVUWVBFIEQzRFJT
X0NDV19TVEVOQ0lMUkVGID0gRDNEUlNfU1RFTkNJTFJFRjsKLSAgICAgICAgICAgIGNvbnN0IEQz
RFJFTkRFUlNUQVRFVFlQRSBEM0RSU19DQ1dfU1RFTkNJTE1BU0sgPSBEM0RSU19TVEVOQ0lMTUFT
SzsKLSAgICAgICAgICAgIGNvbnN0IEQzRFJFTkRFUlNUQVRFVFlQRSBEM0RSU19DQ1dfU1RFTkNJ
TFdSSVRFTUFTSyA9IEQzRFJTX1NURU5DSUxXUklURU1BU0s7Ci0KLSAgICAgICAgICAgIEFTU0VS
VChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrID09IGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxCYWNrV3JpdGVtYXNrKTsKLSAgICAgICAgICAgIEFTU0VSVChzdGVuY2lsUmVmID09
IHN0ZW5jaWxCYWNrUmVmKTsKLSAgICAgICAgICAgIEFTU0VSVChkZXB0aFN0ZW5jaWxTdGF0ZS5z
dGVuY2lsTWFzayA9PSBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja01hc2spOwotCi0gICAg
ICAgICAgICAvLyBnZXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgc3RlbmNpbCByZWYKLSAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBtYXhTdGVuY2lsID0gKDEgPDwgbUN1clN0ZW5jaWxTaXplKSAt
IDE7Ci0KLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250RmFjZUNDVyA/
IEQzRFJTX1NURU5DSUxXUklURU1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5j
aWxXcml0ZW1hc2spOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRG
YWNlQ0NXID8gRDNEUlNfU1RFTkNJTEZVTkMgOiBEM0RSU19DQ1dfU1RFTkNJTEZVTkMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0Q29tcGFyaXNv
bihkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRnVuYykpOwotCi0gICAgICAgICAgICBtRGV2aWNl
LT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUkVGIDogRDNEUlNf
Q0NXX1NURU5DSUxSRUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rl
bmNpbFJlZiA8IChpbnQpbWF4U3RlbmNpbCkgPyBzdGVuY2lsUmVmIDogbWF4U3RlbmNpbCk7Ci0g
ICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19T
VEVOQ0lMTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lMTUFTSywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNrKTsKLQotICAgICAg
ICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJ
TEZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTEZBSUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxGYWlsKSk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZh
Y2VDQ1cgPyBEM0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpGQUlMLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxP
cChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFzc0RlcHRoRmFpbCkpOwotICAgICAgICAgICAg
bURldmljZS0+U2V0UmVuZGVyU3RhdGUoZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFBBU1Mg
OiBEM0RSU19DQ1dfU1RFTkNJTFBBU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbF9kM2Q5OjpDb252ZXJ0U3RlbmNpbE9wKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQ
YXNzRGVwdGhQYXNzKSk7Ci0KLSAgICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKCFm
cm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMV1JJVEVNQVNLIDogRDNEUlNfQ0NXX1NURU5DSUxX
UklURU1BU0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5j
aWxTdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayk7Ci0gICAgICAgICAgICBtRGV2aWNlLT5TZXRS
ZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTEZVTkMgOiBEM0RSU19DQ1df
U1RFTkNJTEZVTkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5
OjpDb252ZXJ0Q29tcGFyaXNvbihkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja0Z1bmMpKTsK
LQotICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQz
RFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJTFJFRiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzdGVuY2lsQmFja1JlZiA8IChpbnQpbWF4U3RlbmNpbCkgPyBz
dGVuY2lsQmFja1JlZiA6IG1heFN0ZW5jaWwpOwotICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxNQVNLIDogRDNEUlNfQ0NXX1NU
RU5DSUxNQVNLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVu
Y2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrKTsKLQotICAgICAgICAgICAgbURldmljZS0+U2V0UmVu
ZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxGQUlMIDogRDNEUlNfQ0NXX1NU
RU5DSUxGQUlMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6
Q29udmVydFN0ZW5jaWxPcChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja0ZhaWwpKTsKLSAg
ICAgICAgICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RSU19T
VEVOQ0lMWkZBSUwgOiBEM0RSU19DQ1dfU1RFTkNJTFpGQUlMLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydFN0ZW5jaWxPcChkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwpKTsKLSAgICAgICAgICAgIG1EZXZpY2UtPlNl
dFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0ND
V19TVEVOQ0lMUEFTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2Qz
ZDk6OkNvbnZlcnRTdGVuY2lsT3AoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVw
dGhQYXNzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBGQUxTRSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVF
TkFCTEUsIGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoTWFzayA/IFRSVUUgOiBGQUxTRSk7Ci0KLSAg
ICAgICAgbUN1clN0ZW5jaWxSZWYgPSBzdGVuY2lsUmVmOwotICAgICAgICBtQ3VyU3RlbmNpbEJh
Y2tSZWYgPSBzdGVuY2lsQmFja1JlZjsKLSAgICAgICAgbUN1ckZyb250RmFjZUNDVyA9IGZyb250
RmFjZUNDVzsKLSAgICB9Ci0KLSAgICBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSA9IGZhbHNl
OwotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgbVN0YXRlTWFuYWdl
ci5zZXRTY2lzc29yU3RhdGUoc2Npc3NvciwgZW5hYmxlZCk7CiB9CiAKLXZvaWQgUmVuZGVyZXI5
OjpzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3IsIGJvb2wg
ZW5hYmxlZCkKK2dsOjpFcnJvciBSZW5kZXJlcjk6OnNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0ZXMo
Y29uc3QgZ2w6OkRhdGEgJmdsRGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogewotICAgIGJvb2wgc2Np
c3NvckNoYW5nZWQgPSBtRm9yY2VTZXRTY2lzc29yIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lbWNtcCgmc2Npc3NvciwgJm1DdXJTY2lzc29yLCBzaXplb2YoZ2w6OlJlY3RhbmdsZSkp
ICE9IDAgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCAhPSBtU2Npc3NvckVu
YWJsZWQ7CisgICAgaW50IHNhbXBsZXMgICAgICAgICAgICAgICAgICAgID0gZ2xEYXRhLnN0YXRl
LT5nZXREcmF3RnJhbWVidWZmZXIoKS0+Z2V0U2FtcGxlcyhnbERhdGEpOworICAgIGdsOjpSYXN0
ZXJpemVyU3RhdGUgcmFzdGVyaXplciA9IGdsRGF0YS5zdGF0ZS0+Z2V0UmFzdGVyaXplclN0YXRl
KCk7CisgICAgcmFzdGVyaXplci5wb2ludERyYXdNb2RlICAgICAgID0gKGRyYXdNb2RlID09IEdM
X1BPSU5UUyk7CisgICAgcmFzdGVyaXplci5tdWx0aVNhbXBsZSAgICAgICAgID0gKHNhbXBsZXMg
IT0gMCk7CiAKLSAgICBpZiAoc2Npc3NvckNoYW5nZWQpCi0gICAgewotICAgICAgICBpZiAoZW5h
YmxlZCkKLSAgICAgICAgewotICAgICAgICAgICAgUkVDVCByZWN0OwotICAgICAgICAgICAgcmVj
dC5sZWZ0ID0gZ2w6OmNsYW1wKHNjaXNzb3IueCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVy
VGFyZ2V0RGVzYy53aWR0aCkpOwotICAgICAgICAgICAgcmVjdC50b3AgPSBnbDo6Y2xhbXAoc2Np
c3Nvci55LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCkpOwot
ICAgICAgICAgICAgcmVjdC5yaWdodCA9IGdsOjpjbGFtcChzY2lzc29yLnggKyBzY2lzc29yLndp
ZHRoLCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXREZXNjLndpZHRoKSk7Ci0gICAg
ICAgICAgICByZWN0LmJvdHRvbSA9IGdsOjpjbGFtcChzY2lzc29yLnkgKyBzY2lzc29yLmhlaWdo
dCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0RGVzYy5oZWlnaHQpKTsKLSAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFNjaXNzb3JSZWN0KCZyZWN0KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIG1EZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NDSVNTT1JURVNURU5BQkxFLCBlbmFi
bGVkID8gVFJVRSA6IEZBTFNFKTsKLQotICAgICAgICBtU2Npc3NvckVuYWJsZWQgPSBlbmFibGVk
OwotICAgICAgICBtQ3VyU2Npc3NvciA9IHNjaXNzb3I7Ci0gICAgfQotCi0gICAgbUZvcmNlU2V0
U2Npc3NvciA9IGZhbHNlOworICAgIHVuc2lnbmVkIGludCBtYXNrID0gR2V0QmxlbmRTYW1wbGVN
YXNrKGdsRGF0YSwgc2FtcGxlcyk7CisgICAgcmV0dXJuIG1TdGF0ZU1hbmFnZXIuc2V0QmxlbmRE
ZXB0aFJhc3RlclN0YXRlcygqZ2xEYXRhLnN0YXRlLCBtYXNrKTsKIH0KIAotdm9pZCBSZW5kZXJl
cjk6OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LCBmbG9hdCB6TmVh
ciwgZmxvYXQgekZhciwgR0xlbnVtIGRyYXdNb2RlLCBHTGVudW0gZnJvbnRGYWNlLAordm9pZCBS
ZW5kZXJlcjk6OnNldFZpZXdwb3J0KGNvbnN0IGdsOjpDYXBzICpjYXBzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHpOZWFyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHpGYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmcm9udEZhY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCkKIHsKLSAgICBnbDo6
UmVjdGFuZ2xlIGFjdHVhbFZpZXdwb3J0ID0gdmlld3BvcnQ7Ci0gICAgZmxvYXQgYWN0dWFsWk5l
YXIgPSBnbDo6Y2xhbXAwMSh6TmVhcik7Ci0gICAgZmxvYXQgYWN0dWFsWkZhciA9IGdsOjpjbGFt
cDAxKHpGYXIpOwotICAgIGlmIChpZ25vcmVWaWV3cG9ydCkKLSAgICB7Ci0gICAgICAgIGFjdHVh
bFZpZXdwb3J0LnggPSAwOwotICAgICAgICBhY3R1YWxWaWV3cG9ydC55ID0gMDsKLSAgICAgICAg
YWN0dWFsVmlld3BvcnQud2lkdGggPSBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aDsKLSAgICAgICAg
YWN0dWFsVmlld3BvcnQuaGVpZ2h0ID0gbVJlbmRlclRhcmdldERlc2MuaGVpZ2h0OwotICAgICAg
ICBhY3R1YWxaTmVhciA9IDAuMGY7Ci0gICAgICAgIGFjdHVhbFpGYXIgPSAxLjBmOwotICAgIH0K
LQotICAgIEQzRFZJRVdQT1JUOSBkeFZpZXdwb3J0OwotICAgIGR4Vmlld3BvcnQuWCA9IGdsOjpj
bGFtcChhY3R1YWxWaWV3cG9ydC54LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXRE
ZXNjLndpZHRoKSk7Ci0gICAgZHhWaWV3cG9ydC5ZID0gZ2w6OmNsYW1wKGFjdHVhbFZpZXdwb3J0
LnksIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldERlc2MuaGVpZ2h0KSk7Ci0gICAg
ZHhWaWV3cG9ydC5XaWR0aCA9IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC53aWR0aCwgMCwgc3Rh
dGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aCkgLSBzdGF0aWNfY2FzdDxpbnQ+
KGR4Vmlld3BvcnQuWCkpOwotICAgIGR4Vmlld3BvcnQuSGVpZ2h0ID0gZ2w6OmNsYW1wKGFjdHVh
bFZpZXdwb3J0LmhlaWdodCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0RGVzYy5o
ZWlnaHQpIC0gc3RhdGljX2Nhc3Q8aW50PihkeFZpZXdwb3J0LlkpKTsKLSAgICBkeFZpZXdwb3J0
Lk1pblogPSBhY3R1YWxaTmVhcjsKLSAgICBkeFZpZXdwb3J0Lk1heFogPSBhY3R1YWxaRmFyOwot
Ci0gICAgZmxvYXQgZGVwdGhGcm9udCA9ICFnbDo6SXNUcmlhbmdsZU1vZGUoZHJhd01vZGUpID8g
MC4wZiA6IChmcm9udEZhY2UgPT0gR0xfQ0NXID8gMS4wZiA6IC0xLjBmKTsKLQotICAgIGJvb2wg
dmlld3BvcnRDaGFuZ2VkID0gbUZvcmNlU2V0Vmlld3BvcnQgfHwgbWVtY21wKCZhY3R1YWxWaWV3
cG9ydCwgJm1DdXJWaWV3cG9ydCwgc2l6ZW9mKGdsOjpSZWN0YW5nbGUpKSAhPSAwIHx8Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxaTmVhciAhPSBtQ3VyTmVhciB8fCBhY3R1YWxa
RmFyICE9IG1DdXJGYXIgfHwgbUN1ckRlcHRoRnJvbnQgIT0gZGVwdGhGcm9udDsKLSAgICBpZiAo
dmlld3BvcnRDaGFuZ2VkKQotICAgIHsKLSAgICAgICAgbURldmljZS0+U2V0Vmlld3BvcnQoJmR4
Vmlld3BvcnQpOwotCi0gICAgICAgIG1DdXJWaWV3cG9ydCA9IGFjdHVhbFZpZXdwb3J0OwotICAg
ICAgICBtQ3VyTmVhciA9IGFjdHVhbFpOZWFyOwotICAgICAgICBtQ3VyRmFyID0gYWN0dWFsWkZh
cjsKLSAgICAgICAgbUN1ckRlcHRoRnJvbnQgPSBkZXB0aEZyb250OwotCi0gICAgICAgIGR4X1Zl
cnRleENvbnN0YW50cyB2YyA9IHswfTsKLSAgICAgICAgZHhfUGl4ZWxDb25zdGFudHMgcGMgPSB7
MH07Ci0KLSAgICAgICAgdmMudmlld0FkanVzdFswXSA9IChmbG9hdCkoKGFjdHVhbFZpZXdwb3J0
LndpZHRoIC0gKGludClkeFZpZXdwb3J0LldpZHRoKSArIDIgKiAoYWN0dWFsVmlld3BvcnQueCAt
IChpbnQpZHhWaWV3cG9ydC5YKSAtIDEpIC8gZHhWaWV3cG9ydC5XaWR0aDsKLSAgICAgICAgdmMu
dmlld0FkanVzdFsxXSA9IChmbG9hdCkoKGFjdHVhbFZpZXdwb3J0LmhlaWdodCAtIChpbnQpZHhW
aWV3cG9ydC5IZWlnaHQpICsgMiAqIChhY3R1YWxWaWV3cG9ydC55IC0gKGludClkeFZpZXdwb3J0
LlkpIC0gMSkgLyBkeFZpZXdwb3J0LkhlaWdodDsKLSAgICAgICAgdmMudmlld0FkanVzdFsyXSA9
IChmbG9hdClhY3R1YWxWaWV3cG9ydC53aWR0aCAvIGR4Vmlld3BvcnQuV2lkdGg7Ci0gICAgICAg
IHZjLnZpZXdBZGp1c3RbM10gPSAoZmxvYXQpYWN0dWFsVmlld3BvcnQuaGVpZ2h0IC8gZHhWaWV3
cG9ydC5IZWlnaHQ7Ci0KLSAgICAgICAgcGMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdwb3J0
LndpZHRoICAqIDAuNWY7Ci0gICAgICAgIHBjLnZpZXdDb29yZHNbMV0gPSBhY3R1YWxWaWV3cG9y
dC5oZWlnaHQgKiAwLjVmOwotICAgICAgICBwYy52aWV3Q29vcmRzWzJdID0gYWN0dWFsVmlld3Bv
cnQueCArIChhY3R1YWxWaWV3cG9ydC53aWR0aCAgKiAwLjVmKTsKLSAgICAgICAgcGMudmlld0Nv
b3Jkc1szXSA9IGFjdHVhbFZpZXdwb3J0LnkgKyAoYWN0dWFsVmlld3BvcnQuaGVpZ2h0ICogMC41
Zik7Ci0KLSAgICAgICAgcGMuZGVwdGhGcm9udFswXSA9IChhY3R1YWxaRmFyIC0gYWN0dWFsWk5l
YXIpICogMC41ZjsKLSAgICAgICAgcGMuZGVwdGhGcm9udFsxXSA9IChhY3R1YWxaTmVhciArIGFj
dHVhbFpGYXIpICogMC41ZjsKLSAgICAgICAgcGMuZGVwdGhGcm9udFsyXSA9IGRlcHRoRnJvbnQ7
Ci0KLSAgICAgICAgdmMuZGVwdGhSYW5nZVswXSA9IGFjdHVhbFpOZWFyOwotICAgICAgICB2Yy5k
ZXB0aFJhbmdlWzFdID0gYWN0dWFsWkZhcjsKLSAgICAgICAgdmMuZGVwdGhSYW5nZVsyXSA9IGFj
dHVhbFpGYXIgLSBhY3R1YWxaTmVhcjsKLQotICAgICAgICBwYy5kZXB0aFJhbmdlWzBdID0gYWN0
dWFsWk5lYXI7Ci0gICAgICAgIHBjLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOwotICAgICAg
ICBwYy5kZXB0aFJhbmdlWzJdID0gYWN0dWFsWkZhciAtIGFjdHVhbFpOZWFyOwotCi0gICAgICAg
IGlmIChtZW1jbXAoJnZjLCAmbVZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRleENvbnN0
YW50cykpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1WZXJ0ZXhDb25zdGFudHMgPSB2
YzsKLSAgICAgICAgICAgIG1EeFVuaWZvcm1zRGlydHkgPSB0cnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG1lbWNtcCgmcGMsICZtUGl4ZWxDb25zdGFudHMsIHNpemVvZihkeF9QaXhlbENv
bnN0YW50cykpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1QaXhlbENvbnN0YW50cyA9
IHBjOwotICAgICAgICAgICAgbUR4VW5pZm9ybXNEaXJ0eSA9IHRydWU7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IGZhbHNlOworICAgIG1TdGF0ZU1hbmFnZXIu
c2V0Vmlld3BvcnRTdGF0ZShjYXBzLCB2aWV3cG9ydCwgek5lYXIsIHpGYXIsIGRyYXdNb2RlLCBm
cm9udEZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZVZpZXdw
b3J0KTsKIH0KIAogYm9vbCBSZW5kZXJlcjk6OmFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gbW9k
ZSwgR0xzaXplaSBjb3VudCwgYm9vbCB1c2VzUG9pbnRTaXplKQpAQCAtMTI2NCwxNSArMTAyNSwx
NCBAQAogewogICAgIEFTU0VSVChkZXB0aGJ1ZmZlcik7CiAKLSAgICBHTHNpemVpIHdpZHRoICA9
IGRlcHRoYnVmZmVyLT5nZXRXaWR0aCgpOwotICAgIEdMc2l6ZWkgaGVpZ2h0ID0gZGVwdGhidWZm
ZXItPmdldEhlaWdodCgpOworICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplID0gZGVwdGhidWZm
ZXItPmdldFNpemUoKTsKIAogICAgIC8vIHNlYXJjaCBjYWNoZWQgbnVsbGNvbG9yYnVmZmVycwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlVNX05VTExfQ09MT1JCVUZGRVJfQ0FDSEVfRU5UUklF
UzsgaSsrKQogICAgIHsKICAgICAgICAgaWYgKG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS5idWZm
ZXIgIT0gTlVMTCAmJgotICAgICAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLndpZHRo
ID09IHdpZHRoICYmCi0gICAgICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uaGVpZ2h0
ID09IGhlaWdodCkKKyAgICAgICAgICAgIG1OdWxsQ29sb3JidWZmZXJDYWNoZVtpXS53aWR0aCA9
PSBzaXplLndpZHRoICYmCisgICAgICAgICAgICBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uaGVp
Z2h0ID09IHNpemUuaGVpZ2h0KQogICAgICAgICB7CiAgICAgICAgICAgICBtTnVsbENvbG9yYnVm
ZmVyQ2FjaGVbaV0ubHJ1Q291bnQgPSArK21NYXhOdWxsQ29sb3JidWZmZXJMUlU7CiAgICAgICAg
ICAgICAqb3V0Q29sb3JCdWZmZXIgPSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbaV0uYnVmZmVyOwpA
QCAtMTI4MSw3ICsxMDQxLDcgQEAKICAgICB9CiAKICAgICBnbDo6UmVuZGVyYnVmZmVyICpudWxs
UmVuZGVyYnVmZmVyID0gbmV3IGdsOjpSZW5kZXJidWZmZXIoY3JlYXRlUmVuZGVyYnVmZmVyKCks
IDApOwotICAgIGdsOjpFcnJvciBlcnJvciA9IG51bGxSZW5kZXJidWZmZXItPnNldFN0b3JhZ2Uo
R0xfTk9ORSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gbnVsbFJlbmRl
cmJ1ZmZlci0+c2V0U3RvcmFnZShHTF9OT05FLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVEZWxldGUobnVsbFJl
bmRlcmJ1ZmZlcik7CkBAIC0xMzAzLDggKzEwNjMsOCBAQAogICAgIGRlbGV0ZSBvbGRlc3QtPmJ1
ZmZlcjsKICAgICBvbGRlc3QtPmJ1ZmZlciA9IG51bGxidWZmZXI7CiAgICAgb2xkZXN0LT5scnVD
b3VudCA9ICsrbU1heE51bGxDb2xvcmJ1ZmZlckxSVTsKLSAgICBvbGRlc3QtPndpZHRoID0gd2lk
dGg7Ci0gICAgb2xkZXN0LT5oZWlnaHQgPSBoZWlnaHQ7CisgICAgb2xkZXN0LT53aWR0aCAgICA9
IHNpemUud2lkdGg7CisgICAgb2xkZXN0LT5oZWlnaHQgICA9IHNpemUuaGVpZ2h0OwogCiAgICAg
Km91dENvbG9yQnVmZmVyID0gbnVsbGJ1ZmZlcjsKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKQEAgLTEzMTQsMTIgKzEwNzQsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQpCiB7CiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAq
cmVuZGVyQXR0YWNobWVudCA9IGNvbG9yQXR0YWNobWVudDsKKyAgICBnbDo6RXJyb3IgZXJyb3Io
R0xfTk9fRVJST1IpOwogCiAgICAgLy8gaWYgdGhlcmUgaXMgbm8gY29sb3IgYXR0YWNobWVudCB3
ZSBtdXN0IHN5bnRoZXNpemUgYSBOVUxMIGNvbG9yYXR0YWNobWVudAogICAgIC8vIHRvIGtlZXAg
dGhlIEQzRCBydW50aW1lIGhhcHB5LiAgVGhpcyBzaG91bGQgb25seSBiZSBwb3NzaWJsZSBpZiBk
ZXB0aCB0ZXh0dXJpbmcuCiAgICAgaWYgKHJlbmRlckF0dGFjaG1lbnQgPT0gbnVsbHB0cikKICAg
ICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldE51bGxDb2xvcmJ1ZmZlcihkZXB0aFN0
ZW5jaWxBdHRhY2htZW50LCAmcmVuZGVyQXR0YWNobWVudCk7CisgICAgICAgIGVycm9yID0gZ2V0
TnVsbENvbG9yYnVmZmVyKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQsICZyZW5kZXJBdHRhY2htZW50
KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGVycm9yOwpAQCAtMTMzMSwxOSArMTA5MiwxOSBAQAogICAgIHNpemVfdCByZW5kZXJU
YXJnZXRIZWlnaHQgPSAwOwogICAgIEQzREZPUk1BVCByZW5kZXJUYXJnZXRGb3JtYXQgPSBEM0RG
TVRfVU5LTk9XTjsKIAorICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7
CisgICAgZXJyb3IgPSByZW5kZXJBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRh
cmdldCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBl
cnJvcjsKKyAgICB9CisgICAgQVNTRVJUKHJlbmRlclRhcmdldCk7CisKICAgICBib29sIHJlbmRl
clRhcmdldENoYW5nZWQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpbnQgcmVuZGVyVGFyZ2V0U2Vy
aWFsID0gR2V0QXR0YWNobWVudFNlcmlhbChyZW5kZXJBdHRhY2htZW50KTsKKyAgICB1bnNpZ25l
ZCBpbnQgcmVuZGVyVGFyZ2V0U2VyaWFsID0gcmVuZGVyVGFyZ2V0LT5nZXRTZXJpYWwoKTsKICAg
ICBpZiAocmVuZGVyVGFyZ2V0U2VyaWFsICE9IG1BcHBsaWVkUmVuZGVyVGFyZ2V0U2VyaWFsKQog
ICAgIHsKICAgICAgICAgLy8gQXBwbHkgdGhlIHJlbmRlciB0YXJnZXQgb24gdGhlIGRldmljZQot
ICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBn
bDo6RXJyb3IgZXJyb3IgPSByZW5kZXJBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRl
clRhcmdldCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQocmVuZGVyVGFy
Z2V0KTsKLQogICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqcmVuZGVyVGFyZ2V0U3VyZmFjZSA9
IHJlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOwogICAgICAgICBBU1NFUlQocmVuZGVyVGFyZ2V0
U3VyZmFjZSk7CiAKQEAgLTEzNTgsMjQgKzExMTksMjkgQEAKICAgICAgICAgcmVuZGVyVGFyZ2V0
Q2hhbmdlZCA9IHRydWU7CiAgICAgfQogCi0gICAgdW5zaWduZWQgaW50IGRlcHRoU3RlbmNpbFNl
cmlhbCA9IChkZXB0aFN0ZW5jaWxBdHRhY2htZW50ICE9IG51bGxwdHIpID8KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEF0dGFjaG1lbnRTZXJpYWwoZGVwdGhTdGVu
Y2lsQXR0YWNobWVudCkgOiAwOworICAgIFJlbmRlclRhcmdldDkgKmRlcHRoU3RlbmNpbFJlbmRl
clRhcmdldCA9IG51bGxwdHI7CisgICAgdW5zaWduZWQgaW50IGRlcHRoU3RlbmNpbFNlcmlhbCA9
IDA7CisKKyAgICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudCAhPSBudWxscHRyKQorICAgIHsK
KyAgICAgICAgZXJyb3IgPSBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQo
JmRlcHRoU3RlbmNpbFJlbmRlclRhcmdldCk7CisgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQoZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KTsKKworICAgICAgICBkZXB0aFN0ZW5j
aWxTZXJpYWwgPSBkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQtPmdldFNlcmlhbCgpOworICAgIH0K
KwogICAgIGlmIChkZXB0aFN0ZW5jaWxTZXJpYWwgIT0gbUFwcGxpZWREZXB0aFN0ZW5jaWxTZXJp
YWwgfHwgIW1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCkKICAgICB7CiAgICAgICAgIHVuc2lnbmVk
IGludCBkZXB0aFNpemUgPSAwOwogICAgICAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFNpemUgPSAw
OwogCiAgICAgICAgIC8vIEFwcGx5IHRoZSBkZXB0aCBzdGVuY2lsIG9uIHRoZSBkZXZpY2UKLSAg
ICAgICAgaWYgKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCisgICAgICAgIGlmIChkZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlclRhcmdldDkgKmRl
cHRoU3RlbmNpbFJlbmRlclRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJmRlcHRoU3Rl
bmNpbFJlbmRlclRhcmdldCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIEFTU0VSVChkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQpOwotCiAgICAgICAg
ICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVwdGhTdGVuY2lsU3VyZmFjZSA9IGRlcHRoU3RlbmNp
bFJlbmRlclRhcmdldC0+Z2V0U3VyZmFjZSgpOwogICAgICAgICAgICAgQVNTRVJUKGRlcHRoU3Rl
bmNpbFN1cmZhY2UpOwogCkBAIC0xMzkwLDMxICsxMTU2LDE4IEBACiAgICAgICAgICAgICBtRGV2
aWNlLT5TZXREZXB0aFN0ZW5jaWxTdXJmYWNlKE5VTEwpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKCFtRGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQgfHwgZGVwdGhTaXplICE9IG1DdXJEZXB0aFNp
emUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1DdXJEZXB0aFNpemUgPSBkZXB0aFNpemU7Ci0g
ICAgICAgICAgICBtRm9yY2VTZXRSYXN0ZXJTdGF0ZSA9IHRydWU7Ci0gICAgICAgIH0KKyAgICAg
ICAgbVN0YXRlTWFuYWdlci51cGRhdGVEZXB0aFNpemVJZkNoYW5nZWQobURlcHRoU3RlbmNpbElu
aXRpYWxpemVkLCBkZXB0aFNpemUpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLnVwZGF0ZVN0ZW5j
aWxTaXplSWZDaGFuZ2VkKG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZCwgc3RlbmNpbFNpemUpOwog
Ci0gICAgICAgIGlmICghbURlcHRoU3RlbmNpbEluaXRpYWxpemVkIHx8IHN0ZW5jaWxTaXplICE9
IG1DdXJTdGVuY2lsU2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgbUN1clN0ZW5jaWxTaXpl
ID0gc3RlbmNpbFNpemU7Ci0gICAgICAgICAgICBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSA9
IHRydWU7Ci0gICAgICAgIH0KLQogICAgICAgICBtQXBwbGllZERlcHRoU3RlbmNpbFNlcmlhbCA9
IGRlcHRoU3RlbmNpbFNlcmlhbDsKICAgICAgICAgbURlcHRoU3RlbmNpbEluaXRpYWxpemVkID0g
dHJ1ZTsKICAgICB9CiAKICAgICBpZiAocmVuZGVyVGFyZ2V0Q2hhbmdlZCB8fCAhbVJlbmRlclRh
cmdldERlc2NJbml0aWFsaXplZCkKICAgICB7Ci0gICAgICAgIG1Gb3JjZVNldFNjaXNzb3IgPSB0
cnVlOwotICAgICAgICBtRm9yY2VTZXRWaWV3cG9ydCA9IHRydWU7Ci0gICAgICAgIG1Gb3JjZVNl
dEJsZW5kU3RhdGUgPSB0cnVlOwotCi0gICAgICAgIG1SZW5kZXJUYXJnZXREZXNjLndpZHRoID0g
cmVuZGVyVGFyZ2V0V2lkdGg7Ci0gICAgICAgIG1SZW5kZXJUYXJnZXREZXNjLmhlaWdodCA9IHJl
bmRlclRhcmdldEhlaWdodDsKLSAgICAgICAgbVJlbmRlclRhcmdldERlc2MuZm9ybWF0ID0gcmVu
ZGVyVGFyZ2V0Rm9ybWF0OworICAgICAgICBtU3RhdGVNYW5hZ2VyLmZvcmNlU2V0QmxlbmRTdGF0
ZSgpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLmZvcmNlU2V0U2Npc3NvclN0YXRlKCk7CisgICAg
ICAgIG1TdGF0ZU1hbmFnZXIuc2V0UmVuZGVyVGFyZ2V0Qm91bmRzKHJlbmRlclRhcmdldFdpZHRo
LCByZW5kZXJUYXJnZXRIZWlnaHQpOwogICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxp
emVkID0gdHJ1ZTsKICAgICB9CiAKQEAgLTE0MjYsMjIgKzExNzksMzUgQEAKICAgICByZXR1cm4g
YXBwbHlSZW5kZXJUYXJnZXQoZnJhbWVidWZmZXItPmdldENvbG9yYnVmZmVyKDApLCBmcmFtZWJ1
ZmZlci0+Z2V0RGVwdGhPclN0ZW5jaWxidWZmZXIoKSk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJl
cjk6OmFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpCitnbDo6RXJy
b3IgUmVuZGVyZXI5OjphcHBseVZlcnRleEJ1ZmZlcihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKiAvKmlu
ZGV4SW5mbyovKQogewotICAgIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTXTsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBtVmVydGV4RGF0YU1hbmFn
ZXItPnByZXBhcmVWZXJ0ZXhEYXRhKHN0YXRlLCBmaXJzdCwgY291bnQsIGF0dHJpYnV0ZXMsIGlu
c3RhbmNlcyk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gbVZlcnRleERhdGFNYW5hZ2VyLT5wcmVw
YXJlVmVydGV4RGF0YShzdGF0ZSwgZmlyc3QsIGNvdW50LCAmbVRyYW5zbGF0ZWRBdHRyaWJDYWNo
ZSwgaW5zdGFuY2VzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIHJldHVybiBtVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5hcHBseURlY2xhcmF0aW9uKG1EZXZpY2UsIGF0dHJpYnV0ZXMsIHN0YXRlLmdldFByb2dyYW0o
KSwgaW5zdGFuY2VzLCAmbVJlcGVhdERyYXcpOworICAgIHJldHVybiBtVmVydGV4RGVjbGFyYXRp
b25DYWNoZS5hcHBseURlY2xhcmF0aW9uKAorICAgICAgICBtRGV2aWNlLCBtVHJhbnNsYXRlZEF0
dHJpYkNhY2hlLCBzdGF0ZS5nZXRQcm9ncmFtKCksIGZpcnN0LCBpbnN0YW5jZXMsICZtUmVwZWF0
RHJhdyk7CiB9CiAKIC8vIEFwcGxpZXMgdGhlIGluZGljZXMgYW5kIGVsZW1lbnQgYXJyYXkgYmlu
ZGluZ3MgdG8gdGhlIERpcmVjdDNEIDkgZGV2aWNlCi1nbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBs
eUluZGV4QnVmZmVyKGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgZ2w6OkJ1ZmZlciAqZWxlbWVudEFy
cmF5QnVmZmVyLCBHTHNpemVpIGNvdW50LCBHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIFRyYW5z
bGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykKK2dsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5SW5k
ZXhCdWZmZXIoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pCiB7Ci0gICAgZ2w6OkVycm9yIGVy
cm9yID0gbUluZGV4RGF0YU1hbmFnZXItPnByZXBhcmVJbmRleERhdGEodHlwZSwgY291bnQsIGVs
ZW1lbnRBcnJheUJ1ZmZlciwgaW5kaWNlcywgaW5kZXhJbmZvKTsKKyAgICBnbDo6VmVydGV4QXJy
YXkgKnZhbyAgICAgICAgICAgPSBkYXRhLnN0YXRlLT5nZXRWZXJ0ZXhBcnJheSgpOworICAgIGds
OjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IHZhby0+Z2V0RWxlbWVudEFycmF5QnVmZmVy
KCkuZ2V0KCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gbUluZGV4RGF0YU1hbmFnZXItPnByZXBh
cmVJbmRleERhdGEodHlwZSwgY291bnQsIGVsZW1lbnRBcnJheUJ1ZmZlciwgaW5kaWNlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleEluZm8sIGZhbHNlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGVycm9yOwpAQCAtMTQ2MSwxMiArMTIyNywxNyBAQAogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi12b2lkIFJlbmRlcmVyOTo6YXBwbHlUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcnMoY29uc3QgZ2w6OlN0YXRlJiBzdGF0ZSkKK2dsOjpFcnJvciBSZW5kZXJl
cjk6OmFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUp
CiB7CiAgICAgQVNTRVJUKCFzdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQo
KSk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBS
ZW5kZXJlcjk6OmRyYXdBcnJheXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywgYm9vbCB1c2VzUG9pbnRTaXplKQorZ2w6
OkVycm9yIFJlbmRlcmVyOTo6ZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0VmVydGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKQogewogICAgIEFTU0VSVCgh
ZGF0YS5zdGF0ZS0+aXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpOwogCkBAIC0x
NTA3LDEzICsxMjc4LDIxIEBACiAgICAgfQogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3
RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkJ1
ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyLCBjb25zdCBUcmFuc2xhdGVkSW5kZXhEYXRhICZpbmRl
eEluZm8sIEdMc2l6ZWkgLyppbnN0YW5jZXMqLykKK2dsOjpFcnJvciBSZW5kZXJlcjk6OmRyYXdF
bGVtZW50c0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgLyppbnN0YW5jZXMqLykKIHsKICAg
ICBzdGFydFNjZW5lKCk7CiAKICAgICBpbnQgbWluSW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGlu
ZGV4SW5mby5pbmRleFJhbmdlLnN0YXJ0KTsKIAorICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAg
ICAgICAgICA9IGRhdGEuc3RhdGUtPmdldFZlcnRleEFycmF5KCk7CisgICAgZ2w6OkJ1ZmZlciAq
ZWxlbWVudEFycmF5QnVmZmVyID0gdmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsK
KwogICAgIGlmIChtb2RlID09IEdMX1BPSU5UUykKICAgICB7CiAgICAgICAgIHJldHVybiBkcmF3
SW5kZXhlZFBvaW50cyhjb3VudCwgdHlwZSwgaW5kaWNlcywgbWluSW5kZXgsIGVsZW1lbnRBcnJh
eUJ1ZmZlcik7CkBAIC0xNTI0LDEwICsxMzAzLDEyIEBACiAgICAgfQogICAgIGVsc2UKICAgICB7
CisgICAgICAgIHNpemVfdCB2ZXJ0ZXhDb3VudCA9IGluZGV4SW5mby5pbmRleFJhbmdlLnZlcnRl
eENvdW50KCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVJlcGVhdERyYXc7IGkrKykK
ICAgICAgICAgewotICAgICAgICAgICAgR0xzaXplaSB2ZXJ0ZXhDb3VudCA9IHN0YXRpY19jYXN0
PGludD4oaW5kZXhJbmZvLmluZGV4UmFuZ2UubGVuZ3RoKCkpICsgMTsKLSAgICAgICAgICAgIG1E
ZXZpY2UtPkRyYXdJbmRleGVkUHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAtbWluSW5kZXgsIG1p
bkluZGV4LCB2ZXJ0ZXhDb3VudCwgaW5kZXhJbmZvLnN0YXJ0SW5kZXgsIG1QcmltaXRpdmVDb3Vu
dCk7CisgICAgICAgICAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShtUHJpbWl0aXZl
VHlwZSwgLW1pbkluZGV4LCBtaW5JbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PFVJTlQ+KHZlcnRleENvdW50KSwgaW5kZXhJbmZvLnN0
YXJ0SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUHJp
bWl0aXZlQ291bnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOwogICAgIH0KQEAgLTE3NjcsNyArMTU0OCw3IEBACiAgICAgLy8gVXBkYXRlIHRoZSBj
b3VudGluZyBpbmRleCBidWZmZXIgaWYgaXQgaXMgbm90IGxhcmdlIGVub3VnaCBvciBoYXMgbm90
IGJlZW4gY3JlYXRlZCB5ZXQuCiAgICAgaWYgKGNvdW50IDw9IDY1NTM2KSAgIC8vIDE2LWJpdCBp
bmRpY2VzCiAgICAgewotICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgc3BhY2VOZWVkZWQgPSBj
b3VudCAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGlu
dCBzcGFjZU5lZWRlZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpICogc2l6ZW9m
KHVuc2lnbmVkIHNob3J0KTsKIAogICAgICAgICBpZiAoIW1Db3VudGluZ0lCIHx8IG1Db3VudGlu
Z0lCLT5nZXRCdWZmZXJTaXplKCkgPCBzcGFjZU5lZWRlZCkKICAgICAgICAgewpAQCAtMTc5Nyw3
ICsxNTc4LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoZ2V0UmVuZGVyZXJFeHRlbnNpb25zKCku
ZWxlbWVudEluZGV4VWludCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBzcGFj
ZU5lZWRlZCA9IGNvdW50ICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGludCBzcGFjZU5lZWRlZCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQp
ICogc2l6ZW9mKHVuc2lnbmVkIGludCk7CiAKICAgICAgICAgaWYgKCFtQ291bnRpbmdJQiB8fCBt
Q291bnRpbmdJQi0+Z2V0QnVmZmVyU2l6ZSgpIDwgc3BhY2VOZWVkZWQpCiAgICAgICAgIHsKQEAg
LTE4MTMsNyArMTU5NCw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVk
IGludCAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4obWFwcGVkTWVtb3J5
KTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBkYXRhW2ldID0gaTsKICAgICAgICAgICAgIH0KQEAgLTE4
MzQsMTQgKzE2MTUsMTEgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0K
IAotZ2w6OkVycm9yIFJlbmRlcmVyOTo6YXBwbHlTaGFkZXJzKGdsOjpQcm9ncmFtICpwcm9ncmFt
LCBjb25zdCBnbDo6VmVydGV4Rm9ybWF0IGlucHV0TGF5b3V0W10sIGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCByYXN0ZXJpemVyRGlzY2FyZCwgYm9vbCB0cmFuc2Zvcm1GZWVkYmFja0FjdGl2ZSkKK2dsOjpF
cnJvciBSZW5kZXJlcjk6OmFwcGx5U2hhZGVyc0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdM
ZW51bSAvKmRyYXdNb2RlKi8pCiB7Ci0gICAgQVNTRVJUKCF0cmFuc2Zvcm1GZWVkYmFja0FjdGl2
ZSk7Ci0gICAgQVNTRVJUKCFyYXN0ZXJpemVyRGlzY2FyZCk7CisgICAgUHJvZ3JhbUQzRCAqcHJv
Z3JhbUQzRCAgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5zdGF0ZS0+Z2V0UHJvZ3JhbSgp
KTsKKyAgICBjb25zdCBhdXRvICZpbnB1dExheW91dCA9IHByb2dyYW1EM0QtPmdldENhY2hlZElu
cHV0TGF5b3V0KCk7CiAKLSAgICBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFBy
b2dyYW1EM0Q+KHByb2dyYW0pOwotCiAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqdmVydGV4RXhl
ID0gTlVMTDsKICAgICBnbDo6RXJyb3IgZXJyb3IgPSBwcm9ncmFtRDNELT5nZXRWZXJ0ZXhFeGVj
dXRhYmxlRm9ySW5wdXRMYXlvdXQoaW5wdXRMYXlvdXQsICZ2ZXJ0ZXhFeGUsIG51bGxwdHIpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCkBAIC0xODQ5LDggKzE2MjcsOSBAQAogICAgICAgICBy
ZXR1cm4gZXJyb3I7CiAgICAgfQogCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpkcmF3RnJh
bWVidWZmZXIgPSBkYXRhLnN0YXRlLT5nZXREcmF3RnJhbWVidWZmZXIoKTsKICAgICBTaGFkZXJF
eGVjdXRhYmxlRDNEICpwaXhlbEV4ZSA9IE5VTEw7Ci0gICAgZXJyb3IgPSBwcm9ncmFtRDNELT5n
ZXRQaXhlbEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlciwgJnBpeGVsRXhlKTsK
KyAgICBlcnJvciA9IHByb2dyYW1EM0QtPmdldFBpeGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVy
KGRyYXdGcmFtZWJ1ZmZlciwgJnBpeGVsRXhlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtMTg4MCw2OCArMTY1OSw2MyBAQAogICAg
IGlmIChwcm9ncmFtU2VyaWFsICE9IG1BcHBsaWVkUHJvZ3JhbVNlcmlhbCkKICAgICB7CiAgICAg
ICAgIHByb2dyYW1EM0QtPmRpcnR5QWxsVW5pZm9ybXMoKTsKLSAgICAgICAgbUR4VW5pZm9ybXNE
aXJ0eSA9IHRydWU7CisgICAgICAgIG1TdGF0ZU1hbmFnZXIuZm9yY2VTZXREWFVuaWZvcm1zU3Rh
dGUoKTsKICAgICAgICAgbUFwcGxpZWRQcm9ncmFtU2VyaWFsID0gcHJvZ3JhbVNlcmlhbDsKICAg
ICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9y
IFJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtSW1wbCAmcHJvZ3JhbSwgY29u
c3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0qPiAmdW5pZm9ybUFycmF5KQorZ2w6OkVy
cm9yIFJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNE
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gLypkcmF3TW9kZSov
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxE
M0RVbmlmb3JtICo+ICZ1bmlmb3JtQXJyYXkpCiB7Ci0gICAgZm9yIChzaXplX3QgdW5pZm9ybUlu
ZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwgdW5pZm9ybUFycmF5LnNpemUoKTsgdW5pZm9ybUluZGV4
KyspCisgICAgZm9yIChjb25zdCBEM0RVbmlmb3JtICp0YXJnZXRVbmlmb3JtIDogdW5pZm9ybUFy
cmF5KQogICAgIHsKLSAgICAgICAgZ2w6OkxpbmtlZFVuaWZvcm0gKnRhcmdldFVuaWZvcm0gPSB1
bmlmb3JtQXJyYXlbdW5pZm9ybUluZGV4XTsKKyAgICAgICAgaWYgKCF0YXJnZXRVbmlmb3JtLT5k
aXJ0eSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICh0YXJnZXRVbmlmb3Jt
LT5kaXJ0eSkKKyAgICAgICAgR0xmbG9hdCAqZiA9IChHTGZsb2F0ICopdGFyZ2V0VW5pZm9ybS0+
ZGF0YTsKKyAgICAgICAgR0xpbnQgKmkgICA9IChHTGludCAqKXRhcmdldFVuaWZvcm0tPmRhdGE7
CisKKyAgICAgICAgc3dpdGNoICh0YXJnZXRVbmlmb3JtLT50eXBlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBHTGZsb2F0ICpmID0gKEdMZmxvYXQqKXRhcmdldFVuaWZvcm0tPmRhdGE7Ci0gICAg
ICAgICAgICBHTGludCAqaSA9IChHTGludCopdGFyZ2V0VW5pZm9ybS0+ZGF0YTsKLQotICAgICAg
ICAgICAgc3dpdGNoICh0YXJnZXRVbmlmb3JtLT50eXBlKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExF
Ul9DVUJFOgorICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEOgorICAgICAgICAgICAgY2Fz
ZSBHTF9TQU1QTEVSX0NVQkU6CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfQk9PTDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfQk9PTF9WRUMzOgotICAgICAgICAgICAgICBjYXNlIEdMX0JPT0xfVkVD
NDoKKyAgICAgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgICAgIGNhc2UgR0xfQk9PTF9W
RUMyOgorICAgICAgICAgICAgY2FzZSBHTF9CT09MX1ZFQzM6CisgICAgICAgICAgICBjYXNlIEdM
X0JPT0xfVkVDNDoKICAgICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uYnYodGFyZ2V0VW5pZm9y
bSwgaSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9WRUMzOgotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9B
VF9NQVQzOgotICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgICAgICBj
YXNlIEdMX0ZMT0FUOgorICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgorICAgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9WRUMzOgorICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0Ogor
ICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgorICAgICAgICAgICAgY2FzZSBHTF9GTE9B
VF9NQVQzOgorICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgogICAgICAgICAgICAgICAg
IGFwcGx5VW5pZm9ybW5mdih0YXJnZXRVbmlmb3JtLCBmKTsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSU5U
X1ZFQzI6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfSU5UX1ZFQzQ6CisgICAgICAgICAgICBjYXNlIEdMX0lOVDoKKyAgICAgICAgICAgIGNh
c2UgR0xfSU5UX1ZFQzI6CisgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAgICAg
ICAgY2FzZSBHTF9JTlRfVkVDNDoKICAgICAgICAgICAgICAgICBhcHBseVVuaWZvcm1uaXYodGFy
Z2V0VW5pZm9ybSwgaSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBEcml2ZXIgdW5p
Zm9ybXMKLSAgICBpZiAobUR4VW5pZm9ybXNEaXJ0eSkKLSAgICB7Ci0gICAgICAgIG1EZXZpY2Ut
PlNldFZlcnRleFNoYWRlckNvbnN0YW50RigwLCAoZmxvYXQqKSZtVmVydGV4Q29uc3RhbnRzLCBz
aXplb2YoZHhfVmVydGV4Q29uc3RhbnRzKSAvIHNpemVvZihmbG9hdFs0XSkpOwotICAgICAgICBt
RGV2aWNlLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50RigwLCAoZmxvYXQqKSZtUGl4ZWxDb25zdGFu
dHMsIHNpemVvZihkeF9QaXhlbENvbnN0YW50cykgLyBzaXplb2YoZmxvYXRbNF0pKTsKLSAgICAg
ICAgbUR4VW5pZm9ybXNEaXJ0eSA9IGZhbHNlOwotICAgIH0KKyAgICBtU3RhdGVNYW5hZ2VyLnNl
dFNoYWRlckNvbnN0YW50cygpOwogCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CiB9CiAKLXZvaWQgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1uZnYoZ2w6OkxpbmtlZFVuaWZvcm0g
KnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQgKnYpCit2b2lkIFJlbmRlcmVyOTo6YXBwbHlV
bmlmb3JtbmZ2KGNvbnN0IEQzRFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQg
KnYpCiB7CiAgICAgaWYgKHRhcmdldFVuaWZvcm0tPmlzUmVmZXJlbmNlZEJ5RnJhZ21lbnRTaGFk
ZXIoKSkKICAgICB7CkBAIC0xOTU0LDcgKzE3MjgsNyBAQAogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJlcjk6OmFwcGx5VW5pZm9ybW5pdihnbDo6TGlua2VkVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwg
Y29uc3QgR0xpbnQgKnYpCit2b2lkIFJlbmRlcmVyOTo6YXBwbHlVbmlmb3Jtbml2KGNvbnN0IEQz
RFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMaW50ICp2KQogewogICAgIEFTU0VSVCh0
YXJnZXRVbmlmb3JtLT5yZWdpc3RlckNvdW50IDw9IE1BWF9WRVJURVhfQ09OU1RBTlRfVkVDVE9S
U19EM0Q5KTsKICAgICBHTGZsb2F0IHZlY3RvcltNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNf
RDNEOV1bNF07CkBAIC0xOTcwLDcgKzE3NDQsNyBAQAogICAgIGFwcGx5VW5pZm9ybW5mdih0YXJn
ZXRVbmlmb3JtLCAoR0xmbG9hdCopdmVjdG9yKTsKIH0KIAotdm9pZCBSZW5kZXJlcjk6OmFwcGx5
VW5pZm9ybW5idihnbDo6TGlua2VkVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xpbnQg
KnYpCit2b2lkIFJlbmRlcmVyOTo6YXBwbHlVbmlmb3JtbmJ2KGNvbnN0IEQzRFVuaWZvcm0gKnRh
cmdldFVuaWZvcm0sIGNvbnN0IEdMaW50ICp2KQogewogICAgIEFTU0VSVCh0YXJnZXRVbmlmb3Jt
LT5yZWdpc3RlckNvdW50IDw9IE1BWF9WRVJURVhfQ09OU1RBTlRfVkVDVE9SU19EM0Q5KTsKICAg
ICBHTGZsb2F0IHZlY3RvcltNQVhfVkVSVEVYX0NPTlNUQU5UX1ZFQ1RPUlNfRDNEOV1bNF07CkBA
IC0yMTcwLDE0ICsxOTQ0LDE3IEBACiAgICAgICAgICAgICBtRGV2aWNlLT5TZXRTdHJlYW1Tb3Vy
Y2VGcmVxKGksIDEpOwogICAgICAgICB9CiAKKyAgICAgICAgaW50IHJlbmRlclRhcmdldFdpZHRo
ICA9IG1TdGF0ZU1hbmFnZXIuZ2V0UmVuZGVyVGFyZ2V0V2lkdGgoKTsKKyAgICAgICAgaW50IHJl
bmRlclRhcmdldEhlaWdodCA9IG1TdGF0ZU1hbmFnZXIuZ2V0UmVuZGVyVGFyZ2V0SGVpZ2h0KCk7
CisKICAgICAgICAgZmxvYXQgcXVhZFs0XVs0XTsgICAvLyBBIHF1YWRyaWxhdGVyYWwgY292ZXJp
bmcgdGhlIHRhcmdldCwgYWxpZ25lZCB0byBtYXRjaCB0aGUgZWRnZXMKICAgICAgICAgcXVhZFsw
XVswXSA9IC0wLjVmOwotICAgICAgICBxdWFkWzBdWzFdID0gbVJlbmRlclRhcmdldERlc2MuaGVp
Z2h0IC0gMC41ZjsKKyAgICAgICAgcXVhZFswXVsxXSA9IHJlbmRlclRhcmdldEhlaWdodCAtIDAu
NWY7CiAgICAgICAgIHF1YWRbMF1bMl0gPSAwLjBmOwogICAgICAgICBxdWFkWzBdWzNdID0gMS4w
ZjsKIAotICAgICAgICBxdWFkWzFdWzBdID0gbVJlbmRlclRhcmdldERlc2Mud2lkdGggLSAwLjVm
OwotICAgICAgICBxdWFkWzFdWzFdID0gbVJlbmRlclRhcmdldERlc2MuaGVpZ2h0IC0gMC41ZjsK
KyAgICAgICAgcXVhZFsxXVswXSA9IHJlbmRlclRhcmdldFdpZHRoIC0gMC41ZjsKKyAgICAgICAg
cXVhZFsxXVsxXSA9IHJlbmRlclRhcmdldEhlaWdodCAtIDAuNWY7CiAgICAgICAgIHF1YWRbMV1b
Ml0gPSAwLjBmOwogICAgICAgICBxdWFkWzFdWzNdID0gMS4wZjsKIApAQCAtMjE4Niw3ICsxOTYz
LDcgQEAKICAgICAgICAgcXVhZFsyXVsyXSA9IDAuMGY7CiAgICAgICAgIHF1YWRbMl1bM10gPSAx
LjBmOwogCi0gICAgICAgIHF1YWRbM11bMF0gPSBtUmVuZGVyVGFyZ2V0RGVzYy53aWR0aCAtIDAu
NWY7CisgICAgICAgIHF1YWRbM11bMF0gPSByZW5kZXJUYXJnZXRXaWR0aCAtIDAuNWY7CiAgICAg
ICAgIHF1YWRbM11bMV0gPSAtMC41ZjsKICAgICAgICAgcXVhZFszXVsyXSA9IDAuMGY7CiAgICAg
ICAgIHF1YWRbM11bM10gPSAxLjBmOwpAQCAtMjIzNSwzMSArMjAxMiwzMSBAQAogICAgIG1EZXB0
aFN0ZW5jaWxJbml0aWFsaXplZCA9IGZhbHNlOwogICAgIG1SZW5kZXJUYXJnZXREZXNjSW5pdGlh
bGl6ZWQgPSBmYWxzZTsKIAotICAgIG1Gb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlID0gdHJ1ZTsK
LSAgICBtRm9yY2VTZXRSYXN0ZXJTdGF0ZSA9IHRydWU7Ci0gICAgbUZvcmNlU2V0U2Npc3NvciA9
IHRydWU7Ci0gICAgbUZvcmNlU2V0Vmlld3BvcnQgPSB0cnVlOwotICAgIG1Gb3JjZVNldEJsZW5k
U3RhdGUgPSB0cnVlOworICAgIG1TdGF0ZU1hbmFnZXIuZm9yY2VTZXRSYXN0ZXJTdGF0ZSgpOwor
ICAgIG1TdGF0ZU1hbmFnZXIuZm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAgIG1TdGF0
ZU1hbmFnZXIuZm9yY2VTZXRCbGVuZFN0YXRlKCk7CisgICAgbVN0YXRlTWFuYWdlci5mb3JjZVNl
dFNjaXNzb3JTdGF0ZSgpOworICAgIG1TdGF0ZU1hbmFnZXIuZm9yY2VTZXRWaWV3cG9ydFN0YXRl
KCk7CiAKLSAgICBBU1NFUlQobUZvcmNlU2V0VmVydGV4U2FtcGxlclN0YXRlcy5zaXplKCkgPT0g
bUN1clZlcnRleFRleHR1cmVTZXJpYWxzLnNpemUoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
aSA9IDA7IGkgPCBtRm9yY2VTZXRWZXJ0ZXhTYW1wbGVyU3RhdGVzLnNpemUoKTsgaSsrKQorICAg
IEFTU0VSVChtQ3VyVmVydGV4U2FtcGxlclN0YXRlcy5zaXplKCkgPT0gbUN1clZlcnRleFRleHR1
cmVzLnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtQ3VyVmVydGV4
VGV4dHVyZXMuc2l6ZSgpOyBpKyspCiAgICAgewotICAgICAgICBtRm9yY2VTZXRWZXJ0ZXhTYW1w
bGVyU3RhdGVzW2ldID0gdHJ1ZTsKLSAgICAgICAgbUN1clZlcnRleFRleHR1cmVTZXJpYWxzW2ld
ID0gMDsKKyAgICAgICAgbUN1clZlcnRleFNhbXBsZXJTdGF0ZXNbaV0uZm9yY2VTZXQgPSB0cnVl
OworICAgICAgICBtQ3VyVmVydGV4VGV4dHVyZXNbaV0gICAgICAgICAgICAgICA9IGFuZ2xlOjpE
aXJ0eVBvaW50ZXI7CiAgICAgfQogCi0gICAgQVNTRVJUKG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0
YXRlcy5zaXplKCkgPT0gbUN1clBpeGVsVGV4dHVyZVNlcmlhbHMuc2l6ZSgpKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1Gb3JjZVNldFBpeGVsU2FtcGxlclN0YXRlcy5zaXpl
KCk7IGkrKykKKyAgICBBU1NFUlQobUN1clBpeGVsU2FtcGxlclN0YXRlcy5zaXplKCkgPT0gbUN1
clBpeGVsVGV4dHVyZXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXMuc2l6ZSgpOyBpKyspCiAgICAgewotICAgICAgICBtRm9y
Y2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXNbaV0gPSB0cnVlOwotICAgICAgICBtQ3VyUGl4ZWxUZXh0
dXJlU2VyaWFsc1tpXSA9IDA7CisgICAgICAgIG1DdXJQaXhlbFNhbXBsZXJTdGF0ZXNbaV0uZm9y
Y2VTZXQgPSB0cnVlOworICAgICAgICBtQ3VyUGl4ZWxUZXh0dXJlc1tpXSAgICAgICAgICAgICAg
ID0gYW5nbGU6OkRpcnR5UG9pbnRlcjsKICAgICB9CiAKICAgICBtQXBwbGllZElCU2VyaWFsID0g
MDsKICAgICBtQXBwbGllZFZlcnRleFNoYWRlciA9IE5VTEw7CiAgICAgbUFwcGxpZWRQaXhlbFNo
YWRlciA9IE5VTEw7CiAgICAgbUFwcGxpZWRQcm9ncmFtU2VyaWFsID0gMDsKLSAgICBtRHhVbmlm
b3Jtc0RpcnR5ID0gdHJ1ZTsKKyAgICBtU3RhdGVNYW5hZ2VyLmZvcmNlU2V0RFhVbmlmb3Jtc1N0
YXRlKCk7CiAKICAgICBtVmVydGV4RGVjbGFyYXRpb25DYWNoZS5tYXJrU3RhdGVEaXJ0eSgpOwog
fQpAQCAtMjQ3MiwxOSArMjI0OSwyNiBAQAogICAgIHJldHVybiByZW5kZXJlclN0cmluZy5zdHIo
KTsKIH0KIAotR1VJRCBSZW5kZXJlcjk6OmdldEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKK0Rl
dmljZUlkZW50aWZpZXIgUmVuZGVyZXI5OjpnZXRBZGFwdGVySWRlbnRpZmllcigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1BZGFwdGVySWRlbnRpZmllci5EZXZpY2VJZGVudGlmaWVyOworICAgIERl
dmljZUlkZW50aWZpZXIgZGV2aWNlSWRlbnRpZmllciA9IHsgMCB9OworICAgIGRldmljZUlkZW50
aWZpZXIuVmVuZG9ySWQgPSBzdGF0aWNfY2FzdDxVSU5UPihtQWRhcHRlcklkZW50aWZpZXIuVmVu
ZG9ySWQpOworICAgIGRldmljZUlkZW50aWZpZXIuRGV2aWNlSWQgPSBzdGF0aWNfY2FzdDxVSU5U
PihtQWRhcHRlcklkZW50aWZpZXIuRGV2aWNlSWQpOworICAgIGRldmljZUlkZW50aWZpZXIuU3Vi
U3lzSWQgPSBzdGF0aWNfY2FzdDxVSU5UPihtQWRhcHRlcklkZW50aWZpZXIuU3ViU3lzSWQpOwor
ICAgIGRldmljZUlkZW50aWZpZXIuUmV2aXNpb24gPSBzdGF0aWNfY2FzdDxVSU5UPihtQWRhcHRl
cklkZW50aWZpZXIuUmV2aXNpb24pOworICAgIGRldmljZUlkZW50aWZpZXIuRmVhdHVyZUxldmVs
ID0gMDsKKworICAgIHJldHVybiBkZXZpY2VJZGVudGlmaWVyOwogfQogCiB1bnNpZ25lZCBpbnQg
UmVuZGVyZXI5OjpnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gMjsgICAvLyBkeF9WaWV3QWRqdXN0IGFuZCBkeF9EZXB0aFJhbmdlLgorICAgIHJl
dHVybiBkM2Q5X2dsOjpHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKCk7CiB9CiAKIHVu
c2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIDM7ICAgLy8gZHhfVmlld0Nvb3JkcywgZHhfRGVwdGhGcm9u
dCBhbmQgZHhfRGVwdGhSYW5nZS4KKyAgICByZXR1cm4gZDNkOV9nbDo6R2V0UmVzZXJ2ZWRGcmFn
bWVudFVuaWZvcm1WZWN0b3JzKCk7CiB9CiAKIHVuc2lnbmVkIGludCBSZW5kZXJlcjk6OmdldFJl
c2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSBjb25zdApAQCAtMjUwMywxMSArMjI4Nyw2IEBA
CiAgICAgcmV0dXJuIChtRDNkOUV4ICE9IE5VTEwpICYmICFnbDo6RGVidWdBbm5vdGF0aW9uc0Fj
dGl2ZSgpOwogfQogCi1ib29sIFJlbmRlcmVyOTo6Z2V0UG9zdFN1YkJ1ZmZlclN1cHBvcnQoKSBj
b25zdAotewotICAgIHJldHVybiB0cnVlOwotfQotCiBpbnQgUmVuZGVyZXI5OjpnZXRNYWpvclNo
YWRlck1vZGVsKCkgY29uc3QKIHsKICAgICByZXR1cm4gRDNEU0hBREVSX1ZFUlNJT05fTUFKT1Io
bURldmljZUNhcHMuUGl4ZWxTaGFkZXJWZXJzaW9uKTsKQEAgLTI1OTIsNiArMjM3MSw3IEBACiAg
ICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGdldFJlbmRlcmVyVGV4dHVy
ZUNhcHMoKS5nZXQoZm9ybWF0KTsKICAgICBHTHVpbnQgc3VwcG9ydGVkU2FtcGxlcyA9IHRleHR1
cmVDYXBzLmdldE5lYXJlc3RTYW1wbGVzKHNhbXBsZXMpOwogCisgICAgSURpcmVjdDNEVGV4dHVy
ZTkgKnRleHR1cmUgICAgICA9IG51bGxwdHI7CiAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnJlbmRl
clRhcmdldCA9IE5VTEw7CiAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKQogICAgIHsK
QEAgLTI2MDcsMTAgKzIzODcsMjMgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJlcXVpcmVzSW5pdGlhbGl6YXRpb24gPSAoZDNkOUZvcm1hdEluZm8u
ZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0gTlVMTCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBt
RGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXQod2lkdGgsIGhlaWdodCwgZDNkOUZvcm1hdEluZm8u
cmVuZGVyRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsX2QzZDk6OkdldE11bHRpc2FtcGxlVHlwZShzdXBwb3J0ZWRTYW1wbGVzKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBGQUxTRSwg
JnJlbmRlclRhcmdldCwgTlVMTCk7CisgICAgICAgICAgICByZXF1aXJlc0luaXRpYWxpemF0aW9u
ID0gKGQzZDlGb3JtYXRJbmZvLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9IG51bGxwdHIpOwor
ICAgICAgICAgICAgaWYgKHN1cHBvcnRlZFNhbXBsZXMgPiAwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldCh3aWR0aCwg
aGVpZ2h0LCBkM2Q5Rm9ybWF0SW5mby5yZW5kZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkdldE11bHRpc2FtcGxl
VHlwZShzdXBwb3J0ZWRTYW1wbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgRkFMU0UsICZyZW5kZXJUYXJnZXQsIG51bGxwdHIpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUoCisgICAgICAgICAgICAgICAg
ICAgIHdpZHRoLCBoZWlnaHQsIDEsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwgZDNkOUZvcm1hdElu
Zm8udGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBnZXRUZXh0dXJlUG9vbChEM0RVU0FH
RV9SRU5ERVJUQVJHRVQpLCAmdGV4dHVyZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYg
KCFGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHRleHR1cmUtPkdldFN1cmZhY2VMZXZlbCgwLCAmcmVuZGVyVGFyZ2V0KTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCkBAIC0yNjMyLDEzICsyNDI1LDM2IEBACiAgICAgICAgIH0KICAgICB9
CiAKLSAgICAqb3V0UlQgPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDkocmVuZGVyVGFyZ2V0LCBm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDEsIHN1cHBvcnRlZFNhbXBsZXMpOworICAgICpvdXRSVCA9
IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0OSh0ZXh0dXJlLCAwLCByZW5kZXJUYXJnZXQsIGZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydGVkU2FtcGxlcyk7CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVEZWZhdWx0RnJhbWVidWZm
ZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKQorZ2w6OkVycm9yIFJlbmRlcmVy
OTo6Y3JlYXRlUmVuZGVyVGFyZ2V0Q29weShSZW5kZXJUYXJnZXREM0QgKnNvdXJjZSwgUmVuZGVy
VGFyZ2V0RDNEICoqb3V0UlQpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUZyYW1lYnVmZmVyKGRhdGEp
OworICAgIEFTU0VSVChzb3VyY2UgIT0gbnVsbHB0cik7CisKKyAgICBSZW5kZXJUYXJnZXREM0Qg
Km5ld1JUID0gbnVsbHB0cjsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVSZW5kZXJUYXJn
ZXQoc291cmNlLT5nZXRXaWR0aCgpLCBzb3VyY2UtPmdldEhlaWdodCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtPmdldEludGVybmFsRm9ybWF0KCks
IHNvdXJjZS0+Z2V0U2FtcGxlcygpLCAmbmV3UlQpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgUmVuZGVyVGFyZ2V0
OSAqc291cmNlOSA9IEdldEFzPFJlbmRlclRhcmdldDk+KHNvdXJjZSk7CisgICAgUmVuZGVyVGFy
Z2V0OSAqZGVzdDkgICA9IEdldEFzPFJlbmRlclRhcmdldDk+KG5ld1JUKTsKKworICAgIEhSRVNV
TFQgcmVzdWx0ID0gbURldmljZS0+U3RyZXRjaFJlY3Qoc291cmNlOS0+Z2V0U3VyZmFjZSgpLCBu
dWxscHRyLCBkZXN0OS0+Z2V0U3VyZmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwgRDNEVEVYRl9OT05FKTsKKyAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCisgICAgeworICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRPRlZJREVP
TUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKKyAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNvcHkgcmVuZGVyIHRhcmdldCwgcmVz
dWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgfQorCisgICAgKm91dFJUID0gbmV3UlQ7CisgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKIEZyYW1lYnVmZmVySW1wbCAqUmVu
ZGVyZXI5OjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRh
dGEpCkBAIC0yNjQ2LDI3ICsyNDYyLDI1IEBACiAgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlcjko
ZGF0YSwgdGhpcyk7CiB9CiAKLUNvbXBpbGVySW1wbCAqUmVuZGVyZXI5OjpjcmVhdGVDb21waWxl
cihjb25zdCBnbDo6RGF0YSAmZGF0YSkKK1NoYWRlckltcGwgKlJlbmRlcmVyOTo6Y3JlYXRlU2hh
ZGVyKGNvbnN0IGdsOjpTaGFkZXI6OkRhdGEgJmRhdGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21w
aWxlckQzRChkYXRhLCBTSF9ITFNMOV9PVVRQVVQpOworICAgIHJldHVybiBuZXcgU2hhZGVyRDNE
KGRhdGEpOwogfQogCi1TaGFkZXJJbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVNoYWRlcihHTGVudW0g
dHlwZSkKK1Byb2dyYW1JbXBsICpSZW5kZXJlcjk6OmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlBy
b2dyYW06OkRhdGEgJmRhdGEpCiB7Ci0gICAgcmV0dXJuIG5ldyBTaGFkZXJEM0QodHlwZSk7Cisg
ICAgcmV0dXJuIG5ldyBQcm9ncmFtRDNEKGRhdGEsIHRoaXMpOwogfQogCi1Qcm9ncmFtSW1wbCAq
UmVuZGVyZXI5OjpjcmVhdGVQcm9ncmFtKCkKK2dsOjpFcnJvciBSZW5kZXJlcjk6OmxvYWRFeGVj
dXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlclR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFZhcnlpbmc+ICZzdHJlYW1PdXRWYXJ5aW5ncywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVy
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckV4ZWN1dGFibGVE
M0QgKipvdXRFeGVjdXRhYmxlKQogewotICAgIHJldHVybiBuZXcgUHJvZ3JhbUQzRCh0aGlzKTsK
LX0KLQotZ2w6OkVycm9yIFJlbmRlcmVyOTo6bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVu
Y3Rpb24sIHNpemVfdCBsZW5ndGgsIFNoYWRlclR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5aW5nPiAm
dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywgU2hhZGVyRXhlY3V0YWJsZUQzRCAq
Km91dEV4ZWN1dGFibGUpCi17CiAgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNrIGlzIG5vdCBzdXBw
b3J0ZWQgaW4gRVMyIG9yIEQzRDkKLSAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cy5zaXplKCkgPT0gMCk7CisgICAgQVNTRVJUKHN0cmVhbU91dFZhcnlpbmdzLmVtcHR5KCkpOwog
CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKQEAgLTI3MDAsMTMgKzI1MTQsMTYgQEAKICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyOTo6
Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlckhMU0wsIFNoYWRlclR5cGUgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFZhcnlpbmc+ICZ0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsIGNvbnN0IEQzRENvbXBpbGVy
V29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAorZ2w6OkVycm9yIFJlbmRlcmVyOTo6Y29tcGlsZVRv
RXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlckhMU0wsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclR5cGUgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNE
VmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMg
Jndvcmthcm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3R1YWJsZSkKIHsKICAgICAvLyBUcmFuc2Zvcm0g
ZmVlZGJhY2sgaXMgbm90IHN1cHBvcnRlZCBpbiBFUzIgb3IgRDNEOQotICAgIEFTU0VSVCh0cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnNpemUoKSA9PSAwKTsKKyAgICBBU1NFUlQoc3RyZWFtT3V0
VmFyeWluZ3MuZW1wdHkoKSk7CiAKICAgICBjb25zdCBjaGFyICpwcm9maWxlVHlwZSA9IE5VTEw7
CiAgICAgc3dpdGNoICh0eXBlKQpAQCAtMjc2OSw3ICsyNTg2LDcgQEAKICAgICB9CiAKICAgICBl
cnJvciA9IGxvYWRFeGVjdXRhYmxlKGJpbmFyeS0+R2V0QnVmZmVyUG9pbnRlcigpLCBiaW5hcnkt
PkdldEJ1ZmZlclNpemUoKSwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MsIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsIG91dEV4ZWN0dWFi
bGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtT3V0VmFyeWluZ3MsIHNlcGFy
YXRlZE91dHB1dEJ1ZmZlcnMsIG91dEV4ZWN0dWFibGUpOwogCiAgICAgU2FmZVJlbGVhc2UoYmlu
YXJ5KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQpAQCAtMjg2MCw3ICsyNjc3LDggQEAKICAg
ICByZXR1cm4gSW1hZ2U5OjpnZW5lcmF0ZU1pcG1hcChkc3Q5LCBzcmM5KTsKIH0KIAotZ2w6OkVy
cm9yIFJlbmRlcmVyOTo6Z2VuZXJhdGVNaXBtYXBzVXNpbmdEM0QoVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKK2dsOjpFcnJvciBS
ZW5kZXJlcjk6OmdlbmVyYXRlTWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlKQogewogICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CkBAIC0yODcyLDYgKzI2OTAsMTEgQEAKICAg
ICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlOV8yRCh0aGlzLCBzd2FwQ2hhaW45KTsKIH0KIAor
VGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyOTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShF
R0xJbWFnZUQzRCAqZWdsSW1hZ2UpCit7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTlf
RUdMSW1hZ2UodGhpcywgZWdsSW1hZ2UpOworfQorCiBUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXI5
OjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5k
ZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQgbGV2ZWxzLCBib29s
IGhpbnRMZXZlbFplcm9Pbmx5KQogewogICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2U5XzJE
KHRoaXMsIGludGVybmFsZm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIGxldmVs
cyk7CkBAIC0yOTMwLDI0ICsyNzUzLDEwNyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmVy
dGV4Q29udmVyc2lvblR5cGUgUmVuZGVyZXI5OjpnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZShjb25z
dCBnbDo6VmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhGb3JtYXQpIGNvbnN0CitWZXJ0ZXhDb252ZXJzaW9u
VHlwZSBSZW5kZXJlcjk6OmdldFZlcnRleENvbnZlcnNpb25UeXBlKGdsOjpWZXJ0ZXhGb3JtYXRU
eXBlIHZlcnRleEZvcm1hdFR5cGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQzZDk6OkdldFZlcnRl
eEZvcm1hdEluZm8oZ2V0Q2Fwc0RlY2xUeXBlcygpLCB2ZXJ0ZXhGb3JtYXQpLmNvbnZlcnNpb25U
eXBlOworICAgIHJldHVybiBkM2Q5OjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdldENhcHNEZWNsVHlw
ZXMoKSwgdmVydGV4Rm9ybWF0VHlwZSkuY29udmVyc2lvblR5cGU7CiB9CiAKLUdMZW51bSBSZW5k
ZXJlcjk6OmdldFZlcnRleENvbXBvbmVudFR5cGUoY29uc3QgZ2w6OlZlcnRleEZvcm1hdCAmdmVy
dGV4Rm9ybWF0KSBjb25zdAorR0xlbnVtIFJlbmRlcmVyOTo6Z2V0VmVydGV4Q29tcG9uZW50VHlw
ZShnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdAogewotICAgIHJl
dHVybiBkM2Q5OjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdldENhcHNEZWNsVHlwZXMoKSwgdmVydGV4
Rm9ybWF0KS5jb21wb25lbnRUeXBlOworICAgIHJldHVybiBkM2Q5OjpHZXRWZXJ0ZXhGb3JtYXRJ
bmZvKGdldENhcHNEZWNsVHlwZXMoKSwgdmVydGV4Rm9ybWF0VHlwZSkuY29tcG9uZW50VHlwZTsK
IH0KIAotdm9pZCBSZW5kZXJlcjk6OmdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6
OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVu
c2lvbnMpIGNvbnN0CitnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+IFJlbmRlcmVyOTo6
Z2V0VmVydGV4U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNv
bnN0CiB7Ci0gICAgZDNkOV9nbDo6R2VuZXJhdGVDYXBzKG1EM2Q5LCBtRGV2aWNlLCBtRGV2aWNl
VHlwZSwgbUFkYXB0ZXIsIG91dENhcHMsIG91dFRleHR1cmVDYXBzLCBvdXRFeHRlbnNpb25zKTsK
KyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlID0gZ2w6OkdldFZlcnRl
eEZvcm1hdFR5cGUoYXR0cmliLCBHTF9GTE9BVCk7CisgICAgY29uc3QgZDNkOTo6VmVydGV4Rm9y
bWF0ICZkM2Q5VmVydGV4SW5mbyA9CisgICAgICAgIGQzZDk6OkdldFZlcnRleEZvcm1hdEluZm8o
Z2V0Q2Fwc0RlY2xUeXBlcygpLCB2ZXJ0ZXhGb3JtYXRUeXBlKTsKKworICAgIGlmICghYXR0cmli
LmVuYWJsZWQpCisgICAgeworICAgICAgICByZXR1cm4gMTZ1OworICAgIH0KKworICAgIHVuc2ln
bmVkIGludCBlbGVtZW50Q291bnQgPSAwOworICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRy
aWIuZGl2aXNvciA9PSAwKQorICAgIHsKKyAgICAgICAgZWxlbWVudENvdW50ID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50Pihjb3VudCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IC8vIFJvdW5kIHVwIHRvIGRpdmlzb3IsIGlmIHBvc3NpYmxlCisgICAgICAgIGVsZW1lbnRDb3Vu
dCA9IFVuc2lnbmVkQ2VpbERpdmlkZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluc3RhbmNl
cyksIGF0dHJpYi5kaXZpc29yKTsKKyAgICB9CisKKyAgICBpZiAoZDNkOVZlcnRleEluZm8ub3V0
cHV0RWxlbWVudFNpemUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgp
IC8gZWxlbWVudENvdW50KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiTmV3IHZlcnRleCBidWZmZXIgc2l6ZSB3b3VsZCByZXN1bHQgaW4gYW4gb3Zl
cmZsb3cuIik7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
ZDNkOVZlcnRleEluZm8ub3V0cHV0RWxlbWVudFNpemUpICogZWxlbWVudENvdW50OwogfQogCi1X
b3JrYXJvdW5kcyBSZW5kZXJlcjk6OmdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdAordm9pZCBS
ZW5kZXJlcjk6OmdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpMaW1pdGF0aW9ucyAqb3V0TGltaXRhdGlv
bnMpIGNvbnN0CiB7CisgICAgZDNkOV9nbDo6R2VuZXJhdGVDYXBzKG1EM2Q5LCBtRGV2aWNlLCBt
RGV2aWNlVHlwZSwgbUFkYXB0ZXIsIG91dENhcHMsIG91dFRleHR1cmVDYXBzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRFeHRlbnNpb25zLCBvdXRMaW1pdGF0aW9ucyk7Cit9CisKK1dv
cmthcm91bmRzRDNEIFJlbmRlcmVyOTo6Z2VuZXJhdGVXb3JrYXJvdW5kcygpIGNvbnN0Cit7CiAg
ICAgcmV0dXJuIGQzZDk6OkdlbmVyYXRlV29ya2Fyb3VuZHMoKTsKIH0KIAordm9pZCBSZW5kZXJl
cjk6OmNyZWF0ZUFubm90YXRvcigpCit7CisgICAgbUFubm90YXRvciA9IG5ldyBEZWJ1Z0Fubm90
YXRvcjkoKTsKIH0KKworZ2w6OkVycm9yIFJlbmRlcmVyOTo6Y2xlYXJUZXh0dXJlcyhnbDo6U2Ft
cGxlclR5cGUgc2FtcGxlclR5cGUsIHNpemVfdCByYW5nZVN0YXJ0LCBzaXplX3QgcmFuZ2VFbmQp
Cit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogZmFzdGVyIHdheT8KKyAgICBmb3IgKHNpemVfdCBz
YW1wbGVySW5kZXggPSByYW5nZVN0YXJ0OyBzYW1wbGVySW5kZXggPCByYW5nZUVuZDsgc2FtcGxl
ckluZGV4KyspCisgICAgeworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRUZXh0dXJlKHNh
bXBsZXJUeXBlLCBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZXJJbmRleCksIG51bGxwdHIpOworICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKK30KKworZWdsOjpFcnJvciBSZW5kZXJlcjk6OmdldEVHTERldmljZShEZXZpY2VJbXBs
ICoqZGV2aWNlKQoreworICAgIGlmIChtRUdMRGV2aWNlID09IG51bGxwdHIpCisgICAgeworICAg
ICAgICBBU1NFUlQobURldmljZSAhPSBudWxscHRyKTsKKyAgICAgICAgbUVHTERldmljZSAgICAg
ICA9IG5ldyBEZXZpY2VEM0QoKTsKKyAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9IG1FR0xEZXZp
Y2UtPmluaXRpYWxpemUocmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNEOV9ERVZJ
Q0VfQU5HTEUsIEVHTF9GQUxTRSk7CisKKyAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgU2FmZURlbGV0ZShtRUdMRGV2aWNlKTsKKyAgICAgICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgICpkZXZpY2UgPSBzdGF0aWNf
Y2FzdDxEZXZpY2VJbXBsICo+KG1FR0xEZXZpY2UpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9TVUNDRVNTKTsKK30KKworUmVuZGVyZXI5OjpDdXJTYW1wbGVyU3RhdGU6OkN1clNhbXBsZXJT
dGF0ZSgpCisgICAgOiBmb3JjZVNldCh0cnVlKSwKKyAgICAgIGJhc2VMZXZlbChzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKSwKKyAgICAgIHNhbXBsZXJTdGF0ZSgpCit7Cit9CisK
K30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9SZW5kZXJlcjkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgJKHJldmlzaW9uIDE5
OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9SZW5kZXJlcjkuaAkod29ya2luZyBjb3B5KQpAQCAtMTcsNiArMTcsNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckNhY2hlLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaCIKIAog
bmFtZXNwYWNlIGdsCiB7CkBAIC0zMiwxMCArMzMsMTIgQEAKIHsKIGNsYXNzIEJsaXQ5OwogY2xh
c3MgSW5kZXhEYXRhTWFuYWdlcjsKK2NsYXNzIFByb2dyYW1EM0Q7CiBjbGFzcyBTdHJlYW1pbmdJ
bmRleEJ1ZmZlckludGVyZmFjZTsKIGNsYXNzIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOwog
Y2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CiBzdHJ1Y3QgQ2xlYXJQYXJhbWV0ZXJzOworc3RydWN0
IEQzRFVuaWZvcm07CiBzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZTsKIAogZW51bSBEM0Q5SW5p
dEVycm9yCkBAIC02OCw2ICs3MSw3IEBACiAgICAgdmlydHVhbCBib29sIHJlc2V0RGV2aWNlKCk7
CiAKICAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGdlbmVyYXRlRGlzcGxheUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9u
cyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0U2NlbmUo
KTsKICAgICB2b2lkIGVuZFNjZW5lKCk7CkBAIC03NSw5ICs3OSwxNCBAQAogICAgIGdsOjpFcnJv
ciBmbHVzaCgpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBmaW5pc2goKSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgc2hvdWxkQ3JlYXRlQ2hpbGRXaW5kb3dGb3JTdXJmYWNlKEVHTE5hdGl2ZVdpbmRv
d1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN3YXBDaGFpbkQzRCAq
Y3JlYXRlU3dhcENoYWluKE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csIEhBTkRMRSBzaGFyZUhh
bmRsZSwgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCk7
CisgICAgU3dhcENoYWluRDNEICpjcmVhdGVTd2FwQ2hhaW4oTmF0aXZlV2luZG93IG5hdGl2ZVdp
bmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5k
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVm
ZmVyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmll
bnRhdGlvbikgb3ZlcnJpZGU7CiAKKyAgICBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkg
b3ZlcnJpZGU7CisKICAgICBnbDo6RXJyb3IgYWxsb2NhdGVFdmVudFF1ZXJ5KElEaXJlY3QzRFF1
ZXJ5OSAqKm91dFF1ZXJ5KTsKICAgICB2b2lkIGZyZWVFdmVudFF1ZXJ5KElEaXJlY3QzRFF1ZXJ5
OSogcXVlcnkpOwogCkBAIC05MSwzNSArMTAwLDQyIEBACiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
c2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAq
dGV4dHVyZSk7CiAKICAgICBnbDo6RXJyb3Igc2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRh
dGEgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50IHZl
cnRleFVuaWZvcm1CdWZmZXJzW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMaW50IGZyYWdtZW50VW5pZm9ybUJ1ZmZlcnNbXSkgb3ZlcnJpZGU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmdmVydGV4VW5p
Zm9ybUJ1ZmZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPEdMaW50PiAmZnJhZ21lbnRVbmlmb3JtQnVmZmVycykgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGdsOjpFcnJvciBzZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJT
dGF0ZSAmcmFzdGVyU3RhdGUpOwotICAgIGdsOjpFcnJvciBzZXRCbGVuZFN0YXRlKGNvbnN0IGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0
YXRlLCBjb25zdCBnbDo6Q29sb3JGICZibGVuZENvbG9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUg
JmRlcHRoU3RlbmNpbFN0YXRlLCBpbnQgc3RlbmNpbFJlZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RlbmNpbEJhY2tSZWYsIGJvb2wgZnJvbnRGYWNl
Q0NXKTsKKyAgICBnbDo6RXJyb3IgdXBkYXRlU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdM
ZW51bSBkcmF3TW9kZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Npc3NvclJl
Y3RhbmdsZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydCwg
ZmxvYXQgek5lYXIsIGZsb2F0IHpGYXIsIEdMZW51bSBkcmF3TW9kZSwgR0xlbnVtIGZyb250RmFj
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVWaWV3cG9ydCk7Cisg
ICAgdm9pZCBzZXRTY2lzc29yUmVjdGFuZ2xlKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNjaXNzb3Is
IGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBnbDo6Q2FwcyAqY2Fw
cywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnZpZXdwb3J0LAor
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgek5lYXIsCisgICAgICAgICAgICAgICAgICAgICBm
bG9hdCB6RmFyLAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZyb250RmFjZSwKKyAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaWdub3JlVmlld3BvcnQpOwogCiAgICAgZ2w6OkVycm9yIGFwcGx5UmVuZGVyVGFyZ2V0KGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVCdWZmZXIpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJv
ciBhcHBseVJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xv
ckF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpOwotICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGFwcGx5U2hhZGVycyhnbDo6UHJvZ3JhbSAqcHJvZ3JhbSwgY29uc3QgZ2w6
OlZlcnRleEZvcm1hdCBpbnB1dExheW91dFtdLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJhc3Rlcml6
ZXJEaXNjYXJkLCBib29sIHRyYW5zZm9ybUZlZWRiYWNrQWN0aXZlKTsKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBhcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1JbXBsICZwcm9ncmFtLCBjb25zdCBz
dGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybSo+ICZ1bmlmb3JtQXJyYXkpOworICAgIGdsOjpF
cnJvciBhcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFVuaWZvcm0gKj4gJnVuaWZvcm1BcnJheSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gcHJp
bWl0aXZlVHlwZSwgR0xzaXplaSBlbGVtZW50Q291bnQsIGJvb2wgdXNlc1BvaW50U2l6ZSk7Ci0g
ICAgdmlydHVhbCBnbDo6RXJyb3IgYXBwbHlWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZz
dGF0ZSwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGlu
c3RhbmNlcyk7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgYXBwbHlJbmRleEJ1ZmZlcihjb25zdCBH
THZvaWQgKmluZGljZXMsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciwgR0xzaXplaSBj
b3VudCwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRl
eEluZm8pOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGFwcGx5VmVydGV4QnVmZmVyKGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pOworICAgIGdsOjpFcnJvciBhcHBseUluZGV4QnVm
ZmVyKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbykgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJzKGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBhcHBseVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAotICAgIGds
OjpFcnJvciBkcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIGJvb2wgdXNlc1BvaW50U2l6ZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIs
IGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgJmluZGV4SW5mbywgR0xzaXplaSBpbnN0YW5jZXMp
OwotCiAgICAgZ2w6OkVycm9yIGNsZWFyKGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJh
bXMsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmNvbG9yQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJB
dHRhY2htZW50ICpkZXB0aFN0ZW5jaWxCdWZmZXIpOwpAQCAtMTMwLDkgKzE0Niw5IEBACiAgICAg
Ym9vbCB0ZXN0RGV2aWNlTG9zdCgpIG92ZXJyaWRlOwogICAgIGJvb2wgdGVzdERldmljZVJlc2V0
dGFibGUoKSBvdmVycmlkZTsKIAotICAgIFZlbmRvcklEIGdldFZlbmRvcklkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmVuZG9ySUQgZ2V0VmVuZG9ySWQoKSBjb25zdDsKICAgICBzdGQ6OnN0cmlu
ZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgR1VJRCBnZXRB
ZGFwdGVySWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIERldmljZUlkZW50aWZpZXIg
Z2V0QWRhcHRlcklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIElEaXJlY3QzRERl
dmljZTkgKmdldERldmljZSgpIHsgcmV0dXJuIG1EZXZpY2U7IH0KICAgICB2b2lkICpnZXREM0RE
ZXZpY2UoKSBvdmVycmlkZTsKQEAgLTE0MSw5ICsxNTcsOSBAQAogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgaW50IGdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpIGNvbnN0OwogICAgIHZp
cnR1YWwgdW5zaWduZWQgaW50IGdldFJlc2VydmVkVmVydGV4VW5pZm9ybUJ1ZmZlcnMoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGludCBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1
ZmZlcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdldFBvc3RTdWJCdWZmZXJTdXBwb3J0KCkgY29uc3Q7
CiAKKyAgICBib29sIGdldFNoYXJlSGFuZGxlU3VwcG9ydCgpIGNvbnN0OworCiAgICAgdmlydHVh
bCBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIGNvbnN0OwogICAgIGludCBnZXRNaW5vclNoYWRl
ck1vZGVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjpzdHJpbmcgZ2V0U2hhZGVyTW9kZWxT
dWZmaXgoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2MiwzMSArMTc4LDM4IEBACiAKICAgICAvLyBS
ZW5kZXJUYXJnZXQgY3JlYXRpb24KICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVhdGVSZW5kZXJU
YXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIHNhbXBs
ZXMsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKTsKKyAgICBnbDo6RXJyb3IgY3JlYXRlUmVuZGVy
VGFyZ2V0Q29weShSZW5kZXJUYXJnZXREM0QgKnNvdXJjZSwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0
UlQpIG92ZXJyaWRlOwogCiAgICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24KLSAgICBGcmFtZWJ1
ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6
OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwogICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVi
dWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKIAogICAg
IC8vIFNoYWRlciBjcmVhdGlvbgotICAgIHZpcnR1YWwgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21w
aWxlcihjb25zdCBnbDo6RGF0YSAmZGF0YSk7Ci0gICAgdmlydHVhbCBTaGFkZXJJbXBsICpjcmVh
dGVTaGFkZXIoR0xlbnVtIHR5cGUpOwotICAgIHZpcnR1YWwgUHJvZ3JhbUltcGwgKmNyZWF0ZVBy
b2dyYW0oKTsKKyAgICBTaGFkZXJJbXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlcjo6
RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CisgICAgUHJvZ3JhbUltcGwgKmNyZWF0ZVByb2dyYW0oY29u
c3QgZ2w6OlByb2dyYW06OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwogCiAgICAgLy8gU2hhZGVyIG9w
ZXJhdGlvbnMKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lk
ICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgU2hhZGVyVHlwZSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRWYXJ5
aW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsIFNoYWRlckV4ZWN1dGFi
bGVEM0QgKipvdXRFeGVjdXRhYmxlKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb21waWxlVG9F
eGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
SExTTCwgU2hhZGVyVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFZhcnlpbmc+ICZ0cmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzLCBjb25zdCBEM0RDb21waWxlcldvcmthcm91
bmRzICZ3b3JrYXJvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxlKTsKLSAgICB2aXJ0dWFsIFVu
aWZvcm1TdG9yYWdlRDNEICpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUp
OworICAgIGdsOjpFcnJvciBsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxEM0RWYXJ5aW5nPiAmc3RyZWFtT3V0VmFyeWluZ3MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVycywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4
ZWN1dGFibGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb21waWxlVG9FeGVjdXRhYmxlKGds
OjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJITFNMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxEM0RWYXJ5aW5nPiAmc3RyZWFtT3V0VmFyeWluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEQzRENvbXBpbGVyV29y
a2Fyb3VuZHMgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxlKSBvdmVycmlkZTsKKyAgICBVbmlm
b3JtU3RvcmFnZUQzRCAqY3JlYXRlVW5pZm9ybVN0b3JhZ2Uoc2l6ZV90IHN0b3JhZ2VTaXplKSBv
dmVycmlkZTsKIAogICAgIC8vIEltYWdlIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIEltYWdlRDNE
ICpjcmVhdGVJbWFnZSgpOwogICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChJbWFnZUQzRCAq
ZGVzdCwgSW1hZ2VEM0QgKnNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGdlbmVyYXRl
TWlwbWFwc1VzaW5nRDNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBjb25zdCBnbDo6U2FtcGxl
clN0YXRlICZzYW1wbGVyU3RhdGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcHNVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRl
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFRleHR1cmVTdG9yYWdlICpjcmVhdGVUZXh0dXJlU3Rv
cmFnZTJEKFN3YXBDaGFpbkQzRCAqc3dhcENoYWluKTsKKyAgICBUZXh0dXJlU3RvcmFnZSAqY3Jl
YXRlVGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShFR0xJbWFnZUQzRCAqZWdsSW1hZ2UpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoR0xl
bnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQsIGludCBsZXZlbHMsIGJvb2wgaGludExldmVsWmVyb09ubHkpOwogICAgIHZp
cnR1YWwgVGV4dHVyZVN0b3JhZ2UgKmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShHTGVudW0gaW50
ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBpbnQgc2l6ZSwgaW50IGxldmVscywgYm9v
bCBoaW50TGV2ZWxaZXJvT25seSk7CiAgICAgdmlydHVhbCBUZXh0dXJlU3RvcmFnZSAqY3JlYXRl
VGV4dHVyZVN0b3JhZ2UzRChHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgaW50IGxldmVs
cyk7CkBAIC0yMDQsNyArMjI3LDcgQEAKICAgICB2aXJ0dWFsIEluZGV4QnVmZmVyICpjcmVhdGVJ
bmRleEJ1ZmZlcigpOwogCiAgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCi0gICAgdmlydHVh
bCBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KCk7CisgICAgVmVydGV4QXJyYXlJ
bXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEp
IG92ZXJyaWRlOwogCiAgICAgLy8gUXVlcnkgYW5kIEZlbmNlIGNyZWF0aW9uCiAgICAgdmlydHVh
bCBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKTsKQEAgLTIxNCwxOSArMjM3LDI3
IEBACiAgICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCiAgICAgdmlydHVhbCBUcmFu
c2Zvcm1GZWVkYmFja0ltcGwqIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKKyAgICAvLyBT
dHJlYW0gQ3JlYXRpb24KKyAgICBTdHJlYW1JbXBsICpjcmVhdGVTdHJlYW0oY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCiAgICAgLy8gQnVmZmVyLXRvLXRleHR1
cmUgYW5kIFRleHR1cmUtdG8tYnVmZmVyIGNvcGllcwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0Zhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBnbDo6RXJyb3IgZmFzdENvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywgdW5zaWduZWQgaW50IG9mZnNldCwgUmVuZGVyVGFyZ2V0
RDNEICpkZXN0UmVuZGVyVGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0xlbnVtIHNvdXJjZVBpeGVs
c1R5cGUsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhKTsKIAorICAgIHZvaWQgc3luY1N0YXRlKGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZiaXRtYXNr
KSBvdmVycmlkZTsKKwogICAgIC8vIEQzRDktcmVuZGVyZXIgc3BlY2lmaWMgbWV0aG9kcwogICAg
IGdsOjpFcnJvciBib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNE
U3VyZmFjZTkgKmRlc3QpOwogCiAgICAgRDNEUE9PTCBnZXRUZXh0dXJlUG9vbChEV09SRCB1c2Fn
ZSkgY29uc3Q7CiAKICAgICBib29sIGdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgVmVydGV4Q29udmVyc2lvblR5cGUgZ2V0VmVydGV4Q29udmVy
c2lvblR5cGUoY29uc3QgZ2w6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0KSBjb25zdDsKLSAg
ICB2aXJ0dWFsIEdMZW51bSBnZXRWZXJ0ZXhDb21wb25lbnRUeXBlKGNvbnN0IGdsOjpWZXJ0ZXhG
b3JtYXQgJnZlcnRleEZvcm1hdCkgY29uc3Q7CisgICAgVmVydGV4Q29udmVyc2lvblR5cGUgZ2V0
VmVydGV4Q29udmVyc2lvblR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlw
ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR0xlbnVtIGdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6
OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBnZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIGNvcHlUb1Jl
bmRlclRhcmdldChJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwgSURpcmVjdDNEU3VyZmFjZTkgKnNv
dXJjZSwgYm9vbCBmcm9tTWFuYWdlZCk7CiAKQEAgLTIzNCwxNSArMjY1LDQwIEBACiAKICAgICBE
M0RERVZUWVBFIGdldEQzRDlEZXZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbURldmljZVR5cGU7
IH0KIAorICAgIGVnbDo6RXJyb3IgZ2V0RUdMRGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92
ZXJyaWRlOworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIGNyZWF0ZUFubm90YXRvcigpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBjbGVhclRleHR1cmVzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVy
VHlwZSwgc2l6ZV90IHJhbmdlU3RhcnQsIHNpemVfdCByYW5nZUVuZCkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGFwcGx5U2hhZGVyc0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBk
cmF3TW9kZSkgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKLSAgICB2b2lkIGdlbmVyYXRlQ2Fwcyhn
bDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywgZ2w6
OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdvcmthcm91
bmRzIGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
ZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzdGFydFZlcnRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpEYXRhICZkYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERh
dGEgJmluZGV4SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIGdlbmVy
YXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJl
Q2FwcywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25z
KSBjb25zdCBvdmVycmlkZTsKKworICAgIFdvcmthcm91bmRzRDNEIGdlbmVyYXRlV29ya2Fyb3Vu
ZHMoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRCbGVuZERlcHRoUmFzdGVy
U3RhdGVzKGNvbnN0IGdsOjpEYXRhICZnbERhdGEsIEdMZW51bSBkcmF3TW9kZSk7CisKICAgICB2
b2lkIHJlbGVhc2UoKTsKIAotICAgIHZvaWQgYXBwbHlVbmlmb3JtbmZ2KGdsOjpMaW5rZWRVbmlm
b3JtICp0YXJnZXRVbmlmb3JtLCBjb25zdCBHTGZsb2F0ICp2KTsKLSAgICB2b2lkIGFwcGx5VW5p
Zm9ybW5pdihnbDo6TGlua2VkVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xpbnQgKnYp
OwotICAgIHZvaWQgYXBwbHlVbmlmb3JtbmJ2KGdsOjpMaW5rZWRVbmlmb3JtICp0YXJnZXRVbmlm
b3JtLCBjb25zdCBHTGludCAqdik7CisgICAgdm9pZCBhcHBseVVuaWZvcm1uZnYoY29uc3QgRDNE
VW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgdm9pZCBhcHBs
eVVuaWZvcm1uaXYoY29uc3QgRDNEVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgY29uc3QgR0xpbnQg
KnYpOworICAgIHZvaWQgYXBwbHlVbmlmb3JtbmJ2KGNvbnN0IEQzRFVuaWZvcm0gKnRhcmdldFVu
aWZvcm0sIGNvbnN0IEdMaW50ICp2KTsKIAogICAgIGdsOjpFcnJvciBkcmF3TGluZUxvb3AoR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgaW50IG1pbklu
ZGV4LCBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIpOwogICAgIGdsOjpFcnJvciBkcmF3
SW5kZXhlZFBvaW50cyhHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpp
bmRpY2VzLCBpbnQgbWluSW5kZXgsIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlcik7CkBA
IC0yOTIsNjQgKzM0OCwzMiBAQAogICAgIHVuc2lnbmVkIGludCBtQXBwbGllZERlcHRoU3RlbmNp
bFNlcmlhbDsKICAgICBib29sIG1EZXB0aFN0ZW5jaWxJbml0aWFsaXplZDsKICAgICBib29sIG1S
ZW5kZXJUYXJnZXREZXNjSW5pdGlhbGl6ZWQ7Ci0gICAgdW5zaWduZWQgaW50IG1DdXJTdGVuY2ls
U2l6ZTsKLSAgICB1bnNpZ25lZCBpbnQgbUN1ckRlcHRoU2l6ZTsKIAotICAgIHN0cnVjdCBSZW5k
ZXJUYXJnZXREZXNjCi0gICAgewotICAgICAgICBzaXplX3Qgd2lkdGg7Ci0gICAgICAgIHNpemVf
dCBoZWlnaHQ7Ci0gICAgICAgIEQzREZPUk1BVCBmb3JtYXQ7Ci0gICAgfTsKLSAgICBSZW5kZXJU
YXJnZXREZXNjIG1SZW5kZXJUYXJnZXREZXNjOwotCiAgICAgSURpcmVjdDNEU3RhdGVCbG9jazkg
Km1NYXNrZWRDbGVhclNhdmVkU3RhdGU7CiAKLSAgICAvLyBwcmV2aW91c2x5IHNldCByZW5kZXIg
c3RhdGVzCi0gICAgYm9vbCBtRm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZTsKLSAgICBnbDo6RGVw
dGhTdGVuY2lsU3RhdGUgbUN1ckRlcHRoU3RlbmNpbFN0YXRlOwotICAgIGludCBtQ3VyU3RlbmNp
bFJlZjsKLSAgICBpbnQgbUN1clN0ZW5jaWxCYWNrUmVmOwotICAgIGJvb2wgbUN1ckZyb250RmFj
ZUNDVzsKKyAgICBTdGF0ZU1hbmFnZXI5IG1TdGF0ZU1hbmFnZXI7CiAKLSAgICBib29sIG1Gb3Jj
ZVNldFJhc3RlclN0YXRlOwotICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgbUN1clJhc3RlclN0YXRl
OwotCi0gICAgYm9vbCBtRm9yY2VTZXRTY2lzc29yOwotICAgIGdsOjpSZWN0YW5nbGUgbUN1clNj
aXNzb3I7Ci0gICAgYm9vbCBtU2Npc3NvckVuYWJsZWQ7Ci0KLSAgICBib29sIG1Gb3JjZVNldFZp
ZXdwb3J0OwotICAgIGdsOjpSZWN0YW5nbGUgbUN1clZpZXdwb3J0OwotICAgIGZsb2F0IG1DdXJO
ZWFyOwotICAgIGZsb2F0IG1DdXJGYXI7Ci0gICAgZmxvYXQgbUN1ckRlcHRoRnJvbnQ7Ci0KLSAg
ICBib29sIG1Gb3JjZVNldEJsZW5kU3RhdGU7Ci0gICAgZ2w6OkJsZW5kU3RhdGUgbUN1ckJsZW5k
U3RhdGU7Ci0gICAgZ2w6OkNvbG9yRiBtQ3VyQmxlbmRDb2xvcjsKLSAgICBHTHVpbnQgbUN1clNh
bXBsZU1hc2s7Ci0KICAgICAvLyBDdXJyZW50bHkgYXBwbGllZCBzYW1wbGVyIHN0YXRlcwotICAg
IHN0ZDo6dmVjdG9yPGJvb2w+IG1Gb3JjZVNldFZlcnRleFNhbXBsZXJTdGF0ZXM7Ci0gICAgc3Rk
Ojp2ZWN0b3I8Z2w6OlNhbXBsZXJTdGF0ZT4gbUN1clZlcnRleFNhbXBsZXJTdGF0ZXM7CisgICAg
c3RydWN0IEN1clNhbXBsZXJTdGF0ZQorICAgIHsKKyAgICAgICAgQ3VyU2FtcGxlclN0YXRlKCk7
CiAKLSAgICBzdGQ6OnZlY3Rvcjxib29sPiBtRm9yY2VTZXRQaXhlbFNhbXBsZXJTdGF0ZXM7Ci0g
ICAgc3RkOjp2ZWN0b3I8Z2w6OlNhbXBsZXJTdGF0ZT4gbUN1clBpeGVsU2FtcGxlclN0YXRlczsK
KyAgICAgICAgYm9vbCBmb3JjZVNldDsKKyAgICAgICAgc2l6ZV90IGJhc2VMZXZlbDsKKyAgICAg
ICAgZ2w6OlNhbXBsZXJTdGF0ZSBzYW1wbGVyU3RhdGU7CisgICAgfTsKKyAgICBzdGQ6OnZlY3Rv
cjxDdXJTYW1wbGVyU3RhdGU+IG1DdXJWZXJ0ZXhTYW1wbGVyU3RhdGVzOworICAgIHN0ZDo6dmVj
dG9yPEN1clNhbXBsZXJTdGF0ZT4gbUN1clBpeGVsU2FtcGxlclN0YXRlczsKIAogICAgIC8vIEN1
cnJlbnRseSBhcHBsaWVkIHRleHR1cmVzCi0gICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBt
Q3VyVmVydGV4VGV4dHVyZVNlcmlhbHM7Ci0gICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBt
Q3VyUGl4ZWxUZXh0dXJlU2VyaWFsczsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50cHRyX3Q+IG1DdXJW
ZXJ0ZXhUZXh0dXJlczsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50cHRyX3Q+IG1DdXJQaXhlbFRleHR1
cmVzOwogCiAgICAgdW5zaWduZWQgaW50IG1BcHBsaWVkSUJTZXJpYWw7CiAgICAgSURpcmVjdDNE
VmVydGV4U2hhZGVyOSAqbUFwcGxpZWRWZXJ0ZXhTaGFkZXI7CiAgICAgSURpcmVjdDNEUGl4ZWxT
aGFkZXI5ICptQXBwbGllZFBpeGVsU2hhZGVyOwogICAgIHVuc2lnbmVkIGludCBtQXBwbGllZFBy
b2dyYW1TZXJpYWw7CiAKLSAgICBkeF9WZXJ0ZXhDb25zdGFudHMgbVZlcnRleENvbnN0YW50czsK
LSAgICBkeF9QaXhlbENvbnN0YW50cyBtUGl4ZWxDb25zdGFudHM7Ci0gICAgYm9vbCBtRHhVbmlm
b3Jtc0RpcnR5OwotCiAgICAgLy8gQSBwb29sIG9mIGV2ZW50IHF1ZXJpZXMgdGhhdCBhcmUgY3Vy
cmVudGx5IHVudXNlZC4KICAgICBzdGQ6OnZlY3RvcjxJRGlyZWN0M0RRdWVyeTkqPiBtRXZlbnRR
dWVyeVBvb2w7CiAgICAgVmVydGV4U2hhZGVyQ2FjaGUgbVZlcnRleFNoYWRlckNhY2hlOwpAQCAt
MzcyLDcgKzM5Niw4IEBACiAgICAgfSBtTnVsbENvbG9yYnVmZmVyQ2FjaGVbTlVNX05VTExfQ09M
T1JCVUZGRVJfQ0FDSEVfRU5UUklFU107CiAgICAgVUlOVCBtTWF4TnVsbENvbG9yYnVmZmVyTFJV
OwogCi0gICAgRGVidWdBbm5vdGF0b3I5IG1Bbm5vdGF0b3I7CisgICAgRGV2aWNlRDNEICptRUdM
RGV2aWNlOworICAgIHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+IG1UcmFuc2xhdGVk
QXR0cmliQ2FjaGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyRXhlY3V0YWJsZTkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9TaGFkZXJFeGVjdXRhYmxlOS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJFeGVj
dXRhYmxlOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDQgKzQ0LDQgQEAKICAgICByZXR1cm4g
bVBpeGVsRXhlY3V0YWJsZTsKIH0KIAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5
MDMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdGF0ZU1hbmFnZXI5LmNwcDogRGVmaW5lcyBhIGNs
YXNzIGZvciBjYWNoaW5nIEQzRDkgc3RhdGUKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgiCisKKyNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
Zm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5k
ZXJlcjlfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFt
ZWJ1ZmZlcjkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJl
cjkuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1N0YXRlTWFuYWdlcjk6OlN0YXRlTWFuYWdlcjko
UmVuZGVyZXI5ICpyZW5kZXJlcjkpCisgICAgOiBtQ3VyQmxlbmRTdGF0ZSgpLAorICAgICAgbUN1
ckJsZW5kQ29sb3IoMCwgMCwgMCwgMCksCisgICAgICBtQ3VyU2FtcGxlTWFzaygwKSwKKyAgICAg
IG1DdXJSYXN0ZXJTdGF0ZSgpLAorICAgICAgbUN1ckRlcHRoU2l6ZSgwKSwKKyAgICAgIG1DdXJE
ZXB0aFN0ZW5jaWxTdGF0ZSgpLAorICAgICAgbUN1clN0ZW5jaWxSZWYoMCksCisgICAgICBtQ3Vy
U3RlbmNpbEJhY2tSZWYoMCksCisgICAgICBtQ3VyRnJvbnRGYWNlQ0NXKDApLAorICAgICAgbUN1
clN0ZW5jaWxTaXplKDApLAorICAgICAgbUN1clNjaXNzb3JSZWN0KCksCisgICAgICBtQ3VyU2Np
c3NvckVuYWJsZWQoZmFsc2UpLAorICAgICAgbUN1clZpZXdwb3J0KCksCisgICAgICBtQ3VyTmVh
cigwLjBmKSwKKyAgICAgIG1DdXJGYXIoMC4wZiksCisgICAgICBtQ3VyRGVwdGhGcm9udCgwLjBm
KSwKKyAgICAgIG1DdXJJZ25vcmVWaWV3cG9ydChmYWxzZSksCisgICAgICBtUmVuZGVyZXI5KHJl
bmRlcmVyOSksCisgICAgICBtRGlydHlCaXRzKCkKK3sKKyAgICBtQmxlbmRTdGF0ZURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX0JMRU5EX0VOQUJMRUQpOworICAgIG1CbGVuZFN0YXRlRGlydHlCaXRz
LnNldChESVJUWV9CSVRfQkxFTkRfQ09MT1IpOworICAgIG1CbGVuZFN0YXRlRGlydHlCaXRzLnNl
dChESVJUWV9CSVRfQkxFTkRfRlVOQ1NfRVFVQVRJT05TKTsKKyAgICBtQmxlbmRTdGF0ZURpcnR5
Qml0cy5zZXQoRElSVFlfQklUX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSk7CisgICAgbUJsZW5k
U3RhdGVEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DT0xPUl9NQVNLKTsKKyAgICBtQmxlbmRTdGF0
ZURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RJVEhFUik7CisgICAgbUJsZW5kU3RhdGVEaXJ0eUJp
dHMuc2V0KERJUlRZX0JJVF9TQU1QTEVfTUFTSyk7CisKKyAgICBtUmFzdGVyaXplclN0YXRlRGly
dHlCaXRzLnNldChESVJUWV9CSVRfQ1VMTF9NT0RFKTsKKyAgICBtUmFzdGVyaXplclN0YXRlRGly
dHlCaXRzLnNldChESVJUWV9CSVRfREVQVEhfQklBUyk7CisKKyAgICBtRGVwdGhTdGVuY2lsU3Rh
dGVEaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0RFUFRIX01BU0spOworICAgIG1EZXB0
aFN0ZW5jaWxTdGF0ZURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfREVQVEhfRlVOQyk7
CisgICAgbURlcHRoU3RlbmNpbFN0YXRlRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9U
RVNUX0VOQUJMRUQpOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZURpcnR5Qml0cy5zZXQoRElSVFlf
QklUX1NURU5DSUxfRlVOQ1NfRlJPTlQpOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX1NURU5DSUxfRlVOQ1NfQkFDSyk7CisgICAgbURlcHRoU3RlbmNpbFN0
YXRlRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9XUklURU1BU0tfRlJPTlQpOworICAg
IG1EZXB0aFN0ZW5jaWxTdGF0ZURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfV1JJVEVN
QVNLX0JBQ0spOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZURpcnR5Qml0cy5zZXQoRElSVFlfQklU
X1NURU5DSUxfT1BTX0ZST05UKTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVEaXJ0eUJpdHMuc2V0
KERJUlRZX0JJVF9TVEVOQ0lMX09QU19CQUNLKTsKKworICAgIG1TY2lzc29yU3RhdGVEaXJ0eUJp
dHMuc2V0KERJUlRZX0JJVF9TQ0lTU09SX0VOQUJMRUQpOworICAgIG1TY2lzc29yU3RhdGVEaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9TQ0lTU09SX1JFQ1QpOworfQorCitTdGF0ZU1hbmFnZXI5Ojp+
U3RhdGVNYW5hZ2VyOSgpCit7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyOTo6Zm9yY2VTZXRCbGVu
ZFN0YXRlKCkKK3sKKyAgICBtRGlydHlCaXRzIHw9IG1CbGVuZFN0YXRlRGlydHlCaXRzOworfQor
Cit2b2lkIFN0YXRlTWFuYWdlcjk6OmZvcmNlU2V0UmFzdGVyU3RhdGUoKQoreworICAgIG1EaXJ0
eUJpdHMgfD0gbVJhc3Rlcml6ZXJTdGF0ZURpcnR5Qml0czsKK30KKwordm9pZCBTdGF0ZU1hbmFn
ZXI5Ojpmb3JjZVNldERlcHRoU3RlbmNpbFN0YXRlKCkKK3sKKyAgICBtRGlydHlCaXRzIHw9IG1E
ZXB0aFN0ZW5jaWxTdGF0ZURpcnR5Qml0czsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXI5Ojpmb3Jj
ZVNldFNjaXNzb3JTdGF0ZSgpCit7CisgICAgbURpcnR5Qml0cyB8PSBtU2Npc3NvclN0YXRlRGly
dHlCaXRzOworfQorCit2b2lkIFN0YXRlTWFuYWdlcjk6OmZvcmNlU2V0Vmlld3BvcnRTdGF0ZSgp
Cit7CisgICAgbUZvcmNlU2V0Vmlld3BvcnQgPSB0cnVlOworfQorCit2b2lkIFN0YXRlTWFuYWdl
cjk6OmZvcmNlU2V0RFhVbmlmb3Jtc1N0YXRlKCkKK3sKKyAgICBtRHhVbmlmb3Jtc0RpcnR5ID0g
dHJ1ZTsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXI5Ojp1cGRhdGVTdGVuY2lsU2l6ZUlmQ2hhbmdl
ZChib29sIGRlcHRoU3RlbmNpbEluaXRpYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RlbmNpbFNpemUpCit7CisgICAg
aWYgKCFkZXB0aFN0ZW5jaWxJbml0aWFsaXplZCB8fCBzdGVuY2lsU2l6ZSAhPSBtQ3VyU3RlbmNp
bFNpemUpCisgICAgeworICAgICAgICBtQ3VyU3RlbmNpbFNpemUgPSBzdGVuY2lsU2l6ZTsKKyAg
ICAgICAgZm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAgIH0KK30KKwordm9pZCBTdGF0
ZU1hbmFnZXI5OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0
YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3sKKyAgICBpZiAoIWRpcnR5Qml0cy5hbnkoKSkK
KyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gZGlydHlCaXQg
OiBhbmdsZTo6SXRlcmF0ZUJpdFNldChkaXJ0eUJpdHMpKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChkaXJ0eUJpdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZ
X0JJVF9CTEVORF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRCbGVuZFN0
YXRlKCkuYmxlbmQgIT0gbUN1ckJsZW5kU3RhdGUuYmxlbmQpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQkxFTkRfRU5BQkxF
RCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEJsZW5kQ29sb3IgYW5kIGZ1bmNzIGFuZCBlcXVh
dGlvbnMgaGFzIHRvIGJlIHNldCBpZiBibGVuZCBpcyBlbmFibGVkCisgICAgICAgICAgICAgICAg
ICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9DT0xPUik7CisgICAgICAgICAgICAg
ICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9CTEVORF9GVU5DU19FUVVBVElPTlMpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQkxFTkRfRlVOQ1M6CisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUgPSBzdGF0ZS5nZXRC
bGVuZFN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKGJsZW5kU3RhdGUuc291cmNlQmxlbmRS
R0IgIT0gbUN1ckJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IgfHwKKyAgICAgICAgICAgICAgICAg
ICAgYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgIT0gbUN1ckJsZW5kU3RhdGUuZGVzdEJsZW5kUkdC
IHx8CisgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSAhPSBt
Q3VyQmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhIHx8CisgICAgICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfQkxFTkRfRlVOQ1NfRVFVQVRJT05TKTsKKyAgICAgICAgICAgICAgICAgICAgLy8g
QmxlbmRDb2xvciBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2YgYmxlbmQgZnVuY3MKKyAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0NPTE9SKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0VRVUFUSU9OUzoKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0
ZSA9IHN0YXRlLmdldEJsZW5kU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoYmxlbmRTdGF0
ZS5ibGVuZEVxdWF0aW9uUkdCICE9IG1DdXJCbGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgfHwK
KyAgICAgICAgICAgICAgICAgICAgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEgIT0gbUN1
ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFU
SU9OUyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TQU1QTEVfQUxQ
SEFfVE9fQ09WRVJBR0VfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZ2V0Qmxl
bmRTdGF0ZSgpLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSAhPQorICAgICAgICAgICAgICAgICAgICBt
Q3VyQmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2UpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU0FNUExFX0FMUEhB
X1RPX0NPVkVSQUdFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NPTE9SX01BU0s6CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3Rh
dGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlKCk7CisgICAgICAgICAgICAgICAgaWYgKGJsZW5kU3Rh
dGUuY29sb3JNYXNrUmVkICE9IG1DdXJCbGVuZFN0YXRlLmNvbG9yTWFza1JlZCB8fAorICAgICAg
ICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuICE9IG1DdXJCbGVuZFN0YXRl
LmNvbG9yTWFza0dyZWVuIHx8CisgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29sb3JN
YXNrQmx1ZSAhPSBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlIHx8CisgICAgICAgICAgICAg
ICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgIT0gbUN1ckJsZW5kU3RhdGUuY29sb3JN
YXNrQWxwaGEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlC
aXRzLnNldChESVJUWV9CSVRfQ09MT1JfTUFTSyk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBnbDo6U3Rh
dGU6OkRJUlRZX0JJVF9ESVRIRVJfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUu
Z2V0QmxlbmRTdGF0ZSgpLmRpdGhlciAhPSBtQ3VyQmxlbmRTdGF0ZS5kaXRoZXIpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
RElUSEVSKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0NPTE9SOgorICAgICAgICAg
ICAgICAgIGlmIChzdGF0ZS5nZXRCbGVuZENvbG9yKCkgIT0gbUN1ckJsZW5kQ29sb3IpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9C
SVRfQkxFTkRfQ09MT1IpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VMTF9GQUNFX0VOQUJM
RUQ6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmN1bGxG
YWNlICE9IG1DdXJSYXN0ZXJTdGF0ZS5jdWxsRmFjZSkKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9DVUxMX01PREUpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Z2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VMTF9GQUNFOgorICAgICAgICAgICAgICAgIGlmIChzdGF0
ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKS5jdWxsTW9kZSAhPSBtQ3VyUmFzdGVyU3RhdGUuY3VsbE1v
ZGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNl
dChESVJUWV9CSVRfQ1VMTF9NT0RFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0ZST05UX0ZB
Q0U6CisgICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmZyb250
RmFjZSAhPSBtQ3VyUmFzdGVyU3RhdGUuZnJvbnRGYWNlKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NVTExfTU9ERSk7CisK
KyAgICAgICAgICAgICAgICAgICAgLy8gVmlld3BvcnQgc3RhdGUgZGVwZW5kcyBvbiByYXN0ZXJp
emVyLmZyb250ZmFjZQorICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9C
SVRfVklFV1BPUlQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUE9MWUdPTl9PRkZTRVRfRklM
TF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUo
KS5wb2x5Z29uT2Zmc2V0RmlsbCAhPQorICAgICAgICAgICAgICAgICAgICBtQ3VyUmFzdGVyU3Rh
dGUucG9seWdvbk9mZnNldEZpbGwpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfREVQVEhfQklBUyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6
OkRJUlRZX0JJVF9QT0xZR09OX09GRlNFVDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXJpemVyU3RhdGUgPSBzdGF0ZS5nZXRS
YXN0ZXJpemVyU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAocmFzdGVyaXplclN0YXRlLnBv
bHlnb25PZmZzZXRGYWN0b3IgIT0gbUN1clJhc3RlclN0YXRlLnBvbHlnb25PZmZzZXRGYWN0b3Ig
fHwKKyAgICAgICAgICAgICAgICAgICAgcmFzdGVyaXplclN0YXRlLnBvbHlnb25PZmZzZXRVbml0
cyAhPSBtQ3VyUmFzdGVyU3RhdGUucG9seWdvbk9mZnNldFVuaXRzKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFUFRIX0JJ
QVMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ug
Z2w6OlN0YXRlOjpESVJUWV9CSVRfREVQVEhfTUFTSzoKKyAgICAgICAgICAgICAgICBpZiAoc3Rh
dGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKS5kZXB0aE1hc2sgIT0gbUN1ckRlcHRoU3RlbmNpbFN0
YXRlLmRlcHRoTWFzaykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1E
aXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0RFUFRIX01BU0spOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRl
OjpESVJUWV9CSVRfREVQVEhfVEVTVF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIGlmIChzdGF0
ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpLmRlcHRoVGVzdCAhPSBtQ3VyRGVwdGhTdGVuY2lsU3Rh
dGUuZGVwdGhUZXN0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfREVQVEhfRlVOQyk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6
OkRJUlRZX0JJVF9ERVBUSF9GVU5DOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXREZXB0
aFN0ZW5jaWxTdGF0ZSgpLmRlcHRoRnVuYyAhPSBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhG
dW5jKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5z
ZXQoRElSVFlfQklUX1NURU5DSUxfREVQVEhfRlVOQyk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9TVEVOQ0lMX1RFU1RfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZ2V0RGVw
dGhTdGVuY2lsU3RhdGUoKS5zdGVuY2lsVGVzdCAhPSBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3Rl
bmNpbFRlc3QpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlC
aXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9URVNUX0VOQUJMRUQpOworICAgICAgICAgICAgICAg
ICAgICAvLyBJZiB3ZSBlbmFibGUgdGhlIHN0ZW5jaWwgdGVzdCwgYWxsIG9mIHRoZXNlIG11c3Qg
YmUgc2V0CisgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVO
Q0lMX1dSSVRFTUFTS19CQUNLKTsKKyAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQo
RElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0ZST05UKTsKKyAgICAgICAgICAgICAgICAgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfRlVOQ1NfRlJPTlQpOworICAgICAgICAg
ICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9GVU5DU19CQUNLKTsK
KyAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfT1BT
X0ZST05UKTsKKyAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NU
RU5DSUxfT1BTX0JBQ0spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU1RFTkNJTF9GVU5DU19G
Uk9OVDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBnbDo6RGVwdGhTdGVu
Y2lsU3RhdGUgJmRlcHRoU3RlbmNpbFN0YXRlID0gc3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUo
KTsKKyAgICAgICAgICAgICAgICBpZiAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZ1bmMgIT0g
bUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxGdW5jIHx8CisgICAgICAgICAgICAgICAgICAg
IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNrICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5z
dGVuY2lsTWFzayB8fAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRTdGVuY2lsUmVmKCkg
IT0gbUN1clN0ZW5jaWxSZWYpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9GVU5DU19GUk9OVCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TVEVOQ0lMX0ZVTkNTX0JBQ0s6CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRnVuYyAhPSBtQ3VyRGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tGdW5jIHx8CisgICAgICAgICAgICAgICAgICAgIGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzayAhPSBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbEJhY2tNYXNrIHx8CisgICAgICAgICAgICAgICAgICAgIHN0YXRlLmdldFN0ZW5jaWxC
YWNrUmVmKCkgIT0gbUN1clN0ZW5jaWxCYWNrUmVmKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfRlVOQ1NfQkFD
Syk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TVEVOQ0lMX1dSSVRF
TUFTS19GUk9OVDoKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3Rh
dGUoKS5zdGVuY2lsV3JpdGVtYXNrICE9CisgICAgICAgICAgICAgICAgICAgIG1DdXJEZXB0aFN0
ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0ZS
T05UKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0JBQ0s6Cisg
ICAgICAgICAgICAgICAgaWYgKHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCkuc3RlbmNpbEJh
Y2tXcml0ZW1hc2sgIT0KKyAgICAgICAgICAgICAgICAgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxCYWNrV3JpdGVtYXNrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0JBQ0spOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU1RFTkNJTF9PUFNfRlJPTlQ6CisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5j
aWxTdGF0ZSA9IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgICAgICAgICAgICAg
aWYgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxGYWlsICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0
ZS5zdGVuY2lsRmFpbCB8fAorICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5z
dGVuY2lsUGFzc0RlcHRoRmFpbCAhPQorICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckRlcHRo
U3RlbmNpbFN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhGYWlsIHx8CisgICAgICAgICAgICAgICAgICAg
IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhQYXNzICE9CisgICAgICAgICAgICAg
ICAgICAgICAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFBhc3NEZXB0aFBhc3MpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlydHlCaXRzLnNldChESVJU
WV9CSVRfU1RFTkNJTF9PUFNfRlJPTlQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpE
SVJUWV9CSVRfU1RFTkNJTF9PUFNfQkFDSzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRlcHRoU3RlbmNpbFN0YXRlID0gc3RhdGUu
Z2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbEJhY2tGYWlsICE9IG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFj
a0ZhaWwgfHwKKyAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJh
Y2tQYXNzRGVwdGhGYWlsICE9CisgICAgICAgICAgICAgICAgICAgICAgICBtQ3VyRGVwdGhTdGVu
Y2lsU3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsIHx8CisgICAgICAgICAgICAgICAgICAg
IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcyAhPQorICAgICAgICAg
ICAgICAgICAgICAgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRo
UGFzcykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9TVEVOQ0lMX09QU19CQUNLKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIGdsOjpT
dGF0ZTo6RElSVFlfQklUX1NDSVNTT1JfVEVTVF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIGlm
IChzdGF0ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpICE9IG1DdXJTY2lzc29yRW5hYmxlZCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZ
X0JJVF9TQ0lTU09SX0VOQUJMRUQpOworICAgICAgICAgICAgICAgICAgICAvLyBJZiBzY2lzc29y
IGlzIGVuYWJsZWQsIHdlIGhhdmUgdG8gc2V0IHRoZSBzY2lzc29yIHJlY3QKKyAgICAgICAgICAg
ICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NDSVNTT1JfUkVDVCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6
U3RhdGU6OkRJUlRZX0JJVF9TQ0lTU09SOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRT
Y2lzc29yKCkgIT0gbUN1clNjaXNzb3JSZWN0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX1NDSVNTT1JfUkVDVCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBn
bDo6U3RhdGU6OkRJUlRZX0JJVF9ERVBUSF9SQU5HRToKKyAgICAgICAgICAgICAgICBpZiAoc3Rh
dGUuZ2V0TmVhclBsYW5lKCkgIT0gbUN1ck5lYXIgfHwgc3RhdGUuZ2V0RmFyUGxhbmUoKSAhPSBt
Q3VyRmFyKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbURpcnR5Qml0
cy5zZXQoRElSVFlfQklUX1ZJRVdQT1JUKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1ZJRVdQ
T1JUOgorICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5nZXRWaWV3cG9ydCgpICE9IG1DdXJWaWV3
cG9ydCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9WSUVXUE9SVCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KK30KKworZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5k
RGVwdGhSYXN0ZXJTdGF0ZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBs
ZU1hc2spCit7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGdsU3Rh
dGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxl
bmRTdGF0ZSAgICAgICA9IGdsU3RhdGUuZ2V0QmxlbmRTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpD
b2xvckYgJmJsZW5kQ29sb3IgICAgICAgICAgID0gZ2xTdGF0ZS5nZXRCbGVuZENvbG9yKCk7Cisg
ICAgY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUgPSBnbFN0YXRlLmdldFJh
c3Rlcml6ZXJTdGF0ZSgpOworCisgICAgY29uc3QgYXV0byAmZGVwdGhTdGVuY2lsU3RhdGUgPSBn
bFN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisgICAgYm9vbCBmcm9udEZhY2VDQ1cgICAg
ICAgICAgICAgPSAoZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKS5mcm9udEZhY2UgPT0gR0xf
Q0NXKTsKKyAgICB1bnNpZ25lZCBpbnQgbWF4U3RlbmNpbCAgICAgICA9ICgxIDw8IG1DdXJTdGVu
Y2lsU2l6ZSkgLSAxOworCisgICAgLy8gQWxsIHRoZSBkZXB0aCBzdGVuY2lsIHN0YXRlcyBkZXBl
bmRzIG9uIHRoZSBmcm9udCBmYWNlIGNjdyB2YXJpYWJsZQorICAgIGlmIChmcm9udEZhY2VDQ1cg
IT0gbUN1ckZyb250RmFjZUNDVykKKyAgICB7CisgICAgICAgIGZvcmNlU2V0RGVwdGhTdGVuY2ls
U3RhdGUoKTsKKyAgICAgICAgbUN1ckZyb250RmFjZUNDVyA9IGZyb250RmFjZUNDVzsKKyAgICB9
CisKKyAgICBmb3IgKGF1dG8gZGlydHlCaXQgOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChtRGlydHlC
aXRzKSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZGlydHlCaXQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhc2UgRElSVFlfQklUX0JMRU5EX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgc2V0
QmxlbmRFbmFibGVkKGJsZW5kU3RhdGUuYmxlbmQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBESVJUWV9CSVRfQkxFTkRfQ09MT1I6CisgICAgICAgICAgICAgICAg
c2V0QmxlbmRDb2xvcihibGVuZFN0YXRlLCBibGVuZENvbG9yKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSVFlfQklUX0JMRU5EX0ZVTkNTX0VRVUFUSU9OUzoK
KyAgICAgICAgICAgICAgICBzZXRCbGVuZEZ1bmNzRXF1YXRpb25zKGJsZW5kU3RhdGUpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJUWV9CSVRfU0FNUExFX0FM
UEhBX1RPX0NPVkVSQUdFOgorICAgICAgICAgICAgICAgIHNldFNhbXBsZUFscGhhVG9Db3ZlcmFn
ZShibGVuZFN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIERJUlRZX0JJVF9DT0xPUl9NQVNLOgorICAgICAgICAgICAg
ICAgIHNldENvbG9yTWFzayhmcmFtZWJ1ZmZlciwgYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQsIGJs
ZW5kU3RhdGUuY29sb3JNYXNrQmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxl
bmRTdGF0ZS5jb2xvck1hc2tHcmVlbiwgYmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERJUlRZX0JJVF9ESVRIRVI6Cisg
ICAgICAgICAgICAgICAgc2V0RGl0aGVyKGJsZW5kU3RhdGUuZGl0aGVyKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSVFlfQklUX0NVTExfTU9ERToKKyAgICAg
ICAgICAgICAgICBzZXRDdWxsTW9kZShyYXN0ZXJTdGF0ZS5jdWxsRmFjZSwgcmFzdGVyU3RhdGUu
Y3VsbE1vZGUsIHJhc3RlclN0YXRlLmZyb250RmFjZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIERJUlRZX0JJVF9ERVBUSF9CSUFTOgorICAgICAgICAgICAgICAg
IHNldERlcHRoQmlhcyhyYXN0ZXJTdGF0ZS5wb2x5Z29uT2Zmc2V0RmlsbCwgcmFzdGVyU3RhdGUu
cG9seWdvbk9mZnNldEZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFzdGVy
U3RhdGUucG9seWdvbk9mZnNldFVuaXRzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgRElSVFlfQklUX1NURU5DSUxfREVQVEhfTUFTSzoKKyAgICAgICAgICAgICAg
ICBzZXREZXB0aE1hc2soZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhNYXNrKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSVFlfQklUX1NURU5DSUxfREVQVEhfRlVO
QzoKKyAgICAgICAgICAgICAgICBzZXREZXB0aEZ1bmMoZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhU
ZXN0LCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEZ1bmMpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBESVJUWV9CSVRfU1RFTkNJTF9URVNUX0VOQUJMRUQ6CisgICAg
ICAgICAgICAgICAgc2V0U3RlbmNpbFRlc3RFbmFibGVkKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5j
aWxUZXN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSVFlf
QklUX1NURU5DSUxfRlVOQ1NfRlJPTlQ6CisgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEZ1bmNz
RnJvbnQoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZ1bmMsIGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3RhdGUu
Z2V0U3RlbmNpbFJlZigpLCBmcm9udEZhY2VDQ1csIG1heFN0ZW5jaWwpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJUWV9CSVRfU1RFTkNJTF9GVU5DU19CQUNL
OgorICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxGdW5jc0JhY2soZGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbEJhY2tGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrLCBnbFN0YXRlLmdldFN0ZW5jaWxCYWNrUmVm
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9udEZhY2VDQ1csIG1h
eFN0ZW5jaWwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJU
WV9CSVRfU1RFTkNJTF9XUklURU1BU0tfRlJPTlQ6CisgICAgICAgICAgICAgICAgc2V0U3RlbmNp
bFdyaXRlTWFzayhkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrLCBmcm9udEZhY2VD
Q1cpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJUWV9CSVRf
U1RFTkNJTF9XUklURU1BU0tfQkFDSzoKKyAgICAgICAgICAgICAgICBzZXRTdGVuY2lsQmFja1dy
aXRlTWFzayhkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzaywgZnJvbnRGYWNl
Q0NXKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSVFlfQklU
X1NURU5DSUxfT1BTX0ZST05UOgorICAgICAgICAgICAgICAgIHNldFN0ZW5jaWxPcHNGcm9udChk
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRmFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFBhc3NEZXB0aEZhaWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQYXNz
RGVwdGhQYXNzLCBmcm9udEZhY2VDQ1cpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBESVJUWV9CSVRfU1RFTkNJTF9PUFNfQkFDSzoKKyAgICAgICAgICAgICAgICBz
ZXRTdGVuY2lsT3BzQmFjayhkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja0ZhaWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJh
Y2tQYXNzRGVwdGhGYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRo
U3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcywgZnJvbnRGYWNlQ0NXKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2FtcGxlTWFzayAhPSBtQ3Vy
U2FtcGxlTWFzaykKKyAgICB7CisgICAgICAgIHNldFNhbXBsZU1hc2soc2FtcGxlTWFzayk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK3ZvaWQgU3Rh
dGVNYW5hZ2VyOTo6c2V0Vmlld3BvcnRTdGF0ZShjb25zdCBnbDo6Q2FwcyAqY2FwcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3
cG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB6TmVhciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB6RmFyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3TW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlVmlld3BvcnQpCit7CisgICAg
aWYgKCFtRGlydHlCaXRzLnRlc3QoRElSVFlfQklUX1ZJRVdQT1JUKSAmJiBtQ3VySWdub3JlVmll
d3BvcnQgPT0gaWdub3JlVmlld3BvcnQpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpSZWN0
YW5nbGUgYWN0dWFsVmlld3BvcnQgPSB2aWV3cG9ydDsKKyAgICBmbG9hdCBhY3R1YWxaTmVhciAg
ICAgICAgICAgID0gZ2w6OmNsYW1wMDEoek5lYXIpOworICAgIGZsb2F0IGFjdHVhbFpGYXIgICAg
ICAgICAgICAgPSBnbDo6Y2xhbXAwMSh6RmFyKTsKKworICAgIGlmIChpZ25vcmVWaWV3cG9ydCkK
KyAgICB7CisgICAgICAgIGFjdHVhbFZpZXdwb3J0LnggICAgICA9IDA7CisgICAgICAgIGFjdHVh
bFZpZXdwb3J0LnkgICAgICA9IDA7CisgICAgICAgIGFjdHVhbFZpZXdwb3J0LndpZHRoICA9IHN0
YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldEJvdW5kcy53aWR0aCk7CisgICAgICAgIGFjdHVh
bFZpZXdwb3J0LmhlaWdodCA9IHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldEJvdW5kcy5o
ZWlnaHQpOworICAgICAgICBhY3R1YWxaTmVhciAgICAgICAgICAgPSAwLjBmOworICAgICAgICBh
Y3R1YWxaRmFyICAgICAgICAgICAgPSAxLjBmOworICAgIH0KKworICAgIEQzRFZJRVdQT1JUOSBk
eFZpZXdwb3J0OworICAgIGR4Vmlld3BvcnQuWCA9IGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC54
LCAwLCBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXRCb3VuZHMud2lkdGgpKTsKKyAgICBk
eFZpZXdwb3J0LlkgPSBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQueSwgMCwgc3RhdGljX2Nhc3Q8
aW50PihtUmVuZGVyVGFyZ2V0Qm91bmRzLmhlaWdodCkpOworICAgIGR4Vmlld3BvcnQuV2lkdGgg
PQorICAgICAgICBnbDo6Y2xhbXAoYWN0dWFsVmlld3BvcnQud2lkdGgsIDAsCisgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXRCb3VuZHMud2lkdGgpIC0gc3Rh
dGljX2Nhc3Q8aW50PihkeFZpZXdwb3J0LlgpKTsKKyAgICBkeFZpZXdwb3J0LkhlaWdodCA9Cisg
ICAgICAgIGdsOjpjbGFtcChhY3R1YWxWaWV3cG9ydC5oZWlnaHQsIDAsCisgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KG1SZW5kZXJUYXJnZXRCb3VuZHMuaGVpZ2h0KSAtIHN0YXRp
Y19jYXN0PGludD4oZHhWaWV3cG9ydC5ZKSk7CisgICAgZHhWaWV3cG9ydC5NaW5aID0gYWN0dWFs
Wk5lYXI7CisgICAgZHhWaWV3cG9ydC5NYXhaID0gYWN0dWFsWkZhcjsKKworICAgIGZsb2F0IGRl
cHRoRnJvbnQgPSAhZ2w6OklzVHJpYW5nbGVNb2RlKGRyYXdNb2RlKSA/IDAuMGYgOiAoZnJvbnRG
YWNlID09IEdMX0NDVyA/IDEuMGYgOiAtMS4wZik7CisKKyAgICBtUmVuZGVyZXI5LT5nZXREZXZp
Y2UoKS0+U2V0Vmlld3BvcnQoJmR4Vmlld3BvcnQpOworCisgICAgbUN1clZpZXdwb3J0ICAgICAg
ID0gYWN0dWFsVmlld3BvcnQ7CisgICAgbUN1ck5lYXIgICAgICAgICAgID0gYWN0dWFsWk5lYXI7
CisgICAgbUN1ckZhciAgICAgICAgICAgID0gYWN0dWFsWkZhcjsKKyAgICBtQ3VyRGVwdGhGcm9u
dCAgICAgPSBkZXB0aEZyb250OworICAgIG1DdXJJZ25vcmVWaWV3cG9ydCA9IGlnbm9yZVZpZXdw
b3J0OworCisgICAgLy8gU2V0dGluZyBzaGFkZXIgY29uc3RhbnRzCisgICAgZHhfVmVydGV4Q29u
c3RhbnRzOSB2YyA9IHt9OworICAgIGR4X1BpeGVsQ29uc3RhbnRzOSBwYyAgPSB7fTsKKworICAg
IHZjLnZpZXdBZGp1c3RbMF0gPQorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oKGFjdHVhbFZp
ZXdwb3J0LndpZHRoIC0gc3RhdGljX2Nhc3Q8aW50PihkeFZpZXdwb3J0LldpZHRoKSkgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMiAqIChhY3R1YWxWaWV3cG9ydC54IC0gc3RhdGljX2Nh
c3Q8aW50PihkeFZpZXdwb3J0LlgpKSAtIDEpIC8KKyAgICAgICAgZHhWaWV3cG9ydC5XaWR0aDsK
KyAgICB2Yy52aWV3QWRqdXN0WzFdID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KChhY3R1
YWxWaWV3cG9ydC5oZWlnaHQgLSBzdGF0aWNfY2FzdDxpbnQ+KGR4Vmlld3BvcnQuSGVpZ2h0KSkg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAqIChhY3R1YWxWaWV3cG9ydC55IC0gc3Rh
dGljX2Nhc3Q8aW50PihkeFZpZXdwb3J0LlkpKSAtIDEpIC8KKyAgICAgICAgZHhWaWV3cG9ydC5I
ZWlnaHQ7CisgICAgdmMudmlld0FkanVzdFsyXSA9IHN0YXRpY19jYXN0PGZsb2F0PihhY3R1YWxW
aWV3cG9ydC53aWR0aCkgLyBkeFZpZXdwb3J0LldpZHRoOworICAgIHZjLnZpZXdBZGp1c3RbM10g
PSBzdGF0aWNfY2FzdDxmbG9hdD4oYWN0dWFsVmlld3BvcnQuaGVpZ2h0KSAvIGR4Vmlld3BvcnQu
SGVpZ2h0OworCisgICAgcGMudmlld0Nvb3Jkc1swXSA9IGFjdHVhbFZpZXdwb3J0LndpZHRoICog
MC41ZjsKKyAgICBwYy52aWV3Q29vcmRzWzFdID0gYWN0dWFsVmlld3BvcnQuaGVpZ2h0ICogMC41
ZjsKKyAgICBwYy52aWV3Q29vcmRzWzJdID0gYWN0dWFsVmlld3BvcnQueCArIChhY3R1YWxWaWV3
cG9ydC53aWR0aCAqIDAuNWYpOworICAgIHBjLnZpZXdDb29yZHNbM10gPSBhY3R1YWxWaWV3cG9y
dC55ICsgKGFjdHVhbFZpZXdwb3J0LmhlaWdodCAqIDAuNWYpOworCisgICAgcGMuZGVwdGhGcm9u
dFswXSA9IChhY3R1YWxaRmFyIC0gYWN0dWFsWk5lYXIpICogMC41ZjsKKyAgICBwYy5kZXB0aEZy
b250WzFdID0gKGFjdHVhbFpOZWFyICsgYWN0dWFsWkZhcikgKiAwLjVmOworICAgIHBjLmRlcHRo
RnJvbnRbMl0gPSBkZXB0aEZyb250OworCisgICAgdmMuZGVwdGhSYW5nZVswXSA9IGFjdHVhbFpO
ZWFyOworICAgIHZjLmRlcHRoUmFuZ2VbMV0gPSBhY3R1YWxaRmFyOworICAgIHZjLmRlcHRoUmFu
Z2VbMl0gPSBhY3R1YWxaRmFyIC0gYWN0dWFsWk5lYXI7CisKKyAgICBwYy5kZXB0aFJhbmdlWzBd
ID0gYWN0dWFsWk5lYXI7CisgICAgcGMuZGVwdGhSYW5nZVsxXSA9IGFjdHVhbFpGYXI7CisgICAg
cGMuZGVwdGhSYW5nZVsyXSA9IGFjdHVhbFpGYXIgLSBhY3R1YWxaTmVhcjsKKworICAgIGlmICht
ZW1jbXAoJnZjLCAmbVZlcnRleENvbnN0YW50cywgc2l6ZW9mKGR4X1ZlcnRleENvbnN0YW50czkp
KSAhPSAwKQorICAgIHsKKyAgICAgICAgbVZlcnRleENvbnN0YW50cyA9IHZjOworICAgICAgICBt
RHhVbmlmb3Jtc0RpcnR5ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKCZwYywgJm1Q
aXhlbENvbnN0YW50cywgc2l6ZW9mKGR4X1BpeGVsQ29uc3RhbnRzOSkpICE9IDApCisgICAgewor
ICAgICAgICBtUGl4ZWxDb25zdGFudHMgID0gcGM7CisgICAgICAgIG1EeFVuaWZvcm1zRGlydHkg
PSB0cnVlOworICAgIH0KKworICAgIG1Gb3JjZVNldFZpZXdwb3J0ID0gZmFsc2U7Cit9CisKK3Zv
aWQgU3RhdGVNYW5hZ2VyOTo6c2V0U2hhZGVyQ29uc3RhbnRzKCkKK3sKKyAgICBpZiAoIW1EeFVu
aWZvcm1zRGlydHkpCisgICAgICAgIHJldHVybjsKKworICAgIElEaXJlY3QzRERldmljZTkgKmRl
dmljZSA9IG1SZW5kZXJlcjktPmdldERldmljZSgpOworICAgIGRldmljZS0+U2V0VmVydGV4U2hh
ZGVyQ29uc3RhbnRGKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQgKj4oJm1WZXJ0ZXhDb25zdGFu
dHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkeF9WZXJ0
ZXhDb25zdGFudHM5KSAvIHNpemVvZihmbG9hdFs0XSkpOworICAgIGRldmljZS0+U2V0UGl4ZWxT
aGFkZXJDb25zdGFudEYoMCwgcmVpbnRlcnByZXRfY2FzdDxmbG9hdCAqPigmbVBpeGVsQ29uc3Rh
bnRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkeF9QaXhl
bENvbnN0YW50czkpIC8gc2l6ZW9mKGZsb2F0WzRdKSk7CisgICAgbUR4VW5pZm9ybXNEaXJ0eSA9
IGZhbHNlOworfQorCisvLyBUaGlzIGlzIHNlcGFyYXRlIGZyb20gdGhlIG1haW4gc3RhdGUgbG9v
cCBiZWNhdXNlIG90aGVyIGZ1bmN0aW9ucworLy8gb3V0c2lkZSBjYWxsIG9ubHkgc2V0U2Npc3Nv
clN0YXRlIHRvIHVwZGF0ZSBzY2lzc29yIHN0YXRlCit2b2lkIFN0YXRlTWFuYWdlcjk6OnNldFNj
aXNzb3JTdGF0ZShjb25zdCBnbDo6UmVjdGFuZ2xlICZzY2lzc29yLCBib29sIGVuYWJsZWQpCit7
CisgICAgaWYgKG1EaXJ0eUJpdHMudGVzdChESVJUWV9CSVRfU0NJU1NPUl9FTkFCTEVEKSkKKyAg
ICAgICAgc2V0U2Npc3NvckVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICBpZiAobURpcnR5Qml0cy50
ZXN0KERJUlRZX0JJVF9TQ0lTU09SX1JFQ1QpKQorICAgICAgICBzZXRTY2lzc29yUmVjdChzY2lz
c29yLCBlbmFibGVkKTsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRSZW5kZXJUYXJnZXRC
b3VuZHMoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQoreworICAgIG1SZW5kZXJUYXJnZXRC
b3VuZHMud2lkdGggID0gKGludCl3aWR0aDsKKyAgICBtUmVuZGVyVGFyZ2V0Qm91bmRzLmhlaWdo
dCA9IChpbnQpaGVpZ2h0OworICAgIGZvcmNlU2V0Vmlld3BvcnRTdGF0ZSgpOworfQorCit2b2lk
IFN0YXRlTWFuYWdlcjk6OnNldFNjaXNzb3JFbmFibGVkKGJvb2wgc2Npc3NvckVuYWJsZWQpCit7
CisgICAgbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCktPlNldFJlbmRlclN0YXRlKEQzRFJTX1NDSVNT
T1JURVNURU5BQkxFLCBzY2lzc29yRW5hYmxlZCA/IFRSVUUgOiBGQUxTRSk7CisgICAgbUN1clNj
aXNzb3JFbmFibGVkID0gc2Npc3NvckVuYWJsZWQ7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyOTo6
c2V0U2Npc3NvclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3NvciwgYm9vbCBlbmFibGVk
KQoreworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVDVCByZWN0
OworICAgIHJlY3QubGVmdCA9IGdsOjpjbGFtcChzY2lzc29yLngsIDAsIHN0YXRpY19jYXN0PGlu
dD4obVJlbmRlclRhcmdldEJvdW5kcy53aWR0aCkpOworICAgIHJlY3QudG9wID0gZ2w6OmNsYW1w
KHNjaXNzb3IueSwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0Qm91bmRzLmhlaWdo
dCkpOworICAgIHJlY3QucmlnaHQgPQorICAgICAgICBnbDo6Y2xhbXAoc2Npc3Nvci54ICsgc2Np
c3Nvci53aWR0aCwgMCwgc3RhdGljX2Nhc3Q8aW50PihtUmVuZGVyVGFyZ2V0Qm91bmRzLndpZHRo
KSk7CisgICAgcmVjdC5ib3R0b20gPQorICAgICAgICBnbDo6Y2xhbXAoc2Npc3Nvci55ICsgc2Np
c3Nvci5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PGludD4obVJlbmRlclRhcmdldEJvdW5kcy5oZWln
aHQpKTsKKyAgICBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+U2V0U2Npc3NvclJlY3QoJnJlY3Qp
OworfQorCit2b2lkIFN0YXRlTWFuYWdlcjk6OnNldERlcHRoRnVuYyhib29sIGRlcHRoVGVzdCwg
R0xlbnVtIGRlcHRoRnVuYykKK3sKKyAgICBpZiAoZGVwdGhUZXN0KQorICAgIHsKKyAgICAgICAg
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCk7CisgICAg
ICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwgRDNEWkJfVFJVRSk7Cisg
ICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkZVTkMsIGdsX2QzZDk6OkNvbnZl
cnRDb21wYXJpc29uKGRlcHRoRnVuYykpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfWkVOQUJMRSwg
RDNEWkJfRkFMU0UpOworICAgIH0KKworICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFRl
c3QgPSBkZXB0aFRlc3Q7CisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoRnVuYyA9IGRl
cHRoRnVuYzsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRTdGVuY2lsT3BzRnJvbnQoR0xl
bnVtIHN0ZW5jaWxGYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhGYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhQYXNzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9udEZhY2VDQ1cpCit7CisgICAgLy8gVE9E
TyhkaWFueCkgSXQgbWF5IGJlIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IHRvZG8gdGhlc2UgYW5k
IG90aGVyIHNpbWlsYXIgYXJlYXMKKyAgICAvLyB3aXRoIHNlcGFyYXRlIGRpcnR5IGJpdHMuCisg
ICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCk7Cisg
ICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMRkFJ
TCA6IEQzRFJTX0NDV19TVEVOQ0lMRkFJTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
X2QzZDk6OkNvbnZlcnRTdGVuY2lsT3Aoc3RlbmNpbEZhaWwpKTsKKyAgICBkZXZpY2UtPlNldFJl
bmRlclN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxaRkFJTCA6IEQzRFJTX0NDV19T
VEVOQ0lMWkZBSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0
U3RlbmNpbE9wKHN0ZW5jaWxQYXNzRGVwdGhGYWlsKSk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0NDV19TVEVOQ0lM
UEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZlcnRTdGVuY2ls
T3Aoc3RlbmNpbFBhc3NEZXB0aFBhc3MpKTsKKworICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5z
dGVuY2lsRmFpbCAgICAgICAgICA9IHN0ZW5jaWxGYWlsOworICAgIG1DdXJEZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsUGFzc0RlcHRoRmFpbCA9IHN0ZW5jaWxQYXNzRGVwdGhGYWlsOworICAgIG1D
dXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFzc0RlcHRoUGFzcyA9IHN0ZW5jaWxQYXNzRGVw
dGhQYXNzOworfQorCit2b2lkIFN0YXRlTWFuYWdlcjk6OnNldFN0ZW5jaWxPcHNCYWNrKEdMZW51
bSBzdGVuY2lsQmFja0ZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBzdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbnRGYWNlQ0NXKQoreworICAg
IElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlcjktPmdldERldmljZSgpOworICAg
IGRldmljZS0+U2V0UmVuZGVyU3RhdGUoIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxGQUlM
IDogRDNEUlNfQ0NXX1NURU5DSUxGQUlMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xf
ZDNkOTo6Q29udmVydFN0ZW5jaWxPcChzdGVuY2lsQmFja0ZhaWwpKTsKKyAgICBkZXZpY2UtPlNl
dFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMWkZBSUwgOiBEM0RSU19D
Q1dfU1RFTkNJTFpGQUlMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29u
dmVydFN0ZW5jaWxPcChzdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwpKTsKKyAgICBkZXZpY2UtPlNl
dFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMUEFTUyA6IEQzRFJTX0ND
V19TVEVOQ0lMUEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6OkNvbnZl
cnRTdGVuY2lsT3Aoc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNzKSk7CisKKyAgICBtQ3VyRGVwdGhT
dGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tGYWlsICAgICAgICAgID0gc3RlbmNpbEJhY2tGYWlsOwor
ICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBzdGVu
Y2lsQmFja1Bhc3NEZXB0aEZhaWw7CisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxC
YWNrUGFzc0RlcHRoUGFzcyA9IHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzczsKK30KKwordm9pZCBT
dGF0ZU1hbmFnZXI5OjpzZXRTdGVuY2lsQmFja1dyaXRlTWFzayhHTHVpbnQgc3RlbmNpbEJhY2tX
cml0ZU1hc2ssIGJvb2wgZnJvbnRGYWNlQ0NXKQoreworICAgIG1SZW5kZXJlcjktPmdldERldmlj
ZSgpLT5TZXRSZW5kZXJTdGF0ZSgKKyAgICAgICAgIWZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5D
SUxXUklURU1BU0sgOiBEM0RSU19DQ1dfU1RFTkNJTFdSSVRFTUFTSywgc3RlbmNpbEJhY2tXcml0
ZU1hc2spOworCisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVtYXNr
ID0gc3RlbmNpbEJhY2tXcml0ZU1hc2s7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyOTo6c2V0U3Rl
bmNpbEZ1bmNzQmFjayhHTGVudW0gc3RlbmNpbEJhY2tGdW5jLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGVuY2lsQmFja01hc2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RlbmNpbEJhY2tSZWYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9udEZhY2VDQ1csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1heFN0
ZW5jaWwpCit7CisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyOS0+Z2V0
RGV2aWNlKCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZSghZnJvbnRGYWNlQ0NXID8gRDNE
UlNfU1RFTkNJTEZVTkMgOiBEM0RSU19DQ1dfU1RFTkNJTEZVTkMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0Q29tcGFyaXNvbihzdGVuY2lsQmFja0Z1bmMpKTsK
KyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lM
UkVGIDogRDNEUlNfQ0NXX1NURU5DSUxSRUYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAo
c3RlbmNpbEJhY2tSZWYgPCAoaW50KW1heFN0ZW5jaWwpID8gc3RlbmNpbEJhY2tSZWYgOiBtYXhT
dGVuY2lsKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKCFmcm9udEZhY2VDQ1cgPyBEM0RS
U19TVEVOQ0lMTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lMTUFTSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZW5jaWxCYWNrTWFzayk7CisKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbEJhY2tGdW5jID0gc3RlbmNpbEJhY2tGdW5jOworICAgIG1DdXJTdGVuY2lsQmFja1Jl
ZiAgICAgICAgICAgICAgICAgICAgPSBzdGVuY2lsQmFja1JlZjsKKyAgICBtQ3VyRGVwdGhTdGVu
Y2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrID0gc3RlbmNpbEJhY2tNYXNrOworfQorCit2b2lkIFN0
YXRlTWFuYWdlcjk6OnNldFN0ZW5jaWxXcml0ZU1hc2soR0x1aW50IHN0ZW5jaWxXcml0ZU1hc2ss
IGJvb2wgZnJvbnRGYWNlQ0NXKQoreworICAgIG1SZW5kZXJlcjktPmdldERldmljZSgpLT5TZXRS
ZW5kZXJTdGF0ZSgKKyAgICAgICAgZnJvbnRGYWNlQ0NXID8gRDNEUlNfU1RFTkNJTFdSSVRFTUFT
SyA6IEQzRFJTX0NDV19TVEVOQ0lMV1JJVEVNQVNLLCBzdGVuY2lsV3JpdGVNYXNrKTsKKyAgICBt
Q3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayA9IHN0ZW5jaWxXcml0ZU1hc2s7
Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyOTo6c2V0U3RlbmNpbEZ1bmNzRnJvbnQoR0xlbnVtIHN0
ZW5jaWxGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgc3RlbmNpbE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHN0ZW5jaWxSZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZnJvbnRGYWNlQ0NXLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgbWF4U3RlbmNpbCkKK3sKKyAgICBJRGlyZWN0M0REZXZpY2U5
ICpkZXZpY2UgPSBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKTsKKyAgICBkZXZpY2UtPlNldFJlbmRl
clN0YXRlKGZyb250RmFjZUNDVyA/IEQzRFJTX1NURU5DSUxGVU5DIDogRDNEUlNfQ0NXX1NURU5D
SUxGVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydENvbXBh
cmlzb24oc3RlbmNpbEZ1bmMpKTsKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKGZyb250RmFj
ZUNDVyA/IEQzRFJTX1NURU5DSUxSRUYgOiBEM0RSU19DQ1dfU1RFTkNJTFJFRiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChzdGVuY2lsUmVmIDwgc3RhdGljX2Nhc3Q8aW50PihtYXhTdGVu
Y2lsKSkgPyBzdGVuY2lsUmVmIDogbWF4U3RlbmNpbCk7CisgICAgZGV2aWNlLT5TZXRSZW5kZXJT
dGF0ZShmcm9udEZhY2VDQ1cgPyBEM0RSU19TVEVOQ0lMTUFTSyA6IEQzRFJTX0NDV19TVEVOQ0lM
TUFTSywgc3RlbmNpbE1hc2spOworCisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxG
dW5jID0gc3RlbmNpbEZ1bmM7CisgICAgbUN1clN0ZW5jaWxSZWYgICAgICAgICAgICAgICAgICAg
ID0gc3RlbmNpbFJlZjsKKyAgICBtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sgPSBz
dGVuY2lsTWFzazsKK30KK3ZvaWQgU3RhdGVNYW5hZ2VyOTo6c2V0U3RlbmNpbFRlc3RFbmFibGVk
KGJvb2wgc3RlbmNpbFRlc3RFbmFibGVkKQoreworICAgIGlmIChzdGVuY2lsVGVzdEVuYWJsZWQg
JiYgbUN1clN0ZW5jaWxTaXplID4gMCkKKyAgICB7CisgICAgICAgIG1SZW5kZXJlcjktPmdldERl
dmljZSgpLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19TVEVOQ0lMRU5BQkxFLCBUUlVFKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCktPlNldFJl
bmRlclN0YXRlKEQzRFJTX1NURU5DSUxFTkFCTEUsIEZBTFNFKTsKKyAgICB9CisKKyAgICBtQ3Vy
RGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFRlc3QgPSBzdGVuY2lsVGVzdEVuYWJsZWQ7Cit9CisK
K3ZvaWQgU3RhdGVNYW5hZ2VyOTo6c2V0RGVwdGhNYXNrKGJvb2wgZGVwdGhNYXNrKQoreworICAg
IG1SZW5kZXJlcjktPmdldERldmljZSgpLT5TZXRSZW5kZXJTdGF0ZShEM0RSU19aV1JJVEVFTkFC
TEUsIGRlcHRoTWFzayA/IFRSVUUgOiBGQUxTRSk7CisgICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRl
LmRlcHRoTWFzayA9IGRlcHRoTWFzazsKK30KKworLy8gVE9ETyhkaWFueCkgb25lIGJpdCBmb3Ig
c2FtcGxlQWxwaGFUb0NvdmVyYWdlCit2b2lkIFN0YXRlTWFuYWdlcjk6OnNldFNhbXBsZUFscGhh
VG9Db3ZlcmFnZShib29sIGVuYWJsZWQpCit7CisgICAgaWYgKGVuYWJsZWQpCisgICAgeworICAg
ICAgICBGSVhNRSgiU2FtcGxlIGFscGhhIHRvIGNvdmVyYWdlIGlzIHVuaW1wbGVtZW50ZWQuIik7
CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5kQ29sb3IoY29uc3QgZ2w6
OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUsIGNvbnN0IGdsOjpDb2xvckYgJmJsZW5kQ29sb3IpCit7
CisgICAgaWYgKCFibGVuZFN0YXRlLmJsZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
YmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBIQSAmJgorICAgICAg
ICBibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCICE9IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBI
QSAmJgorICAgICAgICBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAhPSBHTF9DT05TVEFOVF9BTFBI
QSAmJgorICAgICAgICBibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiAhPSBHTF9PTkVfTUlOVVNfQ09O
U1RBTlRfQUxQSEEpCisgICAgeworICAgICAgICBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfQkxFTkRGQUNUT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5OjpDb252ZXJ0Q29sb3IoYmxlbmRDb2xvcikp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtUmVuZGVyZXI5LT5nZXREZXZpY2Uo
KS0+U2V0UmVuZGVyU3RhdGUoCisgICAgICAgICAgICBEM0RSU19CTEVOREZBQ1RPUiwKKyAgICAg
ICAgICAgIEQzRENPTE9SX1JHQkEoZ2w6OnVub3JtPDg+KGJsZW5kQ29sb3IuYWxwaGEpLCBnbDo6
dW5vcm08OD4oYmxlbmRDb2xvci5hbHBoYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGds
Ojp1bm9ybTw4PihibGVuZENvbG9yLmFscGhhKSwgZ2w6OnVub3JtPDg+KGJsZW5kQ29sb3IuYWxw
aGEpKSk7CisgICAgfQorICAgIG1DdXJCbGVuZENvbG9yID0gYmxlbmRDb2xvcjsKK30KKwordm9p
ZCBTdGF0ZU1hbmFnZXI5OjpzZXRCbGVuZEZ1bmNzRXF1YXRpb25zKGNvbnN0IGdsOjpCbGVuZFN0
YXRlICZibGVuZFN0YXRlKQoreworICAgIGlmICghYmxlbmRTdGF0ZS5ibGVuZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVyOS0+Z2V0
RGV2aWNlKCk7CisKKyAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NSQ0JMRU5ELCBn
bF9kM2Q5OjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5kU3RhdGUuc291cmNlQmxlbmRSR0IpKTsKKyAg
ICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFU1RCTEVORCwgZ2xfZDNkOTo6Q29udmVy
dEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZFJHQikpOworICAgIGRldmljZS0+U2V0UmVu
ZGVyU3RhdGUoRDNEUlNfQkxFTkRPUCwgZ2xfZDNkOTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0
ZS5ibGVuZEVxdWF0aW9uUkdCKSk7CisKKyAgICBpZiAoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJH
QiAhPSBibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEgfHwKKyAgICAgICAgYmxlbmRTdGF0ZS5k
ZXN0QmxlbmRSR0IgIT0gYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSB8fAorICAgICAgICBibGVu
ZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgIT0gYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEp
CisgICAgeworICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NFUEFSQVRFQUxQ
SEFCTEVOREVOQUJMRSwgVFJVRSk7CisKKyAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19TUkNCTEVOREFMUEhBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2Qz
ZDk6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhKSk7CisgICAg
ICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfREVTVEJMRU5EQUxQSEEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2xfZDNkOTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0
YXRlLmRlc3RCbGVuZEFscGhhKSk7CisgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfQkxFTkRPUEFMUEhBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2QzZDk6
OkNvbnZlcnRCbGVuZE9wKGJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhKSk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0VQ
QVJBVEVBTFBIQUJMRU5ERU5BQkxFLCBGQUxTRSk7CisgICAgfQorCisgICAgbUN1ckJsZW5kU3Rh
dGUuc291cmNlQmxlbmRSR0IgICAgID0gYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQjsKKyAgICBt
Q3VyQmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IgICAgICAgPSBibGVuZFN0YXRlLmRlc3RCbGVuZFJH
QjsKKyAgICBtQ3VyQmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCICAgPSBibGVuZFN0YXRlLmJs
ZW5kRXF1YXRpb25SR0I7CisgICAgbUN1ckJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhID0g
YmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGE7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyOTo6
c2V0QmxlbmRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtUmVuZGVyZXI5LT5nZXREZXZp
Y2UoKS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFCTEVOREVOQUJMRSwgZW5hYmxlZCA/IFRS
VUUgOiBGQUxTRSk7CisgICAgbUN1ckJsZW5kU3RhdGUuYmxlbmQgPSBlbmFibGVkOworfQorCit2
b2lkIFN0YXRlTWFuYWdlcjk6OnNldERpdGhlcihib29sIGRpdGhlcikKK3sKKyAgICBtUmVuZGVy
ZXI5LT5nZXREZXZpY2UoKS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfRElUSEVSRU5BQkxFLCBkaXRo
ZXIgPyBUUlVFIDogRkFMU0UpOworICAgIG1DdXJCbGVuZFN0YXRlLmRpdGhlciA9IGRpdGhlcjsK
K30KKworLy8gVE9ETyhkaWFueCkgb25lIGJpdCBmb3IgY29sb3IgbWFzawordm9pZCBTdGF0ZU1h
bmFnZXI5OjpzZXRDb2xvck1hc2soY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgYWxwaGEpCit7CisgICAgLy8gU2V0IHRoZSBjb2xvciBtYXNrCisgICAgYm9vbCB6ZXJvQ29s
b3JNYXNrQWxsb3dlZCA9IG1SZW5kZXJlcjktPmdldFZlbmRvcklkKCkgIT0gVkVORE9SX0lEX0FN
RDsKKyAgICAvLyBBcHBhcmVudGx5IHNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUgYSBk
cmF3IHdpdGggYSB6ZXJvIGNvbG9yCisgICAgLy8gd3JpdGUgbWFzayBjYW4gY2F1c2UgbGF0ZXIg
ZHJhd3MgdG8gaGF2ZSBpbmNvcnJlY3QgcmVzdWx0cy4gSW5zdGVhZCwKKyAgICAvLyBzZXQgYSBu
b256ZXJvIGNvbG9yIHdyaXRlIG1hc2sgYnV0IG1vZGlmeSB0aGUgYmxlbmQgc3RhdGUgc28gdGhh
dCBubworICAgIC8vIGRyYXdpbmcgaXMgZG9uZS4KKyAgICAvLyBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9MTY5CisKKyAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gZnJhbWVidWZmZXItPmdldEZpcnN0
Q29sb3JidWZmZXIoKTsKKyAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgICAgICAgICAgICAgICAg
ICAgICAgID0gYXR0YWNobWVudCA/IGF0dGFjaG1lbnQtPmdldEludGVybmFsRm9ybWF0KCkgOiBH
TF9OT05FOworCisgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6
OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7CisKKyAgICBEV09SRCBjb2xv
ck1hc2sgPSBnbF9kM2Q5OjpDb252ZXJ0Q29sb3JNYXNrKAorICAgICAgICBmb3JtYXRJbmZvLnJl
ZEJpdHMgPiAwICYmIHJlZCwgZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYmIGdyZWVuLAorICAg
ICAgICBmb3JtYXRJbmZvLmJsdWVCaXRzID4gMCAmJiBibHVlLCBmb3JtYXRJbmZvLmFscGhhQml0
cyA+IDAgJiYgYWxwaGEpOworCisgICAgaWYgKGNvbG9yTWFzayA9PSAwICYmICF6ZXJvQ29sb3JN
YXNrQWxsb3dlZCkKKyAgICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1S
ZW5kZXJlcjktPmdldERldmljZSgpOworICAgICAgICAvLyBFbmFibGUgZ3JlZW4gY2hhbm5lbCwg
YnV0IHNldCBibGVuZGluZyBzbyBub3RoaW5nIHdpbGwgYmUgZHJhd24uCisgICAgICAgIGRldmlj
ZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ09MT1JXUklURUVOQUJMRSwgRDNEQ09MT1JXUklURUVO
QUJMRV9HUkVFTik7CisgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQUxQSEFC
TEVOREVOQUJMRSwgVFJVRSk7CisKKyAgICAgICAgZGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShEM0RS
U19TUkNCTEVORCwgRDNEQkxFTkRfWkVSTyk7CisgICAgICAgIGRldmljZS0+U2V0UmVuZGVyU3Rh
dGUoRDNEUlNfREVTVEJMRU5ELCBEM0RCTEVORF9PTkUpOworICAgICAgICBkZXZpY2UtPlNldFJl
bmRlclN0YXRlKEQzRFJTX0JMRU5ET1AsIEQzREJMRU5ET1BfQUREKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgbVJlbmRlcmVyOS0+Z2V0RGV2aWNlKCktPlNldFJlbmRlclN0YXRl
KEQzRFJTX0NPTE9SV1JJVEVFTkFCTEUsIGNvbG9yTWFzayk7CisgICAgfQorCisgICAgbUN1ckJs
ZW5kU3RhdGUuY29sb3JNYXNrUmVkICAgPSByZWQ7CisgICAgbUN1ckJsZW5kU3RhdGUuY29sb3JN
YXNrR3JlZW4gPSBncmVlbjsKKyAgICBtQ3VyQmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICA9IGJs
dWU7CisgICAgbUN1ckJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEgPSBhbHBoYTsKK30KKwordm9p
ZCBTdGF0ZU1hbmFnZXI5OjpzZXRTYW1wbGVNYXNrKHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKQor
eworICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlcjktPmdldERldmljZSgp
OworICAgIC8vIFNldCB0aGUgbXVsdGlzYW1wbGUgbWFzaworICAgIGRldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfTVVMVElTQU1QTEVBTlRJQUxJQVMsIFRSVUUpOworICAgIGRldmljZS0+U2V0
UmVuZGVyU3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCBzdGF0aWNfY2FzdDxEV09SRD4oc2Ft
cGxlTWFzaykpOworCisgICAgbUN1clNhbXBsZU1hc2sgPSBzYW1wbGVNYXNrOworfQorCit2b2lk
IFN0YXRlTWFuYWdlcjk6OnNldEN1bGxNb2RlKGJvb2wgY3VsbEZhY2UsIEdMZW51bSBjdWxsTW9k
ZSwgR0xlbnVtIGZyb250RmFjZSkKK3sKKyAgICBpZiAoY3VsbEZhY2UpCisgICAgeworICAgICAg
ICBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfQ1VMTE1PREUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9kM2Q5
OjpDb252ZXJ0Q3VsbE1vZGUoY3VsbE1vZGUsIGZyb250RmFjZSkpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKS0+U2V0UmVuZGVyU3RhdGUo
RDNEUlNfQ1VMTE1PREUsIEQzRENVTExfTk9ORSk7CisgICAgfQorCisgICAgbUN1clJhc3RlclN0
YXRlLmN1bGxGYWNlICA9IGN1bGxGYWNlOworICAgIG1DdXJSYXN0ZXJTdGF0ZS5jdWxsTW9kZSAg
PSBjdWxsTW9kZTsKKyAgICBtQ3VyUmFzdGVyU3RhdGUuZnJvbnRGYWNlID0gZnJvbnRGYWNlOwor
fQorCit2b2lkIFN0YXRlTWFuYWdlcjk6OnNldERlcHRoQmlhcyhib29sIHBvbHlnb25PZmZzZXRG
aWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb2x5Z29uT2Zm
c2V0RmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb2x5
Z29uT2Zmc2V0VW5pdHMpCit7CisgICAgaWYgKHBvbHlnb25PZmZzZXRGaWxsKQorICAgIHsKKyAg
ICAgICAgaWYgKG1DdXJEZXB0aFNpemUgPiAwKQorICAgICAgICB7CisgICAgICAgICAgICBJRGly
ZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXI5LT5nZXREZXZpY2UoKTsKKyAgICAgICAg
ICAgIGRldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNfU0xPUEVTQ0FMRURFUFRIQklBUywgKihE
V09SRCAqKSZwb2x5Z29uT2Zmc2V0RmFjdG9yKTsKKworICAgICAgICAgICAgZmxvYXQgZGVwdGhC
aWFzID0gbGRleHAocG9seWdvbk9mZnNldFVuaXRzLCAtc3RhdGljX2Nhc3Q8aW50PihtQ3VyRGVw
dGhTaXplKSk7CisgICAgICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RFUFRI
QklBUywgKihEV09SRCAqKSZkZXB0aEJpYXMpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlcjktPmdl
dERldmljZSgpOworICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX1NMT1BFU0NB
TEVERVBUSEJJQVMsIDApOworICAgICAgICBkZXZpY2UtPlNldFJlbmRlclN0YXRlKEQzRFJTX0RF
UFRIQklBUywgMCk7CisgICAgfQorCisgICAgbUN1clJhc3RlclN0YXRlLnBvbHlnb25PZmZzZXRG
aWxsICAgPSBwb2x5Z29uT2Zmc2V0RmlsbDsKKyAgICBtQ3VyUmFzdGVyU3RhdGUucG9seWdvbk9m
ZnNldEZhY3RvciA9IHBvbHlnb25PZmZzZXRGYWN0b3I7CisgICAgbUN1clJhc3RlclN0YXRlLnBv
bHlnb25PZmZzZXRVbml0cyAgPSBwb2x5Z29uT2Zmc2V0VW5pdHM7Cit9CisKK3ZvaWQgU3RhdGVN
YW5hZ2VyOTo6dXBkYXRlRGVwdGhTaXplSWZDaGFuZ2VkKGJvb2wgZGVwdGhTdGVuY2lsSW5pdGlh
bGl6ZWQsIHVuc2lnbmVkIGludCBkZXB0aFNpemUpCit7CisgICAgaWYgKCFkZXB0aFN0ZW5jaWxJ
bml0aWFsaXplZCB8fCBkZXB0aFNpemUgIT0gbUN1ckRlcHRoU2l6ZSkKKyAgICB7CisgICAgICAg
IG1DdXJEZXB0aFNpemUgPSBkZXB0aFNpemU7CisgICAgICAgIGZvcmNlU2V0UmFzdGVyU3RhdGUo
KTsKKyAgICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UgcngKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDYgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTdGF0
ZU1hbmFnZXI5Lmg6IERlZmluZXMgYSBjbGFzcyBmb3IgY2FjaGluZyBEM0Q5IHN0YXRlCisKKyNp
Zm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEOV9TVEFURU1BTkFHRVI5X0hfCisjZGVmaW5lIExJ
QkFOR0xFX1JFTkRFUkVSX0QzRDlfU1RBVEVNQU5BR0VSOV9IXworCisjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0RhdGEuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9TdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJl
ckQzRC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgUmVuZGVyZXI5OworCitzdHJ1Y3Qg
ZHhfVmVydGV4Q29uc3RhbnRzOQoreworICAgIGZsb2F0IGRlcHRoUmFuZ2VbNF07CisgICAgZmxv
YXQgdmlld0FkanVzdFs0XTsKKyAgICBmbG9hdCB2aWV3Q29vcmRzWzRdOworfTsKKworc3RydWN0
IGR4X1BpeGVsQ29uc3RhbnRzOQoreworICAgIGZsb2F0IGRlcHRoUmFuZ2VbNF07CisgICAgZmxv
YXQgdmlld0Nvb3Jkc1s0XTsKKyAgICBmbG9hdCBkZXB0aEZyb250WzRdOworfTsKKworY2xhc3Mg
U3RhdGVNYW5hZ2VyOSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6Cisg
ICAgU3RhdGVNYW5hZ2VyOShSZW5kZXJlcjkgKnJlbmRlcmVyOSk7CisgICAgflN0YXRlTWFuYWdl
cjkoKTsKKworICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0
IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpOworCisgICAgZ2w6OkVycm9yIHNldEJs
ZW5kRGVwdGhSYXN0ZXJTdGF0ZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlLCB1bnNpZ25lZCBp
bnQgc2FtcGxlTWFzayk7CisgICAgdm9pZCBzZXRTY2lzc29yU3RhdGUoY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmc2Npc3NvciwgYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldFZpZXdwb3J0U3RhdGUo
Y29uc3QgZ2w6OkNhcHMgKmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnZpZXdwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB6
TmVhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgekZhciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZnJvbnRGYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9y
ZVZpZXdwb3J0KTsKKworICAgIHZvaWQgc2V0U2hhZGVyQ29uc3RhbnRzKCk7CisKKyAgICB2b2lk
IGZvcmNlU2V0QmxlbmRTdGF0ZSgpOworICAgIHZvaWQgZm9yY2VTZXRSYXN0ZXJTdGF0ZSgpOwor
ICAgIHZvaWQgZm9yY2VTZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAgIHZvaWQgZm9yY2VTZXRT
Y2lzc29yU3RhdGUoKTsKKyAgICB2b2lkIGZvcmNlU2V0Vmlld3BvcnRTdGF0ZSgpOworICAgIHZv
aWQgZm9yY2VTZXREWFVuaWZvcm1zU3RhdGUoKTsKKworICAgIHZvaWQgdXBkYXRlRGVwdGhTaXpl
SWZDaGFuZ2VkKGJvb2wgZGVwdGhTdGVuY2lsSW5pdGlhbGl6ZWQsIHVuc2lnbmVkIGludCBkZXB0
aFNpemUpOworICAgIHZvaWQgdXBkYXRlU3RlbmNpbFNpemVJZkNoYW5nZWQoYm9vbCBkZXB0aFN0
ZW5jaWxJbml0aWFsaXplZCwgdW5zaWduZWQgaW50IHN0ZW5jaWxTaXplKTsKKworICAgIHZvaWQg
c2V0UmVuZGVyVGFyZ2V0Qm91bmRzKHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCk7CisKKyAg
ICBpbnQgZ2V0UmVuZGVyVGFyZ2V0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtUmVuZGVyVGFyZ2V0
Qm91bmRzLndpZHRoOyB9CisgICAgaW50IGdldFJlbmRlclRhcmdldEhlaWdodCgpIGNvbnN0IHsg
cmV0dXJuIG1SZW5kZXJUYXJnZXRCb3VuZHMuaGVpZ2h0OyB9CisKKyAgICB2b2lkIHJlc2V0RGly
dHlCaXRzKCkgeyBtRGlydHlCaXRzLnJlc2V0KCk7IH0KKworICBwcml2YXRlOgorICAgIC8vIEJs
ZW5kIHN0YXRlIGZ1bmN0aW9ucworICAgIHZvaWQgc2V0QmxlbmRFbmFibGVkKGJvb2wgZW5hYmxl
ZCk7CisgICAgdm9pZCBzZXRCbGVuZENvbG9yKGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0
YXRlLCBjb25zdCBnbDo6Q29sb3JGICZibGVuZENvbG9yKTsKKyAgICB2b2lkIHNldEJsZW5kRnVu
Y3NFcXVhdGlvbnMoY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJsZW5kU3RhdGUpOworICAgIHZvaWQg
c2V0Q29sb3JNYXNrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCByZWQsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBibHVl
LAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBhbHBoYSk7CisgICAgdm9pZCBzZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UoYm9vbCBl
bmFibGVkKTsKKyAgICB2b2lkIHNldERpdGhlcihib29sIGRpdGhlcik7CisgICAgdm9pZCBzZXRT
YW1wbGVNYXNrKHVuc2lnbmVkIGludCBzYW1wbGVNYXNrKTsKKworICAgIC8vIEN1cnJlbnQgcmFz
dGVyIHN0YXRlIGZ1bmN0aW9ucworICAgIHZvaWQgc2V0Q3VsbE1vZGUoYm9vbCBjdWxsRmFjZSwg
R0xlbnVtIGN1bGxNb2RlLCBHTGVudW0gZnJvbnRGYWNlKTsKKyAgICB2b2lkIHNldERlcHRoQmlh
cyhib29sIHBvbHlnb25PZmZzZXRGaWxsLAorICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
cG9seWdvbk9mZnNldEZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvbHln
b25PZmZzZXRVbml0cyk7CisKKyAgICAvLyBEZXB0aCBzdGVuY2lsIHN0YXRlIGZ1bmN0aW9ucwor
ICAgIHZvaWQgc2V0U3RlbmNpbE9wc0Zyb250KEdMZW51bSBzdGVuY2lsRmFpbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3RlbmNpbFBhc3NEZXB0aEZhaWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHN0ZW5jaWxQYXNzRGVwdGhQYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbnRGYWNlQ0NXKTsKKyAgICB2b2lkIHNldFN0
ZW5jaWxPcHNCYWNrKEdMZW51bSBzdGVuY2lsQmFja0ZhaWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHN0ZW5jaWxCYWNrUGFzc0RlcHRoUGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZnJvbnRGYWNlQ0NXKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxC
YWNrV3JpdGVNYXNrKEdMdWludCBzdGVuY2lsQmFja1dyaXRlTWFzaywgYm9vbCBmcm9udEZhY2VD
Q1cpOworICAgIHZvaWQgc2V0RGVwdGhGdW5jKGJvb2wgZGVwdGhUZXN0LCBHTGVudW0gZGVwdGhG
dW5jKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxUZXN0RW5hYmxlZChib29sIGVuYWJsZWQpOworICAg
IHZvaWQgc2V0RGVwdGhNYXNrKGJvb2wgZGVwdGhNYXNrKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxG
dW5jc0Zyb250KEdMZW51bSBzdGVuY2lsRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBzdGVuY2lsTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHN0ZW5jaWxSZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb250
RmFjZUNDVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhT
dGVuY2lsKTsKKyAgICB2b2lkIHNldFN0ZW5jaWxGdW5jc0JhY2soR0xlbnVtIHN0ZW5jaWxCYWNr
RnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0ZW5jaWxCYWNrTWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RlbmNpbEJhY2tSZWYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbnRGYWNlQ0NXLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4U3RlbmNpbCk7CisgICAgdm9pZCBz
ZXRTdGVuY2lsV3JpdGVNYXNrKEdMdWludCBzdGVuY2lsV3JpdGVNYXNrLCBib29sIGZyb250RmFj
ZUNDVyk7CisKKyAgICB2b2lkIHNldFNjaXNzb3JFbmFibGVkKGJvb2wgc2Npc3NvckVuYWJsZWQp
OworICAgIHZvaWQgc2V0U2Npc3NvclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3Nvciwg
Ym9vbCBlbmFibGVkKTsKKworICAgIGVudW0gRGlydHlCaXRUeXBlCisgICAgeworICAgICAgICAv
LyBCbGVuZCBkaXJ0eSBiaXRzCisgICAgICAgIERJUlRZX0JJVF9CTEVORF9FTkFCTEVELAorICAg
ICAgICBESVJUWV9CSVRfQkxFTkRfQ09MT1IsCisgICAgICAgIERJUlRZX0JJVF9CTEVORF9GVU5D
U19FUVVBVElPTlMsCisgICAgICAgIERJUlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0Us
CisgICAgICAgIERJUlRZX0JJVF9DT0xPUl9NQVNLLAorICAgICAgICBESVJUWV9CSVRfRElUSEVS
LAorICAgICAgICBESVJUWV9CSVRfU0FNUExFX01BU0ssCisKKyAgICAgICAgLy8gUmFzdGVyaXpl
ciBkaXJ0eSBiaXRzCisgICAgICAgIERJUlRZX0JJVF9DVUxMX01PREUsCisgICAgICAgIERJUlRZ
X0JJVF9ERVBUSF9CSUFTLAorCisgICAgICAgIC8vIERlcHRoIHN0ZW5jaWwgZGlydHkgYml0cwor
ICAgICAgICBESVJUWV9CSVRfU1RFTkNJTF9ERVBUSF9NQVNLLAorICAgICAgICBESVJUWV9CSVRf
U1RFTkNJTF9ERVBUSF9GVU5DLAorICAgICAgICBESVJUWV9CSVRfU1RFTkNJTF9URVNUX0VOQUJM
RUQsCisgICAgICAgIERJUlRZX0JJVF9TVEVOQ0lMX0ZVTkNTX0ZST05ULAorICAgICAgICBESVJU
WV9CSVRfU1RFTkNJTF9GVU5DU19CQUNLLAorICAgICAgICBESVJUWV9CSVRfU1RFTkNJTF9XUklU
RU1BU0tfRlJPTlQsCisgICAgICAgIERJUlRZX0JJVF9TVEVOQ0lMX1dSSVRFTUFTS19CQUNLLAor
ICAgICAgICBESVJUWV9CSVRfU1RFTkNJTF9PUFNfRlJPTlQsCisgICAgICAgIERJUlRZX0JJVF9T
VEVOQ0lMX09QU19CQUNLLAorCisgICAgICAgIC8vIFNjaXNzb3IgZGlydHkgYml0cworICAgICAg
ICBESVJUWV9CSVRfU0NJU1NPUl9FTkFCTEVELAorICAgICAgICBESVJUWV9CSVRfU0NJU1NPUl9S
RUNULAorCisgICAgICAgIC8vIFZpZXdwb3J0IGRpcnR5IGJpdHMKKyAgICAgICAgRElSVFlfQklU
X1ZJRVdQT1JULAorCisgICAgICAgIERJUlRZX0JJVF9NQVgKKyAgICB9OworCisgICAgdHlwZWRl
ZiBzdGQ6OmJpdHNldDxESVJUWV9CSVRfTUFYPiBEaXJ0eUJpdHM7CisKKyAgICAvLyBDdXJyZW50
bHkgYXBwbGllZCBibGVuZCBzdGF0ZQorICAgIGdsOjpCbGVuZFN0YXRlIG1DdXJCbGVuZFN0YXRl
OworICAgIGdsOjpDb2xvckYgbUN1ckJsZW5kQ29sb3I7CisgICAgdW5zaWduZWQgaW50IG1DdXJT
YW1wbGVNYXNrOworICAgIERpcnR5Qml0cyBtQmxlbmRTdGF0ZURpcnR5Qml0czsKKworICAgIC8v
IEN1cnJlbnRseSBhcHBsaWVkIHJhc3RlciBzdGF0ZQorICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUg
bUN1clJhc3RlclN0YXRlOworICAgIHVuc2lnbmVkIGludCBtQ3VyRGVwdGhTaXplOworICAgIERp
cnR5Qml0cyBtUmFzdGVyaXplclN0YXRlRGlydHlCaXRzOworCisgICAgLy8gQ3VycmVudGx5IGFw
cGxpZWQgZGVwdGggc3RlbmNpbCBzdGF0ZQorICAgIGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSBtQ3Vy
RGVwdGhTdGVuY2lsU3RhdGU7CisgICAgaW50IG1DdXJTdGVuY2lsUmVmOworICAgIGludCBtQ3Vy
U3RlbmNpbEJhY2tSZWY7CisgICAgYm9vbCBtQ3VyRnJvbnRGYWNlQ0NXOworICAgIHVuc2lnbmVk
IGludCBtQ3VyU3RlbmNpbFNpemU7CisgICAgRGlydHlCaXRzIG1EZXB0aFN0ZW5jaWxTdGF0ZURp
cnR5Qml0czsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHNjaXNzb3Igc3RhdGVzCisgICAg
Z2w6OlJlY3RhbmdsZSBtQ3VyU2Npc3NvclJlY3Q7CisgICAgYm9vbCBtQ3VyU2Npc3NvckVuYWJs
ZWQ7CisgICAgZ2w6OkV4dGVudHMgbVJlbmRlclRhcmdldEJvdW5kczsKKyAgICBEaXJ0eUJpdHMg
bVNjaXNzb3JTdGF0ZURpcnR5Qml0czsKKworICAgIC8vIEN1cnJlbnRseSBhcHBsaWVkIHZpZXdw
b3J0IHN0YXRlcworICAgIGJvb2wgbUZvcmNlU2V0Vmlld3BvcnQ7CisgICAgZ2w6OlJlY3Rhbmds
ZSBtQ3VyVmlld3BvcnQ7CisgICAgZmxvYXQgbUN1ck5lYXI7CisgICAgZmxvYXQgbUN1ckZhcjsK
KyAgICBmbG9hdCBtQ3VyRGVwdGhGcm9udDsKKyAgICBib29sIG1DdXJJZ25vcmVWaWV3cG9ydDsK
KworICAgIGR4X1ZlcnRleENvbnN0YW50czkgbVZlcnRleENvbnN0YW50czsKKyAgICBkeF9QaXhl
bENvbnN0YW50czkgbVBpeGVsQ29uc3RhbnRzOworICAgIGJvb2wgbUR4VW5pZm9ybXNEaXJ0eTsK
KworICAgIC8vIEZJWE1FOiBVbnN1cHBvcnRlZCBieSBEM0Q5CisgICAgc3RhdGljIGNvbnN0IEQz
RFJFTkRFUlNUQVRFVFlQRSBEM0RSU19DQ1dfU1RFTkNJTFJFRiAgICAgICA9IEQzRFJTX1NURU5D
SUxSRUY7CisgICAgc3RhdGljIGNvbnN0IEQzRFJFTkRFUlNUQVRFVFlQRSBEM0RSU19DQ1dfU1RF
TkNJTE1BU0sgICAgICA9IEQzRFJTX1NURU5DSUxNQVNLOworICAgIHN0YXRpYyBjb25zdCBEM0RS
RU5ERVJTVEFURVRZUEUgRDNEUlNfQ0NXX1NURU5DSUxXUklURU1BU0sgPSBEM0RSU19TVEVOQ0lM
V1JJVEVNQVNLOworCisgICAgUmVuZGVyZXI5ICptUmVuZGVyZXI5OworICAgIERpcnR5Qml0cyBt
RGlydHlCaXRzOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisjZW5kaWYgIC8vIExJQkFOR0xF
X1JFTkRFUkVSX0QzRDlfU1RBVEVNQU5BR0VSOV9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9Td2FwQ2hhaW45LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNSwyMSArMTUsMjYgQEAKIG5hbWVzcGFjZSByeAogewogCi1T
d2FwQ2hhaW45OjpTd2FwQ2hhaW45KFJlbmRlcmVyOSAqcmVuZGVyZXIsIE5hdGl2ZVdpbmRvdyBu
YXRpdmVXaW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKLSAgICA6
IG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAgICBTd2FwQ2hhaW5EM0QobmF0aXZlV2luZG93LCBz
aGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpLAorU3dhcENo
YWluOTo6U3dhcENoYWluOShSZW5kZXJlcjkgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICBOYXRpdmVXaW5kb3cgbmF0aXZlV2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICBI
QU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVm
ZmVyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikKKyAgICA6IFN3
YXBDaGFpbkQzRChuYXRpdmVXaW5kb3csIHNoYXJlSGFuZGxlLCBiYWNrQnVmZmVyRm9ybWF0LCBk
ZXB0aEJ1ZmZlckZvcm1hdCksCisgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAorICAgICAgbVdp
ZHRoKC0xKSwKKyAgICAgIG1IZWlnaHQoLTEpLAorICAgICAgbVN3YXBJbnRlcnZhbCgtMSksCisg
ICAgICBtU3dhcENoYWluKG51bGxwdHIpLAorICAgICAgbUJhY2tCdWZmZXIobnVsbHB0ciksCisg
ICAgICBtUmVuZGVyVGFyZ2V0KG51bGxwdHIpLAorICAgICAgbURlcHRoU3RlbmNpbChudWxscHRy
KSwKKyAgICAgIG1PZmZzY3JlZW5UZXh0dXJlKG51bGxwdHIpLAogICAgICAgbUNvbG9yUmVuZGVy
VGFyZ2V0KHRoaXMsIGZhbHNlKSwKICAgICAgIG1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQodGhp
cywgdHJ1ZSkKIHsKLSAgICBtU3dhcENoYWluID0gTlVMTDsKLSAgICBtQmFja0J1ZmZlciA9IE5V
TEw7Ci0gICAgbURlcHRoU3RlbmNpbCA9IE5VTEw7Ci0gICAgbVJlbmRlclRhcmdldCA9IE5VTEw7
Ci0gICAgbU9mZnNjcmVlblRleHR1cmUgPSBOVUxMOwotICAgIG1XaWR0aCA9IC0xOwotICAgIG1I
ZWlnaHQgPSAtMTsKLSAgICBtU3dhcEludGVydmFsID0gLTE7CisgICAgQVNTRVJUKG9yaWVudGF0
aW9uID09IDApOwogfQogCiBTd2FwQ2hhaW45Ojp+U3dhcENoYWluOSgpCkBAIC0xMDQsNyArMTA5
LDcgQEAKICAgICAgICAgcFNoYXJlSGFuZGxlID0gJm1TaGFyZUhhbmRsZTsKICAgICB9CiAKLSAg
ICBjb25zdCBkM2Q5OjpUZXh0dXJlRm9ybWF0ICZiYWNrQnVmZmVyZDNkRm9ybWF0SW5mbyA9IGQz
ZDk6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1CYWNrQnVmZmVyRm9ybWF0KTsKKyAgICBjb25zdCBk
M2Q5OjpUZXh0dXJlRm9ybWF0ICZiYWNrQnVmZmVyZDNkRm9ybWF0SW5mbyA9IGQzZDk6OkdldFRl
eHR1cmVGb3JtYXRJbmZvKG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQpOwogICAgIHJlc3Vs
dCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShiYWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWln
aHQsIDEsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmFja0J1ZmZlcmQzZEZvcm1hdEluZm8udGV4Rm9ybWF0LCBEM0RQT09MX0RFRkFV
TFQsICZtT2Zmc2NyZWVuVGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcFNoYXJlSGFuZGxlKTsKQEAgLTMxMiw4ICszMTcsOCBAQAogCiAgICAgUkVDVCByZWN0ID0K
ICAgICB7Ci0gICAgICAgIHgsIG1IZWlnaHQgLSB5IC0gaGVpZ2h0LAotICAgICAgICB4ICsgd2lk
dGgsIG1IZWlnaHQgLSB5CisgICAgICAgIHN0YXRpY19jYXN0PExPTkc+KHgpLCBzdGF0aWNfY2Fz
dDxMT05HPihtSGVpZ2h0IC0geSAtIGhlaWdodCksCisgICAgICAgIHN0YXRpY19jYXN0PExPTkc+
KHggKyB3aWR0aCksIHN0YXRpY19jYXN0PExPTkc+KG1IZWlnaHQgLSB5KQogICAgIH07CiAKICAg
ICBIUkVTVUxUIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPlByZXNlbnQoJnJlY3QsICZyZWN0LCBOVUxM
LCBOVUxMLCAwKTsKQEAgLTM4NCw2ICszODksMTIgQEAKICAgICByZXR1cm4gbU9mZnNjcmVlblRl
eHR1cmU7CiB9CiAKK3ZvaWQgKlN3YXBDaGFpbjk6OmdldEtleWVkTXV0ZXgoKQoreworICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIHZvaWQgU3dhcENoYWluOTo6
cmVjcmVhdGUoKQogewogICAgIGlmICghbVN3YXBDaGFpbikKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hhaW45LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N3YXBDaGFpbjkuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaAko
d29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTIgQEAKIGNsYXNzIFN3YXBDaGFpbjkgOiBwdWJs
aWMgU3dhcENoYWluRDNECiB7CiAgIHB1YmxpYzoKLSAgICBTd2FwQ2hhaW45KFJlbmRlcmVyOSAq
cmVuZGVyZXIsIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csIEhBTkRMRSBzaGFyZUhhbmRsZSwK
LSAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LCBHTGVudW0gZGVwdGhCdWZm
ZXJGb3JtYXQpOworICAgIFN3YXBDaGFpbjkoUmVuZGVyZXI5ICpyZW5kZXJlciwKKyAgICAgICAg
ICAgICAgIE5hdGl2ZVdpbmRvdyBuYXRpdmVXaW5kb3csCisgICAgICAgICAgICAgICBIQU5ETEUg
c2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKKyAg
ICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKKyAgICAgICAgICAgICAgIEVH
TGludCBvcmllbnRhdGlvbik7CiAgICAgdmlydHVhbCB+U3dhcENoYWluOSgpOwogCiAgICAgRUdM
aW50IHJlc2l6ZShFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdo
dCk7CkBAIC0zOSwxMiArNDMsMTQgQEAKICAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtV2lkdGg7IH0KICAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbUhl
aWdodDsgfQogCisgICAgdm9pZCAqZ2V0S2V5ZWRNdXRleCgpIG92ZXJyaWRlOworCiAgIHByaXZh
dGU6CiAgICAgdm9pZCByZWxlYXNlKCk7CiAKICAgICBSZW5kZXJlcjkgKm1SZW5kZXJlcjsKKyAg
ICBFR0xpbnQgbVdpZHRoOwogICAgIEVHTGludCBtSGVpZ2h0OwotICAgIEVHTGludCBtV2lkdGg7
CiAgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CiAKICAgICBJRGlyZWN0M0RTd2FwQ2hhaW45ICpt
U3dhcENoYWluOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVT
dG9yYWdlOS5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05LDE0ICs5LDE2IEBACiAvLyBEM0Q5IHRleHR1cmUuCiAKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaCIKKworI2luY2x1
ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N3YXBDaGFpbjkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9SZW5kZXJUYXJnZXQ5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvcmVuZGVyZXI5X3V0aWxzLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvZm9ybWF0dXRpbHM5LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1
cmVEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgotI2luY2x1ZGUgImxp
YkFOR0xFL1RleHR1cmUuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC04OCw3ICs5MCw3IEBACiAK
IGludCBUZXh0dXJlU3RvcmFnZTk6OmdldExldmVsQ291bnQoKSBjb25zdAogewotICAgIHJldHVy
biBtTWlwTGV2ZWxzIC0gbVRvcExldmVsOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1N
aXBMZXZlbHMpIC0gbVRvcExldmVsOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5Ojpz
ZXREYXRhKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgSW1hZ2VEM0QgKmltYWdlLCBjb25z
dCBnbDo6Qm94ICpkZXN0Qm94LCBHTGVudW0gdHlwZSwKQEAgLTEwNSw3ICsxMDcsNyBAQAogICAg
IG1UZXh0dXJlID0gc3VyZmFjZVRleHR1cmU7CiAgICAgbU1pcExldmVscyA9IHN1cmZhY2VUZXh0
dXJlLT5HZXRMZXZlbENvdW50KCk7CiAKLSAgICBtSW50ZXJuYWxGb3JtYXQgPSBzd2FwY2hhaW4t
PkdldEJhY2tCdWZmZXJJbnRlcm5hbEZvcm1hdCgpOworICAgIG1JbnRlcm5hbEZvcm1hdCA9IHN3
YXBjaGFpbi0+R2V0UmVuZGVyVGFyZ2V0SW50ZXJuYWxGb3JtYXQoKTsKIAogICAgIEQzRFNVUkZB
Q0VfREVTQyBzdXJmYWNlRGVzYzsKICAgICBzdXJmYWNlVGV4dHVyZS0+R2V0TGV2ZWxEZXNjKDAs
ICZzdXJmYWNlRGVzYyk7CkBAIC0xMTMsMTYgKzExNSwxMyBAQAogICAgIG1UZXh0dXJlSGVpZ2h0
ID0gc3VyZmFjZURlc2MuSGVpZ2h0OwogICAgIG1UZXh0dXJlRm9ybWF0ID0gc3VyZmFjZURlc2Mu
Rm9ybWF0OwogCi0gICAgbVJlbmRlclRhcmdldCA9IE5VTEw7Ci0KLSAgICBpbml0aWFsaXplU2Vy
aWFscygxLCAxKTsKKyAgICBtUmVuZGVyVGFyZ2V0cy5yZXNpemUobU1pcExldmVscywgbnVsbHB0
cik7CiB9CiAKIFRleHR1cmVTdG9yYWdlOV8yRDo6VGV4dHVyZVN0b3JhZ2U5XzJEKFJlbmRlcmVy
OSAqcmVuZGVyZXIsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQgbGV2ZWxzKQogICAgIDogVGV4dHVyZVN0
b3JhZ2U5KHJlbmRlcmVyLCBHZXRUZXh0dXJlVXNhZ2UoaW50ZXJuYWxmb3JtYXQsIHJlbmRlclRh
cmdldCkpCiB7CiAgICAgbVRleHR1cmUgPSBOVUxMOwotICAgIG1SZW5kZXJUYXJnZXQgPSBOVUxM
OwogCiAgICAgbUludGVybmFsRm9ybWF0ID0gaW50ZXJuYWxmb3JtYXQ7CiAKQEAgLTEzNCwxOSAr
MTMzLDI4IEBACiAgICAgbVRleHR1cmVIZWlnaHQgPSBoZWlnaHQ7CiAgICAgbU1pcExldmVscyA9
IG1Ub3BMZXZlbCArIGxldmVsczsKIAotICAgIGluaXRpYWxpemVTZXJpYWxzKGdldExldmVsQ291
bnQoKSwgMSk7CisgICAgbVJlbmRlclRhcmdldHMucmVzaXplKGxldmVscywgbnVsbHB0cik7CiB9
CiAKIFRleHR1cmVTdG9yYWdlOV8yRDo6flRleHR1cmVTdG9yYWdlOV8yRCgpCiB7CiAgICAgU2Fm
ZVJlbGVhc2UobVRleHR1cmUpOwotICAgIFNhZmVEZWxldGUobVJlbmRlclRhcmdldCk7CisgICAg
Zm9yIChhdXRvICZyZW5kZXJUYXJnZXQgOiBtUmVuZGVyVGFyZ2V0cykKKyAgICB7CisgICAgICAg
IFNhZmVEZWxldGUocmVuZGVyVGFyZ2V0KTsKKyAgICB9CiB9CiAKIC8vIEluY3JlbWVudHMgcmVm
Y291bnQgb24gc3VyZmFjZS4KIC8vIGNhbGxlciBtdXN0IFJlbGVhc2UoKSB0aGUgcmV0dXJuZWQg
c3VyZmFjZQotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0U3VyZmFjZUxldmVsKGlu
dCBsZXZlbCwgYm9vbCBkaXJ0eSwgSURpcmVjdDNEU3VyZmFjZTkgKipvdXRTdXJmYWNlKQorZ2w6
OkVycm9yIFRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0U3VyZmFjZUxldmVsKEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGly
dHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURpcmVj
dDNEU3VyZmFjZTkgKipvdXRTdXJmYWNlKQogeworICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVY
VFVSRV8yRCk7CisgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRSh0YXJnZXQpOworCiAgICAg
SURpcmVjdDNEQmFzZVRleHR1cmU5ICpiYXNlVGV4dHVyZSA9IE5VTEw7CiAgICAgZ2w6OkVycm9y
IGVycm9yID0gZ2V0QmFzZVRleHR1cmUoJmJhc2VUZXh0dXJlKTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQpAQCAtMTczLDM2ICsxODEsNTIgQEAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0UmVuZGVyVGFy
Z2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICYvKmluZGV4Ki8sIFJlbmRlclRhcmdldEQzRCAqKm91
dFJUKQorZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7Ci0gICAg
aWYgKCFtUmVuZGVyVGFyZ2V0ICYmIGlzUmVuZGVyVGFyZ2V0KCkpCisgICAgQVNTRVJUKGluZGV4
Lm1pcEluZGV4IDwgZ2V0TGV2ZWxDb3VudCgpKTsKKworICAgIGlmICghbVJlbmRlclRhcmdldHNb
aW5kZXgubWlwSW5kZXhdICYmIGlzUmVuZGVyVGFyZ2V0KCkpCiAgICAgeworICAgICAgICBJRGly
ZWN0M0RCYXNlVGV4dHVyZTkgKmJhc2VUZXh0dXJlID0gTlVMTDsKKyAgICAgICAgZ2w6OkVycm9y
IGVycm9yID0gZ2V0QmFzZVRleHR1cmUoJmJhc2VUZXh0dXJlKTsKKyAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICB9CisKICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UgPSBOVUxMOwotICAgICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRTdXJmYWNlTGV2ZWwoMCwgZmFsc2UsICZzdXJmYWNlKTsK
KyAgICAgICAgZXJyb3IgPSBnZXRTdXJmYWNlTGV2ZWwoR0xfVEVYVFVSRV8yRCwgaW5kZXgubWlw
SW5kZXgsIGZhbHNlLCAmc3VyZmFjZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgfQogCi0gICAgICAg
IG1SZW5kZXJUYXJnZXQgPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDkoc3VyZmFjZSwgbUludGVy
bmFsRm9ybWF0LCBtVGV4dHVyZVdpZHRoLCBtVGV4dHVyZUhlaWdodCwgMSwgMCk7CisgICAgICAg
IHNpemVfdCB0ZXh0dXJlTWlwTGV2ZWwgPSBtVG9wTGV2ZWwgKyBpbmRleC5taXBJbmRleDsKKyAg
ICAgICAgc2l6ZV90IG1pcFdpZHRoICAgICAgICA9IHN0ZDo6bWF4PHNpemVfdD4obVRleHR1cmVX
aWR0aCA+PiB0ZXh0dXJlTWlwTGV2ZWwsIDF1KTsKKyAgICAgICAgc2l6ZV90IG1pcEhlaWdodCAg
ICAgICA9IHN0ZDo6bWF4PHNpemVfdD4obVRleHR1cmVIZWlnaHQgPj4gdGV4dHVyZU1pcExldmVs
LCAxdSk7CisKKyAgICAgICAgYmFzZVRleHR1cmUtPkFkZFJlZigpOworICAgICAgICBtUmVuZGVy
VGFyZ2V0c1tpbmRleC5taXBJbmRleF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDkoCisgICAg
ICAgICAgICBiYXNlVGV4dHVyZSwgdGV4dHVyZU1pcExldmVsLCBzdXJmYWNlLCBtSW50ZXJuYWxG
b3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1pcFdpZHRoKSwKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KG1pcEhlaWdodCksIDEsIDApOwogICAgIH0KIAogICAgIEFTU0VSVChv
dXRSVCk7Ci0gICAgKm91dFJUID0gbVJlbmRlclRhcmdldDsKKyAgICAqb3V0UlQgPSBtUmVuZGVy
VGFyZ2V0c1tpbmRleC5taXBJbmRleF07CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfMkQ6OmdlbmVyYXRlTWlwbWFwKGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwgY29uc3QgZ2w6OkltYWdlSW5kZXggJmRl
c3RJbmRleCkKIHsKICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqdXBwZXIgPSBOVUxMOwotICAgIGds
OjpFcnJvciBlcnJvciA9IGdldFN1cmZhY2VMZXZlbChzb3VyY2VJbmRleC5taXBJbmRleCwgZmFs
c2UsICZ1cHBlcik7CisgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0U3VyZmFjZUxldmVsKEdMX1RF
WFRVUkVfMkQsIHNvdXJjZUluZGV4Lm1pcEluZGV4LCBmYWxzZSwgJnVwcGVyKTsKICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAog
ICAgIElEaXJlY3QzRFN1cmZhY2U5ICpsb3dlciA9IE5VTEw7Ci0gICAgZXJyb3IgPSBnZXRTdXJm
YWNlTGV2ZWwoZGVzdEluZGV4Lm1pcEluZGV4LCB0cnVlLCAmbG93ZXIpOworICAgIGVycm9yID0g
Z2V0U3VyZmFjZUxldmVsKEdMX1RFWFRVUkVfMkQsIGRlc3RJbmRleC5taXBJbmRleCwgdHJ1ZSwg
Jmxvd2VyKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgU2FmZVJl
bGVhc2UodXBwZXIpOwpAQCAtMjI3LDggKzI1MSwxMCBAQAogICAgICAgICBBU1NFUlQobU1pcExl
dmVscyA+IDApOwogCiAgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVU
ZXh0dXJlKG1UZXh0dXJlV2lkdGgsIG1UZXh0dXJlSGVpZ2h0LCBtTWlwTGV2ZWxzLCBnZXRVc2Fn
ZSgpLCBtVGV4dHVyZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0UG9vbCgpLCAmbVRleHR1cmUsIE5VTEwpOworICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KG1UZXh0dXJlV2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1UZXh0dXJlSGVpZ2h0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihtTWlwTGV2ZWxzKSwgZ2V0VXNhZ2UoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmVGb3JtYXQsIGdldFBvb2woKSwgJm1U
ZXh0dXJlLCBOVUxMKTsKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsK
QEAgLTI1MSwxNCArMjc3LDE0IEBACiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZXZlbHM7ICsr
aSkKICAgICB7CiAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzcmNTdXJmID0gTlVMTDsKLSAg
ICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0U3VyZmFjZUxldmVsKGksIGZhbHNlLCAmc3JjU3Vy
Zik7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldFN1cmZhY2VMZXZlbChHTF9URVhUVVJF
XzJELCBpLCBmYWxzZSwgJnNyY1N1cmYpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgIH0KIAogICAgICAg
ICBJRGlyZWN0M0RTdXJmYWNlOSAqZHN0U3VyZiA9IE5VTEw7Ci0gICAgICAgIGVycm9yID0gZGVz
dDktPmdldFN1cmZhY2VMZXZlbChpLCB0cnVlLCAmZHN0U3VyZik7CisgICAgICAgIGVycm9yID0g
ZGVzdDktPmdldFN1cmZhY2VMZXZlbChHTF9URVhUVVJFXzJELCBpLCB0cnVlLCAmZHN0U3VyZik7
CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNh
ZmVSZWxlYXNlKHNyY1N1cmYpOwpAQCAtMjc5LDYgKzMwNSwxMzEgQEAKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAorVGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlOjpUZXh0
dXJlU3RvcmFnZTlfRUdMSW1hZ2UoUmVuZGVyZXI5ICpyZW5kZXJlciwgRUdMSW1hZ2VEM0QgKmlt
YWdlKQorICAgIDogVGV4dHVyZVN0b3JhZ2U5KHJlbmRlcmVyLCBEM0RVU0FHRV9SRU5ERVJUQVJH
RVQpLCBtSW1hZ2UoaW1hZ2UpCit7CisgICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXRE
M0QgPSBudWxscHRyOworICAgIG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXRE
M0QpOworCisgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0OSA9IEdldEFzPFJlbmRlclRh
cmdldDk+KHJlbmRlclRhcmdldEQzRCk7CisKKyAgICBtSW50ZXJuYWxGb3JtYXQgPSByZW5kZXJU
YXJnZXQ5LT5nZXRJbnRlcm5hbEZvcm1hdCgpOworICAgIG1UZXh0dXJlRm9ybWF0ICA9IHJlbmRl
clRhcmdldDktPmdldEQzREZvcm1hdCgpOworICAgIG1UZXh0dXJlV2lkdGggICA9IHJlbmRlclRh
cmdldDktPmdldFdpZHRoKCk7CisgICAgbVRleHR1cmVIZWlnaHQgID0gcmVuZGVyVGFyZ2V0OS0+
Z2V0SGVpZ2h0KCk7CisgICAgbVRvcExldmVsICAgICAgID0gc3RhdGljX2Nhc3Q8aW50PihyZW5k
ZXJUYXJnZXQ5LT5nZXRUZXh0dXJlTGV2ZWwoKSk7CisgICAgbU1pcExldmVscyAgICAgID0gbVRv
cExldmVsICsgMTsKK30KKworVGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlOjp+VGV4dHVyZVN0b3Jh
Z2U5X0VHTEltYWdlKCkKK3sKK30KKworZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFn
ZTo6Z2V0U3VyZmFjZUxldmVsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkg
KipvdXRTdXJmYWNlKQoreworICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7Cisg
ICAgQVNTRVJUKGxldmVsID09IDApOworICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUodGFy
Z2V0KTsKKyAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGxldmVsKTsKKworICAgIFJlbmRl
clRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEID0gbnVsbHB0cjsKKyAgICBnbDo6RXJyb3IgZXJy
b3IgPSBtSW1hZ2UtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0RDNEKTsKKyAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKwor
ICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkgPSBHZXRBczxSZW5kZXJUYXJnZXQ5Pihy
ZW5kZXJUYXJnZXREM0QpOworCisgICAgKm91dFN1cmZhY2UgPSByZW5kZXJUYXJnZXQ5LT5nZXRT
dXJmYWNlKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpF
cnJvciBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2U6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6
SW1hZ2VJbmRleCAmaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCit7CisgICAgQVNTRVJUKCFp
bmRleC5oYXNMYXllcigpKTsKKyAgICBBU1NFUlQoaW5kZXgubWlwSW5kZXggPT0gMCk7CisgICAg
VU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShpbmRleCk7CisKKyAgICByZXR1cm4gbUltYWdlLT5n
ZXRSZW5kZXJUYXJnZXQob3V0UlQpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5X0VH
TEltYWdlOjpnZXRCYXNlVGV4dHVyZShJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRUZXh0dXJl
KQoreworICAgIFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0RDNEID0gbnVsbHB0cjsKKyAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBtSW1hZ2UtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0
RDNEKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVy
cm9yOworICAgIH0KKworICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkgPSBHZXRBczxS
ZW5kZXJUYXJnZXQ5PihyZW5kZXJUYXJnZXREM0QpOworICAgICpvdXRUZXh0dXJlID0gcmVuZGVy
VGFyZ2V0OS0+Z2V0VGV4dHVyZSgpOworICAgIEFTU0VSVCgqb3V0VGV4dHVyZSAhPSBudWxscHRy
KTsKKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlOjpnZW5lcmF0ZU1pcG1hcChjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmLCBjb25zdCBnbDo6SW1hZ2VJbmRleCAmKQoreworICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK2dsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2U6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2Ug
KmRlc3RTdG9yYWdlKQoreworICAgIEFTU0VSVChkZXN0U3RvcmFnZSk7CisgICAgQVNTRVJUKGdl
dExldmVsQ291bnQoKSA9PSAxKTsKKworICAgIFRleHR1cmVTdG9yYWdlOSAqZGVzdDkgPSBHZXRB
czxUZXh0dXJlU3RvcmFnZTk+KGRlc3RTdG9yYWdlKTsKKworICAgIElEaXJlY3QzREJhc2VUZXh0
dXJlOSAqZGVzdEJhc2VUZXh0dXJlOSA9IG51bGxwdHI7CisgICAgZ2w6OkVycm9yIGVycm9yID0g
ZGVzdDktPmdldEJhc2VUZXh0dXJlKCZkZXN0QmFzZVRleHR1cmU5KTsKKyAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIElE
aXJlY3QzRFRleHR1cmU5ICpkZXN0VGV4dHVyZTkgPSBzdGF0aWNfY2FzdDxJRGlyZWN0M0RUZXh0
dXJlOSAqPihkZXN0QmFzZVRleHR1cmU5KTsKKworICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0
U3VyZmFjZSA9IG51bGxwdHI7CisgICAgSFJFU1VMVCByZXN1bHQgPSBkZXN0VGV4dHVyZTktPkdl
dFN1cmZhY2VMZXZlbChkZXN0U3RvcmFnZS0+Z2V0VG9wTGV2ZWwoKSwgJmRlc3RTdXJmYWNlKTsK
KyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBn
ZXQgdGhlIHN1cmZhY2UgZnJvbSBhIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwor
ICAgIH0KKworICAgIFJlbmRlclRhcmdldEQzRCAqc291cmNlUmVuZGVyVGFyZ2V0ID0gbnVsbHB0
cjsKKyAgICBlcnJvciA9IG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZzb3VyY2VSZW5kZXJUYXJn
ZXQpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTYWZlUmVsZWFz
ZShkZXN0U3VyZmFjZSk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBSZW5k
ZXJUYXJnZXQ5ICpzb3VyY2VSZW5kZXJUYXJnZXQ5ID0gR2V0QXM8UmVuZGVyVGFyZ2V0OT4oc291
cmNlUmVuZGVyVGFyZ2V0KTsKKyAgICBlcnJvciA9CisgICAgICAgIG1SZW5kZXJlci0+Y29weVRv
UmVuZGVyVGFyZ2V0KGRlc3RTdXJmYWNlLCBzb3VyY2VSZW5kZXJUYXJnZXQ5LT5nZXRTdXJmYWNl
KCksIGlzTWFuYWdlZCgpKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAg
ICAgU2FmZVJlbGVhc2UoZGVzdFN1cmZhY2UpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
fQorCisgICAgaWYgKGRlc3RTdG9yYWdlLT5nZXRUb3BMZXZlbCgpICE9IDApCisgICAgeworICAg
ICAgICBkZXN0VGV4dHVyZTktPkFkZERpcnR5UmVjdChudWxscHRyKTsKKyAgICB9CisKKyAgICBT
YWZlUmVsZWFzZShkZXN0U3VyZmFjZSk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7Cit9CisKIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpUZXh0dXJlU3RvcmFnZTlfQ3ViZShSZW5k
ZXJlcjkgKnJlbmRlcmVyLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0
LCBpbnQgc2l6ZSwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkKICAgICA6IFRl
eHR1cmVTdG9yYWdlOShyZW5kZXJlciwgR2V0VGV4dHVyZVVzYWdlKGludGVybmFsZm9ybWF0LCBy
ZW5kZXJUYXJnZXQpKQogewpAQCAtMjk4LDggKzQ0OSw2IEBACiAgICAgbVRleHR1cmVXaWR0aCA9
IHNpemU7CiAgICAgbVRleHR1cmVIZWlnaHQgPSBzaXplOwogICAgIG1NaXBMZXZlbHMgPSBtVG9w
TGV2ZWwgKyBsZXZlbHM7Ci0KLSAgICBpbml0aWFsaXplU2VyaWFscyhnZXRMZXZlbENvdW50KCkg
KiBDVUJFX0ZBQ0VfQ09VTlQsIENVQkVfRkFDRV9DT1VOVCk7CiB9CiAKIFRleHR1cmVTdG9yYWdl
OV9DdWJlOjp+VGV4dHVyZVN0b3JhZ2U5X0N1YmUoKQpAQCAtMzE0LDcgKzQ2MywxMCBAQAogCiAv
LyBJbmNyZW1lbnRzIHJlZmNvdW50IG9uIHN1cmZhY2UuCiAvLyBjYWxsZXIgbXVzdCBSZWxlYXNl
KCkgdGhlIHJldHVybmVkIHN1cmZhY2UKLWdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6
Z2V0Q3ViZU1hcFN1cmZhY2UoR0xlbnVtIGZhY2VUYXJnZXQsIGludCBsZXZlbCwgYm9vbCBkaXJ0
eSwgSURpcmVjdDNEU3VyZmFjZTkgKipvdXRTdXJmYWNlKQorZ2w6OkVycm9yIFRleHR1cmVTdG9y
YWdlOV9DdWJlOjpnZXRTdXJmYWNlTGV2ZWwoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlydHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNl
OSAqKm91dFN1cmZhY2UpCiB7CiAgICAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpiYXNlVGV4dHVy
ZSA9IE5VTEw7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0QmFzZVRleHR1cmUoJmJhc2VUZXh0
dXJlKTsKQEAgLTMyNSw4ICs0NzcsOCBAQAogCiAgICAgSURpcmVjdDNEQ3ViZVRleHR1cmU5ICp0
ZXh0dXJlID0gc3RhdGljX2Nhc3Q8SURpcmVjdDNEQ3ViZVRleHR1cmU5Kj4oYmFzZVRleHR1cmUp
OwogCi0gICAgRDNEQ1VCRU1BUF9GQUNFUyBmYWNlID0gZ2xfZDNkOTo6Q29udmVydEN1YmVGYWNl
KGZhY2VUYXJnZXQpOwotICAgIEhSRVNVTFQgcmVzdWx0ID0gdGV4dHVyZS0+R2V0Q3ViZU1hcFN1
cmZhY2UoZmFjZSwgbGV2ZWwgKyBtVG9wTGV2ZWwsIG91dFN1cmZhY2UpOworICAgIEQzRENVQkVN
QVBfRkFDRVMgZmFjZSA9IGdsX2QzZDk6OkNvbnZlcnRDdWJlRmFjZSh0YXJnZXQpOworICAgIEhS
RVNVTFQgcmVzdWx0ICAgICAgICA9IHRleHR1cmUtPkdldEN1YmVNYXBTdXJmYWNlKGZhY2UsIGxl
dmVsLCBvdXRTdXJmYWNlKTsKIAogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQpAQCAtMzUxLDE0ICs1MDMsMjUgQEAKIAogICAgIGlmIChtUmVu
ZGVyVGFyZ2V0W2luZGV4LmxheWVySW5kZXhdID09IE5VTEwgJiYgaXNSZW5kZXJUYXJnZXQoKSkK
ICAgICB7CisgICAgICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqYmFzZVRleHR1cmUgPSBOVUxM
OworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBnZXRCYXNlVGV4dHVyZSgmYmFzZVRleHR1cmUp
OworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKwogICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqc3Vy
ZmFjZSA9IE5VTEw7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldEN1YmVNYXBTdXJmYWNl
KEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGluZGV4LmxheWVySW5kZXgsIDAsIGZh
bHNlLCAmc3VyZmFjZSk7CisgICAgICAgIGVycm9yID0gZ2V0U3VyZmFjZUxldmVsKEdMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGluZGV4LmxheWVySW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1Ub3BMZXZlbCArIGluZGV4Lm1pcEluZGV4LCBmYWxzZSwgJnN1
cmZhY2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgIH0KIAotICAgICAgICBtUmVuZGVyVGFyZ2V0W2lu
ZGV4LmxheWVySW5kZXhdID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQ5KHN1cmZhY2UsIG1JbnRl
cm5hbEZvcm1hdCwgbVRleHR1cmVXaWR0aCwgbVRleHR1cmVIZWlnaHQsIDEsIDApOworICAgICAg
ICBiYXNlVGV4dHVyZS0+QWRkUmVmKCk7CisgICAgICAgIG1SZW5kZXJUYXJnZXRbaW5kZXgubGF5
ZXJJbmRleF0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDkoCisgICAgICAgICAgICBiYXNlVGV4
dHVyZSwgbVRvcExldmVsICsgaW5kZXgubWlwSW5kZXgsIHN1cmZhY2UsIG1JbnRlcm5hbEZvcm1h
dCwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1UZXh0dXJlV2lkdGgpLCBzdGF0
aWNfY2FzdDxHTHNpemVpPihtVGV4dHVyZUhlaWdodCksIDEsIDApOwogICAgIH0KIAogICAgICpv
dXRSVCA9IG1SZW5kZXJUYXJnZXRbaW5kZXgubGF5ZXJJbmRleF07CkBAIC0zNjgsMTQgKzUzMSwx
NCBAQAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpnZW5lcmF0ZU1pcG1hcChjb25z
dCBnbDo6SW1hZ2VJbmRleCAmc291cmNlSW5kZXgsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZkZXN0
SW5kZXgpCiB7CiAgICAgSURpcmVjdDNEU3VyZmFjZTkgKnVwcGVyID0gTlVMTDsKLSAgICBnbDo6
RXJyb3IgZXJyb3IgPSBnZXRDdWJlTWFwU3VyZmFjZShzb3VyY2VJbmRleC50eXBlLCBzb3VyY2VJ
bmRleC5taXBJbmRleCwgZmFsc2UsICZ1cHBlcik7CisgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0
U3VyZmFjZUxldmVsKHNvdXJjZUluZGV4LnR5cGUsIHNvdXJjZUluZGV4Lm1pcEluZGV4LCBmYWxz
ZSwgJnVwcGVyKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgIH0KIAogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpsb3dlciA9IE5VTEw7
Ci0gICAgZXJyb3IgPSBnZXRDdWJlTWFwU3VyZmFjZShkZXN0SW5kZXgudHlwZSwgZGVzdEluZGV4
Lm1pcEluZGV4LCB0cnVlLCAmbG93ZXIpOworICAgIGVycm9yID0gZ2V0U3VyZmFjZUxldmVsKGRl
c3RJbmRleC50eXBlLCBkZXN0SW5kZXgubWlwSW5kZXgsIHRydWUsICZsb3dlcik7CiAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIFNhZmVSZWxlYXNlKHVwcGVyKTsKQEAg
LTQwMSw4ICs1NjQsOSBAQAogICAgICAgICBBU1NFUlQobVRleHR1cmVXaWR0aCA9PSBtVGV4dHVy
ZUhlaWdodCk7CiAKICAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlID0gbVJlbmRlcmVy
LT5nZXREZXZpY2UoKTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUN1
YmVUZXh0dXJlKG1UZXh0dXJlV2lkdGgsIG1NaXBMZXZlbHMsIGdldFVzYWdlKCksIG1UZXh0dXJl
Rm9ybWF0LCBnZXRQb29sKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbVRleHR1cmUsIE5VTEwpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlQ3ViZVRleHR1cmUoCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KG1UZXh0dXJlV2lkdGgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1NaXBM
ZXZlbHMpLAorICAgICAgICAgICAgZ2V0VXNhZ2UoKSwgbVRleHR1cmVGb3JtYXQsIGdldFBvb2wo
KSwgJm1UZXh0dXJlLCBOVUxMKTsKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ICAgIHsKQEAgLTQyNywxNCArNTkxLDE1IEBACiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bGV2ZWxzOyBpKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpz
cmNTdXJmID0gTlVMTDsKLSAgICAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGdldEN1YmVNYXBT
dXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCArIGYsIGksIGZhbHNlLCAmc3Jj
U3VyZik7CisgICAgICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQorICAgICAgICAgICAgICAgIGdl
dFN1cmZhY2VMZXZlbChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBpLCBmYWxz
ZSwgJnNyY1N1cmYpOwogICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkc3RTdXJmID0gTlVMTDsKLSAgICAgICAgICAg
IGVycm9yID0gZGVzdDktPmdldEN1YmVNYXBTdXJmYWNlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWCArIGYsIGksIHRydWUsICZkc3RTdXJmKTsKKyAgICAgICAgICAgIGVycm9yID0gZGVz
dDktPmdldFN1cmZhY2VMZXZlbChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmLCBp
LCB0cnVlLCAmZHN0U3VyZik7CiAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNyY1N1cmYpOwpJbmRleDog
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Rl
eHR1cmVTdG9yYWdlOS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiw3
IEBACiAKIG5hbWVzcGFjZSByeAogeworY2xhc3MgRUdMSW1hZ2VEM0Q7CiBjbGFzcyBSZW5kZXJl
cjk7CiBjbGFzcyBTd2FwQ2hhaW45OwogY2xhc3MgUmVuZGVyVGFyZ2V0RDNEOwpAQCAtMzEsNiAr
MzIsMTAgQEAKICAgICBEM0RQT09MIGdldFBvb2woKSBjb25zdDsKICAgICBEV09SRCBnZXRVc2Fn
ZSgpIGNvbnN0OwogCisgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3VyZmFjZUxldmVsKEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXJ0eSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKipv
dXRTdXJmYWNlKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0QmFzZVRleHR1cmUoSURp
cmVjdDNEQmFzZVRleHR1cmU5ICoqb3V0VGV4dHVyZSkgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRh
cmdldEQzRCAqKm91dFJUKSA9IDA7CiAKQEAgLTY3LDcgKzcyLDEwIEBACiAgICAgVGV4dHVyZVN0
b3JhZ2U5XzJEKFJlbmRlcmVyOSAqcmVuZGVyZXIsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9v
bCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBpbnQgbGV2ZWxz
KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTlfMkQoKTsKIAotICAgIGdsOjpFcnJvciBn
ZXRTdXJmYWNlTGV2ZWwoaW50IGxldmVsLCBib29sIGRpcnR5LCBJRGlyZWN0M0RTdXJmYWNlOSAq
Km91dFN1cmZhY2UpOworICAgIGdsOjpFcnJvciBnZXRTdXJmYWNlTGV2ZWwoR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZGlydHksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqKm91dFN1cmZhY2UpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgs
IFJlbmRlclRhcmdldEQzRCAqKm91dFJUKTsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRCYXNl
VGV4dHVyZShJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRUZXh0dXJlKTsKICAgICB2aXJ0dWFs
IGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChjb25zdCBnbDo6SW1hZ2VJbmRleCAmc291cmNlSW5k
ZXgsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZkZXN0SW5kZXgpOwpAQCAtNzUsMTYgKzgzLDM5IEBA
CiAKICAgcHJpdmF0ZToKICAgICBJRGlyZWN0M0RUZXh0dXJlOSAqbVRleHR1cmU7Ci0gICAgUmVu
ZGVyVGFyZ2V0OSAqbVJlbmRlclRhcmdldDsKKyAgICBzdGQ6OnZlY3RvcjxSZW5kZXJUYXJnZXQ5
ICo+IG1SZW5kZXJUYXJnZXRzOwogfTsKIAorY2xhc3MgVGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdl
IGZpbmFsIDogcHVibGljIFRleHR1cmVTdG9yYWdlOQoreworICBwdWJsaWM6CisgICAgVGV4dHVy
ZVN0b3JhZ2U5X0VHTEltYWdlKFJlbmRlcmVyOSAqcmVuZGVyZXIsIEVHTEltYWdlRDNEICppbWFn
ZSk7CisgICAgflRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZSgpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIGdldFN1cmZhY2VMZXZlbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBkaXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEaXJlY3QzRFN1cmZhY2U5
ICoqb3V0U3VyZmFjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0QmFzZVRleHR1cmUoSURpcmVjdDNEQmFzZVRleHR1cmU5
ICoqb3V0VGV4dHVyZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwKGNv
bnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkltYWdlSW5kZXggJmRlc3RJbmRleCkgb3ZlcnJpZGU7CisgICAgZ2w6
OkVycm9yIGNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKSBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIEVHTEltYWdlRDNEICptSW1hZ2U7Cit9OworCiBjbGFzcyBU
ZXh0dXJlU3RvcmFnZTlfQ3ViZSA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTkKIHsKICAgcHVibGlj
OgogICAgIFRleHR1cmVTdG9yYWdlOV9DdWJlKFJlbmRlcmVyOSAqcmVuZGVyZXIsIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIGludCBzaXplLCBpbnQgbGV2ZWxzLCBi
b29sIGhpbnRMZXZlbFplcm9Pbmx5KTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlU3RvcmFnZTlfQ3Vi
ZSgpOwogCi0gICAgZ2w6OkVycm9yIGdldEN1YmVNYXBTdXJmYWNlKEdMZW51bSBmYWNlVGFyZ2V0
LCBpbnQgbGV2ZWwsIGJvb2wgZGlydHksIElEaXJlY3QzRFN1cmZhY2U5ICoqb3V0U3VyZmFjZSk7
CisgICAgZ2w6OkVycm9yIGdldFN1cmZhY2VMZXZlbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBkaXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEaXJlY3Qz
RFN1cmZhY2U5ICoqb3V0U3VyZmFjZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Ig
Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0
RDNEICoqb3V0UlQpOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldEJhc2VUZXh0dXJlKElEaXJl
Y3QzREJhc2VUZXh0dXJlOSAqKm91dFRleHR1cmUpOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdl
bmVyYXRlTWlwbWFwKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwgY29uc3QgZ2w6
OkltYWdlSW5kZXggJmRlc3RJbmRleCk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJyYXk5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1ZlcnRleEFycmF5OS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJyYXk5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTE5LDIxICsxOSwxMiBAQAogY2xhc3MgVmVydGV4QXJyYXk5IDogcHVibGlj
IFZlcnRleEFycmF5SW1wbAogewogICBwdWJsaWM6Ci0gICAgVmVydGV4QXJyYXk5KFJlbmRlcmVy
OSAqcmVuZGVyZXIpCi0gICAgICAgIDogVmVydGV4QXJyYXlJbXBsKCksCi0gICAgICAgICAgbVJl
bmRlcmVyKHJlbmRlcmVyKQorICAgIFZlcnRleEFycmF5OShjb25zdCBnbDo6VmVydGV4QXJyYXk6
OkRhdGEgJmRhdGEpCisgICAgICAgIDogVmVydGV4QXJyYXlJbXBsKGRhdGEpCiAgICAgewogICAg
IH0KIAogICAgIHZpcnR1YWwgflZlcnRleEFycmF5OSgpIHsgfQotCi0gICAgdmlydHVhbCB2b2lk
IHNldEVsZW1lbnRBcnJheUJ1ZmZlcihjb25zdCBnbDo6QnVmZmVyICpidWZmZXIpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGUoc2l6ZV90IGlkeCwgY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZURpdmlzb3Io
c2l6ZV90IGlkeCwgR0x1aW50IGRpdmlzb3IpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVB
dHRyaWJ1dGUoc2l6ZV90IGlkeCwgYm9vbCBlbmFibGVkU3RhdGUpIHsgfQotCi0gIHByaXZhdGU6
Ci0gICAgUmVuZGVyZXI5ICptUmVuZGVyZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVy
dGV4QnVmZmVyOS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDY3ICs1Niw0OSBAQAogICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgVmVydGV4QnVmZmVy
OTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YiwgY29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Rh
cnQsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLCB1bnNpZ25lZCBpbnQgb2Zmc2V0
KQorZ2w6OkVycm9yIFZlcnRleEJ1ZmZlcjk6OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjdXJyZW50VmFsdWVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0
YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEpCiB7CiAgICAgaWYgKCFtVmVydGV4
QnVmZmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAiSW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CiAgICAgfQog
Ci0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmliLmJ1ZmZlci5nZXQoKTsKKyAgICBpbnQg
aW5wdXRTdHJpZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGdsOjpDb21wdXRlVmVydGV4QXR0cmlidXRl
U3RyaWRlKGF0dHJpYikpOworICAgIGludCBlbGVtZW50U2l6ZSA9IHN0YXRpY19jYXN0PGludD4o
Z2w6OkNvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRyaWIpKTsKIAotICAgIGludCBp
bnB1dFN0cmlkZSA9IGdsOjpDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYik7Ci0g
ICAgaW50IGVsZW1lbnRTaXplID0gZ2w6OkNvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShh
dHRyaWIpOwotCiAgICAgRFdPUkQgbG9ja0ZsYWdzID0gbUR5bmFtaWNVc2FnZSA/IEQzRExPQ0tf
Tk9PVkVSV1JJVEUgOiAwOwogCi0gICAgdWludDhfdCAqbWFwUHRyID0gTlVMTDsKKyAgICB1aW50
OF90ICptYXBQdHIgPSBudWxscHRyOwogCi0gICAgdW5zaWduZWQgaW50IG1hcFNpemU7Ci0gICAg
Z2w6OkVycm9yIGVycm9yID0gc3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMs
ICZtYXBTaXplKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIGF1dG8gZXJyb3JPck1h
cFNpemUgPSBtUmVuZGVyZXItPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwg
aW5zdGFuY2VzKTsKKyAgICBpZiAoZXJyb3JPck1hcFNpemUuaXNFcnJvcigpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICByZXR1cm4gZXJyb3JPck1hcFNpemUuZ2V0RXJy
b3IoKTsKICAgICB9CiAKKyAgICB1bnNpZ25lZCBpbnQgbWFwU2l6ZSA9IGVycm9yT3JNYXBTaXpl
LmdldFJlc3VsdCgpOworCiAgICAgSFJFU1VMVCByZXN1bHQgPSBtVmVydGV4QnVmZmVyLT5Mb2Nr
KG9mZnNldCwgbWFwU2l6ZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtYXBQdHIpLCBsb2Nr
RmxhZ3MpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7CiAgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBsb2NrIGludGVybmFsIHZlcnRl
eCBidWZmZXIsIEhSRVNVTFQ6IDB4JTA4eC4iLCByZXN1bHQpOwogICAgIH0KIAotICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0ID0gTlVMTDsKLSAgICBpZiAoYXR0cmliLmVuYWJsZWQpCi0gICAgewot
ICAgICAgICBpZiAoYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBCdWZmZXJEM0QgKnN0
b3JhZ2UgPSBHZXRJbXBsQXM8QnVmZmVyRDNEPihidWZmZXIpOwotICAgICAgICAgICAgQVNTRVJU
KHN0b3JhZ2UpOwotICAgICAgICAgICAgZXJyb3IgPSBzdG9yYWdlLT5nZXREYXRhKCZpbnB1dCk7
Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlucHV0
ICs9IHN0YXRpY19jYXN0PGludD4oYXR0cmliLm9mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnB1dCA9IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihhdHRyaWIucG9pbnRlcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgaW5wdXQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjdXJy
ZW50VmFsdWUuRmxvYXRWYWx1ZXMpOwotICAgIH0KKyAgICBjb25zdCB1aW50OF90ICppbnB1dCA9
IHNvdXJjZURhdGE7CiAKICAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLmRpdmlzb3Ig
PT0gMCkKICAgICB7CiAgICAgICAgIGlucHV0ICs9IGlucHV0U3RyaWRlICogc3RhcnQ7CiAgICAg
fQogCi0gICAgZ2w6OlZlcnRleEZvcm1hdCB2ZXJ0ZXhGb3JtYXQoYXR0cmliLCBjdXJyZW50VmFs
dWUuVHlwZSk7Ci0gICAgY29uc3QgZDNkOTo6VmVydGV4Rm9ybWF0ICZkM2RWZXJ0ZXhJbmZvID0g
ZDNkOTo6R2V0VmVydGV4Rm9ybWF0SW5mbyhtUmVuZGVyZXItPmdldENhcHNEZWNsVHlwZXMoKSwg
dmVydGV4Rm9ybWF0KTsKKyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBl
ID0gZ2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliLCBjdXJyZW50VmFsdWVUeXBlKTsKKyAg
ICBjb25zdCBkM2Q5OjpWZXJ0ZXhGb3JtYXQgJmQzZFZlcnRleEluZm8gPSBkM2Q5OjpHZXRWZXJ0
ZXhGb3JtYXRJbmZvKG1SZW5kZXJlci0+Z2V0Q2Fwc0RlY2xUeXBlcygpLCB2ZXJ0ZXhGb3JtYXRU
eXBlKTsKICAgICBib29sIG5lZWRzQ29udmVyc2lvbiA9IChkM2RWZXJ0ZXhJbmZvLmNvbnZlcnNp
b25UeXBlICYgVkVSVEVYX0NPTlZFUlRfQ1BVKSA+IDA7CiAKICAgICBpZiAoIW5lZWRzQ29udmVy
c2lvbiAmJiBpbnB1dFN0cmlkZSA9PSBlbGVtZW50U2l6ZSkKQEAgLTEzNCwxMiArMTE2LDYgQEAK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFZlcnRl
eEJ1ZmZlcjk6OmdldFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliLCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1aXJlZCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gc3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5j
ZXMsIG91dFNwYWNlUmVxdWlyZWQpOwotfQotCiB1bnNpZ25lZCBpbnQgVmVydGV4QnVmZmVyOTo6
Z2V0QnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1CdWZmZXJTaXplOwpAQCAtMTg2
LDQ4ICsxNjIsNCBAQAogewogICAgIHJldHVybiBtVmVydGV4QnVmZmVyOwogfQotCi1nbDo6RXJy
b3IgVmVydGV4QnVmZmVyOTo6c3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyaWIsIHN0ZDo6c2l6ZV90IGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1
aXJlZCkgY29uc3QKLXsKLSAgICBnbDo6VmVydGV4Rm9ybWF0IHZlcnRleEZvcm1hdChhdHRyaWIs
IEdMX0ZMT0FUKTsKLSAgICBjb25zdCBkM2Q5OjpWZXJ0ZXhGb3JtYXQgJmQzZDlWZXJ0ZXhJbmZv
ID0gZDNkOTo6R2V0VmVydGV4Rm9ybWF0SW5mbyhtUmVuZGVyZXItPmdldENhcHNEZWNsVHlwZXMo
KSwgdmVydGV4Rm9ybWF0KTsKLQotICAgIGlmIChhdHRyaWIuZW5hYmxlZCkKLSAgICB7Ci0gICAg
ICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQgPSAwOwotICAgICAgICBpZiAoaW5zdGFuY2Vz
ID09IDAgfHwgYXR0cmliLmRpdmlzb3IgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZWxl
bWVudENvdW50ID0gY291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBSb3VuZCB1cCB0byBkaXZpc29yLCBpZiBwb3NzaWJsZQotICAgICAgICAg
ICAgZWxlbWVudENvdW50ID0gVW5zaWduZWRDZWlsRGl2aWRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oaW5zdGFuY2VzKSwgYXR0cmliLmRpdmlzb3IpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGQzZDlWZXJ0ZXhJbmZvLm91dHB1dEVsZW1lbnRTaXplIDw9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBlbGVtZW50Q291bnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChvdXRTcGFjZVJlcXVpcmVkKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICpvdXRTcGFjZVJlcXVpcmVkID0gZDNkOVZlcnRleEluZm8ub3V0cHV0RWxlbWVudFNpemUg
KiBlbGVtZW50Q291bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIk5ldyB2ZXJ0ZXgg
YnVmZmVyIHNpemUgd291bGQgcmVzdWx0IGluIGFuIG92ZXJmbG93LiIpOwotICAgICAgICB9Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBlbGVtZW50
U2l6ZSA9IDQ7Ci0gICAgICAgIGlmIChvdXRTcGFjZVJlcXVpcmVkKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAqb3V0U3BhY2VSZXF1aXJlZCA9IGVsZW1lbnRTaXplICogNDsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKLSAgICB9Ci19Ci0KLX0KK30g
IC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4
QnVmZmVyOS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSwzMCArMTksMzAgQEAKIHsKICAgcHVibGljOgogICAgIGV4cGxpY2l0IFZlcnRl
eEJ1ZmZlcjkoUmVuZGVyZXI5ICpyZW5kZXJlcik7Ci0gICAgdmlydHVhbCB+VmVydGV4QnVmZmVy
OSgpOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgaW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6
ZSwgYm9vbCBkeW5hbWljVXNhZ2UpOworICAgIGdsOjpFcnJvciBpbml0aWFsaXplKHVuc2lnbmVk
IGludCBzaXplLCBib29sIGR5bmFtaWNVc2FnZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGds
OjpFcnJvciBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmliLCBjb25zdCBnbDo6VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
dGFydCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIHVuc2lnbmVkIGludCBvZmZz
ZXQpOworICAgIGdsOjpFcnJvciBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGN1cnJlbnRWYWx1ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpzb3VyY2VEYXRhKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdl
dFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTHNpemVp
IGNvdW50LCBHTHNpemVpIGluc3RhbmNlcywgdW5zaWduZWQgaW50ICpvdXRTcGFjZVJlcXVpcmVk
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgZGlzY2FyZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB1bnNp
Z25lZCBpbnQgZ2V0QnVmZmVyU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNl
dEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRp
c2NhcmQoKTsKLQogICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKmdldEJ1ZmZlcigpIGNvbnN0
OwogCiAgIHByaXZhdGU6CisgICAgflZlcnRleEJ1ZmZlcjkoKSBvdmVycmlkZTsKICAgICBSZW5k
ZXJlcjkgKm1SZW5kZXJlcjsKIAogICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1WZXJ0ZXhC
dWZmZXI7CiAgICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOwogICAgIGJvb2wgbUR5bmFtaWNV
c2FnZTsKLQotICAgIGdsOjpFcnJvciBzcGFjZVJlcXVpcmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgc3RkOjpzaXplX3QgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0U3BhY2VSZXF1aXJlZCkg
Y29uc3Q7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4
RGVjbGFyYXRpb25DYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcsMTAgKzcsMTIgQEAKIC8v
IFZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwOiBJbXBsZW1lbnRzIGEgaGVscGVyIGNsYXNzIHRv
IGNvbnN0cnVjdCBhbmQgY2FjaGUgdmVydGV4IGRlY2xhcmF0aW9ucy4KIAogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuaCIKKworI2lu
Y2x1ZGUgImxpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL2Zv
cm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0Qu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5Lmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEF0
dHJpYnV0ZS5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTQwLDE2ICs0MiwyNSBAQAogICAgIH0K
IH0KIAotZ2w6OkVycm9yIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRpb24o
SURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNb
XSwgZ2w6OlByb2dyYW0gKnByb2dyYW0sIEdMc2l6ZWkgaW5zdGFuY2VzLCBHTHNpemVpICpyZXBl
YXREcmF3KQorZ2w6OkVycm9yIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRp
b24oCisgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZhdHRyaWJ1dGVzLAorICAgIGdsOjpQcm9ncmFtICpwcm9n
cmFtLAorICAgIEdMaW50IHN0YXJ0LAorICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgIEdMc2l6
ZWkgKnJlcGVhdERyYXcpCiB7CisgICAgQVNTRVJUKGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMgPj0g
YXR0cmlidXRlcy5zaXplKCkpOworCiAgICAgKnJlcGVhdERyYXcgPSAxOwogCi0gICAgaW50IGlu
ZGV4ZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOwotICAgIGludCBpbnN0YW5j
ZWRBdHRyaWJ1dGUgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworICAgIGNvbnN0IHNpemVfdCBp
bnZhbGlkQXR0cmliSW5kZXggPSBhdHRyaWJ1dGVzLnNpemUoKTsKKyAgICBzaXplX3QgaW5kZXhl
ZEF0dHJpYnV0ZSA9IGludmFsaWRBdHRyaWJJbmRleDsKKyAgICBzaXplX3QgaW5zdGFuY2VkQXR0
cmlidXRlID0gaW52YWxpZEF0dHJpYkluZGV4OwogCiAgICAgaWYgKGluc3RhbmNlcyA9PSAwKQog
ICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
OyArK2kpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5zaXplKCk7
ICsraSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uZGl2aXNvciAh
PSAwKQogICAgICAgICAgICAgewpAQCAtNjQsMjYgKzc1LDI2IEBACiAgICAgaWYgKGluc3RhbmNl
cyA+IDApCiAgICAgewogICAgICAgICAvLyBGaW5kIGFuIGluZGV4ZWQgYXR0cmlidXRlIHRvIGJl
IG1hcHBlZCB0byBEM0Qgc3RyZWFtIDAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXR0cmlidXRlcy5zaXplKCk7IGkrKykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGF0dHJp
YnV0ZXNbaV0uYWN0aXZlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChpbmRl
eGVkQXR0cmlidXRlID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMgJiYgYXR0cmlidXRlc1tpXS5k
aXZpc29yID09IDApCisgICAgICAgICAgICAgICAgaWYgKGluZGV4ZWRBdHRyaWJ1dGUgPT0gaW52
YWxpZEF0dHJpYkluZGV4ICYmIGF0dHJpYnV0ZXNbaV0uZGl2aXNvciA9PSAwKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhlZEF0dHJpYnV0ZSA9IGk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RhbmNlZEF0dHJpYnV0
ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTICYmIGF0dHJpYnV0ZXNbaV0uZGl2aXNvciAhPSAw
KQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBpbnZhbGlk
QXR0cmliSW5kZXggJiYgYXR0cmlidXRlc1tpXS5kaXZpc29yICE9IDApCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZWRBdHRyaWJ1dGUgPSBpOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW5kZXhlZEF0dHJpYnV0ZSAhPSBnbDo6
TUFYX1ZFUlRFWF9BVFRSSUJTICYmIGluc3RhbmNlZEF0dHJpYnV0ZSAhPSBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTKQorICAgICAgICAgICAgICAgIGlmIChpbmRleGVkQXR0cmlidXRlICE9IGludmFs
aWRBdHRyaWJJbmRleCAmJiBpbnN0YW5jZWRBdHRyaWJ1dGUgIT0gaW52YWxpZEF0dHJpYkluZGV4
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsgICAvLyBGb3VuZCBib3RoIGFuIGluZGV4ZWQg
YW5kIGluc3RhbmNlZCBhdHRyaWJ1dGUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIC8vIFRoZSB2YWxpZGF0aW9uIGxheWVyIGNoZWNrcyB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0
IG9uZSBhY3RpdmUgYXR0cmlidXRlIHdpdGggYSB6ZXJvIGRpdmlzb3IgYXMgcGVyCiAgICAgICAg
IC8vIHRoZSBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIHNwZWMuCi0gICAgICAgIEFTU0VSVChp
bmRleGVkQXR0cmlidXRlICE9IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpOworICAgICAgICBBU1NF
UlQoaW5kZXhlZEF0dHJpYnV0ZSAhPSBpbnZhbGlkQXR0cmliSW5kZXgpOwogICAgIH0KIAogICAg
IEQzRENBUFM5IGNhcHM7CkBAIC05MiwxOSArMTAzLDIyIEBACiAgICAgRDNEVkVSVEVYRUxFTUVO
VDkgZWxlbWVudHNbZ2w6Ok1BWF9WRVJURVhfQVRUUklCUyArIDFdOwogICAgIEQzRFZFUlRFWEVM
RU1FTlQ5ICplbGVtZW50ID0gJmVsZW1lbnRzWzBdOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOyBpKyspCisgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQz
RCAgICAgID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+KHByb2dyYW0pOworICAgIGNvbnN0IGF1dG8g
JnNlbWFudGljSW5kZXhlcyA9IHByb2dyYW1EM0QtPmdldEF0dHJpYkxvY2F0aW9uVG9EM0RTZW1h
bnRpY3MoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5zaXplKCk7
IGkrKykKICAgICB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmFjdGl2ZSkKICAgICAgICAg
ewogICAgICAgICAgICAgLy8gRGlyZWN0bHkgYmluZGluZyB0aGUgc3RvcmFnZSBidWZmZXIgaXMg
bm90IHN1cHBvcnRlZCBmb3IgZDNkOQogICAgICAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZXNbaV0u
c3RvcmFnZSA9PSBOVUxMKTsKIAotICAgICAgICAgICAgaW50IHN0cmVhbSA9IGk7CisgICAgICAg
ICAgICBpbnQgc3RyZWFtID0gc3RhdGljX2Nhc3Q8aW50PihpKTsKIAogICAgICAgICAgICAgaWYg
KGluc3RhbmNlcyA+IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gRHVlIHRv
IGEgYnVnIG9uIEFUSSBjYXJkcyB3ZSBjYW4ndCBlbmFibGUgaW5zdGFuY2luZyB3aGVuIG5vbmUg
b2YgdGhlIGF0dHJpYnV0ZXMgYXJlIGluc3RhbmNlZC4KLSAgICAgICAgICAgICAgICBpZiAoaW5z
dGFuY2VkQXR0cmlidXRlID09IGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgICAgICAg
ICAgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBpbnZhbGlkQXR0cmliSW5kZXgpCiAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAqcmVwZWF0RHJhdyA9IGluc3RhbmNlczsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xMTYsNyArMTMwLDcgQEAKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IDApCiAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSA9IGluZGV4ZWRBdHRyaWJ1
dGU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSBzdGF0aWNfY2FzdDxpbnQ+KGlu
ZGV4ZWRBdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAg
ICAgICAgVUlOVCBmcmVxdWVuY3kgPSAxOwpAQCAtMTM1LDMyICsxNDksMzYgQEAKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFZlcnRleEJ1ZmZlcjkgKnZl
cnRleEJ1ZmZlciA9IEdldEFzPFZlcnRleEJ1ZmZlcjk+KGF0dHJpYnV0ZXNbaV0udmVydGV4QnVm
ZmVyKTsKKyAgICAgICAgICAgIFZlcnRleEJ1ZmZlcjkgKnZlcnRleEJ1ZmZlciA9IEdldEFzPFZl
cnRleEJ1ZmZlcjk+KGF0dHJpYnV0ZXNbaV0udmVydGV4QnVmZmVyLmdldCgpKTsKIAorICAgICAg
ICAgICAgdW5zaWduZWQgaW50IG9mZnNldCA9IDA7CisgICAgICAgICAgICBBTkdMRV9UUllfUkVT
VUxUKGF0dHJpYnV0ZXNbaV0uY29tcHV0ZU9mZnNldChzdGFydCksIG9mZnNldCk7CisKICAgICAg
ICAgICAgIGlmIChtQXBwbGllZFZCc1tzdHJlYW1dLnNlcmlhbCAhPSBhdHRyaWJ1dGVzW2ldLnNl
cmlhbCB8fAogICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0uc3RyaWRlICE9IGF0
dHJpYnV0ZXNbaV0uc3RyaWRlIHx8Ci0gICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFt
XS5vZmZzZXQgIT0gYXR0cmlidXRlc1tpXS5vZmZzZXQpCisgICAgICAgICAgICAgICAgbUFwcGxp
ZWRWQnNbc3RyZWFtXS5vZmZzZXQgIT0gb2Zmc2V0KQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlKHN0cmVhbSwgdmVydGV4QnVmZmVyLT5nZXRC
dWZmZXIoKSwgYXR0cmlidXRlc1tpXS5vZmZzZXQsIGF0dHJpYnV0ZXNbaV0uc3RyaWRlKTsKKyAg
ICAgICAgICAgICAgICBkZXZpY2UtPlNldFN0cmVhbVNvdXJjZShzdHJlYW0sIHZlcnRleEJ1ZmZl
ci0+Z2V0QnVmZmVyKCksIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVzW2ldLnN0cmlkZSk7CiAgICAgICAgICAgICAgICAgbUFwcGxpZWRW
QnNbc3RyZWFtXS5zZXJpYWwgPSBhdHRyaWJ1dGVzW2ldLnNlcmlhbDsKICAgICAgICAgICAgICAg
ICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlkZSA9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlOwotICAg
ICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0cmVhbV0ub2Zmc2V0ID0gYXR0cmlidXRlc1tpXS5v
ZmZzZXQ7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5vZmZzZXQgPSBvZmZz
ZXQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXQgdmVydGV4
Rm9ybWF0KCphdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZSwgR0xfRkxPQVQpOwotICAgICAgICAgICAg
Y29uc3QgZDNkOTo6VmVydGV4Rm9ybWF0ICZkM2Q5VmVydGV4SW5mbyA9IGQzZDk6OkdldFZlcnRl
eEZvcm1hdEluZm8oY2Fwcy5EZWNsVHlwZXMsIHZlcnRleEZvcm1hdCk7CisgICAgICAgICAgICBn
bDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhmb3JtYXRUeXBlID0gZ2w6OkdldFZlcnRleEZvcm1h
dFR5cGUoKmF0dHJpYnV0ZXNbaV0uYXR0cmlidXRlLCBHTF9GTE9BVCk7CisgICAgICAgICAgICBj
b25zdCBkM2Q5OjpWZXJ0ZXhGb3JtYXQgJmQzZDlWZXJ0ZXhJbmZvID0gZDNkOTo6R2V0VmVydGV4
Rm9ybWF0SW5mbyhjYXBzLkRlY2xUeXBlcywgdmVydGV4Zm9ybWF0VHlwZSk7CiAKICAgICAgICAg
ICAgIGVsZW1lbnQtPlN0cmVhbSA9IHN0YXRpY19jYXN0PFdPUkQ+KHN0cmVhbSk7CiAgICAgICAg
ICAgICBlbGVtZW50LT5PZmZzZXQgPSAwOwogICAgICAgICAgICAgZWxlbWVudC0+VHlwZSA9IHN0
YXRpY19jYXN0PEJZVEU+KGQzZDlWZXJ0ZXhJbmZvLm5hdGl2ZUZvcm1hdCk7CiAgICAgICAgICAg
ICBlbGVtZW50LT5NZXRob2QgPSBEM0RERUNMTUVUSE9EX0RFRkFVTFQ7CiAgICAgICAgICAgICBl
bGVtZW50LT5Vc2FnZSA9IEQzRERFQ0xVU0FHRV9URVhDT09SRDsKLSAgICAgICAgICAgIGVsZW1l
bnQtPlVzYWdlSW5kZXggPSBzdGF0aWNfY2FzdDxCWVRFPihwcm9ncmFtLT5nZXRTZW1hbnRpY0lu
ZGV4KGkpKTsKKyAgICAgICAgICAgIGVsZW1lbnQtPlVzYWdlSW5kZXggPSBzdGF0aWNfY2FzdDxC
WVRFPihzZW1hbnRpY0luZGV4ZXNbaV0pOwogICAgICAgICAgICAgZWxlbWVudCsrOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGluc3RhbmNlZEF0dHJpYnV0
ZSA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBp
bnN0YW5jZWRBdHRyaWJ1dGUgPT0gaW52YWxpZEF0dHJpYkluZGV4KQogICAgIHsKICAgICAgICAg
aWYgKG1JbnN0YW5jaW5nRW5hYmxlZCkKICAgICAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xhcmF0aW9u
Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCShyZXZpc2lvbiAx
OTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNywxMiBAQAogICAgIFZlcnRleERlY2xhcmF0aW9uQ2FjaGUoKTsKICAgICB+VmVydGV4RGVj
bGFyYXRpb25DYWNoZSgpOwogCi0gICAgZ2w6OkVycm9yIGFwcGx5RGVjbGFyYXRpb24oSURpcmVj
dDNERGV2aWNlOSAqZGV2aWNlLCBUcmFuc2xhdGVkQXR0cmlidXRlIGF0dHJpYnV0ZXNbXSwgZ2w6
OlByb2dyYW0gKnByb2dyYW0sIEdMc2l6ZWkgaW5zdGFuY2VzLCBHTHNpemVpICpyZXBlYXREcmF3
KTsKKyAgICBnbDo6RXJyb3IgYXBwbHlEZWNsYXJhdGlvbihJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VHJh
bnNsYXRlZEF0dHJpYnV0ZT4gJmF0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OlByb2dyYW0gKnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBp
bnN0YW5jZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcmVwZWF0
RHJhdyk7CiAKICAgICB2b2lkIG1hcmtTdGF0ZURpcnR5KCk7CiAKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9y
bWF0dXRpbHM5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDggKzExOSw4IEBACiAgICAgSW5z
ZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfTDgsICAgICAgICAgICAgICA4LCAxLCAxLCAg
MCwgIDAsICAwLCAgMCwgIDgsICAwLCAgMCwgR0xfTFVNSU5BTkNFOF9FWFQsICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8TDg+LCAgICAgICAgICAgIFJlYWRDb2xvcjxMOCwgR0xmbG9hdD4g
ICAgICAgICAgICk7CiAgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTgsICAg
ICAgICAgICAgICA4LCAxLCAxLCAgMCwgIDAsICAwLCAgOCwgIDAsICAwLCAgMCwgR0xfQUxQSEE4
X0VYVCwgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+LCAgICAgICAgICAgIFJl
YWRDb2xvcjxBOCwgR0xmbG9hdD4gICAgICAgICAgICk7CiAgICAgSW5zZXJ0RDNERm9ybWF0SW5m
bygmbWFwLCBEM0RGTVRfQThMOCwgICAgICAgICAgIDE2LCAxLCAxLCAgMCwgIDAsICAwLCAgOCwg
IDgsICAwLCAgMCwgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAgICAgICAgICAgR2VuZXJhdGVN
aXA8QThMOD4sICAgICAgICAgIFJlYWRDb2xvcjxBOEw4LCBHTGZsb2F0PiAgICAgICAgICk7Ci0g
ICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTRSNEc0QjQsICAgICAgIDE2LCAx
LCAxLCAgNCwgIDQsICA0LCAgNCwgIDAsICAwLCAgMCwgR0xfQkdSQTRfQU5HTEVYLCAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjRHNFI0QTQ+LCAgICAgIFJlYWRDb2xvcjxCNEc0UjRB
NCwgR0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRf
QTFSNUc1QjUsICAgICAgIDE2LCAxLCAxLCAgNSwgIDUsICA1LCAgMSwgIDAsICAwLCAgMCwgR0xf
QkdSNV9BMV9BTkdMRVgsICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjVHNVI1QTE+LCAg
ICAgIFJlYWRDb2xvcjxCNUc1UjVBMSwgR0xmbG9hdD4gICAgICk7CisgICAgSW5zZXJ0RDNERm9y
bWF0SW5mbygmbWFwLCBEM0RGTVRfQTRSNEc0QjQsICAgICAgIDE2LCAxLCAxLCAgNCwgIDQsICA0
LCAgNCwgIDAsICAwLCAgMCwgR0xfQkdSQTRfQU5HTEVYLCAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8QTRSNEc0QjQ+LCAgICAgIFJlYWRDb2xvcjxBNFI0RzRCNCwgR0xmbG9hdD4gICAg
ICk7CisgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQTFSNUc1QjUsICAgICAg
IDE2LCAxLCAxLCAgNSwgIDUsICA1LCAgMSwgIDAsICAwLCAgMCwgR0xfQkdSNV9BMV9BTkdMRVgs
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTFSNUc1QjU+LCAgICAgIFJlYWRDb2xvcjxB
MVI1RzVCNSwgR0xmbG9hdD4gICAgICk7CiAgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBE
M0RGTVRfUjVHNkI1LCAgICAgICAgIDE2LCAxLCAxLCAgNSwgIDYsICA1LCAgMCwgIDAsICAwLCAg
MCwgR0xfUkdCNTY1LCAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjVHNkI1
PiwgICAgICAgIFJlYWRDb2xvcjxSNUc2QjUsIEdMZmxvYXQ+ICAgICAgICk7CiAgICAgSW5zZXJ0
RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfWDhSOEc4QjgsICAgICAgIDMyLCAxLCAxLCAgOCwg
IDgsICA4LCAgMCwgIDAsICAwLCAgMCwgR0xfQkdSQThfRVhULCAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8QjhHOFI4WDg+LCAgICAgIFJlYWRDb2xvcjxCOEc4UjhYOCwgR0xmbG9h
dD4gICAgICk7CiAgICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfQThSOEc4Qjgs
ICAgICAgIDMyLCAxLCAxLCAgOCwgIDgsICA4LCAgOCwgIDAsICAwLCAgMCwgR0xfQkdSQThfRVhU
LCAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4QTg+LCAgICAgIFJlYWRD
b2xvcjxCOEc4UjhBOCwgR0xmbG9hdD4gICAgICk7CkBAIC00NzUsMTYgKzQ3NSwyNSBAQAogLy8g
YW5kIHRoZSBEM0RERUNMVFlQRSBtZW1iZXIgbmVlZGVkIGZvciB0aGUgdmVydGV4IGRlY2xhcmF0
aW9uIGluIGRlY2xmbGFnLgogdGVtcGxhdGUgPEdMZW51bSBmcm9tVHlwZSwgYm9vbCBub3JtYWxp
emVkLCBpbnQgc2l6ZSwgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFByZWZlcmVuY2VSdWxlPgog
c3RydWN0IENvbnZlcnRlcgotICAgIDogVmVydGV4RGF0YUNvbnZlcnRlcjx0eXBlbmFtZSBHTFRv
Q1R5cGU8ZnJvbVR5cGU+Ojp0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBXaWRlblJ1
bGU8UHJlZmVyZW5jZVJ1bGU8IFZlcnRleFR5cGVNYXBwaW5nPGZyb21UeXBlLCBub3JtYWxpemVk
PiA+Ojp0eXBlLCBzaXplPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVyc2lvblJ1
bGU8ZnJvbVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
cm1hbGl6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZl
cmVuY2VSdWxlPCBWZXJ0ZXhUeXBlTWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlw
ZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRWZXJ0ZXhWYWx1ZXM8dHlwZW5h
bWUgRDNEVG9DVHlwZTxQcmVmZXJlbmNlUnVsZTwgVmVydGV4VHlwZU1hcHBpbmc8ZnJvbVR5cGUs
IG5vcm1hbGl6ZWQ+ID46OnR5cGU+Ojp0eXBlLCBub3JtYWxpemVkID4gPgorICAgIDogVmVydGV4
RGF0YUNvbnZlcnRlcjwKKyAgICAgICAgICB0eXBlbmFtZSBHTFRvQ1R5cGU8ZnJvbVR5cGU+Ojp0
eXBlLAorICAgICAgICAgIFdpZGVuUnVsZTxQcmVmZXJlbmNlUnVsZTxWZXJ0ZXhUeXBlTWFwcGlu
Zzxmcm9tVHlwZSwgbm9ybWFsaXplZD4+Ojp0eXBlLCBzaXplPiwKKyAgICAgICAgICBDb252ZXJz
aW9uUnVsZTxmcm9tVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZlcmVuY2VSdWxlPFZlcnRleFR5cGVNYXBwaW5n
PGZyb21UeXBlLCBub3JtYWxpemVkPj46OnR5cGU+LAorICAgICAgICAgIERlZmF1bHRWZXJ0ZXhW
YWx1ZXM8dHlwZW5hbWUgRDNEVG9DVHlwZTxQcmVmZXJlbmNlUnVsZTwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhUeXBlTWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXpl
ZD4+Ojp0eXBlPjo6dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZWQ+PgogewogcHJpdmF0ZToKLSAgICBlbnVtIHsgZDNkdHlwZSA9IFByZWZlcmVuY2VSdWxlPCBW
ZXJ0ZXhUeXBlTWFwcGluZzxmcm9tVHlwZSwgbm9ybWFsaXplZD4gPjo6dHlwZSB9OwotICAgIGVu
dW0geyBkM2RzaXplID0gV2lkZW5SdWxlPGQzZHR5cGUsIHNpemU+OjpmaW5hbFdpZHRoIH07Cisg
IGVudW0KKyAgeworICAgICAgZDNkdHlwZSA9IFByZWZlcmVuY2VSdWxlPFZlcnRleFR5cGVNYXBw
aW5nPGZyb21UeXBlLCBub3JtYWxpemVkPj46OnR5cGUKKyAgfTsKKyAgZW51bQorICB7CisgICAg
ICBkM2RzaXplID0gV2lkZW5SdWxlPGQzZHR5cGUsIHNpemU+OjpmaW5hbFdpZHRoCisgIH07CiAK
IHB1YmxpYzoKICAgICBlbnVtIHsgY2FwZmxhZyA9IFZlcnRleFR5cGVGbGFnczxkM2R0eXBlLCBk
M2RzaXplPjo6Y2FwZmxhZyB9OwpAQCAtNTU1LDcgKzU2NCw3IEBACiAgICAgfQogfQogCi1jb25z
dCBWZXJ0ZXhGb3JtYXQgJkdldFZlcnRleEZvcm1hdEluZm8oRFdPUkQgc3VwcG9ydGVkRGVjbFR5
cGVzLCBjb25zdCBnbDo6VmVydGV4Rm9ybWF0ICZ2ZXJ0ZXhGb3JtYXQpCitjb25zdCBWZXJ0ZXhG
b3JtYXQgJkdldFZlcnRleEZvcm1hdEluZm8oRFdPUkQgc3VwcG9ydGVkRGVjbFR5cGVzLCBnbDo6
VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKQogewogICAgIHN0YXRpYyBib29sIGlu
aXRpYWxpemVkID0gZmFsc2U7CiAgICAgc3RhdGljIERXT1JEIGluaXRpYWxpemVkRGVjbFR5cGVz
ID0gMDsKQEAgLTU5Miw5ICs2MDEsMTEgQEAKICAgICAgICAgaW5pdGlhbGl6ZWREZWNsVHlwZXMg
PSBzdXBwb3J0ZWREZWNsVHlwZXM7CiAgICAgfQogCisgICAgY29uc3QgZ2w6OlZlcnRleEZvcm1h
dCAmdmVydGV4Rm9ybWF0ID0gZ2w6OkdldFZlcnRleEZvcm1hdEZyb21UeXBlKHZlcnRleEZvcm1h
dFR5cGUpOworCiAgICAgLy8gUHVyZSBpbnRlZ2VyIGF0dHJpYnV0ZXMgb25seSBzdXBwb3J0ZWQg
aW4gRVMzLjAKLSAgICBBU1NFUlQoIXZlcnRleEZvcm1hdC5tUHVyZUludGVnZXIpOwotICAgIHJl
dHVybiBmb3JtYXRDb252ZXJ0ZXJzW0NvbXB1dGVUeXBlSW5kZXgodmVydGV4Rm9ybWF0Lm1UeXBl
KV1bdmVydGV4Rm9ybWF0Lm1Ob3JtYWxpemVkXVt2ZXJ0ZXhGb3JtYXQubUNvbXBvbmVudHMgLSAx
XTsKKyAgICBBU1NFUlQoIXZlcnRleEZvcm1hdC5wdXJlSW50ZWdlcik7CisgICAgcmV0dXJuIGZv
cm1hdENvbnZlcnRlcnNbQ29tcHV0ZVR5cGVJbmRleCh2ZXJ0ZXhGb3JtYXQudHlwZSldW3ZlcnRl
eEZvcm1hdC5ub3JtYWxpemVkXVt2ZXJ0ZXhGb3JtYXQuY29tcG9uZW50cyAtIDFdOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvZm9ybWF0dXRpbHM5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDEzICsxMCwx
MyBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEOV9GT1JNQVRVVElMUzlfSF8K
ICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDlfRk9STUFUVVRJTFM5X0hfCiAKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSA8bWFwPgogCiAjaW5jbHVkZSAiY29t
bW9uL3BsYXRmb3JtLmgiCisjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2Zvcm1hdHV0aWxzRDNELmgiCiAKLSNpbmNsdWRlIDxtYXA+Ci0KIG5hbWVzcGFjZSByeAog
ewogCkBAIC02NCw3ICs2NCw3IEBACiAgICAgRDNEREVDTFRZUEUgbmF0aXZlRm9ybWF0OwogICAg
IEdMZW51bSBjb21wb25lbnRUeXBlOwogfTsKLWNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4
Rm9ybWF0SW5mbyhEV09SRCBzdXBwb3J0ZWREZWNsVHlwZXMsIGNvbnN0IGdsOjpWZXJ0ZXhGb3Jt
YXQgJnZlcnRleEZvcm1hdCk7Citjb25zdCBWZXJ0ZXhGb3JtYXQgJkdldFZlcnRleEZvcm1hdElu
Zm8oRFdPUkQgc3VwcG9ydGVkRGVjbFR5cGVzLCBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhG
b3JtYXRUeXBlKTsKIAogc3RydWN0IFRleHR1cmVGb3JtYXQKIHsKSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRp
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuY3BwCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvcmVuZGVyZXI5X3V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCwxNiArOCwxNyBAQAog
Ly8gc3BlY2lmaWMgdG8gdGhlIEQzRDkgcmVuZGVyZXIuCiAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9X
b3JrYXJvdW5kcy5oIgorCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvUmVuZGVyVGFyZ2V0OS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9GcmFtZWJ1ZmZlckQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3Jr
YXJvdW5kc0QzRC5oIgogCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCi0jaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCi0KICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3Rl
bUluZm8uaCIKIAogbmFtZXNwYWNlIHJ4CkBAIC0yMDgsNyArMjA5LDggQEAKICAgICByZXR1cm4g
ZDNkTWFnRmlsdGVyOwogfQogCi12b2lkIENvbnZlcnRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRl
ciwgRDNEVEVYVFVSRUZJTFRFUlRZUEUgKmQzZE1pbkZpbHRlciwgRDNEVEVYVFVSRUZJTFRFUlRZ
UEUgKmQzZE1pcEZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSkKK3ZvaWQgQ29udmVydE1pbkZp
bHRlcihHTGVudW0gbWluRmlsdGVyLCBEM0RURVhUVVJFRklMVEVSVFlQRSAqZDNkTWluRmlsdGVy
LCBEM0RURVhUVVJFRklMVEVSVFlQRSAqZDNkTWlwRmlsdGVyLAorICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0ICpkM2RMb2RCaWFzLCBmbG9hdCBtYXhBbmlzb3Ryb3B5LCBzaXplX3QgYmFzZUxl
dmVsKQogewogICAgIHN3aXRjaCAobWluRmlsdGVyKQogICAgIHsKQEAgLTI0Miw2ICsyNDQsMjAg
QEAKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKKyAgICAvLyBEaXNhYmxpbmcgbWlw
bWFwcGluZyB3aWxsIGFsd2F5cyBzYW1wbGUgZnJvbSBsZXZlbCAwIG9mIHRoZSB0ZXh0dXJlLiBJ
dCBpcyBwb3NzaWJsZSB0byB3b3JrCisgICAgLy8gYXJvdW5kIHRoaXMgYnkgbW9kaWZ5aW5nIEQz
RFNBTVBfTUFYTUlQTEVWRUwgdG8gZm9yY2UgYSBzcGVjaWZpYyBtaXAgbGV2ZWwgdG8gYmVjb21l
IHRoZQorICAgIC8vIGxvd2VzdCBzYW1wbGVkIG1pcCBsZXZlbCBhbmQgdXNpbmcgYSBsYXJnZSBu
ZWdhdGl2ZSB2YWx1ZSBmb3IgRDNEU0FNUF9NSVBNQVBMT0RCSUFTIHRvCisgICAgLy8gZW5zdXJl
IHRoYXQgb25seSB0aGUgYmFzZSBtaXAgbGV2ZWwgaXMgc2FtcGxlZC4KKyAgICBpZiAoYmFzZUxl
dmVsID4gMCAmJiAqZDNkTWlwRmlsdGVyID09IEQzRFRFWEZfTk9ORSkKKyAgICB7CisgICAgICAg
ICpkM2RNaXBGaWx0ZXIgPSBEM0RURVhGX1BPSU5UOworICAgICAgICAqZDNkTG9kQmlhcyA9IC1z
dGF0aWNfY2FzdDxmbG9hdD4oZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICpkM2RMb2RCaWFzID0gMC4wZjsKKyAg
ICB9CisKICAgICBpZiAobWF4QW5pc290cm9weSA+IDEuMGYpCiAgICAgewogICAgICAgICAqZDNk
TWluRmlsdGVyID0gRDNEVEVYRl9BTklTT1RST1BJQzsKQEAgLTI1OCw2ICsyNzQsMTYgQEAKIG5h
bWVzcGFjZSBkM2Q5X2dsCiB7CiAKK3Vuc2lnbmVkIGludCBHZXRSZXNlcnZlZFZlcnRleFVuaWZv
cm1WZWN0b3JzKCkKK3sKKyAgICByZXR1cm4gMzsgIC8vIGR4X1ZpZXdDb29yZHMsIGR4X1ZpZXdB
ZGp1c3QgYW5kIGR4X0RlcHRoUmFuZ2UuCit9CisKK3Vuc2lnbmVkIGludCBHZXRSZXNlcnZlZEZy
YWdtZW50VW5pZm9ybVZlY3RvcnMoKQoreworICAgIHJldHVybiAzOyAgLy8gZHhfVmlld0Nvb3Jk
cywgZHhfRGVwdGhGcm9udCBhbmQgZHhfRGVwdGhSYW5nZS4KK30KKwogR0xzaXplaSBHZXRTYW1w
bGVzQ291bnQoRDNETVVMVElTQU1QTEVfVFlQRSB0eXBlKQogewogICAgIHJldHVybiAodHlwZSAh
PSBEM0RNVUxUSVNBTVBMRV9OT05NQVNLQUJMRSkgPyB0eXBlIDogMDsKQEAgLTMwMyw3ICszMjks
NyBAQAogICAgICAgICB9CiAKICAgICAgICAgdGV4dHVyZUNhcHMuc2FtcGxlQ291bnRzLmluc2Vy
dCgxKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IEQzRE1VTFRJU0FNUExFXzJfU0FNUExFUzsg
aSA8PSBEM0RNVUxUSVNBTVBMRV8xNl9TQU1QTEVTOyBpKyspCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSBEM0RNVUxUSVNBTVBMRV8yX1NBTVBMRVM7IGkgPD0gRDNETVVMVElTQU1QTEVf
MTZfU0FNUExFUzsgaSsrKQogICAgICAgICB7CiAgICAgICAgICAgICBEM0RNVUxUSVNBTVBMRV9U
WVBFIG11bHRpc2FtcGxlVHlwZSA9IEQzRE1VTFRJU0FNUExFX1RZUEUoaSk7CiAKQEAgLTMxOCw4
ICszNDQsMTQgQEAKICAgICByZXR1cm4gdGV4dHVyZUNhcHM7CiB9CiAKLXZvaWQgR2VuZXJhdGVD
YXBzKElEaXJlY3QzRDkgKmQzZDksIElEaXJlY3QzRERldmljZTkgKmRldmljZSwgRDNEREVWVFlQ
RSBkZXZpY2VUeXBlLCBVSU5UIGFkYXB0ZXIsIGdsOjpDYXBzICpjYXBzLAotICAgICAgICAgICAg
ICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICp0ZXh0dXJlQ2Fwc01hcCwgZ2w6OkV4dGVuc2lvbnMg
KmV4dGVuc2lvbnMpCit2b2lkIEdlbmVyYXRlQ2FwcyhJRGlyZWN0M0Q5ICpkM2Q5LAorICAgICAg
ICAgICAgICAgICAgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLAorICAgICAgICAgICAgICAgICAg
RDNEREVWVFlQRSBkZXZpY2VUeXBlLAorICAgICAgICAgICAgICAgICAgVUlOVCBhZGFwdGVyLAor
ICAgICAgICAgICAgICAgICAgZ2w6OkNhcHMgKmNhcHMsCisgICAgICAgICAgICAgICAgICBnbDo6
VGV4dHVyZUNhcHNNYXAgKnRleHR1cmVDYXBzTWFwLAorICAgICAgICAgICAgICAgICAgZ2w6OkV4
dGVuc2lvbnMgKmV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMg
KmxpbWl0YXRpb25zKQogewogICAgIEQzRENBUFM5IGRldmljZUNhcHM7CiAgICAgaWYgKEZBSUxF
RChkM2Q5LT5HZXREZXZpY2VDYXBzKGFkYXB0ZXIsIGRldmljZVR5cGUsICZkZXZpY2VDYXBzKSkp
CkBAIC00MTMsOSArNDQ1LDkgQEAKICAgICAvLyBWZXJ0ZXggc2hhZGVyIGxpbWl0cwogICAgIGNh
cHMtPm1heFZlcnRleEF0dHJpYnV0ZXMgPSAxNjsKIAotICAgIGNvbnN0IHNpemVfdCByZXNlcnZl
ZFZlcnRleFVuaWZvcm1WZWN0b3JzID0gMjsgLy8gZHhfVmlld0FkanVzdCBhbmQgZHhfRGVwdGhS
YW5nZS4KICAgICBjb25zdCBzaXplX3QgTUFYX1ZFUlRFWF9DT05TVEFOVF9WRUNUT1JTX0QzRDkg
PSAyNTY7Ci0gICAgY2Fwcy0+bWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBNQVhfVkVSVEVYX0NP
TlNUQU5UX1ZFQ1RPUlNfRDNEOSAtIHJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnM7CisgICAg
Y2Fwcy0+bWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPQorICAgICAgICBNQVhfVkVSVEVYX0NPTlNU
QU5UX1ZFQ1RPUlNfRDNEOSAtIEdldFJlc2VydmVkVmVydGV4VW5pZm9ybVZlY3RvcnMoKTsKICAg
ICBjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyA9IGNhcHMtPm1heFZlcnRleFVuaWZv
cm1WZWN0b3JzICogNDsKIAogICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1CbG9ja3MgPSAwOwpA
QCAtNDQxLDEyICs0NzMsMTIgQEAKICAgICB9CiAKICAgICAvLyBGcmFnbWVudCBzaGFkZXIgbGlt
aXRzCi0gICAgY29uc3Qgc2l6ZV90IHJlc2VydmVkUGl4ZWxVbmlmb3JtVmVjdG9ycyA9IDM7IC8v
IGR4X1ZpZXdDb29yZHMsIGR4X0RlcHRoRnJvbnQgYW5kIGR4X0RlcHRoUmFuZ2UuCi0KICAgICBj
b25zdCBzaXplX3QgTUFYX1BJWEVMX0NPTlNUQU5UX1ZFQ1RPUlNfU00zID0gMjI0OwogICAgIGNv
bnN0IHNpemVfdCBNQVhfUElYRUxfQ09OU1RBTlRfVkVDVE9SU19TTTIgPSAzMjsKLSAgICBjYXBz
LT5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gKChkZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVy
c2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApKSA/IE1BWF9QSVhFTF9DT05TVEFOVF9WRUNUT1JT
X1NNMwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogTUFYX1BJWEVMX0NP
TlNUQU5UX1ZFQ1RPUlNfU00yKSAtIHJlc2VydmVkUGl4ZWxVbmlmb3JtVmVjdG9yczsKKyAgICBj
YXBzLT5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0KKyAgICAgICAgKChkZXZpY2VDYXBzLlBp
eGVsU2hhZGVyVmVyc2lvbiA+PSBEM0RQU19WRVJTSU9OKDMsIDApKSA/IE1BWF9QSVhFTF9DT05T
VEFOVF9WRUNUT1JTX1NNMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogTUFYX1BJWEVMX0NPTlNUQU5UX1ZFQ1RPUlNfU00y
KSAtCisgICAgICAgIEdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOwogICAgIGNh
cHMtPm1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPSBjYXBzLT5tYXhGcmFnbWVudFVuaWZv
cm1WZWN0b3JzICogNDsKICAgICBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgPSAwOwog
ICAgIGNhcHMtPm1heEZyYWdtZW50SW5wdXRDb21wb25lbnRzID0gY2Fwcy0+bWF4VmVydGV4T3V0
cHV0Q29tcG9uZW50czsKQEAgLTQ3OCw3ICs1MTAsNiBAQAogICAgIC8vIEdMIGV4dGVuc2lvbiBz
dXBwb3J0CiAgICAgZXh0ZW5zaW9ucy0+c2V0VGV4dHVyZUV4dGVuc2lvblN1cHBvcnQoKnRleHR1
cmVDYXBzTWFwKTsKICAgICBleHRlbnNpb25zLT5lbGVtZW50SW5kZXhVaW50ID0gZGV2aWNlQ2Fw
cy5NYXhWZXJ0ZXhJbmRleCA+PSAoMSA8PCAxNik7Ci0gICAgZXh0ZW5zaW9ucy0+cGFja2VkRGVw
dGhTdGVuY2lsID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5nZXRQcm9ncmFtQmluYXJ5ID0gdHJ1
ZTsKICAgICBleHRlbnNpb25zLT5yZ2I4cmdiYTggPSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPnJl
YWRGb3JtYXRCR1JBID0gdHJ1ZTsKQEAgLTQ4OSw3ICs1MjAsNyBAQAogICAgIC8vIHRleHR1cmVS
RyBpcyBlbXVsYXRlZCBhbmQgbm90IHBlcmZvcm1hbnQuCiAgICAgZXh0ZW5zaW9ucy0+dGV4dHVy
ZVJHID0gZmFsc2U7CiAKLSAgICBEM0RBREFQVEVSX0lERU5USUZJRVI5IGFkYXB0ZXJJZCA9IHsg
MCB9OworICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkgYWRhcHRlcklkID0ge307CiAgICAgaWYg
KFNVQ0NFRURFRChkM2Q5LT5HZXRBZGFwdGVySWRlbnRpZmllcihhZGFwdGVyLCAwLCAmYWRhcHRl
cklkKSkpCiAgICAgewogICAgICAgICAvLyBBVEkgY2FyZHMgb24gWFAgaGF2ZSBwcm9ibGVtcyB3
aXRoIG5vbi1wb3dlci1vZi10d28gdGV4dHVyZXMuCkBAIC01MjcsNiArNTU4LDcgQEAKICAgICBT
YWZlUmVsZWFzZShldmVudFF1ZXJ5KTsKIAogICAgIGV4dGVuc2lvbnMtPnRpbWVyUXVlcnkgPSBm
YWxzZTsgLy8gVW5pbXBsZW1lbnRlZAorICAgIGV4dGVuc2lvbnMtPmRpc2pvaW50VGltZXJRdWVy
eSAgICAgPSBmYWxzZTsKICAgICBleHRlbnNpb25zLT5yb2J1c3RuZXNzID0gdHJ1ZTsKICAgICBl
eHRlbnNpb25zLT5ibGVuZE1pbk1heCA9IHRydWU7CiAgICAgZXh0ZW5zaW9ucy0+ZnJhbWVidWZm
ZXJCbGl0ID0gdHJ1ZTsKQEAgLTUzOSw3ICs1NzEsMjYgQEAKICAgICBleHRlbnNpb25zLT50ZXh0
dXJlVXNhZ2UgPSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPnRyYW5zbGF0ZWRTaGFkZXJTb3VyY2Ug
PSB0cnVlOwogICAgIGV4dGVuc2lvbnMtPmZib1JlbmRlck1pcG1hcCA9IGZhbHNlOworICAgIGV4
dGVuc2lvbnMtPmRpc2NhcmRGcmFtZWJ1ZmZlciA9IGZhbHNlOyAvLyBJdCB3b3VsZCBiZSB2YWxp
ZCB0byBzZXQgdGhpcyB0byB0cnVlLCBzaW5jZSBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCBpcyBq
dXN0IGEgaGludAogICAgIGV4dGVuc2lvbnMtPmNvbG9yQnVmZmVyRmxvYXQgPSBmYWxzZTsKKyAg
ICBleHRlbnNpb25zLT5kZWJ1Z01hcmtlciA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+ZWdsSW1h
Z2UgICAgICAgICAgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+dW5wYWNrU3ViaW1hZ2Ug
ICAgICAgICA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+cGFja1N1YmltYWdlICAgICAgICAgICA9
IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+dmVydGV4QXJyYXlPYmplY3QgICAgICA9IHRydWU7Cisg
ICAgZXh0ZW5zaW9ucy0+bm9FcnJvciAgICAgICAgICAgICAgICA9IHRydWU7CisKKyAgICAvLyBE
M0Q5IGhhcyBubyBjb25jZXB0IG9mIHNlcGFyYXRlIG1hc2tzIGFuZCByZWZzIGZvciBmcm9udCBh
bmQgYmFjayBmYWNlcyBpbiB0aGUgZGVwdGggc3RlbmNpbAorICAgIC8vIHN0YXRlLgorICAgIGxp
bWl0YXRpb25zLT5ub1NlcGFyYXRlU3RlbmNpbFJlZnNBbmRNYXNrcyA9IHRydWU7CisKKyAgICAv
LyBEM0Q5IHNoYWRlciBtb2RlbHMgaGF2ZSBsaW1pdGVkIHN1cHBvcnQgZm9yIGxvb3BpbmcsIHNv
IHRoZSBBcHBlbmRpeCBBCisgICAgLy8gaW5kZXgvbG9vcCBsaW1pdGF0aW9ucyBhcmUgbmVjZXNz
YXJ5LiBXb3JrYXJvdW5kcyB0aGF0IGFyZSBuZWVkZWQgdG8KKyAgICAvLyBzdXBwb3J0IGR5bmFt
aWMgaW5kZXhpbmcgb2YgdmVjdG9ycyBvbiBITFNMIGFsc28gZG9uJ3Qgd29yayBvbiBEM0Q5Lgor
ICAgIGxpbWl0YXRpb25zLT5zaGFkZXJzUmVxdWlyZUluZGV4ZWRMb29wVmFsaWRhdGlvbiA9IHRy
dWU7CisKKyAgICAvLyBEM0Q5IGNhbm5vdCBzdXBwb3J0IGNvbnN0YW50IGNvbG9yIGFuZCBhbHBo
YSBibGVuZCBmdW5jcyB0b2dldGhlcgorICAgIGxpbWl0YXRpb25zLT5ub1NpbXVsdGFuZW91c0Nv
bnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYyA9IHRydWU7CiB9CiAKIH0KQEAgLTU3NCw5ICs2
MjUsOSBAQAogICAgICpsZXZlbE9mZnNldCA9IHVwc2FtcGxlQ291bnQ7CiB9CiAKLVdvcmthcm91
bmRzIEdlbmVyYXRlV29ya2Fyb3VuZHMoKQorV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJv
dW5kcygpCiB7Ci0gICAgV29ya2Fyb3VuZHMgd29ya2Fyb3VuZHM7CisgICAgV29ya2Fyb3VuZHNE
M0Qgd29ya2Fyb3VuZHM7CiAgICAgd29ya2Fyb3VuZHMubXJ0UGVyZldvcmthcm91bmQgPSB0cnVl
OwogICAgIHdvcmthcm91bmRzLnNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQgPSBmYWxzZTsK
ICAgICB3b3JrYXJvdW5kcy51c2VJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbiA9IGZhbHNl
OwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaAko
cmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw3IEBACiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIFJlbmRlclRhcmdldDk7Ci1zdHJ1
Y3QgV29ya2Fyb3VuZHM7CitzdHJ1Y3QgV29ya2Fyb3VuZHNEM0Q7CiAKIG5hbWVzcGFjZSBnbF9k
M2Q5CiB7CkBAIC0zNyw3ICszNyw4IEBACiBEM0RDVUJFTUFQX0ZBQ0VTIENvbnZlcnRDdWJlRmFj
ZShHTGVudW0gY3ViZUZhY2UpOwogRFdPUkQgQ29udmVydENvbG9yTWFzayhib29sIHJlZCwgYm9v
bCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKTsKIEQzRFRFWFRVUkVGSUxURVJUWVBFIENv
bnZlcnRNYWdGaWx0ZXIoR0xlbnVtIG1hZ0ZpbHRlciwgZmxvYXQgbWF4QW5pc290cm9weSk7Ci12
b2lkIENvbnZlcnRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRlciwgRDNEVEVYVFVSRUZJTFRFUlRZ
UEUgKmQzZE1pbkZpbHRlciwgRDNEVEVYVFVSRUZJTFRFUlRZUEUgKmQzZE1pcEZpbHRlciwgZmxv
YXQgbWF4QW5pc290cm9weSk7Cit2b2lkIENvbnZlcnRNaW5GaWx0ZXIoR0xlbnVtIG1pbkZpbHRl
ciwgRDNEVEVYVFVSRUZJTFRFUlRZUEUgKmQzZE1pbkZpbHRlciwgRDNEVEVYVFVSRUZJTFRFUlRZ
UEUgKmQzZE1pcEZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICBmbG9hdCAqZDNkTG9kQmlh
cywgZmxvYXQgbWF4QW5pc290cm9weSwgc2l6ZV90IGJhc2VMZXZlbCk7CiAKIEQzRE1VTFRJU0FN
UExFX1RZUEUgR2V0TXVsdGlzYW1wbGVUeXBlKEdMdWludCBzYW1wbGVzKTsKIApAQCAtNDYsMTMg
KzQ3LDIyIEBACiBuYW1lc3BhY2UgZDNkOV9nbAogewogCit1bnNpZ25lZCBpbnQgR2V0UmVzZXJ2
ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycygpOworCit1bnNpZ25lZCBpbnQgR2V0UmVzZXJ2ZWRGcmFn
bWVudFVuaWZvcm1WZWN0b3JzKCk7CisKIEdMc2l6ZWkgR2V0U2FtcGxlc0NvdW50KEQzRE1VTFRJ
U0FNUExFX1RZUEUgdHlwZSk7CiAKIGJvb2wgSXNGb3JtYXRDaGFubmVsRXF1aXZhbGVudChEM0RG
T1JNQVQgZDNkZm9ybWF0LCBHTGVudW0gZm9ybWF0KTsKIAotdm9pZCBHZW5lcmF0ZUNhcHMoSURp
cmVjdDNEOSAqZDNkOSwgSURpcmVjdDNERGV2aWNlOSAqZGV2aWNlLCBEM0RERVZUWVBFIGRldmlj
ZVR5cGUsIFVJTlQgYWRhcHRlciwgZ2w6OkNhcHMgKmNhcHMsCi0gICAgICAgICAgICAgICAgICBn
bDo6VGV4dHVyZUNhcHNNYXAgKnRleHR1cmVDYXBzTWFwLCBnbDo6RXh0ZW5zaW9ucyAqZXh0ZW5z
aW9ucyk7Ci0KK3ZvaWQgR2VuZXJhdGVDYXBzKElEaXJlY3QzRDkgKmQzZDksCisgICAgICAgICAg
ICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICBEM0RE
RVZUWVBFIGRldmljZVR5cGUsCisgICAgICAgICAgICAgICAgICBVSU5UIGFkYXB0ZXIsCisgICAg
ICAgICAgICAgICAgICBnbDo6Q2FwcyAqY2FwcywKKyAgICAgICAgICAgICAgICAgIGdsOjpUZXh0
dXJlQ2Fwc01hcCAqdGV4dHVyZUNhcHNNYXAsCisgICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5z
aW9ucyAqZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgIGdsOjpMaW1pdGF0aW9ucyAqbGlt
aXRhdGlvbnMpOwogfQogCiBuYW1lc3BhY2UgZDNkOQpAQCAtNzYsOCArODYsNyBAQAogICAgIH0K
IH0KIAotV29ya2Fyb3VuZHMgR2VuZXJhdGVXb3JrYXJvdW5kcygpOwotCitXb3JrYXJvdW5kc0Qz
RCBHZW5lcmF0ZVdvcmthcm91bmRzKCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2Nv
bXBvbmVudG1hc2twcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1h
c2twcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNr
cHMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw4NCArMSw4NCBAQAotI2lmIDAKLS8vCi0vLyBHZW5l
cmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4
NAotLy8KLS8vIFBhcmFtZXRlcnM6Ci0vLwotLy8gICBmbG9hdDQgYWRkOwotLy8gICBmbG9hdDQg
bXVsdDsKLS8vICAgc2FtcGxlcjJEIHRleDsKLS8vCi0vLwotLy8gUmVnaXN0ZXJzOgotLy8KLS8v
ICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUKLS8vICAgLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0K
LS8vICAgbXVsdCAgICAgICAgIGMwICAgICAgIDEKLS8vICAgYWRkICAgICAgICAgIGMxICAgICAg
IDEKLS8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDEKLS8vCi0KLSAgICBwc18yXzAKLSAgICBk
Y2wgdDAueHkKLSAgICBkY2xfMmQgczAKLSAgICB0ZXhsZCByMCwgdDAsIHMwCi0gICAgbW92IHIx
LCBjMAotICAgIG1hZCByMCwgcjAsIHIxLCBjMQotICAgIG1vdiBvQzAsIHIwCi0KLS8vIGFwcHJv
eGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDMgYXJpdGhtZXRp
YykKLSNlbmRpZgotCi1jb25zdCBCWVRFIGdfcHMyMF9jb21wb25lbnRtYXNrcHNbXSA9Ci17Ci0g
ICAgICAwLCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwgCi0gICAgIDUwLCAgIDAsICA2NywgIDg0
LCAgNjUsICA2NiwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAxNDMsICAgMCwgCi0gICAgICAw
LCAgIDAsICAgMCwgICAyLCAyNTUsIDI1NSwgCi0gICAgICAzLCAgIDAsICAgMCwgICAwLCAgMjgs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgMTM2LCAgIDAs
ICAgMCwgICAwLCAgODgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDEsICAgMCwg
Ci0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgCi0gICAgMTA4LCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgCi0gICAgIDkyLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDExMywgICAwLCAgIDAsICAgMCwgCi0gICAgICAzLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDAsIDEyMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgOTcsIDEwMCwgCi0gICAgMTAwLCAgIDAsICAg
MSwgICAwLCAgIDMsICAgMCwgCi0gICAgICAxLCAgIDAsICAgNCwgICAwLCAgIDEsICAgMCwgCi0g
ICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTA5LCAxMTcsIDEwOCwgMTE2
LCAgIDAsIDExNiwgCi0gICAgMTAxLCAxMjAsICAgMCwgMTcxLCAxNzEsIDE3MSwgCi0gICAgICA0
LCAgIDAsICAxMiwgICAwLCAgIDEsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAxMTIsIDExNSwgCi0gICAgIDk1LCAgNTAs
ICA5NSwgIDQ4LCAgIDAsICA3NywgCi0gICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIDExMSwg
Ci0gICAgMTAyLCAxMTYsICAzMiwgIDQwLCAgODIsICA0MSwgCi0gICAgIDMyLCAgNzIsICA3Niwg
IDgzLCAgNzYsICAzMiwgCi0gICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgCi0gICAg
IDMyLCAgNjcsIDExMSwgMTA5LCAxMTIsIDEwNSwgCi0gICAgMTA4LCAxMDEsIDExNCwgIDMyLCAg
NTQsICA0NiwgCi0gICAgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgCi0gICAgIDQ2LCAg
NDksICA1NCwgIDUxLCAgNTYsICA1MiwgCi0gICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgMzEsICAg
MCwgCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwgCi0gICAgICAwLCAgIDAsICAg
MywgMTc2LCAgMzEsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDE0NCwgCi0g
ICAgICAwLCAgIDgsICAxNSwgMTYwLCAgNjYsICAgMCwgCi0gICAgICAwLCAgIDMsICAgMCwgICAw
LCAgMTUsIDEyOCwgCi0gICAgICAwLCAgIDAsIDIyOCwgMTc2LCAgIDAsICAgOCwgCi0gICAgMjI4
LCAxNjAsICAgMSwgICAwLCAgIDAsICAgMiwgCi0gICAgICAxLCAgIDAsICAxNSwgMTI4LCAgIDAs
ICAgMCwgCi0gICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgCi0gICAgICAwLCAgIDAs
ICAxNSwgMTI4LCAgIDAsICAgMCwgCi0gICAgMjI4LCAxMjgsICAgMSwgICAwLCAyMjgsIDEyOCwg
Ci0gICAgICAxLCAgIDAsIDIyOCwgMTYwLCAgIDEsICAgMCwgCi0gICAgICAwLCAgIDIsICAgMCwg
ICA4LCAgMTUsIDEyOCwgCi0gICAgICAwLCAgIDAsIDIyOCwgMTI4LCAyNTUsIDI1NSwgCi0gICAg
ICAwLCAgIDAKLX07CisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikg
SExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vIFBhcmFtZXRlcnM6
DQorLy8NCisvLyAgIGZsb2F0NCBhZGQ7DQorLy8gICBmbG9hdDQgbXVsdDsNCisvLyAgIHNhbXBs
ZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVyczoNCisvLw0KKy8vICAgTmFtZSAgICAg
ICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBtdWx0
ICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAgYWRkICAgICAgICAgIGMxICAgICAgIDENCisvLyAg
IHRleCAgICAgICAgICBzMCAgICAgICAxDQorLy8NCisNCisgICAgcHNfMl8wDQorICAgIGRjbCB0
MC54eQ0KKyAgICBkY2xfMmQgczANCisgICAgdGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtb3YgcjEs
IGMwDQorICAgIG1hZCByMCwgcjAsIHIxLCBjMQ0KKyAgICBtb3Ygb0MwLCByMA0KKw0KKy8vIGFw
cHJveGltYXRlbHkgNCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDMgYXJpdGht
ZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfcHMyMF9jb21wb25lbnRtYXNrcHNbXSA9
DQorew0KKyAgICAgIDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDUwLCAgIDAs
ICA2NywgIDg0LCAgNjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgMTQzLCAgIDAs
IA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCANCisgICAgICAzLCAgIDAsICAg
MCwgICAwLCAgMjgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0K
KyAgICAxMzYsICAgMCwgICAwLCAgIDAsICA4OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMiwg
ICAwLCAgIDEsICAgMCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIA0KKyAg
ICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTA4LCAgIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAg
OTIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExMywgICAwLCAg
IDAsICAgMCwgDQorICAgICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgMTIwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgOTcs
IDEwMCwgDQorICAgIDEwMCwgICAwLCAgIDEsICAgMCwgICAzLCAgIDAsIA0KKyAgICAgIDEsICAg
MCwgICA0LCAgIDAsICAgMSwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgDQorICAgIDEwOSwgMTE3LCAxMDgsIDExNiwgICAwLCAxMTYsIA0KKyAgICAxMDEsIDEyMCwg
ICAwLCAxNzEsIDE3MSwgMTcxLCANCisgICAgICA0LCAgIDAsICAxMiwgICAwLCAgIDEsICAgMCwg
DQorICAgICAgMSwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAw
LCAgIDAsIDExMiwgMTE1LCANCisgICAgIDk1LCAgNTAsICA5NSwgIDQ4LCAgIDAsICA3NywgDQor
ICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIA0KKyAgICAxMDIsIDExNiwgIDMyLCAg
NDAsICA4MiwgIDQxLCANCisgICAgIDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgDQorICAg
ICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsIA0KKyAgICAgMzIsICA2NywgMTExLCAxMDks
IDExMiwgMTA1LCANCisgICAgMTA4LCAxMDEsIDExNCwgIDMyLCAgNTQsICA0NiwgDQorICAgICA1
MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsIA0KKyAgICAgNDYsICA0OSwgIDU0LCAgNTEsICA1
NiwgIDUyLCANCisgICAgICAwLCAxNzEsIDE3MSwgMTcxLCAgMzEsICAgMCwgDQorICAgICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAgIDAsICAgMCwgICAzLCAxNzYsICAzMSwg
ICAwLCANCisgICAgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIDE0NCwgDQorICAgICAgMCwgICA4
LCAgMTUsIDE2MCwgIDY2LCAgIDAsIA0KKyAgICAgIDAsICAgMywgICAwLCAgIDAsICAxNSwgMTI4
LCANCisgICAgICAwLCAgIDAsIDIyOCwgMTc2LCAgIDAsICAgOCwgDQorICAgIDIyOCwgMTYwLCAg
IDEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDEsICAgMCwgIDE1LCAxMjgsICAgMCwgICAwLCAN
CisgICAgMjI4LCAxNjAsICAgNCwgICAwLCAgIDAsICAgNCwgDQorICAgICAgMCwgICAwLCAgMTUs
IDEyOCwgICAwLCAgIDAsIA0KKyAgICAyMjgsIDEyOCwgICAxLCAgIDAsIDIyOCwgMTI4LCANCisg
ICAgICAxLCAgIDAsIDIyOCwgMTYwLCAgIDEsICAgMCwgDQorICAgICAgMCwgICAyLCAgIDAsICAg
OCwgIDE1LCAxMjgsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxMjgsIDI1NSwgMjU1LCANCisgICAg
ICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2ZsaXB5dnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9mbGlweXZzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJz
L2NvbXBpbGVkL2ZsaXB5dnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMSw2NiBAQAotI2lm
IDAKLS8vCi0vLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxl
ciA2LjMuOTYwMC4xNjM4NAotLy8KLS8vIFBhcmFtZXRlcnM6Ci0vLwotLy8gICBmbG9hdDQgaGFs
ZlBpeGVsU2l6ZTsKLS8vCi0vLwotLy8gUmVnaXN0ZXJzOgotLy8KLS8vICAgTmFtZSAgICAgICAg
ICBSZWcgICBTaXplCi0vLyAgIC0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQotLy8gICBoYWxmUGl4
ZWxTaXplIGMwICAgICAgIDEKLS8vCi0KLSAgICB2c18yXzAKLSAgICBkZWYgYzEsIDAuNSwgMSwg
MCwgMAotICAgIGRjbF9wb3NpdGlvbiB2MAotICAgIGFkZCBvUG9zLCB2MCwgYzAKLSAgICBtYWQg
b1QwLCB2MCwgYzEueHh5eSwgYzEueHh6egotCi0vLyBhcHByb3hpbWF0ZWx5IDIgaW5zdHJ1Y3Rp
b24gc2xvdHMgdXNlZAotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ192czIwX2ZsaXB5dnNbXSA9Ci17
Ci0gICAgICAwLCAgIDIsIDI1NCwgMjU1LCAyNTQsIDI1NSwgCi0gICAgIDM2LCAgIDAsICA2Nywg
IDg0LCAgNjUsICA2NiwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgODcsICAgMCwgCi0gICAg
ICAwLCAgIDAsICAgMCwgICAyLCAyNTQsIDI1NSwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAg
MjgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDgwLCAg
IDAsICAgMCwgICAwLCAgNDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgNjQsICAgMCwgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgMTA0LCAgOTcsIDEwOCwgMTAyLCAgODAsIDEwNSwgCi0g
ICAgMTIwLCAxMDEsIDEwOCwgIDgzLCAxMDUsIDEyMiwgCi0gICAgMTAxLCAgIDAsIDE3MSwgMTcx
LCAgIDEsICAgMCwgCi0gICAgICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgCi0gICAgICAx
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUs
ICA1MCwgCi0gICAgIDk1LCAgNDgsICAgMCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAxMTEs
IDExNSwgMTExLCAxMDIsIDExNiwgCi0gICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3Miwg
Ci0gICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEwMSwg
MTE0LCAgMzIsICA2NywgCi0gICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0gICAg
MTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgCi0gICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAg
NDYsICA0OSwgCi0gICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0gICAgMTcxLCAx
NzEsICA4MSwgICAwLCAgIDAsICAgNSwgCi0gICAgICAxLCAgIDAsICAxNSwgMTYwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgNjMsICAgMCwgICAwLCAxMjgsICA2MywgCi0gICAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgCi0gICAgICAwLCAgIDAsICAzMSwgICAwLCAgIDAsICAgMiwgCi0g
ICAgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwgCi0gICAgIDE1LCAxNDQsICAgMiwgICAw
LCAgIDAsICAgMywgCi0gICAgICAwLCAgIDAsICAxNSwgMTkyLCAgIDAsICAgMCwgCi0gICAgMjI4
LCAxNDQsICAgMCwgICAwLCAyMjgsIDE2MCwgCi0gICAgICA0LCAgIDAsICAgMCwgICA0LCAgIDAs
ICAgMCwgCi0gICAgIDE1LCAyMjQsICAgMCwgICAwLCAyMjgsIDE0NCwgCi0gICAgICAxLCAgIDAs
ICA4MCwgMTYwLCAgIDEsICAgMCwgCi0gICAgMTYwLCAxNjAsIDI1NSwgMjU1LCAgIDAsICAgMAot
fTsKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRl
ciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8v
ICAgZmxvYXQ0IGhhbGZQaXhlbFNpemU7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVyczoNCisvLw0K
Ky8vICAgTmFtZSAgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0NCisvLyAgIGhhbGZQaXhlbFNpemUgYzAgICAgICAgMQ0KKy8vDQorDQorICAgIHZzXzJf
MA0KKyAgICBkZWYgYzEsIDAuNSwgMSwgMCwgMA0KKyAgICBkY2xfcG9zaXRpb24gdjANCisgICAg
YWRkIG9Qb3MsIHYwLCBjMA0KKyAgICBtYWQgb1QwLCB2MCwgYzEueHh5eSwgYzEueHh6eg0KKw0K
Ky8vIGFwcHJveGltYXRlbHkgMiBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQorI2VuZGlmDQorDQor
Y29uc3QgQllURSBnX3ZzMjBfZmxpcHl2c1tdID0NCit7DQorICAgICAgMCwgICAyLCAyNTQsIDI1
NSwgMjU0LCAyNTUsIA0KKyAgICAgMzYsICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAg
IDI4LCAgIDAsICAgMCwgICAwLCAgODcsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwg
MjU0LCAyNTUsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgDQorICAgICA4MCwgICAwLCAgIDAsICAgMCwgIDQ4
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCANCisgICAgICAxLCAg
IDAsICAgMCwgICAwLCAgNjQsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAxMDQsICA5NywgMTA4LCAxMDIsICA4MCwgMTA1LCANCisgICAgMTIwLCAxMDEs
IDEwOCwgIDgzLCAxMDUsIDEyMiwgDQorICAgIDEwMSwgICAwLCAxNzEsIDE3MSwgICAxLCAgIDAs
IA0KKyAgICAgIDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCANCisgICAgICAxLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAxMTgsIDExNSwgIDk1LCAgNTAsIA0K
KyAgICAgOTUsICA0OCwgICAwLCAgNzcsIDEwNSwgIDk5LCANCisgICAgMTE0LCAxMTEsIDExNSwg
MTExLCAxMDIsIDExNiwgDQorICAgICAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsIA0KKyAg
ICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCANCisgICAgIDk3LCAxMDAsIDEwMSwgMTE0
LCAgMzIsICA2NywgDQorICAgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIA0KKyAgICAx
MTQsICAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCANCisgICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAg
NDYsICA0OSwgDQorICAgICA1NCwgIDUxLCAgNTYsICA1MiwgICAwLCAxNzEsIA0KKyAgICAxNzEs
IDE3MSwgIDgxLCAgIDAsICAgMCwgICA1LCANCisgICAgICAxLCAgIDAsICAxNSwgMTYwLCAgIDAs
ICAgMCwgDQorICAgICAgMCwgIDYzLCAgIDAsICAgMCwgMTI4LCAgNjMsIA0KKyAgICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsICAzMSwgICAwLCAgIDAsICAg
MiwgDQorICAgICAgMCwgICAwLCAgIDAsIDEyOCwgICAwLCAgIDAsIA0KKyAgICAgMTUsIDE0NCwg
ICAyLCAgIDAsICAgMCwgICAzLCANCisgICAgICAwLCAgIDAsICAxNSwgMTkyLCAgIDAsICAgMCwg
DQorICAgIDIyOCwgMTQ0LCAgIDAsICAgMCwgMjI4LCAxNjAsIA0KKyAgICAgIDQsICAgMCwgICAw
LCAgIDQsICAgMCwgICAwLCANCisgICAgIDE1LCAyMjQsICAgMCwgICAwLCAyMjgsIDE0NCwgDQor
ICAgICAgMSwgICAwLCAgODAsIDE2MCwgICAxLCAgIDAsIA0KKyAgICAxNjAsIDE2MCwgMjU1LCAy
NTUsICAgMCwgICAwDQorfTsNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBzLmgJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
OTQgKzEsOTQgQEAKLSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExT
TCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8K
LS8vICAgZmxvYXQ0IGFkZDsKLS8vICAgZmxvYXQ0IG11bHQ7Ci0vLyAgIHNhbXBsZXIyRCB0ZXg7
Ci0vLwotLy8KLS8vIFJlZ2lzdGVyczoKLS8vCi0vLyAgIE5hbWUgICAgICAgICBSZWcgICBTaXpl
Ci0vLyAgIC0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tCi0vLyAgIG11bHQgICAgICAgICBjMCAgICAg
ICAxCi0vLyAgIGFkZCAgICAgICAgICBjMSAgICAgICAxCi0vLyAgIHRleCAgICAgICAgICBzMCAg
ICAgICAxCi0vLwotCi0gICAgcHNfMl8wCi0gICAgZGNsIHQwLnh5Ci0gICAgZGNsXzJkIHMwCi0g
ICAgdGV4bGQgcjAsIHQwLCBzMAotICAgIG1vdiByMS54dywgYzAKLSAgICBtYWQgcjAueCwgcjAu
eCwgcjEueCwgYzEueAotICAgIG1hZCByMC55LCByMC53LCByMS53LCBjMS53Ci0gICAgbW92IHIx
Lnh5eiwgcjAueAotICAgIG1vdiByMS53LCByMC55Ci0gICAgbW92IG9DMCwgcjEKLQotLy8gYXBw
cm94aW1hdGVseSA3IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgNiBhcml0aG1l
dGljKQotI2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19wczIwX2x1bWluYW5jZXBzW10gPQotewotICAg
ICAgMCwgICAyLCAyNTUsIDI1NSwgMjU0LCAyNTUsIAotICAgICA1MCwgICAwLCAgNjcsICA4NCwg
IDY1LCAgNjYsIAotICAgICAyOCwgICAwLCAgIDAsICAgMCwgMTQzLCAgIDAsIAotICAgICAgMCwg
ICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIAotICAgICAgMywgICAwLCAgIDAsICAgMCwgIDI4LCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIAotICAgIDEzNiwgICAwLCAg
IDAsICAgMCwgIDg4LCAgIDAsIAotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAxLCAgIDAsIAot
ICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDkyLCAgIDAsIAotICAgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsIAotICAgIDEwOCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsIAotICAgICAg
MCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsIAotICAgICA5MiwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsIAotICAgICAgMCwgICAwLCAxMTMsICAgMCwgICAwLCAgIDAsIAotICAgICAgMywgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsIAotICAgICAgMCwgICAwLCAxMjAsICAgMCwgICAwLCAgIDAs
IAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgIDk3LCAxMDAsIAotICAgIDEwMCwgICAwLCAgIDEs
ICAgMCwgICAzLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDQsICAgMCwgICAxLCAgIDAsIAotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIAotICAgIDEwOSwgMTE3LCAxMDgsIDExNiwg
ICAwLCAxMTYsIAotICAgIDEwMSwgMTIwLCAgIDAsIDE3MSwgMTcxLCAxNzEsIAotICAgICAgNCwg
ICAwLCAgMTIsICAgMCwgICAxLCAgIDAsIAotICAgICAgMSwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsIAotICAgICAgMCwgICAwLCAgIDAsICAgMCwgMTEyLCAxMTUsIAotICAgICA5NSwgIDUwLCAg
OTUsICA0OCwgICAwLCAgNzcsIAotICAgIDEwNSwgIDk5LCAxMTQsIDExMSwgMTE1LCAxMTEsIAot
ICAgIDEwMiwgMTE2LCAgMzIsICA0MCwgIDgyLCAgNDEsIAotICAgICAzMiwgIDcyLCAgNzYsICA4
MywgIDc2LCAgMzIsIAotICAgICA4MywgMTA0LCAgOTcsIDEwMCwgMTAxLCAxMTQsIAotICAgICAz
MiwgIDY3LCAxMTEsIDEwOSwgMTEyLCAxMDUsIAotICAgIDEwOCwgMTAxLCAxMTQsICAzMiwgIDU0
LCAgNDYsIAotICAgICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsIAotICAgICA0NiwgIDQ5
LCAgNTQsICA1MSwgIDU2LCAgNTIsIAotICAgICAgMCwgMTcxLCAxNzEsIDE3MSwgIDMxLCAgIDAs
IAotICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxMjgsIAotICAgICAgMCwgICAwLCAgIDMs
IDE3NiwgIDMxLCAgIDAsIAotICAgICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAxNDQsIAotICAg
ICAgMCwgICA4LCAgMTUsIDE2MCwgIDY2LCAgIDAsIAotICAgICAgMCwgICAzLCAgIDAsICAgMCwg
IDE1LCAxMjgsIAotICAgICAgMCwgICAwLCAyMjgsIDE3NiwgICAwLCAgIDgsIAotICAgIDIyOCwg
MTYwLCAgIDEsICAgMCwgICAwLCAgIDIsIAotICAgICAgMSwgICAwLCAgIDksIDEyOCwgICAwLCAg
IDAsIAotICAgIDIyOCwgMTYwLCAgIDQsICAgMCwgICAwLCAgIDQsIAotICAgICAgMCwgICAwLCAg
IDEsIDEyOCwgICAwLCAgIDAsIAotICAgICAgMCwgMTI4LCAgIDEsICAgMCwgICAwLCAxMjgsIAot
ICAgICAgMSwgICAwLCAgIDAsIDE2MCwgICA0LCAgIDAsIAotICAgICAgMCwgICA0LCAgIDAsICAg
MCwgICAyLCAxMjgsIAotICAgICAgMCwgICAwLCAyNTUsIDEyOCwgICAxLCAgIDAsIAotICAgIDI1
NSwgMTI4LCAgIDEsICAgMCwgMjU1LCAxNjAsIAotICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAx
LCAgIDAsIAotICAgICAgNywgMTI4LCAgIDAsICAgMCwgICAwLCAxMjgsIAotICAgICAgMSwgICAw
LCAgIDAsICAgMiwgICAxLCAgIDAsIAotICAgICAgOCwgMTI4LCAgIDAsICAgMCwgIDg1LCAxMjgs
IAotICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsIAotICAgICAxNSwgMTI4LCAgIDEs
ICAgMCwgMjI4LCAxMjgsIAotICAgIDI1NSwgMjU1LCAgIDAsICAgMAotfTsKKyNpZiAwDQorLy8N
CisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMu
OTYwMC4xNjM4NA0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0IGFkZDsN
CisvLyAgIGZsb2F0NCBtdWx0Ow0KKy8vICAgc2FtcGxlcjJEIHRleDsNCisvLw0KKy8vDQorLy8g
UmVnaXN0ZXJzOg0KKy8vDQorLy8gICBOYW1lICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0NCisvLyAgIG11bHQgICAgICAgICBjMCAgICAgICAxDQorLy8g
ICBhZGQgICAgICAgICAgYzEgICAgICAgMQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDEN
CisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAg
ICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1vdiByMS54dywgYzANCisgICAgbWFkIHIwLngsIHIw
LngsIHIxLngsIGMxLngNCisgICAgbWFkIHIwLnksIHIwLncsIHIxLncsIGMxLncNCisgICAgbW92
IHIxLnh5eiwgcjAueA0KKyAgICBtb3YgcjEudywgcjAueQ0KKyAgICBtb3Ygb0MwLCByMQ0KKw0K
Ky8vIGFwcHJveGltYXRlbHkgNyBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDYg
YXJpdGhtZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfcHMyMF9sdW1pbmFuY2Vwc1td
ID0NCit7DQorICAgICAgMCwgICAyLCAyNTUsIDI1NSwgMjU0LCAyNTUsIA0KKyAgICAgNTAsICAg
MCwgIDY3LCAgODQsICA2NSwgIDY2LCANCisgICAgIDI4LCAgIDAsICAgMCwgICAwLCAxNDMsICAg
MCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMiwgMjU1LCAyNTUsIA0KKyAgICAgIDMsICAgMCwg
ICAwLCAgIDAsICAyOCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
DQorICAgIDEzNiwgICAwLCAgIDAsICAgMCwgIDg4LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAy
LCAgIDAsICAgMSwgICAwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgOTIsICAgMCwgDQor
ICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAxMDgsICAgMCwgICAwLCAg
IDAsICAgMiwgICAwLCANCisgICAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAg
ICA5MiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgMTEzLCAgIDAs
ICAgMCwgICAwLCANCisgICAgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgDQorICAgICAg
MCwgICAwLCAxMjAsICAgMCwgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICA5
NywgMTAwLCANCisgICAgMTAwLCAgIDAsICAgMSwgICAwLCAgIDMsICAgMCwgDQorICAgICAgMSwg
ICAwLCAgIDQsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCANCisgICAgMTA5LCAxMTcsIDEwOCwgMTE2LCAgIDAsIDExNiwgDQorICAgIDEwMSwgMTIw
LCAgIDAsIDE3MSwgMTcxLCAxNzEsIA0KKyAgICAgIDQsICAgMCwgIDEyLCAgIDAsICAgMSwgICAw
LCANCisgICAgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgDQorICAgICAgMCwgICAwLCAg
IDAsICAgMCwgMTEyLCAxMTUsIA0KKyAgICAgOTUsICA1MCwgIDk1LCAgNDgsICAgMCwgIDc3LCAN
CisgICAgMTA1LCAgOTksIDExNCwgMTExLCAxMTUsIDExMSwgDQorICAgIDEwMiwgMTE2LCAgMzIs
ICA0MCwgIDgyLCAgNDEsIA0KKyAgICAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCANCisg
ICAgIDgzLCAxMDQsICA5NywgMTAwLCAxMDEsIDExNCwgDQorICAgICAzMiwgIDY3LCAxMTEsIDEw
OSwgMTEyLCAxMDUsIA0KKyAgICAxMDgsIDEwMSwgMTE0LCAgMzIsICA1NCwgIDQ2LCANCisgICAg
IDUxLCAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgDQorICAgICA0NiwgIDQ5LCAgNTQsICA1MSwg
IDU2LCAgNTIsIA0KKyAgICAgIDAsIDE3MSwgMTcxLCAxNzEsICAzMSwgICAwLCANCisgICAgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsIDEyOCwgDQorICAgICAgMCwgICAwLCAgIDMsIDE3NiwgIDMx
LCAgIDAsIA0KKyAgICAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgMTQ0LCANCisgICAgICAwLCAg
IDgsICAxNSwgMTYwLCAgNjYsICAgMCwgDQorICAgICAgMCwgICAzLCAgIDAsICAgMCwgIDE1LCAx
MjgsIA0KKyAgICAgIDAsICAgMCwgMjI4LCAxNzYsICAgMCwgICA4LCANCisgICAgMjI4LCAxNjAs
ICAgMSwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMSwgICAwLCAgIDksIDEyOCwgICAwLCAgIDAs
IA0KKyAgICAyMjgsIDE2MCwgICA0LCAgIDAsICAgMCwgICA0LCANCisgICAgICAwLCAgIDAsICAg
MSwgMTI4LCAgIDAsICAgMCwgDQorICAgICAgMCwgMTI4LCAgIDEsICAgMCwgICAwLCAxMjgsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAxNjAsICAgNCwgICAwLCANCisgICAgICAwLCAgIDQsICAgMCwg
ICAwLCAgIDIsIDEyOCwgDQorICAgICAgMCwgICAwLCAyNTUsIDEyOCwgICAxLCAgIDAsIA0KKyAg
ICAyNTUsIDEyOCwgICAxLCAgIDAsIDI1NSwgMTYwLCANCisgICAgICAxLCAgIDAsICAgMCwgICAy
LCAgIDEsICAgMCwgDQorICAgICAgNywgMTI4LCAgIDAsICAgMCwgICAwLCAxMjgsIA0KKyAgICAg
IDEsICAgMCwgICAwLCAgIDIsICAgMSwgICAwLCANCisgICAgICA4LCAxMjgsICAgMCwgICAwLCAg
ODUsIDEyOCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsIA0KKyAgICAgMTUs
IDEyOCwgICAxLCAgIDAsIDIyOCwgMTI4LCANCisgICAgMjU1LCAyNTUsICAgMCwgICAwDQorfTsN
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHBzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHBzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNjEgKzEsNjEgQEAK
LSNpZiAwCi0vLwotLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29t
cGlsZXIgNi4zLjk2MDAuMTYzODQKLS8vCi0vLyBQYXJhbWV0ZXJzOgotLy8KLS8vICAgc2FtcGxl
cjJEIHRleDsKLS8vCi0vLwotLy8gUmVnaXN0ZXJzOgotLy8KLS8vICAgTmFtZSAgICAgICAgIFJl
ZyAgIFNpemUKLS8vICAgLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0KLS8vICAgdGV4ICAgICAgICAg
IHMwICAgICAgIDEKLS8vCi0KLSAgICBwc18yXzAKLSAgICBkY2wgdDAueHkKLSAgICBkY2xfMmQg
czAKLSAgICB0ZXhsZCByMCwgdDAsIHMwCi0gICAgbW92IG9DMCwgcjAKLQotLy8gYXBwcm94aW1h
dGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMSBhcml0aG1ldGljKQot
I2VuZGlmCi0KLWNvbnN0IEJZVEUgZ19wczIwX3Bhc3N0aHJvdWdocHNbXSA9Ci17Ci0gICAgICAw
LCAgIDIsIDI1NSwgMjU1LCAyNTQsIDI1NSwgCi0gICAgIDMzLCAgIDAsICA2NywgIDg0LCAgNjUs
ICA2NiwgCi0gICAgIDI4LCAgIDAsICAgMCwgICAwLCAgNzUsICAgMCwgCi0gICAgICAwLCAgIDAs
ICAgMCwgICAyLCAyNTUsIDI1NSwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwg
Ci0gICAgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgCi0gICAgIDY4LCAgIDAsICAgMCwg
ICAwLCAgNDgsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgCi0gICAg
ICAxLCAgIDAsICAgMCwgICAwLCAgNTIsICAgMCwgCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgCi0gICAgMTE2LCAxMDEsIDEyMCwgICAwLCAgIDQsICAgMCwgCi0gICAgIDEyLCAg
IDAsICAgMSwgICAwLCAgIDEsICAgMCwgCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgCi0gICAgICAwLCAgIDAsIDExMiwgMTE1LCAgOTUsICA1MCwgCi0gICAgIDk1LCAgNDgsICAg
MCwgIDc3LCAxMDUsICA5OSwgCi0gICAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgCi0g
ICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgCi0gICAgIDc2LCAgODMsICA3NiwgIDMy
LCAgODMsIDEwNCwgCi0gICAgIDk3LCAxMDAsIDEwMSwgMTE0LCAgMzIsICA2NywgCi0gICAgMTEx
LCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgCi0gICAgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEs
ICA0NiwgCi0gICAgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgCi0gICAgIDU0LCAgNTEs
ICA1NiwgIDUyLCAgIDAsIDE3MSwgCi0gICAgMTcxLCAxNzEsICAzMSwgICAwLCAgIDAsICAgMiwg
Ci0gICAgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwgCi0gICAgICAzLCAxNzYsICAzMSwg
ICAwLCAgIDAsICAgMiwgCi0gICAgICAwLCAgIDAsICAgMCwgMTQ0LCAgIDAsICAgOCwgCi0gICAg
IDE1LCAxNjAsICA2NiwgICAwLCAgIDAsICAgMywgCi0gICAgICAwLCAgIDAsICAxNSwgMTI4LCAg
IDAsICAgMCwgCi0gICAgMjI4LCAxNzYsICAgMCwgICA4LCAyMjgsIDE2MCwgCi0gICAgICAxLCAg
IDAsICAgMCwgICAyLCAgIDAsICAgOCwgCi0gICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDEy
OCwgCi0gICAgMjU1LCAyNTUsICAgMCwgICAwCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVyYXRl
ZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQor
Ly8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8N
CisvLyBSZWdpc3RlcnM6DQorLy8NCisvLyAgIE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8g
ICAtLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDEN
CisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAg
ICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8gYXBwcm94aW1hdGVs
eSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgMSBhcml0aG1ldGljKQ0KKyNl
bmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIwX3Bhc3N0aHJvdWdocHNbXSA9DQorew0KKyAgICAg
IDAsICAgMiwgMjU1LCAyNTUsIDI1NCwgMjU1LCANCisgICAgIDMzLCAgIDAsICA2NywgIDg0LCAg
NjUsICA2NiwgDQorICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDc1LCAgIDAsIA0KKyAgICAgIDAs
ICAgMCwgICAwLCAgIDIsIDI1NSwgMjU1LCANCisgICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgs
ICAgMCwgDQorICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KKyAgICAgNjgsICAg
MCwgICAwLCAgIDAsICA0OCwgICAwLCANCisgICAgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAg
MCwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDUyLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgMTE2LCAxMDEsIDEyMCwgICAwLCAgIDQsICAgMCwg
DQorICAgICAxMiwgICAwLCAgIDEsICAgMCwgICAxLCAgIDAsIA0KKyAgICAgIDEsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExMiwgMTE1LCAgOTUsICA1MCwgDQor
ICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KKyAgICAxMTQsIDExMSwgMTE1LCAx
MTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQorICAg
ICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KKyAgICAgOTcsIDEwMCwgMTAxLCAxMTQs
ICAzMiwgIDY3LCANCisgICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQorICAgIDEx
NCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIA0KKyAgICAgNTcsICA1NCwgIDQ4LCAgNDgsICA0
NiwgIDQ5LCANCisgICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgDQorICAgIDE3MSwg
MTcxLCAgMzEsICAgMCwgICAwLCAgIDIsIA0KKyAgICAgIDAsICAgMCwgICAwLCAxMjgsICAgMCwg
ICAwLCANCisgICAgICAzLCAxNzYsICAzMSwgICAwLCAgIDAsICAgMiwgDQorICAgICAgMCwgICAw
LCAgIDAsIDE0NCwgICAwLCAgIDgsIA0KKyAgICAgMTUsIDE2MCwgIDY2LCAgIDAsICAgMCwgICAz
LCANCisgICAgICAwLCAgIDAsICAxNSwgMTI4LCAgIDAsICAgMCwgDQorICAgIDIyOCwgMTc2LCAg
IDAsICAgOCwgMjI4LCAxNjAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCAN
CisgICAgIDE1LCAxMjgsICAgMCwgICAwLCAyMjgsIDEyOCwgDQorICAgIDI1NSwgMjU1LCAgIDAs
ICAgMA0KK307DQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRl
cnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY2ICsxLDY2IEBA
Ci0jaWYgMAotLy8KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENv
bXBpbGVyIDYuMy45NjAwLjE2Mzg0Ci0vLwotLy8gUGFyYW1ldGVyczoKLS8vCi0vLyAgIGZsb2F0
NCBoYWxmUGl4ZWxTaXplOwotLy8KLS8vCi0vLyBSZWdpc3RlcnM6Ci0vLwotLy8gICBOYW1lICAg
ICAgICAgIFJlZyAgIFNpemUKLS8vICAgLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tCi0vLyAgIGhh
bGZQaXhlbFNpemUgYzAgICAgICAgMQotLy8KLQotICAgIHZzXzJfMAotICAgIGRlZiBjMSwgMC41
LCAtMC41LCAxLCAwCi0gICAgZGNsX3Bvc2l0aW9uIHYwCi0gICAgYWRkIG9Qb3MsIHYwLCBjMAot
ICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6LCBjMS54eHd3Ci0KLS8vIGFwcHJveGltYXRlbHkgMiBp
bnN0cnVjdGlvbiBzbG90cyB1c2VkCi0jZW5kaWYKLQotY29uc3QgQllURSBnX3ZzMjBfc3RhbmRh
cmR2c1tdID0KLXsKLSAgICAgIDAsICAgMiwgMjU0LCAyNTUsIDI1NCwgMjU1LCAKLSAgICAgMzYs
ICAgMCwgIDY3LCAgODQsICA2NSwgIDY2LCAKLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICA4Nywg
ICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCAKLSAgICAgIDEsICAgMCwg
ICAwLCAgIDAsICAyOCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAK
LSAgICAgODAsICAgMCwgICAwLCAgIDAsICA0OCwgICAwLCAKLSAgICAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCAKLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAxMDQsICA5NywgMTA4LCAxMDIsICA4
MCwgMTA1LCAKLSAgICAxMjAsIDEwMSwgMTA4LCAgODMsIDEwNSwgMTIyLCAKLSAgICAxMDEsICAg
MCwgMTcxLCAxNzEsICAgMSwgICAwLCAKLSAgICAgIDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAw
LCAKLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgMTE4
LCAxMTUsICA5NSwgIDUwLCAKLSAgICAgOTUsICA0OCwgICAwLCAgNzcsIDEwNSwgIDk5LCAKLSAg
ICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAKLSAgICAgMzIsICA0MCwgIDgyLCAgNDEs
ICAzMiwgIDcyLCAKLSAgICAgNzYsICA4MywgIDc2LCAgMzIsICA4MywgMTA0LCAKLSAgICAgOTcs
IDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCAKLSAgICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwg
MTAxLCAKLSAgICAxMTQsICAzMiwgIDU0LCAgNDYsICA1MSwgIDQ2LCAKLSAgICAgNTcsICA1NCwg
IDQ4LCAgNDgsICA0NiwgIDQ5LCAKLSAgICAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgMTcxLCAK
LSAgICAxNzEsIDE3MSwgIDgxLCAgIDAsICAgMCwgICA1LCAKLSAgICAgIDEsICAgMCwgIDE1LCAx
NjAsICAgMCwgICAwLCAKLSAgICAgIDAsICA2MywgICAwLCAgIDAsICAgMCwgMTkxLCAKLSAgICAg
IDAsICAgMCwgMTI4LCAgNjMsICAgMCwgICAwLCAKLSAgICAgIDAsICAgMCwgIDMxLCAgIDAsICAg
MCwgICAyLCAKLSAgICAgIDAsICAgMCwgICAwLCAxMjgsICAgMCwgICAwLCAKLSAgICAgMTUsIDE0
NCwgICAyLCAgIDAsICAgMCwgICAzLCAKLSAgICAgIDAsICAgMCwgIDE1LCAxOTIsICAgMCwgICAw
LCAKLSAgICAyMjgsIDE0NCwgICAwLCAgIDAsIDIyOCwgMTYwLCAKLSAgICAgIDQsICAgMCwgICAw
LCAgIDQsICAgMCwgICAwLCAKLSAgICAgMTUsIDIyNCwgICAwLCAgIDAsIDIyOCwgMTQ0LCAKLSAg
ICAgIDEsICAgMCwgMTY0LCAxNjAsICAgMSwgICAwLCAKLSAgICAyNDAsIDE2MCwgMjU1LCAyNTUs
ICAgMCwgICAwCi19OworI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIp
IEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLyBQYXJhbWV0ZXJz
Og0KKy8vDQorLy8gICBmbG9hdDQgaGFsZlBpeGVsU2l6ZTsNCisvLw0KKy8vDQorLy8gUmVnaXN0
ZXJzOg0KKy8vDQorLy8gICBOYW1lICAgICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLQ0KKy8vICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQorLy8NCisN
CisgICAgdnNfMl8wDQorICAgIGRlZiBjMSwgMC41LCAtMC41LCAxLCAwDQorICAgIGRjbF9wb3Np
dGlvbiB2MA0KKyAgICBhZGQgb1BvcywgdjAsIGMwDQorICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6
LCBjMS54eHd3DQorDQorLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQN
CisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfdnMyMF9zdGFuZGFyZHZzW10gPQ0KK3sNCisgICAg
ICAwLCAgIDIsIDI1NCwgMjU1LCAyNTQsIDI1NSwgDQorICAgICAzNiwgICAwLCAgNjcsICA4NCwg
IDY1LCAgNjYsIA0KKyAgICAgMjgsICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCisgICAgICAw
LCAgIDAsICAgMCwgICAyLCAyNTQsIDI1NSwgDQorICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4
LCAgIDAsIA0KKyAgICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCANCisgICAgIDgwLCAg
IDAsICAgMCwgICAwLCAgNDgsICAgMCwgDQorICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAg
IDAsIA0KKyAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCisgICAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgDQorICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgwLCAxMDUs
IA0KKyAgICAxMjAsIDEwMSwgMTA4LCAgODMsIDEwNSwgMTIyLCANCisgICAgMTAxLCAgIDAsIDE3
MSwgMTcxLCAgIDEsICAgMCwgDQorICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0K
KyAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCisgICAgICAwLCAgIDAsIDExOCwg
MTE1LCAgOTUsICA1MCwgDQorICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KKyAg
ICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCisgICAgIDMyLCAgNDAsICA4MiwgIDQx
LCAgMzIsICA3MiwgDQorICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KKyAgICAg
OTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCisgICAgMTExLCAxMDksIDExMiwgMTA1LCAx
MDgsIDEwMSwgDQorICAgIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIA0KKyAgICAgNTcs
ICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCANCisgICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAs
IDE3MSwgDQorICAgIDE3MSwgMTcxLCAgODEsICAgMCwgICAwLCAgIDUsIA0KKyAgICAgIDEsICAg
MCwgIDE1LCAxNjAsICAgMCwgICAwLCANCisgICAgICAwLCAgNjMsICAgMCwgICAwLCAgIDAsIDE5
MSwgDQorICAgICAgMCwgICAwLCAxMjgsICA2MywgICAwLCAgIDAsIA0KKyAgICAgIDAsICAgMCwg
IDMxLCAgIDAsICAgMCwgICAyLCANCisgICAgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwg
DQorICAgICAxNSwgMTQ0LCAgIDIsICAgMCwgICAwLCAgIDMsIA0KKyAgICAgIDAsICAgMCwgIDE1
LCAxOTIsICAgMCwgICAwLCANCisgICAgMjI4LCAxNDQsICAgMCwgICAwLCAyMjgsIDE2MCwgDQor
ICAgICAgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsIA0KKyAgICAgMTUsIDIyNCwgICAwLCAg
IDAsIDIyOCwgMTQ0LCANCisgICAgICAxLCAgIDAsIDE2NCwgMTYwLCAgIDEsICAgMCwgDQorICAg
IDI0MCwgMTYwLCAyNTUsIDI1NSwgICAwLCAgIDANCit9Ow0KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2dlbmVyYXRl
X3NoYWRlcnMuYmF0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJhdAkod29ya2luZyBj
b3B5KQpAQCAtMSw2MyArMSw2MyBAQAotQEVDSE8gT0ZGCi1SRU0KLVJFTSBDb3B5cmlnaHQgKGMp
IDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLVJF
TSBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi1SRU0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLVJFTQotCi1Q
QVRIICVQQVRIJTslUHJvZ3JhbUZpbGVzKHg4NiklXFdpbmRvd3MgS2l0c1w4LjFcYmluXHg4Njsl
RFhTREtfRElSJVxVdGlsaXRpZXNcYmluXHg4NgotCi1zZXRsb2NhbAotc2V0IGVycm9yQ291bnQ9
MAotc2V0IHN1Y2Nlc3NDb3VudD0wCi1zZXQgZGVidWc9MAotCi1pZiAiJTEiID09ICJkZWJ1ZyIg
KAotICAgIHNldCBkZWJ1Zz0xCi0pCi1pZiAiJTEiID09ICJyZWxlYXNlIiAoCi0gICAgc2V0IGRl
YnVnPTAKLSkKLQotOjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAgICAgICB8IEVudHJ5
IHBvaW50ICAgICAgICAgICB8IFR5cGUgfCBPdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAg
ICAgIHwgRGVidWcgfAotY2FsbDpCdWlsZFNoYWRlciBCbGl0LnZzICAgICAgICAgICAgICAgc3Rh
bmRhcmR2cyAgICAgICAgICAgICAgdnNfMl8wIGNvbXBpbGVkXHN0YW5kYXJkdnMuaCAgICAgICAg
ICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIEJsaXQudnMgICAgICAgICAgICAgICBm
bGlweXZzICAgICAgICAgICAgICAgICB2c18yXzAgY29tcGlsZWRcZmxpcHl2cy5oICAgICAgICAg
ICAgICAgICAgICVkZWJ1ZyUKLWNhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAgICAgICAgICAgICAg
IHBhc3N0aHJvdWdocHMgICAgICAgICAgIHBzXzJfMCBjb21waWxlZFxwYXNzdGhyb3VnaHBzLmgg
ICAgICAgICAgICAgJWRlYnVnJQotY2FsbDpCdWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAg
ICAgbHVtaW5hbmNlcHMgICAgICAgICAgICAgcHNfMl8wIGNvbXBpbGVkXGx1bWluYW5jZXBzLmgg
ICAgICAgICAgICAgICAlZGVidWclCi1jYWxsOkJ1aWxkU2hhZGVyIEJsaXQucHMgICAgICAgICAg
ICAgICBjb21wb25lbnRtYXNrcHMgICAgICAgICBwc18yXzAgY29tcGlsZWRcY29tcG9uZW50bWFz
a3BzLmggICAgICAgICAgICVkZWJ1ZyUKLQotZWNoby4KLQotaWYgJXN1Y2Nlc3NDb3VudCUgR1RS
IDAgKAotICAgZWNobyAlc3VjY2Vzc0NvdW50JSBzaGFkZXJzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxs
eS4KLSkKLWlmICVlcnJvckNvdW50JSBHVFIgMCAoCi0gICBlY2hvIFRoZXJlIHdlcmUgJWVycm9y
Q291bnQlIHNoYWRlciBjb21waWxhdGlvbiBlcnJvcnMuCi0pCi0KLWVuZGxvY2FsCi1leGl0IC9i
Ci0KLTpCdWlsZFNoYWRlcgotc2V0IGlucHV0PSV+MQotc2V0IGVudHJ5PSV+Mgotc2V0IHR5cGU9
JX4zCi1zZXQgb3V0cHV0PSV+NAotc2V0IGRlYnVnPSV+NQotCi1pZiAlZGVidWclID09IDAgKAot
ICAgIHNldCAiYnVpbGRDTUQ9ZnhjIC9ub2xvZ28gL0UgJWVudHJ5JSAvVCAldHlwZSUgL0ZoICVv
dXRwdXQlICVpbnB1dCUiCi0pIGVsc2UgKAotICAgIHNldCAiYnVpbGRDTUQ9ZnhjIC9ub2xvZ28g
L1ppIC9PZCAvRSAlZW50cnklIC9UICV0eXBlJSAvRmggJW91dHB1dCUgJWlucHV0JSIKLSkKLQot
c2V0IGVycm9yPTAKLSVidWlsZENNRCUgfHwgc2V0IGVycm9yPTEKLQotaWYgJWVycm9yJSA9PSAw
ICgKLSAgICBzZXQgL2Egc3VjY2Vzc0NvdW50PSVzdWNjZXNzQ291bnQlKzEKLSkgZWxzZSAoCi0g
ICAgc2V0IC9hIGVycm9yQ291bnQ9JWVycm9yQ291bnQlKzEKLSkKLQotZXhpdCAvYgorQEVDSE8g
T0ZGDQorUkVNDQorUkVNIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KK1JFTSBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlDQorUkVNIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuDQorUkVNDQorDQorUEFUSCAlUEFUSCU7JVByb2dyYW1GaWxl
cyh4ODYpJVxXaW5kb3dzIEtpdHNcOC4xXGJpblx4ODY7JURYU0RLX0RJUiVcVXRpbGl0aWVzXGJp
blx4ODYNCisNCitzZXRsb2NhbA0KK3NldCBlcnJvckNvdW50PTANCitzZXQgc3VjY2Vzc0NvdW50
PTANCitzZXQgZGVidWc9MA0KKw0KK2lmICIlMSIgPT0gImRlYnVnIiAoDQorICAgIHNldCBkZWJ1
Zz0xDQorKQ0KK2lmICIlMSIgPT0gInJlbGVhc2UiICgNCisgICAgc2V0IGRlYnVnPTANCispDQor
DQorOjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAgICAgICB8IEVudHJ5IHBvaW50ICAg
ICAgICAgICB8IFR5cGUgfCBPdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVi
dWcgfA0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC52cyAgICAgICAgICAgICAgIHN0YW5kYXJkdnMg
ICAgICAgICAgICAgIHZzXzJfMCBjb21waWxlZFxzdGFuZGFyZHZzLmggICAgICAgICAgICAgICAg
JWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC52cyAgICAgICAgICAgICAgIGZsaXB5dnMg
ICAgICAgICAgICAgICAgIHZzXzJfMCBjb21waWxlZFxmbGlweXZzLmggICAgICAgICAgICAgICAg
ICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAgICAgICAgICAgICAgIHBhc3N0
aHJvdWdocHMgICAgICAgICAgIHBzXzJfMCBjb21waWxlZFxwYXNzdGhyb3VnaHBzLmggICAgICAg
ICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAgICAgICAgICAgICAgIGx1
bWluYW5jZXBzICAgICAgICAgICAgIHBzXzJfMCBjb21waWxlZFxsdW1pbmFuY2Vwcy5oICAgICAg
ICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAgICAgICAgICAgICAg
IGNvbXBvbmVudG1hc2twcyAgICAgICAgIHBzXzJfMCBjb21waWxlZFxjb21wb25lbnRtYXNrcHMu
aCAgICAgICAgICAgJWRlYnVnJQ0KKw0KK2VjaG8uDQorDQoraWYgJXN1Y2Nlc3NDb3VudCUgR1RS
IDAgKA0KKyAgIGVjaG8gJXN1Y2Nlc3NDb3VudCUgc2hhZGVycyBjb21waWxlZCBzdWNjZXNzZnVs
bHkuDQorKQ0KK2lmICVlcnJvckNvdW50JSBHVFIgMCAoDQorICAgZWNobyBUaGVyZSB3ZXJlICVl
cnJvckNvdW50JSBzaGFkZXIgY29tcGlsYXRpb24gZXJyb3JzLg0KKykNCisNCitlbmRsb2NhbA0K
K2V4aXQgL2INCisNCis6QnVpbGRTaGFkZXINCitzZXQgaW5wdXQ9JX4xDQorc2V0IGVudHJ5PSV+
Mg0KK3NldCB0eXBlPSV+Mw0KK3NldCBvdXRwdXQ9JX40DQorc2V0IGRlYnVnPSV+NQ0KKw0KK2lm
ICVkZWJ1ZyUgPT0gMCAoDQorICAgIHNldCAiYnVpbGRDTUQ9ZnhjIC9ub2xvZ28gL0UgJWVudHJ5
JSAvVCAldHlwZSUgL0ZoICVvdXRwdXQlICVpbnB1dCUiDQorKSBlbHNlICgNCisgICAgc2V0ICJi
dWlsZENNRD1meGMgL25vbG9nbyAvWmkgL09kIC9FICVlbnRyeSUgL1QgJXR5cGUlIC9GaCAlb3V0
cHV0JSAlaW5wdXQlIg0KKykNCisNCitzZXQgZXJyb3I9MA0KKyVidWlsZENNRCUgfHwgc2V0IGVy
cm9yPTENCisNCitpZiAlZXJyb3IlID09IDAgKA0KKyAgICBzZXQgL2Egc3VjY2Vzc0NvdW50PSVz
dWNjZXNzQ291bnQlKzENCispIGVsc2UgKA0KKyAgICBzZXQgL2EgZXJyb3JDb3VudD0lZXJyb3JD
b3VudCUrMQ0KKykNCisNCitleGl0IC9iDQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3ZlcnRleGNvbnZlcnNpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvdmVydGV4Y29udmVyc2lvbi5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvdmVydGV4Y29udmVy
c2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEwIEBACiAvLyBzdGF0aWMgY29u
c3Qgc3RkOjpzaXplX3QgZmluYWxTaXplOiBudW1iZXIgb2YgYnl0ZXMgcGVyIG91dHB1dCB2ZXJ0
ZXgKIC8vIHN0YXRpYyB2b2lkIGNvbnZlcnRBcnJheShjb25zdCB2b2lkICppbiwgc3RkOjpzaXpl
X3Qgc3RyaWRlLCBzdGQ6OnNpemVfdCBuLCB2b2lkICpvdXQpOiBjb252ZXJ0IGFuIGFycmF5IG9m
IHZlcnRpY2VzLiBJbnB1dCBtYXkgYmUgc3RyaWRlZCwgYnV0IG91dHB1dCB3aWxsIGJlIHVuc3Ry
aWRlZC4KIAotdGVtcGxhdGUgPGNsYXNzIEluVCwgY2xhc3MgV2lkZW5SdWxlLCBjbGFzcyBDb252
ZXJ0ZXIsIGNsYXNzIERlZmF1bHRWYWx1ZVJ1bGUgPSBTaW1wbGVEZWZhdWx0VmFsdWVzPEluVD4g
PgordGVtcGxhdGUgPGNsYXNzIEluVCwKKyAgICAgICAgICBjbGFzcyBXaWRlblJ1bGUsCisgICAg
ICAgICAgY2xhc3MgQ29udmVydGVyLAorICAgICAgICAgIGNsYXNzIERlZmF1bHRWYWx1ZVJ1bGUg
PSBTaW1wbGVEZWZhdWx0VmFsdWVzPEluVD4+CiBzdHJ1Y3QgVmVydGV4RGF0YUNvbnZlcnRlcgog
ewogICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udmVydGVyOjpPdXRwdXRUeXBlIE91dHB1dFR5cGU7
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2Zvcm1hdHV0aWxzRDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmNwcAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9mb3JtYXR1dGlsc0QzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw4ICsxMDYsOCBA
QAogICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0FMUEhBLCAg
ICAgICAgICAgICAgR0xfSEFMRl9GTE9BVF9PRVMsICAgICAgICAgICAgICAgICBXcml0ZUNvbG9y
PEExNkYsIEdMZmxvYXQ+ICAgICAgICAgKTsKIAogICAgIEluc2VydEZvcm1hdFdyaXRlRnVuY3Rp
b25NYXBwaW5nKCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ICAgICAgICAgICAgICAgICBXcml0ZUNvbG9yPEI4RzhSOEE4LCBHTGZsb2F0PiAgICAgKTsKLSAg
ICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9CR1JBX0VYVCwgICAg
ICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCwgV3JpdGVDb2xvcjxCNEc0
UjRBNCwgR0xmbG9hdD4gICAgICk7Ci0gICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBp
bmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF8xXzVfNV81
X1JFVl9FWFQsIFdyaXRlQ29sb3I8QjVHNVI1QTEsIEdMZmxvYXQ+ICAgICApOworICAgIEluc2Vy
dEZvcm1hdFdyaXRlRnVuY3Rpb25NYXBwaW5nKCZtYXAsIEdMX0JHUkFfRVhULCAgICAgICAgICAg
R0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhULCBXcml0ZUNvbG9yPEE0UjRHNEI0LCBH
TGZsb2F0PiAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFw
LCBHTF9CR1JBX0VYVCwgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzFfNV81XzVfUkVWX0VY
VCwgV3JpdGVDb2xvcjxBMVI1RzVCNSwgR0xmbG9hdD4gICAgICk7CiAKICAgICBJbnNlcnRGb3Jt
YXRXcml0ZUZ1bmN0aW9uTWFwcGluZygmbWFwLCBHTF9TUkdCX0VYVCwgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgICAgV3JpdGVDb2xvcjxSOEc4QjgsIEdMZmxvYXQ+
ICAgICAgICk7CiAgICAgSW5zZXJ0Rm9ybWF0V3JpdGVGdW5jdGlvbk1hcHBpbmcoJm1hcCwgR0xf
U1JHQl9BTFBIQV9FWFQsICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIFdy
aXRlQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+ICAgICApOwpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9pbWFnZWZvcm1hdHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2ltYWdlZm9ybWF0cy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2ltYWdlZm9ybWF0cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yODUsNiArMjg1LDggQEAKIAogc3RydWN0IFI1RzZCNQogeworICAgIC8vIE9wZW5H
TCBFUyAyLjAuMjUgc3BlYyBTZWN0aW9uIDMuNi4yOiAiQ29tcG9uZW50cyBhcmUgcGFja2VkIHdp
dGggdGhlIGZpcnN0IGNvbXBvbmVudCBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICAgIC8vIGJp
dHMgb2YgdGhlIGJpdGZpZWxkLCBhbmQgc3VjY2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5aW5nIHBy
b2dyZXNzaXZlbHkgbGVzcyBzaWduaWZpY2FudCBsb2NhdGlvbnMiCiAgICAgdW5zaWduZWQgc2hv
cnQgUkdCOwogCiAgICAgc3RhdGljIHZvaWQgcmVhZENvbG9yKGdsOjpDb2xvckYgKmRzdCwgY29u
c3QgUjVHNkI1ICpzcmMpCkBAIC00OTEsMTYwICs0OTMsMTI2IEBACiAgICAgfQogfTsKIAotc3Ry
dWN0IEI1RzVSNUExCitzdHJ1Y3QgQTFSNUc1QjUKIHsKLSAgICB1bnNpZ25lZCBzaG9ydCBCR1JB
OworICAgIHVuc2lnbmVkIHNob3J0IEFSR0I7CiAKLSAgICBzdGF0aWMgdm9pZCByZWFkQ29sb3Io
Z2w6OkNvbG9yRiAqZHN0LCBjb25zdCBCNUc1UjVBMSAqc3JjKQorICAgIHN0YXRpYyB2b2lkIHJl
YWRDb2xvcihnbDo6Q29sb3JGICpkc3QsIGNvbnN0IEExUjVHNUI1ICpzcmMpCiAgICAgewotICAg
ICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDE+KGdsOjpnZXRTaGlmdGVk
RGF0YTwxLCAxNT4oc3JjLT5CR1JBKSk7Ci0gICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDEwPihzcmMtPkJHUkEpKTsKLSAg
ICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRl
ZERhdGE8NSwgIDU+KHNyYy0+QkdSQSkpOwotICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMD4oc3JjLT5CR1JBKSk7Cisg
ICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8MT4oZ2w6OmdldFNoaWZ0
ZWREYXRhPDEsIDE1PihzcmMtPkFSR0IpKTsKKyAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTA+KHNyYy0+QVJHQikpOwor
ICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlm
dGVkRGF0YTw1LCAgNT4oc3JjLT5BUkdCKSk7CisgICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICAwPihzcmMtPkFSR0IpKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEI1RzVSNUExICpkc3QsIGNvbnN0
IGdsOjpDb2xvckYgKnNyYykKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUNvbG9yKEExUjVHNUI1ICpk
c3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKICAgICB7Ci0gICAgICAgIGRzdC0+QkdSQSA9IGds
OjpzaGlmdERhdGE8MSwgMTU+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDwxLCB1bnNpZ25lZCBzaG9y
dD4oc3JjLT5hbHBoYSkpIHwKKyAgICAgICAgZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTwxLCAx
NT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDEsIHVuc2lnbmVkIHNob3J0PihzcmMtPmFscGhhKSkg
fAogICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDEwPihnbDo6ZmxvYXRUb05v
cm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNyYy0+cmVkKSkgICB8CiAgICAgICAgICAgICAg
ICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDU+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1bnNp
Z25lZCBzaG9ydD4oc3JjLT5ncmVlbikpIHwKICAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0
RGF0YTw1LCAgMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVuc2lnbmVkIHNob3J0PihzcmMt
PmJsdWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhdmVyYWdlKEI1RzVSNUExICpkc3Qs
IGNvbnN0IEI1RzVSNUExICpzcmMxLCBjb25zdCBCNUc1UjVBMSAqc3JjMikKKyAgICBzdGF0aWMg
dm9pZCBhdmVyYWdlKEExUjVHNUI1ICpkc3QsIGNvbnN0IEExUjVHNUI1ICpzcmMxLCBjb25zdCBB
MVI1RzVCNSAqc3JjMikKICAgICB7Ci0gICAgICAgIGRzdC0+QkdSQSA9IGdsOjpzaGlmdERhdGE8
MSwgMTU+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAxNT4oc3JjMS0+QkdSQSks
IGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAxNT4oc3JjMi0+QkdSQSkpKSB8Ci0gICAgICAgICAgICAg
ICAgICAgIGdsOjpzaGlmdERhdGE8NSwgMTA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0
YTw1LCAxMD4oc3JjMS0+QkdSQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAxMD4oc3JjMi0+QkdS
QSkpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDU+KGdsOjphdmVy
YWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgNT4oc3JjMS0+QkdSQSksIGdsOjpnZXRTaGlmdGVk
RGF0YTw1LCAgNT4oc3JjMi0+QkdSQSkpKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlm
dERhdGE8NSwgIDA+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMD4oc3JjMS0+
QkdSQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMD4oc3JjMi0+QkdSQSkpKTsKKyAgICAgICAg
ZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTwxLCAxNT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0
ZWREYXRhPDEsIDE1PihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDEsIDE1PihzcmMy
LT5BUkdCKSkpIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAxMD4oZ2w6
OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDEwPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNo
aWZ0ZWREYXRhPDUsIDEwPihzcmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6
OnNoaWZ0RGF0YTw1LCAgNT4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICA1Pihz
cmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICA1PihzcmMyLT5BUkdCKSkpIHwKKyAg
ICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAgMD4oZ2w6OmF2ZXJhZ2UoZ2w6Omdl
dFNoaWZ0ZWREYXRhPDUsICAwPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDUsICAw
PihzcmMyLT5BUkdCKSkpOwogICAgIH0KIH07CiAKIHN0cnVjdCBSNUc1QjVBMQogeworICAgIC8v
IE9wZW5HTCBFUyAyLjAuMjUgc3BlYyBTZWN0aW9uIDMuNi4yOiAiQ29tcG9uZW50cyBhcmUgcGFj
a2VkIHdpdGggdGhlIGZpcnN0IGNvbXBvbmVudCBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICAg
IC8vIGJpdHMgb2YgdGhlIGJpdGZpZWxkLCBhbmQgc3VjY2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5
aW5nIHByb2dyZXNzaXZlbHkgbGVzcyBzaWduaWZpY2FudCBsb2NhdGlvbnMiCiAgICAgdW5zaWdu
ZWQgc2hvcnQgUkdCQTsKIAogICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpk
c3QsIGNvbnN0IFI1RzVCNUExICpzcmMpCiAgICAgewotICAgICAgICBkc3QtPmFscGhhID0gZ2w6
Om5vcm1hbGl6ZWRUb0Zsb2F0PDE+KGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAxNT4oc3JjLT5SR0JB
KSk7Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6Omdl
dFNoaWZ0ZWREYXRhPDUsIDEwPihzcmMtPlJHQkEpKTsKLSAgICAgICAgZHN0LT5ncmVlbiA9IGds
Ojpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDU+KHNyYy0+UkdC
QSkpOwotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpn
ZXRTaGlmdGVkRGF0YTw1LCAgMD4oc3JjLT5SR0JBKSk7CisgICAgICAgIGRzdC0+cmVkICAgPSBn
bDo6bm9ybWFsaXplZFRvRmxvYXQ8NT4oZ2w6OmdldFNoaWZ0ZWREYXRhPDUsIDExPihzcmMtPlJH
QkEpKTsKKyAgICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw1PihnbDo6
Z2V0U2hpZnRlZERhdGE8NSwgIDY+KHNyYy0+UkdCQSkpOworICAgICAgICBkc3QtPmJsdWUgID0g
Z2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDU+KGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMT4oc3JjLT5S
R0JBKSk7CisgICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8MT4oZ2w6
OmdldFNoaWZ0ZWREYXRhPDEsICAwPihzcmMtPlJHQkEpKTsKICAgICB9CiAKICAgICBzdGF0aWMg
dm9pZCB3cml0ZUNvbG9yKFI1RzVCNUExICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKICAg
ICB7Ci0gICAgICAgIGRzdC0+UkdCQSA9IGdsOjpzaGlmdERhdGE8MSwgMTU+KGdsOjpmbG9hdFRv
Tm9ybWFsaXplZDwxLCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5hbHBoYSkpIHwKLSAgICAgICAgICAg
ICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw1LCAxMD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDUsIHVu
c2lnbmVkIHNob3J0PihzcmMtPmJsdWUpKSAgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hp
ZnREYXRhPDUsICA1PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hvcnQ+KHNy
Yy0+Z3JlZW4pKSB8Ci0gICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwgIDA+KGds
OjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5yZWQpKTsKKyAgICAg
ICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0YTw1LCAxMT4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVk
PDUsIHVuc2lnbmVkIHNob3J0PihzcmMtPnJlZCkpICAgfAorICAgICAgICAgICAgICAgICAgICBn
bDo6c2hpZnREYXRhPDUsICA2PihnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NSwgdW5zaWduZWQgc2hv
cnQ+KHNyYy0+Z3JlZW4pKSB8CisgICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwg
IDE+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw1LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ibHVlKSkg
IHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTwxLCAgMD4oZ2w6OmZsb2F0VG9O
b3JtYWxpemVkPDEsIHVuc2lnbmVkIHNob3J0PihzcmMtPmFscGhhKSk7CiAgICAgfQogCiAgICAg
c3RhdGljIHZvaWQgYXZlcmFnZShSNUc1QjVBMSAqZHN0LCBjb25zdCBSNUc1QjVBMSAqc3JjMSwg
Y29uc3QgUjVHNUI1QTEgKnNyYzIpCiAgICAgewotICAgICAgICBkc3QtPlJHQkEgPSBnbDo6c2hp
ZnREYXRhPDEsIDE1PihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8MSwgMTU+KHNyYzEt
PlJHQkEpLCBnbDo6Z2V0U2hpZnRlZERhdGE8MSwgMTU+KHNyYzItPlJHQkEpKSkgfAotICAgICAg
ICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsIDEwPihnbDo6YXZlcmFnZShnbDo6Z2V0U2hp
ZnRlZERhdGE8NSwgMTA+KHNyYzEtPlJHQkEpLCBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgMTA+KHNy
YzItPlJHQkEpKSkgfAotICAgICAgICAgICAgICAgICAgICBnbDo6c2hpZnREYXRhPDUsICA1Pihn
bDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDU+KHNyYzEtPlJHQkEpLCBnbDo6Z2V0
U2hpZnRlZERhdGE8NSwgIDU+KHNyYzItPlJHQkEpKSkgfAotICAgICAgICAgICAgICAgICAgICBn
bDo6c2hpZnREYXRhPDUsICAwPihnbDo6YXZlcmFnZShnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDA+
KHNyYzEtPlJHQkEpLCBnbDo6Z2V0U2hpZnRlZERhdGE8NSwgIDA+KHNyYzItPlJHQkEpKSk7Cisg
ICAgICAgIGRzdC0+UkdCQSA9IGdsOjpzaGlmdERhdGE8NSwgMTE+KGdsOjphdmVyYWdlKGdsOjpn
ZXRTaGlmdGVkRGF0YTw1LCAxMT4oc3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAx
MT4oc3JjMi0+UkdCQSkpKSB8CisgICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NSwg
IDY+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgNj4oc3JjMS0+UkdCQSksIGds
OjpnZXRTaGlmdGVkRGF0YTw1LCAgNj4oc3JjMi0+UkdCQSkpKSB8CisgICAgICAgICAgICAgICAg
ICAgIGdsOjpzaGlmdERhdGE8NSwgIDE+KGdsOjphdmVyYWdlKGdsOjpnZXRTaGlmdGVkRGF0YTw1
LCAgMT4oc3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0YTw1LCAgMT4oc3JjMi0+UkdCQSkp
KSB8CisgICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8MSwgIDA+KGdsOjphdmVyYWdl
KGdsOjpnZXRTaGlmdGVkRGF0YTwxLCAgMD4oc3JjMS0+UkdCQSksIGdsOjpnZXRTaGlmdGVkRGF0
YTwxLCAgMD4oc3JjMi0+UkdCQSkpKTsKICAgICB9CiB9OwogCiBzdHJ1Y3QgUjRHNEI0QTQKIHsK
LSAgICB1bnNpZ25lZCBjaGFyIFIgOiA0OwotICAgIHVuc2lnbmVkIGNoYXIgRyA6IDQ7Ci0gICAg
dW5zaWduZWQgY2hhciBCIDogNDsKLSAgICB1bnNpZ25lZCBjaGFyIEEgOiA0OworICAgIC8vIE9w
ZW5HTCBFUyAyLjAuMjUgc3BlYyBTZWN0aW9uIDMuNi4yOiAiQ29tcG9uZW50cyBhcmUgcGFja2Vk
IHdpdGggdGhlIGZpcnN0IGNvbXBvbmVudCBpbiB0aGUgbW9zdCBzaWduaWZpY2FudAorICAgIC8v
IGJpdHMgb2YgdGhlIGJpdGZpZWxkLCBhbmQgc3VjY2Vzc2l2ZSBjb21wb25lbnQgb2NjdXB5aW5n
IHByb2dyZXNzaXZlbHkgbGVzcyBzaWduaWZpY2FudCBsb2NhdGlvbnMiCisgICAgdW5zaWduZWQg
c2hvcnQgUkdCQTsKIAogICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IFI0RzRCNEE0ICpzcmMpCiAgICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDQ+KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQ8ND4oc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDw0PihzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0PDQ+KHNyYy0+QSk7CisgICAgICAgIGRzdC0+cmVkICAgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihzcmMtPlJHQkEpKTsKKyAg
ICAgICAgZHN0LT5ncmVlbiA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihnbDo6Z2V0U2hpZnRl
ZERhdGE8NCwgIDg+KHNyYy0+UkdCQSkpOworICAgICAgICBkc3QtPmJsdWUgID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgND4oc3JjLT5SR0JBKSk7Cisg
ICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0
ZWREYXRhPDQsICAwPihzcmMtPlJHQkEpKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKFI0RzRCNEE0ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKICAgICB7Ci0gICAg
ICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBjaGFyPihzcmMt
PnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25l
ZCBjaGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxp
emVkPDQsIHVuc2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBjaGFyPihzcmMtPmFscGhhKTsKKyAgICAgICAg
ZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQs
IHVuc2lnbmVkIHNob3J0PihzcmMtPnJlZCkpICB8CisgICAgICAgICAgICAgICAgICAgIGdsOjpz
aGlmdERhdGE8NCwgIDg+KGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBzaG9ydD4o
c3JjLT5ncmVlbikpIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgND4o
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIHNob3J0PihzcmMtPmJsdWUpKSAgIHwK
KyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgMD4oZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPDQsIHVuc2lnbmVkIHNob3J0PihzcmMtPmFscGhhKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShSNEc0QjRBNCAqZHN0LCBjb25zdCBSNEc0QjRBNCAqc3JjMSwgY29u
c3QgUjRHNEI0QTQgKnNyYzIpCiAgICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShz
cmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywg
c3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIp
OwotICAgICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5BKTsKKyAgICAg
ICAgZHN0LT5SR0JBID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNo
aWZ0ZWREYXRhPDQsIDEyPihzcmMxLT5SR0JBKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihz
cmMyLT5SR0JBKSkpIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgOD4o
Z2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA4PihzcmMxLT5SR0JBKSwgZ2w6Omdl
dFNoaWZ0ZWREYXRhPDQsICA4PihzcmMyLT5SR0JBKSkpIHwKKyAgICAgICAgICAgICAgICAgICAg
Z2w6OnNoaWZ0RGF0YTw0LCAgND4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA0
PihzcmMxLT5SR0JBKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA0PihzcmMyLT5SR0JBKSkpIHwK
KyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgMD4oZ2w6OmF2ZXJhZ2UoZ2w6
OmdldFNoaWZ0ZWREYXRhPDQsICAwPihzcmMxLT5SR0JBKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQs
ICAwPihzcmMyLT5SR0JBKSkpOwogICAgIH0KIH07CiAKIHN0cnVjdCBBNFI0RzRCNAogewotICAg
IHVuc2lnbmVkIGNoYXIgQSA6IDQ7Ci0gICAgdW5zaWduZWQgY2hhciBSIDogNDsKLSAgICB1bnNp
Z25lZCBjaGFyIEcgOiA0OwotICAgIHVuc2lnbmVkIGNoYXIgQiA6IDQ7CisgICAgdW5zaWduZWQg
c2hvcnQgQVJHQjsKIAogICAgIHN0YXRpYyB2b2lkIHJlYWRDb2xvcihnbDo6Q29sb3JGICpkc3Qs
IGNvbnN0IEE0UjRHNEI0ICpzcmMpCiAgICAgewotICAgICAgICBkc3QtPnJlZCAgID0gZ2w6Om5v
cm1hbGl6ZWRUb0Zsb2F0PDQ+KHNyYy0+Uik7Ci0gICAgICAgIGRzdC0+Z3JlZW4gPSBnbDo6bm9y
bWFsaXplZFRvRmxvYXQ8ND4oc3JjLT5HKTsKLSAgICAgICAgZHN0LT5ibHVlICA9IGdsOjpub3Jt
YWxpemVkVG9GbG9hdDw0PihzcmMtPkIpOwotICAgICAgICBkc3QtPmFscGhhID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0PDQ+KHNyYy0+QSk7CisgICAgICAgIGRzdC0+YWxwaGEgPSBnbDo6bm9ybWFs
aXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihzcmMtPkFSR0IpKTsKKyAg
ICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihnbDo6Z2V0U2hpZnRl
ZERhdGE8NCwgIDg+KHNyYy0+QVJHQikpOworICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1h
bGl6ZWRUb0Zsb2F0PDQ+KGdsOjpnZXRTaGlmdGVkRGF0YTw0LCAgND4oc3JjLT5BUkdCKSk7Cisg
ICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oZ2w6OmdldFNoaWZ0
ZWREYXRhPDQsICAwPihzcmMtPkFSR0IpKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCB3cml0
ZUNvbG9yKEE0UjRHNEI0ICpkc3QsIGNvbnN0IGdsOjpDb2xvckYgKnNyYykKICAgICB7Ci0gICAg
ICAgIGRzdC0+UiA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBjaGFyPihzcmMt
PnJlZCk7Ci0gICAgICAgIGRzdC0+RyA9IGdsOjpmbG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25l
ZCBjaGFyPihzcmMtPmdyZWVuKTsKLSAgICAgICAgZHN0LT5CID0gZ2w6OmZsb2F0VG9Ob3JtYWxp
emVkPDQsIHVuc2lnbmVkIGNoYXI+KHNyYy0+Ymx1ZSk7Ci0gICAgICAgIGRzdC0+QSA9IGdsOjpm
bG9hdFRvTm9ybWFsaXplZDw0LCB1bnNpZ25lZCBjaGFyPihzcmMtPmFscGhhKTsKKyAgICAgICAg
ZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQs
IHVuc2lnbmVkIHNob3J0PihzcmMtPmFscGhhKSkgIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6
OnNoaWZ0RGF0YTw0LCAgOD4oZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIHNob3J0
PihzcmMtPnJlZCkpIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgND4o
Z2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIHNob3J0PihzcmMtPmdyZWVuKSkgICB8
CisgICAgICAgICAgICAgICAgICAgIGdsOjpzaGlmdERhdGE8NCwgIDA+KGdsOjpmbG9hdFRvTm9y
bWFsaXplZDw0LCB1bnNpZ25lZCBzaG9ydD4oc3JjLT5ibHVlKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQgYXZlcmFnZShBNFI0RzRCNCAqZHN0LCBjb25zdCBBNFI0RzRCNCAqc3JjMSwgY29u
c3QgQTRSNEc0QjQgKnNyYzIpCiAgICAgewotICAgICAgICBkc3QtPlIgPSBnbDo6YXZlcmFnZShz
cmMxLT5SLCBzcmMyLT5SKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Rywg
c3JjMi0+Ryk7Ci0gICAgICAgIGRzdC0+QiA9IGdsOjphdmVyYWdlKHNyYzEtPkIsIHNyYzItPkIp
OwotICAgICAgICBkc3QtPkEgPSBnbDo6YXZlcmFnZShzcmMxLT5BLCBzcmMyLT5BKTsKKyAgICAg
ICAgZHN0LT5BUkdCID0gZ2w6OnNoaWZ0RGF0YTw0LCAxMj4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNo
aWZ0ZWREYXRhPDQsIDEyPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsIDEyPihz
cmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgOD4o
Z2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA4PihzcmMxLT5BUkdCKSwgZ2w6Omdl
dFNoaWZ0ZWREYXRhPDQsICA4PihzcmMyLT5BUkdCKSkpIHwKKyAgICAgICAgICAgICAgICAgICAg
Z2w6OnNoaWZ0RGF0YTw0LCAgND4oZ2w6OmF2ZXJhZ2UoZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA0
PihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQsICA0PihzcmMyLT5BUkdCKSkpIHwK
KyAgICAgICAgICAgICAgICAgICAgZ2w6OnNoaWZ0RGF0YTw0LCAgMD4oZ2w6OmF2ZXJhZ2UoZ2w6
OmdldFNoaWZ0ZWREYXRhPDQsICAwPihzcmMxLT5BUkdCKSwgZ2w6OmdldFNoaWZ0ZWREYXRhPDQs
ICAwPihzcmMyLT5BUkdCKSkpOwogICAgIH0KIH07CiAKLXN0cnVjdCBCNEc0UjRBNAotewotICAg
IHVuc2lnbmVkIGNoYXIgQiA6IDQ7Ci0gICAgdW5zaWduZWQgY2hhciBHIDogNDsKLSAgICB1bnNp
Z25lZCBjaGFyIFIgOiA0OwotICAgIHVuc2lnbmVkIGNoYXIgQSA6IDQ7Ci0KLSAgICBzdGF0aWMg
dm9pZCByZWFkQ29sb3IoZ2w6OkNvbG9yRiAqZHN0LCBjb25zdCBCNEc0UjRBNCAqc3JjKQotICAg
IHsKLSAgICAgICAgZHN0LT5yZWQgICA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihzcmMtPlIp
OwotICAgICAgICBkc3QtPmdyZWVuID0gZ2w6Om5vcm1hbGl6ZWRUb0Zsb2F0PDQ+KHNyYy0+Ryk7
Ci0gICAgICAgIGRzdC0+Ymx1ZSAgPSBnbDo6bm9ybWFsaXplZFRvRmxvYXQ8ND4oc3JjLT5CKTsK
LSAgICAgICAgZHN0LT5hbHBoYSA9IGdsOjpub3JtYWxpemVkVG9GbG9hdDw0PihzcmMtPkEpOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIHdyaXRlQ29sb3IoQjRHNFI0QTQgKmRzdCwgY29uc3Qg
Z2w6OkNvbG9yRiAqc3JjKQotICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmZsb2F0VG9Ob3Jt
YWxpemVkPDQsIHVuc2lnbmVkIGNoYXI+KHNyYy0+cmVkKTsKLSAgICAgICAgZHN0LT5HID0gZ2w6
OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVkIGNoYXI+KHNyYy0+Z3JlZW4pOwotICAgICAg
ICBkc3QtPkIgPSBnbDo6ZmxvYXRUb05vcm1hbGl6ZWQ8NCwgdW5zaWduZWQgY2hhcj4oc3JjLT5i
bHVlKTsKLSAgICAgICAgZHN0LT5BID0gZ2w6OmZsb2F0VG9Ob3JtYWxpemVkPDQsIHVuc2lnbmVk
IGNoYXI+KHNyYy0+YWxwaGEpOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGF2ZXJhZ2UoQjRH
NFI0QTQgKmRzdCwgY29uc3QgQjRHNFI0QTQgKnNyYzEsIGNvbnN0IEI0RzRSNEE0ICpzcmMyKQot
ICAgIHsKLSAgICAgICAgZHN0LT5SID0gZ2w6OmF2ZXJhZ2Uoc3JjMS0+Uiwgc3JjMi0+Uik7Ci0g
ICAgICAgIGRzdC0+RyA9IGdsOjphdmVyYWdlKHNyYzEtPkcsIHNyYzItPkcpOwotICAgICAgICBk
c3QtPkIgPSBnbDo6YXZlcmFnZShzcmMxLT5CLCBzcmMyLT5CKTsKLSAgICAgICAgZHN0LT5BID0g
Z2w6OmF2ZXJhZ2Uoc3JjMS0+QSwgc3JjMi0+QSk7Ci0gICAgfQotfTsKLQogc3RydWN0IFIxNgog
ewogICAgIHVuc2lnbmVkIHNob3J0IFI7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2Uu
Y3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0OCw2
ICszNDgsMjQgQEAKICAgICB9CiB9CiAKK3ZvaWQgTG9hZFJHQkE0VG9BUkdCNChzaXplX3Qgd2lk
dGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERl
cHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIGZvciAoc2l6
ZV90IHogPSAwOyB6IDwgZGVwdGg7IHorKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkg
PSAwOyB5IDwgaGVpZ2h0OyB5KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQx
Nl90ICpzb3VyY2UgPSBPZmZzZXREYXRhUG9pbnRlcjx1aW50MTZfdD4oaW5wdXQsIHksIHosIGlu
cHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50MTZfdCAqZGVz
dCA9IE9mZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihvdXRwdXQsIHksIHosIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4
IDwgd2lkdGg7IHgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZXN0W3hdID0g
QU5HTEVfUk9UUjE2KHNvdXJjZVt4XSwgNCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIHZvaWQgTG9hZFJHQkE0VG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQsIHNpemVfdCBkZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCiAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
IHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQpAQCAtNDE0LDYgKzQzMiwyNCBAQAogICAgIH0KIH0K
IAordm9pZCBMb2FkUkdCNUExVG9BMVJHQjUoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBz
aXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwgc2l6ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBk
ZXB0aDsgeisrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7
IHkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnNvdXJjZSA9IE9m
ZnNldERhdGFQb2ludGVyPHVpbnQxNl90PihpbnB1dCwgeSwgeiwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQxNl90ICpkZXN0ID0gT2Zmc2V0RGF0YVBv
aW50ZXI8dWludDE2X3Q+KG91dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRo
UGl0Y2gpOworICAgICAgICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlc3RbeF0gPSBBTkdMRV9ST1RSMTYoc291
cmNlW3hdLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBM
b2FkUkdCNUExVG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBp
bnB1dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAogICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1
dERlcHRoUGl0Y2gpCkBAIC00NTgsNyArNDk0LDYgQEAKICAgICB9CiB9CiAKLQogdm9pZCBMb2Fk
QkdSNUExVG9CR1JBOChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1
dFJvd1BpdGNoLCBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAogICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2xvYWRpbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlLmgJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
bG9hZGltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDEwIEBACiAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBpbnB1dFJvd1BpdGNoLCBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAogICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CiAK
K3ZvaWQgTG9hZFJHQkE0VG9BUkdCNChzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVf
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwgc2l6
ZV90IGlucHV0Um93UGl0Y2gsIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKTsKKwogdm9pZCBMb2FkUkdCQTRUb0JHUkE4KHNpemVfdCB3aWR0aCwg
c2l6ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQ
aXRjaCwKICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwpAQCAtMTA4LDYgKzExMiwxMCBA
QAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5w
dXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOwogCit2b2lkIExvYWRSR0I1QTFUb0ExUkdCNShzaXplX3Qgd2lkdGgsIHNpemVf
dCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRjaCwgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLCBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKIHZvaWQgTG9hZFJHQjVBMVRv
QkdSQTgoc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0LCBzaXplX3QgZGVwdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3QgaW5wdXRSb3dQaXRj
aCwgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf
dCAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvbG9hZGltYWdlX2V0Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1hZ2VfZXRjLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
bG9hZGltYWdlX2V0Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTA0IEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBsb2FkaW1hZ2VfZXRjLmNwcDogRGVjb2RlcyBFVEMgYW5kIEVB
QyBlbmNvZGVkIHRleHR1cmVzLgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2xv
YWRpbWFnZV9ldGMuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9sb2FkaW1h
Z2UuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvaW1hZ2Vmb3JtYXRzLmgiCisK
K25hbWVzcGFjZSByeAoreworbmFtZXNwYWNlCit7CisvLyBUYWJsZSAzLjE3LjIgc29ydGVkIGFj
Y29yZGluZyB0byB0YWJsZSAzLjE3LjMKKy8vIGNsYW5nLWZvcm1hdCBvZmYKK3N0YXRpYyBjb25z
dCBpbnQgaW50ZW5zaXR5TW9kaWZpZXJEZWZhdWx0W11bNF0gPQoreworICAgIHsgIDIsICAgOCwg
IC0yLCAgIC04IH0sCisgICAgeyAgNSwgIDE3LCAgLTUsICAtMTcgfSwKKyAgICB7ICA5LCAgMjks
ICAtOSwgIC0yOSB9LAorICAgIHsgMTMsICA0MiwgLTEzLCAgLTQyIH0sCisgICAgeyAxOCwgIDYw
LCAtMTgsICAtNjAgfSwKKyAgICB7IDI0LCAgODAsIC0yNCwgIC04MCB9LAorICAgIHsgMzMsIDEw
NiwgLTMzLCAtMTA2IH0sCisgICAgeyA0NywgMTgzLCAtNDcsIC0xODMgfSwKK307CisvLyBjbGFu
Zy1mb3JtYXQgb24KKworLy8gVGFibGUgQy4xMiwgaW50ZW5zaXR5IG1vZGlmaWVyIGZvciBub24g
b3BhcXVlIHB1bmNodGhyb3VnaCBhbHBoYQorLy8gY2xhbmctZm9ybWF0IG9mZgorc3RhdGljIGNv
bnN0IGludCBpbnRlbnNpdHlNb2RpZmllck5vbk9wYXF1ZVtdWzRdID0KK3sKKyAgICB7IDAsICAg
OCwgMCwgICAtOCB9LAorICAgIHsgMCwgIDE3LCAwLCAgLTE3IH0sCisgICAgeyAwLCAgMjksIDAs
ICAtMjkgfSwKKyAgICB7IDAsICA0MiwgMCwgIC00MiB9LAorICAgIHsgMCwgIDYwLCAwLCAgLTYw
IH0sCisgICAgeyAwLCAgODAsIDAsICAtODAgfSwKKyAgICB7IDAsIDEwNiwgMCwgLTEwNiB9LAor
ICAgIHsgMCwgMTgzLCAwLCAtMTgzIH0sCit9OworLy8gY2xhbmctZm9ybWF0IG9uCisKK3N0cnVj
dCBFVEMyQmxvY2sKK3sKKyAgICAvLyBEZWNvZGVzIHVuc2lnbmVkIHNpbmdsZSBvciBkdWFsIGNo
YW5uZWwgYmxvY2sgdG8gYnl0ZXMKKyAgICB2b2lkIGRlY29kZUFzU2luZ2xlQ2hhbm5lbCh1aW50
OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0UGl4ZWxT
dHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU2lnbmVkKSBjb25zdAor
ICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBq
KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgKnJvdyA9IGRlc3QgKyAoaiAqIGRl
c3RSb3dQaXRjaCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQgJiYgKHgg
KyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpw
aXhlbCA9IHJvdyArIChpICogZGVzdFBpeGVsU3RyaWRlKTsKKyAgICAgICAgICAgICAgICBpZiAo
aXNTaWduZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAqcGl4ZWwg
PSBjbGFtcFNCeXRlKGdldFNpbmdsZUNoYW5uZWwoaSwgaiwgaXNTaWduZWQpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgKnBpeGVsID0gY2xhbXBCeXRlKGdldFNpbmdsZUNoYW5uZWwoaSwgaiwg
aXNTaWduZWQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBEZWNvZGVzIFJHQiBibG9jayB0byByZ2JhOAorICAgIHZvaWQgZGVj
b2RlQXNSR0IodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAor
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgdywKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAgICBib29sIHB1bmNoVGhy
b3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgYm9vbCBvcGFxdWVCaXQgICAgICAgICAg
ICAgICAgICA9IHUuaWRodC5tb2RlLmlkbS5kaWZmYml0OworICAgICAgICBib29sIG5vbk9wYXF1
ZVB1bmNoVGhyb3VnaEFscGhhID0gcHVuY2hUaHJvdWdoQWxwaGEgJiYgIW9wYXF1ZUJpdDsKKyAg
ICAgICAgLy8gU2VsZWN0IG1vZGUKKyAgICAgICAgaWYgKHUuaWRodC5tb2RlLmlkbS5kaWZmYml0
IHx8IHB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBhdXRv
ICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xvcnMuZGlmZjsKKyAgICAgICAgICAgIGludCBy
ICAgICAgICAgICAgID0gKGJsb2NrLlIgKyBibG9jay5kUik7CisgICAgICAgICAgICBpbnQgZyAg
ICAgICAgICAgICA9IChibG9jay5HICsgYmxvY2suZEcpOworICAgICAgICAgICAgaW50IGIgPSAo
YmxvY2suQiArIGJsb2NrLmRCKTsKKyAgICAgICAgICAgIGlmIChyIDwgMCB8fCByID4gMzEpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVjb2RlVEJsb2NrKGRlc3QsIHgsIHksIHcs
IGgsIGRlc3RSb3dQaXRjaCwgYWxwaGFWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGVsc2UgaWYgKGcgPCAwIHx8IGcgPiAzMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWNvZGVIQmxvY2soZGVzdCwgeCwgeSwgdywgaCwgZGVzdFJvd1BpdGNoLCBhbHBoYVZh
bHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdo
QWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYiA8IDAgfHwgYiA+
IDMxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlY29kZVBsYW5hckJsb2NrKGRl
c3QsIHgsIHksIHcsIGgsIGRlc3RSb3dQaXRjaCwgYWxwaGFWYWx1ZXMpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlY29k
ZURpZmZlcmVudGlhbEJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRlc3RSb3dQaXRjaCwgYWxwaGFW
YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uT3BhcXVl
UHVuY2hUaHJvdWdoQWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgZGVjb2RlSW5kaXZpZHVhbEJsb2NrKGRlc3QsIHgs
IHksIHcsIGgsIGRlc3RSb3dQaXRjaCwgYWxwaGFWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gVHJhbnNjb2RlcyBSR0IgYmxvY2sgdG8gQkMxCisgICAgdm9pZCB0cmFu
c2NvZGVBc0JDMSh1aW50OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHgsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7
CisgICAgICAgIGJvb2wgb3BhcXVlQml0ICAgICAgICAgICAgICAgICAgPSB1LmlkaHQubW9kZS5p
ZG0uZGlmZmJpdDsKKyAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSA9IHB1
bmNoVGhyb3VnaEFscGhhICYmICFvcGFxdWVCaXQ7CisgICAgICAgIC8vIFNlbGVjdCBtb2RlCisg
ICAgICAgIGlmICh1LmlkaHQubW9kZS5pZG0uZGlmZmJpdCB8fCBwdW5jaFRocm91Z2hBbHBoYSkK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgYXV0byAmYmxvY2sgPSB1LmlkaHQubW9kZS5p
ZG0uY29sb3JzLmRpZmY7CisgICAgICAgICAgICBpbnQgciAgICAgICAgICAgICA9IChibG9jay5S
ICsgYmxvY2suZFIpOworICAgICAgICAgICAgaW50IGcgICAgICAgICAgICAgPSAoYmxvY2suRyAr
IGJsb2NrLmRHKTsKKyAgICAgICAgICAgIGludCBiID0gKGJsb2NrLkIgKyBibG9jay5kQik7Cisg
ICAgICAgICAgICBpZiAociA8IDAgfHwgciA+IDMxKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHRyYW5zY29kZVRCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIGFscGhhVmFsdWVz
LCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChnIDwgMCB8fCBnID4gMzEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgdHJhbnNjb2RlSEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFWYWx1ZXMsIG5v
bk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgaWYgKGIgPCAwIHx8IGIgPiAzMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0
cmFuc2NvZGVQbGFuYXJCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgsIGFscGhhVmFsdWVzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB0cmFuc2NvZGVEaWZmZXJlbnRpYWxCbG9ja1RvQkMxKGRlc3QsIHgsIHksIHcsIGgs
IGFscGhhVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgdHJhbnNjb2RlSW5kaXZp
ZHVhbEJsb2NrVG9CQzEoZGVzdCwgeCwgeSwgdywgaCwgYWxwaGFWYWx1ZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBo
YSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICB1bmlvbgorICAgIHsKKyAg
ICAgICAgLy8gSW5kaXZpZHVhbCwgZGlmZmVyZW50aWFsLCBIIGFuZCBUIG1vZGVzCisgICAgICAg
IHN0cnVjdAorICAgICAgICB7CisgICAgICAgICAgICB1bmlvbgorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8vIEluZGl2aWR1YWwgYW5kIGRpZmZlcmVudGlhbCBtb2RlcworICAgICAg
ICAgICAgICAgIHN0cnVjdAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dW5pb24KKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0ICAvLyBJbmRpdmlkdWFsIGNvbG9ycworICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUjIgOiA0OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUjEgOiA0OworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRzIgOiA0OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgRzEgOiA0OworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgQjIgOiA0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgQjEgOiA0OworICAgICAgICAgICAgICAgICAgICAgICAgfSBpbmRpdjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCAgLy8gRGlmZmVyZW50aWFsIGNvbG9ycworICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBj
aGFyIGRSIDogMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFIg
OiA1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyIGRHIDogMzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEcgOiA1OworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpZ25lZCBjaGFyIGRCIDogMzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEIgOiA1OworICAgICAgICAgICAgICAgICAgICAgICAg
fSBkaWZmOworICAgICAgICAgICAgICAgICAgICB9IGNvbG9yczsKKyAgICAgICAgICAgICAgICAg
ICAgYm9vbCBmbGlwYml0IDogMTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBkaWZmYml0IDog
MTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjdzIgOiAzOworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGN3MSA6IDM7CisgICAgICAgICAgICAgICAgfSBpZG07
CisgICAgICAgICAgICAgICAgLy8gVCBtb2RlCisgICAgICAgICAgICAgICAgc3RydWN0CisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDEKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBUUjFiIDogMjsKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBUZHVtbXlCIDogMTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBUUjFhIDogMjsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBUZHVtbXlBIDog
MzsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAyCisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgVEIxIDogNDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBU
RzEgOiA0OworICAgICAgICAgICAgICAgICAgICAvLyBCeXRlIDMKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBURzIgOiA0OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIFRSMiA6IDQ7CisgICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgNAorICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIFRkYiA6IDE7CisgICAgICAgICAgICAgICAgICAgIGJvb2wg
VGZsaXBiaXQgOiAxOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFRkYSA6IDI7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgVEIyIDogNDsKKyAgICAgICAgICAg
ICAgICB9IHRtOworICAgICAgICAgICAgICAgIC8vIEggbW9kZQorICAgICAgICAgICAgICAgIHN0
cnVjdAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAxCisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSEcxYSA6IDM7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGNoYXIgSFIxIDogNDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBIZHVtbXlBIDogMTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnl0ZSAyCisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSEIxYiA6IDI7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgSGR1bW15QyA6IDE7CisgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgSEIxYSA6IDE7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSEcx
YiA6IDE7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSGR1bW15QiA6IDM7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEJ5dGUgMworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIEhHMmEgOiAzOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhSMiA6
IDQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgSEIxYyA6IDE7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEJ5dGUgNAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy
IEhkYiA6IDE7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgSGZsaXBiaXQgOiAxOworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEhkYSA6IDE7CisgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgSEIyIDogNDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBIRzJiIDogMTsKKyAgICAgICAgICAgICAgICB9IGhtOworICAgICAgICAgICAgfSBtb2RlOwor
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwaXhlbEluZGV4TVNCWzJdOworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBwaXhlbEluZGV4TFNCWzJdOworICAgICAgICB9IGlkaHQ7CisgICAgICAg
IC8vIHBsYW5hciBtb2RlCisgICAgICAgIHN0cnVjdAorICAgICAgICB7CisgICAgICAgICAgICAv
LyBCeXRlIDEKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgR08xIDogMTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgUk8gOiA2OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBQZHVtbXlB
IDogMTsKKyAgICAgICAgICAgIC8vIEJ5dGUgMgorICAgICAgICAgICAgdW5zaWduZWQgY2hhciBC
TzEgOiAxOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBHTzIgOiA2OworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBQZHVtbXlCIDogMTsKKyAgICAgICAgICAgIC8vIEJ5dGUgMworICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBCTzNhIDogMjsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIg
UGR1bW15RCA6IDE7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJPMiA6IDI7CisgICAgICAg
ICAgICB1bnNpZ25lZCBjaGFyIFBkdW1teUMgOiAzOworICAgICAgICAgICAgLy8gQnl0ZSA0Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFJIMiA6IDE7CisgICAgICAgICAgICBib29sIFBmbGlw
Yml0IDogMTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgUkgxIDogNTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgQk8zYiA6IDE7CisgICAgICAgICAgICAvLyBCeXRlIDUKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgQkhhIDogMTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgR0gg
OiA3OworICAgICAgICAgICAgLy8gQnl0ZSA2CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIFJW
YSA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJIYiA6IDU7CisgICAgICAgICAgICAv
LyBCeXRlIDcKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgR1ZhIDogNTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGNoYXIgUlZiIDogMzsKKyAgICAgICAgICAgIC8vIEJ5dGUgOAorICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBCViA6IDY7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEdWYiA6
IDI7CisgICAgICAgIH0gcGJsazsKKyAgICAgICAgLy8gU2luZ2xlIGNoYW5uZWwgYmxvY2sKKyAg
ICAgICAgc3RydWN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuaW9uCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1czsKKyAgICAgICAgICAgICAgICBzaWdu
ZWQgY2hhciBzOworICAgICAgICAgICAgfSBiYXNlX2NvZGV3b3JkOworICAgICAgICAgICAgdW5z
aWduZWQgY2hhciB0YWJsZV9pbmRleCA6IDQ7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG11
bHRpcGxpZXIgOiA0OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtYzEgOiAyOworICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBtYiA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1h
IDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWYxIDogMTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIgbWUgOiAzOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtZCA6IDM7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1jMiA6IDE7CisgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIG1oIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbWcgOiAzOworICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBtZjIgOiAyOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtazEg
OiAyOworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtaiA6IDM7CisgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIG1pIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbW4xIDogMTsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbW0gOiAzOworICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBtbCA6IDM7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG1rMiA6IDE7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIG1wIDogMzsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbW8gOiAz
OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBtbjIgOiAyOworICAgICAgICB9IHNjYmxrOwor
ICAgIH0gdTsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNsYW1wQnl0ZShpbnQgdmFsdWUp
CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZ2w6OmNs
YW1wKHZhbHVlLCAwLCAyNTUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2lnbmVkIGNoYXIgY2xh
bXBTQnl0ZShpbnQgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2ln
bmVkIGNoYXI+KGdsOjpjbGFtcCh2YWx1ZSwgLTEyOCwgMTI3KSk7CisgICAgfQorCisgICAgc3Rh
dGljIFI4RzhCOEE4IGNyZWF0ZVJHQkEoaW50IHJlZCwgaW50IGdyZWVuLCBpbnQgYmx1ZSwgaW50
IGFscGhhKQorICAgIHsKKyAgICAgICAgUjhHOEI4QTggcmdiYTsKKyAgICAgICAgcmdiYS5SID0g
Y2xhbXBCeXRlKHJlZCk7CisgICAgICAgIHJnYmEuRyA9IGNsYW1wQnl0ZShncmVlbik7CisgICAg
ICAgIHJnYmEuQiA9IGNsYW1wQnl0ZShibHVlKTsKKyAgICAgICAgcmdiYS5BID0gY2xhbXBCeXRl
KGFscGhhKTsKKyAgICAgICAgcmV0dXJuIHJnYmE7CisgICAgfQorCisgICAgc3RhdGljIFI4RzhC
OEE4IGNyZWF0ZVJHQkEoaW50IHJlZCwgaW50IGdyZWVuLCBpbnQgYmx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjcmVhdGVSR0JBKHJlZCwgZ3JlZW4sIGJsdWUsIDI1NSk7CisgICAgfQorCisg
ICAgc3RhdGljIGludCBleHRlbmRfNHRvOGJpdHMoaW50IHgpIHsgcmV0dXJuICh4IDw8IDQpIHwg
eDsgfQorICAgIHN0YXRpYyBpbnQgZXh0ZW5kXzV0bzhiaXRzKGludCB4KSB7IHJldHVybiAoeCA8
PCAzKSB8ICh4ID4+IDIpOyB9CisgICAgc3RhdGljIGludCBleHRlbmRfNnRvOGJpdHMoaW50IHgp
IHsgcmV0dXJuICh4IDw8IDIpIHwgKHggPj4gNCk7IH0KKyAgICBzdGF0aWMgaW50IGV4dGVuZF83
dG84Yml0cyhpbnQgeCkgeyByZXR1cm4gKHggPDwgMSkgfCAoeCA+PiA2KTsgfQorCisgICAgdm9p
ZCBkZWNvZGVJbmRpdmlkdWFsQmxvY2sodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVzdFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAg
ICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRtLmNvbG9ycy5p
bmRpdjsKKyAgICAgICAgaW50IHIxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2su
UjEpOworICAgICAgICBpbnQgZzEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhibG9jay5H
MSk7CisgICAgICAgIGludCBiMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkIx
KTsKKyAgICAgICAgaW50IHIyICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suUjIp
OworICAgICAgICBpbnQgZzIgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhibG9jay5HMik7
CisgICAgICAgIGludCBiMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5CMik7CisgICAgICAgIGRl
Y29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRlc3RS
b3dQaXRjaCwgcjEsIGcxLCBiMSwgcjIsIGcyLCBiMiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFs
cGhhKTsKKyAgICB9CisKKyAgICB2b2lkIGRlY29kZURpZmZlcmVudGlhbEJsb2NrKHVpbnQ4X3Qg
KmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0
Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIGNvbnN0
IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaWRtLmNvbG9ycy5kaWZmOworICAgICAgICBpbnQg
YjEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5CKTsKKyAgICAgICAgaW50IGcx
ICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suRyk7CisgICAgICAgIGludCByMSAg
ICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLlIpOworICAgICAgICBpbnQgcjIgICAg
ICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5SICsgYmxvY2suZFIpOworICAgICAgICBp
bnQgZzIgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5HICsgYmxvY2suZEcpOwor
ICAgICAgICBpbnQgYjIgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suQiArIGJsb2NrLmRCKTsKKyAg
ICAgICAgZGVjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFsQmxvY2soZGVzdCwgeCwgeSwgdywg
aCwgZGVzdFJvd1BpdGNoLCByMSwgZzEsIGIxLCByMiwgZzIsIGIyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVZhbHVlcywgbm9uT3BhcXVlUHVuY2hU
aHJvdWdoQWxwaGEpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlSW5kaXZpZHVhbE9yRGlmZmVy
ZW50aWFsQmxvY2sodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGRlc3RSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCByMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBnMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBiMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCByMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBnMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhh
KSBjb25zdAorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byBpbnRlbnNpdHlNb2RpZmllciA9Cisg
ICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSA/IGludGVuc2l0eU1vZGlmaWVy
Tm9uT3BhcXVlIDogaW50ZW5zaXR5TW9kaWZpZXJEZWZhdWx0OworCisgICAgICAgIFI4RzhCOEE4
IHN1YmJsb2NrQ29sb3JzMFs0XTsKKyAgICAgICAgUjhHOEI4QTggc3ViYmxvY2tDb2xvcnMxWzRd
OworICAgICAgICBmb3IgKHNpemVfdCBtb2RpZmllcklkeCA9IDA7IG1vZGlmaWVySWR4IDwgNDsg
bW9kaWZpZXJJZHgrKykKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgaW50IGkxICAgICAg
ICAgICAgICAgICA9IGludGVuc2l0eU1vZGlmaWVyW3UuaWRodC5tb2RlLmlkbS5jdzFdW21vZGlm
aWVySWR4XTsKKyAgICAgICAgICAgIHN1YmJsb2NrQ29sb3JzMFttb2RpZmllcklkeF0gPSBjcmVh
dGVSR0JBKHIxICsgaTEsIGcxICsgaTEsIGIxICsgaTEpOworCisgICAgICAgICAgICBjb25zdCBp
bnQgaTIgICAgICAgICAgICAgICAgID0gaW50ZW5zaXR5TW9kaWZpZXJbdS5pZGh0Lm1vZGUuaWRt
LmN3Ml1bbW9kaWZpZXJJZHhdOworICAgICAgICAgICAgc3ViYmxvY2tDb2xvcnMxW21vZGlmaWVy
SWR4XSA9IGNyZWF0ZVJHQkEocjIgKyBpMiwgZzIgKyBpMiwgYjIgKyBpMik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodS5pZGh0Lm1vZGUuaWRtLmZsaXBiaXQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgMiAmJiAoeSArIGopIDwgaDsgaisrKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+KGN1
clBpeGVsKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQgJiYgKHgg
KyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJv
d1tpXSAgID0gc3ViYmxvY2tDb2xvcnMwW2dldEluZGV4KGksIGopXTsKKyAgICAgICAgICAgICAg
ICAgICAgcm93W2ldLkEgPSBhbHBoYVZhbHVlc1tqXVtpXTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDI7IGogPCA0ICYmICh5ICsgaikgPCBoOyBqKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UjhHOEI4QTggKj4oY3VyUGl4ZWwpOworICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgNCAmJiAoeCArIGkpIDwgdzsgaSsrKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcm93W2ldICAgPSBzdWJibG9ja0NvbG9yczFbZ2V0SW5kZXgo
aSwgaildOworICAgICAgICAgICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ld
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93
UGl0Y2g7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICB1aW50OF90ICpjdXJQaXhlbCA9IGRlc3Q7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0gcmVpbnRlcnByZXRfY2FzdDxSOEc4QjhB
OCAqPihjdXJQaXhlbCk7CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICByb3dbaV0gICA9IHN1YmJsb2NrQ29sb3JzMFtnZXRJbmRleChpLCBqKV07CisgICAgICAg
ICAgICAgICAgICAgIHJvd1tpXS5BID0gYWxwaGFWYWx1ZXNbal1baV07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAyOyBpIDwgNCAmJiAoeCArIGkp
IDwgdzsgaSsrKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcm93W2ld
ICAgPSBzdWJibG9ja0NvbG9yczFbZ2V0SW5kZXgoaSwgaildOworICAgICAgICAgICAgICAgICAg
ICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjdXJQaXhlbCArPSBkZXN0Um93UGl0Y2g7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWNvZGVQdW5jaFRocm91Z2hBbHBoYUJsb2NrKGRlc3QsIHgsIHksIHcs
IGgsIGRlc3RSb3dQaXRjaCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRlY29kZVRC
bG9jayh1aW50OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCB3LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9w
YXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVGFibGUgQy44
LCBkaXN0YW5jZSBpbmRleCBmb3IgVCBhbmQgSCBtb2RlcworICAgICAgICBjb25zdCBhdXRvICZi
bG9jayA9IHUuaWRodC5tb2RlLnRtOworCisgICAgICAgIGludCByMSA9IGV4dGVuZF80dG84Yml0
cyhibG9jay5UUjFhIDw8IDIgfCBibG9jay5UUjFiKTsKKyAgICAgICAgaW50IGcxID0gZXh0ZW5k
XzR0bzhiaXRzKGJsb2NrLlRHMSk7CisgICAgICAgIGludCBiMSA9IGV4dGVuZF80dG84Yml0cyhi
bG9jay5UQjEpOworICAgICAgICBpbnQgcjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVFIyKTsK
KyAgICAgICAgaW50IGcyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRHMik7CisgICAgICAgIGlu
dCBiMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5UQjIpOworCisgICAgICAgIHN0YXRpYyBpbnQg
ZGlzdGFuY2VbOF0gPSB7MywgNiwgMTEsIDE2LCAyMywgMzIsIDQxLCA2NH07CisgICAgICAgIGNv
bnN0IGludCBkICAgICAgICAgICAgPSBkaXN0YW5jZVtibG9jay5UZGEgPDwgMSB8IGJsb2NrLlRk
Yl07CisKKyAgICAgICAgY29uc3QgUjhHOEI4QTggcGFpbnRDb2xvcnNbNF0gPSB7CisgICAgICAg
ICAgICBjcmVhdGVSR0JBKHIxLCBnMSwgYjEpLCBjcmVhdGVSR0JBKHIyICsgZCwgZzIgKyBkLCBi
MiArIGQpLCBjcmVhdGVSR0JBKHIyLCBnMiwgYjIpLAorICAgICAgICAgICAgY3JlYXRlUkdCQShy
MiAtIGQsIGcyIC0gZCwgYjIgLSBkKSwKKyAgICAgICAgfTsKKworICAgICAgICB1aW50OF90ICpj
dXJQaXhlbCA9IGRlc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAoeSAr
IGopIDwgaDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0gcmVp
bnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByb3dbaV0gICA9IHBhaW50Q29sb3JzW2dldEluZGV4KGksIGopXTsKKyAg
ICAgICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWNvZGVQdW5jaFRocm91Z2hBbHBoYUJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRlc3RS
b3dQaXRjaCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRlY29kZUhCbG9jayh1aW50
OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXN0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBo
YVZhbHVlc1s0XVs0XSwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIG5vbk9wYXF1ZVB1bmNo
VGhyb3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gVGFibGUgQy44LCBkaXN0YW5j
ZSBpbmRleCBmb3IgVCBhbmQgSCBtb2RlcworICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUu
aWRodC5tb2RlLmhtOworCisgICAgICAgIGludCByMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5I
UjEpOworICAgICAgICBpbnQgZzEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSEcxYSA8PCAxIHwg
YmxvY2suSEcxYik7CisgICAgICAgIGludCBiMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5IQjFh
IDw8IDMgfCBibG9jay5IQjFiIDw8IDEgfCBibG9jay5IQjFjKTsKKyAgICAgICAgaW50IHIyID0g
ZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhSMik7CisgICAgICAgIGludCBnMiA9IGV4dGVuZF80dG84
Yml0cyhibG9jay5IRzJhIDw8IDEgfCBibG9jay5IRzJiKTsKKyAgICAgICAgaW50IGIyID0gZXh0
ZW5kXzR0bzhiaXRzKGJsb2NrLkhCMik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBkaXN0
YW5jZVs4XSA9IHszLCA2LCAxMSwgMTYsIDIzLCAzMiwgNDEsIDY0fTsKKyAgICAgICAgY29uc3Qg
aW50IGQgPSBkaXN0YW5jZVsoYmxvY2suSGRhIDw8IDIpIHwgKGJsb2NrLkhkYiA8PCAxKSB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyMSA8PCAxNiB8IGcxIDw8IDggfCBiMSkg
Pj0gKHIyIDw8IDE2IHwgZzIgPDwgOCB8IGIyKSA/IDEgOiAwKV07CisKKyAgICAgICAgY29uc3Qg
UjhHOEI4QTggcGFpbnRDb2xvcnNbNF0gPSB7CisgICAgICAgICAgICBjcmVhdGVSR0JBKHIxICsg
ZCwgZzEgKyBkLCBiMSArIGQpLCBjcmVhdGVSR0JBKHIxIC0gZCwgZzEgLSBkLCBiMSAtIGQpLAor
ICAgICAgICAgICAgY3JlYXRlUkdCQShyMiArIGQsIGcyICsgZCwgYjIgKyBkKSwgY3JlYXRlUkdC
QShyMiAtIGQsIGcyIC0gZCwgYjIgLSBkKSwKKyAgICAgICAgfTsKKworICAgICAgICB1aW50OF90
ICpjdXJQaXhlbCA9IGRlc3Q7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgNCAmJiAo
eSArIGopIDwgaDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBSOEc4QjhBOCAqcm93ID0g
cmVpbnRlcnByZXRfY2FzdDxSOEc4QjhBOCAqPihjdXJQaXhlbCk7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDQgJiYgKHggKyBpKSA8IHc7IGkrKykKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByb3dbaV0gICA9IHBhaW50Q29sb3JzW2dldEluZGV4KGksIGopXTsK
KyAgICAgICAgICAgICAgICByb3dbaV0uQSA9IGFscGhhVmFsdWVzW2pdW2ldOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY3VyUGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWNvZGVQdW5jaFRocm91Z2hBbHBoYUJsb2NrKGRlc3QsIHgsIHksIHcsIGgsIGRl
c3RSb3dQaXRjaCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGRlY29kZVBsYW5hckJs
b2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0pIGNvbnN0CisgICAg
eworICAgICAgICBpbnQgcm8gPSBleHRlbmRfNnRvOGJpdHModS5wYmxrLlJPKTsKKyAgICAgICAg
aW50IGdvID0gZXh0ZW5kXzd0bzhiaXRzKHUucGJsay5HTzEgPDwgNiB8IHUucGJsay5HTzIpOwor
ICAgICAgICBpbnQgYm8gPQorICAgICAgICAgICAgZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5CTzEg
PDwgNSB8IHUucGJsay5CTzIgPDwgMyB8IHUucGJsay5CTzNhIDw8IDEgfCB1LnBibGsuQk8zYik7
CisgICAgICAgIGludCByaCA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuUkgxIDw8IDEgfCB1LnBi
bGsuUkgyKTsKKyAgICAgICAgaW50IGdoID0gZXh0ZW5kXzd0bzhiaXRzKHUucGJsay5HSCk7Cisg
ICAgICAgIGludCBiaCA9IGV4dGVuZF82dG84Yml0cyh1LnBibGsuQkhhIDw8IDUgfCB1LnBibGsu
QkhiKTsKKyAgICAgICAgaW50IHJ2ID0gZXh0ZW5kXzZ0bzhiaXRzKHUucGJsay5SVmEgPDwgMyB8
IHUucGJsay5SVmIpOworICAgICAgICBpbnQgZ3YgPSBleHRlbmRfN3RvOGJpdHModS5wYmxrLkdW
YSA8PCAyIHwgdS5wYmxrLkdWYik7CisgICAgICAgIGludCBidiA9IGV4dGVuZF82dG84Yml0cyh1
LnBibGsuQlYpOworCisgICAgICAgIHVpbnQ4X3QgKmN1clBpeGVsID0gZGVzdDsKKyAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCA0ICYmICh5ICsgaikgPCBoOyBqKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIFI4RzhCOEE4ICpyb3cgPSByZWludGVycHJldF9jYXN0PFI4RzhCOEE4ICo+
KGN1clBpeGVsKTsKKworICAgICAgICAgICAgaW50IHJ5ID0gc3RhdGljX2Nhc3Q8aW50PihqKSAq
IChydiAtIHJvKSArIDI7CisgICAgICAgICAgICBpbnQgZ3kgPSBzdGF0aWNfY2FzdDxpbnQ+KGop
ICogKGd2IC0gZ28pICsgMjsKKyAgICAgICAgICAgIGludCBieSA9IHN0YXRpY19jYXN0PGludD4o
aikgKiAoYnYgLSBibykgKyAyOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcm93
W2ldID0gY3JlYXRlUkdCQSgoKHN0YXRpY19jYXN0PGludD4oaSkgKiAocmggLSBybykgKyByeSkg
Pj4gMikgKyBybywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RhdGlj
X2Nhc3Q8aW50PihpKSAqIChnaCAtIGdvKSArIGd5KSA+PiAyKSArIGdvLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKChzdGF0aWNfY2FzdDxpbnQ+KGkpICogKGJoIC0gYm8p
ICsgYnkpID4+IDIpICsgYm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bHBoYVZhbHVlc1tqXVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJQaXhlbCAr
PSBwaXRjaDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEluZGV4IGZvciBpbmRpdmlkdWFs
LCBkaWZmZXJlbnRpYWwsIEggYW5kIFQgbW9kZXMKKyAgICBzaXplX3QgZ2V0SW5kZXgoc2l6ZV90
IHgsIHNpemVfdCB5KSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IGJpdEluZGV4ICA9IHgg
KiA0ICsgeTsKKyAgICAgICAgc2l6ZV90IGJpdE9mZnNldCA9IGJpdEluZGV4ICYgNzsKKyAgICAg
ICAgc2l6ZV90IGxzYiAgICAgICA9ICh1LmlkaHQucGl4ZWxJbmRleExTQlsxIC0gKGJpdEluZGV4
ID4+IDMpXSA+PiBiaXRPZmZzZXQpICYgMTsKKyAgICAgICAgc2l6ZV90IG1zYiA9ICh1LmlkaHQu
cGl4ZWxJbmRleE1TQlsxIC0gKGJpdEluZGV4ID4+IDMpXSA+PiBiaXRPZmZzZXQpICYgMTsKKyAg
ICAgICAgcmV0dXJuIChtc2IgPDwgMSkgfCBsc2I7CisgICAgfQorCisgICAgdm9pZCBkZWNvZGVQ
dW5jaFRocm91Z2hBbHBoYUJsb2NrKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdFJv
d1BpdGNoKSBjb25zdAorICAgIHsKKyAgICAgICAgdWludDhfdCAqY3VyUGl4ZWwgPSBkZXN0Owor
ICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQgJiYgKHkgKyBqKSA8IGg7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgUjhHOEI4QTggKnJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UjhH
OEI4QTggKj4oY3VyUGl4ZWwpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
ICYmICh4ICsgaSkgPCB3OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KGdldEluZGV4KGksIGopID09IDIpICAvLyAgbXNiID09IDEgJiYgbHNiID09IDAKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJvd1tpXSA9IGNyZWF0ZVJHQkEoMCwgMCwg
MCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY3Vy
UGl4ZWwgKz0gZGVzdFJvd1BpdGNoOworICAgICAgICB9CisgICAgfQorCisgICAgdWludDE2X3Qg
UkdCOFRvUkdCNTY1KGNvbnN0IFI4RzhCOEE4ICZyZ2JhKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIChzdGF0aWNfY2FzdDx1aW50MTZfdD4ocmdiYS5SID4+IDMpIDw8IDExKSB8CisgICAg
ICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJnYmEuRyA+PiAyKSA8PCA1KSB8Cisg
ICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJnYmEuQiA+PiAzKSA8PCAwKTsK
KyAgICB9CisKKyAgICB1aW50MzJfdCBtYXRjaEJDMUJpdHMoY29uc3QgUjhHOEI4QTggKnJnYmEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICZtaW5Db2xvciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUjhHOEI4QTggJm1heENvbG9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIG9wYXF1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIC8v
IFByb2plY3QgZWFjaCBwaXhlbCBvbiB0aGUgKG1heENvbG9yLCBtaW5Db2xvcikgbGluZSB0byBk
ZWNpZGUgd2hpY2gKKyAgICAgICAgLy8gQkMxIGNvZGUgdG8gYXNzaWduIHRvIGl0LgorCisgICAg
ICAgIHVpbnQ4X3QgZGVjb2RlZENvbG9yc1syXVszXSA9IHt7bWF4Q29sb3IuUiwgbWF4Q29sb3Iu
RywgbWF4Q29sb3IuQn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
bWluQ29sb3IuUiwgbWluQ29sb3IuRywgbWluQ29sb3IuQn19OworCisgICAgICAgIGludCBkaXJl
Y3Rpb25bM107CisgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCAzOyBjaCsrKQorICAgICAg
ICB7CisgICAgICAgICAgICBkaXJlY3Rpb25bY2hdID0gZGVjb2RlZENvbG9yc1swXVtjaF0gLSBk
ZWNvZGVkQ29sb3JzWzFdW2NoXTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBzdG9wc1syXTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0b3BzW2ldID0gZGVjb2RlZENvbG9yc1tpXVswXSAqIGRpcmVjdGlvblswXSArIGRlY29k
ZWRDb2xvcnNbaV1bMV0gKiBkaXJlY3Rpb25bMV0gKworICAgICAgICAgICAgICAgICAgICAgICBk
ZWNvZGVkQ29sb3JzW2ldWzJdICogZGlyZWN0aW9uWzJdOworICAgICAgICB9CisKKyAgICAgICAg
dWludDMyX3QgYml0cyA9IDA7CisgICAgICAgIGlmIChvcGFxdWUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAxNTsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgLy8gSW4gb3BhcXVlIG1vZGUsIHRoZSBjb2RlIGlzIGZyb20gMCB0byAzLgor
CisgICAgICAgICAgICAgICAgYml0cyA8PD0gMjsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQg
ZG90ID0KKyAgICAgICAgICAgICAgICAgICAgcmdiYVtpXS5SICogZGlyZWN0aW9uWzBdICsgcmdi
YVtpXS5HICogZGlyZWN0aW9uWzFdICsgcmdiYVtpXS5CICogZGlyZWN0aW9uWzJdOworICAgICAg
ICAgICAgICAgIGNvbnN0IGludCBmYWN0b3IgPSBnbDo6Y2xhbXAoCisgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4oCisgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRvdCAtIHN0b3BzWzFdKSAvIChzdG9wc1swXSAtIHN0b3BzWzFdKSkgKiAzICsg
MC41ZiksCisgICAgICAgICAgICAgICAgICAgIDAsIDMpOworICAgICAgICAgICAgICAgIHN3aXRj
aCAoZmFjdG9yKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAw
OgorICAgICAgICAgICAgICAgICAgICAgICAgYml0cyB8PSAxOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJpdHMgfD0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBiaXRzIHw9
IDI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSAzOgorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgYml0cyB8PSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE1OyBpID49IDA7IGktLSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbiBub24tb3BhcXVlIG1vZGUsIDMgaXMgZm9yIHRy
YW5wYXJlbnQgcGl4ZWxzLgorCisgICAgICAgICAgICAgICAgYml0cyA8PD0gMjsKKyAgICAgICAg
ICAgICAgICBpZiAoMCA9PSByZ2JhW2ldLkEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBiaXRzIHw9IDM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBk
b3QgPSByZ2JhW2ldLlIgKiBkaXJlY3Rpb25bMF0gKyByZ2JhW2ldLkcgKiBkaXJlY3Rpb25bMV0g
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYVtpXS5CICogZGlyZWN0
aW9uWzJdOworICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgZmFjdG9yID0gZ2w6OmNsYW1w
KAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PigKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRvdCAtIHN0b3BzWzFdKSAvIChz
dG9wc1swXSAtIHN0b3BzWzFdKSkgKiAyICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIDIpOworICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGZhY3RvcikKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHMgfD0gMDsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzIHw9IDI7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJpdHMgfD0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBiaXRzOworICAgIH0KKworICAgIHZvaWQg
cGFja0JDMSh2b2lkICpiYzEsCisgICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4ICpyZ2Jh
LAorICAgICAgICAgICAgICAgICBjb25zdCBSOEc4QjhBOCAmbWluQ29sb3IsCisgICAgICAgICAg
ICAgICAgIGNvbnN0IFI4RzhCOEE4ICZtYXhDb2xvciwKKyAgICAgICAgICAgICAgICAgYm9vbCBv
cGFxdWUpIGNvbnN0CisgICAgeworICAgICAgICB1aW50MzJfdCBiaXRzOworICAgICAgICB1aW50
MTZfdCBtYXgxNiA9IFJHQjhUb1JHQjU2NShtYXhDb2xvcik7CisgICAgICAgIHVpbnQxNl90IG1p
bjE2ID0gUkdCOFRvUkdCNTY1KG1pbkNvbG9yKTsKKyAgICAgICAgaWYgKG1heDE2ICE9IG1pbjE2
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGaW5kIHRoZSBiZXN0IEJDMSBjb2RlIGZvciBl
YWNoIHBpeGVsCisgICAgICAgICAgICBiaXRzID0gbWF0Y2hCQzFCaXRzKHJnYmEsIG1pbkNvbG9y
LCBtYXhDb2xvciwgb3BhcXVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIFNhbWUgY29sb3JzLCBCQzEgaW5kZXggMCBpcyB0aGUgY29sb3IgaW4g
Ym90aCBvcGFxdWUgYW5kIHRyYW5zcGFyZW50IG1vZGUKKyAgICAgICAgICAgIGJpdHMgPSAwOwor
ICAgICAgICAgICAgLy8gQkMxIGluZGV4IDMgaXMgdHJhbnNwYXJlbnQKKyAgICAgICAgICAgIGlm
ICghb3BhcXVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgMTY7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICgwID09IHJnYmFbaV0uQSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYml0cyB8PSAoMyA8PCAoaSAqIDIpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtYXgxNiA8IG1pbjE2KQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN3YXAobWF4MTYs
IG1pbjE2KTsKKworICAgICAgICAgICAgdWludDMyX3QgeG9yTWFzayA9IDA7CisgICAgICAgICAg
ICBpZiAob3BhcXVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEluIG9wYXF1
ZSBtb2RlIHN3aXRjaGluZyB0aGUgdHdvIGNvbG9ycyBpcyBkb2luZyB0aGUKKyAgICAgICAgICAg
ICAgICAvLyBmb2xsb3dpbmcgY29kZSBzd2FwczogMCA8LT4gMSBhbmQgMiA8LT4gMy4gVGhpcyBp
cworICAgICAgICAgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gZmxpcHBpbmcgdGhlIGZpcnN0IGJp
dCBvZiBlYWNoIGNvZGUKKyAgICAgICAgICAgICAgICAvLyAoNSA9IDBiMDEwMSkKKyAgICAgICAg
ICAgICAgICB4b3JNYXNrID0gMHg1NTU1NTU1NTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBJbiB0cmFuc3BhcmVudCBt
b2RlIHN3aXRjaGluZyB0aGUgY29sb3JzIGlzIGRvaW5nIHRoZQorICAgICAgICAgICAgICAgIC8v
IGZvbGxvd2luZyBjb2RlIHN3YXA6IDAgPC0+IDEuIDB4QSBzZWxlY3RzIHRoZSBzZWNvbmQgYml0
IG9mCisgICAgICAgICAgICAgICAgLy8gZWFjaCBjb2RlLCBiaXRzID4+IDEgc2VsZWN0cyB0aGUg
Zmlyc3QgYml0IG9mIHRoZSBjb2RlIHdoZW4KKyAgICAgICAgICAgICAgICAvLyB0aGUgc2Vjb25k
cyBiaXQgaXMgc2V0IChjYXNlIDIgYW5kIDMpLiBXZSBpbnZlcnQgYWxsIHRoZQorICAgICAgICAg
ICAgICAgIC8vIG5vbi1zZWxlY3RlZCBiaXRzLCB0aGF0IGlzIHRoZSBmaXJzdCBiaXQgd2hlbiB0
aGUgY29kZSBpcworICAgICAgICAgICAgICAgIC8vIDAgb3IgMS4KKyAgICAgICAgICAgICAgICB4
b3JNYXNrID0gfigoYml0cyA+PiAxKSB8IDB4QUFBQUFBQUEpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYml0cyBePSB4b3JNYXNrOworICAgICAgICB9CisKKyAgICAgICAgc3RydWN0IEJD
MUJsb2NrCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQxNl90IGNvbG9yMDsKKyAgICAgICAg
ICAgIHVpbnQxNl90IGNvbG9yMTsKKyAgICAgICAgICAgIHVpbnQzMl90IGJpdHM7CisgICAgICAg
IH07CisKKyAgICAgICAgLy8gRW5jb2RlIHRoZSBvcGFxdWVuZXNzIGluIHRoZSBvcmRlciBvZiB0
aGUgdHdvIEJDMSBjb2xvcnMKKyAgICAgICAgQkMxQmxvY2sgKmRlc3QgPSByZWludGVycHJldF9j
YXN0PEJDMUJsb2NrICo+KGJjMSk7CisgICAgICAgIGlmIChvcGFxdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlc3QtPmNvbG9yMCA9IG1heDE2OworICAgICAgICAgICAgZGVzdC0+Y29sb3Ix
ID0gbWluMTY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBkZXN0LT5jb2xvcjAgPSBtaW4xNjsKKyAgICAgICAgICAgIGRlc3QtPmNvbG9yMSA9IG1heDE2
OworICAgICAgICB9CisgICAgICAgIGRlc3QtPmJpdHMgPSBiaXRzOworICAgIH0KKworICAgIHZv
aWQgdHJhbnNjb2RlSW5kaXZpZHVhbEJsb2NrVG9CQzEodWludDhfdCAqZGVzdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0
CisgICAgeworICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xv
cnMuaW5kaXY7CisgICAgICAgIGludCByMSAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJs
b2NrLlIxKTsKKyAgICAgICAgaW50IGcxICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suRzEpOworICAgICAgICBpbnQgYjEgICAgICAgICAgICA9IGV4dGVuZF80dG84Yml0cyhibG9j
ay5CMSk7CisgICAgICAgIGludCByMiAgICAgICAgICAgID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2Nr
LlIyKTsKKyAgICAgICAgaW50IGcyICAgICAgICAgICAgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2su
RzIpOworICAgICAgICBpbnQgYjIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suQjIpOworICAgICAg
ICB0cmFuc2NvZGVJbmRpdmlkdWFsT3JEaWZmZXJlbnRpYWxCbG9ja1RvQkMxKGRlc3QsIHgsIHks
IHcsIGgsIHIxLCBnMSwgYjEsIHIyLCBnMiwgYjIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFWYWx1ZXMsIG5vbk9wYXF1ZVB1bmNoVGhy
b3VnaEFscGhhKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zY29kZURpZmZlcmVudGlhbEJsb2Nr
VG9CQzEodWludDhfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
YWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CisgICAgeworICAgICAg
ICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLmlkbS5jb2xvcnMuZGlmZjsKKyAgICAg
ICAgaW50IGIxICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suQik7CisgICAgICAg
IGludCBnMSAgICAgICAgICAgID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkcpOworICAgICAgICBp
bnQgcjEgICAgICAgICAgICA9IGV4dGVuZF81dG84Yml0cyhibG9jay5SKTsKKyAgICAgICAgaW50
IHIyICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suUiArIGJsb2NrLmRSKTsKKyAg
ICAgICAgaW50IGcyICAgICAgICAgICAgPSBleHRlbmRfNXRvOGJpdHMoYmxvY2suRyArIGJsb2Nr
LmRHKTsKKyAgICAgICAgaW50IGIyID0gZXh0ZW5kXzV0bzhiaXRzKGJsb2NrLkIgKyBibG9jay5k
Qik7CisgICAgICAgIHRyYW5zY29kZUluZGl2aWR1YWxPckRpZmZlcmVudGlhbEJsb2NrVG9CQzEo
ZGVzdCwgeCwgeSwgdywgaCwgcjEsIGcxLCBiMSwgcjIsIGcyLCBiMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVZhbHVlcywgbm9uT3Bh
cXVlUHVuY2hUaHJvdWdoQWxwaGEpOworICAgIH0KKworICAgIHZvaWQgZGVjb2RlU3ViYmxvY2so
UjhHOEI4QTggKnJnYmFCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZmxpcGJpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzdWJibG9ja0lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFI4RzhCOEE4
IHN1YmJsb2NrQ29sb3JzWzJdWzRdKSBjb25zdAorICAgIHsKKyAgICAgICAgc2l6ZV90IGR4QmVn
aW4gPSAwOworICAgICAgICBzaXplX3QgZHhFbmQgICA9IDQ7CisgICAgICAgIHNpemVfdCBkeUJl
Z2luID0gc3ViYmxvY2tJZHggKiAyOworICAgICAgICBzaXplX3QgZHlFbmQgPSBkeUJlZ2luICsg
MjsKKyAgICAgICAgaWYgKCFmbGlwYml0KQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OnN3
YXAoZHhCZWdpbiwgZHlCZWdpbik7CisgICAgICAgICAgICBzdGQ6OnN3YXAoZHhFbmQsIGR5RW5k
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGogPSBkeUJlZ2luOyBqIDwgZHlF
bmQgJiYgKHkgKyBqKSA8IGg7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgUjhHOEI4QTgg
KnJvdyA9ICZyZ2JhQmxvY2tbaiAqIDRdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IGR4
QmVnaW47IGkgPCBkeEVuZCAmJiAoeCArIGkpIDwgdzsgaSsrKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBwaXhlbEluZGV4ID0gZ2V0SW5kZXgoaSwgaik7Cisg
ICAgICAgICAgICAgICAgcm93W2ldICAgICAgICAgICAgICAgICAgPSBzdWJibG9ja0NvbG9yc1tz
dWJibG9ja0lkeF1bcGl4ZWxJbmRleF07CisgICAgICAgICAgICAgICAgcm93W2ldLkEgICAgICAg
ICAgICAgICAgPSBhbHBoYVZhbHVlc1tqXVtpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgc2VsZWN0RW5kUG9pbnRQQ0EoY29uc3QgUjhHOEI4QTggKnBpeGVs
cywgUjhHOEI4QTggKm1pbkNvbG9yLCBSOEc4QjhBOCAqbWF4Q29sb3IpIGNvbnN0CisgICAgewor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtOdW1QaXhlbHMgPSAxNjsKKworICAgICAgICAvLyBk
ZXRlcm1pbmUgY29sb3IgZGlzdHJpYnV0aW9uCisgICAgICAgIGludCBtdVszXSwgbWluWzNdLCBt
YXhbM107CisgICAgICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCAzOyBjaCsrKQorICAgICAgICB7
CisgICAgICAgICAgICBpbnQgbXV2LCBtaW52LCBtYXh2OworCisgICAgICAgICAgICBtdXYgPSBt
aW52ID0gbWF4diA9ICgmcGl4ZWxzWzBdLlIpW2NoXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwga051bVBpeGVsczsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG11diArPSAoJnBpeGVsc1tpXS5SKVtjaF07CisgICAgICAgICAgICAgICAgbWludiA9IHN0
ZDo6bWluPGludD4obWludiwgKCZwaXhlbHNbaV0uUilbY2hdKTsKKyAgICAgICAgICAgICAgICBt
YXh2ID0gc3RkOjptYXg8aW50PihtYXh2LCAoJnBpeGVsc1tpXS5SKVtjaF0pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBtdVtjaF0gID0gKG11diArIGtOdW1QaXhlbHMgLyAyKSAvIGtO
dW1QaXhlbHM7CisgICAgICAgICAgICBtaW5bY2hdID0gbWludjsKKyAgICAgICAgICAgIG1heFtj
aF0gPSBtYXh2OworICAgICAgICB9CisKKyAgICAgICAgLy8gZGV0ZXJtaW5lIGNvdmFyaWFuY2Ug
bWF0cml4CisgICAgICAgIGludCBjb3ZbNl0gPSB7MCwgMCwgMCwgMCwgMCwgMH07CisgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bVBpeGVsczsgaSsrKQorICAgICAgICB7CisgICAg
ICAgICAgICBpbnQgciA9IHBpeGVsc1tpXS5SIC0gbXVbMF07CisgICAgICAgICAgICBpbnQgZyA9
IHBpeGVsc1tpXS5HIC0gbXVbMV07CisgICAgICAgICAgICBpbnQgYiA9IHBpeGVsc1tpXS5CIC0g
bXVbMl07CisKKyAgICAgICAgICAgIGNvdlswXSArPSByICogcjsKKyAgICAgICAgICAgIGNvdlsx
XSArPSByICogZzsKKyAgICAgICAgICAgIGNvdlsyXSArPSByICogYjsKKyAgICAgICAgICAgIGNv
dlszXSArPSBnICogZzsKKyAgICAgICAgICAgIGNvdls0XSArPSBnICogYjsKKyAgICAgICAgICAg
IGNvdls1XSArPSBiICogYjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBvd2VyIGl0ZXJhdGlv
biBhbGdvcml0aG0gdG8gZ2V0IHRoZSBlaWdlbnZhbHVlcyBhbmQgZWlnZW52ZWN0b3IKKworICAg
ICAgICAvLyBTdGFydHMgd2l0aCBkaWFnb25hbCB2ZWN0b3IKKyAgICAgICAgZmxvYXQgdmZyID0g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heFswXSAtIG1pblswXSk7CisgICAgICAgIGZsb2F0IHZmZyA9
IHN0YXRpY19jYXN0PGZsb2F0PihtYXhbMV0gLSBtaW5bMV0pOworICAgICAgICBmbG9hdCB2ZmIg
PSBzdGF0aWNfY2FzdDxmbG9hdD4obWF4WzJdIC0gbWluWzJdKTsKKyAgICAgICAgZmxvYXQgZWln
ZW52YWx1ZTsKKworICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQb3dlckl0ZXJhdGlvbnMg
PSA0OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtQb3dlckl0ZXJhdGlvbnM7IGkr
KykKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgciA9IHZmciAqIGNvdlswXSArIHZmZyAq
IGNvdlsxXSArIHZmYiAqIGNvdlsyXTsKKyAgICAgICAgICAgIGZsb2F0IGcgPSB2ZnIgKiBjb3Zb
MV0gKyB2ZmcgKiBjb3ZbM10gKyB2ZmIgKiBjb3ZbNF07CisgICAgICAgICAgICBmbG9hdCBiID0g
dmZyICogY292WzJdICsgdmZnICogY292WzRdICsgdmZiICogY292WzVdOworCisgICAgICAgICAg
ICB2ZnIgPSByOworICAgICAgICAgICAgdmZnID0gZzsKKyAgICAgICAgICAgIHZmYiA9IGI7CisK
KyAgICAgICAgICAgIGVpZ2VudmFsdWUgPSBzcXJ0KHIgKiByICsgZyAqIGcgKyBiICogYik7Cisg
ICAgICAgICAgICBpZiAoZWlnZW52YWx1ZSA+IDApCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZmxvYXQgaW52Tm9ybSA9IDEuMGYgLyBlaWdlbnZhbHVlOworICAgICAgICAgICAgICAg
IHZmciAqPSBpbnZOb3JtOworICAgICAgICAgICAgICAgIHZmZyAqPSBpbnZOb3JtOworICAgICAg
ICAgICAgICAgIHZmYiAqPSBpbnZOb3JtOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaW50IHZyLCB2ZywgdmI7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGZsb2F0IGtEZWZh
dWx0THVtaW5hbmNlVGhyZXNob2xkID0gNC4wZiAqIDI1NTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGZsb2F0IGtRdWFudGl6ZVJhbmdlID0gNTEyLjBmOworICAgICAgICBpZiAoZWlnZW52YWx1ZSA8
IGtEZWZhdWx0THVtaW5hbmNlVGhyZXNob2xkKSAgLy8gdG9vIHNtYWxsLCBkZWZhdWx0IHRvIGx1
bWluYW5jZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBMdW1pbmFuY2Ugd2VpZ2h0cyBkZWZp
bmVkIGJ5IElUVS1SIFJlY29tbWVuZGF0aW9uIEJULjYwMSwgc2NhbGVkIGJ5IDEwMDAKKyAgICAg
ICAgICAgIHZyID0gMjk5OworICAgICAgICAgICAgdmcgPSA1ODc7CisgICAgICAgICAgICB2YiA9
IDExNDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEZyb20gdGhlIGVpZ2VudmFsdWUgYW5kIGVpZ2VudmVjdG9yLCBjaG9vc2UgdGhlIGF4aXMgdG8g
cHJvamVjdAorICAgICAgICAgICAgLy8gY29sb3JzIG9uLiBXaGVuIHByb2plY3RpbmcgY29sb3Jz
IHdlIHdhbnQgdG8gZG8gaW50ZWdlciBjb21wdXRhdGlvbnMKKyAgICAgICAgICAgIC8vIGZvciBz
cGVlZCwgc28gd2Ugbm9ybWFsaXplIHRoZSBlaWdlbnZlY3RvciB0byB0aGUgWzAsIDUxMl0gcmFu
Z2UuCisgICAgICAgICAgICBmbG9hdCBtYWduID0gc3RkOjptYXgoc3RkOjptYXgoc3RkOjphYnMo
dmZyKSwgc3RkOjphYnModmZnKSksIHN0ZDo6YWJzKHZmYikpOworICAgICAgICAgICAgbWFnbiAg
ICAgICA9IGtRdWFudGl6ZVJhbmdlIC8gbWFnbjsKKyAgICAgICAgICAgIHZyICAgICAgICAgPSBz
dGF0aWNfY2FzdDxpbnQ+KHZmciAqIG1hZ24pOworICAgICAgICAgICAgdmcgICAgICAgICA9IHN0
YXRpY19jYXN0PGludD4odmZnICogbWFnbik7CisgICAgICAgICAgICB2YiAgICAgICAgID0gc3Rh
dGljX2Nhc3Q8aW50Pih2ZmIgKiBtYWduKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBpY2sg
Y29sb3JzIGF0IGV4dHJlbWUgcG9pbnRzCisgICAgICAgIGludCBtaW5EICAgICAgICA9IHBpeGVs
c1swXS5SICogdnIgKyBwaXhlbHNbMF0uRyAqIHZnICsgcGl4ZWxzWzBdLkIgKiB2YjsKKyAgICAg
ICAgaW50IG1heEQgICAgICAgID0gbWluRDsKKyAgICAgICAgc2l6ZV90IG1pbkluZGV4ID0gMDsK
KyAgICAgICAgc2l6ZV90IG1heEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCBrTnVtUGl4ZWxzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBkb3QgPSBw
aXhlbHNbaV0uUiAqIHZyICsgcGl4ZWxzW2ldLkcgKiB2ZyArIHBpeGVsc1tpXS5CICogdmI7Cisg
ICAgICAgICAgICBpZiAoZG90IDwgbWluRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtaW5EICAgICA9IGRvdDsKKyAgICAgICAgICAgICAgICBtaW5JbmRleCA9IGk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZG90ID4gbWF4RCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBtYXhEICAgICA9IGRvdDsKKyAgICAgICAgICAgICAgICBtYXhJbmRleCA9IGk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAqbWluQ29sb3IgPSBwaXhlbHNb
bWluSW5kZXhdOworICAgICAgICAqbWF4Q29sb3IgPSBwaXhlbHNbbWF4SW5kZXhdOworICAgIH0K
KworICAgIHZvaWQgdHJhbnNjb2RlSW5kaXZpZHVhbE9yRGlmZmVyZW50aWFsQmxvY2tUb0JDMSh1
aW50OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHIxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZzEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgZzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBiMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQ
dW5jaFRocm91Z2hBbHBoYSkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEEgQkMxIGJsb2NrIGhh
cyAyIGVuZHBvaW50cywgcGl4ZWxzIGlzIGVuY29kZWQgYXMgbGluZWFyCisgICAgICAgIC8vIGlu
dGVycG9sYXRpb25zIG9mIHRoZW0uIEEgRVRDMS9FVEMyIGluZGl2aWR1YWwgb3IgZGlmZmVyZW50
aWFsIGJsb2NrCisgICAgICAgIC8vIGhhcyAyIHN1YmJsb2Nrcy4gRWFjaCBzdWJibG9jayBoYXMg
b25lIGNvbG9yIGFuZCBhIG1vZGlmaWVyLiBXZQorICAgICAgICAvLyBzZWxlY3QgYXhpcyBieSBw
cmluY2lwYWwgY29tcG9uZW50IGFuYWx5c2lzIChQQ0EpIHRvIHVzZSBhcworICAgICAgICAvLyBv
dXIgdHdvIEJDMSBlbmRwb2ludHMgYW5kIHRoZW4gbWFwIHBpeGVscyB0byBCQzEgYnkgcHJvamVj
dGluZyBvbiB0aGUKKyAgICAgICAgLy8gbGluZSBiZXR3ZWVuIHRoZSB0d28gZW5kcG9pbnRzIGFu
ZCBjaG9vc2luZyB0aGUgcmlnaHQgZnJhY3Rpb24uCisgICAgICAgIC8vCisgICAgICAgIC8vIElu
IHRoZSBmdXR1cmUsIHdlIGhhdmUgYSBwb3RlbnRpYWwgaW1wcm92ZW1lbnRzIHRvIHRoaXMgYWxn
b3JpdGhtLgorICAgICAgICAvLyAxLiBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRvIGRlY29kZSBF
VEMgYmxvY2tzIHRvIFJHQnMuIEluc3RlYWQsCisgICAgICAgIC8vICAgIHRoZSBzdWJibG9jayBj
b2xvcnMgYW5kIHBpeGVsIGluZGljZXMgYWxyZWF5IGNvbnRhaW5zIGVub3VnaAorICAgICAgICAv
LyAgICBpbmZvcm1hdGlvbiBmb3IgdHJhbnNjb2RlLiBBIGRpcmVjdCBtYXBwaW5nIHdvdWxkIGJl
IG1vcmUKKyAgICAgICAgLy8gICAgZWZmaWNpZW50IGhlcmUuCisKKyAgICAgICAgY29uc3QgYXV0
byBpbnRlbnNpdHlNb2RpZmllciA9CisgICAgICAgICAgICBub25PcGFxdWVQdW5jaFRocm91Z2hB
bHBoYSA/IGludGVuc2l0eU1vZGlmaWVyTm9uT3BhcXVlIDogaW50ZW5zaXR5TW9kaWZpZXJEZWZh
dWx0OworCisgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvbG9ycyB0aGF0IHBpeGVscyBjYW4gaGF2
ZSBpbiBlYWNoIHN1YmJsb2NrIGJvdGggZm9yCisgICAgICAgIC8vIHRoZSBkZWNvZGluZyBvZiB0
aGUgUkdCQSBkYXRhIGFuZCBCQzEgZW5jb2RpbmcKKyAgICAgICAgUjhHOEI4QTggc3ViYmxvY2tD
b2xvcnNbMl1bNF07CisgICAgICAgIGZvciAoc2l6ZV90IG1vZGlmaWVySWR4ID0gMDsgbW9kaWZp
ZXJJZHggPCA0OyBtb2RpZmllcklkeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBp
bnQgaTEgICAgICAgICAgICAgICAgICAgPSBpbnRlbnNpdHlNb2RpZmllclt1LmlkaHQubW9kZS5p
ZG0uY3cxXVttb2RpZmllcklkeF07CisgICAgICAgICAgICBzdWJibG9ja0NvbG9yc1swXVttb2Rp
ZmllcklkeF0gPSBjcmVhdGVSR0JBKHIxICsgaTEsIGcxICsgaTEsIGIxICsgaTEpOworCisgICAg
ICAgICAgICBjb25zdCBpbnQgaTIgICAgICAgICAgICAgICAgICAgPSBpbnRlbnNpdHlNb2RpZmll
clt1LmlkaHQubW9kZS5pZG0uY3cyXVttb2RpZmllcklkeF07CisgICAgICAgICAgICBzdWJibG9j
a0NvbG9yc1sxXVttb2RpZmllcklkeF0gPSBjcmVhdGVSR0JBKHIyICsgaTIsIGcyICsgaTIsIGIy
ICsgaTIpOworICAgICAgICB9CisKKyAgICAgICAgUjhHOEI4QTggcmdiYUJsb2NrWzE2XTsKKyAg
ICAgICAgLy8gRGVjb2RlIHRoZSBibG9jayBpbiByZ2JhQmxvY2suCisgICAgICAgIGZvciAoc2l6
ZV90IGJsb2NrSWR4ID0gMDsgYmxvY2tJZHggPCAyOyBibG9ja0lkeCsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWNvZGVTdWJibG9jayhyZ2JhQmxvY2ssIHgsIHksIHcsIGgsIGFscGhhVmFs
dWVzLCB1LmlkaHQubW9kZS5pZG0uZmxpcGJpdCwgYmxvY2tJZHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdWJibG9ja0NvbG9ycyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vbk9w
YXF1ZVB1bmNoVGhyb3VnaEFscGhhKQorICAgICAgICB7CisgICAgICAgICAgICBkZWNvZGVQdW5j
aFRocm91Z2hBbHBoYUJsb2NrKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihyZ2JhQmxvY2sp
LCB4LCB5LCB3LCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoUjhHOEI4QTgpICogNCk7CisgICAgICAgIH0KKworICAgICAgICBSOEc4QjhBOCBtaW5D
b2xvciwgbWF4Q29sb3I7CisgICAgICAgIHNlbGVjdEVuZFBvaW50UENBKHJnYmFCbG9jaywgJm1p
bkNvbG9yLCAmbWF4Q29sb3IpOworCisgICAgICAgIHBhY2tCQzEoZGVzdCwgcmdiYUJsb2NrLCBt
aW5Db2xvciwgbWF4Q29sb3IsICFub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CisgICAgfQor
CisgICAgdm9pZCB0cmFuc2NvZGVUQmxvY2tUb0JDMSh1aW50OF90ICpkZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29u
c3QKKyAgICB7CisgICAgICAgIC8vIFRPRE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBz
b29uCisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zY29k
ZUhCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFscGhhKSBjb25zdAorICAgIHsKKyAgICAgICAg
Ly8gVE9ETyAobWdvbmcpOiBXaWxsIGJlIGltcGxlbWVudGVkIHNvb24KKyAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIH0KKworICAgIHZvaWQgdHJhbnNjb2RlUGxhbmFyQmxvY2tUb0JDMSh1
aW50OF90ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSkgY29uc3QKKyAgICB7CisgICAg
ICAgIC8vIFRPRE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCisgICAgICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICB9CisKKyAgICAvLyBTaW5nbGUgY2hhbm5lbCB1dGlsaXR5IGZ1
bmN0aW9ucworICAgIGludCBnZXRTaW5nbGVDaGFubmVsKHNpemVfdCB4LCBzaXplX3QgeSwgYm9v
bCBpc1NpZ25lZCkgY29uc3QKKyAgICB7CisgICAgICAgIGludCBjb2Rld29yZCA9IGlzU2lnbmVk
ID8gdS5zY2Jsay5iYXNlX2NvZGV3b3JkLnMgOiB1LnNjYmxrLmJhc2VfY29kZXdvcmQudXM7Cisg
ICAgICAgIHJldHVybiBjb2Rld29yZCArIGdldFNpbmdsZUNoYW5uZWxNb2RpZmllcih4LCB5KSAq
IHUuc2NibGsubXVsdGlwbGllcjsKKyAgICB9CisKKyAgICBpbnQgZ2V0U2luZ2xlQ2hhbm5lbElu
ZGV4KHNpemVfdCB4LCBzaXplX3QgeSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh4IDwg
NCAmJiB5IDwgNCk7CisKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgICAgICBzd2l0
Y2ggKHggKiA0ICsgeSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAwOiByZXR1cm4gdS5z
Y2Jsay5tYTsKKyAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIHUuc2NibGsubWI7CisgICAgICAg
ICAgICBjYXNlIDI6IHJldHVybiB1LnNjYmxrLm1jMSA8PCAxIHwgdS5zY2Jsay5tYzI7CisgICAg
ICAgICAgICBjYXNlIDM6IHJldHVybiB1LnNjYmxrLm1kOworICAgICAgICAgICAgY2FzZSA0OiBy
ZXR1cm4gdS5zY2Jsay5tZTsKKyAgICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHUuc2NibGsubWYx
IDw8IDIgfCB1LnNjYmxrLm1mMjsKKyAgICAgICAgICAgIGNhc2UgNjogcmV0dXJuIHUuc2NibGsu
bWc7CisgICAgICAgICAgICBjYXNlIDc6IHJldHVybiB1LnNjYmxrLm1oOworICAgICAgICAgICAg
Y2FzZSA4OiByZXR1cm4gdS5zY2Jsay5taTsKKyAgICAgICAgICAgIGNhc2UgOTogcmV0dXJuIHUu
c2NibGsubWo7CisgICAgICAgICAgICBjYXNlIDEwOiByZXR1cm4gdS5zY2Jsay5tazEgPDwgMSB8
IHUuc2NibGsubWsyOworICAgICAgICAgICAgY2FzZSAxMTogcmV0dXJuIHUuc2NibGsubWw7Cisg
ICAgICAgICAgICBjYXNlIDEyOiByZXR1cm4gdS5zY2Jsay5tbTsKKyAgICAgICAgICAgIGNhc2Ug
MTM6IHJldHVybiB1LnNjYmxrLm1uMSA8PCAyIHwgdS5zY2Jsay5tbjI7CisgICAgICAgICAgICBj
YXNlIDE0OiByZXR1cm4gdS5zY2Jsay5tbzsKKyAgICAgICAgICAgIGNhc2UgMTU6IHJldHVybiB1
LnNjYmxrLm1wOworICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0dXJuIDA7
CisgICAgICAgIH0KKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisgICAgfQorCisgICAgaW50
IGdldFNpbmdsZUNoYW5uZWxNb2RpZmllcihzaXplX3QgeCwgc2l6ZV90IHkpIGNvbnN0CisgICAg
eworICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQg
bW9kaWZpZXJUYWJsZVsxNl1bOF0gPQorICAgICAgICB7CisgICAgICAgICAgICB7IC0zLCAtNiwg
IC05LCAtMTUsIDIsIDUsIDgsIDE0IH0sCisgICAgICAgICAgICB7IC0zLCAtNywgLTEwLCAtMTMs
IDIsIDYsIDksIDEyIH0sCisgICAgICAgICAgICB7IC0yLCAtNSwgIC04LCAtMTMsIDEsIDQsIDcs
IDEyIH0sCisgICAgICAgICAgICB7IC0yLCAtNCwgIC02LCAtMTMsIDEsIDMsIDUsIDEyIH0sCisg
ICAgICAgICAgICB7IC0zLCAtNiwgIC04LCAtMTIsIDIsIDUsIDcsIDExIH0sCisgICAgICAgICAg
ICB7IC0zLCAtNywgIC05LCAtMTEsIDIsIDYsIDgsIDEwIH0sCisgICAgICAgICAgICB7IC00LCAt
NywgIC04LCAtMTEsIDMsIDYsIDcsIDEwIH0sCisgICAgICAgICAgICB7IC0zLCAtNSwgIC04LCAt
MTEsIDIsIDQsIDcsIDEwIH0sCisgICAgICAgICAgICB7IC0yLCAtNiwgIC04LCAtMTAsIDEsIDUs
IDcsICA5IH0sCisgICAgICAgICAgICB7IC0yLCAtNSwgIC04LCAtMTAsIDEsIDQsIDcsICA5IH0s
CisgICAgICAgICAgICB7IC0yLCAtNCwgIC04LCAtMTAsIDEsIDMsIDcsICA5IH0sCisgICAgICAg
ICAgICB7IC0yLCAtNSwgIC03LCAtMTAsIDEsIDQsIDYsICA5IH0sCisgICAgICAgICAgICB7IC0z
LCAtNCwgIC03LCAtMTAsIDIsIDMsIDYsICA5IH0sCisgICAgICAgICAgICB7IC0xLCAtMiwgIC0z
LCAtMTAsIDAsIDEsIDIsICA5IH0sCisgICAgICAgICAgICB7IC00LCAtNiwgIC04LCAgLTksIDMs
IDUsIDcsICA4IH0sCisgICAgICAgICAgICB7IC0zLCAtNSwgIC03LCAgLTksIDIsIDQsIDYsICA4
IH0KKyAgICAgICAgfTsKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICAgICAgcmV0
dXJuIG1vZGlmaWVyVGFibGVbdS5zY2Jsay50YWJsZV9pbmRleF1bZ2V0U2luZ2xlQ2hhbm5lbElu
ZGV4KHgsIHkpXTsKKyAgICB9Cit9OworCisvLyBjbGFuZy1mb3JtYXQgb2ZmCitzdGF0aWMgY29u
c3QgdWludDhfdCBEZWZhdWx0RVRDQWxwaGFWYWx1ZXNbNF1bNF0gPQoreworICAgIHsgMjU1LCAy
NTUsIDI1NSwgMjU1IH0sCisgICAgeyAyNTUsIDI1NSwgMjU1LCAyNTUgfSwKKyAgICB7IDI1NSwg
MjU1LCAyNTUsIDI1NSB9LAorICAgIHsgMjU1LCAyNTUsIDI1NSwgMjU1IH0sCit9OworLy8gY2xh
bmctZm9ybWF0IG9uCisKK3ZvaWQgTG9hZFIxMUVBQ1RvUjgoc2l6ZV90IHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAg
ICBib29sIGlzU2lnbmVkKQoreworICAgIGZvciAoc2l6ZV90IHogPSAwOyB6IDwgZGVwdGg7IHor
KykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IDQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlUm93ID0KKyAg
ICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjxFVEMyQmxvY2s+KGlucHV0LCB5IC8gNCwg
eiwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoKTsKKyAgICAgICAgICAgIHVpbnQ4X3Qg
KmRlc3RSb3cgPQorICAgICAgICAgICAgICAgIE9mZnNldERhdGFQb2ludGVyPHVpbnQ4X3Q+KG91
dHB1dCwgeSwgeiwgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gpOworCisgICAgICAg
ICAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8IHdpZHRoOyB4ICs9IDQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9jayA9IHNvdXJjZVJv
dyArICh4IC8gNCk7CisgICAgICAgICAgICAgICAgdWludDhfdCAqZGVzdFBpeGVscyAgICAgICAg
ICA9IGRlc3RSb3cgKyB4OworCisgICAgICAgICAgICAgICAgc291cmNlQmxvY2stPmRlY29kZUFz
U2luZ2xlQ2hhbm5lbChkZXN0UGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0
Y2gsIGlzU2lnbmVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBMb2FkUkcxMUVBQ1RvUkc4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc1NpZ25lZCkKK3sKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6
KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0
KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZVJvdyA9Cisg
ICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQs
IHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90
ICpkZXN0Um93ID0KKyAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90Pihv
dXRwdXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKworICAgICAg
ICAgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCArPSA0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRlc3RQaXhlbHNSZWQgICAgICAgICAgPSBkZXN0
Um93ICsgKHggKiAyKTsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJs
b2NrUmVkID0gc291cmNlUm93ICsgKHggLyAyKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VCbG9j
a1JlZC0+ZGVjb2RlQXNTaW5nbGVDaGFubmVsKGRlc3RQaXhlbHNSZWQsIHgsIHksIHdpZHRoLCBo
ZWlnaHQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRwdXRSb3dQaXRjaCwgaXNTaWduZWQpOworCisgICAgICAgICAgICAgICAgdWlu
dDhfdCAqZGVzdFBpeGVsc0dyZWVuICAgICAgICAgID0gZGVzdFBpeGVsc1JlZCArIDE7CisgICAg
ICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VCbG9ja0dyZWVuID0gc291cmNlQmxv
Y2tSZWQgKyAxOworICAgICAgICAgICAgICAgIHNvdXJjZUJsb2NrR3JlZW4tPmRlY29kZUFzU2lu
Z2xlQ2hhbm5lbChkZXN0UGl4ZWxzR3JlZW4sIHgsIHksIHdpZHRoLCBoZWlnaHQsIDIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1
dFJvd1BpdGNoLCBpc1NpZ25lZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVuY2h0aHJvdWdo
QWxwaGEpCit7CisgICAgZm9yIChzaXplX3QgeiA9IDA7IHogPCBkZXB0aDsgeisrKQorICAgIHsK
KyAgICAgICAgZm9yIChzaXplX3QgeSA9IDA7IHkgPCBoZWlnaHQ7IHkgKz0gNCkKKyAgICAgICAg
eworICAgICAgICAgICAgY29uc3QgRVRDMkJsb2NrICpzb3VyY2VSb3cgPQorICAgICAgICAgICAg
ICAgIE9mZnNldERhdGFQb2ludGVyPEVUQzJCbG9jaz4oaW5wdXQsIHkgLyA0LCB6LCBpbnB1dFJv
d1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gpOworICAgICAgICAgICAgdWludDhfdCAqZGVzdFJvdyA9
CisgICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8dWludDhfdD4ob3V0cHV0LCB5LCB6
LCBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCk7CisKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gNCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZUJsb2NrID0gc291cmNlUm93ICsgKHggLyA0
KTsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpkZXN0UGl4ZWxzICAgICAgICAgID0gZGVzdFJv
dyArICh4ICogNCk7CisKKyAgICAgICAgICAgICAgICBzb3VyY2VCbG9jay0+ZGVjb2RlQXNSR0Io
ZGVzdFBpeGVscywgeCwgeSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRFVENBbHBoYVZhbHVlcywg
cHVuY2h0aHJvdWdoQWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIExvYWRFVEMyUkdCOFRvQkMxKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4
X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBwdW5jaHRocm91Z2hBbHBoYSkKK3sKKyAgICBmb3IgKHNp
emVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6KyspCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5
ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBF
VEMyQmxvY2sgKnNvdXJjZVJvdyA9CisgICAgICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8
RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQsIHosIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCk7CisgICAgICAgICAgICB1aW50OF90ICpkZXN0Um93ID0KKyAgICAgICAgICAgICAgICBPZmZz
ZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRwdXQsIHkgLyA0LCB6LCBvdXRwdXRSb3dQaXRjaCwg
b3V0cHV0RGVwdGhQaXRjaCk7CisKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwg
d2lkdGg7IHggKz0gNCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBFVEMy
QmxvY2sgKnNvdXJjZUJsb2NrID0gc291cmNlUm93ICsgKHggLyA0KTsKKyAgICAgICAgICAgICAg
ICB1aW50OF90ICpkZXN0UGl4ZWxzICAgICAgICAgID0gZGVzdFJvdyArICh4ICogMik7CisKKyAg
ICAgICAgICAgICAgICBzb3VyY2VCbG9jay0+dHJhbnNjb2RlQXNCQzEoZGVzdFBpeGVscywgeCwg
eSwgd2lkdGgsIGhlaWdodCwgRGVmYXVsdEVUQ0FscGhhVmFsdWVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdW5jaHRocm91Z2hBbHBoYSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgTG9hZEVUQzJSR0JBOFRvUkdCQTgo
c2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0
cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHNyZ2IpCit7CisgICAgdWludDhfdCBkZWNvZGVkQWxw
aGFWYWx1ZXNbNF1bNF07CisKKyAgICBmb3IgKHNpemVfdCB6ID0gMDsgeiA8IGRlcHRoOyB6Kysp
CisgICAgeworICAgICAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgeSArPSA0KQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBFVEMyQmxvY2sgKnNvdXJjZVJvdyA9CisgICAg
ICAgICAgICAgICAgT2Zmc2V0RGF0YVBvaW50ZXI8RVRDMkJsb2NrPihpbnB1dCwgeSAvIDQsIHos
IGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCk7CisgICAgICAgICAgICB1aW50OF90ICpk
ZXN0Um93ID0KKyAgICAgICAgICAgICAgICBPZmZzZXREYXRhUG9pbnRlcjx1aW50OF90PihvdXRw
dXQsIHksIHosIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoKTsKKworICAgICAgICAg
ICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCB3aWR0aDsgeCArPSA0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2tBbHBoYSA9IHNvdXJj
ZVJvdyArICh4IC8gMik7CisgICAgICAgICAgICAgICAgc291cmNlQmxvY2tBbHBoYS0+ZGVjb2Rl
QXNTaW5nbGVDaGFubmVsKAorICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QgKj4oZGVjb2RlZEFscGhhVmFsdWVzKSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMSwgNCwK
KyAgICAgICAgICAgICAgICAgICAgZmFsc2UpOworCisgICAgICAgICAgICAgICAgdWludDhfdCAq
ZGVzdFBpeGVscyAgICAgICAgICAgICA9IGRlc3RSb3cgKyAoeCAqIDQpOworICAgICAgICAgICAg
ICAgIGNvbnN0IEVUQzJCbG9jayAqc291cmNlQmxvY2tSR0IgPSBzb3VyY2VCbG9ja0FscGhhICsg
MTsKKyAgICAgICAgICAgICAgICBzb3VyY2VCbG9ja1JHQi0+ZGVjb2RlQXNSR0IoZGVzdFBpeGVs
cywgeCwgeSwgd2lkdGgsIGhlaWdodCwgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRBbHBoYVZhbHVlcywgZmFsc2UpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKK3ZvaWQgTG9hZEVUQzFSR0I4VG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgod2lkdGgsIGhl
aWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBp
dGNoLCBmYWxzZSk7Cit9CisKK3ZvaWQgTG9hZEVUQzFSR0I4VG9CQzEoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvQkMxKHdpZHRoLCBoZWlnaHQsIGRlcHRo
LCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsK
K30KKwordm9pZCBMb2FkRUFDUjExVG9SOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5w
dXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZFIxMUVBQ1RvUjgod2lkdGgs
IGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCwgZmFsc2UpOworfQorCit2b2lkIExvYWRFQUNSMTFTVG9SOChzaXplX3Qgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICB1aW50
OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gs
CisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBM
b2FkUjExRUFDVG9SOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gs
IGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1Bp
dGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0cnVlKTsKK30KKwordm9pZCBMb2FkRUFDUkcxMVRvUkc4
KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAor
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZFJHMTFFQUNUb1JHOCh3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAor
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZh
bHNlKTsKK30KKwordm9pZCBMb2FkRUFDUkcxMVNUb1JHOChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0
Y2gpCit7CisgICAgTG9hZFJHMTFFQUNUb1JHOCh3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQs
IGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb3V0cHV0LAorICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCit2b2lk
IExvYWRFVEMyUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCkKK3sKKyAgICBMb2FkRVRDMlJHQjhUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBp
bnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFsc2UpOwor
fQorCit2b2lkIExvYWRFVEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkRVRDMlJHQjhUb1JHQkE4KHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVw
dGhQaXRjaCwgZmFsc2UpOworfQorCit2b2lkIExvYWRFVEMyUkdCOEExVG9SR0JBOChzaXplX3Qg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAg
ICBMb2FkRVRDMlJHQjhUb1JHQkE4KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRS
b3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7Cit9CisKK3ZvaWQgTG9h
ZEVUQzJTUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvUkdCQTgo
d2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0
Y2gsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRw
dXREZXB0aFBpdGNoLCB0cnVlKTsKK30KKwordm9pZCBMb2FkRVRDMlJHQkE4VG9SR0JBOChzaXpl
X3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5w
dXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9h
ZEVUQzJSR0JBOFRvUkdCQTgod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1Bp
dGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBv
dXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFsc2UpOworfQorCit2b2lkIExvYWRF
VEMyU1JHQkE4VG9TUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCkKK3sKKyAgICBMb2FkRVRDMlJHQkE4VG9SR0JBOCh3
aWR0aCwgaGVpZ2h0LCBkZXB0aCwgaW5wdXQsIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRj
aCwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRw
dXREZXB0aFBpdGNoLCB0cnVlKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2xvYWRpbWFnZV9l
dGMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2xvYWRpbWFnZV9ldGMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvbG9hZGltYWdlX2V0Yy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEz
LTIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBs
b2FkaW1hZ2VfZXRjLmg6IERlY29kZXMgRVRDIGFuZCBFQUMgZW5jb2RlZCB0ZXh0dXJlcy4KKwor
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfTE9BRElNQUdFX0VUQ19IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9EM0RfTE9BRElNQUdFX0VUQ19IXworCisjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSByeAor
eworCit2b2lkIExvYWRFVEMxUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVUQzFSR0I4VG9CQzEoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRUFDUjExVG9SOChzaXplX3Qgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCit2b2lkIExvYWRFQUNSMTFT
VG9SOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0
cHV0RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVBQ1JHMTFUb1JHOChzaXplX3Qgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5w
dXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAg
ICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1
dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KTsKKwordm9pZCBMb2FkRUFDUkcxMVNUb1JHOChzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
ZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1
aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwor
Cit2b2lkIExvYWRFVEMyUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0
RGVwdGhQaXRjaCk7CisKK3ZvaWQgTG9hZEVUQzJTUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMlJHQjhB
MVRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOworCit2b2lkIExvYWRFVEMyU1JHQjhBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1
dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKK3Zv
aWQgTG9hZEVUQzJSR0JBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
ZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
dXRwdXREZXB0aFBpdGNoKTsKKwordm9pZCBMb2FkRVRDMlNSR0JBOFRvU1JHQkE4KHNpemVfdCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg
Km91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
OworfQorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9MT0FESU1BR0VfRVRDX0hf
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
QmxpdEdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzA0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBCbGl0R0wuY3BwOiBJbXBs
ZW1lbnRzIHRoZSBCbGl0R0wgY2xhc3MsIGEgaGVscGVyIGZvciBibGl0dGluZyB0ZXh0dXJlcwor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmgiCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL1RleHR1cmVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRl
TWFuYWdlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNH
TC5oIgorCituYW1lc3BhY2UKK3sKKworZ2w6OkVycm9yIENoZWNrQ29tcGlsZVN0YXR1cyhjb25z
dCByeDo6RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0x1aW50IHNoYWRlcikKK3sKKyAgICBHTGlu
dCBjb21waWxlU3RhdHVzID0gR0xfRkFMU0U7CisgICAgZnVuY3Rpb25zLT5nZXRTaGFkZXJpdihz
aGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVN0YXR1cyk7CisgICAgQVNTRVJUKGNv
bXBpbGVTdGF0dXMgPT0gR0xfVFJVRSk7CisgICAgaWYgKGNvbXBpbGVTdGF0dXMgPT0gR0xfRkFM
U0UpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJG
YWlsZWQgdG8gY29tcGlsZSBpbnRlcm5hbCBibGl0IHNoYWRlci4iKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIENoZWNrTGlua1N0
YXR1cyhjb25zdCByeDo6RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0x1aW50IHByb2dyYW0pCit7
CisgICAgR0xpbnQgbGlua1N0YXR1cyA9IEdMX0ZBTFNFOworICAgIGZ1bmN0aW9ucy0+Z2V0UHJv
Z3JhbWl2KHByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7CisgICAgQVNTRVJU
KGxpbmtTdGF0dXMgPT0gR0xfVFJVRSk7CisgICAgaWYgKGxpbmtTdGF0dXMgPT0gR0xfRkFMU0Up
CisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWls
ZWQgdG8gbGluayBpbnRlcm5hbCBibGl0IHByb2dyYW0uIik7CisgICAgfQorCisgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQor
CituYW1lc3BhY2UgcngKK3sKKworQmxpdEdMOjpCbGl0R0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRz
LAorICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcikKKyAgICA6IG1G
dW5jdGlvbnMoZnVuY3Rpb25zKSwKKyAgICAgIG1Xb3JrYXJvdW5kcyh3b3JrYXJvdW5kcyksCisg
ICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdlciksCisgICAgICBtQmxpdFByb2dyYW0oMCks
CisgICAgICBtU2NyYXRjaEZCTygwKSwKKyAgICAgIG1WQU8oMCkKK3sKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IEFycmF5U2l6ZShtU2NyYXRjaFRleHR1cmVzKTsgaSsrKQorICAgIHsKKyAg
ICAgICAgbVNjcmF0Y2hUZXh0dXJlc1tpXSA9IDA7CisgICAgfQorCisgICAgQVNTRVJUKG1GdW5j
dGlvbnMpOworICAgIEFTU0VSVChtU3RhdGVNYW5hZ2VyKTsKK30KKworQmxpdEdMOjp+QmxpdEdM
KCkKK3sKKyAgICBpZiAobUJsaXRQcm9ncmFtICE9IDApCisgICAgeworICAgICAgICBtU3RhdGVN
YW5hZ2VyLT5kZWxldGVQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CisgICAgICAgIG1CbGl0UHJvZ3Jh
bSA9IDA7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemUobVNj
cmF0Y2hUZXh0dXJlcyk7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtU2NyYXRjaFRleHR1cmVz
W2ldICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZVRl
eHR1cmUobVNjcmF0Y2hUZXh0dXJlc1tpXSk7CisgICAgICAgICAgICBtU2NyYXRjaFRleHR1cmVz
W2ldID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtU2NyYXRjaEZCTyAhPSAwKQor
ICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlRnJhbWVidWZmZXIobVNjcmF0Y2hG
Qk8pOworICAgICAgICBtU2NyYXRjaEZCTyA9IDA7CisgICAgfQorCisgICAgaWYgKG1WQU8gIT0g
MCkKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZVZlcnRleEFycmF5KG1WQU8p
OworICAgICAgICBtVkFPID0gMDsKKyAgICB9Cit9CisKK2dsOjpFcnJvciBCbGl0R0w6OmNvcHlJ
bWFnZVRvTFVNQVdvcmthcm91bmRUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBsdW1hRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNl
QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQoreworICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKHRleHR1cmVUeXBlLCB0ZXh0dXJlKTsKKworICAg
IC8vIEFsbG9jYXRlIHRoZSB0ZXh0dXJlIG1lbW9yeQorICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZv
cm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRl
cm5hbEZvcm1hdCk7CisgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19j
YXN0PEdMaW50PihsZXZlbCksIGludGVybmFsRm9ybWF0LCBzb3VyY2VBcmVhLndpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQXJlYS5oZWlnaHQsIDAsIGludGVybmFsRm9y
bWF0SW5mby5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UtPmdldElt
cGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpLCBudWxscHRyKTsKKworICAgIHJldHVybiBjb3B5
U3ViSW1hZ2VUb0xVTUFXb3JrYXJvdW5kVGV4dHVyZSh0ZXh0dXJlLCB0ZXh0dXJlVHlwZSwgdGFy
Z2V0LCBsdW1hRm9ybWF0LCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6Ok9mZnNldCgwLCAwLCAwKSwgc291cmNlQXJlYSwgc291cmNlKTsK
K30KKworZ2w6OkVycm9yIEJsaXRHTDo6Y29weVN1YkltYWdlVG9MVU1BV29ya2Fyb3VuZFRleHR1
cmUoR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGx1
bWFGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQorewor
ICAgIGdsOjpFcnJvciBlcnJvciA9IGluaXRpYWxpemVSZXNvdXJjZXMoKTsKKyAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAg
IC8vIEJsaXQgdGhlIGZyYW1lYnVmZmVyIHRvIHRoZSBmaXJzdCBzY3JhdGNoIHRleHR1cmUKKyAg
ICBjb25zdCBGcmFtZWJ1ZmZlckdMICpzb3VyY2VGcmFtZWJ1ZmZlckdMID0gR2V0SW1wbEFzPEZy
YW1lYnVmZmVyR0w+KHNvdXJjZSk7CisgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBzb3VyY2VGcmFtZWJ1ZmZlckdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkp
OworCisgICAgbmF0aXZlZ2w6OkNvcHlUZXhJbWFnZUltYWdlRm9ybWF0IGNvcHlUZXhJbWFnZUZv
cm1hdCA9IG5hdGl2ZWdsOjpHZXRDb3B5VGV4SW1hZ2VJbWFnZUZvcm1hdCgKKyAgICAgICAgbUZ1
bmN0aW9ucywgbVdvcmthcm91bmRzLCBzb3VyY2UtPmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFk
Rm9ybWF0KCksCisgICAgICAgIHNvdXJjZS0+Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBl
KCkpOworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZvID0K
KyAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhjb3B5VGV4SW1hZ2VGb3JtYXQuaW50
ZXJuYWxGb3JtYXQpOworCisgICAgbVN0YXRlTWFuYWdlci0+YWN0aXZlVGV4dHVyZSgwKTsKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1
cmVzWzBdKTsKKyAgICBtRnVuY3Rpb25zLT5jb3B5VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBjb3B5VGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsIHNvdXJjZUFyZWEueCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLnksIHNvdXJjZUFyZWEud2lkdGgs
IHNvdXJjZUFyZWEuaGVpZ2h0LCAwKTsKKworICAgIC8vIFNldCB0aGUgc3dpenpsZSBvZiB0aGUg
c2NyYXRjaCB0ZXh0dXJlIHNvIHRoYXQgdGhlIGNoYW5uZWxzIHNhbXBsZSBpbnRvIHRoZSBjb3Jy
ZWN0IGVtdWxhdGVkCisgICAgLy8gTFVNQSBjaGFubmVscy4KKyAgICBHTGludCBzd2l6emxlWzRd
ID0geworICAgICAgICAobHVtYUZvcm1hdCA9PSBHTF9BTFBIQSkgPyBHTF9BTFBIQSA6IEdMX1JF
RCwKKyAgICAgICAgKGx1bWFGb3JtYXQgPT0gR0xfTFVNSU5BTkNFX0FMUEhBKSA/IEdMX0FMUEhB
IDogR0xfWkVSTywgR0xfWkVSTywgR0xfWkVSTywKKyAgICB9OworICAgIG1GdW5jdGlvbnMtPnRl
eFBhcmFtZXRlcml2KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9SR0JBLCBzd2l6
emxlKTsKKworICAgIC8vIE1ha2UgYSB0ZW1wb3JhcnkgZnJhbWVidWZmZXIgdXNpbmcgdGhlIHNl
Y29uZCBzY3JhdGNoIHRleHR1cmUgdG8gcmVuZGVyIHRoZSBzd2l6emxlZCByZXN1bHQKKyAgICAv
LyB0by4KKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtU2Ny
YXRjaFRleHR1cmVzWzFdKTsKKyAgICBtRnVuY3Rpb25zLT50ZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlQXJlYS53aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFyZWEuaGVpZ2h0LCAwLCBpbnRl
cm5hbEZvcm1hdEluZm8uZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
LT5nZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSwgbnVsbHB0cik7CisKKyAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1TY3JhdGNoRkJPKTsK
KyAgICBtRnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVNjcmF0Y2hUZXh0dXJlc1sxXSwgMCk7CisKKyAgICAvLyBSZW5kZXIg
dG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUsIHNhbXBsaW5nIGZyb20gdGhlIHNjcmF0Y2ggdGV4
dHVyZQorICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obUJsaXRQcm9ncmFtKTsKKyAgICBt
U3RhdGVNYW5hZ2VyLT5zZXRWaWV3cG9ydChnbDo6UmVjdGFuZ2xlKDAsIDAsIHNvdXJjZUFyZWEu
d2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KSk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0U2Npc3Nv
clRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aFJhbmdlKDAu
MGYsIDEuMGYpOworICAgIG1TdGF0ZU1hbmFnZXItPnNldEJsZW5kRW5hYmxlZChmYWxzZSk7Cisg
ICAgbVN0YXRlTWFuYWdlci0+c2V0Q29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRydWUpOwor
ICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoZmFsc2Up
OworICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUNvdmVyYWdlRW5hYmxlZChmYWxzZSk7Cisg
ICAgbVN0YXRlTWFuYWdlci0+c2V0RGVwdGhUZXN0RW5hYmxlZChmYWxzZSk7CisgICAgbVN0YXRl
TWFuYWdlci0+c2V0U3RlbmNpbFRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICBtU3RhdGVNYW5hZ2Vy
LT5zZXRDdWxsRmFjZUVuYWJsZWQoZmFsc2UpOworICAgIG1TdGF0ZU1hbmFnZXItPnNldFBvbHln
b25PZmZzZXRGaWxsRW5hYmxlZChmYWxzZSk7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0UmFzdGVy
aXplckRpc2NhcmRFbmFibGVkKGZhbHNlKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1cmVzWzBdKTsKKworICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRWZXJ0ZXhBcnJheShtVkFPLCAwKTsKKworICAgIG1GdW5jdGlvbnMtPmRyYXdBcnJh
eXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKKworICAgIC8vIEZpbmFsbHksIGNvcHkgdGhlIHN3aXp6
bGVkIHRleHR1cmUgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUKKyAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kVGV4dHVyZSh0ZXh0dXJlVHlwZSwgdGV4dHVyZSk7CisgICAgbUZ1bmN0aW9ucy0+Y29w
eVRleFN1YkltYWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBkZXN0T2Zm
c2V0LngsIGRlc3RPZmZzZXQueSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCk7CisKKyAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIEJsaXRHTDo6aW5pdGlhbGl6
ZVJlc291cmNlcygpCit7CisgICAgaWYgKG1CbGl0UHJvZ3JhbSA9PSAwKQorICAgIHsKKyAgICAg
ICAgbUJsaXRQcm9ncmFtID0gbUZ1bmN0aW9ucy0+Y3JlYXRlUHJvZ3JhbSgpOworCisgICAgICAg
IC8vIENvbXBpbGUgdGhlIGZyYWdtZW50IHNoYWRlcgorICAgICAgICBjb25zdCBjaGFyICp2c1Nv
dXJjZSA9CisgICAgICAgICAgICAiI3ZlcnNpb24gMTUwXG4iCisgICAgICAgICAgICAib3V0IHZl
YzIgdl90ZXhjb29yZDtcbiIKKyAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICJ2b2lkIG1h
aW4oKVxuIgorICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICIgICAgY29uc3QgdmVjMiBx
dWFkX3Bvc2l0aW9uc1s2XSA9IHZlYzJbNl1cbiIKKyAgICAgICAgICAgICIgICAgKFxuIgorICAg
ICAgICAgICAgIiAgICAgICAgdmVjMigwLjBmLCAwLjBmKSxcbiIKKyAgICAgICAgICAgICIgICAg
ICAgIHZlYzIoMC4wZiwgMS4wZiksXG4iCisgICAgICAgICAgICAiICAgICAgICB2ZWMyKDEuMGYs
IDAuMGYpLFxuIgorICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgIiAgICAgICAgdmVjMigw
LjBmLCAxLjBmKSxcbiIKKyAgICAgICAgICAgICIgICAgICAgIHZlYzIoMS4wZiwgMC4wZiksXG4i
CisgICAgICAgICAgICAiICAgICAgICB2ZWMyKDEuMGYsIDEuMGYpXG4iCisgICAgICAgICAgICAi
ICAgICk7XG4iCisgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gdmVjNCgocXVhZF9wb3NpdGlvbnNbZ2xfVmVydGV4SURdICogMi4wKSAtIDEuMCwgMC4wLCAx
LjApO1xuIgorICAgICAgICAgICAgIiAgICB2X3RleGNvb3JkID0gcXVhZF9wb3NpdGlvbnNbZ2xf
VmVydGV4SURdO1xuIgorICAgICAgICAgICAgIn1cbiI7CisKKyAgICAgICAgR0x1aW50IHZzID0g
bUZ1bmN0aW9ucy0+Y3JlYXRlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIpOworICAgICAgICBtRnVu
Y3Rpb25zLT5zaGFkZXJTb3VyY2UodnMsIDEsICZ2c1NvdXJjZSwgbnVsbHB0cik7CisgICAgICAg
IG1GdW5jdGlvbnMtPmNvbXBpbGVTaGFkZXIodnMpOworICAgICAgICBnbDo6RXJyb3IgZXJyb3Ig
PSBDaGVja0NvbXBpbGVTdGF0dXMobUZ1bmN0aW9ucywgdnMpOworCisgICAgICAgIG1GdW5jdGlv
bnMtPmF0dGFjaFNoYWRlcihtQmxpdFByb2dyYW0sIHZzKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+
ZGVsZXRlU2hhZGVyKHZzKTsKKworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICAvLyBD
b21waWxlIHRoZSB2ZXJ0ZXggc2hhZGVyCisgICAgICAgIGNvbnN0IGNoYXIgKmZzU291cmNlID0K
KyAgICAgICAgICAgICIjdmVyc2lvbiAxNTBcbiIKKyAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBs
ZXIyRCB1X3NvdXJjZV90ZXh0dXJlO1xuIgorICAgICAgICAgICAgImluIHZlYzIgdl90ZXhjb29y
ZDtcbiIKKyAgICAgICAgICAgICJvdXQgdmVjNCBvdXRwdXRfY29sb3I7XG4iCisgICAgICAgICAg
ICAiXG4iCisgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKKyAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAiICAgIG91dHB1dF9jb2xvciA9IHRleHR1cmUodV9zb3VyY2VfdGV4dHVyZSwg
dl90ZXhjb29yZCk7XG4iCisgICAgICAgICAgICAifVxuIjsKKworICAgICAgICBHTHVpbnQgZnMg
PSBtRnVuY3Rpb25zLT5jcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKKyAgICAgICAg
bUZ1bmN0aW9ucy0+c2hhZGVyU291cmNlKGZzLCAxLCAmZnNTb3VyY2UsIG51bGxwdHIpOworICAg
ICAgICBtRnVuY3Rpb25zLT5jb21waWxlU2hhZGVyKGZzKTsKKyAgICAgICAgZXJyb3IgPSBDaGVj
a0NvbXBpbGVTdGF0dXMobUZ1bmN0aW9ucywgZnMpOworCisgICAgICAgIG1GdW5jdGlvbnMtPmF0
dGFjaFNoYWRlcihtQmxpdFByb2dyYW0sIGZzKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRl
U2hhZGVyKGZzKTsKKworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtRnVuY3Rpb25z
LT5saW5rUHJvZ3JhbShtQmxpdFByb2dyYW0pOworICAgICAgICBlcnJvciA9IENoZWNrTGlua1N0
YXR1cyhtRnVuY3Rpb25zLCBtQmxpdFByb2dyYW0pOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKwor
ICAgICAgICBHTHVpbnQgdGV4dHVyZVVuaWZvcm0gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9j
YXRpb24obUJsaXRQcm9ncmFtLCAidV9zb3VyY2VfdGV4dHVyZSIpOworICAgICAgICBtU3RhdGVN
YW5hZ2VyLT51c2VQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVu
aWZvcm0xaSh0ZXh0dXJlVW5pZm9ybSwgMCk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBBcnJheVNpemUobVNjcmF0Y2hUZXh0dXJlcyk7IGkrKykKKyAgICB7CisgICAgICAg
IGlmIChtU2NyYXRjaFRleHR1cmVzW2ldID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1G
dW5jdGlvbnMtPmdlblRleHR1cmVzKDEsICZtU2NyYXRjaFRleHR1cmVzW2ldKTsKKyAgICAgICAg
ICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1TY3JhdGNoVGV4
dHVyZXNbaV0pOworCisgICAgICAgICAgICAvLyBVc2UgbmVhcmVzdCwgbm9uLW1pcG1hcHBlZCBz
YW1wbGluZyB3aXRoIHRoZSBzY3JhdGNoIHRleHR1cmUKKyAgICAgICAgICAgIG1GdW5jdGlvbnMt
PnRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChtU2NyYXRjaEZCTyA9PSAwKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+Z2VuRnJhbWVidWZmZXJzKDEsICZtU2NyYXRjaEZCTyk7CisgICAgfQorCisgICAgaWYgKG1W
QU8gPT0gMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmdlblZlcnRleEFycmF5cygxLCAm
bVZBTyk7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9Cit9
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
QmxpdEdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEJsaXRHTC5oOiBEZWZpbmVzIHRoZSBC
bGl0R0wgY2xhc3MsIGEgaGVscGVyIGZvciBibGl0dGluZyB0ZXh0dXJlcworCisjaWZuZGVmIExJ
QkFOR0xFX1JFTkRFUkVSX0dMX0JMSVRHTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9H
TF9CTElUR0xfSF8KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvRXJyb3IuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBGcmFtZWJ1ZmZlcjsK
K30KKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZyYW1lYnVmZmVyR0w7CitjbGFzcyBGdW5j
dGlvbnNHTDsKK2NsYXNzIFN0YXRlTWFuYWdlckdMOworc3RydWN0IFdvcmthcm91bmRzR0w7CisK
K2NsYXNzIEJsaXRHTCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgor
ICAgIEJsaXRHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICBjb25z
dCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wg
KnN0YXRlTWFuYWdlcik7CisgICAgfkJsaXRHTCgpOworCisgICAgZ2w6OkVycm9yIGNvcHlJbWFn
ZVRvTFVNQVdvcmthcm91bmRUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBs
dW1hRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpzb3VyY2UpOworICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2VUb0xVTUFXb3Jr
YXJvdW5kVGV4dHVyZShHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbHVt
YUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSk7CisKKyAgICBnbDo6RXJyb3IgaW5p
dGlhbGl6ZVJlc291cmNlcygpOworCisgIHByaXZhdGU6CisgICAgY29uc3QgRnVuY3Rpb25zR0wg
Km1GdW5jdGlvbnM7CisgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmbVdvcmthcm91bmRzOworICAg
IFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOworCisgICAgR0x1aW50IG1CbGl0UHJvZ3Jh
bTsKKworICAgIEdMdWludCBtU2NyYXRjaFRleHR1cmVzWzJdOworICAgIEdMdWludCBtU2NyYXRj
aEZCTzsKKworICAgIEdMdWludCBtVkFPOworfTsKK30KKworI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9HTF9CTElUR0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmNwcAkocmV2
aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL0J1ZmZlckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDEyIEBACiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaCIKIAogI2luY2x1ZGUgImNv
bW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAg
LTI4LDYgKzMxLDEyIEBACiAKIEJ1ZmZlckdMOjpCdWZmZXJHTChjb25zdCBGdW5jdGlvbnNHTCAq
ZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKQogICAgIDogQnVmZmVySW1w
bCgpLAorICAgICAgbUlzTWFwcGVkKGZhbHNlKSwKKyAgICAgIG1NYXBPZmZzZXQoMCksCisgICAg
ICBtTWFwU2l6ZSgwKSwKKyAgICAgIG1TaGFkb3dCdWZmZXJEYXRhKCFDYW5NYXBCdWZmZXJGb3JS
ZWFkKGZ1bmN0aW9ucykpLAorICAgICAgbVNoYWRvd0NvcHkoKSwKKyAgICAgIG1CdWZmZXJTaXpl
KDApLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAgICAgbVN0YXRlTWFuYWdlcihz
dGF0ZU1hbmFnZXIpLAogICAgICAgbUJ1ZmZlcklEKDApCkBAIC00MCwxNyArNDksMzAgQEAKIAog
QnVmZmVyR0w6On5CdWZmZXJHTCgpCiB7Ci0gICAgaWYgKG1CdWZmZXJJRCkKLSAgICB7Ci0gICAg
ICAgIG1GdW5jdGlvbnMtPmRlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXJJRCk7Ci0gICAgICAgIG1C
dWZmZXJJRCA9IDA7Ci0gICAgfQorICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZUJ1ZmZlcihtQnVm
ZmVySUQpOworICAgIG1CdWZmZXJJRCA9IDA7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXJHTDo6c2V0
RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQogewogICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1
ZmZlcklEKTsKICAgICBtRnVuY3Rpb25zLT5idWZmZXJEYXRhKERlc3RCdWZmZXJPcGVyYXRpb25U
YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKworICAgIGlmIChtU2hhZG93QnVmZmVyRGF0YSkK
KyAgICB7CisgICAgICAgIGlmICghbVNoYWRvd0NvcHkucmVzaXplKHNpemUpKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQg
dG8gcmVzaXplIGJ1ZmZlciBkYXRhIHNoYWRvdyBjb3B5LiIpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHNpemUgPiAwICYmIGRhdGEgIT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAg
ICAgbWVtY3B5KG1TaGFkb3dDb3B5LmRhdGEoKSwgZGF0YSwgc2l6ZSk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtQnVmZmVyU2l6ZSA9IHNpemU7CisKICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKIH0KIApAQCAtNTgsNiArODAsMTIgQEAKIHsKICAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIG1CdWZmZXJJRCk7CiAgICAg
bUZ1bmN0aW9ucy0+YnVmZmVyU3ViRGF0YShEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBvZmZz
ZXQsIHNpemUsIGRhdGEpOworCisgICAgaWYgKG1TaGFkb3dCdWZmZXJEYXRhICYmIHNpemUgPiAw
KQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1TaGFkb3dDb3B5LmRhdGEoKSArIG9mZnNldCwgZGF0
YSwgc2l6ZSk7CisgICAgfQorCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKQEAgLTcwLDM2ICs5OCwxMDAgQEAKIAogICAgIG1GdW5jdGlvbnMtPmNvcHlCdWZmZXJTdWJE
YXRhKFNvdXJjZUJ1ZmZlck9wZXJhdGlvblRhcmdldCwgRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdl
dCwgc291cmNlT2Zmc2V0LCBkZXN0T2Zmc2V0LCBzaXplKTsKIAorICAgIGlmIChtU2hhZG93QnVm
ZmVyRGF0YSAmJiBzaXplID4gMCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzb3VyY2VHTC0+bVNo
YWRvd0J1ZmZlckRhdGEpOworICAgICAgICBtZW1jcHkobVNoYWRvd0NvcHkuZGF0YSgpICsgZGVz
dE9mZnNldCwgc291cmNlR0wtPm1TaGFkb3dDb3B5LmRhdGEoKSArIHNvdXJjZU9mZnNldCwgc2l6
ZSk7CisgICAgfQorCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKIGds
OjpFcnJvciBCdWZmZXJHTDo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKIHsK
LSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQs
IG1CdWZmZXJJRCk7Ci0gICAgKm1hcFB0ciA9IG1GdW5jdGlvbnMtPm1hcEJ1ZmZlcihEZXN0QnVm
ZmVyT3BlcmF0aW9uVGFyZ2V0LCBhY2Nlc3MpOworICAgIGlmIChtU2hhZG93QnVmZmVyRGF0YSkK
KyAgICB7CisgICAgICAgICptYXBQdHIgPSBtU2hhZG93Q29weS5kYXRhKCk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoRGVzdEJ1ZmZl
ck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsKKyAgICAgICAgKm1hcFB0ciA9IG1GdW5jdGlv
bnMtPm1hcEJ1ZmZlcihEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBhY2Nlc3MpOworICAgIH0K
KworICAgIG1Jc01hcHBlZCA9IHRydWU7CisgICAgbU1hcE9mZnNldCA9IDA7CisgICAgbU1hcFNp
emUgICA9IG1CdWZmZXJTaXplOworCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CiB9CiAKIGdsOjpFcnJvciBCdWZmZXJHTDo6bWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKIHsKLSAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIG1CdWZmZXJJ
RCk7Ci0gICAgKm1hcFB0ciA9IG1GdW5jdGlvbnMtPm1hcEJ1ZmZlclJhbmdlKERlc3RCdWZmZXJP
cGVyYXRpb25UYXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOworICAgIGlmIChtU2hhZG93
QnVmZmVyRGF0YSkKKyAgICB7CisgICAgICAgICptYXBQdHIgPSBtU2hhZG93Q29weS5kYXRhKCkg
KyBvZmZzZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRCdWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsKKyAgICAg
ICAgKm1hcFB0ciA9IG1GdW5jdGlvbnMtPm1hcEJ1ZmZlclJhbmdlKERlc3RCdWZmZXJPcGVyYXRp
b25UYXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOworICAgIH0KKworICAgIG1Jc01hcHBl
ZCA9IHRydWU7CisgICAgbU1hcE9mZnNldCA9IG9mZnNldDsKKyAgICBtTWFwU2l6ZSAgID0gbGVu
Z3RoOworCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKIGdsOjpFcnJv
ciBCdWZmZXJHTDo6dW5tYXAoR0xib29sZWFuICpyZXN1bHQpCiB7Ci0gICAgQVNTRVJUKCpyZXN1
bHQpOworICAgIEFTU0VSVChyZXN1bHQpOworICAgIEFTU0VSVChtSXNNYXBwZWQpOwogCi0gICAg
bVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBtQnVm
ZmVySUQpOwotICAgICpyZXN1bHQgPSBtRnVuY3Rpb25zLT51bm1hcEJ1ZmZlcihEZXN0QnVmZmVy
T3BlcmF0aW9uVGFyZ2V0KTsKKyAgICBpZiAobVNoYWRvd0J1ZmZlckRhdGEpCisgICAgeworICAg
ICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQs
IG1CdWZmZXJJRCk7CisgICAgICAgIG1GdW5jdGlvbnMtPmJ1ZmZlclN1YkRhdGEoRGVzdEJ1ZmZl
ck9wZXJhdGlvblRhcmdldCwgbU1hcE9mZnNldCwgbU1hcFNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVNoYWRvd0NvcHkuZGF0YSgpICsgbU1hcE9mZnNldCk7CisgICAg
ICAgICpyZXN1bHQgPSBHTF9UUlVFOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIG1CdWZm
ZXJJRCk7CisgICAgICAgICpyZXN1bHQgPSBtRnVuY3Rpb25zLT51bm1hcEJ1ZmZlcihEZXN0QnVm
ZmVyT3BlcmF0aW9uVGFyZ2V0KTsKKyAgICB9CisKKyAgICBtSXNNYXBwZWQgPSBmYWxzZTsKICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlckdM
OjpnZXREYXRhKGNvbnN0IHVpbnQ4X3QgKipvdXREYXRhKQorZ2w6OkVycm9yIEJ1ZmZlckdMOjpn
ZXRJbmRleFJhbmdlKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0
aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkluZGV4UmFuZ2UgKm91dFJhbmdlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBBU1NFUlQoIW1Jc01hcHBl
ZCk7CisKKyAgICBpZiAobVNoYWRvd0J1ZmZlckRhdGEpCisgICAgeworICAgICAgICAqb3V0UmFu
Z2UgPSBnbDo6Q29tcHV0ZUluZGV4UmFuZ2UodHlwZSwgbVNoYWRvd0NvcHkuZGF0YSgpICsgb2Zm
c2V0LCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
aW1pdGl2ZVJlc3RhcnRFbmFibGVkKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
bVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBtQnVm
ZmVySUQpOworCisgICAgICAgIGNvbnN0IGdsOjpUeXBlICZ0eXBlSW5mbyAgPSBnbDo6R2V0VHlw
ZUluZm8odHlwZSk7CisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlckRhdGEgPSBNYXBCdWZm
ZXJSYW5nZVdpdGhGYWxsYmFjaygKKyAgICAgICAgICAgIG1GdW5jdGlvbnMsIERlc3RCdWZmZXJP
cGVyYXRpb25UYXJnZXQsIG9mZnNldCwgY291bnQgKiB0eXBlSW5mby5ieXRlcywgR0xfTUFQX1JF
QURfQklUKTsKKyAgICAgICAgKm91dFJhbmdlID0gZ2w6OkNvbXB1dGVJbmRleFJhbmdlKHR5cGUs
IGJ1ZmZlckRhdGEsIGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCk7CisgICAgICAgIG1G
dW5jdGlvbnMtPnVubWFwQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQpOworICAgIH0K
KworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCiBHTHVpbnQgQnVmZmVy
R0w6OmdldEJ1ZmZlcklEKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5oCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvQnVmZmVyR0wuaAkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5LDcgQEAKICNpZm5k
ZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfQlVGRkVSR0xfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVO
REVSRVJfR0xfQlVGRkVSR0xfSF8KIAorI2luY2x1ZGUgImNvbW1vbi9NZW1vcnlCdWZmZXIuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBy
eApAQCAtMzAsMTMgKzMxLDI0IEBACiAgICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92
ZXJyaWRlOwogICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7
CiAKLSAgICAvLyBUaGlzIG1ldGhvZCBtYXkgbm90IGhhdmUgYSBjb3JyZXNwb25kaW5nIEdMLWJh
Y2tlZCBmdW5jdGlvbi4gSXQgaXMgbmVjZXNzYXJ5Ci0gICAgLy8gZm9yIHZhbGlkYXRpb24sIGZv
ciBjZXJ0YWluIGluZGV4ZWQgZHJhdyBjYWxscy4KLSAgICBnbDo6RXJyb3IgZ2V0RGF0YShjb25z
dCB1aW50OF90ICoqb3V0RGF0YSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldEluZGV4UmFu
Z2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6SW5kZXhSYW5nZSAqb3V0UmFuZ2UpIG92ZXJyaWRlOwog
CiAgICAgR0x1aW50IGdldEJ1ZmZlcklEKCkgY29uc3Q7CiAKICAgcHJpdmF0ZToKKyAgICBib29s
IG1Jc01hcHBlZDsKKyAgICBzaXplX3QgbU1hcE9mZnNldDsKKyAgICBzaXplX3QgbU1hcFNpemU7
CisKKyAgICBib29sIG1TaGFkb3dCdWZmZXJEYXRhOworICAgIE1lbW9yeUJ1ZmZlciBtU2hhZG93
Q29weTsKKworICAgIHNpemVfdCBtQnVmZmVyU2l6ZTsKKwogICAgIGNvbnN0IEZ1bmN0aW9uc0dM
ICptRnVuY3Rpb25zOwogICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOwogCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGls
ZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMsMTIwICszLDg5IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KKy8vIENvbXBpbGVyR0w6CisvLyAgIElt
cGxlbWVudGF0aW9uIG9mIHRoZSBHTCBjb21waWxlciBtZXRob2RzLgorLy8KIAotLy8gQ29tcGls
ZXJHTC5jcHA6IEltcGxlbWVudHMgdGhlIGNsYXNzIG1ldGhvZHMgZm9yIENvbXBpbGVyR0wuCi0K
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxlckdMLmgiCiAKLSNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCi0jaW5jbHVkZSAi
bGliQU5HTEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9u
c0dMLmgiCiAKIG5hbWVzcGFjZSByeAogewogCi0vLyBHbG9iYWwgY291bnQgb2YgYWN0aXZlIHNo
YWRlciBjb21waWxlciBoYW5kbGVzLiBOZWVkZWQgdG8ga25vdyB3aGVuIHRvIGNhbGwgU2hJbml0
aWFsaXplIGFuZCBTaEZpbmFsaXplLgotc3RhdGljIHNpemVfdCBhY3RpdmVDb21waWxlckhhbmRs
ZXMgPSAwOwotCi1Db21waWxlckdMOjpDb21waWxlckdMKGNvbnN0IGdsOjpEYXRhICZkYXRhKQot
ICAgIDogQ29tcGlsZXJJbXBsKCksCi0gICAgICBtU3BlYyhkYXRhLmNsaWVudFZlcnNpb24gPiAy
ID8gU0hfR0xFUzNfU1BFQyA6IFNIX0dMRVMyX1NQRUMpLAotICAgICAgbU91dHB1dFR5cGUoU0hf
R0xTTF9PVVRQVVQpLAotICAgICAgbVJlc291cmNlcygpLAotICAgICAgbUZyYWdtZW50Q29tcGls
ZXIobnVsbHB0ciksCi0gICAgICBtVmVydGV4Q29tcGlsZXIobnVsbHB0cikKK25hbWVzcGFjZQog
ewotICAgIEFTU0VSVChkYXRhLmNsaWVudFZlcnNpb24gPT0gMiB8fCBkYXRhLmNsaWVudFZlcnNp
b24gPT0gMyk7CiAKLSAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9ICpkYXRhLmNhcHM7Ci0gICAg
Y29uc3QgZ2w6OkV4dGVuc2lvbnMgJmV4dGVuc2lvbnMgPSAqZGF0YS5leHRlbnNpb25zOwotCi0g
ICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmbVJlc291cmNlcyk7Ci0gICAgbVJlc291cmNlcy5N
YXhWZXJ0ZXhBdHRyaWJzID0gY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOwotICAgIG1SZXNvdXJj
ZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgPSBjYXBzLm1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
OwotICAgIG1SZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBjYXBzLm1heFZhcnlpbmdWZWN0
b3JzOwotICAgIG1SZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPSBjYXBzLm1h
eFZlcnRleFRleHR1cmVJbWFnZVVuaXRzOwotICAgIG1SZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0
dXJlSW1hZ2VVbml0cyA9IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsKLSAgICBt
UmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzID0gY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0
czsKLSAgICBtUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSBjYXBzLm1heEZy
YWdtZW50VW5pZm9ybVZlY3RvcnM7Ci0gICAgbVJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IGNh
cHMubWF4RHJhd0J1ZmZlcnM7Ci0gICAgbVJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMgPSBleHRlbnNpb25zLnN0YW5kYXJkRGVyaXZhdGl2ZXM7Ci0gICAgbVJlc291cmNlcy5FWFRf
ZHJhd19idWZmZXJzID0gZXh0ZW5zaW9ucy5kcmF3QnVmZmVyczsKLSAgICBtUmVzb3VyY2VzLkVY
VF9zaGFkZXJfdGV4dHVyZV9sb2QgPSBleHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0Q7Ci0gICAg
bVJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsID0gMDsgLy8gVE9ETzogZGlzYWJsZWQg
dW50aWwgdGhlIGV4dGVuc2lvbiBpcyBhY3R1YWxseSBzdXBwb3J0ZWQuCi0gICAgbVJlc291cmNl
cy5GcmFnbWVudFByZWNpc2lvbkhpZ2ggPSAxOyAvLyBUT0RPOiB1c2Ugc2hhZGVyIHByZWNpc2lv
biBjYXBzIHRvIGRldGVybWluZSBpZiBoaWdoIHByZWNpc2lvbiBpcyBzdXBwb3J0ZWQ/Ci0gICAg
bVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IGV4dGVuc2lvbnMuZnJhZ0RlcHRoOwotCi0gICAg
Ly8gR0xTTCBFUyAzLjAgY29uc3RhbnRzCi0gICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhPdXRwdXRW
ZWN0b3JzID0gY2Fwcy5tYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzIC8gNDsKLSAgICBtUmVzb3Vy
Y2VzLk1heEZyYWdtZW50SW5wdXRWZWN0b3JzID0gY2Fwcy5tYXhGcmFnbWVudElucHV0Q29tcG9u
ZW50cyAvIDQ7Ci0gICAgbVJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQgPSBjYXBzLm1p
blByb2dyYW1UZXhlbE9mZnNldDsKLSAgICBtUmVzb3VyY2VzLk1heFByb2dyYW1UZXhlbE9mZnNl
dCA9IGNhcHMubWF4UHJvZ3JhbVRleGVsT2Zmc2V0OwotfQotCi1Db21waWxlckdMOjp+Q29tcGls
ZXJHTCgpCitTaFNoYWRlck91dHB1dCBHZXRTaGFkZXJPdXRwdXRUeXBlKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMpCiB7Ci0gICAgcmVsZWFzZSgpOwotfQorICAgIEFTU0VSVChmdW5jdGlv
bnMpOwogCi1nbDo6RXJyb3IgQ29tcGlsZXJHTDo6cmVsZWFzZSgpCi17Ci0gICAgaWYgKG1GcmFn
bWVudENvbXBpbGVyKQorICAgIGlmIChmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dM
X0RFU0tUT1ApCiAgICAgewotICAgICAgICBTaERlc3RydWN0KG1GcmFnbWVudENvbXBpbGVyKTsK
LSAgICAgICAgbUZyYWdtZW50Q29tcGlsZXIgPSBOVUxMOwotCi0gICAgICAgIEFTU0VSVChhY3Rp
dmVDb21waWxlckhhbmRsZXMgPiAwKTsKLSAgICAgICAgYWN0aXZlQ29tcGlsZXJIYW5kbGVzLS07
CisgICAgICAgIC8vIEdMU0wgb3V0cHV0cworICAgICAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVh
c3RHTChnbDo6VmVyc2lvbig0LCA1KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBT
SF9HTFNMXzQ1MF9DT1JFX09VVFBVVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDQpKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIFNIX0dMU0xfNDQwX0NPUkVfT1VUUFVUOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gU0hfR0xTTF80MzBfQ09SRV9PVVRQVVQ7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lv
big0LCAyKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTSF9HTFNMXzQyMF9DT1JF
X09VVFBVVDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFz
dEdMKGdsOjpWZXJzaW9uKDQsIDEpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFNI
X0dMU0xfNDEwX0NPUkVfT1VUUFVUOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZ1bmN0
aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMCkpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gU0hfR0xTTF80MDBfQ09SRV9PVVRQVVQ7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAzKSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVDsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9u
KDMsIDIpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFNIX0dMU0xfMTUwX0NPUkVf
T1VUUFVUOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0
R0woZ2w6OlZlcnNpb24oMywgMSkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gU0hf
R0xTTF8xNDBfT1VUUFVUOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZ1bmN0aW9ucy0+
aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMCkpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gU0hfR0xTTF8xMzBfT1VUUFVUOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQ7Cisg
ICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAobVZlcnRleENvbXBpbGVyKQorICAgIGVsc2UgaWYg
KGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfRVMpCiAgICAgewotICAgICAgICBT
aERlc3RydWN0KG1WZXJ0ZXhDb21waWxlcik7Ci0gICAgICAgIG1WZXJ0ZXhDb21waWxlciA9IE5V
TEw7Ci0KLSAgICAgICAgQVNTRVJUKGFjdGl2ZUNvbXBpbGVySGFuZGxlcyA+IDApOwotICAgICAg
ICBhY3RpdmVDb21waWxlckhhbmRsZXMtLTsKKyAgICAgICAgLy8gRVNTTCBvdXRwdXRzCisgICAg
ICAgIHJldHVybiBTSF9FU1NMX09VVFBVVDsKICAgICB9Ci0KLSAgICBpZiAoYWN0aXZlQ29tcGls
ZXJIYW5kbGVzID09IDApCisgICAgZWxzZQogICAgIHsKLSAgICAgICAgU2hGaW5hbGl6ZSgpOwor
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gU2hTaGFkZXJPdXRwdXQoMCk7
CiAgICAgfQotCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLVNoSGFu
ZGxlIENvbXBpbGVyR0w6OmdldENvbXBpbGVySGFuZGxlKEdMZW51bSB0eXBlKQorfSAgLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQorCitDb21waWxlckdMOjpDb21waWxlckdMKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMpCisgICAgOiBtVHJhbnNsYXRvck91dHB1dFR5cGUoR2V0U2hhZGVyT3V0
cHV0VHlwZShmdW5jdGlvbnMpKQogewotICAgIFNoSGFuZGxlICpjb21waWxlciA9IE5VTEw7Ci0g
ICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKLSAg
ICAgICAgY29tcGlsZXIgPSAmbVZlcnRleENvbXBpbGVyOwotICAgICAgICBicmVhazsKLQotICAg
ICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6Ci0gICAgICAgIGNvbXBpbGVyID0gJm1GcmFnbWVu
dENvbXBpbGVyOwotICAgICAgICBicmVhazsKLQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5S
RUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKCgqY29t
cGlsZXIpID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBpZiAoYWN0aXZlQ29tcGlsZXJIYW5k
bGVzID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNoSW5pdGlhbGl6ZSgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgKmNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcih0eXBlLCBtU3Bl
YywgbU91dHB1dFR5cGUsICZtUmVzb3VyY2VzKTsKLSAgICAgICAgYWN0aXZlQ29tcGlsZXJIYW5k
bGVzKys7Ci0gICAgfQotCi0gICAgcmV0dXJuICpjb21waWxlcjsKIH0KIAotfQorfSAgLy8gbmFt
ZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvQ29tcGlsZXJHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxlckdMLmgJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9D
b21waWxlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTExLDMzICsxMSwyMSBAQAogCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJbXBsLmgiCiAKLSNpbmNsdWRlICJHTFNMQU5H
L1NoYWRlckxhbmcuaCIKLQotbmFtZXNwYWNlIGdsCi17Ci1zdHJ1Y3QgRGF0YTsKLX0KLQogbmFt
ZXNwYWNlIHJ4CiB7CitjbGFzcyBGdW5jdGlvbnNHTDsKIAogY2xhc3MgQ29tcGlsZXJHTCA6IHB1
YmxpYyBDb21waWxlckltcGwKIHsKICAgcHVibGljOgotICAgIENvbXBpbGVyR0woY29uc3QgZ2w6
OkRhdGEgJmRhdGEpOwotICAgIH5Db21waWxlckdMKCkgb3ZlcnJpZGU7CisgICAgQ29tcGlsZXJH
TChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKTsKKyAgICB+Q29tcGlsZXJHTCgpIG92ZXJy
aWRlIHt9CiAKLSAgICBnbDo6RXJyb3IgcmVsZWFzZSgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciByZWxlYXNlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsgfQor
ICAgIFNoU2hhZGVyT3V0cHV0IGdldFRyYW5zbGF0b3JPdXRwdXRUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbVRyYW5zbGF0b3JPdXRwdXRUeXBlOyB9CiAKLSAgICBTaEhhbmRsZSBnZXRD
b21waWxlckhhbmRsZShHTGVudW0gdHlwZSk7Ci0KICAgcHJpdmF0ZToKLSAgICBTaFNoYWRlclNw
ZWMgbVNwZWM7Ci0gICAgU2hTaGFkZXJPdXRwdXQgbU91dHB1dFR5cGU7Ci0gICAgU2hCdWlsdElu
UmVzb3VyY2VzIG1SZXNvdXJjZXM7Ci0KLSAgICBTaEhhbmRsZSBtRnJhZ21lbnRDb21waWxlcjsK
LSAgICBTaEhhbmRsZSBtVmVydGV4Q29tcGlsZXI7CisgICAgU2hTaGFkZXJPdXRwdXQgbVRyYW5z
bGF0b3JPdXRwdXRUeXBlOwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5j
cHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw2ICsx
MCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9S
ZW5kZXJlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgi
CkBAIC0zMCw3ICszMSwxNCBAQAogCiBlZ2w6OkVycm9yIERpc3BsYXlHTDo6aW5pdGlhbGl6ZShl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCiB7Ci0gICAgbVJlbmRlcmVyID0gbmV3IFJlbmRlcmVyR0wo
Z2V0RnVuY3Rpb25zR0woKSk7CisgICAgbVJlbmRlcmVyID0gbmV3IFJlbmRlcmVyR0woZ2V0RnVu
Y3Rpb25zR0woKSwgZGlzcGxheS0+Z2V0QXR0cmlidXRlTWFwKCkpOworCisgICAgY29uc3QgZ2w6
OlZlcnNpb24gJm1heFZlcnNpb24gPSBtUmVuZGVyZXItPmdldE1heFN1cHBvcnRlZEVTVmVyc2lv
bigpOworICAgIGlmIChtYXhWZXJzaW9uIDwgZ2w6OlZlcnNpb24oMiwgMCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiT3BlbkdMIEVTIDIu
MCBpcyBub3Qgc3VwcG9ydGFibGUuIik7CisgICAgfQorCiAgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX1NVQ0NFU1MpOwogfQogCkBAIC0zOSwxNiArNDcsMjYgQEAKICAgICBTYWZlRGVsZXRlKG1S
ZW5kZXJlcik7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheUdMOjpjcmVhdGVDb250ZXh0KGNvbnN0
IGVnbDo6Q29uZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzLCBnbDo6Q29udGV4dCAqKm91dENvbnRleHQp
CitJbWFnZUltcGwgKkRpc3BsYXlHTDo6Y3JlYXRlSW1hZ2UoRUdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykKIHsKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK2dsOjpDb250ZXh0ICpEaXNwbGF5R0w6OmNyZWF0ZUNvbnRleHQoY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CiAgICAgQVNT
RVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsKKyAgICByZXR1cm4gbmV3IGdsOjpDb250ZXh0KGNv
bmZpZywgc2hhcmVDb250ZXh0LCBtUmVuZGVyZXIsIGF0dHJpYnMpOworfQogCi0gICAgRUdMaW50
IGNsaWVudFZlcnNpb24gPSBhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwg
MSk7Ci0gICAgYm9vbCBub3RpZnlSZXNldHMgPSAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BF
TkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQsIEVHTF9OT19SRVNFVF9OT1RJRklD
QVRJT05fRVhUKSA9PSBFR0xfTE9TRV9DT05URVhUX09OX1JFU0VUX0VYVCk7Ci0gICAgYm9vbCBy
b2J1c3RBY2Nlc3MgPSAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NF
U1NfRVhULCBFR0xfRkFMU0UpID09IEVHTF9UUlVFKTsKLQotICAgICpvdXRDb250ZXh0ID0gbmV3
IGdsOjpDb250ZXh0KGNvbmZpZywgY2xpZW50VmVyc2lvbiwgc2hhcmVDb250ZXh0LCBtUmVuZGVy
ZXIsIG5vdGlmeVJlc2V0cywgcm9idXN0QWNjZXNzKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7CitTdHJlYW1JbXBsICpEaXNwbGF5R0w6OmNyZWF0ZVN0cmVhbShjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiBlZ2w6OkVycm9yIERpc3BsYXlHTDo6bWFrZUN1cnJlbnQoZWds
OjpTdXJmYWNlICpkcmF3U3VyZmFjZSwgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSwgZ2w6OkNv
bnRleHQgKmNvbnRleHQpCkBAIC02Miw0ICs4MCwxMCBAQAogICAgIHJldHVybiBnbERyYXdTdXJm
YWNlLT5tYWtlQ3VycmVudCgpOwogfQogCitjb25zdCBnbDo6VmVyc2lvbiAmRGlzcGxheUdMOjpn
ZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAoreworICAgIEFTU0VSVChtUmVuZGVyZXIg
IT0gbnVsbHB0cik7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4U3VwcG9ydGVkRVNWZXJz
aW9uKCk7CiB9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmgJKHJldmlzaW9uIDE5
OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9EaXNwbGF5R0wuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDI0IEBACiAgICAgZWds
OjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB0ZXJtaW5hdGUoKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgY3JlYXRlQ29udGV4
dChjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250
ZXh0LCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkNvbnRleHQgKipvdXRDb250ZXh0KSBvdmVycmlkZTsKKyAgICBJbWFn
ZUltcGwgKmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWdsOjpJbWFnZVNpYmxpbmcgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIAorICAgIGds
OjpDb250ZXh0ICpjcmVhdGVDb250ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHQgKnNoYXJlQ29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7CisKKyAgICBTdHJlYW1JbXBsICpjcmVhdGVTdHJlYW0oY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOworCiAgICAgZWdsOjpFcnJv
ciBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJl
YWRTdXJmYWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFs
IGVnbDo6RXJyb3IgZ2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3Qg
PSAwOworCisgIHByb3RlY3RlZDoKKyAgICBSZW5kZXJlckdMICpnZXRSZW5kZXJlcigpIGNvbnN0
IHsgcmV0dXJuIG1SZW5kZXJlcjsgfTsKKyAgICBjb25zdCBnbDo6VmVyc2lvbiAmZ2V0TWF4U3Vw
cG9ydGVkRVNWZXJzaW9uKCkgY29uc3Q7CisKICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0
IEZ1bmN0aW9uc0dMICpnZXRGdW5jdGlvbnNHTCgpIGNvbnN0ID0gMDsKIApJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlYXR1cmVTdXBwb3J0
R0wubWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL0ZlYXR1cmVTdXBwb3J0R0wubWQJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVhdHVyZVN1cHBvcnRH
TC5tZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwNyBAQAorIyBBTkdMRSBSZW5kZXJlckdM
IGZlYXR1cmUgc3VwcG9ydAorRG9jdW1lbnRhdGlvbiBvZiBPcGVuR0wgRVMgYW5kIEVHTCBmZWF0
dXJlcywgY2FwcyBhbmQgZm9ybWF0cyBhbmQgcmVxdWlyZWQgZXh0ZW5zaW9ucy4KKworIyMgT3Bl
bkdMIEVTIEZlYXR1cmUgU3VwcG9ydAorfEZlYXR1cmV8T3BlbkdMIHZlcnNpb258T3BlbkdMIGV4
dGVuc2lvbnxPcGVuR0wgRVMgdmVyc2lvbnxPcGVuR0wgRVMgZXh0ZW5zaW9ufE5vdGVzfAorfC0t
LXwtLS18LS0tfC0tLXwtLS18LS0tfAorfEZyYW1lYnVmZmVyL3JlbmRlcmJ1ZmZlciBvYmplY3Rz
fDMuMHxbR0xfRVhUX2ZyYW1lYnVmZmVyX29iamVjdF0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9y
ZWdpc3RyeS9zcGVjcy9FWFQvZnJhbWVidWZmZXJfb2JqZWN0LnR4dCl8Mi4wfC0tfENhbiBwb3Rl
bnRpYWxseSBiZSBlbXVsYXRlZCB3aXRoIFBidWZmZXJzIGJ1dCByZWFsaXN0aWNhbGx5IHRoaXMg
ZXh0ZW5zaW9uIGlzIGFsd2F5cyByZXF1aXJlZC58Cit8QmxpdCBmcmFtZWJ1ZmZlcnwzLjB8W0dM
X0VYVF9mcmFtZWJ1ZmZlcl9ibGl0XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3Nw
ZWNzL0VYVC9mcmFtZWJ1ZmZlcl9ibGl0LnR4dCl8My4wfFtHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9i
bGl0XShodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMvQU5H
TEUvQU5HTEVfZnJhbWVidWZmZXJfYmxpdC50eHQpIG9yIFtHTF9OVl9mcmFtZWJ1ZmZlcl9ibGl0
XShodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMvTlYvTlZf
ZnJhbWVidWZmZXJfYmxpdC50eHQpfHwKK3xNdWx0aXNhbXBsaW5nfDMuMHxbR0xfRVhUX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlXShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNz
L0VYVC9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS50eHQpfDMuMHxbR0xfRVhUX211bHRpc2FtcGxl
ZF9yZW5kZXJfdG9fdGV4dHVyZV0oaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xl
cy9leHRlbnNpb25zL0VYVC9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlLnR4dCkg
b3IgW0dMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlXShodHRwczovL3d3dy5raHJvbm9z
Lm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMvQU5HTEUvQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUudHh0KXx8Cit8RGVwdGggdGV4dHVyZXN8My4wfFtHTF9BUkJfZGVwdGhfdGV4dHVy
ZV0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvZGVwdGhfdGV4dHVy
ZS50eHQpfDMuMHxbR0xfT0VTX2RlcHRoX3RleHR1cmVdKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3Jn
L3JlZ2lzdHJ5L2dsZXMvZXh0ZW5zaW9ucy9PRVMvT0VTX2RlcHRoX3RleHR1cmUudHh0KSBvciBb
R0xfQU5HTEVfZGVwdGhfdGV4dHVyZV0oaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkv
Z2xlcy9leHRlbnNpb25zL0FOR0xFL0FOR0xFX2RlcHRoX3RleHR1cmUudHh0KQorfERyYXcgYnVm
ZmVycyAoTVJUKXwyLjA/fFtHTF9BUkJfZHJhd19idWZmZXJzXShodHRwczovL3d3dy5vcGVuZ2wu
b3JnL3JlZ2lzdHJ5L3NwZWNzL0FSQi9kcmF3X2J1ZmZlcnMudHh0KSBvciBbR0xfRVhUX2RyYXdf
YnVmZmVyczJdKGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvRVhUL2RyYXdf
YnVmZmVyczIudHh0KXwzLjB8W0dMX0VYVF9kcmF3X2J1ZmZlcnNdKGh0dHBzOi8vd3d3Lmtocm9u
b3Mub3JnL3JlZ2lzdHJ5L2dsZXMvZXh0ZW5zaW9ucy9FWFQvRVhUX2RyYXdfYnVmZmVycy50eHQp
fHwKK3wzRCB0ZXh0dXJlc3wxLjJ8W0dMX0VYVF90ZXh0dXJlM0RdKGh0dHBzOi8vd3d3Lm9wZW5n
bC5vcmcvcmVnaXN0cnkvc3BlY3MvRVhUL3RleHR1cmUzRC50eHQpfDMuMHxbR0xfT0VTX3RleHR1
cmVfM0RdKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L2dsZXMvZXh0ZW5zaW9ucy9P
RVMvT0VTX3RleHR1cmVfM0QudHh0KXx8Cit8QXJyYXkgdGV4dHVyZXN8My4wfFtHTF9FWFRfdGV4
dHVyZV9hcnJheV0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvdGV4
dHVyZV9hcnJheS50eHQpfDMuMHwtLXx8Cit8VGV4dHVyZSBzdG9yYWdlfDQuMnxbR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZV0oaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xlcy9leHRl
bnNpb25zL0VYVC9FWFRfdGV4dHVyZV9zdG9yYWdlLnR4dCl8My4wfFtHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlXShodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMv
RVhUL0VYVF90ZXh0dXJlX3N0b3JhZ2UudHh0KXxDYW4gYmUgZW11bGF0ZWQgd2l0aCBUZXhJbWFn
ZSBjYWxscy58Cit8VW5pZm9ybSBidWZmZXIgb2JqZWN0fDMuMXxbR0xfQVJCX3VuaWZvcm1fYnVm
ZmVyX29iamVjdF0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvdW5p
Zm9ybV9idWZmZXJfb2JqZWN0LnR4dCl8My4wfC0tfHwKK3xTeW5jIG9iamVjdHN8My4yfFtHTF9B
UkJfc3luY10oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvc3luYy50
eHQpfDMuMHwtLXx8Cit8RmVuY2Ugb2JqZWN0c3wtLXxbR0xfTlZfZmVuY2VdKGh0dHBzOi8vd3d3
Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvTlYvZmVuY2UudHh0KXwtLXxbR0xfTlZfZmVuY2Vd
KGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvTlYvZmVuY2UudHh0KXx8Cit8
TWFwQnVmZmVyfDEuNXwtLXwtLXxbR0xfT0VTX21hcGJ1ZmZlcl0oaHR0cHM6Ly93d3cua2hyb25v
cy5vcmcvcmVnaXN0cnkvZ2xlcy9leHRlbnNpb25zL09FUy9PRVNfbWFwYnVmZmVyLnR4dCl8fAor
fE1hcEJ1ZmZlclJhbmdlfDMuMHxbR0xfQVJCX21hcF9idWZmZXJfcmFuZ2VdKGh0dHBzOi8vd3d3
Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL21hcF9idWZmZXJfcmFuZ2UudHh0KXwzLjB8
W0dMX0VYVF9tYXBfYnVmZmVyX3JhbmdlXShodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3Ry
eS9nbGVzL2V4dGVuc2lvbnMvRVhUL0VYVF9tYXBfYnVmZmVyX3JhbmdlLnR4dCl8fAorfFRyYW5z
Zm9ybSBmZWVkYmFja3wzLjB8W0dMX0VYVF90cmFuc2Zvcm1fZmVlZGJhY2tdKEdMX0VYVF90cmFu
c2Zvcm1fZmVlZGJhY2spIG9yIFtHTF9FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrMl0oaHR0cDovL2Rl
dmVsb3Blci5kb3dubG9hZC5udmlkaWEuY29tL29wZW5nbC9zcGVjcy9HTF9FWFRfdHJhbnNmb3Jt
X2ZlZWRiYWNrMi50eHQpIG9yIFtHTF9BUkJfdHJhbnNmb3JtX2ZlZWRiYWNrM10oaHR0cHM6Ly93
d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvdHJhbnNmb3JtX2ZlZWRiYWNrMy50eHQp
fDMuMHwtLXx8Cit8U2FtcGxlciBvYmplY3R8My4zfFtHTF9BUkJfc2FtcGxlcl9vYmplY3RzXSho
dHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0FSQi9zYW1wbGVyX29iamVjdHMu
dHh0KXwzLjB8LS18fAorfE9jY2x1c2lvbiBxdWVyeXwxLjV8W0dMX0FSQl9vY2NsdXNpb25fcXVl
cnldKGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL29jY2x1c2lvbl9x
dWVyeS50eHQpfDIuMHwtLXx8Cit8VGltZXIgcXVlcnl8My4zfFtHTF9BUkJfdGltZXJfcXVlcnld
KGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL3RpbWVyX3F1ZXJ5LnR4
dCl8LS18W0dMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeV0oaHR0cHM6Ly93d3cua2hyb25vcy5v
cmcvcmVnaXN0cnkvZ2xlcy9leHRlbnNpb25zL0VYVC9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnku
dHh0KXx8Cit8VmVydGV4IGFycmF5IG9iamVjdHwzLjB8W0dMX0FSQl92ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0FSQi92ZXJ0ZXhfYXJy
YXlfb2JqZWN0LnR4dCl8My4wfFtHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdF0oaHR0cHM6Ly93
d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZ2xlcy9leHRlbnNpb25zL09FUy9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdC50eHQpfENhbiBiZSBlbXVsYXRlZCBidXQgY29zdHNtYW55IGV4dHJhIEFQSSBj
YWxscy4gIFZpcnR1YWxpemVkIGNvbnRleHRzIGFsc28gcmVxdWlyZSBzb21lIGtpbmQgb2YgZW11
bGF0aW9uIG9mIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZSBzdGF0ZS58Cit8QW5pc290cm9waWMgZmls
dGVyaW5nfC0tfFtHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWNdKGh0dHBzOi8vd3d3
Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvRVhUL3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
LnR4dCl8LS18W0dMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpY10oaHR0cHM6Ly93d3cu
b3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMu
dHh0KXxVYmlxdWl0b3VzIGV4dGVuc2lvbi58CisKKyMjIE9wZW5HTCBFUyBDYXBzCit8Q2FwKHMp
fE9wZW5HTCB2ZXJzaW9ufE9wZW5HTCBleHRlbnNpb258T3BlbkdMIEVTIHZlcnNpb258T3BlbkdM
IEVTIGV4dGVuc2lvbnxOb3Rlc3wKK3wtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwKK3xHTF9NQVhf
RUxFTUVOVF9JTkRFWHw0LjN8W0dMX0FSQl9FUzNfY29tcGF0aWJpbGl0eV0oaHR0cHM6Ly93d3cu
b3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvRVMzX2NvbXBhdGliaWxpdHkudHh0KXwzLjB8
LS18U2VlbXMgcHJldHR5IHNhZmUgdG8gdXNlIGFuIGFyYml0cmFyeSBsaW1pdCwgYWxsIGltcGxl
bWVudGF0aW9ucyB0ZXN0ZWQgcmV0dXJuIDB4RkZGRkZGRkYufAorfEdMX01BWF8zRF9URVhUVVJF
X1NJWkV8MS4yfFtHTF9FWFRfdGV4dHVyZTNEXShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lz
dHJ5L3NwZWNzL0VYVC90ZXh0dXJlM0QudHh0KXwzLjB8W0dMX09FU190ZXh0dXJlXzNEXShodHRw
czovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMvT0VTL09FU190ZXh0
dXJlXzNELnR4dCl8fAorfEdMX01BWF9URVhUVVJFX1NJWkV8MS4wfC0tfDIuMHwtLXx8Cit8R0xf
TUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRXwxLjN8LS18Mi4wfHwKK3xHTF9NQVhfQVJSQVlfVEVY
VFVSRV9MQVlFUlN8My4wfFtHTF9FWFRfdGV4dHVyZV9hcnJheV0oaHR0cHM6Ly93d3cub3Blbmds
Lm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvdGV4dHVyZV9hcnJheS50eHQpfDMuMHwtLXx8Cit8R0xf
TUFYX1RFWFRVUkVfTE9EX0JJQVN8MS41fFtHTF9FWFRfdGV4dHVyZV9sb2RfYmlhc10oaHR0cHM6
Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvdGV4dHVyZV9sb2RfYmlhcy50eHQp
fDMuMHwtLXx8Cit8R0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFIEdMX01BWF9DT0xPUl9BVFRBQ0hN
RU5UU3wzLjB8W0dMX0VYVF9mcmFtZWJ1ZmZlcl9vYmplY3RdKGh0dHBzOi8vd3d3Lm9wZW5nbC5v
cmcvcmVnaXN0cnkvc3BlY3MvRVhUL2ZyYW1lYnVmZmVyX29iamVjdC50eHQpIHwyLjB8LS18fAor
fEdMX01BWF9EUkFXX0JVRkZFUlN8Mi4wP3xbR0xfQVJCX2RyYXdfYnVmZmVyc10oaHR0cHM6Ly93
d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvZHJhd19idWZmZXJzLnR4dCkgb3IgW0dM
X0VYVF9kcmF3X2J1ZmZlcnMyXShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNz
L0VYVC9kcmF3X2J1ZmZlcnMyLnR4dCl8My4wfFtHTF9FWFRfZHJhd19idWZmZXJzXShodHRwczov
L3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMvRVhUL0VYVF9kcmF3X2J1
ZmZlcnMudHh0KXx8Cit8R0xfTUFYX1ZJRVdQT1JUX0RJTVN8MS4wfC0tfDIuMHwtLXx8Cit8R0xf
QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFfDEuMD98LS18Mi4wfC0tfHwKK3xHTF9BTElBU0VEX0xJ
TkVfV0lEVEhfUkFOR0V8MS4yfC0tfDIuMHwtLXx8Cit8R0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JB
TkdFfDEuMnwtLXwyLjB8LS18fAorfEdMX01BWF9FTEVNRU5UU19JTkRJQ0VTfDEuMnwtLXwzLjB8
LS18fAorfEdMX01BWF9FTEVNRU5UU19WRVJUSUNFU3wxLjJ8LS18My4wfC0tfHwKK3xTaGFkZXIg
Zm9ybWF0IHByZWNpc2lvbiAoZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpfDQuMXxbR0xfQVJC
X0VTMl9jb21wYXRpYmlsaXR5XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNz
L0FSQi9FUzJfY29tcGF0aWJpbGl0eS50eHQpfDIuMHwtLXxDYW4gdXNlIHJlYXNvbmFibGUgZGVm
YXVsdCB2YWx1ZXMgKElFRUUgZmxvYXQgYW5kIHR3b3MgY29tcGxlbWVudCBpbnRlZ2VyKS58Cit8
R0xfTUFYX1ZFUlRFWF9BVFRSSUJTfDIuMHwtLXwyLjB8LS18fAorfEdMX01BWF9WRVJURVhfVU5J
Rk9STV9DT01QT05FTlRTfDIuMHwtLXwyLjB8LS18fAorfEdMX01BWF9WRVJURVhfVEVYVFVSRV9J
TUFHRV9VTklUU3wyLjB8LS18Mi4wfC0tfHwKK3xHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9S
UyBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTfDQuMXxbR0xfQVJCX0VTMl9jb21wYXRp
YmlsaXR5XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0FSQi9FUzJfY29t
cGF0aWJpbGl0eS50eHQpfDIuMHwtLXxEZWZpbmVkIGFzIEdMX01BWF9WRVJURVhfVU5JRk9STV9D
T01QT05FTlRTIC8gNCBhbmQgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUyAvIDQu
ICBDYW4gc2ltcGx5IHVzZSB0aG9zZSB2YWx1ZXMgd2hlbiB0aGUgY2FwIGlzIG5vdCBhdmFpbGFi
bGUufAorfEdMX01BWF9WRVJURVhfVU5JRk9STV9CTE9DS1MgR0xfTUFYX0ZSQUdNRU5UX1VOSUZP
Uk1fQkxPQ0tTIEdMX01BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUyBHTF9NQVhfVU5JRk9STV9C
TE9DS19TSVpFIEdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1FTlQgR0xfTUFYX0NPTUJJ
TkVEX1VOSUZPUk1fQkxPQ0tTIEdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05F
TlRTIEdMX01BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFMgfDMuMXxbR0xf
QVJCX3VuaWZvcm1fYnVmZmVyX29iamVjdF0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3Ry
eS9zcGVjcy9BUkIvdW5pZm9ybV9idWZmZXJfb2JqZWN0LnR4dCl8My4wfC0tfHwKK3xHTF9NQVhf
VkVSVEVYX09VVFBVVF9DT01QT05FTlRTfDMuMnwtLXwzLjB8LS18RG9lc24ndCBzZWVtIHRvIGJl
IGEgZGVza3RvcCBleHRlbnNpb24gZm9yIHRoaXMgY2FwLCBpdCBtYXkgYmUgcG9zc2libGUgdG8g
dXNlIHRoZSBtaW5pbXVtIEVTMyB2YWx1ZSAoNjQpIGlmIGxvd2VyIHRoYW4gR0wgMy4yLnwKK3xH
TF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTfDIuMHwtLXwyLjB8LS18fAorfEdMX01B
WF9URVhUVVJFX0lNQUdFX1VOSVRTfDIuMHwtLXwyLjB8LS18fAorfEdMX01BWF9GUkFHTUVOVF9J
TlBVVF9DT01QT05FTlRTfDMuMnwtLXwzLjB8LS18RG9lc24ndCBzZWVtIHRvIGJlIGEgZGVza3Rv
cCBleHRlbnNpb24gZm9yIHRoaXMgY2FwIGVpdGhlciwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHVz
ZSB0aGUgbWluaW11bSBFUzMgdmFsdWUgKDYwKSBpZiBsb3dlciB0aGFuIEdMIDMuMi58Cit8R0xf
TUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUIEdMX01BWF9QUk9HUkFNX1RFWEVMX09GRlNFVHwzLjB8
LS18My4wfC0tfENvdWxkIHBvdGVudGlhbGx5IGJlIGVtdWxhdGVkIGluIHRoZSBzaGFkZXIgYnkg
YWRkaW5nIHRoZSBvZmZzZXRzIGluIG5vcm1hbGl6ZWQgdGV4dHVyZSBjb29yZGluYXRlcyBiZWZv
cmUgc2FtcGxpbmcufAorfEdMX01BWF9WQVJZSU5HX0NPTVBPTkVOVFN8My4wfFtHTF9BUkJfRVMz
X2NvbXBhdGliaWxpdHldKGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJC
L0VTM19jb21wYXRpYmlsaXR5LnR4dCl8My4wfC0tfFdhcyBkZXByaWNhdGVkIGluIHRoZSBPcGVu
R0wgY29yZSBzcGVjIGJ1dCByZS1hZGRlZCBpbiBHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHl8Cit8
R0xfTUFYX1ZBUllJTkdfVkVDVE9SU3w0LjF8W0dMX0FSQl9FUzJfY29tcGF0aWJpbGl0eV0oaHR0
cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvRVMyX2NvbXBhdGliaWxpdHku
dHh0KXwyLjB8LS18RGVmaW5lZCBhcyBHTF9NQVhfVkFSWUlOR19DT01QT05FTlRTIC8gNC58Cit8
R0xfTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTIEdMX01BWF9U
UkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyBHTF9NQVhfVFJBTlNGT1JNX0ZFRURC
QUNLX1NFUEFSQVRFX0NPTVBPTkVOVFN8My4wfFtHTF9FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrXShH
TF9FWFRfdHJhbnNmb3JtX2ZlZWRiYWNrKSBvciBbR0xfRVhUX3RyYW5zZm9ybV9mZWVkYmFjazJd
KGh0dHA6Ly9kZXZlbG9wZXIuZG93bmxvYWQubnZpZGlhLmNvbS9vcGVuZ2wvc3BlY3MvR0xfRVhU
X3RyYW5zZm9ybV9mZWVkYmFjazIudHh0KSBvciBbR0xfQVJCX3RyYW5zZm9ybV9mZWVkYmFjazNd
KGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL3RyYW5zZm9ybV9mZWVk
YmFjazMudHh0KXwzLjB8LS0KK3xHTF9NQVhfU0FNUExFU3wzLjB8W0dMX0VYVF9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZV0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQv
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUudHh0KXwzLjB8W0dMX0VYVF9tdWx0aXNhbXBsZWRfcmVu
ZGVyX3RvX3RleHR1cmVdKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L2dsZXMvZXh0
ZW5zaW9ucy9FWFQvRVhUX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZS50eHQpIG9yIFtH
TF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZV0oaHR0cHM6Ly93d3cua2hyb25vcy5vcmcv
cmVnaXN0cnkvZ2xlcy9leHRlbnNpb25zL0FOR0xFL0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlLnR4dCl8fAorfEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVHwtLXxbR0xfRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljXShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lz
dHJ5L3NwZWNzL0VYVC90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYy50eHQpfC0tfFtHTF9FWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWNdKGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0
cnkvc3BlY3MvRVhUL3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljLnR4dCl8VWJpcXVpdG91cyBl
eHRlbnNpb24ufAorfElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUIElNUExFTUVOVEFU
SU9OX0NPTE9SX1JFQURfVFlQRXwtLXxbR0xfQVJCX0VTMl9jb21wYXRpYmlsaXR5XShodHRwczov
L3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0FSQi9FUzJfY29tcGF0aWJpbGl0eS50eHQp
fDIuMHwtLXxEZXNrdG9wIEdMIGRvZXNuJ3QgYXMgbWFueSBsaW1pdGF0aW9ucyBhcyBFUyBmb3Ig
UmVhZFBpeGVscywgY2FuIGVpdGhlciBhbHdheXMgcmV0dXJuIEdMX1JHQkEvR0xfVU5TSUdORURf
QllURSBvciByZXR1cm4gdGhlIGZvcm1hdCBhbmQgdHlwZSBvZiB0aGUgcmVhZCBidWZmZXIufAor
CisjI09wZW5HTCBFUyBGb3JtYXRzIChUT0RPKQorfEZvcm1hdHxPcGVuR0wgdmVyc2lvbnxPcGVu
R0wgZXh0ZW5zaW9ufE9wZW5HTCBFUyB2ZXJzaW9ufE9wZW5HTCBFUyBleHRlbnNpb258Tm90ZXN8
Cit8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18Cit8R0xfUkdCQTg8YnI+R0xfUkdCOCB8MS4wfC0t
fDMuMHxbR0xfT0VTX3JnYjhfcmdiYThdKGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5
L2dsZXMvZXh0ZW5zaW9ucy9PRVMvT0VTX3JnYjhfcmdiYTgudHh0KXx8CisKKyMjIEVTU0wgRmVh
dHVyZXMgKFRPRE8pCit8RmVhdHVyZXxHTFNMIHZlcnNpb258Tm90ZXN8Cit8LS0tfC0tLXwtLS18
Cit8VW5zaWduZWQgaW50ZWdlcnN8MS4zMHx8Cit8UGFjayBsYXlvdXQgc3RkMTQwfDEuNDB8fAor
CisjIyBFU1NMMyBCdWlsdGlucworQnVpbHRpbnMgdGhhdCBhcmUgYWRkZWQgZ29pbmcgZnJvbSBF
U1NMMSB0byBFU1NMMy4KKworfEZ1bmN0aW9ufEdMU0wgdmVyc2lvbnxFeHRlbnNpb258Tm90ZXN8
Cit8LS0tfC0tLXwtLS18LS0tfAorfHNpbmg8YnI+Y29zaDxicj50YW5oPGJyPmFzaW5oPGJyPmFj
b3NofDEuMzB8fHwKK3xhdGFuaHwxLjEwfHx8Cit8YWJzIChnZW5JVHlwZSl8MS4zMHxbR0xfRVhU
X2dwdV9zaGFkZXI0XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0VYVC9n
cHVfc2hhZGVyNC50eHQpfHwKK3xzaWduIChnZW5JVHlwZSl8MS41MHxbR0xfRVhUX2dwdV9zaGFk
ZXI0XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0VYVC9ncHVfc2hhZGVy
NC50eHQpfENhbiBiZSBlbXVsYXRlZCBlYXNpbHkufAorfHRydW5jfDEuMzB8fHwKK3xyb3VuZDxi
cj5yb3VuZEV2ZW58MS4zMHx8fAorfG1pbiAoZ2VuSVR5cGUsIGdlblVUeXBlKTxicj5tYXggKGdl
bklUeXBlLCBnZW5VVHlwZSk8YnI+Y2xhbXAgKGdlbklUeXBlLCBnZW5VVHlwZSl8MS4zMHx8Cit8
bWl4IChnZW5CVHlwZSl8NC41MHxbR0xfRVhUX3NoYWRlcl9pbnRlZ2VyX21peF0oaHR0cHM6Ly93
d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvc2hhZGVyX2ludGVnZXJfbWl4LnR4dCl8
U2hvdWxkIGJlIHBvc3NpYmxlIHRvIGVtdWxhdGUgd2l0aCBhIHRlcm5lcnkgb3BlcmF0aW9uLnwK
K3xtb2RmfDEuMzB8fHwKK3xpc25hbnwxLjMwfHx8Cit8aXNpbmZ8MS4xMHx8fAorfGZsb2F0Qml0
c1RvSW50PGJyPmZsb2F0Qml0c1RvVWludDxicj5pbnRCaXRzVG9GbG9hdDxicj51aW50Qml0c1Rv
RmxvYXR8My4zMHxbR0xfQVJCX3NoYWRlcl9iaXRfZW5jb2RpbmddKGh0dHBzOi8vd3d3Lm9wZW5n
bC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL3NoYWRlcl9iaXRfZW5jb2RpbmcudHh0KSBvciBbQVJC
X2dwdV9zaGFkZXI1XShodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0FSQi9n
cHVfc2hhZGVyNS50eHQpfHwKK3xwYWNrU25vcm0yeDE2PGJyPnBhY2tIYWxmMngxNjxicj51bnBh
Y2tTbm9ybTJ4MTY8YnI+dW5wYWNrSGFsZjJ4MTZ8NC4yMHxbR0xfQVJCX3NoYWRpbmdfbGFuZ3Vh
Z2VfcGFja2luZ10oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvc2hh
ZGluZ19sYW5ndWFnZV9wYWNraW5nLnR4dCl8Q2FuIGJlIGVtdWxhdGVkIHVzaW5nIGJpdCBjYXN0
aW5nIGZ1bmN0aW9ucy58Cit8cGFja1Vub3JtMngxNjxicj51bnBhY2tVbm9ybTJ4MTZ8NC4xMHxb
R0xfQVJCX3NoYWRpbmdfbGFuZ3VhZ2VfcGFja2luZ10oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9y
ZWdpc3RyeS9zcGVjcy9BUkIvc2hhZGluZ19sYW5ndWFnZV9wYWNraW5nLnR4dCl8Q2FuIGJlIGVt
dWxhdGVkIHVzaW5nIGJpdCBjYXN0aW5nIGZ1bmN0aW9ucy58Cit8bWF0cml4Q29tcE11bHQgKE54
TSBtYXRyaWNlcyl8MS4xMHx8fAorfG91dGVyUHJvZHVjdHwxLjIwfHx8Cit8dHJhbnNwb3NlfDEu
MjB8fHwKK3xkZXRlcm1pbmFudHwxLjUwfHxDYW4gYmUgZW11bGF0ZWQufAorfGludmVyc2V8MS40
MHx8Q2FuIGJlIGVtdWxhdGVkLnwKK3xsZXNzVGhhbiAodXZlYyk8YnI+bGVzc1RoYW5FcXVhbCAo
dXZlYyk8YnI+Z3JlYXRlclRoYW4gKHV2ZWMpPGJyPmdyZWF0ZXJUaGFuRXF1YWwgKHV2ZWMpPGJy
PmVxdWFsICh1dmVjKTxicj5ub3RFcXVhbCAodXZlYyl8MS4zMHx8fAorfHRleHR1cmU8YnI+dGV4
dHVyZVByb2o8YnI+dGV4dHVyZUxvZDxicj50ZXh0dXJlT2Zmc2V0PGJyPnRleHR1cmVQcm9qT2Zm
c2V0PGJyPnRleHR1cmVMb2RPZmZzZXQ8YnI+dGV4dHVyZVByb2pMb2Q8YnI+dGV4dHVyZVByb2pM
b2RPZmZzZXQ8YnI+dGV4ZWxGZXRjaDxicj50ZXhlbEZldGNoT2Zmc2V0PGJyPnRleHR1cmVHcmFk
PGJyPnRleHR1cmVHcmFkT2Zmc2V0PGJyPnRleHR1cmVQcm9qR3JhZDxicj50ZXh0dXJlUHJvakdy
YWRPZmZzZXQ8YnI+dGV4dHVyZVNpemV8MS4zMHx8RXF1aXZhbGVudCB0byB0ZXh0dXJlMkQsIHRl
eHR1cmVDdWJlLCBldGN8Cit8ZEZkeDxicj5kRmR5PGJyPmZ3aWR0aHwxLjEwfHwKKworIyMgRUdM
IEZlYXR1cmUgU3VwcG9ydCAoVE9ETykKK3xGZWF0dXJlfEVHTCB2ZXJzaW9ufEVHTCBleHRlbnNp
b258V0dMIGNvcmV8V0dMIGV4dGVuc2lvbnxHTFggdmVyc2lvbnxHTFggZXh0ZW5zaW9uc3xOb3Rl
c3wKK3wtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfAorfFBidWZmZXJzfHx8Tm98W1dH
TF9BUkJfcGJ1ZmZlcl0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIv
d2dsX3BidWZmZXIudHh0KXx8fHwKK3xCaW5kVGV4SW1hZ2V8fHxOb3xbV0dMX0FSQl9yZW5kZXJf
dGV4dHVyZV0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9BUkIvd2dsX3Jl
bmRlcl90ZXh0dXJlLnR4dCl8fHxQb3NzaWJseSB0byBlbXVsYXRlIHdpdGggT3BlbkdMIHRleHR1
cmVzIGJ1dCBub3Qgc3RyaWN0bHkgcmVxdWlyZWQsIGl0IGlzIHBvc3NpYmxlIG9ubHkgZXhwb3J0
IEVHTCBjb25maWdzIHdpdGhvdXQgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0IgYW5kIEVHTF9CSU5E
X1RPX1RFWFRVUkVfUkdCQS4gQmluZGFibGUgcGJ1ZmZlcnMgbWF5IGJlIHJlcXVpcmVkIGJ5IENo
cm9tZSB0aG91Z2gufAorfFBpeG1hcHN8fHx8fHx8fAorfFN3YXAgY29udHJvbHx8fE5vfFtXR0xf
RVhUX3N3YXBfY29udHJvbF0oaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9F
WFQvd2dsX3N3YXBfY29udHJvbC50eHQpfE5vfFtHTFhfRVhUX3N3YXBfY29udHJvbF0oaHR0cHM6
Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvc3dhcF9jb250cm9sLnR4dCl8fApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Zy
YW1lYnVmZmVyR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNwcAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Zy
YW1lYnVmZmVyR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQAogCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgogCisjaW5jbHVkZSAiY29t
bW9uL0JpdFNldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRGF0YS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCkBAIC0xOCwz
OSArMTksNjEgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJidWZmZXJH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNHTC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1Bs
YXRmb3JtLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBnbDsKKwogbmFtZXNwYWNlIHJ4CiB7CiAKLUZy
YW1lYnVmZmVyR0w6OkZyYW1lYnVmZmVyR0woY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZk
YXRhLCBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVN
YW5hZ2VyLCBib29sIGlzRGVmYXVsdCkKK0ZyYW1lYnVmZmVyR0w6OkZyYW1lYnVmZmVyR0woY29u
c3QgRnJhbWVidWZmZXI6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzRGVmYXVsdCkKICAgICA6IEZyYW1lYnVmZmVySW1wbChkYXRh
KSwKICAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIoc3Rh
dGVNYW5hZ2VyKSwKLSAgICAgIG1GcmFtZWJ1ZmZlcklEKDApCisgICAgICBtV29ya2Fyb3VuZHMo
d29ya2Fyb3VuZHMpLAorICAgICAgbUZyYW1lYnVmZmVySUQoMCksCisgICAgICBtSXNEZWZhdWx0
KGlzRGVmYXVsdCkKIHsKLSAgICBpZiAoIWlzRGVmYXVsdCkKKyAgICBpZiAoIW1Jc0RlZmF1bHQp
CiAgICAgewogICAgICAgICBtRnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1
ZmZlcklEKTsKICAgICB9CiB9CiAKK0ZyYW1lYnVmZmVyR0w6OkZyYW1lYnVmZmVyR0woR0x1aW50
IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlcjo6RGF0
YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3Vu
ZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlTWFu
YWdlckdMICpzdGF0ZU1hbmFnZXIpCisgICAgOiBGcmFtZWJ1ZmZlckltcGwoZGF0YSksCisgICAg
ICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCisgICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdl
ciksCisgICAgICBtV29ya2Fyb3VuZHMod29ya2Fyb3VuZHMpLAorICAgICAgbUZyYW1lYnVmZmVy
SUQoaWQpLAorICAgICAgbUlzRGVmYXVsdCh0cnVlKQoreworfQorCiBGcmFtZWJ1ZmZlckdMOjp+
RnJhbWVidWZmZXJHTCgpCiB7Ci0gICAgaWYgKG1GcmFtZWJ1ZmZlcklEICE9IDApCi0gICAgewot
ICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcklE
KTsKLSAgICAgICAgbUZyYW1lYnVmZmVySUQgPSAwOwotICAgIH0KKyAgICBtU3RhdGVNYW5hZ2Vy
LT5kZWxldGVGcmFtZWJ1ZmZlcihtRnJhbWVidWZmZXJJRCk7CisgICAgbUZyYW1lYnVmZmVySUQg
PSAwOwogfQogCi1zdGF0aWMgdm9pZCBCaW5kRnJhbWVidWZmZXJBdHRhY2htZW50KGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSBhdHRhY2htZW50UG9pbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmF0dGFjaG1lbnQpCitzdGF0aWMgdm9pZCBCaW5kRnJhbWVidWZmZXJBdHRhY2htZW50KGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50UG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCkK
IHsKICAgICBpZiAoYXR0YWNobWVudCkKICAgICB7CiAgICAgICAgIGlmIChhdHRhY2htZW50LT50
eXBlKCkgPT0gR0xfVEVYVFVSRSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgZ2w6OlRl
eHR1cmUgKnRleHR1cmUgPSBhdHRhY2htZW50LT5nZXRUZXh0dXJlKCk7CisgICAgICAgICAgICBj
b25zdCBUZXh0dXJlICp0ZXh0dXJlICAgICA9IGF0dGFjaG1lbnQtPmdldFRleHR1cmUoKTsKICAg
ICAgICAgICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFzPFRleHR1cmVH
TD4odGV4dHVyZSk7CiAKICAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRUYXJnZXQoKSA9PSBH
TF9URVhUVVJFXzJEKQpAQCAtNzUsNyArOTgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2Ug
aWYgKGF0dGFjaG1lbnQtPnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGF0dGFjaG1l
bnQtPmdldFJlbmRlcmJ1ZmZlcigpOworICAgICAgICAgICAgY29uc3QgUmVuZGVyYnVmZmVyICpy
ZW5kZXJidWZmZXIgICAgID0gYXR0YWNobWVudC0+Z2V0UmVuZGVyYnVmZmVyKCk7CiAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJidWZmZXJHTCAqcmVuZGVyYnVmZmVyR0wgPSBHZXRJbXBsQXM8UmVu
ZGVyYnVmZmVyR0w+KHJlbmRlcmJ1ZmZlcik7CiAKICAgICAgICAgICAgIGZ1bmN0aW9ucy0+ZnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnRQb2ludCwgR0xf
UkVOREVSQlVGRkVSLApAQCAtOTMsMjA2ICsxMTYsMjgwIEBACiAgICAgfQogfQogCi12b2lkIEZy
YW1lYnVmZmVyR0w6Om9uVXBkYXRlQ29sb3JBdHRhY2htZW50KHNpemVfdCBpbmRleCkKK0Vycm9y
IEZyYW1lYnVmZmVyR0w6OmRpc2NhcmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzKQogewotICAgIGlmIChtRnJhbWVidWZmZXJJRCAhPSAwKQotICAgIHsKLSAgICAgICAg
bVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZm
ZXJJRCk7Ci0gICAgICAgIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQobUZ1bmN0aW9ucywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLmdldENvbG9yQXR0
YWNobWVudChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluZGV4KSkpOwotICAgIH0KKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
IH0KIAotdm9pZCBGcmFtZWJ1ZmZlckdMOjpvblVwZGF0ZURlcHRoQXR0YWNobWVudCgpCitFcnJv
ciBGcmFtZWJ1ZmZlckdMOjppbnZhbGlkYXRlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICph
dHRhY2htZW50cykKIHsKLSAgICBpZiAobUZyYW1lYnVmZmVySUQgIT0gMCkKLSAgICB7Ci0gICAg
ICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1l
YnVmZmVySUQpOwotICAgICAgICBCaW5kRnJhbWVidWZmZXJBdHRhY2htZW50KG1GdW5jdGlvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQVRUQUNITUVOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YS5nZXREZXB0aEF0dGFjaG1l
bnQoKSk7Ci0gICAgfQotfQotCi12b2lkIEZyYW1lYnVmZmVyR0w6Om9uVXBkYXRlU3RlbmNpbEF0
dGFjaG1lbnQoKQotewotICAgIGlmIChtRnJhbWVidWZmZXJJRCAhPSAwKQotICAgIHsKLSAgICAg
ICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVi
dWZmZXJJRCk7Ci0gICAgICAgIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQobUZ1bmN0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEuZ2V0U3RlbmNpbEF0dGFj
aG1lbnQoKSk7Ci0gICAgfQotfQotCi12b2lkIEZyYW1lYnVmZmVyR0w6Om9uVXBkYXRlRGVwdGhT
dGVuY2lsQXR0YWNobWVudCgpCi17Ci0gICAgaWYgKG1GcmFtZWJ1ZmZlcklEICE9IDApCi0gICAg
ewotICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1GcmFtZWJ1ZmZlcklEKTsKLSAgICAgICAgQmluZEZyYW1lYnVmZmVyQXR0YWNobWVudChtRnVu
Y3Rpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX1NURU5D
SUxfQVRUQUNITUVOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YS5n
ZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkpOwotICAgIH0KLX0KLQotdm9pZCBGcmFtZWJ1ZmZl
ckdMOjpzZXREcmF3QnVmZmVycyhzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYnVmZmVycykK
LXsKLSAgICBpZiAobUZyYW1lYnVmZmVySUQgIT0gMCkKLSAgICB7Ci0gICAgICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwot
ICAgICAgICBtRnVuY3Rpb25zLT5kcmF3QnVmZmVycyhjb3VudCwgYnVmZmVycyk7Ci0gICAgfQot
fQotCi12b2lkIEZyYW1lYnVmZmVyR0w6OnNldFJlYWRCdWZmZXIoR0xlbnVtIGJ1ZmZlcikKLXsK
LSAgICBpZiAobUZyYW1lYnVmZmVySUQgIT0gMCkKLSAgICB7Ci0gICAgICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwotICAg
ICAgICBtRnVuY3Rpb25zLT5yZWFkQnVmZmVyKGJ1ZmZlcik7Ci0gICAgfQotfQotCi1nbDo6RXJy
b3IgRnJhbWVidWZmZXJHTDo6aW52YWxpZGF0ZShzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAq
YXR0YWNobWVudHMpCi17CiAgICAgLy8gU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGEgaGlu
dCBhbmQgbm90IGF2YWlsYWJsZSB1bnRpbCBPcGVuR0wgNC4zLCBvbmx5IGNhbGwgaXQgaWYgaXQg
aXMgYXZhaWxhYmxlLgogICAgIGlmIChtRnVuY3Rpb25zLT5pbnZhbGlkYXRlRnJhbWVidWZmZXIp
CiAgICAgewogICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKLSAgICAgICAgbUZ1bmN0aW9ucy0+aW52YWxpZGF0ZUZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBjb3VudCwgYXR0YWNobWVudHMpOworICAgICAgICBt
RnVuY3Rpb25zLT5pbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGNvdW50KSwgYXR0YWNobWVudHMpOwogICAgIH0KIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZlckdMOjppbnZhbGlkYXRlU3ViKHNpemVfdCBjb3VudCwg
Y29uc3QgR0xlbnVtICphdHRhY2htZW50cywgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSkKK0Vy
cm9yIEZyYW1lYnVmZmVyR0w6OmludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
KQogewogICAgIC8vIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMganVzdCBhIGhpbnQgYW5kIG5vdCBh
dmFpbGFibGUgdW50aWwgT3BlbkdMIDQuMywgb25seSBjYWxsIGl0IGlmIGl0IGlzIGF2YWlsYWJs
ZS4KICAgICBpZiAobUZ1bmN0aW9ucy0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKQogICAgIHsK
ICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
RnJhbWVidWZmZXJJRCk7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmludmFsaWRhdGVTdWJGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgY291bnQsIGF0dGFjaG1lbnRzLCBhcmVhLngsIGFyZWEueSwg
YXJlYS53aWR0aCwgYXJlYS5oZWlnaHQpOworICAgICAgICBtRnVuY3Rpb25zLT5pbnZhbGlkYXRl
U3ViRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGNvdW50
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1l
bnRzLCBhcmVhLngsIGFyZWEueSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQpOwogICAgIH0KIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBFcnJvcihHTF9O
T19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhcihjb25zdCBnbDo6
RGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBtYXNrKQorRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXIo
Y29uc3QgRGF0YSAmZGF0YSwgR0xiaXRmaWVsZCBtYXNrKQogewotICAgIG1TdGF0ZU1hbmFnZXIt
PnNldENsZWFyU3RhdGUoKmRhdGEuc3RhdGUsIG1hc2spOworICAgIHN5bmNDbGVhclN0YXRlKG1h
c2spOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
bUZyYW1lYnVmZmVySUQpOwogICAgIG1GdW5jdGlvbnMtPmNsZWFyKG1hc2spOwogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9S
KTsKIH0KIAotc3RhdGljIEdMYml0ZmllbGQgR2V0Q2xlYXJCdWZmZXJNYXNrKEdMZW51bSBidWZm
ZXIpCitFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcmZ2KGNvbnN0IERhdGEgJmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsKLSAg
ICBzd2l0Y2ggKGJ1ZmZlcikKLSAgICB7Ci0gICAgICBjYXNlIEdMX0NPTE9SOiAgICAgICAgICBy
ZXR1cm4gR0xfQ09MT1JfQlVGRkVSX0JJVDsKLSAgICAgIGNhc2UgR0xfREVQVEg6ICAgICAgICAg
IHJldHVybiBHTF9ERVBUSF9CVUZGRVJfQklUOwotICAgICAgY2FzZSBHTF9TVEVOQ0lMOiAgICAg
ICAgcmV0dXJuIEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKLSAgICAgIGNhc2UgR0xfREVQVEhfU1RF
TkNJTDogIHJldHVybiBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklU
OwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgcmV0dXJuIDA7Ci0gICAgfQotfQotCi1n
bDo6RXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJmdihjb25zdCBnbDo6U3RhdGUgJnN0
YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBjb25zdCBHTGZsb2F0ICp2YWx1
ZXMpCi17Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0Q2xlYXJTdGF0ZShzdGF0ZSwgR2V0Q2xlYXJC
dWZmZXJNYXNrKGJ1ZmZlcikpOworICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRlKGJ1ZmZlciwgZHJh
d2J1ZmZlcik7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtRnJhbWVidWZmZXJJRCk7CiAgICAgbUZ1bmN0aW9ucy0+Y2xlYXJCdWZmZXJmdihidWZm
ZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgRnJh
bWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJ1aXYoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVt
IGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0x1aW50ICp2YWx1ZXMpCitFcnJvciBG
cmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcnVpdihjb25zdCBEYXRhICZkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlcykKIHsKLSAgICBtU3RhdGVN
YW5hZ2VyLT5zZXRDbGVhclN0YXRlKHN0YXRlLCBHZXRDbGVhckJ1ZmZlck1hc2soYnVmZmVyKSk7
CisgICAgc3luY0NsZWFyQnVmZmVyU3RhdGUoYnVmZmVyLCBkcmF3YnVmZmVyKTsKICAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklE
KTsKICAgICBtRnVuY3Rpb25zLT5jbGVhckJ1ZmZlcnVpdihidWZmZXIsIGRyYXdidWZmZXIsIHZh
bHVlcyk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1nbDo6RXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJC
dWZmZXJpdihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3
YnVmZmVyLCBjb25zdCBHTGludCAqdmFsdWVzKQorRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJC
dWZmZXJpdihjb25zdCBEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWVzKQogewotICAgIG1TdGF0ZU1hbmFnZXItPnNldENsZWFyU3RhdGUoc3Rh
dGUsIEdldENsZWFyQnVmZmVyTWFzayhidWZmZXIpKTsKKyAgICBzeW5jQ2xlYXJCdWZmZXJTdGF0
ZShidWZmZXIsIGRyYXdidWZmZXIpOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwogICAgIG1GdW5jdGlvbnMtPmNsZWFy
QnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOwogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAot
Z2w6OkVycm9yIEZyYW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyZmkoY29uc3QgZ2w6OlN0YXRlICZz
dGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgR0xmbG9hdCBkZXB0aCwgR0xp
bnQgc3RlbmNpbCkKK0Vycm9yIEZyYW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyZmkoY29uc3QgRGF0
YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBkZXB0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RlbmNpbCkKIHsKLSAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXRDbGVhclN0YXRlKHN0YXRlLCBHZXRDbGVhckJ1ZmZlck1hc2soYnVmZmVy
KSk7CisgICAgc3luY0NsZWFyQnVmZmVyU3RhdGUoYnVmZmVyLCBkcmF3YnVmZmVyKTsKICAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZl
cklEKTsKICAgICBtRnVuY3Rpb25zLT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZlciwg
ZGVwdGgsIHN0ZW5jaWwpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyR0w6
OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QKIHsKLSAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IGdldERhdGEoKS5nZXRS
ZWFkQXR0YWNobWVudCgpOworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0
dGFjaG1lbnQgPSBnZXREYXRhKCkuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQgPSByZWFkQXR0YWNobWVudC0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKLSAgICBj
b25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRl
cm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOworICAgIGNvbnN0IEludGVybmFsRm9ybWF0
ICZpbnRlcm5hbEZvcm1hdEluZm8gICAgPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxG
b3JtYXQpOwogICAgIHJldHVybiBpbnRlcm5hbEZvcm1hdEluZm8uZm9ybWF0OwogfQogCiBHTGVu
dW0gRnJhbWVidWZmZXJHTDo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRUeXBlKCkgY29uc3QK
IHsKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9
IGdldERhdGEoKS5nZXRSZWFkQXR0YWNobWVudCgpOworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBnZXREYXRhKCkuZ2V0UmVhZEF0dGFjaG1lbnQoKTsK
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQgPSByZWFkQXR0YWNobWVudC0+Z2V0SW50ZXJuYWxG
b3JtYXQoKTsKLSAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmludGVybmFsRm9ybWF0SW5m
byA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOworICAgIGNvbnN0
IEludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gICAgPSBHZXRJbnRlcm5hbEZvcm1h
dEluZm8oaW50ZXJuYWxGb3JtYXQpOwogICAgIHJldHVybiBpbnRlcm5hbEZvcm1hdEluZm8udHlw
ZTsKIH0KIAotZ2w6OkVycm9yIEZyYW1lYnVmZmVyR0w6OnJlYWRQaXhlbHMoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIEdMdm9pZCAqcGl4ZWxzKSBjb25zdAorRXJyb3IgRnJhbWVidWZmZXJHTDo6cmVh
ZFBpeGVscyhjb25zdCBTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVs
cykgY29uc3QKIHsKLSAgICBjb25zdCBnbDo6UGl4ZWxQYWNrU3RhdGUgJnBhY2tTdGF0ZSA9IHN0
YXRlLmdldFBhY2tTdGF0ZSgpOworICAgIC8vIFRPRE86IGRvbid0IHN5bmMgdGhlIHBpeGVsIHBh
Y2sgc3RhdGUgaGVyZSBvbmNlIHRoZSBkaXJ0eSBiaXRzIGNvbnRhaW4gdGhlIHBpeGVsIHBhY2sg
YnVmZmVyCisgICAgLy8gYmluZGluZworICAgIGNvbnN0IFBpeGVsUGFja1N0YXRlICZwYWNrU3Rh
dGUgPSBzdGF0ZS5nZXRQYWNrU3RhdGUoKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFBh
Y2tTdGF0ZShwYWNrU3RhdGUpOwogCi0gICAgLy8gVE9ETzogc2V0IHBhY2sgc3RhdGUKLSAgICBp
ZiAocGFja1N0YXRlLnJvd0xlbmd0aCAhPSAwIHx8IHBhY2tTdGF0ZS5za2lwUm93cyAhPSAwIHx8
IHBhY2tTdGF0ZS5za2lwUGl4ZWxzICE9IDApCi0gICAgewotICAgICAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJpbnZh
bGlkIHBpeGVsIHN0b3JlIHBhcmFtZXRlcnMgaW4gcmVhZFBpeGVscyIpOwotICAgIH0KLQogICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtRnJh
bWVidWZmZXJJRCk7CiAgICAgbUZ1bmN0aW9ucy0+cmVhZFBpeGVscyhhcmVhLngsIGFyZWEueSwg
YXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJP
Uik7CiB9CiAKLWdsOjpFcnJvciBGcmFtZWJ1ZmZlckdMOjpibGl0KGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJmRlc3RBcmVhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBt
YXNrLCBHTGVudW0gZmlsdGVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVm
ZmVyKQorRXJyb3IgRnJhbWVidWZmZXJHTDo6YmxpdChjb25zdCBTdGF0ZSAmc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlcikKIHsKICAgICBjb25zdCBGcmFtZWJ1
ZmZlckdMICpzb3VyY2VGcmFtZWJ1ZmZlckdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+KHNv
dXJjZUZyYW1lYnVmZmVyKTsKIAogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihH
TF9SRUFEX0ZSQU1FQlVGRkVSLCBzb3VyY2VGcmFtZWJ1ZmZlckdMLT5nZXRGcmFtZWJ1ZmZlcklE
KCkpOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVG
RkVSLCBtRnJhbWVidWZmZXJJRCk7CiAKLSAgICBtRnVuY3Rpb25zLT5ibGl0RnJhbWVidWZmZXIo
c291cmNlQXJlYS54LCBzb3VyY2VBcmVhLnksIHNvdXJjZUFyZWEueCArIHNvdXJjZUFyZWEud2lk
dGgsIHNvdXJjZUFyZWEueSArIHNvdXJjZUFyZWEuaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0QXJlYS54LCBkZXN0QXJlYS55LCBkZXN0QXJlYS54ICsgZGVzdEFy
ZWEud2lkdGgsIGRlc3RBcmVhLnkgKyBkZXN0QXJlYS5oZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hc2ssIGZpbHRlcik7CisgICAgbUZ1bmN0aW9ucy0+YmxpdEZyYW1l
YnVmZmVyKHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55LCBzb3VyY2VBcmVhLngxKCksIHNvdXJj
ZUFyZWEueTEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdEFyZWEueCwg
ZGVzdEFyZWEueSwgZGVzdEFyZWEueDEoKSwgZGVzdEFyZWEueTEoKSwgbWFzaywgZmlsdGVyKTsK
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBFcnJvcihH
TF9OT19FUlJPUik7CiB9CiAKLUdMZW51bSBGcmFtZWJ1ZmZlckdMOjpjaGVja1N0YXR1cygpIGNv
bnN0Citib29sIEZyYW1lYnVmZmVyR0w6OmNoZWNrU3RhdHVzKCkgY29uc3QKIHsKICAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklE
KTsKLSAgICByZXR1cm4gbUZ1bmN0aW9ucy0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFN
RUJVRkZFUik7CisgICAgR0xlbnVtIHN0YXR1cyA9IG1GdW5jdGlvbnMtPmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpOworICAgIGlmIChzdGF0dXMgIT0gR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEUpCisgICAgeworICAgICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5sb2dX
YXJuaW5nKCJHTCBmcmFtZWJ1ZmZlciByZXR1cm5lZCBpbmNvbXBsZXRlLiIpOworICAgIH0KKyAg
ICByZXR1cm4gKHN0YXR1cyA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CiB9CiAKK3ZvaWQg
RnJhbWVidWZmZXJHTDo6c3luY1N0YXRlKGNvbnN0IEZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRp
cnR5Qml0cykKK3sKKyAgICAvLyBEb24ndCBuZWVkIHRvIHN5bmMgc3RhdGUgZm9yIHRoZSBkZWZh
dWx0IEZCTy4KKyAgICBpZiAobUlzRGVmYXVsdCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1GcmFtZWJ1ZmZlcklEKTsKKworICAgIGZvciAoYXV0byBkaXJ0eUJpdCA6IGFuZ2xlOjpJdGVy
YXRlQml0U2V0KGRpcnR5Qml0cykpCisgICAgeworICAgICAgICBzd2l0Y2ggKGRpcnR5Qml0KQor
ICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVQVEhf
QVRUQUNITUVOVDoKKyAgICAgICAgICAgICAgICBCaW5kRnJhbWVidWZmZXJBdHRhY2htZW50KG1G
dW5jdGlvbnMsIEdMX0RFUFRIX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtRGF0YS5nZXREZXB0aEF0dGFjaG1lbnQoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZyYW1lYnVmZmVyOjpESVJUWV9CSVRfU1RF
TkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQobUZ1bmN0aW9ucywgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZyYW1lYnVmZmVyOjpESVJU
WV9CSVRfRFJBV19CVUZGRVJTOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8gJmRyYXdCdWZmZXJzID0gbURhdGEuZ2V0RHJhd0J1ZmZlclN0YXRlcygpOworICAgICAg
ICAgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdCdWZmZXJzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KGRy
YXdCdWZmZXJzLnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZHJhd0J1ZmZlcnMuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9SRUFEX0JVRkZF
UjoKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5yZWFkQnVmZmVyKG1EYXRhLmdldFJlYWRC
dWZmZXJTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQVNTRVJUKEZyYW1lYnVmZmVyOjpE
SVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAg
ICAgZGlydHlCaXQgPCBGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfTUFY
KTsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPQorICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxzaXplX3Q+KGRpcnR5Qml0IC0gRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xP
Ul9BVFRBQ0hNRU5UXzApOworICAgICAgICAgICAgICAgIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQobUZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMZW51bT4oR0xfQ09MT1JfQVRUQUNITUVOVDAgKyBpbmRleCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YS5nZXRDb2xvckF0dGFj
aG1lbnQoaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKwogR0x1aW50IEZyYW1lYnVmZmVyR0w6OmdldEZyYW1lYnVmZmVy
SUQoKSBjb25zdAogewogICAgIHJldHVybiBtRnJhbWVidWZmZXJJRDsKIH0KIAordm9pZCBGcmFt
ZWJ1ZmZlckdMOjpzeW5jRHJhd1N0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobUZ1bmN0aW9ucy0+
c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCkKKyAgICB7CisgICAgICAgIC8vIEVuYWJs
ZSBTUkdCIGJsZW5kaW5nIGZvciBhbGwgZnJhbWVidWZmZXJzIGV4Y2VwdCB0aGUgZGVmYXVsdCBm
cmFtZWJ1ZmZlciBvbiBEZXNrdG9wCisgICAgICAgIC8vIE9wZW5HTC4KKyAgICAgICAgLy8gV2hl
biBTUkdCIGJsZW5kaW5nIGlzIGVuYWJsZWQsIG9ubHkgU1JHQiBjYXBhYmxlIGZvcm1hdHMgd2ls
bCB1c2UgaXQgYnV0IHRoZSBkZWZhdWx0CisgICAgICAgIC8vIGZyYW1lYnVmZmVyIHdpbGwgYWx3
YXlzIHVzZSBpdCBpZiBpdCBpcyBlbmFibGVkLgorICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6
IFVwZGF0ZSB0aGlzIHdoZW4gdGhlIGZyYW1lYnVmZmVyIGJpbmRpbmcgZGlydHkgY2hhbmdlcywg
d2hlbiBpdCBleGlzdHMuCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1lYnVmZmVyU1JH
QkVuYWJsZWQoIW1Jc0RlZmF1bHQpOworICAgIH0KIH0KKwordm9pZCBGcmFtZWJ1ZmZlckdMOjpz
eW5jQ2xlYXJTdGF0ZShHTGJpdGZpZWxkIG1hc2spCit7CisgICAgaWYgKG1GdW5jdGlvbnMtPnN0
YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1ApCisgICAgeworICAgICAgICBpZiAobVdvcmth
cm91bmRzLmRvZXNTUkdCQ2xlYXJzT25MaW5lYXJGcmFtZWJ1ZmZlckF0dGFjaG1lbnRzICYmCisg
ICAgICAgICAgICAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpICE9IDAgJiYgIW1Jc0RlZmF1
bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJvb2wgaGFzU1JCQXR0YWNobWVudCA9IGZhbHNl
OworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvICZhdHRhY2htZW50IDogbURhdGEuZ2V0Q29s
b3JBdHRhY2htZW50cygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChhdHRh
Y2htZW50LmlzQXR0YWNoZWQoKSAmJiBhdHRhY2htZW50LmdldENvbG9yRW5jb2RpbmcoKSA9PSBH
TF9TUkdCKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaGFzU1JCQXR0
YWNobWVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJh
bWVidWZmZXJTUkdCRW5hYmxlZChoYXNTUkJBdHRhY2htZW50KTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1lYnVm
ZmVyU1JHQkVuYWJsZWQoIW1Jc0RlZmF1bHQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhckJ1ZmZlclN0YXRlKEdMZW51bSBidWZmZXIsIEdMaW50
IGRyYXdCdWZmZXIpCit7CisgICAgaWYgKG1GdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJE
X0dMX0RFU0tUT1ApCisgICAgeworICAgICAgICBpZiAobVdvcmthcm91bmRzLmRvZXNTUkdCQ2xl
YXJzT25MaW5lYXJGcmFtZWJ1ZmZlckF0dGFjaG1lbnRzICYmIGJ1ZmZlciA9PSBHTF9DT0xPUiAm
JgorICAgICAgICAgICAgIW1Jc0RlZmF1bHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIElm
IGRvaW5nIGEgY2xlYXIgb24gYSBjb2xvciBidWZmZXIsIHNldCBTUkdCIGJsZW5kIGVuYWJsZWQg
b25seSBpZiB0aGUgY29sb3IgYnVmZmVyCisgICAgICAgICAgICAvLyBpcyBhbiBTUkdCIGZvcm1h
dC4KKyAgICAgICAgICAgIGNvbnN0IGF1dG8gJmRyYXdidWZmZXJTdGF0ZSAgPSBtRGF0YS5nZXRE
cmF3QnVmZmVyU3RhdGVzKCk7CisgICAgICAgICAgICBjb25zdCBhdXRvICZjb2xvckF0dGFjaG1l
bnRzID0gbURhdGEuZ2V0Q29sb3JBdHRhY2htZW50cygpOworCisgICAgICAgICAgICBjb25zdCBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBudWxscHRyOworICAgICAgICAgICAg
aWYgKGRyYXdidWZmZXJTdGF0ZVtkcmF3QnVmZmVyXSA+PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCAm
JgorICAgICAgICAgICAgICAgIGRyYXdidWZmZXJTdGF0ZVtkcmF3QnVmZmVyXSA8IEdMX0NPTE9S
X0FUVEFDSE1FTlQwICsgY29sb3JBdHRhY2htZW50cy5zaXplKCkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgc2l6ZV90IGF0dGFjaG1lbnRJZHggPQorICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxzaXplX3Q+KGRyYXdidWZmZXJTdGF0ZVtkcmF3QnVmZmVyXSAtIEdMX0NP
TE9SX0FUVEFDSE1FTlQwKTsKKyAgICAgICAgICAgICAgICBhdHRhY2htZW50ID0gJmNvbG9yQXR0
YWNobWVudHNbYXR0YWNobWVudElkeF07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChhdHRhY2htZW50ICE9IG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
bVN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChhdHRhY2htZW50LT5nZXRD
b2xvckVuY29kaW5nKCkgPT0gR0xfU1JHQik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRGcmFt
ZWJ1ZmZlclNSR0JFbmFibGVkKCFtSXNEZWZhdWx0KTsKKyAgICAgICAgfQorICAgIH0KK30KK30g
IC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNiwyOSArMTYs
NDggQEAKIAogY2xhc3MgRnVuY3Rpb25zR0w7CiBjbGFzcyBTdGF0ZU1hbmFnZXJHTDsKK3N0cnVj
dCBXb3JrYXJvdW5kc0dMOwogCiBjbGFzcyBGcmFtZWJ1ZmZlckdMIDogcHVibGljIEZyYW1lYnVm
ZmVySW1wbAogewogICBwdWJsaWM6Ci0gICAgRnJhbWVidWZmZXJHTChjb25zdCBnbDo6RnJhbWVi
dWZmZXI6OkRhdGEgJmRhdGEsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFu
YWdlckdMICpzdGF0ZU1hbmFnZXIsIGJvb2wgaXNEZWZhdWx0KTsKKyAgICBGcmFtZWJ1ZmZlckdM
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFn
ZXJHTCAqc3RhdGVNYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNH
TCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICBib29sIGlzRGVmYXVsdCk7CisgICAg
Ly8gQ29uc3RydWN0b3IgY2FsbGVkIHdoZW4gd2UgbmVlZCB0byBjcmVhdGUgYSBGcmFtZWJ1ZmZl
ckdMIGZyb20gYW4KKyAgICAvLyBleGlzdGluZyBmcmFtZWJ1ZmZlciBuYW1lLCBmb3IgZXhhbXBs
ZSBmb3IgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKKyAgICAvLyBvbiB0aGUgTWFjIEVHTCBDR0wg
YmFja2VuZC4KKyAgICBGcmFtZWJ1ZmZlckdMKEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgIGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3Jr
YXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdM
ICpzdGF0ZU1hbmFnZXIpOwogICAgIH5GcmFtZWJ1ZmZlckdMKCkgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIG9uVXBkYXRlQ29sb3JBdHRhY2htZW50KHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBvblVwZGF0ZURlcHRoQXR0YWNobWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgb25VcGRh
dGVTdGVuY2lsQXR0YWNobWVudCgpIG92ZXJyaWRlOwotICAgIHZvaWQgb25VcGRhdGVEZXB0aFN0
ZW5jaWxBdHRhY2htZW50KCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldERyYXdCdWZmZXJzKHNp
emVfdCBjb3VudCwgY29uc3QgR0xlbnVtICpidWZmZXJzKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dFJlYWRCdWZmZXIoR0xlbnVtIGJ1ZmZlcikgb3ZlcnJpZGU7Ci0KKyAgICBnbDo6RXJyb3IgZGlz
Y2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpIG92ZXJyaWRlOwog
ICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRh
Y2htZW50cykgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGludmFsaWRhdGVTdWIoc2l6ZV90IGNv
dW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVh
KSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBjbGVhcihjb25zdCBnbDo6RGF0YSAmZGF0YSwg
R0xiaXRmaWVsZCBtYXNrKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY2xlYXJCdWZmZXJmdihj
b25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBj
b25zdCBHTGZsb2F0ICp2YWx1ZXMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjbGVhckJ1ZmZl
cnVpdihjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVm
ZmVyLCBjb25zdCBHTHVpbnQgKnZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNsZWFy
QnVmZmVyaXYoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJh
d2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbHVlcykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNs
ZWFyQnVmZmVyZmkoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIGJ1ZmZlciwgR0xpbnQg
ZHJhd2J1ZmZlciwgR0xmbG9hdCBkZXB0aCwgR0xpbnQgc3RlbmNpbCkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGNsZWFyQnVmZmVyZnYoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVydWl2
KGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZhbHVlcykgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGNsZWFyQnVmZmVyaXYoY29uc3QgZ2w6OkRhdGEgJmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjbGVh
ckJ1ZmZlcmZpKGNvbnN0IGdsOjpEYXRhICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJh
d2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0ZW5jaWwpIG92ZXJyaWRlOwogCiAgICAg
R0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgR0xlbnVtIGdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwpAQCAtNDcsMTUgKzY2LDI0IEBACiAgICAgZ2w6OkVycm9yIGJsaXQoY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmZGVzdEFyZWEsCiAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNrLCBH
TGVudW0gZmlsdGVyLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyKSBv
dmVycmlkZTsKIAotICAgIEdMZW51bSBjaGVja1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIHZvaWQgc3luY1N0YXRl
KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBzeW5jRHJhd1N0YXRlKCkgY29uc3Q7CisKICAgICBHTHVpbnQgZ2V0RnJhbWVi
dWZmZXJJRCgpIGNvbnN0OwogCiAgIHByaXZhdGU6CisgICAgdm9pZCBzeW5jQ2xlYXJTdGF0ZShH
TGJpdGZpZWxkIG1hc2spOworICAgIHZvaWQgc3luY0NsZWFyQnVmZmVyU3RhdGUoR0xlbnVtIGJ1
ZmZlciwgR0xpbnQgZHJhd0J1ZmZlcik7CisKICAgICBjb25zdCBGdW5jdGlvbnNHTCAqbUZ1bmN0
aW9uczsKICAgICBTdGF0ZU1hbmFnZXJHTCAqbVN0YXRlTWFuYWdlcjsKKyAgICBjb25zdCBXb3Jr
YXJvdW5kc0dMICZtV29ya2Fyb3VuZHM7CiAKICAgICBHTHVpbnQgbUZyYW1lYnVmZmVySUQ7Cisg
ICAgYm9vbCBtSXNEZWZhdWx0OwogfTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rp
b25zR0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMCw0OCArMTAsMzIgQEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAorI2luY2x1ZGUgImNv
bW1vbi9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5k
ZXJlcmdsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewogCi1zdGF0aWMgdm9pZCBHZXRHTFZl
cnNpb24oUEZOR0xHRVRTVFJJTkdQUk9DIGdldFN0cmluZ0Z1bmN0aW9uLCBHTHVpbnQgKm91dE1h
am9yVmVyc2lvbiwgR0x1aW50ICpvdXRNaW5vclZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCAqb3V0SXNFUykKK3N0YXRpYyB2b2lkIEdldEdMVmVyc2lvbihQRk5HTEdFVFNU
UklOR1BST0MgZ2V0U3RyaW5nRnVuY3Rpb24sIGdsOjpWZXJzaW9uICpvdXRWZXJzaW9uLCBTdGFu
ZGFyZEdMICpvdXRTdGFuZGFyZCkKIHsKICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJzaW9uID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2V0U3RyaW5nRnVuY3Rpb24oR0xfVkVSU0lP
TikpOwogICAgIGlmICh2ZXJzaW9uLmZpbmQoIk9wZW5HTCBFUyIpID09IHN0ZDo6c3RyaW5nOjpu
cG9zKQogICAgIHsKLSAgICAgICAgLy8gRVMgc3BlYyBzdGF0ZXMgdGhhdCB0aGUgR0xfVkVSU0lP
TiBzdHJpbmcgd2lsbCBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKLSAgICAgICAgLy8gIk9w
ZW5HTCBFUyBOLk0gdmVuZG9yLXNwZWNpZmljIGluZm9ybWF0aW9uIgotICAgICAgICAqb3V0SXNF
UyA9IGZhbHNlOwotICAgICAgICAqb3V0TWFqb3JWZXJzaW9uID0gdmVyc2lvblswXSAtICcwJzsK
LSAgICAgICAgKm91dE1pbm9yVmVyc2lvbiA9IHZlcnNpb25bMl0gLSAnMCc7Ci0gICAgfQotICAg
IGVsc2UKLSAgICB7CiAgICAgICAgIC8vIE9wZW5HTCBzcGVjIHN0YXRlcyB0aGUgR0xfVkVSU0lP
TiBzdHJpbmcgd2lsbCBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKICAgICAgICAgLy8gPHZl
cnNpb24gbnVtYmVyPjxzcGFjZT48dmVuZG9yLXNwZWNpZmljIGluZm9ybWF0aW9uPgogICAgICAg
ICAvLyBUaGUgdmVyc2lvbiBudW1iZXIgaXMgZWl0aGVyIG9mIHRoZSBmb3JtIG1ham9yIG51bWJl
ci5taW5vciBudW1iZXIgb3IgbWFqb3IKICAgICAgICAgLy8gbnVtYmVyLm1pbm9yIG51bWJlci5y
ZWxlYXNlIG51bWJlciwgd2hlcmUgdGhlIG51bWJlcnMgYWxsIGhhdmUgb25lIG9yIG1vcmUKICAg
ICAgICAgLy8gZGlnaXRzCi0gICAgICAgICpvdXRJc0VTID0gdHJ1ZTsKLSAgICAgICAgKm91dE1h
am9yVmVyc2lvbiA9IHZlcnNpb25bMTBdIC0gJzAnOwotICAgICAgICAqb3V0TWlub3JWZXJzaW9u
ID0gdmVyc2lvblsxMl0gLSAnMCc7CisgICAgICAgICpvdXRTdGFuZGFyZCA9IFNUQU5EQVJEX0dM
X0RFU0tUT1A7CisgICAgICAgICpvdXRWZXJzaW9uID0gZ2w6OlZlcnNpb24odmVyc2lvblswXSAt
ICcwJywgdmVyc2lvblsyXSAtICcwJyk7CiAgICAgfQotfQotCi1zdGF0aWMgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IEdldE5vbkluZGV4ZWRFeHRlbnNpb25zKFBGTkdMR0VUU1RSSU5HUFJPQyBn
ZXRTdHJpbmdGdW5jdGlvbikKLXsKLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmVzdWx0
OwotCi0gICAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbShyZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihnZXRTdHJpbmdGdW5jdGlvbihHTF9FWFRFTlNJT05TKSkpOwotICAgIHN0ZDo6c3Ry
aW5nIGV4dGVuc2lvbjsKLSAgICB3aGlsZSAoc3RkOjpnZXRsaW5lKHN0cmVhbSwgZXh0ZW5zaW9u
LCAnICcpKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2soZXh0ZW5z
aW9uKTsKKyAgICAgICAgLy8gRVMgc3BlYyBzdGF0ZXMgdGhhdCB0aGUgR0xfVkVSU0lPTiBzdHJp
bmcgd2lsbCBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKyAgICAgICAgLy8gIk9wZW5HTCBF
UyBOLk0gdmVuZG9yLXNwZWNpZmljIGluZm9ybWF0aW9uIgorICAgICAgICAqb3V0U3RhbmRhcmQg
PSBTVEFOREFSRF9HTF9FUzsKKyAgICAgICAgKm91dFZlcnNpb24gPSBnbDo6VmVyc2lvbih2ZXJz
aW9uWzEwXSAtICcwJywgdmVyc2lvblsxMl0gLSAnMCcpOwogICAgIH0KLQotICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIHN0YXRpYyBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gR2V0SW5kZXhlZEV4
dGVuc2lvbnMoUEZOR0xHRVRJTlRFR0VSVlBST0MgZ2V0SW50ZWdlckZ1bmN0aW9uLCBQRk5HTEdF
VFNUUklOR0lQUk9DIGdldFN0cmluZ0lGdW5jdGlvbikKQEAgLTc4LDE4ICs2MiwyNSBAQAogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyB2b2lkIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJmV4dGVuc2lvbnMsIGNvbnN0
IHN0ZDo6c3RyaW5nICZleHRlbnNpb24sIHZvaWQgKmZ1bmN0aW9uLCBUICpvdXRGdW5jdGlvbikK
K3N0YXRpYyB2b2lkIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChjb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4gJmV4dGVuc2lvbnMsIGNvbnN0IGNoYXIgKnJlcXVpcmVkRXh0ZW5zaW9u
U3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmZ1
bmN0aW9uLCBUICpvdXRGdW5jdGlvbikKIHsKLSAgICBpZiAoc3RkOjpmaW5kKGV4dGVuc2lvbnMu
YmVnaW4oKSwgZXh0ZW5zaW9ucy5lbmQoKSwgZXh0ZW5zaW9uKSAhPSBleHRlbnNpb25zLmVuZCgp
KQorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAg
YW5nbGU6OlNwbGl0U3RyaW5nQWxvbmdXaGl0ZXNwYWNlKHJlcXVpcmVkRXh0ZW5zaW9uU3RyaW5n
LCAmcmVxdWlyZWRFeHRlbnNpb25zKTsKKyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nJiByZXF1
aXJlZEV4dGVuc2lvbiA6IHJlcXVpcmVkRXh0ZW5zaW9ucykKICAgICB7Ci0gICAgICAgICpvdXRG
dW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oZnVuY3Rpb24pOworICAgICAgICBpZiAoc3Rk
OjpmaW5kKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5zaW9ucy5lbmQoKSwgcmVxdWlyZWRFeHRl
bnNpb24pID09IGV4dGVuc2lvbnMuZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogICAgIH0KKworICAgICpvdXRGdW5jdGlvbiA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VD4oZnVuY3Rpb24pOwogfQogCiBGdW5jdGlvbnNHTDo6RnVuY3Rpb25zR0woKQotICAgIDog
bWFqb3JWZXJzaW9uKDApLAotICAgICAgbWlub3JWZXJzaW9uKDApLAotICAgICAgb3BlbkdMRVMo
ZmFsc2UpLAorICAgIDogdmVyc2lvbigpLAorICAgICAgc3RhbmRhcmQoKSwKICAgICAgIGV4dGVu
c2lvbnMoKSwKIAogICAgICAgYmxlbmRGdW5jKG51bGxwdHIpLApAQCAtNjE4LDYgKzYwOSw3IEBA
CiAgICAgICBnZXREZWJ1Z01lc3NhZ2VMb2cobnVsbHB0ciksCiAgICAgICBnZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcml2KG51bGxwdHIpLAogICAgICAgZ2V0SW50ZXJuYWxmb3JtYXRpNjR2KG51bGxw
dHIpLAorICAgICAgZ2V0UG9pbnRlcnYobnVsbHB0ciksCiAgICAgICBnZXRPYmplY3RMYWJlbChu
dWxscHRyKSwKICAgICAgIGdldE9iamVjdFB0ckxhYmVsKG51bGxwdHIpLAogICAgICAgZ2V0UHJv
Z3JhbUludGVyZmFjZWl2KG51bGxwdHIpLApAQCAtNzY4LDcgKzc2MCwxMSBAQAogICAgICAgdmVy
dGV4QXJyYXlCaW5kaW5nRGl2aXNvcihudWxscHRyKSwKICAgICAgIHZlcnRleEFycmF5RWxlbWVu
dEJ1ZmZlcihudWxscHRyKSwKICAgICAgIHZlcnRleEFycmF5VmVydGV4QnVmZmVyKG51bGxwdHIp
LAotICAgICAgdmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXJzKG51bGxwdHIpCisgICAgICB2ZXJ0ZXhB
cnJheVZlcnRleEJ1ZmZlcnMobnVsbHB0ciksCisgICAgICBibGVuZEJhcnJpZXIobnVsbHB0ciks
CisgICAgICBwcmltaXRpdmVCb3VuZGluZ0JveChudWxscHRyKSwKKyAgICAgIGVnbEltYWdlVGFy
Z2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhudWxscHRyKSwKKyAgICAgIGVnbEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKG51bGxwdHIpCiB7CiB9CiAKQEAgLTc4MCwyMiArNzc2LDE5MyBAQAogewog
ICAgIC8vIEdyYWIgdGhlIHZlcnNpb24gbnVtYmVyCiAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xHZXRTdHJpbmciKSwgJmdldFN0cmluZyk7Ci0gICAgR2V0R0xWZXJz
aW9uKGdldFN0cmluZywgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbiwgJm9wZW5HTEVTKTsK
KyAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEludGVnZXJ2Iiks
ICZnZXRJbnRlZ2Vydik7CisgICAgR2V0R0xWZXJzaW9uKGdldFN0cmluZywgJnZlcnNpb24sICZz
dGFuZGFyZCk7CiAKICAgICAvLyBHcmFiIHRoZSBHTCBleHRlbnNpb25zCi0gICAgaWYgKG1ham9y
VmVyc2lvbiA+PSAzKQorICAgIGlmIChpc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAwKSkgfHwg
aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkpCiAgICAgewotICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEludGVnZXJ2IiksICZnZXRJbnRlZ2Vy
dik7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0U3Ry
aW5naSIpLCAmZ2V0U3RyaW5naSk7CiAgICAgICAgIGV4dGVuc2lvbnMgPSBHZXRJbmRleGVkRXh0
ZW5zaW9ucyhnZXRJbnRlZ2VydiwgZ2V0U3RyaW5naSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIGV4dGVuc2lvbnMgPSBHZXROb25JbmRleGVkRXh0ZW5zaW9ucyhnZXRTdHJpbmcp
OworICAgICAgICBjb25zdCBjaGFyICpleHRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZ2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKTsKKyAgICAgICAgYW5nbGU6OlNwbGl0U3RyaW5n
QWxvbmdXaGl0ZXNwYWNlKHN0ZDo6c3RyaW5nKGV4dHMpLCAmZXh0ZW5zaW9ucyk7CiAgICAgfQog
CisgICAgLy8gTG9hZCB0aGUgZW50cnkgcG9pbnRzCisgICAgc3dpdGNoIChzdGFuZGFyZCkKKyAg
ICB7CisgICAgICAgIGNhc2UgU1RBTkRBUkRfR0xfREVTS1RPUDoKKyAgICAgICAgICAgIGluaXRp
YWxpemVQcm9jc0Rlc2t0b3BHTCgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBTVEFOREFSRF9HTF9FUzoKKyAgICAgICAgICAgIGluaXRpYWxpemVQcm9jc0dMRVMoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIEZ1bmN0aW9uc0dM
Ojppbml0aWFsaXplUHJvY3NEZXNrdG9wR0woKQoreworICAgIC8vIENoZWNrIHRoZSBjb250ZXh0
IHByb2ZpbGUKKyAgICBwcm9maWxlID0gMDsKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNp
b24oMywgMikpKQorICAgIHsKKyAgICAgICAgZ2V0SW50ZWdlcnYoR0xfQ09OVEVYVF9QUk9GSUxF
X01BU0ssICZwcm9maWxlKTsKKyAgICB9CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisKKyAg
ICAvLyBMb2FkIGV4dGVuc2lvbnMKKyAgICAvLyBFdmVuIHRob3VnaCBleHRlbnNpb25zIGFyZSB3
cml0dGVuIGFnYWluc3Qgc3BlY2lmaWMgdmVyc2lvbnMgb2YgR0wsIG1hbnkgZHJpdmVycyBleHBv
c2UgdGhlIGV4dGVuc2lvbnMKKyAgICAvLyBpbiBldmVuIG9sZGVyIHZlcnNpb25zLiAgQWx3YXlz
IHRyeSBsb2FkaW5nIHRoZSBleHRlbnNpb25zIHJlZ2FyZGxlc3Mgb2YgR0wgdmVyc2lvbi4KKwor
ICAgIC8vIEdMX05WX2ZlbmNlCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9OVl9mZW5jZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxldGVGZW5jZXNOViIp
LCAmZGVsZXRlRmVuY2VzTlYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRl
bnNpb25zLCAiR0xfTlZfZmVuY2UiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2VuRmVuY2VzTlYiKSwg
JmdlbkZlbmNlc05WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkdMX05WX2ZlbmNlIiwgbG9hZFByb2NBZGRyZXNzKCJnbElzRmVuY2VOViIpLCAmaXNGZW5j
ZU5WKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05W
X2ZlbmNlIiwgbG9hZFByb2NBZGRyZXNzKCJnbFRlc3RGZW5jZU5WIiksICZ0ZXN0RmVuY2VOVik7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9mZW5j
ZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRGZW5jZWl2TlYiKSwgJmdldEZlbmNlaXZOVik7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9mZW5jZSIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xGaW5pc2hGZW5jZU5WIiksICZmaW5pc2hGZW5jZU5WKTsKKyAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwg
bG9hZFByb2NBZGRyZXNzKCJnbFNldEZlbmNlTlYiKSwgJnNldEZlbmNlTlYpOworCisgICAgLy8g
R0xfRVhUX3RleHR1cmVfc3RvcmFnZQorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xU
ZXhTdG9yYWdlMURFWFQiKSwgJnRleFN0b3JhZ2UxRCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiwgbG9hZFByb2NB
ZGRyZXNzKCJnbFRleFN0b3JhZ2UyREVYVCIpLCAmdGV4U3RvcmFnZTJEKTsKKyAgICBBc3NpZ25H
TEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ug
R0xfRVhUX3RleHR1cmUzRCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xUZXhTdG9yYWdlM0RFWFQiKSwg
JnRleFN0b3JhZ2UzRCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lv
bnMsICJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIEdMX0VYVF9kaXJlY3Rfc3RhdGVfYWNjZXNzIiwg
bG9hZFByb2NBZGRyZXNzKCJnbFRleHR1cmVTdG9yYWdlMURFWFQiKSwgJnRleHR1cmVTdG9yYWdl
MUQpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfRVhU
X3RleHR1cmVfc3RvcmFnZSBHTF9FWFRfZGlyZWN0X3N0YXRlX2FjY2VzcyIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xUZXh0dXJlU3RvcmFnZTJERVhUIiksICZ0ZXh0dXJlU3RvcmFnZTJEKTsKKyAgICBB
c3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VYVF90ZXh0dXJlX3N0
b3JhZ2UgR0xfRVhUX2RpcmVjdF9zdGF0ZV9hY2Nlc3MgR0xfRVhUX3RleHR1cmUzRCIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xUZXh0dXJlU3RvcmFnZTNERVhUIiksICZ0ZXh0dXJlU3RvcmFnZTNEKTsK
KworICAgIC8vIEdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCIsIGxv
YWRQcm9jQWRkcmVzcygiZ2xCaW5kVmVydGV4QXJyYXkiKSwgJmJpbmRWZXJ0ZXhBcnJheSk7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfdmVydGV4
X2FycmF5X29iamVjdCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxldGVWZXJ0ZXhBcnJheXMiKSwg
JmRlbGV0ZVZlcnRleEFycmF5cyk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCIsIGxvYWRQcm9jQWRkcmVzcygi
Z2xHZW5WZXJ0ZXhBcnJheXMiKSwgJmdlblZlcnRleEFycmF5cyk7CisgICAgQXNzaWduR0xFeHRl
bnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xJc1ZlcnRleEFycmF5IiksICZpc1ZlcnRleEFycmF5KTsKKwor
ICAgIC8vIEdMX0FSQl9zeW5jCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9BUkJfc3luYyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xDbGllbnRXYWl0U3luYyIp
LCAmY2xpZW50V2FpdFN5bmMpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRl
bnNpb25zLCAiR0xfQVJCX3N5bmMiLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlU3luYyIpLCAm
ZGVsZXRlU3luYyk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMs
ICJHTF9BUkJfc3luYyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xGZW5jZVN5bmMiKSwgJmZlbmNlU3lu
Yyk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJf
c3luYyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRJbnRlZ2VyNjRpX3YiKSwgJmdldEludGVnZXI2
NGlfdik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9B
UkJfc3luYyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRJbnRlZ2VyNjR2IiksICZnZXRJbnRlZ2Vy
NjR2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FS
Ql9zeW5jIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFN5bmNpdiIpLCAmZ2V0U3luY2l2KTsKKyAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zeW5jIiwg
bG9hZFByb2NBZGRyZXNzKCJnbElzU3luYyIpLCAmaXNTeW5jKTsKKyAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zeW5jIiwgbG9hZFByb2NBZGRyZXNz
KCJnbFdhaXRTeW5jIiksICZ3YWl0U3luYyk7CisKKyAgICAvLyBHTF9FWFRfZnJhbWVidWZmZXJf
b2JqZWN0CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9F
WFRfZnJhbWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbElzUmVuZGVyYnVmZmVy
RVhUIiksICZpc1JlbmRlcmJ1ZmZlcik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNz
KCJnbEJpbmRSZW5kZXJidWZmZXJFWFQiKSwgJmJpbmRSZW5kZXJidWZmZXIpOworICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVmZmVyX29i
amVjdCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxldGVSZW5kZXJidWZmZXJzRVhUIiksICZkZWxl
dGVSZW5kZXJidWZmZXJzKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX0VYVF9mcmFtZWJ1ZmZlcl9vYmplY3QiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2Vu
UmVuZGVyYnVmZmVyc0VYVCIpLCAmZ2VuUmVuZGVyYnVmZmVycyk7CisgICAgQXNzaWduR0xFeHRl
bnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0Iiwg
bG9hZFByb2NBZGRyZXNzKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQiKSwgJnJlbmRlcmJ1ZmZl
clN0b3JhZ2UpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAi
R0xfRVhUX2ZyYW1lYnVmZmVyX29iamVjdCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkVYVCIpLCAmZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOworICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVm
ZmVyX29iamVjdCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xJc0ZyYW1lYnVmZmVyRVhUIiksICZpc0Zy
YW1lYnVmZmVyKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX0VYVF9mcmFtZWJ1ZmZlcl9vYmplY3QiLCBsb2FkUHJvY0FkZHJlc3MoImdsQmluZEZyYW1l
YnVmZmVyRVhUIiksICZiaW5kRnJhbWVidWZmZXIpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfRVhUX2ZyYW1lYnVmZmVyX29iamVjdCIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQiKSwgJmRlbGV0ZUZyYW1lYnVmZmVycyk7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJh
bWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdlbkZyYW1lYnVmZmVyc0VYVCIp
LCAmZ2VuRnJhbWVidWZmZXJzKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0
ZW5zaW9ucywgIkdMX0VYVF9mcmFtZWJ1ZmZlcl9vYmplY3QiLCBsb2FkUHJvY0FkZHJlc3MoImds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCIpLCAmY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJhbWVi
dWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTFERVhU
IiksICZmcmFtZWJ1ZmZlclRleHR1cmUxRCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBv
aW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRy
ZXNzKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUIiksICZmcmFtZWJ1ZmZlclRleHR1cmUyRCk7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJh
bWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbEZyYW1lYnVmZmVyVGV4dHVyZTNE
RVhUIiksICZmcmFtZWJ1ZmZlclRleHR1cmUzRCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRy
eVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NB
ZGRyZXNzKCJnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUIiksICZmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUIiksICZnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpdik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMs
ICJHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdlbmVyYXRl
TWlwbWFwRVhUIiksICZnZW5lcmF0ZU1pcG1hcCk7CisKKyAgICAvLyBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdAorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xf
RVhUX2ZyYW1lYnVmZmVyX2JsaXQiLCBsb2FkUHJvY0FkZHJlc3MoImdsQmxpdEZyYW1lYnVmZmVy
RVhUIiksICZibGl0RnJhbWVidWZmZXIpOworCisgICAgLy8gR0xfS0hSX2RlYnVnCisgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2Fk
UHJvY0FkZHJlc3MoImdsRGVidWdNZXNzYWdlQ29udHJvbCIpLCAmZGVidWdNZXNzYWdlQ29udHJv
bCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJf
ZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVidWdNZXNzYWdlSW5zZXJ0IiksICZkZWJ1Z01l
c3NhZ2VJbnNlcnQpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlYnVnTWVzc2FnZUNhbGxiYWNr
IiksICZkZWJ1Z01lc3NhZ2VDYWxsYmFjayk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBv
aW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0RGVi
dWdNZXNzYWdlTG9nIiksICZnZXREZWJ1Z01lc3NhZ2VMb2cpOworICAgIEFzc2lnbkdMRXh0ZW5z
aW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNz
KCJnbEdldFBvaW50ZXJ2IiksICZnZXRQb2ludGVydik7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImds
UHVzaERlYnVnR3JvdXAiKSwgJnB1c2hEZWJ1Z0dyb3VwKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygi
Z2xQb3BEZWJ1Z0dyb3VwIiksICZwb3BEZWJ1Z0dyb3VwKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygi
Z2xPYmplY3RMYWJlbCIpLCAmb2JqZWN0TGFiZWwpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdl
dE9iamVjdExhYmVsIiksICZnZXRPYmplY3RMYWJlbCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImds
T2JqZWN0UHRyTGFiZWwiKSwgJm9iamVjdFB0ckxhYmVsKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9kZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygi
Z2xHZXRPYmplY3RQdHJMYWJlbCIpLCAmZ2V0T2JqZWN0UHRyTGFiZWwpOworCisgICAgLy8gR0xf
QVJCX2ludGVybmFsZm9ybWF0X3F1ZXJ5CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9BUkJfaW50ZXJuYWxmb3JtYXRfcXVlcnkiLCBsb2FkUHJvY0FkZHJl
c3MoImdsR2V0SW50ZXJuYWxmb3JtYXRpdiIpLCAmZ2V0SW50ZXJuYWxmb3JtYXRpdik7CisKKyAg
ICAvLyBHTF9BUkJfRVMyX2NvbXBhdGliaWxpdHkKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5
UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9FUzJfY29tcGF0aWJpbGl0eSIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIiKSwgJnJlbGVhc2VTaGFkZXJDb21waWxlcik7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfRVMy
X2NvbXBhdGliaWxpdHkiLCBsb2FkUHJvY0FkZHJlc3MoImdsU2hhZGVyQmluYXJ5IiksICZzaGFk
ZXJCaW5hcnkpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAi
R0xfQVJCX0VTMl9jb21wYXRpYmlsaXR5IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCIpLCAmZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KTsKKyAgICBBc3NpZ25H
TEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9FUzJfY29tcGF0aWJpbGl0
eSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZXB0aFJhbmdlZiIpLCAmZGVwdGhSYW5nZWYpOworICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX0VTMl9jb21w
YXRpYmlsaXR5IiwgbG9hZFByb2NBZGRyZXNzKCJnbENsZWFyRGVwdGhmIiksICZjbGVhckRlcHRo
Zik7CisKKyAgICAvLyBHTF9BUkJfaW5zdGFuY2VkX2FycmF5cworICAgIEFzc2lnbkdMRXh0ZW5z
aW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiLCBsb2Fk
UHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliRGl2aXNvckFSQiIpLCAmdmVydGV4QXR0cmliRGl2
aXNvcik7CisKKyAgICAvLyBHTF9FWFRfZHJhd19pbnN0YW5jZWQKKyAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkRVhUIiksICZkcmF3QXJyYXlzSW5zdGFu
Y2VkKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VY
VF9kcmF3X2luc3RhbmNlZCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWRFWFQiKSwgJmRyYXdFbGVtZW50c0luc3RhbmNlZCk7CisKKyAgICAvLyBHTF9BUkJfZHJhd19p
bnN0YW5jZWQKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X0FSQl9kcmF3X2luc3RhbmNlZCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkQVJCIiksICZkcmF3QXJyYXlzSW5zdGFuY2VkKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBUkIiKSwgJmRyYXdFbGVtZW50c0luc3RhbmNl
ZCk7CisKKyAgICAvLyBHTF9BUkJfc2FtcGxlcl9vYmplY3RzCisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc2FtcGxlcl9vYmplY3RzIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbEdlblNhbXBsZXJzIiksICZnZW5TYW1wbGVycyk7CisgICAgQXNzaWduR0xF
eHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc2FtcGxlcl9vYmplY3RzIiwg
bG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZVNhbXBsZXJzIiksICZkZWxldGVTYW1wbGVycyk7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc2FtcGxl
cl9vYmplY3RzIiwgbG9hZFByb2NBZGRyZXNzKCJnbElzU2FtcGxlciIpLCAmaXNTYW1wbGVyKTsK
KyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zYW1w
bGVyX29iamVjdHMiLCBsb2FkUHJvY0FkZHJlc3MoImdsQmluZFNhbXBsZXIiKSwgJmJpbmRTYW1w
bGVyKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FS
Ql9zYW1wbGVyX29iamVjdHMiLCBsb2FkUHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcmki
KSwgJnNhbXBsZXJQYXJhbWV0ZXJpKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQo
ZXh0ZW5zaW9ucywgIkdMX0FSQl9zYW1wbGVyX29iamVjdHMiLCBsb2FkUHJvY0FkZHJlc3MoImds
U2FtcGxlclBhcmFtZXRlcmYiKSwgJnNhbXBsZXJQYXJhbWV0ZXJmKTsKKyAgICBBc3NpZ25HTEV4
dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zYW1wbGVyX29iamVjdHMiLCBs
b2FkUHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcml2IiksICZzYW1wbGVyUGFyYW1ldGVy
aXYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJC
X3NhbXBsZXJfb2JqZWN0cyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTYW1wbGVyUGFyYW1ldGVyZnYi
KSwgJnNhbXBsZXJQYXJhbWV0ZXJmdik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9BUkJfc2FtcGxlcl9vYmplY3RzIiwgbG9hZFByb2NBZGRyZXNzKCJn
bFNhbXBsZXJQYXJhbWV0ZXJJaXYiKSwgJnNhbXBsZXJQYXJhbWV0ZXJJaXYpOworICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3NhbXBsZXJfb2JqZWN0
cyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xTYW1wbGVyUGFyYW1ldGVySXVpdiIpLCAmc2FtcGxlclBh
cmFtZXRlckl1aXYpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfQVJCX3NhbXBsZXJfb2JqZWN0cyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRTYW1wbGVy
UGFyYW1ldGVyaXYiKSwgJmdldFNhbXBsZXJQYXJhbWV0ZXJpdik7CisgICAgQXNzaWduR0xFeHRl
bnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc2FtcGxlcl9vYmplY3RzIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdiIpLCAmZ2V0U2FtcGxlclBhcmFt
ZXRlcmZ2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X0FSQl9zYW1wbGVyX29iamVjdHMiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0U2FtcGxlclBhcmFt
ZXRlcklpdiIpLCAmZ2V0U2FtcGxlclBhcmFtZXRlcklpdik7CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc2FtcGxlcl9vYmplY3RzIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2IiksICZnZXRTYW1wbGVyUGFyYW1l
dGVySXVpdik7CisKKyAgICAvLyBHTF9BUkJfb2NjbHVzaW9uX3F1ZXJ5CisgICAgQXNzaWduR0xF
eHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfb2NjbHVzaW9uX3F1ZXJ5Iiwg
bG9hZFByb2NBZGRyZXNzKCJnbEdlblF1ZXJpZXNBUkIiKSwgJmdlblF1ZXJpZXMpOworICAgIEFz
c2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX29jY2x1c2lvbl9x
dWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxldGVRdWVyaWVzQVJCIiksICZkZWxldGVRdWVy
aWVzKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FS
Ql9vY2NsdXNpb25fcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsSXNRdWVyeUFSQiIpLCAmaXNR
dWVyeSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9B
UkJfb2NjbHVzaW9uX3F1ZXJ5IiwgbG9hZFByb2NBZGRyZXNzKCJnbEJlZ2luUXVlcnlBUkIiKSwg
JmJlZ2luUXVlcnkpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfQVJCX29jY2x1c2lvbl9xdWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xFbmRRdWVyeUFS
QiIpLCAmZW5kUXVlcnkpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNp
b25zLCAiR0xfQVJCX29jY2x1c2lvbl9xdWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRRdWVy
eWl2QVJCIiksICZnZXRRdWVyeWl2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQo
ZXh0ZW5zaW9ucywgIkdMX0FSQl9vY2NsdXNpb25fcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImds
R2V0UXVlcnlPYmplY3RpdkFSQiIpLCAmZ2V0UXVlcnlPYmplY3Rpdik7CisgICAgQXNzaWduR0xF
eHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfb2NjbHVzaW9uX3F1ZXJ5Iiwg
bG9hZFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0dWl2QVJCIiksICZnZXRRdWVyeU9iamVj
dHVpdik7CisKKyAgICAvLyBFWFRfdHJhbnNmb3JtX2ZlZWRiYWNrCisgICAgQXNzaWduR0xFeHRl
bnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJFWFRfdHJhbnNmb3JtX2ZlZWRiYWNrIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbEJpbmRCdWZmZXJSYW5nZUVYVCIpLCAmYmluZEJ1ZmZlclJhbmdlKTsK
KyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkVYVF90cmFuc2Zv
cm1fZmVlZGJhY2siLCBsb2FkUHJvY0FkZHJlc3MoImdsQmluZEJ1ZmZlckJhc2VFWFQiKSwgJmJp
bmRCdWZmZXJCYXNlKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9u
cywgIkVYVF90cmFuc2Zvcm1fZmVlZGJhY2siLCBsb2FkUHJvY0FkZHJlc3MoImdsQmVnaW5UcmFu
c2Zvcm1GZWVkYmFja0VYVCIpLCAmYmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgQXNzaWdu
R0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJFWFRfdHJhbnNmb3JtX2ZlZWRiYWNr
IiwgbG9hZFByb2NBZGRyZXNzKCJnbEVuZFRyYW5zZm9ybUZlZWRiYWNrRVhUIiksICZlbmRUcmFu
c2Zvcm1GZWVkYmFjayk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lv
bnMsICJFWFRfdHJhbnNmb3JtX2ZlZWRiYWNrIiwgbG9hZFByb2NBZGRyZXNzKCJnbFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3NFWFQiKSwgJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOworICAg
IEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiRVhUX3RyYW5zZm9ybV9m
ZWVkYmFjayIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdF
WFQiKSwgJmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyk7CisKKyAgICAvLyBHTF9BUkJfdHJh
bnNmb3JtX2ZlZWRiYWNrMgorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNp
b25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVkYmFjazIiLCBsb2FkUHJvY0FkZHJlc3MoImdsQmlu
ZFRyYW5zZm9ybUZlZWRiYWNrIiksICZiaW5kVHJhbnNmb3JtRmVlZGJhY2spOworICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVk
YmFjazIiLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzIiksICZk
ZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2lu
dChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVkYmFjazIiLCBsb2FkUHJvY0FkZHJl
c3MoImdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzIiksICZnZW5UcmFuc2Zvcm1GZWVkYmFja3MpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5z
Zm9ybV9mZWVkYmFjazIiLCBsb2FkUHJvY0FkZHJlc3MoImdsSXNUcmFuc2Zvcm1GZWVkYmFjayIp
LCAmaXNUcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9BUkJfdHJhbnNmb3JtX2ZlZWRiYWNrMiIsIGxvYWRQcm9jQWRkcmVz
cygiZ2xQYXVzZVRyYW5zZm9ybUZlZWRiYWNrIiksICZwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKTsK
KyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl90cmFu
c2Zvcm1fZmVlZGJhY2syIiwgbG9hZFByb2NBZGRyZXNzKCJnbFJlc3VtZVRyYW5zZm9ybUZlZWRi
YWNrIiksICZyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfdHJhbnNmb3JtX2ZlZWRiYWNrMiIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xEcmF3VHJhbnNmb3JtRmVlZGJhY2siKSwgJmRyYXdUcmFuc2Zvcm1GZWVk
YmFjayk7CisKKyAgICAvLyBHTF9BUkJfdHJhbnNmb3JtX2ZlZWRiYWNrMworICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVkYmFj
azMiLCBsb2FkUHJvY0FkZHJlc3MoImdsRHJhd1RyYW5zZm9ybUZlZWRiYWNrU3RyZWFtIiksICZk
cmF3VHJhbnNmb3JtRmVlZGJhY2tTdHJlYW0pOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfQVJCX3RyYW5zZm9ybV9mZWVkYmFjazMiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsQmVnaW5RdWVyeUluZGV4ZWQiKSwgJmJlZ2luUXVlcnlJbmRleGVkKTsKKyAgICBB
c3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl90cmFuc2Zvcm1f
ZmVlZGJhY2szIiwgbG9hZFByb2NBZGRyZXNzKCJnbEVuZFF1ZXJ5SW5kZXhlZCIpLCAmZW5kUXVl
cnlJbmRleGVkKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX0FSQl90cmFuc2Zvcm1fZmVlZGJhY2szIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5
SW5kZXhlZGl2IiksICZnZXRRdWVyeUluZGV4ZWRpdik7CisKICAgICAvLyAxLjAKLSAgICBpZiAo
bWFqb3JWZXJzaW9uID49IDEpCisgICAgaWYgKGlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDEsIDAp
KSkKICAgICB7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
QmxlbmRGdW5jIiksICZibGVuZEZ1bmMpOwogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbENsZWFyIiksICZjbGVhcik7CkBAIC04NDgsNyArMTAxNSw3IEBACiAg
ICAgfQogCiAgICAgLy8gMS4xCi0gICAgaWYgKG1ham9yVmVyc2lvbiA+IDEgfHwgKG1ham9yVmVy
c2lvbiA9PSAxICYmIG1pbm9yVmVyc2lvbiA+PSAxKSkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6
OlZlcnNpb24oMSwgMSkpKQogICAgIHsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xCaW5kVGV4dHVyZSIpLCAmYmluZFRleHR1cmUpOwogICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENvcHlUZXhJbWFnZTFEIiksICZjb3B5
VGV4SW1hZ2UxRCk7CkBAIC04NjYsNyArMTAzMyw3IEBACiAgICAgfQogCiAgICAgLy8gMS4yCi0g
ICAgaWYgKG1ham9yVmVyc2lvbiA+IDEgfHwgKG1ham9yVmVyc2lvbiA9PSAxICYmIG1pbm9yVmVy
c2lvbiA+PSAyKSkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgMikpKQogICAg
IHsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCbGVuZENv
bG9yIiksICZibGVuZENvbG9yKTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xCbGVuZEVxdWF0aW9uIiksICZibGVuZEVxdWF0aW9uKTsKQEAgLTg3NCwxOSAr
MTA0MSwxMCBAQAogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bERyYXdSYW5nZUVsZW1lbnRzIiksICZkcmF3UmFuZ2VFbGVtZW50cyk7CiAgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVGV4SW1hZ2UzRCIpLCAmdGV4SW1hZ2Uz
RCk7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVGV4U3Vi
SW1hZ2UzRCIpLCAmdGV4U3ViSW1hZ2UzRCk7Ci0KLSAgICAgICAgLy8gRXh0ZW5zaW9ucwotICAg
ICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX2ZlbmNl
IiwgbG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZUZlbmNlc05WIiksICZkZWxldGVGZW5jZXNOVik7
Ci0gICAgICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZf
ZmVuY2UiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2VuRmVuY2VzTlYiKSwgJmdlbkZlbmNlc05WKTsK
LSAgICAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9m
ZW5jZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xJc0ZlbmNlTlYiKSwgJmlzRmVuY2VOVik7Ci0gICAg
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZmVuY2Ui
LCBsb2FkUHJvY0FkZHJlc3MoImdsVGVzdEZlbmNlTlYiKSwgJnRlc3RGZW5jZU5WKTsKLSAgICAg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9mZW5jZSIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRGZW5jZWl2TlYiKSwgJmdldEZlbmNlaXZOVik7Ci0gICAg
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZmVuY2Ui
LCBsb2FkUHJvY0FkZHJlc3MoImdsRmluaXNoRmVuY2VOViIpLCAmZmluaXNoRmVuY2VOVik7Ci0g
ICAgICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZmVu
Y2UiLCBsb2FkUHJvY0FkZHJlc3MoImdsU2V0RmVuY2VOViIpLCAmc2V0RmVuY2VOVik7CiAgICAg
fQogCiAgICAgLy8gMS4zCi0gICAgaWYgKG1ham9yVmVyc2lvbiA+IDEgfHwgKG1ham9yVmVyc2lv
biA9PSAxICYmIG1pbm9yVmVyc2lvbiA+PSAzKSkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZl
cnNpb24oMSwgMykpKQogICAgIHsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xBY3RpdmVUZXh0dXJlIiksICZhY3RpdmVUZXh0dXJlKTsKICAgICAgICAgQXNz
aWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDb21wcmVzc2VkVGV4SW1hZ2UxRCIp
LCAmY29tcHJlc3NlZFRleEltYWdlMUQpOwpAQCAtOTAwLDcgKzEwNTgsNyBAQAogICAgIH0KIAog
ICAgIC8vIDEuNAotICAgIGlmIChtYWpvclZlcnNpb24gPiAxIHx8IChtYWpvclZlcnNpb24gPT0g
MSAmJiBtaW5vclZlcnNpb24gPj0gNCkpCisgICAgaWYgKGlzQXRMZWFzdEdMKGdsOjpWZXJzaW9u
KDEsIDQpKSkKICAgICB7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsQmxlbmRGdW5jU2VwYXJhdGUiKSwgJmJsZW5kRnVuY1NlcGFyYXRlKTsKICAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xNdWx0aURyYXdBcnJheXMiKSwg
Jm11bHRpRHJhd0FycmF5cyk7CkBAIC05MTIsNyArMTA3MCw3IEBACiAgICAgfQogCiAgICAgLy8g
MS41Ci0gICAgaWYgKG1ham9yVmVyc2lvbiA+IDEgfHwgKG1ham9yVmVyc2lvbiA9PSAxICYmIG1p
bm9yVmVyc2lvbiA+PSA1KSkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkp
KQogICAgIHsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xC
ZWdpblF1ZXJ5IiksICZiZWdpblF1ZXJ5KTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xCaW5kQnVmZmVyIiksICZiaW5kQnVmZmVyKTsKQEAgLTkzNiw3ICsx
MDk0LDcgQEAKICAgICB9CiAKICAgICAvLyAyLjAKLSAgICBpZiAobWFqb3JWZXJzaW9uID49IDIp
CisgICAgaWYgKGlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDIsIDApKSkKICAgICB7CiAgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQXR0YWNoU2hhZGVyIiksICZh
dHRhY2hTaGFkZXIpOwogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNz
KCJnbEJpbmRBdHRyaWJMb2NhdGlvbiIpLCAmYmluZEF0dHJpYkxvY2F0aW9uKTsKQEAgLTEwMzQs
NyArMTE5Miw3IEBACiAgICAgfQogCiAgICAgLy8gMi4xCi0gICAgaWYgKG1ham9yVmVyc2lvbiA+
IDIgfHwgKG1ham9yVmVyc2lvbiA9PSAyICYmIG1pbm9yVmVyc2lvbiA+PSAxKSkKKyAgICBpZiAo
aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMiwgMSkpKQogICAgIHsKICAgICAgICAgQXNzaWduR0xF
bnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtTWF0cml4MngzZnYiKSwgJnVuaWZv
cm1NYXRyaXgyeDNmdik7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsVW5pZm9ybU1hdHJpeDJ4NGZ2IiksICZ1bmlmb3JtTWF0cml4Mng0ZnYpOwpAQCAtMTA0
NSw3ICsxMjAzLDcgQEAKICAgICB9CiAKICAgICAvLyAzLjAKLSAgICBpZiAobWFqb3JWZXJzaW9u
ID49IDMpCisgICAgaWYgKGlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDApKSkKICAgICB7CiAg
ICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmVnaW5Db25kaXRp
b25hbFJlbmRlciIpLCAmYmVnaW5Db25kaXRpb25hbFJlbmRlcik7CiAgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayIpLCAm
YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayk7CkBAIC0xMTMxLDEzICsxMjg5LDEwIEBACiAgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliSTR1aXYi
KSwgJnZlcnRleEF0dHJpYkk0dWl2KTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJJNHVzdiIpLCAmdmVydGV4QXR0cmliSTR1c3YpOwog
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFZlcnRleEF0dHJp
YklQb2ludGVyIiksICZ2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik7Ci0KLSAgICAgICAgLy8gRXh0ZW5z
aW9ucwotICAgICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X0FSQl9pbnRlcm5hbGZvcm1hdF9xdWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRJbnRlcm5h
bGZvcm1hdGl2IiksICZnZXRJbnRlcm5hbGZvcm1hdGl2KTsKICAgICB9CiAKICAgICAvLyAzLjEK
LSAgICBpZiAobWFqb3JWZXJzaW9uID4gMyB8fCAobWFqb3JWZXJzaW9uID09IDMgJiYgbWlub3JW
ZXJzaW9uID49IDEpKQorICAgIGlmIChpc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAxKSkpCiAg
ICAgewogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENvcHlC
dWZmZXJTdWJEYXRhIiksICZjb3B5QnVmZmVyU3ViRGF0YSk7CiAgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZCIpLCAmZHJhd0Fy
cmF5c0luc3RhbmNlZCk7CkBAIC0xMTUxLDIwICsxMzA2LDEwIEBACiAgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJpbWl0aXZlUmVzdGFydEluZGV4IiksICZw
cmltaXRpdmVSZXN0YXJ0SW5kZXgpOwogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFBy
b2NBZGRyZXNzKCJnbFRleEJ1ZmZlciIpLCAmdGV4QnVmZmVyKTsKICAgICAgICAgQXNzaWduR0xF
bnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtQmxvY2tCaW5kaW5nIiksICZ1bmlm
b3JtQmxvY2tCaW5kaW5nKTsKLQotICAgICAgICAvLyBFeHRlbnNpb25zCi0gICAgICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3N5bmMiLCBsb2FkUHJv
Y0FkZHJlc3MoImdsQ2xpZW50V2FpdFN5bmMiKSwgJmNsaWVudFdhaXRTeW5jKTsKLSAgICAgICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc3luYyIsIGxv
YWRQcm9jQWRkcmVzcygiZ2xEZWxldGVTeW5jIiksICZkZWxldGVTeW5jKTsKLSAgICAgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc3luYyIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xGZW5jZVN5bmMiKSwgJmZlbmNlU3luYyk7Ci0gICAgICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3N5bmMiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsR2V0SW50ZWdlcjY0aV92IiksICZnZXRJbnRlZ2VyNjRpX3YpOwotICAgICAgICBB
c3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zeW5jIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbEdldEludGVnZXI2NHYiKSwgJmdldEludGVnZXI2NHYpOwotICAgICAg
ICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zeW5jIiwg
bG9hZFByb2NBZGRyZXNzKCJnbEdldFN5bmNpdiIpLCAmZ2V0U3luY2l2KTsKLSAgICAgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc3luYyIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xJc1N5bmMiKSwgJmlzU3luYyk7Ci0gICAgICAgIEFzc2lnbkdMRXh0ZW5z
aW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3N5bmMiLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsV2FpdFN5bmMiKSwgJndhaXRTeW5jKTsKICAgICB9CiAKICAgICAvLyAzLjIKLSAgICBpZiAo
bWFqb3JWZXJzaW9uID4gMyB8fCAobWFqb3JWZXJzaW9uID09IDMgJiYgbWlub3JWZXJzaW9uID49
IDIpKQorICAgIGlmIChpc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAyKSkpCiAgICAgewogICAg
ICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENsaWVudFdhaXRTeW5j
IiksICZjbGllbnRXYWl0U3luYyk7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsRGVsZXRlU3luYyIpLCAmZGVsZXRlU3luYyk7CkBAIC0xMTg4LDcgKzEzMzMs
NyBAQAogICAgIH0KIAogICAgIC8vIDMuMwotICAgIGlmIChtYWpvclZlcnNpb24gPiAzIHx8ICht
YWpvclZlcnNpb24gPT0gMyAmJiBtaW5vclZlcnNpb24gPj0gMykpCisgICAgaWYgKGlzQXRMZWFz
dEdMKGdsOjpWZXJzaW9uKDMsIDMpKSkKICAgICB7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2lu
dChsb2FkUHJvY0FkZHJlc3MoImdsQmluZEZyYWdEYXRhTG9jYXRpb25JbmRleGVkIiksICZiaW5k
RnJhZ0RhdGFMb2NhdGlvbkluZGV4ZWQpOwogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbEJpbmRTYW1wbGVyIiksICZiaW5kU2FtcGxlcik7CkBAIC0xMjIxLDcg
KzEzNjYsNyBAQAogICAgIH0KIAogICAgIC8vIDQuMAotICAgIGlmIChtYWpvclZlcnNpb24gPj0g
NCkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMCkpKQogICAgIHsKICAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCZWdpblF1ZXJ5SW5kZXhl
ZCIpLCAmYmVnaW5RdWVyeUluZGV4ZWQpOwogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayIpLCAmYmluZFRyYW5zZm9ybUZl
ZWRiYWNrKTsKQEAgLTEyNzIsNyArMTQxNyw3IEBACiAgICAgfQogCiAgICAgLy8gNC4xCi0gICAg
aWYgKG1ham9yVmVyc2lvbiA+IDQgfHwgKG1ham9yVmVyc2lvbiA9PSA0ICYmIG1pbm9yVmVyc2lv
biA+PSAxKSkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMSkpKQogICAgIHsK
ICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xBY3RpdmVTaGFk
ZXJQcm9ncmFtIiksICZhY3RpdmVTaGFkZXJQcm9ncmFtKTsKICAgICAgICAgQXNzaWduR0xFbnRy
eVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kUHJvZ3JhbVBpcGVsaW5lIiksICZiaW5kUHJv
Z3JhbVBpcGVsaW5lKTsKQEAgLTEzNjUsNyArMTUxMCw3IEBACiAgICAgfQogCiAgICAgLy8gNC4y
Ci0gICAgaWYgKG1ham9yVmVyc2lvbiA+IDQgfHwgKG1ham9yVmVyc2lvbiA9PSA0ICYmIG1pbm9y
VmVyc2lvbiA+PSAyKSkKKyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMikpKQog
ICAgIHsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5k
SW1hZ2VUZXh0dXJlIiksICZiaW5kSW1hZ2VUZXh0dXJlKTsKICAgICAgICAgQXNzaWduR0xFbnRy
eVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNl
IiksICZkcmF3QXJyYXlzSW5zdGFuY2VkQmFzZUluc3RhbmNlKTsKQEAgLTEzODIsNyArMTUyNyw3
IEBACiAgICAgfQogCiAgICAgLy8gNC4zCi0gICAgaWYgKG1ham9yVmVyc2lvbiA+IDQgfHwgKG1h
am9yVmVyc2lvbiA9PSA0ICYmIG1pbm9yVmVyc2lvbiA+PSAzKSkKKyAgICBpZiAoaXNBdExlYXN0
R0woZ2w6OlZlcnNpb24oNCwgMykpKQogICAgIHsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kVmVydGV4QnVmZmVyIiksICZiaW5kVmVydGV4QnVmZmVy
KTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDbGVhckJ1
ZmZlckRhdGEiKSwgJmNsZWFyQnVmZmVyRGF0YSk7CkBAIC0xMzk3LDYgKzE1NDIsNyBAQAogICAg
ICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldERlYnVnTWVzc2Fn
ZUxvZyIpLCAmZ2V0RGVidWdNZXNzYWdlTG9nKTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2IiksICZnZXRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcml2KTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xHZXRJbnRlcm5hbGZvcm1hdGk2NHYiKSwgJmdldEludGVybmFsZm9ybWF0aTY0
dik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0UG9p
bnRlcnYiKSwgJmdldFBvaW50ZXJ2KTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRPYmplY3RMYWJlbCIpLCAmZ2V0T2JqZWN0TGFiZWwpOwogICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldE9iamVjdFB0ckxhYmVs
IiksICZnZXRPYmplY3RQdHJMYWJlbCk7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2Fk
UHJvY0FkZHJlc3MoImdsR2V0UHJvZ3JhbUludGVyZmFjZWl2IiksICZnZXRQcm9ncmFtSW50ZXJm
YWNlaXYpOwpAQCAtMTQzMCw3ICsxNTc2LDcgQEAKICAgICB9CiAKICAgICAvLyA0LjQKLSAgICBp
ZiAobWFqb3JWZXJzaW9uID4gNCB8fCAobWFqb3JWZXJzaW9uID09IDQgJiYgbWlub3JWZXJzaW9u
ID49IDQpKQorICAgIGlmIChpc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCA0KSkpCiAgICAgewog
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEJpbmRCdWZmZXJz
QmFzZSIpLCAmYmluZEJ1ZmZlcnNCYXNlKTsKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xCaW5kQnVmZmVyc1JhbmdlIiksICZiaW5kQnVmZmVyc1JhbmdlKTsK
QEAgLTE0NDQsNyArMTU5MCw3IEBACiAgICAgfQogCiAgICAgLy8gNC41Ci0gICAgaWYgKG1ham9y
VmVyc2lvbiA+IDQgfHwgKG1ham9yVmVyc2lvbiA9PSA0ICYmIG1pbm9yVmVyc2lvbiA+PSA1KSkK
KyAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgNSkpKQogICAgIHsKICAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kVGV4dHVyZVVuaXQiKSwg
JmJpbmRUZXh0dXJlVW5pdCk7CiAgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsQmxpdE5hbWVkRnJhbWVidWZmZXIiKSwgJmJsaXROYW1lZEZyYW1lYnVmZmVyKTsK
QEAgLTE1NTcsNiArMTcwMyw0OTggQEAKICAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xWZXJ0ZXhBcnJheVZlcnRleEJ1ZmZlciIpLCAmdmVydGV4QXJyYXlWZXJ0
ZXhCdWZmZXIpOwogICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bFZlcnRleEFycmF5VmVydGV4QnVmZmVycyIpLCAmdmVydGV4QXJyYXlWZXJ0ZXhCdWZmZXJzKTsK
ICAgICB9CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIAordm9pZCBGdW5jdGlvbnNHTDo6
aW5pdGlhbGl6ZVByb2NzR0xFUygpCit7CisgICAgLy8gTm8gcHJvZmlsZXMgaW4gR0xFUworICAg
IHByb2ZpbGUgPSAwOworCisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorCisgICAgLy8gR0xfT0VT
X3RleHR1cmVfM0QKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX09FU190ZXh0dXJlXzNEIiwgbG9hZFByb2NBZGRyZXNzKCJnbFRleEltYWdlM0RPRVMiKSwg
JnRleEltYWdlM0QpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfT0VTX3RleHR1cmVfM0QiLCBsb2FkUHJvY0FkZHJlc3MoImdsVGV4U3ViSW1hZ2UzRE9F
UyIpLCAmdGV4U3ViSW1hZ2UzRCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9PRVNfdGV4dHVyZV8zRCIsIGxvYWRQcm9jQWRkcmVzcygiZ2xDb3B5VGV4
U3ViSW1hZ2UzRE9FUyIpLCAmY29weVRleFN1YkltYWdlM0QpOworCisgICAgLy8gR0xfTlZfZmVu
Y2UKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX2Zl
bmNlIiwgbG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZUZlbmNlc05WIiksICZkZWxldGVGZW5jZXNO
Vik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9OVl9m
ZW5jZSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZW5GZW5jZXNOViIpLCAmZ2VuRmVuY2VzTlYpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZmVuY2Ui
LCBsb2FkUHJvY0FkZHJlc3MoImdsSXNGZW5jZU5WIiksICZpc0ZlbmNlTlYpOworICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZmVuY2UiLCBsb2FkUHJv
Y0FkZHJlc3MoImdsVGVzdEZlbmNlTlYiKSwgJnRlc3RGZW5jZU5WKTsKKyAgICBBc3NpZ25HTEV4
dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwgbG9hZFByb2NBZGRy
ZXNzKCJnbEdldEZlbmNlaXZOViIpLCAmZ2V0RmVuY2Vpdk5WKTsKKyAgICBBc3NpZ25HTEV4dGVu
c2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX05WX2ZlbmNlIiwgbG9hZFByb2NBZGRyZXNz
KCJnbEZpbmlzaEZlbmNlTlYiKSwgJmZpbmlzaEZlbmNlTlYpOworICAgIEFzc2lnbkdMRXh0ZW5z
aW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfTlZfZmVuY2UiLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsU2V0RmVuY2VOViIpLCAmc2V0RmVuY2VOVik7CisKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9F
WFRfdGV4dHVyZV9zdG9yYWdlIiwgbG9hZFByb2NBZGRyZXNzKCJnbFRleFN0b3JhZ2UyREVYVCIp
LCAmdGV4U3RvcmFnZTJEKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UgR0xfT0VTX3RleHR1cmUzRCIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xUZXhTdG9yYWdlM0RFWFQiKSwgJnRleFN0b3JhZ2UzRCk7CisKKyAgICAvLyBH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdAorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2lu
dChleHRlbnNpb25zLCAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCBsb2FkUHJvY0FkZHJl
c3MoImdsQmluZFZlcnRleEFycmF5IiksICZiaW5kVmVydGV4QXJyYXkpOworICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlVmVydGV4QXJyYXlzIiksICZkZWxldGVWZXJ0
ZXhBcnJheXMpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAi
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2VuVmVydGV4
QXJyYXlzIiksICZnZW5WZXJ0ZXhBcnJheXMpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQ
b2ludChleHRlbnNpb25zLCAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsSXNWZXJ0ZXhBcnJheSIpLCAmaXNWZXJ0ZXhBcnJheSk7CisKKyAgICAvLyBHTF9F
WFRfbWFwX2J1ZmZlcl9yYW5nZQorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRl
bnNpb25zLCAiR0xfRVhUX21hcF9idWZmZXJfcmFuZ2UiLCBsb2FkUHJvY0FkZHJlc3MoImdsTWFw
QnVmZmVyUmFuZ2VFWFQiKSwgJm1hcEJ1ZmZlclJhbmdlKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VYVF9tYXBfYnVmZmVyX3JhbmdlIiwgbG9hZFBy
b2NBZGRyZXNzKCJnbEZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQiKSwgJmZsdXNoTWFwcGVkQnVm
ZmVyUmFuZ2UpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAi
R0xfRVhUX21hcF9idWZmZXJfcmFuZ2UiLCBsb2FkUHJvY0FkZHJlc3MoImdsVW5tYXBCdWZmZXJP
RVMiKSwgJnVubWFwQnVmZmVyKTsKKworICAgIC8vIEdMX09FU19tYXBidWZmZXIKKyAgICBBc3Np
Z25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX09FU19tYXBidWZmZXIiLCBs
b2FkUHJvY0FkZHJlc3MoImdsTWFwQnVmZmVyT0VTIiksICZtYXBCdWZmZXIpOworICAgIEFzc2ln
bkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfT0VTX21hcGJ1ZmZlciIsIGxv
YWRQcm9jQWRkcmVzcygiZ2xVbm1hcEJ1ZmZlck9FUyIpLCAmdW5tYXBCdWZmZXIpOworCisgICAg
Ly8gR0xfS0hSX2RlYnVnCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lv
bnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVidWdNZXNzYWdlQ29udHJv
bCIpLCAmZGVidWdNZXNzYWdlQ29udHJvbCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBv
aW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVidWdN
ZXNzYWdlSW5zZXJ0IiksICZkZWJ1Z01lc3NhZ2VJbnNlcnQpOworICAgIEFzc2lnbkdMRXh0ZW5z
aW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVnIiwgbG9hZFByb2NBZGRyZXNz
KCJnbERlYnVnTWVzc2FnZUNhbGxiYWNrIiksICZkZWJ1Z01lc3NhZ2VDYWxsYmFjayk7CisgICAg
QXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVidWciLCBs
b2FkUHJvY0FkZHJlc3MoImdsR2V0RGVidWdNZXNzYWdlTG9nIiksICZnZXREZWJ1Z01lc3NhZ2VM
b2cpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hS
X2RlYnVnIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldFBvaW50ZXJ2IiksICZnZXRQb2ludGVydik7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVi
dWciLCBsb2FkUHJvY0FkZHJlc3MoImdsUHVzaERlYnVnR3JvdXAiKSwgJnB1c2hEZWJ1Z0dyb3Vw
KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9k
ZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xQb3BEZWJ1Z0dyb3VwIiksICZwb3BEZWJ1Z0dyb3Vw
KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9k
ZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xPYmplY3RMYWJlbCIpLCAmb2JqZWN0TGFiZWwpOwor
ICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX2RlYnVn
IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldE9iamVjdExhYmVsIiksICZnZXRPYmplY3RMYWJlbCk7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfZGVi
dWciLCBsb2FkUHJvY0FkZHJlc3MoImdsT2JqZWN0UHRyTGFiZWwiKSwgJm9iamVjdFB0ckxhYmVs
KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tIUl9k
ZWJ1ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRPYmplY3RQdHJMYWJlbCIpLCAmZ2V0T2JqZWN0
UHRyTGFiZWwpOworCisgICAgLy8gR0xfRVhUX2RyYXdfaW5zdGFuY2VkCisgICAgQXNzaWduR0xF
eHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZHJhd19pbnN0YW5jZWQiLCBs
b2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliRGl2aXNvckVYVCIpLCAmdmVydGV4QXR0cmli
RGl2aXNvcik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9FWFRfZHJhd19pbnN0YW5jZWQiLCBsb2FkUHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3Rh
bmNlZEVYVCIpLCAmZHJhd0FycmF5c0luc3RhbmNlZCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZHJhd19pbnN0YW5jZWQiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkRVhUIiksICZkcmF3RWxlbWVudHNJbnN0YW5j
ZWQpOworCisgICAgLy8gR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuCisgICAgQXNzaWdu
R0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5
X2Jvb2xlYW4iLCBsb2FkUHJvY0FkZHJlc3MoImdsR2VuUXVlcmllc0VYVCIpLCAmZ2VuUXVlcmll
cyk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRf
b2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iLCBsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlUXVlcmll
c0VYVCIpLCAmZGVsZXRlUXVlcmllcyk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50
KGV4dGVuc2lvbnMsICJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsSXNRdWVyeUVYVCIpLCAmaXNRdWVyeSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25F
bnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4iLCBs
b2FkUHJvY0FkZHJlc3MoImdsQmVnaW5RdWVyeUVYVCIpLCAmYmVnaW5RdWVyeSk7CisgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfb2NjbHVzaW9uX3F1
ZXJ5X2Jvb2xlYW4iLCBsb2FkUHJvY0FkZHJlc3MoImdsRW5kUXVlcnlFWFQiKSwgJmVuZFF1ZXJ5
KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VYVF9v
Y2NsdXNpb25fcXVlcnlfYm9vbGVhbiIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeWl2RVhU
IiksICZnZXRRdWVyeWl2KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIsIGxvYWRQcm9jQWRkcmVzcygi
Z2xHZXRRdWVyeU9iamVjdHVpdkVYVCIpLCAmZ2V0UXVlcnlPYmplY3R1aXYpOworCisgICAgLy8g
R0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBv
aW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsR2VuUXVlcmllc0VYVCIpLCAmZ2VuUXVlcmllcyk7CisgICAgQXNzaWduR0xFeHRl
bnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnki
LCBsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlUXVlcmllc0VYVCIpLCAmZGVsZXRlUXVlcmllcyk7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZGlz
am9pbnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsSXNRdWVyeUVYVCIpLCAmaXNR
dWVyeSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9F
WFRfZGlzam9pbnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsQmVnaW5RdWVyeUVY
VCIpLCAmYmVnaW5RdWVyeSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImds
RW5kUXVlcnlFWFQiKSwgJmVuZFF1ZXJ5KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9p
bnQoZXh0ZW5zaW9ucywgIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIsIGxvYWRQcm9jQWRk
cmVzcygiZ2xRdWVyeUNvdW50ZXJFWFQiKSwgJnF1ZXJ5Q291bnRlcik7CisgICAgQXNzaWduR0xF
eHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVl
cnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0UXVlcnlpdkVYVCIpLCAmZ2V0UXVlcnlpdik7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZGlzam9p
bnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3RpdkVYVCIp
LCAmZ2V0UXVlcnlPYmplY3Rpdik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4
dGVuc2lvbnMsICJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiKSwgJmdldFF1ZXJ5T2JqZWN0dWl2KTsKKyAgICBBc3Np
Z25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0VYVF9kaXNqb2ludF90aW1l
cl9xdWVyeSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQiKSwgJmdl
dFF1ZXJ5T2JqZWN0aTY0dik7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiLCBsb2FkUHJvY0FkZHJlc3MoImds
R2V0UXVlcnlPYmplY3R1aTY0dkVYVCIpLCAmZ2V0UXVlcnlPYmplY3R1aTY0dik7CisKKyAgICAv
LyBHTF9PRVNfRUdMX2ltYWdlCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9PRVNfRUdMX2ltYWdlIiwgbG9hZFByb2NBZGRyZXNzKCJnbEVHTEltYWdlVGFy
Z2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIpLCAmZWdsSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlT0VTKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywg
IkdMX09FU19FR0xfaW1hZ2UiLCBsb2FkUHJvY0FkZHJlc3MoImdsRUdMSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVMiKSwgJmVnbEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKTsKKworICAgIC8vIDIuMAor
ICAgIGlmIChpc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDIsIDApKSkKKyAgICB7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQWN0aXZlVGV4dHVyZSIpLCAm
YWN0aXZlVGV4dHVyZSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsQXR0YWNoU2hhZGVyIiksICZhdHRhY2hTaGFkZXIpOworICAgICAgICBBc3NpZ25HTEVu
dHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEJpbmRBdHRyaWJMb2NhdGlvbiIpLCAmYmluZEF0
dHJpYkxvY2F0aW9uKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xCaW5kQnVmZmVyIiksICZiaW5kQnVmZmVyKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kRnJhbWVidWZmZXIiKSwgJmJpbmRGcmFtZWJ1ZmZl
cik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmluZFJl
bmRlcmJ1ZmZlciIpLCAmYmluZFJlbmRlcmJ1ZmZlcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmluZFRleHR1cmUiKSwgJmJpbmRUZXh0dXJlKTsKKyAg
ICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCbGVuZENvbG9yIiks
ICZibGVuZENvbG9yKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xCbGVuZEVxdWF0aW9uIiksICZibGVuZEVxdWF0aW9uKTsKKyAgICAgICAgQXNzaWduR0xF
bnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUiKSwgJmJs
ZW5kRXF1YXRpb25TZXBhcmF0ZSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsQmxlbmRGdW5jIiksICZibGVuZEZ1bmMpOworICAgICAgICBBc3NpZ25HTEVu
dHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEJsZW5kRnVuY1NlcGFyYXRlIiksICZibGVuZEZ1
bmNTZXBhcmF0ZSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3Mo
ImdsQnVmZmVyRGF0YSIpLCAmYnVmZmVyRGF0YSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2lu
dChsb2FkUHJvY0FkZHJlc3MoImdsQnVmZmVyU3ViRGF0YSIpLCAmYnVmZmVyU3ViRGF0YSk7Cisg
ICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyIpLCAmY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ2xlYXIiKSwgJmNsZWFyKTsKKyAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDbGVhckNvbG9yIiksICZjbGVh
ckNvbG9yKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xD
bGVhckRlcHRoZiIpLCAmY2xlYXJEZXB0aGYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQo
bG9hZFByb2NBZGRyZXNzKCJnbENsZWFyU3RlbmNpbCIpLCAmY2xlYXJTdGVuY2lsKTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDb2xvck1hc2siKSwgJmNv
bG9yTWFzayk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
Q29tcGlsZVNoYWRlciIpLCAmY29tcGlsZVNoYWRlcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ29tcHJlc3NlZFRleEltYWdlMkQiKSwgJmNvbXByZXNz
ZWRUZXhJbWFnZTJEKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIpLCAmY29tcHJlc3NlZFRleFN1YkltYWdlMkQp
OworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENvcHlUZXhJ
bWFnZTJEIiksICZjb3B5VGV4SW1hZ2UyRCk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChs
b2FkUHJvY0FkZHJlc3MoImdsQ29weVRleFN1YkltYWdlMkQiKSwgJmNvcHlUZXhTdWJJbWFnZTJE
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDcmVhdGVQ
cm9ncmFtIiksICZjcmVhdGVQcm9ncmFtKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xDcmVhdGVTaGFkZXIiKSwgJmNyZWF0ZVNoYWRlcik7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ3VsbEZhY2UiKSwgJmN1bGxG
YWNlKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxl
dGVCdWZmZXJzIiksICZkZWxldGVCdWZmZXJzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxldGVGcmFtZWJ1ZmZlcnMiKSwgJmRlbGV0ZUZyYW1lYnVm
ZmVycyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRGVs
ZXRlUHJvZ3JhbSIpLCAmZGVsZXRlUHJvZ3JhbSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2lu
dChsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlUmVuZGVyYnVmZmVycyIpLCAmZGVsZXRlUmVuZGVy
YnVmZmVycyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
RGVsZXRlU2hhZGVyIiksICZkZWxldGVTaGFkZXIpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9p
bnQobG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZVRleHR1cmVzIiksICZkZWxldGVUZXh0dXJlcyk7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRGVwdGhGdW5j
IiksICZkZXB0aEZ1bmMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbERlcHRoTWFzayIpLCAmZGVwdGhNYXNrKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xEZXB0aFJhbmdlZiIpLCAmZGVwdGhSYW5nZWYpOworICAg
ICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbERldGFjaFNoYWRlciIp
LCAmZGV0YWNoU2hhZGVyKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRk
cmVzcygiZ2xEaXNhYmxlIiksICZkaXNhYmxlKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkiKSwgJmRpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsRHJhd0FycmF5cyIpLCAmZHJhd0FycmF5cyk7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzIiksICZkcmF3RWxlbWVudHMp
OworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEVuYWJsZSIp
LCAmZW5hYmxlKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygi
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSIpLCAmZW5hYmxlVmVydGV4QXR0cmliQXJyYXkpOwor
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEZpbmlzaCIpLCAm
ZmluaXNoKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xG
bHVzaCIpLCAmZmx1c2gpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiksICZmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQiKSwgJmZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKKyAgICAgICAgQXNzaWdu
R0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xGcm9udEZhY2UiKSwgJmZyb250RmFjZSk7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2VuQnVmZmVy
cyIpLCAmZ2VuQnVmZmVycyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsR2VuZXJhdGVNaXBtYXAiKSwgJmdlbmVyYXRlTWlwbWFwKTsKKyAgICAgICAgQXNz
aWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZW5GcmFtZWJ1ZmZlcnMiKSwgJmdl
bkZyYW1lYnVmZmVycyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsR2VuUmVuZGVyYnVmZmVycyIpLCAmZ2VuUmVuZGVyYnVmZmVycyk7CisgICAgICAgIEFz
c2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2VuVGV4dHVyZXMiKSwgJmdlblRl
eHR1cmVzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xH
ZXRBY3RpdmVBdHRyaWIiKSwgJmdldEFjdGl2ZUF0dHJpYik7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0QWN0aXZlVW5pZm9ybSIpLCAmZ2V0QWN0aXZl
VW5pZm9ybSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
R2V0QXR0YWNoZWRTaGFkZXJzIiksICZnZXRBdHRhY2hlZFNoYWRlcnMpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEF0dHJpYkxvY2F0aW9uIiksICZn
ZXRBdHRyaWJMb2NhdGlvbik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsR2V0Qm9vbGVhbnYiKSwgJmdldEJvb2xlYW52KTsKKyAgICAgICAgQXNzaWduR0xF
bnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIpLCAmZ2V0
QnVmZmVyUGFyYW1ldGVyaXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbEdldEVycm9yIiksICZnZXRFcnJvcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0RmxvYXR2IiksICZnZXRGbG9hdHYpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2IiksICZnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0SW50
ZWdlcnYiKSwgJmdldEludGVnZXJ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtaXYiKSwgJmdldFByb2dyYW1pdik7CisgICAgICAgIEFz
c2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0UHJvZ3JhbUluZm9Mb2ciKSwg
JmdldFByb2dyYW1JbmZvTG9nKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiIpLCAmZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNz
KCJnbEdldFNoYWRlcml2IiksICZnZXRTaGFkZXJpdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0U2hhZGVySW5mb0xvZyIpLCAmZ2V0U2hhZGVySW5m
b0xvZyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0
U2hhZGVyUHJlY2lzaW9uRm9ybWF0IiksICZnZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpOworICAg
ICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFNoYWRlclNvdXJj
ZSIpLCAmZ2V0U2hhZGVyU291cmNlKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRTdHJpbmciKSwgJmdldFN0cmluZyk7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0VGV4UGFyYW1ldGVyZnYiKSwgJmdldFRl
eFBhcmFtZXRlcmZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xHZXRUZXhQYXJhbWV0ZXJpdiIpLCAmZ2V0VGV4UGFyYW1ldGVyaXYpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFVuaWZvcm1mdiIpLCAmZ2V0
VW5pZm9ybWZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygi
Z2xHZXRVbmlmb3JtaXYiKSwgJmdldFVuaWZvcm1pdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0VW5pZm9ybUxvY2F0aW9uIiksICZnZXRVbmlmb3Jt
TG9jYXRpb24pOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bEdldFZlcnRleEF0dHJpYmZ2IiksICZnZXRWZXJ0ZXhBdHRyaWJmdik7CisgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0VmVydGV4QXR0cmliaXYiKSwgJmdl
dFZlcnRleEF0dHJpYml2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRk
cmVzcygiZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiIpLCAmZ2V0VmVydGV4QXR0cmliUG9pbnRl
cnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEhpbnQi
KSwgJmhpbnQpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bElzQnVmZmVyIiksICZpc0J1ZmZlcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2Fk
UHJvY0FkZHJlc3MoImdsSXNFbmFibGVkIiksICZpc0VuYWJsZWQpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElzRnJhbWVidWZmZXIiKSwgJmlzRnJhbWVi
dWZmZXIpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElz
UHJvZ3JhbSIpLCAmaXNQcm9ncmFtKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xJc1JlbmRlcmJ1ZmZlciIpLCAmaXNSZW5kZXJidWZmZXIpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElzU2hhZGVyIiksICZpc1No
YWRlcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsSXNU
ZXh0dXJlIiksICZpc1RleHR1cmUpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFBy
b2NBZGRyZXNzKCJnbExpbmVXaWR0aCIpLCAmbGluZVdpZHRoKTsKKyAgICAgICAgQXNzaWduR0xF
bnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xMaW5rUHJvZ3JhbSIpLCAmbGlua1Byb2dyYW0p
OworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFBpeGVsU3Rv
cmVpIiksICZwaXhlbFN0b3JlaSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsUG9seWdvbk9mZnNldCIpLCAmcG9seWdvbk9mZnNldCk7CisgICAgICAgIEFz
c2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUmVhZFBpeGVscyIpLCAmcmVhZFBp
eGVscyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUmVs
ZWFzZVNoYWRlckNvbXBpbGVyIiksICZyZWxlYXNlU2hhZGVyQ29tcGlsZXIpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2Ui
KSwgJnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbFNhbXBsZUNvdmVyYWdlIiksICZzYW1wbGVDb3ZlcmFnZSk7CisgICAg
ICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU2Npc3NvciIpLCAmc2Np
c3Nvcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU2hh
ZGVyQmluYXJ5IiksICZzaGFkZXJCaW5hcnkpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQo
bG9hZFByb2NBZGRyZXNzKCJnbFNoYWRlclNvdXJjZSIpLCAmc2hhZGVyU291cmNlKTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xTdGVuY2lsRnVuYyIpLCAm
c3RlbmNpbEZ1bmMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNz
KCJnbFN0ZW5jaWxGdW5jU2VwYXJhdGUiKSwgJnN0ZW5jaWxGdW5jU2VwYXJhdGUpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFN0ZW5jaWxNYXNrIiksICZz
dGVuY2lsTWFzayk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3Mo
ImdsU3RlbmNpbE1hc2tTZXBhcmF0ZSIpLCAmc3RlbmNpbE1hc2tTZXBhcmF0ZSk7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU3RlbmNpbE9wIiksICZzdGVu
Y2lsT3ApOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFN0
ZW5jaWxPcFNlcGFyYXRlIiksICZzdGVuY2lsT3BTZXBhcmF0ZSk7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVGV4SW1hZ2UyRCIpLCAmdGV4SW1hZ2UyRCk7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVGV4UGFyYW1l
dGVyZiIpLCAmdGV4UGFyYW1ldGVyZik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2Fk
UHJvY0FkZHJlc3MoImdsVGV4UGFyYW1ldGVyZnYiKSwgJnRleFBhcmFtZXRlcmZ2KTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xUZXhQYXJhbWV0ZXJpIiks
ICZ0ZXhQYXJhbWV0ZXJpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRk
cmVzcygiZ2xUZXhQYXJhbWV0ZXJpdiIpLCAmdGV4UGFyYW1ldGVyaXYpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFRleFN1YkltYWdlMkQiKSwgJnRleFN1
YkltYWdlMkQpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bFVuaWZvcm0xZiIpLCAmdW5pZm9ybTFmKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtMWZ2IiksICZ1bmlmb3JtMWZ2KTsKKyAgICAgICAgQXNz
aWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtMWkiKSwgJnVuaWZvcm0x
aSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5pZm9y
bTFpdiIpLCAmdW5pZm9ybTFpdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsVW5pZm9ybTJmIiksICZ1bmlmb3JtMmYpOworICAgICAgICBBc3NpZ25HTEVu
dHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFVuaWZvcm0yZnYiKSwgJnVuaWZvcm0yZnYpOwor
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFVuaWZvcm0yaSIp
LCAmdW5pZm9ybTJpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xVbmlmb3JtMml2IiksICZ1bmlmb3JtMml2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtM2YiKSwgJnVuaWZvcm0zZik7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5pZm9ybTNmdiIpLCAmdW5p
Zm9ybTNmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
VW5pZm9ybTNpIiksICZ1bmlmb3JtM2kpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbFVuaWZvcm0zaXYiKSwgJnVuaWZvcm0zaXYpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFVuaWZvcm00ZiIpLCAmdW5pZm9ybTRm
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3Jt
NGZ2IiksICZ1bmlmb3JtNGZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xVbmlmb3JtNGkiKSwgJnVuaWZvcm00aSk7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5pZm9ybTRpdiIpLCAmdW5pZm9ybTRpdik7Cisg
ICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5pZm9ybU1hdHJp
eDJmdiIpLCAmdW5pZm9ybU1hdHJpeDJmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChs
b2FkUHJvY0FkZHJlc3MoImdsVW5pZm9ybU1hdHJpeDNmdiIpLCAmdW5pZm9ybU1hdHJpeDNmdik7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5pZm9ybU1h
dHJpeDRmdiIpLCAmdW5pZm9ybU1hdHJpeDRmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2lu
dChsb2FkUHJvY0FkZHJlc3MoImdsVXNlUHJvZ3JhbSIpLCAmdXNlUHJvZ3JhbSk7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmFsaWRhdGVQcm9ncmFtIiks
ICZ2YWxpZGF0ZVByb2dyYW0pOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbFZlcnRleEF0dHJpYjFmIiksICZ2ZXJ0ZXhBdHRyaWIxZik7CisgICAgICAgIEFz
c2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliMWZ2IiksICZ2
ZXJ0ZXhBdHRyaWIxZnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbFZlcnRleEF0dHJpYjJmIiksICZ2ZXJ0ZXhBdHRyaWIyZik7CisgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliMmZ2IiksICZ2ZXJ0
ZXhBdHRyaWIyZnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNz
KCJnbFZlcnRleEF0dHJpYjNmIiksICZ2ZXJ0ZXhBdHRyaWIzZik7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliM2Z2IiksICZ2ZXJ0ZXhB
dHRyaWIzZnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bFZlcnRleEF0dHJpYjRmIiksICZ2ZXJ0ZXhBdHRyaWI0Zik7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliNGZ2IiksICZ2ZXJ0ZXhBdHRy
aWI0ZnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFZl
cnRleEF0dHJpYlBvaW50ZXIiKSwgJnZlcnRleEF0dHJpYlBvaW50ZXIpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFZpZXdwb3J0IiksICZ2aWV3cG9ydCk7
CisgICAgfQorCisgICAgLy8gMy4wCisgICAgaWYgKGlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24o
MywgMCkpKQorICAgIHsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xSZWFkQnVmZmVyIiksICZyZWFkQnVmZmVyKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xEcmF3UmFuZ2VFbGVtZW50cyIpLCAmZHJhd1JhbmdlRWxl
bWVudHMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFRl
eEltYWdlM0QiKSwgJnRleEltYWdlM0QpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbFRleFN1YkltYWdlM0QiKSwgJnRleFN1YkltYWdlM0QpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENvcHlUZXhTdWJJbWFnZTNE
IiksICZjb3B5VGV4U3ViSW1hZ2UzRCk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2Fk
UHJvY0FkZHJlc3MoImdsQ29tcHJlc3NlZFRleEltYWdlM0QiKSwgJmNvbXByZXNzZWRUZXhJbWFn
ZTNEKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDb21w
cmVzc2VkVGV4U3ViSW1hZ2UzRCIpLCAmY29tcHJlc3NlZFRleFN1YkltYWdlM0QpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdlblF1ZXJpZXMiKSwgJmdl
blF1ZXJpZXMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bERlbGV0ZVF1ZXJpZXMiKSwgJmRlbGV0ZVF1ZXJpZXMpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElzUXVlcnkiKSwgJmlzUXVlcnkpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEJlZ2luUXVlcnkiKSwgJmJlZ2lu
UXVlcnkpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEVu
ZFF1ZXJ5IiksICZlbmRRdWVyeSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsR2V0UXVlcnlpdiIpLCAmZ2V0UXVlcnlpdik7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3R1aXYiKSwgJmdldFF1
ZXJ5T2JqZWN0dWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xVbm1hcEJ1ZmZlciIpLCAmdW5tYXBCdWZmZXIpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEJ1ZmZlclBvaW50ZXJ2IiksICZnZXRCdWZmZXJQ
b2ludGVydik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
RHJhd0J1ZmZlcnMiKSwgJmRyYXdCdWZmZXJzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtTWF0cml4MngzZnYiKSwgJnVuaWZvcm1NYXRyaXgy
eDNmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5p
Zm9ybU1hdHJpeDN4MmZ2IiksICZ1bmlmb3JtTWF0cml4M3gyZnYpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFVuaWZvcm1NYXRyaXgyeDRmdiIpLCAmdW5p
Zm9ybU1hdHJpeDJ4NGZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRk
cmVzcygiZ2xVbmlmb3JtTWF0cml4NHgyZnYiKSwgJnVuaWZvcm1NYXRyaXg0eDJmdik7CisgICAg
ICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5pZm9ybU1hdHJpeDN4
NGZ2IiksICZ1bmlmb3JtTWF0cml4M3g0ZnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQo
bG9hZFByb2NBZGRyZXNzKCJnbFVuaWZvcm1NYXRyaXg0eDNmdiIpLCAmdW5pZm9ybU1hdHJpeDR4
M2Z2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCbGl0
RnJhbWVidWZmZXIiKSwgJmJsaXRGcmFtZWJ1ZmZlcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlIiks
ICZyZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyIiksICZmcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsTWFwQnVmZmVyUmFuZ2UiKSwgJm1hcEJ1ZmZlclJhbmdlKTsKKyAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xGbHVzaE1hcHBlZEJ1ZmZlclJh
bmdlIiksICZmbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kVmVydGV4QXJyYXkiKSwgJmJpbmRWZXJ0ZXhBcnJh
eSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRl
VmVydGV4QXJyYXlzIiksICZkZWxldGVWZXJ0ZXhBcnJheXMpOworICAgICAgICBBc3NpZ25HTEVu
dHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdlblZlcnRleEFycmF5cyIpLCAmZ2VuVmVydGV4
QXJyYXlzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xJ
c1ZlcnRleEFycmF5IiksICZpc1ZlcnRleEFycmF5KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRJbnRlZ2VyaV92IiksICZnZXRJbnRlZ2VyaV92KTsK
KyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCZWdpblRyYW5z
Zm9ybUZlZWRiYWNrIiksICZiZWdpblRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICAgICAgQXNzaWdu
R0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjayIpLCAm
ZW5kVHJhbnNmb3JtRmVlZGJhY2spOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFBy
b2NBZGRyZXNzKCJnbEJpbmRCdWZmZXJSYW5nZSIpLCAmYmluZEJ1ZmZlclJhbmdlKTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kQnVmZmVyQmFzZSIp
LCAmYmluZEJ1ZmZlckJhc2UpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MiKSwgJnRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bEdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZyIpLCAmZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0
ZXhBdHRyaWJJUG9pbnRlciIpLCAmdmVydGV4QXR0cmliSVBvaW50ZXIpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFZlcnRleEF0dHJpYklpdiIpLCAm
Z2V0VmVydGV4QXR0cmliSWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2IiksICZnZXRWZXJ0ZXhBdHRyaWJJdWl2KTsK
KyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRy
aWJJNGkiKSwgJnZlcnRleEF0dHJpYkk0aSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChs
b2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliSTR1aSIpLCAmdmVydGV4QXR0cmliSTR1aSk7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0
cmliSTRpdiIpLCAmdmVydGV4QXR0cmliSTRpdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2lu
dChsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliSTR1aXYiKSwgJnZlcnRleEF0dHJpYkk0
dWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRV
bmlmb3JtdWl2IiksICZnZXRVbmlmb3JtdWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRGcmFnRGF0YUxvY2F0aW9uIiksICZnZXRGcmFnRGF0YUxv
Y2F0aW9uKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xV
bmlmb3JtMXVpIiksICZ1bmlmb3JtMXVpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtMnVpIiksICZ1bmlmb3JtMnVpKTsKKyAgICAgICAgQXNz
aWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtM3VpIiksICZ1bmlmb3Jt
M3VpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlm
b3JtNHVpIiksICZ1bmlmb3JtNHVpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xVbmlmb3JtMXVpdiIpLCAmdW5pZm9ybTF1aXYpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFVuaWZvcm0ydWl2IiksICZ1bmlmb3Jt
MnVpdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVW5p
Zm9ybTN1aXYiKSwgJnVuaWZvcm0zdWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtNHVpdiIpLCAmdW5pZm9ybTR1aXYpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENsZWFyQnVmZmVyaXYiKSwgJmNs
ZWFyQnVmZmVyaXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNz
KCJnbENsZWFyQnVmZmVydWl2IiksICZjbGVhckJ1ZmZlcnVpdik7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ2xlYXJCdWZmZXJmdiIpLCAmY2xlYXJCdWZm
ZXJmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ2xl
YXJCdWZmZXJmaSIpLCAmY2xlYXJCdWZmZXJmaSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2lu
dChsb2FkUHJvY0FkZHJlc3MoImdsR2V0U3RyaW5naSIpLCAmZ2V0U3RyaW5naSk7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQ29weUJ1ZmZlclN1YkRhdGEi
KSwgJmNvcHlCdWZmZXJTdWJEYXRhKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRVbmlmb3JtSW5kaWNlcyIpLCAmZ2V0VW5pZm9ybUluZGljZXMpOwor
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEFjdGl2ZVVu
aWZvcm1zaXYiKSwgJmdldEFjdGl2ZVVuaWZvcm1zaXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFVuaWZvcm1CbG9ja0luZGV4IiksICZnZXRVbmlm
b3JtQmxvY2tJbmRleCk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYiKSwgJmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRBY3Rp
dmVVbmlmb3JtQmxvY2tOYW1lIiksICZnZXRBY3RpdmVVbmlmb3JtQmxvY2tOYW1lKTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVbmlmb3JtQmxvY2tCaW5k
aW5nIiksICZ1bmlmb3JtQmxvY2tCaW5kaW5nKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkIiksICZkcmF3QXJyYXlzSW5z
dGFuY2VkKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xE
cmF3RWxlbWVudHNJbnN0YW5jZWQiKSwgJmRyYXdFbGVtZW50c0luc3RhbmNlZCk7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRmVuY2VTeW5jIiksICZmZW5j
ZVN5bmMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElz
U3luYyIpLCAmaXNTeW5jKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRk
cmVzcygiZ2xEZWxldGVTeW5jIiksICZkZWxldGVTeW5jKTsKKyAgICAgICAgQXNzaWduR0xFbnRy
eVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDbGllbnRXYWl0U3luYyIpLCAmY2xpZW50V2FpdFN5
bmMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFdhaXRT
eW5jIiksICZ3YWl0U3luYyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsR2V0SW50ZWdlcjY0diIpLCAmZ2V0SW50ZWdlcjY0dik7CisgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0U3luY2l2IiksICZnZXRTeW5jaXYp
OworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldEludGVn
ZXI2NGlfdiIpLCAmZ2V0SW50ZWdlcjY0aV92KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2IiksICZnZXRCdWZmZXJQ
YXJhbWV0ZXJpNjR2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xHZW5TYW1wbGVycyIpLCAmZ2VuU2FtcGxlcnMpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbERlbGV0ZVNhbXBsZXJzIiksICZkZWxldGVTYW1wbGVy
cyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsSXNTYW1w
bGVyIiksICZpc1NhbXBsZXIpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbEJpbmRTYW1wbGVyIiksICZiaW5kU2FtcGxlcik7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcmkiKSwgJnNhbXBs
ZXJQYXJhbWV0ZXJpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xTYW1wbGVyUGFyYW1ldGVyaXYiKSwgJnNhbXBsZXJQYXJhbWV0ZXJpdik7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcmYi
KSwgJnNhbXBsZXJQYXJhbWV0ZXJmKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xTYW1wbGVyUGFyYW1ldGVyZnYiKSwgJnNhbXBsZXJQYXJhbWV0ZXJmdik7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0U2FtcGxl
clBhcmFtZXRlcml2IiksICZnZXRTYW1wbGVyUGFyYW1ldGVyaXYpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdiIpLCAm
Z2V0U2FtcGxlclBhcmFtZXRlcmZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yIiksICZ2ZXJ0ZXhBdHRyaWJEaXZpc29y
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5kVHJh
bnNmb3JtRmVlZGJhY2siKSwgJmJpbmRUcmFuc2Zvcm1GZWVkYmFjayk7CisgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tz
IiksICZkZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9p
bnQobG9hZFByb2NBZGRyZXNzKCJnbEdlblRyYW5zZm9ybUZlZWRiYWNrcyIpLCAmZ2VuVHJhbnNm
b3JtRmVlZGJhY2tzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xJc1RyYW5zZm9ybUZlZWRiYWNrIiksICZpc1RyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQYXVzZVRyYW5zZm9ybUZl
ZWRiYWNrIiksICZwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICAgICAgQXNzaWduR0xFbnRy
eVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xSZXN1bWVUcmFuc2Zvcm1GZWVkYmFjayIpLCAmcmVz
dW1lVHJhbnNmb3JtRmVlZGJhY2spOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFBy
b2NBZGRyZXNzKCJnbEdldFByb2dyYW1CaW5hcnkiKSwgJmdldFByb2dyYW1CaW5hcnkpOworICAg
ICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1CaW5hcnki
KSwgJnByb2dyYW1CaW5hcnkpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbFByb2dyYW1QYXJhbWV0ZXJpIiksICZwcm9ncmFtUGFyYW1ldGVyaSk7CisgICAg
ICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsSW52YWxpZGF0ZUZyYW1l
YnVmZmVyIiksICZpbnZhbGlkYXRlRnJhbWVidWZmZXIpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlciIpLCAmaW52
YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xUZXhTdG9yYWdlMkQiKSwgJnRleFN0b3JhZ2UyRCk7CisgICAgICAgIEFz
c2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVGV4U3RvcmFnZTNEIiksICZ0ZXhT
dG9yYWdlM0QpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJn
bEdldEludGVybmFsZm9ybWF0aXYiKSwgJmdldEludGVybmFsZm9ybWF0aXYpOworICAgIH0KKwor
ICAgIC8vIDMuMQorICAgIGlmIChpc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDEpKSkKKyAg
ICB7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsRGlzcGF0
Y2hDb21wdXRlIiksICZkaXNwYXRjaENvbXB1dGUpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9p
bnQobG9hZFByb2NBZGRyZXNzKCJnbERpc3BhdGNoQ29tcHV0ZUluZGlyZWN0IiksICZkaXNwYXRj
aENvbXB1dGVJbmRpcmVjdCk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsRHJhd0FycmF5c0luZGlyZWN0IiksICZkcmF3QXJyYXlzSW5kaXJlY3QpOworICAg
ICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbERyYXdFbGVtZW50c0lu
ZGlyZWN0IiksICZkcmF3RWxlbWVudHNJbmRpcmVjdCk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsRnJhbWVidWZmZXJQYXJhbWV0ZXJpIiksICZmcmFtZWJ1
ZmZlclBhcmFtZXRlcmkpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYiKSwgJmdldEZyYW1lYnVmZmVyUGFyYW1l
dGVyaXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdl
dFByb2dyYW1JbnRlcmZhY2VpdiIpLCAmZ2V0UHJvZ3JhbUludGVyZmFjZWl2KTsKKyAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtUmVzb3VyY2VJ
bmRleCIpLCAmZ2V0UHJvZ3JhbVJlc291cmNlSW5kZXgpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFByb2dyYW1SZXNvdXJjZU5hbWUiKSwgJmdldFBy
b2dyYW1SZXNvdXJjZU5hbWUpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbEdldFByb2dyYW1SZXNvdXJjZWl2IiksICZnZXRQcm9ncmFtUmVzb3VyY2Vpdik7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0UHJvZ3Jh
bVJlc291cmNlTG9jYXRpb24iKSwgJmdldFByb2dyYW1SZXNvdXJjZUxvY2F0aW9uKTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xVc2VQcm9ncmFtU3RhZ2Vz
IiksICZ1c2VQcm9ncmFtU3RhZ2VzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xBY3RpdmVTaGFkZXJQcm9ncmFtIiksICZhY3RpdmVTaGFkZXJQcm9ncmFt
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xDcmVhdGVT
aGFkZXJQcm9ncmFtdiIpLCAmY3JlYXRlU2hhZGVyUHJvZ3JhbXYpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEJpbmRQcm9ncmFtUGlwZWxpbmUiKSwgJmJp
bmRQcm9ncmFtUGlwZWxpbmUpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbERlbGV0ZVByb2dyYW1QaXBlbGluZXMiKSwgJmRlbGV0ZVByb2dyYW1QaXBlbGlu
ZXMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdlblBy
b2dyYW1QaXBlbGluZXMiKSwgJmdlblByb2dyYW1QaXBlbGluZXMpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElzUHJvZ3JhbVBpcGVsaW5lIiksICZpc1By
b2dyYW1QaXBlbGluZSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsR2V0UHJvZ3JhbVBpcGVsaW5laXYiKSwgJmdldFByb2dyYW1QaXBlbGluZWl2KTsKKyAg
ICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5pZm9y
bTFpIiksICZwcm9ncmFtVW5pZm9ybTFpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxv
YWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5pZm9ybTJpIiksICZwcm9ncmFtVW5pZm9ybTJpKTsK
KyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5p
Zm9ybTNpIiksICZwcm9ncmFtVW5pZm9ybTNpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5pZm9ybTRpIiksICZwcm9ncmFtVW5pZm9ybTRp
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFt
VW5pZm9ybTF1aSIpLCAmcHJvZ3JhbVVuaWZvcm0xdWkpOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtMnVpIiksICZwcm9ncmFtVW5p
Zm9ybTJ1aSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
UHJvZ3JhbVVuaWZvcm0zdWkiKSwgJnByb2dyYW1Vbmlmb3JtM3VpKTsKKyAgICAgICAgQXNzaWdu
R0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5pZm9ybTR1aSIpLCAmcHJv
Z3JhbVVuaWZvcm00dWkpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbFByb2dyYW1Vbmlmb3JtMWYiKSwgJnByb2dyYW1Vbmlmb3JtMWYpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtMmYiKSwg
JnByb2dyYW1Vbmlmb3JtMmYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NB
ZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtM2YiKSwgJnByb2dyYW1Vbmlmb3JtM2YpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtNGYi
KSwgJnByb2dyYW1Vbmlmb3JtNGYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFBy
b2NBZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtMWl2IiksICZwcm9ncmFtVW5pZm9ybTFpdik7Cisg
ICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZv
cm0yaXYiKSwgJnByb2dyYW1Vbmlmb3JtMml2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50
KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5pZm9ybTNpdiIpLCAmcHJvZ3JhbVVuaWZvcm0z
aXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dy
YW1Vbmlmb3JtNGl2IiksICZwcm9ncmFtVW5pZm9ybTRpdik7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZvcm0xdWl2IiksICZwcm9ncmFt
VW5pZm9ybTF1aXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNz
KCJnbFByb2dyYW1Vbmlmb3JtMnVpdiIpLCAmcHJvZ3JhbVVuaWZvcm0ydWl2KTsKKyAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFtVW5pZm9ybTN1aXYi
KSwgJnByb2dyYW1Vbmlmb3JtM3Vpdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2Fk
UHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZvcm00dWl2IiksICZwcm9ncmFtVW5pZm9ybTR1aXYp
OworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1V
bmlmb3JtMWZ2IiksICZwcm9ncmFtVW5pZm9ybTFmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZvcm0yZnYiKSwgJnByb2dyYW1Vbmlm
b3JtMmZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQ
cm9ncmFtVW5pZm9ybTNmdiIpLCAmcHJvZ3JhbVVuaWZvcm0zZnYpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtNGZ2IiksICZwcm9n
cmFtVW5pZm9ybTRmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYiKSwgJnByb2dyYW1Vbmlmb3JtTWF0cml4MmZ2
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQcm9ncmFt
VW5pZm9ybU1hdHJpeDNmdiIpLCAmcHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFByb2dyYW1Vbmlmb3JtTWF0cml4
NGZ2IiksICZwcm9ncmFtVW5pZm9ybU1hdHJpeDRmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQ
b2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdiIpLCAmcHJv
Z3JhbVVuaWZvcm1NYXRyaXgyeDNmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2Fk
UHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdiIpLCAmcHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDJmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdiIpLCAmcHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDRmdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJv
Z3JhbVVuaWZvcm1NYXRyaXg0eDJmdiIpLCAmcHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdik7Cisg
ICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZv
cm1NYXRyaXgzeDRmdiIpLCAmcHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdik7CisgICAgICAgIEFz
c2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJvZ3JhbVVuaWZvcm1NYXRyaXg0
eDNmdiIpLCAmcHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdik7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsVmFsaWRhdGVQcm9ncmFtUGlwZWxpbmUiKSwgJnZh
bGlkYXRlUHJvZ3JhbVBpcGVsaW5lKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtUGlwZWxpbmVJbmZvTG9nIiksICZnZXRQcm9ncmFtUGlw
ZWxpbmVJbmZvTG9nKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xCaW5kSW1hZ2VUZXh0dXJlIiksICZiaW5kSW1hZ2VUZXh0dXJlKTsKKyAgICAgICAgQXNz
aWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRCb29sZWFuaV92IiksICZnZXRC
b29sZWFuaV92KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygi
Z2xNZW1vcnlCYXJyaWVyIiksICZtZW1vcnlCYXJyaWVyKTsKKyAgICAgICAgQXNzaWduR0xFbnRy
eVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xNZW1vcnlCYXJyaWVyQnlSZWdpb24iKSwgJm1lbW9y
eUJhcnJpZXJCeVJlZ2lvbik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0Fk
ZHJlc3MoImdsVGV4U3RvcmFnZTJETXVsdGlzYW1wbGUiKSwgJnRleFN0b3JhZ2UyRE11bHRpc2Ft
cGxlKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRN
dWx0aXNhbXBsZWZ2IiksICZnZXRNdWx0aXNhbXBsZWZ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRy
eVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xTYW1wbGVNYXNraSIpLCAmc2FtcGxlTWFza2kpOwor
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFRleExldmVs
UGFyYW1ldGVyaXYiKSwgJmdldFRleExldmVsUGFyYW1ldGVyaXYpOworICAgICAgICBBc3NpZ25H
TEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldFRleExldmVsUGFyYW1ldGVyZnYiKSwg
JmdldFRleExldmVsUGFyYW1ldGVyZnYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbEJpbmRWZXJ0ZXhCdWZmZXIiKSwgJmJpbmRWZXJ0ZXhCdWZmZXIpOwor
ICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFZlcnRleEF0dHJp
YkZvcm1hdCIpLCAmdmVydGV4QXR0cmliRm9ybWF0KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBv
aW50KGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJJRm9ybWF0IiksICZ2ZXJ0ZXhBdHRy
aWJJRm9ybWF0KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygi
Z2xWZXJ0ZXhBdHRyaWJCaW5kaW5nIiksICZ2ZXJ0ZXhBdHRyaWJCaW5kaW5nKTsKKyAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhCaW5kaW5nRGl2aXNv
ciIpLCAmdmVydGV4QmluZGluZ0Rpdmlzb3IpOworICAgIH0KKworICAgIC8vIDMuMgorICAgIGlm
IChpc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDIpKSkKKyAgICB7CisgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmxlbmRCYXJyaWVyIiksICZibGVuZEJh
cnJpZXIpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENv
cHlJbWFnZVN1YkRhdGEiKSwgJmNvcHlJbWFnZVN1YkRhdGEpOworICAgICAgICBBc3NpZ25HTEVu
dHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbERlYnVnTWVzc2FnZUNvbnRyb2wiKSwgJmRlYnVn
TWVzc2FnZUNvbnRyb2wpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbERlYnVnTWVzc2FnZUluc2VydCIpLCAmZGVidWdNZXNzYWdlSW5zZXJ0KTsKKyAgICAg
ICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xEZWJ1Z01lc3NhZ2VDYWxs
YmFjayIpLCAmZGVidWdNZXNzYWdlQ2FsbGJhY2spOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9p
bnQobG9hZFByb2NBZGRyZXNzKCJnbEdldERlYnVnTWVzc2FnZUxvZyIpLCAmZ2V0RGVidWdNZXNz
YWdlTG9nKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xQ
dXNoRGVidWdHcm91cCIpLCAmcHVzaERlYnVnR3JvdXApOworICAgICAgICBBc3NpZ25HTEVudHJ5
UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFBvcERlYnVnR3JvdXAiKSwgJnBvcERlYnVnR3JvdXAp
OworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbE9iamVjdExh
YmVsIiksICZvYmplY3RMYWJlbCk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsR2V0T2JqZWN0TGFiZWwiKSwgJmdldE9iamVjdExhYmVsKTsKKyAgICAgICAg
QXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xPYmplY3RQdHJMYWJlbCIpLCAm
b2JqZWN0UHRyTGFiZWwpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbEdldE9iamVjdFB0ckxhYmVsIiksICZnZXRPYmplY3RQdHJMYWJlbCk7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsR2V0UG9pbnRlcnYiKSwgJmdl
dFBvaW50ZXJ2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygi
Z2xFbmFibGVpIiksICZlbmFibGVpKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQ
cm9jQWRkcmVzcygiZ2xEaXNhYmxlaSIpLCAmZGlzYWJsZWkpOworICAgICAgICBBc3NpZ25HTEVu
dHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEJsZW5kRXF1YXRpb25pIiksICZibGVuZEVxdWF0
aW9uaSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmxl
bmRFcXVhdGlvblNlcGFyYXRlaSIpLCAmYmxlbmRFcXVhdGlvblNlcGFyYXRlaSk7CisgICAgICAg
IEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsQmxlbmRGdW5jaSIpLCAmYmxl
bmRGdW5jaSk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImds
QmxlbmRGdW5jU2VwYXJhdGVpIiksICZibGVuZEZ1bmNTZXBhcmF0ZWkpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbENvbG9yTWFza2kiKSwgJmNvbG9yTWFz
a2kpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbElzRW5h
YmxlZGkiKSwgJmlzRW5hYmxlZGkpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFBy
b2NBZGRyZXNzKCJnbERyYXdFbGVtZW50c0Jhc2VWZXJ0ZXgiKSwgJmRyYXdFbGVtZW50c0Jhc2VW
ZXJ0ZXgpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbERy
YXdSYW5nZUVsZW1lbnRzQmFzZVZlcnRleCIpLCAmZHJhd1JhbmdlRWxlbWVudHNCYXNlVmVydGV4
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xEcmF3RWxl
bWVudHNJbnN0YW5jZWRCYXNlVmVydGV4IiksICZkcmF3RWxlbWVudHNJbnN0YW5jZWRCYXNlVmVy
dGV4KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUiKSwgJmZyYW1lYnVmZmVyVGV4dHVyZSk7CisgICAgICAgIEFzc2lnbkdM
RW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsUHJpbWl0aXZlQm91bmRpbmdCb3giKSwgJnBy
aW1pdGl2ZUJvdW5kaW5nQm94KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9j
QWRkcmVzcygiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzIiksICZnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xSZWFk
blBpeGVscyIpLCAmcmVhZG5QaXhlbHMpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9h
ZFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3JtZnYiKSwgJmdldG5Vbmlmb3JtZnYpOworICAgICAg
ICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3JtaXYiKSwg
JmdldG5Vbmlmb3JtaXYpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRy
ZXNzKCJnbEdldG5Vbmlmb3JtdWl2IiksICZnZXRuVW5pZm9ybXVpdik7CisgICAgICAgIEFzc2ln
bkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsTWluU2FtcGxlU2hhZGluZyIpLCAmbWlu
U2FtcGxlU2hhZGluZyk7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJl
c3MoImdsUGF0Y2hQYXJhbWV0ZXJpIiksICZwYXRjaFBhcmFtZXRlcmkpOworICAgICAgICBBc3Np
Z25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFRleFBhcmFtZXRlcklpdiIpLCAmdGV4
UGFyYW1ldGVySWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVz
cygiZ2xUZXhQYXJhbWV0ZXJJdWl2IiksICZ0ZXhQYXJhbWV0ZXJJdWl2KTsKKyAgICAgICAgQXNz
aWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRUZXhQYXJhbWV0ZXJJaXYiKSwg
JmdldFRleFBhcmFtZXRlcklpdik7CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJv
Y0FkZHJlc3MoImdsR2V0VGV4UGFyYW1ldGVySXVpdiIpLCAmZ2V0VGV4UGFyYW1ldGVySXVpdik7
CisgICAgICAgIEFzc2lnbkdMRW50cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU2FtcGxlclBh
cmFtZXRlcklpdiIpLCAmc2FtcGxlclBhcmFtZXRlcklpdik7CisgICAgICAgIEFzc2lnbkdMRW50
cnlQb2ludChsb2FkUHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlckl1aXYiKSwgJnNhbXBs
ZXJQYXJhbWV0ZXJJdWl2KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRk
cmVzcygiZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2IiksICZnZXRTYW1wbGVyUGFyYW1ldGVySWl2
KTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRTYW1w
bGVyUGFyYW1ldGVySXVpdiIpLCAmZ2V0U2FtcGxlclBhcmFtZXRlckl1aXYpOworICAgICAgICBB
c3NpZ25HTEVudHJ5UG9pbnQobG9hZFByb2NBZGRyZXNzKCJnbFRleEJ1ZmZlciIpLCAmdGV4QnVm
ZmVyKTsKKyAgICAgICAgQXNzaWduR0xFbnRyeVBvaW50KGxvYWRQcm9jQWRkcmVzcygiZ2xUZXhC
dWZmZXJSYW5nZSIpLCAmdGV4QnVmZmVyUmFuZ2UpOworICAgICAgICBBc3NpZ25HTEVudHJ5UG9p
bnQobG9hZFByb2NBZGRyZXNzKCJnbFRleFN0b3JhZ2UzRE11bHRpc2FtcGxlIiksICZ0ZXhTdG9y
YWdlM0RNdWx0aXNhbXBsZSk7CisgICAgfQorCisgICAgLy8gY2xhbmctZm9ybWF0IG9uCiB9CisK
K2Jvb2wgRnVuY3Rpb25zR0w6OmlzQXRMZWFzdEdMKGNvbnN0IGdsOjpWZXJzaW9uICZnbFZlcnNp
b24pIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1Ag
JiYgdmVyc2lvbiA+PSBnbFZlcnNpb247Cit9CisKK2Jvb2wgRnVuY3Rpb25zR0w6OmlzQXRMZWFz
dEdMRVMoY29uc3QgZ2w6OlZlcnNpb24gJmdsZXNWZXJzaW9uKSBjb25zdAoreworICAgIHJldHVy
biBzdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9FUyAmJiB2ZXJzaW9uID49IGdsZXNWZXJzaW9uOwor
fQorCitib29sIEZ1bmN0aW9uc0dMOjpoYXNFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcgJmV4
dCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjpmaW5kKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0
ZW5zaW9ucy5lbmQoKSwgZXh0KSAhPSBleHRlbnNpb25zLmVuZCgpOworfQorCitib29sIEZ1bmN0
aW9uc0dMOjpoYXNHTEV4dGVuc2lvbihjb25zdCBzdGQ6OnN0cmluZyAmZXh0KSBjb25zdAorewor
ICAgIHJldHVybiBzdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIGhhc0V4dGVuc2lv
bihleHQpOworfQorCitib29sIEZ1bmN0aW9uc0dMOjpoYXNHTEVTRXh0ZW5zaW9uKGNvbnN0IHN0
ZDo6c3RyaW5nICZleHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YW5kYXJkID09IFNUQU5EQVJE
X0dMX0VTICYmIGhhc0V4dGVuc2lvbihleHQpOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
RnVuY3Rpb25zR0wuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDEyICsxMCwxOSBAQAogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9GVU5DVElP
TlNHTF9IXwogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
VmVyc2lvbi5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX2Vu
dW1zLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRl
ZnMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKK2VudW0gU3RhbmRhcmRHTAoreworICAgIFNUQU5E
QVJEX0dMX0RFU0tUT1AsCisgICAgU1RBTkRBUkRfR0xfRVMsCit9OworCiBjbGFzcyBGdW5jdGlv
bnNHTAogewogICBwdWJsaWM6CkBAIC0yNSwxMiArMzIsMTcgQEAKICAgICB2b2lkIGluaXRpYWxp
emUoKTsKIAogICAgIC8vIFZlcnNpb24gaW5mb3JtYXRpb24KLSAgICBHTHVpbnQgbWFqb3JWZXJz
aW9uOwotICAgIEdMdWludCBtaW5vclZlcnNpb247Ci0gICAgYm9vbCBvcGVuR0xFUzsKKyAgICBn
bDo6VmVyc2lvbiB2ZXJzaW9uOworICAgIFN0YW5kYXJkR0wgc3RhbmRhcmQ7CisgICAgR0xpbnQg
cHJvZmlsZTsKKyAgICBib29sIGlzQXRMZWFzdEdMKGNvbnN0IGdsOjpWZXJzaW9uICZnbFZlcnNp
b24pIGNvbnN0OworICAgIGJvb2wgaXNBdExlYXN0R0xFUyhjb25zdCBnbDo6VmVyc2lvbiAmZ2xl
c1ZlcnNpb24pIGNvbnN0OwogCiAgICAgLy8gRXh0ZW5zaW9ucwogICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiBleHRlbnNpb25zOworICAgIGJvb2wgaGFzRXh0ZW5zaW9uKGNvbnN0IHN0ZDo6
c3RyaW5nICZleHQpIGNvbnN0OworICAgIGJvb2wgaGFzR0xFeHRlbnNpb24oY29uc3Qgc3RkOjpz
dHJpbmcgJmV4dCkgY29uc3Q7CisgICAgYm9vbCBoYXNHTEVTRXh0ZW5zaW9uKGNvbnN0IHN0ZDo6
c3RyaW5nICZleHQpIGNvbnN0OwogCiAgICAgLy8gRW50cnkgUG9pbnRzCiAgICAgLy8gMS4wCkBA
IC01NzYsNiArNTg4LDcgQEAKICAgICBQRk5HTEdFVERFQlVHTUVTU0FHRUxPR1BST0MgZ2V0RGVi
dWdNZXNzYWdlTG9nOwogICAgIFBGTkdMR0VURlJBTUVCVUZGRVJQQVJBTUVURVJJVlBST0MgZ2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpdjsKICAgICBQRk5HTEdFVElOVEVSTkFMRk9STUFUSTY0VlBS
T0MgZ2V0SW50ZXJuYWxmb3JtYXRpNjR2OworICAgIFBGTkdMR0VUUE9JTlRFUlZQUk9DIGdldFBv
aW50ZXJ2OwogICAgIFBGTkdMR0VUT0JKRUNUTEFCRUxQUk9DIGdldE9iamVjdExhYmVsOwogICAg
IFBGTkdMR0VUT0JKRUNUUFRSTEFCRUxQUk9DIGdldE9iamVjdFB0ckxhYmVsOwogICAgIFBGTkdM
R0VUUFJPR1JBTUlOVEVSRkFDRUlWUFJPQyBnZXRQcm9ncmFtSW50ZXJmYWNlaXY7CkBAIC03MzAs
NyArNzQzLDE4IEBACiAgICAgUEZOR0xWRVJURVhBUlJBWVZFUlRFWEJVRkZFUlBST0MgdmVydGV4
QXJyYXlWZXJ0ZXhCdWZmZXI7CiAgICAgUEZOR0xWRVJURVhBUlJBWVZFUlRFWEJVRkZFUlNQUk9D
IHZlcnRleEFycmF5VmVydGV4QnVmZmVyczsKIAorICAgIC8vIEVTIDMuMgorICAgIFBGTkdMQkxF
TkRCQVJSSUVSUFJPQyBibGVuZEJhcnJpZXI7CisgICAgUEZOR0xQUklNSVRJVkVCT1VORElOR0JP
WFBST0MgcHJpbWl0aXZlQm91bmRpbmdCb3g7CisKKyAgICAvLyBFUyBleHRlbnNpb25zCisgICAg
UEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNQUk9DIGVnbEltYWdlVGFy
Z2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUzsKKyAgICBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVS
RTJET0VTUFJPQyBlZ2xJbWFnZVRhcmdldFRleHR1cmUyRE9FUzsKKwogICBwcml2YXRlOgorICAg
IHZvaWQgaW5pdGlhbGl6ZVByb2NzRGVza3RvcEdMKCk7CisgICAgdm9pZCBpbml0aWFsaXplUHJv
Y3NHTEVTKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgKmxvYWRQcm9jQWRkcmVzcyhjb25zdCBzdGQ6
OnN0cmluZyAmZnVuY3Rpb24pID0gMDsKIH07CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFt
R0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMs
MjI5ICsxMywyNTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vUGxh
dGZvcm0uaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLVByb2dyYW1HTDo6UHJvZ3JhbUdMKGNvbnN0
IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCi0g
ICAgOiBQcm9ncmFtSW1wbCgpLAorUHJvZ3JhbUdMOjpQcm9ncmFtR0woY29uc3QgZ2w6OlByb2dy
YW06OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAq
ZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29y
a2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5h
Z2VyKQorICAgIDogUHJvZ3JhbUltcGwoZGF0YSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9u
cyksCisgICAgICBtV29ya2Fyb3VuZHMod29ya2Fyb3VuZHMpLAogICAgICAgbVN0YXRlTWFuYWdl
cihzdGF0ZU1hbmFnZXIpLAogICAgICAgbVByb2dyYW1JRCgwKQogewogICAgIEFTU0VSVChtRnVu
Y3Rpb25zKTsKICAgICBBU1NFUlQobVN0YXRlTWFuYWdlcik7CisKKyAgICBtUHJvZ3JhbUlEID0g
bUZ1bmN0aW9ucy0+Y3JlYXRlUHJvZ3JhbSgpOwogfQogCiBQcm9ncmFtR0w6On5Qcm9ncmFtR0wo
KQogewotICAgIGlmIChtUHJvZ3JhbUlEICE9IDApCi0gICAgewotICAgICAgICBtRnVuY3Rpb25z
LT5kZWxldGVQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgICAgICBtUHJvZ3JhbUlEID0gMDsKLSAg
ICB9CisgICAgbUZ1bmN0aW9ucy0+ZGVsZXRlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICBtUHJv
Z3JhbUlEID0gMDsKIH0KIAotYm9vbCBQcm9ncmFtR0w6OnVzZXNQb2ludFNpemUoKSBjb25zdAor
TGlua1Jlc3VsdCBQcm9ncmFtR0w6OmxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5h
cnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gYm9vbCgpOworICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKIH0KIAotaW50IFByb2dyYW1HTDo6Z2V0U2hhZGVyVmVyc2lvbigp
IGNvbnN0CitnbDo6RXJyb3IgUHJvZ3JhbUdMOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0g
KnN0cmVhbSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGludCgpOworICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1HTGVudW0gUHJv
Z3JhbUdMOjpnZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdAordm9pZCBQcm9n
cmFtR0w6OnNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKQogewogICAg
IFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gR0xlbnVtKCk7CiB9CiAKLUdMZW51bSBQcm9n
cmFtR0w6OmdldEJpbmFyeUZvcm1hdCgpCitMaW5rUmVzdWx0IFByb2dyYW1HTDo6bGluayhjb25z
dCBnbDo6RGF0YSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBHTGVudW0oKTsKLX0KKyAgICAvLyBSZXNldCB0aGUgcHJvZ3Jh
bSBzdGF0ZSwgZGVsZXRlIHRoZSBjdXJyZW50IHByb2dyYW0gaWYgb25lIGV4aXN0cworICAgIHJl
c2V0KCk7CiAKLUxpbmtSZXN1bHQgUHJvZ3JhbUdMOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7
Ci0gICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwotfQorICAgIC8vIFNldCB0aGUgdHJhbnNmb3JtIGZlZWRiYWNrIHN0YXRlCisgICAg
c3RkOjp2ZWN0b3I8Y29uc3QgR0xjaGFyICo+IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3M7Cisg
ICAgZm9yIChjb25zdCBhdXRvICZ0ZlZhcnlpbmcgOiBtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdOYW1lcygpKQorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
cy5wdXNoX2JhY2sodGZWYXJ5aW5nLmNfc3RyKCkpOworICAgIH0KIAotZ2w6OkVycm9yIFByb2dy
YW1HTDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCi17Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
fQorICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLmVtcHR5KCkpCisgICAgeworICAg
ICAgICBpZiAobUZ1bmN0aW9ucy0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncykKKyAgICAgICAg
eworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhtUHJv
Z3JhbUlELCAwLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtRGF0YS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1GdW5jdGlv
bnMtPnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOworICAgICAgICBtRnVuY3Rpb25zLT50cmFu
c2Zvcm1GZWVkYmFja1ZhcnlpbmdzKAorICAgICAgICAgICAgbVByb2dyYW1JRCwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4odHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5zaXplKCkpLAorICAgICAgICAg
ICAgJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NbMF0sIG1EYXRhLmdldFRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyTW9kZSgpKTsKKyAgICB9CiAKLUxpbmtSZXN1bHQgUHJvZ3JhbUdMOjpsaW5rKGNv
bnN0IGdsOjpEYXRhICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyLCBnbDo6U2hhZGVyICp2ZXJ0
ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ICpyZWdpc3RlcnMsIHN0ZDo6dmVjdG9yPGdsOjpMaW5rZWRW
YXJ5aW5nPiAqbGlua2VkVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
Om1hcDxpbnQsIGdsOjpWYXJpYWJsZUxvY2F0aW9uPiAqb3V0cHV0VmFyaWFibGVzKQotewotICAg
IC8vIFJlc2V0IHRoZSBwcm9ncmFtIHN0YXRlLCBkZWxldGUgdGhlIGN1cnJlbnQgcHJvZ3JhbSBp
ZiBvbmUgZXhpc3RzCi0gICAgcmVzZXQoKTsKKyAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIgICA9IG1EYXRhLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CisgICAgY29uc3QgZ2w6
OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtRGF0YS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVy
KCk7CiAKLSAgICBTaGFkZXJHTCAqdmVydGV4U2hhZGVyR0wgPSBHZXRJbXBsQXM8U2hhZGVyR0w+
KHZlcnRleFNoYWRlcik7Ci0gICAgU2hhZGVyR0wgKmZyYWdtZW50U2hhZGVyR0wgPSBHZXRJbXBs
QXM8U2hhZGVyR0w+KGZyYWdtZW50U2hhZGVyKTsKKyAgICBjb25zdCBTaGFkZXJHTCAqdmVydGV4
U2hhZGVyR0wgICA9IEdldEltcGxBczxTaGFkZXJHTD4odmVydGV4U2hhZGVyKTsKKyAgICBjb25z
dCBTaGFkZXJHTCAqZnJhZ21lbnRTaGFkZXJHTCA9IEdldEltcGxBczxTaGFkZXJHTD4oZnJhZ21l
bnRTaGFkZXIpOwogCi0gICAgLy8gR2VuZXJhdGUgYSBuZXcgcHJvZ3JhbSwgbWFrZSBzdXJlIG9u
ZSBkb2Vzbid0IGFscmVhZHkgZXhpc3QKLSAgICBBU1NFUlQobVByb2dyYW1JRCA9PSAwKTsKLSAg
ICBtUHJvZ3JhbUlEID0gbUZ1bmN0aW9ucy0+Y3JlYXRlUHJvZ3JhbSgpOwotCiAgICAgLy8gQXR0
YWNoIHRoZSBzaGFkZXJzCiAgICAgbUZ1bmN0aW9ucy0+YXR0YWNoU2hhZGVyKG1Qcm9ncmFtSUQs
IHZlcnRleFNoYWRlckdMLT5nZXRTaGFkZXJJRCgpKTsKICAgICBtRnVuY3Rpb25zLT5hdHRhY2hT
aGFkZXIobVByb2dyYW1JRCwgZnJhZ21lbnRTaGFkZXJHTC0+Z2V0U2hhZGVySUQoKSk7CiAKLSAg
ICAvLyBUT0RPOiBiaW5kIGF0dHJpYnV0ZSBsb2NhdGlvbnM/CisgICAgLy8gQmluZCBhdHRyaWJ1
dGUgbG9jYXRpb25zIHRvIG1hdGNoIHRoZSBHTCBsYXllci4KKyAgICBmb3IgKGNvbnN0IHNoOjpB
dHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1EYXRhLmdldEF0dHJpYnV0ZXMoKSkKKyAgICB7CisgICAg
ICAgIGlmICghYXR0cmlidXRlLnN0YXRpY1VzZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KIAorICAgICAgICBtRnVuY3Rpb25zLT5iaW5kQXR0cmliTG9jYXRp
b24obVByb2dyYW1JRCwgYXR0cmlidXRlLmxvY2F0aW9uLCBhdHRyaWJ1dGUubmFtZS5jX3N0cigp
KTsKKyAgICB9CisKICAgICAvLyBMaW5rIGFuZCB2ZXJpZnkKICAgICBtRnVuY3Rpb25zLT5saW5r
UHJvZ3JhbShtUHJvZ3JhbUlEKTsKIAorICAgIC8vIERldGFjaCB0aGUgc2hhZGVycworICAgIG1G
dW5jdGlvbnMtPmRldGFjaFNoYWRlcihtUHJvZ3JhbUlELCB2ZXJ0ZXhTaGFkZXJHTC0+Z2V0U2hh
ZGVySUQoKSk7CisgICAgbUZ1bmN0aW9ucy0+ZGV0YWNoU2hhZGVyKG1Qcm9ncmFtSUQsIGZyYWdt
ZW50U2hhZGVyR0wtPmdldFNoYWRlcklEKCkpOworCisgICAgLy8gVmVyaWZ5IHRoZSBsaW5rCiAg
ICAgR0xpbnQgbGlua1N0YXR1cyA9IEdMX0ZBTFNFOwogICAgIG1GdW5jdGlvbnMtPmdldFByb2dy
YW1pdihtUHJvZ3JhbUlELCBHTF9MSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOwotICAgIEFTU0VS
VChsaW5rU3RhdHVzID09IEdMX1RSVUUpOwogICAgIGlmIChsaW5rU3RhdHVzID09IEdMX0ZBTFNF
KQogICAgIHsKICAgICAgICAgLy8gTGlua2luZyBmYWlsZWQsIHB1dCB0aGUgZXJyb3IgaW50byB0
aGUgaW5mbyBsb2cKICAgICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aCA9IDA7CiAgICAgICAgIG1G
dW5jdGlvbnMtPmdldFByb2dyYW1pdihtUHJvZ3JhbUlELCBHTF9JTkZPX0xPR19MRU5HVEgsICZp
bmZvTG9nTGVuZ3RoKTsKIAotICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiBidWYoaW5mb0xvZ0xl
bmd0aCk7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmdldFByb2dyYW1JbmZvTG9nKG1Qcm9ncmFtSUQs
IGluZm9Mb2dMZW5ndGgsIG51bGxwdHIsICZidWZbMF0pOworICAgICAgICBzdGQ6OnN0cmluZyB3
YXJuaW5nOwogCi0gICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVByb2dyYW0obVByb2dyYW1JRCk7
Ci0gICAgICAgIG1Qcm9ncmFtSUQgPSAwOworICAgICAgICAvLyBJbmZvIGxvZyBsZW5ndGggaW5j
bHVkZXMgdGhlIG51bGwgdGVybWluYXRvciwgc28gMSBtZWFucyB0aGF0IHRoZSBpbmZvIGxvZyBp
cyBhbiBlbXB0eQorICAgICAgICAvLyBzdHJpbmcuCisgICAgICAgIGlmIChpbmZvTG9nTGVuZ3Ro
ID4gMSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmKGluZm9M
b2dMZW5ndGgpOworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbUluZm9Mb2cobVBy
b2dyYW1JRCwgaW5mb0xvZ0xlbmd0aCwgbnVsbHB0ciwgJmJ1ZlswXSk7CiAKLSAgICAgICAgaW5m
b0xvZy5hcHBlbmQoJmJ1ZlswXSk7Ci0gICAgICAgIFRSQUNFKCJcbiVzIiwgJmJ1ZlswXSk7Cisg
ICAgICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAg
ICAgICAgbVByb2dyYW1JRCA9IDA7CiAKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgYnVmLmRhdGEo
KTsKKworICAgICAgICAgICAgd2FybmluZyA9IEZvcm1hdFN0cmluZygiUHJvZ3JhbSBsaW5rIGZh
aWxlZCB1bmV4cGVjdGVkbHk6ICVzIiwgYnVmLmRhdGEoKSk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB3YXJuaW5nID0gIlByb2dyYW0gbGluayBmYWls
ZWQgdW5leHBlY3RlZGx5IHdpdGggbm8gaW5mbyBsb2cuIjsKKyAgICAgICAgfQorICAgICAgICBB
TkdMRVBsYXRmb3JtQ3VycmVudCgpLT5sb2dXYXJuaW5nKHdhcm5pbmcuY19zdHIoKSk7CisgICAg
ICAgIFRSQUNFKCJcbiVzIiwgd2FybmluZy5jX3N0cigpKTsKKwogICAgICAgICAvLyBUT0RPLCBy
ZXR1cm4gR0xfT1VUX09GX01FTU9SWSBvciBqdXN0IGZhaWwgdGhlIGxpbms/IFRoaXMgaXMgYW4g
dW5leHBlY3RlZCBjYXNlCiAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpKTsKICAgICB9CiAKKyAgICBpZiAobVdvcmthcm91bmRzLmFsd2F5c0Nh
bGxVc2VQcm9ncmFtQWZ0ZXJMaW5rKQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+Zm9y
Y2VVc2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgIH0KKwogICAgIC8vIFF1ZXJ5IHRoZSB1bmlm
b3JtIGluZm9ybWF0aW9uCi0gICAgLy8gVE9ETzogQSBsb3Qgb2YgdGhpcyBsb2dpYyBzaG91bGQg
YmUgZG9uZSBhdCB0aGUgZ2w6OlByb2dyYW0gbGV2ZWwKLSAgICBHTGludCBhY3RpdmVVbmlmb3Jt
TWF4TGVuZ3RoID0gMDsKLSAgICBtRnVuY3Rpb25zLT5nZXRQcm9ncmFtaXYobVByb2dyYW1JRCwg
R0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJmFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgpOwot
Ci0gICAgc3RkOjp2ZWN0b3I8R0xjaGFyPiB1bmlmb3JtTmFtZUJ1ZmZlcihhY3RpdmVVbmlmb3Jt
TWF4TGVuZ3RoKTsKLQotICAgIEdMaW50IHVuaWZvcm1Db3VudCA9IDA7Ci0gICAgbUZ1bmN0aW9u
cy0+Z2V0UHJvZ3JhbWl2KG1Qcm9ncmFtSUQsIEdMX0FDVElWRV9VTklGT1JNUywgJnVuaWZvcm1D
b3VudCk7Ci0gICAgZm9yIChHTGludCBpID0gMDsgaSA8IHVuaWZvcm1Db3VudDsgaSsrKQorICAg
IEFTU0VSVChtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcC5lbXB0eSgpKTsKKyAgICBjb25zdCBhdXRv
ICZ1bmlmb3JtcyA9IG1EYXRhLmdldFVuaWZvcm1zKCk7CisgICAgZm9yIChjb25zdCBnbDo6VmFy
aWFibGVMb2NhdGlvbiAmZW50cnkgOiBtRGF0YS5nZXRVbmlmb3JtTG9jYXRpb25zKCkpCiAgICAg
ewotICAgICAgICBHTHNpemVpIHVuaWZvcm1OYW1lTGVuZ3RoID0gMDsKLSAgICAgICAgR0xpbnQg
dW5pZm9ybVNpemUgPSAwOwotICAgICAgICBHTGVudW0gdW5pZm9ybVR5cGUgPSBHTF9OT05FOwot
ICAgICAgICBtRnVuY3Rpb25zLT5nZXRBY3RpdmVVbmlmb3JtKG1Qcm9ncmFtSUQsIGksIHVuaWZv
cm1OYW1lQnVmZmVyLnNpemUoKSwgJnVuaWZvcm1OYW1lTGVuZ3RoLCAmdW5pZm9ybVNpemUsICZ1
bmlmb3JtVHlwZSwgJnVuaWZvcm1OYW1lQnVmZmVyWzBdKTsKLQotICAgICAgICBzdGQ6OnN0cmlu
ZyB1bmlmb3JtTmFtZSA9IGdsOjpQYXJzZVVuaWZvcm1OYW1lKHN0ZDo6c3RyaW5nKCZ1bmlmb3Jt
TmFtZUJ1ZmZlclswXSwgdW5pZm9ybU5hbWVMZW5ndGgpLCBudWxscHRyKTsKLQotICAgICAgICBm
b3IgKHNpemVfdCBhcnJheUluZGV4ID0gMDsgYXJyYXlJbmRleCA8IHN0YXRpY19jYXN0PHNpemVf
dD4odW5pZm9ybVNpemUpOyBhcnJheUluZGV4KyspCisgICAgICAgIC8vIEZyb20gdGhlIHNwZWM6
CisgICAgICAgIC8vICJMb2NhdGlvbnMgZm9yIHNlcXVlbnRpYWwgYXJyYXkgaW5kaWNlcyBhcmUg
bm90IHJlcXVpcmVkIHRvIGJlIHNlcXVlbnRpYWwuIgorICAgICAgICBjb25zdCBnbDo6TGlua2Vk
VW5pZm9ybSAmdW5pZm9ybSA9IHVuaWZvcm1zW2VudHJ5LmluZGV4XTsKKyAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gZnVsbE5hbWVTdHI7CisgICAgICAgIGZ1bGxOYW1lU3RyIDw8IHVuaWZvcm0u
bmFtZTsKKyAgICAgICAgaWYgKHVuaWZvcm0uaXNBcnJheSgpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGQ6OnN0cmluZyBsb2NhdGlvbk5hbWUgPSB1bmlmb3JtTmFtZTsKLSAgICAgICAgICAg
IGlmICh1bmlmb3JtU2l6ZSA+IDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbG9j
YXRpb25OYW1lICs9ICJbIiArIFN0cihhcnJheUluZGV4KSArICJdIjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW1JRCwgbG9jYXRpb25OYW1lLmNfc3RyKCkpOwotICAgICAgICAgICAgaWYg
KGxvY2F0aW9uID49IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoZSB1bmlmb3JtIGluZGV4IGFycmF5IGlzIGxhcmdlIGVub3VnaAotICAgICAgICAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA+PSBtVW5pZm9ybUluZGV4LnNp
emUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1Vbmlmb3JtSW5k
ZXgucmVzaXplKGxvY2F0aW9uICsgMSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0gPSBnbDo6VmFyaWFibGVMb2NhdGlvbih1bmlm
b3JtTmFtZSwgYXJyYXlJbmRleCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtVW5pZm9ybXMu
c2l6ZSgpKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBmdWxsTmFtZVN0ciA8PCAiWyIg
PDwgZW50cnkuZWxlbWVudCA8PCAiXSI7CiAgICAgICAgIH0KKyAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJmZ1bGxOYW1lID0gZnVsbE5hbWVTdHIuc3RyKCk7CiAKLSAgICAgICAgLy8gQU5HTEUg
dXNlcyAwIHRvIGlkZW50aWZ5IGFuIG5vbi1hcnJheSB1bmlmb3JtLgotICAgICAgICB1bnNpZ25l
ZCBpbnQgYXJyYXlTaXplID0gKHVuaWZvcm1TaXplID4gMSkgPyBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KHVuaWZvcm1TaXplKSA6IDA7Ci0KLSAgICAgICAgLy8gVE9ETzogZGV0ZXJtaW5lIHVu
aWZvcm0gcHJlY2lzaW9uCi0gICAgICAgIG1Vbmlmb3Jtcy5wdXNoX2JhY2sobmV3IGdsOjpMaW5r
ZWRVbmlmb3JtKHVuaWZvcm1UeXBlLCBHTF9OT05FLCB1bmlmb3JtTmFtZSwgYXJyYXlTaXplLCAt
MSwgc2g6OkJsb2NrTWVtYmVySW5mbzo6Z2V0RGVmYXVsdEJsb2NrSW5mbygpKSk7CisgICAgICAg
IEdMaW50IHJlYWxMb2NhdGlvbiA9IG1GdW5jdGlvbnMtPmdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbUlELCBmdWxsTmFtZS5jX3N0cigpKTsKKyAgICAgICAgbVVuaWZvcm1SZWFsTG9jYXRpb25N
YXAucHVzaF9iYWNrKHJlYWxMb2NhdGlvbik7CiAgICAgfQogCi0gICAgLy8gUXVlcnkgdGhlIGF0
dHJpYnV0ZSBpbmZvcm1hdGlvbgotICAgIEdMaW50IGFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCA9
IDA7Ci0gICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbWl2KG1Qcm9ncmFtSUQsIEdMX0FDVElWRV9B
VFRSSUJVVEVfTUFYX0xFTkdUSCwgJmFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCk7CisgICAgbVVu
aWZvcm1JbmRleFRvU2FtcGxlckluZGV4LnJlc2l6ZShtRGF0YS5nZXRVbmlmb3JtcygpLnNpemUo
KSwgR0xfSU5WQUxJRF9JTkRFWCk7CiAKLSAgICBzdGQ6OnZlY3RvcjxHTGNoYXI+IGF0dHJpYnV0
ZU5hbWVCdWZmZXIoYWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKTsKLQotICAgIEdMaW50IGF0dHJp
YnV0ZUNvdW50ID0gMDsKLSAgICBtRnVuY3Rpb25zLT5nZXRQcm9ncmFtaXYobVByb2dyYW1JRCwg
R0xfQUNUSVZFX0FUVFJJQlVURVMsICZhdHRyaWJ1dGVDb3VudCk7Ci0gICAgZm9yIChHTGludCBp
ID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyBpKyspCisgICAgZm9yIChzaXplX3QgdW5pZm9ybUlk
ID0gMDsgdW5pZm9ybUlkIDwgdW5pZm9ybXMuc2l6ZSgpOyArK3VuaWZvcm1JZCkKICAgICB7Ci0g
ICAgICAgIEdMc2l6ZWkgYXR0cmlidXRlTmFtZUxlbmd0aCA9IDA7Ci0gICAgICAgIEdMaW50IGF0
dHJpYnV0ZVNpemUgPSAwOwotICAgICAgICBHTGVudW0gYXR0cmlidXRlVHlwZSA9IEdMX05PTkU7
Ci0gICAgICAgIG1GdW5jdGlvbnMtPmdldEFjdGl2ZUF0dHJpYihtUHJvZ3JhbUlELCBpLCBhdHRy
aWJ1dGVOYW1lQnVmZmVyLnNpemUoKSwgJmF0dHJpYnV0ZU5hbWVMZW5ndGgsICZhdHRyaWJ1dGVT
aXplLCAmYXR0cmlidXRlVHlwZSwgJmF0dHJpYnV0ZU5hbWVCdWZmZXJbMF0pOworICAgICAgICBj
b25zdCBnbDo6TGlua2VkVW5pZm9ybSAmbGlua2VkVW5pZm9ybSA9IHVuaWZvcm1zW3VuaWZvcm1J
ZF07CiAKLSAgICAgICAgc3RkOjpzdHJpbmcgYXR0cmlidXRlTmFtZSgmYXR0cmlidXRlTmFtZUJ1
ZmZlclswXSwgYXR0cmlidXRlTmFtZUxlbmd0aCk7CisgICAgICAgIGlmICghbGlua2VkVW5pZm9y
bS5pc1NhbXBsZXIoKSB8fCAhbGlua2VkVW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICAvLyBUT0RPOiBkZXRlcm1pbmUgYXR0cmlidXRlIHByZWNpc2lv
bgotICAgICAgICBzZXRTaGFkZXJBdHRyaWJ1dGUoc3RhdGljX2Nhc3Q8c2l6ZV90PihpKSwgYXR0
cmlidXRlVHlwZSwgR0xfTk9ORSwgYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlU2l6ZSwgaSk7Cisg
ICAgICAgIG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRleFt1bmlmb3JtSWRdID0gbVNhbXBsZXJC
aW5kaW5ncy5zaXplKCk7CisKKyAgICAgICAgLy8gSWYgdW5pZm9ybSBpcyBhIHNhbXBsZXIgdHlw
ZSwgaW5zZXJ0IGl0IGludG8gdGhlIG1TYW1wbGVyQmluZGluZ3MgYXJyYXkKKyAgICAgICAgU2Ft
cGxlckJpbmRpbmdHTCBzYW1wbGVyQmluZGluZzsKKyAgICAgICAgc2FtcGxlckJpbmRpbmcudGV4
dHVyZVR5cGUgPSBnbDo6U2FtcGxlclR5cGVUb1RleHR1cmVUeXBlKGxpbmtlZFVuaWZvcm0udHlw
ZSk7CisgICAgICAgIHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzLnJlc2l6ZShsaW5r
ZWRVbmlmb3JtLmVsZW1lbnRDb3VudCgpLCAwKTsKKyAgICAgICAgbVNhbXBsZXJCaW5kaW5ncy5w
dXNoX2JhY2soc2FtcGxlckJpbmRpbmcpOwogICAgIH0KIAogICAgIHJldHVybiBMaW5rUmVzdWx0
KHRydWUsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOwogfQogCitHTGJvb2xlYW4gUHJvZ3JhbUdM
Ojp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmIC8qY2FwcyovLCBnbDo6SW5mb0xvZyAqIC8qaW5m
b0xvZyovKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IGltcGxlbWVudCB2YWxpZGF0ZQorICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTFmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKICAgICBtU3RhdGVN
YW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0x
ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWZ2KHVuaUxv
Yyhsb2NhdGlvbiksIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm0y
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7CiAg
ICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25z
LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgbUZ1bmN0aW9ucy0+dW5pZm9y
bTJmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpz
ZXRVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KQogewogICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAg
bUZ1bmN0aW9ucy0+dW5pZm9ybTNmdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIG1GdW5jdGlv
bnMtPnVuaWZvcm0zZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOwogfQogCiB2b2lkIFBy
b2dyYW1HTDo6c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdikKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFt
SUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAg
ICBtRnVuY3Rpb25zLT51bmlmb3JtNGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKIH0K
IAogdm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm0xaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2KQogewogICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0o
bVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpdihsb2NhdGlvbiwgY291bnQs
IHYpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQs
IHYpOworCisgICAgY29uc3QgZ2w6OlZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uRW50cnkgPSBt
RGF0YS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25dOworCisgICAgc2l6ZV90IHNhbXBs
ZXJJbmRleCA9IG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRleFtsb2NhdGlvbkVudHJ5LmluZGV4
XTsKKyAgICBpZiAoc2FtcGxlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVgpCisgICAgeworICAg
ICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICZib3VuZFRleHR1cmVVbml0cyA9IG1TYW1wbGVyQmlu
ZGluZ3Nbc2FtcGxlckluZGV4XS5ib3VuZFRleHR1cmVVbml0czsKKworICAgICAgICBzaXplX3Qg
Y29weUNvdW50ID0KKyAgICAgICAgICAgIHN0ZDo6bWF4PHNpemVfdD4oY291bnQsIGJvdW5kVGV4
dHVyZVVuaXRzLnNpemUoKSAtIGxvY2F0aW9uRW50cnkuZWxlbWVudCk7CisgICAgICAgIHN0ZDo6
Y29weSh2LCB2ICsgY29weUNvdW50LCBib3VuZFRleHR1cmVVbml0cy5iZWdpbigpICsgbG9jYXRp
b25FbnRyeS5lbGVtZW50KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3Jt
Mml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKICAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMt
PnVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3Jt
Mml2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNl
dFVuaWZvcm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2
KQogewogICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1
bmN0aW9ucy0+dW5pZm9ybTNpdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIG1GdW5jdGlvbnMt
PnVuaWZvcm0zaXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOwogfQogCiB2b2lkIFByb2dy
YW1HTDo6c2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsK
LSAgICBtRnVuY3Rpb25zLT51bmlmb3JtNGl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgbUZ1
bmN0aW9ucy0+dW5pZm9ybTRpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CiB9CiAKIHZv
aWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtMXVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50ICp2KQpAQCAtMjQ3LDE3MyArMjcxLDE1OCBAQAogdm9pZCBQcm9ncmFt
R0w6OnNldFVuaWZvcm0ydWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
THVpbnQgKnYpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsK
LSAgICBtRnVuY3Rpb25zLT51bmlmb3JtMnVpdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIG1G
dW5jdGlvbnMtPnVuaWZvcm0ydWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKIH0KIAog
dm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbSht
UHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3JtM3Vpdihsb2NhdGlvbiwgY291bnQs
IHYpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0zdWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50
LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm00dWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+
dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3JtNHVpdihsb2Nh
dGlvbiwgY291bnQsIHYpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm00dWl2KHVuaUxvYyhsb2Nh
dGlvbiksIGNvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm1NYXRyaXgy
ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVBy
b2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgyZnYo
dW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQogCiB2b2lkIFBy
b2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgbVN0
YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51bmlm
b3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgbUZ1
bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDNmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNw
b3NlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFt
SUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtTWF0cml4NGZ2KHVuaUxv
Yyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAogdm9pZCBQcm9ncmFt
R0w6OnNldFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgbVN0YXRl
TWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3Jt
TWF0cml4MngzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBtRnVu
Y3Rpb25zLT51bmlmb3JtTWF0cml4MngzZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOwogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHTGZsb2F0ICp2YWx1ZSkKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9n
cmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgzeDJm
dih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKIHZvaWQg
UHJvZ3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAg
IG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+
dW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDJ4NGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm1NYXRy
aXg0eDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9z
ZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3Jh
bShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3JtTWF0cml4NHgyZnYobG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtTWF0
cml4NHgyZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQog
CiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
IHsKICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5j
dGlvbnMtPnVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgzeDRmdih1bmlMb2MobG9jYXRpb24p
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlm
b3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewogICAgIG1TdGF0ZU1hbmFnZXItPnVz
ZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDR4M2Z2
KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgbUZ1bmN0aW9ucy0+dW5p
Zm9ybU1hdHJpeDR4M2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKIH0KIAotdm9pZCBQcm9ncmFtR0w6OmdldFVuaWZvcm1mdihHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCAqcGFyYW1zKQordm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm1CbG9ja0JpbmRpbmcoR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHVpbnQgdW5pZm9ybUJsb2NrQmluZGluZykKIHsKLSAg
ICBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtZnYobVByb2dyYW1JRCwgbG9jYXRpb24sIHBhcmFtcyk7
Ci19CisgICAgLy8gTGF6eSBpbml0CisgICAgaWYgKG1Vbmlmb3JtQmxvY2tSZWFsTG9jYXRpb25N
YXAuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIG1Vbmlmb3JtQmxvY2tSZWFsTG9jYXRpb25NYXAu
cmVzZXJ2ZShtRGF0YS5nZXRVbmlmb3JtQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChj
b25zdCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtRGF0YS5nZXRVbmlmb3JtQmxv
Y2tzKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lV2l0
aEluZGV4ID0gdW5pZm9ybUJsb2NrLm5hbWVXaXRoQXJyYXlJbmRleCgpOworICAgICAgICAgICAg
R0x1aW50IGJsb2NrSW5kZXggPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtQmxvY2tJbmRleChtUHJv
Z3JhbUlELCBuYW1lV2l0aEluZGV4LmNfc3RyKCkpOworICAgICAgICAgICAgbVVuaWZvcm1CbG9j
a1JlYWxMb2NhdGlvbk1hcC5wdXNoX2JhY2soYmxvY2tJbmRleCk7CisgICAgICAgIH0KKyAgICB9
CiAKLXZvaWQgUHJvZ3JhbUdMOjpnZXRVbmlmb3JtaXYoR0xpbnQgbG9jYXRpb24sIEdMaW50ICpw
YXJhbXMpCi17Ci0gICAgbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybWl2KG1Qcm9ncmFtSUQsIGxvY2F0
aW9uLCBwYXJhbXMpOworICAgIEdMdWludCByZWFsQmxvY2tJbmRleCA9IG1Vbmlmb3JtQmxvY2tS
ZWFsTG9jYXRpb25NYXBbdW5pZm9ybUJsb2NrSW5kZXhdOworICAgIGlmIChyZWFsQmxvY2tJbmRl
eCAhPSBHTF9JTlZBTElEX0lOREVYKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9y
bUJsb2NrQmluZGluZyhtUHJvZ3JhbUlELCByZWFsQmxvY2tJbmRleCwgdW5pZm9ybUJsb2NrQmlu
ZGluZyk7CisgICAgfQogfQogCi12b2lkIFByb2dyYW1HTDo6Z2V0VW5pZm9ybXVpdihHTGludCBs
b2NhdGlvbiwgR0x1aW50ICpwYXJhbXMpCit2b2lkIFByb2dyYW1HTDo6cmVzZXQoKQogewotICAg
IG1GdW5jdGlvbnMtPmdldFVuaWZvcm11aXYobVByb2dyYW1JRCwgbG9jYXRpb24sIHBhcmFtcyk7
CisgICAgbVVuaWZvcm1SZWFsTG9jYXRpb25NYXAuY2xlYXIoKTsKKyAgICBtVW5pZm9ybUJsb2Nr
UmVhbExvY2F0aW9uTWFwLmNsZWFyKCk7CisgICAgbVNhbXBsZXJCaW5kaW5ncy5jbGVhcigpOwor
ICAgIG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRleC5jbGVhcigpOwogfQogCi1HTGludCBQcm9n
cmFtR0w6OmdldFNhbXBsZXJNYXBwaW5nKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBp
bnQgc2FtcGxlckluZGV4LCBjb25zdCBnbDo6Q2FwcyAmY2FwcykgY29uc3QKK0dMdWludCBQcm9n
cmFtR0w6OmdldFByb2dyYW1JRCgpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBHTGludCgpOworICAgIHJldHVybiBtUHJvZ3JhbUlEOwogfQogCi1HTGVudW0gUHJv
Z3JhbUdMOjpnZXRTYW1wbGVyVGV4dHVyZVR5cGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIHVuc2ln
bmVkIGludCBzYW1wbGVySW5kZXgpIGNvbnN0Citjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVyQmlu
ZGluZ0dMPiAmUHJvZ3JhbUdMOjpnZXRBcHBsaWVkU2FtcGxlclVuaWZvcm1zKCkgY29uc3QKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIEdMZW51bSgpOworICAgIHJldHVybiBt
U2FtcGxlckJpbmRpbmdzOwogfQogCi1HTGludCBQcm9ncmFtR0w6OmdldFVzZWRTYW1wbGVyUmFu
Z2UoZ2w6OlNhbXBsZXJUeXBlIHR5cGUpIGNvbnN0Citib29sIFByb2dyYW1HTDo6Z2V0VW5pZm9y
bUJsb2NrU2l6ZShjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lLCBzaXplX3QgKnNpemVPdXQp
IGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBHTGludCgpOwotfQor
ICAgIEFTU0VSVChtUHJvZ3JhbUlEICE9IDB1KTsKIAotdm9pZCBQcm9ncmFtR0w6OnVwZGF0ZVNh
bXBsZXJNYXBwaW5nKCkKLXsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci19CisgICAgR0x1aW50IGJs
b2NrSW5kZXggPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtQmxvY2tJbmRleChtUHJvZ3JhbUlELCBi
bG9ja05hbWUuY19zdHIoKSk7CisgICAgaWYgKGJsb2NrSW5kZXggPT0gR0xfSU5WQUxJRF9JTkRF
WCkKKyAgICB7CisgICAgICAgICpzaXplT3V0ID0gMDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KIAotYm9vbCBQcm9ncmFtR0w6OnZhbGlkYXRlU2FtcGxlcnMoZ2w6OkluZm9Mb2cgKmlu
Zm9Mb2csIGNvbnN0IGdsOjpDYXBzICZjYXBzKQotewotICAgIC8vVU5JTVBMRU1FTlRFRCgpOwor
ICAgIEdMaW50IGRhdGFTaXplID0gMDsKKyAgICBtRnVuY3Rpb25zLT5nZXRBY3RpdmVVbmlmb3Jt
QmxvY2tpdihtUHJvZ3JhbUlELCBibG9ja0luZGV4LCBHTF9VTklGT1JNX0JMT0NLX0RBVEFfU0la
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YVNpemUpOwor
ICAgICpzaXplT3V0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhU2l6ZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLUxpbmtSZXN1bHQgUHJvZ3JhbUdMOjpjb21waWxlUHJvZ3JhbUV4ZWN1dGFi
bGVzKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciwgZ2w6
OlNoYWRlciAqdmVydGV4U2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHJlZ2lzdGVycykKK2Jvb2wgUHJvZ3JhbUdMOjpnZXRVbmlmb3Jt
QmxvY2tNZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpCbG9ja01lbWJlcklu
Zm8gKm1lbWJlckluZm9PdXQpIGNvbnN0CiB7Ci0gICAgLy9VTklNUExFTUVOVEVEKCk7Ci0gICAg
cmV0dXJuIExpbmtSZXN1bHQodHJ1ZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7Ci19CisgICAg
R0x1aW50IHVuaWZvcm1JbmRleDsKKyAgICBjb25zdCBHTGNoYXIgKm1lbWJlck5hbWVHTFN0ciA9
IG1lbWJlclVuaWZvcm1OYW1lLmNfc3RyKCk7CisgICAgbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUlu
ZGljZXMobVByb2dyYW1JRCwgMSwgJm1lbWJlck5hbWVHTFN0ciwgJnVuaWZvcm1JbmRleCk7CiAK
LWJvb2wgUHJvZ3JhbUdMOjpsaW5rVW5pZm9ybXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0
IGdsOjpTaGFkZXIgJnZlcnRleFNoYWRlciwgY29uc3QgZ2w6OlNoYWRlciAmZnJhZ21lbnRTaGFk
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzKQot
ewotICAgIC8vVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFBy
b2dyYW1HTDo6ZGVmaW5lVW5pZm9ybUJsb2NrKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBn
bDo6U2hhZGVyICZzaGFkZXIsIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxv
Y2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZj
YXBzKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gYm9vbCgpOwotfQotCi1n
bDo6RXJyb3IgUHJvZ3JhbUdMOjphcHBseVVuaWZvcm1zKCkKLXsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLWds
OjpFcnJvciBQcm9ncmFtR0w6OmFwcGx5VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nc1tdKQotewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotYm9v
bCBQcm9ncmFtR0w6OmFzc2lnblVuaWZvcm1CbG9ja1JlZ2lzdGVyKGdsOjpJbmZvTG9nICZpbmZv
TG9nLCBnbDo6VW5pZm9ybUJsb2NrICp1bmlmb3JtQmxvY2ssIEdMZW51bSBzaGFkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lz
dGVySW5kZXgsIGNvbnN0IGdsOjpDYXBzICZjYXBzKQotewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gYm9vbCgpOwotfQotCi12b2lkIFByb2dyYW1HTDo6cmVzZXQoKQotewotICAg
IFByb2dyYW1JbXBsOjpyZXNldCgpOwotCi0gICAgaWYgKG1Qcm9ncmFtSUQpCisgICAgaWYgKHVu
aWZvcm1JbmRleCA9PSBHTF9JTlZBTElEX0lOREVYKQogICAgIHsKLSAgICAgICAgbUZ1bmN0aW9u
cy0+ZGVsZXRlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICAgICAgbVByb2dyYW1JRCA9IDA7Cisg
ICAgICAgICptZW1iZXJJbmZvT3V0ID0gc2g6OkJsb2NrTWVtYmVySW5mbzo6Z2V0RGVmYXVsdEJs
b2NrSW5mbygpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotfQogCi1HTHVpbnQgUHJv
Z3JhbUdMOjpnZXRQcm9ncmFtSUQoKSBjb25zdAotewotICAgIHJldHVybiBtUHJvZ3JhbUlEOwor
ICAgIG1GdW5jdGlvbnMtPmdldEFjdGl2ZVVuaWZvcm1zaXYobVByb2dyYW1JRCwgMSwgJnVuaWZv
cm1JbmRleCwgR0xfVU5JRk9STV9PRkZTRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmbWVtYmVySW5mb091dC0+b2Zmc2V0KTsKKyAgICBtRnVuY3Rpb25zLT5nZXRBY3Rp
dmVVbmlmb3Jtc2l2KG1Qcm9ncmFtSUQsIDEsICZ1bmlmb3JtSW5kZXgsIEdMX1VOSUZPUk1fQVJS
QVlfU1RSSURFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbWJlcklu
Zm9PdXQtPmFycmF5U3RyaWRlKTsKKyAgICBtRnVuY3Rpb25zLT5nZXRBY3RpdmVVbmlmb3Jtc2l2
KG1Qcm9ncmFtSUQsIDEsICZ1bmlmb3JtSW5kZXgsIEdMX1VOSUZPUk1fTUFUUklYX1NUUklERSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1iZXJJbmZvT3V0LT5tYXRy
aXhTdHJpZGUpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogcG9zc2libHkgZGV0ZXJtaW5lIHRo
aXMgYXQgdGhlIGdsOjpQcm9ncmFtIGxldmVsLgorICAgIEdMaW50IGlzUm93TWFqb3JNYXRyaXgg
PSAwOworICAgIG1GdW5jdGlvbnMtPmdldEFjdGl2ZVVuaWZvcm1zaXYobVByb2dyYW1JRCwgMSwg
JnVuaWZvcm1JbmRleCwgR0xfVU5JRk9STV9JU19ST1dfTUFKT1IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmaXNSb3dNYWpvck1hdHJpeCk7CisgICAgbWVtYmVySW5mb091
dC0+aXNSb3dNYWpvck1hdHJpeCA9IGlzUm93TWFqb3JNYXRyaXggIT0gR0xfRkFMU0U7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9Qcm9ncmFtR0wuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05LDYgKzksNyBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9QUk9HUkFNR0xfSF8K
ICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfUFJPR1JBTUdMX0hfCiAKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKIAogbmFtZXNwYWNlIHJ4CkBAIC0xNywyNiArMTgsMjcg
QEAKIGNsYXNzIEZ1bmN0aW9uc0dMOwogY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CiAKK3N0cnVjdCBT
YW1wbGVyQmluZGluZ0dMCit7CisgICAgR0xlbnVtIHRleHR1cmVUeXBlOworICAgIHN0ZDo6dmVj
dG9yPEdMdWludD4gYm91bmRUZXh0dXJlVW5pdHM7Cit9OworCiBjbGFzcyBQcm9ncmFtR0wgOiBw
dWJsaWMgUHJvZ3JhbUltcGwKIHsKICAgcHVibGljOgotICAgIFByb2dyYW1HTChjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKTsKKyAgICBQ
cm9ncmFtR0woY29uc3QgZ2w6OlByb2dyYW06OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgIGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91
bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVN
YW5hZ2VyKTsKICAgICB+UHJvZ3JhbUdMKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIHVzZXNQb2lu
dFNpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIEdMZW51bSBnZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBj
b25zdCBvdmVycmlkZTsKLQotICAgIEdMZW51bSBnZXRCaW5hcnlGb3JtYXQoKSBvdmVycmlkZTsK
ICAgICBMaW5rUmVzdWx0IGxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1
dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Igc2F2ZShnbDo6QmluYXJ5
T3V0cHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QmluYXJ5UmV0cmll
dmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpIG92ZXJyaWRlOwogCi0gICAgTGlua1Jlc3VsdCBs
aW5rKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAg
ICAgICAgICAgICAgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIsIGdsOjpTaGFkZXIgKnZlcnRl
eFNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLAotICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlLAotICAgICAgICAgICAgICAgICAgICBpbnQg
KnJlZ2lzdGVycywgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFZhcnlpbmc+ICpsaW5rZWRWYXJ5aW5n
cywKLSAgICAgICAgICAgICAgICAgICAgc3RkOjptYXA8aW50LCBnbDo6VmFyaWFibGVMb2NhdGlv
bj4gKm91dHB1dFZhcmlhYmxlcykgb3ZlcnJpZGU7CisgICAgTGlua1Jlc3VsdCBsaW5rKGNvbnN0
IGdsOjpEYXRhICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CisgICAgR0xi
b29sZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xv
Zykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VW5p
Zm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikg
b3ZlcnJpZGU7CkBAIC02MCwzNyArNjIsMzQgQEAKICAgICB2b2lkIHNldFVuaWZvcm1NYXRyaXgz
eDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0xmbG9hdCAqdmFsdWUpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VW5pZm9ybU1hdHJp
eDR4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3Nl
LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGdldFVuaWZvcm1m
dihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICB2b2lkIGdl
dFVuaWZvcm1pdihHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBnZXRVbmlmb3JtdWl2KEdMaW50IGxvY2F0aW9uLCBHTHVpbnQgKnBhcmFtcykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRVbmlmb3JtQmxvY2tCaW5kaW5nKEdMdWludCB1bmlmb3JtQmxvY2tJ
bmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIG92ZXJyaWRlOwogCi0gICAgR0xpbnQg
Z2V0U2FtcGxlck1hcHBpbmcoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIHVuc2lnbmVkIGludCBzYW1w
bGVySW5kZXgsIGNvbnN0IGdsOjpDYXBzICZjYXBzKSBjb25zdCBvdmVycmlkZTsKLSAgICBHTGVu
dW0gZ2V0U2FtcGxlclRleHR1cmVUeXBlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCB1bnNpZ25lZCBp
bnQgc2FtcGxlckluZGV4KSBjb25zdCBvdmVycmlkZTsKLSAgICBHTGludCBnZXRVc2VkU2FtcGxl
clJhbmdlKGdsOjpTYW1wbGVyVHlwZSB0eXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHVw
ZGF0ZVNhbXBsZXJNYXBwaW5nKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2YWxpZGF0ZVNhbXBsZXJz
KGdsOjpJbmZvTG9nICppbmZvTG9nLCBjb25zdCBnbDo6Q2FwcyAmY2Fwcykgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUs
IHNpemVfdCAqc2l6ZU91dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRVbmlmb3JtQmxv
Y2tNZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAqbWVtYmVy
SW5mb091dCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBMaW5rUmVzdWx0IGNvbXBpbGVQcm9ncmFt
RXhlY3V0YWJsZXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpTaGFkZXIgKmZyYWdtZW50U2hh
ZGVyLCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCByZWdpc3RlcnMpIG92ZXJyaWRlOworICAgIEdMdWludCBnZXRQ
cm9ncmFtSUQoKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVyQmluZGluZ0dM
PiAmZ2V0QXBwbGllZFNhbXBsZXJVbmlmb3JtcygpIGNvbnN0OwogCi0gICAgYm9vbCBsaW5rVW5p
Zm9ybXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGdsOjpTaGFkZXIgJnZlcnRleFNoYWRl
ciwgY29uc3QgZ2w6OlNoYWRlciAmZnJhZ21lbnRTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMpIG92ZXJyaWRlOwotICAgIGJvb2wgZGVmaW5lVW5pZm9y
bUJsb2NrKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBnbDo6U2hhZGVyICZzaGFkZXIsIGNv
bnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMpIG92ZXJyaWRlOworICBwcml2YXRlOgor
ICAgIHZvaWQgcmVzZXQoKTsKIAotICAgIGdsOjpFcnJvciBhcHBseVVuaWZvcm1zKCkgb3ZlcnJp
ZGU7Ci0gICAgZ2w6OkVycm9yIGFwcGx5VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkRhdGEgJmRh
dGEsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nc1tdKSBvdmVycmlkZTsKLSAgICBib29sIGFz
c2lnblVuaWZvcm1CbG9ja1JlZ2lzdGVyKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6VW5pZm9y
bUJsb2NrICp1bmlmb3JtQmxvY2ssIEdMZW51bSBzaGFkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJbmRleCwgY29uc3QgZ2w6OkNh
cHMgJmNhcHMpIG92ZXJyaWRlOworICAgIC8vIEhlbHBlciBmdW5jdGlvbiwgbWFrZXMgaXQgc2lt
cGxlciB0byB0eXBlLgorICAgIEdMaW50IHVuaUxvYyhHTGludCBnbExvY2F0aW9uKSBjb25zdCB7
IHJldHVybiBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcFtnbExvY2F0aW9uXTsgfQogCi0gICAgdm9p
ZCByZXNldCgpIG92ZXJyaWRlOwotCi0gICAgR0x1aW50IGdldFByb2dyYW1JRCgpIGNvbnN0Owot
Ci0gIHByaXZhdGU6CiAgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7CisgICAgY29u
c3QgV29ya2Fyb3VuZHNHTCAmbVdvcmthcm91bmRzOwogICAgIFN0YXRlTWFuYWdlckdMICptU3Rh
dGVNYW5hZ2VyOwogCisgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IG1Vbmlmb3JtUmVhbExvY2F0aW9u
TWFwOworICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVVuaWZvcm1CbG9ja1JlYWxMb2NhdGlvbk1h
cDsKKworICAgIC8vIEFuIGFycmF5IG9mIHRoZSBzYW1wbGVycyB0aGF0IGFyZSB1c2VkIGJ5IHRo
ZSBwcm9ncmFtCisgICAgc3RkOjp2ZWN0b3I8U2FtcGxlckJpbmRpbmdHTD4gbVNhbXBsZXJCaW5k
aW5nczsKKworICAgIC8vIEEgbWFwIGZyb20gYSBtRGF0YS5nZXRVbmlmb3JtcygpIGluZGV4IHRv
IGEgbVNhbXBsZXJCaW5kaW5ncyBpbmRleC4KKyAgICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG1Vbmlm
b3JtSW5kZXhUb1NhbXBsZXJJbmRleDsKKwogICAgIEdMdWludCBtUHJvZ3JhbUlEOwogfTsKIApJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1F1
ZXJ5R0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05LDM5ICs5LDIxNCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL1F1ZXJ5R0wuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKIAorbmFtZXNwYWNlCit7CisKK0dMdWludDY0
IE1lcmdlUXVlcnlSZXN1bHRzKEdMZW51bSB0eXBlLCBHTHVpbnQ2NCBjdXJyZW50UmVzdWx0LCBH
THVpbnQ2NCBuZXdSZXN1bHQpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9BTllfU0FNUExFU19QQVNTRUQ6CisgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNf
UEFTU0VEX0NPTlNFUlZBVElWRToKKyAgICAgICAgICAgIHJldHVybiAoY3VycmVudFJlc3VsdCA9
PSBHTF9UUlVFIHx8IG5ld1Jlc3VsdCA9PSBHTF9UUlVFKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsK
KworICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU46
CisgICAgICAgICAgICByZXR1cm4gY3VycmVudFJlc3VsdCArIG5ld1Jlc3VsdDsKKworICAgICAg
ICBjYXNlIEdMX1RJTUVfRUxBUFNFRDoKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50UmVzdWx0
ICsgbmV3UmVzdWx0OworCisgICAgICAgIGNhc2UgR0xfVElNRVNUQU1QOgorICAgICAgICAgICAg
cmV0dXJuIG5ld1Jlc3VsdDsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQorCiBuYW1lc3BhY2UgcngKIHsKIAotUXVlcnlHTDo6UXVlcnlHTChHTGVu
dW0gdHlwZSkKLSAgICA6IFF1ZXJ5SW1wbCh0eXBlKQote30KK1F1ZXJ5R0w6OlF1ZXJ5R0woR0xl
bnVtIHR5cGUsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpz
dGF0ZU1hbmFnZXIpCisgICAgOiBRdWVyeUltcGwodHlwZSksCisgICAgICBtVHlwZSh0eXBlKSwK
KyAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKKyAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVN
YW5hZ2VyKSwKKyAgICAgIG1BY3RpdmVRdWVyeSgwKSwKKyAgICAgIG1QZW5kaW5nUXVlcmllcygp
LAorICAgICAgbVJlc3VsdFN1bSgwKQoreworfQogCiBRdWVyeUdMOjp+UXVlcnlHTCgpCi17fQor
eworICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZVF1ZXJ5KG1BY3RpdmVRdWVyeSk7CisgICAgbVN0
YXRlTWFuYWdlci0+b25EZWxldGVRdWVyeU9iamVjdCh0aGlzKTsKKyAgICB3aGlsZSAoIW1QZW5k
aW5nUXVlcmllcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRl
UXVlcnkobVBlbmRpbmdRdWVyaWVzLmZyb250KCkpOworICAgICAgICBtUGVuZGluZ1F1ZXJpZXMu
cG9wX2Zyb250KCk7CisgICAgfQorfQogCiBnbDo6RXJyb3IgUXVlcnlHTDo6YmVnaW4oKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICBtUmVzdWx0U3VtID0gMDsKKyAgICBtU3RhdGVNYW5hZ2VyLT5vbkJlZ2lu
UXVlcnkodGhpcyk7CisgICAgcmV0dXJuIHJlc3VtZSgpOwogfQogCiBnbDo6RXJyb3IgUXVlcnlH
TDo6ZW5kKCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIHBhdXNlKCk7CiB9CiAKK2dsOjpFcnJv
ciBRdWVyeUdMOjpxdWVyeUNvdW50ZXIoKQoreworICAgIEFTU0VSVChtVHlwZSA9PSBHTF9USU1F
U1RBTVApOworCisgICAgLy8gRGlyZWN0bHkgY3JlYXRlIGEgcXVlcnkgZm9yIHRoZSB0aW1lc3Rh
bXAgYW5kIGFkZCBpdCB0byB0aGUgcGVuZGluZyBxdWVyeSBxdWV1ZSwgYXMgdGltZXN0YW1wCisg
ICAgLy8gcXVlcmllcyBkbyBub3QgaGF2ZSB0aGUgdHJhZGl0aW9uYWwgYmVnaW4vZW5kIGJsb2Nr
IGFuZCBuZXZlciBuZWVkIHRvIGJlIHBhdXNlZC9yZXN1bWVkCisgICAgR0x1aW50IHF1ZXJ5Owor
ICAgIG1GdW5jdGlvbnMtPmdlblF1ZXJpZXMoMSwgJnF1ZXJ5KTsKKyAgICBtRnVuY3Rpb25zLT5x
dWVyeUNvdW50ZXIocXVlcnksIEdMX1RJTUVTVEFNUCk7CisgICAgbVBlbmRpbmdRdWVyaWVzLnB1
c2hfYmFjayhxdWVyeSk7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitnbDo6RXJyb3IgUXVlcnlHTDo6Z2V0UmVzdWx0QmFz
ZShUICpwYXJhbXMpCit7CisgICAgQVNTRVJUKG1BY3RpdmVRdWVyeSA9PSAwKTsKKworICAgIGds
OjpFcnJvciBlcnJvciA9IGZsdXNoKHRydWUpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgQVNTRVJUKG1QZW5kaW5n
UXVlcmllcy5lbXB0eSgpKTsKKyAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8VD4obVJlc3VsdFN1
bSk7CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9y
IFF1ZXJ5R0w6OmdldFJlc3VsdChHTGludCAqcGFyYW1zKQoreworICAgIHJldHVybiBnZXRSZXN1
bHRCYXNlKHBhcmFtcyk7Cit9CisKIGdsOjpFcnJvciBRdWVyeUdMOjpnZXRSZXN1bHQoR0x1aW50
ICpwYXJhbXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnZXRSZXN1bHRCYXNlKHBhcmFtcyk7
CiB9CiAKLWdsOjpFcnJvciBRdWVyeUdMOjppc1Jlc3VsdEF2YWlsYWJsZShHTHVpbnQgKmF2YWls
YWJsZSkKK2dsOjpFcnJvciBRdWVyeUdMOjpnZXRSZXN1bHQoR0xpbnQ2NCAqcGFyYW1zKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShwYXJhbXMpOwogfQogCitnbDo6RXJy
b3IgUXVlcnlHTDo6Z2V0UmVzdWx0KEdMdWludDY0ICpwYXJhbXMpCit7CisgICAgcmV0dXJuIGdl
dFJlc3VsdEJhc2UocGFyYW1zKTsKIH0KKworZ2w6OkVycm9yIFF1ZXJ5R0w6OmlzUmVzdWx0QXZh
aWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkKK3sKKyAgICBBU1NFUlQobUFjdGl2ZVF1ZXJ5ID09IDAp
OworCisgICAgZ2w6OkVycm9yIGVycm9yID0gZmx1c2goZmFsc2UpOworICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgKmF2
YWlsYWJsZSA9IG1QZW5kaW5nUXVlcmllcy5lbXB0eSgpOworICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworfQorCitnbDo6RXJyb3IgUXVlcnlHTDo6cGF1c2UoKQoreworICAgIGlm
IChtQWN0aXZlUXVlcnkgIT0gMCkKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmVuZFF1
ZXJ5KG1UeXBlLCBtQWN0aXZlUXVlcnkpOworCisgICAgICAgIG1QZW5kaW5nUXVlcmllcy5wdXNo
X2JhY2sobUFjdGl2ZVF1ZXJ5KTsKKyAgICAgICAgbUFjdGl2ZVF1ZXJ5ID0gMDsKKyAgICB9CisK
KyAgICAvLyBGbHVzaCB0byBtYWtlIHN1cmUgdGhlIHBlbmRpbmcgcXVlcmllcyBkb24ndCBhZGQg
dXAgdG9vIG11Y2guCisgICAgZ2w6OkVycm9yIGVycm9yID0gZmx1c2goZmFsc2UpOworICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQor
CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cit9CisKK2dsOjpFcnJvciBRdWVy
eUdMOjpyZXN1bWUoKQoreworICAgIGlmIChtQWN0aXZlUXVlcnkgPT0gMCkKKyAgICB7CisgICAg
ICAgIC8vIEZsdXNoIHRvIG1ha2Ugc3VyZSB0aGUgcGVuZGluZyBxdWVyaWVzIGRvbid0IGFkZCB1
cCB0b28gbXVjaC4KKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZmx1c2goZmFsc2UpOworICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtRnVuY3Rpb25zLT5nZW5RdWVyaWVzKDEsICZt
QWN0aXZlUXVlcnkpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iZWdpblF1ZXJ5KG1UeXBlLCBt
QWN0aXZlUXVlcnkpOworICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworfQorCitnbDo6RXJyb3IgUXVlcnlHTDo6Zmx1c2goYm9vbCBmb3JjZSkKK3sKKyAgICB3aGls
ZSAoIW1QZW5kaW5nUXVlcmllcy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgR0x1aW50IGlkID0g
bVBlbmRpbmdRdWVyaWVzLmZyb250KCk7CisgICAgICAgIGlmICghZm9yY2UpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEdMdWludCByZXN1bHRBdmFpbGFibGUgPSAwOworICAgICAgICAgICAgbUZ1
bmN0aW9ucy0+Z2V0UXVlcnlPYmplY3R1aXYoaWQsIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEUs
ICZyZXN1bHRBdmFpbGFibGUpOworICAgICAgICAgICAgaWYgKHJlc3VsdEF2YWlsYWJsZSA9PSBH
TF9GQUxTRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEV2
ZW4gdGhvdWdoIGdldFF1ZXJ5T2JqZWN0dWk2NHYgd2FzIGludHJvZHVjZWQgZm9yIHRpbWVyIHF1
ZXJpZXMsIHRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlCisgICAgICAgIC8vIHN0YW5kYXJkIHRoYXQg
c2F5cyB0aGF0IGl0IGRvZXNuJ3Qgd29yayBmb3IgYW55IG90aGVyIHF1ZXJpZXMuIEl0IGFsc28g
cGFzc2VzIG9uIGFsbCB0aGUKKyAgICAgICAgLy8gdHJ5Ym90cywgc28gd2UgdXNlIGl0IGlmIGl0
IGlzIGF2YWlsYWJsZQorICAgICAgICBpZiAobUZ1bmN0aW9ucy0+Z2V0UXVlcnlPYmplY3R1aTY0
diAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBHTHVpbnQ2NCByZXN1bHQgPSAw
OworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0UXVlcnlPYmplY3R1aTY0dihpZCwgR0xfUVVF
UllfUkVTVUxULCAmcmVzdWx0KTsKKyAgICAgICAgICAgIG1SZXN1bHRTdW0gPSBNZXJnZVF1ZXJ5
UmVzdWx0cyhtVHlwZSwgbVJlc3VsdFN1bSwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMdWludCByZXN1bHQgPSAwOworICAgICAgICAg
ICAgbUZ1bmN0aW9ucy0+Z2V0UXVlcnlPYmplY3R1aXYoaWQsIEdMX1FVRVJZX1JFU1VMVCwgJnJl
c3VsdCk7CisgICAgICAgICAgICBtUmVzdWx0U3VtID0gTWVyZ2VRdWVyeVJlc3VsdHMobVR5cGUs
IG1SZXN1bHRTdW0sIHN0YXRpY19jYXN0PEdMdWludDY0PihyZXN1bHQpKTsKKyAgICAgICAgfQor
CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZVF1ZXJ5KGlkKTsKKworICAgICAgICBtUGVu
ZGluZ1F1ZXJpZXMucG9wX2Zyb250KCk7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaAkocmV2aXNpb24g
MTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1F1ZXJ5R0wuaAkod29ya2luZyBjb3B5KQpAQCAtOSwyMSArOSw1NCBAQAogI2lmbmRlZiBM
SUJBTkdMRV9SRU5ERVJFUl9HTF9RVUVSWUdMX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X0dMX1FVRVJZR0xfSF8KIAorI2luY2x1ZGUgPGRlcXVlPgorCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvUXVlcnlJbXBsLmgiCiAKIG5hbWVzcGFjZSByeAogewogCitjbGFzcyBGdW5jdGlv
bnNHTDsKK2NsYXNzIFN0YXRlTWFuYWdlckdMOworCiBjbGFzcyBRdWVyeUdMIDogcHVibGljIFF1
ZXJ5SW1wbAogewogICBwdWJsaWM6Ci0gICAgUXVlcnlHTChHTGVudW0gdHlwZSk7CisgICAgUXVl
cnlHTChHTGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgU3RhdGVNYW5h
Z2VyR0wgKnN0YXRlTWFuYWdlcik7CiAgICAgflF1ZXJ5R0woKSBvdmVycmlkZTsKIAogICAgIGds
OjpFcnJvciBiZWdpbigpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBlbmQoKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgcXVlcnlDb3VudGVyKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdl
dFJlc3VsdChHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgZ2V0UmVzdWx0
KEdMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgaXNSZXN1bHRBdmFpbGFi
bGUoR0x1aW50ICphdmFpbGFibGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRSZXN1bHQo
R0xpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0UmVzdWx0KEdMdWlu
dDY0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBpc1Jlc3VsdEF2YWlsYWJsZShi
b29sICphdmFpbGFibGUpIG92ZXJyaWRlOworCisgICAgLy8gT3BlbkdMIGlzIG9ubHkgYWxsb3dl
ZCB0byBoYXZlIG9uZSBxdWVyeSBvZiBlYWNoIHR5cGUgYWN0aXZlIGF0IGFueSBnaXZlbiB0aW1l
LiBTaW5jZSBBTkdMRQorICAgIC8vIHZpcnR1YWxpemVzIGNvbnRleHRzLCBxdWVyaWVzIG5lZWQg
dG8gYmUgYWJsZSB0byBiZSBwYXVzZWQgYW5kIHJlc3VtZWQuCisgICAgLy8gQSBxdWVyeSBpcyAi
cGF1c2VkIiBieSBlbmRpbmcgaXQgYW5kIHB1c2hpbmcgdGhlIElEIGludG8gYSBsaXN0IG9mIHF1
ZXJpZXMgYXdhaXRpbmcgcmVhZGJhY2suCisgICAgLy8gV2hlbiBpdCBpcyAicmVzdW1lZCIsIGEg
bmV3IHF1ZXJ5IGlzIGdlbmVyYXRlZCBhbmQgc3RhcnRlZC4KKyAgICAvLyBXaGVuIGEgcmVzdWx0
IGlzIHJlcXVpcmVkLCB0aGUgcXVlcmllcyBhcmUgImZsdXNoZWQiIGJ5IGl0ZXJhdGluZyBvdmVy
IHRoZSBsaXN0IG9mIHBlbmRpbmcKKyAgICAvLyBxdWVyaWVzIGFuZCBtZXJnaW5nIHRoZWlyIHJl
c3VsdHMuCisgICAgZ2w6OkVycm9yIHBhdXNlKCk7CisgICAgZ2w6OkVycm9yIHJlc3VtZSgpOwor
CisgIHByaXZhdGU6CisgICAgZ2w6OkVycm9yIGZsdXNoKGJvb2wgZm9yY2UpOworCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgZ2w6OkVycm9yIGdldFJlc3VsdEJhc2UoVCAqcGFyYW1z
KTsKKworICAgIEdMZW51bSBtVHlwZTsKKworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rp
b25zOworICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOworCisgICAgR0x1aW50IG1B
Y3RpdmVRdWVyeTsKKyAgICBzdGQ6OmRlcXVlPEdMdWludD4gbVBlbmRpbmdRdWVyaWVzOworICAg
IEdMdWludDY0IG1SZXN1bHRTdW07CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9S
ZW5kZXJidWZmZXJHTC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJidWZmZXJHTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzLDQyICsxMyw1NCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlw
ZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7Ci0KLVJl
bmRlcmJ1ZmZlckdMOjpSZW5kZXJidWZmZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLCBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAg
JnRleHR1cmVDYXBzKQorUmVuZGVyYnVmZmVyR0w6OlJlbmRlcmJ1ZmZlckdMKGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzKQogICAgIDogUmVu
ZGVyYnVmZmVySW1wbCgpLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAorICAgICAgbVdv
cmthcm91bmRzKHdvcmthcm91bmRzKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVNYW5hZ2Vy
KSwKICAgICAgIG1UZXh0dXJlQ2Fwcyh0ZXh0dXJlQ2FwcyksCiAgICAgICBtUmVuZGVyYnVmZmVy
SUQoMCkKIHsKICAgICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVm
ZmVySUQpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVG
RkVSLCBtUmVuZGVyYnVmZmVySUQpOwogfQogCiBSZW5kZXJidWZmZXJHTDo6flJlbmRlcmJ1ZmZl
ckdMKCkKIHsKLSAgICBpZiAobVJlbmRlcmJ1ZmZlcklEICE9IDApCi0gICAgewotICAgICAgICBt
RnVuY3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVySUQpOwotICAg
ICAgICBtUmVuZGVyYnVmZmVySUQgPSAwOwotICAgIH0KKyAgICBtU3RhdGVNYW5hZ2VyLT5kZWxl
dGVSZW5kZXJidWZmZXIobVJlbmRlcmJ1ZmZlcklEKTsKKyAgICBtUmVuZGVyYnVmZmVySUQgPSAw
OwogfQogCiBnbDo6RXJyb3IgUmVuZGVyYnVmZmVyR0w6OnNldFN0b3JhZ2UoR0xlbnVtIGludGVy
bmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpCiB7CiAgICAgbVN0YXRlTWFu
YWdlci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXJJRCk7
Ci0gICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIG5hdGl2ZWdsOjpSZW5kZXJidWZm
ZXJGb3JtYXQgcmVuZGVyYnVmZmVyRm9ybWF0ID0KKyAgICAgICAgbmF0aXZlZ2w6OkdldFJlbmRl
cmJ1ZmZlckZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGludGVybmFsZm9ybWF0KTsK
KyAgICBtRnVuY3Rpb25zLT5yZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgcmVu
ZGVyYnVmZmVyRm9ybWF0LmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lkdGgpLCBzdGF0aWNfY2FzdDxHTHNp
emVpPihoZWlnaHQpKTsKKwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
CiBnbDo6RXJyb3IgUmVuZGVyYnVmZmVyR0w6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qg
c2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZG
RVIsIG1SZW5kZXJidWZmZXJJRCk7Ci0gICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdp
ZHRoLCBoZWlnaHQpOwogCisgICAgbmF0aXZlZ2w6OlJlbmRlcmJ1ZmZlckZvcm1hdCByZW5kZXJi
dWZmZXJGb3JtYXQgPQorICAgICAgICBuYXRpdmVnbDo6R2V0UmVuZGVyYnVmZmVyRm9ybWF0KG1G
dW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgaW50ZXJuYWxmb3JtYXQpOworICAgIG1GdW5jdGlvbnMt
PnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgKKyAgICAgICAgR0xfUkVOREVSQlVGRkVS
LCBzdGF0aWNfY2FzdDxHTHNpemVpPihzYW1wbGVzKSwgcmVuZGVyYnVmZmVyRm9ybWF0LmludGVy
bmFsRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPih3aWR0aCksIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGhlaWdodCkpOworCiAgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZmb3Jt
YXRDYXBzID0gbVRleHR1cmVDYXBzLmdldChpbnRlcm5hbGZvcm1hdCk7CiAgICAgaWYgKHNhbXBs
ZXMgPiBmb3JtYXRDYXBzLmdldE1heFNhbXBsZXMoKSkKICAgICB7CkBAIC03MCw2ICs4MiwxMiBA
QAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCitnbDo6RXJyb3IgUmVu
ZGVyYnVmZmVyR0w6OnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChlZ2w6OkltYWdlICppbWFnZSkK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7Cit9CisKIEdMdWludCBSZW5kZXJidWZmZXJHTDo6Z2V0UmVuZGVyYnVmZmVy
SUQoKSBjb25zdAogewogICAgIHJldHVybiBtUmVuZGVyYnVmZmVySUQ7CkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZlckdMLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDE1ICsyMSwyMCBAQAogCiBjbGFzcyBGdW5jdGlvbnNHTDsK
IGNsYXNzIFN0YXRlTWFuYWdlckdMOworc3RydWN0IFdvcmthcm91bmRzR0w7CiAKIGNsYXNzIFJl
bmRlcmJ1ZmZlckdMIDogcHVibGljIFJlbmRlcmJ1ZmZlckltcGwKIHsKICAgcHVibGljOgotICAg
IFJlbmRlcmJ1ZmZlckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdl
ckdMICpzdGF0ZU1hbmFnZXIsIGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMp
OworICAgIFJlbmRlcmJ1ZmZlckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAg
ICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAg
ICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzKTsKICAgICB+UmVuZGVy
YnVmZmVyR0woKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN0b3JhZ2Uo
R0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qg
c2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWln
aHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN0b3JhZ2VFR0xJbWFnZVRh
cmdldChlZ2w6OkltYWdlICppbWFnZSkgb3ZlcnJpZGU7CiAKICAgICBHTHVpbnQgZ2V0UmVuZGVy
YnVmZmVySUQoKSBjb25zdDsKIApAQCAtNDEsNiArNDYsNyBAQAogCiAgIHByaXZhdGU6CiAgICAg
Y29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7CisgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAm
bVdvcmthcm91bmRzOwogICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOwogICAgIGNv
bnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmbVRleHR1cmVDYXBzOwogCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1JlbmRlcmVyR0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgsOSArOCwxMyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
UmVuZGVyZXJHTC5oIgogCisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCiAjaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQXR0cmlidXRlTWFwLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRGF0YS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9CdWZmZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Nv
bXBpbGVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5WR0wuaCIK
QEAgLTIwLDYgKzI0LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFt
R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9TYW1wbGVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9TaGFkZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFu
YWdlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgiCkBA
IC0yOCwyMCArMzMsOTQgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhB
cnJheUdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGls
cy5oIgogCisjaWZuZGVmIE5ERUJVRworc3RhdGljIHZvaWQgSU5URVJOQUxfR0xfQVBJRU5UUlkg
TG9nR0xEZWJ1Z01lc3NhZ2UoR0xlbnVtIHNvdXJjZSwgR0xlbnVtIHR5cGUsIEdMdWludCBpZCwg
R0xlbnVtIHNldmVyaXR5LCBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbWVzc2FnZSwgY29uc3Qg
dm9pZCAqdXNlclBhcmFtKQoreworICAgIHN0ZDo6c3RyaW5nIHNvdXJjZVRleHQ7CisgICAgc3dp
dGNoIChzb3VyY2UpCisgICAgeworICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfQVBJOiAgICAg
ICAgICAgICBzb3VyY2VUZXh0ID0gIk9wZW5HTCI7ICAgICAgICAgIGJyZWFrOworICAgICAgY2Fz
ZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTTogICBzb3VyY2VUZXh0ID0gIldpbmRvd3Mi
OyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJ
TEVSOiBzb3VyY2VUZXh0ID0gIlNoYWRlciBDb21waWxlciI7IGJyZWFrOworICAgICAgY2FzZSBH
TF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFk6ICAgICBzb3VyY2VUZXh0ID0gIlRoaXJkIFBhcnR5
IjsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT046ICAg
ICBzb3VyY2VUZXh0ID0gIkFwcGxpY2F0aW9uIjsgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9E
RUJVR19TT1VSQ0VfT1RIRVI6ICAgICAgICAgICBzb3VyY2VUZXh0ID0gIk90aGVyIjsgICAgICAg
ICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2VUZXh0ID0gIlVOS05PV04iOyAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN0ZDo6
c3RyaW5nIHR5cGVUZXh0OworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICBjYXNlIEdM
X0RFQlVHX1RZUEVfRVJST1I6ICAgICAgICAgICAgICAgdHlwZVRleHQgPSAiRXJyb3IiOyAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVI
QVZJT1I6IHR5cGVUZXh0ID0gIkRlcHJlY2F0ZWQgYmVoYXZpb3IiOyBicmVhazsKKyAgICAgIGNh
c2UgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1I6ICB0eXBlVGV4dCA9ICJVbmRlZmlu
ZWQgYmVoYXZpb3IiOyAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJ
VFk6ICAgICAgICAgdHlwZVRleHQgPSAiUG9ydGFiaWxpdHkiOyAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFOiAgICAgICAgIHR5cGVUZXh0ID0gIlBl
cmZvcm1hbmNlIjsgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9PVEhF
UjogICAgICAgICAgICAgICB0eXBlVGV4dCA9ICJPdGhlciI7ICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfTUFSS0VSOiAgICAgICAgICAgICAgdHlwZVRleHQg
PSAiTWFya2VyIjsgICAgICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVUZXh0ID0gIlVOS05PV04iOyAgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBzZXZlcml0eVRleHQ7CisgICAgc3dpdGNo
IChzZXZlcml0eSkKKyAgICB7CisgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0g6ICAg
ICAgICAgc2V2ZXJpdHlUZXh0ID0gIkhpZ2giOyAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9ERUJVR19TRVZFUklUWV9NRURJVU06ICAgICAgIHNldmVyaXR5VGV4dCA9ICJNZWRpdW0iOyAg
ICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTE9XOiAgICAgICAgICBz
ZXZlcml0eVRleHQgPSAiTG93IjsgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RFQlVH
X1NFVkVSSVRZX05PVElGSUNBVElPTjogc2V2ZXJpdHlUZXh0ID0gIk5vdGlmaWNhdGlvbiI7IGJy
ZWFrOworICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXR5
VGV4dCA9ICJVTktOT1dOIjsgICAgICBicmVhazsKKyAgICB9CisKKyAgICBFUlIoIlxuXHRTb3Vy
Y2U6ICVzXG5cdFR5cGU6ICVzXG5cdElEOiAlZFxuXHRTZXZlcml0eTogJXNcblx0TWVzc2FnZTog
JXMiLCBzb3VyY2VUZXh0LmNfc3RyKCksIHR5cGVUZXh0LmNfc3RyKCksIGlkLAorICAgICAgICBz
ZXZlcml0eVRleHQuY19zdHIoKSwgbWVzc2FnZSk7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIHJ4
CiB7CiAKLVJlbmRlcmVyR0w6OlJlbmRlcmVyR0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9u
cykKK1JlbmRlcmVyR0w6OlJlbmRlcmVyR0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCkKICAgICA6IFJlbmRlcmVyKCksCisg
ICAgICBtTWF4U3VwcG9ydGVkRVNWZXJzaW9uKDAsIDApLAogICAgICAgbUZ1bmN0aW9ucyhmdW5j
dGlvbnMpLAotICAgICAgbVN0YXRlTWFuYWdlcihudWxscHRyKQorICAgICAgbVN0YXRlTWFuYWdl
cihudWxscHRyKSwKKyAgICAgIG1CbGl0dGVyKG51bGxwdHIpLAorICAgICAgbUhhc0RlYnVnT3V0
cHV0KGZhbHNlKSwKKyAgICAgIG1Ta2lwRHJhd0NhbGxzKGZhbHNlKQogewogICAgIEFTU0VSVCht
RnVuY3Rpb25zKTsKICAgICBtU3RhdGVNYW5hZ2VyID0gbmV3IFN0YXRlTWFuYWdlckdMKG1GdW5j
dGlvbnMsIGdldFJlbmRlcmVyQ2FwcygpKTsKKyAgICBuYXRpdmVnbF9nbDo6R2VuZXJhdGVXb3Jr
YXJvdW5kcyhtRnVuY3Rpb25zLCAmbVdvcmthcm91bmRzKTsKKyAgICBtQmxpdHRlciA9IG5ldyBC
bGl0R0woZnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIpOworCisgICAgbUhh
c0RlYnVnT3V0cHV0ID0gbUZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykp
IHx8CisgICAgICAgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdM
X0tIUl9kZWJ1ZyIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+aXNBdExl
YXN0R0xFUyhnbDo6VmVyc2lvbigzLCAyKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICBtRnVu
Y3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9LSFJfZGVidWciKTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgaWYgKG1IYXNEZWJ1Z091dHB1dCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmVu
YWJsZShHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOworICAgICAgICBtRnVuY3Rpb25zLT5k
ZWJ1Z01lc3NhZ2VDb250cm9sKEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCBHTF9ERUJVR19T
RVZFUklUWV9ISUdILCAwLCBudWxscHRyLCBHTF9UUlVFKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+
ZGVidWdNZXNzYWdlQ29udHJvbChHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfREVCVUdf
U0VWRVJJVFlfTUVESVVNLCAwLCBudWxscHRyLCBHTF9UUlVFKTsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+ZGVidWdNZXNzYWdlQ29udHJvbChHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfREVC
VUdfU0VWRVJJVFlfTE9XLCAwLCBudWxscHRyLCBHTF9GQUxTRSk7CisgICAgICAgIG1GdW5jdGlv
bnMtPmRlYnVnTWVzc2FnZUNvbnRyb2woR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RF
QlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiwgMCwgbnVsbHB0ciwgR0xfRkFMU0UpOworICAgICAg
ICBtRnVuY3Rpb25zLT5kZWJ1Z01lc3NhZ2VDYWxsYmFjaygmTG9nR0xEZWJ1Z01lc3NhZ2UsIG51
bGxwdHIpOworICAgIH0KKyNlbmRpZgorCisgICAgRUdMaW50IGRldmljZVR5cGUgPQorICAgICAg
ICBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYk1hcC5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX0FOR0xFLCBFR0xfTk9ORSkpOworICAgIGlmIChkZXZpY2VUeXBlID09IEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKQorICAgIHsKKyAgICAgICAgbVNr
aXBEcmF3Q2FsbHMgPSB0cnVlOworICAgIH0KIH0KIAogUmVuZGVyZXJHTDo6flJlbmRlcmVyR0wo
KQogeworICAgIFNhZmVEZWxldGUobUJsaXR0ZXIpOwogICAgIFNhZmVEZWxldGUobVN0YXRlTWFu
YWdlcik7CiB9CiAKQEAgLTUzLDc4ICsxMzIsMTYxIEBACiAKIGdsOjpFcnJvciBSZW5kZXJlckdM
OjpmaW5pc2goKQogeworI2lmZGVmIE5ERUJVRworICAgIGlmIChtV29ya2Fyb3VuZHMuZmluaXNo
RG9lc05vdENhdXNlUXVlcmllc1RvQmVBdmFpbGFibGUgJiYgbUhhc0RlYnVnT3V0cHV0KQorICAg
IHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZW5hYmxlKEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9V
Uyk7CisgICAgfQorI2VuZGlmCisKICAgICBtRnVuY3Rpb25zLT5maW5pc2goKTsKKworI2lmZGVm
IE5ERUJVRworICAgIGlmIChtV29ya2Fyb3VuZHMuZmluaXNoRG9lc05vdENhdXNlUXVlcmllc1Rv
QmVBdmFpbGFibGUgJiYgbUhhc0RlYnVnT3V0cHV0KQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+ZGlzYWJsZShHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOworICAgIH0KKyNlbmRpZgor
CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKLWdsOjpFcnJvciBSZW5k
ZXJlckdMOjpkcmF3QXJyYXlzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50
LCBHTHNpemVpIGluc3RhbmNlcykKK2dsOjpFcnJvciBSZW5kZXJlckdMOjpkcmF3QXJyYXlzKGNv
bnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQpCiB7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbVN0YXRlTWFuYWdlci0+c2V0RHJhd0FycmF5
c1N0YXRlKGRhdGEsIGZpcnN0LCBjb3VudCk7CisgICAgZ2w6OkVycm9yIGVycm9yID0gbVN0YXRl
TWFuYWdlci0+c2V0RHJhd0FycmF5c1N0YXRlKGRhdGEsIGZpcnN0LCBjb3VudCwgMCk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9
CiAKLSAgICBtRnVuY3Rpb25zLT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7CisgICAg
aWYgKCFtU2tpcERyYXdDYWxscykKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdBcnJh
eXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdFbGVtZW50cyhjb25z
dCBnbDo6RGF0YSAmZGF0YSwgR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGlj
ZXMsIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSYW5nZVVJICZpbmRleFJhbmdlKQorZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdB
cnJheXNJbnN0YW5jZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkKIHsKLSAgICBpZiAo
aW5zdGFuY2VzID4gMCkKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBtU3RhdGVNYW5hZ2VyLT5zZXRE
cmF3QXJyYXlzU3RhdGUoZGF0YSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKKyAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCisgICAgaWYgKCFtU2tpcERyYXdDYWxscykKKyAg
ICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3Qs
IGNvdW50LCBpbnN0YW5jZUNvdW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmVyR0w6OmRyYXdFbGVtZW50cyhjb25z
dCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZp
bmRleFJhbmdlKQorewogICAgIGNvbnN0IEdMdm9pZCAqZHJhd0luZGV4UG9pbnRlciA9IG51bGxw
dHI7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbVN0YXRlTWFuYWdlci0+c2V0RHJhd0VsZW1lbnRz
U3RhdGUoZGF0YSwgY291bnQsIHR5cGUsIGluZGljZXMsICZkcmF3SW5kZXhQb2ludGVyKTsKKyAg
ICBnbDo6RXJyb3IgZXJyb3IgPQorICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXREcmF3RWxlbWVu
dHNTdGF0ZShkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgJmRyYXdJbmRleFBvaW50ZXIp
OwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgfQogCi0gICAgbUZ1bmN0aW9ucy0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBl
LCBkcmF3SW5kZXhQb2ludGVyKTsKKyAgICBpZiAoIW1Ta2lwRHJhd0NhbGxzKQorICAgIHsKKyAg
ICAgICAgbUZ1bmN0aW9ucy0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBkcmF3SW5k
ZXhQb2ludGVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
IH0KIAotQ29tcGlsZXJJbXBsICpSZW5kZXJlckdMOjpjcmVhdGVDb21waWxlcihjb25zdCBnbDo6
RGF0YSAmZGF0YSkKK2dsOjpFcnJvciBSZW5kZXJlckdMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmlu
ZGV4UmFuZ2UpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb21waWxlckdMKGRhdGEpOworICAgIGNvbnN0
IEdMdm9pZCAqZHJhd0luZGV4UG9pbnRlciA9IG51bGxwdHI7CisgICAgZ2w6OkVycm9yIGVycm9y
ID0gbVN0YXRlTWFuYWdlci0+c2V0RHJhd0VsZW1lbnRzU3RhdGUoZGF0YSwgY291bnQsIHR5cGUs
IGluZGljZXMsIGluc3RhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZHJhd0luZGV4UG9pbnRlcik7CisgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBp
ZiAoIW1Ta2lwRHJhd0NhbGxzKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBkcmF3SW5kZXhQb2ludGVyLCBpbnN0YW5j
ZXMpOworICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCi1T
aGFkZXJJbXBsICpSZW5kZXJlckdMOjpjcmVhdGVTaGFkZXIoR0xlbnVtIHR5cGUpCitnbDo6RXJy
b3IgUmVuZGVyZXJHTDo6ZHJhd1JhbmdlRWxlbWVudHMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmlu
ZGV4UmFuZ2UpCiB7Ci0gICAgcmV0dXJuIG5ldyBTaGFkZXJHTCh0eXBlLCBtRnVuY3Rpb25zKTsK
KyAgICBjb25zdCBHTHZvaWQgKmRyYXdJbmRleFBvaW50ZXIgPSBudWxscHRyOworICAgIGdsOjpF
cnJvciBlcnJvciA9CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldERyYXdFbGVtZW50c1N0YXRl
KGRhdGEsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAwLCAmZHJhd0luZGV4UG9pbnRlcik7CisgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9
CisKKyAgICBpZiAoIW1Ta2lwRHJhd0NhbGxzKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+
ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIGRyYXdJbmRl
eFBvaW50ZXIpOworICAgIH0KKworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwog
fQogCi1Qcm9ncmFtSW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRlUHJvZ3JhbSgpCitDb21waWxlcklt
cGwgKlJlbmRlcmVyR0w6OmNyZWF0ZUNvbXBpbGVyKCkKIHsKLSAgICByZXR1cm4gbmV3IFByb2dy
YW1HTChtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyKTsKKyAgICByZXR1cm4gbmV3IENvbXBpbGVy
R0wobUZ1bmN0aW9ucyk7CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKK1No
YWRlckltcGwgKlJlbmRlcmVyR0w6OmNyZWF0ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyOjpEYXRh
ICZkYXRhKQogewotICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJHTChkYXRhLCBtRnVuY3Rpb25z
LCBtU3RhdGVNYW5hZ2VyLCB0cnVlKTsKKyAgICByZXR1cm4gbmV3IFNoYWRlckdMKGRhdGEsIG1G
dW5jdGlvbnMsIG1Xb3JrYXJvdW5kcyk7CiB9CiAKK1Byb2dyYW1JbXBsICpSZW5kZXJlckdMOjpj
cmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtOjpEYXRhICZkYXRhKQoreworICAgIHJldHVy
biBuZXcgUHJvZ3JhbUdMKGRhdGEsIG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgbVN0YXRlTWFu
YWdlcik7Cit9CisKIEZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRlRnJhbWVidWZm
ZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKQogewotICAgIHJldHVybiBuZXcg
RnJhbWVidWZmZXJHTChkYXRhLCBtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKGRhdGEsIG1GdW5jdGlvbnMsIG1TdGF0ZU1hbmFn
ZXIsIG1Xb3JrYXJvdW5kcywgZmFsc2UpOwogfQogCiBUZXh0dXJlSW1wbCAqUmVuZGVyZXJHTDo6
Y3JlYXRlVGV4dHVyZShHTGVudW0gdGFyZ2V0KQogewotICAgIHJldHVybiBuZXcgVGV4dHVyZUdM
KHRhcmdldCwgbUZ1bmN0aW9ucywgbVN0YXRlTWFuYWdlcik7CisgICAgcmV0dXJuIG5ldyBUZXh0
dXJlR0wodGFyZ2V0LCBtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIsIG1C
bGl0dGVyKTsKIH0KIAogUmVuZGVyYnVmZmVySW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRlUmVuZGVy
YnVmZmVyKCkKIHsKLSAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckdMKG1GdW5jdGlvbnMsIG1T
dGF0ZU1hbmFnZXIsIGdldFJlbmRlcmVyVGV4dHVyZUNhcHMoKSk7CisgICAgcmV0dXJuIG5ldyBS
ZW5kZXJidWZmZXJHTChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIsIGdl
dFJlbmRlcmVyVGV4dHVyZUNhcHMoKSk7CiB9CiAKIEJ1ZmZlckltcGwgKlJlbmRlcmVyR0w6OmNy
ZWF0ZUJ1ZmZlcigpCkBAIC0xMzIsMTQgKzI5NCwxNCBAQAogICAgIHJldHVybiBuZXcgQnVmZmVy
R0wobUZ1bmN0aW9ucywgbVN0YXRlTWFuYWdlcik7CiB9CiAKLVZlcnRleEFycmF5SW1wbCAqUmVu
ZGVyZXJHTDo6Y3JlYXRlVmVydGV4QXJyYXkoKQorVmVydGV4QXJyYXlJbXBsICpSZW5kZXJlckdM
OjpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRhdGEgJmRhdGEpCiB7
Ci0gICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheUdMKG1GdW5jdGlvbnMsIG1TdGF0ZU1hbmFnZXIp
OworICAgIHJldHVybiBuZXcgVmVydGV4QXJyYXlHTChkYXRhLCBtRnVuY3Rpb25zLCBtU3RhdGVN
YW5hZ2VyKTsKIH0KIAogUXVlcnlJbXBsICpSZW5kZXJlckdMOjpjcmVhdGVRdWVyeShHTGVudW0g
dHlwZSkKIHsKLSAgICByZXR1cm4gbmV3IFF1ZXJ5R0wodHlwZSk7CisgICAgcmV0dXJuIG5ldyBR
dWVyeUdMKHR5cGUsIG1GdW5jdGlvbnMsIG1TdGF0ZU1hbmFnZXIpOwogfQogCiBGZW5jZU5WSW1w
bCAqUmVuZGVyZXJHTDo6Y3JlYXRlRmVuY2VOVigpCkBAIC0xNTQsOSArMzE2LDMxIEBACiAKIFRy
YW5zZm9ybUZlZWRiYWNrSW1wbCAqUmVuZGVyZXJHTDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2so
KQogewotICAgIHJldHVybiBuZXcgVHJhbnNmb3JtRmVlZGJhY2tHTCgpOworICAgIHJldHVybiBu
ZXcgVHJhbnNmb3JtRmVlZGJhY2tHTChtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW5kZXJlckNhcHMoKS5tYXhUcmFuc2Zv
cm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cyk7CiB9CiAKK1NhbXBsZXJJbXBsICpSZW5kZXJl
ckdMOjpjcmVhdGVTYW1wbGVyKCkKK3sKKyAgICByZXR1cm4gbmV3IFNhbXBsZXJHTChtRnVuY3Rp
b25zLCBtU3RhdGVNYW5hZ2VyKTsKK30KKwordm9pZCBSZW5kZXJlckdMOjppbnNlcnRFdmVudE1h
cmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIG1GdW5jdGlv
bnMtPmRlYnVnTWVzc2FnZUluc2VydChHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RF
QlVHX1RZUEVfTUFSS0VSLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04sIGxlbmd0aCwgbWFya2VyKTsKK30KKwordm9p
ZCBSZW5kZXJlckdMOjpwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikKK3sKKyAgICBtRnVuY3Rpb25zLT5wdXNoRGVidWdHcm91cChHTF9ERUJVR19TT1VS
Q0VfQVBQTElDQVRJT04sIDAsIGxlbmd0aCwgbWFya2VyKTsKK30KKwordm9pZCBSZW5kZXJlckdM
Ojpwb3BHcm91cE1hcmtlcigpCit7CisgICAgbUZ1bmN0aW9ucy0+cG9wRGVidWdHcm91cCgpOwor
fQorCiB2b2lkIFJlbmRlcmVyR0w6Om5vdGlmeURldmljZUxvc3QoKQogewogICAgIFVOSU1QTEVN
RU5URUQoKTsKQEAgLTE4MCwxMiArMzY0LDYgQEAKICAgICByZXR1cm4gYm9vbCgpOwogfQogCi1W
ZW5kb3JJRCBSZW5kZXJlckdMOjpnZXRWZW5kb3JJZCgpIGNvbnN0Ci17Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBWZW5kb3JJRCgpOwotfQotCiBzdGQ6OnN0cmluZyBSZW5kZXJl
ckdMOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25zdAogewogICAgIHJldHVybiBzdGQ6OnN0cmluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihtRnVuY3Rpb25zLT5nZXRTdHJpbmcoR0xfVkVO
RE9SKSkpOwpAQCAtMTk4LDI0ICszNzYsNjQgQEAKIAogICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBy
ZW5kZXJlclN0cmluZzsKICAgICByZW5kZXJlclN0cmluZyA8PCBuYXRpdmVWZW5kb3JTdHJpbmcg
PDwgIiAiIDw8IG5hdGl2ZVJlbmRlcmVyU3RyaW5nIDw8ICIgT3BlbkdMIjsKLSAgICBpZiAobUZ1
bmN0aW9ucy0+b3BlbkdMRVMpCisgICAgaWYgKG1GdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5E
QVJEX0dMX0VTKQogICAgIHsKICAgICAgICAgcmVuZGVyZXJTdHJpbmcgPDwgIiBFUyI7CiAgICAg
fQotICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgIiA8PCBtRnVuY3Rpb25zLT5tYWpvclZlcnNpb24g
PDwgIi4iIDw8IG1GdW5jdGlvbnMtPm1pbm9yVmVyc2lvbjsKKyAgICByZW5kZXJlclN0cmluZyA8
PCAiICIgPDwgbUZ1bmN0aW9ucy0+dmVyc2lvbi5tYWpvciA8PCAiLiIgPDwgbUZ1bmN0aW9ucy0+
dmVyc2lvbi5taW5vcjsKKyAgICBpZiAobUZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRf
R0xfREVTS1RPUCkKKyAgICB7CisgICAgICAgIC8vIFNvbWUgZHJpdmVycyAoTlZJRElBKSB1c2Ug
YSBwcm9maWxlIG1hc2sgb2YgMCB3aGVuIGluIGNvbXBhdGliaWxpdHkgcHJvZmlsZS4KKyAgICAg
ICAgaWYgKChtRnVuY3Rpb25zLT5wcm9maWxlICYgR0xfQ09OVEVYVF9DT01QQVRJQklMSVRZX1BS
T0ZJTEVfQklUKSAhPSAwIHx8CisgICAgICAgICAgICAobUZ1bmN0aW9ucy0+aXNBdExlYXN0R0wo
Z2w6OlZlcnNpb24oMywgMikpICYmIG1GdW5jdGlvbnMtPnByb2ZpbGUgPT0gMCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJlbmRlcmVyU3RyaW5nIDw8ICIgY29tcGF0aWJpbGl0eSI7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKG1GdW5jdGlvbnMtPnByb2ZpbGUgJiBHTF9DT05URVhU
X0NPUkVfUFJPRklMRV9CSVQpICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlbmRlcmVy
U3RyaW5nIDw8ICIgY29yZSI7CisgICAgICAgIH0KKyAgICB9CiAKICAgICByZXR1cm4gcmVuZGVy
ZXJTdHJpbmcuc3RyKCk7CiB9CiAKLXZvaWQgUmVuZGVyZXJHTDo6Z2VuZXJhdGVDYXBzKGdsOjpD
YXBzICpvdXRDYXBzLCBnbDo6VGV4dHVyZUNhcHNNYXAqIG91dFRleHR1cmVDYXBzLCBnbDo6RXh0
ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKK2NvbnN0IGdsOjpWZXJzaW9uICZSZW5kZXJl
ckdMOjpnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAogewotICAgIG5hdGl2ZWdsX2ds
OjpHZW5lcmF0ZUNhcHMobUZ1bmN0aW9ucywgb3V0Q2Fwcywgb3V0VGV4dHVyZUNhcHMsIG91dEV4
dGVuc2lvbnMpOworICAgIC8vIEZvcmNlIGdlbmVyYXRpb24gb2YgY2FwcworICAgIGdldFJlbmRl
cmVyQ2FwcygpOworCisgICAgcmV0dXJuIG1NYXhTdXBwb3J0ZWRFU1ZlcnNpb247CiB9CiAKLVdv
cmthcm91bmRzIFJlbmRlcmVyR0w6OmdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdAordm9pZCBS
ZW5kZXJlckdMOjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsIGdsOjpUZXh0dXJlQ2Fw
c01hcCogb3V0VGV4dHVyZUNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6
RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdsOjpMaW1pdGF0aW9ucyAqIC8qIG91dExpbWl0YXRpb25zICovKSBjb25zdAogewotICAgIFdv
cmthcm91bmRzIHdvcmthcm91bmRzOwotICAgIHJldHVybiB3b3JrYXJvdW5kczsKKyAgICBuYXRp
dmVnbF9nbDo6R2VuZXJhdGVDYXBzKG1GdW5jdGlvbnMsIG91dENhcHMsIG91dFRleHR1cmVDYXBz
LCBvdXRFeHRlbnNpb25zLCAmbU1heFN1cHBvcnRlZEVTVmVyc2lvbik7CiB9CiAKK3ZvaWQgUmVu
ZGVyZXJHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0
ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit7CisgICAgbVN0YXRlTWFuYWdlci0+c3luY1N0YXRl
KHN0YXRlLCBkaXJ0eUJpdHMpOwogfQorCitHTGludCBSZW5kZXJlckdMOjpnZXRHUFVEaXNqb2lu
dCgpCit7CisgICAgLy8gVE9ETyhld2VsbCk6IE9uIEdMRVMgYmFja2VuZHMgd2Ugc2hvdWxkIGZp
bmQgYSB3YXkgdG8gcmVsaWFibHkgcXVlcnkgZGlzam9pbnQgZXZlbnRzCisgICAgcmV0dXJuIDA7
Cit9CisKK0dMaW50NjQgUmVuZGVyZXJHTDo6Z2V0VGltZXN0YW1wKCkKK3sKKyAgICBHTGludDY0
IHJlc3VsdCA9IDA7CisgICAgbUZ1bmN0aW9ucy0+Z2V0SW50ZWdlcjY0dihHTF9USU1FU1RBTVAs
ICZyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmVuZGVyZXJHTDo6b25N
YWtlQ3VycmVudChjb25zdCBnbDo6RGF0YSAmZGF0YSkKK3sKKyAgICAvLyBRdWVyaWVzIG5lZWQg
dG8gYmUgcGF1c2VkL3Jlc3VtZWQgb24gY29udGV4dCBzd2l0Y2hlcworICAgIG1TdGF0ZU1hbmFn
ZXItPm9uTWFrZUN1cnJlbnQoZGF0YSk7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJl
ckdMLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTksMzUg
KzksNjAgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfUkVOREVSRVJHTF9IXwogI2Rl
ZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9SRU5ERVJFUkdMX0hfCiAKKyNpbmNsdWRlICJsaWJB
TkdMRS9WZXJzaW9uLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUmVuZGVyZXIuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgiCiAKIG5hbWVz
cGFjZSByeAogeworY2xhc3MgQmxpdEdMOwogY2xhc3MgRnVuY3Rpb25zR0w7CiBjbGFzcyBTdGF0
ZU1hbmFnZXJHTDsKIAogY2xhc3MgUmVuZGVyZXJHTCA6IHB1YmxpYyBSZW5kZXJlcgogewogICBw
dWJsaWM6Ci0gICAgUmVuZGVyZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKTsKKyAg
ICBSZW5kZXJlckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJNYXApOwogICAgIH5SZW5kZXJlckdMKCkgb3ZlcnJpZGU7CiAKICAg
ICBnbDo6RXJyb3IgZmx1c2goKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgZmluaXNoKCkgb3Zl
cnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgZHJhd0FycmF5cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwg
R0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZHJh
d0VsZW1lbnRzKGNvbnN0IGdsOjpEYXRhICZkYXRhLCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGljZXMsIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmFuZ2VVSSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdB
cnJheXMoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xz
aXplaSBjb3VudCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbnN0YW5jZWQo
Y29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmly
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQpIG92
ZXJyaWRlOwogCisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2Ug
JmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5j
ZWQoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAq
aW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Oklu
ZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3UmFuZ2VF
bGVtZW50cyhjb25zdCBnbDo6RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworCiAg
ICAgLy8gU2hhZGVyIGNyZWF0aW9uCi0gICAgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcihj
b25zdCBnbDo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7Ci0gICAgU2hhZGVySW1wbCAqY3JlYXRlU2hh
ZGVyKEdMZW51bSB0eXBlKSBvdmVycmlkZTsKLSAgICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3Jh
bSgpIG92ZXJyaWRlOworICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIoKSBvdmVycmlk
ZTsKKyAgICBTaGFkZXJJbXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlcjo6RGF0YSAm
ZGF0YSkgb3ZlcnJpZGU7CisgICAgUHJvZ3JhbUltcGwgKmNyZWF0ZVByb2dyYW0oY29uc3QgZ2w6
OlByb2dyYW06OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwogCiAgICAgLy8gRnJhbWVidWZmZXIgY3Jl
YXRpb24KLSAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25z
dCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpIG92ZXJyaWRlOwogICAgIEZyYW1lYnVmZmVy
SW1wbCAqY3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRh
KSBvdmVycmlkZTsKIAogICAgIC8vIFRleHR1cmUgY3JlYXRpb24KQEAgLTUwLDcgKzc1LDcgQEAK
ICAgICBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIFZlcnRl
eCBBcnJheSBjcmVhdGlvbgotICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJyYXko
KSBvdmVycmlkZTsKKyAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0
IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CiAKICAgICAvLyBRdWVyeSBh
bmQgRmVuY2UgY3JlYXRpb24KICAgICBRdWVyeUltcGwgKmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBl
KSBvdmVycmlkZTsKQEAgLTYwLDIyICs4NSw1MyBAQAogICAgIC8vIFRyYW5zZm9ybSBGZWVkYmFj
ayBjcmVhdGlvbgogICAgIFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqY3JlYXRlVHJhbnNmb3JtRmVl
ZGJhY2soKSBvdmVycmlkZTsKIAorICAgIC8vIFNhbXBsZXIgb2JqZWN0IGNyZWF0aW9uCisgICAg
U2FtcGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZTsKKworICAgIC8vIEVYVF9kZWJ1
Z19tYXJrZXIKKyAgICB2b2lkIGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcG9wR3Jv
dXBNYXJrZXIoKSBvdmVycmlkZTsKKwogICAgIC8vIGxvc3QgZGV2aWNlCiAgICAgdm9pZCBub3Rp
ZnlEZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0RldmljZUxvc3QoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHRlc3REZXZpY2VMb3N0KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCB0
ZXN0RGV2aWNlUmVzZXR0YWJsZSgpIG92ZXJyaWRlOwogCi0gICAgVmVuZG9ySUQgZ2V0VmVuZG9y
SWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmcoKSBj
b25zdCBvdmVycmlkZTsKICAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0
YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKwor
ICAgIEdMaW50IGdldEdQVURpc2pvaW50KCkgb3ZlcnJpZGU7CisgICAgR0xpbnQ2NCBnZXRUaW1l
c3RhbXAoKSBvdmVycmlkZTsKKworICAgIHZvaWQgb25NYWtlQ3VycmVudChjb25zdCBnbDo6RGF0
YSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICBjb25zdCBnbDo6VmVyc2lvbiAmZ2V0TWF4U3VwcG9y
dGVkRVNWZXJzaW9uKCkgY29uc3Q7CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKmdldEZ1bmN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1GdW5jdGlvbnM7IH0KKyAgICBTdGF0ZU1hbmFnZXJHTCAqZ2V0
U3RhdGVNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlTWFuYWdlcjsgfQorICAgIGNvbnN0
IFdvcmthcm91bmRzR0wgJmdldFdvcmthcm91bmRzKCkgY29uc3QgeyByZXR1cm4gbVdvcmthcm91
bmRzOyB9CisKICAgcHJpdmF0ZToKLSAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0
Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwKiBvdXRUZXh0dXJlQ2FwcywgZ2w6OkV4dGVuc2lvbnMg
Km91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdvcmthcm91bmRzIGdlbmVyYXRl
V29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6
Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwKiBvdXRUZXh0dXJlQ2FwcywKKyAgICAg
ICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIG11dGFibGUgZ2w6OlZlcnNpb24gbU1heFN1cHBvcnRlZEVTVmVyc2lvbjsK
KwogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOwogICAgIFN0YXRlTWFuYWdlckdM
ICptU3RhdGVNYW5hZ2VyOworCisgICAgQmxpdEdMICptQmxpdHRlcjsKKworICAgIFdvcmthcm91
bmRzR0wgbVdvcmthcm91bmRzOworCisgICAgYm9vbCBtSGFzRGVidWdPdXRwdXQ7CisKKyAgICAv
LyBGb3IgcGVyZm9ybWFuY2UgZGVidWdnaW5nCisgICAgYm9vbCBtU2tpcERyYXdDYWxsczsKIH07
CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9TYW1wbGVyR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TYW1wbGVyR0wuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NhbXBsZXJH
TC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLy8KKy8vIENvcHlyaWdodCAy
MDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU2Ft
cGxlckdMLmNwcDogRGVmaW5lcyB0aGUgcng6OlNhbXBsZXJHTCBjbGFzcywgYW4gaW1wbGVtZW50
YXRpb24gb2YgU2FtcGxlckltcGwuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9T
YW1wbGVyR0wuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dM
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKwor
bmFtZXNwYWNlCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIGlubGluZSB2b2lk
IFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIoY29uc3Qgcng6OkZ1bmN0aW9uc0dMICpmdW5jdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2FtcGxl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpT
YW1wbGVyU3RhdGUgJm5ld1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OlNhbXBsZXJTdGF0ZSAmY3VyU3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFQoZ2w6OlNhbXBsZXJTdGF0ZTo6KnNhbXBsZXJNZW1iZXIp
KQoreworICAgIGlmIChjdXJTdGF0ZS4qc2FtcGxlck1lbWJlciAhPSBuZXdTdGF0ZS4qc2FtcGxl
ck1lbWJlcikKKyAgICB7CisgICAgICAgIGN1clN0YXRlLipzYW1wbGVyTWVtYmVyID0gbmV3U3Rh
dGUuKnNhbXBsZXJNZW1iZXI7CisgICAgICAgIGZ1bmN0aW9ucy0+c2FtcGxlclBhcmFtZXRlcmYo
c2FtcGxlciwgbmFtZSwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oY3VyU3RhdGUuKnNhbXBsZXJNZW1i
ZXIpKTsKKyAgICB9Cit9Cit9CisKK25hbWVzcGFjZSByeAoreworCitTYW1wbGVyR0w6OlNhbXBs
ZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVN
YW5hZ2VyKQorICAgIDogU2FtcGxlckltcGwoKSwKKyAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25z
KSwKKyAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVNYW5hZ2VyKSwKKyAgICAgIG1BcHBsaWVkU2Ft
cGxlclN0YXRlKCksCisgICAgICBtU2FtcGxlcklEKDApCit7CisgICAgbUZ1bmN0aW9ucy0+Z2Vu
U2FtcGxlcnMoMSwgJm1TYW1wbGVySUQpOworfQorCitTYW1wbGVyR0w6On5TYW1wbGVyR0woKQor
eworICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZVNhbXBsZXIobVNhbXBsZXJJRCk7CisgICAgbVNh
bXBsZXJJRCA9IDA7Cit9CisKK3ZvaWQgU2FtcGxlckdMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlNh
bXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKSBjb25zdAoreworICAgIC8vIGNsYW5nLWZvcm1hdCBv
ZmYKKyAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIG1TYW1wbGVySUQsIHNh
bXBsZXJTdGF0ZSwgbUFwcGxpZWRTYW1wbGVyU3RhdGUsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
JmdsOjpTYW1wbGVyU3RhdGU6Om1pbkZpbHRlcik7CisgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJl
cihtRnVuY3Rpb25zLCBtU2FtcGxlcklELCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0
YXRlLCBHTF9URVhUVVJFX01BR19GSUxURVIsICZnbDo6U2FtcGxlclN0YXRlOjptYWdGaWx0ZXIp
OworICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgbVNhbXBsZXJJRCwgc2Ft
cGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgR0xfVEVYVFVSRV9XUkFQX1MsICZnbDo6
U2FtcGxlclN0YXRlOjp3cmFwUyk7CisgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rp
b25zLCBtU2FtcGxlcklELCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBHTF9U
RVhUVVJFX1dSQVBfVCwgJmdsOjpTYW1wbGVyU3RhdGU6OndyYXBUKTsKKyAgICBTeW5jU2FtcGxl
clN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIG1TYW1wbGVySUQsIHNhbXBsZXJTdGF0ZSwgbUFwcGxp
ZWRTYW1wbGVyU3RhdGUsIEdMX1RFWFRVUkVfV1JBUF9SLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6d3Jh
cFIpOworICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgbVNhbXBsZXJJRCwg
c2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgR0xfVEVYVFVSRV9NQVhfQU5JU09U
Uk9QWV9FWFQsICZnbDo6U2FtcGxlclN0YXRlOjptYXhBbmlzb3Ryb3B5KTsKKyAgICBTeW5jU2Ft
cGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIG1TYW1wbGVySUQsIHNhbXBsZXJTdGF0ZSwgbUFw
cGxpZWRTYW1wbGVyU3RhdGUsIEdMX1RFWFRVUkVfTUlOX0xPRCwgJmdsOjpTYW1wbGVyU3RhdGU6
Om1pbkxvZCk7CisgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBtU2FtcGxl
cklELCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBHTF9URVhUVVJFX01BWF9M
T0QsICZnbDo6U2FtcGxlclN0YXRlOjptYXhMb2QpOworICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1i
ZXIobUZ1bmN0aW9ucywgbVNhbXBsZXJJRCwgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJT
dGF0ZSwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsICZnbDo6U2FtcGxlclN0YXRlOjpjb21wYXJl
TW9kZSk7CisgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBtU2FtcGxlcklE
LCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBHTF9URVhUVVJFX0NPTVBBUkVf
RlVOQywgJmdsOjpTYW1wbGVyU3RhdGU6OmNvbXBhcmVGdW5jKTsKKyAgICAvLyBjbGFuZy1mb3Jt
YXQgb24KK30KKworR0x1aW50IFNhbXBsZXJHTDo6Z2V0U2FtcGxlcklEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVNhbXBsZXJJRDsKK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TYW1wbGVyR0wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2FtcGxlckdMLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvU2FtcGxlckdMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKworLy8gU2FtcGxlckdMLmg6IERlZmluZXMgdGhlIHJ4OjpTYW1wbGVyR0wgY2xhc3Ms
IGFuIGltcGxlbWVudGF0aW9uIG9mIFNhbXBsZXJJbXBsLgorCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX0dMX1NBTVBMRVJHTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9TQU1Q
TEVSR0xfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9TYW1wbGVySW1wbC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xh
c3MgRnVuY3Rpb25zR0w7CitjbGFzcyBTdGF0ZU1hbmFnZXJHTDsKKworY2xhc3MgU2FtcGxlckdM
IDogcHVibGljIFNhbXBsZXJJbXBsCit7CisgIHB1YmxpYzoKKyAgICBTYW1wbGVyR0woY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7Cisg
ICAgflNhbXBsZXJHTCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6
OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKSBjb25zdDsKKworICAgIEdMdWludCBnZXRTYW1w
bGVySUQoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVu
Y3Rpb25zOworICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOworCisgICAgbXV0YWJs
ZSBnbDo6U2FtcGxlclN0YXRlIG1BcHBsaWVkU2FtcGxlclN0YXRlOworICAgIEdMdWludCBtU2Ft
cGxlcklEOworfTsKK30KKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9TQU1QTEVS
R0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9TaGFkZXJHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmNwcAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRl
ckdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAsNDAgKzEwLDE5IEBACiAKICNpbmNsdWRlICJj
b21tb24vZGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db21waWxlci5oIgotI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L1JlbmRlcmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5k
c0dMLmgiCiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotc3RhdGljIHN0ZDo6dmVjdG9yPFZh
clQ+IEdldEZpbHRlcmVkU2hhZGVyVmFyaWFibGVzKGNvbnN0IHN0ZDo6dmVjdG9yPFZhclQ+ICp2
YXJpYWJsZUxpc3QpCi17Ci0gICAgQVNTRVJUKHZhcmlhYmxlTGlzdCk7Ci0gICAgc3RkOjp2ZWN0
b3I8VmFyVD4gcmVzdWx0OwotICAgIGZvciAoc2l6ZV90IHZhckluZGV4ID0gMDsgdmFySW5kZXgg
PCB2YXJpYWJsZUxpc3QtPnNpemUoKTsgdmFySW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0
IFZhclQgJnZhciA9IHZhcmlhYmxlTGlzdC0+YXQodmFySW5kZXgpOwotICAgICAgICBpZiAodmFy
LnN0YXRpY1VzZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayh2YXIp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19CisjaW5jbHVkZSA8aW9z
dHJlYW0+CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotc3RhdGljIGNvbnN0IHN0ZDo6dmVj
dG9yPFZhclQ+ICZHZXRTaGFkZXJWYXJpYWJsZXMoY29uc3Qgc3RkOjp2ZWN0b3I8VmFyVD4gKnZh
cmlhYmxlTGlzdCkKLXsKLSAgICBBU1NFUlQodmFyaWFibGVMaXN0KTsKLSAgICByZXR1cm4gKnZh
cmlhYmxlTGlzdDsKLX0KLQogbmFtZXNwYWNlIHJ4CiB7CiAKLVNoYWRlckdMOjpTaGFkZXJHTChH
TGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucykKLSAgICA6IFNoYWRlcklt
cGwoKSwKLSAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKLSAgICAgIG1UeXBlKHR5cGUpLAot
ICAgICAgbVNoYWRlcklEKDApCitTaGFkZXJHTDo6U2hhZGVyR0woY29uc3QgZ2w6OlNoYWRlcjo6
RGF0YSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRz
KQorICAgIDogU2hhZGVySW1wbChkYXRhKSwgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBtV29ya2Fy
b3VuZHMod29ya2Fyb3VuZHMpLCBtU2hhZGVySUQoMCkKIHsKICAgICBBU1NFUlQobUZ1bmN0aW9u
cyk7CiB9CkBAIC01Nyw4NCArMzYsNjcgQEAKICAgICB9CiB9CiAKLWJvb2wgU2hhZGVyR0w6OmNv
bXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSkK
K2ludCBTaGFkZXJHTDo6cHJlcGFyZVNvdXJjZUFuZFJldHVybk9wdGlvbnMoc3RkOjpzdHJpbmdz
dHJlYW0gKnNvdXJjZVN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgKiAvKnNvdXJjZVBhdGgqLykKIHsKICAgICAvLyBSZXNldCB0
aGUgcHJldmlvdXMgc3RhdGUKLSAgICBtQWN0aXZlQXR0cmlidXRlcy5jbGVhcigpOwotICAgIG1W
YXJ5aW5ncy5jbGVhcigpOwotICAgIG1Vbmlmb3Jtcy5jbGVhcigpOwotICAgIG1JbnRlcmZhY2VC
bG9ja3MuY2xlYXIoKTsKLSAgICBtQWN0aXZlT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7CiAgICAg
aWYgKG1TaGFkZXJJRCAhPSAwKQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRlU2hh
ZGVyKG1TaGFkZXJJRCk7CiAgICAgICAgIG1TaGFkZXJJRCA9IDA7CiAgICAgfQogCi0gICAgLy8g
VHJhbnNsYXRlIHRoZSBFU1NMIGludG8gR0xTTAotICAgIENvbXBpbGVyR0wgKmNvbXBpbGVyR0wg
PSBHZXRJbXBsQXM8Q29tcGlsZXJHTD4oY29tcGlsZXIpOwotICAgIFNoSGFuZGxlIGNvbXBpbGVy
SGFuZGxlID0gY29tcGlsZXJHTC0+Z2V0Q29tcGlsZXJIYW5kbGUobVR5cGUpOworICAgICpzb3Vy
Y2VTdHJlYW0gPDwgbURhdGEuZ2V0U291cmNlKCk7CiAKLSAgICBpbnQgY29tcGlsZU9wdGlvbnMg
PSAoU0hfT0JKRUNUX0NPREUgfCBTSF9WQVJJQUJMRVMpOwotICAgIGNvbnN0IGNoYXIqIHNvdXJj
ZUNTdHJpbmcgPSBzb3VyY2UuY19zdHIoKTsKLSAgICBpZiAoIVNoQ29tcGlsZShjb21waWxlckhh
bmRsZSwgJnNvdXJjZUNTdHJpbmcsIDEsIGNvbXBpbGVPcHRpb25zKSkKKyAgICBpbnQgb3B0aW9u
cyA9IFNIX0lOSVRfR0xfUE9TSVRJT047CisKKyAgICBpZiAobVdvcmthcm91bmRzLmRvV2hpbGVH
TFNMQ2F1c2VzR1BVSGFuZykKICAgICB7Ci0gICAgICAgIG1JbmZvTG9nID0gU2hHZXRJbmZvTG9n
KGNvbXBpbGVySGFuZGxlKTsKLSAgICAgICAgVFJBQ0UoIlxuJXMiLCBtSW5mb0xvZy5jX3N0cigp
KTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBvcHRpb25zIHw9IFNIX1JFV1JJVEVf
RE9fV0hJTEVfTE9PUFM7CiAgICAgfQogCi0gICAgbVRyYW5zbGF0ZWRTb3VyY2UgPSBTaEdldE9i
amVjdENvZGUoY29tcGlsZXJIYW5kbGUpOwotICAgIGNvbnN0IGNoYXIqIHRyYW5zbGF0ZWRTb3Vy
Y2VDU3RyaW5nID0gbVRyYW5zbGF0ZWRTb3VyY2UuY19zdHIoKTsKKyAgICByZXR1cm4gb3B0aW9u
czsKK30KIAorYm9vbCBTaGFkZXJHTDo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVy
ICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cpCit7CisgICAgLy8gVHJhbnNsYXRlIHRo
ZSBFU1NMIGludG8gR0xTTAorICAgIGNvbnN0IGNoYXIgKnRyYW5zbGF0ZWRTb3VyY2VDU3RyaW5n
ID0gbURhdGEuZ2V0VHJhbnNsYXRlZFNvdXJjZSgpLmNfc3RyKCk7CisKICAgICAvLyBHZW5lcmF0
ZSBhIHNoYWRlciBvYmplY3QgYW5kIHNldCB0aGUgc291cmNlCi0gICAgbVNoYWRlcklEID0gbUZ1
bmN0aW9ucy0+Y3JlYXRlU2hhZGVyKG1UeXBlKTsKKyAgICBtU2hhZGVySUQgPSBtRnVuY3Rpb25z
LT5jcmVhdGVTaGFkZXIobURhdGEuZ2V0U2hhZGVyVHlwZSgpKTsKICAgICBtRnVuY3Rpb25zLT5z
aGFkZXJTb3VyY2UobVNoYWRlcklELCAxLCAmdHJhbnNsYXRlZFNvdXJjZUNTdHJpbmcsIG51bGxw
dHIpOwogICAgIG1GdW5jdGlvbnMtPmNvbXBpbGVTaGFkZXIobVNoYWRlcklEKTsKIAogICAgIC8v
IENoZWNrIGZvciBjb21waWxlIGVycm9ycyBmcm9tIHRoZSBuYXRpdmUgZHJpdmVyCiAgICAgR0xp
bnQgY29tcGlsZVN0YXR1cyA9IEdMX0ZBTFNFOwogICAgIG1GdW5jdGlvbnMtPmdldFNoYWRlcml2
KG1TaGFkZXJJRCwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlU3RhdHVzKTsKLSAgICBBU1NF
UlQoY29tcGlsZVN0YXR1cyA9PSBHTF9UUlVFKTsKICAgICBpZiAoY29tcGlsZVN0YXR1cyA9PSBH
TF9GQUxTRSkKICAgICB7CiAgICAgICAgIC8vIENvbXBpbGF0aW9uIGZhaWxlZCwgcHV0IHRoZSBl
cnJvciBpbnRvIHRoZSBpbmZvIGxvZwogICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoID0gMDsK
ICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0U2hhZGVyaXYobVNoYWRlcklELCBHTF9JTkZPX0xPR19M
RU5HVEgsICZpbmZvTG9nTGVuZ3RoKTsKIAotICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiBidWYo
aW5mb0xvZ0xlbmd0aCk7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmdldFNoYWRlckluZm9Mb2cobVNo
YWRlcklELCBpbmZvTG9nTGVuZ3RoLCBudWxscHRyLCAmYnVmWzBdKTsKKyAgICAgICAgLy8gSW5m
byBsb2cgbGVuZ3RoIGluY2x1ZGVzIHRoZSBudWxsIHRlcm1pbmF0b3IsIHNvIDEgbWVhbnMgdGhh
dCB0aGUgaW5mbyBsb2cgaXMgYW4gZW1wdHkKKyAgICAgICAgLy8gc3RyaW5nLgorICAgICAgICBp
ZiAoaW5mb0xvZ0xlbmd0aCA+IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6dmVjdG9y
PGNoYXI+IGJ1ZihpbmZvTG9nTGVuZ3RoKTsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmdldFNo
YWRlckluZm9Mb2cobVNoYWRlcklELCBpbmZvTG9nTGVuZ3RoLCBudWxscHRyLCAmYnVmWzBdKTsK
IAotICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVTaGFkZXIobVNoYWRlcklEKTsKLSAgICAgICAg
bVNoYWRlcklEID0gMDsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVNoYWRlcihtU2hh
ZGVySUQpOworICAgICAgICAgICAgbVNoYWRlcklEID0gMDsKIAotICAgICAgICBtSW5mb0xvZyA9
ICZidWZbMF07Ci0gICAgICAgIFRSQUNFKCJcbiVzIiwgbUluZm9Mb2cuY19zdHIoKSk7CisgICAg
ICAgICAgICAqaW5mb0xvZyA9ICZidWZbMF07CisgICAgICAgICAgICBUUkFDRSgiXG4lcyIsIGlu
Zm9Mb2ctPmNfc3RyKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgVFJBQ0UoIlxuU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRoIG5vIGluZm8g
bG9nLiIpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAv
LyBHYXRoZXIgdGhlIHNoYWRlciBpbmZvcm1hdGlvbgotICAgIC8vIFRPRE86IHJlZmFjdG9yIHRo
aXMgb3V0LCBnYXRoZXJpbmcgb2YgdGhlIGF0dHJpYnV0ZXMsIHZhcnlpbmdzIGFuZCBvdXRwdXRz
IHNob3VsZCBiZSBkb25lCi0gICAgLy8gYXQgdGhlIGdsOjpTaGFkZXIgbGV2ZWwKLSAgICBpZiAo
bVR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICB7Ci0gICAgICAgIG1BY3RpdmVBdHRyaWJ1
dGVzID0gR2V0RmlsdGVyZWRTaGFkZXJWYXJpYWJsZXMoU2hHZXRBdHRyaWJ1dGVzKGNvbXBpbGVy
SGFuZGxlKSk7Ci0gICAgfQotCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICZ2
YXJ5aW5ncyA9IEdldFNoYWRlclZhcmlhYmxlcyhTaEdldFZhcnlpbmdzKGNvbXBpbGVySGFuZGxl
KSk7Ci0gICAgZm9yIChzaXplX3QgdmFyeWluZ0luZGV4ID0gMDsgdmFyeWluZ0luZGV4IDwgdmFy
eWluZ3Muc2l6ZSgpOyB2YXJ5aW5nSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIG1WYXJ5aW5ncy5w
dXNoX2JhY2soZ2w6OlBhY2tlZFZhcnlpbmcodmFyeWluZ3NbdmFyeWluZ0luZGV4XSkpOwotICAg
IH0KLQotICAgIG1Vbmlmb3JtcyA9IEdldFNoYWRlclZhcmlhYmxlcyhTaEdldFVuaWZvcm1zKGNv
bXBpbGVySGFuZGxlKSk7Ci0gICAgbUludGVyZmFjZUJsb2NrcyA9IEdldFNoYWRlclZhcmlhYmxl
cyhTaEdldEludGVyZmFjZUJsb2Nrcyhjb21waWxlckhhbmRsZSkpOwotCi0gICAgaWYgKG1UeXBl
ID09IEdMX0ZSQUdNRU5UX1NIQURFUikKLSAgICB7Ci0gICAgICAgIG1BY3RpdmVPdXRwdXRWYXJp
YWJsZXMgPSBHZXRGaWx0ZXJlZFNoYWRlclZhcmlhYmxlcyhTaEdldE91dHB1dFZhcmlhYmxlcyhj
b21waWxlckhhbmRsZSkpOwotICAgIH0KLQogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvU2hhZGVyR0wuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzLDI0ICsxMywyOSBAQAogCiBuYW1lc3BhY2UgcngKIHsKLQogY2xhc3MgRnVuY3Rp
b25zR0w7CitzdHJ1Y3QgV29ya2Fyb3VuZHNHTDsKIAogY2xhc3MgU2hhZGVyR0wgOiBwdWJsaWMg
U2hhZGVySW1wbAogewogICBwdWJsaWM6Ci0gICAgU2hhZGVyR0woR0xlbnVtIHR5cGUsIGNvbnN0
IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpOworICAgIFNoYWRlckdMKGNvbnN0IGdsOjpTaGFkZXI6
OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywK
KyAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcyk7CiAgICAgflNo
YWRlckdMKCkgb3ZlcnJpZGU7CiAKLSAgICBib29sIGNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21w
aWxlciwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSkgb3ZlcnJpZGU7CisgICAgLy8gU2hhZGVy
SW1wbCBpbXBsZW1lbnRhdGlvbgorICAgIGludCBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9u
cyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0
cmluZyAqaW5mb0xvZykgb3ZlcnJpZGU7CiAgICAgc3RkOjpzdHJpbmcgZ2V0RGVidWdJbmZvKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBHTHVpbnQgZ2V0U2hhZGVySUQoKSBjb25zdDsKIAogICBw
cml2YXRlOgogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOworICAgIGNvbnN0IFdv
cmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKIAotICAgIEdMZW51bSBtVHlwZTsKICAgICBHTHVp
bnQgbVNoYWRlcklEOwogfTsKIApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2Vy
R0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04LDI4ICs4LDU4IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1h
bmFnZXJHTC5oIgogCisjaW5jbHVkZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvRGF0YS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9WZXJ0ZXhBcnJheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1F1ZXJ5LmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
RnVuY3Rpb25zR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TYW1wbGVyR0wuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L1F1ZXJ5R0wuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKK3N0YXRpYyBjb25zdCBHTGVudW0gUXVl
cnlUeXBlc1tdID0ge0dMX0FOWV9TQU1QTEVTX1BBU1NFRCwgR0xfQU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RS
QU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4sIEdMX1RJTUVfRUxBUFNFRH07CisK
K1N0YXRlTWFuYWdlckdMOjpJbmRleGVkQnVmZmVyQmluZGluZzo6SW5kZXhlZEJ1ZmZlckJpbmRp
bmcoKSA6IG9mZnNldCgwKSwgc2l6ZSgwKSwgYnVmZmVyKDApCit7Cit9CisKIFN0YXRlTWFuYWdl
ckdMOjpTdGF0ZU1hbmFnZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBjb25zdCBn
bDo6Q2FwcyAmcmVuZGVyZXJDYXBzKQogICAgIDogbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAogICAg
ICAgbVByb2dyYW0oMCksCiAgICAgICBtVkFPKDApLAorICAgICAgbVZlcnRleEF0dHJpYkN1cnJl
bnRWYWx1ZXMocmVuZGVyZXJDYXBzLm1heFZlcnRleEF0dHJpYnV0ZXMpLAogICAgICAgbUJ1ZmZl
cnMoKSwKKyAgICAgIG1JbmRleGVkQnVmZmVycygpLAogICAgICAgbVRleHR1cmVVbml0SW5kZXgo
MCksCiAgICAgICBtVGV4dHVyZXMoKSwKKyAgICAgIG1TYW1wbGVycyhyZW5kZXJlckNhcHMubWF4
Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cywgMCksCisgICAgICBtVHJhbnNmb3JtRmVlZGJhY2so
MCksCisgICAgICBtUXVlcmllcygpLAorICAgICAgbVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2so
bnVsbHB0ciksCisgICAgICBtQ3VycmVudFF1ZXJpZXMoKSwKKyAgICAgIG1QcmV2RHJhd0NvbnRl
eHQoMCksCiAgICAgICBtVW5wYWNrQWxpZ25tZW50KDQpLAogICAgICAgbVVucGFja1Jvd0xlbmd0
aCgwKSwKLSAgICAgIG1GcmFtZWJ1ZmZlcnMoKSwKKyAgICAgIG1VbnBhY2tTa2lwUm93cygwKSwK
KyAgICAgIG1VbnBhY2tTa2lwUGl4ZWxzKDApLAorICAgICAgbVVucGFja0ltYWdlSGVpZ2h0KDAp
LAorICAgICAgbVVucGFja1NraXBJbWFnZXMoMCksCisgICAgICBtUGFja0FsaWdubWVudCg0KSwK
KyAgICAgIG1QYWNrUm93TGVuZ3RoKDApLAorICAgICAgbVBhY2tTa2lwUm93cygwKSwKKyAgICAg
IG1QYWNrU2tpcFBpeGVscygwKSwKKyAgICAgIG1GcmFtZWJ1ZmZlcnMoYW5nbGU6OkZyYW1lYnVm
ZmVyQmluZGluZ1NpbmdsZXRvbk1heCwgMCksCiAgICAgICBtUmVuZGVyYnVmZmVyKDApLAogICAg
ICAgbVNjaXNzb3JUZXN0RW5hYmxlZChmYWxzZSksCiAgICAgICBtU2Npc3NvcigwLCAwLCAwLCAw
KSwKQEAgLTc0LDEzICsxMDQsMTUgQEAKICAgICAgIG1Qb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQo
ZmFsc2UpLAogICAgICAgbVBvbHlnb25PZmZzZXRGYWN0b3IoMC4wZiksCiAgICAgICBtUG9seWdv
bk9mZnNldFVuaXRzKDAuMGYpLAotICAgICAgbU11bHRpc2FtcGxlRW5hYmxlZCh0cnVlKSwKICAg
ICAgIG1SYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoZmFsc2UpLAogICAgICAgbUxpbmVXaWR0aCgx
LjBmKSwKICAgICAgIG1QcmltaXRpdmVSZXN0YXJ0RW5hYmxlZChmYWxzZSksCiAgICAgICBtQ2xl
YXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKSwKICAgICAgIG1DbGVhckRlcHRoKDEuMGYp
LAotICAgICAgbUNsZWFyU3RlbmNpbCgwKQorICAgICAgbUNsZWFyU3RlbmNpbCgwKSwKKyAgICAg
IG1GcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGZhbHNlKSwKKyAgICAgIG1UZXh0dXJlQ3ViZW1hcFNl
YW1sZXNzRW5hYmxlZChmYWxzZSksCisgICAgICBtTG9jYWxEaXJ0eUJpdHMoKQogewogICAgIEFT
U0VSVChtRnVuY3Rpb25zKTsKIApAQCAtODksMjQgKzEyMSwyMDMgQEAKICAgICBtVGV4dHVyZXNb
R0xfVEVYVFVSRV8yRF9BUlJBWV0ucmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhDb21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzKTsKICAgICBtVGV4dHVyZXNbR0xfVEVYVFVSRV8zRF0ucmVzaXplKHJlbmRl
cmVyQ2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKIAotICAgIG1GcmFtZWJ1ZmZl
cnNbR0xfUkVBRF9GUkFNRUJVRkZFUl0gPSAwOwotICAgIG1GcmFtZWJ1ZmZlcnNbR0xfRFJBV19G
UkFNRUJVRkZFUl0gPSAwOworICAgIG1JbmRleGVkQnVmZmVyc1tHTF9VTklGT1JNX0JVRkZFUl0u
cmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhDb21iaW5lZFVuaWZvcm1CbG9ja3MpOworCisgICAgZm9y
IChHTGVudW0gcXVlcnlUeXBlIDogUXVlcnlUeXBlcykKKyAgICB7CisgICAgICAgIG1RdWVyaWVz
W3F1ZXJ5VHlwZV0gPSAwOworICAgIH0KKworICAgIC8vIEluaXRpYWxpemUgcG9pbnQgc3ByaXRl
IHN0YXRlIGZvciBkZXNrdG9wIEdMCisgICAgaWYgKG1GdW5jdGlvbnMtPnN0YW5kYXJkID09IFNU
QU5EQVJEX0dMX0RFU0tUT1ApCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT5lbmFibGUoR0xf
UFJPR1JBTV9QT0lOVF9TSVpFKTsKKworICAgICAgICAvLyBHTF9QT0lOVF9TUFJJVEUgd2FzIGRl
cHJlY2F0ZWQgaW4gdGhlIGNvcmUgcHJvZmlsZS4gUG9pbnQgcmFzdGVyaXphdGlvbiBpcyBhbHdh
eXMKKyAgICAgICAgLy8gcGVyZm9ybWVkCisgICAgICAgIC8vIGFzIHRob3VnaCBQT0lOVF9TUFJJ
VEUgd2VyZSBlbmFibGVkLgorICAgICAgICBpZiAoKG1GdW5jdGlvbnMtPnByb2ZpbGUgJiBHTF9D
T05URVhUX0NPUkVfUFJPRklMRV9CSVQpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1G
dW5jdGlvbnMtPmVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOworICAgICAgICB9CisgICAgfQogfQog
Cit2b2lkIFN0YXRlTWFuYWdlckdMOjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQorewor
ICAgIGlmIChwcm9ncmFtICE9IDApCisgICAgeworICAgICAgICBpZiAobVByb2dyYW0gPT0gcHJv
Z3JhbSkKKyAgICAgICAgeworICAgICAgICAgICAgdXNlUHJvZ3JhbSgwKTsKKyAgICAgICAgfQor
CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CisgICAgfQorfQor
Cit2b2lkIFN0YXRlTWFuYWdlckdMOjpkZWxldGVWZXJ0ZXhBcnJheShHTHVpbnQgdmFvKQorewor
ICAgIGlmICh2YW8gIT0gMCkKKyAgICB7CisgICAgICAgIGlmIChtVkFPID09IHZhbykKKyAgICAg
ICAgeworICAgICAgICAgICAgYmluZFZlcnRleEFycmF5KDAsIDApOworICAgICAgICB9CisKKyAg
ICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRlVmVydGV4QXJyYXlzKDEsICZ2YW8pOworICAgIH0KK30K
Kwordm9pZCBTdGF0ZU1hbmFnZXJHTDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sK
KyAgICBpZiAodGV4dHVyZSAhPSAwKQorICAgIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZ0
ZXh0dXJlVHlwZUl0ZXIgOiBtVGV4dHVyZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPEdMdWludD4gJnRleHR1cmVWZWN0b3IgPSB0ZXh0dXJlVHlwZUl0ZXIuc2Vj
b25kOworICAgICAgICAgICAgZm9yIChzaXplX3QgdGV4dHVyZVVuaXRJbmRleCA9IDA7IHRleHR1
cmVVbml0SW5kZXggPCB0ZXh0dXJlVmVjdG9yLnNpemUoKTsgdGV4dHVyZVVuaXRJbmRleCsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh0ZXh0dXJlVmVjdG9yW3RleHR1cmVV
bml0SW5kZXhdID09IHRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBhY3RpdmVUZXh0dXJlKHRleHR1cmVVbml0SW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICBiaW5kVGV4dHVyZSh0ZXh0dXJlVHlwZUl0ZXIuZmlyc3QsIDApOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0
ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6
OmRlbGV0ZVNhbXBsZXIoR0x1aW50IHNhbXBsZXIpCit7CisgICAgaWYgKHNhbXBsZXIgIT0gMCkK
KyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IHVuaXQgPSAwOyB1bml0IDwgbVNhbXBsZXJzLnNp
emUoKTsgdW5pdCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVNhbXBsZXJzW3VuaXRd
ID09IHNhbXBsZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYmluZFNhbXBsZXIo
dW5pdCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtRnVuY3Rpb25z
LT5kZWxldGVTYW1wbGVycygxLCAmc2FtcGxlcik7CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFu
YWdlckdMOjpkZWxldGVCdWZmZXIoR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBpZiAoYnVmZmVyICE9
IDApCisgICAgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmJ1ZmZlclR5cGVJdGVyIDogbUJ1
ZmZlcnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJUeXBlSXRlci5zZWNvbmQg
PT0gYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJpbmRCdWZmZXIoYnVm
ZmVyVHlwZUl0ZXIuZmlyc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvICZidWZmZXJUeXBlSXRlciA6IG1JbmRleGVkQnVmZmVycykKKyAg
ICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgYmluZEluZGV4ID0gMDsgYmluZEluZGV4
IDwgYnVmZmVyVHlwZUl0ZXIuc2Vjb25kLnNpemUoKTsgYmluZEluZGV4KyspCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclR5cGVJdGVyLnNlY29uZFtiaW5kSW5kZXhd
LmJ1ZmZlciA9PSBidWZmZXIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBiaW5kQnVmZmVyQmFzZShidWZmZXJUeXBlSXRlci5maXJzdCwgYmluZEluZGV4LCAwKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtRnVu
Y3Rpb25zLT5kZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOworICAgIH0KK30KKwordm9pZCBTdGF0
ZU1hbmFnZXJHTDo6ZGVsZXRlRnJhbWVidWZmZXIoR0x1aW50IGZibykKK3sKKyAgICBpZiAoZmJv
ICE9IDApCisgICAgeworICAgICAgICBmb3IgKHNpemVfdCBiaW5kaW5nID0gMDsgYmluZGluZyA8
IG1GcmFtZWJ1ZmZlcnMuc2l6ZSgpOyArK2JpbmRpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChtRnJhbWVidWZmZXJzW2JpbmRpbmddID09IGZibykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBHTGVudW0gZW51bVZhbHVlID0gYW5nbGU6OkZyYW1lYnVmZmVyQmluZGluZ1Rv
RW51bSgKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8YW5nbGU6OkZyYW1lYnVmZmVy
QmluZGluZz4oYmluZGluZykpOworICAgICAgICAgICAgICAgIGJpbmRGcmFtZWJ1ZmZlcihlbnVt
VmFsdWUsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRl
RnJhbWVidWZmZXJzKDEsICZmYm8pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN0YXRl
TWFuYWdlckdMOjpkZWxldGVSZW5kZXJidWZmZXIoR0x1aW50IHJibykKK3sKKyAgICBpZiAocmJv
ICE9IDApCisgICAgeworICAgICAgICBpZiAobVJlbmRlcmJ1ZmZlciA9PSByYm8pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJi
byk7CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjpkZWxldGVUcmFuc2Zvcm1GZWVk
YmFjayhHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spCit7CisgICAgaWYgKHRyYW5zZm9ybUZlZWRi
YWNrICE9IDApCisgICAgeworICAgICAgICBpZiAobVRyYW5zZm9ybUZlZWRiYWNrID09IHRyYW5z
Zm9ybUZlZWRiYWNrKQorICAgICAgICB7CisgICAgICAgICAgICBiaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICht
UHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjayAhPSBudWxscHRyICYmCisgICAgICAgICAgICBtUHJl
dkRyYXdUcmFuc2Zvcm1GZWVkYmFjay0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tJRCgpID09IHRyYW5z
Zm9ybUZlZWRiYWNrKQorICAgICAgICB7CisgICAgICAgICAgICBtUHJldkRyYXdUcmFuc2Zvcm1G
ZWVkYmFjayA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICBtRnVuY3Rpb25zLT5kZWxl
dGVUcmFuc2Zvcm1GZWVkYmFja3MoMSwgJnRyYW5zZm9ybUZlZWRiYWNrKTsKKyAgICB9Cit9CisK
K3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OmRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVyeSkKK3sKKyAgICBp
ZiAocXVlcnkgIT0gMCkKKyAgICB7CisgICAgICAgIGZvciAoYXV0byAmYWN0aXZlUXVlcnkgOiBt
UXVlcmllcykKKyAgICAgICAgeworICAgICAgICAgICAgR0x1aW50IGFjdGl2ZVF1ZXJ5SUQgPSBh
Y3RpdmVRdWVyeS5zZWNvbmQ7CisgICAgICAgICAgICBpZiAoYWN0aXZlUXVlcnlJRCA9PSBxdWVy
eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSA9IGFjdGl2ZVF1
ZXJ5LmZpcnN0OworICAgICAgICAgICAgICAgIGVuZFF1ZXJ5KHR5cGUsIHF1ZXJ5KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBTdGF0ZU1hbmFnZXJHTDo6dXNl
UHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKIHsKICAgICBpZiAobVByb2dyYW0gIT0gcHJvZ3JhbSkK
ICAgICB7Ci0gICAgICAgIG1Qcm9ncmFtID0gcHJvZ3JhbTsKLSAgICAgICAgbUZ1bmN0aW9ucy0+
dXNlUHJvZ3JhbShtUHJvZ3JhbSk7CisgICAgICAgIGZvcmNlVXNlUHJvZ3JhbShwcm9ncmFtKTsK
ICAgICB9CiB9CiAKLXZvaWQgU3RhdGVNYW5hZ2VyR0w6OmJpbmRWZXJ0ZXhBcnJheShHTHVpbnQg
dmFvKQordm9pZCBTdGF0ZU1hbmFnZXJHTDo6Zm9yY2VVc2VQcm9ncmFtKEdMdWludCBwcm9ncmFt
KQogeworICAgIG1Qcm9ncmFtID0gcHJvZ3JhbTsKKyAgICBtRnVuY3Rpb25zLT51c2VQcm9ncmFt
KG1Qcm9ncmFtKTsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXJHTDo6YmluZFZlcnRleEFycmF5KEdM
dWludCB2YW8sIEdMdWludCBlbGVtZW50QXJyYXlCdWZmZXIpCit7CiAgICAgaWYgKG1WQU8gIT0g
dmFvKQogICAgIHsKICAgICAgICAgbVZBTyA9IHZhbzsKKyAgICAgICAgbUJ1ZmZlcnNbR0xfRUxF
TUVOVF9BUlJBWV9CVUZGRVJdID0gZWxlbWVudEFycmF5QnVmZmVyOwogICAgICAgICBtRnVuY3Rp
b25zLT5iaW5kVmVydGV4QXJyYXkodmFvKTsKICAgICB9CiB9CkBAIC0xMjAsMTIgKzMzMSw0MSBA
QAogICAgIH0KIH0KIAordm9pZCBTdGF0ZU1hbmFnZXJHTDo6YmluZEJ1ZmZlckJhc2UoR0xlbnVt
IHR5cGUsIHNpemVfdCBpbmRleCwgR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBhdXRvICZiaW5kaW5n
ID0gbUluZGV4ZWRCdWZmZXJzW3R5cGVdW2luZGV4XTsKKyAgICBpZiAoYmluZGluZy5idWZmZXIg
IT0gYnVmZmVyIHx8IGJpbmRpbmcub2Zmc2V0ICE9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8
CisgICAgICAgIGJpbmRpbmcuc2l6ZSAhPSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkKKyAgICB7
CisgICAgICAgIGJpbmRpbmcuYnVmZmVyID0gYnVmZmVyOworICAgICAgICBiaW5kaW5nLm9mZnNl
dCA9IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpOworICAgICAgICBiaW5kaW5nLnNpemUgPSBzdGF0
aWNfY2FzdDxzaXplX3Q+KC0xKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+YmluZEJ1ZmZlckJhc2Uo
dHlwZSwgc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCksIGJ1ZmZlcik7CisgICAgfQorfQorCit2
b2lkIFN0YXRlTWFuYWdlckdMOjpiaW5kQnVmZmVyUmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSkKK3sKKyAgICBhdXRvICZiaW5kaW5nID0gbUlu
ZGV4ZWRCdWZmZXJzW3R5cGVdW2luZGV4XTsKKyAgICBpZiAoYmluZGluZy5idWZmZXIgIT0gYnVm
ZmVyIHx8IGJpbmRpbmcub2Zmc2V0ICE9IG9mZnNldCB8fCBiaW5kaW5nLnNpemUgIT0gc2l6ZSkK
KyAgICB7CisgICAgICAgIGJpbmRpbmcuYnVmZmVyID0gYnVmZmVyOworICAgICAgICBiaW5kaW5n
Lm9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgYmluZGluZy5zaXplID0gc2l6ZTsKKyAgICAgICAg
bUZ1bmN0aW9ucy0+YmluZEJ1ZmZlclJhbmdlKHR5cGUsIHN0YXRpY19jYXN0PEdMdWludD4oaW5k
ZXgpLCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7CisgICAgfQorfQorCiB2b2lkIFN0YXRlTWFuYWdl
ckdMOjphY3RpdmVUZXh0dXJlKHNpemVfdCB1bml0KQogewogICAgIGlmIChtVGV4dHVyZVVuaXRJ
bmRleCAhPSB1bml0KQogICAgIHsKICAgICAgICAgbVRleHR1cmVVbml0SW5kZXggPSB1bml0Owot
ICAgICAgICBtRnVuY3Rpb25zLT5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwICsgbVRleHR1cmVV
bml0SW5kZXgpOworICAgICAgICBtRnVuY3Rpb25zLT5hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
ICsgc3RhdGljX2Nhc3Q8R0xlbnVtPihtVGV4dHVyZVVuaXRJbmRleCkpOwogICAgIH0KIH0KIApA
QCAtMTM4LDM4ICszNzgsMTU3IEBACiAgICAgfQogfQogCi12b2lkIFN0YXRlTWFuYWdlckdMOjpz
ZXRQaXhlbFVucGFja1N0YXRlKEdMaW50IGFsaWdubWVudCwgR0xpbnQgcm93TGVuZ3RoKQordm9p
ZCBTdGF0ZU1hbmFnZXJHTDo6YmluZFNhbXBsZXIoc2l6ZV90IHVuaXQsIEdMdWludCBzYW1wbGVy
KQogeworICAgIGlmIChtU2FtcGxlcnNbdW5pdF0gIT0gc2FtcGxlcikKKyAgICB7CisgICAgICAg
IG1TYW1wbGVyc1t1bml0XSA9IHNhbXBsZXI7CisgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRTYW1w
bGVyKHN0YXRpY19jYXN0PEdMdWludD4odW5pdCksIHNhbXBsZXIpOworICAgIH0KK30KKwordm9p
ZCBTdGF0ZU1hbmFnZXJHTDo6c2V0UGl4ZWxVbnBhY2tTdGF0ZShjb25zdCBnbDo6UGl4ZWxVbnBh
Y2tTdGF0ZSAmdW5wYWNrKQoreworICAgIEdMdWludCB1bnBhY2tCdWZmZXJJRCAgICAgICAgICA9
IDA7CisgICAgY29uc3QgZ2w6OkJ1ZmZlciAqdW5wYWNrQnVmZmVyID0gdW5wYWNrLnBpeGVsQnVm
ZmVyLmdldCgpOworICAgIGlmICh1bnBhY2tCdWZmZXIgIT0gbnVsbHB0cikKKyAgICB7CisgICAg
ICAgIHVucGFja0J1ZmZlcklEID0gR2V0SW1wbEFzPEJ1ZmZlckdMPih1bnBhY2tCdWZmZXIpLT5n
ZXRCdWZmZXJJRCgpOworICAgIH0KKyAgICBzZXRQaXhlbFVucGFja1N0YXRlKHVucGFjay5hbGln
bm1lbnQsIHVucGFjay5yb3dMZW5ndGgsIHVucGFjay5za2lwUm93cywgdW5wYWNrLnNraXBQaXhl
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2suaW1hZ2VIZWlnaHQsIHVucGFjay5z
a2lwSW1hZ2VzLCB1bnBhY2tCdWZmZXJJRCk7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNl
dFBpeGVsVW5wYWNrU3RhdGUoR0xpbnQgYWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCByb3dMZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNraXBSb3dzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBza2lwUGl4ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbWFnZUhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcEltYWdlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHVucGFja0J1ZmZlcikKK3sK
ICAgICBpZiAobVVucGFja0FsaWdubWVudCAhPSBhbGlnbm1lbnQpCiAgICAgewogICAgICAgICBt
VW5wYWNrQWxpZ25tZW50ID0gYWxpZ25tZW50OwogICAgICAgICBtRnVuY3Rpb25zLT5waXhlbFN0
b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCBtVW5wYWNrQWxpZ25tZW50KTsKKworICAgICAgICBt
TG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1VOUEFDS19BTElHTk1FTlQp
OwogICAgIH0KIAogICAgIGlmIChtVW5wYWNrUm93TGVuZ3RoICE9IHJvd0xlbmd0aCkKICAgICB7
CiAgICAgICAgIG1VbnBhY2tSb3dMZW5ndGggPSByb3dMZW5ndGg7CiAgICAgICAgIG1GdW5jdGlv
bnMtPnBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCBtVW5wYWNrUm93TGVuZ3RoKTsK
KworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1VOUEFD
S19ST1dfTEVOR1RIKTsKICAgICB9CisKKyAgICBpZiAobVVucGFja1NraXBSb3dzICE9IHNraXBS
b3dzKQorICAgIHsKKyAgICAgICAgbVVucGFja1NraXBSb3dzID0gc2tpcFJvd3M7CisgICAgICAg
IG1GdW5jdGlvbnMtPnBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1MsIG1VbnBhY2tTa2lw
Um93cyk7CisKKyAgICAgICAgLy8gVE9ETzogc2V0IGRpcnR5IGJpdCBvbmNlIG9uZSBleGlzdHMK
KyAgICB9CisKKyAgICBpZiAobVVucGFja1NraXBQaXhlbHMgIT0gc2tpcFBpeGVscykKKyAgICB7
CisgICAgICAgIG1VbnBhY2tTa2lwUGl4ZWxzID0gc2tpcFBpeGVsczsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+cGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCBtVW5wYWNrU2tpcFBpeGVs
cyk7CisKKyAgICAgICAgLy8gVE9ETzogc2V0IGRpcnR5IGJpdCBvbmNlIG9uZSBleGlzdHMKKyAg
ICB9CisKKyAgICBpZiAobVVucGFja0ltYWdlSGVpZ2h0ICE9IGltYWdlSGVpZ2h0KQorICAgIHsK
KyAgICAgICAgbVVucGFja0ltYWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQ7CisgICAgICAgIG1GdW5j
dGlvbnMtPnBpeGVsU3RvcmVpKEdMX1VOUEFDS19JTUFHRV9IRUlHSFQsIG1VbnBhY2tJbWFnZUhl
aWdodCk7CisKKyAgICAgICAgLy8gVE9ETzogc2V0IGRpcnR5IGJpdCBvbmNlIG9uZSBleGlzdHMK
KyAgICB9CisKKyAgICBpZiAobVVucGFja1NraXBJbWFnZXMgIT0gc2tpcEltYWdlcykKKyAgICB7
CisgICAgICAgIG1VbnBhY2tTa2lwSW1hZ2VzID0gc2tpcEltYWdlczsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+cGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfSU1BR0VTLCBtVW5wYWNrU2tpcEltYWdl
cyk7CisKKyAgICAgICAgLy8gVE9ETzogc2V0IGRpcnR5IGJpdCBvbmNlIG9uZSBleGlzdHMKKyAg
ICB9CisKKyAgICBiaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHVucGFja0J1ZmZl
cik7CiB9CiAKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFBpeGVsUGFja1N0YXRlKGNvbnN0IGds
OjpQaXhlbFBhY2tTdGF0ZSAmcGFjaykKK3sKKyAgICBHTHVpbnQgcGFja0J1ZmZlcklEICAgICAg
ICAgID0gMDsKKyAgICBjb25zdCBnbDo6QnVmZmVyICpwYWNrQnVmZmVyID0gcGFjay5waXhlbEJ1
ZmZlci5nZXQoKTsKKyAgICBpZiAocGFja0J1ZmZlciAhPSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgcGFja0J1ZmZlcklEID0gR2V0SW1wbEFzPEJ1ZmZlckdMPihwYWNrQnVmZmVyKS0+Z2V0QnVm
ZmVySUQoKTsKKyAgICB9CisgICAgc2V0UGl4ZWxQYWNrU3RhdGUocGFjay5hbGlnbm1lbnQsIHBh
Y2sucm93TGVuZ3RoLCBwYWNrLnNraXBSb3dzLCBwYWNrLnNraXBQaXhlbHMsIHBhY2tCdWZmZXJJ
RCk7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFBpeGVsUGFja1N0YXRlKEdMaW50IGFs
aWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJv
d0xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNr
aXBSb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tp
cFBpeGVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBw
YWNrQnVmZmVyKQoreworICAgIGlmIChtUGFja0FsaWdubWVudCAhPSBhbGlnbm1lbnQpCisgICAg
eworICAgICAgICBtUGFja0FsaWdubWVudCA9IGFsaWdubWVudDsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+cGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIG1QYWNrQWxpZ25tZW50KTsKKworICAg
ICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBQ0tfQUxJR05N
RU5UKTsKKyAgICB9CisKKyAgICBpZiAobVBhY2tSb3dMZW5ndGggIT0gcm93TGVuZ3RoKQorICAg
IHsKKyAgICAgICAgbVBhY2tSb3dMZW5ndGggPSByb3dMZW5ndGg7CisgICAgICAgIG1GdW5jdGlv
bnMtPnBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgbVBhY2tSb3dMZW5ndGgpOworCisg
ICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX1JP
V19MRU5HVEgpOworICAgIH0KKworICAgIGlmIChtUGFja1NraXBSb3dzICE9IHNraXBSb3dzKQor
ICAgIHsKKyAgICAgICAgbVBhY2tTa2lwUm93cyA9IHNraXBSb3dzOworICAgICAgICBtRnVuY3Rp
b25zLT5waXhlbFN0b3JlaShHTF9QQUNLX1NLSVBfUk9XUywgbVBhY2tTa2lwUm93cyk7CisKKyAg
ICAgICAgLy8gVE9ETzogc2V0IGRpcnR5IGJpdCBvbmNlIG9uZSBleGlzdHMKKyAgICB9CisKKyAg
ICBpZiAobVBhY2tTa2lwUGl4ZWxzICE9IHNraXBQaXhlbHMpCisgICAgeworICAgICAgICBtUGFj
a1NraXBQaXhlbHMgPSBza2lwUGl4ZWxzOworICAgICAgICBtRnVuY3Rpb25zLT5waXhlbFN0b3Jl
aShHTF9QQUNLX1NLSVBfUElYRUxTLCBtUGFja1NraXBQaXhlbHMpOworCisgICAgICAgIC8vIFRP
RE86IHNldCBkaXJ0eSBiaXQgb25jZSBvbmUgZXhpc3RzCisgICAgfQorCisgICAgYmluZEJ1ZmZl
cihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgcGFja0J1ZmZlcik7Cit9CisKIHZvaWQgU3RhdGVNYW5h
Z2VyR0w6OmJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50IGZyYW1lYnVmZmVyKQog
ewogICAgIGlmICh0eXBlID09IEdMX0ZSQU1FQlVGRkVSKQogICAgIHsKLSAgICAgICAgaWYgKG1G
cmFtZWJ1ZmZlcnNbR0xfUkVBRF9GUkFNRUJVRkZFUl0gIT0gZnJhbWVidWZmZXIgfHwKLSAgICAg
ICAgICAgIG1GcmFtZWJ1ZmZlcnNbR0xfRFJBV19GUkFNRUJVRkZFUl0gIT0gZnJhbWVidWZmZXIp
CisgICAgICAgIGlmIChtRnJhbWVidWZmZXJzW2FuZ2xlOjpGcmFtZWJ1ZmZlckJpbmRpbmdSZWFk
XSAhPSBmcmFtZWJ1ZmZlciB8fAorICAgICAgICAgICAgbUZyYW1lYnVmZmVyc1thbmdsZTo6RnJh
bWVidWZmZXJCaW5kaW5nRHJhd10gIT0gZnJhbWVidWZmZXIpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIG1GcmFtZWJ1ZmZlcnNbR0xfUkVBRF9GUkFNRUJVRkZFUl0gPSBmcmFtZWJ1ZmZlcjsKLSAg
ICAgICAgICAgIG1GcmFtZWJ1ZmZlcnNbR0xfRFJBV19GUkFNRUJVRkZFUl0gPSBmcmFtZWJ1ZmZl
cjsKKyAgICAgICAgICAgIG1GcmFtZWJ1ZmZlcnNbYW5nbGU6OkZyYW1lYnVmZmVyQmluZGluZ1Jl
YWRdID0gZnJhbWVidWZmZXI7CisgICAgICAgICAgICBtRnJhbWVidWZmZXJzW2FuZ2xlOjpGcmFt
ZWJ1ZmZlckJpbmRpbmdEcmF3XSA9IGZyYW1lYnVmZmVyOwogICAgICAgICAgICAgbUZ1bmN0aW9u
cy0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKG1GcmFtZWJ1ZmZlcnNbdHlw
ZV0gIT0gZnJhbWVidWZmZXIpCisgICAgICAgIGFuZ2xlOjpGcmFtZWJ1ZmZlckJpbmRpbmcgYmlu
ZGluZyA9IGFuZ2xlOjpFbnVtVG9GcmFtZWJ1ZmZlckJpbmRpbmcodHlwZSk7CisKKyAgICAgICAg
aWYgKG1GcmFtZWJ1ZmZlcnNbYmluZGluZ10gIT0gZnJhbWVidWZmZXIpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG1GcmFtZWJ1ZmZlcnNbdHlwZV0gPSBmcmFtZWJ1ZmZlcjsKKyAgICAgICAgICAg
IG1GcmFtZWJ1ZmZlcnNbYmluZGluZ10gPSBmcmFtZWJ1ZmZlcjsKICAgICAgICAgICAgIG1GdW5j
dGlvbnMtPmJpbmRGcmFtZWJ1ZmZlcih0eXBlLCBmcmFtZWJ1ZmZlcik7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xODUsMTA0ICs1NDQsMTg0IEBACiAgICAgfQogfQogCi12b2lkIFN0YXRlTWFuYWdl
ckdMOjpzZXRDbGVhclN0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMYml0ZmllbGQgbWFz
aykKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTGVudW0gdHlw
ZSwgR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrKQogewotICAgIC8vIE9ubHkgYXBwbHkgdGhlIHN0
YXRlIHJlcXVpcmVkIHRvIGRvIGEgY2xlYXIKLSAgICBjb25zdCBnbDo6UmFzdGVyaXplclN0YXRl
ICZyYXN0ZXJpemVyU3RhdGUgPSBzdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKLSAgICBzZXRS
YXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQocmFzdGVyaXplclN0YXRlLnJhc3Rlcml6ZXJEaXNjYXJk
KTsKLSAgICBpZiAoIXJhc3Rlcml6ZXJTdGF0ZS5yYXN0ZXJpemVyRGlzY2FyZCkKKyAgICBBU1NF
UlQodHlwZSA9PSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0spOworICAgIGlmIChtVHJhbnNmb3JtRmVl
ZGJhY2sgIT0gdHJhbnNmb3JtRmVlZGJhY2spCiAgICAgewotICAgICAgICBzZXRTY2lzc29yKHN0
YXRlLmdldFNjaXNzb3IoKSk7Ci0gICAgICAgIHNldFZpZXdwb3J0KHN0YXRlLmdldFZpZXdwb3J0
KCkpOwotCi0gICAgICAgIGlmICgobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpICE9IDApCisg
ICAgICAgIC8vIFBhdXNlIHRoZSBjdXJyZW50IHRyYW5zZm9ybSBmZWVkYmFjayBpZiBvbmUgaXMg
YWN0aXZlLgorICAgICAgICAvLyBUbyBoYW5kbGUgdmlydHVhbGl6ZWQgY29udGV4dHMsIFN0YXRl
TWFuYWdlckdMIG5lZWRzIHRvIGJlIGFibGUgdG8gYmluZCBhIG5ldyB0cmFuc2Zvcm0KKyAgICAg
ICAgLy8gZmVlZGJhY2sgYXQgYW55IHRpbWUsIGV2ZW4gaWYgdGhlcmUgaXMgb25lIGFjdGl2ZS4K
KyAgICAgICAgaWYgKG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrICE9IG51bGxwdHIgJiYKKyAg
ICAgICAgICAgIG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrLT5nZXRUcmFuc2Zvcm1GZWVkYmFj
a0lEKCkgIT0gdHJhbnNmb3JtRmVlZGJhY2spCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNldENs
ZWFyQ29sb3Ioc3RhdGUuZ2V0Q29sb3JDbGVhclZhbHVlKCkpOwotCi0gICAgICAgICAgICBjb25z
dCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSA9IHN0YXRlLmdldEJsZW5kU3RhdGUoKTsKLSAg
ICAgICAgICAgIHNldENvbG9yTWFzayhibGVuZFN0YXRlLmNvbG9yTWFza1JlZCwgYmxlbmRTdGF0
ZS5jb2xvck1hc2tHcmVlbiwgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlLCBibGVuZFN0YXRlLmNv
bG9yTWFza0FscGhhKTsKKyAgICAgICAgICAgIG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrLT5z
eW5jUGF1c2VkU3RhdGUodHJ1ZSk7CisgICAgICAgICAgICBtUHJldkRyYXdUcmFuc2Zvcm1GZWVk
YmFjayA9IG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKG1hc2sgJiBHTF9ERVBU
SF9CVUZGRVJfQklUKSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRDbGVhckRlcHRo
KHN0YXRlLmdldERlcHRoQ2xlYXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHNldERlcHRoTWFzayhz
dGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpLmRlcHRoTWFzayk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoKG1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICE9IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHNldENsZWFyU3RlbmNpbChzdGF0ZS5nZXRTdGVuY2lsQ2xlYXJWYWx1ZSgp
KTsKLSAgICAgICAgICAgIHNldFN0ZW5jaWxGcm9udFdyaXRlbWFzayhzdGF0ZS5nZXREZXB0aFN0
ZW5jaWxTdGF0ZSgpLnN0ZW5jaWxXcml0ZW1hc2spOwotICAgICAgICAgICAgc2V0U3RlbmNpbEJh
Y2tXcml0ZW1hc2soc3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKS5zdGVuY2lsQmFja1dyaXRl
bWFzayk7Ci0gICAgICAgIH0KKyAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrID0gdHJhbnNmb3Jt
RmVlZGJhY2s7CisgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRUcmFuc2Zvcm1GZWVkYmFjayh0eXBl
LCBtVHJhbnNmb3JtRmVlZGJhY2spOwogICAgIH0KIH0KIAotZ2w6OkVycm9yIFN0YXRlTWFuYWdl
ckdMOjpzZXREcmF3QXJyYXlzU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMaW50IGZpcnN0
LCBHTHNpemVpIGNvdW50KQordm9pZCBTdGF0ZU1hbmFnZXJHTDo6YmVnaW5RdWVyeShHTGVudW0g
dHlwZSwgR0x1aW50IHF1ZXJ5KQogeworICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGlzIGEgdmFsaWQg
cXVlcnkgdHlwZSBhbmQgdGhlcmUgaXMgbm8gY3VycmVudCBhY3RpdmUgcXVlcnkgb2YgdGhpcyB0
eXBlCisgICAgQVNTRVJUKG1RdWVyaWVzLmZpbmQodHlwZSkgIT0gbVF1ZXJpZXMuZW5kKCkpOwor
ICAgIEFTU0VSVChtUXVlcmllc1t0eXBlXSA9PSAwKTsKKyAgICBBU1NFUlQocXVlcnkgIT0gMCk7
CisKKyAgICBtUXVlcmllc1t0eXBlXSA9IHF1ZXJ5OworICAgIG1GdW5jdGlvbnMtPmJlZ2luUXVl
cnkodHlwZSwgcXVlcnkpOworfQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjplbmRRdWVyeShHTGVu
dW0gdHlwZSwgR0x1aW50IHF1ZXJ5KQoreworICAgIEFTU0VSVChtUXVlcmllc1t0eXBlXSA9PSBx
dWVyeSk7CisgICAgbVF1ZXJpZXNbdHlwZV0gPSAwOworICAgIG1GdW5jdGlvbnMtPmVuZFF1ZXJ5
KHR5cGUpOworfQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjpvbkJlZ2luUXVlcnkoUXVlcnlHTCAq
cXVlcnkpCit7CisgICAgbUN1cnJlbnRRdWVyaWVzLmluc2VydChxdWVyeSk7Cit9CisKK3ZvaWQg
U3RhdGVNYW5hZ2VyR0w6Om9uRGVsZXRlUXVlcnlPYmplY3QoUXVlcnlHTCAqcXVlcnkpCit7Cisg
ICAgbUN1cnJlbnRRdWVyaWVzLmVyYXNlKHF1ZXJ5KTsKK30KKworZ2w6OkVycm9yIFN0YXRlTWFu
YWdlckdMOjpzZXREcmF3QXJyYXlzU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlQ291bnQpCit7CiAgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9ICpkYXRhLnN0YXRlOwog
CisgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CisK
ICAgICBjb25zdCBnbDo6VmVydGV4QXJyYXkgKnZhbyA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7
CiAgICAgY29uc3QgVmVydGV4QXJyYXlHTCAqdmFvR0wgPSBHZXRJbXBsQXM8VmVydGV4QXJyYXlH
TD4odmFvKTsKLSAgICB2YW9HTC0+c3luY0RyYXdBcnJheXNTdGF0ZShmaXJzdCwgY291bnQpOwot
ICAgIGJpbmRWZXJ0ZXhBcnJheSh2YW9HTC0+Z2V0VmVydGV4QXJyYXlJRCgpKTsKIAorICAgIGds
OjpFcnJvciBlcnJvciA9IHZhb0dMLT5zeW5jRHJhd0FycmF5c1N0YXRlKHByb2dyYW0tPmdldEFj
dGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSwgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIGluc3RhbmNlQ291bnQpOworICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQor
CisgICAgYmluZFZlcnRleEFycmF5KHZhb0dMLT5nZXRWZXJ0ZXhBcnJheUlEKCksIHZhb0dMLT5n
ZXRBcHBsaWVkRWxlbWVudEFycmF5QnVmZmVySUQoKSk7CisKICAgICByZXR1cm4gc2V0R2VuZXJp
Y0RyYXdTdGF0ZShkYXRhKTsKIH0KIAotZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpzZXREcmF3
RWxlbWVudHNTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSwgR0xzaXplaSBjb3VudCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKK2dsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6
c2V0RHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaW5zdGFuY2VDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykKIHsKICAgICBjb25zdCBn
bDo6U3RhdGUgJnN0YXRlID0gKmRhdGEuc3RhdGU7CiAKKyAgICBjb25zdCBnbDo6UHJvZ3JhbSAq
cHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKKwogICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJh
eSAqdmFvID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKICAgICBjb25zdCBWZXJ0ZXhBcnJheUdM
ICp2YW9HTCA9IEdldEltcGxBczxWZXJ0ZXhBcnJheUdMPih2YW8pOwogCi0gICAgZ2w6OkVycm9y
IGVycm9yID0gdmFvR0wtPnN5bmNEcmF3RWxlbWVudHNTdGF0ZShjb3VudCwgdHlwZSwgaW5kaWNl
cywgb3V0SW5kaWNlcyk7CisgICAgZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgdmFvR0wtPnN5
bmNEcmF3RWxlbWVudHNTdGF0ZShwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNr
KCksIGNvdW50LCB0eXBlLCBpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc3RhbmNlQ291bnQsIHN0YXRlLmlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQoKSwg
b3V0SW5kaWNlcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBiaW5kVmVydGV4QXJyYXkodmFvR0wtPmdldFZlcnRl
eEFycmF5SUQoKSk7CisgICAgYmluZFZlcnRleEFycmF5KHZhb0dMLT5nZXRWZXJ0ZXhBcnJheUlE
KCksIHZhb0dMLT5nZXRBcHBsaWVkRWxlbWVudEFycmF5QnVmZmVySUQoKSk7CiAKICAgICByZXR1
cm4gc2V0R2VuZXJpY0RyYXdTdGF0ZShkYXRhKTsKIH0KIAorZ2w6OkVycm9yIFN0YXRlTWFuYWdl
ckdMOjpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKQoreworICAgIGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUgPSAqZGF0YS5zdGF0ZTsKKworICAgIC8vIElmIHRoZSBjb250ZXh0IGhh
cyBjaGFuZ2VkLCBwYXVzZSB0aGUgcHJldmlvdXMgY29udGV4dCdzIHRyYW5zZm9ybSBmZWVkYmFj
ayBhbmQgcXVlcmllcworICAgIGlmIChkYXRhLmNvbnRleHQgIT0gbVByZXZEcmF3Q29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmIChtUHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjayAhPSBudWxscHRy
KQorICAgICAgICB7CisgICAgICAgICAgICBtUHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjay0+c3lu
Y1BhdXNlZFN0YXRlKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChRdWVyeUdMICpw
cmV2UXVlcnkgOiBtQ3VycmVudFF1ZXJpZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByZXZR
dWVyeS0+cGF1c2UoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtQ3VycmVudFF1ZXJpZXMuY2xl
YXIoKTsKKyAgICBtUHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjayA9IG51bGxwdHI7CisgICAgbVBy
ZXZEcmF3Q29udGV4dCA9IGRhdGEuY29udGV4dDsKKworICAgIC8vIFNldCB0aGUgY3VycmVudCBx
dWVyeSBzdGF0ZQorICAgIGZvciAoR0xlbnVtIHF1ZXJ5VHlwZSA6IFF1ZXJ5VHlwZXMpCisgICAg
eworICAgICAgICBnbDo6UXVlcnkgKnF1ZXJ5ID0gc3RhdGUuZ2V0QWN0aXZlUXVlcnkocXVlcnlU
eXBlKTsKKyAgICAgICAgaWYgKHF1ZXJ5ICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFF1ZXJ5R0wgKnF1ZXJ5R0wgPSBHZXRJbXBsQXM8UXVlcnlHTD4ocXVlcnkpOworICAgICAg
ICAgICAgcXVlcnlHTC0+cmVzdW1lKCk7CisKKyAgICAgICAgICAgIG1DdXJyZW50UXVlcmllcy5p
bnNlcnQocXVlcnlHTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKK30KKwogZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpzZXRHZW5lcmlj
RHJhd1N0YXRlKGNvbnN0IGdsOjpEYXRhICZkYXRhKQogewogICAgIGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUgPSAqZGF0YS5zdGF0ZTsKLSAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9ICpkYXRhLmNh
cHM7CiAKKyAgICAvLyBTeW5jIHRoZSBjdXJyZW50IHByb2dyYW0gc3RhdGUKICAgICBjb25zdCBn
bDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKICAgICBjb25zdCBQcm9n
cmFtR0wgKnByb2dyYW1HTCA9IEdldEltcGxBczxQcm9ncmFtR0w+KHByb2dyYW0pOwogICAgIHVz
ZVByb2dyYW0ocHJvZ3JhbUdMLT5nZXRQcm9ncmFtSUQoKSk7CiAKLSAgICAvLyBUT0RPOiBPbmx5
IGFwcGx5IHRleHR1cmVzIHJlZmVyZW5jZWQgYnkgdGhlIHByb2dyYW0uCi0gICAgZm9yIChhdXRv
IHRleHR1cmVUeXBlSXRlciA9IG1UZXh0dXJlcy5iZWdpbigpOyB0ZXh0dXJlVHlwZUl0ZXIgIT0g
bVRleHR1cmVzLmVuZCgpOyB0ZXh0dXJlVHlwZUl0ZXIrKykKKyAgICBmb3IgKHNpemVfdCB1bmlm
b3JtQmxvY2tJbmRleCA9IDA7IHVuaWZvcm1CbG9ja0luZGV4IDwgcHJvZ3JhbS0+Z2V0QWN0aXZl
VW5pZm9ybUJsb2NrQ291bnQoKTsKKyAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4KyspCiAgICAg
ewotICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSB0ZXh0dXJlVHlwZUl0ZXItPmZpcnN0Owor
ICAgICAgICBHTHVpbnQgYmluZGluZyA9IHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0JpbmRpbmco
c3RhdGljX2Nhc3Q8R0x1aW50Pih1bmlmb3JtQmxvY2tJbmRleCkpOworICAgICAgICBjb25zdCBP
ZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmdW5pZm9ybUJ1ZmZlciA9CisgICAgICAg
ICAgICBkYXRhLnN0YXRlLT5nZXRJbmRleGVkVW5pZm9ybUJ1ZmZlcihiaW5kaW5nKTsKIAotICAg
ICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyB0ZXh0dXJlIHR5cGUgY2FuIGV4aXN0IGluIHRoZSBz
b3VyY2UgY29udGV4dAotICAgICAgICBib29sIHZhbGlkVGV4dHVyZVR5cGUgPSAodGV4dHVyZVR5
cGUgPT0gR0xfVEVYVFVSRV8yRCB8fCB0ZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQ
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dHVyZVR5cGUgPT0gR0xf
VEVYVFVSRV8yRF9BUlJBWSAmJiBkYXRhLmNsaWVudFZlcnNpb24gPj0gMykgfHwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzNEICYm
IGRhdGEuY2xpZW50VmVyc2lvbiA+PSAzKSk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
R0x1aW50PiAmdGV4dHVyZVZlY3RvciA9IHRleHR1cmVUeXBlSXRlci0+c2Vjb25kOwotICAgICAg
ICBmb3IgKHNpemVfdCB0ZXh0dXJlVW5pdEluZGV4ID0gMDsgdGV4dHVyZVVuaXRJbmRleCA8IHRl
eHR1cmVWZWN0b3Iuc2l6ZSgpOyB0ZXh0dXJlVW5pdEluZGV4KyspCisgICAgICAgIGlmICh1bmlm
b3JtQnVmZmVyLmdldCgpICE9IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEJ1ZmZlckdMICpi
dWZmZXJHTCA9IEdldEltcGxBczxCdWZmZXJHTD4odW5pZm9ybUJ1ZmZlci5nZXQoKSk7CiAKLSAg
ICAgICAgICAgIGJvb2wgdmFsaWRUZXh0dXJlVW5pdCA9IHRleHR1cmVVbml0SW5kZXggPCBjYXBz
Lm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHM7Ci0gICAgICAgICAgICBpZiAodmFsaWRUZXh0
dXJlVHlwZSAmJiB2YWxpZFRleHR1cmVVbml0KQorICAgICAgICAgICAgaWYgKHVuaWZvcm1CdWZm
ZXIuZ2V0U2l6ZSgpID09IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGV4dHVy
ZSA9IHN0YXRlLmdldFNhbXBsZXJUZXh0dXJlKHRleHR1cmVVbml0SW5kZXgsIHRleHR1cmVUeXBl
KTsKKyAgICAgICAgICAgICAgICBiaW5kQnVmZmVyQmFzZShHTF9VTklGT1JNX0JVRkZFUiwgYmlu
ZGluZywgYnVmZmVyR0wtPmdldEJ1ZmZlcklEKCkpOwogICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJpbmRCdWZmZXJSYW5nZShH
TF9VTklGT1JNX0JVRkZFUiwgYmluZGluZywgYnVmZmVyR0wtPmdldEJ1ZmZlcklEKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWZvcm1CdWZmZXIuZ2V0T2Zmc2V0KCksIHVu
aWZvcm1CdWZmZXIuZ2V0U2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
IAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFNhbXBsZXJCaW5kaW5nR0w+ICZhcHBsaWVkU2FtcGxl
clVuaWZvcm1zID0gcHJvZ3JhbUdMLT5nZXRBcHBsaWVkU2FtcGxlclVuaWZvcm1zKCk7CisgICAg
Zm9yIChjb25zdCBTYW1wbGVyQmluZGluZ0dMICZzYW1wbGVyVW5pZm9ybSA6IGFwcGxpZWRTYW1w
bGVyVW5pZm9ybXMpCisgICAgeworICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBzYW1wbGVy
VW5pZm9ybS50ZXh0dXJlVHlwZTsKKyAgICAgICAgZm9yIChHTHVpbnQgdGV4dHVyZVVuaXRJbmRl
eCA6IHNhbXBsZXJVbmlmb3JtLmJvdW5kVGV4dHVyZVVuaXRzKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb25zdCBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IHN0YXRlLmdldFNhbXBsZXJUZXh0dXJl
KHRleHR1cmVVbml0SW5kZXgsIHRleHR1cmVUeXBlKTsKICAgICAgICAgICAgIGlmICh0ZXh0dXJl
ICE9IG51bGxwdHIpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVy
ZUdMICp0ZXh0dXJlR0wgPSBHZXRJbXBsQXM8VGV4dHVyZUdMPih0ZXh0dXJlKTsKLSAgICAgICAg
ICAgICAgICB0ZXh0dXJlR0wtPnN5bmNTYW1wbGVyU3RhdGUodGV4dHVyZS0+Z2V0U2FtcGxlclN0
YXRlKCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKG1UZXh0dXJlc1t0ZXh0dXJlVHlwZV1bdGV4
dHVyZVVuaXRJbmRleF0gIT0gdGV4dHVyZUdMLT5nZXRUZXh0dXJlSUQoKSkKICAgICAgICAgICAg
ICAgICB7CkBAIC0yOTAsNyArNzI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYmluZFRleHR1
cmUodGV4dHVyZVR5cGUsIHRleHR1cmVHTC0+Z2V0VGV4dHVyZUlEKCkpOwogICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIFRPRE86IGFwcGx5IHNhbXBsZXIgb2JqZWN0IGlm
IG9uZSBpcyBib3VuZAorICAgICAgICAgICAgICAgIHRleHR1cmVHTC0+c3luY1N0YXRlKHRleHR1
cmVVbml0SW5kZXgsIHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKQEAgLTMwMCw3NSArNzM5LDc1IEBACiAg
ICAgICAgICAgICAgICAgICAgIGJpbmRUZXh0dXJlKHRleHR1cmVUeXBlLCAwKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0IGdsOjpTYW1wbGVy
ICpzYW1wbGVyID0gc3RhdGUuZ2V0U2FtcGxlcih0ZXh0dXJlVW5pdEluZGV4KTsKKyAgICAgICAg
ICAgIGlmIChzYW1wbGVyICE9IG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29uc3QgU2FtcGxlckdMICpzYW1wbGVyR0wgPSBHZXRJbXBsQXM8U2FtcGxlckdMPihzYW1w
bGVyKTsKKyAgICAgICAgICAgICAgICBzYW1wbGVyR0wtPnN5bmNTdGF0ZShzYW1wbGVyLT5nZXRT
YW1wbGVyU3RhdGUoKSk7CisgICAgICAgICAgICAgICAgYmluZFNhbXBsZXIodGV4dHVyZVVuaXRJ
bmRleCwgc2FtcGxlckdMLT5nZXRTYW1wbGVySUQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYmluZFNhbXBsZXIodGV4
dHVyZVVuaXRJbmRleCwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gc3RhdGUuZ2V0RHJhd0ZyYW1l
YnVmZmVyKCk7CiAgICAgY29uc3QgRnJhbWVidWZmZXJHTCAqZnJhbWVidWZmZXJHTCA9IEdldElt
cGxBczxGcmFtZWJ1ZmZlckdMPihmcmFtZWJ1ZmZlcik7CiAgICAgYmluZEZyYW1lYnVmZmVyKEdM
X0RSQVdfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyR0wtPmdldEZyYW1lYnVmZmVySUQoKSk7Cisg
ICAgZnJhbWVidWZmZXJHTC0+c3luY0RyYXdTdGF0ZSgpOwogCi0gICAgc2V0U2Npc3NvclRlc3RF
bmFibGVkKHN0YXRlLmlzU2Npc3NvclRlc3RFbmFibGVkKCkpOwotICAgIGlmIChzdGF0ZS5pc1Nj
aXNzb3JUZXN0RW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgc2V0U2Npc3NvcihzdGF0ZS5nZXRT
Y2lzc29yKCkpOwotICAgIH0KKyAgICAvLyBTZWFtbGVzcyBjdWJlbWFwcyBhcmUgcmVxdWlyZWQg
Zm9yIEVTMyBhbmQgaGlnaGVyIGNvbnRleHRzLgorICAgIHNldFRleHR1cmVDdWJlbWFwU2VhbWxl
c3NFbmFibGVkKGRhdGEuY2xpZW50VmVyc2lvbiA+PSAzKTsKIAotICAgIHNldFZpZXdwb3J0KHN0
YXRlLmdldFZpZXdwb3J0KCkpOwotICAgIHNldERlcHRoUmFuZ2Uoc3RhdGUuZ2V0TmVhclBsYW5l
KCksIHN0YXRlLmdldEZhclBsYW5lKCkpOwotCi0gICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUgJmJs
ZW5kU3RhdGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlKCk7Ci0gICAgc2V0QmxlbmRFbmFibGVkKGJs
ZW5kU3RhdGUuYmxlbmQpOwotICAgIGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAgIC8vIFNldCB0
aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgc3RhdGUKKyAgICBnbDo6VHJhbnNmb3JtRmVl
ZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gc3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRi
YWNrKCk7CisgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrKQogICAgIHsKLSAgICAgICAgc2V0Qmxl
bmRDb2xvcihzdGF0ZS5nZXRCbGVuZENvbG9yKCkpOwotICAgICAgICBzZXRCbGVuZEZ1bmNzKGJs
ZW5kU3RhdGUuc291cmNlQmxlbmRSR0IsIGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCLCBibGVuZFN0
YXRlLnNvdXJjZUJsZW5kQWxwaGEsIGJsZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEpOwotICAgICAg
ICBzZXRCbGVuZEVxdWF0aW9ucyhibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IsIGJsZW5kU3Rh
dGUuYmxlbmRFcXVhdGlvbkFscGhhKTsKLSAgICAgICAgc2V0Q29sb3JNYXNrKGJsZW5kU3RhdGUu
Y29sb3JNYXNrUmVkLCBibGVuZFN0YXRlLmNvbG9yTWFza0dyZWVuLCBibGVuZFN0YXRlLmNvbG9y
TWFza0JsdWUsIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpOworICAgICAgICBUcmFuc2Zvcm1G
ZWVkYmFja0dMICp0cmFuc2Zvcm1GZWVkYmFja0dMID0KKyAgICAgICAgICAgIEdldEltcGxBczxU
cmFuc2Zvcm1GZWVkYmFja0dMPih0cmFuc2Zvcm1GZWVkYmFjayk7CisgICAgICAgIGJpbmRUcmFu
c2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIHRyYW5zZm9ybUZlZWRiYWNrR0wt
PmdldFRyYW5zZm9ybUZlZWRiYWNrSUQoKSk7CisgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrR0wt
PnN5bmNBY3RpdmVTdGF0ZSh0cmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrLT5n
ZXRQcmltaXRpdmVNb2RlKCkpOworICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja0dMLT5zeW5jUGF1
c2VkU3RhdGUodHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkpOworICAgICAgICBtUHJldkRy
YXdUcmFuc2Zvcm1GZWVkYmFjayA9IHRyYW5zZm9ybUZlZWRiYWNrR0w7CiAgICAgfQotICAgIHNl
dFNhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292
ZXJhZ2UpOwotICAgIHNldFNhbXBsZUNvdmVyYWdlRW5hYmxlZChzdGF0ZS5pc1NhbXBsZUNvdmVy
YWdlRW5hYmxlZCgpKTsKLSAgICBzZXRTYW1wbGVDb3ZlcmFnZShzdGF0ZS5nZXRTYW1wbGVDb3Zl
cmFnZVZhbHVlKCksIHN0YXRlLmdldFNhbXBsZUNvdmVyYWdlSW52ZXJ0KCkpOwotCi0gICAgY29u
c3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkZXB0aFN0ZW5jaWxTdGF0ZSA9IHN0YXRlLmdldERl
cHRoU3RlbmNpbFN0YXRlKCk7Ci0gICAgc2V0RGVwdGhUZXN0RW5hYmxlZChkZXB0aFN0ZW5jaWxT
dGF0ZS5kZXB0aFRlc3QpOwotICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFRlc3QpCisg
ICAgZWxzZQogICAgIHsKLSAgICAgICAgc2V0RGVwdGhGdW5jKGRlcHRoU3RlbmNpbFN0YXRlLmRl
cHRoRnVuYyk7Ci0gICAgICAgIHNldERlcHRoTWFzayhkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aE1h
c2spOworICAgICAgICBiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNL
LCAwKTsKKyAgICAgICAgbVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2sgPSBudWxscHRyOwogICAg
IH0KIAotICAgIHNldFN0ZW5jaWxUZXN0RW5hYmxlZChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2ls
VGVzdCk7Ci0gICAgaWYgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxUZXN0KQotICAgIHsKLSAg
ICAgICAgc2V0U3RlbmNpbEZyb250V3JpdGVtYXNrKHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRl
KCkuc3RlbmNpbFdyaXRlbWFzayk7Ci0gICAgICAgIHNldFN0ZW5jaWxCYWNrV3JpdGVtYXNrKHN0
YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCkuc3RlbmNpbEJhY2tXcml0ZW1hc2spOwotICAgICAg
ICBzZXRTdGVuY2lsRnJvbnRGdW5jcyhkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRnVuYywgc3Rh
dGUuZ2V0U3RlbmNpbFJlZigpLCBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayk7Ci0gICAg
ICAgIHNldFN0ZW5jaWxCYWNrRnVuY3MoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tGdW5j
LCBzdGF0ZS5nZXRTdGVuY2lsQmFja1JlZigpLCBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFj
a01hc2spOwotICAgICAgICBzZXRTdGVuY2lsRnJvbnRPcHMoZGVwdGhTdGVuY2lsU3RhdGUuc3Rl
bmNpbEZhaWwsIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhGYWlsLCBkZXB0aFN0
ZW5jaWxTdGF0ZS5zdGVuY2lsUGFzc0RlcHRoUGFzcyk7Ci0gICAgICAgIHNldFN0ZW5jaWxCYWNr
T3BzKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCwgZGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsLCBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bh
c3NEZXB0aFBhc3MpOwotICAgIH0KKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
K30KIAotICAgIGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3Rlcml6ZXJTdGF0ZSA9IHN0
YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpOwotICAgIHNldEN1bGxGYWNlRW5hYmxlZChyYXN0ZXJp
emVyU3RhdGUuY3VsbEZhY2UpOwotICAgIGlmIChyYXN0ZXJpemVyU3RhdGUuY3VsbEZhY2UpCit2
b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRBdHRyaWJ1dGVDdXJyZW50RGF0YShzaXplX3QgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmZGF0YSkKK3sKKyAgICBpZiAobVZlcnRleEF0
dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdICE9IGRhdGEpCiAgICAgewotICAgICAgICBzZXRDdWxs
RmFjZShyYXN0ZXJpemVyU3RhdGUuY3VsbE1vZGUpOwotICAgICAgICBzZXRGcm9udEZhY2UocmFz
dGVyaXplclN0YXRlLmZyb250RmFjZSk7Ci0gICAgfQorICAgICAgICBtVmVydGV4QXR0cmliQ3Vy
cmVudFZhbHVlc1tpbmRleF0gPSBkYXRhOworICAgICAgICBzd2l0Y2ggKG1WZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWVzW2luZGV4XS5UeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdM
X0ZMT0FUOgorICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYjRmdihzdGF0
aWNfY2FzdDxHTHVpbnQ+KGluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbVZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLkZsb2F0VmFsdWVz
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfSU5UOgorICAg
ICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYjRpdihzdGF0aWNfY2FzdDxHTHVp
bnQ+KGluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLkludFZhbHVlcyk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAg
ICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWI0dWl2KHN0YXRpY19jYXN0PEdMdWludD4o
aW5kZXgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVZl
cnRleEF0dHJpYkN1cnJlbnRWYWx1ZXNbaW5kZXhdLlVuc2lnbmVkSW50VmFsdWVzKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAg
ICAgICB9CiAKLSAgICBzZXRQb2x5Z29uT2Zmc2V0RmlsbEVuYWJsZWQocmFzdGVyaXplclN0YXRl
LnBvbHlnb25PZmZzZXRGaWxsKTsKLSAgICBpZiAocmFzdGVyaXplclN0YXRlLnBvbHlnb25PZmZz
ZXRGaWxsKQotICAgIHsKLSAgICAgICAgc2V0UG9seWdvbk9mZnNldChyYXN0ZXJpemVyU3RhdGUu
cG9seWdvbk9mZnNldEZhY3RvciwgcmFzdGVyaXplclN0YXRlLnBvbHlnb25PZmZzZXRVbml0cyk7
CisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVO
VF9WQUxVRV8wICsgaW5kZXgpOwogICAgIH0KLQotICAgIHNldE11bHRpc2FtcGxlRW5hYmxlZChy
YXN0ZXJpemVyU3RhdGUubXVsdGlTYW1wbGUpOwotICAgIHNldFJhc3Rlcml6ZXJEaXNjYXJkRW5h
YmxlZChyYXN0ZXJpemVyU3RhdGUucmFzdGVyaXplckRpc2NhcmQpOwotICAgIHNldExpbmVXaWR0
aChzdGF0ZS5nZXRMaW5lV2lkdGgoKSk7Ci0KLSAgICBzZXRQcmltaXRpdmVSZXN0YXJ0RW5hYmxl
ZChzdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpOwotCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CiB9CiAKIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldFNjaXNzb3JU
ZXN0RW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC0zODQsNiArODIzLDggQEAKICAgICAgICAgewog
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOwogICAgICAg
ICB9CisKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9T
Q0lTU09SX1RFU1RfRU5BQkxFRCk7CiAgICAgfQogfQogCkBAIC0zOTMsNiArODM0LDggQEAKICAg
ICB7CiAgICAgICAgIG1TY2lzc29yID0gc2Npc3NvcjsKICAgICAgICAgbUZ1bmN0aW9ucy0+c2Np
c3NvcihtU2Npc3Nvci54LCBtU2Npc3Nvci55LCBtU2Npc3Nvci53aWR0aCwgbVNjaXNzb3IuaGVp
Z2h0KTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklU
X1NDSVNTT1IpOwogICAgIH0KIH0KIApAQCAtNDAyLDYgKzg0NSw4IEBACiAgICAgewogICAgICAg
ICBtVmlld3BvcnQgPSB2aWV3cG9ydDsKICAgICAgICAgbUZ1bmN0aW9ucy0+dmlld3BvcnQobVZp
ZXdwb3J0LngsIG1WaWV3cG9ydC55LCBtVmlld3BvcnQud2lkdGgsIG1WaWV3cG9ydC5oZWlnaHQp
OworCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfVklF
V1BPUlQpOwogICAgIH0KIH0KIApAQCAtNDExLDcgKzg1NiwyMCBAQAogICAgIHsKICAgICAgICAg
bU5lYXIgPSBuZWFyOwogICAgICAgICBtRmFyID0gZmFyOwotICAgICAgICBtRnVuY3Rpb25zLT5k
ZXB0aFJhbmdlKG1OZWFyLCBtRmFyKTsKKworICAgICAgICAvLyBUaGUgZ2xEZXB0aFJhbmdlZiBm
dW5jdGlvbiBpc24ndCBhdmFpbGFibGUgdW50aWwgT3BlbkdMIDQuMS4gIFByZWZlciBpdCB3aGVu
IGl0IGlzCisgICAgICAgIC8vIGF2YWlsYWJsZSBiZWNhdXNlIE9wZW5HTCBFUyBvbmx5IHdvcmtz
IGluIGZsb2F0cy4KKyAgICAgICAgaWYgKG1GdW5jdGlvbnMtPmRlcHRoUmFuZ2VmKQorICAgICAg
ICB7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5kZXB0aFJhbmdlZihtTmVhciwgbUZhcik7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobUZ1
bmN0aW9ucy0+ZGVwdGhSYW5nZSk7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5kZXB0aFJhbmdl
KG1OZWFyLCBtRmFyKTsKKyAgICAgICAgfQorCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQo
Z2w6OlN0YXRlOjpESVJUWV9CSVRfREVQVEhfUkFOR0UpOwogICAgIH0KIH0KIApAQCAtNDI4LDYg
Kzg4Niw4IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRpc2FibGUoR0xf
QkxFTkQpOwogICAgICAgICB9CisKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3Rh
dGU6OkRJUlRZX0JJVF9CTEVORF9FTkFCTEVEKTsKICAgICB9CiB9CiAKQEAgLTQzNywxMCArODk3
LDE0IEBACiAgICAgewogICAgICAgICBtQmxlbmRDb2xvciA9IGJsZW5kQ29sb3I7CiAgICAgICAg
IG1GdW5jdGlvbnMtPmJsZW5kQ29sb3IobUJsZW5kQ29sb3IucmVkLCBtQmxlbmRDb2xvci5ncmVl
biwgbUJsZW5kQ29sb3IuYmx1ZSwgbUJsZW5kQ29sb3IuYWxwaGEpOworCisgICAgICAgIG1Mb2Nh
bERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfQkxFTkRfQ09MT1IpOwogICAgIH0K
IH0KIAotdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0QmxlbmRGdW5jcyhHTGVudW0gc291cmNlQmxl
bmRSR0IsIEdMZW51bSBkZXN0QmxlbmRSR0IsIEdMZW51bSBzb3VyY2VCbGVuZEFscGhhLAordm9p
ZCBTdGF0ZU1hbmFnZXJHTDo6c2V0QmxlbmRGdW5jcyhHTGVudW0gc291cmNlQmxlbmRSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0QmxlbmRSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2VCbGVuZEFscGhh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEJsZW5kQWxw
aGEpCiB7CiAgICAgaWYgKG1Tb3VyY2VCbGVuZFJHQiAhPSBzb3VyY2VCbGVuZFJHQiB8fCBtRGVz
dEJsZW5kUkdCICE9IGRlc3RCbGVuZFJHQiB8fApAQCAtNDUyLDYgKzkxNiw4IEBACiAgICAgICAg
IG1EZXN0QmxlbmRBbHBoYSA9IGRlc3RCbGVuZEFscGhhOwogCiAgICAgICAgIG1GdW5jdGlvbnMt
PmJsZW5kRnVuY1NlcGFyYXRlKG1Tb3VyY2VCbGVuZFJHQiwgbURlc3RCbGVuZFJHQiwgbVNvdXJj
ZUJsZW5kQWxwaGEsIG1EZXN0QmxlbmRBbHBoYSk7CisKKyAgICAgICAgbUxvY2FsRGlydHlCaXRz
LnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9CTEVORF9GVU5DUyk7CiAgICAgfQogfQogCkBAIC00
NjAsOSArOTI2LDExIEBACiAgICAgaWYgKG1CbGVuZEVxdWF0aW9uUkdCICE9IGJsZW5kRXF1YXRp
b25SR0IgfHwgbUJsZW5kRXF1YXRpb25BbHBoYSAhPSBibGVuZEVxdWF0aW9uQWxwaGEpCiAgICAg
ewogICAgICAgICBtQmxlbmRFcXVhdGlvblJHQiA9IGJsZW5kRXF1YXRpb25SR0I7Ci0gICAgICAg
IG1CbGVuZEVxdWF0aW9uQWxwaGEgPSBtRGVzdEJsZW5kQWxwaGE7CisgICAgICAgIG1CbGVuZEVx
dWF0aW9uQWxwaGEgPSBibGVuZEVxdWF0aW9uQWxwaGE7CiAKICAgICAgICAgbUZ1bmN0aW9ucy0+
YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1CbGVuZEVxdWF0aW9uUkdCLCBtQmxlbmRFcXVhdGlvbkFs
cGhhKTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklU
X0JMRU5EX0VRVUFUSU9OUyk7CiAgICAgfQogfQogCkBAIC00NzUsNiArOTQzLDggQEAKICAgICAg
ICAgbUNvbG9yTWFza0JsdWUgPSBibHVlOwogICAgICAgICBtQ29sb3JNYXNrQWxwaGEgPSBhbHBo
YTsKICAgICAgICAgbUZ1bmN0aW9ucy0+Y29sb3JNYXNrKG1Db2xvck1hc2tSZWQsIG1Db2xvck1h
c2tHcmVlbiwgbUNvbG9yTWFza0JsdWUsIG1Db2xvck1hc2tBbHBoYSk7CisKKyAgICAgICAgbUxv
Y2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9DT0xPUl9NQVNLKTsKICAgICB9
CiB9CiAKQEAgLTQ5MSw2ICs5NjEsOCBAQAogICAgICAgICB7CiAgICAgICAgICAgICBtRnVuY3Rp
b25zLT5kaXNhYmxlKEdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSk7CiAgICAgICAgIH0KKwor
ICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1NBTVBMRV9B
TFBIQV9UT19DT1ZFUkFHRV9FTkFCTEVEKTsKICAgICB9CiB9CiAKQEAgLTUwNyw2ICs5NzksOCBA
QAogICAgICAgICB7CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5kaXNhYmxlKEdMX1NBTVBMRV9D
T1ZFUkFHRSk7CiAgICAgICAgIH0KKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpT
dGF0ZTo6RElSVFlfQklUX1NBTVBMRV9DT1ZFUkFHRV9FTkFCTEVEKTsKICAgICB9CiB9CiAKQEAg
LTUxNyw2ICs5OTEsOCBAQAogICAgICAgICBtU2FtcGxlQ292ZXJhZ2VWYWx1ZSA9IHZhbHVlOwog
ICAgICAgICBtU2FtcGxlQ292ZXJhZ2VJbnZlcnQgPSBpbnZlcnQ7CiAgICAgICAgIG1GdW5jdGlv
bnMtPnNhbXBsZUNvdmVyYWdlKG1TYW1wbGVDb3ZlcmFnZVZhbHVlLCBtU2FtcGxlQ292ZXJhZ2VJ
bnZlcnQpOworCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9C
SVRfU0FNUExFX0NPVkVSQUdFKTsKICAgICB9CiB9CiAKQEAgLTUzMyw2ICsxMDA5LDggQEAKICAg
ICAgICAgewogICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9ERVBUSF9URVNUKTsK
ICAgICAgICAgfQorCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJU
WV9CSVRfREVQVEhfVEVTVF9FTkFCTEVEKTsKICAgICB9CiB9CiAKQEAgLTU0Miw2ICsxMDIwLDgg
QEAKICAgICB7CiAgICAgICAgIG1EZXB0aEZ1bmMgPSBkZXB0aEZ1bmM7CiAgICAgICAgIG1GdW5j
dGlvbnMtPmRlcHRoRnVuYyhtRGVwdGhGdW5jKTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMu
c2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX0RFUFRIX0ZVTkMpOwogICAgIH0KIH0KIApAQCAtNTUx
LDYgKzEwMzEsOCBAQAogICAgIHsKICAgICAgICAgbURlcHRoTWFzayA9IG1hc2s7CiAgICAgICAg
IG1GdW5jdGlvbnMtPmRlcHRoTWFzayhtRGVwdGhNYXNrKTsKKworICAgICAgICBtTG9jYWxEaXJ0
eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX0RFUFRIX01BU0spOwogICAgIH0KIH0KIApA
QCAtNTY3LDYgKzEwNDksOCBAQAogICAgICAgICB7CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5k
aXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7CiAgICAgICAgIH0KKworICAgICAgICBtTG9jYWxEaXJ0
eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfVEVTVF9FTkFCTEVEKTsKICAg
ICB9CiB9CiAKQEAgLTU3Niw2ICsxMDYwLDggQEAKICAgICB7CiAgICAgICAgIG1TdGVuY2lsRnJv
bnRXcml0ZW1hc2sgPSBtYXNrOwogICAgICAgICBtRnVuY3Rpb25zLT5zdGVuY2lsTWFza1NlcGFy
YXRlKEdMX0ZST05ULCBtU3RlbmNpbEZyb250V3JpdGVtYXNrKTsKKworICAgICAgICBtTG9jYWxE
aXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0ZST05U
KTsKICAgICB9CiB9CiAKQEAgLTU4NSw2ICsxMDcxLDggQEAKICAgICB7CiAgICAgICAgIG1TdGVu
Y2lsQmFja1dyaXRlbWFzayA9IG1hc2s7CiAgICAgICAgIG1GdW5jdGlvbnMtPnN0ZW5jaWxNYXNr
U2VwYXJhdGUoR0xfQkFDSywgbVN0ZW5jaWxCYWNrV3JpdGVtYXNrKTsKKworICAgICAgICBtTG9j
YWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfV1JJVEVNQVNLX0JB
Q0spOwogICAgIH0KIH0KIApAQCAtNTk2LDYgKzEwODQsOCBAQAogICAgICAgICBtU3RlbmNpbEZy
b250UmVmID0gcmVmOwogICAgICAgICBtU3RlbmNpbEZyb250VmFsdWVNYXNrID0gbWFzazsKICAg
ICAgICAgbUZ1bmN0aW9ucy0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShHTF9GUk9OVCwgbVN0ZW5jaWxG
cm9udEZ1bmMsIG1TdGVuY2lsRnJvbnRSZWYsIG1TdGVuY2lsRnJvbnRWYWx1ZU1hc2spOworCisg
ICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfU1RFTkNJTF9G
VU5DU19GUk9OVCk7CiAgICAgfQogfQogCkBAIC02MDcsNiArMTA5Nyw4IEBACiAgICAgICAgIG1T
dGVuY2lsQmFja1JlZiA9IHJlZjsKICAgICAgICAgbVN0ZW5jaWxCYWNrVmFsdWVNYXNrID0gbWFz
azsKICAgICAgICAgbUZ1bmN0aW9ucy0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShHTF9CQUNLLCBtU3Rl
bmNpbEJhY2tGdW5jLCBtU3RlbmNpbEJhY2tSZWYsIG1TdGVuY2lsQmFja1ZhbHVlTWFzayk7CisK
KyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9TVEVOQ0lM
X0ZVTkNTX0JBQ0spOwogICAgIH0KIH0KIApAQCAtNjE4LDYgKzExMTAsOCBAQAogICAgICAgICBt
U3RlbmNpbEZyb250U3RlbmNpbFBhc3NEZXB0aEZhaWxPcCA9IGRwZmFpbDsKICAgICAgICAgbVN0
ZW5jaWxGcm9udFN0ZW5jaWxQYXNzRGVwdGhQYXNzT3AgPSBkcHBhc3M7CiAgICAgICAgIG1GdW5j
dGlvbnMtPnN0ZW5jaWxPcFNlcGFyYXRlKEdMX0ZST05ULCBtU3RlbmNpbEZyb250U3RlbmNpbEZh
aWxPcCwgbVN0ZW5jaWxGcm9udFN0ZW5jaWxQYXNzRGVwdGhGYWlsT3AsIG1TdGVuY2lsRnJvbnRT
dGVuY2lsUGFzc0RlcHRoUGFzc09wKTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGds
OjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfT1BTX0ZST05UKTsKICAgICB9CiB9CiAKQEAgLTYy
OSw2ICsxMTIzLDggQEAKICAgICAgICAgbVN0ZW5jaWxCYWNrU3RlbmNpbFBhc3NEZXB0aEZhaWxP
cCA9IGRwZmFpbDsKICAgICAgICAgbVN0ZW5jaWxCYWNrU3RlbmNpbFBhc3NEZXB0aFBhc3NPcCA9
IGRwcGFzczsKICAgICAgICAgbUZ1bmN0aW9ucy0+c3RlbmNpbE9wU2VwYXJhdGUoR0xfQkFDSywg
bVN0ZW5jaWxCYWNrU3RlbmNpbEZhaWxPcCwgbVN0ZW5jaWxCYWNrU3RlbmNpbFBhc3NEZXB0aEZh
aWxPcCwgbVN0ZW5jaWxCYWNrU3RlbmNpbFBhc3NEZXB0aFBhc3NPcCk7CisKKyAgICAgICAgbUxv
Y2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9TVEVOQ0lMX09QU19CQUNLKTsK
ICAgICB9CiB9CiAKQEAgLTY0NSw2ICsxMTQxLDggQEAKICAgICAgICAgewogICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9DVUxMX0ZBQ0UpOwogICAgICAgICB9CisKKyAgICAgICAg
bUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9DVUxMX0ZBQ0VfRU5BQkxF
RCk7CiAgICAgfQogfQogCkBAIC02NTQsNiArMTE1Miw4IEBACiAgICAgewogICAgICAgICBtQ3Vs
bEZhY2UgPSBjdWxsRmFjZTsKICAgICAgICAgbUZ1bmN0aW9ucy0+Y3VsbEZhY2UobUN1bGxGYWNl
KTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX0NV
TExfRkFDRSk7CiAgICAgfQogfQogCkBAIC02NjMsNiArMTE2Myw4IEBACiAgICAgewogICAgICAg
ICBtRnJvbnRGYWNlID0gZnJvbnRGYWNlOwogICAgICAgICBtRnVuY3Rpb25zLT5mcm9udEZhY2Uo
bUZyb250RmFjZSk7CisKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJ
UlRZX0JJVF9GUk9OVF9GQUNFKTsKICAgICB9CiB9CiAKQEAgLTY3OSw2ICsxMTgxLDggQEAKICAg
ICAgICAgewogICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9QT0xZR09OX09GRlNF
VF9GSUxMKTsKICAgICAgICAgfQorCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlN0
YXRlOjpESVJUWV9CSVRfUE9MWUdPTl9PRkZTRVRfRklMTF9FTkFCTEVEKTsKICAgICB9CiB9CiAK
QEAgLTY4OSwyMiArMTE5Myw4IEBACiAgICAgICAgIG1Qb2x5Z29uT2Zmc2V0RmFjdG9yID0gZmFj
dG9yOwogICAgICAgICBtUG9seWdvbk9mZnNldFVuaXRzID0gdW5pdHM7CiAgICAgICAgIG1GdW5j
dGlvbnMtPnBvbHlnb25PZmZzZXQobVBvbHlnb25PZmZzZXRGYWN0b3IsIG1Qb2x5Z29uT2Zmc2V0
VW5pdHMpOwotICAgIH0KLX0KIAotdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0TXVsdGlzYW1wbGVF
bmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBpZiAobU11bHRpc2FtcGxlRW5hYmxlZCAhPSBl
bmFibGVkKQotICAgIHsKLSAgICAgICAgbU11bHRpc2FtcGxlRW5hYmxlZCA9IGVuYWJsZWQ7Ci0g
ICAgICAgIGlmIChtTXVsdGlzYW1wbGVFbmFibGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
RnVuY3Rpb25zLT5lbmFibGUoR0xfTVVMVElTQU1QTEUpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9NVUxUSVNB
TVBMRSk7Ci0gICAgICAgIH0KKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6
OkRJUlRZX0JJVF9QT0xZR09OX09GRlNFVCk7CiAgICAgfQogfQogCkBAIC03MjEsNiArMTIxMSw4
IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmRpc2FibGUoR0xfUkFTVEVS
SVpFUl9ESVNDQVJEKTsKICAgICAgICAgfQorCisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQo
Z2w6OlN0YXRlOjpESVJUWV9CSVRfUkFTVEVSSVpFUl9ESVNDQVJEX0VOQUJMRUQpOwogICAgIH0K
IH0KIApAQCAtNzMwLDYgKzEyMjIsOCBAQAogICAgIHsKICAgICAgICAgbUxpbmVXaWR0aCA9IHdp
ZHRoOwogICAgICAgICBtRnVuY3Rpb25zLT5saW5lV2lkdGgobUxpbmVXaWR0aCk7CisKKyAgICAg
ICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9MSU5FX1dJRFRIKTsK
ICAgICB9CiB9CiAKQEAgLTc0Nyw2ICsxMjQxLDggQEAKICAgICAgICAgewogICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAg
ICAgICAgIH0KKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlf
QklUX1BSSU1JVElWRV9SRVNUQVJUX0VOQUJMRUQpOwogICAgIH0KIH0KIApAQCAtNzU1LDcgKzEy
NTEsMjAgQEAKICAgICBpZiAobUNsZWFyRGVwdGggIT0gY2xlYXJEZXB0aCkKICAgICB7CiAgICAg
ICAgIG1DbGVhckRlcHRoID0gY2xlYXJEZXB0aDsKLSAgICAgICAgbUZ1bmN0aW9ucy0+Y2xlYXJE
ZXB0aChtQ2xlYXJEZXB0aCk7CisKKyAgICAgICAgLy8gVGhlIGdsQ2xlYXJEZXB0aGYgZnVuY3Rp
b24gaXNuJ3QgYXZhaWxhYmxlIHVudGlsIE9wZW5HTCA0LjEuICBQcmVmZXIgaXQgd2hlbiBpdCBp
cworICAgICAgICAvLyBhdmFpbGFibGUgYmVjYXVzZSBPcGVuR0wgRVMgb25seSB3b3JrcyBpbiBm
bG9hdHMuCisgICAgICAgIGlmIChtRnVuY3Rpb25zLT5jbGVhckRlcHRoZikKKyAgICAgICAgewor
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y2xlYXJEZXB0aGYobUNsZWFyRGVwdGgpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1GdW5jdGlv
bnMtPmNsZWFyRGVwdGgpOworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y2xlYXJEZXB0aChtQ2xl
YXJEZXB0aCk7CisgICAgICAgIH0KKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpT
dGF0ZTo6RElSVFlfQklUX0NMRUFSX0RFUFRIKTsKICAgICB9CiB9CiAKQEAgLTc2NSw2ICsxMjc0
LDggQEAKICAgICB7CiAgICAgICAgIG1DbGVhckNvbG9yID0gY2xlYXJDb2xvcjsKICAgICAgICAg
bUZ1bmN0aW9ucy0+Y2xlYXJDb2xvcihtQ2xlYXJDb2xvci5yZWQsIG1DbGVhckNvbG9yLmdyZWVu
LCBtQ2xlYXJDb2xvci5ibHVlLCBtQ2xlYXJDb2xvci5hbHBoYSk7CisKKyAgICAgICAgbUxvY2Fs
RGlydHlCaXRzLnNldChnbDo6U3RhdGU6OkRJUlRZX0JJVF9DTEVBUl9DT0xPUik7CiAgICAgfQog
fQogCkBAIC03NzQsNyArMTI4NSwyNzEgQEAKICAgICB7CiAgICAgICAgIG1DbGVhclN0ZW5jaWwg
PSBjbGVhclN0ZW5jaWw7CiAgICAgICAgIG1GdW5jdGlvbnMtPmNsZWFyU3RlbmNpbChtQ2xlYXJT
dGVuY2lsKTsKKworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpTdGF0ZTo6RElSVFlf
QklUX0NMRUFSX1NURU5DSUwpOwogICAgIH0KIH0KIAordm9pZCBTdGF0ZU1hbmFnZXJHTDo6c3lu
Y1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRz
ICZnbERpcnR5Qml0cykKK3sKKyAgICBjb25zdCBhdXRvICZnbEFuZExvY2FsRGlydHlCaXRzID0g
KGdsRGlydHlCaXRzIHwgbUxvY2FsRGlydHlCaXRzKTsKKworICAgIGlmICghZ2xBbmRMb2NhbERp
cnR5Qml0cy5hbnkoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBU
T0RPKGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSBvbmx5IHN5bmNpbmcgdmVydGV4IHN0YXRlIGZvciBh
Y3RpdmUgYXR0cmlidXRlcworICAgIGZvciAoYXV0byBkaXJ0eUJpdCA6IGFuZ2xlOjpJdGVyYXRl
Qml0U2V0KGdsQW5kTG9jYWxEaXJ0eUJpdHMpKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChkaXJ0
eUJpdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9T
Q0lTU09SX1RFU1RfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBzZXRTY2lzc29yVGVzdEVuYWJs
ZWQoc3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NDSVNTT1I6CisgICAgICAg
ICAgICAgICAgc2V0U2Npc3NvcihzdGF0ZS5nZXRTY2lzc29yKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9WSUVXUE9SVDoK
KyAgICAgICAgICAgICAgICBzZXRWaWV3cG9ydChzdGF0ZS5nZXRWaWV3cG9ydCgpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRf
REVQVEhfUkFOR0U6CisgICAgICAgICAgICAgICAgc2V0RGVwdGhSYW5nZShzdGF0ZS5nZXROZWFy
UGxhbmUoKSwgc3RhdGUuZ2V0RmFyUGxhbmUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0VOQUJMRUQ6CisgICAg
ICAgICAgICAgICAgc2V0QmxlbmRFbmFibGVkKHN0YXRlLmlzQmxlbmRFbmFibGVkKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJ
VF9CTEVORF9DT0xPUjoKKyAgICAgICAgICAgICAgICBzZXRCbGVuZENvbG9yKHN0YXRlLmdldEJs
ZW5kQ29sb3IoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0ZVTkNTOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNvbnN0IGF1dG8gJmJsZW5kU3RhdGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlKCk7Cisg
ICAgICAgICAgICAgICAgc2V0QmxlbmRGdW5jcyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCLCBi
bGVuZFN0YXRlLmRlc3RCbGVuZFJHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJs
ZW5kU3RhdGUuc291cmNlQmxlbmRBbHBoYSwgYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX0JMRU5EX0VRVUFUSU9OUzoKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBhdXRvICZibGVuZFN0YXRlID0gc3RhdGUuZ2V0QmxlbmRTdGF0ZSgp
OworICAgICAgICAgICAgICAgIHNldEJsZW5kRXF1YXRpb25zKGJsZW5kU3RhdGUuYmxlbmRFcXVh
dGlvblJHQiwgYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZ
X0JJVF9DT0xPUl9NQVNLOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1
dG8gJmJsZW5kU3RhdGUgPSBzdGF0ZS5nZXRCbGVuZFN0YXRlKCk7CisgICAgICAgICAgICAgICAg
c2V0Q29sb3JNYXNrKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkLCBibGVuZFN0YXRlLmNvbG9yTWFz
a0dyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZFN0YXRlLmNvbG9yTWFz
a0JsdWUsIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9T
QU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBzZXRTYW1w
bGVBbHBoYVRvQ292ZXJhZ2VFbmFibGVkKHN0YXRlLmlzU2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5h
YmxlZCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0
YXRlOjpESVJUWV9CSVRfU0FNUExFX0NPVkVSQUdFX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAg
c2V0U2FtcGxlQ292ZXJhZ2VFbmFibGVkKHN0YXRlLmlzU2FtcGxlQ292ZXJhZ2VFbmFibGVkKCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJ
UlRZX0JJVF9TQU1QTEVfQ09WRVJBR0U6CisgICAgICAgICAgICAgICAgc2V0U2FtcGxlQ292ZXJh
Z2Uoc3RhdGUuZ2V0U2FtcGxlQ292ZXJhZ2VWYWx1ZSgpLCBzdGF0ZS5nZXRTYW1wbGVDb3ZlcmFn
ZUludmVydCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6
OlN0YXRlOjpESVJUWV9CSVRfREVQVEhfVEVTVF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIHNl
dERlcHRoVGVzdEVuYWJsZWQoc3RhdGUuaXNEZXB0aFRlc3RFbmFibGVkKCkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9ERVBU
SF9GVU5DOgorICAgICAgICAgICAgICAgIHNldERlcHRoRnVuYyhzdGF0ZS5nZXREZXB0aFN0ZW5j
aWxTdGF0ZSgpLmRlcHRoRnVuYyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0RFUFRIX01BU0s6CisgICAgICAgICAgICAgICAg
c2V0RGVwdGhNYXNrKHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCkuZGVwdGhNYXNrKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9C
SVRfU1RFTkNJTF9URVNUX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgc2V0U3RlbmNpbFRlc3RF
bmFibGVkKHN0YXRlLmlzU3RlbmNpbFRlc3RFbmFibGVkKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9TVEVOQ0lMX0ZVTkNT
X0ZST05UOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJmRlcHRo
U3RlbmNpbFN0YXRlID0gc3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsKKyAgICAgICAgICAg
ICAgICBzZXRTdGVuY2lsRnJvbnRGdW5jcyhkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRnVuYywg
c3RhdGUuZ2V0U3RlbmNpbFJlZigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNrKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRf
U1RFTkNJTF9GVU5DU19CQUNLOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0
IGF1dG8gJmRlcHRoU3RlbmNpbFN0YXRlID0gc3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsK
KyAgICAgICAgICAgICAgICBzZXRTdGVuY2lsQmFja0Z1bmNzKGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxCYWNrRnVuYywgc3RhdGUuZ2V0U3RlbmNpbEJhY2tSZWYoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzayk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNl
IGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfT1BTX0ZST05UOgorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJmRlcHRoU3RlbmNpbFN0YXRlID0gc3RhdGUuZ2V0
RGVwdGhTdGVuY2lsU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBzZXRTdGVuY2lsRnJvbnRPcHMo
ZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxQYXNzRGVwdGhGYWlsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsUGFz
c0RlcHRoUGFzcyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1NURU5DSUxfT1BTX0JBQ0s6CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmZGVwdGhTdGVuY2lsU3RhdGUg
PSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAgICAgICAgICAgICAgIHNldFN0ZW5j
aWxCYWNrT3BzKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrRmFpbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1Bhc3NE
ZXB0aEZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNzKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfU1RF
TkNJTF9XUklURU1BU0tfRlJPTlQ6CisgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEZyb250V3Jp
dGVtYXNrKHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCkuc3RlbmNpbFdyaXRlbWFzayk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlf
QklUX1NURU5DSUxfV1JJVEVNQVNLX0JBQ0s6CisgICAgICAgICAgICAgICAgc2V0U3RlbmNpbEJh
Y2tXcml0ZW1hc2soc3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKS5zdGVuY2lsQmFja1dyaXRl
bWFzayk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0
ZTo6RElSVFlfQklUX0NVTExfRkFDRV9FTkFCTEVEOgorICAgICAgICAgICAgICAgIHNldEN1bGxG
YWNlRW5hYmxlZChzdGF0ZS5pc0N1bGxGYWNlRW5hYmxlZCgpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VMTF9GQUNFOgor
ICAgICAgICAgICAgICAgIHNldEN1bGxGYWNlKHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpLmN1
bGxNb2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0
YXRlOjpESVJUWV9CSVRfRlJPTlRfRkFDRToKKyAgICAgICAgICAgICAgICBzZXRGcm9udEZhY2Uo
c3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkuZnJvbnRGYWNlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUE9MWUdPTl9PRkZT
RVRfRklMTF9FTkFCTEVEOgorICAgICAgICAgICAgICAgIHNldFBvbHlnb25PZmZzZXRGaWxsRW5h
YmxlZChzdGF0ZS5pc1BvbHlnb25PZmZzZXRGaWxsRW5hYmxlZCgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUE9MWUdPTl9P
RkZTRVQ6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmcmFzdGVy
aXplclN0YXRlID0gc3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCk7CisgICAgICAgICAgICAgICAg
c2V0UG9seWdvbk9mZnNldChyYXN0ZXJpemVyU3RhdGUucG9seWdvbk9mZnNldEZhY3RvciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhc3Rlcml6ZXJTdGF0ZS5wb2x5Z29uT2Zm
c2V0VW5pdHMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9SQVNURVJJWkVSX0RJU0NBUkRfRU5BQkxF
RDoKKyAgICAgICAgICAgICAgICBzZXRSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoc3RhdGUuaXNS
YXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0xJTkVfV0lEVEg6CisgICAgICAgICAg
ICAgICAgc2V0TGluZVdpZHRoKHN0YXRlLmdldExpbmVXaWR0aCgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUFJJTUlUSVZF
X1JFU1RBUlRfRU5BQkxFRDoKKyAgICAgICAgICAgICAgICBzZXRQcmltaXRpdmVSZXN0YXJ0RW5h
YmxlZChzdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9DTEVBUl9DT0xP
UjoKKyAgICAgICAgICAgICAgICBzZXRDbGVhckNvbG9yKHN0YXRlLmdldENvbG9yQ2xlYXJWYWx1
ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRl
OjpESVJUWV9CSVRfQ0xFQVJfREVQVEg6CisgICAgICAgICAgICAgICAgc2V0Q2xlYXJEZXB0aChz
dGF0ZS5nZXREZXB0aENsZWFyVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0NMRUFSX1NURU5DSUw6CisgICAgICAg
ICAgICAgICAgc2V0Q2xlYXJTdGVuY2lsKHN0YXRlLmdldFN0ZW5jaWxDbGVhclZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZ
X0JJVF9VTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6
IHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICBzZXRQaXhlbFVucGFja1N0YXRlKHN0YXRlLmdl
dFVucGFja1N0YXRlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgICAgICAg
ICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCisgICAgICAgICAgICAgICAgc2V0UGl4ZWxV
bnBhY2tTdGF0ZShzdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfVU5QQUNLX0lNQUdFX0hF
SUdIVDoKKyAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBzcGxpdCB0aGlzCisgICAg
ICAgICAgICAgICAgc2V0UGl4ZWxVbnBhY2tTdGF0ZShzdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJU
WV9CSVRfVU5QQUNLX1NLSVBfSU1BR0VTOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGls
bCk6IHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICBzZXRQaXhlbFVucGFja1N0YXRlKHN0YXRl
LmdldFVucGFja1N0YXRlKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9ST1dTOgorICAgICAgICAgICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICBzZXRQaXhl
bFVucGFja1N0YXRlKHN0YXRlLmdldFVucGFja1N0YXRlKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9VTlBBQ0tfU0tJUF9Q
SVhFTFM6CisgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogc3BsaXQgdGhpcworICAg
ICAgICAgICAgICAgIHNldFBpeGVsVW5wYWNrU3RhdGUoc3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElS
VFlfQklUX1BBQ0tfQUxJR05NRU5UOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6
IHNwbGl0IHRoaXMKKyAgICAgICAgICAgICAgICBzZXRQaXhlbFBhY2tTdGF0ZShzdGF0ZS5nZXRQ
YWNrU3RhdGUoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX1BBQ0tfUkVWRVJTRV9ST1dfT1JERVI6CisgICAgICAgICAgICAg
ICAgLy8gVE9ETyhqbWFkaWxsKTogc3BsaXQgdGhpcworICAgICAgICAgICAgICAgIHNldFBpeGVs
UGFja1N0YXRlKHN0YXRlLmdldFBhY2tTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfUEFDS19ST1dfTEVOR1RIOgor
ICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IHNwbGl0IHRoaXMKKyAgICAgICAgICAg
ICAgICBzZXRQaXhlbFBhY2tTdGF0ZShzdGF0ZS5nZXRQYWNrU3RhdGUoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1BBQ0tf
U0tJUF9ST1dTOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IHNwbGl0IHRoaXMK
KyAgICAgICAgICAgICAgICBzZXRQaXhlbFBhY2tTdGF0ZShzdGF0ZS5nZXRQYWNrU3RhdGUoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElS
VFlfQklUX1BBQ0tfU0tJUF9QSVhFTFM6CisgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogc3BsaXQgdGhpcworICAgICAgICAgICAgICAgIHNldFBpeGVsUGFja1N0YXRlKHN0YXRlLmdl
dFBhY2tTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Z2w6OlN0YXRlOjpESVJUWV9CSVRfRElUSEVSX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgLy8g
VE9ETyhqbWFkaWxsKTogaW1wbGVtZW50IHRoaXMKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfR0VORVJBVEVfTUlQTUFQX0hJTlQ6
CisgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogaW1wbGVtZW50IHRoaXMKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRf
U0hBREVSX0RFUklWQVRJVkVfSElOVDoKKyAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwp
OiBpbXBsZW1lbnQgdGhpcworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9SRUFEX0ZSQU1FQlVGRkVSX0JJTkRJTkc6CisgICAgICAg
ICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogaW1wbGVtZW50IHRoaXMKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfRFJBV19GUkFN
RUJVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGltcGxl
bWVudCB0aGlzCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpT
dGF0ZTo6RElSVFlfQklUX1JFTkRFUkJVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IGltcGxlbWVudCB0aGlzCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX1ZFUlRFWF9BUlJBWV9CSU5ESU5H
OgorICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGltcGxlbWVudCB0aGlzCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklU
X1BST0dSQU1fQklORElORzoKKyAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBpbXBs
ZW1lbnQgdGhpcworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZGlydHlCaXQgPj0gZ2w6OlN0
YXRlOjpESVJUWV9CSVRfQ1VSUkVOVF9WQUxVRV8wICYmCisgICAgICAgICAgICAgICAgICAgICAg
IGRpcnR5Qml0IDwgZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVOVF9WQUxVRV9NQVgpOworICAg
ICAgICAgICAgICAgIHNpemVfdCBhdHRyaWJJbmRleCA9CisgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHNpemVfdD4oZGlydHlCaXQpIC0gZ2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVO
VF9WQUxVRV8wOworICAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZUN1cnJlbnREYXRhKGF0dHJp
YkluZGV4LCBzdGF0ZS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KGF0dHJpYkluZGV4KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnJlc2V0KCk7
CisgICAgfQogfQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRGcmFtZWJ1ZmZlclNSR0JFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAobUZyYW1lYnVmZmVyU1JHQkVuYWJsZWQgIT0g
ZW5hYmxlZCkKKyAgICB7CisgICAgICAgIG1GcmFtZWJ1ZmZlclNSR0JFbmFibGVkID0gZW5hYmxl
ZDsKKyAgICAgICAgaWYgKG1GcmFtZWJ1ZmZlclNSR0JFbmFibGVkKQorICAgICAgICB7CisgICAg
ICAgICAgICBtRnVuY3Rpb25zLT5lbmFibGUoR0xfRlJBTUVCVUZGRVJfU1JHQik7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5kaXNh
YmxlKEdMX0ZSQU1FQlVGRkVSX1NSR0IpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN0
YXRlTWFuYWdlckdMOjpzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZChib29sIGVuYWJs
ZWQpCit7CisgICAgaWYgKG1UZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZCAhPSBlbmFibGVk
KQorICAgIHsKKyAgICAgICAgbVRleHR1cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVkID0gZW5hYmxl
ZDsKKyAgICAgICAgaWYgKG1UZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZCkKKyAgICAgICAg
eworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZW5hYmxlKEdMX1RFWFRVUkVfQ1VCRV9NQVBfU0VB
TUxFU1MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+ZGlzYWJsZShHTF9URVhUVVJFX0NVQkVfTUFQX1NFQU1MRVNTKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdM
LmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2
ICsxMSw3IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9FcnJvci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9u
c2dsX3R5cGVkZWZzLmgiCiAKQEAgLTI3LDMwICsyOCw0MiBAQAogewogCiBjbGFzcyBGdW5jdGlv
bnNHTDsKK2NsYXNzIFRyYW5zZm9ybUZlZWRiYWNrR0w7CitjbGFzcyBRdWVyeUdMOwogCi1jbGFz
cyBTdGF0ZU1hbmFnZXJHTCA6IGFuZ2xlOjpOb25Db3B5YWJsZQorY2xhc3MgU3RhdGVNYW5hZ2Vy
R0wgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgogICAgIFN0YXRlTWFu
YWdlckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IGdsOjpDYXBzICZyZW5k
ZXJlckNhcHMpOwogCisgICAgdm9pZCBkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAg
ICB2b2lkIGRlbGV0ZVZlcnRleEFycmF5KEdMdWludCB2YW8pOworICAgIHZvaWQgZGVsZXRlVGV4
dHVyZShHTHVpbnQgdGV4dHVyZSk7CisgICAgdm9pZCBkZWxldGVTYW1wbGVyKEdMdWludCBzYW1w
bGVyKTsKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGRl
bGV0ZUZyYW1lYnVmZmVyKEdMdWludCBmYm8pOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVmZmVy
KEdMdWludCByYm8pOworICAgIHZvaWQgZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRy
YW5zZm9ybUZlZWRiYWNrKTsKKyAgICB2b2lkIGRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVyeSk7CisK
ICAgICB2b2lkIHVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwotICAgIHZvaWQgYmluZFZlcnRl
eEFycmF5KEdMdWludCB2YW8pOworICAgIHZvaWQgZm9yY2VVc2VQcm9ncmFtKEdMdWludCBwcm9n
cmFtKTsKKyAgICB2b2lkIGJpbmRWZXJ0ZXhBcnJheShHTHVpbnQgdmFvLCBHTHVpbnQgZWxlbWVu
dEFycmF5QnVmZmVyKTsKICAgICB2b2lkIGJpbmRCdWZmZXIoR0xlbnVtIHR5cGUsIEdMdWludCBi
dWZmZXIpOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0xlbnVtIHR5cGUsIHNpemVfdCBpbmRl
eCwgR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFuZ2UoR0xlbnVtIHR5cGUs
IHNpemVfdCBpbmRleCwgR0x1aW50IGJ1ZmZlciwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUp
OwogICAgIHZvaWQgYWN0aXZlVGV4dHVyZShzaXplX3QgdW5pdCk7CiAgICAgdm9pZCBiaW5kVGV4
dHVyZShHTGVudW0gdHlwZSwgR0x1aW50IHRleHR1cmUpOwotICAgIHZvaWQgc2V0UGl4ZWxVbnBh
Y2tTdGF0ZShHTGludCBhbGlnbm1lbnQsIEdMaW50IHJvd0xlbmd0aCk7CisgICAgdm9pZCBiaW5k
U2FtcGxlcihzaXplX3QgdW5pdCwgR0x1aW50IHNhbXBsZXIpOwogICAgIHZvaWQgYmluZEZyYW1l
YnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQgZnJhbWVidWZmZXIpOwogICAgIHZvaWQgYmluZFJl
bmRlcmJ1ZmZlcihHTGVudW0gdHlwZSwgR0x1aW50IHJlbmRlcmJ1ZmZlcik7CisgICAgdm9pZCBi
aW5kVHJhbnNmb3JtRmVlZGJhY2soR0xlbnVtIHR5cGUsIEdMdWludCB0cmFuc2Zvcm1GZWVkYmFj
ayk7CisgICAgdm9pZCBiZWdpblF1ZXJ5KEdMZW51bSB0eXBlLCBHTHVpbnQgcXVlcnkpOworICAg
IHZvaWQgZW5kUXVlcnkoR0xlbnVtIHR5cGUsIEdMdWludCBxdWVyeSk7CisgICAgdm9pZCBvbkJl
Z2luUXVlcnkoUXVlcnlHTCAqcXVlcnkpOwogCi0gICAgdm9pZCBzZXRDbGVhclN0YXRlKGNvbnN0
IGdsOjpTdGF0ZSAmc3RhdGUsIEdMYml0ZmllbGQgbWFzayk7CisgICAgdm9pZCBzZXRBdHRyaWJ1
dGVDdXJyZW50RGF0YShzaXplX3QgaW5kZXgsIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50
VmFsdWVEYXRhICZkYXRhKTsKIAotICAgIGdsOjpFcnJvciBzZXREcmF3QXJyYXlzU3RhdGUoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKLSAgICBnbDo6
RXJyb3Igc2V0RHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkRhdGEgJmRhdGEsIEdMc2l6ZWkg
Y291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqKm91dEluZGljZXMpOwotCi0gIHBy
aXZhdGU6Ci0gICAgZ2w6OkVycm9yIHNldEdlbmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkRhdGEg
JmRhdGEpOwotCiAgICAgdm9pZCBzZXRTY2lzc29yVGVzdEVuYWJsZWQoYm9vbCBlbmFibGVkKTsK
ICAgICB2b2lkIHNldFNjaXNzb3IoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc2Npc3Nvcik7CiAKQEAg
LTU5LDcgKzcyLDEwIEBACiAKICAgICB2b2lkIHNldEJsZW5kRW5hYmxlZChib29sIGVuYWJsZWQp
OwogICAgIHZvaWQgc2V0QmxlbmRDb2xvcihjb25zdCBnbDo6Q29sb3JGICZibGVuZENvbG9yKTsK
LSAgICB2b2lkIHNldEJsZW5kRnVuY3MoR0xlbnVtIHNvdXJjZUJsZW5kUkdCLCBHTGVudW0gZGVz
dEJsZW5kUkdCLCBHTGVudW0gc291cmNlQmxlbmRBbHBoYSwgR0xlbnVtIGRlc3RCbGVuZEFscGhh
KTsKKyAgICB2b2lkIHNldEJsZW5kRnVuY3MoR0xlbnVtIHNvdXJjZUJsZW5kUkdCLAorICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEJsZW5kUkdCLAorICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gc291cmNlQmxlbmRBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGRlc3RCbGVuZEFscGhhKTsKICAgICB2b2lkIHNldEJsZW5kRXF1YXRpb25zKEdMZW51bSBi
bGVuZEVxdWF0aW9uUkdCLCBHTGVudW0gYmxlbmRFcXVhdGlvbkFscGhhKTsKICAgICB2b2lkIHNl
dENvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKTsK
ICAgICB2b2lkIHNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsK
QEAgLTgyLDcgKzk4LDYgQEAKICAgICB2b2lkIHNldEZyb250RmFjZShHTGVudW0gZnJvbnRGYWNl
KTsKICAgICB2b2lkIHNldFBvbHlnb25PZmZzZXRGaWxsRW5hYmxlZChib29sIGVuYWJsZWQpOwog
ICAgIHZvaWQgc2V0UG9seWdvbk9mZnNldChmbG9hdCBmYWN0b3IsIGZsb2F0IHVuaXRzKTsKLSAg
ICB2b2lkIHNldE11bHRpc2FtcGxlRW5hYmxlZChib29sIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0
UmFzdGVyaXplckRpc2NhcmRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRMaW5l
V2lkdGgoZmxvYXQgd2lkdGgpOwogCkBAIC05MiwxOSArMTA3LDkwIEBACiAgICAgdm9pZCBzZXRD
bGVhckRlcHRoKGZsb2F0IGNsZWFyRGVwdGgpOwogICAgIHZvaWQgc2V0Q2xlYXJTdGVuY2lsKEdM
aW50IGNsZWFyU3RlbmNpbCk7CiAKKyAgICB2b2lkIHNldFBpeGVsVW5wYWNrU3RhdGUoY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjayk7CisgICAgdm9pZCBzZXRQaXhlbFVucGFja1N0
YXRlKEdMaW50IGFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
cm93TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBza2lwUm93cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcFBpeGVscywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW1hZ2VIZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNraXBJbWFnZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB1bnBhY2tCdWZmZXIpOworICAgIHZvaWQgc2V0UGl4ZWxQYWNrU3RhdGUoY29u
c3QgZ2w6OlBpeGVsUGFja1N0YXRlICZwYWNrKTsKKyAgICB2b2lkIHNldFBpeGVsUGFja1N0YXRl
KEdMaW50IGFsaWdubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJvd0xl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNraXBSb3dzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcFBpeGVscywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwYWNrQnVmZmVyKTsKKworICAgIHZvaWQgc2V0RnJhbWVidWZmZXJT
UkdCRW5hYmxlZChib29sIGVuYWJsZWQpOworCisgICAgdm9pZCBvbkRlbGV0ZVF1ZXJ5T2JqZWN0
KFF1ZXJ5R0wgKnF1ZXJ5KTsKKworICAgIGdsOjpFcnJvciBzZXREcmF3QXJyYXlzU3RhdGUoY29u
c3QgZ2w6OkRhdGEgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQp
OworICAgIGdsOjpFcnJvciBzZXREcmF3RWxlbWVudHNTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJbmRpY2VzKTsK
KworICAgIGdsOjpFcnJvciBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpEYXRhICZkYXRhKTsKKwor
ICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0
ZTo6RGlydHlCaXRzICZnbERpcnR5Qml0cyk7CisKKyAgcHJpdmF0ZToKKyAgICBnbDo6RXJyb3Ig
c2V0R2VuZXJpY0RyYXdTdGF0ZShjb25zdCBnbDo6RGF0YSAmZGF0YSk7CisKKyAgICB2b2lkIHNl
dFRleHR1cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisKICAgICBjb25z
dCBGdW5jdGlvbnNHTCAqbUZ1bmN0aW9uczsKIAogICAgIEdMdWludCBtUHJvZ3JhbTsKKwogICAg
IEdMdWludCBtVkFPOworICAgIHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWVEYXRhPiBtVmVydGV4QXR0cmliQ3VycmVudFZhbHVlczsKKwogICAgIHN0ZDo6bWFwPEdMZW51
bSwgR0x1aW50PiBtQnVmZmVyczsKIAorICAgIHN0cnVjdCBJbmRleGVkQnVmZmVyQmluZGluZwor
ICAgIHsKKyAgICAgICAgSW5kZXhlZEJ1ZmZlckJpbmRpbmcoKTsKKworICAgICAgICBzaXplX3Qg
b2Zmc2V0OworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgR0x1aW50IGJ1ZmZlcjsKKyAg
ICB9OworICAgIHN0ZDo6bWFwPEdMZW51bSwgc3RkOjp2ZWN0b3I8SW5kZXhlZEJ1ZmZlckJpbmRp
bmc+PiBtSW5kZXhlZEJ1ZmZlcnM7CisKICAgICBzaXplX3QgbVRleHR1cmVVbml0SW5kZXg7CiAg
ICAgc3RkOjptYXA8R0xlbnVtLCBzdGQ6OnZlY3RvcjxHTHVpbnQ+PiBtVGV4dHVyZXM7CisgICAg
c3RkOjp2ZWN0b3I8R0x1aW50PiBtU2FtcGxlcnM7CiAKKyAgICBHTHVpbnQgbVRyYW5zZm9ybUZl
ZWRiYWNrOworCisgICAgc3RkOjptYXA8R0xlbnVtLCBHTHVpbnQ+IG1RdWVyaWVzOworCisgICAg
VHJhbnNmb3JtRmVlZGJhY2tHTCAqbVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2s7CisgICAgc3Rk
OjpzZXQ8UXVlcnlHTCAqPiBtQ3VycmVudFF1ZXJpZXM7CisgICAgdWludHB0cl90IG1QcmV2RHJh
d0NvbnRleHQ7CisKICAgICBHTGludCBtVW5wYWNrQWxpZ25tZW50OwogICAgIEdMaW50IG1VbnBh
Y2tSb3dMZW5ndGg7CisgICAgR0xpbnQgbVVucGFja1NraXBSb3dzOworICAgIEdMaW50IG1VbnBh
Y2tTa2lwUGl4ZWxzOworICAgIEdMaW50IG1VbnBhY2tJbWFnZUhlaWdodDsKKyAgICBHTGludCBt
VW5wYWNrU2tpcEltYWdlczsKIAotICAgIHN0ZDo6bWFwPEdMZW51bSwgR0x1aW50PiBtRnJhbWVi
dWZmZXJzOworICAgIEdMaW50IG1QYWNrQWxpZ25tZW50OworICAgIEdMaW50IG1QYWNrUm93TGVu
Z3RoOworICAgIEdMaW50IG1QYWNrU2tpcFJvd3M7CisgICAgR0xpbnQgbVBhY2tTa2lwUGl4ZWxz
OworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogQ29udmVydCB0byBzdGQ6OmFycmF5IHdoZW4gYXZh
aWxhYmxlCisgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBtRnJhbWVidWZmZXJzOwogICAgIEdMdWlu
dCBtUmVuZGVyYnVmZmVyOwogCiAgICAgYm9vbCBtU2Npc3NvclRlc3RFbmFibGVkOwpAQCAtMTU2
LDcgKzI0Miw2IEBACiAgICAgYm9vbCBtUG9seWdvbk9mZnNldEZpbGxFbmFibGVkOwogICAgIEdM
ZmxvYXQgbVBvbHlnb25PZmZzZXRGYWN0b3I7CiAgICAgR0xmbG9hdCBtUG9seWdvbk9mZnNldFVu
aXRzOwotICAgIGJvb2wgbU11bHRpc2FtcGxlRW5hYmxlZDsKICAgICBib29sIG1SYXN0ZXJpemVy
RGlzY2FyZEVuYWJsZWQ7CiAgICAgZmxvYXQgbUxpbmVXaWR0aDsKIApAQCAtMTY1LDYgKzI1MCwx
MSBAQAogICAgIGdsOjpDb2xvckYgbUNsZWFyQ29sb3I7CiAgICAgZmxvYXQgbUNsZWFyRGVwdGg7
CiAgICAgR0xpbnQgbUNsZWFyU3RlbmNpbDsKKworICAgIGJvb2wgbUZyYW1lYnVmZmVyU1JHQkVu
YWJsZWQ7CisgICAgYm9vbCBtVGV4dHVyZUN1YmVtYXBTZWFtbGVzc0VuYWJsZWQ7CisKKyAgICBn
bDo6U3RhdGU6OkRpcnR5Qml0cyBtTG9jYWxEaXJ0eUJpdHM7CiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvU3VyZmFjZUdMLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgsMTEgKzgsMTMgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL1N1cmZhY2VHTC5oIgogCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVi
dWZmZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIK
KwogbmFtZXNwYWNlIHJ4CiB7CiAKLVN1cmZhY2VHTDo6U3VyZmFjZUdMKCkKLSAgICA6IFN1cmZh
Y2VJbXBsKCkKK1N1cmZhY2VHTDo6U3VyZmFjZUdMKFJlbmRlcmVyR0wgKnJlbmRlcmVyKSA6IFN1
cmZhY2VJbXBsKCksIG1SZW5kZXJlcihyZW5kZXJlcikKIHsKIH0KIApAQCAtMjAsNCArMjIsOSBA
QAogewogfQogCitGcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VHTDo6Y3JlYXRlRGVmYXVsdEZyYW1l
YnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKK3sKKyAgICByZXR1cm4g
bmV3IEZyYW1lYnVmZmVyR0woZGF0YSwgbVJlbmRlcmVyLT5nZXRGdW5jdGlvbnMoKSwgbVJlbmRl
cmVyLT5nZXRTdGF0ZU1hbmFnZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJl
bmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpLCB0cnVlKTsKIH0KK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
U3VyZmFjZUdMLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQsMTAgKzE0LDEyIEBACiBuYW1lc3BhY2UgcngKIHsKIAorY2xhc3MgUmVuZGVyZXJHTDsKKwog
Y2xhc3MgU3VyZmFjZUdMIDogcHVibGljIFN1cmZhY2VJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBT
dXJmYWNlR0woKTsKKyAgICBTdXJmYWNlR0woUmVuZGVyZXJHTCAqcmVuZGVyZXIpOwogICAgIH5T
dXJmYWNlR0woKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVy
VGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LApA
QCAtMjYsNyArMjgsMTIgQEAKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAiTm90IHN1cHBvcnRlZCBvbiBPcGVuR0wiKTsKICAgICB9CiAKKyAgICBGcmFtZWJ1ZmZl
ckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRh
dGEgJmRhdGEpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCBlZ2w6OkVycm9yIG1ha2VDdXJyZW50
KCkgPSAwOworCisgIHByaXZhdGU6CisgICAgUmVuZGVyZXJHTCAqbVJlbmRlcmVyOwogfTsKIAog
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1RleHR1cmVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJl
R0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMywyOCArMTMsMTcgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9TdGF0ZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L0JsaXRHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9Xb3JrYXJvdW5kc0dMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9y
bWF0dXRpbHNnbC5oIgogCiBuYW1lc3BhY2UgcngKIHsKIAotc3RhdGljIHZvaWQgU2V0VW5wYWNr
U3RhdGVGb3JUZXhJbWFnZShTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyLCBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrKQotewotICAgIGNvbnN0IGdsOjpCdWZmZXIgKnVucGFj
a0J1ZmZlciA9IHVucGFjay5waXhlbEJ1ZmZlci5nZXQoKTsKLSAgICBpZiAodW5wYWNrQnVmZmVy
ICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQotICAg
IGlmICh1bnBhY2suc2tpcFJvd3MgIT0gMCB8fCB1bnBhY2suc2tpcFBpeGVscyAhPSAwIHx8IHVu
cGFjay5pbWFnZUhlaWdodCAhPSAwIHx8IHVucGFjay5za2lwSW1hZ2VzICE9IDApCi0gICAgewot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQotICAgIHN0YXRlTWFuYWdlci0+c2V0UGl4
ZWxVbnBhY2tTdGF0ZSh1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93TGVuZ3RoKTsKLX0KLQog
c3RhdGljIGJvb2wgVXNlVGV4SW1hZ2UyRChHTGVudW0gdGV4dHVyZVR5cGUpCiB7CiAgICAgcmV0
dXJuIHRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVfMkQgfHwgdGV4dHVyZVR5cGUgPT0gR0xfVEVY
VFVSRV9DVUJFX01BUDsKQEAgLTU3LDI3ICs0Niw5MyBAQAogICAgIH0KIH0KIAotVGV4dHVyZUdM
OjpUZXh0dXJlR0woR0xlbnVtIHR5cGUsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0
YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCitzdGF0aWMgYm9vbCBJc0xVTUFGb3JtYXQoR0xl
bnVtIGZvcm1hdCkKK3sKKyAgICByZXR1cm4gZm9ybWF0ID09IEdMX0xVTUlOQU5DRSB8fCBmb3Jt
YXQgPT0gR0xfQUxQSEEgfHwgZm9ybWF0ID09IEdMX0xVTUlOQU5DRV9BTFBIQTsKK30KKworc3Rh
dGljIExVTUFXb3JrYXJvdW5kR0wgR2V0TFVNQVdvcmthcm91bmRJbmZvKGNvbnN0IGdsOjpJbnRl
cm5hbEZvcm1hdCAmb3JpZ2luYWxGb3JtYXRJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0aW5hdGlvbkZvcm1hdCkKK3sKKyAgICBp
ZiAoSXNMVU1BRm9ybWF0KG9yaWdpbmFsRm9ybWF0SW5mby5mb3JtYXQpKQorICAgIHsKKyAgICAg
ICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZkZXN0aW5hdGlvbkZvcm1hdEluZm8gPQorICAg
ICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhkZXN0aW5hdGlvbkZvcm1hdCk7Cisg
ICAgICAgIHJldHVybiBMVU1BV29ya2Fyb3VuZEdMKCFJc0xVTUFGb3JtYXQoZGVzdGluYXRpb25G
b3JtYXRJbmZvLmZvcm1hdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uRm9ybWF0SW5mby5mb3JtYXQpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICByZXR1cm4gTFVNQVdvcmthcm91bmRHTChmYWxzZSwgR0xfTk9ORSk7CisgICAgfQorfQorCitz
dGF0aWMgYm9vbCBJc0RlcHRoU3RlbmNpbEZvcm1hdChHTGVudW0gZm9ybWF0KQoreworICAgIHJl
dHVybiBmb3JtYXQgPT0gR0xfREVQVEhfQ09NUE9ORU5UIHx8IGZvcm1hdCA9PSBHTF9ERVBUSF9T
VEVOQ0lMOworfQorCitzdGF0aWMgYm9vbCBHZXREZXB0aFN0ZW5jaWxXb3JrYXJvdW5kKGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAmb3JpZ2luYWxGb3JtYXRJbmZvKQoreworICAgIHJldHVybiBJ
c0RlcHRoU3RlbmNpbEZvcm1hdChvcmlnaW5hbEZvcm1hdEluZm8uZm9ybWF0KTsKK30KKworc3Rh
dGljIExldmVsSW5mb0dMIEdldExldmVsSW5mbyhHTGVudW0gb3JpZ2luYWxGb3JtYXQsIEdMZW51
bSBkZXN0aW5hdGlvbkZvcm1hdCkKK3sKKyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJm9y
aWdpbmFsRm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8ob3JpZ2luYWxGb3Jt
YXQpOworICAgIHJldHVybiBMZXZlbEluZm9HTChvcmlnaW5hbEZvcm1hdCwgR2V0RGVwdGhTdGVu
Y2lsV29ya2Fyb3VuZChvcmlnaW5hbEZvcm1hdEluZm8pLAorICAgICAgICAgICAgICAgICAgICAg
ICBHZXRMVU1BV29ya2Fyb3VuZEluZm8ob3JpZ2luYWxGb3JtYXRJbmZvLCBkZXN0aW5hdGlvbkZv
cm1hdCkpOworfQorCitMVU1BV29ya2Fyb3VuZEdMOjpMVU1BV29ya2Fyb3VuZEdMKCkgOiBMVU1B
V29ya2Fyb3VuZEdMKGZhbHNlLCBHTF9OT05FKQoreworfQorCitMVU1BV29ya2Fyb3VuZEdMOjpM
VU1BV29ya2Fyb3VuZEdMKGJvb2wgZW5hYmxlZF8sIEdMZW51bSB3b3JrYXJvdW5kRm9ybWF0XykK
KyAgICA6IGVuYWJsZWQoZW5hYmxlZF8pLCB3b3JrYXJvdW5kRm9ybWF0KHdvcmthcm91bmRGb3Jt
YXRfKQoreworfQorCitMZXZlbEluZm9HTDo6TGV2ZWxJbmZvR0woKSA6IExldmVsSW5mb0dMKEdM
X05PTkUsIGZhbHNlLCBMVU1BV29ya2Fyb3VuZEdMKCkpCit7Cit9CisKK0xldmVsSW5mb0dMOjpM
ZXZlbEluZm9HTChHTGVudW0gc291cmNlRm9ybWF0XywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGRlcHRoU3RlbmNpbFdvcmthcm91bmRfLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExVTUFXb3JrYXJvdW5kR0wgJmx1bWFXb3JrYXJvdW5kXykKKyAgICA6IHNvdXJjZUZv
cm1hdChzb3VyY2VGb3JtYXRfKSwKKyAgICAgIGRlcHRoU3RlbmNpbFdvcmthcm91bmQoZGVwdGhT
dGVuY2lsV29ya2Fyb3VuZF8pLAorICAgICAgbHVtYVdvcmthcm91bmQobHVtYVdvcmthcm91bmRf
KQoreworfQorCitUZXh0dXJlR0w6OlRleHR1cmVHTChHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAg
ICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICBC
bGl0R0wgKmJsaXR0ZXIpCiAgICAgOiBUZXh0dXJlSW1wbCgpLAogICAgICAgbVRleHR1cmVUeXBl
KHR5cGUpLAogICAgICAgbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLAorICAgICAgbVdvcmthcm91bmRz
KHdvcmthcm91bmRzKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVNYW5hZ2VyKSwKLSAgICAg
IG1BcHBsaWVkU2FtcGxlclN0YXRlKCksCisgICAgICBtQmxpdHRlcihibGl0dGVyKSwKKyAgICAg
IG1MZXZlbEluZm8oZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyksCisgICAg
ICBtQXBwbGllZFRleHR1cmVTdGF0ZSgpLAogICAgICAgbVRleHR1cmVJRCgwKQogewogICAgIEFT
U0VSVChtRnVuY3Rpb25zKTsKICAgICBBU1NFUlQobVN0YXRlTWFuYWdlcik7CisgICAgQVNTRVJU
KG1CbGl0dGVyKTsKIAogICAgIG1GdW5jdGlvbnMtPmdlblRleHR1cmVzKDEsICZtVGV4dHVyZUlE
KTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJl
SUQpOwogfQogCiBUZXh0dXJlR0w6On5UZXh0dXJlR0woKQogewotICAgIGlmIChtVGV4dHVyZUlE
KQotICAgIHsKLSAgICAgICAgbUZ1bmN0aW9ucy0+ZGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJl
SUQpOwotICAgICAgICBtVGV4dHVyZUlEID0gMDsKLSAgICB9CisgICAgbVN0YXRlTWFuYWdlci0+
ZGVsZXRlVGV4dHVyZShtVGV4dHVyZUlEKTsKKyAgICBtVGV4dHVyZUlEID0gMDsKIH0KIAogdm9p
ZCBUZXh0dXJlR0w6OnNldFVzYWdlKEdMZW51bSB1c2FnZSkKQEAgLTkyLDIzICsxNDcsMzAgQEAK
ICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKCZDb21wYXRpYmxlVGV4dHVyZVRhcmdldCk7
IC8vIFJlZmVyZW5jZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHdhcm5pbmdzLgogICAgIEFTU0VS
VChDb21wYXRpYmxlVGV4dHVyZVRhcmdldChtVGV4dHVyZVR5cGUsIHRhcmdldCkpOwogCi0gICAg
U2V0VW5wYWNrU3RhdGVGb3JUZXhJbWFnZShtU3RhdGVNYW5hZ2VyLCB1bnBhY2spOworICAgIG5h
dGl2ZWdsOjpUZXhJbWFnZUZvcm1hdCB0ZXhJbWFnZUZvcm1hdCA9CisgICAgICAgIG5hdGl2ZWds
OjpHZXRUZXhJbWFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGludGVybmFsRm9y
bWF0LCBmb3JtYXQsIHR5cGUpOwogCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRl
eHR1cmVUeXBlLCBtVGV4dHVyZUlEKTsKICAgICBpZiAoVXNlVGV4SW1hZ2UyRChtVGV4dHVyZVR5
cGUpKQogICAgIHsKICAgICAgICAgQVNTRVJUKHNpemUuZGVwdGggPT0gMSk7Ci0gICAgICAgIG1G
dW5jdGlvbnMtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUu
d2lkdGgsIHNpemUuaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgICAgIG1G
dW5jdGlvbnMtPnRleEltYWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCB0
ZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgMCwgdGV4SW1hZ2VGb3JtYXQuZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleEltYWdlRm9ybWF0LnR5cGUsIHBpeGVs
cyk7CiAgICAgfQogICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBlKSkKICAg
ICB7Ci0gICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlM0QodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoLCAwLCBmb3JtYXQs
IHR5cGUsIHBpeGVscyk7CisgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlM0QodGFyZ2V0LCBz
dGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCB0ZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoLCBzaXplLmhlaWdodCwg
c2l6ZS5kZXB0aCwgMCwgdGV4SW1hZ2VGb3JtYXQuZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRleEltYWdlRm9ybWF0LnR5cGUsIHBpeGVscyk7CiAgICAgfQogICAgIGVs
c2UKICAgICB7CiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCisgICAgbUxldmVsSW5m
b1tsZXZlbF0gPSBHZXRMZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQsIHRleEltYWdlRm9ybWF0Lmlu
dGVybmFsRm9ybWF0KTsKKwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQog
CkBAIC0xMTcsMTA4ICsxNzksMTQwIEBACiB7CiAgICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJl
VGFyZ2V0KG1UZXh0dXJlVHlwZSwgdGFyZ2V0KSk7CiAKLSAgICBTZXRVbnBhY2tTdGF0ZUZvclRl
eEltYWdlKG1TdGF0ZU1hbmFnZXIsIHVucGFjayk7CisgICAgbmF0aXZlZ2w6OlRleFN1YkltYWdl
Rm9ybWF0IHRleFN1YkltYWdlRm9ybWF0ID0KKyAgICAgICAgbmF0aXZlZ2w6OkdldFRleFN1Yklt
YWdlRm9ybWF0KG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgZm9ybWF0LCB0eXBlKTsKIAogICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1cmVJRCk7CiAg
ICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBlKSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChhcmVhLnogPT0gMCAmJiBhcmVhLmRlcHRoID09IDEpOwotICAgICAgICBtRnVuY3Rpb25zLT50
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRoLCBh
cmVhLmhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgICAgICBtRnVuY3Rpb25zLT50
ZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJlYS54LCBh
cmVhLnksIGFyZWEud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJl
YS5oZWlnaHQsIHRleFN1YkltYWdlRm9ybWF0LmZvcm1hdCwgdGV4U3ViSW1hZ2VGb3JtYXQudHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwogICAgIH0KICAg
ICBlbHNlIGlmIChVc2VUZXhJbWFnZTNEKG1UZXh0dXJlVHlwZSkpCiAgICAgewotICAgICAgICBt
RnVuY3Rpb25zLT50ZXhTdWJJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGFyZWEueCwgYXJlYS55LCBh
cmVhLnosIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCBhcmVhLmRlcHRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKKyAgICAgICAgbUZ1
bmN0aW9ucy0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCks
IGFyZWEueCwgYXJlYS55LCBhcmVhLnosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGFyZWEuZGVwdGgsIHRleFN1YkltYWdlRm9ybWF0
LmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhTdWJJbWFnZUZv
cm1hdC50eXBlLCBwaXhlbHMpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBVTlJF
QUNIQUJMRSgpOwogICAgIH0KIAorICAgIEFTU0VSVChtTGV2ZWxJbmZvW2xldmVsXS5sdW1hV29y
a2Fyb3VuZC5lbmFibGVkID09CisgICAgICAgICAgIEdldExldmVsSW5mbyhmb3JtYXQsIHRleFN1
YkltYWdlRm9ybWF0LmZvcm1hdCkubHVtYVdvcmthcm91bmQuZW5hYmxlZCk7CisKICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0
Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBj
b25zdCB1aW50OF90ICpwaXhlbHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6
ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVChDb21wYXRpYmxlVGV4dHVy
ZVRhcmdldChtVGV4dHVyZVR5cGUsIHRhcmdldCkpOwogCi0gICAgU2V0VW5wYWNrU3RhdGVGb3JU
ZXhJbWFnZShtU3RhdGVNYW5hZ2VyLCB1bnBhY2spOworICAgIG5hdGl2ZWdsOjpDb21wcmVzc2Vk
VGV4SW1hZ2VGb3JtYXQgY29tcHJlc3NlZFRleEltYWdlRm9ybWF0ID0KKyAgICAgICAgbmF0aXZl
Z2w6OkdldENvbXByZXNzZWRUZXhJbWFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMs
IGludGVybmFsRm9ybWF0KTsKIAotICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJu
YWxGb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7
Ci0gICAgc2l6ZV90IGRlcHRoUGl0Y2ggPSBpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZURlcHRo
UGl0Y2goR0xfVU5TSUdORURfQllURSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5w
YWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCk7Ci0gICAgc2l6ZV90IGRhdGFTaXplID0g
aW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoR0xfVU5TSUdORURfQllURSwgc2l6
ZS53aWR0aCwgc2l6ZS5oZWlnaHQpICogZGVwdGhQaXRjaDsKLQogICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1cmVJRCk7CiAgICAgaWYgKFVzZVRleElt
YWdlMkQobVRleHR1cmVUeXBlKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzaXplLmRlcHRoID09
IDEpOwotICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIDAsIGRhdGFTaXpl
LCBwaXhlbHMpOworICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0YXJn
ZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwg
c2l6ZS53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZS5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGltYWdlU2l6ZSksIHBpeGVscyk7CiAg
ICAgfQogICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBlKSkKICAgICB7Ci0g
ICAgICAgIG1GdW5jdGlvbnMtPmNvbXByZXNzZWRUZXhJbWFnZTNEKHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsRm9ybWF0LCBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6ZS5kZXB0aCwgMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNpemUsIHBpeGVscyk7
CisgICAgICAgIG1GdW5jdGlvbnMtPmNvbXByZXNzZWRUZXhJbWFnZTNEKAorICAgICAgICAgICAg
dGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBjb21wcmVzc2VkVGV4SW1hZ2VGb3Jt
YXQuaW50ZXJuYWxGb3JtYXQsIHNpemUud2lkdGgsCisgICAgICAgICAgICBzaXplLmhlaWdodCwg
c2l6ZS5kZXB0aCwgMCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW1hZ2VTaXplKSwgcGl4ZWxzKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAK
KyAgICBtTGV2ZWxJbmZvW2xldmVsXSA9IEdldExldmVsSW5mbyhpbnRlcm5hbEZvcm1hdCwgY29t
cHJlc3NlZFRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0KTsKKyAgICBBU1NFUlQoIW1MZXZl
bEluZm9bbGV2ZWxdLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQpOworCiAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldENvbXByZXNz
ZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAq
cGl4ZWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQobVRl
eHR1cmVUeXBlLCB0YXJnZXQpKTsKIAotICAgIFNldFVucGFja1N0YXRlRm9yVGV4SW1hZ2UobVN0
YXRlTWFuYWdlciwgdW5wYWNrKTsKKyAgICBuYXRpdmVnbDo6Q29tcHJlc3NlZFRleFN1YkltYWdl
Rm9ybWF0IGNvbXByZXNzZWRUZXhTdWJJbWFnZUZvcm1hdCA9CisgICAgICAgIG5hdGl2ZWdsOjpH
ZXRDb21wcmVzc2VkU3ViVGV4SW1hZ2VGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBm
b3JtYXQpOwogCi0gICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdElu
Zm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGZvcm1hdCk7Ci0gICAgc2l6ZV90IGRlcHRo
UGl0Y2ggPSBpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZURlcHRoUGl0Y2goR0xfVU5TSUdORURf
QllURSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrLmFsaWdubWVudCwgdW5w
YWNrLnJvd0xlbmd0aCk7Ci0gICAgc2l6ZV90IGRhdGFTaXplID0gaW50ZXJuYWxGb3JtYXRJbmZv
LmNvbXB1dGVCbG9ja1NpemUoR0xfVU5TSUdORURfQllURSwgYXJlYS53aWR0aCwgYXJlYS5oZWln
aHQpICogZGVwdGhQaXRjaDsKLQogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0
dXJlVHlwZSwgbVRleHR1cmVJRCk7CiAgICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBl
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChhcmVhLnogPT0gMCAmJiBhcmVhLmRlcHRoID09IDEp
OwotICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCBhcmVhLngsIGFyZWEueSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGZvcm1hdCwgZGF0
YVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVs
cyk7CisgICAgICAgIG1GdW5jdGlvbnMtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKAorICAgICAg
ICAgICAgdGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVhLngsIGFyZWEueSwg
YXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsCisgICAgICAgICAgICBjb21wcmVzc2VkVGV4U3ViSW1h
Z2VGb3JtYXQuZm9ybWF0LCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbWFnZVNpemUpLCBwaXhlbHMp
OwogICAgIH0KICAgICBlbHNlIGlmIChVc2VUZXhJbWFnZTNEKG1UZXh0dXJlVHlwZSkpCiAgICAg
ewotICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxl
dmVsLCBhcmVhLngsIGFyZWEueSwgYXJlYS56LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJl
YS5kZXB0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0LCBkYXRhU2l6ZSwgcGl4ZWxzKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRl
eFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVhLngsIGFy
ZWEueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS56
LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZFRleFN1YkltYWdlRm9ybWF0LmZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0xzaXplaT4oaW1hZ2VTaXplKSwgcGl4ZWxzKTsKICAgICB9CiAgICAgZWxzZQogICAg
IHsKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKKyAgICBBU1NFUlQoIW1MZXZlbElu
Zm9bbGV2ZWxdLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQgJiYKKyAgICAgICAgICAgIUdldExldmVs
SW5mbyhmb3JtYXQsIGNvbXByZXNzZWRUZXhTdWJJbWFnZUZvcm1hdC5mb3JtYXQpLmx1bWFXb3Jr
YXJvdW5kLmVuYWJsZWQpOworCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9
CiAKIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3Qg
bGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXIgKnNvdXJjZSkKIHsKLSAgICBjb25zdCBGcmFtZWJ1ZmZlckdMICpzb3VyY2VGcmFtZWJ1ZmZl
ckdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+KHNvdXJjZSk7CisgICAgbmF0aXZlZ2w6OkNv
cHlUZXhJbWFnZUltYWdlRm9ybWF0IGNvcHlUZXhJbWFnZUZvcm1hdCA9IG5hdGl2ZWdsOjpHZXRD
b3B5VGV4SW1hZ2VJbWFnZUZvcm1hdCgKKyAgICAgICAgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRz
LCBpbnRlcm5hbEZvcm1hdCwgc291cmNlLT5nZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUo
KSk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0
dXJlSUQpOwotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1F
QlVGRkVSLCBzb3VyY2VGcmFtZWJ1ZmZlckdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkpOwotCi0gICAg
aWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBlKSkKKyAgICBMZXZlbEluZm9HTCBsZXZlbElu
Zm8gPSBHZXRMZXZlbEluZm8oaW50ZXJuYWxGb3JtYXQsIGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRl
cm5hbEZvcm1hdCk7CisgICAgaWYgKGxldmVsSW5mby5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKQog
ICAgIHsKLSAgICAgICAgbUZ1bmN0aW9ucy0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
aW50ZXJuYWxGb3JtYXQsIHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdo
dCwgMCk7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1CbGl0dGVyLT5jb3B5SW1hZ2VUb0xV
TUFXb3JrYXJvdW5kVGV4dHVyZSgKKyAgICAgICAgICAgIG1UZXh0dXJlSUQsIG1UZXh0dXJlVHlw
ZSwgdGFyZ2V0LCBsZXZlbEluZm8uc291cmNlRm9ybWF0LCBsZXZlbCwgc291cmNlQXJlYSwKKyAg
ICAgICAgICAgIGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlKTsKKyAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGVycm9yOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJjZUZyYW1lYnVmZmVy
R0wgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJHTD4oc291cmNlKTsKKworICAgICAgICBtU3RhdGVN
YW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOworICAgICAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUZyYW1lYnVmZmVyR0wtPmdl
dEZyYW1lYnVmZmVySUQoKSk7CisKKyAgICAgICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVU
eXBlKSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y29weVRleEltYWdlMkQo
dGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29weVRleEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LCBzb3Vy
Y2VBcmVhLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VB
cmVhLnksIHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0LCAwKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIH0KICAgICB9CiAKKyAgICBtTGV2ZWxJbmZvW2xldmVsXSA9IGxldmVsSW5mbzsKKwog
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCkBAIC0yMzAsMjAgKzMyNCwz
NiBAQAogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1
cmVJRCk7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVC
VUZGRVIsIHNvdXJjZUZyYW1lYnVmZmVyR0wtPmdldEZyYW1lYnVmZmVySUQoKSk7CiAKLSAgICBp
ZiAoVXNlVGV4SW1hZ2UyRChtVGV4dHVyZVR5cGUpKQorICAgIGNvbnN0IExldmVsSW5mb0dMICZs
ZXZlbEluZm8gPSBtTGV2ZWxJbmZvW2xldmVsXTsKKyAgICBpZiAobGV2ZWxJbmZvLmx1bWFXb3Jr
YXJvdW5kLmVuYWJsZWQpCiAgICAgewotICAgICAgICBBU1NFUlQoZGVzdE9mZnNldC56ID09IDAp
OwotICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBk
ZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc291cmNlQXJlYS54LCBzb3VyY2VBcmVhLnksIHNvdXJjZUFyZWEud2lkdGgsIHNv
dXJjZUFyZWEuaGVpZ2h0KTsKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUJsaXR0ZXItPmNv
cHlTdWJJbWFnZVRvTFVNQVdvcmthcm91bmRUZXh0dXJlKAorICAgICAgICAgICAgbVRleHR1cmVJ
RCwgbVRleHR1cmVUeXBlLCB0YXJnZXQsIGxldmVsSW5mby5zb3VyY2VGb3JtYXQsIGxldmVsLCBk
ZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLAorICAgICAgICAgICAgc291cmNlKTsKKyAgICAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVRleHR1cmVUeXBl
KSkKLSAgICB7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwg
bGV2ZWwsIGRlc3RPZmZzZXQueCwgZGVzdE9mZnNldC55LCBkZXN0T2Zmc2V0LnosCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55
LCBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCk7Ci0gICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGlmIChVc2VUZXhJbWFnZTJE
KG1UZXh0dXJlVHlwZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChkZXN0T2Zmc2V0
LnogPT0gMCk7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGRlc3RPZmZzZXQueCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueSwgc291cmNlQXJlYS54
LCBzb3VyY2VBcmVhLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCk7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtVGV4dHVyZVR5cGUpKQorICAgICAgICB7CisgICAg
ICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4U3ViSW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0
PEdMaW50PihsZXZlbCksIGRlc3RPZmZzZXQueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueSwgZGVzdE9mZnNldC56LCBzb3VyY2VBcmVhLngs
IHNvdXJjZUFyZWEueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKQEAgLTI1NCwxMyAr
MzY0LDE3IEBACiAgICAgLy8gVE9ETzogZW11bGF0ZSB0ZXh0dXJlIHN0b3JhZ2Ugd2l0aCBUZXhJ
bWFnZSBjYWxscyBpZiBvbiBHTCB2ZXJzaW9uIDw0LjIgb3IgdGhlCiAgICAgLy8gQVJCX3RleHR1
cmVfc3RvcmFnZSBleHRlbnNpb24gaXMgbm90IGF2YWlsYWJsZS4KIAorICAgIG5hdGl2ZWdsOjpU
ZXhTdG9yYWdlRm9ybWF0IHRleFN0b3JhZ2VGb3JtYXQgPQorICAgICAgICBuYXRpdmVnbDo6R2V0
VGV4U3RvcmFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGludGVybmFsRm9ybWF0
KTsKKwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1
cmVJRCk7CiAgICAgaWYgKFVzZVRleEltYWdlMkQobVRleHR1cmVUeXBlKSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChzaXplLmRlcHRoID09IDEpOwogICAgICAgICBpZiAobUZ1bmN0aW9ucy0+dGV4
U3RvcmFnZTJEKQogICAgICAgICB7Ci0gICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhTdG9yYWdl
MkQodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCBzaXplLndpZHRoLCBzaXplLmhlaWdo
dCk7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhTdG9yYWdlMkQodGFyZ2V0LCBzdGF0aWNf
Y2FzdDxHTHNpemVpPihsZXZlbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsIHNpemUud2lkdGgsIHNpemUuaGVp
Z2h0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTI4MCwxNSArMzk0
LDQxIEBACiAKICAgICAgICAgICAgICAgICBpZiAobVRleHR1cmVUeXBlID09IEdMX1RFWFRVUkVf
MkQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBsZXZlbFNpemUud2lkdGgs
IGxldmVsU2l6ZS5oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgaW50ZXJuYWxGb3JtYXRJbmZvLmZvcm1hdCwgaW50ZXJuYWxGb3JtYXRJbmZvLnR5
cGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZv
LmNvbXByZXNzZWQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkYXRhU2l6ZSA9IGludGVybmFsRm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXpl
KEdMX1VOU0lHTkVEX0JZVEUsIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UyRCh0
YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhTdG9yYWdlRm9ybWF0LmludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGV2ZWxTaXplLndpZHRoLCBsZXZlbFNpemUuaGVpZ2h0LCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0xzaXplaT4oZGF0YVNpemUpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQodGFyZ2V0LCBzdGF0aWNf
Y2FzdDxHTGludD4obGV2ZWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LCBsZXZlbFNpemUud2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVs
U2l6ZS5oZWlnaHQsIDAsIGludGVybmFsRm9ybWF0SW5mby5mb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0SW5mby50eXBl
LCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChtVGV4dHVyZVR5cGUgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoR0xlbnVtIGZh
Y2UgPSBnbDo6Rmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSA8PSBnbDo6TGFzdEN1YmVN
YXBUZXh0dXJlVGFyZ2V0OyBmYWNlKyspCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQoZmFjZSwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBsZXZlbFNpemUud2lkdGgsIGxldmVsU2l6ZS5oZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGludGVybmFsRm9ybWF0SW5m
by5mb3JtYXQsIGludGVybmFsRm9ybWF0SW5mby50eXBlLCBudWxscHRyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpbnRlcm5hbEZvcm1hdEluZm8uY29tcHJlc3NlZCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0
YVNpemUgPSBpbnRlcm5hbEZvcm1hdEluZm8uY29tcHV0ZUJsb2NrU2l6ZShHTF9VTlNJR05FRF9C
WVRFLCBsZXZlbFNpemUud2lkdGgsIGxldmVsU2l6ZS5oZWlnaHQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNvbXByZXNzZWRUZXhJbWFnZTJEKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmYWNlLCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCB0
ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZXZlbFNpemUud2lkdGgsIGxldmVsU2l6ZS5oZWlnaHQsIDAsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGRhdGFTaXplKSwgbnVs
bHB0cik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRChmYWNlLCBzdGF0aWNfY2FzdDxHTGludD4obGV2
ZWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4U3RvcmFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgbGV2ZWxTaXplLndpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxTaXplLmhl
aWdodCwgMCwgaW50ZXJuYWxGb3JtYXRJbmZvLmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0SW5mby50eXBlLCBu
dWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCkBAIC0zMDIsNyArNDQy
LDkgQEAKICAgICB7CiAgICAgICAgIGlmIChtRnVuY3Rpb25zLT50ZXhTdG9yYWdlM0QpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIGxldmVs
cywgaW50ZXJuYWxGb3JtYXQsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBzaXplLmRlcHRoKTsK
KyAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFN0b3JhZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGxldmVscyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGV4U3RvcmFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS5kZXB0aCk7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC0zMTQsMTQgKzQ1NiwyOCBAQAogICAg
ICAgICAgICAgLy8gSW50ZXJuYWwgZm9ybWF0IG11c3QgYmUgc2l6ZWQKICAgICAgICAgICAgIEFT
U0VSVChpbnRlcm5hbEZvcm1hdEluZm8ucGl4ZWxCeXRlcyAhPSAwKTsKIAotICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZXZlbHM7IGkrKykKKyAgICAgICAgICAgIGZvciAoR0xz
aXplaSBpID0gMDsgaSA8IHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxldmVscyk7IGkrKykKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBnbDo6RXh0ZW50cyBsZXZlbFNpemUoc3RkOjptYXgo
c2l6ZS53aWR0aCA+PiBpLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjptYXgoc2l6ZS5oZWlnaHQgPj4gaSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1UZXh0dXJlVHlwZSA9PSBHTF9URVhUVVJFXzNEID8gc3RkOjptYXgo
c2l6ZS5kZXB0aCA+PiBpLCAxKSA6IHNpemUuZGVwdGgpOwogCi0gICAgICAgICAgICAgICAgbUZ1
bmN0aW9ucy0+dGV4SW1hZ2UzRCh0YXJnZXQsIGksIGludGVybmFsRm9ybWF0LCBsZXZlbFNpemUu
d2lkdGgsIGxldmVsU2l6ZS5oZWlnaHQsIGxldmVsU2l6ZS5kZXB0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGludGVybmFsRm9ybWF0SW5mby5mb3JtYXQsIGlu
dGVybmFsRm9ybWF0SW5mby50eXBlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBpZiAoaW50
ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW50ZXJu
YWxGb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbGV2ZWxTaXplLndpZHRoLCBsZXZl
bFNpemUuaGVpZ2h0KSkgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGV2ZWxTaXplLmRlcHRoOworICAgICAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVz
c2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGksIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
dmVsU2l6ZS53aWR0aCwgbGV2ZWxTaXplLmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxTaXplLmRlcHRoLCAwLCBkYXRhU2l6
ZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdl
M0QodGFyZ2V0LCBpLCB0ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsU2l6ZS53aWR0aCwgbGV2ZWxT
aXplLmhlaWdodCwgbGV2ZWxTaXplLmRlcHRoLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0SW5mby5mb3JtYXQsIGludGVybmFsRm9y
bWF0SW5mby50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTMzMCwxMyArNDg2LDI1IEBACiAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAg
fQogCisgICAgTGV2ZWxJbmZvR0wgbGV2ZWxJbmZvID0gR2V0TGV2ZWxJbmZvKGludGVybmFsRm9y
bWF0LCB0ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0KTsKKyAgICBmb3IgKHNpemVfdCBs
ZXZlbCA9IDA7IGxldmVsIDwgbUxldmVsSW5mby5zaXplKCk7IGxldmVsKyspCisgICAgeworICAg
ICAgICBtTGV2ZWxJbmZvW2xldmVsXSA9IGxldmVsSW5mbzsKKyAgICB9CisKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVHTDo6Z2VuZXJh
dGVNaXBtYXBzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKK2dsOjpFcnJv
ciBUZXh0dXJlR0w6OmdlbmVyYXRlTWlwbWFwcyhjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0
dXJlU3RhdGUpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVUeXBl
LCBtVGV4dHVyZUlEKTsKICAgICBtRnVuY3Rpb25zLT5nZW5lcmF0ZU1pcG1hcChtVGV4dHVyZVR5
cGUpOworCisgICAgZm9yIChzaXplX3QgbGV2ZWwgPSB0ZXh0dXJlU3RhdGUuYmFzZUxldmVsOyBs
ZXZlbCA8IG1MZXZlbEluZm8uc2l6ZSgpOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgbUxldmVs
SW5mb1tsZXZlbF0gPSBtTGV2ZWxJbmZvW3RleHR1cmVTdGF0ZS5iYXNlTGV2ZWxdOworICAgIH0K
KwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCkBAIC0zNDYsNiArNTE0
LDggQEAKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGlzIHRleHR1cmUgaXMgYm91bmQKICAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtVGV4dHVyZVR5cGUsIG1UZXh0dXJlSUQpOworCisgICAg
bUxldmVsSW5mb1swXSA9IExldmVsSW5mb0dMKCk7CiB9CiAKIHZvaWQgVGV4dHVyZUdMOjpyZWxl
YXNlVGV4SW1hZ2UoKQpAQCAtMzY0LDQyICs1MzQsMjE2IEBACiAgICAgfQogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLXN0YXRpYyBpbmxpbmUgdm9pZCBTeW5jU2FtcGxlclN0YXRlTWVtYmVy
KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJm5l
d1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlNh
bXBsZXJTdGF0ZSAmY3VyU3RhdGUsIEdMZW51bSB0ZXh0dXJlVHlwZSwgR0xlbnVtIG5hbWUsCitn
bDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6
OkltYWdlICppbWFnZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBBcHBseVRleHR1cmVGdW5jVHlwZT4KK3N0YXRpYyBpbmxpbmUgdm9pZCBTeW5jU2Ft
cGxlclN0YXRlTWVtYmVyKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBseVRleHR1cmVGdW5jVHlwZSBhcHBs
eVRleHR1cmVGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmbmV3U3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6U2FtcGxlclN0YXRlICZjdXJTdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0dXJlVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVChnbDo6U2FtcGxlclN0YXRl
Ojoqc2FtcGxlck1lbWJlcikpCiB7CiAgICAgaWYgKGN1clN0YXRlLipzYW1wbGVyTWVtYmVyICE9
IG5ld1N0YXRlLipzYW1wbGVyTWVtYmVyKQogICAgIHsKKyAgICAgICAgYXBwbHlUZXh0dXJlRnVu
YygpOwogICAgICAgICBjdXJTdGF0ZS4qc2FtcGxlck1lbWJlciA9IG5ld1N0YXRlLipzYW1wbGVy
TWVtYmVyOwogICAgICAgICBmdW5jdGlvbnMtPnRleFBhcmFtZXRlcmYodGV4dHVyZVR5cGUsIG5h
bWUsIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGN1clN0YXRlLipzYW1wbGVyTWVtYmVyKSk7CiAgICAg
fQogfQogCi12b2lkIFRleHR1cmVHTDo6c3luY1NhbXBsZXJTdGF0ZShjb25zdCBnbDo6U2FtcGxl
clN0YXRlICZzYW1wbGVyU3RhdGUpIGNvbnN0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgQXBwbHlUZXh0dXJlRnVuY1R5cGU+CitzdGF0aWMgaW5saW5lIHZvaWQgU3luY1RleHR1cmVT
dGF0ZU1lbWJlcihjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbHlUZXh0dXJlRnVuY1R5cGUgYXBwbHlUZXh0
dXJlRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpUZXh0dXJlU3RhdGUgJm5ld1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVTdGF0ZSAmY3VyU3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQoZ2w6OlRleHR1cmVTdGF0ZTo6KnN0
YXRlTWVtYmVyKSkKIHsKLSAgICBpZiAobUFwcGxpZWRTYW1wbGVyU3RhdGUgIT0gc2FtcGxlclN0
YXRlKQorICAgIGlmIChjdXJTdGF0ZS4qc3RhdGVNZW1iZXIgIT0gbmV3U3RhdGUuKnN0YXRlTWVt
YmVyKQogICAgIHsKLSAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVRleHR1cmVU
eXBlLCBtVGV4dHVyZUlEKTsKLSAgICAgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rp
b25zLCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgJmdsOjpTYW1wbGVyU3RhdGU6Om1pbkZpbHRlcik7Ci0gICAg
ICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgc2FtcGxlclN0YXRlLCBtQXBw
bGllZFNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX01BR19GSUxURVIsICZn
bDo6U2FtcGxlclN0YXRlOjptYWdGaWx0ZXIpOwotICAgICAgICBTeW5jU2FtcGxlclN0YXRlTWVt
YmVyKG1GdW5jdGlvbnMsIHNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRTYW1wbGVyU3RhdGUsIG1UZXh0
dXJlVHlwZSwgR0xfVEVYVFVSRV9XUkFQX1MsICZnbDo6U2FtcGxlclN0YXRlOjp3cmFwUyk7Ci0g
ICAgICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgc2FtcGxlclN0YXRlLCBt
QXBwbGllZFNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBfVCwgJmds
OjpTYW1wbGVyU3RhdGU6OndyYXBUKTsKLSAgICAgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlciht
RnVuY3Rpb25zLCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5
cGUsIEdMX1RFWFRVUkVfV1JBUF9SLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6d3JhcFIpOwotICAgICAg
ICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIHNhbXBsZXJTdGF0ZSwgbUFwcGxp
ZWRTYW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9F
WFQsICZnbDo6U2FtcGxlclN0YXRlOjptYXhBbmlzb3Ryb3B5KTsKLSAgICAgICAgU3luY1NhbXBs
ZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0
YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgJmdsOjpTYW1wbGVyU3Rh
dGU6OmJhc2VMZXZlbCk7Ci0gICAgICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9u
cywgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9U
RVhUVVJFX01BWF9MRVZFTCwgJmdsOjpTYW1wbGVyU3RhdGU6Om1heExldmVsKTsKLSAgICAgICAg
U3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVk
U2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfTUlOX0xPRCwgJmdsOjpTYW1w
bGVyU3RhdGU6Om1pbkxvZCk7Ci0gICAgICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0
aW9ucywgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBH
TF9URVhUVVJFX01BWF9MT0QsICZnbDo6U2FtcGxlclN0YXRlOjptYXhMb2QpOwotICAgICAgICBT
eW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIHNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRT
YW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsICZnbDo6
U2FtcGxlclN0YXRlOjpjb21wYXJlTW9kZSk7Ci0gICAgICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1i
ZXIobUZ1bmN0aW9ucywgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgbVRleHR1
cmVUeXBlLCBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywgJmdsOjpTYW1wbGVyU3RhdGU6OmNvbXBh
cmVGdW5jKTsKLSAgICAgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBzYW1w
bGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVf
U1dJWlpMRV9SLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6c3dpenpsZVJlZCk7Ci0gICAgICAgIFN5bmNT
YW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBs
ZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1NXSVpaTEVfRywgJmdsOjpTYW1wbGVy
U3RhdGU6OnN3aXp6bGVHcmVlbik7Ci0gICAgICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1
bmN0aW9ucywgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBl
LCBHTF9URVhUVVJFX1NXSVpaTEVfQiwgJmdsOjpTYW1wbGVyU3RhdGU6OnN3aXp6bGVCbHVlKTsK
LSAgICAgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBzYW1wbGVyU3RhdGUs
IG1BcHBsaWVkU2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfU1dJWlpMRV9B
LCAmZ2w6OlNhbXBsZXJTdGF0ZTo6c3dpenpsZUFscGhhKTsKKyAgICAgICAgYXBwbHlUZXh0dXJl
RnVuYygpOworICAgICAgICBjdXJTdGF0ZS4qc3RhdGVNZW1iZXIgPSBuZXdTdGF0ZS4qc3RhdGVN
ZW1iZXI7CisgICAgICAgIGZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyZih0ZXh0dXJlVHlwZSwgbmFt
ZSwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oY3VyU3RhdGUuKnN0YXRlTWVtYmVyKSk7CiAgICAgfQog
fQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXBwbHlUZXh0dXJlRnVuY1R5cGU+
CitzdGF0aWMgaW5saW5lIHZvaWQgU3luY1RleHR1cmVTdGF0ZVN3aXp6bGUoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcHBseVRleHR1cmVGdW5jVHlwZSBhcHBseVRleHR1cmVGdW5jLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExldmVsSW5mb0dMICZsZXZlbElu
Zm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmbmV3U3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OlRleHR1cmVTdGF0ZSAmY3VyU3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQoZ2w6OlRleHR1cmVTdGF0ZTo6KnN0
YXRlTWVtYmVyKSkKK3sKKyAgICBpZiAobGV2ZWxJbmZvLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQg
fHwgbGV2ZWxJbmZvLmRlcHRoU3RlbmNpbFdvcmthcm91bmQpCisgICAgeworICAgICAgICBHTGVu
dW0gcmVzdWx0U3dpenpsZSA9IEdMX05PTkU7CisgICAgICAgIGlmIChsZXZlbEluZm8ubHVtYVdv
cmthcm91bmQuZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgVU5VU0VEX0FTU0VSVElP
Tl9WQVJJQUJMRShsZXZlbEluZm8ubHVtYVdvcmthcm91bmQud29ya2Fyb3VuZEZvcm1hdCk7CisK
KyAgICAgICAgICAgIHN3aXRjaCAobmV3U3RhdGUuKnN0YXRlTWVtYmVyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICBjYXNlIEdMX0dSRUVOOgor
ICAgICAgICAgICAgY2FzZSBHTF9CTFVFOgorICAgICAgICAgICAgICAgIGlmIChsZXZlbEluZm8u
c291cmNlRm9ybWF0ID09IEdMX0xVTUlOQU5DRSB8fAorICAgICAgICAgICAgICAgICAgICBsZXZl
bEluZm8uc291cmNlRm9ybWF0ID09IEdMX0xVTUlOQU5DRV9BTFBIQSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRleHR1cmUgaXMgYmFja2VkIGJ5IGEgUkVEIG9y
IFJHIHRleHR1cmUsIHBvaW50IGFsbCBjb2xvciBjaGFubmVscyBhdCB0aGUgcmVkCisgICAgICAg
ICAgICAgICAgICAgIC8vIGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsZXZl
bEluZm8ubHVtYVdvcmthcm91bmQud29ya2Fyb3VuZEZvcm1hdCA9PSBHTF9SRUQgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxldmVsSW5mby5sdW1hV29ya2Fyb3VuZC53b3JrYXJvdW5k
Rm9ybWF0ID09IEdMX1JHKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3dpenpsZSA9IEdM
X1JFRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobGV2ZWxJ
bmZvLnNvdXJjZUZvcm1hdCA9PSBHTF9BTFBIQSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIENvbG9yIGNoYW5uZWxzIGFyZSBub3Qgc3VwcG9zZWQgdG8gZXhpc3Qs
IG1ha2UgdGhlbSBhbHdheXMgc2FtcGxlIDAuCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN3
aXp6bGUgPSBHTF9aRVJPOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
Y2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmZvLnNvdXJjZUZvcm1h
dCA9PSBHTF9MVU1JTkFOQ0UpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAvLyBBbHBoYSBjaGFubmVsIGlzIG5vdCBzdXBwb3NlZCB0byBleGlzdCwgbWFrZSBpdCBhbHdh
eXMgc2FtcGxlIDEuCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN3aXp6bGUgPSBHTF9PTkU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxldmVsSW5mby5z
b3VyY2VGb3JtYXQgPT0gR0xfQUxQSEEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAvLyBUZXh0dXJlIGlzIGJhY2tlZCBieSBhIFJFRCB0ZXh0dXJlLCBwb2ludCB0aGUg
YWxwaGEgY2hhbm5lbCBhdCB0aGUgcmVkCisgICAgICAgICAgICAgICAgICAgIC8vIGNoYW5uZWwu
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChsZXZlbEluZm8ubHVtYVdvcmthcm91bmQud29y
a2Fyb3VuZEZvcm1hdCA9PSBHTF9SRUQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRTd2l6
emxlID0gR0xfUkVEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChsZXZlbEluZm8uc291cmNlRm9ybWF0ID09IEdMX0xVTUlOQU5DRV9BTFBIQSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRleHR1cmUgaXMgYmFja2VkIGJ5IGFu
IFJHIHRleHR1cmUsIHBvaW50IHRoZSBhbHBoYSBjaGFubmVsIGF0IHRoZSBncmVlbgorICAgICAg
ICAgICAgICAgICAgICAvLyBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGV2
ZWxJbmZvLmx1bWFXb3JrYXJvdW5kLndvcmthcm91bmRGb3JtYXQgPT0gR0xfUkcpOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHRTd2l6emxlID0gR0xfR1JFRU47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEdMX1pFUk86CisgICAgICAgICAgICBjYXNlIEdM
X09ORToKKyAgICAgICAgICAgICAgICAvLyBEb24ndCBtb2RpZnkgdGhlIHN3aXp6bGUgc3RhdGUg
d2hlbiByZXF1ZXN0aW5nIFpFUk8gb3IgT05FLgorICAgICAgICAgICAgICAgIHJlc3VsdFN3aXp6
bGUgPSBuZXdTdGF0ZS4qc3RhdGVNZW1iZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmIChsZXZlbEluZm8uZGVwdGhTdGVuY2lsV29ya2Fyb3VuZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3dpdGNoIChuZXdTdGF0ZS4qc3RhdGVNZW1iZXIpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IG1v
ZGlmeSB0aGUgc3dpenpsZSBzdGF0ZSB3aGVuIHJlcXVlc3RpbmcgdGhlIHJlZCBjaGFubmVsLgor
ICAgICAgICAgICAgICAgICAgICByZXN1bHRTd2l6emxlID0gbmV3U3RhdGUuKnN0YXRlTWVtYmVy
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgR0xf
R1JFRU46CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CTFVFOgorICAgICAgICAgICAgICAgICAg
ICAvLyBEZXB0aCB0ZXh0dXJlcyBzaG91bGQgc2FtcGxlIDAgZnJvbSB0aGUgZ3JlZW4gYW5kIGJs
dWUgY2hhbm5lbHMuCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN3aXp6bGUgPSBHTF9aRVJP
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgR0xf
QUxQSEE6CisgICAgICAgICAgICAgICAgICAgIC8vIERlcHRoIHRleHR1cmVzIHNob3VsZCBzYW1w
bGUgMSBmcm9tIHRoZSBhbHBoYSBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICByZXN1bHRT
d2l6emxlID0gR0xfT05FOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX09ORToKKyAgICAg
ICAgICAgICAgICAgICAgLy8gRG9uJ3QgbW9kaWZ5IHRoZSBzd2l6emxlIHN0YXRlIHdoZW4gcmVx
dWVzdGluZyBaRVJPIG9yIE9ORS4KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3dpenpsZSA9
IG5ld1N0YXRlLipzdGF0ZU1lbWJlcjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBBcHBseSB0aGUgbmV3IHN3aXp6bGUgc3RhdGUgaWYgbmVlZGVk
CisgICAgICAgIGlmIChjdXJTdGF0ZS4qc3RhdGVNZW1iZXIgIT0gcmVzdWx0U3dpenpsZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgYXBwbHlUZXh0dXJlRnVuYygpOworICAgICAgICAgICAgY3Vy
U3RhdGUuKnN0YXRlTWVtYmVyID0gcmVzdWx0U3dpenpsZTsKKyAgICAgICAgICAgIGZ1bmN0aW9u
cy0+dGV4UGFyYW1ldGVyZih0ZXh0dXJlVHlwZSwgbmFtZSwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4o
cmVzdWx0U3dpenpsZSkpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIFN5bmNUZXh0dXJlU3RhdGVNZW1iZXIoZnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCBu
ZXdTdGF0ZSwgY3VyU3RhdGUsIHRleHR1cmVUeXBlLCBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlTWVtYmVyKTsKKyAgICB9Cit9CisKK3ZvaWQgVGV4dHVyZUdMOjpz
eW5jU3RhdGUoc2l6ZV90IHRleHR1cmVVbml0LCBjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0
dXJlU3RhdGUpIGNvbnN0Cit7CisgICAgLy8gQ2FsbGJhY2sgbGFtZGJhIHRvIGJpbmQgdGhpcyB0
ZXh0dXJlIG9ubHkgaWYgbmVlZGVkLgorICAgIGJvb2wgdGV4dHVyZUFwcGxpZWQgICA9IGZhbHNl
OworICAgIGF1dG8gYXBwbHlUZXh0dXJlRnVuYyA9IFsmXSgpCisgICAgeworICAgICAgICBpZiAo
IXRleHR1cmVBcHBsaWVkKQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5h
Y3RpdmVUZXh0dXJlKHRleHR1cmVVbml0KTsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJp
bmRUZXh0dXJlKG1UZXh0dXJlVHlwZSwgbVRleHR1cmVJRCk7CisgICAgICAgICAgICB0ZXh0dXJl
QXBwbGllZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gY2xhbmctZm9ybWF0
IG9mZgorCisgICAgLy8gU3luYyB0ZXh0dXJlIHN0YXRlCisgICAgU3luY1RleHR1cmVTdGF0ZU1l
bWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUsIG1BcHBsaWVk
VGV4dHVyZVN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgJmdsOjpU
ZXh0dXJlU3RhdGU6OmJhc2VMZXZlbCk7CisgICAgU3luY1RleHR1cmVTdGF0ZU1lbWJlcihtRnVu
Y3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0
YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAmZ2w6OlRleHR1cmVTdGF0
ZTo6bWF4TGV2ZWwpOworCisgICAgY29uc3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5mbyA9IG1MZXZl
bEluZm9bdGV4dHVyZVN0YXRlLmJhc2VMZXZlbF07CisgICAgU3luY1RleHR1cmVTdGF0ZVN3aXp6
bGUobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgbGV2ZWxJbmZvLCB0ZXh0dXJlU3RhdGUs
IG1BcHBsaWVkVGV4dHVyZVN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfU1dJWlpMRV9S
LCAmZ2w6OlRleHR1cmVTdGF0ZTo6c3dpenpsZVJlZCk7CisgICAgU3luY1RleHR1cmVTdGF0ZVN3
aXp6bGUobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgbGV2ZWxJbmZvLCB0ZXh0dXJlU3Rh
dGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfU1dJWlpM
RV9HLCAmZ2w6OlRleHR1cmVTdGF0ZTo6c3dpenpsZUdyZWVuKTsKKyAgICBTeW5jVGV4dHVyZVN0
YXRlU3dpenpsZShtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCBsZXZlbEluZm8sIHRleHR1
cmVTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9T
V0laWkxFX0IsICZnbDo6VGV4dHVyZVN0YXRlOjpzd2l6emxlQmx1ZSk7CisgICAgU3luY1RleHR1
cmVTdGF0ZVN3aXp6bGUobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgbGV2ZWxJbmZvLCB0
ZXh0dXJlU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRV
UkVfU1dJWlpMRV9BLCAmZ2w6OlRleHR1cmVTdGF0ZTo6c3dpenpsZUFscGhhKTsKKworICAgIC8v
IFN5bmMgc2FtcGxlciBzdGF0ZQorICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9u
cywgYXBwbHlUZXh0dXJlRnVuYywgdGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRU
ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgJmdsOjpTYW1wbGVyU3RhdGU6Om1pbkZpbHRlcik7CisgICAgU3luY1NhbXBsZXJTdGF0
ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1cmVGdW5jLCB0ZXh0dXJlU3RhdGUuc2FtcGxl
clN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6bWFnRmlsdGVyKTsKKyAg
ICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRl
eHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0
ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBfUywgJmdsOjpTYW1wbGVyU3RhdGU6Ondy
YXBTKTsKKyAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVy
ZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLnNh
bXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBfVCwgJmdsOjpTYW1wbGVy
U3RhdGU6OndyYXBUKTsKKyAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFw
cGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4dHVy
ZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX1dSQVBfUiwgJmds
OjpTYW1wbGVyU3RhdGU6OndyYXBSKTsKKyAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5j
dGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBs
aWVkVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX01B
WF9BTklTT1RST1BZX0VYVCwgJmdsOjpTYW1wbGVyU3RhdGU6Om1heEFuaXNvdHJvcHkpOworICAg
IFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgYXBwbHlUZXh0dXJlRnVuYywgdGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRUZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRl
LCBtVGV4dHVyZVR5cGUsIEdMX1RFWFRVUkVfTUlOX0xPRCwgJmdsOjpTYW1wbGVyU3RhdGU6Om1p
bkxvZCk7CisgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBhcHBseVRleHR1
cmVGdW5jLCB0ZXh0dXJlU3RhdGUuc2FtcGxlclN0YXRlLCBtQXBwbGllZFRleHR1cmVTdGF0ZS5z
YW1wbGVyU3RhdGUsIG1UZXh0dXJlVHlwZSwgR0xfVEVYVFVSRV9NQVhfTE9ELCAmZ2w6OlNhbXBs
ZXJTdGF0ZTo6bWF4TG9kKTsKKyAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMs
IGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1wbGVyU3RhdGUsIG1BcHBsaWVkVGV4
dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBlLCBHTF9URVhUVVJFX0NPTVBBUkVf
TU9ERSwgJmdsOjpTYW1wbGVyU3RhdGU6OmNvbXBhcmVNb2RlKTsKKyAgICBTeW5jU2FtcGxlclN0
YXRlTWVtYmVyKG1GdW5jdGlvbnMsIGFwcGx5VGV4dHVyZUZ1bmMsIHRleHR1cmVTdGF0ZS5zYW1w
bGVyU3RhdGUsIG1BcHBsaWVkVGV4dHVyZVN0YXRlLnNhbXBsZXJTdGF0ZSwgbVRleHR1cmVUeXBl
LCBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywgJmdsOjpTYW1wbGVyU3RhdGU6OmNvbXBhcmVGdW5j
KTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KK30KKwogR0x1aW50IFRleHR1cmVHTDo6Z2V0VGV4
dHVyZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVRleHR1cmVJRDsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvVGV4dHVyZUdMLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaAkod29ya2luZyBjb3B5KQpA
QCAtMTUsMTMgKzE1LDQ3IEBACiBuYW1lc3BhY2UgcngKIHsKIAorY2xhc3MgQmxpdEdMOwogY2xh
c3MgRnVuY3Rpb25zR0w7CiBjbGFzcyBTdGF0ZU1hbmFnZXJHTDsKK3N0cnVjdCBXb3JrYXJvdW5k
c0dMOwogCitzdHJ1Y3QgTFVNQVdvcmthcm91bmRHTAoreworICAgIGJvb2wgZW5hYmxlZDsKKyAg
ICBHTGVudW0gd29ya2Fyb3VuZEZvcm1hdDsKKworICAgIExVTUFXb3JrYXJvdW5kR0woKTsKKyAg
ICBMVU1BV29ya2Fyb3VuZEdMKGJvb2wgZW5hYmxlZCwgR0xlbnVtIHdvcmthcm91bmRGb3JtYXQp
OworfTsKKworLy8gU3RydWN0dXJlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgZm9ybWF0
IGFuZCB3b3JrYXJvdW5kcyBmb3IgZWFjaCBtaXAgbGV2ZWwgb2YgdGhlCisvLyBUZXh0dXJlR0wu
CitzdHJ1Y3QgTGV2ZWxJbmZvR0wKK3sKKyAgICAvLyBGb3JtYXQgb2YgdGhlIGRhdGEgdXNlZCBp
biB0aGlzIG1pcCBsZXZlbC4KKyAgICBHTGVudW0gc291cmNlRm9ybWF0OworCisgICAgLy8gSWYg
dGhpcyBtaXAgbGV2ZWwgcmVxdWlyZXMgc2FtcGxlci1zdGF0ZSByZS13cml0aW5nIHNvIHRoYXQg
b25seSBhIHJlZCBjaGFubmVsIGlzIGV4cG9zZWQuCisgICAgYm9vbCBkZXB0aFN0ZW5jaWxXb3Jr
YXJvdW5kOworCisgICAgLy8gSW5mb3JtYXRpb24gYWJvdXQgbHVtaW5hbmNlIGFscGhhIHRleHR1
cmUgd29ya2Fyb3VuZHMgaW4gdGhlIGNvcmUgcHJvZmlsZS4KKyAgICBMVU1BV29ya2Fyb3VuZEdM
IGx1bWFXb3JrYXJvdW5kOworCisgICAgTGV2ZWxJbmZvR0woKTsKKyAgICBMZXZlbEluZm9HTChH
TGVudW0gc291cmNlRm9ybWF0LAorICAgICAgICAgICAgICAgIGJvb2wgZGVwdGhTdGVuY2lsV29y
a2Fyb3VuZCwKKyAgICAgICAgICAgICAgICBjb25zdCBMVU1BV29ya2Fyb3VuZEdMICZsdW1hV29y
a2Fyb3VuZCk7Cit9OworCiBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKIHsK
ICAgcHVibGljOgotICAgIFRleHR1cmVHTChHTGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7CisgICAgVGV4dHVyZUdM
KEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LAorICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAg
ICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAgQmxp
dEdMICpibGl0dGVyKTsKICAgICB+VGV4dHVyZUdMKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNl
dFVzYWdlKEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7CkBAIC0zMiw5ICs2Niw5IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNv
bnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3Igc2V0Q29tcHJl
c3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9y
bWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykgb3ZlcnJpZGU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1
aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3Vi
SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBH
TGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBp
eGVscykgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xlbnVtIGlu
dGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpzb3VyY2UpIG92ZXJyaWRlOwpAQCAtNDMsMTIgKzc3LDE0IEBACiAKICAgICBnbDo6RXJy
b3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAotICAgIGdsOjpF
cnJvciBnZW5lcmF0ZU1pcG1hcHMoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRl
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXBzKGNvbnN0IGdsOjpUZXh0
dXJlU3RhdGUgJnRleHR1cmVTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJpbmRUZXhJbWFn
ZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVsZWFzZVRleElt
YWdlKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN5bmNTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNh
bXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKSBjb25zdDsKKyAgICBnbDo6RXJyb3Igc2V0RUdMSW1h
Z2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBzeW5jU3RhdGUoc2l6ZV90IHRleHR1cmVVbml0LCBjb25zdCBnbDo6VGV4dHVyZVN0
YXRlICZ0ZXh0dXJlU3RhdGUpIGNvbnN0OwogICAgIEdMdWludCBnZXRUZXh0dXJlSUQoKSBjb25z
dDsKIAogICAgIGdsOjpFcnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LApAQCAtNjEsOSArOTcsMTMgQEAK
ICAgICBHTGVudW0gbVRleHR1cmVUeXBlOwogCiAgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1GdW5j
dGlvbnM7CisgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmbVdvcmthcm91bmRzOwogICAgIFN0YXRl
TWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOworICAgIEJsaXRHTCAqbUJsaXR0ZXI7CiAKLSAgICBt
dXRhYmxlIGdsOjpTYW1wbGVyU3RhdGUgbUFwcGxpZWRTYW1wbGVyU3RhdGU7CisgICAgc3RkOjp2
ZWN0b3I8TGV2ZWxJbmZvR0w+IG1MZXZlbEluZm87CisKKyAgICBtdXRhYmxlIGdsOjpUZXh0dXJl
U3RhdGUgbUFwcGxpZWRUZXh0dXJlU3RhdGU7CiAgICAgR0x1aW50IG1UZXh0dXJlSUQ7CiB9Owog
CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
VHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RyYW5zZm9ybUZlZWRiYWNrR0wuY3BwCShy
ZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTks
NDUgKzksMTM0IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJhbnNmb3JtRmVl
ZGJhY2tHTC5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvRGF0YS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgogCiBuYW1lc3BhY2UgcngKIHsK
IAotVHJhbnNmb3JtRmVlZGJhY2tHTDo6VHJhbnNmb3JtRmVlZGJhY2tHTCgpCi0gICAgOiBUcmFu
c2Zvcm1GZWVkYmFja0ltcGwoKQote30KK1RyYW5zZm9ybUZlZWRiYWNrR0w6OlRyYW5zZm9ybUZl
ZWRiYWNrR0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heFRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyQmluZGluZ3MpCisgICAgOiBUcmFuc2Zvcm1GZWVkYmFja0ltcGwoKSwK
KyAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKKyAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVN
YW5hZ2VyKSwKKyAgICAgIG1UcmFuc2Zvcm1GZWVkYmFja0lEKDApLAorICAgICAgbUlzQWN0aXZl
KGZhbHNlKSwKKyAgICAgIG1Jc1BhdXNlZChmYWxzZSksCisgICAgICBtQ3VycmVudEluZGV4ZWRC
dWZmZXJzKG1heFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyQmluZGluZ3MpCit7CisgICAgbUZ1bmN0
aW9ucy0+Z2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2tJRCk7Cit9
CiAKIFRyYW5zZm9ybUZlZWRiYWNrR0w6On5UcmFuc2Zvcm1GZWVkYmFja0dMKCkKLXt9Cit7Cisg
ICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sobVRyYW5zZm9ybUZlZWRi
YWNrSUQpOworICAgIG1UcmFuc2Zvcm1GZWVkYmFja0lEID0gMDsKIAorICAgIGZvciAoYXV0byAm
YnVmZmVyQmluZGluZyA6IG1DdXJyZW50SW5kZXhlZEJ1ZmZlcnMpCisgICAgeworICAgICAgICBi
dWZmZXJCaW5kaW5nLnNldChudWxscHRyKTsKKyAgICB9Cit9CisKIHZvaWQgVHJhbnNmb3JtRmVl
ZGJhY2tHTDo6YmVnaW4oR0xlbnVtIHByaW1pdGl2ZU1vZGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOworICAgIC8vIERvIG5vdCBiZWdpbiBkaXJlY3RseSwgU3RhdGVNYW5hZ2VyR0wgd2lsbCBo
YW5kbGUgYmVnaW5uaW5nIGFuZCByZXN1bWluZyB0cmFuc2Zvcm0gZmVlZGJhY2suCiB9CiAKIHZv
aWQgVHJhbnNmb3JtRmVlZGJhY2tHTDo6ZW5kKCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgc3luY0FjdGl2ZVN0YXRlKGZhbHNlLCBHTF9OT05FKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1G
ZWVkYmFja0dMOjpwYXVzZSgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHN5bmNQYXVz
ZWRTdGF0ZSh0cnVlKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0dMOjpyZXN1bWUoKQog
ewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAvLyBEbyBub3QgcmVzdW1lIGRpcmVjdGx5LCBT
dGF0ZU1hbmFnZXJHTCB3aWxsIGhhbmRsZSBiZWdpbm5pbmcgYW5kIHJlc3VtaW5nIHRyYW5zZm9y
bSBmZWVkYmFjay4KIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja0dMOjpiaW5kR2VuZXJpY0J1
ZmZlcihjb25zdCBCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiAmYmluZGluZykKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtRmVlZGJhY2tHTDo6YmluZEluZGV4
ZWRCdWZmZXIoc2l6ZV90IGluZGV4LCBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVm
ZmVyPiAmYmluZGluZykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgLy8gRGlyZWN0bHkg
YmluZCBidWZmZXIgKG5vdCB0aHJvdWdoIHRoZSBTdGF0ZU1hbmFnZXIgbWV0aG9kcykgYmVjYXVz
ZSB0aGUgYnVmZmVyIGJpbmRpbmdzIGFyZQorICAgIC8vIHRyYWNrZWQgcGVyIHRyYW5zZm9ybSBm
ZWVkYmFjayBvYmplY3QKKyAgICBpZiAoYmluZGluZyAhPSBtQ3VycmVudEluZGV4ZWRCdWZmZXJz
W2luZGV4XSkKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFja0lEKTsKKyAgICAg
ICAgaWYgKGJpbmRpbmcuZ2V0KCkgIT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAg
Y29uc3QgQnVmZmVyR0wgKmJ1ZmZlckdMID0gR2V0SW1wbEFzPEJ1ZmZlckdMPihiaW5kaW5nLmdl
dCgpKTsKKyAgICAgICAgICAgIGlmIChiaW5kaW5nLmdldFNpemUoKSAhPSAwKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRCdWZmZXJSYW5nZShHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4KSwgYnVmZmVyR0wtPmdldEJ1ZmZl
cklEKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRp
bmcuZ2V0T2Zmc2V0KCksIGJpbmRpbmcuZ2V0U2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5i
aW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzdGF0aWNfY2FzdDxH
THVpbnQ+KGluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWZmZXJHTC0+Z2V0QnVmZmVySUQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5iaW5kQnVmZmVy
QmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGlu
ZGV4KSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBtQ3VycmVudEluZGV4ZWRCdWZmZXJzW2lu
ZGV4XSA9IGJpbmRpbmc7CisgICAgfQogfQogCitHTHVpbnQgVHJhbnNmb3JtRmVlZGJhY2tHTDo6
Z2V0VHJhbnNmb3JtRmVlZGJhY2tJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UcmFuc2Zvcm1G
ZWVkYmFja0lEOwogfQorCit2b2lkIFRyYW5zZm9ybUZlZWRiYWNrR0w6OnN5bmNBY3RpdmVTdGF0
ZShib29sIGFjdGl2ZSwgR0xlbnVtIHByaW1pdGl2ZU1vZGUpIGNvbnN0Cit7CisgICAgaWYgKG1J
c0FjdGl2ZSAhPSBhY3RpdmUpCisgICAgeworICAgICAgICBtSXNBY3RpdmUgPSBhY3RpdmU7Cisg
ICAgICAgIG1Jc1BhdXNlZCA9IGZhbHNlOworCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRU
cmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFj
a0lEKTsKKyAgICAgICAgaWYgKG1Jc0FjdGl2ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1
bmN0aW9ucy0+YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmVuZFRy
YW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVHJhbnNmb3Jt
RmVlZGJhY2tHTDo6c3luY1BhdXNlZFN0YXRlKGJvb2wgcGF1c2VkKSBjb25zdAoreworICAgIGlm
IChtSXNBY3RpdmUgJiYgbUlzUGF1c2VkICE9IHBhdXNlZCkKKyAgICB7CisgICAgICAgIG1Jc1Bh
dXNlZCA9IHBhdXNlZDsKKworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVHJhbnNmb3JtRmVl
ZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2tJRCk7CisgICAg
ICAgIGlmIChtSXNQYXVzZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPnBh
dXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPnJlc3VtZVRyYW5zZm9ybUZlZWRiYWNrKCk7Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RyYW5z
Zm9ybUZlZWRiYWNrR0wuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RyYW5zZm9ybUZlZWRiYWNrR0wuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQsMTAgKzE0LDE1IEBACiBuYW1lc3BhY2UgcngKIHsKIAorY2xhc3Mg
RnVuY3Rpb25zR0w7CitjbGFzcyBTdGF0ZU1hbmFnZXJHTDsKKwogY2xhc3MgVHJhbnNmb3JtRmVl
ZGJhY2tHTCA6IHB1YmxpYyBUcmFuc2Zvcm1GZWVkYmFja0ltcGwKIHsKICAgcHVibGljOgotICAg
IFRyYW5zZm9ybUZlZWRiYWNrR0woKTsKKyAgICBUcmFuc2Zvcm1GZWVkYmFja0dMKGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFn
ZXJHTCAqc3RhdGVNYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1heFRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyQmluZGluZ3MpOwogICAgIH5UcmFuc2Zvcm1GZWVkYmFja0dM
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2RlKSBvdmVy
cmlkZTsKQEAgLTI3LDYgKzMyLDIyIEBACiAKICAgICB2b2lkIGJpbmRHZW5lcmljQnVmZmVyKGNv
bnN0IEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKSBvdmVycmlkZTsKICAgICB2
b2lkIGJpbmRJbmRleGVkQnVmZmVyKHNpemVfdCBpbmRleCwgY29uc3QgT2Zmc2V0QmluZGluZ1Bv
aW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpIG92ZXJyaWRlOworCisgICAgR0x1aW50IGdldFRy
YW5zZm9ybUZlZWRiYWNrSUQoKSBjb25zdDsKKworICAgIHZvaWQgc3luY0FjdGl2ZVN0YXRlKGJv
b2wgYWN0aXZlLCBHTGVudW0gcHJpbWl0aXZlTW9kZSkgY29uc3Q7CisgICAgdm9pZCBzeW5jUGF1
c2VkU3RhdGUoYm9vbCBwYXVzZWQpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAgY29uc3QgRnVu
Y3Rpb25zR0wgKm1GdW5jdGlvbnM7CisgICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7
CisKKyAgICBHTHVpbnQgbVRyYW5zZm9ybUZlZWRiYWNrSUQ7CisKKyAgICBtdXRhYmxlIGJvb2wg
bUlzQWN0aXZlOworICAgIG11dGFibGUgYm9vbCBtSXNQYXVzZWQ7CisKKyAgICBzdGQ6OnZlY3Rv
cjxPZmZzZXRCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPj4gbUN1cnJlbnRJbmRleGVkQnVmZmVy
czsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5jcHAJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDEw
IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgiCiAK
KyNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKICNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKKyNpbmNsdWRlICJjb21tb24vdXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCkBAIC0x
NywxOCArMTksMjcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAK
K3VzaW5nIG5hbWVzcGFjZSBnbDsKKwogbmFtZXNwYWNlIHJ4CiB7CituYW1lc3BhY2UKK3sKK2Jv
b2wgQXR0cmlidXRlTmVlZHNTdHJlYW1pbmcoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1
dGUpCit7CisgICAgcmV0dXJuIChhdHRyaWJ1dGUuZW5hYmxlZCAmJiBhdHRyaWJ1dGUuYnVmZmVy
LmdldCgpID09IG51bGxwdHIpOworfQogCi1WZXJ0ZXhBcnJheUdMOjpWZXJ0ZXhBcnJheUdMKGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIp
Ci0gICAgOiBWZXJ0ZXhBcnJheUltcGwoKSwKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwor
VmVydGV4QXJyYXlHTDo6VmVydGV4QXJyYXlHTChjb25zdCBWZXJ0ZXhBcnJheTo6RGF0YSAmZGF0
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRl
TWFuYWdlcikKKyAgICA6IFZlcnRleEFycmF5SW1wbChkYXRhKSwKICAgICAgIG1GdW5jdGlvbnMo
ZnVuY3Rpb25zKSwKICAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVNYW5hZ2VyKSwKICAgICAgIG1W
ZXJ0ZXhBcnJheUlEKDApLAotICAgICAgbUVsZW1lbnRBcnJheUJ1ZmZlcigpLAotICAgICAgbUF0
dHJpYnV0ZXMoKSwKLSAgICAgIG1BcHBsaWVkRWxlbWVudEFycmF5QnVmZmVyKDApLAotICAgICAg
bUFwcGxpZWRBdHRyaWJ1dGVzKCksCisgICAgICBtQXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlcigp
LAogICAgICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlclNpemUoMCksCiAgICAgICBtU3Ry
ZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyKDApLAogICAgICAgbVN0cmVhbWluZ0FycmF5QnVmZmVy
U2l6ZSgwKSwKQEAgLTM5LDg4ICs1MCw3MiBAQAogICAgIG1GdW5jdGlvbnMtPmdlblZlcnRleEFy
cmF5cygxLCAmbVZlcnRleEFycmF5SUQpOwogCiAgICAgLy8gU2V0IHRoZSBjYWNoZWQgdmVydGV4
IGF0dHJpYnV0ZSBhcnJheSBzaXplCi0gICAgR0xpbnQgbWF4VmVydGV4QXR0cmliczsKKyAgICBH
TGludCBtYXhWZXJ0ZXhBdHRyaWJzID0gMDsKICAgICBtRnVuY3Rpb25zLT5nZXRJbnRlZ2VydihH
TF9NQVhfVkVSVEVYX0FUVFJJQlMsICZtYXhWZXJ0ZXhBdHRyaWJzKTsKLSAgICBtQXR0cmlidXRl
cy5yZXNpemUobWF4VmVydGV4QXR0cmlicyk7CiAgICAgbUFwcGxpZWRBdHRyaWJ1dGVzLnJlc2l6
ZShtYXhWZXJ0ZXhBdHRyaWJzKTsKIH0KIAogVmVydGV4QXJyYXlHTDo6flZlcnRleEFycmF5R0wo
KQogewotICAgIGlmIChtVmVydGV4QXJyYXlJRCAhPSAwKQotICAgIHsKLSAgICAgICAgbUZ1bmN0
aW9ucy0+ZGVsZXRlVmVydGV4QXJyYXlzKDEsICZtVmVydGV4QXJyYXlJRCk7Ci0gICAgICAgIG1W
ZXJ0ZXhBcnJheUlEID0gMDsKLSAgICB9CisgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlVmVydGV4
QXJyYXkobVZlcnRleEFycmF5SUQpOworICAgIG1WZXJ0ZXhBcnJheUlEID0gMDsKIAotICAgIGlm
IChtU3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyICE9IDApCi0gICAgewotICAgICAgICBtRnVu
Y3Rpb25zLT5kZWxldGVCdWZmZXJzKDEsICZtU3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyKTsK
LSAgICAgICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlclNpemUgPSAwOwotICAgICAgICBt
U3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyID0gMDsKLSAgICB9CisgICAgbVN0YXRlTWFuYWdl
ci0+ZGVsZXRlQnVmZmVyKG1TdHJlYW1pbmdFbGVtZW50QXJyYXlCdWZmZXIpOworICAgIG1TdHJl
YW1pbmdFbGVtZW50QXJyYXlCdWZmZXJTaXplID0gMDsKKyAgICBtU3RyZWFtaW5nRWxlbWVudEFy
cmF5QnVmZmVyID0gMDsKIAotICAgIGlmIChtU3RyZWFtaW5nQXJyYXlCdWZmZXIgIT0gMCkKLSAg
ICB7Ci0gICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0ZUJ1ZmZlcnMoMSwgJm1TdHJlYW1pbmdBcnJh
eUJ1ZmZlcik7Ci0gICAgICAgIG1TdHJlYW1pbmdBcnJheUJ1ZmZlclNpemUgPSAwOwotICAgICAg
ICBtU3RyZWFtaW5nQXJyYXlCdWZmZXIgPSAwOwotICAgIH0KKyAgICBtU3RhdGVNYW5hZ2VyLT5k
ZWxldGVCdWZmZXIobVN0cmVhbWluZ0FycmF5QnVmZmVyKTsKKyAgICBtU3RyZWFtaW5nQXJyYXlC
dWZmZXJTaXplID0gMDsKKyAgICBtU3RyZWFtaW5nQXJyYXlCdWZmZXIgPSAwOwogCi0gICAgbUVs
ZW1lbnRBcnJheUJ1ZmZlci5zZXQobnVsbHB0cik7Ci0gICAgZm9yIChzaXplX3QgaWR4ID0gMDsg
aWR4IDwgbUF0dHJpYnV0ZXMuc2l6ZSgpOyBpZHgrKykKLSAgICB7Ci0gICAgICAgIG1BdHRyaWJ1
dGVzW2lkeF0uYnVmZmVyLnNldChOVUxMKTsKLSAgICB9Ci0KKyAgICBtQXBwbGllZEVsZW1lbnRB
cnJheUJ1ZmZlci5zZXQobnVsbHB0cik7CiAgICAgZm9yIChzaXplX3QgaWR4ID0gMDsgaWR4IDwg
bUFwcGxpZWRBdHRyaWJ1dGVzLnNpemUoKTsgaWR4KyspCiAgICAgewotICAgICAgICBtQXBwbGll
ZEF0dHJpYnV0ZXNbaWR4XS5idWZmZXIuc2V0KE5VTEwpOworICAgICAgICBtQXBwbGllZEF0dHJp
YnV0ZXNbaWR4XS5idWZmZXIuc2V0KG51bGxwdHIpOwogICAgIH0KIH0KIAotdm9pZCBWZXJ0ZXhB
cnJheUdMOjpzZXRFbGVtZW50QXJyYXlCdWZmZXIoY29uc3QgZ2w6OkJ1ZmZlciAqYnVmZmVyKQor
Z2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN5bmNEcmF3QXJyYXlzU3RhdGUoY29uc3QgZ2w6OkF0
dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1dGVzTWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkgY29u
c3QKIHsKLSAgICBtRWxlbWVudEFycmF5QnVmZmVyLnNldChidWZmZXIpOworICAgIHJldHVybiBz
eW5jRHJhd1N0YXRlKGFjdGl2ZUF0dHJpYnV0ZXNNYXNrLCBmaXJzdCwgY291bnQsIEdMX05PTkUs
IG51bGxwdHIsIGluc3RhbmNlQ291bnQsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwogfQogCi12b2lkIFZlcnRleEFycmF5R0w6OnNldEF0dHJpYnV0ZShzaXplX3Qg
aWR4LCBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyKQorZ2w6OkVycm9yIFZlcnRleEFy
cmF5R0w6OnN5bmNEcmF3RWxlbWVudHNTdGF0ZShjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFj
dGl2ZUF0dHJpYnV0ZXNNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJp
bWl0aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqKm91dEluZGljZXMpIGNvbnN0CiB7Ci0gICAgbUF0
dHJpYnV0ZXNbaWR4XSA9IGF0dHI7CisgICAgcmV0dXJuIHN5bmNEcmF3U3RhdGUoYWN0aXZlQXR0
cmlidXRlc01hc2ssIDAsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZUNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLCBvdXRJbmRpY2Vz
KTsKIH0KIAotdm9pZCBWZXJ0ZXhBcnJheUdMOjpzZXRBdHRyaWJ1dGVEaXZpc29yKHNpemVfdCBp
ZHgsIEdMdWludCBkaXZpc29yKQorZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN5bmNEcmF3U3Rh
dGUoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1dGVzTWFzaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0
RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqKm91dEluZGljZXMpIGNvbnN0CiB7Ci0gICAgbUF0dHJpYnV0ZXNbaWR4XS5kaXZpc29y
ID0gZGl2aXNvcjsKLX0KKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZlcnRl
eEFycmF5SUQsIGdldEFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXJJRCgpKTsKIAotdm9pZCBWZXJ0
ZXhBcnJheUdMOjplbmFibGVBdHRyaWJ1dGUoc2l6ZV90IGlkeCwgYm9vbCBlbmFibGVkU3RhdGUp
Ci17Ci0gICAgbUF0dHJpYnV0ZXNbaWR4XS5lbmFibGVkID0gZW5hYmxlZFN0YXRlOwotfQotCi1n
bDo6RXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0RyYXdBcnJheXNTdGF0ZShHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3luY0RyYXdTdGF0ZShmaXJzdCwg
Y291bnQsIEdMX05PTkUsIG51bGxwdHIsIG51bGxwdHIpOwotfQotCi1nbDo6RXJyb3IgVmVydGV4
QXJyYXlHTDo6c3luY0RyYXdFbGVtZW50c1N0YXRlKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBl
LCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGNvbnN0IEdMdm9pZCAqKm91dEluZGljZXMpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN5bmNEcmF3U3RhdGUoMCwgY291bnQsIHR5cGUsIGluZGljZXMsIG91
dEluZGljZXMpOwotfQotCi1nbDo6RXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0RyYXdTdGF0ZShH
TGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykgY29uc3QKLXsKLSAgICBtU3RhdGVNYW5h
Z2VyLT5iaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5SUQpOwotCiAgICAgLy8gQ2hlY2sgaWYg
YW55IGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBzdHJlYW1lZCwgZGV0ZXJtaW5lcyBpZiB0aGUgaW5k
ZXggcmFuZ2UgbmVlZHMgdG8gYmUgY29tcHV0ZWQKLSAgICBib29sIGF0dHJpYnV0ZXNOZWVkU3Ry
ZWFtaW5nID0gZG9BdHRyaWJ1dGVzTmVlZFN0cmVhbWluZygpOworICAgIGJvb2wgYXR0cmlidXRl
c05lZWRTdHJlYW1pbmcgPSBtQXR0cmlidXRlc05lZWRTdHJlYW1pbmcuYW55KCk7CiAKICAgICAv
LyBEZXRlcm1pbmUgaWYgYW4gaW5kZXggYnVmZmVyIG5lZWRzIHRvIGJlIHN0cmVhbWVkIGFuZCB0
aGUgcmFuZ2Ugb2YgdmVydGljZXMgdGhhdCBuZWVkIHRvIGJlIGNvcGllZAotICAgIFJhbmdlVUkg
aW5kZXhSYW5nZSgwLCAwKTsKKyAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2U7CiAgICAgaWYgKHR5
cGUgIT0gR0xfTk9ORSkKICAgICB7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHN5bmNJbmRl
eERhdGEoY291bnQsIHR5cGUsIGluZGljZXMsIGF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nLCAmaW5k
ZXhSYW5nZSwgb3V0SW5kaWNlcyk7CisgICAgICAgIEVycm9yIGVycm9yID0gc3luY0luZGV4RGF0
YShjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzTmVlZFN0cmVhbWluZywgJmlu
ZGV4UmFuZ2UsIG91dEluZGljZXMpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC0xMjgsMTU3ICsxMjMsNTQgQEAK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgLy8gTm90IGFuIGluZGV4ZWQgY2FsbCwg
c2V0IHRoZSByYW5nZSB0byBbZmlyc3QsIGZpcnN0ICsgY291bnQpCisgICAgICAgIC8vIE5vdCBh
biBpbmRleGVkIGNhbGwsIHNldCB0aGUgcmFuZ2UgdG8gW2ZpcnN0LCBmaXJzdCArIGNvdW50IC0g
MV0KICAgICAgICAgaW5kZXhSYW5nZS5zdGFydCA9IGZpcnN0OwotICAgICAgICBpbmRleFJhbmdl
LmVuZCA9IGZpcnN0ICsgY291bnQ7CisgICAgICAgIGluZGV4UmFuZ2UuZW5kID0gZmlyc3QgKyBj
b3VudCAtIDE7CiAgICAgfQogCi0gICAgLy8gU3luYyB0aGUgdmVydGV4IGF0dHJpYnV0ZSBzdGF0
ZSBhbmQgdHJhY2sgd2hhdCBkYXRhIG5lZWRzIHRvIGJlIHN0cmVhbWVkCi0gICAgc2l6ZV90IHN0
cmVhbWluZ0RhdGFTaXplID0gMDsKLSAgICBzaXplX3QgbWF4QXR0cmlidXRlRGF0YVNpemUgPSAw
OwotICAgIGdsOjpFcnJvciBlcnJvciA9IHN5bmNBdHRyaWJ1dGVTdGF0ZShhdHRyaWJ1dGVzTmVl
ZFN0cmVhbWluZywgaW5kZXhSYW5nZSwgJnN0cmVhbWluZ0RhdGFTaXplLCAmbWF4QXR0cmlidXRl
RGF0YVNpemUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgaWYgKGF0dHJpYnV0ZXNO
ZWVkU3RyZWFtaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KLQotICAg
IGlmIChzdHJlYW1pbmdEYXRhU2l6ZSA+IDApCi0gICAgewotICAgICAgICBBU1NFUlQoYXR0cmli
dXRlc05lZWRTdHJlYW1pbmcpOwotCi0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IHN0cmVhbUF0
dHJpYnV0ZXMoc3RyZWFtaW5nRGF0YVNpemUsIG1heEF0dHJpYnV0ZURhdGFTaXplLCBpbmRleFJh
bmdlKTsKKyAgICAgICAgRXJyb3IgZXJyb3IgPSBzdHJlYW1BdHRyaWJ1dGVzKGFjdGl2ZUF0dHJp
YnV0ZXNNYXNrLCBpbnN0YW5jZUNvdW50LCBpbmRleFJhbmdlKTsKICAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotYm9vbCBWZXJ0ZXhBcnJheUdMOjpkb0F0dHJp
YnV0ZXNOZWVkU3RyZWFtaW5nKCkgY29uc3QKK0Vycm9yIFZlcnRleEFycmF5R0w6OnN5bmNJbmRl
eERhdGEoR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBhdHRyaWJ1dGVzTmVlZFN0cmVhbWluZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5kZXhSYW5nZSAqb3V0SW5kZXhSYW5nZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykgY29uc3QKIHsKLSAg
ICAvLyBUT0RPOiBpZiBHTEVTLCBub3RoaW5nIG5lZWRzIHRvIGJlIHN0cmVhbWVkCi0gICAgZm9y
IChzaXplX3QgaWR4ID0gMDsgaWR4IDwgbUF0dHJpYnV0ZXMuc2l6ZSgpOyBpZHgrKykKLSAgICB7
Ci0gICAgICAgIGlmIChtQXR0cmlidXRlc1tpZHhdLmVuYWJsZWQgJiYgbUF0dHJpYnV0ZXNbaWR4
XS5idWZmZXIuZ2V0KCkgPT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIH0KLSAgICB9CisgICAgQVNTRVJUKG91dEluZGljZXMpOwogCi0gICAg
cmV0dXJuIGZhbHNlOwotfQorICAgIGdsOjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IG1E
YXRhLmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOwogCi1nbDo6RXJyb3IgVmVydGV4QXJy
YXlHTDo6c3luY0F0dHJpYnV0ZVN0YXRlKGJvb2wgYXR0cmlidXRlc05lZWRTdHJlYW1pbmcsIGNv
bnN0IFJhbmdlVUkgJmluZGV4UmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCAqb3V0U3RyZWFtaW5nRGF0YVNpemUsIHNpemVfdCAqb3V0TWF4
QXR0cmlidXRlRGF0YVNpemUpIGNvbnN0Ci17Ci0gICAgKm91dFN0cmVhbWluZ0RhdGFTaXplID0g
MDsKLSAgICAqb3V0TWF4QXR0cmlidXRlRGF0YVNpemUgPSAwOwotCi0gICAgZm9yIChzaXplX3Qg
aWR4ID0gMDsgaWR4IDwgbUF0dHJpYnV0ZXMuc2l6ZSgpOyBpZHgrKykKLSAgICB7Ci0gICAgICAg
IC8vIEFsd2F5cyBzeW5jIHRoZSBlbmFibGVkIGFuZCBkaXZpc29yIHN0YXRlLCB0aGV5IGFyZSBy
ZXF1aXJlZCBmb3IgYm90aCBzdHJlYW1pbmcgYW5kIGJ1ZmZlcmVkCi0gICAgICAgIC8vIGF0dHJp
YnV0ZXMKLSAgICAgICAgaWYgKG1BcHBsaWVkQXR0cmlidXRlc1tpZHhdLmVuYWJsZWQgIT0gbUF0
dHJpYnV0ZXNbaWR4XS5lbmFibGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUF0dHJp
YnV0ZXNbaWR4XS5lbmFibGVkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1GdW5j
dGlvbnMtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGlkeCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+
ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGlkeCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtQXBwbGllZEF0dHJpYnV0ZXNbaWR4XS5lbmFibGVkID0gbUF0dHJpYnV0ZXNbaWR4XS5lbmFi
bGVkOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtQXBwbGllZEF0dHJpYnV0ZXNbaWR4XS5kaXZp
c29yICE9IG1BdHRyaWJ1dGVzW2lkeF0uZGl2aXNvcikKLSAgICAgICAgewotICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+dmVydGV4QXR0cmliRGl2aXNvcihpZHgsIG1BdHRyaWJ1dGVzW2lkeF0uZGl2
aXNvcik7Ci0gICAgICAgICAgICBtQXBwbGllZEF0dHJpYnV0ZXNbaWR4XS5kaXZpc29yID0gbUF0
dHJpYnV0ZXNbaWR4XS5kaXZpc29yOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1BdHRyaWJ1
dGVzW2lkeF0uZW5hYmxlZCAmJiBtQXR0cmlidXRlc1tpZHhdLmJ1ZmZlci5nZXQoKSA9PSBudWxs
cHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoYXR0cmlidXRlc05lZWRTdHJlYW1p
bmcpOwotCi0gICAgICAgICAgICBjb25zdCBzaXplX3Qgc3RyZWFtZWRWZXJ0ZXhDb3VudCA9IGlu
ZGV4UmFuZ2UuZW5kIC0gaW5kZXhSYW5nZS5zdGFydCArIDE7Ci0KLSAgICAgICAgICAgIC8vIElm
IHN0cmVhbWluZyBpcyBnb2luZyB0byBiZSByZXF1aXJlZCwgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0
aGUgcmVxdWlyZWQgYnVmZmVyCi0gICAgICAgICAgICAvLyBhbmQgaG93IG11Y2ggc2xhY2sgc3Bh
Y2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyIHdpbGwgYmUgcmVxdWlyZWQgYnkgZGV0
ZXJtaW5pbmcKLSAgICAgICAgICAgIC8vIHRoZSBhdHRyaWJ1dGUgd2l0aCB0aGUgbGFyZ2VzdCBk
YXRhIHNpemUuCi0gICAgICAgICAgICBzaXplX3QgdHlwZVNpemUgPSBDb21wdXRlVmVydGV4QXR0
cmlidXRlVHlwZVNpemUobUF0dHJpYnV0ZXNbaWR4XSk7Ci0gICAgICAgICAgICAqb3V0U3RyZWFt
aW5nRGF0YVNpemUgKz0gdHlwZVNpemUgKiBzdHJlYW1lZFZlcnRleENvdW50OwotICAgICAgICAg
ICAgKm91dE1heEF0dHJpYnV0ZURhdGFTaXplID0gc3RkOjptYXgoKm91dE1heEF0dHJpYnV0ZURh
dGFTaXplLCB0eXBlU2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBTeW5jIHRoZSBhdHRyaWJ1dGUgd2l0aCBubyB0cmFuc2xhdGlvbgotICAg
ICAgICAgICAgaWYgKG1BcHBsaWVkQXR0cmlidXRlc1tpZHhdICE9IG1BdHRyaWJ1dGVzW2lkeF0p
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJ1ZmZlciAqYXJyYXlC
dWZmZXIgPSBtQXR0cmlidXRlc1tpZHhdLmJ1ZmZlci5nZXQoKTsKLSAgICAgICAgICAgICAgICBj
b25zdCBCdWZmZXJHTCAqYXJyYXlCdWZmZXJHTCA9IEdldEltcGxBczxCdWZmZXJHTD4oYXJyYXlC
dWZmZXIpOwotICAgICAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBhcnJheUJ1ZmZlckdMLT5nZXRCdWZmZXJJRCgpKTsKLQotICAgICAgICAgICAg
ICAgIGlmIChtQXR0cmlidXRlc1tpZHhdLnB1cmVJbnRlZ2VyKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dmVydGV4QXR0cmliSVBvaW50ZXIoaWR4
LCBtQXR0cmlidXRlc1tpZHhdLnNpemUsIG1BdHRyaWJ1dGVzW2lkeF0udHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUF0dHJpYnV0ZXNb
aWR4XS5zdHJpZGUsIG1BdHRyaWJ1dGVzW2lkeF0ucG9pbnRlcik7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYlBvaW50ZXIoaWR4LCBtQXR0cmlidXRlc1tp
ZHhdLnNpemUsIG1BdHRyaWJ1dGVzW2lkeF0udHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXR0cmlidXRlc1tpZHhdLm5vcm1hbGl6ZWQs
IG1BdHRyaWJ1dGVzW2lkeF0uc3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1BdHRyaWJ1dGVzW2lkeF0ucG9pbnRlcik7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2lkeF0gPSBt
QXR0cmlidXRlc1tpZHhdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci19Ci0KLWdsOjpFcnJvciBWZXJ0ZXhBcnJh
eUdMOjpzeW5jSW5kZXhEYXRhKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZv
aWQgKmluZGljZXMsIGJvb2wgYXR0cmlidXRlc05lZWRTdHJlYW1pbmcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZVVJICpvdXRJbmRleFJhbmdlLCBjb25zdCBH
THZvaWQgKipvdXRJbmRpY2VzKSBjb25zdAotewotICAgIEFTU0VSVChvdXRJbmRpY2VzKTsKLQog
ICAgIC8vIE5lZWQgdG8gY2hlY2sgdGhlIHJhbmdlIG9mIGluZGljZXMgaWYgYXR0cmlidXRlcyBu
ZWVkIHRvIGJlIHN0cmVhbWVkCi0gICAgaWYgKG1FbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCkgIT0g
bnVsbHB0cikKKyAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVyICE9IG51bGxwdHIpCiAgICAgewot
ICAgICAgICBjb25zdCBCdWZmZXJHTCAqYnVmZmVyR0wgPSBHZXRJbXBsQXM8QnVmZmVyR0w+KG1F
bGVtZW50QXJyYXlCdWZmZXIuZ2V0KCkpOwotICAgICAgICBHTHVpbnQgZWxlbWVudEFycmF5QnVm
ZmVySUQgPSBidWZmZXJHTC0+Z2V0QnVmZmVySUQoKTsKLSAgICAgICAgaWYgKGVsZW1lbnRBcnJh
eUJ1ZmZlcklEICE9IG1BcHBsaWVkRWxlbWVudEFycmF5QnVmZmVyKQorICAgICAgICBpZiAoZWxl
bWVudEFycmF5QnVmZmVyICE9IG1BcHBsaWVkRWxlbWVudEFycmF5QnVmZmVyLmdldCgpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSLCBlbGVtZW50QXJyYXlCdWZmZXJJRCk7Ci0gICAgICAgICAgICBtQXBwbGll
ZEVsZW1lbnRBcnJheUJ1ZmZlciA9IGVsZW1lbnRBcnJheUJ1ZmZlcklEOworICAgICAgICAgICAg
Y29uc3QgQnVmZmVyR0wgKmJ1ZmZlckdMID0gR2V0SW1wbEFzPEJ1ZmZlckdMPihlbGVtZW50QXJy
YXlCdWZmZXIpOworICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgYnVmZmVyR0wtPmdldEJ1ZmZlcklEKCkpOworICAgICAgICAgICAg
bUFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXIuc2V0KGVsZW1lbnRBcnJheUJ1ZmZlcik7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBPbmx5IGNvbXB1dGUgdGhlIGluZGV4IHJhbmdlIGlmIHRoZSBh
dHRyaWJ1dGVzIGFsc28gbmVlZCB0byBiZSBzdHJlYW1lZAogICAgICAgICBpZiAoYXR0cmlidXRl
c05lZWRTdHJlYW1pbmcpCiAgICAgICAgIHsKICAgICAgICAgICAgIHB0cmRpZmZfdCBlbGVtZW50
QXJyYXlCdWZmZXJPZmZzZXQgPSByZWludGVycHJldF9jYXN0PHB0cmRpZmZfdD4oaW5kaWNlcyk7
Ci0KLSAgICAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IHJhbmdlIGluIHRoZSBidWZmZXIKLSAg
ICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2VDYWNoZSAqcmFuZ2VDYWNoZSA9IG1FbGVtZW50QXJy
YXlCdWZmZXIuZ2V0KCktPmdldEluZGV4UmFuZ2VDYWNoZSgpOwotCi0gICAgICAgICAgICBpZiAo
IXJhbmdlQ2FjaGUtPmZpbmRSYW5nZSh0eXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGVs
ZW1lbnRBcnJheUJ1ZmZlck9mZnNldCksIGNvdW50LCBvdXRJbmRleFJhbmdlKSkKKyAgICAgICAg
ICAgIEVycm9yIGVycm9yID0gbURhdGEuZ2V0RWxlbWVudEFycmF5QnVmZmVyKCktPmdldEluZGV4
UmFuZ2UoCisgICAgICAgICAgICAgICAgdHlwZSwgZWxlbWVudEFycmF5QnVmZmVyT2Zmc2V0LCBj
b3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsIG91dEluZGV4UmFuZ2UpOworICAgICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAv
LyBOZWVkIHRvIGNvbXB1dGUgdGhlIGluZGV4IHJhbmdlLgotICAgICAgICAgICAgICAgIG1TdGF0
ZU1hbmFnZXItPmJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVsZW1lbnRBcnJh
eUJ1ZmZlcklEKTsKLSAgICAgICAgICAgICAgICB1aW50OF90ICplbGVtZW50QXJyYXlCdWZmZXJQ
b2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obUZ1bmN0aW9ucy0+bWFwQnVmZmVy
KEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBHTF9SRUFEX09OTFkpKTsKLQotICAgICAgICAgICAg
ICAgICpvdXRJbmRleFJhbmdlID0gSW5kZXhSYW5nZUNhY2hlOjpDb21wdXRlUmFuZ2UodHlwZSwg
ZWxlbWVudEFycmF5QnVmZmVyUG9pbnRlciArIGVsZW1lbnRBcnJheUJ1ZmZlck9mZnNldCwgY291
bnQpOwotCi0gICAgICAgICAgICAgICAgLy8gVE9ETzogU3RvcmUgdGhlIHJhbmdlIGNhY2hlIGF0
IHRoZSBpbXBsIGxldmVsIHNpbmNlIHRoZSBnbDo6QnVmZmVyIG9iamVjdCBpcyBzdXBwb3NlZCB0
byByZW1haW4gY29uc3RhbnQKLSAgICAgICAgICAgICAgICBjb25zdF9jYXN0PEluZGV4UmFuZ2VD
YWNoZSo+KHJhbmdlQ2FjaGUpLT5hZGRSYW5nZSh0eXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGVsZW1lbnRBcnJheUJ1ZmZlck9mZnNldCksIGNvdW50LCAqb3V0SW5kZXhSYW5nZSk7Ci0K
LSAgICAgICAgICAgICAgICBpZiAoIW1GdW5jdGlvbnMtPnVubWFwQnVmZmVyKEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBA
IC0yOTMsNyArMTg1LDcgQEAKICAgICAgICAgLy8gT25seSBjb21wdXRlIHRoZSBpbmRleCByYW5n
ZSBpZiB0aGUgYXR0cmlidXRlcyBhbHNvIG5lZWQgdG8gYmUgc3RyZWFtZWQKICAgICAgICAgaWYg
KGF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nKQogICAgICAgICB7Ci0gICAgICAgICAgICAqb3V0SW5k
ZXhSYW5nZSA9IEluZGV4UmFuZ2VDYWNoZTo6Q29tcHV0ZVJhbmdlKHR5cGUsIGluZGljZXMsIGNv
dW50KTsKKyAgICAgICAgICAgICpvdXRJbmRleFJhbmdlID0gQ29tcHV0ZUluZGV4UmFuZ2UodHlw
ZSwgaW5kaWNlcywgY291bnQsIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEFsbG9jYXRlIHRoZSBzdHJlYW1pbmcgZWxlbWVudCBhcnJheSBidWZmZXIK
QEAgLTMwNCwxMCArMTk2LDEwIEBACiAgICAgICAgIH0KIAogICAgICAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtU3RyZWFtaW5nRWxlbWVudEFy
cmF5QnVmZmVyKTsKLSAgICAgICAgbUFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXIgPSBtU3RyZWFt
aW5nRWxlbWVudEFycmF5QnVmZmVyOworICAgICAgICBtQXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZl
ci5zZXQobnVsbHB0cik7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBlbGVtZW50IGFycmF5
IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2gKLSAgICAgICAgY29uc3QgZ2w6OlR5cGUgJmluZGV4VHlw
ZUluZm8gPSBnbDo6R2V0VHlwZUluZm8odHlwZSk7CisgICAgICAgIGNvbnN0IFR5cGUgJmluZGV4
VHlwZUluZm8gICAgICAgICAgPSBHZXRUeXBlSW5mbyh0eXBlKTsKICAgICAgICAgc2l6ZV90IHJl
cXVpcmVkU3RyZWFtaW5nQnVmZmVyU2l6ZSA9IGluZGV4VHlwZUluZm8uYnl0ZXMgKiBjb3VudDsK
ICAgICAgICAgaWYgKHJlcXVpcmVkU3RyZWFtaW5nQnVmZmVyU2l6ZSA+IG1TdHJlYW1pbmdFbGVt
ZW50QXJyYXlCdWZmZXJTaXplKQogICAgICAgICB7CkBAIC0zMjUsMTEgKzIxNyw1MiBAQAogICAg
ICAgICAqb3V0SW5kaWNlcyA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAotZ2w6
OkVycm9yIFZlcnRleEFycmF5R0w6OnN0cmVhbUF0dHJpYnV0ZXMoc2l6ZV90IHN0cmVhbWluZ0Rh
dGFTaXplLCBzaXplX3QgbWF4QXR0cmlidXRlRGF0YVNpemUsIGNvbnN0IFJhbmdlVUkgJmluZGV4
UmFuZ2UpIGNvbnN0Cit2b2lkIFZlcnRleEFycmF5R0w6OmNvbXB1dGVTdHJlYW1pbmdBdHRyaWJ1
dGVTaXplcyhjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYnV0ZXNNYXNrLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBpbnN0YW5jZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dFN0cmVh
bWluZ0RhdGFTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90ICpvdXRNYXhBdHRyaWJ1dGVEYXRhU2l6ZSkgY29uc3QKIHsKKyAgICAq
b3V0U3RyZWFtaW5nRGF0YVNpemUgICAgPSAwOworICAgICpvdXRNYXhBdHRyaWJ1dGVEYXRhU2l6
ZSA9IDA7CisKKyAgICBBU1NFUlQobUF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nLmFueSgpKTsKKwor
ICAgIGNvbnN0IGF1dG8gJmF0dHJpYnMgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7Cisg
ICAgZm9yIChhdXRvIGlkeCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KG1BdHRyaWJ1dGVzTmVlZFN0
cmVhbWluZyAmIGFjdGl2ZUF0dHJpYnV0ZXNNYXNrKSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1
dG8gJmF0dHJpYiA9IGF0dHJpYnNbaWR4XTsKKyAgICAgICAgQVNTRVJUKEF0dHJpYnV0ZU5lZWRz
U3RyZWFtaW5nKGF0dHJpYikpOworCisgICAgICAgIC8vIElmIHN0cmVhbWluZyBpcyBnb2luZyB0
byBiZSByZXF1aXJlZCwgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgcmVxdWlyZWQgYnVmZmVyCisg
ICAgICAgIC8vIGFuZCBob3cgbXVjaCBzbGFjayBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBidWZmZXIgd2lsbCBiZSByZXF1aXJlZCBieSBkZXRlcm1pbmluZworICAgICAgICAvLyB0aGUg
YXR0cmlidXRlIHdpdGggdGhlIGxhcmdlc3QgZGF0YSBzaXplLgorICAgICAgICBzaXplX3QgdHlw
ZVNpemUgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKTsKKyAgICAgICAg
Km91dFN0cmVhbWluZ0RhdGFTaXplICs9IHR5cGVTaXplICogQ29tcHV0ZVZlcnRleEF0dHJpYnV0
ZUVsZW1lbnRDb3VudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dHJpYiwgaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgpLCBpbnN0YW5jZUNvdW50KTsK
KyAgICAgICAgKm91dE1heEF0dHJpYnV0ZURhdGFTaXplID0gc3RkOjptYXgoKm91dE1heEF0dHJp
YnV0ZURhdGFTaXplLCB0eXBlU2l6ZSk7CisgICAgfQorfQorCitnbDo6RXJyb3IgVmVydGV4QXJy
YXlHTDo6c3RyZWFtQXR0cmlidXRlcyhjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0
dHJpYnV0ZXNNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBpbnN0YW5jZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIGNvbnN0Cit7CisgICAg
Ly8gU3luYyB0aGUgdmVydGV4IGF0dHJpYnV0ZSBzdGF0ZSBhbmQgdHJhY2sgd2hhdCBkYXRhIG5l
ZWRzIHRvIGJlIHN0cmVhbWVkCisgICAgc2l6ZV90IHN0cmVhbWluZ0RhdGFTaXplICAgID0gMDsK
KyAgICBzaXplX3QgbWF4QXR0cmlidXRlRGF0YVNpemUgPSAwOworCisgICAgY29tcHV0ZVN0cmVh
bWluZ0F0dHJpYnV0ZVNpemVzKGFjdGl2ZUF0dHJpYnV0ZXNNYXNrLCBpbnN0YW5jZUNvdW50LCBp
bmRleFJhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtaW5n
RGF0YVNpemUsICZtYXhBdHRyaWJ1dGVEYXRhU2l6ZSk7CisKKyAgICBpZiAoc3RyZWFtaW5nRGF0
YVNpemUgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIH0KKwogICAgIGlmIChtU3RyZWFtaW5nQXJyYXlCdWZmZXIgPT0gMCkKICAgICB7CiAg
ICAgICAgIG1GdW5jdGlvbnMtPmdlbkJ1ZmZlcnMoMSwgJm1TdHJlYW1pbmdBcnJheUJ1ZmZlcik7
CkBAIC0zNTgsNTAgKzI5MSw2NSBAQAogICAgICAgICB1aW50OF90ICpidWZmZXJQb2ludGVyID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obUZ1bmN0aW9ucy0+bWFwQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgR0xfV1JJVEVfT05MWSkpOwogICAgICAgICBzaXplX3QgY3VyQnVmZmVyT2Zmc2V0
ID0gYnVmZmVyRW1wdHlTcGFjZTsKIAotICAgICAgICBjb25zdCBzaXplX3Qgc3RyZWFtZWRWZXJ0
ZXhDb3VudCA9IGluZGV4UmFuZ2UuZW5kIC0gaW5kZXhSYW5nZS5zdGFydCArIDE7Ci0KLSAgICAg
ICAgZm9yIChzaXplX3QgaWR4ID0gMDsgaWR4IDwgbUF0dHJpYnV0ZXMuc2l6ZSgpOyBpZHgrKykK
KyAgICAgICAgY29uc3QgYXV0byAmYXR0cmlicyA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMo
KTsKKyAgICAgICAgZm9yIChhdXRvIGlkeCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KG1BdHRyaWJ1
dGVzTmVlZFN0cmVhbWluZyAmIGFjdGl2ZUF0dHJpYnV0ZXNNYXNrKSkKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKG1BdHRyaWJ1dGVzW2lkeF0uZW5hYmxlZCAmJiBtQXR0cmlidXRlc1tpZHhd
LmJ1ZmZlci5nZXQoKSA9PSBudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnN0IHNpemVfdCBzb3VyY2VTdHJpZGUgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRl
KG1BdHRyaWJ1dGVzW2lkeF0pOwotICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBkZXN0U3Ry
aWRlID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKG1BdHRyaWJ1dGVzW2lkeF0pOwor
ICAgICAgICAgICAgY29uc3QgYXV0byAmYXR0cmliID0gYXR0cmlic1tpZHhdOworICAgICAgICAg
ICAgQVNTRVJUKEF0dHJpYnV0ZU5lZWRzU3RyZWFtaW5nKGF0dHJpYikpOwogCi0gICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXRQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4obUF0dHJpYnV0ZXNbaWR4XS5wb2ludGVyKTsKKyAgICAgICAgICAgIGNvbnN0
IHNpemVfdCBzdHJlYW1lZFZlcnRleENvdW50ID0KKyAgICAgICAgICAgICAgICBDb21wdXRlVmVy
dGV4QXR0cmlidXRlRWxlbWVudENvdW50KGF0dHJpYiwgaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgp
LCBpbnN0YW5jZUNvdW50KTsKIAotICAgICAgICAgICAgICAgIC8vIFBhY2sgdGhlIGRhdGEgd2hl
biBjb3B5aW5nIGl0LCB1c2VyIGNvdWxkIGhhdmUgc3VwcGxpZWQgYSB2ZXJ5IGxhcmdlIHN0cmlk
ZSB0aGF0IHdvdWxkCi0gICAgICAgICAgICAgICAgLy8gY2F1c2UgdGhlIGJ1ZmZlciB0byBiZSBt
dWNoIGxhcmdlciB0aGFuIG5lZWRlZC4KLSAgICAgICAgICAgICAgICBpZiAoZGVzdFN0cmlkZSA9
PSBzb3VyY2VTdHJpZGUpCisgICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNlU3RyaWRlID0g
Q29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpOworICAgICAgICAgICAgY29uc3Qg
c2l6ZV90IGRlc3RTdHJpZGUgICA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRy
aWIpOworCisgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dFBvaW50ZXIgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oYXR0cmliLnBvaW50ZXIpOworCisgICAgICAgICAg
ICAvLyBQYWNrIHRoZSBkYXRhIHdoZW4gY29weWluZyBpdCwgdXNlciBjb3VsZCBoYXZlIHN1cHBs
aWVkIGEgdmVyeSBsYXJnZSBzdHJpZGUgdGhhdAorICAgICAgICAgICAgLy8gd291bGQgY2F1c2Ug
dGhlIGJ1ZmZlciB0byBiZSBtdWNoIGxhcmdlciB0aGFuIG5lZWRlZC4KKyAgICAgICAgICAgIGlm
IChkZXN0U3RyaWRlID09IHNvdXJjZVN0cmlkZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBDYW4gY29weSBpbiBvbmUgZ28sIHRoZSBkYXRhIGlzIHBhY2tlZAorICAgICAgICAg
ICAgICAgIG1lbWNweShidWZmZXJQb2ludGVyICsgY3VyQnVmZmVyT2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICBpbnB1dFBvaW50ZXIgKyAoc291cmNlU3RyaWRlICogaW5kZXhSYW5nZS5z
dGFydCksCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3RTdHJpZGUgKiBzdHJlYW1lZFZlcnRl
eENvdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAvLyBDb3B5IGVhY2ggdmVydGV4IGluZGl2aWR1YWxseQorICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IHZlcnRleElkeCA9IDA7IHZlcnRleElkeCA8IHN0cmVhbWVk
VmVydGV4Q291bnQ7IHZlcnRleElkeCsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gQ2FuIGNvcHkgaW4gb25lIGdvLCB0aGUgZGF0YSBpcyBwYWNrZWQKLSAgICAg
ICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlclBvaW50ZXIgKyBjdXJCdWZmZXJPZmZzZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFBvaW50ZXIgKyAoc291cmNlU3RyaWRlICog
aW5kZXhSYW5nZS5zdGFydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0U3RyaWRl
ICogc3RyZWFtZWRWZXJ0ZXhDb3VudCk7CisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91
dCA9IGJ1ZmZlclBvaW50ZXIgKyBjdXJCdWZmZXJPZmZzZXQgKyAoZGVzdFN0cmlkZSAqIHZlcnRl
eElkeCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmluID0KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlucHV0UG9pbnRlciArIHNvdXJjZVN0cmlkZSAqICh2ZXJ0ZXhJZHgg
KyBpbmRleFJhbmdlLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KG91dCwgaW4s
IGRlc3RTdHJpZGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGVhY2ggdmVydGV4
IGluZGl2aWR1YWxseQotICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCB2ZXJ0ZXhJZHgg
PSBpbmRleFJhbmdlLnN0YXJ0OyB2ZXJ0ZXhJZHggPD0gaW5kZXhSYW5nZS5lbmQ7IHZlcnRleElk
eCsrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZW1j
cHkoYnVmZmVyUG9pbnRlciArIGN1ckJ1ZmZlck9mZnNldCArIChkZXN0U3RyaWRlICogdmVydGV4
SWR4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFBvaW50ZXIgKyAoc291
cmNlU3RyaWRlICogdmVydGV4SWR4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0U3RyaWRlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgd2hlcmUgdGhlIDAtaW5k
ZXggdmVydGV4IHdvdWxkIGJlLgotICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2ZXJ0ZXhT
dGFydE9mZnNldCA9IGN1ckJ1ZmZlck9mZnNldCAtIChpbmRleFJhbmdlLnN0YXJ0ICogZGVzdFN0
cmlkZSk7CisgICAgICAgICAgICAvLyBDb21wdXRlIHdoZXJlIHRoZSAwLWluZGV4IHZlcnRleCB3
b3VsZCBiZS4KKyAgICAgICAgICAgIGNvbnN0IHNpemVfdCB2ZXJ0ZXhTdGFydE9mZnNldCA9IGN1
ckJ1ZmZlck9mZnNldCAtIChpbmRleFJhbmdlLnN0YXJ0ICogZGVzdFN0cmlkZSk7CiAKLSAgICAg
ICAgICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKGlkeCwgbUF0dHJpYnV0
ZXNbaWR4XS5zaXplLCBtQXR0cmlidXRlc1tpZHhdLnR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXR0cmlidXRlc1tpZHhdLm5vcm1hbGl6ZWQs
IGRlc3RTdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdm9pZCo+KHZlcnRleFN0YXJ0T2Zmc2V0KSk7
CisgICAgICAgICAgICBpZiAoYXR0cmliLnB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCghYXR0cmliLm5vcm1hbGl6ZWQpOworICAgICAgICAgICAgICAg
IG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYklQb2ludGVyKAorICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHTHVpbnQ+KGlkeCksIGF0dHJpYi5zaXplLCBhdHRyaWIudHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4oZGVzdFN0cmlkZSksCisgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x2b2lkICo+KHZlcnRleFN0YXJ0
T2Zmc2V0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dmVydGV4QXR0cmliUG9pbnRlcigKKyAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihpZHgpLCBhdHRyaWIuc2l6ZSwgYXR0
cmliLnR5cGUsIGF0dHJpYi5ub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxHTHNpemVpPihkZXN0U3RyaWRlKSwKKyAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHTHZvaWQgKj4odmVydGV4U3RhcnRPZmZzZXQpKTsKKyAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgICAgIGN1ckJ1ZmZlck9mZnNldCArPSBkZXN0U3RyaWRlICogc3Ry
ZWFtZWRWZXJ0ZXhDb3VudDsKKyAgICAgICAgICAgIGN1ckJ1ZmZlck9mZnNldCArPSBkZXN0U3Ry
aWRlICogc3RyZWFtZWRWZXJ0ZXhDb3VudDsKIAotICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhl
IGFwcGxpZWQgYXR0cmlidXRlIGFzIGRpcnR5IGJ5IHNldHRpbmcgYW4gaW52YWxpZCBzaXplIHNv
IHRoYXQgaWYgaXQgZG9lc24ndAotICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gYmUgc3RyZWFt
ZWQgbGF0ZXIsIHRoZXJlIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBjYWNoaW5nIHdpbGwgc2tpcCBp
dC4KLSAgICAgICAgICAgICAgICBtQXBwbGllZEF0dHJpYnV0ZXNbaWR4XS5zaXplID0gc3RhdGlj
X2Nhc3Q8R0x1aW50PigtMSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBNYXJrIHRo
ZSBhcHBsaWVkIGF0dHJpYnV0ZSBhcyBkaXJ0eSBieSBzZXR0aW5nIGFuIGludmFsaWQgc2l6ZSBz
byB0aGF0IGlmIGl0IGRvZXNuJ3QKKyAgICAgICAgICAgIC8vIG5lZWQgdG8gYmUgc3RyZWFtZWQg
bGF0ZXIsIHRoZXJlIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBjYWNoaW5nIHdpbGwgc2tpcCBpdC4K
KyAgICAgICAgICAgIG1BcHBsaWVkQXR0cmlidXRlc1tpZHhdLnNpemUgPSBzdGF0aWNfY2FzdDxH
THVpbnQ+KC0xKTsKICAgICAgICAgfQogCiAgICAgICAgIHVubWFwUmVzdWx0ID0gbUZ1bmN0aW9u
cy0+dW5tYXBCdWZmZXIoR0xfQVJSQVlfQlVGRkVSKTsKQEAgLTQwOSwxMCArMzU3LDEwIEBACiAK
ICAgICBpZiAodW5tYXBSZXN1bHQgIT0gR0xfVFJVRSkKICAgICB7Ci0gICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byB1bm1hcCB0aGUgY2xpZW50IGRh
dGEgc3RyZWFtaW5nIGJ1ZmZlci4iKTsKKyAgICAgICAgcmV0dXJuIEVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJGYWlsZWQgdG8gdW5tYXAgdGhlIGNsaWVudCBkYXRhIHN0cmVhbWluZyBidWZmZXIu
Iik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKIH0KIAogR0x1aW50IFZlcnRleEFycmF5R0w6OmdldFZl
cnRleEFycmF5SUQoKSBjb25zdApAQCAtNDIwLDQgKzM2OCwxMzAgQEAKICAgICByZXR1cm4gbVZl
cnRleEFycmF5SUQ7CiB9CiAKK0dMdWludCBWZXJ0ZXhBcnJheUdMOjpnZXRBcHBsaWVkRWxlbWVu
dEFycmF5QnVmZmVySUQoKSBjb25zdAoreworICAgIGlmIChtQXBwbGllZEVsZW1lbnRBcnJheUJ1
ZmZlci5nZXQoKSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1TdHJlYW1pbmdF
bGVtZW50QXJyYXlCdWZmZXI7CisgICAgfQorCisgICAgcmV0dXJuIEdldEltcGxBczxCdWZmZXJH
TD4obUFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXIuZ2V0KCkpLT5nZXRCdWZmZXJJRCgpOwogfQor
Cit2b2lkIFZlcnRleEFycmF5R0w6OnVwZGF0ZU5lZWRzU3RyZWFtaW5nKHNpemVfdCBhdHRyaWJJ
bmRleCkKK3sKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IG1EYXRhLmdldFZl
cnRleEF0dHJpYnV0ZShhdHRyaWJJbmRleCk7CisgICAgbUF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5n
LnNldChhdHRyaWJJbmRleCwgQXR0cmlidXRlTmVlZHNTdHJlYW1pbmcoYXR0cmliKSk7Cit9CisK
K3ZvaWQgVmVydGV4QXJyYXlHTDo6dXBkYXRlQXR0cmliRW5hYmxlZChzaXplX3QgYXR0cmliSW5k
ZXgpCit7CisgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSBtRGF0YS5nZXRWZXJ0
ZXhBdHRyaWJ1dGUoYXR0cmliSW5kZXgpOworICAgIGlmIChtQXBwbGllZEF0dHJpYnV0ZXNbYXR0
cmliSW5kZXhdLmVuYWJsZWQgPT0gYXR0cmliLmVuYWJsZWQpCisgICAgeworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdXBkYXRlTmVlZHNTdHJlYW1pbmcoYXR0cmliSW5kZXgpOworCisg
ICAgbVN0YXRlTWFuYWdlci0+YmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheUlELCBnZXRBcHBs
aWVkRWxlbWVudEFycmF5QnVmZmVySUQoKSk7CisgICAgaWYgKGF0dHJpYi5lbmFibGVkKQorICAg
IHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoc3RhdGljX2Nh
c3Q8R0x1aW50PihhdHRyaWJJbmRleCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtRnVuY3Rpb25zLT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoc3RhdGljX2Nhc3Q8R0x1aW50
PihhdHRyaWJJbmRleCkpOworICAgIH0KKyAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5k
ZXhdLmVuYWJsZWQgPSBhdHRyaWIuZW5hYmxlZDsKK30KKwordm9pZCBWZXJ0ZXhBcnJheUdMOjp1
cGRhdGVBdHRyaWJQb2ludGVyKHNpemVfdCBhdHRyaWJJbmRleCkKK3sKKyAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZShhdHRyaWJJbmRl
eCk7CisgICAgaWYgKG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0gPT0gYXR0cmliKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVwZGF0ZU5lZWRzU3RyZWFtaW5n
KGF0dHJpYkluZGV4KTsKKworICAgIC8vIElmIHdlIG5lZWQgdG8gc3RyZWFtLCBkZWZlciB0aGUg
YXR0cmliUG9pbnRlciB0byB0aGUgZHJhdyBjYWxsLgorICAgIGlmIChtQXR0cmlidXRlc05lZWRT
dHJlYW1pbmdbYXR0cmliSW5kZXhdKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlJRCwgZ2V0QXBw
bGllZEVsZW1lbnRBcnJheUJ1ZmZlcklEKCkpOworICAgIGNvbnN0IEJ1ZmZlciAqYXJyYXlCdWZm
ZXIgPSBhdHRyaWIuYnVmZmVyLmdldCgpOworICAgIGlmIChhcnJheUJ1ZmZlciAhPSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgY29uc3QgQnVmZmVyR0wgKmFycmF5QnVmZmVyR0wgPSBHZXRJbXBs
QXM8QnVmZmVyR0w+KGFycmF5QnVmZmVyKTsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIGFycmF5QnVmZmVyR0wtPmdldEJ1ZmZlcklEKCkpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgMCk7CisgICAgfQorICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJ
bmRleF0uYnVmZmVyID0gYXR0cmliLmJ1ZmZlcjsKKworICAgIGlmIChhdHRyaWIucHVyZUludGVn
ZXIpCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihzdGF0
aWNfY2FzdDxHTHVpbnQ+KGF0dHJpYkluZGV4KSwgYXR0cmliLnNpemUsIGF0dHJpYi50eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIuc3RyaWRlLCBh
dHRyaWIucG9pbnRlcik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1GdW5jdGlv
bnMtPnZlcnRleEF0dHJpYlBvaW50ZXIoc3RhdGljX2Nhc3Q8R0x1aW50PihhdHRyaWJJbmRleCks
IGF0dHJpYi5zaXplLCBhdHRyaWIudHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdHRyaWIubm9ybWFsaXplZCwgYXR0cmliLnN0cmlkZSwgYXR0cmliLnBvaW50
ZXIpOworICAgIH0KKyAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnNpemUgICAg
ICAgID0gYXR0cmliLnNpemU7CisgICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS50
eXBlICAgICAgICA9IGF0dHJpYi50eXBlOworICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJ
bmRleF0ubm9ybWFsaXplZCAgPSBhdHRyaWIubm9ybWFsaXplZDsKKyAgICBtQXBwbGllZEF0dHJp
YnV0ZXNbYXR0cmliSW5kZXhdLnB1cmVJbnRlZ2VyID0gYXR0cmliLnB1cmVJbnRlZ2VyOworICAg
IG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0uc3RyaWRlICAgICAgPSBhdHRyaWIuc3Ry
aWRlOworICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0ucG9pbnRlciAgICAgPSBh
dHRyaWIucG9pbnRlcjsKK30KKwordm9pZCBWZXJ0ZXhBcnJheUdMOjpzeW5jU3RhdGUoY29uc3Qg
VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIGZvciAodW5zaWduZWQg
bG9uZyBkaXJ0eUJpdCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KGRpcnR5Qml0cykpCisgICAgewor
ICAgICAgICBpZiAoZGlydHlCaXQgPT0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9FTEVNRU5UX0FS
UkFZX0JVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRWxl
bWVudCBhcnJheSBidWZmZXIgYmluZGluZ3MKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChk
aXJ0eUJpdCA+PSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0VOQUJMRUQgJiYKKyAg
ICAgICAgICAgICAgICAgZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl9N
QVhfRU5BQkxFRCkKKyAgICAgICAgeworICAgICAgICAgICAgc2l6ZV90IGF0dHJpYkluZGV4ID0K
KyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGRpcnR5Qml0KSAtIFZlcnRleEFy
cmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRU5BQkxFRDsKKyAgICAgICAgICAgIHVwZGF0ZUF0dHJp
YkVuYWJsZWQoYXR0cmliSW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRpcnR5
Qml0ID49IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfUE9JTlRFUiAmJgorICAgICAg
ICAgICAgICAgICBkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCX01BWF9Q
T0lOVEVSKQorICAgICAgICB7CisgICAgICAgICAgICBzaXplX3QgYXR0cmliSW5kZXggPQorICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oZGlydHlCaXQpIC0gVmVydGV4QXJyYXk6
OkRJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSOworICAgICAgICAgICAgdXBkYXRlQXR0cmliUG9p
bnRlcihhdHRyaWJJbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGlydHlCaXQg
Pj0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SICYmCisgICAgICAgICAg
ICAgICAgIGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX0RJVklT
T1IpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpemVfdCBhdHRyaWJJbmRleCA9CisgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihkaXJ0eUJpdCkgLSBWZXJ0ZXhBcnJheTo6RElS
VFlfQklUX0FUVFJJQl8wX0RJVklTT1I7CisgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUgJmF0dHJpYiA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZShhdHRyaWJJbmRleCk7CisKKyAg
ICAgICAgICAgIGlmIChtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLmRpdmlzb3IgIT0g
YXR0cmliLmRpdmlzb3IpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVN0YXRlTWFu
YWdlci0+YmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheUlELCBnZXRBcHBsaWVkRWxlbWVudEFy
cmF5QnVmZmVySUQoKSk7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dmVydGV4QXR0cmli
RGl2aXNvcihzdGF0aWNfY2FzdDxHTHVpbnQ+KGF0dHJpYkluZGV4KSwgYXR0cmliLmRpdmlzb3Ip
OworICAgICAgICAgICAgICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0uZGl2aXNv
ciA9IGF0dHJpYi5kaXZpc29yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorfQorCit9ICAvLyByeApJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRl
eEFycmF5R0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJy
YXlHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw0NiArMjAsNjggQEAKIGNsYXNzIFZlcnRleEFy
cmF5R0wgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhB
cnJheUdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0
ZU1hbmFnZXIpOworICAgIFZlcnRleEFycmF5R0woY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEYXRh
ICZkYXRhLCBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3Rh
dGVNYW5hZ2VyKTsKICAgICB+VmVydGV4QXJyYXlHTCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBz
ZXRFbGVtZW50QXJyYXlCdWZmZXIoY29uc3QgZ2w6OkJ1ZmZlciAqYnVmZmVyKSBvdmVycmlkZTsK
LSAgICB2b2lkIHNldEF0dHJpYnV0ZShzaXplX3QgaWR4LCBjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldEF0dHJpYnV0ZURpdmlzb3Ioc2l6ZV90
IGlkeCwgR0x1aW50IGRpdmlzb3IpIG92ZXJyaWRlOwotICAgIHZvaWQgZW5hYmxlQXR0cmlidXRl
KHNpemVfdCBpZHgsIGJvb2wgZW5hYmxlZFN0YXRlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
c3luY0RyYXdBcnJheXNTdGF0ZShjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJp
YnV0ZXNNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KSBjb25z
dDsKKyAgICBnbDo6RXJyb3Igc3luY0RyYXdFbGVtZW50c1N0YXRlKGNvbnN0IGdsOjpBdHRyaWJ1
dGVzTWFzayAmYWN0aXZlQXR0cmlidXRlc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGluc3RhbmNlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykgY29uc3Q7CiAKLSAgICBn
bDo6RXJyb3Igc3luY0RyYXdBcnJheXNTdGF0ZShHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkg
Y29uc3Q7Ci0gICAgZ2w6OkVycm9yIHN5bmNEcmF3RWxlbWVudHNTdGF0ZShHTHNpemVpIGNvdW50
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBjb25zdCBHTHZvaWQgKipvdXRJ
bmRpY2VzKSBjb25zdDsKLQogICAgIEdMdWludCBnZXRWZXJ0ZXhBcnJheUlEKCkgY29uc3Q7Cisg
ICAgR0x1aW50IGdldEFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXJJRCgpIGNvbnN0OwogCisgICAg
dm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEaXJ0eUJpdHMgJmRpcnR5Qml0
cykgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKLSAgICBnbDo6RXJyb3Igc3luY0RyYXdTdGF0ZShH
TGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykgY29uc3Q7CisgICAgZ2w6OkVycm9yIHN5
bmNEcmF3U3RhdGUoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1dGVzTWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0
RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJ
bmRpY2VzKSBjb25zdDsKIAotICAgIC8vIENoZWNrIGlmIGFueSB2ZXJ0ZXggYXR0cmlidXRlcyBu
ZWVkIHRvIGJlIHN0cmVhbWVkCi0gICAgYm9vbCBkb0F0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nKCkg
Y29uc3Q7CisgICAgLy8gQXBwbHkgaW5kZXggZGF0YSwgb25seSBzZXRzIG91dEluZGV4UmFuZ2Ug
aWYgYXR0cmlidXRlc05lZWRTdHJlYW1pbmcgaXMgdHJ1ZQorICAgIGdsOjpFcnJvciBzeW5jSW5k
ZXhEYXRhKEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJs
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdHRyaWJ1dGVzTmVlZFN0cmVh
bWluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5kZXhSYW5nZSAqb3V0SW5k
ZXhSYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJ
bmRpY2VzKSBjb25zdDsKIAotICAgIC8vIEFwcGx5IGF0dHJpYnV0ZSBzdGF0ZSwgcmV0dXJucyB0
aGUgYW1vdW50IG9mIHNwYWNlIG5lZWRlZCB0byBzdHJlYW0gYWxsIGF0dHJpYnV0ZXMgdGhhdCBu
ZWVkIHN0cmVhbWluZworICAgIC8vIFJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSBuZWVkZWQg
dG8gc3RyZWFtIGFsbCBhdHRyaWJ1dGVzIHRoYXQgbmVlZCBzdHJlYW1pbmcKICAgICAvLyBhbmQg
dGhlIGRhdGEgc2l6ZSBvZiB0aGUgbGFyZ2VzdCBhdHRyaWJ1dGUKLSAgICBnbDo6RXJyb3Igc3lu
Y0F0dHJpYnV0ZVN0YXRlKGJvb2wgYXR0cmlidXRlc05lZWRTdHJlYW1pbmcsIGNvbnN0IFJhbmdl
VUkgJmluZGV4UmFuZ2UsIHNpemVfdCAqb3V0U3RyZWFtaW5nRGF0YVNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91dE1heEF0dHJpYnV0ZURhdGFTaXplKSBj
b25zdDsKKyAgICB2b2lkIGNvbXB1dGVTdHJlYW1pbmdBdHRyaWJ1dGVTaXplcyhjb25zdCBnbDo6
QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYnV0ZXNNYXNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhS
YW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKm91
dFN0cmVhbWluZ0RhdGFTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqb3V0TWF4QXR0cmlidXRlRGF0YVNpemUpIGNvbnN0OwogCi0gICAgLy8gQXBw
bHkgaW5kZXggZGF0YSwgb25seSBzZXRzIG91dEluZGV4UmFuZ2UgaWYgYXR0cmlidXRlc05lZWRT
dHJlYW1pbmcgaXMgdHJ1ZQotICAgIGdsOjpFcnJvciBzeW5jSW5kZXhEYXRhKEdMc2l6ZWkgY291
bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGJvb2wgYXR0cmlidXRlc05l
ZWRTdHJlYW1pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2VVSSAqb3V0SW5k
ZXhSYW5nZSwgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykgY29uc3Q7Ci0KICAgICAvLyBTdHJl
YW0gYXR0cmlidXRlcyB0aGF0IGhhdmUgY2xpZW50IGRhdGEKLSAgICBnbDo6RXJyb3Igc3RyZWFt
QXR0cmlidXRlcyhzaXplX3Qgc3RyZWFtaW5nRGF0YVNpemUsIHNpemVfdCBtYXhBdHRyaWJ1dGVE
YXRhU2l6ZSwgY29uc3QgUmFuZ2VVSSAmaW5kZXhSYW5nZSkgY29uc3Q7CisgICAgZ2w6OkVycm9y
IHN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1
dGVzTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNl
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFu
Z2UgJmluZGV4UmFuZ2UpIGNvbnN0OwogCisgICAgdm9pZCB1cGRhdGVOZWVkc1N0cmVhbWluZyhz
aXplX3QgYXR0cmliSW5kZXgpOworICAgIHZvaWQgdXBkYXRlQXR0cmliRW5hYmxlZChzaXplX3Qg
YXR0cmliSW5kZXgpOworICAgIHZvaWQgdXBkYXRlQXR0cmliUG9pbnRlcihzaXplX3QgYXR0cmli
SW5kZXgpOworCiAgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7CiAgICAgU3RhdGVN
YW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CiAKICAgICBHTHVpbnQgbVZlcnRleEFycmF5SUQ7CiAK
LSAgICBCaW5kaW5nUG9pbnRlcjxjb25zdCBnbDo6QnVmZmVyPiBtRWxlbWVudEFycmF5QnVmZmVy
OwotICAgIHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJ1dGU+IG1BdHRyaWJ1dGVzOwotCi0g
ICAgbXV0YWJsZSBHTHVpbnQgbUFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXI7CisgICAgbXV0YWJs
ZSBCaW5kaW5nUG9pbnRlcjxnbDo6QnVmZmVyPiBtQXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlcjsK
ICAgICBtdXRhYmxlIHN0ZDo6dmVjdG9yPGdsOjpWZXJ0ZXhBdHRyaWJ1dGU+IG1BcHBsaWVkQXR0
cmlidXRlczsKIAogICAgIG11dGFibGUgc2l6ZV90IG1TdHJlYW1pbmdFbGVtZW50QXJyYXlCdWZm
ZXJTaXplOwpAQCAtNjcsNiArODksOCBAQAogCiAgICAgbXV0YWJsZSBzaXplX3QgbVN0cmVhbWlu
Z0FycmF5QnVmZmVyU2l6ZTsKICAgICBtdXRhYmxlIEdMdWludCBtU3RyZWFtaW5nQXJyYXlCdWZm
ZXI7CisKKyAgICBnbDo6QXR0cmlidXRlc01hc2sgbUF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nOwog
fTsKIAogfQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL1dvcmthcm91bmRzR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNHTC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1dv
cmthcm91bmRzR0wuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gV29ya2Fyb3VuZHNHTC5oOiBXb3JrYXJvdW5kcyBmb3IgR0wgZHJpdmVyIGJ1Z3Mg
YW5kIG90aGVyIGlzc3Vlcy4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9XT1JLQVJP
VU5EU0dMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dPUktBUk9VTkRTR0xfSF8K
KworbmFtZXNwYWNlIHJ4Cit7CisKK3N0cnVjdCBXb3JrYXJvdW5kc0dMCit7CisgICAgV29ya2Fy
b3VuZHNHTCgpCisgICAgICAgIDogYXZvaWQxQml0QWxwaGFUZXh0dXJlRm9ybWF0cyhmYWxzZSks
CisgICAgICAgICAgcmdiYTRJc05vdFN1cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nKGZhbHNlKSwK
KyAgICAgICAgICBkb2VzU1JHQkNsZWFyc09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50cyhm
YWxzZSksCisgICAgICAgICAgZG9XaGlsZUdMU0xDYXVzZXNHUFVIYW5nKGZhbHNlKSwKKyAgICAg
ICAgICBmaW5pc2hEb2VzTm90Q2F1c2VRdWVyaWVzVG9CZUF2YWlsYWJsZShmYWxzZSksCisgICAg
ICAgICAgYWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbmsoZmFsc2UpCisgICAgeworICAgIH0K
KworICAgIC8vIFdoZW4gd3JpdGluZyBhIGZsb2F0IHRvIGEgbm9ybWFsaXplZCBpbnRlZ2VyIGZy
YW1lYnVmZmVyLCBkZXNrdG9wIE9wZW5HTCBpcyBhbGxvd2VkIHRvIHdyaXRlCisgICAgLy8gb25l
IG9mIHRoZSB0d28gY2xvc2VzdCBub3JtYWxpemVkIGludGVnZXIgcmVwcmVzZW50YXRpb25zIChh
bHRob3VnaCByb3VuZCB0byBuZWFyZXN0IGlzCisgICAgLy8gcHJlZmVycmVkKSAoc2VlIHNlY3Rp
b24gMi4zLjUuMiBvZiB0aGUgR0wgNC41IGNvcmUgc3BlY2lmaWNhdGlvbikuIE9wZW5HTCBFUyBy
ZXF1aXJlcyB0aGF0CisgICAgLy8gcm91bmQtdG8tbmVhcmVzdCBpcyB1c2VkIChzZWUgIkNvbnZl
cnNpb24gZnJvbSBGbG9hdGluZy1Qb2ludCB0byBGcmFtZWJ1ZmZlciBGaXhlZC1Qb2ludCIgaW4K
KyAgICAvLyBzZWN0aW9uIDIuMS4yIG9mIHRoZSBPcGVuR0wgRVMgMi4wLjI1IHNwZWMpLiAgVGhp
cyBpc3N1ZSBvbmx5IHNob3dzIHVwIG9uIEludGVsIGFuZCBBTUQKKyAgICAvLyBkcml2ZXJzIG9u
IGZyYW1lYnVmZmVyIGZvcm1hdHMgdGhhdCBoYXZlIDEtYml0IGFscGhhLCB3b3JrIGFyb3VuZCB0
aGlzIGJ5IHVzaW5nIGhpZ2hlcgorICAgIC8vIHByZWNpc2lvbiBmb3JtYXRzIGluc3RlYWQuCisg
ICAgYm9vbCBhdm9pZDFCaXRBbHBoYVRleHR1cmVGb3JtYXRzOworCisgICAgLy8gT24gc29tZSBv
bGRlciBJbnRlbCBkcml2ZXJzLCBHTF9SR0JBNCBpcyBub3QgY29sb3IgcmVuZGVyYWJsZSwgZ2xD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzCisgICAgLy8gcmV0dXJucyBHTF9GUkFNRUJVRkZFUl9VTlNV
UFBPUlRFRC4gV29yayBhcm91bmQgdGhpcyBieSB1c2luZyBhIGtub3duIGNvbG9yLXJlbmRlcmFi
bGUKKyAgICAvLyBmb3JtYXQuCisgICAgYm9vbCByZ2JhNElzTm90U3VwcG9ydGVkRm9yQ29sb3JS
ZW5kZXJpbmc7CisKKyAgICAvLyBXaGVuIGNsZWFyaW5nIGEgZnJhbWVidWZmZXIgb24gSW50ZWwg
b3IgQU1EIGRyaXZlcnMsIHdoZW4gR0xfRlJBTUVCVUZGRVJfU1JHQiBpcyBlbmFibGVkLCB0aGUK
KyAgICAvLyBkcml2ZXIgY2xlYXJzIHRvIHRoZSBsaW5lYXJpemVkIGNsZWFyIGNvbG9yIGRlc3Bp
dGUgdGhlIGZyYW1lYnVmZmVyIG5vdCBzdXBwb3J0aW5nIFNSR0IKKyAgICAvLyBibGVuZGluZy4g
IEl0IG9ubHkgc2VlbXMgdG8gZG8gdGhpcyB3aGVuIHRoZSBmcmFtZWJ1ZmZlciBoYXMgb25seSBs
aW5lYXIgYXR0YWNobWVudHMsIG1peGVkCisgICAgLy8gYXR0YWNobWVudHMgYXBwZWFyIHRvIGdl
dCB0aGUgY29ycmVjdCBjbGVhciBjb2xvci4KKyAgICBib29sIGRvZXNTUkdCQ2xlYXJzT25MaW5l
YXJGcmFtZWJ1ZmZlckF0dGFjaG1lbnRzOworCisgICAgLy8gT24gTWFjIHNvbWUgR0xTTCBjb25z
dHJ1Y3RzIGludm9sdmluZyBkby13aGlsZSBsb29wcyBjYXVzZSBHUFUgaGFuZ3MsIHN1Y2ggYXMg
dGhlIGZvbGxvd2luZzoKKyAgICAvLyAgaW50IGkgPSAxOworICAgIC8vICBkbyB7CisgICAgLy8g
ICAgICBpIC0tOworICAgIC8vICAgICAgY29udGludWU7CisgICAgLy8gIH0gd2hpbGUgKGkgPiAw
KQorICAgIC8vIFdvcmsgYXJvdW5kIHRoaXMgYnkgcmV3cml0aW5nIHRoZSBkby13aGlsZSB0byB1
c2UgYW5vdGhlciBHTFNMIGNvbnN0cnVjdCAoYmxvY2sgKyB3aGlsZSkKKyAgICBib29sIGRvV2hp
bGVHTFNMQ2F1c2VzR1BVSGFuZzsKKworICAgIC8vIENhbGxpbmcgZ2xGaW5pc2ggZG9lc24ndCBj
YXVzZSBhbGwgcXVlcmllcyB0byByZXBvcnQgdGhhdCB0aGUgcmVzdWx0IGlzIGF2YWlsYWJsZSBv
biBzb21lCisgICAgLy8gKE5WSURJQSkgZHJpdmVycy4gIEl0IHdhcyBmb3VuZCB0aGF0IGVuYWJs
aW5nIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyBiZWZvcmUgdGhlIGZpbmlzaAorICAgIC8v
IGNhdXNlcyBpdCB0byBmdWxseSBmaW5pc2guCisgICAgYm9vbCBmaW5pc2hEb2VzTm90Q2F1c2VR
dWVyaWVzVG9CZUF2YWlsYWJsZTsKKworICAgIC8vIEFsd2F5cyBjYWxsIHVzZVByb2dyYW0gYWZ0
ZXIgYSBzdWNjZXNzZnVsIGxpbmsgdG8gYXZvaWQgYSBkcml2ZXIgYnVnLgorICAgIC8vIFRoaXMg
d29ya2Fyb3VuZCBpcyBtZWFudCB0byByZXByb2R1Y2UgdGhlIHVzZV9jdXJyZW50X3Byb2dyYW1f
YWZ0ZXJfc3VjY2Vzc2Z1bF9saW5rCisgICAgLy8gd29ya2Fyb3VuZCBpbiBDaHJvbWl1bSAoaHR0
cDovL2NyYnVnLmNvbS8xMTAyNjMpLiBJdCBoYXMgYmVlbiBzaG93biB0aGF0IHRoaXMgd29ya2Fy
b3VuZCBpcworICAgIC8vIG5vdCBuZWNlc3NhcnkgZm9yIE1hY09TWCAxMC45IGFuZCBoaWdoZXIg
KGh0dHA6Ly9jcnJldi5jb20vMzllYjUzNWIpLgorICAgIGJvb2wgYWx3YXlzQ2FsbFVzZVByb2dy
YW1BZnRlckxpbms7Cit9OworfQorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dP
UktBUk9VTkRTR0xfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIERpc3BsYXlDR0wuaDogQ0dMIGltcGxlbWVudGF0aW9uIG9mIGVn
bDo6RGlzcGxheQorCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NHTF9ESVNQTEFZQ0dM
X0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NHTF9ESVNQTEFZQ0dMX0hfCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuaCIKKworc3RydWN0IF9DR0xD
b250ZXh0T2JqZWN0OwordHlwZWRlZiBfQ0dMQ29udGV4dE9iamVjdCAqQ0dMQ29udGV4dE9iajsK
KworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIERpc3BsYXlDR0wgOiBwdWJsaWMgRGlzcGxheUdM
Cit7CisgIHB1YmxpYzoKKyAgICBEaXNwbGF5Q0dMKCk7CisgICAgfkRpc3BsYXlDR0woKSBvdmVy
cmlkZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkp
IG92ZXJyaWRlOworICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CisKKyAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9t
Q2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hh
cmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBl
IG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkNvbmZp
Z1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNEZXZp
Y2VMb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB0ZXN0RGV2aWNlTG9zdCgpIG92ZXJy
aWRlOworICAgIGVnbDo6RXJyb3IgcmVzdG9yZUxvc3REZXZpY2UoKSBvdmVycmlkZTsKKworICAg
IGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIGdldERldmljZShEZXZpY2VJbXBsICoqZGV2
aWNlKSBvdmVycmlkZTsKKworICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZWdsOjpFcnJvciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgZWdsOjpFcnJvciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25z
dCBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpnZXRGdW5j
dGlvbnNHTCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMo
ZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdCBvdmVycmlkZTsK
KworICAgIGVnbDo6RGlzcGxheSAqbUVHTERpc3BsYXk7CisgICAgRnVuY3Rpb25zR0wgKm1GdW5j
dGlvbnM7CisgICAgQ0dMQ29udGV4dE9iaiBtQ29udGV4dDsKK307CisKK30KKworI2VuZGlmIC8v
IExJQkFOR0xFX1JFTkRFUkVSX0dMX0NHTF9ESVNQTEFZQ0dMX0hfCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjc4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRGlzcGxheUNH
TC5tbTogQ0dMIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6RGlzcGxheQorCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaCIKKworI2ltcG9ydCA8Q29jb2EvQ29j
b2EuaD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKworI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9QYnVmZmVyU3VyZmFjZUNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9XaW5kb3dTdXJmYWNlQ0dMLmgiCisKK25hbWVzcGFjZQoreworCitjb25zdCBjaGFyICprRGVm
YXVsdE9wZW5HTER5bGliTmFtZSA9CisgICAgIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09w
ZW5HTC5mcmFtZXdvcmsvTGlicmFyaWVzL2xpYkdMLmR5bGliIjsKK2NvbnN0IGNoYXIgKmtGYWxs
YmFja09wZW5HTER5bGliTmFtZSA9ICJHTCI7CisKK30KKworbmFtZXNwYWNlIHJ4Cit7CisKK2Ns
YXNzIEZ1bmN0aW9uc0dMQ0dMIDogcHVibGljIEZ1bmN0aW9uc0dMCit7CisgIHB1YmxpYzoKKyAg
ICBGdW5jdGlvbnNHTENHTCh2b2lkICpkeWxpYkhhbmRsZSkgOiBtRHlsaWJIYW5kbGUoZHlsaWJI
YW5kbGUpIHt9CisKKyAgICB+RnVuY3Rpb25zR0xDR0woKSBvdmVycmlkZSB7IGRsY2xvc2UobUR5
bGliSGFuZGxlKTsgfQorCisgIHByaXZhdGU6CisgICAgdm9pZCAqbG9hZFByb2NBZGRyZXNzKGNv
bnN0IHN0ZDo6c3RyaW5nICZmdW5jdGlvbikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVy
biBkbHN5bShtRHlsaWJIYW5kbGUsIGZ1bmN0aW9uLmNfc3RyKCkpOworICAgIH0KKworICAgIHZv
aWQgKm1EeWxpYkhhbmRsZTsKK307CisKK0Rpc3BsYXlDR0w6OkRpc3BsYXlDR0woKSA6IERpc3Bs
YXlHTCgpLCBtRUdMRGlzcGxheShudWxscHRyKSwgbUZ1bmN0aW9ucyhudWxscHRyKSwgbUNvbnRl
eHQobnVsbHB0cikKK3sKK30KKworRGlzcGxheUNHTDo6fkRpc3BsYXlDR0woKQoreworfQorCitl
Z2w6OkVycm9yIERpc3BsYXlDR0w6OmluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQor
eworICAgIG1FR0xEaXNwbGF5ID0gZGlzcGxheTsKKworICAgIENHTFBpeGVsRm9ybWF0T2JqIHBp
eGVsRm9ybWF0OworICAgIHsKKyAgICAgICAgLy8gVE9ETyhjd2FsbGV6KSBpbnZlc3RpZ2F0ZSB3
aGljaCBwaXhlbCBmb3JtYXQgd2Ugd2FudAorICAgICAgICBDR0xQaXhlbEZvcm1hdEF0dHJpYnV0
ZSBhdHRyaWJzW10gPSB7CisgICAgICAgICAgICBrQ0dMUEZBT3BlbkdMUHJvZmlsZSwgc3RhdGlj
X2Nhc3Q8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+KGtDR0xPR0xQVmVyc2lvbl8zXzJfQ29yZSks
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCl9Owor
ICAgICAgICBHTGludCBuVmlydHVhbFNjcmVlbnMgPSAwOworICAgICAgICBDR0xDaG9vc2VQaXhl
bEZvcm1hdChhdHRyaWJzLCAmcGl4ZWxGb3JtYXQsICZuVmlydHVhbFNjcmVlbnMpOworCisgICAg
ICAgIGlmIChwaXhlbEZvcm1hdCA9PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IGNyZWF0ZSB0
aGUgY29udGV4dCdzIHBpeGVsIGZvcm1hdC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIENH
TENyZWF0ZUNvbnRleHQocGl4ZWxGb3JtYXQsIG51bGxwdHIsICZtQ29udGV4dCk7CisgICAgaWYg
KG1Db250ZXh0ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IGNyZWF0ZSB0aGUgQ0dMIGNvbnRleHQuIik7
CisgICAgfQorICAgIENHTFNldEN1cnJlbnRDb250ZXh0KG1Db250ZXh0KTsKKworICAgIC8vIFRo
ZXJlIGlzIG5vIGVxdWl2YWxlbnQgZ2V0UHJvY0FkZHJlc3MgaW4gQ0dMIHNvIHdlIG9wZW4gdGhl
IGR5bGliIGRpcmVjdGx5CisgICAgdm9pZCAqaGFuZGxlID0gZGxvcGVuKGtEZWZhdWx0T3BlbkdM
RHlsaWJOYW1lLCBSVExEX05PVyk7CisgICAgaWYgKCFoYW5kbGUpCisgICAgeworICAgICAgICBo
YW5kbGUgPSBkbG9wZW4oa0ZhbGxiYWNrT3BlbkdMRHlsaWJOYW1lLCBSVExEX05PVyk7CisgICAg
fQorICAgIGlmICghaGFuZGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X05PVF9JTklUSUFMSVpFRCwgIkNvdWxkIG5vdCBvcGVuIHRoZSBPcGVuR0wgRnJhbWV3b3JrLiIp
OworICAgIH0KKworICAgIG1GdW5jdGlvbnMgPSBuZXcgRnVuY3Rpb25zR0xDR0woaGFuZGxlKTsK
KyAgICBtRnVuY3Rpb25zLT5pbml0aWFsaXplKCk7CisKKyAgICByZXR1cm4gRGlzcGxheUdMOjpp
bml0aWFsaXplKGRpc3BsYXkpOworfQorCit2b2lkIERpc3BsYXlDR0w6OnRlcm1pbmF0ZSgpCit7
CisgICAgRGlzcGxheUdMOjp0ZXJtaW5hdGUoKTsKKworICAgIGlmIChtQ29udGV4dCAhPSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgQ0dMU2V0Q3VycmVudENvbnRleHQobnVsbHB0cik7CisgICAg
ICAgIENHTFJlbGVhc2VDb250ZXh0KG1Db250ZXh0KTsKKyAgICAgICAgbUNvbnRleHQgPSBudWxs
cHRyOworICAgIH0KKworICAgIFNhZmVEZWxldGUobUZ1bmN0aW9ucyk7Cit9CisKK1N1cmZhY2VJ
bXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sK
KyAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VDR0wodGhpcy0+Z2V0UmVuZGVyZXIoKSwgd2lu
ZG93LCBtRnVuY3Rpb25zLCBtQ29udGV4dCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5Q0dM
OjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBFR0xpbnQgd2lkdGggID0gc3RhdGljX2Nh
c3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfV0lEVEgsIDApKTsKKyAgICBFR0xpbnQgaGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfSEVJR0hULCAwKSk7CisgICAg
cmV0dXJuIG5ldyBQYnVmZmVyU3VyZmFjZUNHTCh0aGlzLT5nZXRSZW5kZXJlcigpLCB3aWR0aCwg
aGVpZ2h0LCBtRnVuY3Rpb25zKTsKK30KKworU3VyZmFjZUltcGwqIERpc3BsYXlDR0w6OmNyZWF0
ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K1N1cmZhY2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK2VnbDo6RXJyb3IgRGlzcGxheUNHTDo6Z2V0RGV2aWNlKERldmljZUltcGwgKipkZXZpY2Up
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURf
RElTUExBWSk7Cit9CisKK2VnbDo6Q29uZmlnU2V0IERpc3BsYXlDR0w6OmdlbmVyYXRlQ29uZmln
cygpIGNvbnN0Cit7CisgICAgLy8gVE9ETyhjd2FsbGV6KTogZ2VuZXJhdGUgbW9yZSBjb25maWcg
cGVybXV0YXRpb25zCisgICAgZWdsOjpDb25maWdTZXQgY29uZmlnczsKKworICAgIGNvbnN0IGds
OjpWZXJzaW9uICZtYXhWZXJzaW9uID0gZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCk7CisgICAg
QVNTRVJUKG1heFZlcnNpb24gPj0gZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIGJvb2wgc3VwcG9y
dHNFUzMgPSBtYXhWZXJzaW9uID49IGdsOjpWZXJzaW9uKDMsIDApOworCisgICAgZWdsOjpDb25m
aWcgY29uZmlnOworCisgICAgLy8gTmF0aXZlIHN0dWZmCisgICAgY29uZmlnLm5hdGl2ZVZpc3Vh
bElEICAgPSAwOworICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlID0gMDsKKyAgICBjb25maWcu
bmF0aXZlUmVuZGVyYWJsZSA9IEVHTF9UUlVFOworCisgICAgLy8gQnVmZmVyIHNpemVzCisgICAg
Y29uZmlnLnJlZFNpemUgICAgID0gODsKKyAgICBjb25maWcuZ3JlZW5TaXplICAgPSA4OworICAg
IGNvbmZpZy5ibHVlU2l6ZSAgICA9IDg7CisgICAgY29uZmlnLmFscGhhU2l6ZSAgID0gODsKKyAg
ICBjb25maWcuZGVwdGhTaXplICAgPSAyNDsKKyAgICBjb25maWcuc3RlbmNpbFNpemUgPSA4Owor
CisgICAgY29uZmlnLmNvbG9yQnVmZmVyVHlwZSA9IEVHTF9SR0JfQlVGRkVSOworICAgIGNvbmZp
Zy5sdW1pbmFuY2VTaXplICAgPSAwOworICAgIGNvbmZpZy5hbHBoYU1hc2tTaXplICAgPSAwOwor
CisgICAgY29uZmlnLmJ1ZmZlclNpemUgPSBjb25maWcucmVkU2l6ZSArIGNvbmZpZy5ncmVlblNp
emUgKyBjb25maWcuYmx1ZVNpemUgKyBjb25maWcuYWxwaGFTaXplOworCisgICAgY29uZmlnLnRy
YW5zcGFyZW50VHlwZSA9IEVHTF9OT05FOworCisgICAgLy8gUGJ1ZmZlcgorICAgIGNvbmZpZy5t
YXhQQnVmZmVyV2lkdGggID0gNDA5NjsKKyAgICBjb25maWcubWF4UEJ1ZmZlckhlaWdodCA9IDQw
OTY7CisgICAgY29uZmlnLm1heFBCdWZmZXJQaXhlbHMgPSA0MDk2ICogNDA5NjsKKworICAgIC8v
IENhdmVhdAorICAgIGNvbmZpZy5jb25maWdDYXZlYXQgPSBFR0xfTk9ORTsKKworICAgIC8vIE1p
c2MKKyAgICBjb25maWcuc2FtcGxlQnVmZmVycyAgICAgPSAwOworICAgIGNvbmZpZy5zYW1wbGVz
ICAgICAgICAgICA9IDA7CisgICAgY29uZmlnLmxldmVsICAgICAgICAgICAgID0gMDsKKyAgICBj
b25maWcuYmluZFRvVGV4dHVyZVJHQiAgPSBFR0xfRkFMU0U7CisgICAgY29uZmlnLmJpbmRUb1Rl
eHR1cmVSR0JBID0gRUdMX0ZBTFNFOworCisgICAgY29uZmlnLnN1cmZhY2VUeXBlID0gRUdMX1dJ
TkRPV19CSVQgfCBFR0xfUEJVRkZFUl9CSVQ7CisKKyAgICBjb25maWcubWluU3dhcEludGVydmFs
ID0gMTsKKyAgICBjb25maWcubWF4U3dhcEludGVydmFsID0gMTsKKworICAgIGNvbmZpZy5yZW5k
ZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0JBODsKKyAgICBjb25maWcuZGVwdGhTdGVuY2lsRm9ybWF0
ID0gR0xfREVQVEgyNF9TVEVOQ0lMODsKKworICAgIGNvbmZpZy5jb25mb3JtYW50ICAgICA9IEVH
TF9PUEVOR0xfRVMyX0JJVCB8IChzdXBwb3J0c0VTMyA/IEVHTF9PUEVOR0xfRVMzX0JJVF9LSFIg
OiAwKTsKKyAgICBjb25maWcucmVuZGVyYWJsZVR5cGUgPSBjb25maWcuY29uZm9ybWFudDsKKwor
ICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9IEVHTF9OT05FOworCisgICAgY29uZmlncy5h
ZGQoY29uZmlnKTsKKyAgICByZXR1cm4gY29uZmlnczsKK30KKworYm9vbCBEaXNwbGF5Q0dMOjpp
c0RldmljZUxvc3QoKSBjb25zdAoreworICAgIC8vIFRPRE8oY3dhbGxleikgaW52ZXN0aWdhdGUg
aW1wbGVtZW50aW5nIHRoaXMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRGlzcGxheUNH
TDo6dGVzdERldmljZUxvc3QoKQoreworICAgIC8vIFRPRE8oY3dhbGxleikgaW52ZXN0aWdhdGUg
aW1wbGVtZW50aW5nIHRoaXMKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2VnbDo6RXJyb3IgRGlz
cGxheUNHTDo6cmVzdG9yZUxvc3REZXZpY2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVkpOworfQorCitib29sIERpc3BsYXlD
R0w6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0
Cit7CisgICAgLy8gVE9ETyhjd2FsbGV6KSBpbnZlc3RpZ2F0ZSBpbXBsZW1lbnRpbmcgdGhpcwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGQ6OnN0cmluZyBEaXNwbGF5Q0dMOjpnZXRWZW5kb3JT
dHJpbmcoKSBjb25zdAoreworICAgIC8vIFRPRE8oY3dhbGxleikgZmluZCBhIHVzZWZ1bCB2ZW5k
b3Igc3RyaW5nCisgICAgcmV0dXJuICIiOworfQorCitjb25zdCBGdW5jdGlvbnNHTCAqRGlzcGxh
eUNHTDo6Z2V0RnVuY3Rpb25zR0woKSBjb25zdAoreworICAgIHJldHVybiBtRnVuY3Rpb25zOwor
fQorCit2b2lkIERpc3BsYXlDR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRl
bnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0
ZUNvbnRleHQgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHROb0Vycm9y
ID0gdHJ1ZTsKK30KKwordm9pZCBEaXNwbGF5Q0dMOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpv
dXRDYXBzKSBjb25zdAoreworICAgIG91dENhcHMtPnRleHR1cmVOUE9UID0gdHJ1ZTsKK30KKwor
ZWdsOjpFcnJvciBEaXNwbGF5Q0dMOjp3YWl0Q2xpZW50KCkgY29uc3QKK3sKKyAgICAvLyBUT0RP
KGN3YWxsZXopIFVOSU1QTEVNRU5URUQoKQorICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5Q0dMOjp3YWl0TmF0aXZlKEVHTGludCBlbmdp
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3
U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2Ug
KnJlYWRTdXJmYWNlKSBjb25zdAoreworICAgIC8vIFRPRE8oY3dhbGxleikgVU5JTVBMRU1FTlRF
RCgpCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9y
IERpc3BsYXlDR0w6OmdldERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pIGNvbnN0
Cit7CisgICAgKnZlcnNpb24gPSAiIjsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFj
ZUNHTC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQQnVmZmVyU3VyZmFjZUNHTC5oOiBh
biBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIFBCdWZmZXJzIGZvciB0aGUgQ0xH
IGJhY2tlbmQsCisvLyAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgaW1wbGVtZW50ZWQg
dXNpbmcgcmVuZGVyYnVmZmVycworCisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NHTF9Q
QlVGRkVSU1VSRkFDRUNHTF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9DR0xfUEJV
RkZFUlNVUkZBQ0VDR0xfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZh
Y2VHTC5oIgorCituYW1lc3BhY2UgcngKK3sKKworY2xhc3MgRnVuY3Rpb25zR0w7CitjbGFzcyBT
dGF0ZU1hbmFnZXJHTDsKK3N0cnVjdCBXb3JrYXJvdW5kc0dMOworCitjbGFzcyBQYnVmZmVyU3Vy
ZmFjZUNHTCA6IHB1YmxpYyBTdXJmYWNlR0wKK3sKKyAgcHVibGljOgorICAgIFBidWZmZXJTdXJm
YWNlQ0dMKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgIEVHTGlu
dCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpOworICAgIH5QYnVmZmVy
U3VyZmFjZUNHTCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3Zl
cnJpZGU7CisgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOworCisgICAgZWds
OjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVH
TGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRl
LCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGds
OjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVy
cm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIG92ZXJyaWRlOworCisgICAgRUdMaW50IGdl
dFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldEhlaWdodCgpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3IoKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICB1bnNp
Z25lZCBtV2lkdGg7CisgICAgdW5zaWduZWQgbUhlaWdodDsKKworICAgIGNvbnN0IEZ1bmN0aW9u
c0dMICptRnVuY3Rpb25zOworICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOworICAg
IGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKKworICAgIEdMdWludCBtRnJhbWVi
dWZmZXI7CisgICAgR0x1aW50IG1Db2xvclJlbmRlcmJ1ZmZlcjsKKyAgICBHTHVpbnQgbURTUmVu
ZGVyYnVmZmVyOworfTsKKworfQorCisjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfQ0dM
X1BCVUZGRVJTVVJGQUNFQ0dMX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wv
UGJ1ZmZlclN1cmZhY2VDR0wubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gUEJ1ZmZl
clN1cmZhY2VDR0wuY3BwOiBhbiBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIFBC
dWZmZXJzIGZvciB0aGUgQ0xHIGJhY2tlbmQsCisvLyAgICAgICAgICAgICAgICAgICAgICBjdXJy
ZW50bHkgaW1wbGVtZW50ZWQgdXNpbmcgcmVuZGVyYnVmZmVycworCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgiCisKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1Bi
dWZmZXJTdXJmYWNlQ0dMOjpQYnVmZmVyU3VyZmFjZUNHTChSZW5kZXJlckdMICpyZW5kZXJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
KQorICAgIDogU3VyZmFjZUdMKHJlbmRlcmVyKSwKKyAgICAgIG1XaWR0aCh3aWR0aCksCisgICAg
ICBtSGVpZ2h0KGhlaWdodCksCisgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCisgICAgICBt
U3RhdGVNYW5hZ2VyKHJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKSksCisgICAgICBtV29ya2Fy
b3VuZHMocmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkpLAorICAgICAgbUZyYW1lYnVmZmVyKDAp
LAorICAgICAgbUNvbG9yUmVuZGVyYnVmZmVyKDApLAorICAgICAgbURTUmVuZGVyYnVmZmVyKDAp
Cit7Cit9CisKK1BidWZmZXJTdXJmYWNlQ0dMOjp+UGJ1ZmZlclN1cmZhY2VDR0woKQoreworICAg
IGlmIChtRnJhbWVidWZmZXIgIT0gMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmRlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgbUZyYW1lYnVmZmVyID0g
MDsKKyAgICB9CisKKyAgICBpZiAobUNvbG9yUmVuZGVyYnVmZmVyICE9IDApCisgICAgeworICAg
ICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZm
ZXIpOworICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIgPSAwOworICAgIH0KKyAgICBpZiAobURT
UmVuZGVyYnVmZmVyICE9IDApCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtRFNSZW5kZXJidWZmZXIpOworICAgICAgICBtRFNSZW5kZXJidWZmZXIg
PSAwOworICAgIH0KK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6aW5pdGlhbGl6
ZSgpCit7CisgICAgbUZ1bmN0aW9ucy0+Z2VuUmVuZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVy
YnVmZmVyKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVyKTsKKyAgICBtRnVuY3Rpb25zLT5yZW5kZXJidWZmZXJT
dG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIG1XaWR0aCwgbUhlaWdodCk7CisKKyAg
ICBtRnVuY3Rpb25zLT5nZW5SZW5kZXJidWZmZXJzKDEsICZtRFNSZW5kZXJidWZmZXIpOworICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtRFNSZW5k
ZXJidWZmZXIpOworICAgIG1GdW5jdGlvbnMtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVS
QlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4LCBtV2lkdGgsIG1IZWlnaHQpOworCisgICAgbUZ1
bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAg
ICBtRnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtQ29sb3JSZW5kZXJidWZmZXIpOworICAgIG1GdW5jdGlvbnMt
PmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lM
X0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkVOREVSQlVGRkVSLCBtRFNSZW5kZXJidWZmZXIpOworCisgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjptYWtlQ3Vy
cmVudCgpCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6
OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpzd2FwKCkKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6OnBvc3RT
dWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQp
Cit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9y
IFBidWZmZXJTdXJmYWNlQ0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJp
YnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VD
R0w6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKK3sK
KyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1Mp
OworfQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjpyZWxlYXNlVGV4SW1hZ2UoRUdM
aW50IGJ1ZmZlcikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOworfQorCit2b2lkIFBidWZmZXJTdXJmYWNlQ0dMOjpzZXRTd2FwSW50
ZXJ2YWwoRUdMaW50IGludGVydmFsKQoreworfQorCitFR0xpbnQgUGJ1ZmZlclN1cmZhY2VDR0w6
OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVdpZHRoOworfQorCitFR0xpbnQgUGJ1
ZmZlclN1cmZhY2VDR0w6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1IZWlnaHQ7
Cit9CisKK0VHTGludCBQYnVmZmVyU3VyZmFjZUNHTDo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVk
KCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTF9GQUxTRTsK
K30KKworRUdMaW50IFBidWZmZXJTdXJmYWNlQ0dMOjpnZXRTd2FwQmVoYXZpb3IoKSBjb25zdAor
eworICAgIHJldHVybiBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKK30KKworRnJhbWVidWZmZXJJbXBs
ICpQYnVmZmVyU3VyZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlcjo6RGF0YSAmZGF0YSkKK3sKKyAgICAvLyBUT0RPKGN3YWxsZXopIGFzc2VydCBp
dCBoYXBwZW5zIG9ubHkgb25jZT8KKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyR0wobUZyYW1l
YnVmZmVyLCBkYXRhLCBtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIpOwor
fQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXaW5kb3dTdXJmYWNlQ0dMLmg6IENHTCBpbXBs
ZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIHdpbmRvd3MKKworI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9HTF9DR0xfV0lORE9XU1VSRkFDRUNHTF9IXworI2RlZmluZSBMSUJBTkdMRV9S
RU5ERVJFUl9HTF9DR0xfV0lORE9XU1VSRkFDRUNHTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgiCisKK3N0cnVjdCBfQ0dMQ29udGV4dE9iamVjdDsKK3R5
cGVkZWYgX0NHTENvbnRleHRPYmplY3QgKkNHTENvbnRleHRPYmo7CitAY2xhc3MgQ0FMYXllcjsK
K3N0cnVjdCBfX0lPU3VyZmFjZTsKK3R5cGVkZWYgX19JT1N1cmZhY2UgKklPU3VyZmFjZVJlZjsK
KworQGNsYXNzIFN3YXBMYXllcjsKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIERpc3BsYXlD
R0w7CitjbGFzcyBGcmFtZWJ1ZmZlckdMOworY2xhc3MgRnVuY3Rpb25zR0w7CitjbGFzcyBTdGF0
ZU1hbmFnZXJHTDsKK3N0cnVjdCBXb3JrYXJvdW5kc0dMOworCitzdHJ1Y3QgU2hhcmVkU3dhcFN0
YXRlCit7CisgICAgc3RydWN0IFN3YXBUZXh0dXJlCisgICAgeworICAgICAgICBHTHVpbnQgdGV4
dHVyZTsKKyAgICAgICAgdW5zaWduZWQgaW50IHdpZHRoOworICAgICAgICB1bnNpZ25lZCBpbnQg
aGVpZ2h0OworICAgICAgICB1aW50NjRfdCBzd2FwSWQ7CisgICAgfTsKKworICAgIFN3YXBUZXh0
dXJlIHRleHR1cmVzWzNdOworCisgICAgLy8gVGhpcyBjb2RlIHBhdGggaXMgbm90IGdvaW5nIHRv
IGJlIHVzZWQgYnkgQ2hyb21lIHNvIHdlIHRha2UgdGhlIGxpYmVydHkKKyAgICAvLyB0byB1c2Ug
cHRocmVhZHMgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyBtdXRleGVzIGFuZCBjb25kaXRpb24g
dmFyaWFibGVzCisgICAgLy8gdmlhIHRoZSBQbGF0Zm9ybSBBUEkuCisgICAgcHRocmVhZF9tdXRl
eF90IG11dGV4OworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVycyBzaG91bGQgYmUgYWNjZXNz
ZWQgb25seSB3aGVuIGhvbGRpbmcgdGhlIG11dGV4CisgICAgLy8gKG9yIGRvaW5nIGNvbnN0cnVj
dGlvbiAvIGRlc3RydWN0aW9uKQorICAgIFN3YXBUZXh0dXJlICpiZWluZ1JlbmRlcmVkOworICAg
IFN3YXBUZXh0dXJlICpsYXN0UmVuZGVyZWQ7CisgICAgU3dhcFRleHR1cmUgKmJlaW5nUHJlc2Vu
dGVkOworfTsKKworY2xhc3MgV2luZG93U3VyZmFjZUNHTCA6IHB1YmxpYyBTdXJmYWNlR0wKK3sK
KyAgcHVibGljOgorICAgIFdpbmRvd1N1cmZhY2VDR0woUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisg
ICAgICAgICAgICAgICAgICAgICBDQUxheWVyICpsYXllciwKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICBDR0xD
b250ZXh0T2JqIGNvbnRleHQpOworICAgIH5XaW5kb3dTdXJmYWNlQ0dMKCkgb3ZlcnJpZGU7CisK
KyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIG1h
a2VDdXJyZW50KCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIHN3YXAoKSBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQg
d2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcXVlcnlTdXJm
YWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkgb3ZlcnJpZGU7
CisgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGlu
dCBidWZmZXIpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcmVsZWFzZVRleEltYWdlKEVHTGlu
dCBidWZmZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U3dhcEludGVydmFsKEVHTGludCBpbnRl
cnZhbCkgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgaXNQ
b3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3
YXBCZWhhdmlvcigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRnJhbWVidWZmZXJJbXBsICpjcmVh
dGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEYXRhICZkYXRhKSBv
dmVycmlkZTsKKworICBwcml2YXRlOgorICAgIFN3YXBMYXllciAqbVN3YXBMYXllcjsKKyAgICBT
aGFyZWRTd2FwU3RhdGUgbVN3YXBTdGF0ZTsKKyAgICB1aW50NjRfdCBtQ3VycmVudFN3YXBJZDsK
KworICAgIENBTGF5ZXIgKm1MYXllcjsKKyAgICBDR0xDb250ZXh0T2JqIG1Db250ZXh0OworICAg
IGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOworICAgIFN0YXRlTWFuYWdlckdMICptU3Rh
dGVNYW5hZ2VyOworICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKKworICAg
IEdMdWludCBtRnJhbWVidWZmZXI7CisgICAgR0x1aW50IG1EU1JlbmRlcmJ1ZmZlcjsKK307CisK
K30KKworI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NHTF9XSU5ET1dTVVJGQUNFQ0dM
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzI5IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gV2luZG93U3VyZmFjZUNHTC5jcHA6IENHTCBp
bXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIHdpbmRvd3MKKworI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLmgiCisKKyNpbXBvcnQgPENv
Y29hL0NvY29hLmg+CisjaW5jbHVkZSA8T3BlbkdML09wZW5HTC5oPgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9RdWFydHpDb3JlLmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9SZW5kZXJlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3Rh
dGVNYW5hZ2VyR0wuaCIKKworQGludGVyZmFjZSBTd2FwTGF5ZXIgOiBDQU9wZW5HTExheWVyCit7
CisgICAgQ0dMQ29udGV4dE9iaiBtRGlzcGxheUNvbnRleHQ7CisKKyAgICBib29sIGluaXRpYWxp
emVkOworICAgIHJ4OjpTaGFyZWRTd2FwU3RhdGUgKm1Td2FwU3RhdGU7CisgICAgY29uc3Qgcng6
OkZ1bmN0aW9uc0dMICptRnVuY3Rpb25zOworCisgICAgR0x1aW50IG1SZWFkRnJhbWVidWZmZXI7
Cit9CistIChpZClpbml0V2l0aFNoYXJlZFN0YXRlOihyeDo6U2hhcmVkU3dhcFN0YXRlICopc3dh
cFN0YXRlCisgICAgICAgICAgICAgIHdpdGhDb250ZXh0OihDR0xDb250ZXh0T2JqKWRpc3BsYXlD
b250ZXh0CisgICAgICAgICAgICB3aXRoRnVuY3Rpb25zOihjb25zdCByeDo6RnVuY3Rpb25zR0wg
KilmdW5jdGlvbnM7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTd2FwTGF5ZXIKKy0gKGlkKWlu
aXRXaXRoU2hhcmVkU3RhdGU6KHJ4OjpTaGFyZWRTd2FwU3RhdGUgKilzd2FwU3RhdGUKKyAgICAg
ICAgICAgICAgd2l0aENvbnRleHQ6KENHTENvbnRleHRPYmopZGlzcGxheUNvbnRleHQKKyAgICAg
ICAgICAgIHdpdGhGdW5jdGlvbnM6KGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAqKWZ1bmN0aW9ucwor
ICAgIHsKKyAgICAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICAgICAgaWYgKHNlbGYgIT0g
bmlsKQorICAgICAgICB7CisgICAgICAgICAgICBzZWxmLmFzeW5jaHJvbm91cyA9IFlFUzsKKyAg
ICAgICAgICAgIG1EaXNwbGF5Q29udGV4dCAgID0gZGlzcGxheUNvbnRleHQ7CisKKyAgICAgICAg
ICAgIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAgICAgICAgICBtU3dhcFN0YXRlICA9IHN3YXBT
dGF0ZTsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMgID0gZnVuY3Rpb25zOworCisgICAgICAgICAg
ICBbc2VsZiBzZXRGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIG1Td2FwU3RhdGUtPnRleHR1cmVzWzBd
LndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3dhcFN0YXRl
LT50ZXh0dXJlc1swXS5oZWlnaHQpXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VsZjsK
KyAgICB9CisKKyAgICAtIChDR0xQaXhlbEZvcm1hdE9iailjb3B5Q0dMUGl4ZWxGb3JtYXRGb3JE
aXNwbGF5TWFzazoodWludDMyX3QpbWFzaworICAgIHsKKyAgICAgICAgQ0dMUGl4ZWxGb3JtYXRB
dHRyaWJ1dGUgYXR0cmlic1tdID0geworICAgICAgICAgICAga0NHTFBGQURpc3BsYXlNYXNrLCBz
dGF0aWNfY2FzdDxDR0xQaXhlbEZvcm1hdEF0dHJpYnV0ZT4obWFzayksIGtDR0xQRkFPcGVuR0xQ
cm9maWxlLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q0dMUGl4ZWxGb3JtYXRBdHRyaWJ1dGU+
KGtDR0xPR0xQVmVyc2lvbl8zXzJfQ29yZSksCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxDR0xQ
aXhlbEZvcm1hdEF0dHJpYnV0ZT4oMCl9OworCisgICAgICAgIENHTFBpeGVsRm9ybWF0T2JqIHBp
eGVsRm9ybWF0ID0gbnVsbHB0cjsKKyAgICAgICAgR0xpbnQgbnVtRm9ybWF0cyA9IDA7CisgICAg
ICAgIENHTENob29zZVBpeGVsRm9ybWF0KGF0dHJpYnMsICZwaXhlbEZvcm1hdCwgJm51bUZvcm1h
dHMpOworCisgICAgICAgIHJldHVybiBwaXhlbEZvcm1hdDsKKyAgICB9CisKKyAgICAtIChDR0xD
b250ZXh0T2JqKWNvcHlDR0xDb250ZXh0Rm9yUGl4ZWxGb3JtYXQ6KENHTFBpeGVsRm9ybWF0T2Jq
KXBpeGVsRm9ybWF0CisgICAgeworICAgICAgICBDR0xDb250ZXh0T2JqIGNvbnRleHQgPSBudWxs
cHRyOworICAgICAgICBDR0xDcmVhdGVDb250ZXh0KHBpeGVsRm9ybWF0LCBtRGlzcGxheUNvbnRl
eHQsICZjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQ7CisgICAgfQorCisgICAgLSAo
Qk9PTCljYW5EcmF3SW5DR0xDb250ZXh0OihDR0xDb250ZXh0T2JqKWdsQ29udGV4dAorICAgICAg
ICAgICAgICAgICAgICBwaXhlbEZvcm1hdDooQ0dMUGl4ZWxGb3JtYXRPYmopcGl4ZWxGb3JtYXQK
KyAgICAgICAgICAgICAgICAgICBmb3JMYXllclRpbWU6KENGVGltZUludGVydmFsKXRpbWVJbnRl
cnZhbAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5VGltZTooY29uc3QgQ1ZUaW1lU3RhbXAg
Kil0aW1lU3RhbXAKKyAgICB7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gTk87CisKKyAgICAgICAg
cHRocmVhZF9tdXRleF9sb2NrKCZtU3dhcFN0YXRlLT5tdXRleCk7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChtU3dhcFN0YXRlLT5sYXN0UmVuZGVyZWQtPnN3YXBJZCA+IG1Td2FwU3RhdGUt
PmJlaW5nUHJlc2VudGVkLT5zd2FwSWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
c3RkOjpzd2FwKG1Td2FwU3RhdGUtPmxhc3RSZW5kZXJlZCwgbVN3YXBTdGF0ZS0+YmVpbmdQcmVz
ZW50ZWQpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFlFUzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbVN3YXBTdGF0ZS0+bXV0ZXgp
OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLSAodm9pZClkcmF3SW5D
R0xDb250ZXh0OihDR0xDb250ZXh0T2JqKWdsQ29udGV4dAorICAgICAgICAgICAgICAgICBwaXhl
bEZvcm1hdDooQ0dMUGl4ZWxGb3JtYXRPYmopcGl4ZWxGb3JtYXQKKyAgICAgICAgICAgICAgICBm
b3JMYXllclRpbWU6KENGVGltZUludGVydmFsKXRpbWVJbnRlcnZhbAorICAgICAgICAgICAgICAg
ICBkaXNwbGF5VGltZTooY29uc3QgQ1ZUaW1lU3RhbXAgKil0aW1lU3RhbXAKKyAgICB7CisgICAg
ICAgIENHTFNldEN1cnJlbnRDb250ZXh0KGdsQ29udGV4dCk7CisgICAgICAgIGlmICghaW5pdGlh
bGl6ZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZtUmVhZEZyYW1lYnVmZmVy
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGF1dG8gJnRleHR1cmUgPSAqbVN3YXBTdGF0
ZS0+YmVpbmdQcmVzZW50ZWQ7CisgICAgICAgIGlmIChbc2VsZiBmcmFtZV0uc2l6ZS53aWR0aCAh
PSB0ZXh0dXJlLndpZHRoIHx8IFtzZWxmIGZyYW1lXS5zaXplLmhlaWdodCAhPSB0ZXh0dXJlLmhl
aWdodCkKKyAgICAgICAgeworICAgICAgICAgICAgW3NlbGYgc2V0RnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCB0ZXh0dXJlLndpZHRoLCB0ZXh0dXJlLmhlaWdodCldOworCisgICAgICAgICAgICAvLyBX
aXRob3V0IHRoaXMsIHRoZSBPU1ggY29tcG9zaXRvciAvIHdpbmRvdyBzeXN0ZW0gZG9lc24ndCBz
ZWUgdGhlIHJlc2l6ZS4KKyAgICAgICAgICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07CisgICAg
ICAgIH0KKworICAgICAgICAvLyBUT0RPKGN3YWxsZXopIHN1cHBvcnQgMi4xIGNvbnRleHRzIHRv
byB0aGF0IGRvbid0IGhhdmUgYmxpdEZyYW1lYnVmZmVyIG5vciB0aGUKKyAgICAgICAgLy8gR0xf
RFJBV19GUkFNRUJVRkZFUl9CSU5ESU5HIHF1ZXJ5CisgICAgICAgIEdMaW50IGRyYXdGQk87Cisg
ICAgICAgIG1GdW5jdGlvbnMtPmdldEludGVnZXJ2KEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElO
RywgJmRyYXdGQk8pOworCisgICAgICAgIG1GdW5jdGlvbnMtPmJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgbVJlYWRGcmFtZWJ1ZmZlcik7CisgICAgICAgIG1GdW5jdGlvbnMtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dHVyZS50ZXh0dXJlLCAwKTsKKworICAgICAgICBtRnVuY3Rpb25zLT5iaW5kRnJhbWVidWZmZXIo
R0xfUkVBRF9GUkFNRUJVRkZFUiwgbVJlYWRGcmFtZWJ1ZmZlcik7CisgICAgICAgIG1GdW5jdGlv
bnMtPmJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBkcmF3RkJPKTsKKyAgICAg
ICAgbUZ1bmN0aW9ucy0+YmxpdEZyYW1lYnVmZmVyKDAsIDAsIHRleHR1cmUud2lkdGgsIHRleHR1
cmUuaGVpZ2h0LCAwLCAwLCB0ZXh0dXJlLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dHVyZS5oZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJF
U1QpOworCisgICAgICAgIC8vIENhbGwgdGhlIHN1cGVyIG1ldGhvZCB0byBmbHVzaCB0aGUgY29u
dGV4dAorICAgICAgICBbc3VwZXIgZHJhd0luQ0dMQ29udGV4dDpnbENvbnRleHQKKyAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxGb3JtYXQ6cGl4ZWxGb3JtYXQKKyAgICAgICAgICAgICAgICAgICBm
b3JMYXllclRpbWU6dGltZUludGVydmFsCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlUaW1l
OnRpbWVTdGFtcF07CisgICAgfQorICAgIEBlbmQKKworICAgIG5hbWVzcGFjZSByeAorICAgIHsK
KworICAgIFdpbmRvd1N1cmZhY2VDR0w6OldpbmRvd1N1cmZhY2VDR0woUmVuZGVyZXJHTCAqcmVu
ZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQUxheWVyICps
YXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDR0xDb250ZXh0T2JqIGNvbnRleHQpCisgICAgICAgIDogU3VyZmFjZUdMKHJlbmRlcmVyKSwK
KyAgICAgICAgICBtU3dhcExheWVyKG5pbCksCisgICAgICAgICAgbUN1cnJlbnRTd2FwSWQoMCks
CisgICAgICAgICAgbUxheWVyKGxheWVyKSwKKyAgICAgICAgICBtQ29udGV4dChjb250ZXh0KSwK
KyAgICAgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCisgICAgICAgICAgbVN0YXRlTWFuYWdl
cihyZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkpLAorICAgICAgICAgIG1Xb3JrYXJvdW5kcyhy
ZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKSksCisgICAgICAgICAgbUZyYW1lYnVmZmVyKDApLAor
ICAgICAgICAgIG1EU1JlbmRlcmJ1ZmZlcigwKQoreworICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgm
bVN3YXBTdGF0ZS5tdXRleCwgbnVsbHB0cik7Cit9CisKK1dpbmRvd1N1cmZhY2VDR0w6On5XaW5k
b3dTdXJmYWNlQ0dMKCkKK3sKKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm1Td2FwU3RhdGUu
bXV0ZXgpOworICAgIGlmIChtRnJhbWVidWZmZXIgIT0gMCkKKyAgICB7CisgICAgICAgIG1GdW5j
dGlvbnMtPmRlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKKyAgICAgICAgbUZy
YW1lYnVmZmVyID0gMDsKKyAgICB9CisKKyAgICBpZiAobURTUmVuZGVyYnVmZmVyICE9IDApCisg
ICAgeworICAgICAgICBtRnVuY3Rpb25zLT5kZWxldGVSZW5kZXJidWZmZXJzKDEsICZtRFNSZW5k
ZXJidWZmZXIpOworICAgICAgICBtRFNSZW5kZXJidWZmZXIgPSAwOworICAgIH0KKworICAgIGlm
IChtU3dhcExheWVyICE9IG5pbCkKKyAgICB7CisgICAgICAgIFttU3dhcExheWVyIHJlbW92ZUZy
b21TdXBlcmxheWVyXTsKKyAgICAgICAgW21Td2FwTGF5ZXIgcmVsZWFzZV07CisgICAgICAgIG1T
d2FwTGF5ZXIgPSBuaWw7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBcnJh
eVNpemUobVN3YXBTdGF0ZS50ZXh0dXJlcyk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChtU3dh
cFN0YXRlLnRleHR1cmVzW2ldLnRleHR1cmUgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+ZGVsZXRlVGV4dHVyZXMoMSwgJm1Td2FwU3RhdGUudGV4dHVyZXNbaV0udGV4
dHVyZSk7CisgICAgICAgICAgICBtU3dhcFN0YXRlLnRleHR1cmVzW2ldLnRleHR1cmUgPSAwOwor
ICAgICAgICB9CisgICAgfQorfQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VDR0w6OmluaXRp
YWxpemUoKQoreworICAgIHVuc2lnbmVkIHdpZHRoICA9IGdldFdpZHRoKCk7CisgICAgdW5zaWdu
ZWQgaGVpZ2h0ID0gZ2V0SGVpZ2h0KCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFy
cmF5U2l6ZShtU3dhcFN0YXRlLnRleHR1cmVzKTsgKytpKQorICAgIHsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+Z2VuVGV4dHVyZXMoMSwgJm1Td2FwU3RhdGUudGV4dHVyZXNbaV0udGV4dHVyZSk7Cisg
ICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1Td2FwU3Rh
dGUudGV4dHVyZXNbaV0udGV4dHVyZSk7CisgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgd2lkdGgsIGhlaWdodCwgMCwgR0xfUkdCQSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
KyAgICAgICAgbVN3YXBTdGF0ZS50ZXh0dXJlc1tpXS53aWR0aCAgPSB3aWR0aDsKKyAgICAgICAg
bVN3YXBTdGF0ZS50ZXh0dXJlc1tpXS5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1Td2FwU3Rh
dGUudGV4dHVyZXNbaV0uc3dhcElkID0gMDsKKyAgICB9CisgICAgbVN3YXBTdGF0ZS5iZWluZ1Jl
bmRlcmVkICA9ICZtU3dhcFN0YXRlLnRleHR1cmVzWzBdOworICAgIG1Td2FwU3RhdGUubGFzdFJl
bmRlcmVkICAgPSAmbVN3YXBTdGF0ZS50ZXh0dXJlc1sxXTsKKyAgICBtU3dhcFN0YXRlLmJlaW5n
UHJlc2VudGVkID0gJm1Td2FwU3RhdGUudGV4dHVyZXNbMl07CisKKyAgICBtU3dhcExheWVyID0g
W1tTd2FwTGF5ZXIgYWxsb2NdIGluaXRXaXRoU2hhcmVkU3RhdGU6Jm1Td2FwU3RhdGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENvbnRleHQ6bUNvbnRl
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhGdW5jdGlv
bnM6bUZ1bmN0aW9uc107CisgICAgW21MYXllciBhZGRTdWJsYXllcjptU3dhcExheWVyXTsKKwor
ICAgIG1GdW5jdGlvbnMtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EU1JlbmRlcmJ1ZmZlcik7Cisg
ICAgbVN0YXRlTWFuYWdlci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1EU1Jl
bmRlcmJ1ZmZlcik7CisgICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5E
RVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIHdpZHRoLCBoZWlnaHQpOworCisgICAgbUZ1
bmN0aW9ucy0+Z2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOworICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKKyAg
ICBtRnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbVN3YXBTdGF0ZS5iZWluZ1JlbmRlcmVkLT50ZXh0dXJlLCAwKTsKKyAgICBt
RnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbURTUmVuZGVyYnVmZmVyKTsKKworICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlQ0dM
OjptYWtlQ3VycmVudCgpCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwor
fQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VDR0w6OnN3YXAoKQoreworICAgIG1GdW5jdGlv
bnMtPmZsdXNoKCk7CisgICAgbVN3YXBTdGF0ZS5iZWluZ1JlbmRlcmVkLT5zd2FwSWQgPSArK21D
dXJyZW50U3dhcElkOworCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtU3dhcFN0YXRlLm11dGV4
KTsKKyAgICB7CisgICAgICAgIHN0ZDo6c3dhcChtU3dhcFN0YXRlLmJlaW5nUmVuZGVyZWQsIG1T
d2FwU3RhdGUubGFzdFJlbmRlcmVkKTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2so
Jm1Td2FwU3RhdGUubXV0ZXgpOworCisgICAgdW5zaWduZWQgd2lkdGggID0gZ2V0V2lkdGgoKTsK
KyAgICB1bnNpZ25lZCBoZWlnaHQgPSBnZXRIZWlnaHQoKTsKKyAgICBhdXRvICZ0ZXh0dXJlICAg
PSAqbVN3YXBTdGF0ZS5iZWluZ1JlbmRlcmVkOworCisgICAgaWYgKHRleHR1cmUud2lkdGggIT0g
d2lkdGggfHwgdGV4dHVyZS5oZWlnaHQgIT0gaGVpZ2h0KQorICAgIHsKKyAgICAgICAgbVN0YXRl
TWFuYWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS50ZXh0dXJlKTsKKyAg
ICAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCB3
aWR0aCwgaGVpZ2h0LCAwLCBHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJp
bmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtRFNSZW5kZXJidWZmZXIpOworICAgICAg
ICBtRnVuY3Rpb25zLT5yZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQ
VEgyNF9TVEVOQ0lMOCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICAgICAgdGV4dHVyZS53aWR0aCAg
PSB3aWR0aDsKKyAgICAgICAgdGV4dHVyZS5oZWlnaHQgPSBoZWlnaHQ7CisgICAgfQorCisgICAg
bVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZm
ZXIpOworICAgIG1GdW5jdGlvbnMtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtU3dhcFN0YXRlLmJlaW5nUmVuZGVyZWQtPnRleHR1cmUsIDAp
OworCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9y
IFdpbmRvd1N1cmZhY2VDR0w6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xp
bnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBXaW5kb3dTdXJm
YWNlQ0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAq
KnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZUNHTDo6YmluZFRleElt
YWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKQoreworICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6
RXJyb3IgV2luZG93U3VyZmFjZUNHTDo6cmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpCit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNT
KTsKK30KKwordm9pZCBXaW5kb3dTdXJmYWNlQ0dMOjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGlu
dGVydmFsKQoreworICAgIC8vIFRPRE8oY3dhbGxleikgaW52ZXN0aWdhdGUgaW1wbGVtZW50aW5n
IHN3YXAgaW50ZXJ2YWxzIG90aGVyIHRoYW4gMAorfQorCitFR0xpbnQgV2luZG93U3VyZmFjZUNH
TDo6Z2V0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBDR1JlY3RHZXRXaWR0aChbbUxheWVy
IGZyYW1lXSk7Cit9CisKK0VHTGludCBXaW5kb3dTdXJmYWNlQ0dMOjpnZXRIZWlnaHQoKSBjb25z
dAoreworICAgIHJldHVybiBDR1JlY3RHZXRIZWlnaHQoW21MYXllciBmcmFtZV0pOworfQorCitF
R0xpbnQgV2luZG93U3VyZmFjZUNHTDo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QK
K3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIEVHTF9GQUxTRTsKK30KKworRUdM
aW50IFdpbmRvd1N1cmZhY2VDR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEVHTF9CVUZGRVJfREVTVFJPWUVEOworfQorCitGcmFtZWJ1ZmZlckltcGwgKldpbmRvd1N1
cmZhY2VDR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXI6
OkRhdGEgJmRhdGEpCit7CisgICAgLy8gVE9ETyhjd2FsbGV6KSBhc3NlcnQgaXQgaGFwcGVucyBv
bmx5IG9uY2U/CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKG1GcmFtZWJ1ZmZlciwgZGF0
YSwgbUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBtU3RhdGVNYW5hZ2VyKTsKK30KKworfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1h
dHV0aWxzZ2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNwcAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1h
dHV0aWxzZ2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05LDU3ICs5LDExNiBAQAogCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oIgogCi0jaW5jbHVkZSA8bWFw
PgorI2luY2x1ZGUgPGxpbWl0cz4KIAorI2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorCiBuYW1lc3BhY2UgcngKIHsKIAog
bmFtZXNwYWNlIG5hdGl2ZWdsCiB7CiAKLS8vIEluZm9ybWF0aW9uIGFib3V0IGludGVybmFsIGZv
cm1hdHMKLXN0YXRpYyBib29sIEFsd2F5c1N1cHBvcnRlZChHTHVpbnQsIEdMdWludCwgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICYpCitTdXBwb3J0UmVxdWlyZW1lbnQ6OlN1cHBvcnRS
ZXF1aXJlbWVudCgpCisgICAgOiB2ZXJzaW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6
bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkpLAorICAgICAgdmVyc2lv
bkV4dGVuc2lvbnMoKSwKKyAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucygpCiB7Ci0gICAgcmV0dXJu
IHRydWU7CiB9CiAKLXN0YXRpYyBib29sIFVuaW1wbGVtZW50ZWRTdXBwb3J0KEdMdWludCwgR0x1
aW50LCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJikKK0ludGVybmFsRm9ybWF0OjpJ
bnRlcm5hbEZvcm1hdCgpCisgICAgOiB0ZXh0dXJlKCksCisgICAgICBmaWx0ZXIoKSwKKyAgICAg
IHJlbmRlcmJ1ZmZlcigpLAorICAgICAgZnJhbWVidWZmZXJBdHRhY2htZW50KCkKIHsKLSAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIE5ldmVyU3VwcG9ydGVkKEdMdWludCwgR0x1
aW50LCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJikKKy8vIHN1cHBvcnRlZCA9IHZl
cnNpb24gfHwgdmVydGV4RXh0CitzdGF0aWMgaW5saW5lIFN1cHBvcnRSZXF1aXJlbWVudCBWZXJz
aW9uT3JFeHRzKEdMdWludCBtYWpvciwgR0x1aW50IG1pbm9yLCBjb25zdCBzdGQ6OnN0cmluZyAm
dmVyc2lvbkV4dCkKIHsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgU3VwcG9ydFJlcXVpcmVtZW50
IHJlcXVpcmVtZW50OworICAgIHJlcXVpcmVtZW50LnZlcnNpb24ubWFqb3IgPSBtYWpvcjsKKyAg
ICByZXF1aXJlbWVudC52ZXJzaW9uLm1pbm9yID0gbWlub3I7CisgICAgYW5nbGU6OlNwbGl0U3Ry
aW5nQWxvbmdXaGl0ZXNwYWNlKHZlcnNpb25FeHQsICZyZXF1aXJlbWVudC52ZXJzaW9uRXh0ZW5z
aW9ucyk7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50OwogfQogCi10ZW1wbGF0ZSA8R0x1aW50IG1p
bk1ham9yVmVyc2lvbiwgR0x1aW50IG1pbk1pbm9yVmVyc2lvbj4KLXN0YXRpYyBib29sIFJlcXVp
cmVHTChHTHVpbnQgbWFqb3IsIEdMdWludCBtaW5vciwgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpz
dHJpbmc+ICYpCisvLyBzdXBwb3J0ZWQgPSAodmVyc2lvbiB8fCB2ZXJ0ZXhFeHQpICYmIHJlcXVp
cmVkRXh0CitzdGF0aWMgaW5saW5lIFN1cHBvcnRSZXF1aXJlbWVudCBWZXJzaW9uT3JFeHRzQW5k
RXh0cyhHTHVpbnQgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVyc2lvbkV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZyZXF1aXJlZEV4dCkKIHsKLSAgICByZXR1cm4gbWFqb3IgPiBt
aW5NYWpvclZlcnNpb24gfHwgKG1ham9yID09IG1pbk1ham9yVmVyc2lvbiAmJiBtaW5vciA+PSBt
aW5NaW5vclZlcnNpb24pOworICAgIFN1cHBvcnRSZXF1aXJlbWVudCByZXF1aXJlbWVudDsKKyAg
ICByZXF1aXJlbWVudC52ZXJzaW9uLm1ham9yID0gbWFqb3I7CisgICAgcmVxdWlyZW1lbnQudmVy
c2lvbi5taW5vciA9IG1pbm9yOworICAgIGFuZ2xlOjpTcGxpdFN0cmluZ0Fsb25nV2hpdGVzcGFj
ZSh2ZXJzaW9uRXh0LCAmcmVxdWlyZW1lbnQudmVyc2lvbkV4dGVuc2lvbnMpOworICAgIGFuZ2xl
OjpTcGxpdFN0cmluZ0Fsb25nV2hpdGVzcGFjZShyZXF1aXJlZEV4dCwgJnJlcXVpcmVtZW50LnJl
cXVpcmVkRXh0ZW5zaW9ucyk7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50OwogfQogCisvLyBzdXBw
b3J0ZWQgPSB2ZXJzaW9uCitzdGF0aWMgaW5saW5lIFN1cHBvcnRSZXF1aXJlbWVudCBWZXJzaW9u
T25seShHTHVpbnQgbWFqb3IsIEdMdWludCBtaW5vcikKK3sKKyAgICBTdXBwb3J0UmVxdWlyZW1l
bnQgcmVxdWlyZW1lbnQ7CisgICAgcmVxdWlyZW1lbnQudmVyc2lvbi5tYWpvciA9IG1ham9yOwor
ICAgIHJlcXVpcmVtZW50LnZlcnNpb24ubWlub3IgPSBtaW5vcjsKKyAgICByZXR1cm4gcmVxdWly
ZW1lbnQ7Cit9CiAKLUludGVybmFsRm9ybWF0OjpJbnRlcm5hbEZvcm1hdCgpCi0gICAgOiB0ZXh0
dXJlU3VwcG9ydChOZXZlclN1cHBvcnRlZCksCi0gICAgICByZW5kZXJTdXBwb3J0KE5ldmVyU3Vw
cG9ydGVkKSwKLSAgICAgIGZpbHRlclN1cHBvcnQoTmV2ZXJTdXBwb3J0ZWQpCisvLyBzdXBwb3J0
ZWQgPSBleHQKK3N0YXRpYyBpbmxpbmUgU3VwcG9ydFJlcXVpcmVtZW50IEV4dHNPbmx5KGNvbnN0
IHN0ZDo6c3RyaW5nICZleHQpCiB7CisgICAgU3VwcG9ydFJlcXVpcmVtZW50IHJlcXVpcmVtZW50
OworICAgIHJlcXVpcmVtZW50LnZlcnNpb24ubWFqb3IgPSAwOworICAgIHJlcXVpcmVtZW50LnZl
cnNpb24ubWlub3IgPSAwOworICAgIGFuZ2xlOjpTcGxpdFN0cmluZ0Fsb25nV2hpdGVzcGFjZShl
eHQsICZyZXF1aXJlbWVudC5yZXF1aXJlZEV4dGVuc2lvbnMpOworICAgIHJldHVybiByZXF1aXJl
bWVudDsKIH0KIAotdHlwZWRlZiBzdGQ6OnBhaXI8R0xlbnVtLCBJbnRlcm5hbEZvcm1hdD4gSW50
ZXJuYWxGb3JtYXRJbmZvUGFpcjsKLXR5cGVkZWYgc3RkOjptYXA8R0xlbnVtLCBJbnRlcm5hbEZv
cm1hdD4gSW50ZXJuYWxGb3JtYXRJbmZvTWFwOworLy8gc3VwcG9ydGVkID0gdHJ1ZQorc3RhdGlj
IGlubGluZSBTdXBwb3J0UmVxdWlyZW1lbnQgQWx3YXlzKCkKK3sKKyAgICBTdXBwb3J0UmVxdWly
ZW1lbnQgcmVxdWlyZW1lbnQ7CisgICAgcmVxdWlyZW1lbnQudmVyc2lvbi5tYWpvciA9IDA7Cisg
ICAgcmVxdWlyZW1lbnQudmVyc2lvbi5taW5vciA9IDA7CisgICAgcmV0dXJuIHJlcXVpcmVtZW50
OworfQogCisvLyBzdXBwb3J0ZWQgPSBmYWxzZQorc3RhdGljIGlubGluZSBTdXBwb3J0UmVxdWly
ZW1lbnQgTmV2ZXIoKQoreworICAgIFN1cHBvcnRSZXF1aXJlbWVudCByZXF1aXJlbWVudDsKKyAg
ICByZXF1aXJlbWVudC52ZXJzaW9uLm1ham9yID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+
OjptYXgoKTsKKyAgICByZXF1aXJlbWVudC52ZXJzaW9uLm1pbm9yID0gc3RkOjpudW1lcmljX2xp
bWl0czxHTHVpbnQ+OjptYXgoKTsKKyAgICByZXR1cm4gcmVxdWlyZW1lbnQ7Cit9CisKK3N0cnVj
dCBJbnRlcm5hbEZvcm1hdEluZm8KK3sKKyAgICBJbnRlcm5hbEZvcm1hdCBnbGVzSW5mbzsKKyAg
ICBJbnRlcm5hbEZvcm1hdCBnbEluZm87Cit9OworCit0eXBlZGVmIHN0ZDo6cGFpcjxHTGVudW0s
IEludGVybmFsRm9ybWF0SW5mbz4gSW50ZXJuYWxGb3JtYXRJbmZvUGFpcjsKK3R5cGVkZWYgc3Rk
OjptYXA8R0xlbnVtLCBJbnRlcm5hbEZvcm1hdEluZm8+IEludGVybmFsRm9ybWF0SW5mb01hcDsK
KwogLy8gQSBoZWxwZXIgZnVuY3Rpb24gdG8gaW5zZXJ0IGRhdGEgaW50byB0aGUgZm9ybWF0IG1h
cCB3aXRoIGZld2VyIGNoYXJhY3RlcnMuCiBzdGF0aWMgaW5saW5lIHZvaWQgSW5zZXJ0Rm9ybWF0
TWFwcGluZyhJbnRlcm5hbEZvcm1hdEluZm9NYXAgKm1hcCwgR0xlbnVtIGludGVybmFsRm9ybWF0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6
OlN1cHBvcnRDaGVja0Z1bmN0aW9uIHRleHR1cmVTdXBwb3J0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXQ6OlN1cHBvcnRDaGVja0Z1bmN0aW9u
IHJlbmRlclN1cHBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bnRlcm5hbEZvcm1hdDo6U3VwcG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3VwcG9ydCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cHBvcnRSZXF1aXJlbWVu
dCAmZGVza3RvcFRleHR1cmUsIGNvbnN0IFN1cHBvcnRSZXF1aXJlbWVudCAmZGVza3RvcEZpbHRl
ciwgY29uc3QgU3VwcG9ydFJlcXVpcmVtZW50ICZkZXNrdG9wUmVuZGVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3VwcG9ydFJlcXVpcmVtZW50ICZlc1Rl
eHR1cmUsIGNvbnN0IFN1cHBvcnRSZXF1aXJlbWVudCAmZXNGaWx0ZXIsIGNvbnN0IFN1cHBvcnRS
ZXF1aXJlbWVudCAmZXNSZW5kZXIpCiB7Ci0gICAgSW50ZXJuYWxGb3JtYXQgZm9ybWF0SW5mbzsK
LSAgICBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0ID0gdGV4dHVyZVN1cHBvcnQ7Ci0gICAgZm9y
bWF0SW5mby5yZW5kZXJTdXBwb3J0ID0gcmVuZGVyU3VwcG9ydDsKLSAgICBmb3JtYXRJbmZvLmZp
bHRlclN1cHBvcnQgPSBmaWx0ZXJTdXBwb3J0OworICAgIEludGVybmFsRm9ybWF0SW5mbyBmb3Jt
YXRJbmZvOworICAgIGZvcm1hdEluZm8uZ2xJbmZvLnRleHR1cmUgPSBkZXNrdG9wVGV4dHVyZTsK
KyAgICBmb3JtYXRJbmZvLmdsSW5mby5maWx0ZXIgPSBkZXNrdG9wRmlsdGVyOworICAgIGZvcm1h
dEluZm8uZ2xJbmZvLnJlbmRlcmJ1ZmZlciA9IGRlc2t0b3BSZW5kZXI7CisgICAgZm9ybWF0SW5m
by5nbEluZm8uZnJhbWVidWZmZXJBdHRhY2htZW50ID0gZGVza3RvcFJlbmRlcjsKKyAgICBmb3Jt
YXRJbmZvLmdsZXNJbmZvLnRleHR1cmUgPSBlc1RleHR1cmU7CisgICAgZm9ybWF0SW5mby5nbGVz
SW5mby5maWx0ZXIgPSBlc1RleHR1cmU7CisgICAgZm9ybWF0SW5mby5nbGVzSW5mby5yZW5kZXJi
dWZmZXIgPSBlc0ZpbHRlcjsKKyAgICBmb3JtYXRJbmZvLmdsZXNJbmZvLmZyYW1lYnVmZmVyQXR0
YWNobWVudCA9IGVzUmVuZGVyOwogICAgIG1hcC0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGludGVy
bmFsRm9ybWF0LCBmb3JtYXRJbmZvKSk7CiB9CiAKQEAgLTY3LDEzMCArMTI2LDEzMiBAQAogewog
ICAgIEludGVybmFsRm9ybWF0SW5mb01hcCBtYXA7CiAKLSAgICAvLyBGcm9tIEVTIDMuMC4xIHNw
ZWMsIHRhYmxlIDMuMTIKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX05PTkUsICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgLy8gICAgICAgICAg
ICAgICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyICB8IE9wZW5HTCByZW5kZXIgc3Vw
cG9ydCAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAg
ICAgICAgICAgICAgICAgfCBGaWx0ZXIgIHwgT3BlbkdMIEVTIHJlbmRlciBzdXBwb3J0ICAgICAg
ICAgICAgICAgICB8CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SOCwgICAgICAg
ICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAg
ICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIpLCAgIEFsd2F5cygpLCBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9yZyIpICApOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUjhfU05PUk0sICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDEp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHOCwg
ICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAg
ICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIp
LCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiksICAgQWx3YXlz
KCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIikgICk7CisgICAgSW5z
ZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzhfU05PUk0sICAgICAgICAgVmVyc2lvbk9ubHko
MywgMSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkdCOCwgICAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWx3YXlzKCksIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3JnYjhfcmdiYTgiKSwgICBB
bHdheXMoKSwgQWx3YXlzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAg
ICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHOF9TTk9STSwgICAgICAgICBWZXJzaW9u
T25seSgzLCAxKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZl
cigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMs
IDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SR0I1NjUsICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsd2F5cygpLCBBbHdheXMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTQsICAgICAgICAgICAgIEFs
d2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCks
IEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX1JHQjVfQTEsICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzKCksIEFsd2F5cygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBOCwgICAgICAgICAg
ICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXMoKSwgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfcmdiOF9yZ2JhOCIpLCAgIEFsd2F5cygpLCBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9PRVNfcmdiOF9yZ2JhOCIpICApOworICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkdCQThfU05PUk0sICAgICAgIFZlcnNpb25Pbmx5KDMsIDEpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIE5ldmVyKCksICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjEwX0EyLCAg
ICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsd2F5cygpLCBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIFZl
cnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9SR0IxMF9BMlVJLCAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAz
LCAiR0xfQVJCX3RleHR1cmVfcmdiMTBfYTJ1aSIpLCBOZXZlcigpLCAgQWx3YXlzKCksICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBBbHdheXMoKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1JHQjgs
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwg
ICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0Ii
KSwgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMo
KSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1NSR0I4X0FMUEhBOCwgICAgICBWZXJzaW9uT3JFeHRz
KDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdCIiksICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JF
eHRzKDIsIDEsICJHTF9FWFRfdGV4dHVyZV9zUkdCIiksICAgIFZlcnNpb25Pbmx5KDMsIDApLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdM
X0VYVF9zUkdCIikgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9S
OEksICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmci
KSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVf
cmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjhVSSwgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywg
MCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkg
ICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1IxNkksICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVy
ZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4
dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMTZVSSwgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25s
eSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgz
LCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUjMySSwgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90
ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1IzMlVJLCAgICAgICAgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVy
KCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25P
bmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SRzhJLCAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAg
ICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4VUksICAgICAg
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAg
TmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAg
VmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVy
c2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHMTZJLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SRzE2VUks
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwgICAg
ICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmciKSwg
ICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCks
ICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkczMkksICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4
dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
MzJVSSwgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIp
LCAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9y
ZyIpLCAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0I4SSwgICAgICAgICAgICAgVmVyc2lvbk9y
RXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAgTmV2ZXIo
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkdCOFVJLCAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJl
X2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlcigpLCAgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
KyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjE2SSwgICAgICAgICAgICBWZXJz
aW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBO
ZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5
KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIE5ldmVyKCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9SR0IxNlVJLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3Rl
eHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyKCksICBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMzJJLCAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIo
KSwgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lv
bk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX1JHQjMyVUksICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9F
WFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBOZXZlcigpLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXIoKSwgIE5ldmVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBOEksICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBO
ZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBW
ZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJz
aW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkdCQThVSSwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwg
IkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAg
ICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkExNkks
ICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiks
ICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2Vy
IiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwg
IFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0JBMTZVSSwgICAgICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfaW50ZWdlciIpLCBWZXJzaW9uT25seSgzLCAwKSwgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAg
ICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
QTMySSwgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVn
ZXIiKSwgICAgTmV2ZXIoKSwgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2lu
dGVnZXIiKSwgVmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
cigpLCAgVmVyc2lvbk9ubHkoMywgMCkgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQkEzMlVJLCAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9u
T3JFeHRzKDMsIDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDAp
LCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAg
ICAgICAgICAgICAgICAgICAgICAgICk7CiAKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
fCBJbnRlcm5hbCBmb3JtYXQgICAgIHwgVGV4dHVyZSBzdXBwb3J0ICAgICB8IFJlbmRlciBzdXBw
b3J0ICAgICB8IEZpbHRlciBzdXBwb3J0ICAgICAgfAotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUjgsICAgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxl
bWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUjhfU05PUk0sICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBV
bmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4LCAgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAgIFVuaW1wbGVtZW50
ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCOCwgICAgICAgICAgICAgIEFsd2F5
c1N1cHBvcnRlZCwgICAgICBBbHdheXNTdXBwb3J0ZWQsICAgICAgQWx3YXlzU3VwcG9ydGVkICAg
ICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCOF9TTk9STSwgICAgICAg
IFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRl
ZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCNTY1LCAgICAg
ICAgICAgIEFsd2F5c1N1cHBvcnRlZCwgICAgICBBbHdheXNTdXBwb3J0ZWQsICAgICAgQWx3YXlz
U3VwcG9ydGVkICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTQs
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCwgICAgICBBbHdheXNTdXBwb3J0ZWQsICAgICAg
QWx3YXlzU3VwcG9ydGVkICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkdCNV9BMSwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3Vw
cG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkdCQTgsICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCwgICAgICBBbHdheXNTdXBw
b3J0ZWQsICAgICAgQWx3YXlzU3VwcG9ydGVkICAgICApOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUkdCQThfU05PUk0sICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmlt
cGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkdCMTBfQTIsICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0
LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTBfQTJVSSwgICAgICAgIFVuaW1wbGVtZW50ZWRT
dXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1JHQjgsICAgICAgICAgICAgIFVuaW1wbGVt
ZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1JHQjhfQUxQSEE4LCAgICAgIFVu
aW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1
cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjExRl9HMTFGX0IxMEYs
ICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1l
bnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCOV9FNSwg
ICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5p
bXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjhJ
LCAgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUjhVSSwgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVk
U3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUjE2SSwgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxl
bWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUjE2VUksICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBV
bmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUjMySSwgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjMyVUksICAgICAgICAgICAgIFVuaW1wbGVtZW50
ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4SSwgICAgICAgICAgICAgIFVuaW1w
bGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBv
cnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkc4VUksICAgICAgICAgICAg
IFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRl
ZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcxNkksICAgICAg
ICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBs
ZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcxNlVJ
LCAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwg
VW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkczMkksICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3Vw
cG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1h
cCwgR0xfUkczMlVJLCAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVu
dGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUkdCOEksICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmlt
cGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfUkdCOFVJLCAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0
LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZJLCAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRT
dXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZVSSwgICAgICAgICAgIFVuaW1wbGVt
ZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQp
OwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMzJJLCAgICAgICAgICAgIFVu
aW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1
cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMzJVSSwgICAgICAg
ICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1l
bnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQThJLCAg
ICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5p
bXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
QThVSSwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUkdCQTE2SSwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVk
U3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUkdCQTE2VUksICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxl
bWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkdCQTMySSwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBV
bmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTMyVUksICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOworICAgIC8v
IFVuc2l6ZWQgZm9ybWF0cworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEEs
ICAgICAgICAgICAgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXIoKSwgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigp
LCAgTmV2ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgICBOZXZlcigpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICBOZXZlcigpLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCksICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIE5ldmVyKCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9M
VU1JTkFOQ0VfQUxQSEEsICAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlcigpLCAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyKCksICBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgICAgQWx3YXlzKCksIFZlcnNp
b25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfRVhUX3RleHR1cmVfcmciKSwgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAw
LCAiR0xfQVJCX3RleHR1cmVfcmciKSAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1JHLCAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVy
ZV9yZyIpLCAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4
dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX3JnIiks
ICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIikgICk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAgICAgQWx3
YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwg
QWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBBbHdheXMoKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUkdCQSwgICAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIEFsd2F5cygpLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXMoKSwgQWx3YXlzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAg
ICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgICAgIE5ldmVy
KCksICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyIpLCAgICAgIFZlcnNp
b25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25P
bmx5KDMsIDApICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfcmciKSwgICAgICAgICBOZXZlcigpLCAgVmVyc2lvbk9yRXh0cygzLCAwLCAi
R0xfQVJCX3RleHR1cmVfcmciKSwgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyKCksICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAg
ICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCX0lOVEVHRVIs
ICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF90ZXh0dXJlX2ludGVnZXIiKSwgICAg
TmV2ZXIoKSwgIE5ldmVyKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9ubHkoMywgMCksICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlcigpLCAgTmV2
ZXIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksICAgIE5ldmVyKCksICBWZXJzaW9uT3JFeHRzKDMs
IDAsICJHTF9FWFRfdGV4dHVyZV9pbnRlZ2VyIiksIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgIFZlcnNpb25Pbmx5KDMsIDApICAgICAgICAgICAg
ICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TUkdCLCAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIpLCAg
ICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygyLCAxLCAiR0xfRVhUX3RleHR1cmVfc1JHQiIp
LCAgICBFeHRzT25seSgiR0xfRVhUX3NSR0IiKSwgICAgICAgICAgICAgICAgICAgIEFsd2F5cygp
LCBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1JHQl9BTFBIQSwgICAgICAgIFZlcnNpb25PckV4dHMo
MiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4
dHMoMiwgMSwgIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSwgICAgRXh0c09ubHkoIkdMX0VYVF9zUkdC
IiksICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKIAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
QkdSQThfRVhULCAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3Vw
cG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOworICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVf
Zm9ybWF0X0JHUkE4ODg4CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9CR1JBOF9F
WFQsICAgICAgICAgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAgICAgICAg
ICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygxLCAyLCAiR0xfRVhUX2JncmEiKSwgICAgICAg
ICAgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IiksIEFsd2F5cygp
LCBOZXZlcigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQkdSQV9FWFQsICAgICAgICAgIFZlcnNpb25PckV4dHMo
MSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4
dHMoMSwgMiwgIkdMX0VYVF9iZ3JhIiksICAgICAgICAgICAgRXh0c09ubHkoIkdMX0VYVF90ZXh0
dXJlX2Zvcm1hdF9CR1JBODg4OCIpLCBBbHdheXMoKSwgTmV2ZXIoKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIEZsb2F0aW5nIHBvaW50IGZvcm1hdHMKLSAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgIHwgVGV4dHVy
ZSBzdXBwb3J0ICAgICB8IFJlbmRlciBzdXBwb3J0ICAgICB8IEZpbHRlciBzdXBwb3J0ICAgICAg
fAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjE2RiwgICAgICAgICAgICAgIFVu
aW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1
cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkcxNkYsICAgICAgICAg
ICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1l
bnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCMTZGLCAg
ICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5p
bXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdC
QTE2RiwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfUjMyRiwgICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVk
U3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfUkczMkYsICAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxl
bWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1h
cHBpbmcoJm1hcCwgR0xfUkdCMzJGLCAgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBV
bmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTMyRiwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOworICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgfCBPcGVuR0wgdGV4
dHVyZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0
ZXIgIHwgT3BlbkdMIHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgRVMgdGV4dHVyZSBz
dXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE9wZW5HTCBF
UyByZW5kZXIgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfAorICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjExRl9H
MTFGX0IxMEYsICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZmxvYXQiKSwg
ICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9FWFRf
cGFja2VkX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgICAgICAgICAgICAgICAg
ICAgIFZlcnNpb25Pbmx5KDMsIDApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzKCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX1JHQjlfRTUsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9FWFRfdGV4dHVyZV9zaGFyZWRfZXhwb25lbnQiKSwgICAgICAgICBBbHdheXMoKSwgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfc2hhcmVkX2V4cG9uZW50IEdMX0FSQl9j
b2xvcl9idWZmZXJfZmxvYXQiKSwgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyKCkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SMTZGLCAgICAgICAg
ICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfcmcgQVJCX3RleHR1cmVf
ZmxvYXQiKSwgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJl
X3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBHTF9FWFRfdGV4dHVy
ZV9yZyIpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpLCBWZXJzaW9uT3JFeHRzQW5kRXh0cygzLCAwLCAiR0xfRVhUX3RleHR1cmVfcmciLCAi
R0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IikpOworICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfUkcxNkYsICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX3JnIEFSQl90ZXh0dXJlX2Zsb2F0IiksICAgIEFsd2F5cygpLCBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4dHVyZV9mbG9hdCBHTF9BUkJf
Y29sb3JfYnVmZmVyX2Zsb2F0IiksIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXQgR0xfRVhUX3RleHR1cmVfcmciKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
T0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSwgVmVyc2lvbk9yRXh0c0FuZEV4dHMoMywg
MCwgIkdMX0VYVF90ZXh0dXJlX3JnIiwgIkdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIp
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHQjE2RiwgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCAgICAgICAgICAgICAg
ICAgICBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQg
R0xfQVJCX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JF
eHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksICAgICAgICAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiks
IEV4dHNPbmx5KCJHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9SR0JBMTZGLCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgQWx3YXlzKCksIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9idWZmZXJfZmxvYXQiKSwgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCIpLCAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4
dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpLCBFeHRzT25seSgiR0xfRVhUX2NvbG9yX2J1ZmZlcl9o
YWxmX2Zsb2F0IikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUjMyRiwgICAgICAgICAgICAgIFZlcnNpb25P
ckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX3JnIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksIEFs
d2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBHTF9BUkJfdGV4
dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksIFZlcnNpb25PckV4dHMoMywg
MCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0IEdMX0VYVF90ZXh0dXJlX3JnIiksICAgICAgVmVyc2lv
bk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiksICAgICAgRXh0c09u
bHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JH
MzJGLCAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9yZyBH
TF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX3RleHR1cmVfcmcgR0xfQVJCX3RleHR1cmVfZmxvYXQgR0xfQVJCX2NvbG9yX2J1ZmZlcl9m
bG9hdCIpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfdGV4dHVyZV9mbG9hdCBHTF9FWFRf
dGV4dHVyZV9yZyIpLCAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zs
b2F0X2xpbmVhciIpLCAgICAgIEV4dHNPbmx5KCJHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IzMkYsICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygz
LCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgQWx3YXlzKCks
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IEdMX0FSQl9jb2xvcl9i
dWZmZXJfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
T0VTX3RleHR1cmVfZmxvYXQiKSwgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSwgICAgICBOZXZlcigpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQTMyRiwg
ICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IiksICAg
ICAgICAgICAgICAgICAgIEFsd2F5cygpLCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4
dHVyZV9mbG9hdCBHTF9BUkJfY29sb3JfYnVmZmVyX2Zsb2F0IiksICAgICAgICAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU190ZXh0dXJlX2Zsb2F0IiksICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGlu
ZWFyIiksICAgICAgRXh0c09ubHkoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIERlcHRoIHN0
ZW5jaWwgZm9ybWF0cwotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZv
cm1hdCAgICAgICAgIHwgVGV4dHVyZSBzdXBwb3J0ICAgICB8IFJlbmRlciBzdXBwb3J0ICAgICB8
IEZpbHRlciBzdXBwb3J0ICAgICAgfAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
REVQVEhfQ09NUE9ORU5UMTYsICAgICBBbHdheXNTdXBwb3J0ZWQsICAgICAgQWx3YXlzU3VwcG9y
dGVkLCAgICAgIE5ldmVyU3VwcG9ydGVkICAgICAgKTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDI0LCAgICAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVu
aW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsICAgIFVuaW1wbGVtZW50ZWRT
dXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAg
IEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCBVbmlt
cGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBw
b3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIMjRfU1RFTkNJTDgs
ICAgICAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxl
bWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9ERVBUSDMy
Rl9TVEVOQ0lMOCwgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfU1RFTkNJTF9JTkRFWDgsICAgICAgICBBbHdheXNTdXBwb3J0ZWQsICAgICAgQWx3YXlzU3Vw
cG9ydGVkLCAgICAgIE5ldmVyU3VwcG9ydGVkICAgICAgKTsKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgfCBGb3JtYXQgICAgICAgICAgICAgICAgICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBv
cnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBPcGVuR0wgcmVuZGVyIHN1cHBvcnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAg
IHwgRmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT3BlbkdMIEVT
IHJlbmRlciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDE2
LCAgICAgVmVyc2lvbk9ubHkoMSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZlcnNpb25PckV4dHMoMSwgNSwgIkdMX0FSQl9kZXB0aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5
KDEsIDUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT25seSgyLCAw
KSwgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNf
ZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgyLCAwKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGlu
ZygmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgICAgIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJf
ZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHko
MiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMzJf
T0VTLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHko
MSwgNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNf
ZGVwdGhfdGV4dHVyZSIpLCAgICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV4dHNPbmx5KCJHTF9PRVNfZGVwdGgzMiIpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xf
QVJCX2RlcHRoX2J1ZmZlcl9mbG9hdCIpLCAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJf
ZmxvYXQiKSwgICBWZXJzaW9uT25seSgzLCAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgz
LCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9TVEVOQ0lMX0lOREVYOCwgICAg
ICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpLCBO
ZXZlcigpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDMsIDAsICJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSwgVmVyc2lvbk9ubHkoMiwgMCks
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXIoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9B
UkJfZnJhbWVidWZmZXJfb2JqZWN0IiksICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2Rl
cHRoX3RleHR1cmUiKSwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2ZyYW1lYnVmZmVyX29i
amVjdCIpLCAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIiksIEFs
d2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX09FU19kZXB0aF90ZXh0dXJlIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIp
KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0RFUFRIMzJGX1NURU5DSUw4LCAg
ICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX2RlcHRoX2J1ZmZlcl9mbG9hdCIpLCAgIEFs
d2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
MywgMCwgIkdMX0FSQl9kZXB0aF9idWZmZXJfZmxvYXQiKSwgICBWZXJzaW9uT25seSgzLCAwKSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJzaW9uT25seSgzLCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9ERVBUSF9DT01QT05FTlQsICAgICAgIFZlcnNpb25Pbmx5KDEsIDUpLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDEsIDUsICJHTF9BUkJfZGVw
dGhfdGV4dHVyZSIpLCBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVmVyc2lvbk9ubHkoMiwgMCksICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfT0VTX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMiwg
MCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp
OworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfREVQVEhfU1RFTkNJTCwgICAgICAg
ICBWZXJzaW9uT25seSgxLCA1KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVy
c2lvbk9yRXh0cygxLCA1LCAiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSwgVmVyc2lvbk9ubHkoMSwg
NSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25Pbmx5KDIsIDApLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX09FU19kZXB0
aF90ZXh0dXJlIiksIFZlcnNpb25Pbmx5KDIsIDApICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKIAogICAgIC8vIEx1bWluYW5jZSBhbHBoYSBm
b3JtYXRzCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAg
ICAgICAgIHwgVGV4dHVyZSBzdXBwb3J0ICAgICB8IFJlbmRlciBzdXBwb3J0ICAgICB8IEZpbHRl
ciBzdXBwb3J0ICAgICAgfAotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEE4
X0VYVCwgICAgICAgICAgICAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFw
LCBHTF9MVU1JTkFOQ0U4X0VYVCwgICAgICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBs
ZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0FMUEhBMzJGX0VYVCwgICAgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFMzJGX0VYVCwgICAgICAgVW5pbXBs
ZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9BTFBIQTE2Rl9FWFQsICAgICAg
ICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVt
ZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5D
RTE2Rl9FWFQsICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwg
R0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVt
ZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULCBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsIFVuaW1wbGVt
ZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQp
OworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAg
IHwgT3BlbkdMIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICB8IEZpbHRlciAg
fCBSZW5kZXIgfCBPcGVuR0wgRVMgdGV4dHVyZSBzdXBwb3J0ICAgICAgICAgfCBGaWx0ZXIgIHwg
UmVuZGVyIHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0FMUEhBOF9FWFQsICAg
ICAgICAgICAgIEFsd2F5cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5cygpLCBOZXZlcigpLCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdh
eXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFO
Q0U4X0VYVCwgICAgICAgICBBbHdheXMoKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ui
KSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
QUxQSEEzMkZfRVhULCAgICAgICAgICAgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1
cmVfZmxvYXQiKSwgQWx3YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9z
dG9yYWdlIiksIEFsd2F5cygpLCBOZXZlcigpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0xVTUlOQU5DRTMyRl9FWFQsICAgICAgIFZlcnNpb25PckV4dHMoMywgMCwgIkdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IiksIEFsd2F5cygpLCBOZXZlcigpLCBFeHRzT25seSgiR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9BTFBIQTE2Rl9FWFQsICAgICAgICAgICBWZXJzaW9uT3JFeHRzKDMsIDAs
ICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdM
X0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFMTZGX0VYVCwgICAgICAgVmVyc2lvbk9yRXh0
cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3YXlzKCksIE5ldmVyKCksIEV4dHNP
bmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5cygpLCBOZXZlcigpKTsKKyAgICBJ
bnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwgIEFsd2F5
cygpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5cygpLCBOZXZlcigp
LCBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7
CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhU
LCBWZXJzaW9uT3JFeHRzKDMsIDAsICJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpLCBBbHdheXMoKSwg
TmV2ZXIoKSwgRXh0c09ubHkoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSwgQWx3YXlzKCksIE5l
dmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfTFVNSU5BTkNFX0FMUEhB
MTZGX0VYVCwgVmVyc2lvbk9yRXh0cygzLCAwLCAiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSwgQWx3
YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIiksIEFsd2F5
cygpLCBOZXZlcigpKTsKIAotICAgIC8vIFVuc2l6ZWQgZm9ybWF0cwotICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgIHwgVGV4dHVyZSBzdXBwb3J0ICAgICB8
IFJlbmRlciBzdXBwb3J0ICAgICB8IEZpbHRlciBzdXBwb3J0ICAgICAgfAotICAgIEluc2VydEZv
cm1hdE1hcHBpbmcoJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICBVbmltcGxlbWVudGVkU3VwcG9y
dCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNl
cnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgVW5pbXBsZW1lbnRlZFN1
cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCk7Ci0gICAg
SW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIFVuaW1wbGVtZW50
ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwot
ICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICBVbmltcGxl
bWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JHLCAgICAgICAgICAgICAgVW5p
bXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3Vw
cG9ydCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR0IsICAgICAgICAgICAg
IFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRl
ZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfUkdCQSwgICAgICAg
ICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVt
ZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX1JFRF9JTlRF
R0VSLCAgICAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmlt
cGxlbWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9SR19J
TlRFR0VSLCAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwg
VW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xf
UkdCX0lOVEVHRVIsICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBv
cnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX1JHQkFfSU5URUdFUiwgICAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRT
dXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygm
bWFwLCBHTF9CR1JBX0VYVCwgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVu
dGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2VydEZvcm1hdE1hcHBp
bmcoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5ULCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBs
ZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0RFUFRIX1NURU5DSUwsICAgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVu
aW1wbGVtZW50ZWRTdXBwb3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCk7Ci0gICAgSW5zZXJ0Rm9y
bWF0TWFwcGluZygmbWFwLCBHTF9TUkdCX0VYVCwgICAgICAgIFVuaW1wbGVtZW50ZWRTdXBwb3J0
LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOwotICAgIEluc2Vy
dEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfU1JHQl9BTFBIQV9FWFQsICBVbmltcGxlbWVudGVkU3Vw
cG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLQogICAg
IC8vIENvbXByZXNzZWQgZm9ybWF0cywgRnJvbSBFUyAzLjAuMSBzcGVjLCB0YWJsZSAzLjE2Ci0g
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IFRleHR1cmUgc3VwcG9ydCAgICAgfCBSZW5kZXIgc3VwcG9ydCAg
ICAgfCBGaWx0ZXIgc3VwcG9ydCAgICAgIHwKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0NPTVBSRVNTRURfUjExX0VBQywgICAgICAgICAgICAgICAgICAgICAgICBVbmltcGxlbWVu
dGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsK
LSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9F
QUMsICAgICAgICAgICAgICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1
cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsICAgICAgICAgICAgICAgICAgICAgICBVbmltcGxl
bWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0
KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JH
MTFfRUFDLCAgICAgICAgICAgICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRl
ZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgICBVbmlt
cGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBw
b3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhf
RVRDMiwgICAgICAgICAgICAgICAgICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1l
bnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBw
aW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsICBV
bmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRT
dXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JH
QjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBs
ZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRN
YXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsICAgICAgICAgICAgICAg
ICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50
ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0VUQzJfRUFDLCAgICAgICAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5p
bXBsZW1lbnRlZFN1cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKKyAgICBJbnNlcnRGb3Jt
YXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUjExX0VBQywgICAgICAgICAgICAgICAgICAg
ICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3
YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7Cisg
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFD
LCAgICAgICAgICAgICAgICAgVmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRp
YmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzKCks
IE5ldmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9S
RzExX0VBQywgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FS
Ql9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVyc2lvbk9ubHkoMywg
MCksIEFsd2F5cygpLCBOZXZlcigpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICBWZXJzaW9uT3JFeHRz
KDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCksIFZl
cnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFw
cGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAgICAg
VmVyc2lvbk9yRXh0cyg0LCAzLCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygp
LCBOZXZlcigpLCBWZXJzaW9uT25seSgzLCAwKSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIElu
c2VydEZvcm1hdE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAgICAgICAg
ICAgICAgICAgICAgIFZlcnNpb25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0
eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5cygpLCBOZXZl
cigpKTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMz
X2NvbXBhdGliaWxpdHkiKSwgQWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBB
bHdheXMoKSwgTmV2ZXIoKSk7CisgICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01Q
UkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgVmVyc2lvbk9yRXh0cyg0LCAz
LCAiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IiksIEFsd2F5cygpLCBOZXZlcigpLCBWZXJzaW9u
T25seSgzLCAwKSwgQWx3YXlzKCksIE5ldmVyKCkpOworICAgIEluc2VydEZvcm1hdE1hcHBpbmco
Jm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgICAgICAgICAgICAgICAgIFZlcnNp
b25PckV4dHMoNCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2
ZXIoKSwgVmVyc2lvbk9ubHkoMywgMCksIEFsd2F5cygpLCBOZXZlcigpKTsKKyAgICBJbnNlcnRG
b3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLCAg
ICAgICAgICBWZXJzaW9uT3JFeHRzKDQsIDMsICJHTF9BUkJfRVMzX2NvbXBhdGliaWxpdHkiKSwg
QWx3YXlzKCksIE5ldmVyKCksIFZlcnNpb25Pbmx5KDMsIDApLCBBbHdheXMoKSwgTmV2ZXIoKSk7
CiAKICAgICAvLyBGcm9tIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKLSAgICAvLyAg
ICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAg
fCBUZXh0dXJlIHN1cHBvcnQgICAgIHwgUmVuZGVyIHN1cHBvcnQgICAgIHwgRmlsdGVyIHN1cHBv
cnQgICAgICB8Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JH
Ql9TM1RDX0RYVDFfRVhULCAgICBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1
cHBvcnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZt
YXAsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCAgIFVuaW1wbGVtZW50ZWRTdXBw
b3J0LCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOworICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICB8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IE9wZW5HTCB0ZXh0dXJlIHN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0
ZXIgIHwgUmVuZGVyIHwgT3BlbkdMIEVTIHRleHR1cmUgc3VwcG9ydCAgICAgICAgICAgICAgICAg
ICAgfCBGaWx0ZXIgIHwgUmVuZGVyIHwKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdM
X0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsICAgIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9zM3RjIiksICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHkoIkdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSwgICBBbHdheXMoKSwgTmV2ZXIoKSk7Cisg
ICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQx
X0VYVCwgICBFeHRzT25seSgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpLCAgICAg
QWx3YXlzKCksIE5ldmVyKCksIEV4dHNPbmx5KCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIiksICAgQWx3YXlzKCksIE5ldmVyKCkpOwogCiAgICAgLy8gRnJvbSBHTF9BTkdMRV90ZXh0
dXJlX2NvbXByZXNzaW9uX2R4dDMKLSAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEUsIFVuaW1wbGVtZW50ZWRTdXBwb3J0LCBVbmlt
cGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBvcnQpOworICAgIEluc2VydEZvcm1h
dE1hcHBpbmcoJm1hcCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwgRXh0c09u
bHkoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKSwgICAgIEFsd2F5cygpLCBOZXZl
cigpLCBFeHRzT25seSgiR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQzIiksIEFsd2F5
cygpLCBOZXZlcigpKTsKIAogICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQ1Ci0gICAgSW5zZXJ0Rm9ybWF0TWFwcGluZygmbWFwLCBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQ1X0FOR0xFLCBVbmltcGxlbWVudGVkU3VwcG9ydCwgVW5pbXBsZW1lbnRlZFN1cHBv
cnQsIFVuaW1wbGVtZW50ZWRTdXBwb3J0KTsKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5nKCZtYXAs
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUsIEV4dHNPbmx5KCJHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9zM3RjIiksICAgICBBbHdheXMoKSwgTmV2ZXIoKSwgRXh0c09ubHko
IkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpLCBBbHdheXMoKSwgTmV2ZXIoKSk7
CiAKKyAgICAvLyBGcm9tIEdMX0VUQzFfUkdCOF9PRVMKKyAgICBJbnNlcnRGb3JtYXRNYXBwaW5n
KCZtYXAsIEdMX0VUQzFfUkdCOF9PRVMsICAgICAgICAgICAgICAgICAgIFZlcnNpb25PckV4dHMo
NCwgMywgIkdMX0FSQl9FUzNfY29tcGF0aWJpbGl0eSIpLCBBbHdheXMoKSwgTmV2ZXIoKSwgVmVy
c2lvbk9yRXh0cygzLCAwLCAiR0xfRVRDMV9SR0I4X09FUyIpLCAgICAgICBBbHdheXMoKSwgTmV2
ZXIoKSk7CisKKyAgICAvLyBjbGFuZy1mb3JtYXQgb24KKwogICAgIHJldHVybiBtYXA7CiB9CiAK
QEAgLTIwMCwyMSArMjYxLDI1NyBAQAogICAgIHJldHVybiBmb3JtYXRNYXA7CiB9CiAKLWNvbnN0
IEludGVybmFsRm9ybWF0ICZHZXRJbnRlcm5hbEZvcm1hdEluZm8oR0xlbnVtIGludGVybmFsRm9y
bWF0KQorY29uc3QgSW50ZXJuYWxGb3JtYXQgJkdldEludGVybmFsRm9ybWF0SW5mbyhHTGVudW0g
aW50ZXJuYWxGb3JtYXQsIFN0YW5kYXJkR0wgc3RhbmRhcmQpCiB7CiAgICAgY29uc3QgSW50ZXJu
YWxGb3JtYXRJbmZvTWFwICZmb3JtYXRNYXAgPSBHZXRJbnRlcm5hbEZvcm1hdE1hcCgpOwogICAg
IEludGVybmFsRm9ybWF0SW5mb01hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGZvcm1hdE1hcC5m
aW5kKGludGVybmFsRm9ybWF0KTsKICAgICBpZiAoaXRlciAhPSBmb3JtYXRNYXAuZW5kKCkpCiAg
ICAgewotICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOworICAgICAgICBjb25zdCBJbnRlcm5h
bEZvcm1hdEluZm8gJmluZm8gPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIHN3aXRjaCAoc3RhbmRh
cmQpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIFNUQU5EQVJEX0dMX0VTOiAgICAgIHJldHVy
biBpbmZvLmdsZXNJbmZvOworICAgICAgICAgIGNhc2UgU1RBTkRBUkRfR0xfREVTS1RPUDogcmV0
dXJuIGluZm8uZ2xJbmZvOworICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZQorCisgICAgc3RhdGljIGNvbnN0IEludGVy
bmFsRm9ybWF0IGRlZmF1bHRJbnRlcm5hbEZvcm1hdDsKKyAgICByZXR1cm4gZGVmYXVsdEludGVy
bmFsRm9ybWF0OworfQorCitzdGF0aWMgR0xlbnVtIEdldE5hdGl2ZUludGVybmFsRm9ybWF0KGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaXplZEludGVybmFsRm9ybWF0
KQoreworICAgIEdMZW51bSByZXN1bHQgPSBpbnRlcm5hbEZvcm1hdDsKKworICAgIGlmIChmdW5j
dGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1ApCiAgICAgewotICAgICAgICBz
dGF0aWMgY29uc3QgSW50ZXJuYWxGb3JtYXQgZGVmYXVsdEludGVybmFsRm9ybWF0OwotICAgICAg
ICByZXR1cm4gZGVmYXVsdEludGVybmFsRm9ybWF0OworICAgICAgICAvLyBVc2Ugc2l6ZWQgaW50
ZXJuYWwgZm9ybWF0cyB3aGVuZXZlciBwb3NzaWJsZSB0byBndWFyYW50ZWUgdGhlIHJlcXVlc3Rl
ZCBwcmVjaXNpb24uCisgICAgICAgIC8vIE9uIERlc2t0b3AgR0wsIHBhc3NpbmcgYW4gaW50ZXJu
YWwgZm9ybWF0IG9mIEdMX1JHQkEgd2lsbCBnZW5lcmF0ZSBhIEdMX1JHQkE4IHRleHR1cmUKKyAg
ICAgICAgLy8gZXZlbiBpZiB0aGUgcHJvdmlkZWQgdHlwZSBpcyBHTF9GTE9BVC4KKyAgICAgICAg
cmVzdWx0ID0gc2l6ZWRJbnRlcm5hbEZvcm1hdDsKKworICAgICAgICBjb25zdCBnbDo6SW50ZXJu
YWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHNpemVkSW50
ZXJuYWxGb3JtYXQpOworCisgICAgICAgIGlmICh3b3JrYXJvdW5kcy5hdm9pZDFCaXRBbHBoYVRl
eHR1cmVGb3JtYXRzICYmIGZvcm1hdEluZm8uYWxwaGFCaXRzID09IDEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIFVzZSBhbiA4LWJpdCBmb3JtYXQgaW5zdGVhZAorICAgICAgICAgICAgcmVz
dWx0ID0gR0xfUkdCQTg7CisgICAgICAgIH0KKworICAgICAgICBpZiAod29ya2Fyb3VuZHMucmdi
YTRJc05vdFN1cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nICYmIHNpemVkSW50ZXJuYWxGb3JtYXQg
PT0gR0xfUkdCQTQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFVzZSBhbiA4LWJpdCBmb3Jt
YXQgaW5zdGVhZAorICAgICAgICAgICAgcmVzdWx0ID0gR0xfUkdCQTg7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoc2l6ZWRJbnRlcm5hbEZvcm1hdCA9PSBHTF9SR0I1NjUgJiYgIWZ1bmN0aW9u
cy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMSkpICYmCisgICAgICAgICAgICAhZnVuY3Rp
b25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX0VTMl9jb21wYXRpYmlsaXR5IikpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIEdMX1JHQjU2NSBpcyByZXF1aXJlZCBmb3IgYmFzaWMgRVMyIGZ1
bmN0aW9uYWxpdHkgYnV0IHdhcyBub3QgYWRkZWQgdG8gZGVza3RvcCBHTAorICAgICAgICAgICAg
Ly8gdW50aWwgNC4xLgorICAgICAgICAgICAgLy8gV29yayBhcm91bmQgdGhpcyBieSB1c2luZyBh
biA4LWJpdCBmb3JtYXQgaW5zdGVhZC4KKyAgICAgICAgICAgIHJlc3VsdCA9IEdMX1JHQjg7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoc2l6ZWRJbnRlcm5hbEZvcm1hdCA9PSBHTF9CR1JBOF9F
WFQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEdMRVMgYWNjZXB0cyBHTF9CR1JBIGFzIGFu
IGludGVybmFsIGZvcm1hdCBidXQgZGVza3RvcCBHTCBvbmx5IGFjY2VwdHMgaXQgYXMgYSB0eXBl
LgorICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBpbnRlcm5hbCBmb3JtYXQgdG8gR0xfUkdCQS4K
KyAgICAgICAgICAgIHJlc3VsdCA9IEdMX1JHQkE4OworICAgICAgICB9CisKKyAgICAgICAgaWYg
KChmdW5jdGlvbnMtPnByb2ZpbGUgJiBHTF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVQpICE9IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFdvcmsgYXJvdW5kIGRlcHJlY2F0ZWQgbHVtaW5h
bmNlIGFscGhhIGZvcm1hdHMgaW4gdGhlIE9wZW5HTCBjb3JlIHByb2ZpbGUgYnkgYmFja2luZwor
ICAgICAgICAgICAgLy8gdGhlbSB3aXRoIFIgb3IgUkcgdGV4dHVyZXMuCisgICAgICAgICAgICBp
ZiAoZm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfTFVNSU5BTkNFIHx8IGZvcm1hdEluZm8uZm9ybWF0
ID09IEdMX0FMUEhBKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGds
OjpHZXRTaXplZEludGVybmFsRm9ybWF0KEdMX1JFRCwgZm9ybWF0SW5mby50eXBlKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uZm9ybWF0ID09IEdMX0xVTUlO
QU5DRV9BTFBIQSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBnbDo6
R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTF9SRywgZm9ybWF0SW5mby50eXBlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRp
YyBHTGVudW0gR2V0TmF0aXZlRm9ybWF0KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJv
dW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQpCit7Cisg
ICAgR0xlbnVtIHJlc3VsdCA9IGZvcm1hdDsKKworICAgIGlmIChmdW5jdGlvbnMtPnN0YW5kYXJk
ID09IFNUQU5EQVJEX0dMX0RFU0tUT1ApCisgICAgeworICAgICAgICAvLyBUaGUgRVMgU1JHQiBl
eHRlbnNpb25zIHJlcXVpcmUgdGhhdCB0aGUgcHJvdmlkZWQgZm9ybWF0IGlzIEdMX1NSR0Igb3Ig
U1JHQl9BTFBIQSBidXQKKyAgICAgICAgLy8gdGhlIGRlc2t0b3AgR0wgZXh0ZW5zaW9ucyBvbmx5
IGFjY2VwdCBHTF9SR0Igb3IgR0xfUkdCQS4gIENvbnZlcnQgdGhlbS4KKyAgICAgICAgaWYgKGZv
cm1hdCA9PSBHTF9TUkdCKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQgPSBHTF9SR0I7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9ybWF0ID09IEdMX1NSR0JfQUxQSEEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IEdMX1JHQkE7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoKGZ1bmN0aW9ucy0+cHJvZmlsZSAmIEdMX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVCkg
IT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gV29yayBhcm91bmQgZGVwcmVjYXRlZCBs
dW1pbmFuY2UgYWxwaGEgZm9ybWF0cyBpbiB0aGUgT3BlbkdMIGNvcmUgcHJvZmlsZSBieSBiYWNr
aW5nCisgICAgICAgICAgICAvLyB0aGVtIHdpdGggUiBvciBSRyB0ZXh0dXJlcy4KKyAgICAgICAg
ICAgIGlmIChmb3JtYXQgPT0gR0xfTFVNSU5BTkNFIHx8IGZvcm1hdCA9PSBHTF9BTFBIQSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBHTF9SRUQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGlmIChmb3JtYXQgPT0gR0xfTFVNSU5BTkNFX0FMUEhBKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdMX1JHOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIEdM
ZW51bSBHZXROYXRpdmVDb21wcmVzc2VkRm9ybWF0KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlv
bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fy
b3VuZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCkKK3sKKyAgICBHTGVudW0gcmVzdWx0ID0gZm9ybWF0OworCisg
ICAgaWYgKGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCkKKyAgICB7
CisgICAgICAgIGlmIChmb3JtYXQgPT0gR0xfRVRDMV9SR0I4X09FUykKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gR0xfRVRDMV9SR0I4X09FUyBpcyBub3QgYXZhaWxhYmxlIGluIGFueSBkZXNr
dG9wIEdMIGV4dGVuc2lvbiBidXQgdGhlIGNvbXByZXNzaW9uCisgICAgICAgICAgICAvLyBmb3Jt
YXQgaXMgZm9yd2FyZHMgY29tcGF0aWJsZSBzbyBqdXN0IHVzZSB0aGUgRVRDMiBmb3JtYXQuCisg
ICAgICAgICAgICByZXN1bHQgPSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywg
MCkpKQorICAgIHsKKyAgICAgICAgaWYgKGZvcm1hdCA9PSBHTF9FVEMxX1JHQjhfT0VTKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBQYXNzIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyIGFzIHRo
ZSB0YXJnZXQgZm9ybWF0IGluIEVTMyBhbmQgaGlnaGVyIGJlY2F1c2UgaXQKKyAgICAgICAgICAg
IC8vIGJlY29tZXMgYSBjb3JlIGZvcm1hdC4KKyAgICAgICAgICAgIHJlc3VsdCA9IEdMX0NPTVBS
RVNTRURfUkdCOF9FVEMyOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
IH0KKworc3RhdGljIEdMZW51bSBHZXROYXRpdmVUeXBlKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAm
d29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpCit7
CisgICAgR0xlbnVtIHJlc3VsdCA9IHR5cGU7CisKKyAgICBpZiAoZnVuY3Rpb25zLT5zdGFuZGFy
ZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUgPT0gR0xf
SEFMRl9GTE9BVF9PRVMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoZSBlbnVtcyBkaWZm
ZXIgZm9yIHRoZSBPRVMgaGFsZiBmbG9hdCBleHRlbnNpb25zIGFuZCBkZXNrdG9wIEdMIHNwZWMu
IFVwZGF0ZSBpdC4KKyAgICAgICAgICAgIHJlc3VsdCA9IEdMX0hBTEZfRkxPQVQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9u
KDMsIDApKSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlID09IEdMX0hBTEZfRkxPQVRfT0VTKQor
ICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGUgZW51bXMgZGlmZmVyIGZvciB0aGUgT0VTIGhh
bGYgZmxvYXQgZXh0ZW5zaW9ucyBhbmQgRVMgMyBzcGVjLiBVcGRhdGUgaXQuCisgICAgICAgICAg
ICByZXN1bHQgPSBHTF9IQUxGX0ZMT0FUOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworVGV4SW1hZ2VGb3JtYXQgR2V0VGV4SW1hZ2VGb3JtYXQoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlKQoreworICAgIFRleEltYWdlRm9ybWF0IHJlc3VsdDsKKyAgICByZXN1bHQu
aW50ZXJuYWxGb3JtYXQgPSBHZXROYXRpdmVJbnRlcm5hbEZvcm1hdCgKKyAgICAgICAgZnVuY3Rp
b25zLCB3b3JrYXJvdW5kcywgaW50ZXJuYWxGb3JtYXQsIGdsOjpHZXRTaXplZEludGVybmFsRm9y
bWF0KGludGVybmFsRm9ybWF0LCB0eXBlKSk7CisgICAgcmVzdWx0LmZvcm1hdCA9IEdldE5hdGl2
ZUZvcm1hdChmdW5jdGlvbnMsIHdvcmthcm91bmRzLCBmb3JtYXQpOworICAgIHJlc3VsdC50eXBl
ICAgPSBHZXROYXRpdmVUeXBlKGZ1bmN0aW9ucywgd29ya2Fyb3VuZHMsIHR5cGUpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1RleFN1YkltYWdlRm9ybWF0IEdldFRleFN1YkltYWdlRm9ybWF0
KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSkKK3sKKyAgICBUZXhTdWJJ
bWFnZUZvcm1hdCByZXN1bHQ7CisgICAgcmVzdWx0LmZvcm1hdCA9IEdldE5hdGl2ZUZvcm1hdChm
dW5jdGlvbnMsIHdvcmthcm91bmRzLCBmb3JtYXQpOworICAgIHJlc3VsdC50eXBlICAgPSBHZXRO
YXRpdmVUeXBlKGZ1bmN0aW9ucywgd29ya2Fyb3VuZHMsIHR5cGUpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0NvbXByZXNzZWRUZXhJbWFnZUZvcm1hdCBHZXRDb21wcmVzc2VkVGV4SW1hZ2VG
b3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29y
a2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKK3sKKyAgICBDb21wcmVzc2VkVGV4SW1hZ2VG
b3JtYXQgcmVzdWx0OworICAgIHJlc3VsdC5pbnRlcm5hbEZvcm1hdCA9IEdldE5hdGl2ZUNvbXBy
ZXNzZWRGb3JtYXQoZnVuY3Rpb25zLCB3b3JrYXJvdW5kcywgaW50ZXJuYWxGb3JtYXQpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0NvbXByZXNzZWRUZXhTdWJJbWFnZUZvcm1hdCBHZXRDb21w
cmVzc2VkU3ViVGV4SW1hZ2VGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQpCit7Cisg
ICAgQ29tcHJlc3NlZFRleFN1YkltYWdlRm9ybWF0IHJlc3VsdDsKKyAgICByZXN1bHQuZm9ybWF0
ID0gR2V0TmF0aXZlQ29tcHJlc3NlZEZvcm1hdChmdW5jdGlvbnMsIHdvcmthcm91bmRzLCBmb3Jt
YXQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NvcHlUZXhJbWFnZUltYWdlRm9ybWF0IEdl
dENvcHlUZXhJbWFnZUltYWdlRm9ybWF0KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
b3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmcmFtZWJ1ZmZl
clR5cGUpCit7CisgICAgQ29weVRleEltYWdlSW1hZ2VGb3JtYXQgcmVzdWx0OworICAgIHJlc3Vs
dC5pbnRlcm5hbEZvcm1hdCA9CisgICAgICAgIEdldE5hdGl2ZUludGVybmFsRm9ybWF0KGZ1bmN0
aW9ucywgd29ya2Fyb3VuZHMsIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgZnJh
bWVidWZmZXJUeXBlKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGV4U3RvcmFnZUZvcm1h
dCBHZXRUZXhTdG9yYWdlRm9ybWF0KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29y
a2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsRm9ybWF0KQoreworICAgIFRleFN0b3JhZ2VGb3JtYXQgcmVzdWx0OworICAgIHJlc3Vs
dC5pbnRlcm5hbEZvcm1hdCA9CisgICAgICAgIEdldE5hdGl2ZUludGVybmFsRm9ybWF0KGZ1bmN0
aW9ucywgd29ya2Fyb3VuZHMsIGludGVybmFsRm9ybWF0LCBpbnRlcm5hbEZvcm1hdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworUmVuZGVyYnVmZmVyRm9ybWF0IEdldFJlbmRlcmJ1ZmZlckZv
cm1hdChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9y
bWF0KQoreworICAgIFJlbmRlcmJ1ZmZlckZvcm1hdCByZXN1bHQ7CisgICAgcmVzdWx0LmludGVy
bmFsRm9ybWF0ID0KKyAgICAgICAgR2V0TmF0aXZlSW50ZXJuYWxGb3JtYXQoZnVuY3Rpb25zLCB3
b3JrYXJvdW5kcywgaW50ZXJuYWxGb3JtYXQsIGludGVybmFsRm9ybWF0KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwLDEwICsx
MCwxNCBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9GT1JNQVRVVElMU0dMX0hfCiAj
ZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX0ZPUk1BVFVUSUxTR0xfSF8KIAorI2luY2x1ZGUg
PG1hcD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
YW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9WZXJzaW9uLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMjEsMTggKzI1
LDkzIEBACiBuYW1lc3BhY2UgbmF0aXZlZ2wKIHsKIAorc3RydWN0IFN1cHBvcnRSZXF1aXJlbWVu
dAoreworICAgIFN1cHBvcnRSZXF1aXJlbWVudCgpOworCisgICAgLy8gVmVyc2lvbiB0aGF0IHRo
aXMgZm9ybWF0IGJlY2FtZSBzdXBwb3J0ZWQgd2l0aG91dCBleHRlbnNpb25zCisgICAgZ2w6OlZl
cnNpb24gdmVyc2lvbjsKKworICAgIC8vIEV4dGVuc2lvbnMgdGhhdCBhcmUgcmVxdWlyZWQgaWYg
dGhlIG1pbmltdW0gdmVyc2lvbiBpcyBub3QgbWV0CisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IHZlcnNpb25FeHRlbnNpb25zOworCisgICAgLy8gRXh0ZW5zaW9ucyB0aGF0IGFyZSBhbHdh
eXMgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGlzIGZvcm1hdAorICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
c3RyaW5nPiByZXF1aXJlZEV4dGVuc2lvbnM7Cit9OworCiBzdHJ1Y3QgSW50ZXJuYWxGb3JtYXQK
IHsKICAgICBJbnRlcm5hbEZvcm1hdCgpOwogCi0gICAgdHlwZWRlZiBib29sKCpTdXBwb3J0Q2hl
Y2tGdW5jdGlvbikoR0x1aW50IG1ham9yVmVyc2lvbiwgR0x1aW50IG1pbm9yVmVyc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
dGQ6OnN0cmluZz4gJmV4dGVuc2lvbnMpOwotICAgIFN1cHBvcnRDaGVja0Z1bmN0aW9uIHRleHR1
cmVTdXBwb3J0OwotICAgIFN1cHBvcnRDaGVja0Z1bmN0aW9uIHJlbmRlclN1cHBvcnQ7Ci0gICAg
U3VwcG9ydENoZWNrRnVuY3Rpb24gZmlsdGVyU3VwcG9ydDsKKyAgICBTdXBwb3J0UmVxdWlyZW1l
bnQgdGV4dHVyZTsKKyAgICBTdXBwb3J0UmVxdWlyZW1lbnQgZmlsdGVyOworICAgIFN1cHBvcnRS
ZXF1aXJlbWVudCByZW5kZXJidWZmZXI7CisgICAgU3VwcG9ydFJlcXVpcmVtZW50IGZyYW1lYnVm
ZmVyQXR0YWNobWVudDsKIH07Ci1jb25zdCBJbnRlcm5hbEZvcm1hdCAmR2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7Citjb25zdCBJbnRlcm5hbEZvcm1hdCAmR2V0
SW50ZXJuYWxGb3JtYXRJbmZvKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgU3RhbmRhcmRHTCBzdGFu
ZGFyZCk7CiAKK3N0cnVjdCBUZXhJbWFnZUZvcm1hdAoreworICAgIEdMZW51bSBpbnRlcm5hbEZv
cm1hdDsKKyAgICBHTGVudW0gZm9ybWF0OworICAgIEdMZW51bSB0eXBlOworfTsKK1RleEltYWdl
Rm9ybWF0IEdldFRleEltYWdlRm9ybWF0KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3Jr
YXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSk7CisKK3N0cnVj
dCBUZXhTdWJJbWFnZUZvcm1hdAoreworICAgIEdMZW51bSBmb3JtYXQ7CisgICAgR0xlbnVtIHR5
cGU7Cit9OworVGV4U3ViSW1hZ2VGb3JtYXQgR2V0VGV4U3ViSW1hZ2VGb3JtYXQoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKTsKKworc3RydWN0IENvbXByZXNzZWRUZXhJ
bWFnZUZvcm1hdAoreworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdDsKK307CitDb21wcmVzc2Vk
VGV4SW1hZ2VGb3JtYXQgR2V0Q29tcHJlc3NlZFRleEltYWdlRm9ybWF0KGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQpOworCitzdHJ1Y3QgQ29tcHJlc3NlZFRleFN1YkltYWdlRm9ybWF0Cit7CisgICAg
R0xlbnVtIGZvcm1hdDsKK307CitDb21wcmVzc2VkVGV4U3ViSW1hZ2VGb3JtYXQgR2V0Q29tcHJl
c3NlZFN1YlRleEltYWdlRm9ybWF0KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0KTsKKworc3Ry
dWN0IENvcHlUZXhJbWFnZUltYWdlRm9ybWF0Cit7CisgICAgR0xlbnVtIGludGVybmFsRm9ybWF0
OworfTsKK0NvcHlUZXhJbWFnZUltYWdlRm9ybWF0IEdldENvcHlUZXhJbWFnZUltYWdlRm9ybWF0
KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5k
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmcmFtZWJ1ZmZlclR5cGUpOworCitzdHJ1Y3QgVGV4U3Rv
cmFnZUZvcm1hdAoreworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdDsKK307CitUZXhTdG9yYWdl
Rm9ybWF0IEdldFRleFN0b3JhZ2VGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dM
ICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQpOworCitzdHJ1Y3QgUmVuZGVyYnVmZmVyRm9ybWF0Cit7CisgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0OworfTsKK1JlbmRlcmJ1ZmZlckZvcm1hdCBHZXRSZW5kZXJi
dWZmZXJGb3JtYXQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29ya2Fyb3Vu
ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNnbF9lbnVtcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNn
bF9lbnVtcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfZW51bXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDI5LDYgKzQyOSw3IEBACiAjZGVmaW5lIEdMX01BWF9WRVJURVhfQVRUUklCUyAweDg4
NjkKICNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTIDB4OEI0QwogI2Rl
ZmluZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUyAweDhCNEEKKyNkZWZpbmUgR0xf
UE9JTlRfU1BSSVRFIDB4ODg2MQogI2RlZmluZSBHTF9QT0lOVF9TUFJJVEVfQ09PUkRfT1JJR0lO
IDB4OENBMAogI2RlZmluZSBHTF9TQU1QTEVSXzFEIDB4OEI1RAogI2RlZmluZSBHTF9TQU1QTEVS
XzFEX1NIQURPVyAweDhCNjEKQEAgLTUyMyw3ICs1MjQsNyBAQAogI2RlZmluZSBHTF9ERVBUSF9T
VEVOQ0lMIDB4ODRGOQogI2RlZmluZSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQgMHg4MjFB
CiAjZGVmaW5lIEdMX0RSQVdfRlJBTUVCVUZGRVIgMHg4Q0E5Ci0jZGVmaW5lIEdMX0RSQVdfRlJB
TUVCVUZGRVJfQklORElORyBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HCisjZGVmaW5lIEdMX0RSQVdf
RlJBTUVCVUZGRVJfQklORElORyAweDhDQTYKICNkZWZpbmUgR0xfRklYRURfT05MWSAweDg5MUQK
ICNkZWZpbmUgR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWIDB4OERBRAogI2RlZmlu
ZSBHTF9GUkFNRUJVRkZFUiAweDhENDAKQEAgLTk3NCw4ICs5NzUsOCBAQAogI2RlZmluZSBHTF9D
T01QUkVTU0VEX1JHQl9CUFRDX1NJR05FRF9GTE9BVCAweDhFOEUKICNkZWZpbmUgR0xfQ09NUFJF
U1NFRF9SR0JfQlBUQ19VTlNJR05FRF9GTE9BVCAweDhFOEYKICNkZWZpbmUgR0xfQ09NUFJFU1NF
RF9TUkdCX0FMUEhBX0JQVENfVU5PUk0gMHg4RThECi0jZGVmaW5lIEdMX0NPUFlfUkVBRF9CVUZG
RVJfQklORElORyBHTF9DT1BZX1JFQURfQlVGRkVSCi0jZGVmaW5lIEdMX0NPUFlfV1JJVEVfQlVG
RkVSX0JJTkRJTkcgR0xfQ09QWV9XUklURV9CVUZGRVIKKyNkZWZpbmUgR0xfQ09QWV9SRUFEX0JV
RkZFUl9CSU5ESU5HIDB4OEYzNgorI2RlZmluZSBHTF9DT1BZX1dSSVRFX0JVRkZFUl9CSU5ESU5H
IDB4OEYzNwogI2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JBUlJJRVJfQklUIDB4MDAwMDAwMDIK
ICNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQkFSUklFUl9CSVQgMHgwMDAwMDQwMAogI2RlZmluZSBH
TF9JTUFHRV8xRCAweDkwNEMKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNnbF90eXBlZGVmcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNn
bF90eXBlZGVmcy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTk1LDYgKzU5NSw3IEBACiB0eXBlZGVmIEdMdWludCAoSU5URVJOQUxfR0xf
QVBJRU5UUlkgKlBGTkdMR0VUREVCVUdNRVNTQUdFTE9HUFJPQykoR0x1aW50LCBHTHNpemVpLCBH
TGVudW0gKiwgR0xlbnVtICosIEdMdWludCAqLCBHTGVudW0gKiwgR0xzaXplaSAqLCBHTGNoYXIg
Kik7CiB0eXBlZGVmIHZvaWQgKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEdFVEZSQU1FQlVG
RkVSUEFSQU1FVEVSSVZQUk9DKShHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CiB0eXBlZGVmIHZv
aWQgKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEdFVElOVEVSTkFMRk9STUFUSTY0VlBST0Mp
KEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMaW50NjQgKik7Cit0eXBlZGVmIHZv
aWQgKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEdFVFBPSU5URVJWUFJPQykoR0xlbnVtLCB2
b2lkICoqKTsKIHR5cGVkZWYgdm9pZCAoSU5URVJOQUxfR0xfQVBJRU5UUlkgKlBGTkdMR0VUT0JK
RUNUTEFCRUxQUk9DKShHTGVudW0sIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSAqLCBHTGNoYXIg
Kik7CiB0eXBlZGVmIHZvaWQgKElOVEVSTkFMX0dMX0FQSUVOVFJZICpQRk5HTEdFVE9CSkVDVFBU
UkxBQkVMUFJPQykoY29uc3Qgdm9pZCAqLCBHTHNpemVpLCBHTHNpemVpICosIEdMY2hhciAqKTsK
IHR5cGVkZWYgdm9pZCAoSU5URVJOQUxfR0xfQVBJRU5UUlkgKlBGTkdMR0VUUFJPR1JBTUlOVEVS
RkFDRUlWUFJPQykoR0x1aW50LCBHTGVudW0sIEdMZW51bSwgR0xpbnQgKik7CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlH
TFguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTA5IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8g
RGlzcGxheUdMWC5jcHA6IEdMWCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OkRpc3BsYXkKKworI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgiCisKKyNpbmNsdWRl
IDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvRGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKKyNpbmNsdWRlICJ0aGlyZF9w
YXJ0eS9saWJYTlZDdHJsL05WQ3RybC5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L2xpYlhOVkN0
cmwvTlZDdHJsTGliLmgiCisKK25hbWVzcGFjZSByeAoreworCitzdGF0aWMgaW50IElnbm9yZVgx
MUVycm9ycyhEaXNwbGF5ICosIFhFcnJvckV2ZW50ICopCit7CisgICAgcmV0dXJuIDA7Cit9CisK
K1N3YXBDb250cm9sRGF0YTo6U3dhcENvbnRyb2xEYXRhKCkKKyAgOiB0YXJnZXRTd2FwSW50ZXJ2
YWwoMCksCisgICAgbWF4U3dhcEludGVydmFsKC0xKSwKKyAgICBjdXJyZW50U3dhcEludGVydmFs
KC0xKQoreworfQorCitjbGFzcyBGdW5jdGlvbnNHTEdMWCA6IHB1YmxpYyBGdW5jdGlvbnNHTAor
eworICBwdWJsaWM6CisgICAgRnVuY3Rpb25zR0xHTFgoUEZOR0VUUFJPQ1BST0MgZ2V0UHJvYykK
KyAgICAgIDogbUdldFByb2MoZ2V0UHJvYykKKyAgICB7CisgICAgfQorCisgICAgfkZ1bmN0aW9u
c0dMR0xYKCkgb3ZlcnJpZGUge30KKworICBwcml2YXRlOgorICAgIHZvaWQgKmxvYWRQcm9jQWRk
cmVzcyhjb25zdCBzdGQ6OnN0cmluZyAmZnVuY3Rpb24pIG92ZXJyaWRlCisgICAgeworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obUdldFByb2MoZnVuY3Rpb24uY19zdHIo
KSkpOworICAgIH0KKworICAgIFBGTkdFVFBST0NQUk9DIG1HZXRQcm9jOworfTsKKworRGlzcGxh
eUdMWDo6RGlzcGxheUdMWCgpCisgICAgOiBEaXNwbGF5R0woKSwKKyAgICAgIG1GdW5jdGlvbnNH
TChudWxscHRyKSwKKyAgICAgIG1SZXF1ZXN0ZWRWaXN1YWwoLTEpLAorICAgICAgbUNvbnRleHRD
b25maWcobnVsbHB0ciksCisgICAgICBtQ29udGV4dChudWxscHRyKSwKKyAgICAgIG1EdW1teVBi
dWZmZXIoMCksCisgICAgICBtVXNlc05ld1hEaXNwbGF5KGZhbHNlKSwKKyAgICAgIG1Jc01lc2Eo
ZmFsc2UpLAorICAgICAgbUhhc011bHRpc2FtcGxlKGZhbHNlKSwKKyAgICAgIG1IYXNBUkJDcmVh
dGVDb250ZXh0KGZhbHNlKSwKKyAgICAgIG1IYXNBUkJDcmVhdGVDb250ZXh0UHJvZmlsZShmYWxz
ZSksCisgICAgICBtSGFzRVhUQ3JlYXRlQ29udGV4dEVTMlByb2ZpbGUoZmFsc2UpLAorICAgICAg
bVN3YXBDb250cm9sKFN3YXBDb250cm9sOjpBYnNlbnQpLAorICAgICAgbU1pblN3YXBJbnRlcnZh
bCgwKSwKKyAgICAgIG1NYXhTd2FwSW50ZXJ2YWwoMCksCisgICAgICBtQ3VycmVudFN3YXBJbnRl
cnZhbCgtMSksCisgICAgICBtWERpc3BsYXkobnVsbHB0ciksCisgICAgICBtRUdMRGlzcGxheShu
dWxscHRyKQoreworfQorCitEaXNwbGF5R0xYOjp+RGlzcGxheUdMWCgpCit7Cit9CisKK2VnbDo6
RXJyb3IgRGlzcGxheUdMWDo6aW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCit7Cisg
ICAgbUVHTERpc3BsYXkgPSBkaXNwbGF5OworICAgIG1YRGlzcGxheSAgICAgICAgICAgICA9IGRp
c3BsYXktPmdldE5hdGl2ZURpc3BsYXlJZCgpOworICAgIGNvbnN0IGF1dG8gJmF0dHJpYk1hcCA9
IGRpc3BsYXktPmdldEF0dHJpYnV0ZU1hcCgpOworCisgICAgLy8gQU5HTEVfcGxhdGZvcm1fYW5n
bGUgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBhIGRlZmF1bHQgZGlzcGxheQorICAgIC8vIHVzaW5n
IEVHTF9ERUZBVUxUX0RJU1BMQVkgKD0gbnVsbHB0cikuIEluIHRoaXMgY2FzZSBqdXN0IG9wZW4K
KyAgICAvLyB0aGUgZGlzcGxheSBzcGVjaWZpZWQgYnkgdGhlIERJU1BMQVkgZW52aXJvbm1lbnQg
dmFyaWFibGUuCisgICAgaWYgKG1YRGlzcGxheSA9PSBFR0xfREVGQVVMVF9ESVNQTEFZKQorICAg
IHsKKyAgICAgICAgbVVzZXNOZXdYRGlzcGxheSA9IHRydWU7CisgICAgICAgIG1YRGlzcGxheSA9
IFhPcGVuRGlzcGxheShOVUxMKTsKKyAgICAgICAgaWYgKCFtWERpc3BsYXkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3Vs
ZCBub3Qgb3BlbiB0aGUgZGVmYXVsdCBYIGRpc3BsYXkuIik7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBzdGQ6OnN0cmluZyBnbHhJbml0RXJyb3I7CisgICAgaWYgKCFtR0xYLmluaXRpYWxpemUo
bVhEaXNwbGF5LCBEZWZhdWx0U2NyZWVuKG1YRGlzcGxheSksICZnbHhJbml0RXJyb3IpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgZ2x4SW5p
dEVycm9yLmNfc3RyKCkpOworICAgIH0KKworICAgIG1IYXNNdWx0aXNhbXBsZSAgICAgID0gbUdM
WC5taW5vclZlcnNpb24gPiAzIHx8IG1HTFguaGFzRXh0ZW5zaW9uKCJHTFhfQVJCX211bHRpc2Ft
cGxlIik7CisgICAgbUhhc0FSQkNyZWF0ZUNvbnRleHQgPSBtR0xYLmhhc0V4dGVuc2lvbigiR0xY
X0FSQl9jcmVhdGVfY29udGV4dCIpOworICAgIG1IYXNBUkJDcmVhdGVDb250ZXh0UHJvZmlsZSAg
ICA9IG1HTFguaGFzRXh0ZW5zaW9uKCJHTFhfQVJCX2NyZWF0ZV9jb250ZXh0X3Byb2ZpbGUiKTsK
KyAgICBtSGFzRVhUQ3JlYXRlQ29udGV4dEVTMlByb2ZpbGUgPSBtR0xYLmhhc0V4dGVuc2lvbigi
R0xYX0VYVF9jcmVhdGVfY29udGV4dF9lczJfcHJvZmlsZSIpOworCisgICAgLy8gQ2hvb3NlIHRo
ZSBzd2FwX2NvbnRyb2wgZXh0ZW5zaW9uIHRvIHVzZSwgaWYgYW55LgorICAgIC8vIFRoZSBFWFQg
dmVyc2lvbiBpcyBiZXR0ZXIgYXMgaXQgYWxsb3dzIGdsWFN3YXBJbnRlcnZhbCB0byBiZSBjYWxs
ZWQgcGVyCisgICAgLy8gd2luZG93LCB3aGlsZSB3ZSdsbCBwb3RlbnRpYWxseSBuZWVkIHRvIGNo
YW5nZSB0aGUgc3dhcCBpbnRlcnZhbCBvbiBlYWNoCisgICAgLy8gc3dhcCBidWZmZXJzIHdoZW4g
dXNpbmcgdGhlIFNHSSBvciBNRVNBIHZlcnNpb25zLgorICAgIGlmIChtR0xYLmhhc0V4dGVuc2lv
bigiR0xYX0VYVF9zd2FwX2NvbnRyb2wiKSkKKyAgICB7CisgICAgICAgIG1Td2FwQ29udHJvbCA9
IFN3YXBDb250cm9sOjpFWFQ7CisKKyAgICAgICAgLy8gSW4gR0xYX0VYVF9zd2FwX2NvbnRyb2wg
cXVlcnlpbmcgdGhlc2UgaXMgZG9uZSBvbiBhIEdMWFdpbmRvdyBzbyB3ZSBqdXN0CisgICAgICAg
IC8vIHNldCBkZWZhdWx0IHZhbHVlcy4KKyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IDA7Cisg
ICAgICAgIG1NYXhTd2FwSW50ZXJ2YWwgPSA0OworICAgIH0KKyAgICBlbHNlIGlmIChtR0xYLmhh
c0V4dGVuc2lvbigiR0xYX01FU0Ffc3dhcF9jb250cm9sIikpCisgICAgeworICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIHRoZSBNZXNhIG9yIFNHSSBleHRlbnNpb24sIGFzc3VtZSB0aGF0IHlvdSBjYW4g
YXQgbGVhc3Qgc2V0CisgICAgICAgIC8vIGEgc3dhcCBpbnRlcnZhbCBvZiAwIG9yIDEuCisgICAg
ICAgIG1Td2FwQ29udHJvbCA9IFN3YXBDb250cm9sOjpNZXNhOworICAgICAgICBtTWluU3dhcElu
dGVydmFsID0gMDsKKyAgICAgICAgbU1pblN3YXBJbnRlcnZhbCA9IDE7CisgICAgfQorICAgIGVs
c2UgaWYgKG1HTFguaGFzRXh0ZW5zaW9uKCJHTFhfU0dJX3N3YXBfY29udHJvbCIpKQorICAgIHsK
KyAgICAgICAgbVN3YXBDb250cm9sID0gU3dhcENvbnRyb2w6OlNHSTsKKyAgICAgICAgbU1pblN3
YXBJbnRlcnZhbCA9IDA7CisgICAgICAgIG1NaW5Td2FwSW50ZXJ2YWwgPSAxOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBtU3dhcENvbnRyb2wgPSBTd2FwQ29udHJvbDo6QWJzZW50
OworICAgICAgICBtTWluU3dhcEludGVydmFsID0gMTsKKyAgICAgICAgbU1pblN3YXBJbnRlcnZh
bCA9IDE7CisgICAgfQorCisgICAgaWYgKGF0dHJpYk1hcC5jb250YWlucyhFR0xfWDExX1ZJU1VB
TF9JRF9BTkdMRSkpCisgICAgeworICAgICAgICBtUmVxdWVzdGVkVmlzdWFsID0gc3RhdGljX2Nh
c3Q8RUdMaW50PihhdHRyaWJNYXAuZ2V0KEVHTF9YMTFfVklTVUFMX0lEX0FOR0xFLCAtMSkpOwor
CisgICAgICAgIC8vIFRoZXJlIGlzIG5vIGRpcmVjdCB3YXkgdG8gZ2V0IHRoZSBHTFhGQkNvbmZp
ZyBtYXRjaGluZyBhbiBYMTEgdmlzdWFsIElECisgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8gaXRl
cmF0ZSBvdmVyIGFsbCB0aGUgR0xYRkJDb25maWdzIHRvIGZpbmQgdGhlIHJpZ2h0IG9uZS4KKyAg
ICAgICAgaW50IG5Db25maWdzOworICAgICAgICBpbnQgYXR0cmliTGlzdFtdID0geworICAgICAg
ICAgICAgTm9uZSwKKyAgICAgICAgfTsKKyAgICAgICAgZ2x4OjpGQkNvbmZpZyAqYWxsQ29uZmln
cyA9IG1HTFguY2hvb3NlRkJDb25maWcoYXR0cmliTGlzdCwgJm5Db25maWdzKTsKKworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG5Db25maWdzOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChnZXRHTFhGQkNvbmZpZ0F0dHJpYihhbGxDb25maWdzW2ldLCBHTFhfVklTVUFMX0lE
KSA9PSBtUmVxdWVzdGVkVmlzdWFsKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1D
b250ZXh0Q29uZmlnID0gYWxsQ29uZmlnc1tpXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBYRnJlZShhbGxDb25maWdzKTsKKworICAg
ICAgICBpZiAobUNvbnRleHRDb25maWcgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkludmFsaWQgdmlzdWFs
IElEIHJlcXVlc3RlZC4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICAvLyBXaGVuIGdsWE1ha2VDdXJyZW50IGlzIGNhbGxlZCwgdGhlIGNvbnRleHQgYW5kIHRo
ZSBzdXJmYWNlIG11c3QgYmUKKyAgICAgICAgLy8gY29tcGF0aWJsZSB3aGljaCBpbiBnbFgtc3Bl
YWsgbWVhbnMgdGhhdCB0aGVpciBjb25maWcgaGF2ZSB0aGUgc2FtZQorICAgICAgICAvLyBjb2xv
ciBidWZmZXIgdHlwZSwgYXJlIGJvdGggUkdCQSBvciBDb2xvckluZGV4LCBhbmQgdGhlaXIgYnVm
ZmVycyBoYXZlCisgICAgICAgIC8vIHRoZSBzYW1lIGRlcHRoLCBpZiB0aGV5IGV4aXN0LgorICAg
ICAgICAvLyBTaW5jZSBvdXIgd2hvbGUgRUdMIGltcGxlbWVudGF0aW9uIGlzIGJhY2tlZCBieSBv
bmx5IG9uZSBHTCBjb250ZXh0LCB0aGlzCisgICAgICAgIC8vIGNvbnRleHQgbXVzdCBiZSBjb21w
YXRpYmxlIHdpdGggYWxsIHRoZSBHTFhGQkNvbmZpZyBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAg
ICAgICAvLyBFR0xjb25maWdzIHRoYXQgd2Ugd2lsbCBiZSBleHBvc2luZy4KKyAgICAgICAgaW50
IG5Db25maWdzOworICAgICAgICBpbnQgYXR0cmliTGlzdFtdID0KKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gV2Ugd2FudCBSR0JBOCBhbmQgREVQVEgyNF9TVEVOQ0lMOAorICAgICAgICAgICAg
R0xYX1JFRF9TSVpFLCA4LAorICAgICAgICAgICAgR0xYX0dSRUVOX1NJWkUsIDgsCisgICAgICAg
ICAgICBHTFhfQkxVRV9TSVpFLCA4LAorICAgICAgICAgICAgR0xYX0FMUEhBX1NJWkUsIDgsCisg
ICAgICAgICAgICBHTFhfREVQVEhfU0laRSwgMjQsCisgICAgICAgICAgICBHTFhfU1RFTkNJTF9T
SVpFLCA4LAorICAgICAgICAgICAgLy8gV2Ugd2FudCBSR0JBIHJlbmRlcmluZyAodnMgQ09MT1Jf
SU5ERVgpIGFuZCBkb3VibGVidWZmZXIKKyAgICAgICAgICAgIEdMWF9SRU5ERVJfVFlQRSwgR0xY
X1JHQkFfQklULAorICAgICAgICAgICAgLy8gRG91YmxlIGJ1ZmZlciBpcyBub3Qgc3RyaWN0bHkg
cmVxdWlyZWQgYXMgYSBub24tZG91YmxlYnVmZmVyCisgICAgICAgICAgICAvLyBjb250ZXh0IGNh
biB3b3JrIHdpdGggYSBkb3VibGVidWZmZXJlZCBzdXJmYWNlLCBidXQgaXQgc3RpbGwKKyAgICAg
ICAgICAgIC8vIGZsaWNrZXJzIGFuZCBhbGwgYXBwbGljYXRpb25zIHdhbnQgZG91YmxlYnVmZmVy
IGFueXdheS4KKyAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsIFRydWUsCisgICAgICAgICAg
ICAvLyBBbGwgb2YgdGhlc2UgbXVzdCBiZSBzdXBwb3J0ZWQgZm9yIGZ1bGwgRUdMIHN1cHBvcnQK
KyAgICAgICAgICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCB8IEdMWF9QQlVG
RkVSX0JJVCB8IEdMWF9QSVhNQVBfQklULAorICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyBzdXJl
IHRoZSBjb25maWcgaGF2ZSBhbiBhc3NvY2lhdGVkIHZpc3VhbCBJZAorICAgICAgICAgICAgR0xY
X1hfUkVOREVSQUJMRSwgVHJ1ZSwKKyAgICAgICAgICAgIEdMWF9DT05GSUdfQ0FWRUFULCBHTFhf
Tk9ORSwKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgfTsKKyAgICAgICAgZ2x4OjpGQkNvbmZp
ZyAqY2FuZGlkYXRlcyA9IG1HTFguY2hvb3NlRkJDb25maWcoYXR0cmliTGlzdCwgJm5Db25maWdz
KTsKKyAgICAgICAgaWYgKG5Db25maWdzID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIFhG
cmVlKGNhbmRpZGF0ZXMpOworICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9J
TklUSUFMSVpFRCwgIkNvdWxkIG5vdCBmaW5kIGEgZGVjZW50IEdMWCBGQkNvbmZpZyB0byBjcmVh
dGUgdGhlIGNvbnRleHQuIik7CisgICAgICAgIH0KKyAgICAgICAgbUNvbnRleHRDb25maWcgPSBj
YW5kaWRhdGVzWzBdOworICAgICAgICBYRnJlZShjYW5kaWRhdGVzKTsKKyAgICB9CisKKyAgICBj
b25zdCBhdXRvICZlZ2xBdHRyaWJ1dGVzID0gZGlzcGxheS0+Z2V0QXR0cmlidXRlTWFwKCk7Cisg
ICAgaWYgKG1IYXNBUkJDcmVhdGVDb250ZXh0KQorICAgIHsKKyAgICAgICAgZWdsOjpFcnJvciBl
cnJvciA9IGluaXRpYWxpemVDb250ZXh0KG1Db250ZXh0Q29uZmlnLCBlZ2xBdHRyaWJ1dGVzLCAm
bUNvbnRleHQpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgaWYgKGVnbEF0dHJpYnV0ZXMuZ2V0KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FO
R0xFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfREVGQVVMVF9BTkdMRSkgPT0KKyAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTEVTX0FOR0xFKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfTk9UX0lOSVRJQUxJWkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNh
bm5vdCBjcmVhdGUgYW4gT3BlbkdMIEVTIHBsYXRmb3JtIG9uIEdMWCB3aXRob3V0IHRoZSAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xYX0FSQl9jcmVhdGVfY29udGV4dCBleHRl
bnNpb24uIik7CisgICAgICAgIH0KKworICAgICAgICBYVmlzdWFsSW5mbyB2aXN1YWxUZW1wbGF0
ZTsKKyAgICAgICAgdmlzdWFsVGVtcGxhdGUudmlzdWFsaWQgPSBnZXRHTFhGQkNvbmZpZ0F0dHJp
YihtQ29udGV4dENvbmZpZywgR0xYX1ZJU1VBTF9JRCk7CisKKyAgICAgICAgaW50IG51bVZpc3Vh
bHMgICAgICAgPSAwOworICAgICAgICBYVmlzdWFsSW5mbyAqdmlzdWFscyA9CisgICAgICAgICAg
ICBYR2V0VmlzdWFsSW5mbyhtWERpc3BsYXksIFZpc3VhbElETWFzaywgJnZpc3VhbFRlbXBsYXRl
LCAmbnVtVmlzdWFscyk7CisgICAgICAgIGlmIChudW1WaXN1YWxzIDw9IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGdldCB0aGUgdmlzdWFsIGluZm8g
ZnJvbSB0aGUgZmIgY29uZmlnIik7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG51bVZpc3Vh
bHMgPT0gMSk7CisKKyAgICAgICAgbUNvbnRleHQgPSBtR0xYLmNyZWF0ZUNvbnRleHQoJnZpc3Vh
bHNbMF0sIG51bGxwdHIsIHRydWUpOworICAgICAgICBYRnJlZSh2aXN1YWxzKTsKKworICAgICAg
ICBpZiAoIW1Db250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IGNyZWF0ZSBHTCBjb250ZXh0LiIpOwor
ICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChtQ29udGV4dCk7CisKKyAgICAvLyBGdW5jdGlv
bnNHTCBhbmQgRGlzcGxheUdMIG5lZWQgdG8gbWFrZSBhIGZldyBHTCBjYWxscywgZm9yIGV4YW1w
bGUgdG8KKyAgICAvLyBxdWVyeSB0aGUgdmVyc2lvbiBvZiB0aGUgY29udGV4dCBzbyB3ZSBuZWVk
IHRvIG1ha2UgdGhlIGNvbnRleHQgY3VycmVudC4KKyAgICAvLyBnbFhNYWtlQ3VycmVudCByZXF1
aXJlcyBhIEdMWERyYXdhYmxlIHNvIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBQYnVmZmVyCisgICAg
Ly8gKG9mIHNpemUgMSwgMSkgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGVzZSBjYWxscy4KKyAgICAv
LyBJZGVhbGx5IHdlIHdvdWxkIHdhbnQgdG8gdW5zZXQgdGhlIGN1cnJlbnQgY29udGV4dCBhbmQg
ZGVzdHJveSB0aGUgcGJ1ZmZlcgorICAgIC8vIGJlZm9yZSBnb2luZyBiYWNrIHRvIHRoZSBhcHBs
aWNhdGlvbiBidXQgdGhpcyBpcyBUT0RPCisgICAgLy8gV2UgY291bGQgdXNlIGEgcGJ1ZmZlciBv
ZiBzaXplICgwLCAwKSBidXQgaXQgZmFpbHMgb24gdGhlIEludGVsIE1lc2EgZHJpdmVyCisgICAg
Ly8gYXMgY29tbWVudGVkIG9uIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4ODY5IHNvIHdlCisgICAgLy8gdXNlICgxLCAxKSBpbnN0ZWFkLgorCisgICAgaW50
IGR1bW15UGJ1ZmZlckF0dHJpYnNbXSA9CisgICAgeworICAgICAgICBHTFhfUEJVRkZFUl9XSURU
SCwgMSwKKyAgICAgICAgR0xYX1BCVUZGRVJfSEVJR0hULCAxLAorICAgICAgICBOb25lLAorICAg
IH07CisgICAgbUR1bW15UGJ1ZmZlciA9IG1HTFguY3JlYXRlUGJ1ZmZlcihtQ29udGV4dENvbmZp
ZywgZHVtbXlQYnVmZmVyQXR0cmlicyk7CisgICAgaWYgKCFtRHVtbXlQYnVmZmVyKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkNvdWxkIG5v
dCBjcmVhdGUgdGhlIGR1bW15IHBidWZmZXIuIik7CisgICAgfQorCisgICAgaWYgKCFtR0xYLm1h
a2VDdXJyZW50KG1EdW1teVBidWZmZXIsIG1Db250ZXh0KSkKKyAgICB7CisgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3VsZCBub3QgbWFrZSB0aGUgZHVt
bXkgcGJ1ZmZlciBjdXJyZW50LiIpOworICAgIH0KKworICAgIG1GdW5jdGlvbnNHTCA9IG5ldyBG
dW5jdGlvbnNHTEdMWChtR0xYLmdldFByb2MpOworICAgIG1GdW5jdGlvbnNHTC0+aW5pdGlhbGl6
ZSgpOworCisgICAgLy8gVE9ETyhjd2FsbGV6LCBhbmdsZXByb2plY3Q6MTMwMykgRGlzYWJsZSB0
aGUgT3BlbkdMIEVTIGJhY2tlbmQgb24gTGludXggTlZJRElBIGFuZCBJbnRlbCBhcworICAgIC8v
IGl0IGhhcyBwcm9ibGVtcyBvbiBvdXIgYXV0b21hdGVkIHRlc3RpbmcuIEFuIE9wZW5HTCBFUyBi
YWNrZW5kIG1pZ2h0IG5vdCB0cmlnZ2VyIHRoaXMgdGVzdCBpZgorICAgIC8vIHRoZXJlIGlzIG5v
IERlc2t0b3AgT3BlbkdMIHN1cHBvcnQsIGJ1dCB0aGF0J3Mgbm90IHRoZSBjYXNlIGluIG91ciBh
dXRvbWF0ZWQgdGVzdGluZy4KKyAgICBWZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVu
Y3Rpb25zR0wpOworICAgIGJvb2wgaXNPcGVuR0xFUyA9CisgICAgICAgIGVnbEF0dHJpYnV0ZXMu
Z2V0KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9ERUZBVUxUX0FOR0xFKSA9PQorICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xFU19BTkdMRTsKKyAgICBpZiAoaXNPcGVuR0xFUyAmJiAodmVuZG9yID09IFZFTkRPUl9JRF9J
TlRFTCB8fCB2ZW5kb3IgPT0gVkVORE9SX0lEX05WSURJQSkpCisgICAgeworICAgICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiSW50ZWwgb3IgTlZJRElBIE9wZW5H
TCBFUyBkcml2ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIpOworICAgIH0KKworICAgIHN5bmNYQ29t
bWFuZHMoKTsKKworICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nID0KKyAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obUZ1bmN0aW9uc0dMLT5nZXRTdHJpbmcoR0xfUkVO
REVSRVIpKTsKKyAgICBtSXNNZXNhID0gcmVuZGVyZXJTdHJpbmcuZmluZCgiTWVzYSIpICE9IHN0
ZDo6c3RyaW5nOjpucG9zOworCisgICAgc3RkOjpzdHJpbmcgdmVyc2lvbjsKKyAgICBnZXREcml2
ZXJWZXJzaW9uKCZ2ZXJzaW9uKTsKKworICAgIHJldHVybiBEaXNwbGF5R0w6OmluaXRpYWxpemUo
ZGlzcGxheSk7Cit9CisKK3ZvaWQgRGlzcGxheUdMWDo6dGVybWluYXRlKCkKK3sKKyAgICBEaXNw
bGF5R0w6OnRlcm1pbmF0ZSgpOworCisgICAgaWYgKG1EdW1teVBidWZmZXIpCisgICAgeworICAg
ICAgICBtR0xYLmRlc3Ryb3lQYnVmZmVyKG1EdW1teVBidWZmZXIpOworICAgICAgICBtRHVtbXlQ
YnVmZmVyID0gMDsKKyAgICB9CisKKyAgICBpZiAobUNvbnRleHQpCisgICAgeworICAgICAgICBt
R0xYLmRlc3Ryb3lDb250ZXh0KG1Db250ZXh0KTsKKyAgICAgICAgbUNvbnRleHQgPSBudWxscHRy
OworICAgIH0KKworICAgIG1HTFgudGVybWluYXRlKCk7CisKKyAgICBTYWZlRGVsZXRlKG1GdW5j
dGlvbnNHTCk7Cit9CisKK1N1cmZhY2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVXaW5kb3dTdXJm
YWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICBBU1NFUlQoY29uZmlnSWRUb0dMWENvbmZpZy5j
b3VudChjb25maWd1cmF0aW9uLT5jb25maWdJRCkgPiAwKTsKKyAgICBnbHg6OkZCQ29uZmlnIGZi
Q29uZmlnID0gY29uZmlnSWRUb0dMWENvbmZpZ1tjb25maWd1cmF0aW9uLT5jb25maWdJRF07CisK
KyAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VHTFgobUdMWCwgdGhpcywgdGhpcy0+Z2V0UmVu
ZGVyZXIoKSwgd2luZG93LCBtR0xYLmdldERpc3BsYXkoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbUNvbnRleHQsIGZiQ29uZmlnKTsKK30KKworU3VyZmFjZUltcGwgKkRpc3Bs
YXlHTFg6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIEFTU0VSVChjb25maWdJZFRvR0xY
Q29uZmlnLmNvdW50KGNvbmZpZ3VyYXRpb24tPmNvbmZpZ0lEKSA+IDApOworICAgIGdseDo6RkJD
b25maWcgZmJDb25maWcgPSBjb25maWdJZFRvR0xYQ29uZmlnW2NvbmZpZ3VyYXRpb24tPmNvbmZp
Z0lEXTsKKworICAgIEVHTGludCB3aWR0aCAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMu
Z2V0KEVHTF9XSURUSCwgMCkpOworICAgIEVHTGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxFR0xp
bnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQsIDApKTsKKyAgICBib29sIGxhcmdlc3QgPSAoYXR0
cmlicy5nZXQoRUdMX0xBUkdFU1RfUEJVRkZFUiwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7CisK
KyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlR0xYKHRoaXMtPmdldFJlbmRlcmVyKCksIHdp
ZHRoLCBoZWlnaHQsIGxhcmdlc3QsIG1HTFgsIG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmJDb25maWcpOworfQorCitTdXJmYWNlSW1wbCogRGlzcGxheUdMWDo6
Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
K30KKworU3VyZmFjZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5R0xYOjpnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRl
dmljZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X0JBRF9ESVNQTEFZKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5R0xYOjppbml0aWFsaXplQ29u
dGV4dChnbHg6OkZCQ29uZmlnIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmVnbEF0dHJpYnV0ZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29udGV4dCAqY29udGV4
dCkKK3sKKyAgICBpbnQgcHJvZmlsZU1hc2sgPSAwOworCisgICAgRUdMaW50IHJlcXVlc3RlZERp
c3BsYXlUeXBlID0gc3RhdGljX2Nhc3Q8RUdMaW50PigKKyAgICAgICAgZWdsQXR0cmlidXRlcy5n
ZXQoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0RFRkFVTFRfQU5HTEUpKTsKKyAgICBpZiAocmVxdWVzdGVkRGlzcGxheVR5cGUgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCisgICAgeworICAgICAgICBpZiAoIW1I
YXNFWFRDcmVhdGVDb250ZXh0RVMyUHJvZmlsZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDYW5ub3QgY3JlYXRlIGFuIE9wZW5HTCBFUyBwbGF0Zm9ybSBvbiBHTFggd2l0
aG91dCB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMWF9FWFRfY3JlYXRl
X2NvbnRleHRfZXNfcHJvZmlsZSBleHRlbnNpb24uIik7CisgICAgICAgIH0KKworICAgICAgICBB
U1NFUlQobUhhc0FSQkNyZWF0ZUNvbnRleHRQcm9maWxlKTsKKyAgICAgICAgcHJvZmlsZU1hc2sg
fD0gR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVDsKKyAgICB9CisKKyAgICAvLyBDcmVh
dGUgYSBjb250ZXh0IG9mIHRoZSByZXF1ZXN0ZWQgdmVyc2lvbiwgaWYgYW55LgorICAgIGdsOjpW
ZXJzaW9uIHJlcXVlc3RlZFZlcnNpb24oc3RhdGljX2Nhc3Q8RUdMaW50PihlZ2xBdHRyaWJ1dGVz
LmdldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1f
QU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUsIEVHTF9ET05UX0NBUkUpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVHTGludD4oZWdsQXR0cmlidXRl
cy5nZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFLCBFR0xfRE9OVF9DQVJFKSkpOworICAgIGlm
IChzdGF0aWNfY2FzdDxFR0xpbnQ+KHJlcXVlc3RlZFZlcnNpb24ubWFqb3IpICE9IEVHTF9ET05U
X0NBUkUgJiYKKyAgICAgICAgc3RhdGljX2Nhc3Q8RUdMaW50PihyZXF1ZXN0ZWRWZXJzaW9uLm1p
bm9yKSAhPSBFR0xfRE9OVF9DQVJFKQorICAgIHsKKyAgICAgICAgaWYgKCEocHJvZmlsZU1hc2sg
JiBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhUKSAmJgorICAgICAgICAgICAgcmVxdWVz
dGVkVmVyc2lvbiA+PSBnbDo6VmVyc2lvbigzLCAyKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cHJvZmlsZU1hc2sgfD0gR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVF9BUkI7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbnRleHRBdHRyaWJzKGNvbmZpZywgcmVxdWVzdGVk
VmVyc2lvbiwgcHJvZmlsZU1hc2ssIGNvbnRleHQpOworICAgIH0KKworICAgIC8vIEl0IGlzIGNv
bW1vbmx5IGFzc3VtZWQgdGhhdCBnbFhDcmVhdGVDb250ZXh0QXR0cmliIHdpbGwgY3JlYXRlIGEg
Y29udGV4dAorICAgIC8vIG9mIHRoZSBoaWdoZXN0IHZlcnNpb24gcG9zc2libGUgYnV0IGl0IGlz
IG5vdCBzcGVjaWZpZWQgaW4gdGhlIHNwZWMgYW5kCisgICAgLy8gaXMgbm90IHRydWUgb24gdGhl
IE1lc2EgZHJpdmVycy4gSW5zdGVhZCB3ZSB0cnkgdG8gY3JlYXRlIGEgY29udGV4dCBwZXIKKyAg
ICAvLyBHTCB2ZXJzaW9uIHVudGlsIHdlIHN1Y2NlZWQsIHN0YXJ0aW5nIGZyb20gbmV3ZXIgdmVy
c2lvbi4gV2hlbiB0aGUgZGVmYXVsdAorICAgIC8vIHBsYXRmb3JtIGlzIHNlbGVjdGVkLCBpZiBu
byBkZXNrdG9wIGNvbnRleHQgY2FuIGJlIGNyZWF0ZWQsIHdlIGZhbGxiYWNrIHRvCisgICAgLy8g
YW4gRVMgY29udGV4dC4KKyAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisgICAgY29uc3QgZ2w6OlZl
cnNpb24gZGVza3RvcFZlcnNpb25zRnJvbTNfMltdID0geworICAgICAgICBnbDo6VmVyc2lvbig0
LCA1KSwKKyAgICAgICAgZ2w6OlZlcnNpb24oNCwgNCksCisgICAgICAgIGdsOjpWZXJzaW9uKDQs
IDMpLAorICAgICAgICBnbDo6VmVyc2lvbig0LCAyKSwKKyAgICAgICAgZ2w6OlZlcnNpb24oNCwg
MSksCisgICAgICAgIGdsOjpWZXJzaW9uKDQsIDApLAorICAgICAgICBnbDo6VmVyc2lvbigzLCAz
KSwKKyAgICAgICAgZ2w6OlZlcnNpb24oMywgMiksCisgICAgfTsKKyAgICBjb25zdCBnbDo6VmVy
c2lvbiBkZXNrdG9wVmVyc2lvbnNQcmUzXzJbXSA9IHsKKyAgICAgICAgZ2w6OlZlcnNpb24oMywg
MSksCisgICAgICAgIGdsOjpWZXJzaW9uKDMsIDApLAorICAgICAgICBnbDo6VmVyc2lvbigyLCAw
KSwKKyAgICAgICAgZ2w6OlZlcnNpb24oMSwgNSksCisgICAgICAgIGdsOjpWZXJzaW9uKDEsIDQp
LAorICAgICAgICBnbDo6VmVyc2lvbigxLCAzKSwKKyAgICAgICAgZ2w6OlZlcnNpb24oMSwgMiks
CisgICAgICAgIGdsOjpWZXJzaW9uKDEsIDEpLAorICAgICAgICBnbDo6VmVyc2lvbigxLCAwKSwK
KyAgICB9OworICAgIGNvbnN0IGdsOjpWZXJzaW9uIGVzVmVyc2lvbnNGcm9tMl8wW10gPSB7Cisg
ICAgICAgIGdsOjpWZXJzaW9uKDMsIDIpLAorICAgICAgICBnbDo6VmVyc2lvbigzLCAxKSwKKyAg
ICAgICAgZ2w6OlZlcnNpb24oMywgMCksCisgICAgICAgIGdsOjpWZXJzaW9uKDIsIDApLAorICAg
IH07CisgICAgLy8gY2xhbmctZm9ybWF0IG9uCisKKyAgICAvLyBOT1RFOiBiZWxvdyB3ZSByZXR1
cm4gYXMgc29vbiBhcyB3ZSdyZSBhYmxlIHRvIGNyZWF0ZSBhIGNvbnRleHQgc28gdGhlCisgICAg
Ly8gImVycm9yIiB2YXJpYWJsZSBpcyBFR0xfU1VDQ0VTUyB3aGVuIHJldHVybmVkIGNvbnRyYXJ5
IHRvIHRoZSBjb21tb24gaWRpb20KKyAgICAvLyBvZiByZXR1cm5pbmcgImVycm9yIiB3aGVuIHRo
ZXJlIGlzIGFuIGFjdHVhbCBlcnJvci4KKyAgICBpZiAocmVxdWVzdGVkRGlzcGxheVR5cGUgIT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCisgICAgeworICAgICAgICBm
b3IgKGF1dG8gJnZlcnNpb24gOiBkZXNrdG9wVmVyc2lvbnNGcm9tM18yKQorICAgICAgICB7Cisg
ICAgICAgICAgICBlZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgICAgICAgICBjcmVhdGVDb250
ZXh0QXR0cmlicyhjb25maWcsIHZlcnNpb24sIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRf
QVJCLCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmICghZXJyb3IuaXNFcnJvcigpKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBmb3IgKGF1dG8gJnZlcnNpb24gOiBkZXNrdG9wVmVyc2lvbnNQcmUz
XzIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBjcmVhdGVDb250
ZXh0QXR0cmlicyhjb25maWcsIHZlcnNpb24sIDAsIGNvbnRleHQpOworICAgICAgICAgICAgaWYg
KCFlcnJvci5pc0Vycm9yKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJlcXVl
c3RlZERpc3BsYXlUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkK
KyAgICB7CisgICAgICAgIGZvciAoYXV0byAmdmVyc2lvbiA6IGVzVmVyc2lvbnNGcm9tMl8wKQor
ICAgICAgICB7CisgICAgICAgICAgICBlZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgICAgICAg
ICBjcmVhdGVDb250ZXh0QXR0cmlicyhjb25maWcsIHZlcnNpb24sIEdMWF9DT05URVhUX0VTMl9Q
Uk9GSUxFX0JJVF9FWFQsIGNvbnRleHQpOworICAgICAgICAgICAgaWYgKCFlcnJvci5pc0Vycm9y
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05P
VF9JTklUSUFMSVpFRCwgIkNvdWxkIG5vdCBjcmVhdGUgYSBiYWNraW5nIE9wZW5HTCBjb250ZXh0
LiIpOworfQorCitlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5R0xYOjpnZW5lcmF0ZUNvbmZpZ3MoKSBj
b25zdAoreworICAgIGVnbDo6Q29uZmlnU2V0IGNvbmZpZ3M7CisgICAgY29uZmlnSWRUb0dMWENv
bmZpZy5jbGVhcigpOworCisgICAgY29uc3QgZ2w6OlZlcnNpb24gJm1heFZlcnNpb24gPSBnZXRN
YXhTdXBwb3J0ZWRFU1ZlcnNpb24oKTsKKyAgICBBU1NFUlQobWF4VmVyc2lvbiA+PSBnbDo6VmVy
c2lvbigyLCAwKSk7CisgICAgYm9vbCBzdXBwb3J0c0VTMyA9IG1heFZlcnNpb24gPj0gZ2w6OlZl
cnNpb24oMywgMCk7CisKKyAgICBpbnQgY29udGV4dFJlZFNpemUgICA9IGdldEdMWEZCQ29uZmln
QXR0cmliKG1Db250ZXh0Q29uZmlnLCBHTFhfUkVEX1NJWkUpOworICAgIGludCBjb250ZXh0R3Jl
ZW5TaXplID0gZ2V0R0xYRkJDb25maWdBdHRyaWIobUNvbnRleHRDb25maWcsIEdMWF9HUkVFTl9T
SVpFKTsKKyAgICBpbnQgY29udGV4dEJsdWVTaXplICA9IGdldEdMWEZCQ29uZmlnQXR0cmliKG1D
b250ZXh0Q29uZmlnLCBHTFhfQkxVRV9TSVpFKTsKKyAgICBpbnQgY29udGV4dEFscGhhU2l6ZSA9
IGdldEdMWEZCQ29uZmlnQXR0cmliKG1Db250ZXh0Q29uZmlnLCBHTFhfQUxQSEFfU0laRSk7CisK
KyAgICBpbnQgY29udGV4dERlcHRoU2l6ZSAgID0gZ2V0R0xYRkJDb25maWdBdHRyaWIobUNvbnRl
eHRDb25maWcsIEdMWF9ERVBUSF9TSVpFKTsKKyAgICBpbnQgY29udGV4dFN0ZW5jaWxTaXplID0g
Z2V0R0xYRkJDb25maWdBdHRyaWIobUNvbnRleHRDb25maWcsIEdMWF9TVEVOQ0lMX1NJWkUpOwor
CisgICAgaW50IGNvbnRleHRTYW1wbGVzID0gbUhhc011bHRpc2FtcGxlID8gZ2V0R0xYRkJDb25m
aWdBdHRyaWIobUNvbnRleHRDb25maWcsIEdMWF9TQU1QTEVTKSA6IDA7CisgICAgaW50IGNvbnRl
eHRTYW1wbGVCdWZmZXJzID0KKyAgICAgICAgbUhhc011bHRpc2FtcGxlID8gZ2V0R0xYRkJDb25m
aWdBdHRyaWIobUNvbnRleHRDb25maWcsIEdMWF9TQU1QTEVfQlVGRkVSUykgOiAwOworCisgICAg
aW50IGNvbnRleHRBY2N1bVJlZFNpemUgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihtQ29udGV4dENv
bmZpZywgR0xYX0FDQ1VNX1JFRF9TSVpFKTsKKyAgICBpbnQgY29udGV4dEFjY3VtR3JlZW5TaXpl
ID0gZ2V0R0xYRkJDb25maWdBdHRyaWIobUNvbnRleHRDb25maWcsIEdMWF9BQ0NVTV9HUkVFTl9T
SVpFKTsKKyAgICBpbnQgY29udGV4dEFjY3VtQmx1ZVNpemUgPSBnZXRHTFhGQkNvbmZpZ0F0dHJp
YihtQ29udGV4dENvbmZpZywgR0xYX0FDQ1VNX0JMVUVfU0laRSk7CisgICAgaW50IGNvbnRleHRB
Y2N1bUFscGhhU2l6ZSA9IGdldEdMWEZCQ29uZmlnQXR0cmliKG1Db250ZXh0Q29uZmlnLCBHTFhf
QUNDVU1fQUxQSEFfU0laRSk7CisKKyAgICBpbnQgYXR0cmliTGlzdFtdID0KKyAgICB7CisgICAg
ICAgIEdMWF9SRU5ERVJfVFlQRSwgR0xYX1JHQkFfQklULAorICAgICAgICBHTFhfWF9SRU5ERVJB
QkxFLCBUcnVlLAorICAgICAgICBHTFhfRE9VQkxFQlVGRkVSLCBUcnVlLAorICAgICAgICBOb25l
LAorICAgIH07CisKKyAgICBpbnQgZ2x4Q29uZmlnQ291bnQ7CisgICAgZ2x4OjpGQkNvbmZpZyAq
Z2x4Q29uZmlncyA9IG1HTFguY2hvb3NlRkJDb25maWcoYXR0cmliTGlzdCwgJmdseENvbmZpZ0Nv
dW50KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2x4Q29uZmlnQ291bnQ7IGkrKykKKyAg
ICB7CisgICAgICAgIGdseDo6RkJDb25maWcgZ2x4Q29uZmlnID0gZ2x4Q29uZmlnc1tpXTsKKyAg
ICAgICAgZWdsOjpDb25maWcgY29uZmlnOworCisgICAgICAgIC8vIE5hdGl2ZSBzdHVmZgorICAg
ICAgICBjb25maWcubmF0aXZlVmlzdWFsSUQgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25m
aWcsIEdMWF9WSVNVQUxfSUQpOworICAgICAgICBjb25maWcubmF0aXZlVmlzdWFsVHlwZSA9IGdl
dEdMWEZCQ29uZmlnQXR0cmliKGdseENvbmZpZywgR0xYX1hfVklTVUFMX1RZUEUpOworICAgICAg
ICBjb25maWcubmF0aXZlUmVuZGVyYWJsZSA9IEVHTF9UUlVFOworCisgICAgICAgIC8vIFdoZW4g
YSB2aXN1YWwgSUQgaGFzIGJlZW4gc3BlY2lmaWVkIHdpdGggRUdMX0FOR0xFX3gxMV92aXN1YWwg
d2Ugc2hvdWxkCisgICAgICAgIC8vIG9ubHkgcmV0dXJuIGNvbmZpZ3Mgd2l0aCB0aGlzIHZpc3Vh
bDogaXQgd2lsbCBtYXhpbWl6ZSBwZXJmb3JtYW5jZSBieSBhdm9pZAorICAgICAgICAvLyBibGl0
cyBpbiB0aGUgZHJpdmVyIHdoZW4gc2hvd2luZyB0aGUgd2luZG93IG9uIHRoZSBzY3JlZW4uCisg
ICAgICAgIGlmIChtUmVxdWVzdGVkVmlzdWFsICE9IC0xICYmIGNvbmZpZy5uYXRpdmVWaXN1YWxJ
RCAhPSBtUmVxdWVzdGVkVmlzdWFsKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIEJ1ZmZlciBzaXplcworICAgICAgICBjb25maWcucmVk
U2l6ZSA9IGdldEdMWEZCQ29uZmlnQXR0cmliKGdseENvbmZpZywgR0xYX1JFRF9TSVpFKTsKKyAg
ICAgICAgY29uZmlnLmdyZWVuU2l6ZSA9IGdldEdMWEZCQ29uZmlnQXR0cmliKGdseENvbmZpZywg
R0xYX0dSRUVOX1NJWkUpOworICAgICAgICBjb25maWcuYmx1ZVNpemUgPSBnZXRHTFhGQkNvbmZp
Z0F0dHJpYihnbHhDb25maWcsIEdMWF9CTFVFX1NJWkUpOworICAgICAgICBjb25maWcuYWxwaGFT
aXplID0gZ2V0R0xYRkJDb25maWdBdHRyaWIoZ2x4Q29uZmlnLCBHTFhfQUxQSEFfU0laRSk7Cisg
ICAgICAgIGNvbmZpZy5kZXB0aFNpemUgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25maWcs
IEdMWF9ERVBUSF9TSVpFKTsKKyAgICAgICAgY29uZmlnLnN0ZW5jaWxTaXplID0gZ2V0R0xYRkJD
b25maWdBdHRyaWIoZ2x4Q29uZmlnLCBHTFhfU1RFTkNJTF9TSVpFKTsKKworICAgICAgICAvLyBX
ZSByZXF1aXJlIFJHQkE4IGFuZCB0aGUgRDI0UzggKG9yIG5vIERTIGJ1ZmZlcikKKyAgICAgICAg
aWYgKGNvbmZpZy5yZWRTaXplICE9IGNvbnRleHRSZWRTaXplIHx8IGNvbmZpZy5ncmVlblNpemUg
IT0gY29udGV4dEdyZWVuU2l6ZSB8fAorICAgICAgICAgICAgY29uZmlnLmJsdWVTaXplICE9IGNv
bnRleHRCbHVlU2l6ZSB8fCBjb25maWcuYWxwaGFTaXplICE9IGNvbnRleHRBbHBoYVNpemUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8vIFRo
ZSBHTFggc3BlYyBzYXlzIHRoYXQgaXQgaXMgb2sgZm9yIGEgd2hvbGUgYnVmZmVyIHRvIG5vdCBi
ZSBwcmVzZW50CisgICAgICAgIC8vIGhvd2V2ZXIgdGhlIE1lc2EgSW50ZWwgZHJpdmVyIChhbmQg
cHJvYmFibHkgb24gb3RoZXIgTWVzYSBkcml2ZXJzKQorICAgICAgICAvLyBmYWlscyB0byBtYWtl
IGN1cnJlbnQgd2hlbiB0aGUgRGVwdGggc3RlbmNpbCBkb2Vzbid0IGV4YWN0bHkgbWF0Y2ggdGhl
CisgICAgICAgIC8vIGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGJvb2wgaGFzU2FtZURlcHRoU3Rl
bmNpbCA9CisgICAgICAgICAgICBjb25maWcuZGVwdGhTaXplID09IGNvbnRleHREZXB0aFNpemUg
JiYgY29uZmlnLnN0ZW5jaWxTaXplID09IGNvbnRleHRTdGVuY2lsU2l6ZTsKKyAgICAgICAgYm9v
bCBoYXNOb0RlcHRoU3RlbmNpbCA9IGNvbmZpZy5kZXB0aFNpemUgPT0gMCAmJiBjb25maWcuc3Rl
bmNpbFNpemUgPT0gMDsKKyAgICAgICAgaWYgKCFoYXNTYW1lRGVwdGhTdGVuY2lsICYmIChtSXNN
ZXNhIHx8ICFoYXNOb0RlcHRoU3RlbmNpbCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgY29uZmlnLmNvbG9yQnVmZmVyVHlwZSA9IEVHTF9S
R0JfQlVGRkVSOworICAgICAgICBjb25maWcubHVtaW5hbmNlU2l6ZSA9IDA7CisgICAgICAgIGNv
bmZpZy5hbHBoYU1hc2tTaXplID0gMDsKKworICAgICAgICBjb25maWcuYnVmZmVyU2l6ZSA9IGNv
bmZpZy5yZWRTaXplICsgY29uZmlnLmdyZWVuU2l6ZSArIGNvbmZpZy5ibHVlU2l6ZSArIGNvbmZp
Zy5hbHBoYVNpemU7CisKKyAgICAgICAgLy8gTXVsdGlzYW1wbGUgYW5kIGFjY3VtdWxhdGlvbiBi
dWZmZXJzCisgICAgICAgIGludCBzYW1wbGVzID0gbUhhc011bHRpc2FtcGxlID8gZ2V0R0xYRkJD
b25maWdBdHRyaWIoZ2x4Q29uZmlnLCBHTFhfU0FNUExFUykgOiAwOworICAgICAgICBpbnQgc2Ft
cGxlQnVmZmVycyA9CisgICAgICAgICAgICBtSGFzTXVsdGlzYW1wbGUgPyBnZXRHTFhGQkNvbmZp
Z0F0dHJpYihnbHhDb25maWcsIEdMWF9TQU1QTEVfQlVGRkVSUykgOiAwOworCisgICAgICAgIGlu
dCBhY2N1bVJlZFNpemUgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25maWcsIEdMWF9BQ0NV
TV9SRURfU0laRSk7CisgICAgICAgIGludCBhY2N1bUdyZWVuU2l6ZSA9IGdldEdMWEZCQ29uZmln
QXR0cmliKGdseENvbmZpZywgR0xYX0FDQ1VNX0dSRUVOX1NJWkUpOworICAgICAgICBpbnQgYWNj
dW1CbHVlU2l6ZSA9IGdldEdMWEZCQ29uZmlnQXR0cmliKGdseENvbmZpZywgR0xYX0FDQ1VNX0JM
VUVfU0laRSk7CisgICAgICAgIGludCBhY2N1bUFscGhhU2l6ZSA9IGdldEdMWEZCQ29uZmlnQXR0
cmliKGdseENvbmZpZywgR0xYX0FDQ1VNX0FMUEhBX1NJWkUpOworCisgICAgICAgIGlmIChzYW1w
bGVzICE9IGNvbnRleHRTYW1wbGVzIHx8CisgICAgICAgICAgICBzYW1wbGVCdWZmZXJzICE9IGNv
bnRleHRTYW1wbGVCdWZmZXJzIHx8CisgICAgICAgICAgICBhY2N1bVJlZFNpemUgIT0gY29udGV4
dEFjY3VtUmVkU2l6ZSB8fAorICAgICAgICAgICAgYWNjdW1HcmVlblNpemUgIT0gY29udGV4dEFj
Y3VtR3JlZW5TaXplIHx8CisgICAgICAgICAgICBhY2N1bUJsdWVTaXplICE9IGNvbnRleHRBY2N1
bUJsdWVTaXplIHx8CisgICAgICAgICAgICBhY2N1bUFscGhhU2l6ZSAhPSBjb250ZXh0QWNjdW1B
bHBoYVNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgY29uZmlnLnNhbXBsZXMgPSBzYW1wbGVzOworICAgICAgICBjb25maWcuc2FtcGxl
QnVmZmVycyA9IHNhbXBsZUJ1ZmZlcnM7CisKKyAgICAgICAgLy8gVHJhbnNwYXJlbmN5CisgICAg
ICAgIGlmIChnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25maWcsIEdMWF9UUkFOU1BBUkVOVF9U
WVBFKSA9PSBHTFhfVFJBTlNQQVJFTlRfUkdCKQorICAgICAgICB7CisgICAgICAgICAgICBjb25m
aWcudHJhbnNwYXJlbnRUeXBlID0gRUdMX1RSQU5TUEFSRU5UX1JHQjsKKyAgICAgICAgICAgIGNv
bmZpZy50cmFuc3BhcmVudFJlZFZhbHVlID0gZ2V0R0xYRkJDb25maWdBdHRyaWIoZ2x4Q29uZmln
LCBHTFhfVFJBTlNQQVJFTlRfUkVEX1ZBTFVFKTsKKyAgICAgICAgICAgIGNvbmZpZy50cmFuc3Bh
cmVudEdyZWVuVmFsdWUgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25maWcsIEdMWF9UUkFO
U1BBUkVOVF9HUkVFTl9WQUxVRSk7CisgICAgICAgICAgICBjb25maWcudHJhbnNwYXJlbnRCbHVl
VmFsdWUgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25maWcsIEdMWF9UUkFOU1BBUkVOVF9C
TFVFX1ZBTFVFKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbmZpZy50cmFuc3BhcmVudFR5cGUgPSBFR0xfTk9ORTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIFBidWZmZXIKKyAgICAgICAgY29uZmlnLm1heFBCdWZmZXJXaWR0aCA9IGdldEdMWEZC
Q29uZmlnQXR0cmliKGdseENvbmZpZywgR0xYX01BWF9QQlVGRkVSX1dJRFRIKTsKKyAgICAgICAg
Y29uZmlnLm1heFBCdWZmZXJIZWlnaHQgPSBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHhDb25maWcs
IEdMWF9NQVhfUEJVRkZFUl9IRUlHSFQpOworICAgICAgICBjb25maWcubWF4UEJ1ZmZlclBpeGVs
cyA9IGdldEdMWEZCQ29uZmlnQXR0cmliKGdseENvbmZpZywgR0xYX01BWF9QQlVGRkVSX1BJWEVM
Uyk7CisKKyAgICAgICAgLy8gQ2F2ZWF0CisgICAgICAgIGNvbmZpZy5jb25maWdDYXZlYXQgPSBF
R0xfTk9ORTsKKworICAgICAgICBpbnQgY2F2ZWF0ID0gZ2V0R0xYRkJDb25maWdBdHRyaWIoZ2x4
Q29uZmlnLCBHTFhfQ09ORklHX0NBVkVBVCk7CisgICAgICAgIGlmIChjYXZlYXQgPT0gR0xYX1NM
T1dfQ09ORklHKQorICAgICAgICB7CisgICAgICAgICAgICBjb25maWcuY29uZmlnQ2F2ZWF0ID0g
RUdMX1NMT1dfQ09ORklHOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNhdmVhdCA9PSBH
TFhfTk9OX0NPTkZPUk1BTlRfQ09ORklHKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1pc2MKKyAgICAgICAgY29uZmlnLmxldmVsID0g
Z2V0R0xYRkJDb25maWdBdHRyaWIoZ2x4Q29uZmlnLCBHTFhfTEVWRUwpOworCisgICAgICAgIGNv
bmZpZy5iaW5kVG9UZXh0dXJlUkdCID0gRUdMX0ZBTFNFOworICAgICAgICBjb25maWcuYmluZFRv
VGV4dHVyZVJHQkEgPSBFR0xfRkFMU0U7CisKKyAgICAgICAgaW50IGdseERyYXdhYmxlID0gZ2V0
R0xYRkJDb25maWdBdHRyaWIoZ2x4Q29uZmlnLCBHTFhfRFJBV0FCTEVfVFlQRSk7CisgICAgICAg
IGNvbmZpZy5zdXJmYWNlVHlwZSA9IDAgfAorICAgICAgICAgICAgKGdseERyYXdhYmxlICYgR0xY
X1dJTkRPV19CSVQgPyBFR0xfV0lORE9XX0JJVCA6IDApIHwKKyAgICAgICAgICAgIChnbHhEcmF3
YWJsZSAmIEdMWF9QQlVGRkVSX0JJVCA/IEVHTF9QQlVGRkVSX0JJVCA6IDApIHwKKyAgICAgICAg
ICAgIChnbHhEcmF3YWJsZSAmIEdMWF9QSVhNQVBfQklUID8gRUdMX1BJWE1BUF9CSVQgOiAwKTsK
KworICAgICAgICBjb25maWcubWluU3dhcEludGVydmFsID0gbU1pblN3YXBJbnRlcnZhbDsKKyAg
ICAgICAgY29uZmlnLm1heFN3YXBJbnRlcnZhbCA9IG1NYXhTd2FwSW50ZXJ2YWw7CisKKyAgICAg
ICAgLy8gVE9ETyhjd2FsbGV6KSB3aWxkbHkgZ3Vlc3NpbmcgdGhlc2UgZm9ybWF0cywgYW5vdGhl
ciBUT0RPIHNheXMgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBhbnl3YXkKKyAgICAgICAgY29uZmln
LnJlbmRlclRhcmdldEZvcm1hdCA9IEdMX1JHQkE4OworICAgICAgICBjb25maWcuZGVwdGhTdGVu
Y2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMODsKKworICAgICAgICBjb25maWcuY29uZm9y
bWFudCA9IEVHTF9PUEVOR0xfRVMyX0JJVCB8IChzdXBwb3J0c0VTMyA/IEVHTF9PUEVOR0xfRVMz
X0JJVF9LSFIgOiAwKTsKKyAgICAgICAgY29uZmlnLnJlbmRlcmFibGVUeXBlID0gY29uZmlnLmNv
bmZvcm1hbnQ7CisKKyAgICAgICAgLy8gVE9ETyhjd2FsbGV6KSBJIGhhdmUgbm8gaWRlYSB3aGF0
IHRoaXMgaXMKKyAgICAgICAgY29uZmlnLm1hdGNoTmF0aXZlUGl4bWFwID0gRUdMX05PTkU7CisK
KyAgICAgICAgaW50IGlkID0gY29uZmlncy5hZGQoY29uZmlnKTsKKyAgICAgICAgY29uZmlnSWRU
b0dMWENvbmZpZ1tpZF0gPSBnbHhDb25maWc7CisgICAgfQorCisgICAgWEZyZWUoZ2x4Q29uZmln
cyk7CisKKyAgICByZXR1cm4gY29uZmlnczsKK30KKworYm9vbCBEaXNwbGF5R0xYOjppc0Rldmlj
ZUxvc3QoKSBjb25zdAoreworICAgIC8vIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgRGlzcGxheUdMWDo6dGVzdERldmljZUxvc3QoKQoreworICAgIC8vIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxh
eUdMWDo6cmVzdG9yZUxvc3REZXZpY2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVkpOworfQorCitib29sIERpc3BsYXlHTFg6
OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0Cit7
CisgICAgLy8gVGhlcmUgaXMgbm8gZnVuY3Rpb24gaW4gWGxpYiB0byBjaGVjayB0aGUgdmFsaWRp
dHkgb2YgYSBXaW5kb3cgZGlyZWN0bHkuCisgICAgLy8gSG93ZXZlciBhIHNtYWxsIG51bWJlciBv
ZiBmdW5jdGlvbnMgdXNlZCB0byBvYnRhaW4gd2luZG93IGluZm9ybWF0aW9uCisgICAgLy8gcmV0
dXJuIGEgc3RhdHVzIGNvZGUgKDAgbWVhbmluZyBmYWlsdXJlKSBhbmQgZ3VhcmFudGVlIHRoYXQg
dGhleSB3aWxsCisgICAgLy8gZmFpbCBpZiB0aGUgd2luZG93IGRvZXNuJ3QgZXhpc3QgKHRoZSBy
YXRpb25hbCBpcyB0aGF0IHRoZXNlIGZ1bmN0aW9uCisgICAgLy8gYXJlIHVzZWQgYnkgd2luZG93
IG1hbmFnZXJzKS4gT3V0IG9mIHRoZXNlIGZ1bmN0aW9uIHdlIHVzZSBYUXVlcnlUcmVlCisgICAg
Ly8gYXMgaXQgc2VlbXMgdG8gYmUgdGhlIHNpbXBsZXN0OyBhIGRyYXdiYWNrIGlzIHRoYXQgaXQg
d2lsbCBhbGxvY2F0ZQorICAgIC8vIG1lbW9yeSBmb3IgdGhlIGxpc3Qgb2YgY2hpbGRyZW4sIGJl
Y2FzdWUgd2UgdXNlIGEgY2hpbGQgd2luZG93IGZvcgorICAgIC8vIFdpbmRvd1N1cmZhY2UuCisg
ICAgV2luZG93IHJvb3Q7CisgICAgV2luZG93IHBhcmVudDsKKyAgICBXaW5kb3cgKmNoaWxkcmVu
ID0gbnVsbHB0cjsKKyAgICB1bnNpZ25lZCBuQ2hpbGRyZW47CisgICAgaW50IHN0YXR1cyA9IFhR
dWVyeVRyZWUobUdMWC5nZXREaXNwbGF5KCksIHdpbmRvdywgJnJvb3QsICZwYXJlbnQsICZjaGls
ZHJlbiwgJm5DaGlsZHJlbik7CisgICAgaWYgKGNoaWxkcmVuKQorICAgIHsKKyAgICAgICAgWEZy
ZWUoY2hpbGRyZW4pOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzICE9IDA7Cit9CisKK3N0ZDo6
c3RyaW5nIERpc3BsYXlHTFg6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7CisgICAgLy8gVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiAiIjsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5R0xY
Ojp3YWl0Q2xpZW50KCkgY29uc3QKK3sKKyAgICBtR0xYLndhaXRHTCgpOworICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5R0xYOjpnZXRE
cml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdAoreworICAgIFZlbmRvcklE
IHZlbmRvciA9IEdldFZlbmRvcklEKG1GdW5jdGlvbnNHTCk7CisKKyAgICBzd2l0Y2ggKHZlbmRv
cikKKyAgICB7CisgICAgICAgIGNhc2UgVkVORE9SX0lEX05WSURJQToKKyAgICAgICAgICAgIHJl
dHVybiBnZXROVklESUFEcml2ZXJWZXJzaW9uKHZlcnNpb24pOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgKnZlcnNpb24gPSAiIjsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9TVUNDRVNTKTsKKyAgICB9Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheUdMWDo6d2FpdE5h
dGl2ZShFR0xpbnQgZW5naW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVn
bDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3QKK3sKKyAgICAvLyBlZ2xXYWl0TmF0
aXZlIGlzIHVzZWQgdG8gbm90aWNlIHRoZSBkcml2ZXIgb2YgY2hhbmdlcyBpbiBYMTEgZm9yIHRo
ZSBjdXJyZW50IHN1cmZhY2UsIHN1Y2ggYXMKKyAgICAvLyBjaGFuZ2VzIG9mIHRoZSB3aW5kb3cg
c2l6ZS4gV2UgdXNlIHRoaXMgZXZlbnQgdG8gdXBkYXRlIHRoZSBjaGlsZCB3aW5kb3cgb2YgV2lu
ZG93U3VyZmFjZUdMWAorICAgIC8vIHRvIG1hdGNoIGl0cyBwYXJlbnQgd2luZG93J3Mgc2l6ZS4K
KyAgICAvLyBIYW5kbGluZyBlZ2xXYWl0TmF0aXZlIHRoaXMgd2F5IGhlbHBzIHRoZSBhcHBsaWNh
dGlvbiBjb250cm9sIHdoZW4gcmVzaXplIGhhcHBlbnMuIFRoaXMgaXMKKyAgICAvLyBpbXBvcnRh
bnQgYmVjYXVzZSBkcml2ZXJzIGhhdmUgYSB0ZW5kZW5jeSB0byBjbG9iYmVyIHRoZSBiYWNrIGJ1
ZmZlciB3aGVuIHRoZSB3aW5kb3dzIGFyZQorICAgIC8vIHJlc2l6ZWQuIFNlZSBodHRwOi8vY3Ji
dWcuY29tLzMyNjk5NQorICAgIGlmIChkcmF3U3VyZmFjZSAhPSBudWxscHRyKQorICAgIHsKKyAg
ICAgICAgU3VyZmFjZUdMWCAqZ2x4RHJhd1N1cmZhY2UgPSBHZXRJbXBsQXM8U3VyZmFjZUdMWD4o
ZHJhd1N1cmZhY2UpOworICAgICAgICBlZ2w6OkVycm9yIGVycm9yID0gZ2x4RHJhd1N1cmZhY2Ut
PmNoZWNrRm9yUmVzaXplKCk7CisgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChyZWFkU3VyZmFjZSAhPSBkcmF3U3VyZmFjZSAmJiByZWFkU3VyZmFjZSAhPSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgU3VyZmFjZUdMWCAqZ2x4UmVhZFN1cmZhY2UgPSBHZXRJbXBsQXM8U3Vy
ZmFjZUdMWD4ocmVhZFN1cmZhY2UpOworICAgICAgICBlZ2w6OkVycm9yIGVycm9yID0gZ2x4UmVh
ZFN1cmZhY2UtPmNoZWNrRm9yUmVzaXplKCk7CisgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFdlIHN0aWxsIG5lZWQgdG8gZm9yd2FyZCB0aGUgcmVzaXppbmcgb2YgdGhlIGNo
aWxkIHdpbmRvdyB0byB0aGUgZHJpdmVyLgorICAgIG1HTFgud2FpdFgoKTsKKyAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK3ZvaWQgRGlzcGxheUdMWDo6c3luY1hDb21t
YW5kcygpIGNvbnN0Cit7CisgICAgaWYgKG1Vc2VzTmV3WERpc3BsYXkpCisgICAgeworICAgICAg
ICBYU3luYyhtR0xYLmdldERpc3BsYXkoKSwgRmFsc2UpOworICAgIH0KK30KKwordm9pZCBEaXNw
bGF5R0xYOjpzZXRTd2FwSW50ZXJ2YWwoZ2x4OjpEcmF3YWJsZSBkcmF3YWJsZSwgU3dhcENvbnRy
b2xEYXRhICpkYXRhKQoreworICAgIEFTU0VSVChkYXRhICE9IG51bGxwdHIpOworCisgICAgLy8g
VE9ETyhjd2FsbGV6KSBlcnJvciBjaGVja2luZz8KKyAgICBpZiAobVN3YXBDb250cm9sID09IFN3
YXBDb250cm9sOjpFWFQpCisgICAgeworICAgICAgICAvLyBQcmVmZXIgdGhlIEVYVCBleHRlbnNp
b24sIGl0IGdpdmVzIHBlci1kcmF3YWJsZSBzd2FwIGludGVydmFscywgd2hpY2ggd2lsbAorICAg
ICAgICAvLyBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGRyaXZlciBjYWxscy4KKyAgICAgICAgaWYg
KGRhdGEtPm1heFN3YXBJbnRlcnZhbCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGludCBtYXhTd2FwSW50ZXJ2YWwgPSAwOworICAgICAgICAgICAgbUdMWC5xdWVyeURyYXdh
YmxlKGRyYXdhYmxlLCBHTFhfTUFYX1NXQVBfSU5URVJWQUxfRVhULCAmbWF4U3dhcEludGVydmFs
KTsKKyAgICAgICAgICAgIGRhdGEtPm1heFN3YXBJbnRlcnZhbCA9IHN0YXRpY19jYXN0PGludD4o
bWF4U3dhcEludGVydmFsKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdoZW4gdGhlIGVnbCBj
b25maWdzIHdlcmUgZ2VuZXJhdGVkIHdlIGhhZCB0byBndWVzcyB3aGF0IHRoZSBtYXggc3dhcCBp
bnRlcnZhbAorICAgICAgICAvLyB3YXMgYmVjYXVzZSB3ZSBkaWRuJ3QgaGF2ZSBhIHdpbmRvdyB0
byBxdWVyeSBpdCBvbmUgKGFuZCB0aGF0IHRoaXMgbWF4IGNvdWxkCisgICAgICAgIC8vIGRlcGVu
ZCBvbiB0aGUgbW9uaXRvcikuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGFyZ2V0IGludGVydmFsIG1p
Z2h0IGJlIGhpZ2hlcgorICAgICAgICAvLyB0aGFuIHRoZSBtYXggaW50ZXJ2YWwgYW5kIG5lZWRz
IHRvIGJlIGNsYW1wZWQuCisgICAgICAgIGNvbnN0IGludCByZWFsSW50ZXJ2YWwgPSBzdGQ6Om1p
bihkYXRhLT50YXJnZXRTd2FwSW50ZXJ2YWwsIGRhdGEtPm1heFN3YXBJbnRlcnZhbCk7CisgICAg
ICAgIGlmIChkYXRhLT5jdXJyZW50U3dhcEludGVydmFsICE9IHJlYWxJbnRlcnZhbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbUdMWC5zd2FwSW50ZXJ2YWxFWFQoZHJhd2FibGUsIHJlYWxJbnRl
cnZhbCk7CisgICAgICAgICAgICBkYXRhLT5jdXJyZW50U3dhcEludGVydmFsID0gcmVhbEludGVy
dmFsOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG1DdXJyZW50U3dhcEludGVydmFs
ICE9IGRhdGEtPnRhcmdldFN3YXBJbnRlcnZhbCkKKyAgICB7CisgICAgICAgIC8vIFdpdGggdGhl
IE1lc2Egb3IgU0dJIGV4dGVuc2lvbnMgd2UgY2FuIHN0aWxsIGRvIHBlci1kcmF3YWJsZSBzd2Fw
IGNvbnRyb2wKKyAgICAgICAgLy8gbWFudWFsbHkgYnV0IGl0IGlzIG1vcmUgZXhwZW5zaXZlIGlu
IG51bWJlciBvZiBkcml2ZXIgY2FsbHMuCisgICAgICAgIGlmIChtU3dhcENvbnRyb2wgPT0gU3dh
cENvbnRyb2w6Ok1lc2EpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1HTFguc3dhcEludGVydmFs
TUVTQShkYXRhLT50YXJnZXRTd2FwSW50ZXJ2YWwpOworICAgICAgICB9CisgICAgICAgIGVsc2Ug
aWYgKG1Td2FwQ29udHJvbCA9PSBTd2FwQ29udHJvbDo6U0dJKQorICAgICAgICB7CisgICAgICAg
ICAgICBtR0xYLnN3YXBJbnRlcnZhbFNHSShkYXRhLT50YXJnZXRTd2FwSW50ZXJ2YWwpOworICAg
ICAgICB9CisgICAgICAgIG1DdXJyZW50U3dhcEludGVydmFsID0gZGF0YS0+dGFyZ2V0U3dhcElu
dGVydmFsOworICAgIH0KK30KKworYm9vbCBEaXNwbGF5R0xYOjppc1ZhbGlkV2luZG93VmlzdWFs
SWQodW5zaWduZWQgbG9uZyB2aXN1YWxJZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlcXVlc3Rl
ZFZpc3VhbCA9PSAtMSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtUmVxdWVzdGVkVmlz
dWFsKSA9PSB2aXN1YWxJZDsKK30KKworY29uc3QgRnVuY3Rpb25zR0wgKkRpc3BsYXlHTFg6Omdl
dEZ1bmN0aW9uc0dMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUZ1bmN0aW9uc0dMOworfQorCit2
b2lkIERpc3BsYXlHTFg6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25z
ICpvdXRFeHRlbnNpb25zKSBjb25zdAoreworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRl
eHQgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHROb0Vycm9yID0gdHJ1
ZTsKK30KKwordm9pZCBEaXNwbGF5R0xYOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBz
KSBjb25zdAoreworICAgIC8vIFVOSU1QTEVNRU5URUQoKTsKKyAgICBvdXRDYXBzLT50ZXh0dXJl
TlBPVCA9IHRydWU7Cit9CisKK2ludCBEaXNwbGF5R0xYOjpnZXRHTFhGQkNvbmZpZ0F0dHJpYihn
bHg6OkZCQ29uZmlnIGNvbmZpZywgaW50IGF0dHJpYikgY29uc3QKK3sKKyAgICBpbnQgcmVzdWx0
OworICAgIG1HTFguZ2V0RkJDb25maWdBdHRyaWIoY29uZmlnLCBhdHRyaWIsICZyZXN1bHQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2VnbDo6RXJyb3IgRGlzcGxheUdMWDo6Y3JlYXRlQ29u
dGV4dEF0dHJpYnMoZ2x4OjpGQkNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OlZlcnNpb24gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByb2ZpbGVNYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHg6OkNvbnRleHQgKmNvbnRleHQpIGNvbnN0
Cit7CisgICAgc3RkOjp2ZWN0b3I8aW50PiBhdHRyaWJzOworICAgIGF0dHJpYnMucHVzaF9iYWNr
KEdMWF9DT05URVhUX01BSk9SX1ZFUlNJT05fQVJCKTsKKyAgICBhdHRyaWJzLnB1c2hfYmFjayh2
ZXJzaW9uLm1ham9yKTsKKworICAgIGF0dHJpYnMucHVzaF9iYWNrKEdMWF9DT05URVhUX01JTk9S
X1ZFUlNJT05fQVJCKTsKKyAgICBhdHRyaWJzLnB1c2hfYmFjayh2ZXJzaW9uLm1pbm9yKTsKKwor
ICAgIGlmIChwcm9maWxlTWFzayAhPSAwICYmIG1IYXNBUkJDcmVhdGVDb250ZXh0UHJvZmlsZSkK
KyAgICB7CisgICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKEdMWF9DT05URVhUX1BST0ZJTEVfTUFT
S19BUkIpOworICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhwcm9maWxlTWFzayk7CisgICAgfQor
CisgICAgYXR0cmlicy5wdXNoX2JhY2soTm9uZSk7CisKKyAgICAvLyBXaGVuIGNyZWF0aW5nIGEg
Y29udGV4dCB3aXRoIGdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCLCBhIHZhcmlldHkgb2YgWDEx
IGVycm9ycyBjYW4KKyAgICAvLyBiZSBnZW5lcmF0ZWQuIFRvIHByZXZlbnQgdGhlc2UgZXJyb3Jz
IGZyb20gY3Jhc2hpbmcgb3VyIHByb2Nlc3MsIHdlIHNpbXBseSBpZ25vcmUKKyAgICAvLyB0aGVt
IGFuZCBvbmx5IGxvb2sgaWYgR0xYQ29udGV4dCB3YXMgY3JlYXRlZC4KKyAgICBhdXRvIG9sZEVy
cm9ySGFuZGxlciA9IFhTZXRFcnJvckhhbmRsZXIoSWdub3JlWDExRXJyb3JzKTsKKyAgICAqY29u
dGV4dCA9IG1HTFguY3JlYXRlQ29udGV4dEF0dHJpYnNBUkIobUNvbnRleHRDb25maWcsIG51bGxw
dHIsIFRydWUsIGF0dHJpYnMuZGF0YSgpKTsKKyAgICBYU2V0RXJyb3JIYW5kbGVyKG9sZEVycm9y
SGFuZGxlcik7CisKKyAgICBpZiAoISpjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVn
bDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkNvdWxkIG5vdCBjcmVhdGUgR0wgY29udGV4
dC4iKTsKKyAgICB9CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitl
Z2w6OkVycm9yIERpc3BsYXlHTFg6OmdldE5WSURJQURyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcg
KnZlcnNpb24pIGNvbnN0Cit7CisgICAgKnZlcnNpb24gPSAiIjsKKworICAgIGludCBldmVudEJh
c2UgPSAwOworICAgIGludCBlcnJvckJhc2UgPSAwOworICAgIGlmIChYTlZDVFJMUXVlcnlFeHRl
bnNpb24obVhEaXNwbGF5LCAmZXZlbnRCYXNlLCAmZXJyb3JCYXNlKSkKKyAgICB7CisgICAgICAg
IGludCBzY3JlZW5Db3VudCA9IFNjcmVlbkNvdW50KG1YRGlzcGxheSk7CisgICAgICAgIGZvciAo
aW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8IHNjcmVlbkNvdW50OyArK3NjcmVlbikKKyAgICAgICAg
eworICAgICAgICAgICAgY2hhciAqYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChY
TlZDVFJMSXNOdlNjcmVlbihtWERpc3BsYXksIHNjcmVlbikgJiYKKyAgICAgICAgICAgICAgICBY
TlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUobVhEaXNwbGF5LCBzY3JlZW4sIDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WX0NUUkxfU1RSSU5HX05WSURJ
QV9EUklWRVJfVkVSU0lPTiwgJmJ1ZmZlcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgKnZlcnNpb24gPSBidWZmZXI7CisgICAgICAgICAgICAgICAgWEZyZWUoYnVmZmVyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9TVUNDRVNTKTsKK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDYg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCisvLworCisvLyBEaXNwbGF5R0xYLmg6IEdMWCBpbXBsZW1lbnRhdGlvbiBv
ZiBlZ2w6OkRpc3BsYXkKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfRElTUExB
WUdMWF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfRElTUExBWUdMWF9IXwor
CisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL2dseC9GdW5jdGlvbnNHTFguaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZ1bmN0
aW9uc0dMWDsKKworLy8gU3RhdGUtdHJhY2tpbmcgZGF0YSBmb3IgdGhlIHN3YXAgY29udHJvbCB0
byBhbGxvdyBEaXNwbGF5R0xYIHRvIHJlbWVtYmVyIHBlcgorLy8gZHJhd2FibGUgaW5mb3JtYXRp
b24gZm9yIHN3YXAgY29udHJvbC4KK3N0cnVjdCBTd2FwQ29udHJvbERhdGEKK3sKKyAgICBTd2Fw
Q29udHJvbERhdGEoKTsKKworICAgIC8vIFNldCBieSB0aGUgZHJhd2FibGUKKyAgICBpbnQgdGFy
Z2V0U3dhcEludGVydmFsOworCisgICAgLy8gRGlzcGxheUdMWC1zaWRlIHN0YXRlLXRyYWNraW5n
CisgICAgaW50IG1heFN3YXBJbnRlcnZhbDsKKyAgICBpbnQgY3VycmVudFN3YXBJbnRlcnZhbDsK
K307CisKK2NsYXNzIERpc3BsYXlHTFggOiBwdWJsaWMgRGlzcGxheUdMCit7CisgIHB1YmxpYzoK
KyAgICBEaXNwbGF5R0xYKCk7CisgICAgfkRpc3BsYXlHTFgoKSBvdmVycmlkZTsKKworICAgIGVn
bDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAg
IHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CisKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2lu
ZG93U3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJm
YWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3Zl
cnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4
bWFwU3VyZmFjZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNv
bmZpZ3MoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNEZXZpY2VMb3N0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCB0ZXN0RGV2aWNlTG9zdCgpIG92ZXJyaWRlOworICAgIGVnbDo6
RXJyb3IgcmVzdG9yZUxvc3REZXZpY2UoKSBvdmVycmlkZTsKKworICAgIGJvb2wgaXNWYWxpZE5h
dGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Qgb3ZlcnJpZGU7CisK
KyAgICBlZ2w6OkVycm9yIGdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKSBvdmVycmlkZTsK
KworICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJv
ciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVn
bDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6
U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBn
ZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIC8vIFN5bmNocm9uaXplcyB3aXRoIHRoZSBYIHNlcnZlciwgaWYgdGhlIGRpc3BsYXkgaGFz
IGJlZW4gb3BlbmVkIGJ5IEFOR0xFLgorICAgIC8vIENhbGxpbmcgdGhpcyBpcyByZXF1aXJlZCBh
dCB0aGUgZW5kIG9mIGV2ZXJ5IGZ1bmN0aW9ucyB0aGF0IGRvZXMgYnVmZmVyZWQKKyAgICAvLyBY
IGNhbGxzIChub3QgZm9yIGdsWCBjYWxscykgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0IGJlIHJhY2Ug
Y29uZGl0aW9ucworICAgIC8vIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uJ3MgZGlzcGxheSBhbmQg
QU5HTEUncyBvbmUuCisgICAgdm9pZCBzeW5jWENvbW1hbmRzKCkgY29uc3Q7CisKKyAgICAvLyBE
ZXBlbmRpbmcgb24gdGhlIHN1cHBvcnRlZCBHTFggZXh0ZW5zaW9uLCBzd2FwIGludGVydmFsIGNh
biBiZSBzZXQKKyAgICAvLyBnbG9iYWxseSBvciBwZXIgZHJhd2FibGUuIFRoaXMgZnVuY3Rpb24g
d2lsbCBtYWtlIHN1cmUgdGhlIGRyYXdhYmxlJ3MKKyAgICAvLyBzd2FwIGludGVydmFsIGlzIHRo
ZSBvbmUgcmVxdWlyZWQgc28gdGhhdCB0aGUgc3Vic2VxdWVudCBzd2FwQnVmZmVycworICAgIC8v
IGFjdHMgYXMgZXhwZWN0ZWQuCisgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoZ2x4OjpEcmF3YWJs
ZSBkcmF3YWJsZSwgU3dhcENvbnRyb2xEYXRhICpkYXRhKTsKKworICAgIGJvb2wgaXNWYWxpZFdp
bmRvd1Zpc3VhbElkKHVuc2lnbmVkIGxvbmcgdmlzdWFsSWQpIGNvbnN0OworCisgIHByaXZhdGU6
CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKmdldEZ1bmN0aW9uc0dMKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemVDb250ZXh0KGdseDo6RkJDb25maWcgY29uZmln
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmVnbEF0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHg6
OkNvbnRleHQgKmNvbnRleHQpOworCisgICAgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpE
aXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdCBvdmVycmlkZTsKKworICAg
IGludCBnZXRHTFhGQkNvbmZpZ0F0dHJpYihnbHg6OkZCQ29uZmlnIGNvbmZpZywgaW50IGF0dHJp
YikgY29uc3Q7CisgICAgZWdsOjpFcnJvciBjcmVhdGVDb250ZXh0QXR0cmlicyhnbHg6OkZCQ29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlZlcnNpb24gdmVy
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcm9maWxlTWFz
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29udGV4dCAqY29u
dGV4dCkgY29uc3Q7CisKKyAgICBlZ2w6OkVycm9yIGdldE5WSURJQURyaXZlclZlcnNpb24oc3Rk
OjpzdHJpbmcgKnZlcnNpb24pIGNvbnN0OworCisgICAgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnNH
TDsKKworICAgIC8vVE9ETyhjd2FsbGV6KSB5dWNrLCBjaGFuZ2UgZ2VuZXJhdGVDb25maWdzIHRv
IGJlIG5vbi1jb25zdCBvciBhZGQgYSB1c2VyZGF0YSBtZW1iZXIgdG8gZWdsOjpDb25maWc/Cisg
ICAgbXV0YWJsZSBzdGQ6Om1hcDxpbnQsIGdseDo6RkJDb25maWc+IGNvbmZpZ0lkVG9HTFhDb25m
aWc7CisKKyAgICBFR0xpbnQgbVJlcXVlc3RlZFZpc3VhbDsKKyAgICBnbHg6OkZCQ29uZmlnIG1D
b250ZXh0Q29uZmlnOworICAgIGdseDo6Q29udGV4dCBtQ29udGV4dDsKKyAgICAvLyBBIHBidWZm
ZXIgdGhlIGNvbnRleHQgaXMgY3VycmVudCBvbiBkdXJpbmcgQU5HTEUgaW5pdGlhbGl6YXRpb24K
KyAgICBnbHg6OlBidWZmZXIgbUR1bW15UGJ1ZmZlcjsKKworICAgIGJvb2wgbVVzZXNOZXdYRGlz
cGxheTsKKyAgICBib29sIG1Jc01lc2E7CisgICAgYm9vbCBtSGFzTXVsdGlzYW1wbGU7CisgICAg
Ym9vbCBtSGFzQVJCQ3JlYXRlQ29udGV4dDsKKyAgICBib29sIG1IYXNBUkJDcmVhdGVDb250ZXh0
UHJvZmlsZTsKKyAgICBib29sIG1IYXNFWFRDcmVhdGVDb250ZXh0RVMyUHJvZmlsZTsKKworICAg
IGVudW0gY2xhc3MgU3dhcENvbnRyb2wKKyAgICB7CisgICAgICAgIEFic2VudCwKKyAgICAgICAg
RVhULAorICAgICAgICBNZXNhLAorICAgICAgICBTR0ksCisgICAgfTsKKyAgICBTd2FwQ29udHJv
bCBtU3dhcENvbnRyb2w7CisgICAgaW50IG1NaW5Td2FwSW50ZXJ2YWw7CisgICAgaW50IG1NYXhT
d2FwSW50ZXJ2YWw7CisgICAgaW50IG1DdXJyZW50U3dhcEludGVydmFsOworCisgICAgRnVuY3Rp
b25zR0xYIG1HTFg7CisgICAgRGlzcGxheSAqbVhEaXNwbGF5OworICAgIGVnbDo6RGlzcGxheSAq
bUVHTERpc3BsYXk7Cit9OworCit9CisKKyNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9H
TFhfRElTUExBWUdMWF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2dseC9GQkNvbmZpZ0NvbXBhdGliaWxpdHkubWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9G
QkNvbmZpZ0NvbXBhdGliaWxpdHkubWQJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0ZCQ29uZmlnQ29tcGF0aWJpbGl0
eS5tZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwNCBAQAorR0xYIEZyYW1lYnVmZmVyIENv
bXBhdGliaWxpdHkgaW52ZXN0aWdhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorCitJbiBHTFggYW5kIEVHTCwgY29udGV4dHMgYXJlIGNyZWF0ZWQgd2l0
aCByZXNwZWN0IHRvIGEgY29uZmlnIHRoYXQKK2Rlc2NyaWJlcyB0aGUgdHlwZSBvZiBzdXJmYWNl
cyB0aGV5IHdpbGwgYmUgdXNlZCB0byByZW5kZXIgdG8uCitMaWtld2lzZSBzdXJmYWNlcyBhcmUg
Y3JlYXRlZCB3aXRoIHJlc3BlY3QgdG8gYSBjb25maWcgYW5kIGZvcgorYSBjb250ZXh0IHRvIGJl
IGFibGUgdG8gcmVuZGVyIHRvIGEgc3VyZmFjZSwgYm90aCB0aGVpciBjb25maWdzCittdXN0IGJl
IGNvbXBhdGlibGUuIENvbXBhdGliaWxpdHkgaXMgbG9zZWx5IGRlc2NyaWJlZCBpbiBib3RoCit0
aGUgR0xYIGFuZCBFR0wgc3BlY3MgYnV0IHRoZSBmb2xsb3dpbmcgaXMgY2xlYXI6CisgKiBJbiBH
TFggdGhlIGNvbmZpZydzIGNvbG9yIGJ1ZmZlciBtdXN0IGhhdmUgdGhlIHNhbWUgdHlwZSwgaW5j
bHVkaW5nCitSR0JBIHZzLiBDb2xvckluZGV4IGFuZCB0aGUgYnVmZmVycyBtdXN0IGhhdmUgdGhl
IHNhbWUgZGVwdGgsIGlmIHRoZXkKK2V4aXN0LgorICogSW4gRUdMIHRoZSBjb25maWcncyBjb2xv
ciBidWZmZXIgbXVzdCBoYXZlIHRoZSBzYW1lIHR5cGUgYW5kIHRoZQorYnVmZmVycyBtdXN0IGhh
dmUgdGhlIHNhbWUgZGVwdGggKG5vdCBjbGVhciBpZiBpdCBpcyBvbmx5IGlmIHRoZXkgZXhpc3Qp
CisKK09idmlvdXNseSB0aGUgRUdMY29uZmlnIHdlIHdpbGwgZXhwb3NlIHdpbGwgaGF2ZSBhIG9u
ZS10by1vbmUKK2NvcnJlc3BvbmRhbmNlIHdpdGggR0xYRkJDb25maWdzLgorCitPdXIgRUdMIGlt
cGxlbWVudGF0aW9uIHVzZXMgYSBzaW5nbGUgT3BlbkdMIGNvbnRleHQgdG8gYmFjayBhbGwKK3Ro
ZSBFR0xjb250ZXh0cyBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU2luY2Ugb3VyIEdMIGNv
bnRleHQKK2FuZCBHTFhDb250ZXh0IGFyZSB0aGUgc2FtZSBvYmplY3QgYnV0IGluIHR3byBBUElz
LCB3ZSB3aWxsIG1ha2UKK3RoZSBjb25mdXNpb24gYW5kIGNhbGwgdGhlIEdMWCBjb250ZXh0IG91
ciBiYWNraW5nIGNvbnRleHQuCisKK1RoZSBwcm9ibGVtIHdlIGhhdmUgaXMgdGhhdCB0aGUgdGhl
IEdMWCBjb250ZXh0IGlzIGNyZWF0ZWQgYmVmb3JlCit0aGUgYXBwbGljYXRpb24gY2FuIGNob29z
ZSB3aGF0IHR5cGUgb2YgY29udGV4dCBpdCB3YW50cyB0byB1c2UsCit0aGF0IG1lYW5zIHdlIGhh
dmUgdG8gZXhwb3NlIEVHTGNvbmZpZ3Mgd2hvc2UgcmVzcGVjdGl2ZSBHTFhGQkNvbmZpZ3MKK2Fy
ZSBjb21wYXRpYmxlIHdpdGggdGhlIEdMWEZCQ29uZmlnIG9mIG91ciBHTFggY29udGV4dDsgd2Ug
YWxzbyBuZWVkCit0byBjaG9vc2UgdGhlIEdMWEZCQ29uZmlnIG9mIG91ciBHTFggY29udGV4dCBz
byB0aGF0IGl0IG1hdGNoZXMgdGhlCittb3N0IGNvbW1vbiBuZWVkcyBvZiBhcHBsaWNhdGlvbi4K
KworQ2hvaWNlIG9mIHRoZSBHTFggY29udGV4dCBHTFhGQkNvbmZpZworLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXZSBkZWNpZGVkIHRoYXQgb3VyIEdMWCBjb250ZXh0
J3MgY29uZmlndXJhdGlvbiBtdXN0IHNhdGlzZnkgdGhlIGZvbGxvd2luZzoKKyAqIEhhdmUgYSBS
R0JBOCBjb2xvciBidWZmZXIgYW5kIEQyNFM4IGRlcHRoLXN0ZW5jaWwgYnVmZmVyIHdoaWNoIGlz
IHdoYXQKK3RoZSB2YXN0IG1ham9yaXR5IG9mIGFwcGxpY2F0aW9ucyB1c2UuCisgKiBJdCBtdXN0
IHJlbmRlciBpbiBkaXJlY3QgY29sb3JzLCBpLmUuIG5vdCBpbiBhIGNvbG9yIGluZGV4ZWQgZm9y
bWF0LgorICogSXQgbXVzdCBiZSBkb3VibGUtYnVmZmVyZWQgKHNlZSBsYXRlcikKKyAqIEl0IG11
c3Qgc3VwcG9ydCByZW5kZXJpbmcgdG8gYWxsIHRoZSB0eXBlcyBvZiBHTFggc3VyZmFjZXMgc28g
dGhhdCB3ZSBjYW4KK3VzZSBpdCBmb3IgYWxsIHR5cGVzIG9mIEVHTCBzdXJmYWNlcworICogSXQg
bXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQgdmlzdWFsIElEIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCB3
aXRoIFgsIGl0IHNlZW1zCitsaWtlIHRoaXMgd291bGQgYmUgc3Ryb25nbHkgdGllZCB0byBpdCBo
YXZpbmcgdGhlIGBgYFdJTkRPV19CSVRgYGAgc2V0LgorICogV2Ugd291bGQgbGlrZSBhIGNvbmZv
cm1hbnQgY29udGV4dC4KKworU3R1ZHkgb2YgY29tcGF0aWJsZSBHTFhGQkNvbmZpZ3MKKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdXNpbmcgdGhlIGNvbmRpdGlvbiBv
ZiBjb21wYXRpYmlsaXR5IGRlZmluZWQgaW4gdGhlIEdMWCBzcGVjIGFuZCBmaWx0ZXJpbmcKK291
dCB0aGUgbm9uLWNvbmZvcm1hbnQgR0xYRkJDb25maWcgd2UgZ290IHRoZSBmb2xsb3dpbmcgbGlz
dCAoc2VlIGZ1bmN0aW9uCitgYGBwcmludF92aXN1YWxfYXR0cmlic19zaG9ydGBgYCBpbiBbZ2x4
aW5mbydzIHNvdXJjZSBjb2RlXShodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9kZW1v
cy90cmVlL3NyYy94ZGVtb3MvZ2x4aW5mby5jKQordG8gdW5kZXJzdGFuZCBob3cgdG8gcmVhZCB0
aGUgdGFibGUpOgorCitgYGAKKyAgICB2aXN1YWwgIHggICBiZiBsdiByZyBkIHN0ICBjb2xvcmJ1
ZmZlciAgc3IgYXggZHAgc3QgYWNjdW1idWZmZXIgIG1zICBjYXYKKyAgaWQgZGVwIGNsIHNwICBz
eiBsICBjaSBiIHJvICByICBnICBiICBhIEYgZ2IgYmYgdGggY2wgIHIgIGcgIGIgIGEgbnMgYiBl
YXQgIFJlc3VsdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMHgwMmUgMjQgdGMgIDAgIDMyICAwIHIg
IC4gLiAgIDggIDggIDggIDggLiAgcyAgNCAgMCAgMCAxNiAxNiAxNiAxNiAgMCAwIE5vbmUgRmFp
bAorMHgwZTQgMzIgdGMgIDAgIDMyICAwIHIgIC4gLiAgIDggIDggIDggIDggLiAgcyAgNCAgMCAg
MCAxNiAxNiAxNiAxNiAgMCAwIE5vbmUgQmFkTWF0Y2gKKzB4MDJjIDI0IHRjICAwICAzMiAgMCBy
ICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYgMTYgIDAgMCBOb25lIFBh
c3MKKzB4MGUyIDMyIHRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgIDAg
IDAgMTYgMTYgMTYgMTYgIDAgMCBOb25lIEJhZE1hdGNoCisweDA4OSAyNCBkYyAgMCAgMzIgIDAg
ciAgLiAuICAgOCAgOCAgOCAgOCAuICBzICA0ICAwICAwIDE2IDE2IDE2IDE2ICAwIDAgTm9uZSBG
YWlsCisweDA4NyAyNCBkYyAgMCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICBzICA0ICAw
ICAwIDE2IDE2IDE2IDE2ICAwIDAgTm9uZSBQYXNzCisweDAyNiAyNCB0YyAgMCAgMzIgIDAgciAg
LiAuICAgOCAgOCAgOCAgOCAuICBzICA0IDI0ICA4IDE2IDE2IDE2IDE2ICAwIDAgTm9uZSBGYWls
CisweDBkYyAzMiB0YyAgMCAgMzIgIDAgciAgLiAuICAgOCAgOCAgOCAgOCAuICBzICA0IDI0ICA4
IDE2IDE2IDE2IDE2ICAwIDAgTm9uZSBCYWRNYXRjaAorMHgwMjQgMjQgdGMgIDAgIDMyICAwIHIg
IHkgLiAgIDggIDggIDggIDggLiAgcyAgNCAyNCAgOCAxNiAxNiAxNiAxNiAgMCAwIE5vbmUgUGFz
cworMHgwZGEgMzIgdGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDggIDggLiAgcyAgNCAyNCAg
OCAxNiAxNiAxNiAxNiAgMCAwIE5vbmUgQmFkTWF0Y2gKKzB4MDgxIDI0IGRjICAwICAzMiAgMCBy
ICAuIC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25lIEZh
aWwKKzB4MDdmIDI0IGRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgMjQg
IDggMTYgMTYgMTYgMTYgIDAgMCBOb25lIFBhc3MKK2BgYAorCitUaGUgbGFzdCBjb2x1bW4gc2hv
d3MgdGhlIHJlc3VsdCBvZiB0cnlpbmcgdG8gcmVuZGVyIG9uIGEgd2luZG93IHVzaW5nIHRoZSBj
b25maWcsCit3aXRoIGEgR0xYIGNvbnRleHQgdXNpbmcgY29uZmlnIDB4MDI0LiBUaGUgZmlyc3Qg
dGhpbmcgd2Ugc2VlIGlzIHRoYXQgQmFkTWF0Y2ggaXMKK3Rocm93biBieSB0aGUgWCBzZXJ2ZXIg
d2hlbiBjcmVhdGluZyB0aGUgc3Vid2luZG93IGZvciByZW5kZXJpbmcuIFRoaXMgd2FzIGJlY2F1
c2UKK3dlIGRpZG4ndCBzZXQgdGhlIGJvcmRlciBwaXhlbCBvZiB0aGUgc3Vid2luZG93ICpzaGFr
ZSBmaXN0IGF0IFgxMSogKHNlZSB0aGlzIFtTdGFja092ZXJmbG93IHF1ZXN0aW9uXShodHRwOi8v
c3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM2NDU2MzIvaG93LXRvLWNyZWF0ZS1hLXdpbmRv
dy13aXRoLWEtYml0LWRlcHRoLW9mLTMyKSkuCitUaGUgcmVzdWx0IHVwZGF0ZWQgd2l0aCB0aGlz
IGZpeCBnaXZlOgorCitgYGAKKyAgICB2aXN1YWwgIHggICBiZiBsdiByZyBkIHN0ICBjb2xvcmJ1
ZmZlciAgc3IgYXggZHAgc3QgYWNjdW1idWZmZXIgIG1zICBjYXYKKyAgaWQgZGVwIGNsIHNwICBz
eiBsICBjaSBiIHJvICByICBnICBiICBhIEYgZ2IgYmYgdGggY2wgIHIgIGcgIGIgIGEgbnMgYiBl
YXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzB4MDJlIDI0IHRjICAwICAzMiAgMCByICAuIC4gICA4
ICA4ICA4ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYgMTYgIDAgMCBOb25lIEZhaWwKKzB4MGU0
IDMyIHRjICAwICAzMiAgMCByICAuIC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYg
MTYgMTYgIDAgMCBOb25lIEZhaWwKKzB4MDJjIDI0IHRjICAwICAzMiAgMCByICB5IC4gICA4ICA4
ICA4ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYgMTYgIDAgMCBOb25lIFBhc3MKKzB4MGUyIDMy
IHRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYg
MTYgIDAgMCBOb25lIFBhc3MKKzB4MDg5IDI0IGRjICAwICAzMiAgMCByICAuIC4gICA4ICA4ICA4
ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYgMTYgIDAgMCBOb25lIEZhaWwKKzB4MDg3IDI0IGRj
ICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYgMTYg
IDAgMCBOb25lIFBhc3MKKzB4MDI2IDI0IHRjICAwICAzMiAgMCByICAuIC4gICA4ICA4ICA4ICA4
IC4gIHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25lIEZhaWwKKzB4MGRjIDMyIHRjICAw
ICAzMiAgMCByICAuIC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAg
MCBOb25lIEZhaWwKKzB4MDI0IDI0IHRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4g
IHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25lIFBhc3MKKzB4MGRhIDMyIHRjICAwICAz
MiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBO
b25lIFBhc3MKKzB4MDgxIDI0IGRjICAwICAzMiAgMCByICAuIC4gICA4ICA4ICA4ICA4IC4gIHMg
IDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25lIEZhaWwKKzB4MDdmIDI0IGRjICAwICAzMiAg
MCByICB5IC4gICA4ICA4ICA4ICA4IC4gIHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25l
IFBhc3MKK2BgYAorCitGcm9tIHRoaXMgd2Ugc2VlIHRoYXQgb3VyIHJlbmRlcmluZyB0ZXN0IHBh
c3NlZCBpZiBhbmQgb25seSBpZiB0aGUgY29uZmlnIHdhcyBkb3VibGUKK2J1ZmZlcmVkIGxpa2Ug
MHgwMjQgd2hpY2ggaXMgb3VyIEdMWCBjb250ZXh0IGNvbmZpZy4gVGhlIGNvbXBhdGlibGUgY29u
ZmlncyBhcmUgdGhlbjoKKworYGBgCisgICAgdmlzdWFsICB4ICAgYmYgbHYgcmcgZCBzdCAgY29s
b3JidWZmZXIgIHNyIGF4IGRwIHN0IGFjY3VtYnVmZmVyICBtcyAgY2F2CisgIGlkIGRlcCBjbCBz
cCAgc3ogbCAgY2kgYiBybyAgciAgZyAgYiAgYSBGIGdiIGJmIHRoIGNsICByICBnICBiICBhIG5z
IGIgZWF0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisweDAyYyAyNCB0YyAgMCAgMzIgIDAgciAgeSAu
ICAgOCAgOCAgOCAgOCAuICBzICA0ICAwICAwIDE2IDE2IDE2IDE2ICAwIDAgTm9uZQorMHgwZTIg
MzIgdGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDggIDggLiAgcyAgNCAgMCAgMCAxNiAxNiAx
NiAxNiAgMCAwIE5vbmUKKzB4MDg3IDI0IGRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4
IC4gIHMgIDQgIDAgIDAgMTYgMTYgMTYgMTYgIDAgMCBOb25lCisweDAyNCAyNCB0YyAgMCAgMzIg
IDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICBzICA0IDI0ICA4IDE2IDE2IDE2IDE2ICAwIDAgTm9u
ZQorMHgwZGEgMzIgdGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDggIDggLiAgcyAgNCAyNCAg
OCAxNiAxNiAxNiAxNiAgMCAwIE5vbmUKKzB4MDdmIDI0IGRjICAwICAzMiAgMCByICB5IC4gICA4
ICA4ICA4ICA4IC4gIHMgIDQgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25lCitgYGAKKworV2Ug
Y2FuIHNlZSB0d28gZGltZW5zaW9ucywgd2l0aCBvdXIgd2l0aG91dCBhIGRlcHRoLXN0ZW5jaWwg
YnVmZmVyIGFuZCB3aXRoIFRydWVDb2xvcgorb3IgRGlyZWN0Q29sb3IuIFRoZSBkZXB0aC1zdGVu
Y2lsIHdpbGwgYmUgdXNlZnVsIHRvIGV4cG9zZSB0byBhcHBsaWNhdGlvbi4KKworTW9yZSBvbiBk
b3VibGUgYnVmZmVyaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSB0ZXN0cyBhYm92
ZSBzaG93IHRoYXQgZG91YmxlLWJ1ZmZlcmVkIGNvbnRleHRzIGFyZSBub3QgY29tcGF0aWJsZSB3
aXRoIHNpbmdsZS0KK2J1ZmZlcmVkIHN1cmZhY2VzOyBob3dldmVyIG90aGVyIHRlc3RzIHNob3cg
dGhhdCBzaW5nbGUtYnVmZmVyZWQgY29udGV4dHMgYXJlCitjb21wYXRpYmxlIHdpdGggYm90aCBz
aW5nbGUgYW5kIGRvdWJsZS1idWZmZXJlZCBzdXJmYWNlcy4gVGhlIHByb2JsZW0gaXMgdGhhdCBp
bgordGhhdCBjYXNlLCB3ZSBjYW4gc2VlIHNvbWUgZmxpY2tlcmluZyBldmVuIHdpdGggZG91Ymxl
LWJ1ZmZlcmVkIHN1cmZhY2VzLiBJZiB3ZQorY2FuIGZpbmQgYSB0cmljayB0byBhdm9pZCB0aGF0
IGZsaWNrZXIsIHRoZW4gd2Ugd291bGQgYmUgYWJsZSB0byBleHBvc2Ugc2luZ2xlCithbmQgZG91
YmxlLWJ1ZmZlcmVkIHN1cmZhY2VzIGF0IHRoZSBFR0wgbGV2ZWwuIE5vdCBleHBvc2luZyB0aGVt
IGlzbid0IHRvbyBtdWNoCitvZiBhIHByb2JsZW0gdGhvdWdoIGFzIHRoZSB2YXN0IG1ham9yaXR5
IG9mIGFwcGxpY2F0aW9uIHdhbnQgZG91YmxlLWJ1ZmZlcmluZy4KKworQU1EIGFuZCBleHRyYSBi
dWZmZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FzIGNhbiBiZSBzZWVuIGFib3ZlLCBOVklE
SUEgZG9lcyBub3QgZXhwb3NlIGNvbmZvcm1hbnQgY29udGV4dCB3aXRoIG11bHRpc2FtcGxlZAor
YnVmZmVycyBvciBub24gUkdCQTE2IGFjY3VtdWxhdGlvbiBidWZmZXJzLiBUaGUgYmVoYXZpb3Ig
aXMgZGlmZmVyZW50IG9uIEFNRCB0aGF0CitleHBvc2VzIHRoZW0gYXMgY29uZm9ybWFudCwgd2hp
Y2ggZ2l2ZXMgdGhlIGZvbGxvd2luZyBsaXN0IGFmdGVyIGZpbHRlcmluZyBhcworZXhwbGFpbmVk
IGFib3ZlOgorCitgYGAKKyAgICB2aXN1YWwgIHggICBiZiBsdiByZyBkIHN0ICBjb2xvcmJ1ZmZl
ciAgc3IgYXggZHAgc3QgYWNjdW1idWZmZXIgIG1zICBjYXYKKyAgaWQgZGVwIGNsIHNwICBzeiBs
ICBjaSBiIHJvICByICBnICBiICBhIEYgZ2IgYmYgdGggY2wgIHIgIGcgIGIgIGEgbnMgYiBlYXQK
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKzB4MDIzIDI0IHRjICAwICAzMiAgMCByICB5IC4gICA4ICA4
ICA4ICA4IC4gIC4gIDAgMjQgIDggMTYgMTYgMTYgMTYgIDAgMCBOb25lCisweDAyNyAyNCB0YyAg
MCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICAuICAwIDI0ICA4ICAwICAwICAwICAwICAw
IDAgTm9uZQorMHgwMmIgMjQgdGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDggIDggLiAgLiAg
MCAyNCAgOCAgMCAgMCAgMCAgMCAgMiAxIE5vbmUKKzB4MDJmIDI0IHRjICAwICAzMiAgMCByICB5
IC4gICA4ICA4ICA4ICA4IC4gIC4gIDAgMjQgIDggIDAgIDAgIDAgIDAgIDQgMSBOb25lCisweDAz
YiAyNCBkYyAgMCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICAuICAwIDI0ICA4IDE2IDE2
IDE2IDE2ICAwIDAgTm9uZQorMHgwM2YgMjQgZGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDgg
IDggLiAgLiAgMCAyNCAgOCAgMCAgMCAgMCAgMCAgMCAwIE5vbmUKKzB4MDQzIDI0IGRjICAwICAz
MiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIC4gIDAgMjQgIDggIDAgIDAgIDAgIDAgIDIgMSBO
b25lCisweDA0NyAyNCBkYyAgMCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICAuICAwIDI0
ICA4ICAwICAwICAwICAwICA0IDEgTm9uZQorYGBgCisKK0FOR0xFJ3MgY29udGV4dCBpcyBjcmVh
dGVkIHVzaW5nIDB4MDI3IGFuZCBleHBlcmltZW50YXRpb24gc2hvd3MgaXQgaXMgb25seSBjb21w
YXRpYmxlCit3aXRoIDB4MDNmIHdoaWNoIGlzIHRoZSBvbmx5IG90aGVyIGNvbmZpZyBsYWNraW5n
IGJvdGggYW4gYWNjdW11bGF0aW9uIGJ1ZmZlciBhbmQgYQorbXVsdGlzYW1wbGUgYnVmZmVyLiBU
aGUgR0xYIHNwZWMgc2VlbXMgdG8gaGludCBpdCBzaG91bGQgc3RpbGwgd29yayAoInNob3VsZCBo
YXZlIHRoZQorc2FtZSBzaXplLCBpZiB0aGV5IGV4aXN0IikgYnV0IGl0IGRvZXNuJ3Qgd29yayBp
biB0aGlzIGNhc2UuIEZpbHRlcmluZyB0aGUgY29uZmlncyB0bworaGF2ZSB0aGUgc2FtZSBtdWx0
aXNhbXBsZSBhbmQgYWNjdW11bGF0aW9uIGJ1ZmZlcnMgZ2l2ZXMgdGhlIGZvbGxvd2luZzoKKwor
YGBgCisgICAgdmlzdWFsICB4ICAgYmYgbHYgcmcgZCBzdCAgY29sb3JidWZmZXIgIHNyIGF4IGRw
IHN0IGFjY3VtYnVmZmVyICBtcyAgY2F2CisgIGlkIGRlcCBjbCBzcCAgc3ogbCAgY2kgYiBybyAg
ciAgZyAgYiAgYSBGIGdiIGJmIHRoIGNsICByICBnICBiICBhIG5zIGIgZWF0CistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisweDAyNyAyNCB0YyAgMCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICAu
ICAwIDI0ICA4ICAwICAwICAwICAwICAwIDAgTm9uZQorMHgwM2YgMjQgZGMgIDAgIDMyICAwIHIg
IHkgLiAgIDggIDggIDggIDggLiAgLiAgMCAyNCAgOCAgMCAgMCAgMCAgMCAgMCAwIE5vbmUKK2Bg
YAorCitNZXNhIEludGVsIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0KK0luIEdMWCwgYSBjcml0
ZXJpdW0gZm9yIGNvbnRleHQgYW5kIHN1cmZhY2UgY29tcGF0aWJpbGl0eSBpcyB0aGF0IGJ1ZmZl
cnMKK3Nob3VsZCBoYXZlIHRoZSBzYW1lIGRlcHRoLCBpZiB0aGV5IGV4aXN0IGF0IGFsbCBpbiB0
aGUgc3VyZmFjZS4gVGhpcyBtZWFucwordGhhdCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gbWFr
ZSBhIGNvbnRleHQgd2l0aCBhIEQyNFM4IGRlcHRoLXN0ZW5jaWwKK2J1ZmZlciB0byBhIHN1cmZh
Y2Ugd2l0aG91dCBhIGRlcHRoLXN0ZW5jaWwgYnVmZmVyLiBUaGlzIGRvZXNuJ3Qgd29yayBvbiB0
aGUKK01lc2EgSW50ZWwgZHJpdmVyLiBUaGUgbGlzdCBiZWZvcmUgdGhlIHdvcmthcm91bmQgd2Fz
IHRoZSBmb2xsb3dpbmcsIHdpdGgKKzB4MDIwIGJlaW5nIHRoZSBmYmNvbmZpZyBjaG9zZW4gZm9y
IHRoZSBjb250ZXh0OgorCitgYGAKKyAgICB2aXN1YWwgIHggICBiZiBsdiByZyBkIHN0ICBjb2xv
cmJ1ZmZlciAgc3IgYXggZHAgc3QgYWNjdW1idWZmZXIgIG1zICBjYXYKKyAgaWQgZGVwIGNsIHNw
ICBzeiBsICBjaSBiIHJvICByICBnICBiICBhIEYgZ2IgYmYgdGggY2wgIHIgIGcgIGIgIGEgbnMg
YiBlYXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzB4MDIwIDI0IHRjICAwICAzMiAgMCByICB5IC4g
ICA4ICA4ICA4ICA4IC4gIC4gIDAgMjQgIDggIDAgIDAgIDAgIDAgIDAgMCBOb25lCisweDAyMSAy
NCBkYyAgMCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICAuICAwIDI0ICA4ICAwICAwICAw
ICAwICAwIDAgTm9uZQorMHgwOGYgMzIgdGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDggIDgg
LiAgLiAgMCAyNCAgOCAgMCAgMCAgMCAgMCAgMCAwIE5vbmUKKzB4MGQwIDI0IHRjICAwICAzMiAg
MCByICB5IC4gICA4ICA4ICA4ICA4IC4gIC4gIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgMCBOb25l
CisweDBlMiAyNCBkYyAgMCAgMzIgIDAgciAgeSAuICAgOCAgOCAgOCAgOCAuICAuICAwICAwICAw
ICAwICAwICAwICAwICAwIDAgTm9uZQorMHgwZTkgMjQgZGMgIDAgIDMyICAwIHIgIHkgLiAgIDgg
IDggIDggIDggLiAgLiAgMCAyNCAgOCAgMCAgMCAgMCAgMCAgMCAwIE5vbmUKK2BgYAorCitBZnRl
ciB0aGUgd29ya2Fyb3VuZCB0aGF0IGxpc3QgYmVjb21lcyB0aGUgZm9sbG93aW5nOgorCitgYGAK
KyAgICB2aXN1YWwgIHggICBiZiBsdiByZyBkIHN0ICBjb2xvcmJ1ZmZlciAgc3IgYXggZHAgc3Qg
YWNjdW1idWZmZXIgIG1zICBjYXYKKyAgaWQgZGVwIGNsIHNwICBzeiBsICBjaSBiIHJvICByICBn
ICBiICBhIEYgZ2IgYmYgdGggY2wgIHIgIGcgIGIgIGEgbnMgYiBlYXQKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKzB4MDIwIDI0IHRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4IC4gIC4gIDAg
MjQgIDggIDAgIDAgIDAgIDAgIDAgMCBOb25lCisweDAyMSAyNCBkYyAgMCAgMzIgIDAgciAgeSAu
ICAgOCAgOCAgOCAgOCAuICAuICAwIDI0ICA4ICAwICAwICAwICAwICAwIDAgTm9uZQorMHgwOGYg
MzIgdGMgIDAgIDMyICAwIHIgIHkgLiAgIDggIDggIDggIDggLiAgLiAgMCAyNCAgOCAgMCAgMCAg
MCAgMCAgMCAwIE5vbmUKKzB4MGU5IDI0IGRjICAwICAzMiAgMCByICB5IC4gICA4ICA4ICA4ICA4
IC4gIC4gIDAgMjQgIDggIDAgIDAgIDAgIDAgIDAgMCBOb25lCitgYGAKKworRnV0dXJlIGludmVz
dGlnYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitBbGwgdGhlIG5vbi1jb25mb3JtYW50IGNv
bmZpZ3MgaGF2ZSBhIG11bHRpc2FtcGxlZCBidWZmZXIsIHNvIGl0IGNvdWxkIGJlIGludGVyZXN0
aW5nCit0byBzZWUgaWYgd2UgY2FuIHVzZSB0aGVtIHRvIGV4cG9zZSBhbm90aGVyIEVHTCBleHRl
bnNpb24uCisKK0ZpbmFsbHkgdGhpcyBkb2N1bWVudCBpcyB3cml0dGVuIHdpdGggcmVzcGVjdCB0
byBhIHNtYWxsIG51bWJlciBvZiBkcml2ZXJzLCBiZWZvcmUKK3VzaW5nIHRoZSBHTFggRUdMIGlt
cGxlbWVudGF0aW9uIGluIHRoZSB3aWxkIGl0IHdvdWxkIGJlIGdvb2QgdG8gdGVzdCBpdCBvbiBv
dGhlcgorZHJpdmVycyBhbmQgaGFyZHdhcmUuCisKK1RoZSBkcml2ZXJzIHRlc3RlZCB3ZXJlOgor
CisgLSB0aGUgcHJvcHJpZXRhcnkgTlZJRElBIGRyaXZlcgorIC0gdGhlIHByb3ByaWV0YXJ5IEFN
RCBkcml2ZXIKKyAtIHRoZSBvcGVuIHNvdXJjZSBJbnRlbCAoQnJvYWR3ZWxsKSBNZXNhIGRyaXZl
cgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9GdW5jdGlvbnNHTFguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9nbHgvRnVuY3Rpb25zR0xYLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5MCBAQAor
Ly8KKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KKy8vCisKKy8vIEZ1bmN0aW9uc0dMWC5jcHA6IEltcGxlbWVudHMgdGhlIEZ1bmN0
aW9uc0dMWCBjbGFzcy4KKworI2RlZmluZSBBTkdMRV9TS0lQX0dMWF9ERUZJTkVTIDEKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgiCisjdW5kZWYgQU5H
TEVfU0tJUF9HTFhfREVGSU5FUworCisvLyBXZSBjYW4gb25seSBpbmNsdWRlIGdseC5oIGluIGZp
bGVzIHdoaWNoIGRvIG5vdCBpbmNsdWRlIEFOR0xFJ3MgR0xFUworLy8gaGVhZGVycywgdG8gYXZv
aWQgZG91Ymx5LWRlZmluZWQgR0xlbnVtIG1hY3JvcywgdHlwZWRlZnMsIGV0Yy4KKyNpbmNsdWRl
IDxHTC9nbHguaD4KKworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8YWxnb3JpdGhtPgor
CisjaW5jbHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL2dseC9mdW5jdGlvbnNnbHhfdHlwZWRlZnMuaCIKKworbmFtZXNwYWNlIHJ4Cit7
CisKK3ZvaWQqIEZ1bmN0aW9uc0dMWDo6c0xpYkhhbmRsZSA9IG51bGxwdHI7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdGF0aWMgYm9vbCBHZXRQcm9jKFBGTkdFVFBST0NQUk9DIGdldFByb2Ms
IFQgKm1lbWJlciwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICAqbWVtYmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxUPihnZXRQcm9jKG5hbWUpKTsKKyAgICByZXR1cm4gKm1lbWJlciAhPSBudWxscHRy
OworfQorCitzdHJ1Y3QgRnVuY3Rpb25zR0xYOjpHTFhGdW5jdGlvblRhYmxlCit7CisgICAgR0xY
RnVuY3Rpb25UYWJsZSgpCisgICAgICAgIDogY3JlYXRlQ29udGV4dFB0cihudWxscHRyKSwKKyAg
ICAgICAgICBkZXN0cm95Q29udGV4dFB0cihudWxscHRyKSwKKyAgICAgICAgICBtYWtlQ3VycmVu
dFB0cihudWxscHRyKSwKKyAgICAgICAgICBzd2FwQnVmZmVyc1B0cihudWxscHRyKSwKKyAgICAg
ICAgICBxdWVyeUV4dGVuc2lvblB0cihudWxscHRyKSwKKyAgICAgICAgICBxdWVyeVZlcnNpb25Q
dHIobnVsbHB0ciksCisgICAgICAgICAgZ2V0Q3VycmVudENvbnRleHRQdHIobnVsbHB0ciksCisg
ICAgICAgICAgZ2V0Q3VycmVudERyYXdhYmxlUHRyKG51bGxwdHIpLAorICAgICAgICAgIHdhaXRY
UHRyKG51bGxwdHIpLAorICAgICAgICAgIHdhaXRHTFB0cihudWxscHRyKSwKKyAgICAgICAgICBx
dWVyeUV4dGVuc2lvbnNTdHJpbmdQdHIobnVsbHB0ciksCisgICAgICAgICAgZ2V0RkJDb25maWdz
UHRyKG51bGxwdHIpLAorICAgICAgICAgIGNob29zZUZCQ29uZmlnUHRyKG51bGxwdHIpLAorICAg
ICAgICAgIGdldEZCQ29uZmlnQXR0cmliUHRyKG51bGxwdHIpLAorICAgICAgICAgIGdldFZpc3Vh
bEZyb21GQkNvbmZpZ1B0cihudWxscHRyKSwKKyAgICAgICAgICBjcmVhdGVXaW5kb3dQdHIobnVs
bHB0ciksCisgICAgICAgICAgZGVzdHJveVdpbmRvd1B0cihudWxscHRyKSwKKyAgICAgICAgICBj
cmVhdGVQYnVmZmVyUHRyKG51bGxwdHIpLAorICAgICAgICAgIGRlc3Ryb3lQYnVmZmVyUHRyKG51
bGxwdHIpLAorICAgICAgICAgIHF1ZXJ5RHJhd2FibGVQdHIobnVsbHB0ciksCisgICAgICAgICAg
Y3JlYXRlQ29udGV4dEF0dHJpYnNBUkJQdHIobnVsbHB0ciksCisgICAgICAgICAgc3dhcEludGVy
dmFsRVhUUHRyKG51bGxwdHIpLAorICAgICAgICAgIHN3YXBJbnRlcnZhbE1FU0FQdHIobnVsbHB0
ciksCisgICAgICAgICAgc3dhcEludGVydmFsU0dJUHRyKG51bGxwdHIpCisgICAgeworICAgIH0K
KworICAgIC8vIEdMWCAxLjAKKyAgICBQRk5HTFhDUkVBVEVDT05URVhUUFJPQyBjcmVhdGVDb250
ZXh0UHRyOworICAgIFBGTkdMWERFU1RST1lDT05URVhUUFJPQyBkZXN0cm95Q29udGV4dFB0cjsK
KyAgICBQRk5HTFhNQUtFQ1VSUkVOVFBST0MgbWFrZUN1cnJlbnRQdHI7CisgICAgUEZOR0xYU1dB
UEJVRkZFUlNQUk9DIHN3YXBCdWZmZXJzUHRyOworICAgIFBGTkdMWFFVRVJZRVhURU5TSU9OUFJP
QyBxdWVyeUV4dGVuc2lvblB0cjsKKyAgICBQRk5HTFhRVUVSWVZFUlNJT05QUk9DIHF1ZXJ5VmVy
c2lvblB0cjsKKyAgICBQRk5HTFhHRVRDVVJSRU5UQ09OVEVYVFBST0MgZ2V0Q3VycmVudENvbnRl
eHRQdHI7CisgICAgUEZOR0xYR0VUQ1VSUkVOVERSQVdBQkxFUFJPQyBnZXRDdXJyZW50RHJhd2Fi
bGVQdHI7CisgICAgUEZOR0xYV0FJVFhQUk9DIHdhaXRYUHRyOworICAgIFBGTkdMWFdBSVRHTFBS
T0Mgd2FpdEdMUHRyOworCisgICAgLy8gR0xYIDEuMQorICAgIFBGTkdMWFFVRVJZRVhURU5TSU9O
U1NUUklOR1BST0MgcXVlcnlFeHRlbnNpb25zU3RyaW5nUHRyOworCisgICAgLy9HTFggMS4zCisg
ICAgUEZOR0xYR0VURkJDT05GSUdTUFJPQyBnZXRGQkNvbmZpZ3NQdHI7CisgICAgUEZOR0xYQ0hP
T1NFRkJDT05GSUdQUk9DIGNob29zZUZCQ29uZmlnUHRyOworICAgIFBGTkdMWEdFVEZCQ09ORklH
QVRUUklCUFJPQyBnZXRGQkNvbmZpZ0F0dHJpYlB0cjsKKyAgICBQRk5HTFhHRVRWSVNVQUxGUk9N
RkJDT05GSUdQUk9DIGdldFZpc3VhbEZyb21GQkNvbmZpZ1B0cjsKKyAgICBQRk5HTFhDUkVBVEVX
SU5ET1dQUk9DIGNyZWF0ZVdpbmRvd1B0cjsKKyAgICBQRk5HTFhERVNUUk9ZV0lORE9XUFJPQyBk
ZXN0cm95V2luZG93UHRyOworICAgIFBGTkdMWENSRUFURVBCVUZGRVJQUk9DIGNyZWF0ZVBidWZm
ZXJQdHI7CisgICAgUEZOR0xYREVTVFJPWVBCVUZGRVJQUk9DIGRlc3Ryb3lQYnVmZmVyUHRyOwor
ICAgIFBGTkdMWFFVRVJZRFJBV0FCTEVQUk9DIHF1ZXJ5RHJhd2FibGVQdHI7CisKKyAgICAvLyBH
TFhfQVJCX2NyZWF0ZV9jb250ZXh0CisgICAgUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQ
Uk9DIGNyZWF0ZUNvbnRleHRBdHRyaWJzQVJCUHRyOworCisgICAgLy8gR0xYX0VYVF9zd2FwX2Nv
bnRyb2wKKyAgICBQRk5HTFhTV0FQSU5URVJWQUxFWFRQUk9DIHN3YXBJbnRlcnZhbEVYVFB0cjsK
KworICAgIC8vIEdMWF9NRVNBX3N3YXBfY29udHJvbAorICAgIFBGTkdMWFNXQVBJTlRFUlZBTE1F
U0FQUk9DIHN3YXBJbnRlcnZhbE1FU0FQdHI7CisKKyAgICAvLyBHTFhfU0dJX3N3YXBfY29udHJv
bAorICAgIFBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0Mgc3dhcEludGVydmFsU0dJUHRyOworfTsK
KworRnVuY3Rpb25zR0xYOjpGdW5jdGlvbnNHTFgoKQorICA6IG1ham9yVmVyc2lvbigwKSwKKyAg
ICBtaW5vclZlcnNpb24oMCksCisgICAgbVhEaXNwbGF5KG51bGxwdHIpLAorICAgIG1YU2NyZWVu
KC0xKSwKKyAgICBtRm5QdHJzKG5ldyBHTFhGdW5jdGlvblRhYmxlKCkpCit7Cit9CisKK0Z1bmN0
aW9uc0dMWDo6fkZ1bmN0aW9uc0dMWCgpCit7CisgICAgZGVsZXRlIG1GblB0cnM7CisgICAgdGVy
bWluYXRlKCk7Cit9CisKK2Jvb2wgRnVuY3Rpb25zR0xYOjppbml0aWFsaXplKERpc3BsYXkgKnhE
aXNwbGF5LCBpbnQgc2NyZWVuLCBzdGQ6OnN0cmluZyAqZXJyb3JTdHJpbmcpCit7CisgICAgdGVy
bWluYXRlKCk7CisgICAgbVhEaXNwbGF5ID0geERpc3BsYXk7CisgICAgbVhTY3JlZW4gPSBzY3Jl
ZW47CisKKyNpZiAhZGVmaW5lZChBTkdMRV9MSU5LX0dMWCkKKyAgICAvLyBTb21lIE9wZW5HTCBp
bXBsZW1lbnRhdGlvbnMgY2FuJ3QgaGFuZGxlIGhhdmluZyB0aGlzIGxpYnJhcnkKKyAgICAvLyBo
YW5kbGUgY2xvc2VkIHdoaWxlIHRoZXJlJ3MgYW55IFggd2luZG93IHN0aWxsIG9wZW4gYWdhaW5z
dAorICAgIC8vIHdoaWNoIGEgR0xYV2luZG93IHdhcyBldmVyIGNyZWF0ZWQuCisgICAgaWYgKCFz
TGliSGFuZGxlKQorICAgIHsKKyAgICAgICAgc0xpYkhhbmRsZSA9IGRsb3BlbigibGliR0wuc28u
MSIsIFJUTERfTk9XKTsKKyAgICAgICAgaWYgKCFzTGliSGFuZGxlKQorICAgICAgICB7CisgICAg
ICAgICAgICAqZXJyb3JTdHJpbmcgPSBzdGQ6OnN0cmluZygiQ291bGQgbm90IGRsb3BlbiBsaWJH
TC5zby4xOiAiKSArIGRsZXJyb3IoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGdldFByb2MgPSByZWludGVycHJldF9jYXN0PFBGTkdFVFBST0NQ
Uk9DPihkbHN5bShzTGliSGFuZGxlLCAiZ2xYR2V0UHJvY0FkZHJlc3MiKSk7CisgICAgaWYgKCFn
ZXRQcm9jKQorICAgIHsKKyAgICAgICAgZ2V0UHJvYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0VU
UFJPQ1BST0M+KGRsc3ltKHNMaWJIYW5kbGUsICJnbFhHZXRQcm9jQWRkcmVzc0FSQiIpKTsKKyAg
ICB9CisgICAgaWYgKCFnZXRQcm9jKQorICAgIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNv
dWxkIG5vdCByZXRyaWV2ZSBnbFhHZXRQcm9jQWRkcmVzcyI7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisjZWxzZQorICAgIGdldFByb2MgPSByZWludGVycHJldF9jYXN0PFBGTkdFVFBS
T0NQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyk7CisjZW5kaWYKKworI2RlZmluZSBHRVRfUFJPQ19P
Ul9FUlJPUihNRU1CRVIsIE5BTUUpIFwKKyAgICBpZiAoIUdldFByb2MoZ2V0UHJvYywgTUVNQkVS
LCAjTkFNRSkpIFwKKyAgICB7IFwKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCBs
b2FkIEdMWCBlbnRyeSBwb2ludCAiICNOQU1FOyBcCisgICAgICAgIHJldHVybiBmYWxzZTsgXAor
ICAgIH0KKyNpZiAhZGVmaW5lZChBTkdMRV9MSU5LX0dMWCkKKyNkZWZpbmUgR0VUX0ZOUFRSX09S
X0VSUk9SKE1FTUJFUiwgTkFNRSkgR0VUX1BST0NfT1JfRVJST1IoTUVNQkVSLCBOQU1FKQorI2Vs
c2UKKyNkZWZpbmUgR0VUX0ZOUFRSX09SX0VSUk9SKE1FTUJFUiwgTkFNRSkgKk1FTUJFUiA9IE5B
TUU7CisjZW5kaWYKKworICAgIC8vIEdMWCAxLjAKKyAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1G
blB0cnMtPmNyZWF0ZUNvbnRleHRQdHIsIGdsWENyZWF0ZUNvbnRleHQpOworICAgIEdFVF9GTlBU
Ul9PUl9FUlJPUigmbUZuUHRycy0+ZGVzdHJveUNvbnRleHRQdHIsIGdsWERlc3Ryb3lDb250ZXh0
KTsKKyAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPm1ha2VDdXJyZW50UHRyLCBnbFhN
YWtlQ3VycmVudCk7CisgICAgR0VUX0ZOUFRSX09SX0VSUk9SKCZtRm5QdHJzLT5zd2FwQnVmZmVy
c1B0ciwgZ2xYU3dhcEJ1ZmZlcnMpOworICAgIEdFVF9GTlBUUl9PUl9FUlJPUigmbUZuUHRycy0+
cXVlcnlFeHRlbnNpb25QdHIsIGdsWFF1ZXJ5RXh0ZW5zaW9uKTsKKyAgICBHRVRfRk5QVFJfT1Jf
RVJST1IoJm1GblB0cnMtPnF1ZXJ5VmVyc2lvblB0ciwgZ2xYUXVlcnlWZXJzaW9uKTsKKyAgICBH
RVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPmdldEN1cnJlbnRDb250ZXh0UHRyLCBnbFhHZXRD
dXJyZW50Q29udGV4dCk7CisgICAgR0VUX0ZOUFRSX09SX0VSUk9SKCZtRm5QdHJzLT5nZXRDdXJy
ZW50RHJhd2FibGVQdHIsIGdsWEdldEN1cnJlbnREcmF3YWJsZSk7CisgICAgR0VUX0ZOUFRSX09S
X0VSUk9SKCZtRm5QdHJzLT53YWl0WFB0ciwgZ2xYV2FpdFgpOworICAgIEdFVF9GTlBUUl9PUl9F
UlJPUigmbUZuUHRycy0+d2FpdEdMUHRyLCBnbFhXYWl0R0wpOworCisgICAgLy8gR0xYIDEuMQor
ICAgIEdFVF9GTlBUUl9PUl9FUlJPUigmbUZuUHRycy0+cXVlcnlFeHRlbnNpb25zU3RyaW5nUHRy
LCBnbFhRdWVyeUV4dGVuc2lvbnNTdHJpbmcpOworCisgICAgLy8gQ2hlY2sgd2UgaGF2ZSBhIHdv
cmtpbmcgR0xYCisgICAgeworICAgICAgICBpbnQgZXJyb3JCYXNlOworICAgICAgICBpbnQgZXZl
bnRCYXNlOworICAgICAgICBpZiAoIXF1ZXJ5RXh0ZW5zaW9uKCZlcnJvckJhc2UsICZldmVudEJh
c2UpKQorICAgICAgICB7CisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiR0xYIGlzIG5vdCBw
cmVzZW50LiI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBDaGVjayB3ZSBoYXZlIGEgc3VwcG9ydGVkIHZlcnNpb24gb2YgR0xYCisgICAgaWYg
KCFxdWVyeVZlcnNpb24oJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikpCisgICAgeworICAg
ICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHF1ZXJ5IHRoZSBHTFggdmVyc2lvbi4iOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChtYWpvclZlcnNpb24gIT0gMSB8
fCBtaW5vclZlcnNpb24gPCAzKQorICAgIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIlVuc3Vw
cG9ydGVkIEdMWCB2ZXJzaW9uIChyZXF1aXJlcyBhdCBsZWFzdCAxLjMpLiI7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpleHRlbnNpb25zID0gcXVlcnlF
eHRlbnNpb25zU3RyaW5nKCk7CisgICAgaWYgKCFleHRlbnNpb25zKQorICAgIHsKKyAgICAgICAg
KmVycm9yU3RyaW5nID0gImdsWFF1ZXJ5RXh0ZW5zaW9uc1N0cmluZyByZXR1cm5lZCBOVUxMIjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBhbmdsZTo6U3BsaXRTdHJpbmdBbG9u
Z1doaXRlc3BhY2UoZXh0ZW5zaW9ucywgJm1FeHRlbnNpb25zKTsKKworICAgIC8vIEdMWCAxLjMK
KyAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPmdldEZCQ29uZmlnc1B0ciwgZ2xYR2V0
RkJDb25maWdzKTsKKyAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPmNob29zZUZCQ29u
ZmlnUHRyLCBnbFhDaG9vc2VGQkNvbmZpZyk7CisgICAgR0VUX0ZOUFRSX09SX0VSUk9SKCZtRm5Q
dHJzLT5nZXRGQkNvbmZpZ0F0dHJpYlB0ciwgZ2xYR2V0RkJDb25maWdBdHRyaWIpOworICAgIEdF
VF9GTlBUUl9PUl9FUlJPUigmbUZuUHRycy0+Z2V0VmlzdWFsRnJvbUZCQ29uZmlnUHRyLCBnbFhH
ZXRWaXN1YWxGcm9tRkJDb25maWcpOworICAgIEdFVF9GTlBUUl9PUl9FUlJPUigmbUZuUHRycy0+
Y3JlYXRlV2luZG93UHRyLCBnbFhDcmVhdGVXaW5kb3cpOworICAgIEdFVF9GTlBUUl9PUl9FUlJP
UigmbUZuUHRycy0+ZGVzdHJveVdpbmRvd1B0ciwgZ2xYRGVzdHJveVdpbmRvdyk7CisgICAgR0VU
X0ZOUFRSX09SX0VSUk9SKCZtRm5QdHJzLT5jcmVhdGVQYnVmZmVyUHRyLCBnbFhDcmVhdGVQYnVm
ZmVyKTsKKyAgICBHRVRfRk5QVFJfT1JfRVJST1IoJm1GblB0cnMtPmRlc3Ryb3lQYnVmZmVyUHRy
LCBnbFhEZXN0cm95UGJ1ZmZlcik7CisgICAgR0VUX0ZOUFRSX09SX0VSUk9SKCZtRm5QdHJzLT5x
dWVyeURyYXdhYmxlUHRyLCBnbFhRdWVyeURyYXdhYmxlKTsKKworICAgIC8vIEV4dGVuc2lvbnMK
KyAgICBpZiAoaGFzRXh0ZW5zaW9uKCJHTFhfQVJCX2NyZWF0ZV9jb250ZXh0IikpCisgICAgewor
ICAgICAgICBHRVRfUFJPQ19PUl9FUlJPUigmbUZuUHRycy0+Y3JlYXRlQ29udGV4dEF0dHJpYnNB
UkJQdHIsIGdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCKTsKKyAgICB9CisgICAgaWYgKGhhc0V4
dGVuc2lvbigiR0xYX0VYVF9zd2FwX2NvbnRyb2wiKSkKKyAgICB7CisgICAgICAgIEdFVF9QUk9D
X09SX0VSUk9SKCZtRm5QdHJzLT5zd2FwSW50ZXJ2YWxFWFRQdHIsIGdsWFN3YXBJbnRlcnZhbEVY
VCk7CisgICAgfQorICAgIGlmIChoYXNFeHRlbnNpb24oIkdMWF9NRVNBX3N3YXBfY29udHJvbCIp
KQorICAgIHsKKyAgICAgICAgR0VUX1BST0NfT1JfRVJST1IoJm1GblB0cnMtPnN3YXBJbnRlcnZh
bE1FU0FQdHIsIGdsWFN3YXBJbnRlcnZhbE1FU0EpOworICAgIH0KKyAgICBpZiAoaGFzRXh0ZW5z
aW9uKCJHTFhfU0dJX3N3YXBfY29udHJvbCIpKQorICAgIHsKKyAgICAgICAgR0VUX1BST0NfT1Jf
RVJST1IoJm1GblB0cnMtPnN3YXBJbnRlcnZhbFNHSVB0ciwgZ2xYU3dhcEludGVydmFsU0dJKTsK
KyAgICB9CisKKyN1bmRlZiBHRVRfRk5QVFJfT1JfRVJST1IKKyN1bmRlZiBHRVRfUFJPQ19PUl9F
UlJPUgorCisgICAgKmVycm9yU3RyaW5nID0gIiI7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgRnVuY3Rpb25zR0xYOjp0ZXJtaW5hdGUoKQoreworfQorCitib29sIEZ1bmN0aW9uc0dMWDo6
aGFzRXh0ZW5zaW9uKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikgY29uc3QKK3sKKyAgICByZXR1cm4g
c3RkOjpmaW5kKG1FeHRlbnNpb25zLmJlZ2luKCksIG1FeHRlbnNpb25zLmVuZCgpLCBleHRlbnNp
b24pICE9IG1FeHRlbnNpb25zLmVuZCgpOworfQorCitEaXNwbGF5ICpGdW5jdGlvbnNHTFg6Omdl
dERpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtWERpc3BsYXk7Cit9CisKK2ludCBGdW5j
dGlvbnNHTFg6OmdldFNjcmVlbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1YU2NyZWVuOworfQor
CisvLyBHTFggZnVuY3Rpb25zCisKKy8vIEdMWCAxLjAKK2dseDo6Q29udGV4dCBGdW5jdGlvbnNH
TFg6OmNyZWF0ZUNvbnRleHQoWFZpc3VhbEluZm8gKnZpc3VhbCwgZ2x4OjpDb250ZXh0IHNoYXJl
LCBib29sIGRpcmVjdCkgY29uc3QKK3sKKyAgICBHTFhDb250ZXh0IHNoYXJlQ3R4ID0gcmVpbnRl
cnByZXRfY2FzdDxHTFhDb250ZXh0PihzaGFyZSk7CisgICAgR0xYQ29udGV4dCBjb250ZXh0ID0g
bUZuUHRycy0+Y3JlYXRlQ29udGV4dFB0cihtWERpc3BsYXksIHZpc3VhbCwgc2hhcmVDdHgsIGRp
cmVjdCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z2x4OjpDb250ZXh0Pihjb250ZXh0
KTsKK30KK3ZvaWQgRnVuY3Rpb25zR0xYOjpkZXN0cm95Q29udGV4dChnbHg6OkNvbnRleHQgY29u
dGV4dCkgY29uc3QKK3sKKyAgICBHTFhDb250ZXh0IGN0eCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xY
Q29udGV4dD4oY29udGV4dCk7CisgICAgbUZuUHRycy0+ZGVzdHJveUNvbnRleHRQdHIobVhEaXNw
bGF5LCBjdHgpOworfQorQm9vbCBGdW5jdGlvbnNHTFg6Om1ha2VDdXJyZW50KGdseDo6RHJhd2Fi
bGUgZHJhd2FibGUsIGdseDo6Q29udGV4dCBjb250ZXh0KSBjb25zdAoreworICAgIEdMWENvbnRl
eHQgY3R4ID0gcmVpbnRlcnByZXRfY2FzdDxHTFhDb250ZXh0Pihjb250ZXh0KTsKKyAgICByZXR1
cm4gbUZuUHRycy0+bWFrZUN1cnJlbnRQdHIobVhEaXNwbGF5LCBkcmF3YWJsZSwgY3R4KTsKK30K
K3ZvaWQgRnVuY3Rpb25zR0xYOjpzd2FwQnVmZmVycyhnbHg6OkRyYXdhYmxlIGRyYXdhYmxlKSBj
b25zdAoreworICAgIG1GblB0cnMtPnN3YXBCdWZmZXJzUHRyKG1YRGlzcGxheSwgZHJhd2FibGUp
OworfQorQm9vbCBGdW5jdGlvbnNHTFg6OnF1ZXJ5RXh0ZW5zaW9uKGludCAqZXJyb3JCYXNlLCBp
bnQgKmV2ZW50KSBjb25zdAoreworICAgIHJldHVybiBtRm5QdHJzLT5xdWVyeUV4dGVuc2lvblB0
cihtWERpc3BsYXksIGVycm9yQmFzZSwgZXZlbnQpOworfQorQm9vbCBGdW5jdGlvbnNHTFg6OnF1
ZXJ5VmVyc2lvbihpbnQgKm1ham9yLCBpbnQgKm1pbm9yKSBjb25zdAoreworICAgIHJldHVybiBt
Rm5QdHJzLT5xdWVyeVZlcnNpb25QdHIobVhEaXNwbGF5LCBtYWpvciwgbWlub3IpOworfQorZ2x4
OjpDb250ZXh0IEZ1bmN0aW9uc0dMWDo6Z2V0Q3VycmVudENvbnRleHQoKSBjb25zdAoreworICAg
IEdMWENvbnRleHQgY29udGV4dCA9IG1GblB0cnMtPmdldEN1cnJlbnRDb250ZXh0UHRyKCk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z2x4OjpDb250ZXh0Pihjb250ZXh0KTsKK30KK2ds
eDo6RHJhd2FibGUgRnVuY3Rpb25zR0xYOjpnZXRDdXJyZW50RHJhd2FibGUoKSBjb25zdAorewor
ICAgIEdMWERyYXdhYmxlIGRyYXdhYmxlID0gbUZuUHRycy0+Z2V0Q3VycmVudERyYXdhYmxlUHRy
KCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z2x4OjpEcmF3YWJsZT4oZHJhd2FibGUp
OworfQordm9pZCBGdW5jdGlvbnNHTFg6OndhaXRYKCkgY29uc3QKK3sKKyAgICBtRm5QdHJzLT53
YWl0WFB0cigpOworfQordm9pZCBGdW5jdGlvbnNHTFg6OndhaXRHTCgpIGNvbnN0Cit7CisgICAg
bUZuUHRycy0+d2FpdEdMUHRyKCk7Cit9CisKKy8vIEdMWCAxLjEKK2NvbnN0IGNoYXIgKkZ1bmN0
aW9uc0dMWDo6cXVlcnlFeHRlbnNpb25zU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUZu
UHRycy0+cXVlcnlFeHRlbnNpb25zU3RyaW5nUHRyKG1YRGlzcGxheSwgbVhTY3JlZW4pOworfQor
CisvLyBHTFggMS40CitnbHg6OkZCQ29uZmlnICpGdW5jdGlvbnNHTFg6OmdldEZCQ29uZmlncyhp
bnQgKm5FbGVtZW50cykgY29uc3QKK3sKKyAgICBHTFhGQkNvbmZpZyAqY29uZmlncyA9IG1GblB0
cnMtPmdldEZCQ29uZmlnc1B0cihtWERpc3BsYXksIG1YU2NyZWVuLCBuRWxlbWVudHMpOworICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGdseDo6RkJDb25maWcqPihjb25maWdzKTsKK30KK2ds
eDo6RkJDb25maWcgKkZ1bmN0aW9uc0dMWDo6Y2hvb3NlRkJDb25maWcoY29uc3QgaW50ICphdHRy
aWJMaXN0LCBpbnQgKm5FbGVtZW50cykgY29uc3QKK3sKKyAgICBHTFhGQkNvbmZpZyAqY29uZmln
cyA9IG1GblB0cnMtPmNob29zZUZCQ29uZmlnUHRyKG1YRGlzcGxheSwgbVhTY3JlZW4sIGF0dHJp
Ykxpc3QsIG5FbGVtZW50cyk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Z2x4OjpGQkNv
bmZpZyo+KGNvbmZpZ3MpOworfQoraW50IEZ1bmN0aW9uc0dMWDo6Z2V0RkJDb25maWdBdHRyaWIo
Z2x4OjpGQkNvbmZpZyBjb25maWcsIGludCBhdHRyaWJ1dGUsIGludCAqdmFsdWUpIGNvbnN0Cit7
CisgICAgR0xYRkJDb25maWcgY2ZnID0gcmVpbnRlcnByZXRfY2FzdDxHTFhGQkNvbmZpZz4oY29u
ZmlnKTsKKyAgICByZXR1cm4gbUZuUHRycy0+Z2V0RkJDb25maWdBdHRyaWJQdHIobVhEaXNwbGF5
LCBjZmcsIGF0dHJpYnV0ZSwgdmFsdWUpOworfQorWFZpc3VhbEluZm8gKkZ1bmN0aW9uc0dMWDo6
Z2V0VmlzdWFsRnJvbUZCQ29uZmlnKGdseDo6RkJDb25maWcgY29uZmlnKSBjb25zdAoreworICAg
IEdMWEZCQ29uZmlnIGNmZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xYRkJDb25maWc+KGNvbmZpZyk7
CisgICAgcmV0dXJuIG1GblB0cnMtPmdldFZpc3VhbEZyb21GQkNvbmZpZ1B0cihtWERpc3BsYXks
IGNmZyk7Cit9CitHTFhXaW5kb3cgRnVuY3Rpb25zR0xYOjpjcmVhdGVXaW5kb3coZ2x4OjpGQkNv
bmZpZyBjb25maWcsIFdpbmRvdyB3aW5kb3csIGNvbnN0IGludCAqYXR0cmliTGlzdCkgY29uc3QK
K3sKKyAgICBHTFhGQkNvbmZpZyBjZmcgPSByZWludGVycHJldF9jYXN0PEdMWEZCQ29uZmlnPihj
b25maWcpOworICAgIHJldHVybiBtRm5QdHJzLT5jcmVhdGVXaW5kb3dQdHIobVhEaXNwbGF5LCBj
ZmcsIHdpbmRvdywgYXR0cmliTGlzdCk7Cit9Cit2b2lkIEZ1bmN0aW9uc0dMWDo6ZGVzdHJveVdp
bmRvdyhnbHg6OldpbmRvdyB3aW5kb3cpIGNvbnN0Cit7CisgICAgbUZuUHRycy0+ZGVzdHJveVdp
bmRvd1B0cihtWERpc3BsYXksIHdpbmRvdyk7Cit9CitnbHg6OlBidWZmZXIgRnVuY3Rpb25zR0xY
OjpjcmVhdGVQYnVmZmVyKGdseDo6RkJDb25maWcgY29uZmlnLCBjb25zdCBpbnQgKmF0dHJpYkxp
c3QpIGNvbnN0Cit7CisgICAgR0xYRkJDb25maWcgY2ZnID0gcmVpbnRlcnByZXRfY2FzdDxHTFhG
QkNvbmZpZz4oY29uZmlnKTsKKyAgICByZXR1cm4gbUZuUHRycy0+Y3JlYXRlUGJ1ZmZlclB0ciht
WERpc3BsYXksIGNmZywgYXR0cmliTGlzdCk7Cit9Cit2b2lkIEZ1bmN0aW9uc0dMWDo6ZGVzdHJv
eVBidWZmZXIoZ2x4OjpQYnVmZmVyIHBidWZmZXIpIGNvbnN0Cit7CisgICAgbUZuUHRycy0+ZGVz
dHJveVBidWZmZXJQdHIobVhEaXNwbGF5LCBwYnVmZmVyKTsKK30KK3ZvaWQgRnVuY3Rpb25zR0xY
OjpxdWVyeURyYXdhYmxlKGdseDo6RHJhd2FibGUgZHJhd2FibGUsIGludCBhdHRyaWJ1dGUsIHVu
c2lnbmVkIGludCAqdmFsdWUpIGNvbnN0Cit7CisgICAgbUZuUHRycy0+cXVlcnlEcmF3YWJsZVB0
cihtWERpc3BsYXksIGRyYXdhYmxlLCBhdHRyaWJ1dGUsIHZhbHVlKTsKK30KKworLy8gR0xYX0FS
Ql9jcmVhdGVfY29udGV4dAorZ2x4OjpDb250ZXh0IEZ1bmN0aW9uc0dMWDo6Y3JlYXRlQ29udGV4
dEF0dHJpYnNBUkIoZ2x4OjpGQkNvbmZpZyBjb25maWcsIGdseDo6Q29udGV4dCBzaGFyZUNvbnRl
eHQsIEJvb2wgZGlyZWN0LCBjb25zdCBpbnQgKmF0dHJpYkxpc3QpIGNvbnN0Cit7CisgICAgR0xY
Q29udGV4dCBzaGFyZUN0eCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xYQ29udGV4dD4oc2hhcmVDb250
ZXh0KTsKKyAgICBHTFhGQkNvbmZpZyBjZmcgPSByZWludGVycHJldF9jYXN0PEdMWEZCQ29uZmln
Pihjb25maWcpOworICAgIEdMWENvbnRleHQgY3R4ID0gbUZuUHRycy0+Y3JlYXRlQ29udGV4dEF0
dHJpYnNBUkJQdHIobVhEaXNwbGF5LCBjZmcsIHNoYXJlQ3R4LCBkaXJlY3QsIGF0dHJpYkxpc3Qp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGdseDo6Q29udGV4dD4oY3R4KTsKK30KKwor
dm9pZCBGdW5jdGlvbnNHTFg6OnN3YXBJbnRlcnZhbEVYVChnbHg6OkRyYXdhYmxlIGRyYXdhYmxl
LCBpbnQgaW50ZXJ2YWxzKSBjb25zdAoreworICAgIG1GblB0cnMtPnN3YXBJbnRlcnZhbEVYVFB0
cihtWERpc3BsYXksIGRyYXdhYmxlLCBpbnRlcnZhbHMpOworfQorCitpbnQgRnVuY3Rpb25zR0xY
Ojpzd2FwSW50ZXJ2YWxNRVNBKGludCBpbnRlcnZhbHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1G
blB0cnMtPnN3YXBJbnRlcnZhbE1FU0FQdHIoaW50ZXJ2YWxzKTsKK30KKworaW50IEZ1bmN0aW9u
c0dMWDo6c3dhcEludGVydmFsU0dJKGludCBpbnRlcnZhbHMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1GblB0cnMtPnN3YXBJbnRlcnZhbFNHSVB0cihpbnRlcnZhbHMpOworfQorCit9CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0
aW9uc0dMWC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9u
c0dMWC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTUgQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisv
LyBGdW5jdGlvbnNHTFguaDogRGVmaW5lcyB0aGUgRnVuY3Rpb25zR0xYIGNsYXNzIHRvIGxvYWQg
ZnVuY3Rpb25zIGFuZCBkYXRhIGZyb20gR0xYCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJf
R0xfR0xYX0ZVTkNUSU9OU0dMWF9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhf
RlVOQ1RJT05TR0xYX0hfCisKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L3BsYXRmb3JtX2dseC5oIgorCitu
YW1lc3BhY2UgcngKK3sKKworY2xhc3MgRnVuY3Rpb25zR0xYCit7CisgIHB1YmxpYzoKKyAgICBG
dW5jdGlvbnNHTFgoKTsKKyAgICB+RnVuY3Rpb25zR0xYKCk7CisKKyAgICAvLyBMb2FkIGRhdGEg
ZnJvbSBHTFgsIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMKKyAgICBib29sIGluaXRpYWxp
emUoRGlzcGxheSAqeERpc3BsYXksIGludCBzY3JlZW4sIHN0ZDo6c3RyaW5nICplcnJvclN0cmlu
Zyk7CisgICAgdm9pZCB0ZXJtaW5hdGUoKTsKKworICAgIGJvb2wgaGFzRXh0ZW5zaW9uKGNvbnN0
IGNoYXIgKmV4dGVuc2lvbikgY29uc3Q7CisgICAgaW50IG1ham9yVmVyc2lvbjsKKyAgICBpbnQg
bWlub3JWZXJzaW9uOworCisgICAgRGlzcGxheSAqZ2V0RGlzcGxheSgpIGNvbnN0OworICAgIGlu
dCBnZXRTY3JlZW4oKSBjb25zdDsKKworICAgIFBGTkdFVFBST0NQUk9DIGdldFByb2M7CisKKyAg
ICAvLyBHTFggMS4wCisgICAgZ2x4OjpDb250ZXh0IGNyZWF0ZUNvbnRleHQoWFZpc3VhbEluZm8g
KnZpc3VhbCwgZ2x4OjpDb250ZXh0IHNoYXJlLCBib29sIGRpcmVjdCkgY29uc3Q7CisgICAgdm9p
ZCBkZXN0cm95Q29udGV4dChnbHg6OkNvbnRleHQgY29udGV4dCkgY29uc3Q7CisgICAgQm9vbCBt
YWtlQ3VycmVudChnbHg6OkRyYXdhYmxlIGRyYXdhYmxlLCBnbHg6OkNvbnRleHQgY29udGV4dCkg
Y29uc3Q7CisgICAgdm9pZCBzd2FwQnVmZmVycyhnbHg6OkRyYXdhYmxlIGRyYXdhYmxlKSBjb25z
dDsKKyAgICBCb29sIHF1ZXJ5RXh0ZW5zaW9uKGludCAqZXJyb3JCYXNlLCBpbnQgKmV2ZW50KSBj
b25zdDsKKyAgICBCb29sIHF1ZXJ5VmVyc2lvbihpbnQgKm1ham9yLCBpbnQgKm1pbm9yKSBjb25z
dDsKKyAgICBnbHg6OkNvbnRleHQgZ2V0Q3VycmVudENvbnRleHQoKSBjb25zdDsKKyAgICBnbHg6
OkRyYXdhYmxlIGdldEN1cnJlbnREcmF3YWJsZSgpIGNvbnN0OworICAgIHZvaWQgd2FpdFgoKSBj
b25zdDsKKyAgICB2b2lkIHdhaXRHTCgpIGNvbnN0OworCisgICAgLy8gR0xYIDEuMQorICAgIGNv
bnN0IGNoYXIgKnF1ZXJ5RXh0ZW5zaW9uc1N0cmluZygpIGNvbnN0OworCisgICAgLy8gR0xYIDEu
MworICAgIGdseDo6RkJDb25maWcgKmdldEZCQ29uZmlncyhpbnQgKm5FbGVtZW50cykgY29uc3Q7
CisgICAgZ2x4OjpGQkNvbmZpZyAqY2hvb3NlRkJDb25maWcoY29uc3QgaW50ICphdHRyaWJMaXN0
LCBpbnQgKm5FbGVtZW50cykgY29uc3Q7CisgICAgaW50IGdldEZCQ29uZmlnQXR0cmliKGdseDo6
RkJDb25maWcgY29uZmlnLCBpbnQgYXR0cmlidXRlLCBpbnQgKnZhbHVlKSBjb25zdDsKKyAgICBY
VmlzdWFsSW5mbyAqZ2V0VmlzdWFsRnJvbUZCQ29uZmlnKGdseDo6RkJDb25maWcgY29uZmlnKSBj
b25zdDsKKyAgICBnbHg6OldpbmRvdyBjcmVhdGVXaW5kb3coZ2x4OjpGQkNvbmZpZyBjb25maWcs
IFdpbmRvdyB3aW5kb3csIGNvbnN0IGludCAqYXR0cmliTGlzdCkgY29uc3Q7CisgICAgdm9pZCBk
ZXN0cm95V2luZG93KGdseDo6V2luZG93IHdpbmRvdykgY29uc3Q7CisgICAgZ2x4OjpQYnVmZmVy
IGNyZWF0ZVBidWZmZXIoZ2x4OjpGQkNvbmZpZyBjb25maWcsIGNvbnN0IGludCAqYXR0cmliTGlz
dCkgY29uc3Q7CisgICAgdm9pZCBkZXN0cm95UGJ1ZmZlcihnbHg6OlBidWZmZXIgcGJ1ZmZlcikg
Y29uc3Q7CisgICAgdm9pZCBxdWVyeURyYXdhYmxlKGdseDo6RHJhd2FibGUgZHJhd2FibGUsIGlu
dCBhdHRyaWJ1dGUsIHVuc2lnbmVkIGludCAqdmFsdWUpIGNvbnN0OworCisgICAgLy8gR0xYX0FS
Ql9jcmVhdGVfY29udGV4dAorICAgIGdseDo6Q29udGV4dCBjcmVhdGVDb250ZXh0QXR0cmlic0FS
QihnbHg6OkZCQ29uZmlnIGNvbmZpZywgZ2x4OjpDb250ZXh0IHNoYXJlQ29udGV4dCwgQm9vbCBk
aXJlY3QsIGNvbnN0IGludCAqYXR0cmliTGlzdCkgY29uc3Q7CisKKyAgICAvLyBHTFhfRVhUX3N3
YXBfY29udHJvbAorICAgIHZvaWQgc3dhcEludGVydmFsRVhUKGdseDo6RHJhd2FibGUgZHJhd2Fi
bGUsIGludCBpbnRlcnZhbCkgY29uc3Q7CisKKyAgICAvLyBHTFhfTUVTQV9zd2FwX2NvbnRyb2wK
KyAgICBpbnQgc3dhcEludGVydmFsTUVTQShpbnQgaW50ZXJ2YWwpIGNvbnN0OworCisgICAgLy8g
R0xYX1NHSV9zd2FwX2NvbnRyb2wKKyAgICBpbnQgc3dhcEludGVydmFsU0dJKGludCBpbnRlcnZh
bCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICAvLyBTbyBhcyB0byBpc29sYXRlIEdMWCBmcm9t
IGFuZ2xlIHdlIGRvIG5vdCBpbmNsdWRlIGFuZ2xldXRpbHMuaCBhbmQgY2Fubm90CisgICAgLy8g
dXNlIGFuZ2xlOjpOb25Db3B5YWJsZSBzbyB3ZSByZXBsaWNhdGVkIGl0IGhlcmUgaW5zdGVhZC4K
KyAgICBGdW5jdGlvbnNHTFgoY29uc3QgRnVuY3Rpb25zR0xYJikgPSBkZWxldGU7CisgICAgdm9p
ZCBvcGVyYXRvcj0oY29uc3QgRnVuY3Rpb25zR0xYJikgPSBkZWxldGU7CisKKyAgICBzdHJ1Y3Qg
R0xYRnVuY3Rpb25UYWJsZTsKKworICAgIHN0YXRpYyB2b2lkICpzTGliSGFuZGxlOworICAgIERp
c3BsYXkgKm1YRGlzcGxheTsKKyAgICBpbnQgbVhTY3JlZW47CisKKyAgICBHTFhGdW5jdGlvblRh
YmxlICptRm5QdHJzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBtRXh0ZW5zaW9uczsK
K307CisKK30KKworI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0dMWF9GVU5DVElPTlNH
TFhfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VH
TFguY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNDIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBQYnVmZmVyU3VyZmFjZUdMWC5j
cHA6IEdMWCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIFBCdWZmZXJzCisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaCIKKwor
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9EaXNwbGF5R0xYLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1
bmN0aW9uc0dMWC5oIgorCituYW1lc3BhY2UgcngKK3sKKworUGJ1ZmZlclN1cmZhY2VHTFg6OlBi
dWZmZXJTdXJmYWNlR0xYKFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgbGFyZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBGdW5jdGlvbnNHTFggJmdseCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbHg6OkNvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmlnKQorICAgIDogU3VyZmFjZUdMWChy
ZW5kZXJlciksCisgICAgICBtV2lkdGgod2lkdGgpLAorICAgICAgbUhlaWdodChoZWlnaHQpLAor
ICAgICAgbUxhcmdlc3QobGFyZ2VzdCksCisgICAgICBtR0xYKGdseCksCisgICAgICBtQ29udGV4
dChjb250ZXh0KSwKKyAgICAgIG1GQkNvbmZpZyhmYkNvbmZpZyksCisgICAgICBtUGJ1ZmZlcigw
KQoreworfQorCitQYnVmZmVyU3VyZmFjZUdMWDo6flBidWZmZXJTdXJmYWNlR0xYKCkKK3sKKyAg
ICBpZiAobVBidWZmZXIpCisgICAgeworICAgICAgICBtR0xYLmRlc3Ryb3lQYnVmZmVyKG1QYnVm
ZmVyKTsKKyAgICB9Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6OmluaXRpYWxp
emUoKQoreworICAgIC8vIEF2b2lkIGNyZWF0aW5nIDAtc2l6ZWQgUEJ1ZmZlcnMgYXMgaXQgZmFp
bHMgb24gdGhlIEludGVsIE1lc2EgZHJpdmVyCisgICAgLy8gYXMgY29tbWVudGVkIG9uIGh0dHBz
Oi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODY5IHNvIHdlCisgICAg
Ly8gdXNlICh3LCAxKSBvciAoMSwgaCkgaW5zdGVhZC4KKyAgICBpbnQgd2lkdGggPSBzdGQ6Om1h
eCgxLCBzdGF0aWNfY2FzdDxpbnQ+KG1XaWR0aCkpOworICAgIGludCBoZWlnaHQgPSBzdGQ6Om1h
eCgxLCBzdGF0aWNfY2FzdDxpbnQ+KG1IZWlnaHQpKTsKKworICAgIGNvbnN0IGludCBhdHRyaWJz
W10gPQorICAgIHsKKyAgICAgICAgR0xYX1BCVUZGRVJfV0lEVEgsIHdpZHRoLAorICAgICAgICBH
TFhfUEJVRkZFUl9IRUlHSFQsIGhlaWdodCwKKyAgICAgICAgR0xYX0xBUkdFU1RfUEJVRkZFUiwg
bUxhcmdlc3QsCisgICAgICAgIE5vbmUKKyAgICB9OworCisgICAgbVBidWZmZXIgPSBtR0xYLmNy
ZWF0ZVBidWZmZXIobUZCQ29uZmlnLCBhdHRyaWJzKTsKKyAgICBpZiAoIW1QYnVmZmVyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BTExPQywgIkZhaWxlZCB0byBj
cmVhdGUgYSBuYXRpdmUgR0xYIHBidWZmZXIuIik7CisgICAgfQorCisgICAgaWYgKG1MYXJnZXN0
KQorICAgIHsKKyAgICAgICAgbUdMWC5xdWVyeURyYXdhYmxlKG1QYnVmZmVyLCBHTFhfV0lEVEgs
ICZtV2lkdGgpOworICAgICAgICBtR0xYLnF1ZXJ5RHJhd2FibGUobVBidWZmZXIsIEdMWF9IRUlH
SFQsICZtSGVpZ2h0KTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6Om1ha2VDdXJyZW50KCkKK3sK
KyAgICBpZiAobUdMWC5tYWtlQ3VycmVudChtUGJ1ZmZlciwgbUNvbnRleHQpICE9IFRydWUpCisg
ICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVkpOworICAgIH0K
KyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1
ZmZlclN1cmZhY2VHTFg6OnN3YXAoKQoreworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUdMWDo6cG9zdFN1YkJ1ZmZlcihF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1
cmZhY2VHTFg6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lk
ICoqdmFsdWUpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUdMWDo6YmluZFRl
eEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2Vn
bDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVy
KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VD
Q0VTUyk7Cit9CisKK3ZvaWQgUGJ1ZmZlclN1cmZhY2VHTFg6OnNldFN3YXBJbnRlcnZhbChFR0xp
bnQgaW50ZXJ2YWwpCit7Cit9CisKK0VHTGludCBQYnVmZmVyU3VyZmFjZUdMWDo6Z2V0V2lkdGgo
KSBjb25zdAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisKK0VHTGludCBQYnVmZmVyU3VyZmFj
ZUdMWDo6Z2V0SGVpZ2h0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUhlaWdodDsKK30KKworRUdM
aW50IFBidWZmZXJTdXJmYWNlR0xYOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitFR0xp
bnQgUGJ1ZmZlclN1cmZhY2VHTFg6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEVHTF9CVUZGRVJfUFJFU0VSVkVEOworfQorCitlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNl
R0xYOjpjaGVja0ZvclJlc2l6ZSgpCit7CisgICAgLy8gVGhlIHNpemUgb2YgcGJ1ZmZlcnMgbmV2
ZXIgY2hhbmdlCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorfQpJbmRl
eDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9Q
YnVmZmVyU3VyZmFjZUdMWC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gUEJ1ZmZlclN1cmZhY2VHTFguaDogR0xYIGltcGxlbWVudGF0
aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3IgUEJ1ZmZlcnMKKworI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9HTF9HTFhfUEJVRkZFUlNVUkZBQ0VHTFhfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVS
RVJfR0xfR0xYX1BCVUZGRVJTVVJGQUNFR0xYX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9nbHgvcGxhdGZvcm1fZ2x4LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
Z2wvZ2x4L1N1cmZhY2VHTFguaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZ1bmN0aW9u
c0dMWDsKKworY2xhc3MgUGJ1ZmZlclN1cmZhY2VHTFggOiBwdWJsaWMgU3VyZmFjZUdMWAorewor
ICBwdWJsaWM6CisgICAgUGJ1ZmZlclN1cmZhY2VHTFgoUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsYXJnZXN0LAorICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMWCAmZ2x4LAorICAgICAgICAgICAg
ICAgICAgICAgIGdseDo6Q29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgIGds
eDo6RkJDb25maWcgZmJDb25maWcpOworICAgIH5QYnVmZmVyU3VyZmFjZUdMWCgpIG92ZXJyaWRl
OworCisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJv
ciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJp
ZGU7CisgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdM
aW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5
U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJy
aWRlOworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQg
aW50ZXJ2YWwpIG92ZXJyaWRlOworCisgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgRUdMaW50IGdldEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRUdMaW50
IGlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBn
ZXRTd2FwQmVoYXZpb3IoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgY2hlY2tG
b3JSZXNpemUoKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIHVuc2lnbmVkIG1XaWR0aDsK
KyAgICB1bnNpZ25lZCBtSGVpZ2h0OworICAgIGJvb2wgbUxhcmdlc3Q7CisKKyAgICBjb25zdCBG
dW5jdGlvbnNHTFggJm1HTFg7CisgICAgZ2x4OjpDb250ZXh0IG1Db250ZXh0OworICAgIGdseDo6
RkJDb25maWcgbUZCQ29uZmlnOworICAgIGdseDo6UGJ1ZmZlciBtUGJ1ZmZlcjsKK307CisKK30K
KworI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0dMWF9QQlVGRkVSU1VSRkFDRUdMWF9I
XwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9TdXJmYWNlR0xYLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9TdXJmYWNlR0xYLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1N1
cmZhY2VHTFguaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gU3VyZmFjZUdMWC5oOiBjb21tb24gaW50ZXJmYWNlIGZvciBHTFggc3VyZmFjZXMKKwor
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfU1VSRkFDRUdMWF9IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfU1VSRkFDRUdMWF9IXworCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBT
dXJmYWNlR0xYIDogcHVibGljIFN1cmZhY2VHTAoreworICBwdWJsaWM6CisgICAgU3VyZmFjZUdM
WChSZW5kZXJlckdMICpyZW5kZXJlcikgOiBTdXJmYWNlR0wocmVuZGVyZXIpIHt9CisKKyAgICB2
aXJ0dWFsIGVnbDo6RXJyb3IgY2hlY2tGb3JSZXNpemUoKSA9IDA7Cit9OworfQorCisjZW5kaWYg
IC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0dMWF9TVVJGQUNFR0xYX0hfCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZh
Y2VHTFguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dp
bmRvd1N1cmZhY2VHTFguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQzIEBACisvLwor
Ly8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgorLy8KKworLy8gV2luZG93U3VyZmFjZUdMWC5jcHA6IEdMWCBpbXBsZW1lbnRhdGlvbiBv
ZiBlZ2w6OlN1cmZhY2UgZm9yIHdpbmRvd3MKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmgiCisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5oIgorCituYW1lc3Bh
Y2UgcngKK3sKKworc3RhdGljIGludCBJZ25vcmVYMTFFcnJvcnMoRGlzcGxheSAqLCBYRXJyb3JF
dmVudCAqKQoreworICAgIHJldHVybiAwOworfQorCitXaW5kb3dTdXJmYWNlR0xYOjpXaW5kb3dT
dXJmYWNlR0xYKGNvbnN0IEZ1bmN0aW9uc0dMWCAmZ2x4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEaXNwbGF5R0xYICpnbHhEaXNwbGF5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2luZG93IHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2x4OjpDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdseDo6RkJDb25maWcgZmJDb25maWcpCisgICAgOiBTdXJmYWNlR0xYKHJlbmRl
cmVyKSwKKyAgICAgIG1QYXJlbnQod2luZG93KSwKKyAgICAgIG1XaW5kb3coMCksCisgICAgICBt
RGlzcGxheShkaXNwbGF5KSwKKyAgICAgIG1HTFgoZ2x4KSwKKyAgICAgIG1HTFhEaXNwbGF5KGds
eERpc3BsYXkpLAorICAgICAgbUNvbnRleHQoY29udGV4dCksCisgICAgICBtRkJDb25maWcoZmJD
b25maWcpLAorICAgICAgbUdMWFdpbmRvdygwKQoreworfQorCitXaW5kb3dTdXJmYWNlR0xYOjp+
V2luZG93U3VyZmFjZUdMWCgpCit7CisgICAgaWYgKG1HTFhXaW5kb3cpCisgICAgeworICAgICAg
ICBtR0xYLmRlc3Ryb3lXaW5kb3cobUdMWFdpbmRvdyk7CisgICAgfQorCisgICAgaWYgKG1XaW5k
b3cpCisgICAgeworICAgICAgICAvLyBXaGVuIGRlc3Ryb3lpbmcgdGhlIHdpbmRvdywgaXQgbWF5
IGhhcHBlbiB0aGF0IHRoZSB3aW5kb3cgaGFzIGFscmVhZHkgYmVlbgorICAgICAgICAvLyBkZXN0
cm95ZWQgYnkgdGhlIGFwcGxpY2F0aW9uICh0aGlzIGhhcHBlbnMgaW4gQ2hyb21pdW0pLiBUaGVy
ZSBpcyBubyB3YXkgdG8KKyAgICAgICAgLy8gYXRvbWljYWxseSBjaGVjayB0aGF0IGEgd2luZG93
IGV4aXN0cyBhbmQgdG8gZGVzdHJveSBpdCBzbyBpbnN0ZWFkIHdlIGNhbGwKKyAgICAgICAgLy8g
WERlc3Ryb3lXaW5kb3csIGlnbm9yaW5nIGFueSBlcnJvcnMuCisgICAgICAgIGF1dG8gb2xkRXJy
b3JIYW5kbGVyID0gWFNldEVycm9ySGFuZGxlcihJZ25vcmVYMTFFcnJvcnMpOworICAgICAgICBY
RGVzdHJveVdpbmRvdyhtRGlzcGxheSwgbVdpbmRvdyk7CisgICAgICAgIFhTeW5jKG1EaXNwbGF5
LCBGYWxzZSk7CisgICAgICAgIFhTZXRFcnJvckhhbmRsZXIob2xkRXJyb3JIYW5kbGVyKTsKKyAg
ICB9CisKKyAgICBtR0xYRGlzcGxheS0+c3luY1hDb21tYW5kcygpOworfQorCitlZ2w6OkVycm9y
IFdpbmRvd1N1cmZhY2VHTFg6OmluaXRpYWxpemUoKQoreworICAgIC8vIENoZWNrIHRoYXQgdGhl
IHdpbmRvdydzIHZpc3VhbCBJRCBpcyB2YWxpZCwgYXMgcGFydCBvZiB0aGUgQU1HTEVfeDExX3Zp
c3VhbAorICAgIC8vIGV4dGVuc2lvbi4KKyAgICB7CisgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVz
IHdpbmRvd0F0dHJpYnV0ZXM7CisgICAgICAgIFhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1EaXNwbGF5
LCBtUGFyZW50LCAmd2luZG93QXR0cmlidXRlcyk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgdmlz
dWFsSWQgPSB3aW5kb3dBdHRyaWJ1dGVzLnZpc3VhbC0+dmlzdWFsaWQ7CisKKyAgICAgICAgaWYg
KCFtR0xYRGlzcGxheS0+aXNWYWxpZFdpbmRvd1Zpc3VhbElkKHZpc3VhbElkKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9NQVRDSCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUaGUgdmlzdWFsIG9mIG5hdGl2ZV93aW5kb3cgZG9lc24n
dCBtYXRjaCB0aGUgdmlzdWFsIGdpdmVuIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkFOR0xFX1gxMV9WSVNVQUxfSUQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IFRoZSB2aXN1YWwgb2YgdGhlIFggd2luZG93LCBHTFggd2luZG93IGFuZCBHTFggY29udGV4dCBt
dXN0IG1hdGNoLAorICAgIC8vIGhvd2V2ZXIgd2UgcmVjZWl2ZWQgYSB1c2VyLWNyZWF0ZWQgd2lu
ZG93IHRoYXQgY2FuIGhhdmUgYW55IHZpc3VhbAorICAgIC8vIGFuZCB3b3VsZG4ndCB3b3JrIHdp
dGggb3VyIEdMWCBjb250ZXh0LiBUbyB3b3JrIGluIGFsbCBjYXNlcywgd2UKKyAgICAvLyBjcmVh
dGUgYSBjaGlsZCB3aW5kb3cgd2l0aCB0aGUgcmlnaHQgdmlzdWFsIHRoYXQgY292ZXJzIGFsbCBv
ZiBpdHMKKyAgICAvLyBwYXJlbnQuCisgICAgWFZpc3VhbEluZm8gKnZpc3VhbEluZm8gPSBtR0xY
LmdldFZpc3VhbEZyb21GQkNvbmZpZyhtRkJDb25maWcpOworICAgIGlmICghdmlzdWFsSW5mbykK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfTkFUSVZFX1dJTkRPVywg
IkZhaWxlZCB0byBnZXQgdGhlIFhWaXN1YWxJbmZvIGZvciB0aGUgY2hpbGQgd2luZG93LiIpOwor
ICAgIH0KKyAgICBWaXN1YWwqIHZpc3VhbCA9IHZpc3VhbEluZm8tPnZpc3VhbDsKKworICAgIGlm
ICghZ2V0V2luZG93RGltZW5zaW9ucyhtUGFyZW50LCAmbVBhcmVudFdpZHRoLCAmbVBhcmVudEhl
aWdodCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX05BVElWRV9X
SU5ET1csICJGYWlsZWQgdG8gZ2V0IHRoZSBwYXJlbnQgd2luZG93J3MgZGltZW5zaW9ucy4iKTsK
KyAgICB9CisKKyAgICAvLyBUaGUgZGVwdGgsIGNvbG9ybWFwIGFuZCB2aXN1YWwgbXVzdCBtYXRj
aCBvdGhlcndpc2Ugd2UgZ2V0IGEgWCBlcnJvcgorICAgIC8vIHNvIHdlIHNwZWNpZnkgdGhlIGNv
bG9ybWFwIGF0dHJpYnV0ZS4gQWxzbyB3ZSBkbyBub3Qgd2FudCB0aGUgd2luZG93CisgICAgLy8g
dG8gYmUgdGFrZW4gaW50byBhY2NvdW50IGZvciBpbnB1dCBzbyB3ZSBzcGVjaWZ5IHRoZSBldmVu
dCBhbmQKKyAgICAvLyBkby1ub3QtcHJvcGFnYXRlIG1hc2tzIHRvIDAgKHRoZSBkZWZhdWx0cyku
IEZpbmFsbHkgd2Ugc3BlY2lmeSB0aGUKKyAgICAvLyBib3JkZXIgcGl4ZWwgYXR0cmlidXRlIHNv
IHRoYXQgd2UgY2FuIHVzZSBhIGRpZmZlcmVudCB2aXN1YWwgZGVwdGgKKyAgICAvLyB0aGFuIG91
ciBwYXJlbnQgKHNlZW1zIGxpa2UgWCB1c2VzIHRoYXQgYXMgYSBjb25kaXRpb24gdG8gcmVuZGVy
CisgICAgLy8gdGhlIHN1YndpbmRvdyBpbiBhIGRpZmZlcmVudCBidWZmZXIpCisgICAgWFNldFdp
bmRvd0F0dHJpYnV0ZXMgYXR0cmlidXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGF0dHJpYnV0ZU1h
c2sgPSBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbDsKKworICAgIENvbG9ybWFwIGNvbG9ybWFw
ID0gWENyZWF0ZUNvbG9ybWFwKG1EaXNwbGF5LCBtUGFyZW50LCB2aXN1YWwsIEFsbG9jTm9uZSk7
CisgICAgaWYoIWNvbG9ybWFwKQorICAgIHsKKyAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7Cisg
ICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfTkFUSVZFX1dJTkRPVywgIkZhaWxlZCB0
byBjcmVhdGUgdGhlIENvbG9ybWFwIGZvciB0aGUgY2hpbGQgd2luZG93LiIpOworICAgIH0KKyAg
ICBhdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29sb3JtYXA7CisgICAgYXR0cmlidXRlcy5ib3JkZXJf
cGl4ZWwgPSAwOworCisgICAgLy9UT0RPKGN3YWxsZXopIHNldCB1cCBvdXIgb3duIGVycm9yIGhh
bmRsZXIgdG8gc2VlIGlmIHRoZSBjYWxsIGZhaWxlZAorICAgIG1XaW5kb3cgPSBYQ3JlYXRlV2lu
ZG93KG1EaXNwbGF5LCBtUGFyZW50LCAwLCAwLCBtUGFyZW50V2lkdGgsIG1QYXJlbnRIZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgdmlzdWFsSW5mby0+ZGVwdGgsIElucHV0
T3V0cHV0LCB2aXN1YWwsIGF0dHJpYnV0ZU1hc2ssICZhdHRyaWJ1dGVzKTsKKyAgICBtR0xYV2lu
ZG93ID0gbUdMWC5jcmVhdGVXaW5kb3cobUZCQ29uZmlnLCBtV2luZG93LCBudWxscHRyKTsKKwor
ICAgIFhNYXBXaW5kb3cobURpc3BsYXksIG1XaW5kb3cpOworICAgIFhGbHVzaChtRGlzcGxheSk7
CisKKyAgICBYRnJlZSh2aXN1YWxJbmZvKTsKKyAgICBYRnJlZUNvbG9ybWFwKG1EaXNwbGF5LCBj
b2xvcm1hcCk7CisKKyAgICBtR0xYRGlzcGxheS0+c3luY1hDb21tYW5kcygpOworCisgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZh
Y2VHTFg6Om1ha2VDdXJyZW50KCkKK3sKKyAgICBpZiAobUdMWC5tYWtlQ3VycmVudChtR0xYV2lu
ZG93LCBtQ29udGV4dCkgIT0gVHJ1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfRElTUExBWSk7CisgICAgfQorICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKK30KKworZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlR0xYOjpzd2FwKCkKK3sKKyAgICAv
LyBXZSBuZWVkIHRvIHN3YXAgYmVmb3JlIHJlc2l6aW5nIGFzIHNvbWUgZHJpdmVycyBjbG9iYmVy
IHRoZSBiYWNrIGJ1ZmZlcgorICAgIC8vIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLgorICAg
IG1HTFhEaXNwbGF5LT5zZXRTd2FwSW50ZXJ2YWwobUdMWFdpbmRvdywgJm1Td2FwQ29udHJvbCk7
CisgICAgbUdMWC5zd2FwQnVmZmVycyhtR0xYV2luZG93KTsKKworICAgIGVnbDo6RXJyb3IgZXJy
b3IgPSBjaGVja0ZvclJlc2l6ZSgpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VHTFg6OnBvc3RTdWJCdWZm
ZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
K30KKworZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlR0xYOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5H
TEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3Ig
V2luZG93U3VyZmFjZUdMWDo6YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xp
bnQgYnVmZmVyKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZUdMWDo6cmVsZWFz
ZVRleEltYWdlKEVHTGludCBidWZmZXIpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwordm9pZCBXaW5kb3dTdXJmYWNlR0xY
OjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQoreworICAgIG1Td2FwQ29udHJvbC50
YXJnZXRTd2FwSW50ZXJ2YWwgPSBpbnRlcnZhbDsKK30KKworRUdMaW50IFdpbmRvd1N1cmZhY2VH
TFg6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgd2luZG93IGlz
IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgY2FjaGVkIHNpemUgb2YgaXRzIHBhcmVudC4KKyAgICBy
ZXR1cm4gbVBhcmVudFdpZHRoOworfQorCitFR0xpbnQgV2luZG93U3VyZmFjZUdMWDo6Z2V0SGVp
Z2h0KCkgY29uc3QKK3sKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgd2luZG93IGlzIGFsd2F5cyB0
aGUgc2FtZSBhcyB0aGUgY2FjaGVkIHNpemUgb2YgaXRzIHBhcmVudC4KKyAgICByZXR1cm4gbVBh
cmVudEhlaWdodDsKK30KKworRUdMaW50IFdpbmRvd1N1cmZhY2VHTFg6OmlzUG9zdFN1YkJ1ZmZl
clN1cHBvcnRlZCgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBF
R0xfRkFMU0U7Cit9CisKK0VHTGludCBXaW5kb3dTdXJmYWNlR0xYOjpnZXRTd2FwQmVoYXZpb3Io
KSBjb25zdAoreworICAgIHJldHVybiBFR0xfQlVGRkVSX1BSRVNFUlZFRDsKK30KKworZWdsOjpF
cnJvciBXaW5kb3dTdXJmYWNlR0xYOjpjaGVja0ZvclJlc2l6ZSgpCit7CisgICAgLy8gVE9ETyhj
d2FsbGV6KSBzZXQgdXAgb3VyIG93biBlcnJvciBoYW5kbGVyIHRvIHNlZSBpZiB0aGUgY2FsbCBm
YWlsZWQKKyAgICB1bnNpZ25lZCBpbnQgbmV3UGFyZW50V2lkdGgsIG5ld1BhcmVudEhlaWdodDsK
KyAgICBpZiAoIWdldFdpbmRvd0RpbWVuc2lvbnMobVBhcmVudCwgJm5ld1BhcmVudFdpZHRoLCAm
bmV3UGFyZW50SGVpZ2h0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9C
QURfQ1VSUkVOVF9TVVJGQUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv
IHJldHJpZXZlIHRoZSBzaXplIG9mIHRoZSBwYXJlbnQgd2luZG93LiIpOworICAgIH0KKworICAg
IGlmIChtUGFyZW50V2lkdGggIT0gbmV3UGFyZW50V2lkdGggfHwgbVBhcmVudEhlaWdodCAhPSBu
ZXdQYXJlbnRIZWlnaHQpCisgICAgeworICAgICAgICBtUGFyZW50V2lkdGggID0gbmV3UGFyZW50
V2lkdGg7CisgICAgICAgIG1QYXJlbnRIZWlnaHQgPSBuZXdQYXJlbnRIZWlnaHQ7CisKKyAgICAg
ICAgbUdMWC53YWl0R0woKTsKKyAgICAgICAgWFJlc2l6ZVdpbmRvdyhtRGlzcGxheSwgbVdpbmRv
dywgbVBhcmVudFdpZHRoLCBtUGFyZW50SGVpZ2h0KTsKKyAgICAgICAgbUdMWC53YWl0WCgpOwor
ICAgICAgICBYU3luYyhtRGlzcGxheSwgRmFsc2UpOworICAgIH0KKworICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworYm9vbCBXaW5kb3dTdXJmYWNlR0xYOjpnZXRXaW5k
b3dEaW1lbnNpb25zKFdpbmRvdyB3aW5kb3csIHVuc2lnbmVkIGludCAqd2lkdGgsIHVuc2lnbmVk
IGludCAqaGVpZ2h0KSBjb25zdAoreworICAgIFdpbmRvdyByb290OworICAgIGludCB4LCB5Owor
ICAgIHVuc2lnbmVkIGludCBib3JkZXIsIGRlcHRoOworICAgIHJldHVybiBYR2V0R2VvbWV0cnko
bURpc3BsYXksIHdpbmRvdywgJnJvb3QsICZ4LCAmeSwgd2lkdGgsIGhlaWdodCwgJmJvcmRlciwg
JmRlcHRoKSAhPSAwOworfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dp
bmRvd1N1cmZhY2VHTFguaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBXaW5kb3dTdXJmYWNl
R0xYLmg6IEdMWCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIHdpbmRvd3MKKwor
I2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfV0lORE9XU1VSRkFDRUdMWF9IXworI2Rl
ZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfV0lORE9XU1VSRkFDRUdMWF9IXworCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvcGxhdGZvcm1fZ2x4LmgiCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L1N1cmZhY2VHTFguaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK2Ns
YXNzIERpc3BsYXlHTFg7CitjbGFzcyBGdW5jdGlvbnNHTFg7CisKK2NsYXNzIFdpbmRvd1N1cmZh
Y2VHTFggOiBwdWJsaWMgU3VyZmFjZUdMWAoreworICBwdWJsaWM6CisgICAgV2luZG93U3VyZmFj
ZUdMWChjb25zdCBGdW5jdGlvbnNHTFggJmdseCwKKyAgICAgICAgICAgICAgICAgICAgIERpc3Bs
YXlHTFggKmdseERpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5k
ZXJlciwKKyAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyB3aW5kb3csCisgICAgICAgICAgICAg
ICAgICAgICBEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgZ2x4OjpDb250
ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmln
KTsKKyAgICB+V2luZG93U3VyZmFjZUdMWCgpIG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBp
bml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJy
aWRlOworCisgICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBw
b3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVp
Z2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShF
R0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Ig
YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlk
ZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIG92ZXJyaWRlOwor
CisgICAgRUdMaW50IGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldEhl
aWdodCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRTd2FwQmVoYXZpb3IoKSBjb25z
dCBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgY2hlY2tGb3JSZXNpemUoKSBvdmVycmlkZTsK
KworICBwcml2YXRlOgorICAgIGJvb2wgZ2V0V2luZG93RGltZW5zaW9ucyhXaW5kb3cgd2luZG93
LCB1bnNpZ25lZCBpbnQgKndpZHRoLCB1bnNpZ25lZCBpbnQgKmhlaWdodCkgY29uc3Q7CisKKyAg
ICBXaW5kb3cgbVBhcmVudDsKKyAgICB1bnNpZ25lZCBpbnQgbVBhcmVudFdpZHRoLCBtUGFyZW50
SGVpZ2h0OworICAgIFdpbmRvdyBtV2luZG93OworICAgIERpc3BsYXkgKm1EaXNwbGF5OworCisg
ICAgY29uc3QgRnVuY3Rpb25zR0xYICZtR0xYOworICAgIERpc3BsYXlHTFggKm1HTFhEaXNwbGF5
OworCisgICAgZ2x4OjpDb250ZXh0IG1Db250ZXh0OworICAgIGdseDo6RkJDb25maWcgbUZCQ29u
ZmlnOworICAgIGdseDo6V2luZG93IG1HTFhXaW5kb3c7CisKKyAgICBTd2FwQ29udHJvbERhdGEg
bVN3YXBDb250cm9sOworfTsKKworfQorCisjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xf
R0xYX1dJTkRPV1NVUkZBQ0VHTFhfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvZnVuY3Rpb25zZ2x4X3R5cGVkZWZzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9mdW5jdGlvbnNnbHhfdHlwZWRlZnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvZnVuY3Rpb25zZ2x4X3R5
cGVkZWZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIGZ1bmN0aW9uc2dseF90eXBlZGVmcy5oOiBUeXBlZGVmcyBvZiBHTFggZnVuY3Rpb25zLgor
CisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0dMWF9GVU5DVElPTlNHTFhUWVBFREVGU19I
XworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfRlVOQ1RJT05TR0xYVFlQRURFRlNf
SF8KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9wbGF0Zm9ybV9nbHguaCIK
KworbmFtZXNwYWNlIHJ4Cit7CisKKy8vIE9ubHkgdGhlIGZ1bmN0aW9ucyBvZiBHTFggMS4yIGFu
ZCBlYXJsaWVyIG5lZWQgdG8gYmUgdHlwZGVmZWQ7IHRoZSBvdGhlcgorLy8gZnVuY3Rpb25zIGFy
ZSBhbHJlYWR5IHR5cGVkZWZlZCBpbiBnbHguaAorCisvLyBHTFggMS4wCit0eXBlZGVmIFhWaXN1
YWxJbmZvICooKlBGTkdMWENIT09TRVZJU1VBTFBST0MpIChEaXNwbGF5ICpkcHksIGludCBzY3Jl
ZW4sIGludCAqYXR0cmliTGlzdCk7Cit0eXBlZGVmIEdMWENvbnRleHQgKCpQRk5HTFhDUkVBVEVD
T05URVhUUFJPQykgKERpc3BsYXkgKmRweSwgWFZpc3VhbEluZm8gKnZpcywgR0xYQ29udGV4dCBz
aGFyZUxpc3QsIEJvb2wgZGlyZWN0KTsKK3R5cGVkZWYgdm9pZCAoKlBGTkdMWERFU1RST1lDT05U
RVhUUFJPQykgKERpc3BsYXkgKmRweSwgR0xYQ29udGV4dCBjdHgpOwordHlwZWRlZiBCb29sICgq
UEZOR0xYTUFLRUNVUlJFTlRQUk9DKSAoRGlzcGxheSAqZHB5LCBHTFhEcmF3YWJsZSBkcmF3YWJs
ZSwgR0xYQ29udGV4dCBjdHgpOwordHlwZWRlZiB2b2lkICgqUEZOR0xYQ09QWUNPTlRFWFRQUk9D
KSAoRGlzcGxheSAqZHB5LCBHTFhDb250ZXh0IHNyYywgR0xYQ29udGV4dCBkc3QsIHVuc2lnbmVk
IGxvbmcgbWFzayk7Cit0eXBlZGVmIHZvaWQgKCpQRk5HTFhTV0FQQlVGRkVSU1BST0MpIChEaXNw
bGF5ICpkcHksIEdMWERyYXdhYmxlIGRyYXdhYmxlKTsKK3R5cGVkZWYgR0xYUGl4bWFwICgqUEZO
R0xYQ1JFQVRFR0xYUElYTUFQUFJPQykgKERpc3BsYXkgKmRweSwgWFZpc3VhbEluZm8gKnZpc3Vh
bCwgUGl4bWFwIHBpeG1hcCk7Cit0eXBlZGVmIHZvaWQgKCpQRk5HTFhERVNUUk9ZR0xYUElYTUFQ
UFJPQykgKERpc3BsYXkgKmRweSwgR0xYUGl4bWFwIHBpeG1hcCk7Cit0eXBlZGVmIEJvb2wgKCpQ
Rk5HTFhRVUVSWUVYVEVOU0lPTlBST0MpIChEaXNwbGF5ICpkcHksIGludCAqZXJyb3JiLCBpbnQg
KmV2ZW50KTsKK3R5cGVkZWYgQm9vbCAoKlBGTkdMWFFVRVJZVkVSU0lPTlBST0MpIChEaXNwbGF5
ICpkcHksIGludCAqbWFqLCBpbnQgKm1pbik7Cit0eXBlZGVmIEJvb2wgKCpQRk5HTFhJU0RJUkVD
VFBST0MpIChEaXNwbGF5ICpkcHksIEdMWENvbnRleHQgY3R4KTsKK3R5cGVkZWYgaW50ICgqUEZO
R0xYR0VUQ09ORklHUFJPQykgKERpc3BsYXkgKmRweSwgWFZpc3VhbEluZm8gKnZpc3VhbCwgaW50
IGF0dHJpYiwgaW50ICp2YWx1ZSk7Cit0eXBlZGVmIEdMWENvbnRleHQgKCpQRk5HTFhHRVRDVVJS
RU5UQ09OVEVYVFBST0MpICgpOwordHlwZWRlZiBHTFhEcmF3YWJsZSAoKlBGTkdMWEdFVENVUlJF
TlREUkFXQUJMRVBST0MpICgpOwordHlwZWRlZiBHTFhDb250ZXh0ICgqUEZOR0xYR0VUQ1VSUkVO
VENPTlRFWFRQUk9DKSAoKTsKK3R5cGVkZWYgR0xYRHJhd2FibGUgKCpQRk5HTFhHRVRDVVJSRU5U
RFJBV0FCTEVQUk9DKSAoKTsKK3R5cGVkZWYgdm9pZCAoKlBGTkdMWFdBSVRHTFBST0MpICgpOwor
dHlwZWRlZiB2b2lkICgqUEZOR0xYV0FJVFhQUk9DKSAoKTsKK3R5cGVkZWYgdm9pZCAoKlBGTkdM
WFVTRVhGT05UKSAoRm9udCBmb250LCBpbnQgZmlyc3QsIGludCBjb3VudCwgaW50IGxpc3QpOwor
CisvLyBHTFggMS4xCit0eXBlZGVmIGNvbnN0IGNoYXIgKigqUEZOR0xYUVVFUllFWFRFTlNJT05T
U1RSSU5HUFJPQykgKERpc3BsYXkgKmRweSwgaW50IHNjcmVlbik7Cit0eXBlZGVmIGNvbnN0IGNo
YXIgKigqUEZOR0xYUVVFUllTRVJWRVJTVFJJTkdQUk9DKSAoRGlzcGxheSAqZHB5LCBpbnQgc2Ny
ZWVuLCBpbnQgbmFtZSk7Cit0eXBlZGVmIGNvbnN0IGNoYXIgKigqUEZOR0xYR0VUQ0xJRU5UU1RS
SU5HUFJPQykgKERpc3BsYXkgKmRweSwgaW50IG5hbWUpOworCisKKy8vIEdMWCAxLjIKK3R5cGVk
ZWYgRGlzcGxheSAqKCpQRk5HTFhHRVRDVVJSRU5URElTUExBWVBST0MpICgpOworCit9CisKKyNl
bmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfRlVOQ1RJT05TR0xYVFlQRURFRlNfSF8K
SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9n
bHgvcGxhdGZvcm1fZ2x4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9wbGF0Zm9ybV9nbHguaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
cGxhdGZvcm1fZ2x4LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODQgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBwbGF0Zm9ybV9nbHguaDogSW5jbHVkZXMgc3BlY2lmaWMgdG8gR0xYLgorCisj
aWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX0dMWF9QTEFURk9STUdMWF9IXworI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfUExBVEZPUk1HTFhfSF8KKworI2lmICFkZWZpbmVkKEFO
R0xFX1NLSVBfR0xYX0RFRklORVMpCisvLyBHTFggMS4wCisjZGVmaW5lIEdMWF9VU0VfR0wgMQor
I2RlZmluZSBHTFhfQlVGRkVSX1NJWkUgMgorI2RlZmluZSBHTFhfTEVWRUwgMworI2RlZmluZSBH
TFhfUkdCQSA0CisjZGVmaW5lIEdMWF9ET1VCTEVCVUZGRVIgNQorI2RlZmluZSBHTFhfU1RFUkVP
IDYKKyNkZWZpbmUgR0xYX0FVWF9CVUZGRVJTIDcKKyNkZWZpbmUgR0xYX1JFRF9TSVpFIDgKKyNk
ZWZpbmUgR0xYX0dSRUVOX1NJWkUgOQorI2RlZmluZSBHTFhfQkxVRV9TSVpFIDEwCisjZGVmaW5l
IEdMWF9BTFBIQV9TSVpFIDExCisjZGVmaW5lIEdMWF9ERVBUSF9TSVpFIDEyCisjZGVmaW5lIEdM
WF9TVEVOQ0lMX1NJWkUgMTMKKyNkZWZpbmUgR0xYX0FDQ1VNX1JFRF9TSVpFIDE0CisjZGVmaW5l
IEdMWF9BQ0NVTV9HUkVFTl9TSVpFIDE1CisjZGVmaW5lIEdMWF9BQ0NVTV9CTFVFX1NJWkUgMTYK
KyNkZWZpbmUgR0xYX0FDQ1VNX0FMUEhBX1NJWkUgMTcKKworI2RlZmluZSBHTFhfQkFEX1NDUkVF
TiAxCisjZGVmaW5lIEdMWF9CQURfQVRUUklCVVRFIDIKKyNkZWZpbmUgR0xYX05PX0VYVEVOU0lP
TiAzCisjZGVmaW5lIEdMWF9CQURfVklTVUFMIDQKKyNkZWZpbmUgR0xYX0JBRF9DT05URVhUIDUK
KyNkZWZpbmUgR0xYX0JBRF9WQUxVRSA2CisjZGVmaW5lIEdMWF9CQURfRU5VTSA3CisKKy8vIEdM
WCAxLjEKKyNkZWZpbmUgR0xYX1ZFTkRPUiAxCisjZGVmaW5lIEdMWF9WRVJTSU9OIDIKKyNkZWZp
bmUgR0xYX0VYVEVOU0lPTlMgMworCisvLyBHTFggMS4zCisjZGVmaW5lIEdMWF9DT05GSUdfQ0FW
RUFUIDB4MjAKKyNkZWZpbmUgR0xYX0RPTlRfQ0FSRSAweEZGRkZGRkZGCisjZGVmaW5lIEdMWF9Y
X1ZJU1VBTF9UWVBFIDB4MjIKKyNkZWZpbmUgR0xYX1RSQU5TUEFSRU5UX1RZUEUgMHgyMworI2Rl
ZmluZSBHTFhfVFJBTlNQQVJFTlRfSU5ERVhfVkFMVUUgMHgyNAorI2RlZmluZSBHTFhfVFJBTlNQ
QVJFTlRfUkVEX1ZBTFVFIDB4MjUKKyNkZWZpbmUgR0xYX1RSQU5TUEFSRU5UX0dSRUVOX1ZBTFVF
IDB4MjYKKyNkZWZpbmUgR0xYX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUUgMHgyNworI2RlZmluZSBH
TFhfVFJBTlNQQVJFTlRfQUxQSEFfVkFMVUUgMHgyOAorI2RlZmluZSBHTFhfV0lORE9XX0JJVCAw
eDAwMDAwMDAxCisjZGVmaW5lIEdMWF9QSVhNQVBfQklUIDB4MDAwMDAwMDIKKyNkZWZpbmUgR0xY
X1BCVUZGRVJfQklUIDB4MDAwMDAwMDQKKyNkZWZpbmUgR0xYX0FVWF9CVUZGRVJTX0JJVCAweDAw
MDAwMDEwCisjZGVmaW5lIEdMWF9GUk9OVF9MRUZUX0JVRkZFUl9CSVQgMHgwMDAwMDAwMQorI2Rl
ZmluZSBHTFhfRlJPTlRfUklHSFRfQlVGRkVSX0JJVCAweDAwMDAwMDAyCisjZGVmaW5lIEdMWF9C
QUNLX0xFRlRfQlVGRkVSX0JJVCAweDAwMDAwMDA0CisjZGVmaW5lIEdMWF9CQUNLX1JJR0hUX0JV
RkZFUl9CSVQgMHgwMDAwMDAwOAorI2RlZmluZSBHTFhfREVQVEhfQlVGRkVSX0JJVCAweDAwMDAw
MDIwCisjZGVmaW5lIEdMWF9TVEVOQ0lMX0JVRkZFUl9CSVQgMHgwMDAwMDA0MAorI2RlZmluZSBH
TFhfQUNDVU1fQlVGRkVSX0JJVCAweDAwMDAwMDgwCisjZGVmaW5lIEdMWF9OT05FIDB4ODAwMAor
I2RlZmluZSBHTFhfU0xPV19DT05GSUcgMHg4MDAxCisjZGVmaW5lIEdMWF9UUlVFX0NPTE9SIDB4
ODAwMgorI2RlZmluZSBHTFhfRElSRUNUX0NPTE9SIDB4ODAwMworI2RlZmluZSBHTFhfUFNFVURP
X0NPTE9SIDB4ODAwNAorI2RlZmluZSBHTFhfU1RBVElDX0NPTE9SIDB4ODAwNQorI2RlZmluZSBH
TFhfR1JBWV9TQ0FMRSAweDgwMDYKKyNkZWZpbmUgR0xYX1NUQVRJQ19HUkFZIDB4ODAwNworI2Rl
ZmluZSBHTFhfVFJBTlNQQVJFTlRfUkdCIDB4ODAwOAorI2RlZmluZSBHTFhfVFJBTlNQQVJFTlRf
SU5ERVggMHg4MDA5CisjZGVmaW5lIEdMWF9WSVNVQUxfSUQgMHg4MDBCCisjZGVmaW5lIEdMWF9T
Q1JFRU4gMHg4MDBDCisjZGVmaW5lIEdMWF9OT05fQ09ORk9STUFOVF9DT05GSUcgMHg4MDBECisj
ZGVmaW5lIEdMWF9EUkFXQUJMRV9UWVBFIDB4ODAxMAorI2RlZmluZSBHTFhfUkVOREVSX1RZUEUg
MHg4MDExCisjZGVmaW5lIEdMWF9YX1JFTkRFUkFCTEUgMHg4MDEyCisjZGVmaW5lIEdMWF9GQkNP
TkZJR19JRCAweDgwMTMKKyNkZWZpbmUgR0xYX1JHQkFfVFlQRSAweDgwMTQKKyNkZWZpbmUgR0xY
X0NPTE9SX0lOREVYX1RZUEUgMHg4MDE1CisjZGVmaW5lIEdMWF9NQVhfUEJVRkZFUl9XSURUSCAw
eDgwMTYKKyNkZWZpbmUgR0xYX01BWF9QQlVGRkVSX0hFSUdIVCAweDgwMTcKKyNkZWZpbmUgR0xY
X01BWF9QQlVGRkVSX1BJWEVMUyAweDgwMTgKKyNkZWZpbmUgR0xYX1BSRVNFUlZFRF9DT05URU5U
UyAweDgwMUIKKyNkZWZpbmUgR0xYX0xBUkdFU1RfUEJVRkZFUiAweDgwMUMKKyNkZWZpbmUgR0xY
X1dJRFRIIDB4ODAxRAorI2RlZmluZSBHTFhfSEVJR0hUIDB4ODAxRQorI2RlZmluZSBHTFhfRVZF
TlRfTUFTSyAweDgwMUYKKyNkZWZpbmUgR0xYX0RBTUFHRUQgMHg4MDIwCisjZGVmaW5lIEdMWF9T
QVZFRCAweDgwMjEKKyNkZWZpbmUgR0xYX1dJTkRPVyAweDgwMjIKKyNkZWZpbmUgR0xYX1BCVUZG
RVIgMHg4MDIzCisjZGVmaW5lIEdMWF9QQlVGRkVSX0hFSUdIVCAweDgwNDAKKyNkZWZpbmUgR0xY
X1BCVUZGRVJfV0lEVEggMHg4MDQxCisjZGVmaW5lIEdMWF9SR0JBX0JJVCAweDAwMDAwMDAxCisj
ZGVmaW5lIEdMWF9DT0xPUl9JTkRFWF9CSVQgMHgwMDAwMDAwMgorI2RlZmluZSBHTFhfUEJVRkZF
Ul9DTE9CQkVSX01BU0sgMHgwODAwMDAwMAorCisvLyBHTFggMS40CisjZGVmaW5lIEdMWF9TQU1Q
TEVfQlVGRkVSUyAweDE4NmEwCisjZGVmaW5lIEdMWF9TQU1QTEVTIDB4MTg2YTEKKworLy8gR0xY
X0FSQl9jcmVhdGVfY29udGV4dAorI2RlZmluZSBHTFhfQ09OVEVYVF9ERUJVR19CSVRfQVJCIDB4
MDAwMDAwMDEKKyNkZWZpbmUgR0xYX0NPTlRFWFRfRk9SV0FSRF9DT01QQVRJQkxFX0JJVF9BUkIg
MHgwMDAwMDAwMgorI2RlZmluZSBHTFhfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0FSQiAweDIwOTEK
KyNkZWZpbmUgR0xYX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9BUkIgMHgyMDkyCisjZGVmaW5lIEdM
WF9DT05URVhUX0ZMQUdTX0FSQiAweDIwOTQKKworLy8gR0xYX0FSQl9jcmVhdGVfY29udGV4dF9w
cm9maWxlCisjZGVmaW5lIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCIDB4MDAwMDAw
MDEKKyNkZWZpbmUgR0xYX0NPTlRFWFRfQ09NUEFUSUJJTElUWV9QUk9GSUxFX0JJVF9BUkIgMHgw
MDAwMDAwMgorI2RlZmluZSBHTFhfQ09OVEVYVF9QUk9GSUxFX01BU0tfQVJCIDB4OTEyNgorCisv
LyBHTFhfRVhUX2NyZWF0ZV9jb250ZXh0X2VzMl9wcm9maWxlCisjZGVmaW5lIEdMWF9DT05URVhU
X0VTMl9QUk9GSUxFX0JJVF9FWFQgMHgwMDAwMDAwNAorCisvLyBHTFhfRVhUX3RleHR1cmVfZnJv
bV9waXhtYXAKKyNkZWZpbmUgR0xYX1RFWFRVUkVfMURfQklUX0VYVCAweDAwMDAwMDAxCisjZGVm
aW5lIEdMWF9URVhUVVJFXzJEX0JJVF9FWFQgMHgwMDAwMDAwMgorI2RlZmluZSBHTFhfVEVYVFVS
RV9SRUNUQU5HTEVfQklUX0VYVCAweDAwMDAwMDA0CisjZGVmaW5lIEdMWF9CSU5EX1RPX1RFWFRV
UkVfUkdCX0VYVCAweDIwRDAKKyNkZWZpbmUgR0xYX0JJTkRfVE9fVEVYVFVSRV9SR0JBX0VYVCAw
eDIwRDEKKyNkZWZpbmUgR0xYX0JJTkRfVE9fTUlQTUFQX1RFWFRVUkVfRVhUIDB4MjBEMgorI2Rl
ZmluZSBHTFhfQklORF9UT19URVhUVVJFX1RBUkdFVFNfRVhUIDB4MjBEMworI2RlZmluZSBHTFhf
WV9JTlZFUlRFRF9FWFQgMHgyMEQ0CisjZGVmaW5lIEdMWF9URVhUVVJFX0ZPUk1BVF9FWFQgMHgy
MEQ1CisjZGVmaW5lIEdMWF9URVhUVVJFX1RBUkdFVF9FWFQgMHgyMEQ2CisjZGVmaW5lIEdMWF9N
SVBNQVBfVEVYVFVSRV9FWFQgMHgyMEQ3CisjZGVmaW5lIEdMWF9URVhUVVJFX0ZPUk1BVF9OT05F
X0VYVCAweDIwRDgKKyNkZWZpbmUgR0xYX1RFWFRVUkVfRk9STUFUX1JHQl9FWFQgMHgyMEQ5Cisj
ZGVmaW5lIEdMWF9URVhUVVJFX0ZPUk1BVF9SR0JBX0VYVCAweDIwREEKKyNkZWZpbmUgR0xYX1RF
WFRVUkVfMURfRVhUIDB4MjBEQgorI2RlZmluZSBHTFhfVEVYVFVSRV8yRF9FWFQgMHgyMERDCisj
ZGVmaW5lIEdMWF9URVhUVVJFX1JFQ1RBTkdMRV9FWFQgMHgyMERECisjZGVmaW5lIEdMWF9GUk9O
VF9MRUZUX0VYVCAweDIwREUKKyNkZWZpbmUgR0xYX0ZST05UX1JJR0hUX0VYVCAweDIwREYKKyNk
ZWZpbmUgR0xYX0JBQ0tfTEVGVF9FWFQgMHgyMEUwCisjZGVmaW5lIEdMWF9CQUNLX1JJR0hUX0VY
VCAweDIwRTEKKyNkZWZpbmUgR0xYX0ZST05UX0VYVCAweDIwREUKKyNkZWZpbmUgR0xYX0JBQ0tf
RVhUIDB4MjBFMAorI2RlZmluZSBHTFhfQVVYMF9FWFQgMHgyMEUyCisjZGVmaW5lIEdMWF9BVVgx
X0VYVCAweDIwRTMKKyNkZWZpbmUgR0xYX0FVWDJfRVhUIDB4MjBFNAorI2RlZmluZSBHTFhfQVVY
M19FWFQgMHgyMEU1CisjZGVmaW5lIEdMWF9BVVg0X0VYVCAweDIwRTYKKyNkZWZpbmUgR0xYX0FV
WDVfRVhUIDB4MjBFNworI2RlZmluZSBHTFhfQVVYNl9FWFQgMHgyMEU4CisjZGVmaW5lIEdMWF9B
VVg3X0VYVCAweDIwRTkKKyNkZWZpbmUgR0xYX0FVWDhfRVhUIDB4MjBFQQorI2RlZmluZSBHTFhf
QVVYOV9FWFQgMHgyMEVCCisKKy8vIEdMWF9FWFRfc3dhcF9jb250cm9sCisjZGVmaW5lIEdMWF9T
V0FQX0lOVEVSVkFMX0VYVCAweDIwRjEKKyNkZWZpbmUgR0xYX01BWF9TV0FQX0lOVEVSVkFMX0VY
VCAweDIwRjIKKyNlbmRpZiAvLyAhZGVmaW5lZChBTkdMRV9TS0lQX0dMWF9ERUZJTkVTKQorCisv
LyBHTFggdHlwZWRlZnMgZGVwZW5kIG9uIHRoZSBYIGhlYWRlcnMKKyNpbmNsdWRlIDxYMTEvWGxp
Yi5oPgorI2luY2x1ZGUgPFgxMS9YcmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4K
KworLy8gR0xYIHR5cGVkZWZzCituYW1lc3BhY2UgZ2x4Cit7CisKK3R5cGVkZWYgdm9pZCAqQ29u
dGV4dDsKK3R5cGVkZWYgdm9pZCAqRkJDb25maWc7Cit0eXBlZGVmIFhJRCBGQkNvbmZpZ0lEOwor
dHlwZWRlZiBYSUQgQ29udGV4dElEOwordHlwZWRlZiBYSUQgV2luZG93OwordHlwZWRlZiBYSUQg
UGJ1ZmZlcjsKK3R5cGVkZWYgWElEIFBpeG1hcDsKK3R5cGVkZWYgWElEIERyYXdhYmxlOworCit9
CisKK3R5cGVkZWYgdm9pZCogKCpQRk5HRVRQUk9DUFJPQykgKGNvbnN0IGNoYXIgKm5hbWUpOwor
CisjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfR0xYX1BMQVRGT1JNR0xYX0hfCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVy
ZXJnbF91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCShyZXZpc2lvbiAxOTk2
ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
cmVuZGVyZXJnbF91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIAotLy8gcmVuZGVyZXIxMV91dGlscy5jcHA6
IENvbnZlcnNpb24gZnVuY3Rpb25zIGFuZCBvdGhlciB1dGlsaXR5IHJvdXRpbmVzCisvLyByZW5k
ZXJlcmdsX3V0aWxzLmNwcDogQ29udmVyc2lvbiBmdW5jdGlvbnMgYW5kIG90aGVyIHV0aWxpdHkg
cm91dGluZXMKIC8vIHNwZWNpZmljIHRvIHRoZSBPcGVuR0wgcmVuZGVyZXIuCiAKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgiCkBAIC0xNCwyNCArMTQs
NzggQEAKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9y
bWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRzR0wuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmgiCiAKICNpbmNsdWRlIDxh
bGdvcml0aG0+CisjaW5jbHVkZSA8c3N0cmVhbT4KIAogbmFtZXNwYWNlIHJ4CiB7CitWZW5kb3JJ
RCBHZXRWZW5kb3JJRChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKQoreworICAgIHN0ZDo6
c3RyaW5nIG5hdGl2ZVZlbmRvclN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4o
ZnVuY3Rpb25zLT5nZXRTdHJpbmcoR0xfVkVORE9SKSkpOworICAgIGlmIChuYXRpdmVWZW5kb3JT
dHJpbmcuZmluZCgiSW50ZWwiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7CisgICAgICAg
IHJldHVybiBWRU5ET1JfSURfSU5URUw7CisgICAgfQorICAgIGVsc2UgaWYgKG5hdGl2ZVZlbmRv
clN0cmluZy5maW5kKCJOVklESUEiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7CisgICAg
ICAgIHJldHVybiBWRU5ET1JfSURfTlZJRElBOworICAgIH0KKyAgICBlbHNlIGlmIChuYXRpdmVW
ZW5kb3JTdHJpbmcuZmluZCgiQVRJIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwKKyAgICAgICAg
ICAgICBuYXRpdmVWZW5kb3JTdHJpbmcuZmluZCgiQU1EIikgIT0gc3RkOjpzdHJpbmc6Om5wb3Mp
CisgICAgeworICAgICAgICByZXR1cm4gVkVORE9SX0lEX0FNRDsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFZFTkRPUl9JRF9VTktOT1dOOworICAgIH0KK30KIAogbmFt
ZXNwYWNlIG5hdGl2ZWdsX2dsCiB7CiAKK3N0YXRpYyBib29sIE1lZXRzUmVxdWlyZW1lbnRzKGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IG5hdGl2ZWdsOjpTdXBwb3J0UmVxdWly
ZW1lbnQgJnJlcXVpcmVtZW50cykKK3sKKyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nICZleHRl
bnNpb24gOiByZXF1aXJlbWVudHMucmVxdWlyZWRFeHRlbnNpb25zKQorICAgIHsKKyAgICAgICAg
aWYgKCFmdW5jdGlvbnMtPmhhc0V4dGVuc2lvbihleHRlbnNpb24pKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZnVuY3Rp
b25zLT52ZXJzaW9uID49IHJlcXVpcmVtZW50cy52ZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UgaWYgKCFyZXF1aXJlbWVudHMudmVyc2lvbkV4dGVu
c2lvbnMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJmV4
dGVuc2lvbiA6IHJlcXVpcmVtZW50cy52ZXJzaW9uRXh0ZW5zaW9ucykKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFmdW5jdGlvbnMtPmhhc0V4dGVuc2lvbihleHRlbnNpb24pKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogc3RhdGljIGdsOjpUZXh0dXJlQ2FwcyBH
ZW5lcmF0ZVRleHR1cmVGb3JtYXRDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCkKIHsKICAgICBnbDo6VGV4dHVyZUNhcHMgdGV4dHVyZUNhcHM7
CiAKLSAgICBjb25zdCBuYXRpdmVnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBuYXRp
dmVnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKLSAgICB0ZXh0dXJl
Q2Fwcy50ZXh0dXJhYmxlID0gZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChmdW5jdGlvbnMtPm1h
am9yVmVyc2lvbiwgZnVuY3Rpb25zLT5taW5vclZlcnNpb24sIGZ1bmN0aW9ucy0+ZXh0ZW5zaW9u
cyk7Ci0gICAgdGV4dHVyZUNhcHMucmVuZGVyYWJsZSA9IGZvcm1hdEluZm8ucmVuZGVyU3VwcG9y
dChmdW5jdGlvbnMtPm1ham9yVmVyc2lvbiwgZnVuY3Rpb25zLT5taW5vclZlcnNpb24sIGZ1bmN0
aW9ucy0+ZXh0ZW5zaW9ucyk7Ci0gICAgdGV4dHVyZUNhcHMuZmlsdGVyYWJsZSA9IGZvcm1hdElu
Zm8uZmlsdGVyU3VwcG9ydChmdW5jdGlvbnMtPm1ham9yVmVyc2lvbiwgZnVuY3Rpb25zLT5taW5v
clZlcnNpb24sIGZ1bmN0aW9ucy0+ZXh0ZW5zaW9ucyk7CisgICAgY29uc3QgbmF0aXZlZ2w6Oklu
dGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gbmF0aXZlZ2w6OkdldEludGVybmFsRm9ybWF0SW5m
byhpbnRlcm5hbEZvcm1hdCwgZnVuY3Rpb25zLT5zdGFuZGFyZCk7CisgICAgdGV4dHVyZUNhcHMu
dGV4dHVyYWJsZSA9IE1lZXRzUmVxdWlyZW1lbnRzKGZ1bmN0aW9ucywgZm9ybWF0SW5mby50ZXh0
dXJlKTsKKyAgICB0ZXh0dXJlQ2Fwcy5maWx0ZXJhYmxlID0gdGV4dHVyZUNhcHMudGV4dHVyYWJs
ZSAmJiBNZWV0c1JlcXVpcmVtZW50cyhmdW5jdGlvbnMsIGZvcm1hdEluZm8uZmlsdGVyKTsKKyAg
ICB0ZXh0dXJlQ2Fwcy5yZW5kZXJhYmxlID0gTWVldHNSZXF1aXJlbWVudHMoZnVuY3Rpb25zLCBm
b3JtYXRJbmZvLmZyYW1lYnVmZmVyQXR0YWNobWVudCk7CiAKICAgICAvLyBnbEdldEludGVybmFs
Zm9ybWF0aXYgaXMgbm90IGF2YWlsYWJsZSB1bnRpbCB2ZXJzaW9uIDQuMiBidXQgbWF5IGJlIGF2
YWlsYWJsZSB0aHJvdWdoIHRoZSAzLjAKICAgICAvLyBleHRlbnNpb24gR0xfQVJCX2ludGVybmFs
Zm9ybWF0X3F1ZXJ5CkBAIC00Myw3ICs5Nyw4IEBACiAgICAgICAgIGlmIChudW1TYW1wbGVzID4g
MCkKICAgICAgICAgewogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHNhbXBsZXMobnVt
U2FtcGxlcyk7Ci0gICAgICAgICAgICBmdW5jdGlvbnMtPmdldEludGVybmFsZm9ybWF0aXYoR0xf
UkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgR0xfU0FNUExFUywgc2FtcGxlcy5zaXplKCks
ICZzYW1wbGVzWzBdKTsKKyAgICAgICAgICAgIGZ1bmN0aW9ucy0+Z2V0SW50ZXJuYWxmb3JtYXRp
dihHTF9SRU5ERVJCVUZGRVIsIGludGVybmFsRm9ybWF0LCBHTF9TQU1QTEVTLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNh
bXBsZXMuc2l6ZSgpKSwgJnNhbXBsZXNbMF0pOwogICAgICAgICAgICAgZm9yIChzaXplX3Qgc2Ft
cGxlSW5kZXggPSAwOyBzYW1wbGVJbmRleCA8IHNhbXBsZXMuc2l6ZSgpOyBzYW1wbGVJbmRleCsr
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHRleHR1cmVDYXBzLnNhbXBsZUNvdW50
cy5pbnNlcnQoc2FtcGxlc1tzYW1wbGVJbmRleF0pOwpAQCAtNTYsMTMgKzExMSw2MyBAQAogCiBz
dGF0aWMgR0xpbnQgUXVlcnlTaW5nbGVHTEludChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LCBHTGVudW0gbmFtZSkKIHsKLSAgICBHTGludCByZXN1bHQ7CisgICAgR0xpbnQgcmVzdWx0ID0g
MDsKICAgICBmdW5jdGlvbnMtPmdldEludGVnZXJ2KG5hbWUsICZyZXN1bHQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKK3N0YXRpYyBHTGludCBRdWVyeUdMSW50UmFuZ2UoY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywgR0xlbnVtIG5hbWUsIHNpemVfdCBpbmRleCkKK3sKKyAgICBHTGlu
dCByZXN1bHRbMl0gPSB7fTsKKyAgICBmdW5jdGlvbnMtPmdldEludGVnZXJ2KG5hbWUsIHJlc3Vs
dCk7CisgICAgcmV0dXJuIHJlc3VsdFtpbmRleF07Cit9CisKK3N0YXRpYyBHTGludDY0IFF1ZXJ5
U2luZ2xlR0xJbnQ2NChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTGVudW0gbmFtZSkK
K3sKKyAgICBHTGludDY0IHJlc3VsdCA9IDA7CisgICAgZnVuY3Rpb25zLT5nZXRJbnRlZ2VyNjR2
KG5hbWUsICZyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBHTGZsb2F0
IFF1ZXJ5U2luZ2xlR0xGbG9hdChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTGVudW0g
bmFtZSkKK3sKKyAgICBHTGZsb2F0IHJlc3VsdCA9IDAuMGY7CisgICAgZnVuY3Rpb25zLT5nZXRG
bG9hdHYobmFtZSwgJnJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEdM
ZmxvYXQgUXVlcnlHTEZsb2F0UmFuZ2UoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xl
bnVtIG5hbWUsIHNpemVfdCBpbmRleCkKK3sKKyAgICBHTGZsb2F0IHJlc3VsdFsyXSA9IHt9Owor
ICAgIGZ1bmN0aW9ucy0+Z2V0RmxvYXR2KG5hbWUsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3Vs
dFtpbmRleF07Cit9CisKK3N0YXRpYyBnbDo6VHlwZVByZWNpc2lvbiBRdWVyeVR5cGVQcmVjaXNp
b24oY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xlbnVtIHNoYWRlclR5cGUsIEdMZW51
bSBwcmVjaXNpb25UeXBlKQoreworICAgIGdsOjpUeXBlUHJlY2lzaW9uIHByZWNpc2lvbjsKKyAg
ICBmdW5jdGlvbnMtPmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChzaGFkZXJUeXBlLCBwcmVjaXNp
b25UeXBlLCBwcmVjaXNpb24ucmFuZ2UsICZwcmVjaXNpb24ucHJlY2lzaW9uKTsKKyAgICByZXR1
cm4gcHJlY2lzaW9uOworfQorCitzdGF0aWMgR0xpbnQgUXVlcnlRdWVyeVZhbHVlKGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBuYW1lKQoreworICAg
IEdMaW50IHJlc3VsdDsKKyAgICBmdW5jdGlvbnMtPmdldFF1ZXJ5aXYodGFyZ2V0LCBuYW1lLCAm
cmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBMaW1pdFZlcnNp
b24oZ2w6OlZlcnNpb24gKmN1clZlcnNpb24sIGNvbnN0IGdsOjpWZXJzaW9uICZtYXhWZXJzaW9u
KQoreworICAgIGlmICgqY3VyVmVyc2lvbiA+PSBtYXhWZXJzaW9uKQorICAgIHsKKyAgICAgICAg
KmN1clZlcnNpb24gPSBtYXhWZXJzaW9uOworICAgIH0KK30KKwogdm9pZCBHZW5lcmF0ZUNhcHMo
Y29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgZ2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJl
Q2Fwc01hcCAqdGV4dHVyZUNhcHNNYXAsCi0gICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9u
cyAqZXh0ZW5zaW9ucykKKyAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpleHRlbnNp
b25zLCBnbDo6VmVyc2lvbiAqbWF4U3VwcG9ydGVkRVNWZXJzaW9uKQogewogICAgIC8vIFRleHR1
cmUgZm9ybWF0IHN1cHBvcnQgY2hlY2tzCiAgICAgY29uc3QgZ2w6OkZvcm1hdFNldCAmYWxsRm9y
bWF0cyA9IGdsOjpHZXRBbGxTaXplZEludGVybmFsRm9ybWF0cygpOwpAQCAtNzcsODcgKzE4Miw1
NDYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFNldCBzb21lIG1pbmltdW0gR0xFUzIg
Y2FwcywgVE9ETzogcXVlcnkgZm9yIHJlYWwgR0wgY2FwcworICAgIC8vIFN0YXJ0IGJ5IGFzc3Vt
aW5nIEVTMyBzdXBwb3J0IGFuZCB3b3JrIGRvd24KKyAgICAqbWF4U3VwcG9ydGVkRVNWZXJzaW9u
ID0gZ2w6OlZlcnNpb24oMywgMCk7CiAKICAgICAvLyBUYWJsZSA2LjI4LCBpbXBsZW1lbnRhdGlv
biBkZXBlbmRlbnQgdmFsdWVzCi0gICAgY2Fwcy0+bWF4RWxlbWVudEluZGV4ID0gc3RhdGljX2Nh
c3Q8R0xpbnQ2ND4oc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKSk7Ci0g
ICAgY2Fwcy0+bWF4M0RUZXh0dXJlU2l6ZSA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBH
TF9NQVhfM0RfVEVYVFVSRV9TSVpFKTsKLSAgICBjYXBzLT5tYXgyRFRleHR1cmVTaXplID0gUXVl
cnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9URVhUVVJFX1NJWkUpOwotICAgIGNhcHMt
Pm1heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9N
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFKTsKLSAgICBjYXBzLT5tYXhBcnJheVRleHR1cmVMYXll
cnMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0FSUkFZX1RFWFRVUkVfTEFZ
RVJTKTsKLSAgICBjYXBzLT5tYXhMT0RCaWFzID0gMi4wZjsKLSAgICBjYXBzLT5tYXhSZW5kZXJi
dWZmZXJTaXplID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9SRU5ERVJCVUZG
RVJfU0laRSk7Ci0gICAgY2Fwcy0+bWF4RHJhd0J1ZmZlcnMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1
bmN0aW9ucywgR0xfTUFYX0RSQVdfQlVGRkVSUyk7Ci0gICAgY2Fwcy0+bWF4Q29sb3JBdHRhY2ht
ZW50cyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09MT1JfQVRUQUNITUVO
VFMpOwotICAgIGNhcHMtPm1heFZpZXdwb3J0V2lkdGggPSBjYXBzLT5tYXgyRFRleHR1cmVTaXpl
OwotICAgIGNhcHMtPm1heFZpZXdwb3J0SGVpZ2h0ID0gY2Fwcy0+bWF4Vmlld3BvcnRXaWR0aDsK
LSAgICBjYXBzLT5taW5BbGlhc2VkUG9pbnRTaXplID0gMS4wZjsKLSAgICBjYXBzLT5tYXhBbGlh
c2VkUG9pbnRTaXplID0gMS4wZjsKLSAgICBjYXBzLT5taW5BbGlhc2VkTGluZVdpZHRoID0gMS4w
ZjsKLSAgICBjYXBzLT5tYXhBbGlhc2VkTGluZVdpZHRoID0gMS4wZjsKKyAgICBpZiAoZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAzKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4
dGVuc2lvbigiR0xfQVJCX0VTM19jb21wYXRpYmlsaXR5IikgfHwKKyAgICAgICAgZnVuY3Rpb25z
LT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSkKKyAgICB7CisgICAgICAgIGNhcHMt
Pm1heEVsZW1lbnRJbmRleCA9IFF1ZXJ5U2luZ2xlR0xJbnQ2NChmdW5jdGlvbnMsIEdMX01BWF9F
TEVNRU5UX0lOREVYKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gRG9lc24n
dCBhZmZlY3QgRVMzIHN1cHBvcnQsIGNhbiB1c2UgYSBwcmUtZGVmaW5lZCBsaW1pdAorICAgICAg
ICBjYXBzLT5tYXhFbGVtZW50SW5kZXggPSBzdGF0aWNfY2FzdDxHTGludDY0PihzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpKTsKKyAgICB9CiAKKyAgICBpZiAoZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCAyKSkgfHwKKyAgICAgICAgZnVuY3Rpb25z
LT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNF
eHRlbnNpb24oIkdMX09FU190ZXh0dXJlXzNEIikpCisgICAgeworICAgICAgICBjYXBzLT5tYXgz
RFRleHR1cmVTaXplID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF8zRF9URVhU
VVJFX1NJWkUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBDYW4ndCBzdXBw
b3J0IEVTMyB3aXRob3V0IDNEIHRleHR1cmVzCisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBw
b3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKKyAgICB9CisKKyAgICBjYXBzLT5t
YXgyRFRleHR1cmVTaXplID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9URVhU
VVJFX1NJWkUpOyAvLyBHTCAxLjAgLyBFUyAyLjAKKyAgICBjYXBzLT5tYXhDdWJlTWFwVGV4dHVy
ZVNpemUgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0NVQkVfTUFQX1RFWFRV
UkVfU0laRSk7IC8vIEdMIDEuMyAvIEVTIDIuMAorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExl
YXN0R0woZ2w6OlZlcnNpb24oMywgMCkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdM
X0VYVF90ZXh0dXJlX2FycmF5IikgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVT
KGdsOjpWZXJzaW9uKDMsIDApKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1heEFycmF5VGV4dHVy
ZUxheWVycyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQVJSQVlfVEVYVFVS
RV9MQVlFUlMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBDYW4ndCBzdXBw
b3J0IEVTMyB3aXRob3V0IGFycmF5IHRleHR1cmVzCisgICAgICAgIExpbWl0VmVyc2lvbihtYXhT
dXBwb3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKKyAgICB9CisKKyAgICBpZiAo
ZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCA1KSkgfHwgZnVuY3Rpb25zLT5o
YXNHTEV4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMiKSB8fAorICAgICAgICBmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpKQorICAgIHsKKyAgICAgICAg
Y2Fwcy0+bWF4TE9EQmlhcyA9IFF1ZXJ5U2luZ2xlR0xGbG9hdChmdW5jdGlvbnMsIEdMX01BWF9U
RVhUVVJFX0xPRF9CSUFTKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgTGltaXRW
ZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIH0K
KworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBm
dW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9FWFRfZnJhbWVidWZmZXJfb2JqZWN0IikgfHwK
KyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDIsIDApKSkKKyAg
ICB7CisgICAgICAgIGNhcHMtPm1heFJlbmRlcmJ1ZmZlclNpemUgPSBRdWVyeVNpbmdsZUdMSW50
KGZ1bmN0aW9ucywgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFKTsKKyAgICAgICAgY2Fwcy0+bWF4
Q29sb3JBdHRhY2htZW50cyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfQ09M
T1JfQVRUQUNITUVOVFMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBDYW4n
dCBzdXBwb3J0IEVTMiB3aXRob3V0IGZyYW1lYnVmZmVycyBhbmQgcmVuZGVyYnVmZmVycworICAg
ICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigwLCAw
KSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24o
MiwgMCkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkFSQl9kcmF3X2J1ZmZlcnMiKSB8
fAorICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpIHx8
IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQorICAg
IHsKKyAgICAgICAgY2Fwcy0+bWF4RHJhd0J1ZmZlcnMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0
aW9ucywgR0xfTUFYX0RSQVdfQlVGRkVSUyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIC8vIEZyYW1lYnVmZmVyIGlzIHJlcXVpcmVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGRyYXdi
dWZmZXIgZXZlbiBpZiB0aGUgZXh0ZW5zaW9uIGlzIG5vdAorICAgICAgICAvLyBzdXBwb3J0ZWQK
KyAgICAgICAgY2Fwcy0+bWF4RHJhd0J1ZmZlcnMgPSAxOworICAgICAgICBMaW1pdFZlcnNpb24o
bWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigyLCAwKSk7CisgICAgfQorCisgICAg
Y2Fwcy0+bWF4Vmlld3BvcnRXaWR0aCA9IFF1ZXJ5R0xJbnRSYW5nZShmdW5jdGlvbnMsIEdMX01B
WF9WSUVXUE9SVF9ESU1TLCAwKTsgLy8gR0wgMS4wIC8gRVMgMi4wCisgICAgY2Fwcy0+bWF4Vmll
d3BvcnRIZWlnaHQgPSBRdWVyeUdMSW50UmFuZ2UoZnVuY3Rpb25zLCBHTF9NQVhfVklFV1BPUlRf
RElNUywgMSk7IC8vIEdMIDEuMCAvIEVTIDIuMAorCisgICAgaWYgKGZ1bmN0aW9ucy0+c3RhbmRh
cmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJgorICAgICAgICAoZnVuY3Rpb25zLT5wcm9maWxl
ICYgR0xfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUKSAhPSAwKQorICAgIHsKKyAgICAgICAgLy8g
RGVza3RvcCBHTCBjb3JlIHByb2ZpbGUgZGVwcmVjYXRlZCB0aGUgR0xfQUxJQVNFRF9QT0lOVF9T
SVpFX1JBTkdFIHF1ZXJ5LiAgVXNlCisgICAgICAgIC8vIEdMX1BPSU5UX1NJWkVfUkFOR0UgaW5z
dGVhZC4KKyAgICAgICAgY2Fwcy0+bWluQWxpYXNlZFBvaW50U2l6ZSA9IFF1ZXJ5R0xGbG9hdFJh
bmdlKGZ1bmN0aW9ucywgR0xfUE9JTlRfU0laRV9SQU5HRSwgMCk7CisgICAgICAgIGNhcHMtPm1h
eEFsaWFzZWRQb2ludFNpemUgPSBRdWVyeUdMRmxvYXRSYW5nZShmdW5jdGlvbnMsIEdMX1BPSU5U
X1NJWkVfUkFOR0UsIDEpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjYXBzLT5t
aW5BbGlhc2VkUG9pbnRTaXplID0gUXVlcnlHTEZsb2F0UmFuZ2UoZnVuY3Rpb25zLCBHTF9BTElB
U0VEX1BPSU5UX1NJWkVfUkFOR0UsIDApOworICAgICAgICBjYXBzLT5tYXhBbGlhc2VkUG9pbnRT
aXplID0gUXVlcnlHTEZsb2F0UmFuZ2UoZnVuY3Rpb25zLCBHTF9BTElBU0VEX1BPSU5UX1NJWkVf
UkFOR0UsIDEpOworICAgIH0KKworICAgIGNhcHMtPm1pbkFsaWFzZWRMaW5lV2lkdGggPSBRdWVy
eUdMRmxvYXRSYW5nZShmdW5jdGlvbnMsIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRSwgMCk7
IC8vIEdMIDEuMiAvIEVTIDIuMAorICAgIGNhcHMtPm1heEFsaWFzZWRMaW5lV2lkdGggPSBRdWVy
eUdMRmxvYXRSYW5nZShmdW5jdGlvbnMsIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRSwgMSk7
IC8vIEdMIDEuMiAvIEVTIDIuMAorCiAgICAgLy8gVGFibGUgNi4yOSwgaW1wbGVtZW50YXRpb24g
ZGVwZW5kZW50IHZhbHVlcyAoY29udC4pCi0gICAgY2Fwcy0+bWF4RWxlbWVudHNJbmRpY2VzID0g
MDsKLSAgICBjYXBzLT5tYXhFbGVtZW50c1ZlcnRpY2VzID0gMDsKLSAgICBjYXBzLT52ZXJ0ZXhI
aWdocEZsb2F0LnNldElFRUVGbG9hdCgpOwotICAgIGNhcHMtPnZlcnRleE1lZGl1bXBGbG9hdC5z
ZXRJRUVFRmxvYXQoKTsKLSAgICBjYXBzLT52ZXJ0ZXhMb3dwRmxvYXQuc2V0SUVFRUZsb2F0KCk7
Ci0gICAgY2Fwcy0+ZnJhZ21lbnRIaWdocEZsb2F0LnNldElFRUVGbG9hdCgpOwotICAgIGNhcHMt
PmZyYWdtZW50TWVkaXVtcEZsb2F0LnNldElFRUVGbG9hdCgpOwotICAgIGNhcHMtPmZyYWdtZW50
TG93cEZsb2F0LnNldElFRUVGbG9hdCgpOwotICAgIGNhcHMtPnZlcnRleEhpZ2hwSW50LnNldFR3
b3NDb21wbGVtZW50SW50KDMyKTsKLSAgICBjYXBzLT52ZXJ0ZXhNZWRpdW1wSW50LnNldFR3b3ND
b21wbGVtZW50SW50KDMyKTsKLSAgICBjYXBzLT52ZXJ0ZXhMb3dwSW50LnNldFR3b3NDb21wbGVt
ZW50SW50KDMyKTsKLSAgICBjYXBzLT5mcmFnbWVudEhpZ2hwSW50LnNldFR3b3NDb21wbGVtZW50
SW50KDMyKTsKLSAgICBjYXBzLT5mcmFnbWVudE1lZGl1bXBJbnQuc2V0VHdvc0NvbXBsZW1lbnRJ
bnQoMzIpOwotICAgIGNhcHMtPmZyYWdtZW50TG93cEludC5zZXRUd29zQ29tcGxlbWVudEludCgz
Mik7Ci0gICAgY2Fwcy0+bWF4U2VydmVyV2FpdFRpbWVvdXQgPSAwOworICAgIGlmIChmdW5jdGlv
bnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDEsIDIpKSB8fAorICAgICAgICBmdW5jdGlvbnMt
PmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpKQorICAgIHsKKyAgICAgICAgY2Fwcy0+
bWF4RWxlbWVudHNJbmRpY2VzID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9F
TEVNRU5UU19JTkRJQ0VTKTsKKyAgICAgICAgY2Fwcy0+bWF4RWxlbWVudHNWZXJ0aWNlcyA9IFF1
ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBEb2Vzbid0IGltcGFjdCBzdXBwb3J0ZWQg
dmVyc2lvbgorICAgIH0KIAorICAgIC8vIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IGlzIG5v
dCBhdmFpbGFibGUgdW50aWwgZGVza3RvcCBHTCB2ZXJzaW9uIDQuMSBvciBHTF9BUkJfRVMyX2Nv
bXBhdGliaWxpdHkgZXhpc3RzCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZl
cnNpb24oNCwgMSkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9FUzJfY29t
cGF0aWJpbGl0eSIpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVy
c2lvbigyLCAwKSkpCisgICAgeworICAgICAgICBjYXBzLT52ZXJ0ZXhIaWdocEZsb2F0ID0gUXVl
cnlUeXBlUHJlY2lzaW9uKGZ1bmN0aW9ucywgR0xfVkVSVEVYX1NIQURFUiwgR0xfSElHSF9GTE9B
VCk7CisgICAgICAgIGNhcHMtPnZlcnRleE1lZGl1bXBGbG9hdCA9IFF1ZXJ5VHlwZVByZWNpc2lv
bihmdW5jdGlvbnMsIEdMX1ZFUlRFWF9TSEFERVIsIEdMX01FRElVTV9GTE9BVCk7CisgICAgICAg
IGNhcHMtPnZlcnRleExvd3BGbG9hdCA9IFF1ZXJ5VHlwZVByZWNpc2lvbihmdW5jdGlvbnMsIEdM
X1ZFUlRFWF9TSEFERVIsIEdMX0xPV19GTE9BVCk7CisgICAgICAgIGNhcHMtPmZyYWdtZW50SGln
aHBGbG9hdCA9IFF1ZXJ5VHlwZVByZWNpc2lvbihmdW5jdGlvbnMsIEdMX0ZSQUdNRU5UX1NIQURF
UiwgR0xfSElHSF9GTE9BVCk7CisgICAgICAgIGNhcHMtPmZyYWdtZW50TWVkaXVtcEZsb2F0ID0g
UXVlcnlUeXBlUHJlY2lzaW9uKGZ1bmN0aW9ucywgR0xfRlJBR01FTlRfU0hBREVSLCBHTF9NRURJ
VU1fRkxPQVQpOworICAgICAgICBjYXBzLT5mcmFnbWVudExvd3BGbG9hdCA9IFF1ZXJ5VHlwZVBy
ZWNpc2lvbihmdW5jdGlvbnMsIEdMX0ZSQUdNRU5UX1NIQURFUiwgR0xfTE9XX0ZMT0FUKTsKKyAg
ICAgICAgY2Fwcy0+dmVydGV4SGlnaHBJbnQgPSBRdWVyeVR5cGVQcmVjaXNpb24oZnVuY3Rpb25z
LCBHTF9WRVJURVhfU0hBREVSLCBHTF9ISUdIX0lOVCk7CisgICAgICAgIGNhcHMtPnZlcnRleE1l
ZGl1bXBJbnQgPSBRdWVyeVR5cGVQcmVjaXNpb24oZnVuY3Rpb25zLCBHTF9WRVJURVhfU0hBREVS
LCBHTF9NRURJVU1fSU5UKTsKKyAgICAgICAgY2Fwcy0+dmVydGV4TG93cEludCA9IFF1ZXJ5VHlw
ZVByZWNpc2lvbihmdW5jdGlvbnMsIEdMX1ZFUlRFWF9TSEFERVIsIEdMX0xPV19JTlQpOworICAg
ICAgICBjYXBzLT5mcmFnbWVudEhpZ2hwSW50ID0gUXVlcnlUeXBlUHJlY2lzaW9uKGZ1bmN0aW9u
cywgR0xfRlJBR01FTlRfU0hBREVSLCBHTF9ISUdIX0lOVCk7CisgICAgICAgIGNhcHMtPmZyYWdt
ZW50TWVkaXVtcEludCA9IFF1ZXJ5VHlwZVByZWNpc2lvbihmdW5jdGlvbnMsIEdMX0ZSQUdNRU5U
X1NIQURFUiwgR0xfTUVESVVNX0lOVCk7CisgICAgICAgIGNhcHMtPmZyYWdtZW50TG93cEludCA9
IFF1ZXJ5VHlwZVByZWNpc2lvbihmdW5jdGlvbnMsIEdMX0ZSQUdNRU5UX1NIQURFUiwgR0xfTE9X
X0lOVCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIERvZXNuJ3QgaW1wYWN0
IHN1cHBvcnRlZCB2ZXJzaW9uLCBzZXQgc29tZSBkZWZhdWx0IHZhbHVlcworICAgICAgICBjYXBz
LT52ZXJ0ZXhIaWdocEZsb2F0LnNldElFRUVGbG9hdCgpOworICAgICAgICBjYXBzLT52ZXJ0ZXhN
ZWRpdW1wRmxvYXQuc2V0SUVFRUZsb2F0KCk7CisgICAgICAgIGNhcHMtPnZlcnRleExvd3BGbG9h
dC5zZXRJRUVFRmxvYXQoKTsKKyAgICAgICAgY2Fwcy0+ZnJhZ21lbnRIaWdocEZsb2F0LnNldElF
RUVGbG9hdCgpOworICAgICAgICBjYXBzLT5mcmFnbWVudE1lZGl1bXBGbG9hdC5zZXRJRUVFRmxv
YXQoKTsKKyAgICAgICAgY2Fwcy0+ZnJhZ21lbnRMb3dwRmxvYXQuc2V0SUVFRUZsb2F0KCk7Cisg
ICAgICAgIGNhcHMtPnZlcnRleEhpZ2hwSW50LnNldFR3b3NDb21wbGVtZW50SW50KDMyKTsKKyAg
ICAgICAgY2Fwcy0+dmVydGV4TWVkaXVtcEludC5zZXRUd29zQ29tcGxlbWVudEludCgzMik7Cisg
ICAgICAgIGNhcHMtPnZlcnRleExvd3BJbnQuc2V0VHdvc0NvbXBsZW1lbnRJbnQoMzIpOworICAg
ICAgICBjYXBzLT5mcmFnbWVudEhpZ2hwSW50LnNldFR3b3NDb21wbGVtZW50SW50KDMyKTsKKyAg
ICAgICAgY2Fwcy0+ZnJhZ21lbnRNZWRpdW1wSW50LnNldFR3b3NDb21wbGVtZW50SW50KDMyKTsK
KyAgICAgICAgY2Fwcy0+ZnJhZ21lbnRMb3dwSW50LnNldFR3b3NDb21wbGVtZW50SW50KDMyKTsK
KyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAy
KSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3N5bmMiKSB8fAorICAgICAg
ICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpKQorICAgIHsKKyAg
ICAgICAgY2Fwcy0+bWF4U2VydmVyV2FpdFRpbWVvdXQgPSBRdWVyeVNpbmdsZUdMSW50NjQoZnVu
Y3Rpb25zLCBHTF9NQVhfU0VSVkVSX1dBSVRfVElNRU9VVCk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJz
aW9uKDIsIDApKTsKKyAgICB9CisKICAgICAvLyBUYWJsZSA2LjMxLCBpbXBsZW1lbnRhdGlvbiBk
ZXBlbmRlbnQgdmVydGV4IHNoYWRlciBsaW1pdHMKLSAgICBjYXBzLT5tYXhWZXJ0ZXhBdHRyaWJ1
dGVzID0gMTY7Ci0gICAgY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUNvbXBvbmVudHMgPSAxMDI0Owot
ICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3JzID0gMjU2OwotICAgIGNhcHMtPm1heFZl
cnRleFVuaWZvcm1CbG9ja3MgPSAxMjsKLSAgICBjYXBzLT5tYXhWZXJ0ZXhPdXRwdXRDb21wb25l
bnRzID0gNjQ7Ci0gICAgY2Fwcy0+bWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPSBRdWVyeVNp
bmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTKTsK
KyAgICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigyLCAwKSkgfHwKKyAg
ICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDIsIDApKSkKKyAgICB7
CisgICAgICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYnV0ZXMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1
bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTKTsKKyAgICAgICAgY2Fwcy0+bWF4VmVydGV4
VW5pZm9ybUNvbXBvbmVudHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX1ZF
UlRFWF9VTklGT1JNX0NPTVBPTkVOVFMpOworICAgICAgICBjYXBzLT5tYXhWZXJ0ZXhUZXh0dXJl
SW1hZ2VVbml0cyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkVSVEVYX1RF
WFRVUkVfSU1BR0VfVU5JVFMpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBD
YW4ndCBzdXBwb3J0IEVTMiB2ZXJzaW9uIHdpdGhvdXQgdGhlc2UgY2FwcworICAgICAgICBMaW1p
dFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigwLCAwKSk7CisgICAg
fQogCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMSkpIHx8
IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9FUzJfY29tcGF0aWJpbGl0eSIpIHx8
CisgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigyLCAwKSkpCisg
ICAgeworICAgICAgICBjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9IFF1ZXJ5U2luZ2xl
R0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIERvZXNuJ3QgbGltaXQgRVMgdmVyc2lvbiwgR0xf
TUFYX1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMgLyA0IGlzIGFjY2VwdGFibGUuCisgICAgICAg
IGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3JzID0gY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUNv
bXBvbmVudHMgLyA0OworICAgIH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGds
OjpWZXJzaW9uKDMsIDEpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfdW5p
Zm9ybV9idWZmZXJfb2JqZWN0IikgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVT
KGdsOjpWZXJzaW9uKDMsIDApKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1heFZlcnRleFVuaWZv
cm1CbG9ja3MgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9VTklG
T1JNX0JMT0NLUyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIENhbid0IHN1
cHBvcnQgRVMzIHdpdGhvdXQgdW5pZm9ybSBibG9ja3MKKyAgICAgICAgTGltaXRWZXJzaW9uKG1h
eFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIH0KKworICAgIGlm
IChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDIpKSB8fAorICAgICAgICBm
dW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpKQorICAgIHsKKyAgICAg
ICAgY2Fwcy0+bWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVu
Y3Rpb25zLCBHTF9NQVhfVkVSVEVYX09VVFBVVF9DT01QT05FTlRTKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgLy8gVGhlcmUgZG9lc24ndCBzZWVtLCB0byBiZSBhIGRlc2t0b3Ag
ZXh0ZW5zaW9uIHRvIGFkZCB0aGlzIGNhcCwgbWF5YmUgaXQgY291bGQgYmUgZ2l2ZW4gYSBzYWZl
IGxpbWl0CisgICAgICAgIC8vIGluc3RlYWQgb2YgbGltaXRpbmcgdGhlIHN1cHBvcnRlZCBFUyB2
ZXJzaW9uLgorICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6
VmVyc2lvbigyLCAwKSk7CisgICAgfQorCiAgICAgLy8gVGFibGUgNi4zMiwgaW1wbGVtZW50YXRp
b24gZGVwZW5kZW50IGZyYWdtZW50IHNoYWRlciBsaW1pdHMKLSAgICBjYXBzLT5tYXhGcmFnbWVu
dFVuaWZvcm1Db21wb25lbnRzID0gODk2OwotICAgIGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMgPSAyMjQ7Ci0gICAgY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzID0gMTI7Ci0g
ICAgY2Fwcy0+bWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgPSA2MDsKLSAgICBjYXBzLT5tYXhU
ZXh0dXJlSW1hZ2VVbml0cyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVEVY
VFVSRV9JTUFHRV9VTklUUyk7Ci0gICAgY2Fwcy0+bWluUHJvZ3JhbVRleGVsT2Zmc2V0ID0gLTg7
Ci0gICAgY2Fwcy0+bWF4UHJvZ3JhbVRleGVsT2Zmc2V0ID0gNzsKKyAgICBpZiAoZnVuY3Rpb25z
LT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigyLCAwKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDIsIDApKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1h
eEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywg
R0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUyk7CisgICAgICAgIGNhcHMtPm1heFRl
eHR1cmVJbWFnZVVuaXRzID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9URVhU
VVJFX0lNQUdFX1VOSVRTKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gQ2Fu
J3Qgc3VwcG9ydCBFUzIgdmVyc2lvbiB3aXRob3V0IHRoZXNlIGNhcHMKKyAgICAgICAgTGltaXRW
ZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMCwgMCkpOworICAgIH0K
IAorICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDEpKSB8fCBm
dW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfRVMyX2NvbXBhdGliaWxpdHkiKSB8fAor
ICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMiwgMCkpKQorICAg
IHsKKyAgICAgICAgY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9IFF1ZXJ5U2luZ2xl
R0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gRG9lc24ndCBsaW1pdCBFUyB2ZXJzaW9uLCBH
TF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTIC8gNCBpcyBhY2NlcHRhYmxlLgorICAg
ICAgICBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gY2Fwcy0+bWF4RnJhZ21lbnRV
bmlmb3JtQ29tcG9uZW50cyAvIDQ7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExl
YXN0R0woZ2w6OlZlcnNpb24oMywgMSkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdM
X0FSQl91bmlmb3JtX2J1ZmZlcl9vYmplY3QiKSB8fAorICAgICAgICBmdW5jdGlvbnMtPmlzQXRM
ZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpKQorICAgIHsKKyAgICAgICAgY2Fwcy0+bWF4RnJh
Z21lbnRVbmlmb3JtQmxvY2tzID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9G
UkFHTUVOVF9VTklGT1JNX0JMT0NLUyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IC8vIENhbid0IHN1cHBvcnQgRVMzIHdpdGhvdXQgdW5pZm9ybSBibG9ja3MKKyAgICAgICAgTGlt
aXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAg
IH0KKworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDIpKSB8
fAorICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpKQor
ICAgIHsKKyAgICAgICAgY2Fwcy0+bWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgPSBRdWVyeVNp
bmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFMpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBUaGVyZSBkb2Vzbid0IHNlZW0sIHRv
IGJlIGEgZGVza3RvcCBleHRlbnNpb24gdG8gYWRkIHRoaXMgY2FwLCBtYXliZSBpdCBjb3VsZCBi
ZSBnaXZlbiBhIHNhZmUgbGltaXQKKyAgICAgICAgLy8gaW5zdGVhZCBvZiBsaW1pdGluZyB0aGUg
c3VwcG9ydGVkIEVTIHZlcnNpb24uCisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0ZWRF
U1ZlcnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKKyAgICB9CisKKyAgICBpZiAoZnVuY3Rpb25z
LT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAwKSkgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1p
blByb2dyYW1UZXhlbE9mZnNldCA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NSU5f
UFJPR1JBTV9URVhFTF9PRkZTRVQpOworICAgICAgICBjYXBzLT5tYXhQcm9ncmFtVGV4ZWxPZmZz
ZXQgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX1BST0dSQU1fVEVYRUxfT0ZG
U0VUKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gQ2FuJ3Qgc3VwcG9ydCBF
UzMgd2l0aG91dCB0ZXhlbCBvZmZzZXQsIGNvdWxkIHBvc3NpYmx5IGJlIGVtdWxhdGVkIGluIHRo
ZSBzaGFkZXIKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6
OlZlcnNpb24oMiwgMCkpOworICAgIH0KKwogICAgIC8vIFRhYmxlIDYuMzMsIGltcGxlbWVudGF0
aW9uIGRlcGVuZGVudCBhZ2dyZWdhdGUgc2hhZGVyIGxpbWl0cwotICAgIGNhcHMtPm1heFVuaWZv
cm1CdWZmZXJCaW5kaW5ncyA9IDI0OwotICAgIGNhcHMtPm1heFVuaWZvcm1CbG9ja1NpemUgPSAx
NjM4NDsKLSAgICBjYXBzLT51bmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50ID0gMTsKLSAgICBj
YXBzLT5tYXhDb21iaW5lZFVuaWZvcm1CbG9ja3MgPSAyNDsKLSAgICBjYXBzLT5tYXhDb21iaW5l
ZFZlcnRleFVuaWZvcm1Db21wb25lbnRzID0gKGNhcHMtPm1heFZlcnRleFVuaWZvcm1CbG9ja3Mg
KiAoY2Fwcy0+bWF4VW5pZm9ybUJsb2NrU2l6ZSAvIDQpKSArIGNhcHMtPm1heFZlcnRleFVuaWZv
cm1Db21wb25lbnRzOwotICAgIGNhcHMtPm1heENvbWJpbmVkRnJhZ21lbnRVbmlmb3JtQ29tcG9u
ZW50cyA9IChjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgKiAoY2Fwcy0+bWF4VW5pZm9y
bUJsb2NrU2l6ZSAvIDQpKSArIGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHM7Ci0g
ICAgY2Fwcy0+bWF4VmFyeWluZ0NvbXBvbmVudHMgPSA2MDsKLSAgICBjYXBzLT5tYXhWYXJ5aW5n
VmVjdG9ycyA9IDE1OworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9u
KDMsIDEpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfdW5pZm9ybV9idWZm
ZXJfb2JqZWN0IikgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJz
aW9uKDMsIDApKSkKKyAgICB7CisgICAgICAgIGNhcHMtPm1heFVuaWZvcm1CdWZmZXJCaW5kaW5n
cyA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVU5JRk9STV9CVUZGRVJfQklO
RElOR1MpOworICAgICAgICBjYXBzLT5tYXhVbmlmb3JtQmxvY2tTaXplID0gUXVlcnlTaW5nbGVH
TEludDY0KGZ1bmN0aW9ucywgR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSk7CisgICAgICAgIGNh
cHMtPnVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0
aW9ucywgR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVCk7CisgICAgICAgIGNhcHMt
Pm1heENvbWJpbmVkVW5pZm9ybUJsb2NrcyA9IGNhcHMtPm1heFZlcnRleFVuaWZvcm1CbG9ja3Mg
KyBjYXBzLT5tYXhGcmFnbWVudElucHV0Q29tcG9uZW50czsKKyAgICAgICAgY2Fwcy0+bWF4Q29t
YmluZWRWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyA9IFF1ZXJ5U2luZ2xlR0xJbnQ2NChmdW5jdGlv
bnMsIEdMX01BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTKTsKKyAgICAgICAg
Y2Fwcy0+bWF4Q29tYmluZWRGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzID0gUXVlcnlTaW5nbGVH
TEludDY0KGZ1bmN0aW9ucywgR0xfTUFYX0NPTUJJTkVEX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9O
RU5UUyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIENhbid0IHN1cHBvcnQg
RVMzIHdpdGhvdXQgdW5pZm9ybSBibG9ja3MKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBv
cnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIH0KKworICAgIGlmIChmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDApKSB8fAorICAgICAgICBmdW5jdGlv
bnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfRVMyX2NvbXBhdGliaWxpdHkiKSB8fAorICAgICAg
ICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMiwgMCkpKQorICAgIHsKKyAg
ICAgICAgY2Fwcy0+bWF4VmFyeWluZ0NvbXBvbmVudHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0
aW9ucywgR0xfTUFYX1ZBUllJTkdfQ09NUE9ORU5UUyk7CisgICAgfQorICAgIGVsc2UgaWYgKGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMiwgMCkpKQorICAgIHsKKyAgICAgICAg
Y2Fwcy0+bWF4VmFyeWluZ0NvbXBvbmVudHMgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywg
R0xfTUFYX1ZBUllJTkdfRkxPQVRTKTsKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRl
ZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBMaW1pdFZlcnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigw
LCAwKSk7CisgICAgfQorCisgICAgaWYgKGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNp
b24oNCwgMSkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9FUzJfY29tcGF0
aWJpbGl0eSIpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lv
bigyLCAwKSkpCisgICAgeworICAgICAgICBjYXBzLT5tYXhWYXJ5aW5nVmVjdG9ycyA9IFF1ZXJ5
U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkFSWUlOR19WRUNUT1JTKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gRG9lc24ndCBsaW1pdCBFUyB2ZXJzaW9uLCBHTF9N
QVhfVkFSWUlOR19DT01QT05FTlRTIC8gNCBpcyBhY2NlcHRhYmxlLgorICAgICAgICBjYXBzLT5t
YXhWYXJ5aW5nVmVjdG9ycyA9IGNhcHMtPm1heFZhcnlpbmdDb21wb25lbnRzIC8gNDsKKyAgICB9
CisKKyAgICAvLyBEZXRlcm1pbmUgdGhlIG1heCBjb21iaW5lZCB0ZXh0dXJlIGltYWdlIHVuaXRz
IGJ5IGFkZGluZyB0aGUgdmVydGV4IGFuZCBmcmFnbWVudCBsaW1pdHMuICBJZgorICAgIC8vIHRo
ZSByZWFsIGNhcCBpcyBxdWVyaWVkLCBpdCB3b3VsZCBjb250YWluIHRoZSBsaW1pdHMgZm9yIHNo
YWRlciB0eXBlcyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIHRvIEVTLgogICAgIGNhcHMtPm1heENv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBjYXBzLT5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0
cyArIGNhcHMtPm1heFRleHR1cmVJbWFnZVVuaXRzOwogCiAgICAgLy8gVGFibGUgNi4zNCwgaW1w
bGVtZW50YXRpb24gZGVwZW5kZW50IHRyYW5zZm9ybSBmZWVkYmFjayBsaW1pdHMKLSAgICBjYXBz
LT5tYXhUcmFuc2Zvcm1GZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50cyA9IDY0OwotICAgIGNh
cHMtPm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzID0gNDsKLSAgICBjYXBz
LT5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cyA9IDQ7CisgICAgaWYgKGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMCkpIHx8CisgICAgICAgIGZ1bmN0
aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl90cmFuc2Zvcm1fZmVlZGJhY2syIikgfHwKKyAg
ICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSkKKyAgICB7
CisgICAgICAgIGNhcHMtPm1heFRyYW5zZm9ybUZlZWRiYWNrSW50ZXJsZWF2ZWRDb21wb25lbnRz
ID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tf
SU5URVJMRUFWRURfQ09NUE9ORU5UUyk7CisgICAgICAgIGNhcHMtPm1heFRyYW5zZm9ybUZlZWRi
YWNrU2VwYXJhdGVBdHRyaWJ1dGVzID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01B
WF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUyk7CisgICAgICAgIGNhcHMtPm1h
eFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVDb21wb25lbnRzID0gUXVlcnlTaW5nbGVHTEludChm
dW5jdGlvbnMsIEdMX01BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUyk7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8vIENhbid0IHN1cHBvcnQgRVMzIHdp
dGhvdXQgdHJhbnNmb3JtIGZlZWRiYWNrCisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0
ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKKyAgICB9CiAKICAgICAvLyBUYWJsZSA2
LjM1LCBGcmFtZWJ1ZmZlciBEZXBlbmRlbnQgVmFsdWVzCi0gICAgY2Fwcy0+bWF4U2FtcGxlcyA9
IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfU0FNUExFUyk7CisgICAgaWYgKGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMCkpIHx8IGZ1bmN0aW9ucy0+aGFz
R0xFeHRlbnNpb24oIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpIHx8CisgICAgICAg
IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVuY3Rpb25z
LT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJl
IikpCisgICAgeworICAgICAgICBjYXBzLT5tYXhTYW1wbGVzID0gUXVlcnlTaW5nbGVHTEludChm
dW5jdGlvbnMsIEdMX01BWF9TQU1QTEVTKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkp
OworICAgIH0KIAorICAgIC8vIENoZWNrIGlmIHNhbXBsZXIgb2JqZWN0cyBhcmUgc3VwcG9ydGVk
CisgICAgaWYgKCFmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDMpKSAmJgor
ICAgICAgICAhZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX3NhbXBsZXJfb2JqZWN0
cyIpICYmCisgICAgICAgICFmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywg
MCkpKQorICAgIHsKKyAgICAgICAgLy8gQ2FuJ3Qgc3VwcG9ydCBFUzMgd2l0aG91dCBzYW1wbGVy
IG9iamVjdHMKKyAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6
OlZlcnNpb24oMiwgMCkpOworICAgIH0KKworICAgIC8vIENhbid0IHN1cHBvcnQgRVMzIHdpdGhv
dXQgdGV4dHVyZSBzd2l6emxpbmcKKyAgICBpZiAoIWZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6
OlZlcnNpb24oMywgMykpICYmCisgICAgICAgICFmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJH
TF9BUkJfdGV4dHVyZV9zd2l6emxlIikgJiYKKyAgICAgICAgIWZ1bmN0aW9ucy0+aGFzR0xFeHRl
bnNpb24oIkdMX0VYVF90ZXh0dXJlX3N3aXp6bGUiKSAmJgorICAgICAgICAhZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSkKKyAgICB7CisgICAgICAgIExpbWl0VmVy
c2lvbihtYXhTdXBwb3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKKworICAgICAg
ICAvLyBUZXh0dXJlIHN3aXp6bGluZyBpcyByZXF1aXJlZCB0byB3b3JrIGFyb3VuZCB0aGUgbHVt
aW5hbmNlIHRleHR1cmUgZm9ybWF0IG5vdCBiZWluZworICAgICAgICAvLyBwcmVzZW50IGluIHRo
ZSBjb3JlIHByb2ZpbGUKKyAgICAgICAgaWYgKGZ1bmN0aW9ucy0+cHJvZmlsZSAmIEdMX0NPTlRF
WFRfQ09SRV9QUk9GSUxFX0JJVCkKKyAgICAgICAgeworICAgICAgICAgICAgTGltaXRWZXJzaW9u
KG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMCwgMCkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gQ2FuJ3Qgc3VwcG9ydCBFUzMgd2l0aG91dCB0aGUgR0xTTCBwYWNraW5n
IGJ1aWx0aW5zLiBXZSBoYXZlIGEgd29ya2Fyb3VuZCBmb3IgYWxsCisgICAgLy8gZGVza3RvcCBP
cGVuR0wgdmVyc2lvbnMgc3RhcnRpbmcgZnJvbSAzLjMgd2l0aCB0aGUgYml0IHBhY2tpbmcgZXh0
ZW5zaW9uLgorICAgIGlmICghZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAy
KSkgJiYKKyAgICAgICAgIShmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDIp
KSAmJgorICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9zaGFkZXJf
Yml0X2VuY29kaW5nIikpICYmCisgICAgICAgICFmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJH
TF9BUkJfc2hhZGluZ19sYW5ndWFnZV9wYWNraW5nIikgJiYKKyAgICAgICAgIWZ1bmN0aW9ucy0+
aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkpCisgICAgeworICAgICAgICBMaW1pdFZl
cnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigyLCAwKSk7CisgICAgfQor
CisgICAgLy8gRVMzIG5lZWRzIHRvIHN1cHBvcnQgZXhwbGljaXQgbGF5b3V0IGxvY2F0aW9uIHF1
YWxpZmllcnMsIHdoaWxlIGl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvCisgICAgLy8gZmFrZSB0aGVt
IGluIG91ciBzaWRlLCB3ZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCB0aGF0LgorICAgIGlmICgh
ZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAzKSkgJiYKKyAgICAgICAgIWZ1
bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9leHBsaWNpdF9hdHRyaWJfbG9jYXRpb24i
KSAmJgorICAgICAgICAhZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDAp
KSkKKyAgICB7CisgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0ZWRFU1ZlcnNpb24sIGds
OjpWZXJzaW9uKDIsIDApKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFRoZSBn
bC11bmlmb3JtLWFycmF5cyBXZWJHTCBjb25mb3JtYW5jZSB0ZXN0IHN0cnVnZ2xlcyB0byBjb21w
bGV0ZSBvbiB0aW1lCisgICAgLy8gaWYgdGhlIG1heCB1bmlmb3JtIHZlY3RvcnMgaXMgdG9vIGxh
cmdlLiAgQXJ0aWZpY2lhbGx5IGxpbWl0IHRoZSBtYXhpbXVtIHVudGlsIHRoZSB0ZXN0IGlzCisg
ICAgLy8gdXBkYXRlZC4KKyAgICBjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9IHN0ZDo6
bWluKDEwMjR1LCBjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyk7CisgICAgY2Fwcy0+bWF4
VmVydGV4VW5pZm9ybUNvbXBvbmVudHMgPQorICAgICAgICBzdGQ6Om1pbihjYXBzLT5tYXhWZXJ0
ZXhVbmlmb3JtVmVjdG9ycyAvIDQsIGNhcHMtPm1heFZlcnRleFVuaWZvcm1Db21wb25lbnRzKTsK
KyAgICBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gc3RkOjptaW4oMTAyNHUsIGNh
cHMtPm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMpOworICAgIGNhcHMtPm1heEZyYWdtZW50VW5p
Zm9ybUNvbXBvbmVudHMgPQorICAgICAgICBzdGQ6Om1pbihjYXBzLT5tYXhGcmFnbWVudFVuaWZv
cm1WZWN0b3JzIC8gNCwgY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyk7CisKKyAg
ICAvLyBJZiBpdCBpcyBub3QgcG9zc2libGUgdG8gc3VwcG9ydCByZWFkaW5nIGJ1ZmZlciBkYXRh
IGJhY2ssIGEgc2hhZG93IGNvcHkgb2YgdGhlIGJ1ZmZlcnMgbXVzdAorICAgIC8vIGJlIGhlbGQu
IFRoaXMgZGlzYWxsb3dzIHdyaXRpbmcgdG8gYnVmZmVycyBpbmRpcmVjdGx5IHRocm91Z2ggdHJh
bnNmb3JtIGZlZWRiYWNrLCB0aHVzCisgICAgLy8gZGlzYWxsb3dpbmcgRVMzLgorICAgIGlmICgh
Q2FuTWFwQnVmZmVyRm9yUmVhZChmdW5jdGlvbnMpKQorICAgIHsKKyAgICAgICAgTGltaXRWZXJz
aW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIH0KKwog
ICAgIC8vIEV4dGVuc2lvbiBzdXBwb3J0CiAgICAgZXh0ZW5zaW9ucy0+c2V0VGV4dHVyZUV4dGVu
c2lvblN1cHBvcnQoKnRleHR1cmVDYXBzTWFwKTsKLSAgICBleHRlbnNpb25zLT50ZXh0dXJlTlBP
VCA9IHRydWU7CisgICAgZXh0ZW5zaW9ucy0+ZWxlbWVudEluZGV4VWludCA9IGZ1bmN0aW9ucy0+
c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkp
IHx8IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWlu
dCIpOworICAgIGV4dGVuc2lvbnMtPnJlYWRGb3JtYXRCR1JBID0gZnVuY3Rpb25zLT5pc0F0TGVh
c3RHTChnbDo6VmVyc2lvbigxLCAyKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xf
RVhUX2JncmEiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25z
LT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIpOworICAgIGV4dGVu
c2lvbnMtPm1hcEJ1ZmZlciA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwg
NSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0
ZW5zaW9uKCJHTF9PRVNfbWFwYnVmZmVyIik7CisgICAgZXh0ZW5zaW9ucy0+bWFwQnVmZmVyUmFu
Z2UgPSBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBmdW5jdGlv
bnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfbWFwX2J1ZmZlcl9yYW5nZSIpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZl
cnNpb24oMywgMCkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX21hcF9i
dWZmZXJfcmFuZ2UiKTsKKyAgICBleHRlbnNpb25zLT50ZXh0dXJlTlBPVCA9IGZ1bmN0aW9ucy0+
c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBm
dW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX09FU190ZXh0dXJlX25wb3QiKTsKKyAgICBl
eHRlbnNpb25zLT5kcmF3QnVmZmVycyA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNp
b24oMiwgMCkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkFSQl9kcmF3X2J1ZmZlcnMi
KSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RH
TEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiKTsKICAgICBleHRlbnNpb25zLT50ZXh0dXJlU3RvcmFnZSA9IHRy
dWU7Ci0gICAgZXh0ZW5zaW9ucy0+ZmJvUmVuZGVyTWlwbWFwID0gdHJ1ZTsKKyAgICBleHRlbnNp
b25zLT50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9u
KCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8fCBmdW5jdGlvbnMtPmhhc0dM
RVNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgIGV4
dGVuc2lvbnMtPm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiA9CisgICAgICAgIGZ1bmN0aW9ucy0+aXNB
dExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkpIHx8CisgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xF
eHRlbnNpb24oIkdMX0FSQl9vY2NsdXNpb25fcXVlcnkyIikgfHwKKyAgICAgICAgZnVuY3Rpb25z
LT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fAorICAgICAgICBmdW5jdGlvbnMt
Pmhhc0dMRVNFeHRlbnNpb24oIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIpOworICAg
IGV4dGVuc2lvbnMtPm1heFRleHR1cmVBbmlzb3Ryb3B5ID0gZXh0ZW5zaW9ucy0+dGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljID8gUXVlcnlTaW5nbGVHTEZsb2F0KGZ1bmN0aW9ucywgR0xfTUFYX1RF
WFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKSA6IDAuMGY7CisgICAgZXh0ZW5zaW9ucy0+ZmVuY2Ug
PSBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9OVl9mZW5jZSIpIHx8IGZ1bmN0aW9ucy0+
aGFzR0xFU0V4dGVuc2lvbigiR0xfTlZfZmVuY2UiKTsKKyAgICBleHRlbnNpb25zLT5ibGVuZE1p
bk1heCA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkpIHx8IGZ1bmN0
aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9taW5tYXgiKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9u
KDMsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9taW5t
YXgiKTsKKyAgICBleHRlbnNpb25zLT5mcmFtZWJ1ZmZlckJsaXQgPSAoZnVuY3Rpb25zLT5ibGl0
RnJhbWVidWZmZXIgIT0gbnVsbHB0cik7CiAgICAgZXh0ZW5zaW9ucy0+ZnJhbWVidWZmZXJNdWx0
aXNhbXBsZSA9IGNhcHMtPm1heFNhbXBsZXMgPiAwOwotICAgIGV4dGVuc2lvbnMtPmZlbmNlID0g
c3RkOjpmaW5kKGZ1bmN0aW9ucy0+ZXh0ZW5zaW9ucy5iZWdpbigpLCBmdW5jdGlvbnMtPmV4dGVu
c2lvbnMuZW5kKCksICJHTF9OVl9mZW5jZSIpICE9IGZ1bmN0aW9ucy0+ZXh0ZW5zaW9ucy5lbmQo
KTsKKyAgICBleHRlbnNpb25zLT5zdGFuZGFyZERlcml2YXRpdmVzID0gZnVuY3Rpb25zLT5pc0F0
TGVhc3RHTChnbDo6VmVyc2lvbigyLCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigi
R0xfQVJCX2ZyYWdtZW50X3NoYWRlciIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwg
ZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMi
KTsKKyAgICBleHRlbnNpb25zLT5zaGFkZXJUZXh0dXJlTE9EID0gZnVuY3Rpb25zLT5pc0F0TGVh
c3RHTChnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xf
QVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVu
Y3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7Cisg
ICAgZXh0ZW5zaW9ucy0+ZnJhZ0RlcHRoID0gZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFS
RF9HTF9ERVNLVE9QIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRl
bnNpb24oIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgZXh0ZW5zaW9ucy0+ZmJvUmVuZGVyTWlw
bWFwID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVuY3Rp
b25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX2ZyYW1lYnVmZmVyX29iamVjdCIpIHx8CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGds
OjpWZXJzaW9uKDMsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX09FU19m
Ym9fcmVuZGVyX21pcG1hcCIpOworICAgIGV4dGVuc2lvbnMtPmluc3RhbmNlZEFycmF5cyA9IGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMSkpIHx8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9p
bnN0YW5jZWRfYXJyYXlzIikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5z
aW9uKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiKSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4
dGVuc2lvbigiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICBleHRlbnNpb25zLT51bnBh
Y2tTdWJpbWFnZSA9IGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RH
TEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIik7
CisgICAgZXh0ZW5zaW9ucy0+cGFja1N1YmltYWdlID0gZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBT
VEFOREFSRF9HTF9ERVNLVE9QIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfTlZfcGFj
a19zdWJpbWFnZSIpOworICAgIGV4dGVuc2lvbnMtPmRlYnVnTWFya2VyID0KKyAgICAgICAgZnVu
Y3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAzKSkgfHwgZnVuY3Rpb25zLT5oYXNH
TEV4dGVuc2lvbigiR0xfS0hSX2RlYnVnIikgfHwKKyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVh
c3RHTEVTKGdsOjpWZXJzaW9uKDMsIDIpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24o
IkdMX0tIUl9kZWJ1ZyIpOworICAgIGlmIChmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJz
aW9uKDMsIDMpKSB8fAorICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJf
dGltZXJfcXVlcnkiKSB8fAorICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIpKQorICAgIHsKKyAgICAgICAgZXh0ZW5zaW9ucy0+
ZGlzam9pbnRUaW1lclF1ZXJ5ID0gdHJ1ZTsKKyAgICAgICAgZXh0ZW5zaW9ucy0+cXVlcnlDb3Vu
dGVyQml0c1RpbWVFbGFwc2VkID0KKyAgICAgICAgICAgIFF1ZXJ5UXVlcnlWYWx1ZShmdW5jdGlv
bnMsIEdMX1RJTUVfRUxBUFNFRCwgR0xfUVVFUllfQ09VTlRFUl9CSVRTKTsKKyAgICAgICAgZXh0
ZW5zaW9ucy0+cXVlcnlDb3VudGVyQml0c1RpbWVzdGFtcCA9CisgICAgICAgICAgICBRdWVyeVF1
ZXJ5VmFsdWUoZnVuY3Rpb25zLCBHTF9USU1FU1RBTVAsIEdMX1FVRVJZX0NPVU5URVJfQklUUyk7
CisgICAgfQorCisgICAgLy8gQU5HTEUgZW11bGF0ZXMgdmVydGV4IGFycmF5IG9iamVjdHMgaW4g
aXRzIEdMIGxheWVyCisgICAgZXh0ZW5zaW9ucy0+dmVydGV4QXJyYXlPYmplY3QgPSB0cnVlOwor
CisgICAgZXh0ZW5zaW9ucy0+bm9FcnJvciA9IHRydWU7CiB9CiAKK3ZvaWQgR2VuZXJhdGVXb3Jr
YXJvdW5kcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBXb3JrYXJvdW5kc0dMICp3b3Jr
YXJvdW5kcykKK3sKKyAgICBWZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChmdW5jdGlvbnMp
OworCisgICAgLy8gRG9uJ3QgdXNlIDEtYml0IGFscGhhIGZvcm1hdHMgb24gZGVza3RvcCBHTCB3
aXRoIEFNRCBvciBJbnRlbCBkcml2ZXJzLgorICAgIHdvcmthcm91bmRzLT5hdm9pZDFCaXRBbHBo
YVRleHR1cmVGb3JtYXRzID0KKyAgICAgICAgZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFS
RF9HTF9ERVNLVE9QICYmCisgICAgICAgICh2ZW5kb3IgPT0gVkVORE9SX0lEX0FNRCB8fCB2ZW5k
b3IgPT0gVkVORE9SX0lEX0lOVEVMKTsKKworICAgIHdvcmthcm91bmRzLT5yZ2JhNElzTm90U3Vw
cG9ydGVkRm9yQ29sb3JSZW5kZXJpbmcgPQorICAgICAgICBmdW5jdGlvbnMtPnN0YW5kYXJkID09
IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgdmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTDsKKworICAg
IHdvcmthcm91bmRzLT5kb2VzU1JHQkNsZWFyc09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50
cyA9CisgICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAm
JgorICAgICAgICAodmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTCB8fCB2ZW5kb3IgPT0gVkVORE9S
X0lEX0FNRCk7CisKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQorICAgIHdvcmth
cm91bmRzLT5kb1doaWxlR0xTTENhdXNlc0dQVUhhbmcgPSB0cnVlOworI2VuZGlmCisKKyAgICB3
b3JrYXJvdW5kcy0+ZmluaXNoRG9lc05vdENhdXNlUXVlcmllc1RvQmVBdmFpbGFibGUgPQorICAg
ICAgICBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgdmVuZG9y
ID09IFZFTkRPUl9JRF9OVklESUE7CisKKyAgICAvLyBUT0RPKGN3YWxsZXopOiBEaXNhYmxlIHRo
aXMgd29ya2Fyb3VuZCBmb3IgTWFjT1NYIHZlcnNpb25zIDEwLjkgb3IgbGF0ZXIuCisgICAgd29y
a2Fyb3VuZHMtPmFsd2F5c0NhbGxVc2VQcm9ncmFtQWZ0ZXJMaW5rID0gdHJ1ZTsKIH0KIAogfQor
Citib29sIENhbk1hcEJ1ZmZlckZvclJlYWQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucykK
K3sKKyAgICByZXR1cm4gKGZ1bmN0aW9ucy0+bWFwQnVmZmVyUmFuZ2UgIT0gbnVsbHB0cikgfHwK
KyAgICAgICAgICAgKGZ1bmN0aW9ucy0+bWFwQnVmZmVyICE9IG51bGxwdHIgJiYgZnVuY3Rpb25z
LT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QKTsKK30KKwordWludDhfdCAqTWFwQnVm
ZmVyUmFuZ2VXaXRoRmFsbGJhY2soY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzKQoreworICAgIGlmIChmdW5jdGlvbnMt
Pm1hcEJ1ZmZlclJhbmdlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90ICo+KAorICAgICAgICAgICAgZnVuY3Rpb25zLT5tYXBCdWZmZXJS
YW5nZSh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpKTsKKyAgICB9CisgICAgZWxzZSBp
ZiAoZnVuY3Rpb25zLT5tYXBCdWZmZXIgIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgIChmdW5j
dGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgfHwgYWNjZXNzID09IEdMX01B
UF9XUklURV9CSVQpKQorICAgIHsKKyAgICAgICAgLy8gT25seSB0aGUgcmVhZCBhbmQgd3JpdGUg
Yml0cyBhcmUgc3VwcG9ydGVkCisgICAgICAgIEFTU0VSVCgoYWNjZXNzICYgKEdMX01BUF9SRUFE
X0JJVCB8IEdMX01BUF9XUklURV9CSVQpKSAhPSAwKTsKKworICAgICAgICBHTGVudW0gYWNjZXNz
RW51bSA9IDA7CisgICAgICAgIGlmIChhY2Nlc3MgPT0gKEdMX01BUF9SRUFEX0JJVCB8IEdMX01B
UF9XUklURV9CSVQpKQorICAgICAgICB7CisgICAgICAgICAgICBhY2Nlc3NFbnVtID0gR0xfUkVB
RF9XUklURTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhY2Nlc3MgPT0gR0xfTUFQX1JF
QURfQklUKQorICAgICAgICB7CisgICAgICAgICAgICBhY2Nlc3NFbnVtID0gR0xfUkVBRF9PTkxZ
OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFjY2VzcyA9PSBHTF9NQVBfV1JJVEVfQklU
KQorICAgICAgICB7CisgICAgICAgICAgICBhY2Nlc3NFbnVtID0gR0xfV1JJVEVfT05MWTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4oZnVuY3Rpb25zLT5tYXBCdWZmZXIodGFy
Z2V0LCBhY2Nlc3NFbnVtKSkgKyBvZmZzZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIC8vIE5vIG9wdGlvbnMgYXZhaWxhYmxlCisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L3JlbmRlcmVyZ2xfdXRpbHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaAkod29y
a2luZyBjb3B5KQpAQCAtNCwxNCArNCwxNiBAQAogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KIC8vCiAKLS8vIHJlbmRlcmVyMTFfdXRpbHMuaDogQ29udmVyc2lvbiBmdW5jdGlvbnMgYW5k
IG90aGVyIHV0aWxpdHkgcm91dGluZXMKKy8vIHJlbmRlcmVyZ2xfdXRpbHMuaDogQ29udmVyc2lv
biBmdW5jdGlvbnMgYW5kIG90aGVyIHV0aWxpdHkgcm91dGluZXMKIC8vIHNwZWNpZmljIHRvIHRo
ZSBPcGVuR0wgcmVuZGVyZXIuCiAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfUkVOREVS
RVJHTFVUSUxTX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX1JFTkRFUkVSR0xVVElM
U19IXwogCisjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgiCiAKKyNpbmNsdWRlIDxzdHJp
bmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgZ2wKQEAgLTE5LDIwICsyMSwzMiBA
QAogc3RydWN0IENhcHM7CiBjbGFzcyBUZXh0dXJlQ2Fwc01hcDsKIHN0cnVjdCBFeHRlbnNpb25z
Oworc3RydWN0IFZlcnNpb247CiB9CiAKIG5hbWVzcGFjZSByeAogewogY2xhc3MgRnVuY3Rpb25z
R0w7CitzdHJ1Y3QgV29ya2Fyb3VuZHNHTDsKIAorVmVuZG9ySUQgR2V0VmVuZG9ySUQoY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyk7CitzdGQ6OnN0cmluZyBHZXREcml2ZXJWZXJzaW9uKGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpOworCiBuYW1lc3BhY2UgbmF0aXZlZ2xfZ2wKIHsK
IAogdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgZ2w6OkNh
cHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc01hcCAqdGV4dHVyZUNhcHNNYXAsCi0gICAgICAgICAg
ICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqZXh0ZW5zaW9ucyk7CisgICAgICAgICAgICAgICAgICBn
bDo6RXh0ZW5zaW9ucyAqZXh0ZW5zaW9ucywgZ2w6OlZlcnNpb24gKm1heFN1cHBvcnRlZEVTVmVy
c2lvbik7CiAKK3ZvaWQgR2VuZXJhdGVXb3JrYXJvdW5kcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVu
Y3Rpb25zLCBXb3JrYXJvdW5kc0dMICp3b3JrYXJvdW5kcyk7CiB9CiAKK2Jvb2wgQ2FuTWFwQnVm
ZmVyRm9yUmVhZChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKTsKK3VpbnQ4X3QgKk1hcEJ1
ZmZlclJhbmdlV2l0aEZhbGxiYWNrKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2Vzcyk7CiB9CiAKICNlbmRpZiAvLyBMSUJB
TkdMRV9SRU5ERVJFUl9HTF9SRU5ERVJFUkdMVVRJTFNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRv
d1N1cmZhY2VXR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NTAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBEWEdJU3dhcENo
YWluV2luZG93U3VyZmFjZVdHTC5jcHA6IFdHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZh
Y2UgZm9yIHdpbmRvd3MgdXNpbmcgYSBEWEdJCisvLyBzd2FwY2hhaW4uCisKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuaCIK
KworI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2dsL1RleHR1cmVHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVy
R0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0aW9uc1dHTC5oIgorCisjaW5jbHVkZSA8
RUdML2VnbGV4dC5oPgorCituYW1lc3BhY2UgcngKK3sKKworRFhHSVN3YXBDaGFpbldpbmRvd1N1
cmZhY2VXR0w6OkRYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMKFJlbmRlcmVyR0wgKnJlbmRl
cmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAq
ZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhBTkRMRSBkZXZpY2VIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBIREMgZGV2aWNlQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
R0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRnVuY3Rpb25zV0dMICpmdW5jdGlvbnNXR0wsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9y
aWVudGF0aW9uKQorICAgIDogU3VyZmFjZUdMKHJlbmRlcmVyKSwKKyAgICAgIG1XaW5kb3cod2lu
ZG93KSwKKyAgICAgIG1TdGF0ZU1hbmFnZXIocmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpKSwK
KyAgICAgIG1Xb3JrYXJvdW5kcyhyZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKSksCisgICAgICBt
RnVuY3Rpb25zR0woZnVuY3Rpb25zR0wpLAorICAgICAgbUZ1bmN0aW9uc1dHTChmdW5jdGlvbnNX
R0wpLAorICAgICAgbURldmljZShkZXZpY2UpLAorICAgICAgbURldmljZUhhbmRsZShkZXZpY2VI
YW5kbGUpLAorICAgICAgbVdHTERldmljZShkZXZpY2VDb250ZXh0KSwKKyAgICAgIG1XR0xDb250
ZXh0KHdnbENvbnRleHQpLAorICAgICAgbVN3YXBDaGFpbkZvcm1hdChEWEdJX0ZPUk1BVF9VTktO
T1dOKSwKKyAgICAgIG1Td2FwQ2hhaW5GbGFncygwKSwKKyAgICAgIG1EZXB0aEJ1ZmZlckZvcm1h
dChHTF9OT05FKSwKKyAgICAgIG1GaXJzdFN3YXAodHJ1ZSksCisgICAgICBtU3dhcENoYWluKG51
bGxwdHIpLAorICAgICAgbVN3YXBDaGFpbjEobnVsbHB0ciksCisgICAgICBtQ29sb3JSZW5kZXJi
dWZmZXJJRCgwKSwKKyAgICAgIG1SZW5kZXJidWZmZXJCdWZmZXJIYW5kbGUobnVsbHB0ciksCisg
ICAgICBtRGVwdGhSZW5kZXJidWZmZXJJRCgwKSwKKyAgICAgIG1GcmFtZWJ1ZmZlcklEKDApLAor
ICAgICAgbVRleHR1cmVJRCgwKSwKKyAgICAgIG1UZXh0dXJlSGFuZGxlKG51bGxwdHIpLAorICAg
ICAgbVdpZHRoKDApLAorICAgICAgbUhlaWdodCgwKSwKKyAgICAgIG1Td2FwSW50ZXJ2YWwoMSks
CisgICAgICBtT3JpZW50YXRpb24ob3JpZW50YXRpb24pCit7Cit9CisKK0RYR0lTd2FwQ2hhaW5X
aW5kb3dTdXJmYWNlV0dMOjp+RFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0woKQoreworICAg
IGlmIChtUmVuZGVyYnVmZmVyQnVmZmVySGFuZGxlICE9IG51bGxwdHIpCisgICAgeworICAgICAg
ICBtRnVuY3Rpb25zV0dMLT5keFVubG9ja09iamVjdHNOVihtRGV2aWNlSGFuZGxlLCAxLCAmbVJl
bmRlcmJ1ZmZlckJ1ZmZlckhhbmRsZSk7CisgICAgICAgIG1GdW5jdGlvbnNXR0wtPmR4VW5yZWdp
c3Rlck9iamVjdE5WKG1EZXZpY2VIYW5kbGUsIG1SZW5kZXJidWZmZXJCdWZmZXJIYW5kbGUpOwor
ICAgIH0KKworICAgIGlmIChtQ29sb3JSZW5kZXJidWZmZXJJRCAhPSAwKQorICAgIHsKKyAgICAg
ICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1Db2xvclJlbmRlcmJ1ZmZlcklE
KTsKKyAgICAgICAgbUNvbG9yUmVuZGVyYnVmZmVySUQgPSAwOworICAgIH0KKworICAgIGlmICht
RGVwdGhSZW5kZXJidWZmZXJJRCAhPSAwKQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+
ZGVsZXRlUmVuZGVyYnVmZmVyKG1EZXB0aFJlbmRlcmJ1ZmZlcklEKTsKKyAgICAgICAgbURlcHRo
UmVuZGVyYnVmZmVySUQgPSAwOworICAgIH0KKworICAgIFNhZmVSZWxlYXNlKG1Td2FwQ2hhaW4p
OworICAgIFNhZmVSZWxlYXNlKG1Td2FwQ2hhaW4xKTsKK30KKworZWdsOjpFcnJvciBEWEdJU3dh
cENoYWluV2luZG93U3VyZmFjZVdHTDo6aW5pdGlhbGl6ZSgpCit7CisgICAgaWYgKG1PcmllbnRh
dGlvbiAhPSBFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9JTlZFUlRfWV9BTkdMRSkKKyAgICB7Cisg
ICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogU3VwcG9ydCB0aGUgb3JpZW50YXRpb24gZXh0ZW5z
aW9ucyBmdWxseS4gIEN1cnJlbnRseSBvbmx5IGludmVydGluZyBZIGlzCisgICAgICAgIC8vIHN1
cHBvcnRlZC4gIFRvIHN1cHBvcnQgYWxsIG9yaWVudGF0aW9ucywgYW4gaW50ZXJtZWRpYXRlIGZy
YW1lYnVmZmVyIHdpbGwgYmUgbmVlZGVkIHdpdGgKKyAgICAgICAgLy8gYSBibGl0IGJlZm9yZSBz
d2FwLgorICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkRYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMIHJlcXVp
cmVzIGFuIG9yaWVudGF0aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9T
VVJGQUNFX09SSUVOVEFUSU9OX0lOVkVSVF9ZX0FOR0xFLiIpOworICAgIH0KKworICAgIFJFQ1Qg
cmVjdDsKKyAgICBpZiAoIUdldENsaWVudFJlY3QobVdpbmRvdywgJnJlY3QpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9OQVRJVkVfV0lORE9XLCAiRmFpbGVkIHRv
IHF1ZXJ5IHRoZSB3aW5kb3cgc2l6ZS4iKTsKKyAgICB9CisgICAgbVdpZHRoICA9IHJlY3Qucmln
aHQgLSByZWN0LmxlZnQ7CisgICAgbUhlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3A7CisK
KyAgICBtU3dhcENoYWluRm9ybWF0ICAgPSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAg
ICBtU3dhcENoYWluRmxhZ3MgICAgPSAwOworICAgIG1EZXB0aEJ1ZmZlckZvcm1hdCA9IEdMX0RF
UFRIMjRfU1RFTkNJTDg7CisKKyAgICBtRnVuY3Rpb25zR0wtPmdlbkZyYW1lYnVmZmVycygxLCAm
bUZyYW1lYnVmZmVySUQpOworICAgIG1GdW5jdGlvbnNHTC0+Z2VuUmVuZGVyYnVmZmVycygxLCAm
bUNvbG9yUmVuZGVyYnVmZmVySUQpOworICAgIG1GdW5jdGlvbnNHTC0+Z2VuUmVuZGVyYnVmZmVy
cygxLCAmbURlcHRoUmVuZGVyYnVmZmVySUQpOworCisgICAgcmV0dXJuIGNyZWF0ZVN3YXBDaGFp
bigpOworfQorCitlZ2w6OkVycm9yIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjptYWtl
Q3VycmVudCgpCit7CisgICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5tYWtlQ3VycmVudChtV0dMRGV2
aWNlLCBtV0dMQ29udGV4dCkpCisgICAgeworICAgICAgICAvLyBUT0RPOiBXaGF0IGVycm9yIHR5
cGUgaGVyZT8KKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0NPTlRFWFRfTE9TVCwgIkZh
aWxlZCB0byBtYWtlIHRoZSBXR0wgY29udGV4dCBjdXJyZW50LiIpOworICAgIH0KKworICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEWEdJU3dhcENo
YWluV2luZG93U3VyZmFjZVdHTDo6c3dhcCgpCit7CisgICAgbUZ1bmN0aW9uc0dMLT5mbHVzaCgp
OworCisgICAgZWdsOjpFcnJvciBlcnJvciA9IHNldE9iamVjdHNMb2NrZWQoZmFsc2UpOworICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
fQorCisgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5QcmVzZW50KG1Td2FwSW50ZXJ2
YWwsIDApOworICAgIG1GaXJzdFN3YXAgICAgID0gZmFsc2U7CisKKyAgICBlcnJvciA9IHNldE9i
amVjdHNMb2NrZWQodHJ1ZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAg
eworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIHBy
ZXNlbnQgc3dhcCBjaGFpbiwgcmVzdWx0OiAweCVYIiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY2hlY2tGb3JSZXNpemUoKTsKK30KKworZWdsOjpFcnJvciBEWEdJU3dhcENoYWluV2lu
ZG93U3VyZmFjZVdHTDo6cG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMaW50IGhlaWdodCkKK3sKKyAgICBBU1NFUlQobVN3YXBDaGFpbjEgIT0gbnVsbHB0
cik7CisKKyAgICBtRnVuY3Rpb25zR0wtPmZsdXNoKCk7CisKKyAgICBlZ2w6OkVycm9yIGVycm9y
ID0gc2V0T2JqZWN0c0xvY2tlZChmYWxzZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9
IFNfT0s7CisgICAgaWYgKG1GaXJzdFN3YXApCisgICAgeworICAgICAgICByZXN1bHQgICAgID0g
bVN3YXBDaGFpbjEtPlByZXNlbnQobVN3YXBJbnRlcnZhbCwgMCk7CisgICAgICAgIG1GaXJzdFN3
YXAgPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgUkVDVCByZWN0ID0g
e3N0YXRpY19jYXN0PExPTkc+KHgpLCBzdGF0aWNfY2FzdDxMT05HPihtSGVpZ2h0IC0geSAtIGhl
aWdodCksCisgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxMT05HPih4ICsgd2lkdGgp
LCBzdGF0aWNfY2FzdDxMT05HPihtSGVpZ2h0IC0geSl9OworICAgICAgICBEWEdJX1BSRVNFTlRf
UEFSQU1FVEVSUyBwYXJhbXMgPSB7MSwgJnJlY3QsIG51bGxwdHIsIG51bGxwdHJ9OworICAgICAg
ICByZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtU3dhcENoYWluMS0+UHJlc2VudDEo
bVN3YXBJbnRlcnZhbCwgMCwgJnBhcmFtcyk7CisgICAgfQorCisgICAgZXJyb3IgPSBzZXRPYmpl
Y3RzTG9ja2VkKHRydWUpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BTExPQywgIkZhaWxlZCB0byBwcmVz
ZW50IHN3YXAgY2hhaW4sIHJlc3VsdDogMHglWCIsIHJlc3VsdCk7CisgICAgfQorCisgICAgcmV0
dXJuIGNoZWNrRm9yUmVzaXplKCk7Cit9CisKK2VnbDo6RXJyb3IgRFhHSVN3YXBDaGFpbldpbmRv
d1N1cmZhY2VXR0w6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2
b2lkICoqdmFsdWUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0w6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikK
K3sKKyAgICBBU1NFUlQobVRleHR1cmVIYW5kbGUgPT0gbnVsbHB0cik7CisKKyAgICBjb25zdCBU
ZXh0dXJlR0wgKnRleHR1cmVHTCA9IEdldEltcGxBczxUZXh0dXJlR0w+KHRleHR1cmUpOworICAg
IEdMdWludCB0ZXh0dXJlSUQgICAgICAgICAgID0gdGV4dHVyZUdMLT5nZXRUZXh0dXJlSUQoKTsK
KworICAgIElEM0QxMVRleHR1cmUyRCAqY29sb3JCdWZmZXIgPSBudWxscHRyOworICAgIEhSRVNV
TFQgcmVzdWx0ID0gbVN3YXBDaGFpbi0+R2V0QnVmZmVyKDAsIF9fdXVpZG9mKElEM0QxMVRleHR1
cmUyRCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx2b2lkICoqPigmY29sb3JCdWZmZXIpKTsKKyAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFp
bGVkIHRvIHF1ZXJ5IHRleHR1cmUgZnJvbSBzd2FwIGNoYWluLCByZXN1bHQ6IDB4JVgiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgIH0KKworICAgIG1UZXh0dXJlSGFu
ZGxlID0gbUZ1bmN0aW9uc1dHTC0+ZHhSZWdpc3Rlck9iamVjdE5WKG1EZXZpY2VIYW5kbGUsIGNv
bG9yQnVmZmVyLCB0ZXh0dXJlSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVEVYVFVSRV8yRCwgV0dMX0FDQ0VTU19SRUFEX1dSSVRF
X05WKTsKKyAgICBTYWZlUmVsZWFzZShjb2xvckJ1ZmZlcik7CisgICAgaWYgKG1UZXh0dXJlSGFu
ZGxlID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X0FMTE9DLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIEQzRCBvYmplY3QsIGVycm9yOiAweCUwOHguIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgSFJFU1VMVF9DT0RFKEdldExhc3RFcnJvcigpKSk7
CisgICAgfQorCisgICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5keExvY2tPYmplY3RzTlYobURldmlj
ZUhhbmRsZSwgMSwgJm1UZXh0dXJlSGFuZGxlKSkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnNX
R0wtPmR4VW5yZWdpc3Rlck9iamVjdE5WKG1EZXZpY2VIYW5kbGUsIG1UZXh0dXJlSGFuZGxlKTsK
KyAgICAgICAgbVRleHR1cmVIYW5kbGUgPSBudWxscHRyOworCisgICAgICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWlsZWQgdG8gbG9jayBEM0Qgb2JqZWN0LCBlcnJvcjog
MHglMDh4LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEhSRVNVTFRfQ09ERShHZXRMYXN0
RXJyb3IoKSkpOworICAgIH0KKworICAgIG1UZXh0dXJlSUQgPSB0ZXh0dXJlSUQ7CisKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgRFhHSVN3YXBD
aGFpbldpbmRvd1N1cmZhY2VXR0w6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKQorewor
ICAgIEFTU0VSVChtVGV4dHVyZUhhbmRsZSAhPSBudWxscHRyKTsKKworICAgIGlmICghbUZ1bmN0
aW9uc1dHTC0+ZHhVbmxvY2tPYmplY3RzTlYobURldmljZUhhbmRsZSwgMSwgJm1UZXh0dXJlSGFu
ZGxlKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJG
YWlsZWQgdG8gdW5sb2NrIEQzRCBvYmplY3QsIGVycm9yOiAweCUwOHguIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgSFJFU1VMVF9DT0RFKEdldExhc3RFcnJvcigpKSk7CisgICAgfQorCisg
ICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5keFVucmVnaXN0ZXJPYmplY3ROVihtRGV2aWNlSGFuZGxl
LCBtVGV4dHVyZUhhbmRsZSkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xf
QkFEX0FMTE9DLCAiRmFpbGVkIHRvIHVucmVnaXN0ZXIgRDNEIG9iamVjdCwgZXJyb3I6IDB4JTA4
eC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUX0NPREUoR2V0TGFzdEVycm9y
KCkpKTsKKyAgICB9CisKKyAgICBtVGV4dHVyZUlEICAgICA9IDA7CisgICAgbVRleHR1cmVIYW5k
bGUgPSBudWxscHRyOworCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQor
Cit2b2lkIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjpzZXRTd2FwSW50ZXJ2YWwoRUdM
aW50IGludGVydmFsKQoreworICAgIG1Td2FwSW50ZXJ2YWwgPSBpbnRlcnZhbDsKK30KKworRUdM
aW50IERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjpnZXRXaWR0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVHTGludD4obVdpZHRoKTsKK30KKworRUdMaW50IERYR0lT
d2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjpnZXRIZWlnaHQoKSBjb25zdAoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFR0xpbnQ+KG1IZWlnaHQpOworfQorCitFR0xpbnQgRFhHSVN3YXBDaGFp
bldpbmRvd1N1cmZhY2VXR0w6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1Td2FwQ2hhaW4xICE9IG51bGxwdHI7Cit9CisKK0VHTGludCBEWEdJU3dhcENo
YWluV2luZG93U3VyZmFjZVdHTDo6Z2V0U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gRUdMX0JVRkZFUl9ERVNUUk9ZRUQ7Cit9CisKK0ZyYW1lYnVmZmVySW1wbCAqRFhHSVN3YXBD
aGFpbldpbmRvd1N1cmZhY2VXR0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcigKKyAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXI6OkRhdGEgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1
ZmZlckdMKG1GcmFtZWJ1ZmZlcklELCBkYXRhLCBtRnVuY3Rpb25zR0wsIG1Xb3JrYXJvdW5kcywg
bVN0YXRlTWFuYWdlcik7Cit9CisKK2VnbDo6RXJyb3IgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0w6OnNldE9iamVjdHNMb2NrZWQoYm9vbCBsb2NrZWQpCit7CisgICAgaWYgKG1SZW5kZXJi
dWZmZXJCdWZmZXJIYW5kbGUgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIEFTU0VSVChtVGV4
dHVyZUhhbmRsZSA9PSBudWxscHRyKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NV
Q0NFU1MpOworICAgIH0KKworICAgIEhBTkRMRSByZXNvdXJjZXNbXSA9IHsKKyAgICAgICAgbVJl
bmRlcmJ1ZmZlckJ1ZmZlckhhbmRsZSwgbVRleHR1cmVIYW5kbGUsCisgICAgfTsKKyAgICBHTGlu
dCBjb3VudCA9IChtVGV4dHVyZUhhbmRsZSAhPSBudWxscHRyKSA/IDIgOiAxOworCisgICAgaWYg
KGxvY2tlZCkKKyAgICB7CisgICAgICAgIGlmICghbUZ1bmN0aW9uc1dHTC0+ZHhMb2NrT2JqZWN0
c05WKG1EZXZpY2VIYW5kbGUsIGNvdW50LCByZXNvdXJjZXMpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIGxvY2sgb2Jq
ZWN0LCBlcnJvcjogMHglMDh4LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVT
VUxUX0NPREUoR2V0TGFzdEVycm9yKCkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBpZiAoIW1GdW5jdGlvbnNXR0wtPmR4VW5sb2NrT2JqZWN0c05WKG1EZXZp
Y2VIYW5kbGUsIGNvdW50LCByZXNvdXJjZXMpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIGxvY2sgb2JqZWN0LCBlcnJv
cjogMHglMDh4LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUX0NPREUo
R2V0TGFzdEVycm9yKCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEWEdJU3dhcENoYWluV2luZG93U3Vy
ZmFjZVdHTDo6Y2hlY2tGb3JSZXNpemUoKQoreworICAgIFJFQ1QgcmVjdDsKKyAgICBpZiAoIUdl
dENsaWVudFJlY3QobVdpbmRvdywgJnJlY3QpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX0JBRF9OQVRJVkVfV0lORE9XLCAiRmFpbGVkIHRvIHF1ZXJ5IHRoZSB3aW5kb3cg
c2l6ZS4iKTsKKyAgICB9CisKKyAgICBzaXplX3QgbmV3V2lkdGggID0gcmVjdC5yaWdodCAtIHJl
Y3QubGVmdDsKKyAgICBzaXplX3QgbmV3SGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcDsK
KyAgICBpZiAobmV3V2lkdGggIT0gbVdpZHRoIHx8IG5ld0hlaWdodCAhPSBtSGVpZ2h0KQorICAg
IHsKKyAgICAgICAgbVdpZHRoICA9IG5ld1dpZHRoOworICAgICAgICBtSGVpZ2h0ID0gbmV3SGVp
Z2h0OworCisgICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogSGFuZGxlIHJlc2l6ZSBieSByZXNp
emluZyB0aGUgc3dhcCBjaGFpbiBpbnN0ZWFkIG9mIHJlLWNyZWF0aW5nIGl0LgorICAgICAgICBl
Z2w6OkVycm9yIGVycm9yID0gY3JlYXRlU3dhcENoYWluKCk7CisgICAgICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworc3Rh
dGljIElEWEdJRmFjdG9yeSAqR2V0RFhHSUZhY3RvcnlGcm9tRGV2aWNlKElEM0QxMURldmljZSAq
ZGV2aWNlKQoreworICAgIElEWEdJRGV2aWNlICpkeGdpRGV2aWNlID0gbnVsbHB0cjsKKyAgICBI
UkVTVUxUIHJlc3VsdCA9CisgICAgICAgIGRldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2Yo
SURYR0lEZXZpY2UpLCByZWludGVycHJldF9jYXN0PHZvaWQgKio+KCZkeGdpRGV2aWNlKSk7Cisg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgSURYR0lBZGFwdGVyICpkeGdpQWRhcHRlciA9IG51bGxwdHI7CisgICAgcmVz
dWx0ID0gZHhnaURldmljZS0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJQWRhcHRlciksIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJmR4Z2lBZGFwdGVyKSk7CisgICAgU2FmZVJlbGVhc2UoZHhn
aURldmljZSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgSURYR0lGYWN0b3J5ICpkeGdpRmFjdG9yeSA9IG51bGxw
dHI7CisgICAgcmVzdWx0ID0KKyAgICAgICAgZHhnaUFkYXB0ZXItPkdldFBhcmVudChfX3V1aWRv
ZihJRFhHSUZhY3RvcnkpLCByZWludGVycHJldF9jYXN0PHZvaWQgKio+KCZkeGdpRmFjdG9yeSkp
OworICAgIFNhZmVSZWxlYXNlKGR4Z2lBZGFwdGVyKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgeworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gZHhn
aUZhY3Rvcnk7Cit9CisKK2VnbDo6RXJyb3IgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0w6
OmNyZWF0ZVN3YXBDaGFpbigpCit7CisgICAgZWdsOjpFcnJvciBlcnJvciA9IHNldE9iamVjdHNM
b2NrZWQoZmFsc2UpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgaWYgKG1SZW5kZXJidWZmZXJCdWZmZXJIYW5kbGUp
CisgICAgeworICAgICAgICBtRnVuY3Rpb25zV0dMLT5keFVucmVnaXN0ZXJPYmplY3ROVihtRGV2
aWNlSGFuZGxlLCBtUmVuZGVyYnVmZmVyQnVmZmVySGFuZGxlKTsKKyAgICAgICAgbVJlbmRlcmJ1
ZmZlckJ1ZmZlckhhbmRsZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgLy8gSWYgdGhpcyBzdXJm
YWNlIGlzIGJvdW5kIHRvIGEgdGV4dHVyZSwgdW5yZWdpc3RlciBpdC4KKyAgICBib29sIGhhZEJv
dW5kU3VyZmFjZSA9IChtVGV4dHVyZUhhbmRsZSAhPSBudWxscHRyKTsKKyAgICBpZiAoaGFkQm91
bmRTdXJmYWNlKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9uc1dHTC0+ZHhVbnJlZ2lzdGVyT2Jq
ZWN0TlYobURldmljZUhhbmRsZSwgbVRleHR1cmVIYW5kbGUpOworICAgICAgICBtVGV4dHVyZUhh
bmRsZSA9IG51bGxwdHI7CisgICAgfQorCisgICAgSURYR0lGYWN0b3J5ICpkeGdpRmFjdG9yeSA9
IEdldERYR0lGYWN0b3J5RnJvbURldmljZShtRGV2aWNlKTsKKyAgICBpZiAoZHhnaUZhY3Rvcnkg
PT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfTkFU
SVZFX1dJTkRPVywgIkZhaWxlZCB0byBxdWVyeSB0aGUgRFhHSUZhY3RvcnkuIik7CisgICAgfQor
CisgICAgSURYR0lGYWN0b3J5MiAqZHhnaUZhY3RvcnkyID0gbnVsbHB0cjsKKyAgICBIUkVTVUxU
IHJlc3VsdCA9IGR4Z2lGYWN0b3J5LT5RdWVyeUludGVyZmFjZShfX3V1aWRvZihJRFhHSUZhY3Rv
cnkyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHZvaWQgKio+KCZkeGdpRmFjdG9yeTIpKTsKKyAgICBpZiAoU1VDQ0VF
REVEKHJlc3VsdCkpCisgICAgeworICAgICAgICBBU1NFUlQoZHhnaUZhY3RvcnkyICE9IG51bGxw
dHIpOworCisgICAgICAgIERYR0lfU1dBUF9DSEFJTl9ERVNDMSBzd2FwQ2hhaW5EZXNjID0gezB9
OworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckNvdW50ICAgICAgICAgICA9IDE7CisgICAg
ICAgIHN3YXBDaGFpbkRlc2MuRm9ybWF0ICAgICAgICAgICAgICAgID0gbVN3YXBDaGFpbkZvcm1h
dDsKKyAgICAgICAgc3dhcENoYWluRGVzYy5XaWR0aCAgICAgICAgICAgICAgICAgPSBzdGF0aWNf
Y2FzdDxVSU5UPihtV2lkdGgpOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkhlaWdodCAgICAgICAg
ICAgICAgICA9IHN0YXRpY19jYXN0PFVJTlQ+KG1IZWlnaHQpOworICAgICAgICBzd2FwQ2hhaW5E
ZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Td2FwQ2hhaW5Gb3JtYXQ7CisgICAgICAgIHN3
YXBDaGFpbkRlc2MuU3RlcmVvICAgICAgICAgICAgICAgID0gRkFMU0U7CisgICAgICAgIHN3YXBD
aGFpbkRlc2MuU2FtcGxlRGVzYy5Db3VudCAgICAgID0gMTsKKyAgICAgICAgc3dhcENoYWluRGVz
Yy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlclVz
YWdlID0KKyAgICAgICAgICAgIERYR0lfVVNBR0VfUkVOREVSX1RBUkdFVF9PVVRQVVQgfCBEWEdJ
X1VTQUdFX1NIQURFUl9JTlBVVCB8IERYR0lfVVNBR0VfQkFDS19CVUZGRVI7CisgICAgICAgIHN3
YXBDaGFpbkRlc2MuQnVmZmVyQ291bnQgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLlNjYWxp
bmcgICAgID0gRFhHSV9TQ0FMSU5HX1NUUkVUQ0g7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuU3dh
cEVmZmVjdCAgPSBEWEdJX1NXQVBfRUZGRUNUX1NFUVVFTlRJQUw7CisgICAgICAgIHN3YXBDaGFp
bkRlc2MuQWxwaGFNb2RlICAgPSBEWEdJX0FMUEhBX01PREVfVU5TUEVDSUZJRUQ7CisgICAgICAg
IHN3YXBDaGFpbkRlc2MuRmxhZ3MgICAgICAgPSBtU3dhcENoYWluRmxhZ3M7CisKKyAgICAgICAg
cmVzdWx0ID0gZHhnaUZhY3RvcnkyLT5DcmVhdGVTd2FwQ2hhaW5Gb3JId25kKG1EZXZpY2UsIG1X
aW5kb3csICZzd2FwQ2hhaW5EZXNjLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgJm1Td2FwQ2hhaW4xKTsKKyAg
ICAgICAgU2FmZVJlbGVhc2UoZHhnaUZhY3RvcnkyKTsKKyAgICAgICAgU2FmZVJlbGVhc2UoZHhn
aUZhY3RvcnkpOworICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWlsZWQgdG8gY3JlYXRl
IHN3YXAgY2hhaW4gZm9yIHdpbmRvdywgcmVzdWx0OiAweCVYIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIH0KKworICAgICAgICBtU3dhcENoYWluID0g
bVN3YXBDaGFpbjE7CisgICAgICAgIG1Td2FwQ2hhaW4tPkFkZFJlZigpOworICAgIH0KKyAgICBl
bHNlCisgICAgeworICAgICAgICBEWEdJX1NXQVBfQ0hBSU5fREVTQyBzd2FwQ2hhaW5EZXNjICAg
ICAgICAgICAgICAgPSB7fTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJDb3VudCAgICAg
ICAgICAgICAgICAgICAgICAgID0gMTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNj
LkZvcm1hdCAgICAgICAgICAgICAgICAgID0gbVN3YXBDaGFpbkZvcm1hdDsKKyAgICAgICAgc3dh
cENoYWluRGVzYy5CdWZmZXJEZXNjLldpZHRoICAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nh
c3Q8VUlOVD4obVdpZHRoKTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5CdWZmZXJEZXNjLkhlaWdo
dCAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8VUlOVD4obUhlaWdodCk7CisgICAgICAg
IHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5TY2FsaW5nICAgICAgICAgICAgICAgICA9IERYR0lf
TU9ERV9TQ0FMSU5HX1VOU1BFQ0lGSUVEOworICAgICAgICBzd2FwQ2hhaW5EZXNjLkJ1ZmZlckRl
c2MuU2NhbmxpbmVPcmRlcmluZyAgICAgICAgPSBEWEdJX01PREVfU0NBTkxJTkVfT1JERVJfVU5T
UEVDSUZJRUQ7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNoUmF0ZS5O
dW1lcmF0b3IgICA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyRGVzYy5SZWZyZXNo
UmF0ZS5EZW5vbWluYXRvciA9IDE7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuQnVmZmVyVXNhZ2Ug
PQorICAgICAgICAgICAgRFhHSV9VU0FHRV9SRU5ERVJfVEFSR0VUX09VVFBVVCB8IERYR0lfVVNB
R0VfU0hBREVSX0lOUFVUIHwgRFhHSV9VU0FHRV9CQUNLX0JVRkZFUjsKKyAgICAgICAgc3dhcENo
YWluRGVzYy5GbGFncyAgICAgICAgICAgICAgPSBtU3dhcENoYWluRmxhZ3M7CisgICAgICAgIHN3
YXBDaGFpbkRlc2MuT3V0cHV0V2luZG93ICAgICAgID0gbVdpbmRvdzsKKyAgICAgICAgc3dhcENo
YWluRGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOworICAgICAgICBzd2FwQ2hhaW5EZXNjLlNh
bXBsZURlc2MuUXVhbGl0eSA9IDA7CisgICAgICAgIHN3YXBDaGFpbkRlc2MuV2luZG93ZWQgICAg
ICAgICAgID0gVFJVRTsKKyAgICAgICAgc3dhcENoYWluRGVzYy5Td2FwRWZmZWN0ICAgICAgICAg
PSBEWEdJX1NXQVBfRUZGRUNUX0RJU0NBUkQ7CisKKyAgICAgICAgcmVzdWx0ID0gZHhnaUZhY3Rv
cnktPkNyZWF0ZVN3YXBDaGFpbihtRGV2aWNlLCAmc3dhcENoYWluRGVzYywgJm1Td2FwQ2hhaW4p
OworICAgICAgICBTYWZlUmVsZWFzZShkeGdpRmFjdG9yeSk7CisgICAgICAgIGlmIChGQUlMRUQo
cmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JB
RF9BTExPQywgIkZhaWxlZCB0byBjcmVhdGUgc3dhcCBjaGFpbiBmb3Igd2luZG93LCByZXN1bHQ6
IDB4JVgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIElEM0QxMVRleHR1cmUyRCAqY29sb3JCdWZmZXIgPSBudWxscHRyOwor
ICAgIHJlc3VsdCA9IG1Td2FwQ2hhaW4tPkdldEJ1ZmZlcigwLCBfX3V1aWRvZihJRDNEMTFUZXh0
dXJlMkQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PHZvaWQgKio+KCZjb2xvckJ1ZmZlcikpOworICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWlsZWQgdG8g
cXVlcnkgdGV4dHVyZSBmcm9tIHN3YXAgY2hhaW4sIHJlc3VsdDogMHglWCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgfQorCisgICAgbUZ1bmN0aW9uc0dMLT5nZW5S
ZW5kZXJidWZmZXJzKDEsICZtQ29sb3JSZW5kZXJidWZmZXJJRCk7CisgICAgbVN0YXRlTWFuYWdl
ci0+YmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1Db2xvclJlbmRlcmJ1ZmZlcklE
KTsKKyAgICBtUmVuZGVyYnVmZmVyQnVmZmVySGFuZGxlID0KKyAgICAgICAgbUZ1bmN0aW9uc1dH
TC0+ZHhSZWdpc3Rlck9iamVjdE5WKG1EZXZpY2VIYW5kbGUsIGNvbG9yQnVmZmVyLCBtQ29sb3JS
ZW5kZXJidWZmZXJJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JFTkRFUkJVRkZFUiwgV0dMX0FDQ0VTU19SRUFEX1dSSVRFX05WKTsKKyAgICBTYWZlUmVs
ZWFzZShjb2xvckJ1ZmZlcik7CisgICAgaWYgKG1SZW5kZXJidWZmZXJCdWZmZXJIYW5kbGUgPT0g
bnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0Ms
ICJGYWlsZWQgdG8gcmVnaXN0ZXIgRDNEIG9iamVjdCwgZXJyb3I6IDB4JVguIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgSFJFU1VMVF9DT0RFKEdldExhc3RFcnJvcigpKSk7CisgICAgfQor
CisgICAgLy8gUmViaW5kIHRoZSBzdXJmYWNlIHRvIHRoZSB0ZXh0dXJlIGlmIG5lZWRlZC4KKyAg
ICBpZiAoaGFkQm91bmRTdXJmYWNlKQorICAgIHsKKyAgICAgICAgbVRleHR1cmVIYW5kbGUgPSBt
RnVuY3Rpb25zV0dMLT5keFJlZ2lzdGVyT2JqZWN0TlYobURldmljZUhhbmRsZSwgY29sb3JCdWZm
ZXIsIG1UZXh0dXJlSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1RFWFRVUkVfMkQsIFdHTF9BQ0NFU1NfUkVBRF9XUklURV9O
Vik7CisgICAgICAgIGlmIChtVGV4dHVyZUhhbmRsZSA9PSBudWxscHRyKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIHJl
Z2lzdGVyIEQzRCBvYmplY3QsIGVycm9yOiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBIUkVTVUxUX0NPREUoR2V0TGFzdEVycm9yKCkpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGVycm9yID0gc2V0T2JqZWN0c0xvY2tlZCh0cnVlKTsKKyAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIEFTU0VS
VChtRnJhbWVidWZmZXJJRCAhPSAwKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKKyAgICBtRnVuY3Rpb25zR0wtPmZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwgR0xfUkVOREVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbUNvbG9yUmVuZGVyYnVmZmVySUQpOworCisgICAgaWYgKG1EZXB0aEJ1ZmZlckZvcm1h
dCAhPSBHTF9OT05FKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1EZXB0aFJlbmRlcmJ1ZmZlcklE
ICE9IDApOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRF
UkJVRkZFUiwgbURlcHRoUmVuZGVyYnVmZmVySUQpOworICAgICAgICBtRnVuY3Rpb25zR0wtPnJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBtRGVwdGhCdWZmZXJGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNp
emVpPihtV2lkdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R0xzaXplaT4obUhlaWdodCkpOworCisgICAgICAgIGNvbnN0IGdsOjpJbnRl
cm5hbEZvcm1hdCAmZGVwdGhTdGVuY2lsRm9ybWF0SW5mbyA9CisgICAgICAgICAgICBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKG1EZXB0aEJ1ZmZlckZvcm1hdCk7CisgICAgICAgIGlmIChkZXB0
aFN0ZW5jaWxGb3JtYXRJbmZvLmRlcHRoQml0cyA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1GdW5jdGlvbnNHTC0+ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdM
X0RFUFRIX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JFTkRFUkJVRkZFUiwgbURlcHRoUmVuZGVyYnVmZmVySUQpOworICAg
ICAgICB9CisgICAgICAgIGlmIChkZXB0aFN0ZW5jaWxGb3JtYXRJbmZvLnN0ZW5jaWxCaXRzID4g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9uc0dMLT5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRU5ERVJCVUZGRVIs
IG1EZXB0aFJlbmRlcmJ1ZmZlcklEKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1GaXJzdFN3
YXAgPSB0cnVlOworCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorfSAg
Ly8gbmFtZXNwYWNlIHJ4CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dh
cENoYWluV2luZG93U3VyZmFjZVdHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA0IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuaDogV0dM
IGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3Igd2luZG93cyB1c2luZyBhIERYR0kK
Ky8vIHN3YXBjaGFpbi4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9XR0xfRFhHSVNX
QVBDSEFJTlNVUkZBQ0VXR0xfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfV0dMX0RY
R0lTV0FQQ0hBSU5TVVJGQUNFV0dMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9TdXJmYWNlR0wuaCIKKworI2luY2x1ZGUgPEdML3dnbGV4dC5oPgorCituYW1lc3BhY2UgcngK
K3sKKworY2xhc3MgRnVuY3Rpb25zR0w7CitjbGFzcyBGdW5jdGlvbnNXR0w7CitjbGFzcyBEaXNw
bGF5V0dMOworY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CitzdHJ1Y3QgV29ya2Fyb3VuZHNHTDsKKwor
Y2xhc3MgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wgOiBwdWJsaWMgU3VyZmFjZUdMCit7
CisgIHB1YmxpYzoKKyAgICBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTChSZW5kZXJlckdM
ICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNE
MTFEZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5E
TEUgZGV2aWNlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhHTFJD
IHdnbENvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSERDIGRldmlj
ZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9uc0dMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEZ1bmN0aW9uc1dHTCAqZnVuY3Rpb25zV0dMLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbik7CisgICAgfkRYR0lTd2FwQ2hhaW5XaW5kb3dT
dXJmYWNlV0dMKCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVy
cmlkZTsKKyAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6
OkVycm9yIHN3YXAoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdM
aW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwor
ICAgIGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUs
IHZvaWQgKip2YWx1ZSkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6
OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAgIGVnbDo6RXJy
b3IgcmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgZ2V0
V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkgY29uc3Qgb3Zl
cnJpZGU7CisKKyAgICBFR0xpbnQgaXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlvcigpIGNvbnN0IG92ZXJyaWRlOworCisg
ICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyOjpEYXRhICZkYXRhKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIGVnbDo6
RXJyb3Igc2V0T2JqZWN0c0xvY2tlZChib29sIGxvY2tlZCk7CisgICAgZWdsOjpFcnJvciBjaGVj
a0ZvclJlc2l6ZSgpOworCisgICAgZWdsOjpFcnJvciBjcmVhdGVTd2FwQ2hhaW4oKTsKKworICAg
IEVHTE5hdGl2ZVdpbmRvd1R5cGUgbVdpbmRvdzsKKworICAgIFN0YXRlTWFuYWdlckdMICptU3Rh
dGVNYW5hZ2VyOworICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJvdW5kczsKKyAgICBj
b25zdCBGdW5jdGlvbnNHTCAqbUZ1bmN0aW9uc0dMOworICAgIGNvbnN0IEZ1bmN0aW9uc1dHTCAq
bUZ1bmN0aW9uc1dHTDsKKworICAgIElEM0QxMURldmljZSAqbURldmljZTsKKyAgICBIQU5ETEUg
bURldmljZUhhbmRsZTsKKworICAgIEhEQyBtV0dMRGV2aWNlOworICAgIEhHTFJDIG1XR0xDb250
ZXh0OworCisgICAgRFhHSV9GT1JNQVQgbVN3YXBDaGFpbkZvcm1hdDsKKyAgICBVSU5UIG1Td2Fw
Q2hhaW5GbGFnczsKKyAgICBHTGVudW0gbURlcHRoQnVmZmVyRm9ybWF0OworCisgICAgYm9vbCBt
Rmlyc3RTd2FwOworICAgIElEWEdJU3dhcENoYWluICptU3dhcENoYWluOworICAgIElEWEdJU3dh
cENoYWluMSAqbVN3YXBDaGFpbjE7CisKKyAgICBHTHVpbnQgbUNvbG9yUmVuZGVyYnVmZmVySUQ7
CisgICAgSEFORExFIG1SZW5kZXJidWZmZXJCdWZmZXJIYW5kbGU7CisKKyAgICBHTHVpbnQgbURl
cHRoUmVuZGVyYnVmZmVySUQ7CisKKyAgICBHTHVpbnQgbUZyYW1lYnVmZmVySUQ7CisKKyAgICBH
THVpbnQgbVRleHR1cmVJRDsKKyAgICBIQU5ETEUgbVRleHR1cmVIYW5kbGU7CisKKyAgICBzaXpl
X3QgbVdpZHRoOworICAgIHNpemVfdCBtSGVpZ2h0OworCisgICAgRUdMaW50IG1Td2FwSW50ZXJ2
YWw7CisKKyAgICBFR0xpbnQgbU9yaWVudGF0aW9uOworfTsKK30gIC8vIG5hbWVzcGFjZSByeAor
CisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dHTF9EWEdJU1dBUENIQUlOU1VSRkFD
RVdHTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2ICsxMyw3
IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1
cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5k
b3dTdXJmYWNlV0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0
aW9uc1dHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3Vy
ZmFjZVdHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJm
YWNlV0dMLmgiCkBAIC0zNiw5ICszNyw3IEBACiAgICAgICAgIEFTU0VSVChtR2V0UHJvY0FkZHJl
c3NXR0wpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkZ1bmN0aW9uc0dMV2luZG93cygpCi0gICAg
ewotICAgIH0KKyAgICB+RnVuY3Rpb25zR0xXaW5kb3dzKCkgb3ZlcnJpZGUge30KIAogICBwcml2
YXRlOgogICAgIHZvaWQgKmxvYWRQcm9jQWRkcmVzcyhjb25zdCBzdGQ6OnN0cmluZyAmZnVuY3Rp
b24pIG92ZXJyaWRlCkBAIC02NSw2ICs2NCwxMSBAQAogICAgICAgbURldmljZUNvbnRleHQobnVs
bHB0ciksCiAgICAgICBtUGl4ZWxGb3JtYXQoMCksCiAgICAgICBtV0dMQ29udGV4dChudWxscHRy
KSwKKyAgICAgIG1Vc2VEWEdJU3dhcENoYWlucyhmYWxzZSksCisgICAgICBtRHhnaU1vZHVsZShu
dWxscHRyKSwKKyAgICAgIG1EM2QxMU1vZHVsZShudWxscHRyKSwKKyAgICAgIG1EM0QxMURldmlj
ZUhhbmRsZShudWxscHRyKSwKKyAgICAgIG1EM0QxMURldmljZShudWxscHRyKSwKICAgICAgIG1E
aXNwbGF5KG51bGxwdHIpCiB7CiB9CkBAIC03MywyNiArNzcsNiBAQAogewogfQogCi1zdGF0aWMg
TFJFU1VMVCBDQUxMQkFDSyBJbnRlcm1lZGlhdGVXaW5kb3dQcm9jKEhXTkQgd2luZG93LCBVSU5U
IG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCi17Ci0gICAgc3dpdGNoICht
ZXNzYWdlKQotICAgIHsKLSAgICAgIGNhc2UgV01fRVJBU0VCS0dORDoKLSAgICAgICAgLy8gUHJl
dmVudCB3aW5kb3dzIGZyb20gZXJhc2luZyB0aGUgYmFja2dyb3VuZC4KLSAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICBjYXNlIFdNX1BBSU5UOgotICAgICAgICAvLyBEbyBub3QgcGFpbnQgYW55dGhp
bmcuCi0gICAgICAgIFBBSU5UU1RSVUNUIHBhaW50OwotICAgICAgICBpZiAoQmVnaW5QYWludCh3
aW5kb3csICZwYWludCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVuZFBhaW50KHdpbmRvdywg
JnBhaW50KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gRGVmV2luZG93UHJvYyh3aW5kb3csIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtKTsKLX0KLQog
ZWdsOjpFcnJvciBEaXNwbGF5V0dMOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkK
IHsKICAgICBtRGlzcGxheSA9IGRpc3BsYXk7CkBAIC0xMTIsMjQgKzk2LDI2IEBACiAgICAgLy8g
V29yayBhcm91bmQgY29tcGlsZSBlcnJvciBmcm9tIG5vdCBkZWZpbmluZyAiVU5JQ09ERSIgd2hp
bGUgQ2hyb21pdW0gZG9lcwogICAgIGNvbnN0IExQU1RSIGlkY0Fycm93ID0gTUFLRUlOVFJFU09V
UkNFQSgzMjUxMik7CiAKKyAgICBzdGQ6OnN0cmluZyBjbGFzc05hbWUgPSBGb3JtYXRTdHJpbmco
IkFOR0xFIERpc3BsYXlXR0wgMHglMC44cCBJbnRlcm1lZGlhdGUgV2luZG93IENsYXNzIiwgbURp
c3BsYXkpOworCiAgICAgV05EQ0xBU1NBIGludGVybWVkaWF0ZUNsYXNzRGVzYyA9IHsgMCB9Owog
ICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5zdHlsZSA9IENTX09XTkRDOwotICAgIGludGVybWVk
aWF0ZUNsYXNzRGVzYy5scGZuV25kUHJvYyA9IEludGVybWVkaWF0ZVdpbmRvd1Byb2M7CisgICAg
aW50ZXJtZWRpYXRlQ2xhc3NEZXNjLmxwZm5XbmRQcm9jID0gRGVmV2luZG93UHJvYzsKICAgICBp
bnRlcm1lZGlhdGVDbGFzc0Rlc2MuY2JDbHNFeHRyYSA9IDA7CiAgICAgaW50ZXJtZWRpYXRlQ2xh
c3NEZXNjLmNiV25kRXh0cmEgPSAwOwotICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5oSW5zdGFu
Y2UgPSBHZXRNb2R1bGVIYW5kbGUoTlVMTCk7Ci0gICAgaW50ZXJtZWRpYXRlQ2xhc3NEZXNjLmhJ
Y29uID0gTlVMTDsKLSAgICBpbnRlcm1lZGlhdGVDbGFzc0Rlc2MuaEN1cnNvciA9IExvYWRDdXJz
b3JBKE5VTEwsIGlkY0Fycm93KTsKKyAgICBpbnRlcm1lZGlhdGVDbGFzc0Rlc2MuaEluc3RhbmNl
ID0gR2V0TW9kdWxlSGFuZGxlKG51bGxwdHIpOworICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5o
SWNvbiA9IG51bGxwdHI7CisgICAgaW50ZXJtZWRpYXRlQ2xhc3NEZXNjLmhDdXJzb3IgPSBMb2Fk
Q3Vyc29yQShudWxscHRyLCBpZGNBcnJvdyk7CiAgICAgaW50ZXJtZWRpYXRlQ2xhc3NEZXNjLmhi
ckJhY2tncm91bmQgPSAwOwotICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5scHN6TWVudU5hbWUg
PSBOVUxMOwotICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5scHN6Q2xhc3NOYW1lID0gIkFOR0xF
IEludGVybWVkaWF0ZSBXaW5kb3ciOworICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5scHN6TWVu
dU5hbWUgPSBudWxscHRyOworICAgIGludGVybWVkaWF0ZUNsYXNzRGVzYy5scHN6Q2xhc3NOYW1l
ID0gY2xhc3NOYW1lLmNfc3RyKCk7CiAgICAgbVdpbmRvd0NsYXNzID0gUmVnaXN0ZXJDbGFzc0Eo
JmludGVybWVkaWF0ZUNsYXNzRGVzYyk7CiAgICAgaWYgKCFtV2luZG93Q2xhc3MpCiAgICAgewog
ICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiRmFpbGVkIHRv
IHJlZ2lzdGVyIGludGVybWVkaWF0ZSBPcGVuR0wgd2luZG93IGNsYXNzLiIpOwogICAgIH0KIAot
ICAgIEhXTkQgZHVtbXlXaW5kb3cgPSBDcmVhdGVXaW5kb3dFeEEoV1NfRVhfTk9QQVJFTlROT1RJ
RlksCisgICAgSFdORCBkdW1teVdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4QSgwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
ICo+KG1XaW5kb3dDbGFzcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQU5HTEUgRHVtbXkgV2luZG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdTX09WRVJMQVBQRURXSU5ET1csCkBAIC0xMzcsMTAgKzEyMywxMCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1dfVVNFREVGQVVMVCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENXX1VTRURFRkFVTFQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDV19VU0VERUZBVUxULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICBpZiAoIWR1bW15V2luZG93KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkZhaWxlZCB0
byBjcmVhdGUgZHVtbXkgT3BlbkdMIHdpbmRvdy4iKTsKQEAgLTE4OCwxNiArMTc0LDI1IEBACiAg
ICAgbUZ1bmN0aW9uc1dHTC0+aW5pdGlhbGl6ZShtT3BlbkdMTW9kdWxlLCBkdW1teURldmljZUNv
bnRleHQpOwogCiAgICAgLy8gRGVzdHJveSB0aGUgZHVtbXkgd2luZG93IGFuZCBjb250ZXh0Ci0g
ICAgbUZ1bmN0aW9uc1dHTC0+bWFrZUN1cnJlbnQoZHVtbXlEZXZpY2VDb250ZXh0LCBOVUxMKTsK
KyAgICBtRnVuY3Rpb25zV0dMLT5tYWtlQ3VycmVudChkdW1teURldmljZUNvbnRleHQsIG51bGxw
dHIpOwogICAgIG1GdW5jdGlvbnNXR0wtPmRlbGV0ZUNvbnRleHQoZHVtbXlXR0xDb250ZXh0KTsK
ICAgICBSZWxlYXNlREMoZHVtbXlXaW5kb3csIGR1bW15RGV2aWNlQ29udGV4dCk7CiAgICAgRGVz
dHJveVdpbmRvdyhkdW1teVdpbmRvdyk7CiAKKyAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
ZGlzcGxheUF0dHJpYnV0ZXMgPSBkaXNwbGF5LT5nZXRBdHRyaWJ1dGVNYXAoKTsKKyAgICBFR0xp
bnQgcmVxdWVzdGVkRGlzcGxheVR5cGUgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRpc3BsYXlBdHRy
aWJ1dGVzLmdldCgKKyAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUpKTsKKyAgICBpZiAocmVxdWVzdGVkRGlz
cGxheVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgJiYKKyAg
ICAgICAgIW1GdW5jdGlvbnNXR0wtPmhhc0V4dGVuc2lvbigiV0dMX0VYVF9jcmVhdGVfY29udGV4
dF9lczJfcHJvZmlsZSIpICYmCisgICAgICAgICFtRnVuY3Rpb25zV0dMLT5oYXNFeHRlbnNpb24o
IldHTF9FWFRfY3JlYXRlX2NvbnRleHRfZXNfcHJvZmlsZSIpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNhbm5vdCBjcmVhdGUgYW4gT3BlbkdMIEVTIHBsYXRmb3JtIG9uIFdpbmRvd3Mgd2l0
aG91dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgV0dMX0VYVF9jcmVhdGVfY29u
dGV4dF9lcygyKV9wcm9maWxlIGV4dGVuc2lvbi4iKTsKKyAgICB9CisKICAgICAvLyBDcmVhdGUg
dGhlIHJlYWwgaW50ZXJtZWRpYXRlIGNvbnRleHQgYW5kIHdpbmRvd3MKLSAgICBIREMgcGFyZW50
SERDID0gZGlzcGxheS0+Z2V0TmF0aXZlRGlzcGxheUlkKCk7Ci0gICAgSFdORCBwYXJlbnRXaW5k
b3cgPSBXaW5kb3dGcm9tREMocGFyZW50SERDKTsKLQotICAgIG1XaW5kb3cgPSBDcmVhdGVXaW5k
b3dFeEEoV1NfRVhfTk9QQVJFTlROT1RJRlksCisgICAgbVdpbmRvdyA9IENyZWF0ZVdpbmRvd0V4
QSgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyICo+KG1XaW5kb3dDbGFzcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QU5HTEUgSW50ZXJtZWRpYXRlIFdpbmRvdyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXU19PVkVSTEFQUEVEV0lORE9XLApAQCAtMjA1LDEwICsyMDAsMTAgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENXX1VTRURFRkFVTFQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDV19VU0VERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1df
VVNFREVGQVVMVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFdpbmRvdywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICBpZiAoIW1X
aW5kb3cpCiAgICAgewogICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJ
WkVELCAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm1lZGlhdGUgT3BlbkdMIHdpbmRvdy4iKTsKQEAg
LTIyMCw5ICsyMTUsMjIgQEAKICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklU
SUFMSVpFRCwgIkZhaWxlZCB0byBnZXQgdGhlIGRldmljZSBjb250ZXh0IG9mIHRoZSBpbnRlcm1l
ZGlhdGUgT3BlbkdMIHdpbmRvdy4iKTsKICAgICB9CiAKLSAgICBtUGl4ZWxGb3JtYXQgPSBDaG9v
c2VQaXhlbEZvcm1hdChtRGV2aWNlQ29udGV4dCwgJnBpeGVsRm9ybWF0RGVzY3JpcHRvcik7Cisg
ICAgaWYgKG1GdW5jdGlvbnNXR0wtPmNob29zZVBpeGVsRm9ybWF0QVJCKQorICAgIHsKKyAgICAg
ICAgc3RkOjp2ZWN0b3I8aW50PiBhdHRyaWJzID0gd2dsOjpHZXREZWZhdWx0UGl4ZWxGb3JtYXRB
dHRyaWJ1dGVzKGZhbHNlKTsKKworICAgICAgICBVSU5UIG1hdGNoaW5nRm9ybWF0cyA9IDA7Cisg
ICAgICAgIG1GdW5jdGlvbnNXR0wtPmNob29zZVBpeGVsRm9ybWF0QVJCKG1EZXZpY2VDb250ZXh0
LCAmYXR0cmlic1swXSwgbnVsbHB0ciwgMXUsICZtUGl4ZWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXRjaGluZ0Zvcm1hdHMpOworICAgIH0K
KwogICAgIGlmIChtUGl4ZWxGb3JtYXQgPT0gMCkKICAgICB7CisgICAgICAgIG1QaXhlbEZvcm1h
dCA9IENob29zZVBpeGVsRm9ybWF0KG1EZXZpY2VDb250ZXh0LCAmcGl4ZWxGb3JtYXREZXNjcmlw
dG9yKTsKKyAgICB9CisKKyAgICBpZiAobVBpeGVsRm9ybWF0ID09IDApCisgICAgewogICAgICAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IGZpbmQg
YSBjb21wYXRpYmxlIHBpeGVsIGZvcm1hdCBmb3IgdGhlIGludGVybWVkaWF0ZSBPcGVuR0wgd2lu
ZG93LiIpOwogICAgIH0KIApAQCAtMjM4LDM3ICsyNDYsNjcgQEAKICAgICAgICAgLy8gVE9ETzog
aGFuZGxlIHJvYnVzdG5lc3MKIAogICAgICAgICBpbnQgbWFzayA9IDA7Ci0gICAgICAgIC8vIFJl
cXVlc3QgY29yZSBwcm9maWxlLCBUT0RPOiBEb24ndCByZXF1ZXN0IGNvcmUgaWYgcmVxdWVzdGVk
IEdMIHZlcnNpb24gaXMgbGVzcyB0aGFuIDMuMAotICAgICAgICBtYXNrIHw9IFdHTF9DT05URVhU
X0NPUkVfUFJPRklMRV9CSVRfQVJCOwogCi0gICAgICAgIHN0ZDo6dmVjdG9yPGludD4gY29udGV4
dENyZWF0aW9uQXR0aWJ1dGVzOworICAgICAgICBpZiAocmVxdWVzdGVkRGlzcGxheVR5cGUgPT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1hc2sgfD0gV0dMX0NPTlRFWFRfRVNfUFJPRklMRV9CSVRfRVhUOworICAgICAgICB9
CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUmVxdWVzdCBjb3JlIHBy
b2ZpbGUKKyAgICAgICAgICAgIG1hc2sgfD0gV0dMX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVF9B
UkI7CisgICAgICAgIH0KIAotICAgICAgICAvLyBUT0RPOiBjcmVhdGUgYSBjb250ZXh0IHZlcnNp
b24gYmFzZWQgb24gdGhlIHJlcXVlc3RlZCB2ZXJzaW9uIGFuZCB2YWxpZGF0ZSB0aGUgdmVyc2lv
biBudW1iZXJzCi0gICAgICAgIGNvbnRleHRDcmVhdGlvbkF0dGlidXRlcy5wdXNoX2JhY2soV0dM
X0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9BUkIpOwotICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRp
YnV0ZXMucHVzaF9iYWNrKDMpOworICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGNvbnRleHRDcmVh
dGlvbkF0dHJpYnV0ZXM7CiAKLSAgICAgICAgY29udGV4dENyZWF0aW9uQXR0aWJ1dGVzLnB1c2hf
YmFjayhXR0xfQ09OVEVYVF9NSU5PUl9WRVJTSU9OX0FSQik7Ci0gICAgICAgIGNvbnRleHRDcmVh
dGlvbkF0dGlidXRlcy5wdXNoX2JhY2soMSk7CisgICAgICAgIC8vIERvbid0IHJlcXVlc3QgYSBz
cGVjaWZpYyB2ZXJzaW9uIHVubGVzcyB0aGUgdXNlciB3YW50cyBvbmUuICBXR0wgd2lsbCByZXR1
cm4gdGhlIGhpZ2hlc3QgdmVyc2lvbgorICAgICAgICAvLyB0aGF0IHRoZSBkcml2ZXIgc3VwcG9y
dHMgaWYgbm8gdmVyc2lvbiBpcyByZXF1ZXN0ZWQuCisgICAgICAgIEVHTGludCByZXF1ZXN0ZWRN
YWpvclZlcnNpb24gPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KAorICAgICAgICAgICAgZGlzcGxheUF0
dHJpYnV0ZXMuZ2V0KEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwg
RUdMX0RPTlRfQ0FSRSkpOworICAgICAgICBFR0xpbnQgcmVxdWVzdGVkTWlub3JWZXJzaW9uID0g
c3RhdGljX2Nhc3Q8RUdMaW50PigKKyAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLmdldChF
R0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUsIEVHTF9ET05UX0NBUkUp
KTsKKyAgICAgICAgaWYgKHJlcXVlc3RlZE1ham9yVmVyc2lvbiAhPSBFR0xfRE9OVF9DQVJFICYm
IHJlcXVlc3RlZE1pbm9yVmVyc2lvbiAhPSBFR0xfRE9OVF9DQVJFKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjayhXR0xfQ09OVEVYVF9N
QUpPUl9WRVJTSU9OX0FSQik7CisgICAgICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVz
LnB1c2hfYmFjayhyZXF1ZXN0ZWRNYWpvclZlcnNpb24pOwogCisgICAgICAgICAgICBjb250ZXh0
Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjayhXR0xfQ09OVEVYVF9NSU5PUl9WRVJTSU9OX0FS
Qik7CisgICAgICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjayhyZXF1
ZXN0ZWRNaW5vclZlcnNpb24pOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gdGhlIEVTIHByb2ZpbGUgd2lsbCBnaXZlIHVzIEVTIHZlcnNpb24gMS4x
IHVubGVzcyBhIGhpZ2hlciB2ZXJzaW9uIGlzIHJlcXVlc3RlZC4KKyAgICAgICAgICAgIC8vIFJl
cXVlc3RpbmcgdmVyc2lvbiAyLjAgd2lsbCBnaXZlIHVzIHRoZSBoaWdoZXN0IGNvbXBhdGlibGUg
dmVyc2lvbiBhdmFpbGFibGUgKDIuMCwKKyAgICAgICAgICAgIC8vIDMuMCwgMy4xLCBldGMpLgor
ICAgICAgICAgICAgaWYgKHJlcXVlc3RlZERpc3BsYXlUeXBlID09IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTEVTX0FOR0xFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHRDcmVhdGlvbkF0dHJpYnV0ZXMucHVzaF9iYWNrKFdHTF9DT05URVhUX01BSk9SX1ZFUlNJ
T05fQVJCKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hf
YmFjaygyKTsKKworICAgICAgICAgICAgICAgIGNvbnRleHRDcmVhdGlvbkF0dHJpYnV0ZXMucHVz
aF9iYWNrKFdHTF9DT05URVhUX01JTk9SX1ZFUlNJT05fQVJCKTsKKyAgICAgICAgICAgICAgICBj
b250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjaygwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCiAgICAgICAgIC8vIFNldCB0aGUgZmxhZyBhdHRyaWJ1dGVzCiAgICAgICAgIGlm
IChmbGFncyAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRp
YnV0ZXMucHVzaF9iYWNrKFdHTF9DT05URVhUX0ZMQUdTX0FSQik7Ci0gICAgICAgICAgICBjb250
ZXh0Q3JlYXRpb25BdHRpYnV0ZXMucHVzaF9iYWNrKGZsYWdzKTsKKyAgICAgICAgICAgIGNvbnRl
eHRDcmVhdGlvbkF0dHJpYnV0ZXMucHVzaF9iYWNrKFdHTF9DT05URVhUX0ZMQUdTX0FSQik7Cisg
ICAgICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjayhmbGFncyk7CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBTZXQgdGhlIG1hc2sgYXR0cmlidXRlCiAgICAgICAgIGlm
IChtYXNrICE9IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHRDcmVhdGlvbkF0dGli
dXRlcy5wdXNoX2JhY2soV0dMX0NPTlRFWFRfUFJPRklMRV9NQVNLX0FSQik7Ci0gICAgICAgICAg
ICBjb250ZXh0Q3JlYXRpb25BdHRpYnV0ZXMucHVzaF9iYWNrKG1hc2spOworICAgICAgICAgICAg
Y29udGV4dENyZWF0aW9uQXR0cmlidXRlcy5wdXNoX2JhY2soV0dMX0NPTlRFWFRfUFJPRklMRV9N
QVNLX0FSQik7CisgICAgICAgICAgICBjb250ZXh0Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFj
ayhtYXNrKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNpZ25hbCB0aGUgZW5kIG9mIHRoZSBh
dHRyaWJ1dGVzCi0gICAgICAgIGNvbnRleHRDcmVhdGlvbkF0dGlidXRlcy5wdXNoX2JhY2soMCk7
Ci0gICAgICAgIGNvbnRleHRDcmVhdGlvbkF0dGlidXRlcy5wdXNoX2JhY2soMCk7CisgICAgICAg
IGNvbnRleHRDcmVhdGlvbkF0dHJpYnV0ZXMucHVzaF9iYWNrKDApOworICAgICAgICBjb250ZXh0
Q3JlYXRpb25BdHRyaWJ1dGVzLnB1c2hfYmFjaygwKTsKIAotICAgICAgICBtV0dMQ29udGV4dCA9
IG1GdW5jdGlvbnNXR0wtPmNyZWF0ZUNvbnRleHRBdHRyaWJzQVJCKG1EZXZpY2VDb250ZXh0LCBO
VUxMLCAmY29udGV4dENyZWF0aW9uQXR0aWJ1dGVzWzBdKTsKKyAgICAgICAgbVdHTENvbnRleHQg
PSBtRnVuY3Rpb25zV0dMLT5jcmVhdGVDb250ZXh0QXR0cmlic0FSQihtRGV2aWNlQ29udGV4dCwg
TlVMTCwgJmNvbnRleHRDcmVhdGlvbkF0dHJpYnV0ZXNbMF0pOwogICAgIH0KIAogICAgIC8vIElm
IHdnbENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCIGlzIHVuYXZhaWxhYmxlIG9yIGZhaWxlZCwgdHJ5
IHRoZSBzdGFuZGFyZCB3Z2xDcmVhdGVDb250ZXh0CkBAIC0yOTEsNiArMzI5LDM4IEBACiAgICAg
bUZ1bmN0aW9uc0dMID0gbmV3IEZ1bmN0aW9uc0dMV2luZG93cyhtT3BlbkdMTW9kdWxlLCBtRnVu
Y3Rpb25zV0dMLT5nZXRQcm9jQWRkcmVzcyk7CiAgICAgbUZ1bmN0aW9uc0dMLT5pbml0aWFsaXpl
KCk7CiAKKyAgICAvLyBJbnRlbCBPcGVuR0wgRVMgZHJpdmVycyBhcmUgbm90IGN1cnJlbnRseSBz
dXBwb3J0ZWQgZHVlIHRvIGJ1Z3MgaW4gdGhlIGRyaXZlciBhbmQgQU5HTEUKKyAgICBWZW5kb3JJ
RCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOworICAgIGlmIChyZXF1ZXN0ZWRE
aXNwbGF5VHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSAmJiB2
ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkludGVsIE9wZW5HTCBFUyBkcml2ZXJzIGFyZSBub3Qg
c3VwcG9ydGVkLiIpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBEWEdJIHN3YXAgY2hhaW5zIGZv
ciB3aW5kb3dzIHRoYXQgY29tZSBmcm9tIG90aGVyIHByb2Nlc3Nlcy4gIFdpbmRvd3MgaXMgdW5h
YmxlIHRvCisgICAgLy8gU2V0UGl4ZWxGb3JtYXQgb24gd2luZG93cyBmcm9tIG90aGVyIHByb2Nl
c3NlcyB3aGVuIGEgc2FuZGJveCBpcyBlbmFibGVkLgorICAgIEhEQyBuYXRpdmVEaXNwbGF5ID0g
ZGlzcGxheS0+Z2V0TmF0aXZlRGlzcGxheUlkKCk7CisgICAgSFdORCBuYXRpdmVXaW5kb3cgPSBX
aW5kb3dGcm9tREMobmF0aXZlRGlzcGxheSk7CisgICAgaWYgKG5hdGl2ZVdpbmRvdyAhPSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgRFdPUkQgY3VycmVudFByb2Nlc3NJZCA9IEdldEN1cnJlbnRQ
cm9jZXNzSWQoKTsKKyAgICAgICAgRFdPUkQgd2luZG93UHJvY2Vzc0lkOworICAgICAgICBHZXRX
aW5kb3dUaHJlYWRQcm9jZXNzSWQobmF0aXZlV2luZG93LCAmd2luZG93UHJvY2Vzc0lkKTsKKyAg
ICAgICAgbVVzZURYR0lTd2FwQ2hhaW5zID0gKGN1cnJlbnRQcm9jZXNzSWQgIT0gd2luZG93UHJv
Y2Vzc0lkKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVVzZURYR0lTd2FwQ2hh
aW5zID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1Vc2VEWEdJU3dhcENoYWlucykKKyAgICB7
CisgICAgICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplRDNERGV2aWNlKCk7CisgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
cnJvcjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiBEaXNwbGF5R0w6OmluaXRpYWxp
emUoZGlzcGxheSk7CiB9CiAKQEAgLTI5OCw2ICszNjgsOCBAQAogewogICAgIERpc3BsYXlHTDo6
dGVybWluYXRlKCk7CiAKKyAgICByZWxlYXNlRDNERGV2aWNlKG1EM0QxMURldmljZUhhbmRsZSk7
CisKICAgICBtRnVuY3Rpb25zV0dMLT5tYWtlQ3VycmVudChtRGV2aWNlQ29udGV4dCwgTlVMTCk7
CiAgICAgbUZ1bmN0aW9uc1dHTC0+ZGVsZXRlQ29udGV4dChtV0dMQ29udGV4dCk7CiAgICAgbVdH
TENvbnRleHQgPSBOVUxMOwpAQCAtMzE2LDY4ICszODgsNjkgQEAKIAogICAgIEZyZWVMaWJyYXJ5
KG1PcGVuR0xNb2R1bGUpOwogICAgIG1PcGVuR0xNb2R1bGUgPSBudWxscHRyOwotfQogCi1lZ2w6
OkVycm9yIERpc3BsYXlXR0w6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZ3VyYXRpb24sIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzLCBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpCi17Ci0gICAgV2luZG93U3VyZmFjZVdH
TCAqc3VyZmFjZSA9IG5ldyBXaW5kb3dTdXJmYWNlV0dMKHdpbmRvdywgbVdpbmRvd0NsYXNzLCBt
UGl4ZWxGb3JtYXQsIG1XR0xDb250ZXh0LCBtRnVuY3Rpb25zV0dMKTsKLSAgICBlZ2w6OkVycm9y
IGVycm9yID0gc3VyZmFjZS0+aW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgU2FmZVJlbGVhc2UobUQzRDExRGV2aWNlKTsKKworICAgIGlmIChtRHhnaU1vZHVsZSkK
ICAgICB7Ci0gICAgICAgIFNhZmVEZWxldGUoc3VyZmFjZSk7Ci0gICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICAgICAgRnJlZUxpYnJhcnkobUR4Z2lNb2R1bGUpOworICAgICAgICBtRHhnaU1vZHVs
ZSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlOwotICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKKyAgICBpZiAobUQzZDExTW9kdWxlKQorICAg
IHsKKyAgICAgICAgRnJlZUxpYnJhcnkobUQzZDExTW9kdWxlKTsKKyAgICAgICAgbUQzZDExTW9k
dWxlID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBBU1NFUlQobVJlZ2lzdGVyZWREM0REZXZpY2Vz
LmVtcHR5KCkpOwogfQogCi1lZ2w6OkVycm9yIERpc3BsYXlXR0w6OmNyZWF0ZVBidWZmZXJTdXJm
YWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLCBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3VyZmFjZUltcGwgKipvdXRTdXJmYWNlKQorU3VyZmFjZUltcGwgKkRpc3BsYXlXR0w6OmNy
ZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIEVHTGludCB3aWR0aCA9
IGF0dHJpYnMuZ2V0KEVHTF9XSURUSCwgMCk7Ci0gICAgRUdMaW50IGhlaWdodCA9IGF0dHJpYnMu
Z2V0KEVHTF9IRUlHSFQsIDApOwotICAgIGJvb2wgbGFyZ2VzdCA9IChhdHRyaWJzLmdldChFR0xf
TEFSR0VTVF9QQlVGRkVSLCBFR0xfRkFMU0UpID09IEVHTF9UUlVFKTsKLSAgICBFR0xlbnVtIHRl
eHR1cmVGb3JtYXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9OT19URVhU
VVJFKTsKLSAgICBFR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBhdHRyaWJzLmdldChFR0xfVEVYVFVS
RV9UQVJHRVQsIEVHTF9OT19URVhUVVJFKTsKLQotICAgIFBidWZmZXJTdXJmYWNlV0dMICpzdXJm
YWNlID0gbmV3IFBidWZmZXJTdXJmYWNlV0dMKHdpZHRoLCBoZWlnaHQsIHRleHR1cmVGb3JtYXQs
IHRleHR1cmVUYXJnZXQsIGxhcmdlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVBpeGVsRm9ybWF0LCBtRGV2aWNlQ29udGV4dCwgbVdH
TENvbnRleHQsIG1GdW5jdGlvbnNXR0wpOwotICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBzdXJmYWNl
LT5pbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICBFR0xpbnQgb3Jp
ZW50YXRpb24gPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9TVVJGQUNFX09S
SUVOVEFUSU9OX0FOR0xFLCAwKSk7CisgICAgaWYgKG1Vc2VEWEdJU3dhcENoYWlucykKICAgICB7
Ci0gICAgICAgIFNhZmVEZWxldGUoc3VyZmFjZSk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKKyAg
ICAgICAgcmV0dXJuIG5ldyBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTCh0aGlzLT5nZXRS
ZW5kZXJlcigpLCB3aW5kb3csIG1EM0QxMURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtRDNEMTFEZXZpY2VIYW5kbGUsIG1XR0xDb250ZXh0
LCBtRGV2aWNlQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtRnVuY3Rpb25zR0wsIG1GdW5jdGlvbnNXR0wsIG9yaWVudGF0aW9uKTsKICAg
ICB9Ci0KLSAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2U7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX1NVQ0NFU1MpOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2luZG93
U3VyZmFjZVdHTCh0aGlzLT5nZXRSZW5kZXJlcigpLCB3aW5kb3csIG1QaXhlbEZvcm1hdCwgbVdH
TENvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRnVuY3Rpb25z
V0dMLCBvcmllbnRhdGlvbik7CisgICAgfQogfQogCi1lZ2w6OkVycm9yIERpc3BsYXlXR0w6OmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0
aW9uLCBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzLCBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpCitTdXJmYWNlSW1wbCAqRGlzcGxheVdH
TDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9CQURfRElTUExBWSk7CisgICAgRUdMaW50IHdpZHRoICAgICAg
ICAgID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfV0lEVEgsIDApKTsKKyAg
ICBFR0xpbnQgaGVpZ2h0ICAgICAgICAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0
KEVHTF9IRUlHSFQsIDApKTsKKyAgICBib29sIGxhcmdlc3QgPSAoYXR0cmlicy5nZXQoRUdMX0xB
UkdFU1RfUEJVRkZFUiwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7CisgICAgRUdMZW51bSB0ZXh0
dXJlRm9ybWF0ID0gc3RhdGljX2Nhc3Q8RUdMZW51bT4oYXR0cmlicy5nZXQoRUdMX1RFWFRVUkVf
Rk9STUFULCBFR0xfTk9fVEVYVFVSRSkpOworICAgIEVHTGVudW0gdGV4dHVyZVRhcmdldCA9IHN0
YXRpY19jYXN0PEVHTGVudW0+KGF0dHJpYnMuZ2V0KEVHTF9URVhUVVJFX1RBUkdFVCwgRUdMX05P
X1RFWFRVUkUpKTsKKworICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VXR0wodGhpcy0+Z2V0
UmVuZGVyZXIoKSwgd2lkdGgsIGhlaWdodCwgdGV4dHVyZUZvcm1hdCwgdGV4dHVyZVRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlc3QsIG1QaXhlbEZvcm1hdCwg
bURldmljZUNvbnRleHQsIG1XR0xDb250ZXh0LCBtRnVuY3Rpb25zV0dMKTsKIH0KIAotZWdsOjpF
cnJvciBEaXNwbGF5V0dMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLCBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicywgU3VyZmFjZUltcGwgKipvdXRTdXJmYWNlKQorU3VyZmFjZUltcGwgKkRpc3BsYXlX
R0w6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX0JBRF9ESVNQTEFZKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotc3RhdGlj
IGludCBRdWVyeVdHTEZvcm1hdEF0dHJpYihIREMgZGMsIGludCBmb3JtYXQsIGludCBhdHRyaWJO
YW1lLCBjb25zdCBGdW5jdGlvbnNXR0wgKmZ1bmN0aW9ucykKK1N1cmZhY2VJbXBsICpEaXNwbGF5
V0dMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4
bWFwVHlwZSBuYXRpdmVQaXhtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBpbnQg
cmVzdWx0ID0gMDsKLSAgICBpZiAoZnVuY3Rpb25zLT5nZXRQaXhlbEZvcm1hdEF0dHJpYml2QVJC
ID09IG51bGxwdHIgfHwKLSAgICAgICAgIWZ1bmN0aW9ucy0+Z2V0UGl4ZWxGb3JtYXRBdHRyaWJp
dkFSQihkYywgZm9ybWF0LCAwLCAxLCAmYXR0cmliTmFtZSwgJnJlc3VsdCkpCi0gICAgewotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGVnbDo6RXJyb3IgRGlzcGxheVdHTDo6
Z2V0RGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpCkBAIC0zOTksOSArNDcyLDIxIEBACiAgICAg
ICAgIG1heFN3YXBJbnRlcnZhbCA9IDg7CiAgICAgfQogCisgICAgY29uc3QgZ2w6OlZlcnNpb24g
Jm1heFZlcnNpb24gPSBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKTsKKyAgICBBU1NFUlQobWF4
VmVyc2lvbiA+PSBnbDo6VmVyc2lvbigyLCAwKSk7CisgICAgYm9vbCBzdXBwb3J0c0VTMyA9IG1h
eFZlcnNpb24gPj0gZ2w6OlZlcnNpb24oMywgMCk7CisKICAgICBQSVhFTEZPUk1BVERFU0NSSVBU
T1IgcGl4ZWxGb3JtYXREZXNjcmlwdG9yOwogICAgIERlc2NyaWJlUGl4ZWxGb3JtYXQobURldmlj
ZUNvbnRleHQsIG1QaXhlbEZvcm1hdCwgc2l6ZW9mKHBpeGVsRm9ybWF0RGVzY3JpcHRvciksICZw
aXhlbEZvcm1hdERlc2NyaXB0b3IpOwogCisgICAgYXV0byBnZXRBdHRyaWIgPSBbdGhpc10oaW50
IGF0dHJpYikKKyAgICB7CisgICAgICAgIHJldHVybiB3Z2w6OlF1ZXJ5V0dMRm9ybWF0QXR0cmli
KG1EZXZpY2VDb250ZXh0LCBtUGl4ZWxGb3JtYXQsIGF0dHJpYiwgbUZ1bmN0aW9uc1dHTCk7Cisg
ICAgfTsKKworICAgIGNvbnN0IEVHTGludCBvcHRpbWFsU3VyZmFjZU9yaWVudGF0aW9uID0KKyAg
ICAgICAgbVVzZURYR0lTd2FwQ2hhaW5zID8gRUdMX1NVUkZBQ0VfT1JJRU5UQVRJT05fSU5WRVJU
X1lfQU5HTEUgOiAwOworCiAgICAgZWdsOjpDb25maWcgY29uZmlnOwogICAgIGNvbmZpZy5yZW5k
ZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0JBODsgLy8gVE9ETzogdXNlIHRoZSBiaXQgY291bnRzIHRv
IGRldGVybWluZSB0aGUgZm9ybWF0CiAgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCA9IEdM
X0RFUFRIMjRfU1RFTkNJTDg7IC8vIFRPRE86IHVzZSB0aGUgYml0IGNvdW50cyB0byBkZXRlcm1p
bmUgdGhlIGZvcm1hdApAQCAtNDEyLDMwICs0OTcsMzMgQEAKICAgICBjb25maWcubHVtaW5hbmNl
U2l6ZSA9IDA7CiAgICAgY29uZmlnLmFscGhhU2l6ZSA9IHBpeGVsRm9ybWF0RGVzY3JpcHRvci5j
QWxwaGFCaXRzOwogICAgIGNvbmZpZy5hbHBoYU1hc2tTaXplID0gMDsKLSAgICBjb25maWcuYmlu
ZFRvVGV4dHVyZVJHQiA9IChRdWVyeVdHTEZvcm1hdEF0dHJpYihtRGV2aWNlQ29udGV4dCwgbVBp
eGVsRm9ybWF0LCBXR0xfQklORF9UT19URVhUVVJFX1JHQl9BUkIsIG1GdW5jdGlvbnNXR0wpID09
IFRSVUUpOwotICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCQSA9IChRdWVyeVdHTEZvcm1hdEF0
dHJpYihtRGV2aWNlQ29udGV4dCwgbVBpeGVsRm9ybWF0LCBXR0xfQklORF9UT19URVhUVVJFX1JH
QkFfQVJCLCBtRnVuY3Rpb25zV0dMKSA9PSBUUlVFKTsKKyAgICBjb25maWcuYmluZFRvVGV4dHVy
ZVJHQiAgID0gKGdldEF0dHJpYihXR0xfQklORF9UT19URVhUVVJFX1JHQl9BUkIpID09IFRSVUUp
OworICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCQSAgPSAoZ2V0QXR0cmliKFdHTF9CSU5EX1RP
X1RFWFRVUkVfUkdCQV9BUkIpID09IFRSVUUpOwogICAgIGNvbmZpZy5jb2xvckJ1ZmZlclR5cGUg
PSBFR0xfUkdCX0JVRkZFUjsKICAgICBjb25maWcuY29uZmlnQ2F2ZWF0ID0gRUdMX05PTkU7Ci0g
ICAgY29uZmlnLmNvbmZpZ0lEID0gbVBpeGVsRm9ybWF0OwotICAgIGNvbmZpZy5jb25mb3JtYW50
ID0gRUdMX09QRU5HTF9FUzJfQklUIHwgRUdMX09QRU5HTF9FUzNfQklUX0tIUjsgLy8gVE9ETzog
ZGV0ZXJtaW5lIHRoZSBHTCB2ZXJzaW9uIGFuZCB3aGF0IEVTIHZlcnNpb25zIGl0IHN1cHBvcnRz
CisgICAgY29uZmlnLmNvbmZvcm1hbnQgPSBFR0xfT1BFTkdMX0VTMl9CSVQgfCAoc3VwcG9ydHNF
UzMgPyBFR0xfT1BFTkdMX0VTM19CSVRfS0hSIDogMCk7CiAgICAgY29uZmlnLmRlcHRoU2l6ZSA9
IHBpeGVsRm9ybWF0RGVzY3JpcHRvci5jRGVwdGhCaXRzOwogICAgIGNvbmZpZy5sZXZlbCA9IDA7
CiAgICAgY29uZmlnLm1hdGNoTmF0aXZlUGl4bWFwID0gRUdMX05PTkU7Ci0gICAgY29uZmlnLm1h
eFBCdWZmZXJXaWR0aCA9IFF1ZXJ5V0dMRm9ybWF0QXR0cmliKG1EZXZpY2VDb250ZXh0LCBtUGl4
ZWxGb3JtYXQsIFdHTF9NQVhfUEJVRkZFUl9XSURUSF9BUkIsIG1GdW5jdGlvbnNXR0wpOwotICAg
IGNvbmZpZy5tYXhQQnVmZmVySGVpZ2h0ID0gUXVlcnlXR0xGb3JtYXRBdHRyaWIobURldmljZUNv
bnRleHQsIG1QaXhlbEZvcm1hdCwgV0dMX01BWF9QQlVGRkVSX0hFSUdIVF9BUkIsIG1GdW5jdGlv
bnNXR0wpOwotICAgIGNvbmZpZy5tYXhQQnVmZmVyUGl4ZWxzID0gUXVlcnlXR0xGb3JtYXRBdHRy
aWIobURldmljZUNvbnRleHQsIG1QaXhlbEZvcm1hdCwgV0dMX01BWF9QQlVGRkVSX1BJWEVMU19B
UkIsIG1GdW5jdGlvbnNXR0wpOworICAgIGNvbmZpZy5tYXhQQnVmZmVyV2lkdGggICAgPSBnZXRB
dHRyaWIoV0dMX01BWF9QQlVGRkVSX1dJRFRIX0FSQik7CisgICAgY29uZmlnLm1heFBCdWZmZXJI
ZWlnaHQgICA9IGdldEF0dHJpYihXR0xfTUFYX1BCVUZGRVJfSEVJR0hUX0FSQik7CisgICAgY29u
ZmlnLm1heFBCdWZmZXJQaXhlbHMgICA9IGdldEF0dHJpYihXR0xfTUFYX1BCVUZGRVJfUElYRUxT
X0FSQik7CiAgICAgY29uZmlnLm1heFN3YXBJbnRlcnZhbCA9IG1heFN3YXBJbnRlcnZhbDsKICAg
ICBjb25maWcubWluU3dhcEludGVydmFsID0gbWluU3dhcEludGVydmFsOwogICAgIGNvbmZpZy5u
YXRpdmVSZW5kZXJhYmxlID0gRUdMX1RSVUU7IC8vIERpcmVjdCByZW5kZXJpbmcKICAgICBjb25m
aWcubmF0aXZlVmlzdWFsSUQgPSAwOwogICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlID0gRUdM
X05PTkU7Ci0gICAgY29uZmlnLnJlbmRlcmFibGVUeXBlID0gRUdMX09QRU5HTF9FUzJfQklUIHwg
RUdMX09QRU5HTF9FUzNfQklUX0tIUjsgLy8gVE9ETworICAgIGNvbmZpZy5yZW5kZXJhYmxlVHlw
ZSA9IEVHTF9PUEVOR0xfRVMyX0JJVCB8IChzdXBwb3J0c0VTMyA/IEVHTF9PUEVOR0xfRVMzX0JJ
VF9LSFIgOiAwKTsKICAgICBjb25maWcuc2FtcGxlQnVmZmVycyA9IDA7IC8vIEZJWE1FOiBlbnVt
ZXJhdGUgbXVsdGktc2FtcGxpbmcKICAgICBjb25maWcuc2FtcGxlcyA9IDA7CiAgICAgY29uZmln
LnN0ZW5jaWxTaXplID0gcGl4ZWxGb3JtYXREZXNjcmlwdG9yLmNTdGVuY2lsQml0czsKLSAgICBj
b25maWcuc3VyZmFjZVR5cGUgPSAoKHBpeGVsRm9ybWF0RGVzY3JpcHRvci5kd0ZsYWdzICYgUEZE
X0RSQVdfVE9fV0lORE9XKSA/IEVHTF9XSU5ET1dfQklUIDogMCkgfAotICAgICAgICAgICAgICAg
ICAgICAgICAgICgoUXVlcnlXR0xGb3JtYXRBdHRyaWIobURldmljZUNvbnRleHQsIG1QaXhlbEZv
cm1hdCwgV0dMX0RSQVdfVE9fUEJVRkZFUl9BUkIsIG1GdW5jdGlvbnNXR0wpID09IFRSVUUpID8g
RUdMX1BCVUZGRVJfQklUIDogMCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9TV0FQ
X0JFSEFWSU9SX1BSRVNFUlZFRF9CSVQ7CisgICAgY29uZmlnLnN1cmZhY2VUeXBlID0KKyAgICAg
ICAgKChwaXhlbEZvcm1hdERlc2NyaXB0b3IuZHdGbGFncyAmIFBGRF9EUkFXX1RPX1dJTkRPVykg
PyBFR0xfV0lORE9XX0JJVCA6IDApIHwKKyAgICAgICAgKChnZXRBdHRyaWIoV0dMX0RSQVdfVE9f
UEJVRkZFUl9BUkIpID09IFRSVUUpID8gRUdMX1BCVUZGRVJfQklUIDogMCkgfAorICAgICAgICAo
KGdldEF0dHJpYihXR0xfU1dBUF9NRVRIT0RfQVJCKSA9PSBXR0xfU1dBUF9DT1BZX0FSQikgPyBF
R0xfU1dBUF9CRUhBVklPUl9QUkVTRVJWRURfQklUCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDApOworICAgIGNvbmZpZy5v
cHRpbWFsT3JpZW50YXRpb24gPSBvcHRpbWFsU3VyZmFjZU9yaWVudGF0aW9uOworCiAgICAgY29u
ZmlnLnRyYW5zcGFyZW50VHlwZSA9IEVHTF9OT05FOwogICAgIGNvbmZpZy50cmFuc3BhcmVudFJl
ZFZhbHVlID0gMDsKICAgICBjb25maWcudHJhbnNwYXJlbnRHcmVlblZhbHVlID0gMDsKQEAgLTQ4
MCw5ICs1NjgsNjAgQEAKICAgICByZXR1cm4gbUZ1bmN0aW9uc0dMOwogfQogCitlZ2w6OkVycm9y
IERpc3BsYXlXR0w6OmluaXRpYWxpemVEM0REZXZpY2UoKQoreworICAgIGlmIChtRDNEMTFEZXZp
Y2UgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKKyAgICB9CisKKyAgICBtRHhnaU1vZHVsZSA9IExvYWRMaWJyYXJ5KFRFWFQoImR4Z2ku
ZGxsIikpOworICAgIGlmICghbUR4Z2lNb2R1bGUpCisgICAgeworICAgICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiRmFpbGVkIHRvIGxvYWQgRFhHSSBsaWJyYXJ5
LiIpOworICAgIH0KKworICAgIG1EM2QxMU1vZHVsZSA9IExvYWRMaWJyYXJ5KFRFWFQoImQzZDEx
LmRsbCIpKTsKKyAgICBpZiAoIW1EM2QxMU1vZHVsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJGYWlsZWQgdG8gbG9hZCBkM2QxMSBsaWJy
YXJ5LiIpOworICAgIH0KKworICAgIFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFIGQzZDExQ3JlYXRl
RGV2aWNlID0gbnVsbHB0cjsKKyAgICBkM2QxMUNyZWF0ZURldmljZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOX0QzRDExX0NSRUFURV9ERVZJQ0U+KAorICAgICAgICBHZXRQcm9jQWRkcmVzcyhtRDNk
MTFNb2R1bGUsICJEM0QxMUNyZWF0ZURldmljZSIpKTsKKyAgICBpZiAoZDNkMTFDcmVhdGVEZXZp
Y2UgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1Rf
SU5JVElBTElaRUQsICJDb3VsZCBub3QgcmV0cmlldmUgRDNEMTFDcmVhdGVEZXZpY2UgYWRkcmVz
cy4iKTsKKyAgICB9CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IGQzZDExQ3JlYXRlRGV2aWNlKG51
bGxwdHIsIEQzRF9EUklWRVJfVFlQRV9IQVJEV0FSRSwgbnVsbHB0ciwgMCwgbnVsbHB0ciwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NES19WRVJTSU9O
LCAmbUQzRDExRGV2aWNlLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVE
LCAiQ291bGQgbm90IGNyZWF0ZSBEM0QxMSBkZXZpY2UsIGVycm9yOiAweCVYIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICB9CisKKyAgICBlZ2w6OkVycm9yIGVycm9y
ID0gcmVnaXN0ZXJEM0REZXZpY2UobUQzRDExRGV2aWNlLCAmbUQzRDExRGV2aWNlSGFuZGxlKTsK
KyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOwor
ICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwogdm9pZCBE
aXNwbGF5V0dMOjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0
RXh0ZW5zaW9ucykgY29uc3QKIHsKLSAgICAvL1VOSU1QTEVNRU5URUQoKTsKKyAgICBvdXRFeHRl
bnNpb25zLT5jcmVhdGVDb250ZXh0ID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25zLT5jcmVhdGVD
b250ZXh0Tm9FcnJvciA9IHRydWU7CisKKyAgICAvLyBPbmx5IGVuYWJsZSB0aGUgc3VyZmFjZSBv
cmllbnRhdGlvbiAgYW5kIHBvc3Qgc3ViIGJ1ZmZlciBmb3IgRFhHSSBzd2FwIGNoYWluIHN1cmZh
Y2VzLCB0aGV5CisgICAgLy8gcHJlZmVyIHRvIHN3YXAgd2l0aAorICAgIC8vIGludmVydGVkIFku
CisgICAgb3V0RXh0ZW5zaW9ucy0+cG9zdFN1YkJ1ZmZlciAgICAgID0gbVVzZURYR0lTd2FwQ2hh
aW5zOworICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VPcmllbnRhdGlvbiA9IG1Vc2VEWEdJU3dh
cENoYWluczsKIH0KIAogdm9pZCBEaXNwbGF5V0dMOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpv
dXRDYXBzKSBjb25zdApAQCAtNDkwLDQgKzYyOSw3MSBAQAogICAgIG91dENhcHMtPnRleHR1cmVO
UE9UID0gdHJ1ZTsKIH0KIAorZWdsOjpFcnJvciBEaXNwbGF5V0dMOjp3YWl0Q2xpZW50KCkgY29u
c3QKK3sKKyAgICAvLyBVbmltcGxlbWVudGVkIGFzIHRoaXMgaXMgbm90IG5lZWRlZCBmb3IgV0dM
CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQorCitlZ2w6OkVycm9yIERp
c3BsYXlXR0w6OndhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0Cit7Cisg
ICAgLy8gVW5pbXBsZW1lbnRlZCBhcyB0aGlzIGlzIG5vdCBuZWVkZWQgZm9yIFdHTAorICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEaXNwbGF5V0dM
OjpnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdAoreworICAgICp2
ZXJzaW9uID0gIiI7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitl
Z2w6OkVycm9yIERpc3BsYXlXR0w6OnJlZ2lzdGVyRDNERGV2aWNlKElVbmtub3duICpkZXZpY2Us
IEhBTkRMRSAqb3V0SGFuZGxlKQoreworICAgIEFTU0VSVChkZXZpY2UgIT0gbnVsbHB0cik7Cisg
ICAgQVNTRVJUKG91dEhhbmRsZSAhPSBudWxscHRyKTsKKworICAgIGF1dG8gaXRlciA9IG1SZWdp
c3RlcmVkRDNERGV2aWNlcy5maW5kKGRldmljZSk7CisgICAgaWYgKGl0ZXIgIT0gbVJlZ2lzdGVy
ZWREM0REZXZpY2VzLmVuZCgpKQorICAgIHsKKyAgICAgICAgaXRlci0+c2Vjb25kLnJlZkNvdW50
Kys7CisgICAgICAgICpvdXRIYW5kbGUgPSBpdGVyLT5zZWNvbmQuaGFuZGxlOworICAgICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgfQorCisgICAgSEFORExFIGhhbmRs
ZSA9IG1GdW5jdGlvbnNXR0wtPmR4T3BlbkRldmljZU5WKGRldmljZSk7CisgICAgaWYgKCFoYW5k
bGUpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwg
IkZhaWxlZCB0byBvcGVuIEQzRCBkZXZpY2UuIik7CisgICAgfQorCisgICAgZGV2aWNlLT5BZGRS
ZWYoKTsKKworICAgIEQzRE9iamVjdEhhbmRsZSBuZXdEZXZpY2VJbmZvOworICAgIG5ld0Rldmlj
ZUluZm8uaGFuZGxlICAgICAgICAgID0gaGFuZGxlOworICAgIG5ld0RldmljZUluZm8ucmVmQ291
bnQgICAgICAgID0gMTsKKyAgICBtUmVnaXN0ZXJlZEQzRERldmljZXNbZGV2aWNlXSA9IG5ld0Rl
dmljZUluZm87CisKKyAgICAqb3V0SGFuZGxlID0gaGFuZGxlOworICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKK30KKwordm9pZCBEaXNwbGF5V0dMOjpyZWxlYXNlRDNERGV2aWNl
KEhBTkRMRSBkZXZpY2VIYW5kbGUpCit7CisgICAgZm9yIChhdXRvIGl0ZXIgPSBtUmVnaXN0ZXJl
ZEQzRERldmljZXMuYmVnaW4oKTsgaXRlciAhPSBtUmVnaXN0ZXJlZEQzRERldmljZXMuZW5kKCk7
IGl0ZXIrKykKKyAgICB7CisgICAgICAgIGlmIChpdGVyLT5zZWNvbmQuaGFuZGxlID09IGRldmlj
ZUhhbmRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaXRlci0+c2Vjb25kLnJlZkNvdW50LS07
CisgICAgICAgICAgICBpZiAoaXRlci0+c2Vjb25kLnJlZkNvdW50ID09IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9uc1dHTC0+ZHhDbG9zZURldmljZU5WKGl0ZXIt
PnNlY29uZC5oYW5kbGUpOworICAgICAgICAgICAgICAgIGl0ZXItPmZpcnN0LT5SZWxlYXNlKCk7
CisgICAgICAgICAgICAgICAgbVJlZ2lzdGVyZWREM0REZXZpY2VzLmVyYXNlKGl0ZXIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
fQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L3dnbC9EaXNwbGF5V0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgJKHJldmlzaW9uIDE5OTY4
MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvRGlzcGxheVdHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNCArMjcsMTggQEAKICAgICBl
Z2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBjcmVhdGVXaW5k
b3dTdXJmYWNlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbmRvdywgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZhY2VJbXBsICoqb3V0U3VyZmFjZSkgb3Zl
cnJpZGU7Ci0gICAgZWdsOjpFcnJvciBjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSW1wbCAqKm91dFN1cmZh
Y2UpIG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZm
ZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sIEVHTENsaWVudEJ1ZmZlciBzaGFy
ZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzLCBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2Up
IG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3IgY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlndXJhdGlvbiwgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzLCBTdXJmYWNlSW1wbCAqKm91dFN1cmZhY2UpIG92ZXJyaWRlOworICAgIC8vIFN1
cmZhY2UgY3JlYXRpb24KKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3Zl
cnJpZGU7CisgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CisgICAgU3Vy
ZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBvdmVycmlkZTsKKyAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
b3ZlcnJpZGU7CiAKICAgICBlZ2w6OkNvbmZpZ1NldCBnZW5lcmF0ZUNvbmZpZ3MoKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtNDgsOSArNTIsMjEgQEAKIAogICAgIHN0ZDo6c3RyaW5nIGdldFZlbmRv
clN0cmluZygpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgZWdsOjpFcnJvciB3YWl0Q2xpZW50KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciB3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0
IG92ZXJyaWRlOworCisgICAgZWdsOjpFcnJvciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5n
ICp2ZXJzaW9uKSBjb25zdCBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3IgcmVnaXN0ZXJEM0RE
ZXZpY2UoSVVua25vd24gKmRldmljZSwgSEFORExFICpvdXRIYW5kbGUpOworICAgIHZvaWQgcmVs
ZWFzZUQzRERldmljZShIQU5ETEUgaGFuZGxlKTsKKwogICBwcml2YXRlOgogICAgIGNvbnN0IEZ1
bmN0aW9uc0dMICpnZXRGdW5jdGlvbnNHTCgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgZWdsOjpF
cnJvciBpbml0aWFsaXplRDNERGV2aWNlKCk7CisKICAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9u
cyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMpIGNvbnN0IG92ZXJyaWRl
OwogCkBAIC02NSw2ICs4MSwxOSBAQAogICAgIGludCBtUGl4ZWxGb3JtYXQ7CiAgICAgSEdMUkMg
bVdHTENvbnRleHQ7CiAKKyAgICBib29sIG1Vc2VEWEdJU3dhcENoYWluczsKKyAgICBITU9EVUxF
IG1EeGdpTW9kdWxlOworICAgIEhNT0RVTEUgbUQzZDExTW9kdWxlOworICAgIEhBTkRMRSBtRDNE
MTFEZXZpY2VIYW5kbGU7CisgICAgSUQzRDExRGV2aWNlICptRDNEMTFEZXZpY2U7CisKKyAgICBz
dHJ1Y3QgRDNET2JqZWN0SGFuZGxlCisgICAgeworICAgICAgICBIQU5ETEUgaGFuZGxlOworICAg
ICAgICBzaXplX3QgcmVmQ291bnQ7CisgICAgfTsKKyAgICBzdGQ6Om1hcDxJVW5rbm93biAqLCBE
M0RPYmplY3RIYW5kbGU+IG1SZWdpc3RlcmVkRDNERGV2aWNlczsKKwogICAgIGVnbDo6RGlzcGxh
eSAqbURpc3BsYXk7CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0aW9uc1dHTC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9GdW5jdGlv
bnNXR0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0aW9uc1dHTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgsNiArOCwxMCBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L0Z1bmN0aW9uc1dHTC5oIgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAiY29t
bW9uL3N0cmluZ191dGlscy5oIgorCiBuYW1lc3BhY2UgcngKIHsKIApAQCAtMzAsMTIgKzM0LDE1
IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgR2V0V0dMRXh0ZW5z
aW9uUHJvY0FkZHJlc3MoSE1PRFVMRSBnbE1vZHVsZSwgUEZOV0dMR0VUUFJPQ0FERFJFU1NQUk9D
IGdldFByb2NBZGRyZXNzV0dMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJmV4dGVuc2lvbnMsIGNvbnN0IHN0ZDo6c3RyaW5nICZleHRl
bnNpb25OYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnByb2NOYW1lLCBUICpvdXRQcm9jQWRkcmVzcykKK3N0YXRpYyB2b2lkIEdl
dFdHTEV4dGVuc2lvblByb2NBZGRyZXNzKEhNT0RVTEUgZ2xNb2R1bGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBQRk5XR0xHRVRQUk9DQUREUkVTU1BST0MgZ2V0UHJv
Y0FkZHJlc3NXR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJmV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZXh0ZW5zaW9uTmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZwcm9jTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgKm91
dFByb2NBZGRyZXNzKQogewogICAgIFQgcHJvYyA9IG51bGxwdHI7Ci0gICAgaWYgKGV4dGVuc2lv
bnMuZmluZChleHRlbnNpb25OYW1lKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICBpZiAoc3Rk
OjpmaW5kKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5zaW9ucy5lbmQoKSwgZXh0ZW5zaW9uTmFt
ZSkgIT0gZXh0ZW5zaW9ucy5lbmQoKSkKICAgICB7CiAgICAgICAgIEdldFdHTFByb2NBZGRyZXNz
KGdsTW9kdWxlLCBnZXRQcm9jQWRkcmVzc1dHTCwgcHJvY05hbWUsICZwcm9jKTsKICAgICB9CkBA
IC02NCwxMCArNzEsMTIgQEAKICAgICAgIHJlYWxpemVMYXllclBhbGV0dGUobnVsbHB0ciksCiAg
ICAgICBzd2FwTGF5ZXJCdWZmZXJzKG51bGxwdHIpLAogICAgICAgc3dhcE11bHRpcGxlQnVmZmVy
cyhudWxscHRyKSwKKyAgICAgIGdldEV4dGVuc2lvblN0cmluZ0VYVChudWxscHRyKSwKKyAgICAg
IGdldEV4dGVuc2lvblN0cmluZ0FSQihudWxscHRyKSwKICAgICAgIGNyZWF0ZUNvbnRleHRBdHRy
aWJzQVJCKG51bGxwdHIpLAogICAgICAgZ2V0UGl4ZWxGb3JtYXRBdHRyaWJpdkFSQihudWxscHRy
KSwKLSAgICAgIGdldEV4dGVuc2lvblN0cmluZ0VYVChudWxscHRyKSwKLSAgICAgIGdldEV4dGVu
c2lvblN0cmluZ0FSQihudWxscHRyKSwKKyAgICAgIGdldFBpeGVsRm9ybWF0QXR0cmliZnZBUkIo
bnVsbHB0ciksCisgICAgICBjaG9vc2VQaXhlbEZvcm1hdEFSQihudWxscHRyKSwKICAgICAgIHN3
YXBJbnRlcnZhbEVYVChudWxscHRyKSwKICAgICAgIGNyZWF0ZVBidWZmZXJBUkIobnVsbHB0ciks
CiAgICAgICBnZXRQYnVmZmVyRENBUkIobnVsbHB0ciksCkBAIC03Niw3ICs4NSwxNSBAQAogICAg
ICAgcXVlcnlQYnVmZmVyQVJCKG51bGxwdHIpLAogICAgICAgYmluZFRleEltYWdlQVJCKG51bGxw
dHIpLAogICAgICAgcmVsZWFzZVRleEltYWdlQVJCKG51bGxwdHIpLAotICAgICAgc2V0UGJ1ZmZl
ckF0dHJpYkFSQihudWxscHRyKQorICAgICAgc2V0UGJ1ZmZlckF0dHJpYkFSQihudWxscHRyKSwK
KyAgICAgIGR4U2V0UmVzb3VyY2VTaGFyZUhhbmRsZU5WKG51bGxwdHIpLAorICAgICAgZHhPcGVu
RGV2aWNlTlYobnVsbHB0ciksCisgICAgICBkeENsb3NlRGV2aWNlTlYobnVsbHB0ciksCisgICAg
ICBkeFJlZ2lzdGVyT2JqZWN0TlYobnVsbHB0ciksCisgICAgICBkeFVucmVnaXN0ZXJPYmplY3RO
VihudWxscHRyKSwKKyAgICAgIGR4T2JqZWN0QWNjZXNzTlYobnVsbHB0ciksCisgICAgICBkeExv
Y2tPYmplY3RzTlYobnVsbHB0ciksCisgICAgICBkeFVubG9ja09iamVjdHNOVihudWxscHRyKQog
ewogfQogCkBAIC0xMTAsMTkgKzEyNywyOCBAQAogICAgIEdldFdHTFByb2NBZGRyZXNzKGdsTW9k
dWxlLCBnZXRQcm9jQWRkcmVzcywgIndnbEdldEV4dGVuc2lvbnNTdHJpbmdFWFQiLCAmZ2V0RXh0
ZW5zaW9uU3RyaW5nRVhUKTsKICAgICBHZXRXR0xQcm9jQWRkcmVzcyhnbE1vZHVsZSwgZ2V0UHJv
Y0FkZHJlc3MsICJ3Z2xHZXRFeHRlbnNpb25zU3RyaW5nQVJCIiwgJmdldEV4dGVuc2lvblN0cmlu
Z0FSQik7CiAKLSAgICBzdGQ6OnN0cmluZyBleHRlbnNpb25zID0gIiI7CisgICAgc3RkOjpzdHJp
bmcgZXh0ZW5zaW9uU3RyaW5nID0gIiI7CiAgICAgaWYgKGdldEV4dGVuc2lvblN0cmluZ0VYVCkK
ICAgICB7Ci0gICAgICAgIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25TdHJpbmdFWFQoKTsKKyAg
ICAgICAgZXh0ZW5zaW9uU3RyaW5nID0gZ2V0RXh0ZW5zaW9uU3RyaW5nRVhUKCk7CiAgICAgfQog
ICAgIGVsc2UgaWYgKGdldEV4dGVuc2lvblN0cmluZ0FSQiAmJiBjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvblN0cmluZ0FSQihjb250ZXh0KTsKKyAgICAg
ICAgZXh0ZW5zaW9uU3RyaW5nID0gZ2V0RXh0ZW5zaW9uU3RyaW5nQVJCKGNvbnRleHQpOwogICAg
IH0KKyAgICBhbmdsZTo6U3BsaXRTdHJpbmdBbG9uZ1doaXRlc3BhY2UoZXh0ZW5zaW9uU3RyaW5n
LCAmZXh0ZW5zaW9ucyk7CiAKICAgICAvLyBMb2FkIHRoZSB3Z2wgZXh0ZW5zaW9uIGZ1bmN0aW9u
cyBieSBjaGVja2luZyBpZiB0aGUgY29udGV4dCBzdXBwb3J0cyB0aGUgZXh0ZW5zaW9uIGZpcnN0
CisKKyAgICAvLyBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0CiAgICAgR2V0V0dMRXh0ZW5zaW9uUHJv
Y0FkZHJlc3MoZ2xNb2R1bGUsIGdldFByb2NBZGRyZXNzLCBleHRlbnNpb25zLCAiV0dMX0FSQl9j
cmVhdGVfY29udGV4dCIsICJ3Z2xDcmVhdGVDb250ZXh0QXR0cmlic0FSQiIsICZjcmVhdGVDb250
ZXh0QXR0cmlic0FSQik7CisKKyAgICAvLyBXR0xfQVJCX3BpeGVsX2Zvcm1hdAogICAgIEdldFdH
TEV4dGVuc2lvblByb2NBZGRyZXNzKGdsTW9kdWxlLCBnZXRQcm9jQWRkcmVzcywgZXh0ZW5zaW9u
cywgIldHTF9BUkJfcGl4ZWxfZm9ybWF0IiwgIndnbEdldFBpeGVsRm9ybWF0QXR0cmliaXZBUkIi
LCAmZ2V0UGl4ZWxGb3JtYXRBdHRyaWJpdkFSQik7CisgICAgR2V0V0dMRXh0ZW5zaW9uUHJvY0Fk
ZHJlc3MoZ2xNb2R1bGUsIGdldFByb2NBZGRyZXNzLCBleHRlbnNpb25zLCAiV0dMX0FSQl9waXhl
bF9mb3JtYXQiLCAid2dsR2V0UGl4ZWxGb3JtYXRBdHRyaWJmdkFSQiIsICZnZXRQaXhlbEZvcm1h
dEF0dHJpYmZ2QVJCKTsKKyAgICBHZXRXR0xFeHRlbnNpb25Qcm9jQWRkcmVzcyhnbE1vZHVsZSwg
Z2V0UHJvY0FkZHJlc3MsIGV4dGVuc2lvbnMsICJXR0xfQVJCX3BpeGVsX2Zvcm1hdCIsICJ3Z2xD
aG9vc2VQaXhlbEZvcm1hdEFSQiIsICZjaG9vc2VQaXhlbEZvcm1hdEFSQik7CisKKyAgICAvLyBX
R0xfRVhUX3N3YXBfY29udHJvbAogICAgIEdldFdHTEV4dGVuc2lvblByb2NBZGRyZXNzKGdsTW9k
dWxlLCBnZXRQcm9jQWRkcmVzcywgZXh0ZW5zaW9ucywgIldHTF9FWFRfc3dhcF9jb250cm9sIiwg
IndnbFN3YXBJbnRlcnZhbEVYVCIsICZzd2FwSW50ZXJ2YWxFWFQpOwogCiAgICAgLy8gV0dMX0FS
Ql9wYnVmZmVyCkBAIC0xMzYsNiArMTYyLDIwIEBACiAgICAgR2V0V0dMRXh0ZW5zaW9uUHJvY0Fk
ZHJlc3MoZ2xNb2R1bGUsIGdldFByb2NBZGRyZXNzLCBleHRlbnNpb25zLCAiV0dMX0FSQl9yZW5k
ZXJfdGV4dHVyZSIsICJ3Z2xCaW5kVGV4SW1hZ2VBUkIiLCAmYmluZFRleEltYWdlQVJCKTsKICAg
ICBHZXRXR0xFeHRlbnNpb25Qcm9jQWRkcmVzcyhnbE1vZHVsZSwgZ2V0UHJvY0FkZHJlc3MsIGV4
dGVuc2lvbnMsICJXR0xfQVJCX3JlbmRlcl90ZXh0dXJlIiwgIndnbFJlbGVhc2VUZXhJbWFnZUFS
QiIsICZyZWxlYXNlVGV4SW1hZ2VBUkIpOwogICAgIEdldFdHTEV4dGVuc2lvblByb2NBZGRyZXNz
KGdsTW9kdWxlLCBnZXRQcm9jQWRkcmVzcywgZXh0ZW5zaW9ucywgIldHTF9BUkJfcmVuZGVyX3Rl
eHR1cmUiLCAid2dsU2V0UGJ1ZmZlckF0dHJpYkFSQiIsICZzZXRQYnVmZmVyQXR0cmliQVJCKTsK
KworICAgIC8vIFdHTF9OVl9EWF9pbnRlcm9wCisgICAgR2V0V0dMRXh0ZW5zaW9uUHJvY0FkZHJl
c3MoZ2xNb2R1bGUsIGdldFByb2NBZGRyZXNzLCBleHRlbnNpb25zLCAiV0dMX05WX0RYX2ludGVy
b3AiLCAid2dsRFhTZXRSZXNvdXJjZVNoYXJlSGFuZGxlTlYiLCAmZHhTZXRSZXNvdXJjZVNoYXJl
SGFuZGxlTlYpOworICAgIEdldFdHTEV4dGVuc2lvblByb2NBZGRyZXNzKGdsTW9kdWxlLCBnZXRQ
cm9jQWRkcmVzcywgZXh0ZW5zaW9ucywgIldHTF9OVl9EWF9pbnRlcm9wIiwgIndnbERYT3BlbkRl
dmljZU5WIiwgJmR4T3BlbkRldmljZU5WKTsKKyAgICBHZXRXR0xFeHRlbnNpb25Qcm9jQWRkcmVz
cyhnbE1vZHVsZSwgZ2V0UHJvY0FkZHJlc3MsIGV4dGVuc2lvbnMsICJXR0xfTlZfRFhfaW50ZXJv
cCIsICJ3Z2xEWENsb3NlRGV2aWNlTlYiLCAmZHhDbG9zZURldmljZU5WKTsKKyAgICBHZXRXR0xF
eHRlbnNpb25Qcm9jQWRkcmVzcyhnbE1vZHVsZSwgZ2V0UHJvY0FkZHJlc3MsIGV4dGVuc2lvbnMs
ICJXR0xfTlZfRFhfaW50ZXJvcCIsICJ3Z2xEWFJlZ2lzdGVyT2JqZWN0TlYiLCAmZHhSZWdpc3Rl
ck9iamVjdE5WKTsKKyAgICBHZXRXR0xFeHRlbnNpb25Qcm9jQWRkcmVzcyhnbE1vZHVsZSwgZ2V0
UHJvY0FkZHJlc3MsIGV4dGVuc2lvbnMsICJXR0xfTlZfRFhfaW50ZXJvcCIsICJ3Z2xEWFVucmVn
aXN0ZXJPYmplY3ROViIsICZkeFVucmVnaXN0ZXJPYmplY3ROVik7CisgICAgR2V0V0dMRXh0ZW5z
aW9uUHJvY0FkZHJlc3MoZ2xNb2R1bGUsIGdldFByb2NBZGRyZXNzLCBleHRlbnNpb25zLCAiV0dM
X05WX0RYX2ludGVyb3AiLCAid2dsRFhPYmplY3RBY2Nlc3NOViIsICZkeE9iamVjdEFjY2Vzc05W
KTsKKyAgICBHZXRXR0xFeHRlbnNpb25Qcm9jQWRkcmVzcyhnbE1vZHVsZSwgZ2V0UHJvY0FkZHJl
c3MsIGV4dGVuc2lvbnMsICJXR0xfTlZfRFhfaW50ZXJvcCIsICJ3Z2xEWExvY2tPYmplY3RzTlYi
LCAmZHhMb2NrT2JqZWN0c05WKTsKKyAgICBHZXRXR0xFeHRlbnNpb25Qcm9jQWRkcmVzcyhnbE1v
ZHVsZSwgZ2V0UHJvY0FkZHJlc3MsIGV4dGVuc2lvbnMsICJXR0xfTlZfRFhfaW50ZXJvcCIsICJ3
Z2xEWFVubG9ja09iamVjdHNOViIsICZkeFVubG9ja09iamVjdHNOVik7CiB9CiAKK2Jvb2wgRnVu
Y3Rpb25zV0dMOjpoYXNFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcgJmV4dCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc3RkOjpmaW5kKGV4dGVuc2lvbnMuYmVnaW4oKSwgZXh0ZW5zaW9ucy5lbmQo
KSwgZXh0KSAhPSBleHRlbnNpb25zLmVuZCgpOwogfQorfQpJbmRleDogU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvd2dsL0Z1bmN0aW9uc1dHTC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Z1bmN0aW9uc1dHTC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02LDYgKzYsOSBAQAogCiAvLyBGdW5jdGlvbnNXR0wuaDogRGVmaW5l
cyB0aGUgRnVudGlvbnNXR0wgY2xhc3MgdG8gY29udGFpbiBsb2FkZWQgV0dMIGZ1bmN0aW9ucwog
CisjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dHTF9GVU5DVElPTlNfV0dMCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX0dMX1dHTF9GVU5DVElPTlNfV0dMCisKICNpbmNsdWRlICJjb21t
b24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9mdW5j
dGlvbnN3Z2xfdHlwZWRlZnMuaCIKIApAQCAtMjAsNiArMjMsMTAgQEAKICAgICAvLyBMb2FkcyBh
bGwgYXZhaWxhYmxlIHdnbCBmdW5jdGlvbnMsIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMK
ICAgICB2b2lkIGluaXRpYWxpemUoSE1PRFVMRSBnbE1vZHVsZSwgSERDIGNvbnRleHQpOwogCisg
ICAgLy8gRXh0ZW5zaW9uIGluZm9ybWF0aW9uCisgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IGV4dGVuc2lvbnM7CisgICAgYm9vbCBoYXNFeHRlbnNpb24oY29uc3Qgc3RkOjpzdHJpbmcgJmV4
dCkgY29uc3Q7CisKICAgICAvLyBCYXNlIFdHTCBmdW5jdGlvbnMKICAgICBQRk5XR0xDT1BZQ09O
VEVYVFBST0MgY29weUNvbnRleHQ7CiAgICAgUEZOV0dMQ1JFQVRFQ09OVEVYVFBST0MgY3JlYXRl
Q29udGV4dDsKQEAgLTQyLDExICs0OSwyMSBAQAogICAgIFBGTldHTFNXQVBMQVlFUkJVRkZFUlNQ
Uk9DIHN3YXBMYXllckJ1ZmZlcnM7CiAgICAgUEZOV0dMU1dBUE1VTFRJUExFQlVGRkVSU1BST0Mg
c3dhcE11bHRpcGxlQnVmZmVyczsKIAotICAgIC8vIEV4dGVuc2lvbiBmdW5jdGlvbnMsIG1heSBi
ZSBOVUxMCisgICAgLy8gV0dMX0VYVF9leHRlbnNpb25zX3N0cmluZworICAgIFBGTldHTEdFVEVY
VEVOU0lPTlNTVFJJTkdFWFRQUk9DIGdldEV4dGVuc2lvblN0cmluZ0VYVDsKKworICAgIC8vIFdH
TF9BUkJfZXh0ZW5zaW9uc19zdHJpbmcKKyAgICBQRk5XR0xHRVRFWFRFTlNJT05TU1RSSU5HQVJC
UFJPQyBnZXRFeHRlbnNpb25TdHJpbmdBUkI7CisKKyAgICAvLyBXR0xfQVJCX2NyZWF0ZV9jb250
ZXh0CiAgICAgUEZOV0dMQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DIGNyZWF0ZUNvbnRleHRB
dHRyaWJzQVJCOworCisgICAgLy8gV0dMX0FSQl9waXhlbF9mb3JtYXQKICAgICBQRk5XR0xHRVRQ
SVhFTEZPUk1BVEFUVFJJQklWQVJCUFJPQyBnZXRQaXhlbEZvcm1hdEF0dHJpYml2QVJCOwotICAg
IFBGTldHTEdFVEVYVEVOU0lPTlNTVFJJTkdFWFRQUk9DIGdldEV4dGVuc2lvblN0cmluZ0VYVDsK
LSAgICBQRk5XR0xHRVRFWFRFTlNJT05TU1RSSU5HQVJCUFJPQyBnZXRFeHRlbnNpb25TdHJpbmdB
UkI7CisgICAgUEZOV0dMR0VUUElYRUxGT1JNQVRBVFRSSUJGVkFSQlBST0MgZ2V0UGl4ZWxGb3Jt
YXRBdHRyaWJmdkFSQjsKKyAgICBQRk5XR0xDSE9PU0VQSVhFTEZPUk1BVEFSQlBST0MgY2hvb3Nl
UGl4ZWxGb3JtYXRBUkI7CisKKyAgICAvLyBXR0xfRVhUX3N3YXBfY29udHJvbAogICAgIFBGTldH
TFNXQVBJTlRFUlZBTEVYVFBST0Mgc3dhcEludGVydmFsRVhUOwogCiAgICAgLy8gV0dMX0FSQl9w
YnVmZmVyCkBAIC02MCw2ICs3NywxOCBAQAogICAgIFBGTldHTEJJTkRURVhJTUFHRUFSQlBST0Mg
YmluZFRleEltYWdlQVJCOwogICAgIFBGTldHTFJFTEVBU0VURVhJTUFHRUFSQlBST0MgcmVsZWFz
ZVRleEltYWdlQVJCOwogICAgIFBGTldHTFNFVFBCVUZGRVJBVFRSSUJBUkJQUk9DIHNldFBidWZm
ZXJBdHRyaWJBUkI7CisKKyAgICAvLyBXR0xfTlZfRFhfaW50ZXJvcAorICAgIFBGTldHTERYU0VU
UkVTT1VSQ0VTSEFSRUhBTkRMRU5WUFJPQyBkeFNldFJlc291cmNlU2hhcmVIYW5kbGVOVjsKKyAg
ICBQRk5XR0xEWE9QRU5ERVZJQ0VOVlBST0MgZHhPcGVuRGV2aWNlTlY7CisgICAgUEZOV0dMRFhD
TE9TRURFVklDRU5WUFJPQyBkeENsb3NlRGV2aWNlTlY7CisgICAgUEZOV0dMRFhSRUdJU1RFUk9C
SkVDVE5WUFJPQyBkeFJlZ2lzdGVyT2JqZWN0TlY7CisgICAgUEZOV0dMRFhVTlJFR0lTVEVST0JK
RUNUTlZQUk9DIGR4VW5yZWdpc3Rlck9iamVjdE5WOworICAgIFBGTldHTERYT0JKRUNUQUNDRVNT
TlZQUk9DIGR4T2JqZWN0QWNjZXNzTlY7CisgICAgUEZOV0dMRFhMT0NLT0JKRUNUU05WUFJPQyBk
eExvY2tPYmplY3RzTlY7CisgICAgUEZOV0dMRFhVTkxPQ0tPQkpFQ1RTTlZQUk9DIGR4VW5sb2Nr
T2JqZWN0c05WOwogfTsKIAogfQorCisjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfV0dM
X0ZVTkNUSU9OU19XR0wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZl
clN1cmZhY2VXR0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOSwyNCArOSwzMiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvd2dsX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewog
Ci1QYnVmZmVyU3VyZmFjZVdHTDo6UGJ1ZmZlclN1cmZhY2VXR0woRUdMaW50IHdpZHRoLCBFR0xp
bnQgaGVpZ2h0LCBFR0xlbnVtIHRleHR1cmVGb3JtYXQsIEVHTGVudW0gdGV4dHVyZVRhcmdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxhcmdlc3QsIGludCBw
aXhlbEZvcm1hdCwgSERDIGRldmljZUNvbnRleHQsIEhHTFJDIHdnbENvbnRleHQsCitQYnVmZmVy
U3VyZmFjZVdHTDo6UGJ1ZmZlclN1cmZhY2VXR0woUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSB0ZXh0dXJlRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gdGV4dHVyZVRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxhcmdlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEhEQyBkZXZpY2VDb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEhHTFJDIHdnbENvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zV0dMICpmdW5jdGlvbnMpCi0g
ICAgOiBTdXJmYWNlR0woKSwKKyAgICA6IFN1cmZhY2VHTChyZW5kZXJlciksCiAgICAgICBtV2lk
dGgod2lkdGgpLAogICAgICAgbUhlaWdodChoZWlnaHQpLAogICAgICAgbUxhcmdlc3QobGFyZ2Vz
dCksCiAgICAgICBtVGV4dHVyZUZvcm1hdCh0ZXh0dXJlRm9ybWF0KSwKICAgICAgIG1UZXh0dXJl
VGFyZ2V0KHRleHR1cmVUYXJnZXQpLAogICAgICAgbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KSwK
KyAgICAgIG1TaGFyZVdHTENvbnRleHQod2dsQ29udGV4dCksCiAgICAgICBtUGFyZW50RGV2aWNl
Q29udGV4dChkZXZpY2VDb250ZXh0KSwKLSAgICAgIG1TaGFyZVdHTENvbnRleHQod2dsQ29udGV4
dCksCiAgICAgICBtUGJ1ZmZlcihudWxscHRyKSwKICAgICAgIG1QYnVmZmVyRGV2aWNlQ29udGV4
dChudWxscHRyKSwKICAgICAgIG1GdW5jdGlvbnNXR0woZnVuY3Rpb25zKQpAQCAtMTM4LDcgKzE0
Niw3IEBACiAgICAgfQogfQogCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlV0dMOjpiaW5kVGV4
SW1hZ2UoRUdMaW50IGJ1ZmZlcikKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VXR0w6OmJpbmRU
ZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKIHsKICAgICBpZiAo
IW1GdW5jdGlvbnNXR0wtPmJpbmRUZXhJbWFnZUFSQihtUGJ1ZmZlciwgR2V0V0dMQnVmZmVyQmlu
ZFRhcmdldChidWZmZXIpKSkKICAgICB7CkBAIC0xNzksNCArMTg3LDkgQEAKICAgICByZXR1cm4g
RUdMX0ZBTFNFOwogfQogCitFR0xpbnQgUGJ1ZmZlclN1cmZhY2VXR0w6OmdldFN3YXBCZWhhdmlv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEVHTF9CVUZGRVJfUFJFU0VSVkVEOwogfQorCit9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L1BidWZmZXJTdXJmYWNlV0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDE4
ICsyMSwyNSBAQAogY2xhc3MgUGJ1ZmZlclN1cmZhY2VXR0wgOiBwdWJsaWMgU3VyZmFjZUdMCiB7
CiAgIHB1YmxpYzoKLSAgICBQYnVmZmVyU3VyZmFjZVdHTChFR0xpbnQgd2lkdGgsIEVHTGludCBo
ZWlnaHQsIEVHTGVudW0gdGV4dHVyZUZvcm1hdCwgRUdMZW51bSB0ZXh0dXJlVGFyZ2V0LAotICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbGFyZ2VzdCwgaW50IHBpeGVsRm9ybWF0LCBIREMgZGV2
aWNlQ29udGV4dCwgSEdMUkMgd2dsQ29udGV4dCwKKyAgICBQYnVmZmVyU3VyZmFjZVdHTChSZW5k
ZXJlckdMICpyZW5kZXJlciwKKyAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICBFR0xlbnVtIHRleHR1cmVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSB0
ZXh0dXJlVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbGFyZ2VzdCwKKyAgICAg
ICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
SERDIGRldmljZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNXR0wgKmZ1bmN0aW9ucyk7
CiAgICAgflBidWZmZXJTdXJmYWNlV0dMKCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIGlu
aXRpYWxpemUoKTsKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBl
Z2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVycm9yIHN3YXAo
KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGlu
dCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJy
b3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1
ZSkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikg
b3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1
cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcmVsZWFzZVRleElt
YWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U3dhcEludGVydmFsKEVH
TGludCBpbnRlcnZhbCkgb3ZlcnJpZGU7CiAKQEAgLTQwLDYgKzQ3LDcgQEAKICAgICBFR0xpbnQg
Z2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBFR0xpbnQgaXNQb3N0U3ViQnVmZmVy
U3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlvcigp
IGNvbnN0IG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgRUdMaW50IG1XaWR0aDsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvV2lu
ZG93U3VyZmFjZVdHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmNwcAkocmV2aXNp
b24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOSw3NCAr
OSw4MCBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNl
V0dMLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9SZW5kZXJlckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
d2dsL0Z1bmN0aW9uc1dHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC93
Z2xfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLVdpbmRvd1N1cmZhY2VXR0w6OldpbmRv
d1N1cmZhY2VXR0woRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEFUT00gd2luZG93Q2xhc3Ms
IGludCBwaXhlbEZvcm1hdCwgSEdMUkMgd2dsQ29udGV4dCwgY29uc3QgRnVuY3Rpb25zV0dMICpm
dW5jdGlvbnMpCi0gICAgOiBTdXJmYWNlR0woKSwKLSAgICAgIG1XaW5kb3dDbGFzcyh3aW5kb3dD
bGFzcyksCitXaW5kb3dTdXJmYWNlV0dMOjpXaW5kb3dTdXJmYWNlV0dMKFJlbmRlcmVyR0wgKnJl
bmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5k
b3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBp
eGVsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIR0xSQyB3Z2xD
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlv
bnNXR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
aW50IG9yaWVudGF0aW9uKQorICAgIDogU3VyZmFjZUdMKHJlbmRlcmVyKSwKICAgICAgIG1QaXhl
bEZvcm1hdChwaXhlbEZvcm1hdCksCi0gICAgICBtU2hhcmVXR0xDb250ZXh0KHdnbENvbnRleHQp
LAotICAgICAgbVBhcmVudFdpbmRvdyh3aW5kb3cpLAotICAgICAgbUNoaWxkV2luZG93KG51bGxw
dHIpLAotICAgICAgbUNoaWxkRGV2aWNlQ29udGV4dChudWxscHRyKSwKLSAgICAgIG1GdW5jdGlv
bnNXR0woZnVuY3Rpb25zKQorICAgICAgbVdHTENvbnRleHQod2dsQ29udGV4dCksCisgICAgICBt
V2luZG93KHdpbmRvdyksCisgICAgICBtRGV2aWNlQ29udGV4dChudWxscHRyKSwKKyAgICAgIG1G
dW5jdGlvbnNXR0woZnVuY3Rpb25zKSwKKyAgICAgIG1Td2FwQmVoYXZpb3IoMCkKIHsKKyAgICAv
LyBFR0xfQU5HTEVfc3VyZmFjZV9vcmllbnRhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciByZWd1
bGFyIFdHTCB3aW5kb3cgc3VyZmFjZXMKKyAgICBBU1NFUlQob3JpZW50YXRpb24gPT0gMCk7CiB9
CiAKIFdpbmRvd1N1cmZhY2VXR0w6On5XaW5kb3dTdXJmYWNlV0dMKCkKIHsKLSAgICBtV2luZG93
Q2xhc3MgPSAwOwotICAgIG1QaXhlbEZvcm1hdCA9IDA7Ci0gICAgbVNoYXJlV0dMQ29udGV4dCA9
IG51bGxwdHI7Ci0KLSAgICBSZWxlYXNlREMobUNoaWxkV2luZG93LCBtQ2hpbGREZXZpY2VDb250
ZXh0KTsKLSAgICBtQ2hpbGREZXZpY2VDb250ZXh0ID0gbnVsbHB0cjsKLQotICAgIERlc3Ryb3lX
aW5kb3cobUNoaWxkV2luZG93KTsKLSAgICBtQ2hpbGRXaW5kb3cgPSBudWxscHRyOworICAgIFJl
bGVhc2VEQyhtV2luZG93LCBtRGV2aWNlQ29udGV4dCk7CisgICAgbURldmljZUNvbnRleHQgPSBu
dWxscHRyOwogfQogCiBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VXR0w6OmluaXRpYWxpemUoKQog
ewotICAgIC8vIENyZWF0ZSBhIGNoaWxkIHdpbmRvdyBvZiB0aGUgc3VwcGxpZWQgd2luZG93IHRv
IGRyYXcgdG8uCi0gICAgUkVDVCByZWN0OwotICAgIGlmICghR2V0Q2xpZW50UmVjdChtUGFyZW50
V2luZG93LCAmcmVjdCkpCisgICAgbURldmljZUNvbnRleHQgPSBHZXREQyhtV2luZG93KTsKKyAg
ICBpZiAoIW1EZXZpY2VDb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX0JBRF9OQVRJVkVfV0lORE9XLCAiRmFpbGVkIHRvIGdldCB0aGUgc2l6ZSBvZiB0aGUgbmF0
aXZlIHdpbmRvdy4iKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9OQVRJVkVf
V0lORE9XLCAiRmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGNvbnRleHQgZnJvbSB0aGUgbmF0aXZl
IHdpbmRvdywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJlcnJvcjogMHglWC4iLCBHZXRMYXN0RXJyb3IoKSk7CiAgICAgfQogCi0gICAgbUNoaWxk
V2luZG93ID0gQ3JlYXRlV2luZG93RXhBKFdTX0VYX05PUEFSRU5UTk9USUZZLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPiht
V2luZG93Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQU5HTEUg
SW50ZXJtZWRpYXRlIFN1cmZhY2UgV2luZG93IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV1NfQ0hJTERXSU5ET1cgfCBXU19ESVNBQkxFRCB8IFdTX1ZJU0lCTEUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qu
cmlnaHQgLSByZWN0LmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QuYm90dG9tIC0gcmVjdC50b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1QYXJlbnRXaW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgIGlmICghbUNoaWxkV2luZG93KQorICAg
IC8vIFJlcXVpcmUgdGhhdCB0aGUgcGl4ZWwgZm9ybWF0IGZvciB0aGlzIHdpbmRvdyBoYXMgbm90
IGJlZW4gc2V0IHlldCBvciBpcyBlcXVhbCB0byB0aGUgRGlzcGxheSdzIHBpeGVsIGZvcm1hdC4K
KyAgICBpbnQgd2luZG93UGl4ZWxGb3JtYXQgPSBHZXRQaXhlbEZvcm1hdChtRGV2aWNlQ29udGV4
dCk7CisgICAgaWYgKHdpbmRvd1BpeGVsRm9ybWF0ID09IDApCiAgICAgewotICAgICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csICJGYWlsZWQgdG8gY3JlYXRlIGEg
Y2hpbGQgd2luZG93LiIpOworICAgICAgICBQSVhFTEZPUk1BVERFU0NSSVBUT1IgcGl4ZWxGb3Jt
YXREZXNjcmlwdG9yID0geyAwIH07CisgICAgICAgIGlmICghRGVzY3JpYmVQaXhlbEZvcm1hdCht
RGV2aWNlQ29udGV4dCwgbVBpeGVsRm9ybWF0LCBzaXplb2YocGl4ZWxGb3JtYXREZXNjcmlwdG9y
KSwgJnBpeGVsRm9ybWF0RGVzY3JpcHRvcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfTkFUSVZFX1dJTkRPVywgIkZhaWxlZCB0byBEZXNjcmliZVBp
eGVsRm9ybWF0LCBlcnJvcjogMHglWC4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIVNldFBpeGVsRm9ybWF0KG1EZXZpY2VDb250ZXh0LCBtUGl4ZWxGb3JtYXQs
ICZwaXhlbEZvcm1hdERlc2NyaXB0b3IpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiRmFpbGVkIHRvIHNldCB0aGUgcGl4ZWwg
Zm9ybWF0IG9uIHRoZSBkZXZpY2UgY29udGV4dCwgIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAweCVYLiIsIEdldExhc3RFcnJvcigp
KTsKKyAgICAgICAgfQogICAgIH0KLQotICAgIG1DaGlsZERldmljZUNvbnRleHQgPSBHZXREQyht
Q2hpbGRXaW5kb3cpOwotICAgIGlmICghbUNoaWxkRGV2aWNlQ29udGV4dCkKKyAgICBlbHNlIGlm
ICh3aW5kb3dQaXhlbEZvcm1hdCAhPSBtUGl4ZWxGb3JtYXQpCiAgICAgewotICAgICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csICJGYWlsZWQgdG8gZ2V0IHRoZSBk
ZXZpY2UgY29udGV4dCBvZiB0aGUgY2hpbGQgd2luZG93LiIpOworICAgICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiUGl4ZWwgZm9ybWF0IG9mIHRoZSBOYXRpdmVX
aW5kb3cgYW5kIE5hdGl2ZURpc3BsYXlUeXBlIG11c3QgbWF0Y2guIik7CiAgICAgfQogCi0gICAg
Y29uc3QgUElYRUxGT1JNQVRERVNDUklQVE9SIHBpeGVsRm9ybWF0RGVzY3JpcHRvciA9IHdnbDo6
R2V0RGVmYXVsdFBpeGVsRm9ybWF0RGVzY3JpcHRvcigpOworICAgIC8vIENoZWNrIGZvciB0aGUg
c3dhcCBiZWhhdmlvciBvZiB0aGlzIHBpeGVsIGZvcm1hdAorICAgIHN3aXRjaCAoCisgICAgICAg
IHdnbDo6UXVlcnlXR0xGb3JtYXRBdHRyaWIobURldmljZUNvbnRleHQsIG1QaXhlbEZvcm1hdCwg
V0dMX1NXQVBfTUVUSE9EX0FSQiwgbUZ1bmN0aW9uc1dHTCkpCisgICAgeworICAgICAgICBjYXNl
IFdHTF9TV0FQX0NPUFlfQVJCOgorICAgICAgICAgICAgbVN3YXBCZWhhdmlvciA9IEVHTF9CVUZG
RVJfUFJFU0VSVkVEOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBpZiAoIVNldFBpeGVsRm9y
bWF0KG1DaGlsZERldmljZUNvbnRleHQsIG1QaXhlbEZvcm1hdCwgJnBpeGVsRm9ybWF0RGVzY3Jp
cHRvcikpCi0gICAgewotICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX05BVElWRV9X
SU5ET1csICJGYWlsZWQgdG8gc2V0IHRoZSBwaXhlbCBmb3JtYXQgb24gdGhlIGNoaWxkIHdpbmRv
dy4iKTsKKyAgICAgICAgY2FzZSBXR0xfU1dBUF9FWENIQU5HRV9BUkI6CisgICAgICAgIGNhc2Ug
V0dMX1NXQVBfVU5ERUZJTkVEX0FSQjoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG1T
d2FwQmVoYXZpb3IgPSBFR0xfQlVGRkVSX0RFU1RST1lFRDsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKQEAgLTg0LDcgKzkw
LDcgQEAKIAogZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlV0dMOjptYWtlQ3VycmVudCgpCiB7Ci0g
ICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5tYWtlQ3VycmVudChtQ2hpbGREZXZpY2VDb250ZXh0LCBt
U2hhcmVXR0xDb250ZXh0KSkKKyAgICBpZiAoIW1GdW5jdGlvbnNXR0wtPm1ha2VDdXJyZW50KG1E
ZXZpY2VDb250ZXh0LCBtV0dMQ29udGV4dCkpCiAgICAgewogICAgICAgICAvLyBUT0RPOiBXaGF0
IGVycm9yIHR5cGUgaGVyZT8KICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0NPTlRFWFRf
TE9TVCwgIkZhaWxlZCB0byBtYWtlIHRoZSBXR0wgY29udGV4dCBjdXJyZW50LiIpOwpAQCAtOTUs
MjMgKzEwMSw5IEBACiAKIGVnbDo6RXJyb3IgV2luZG93U3VyZmFjZVdHTDo6c3dhcCgpCiB7Ci0g
ICAgLy8gUmVzaXplIHRoZSBjaGlsZCB3aW5kb3cgdG8gdGhlIGludGVyaW9yIG9mIHRoZSBwYXJl
bnQgd2luZG93LgotICAgIFJFQ1QgcmVjdDsKLSAgICBpZiAoIUdldENsaWVudFJlY3QobVBhcmVu
dFdpbmRvdywgJnJlY3QpKQorICAgIGlmICghbUZ1bmN0aW9uc1dHTC0+c3dhcEJ1ZmZlcnMobURl
dmljZUNvbnRleHQpKQogICAgIHsKICAgICAgICAgLy8gVE9ETzogV2hhdCBlcnJvciB0eXBlIGhl
cmU/Ci0gICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9DT05URVhUX0xPU1QsICJGYWlsZWQg
dG8gZ2V0IHRoZSBzaXplIG9mIHRoZSBuYXRpdmUgd2luZG93LiIpOwotICAgIH0KLQotICAgIGlm
ICghTW92ZVdpbmRvdyhtQ2hpbGRXaW5kb3csIDAsIDAsIHJlY3QucmlnaHQgLSByZWN0LmxlZnQs
IHJlY3QuYm90dG9tIC0gcmVjdC50b3AsIEZBTFNFKSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE86
IFdoYXQgZXJyb3IgdHlwZSBoZXJlPwotICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQ09O
VEVYVF9MT1NULCAiRmFpbGVkIHRvIG1vdmUgdGhlIGNoaWxkIHdpbmRvdy4iKTsKLSAgICB9Ci0K
LSAgICBpZiAoIW1GdW5jdGlvbnNXR0wtPnN3YXBCdWZmZXJzKG1DaGlsZERldmljZUNvbnRleHQp
KQotICAgIHsKLSAgICAgICAgLy8gVE9ETzogV2hhdCBlcnJvciB0eXBlIGhlcmU/CiAgICAgICAg
IHJldHVybiBlZ2w6OkVycm9yKEVHTF9DT05URVhUX0xPU1QsICJGYWlsZWQgdG8gc3dhcCBidWZm
ZXJzIG9uIHRoZSBjaGlsZCB3aW5kb3cuIik7CiAgICAgfQogCkBAIC0xMzAsNyArMTIyLDcgQEAK
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgV2lu
ZG93U3VyZmFjZVdHTDo6YmluZFRleEltYWdlKEVHTGludCBidWZmZXIpCitlZ2w6OkVycm9yIFdp
bmRvd1N1cmZhY2VXR0w6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50
IGJ1ZmZlcikKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX1NVQ0NFU1MpOwpAQCAtMTUzLDcgKzE0NSw3IEBACiBFR0xpbnQgV2luZG93U3VyZmFjZVdH
TDo6Z2V0V2lkdGgoKSBjb25zdAogewogICAgIFJFQ1QgcmVjdDsKLSAgICBpZiAoIUdldENsaWVu
dFJlY3QobVBhcmVudFdpbmRvdywgJnJlY3QpKQorICAgIGlmICghR2V0Q2xpZW50UmVjdChtV2lu
ZG93LCAmcmVjdCkpCiAgICAgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjMsNyAr
MTU1LDcgQEAKIEVHTGludCBXaW5kb3dTdXJmYWNlV0dMOjpnZXRIZWlnaHQoKSBjb25zdAogewog
ICAgIFJFQ1QgcmVjdDsKLSAgICBpZiAoIUdldENsaWVudFJlY3QobVBhcmVudFdpbmRvdywgJnJl
Y3QpKQorICAgIGlmICghR2V0Q2xpZW50UmVjdChtV2luZG93LCAmcmVjdCkpCiAgICAgewogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNzcsNCArMTY5LDkgQEAKICAgICByZXR1cm4gRUdM
X0ZBTFNFOwogfQogCitFR0xpbnQgV2luZG93U3VyZmFjZVdHTDo6Z2V0U3dhcEJlaGF2aW9yKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbVN3YXBCZWhhdmlvcjsKIH0KKworfQpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJm
YWNlV0dMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmgJKHJldmlzaW9uIDE5OTY4MikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
V2luZG93U3VyZmFjZVdHTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNiArMjEsMjEgQEAKIGNs
YXNzIFdpbmRvd1N1cmZhY2VXR0wgOiBwdWJsaWMgU3VyZmFjZUdMCiB7CiAgIHB1YmxpYzoKLSAg
ICBXaW5kb3dTdXJmYWNlV0dMKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBBVE9NIHdpbmRv
d0NsYXNzLCBpbnQgcGl4ZWxGb3JtYXQsIEhHTFJDIHdnbENvbnRleHQsIGNvbnN0IEZ1bmN0aW9u
c1dHTCAqZnVuY3Rpb25zKTsKKyAgICBXaW5kb3dTdXJmYWNlV0dMKFJlbmRlcmVyR0wgKnJlbmRl
cmVyLAorICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisg
ICAgICAgICAgICAgICAgICAgICBpbnQgcGl4ZWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICBIR0xSQyB3Z2xDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25z
V0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24p
OwogICAgIH5XaW5kb3dTdXJmYWNlV0dMKCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIGlu
aXRpYWxpemUoKTsKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKICAgICBl
Z2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVycm9yIHN3YXAo
KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGlu
dCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJy
b3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1
ZSkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikg
b3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1
cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcmVsZWFzZVRleElt
YWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U3dhcEludGVydmFsKEVH
TGludCBpbnRlcnZhbCkgb3ZlcnJpZGU7CiAKQEAgLTM4LDE4ICs0MywxOSBAQAogICAgIEVHTGlu
dCBnZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEVHTGludCBpc1Bvc3RTdWJCdWZm
ZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2aW9y
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBBVE9NIG1XaW5kb3dDbGFzczsK
ICAgICBpbnQgbVBpeGVsRm9ybWF0OwogCi0gICAgSEdMUkMgbVNoYXJlV0dMQ29udGV4dDsKKyAg
ICBIR0xSQyBtV0dMQ29udGV4dDsKIAotICAgIEhXTkQgbVBhcmVudFdpbmRvdzsKLSAgICBIV05E
IG1DaGlsZFdpbmRvdzsKLSAgICBIREMgbUNoaWxkRGV2aWNlQ29udGV4dDsKKyAgICBIV05EIG1X
aW5kb3c7CisgICAgSERDIG1EZXZpY2VDb250ZXh0OwogCiAgICAgY29uc3QgRnVuY3Rpb25zV0dM
ICptRnVuY3Rpb25zV0dMOworCisgICAgRUdMaW50IG1Td2FwQmVoYXZpb3I7CiB9OwogCiB9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L3dnbF91dGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC93Z2xfdXRpbHMuY3BwCShyZXZpc2lvbiAxOTk2ODIp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2ds
L3dnbF91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw4IEBACiAKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvd2dsX3V0aWxzLmgiCiAKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC93Z2wvRnVuY3Rpb25zV0dMLmgiCisKIG5hbWVzcGFjZSByeAogewog
CkBAIC0zMCw2ICszMiw1NCBAQAogICAgIHJldHVybiBwaXhlbEZvcm1hdERlc2NyaXB0b3I7CiB9
CiAKK3N0ZDo6dmVjdG9yPGludD4gR2V0RGVmYXVsdFBpeGVsRm9ybWF0QXR0cmlidXRlcyhib29s
IHByZXNlcnZlZFN3YXApCit7CisgICAgc3RkOjp2ZWN0b3I8aW50PiBhdHRyaWJzOworICAgIGF0
dHJpYnMucHVzaF9iYWNrKFdHTF9EUkFXX1RPX1dJTkRPV19BUkIpOworICAgIGF0dHJpYnMucHVz
aF9iYWNrKFRSVUUpOworCisgICAgYXR0cmlicy5wdXNoX2JhY2soV0dMX0FDQ0VMRVJBVElPTl9B
UkIpOworICAgIGF0dHJpYnMucHVzaF9iYWNrKFdHTF9GVUxMX0FDQ0VMRVJBVElPTl9BUkIpOwor
CisgICAgYXR0cmlicy5wdXNoX2JhY2soV0dMX1NVUFBPUlRfT1BFTkdMX0FSQik7CisgICAgYXR0
cmlicy5wdXNoX2JhY2soVFJVRSk7CisKKyAgICBhdHRyaWJzLnB1c2hfYmFjayhXR0xfRE9VQkxF
X0JVRkZFUl9BUkIpOworICAgIGF0dHJpYnMucHVzaF9iYWNrKFRSVUUpOworCisgICAgYXR0cmli
cy5wdXNoX2JhY2soV0dMX1BJWEVMX1RZUEVfQVJCKTsKKyAgICBhdHRyaWJzLnB1c2hfYmFjayhX
R0xfVFlQRV9SR0JBX0FSQik7CisKKyAgICBhdHRyaWJzLnB1c2hfYmFjayhXR0xfQ09MT1JfQklU
U19BUkIpOworICAgIGF0dHJpYnMucHVzaF9iYWNrKDI0KTsKKworICAgIGF0dHJpYnMucHVzaF9i
YWNrKFdHTF9BTFBIQV9CSVRTX0FSQik7CisgICAgYXR0cmlicy5wdXNoX2JhY2soOCk7CisKKyAg
ICBhdHRyaWJzLnB1c2hfYmFjayhXR0xfREVQVEhfQklUU19BUkIpOworICAgIGF0dHJpYnMucHVz
aF9iYWNrKDI0KTsKKworICAgIGF0dHJpYnMucHVzaF9iYWNrKFdHTF9TVEVOQ0lMX0JJVFNfQVJC
KTsKKyAgICBhdHRyaWJzLnB1c2hfYmFjayg4KTsKKworICAgIGF0dHJpYnMucHVzaF9iYWNrKFdH
TF9TV0FQX01FVEhPRF9BUkIpOworICAgIGF0dHJpYnMucHVzaF9iYWNrKHByZXNlcnZlZFN3YXAg
PyBXR0xfU1dBUF9DT1BZX0FSQiA6IFdHTF9TV0FQX1VOREVGSU5FRF9BUkIpOworCisgICAgYXR0
cmlicy5wdXNoX2JhY2soMCk7CisKKyAgICByZXR1cm4gYXR0cmliczsKIH0KIAoraW50IFF1ZXJ5
V0dMRm9ybWF0QXR0cmliKEhEQyBkYywgaW50IGZvcm1hdCwgaW50IGF0dHJpYk5hbWUsIGNvbnN0
IEZ1bmN0aW9uc1dHTCAqZnVuY3Rpb25zKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIGlm
IChmdW5jdGlvbnMtPmdldFBpeGVsRm9ybWF0QXR0cmliaXZBUkIgPT0gbnVsbHB0ciB8fAorICAg
ICAgICAhZnVuY3Rpb25zLT5nZXRQaXhlbEZvcm1hdEF0dHJpYml2QVJCKGRjLCBmb3JtYXQsIDAs
IDEsICZhdHRyaWJOYW1lLCAmcmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQorfQorCit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL3dnbF91dGlscy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvd2dsX3V0aWxzLmgJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvd2dsX3V0aWxzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTksMTYgKzksMjIgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfV0dMX1dH
TFVUSUxTX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dHTF9XR0xVVElMU19IXwog
CisjaW5jbHVkZSA8dmVjdG9yPgorCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAKIG5h
bWVzcGFjZSByeAogewogCitjbGFzcyBGdW5jdGlvbnNXR0w7CisKIG5hbWVzcGFjZSB3Z2wKIHsK
IAogUElYRUxGT1JNQVRERVNDUklQVE9SIEdldERlZmF1bHRQaXhlbEZvcm1hdERlc2NyaXB0b3Io
KTsKK3N0ZDo6dmVjdG9yPGludD4gR2V0RGVmYXVsdFBpeGVsRm9ybWF0QXR0cmlidXRlcyhib29s
IHByZXNlcnZlZFN3YXApOwogCitpbnQgUXVlcnlXR0xGb3JtYXRBdHRyaWIoSERDIGRjLCBpbnQg
Zm9ybWF0LCBpbnQgYXR0cmliTmFtZSwgY29uc3QgRnVuY3Rpb25zV0dMICpmdW5jdGlvbnMpOwog
fQogCiB9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVHTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtOCwxMyAr
OCwxMjIgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FR0wuaCIKIAorI2luY2x1
ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGV2aWNlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdl
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvU3RyZWFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3Vy
ZmFjZS5oIgogCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgogCituYW1lc3BhY2UKK3sKK3NpemVf
dCBHZXRNYXhpbXVtTWlwTGV2ZWwoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQpCit7CisgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7
CisKKyAgICBzaXplX3QgbWF4RGltZW5zaW9uID0gMDsKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgIG1heERpbWVuc2lv
biA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBz
Lm1heEN1YmVNYXBUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfM0Q6CisgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDNEVGV4
dHVyZVNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
X0FSUkFZOgorICAgICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgyRFRleHR1cmVTaXpl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgIH0KKworICAgIHJldHVybiBnbDo6bG9nMihzdGF0aWNfY2FzdDxpbnQ+
KG1heERpbWVuc2lvbikpOworfQorCitib29sIFRleHR1cmVIYXNOb25aZXJvTWlwTGV2ZWxzU3Bl
Y2lmaWVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBjb25zdCBnbDo6VGV4dHVyZSAqdGV4
dHVyZSkKK3sKKyAgICBzaXplX3QgbWF4TWlwID0gR2V0TWF4aW11bU1pcExldmVsKGNvbnRleHQs
IHRleHR1cmUtPmdldFRhcmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBsZXZlbCA9IDE7IGxldmVs
IDwgbWF4TWlwOyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgaWYgKHRleHR1cmUtPmdldFRhcmdl
dCgpID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
R0xlbnVtIGZhY2UgPSBnbDo6Rmlyc3RDdWJlTWFwVGV4dHVyZVRhcmdldDsgZmFjZSA8PSBnbDo6
TGFzdEN1YmVNYXBUZXh0dXJlVGFyZ2V0OworICAgICAgICAgICAgICAgICBmYWNlKyspCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHRleHR1cmUtPmdldEludGVybmFsRm9ybWF0
KGZhY2UsIGxldmVsKSAhPSBHTF9OT05FKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRleHR1
cmUtPmdldEludGVybmFsRm9ybWF0KHRleHR1cmUtPmdldFRhcmdldCgpLCBsZXZlbCkgIT0gR0xf
Tk9ORSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBDdWJlVGV4dHVyZUhhc1Vuc3BlY2lmaWVkTGV2ZWwwRmFjZShjb25zdCBnbDo6VGV4dHVyZSAq
dGV4dHVyZSkKK3sKKyAgICBBU1NFUlQodGV4dHVyZS0+Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVS
RV9DVUJFX01BUCk7CisgICAgZm9yIChHTGVudW0gZmFjZSA9IGdsOjpGaXJzdEN1YmVNYXBUZXh0
dXJlVGFyZ2V0OyBmYWNlIDw9IGdsOjpMYXN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UrKykK
KyAgICB7CisgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRJbnRlcm5hbEZvcm1hdChmYWNlLCAwKSA9
PSBHTF9OT05FKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworZWdsOjpFcnJvciBWYWxpZGF0ZVN0
cmVhbUF0dHJpYnV0ZShjb25zdCBFR0xBdHRyaWIgYXR0cmlidXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0xBdHRyaWIgdmFsdWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgJmV4dGVu
c2lvbnMpCit7CisgICAgc3dpdGNoIChhdHRyaWJ1dGUpCisgICAgeworICAgICAgICBjYXNlIEVH
TF9TVFJFQU1fU1RBVEVfS0hSOgorICAgICAgICBjYXNlIEVHTF9QUk9EVUNFUl9GUkFNRV9LSFI6
CisgICAgICAgIGNhc2UgRUdMX0NPTlNVTUVSX0ZSQU1FX0tIUjoKKyAgICAgICAgICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTLCAiQXR0ZW1wdCB0byBpbml0aWFsaXplIHJlYWRv
bmx5IHBhcmFtZXRlciIpOworICAgICAgICBjYXNlIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNf
S0hSOgorICAgICAgICAgICAgLy8gVGVjaG5pY2FsbHkgbm90IGluIHNwZWMgYnV0IGEgbGF0ZW5j
eSA8IDAgbWFrZXMgbm8gc2Vuc2Ugc28gd2UgY2hlY2sgaXQKKyAgICAgICAgICAgIGlmICh2YWx1
ZSA8IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX0JBRF9QQVJBTUVURVIsICJMYXRlbmN5IG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9DT05TVU1FUl9BQ1FV
SVJFX1RJTUVPVVRfVVNFQ19LSFI6CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3RyZWFt
Q29uc3VtZXJHTFRleHR1cmUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJDb25zdW1lciBHTCBleHRlbnNpb24gbm90
IGVuYWJsZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEFnYWluIG5vdCBpbiBz
cGVjIGJ1dCBpdCBzaG91bGQgYmUgcG9zaXRpdmUgYW55d2F5cworICAgICAgICAgICAgaWYgKHZh
bHVlIDwgMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX1BBUkFNRVRFUiwgIlRpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgIkludmFsaWQgc3RyZWFtIGF0
dHJpYnV0ZSIpOworICAgIH0KKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9
Cit9ICAvLyBuYW1lc3BhY2UKKwogbmFtZXNwYWNlIGVnbAogewogCkBAIC0yMiwxMiArMTMxLDE3
IEBACiB7CiAgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgewotICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9ESVNQTEFZKTsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfRElTUExBWSwgImRpc3BsYXkgaXMgRUdMX05PX0RJU1BMQVkuIik7CiAgICAgfQogCisg
ICAgaWYgKCFEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheShkaXNwbGF5KSkKKyAgICB7CisgICAgICAg
IHJldHVybiBFcnJvcihFR0xfQkFEX0RJU1BMQVksICJkaXNwbGF5IGlzIG5vdCBhIHZhbGlkIGRp
c3BsYXkuIik7CisgICAgfQorCiAgICAgaWYgKCFkaXNwbGF5LT5pc0luaXRpYWxpemVkKCkpCiAg
ICAgewotICAgICAgICByZXR1cm4gRXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCk7CisgICAgICAg
IHJldHVybiBFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiZGlzcGxheSBpcyBub3QgaW5pdGlh
bGl6ZWQuIik7CiAgICAgfQogCiAgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKQEAgLTgx
LDYgKzE5NSw0NCBAQAogICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKK0Vycm9y
IFZhbGlkYXRlSW1hZ2UoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgSW1hZ2UgKmltYWdl
KQoreworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOworICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQor
CisgICAgaWYgKCFkaXNwbGF5LT5pc1ZhbGlkSW1hZ2UoaW1hZ2UpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiaW1hZ2UgaXMgbm90IHZhbGlkLiIpOwor
ICAgIH0KKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK0Vycm9yIFZhbGlk
YXRlU3RyZWFtKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IFN0cmVhbSAqc3RyZWFtKQor
eworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOworICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisg
ICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+
Z2V0RXh0ZW5zaW9ucygpOworICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiU3RyZWFtIGV4dGVuc2lv
biBub3QgYWN0aXZlIik7CisgICAgfQorCisgICAgaWYgKHN0cmVhbSA9PSBFR0xfTk9fU1RSRUFN
X0tIUiB8fCAhZGlzcGxheS0+aXNWYWxpZFN0cmVhbShzdHJlYW0pKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfU1RSRUFNX0tIUiwgIkludmFsaWQgc3RyZWFtIik7CisgICAg
fQorCisgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwogRXJyb3IgVmFsaWRhdGVD
cmVhdGVDb250ZXh0KERpc3BsYXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlndXJhdGlvbiwgZ2w6
OkNvbnRleHQgKnNoYXJlQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBBdHRyaWJ1dGVNYXAmIGF0dHJpYnV0ZXMpCiB7CkBAIC05MSwxNSArMjQzLDE1IEBACiAgICAg
fQogCiAgICAgLy8gR2V0IHRoZSByZXF1ZXN0ZWQgY2xpZW50IHZlcnNpb24gKGRlZmF1bHQgaXMg
MSkgYW5kIGNoZWNrIGl0IGlzIDIgb3IgMy4KLSAgICBFR0xpbnQgY2xpZW50TWFqb3JWZXJzaW9u
ID0gMTsKLSAgICBFR0xpbnQgY2xpZW50TWlub3JWZXJzaW9uID0gMDsKLSAgICBFR0xpbnQgY29u
dGV4dEZsYWdzID0gMDsKKyAgICBFR0xBdHRyaWIgY2xpZW50TWFqb3JWZXJzaW9uID0gMTsKKyAg
ICBFR0xBdHRyaWIgY2xpZW50TWlub3JWZXJzaW9uID0gMDsKKyAgICBFR0xBdHRyaWIgY29udGV4
dEZsYWdzICAgICAgID0gMDsKICAgICBib29sIHJlc2V0Tm90aWZpY2F0aW9uID0gZmFsc2U7CiAg
ICAgYm9vbCByb2J1c3RBY2Nlc3MgPSBmYWxzZTsKICAgICBmb3IgKEF0dHJpYnV0ZU1hcDo6Y29u
c3RfaXRlcmF0b3IgYXR0cmlidXRlSXRlciA9IGF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRl
SXRlciAhPSBhdHRyaWJ1dGVzLmVuZCgpOyBhdHRyaWJ1dGVJdGVyKyspCiAgICAgewotICAgICAg
ICBFR0xpbnQgYXR0cmlidXRlID0gYXR0cmlidXRlSXRlci0+Zmlyc3Q7Ci0gICAgICAgIEVHTGlu
dCB2YWx1ZSA9IGF0dHJpYnV0ZUl0ZXItPnNlY29uZDsKKyAgICAgICAgRUdMQXR0cmliIGF0dHJp
YnV0ZSA9IGF0dHJpYnV0ZUl0ZXItPmZpcnN0OworICAgICAgICBFR0xBdHRyaWIgdmFsdWUgICAg
ID0gYXR0cmlidXRlSXRlci0+c2Vjb25kOwogCiAgICAgICAgIHN3aXRjaCAoYXR0cmlidXRlKQog
ICAgICAgICB7CkBAIC0xMTUsNiArMjY3LDkgQEAKICAgICAgICAgICAgIGNvbnRleHRGbGFncyA9
IHZhbHVlOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICBjYXNlIEVHTF9DT05URVhU
X09QRU5HTF9ERUJVRzoKKyAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICBjYXNlIEVH
TF9DT05URVhUX09QRU5HTF9QUk9GSUxFX01BU0tfS0hSOgogICAgICAgICAgICAgLy8gT25seSB2
YWxpZCBmb3IgT3BlbkdMIChub24tRVMpIGNvbnRleHRzCiAgICAgICAgICAgICByZXR1cm4gRXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUpOwpAQCAtMTUwLDYgKzMwNSwxNyBAQAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICBjYXNlIEVHTF9DT05URVhUX09QRU5H
TF9OT19FUlJPUl9LSFI6CisgICAgICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9u
cygpLmNyZWF0ZUNvbnRleHROb0Vycm9yKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJJbnZhbGlkIENvbnRleHQgYXR0
cmlidXRlLiIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBF
R0xfVFJVRSAmJiB2YWx1ZSAhPSBFR0xfRkFMU0UpCisgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgIkF0dHJpYnV0ZSBtdXN0
IGJlIEVHTF9UUlVFIG9yIEVHTF9GQUxTRS4iKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICBicmVhazsKKwogICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gRXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUpOwogICAgICAgICB9CkBAIC0yMjQsOCArMzkwLDggQEAKIAog
ICAgIGZvciAoQXR0cmlidXRlTWFwOjpjb25zdF9pdGVyYXRvciBhdHRyaWJ1dGVJdGVyID0gYXR0
cmlidXRlcy5iZWdpbigpOyBhdHRyaWJ1dGVJdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJp
YnV0ZUl0ZXIrKykKICAgICB7Ci0gICAgICAgIEVHTGludCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJ
dGVyLT5maXJzdDsKLSAgICAgICAgRUdMaW50IHZhbHVlID0gYXR0cmlidXRlSXRlci0+c2Vjb25k
OworICAgICAgICBFR0xBdHRyaWIgYXR0cmlidXRlID0gYXR0cmlidXRlSXRlci0+Zmlyc3Q7Cisg
ICAgICAgIEVHTEF0dHJpYiB2YWx1ZSAgICAgPSBhdHRyaWJ1dGVJdGVyLT5zZWNvbmQ7CiAKICAg
ICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpCiAgICAgICAgIHsKQEAgLTI0OCw2ICs0MTQsMTMgQEAK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgY2FzZSBFR0xf
RkxFWElCTEVfU1VSRkFDRV9DT01QQVRJQklMSVRZX1NVUFBPUlRFRF9BTkdMRToKKyAgICAgICAg
ICAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5mbGV4aWJsZVN1cmZhY2VDb21wYXRpYmlsaXR5
KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9BVFRSSUJVVEUpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFrOworCiAg
ICAgICAgICAgY2FzZSBFR0xfV0lEVEg6CiAgICAgICAgICAgY2FzZSBFR0xfSEVJR0hUOgogICAg
ICAgICAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy53aW5kb3dGaXhlZFNpemUpCkBAIC0yNjcs
MTIgKzQ0MCwyNiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAg
ICAgICBjYXNlIEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFOgorICAgICAgICAgICAgICBp
ZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN1cmZhY2VPcmllbnRhdGlvbikKKyAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiRUdM
X0FOR0xFX3N1cmZhY2Vfb3JpZW50YXRpb24gaXMgbm90IGVuYWJsZWQuIik7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICBjYXNlIEVHTF9WR19DT0xP
UlNQQUNFOgogICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gpOwogCiAgICAg
ICAgICAgY2FzZSBFR0xfVkdfQUxQSEFfRk9STUFUOgogICAgICAgICAgICAgcmV0dXJuIEVycm9y
KEVHTF9CQURfTUFUQ0gpOwogCisgICAgICAgICAgY2FzZSBFR0xfRElSRUNUX0NPTVBPU0lUSU9O
X0FOR0xFOgorICAgICAgICAgICAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLmRpcmVjdENvbXBv
c2l0aW9uKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFE
X0FUVFJJQlVURSk7CiAgICAgICAgIH0KQEAgLTI5MywxMSArNDgwLDEzIEBACiAgICAgewogICAg
ICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQotICAgIAorCisgICAgY29uc3QgRGlzcGxheUV4dGVu
c2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpOworCiAg
ICAgZm9yIChBdHRyaWJ1dGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGF0dHJpYnV0ZUl0ZXIgPSBhdHRy
aWJ1dGVzLmJlZ2luKCk7IGF0dHJpYnV0ZUl0ZXIgIT0gYXR0cmlidXRlcy5lbmQoKTsgYXR0cmli
dXRlSXRlcisrKQogICAgIHsKLSAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0
ZXItPmZpcnN0OwotICAgICAgICBFR0xpbnQgdmFsdWUgPSBhdHRyaWJ1dGVJdGVyLT5zZWNvbmQ7
CisgICAgICAgIEVHTEF0dHJpYiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVyLT5maXJzdDsKKyAg
ICAgICAgRUdMQXR0cmliIHZhbHVlICAgICA9IGF0dHJpYnV0ZUl0ZXItPnNlY29uZDsKIAogICAg
ICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKICAgICAgICAgewpAQCAtMzQ0LDYgKzUzMywxNiBAQAog
ICAgICAgICAgIGNhc2UgRUdMX1ZHX0FMUEhBX0ZPUk1BVDoKICAgICAgICAgICAgIGJyZWFrOwog
CisgICAgICAgICAgY2FzZSBFR0xfRkxFWElCTEVfU1VSRkFDRV9DT01QQVRJQklMSVRZX1NVUFBP
UlRFRF9BTkdMRToKKyAgICAgICAgICAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5mbGV4aWJs
ZVN1cmZhY2VDb21wYXRpYmlsaXR5KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICByZXR1cm4gRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgRUdMX0JBRF9BVFRSSUJVVEUs
CisgICAgICAgICAgICAgICAgICAgICAgIkVHTF9GTEVYSUJMRV9TVVJGQUNFX0NPTVBBVElCSUxJ
VFlfU1VQUE9SVEVEX0FOR0xFIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgIgorICAgICAgICAgICAg
ICAgICAgICAgICJFR0xfQU5HTEVfZmxleGlibGVfc3VyZmFjZV9jb21wYXRpYmlsaXR5IHN1cHBv
cnQuIik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFKTsK
ICAgICAgICAgfQpAQCAtMzU2LDggKzU1NSw4IEBACiAKICAgICBjb25zdCBDYXBzICZjYXBzID0g
ZGlzcGxheS0+Z2V0Q2FwcygpOwogCi0gICAgRUdMZW51bSB0ZXh0dXJlRm9ybWF0ID0gYXR0cmli
dXRlcy5nZXQoRUdMX1RFWFRVUkVfRk9STUFULCBFR0xfTk9fVEVYVFVSRSk7Ci0gICAgRUdMZW51
bSB0ZXh0dXJlVGFyZ2V0ID0gYXR0cmlidXRlcy5nZXQoRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xf
Tk9fVEVYVFVSRSk7CisgICAgRUdMQXR0cmliIHRleHR1cmVGb3JtYXQgPSBhdHRyaWJ1dGVzLmdl
dChFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9OT19URVhUVVJFKTsKKyAgICBFR0xBdHRyaWIgdGV4
dHVyZVRhcmdldCA9IGF0dHJpYnV0ZXMuZ2V0KEVHTF9URVhUVVJFX1RBUkdFVCwgRUdMX05PX1RF
WFRVUkUpOwogCiAgICAgaWYgKCh0ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19URVhUVVJFICYmIHRl
eHR1cmVUYXJnZXQgPT0gRUdMX05PX1RFWFRVUkUpIHx8CiAgICAgICAgICh0ZXh0dXJlRm9ybWF0
ID09IEVHTF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQgIT0gRUdMX05PX1RFWFRVUkUpKQpA
QCAtMzcxLDggKzU3MCw4IEBACiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSk7CiAgICAgfQogCi0gICAgRUdMaW50IHdpZHRoID0gYXR0cmlidXRlcy5nZXQoRUdMX1dJRFRI
LCAwKTsKLSAgICBFR0xpbnQgaGVpZ2h0ID0gYXR0cmlidXRlcy5nZXQoRUdMX0hFSUdIVCwgMCk7
CisgICAgRUdMaW50IHdpZHRoICA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlidXRlcy5nZXQo
RUdMX1dJRFRILCAwKSk7CisgICAgRUdMaW50IGhlaWdodCA9IHN0YXRpY19jYXN0PEVHTGludD4o
YXR0cmlidXRlcy5nZXQoRUdMX0hFSUdIVCwgMCkpOwogICAgIGlmICh0ZXh0dXJlRm9ybWF0ICE9
IEVHTF9OT19URVhUVVJFICYmICFjYXBzLnRleHR1cmVOUE9UICYmICghZ2w6OmlzUG93Mih3aWR0
aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0KSkpCiAgICAgewogICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9NQVRDSCk7CkBAIC00MTEsOCArNjEwLDggQEAKIAogICAgIGZvciAoQXR0cmlidXRl
TWFwOjpjb25zdF9pdGVyYXRvciBhdHRyaWJ1dGVJdGVyID0gYXR0cmlidXRlcy5iZWdpbigpOyBh
dHRyaWJ1dGVJdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZUl0ZXIrKykKICAgICB7
Ci0gICAgICAgIEVHTGludCBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVyLT5maXJzdDsKLSAgICAg
ICAgRUdMaW50IHZhbHVlID0gYXR0cmlidXRlSXRlci0+c2Vjb25kOworICAgICAgICBFR0xBdHRy
aWIgYXR0cmlidXRlID0gYXR0cmlidXRlSXRlci0+Zmlyc3Q7CisgICAgICAgIEVHTEF0dHJpYiB2
YWx1ZSAgICAgPSBhdHRyaWJ1dGVJdGVyLT5zZWNvbmQ7CiAKICAgICAgICAgc3dpdGNoIChhdHRy
aWJ1dGUpCiAgICAgICAgIHsKQEAgLTQ1NCw2ICs2NTMsMTYgQEAKICAgICAgICAgICBjYXNlIEVH
TF9NSVBNQVBfVEVYVFVSRToKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgY2FzZSBF
R0xfRkxFWElCTEVfU1VSRkFDRV9DT01QQVRJQklMSVRZX1NVUFBPUlRFRF9BTkdMRToKKyAgICAg
ICAgICAgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9ucy5mbGV4aWJsZVN1cmZhY2VDb21wYXRpYmls
aXR5KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgICAgRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9GTEVYSUJMRV9TVVJGQUNFX0NPTVBBVElCSUxJVFlfU1VQUE9SVEVEX0FOR0xF
IGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgIgorICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5H
TEVfZmxleGlibGVfc3VyZmFjZV9jb21wYXRpYmlsaXR5IHN1cHBvcnQuIik7CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFKTsKICAgICAgICAgfQpAQCAtNDY0
LDggKzY3Myw4IEBACiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENIKTsKICAgICB9
CiAKLSAgICBFR0xlbnVtIHRleHR1cmVGb3JtYXQgPSBhdHRyaWJ1dGVzLmdldChFR0xfVEVYVFVS
RV9GT1JNQVQsIEVHTF9OT19URVhUVVJFKTsKLSAgICBFR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBh
dHRyaWJ1dGVzLmdldChFR0xfVEVYVFVSRV9UQVJHRVQsIEVHTF9OT19URVhUVVJFKTsKKyAgICBF
R0xBdHRyaWIgdGV4dHVyZUZvcm1hdCA9IGF0dHJpYnV0ZXMuZ2V0KEVHTF9URVhUVVJFX0ZPUk1B
VCwgRUdMX05PX1RFWFRVUkUpOworICAgIEVHTEF0dHJpYiB0ZXh0dXJlVGFyZ2V0ID0gYXR0cmli
dXRlcy5nZXQoRUdMX1RFWFRVUkVfVEFSR0VULCBFR0xfTk9fVEVYVFVSRSk7CiAgICAgaWYgKCh0
ZXh0dXJlRm9ybWF0ICE9IEVHTF9OT19URVhUVVJFICYmIHRleHR1cmVUYXJnZXQgPT0gRUdMX05P
X1RFWFRVUkUpIHx8CiAgICAgICAgICh0ZXh0dXJlRm9ybWF0ID09IEVHTF9OT19URVhUVVJFICYm
IHRleHR1cmVUYXJnZXQgIT0gRUdMX05PX1RFWFRVUkUpKQogICAgIHsKQEAgLTQ4MCw4ICs2ODks
OCBAQAogCiAgICAgaWYgKGJ1ZnR5cGUgPT0gRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRM
RV9BTkdMRSkKICAgICB7Ci0gICAgICAgIEVHTGludCB3aWR0aCA9IGF0dHJpYnV0ZXMuZ2V0KEVH
TF9XSURUSCwgMCk7Ci0gICAgICAgIEVHTGludCBoZWlnaHQgPSBhdHRyaWJ1dGVzLmdldChFR0xf
SEVJR0hULCAwKTsKKyAgICAgICAgRUdMaW50IHdpZHRoICA9IHN0YXRpY19jYXN0PEVHTGludD4o
YXR0cmlidXRlcy5nZXQoRUdMX1dJRFRILCAwKSk7CisgICAgICAgIEVHTGludCBoZWlnaHQgPSBz
dGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnV0ZXMuZ2V0KEVHTF9IRUlHSFQsIDApKTsKIAogICAg
ICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKICAgICAgICAgewpAQCAtNDk4LDQg
KzcwNyw4MjkgQEAKICAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCitFcnJvciBW
YWxpZGF0ZUNvbXBhdGlibGVDb25maWdzKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29uZmlnICpjb25maWcyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGUpCit7CisKKyAgICBpZiAo
IXN1cmZhY2UtPmZsZXhpYmxlU3VyZmFjZUNvbXBhdGliaWxpdHlSZXF1ZXN0ZWQoKSkKKyAgICB7
CisgICAgICAgIC8vIENvbmZpZyBjb21wYXRpYmlsaXR5IGlzIGRlZmluZWQgaW4gc2VjdGlvbiAy
LjIgb2YgdGhlIEVHTCAxLjUgc3BlYworCisgICAgICAgIGJvb2wgY29sb3JCdWZmZXJDb21wYXQg
PSBjb25maWcxLT5jb2xvckJ1ZmZlclR5cGUgPT0gY29uZmlnMi0+Y29sb3JCdWZmZXJUeXBlOwor
ICAgICAgICBpZiAoIWNvbG9yQnVmZmVyQ29tcGF0KQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIkNvbG9yIGJ1ZmZlciB0eXBlcyBhcmUgbm90IGNv
bXBhdGlibGUuIik7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNvbG9yQ29tcGF0ID0KKyAg
ICAgICAgICAgIGNvbmZpZzEtPnJlZFNpemUgPT0gY29uZmlnMi0+cmVkU2l6ZSAmJiBjb25maWcx
LT5ncmVlblNpemUgPT0gY29uZmlnMi0+Z3JlZW5TaXplICYmCisgICAgICAgICAgICBjb25maWcx
LT5ibHVlU2l6ZSA9PSBjb25maWcyLT5ibHVlU2l6ZSAmJiBjb25maWcxLT5hbHBoYVNpemUgPT0g
Y29uZmlnMi0+YWxwaGFTaXplICYmCisgICAgICAgICAgICBjb25maWcxLT5sdW1pbmFuY2VTaXpl
ID09IGNvbmZpZzItPmx1bWluYW5jZVNpemU7CisgICAgICAgIGlmICghY29sb3JDb21wYXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENILCAiQ29sb3Ig
YnVmZmVyIHNpemVzIGFyZSBub3QgY29tcGF0aWJsZS4iKTsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgZHNDb21wYXQgPSBjb25maWcxLT5kZXB0aFNpemUgPT0gY29uZmlnMi0+ZGVwdGhTaXpl
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcxLT5zdGVuY2lsU2l6ZSA9PSBjb25m
aWcyLT5zdGVuY2lsU2l6ZTsKKyAgICAgICAgaWYgKCFkc0NvbXBhdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJEZXB0aC1zdGVuY2lsIGJ1ZmZl
ciB0eXBlcyBhcmUgbm90IGNvbXBhdGlibGUuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBi
b29sIHN1cmZhY2VUeXBlQ29tcGF0ID0gKGNvbmZpZzEtPnN1cmZhY2VUeXBlICYgY29uZmlnMi0+
c3VyZmFjZVR5cGUgJiBzdXJmYWNlVHlwZSkgIT0gMDsKKyAgICBpZiAoIXN1cmZhY2VUeXBlQ29t
cGF0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJTdXJmYWNl
IHR5cGVzIGFyZSBub3QgY29tcGF0aWJsZS4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXJyb3Io
RUdMX1NVQ0NFU1MpOwogfQorCitFcnJvciBWYWxpZGF0ZUNyZWF0ZUltYWdlS0hSKGNvbnN0IERp
c3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVz
KQoreworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQp
OworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7
CisgICAgfQorCisgICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25z
ID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpOworCisgICAgaWYgKCFkaXNwbGF5RXh0ZW5zaW9u
cy5pbWFnZUJhc2UgJiYgIWRpc3BsYXlFeHRlbnNpb25zLmltYWdlKQorICAgIHsKKyAgICAgICAg
Ly8gSXQgaXMgb3V0IG9mIHNwZWMgd2hhdCBoYXBwZW5zIHdoZW4gY2FsbGluZyBhbiBleHRlbnNp
b24gZnVuY3Rpb24gd2hlbiB0aGUgZXh0ZW5zaW9uIGlzCisgICAgICAgIC8vIG5vdCBhdmFpbGFi
bGUuCisgICAgICAgIC8vIEVHTF9CQURfRElTUExBWSBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBl
cnJvci4KKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfRElTUExBWSwgIkVHTF9LSFJfaW1h
Z2Ugbm90IHN1cHBvcnRlZC4iKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IENv
bXBsZXRlIHZhbGlkYXRpb24gZnJvbSBFR0xfS0hSX2ltYWdlX2Jhc2U6CisgICAgLy8gSWYgdGhl
IHJlc291cmNlIHNwZWNpZmllZCBieSA8ZHB5PiwgPGN0eD4sIDx0YXJnZXQ+LCA8YnVmZmVyPiBh
bmQgPGF0dHJpYl9saXN0PiBpcyBpdHNlbGYgYW4KKyAgICAvLyBFR0xJbWFnZSBzaWJsaW5nLCB0
aGUgZXJyb3IgRUdMX0JBRF9BQ0NFU1MgaXMgZ2VuZXJhdGVkLgorCisgICAgZm9yIChBdHRyaWJ1
dGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGF0dHJpYnV0ZUl0ZXIgPSBhdHRyaWJ1dGVzLmJlZ2luKCk7
CisgICAgICAgICBhdHRyaWJ1dGVJdGVyICE9IGF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZUl0
ZXIrKykKKyAgICB7CisgICAgICAgIEVHTEF0dHJpYiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVJdGVy
LT5maXJzdDsKKyAgICAgICAgRUdMQXR0cmliIHZhbHVlICAgICA9IGF0dHJpYnV0ZUl0ZXItPnNl
Y29uZDsKKworICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY2FzZSBFR0xfSU1BR0VfUFJFU0VSVkVEX0tIUjoKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KHZhbHVlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xf
VFJVRToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfRkFMU0U6CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfSU1BR0VfUFJFU0VSVkVEX0tIUiBt
dXN0IGJlIEVHTF9UUlVFIG9yIEVHTF9GQUxTRS4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfTEVW
RUxfS0hSOgorICAgICAgICAgICAgICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuZ2xUZXh0dXJl
MkRJbWFnZSAmJgorICAgICAgICAgICAgICAgICAgICAhZGlzcGxheUV4dGVuc2lvbnMuZ2xUZXh0
dXJlQ3ViZW1hcEltYWdlICYmICFkaXNwbGF5RXh0ZW5zaW9ucy5nbFRleHR1cmUzREltYWdlKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9HTF9U
RVhUVVJFX0xFVkVMX0tIUiBjYW5ub3QgYmUgdXNlZCB3aXRob3V0ICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJLSFJfZ2xfdGV4dHVyZV8qX2ltYWdlIHN1cHBvcnQuIik7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BB
UkFNRVRFUiwgIkVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUiBjYW5ub3QgYmUgbmVnYXRpdmUuIik7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBjYXNlIEVHTF9HTF9URVhUVVJFX1pPRkZTRVRfS0hSOgorICAgICAgICAgICAgICAgIGlmICgh
ZGlzcGxheUV4dGVuc2lvbnMuZ2xUZXh0dXJlM0RJbWFnZSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiBj
YW5ub3QgYmUgdXNlZCB3aXRob3V0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJLSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSBzdXBwb3J0LiIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJpbnZhbGlkIGF0dHJpYnV0
ZTogMHglWCIsIGF0dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKHRh
cmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfMkRfS0hSOgorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLmdsVGV4dHVyZTJESW1hZ2Up
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFS
QU1FVEVSLCAiS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2Ugbm90IHN1cHBvcnRlZC4iKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ1ZmZlciA9PSAwKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBjYW5ub3QgcmVmZXJlbmNlIGEgMkQgdGV4dHVy
ZSB3aXRoIHRoZSBuYW1lIDAuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnN0
IGdsOjpUZXh0dXJlICp0ZXh0dXJlID0KKyAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRUZXh0
dXJlKGVnbF9nbDo6RUdMQ2xpZW50QnVmZmVyVG9HTE9iamVjdEhhbmRsZShidWZmZXIpKTsKKyAg
ICAgICAgICAgIGlmICh0ZXh0dXJlID09IG51bGxwdHIgfHwgdGV4dHVyZS0+Z2V0VGFyZ2V0KCkg
IT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0YXJnZXQgaXMgbm90IGEgMkQgdGV4dHVyZS4iKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRleHR1cmUtPmdldEJvdW5kU3VyZmFj
ZSgpICE9IG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVy
cm9yKEVHTF9CQURfQUNDRVNTLCAidGV4dHVyZSBoYXMgYSBzdXJmYWNlIGJvdW5kIHRvIGl0LiIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBFR0xBdHRyaWIgbGV2ZWwgPSBhdHRyaWJ1
dGVzLmdldChFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIsIDApOworICAgICAgICAgICAgaWYgKHRl
eHR1cmUtPmdldFdpZHRoKEdMX1RFWFRVUkVfMkQsIHN0YXRpY19jYXN0PHNpemVfdD4obGV2ZWwp
KSA9PSAwIHx8CisgICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0SGVpZ2h0KEdMX1RFWFRVUkVf
MkQsIHN0YXRpY19jYXN0PHNpemVfdD4obGV2ZWwpKSA9PSAwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRhcmdldCAyRCB0ZXh0dXJlIGRvZXMgbm90IGhhdmUgYSB2YWxp
ZCBzaXplIGF0IHNwZWNpZmllZCBsZXZlbC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKGxldmVsID4gMCAmJiAoIXRleHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZXZlbCkgPj0g
dGV4dHVyZS0+Z2V0TWlwQ29tcGxldGVMZXZlbHMoKSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAidGV4dHVyZSBtdXN0IGJl
IGNvbXBsZXRlIGlmIGxldmVsIGlzIG5vbi16ZXJvLiIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAobGV2ZWwgPT0gMCAmJiAhdGV4dHVyZS0+aXNNaXBtYXBDb21wbGV0ZSgpICYm
CisgICAgICAgICAgICAgICAgVGV4dHVyZUhhc05vblplcm9NaXBMZXZlbHNTcGVjaWZpZWQoY29u
dGV4dCwgdGV4dHVyZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVy
cm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYg
bGV2ZWwgaXMgemVybyBhbmQgdGhlIHRleHR1cmUgaXMgaW5jb21wbGV0ZSwgaXQgbXVzdCBoYXZl
IG5vIG1pcCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbHMgc3BlY2lmaWVk
IGV4Y2VwdCB6ZXJvLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFI6
CisgICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF9LSFI6Cisg
ICAgICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWV9LSFI6CisgICAg
ICAgIGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV9LSFI6CisgICAgICAg
IGNhc2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl9LSFI6CisgICAgICAgIGNh
c2UgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWl9LSFI6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuZ2xUZXh0dXJlQ3ViZW1hcEltYWdlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFN
RVRFUiwgIktIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2Ugbm90IHN1cHBvcnRlZC4iKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ1ZmZlciA9PSAwKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciBjYW5ub3QgcmVmZXJlbmNlIGEgY3ViZW1h
cCB0ZXh0dXJlIHdpdGggdGhlIG5hbWUgMC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29uc3QgZ2w6OlRleHR1cmUgKnRleHR1cmUgPQorICAgICAgICAgICAgICAgIGNvbnRleHQt
PmdldFRleHR1cmUoZWdsX2dsOjpFR0xDbGllbnRCdWZmZXJUb0dMT2JqZWN0SGFuZGxlKGJ1ZmZl
cikpOworICAgICAgICAgICAgaWYgKHRleHR1cmUgPT0gbnVsbHB0ciB8fCB0ZXh0dXJlLT5nZXRU
YXJnZXQoKSAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgInRhcmdldCBpcyBub3QgYSBj
dWJlbWFwIHRleHR1cmUuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0ZXh0
dXJlLT5nZXRCb3VuZFN1cmZhY2UoKSAhPSBudWxscHRyKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgInRleHR1cmUgaGFzIGEgc3Vy
ZmFjZSBib3VuZCB0byBpdC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRUdMQXR0
cmliIGxldmVsICAgID0gYXR0cmlidXRlcy5nZXQoRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCAw
KTsKKyAgICAgICAgICAgIEdMZW51bSBjdWJlTWFwRmFjZSA9IGVnbF9nbDo6RUdMQ3ViZU1hcFRh
cmdldFRvR0xDdWJlTWFwVGFyZ2V0KHRhcmdldCk7CisgICAgICAgICAgICBpZiAodGV4dHVyZS0+
Z2V0V2lkdGgoY3ViZU1hcEZhY2UsIHN0YXRpY19jYXN0PHNpemVfdD4obGV2ZWwpKSA9PSAwIHx8
CisgICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0SGVpZ2h0KGN1YmVNYXBGYWNlLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxldmVsKSkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0YXJnZXQgY3ViZW1hcCB0ZXh0dXJlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBzaXpl
IGF0IHNwZWNpZmllZCBsZXZlbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQg
ZmFjZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxldmVsID4gMCAmJiAo
IXRleHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZXZlbCkgPj0gdGV4dHVyZS0+Z2V0TWlwQ29tcGxl
dGVMZXZlbHMoKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9y
KEVHTF9CQURfUEFSQU1FVEVSLCAidGV4dHVyZSBtdXN0IGJlIGNvbXBsZXRlIGlmIGxldmVsIGlz
IG5vbi16ZXJvLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0g
MCAmJiAhdGV4dHVyZS0+aXNNaXBtYXBDb21wbGV0ZSgpICYmCisgICAgICAgICAgICAgICAgVGV4
dHVyZUhhc05vblplcm9NaXBMZXZlbHNTcGVjaWZpZWQoY29udGV4dCwgdGV4dHVyZSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYgbGV2ZWwgaXMgemVybyBhbmQgdGhl
IHRleHR1cmUgaXMgaW5jb21wbGV0ZSwgaXQgbXVzdCBoYXZlIG5vIG1pcCAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJsZXZlbHMgc3BlY2lmaWVkIGV4Y2VwdCB6ZXJvLiIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCAmJiAhdGV4dHVyZS0+aXNN
aXBtYXBDb21wbGV0ZSgpICYmCisgICAgICAgICAgICAgICAgQ3ViZVRleHR1cmVIYXNVbnNwZWNp
ZmllZExldmVsMEZhY2UodGV4dHVyZSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaWYgbGV2ZWwgaXMgemVybyBhbmQgdGhlIHRleHR1cmUgaXMgaW5jb21wbGV0ZSwgaXQg
bXVzdCBoYXZlIGFsbCBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdHMgZmFj
ZXMgc3BlY2lmaWVkIGF0IGxldmVsIHplcm8uIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFR0xfR0xfVEVYVFVSRV8zRF9LSFI6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuZ2xUZXh0dXJlM0RJ
bWFnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9QQVJBTUVURVIsICJLSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSBub3Qgc3VwcG9ydGVkLiIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnVmZmVyID09IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGNhbm5vdCByZWZlcmVuY2UgYSAzRCB0
ZXh0dXJlIHdpdGggdGhlIG5hbWUgMC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y29uc3QgZ2w6OlRleHR1cmUgKnRleHR1cmUgPQorICAgICAgICAgICAgICAgIGNvbnRleHQtPmdl
dFRleHR1cmUoZWdsX2dsOjpFR0xDbGllbnRCdWZmZXJUb0dMT2JqZWN0SGFuZGxlKGJ1ZmZlcikp
OworICAgICAgICAgICAgaWYgKHRleHR1cmUgPT0gbnVsbHB0ciB8fCB0ZXh0dXJlLT5nZXRUYXJn
ZXQoKSAhPSBHTF9URVhUVVJFXzNEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJl
dHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgInRhcmdldCBpcyBub3QgYSAzRCB0ZXh0dXJl
LiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGV4dHVyZS0+Z2V0Qm91bmRT
dXJmYWNlKCkgIT0gbnVsbHB0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJ0ZXh0dXJlIGhhcyBhIHN1cmZhY2UgYm91bmQgdG8g
aXQuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEVHTEF0dHJpYiBsZXZlbCAgID0g
YXR0cmlidXRlcy5nZXQoRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCAwKTsKKyAgICAgICAgICAg
IEVHTEF0dHJpYiB6T2Zmc2V0ID0gYXR0cmlidXRlcy5nZXQoRUdMX0dMX1RFWFRVUkVfWk9GRlNF
VF9LSFIsIDApOworICAgICAgICAgICAgaWYgKHRleHR1cmUtPmdldFdpZHRoKEdMX1RFWFRVUkVf
M0QsIHN0YXRpY19jYXN0PHNpemVfdD4obGV2ZWwpKSA9PSAwIHx8CisgICAgICAgICAgICAgICAg
dGV4dHVyZS0+Z2V0SGVpZ2h0KEdMX1RFWFRVUkVfM0QsIHN0YXRpY19jYXN0PHNpemVfdD4obGV2
ZWwpKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0RGVwdGgoR0xfVEVYVFVS
RV8zRCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZXZlbCkpID09IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGFyZ2V0IDNEIHRleHR1cmUgZG9lcyBub3QgaGF2ZSBhIHZh
bGlkIHNpemUgYXQgc3BlY2lmaWVkIGxldmVsLiIpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pih6T2Zmc2V0KSA+PQorICAgICAgICAgICAgICAg
IHRleHR1cmUtPmdldERlcHRoKEdMX1RFWFRVUkVfM0QsIHN0YXRpY19jYXN0PHNpemVfdD4obGV2
ZWwpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9QQVJBTUVURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXJnZXQgM0QgdGV4
dHVyZSBkb2VzIG5vdCBoYXZlIGVub3VnaCBsYXllcnMgZm9yIHRoZSBzcGVjaWZpZWQgWiAiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQgYXQgdGhlIHNwZWNpZmllZCBsZXZl
bC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxldmVsID4gMCAmJiAoIXRl
eHR1cmUtPmlzTWlwbWFwQ29tcGxldGUoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZXZlbCkgPj0gdGV4dHVyZS0+Z2V0TWlwQ29tcGxldGVM
ZXZlbHMoKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfUEFSQU1FVEVSLCAidGV4dHVyZSBtdXN0IGJlIGNvbXBsZXRlIGlmIGxldmVsIGlzIG5v
bi16ZXJvLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCAm
JiAhdGV4dHVyZS0+aXNNaXBtYXBDb21wbGV0ZSgpICYmCisgICAgICAgICAgICAgICAgVGV4dHVy
ZUhhc05vblplcm9NaXBMZXZlbHNTcGVjaWZpZWQoY29udGV4dCwgdGV4dHVyZSkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWYgbGV2ZWwgaXMgemVybyBhbmQgdGhlIHRl
eHR1cmUgaXMgaW5jb21wbGV0ZSwgaXQgbXVzdCBoYXZlIG5vIG1pcCAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJsZXZlbHMgc3BlY2lmaWVkIGV4Y2VwdCB6ZXJvLiIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX0dM
X1JFTkRFUkJVRkZFUl9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZGlzcGxheUV4
dGVuc2lvbnMuZ2xSZW5kZXJidWZmZXJJbWFnZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJLSFJfZ2xfcmVuZGVyYnVmZmVy
X2ltYWdlIG5vdCBzdXBwb3J0ZWQuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChhdHRyaWJ1dGVzLmNvbnRhaW5zKEVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUikpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSIGNh
bm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJyZW5kZXJidWZmZXIgdGFyZ2V0LiIpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoYnVmZmVyID09IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYnVmZmVyIGNhbm5vdCByZWZlcmVuY2UgYSByZW5kZXJidWZmZXIgd2l0aCB0aGUgbmFt
ZSAwLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBnbDo6UmVuZGVyYnVm
ZmVyICpyZW5kZXJidWZmZXIgPQorICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldFJlbmRlcmJ1
ZmZlcihlZ2xfZ2w6OkVHTENsaWVudEJ1ZmZlclRvR0xPYmplY3RIYW5kbGUoYnVmZmVyKSk7Cisg
ICAgICAgICAgICBpZiAocmVuZGVyYnVmZmVyID09IG51bGxwdHIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAidGFyZ2V0IGlz
IG5vdCBhIHJlbmRlcmJ1ZmZlci4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYg
KHJlbmRlcmJ1ZmZlci0+Z2V0U2FtcGxlcygpID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0YXJnZXQgcmVuZGVyYnVm
ZmVyIGNhbm5vdCBiZSBtdWx0aXNhbXBsZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBF
cnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgImludmFsaWQgdGFyZ2V0OiAweCVYIiwgdGFyZ2V0KTsK
KyAgICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitFcnJvciBWYWxp
ZGF0ZURlc3Ryb3lJbWFnZUtIUihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBJbWFnZSAq
aW1hZ2UpCit7CisgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUltYWdlKGRpc3BsYXksIGltYWdl
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9y
OworICAgIH0KKworICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmltYWdlQmFzZSAm
JiAhZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmltYWdlKQorICAgIHsKKyAgICAgICAgLy8gSXQg
aXMgb3V0IG9mIHNwZWMgd2hhdCBoYXBwZW5zIHdoZW4gY2FsbGluZyBhbiBleHRlbnNpb24gZnVu
Y3Rpb24gd2hlbiB0aGUgZXh0ZW5zaW9uIGlzCisgICAgICAgIC8vIG5vdCBhdmFpbGFibGUuCisg
ICAgICAgIC8vIEVHTF9CQURfRElTUExBWSBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBlcnJvci4K
KyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfRElTUExBWSk7CisgICAgfQorCisgICAgcmV0
dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworRXJyb3IgVmFsaWRhdGVDcmVhdGVEZXZpY2VB
TkdMRShFR0xpbnQgZGV2aWNlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKm5hdGl2ZV9kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpCit7CisgICAgY29uc3QgQ2xpZW50RXh0ZW5zaW9u
cyAmY2xpZW50RXh0ZW5zaW9ucyA9IERpc3BsYXk6OmdldENsaWVudEV4dGVuc2lvbnMoKTsKKyAg
ICBpZiAoIWNsaWVudEV4dGVuc2lvbnMuZGV2aWNlQ3JlYXRpb24pCisgICAgeworICAgICAgICBy
ZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJEZXZpY2UgY3JlYXRpb24gZXh0ZW5zaW9uIG5v
dCBhY3RpdmUiKTsKKyAgICB9CisKKyAgICBpZiAoYXR0cmliX2xpc3QgIT0gbnVsbHB0ciAmJiBh
dHRyaWJfbGlzdFswXSAhPSBFR0xfTk9ORSkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihF
R0xfQkFEX0FUVFJJQlVURSwgIkludmFsaWQgYXR0cmliX2xpc3QgcGFyYW1ldGVyIik7CisgICAg
fQorCisgICAgc3dpdGNoIChkZXZpY2VfdHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRUdMX0Qz
RDExX0RFVklDRV9BTkdMRToKKyAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5kZXZp
Y2VDcmVhdGlvbkQzRDExKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBF
cnJvcihFR0xfQkFEX0FUVFJJQlVURSwgIkQzRDExIGRldmljZSBjcmVhdGlvbiBleHRlbnNpb24g
bm90IGFjdGl2ZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJJ
bnZhbGlkIGRldmljZV90eXBlIHBhcmFtZXRlciIpOworICAgIH0KKworICAgIHJldHVybiBFcnJv
cihFR0xfU1VDQ0VTUyk7Cit9CisKK0Vycm9yIFZhbGlkYXRlUmVsZWFzZURldmljZUFOR0xFKERl
dmljZSAqZGV2aWNlKQoreworICAgIGNvbnN0IENsaWVudEV4dGVuc2lvbnMgJmNsaWVudEV4dGVu
c2lvbnMgPSBEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25zKCk7CisgICAgaWYgKCFjbGllbnRF
eHRlbnNpb25zLmRldmljZUNyZWF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfQUNDRVNTLCAiRGV2aWNlIGNyZWF0aW9uIGV4dGVuc2lvbiBub3QgYWN0aXZlIik7Cisg
ICAgfQorCisgICAgaWYgKGRldmljZSA9PSBFR0xfTk9fREVWSUNFX0VYVCB8fCAhRGV2aWNlOjpJ
c1ZhbGlkRGV2aWNlKGRldmljZSkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9ERVZJQ0VfRVhULCAiSW52YWxpZCBkZXZpY2UgcGFyYW1ldGVyIik7CisgICAgfQorCisgICAg
RGlzcGxheSAqb3duaW5nRGlzcGxheSA9IGRldmljZS0+Z2V0T3duaW5nRGlzcGxheSgpOworICAg
IGlmIChvd25pbmdEaXNwbGF5ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gRXJy
b3IoRUdMX0JBRF9ERVZJQ0VfRVhULCAiRGV2aWNlIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgdXNp
bmcgZWdsQ3JlYXRlRGV2aWNlIik7CisgICAgfQorCisgICAgcmV0dXJuIEVycm9yKEVHTF9TVUND
RVNTKTsKK30KKworRXJyb3IgVmFsaWRhdGVDcmVhdGVTdHJlYW1LSFIoY29uc3QgRGlzcGxheSAq
ZGlzcGxheSwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzKQoreworICAgIEVycm9yIGVy
cm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgY29uc3QgRGlzcGxh
eUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygp
OworICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9CQURfQUxMT0MsICJTdHJlYW0gZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsK
KyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmF0dHJpYnV0ZUl0ZXIgOiBhdHRyaWJ1dGVz
KQorICAgIHsKKyAgICAgICAgRUdMQXR0cmliIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZXIuZmly
c3Q7CisgICAgICAgIEVHTEF0dHJpYiB2YWx1ZSAgICAgPSBhdHRyaWJ1dGVJdGVyLnNlY29uZDsK
KworICAgICAgICBlcnJvciA9IFZhbGlkYXRlU3RyZWFtQXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFs
dWUsIGRpc3BsYXlFeHRlbnNpb25zKTsKKyAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworRXJyb3IgVmFsaWRhdGVEZXN0cm95
U3RyZWFtS0hSKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IFN0cmVhbSAqc3RyZWFtKQor
eworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKKyAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAg
IH0KKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK0Vycm9yIFZhbGlkYXRl
U3RyZWFtQXR0cmliS0hSKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgdmFsdWUpCit7CisgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN0cmVhbShkaXNw
bGF5LCBzdHJlYW0pOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgaWYgKHN0cmVhbS0+Z2V0U3RhdGUoKSA9PSBFR0xf
U1RSRUFNX1NUQVRFX0RJU0NPTk5FQ1RFRF9LSFIpCisgICAgeworICAgICAgICByZXR1cm4gRXJy
b3IoRUdMX0JBRF9TVEFURV9LSFIsICJCYWQgc3RyZWFtIHN0YXRlIik7CisgICAgfQorCisgICAg
cmV0dXJuIFZhbGlkYXRlU3RyZWFtQXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUsIGRpc3BsYXkt
PmdldEV4dGVuc2lvbnMoKSk7Cit9CisKK0Vycm9yIFZhbGlkYXRlUXVlcnlTdHJlYW1LSFIoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYXR0
cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKnZhbHVlKQorewor
ICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKKyAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0K
KworICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xfU1RSRUFN
X1NUQVRFX0tIUjoKKyAgICAgICAgY2FzZSBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUjoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9DT05TVU1FUl9BQ1FVSVJFX1RJ
TUVPVVRfVVNFQ19LSFI6CisgICAgICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMo
KS5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJDb25zdW1lciBHTFRleHR1cmUgZXh0
ZW5zaW9uIG5vdCBhY3RpdmUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklC
VVRFLCAiSW52YWxpZCBhdHRyaWJ1dGUiKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdM
X1NVQ0NFU1MpOworfQorCitFcnJvciBWYWxpZGF0ZVF1ZXJ5U3RyZWFtdTY0S0hSKGNvbnN0IERp
c3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGF0
dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICp2
YWx1ZSkKK3sKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFtKGRpc3BsYXksIHN0cmVh
bSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
RUdMX0NPTlNVTUVSX0ZSQU1FX0tIUjoKKyAgICAgICAgY2FzZSBFR0xfUFJPRFVDRVJfRlJBTUVf
S0hSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJJbnZhbGlkIGF0dHJpYnV0ZSIpOworICAg
IH0KKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK0Vycm9yIFZhbGlkYXRl
U3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEtIUihjb25zdCBEaXNwbGF5ICpkaXNwbGF5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtKQoreworICAgIEVycm9yIGVycm9yID0gVmFs
aWRhdGVEaXNwbGF5KGRpc3BsYXkpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgewor
ICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQorCisgICAgZXJyb3IgPSBWYWxpZGF0ZUNvbnRl
eHQoZGlzcGxheSwgY29udGV4dCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9u
cyAmZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYg
KCFkaXNwbGF5RXh0ZW5zaW9ucy5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIlN0cmVhbSBjb25zdW1lciBleHRlbnNp
b24gbm90IGFjdGl2ZSIpOworICAgIH0KKworICAgIGlmIChzdHJlYW0gPT0gRUdMX05PX1NUUkVB
TV9LSFIgfHwgIWRpc3BsYXktPmlzVmFsaWRTdHJlYW0oc3RyZWFtKSkKKyAgICB7CisgICAgICAg
IHJldHVybiBFcnJvcihFR0xfQkFEX1NUUkVBTV9LSFIsICJJbnZhbGlkIHN0cmVhbSIpOworICAg
IH0KKworICAgIGlmIChzdHJlYW0tPmdldFN0YXRlKCkgIT0gRUdMX1NUUkVBTV9TVEFURV9DUkVB
VEVEX0tIUikKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1NUQVRFX0tIUiwg
IkludmFsaWQgc3RyZWFtIHN0YXRlIik7CisgICAgfQorCisgICAgcmV0dXJuIEVycm9yKEVHTF9T
VUNDRVNTKTsKK30KKworRXJyb3IgVmFsaWRhdGVTdHJlYW1Db25zdW1lckFjcXVpcmVLSFIoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0pCit7CisgICAgRXJyb3IgZXJyb3IgPSBWYWxp
ZGF0ZURpc3BsYXkoZGlzcGxheSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBlcnJvciA9IFZhbGlkYXRlQ29udGV4
dChkaXNwbGF5LCBjb250ZXh0KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIGNvbnN0IERpc3BsYXlFeHRlbnNpb25z
ICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBpZiAo
IWRpc3BsYXlFeHRlbnNpb25zLnN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNTLCAiU3RyZWFtIGNvbnN1bWVyIGV4dGVuc2lv
biBub3QgYWN0aXZlIik7CisgICAgfQorCisgICAgaWYgKHN0cmVhbSA9PSBFR0xfTk9fU1RSRUFN
X0tIUiB8fCAhZGlzcGxheS0+aXNWYWxpZFN0cmVhbShzdHJlYW0pKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEVycm9yKEVHTF9CQURfU1RSRUFNX0tIUiwgIkludmFsaWQgc3RyZWFtIik7CisgICAg
fQorCisgICAgaWYgKHN0cmVhbS0+Z2V0U3RhdGUoKSAhPSBFR0xfU1RSRUFNX1NUQVRFX05FV19G
UkFNRV9BVkFJTEFCTEVfS0hSICYmCisgICAgICAgIHN0cmVhbS0+Z2V0U3RhdGUoKSAhPSBFR0xf
U1RSRUFNX1NUQVRFX09MRF9GUkFNRV9BVkFJTEFCTEVfS0hSKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9CQURfU1RBVEVfS0hSLCAiSW52YWxpZCBzdHJlYW0gc3RhdGUiKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitFcnJvciBWYWxpZGF0
ZVN0cmVhbUNvbnN1bWVyUmVsZWFzZUtIUihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW0gKnN0cmVh
bSkKK3sKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKKyAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0K
KworICAgIGVycm9yID0gVmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgfQor
CisgICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxh
eS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtQ29u
c3VtZXJHTFRleHR1cmUpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NF
U1MsICJTdHJlYW0gY29uc3VtZXIgZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsKKyAgICB9CisKKyAg
ICBpZiAoc3RyZWFtID09IEVHTF9OT19TVFJFQU1fS0hSIHx8ICFkaXNwbGF5LT5pc1ZhbGlkU3Ry
ZWFtKHN0cmVhbSkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVFJFQU1f
S0hSLCAiSW52YWxpZCBzdHJlYW0iKTsKKyAgICB9CisKKyAgICBpZiAoc3RyZWFtLT5nZXRTdGF0
ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZSQU1FX0FWQUlMQUJMRV9LSFIgJiYKKyAgICAg
ICAgc3RyZWFtLT5nZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfT0xEX0ZSQU1FX0FWQUlM
QUJMRV9LSFIpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVEFURV9LSFIs
ICJJbnZhbGlkIHN0cmVhbSBzdGF0ZSIpOworICAgIH0KKworICAgIHJldHVybiBFcnJvcihFR0xf
U1VDQ0VTUyk7Cit9CisKK0Vycm9yIFZhbGlkYXRlU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRl
cm5hbEF0dHJpYnNOVihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKKyAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAgIH0KKworICAgIGVy
cm9yID0gVmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOworICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJJ
bnZhbGlkIGNvbnRleHQiKTsKKyAgICB9CisKKyAgICBjb25zdCBEaXNwbGF5RXh0ZW5zaW9ucyAm
ZGlzcGxheUV4dGVuc2lvbnMgPSBkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYgKCFk
aXNwbGF5RXh0ZW5zaW9ucy5zdHJlYW1Db25zdW1lckdMVGV4dHVyZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBFcnJvcihFR0xfQkFEX0FDQ0VTUywgIlN0cmVhbSBjb25zdW1lciBleHRlbnNpb24g
bm90IGFjdGl2ZSIpOworICAgIH0KKworICAgIGlmIChzdHJlYW0gPT0gRUdMX05PX1NUUkVBTV9L
SFIgfHwgIWRpc3BsYXktPmlzVmFsaWRTdHJlYW0oc3RyZWFtKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBFcnJvcihFR0xfQkFEX1NUUkVBTV9LSFIsICJJbnZhbGlkIHN0cmVhbSIpOworICAgIH0K
KworICAgIGlmIChzdHJlYW0tPmdldFN0YXRlKCkgIT0gRUdMX1NUUkVBTV9TVEFURV9DUkVBVEVE
X0tIUikKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1NUQVRFX0tIUiwgIklu
dmFsaWQgc3RyZWFtIHN0YXRlIik7CisgICAgfQorCisgICAgRUdMQXR0cmliIGNvbG9yQnVmZmVy
VHlwZSA9IEVHTF9SR0JfQlVGRkVSOworICAgIEVHTEF0dHJpYiBwbGFuZUNvdW50ICAgICAgPSAt
MTsKKyAgICBFR0xBdHRyaWIgcGxhbmVbM107CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBp
KyspCisgICAgeworICAgICAgICBwbGFuZVtpXSA9IC0xOworICAgIH0KKyAgICBmb3IgKGNvbnN0
IGF1dG8gJmF0dHJpYnV0ZUl0ZXIgOiBhdHRyaWJzKQorICAgIHsKKyAgICAgICAgRUdMQXR0cmli
IGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZUl0ZXIuZmlyc3Q7CisgICAgICAgIEVHTEF0dHJpYiB2YWx1
ZSAgICAgPSBhdHRyaWJ1dGVJdGVyLnNlY29uZDsKKworICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFR0xfQ09MT1JfQlVGRkVSX1RZUEU6Cisg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IEVHTF9SR0JfQlVGRkVSIHx8IHZhbHVlICE9IEVH
TF9ZVVZfQlVGRkVSX0VYVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIkludmFsaWQgY29sb3IgYnVmZmVyIHR5
cGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29sb3JCdWZmZXJUeXBl
ID0gdmFsdWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVHTF9Z
VVZfTlVNQkVSX09GX1BMQU5FU19FWFQ6CisgICAgICAgICAgICAgICAgLy8gcGxhbmVDb3VudCA9
IC0xIGlzIGEgdGFnIGZvciB0aGUgZGVmYXVsdCBwbGFuZSBjb3VudCBzbyB0aGUgdmFsdWUgbXVz
dCBiZSBjaGVja2VkCisgICAgICAgICAgICAgICAgLy8gdG8gYmUgcG9zaXRpdmUgaGVyZSB0byBl
bnN1cmUgZnV0dXJlIGxvZ2ljIGRvZXNuJ3QgYnJlYWsgb24gaW52YWxpZCBuZWdhdGl2ZQorICAg
ICAgICAgICAgICAgIC8vIGlucHV0cworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9NQVRDSCwgIkludmFsaWQgcGxhbmUgY291bnQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcGxhbmVDb3VudCA9IHZhbHVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlID49IEVH
TF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5JVF9OViAmJgorICAgICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgPD0gRUdMX1lVVl9QTEFORTJfVEVYVFVSRV9VTklUX05WKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQUNDRVNT
LCAiSW52YWxpZCB0ZXh0dXJlIHVuaXQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBwbGFuZVthdHRyaWJ1dGUgLSBFR0xfWVVWX1BMQU5FMF9URVhUVVJFX1VO
SVRfTlZdID0gdmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xf
QkFEX0FUVFJJQlVURSwgIkludmFsaWQgYXR0cmlidXRlIik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbG9yQnVmZmVyVHlwZSA9PSBFR0xfUkdCX0JV
RkZFUikKKyAgICB7CisgICAgICAgIGlmIChwbGFuZUNvdW50ID4gMCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJQbGFuZSBjb3VudCBtdXN0IGJl
IDAgZm9yIFJHQiBidWZmZXIiKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IDM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHBsYW5lW2ldICE9IC0xKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENI
LCAiUGxhbmVzIGNhbm5vdCBiZSBzcGVjaWZpZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAocGxhbmVDb3VudCA9PSAtMSkK
KyAgICAgICAgeworICAgICAgICAgICAgcGxhbmVDb3VudCA9IDI7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHBsYW5lQ291bnQgPCAxIHx8IHBsYW5lQ291bnQgPiAzKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIkludmFsaWQgWVVWIHBsYW5lIGNv
dW50Iik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChFR0xBdHRyaWIgaSA9IDA7IGkgPCBwbGFu
ZUNvdW50OyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwbGFuZVtpXSA9PSAtMSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRD
SCwgIk5vdCBhbGwgcGxhbmVzIHNwZWNpZmllZCIpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGZvciAoRUdMQXR0cmliIGkgPSBwbGFuZUNvdW50OyBpIDwgMzsgaSsrKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAocGxhbmVbaV0gIT0gLTEpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsICJJbnZhbGlkIHBsYW5l
IHNwZWNpZmllZCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworRXJyb3IgVmFsaWRhdGVDcmVhdGVTdHJlYW1Q
cm9kdWNlckQzRFRleHR1cmVOVjEyQU5HTEUoY29uc3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0
cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKQoreworICAgIGNvbnN0IERp
c3BsYXlFeHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyA9IGRpc3BsYXktPmdldEV4dGVuc2lv
bnMoKTsKKyAgICBpZiAoIWRpc3BsYXlFeHRlbnNpb25zLnN0cmVhbVByb2R1Y2VyRDNEVGV4dHVy
ZU5WMTIpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BQ0NFU1MsICJTdHJl
YW0gcHJvZHVjZXIgZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKTsKKyAgICB9CisKKyAgICBFcnJvciBl
cnJvciA9IFZhbGlkYXRlU3RyZWFtKGRpc3BsYXksIHN0cmVhbSk7CisgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAo
IWF0dHJpYnMuaXNFbXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURf
QVRUUklCVVRFLCAiSW52YWxpZCBhdHRyaWJ1dGUiKTsKKyAgICB9CisKKyAgICBpZiAoc3RyZWFt
LT5nZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfQ09OTkVDVElOR19LSFIpCisgICAgewor
ICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVEFURV9LSFIsICJTdHJlYW0gbm90IGluIGNv
bm5lY3Rpbmcgc3RhdGUiKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1Mp
OworfQorCitFcnJvciBWYWxpZGF0ZVN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFKGNvbnN0
IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7
CisgICAgY29uc3QgRGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zID0gZGlzcGxh
eS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIGlmICghZGlzcGxheUV4dGVuc2lvbnMuc3RyZWFtUHJv
ZHVjZXJEM0RUZXh0dXJlTlYxMikKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFE
X0FDQ0VTUywgIlN0cmVhbSBwcm9kdWNlciBleHRlbnNpb24gbm90IGFjdGl2ZSIpOworICAgIH0K
KworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW0oZGlzcGxheSwgc3RyZWFtKTsKKyAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yOworICAg
IH0KKworICAgIGZvciAoYXV0byAmYXR0cmlidXRlSXRlciA6IGF0dHJpYnMpCisgICAgeworICAg
ICAgICBFR0xBdHRyaWIgYXR0cmlidXRlID0gYXR0cmlidXRlSXRlci5maXJzdDsKKyAgICAgICAg
RUdMQXR0cmliIHZhbHVlICAgICA9IGF0dHJpYnV0ZUl0ZXIuc2Vjb25kOworCisgICAgICAgIHN3
aXRjaCAoYXR0cmlidXRlKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEVHTF9EM0RfVEVY
VFVSRV9TVUJSRVNPVVJDRV9JRF9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAw
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfUEFSQU1FVEVSLCAiSW52YWxpZCBzdWJyZXNvdXJjZSBpbmRleCIpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiSW52YWxpZCBh
dHRyaWJ1dGUiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzdHJlYW0tPmdldFN0YXRl
KCkgIT0gRUdMX1NUUkVBTV9TVEFURV9FTVBUWV9LSFIgJiYKKyAgICAgICAgc3RyZWFtLT5nZXRT
dGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfTkVXX0ZSQU1FX0FWQUlMQUJMRV9LSFIgJiYKKyAg
ICAgICAgc3RyZWFtLT5nZXRTdGF0ZSgpICE9IEVHTF9TVFJFQU1fU1RBVEVfT0xEX0ZSQU1FX0FW
QUlMQUJMRV9LSFIpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVEFURV9L
SFIsICJTdHJlYW0gbm90IGZ1bGx5IGNvbmZpZ3VyZWQiKTsKKyAgICB9CisKKyAgICBpZiAodGV4
dHVyZSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFS
QU1FVEVSLCAiVGV4dHVyZSBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgfQorCisgICAgcmV0dXJu
IEVycm9yKEVHTF9TVUNDRVNTKTsKK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuaAkocmV2aXNpb24gMTk5Njgy
KQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wu
aAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0Vy
cm9yLmgiCiAKICNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgog
CiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTIzLDcgKzI0LDEwIEBACiAKIGNsYXNzIEF0dHJpYnV0ZU1h
cDsKIHN0cnVjdCBDb25maWc7CitjbGFzcyBEZXZpY2U7CiBjbGFzcyBEaXNwbGF5OworY2xhc3Mg
SW1hZ2U7CitjbGFzcyBTdHJlYW07CiBjbGFzcyBTdXJmYWNlOwogCiAvLyBPYmplY3QgdmFsaWRh
dGlvbgpAQCAtMzEsNiArMzUsNyBAQAogRXJyb3IgVmFsaWRhdGVTdXJmYWNlKGNvbnN0IERpc3Bs
YXkgKmRpc3BsYXksIFN1cmZhY2UgKnN1cmZhY2UpOwogRXJyb3IgVmFsaWRhdGVDb25maWcoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgQ29uZmlnICpjb25maWcpOwogRXJyb3IgVmFsaWRh
dGVDb250ZXh0KGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGdsOjpDb250ZXh0ICpjb250ZXh0KTsK
K0Vycm9yIFZhbGlkYXRlSW1hZ2UoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgSW1hZ2Ug
KmltYWdlKTsKIAogLy8gRW50cnkgcG9pbnQgdmFsaWRhdGlvbgogRXJyb3IgVmFsaWRhdGVDcmVh
dGVDb250ZXh0KERpc3BsYXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlndXJhdGlvbiwgZ2w6OkNv
bnRleHQgKnNoYXJlQ29udGV4dCwKQEAgLTQzLDcgKzQ4LDU5IEBACiBFcnJvciBWYWxpZGF0ZUNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKERpc3BsYXkgKmRpc3BsYXksIEVHTGVudW0gYnVm
dHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29uZmlnICpjb25maWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCYgYXR0
cmlidXRlcyk7CiAKK0Vycm9yIFZhbGlkYXRlQ3JlYXRlSW1hZ2VLSFIoY29uc3QgRGlzcGxheSAq
ZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMpOworRXJy
b3IgVmFsaWRhdGVEZXN0cm95SW1hZ2VLSFIoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3Qg
SW1hZ2UgKmltYWdlKTsKIAorRXJyb3IgVmFsaWRhdGVDcmVhdGVEZXZpY2VBTkdMRShFR0xpbnQg
ZGV2aWNlX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm5hdGl2
ZV9kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJp
YiAqYXR0cmliX2xpc3QpOworRXJyb3IgVmFsaWRhdGVSZWxlYXNlRGV2aWNlQU5HTEUoRGV2aWNl
ICpkZXZpY2UpOworCitFcnJvciBWYWxpZGF0ZUNyZWF0ZVN0cmVhbUtIUihjb25zdCBEaXNwbGF5
ICpkaXNwbGF5LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMpOworRXJyb3IgVmFsaWRh
dGVEZXN0cm95U3RyZWFtS0hSKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IFN0cmVhbSAq
c3RyZWFtKTsKK0Vycm9yIFZhbGlkYXRlU3RyZWFtQXR0cmliS0hSKGNvbnN0IERpc3BsYXkgKmRp
c3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW0gKnN0cmVh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBhdHRyaWJ1dGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgdmFsdWUpOworRXJyb3IgVmFsaWRhdGVR
dWVyeVN0cmVhbUtIUihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMZW51bSBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCAqdmFsdWUpOworRXJyb3IgVmFsaWRhdGVRdWVyeVN0cmVhbXU2NEtIUihjb25zdCBEaXNw
bGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJl
YW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBhdHRy
aWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqdmFs
dWUpOworRXJyb3IgVmFsaWRhdGVTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsS0hSKGNv
bnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0pOworRXJy
b3IgVmFsaWRhdGVTdHJlYW1Db25zdW1lckFjcXVpcmVLSFIoY29uc3QgRGlzcGxheSAqZGlzcGxh
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
ZWFtICpzdHJlYW0pOworRXJyb3IgVmFsaWRhdGVTdHJlYW1Db25zdW1lclJlbGVhc2VLSFIoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0pOworRXJyb3IgVmFsaWRhdGVTdHJlYW1Db25z
dW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFw
ICZhdHRyaWJzKTsKK0Vycm9yIFZhbGlkYXRlQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJl
TlYxMkFOR0xFKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJlYW0gKnN0cmVhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CitFcnJvciBWYWxpZGF0ZVN0cmVhbVBvc3REM0RUZXh0
dXJlTlYxMkFOR0xFKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmVhbSAqc3RyZWFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp0ZXh0dXJlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpOworCisvLyBPdGhlciB2YWxpZGF0aW9uCitFcnJvciBWYWxpZGF0ZUNv
bXBhdGlibGVDb25maWdzKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQ29uZmlnICpjb25maWcyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGUpOwogfQogCiAjZW5kaWYgLy8gTElCQU5H
TEVfVkFMSURBVElPTkVHTF9IXwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMCwyMyArMTAsOTQgQEAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxp
ZGF0aW9uRVMyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVm
ZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9JbWFnZS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1F1ZXJ5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3Jh
bS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9U
cmFuc2Zvcm1GZWVkYmFjay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIgogCiAjaW5jbHVkZSAiY29t
bW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCiBuYW1lc3Bh
Y2UgZ2wKIHsKK2NvbnN0IGNoYXIgKmdfRXhjZWVkc01heEVsZW1lbnRFcnJvck1lc3NhZ2UgPSAi
RWxlbWVudCB2YWx1ZSBleGNlZWRzIG1heGltdW0gZWxlbWVudCBpbmRleC4iOwogCituYW1lc3Bh
Y2UKK3sKK2Jvb2wgVmFsaWRhdGVEcmF3QXR0cmlicyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgcHJpbWNvdW50LCBHTGludCBtYXhWZXJ0ZXgpCit7CisgICAgY29uc3QgZ2w6OlN0
YXRlICZzdGF0ZSAgICAgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGNvbnN0IGdsOjpQcm9n
cmFtICpwcm9ncmFtID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOworCisgICAgY29uc3QgVmVydGV4QXJy
YXkgKnZhbyAgICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIGNvbnN0IGF1dG8gJnZl
cnRleEF0dHJpYnMgID0gdmFvLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgc2l6ZV90IG1h
eEVuYWJsZWRBdHRyaWIgPSB2YW8tPmdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKTsKKyAgICBmb3Ig
KHNpemVfdCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgbWF4RW5hYmxlZEF0
dHJpYjsgKythdHRyaWJ1dGVJbmRleCkKKyAgICB7CisgICAgICAgIGNvbnN0IFZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliID0gdmVydGV4QXR0cmlic1thdHRyaWJ1dGVJbmRleF07CisgICAgICAgIGlm
IChwcm9ncmFtLT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZlKGF0dHJpYnV0ZUluZGV4KSAmJiBhdHRy
aWIuZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0g
YXR0cmliLmJ1ZmZlci5nZXQoKTsKKworICAgICAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBHTGludDY0IGF0dHJpYlN0cmlkZSAgICAgPSBzdGF0aWNf
Y2FzdDxHTGludDY0PihDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAg
ICAgICAgICAgICAgIEdMaW50NjQgbWF4VmVydGV4RWxlbWVudCA9IDA7CisKKyAgICAgICAgICAg
ICAgICBpZiAoYXR0cmliLmRpdmlzb3IgPiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWF4VmVydGV4RWxlbWVudCA9CisgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxHTGludDY0PihwcmltY291bnQpIC8gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oYXR0
cmliLmRpdmlzb3IpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtYXhWZXJ0ZXhFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8R0xpbnQ2ND4obWF4VmVydGV4KTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBkcmF3aW5nIHplcm8gdmVydGljZXMsIHdlIGhhdmUg
ZW5vdWdoIGRhdGEuCisgICAgICAgICAgICAgICAgaWYgKG1heFZlcnRleEVsZW1lbnQgPiAwKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTm90ZTogTGFzdCB2ZXJ0
ZXggZWxlbWVudCBkb2VzIG5vdCB0YWtlIHRoZSBmdWxsIHN0cmlkZSEKKyAgICAgICAgICAgICAg
ICAgICAgR0xpbnQ2NCBhdHRyaWJTaXplID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMaW50NjQ+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRyaWIpKTsK
KyAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCBhdHRyaWJEYXRhU2l6ZSA9IChtYXhWZXJ0ZXhF
bGVtZW50IC0gMSkgKiBhdHRyaWJTdHJpZGUgKyBhdHRyaWJTaXplOworICAgICAgICAgICAgICAg
ICAgICBHTGludDY0IGF0dHJpYk9mZnNldCAgID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oYXR0cmli
Lm9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAzLjAuMl0gc2Vj
dGlvbiAyLjkuNCBwYWdlIDQwOgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gcmV0dXJu
IElOVkFMSURfT1BFUkFUSU9OIGlmIG91ciB2ZXJ0ZXggYXR0cmlidXRlIGRvZXMgbm90IGhhdmUK
KyAgICAgICAgICAgICAgICAgICAgLy8gZW5vdWdoIGJhY2tpbmcgZGF0YS4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGF0dHJpYkRhdGFTaXplICsgYXR0cmliT2Zmc2V0ID4gYnVmZmVyLT5nZXRT
aXplKCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJW
ZXJ0ZXggYnVmZmVyIGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0aGUgZHJhdyBjYWxsIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAo
YXR0cmliLnBvaW50ZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbm9ybWFsbHkgcmVzdWx0
IGluIGEgY3Jhc2gsCisgICAgICAgICAgICAgICAgLy8gYnV0IHdlIGNhdGNoIGl0IGFuZCByZXR1
cm4gYW4gZXJyb3IKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sICJBbiBlbmFibGVkIHZl
cnRleCBhcnJheSBoYXMgbm8gYnVmZmVyIGFuZCBubyBwb2ludGVyLiIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCiBib29sIFZh
bGlkQ2FwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBjYXApCiB7CiAgICAgc3dpdGNo
IChjYXApCkBAIC00MSwxNSArMTEyLDIxIEBACiAgICAgICBjYXNlIEdMX0JMRU5EOgogICAgICAg
Y2FzZSBHTF9ESVRIRVI6CiAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgICBjYXNlIEdMX1BS
SU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYOgogICAgICAgY2FzZSBHTF9SQVNURVJJWkVSX0RJ
U0NBUkQ6CiAgICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMp
OworCisgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUzoKKyAgICAgIGNhc2Ug
R0xfREVCVUdfT1VUUFVUOgorICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZGVidWc7CisKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiB9CiAKLWJvb2wgVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQpCitib29sIFZhbGlkVGV4dHVyZVRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKIHsKICAgICBzd2l0Y2ggKHRhcmdldCkKICAg
ICB7CkBAIC02NiwxMSArMTQzLDM3IEBACiAgICAgfQogfQogCitib29sIFZhbGlkVGV4dHVyZTJE
VGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQor
eworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
OgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworYm9vbCBWYWxpZFRleHR1cmUzRFRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
X0FSUkFZOgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
Pj0gMyk7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9Cit9CisKIC8vIFRoaXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tIFZhbGlkVGV4dHVyZVRhcmdl
dCBpbiB0aGF0IHRoZSB0YXJnZXQgbXVzdCBiZQogLy8gdXNhYmxlIGFzIHRoZSBkZXN0aW5hdGlv
biBvZiBhIDJEIG9wZXJhdGlvbi0tIHNvIGEgY3ViZSBmYWNlIGlzIHZhbGlkLCBidXQKIC8vIEdM
X1RFWFRVUkVfQ1VCRV9NQVAgaXMgbm90LgogLy8gTm90ZTogZHVwbGljYXRlIG9mIElzSW50ZXJu
YWxUZXh0dXJlVGFyZ2V0Ci1ib29sIFZhbGlkVGV4dHVyZTJERGVzdGluYXRpb25UYXJnZXQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK2Jvb2wgVmFsaWRUZXh0dXJlMkRE
ZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCkKIHsKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7CkBAIC04Miw5ICsxODUsMTgg
QEAKICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgogICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6CiAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29s
IFZhbGlkVGV4dHVyZTNERGVzdGluYXRpb25UYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgewor
ICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgogICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZ
OgotICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgotICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMTQsNyArMjI2LDcgQEAK
IAogICAgICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKICAgICAgIGNhc2UgR0xfUElYRUxf
VU5QQUNLX0JVRkZFUjoKLSAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5w
aXhlbEJ1ZmZlck9iamVjdDsKKyAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5waXhlbEJ1ZmZlck9iamVjdCB8fCBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0g
Myk7CiAKICAgICAgIGNhc2UgR0xfQ09QWV9SRUFEX0JVRkZFUjoKICAgICAgIGNhc2UgR0xfQ09Q
WV9XUklURV9CVUZGRVI6CkBAIC0xNTYsMzYgKzI2OCw1MiBAQAogICAgIH0KIH0KIAotYm9vbCBW
YWxpZE1pcExldmVsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsKQorYm9vbCBWYWxpZE1pcExldmVsKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKIHsKKyAgICBjb25zdCBhdXRvICZjYXBz
ICAgID0gY29udGV4dC0+Z2V0Q2FwcygpOwogICAgIHNpemVfdCBtYXhEaW1lbnNpb24gPSAwOwog
ICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDogICAg
ICAgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjb250ZXh0LT5nZXRDYXBzKCkubWF4MkRUZXh0
dXJlU2l6ZTsgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAg
ICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgogICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6CiAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWDoKICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Z
OgogICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CiAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9aOiBtYXhEaW1lbnNpb24gPSBjb250ZXh0LT5nZXRDYXBzKCkubWF4
Q3ViZU1hcFRleHR1cmVTaXplOyAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6ICAg
ICAgICAgICAgICAgICAgbWF4RGltZW5zaW9uID0gY29udGV4dC0+Z2V0Q2FwcygpLm1heDNEVGV4
dHVyZVNpemU7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOiAg
ICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNvbnRleHQtPmdldENhcHMoKS5tYXgyRFRleHR1cmVT
aXplOyAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aOgorICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXpl
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAgICAgICAg
IG1heERpbWVuc2lvbiA9IGNhcHMubWF4M0RUZXh0dXJlU2l6ZTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgICBtYXhEaW1lbnNpb24g
PSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiBsZXZlbCA8PSBnbDo6bG9nMihz
dGF0aWNfY2FzdDxpbnQ+KG1heERpbWVuc2lvbikpOwogfQogCi1ib29sIFZhbGlkSW1hZ2VTaXpl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLAotICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk
ZXB0aCkKK2Jvb2wgVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlKQogewog
ICAgIGlmIChsZXZlbCA8IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDAgfHwgZGVwdGggPCAw
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UICYmCisgICAgLy8gVGV4U3ViSW1hZ2UgcGFy
YW1ldGVycyBjYW4gYmUgTlBPVCB3aXRob3V0IHRleHR1cmVOUE9UIGV4dGVuc2lvbiwKKyAgICAv
LyBhcyBsb25nIGFzIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGlzIFBPVC4KKyAgICBpZiAoIWlz
U3ViSW1hZ2UgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCAmJgogICAg
ICAgICAobGV2ZWwgIT0gMCAmJiAoIWdsOjppc1BvdzIod2lkdGgpIHx8ICFnbDo6aXNQb3cyKGhl
aWdodCkgfHwgIWdsOjppc1BvdzIoZGVwdGgpKSkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTksMjAgKzMyNyw1MSBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZh
bGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorYm9vbCBDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdFJlcXVpcmVzRXhhY3RTaXplKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkK
IHsKKyAgICAvLyBMaXN0IG9mIGNvbXByZXNzZWQgZm9ybWF0IHRoYXQgcmVxdWlyZSB0aGF0IHRo
ZSB0ZXh0dXJlIHNpemUgaXMgc21hbGxlciB0aGFuIG9yIGEgbXVsdGlwbGUgb2YKKyAgICAvLyB0
aGUgY29tcHJlc3NlZCBibG9jayBzaXplLgorICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisg
ICAgeworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgorICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9M
T1NTWV9ERUNPREVfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBWYWxp
ZENvbXByZXNzZWRJbWFnZVNpemUoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit7CiAgICAgY29uc3QgZ2w6OkludGVybmFs
Rm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZv
cm1hdCk7CiAgICAgaWYgKCFmb3JtYXRJbmZvLmNvbXByZXNzZWQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHdpZHRoICA8IDAgfHwgKHN0YXRpY19jYXN0
PEdMdWludD4od2lkdGgpICA+IGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrV2lkdGggICYmIHdp
ZHRoICAlIGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrV2lkdGggIT0gMCkgfHwKLSAgICAgICAg
aGVpZ2h0IDwgMCB8fCAoc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gZm9ybWF0SW5mby5j
b21wcmVzc2VkQmxvY2tIZWlnaHQgJiYgaGVpZ2h0ICUgZm9ybWF0SW5mby5jb21wcmVzc2VkQmxv
Y2tIZWlnaHQgIT0gMCkpCisgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdFJlcXVpcmVzRXhhY3RTaXplKGludGVybmFsRm9ybWF0KSkKKyAgICB7CisgICAgICAg
IGlmICgoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiBmb3JtYXRJbmZvLmNvbXByZXNzZWRC
bG9ja1dpZHRoICYmCisgICAgICAgICAgICAgd2lkdGggJSBmb3JtYXRJbmZvLmNvbXByZXNzZWRC
bG9ja1dpZHRoICE9IDApIHx8CisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8R0x1aW50PihoZWln
aHQpID4gZm9ybWF0SW5mby5jb21wcmVzc2VkQmxvY2tIZWlnaHQgJiYKKyAgICAgICAgICAgICBo
ZWlnaHQgJSBmb3JtYXRJbmZvLmNvbXByZXNzZWRCbG9ja0hlaWdodCAhPSAwKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTIyOCwzMyArMzg3LDU3IEBACiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgog
ICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAg
IGNhc2UgR0xfVElNRV9FTEFQU0VEX0VYVDoKKyAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeTsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKLWJvb2wgVmFsaWRQcm9ncmFtKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBpZCkKK1Byb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaWQpCiB7CiAgICAgLy8gRVMzIHNwZWMgKHNlY3Rpb24gMi4xMS4xKSAtLSAi
Q29tbWFuZHMgdGhhdCBhY2NlcHQgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IG5hbWVzIHdpbGwg
Z2VuZXJhdGUgdGhlCiAgICAgLy8gZXJyb3IgSU5WQUxJRF9WQUxVRSBpZiB0aGUgcHJvdmlkZWQg
bmFtZSBpcyBub3QgdGhlIG5hbWUgb2YgZWl0aGVyIGEgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0
IGFuZAogICAgIC8vIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlkZW50
aWZpZXMgYW4gb2JqZWN0IHRoYXQgaXMgbm90IHRoZSBleHBlY3RlZCB0eXBlLiIKIAotICAgIGlm
IChjb250ZXh0LT5nZXRQcm9ncmFtKGlkKSAhPSBOVUxMKQorICAgIFByb2dyYW0gKnZhbGlkUHJv
Z3JhbSA9IGNvbnRleHQtPmdldFByb2dyYW0oaWQpOworCisgICAgaWYgKCF2YWxpZFByb2dyYW0p
CiAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldFNo
YWRlcihpZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAor
ICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXhwZWN0ZWQgYSBw
cm9ncmFtIG5hbWUsIGJ1dCBmb3VuZCBhIHNoYWRlciBuYW1lIikpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIlByb2dyYW0gbmFtZSBpcyBub3QgdmFsaWQiKSk7CisgICAg
ICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKGlkKSAhPSBOVUxM
KQorCisgICAgcmV0dXJuIHZhbGlkUHJvZ3JhbTsKK30KKworU2hhZGVyICpHZXRWYWxpZFNoYWRl
cihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQpCit7CisgICAgLy8gU2VlIFZhbGlkUHJvZ3Jh
bSBmb3Igc3BlYyBkZXRhaWxzLgorCisgICAgU2hhZGVyICp2YWxpZFNoYWRlciA9IGNvbnRleHQt
PmdldFNoYWRlcihpZCk7CisKKyAgICBpZiAoIXZhbGlkU2hhZGVyKQogICAgIHsKLSAgICAgICAg
Ly8gSUQgaXMgdGhlIHdyb25nIHR5cGUKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0UHJvZ3JhbShpZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRXhwZWN0ZWQgYSBzaGFkZXIgbmFtZSwgYnV0IGZvdW5kIGEgcHJvZ3JhbSBuYW1l
IikpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIlNoYWRlciBuYW1lIGlz
IGludmFsaWQiKSk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
Ly8gTm8gc2hhZGVyL3Byb2dyYW0gb2JqZWN0IGhhcyB0aGlzIElECi0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KKworICAgIHJldHVybiB2YWxpZFNoYWRlcjsKIH0KIAogYm9vbCBWYWxpZGF0
ZUF0dGFjaG1lbnRUYXJnZXQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBhdHRhY2htZW50
KQpAQCAtNDE1LDQ0ICs1OTgsMjMgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJv
b2wgSXNQYXJ0aWFsQmxpdChnbDo6Q29udGV4dCAqY29udGV4dCwgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqcmVhZEJ1ZmZlciwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqd3JpdGVCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gwLCBH
TGludCBzcmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgxLCBHTGludCBkc3RZ
MSkKK2Jvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKGdsOjpDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Jj
WDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gxLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFkwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RZMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpCiB7Ci0gICAgaWYgKHNyY1gwICE9IDAgfHwg
c3JjWTAgIT0gMCB8fCBkc3RYMCAhPSAwIHx8IGRzdFkwICE9IDAgfHwKLSAgICAgICAgZHN0WDEg
IT0gd3JpdGVCdWZmZXItPmdldFdpZHRoKCkgfHwgZHN0WTEgIT0gd3JpdGVCdWZmZXItPmdldEhl
aWdodCgpIHx8Ci0gICAgICAgIHNyY1gxICE9IHJlYWRCdWZmZXItPmdldFdpZHRoKCkgfHwgc3Jj
WTEgIT0gcmVhZEJ1ZmZlci0+Z2V0SGVpZ2h0KCkpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5pc1NjaXNzb3JUZXN0
RW5hYmxlZCgpKQotICAgIHsKLSAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzY2lzc29yID0gY29u
dGV4dC0+Z2V0U3RhdGUoKS5nZXRTY2lzc29yKCk7Ci0KLSAgICAgICAgcmV0dXJuIHNjaXNzb3Iu
eCA+IDAgfHwgc2Npc3Nvci55ID4gMCB8fAotICAgICAgICAgICAgICAgc2Npc3Nvci53aWR0aCA8
IHdyaXRlQnVmZmVyLT5nZXRXaWR0aCgpIHx8Ci0gICAgICAgICAgICAgICBzY2lzc29yLmhlaWdo
dCA8IHdyaXRlQnVmZmVyLT5nZXRIZWlnaHQoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMaW50IHNyY1gwLCBHTGludCBz
cmNZMCwgR0xpbnQgc3JjWDEsIEdMaW50IHNyY1kxLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xp
bnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmaWx0ZXIsIGJvb2wgZnJvbUFuZ2xlRXh0ZW5zaW9uKQotewogICAg
IHN3aXRjaCAoZmlsdGVyKQogICAgIHsKICAgICAgIGNhc2UgR0xfTkVBUkVTVDoKICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEdMX0xJTkVBUjoKLSAgICAgICAgaWYgKGZyb21BbmdsZUV4dGVu
c2lvbikKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKQEAgLTQ3MiwxMyArNjM0LDYgQEAKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChmcm9tQW5nbGVFeHRlbnNpb24gJiYg
KHNyY1gxIC0gc3JjWDAgIT0gZHN0WDEgLSBkc3RYMCB8fCBzcmNZMSAtIHNyY1kwICE9IGRzdFkx
IC0gZHN0WTApKQotICAgIHsKLSAgICAgICAgRVJSKCJTY2FsaW5nIGFuZCBmbGlwcGluZyBpbiBC
bGl0RnJhbWVidWZmZXJBTkdMRSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24u
Iik7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICAvLyBFUzMuMCBzcGVj
LCBzZWN0aW9uIDQuMy4yIHN0YXRlcyB0aGF0IGxpbmVhciBmaWx0ZXJpbmcgaXMgb25seSBhdmFp
bGFibGUgZm9yIHRoZQogICAgIC8vIGNvbG9yIGJ1ZmZlciwgbGVhdmluZyBvbmx5IG5lYXJlc3Qg
YmVpbmcgdW5maWx0ZXJlZCBmcm9tIGFib3ZlCiAgICAgaWYgKChtYXNrICYgfkdMX0NPTE9SX0JV
RkZFUl9CSVQpICE9IDAgJiYgZmlsdGVyICE9IEdMX05FQVJFU1QpCkBAIC00ODksMTEgKzY0NCw2
IEBACiAKICAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKS0+
aWQoKSA9PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5pZCgpKQog
ICAgIHsKLSAgICAgICAgaWYgKGZyb21BbmdsZUV4dGVuc2lvbikKLSAgICAgICAgewotICAgICAg
ICAgICAgRVJSKCJCbGl0cyB3aXRoIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZnJh
bWVidWZmZXIgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyAiCi0gICAgICAgICAgICAgICAgImlt
cGxlbWVudGF0aW9uLiIpOwotICAgICAgICB9CiAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC01MzEsMzcgKzY4MSw2NiBAQAogICAgIHsKICAgICAgICAgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAqcmVhZENvbG9yQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRS
ZWFkQ29sb3JidWZmZXIoKTsKICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZHJhd0NvbG9yQnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVy
KCk7CisgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMgICAgICAgICAgICAgICAg
ICAgICA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKIAogICAgICAgICBpZiAocmVhZENvbG9y
QnVmZmVyICYmIGRyYXdDb2xvckJ1ZmZlcikKICAgICAgICAgewogICAgICAgICAgICAgR0xlbnVt
IHJlYWRJbnRlcm5hbEZvcm1hdCA9IHJlYWRDb2xvckJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQo
KTsKICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZyZWFkRm9ybWF0SW5mbyA9IEdl
dEludGVybmFsRm9ybWF0SW5mbyhyZWFkSW50ZXJuYWxGb3JtYXQpOwogCi0gICAgICAgICAgICBm
b3IgKEdMdWludCBpID0gMDsgaSA8IGNvbnRleHQtPmdldENhcHMoKS5tYXhDb2xvckF0dGFjaG1l
bnRzOyBpKyspCisgICAgICAgICAgICBmb3IgKHNpemVfdCBkcmF3YnVmZmVySWR4ID0gMDsKKyAg
ICAgICAgICAgICAgICAgZHJhd2J1ZmZlcklkeCA8IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0RHJhd2J1
ZmZlclN0YXRlQ291bnQoKTsgKytkcmF3YnVmZmVySWR4KQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGlmIChkcmF3RnJhbWVidWZmZXItPmlzRW5hYmxlZENvbG9yQXR0YWNobWVudChp
KSkKKyAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1l
bnQgPQorICAgICAgICAgICAgICAgICAgICBkcmF3RnJhbWVidWZmZXItPmdldERyYXdCdWZmZXIo
ZHJhd2J1ZmZlcklkeCk7CisgICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJhd0ludGVybmFsRm9ybWF0
ID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcihpKS0+Z2V0SW50ZXJuYWxGb3JtYXQo
KTsKKyAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRyYXdJbnRlcm5hbEZvcm1hdCAgICAgICAg
ICAgID0gYXR0YWNobWVudC0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmRyYXdGb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKGRyYXdJbnRlcm5hbEZvcm1hdCk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gVGhl
IEdMIEVTIDMuMC4yIHNwZWMgKHBnIDE5Mykgc3RhdGVzIHRoYXQ6CiAgICAgICAgICAgICAgICAg
ICAgIC8vIDEpIElmIHRoZSByZWFkIGJ1ZmZlciBpcyBmaXhlZCBwb2ludCBmb3JtYXQsIHRoZSBk
cmF3IGJ1ZmZlciBtdXN0IGJlIGFzIHdlbGwKICAgICAgICAgICAgICAgICAgICAgLy8gMikgSWYg
dGhlIHJlYWQgYnVmZmVyIGlzIGFuIHVuc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0aGUgZHJhdyBi
dWZmZXIgbXVzdCBiZSBhcyB3ZWxsCiAgICAgICAgICAgICAgICAgICAgIC8vIDMpIElmIHRoZSBy
ZWFkIGJ1ZmZlciBpcyBhIHNpZ25lZCBpbnRlZ2VyIGZvcm1hdCwgdGhlIGRyYXcgYnVmZmVyIG11
c3QgYmUgYXMgd2VsbAotICAgICAgICAgICAgICAgICAgICBpZiAoIChyZWFkRm9ybWF0SW5mby5j
b21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwgcmVhZEZvcm1hdEluZm8u
Y29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFMSVpFRCkgJiYKLSAgICAgICAgICAgICAg
ICAgICAgICAgICEoZHJhd0Zvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9O
T1JNQUxJWkVEIHx8IGRyYXdGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05P
Uk1BTElaRUQpKQorICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2VzIHdpdGggRVhUX2NvbG9y
X2J1ZmZlcl9mbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAxKSBpcyBjaGFuZ2Vk
IHRvIGZpeGVkIHBvaW50IE9SIGZsb2F0aW5nIHBvaW50CisgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSByZWFkQ29tcG9uZW50VHlwZSA9IHJlYWRGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBkcmF3Q29tcG9uZW50VHlwZSA9IGRyYXdGb3JtYXRJ
bmZvLmNvbXBvbmVudFR5cGU7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZEZpeGVkUG9p
bnQgPSAocmVhZENvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRDb21wb25lbnRUeXBl
ID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3
Rml4ZWRQb2ludCA9IChkcmF3Q29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0NvbXBv
bmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1BTElaRUQpOworCisgICAgICAgICAgICAgICAgICAg
IGlmIChleHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQpCiAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlYWRGaXhl
ZE9yRmxvYXQgPSAocmVhZEZpeGVkUG9pbnQgfHwgcmVhZENvbXBvbmVudFR5cGUgPT0gR0xfRkxP
QVQpOworICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3Rml4ZWRPckZsb2F0ID0gKGRy
YXdGaXhlZFBvaW50IHx8IGRyYXdDb21wb25lbnRUeXBlID09IEdMX0ZMT0FUKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlYWRGaXhlZE9yRmxvYXQgIT0gZHJhd0ZpeGVkT3JGbG9h
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWYgdGhl
IHJlYWQgYnVmZmVyIGNvbnRhaW5zIGZpeGVkLXBvaW50IG9yICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXRpbmctcG9pbnQgdmFs
dWVzLCB0aGUgZHJhdyBidWZmZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGFzIHdlbGwuIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWFkRml4
ZWRQb2ludCAhPSBkcmF3Rml4ZWRQb2ludCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiSWYgdGhlIHJlYWQgYnVmZmVyIGNvbnRhaW5zIGZpeGVkLXBvaW50ICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMsIHRoZSBk
cmF3IGJ1ZmZlciBtdXN0IGFzIHdlbGwuIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHJlYWRGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UICYmIGRy
YXdGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgIT0gR0xfVU5TSUdORURfSU5UKQorICAgICAgICAg
ICAgICAgICAgICBpZiAocmVhZENvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UICYmCisg
ICAgICAgICAgICAgICAgICAgICAgICBkcmF3Q29tcG9uZW50VHlwZSAhPSBHTF9VTlNJR05FRF9J
TlQpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgICAgICBpZiAocmVhZEZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9J
TlQgJiYgZHJhd0Zvcm1hdEluZm8uY29tcG9uZW50VHlwZSAhPSBHTF9JTlQpCisgICAgICAgICAg
ICAgICAgICAgIGlmIChyZWFkQ29tcG9uZW50VHlwZSA9PSBHTF9JTlQgJiYgZHJhd0NvbXBvbmVu
dFR5cGUgIT0gR0xfSU5UKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTgwLDUzICs3NTks
NiBAQAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoZnJvbUFuZ2xlRXh0ZW5zaW9uKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZENvbG9y
QXR0YWNobWVudCA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFyZWFkQ29sb3JBdHRhY2htZW50IHx8Ci0gICAgICAgICAgICAgICAg
ICAgICghKHJlYWRDb2xvckF0dGFjaG1lbnQtPnR5cGUoKSA9PSBHTF9URVhUVVJFICYmIHJlYWRD
b2xvckF0dGFjaG1lbnQtPmdldFRleHR1cmVJbWFnZUluZGV4KCkudHlwZSA9PSBHTF9URVhUVVJF
XzJEKSAmJgotICAgICAgICAgICAgICAgICAgICByZWFkQ29sb3JBdHRhY2htZW50LT50eXBlKCkg
IT0gR0xfUkVOREVSQlVGRkVSICYmCi0gICAgICAgICAgICAgICAgICAgIHJlYWRDb2xvckF0dGFj
aG1lbnQtPnR5cGUoKSAhPSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUKSkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKEdMdWludCBjb2xvckF0dGFj
aG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBjb250ZXh0LT5nZXRDYXBzKCkubWF4Q29sb3JB
dHRhY2htZW50czsgKytjb2xvckF0dGFjaG1lbnQpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyLT5pc0VuYWJsZWRDb2xvckF0dGFjaG1l
bnQoY29sb3JBdHRhY2htZW50KSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gZHJh
d0ZyYW1lYnVmZmVyLT5nZXRDb2xvcmJ1ZmZlcihjb2xvckF0dGFjaG1lbnQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGF0dGFjaG1lbnQpOwotCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIShhdHRhY2htZW50LT50eXBlKCkgPT0gR0xfVEVYVFVSRSAmJiBhdHRhY2htZW50
LT5nZXRUZXh0dXJlSW1hZ2VJbmRleCgpLnR5cGUgPT0gR0xfVEVYVFVSRV8yRCkgJiYKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT50eXBlKCkgIT0gR0xfUkVOREVSQlVG
RkVSICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+dHlwZSgpICE9
IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFJldHVybiBhbiBlcnJvciBpZiB0aGUgZGVzdGluYXRpb24gZm9ybWF0cyBkbyBub3QgbWF0
Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50LT5nZXRJbnRlcm5hbEZv
cm1hdCgpICE9IHJlYWRDb2xvckJ1ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IGludCByZWFkU2FtcGxlcyA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5n
ZXREYXRhKCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKHJlYWRTYW1wbGVzICE9IDAgJiYgSXNQ
YXJ0aWFsQmxpdChjb250ZXh0LCByZWFkQ29sb3JCdWZmZXIsIGRyYXdDb2xvckJ1ZmZlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1gw
LCBzcmNZMCwgc3JjWDEsIHNyY1kxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEpKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
IApAQCAtNjUyLDIzICs3ODQsNiBAQAogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYg
KGZyb21BbmdsZUV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChJc1BhcnRpYWxCbGl0KGNvbnRleHQsIHJlYWRCdWZmZXIsIGRyYXdCdWZmZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1gwLCBzcmNZMCwgc3JjWDEs
IHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSkpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEVSUigiT25seSB3aG9sZS1idWZmZXIgZGVwdGgg
YW5kIHN0ZW5jaWwgYmxpdHMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsgLy8gb25seSB3aG9sZS1idWZmZXIgY29waWVzIGFyZSBwZXJt
aXR0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkQnVmZmVyLT5nZXRTYW1w
bGVzKCkgIT0gMCB8fCBkcmF3QnVmZmVyLT5nZXRTYW1wbGVzKCkgIT0gMCkKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTg5OCwxMCArMTAxMywyMiBAQAogICAg
IH0KIH0KIAotYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNQYXJhbWV0ZXJzKGdsOjpDb250ZXh0ICpj
b250ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xzaXplaSAqYnVmU2l6ZSwgR0x2b2lkICpwaXhlbHMpCitib29sIFZhbGlkYXRlUmVh
ZFBpeGVscyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQg
KnBpeGVscykKIHsKLSAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+
Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBpZiAod2lkdGggPCAwIHx8IGhl
aWdodCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFLCAid2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIHBvc2l0aXZlIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBBU1NFUlQo
ZnJhbWVidWZmZXIpOwogCiAgICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0
LT5nZXREYXRhKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQpAQCAtOTM4LDM1ICsxMDY1
LDc3IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpCit7Cisg
ICAgaWYgKGJ1ZlNpemUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJl
ciIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIEdMZW51bSBzaXplZElu
dGVybmFsRm9ybWF0ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmb3JtYXQsIHR5cGUpOwogICAg
IGNvbnN0IEludGVybmFsRm9ybWF0ICZzaXplZEZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1h
dEluZm8oc2l6ZWRJbnRlcm5hbEZvcm1hdCk7CiAKLSAgICBHTHNpemVpIG91dHB1dFBpdGNoID0g
c2l6ZWRGb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRjaCh0eXBlLCB3aWR0aCwgY29udGV4dC0+Z2V0
U3RhdGUoKS5nZXRQYWNrQWxpZ25tZW50KCksIDApOworICAgIEdMc2l6ZWkgb3V0cHV0UGl0Y2gg
PQorICAgICAgICBzaXplZEZvcm1hdEluZm8uY29tcHV0ZVJvd1BpdGNoKHR5cGUsIHdpZHRoLCBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldFBhY2tBbGlnbm1lbnQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFBhY2tSb3dMZW5n
dGgoKSk7CiAgICAgLy8gc2l6ZWQgcXVlcnkgc2FuaXR5IGNoZWNrCi0gICAgaWYgKGJ1ZlNpemUp
CisgICAgaW50IHJlcXVpcmVkU2l6ZSA9IG91dHB1dFBpdGNoICogaGVpZ2h0OworICAgIGlmIChy
ZXF1aXJlZFNpemUgPiBidWZTaXplKQogICAgIHsKLSAgICAgICAgaW50IHJlcXVpcmVkU2l6ZSA9
IG91dHB1dFBpdGNoICogaGVpZ2h0OwotICAgICAgICBpZiAocmVxdWlyZWRTaXplID4gKmJ1ZlNp
emUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBWYWxpZGF0ZVJlYWRQaXhlbHMoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogCi1ib29sIFZhbGlkYXRlQmVnaW5RdWVyeShn
bDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKQorYm9vbCBWYWxp
ZGF0ZUdlblF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbikKIHsKKyAg
ICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYK
KyAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIlF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4p
OworfQorCitib29sIFZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVChnbDo6Q29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm9jY2x1
c2lvblF1ZXJ5Qm9vbGVhbiAmJgorICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRp
c2pvaW50VGltZXJRdWVyeSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgZXh0ZW5zaW9uIG5vdCBlbmFibGVkIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlR2Vu
T3JEZWxldGUoY29udGV4dCwgbik7Cit9CisKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5QmFzZShn
bDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKQorewogICAgIGlm
ICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0gICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHF1ZXJ5IHRhcmdl
dCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChpZCA9PSAwKQog
ICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJRdWVyeSBpZCBpcyAwIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC05ODUsOSArMTE1NCwxMiBAQAogICAgIC8vICAgIGIpIFRoZXJlIGFyZSBubyBhY3Rp
dmUgcXVlcmllcyBmb3IgdGhlIHJlcXVlc3RlZCB0YXJnZXQgKGFuZCBpbiB0aGUgY2FzZQogICAg
IC8vICAgICAgIG9mIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQgYW5kIEdMX0FOWV9TQU1QTEVT
X1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULAogICAgIC8vICAgICAgIG5vIHF1ZXJ5IG1heSBiZSBh
Y3RpdmUgZm9yIGVpdGhlciBpZiBnbEJlZ2luUXVlcnkgdGFyZ2V0cyBlaXRoZXIuCisKKyAgICAv
LyBUT0RPKGV3ZWxsKTogSSB0aGluayB0aGlzIG5lZWRzIHRvIGJlIGNoYW5nZWQgZm9yIHRpbWVy
IGFuZCBvY2NsdXNpb24gcXVlcmllcyB0byB3b3JrIGF0IHRoZQorICAgIC8vIHNhbWUgdGltZQog
ICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzUXVlcnlBY3RpdmUoKSkKICAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
T3RoZXIgcXVlcnkgaXMgYWN0aXZlIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CkBAIC05OTYsNDIgKzExNjgsMjE2IEBACiAgICAgLy8gY2hlY2sgdGhhdCBuYW1lIHdhcyBvYnRh
aW5lZCB3aXRoIGdsR2VuUXVlcmllcwogICAgIGlmICghcXVlcnlPYmplY3QpCiAgICAgewotICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkludmFsaWQgcXVlcnkgaWQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICAvLyBjaGVjayBmb3IgdHlwZSBtaXNtYXRjaAogICAgIGlmIChxdWVyeU9iamVjdC0+Z2V0VHlw
ZSgpICE9IHRhcmdldCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiUXVlcnkgdHlwZSBkb2VzIG5vdCBtYXRjaCB0YXJn
ZXQiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5KGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0KQorYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlFWFQoZ2w6OkNvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMdWludCBpZCkKIHsKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKKyAgICAgICAgIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGV4dGVuc2lvbiBu
b3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biBWYWxpZGF0ZUJlZ2luUXVlcnlCYXNlKGNvbnRleHQsIHRhcmdldCwgaWQpOworfQorCitib29s
IFZhbGlkYXRlRW5kUXVlcnlCYXNlKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
KQorewogICAgIGlmICghVmFsaWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSkKICAgICB7Ci0g
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IHF1ZXJ5IHRhcmdldCIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGNv
bnN0IFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QWN0aXZlUXVl
cnkodGFyZ2V0KTsKIAotICAgIGlmIChxdWVyeU9iamVjdCA9PSBOVUxMKQorICAgIGlmIChxdWVy
eU9iamVjdCA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJRdWVyeSB0YXJnZXQgbm90IGFjdGl2ZSIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgYm9vbCBWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKGdsOjpDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0VW5pZm9ybVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBMaW5rZWRVbmlmb3Jt
ICoqdW5pZm9ybU91dCkKK2Jvb2wgVmFsaWRhdGVFbmRRdWVyeUVYVChnbDo6Q29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCkKIHsKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5vY2NsdXNpb25RdWVyeUJvb2xlYW4gJiYKKyAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5kaXNqb2ludFRpbWVyUXVlcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5h
YmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxp
ZGF0ZUVuZFF1ZXJ5QmFzZShjb250ZXh0LCB0YXJnZXQpOworfQorCitib29sIFZhbGlkYXRlUXVl
cnlDb3VudGVyRVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHRhcmdldCkK
K3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkRpc2pvaW50IHRpbWVyIHF1ZXJ5IG5vdCBlbmFibGVkIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHRhcmdldCAhPSBHTF9USU1FU1RBTVBfRVhU
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiSW52YWxpZCBxdWVyeSB0YXJnZXQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCwgdHJ1
ZSwgdGFyZ2V0KTsKKyAgICBpZiAocXVlcnlPYmplY3QgPT0gbnVsbHB0cikKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW52
YWxpZCBxdWVyeSBpZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
IChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzUXVlcnlBY3RpdmUocXVlcnlPYmplY3QpKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJRdWVyeSBpcyBhY3RpdmUiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSkKK3sKKyAgICBpZiAoIVZhbGlk
UXVlcnlUeXBlKGNvbnRleHQsIHRhcmdldCkgJiYgdGFyZ2V0ICE9IEdMX1RJTUVTVEFNUF9FWFQp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIHF1ZXJ5IHR5cGUiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1FV
RVJZX0VYVDoKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVElNRVNUQU1QX0VYVCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAg
ICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQ2Fubm90IHVzZSBjdXJyZW50
IHF1ZXJ5IGZvciB0aW1lc3RhbXAiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUVVFUllf
Q09VTlRFUl9CSVRTX0VYVDoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmRpc2pvaW50VGltZXJRdWVyeSB8fAorICAgICAgICAgICAgICAgICh0YXJnZXQgIT0gR0xf
VElNRVNUQU1QX0VYVCAmJiB0YXJnZXQgIT0gR0xfVElNRV9FTEFQU0VEX0VYVCkpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiSW52YWxpZCBwbmFtZSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IkludmFsaWQgcG5hbWUiKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2RVhUKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sK
KyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4g
JiYKKyAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIlF1ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5aXZCYXNlKGNvbnRl
eHQsIHRhcmdldCwgcG5hbWUpOworfQorCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1
ZUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5hbWUpCit7CisgICAg
UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+Z2V0UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05F
KTsKKworICAgIGlmICghcXVlcnlPYmplY3QpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGRvZXMgbm90IGV4aXN0
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGNvbnRleHQtPmdl
dFN0YXRlKCkuaXNRdWVyeUFjdGl2ZShxdWVyeU9iamVjdCkpCisgICAgeworICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1ZXJ5IGN1cnJl
bnRseSBhY3RpdmUiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0
Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRfRVhUOgorICAg
ICAgICBjYXNlIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWUgZW51bSIpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBW
YWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aXZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJUaW1lciBxdWVyeSBleHRlbnNp
b24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lKTsK
K30KKworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWl2RVhUKENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnkgJiYKKyAgICAgICAgIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5vY2NsdXNpb25RdWVyeUJvb2xlYW4pCisgICAgeworICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlF1
ZXJ5IGV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBp
ZCwgcG5hbWUpOworfQorCitib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RpNjR2RVhUKENvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpCit7
CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlzam9pbnRUaW1lclF1ZXJ5KQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJUaW1lciBxdWVyeSBleHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1
ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2Jq
ZWN0dWk2NHZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdM
dWludDY0ICpwYXJhbXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlz
am9pbnRUaW1lclF1ZXJ5KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJUaW1lciBxdWVyeSBleHRlbnNpb24gbm90IGVuYWJs
ZWQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRl
R2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoY29udGV4dCwgaWQsIHBuYW1lKTsKK30KKworc3RhdGlj
IGJvb2wgVmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldFVuaWZvcm1U
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGlua2VkVW5pZm9y
bSAqKnVuaWZvcm1PdXQpCit7CiAgICAgaWYgKGNvdW50IDwgMCkKICAgICB7CiAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKQEAgLTEwNTcsMTYg
KzE0MDMsMTYgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIExpbmtlZFVu
aWZvcm0gKnVuaWZvcm0gPSBwcm9ncmFtLT5nZXRVbmlmb3JtQnlMb2NhdGlvbihsb2NhdGlvbik7
CisgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IHByb2dyYW0tPmdldFVuaWZvcm1C
eUxvY2F0aW9uKGxvY2F0aW9uKTsKIAogICAgIC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJy
YXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgotICAgIGlm
ICh1bmlmb3JtLT5lbGVtZW50Q291bnQoKSA9PSAxICYmIGNvdW50ID4gMSkKKyAgICBpZiAoIXVu
aWZvcm0uaXNBcnJheSgpICYmIGNvdW50ID4gMSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICAqdW5pZm9ybU91dCA9IHVuaWZvcm07CisgICAgKnVuaWZvcm1P
dXQgPSAmdW5pZm9ybTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTA3OSw3ICsxNDI1LDcg
QEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIExpbmtlZFVuaWZvcm0gKnVu
aWZvcm0gPSBOVUxMOworICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBudWxscHRy
OwogICAgIGlmICghVmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZShjb250ZXh0LCB1bmlmb3JtVHlw
ZSwgbG9jYXRpb24sIGNvdW50LCAmdW5pZm9ybSkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMTE0LDcgKzE0NjAsNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgTGlua2VkVW5pZm9ybSAqdW5pZm9ybSA9IE5VTEw7CisgICAgY29uc3QgTGlua2VkVW5p
Zm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7CiAgICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm1Db21tb25C
YXNlKGNvbnRleHQsIG1hdHJpeFR5cGUsIGxvY2F0aW9uLCBjb3VudCwgJnVuaWZvcm0pKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1NiwxMiArMTUwMiwxNSBAQAogICAgICAg
Y2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6CiAgICAgICBjYXNlIEdMX1RFWFRVUkVf
QklORElOR18zRDoKICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOgotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRBY3RpdmVTYW1wbGVyKCkgPj0gY2Fwcy5t
YXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBH
TF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTOgorICAgICAgICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwpCisgICAgICAgICAgewor
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIk5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwgZXh0
ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgfQorICAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEdMX0lNUExFTUVOVEFUSU9O
X0NPTE9SX1JFQURfVFlQRToKICAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVB
RF9GT1JNQVQ6CkBAIC0xMTk2LDE3ICsxNTQ1LDIxIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShnbDo6Q29udGV4dCogY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
Ym9vbCBpc1N1YkltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xlbnVtICp0ZXh0dXJlRm9ybWF0
T3V0KQorYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgaXNTdWJJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0ZXh0dXJl
Rm9ybWF0T3V0KQogewotCi0gICAgaWYgKCFWYWxpZFRleHR1cmUyRERlc3RpbmF0aW9uVGFyZ2V0
KGNvbnRleHQsIHRhcmdldCkpCi0gICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQog
ICAgIGlmIChsZXZlbCA8IDAgfHwgeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAgfHwgem9mZnNl
dCA8IDAgfHwgd2lkdGggPCAwIHx8IGhlaWdodCA8IDApCiAgICAgewogICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CkBAIC0xMjMxLDE0ICsxNTg0
LDE1IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIo
KTsKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0
U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBpZiAoZnJhbWVidWZmZXItPmNoZWNr
U3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCiAg
ICAgewogICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
aWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCktPmlkKCkgIT0gMCAm
JiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5nZXREYXRhKCkpICE9IDApCisgICAg
Y29uc3QgYXV0byAmc3RhdGUgPSBjb250ZXh0LT5nZXRTdGF0ZSgpOworICAgIGlmIChzdGF0ZS5n
ZXRSZWFkRnJhbWVidWZmZXIoKS0+aWQoKSAhPSAwICYmIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVz
KGNvbnRleHQtPmdldERhdGEoKSkgIT0gMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTEyNzUsMTQgKzE2MjksMTUgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZShJ
c0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFy
Z2V0KTsKKyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIHN0YXRlLmdldFRhcmdl
dFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJF
X01BUCA6IHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgIHsKICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpICYmICFp
c1N1YkltYWdlKQorICAgIGlmICh0ZXh0dXJlLT5nZXRJbW11dGFibGVGb3JtYXQoKSAmJiAhaXNT
dWJJbWFnZSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMzgsNyArMTY5
MywxMCBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBWYWxpZGF0ZURyYXdC
YXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTHNpemVp
IG1heFZlcnRleCwgR0xzaXplaSBwcmltY291bnQpCitzdGF0aWMgYm9vbCBWYWxpZGF0ZURyYXdC
YXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCiB7
CiAgICAgc3dpdGNoIChtb2RlKQogICAgIHsKQEAgLTEzNzAsMTcgKzE3MjgsMjcgQEAKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0
ZSAmZGVwdGhTdGVuY2lsU3RhdGUgPSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOwotICAg
IGlmIChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICE9IGRlcHRoU3RlbmNpbFN0
YXRlLnN0ZW5jaWxCYWNrV3JpdGVtYXNrIHx8Ci0gICAgICAgIHN0YXRlLmdldFN0ZW5jaWxSZWYo
KSAhPSBzdGF0ZS5nZXRTdGVuY2lsQmFja1JlZigpIHx8Ci0gICAgICAgIGRlcHRoU3RlbmNpbFN0
YXRlLnN0ZW5jaWxNYXNrICE9IGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzaykKKyAg
ICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5ub1NlcGFyYXRlU3RlbmNpbFJlZnNBbmRN
YXNrcykKICAgICB7Ci0gICAgICAgIC8vIE5vdGU6IHRoZXNlIHNlcGFyYXRlIHZhbHVlcyBhcmUg
bm90IHN1cHBvcnRlZCBpbiBXZWJHTCwgZHVlIHRvIEQzRCdzIGxpbWl0YXRpb25zLgotICAgICAg
ICAvLyBTZWUgU2VjdGlvbiA2LjEwIG9mIHRoZSBXZWJHTCAxLjAgc3BlYwotICAgICAgICBFUlIo
IlRoaXMgQU5HTEUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXBhcmF0ZSBmcm9u
dC9iYWNrIHN0ZW5jaWwgIgotICAgICAgICAgICAgIndyaXRlbWFza3MsIHJlZmVyZW5jZSB2YWx1
ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMuIik7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyICAgICAgICAgICAgID0gY29u
dGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICAgICAgY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpzdGVuY2lsQnVmZmVyID0gZnJhbWVidWZmZXItPmdldFN0ZW5j
aWxidWZmZXIoKTsKKyAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzICAgICAgICAgICAgICAgICAg
ICAgICAgID0gc3RlbmNpbEJ1ZmZlciA/IHN0ZW5jaWxCdWZmZXItPmdldFN0ZW5jaWxTaXplKCkg
OiAwOworICAgICAgICBHTHVpbnQgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2sgICAgICAgICAg
PSAoMSA8PCBzdGVuY2lsQml0cykgLSAxOworICAgICAgICBjb25zdCBEZXB0aFN0ZW5jaWxTdGF0
ZSAmZGVwdGhTdGVuY2lsU3RhdGUgPSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworICAg
ICAgICBpZiAoKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgJiBtaW5pbXVtUmVx
dWlyZWRTdGVuY2lsTWFzaykgIT0KKyAgICAgICAgICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUu
c3RlbmNpbEJhY2tXcml0ZW1hc2sgJiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgfHwKKyAg
ICAgICAgICAgIHN0YXRlLmdldFN0ZW5jaWxSZWYoKSAhPSBzdGF0ZS5nZXRTdGVuY2lsQmFja1Jl
ZigpIHx8CisgICAgICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sgJiBtaW5p
bXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgIT0KKyAgICAgICAgICAgICAgICAoZGVwdGhTdGVuY2ls
U3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2spKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBOb3RlOiB0aGVzZSBzZXBhcmF0ZSB2YWx1ZXMgYXJlIG5v
dCBzdXBwb3J0ZWQgaW4gV2ViR0wsIGR1ZSB0byBEM0QncyBsaW1pdGF0aW9ucy4gU2VlCisgICAg
ICAgICAgICAvLyBTZWN0aW9uIDYuMTAgb2YgdGhlIFdlYkdMIDEuMCBzcGVjCisgICAgICAgICAg
ICBFUlIoCisgICAgICAgICAgICAgICAgIlRoaXMgQU5HTEUgaW1wbGVtZW50YXRpb24gZG9lcyBu
b3Qgc3VwcG9ydCBzZXBhcmF0ZSBmcm9udC9iYWNrIHN0ZW5jaWwgIgorICAgICAgICAgICAgICAg
ICJ3cml0ZW1hc2tzLCByZWZlcmVuY2UgdmFsdWVzLCBvciBzdGVuY2lsIG1hc2sgdmFsdWVzLiIp
OworICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZmJvID0gc3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVy
KCk7CkBAIC0xNDAzLDc3ICsxNzcxLDI5IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICAvLyBCdWZmZXIgdmFsaWRhdGlvbnMKLSAgICBjb25zdCBWZXJ0ZXhBcnJheSAqdmFv
ID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKLSAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBdHRyaWJz
ID0gdmFvLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7Ci0gICAgY29uc3QgaW50ICpzZW1hbnRpY0lu
ZGV4ZXMgPSBwcm9ncmFtLT5nZXRTZW1hbnRpY0luZGV4ZXMoKTsKLSAgICB1bnNpZ25lZCBpbnQg
bWF4RW5hYmxlZEF0dHJpYiA9IHZhby0+Z2V0TWF4RW5hYmxlZEF0dHJpYnV0ZSgpOwotICAgIGZv
ciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBtYXhFbmFibGVk
QXR0cmliOyArK2F0dHJpYnV0ZUluZGV4KQotICAgIHsKLSAgICAgICAgY29uc3QgVmVydGV4QXR0
cmlidXRlICZhdHRyaWIgPSB2ZXJ0ZXhBdHRyaWJzW2F0dHJpYnV0ZUluZGV4XTsKLSAgICAgICAg
Ym9vbCBhdHRyaWJBY3RpdmUgPSAoc2VtYW50aWNJbmRleGVzW2F0dHJpYnV0ZUluZGV4XSAhPSAt
MSk7Ci0gICAgICAgIGlmIChhdHRyaWJBY3RpdmUgJiYgYXR0cmliLmVuYWJsZWQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7
Ci0KLSAgICAgICAgICAgIGlmIChidWZmZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgR0xpbnQ2NCBhdHRyaWJTdHJpZGUgPSBzdGF0aWNfY2FzdDxHTGludDY0PihDb21wdXRlVmVy
dGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOwotICAgICAgICAgICAgICAgIEdMaW50NjQgbWF4
VmVydGV4RWxlbWVudCA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmliLmRpdmlzb3Ig
PiAwKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbWF4VmVydGV4RWxl
bWVudCA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KHByaW1jb3VudCkgLyBzdGF0aWNfY2FzdDxHTGlu
dDY0PihhdHRyaWIuZGl2aXNvcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxHTGludDY0PihtYXhWZXJ0ZXgpOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIEdMaW50NjQgYXR0cmliRGF0YVNpemUgPSBtYXhWZXJ0ZXhF
bGVtZW50ICogYXR0cmliU3RyaWRlOwotCi0gICAgICAgICAgICAgICAgLy8gW09wZW5HTCBFUyAz
LjAuMl0gc2VjdGlvbiAyLjkuNCBwYWdlIDQwOgotICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBy
ZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gaWYgb3VyIHZlcnRleCBhdHRyaWJ1dGUgZG9lcyBub3Qg
aGF2ZQotICAgICAgICAgICAgICAgIC8vIGVub3VnaCBiYWNraW5nIGRhdGEuCi0gICAgICAgICAg
ICAgICAgaWYgKGF0dHJpYkRhdGFTaXplID4gYnVmZmVyLT5nZXRTaXplKCkpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
YXR0cmliLnBvaW50ZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbm9ybWFsbHkgcmVzdWx0
IGluIGEgY3Jhc2gsCi0gICAgICAgICAgICAgICAgLy8gYnV0IHdlIGNhdGNoIGl0IGFuZCByZXR1
cm4gYW4gZXJyb3IKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkFuIGVuYWJsZWQgdmVydGV4IGFycmF5IGhhcyBubyBidWZm
ZXIgYW5kIG5vIHBvaW50ZXIuIikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIFVuaWZvcm0gYnVmZmVyIHZh
bGlkYXRpb24KICAgICBmb3IgKHVuc2lnbmVkIGludCB1bmlmb3JtQmxvY2tJbmRleCA9IDA7IHVu
aWZvcm1CbG9ja0luZGV4IDwgcHJvZ3JhbS0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKTsg
dW5pZm9ybUJsb2NrSW5kZXgrKykKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpVbmlmb3JtQmxv
Y2sgKnVuaWZvcm1CbG9jayA9IHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0J5SW5kZXgodW5pZm9y
bUJsb2NrSW5kZXgpOworICAgICAgICBjb25zdCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxv
Y2sgPSBwcm9ncmFtLT5nZXRVbmlmb3JtQmxvY2tCeUluZGV4KHVuaWZvcm1CbG9ja0luZGV4KTsK
ICAgICAgICAgR0x1aW50IGJsb2NrQmluZGluZyA9IHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0Jp
bmRpbmcodW5pZm9ybUJsb2NrSW5kZXgpOwotICAgICAgICBjb25zdCBnbDo6QnVmZmVyICp1bmlm
b3JtQnVmZmVyID0gc3RhdGUuZ2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoYmxvY2tCaW5kaW5nKTsK
KyAgICAgICAgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmdW5pZm9ybUJ1ZmZl
ciA9CisgICAgICAgICAgICBzdGF0ZS5nZXRJbmRleGVkVW5pZm9ybUJ1ZmZlcihibG9ja0JpbmRp
bmcpOwogCi0gICAgICAgIGlmICghdW5pZm9ybUJ1ZmZlcikKKyAgICAgICAgaWYgKHVuaWZvcm1C
dWZmZXIuZ2V0KCkgPT0gbnVsbHB0cikKICAgICAgICAgewogICAgICAgICAgICAgLy8gdW5kZWZp
bmVkIGJlaGF2aW91cgogICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJJdCBpcyB1bmRlZmluZWQgYmVoYXZpb3VyIHRvIGhhdmUgYSB1
c2VkIGJ1dCB1bmJvdW5kIHVuaWZvcm0gYnVmZmVyLiIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCB1bmlmb3JtQnVmZmVyU2l6ZSA9IHN0
YXRlLmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyU2l6ZShibG9ja0JpbmRpbmcpOwotCisgICAgICAg
IHNpemVfdCB1bmlmb3JtQnVmZmVyU2l6ZSA9IHVuaWZvcm1CdWZmZXIuZ2V0U2l6ZSgpOwogICAg
ICAgICBpZiAodW5pZm9ybUJ1ZmZlclNpemUgPT0gMCkKICAgICAgICAgewogICAgICAgICAgICAg
Ly8gQmluZCB0aGUgd2hvbGUgYnVmZmVyLgogICAgICAgICAgICAgdW5pZm9ybUJ1ZmZlclNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHVuaWZvcm1CdWZmZXItPmdldFNpemUoKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAodW5pZm9ybUJ1ZmZlclNpemUgPCB1bmlmb3JtQmxvY2stPmRhdGFT
aXplKQorICAgICAgICBpZiAodW5pZm9ybUJ1ZmZlclNpemUgPCB1bmlmb3JtQmxvY2suZGF0YVNp
emUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIHVuZGVmaW5lZCBiZWhhdmlvdXIKICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
SXQgaXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0byB1c2UgYSB1bmlmb3JtIGJ1ZmZlciB0aGF0IGlz
IHRvbyBzbWFsbC4iKSk7CkBAIC0xNTA1LDExICsxODI1LDE2IEBACiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0Jhc2UoY29udGV4dCwgbW9kZSwg
Y291bnQsIGNvdW50LCBwcmltY291bnQpKQorICAgIGlmICghVmFsaWRhdGVEcmF3QmFzZShjb250
ZXh0LCBtb2RlLCBjb3VudCwgcHJpbWNvdW50KSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKKyAgICBpZiAoIVZhbGlkYXRlRHJhd0F0dHJpYnMoY29udGV4dCwgcHJpbWNv
dW50LCBjb3VudCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1MzgsMTEgKzE4NjMsMTAgQEAKICAgICBnbDo6UHJvZ3Jh
bSAqcHJvZ3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKIAogICAgIGNvbnN0IFZlcnRleEFycmF5
ICp2YW8gPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOwotICAgIGZvciAoaW50IGF0dHJpYnV0ZUlu
ZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGF0dHJpYnV0ZUlu
ZGV4KyspCisgICAgZm9yIChzaXplX3QgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRl
eCA8IE1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKICAgICB7CiAgICAgICAg
IGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gdmFvLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUo
YXR0cmlidXRlSW5kZXgpOwotICAgICAgICBib29sIGFjdGl2ZSA9IChwcm9ncmFtLT5nZXRTZW1h
bnRpY0luZGV4KGF0dHJpYnV0ZUluZGV4KSAhPSAtMSk7Ci0gICAgICAgIGlmIChhY3RpdmUgJiYg
YXR0cmliLmRpdmlzb3IgPT0gMCkKKyAgICAgICAgaWYgKHByb2dyYW0tPmlzQXR0cmliTG9jYXRp
b25BY3RpdmUoYXR0cmlidXRlSW5kZXgpICYmIGF0dHJpYi5kaXZpc29yID09IDApCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0xNTYzLDggKzE4ODcs
MTMgQEAKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnRleHQsIG1v
ZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50cyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVt
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCogaW5kaWNlcywg
R0xzaXplaSBwcmltY291bnQsIHJ4OjpSYW5nZVVJICppbmRleFJhbmdlT3V0KQorYm9vbCBWYWxp
ZGF0ZURyYXdFbGVtZW50cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbmRleFJhbmdlICppbmRleFJhbmdlT3V0KQogewogICAgIHN3aXRjaCAodHlwZSkKICAg
ICB7CkBAIC0xNTcyLDcgKzE5MDEsNyBAQAogICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoK
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCkKKyAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMyAmJiAhY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmVsZW1lbnRJbmRleFVpbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTYwMiw3ICsxOTMxLDcgQEAKICAgICB9CiAKICAgICBjb25zdCBnbDo6VmVy
dGV4QXJyYXkgKnZhbyA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7Ci0gICAgZ2w6OkJ1ZmZlciAq
ZWxlbWVudEFycmF5QnVmZmVyID0gdmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKKyAgICBn
bDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpLmdldCgpOwogICAgIGlmICghaW5kaWNlcyAmJiAhZWxlbWVudEFycmF5QnVmZmVyKQogICAg
IHsKICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKQEAgLTE2MzgsNDUgKzE5NjcsNTYgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAorICAgIGlmICghVmFsaWRhdGVEcmF3QmFzZShjb250ZXh0LCBtb2RlLCBjb3VudCwgcHJp
bWNvdW50KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICAvLyBV
c2UgbWF4IGluZGV4IHRvIHZhbGlkYXRlIGlmIG91ciB2ZXJ0ZXggYnVmZmVycyBhcmUgbGFyZ2Ug
ZW5vdWdoIGZvciB0aGUgcHVsbC4KICAgICAvLyBUT0RPOiBvZmZlciBmYXN0IHBhdGgsIHdpdGgg
ZGlzYWJsZWQgaW5kZXggdmFsaWRhdGlvbi4KICAgICAvLyBUT0RPOiBhbHNvIGRpc2FibGUgaW5k
ZXggY2hlY2tpbmcgb24gYmFjay1lbmRzIHRoYXQgYXJlIHJvYnVzdCB0byBvdXQtb2YtcmFuZ2Ug
YWNjZXNzZXMuCiAgICAgaWYgKGVsZW1lbnRBcnJheUJ1ZmZlcikKICAgICB7CiAgICAgICAgIHVp
bnRwdHJfdCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5kaWNlcyk7Ci0g
ICAgICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyLT5nZXRJbmRleFJhbmdlQ2FjaGUoKS0+Zmlu
ZFJhbmdlKHR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KSwgY291bnQsIGlu
ZGV4UmFuZ2VPdXQpKQorICAgICAgICBFcnJvciBlcnJvciA9CisgICAgICAgICAgICBlbGVtZW50
QXJyYXlCdWZmZXItPmdldEluZGV4UmFuZ2UodHlwZSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihvZmZz
ZXQpLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksIGluZGV4UmFuZ2VPdXQpOworICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICByeDo6QnVm
ZmVySW1wbCAqYnVmZmVySW1wbCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0SW1wbGVtZW50YXRp
b24oKTsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGFQb2ludGVyID0gTlVMTDsKLSAg
ICAgICAgICAgIEVycm9yIGVycm9yID0gYnVmZmVySW1wbC0+Z2V0RGF0YSgmZGF0YVBvaW50ZXIp
OwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb25zdCB1aW50OF90
ICpvZmZzZXRQb2ludGVyID0gZGF0YVBvaW50ZXIgKyBvZmZzZXQ7Ci0gICAgICAgICAgICAqaW5k
ZXhSYW5nZU91dCA9IHJ4OjpJbmRleFJhbmdlQ2FjaGU6OkNvbXB1dGVSYW5nZSh0eXBlLCBvZmZz
ZXRQb2ludGVyLCBjb3VudCk7Ci0gICAgICAgICAgICBlbGVtZW50QXJyYXlCdWZmZXItPmdldElu
ZGV4UmFuZ2VDYWNoZSgpLT5hZGRSYW5nZSh0eXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KG9mZnNldCksIGNvdW50LCAqaW5kZXhSYW5nZU91dCk7CisgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgKmluZGV4UmFuZ2VPdXQgPSByeDo6SW5k
ZXhSYW5nZUNhY2hlOjpDb21wdXRlUmFuZ2UodHlwZSwgaW5kaWNlcywgY291bnQpOworICAgICAg
ICAqaW5kZXhSYW5nZU91dCA9IENvbXB1dGVJbmRleFJhbmdlKHR5cGUsIGluZGljZXMsIGNvdW50
LCBzdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpOwogICAgIH0KIAotICAgIGlmICgh
VmFsaWRhdGVEcmF3QmFzZShjb250ZXh0LCBtb2RlLCBjb3VudCwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4oaW5kZXhSYW5nZU91dC0+ZW5kKSwgcHJpbWNvdW50KSkKKyAgICAvLyBJZiB3ZSB1c2UgYW4g
aW5kZXggZ3JlYXRlciB0aGFuIG91ciBtYXhpbXVtIHN1cHBvcnRlZCBpbmRleCByYW5nZSwgcmV0
dXJuIGFuIGVycm9yLgorICAgIC8vIFRoZSBFUzMgc3BlYyBkb2VzIG5vdCBzcGVjaWZ5IGJlaGF2
aW91ciBoZXJlLCBpdCBpcyB1bmRlZmluZWQsIGJ1dCBBTkdMRSBzaG91bGQgYWx3YXlzCisgICAg
Ly8gcmV0dXJuIGFuIGVycm9yIGlmIHBvc3NpYmxlIGhlcmUuCisgICAgaWYgKHN0YXRpY19jYXN0
PEdMdWludDY0PihpbmRleFJhbmdlT3V0LT5lbmQpID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhF
bGVtZW50SW5kZXgpCiAgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgZ19FeGNlZWRzTWF4RWxlbWVudEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIHRydWU7CisgICAgaWYg
KCFWYWxpZGF0ZURyYXdBdHRyaWJzKGNvbnRleHQsIHByaW1jb3VudCwgc3RhdGljX2Nhc3Q8R0xp
bnQ+KGluZGV4UmFuZ2VPdXQtPnZlcnRleENvdW50KCkpKSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBObyBvcCBpZiB0aGVyZSBhcmUgbm8gcmVhbCBpbmRp
Y2VzIGluIHRoZSBpbmRleCBkYXRhIChhbGwgYXJlIHByaW1pdGl2ZSByZXN0YXJ0KS4KKyAgICBy
ZXR1cm4gKGluZGV4UmFuZ2VPdXQtPnZlcnRleEluZGV4Q291bnQgPiAwKTsKIH0KIAogYm9vbCBW
YWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ4OjpSYW5nZVVJICppbmRleFJhbmdlT3V0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBwcmltY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4
UmFuZ2UgKmluZGV4UmFuZ2VPdXQpCiB7CiAgICAgaWYgKHByaW1jb3VudCA8IDApCiAgICAgewpA
QCAtMTY5Myw4ICsyMDMzLDEzIEBACiAgICAgcmV0dXJuIChwcmltY291bnQgPiAwKTsKIH0KIAot
Ym9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkg
cHJpbWNvdW50LCByeDo6UmFuZ2VVSSAqaW5kZXhSYW5nZU91dCkKK2Jvb2wgVmFsaWRhdGVEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2VPdXQpCiB7
CiAgICAgaWYgKCFWYWxpZGF0ZURyYXdJbnN0YW5jZWRBTkdMRShjb250ZXh0KSkKICAgICB7CkBA
IC0xODMwLDEzICsyMTc1LDEyIEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAoIVZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKSkKKyAgICBnbDo6UHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICBp
ZiAoIXByb2dyYW1PYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHBy
b2dyYW0pOwotCiAgICAgaWYgKCFwcm9ncmFtT2JqZWN0IHx8ICFwcm9ncmFtT2JqZWN0LT5pc0xp
bmtlZCgpKQogICAgIHsKICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKQEAgLTE4NzMsOCArMjIxNyw4IEBACiAgICAgQVNTRVJUKHByb2dy
YW1PYmplY3QpOwogCiAgICAgLy8gc2l6ZWQgcXVlcmllcyAtLSBlbnN1cmUgdGhlIHByb3ZpZGVk
IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2gKLSAgICBMaW5rZWRVbmlmb3JtICp1bmlmb3JtID0gcHJv
Z3JhbU9iamVjdC0+Z2V0VW5pZm9ybUJ5TG9jYXRpb24obG9jYXRpb24pOwotICAgIHNpemVfdCBy
ZXF1aXJlZEJ5dGVzID0gVmFyaWFibGVFeHRlcm5hbFNpemUodW5pZm9ybS0+dHlwZSk7CisgICAg
Y29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1C
eUxvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICBzaXplX3QgcmVxdWlyZWRCeXRlcyA9IFZhcmlhYmxl
RXh0ZXJuYWxTaXplKHVuaWZvcm0udHlwZSk7CiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4o
YnVmU2l6ZSkgPCByZXF1aXJlZEJ5dGVzKQogICAgIHsKICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKQEAgLTE4OTQsNCArMjIzOCw2NjQg
QEAKICAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbSwg
bG9jYXRpb24sIGJ1ZlNpemUpOwogfQogCitib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVy
QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1l
bnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICph
dHRhY2htZW50cywgYm9vbCBkZWZhdWx0RnJhbWVidWZmZXIpCit7CisgICAgaWYgKG51bUF0dGFj
aG1lbnRzIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJudW1BdHRhY2htZW50cyBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gemVy
byIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZvciAoR0xzaXplaSBp
ID0gMDsgaSA8IG51bUF0dGFjaG1lbnRzOyArK2kpCisgICAgeworICAgICAgICBpZiAoYXR0YWNo
bWVudHNbaV0gPj0gR0xfQ09MT1JfQVRUQUNITUVOVDAgJiYgYXR0YWNobWVudHNbaV0gPD0gR0xf
Q09MT1JfQVRUQUNITUVOVDMxKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGVmYXVsdEZy
YW1lYnVmZmVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYXR0YWNobWVudCB3aGVuIHRo
ZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIikpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnRzW2ld
ID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgY29udGV4dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0
YWNobWVudHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBjb2xvciBhdHRhY2htZW50IGlzIGdyZWF0
ZXIgdGhhbiB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgY29sb3IgYXR0YWNobWVudHMiKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhdHRhY2htZW50c1tpXSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgor
ICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgICAg
Y2FzZSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAgICAgaWYgKGRl
ZmF1bHRGcmFtZWJ1ZmZlcikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYXR0
YWNobWVudCB3aGVuIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX0NPTE9SOgorICAgICAgICAgICAg
ICBjYXNlIEdMX0RFUFRIOgorICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAg
ICAgICAgICAgaWYgKCFkZWZhdWx0RnJhbWVidWZmZXIpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIGF0dGFjaG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBu
b3QgYm91bmQiKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiSW52YWxpZCBhdHRhY2htZW50IikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOwog
fQorCitib29sIFZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwg
R0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICAvLyBOb3RlIHRoYXQg
ZGVidWcgbWFya2VyIGNhbGxzIG11c3Qgbm90IHNldCBlcnJvciBzdGF0ZQorCisgICAgaWYgKGxl
bmd0aCA8IDApCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KG1hcmtlciA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUHVzaEdyb3VwTWFya2VyRVhU
KENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpCit7
CisgICAgLy8gTm90ZSB0aGF0IGRlYnVnIG1hcmtlciBjYWxscyBtdXN0IG5vdCBzZXQgZXJyb3Ig
c3RhdGUKKworICAgIGlmIChsZW5ndGggPCAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChsZW5ndGggPiAwICYmIG1hcmtlciA9PSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkg
KmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6Oklt
YWdlICppbWFnZSkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFn
ZSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoICh0YXJnZXQpCisg
ICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiaW52YWxpZCB0ZXh0dXJlIHRhcmdldC4iKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5LT5pc1ZhbGlkSW1hZ2Uo
aW1hZ2UpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwgIkVHTCBpbWFnZSBpcyBub3QgdmFsaWQuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKGltYWdlLT5nZXRTYW1wbGVzKCkgPiAwKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY3JlYXRlIGEgMkQg
dGV4dHVyZSBmcm9tIGEgbXVsdGlzYW1wbGVkIEVHTCBpbWFnZS4iKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBUZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBj
b250ZXh0LT5nZXRUZXh0dXJlQ2FwcygpLmdldChpbWFnZS0+Z2V0SW50ZXJuYWxGb3JtYXQoKSk7
CisgICAgaWYgKCF0ZXh0dXJlQ2Fwcy50ZXh0dXJhYmxlKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFR0wgaW1hZ2UgaW50ZXJuYWwgZm9ybWF0IGlzIG5vdCBz
dXBwb3J0ZWQgYXMgYSB0ZXh0dXJlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRSZW5k
ZXJidWZmZXJTdG9yYWdlT0VTKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWdsOjpJbWFnZSAqaW1hZ2UpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZWdsSW1hZ2UpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUjoKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJpbnZhbGlkIHJlbmRlcmJ1ZmZl
ciB0YXJnZXQuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghZGlzcGxheS0+aXNWYWxpZEltYWdlKGltYWdlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJFR0wgaW1hZ2UgaXMgbm90IHZh
bGlkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IFRleHR1
cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGltYWdl
LT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKKyAgICBpZiAoIXRleHR1cmVDYXBzLnJlbmRlcmFibGUp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAgICAg
IEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRUdMIGltYWdlIGludGVybmFsIGZvcm1hdCBpcyBub3Qg
c3VwcG9ydGVkIGFzIGEgcmVuZGVyYnVmZmVyLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmluZFZlcnRleEFy
cmF5QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYXJyYXkpCit7CisgICAgaWYgKCFjb250
ZXh0LT5pc1ZlcnRleEFycmF5R2VuZXJhdGVkKGFycmF5KSkKKyAgICB7CisgICAgICAgIC8vIFRo
ZSBkZWZhdWx0IFZBTyBzaG91bGQgYWx3YXlzIGV4aXN0CisgICAgICAgIEFTU0VSVChhcnJheSAh
PSAwKTsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlTGlua1Byb2dyYW0oQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHByb2dyYW0pCit7CisgICAgaWYgKGNvbnRleHQtPmhhc0FjdGl2ZVRyYW5zZm9ybUZlZWRiYWNr
KHByb2dyYW0pKQorICAgIHsKKyAgICAgICAgLy8gRVMgMy4wLjQgc2VjdGlvbiAyLjE1IHBhZ2Ug
OTEKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgbGluayBwcm9n
cmFtIHdoaWxlIHByb2dyYW0gaXMgYXNzb2NpYXRlZCB3aXRoIGFuIGFjdGl2ZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0LiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnlCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbGVuZ3RoKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRW
YWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKHByb2dyYW1PYmplY3QgPT0g
bnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxHTGVudW0+ICZwcm9ncmFtQmluYXJ5Rm9ybWF0cyA9IGNvbnRleHQtPmdl
dENhcHMoKS5wcm9ncmFtQmluYXJ5Rm9ybWF0czsKKyAgICBpZiAoc3RkOjpmaW5kKHByb2dyYW1C
aW5hcnlGb3JtYXRzLmJlZ2luKCksIHByb2dyYW1CaW5hcnlGb3JtYXRzLmVuZCgpLCBiaW5hcnlG
b3JtYXQpID09CisgICAgICAgIHByb2dyYW1CaW5hcnlGb3JtYXRzLmVuZCgpKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiUHJvZ3Jh
bSBiaW5hcnkgZm9ybWF0IGlzIG5vdCB2YWxpZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+aGFzQWN0aXZlVHJhbnNmb3JtRmVlZGJhY2socHJv
Z3JhbSkpCisgICAgeworICAgICAgICAvLyBFUyAzLjAuNCBzZWN0aW9uIDIuMTUgcGFnZSA5MQor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjaGFuZ2UgcHJvZ3Jh
bSBiaW5hcnkgd2hpbGUgcHJvZ3JhbSBpcyBhc3NvY2lhdGVkIHdpdGggIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYW4gYWN0aXZlIHRyYW5zZm9ybSBmZWVkYmFjayBvYmpl
Y3QuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5QmFzZShDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmluYXJ5KQoreworICAgIFByb2dyYW0gKnByb2dy
YW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKHBy
b2dyYW1PYmplY3QgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlByb2dy
YW0gaXMgbm90IGxpbmtlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVVzZVByb2dyYW0oQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IHByb2dyYW0pCit7CisgICAgaWYgKHByb2dyYW0gIT0gMCkKKyAgICB7Cisg
ICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOworICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIEVTIDMuMS4wIHNlY3Rpb24gNy4zIHBhZ2UgNzIKKyAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRTaGFkZXIocHJvZ3JhbSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdGVkIHRvIHVzZSBh
IHNpbmdsZSBzaGFkZXIgaW5zdGVhZCBvZiBhIHNoYWRlciBwcm9ncmFtLiIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwgIlByb2dyYW0gaW52YWxpZC4iKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghcHJv
Z3JhbU9iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJQcm9ncmFtIG5vdCBsaW5r
ZWQuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAg
IGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNl
ZCgpKQorICAgIHsKKyAgICAgICAgLy8gRVMgMy4wLjQgc2VjdGlvbiAyLjE1IHBhZ2UgOTEKKyAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICJDYW5ub3QgY2hhbmdlIGFjdGl2ZSBwcm9n
cmFtIHdoaWxlIHRyYW5zZm9ybSBmZWVkYmFjayBpcyB1bnBhdXNlZC4iKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0
ZUNvcHlUZXhJbWFnZTJEKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcikKK3sKKyAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHJldHVy
biBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIGZhbHNlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Cisg
ICAgfQorCisgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA9PSAzKTsKKyAg
ICByZXR1cm4gVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGZhbHNlLCAwLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBi
b3JkZXIpOworfQorCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRh
Y2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFy
Z2V0KSB8fAorICAgICAgICAocmVuZGVyYnVmZmVydGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZFUiAm
JiByZW5kZXJidWZmZXIgIT0gMCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyUGFyYW1ldGVycyhj
b250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVy
KTsKK30KKworYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0gKmJ1ZnMpCit7CisgICAgLy8gSU5WQUxJ
RF9WQUxVRSBpcyBnZW5lcmF0ZWQgaWYgbiBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gdmFs
dWUgb2YgTUFYX0RSQVdfQlVGRkVSUworICAgIGlmIChuIDwgMCB8fCBzdGF0aWNfY2FzdDxHTHVp
bnQ+KG4pID4gY29udGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAibiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgbm8gZ3JlYXRlciB0aGFuIE1BWF9EUkFX
X0JVRkZFUlMiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBBU1NFUlQo
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKSk7CisgICAgR0x1aW50IGZy
YW1lQnVmZmVySWQgICAgICA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVy
KCktPmlkKCk7CisgICAgR0x1aW50IG1heENvbG9yQXR0YWNobWVudCA9IEdMX0NPTE9SX0FUVEFD
SE1FTlQwX0VYVCArIGNvbnRleHQtPmdldENhcHMoKS5tYXhDb2xvckF0dGFjaG1lbnRzOworCisg
ICAgLy8gVGhpcyBzaG91bGQgY29tZSBmaXJzdCBiZWZvcmUgdGhlIGNoZWNrIGZvciB0aGUgZGVm
YXVsdCBmcmFtZSBidWZmZXIKKyAgICAvLyBiZWNhdXNlIHdoZW4gd2Ugc3dpdGNoIHRvIEVTMy4x
KywgaW52YWxpZCBlbnVtcyB3aWxsIHJldHVybiBJTlZBTElEX0VOVU0KKyAgICAvLyByYXRoZXIg
dGhhbiBJTlZBTElEX09QRVJBVElPTgorICAgIGZvciAoaW50IGNvbG9yQXR0YWNobWVudCA9IDA7
IGNvbG9yQXR0YWNobWVudCA8IG47IGNvbG9yQXR0YWNobWVudCsrKQorICAgIHsKKyAgICAgICAg
Y29uc3QgR0xlbnVtIGF0dGFjaG1lbnQgPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBjb2xv
ckF0dGFjaG1lbnQ7CisKKyAgICAgICAgaWYgKGJ1ZnNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9O
T05FICYmIGJ1ZnNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9CQUNLICYmCisgICAgICAgICAgICAo
YnVmc1tjb2xvckF0dGFjaG1lbnRdIDwgR0xfQ09MT1JfQVRUQUNITUVOVDAgfHwKKyAgICAgICAg
ICAgICBidWZzW2NvbG9yQXR0YWNobWVudF0gPiBHTF9DT0xPUl9BVFRBQ0hNRU5UMzEpKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBWYWx1ZSBpbiBidWZzIGlzIG5vdCBOT05FLCBCQUNLLCBv
ciBHTF9DT0xPUl9BVFRBQ0hNRU5UaQorICAgICAgICAgICAgLy8gVGhlIDMuMC40IHNwZWMgc2F5
cyB0byBnZW5lcmF0ZSBHTF9JTlZBTElEX09QRVJBVElPTiBoZXJlLCBidXQgdGhpcworICAgICAg
ICAgICAgLy8gd2FzIGNoYW5nZWQgdG8gR0xfSU5WQUxJRF9FTlVNIGluIDMuMSwgd2hpY2ggZEVR
UCBhbHNvIGV4cGVjdHMuCisgICAgICAgICAgICAvLyAzLjEgaXMgc3RpbGwgYSBiaXQgYW1iaWd1
b3VzIGFib3V0IHRoZSBlcnJvciwgYnV0IGZ1dHVyZSBzcGVjcyBhcmUKKyAgICAgICAgICAgIC8v
IGV4cGVjdGVkIHRvIGNsYXJpZnkgdGhhdCBHTF9JTlZBTElEX0VOVU0gaXMgdGhlIGNvcnJlY3Qg
ZXJyb3IuCisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJJbnZhbGlkIGJ1ZmZlciB2YWx1ZSIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChidWZzW2NvbG9yQXR0YWNobWVudF0gPj0g
bWF4Q29sb3JBdHRhY2htZW50KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1
ZmZlciB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gTUFYX0RSQVdfQlVGRkVSUyIpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChidWZzW2NvbG9y
QXR0YWNobWVudF0gIT0gR0xfTk9ORSAmJiBidWZzW2NvbG9yQXR0YWNobWVudF0gIT0gYXR0YWNo
bWVudCAmJgorICAgICAgICAgICAgICAgICBmcmFtZUJ1ZmZlcklkICE9IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIElOVkFMSURfT1BFUkFUSU9OLUdMIGlzIGJvdW5kIHRvIGJ1ZmZlciBh
bmQgaXRoIGFyZ3VtZW50CisgICAgICAgICAgICAvLyBpcyBub3QgQ09MT1JfQVRUQUNITUVOVGkg
b3IgTk9ORQorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJdGggdmFsdWUgZG9lcyBub3QgbWF0Y2gg
Q09MT1JfQVRUQUNITUVOVGkgb3IgTk9ORSIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRl
ZCBpZiBHTCBpcyBib3VuZCB0byB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgorICAgIC8vIGFuZCBu
IGlzIG5vdCAxIG9yIGJ1ZnMgaXMgYm91bmQgdG8gdmFsdWUgb3RoZXIgdGhhbiBCQUNLIGFuZCBO
T05FCisgICAgaWYgKGZyYW1lQnVmZmVySWQgPT0gMCkKKyAgICB7CisgICAgICAgIGlmIChuICE9
IDEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm4gbXVzdCBiZSAxIHdoZW4gR0wgaXMgYm91bmQgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZm
ZXIiKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoYnVmc1swXSAhPSBHTF9OT05FICYmIGJ1ZnNbMF0gIT0gR0xfQkFDSykKKyAgICAgICAgewor
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAg
R0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgIk9ubHkgTk9ORSBvciBCQUNL
IGFyZSB2YWxpZCB2YWx1ZXMgd2hlbiBkcmF3aW5nIHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVy
IikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4U3ViSW1hZ2UyRChDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFZhbGlkYXRlRVMyQ29w
eVRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCB0cnVl
LCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIDApOworICAgIH0KKworICAgIHJldHVy
biBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxl
dmVsLCBHTF9OT05FLCB0cnVlLCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB5b2Zmc2V0LCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCAwKTsK
K30KKworYm9vbCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCit7CisgICAgaWYg
KCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQnVmZmVyIHRhcmdldCBu
b3QgdmFsaWQ6IDB4JVgiLCB0YXJnZXQpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChwbmFtZSAhPSBHTF9CVUZGRVJfTUFQX1BPSU5URVIpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJwbmFtZSBub3Qg
dmFsaWQ6IDB4JVgiLCBwbmFtZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0
YXJnZXQpOworCisgICAgLy8gR0xFUyAzLjAgc2VjdGlvbiAyLjEwLjE6ICJBdHRlbXB0cyB0byBh
dHRlbXB0cyB0byBtb2RpZnkgb3IgcXVlcnkgYnVmZmVyIG9iamVjdCBzdGF0ZSBmb3IgYQorICAg
IC8vIHRhcmdldCBib3VuZCB0byB6ZXJvIGdlbmVyYXRlIGFuIElOVkFMSURfT1BFUkFUSU9OIGVy
cm9yLiIKKyAgICAvLyBHTEVTIDMuMSBzZWN0aW9uIDYuNiBleHBsaWNpdGx5IHNwZWNpZmllcyB0
aGlzIGVycm9yLgorICAgIGlmICghYnVmZmVyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNhbiBu
b3QgZ2V0IHBvaW50ZXIgZm9yIHJlc2VydmVkIGJ1ZmZlciBuYW1lIHplcm8uIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFs
aWRhdGVVbm1hcEJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sK
KyAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IGJ1ZmZlciB0YXJnZXQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
QnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJn
ZXQpOworCisgICAgaWYgKGJ1ZmZlciA9PSBudWxscHRyIHx8ICFidWZmZXItPmlzTWFwcGVkKCkp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkJ1ZmZlciBub3QgbWFwcGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFu
Z2VCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzKQor
eworICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFs
aWQgYnVmZmVyIHRhcmdldC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAob2Zmc2V0IDwgMCB8fCBsZW5ndGggPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgb2Zmc2V0IG9yIGxl
bmd0aC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBCdWZmZXIgKmJ1
ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisKKyAg
ICBpZiAoIWJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQXR0ZW1wdGVkIHRvIG1hcCBidWZmZXIgb2JqZWN0IHpl
cm8uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZm9y
IGJ1ZmZlciBvdmVyZmxvdworICAgIHNpemVfdCBvZmZzZXRTaXplID0gc3RhdGljX2Nhc3Q8c2l6
ZV90PihvZmZzZXQpOworICAgIHNpemVfdCBsZW5ndGhTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW5ndGgpOworCisgICAgaWYgKCFyeDo6SXNVbnNpZ25lZEFkZGl0aW9uU2FmZShvZmZzZXRT
aXplLCBsZW5ndGhTaXplKSB8fAorICAgICAgICBvZmZzZXRTaXplICsgbGVuZ3RoU2l6ZSA+IHN0
YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyLT5nZXRTaXplKCkpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
TWFwcGVkIHJhbmdlIGRvZXMgbm90IGZpdCBpbnRvIGJ1ZmZlciBkaW1lbnNpb25zLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIENoZWNrIGZvciBpbnZhbGlkIGJp
dHMgaW4gdGhlIG1hc2sKKyAgICBHTGJpdGZpZWxkIGFsbEFjY2Vzc0JpdHMgPSBHTF9NQVBfUkVB
RF9CSVQgfCBHTF9NQVBfV1JJVEVfQklUIHwgR0xfTUFQX0lOVkFMSURBVEVfUkFOR0VfQklUIHwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9NQVBfSU5WQUxJREFURV9CVUZGRVJf
QklUIHwgR0xfTUFQX0ZMVVNIX0VYUExJQ0lUX0JJVCB8CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTUFQX1VOU1lOQ0hST05JWkVEX0JJVDsKKworICAgIGlmIChhY2Nlc3MgJiB+
KGFsbEFjY2Vzc0JpdHMpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgYWNjZXNzIGJpdHM6IDB4JVguIiwgYWNjZXNz
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoID09IDAp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkJ1ZmZlciBtYXBwaW5nIGxlbmd0aCBpcyB6ZXJvLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChidWZmZXItPmlzTWFwcGVkKCkpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkJ1ZmZlciBpcyBhbHJlYWR5IG1hcHBlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBiaXQgY29tYmluYXRpb25zCisgICAgaWYg
KChhY2Nlc3MgJiAoR0xfTUFQX1JFQURfQklUIHwgR0xfTUFQX1dSSVRFX0JJVCkpID09IDApCisg
ICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiTmVlZCB0byBtYXAgYnVmZmVyIGZvciBlaXRoZXIgcmVhZGlu
ZyBvciB3cml0aW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdM
Yml0ZmllbGQgd3JpdGVPbmx5Qml0cyA9CisgICAgICAgIEdMX01BUF9JTlZBTElEQVRFX1JBTkdF
X0JJVCB8IEdMX01BUF9JTlZBTElEQVRFX0JVRkZFUl9CSVQgfCBHTF9NQVBfVU5TWU5DSFJPTkla
RURfQklUOworCisgICAgaWYgKChhY2Nlc3MgJiBHTF9NQVBfUkVBRF9CSVQpICE9IDAgJiYgKGFj
Y2VzcyAmIHdyaXRlT25seUJpdHMpICE9IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkludmFsaWQgYWNjZXNzIGJpdHMgd2hlbiBtYXBwaW5nIGJ1ZmZlciBm
b3IgcmVhZGluZzogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
Y2Nlc3MpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgoYWNjZXNz
ICYgR0xfTUFQX1dSSVRFX0JJVCkgPT0gMCAmJiAoYWNjZXNzICYgR0xfTUFQX0ZMVVNIX0VYUExJ
Q0lUX0JJVCkgIT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KAorICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAiVGhlIGV4
cGxpY2l0IGZsdXNoaW5nIGJpdCBtYXkgb25seSBiZSBzZXQgaWYgdGhlIGJ1ZmZlciBpcyBtYXBw
ZWQgZm9yIHdyaXRpbmcuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2Uo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpcHRyIGxlbmd0aCkKK3sKKyAgICBpZiAob2Zmc2V0IDwgMCB8fCBsZW5ndGggPCAw
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIkludmFsaWQgb2Zmc2V0L2xlbmd0aCBwYXJhbWV0ZXJzLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwg
dGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIkludmFsaWQgYnVmZmVyIHRhcmdldC4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCku
Z2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisKKyAgICBpZiAoYnVmZmVyID09IG51bGxwdHIpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkF0dGVtcHRlZCB0byBmbHVzaCBidWZmZXIgb2JqZWN0IHplcm8uIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFidWZmZXItPmlzTWFwcGVkKCkgfHwg
KGJ1ZmZlci0+Z2V0QWNjZXNzRmxhZ3MoKSAmIEdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQpID09
IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAg
ICAgIEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQXR0ZW1wdGVkIHRvIGZsdXNoIGEgYnVmZmVyIG5v
dCBtYXBwZWQgZm9yIGV4cGxpY2l0IGZsdXNoaW5nLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIENoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cKKyAgICBzaXplX3Qg
b2Zmc2V0U2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4ob2Zmc2V0KTsKKyAgICBzaXplX3QgbGVu
Z3RoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKTsKKworICAgIGlmICghcng6Oklz
VW5zaWduZWRBZGRpdGlvblNhZmUob2Zmc2V0U2l6ZSwgbGVuZ3RoU2l6ZSkgfHwKKyAgICAgICAg
b2Zmc2V0U2l6ZSArIGxlbmd0aFNpemUgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlci0+Z2V0
TWFwTGVuZ3RoKCkpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiRmx1c2hlZCByYW5nZSBkb2VzIG5vdCBm
aXQgaW50byBidWZmZXIgbWFwcGluZyBkaW1lbnNpb25zLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2VuQnVm
ZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBHTHVpbnQgKikKK3sKKyAgICByZXR1cm4g
VmFsaWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxpZGF0ZURlbGV0
ZUJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgR0x1aW50ICopCit7Cisg
ICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7Cit9CisKK2Jvb2wgVmFs
aWRhdGVHZW5GcmFtZWJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgR0x1aW50ICop
Cit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7Cit9CisKK2Jv
b2wgVmFsaWRhdGVEZWxldGVGcmFtZWJ1ZmZlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwg
Y29uc3QgR0x1aW50ICopCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4
dCwgbik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJzKENvbnRleHQgKmNvbnRl
eHQsIEdMaW50IG4sIEdMdWludCAqKQoreworICAgIHJldHVybiBWYWxpZGF0ZUdlbk9yRGVsZXRl
KGNvbnRleHQsIG4pOworfQorCitib29sIFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVycyhDb250
ZXh0ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBHTHVpbnQgKikKK3sKKyAgICByZXR1cm4gVmFs
aWRhdGVHZW5PckRlbGV0ZShjb250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxpZGF0ZUdlblRleHR1
cmVzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIEdMdWludCAqKQoreworICAgIHJldHVybiBW
YWxpZGF0ZUdlbk9yRGVsZXRlKGNvbnRleHQsIG4pOworfQorCitib29sIFZhbGlkYXRlRGVsZXRl
VGV4dHVyZXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgR0x1aW50ICopCit7Cisg
ICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwgbik7Cit9CisKK2Jvb2wgVmFs
aWRhdGVHZW5PckRlbGV0ZShDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKQoreworICAgIGlmIChu
IDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsICJuIDwgMCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRh
dGlvbkVTLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0LDIzICsxNCw1MiBAQAogI2luY2x1ZGUgPEdM
RVMyL2dsMi5oPgogI2luY2x1ZGUgPEdMRVMzL2dsMy5oPgogCituYW1lc3BhY2UgZWdsCit7Citj
bGFzcyBEaXNwbGF5OworY2xhc3MgSW1hZ2U7Cit9CisKIG5hbWVzcGFjZSBnbAogewotCiBjbGFz
cyBDb250ZXh0OworY2xhc3MgUHJvZ3JhbTsKK2NsYXNzIFNoYWRlcjsKK2NsYXNzIFZhbGlkYXRp
b25Db250ZXh0OwogCiBib29sIFZhbGlkQ2FwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBjYXApOwotYm9vbCBWYWxpZFRleHR1cmVUYXJnZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHRhcmdldCk7Ci1ib29sIFZhbGlkVGV4dHVyZTJERGVzdGluYXRpb25UYXJnZXQoY29u
c3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7Citib29sIFZhbGlkVGV4dHVyZVRh
cmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7Citi
b29sIFZhbGlkVGV4dHVyZTJEVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgVmFsaWRUZXh0dXJlM0RUYXJnZXQoY29uc3QgVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOworYm9vbCBWYWxpZFRleHR1cmUy
RERlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0KTsKK2Jvb2wgVmFsaWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb25zdCBW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkRnJh
bWVidWZmZXJUYXJnZXQoR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkQnVmZmVyVGFyZ2V0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZEJ1ZmZlclBh
cmFtZXRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUpOwotYm9vbCBWYWxp
ZE1pcExldmVsKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsKTsKLWJvb2wgVmFsaWRJbWFnZVNpemUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNp
emVpIGRlcHRoKTsKLWJvb2wgVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQpOworYm9vbCBWYWxpZE1pcExldmVsKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCk7Citib29sIFZhbGlkSW1hZ2VTaXplUGFy
YW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNTdWJJbWFnZSk7Citib29sIFZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShj
b25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCk7CiBib29sIFZhbGlkUXVlcnlUeXBlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBxdWVyeVR5cGUpOwotYm9vbCBWYWxpZFByb2dyYW0oQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGlkKTsKIAorLy8gUmV0dXJucyB2YWxpZCBwcm9ncmFtIGlmIGlkIGlzIGEgdmFsaWQgcHJv
Z3JhbSBuYW1lCisvLyBFcnJvcnMgSU5WQUxJRF9PUEVSQVRJT04gaWYgdmFsaWQgc2hhZGVyIGlz
IGdpdmVuIGFuZCByZXR1cm5zIE5VTEwKKy8vIEVycm9ycyBJTlZBTElEX1ZBTFVFIG90aGVyd2lz
ZSBhbmQgcmV0dXJucyBOVUxMCitQcm9ncmFtICpHZXRWYWxpZFByb2dyYW0oQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGlkKTsKKworLy8gUmV0dXJucyB2YWxpZCBzaGFkZXIgaWYgaWQgaXMgYSB2
YWxpZCBzaGFkZXIgbmFtZQorLy8gRXJyb3JzIElOVkFMSURfT1BFUkFUSU9OIGlmIHZhbGlkIHBy
b2dyYW0gaXMgZ2l2ZW4gYW5kIHJldHVybnMgTlVMTAorLy8gRXJyb3JzIElOVkFMSURfVkFMVUUg
b3RoZXJ3aXNlIGFuZCByZXR1cm5zIE5VTEwKK1NoYWRlciAqR2V0VmFsaWRTaGFkZXIoQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGlkKTsKKwogYm9vbCBWYWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1lbnQpOwogYm9vbCBWYWxpZGF0ZVJlbmRl
cmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBHTHNpemVpIHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQpOwpAQCAtNDAsOSArNjksMTcgQEAKIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlclBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOwog
Ci1ib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0
LCBHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgwLCBHTGludCBk
c3RZMCwgR0xpbnQgZHN0WDEsIEdMaW50IGRzdFkxLCBHTGJpdGZpZWxkIG1hc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyLCBib29sIGZyb21B
bmdsZUV4dGVuc2lvbik7Citib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc3JjWDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzcmNZMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNy
Y1gxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFkwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RZMSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpOwogCiBib29sIFZhbGlkYXRl
R2V0VmVydGV4QXR0cmliUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUp
OwogCkBAIC01MCwxMSArODcsMzggQEAKIAogYm9vbCBWYWxpZGF0ZVNhbXBsZXJPYmplY3RQYXJh
bWV0ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lKTsKIAotYm9vbCBWYWxpZGF0ZVJl
YWRQaXhlbHNQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSAq
YnVmU2l6ZSwgR0x2b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHMoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpOworYm9v
bCBWYWxpZGF0ZVJlYWRuUGl4ZWxzRVhUKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpOwogCi1ib29sIFZhbGlk
YXRlQmVnaW5RdWVyeShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQp
OwotYm9vbCBWYWxpZGF0ZUVuZFF1ZXJ5KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQp
OworYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbik7Citib29sIFZhbGlkYXRlRGVsZXRlUXVlcmllc0VYVChnbDo6Q29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuKTsKK2Jvb2wgVmFsaWRhdGVCZWdpblF1ZXJ5QmFzZShDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpOworYm9vbCBWYWxpZGF0ZUJlZ2luUXVlcnlF
WFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGlkKTsKK2Jvb2wgVmFs
aWRhdGVFbmRRdWVyeUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7Citib29s
IFZhbGlkYXRlRW5kUXVlcnlFWFQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7Citi
b29sIFZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwg
R0xlbnVtIHRhcmdldCk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlpdkJhc2UoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVy
eWl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7Citib29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3RWYWx1ZUJhc2UoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdGl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBu
YW1lLCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdkVYVChD
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMp
OworYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0aTY0dkVYVChDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdHVpNjR2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVt
IHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKTsKIAogYm9vbCBWYWxpZGF0ZVVuaWZvcm0oQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHVuaWZvcm1UeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCk7CiBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gbWF0cml4VHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsCkBAIC02MiwyNiAr
MTI2LDU3IEBACiAKIGJvb2wgVmFsaWRhdGVTdGF0ZVF1ZXJ5KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBwbmFtZSwgR0xlbnVtICpuYXRpdmVUeXBlLCB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcyk7
CiAKLWJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0KiBjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBi
b29sIGlzU3ViSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQs
IEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3Jk
ZXIsIEdMZW51bSAqdGV4dHVyZUludGVybmFsRm9ybWF0T3V0KTsKK2Jvb2wgVmFsaWRhdGVDb3B5
VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU3ViSW1hZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdGV4dHVyZUludGVybmFsRm9ybWF0T3V0KTsKIAog
Ym9vbCBWYWxpZGF0ZURyYXdBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7CiBib29sIFZhbGlk
YXRlRHJhd0FycmF5c0luc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKIGJvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUs
IEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7CiAKLWJvb2wg
VmFsaWRhdGVEcmF3RWxlbWVudHMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMc2l6
ZWkgY291bnQsIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQqIGluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50LCByeDo6UmFuZ2VVSSAqaW5kZXhSYW5n
ZU91dCk7Citib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2VPdXQpOwogCi1ib29s
IFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBt
b2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCwgcng6
OlJhbmdlVUkgKmluZGV4UmFuZ2VPdXQpOwotYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBH
TGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50LCByeDo6UmFuZ2VVSSAqaW5kZXhS
YW5nZU91dCk7Citib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqaW5kZXhSYW5nZU91dCk7Citib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJhbmdlICppbmRleFJh
bmdlT3V0KTsKIAogYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhc2UoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOwogYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpOworYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZW5kZXJidWZmZXIp
OwogCiBib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uKTsKIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnYoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBw
YXJhbXMpOwpAQCAtODksNiArMTg0LDgyIEBACiBib29sIFZhbGlkYXRlR2V0blVuaWZvcm1mdkVY
VChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgYnVmU2l6ZSwgR0xmbG9hdCogcGFyYW1zKTsKIGJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2
RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBidWZTaXplLCBHTGludCogcGFyYW1zKTsKIAotfQorYm9vbCBWYWxpZGF0ZURpc2NhcmRG
cmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBu
dW1BdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgZGVmYXVsdEZyYW1lYnVmZmVyKTsKIAorYm9vbCBW
YWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKENvbnRleHQgKmNvbnRleHQsIEdMc2l6ZWkgbGVu
Z3RoLCBjb25zdCBjaGFyICptYXJrZXIpOworYm9vbCBWYWxpZGF0ZVB1c2hHcm91cE1hcmtlckVY
VChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKTsK
KworYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpJ
bWFnZSAqaW1hZ2UpOworYm9vbCBWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3Rv
cmFnZU9FUyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2Ug
KmltYWdlKTsKKworYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGFycmF5KTsKKworYm9vbCBWYWxpZGF0ZUxpbmtQcm9ncmFtKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBwcm9ncmFtKTsKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5QmFz
ZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCk7Citib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbUJpbmFyeUJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZvaWQgKmJpbmFyeSk7Citib29sIFZhbGlkYXRlVXNlUHJvZ3JhbShDb250ZXh0ICpj
b250ZXh0LCBHTHVpbnQgcHJvZ3JhbSk7CisKK2Jvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2UyRChW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpOworYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJz
QmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVudW0g
KmJ1ZnMpOworYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTJEKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQpOworCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZC
YXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCAq
KnBhcmFtcyk7Citib29sIFZhbGlkYXRlVW5tYXBCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQpOworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlQmFzZShDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2Vzcyk7Citib29sIFZhbGlkYXRl
Rmx1c2hNYXBwZWRCdWZmZXJSYW5nZUJhc2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCk7CisKK2Jvb2wg
VmFsaWRhdGVHZW5CdWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIEdMdWludCAqYnVm
ZmVycyk7Citib29sIFZhbGlkYXRlRGVsZXRlQnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGlu
dCBuLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMpOworYm9vbCBWYWxpZGF0ZUdlbkZyYW1lYnVmZmVy
cyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7Citib29s
IFZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNv
bnN0IEdMdWludCAqZnJhbWVidWZmZXJzKTsKK2Jvb2wgVmFsaWRhdGVHZW5SZW5kZXJidWZmZXJz
KENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIEdMdWludCAqcmVuZGVyYnVmZmVycyk7Citib29s
IFZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBj
b25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpOworYm9vbCBWYWxpZGF0ZUdlblRleHR1cmVzKENv
bnRleHQgKmNvbnRleHQsIEdMaW50IG4sIEdMdWludCAqdGV4dHVyZXMpOworYm9vbCBWYWxpZGF0
ZURlbGV0ZVRleHR1cmVzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEdMdWludCAq
dGV4dHVyZXMpOworCitib29sIFZhbGlkYXRlR2VuT3JEZWxldGUoQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgbik7CisKKy8vIEVycm9yIG1lc3NhZ2VzIHNoYXJlZCBoZXJlIGZvciB1c2UgaW4gdGVz
dGluZy4KK2V4dGVybiBjb25zdCBjaGFyICpnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNzYWdl
OworfSAgLy8gbmFtZXNwYWNlIGdsCisKICNlbmRpZiAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VT
X0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkVTMi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FUzIuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgsNiArOCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMyLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTLmgiCisjaW5jbHVkZSAibGliQU5HTEUvdmFs
aWRhdGlvbkVTMy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9UZXh0dXJlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIuaCIKQEAg
LTIxLDYgKzIyLDQyIEBACiBuYW1lc3BhY2UgZ2wKIHsKIAorbmFtZXNwYWNlCit7CisKK2Jvb2wg
SXNQYXJ0aWFsQmxpdChnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICBj
b25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRCdWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICp3cml0ZUJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICBHTGludCBzcmNYMCwKKyAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwKKyAg
ICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKKyAgICAgICAgICAgICAgICAgICBHTGludCBz
cmNZMSwKKyAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMCwKKyAgICAgICAgICAgICAgICAg
ICBHTGludCBkc3RZMCwKKyAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMSwKKyAgICAgICAg
ICAgICAgICAgICBHTGludCBkc3RZMSkKK3sKKyAgICBjb25zdCBFeHRlbnRzICZ3cml0ZVNpemUg
PSB3cml0ZUJ1ZmZlci0+Z2V0U2l6ZSgpOworICAgIGNvbnN0IEV4dGVudHMgJnJlYWRTaXplICA9
IHJlYWRCdWZmZXItPmdldFNpemUoKTsKKworICAgIGlmIChzcmNYMCAhPSAwIHx8IHNyY1kwICE9
IDAgfHwgZHN0WDAgIT0gMCB8fCBkc3RZMCAhPSAwIHx8IGRzdFgxICE9IHdyaXRlU2l6ZS53aWR0
aCB8fAorICAgICAgICBkc3RZMSAhPSB3cml0ZVNpemUuaGVpZ2h0IHx8IHNyY1gxICE9IHJlYWRT
aXplLndpZHRoIHx8IHNyY1kxICE9IHJlYWRTaXplLmhlaWdodCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmlzU2Npc3Nv
clRlc3RFbmFibGVkKCkpCisgICAgeworICAgICAgICBjb25zdCBSZWN0YW5nbGUgJnNjaXNzb3Ig
PSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFNjaXNzb3IoKTsKKyAgICAgICAgcmV0dXJuIHNjaXNz
b3IueCA+IDAgfHwgc2Npc3Nvci55ID4gMCB8fCBzY2lzc29yLndpZHRoIDwgd3JpdGVTaXplLndp
ZHRoIHx8CisgICAgICAgICAgICAgICBzY2lzc29yLmhlaWdodCA8IHdyaXRlU2l6ZS5oZWlnaHQ7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9v
bCBpc0NvbXByZXNzZWQsIGJvb2wgaXNTdWJJbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxz
KQpAQCAtMzEsNyArNjgsNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
aWYgKCFWYWxpZEltYWdlU2l6ZShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB3aWR0aCwgaGVpZ2h0
LCAxKSkKKyAgICBpZiAoIVZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQs
IGxldmVsLCB3aWR0aCwgaGVpZ2h0LCAxLCBpc1N1YkltYWdlKSkKICAgICB7CiAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTEwLDcgKzE0Nyw3IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgpKQorICAgICAgICBpZiAodGV4dHVyZS0+
Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMjQsMjMgKzE2MSwxMCBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgR0xlbnVtIGFjdHVhbEludGVybmFsRm9ybWF0ID0gaXNTdWJJbWFnZSA/IHRl
eHR1cmUtPmdldEludGVybmFsRm9ybWF0KHRhcmdldCwgbGV2ZWwpIDogaW50ZXJuYWxmb3JtYXQ7
Ci0gICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmFjdHVhbEZvcm1hdEluZm8gPSBHZXRJbnRlcm5h
bEZvcm1hdEluZm8oYWN0dWFsSW50ZXJuYWxGb3JtYXQpOwotCi0gICAgaWYgKGlzQ29tcHJlc3Nl
ZCAhPSBhY3R1YWxGb3JtYXRJbmZvLmNvbXByZXNzZWQpCi0gICAgewotICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgaWYgKGlzQ29tcHJlc3NlZCkKICAgICB7Ci0gICAgICAg
IGlmICghVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnRleHQsIGFjdHVhbEludGVybmFsRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCisgICAgICAgIEdMZW51bSBhY3R1YWxJbnRlcm5hbEZvcm1h
dCA9CisgICAgICAgICAgICBpc1N1YkltYWdlID8gdGV4dHVyZS0+Z2V0SW50ZXJuYWxGb3JtYXQo
dGFyZ2V0LCBsZXZlbCkgOiBpbnRlcm5hbGZvcm1hdDsKICAgICAgICAgc3dpdGNoIChhY3R1YWxJ
bnRlcm5hbEZvcm1hdCkKICAgICAgICAgewogICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVDoKQEAgLTE2NSw4ICsxODksMjkgQEAKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5jb21wcmVzc2VkRVRDMVJHQjhUZXh0dXJlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdM
RToKKyAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENE
ZWNvZGUpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkFO
R0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQiKSk7CisgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwgImlu
dGVybmFsZm9ybWF0IGlzIG5vdCBhIHN1cHBvcnRlZCBjb21wcmVzc2VkIGludGVybmFsIGZvcm1h
dCIpKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlm
ICghVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnRleHQsIGFjdHVhbEludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM1MCw2ICszOTUsMzMgQEAKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgorICAgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmxvc3N5RVRDRGVjb2RlKQorICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAg
ICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSBjYW4ndCB3b3JrIHdpdGgg
dGhpcyB0eXBlLiIpKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgIEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5v
dCBzdXBwb3J0ZWQuIikpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfREVQVEhf
Q09NUE9ORU5UOgogICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6CiAgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1cmVzKQpAQCAtMzk1
LDIxICs0NjcsMzQgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotCi0KLWJvb2wgVmFsaWRhdGVF
UzJDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQqIGNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgaXNTdWJJbWFnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsIEdMaW50
IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LAorYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlzU3ViSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
eW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyKQogewogICAgIEdMZW51
bSB0ZXh0dXJlSW50ZXJuYWxGb3JtYXQgPSBHTF9OT05FOwogCisgICAgaWYgKCFWYWxpZFRleHR1
cmUyRERlc3RpbmF0aW9uVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAgeworICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRleHR1
cmUgdGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKCFW
YWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCBpc1N1YkltYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBib3JkZXIsICZ0ZXh0dXJlSW50ZXJuYWxGb3JtYXQpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1
ZmZlcigpOwogICAgIEdMZW51bSBjb2xvcmJ1ZmZlckZvcm1hdCA9IGZyYW1lYnVmZmVyLT5nZXRS
ZWFkQ29sb3JidWZmZXIoKS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICBjb25zdCBhdXRvICZp
bnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHRleHR1cmVJbnRl
cm5hbEZvcm1hdCk7CiAgICAgR0xlbnVtIHRleHR1cmVGb3JtYXQgPSBpbnRlcm5hbEZvcm1hdElu
Zm8uZm9ybWF0OwpAQCAtNTAyLDYgKzU4Nyw4IEBACiAgICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDNfQU5HTEU6CiAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQ1X0FOR0xFOgorICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKKyAgICAgICAg
ICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6CiAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgpAQCAt
NjQyLDYgKzcyOSwzMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09F
UzoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVU
QzFSR0I4VGV4dHVyZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9E
RUNPREVfQU5HTEU6CisgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
bG9zc3lFVENEZWNvZGUpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVUQzFfUkdCOF9MT1NTWV9ERUNPREVf
QU5HTEUgY2FuJ3QgYmUgY29waWVkIHRvLiIpKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUg
ZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQuIikpOworICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
IGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgogICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9O
RU5UMTY6CiAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CkBAIC03NTks
NiArODcyLDIxIEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CisgICAgICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgorICAgICAgICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmxvc3N5RVRDRGVjb2RlKQorICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJBTkdMRV9sb3NzeV9ldGNfZGVjb2RlIGV4dGVuc2lv
biBpcyBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgIH0KKyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CiAg
ICAgICBjYXNlIEdMX1JHQjMyRl9FWFQ6CiAgICAgICBjYXNlIEdMX0FMUEhBMzJGX0VYVDoKQEAg
LTgyNCw3ICs5NTIsNyBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYg
KHRleHR1cmUtPmlzSW1tdXRhYmxlKCkpCisgICAgaWYgKHRleHR1cmUtPmdldEltbXV0YWJsZUZv
cm1hdCgpKQogICAgIHsKICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODc5LDQgKzEwMDcs
MTAwOCBAQAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1l
YnVmZmVyRVhUKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0
YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51
bSAqYXR0YWNobWVudHMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGlz
Y2FyZEZyYW1lYnVmZmVyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIGRlZmF1bHRGcmFtZWJ1ZmZlciA9
IGZhbHNlOworCisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUjoKKyAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyID0gKGNvbnRleHQtPmdldFN0YXRl
KCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIpLT5pZCgpID09IDApOworICAg
ICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZnJhbWVidWZmZXIgdGFyZ2V0IikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRGlzY2Fy
ZEZyYW1lYnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2ht
ZW50cywgZGVmYXVsdEZyYW1lYnVmZmVyKTsKIH0KKworYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhB
cnJheU9FUyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYXJyYXkpCit7CisgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudmVydGV4QXJyYXlPYmplY3QpCisgICAgeworICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lv
biBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoY29udGV4dCwgYXJyYXkpOworfQorCiti
b29sIFZhbGlkYXRlRGVsZXRlVmVydGV4QXJyYXlzT0VTKENvbnRleHQgKmNvbnRleHQsIEdMc2l6
ZWkgbikKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBcnJheU9i
amVjdCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGUoY29udGV4dCwg
bik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXNPRVMoQ29udGV4dCAqY29udGV4
dCwgR0xzaXplaSBuKQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnZlcnRl
eEFycmF5T2JqZWN0KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZShj
b250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoQ29udGV4dCAq
Y29udGV4dCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS52ZXJ0ZXhBcnJh
eU9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVQ
cm9ncmFtQmluYXJ5T0VTKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZW5ndGgp
Cit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0UHJvZ3JhbUJpbmFyeSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlUHJvZ3JhbUJpbmFyeUJhc2UoY29udGV4dCwg
cHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVHZXRQcm9ncmFtQmluYXJ5T0VTKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSAqYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqYmluYXJ5KQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldFByb2dy
YW1CaW5hcnkpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlC
YXNlKGNvbnRleHQsIHByb2dyYW0sIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBiaW5h
cnkpOworfQorCitzdGF0aWMgYm9vbCBWYWxpZERlYnVnU291cmNlKEdMZW51bSBzb3VyY2UsIGJv
b2wgbXVzdEJlVGhpcmRQYXJ0eU9yQXBwbGljYXRpb24pCit7CisgICAgc3dpdGNoIChzb3VyY2Up
CisgICAgeworICAgICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9BUEk6CisgICAgICAgIGNhc2Ug
R0xfREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUjoKKyAgICAgICAgY2FzZSBHTF9ERUJVR19T
T1VSQ0VfV0lORE9XX1NZU1RFTToKKyAgICAgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfT1RIRVI6
CisgICAgICAgICAgICAvLyBPbmx5IFRISVJEX1BBUlRZIGFuZCBBUFBMSUNBVElPTiBzb3VyY2Vz
IGFyZSBhbGxvd2VkIHRvIGJlIG1hbnVhbGx5IGluc2VydGVkCisgICAgICAgICAgICByZXR1cm4g
IW11c3RCZVRoaXJkUGFydHlPckFwcGxpY2F0aW9uOworCisgICAgICAgIGNhc2UgR0xfREVCVUdf
U09VUkNFX1RISVJEX1BBUlRZOgorICAgICAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNB
VElPTjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBWYWxpZERlYnVn
VHlwZShHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBj
YXNlIEdMX0RFQlVHX1RZUEVfRVJST1I6CisgICAgICAgIGNhc2UgR0xfREVCVUdfVFlQRV9ERVBS
RUNBVEVEX0JFSEFWSU9SOgorICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JF
SEFWSU9SOgorICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6CisgICAgICAg
IGNhc2UgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWToKKyAgICAgICAgY2FzZSBHTF9ERUJVR19U
WVBFX09USEVSOgorICAgICAgICBjYXNlIEdMX0RFQlVHX1RZUEVfTUFSS0VSOgorICAgICAgICBj
YXNlIEdMX0RFQlVHX1RZUEVfUFVTSF9HUk9VUDoKKyAgICAgICAgY2FzZSBHTF9ERUJVR19UWVBF
X1BPUF9HUk9VUDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBWYWxp
ZERlYnVnU2V2ZXJpdHkoR0xlbnVtIHNldmVyaXR5KQoreworICAgIHN3aXRjaCAoc2V2ZXJpdHkp
CisgICAgeworICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0g6CisgICAgICAgIGNh
c2UgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNOgorICAgICAgICBjYXNlIEdMX0RFQlVHX1NFVkVS
SVRZX0xPVzoKKyAgICAgICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT046Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBWYWxpZGF0ZURlYnVnTWVzc2FnZUNvbnRy
b2xLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
ZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKmlk
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBlbmFibGVk
KQoreworICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
eHRlbnNpb24gbm90IGVuYWJsZWQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIVZhbGlkRGVidWdTb3VyY2Uoc291cmNlLCBmYWxzZSkgJiYgc291cmNlICE9IEdM
X0RPTlRfQ0FSRSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc291cmNlLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWREZWJ1Z1R5cGUodHlwZSkgJiYgdHlwZSAh
PSBHTF9ET05UX0NBUkUpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGRlYnVnIHR5cGUuIikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZERlYnVnU2V2ZXJpdHkoc2V2ZXJpdHkp
ICYmIHNldmVyaXR5ICE9IEdMX0RPTlRfQ0FSRSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc2V2ZXJpdHku
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGNvdW50ID4gMCkK
KyAgICB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gR0xfRE9OVF9DQVJFIHx8IHR5cGUgPT0gR0xf
RE9OVF9DQVJFKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcigKKyAgICAgICAgICAgICAgICBHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAg
ICAgICAiSWYgY291bnQgaXMgZ3JlYXRlciB0aGFuIHplcm8sIHNvdXJjZSBhbmQgc2V2ZXJpdHkg
Y2Fubm90IGJlIEdMX0RPTlRfQ0FSRS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoc2V2ZXJpdHkgIT0gR0xfRE9OVF9DQVJFKQorICAgICAg
ICB7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAiSWYgY291
bnQgaXMgZ3JlYXRlciB0aGFuIHplcm8sIHNldmVyaXR5IG11c3QgYmUgR0xfRE9OVF9DQVJFLiIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRGVidWdNZXNzYWdlSW5zZXJ0S0hSKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqYnVmKQoreworICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRlYnVnKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFeHRlbnNpb24gbm90IGVuYWJsZWQiKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0RGVidWcoKS5pc091dHB1dEVuYWJsZWQoKSkKKyAgICB7CisgICAgICAgIC8vIElm
IHRoZSBERUJVR19PVVRQVVQgc3RhdGUgaXMgZGlzYWJsZWQgY2FsbHMgdG8gRGVidWdNZXNzYWdl
SW5zZXJ0IGFyZSBkaXNjYXJkZWQgYW5kIGRvCisgICAgICAgIC8vIG5vdCBnZW5lcmF0ZSBhbiBl
cnJvci4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWREZWJ1
Z1NldmVyaXR5KHNldmVyaXR5KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVidWcgc2V2ZXJpdHkuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZERlYnVnVHlwZSh0eXBl
KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSwgIkludmFsaWQgZGVidWcgdHlwZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoIVZhbGlkRGVidWdTb3VyY2Uoc291cmNlLCB0cnVlKSkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFs
aWQgZGVidWcgc291cmNlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHNpemVfdCBtZXNzYWdlTGVuZ3RoID0gKGxlbmd0aCA8IDApID8gc3RybGVuKGJ1ZikgOiBsZW5n
dGg7CisgICAgaWYgKG1lc3NhZ2VMZW5ndGggPiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4
RGVidWdNZXNzYWdlTGVuZ3RoKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
CisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTWVzc2FnZSBsZW5ndGggaXMg
bGFyZ2VyIHRoYW4gR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRl
RGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTERFQlVHUFJPQ0tIUiBjYWxsYmFjaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pCit7Cisg
ICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCisgICAgeworICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lv
biBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nS0hSKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNvdXJjZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZykKK3sKKyAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kZWJ1ZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGJ1ZlNpemUgPCAwICYm
IG1lc3NhZ2VMb2cgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImJ1ZlNpemUgbXVzdCBi
ZSBwb3NpdGl2ZSBpZiBtZXNzYWdlTG9nIGlzIG5vdCBudWxsLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUHVz
aERlYnVnR3JvdXBLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1lc3NhZ2UpCit7
CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVu
c2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghVmFsaWREZWJ1Z1NvdXJjZShzb3VyY2UsIHRydWUpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBkZWJ1ZyBz
b3VyY2UuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZV90IG1l
c3NhZ2VMZW5ndGggPSAobGVuZ3RoIDwgMCkgPyBzdHJsZW4obWVzc2FnZSkgOiBsZW5ndGg7Cisg
ICAgaWYgKG1lc3NhZ2VMZW5ndGggPiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4RGVidWdN
ZXNzYWdlTGVuZ3RoKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTWVzc2FnZSBsZW5ndGggaXMgbGFyZ2Vy
IHRoYW4gR0xfTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RILiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHNpemVfdCBjdXJyZW50U3RhY2tTaXplID0gY29udGV4dC0+Z2V0
U3RhdGUoKS5nZXREZWJ1ZygpLmdldEdyb3VwU3RhY2tEZXB0aCgpOworICAgIGlmIChjdXJyZW50
U3RhY2tTaXplID49IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhEZWJ1Z0dyb3VwU3RhY2tE
ZXB0aCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAg
RXJyb3IoR0xfU1RBQ0tfT1ZFUkZMT1csCisgICAgICAgICAgICAgICAgICAiQ2Fubm90IHB1c2gg
bW9yZSB0aGFuIEdMX01BWF9ERUJVR19HUk9VUF9TVEFDS19ERVBUSCBkZWJ1ZyBncm91cHMuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgVmFsaWRhdGVQb3BEZWJ1Z0dyb3VwS0hSKENvbnRleHQgKmNvbnRleHQpCit7CisgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCisgICAgeworICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBu
b3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVf
dCBjdXJyZW50U3RhY2tTaXplID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREZWJ1ZygpLmdldEdy
b3VwU3RhY2tEZXB0aCgpOworICAgIGlmIChjdXJyZW50U3RhY2tTaXplIDw9IDEpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9TVEFDS19VTkRFUkZMT1csICJD
YW5ub3QgcG9wIHRoZSBkZWZhdWx0IGRlYnVnIGdyb3VwLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBWYWxpZGF0
ZU9iamVjdElkZW50aWZpZXJBbmROYW1lKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBpZGVudGlm
aWVyLCBHTHVpbnQgbmFtZSkKK3sKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIpCisgICAgeworICAg
ICAgICBjYXNlIEdMX0JVRkZFUjoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRCdWZmZXIo
bmFtZSkgPT0gbnVsbHB0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxp
ZCBidWZmZXIuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGNhc2UgR0xfU0hBREVSOgor
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihuYW1lKSA9PSBudWxscHRyKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIHNoYWRlci4iKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgY2FzZSBHTF9QUk9HUkFNOgorICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldFByb2dyYW0obmFtZSkgPT0gbnVsbHB0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFt
ZSBpcyBub3QgYSB2YWxpZCBwcm9ncmFtLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9BUlJBWToKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRWZXJ0ZXhB
cnJheShuYW1lKSA9PSBudWxscHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBh
IHZhbGlkIHZlcnRleCBhcnJheS4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSBH
TF9RVUVSWToKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRRdWVyeShuYW1lKSA9PSBudWxs
cHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJuYW1lIGlzIG5vdCBhIHZhbGlkIHF1ZXJ5LiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDSzoKKyAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFjayhuYW1lKSA9PSBudWxs
cHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBu
b3QgYSB2YWxpZCB0cmFuc2Zvcm0gZmVlZGJhY2suIikpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgIGNhc2UgR0xfU0FNUExFUjoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTYW1wbGVy
KG5hbWUpID09IG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm5hbWUgaXMgbm90IGEgdmFs
aWQgc2FtcGxlci4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
OgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFRleHR1cmUobmFtZSkgPT0gbnVsbHB0cikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCB0ZXh0dXJlLiIpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUjoKKyAgICAgICAgICAg
IGlmIChjb250ZXh0LT5nZXRSZW5kZXJidWZmZXIobmFtZSkgPT0gbnVsbHB0cikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCByZW5kZXJidWZmZXIuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0RnJhbWVidWZmZXIobmFtZSkgPT0gbnVsbHB0cikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAibmFtZSBpcyBub3QgYSB2YWxpZCBmcmFtZWJ1ZmZlci4iKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgaWRlbnRpZmllci4iKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFs
aWRhdGVPYmplY3RMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpCit7Cisg
ICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCisgICAgeworICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lv
biBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghVmFsaWRhdGVPYmplY3RJZGVudGlmaWVyQW5kTmFtZShjb250ZXh0LCBpZGVudGlmaWVyLCBu
YW1lKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzaXplX3Qg
bGFiZWxMZW5ndGggPSAobGVuZ3RoIDwgMCkgPyBzdHJsZW4obGFiZWwpIDogbGVuZ3RoOworICAg
IGlmIChsYWJlbExlbmd0aCA+IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhMYWJlbExlbmd0
aCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSwgIkxhYmVsIGxlbmd0aCBpcyBsYXJnZXIgdGhhbiBHTF9NQVhf
TEFCRUxfTEVOR1RILiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0T2JqZWN0TGFiZWxLSFIoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaWRlbnRpZmll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqbGFiZWwpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZGVidWcpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChidWZTaXplIDwgMCkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZTaXplIGNh
bm5vdCBiZSBuZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAoIVZhbGlkYXRlT2JqZWN0SWRlbnRpZmllckFuZE5hbWUoY29udGV4dCwgaWRlbnRpZmll
ciwgbmFtZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
Q2FuIG5vLW9wIGlmIGJ1ZlNpemUgaXMgemVyby4KKyAgICByZXR1cm4gYnVmU2l6ZSA+IDA7Cit9
CisKK3N0YXRpYyBib29sIFZhbGlkYXRlT2JqZWN0UHRyTmFtZShDb250ZXh0ICpjb250ZXh0LCBj
b25zdCB2b2lkICpwdHIpCit7CisgICAgaWYgKGNvbnRleHQtPmdldEZlbmNlU3luYyhyZWludGVy
cHJldF9jYXN0PEdMc3luYz4oY29uc3RfY2FzdDx2b2lkICo+KHB0cikpKSA9PSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgIm5hbWUgaXMgbm90IGEgdmFsaWQgc3luYy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZU9iamVjdFB0ckxh
YmVsS0hSKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFi
ZWwpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmICghVmFsaWRhdGVPYmplY3RQdHJOYW1lKGNvbnRleHQsIHB0cikpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc2l6ZV90IGxhYmVsTGVuZ3RoID0g
KGxlbmd0aCA8IDApID8gc3RybGVuKGxhYmVsKSA6IGxlbmd0aDsKKyAgICBpZiAobGFiZWxMZW5n
dGggPiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWF4TGFiZWxMZW5ndGgpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJMYWJlbCBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gR0xfTUFYX0xBQkVMX0xFTkdUSC4i
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBWYWxpZGF0ZUdldE9iamVjdFB0ckxhYmVsS0hSKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHRyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5kZWJ1ZykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGJ1ZlNpemUgPCAwKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
ImJ1ZlNpemUgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghVmFsaWRhdGVPYmplY3RQdHJOYW1lKGNvbnRleHQsIHB0cikpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQ2FuIG5vLW9wIGlm
IGJ1ZlNpemUgaXMgemVyby4KKyAgICByZXR1cm4gYnVmU2l6ZSA+IDA7Cit9CisKK2Jvb2wgVmFs
aWRhdGVHZXRQb2ludGVydktIUihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIHZvaWQg
KipwYXJhbXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVidWcpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkV4dGVuc2lvbiBub3QgZW5hYmxlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vIFRPRE86IHJlcHJlc2VudCB0aGlzIGluIENvbnRleHQ6OmdldFF1ZXJ5
UGFyYW1ldGVySW5mby4KKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9ERUJVR19DQUxMQkFDS19GVU5DVElPTjoKKyAgICAgICAgY2FzZSBHTF9ERUJVR19DQUxMQkFD
S19VU0VSX1BBUkFNOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIklu
dmFsaWQgcG5hbWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
cmNYMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkc3RYMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkc3RZMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBkc3RYMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RZMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcikKK3sKKyAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlckJsaXQpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJsaXQg
ZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKHNyY1gxIC0gc3JjWDAgIT0gZHN0WDEgLSBkc3RYMCB8fCBzcmNZMSAtIHNy
Y1kwICE9IGRzdFkxIC0gZHN0WTApCisgICAgeworICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBE
ZXRlcm1pbmUgaWYgdGhpcyBzaG91bGQgYmUgYXZhaWxhYmxlIG9uIG90aGVyIGltcGxlbWVudGF0
aW9ucy4KKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoCisgICAgICAgICAgICBH
TF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICJTY2FsaW5nIGFuZCBmbGlwcGluZyBp
biBCbGl0RnJhbWVidWZmZXJBTkdMRSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW1wbGVtZW50YXRp
b24uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGZpbHRlciA9
PSBHTF9MSU5FQVIpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJMaW5lYXIgYmxpdCBub3Qgc3VwcG9ydGVkIGluIHRoaXMgZXh0ZW5z
aW9uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgRnJhbWVi
dWZmZXIgKnJlYWRGcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1l
YnVmZmVyKCk7CisgICAgY29uc3QgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGNvbnRl
eHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisKKyAgICBpZiAobWFzayAmIEdM
X0NPTE9SX0JVRkZFUl9CSVQpCisgICAgeworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgKnJlYWRDb2xvckF0dGFjaG1lbnQgPSByZWFkRnJhbWVidWZmZXItPmdldFJlYWRDb2xv
cmJ1ZmZlcigpOworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRyYXdDb2xv
ckF0dGFjaG1lbnQgPSBkcmF3RnJhbWVidWZmZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKKwor
ICAgICAgICBpZiAocmVhZENvbG9yQXR0YWNobWVudCAmJiBkcmF3Q29sb3JBdHRhY2htZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIShyZWFkQ29sb3JBdHRhY2htZW50LT50eXBlKCkg
PT0gR0xfVEVYVFVSRSAmJgorICAgICAgICAgICAgICAgICAgcmVhZENvbG9yQXR0YWNobWVudC0+
Z2V0VGV4dHVyZUltYWdlSW5kZXgoKS50eXBlID09IEdMX1RFWFRVUkVfMkQpICYmCisgICAgICAg
ICAgICAgICAgcmVhZENvbG9yQXR0YWNobWVudC0+dHlwZSgpICE9IEdMX1JFTkRFUkJVRkZFUiAm
JgorICAgICAgICAgICAgICAgIHJlYWRDb2xvckF0dGFjaG1lbnQtPnR5cGUoKSAhPSBHTF9GUkFN
RUJVRkZFUl9ERUZBVUxUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHNpemVf
dCBkcmF3YnVmZmVySWR4ID0gMDsKKyAgICAgICAgICAgICAgICAgZHJhd2J1ZmZlcklkeCA8IGRy
YXdGcmFtZWJ1ZmZlci0+Z2V0RHJhd2J1ZmZlclN0YXRlQ291bnQoKTsgKytkcmF3YnVmZmVySWR4
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqYXR0YWNobWVudCA9CisgICAgICAgICAgICAgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+
Z2V0RHJhd0J1ZmZlcihkcmF3YnVmZmVySWR4KTsKKyAgICAgICAgICAgICAgICBpZiAoYXR0YWNo
bWVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmICghKGF0dGFj
aG1lbnQtPnR5cGUoKSA9PSBHTF9URVhUVVJFICYmCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnQtPmdldFRleHR1cmVJbWFnZUluZGV4KCkudHlwZSA9PSBHTF9URVhUVVJFXzJE
KSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+dHlwZSgpICE9IEdMX1JF
TkRFUkJVRkZFUiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+dHlwZSgp
ICE9IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gYW4gZXJy
b3IgaWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1hdHMgZG8gbm90IG1hdGNoCisgICAgICAgICAgICAg
ICAgICAgIGlmIChhdHRhY2htZW50LT5nZXRJbnRlcm5hbEZvcm1hdCgpICE9IHJlYWRDb2xvckF0
dGFjaG1lbnQtPmdldEludGVybmFsRm9ybWF0KCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGludCByZWFkU2FtcGxlcyA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxl
cyhjb250ZXh0LT5nZXREYXRhKCkpOworCisgICAgICAgICAgICBpZiAocmVhZFNhbXBsZXMgIT0g
MCAmJgorICAgICAgICAgICAgICAgIElzUGFydGlhbEJsaXQoY29udGV4dCwgcmVhZENvbG9yQXR0
YWNobWVudCwgZHJhd0NvbG9yQXR0YWNobWVudCwgc3JjWDAsIHNyY1kwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3JjWDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZ
MSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHTGVudW0gbWFza3Nb
XSAgICAgICA9IHtHTF9ERVBUSF9CVUZGRVJfQklULCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVR9Owor
ICAgIEdMZW51bSBhdHRhY2htZW50c1tdID0ge0dMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1NURU5D
SUxfQVRUQUNITUVOVH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyBpKyspCisgICAg
eworICAgICAgICBpZiAobWFzayAmIG1hc2tzW2ldKQorICAgICAgICB7CisgICAgICAgICAgICBj
b25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRCdWZmZXIgPQorICAgICAgICAgICAgICAg
IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0QXR0YWNobWVudChhdHRhY2htZW50c1tpXSk7CisgICAgICAg
ICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRyYXdCdWZmZXIgPQorICAgICAgICAg
ICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+Z2V0QXR0YWNobWVudChhdHRhY2htZW50c1tpXSk7CisK
KyAgICAgICAgICAgIGlmIChyZWFkQnVmZmVyICYmIGRyYXdCdWZmZXIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKElzUGFydGlhbEJsaXQoY29udGV4dCwgcmVhZEJ1ZmZlciwg
ZHJhd0J1ZmZlciwgc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEpKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gb25seSB3aG9sZS1idWZmZXIgY29waWVz
IGFyZSBwZXJtaXR0ZWQKKyAgICAgICAgICAgICAgICAgICAgRVJSKAorICAgICAgICAgICAgICAg
ICAgICAgICAgIk9ubHkgd2hvbGUtYnVmZmVyIGRlcHRoIGFuZCBzdGVuY2lsIGJsaXRzIGFyZSBz
dXBwb3J0ZWQgYnkgdGhpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiaW1wbGVtZW50YXRp
b24uIik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocmVhZEJ1ZmZlci0+Z2V0
U2FtcGxlcygpICE9IDAgfHwgZHJhd0J1ZmZlci0+Z2V0U2FtcGxlcygpICE9IDApCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhjb250ZXh0LCBz
cmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIp
OworfQorCitib29sIFZhbGlkYXRlQ2xlYXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
Yml0ZmllbGQgbWFzaykKK3sKKyAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmpl
Y3QgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpOworICAgIEFTU0VS
VChmcmFtZWJ1ZmZlck9iamVjdCk7CisKKyAgICBpZiAoZnJhbWVidWZmZXJPYmplY3QtPmNoZWNr
U3RhdHVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKChtYXNrICYgfihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8
IEdMX1NURU5DSUxfQlVGRkVSX0JJVCkpICE9IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURyYXdCdWZm
ZXJzRVhUKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51
bSAqYnVmcykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVy
cykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRHJhd0J1ZmZlcnNCYXNlKGNvbnRl
eHQsIG4sIGJ1ZnMpOworfQorCitib29sIFZhbGlkYXRlVGV4SW1hZ2UyRChDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
aW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHJldHVybiBWYWxpZGF0ZUVTMlRl
eEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
ZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7Cisg
ICAgfQorCisgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAg
ICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZTJEUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQs
IGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZhbHNlLCAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIGJvcmRl
ciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworfQorCitib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2Uy
RChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKnBpeGVscykKK3sKKworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKGNv
bnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZhbHNlLCB0cnVlLCB4b2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwgd2lkdGgs
IGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOworICAgIH0KKworICAgIEFTU0VSVChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyk7CisgICAgcmV0dXJuIFZhbGlkYXRlRVMz
VGV4SW1hZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgZmFs
c2UsIHRydWUsIHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgZm9ybWF0LCB0eXBlLCBwaXhl
bHMpOworfQorCitib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmRhdGEpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IDMpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0
ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB0cnVlLCBmYWxzZSwg
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIsIEdMX05PTkUsIEdMX05PTkUsIGRhdGEpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKKyAgICAg
ICAgaWYgKCFWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCB0cnVlLCBmYWxzZSwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIGJvcmRl
ciwgR0xfTk9ORSwgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGEpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9
IEdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7CisgICAgaWYgKGltYWdlU2l6
ZSA8IDAgfHwKKyAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihpbWFnZVNpemUpICE9CisgICAg
ICAgICAgICBmb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoR0xfVU5TSUdORURfQllURSwgd2lk
dGgsIGhlaWdodCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSkKK3sKKyAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGlmICghVmFs
aWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9O
RSwgdHJ1ZSwgdHJ1ZSwgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCAwLCBHTF9OT05FLCBHTF9OT05FLCBk
YXRhKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPj0gMyk7CisgICAgICAgIGlmICghVmFsaWRhdGVFUzNUZXhJbWFnZTJEUGFyYW1l
dGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCB0cnVlLCB0cnVlLCB4b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW9mZnNldCwg
MCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgR0xfTk9ORSwgR0xfTk9ORSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBJbnRlcm5h
bEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVybmFsRm9ybWF0SW5mbyhmb3JtYXQpOworICAg
IGlmIChpbWFnZVNpemUgPCAwIHx8CisgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VT
aXplKSAhPQorICAgICAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXplKEdMX1VOU0lH
TkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2lu
dGVydk9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZv
aWQgKipwYXJhbXMpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWFwQnVm
ZmVyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJNYXAgYnVmZmVyIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdldEJ1ZmZl
clBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworfQorCitib29s
IFZhbGlkYXRlTWFwQnVmZmVyT0VTKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBhY2Nlc3MpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubWFwQnVm
ZmVyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJNYXAgYnVmZmVyIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQo
Y29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYnVmZmVyIHRhcmdldC4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IGNvbnRleHQtPmdl
dFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisKKyAgICBpZiAoYnVmZmVyID09IG51
bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkF0dGVtcHRlZCB0byBtYXAgYnVmZmVyIG9iamVjdCB6ZXJvLiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChhY2Nlc3MgIT0gR0xfV1JJ
VEVfT05MWV9PRVMpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJOb24td3JpdGUgYnVmZmVyIG1hcHBpbmcgbm90IHN1cHBvcnRlZC4i
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYnVmZmVyLT5pc01h
cHBlZCgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJCdWZmZXIgaXMgYWxyZWFkeSBtYXBwZWQuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRh
dGVVbm1hcEJ1ZmZlck9FUyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQoreworICAg
IGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1hcEJ1ZmZlcikKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWFwIGJ1
ZmZlciBleHRlbnNpb24gbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVVbm1hcEJ1ZmZlckJhc2UoY29udGV4dCwgdGFy
Z2V0KTsKK30KKworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdlRVhUKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkubWFwQnVmZmVyUmFuZ2UpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWFwIGJ1
ZmZlciByYW5nZSBleHRlbnNpb24gbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUJhc2UoY29u
dGV4dCwgdGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKK30KKworYm9vbCBWYWxpZGF0
ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2VFWFQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCkKK3sKKyAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXBCdWZmZXJSYW5nZSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJNYXAgYnVmZmVyIHJhbmdlIGV4dGVuc2lvbiBub3QgYXZhaWxhYmxlLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUZsdXNoTWFw
cGVkQnVmZmVyUmFuZ2VCYXNlKGNvbnRleHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgpOworfQor
Citib29sIFZhbGlkYXRlQmluZFRleHR1cmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0x1aW50IHRleHR1cmUpCit7CisgICAgVGV4dHVyZSAqdGV4dHVyZU9iamVjdCA9IGNvbnRl
eHQtPmdldFRleHR1cmUodGV4dHVyZSk7CisgICAgaWYgKHRleHR1cmVPYmplY3QgJiYgdGV4dHVy
ZU9iamVjdC0+Z2V0VGFyZ2V0KCkgIT0gdGFyZ2V0ICYmIHRleHR1cmUgIT0gMCkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
SW52YWxpZCB0ZXh0dXJlIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZ
OgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiR0xFUyAzLjAgZGlzYWJsZWQiKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5lZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJFeHRlcm5hbCB0ZXh0dXJlIGV4dGVuc2lvbiBub3Qg
ZW5hYmxlZCIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGFyZ2V0Iikp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaAkocmV2aXNpb24gMTk5NjgyKQor
KysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAsMTggKzEwLDI5IEBACiAjZGVmaW5lIExJQkFOR0xFX1ZBTElE
QVRJT05fRVMyX0hfCiAKICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9n
bDJleHQuaD4KIAogbmFtZXNwYWNlIGdsCiB7Ci0KIGNsYXNzIENvbnRleHQ7CitjbGFzcyBWYWxp
ZGF0aW9uQ29udGV4dDsKK2NsYXNzIFRleHR1cmU7CiAKIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFn
ZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBpc0NvbXByZXNzZWQsIGJvb2wgaXNTdWJJbWFn
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xp
bnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKTsKIAotYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJ
bWFnZVBhcmFtZXRlcnMoQ29udGV4dCogY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBpc1N1YkltYWdlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsCitib29sIFZh
bGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpOwogCiBib29sIFZhbGlkYXRlRVMyVGV4
U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXpl
aSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTI5LDYgKzQwLDE0OSBAQAogCiBi
b29sIFZhbGlkRVMyUmVhZEZvcm1hdFR5cGUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUpOwogCi19Citib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhU
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMpOwogCitib29sIFZhbGlkYXRlRHJhd0J1ZmZlcnNFWFQoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpidWZzKTsKKworYm9vbCBWYWxpZGF0
ZUJpbmRWZXJ0ZXhBcnJheU9FUyhDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYXJyYXkpOworYm9v
bCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5c09FUyhDb250ZXh0ICpjb250ZXh0LCBHTHNpemVp
IG4pOworYm9vbCBWYWxpZGF0ZUdlblZlcnRleEFycmF5c09FUyhDb250ZXh0ICpjb250ZXh0LCBH
THNpemVpIG4pOworYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXlPRVMoQ29udGV4dCAqY29udGV4
dCk7CisKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5T0VTKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZW5ndGgpOworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1CaW5hcnlPRVMo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpiaW5hcnkpOworCisvLyBHTF9L
SFJfZGVidWcKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc291cmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZW5hYmxlZCk7Citib29sIFZhbGlkYXRl
RGVidWdNZXNzYWdlSW5zZXJ0S0hSKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAq
YnVmKTsKK2Jvb2wgVmFsaWRhdGVEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMREVCVUdQUk9DS0hS
IGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKnVzZXJQYXJhbSk7Citib29sIFZhbGlkYXRlR2V0RGVidWdNZXNzYWdlTG9nS0hSKENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNvdXJjZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnNldmVyaXRpZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZyk7Citib29sIFZhbGlkYXRlUHVzaERl
YnVnR3JvdXBLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm1lc3NhZ2UpOworYm9v
bCBWYWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlk
YXRlT2JqZWN0TGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKTsKK2Jvb2wg
VmFsaWRhdGVHZXRPYmplY3RMYWJlbEtIUihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpsYWJlbCk7
Citib29sIFZhbGlkYXRlT2JqZWN0UHRyTGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwdHIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xjaGFyICpsYWJlbCk7Citib29sIFZhbGlkYXRlR2V0T2JqZWN0UHRy
TGFiZWxLSFIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKmxh
YmVsKTsKK2Jvb2wgVmFsaWRhdGVHZXRQb2ludGVydktIUihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFO
R0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc3JjWDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Jj
WTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgZHN0WTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZHN0WDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
ZHN0WTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0ZXIpOworCiti
b29sIFZhbGlkYXRlQ2xlYXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQg
bWFzayk7Citib29sIFZhbGlkYXRlVGV4SW1hZ2UyRChDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlVGV4U3ViSW1hZ2UyRChDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVs
cyk7Citib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmRhdGEpOworYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSk7Citib29sIFZhbGlk
YXRlQmluZFRleHR1cmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IHRl
eHR1cmUpOworCitib29sIFZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZPRVMoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVNYXBCdWZmZXJPRVMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGFjY2Vzcyk7Citib29sIFZhbGlkYXRlVW5tYXBCdWZmZXJPRVMoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCk7Citib29sIFZhbGlkYXRlTWFwQnVmZmVyUmFuZ2VFWFQoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIGxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2Vzcyk7Citib29sIFZhbGlkYXRlRmx1
c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoKTsKKworfSAgLy8gbmFtZXNw
YWNlIGdsCisKICNlbmRpZiAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTMl9IXwpJbmRleDogU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMzLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMx
LDE1IEBACiAgICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfQUxQSEEsICAgICAgICAg
ICAgICBHTF9BTFBIQSwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAg
ICk7CiAgICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfU1JHQl9BTFBIQV9FWFQsICAg
ICBHTF9TUkdCX0FMUEhBX0VYVCwgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7
CiAgICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfU1JHQl9FWFQsICAgICAgICAgICBH
TF9TUkdCX0VYVCwgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7Cisg
ICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9S
RywgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7CisgICAg
SW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywg
ICAgICAgICAgICAgIEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5z
ZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywgICAg
ICAgICAgICAgIEdMX0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfUkcsICAgICAgICAgICAgICAgICBHTF9SRywgICAgICAg
ICAgICAgIEdMX0hBTEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAg
IEdMX0ZMT0FUICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RVMzRm9ybWF0
Q29tYm8oJnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdM
X0hBTEZfRkxPQVQgICAgICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RVMzRm9ybWF0Q29t
Ym8oJnNldCwgR0xfUkVELCAgICAgICAgICAgICAgICBHTF9SRUQsICAgICAgICAgICAgIEdMX0hB
TEZfRkxPQVRfT0VTICAgICAgICAgICAgICAgICk7CisgICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8o
JnNldCwgR0xfREVQVEhfU1RFTkNJTCwgICAgICBHTF9ERVBUSF9TVEVOQ0lMLCAgIEdMX1VOU0lH
TkVEX0lOVF8yNF84ICAgICAgICAgICAgICk7CiAKICAgICAvLyBEZXB0aCBzdGVuY2lsIGZvcm1h
dHMKICAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9ERVBUSF9DT01QT05FTlQxNiwg
IEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hPUlQgICAgICAgICAgICAgICAgKTsK
QEAgLTE0NSw2ICsxNTQsOCBAQAogICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1NS
R0I4LCAgICAgICAgICAgICAgR0xfU1JHQl9FWFQsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUgICAg
ICAgICAgICAgICAgICApOwogCiAgICAgLy8gRnJvbSBHTF9PRVNfdGV4dHVyZV9mbG9hdAorICAg
IEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQkEsICAgICAgICAgICAgICAgR0xfUkdC
QSwgICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIElu
c2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX1JHQiwgICAgICAgICAgICAgICAgR0xfUkdCLCAg
ICAgICAgICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIEluc2Vy
dEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRV9BTFBIQSwgICAgR0xfTFVNSU5BTkNF
X0FMUEhBLCBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEVT
M0Zvcm1hdENvbWJvKCZzZXQsIEdMX0xVTUlOQU5DRSwgICAgICAgICAgR0xfTFVNSU5BTkNFLCAg
ICAgICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgIEluc2VydEVTM0Zv
cm1hdENvbWJvKCZzZXQsIEdMX0FMUEhBLCAgICAgICAgICAgICAgR0xfQUxQSEEsICAgICAgICAg
ICBHTF9GTE9BVCAgICAgICAgICAgICAgICAgICAgICAgICApOwpAQCAtMTg2LDQ0ICsxOTcsMTkg
QEAKICAgICAvLyBGcm9tIEdMX0FOR0xFX2RlcHRoX3RleHR1cmUKICAgICBJbnNlcnRFUzNGb3Jt
YXRDb21ibygmc2V0LCBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsICBHTF9ERVBUSF9DT01QT05F
TlQsIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUyAgICAgICAgICk7CiAKLSAgICAvLyBDb21wcmVz
c2VkIGZvcm1hdHMKLSAgICAvLyBGcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMTYKLSAgICAv
LyAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IFR5cGUgICAgICAgICAgIHwKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKLSAgICBJbnNlcnRFUzNG
b3JtYXRDb21ibygmc2V0LCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUpOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0NPTVBSRVNT
RURfUjExX0VBQywgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1IxMV9FQUMs
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSk7Ci0gICAgSW5zZXJ0RVMz
Rm9ybWF0Q29tYm8oJnNldCwgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9DT01QUkVT
U0VEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SRzExX0VB
QywgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUpOwotICAgIEluc2VydEVT
M0Zvcm1hdENvbWJvKCZzZXQsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLCAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSk7Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfQ09NUFJF
U1NFRF9SR0I4X0VUQzIsICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCOF9F
VEMyLCAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFKTsKLSAgICBJbnNlcnRF
UzNGb3JtYXRDb21ibygmc2V0LCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0JZVEUpOwotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0NPTVBS
RVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsICBHTF9DT01QUkVTU0VEX1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCAgR0xfVU5TSUdORURfQllURSk7Ci0gICAgSW5zZXJ0
RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQ
SEExX0VUQzIsIEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBH
TF9VTlNJR05FRF9CWVRFKTsKLSAgICBJbnNlcnRFUzNGb3JtYXRDb21ibygmc2V0LCBHTF9DT01Q
UkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JB
OF9FVEMyX0VBQywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUpOwotICAgIEluc2Vy
dEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFD
LCAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgICAgICAgICAg
R0xfVU5TSUdORURfQllURSk7Ci0KLQotICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MQotICAgIEluc2VydEVTM0Zvcm1hdENvbWJvKCZzZXQsIEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQsICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhULCAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSk7Ci0gICAgSW5zZXJ0RVMzRm9y
bWF0Q29tYm8oJnNldCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsICAgICAgICAg
ICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFKTsKLQotICAgIC8vIEZyb20gR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQzCi0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUM19BTkdMRSwgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5H
TEUsICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFKTsKLQotICAgIC8vIEZyb20gR0xfQU5HTEVf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1Ci0gICAgSW5zZXJ0RVMzRm9ybWF0Q29tYm8oJnNldCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDVfQU5HTEUsICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFKTsKLQog
ICAgIHJldHVybiBzZXQ7CiB9CiAKIHN0YXRpYyBib29sIFZhbGlkYXRlVGV4SW1hZ2VGb3JtYXRD
b21iaW5hdGlvbihnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBH
TGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKIHsKLSAgICAvLyBOb3RlOiBkRVFQIDIwMTMuNCBl
eHBlY3RzIGFuIElOVkFMSURfVkFMVUUgZXJyb3IgZm9yIFRleEltYWdlM0Qgd2l0aCBhbiBpbnZh
bGlkCi0gICAgLy8gaW50ZXJuYWwgZm9ybWF0LiAoZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0
aXZlX2FwaS50ZXh0dXJlLnRleGltYWdlM2QpCisgICAgLy8gRm9yIGhpc3RvcmljYWwgcmVhc29u
cywgZ2xUZXhJbWFnZTJEIGFuZCBnbFRleEltYWdlM0QgcGFzcyBpbiB0aGVpciBpbnRlcm5hbCBm
b3JtYXQgYXMgYQorICAgIC8vIEdMaW50IGluc3RlYWQgb2YgYSBHTGVudW0uIFRoZXJlZm9yIGFu
IGludmFsaWQgaW50ZXJuYWwgZm9ybWF0IGdpdmVzIGEgR0xfSU5WQUxJRF9WQUxVRQorICAgIC8v
IGVycm9yIGluc3RlYWQgb2YgYSBHTF9JTlZBTElEX0VOVU0gZXJyb3IuIEFzIHRoaXMgdmFsaWRh
dGlvbiBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBpbgorICAgIC8vIHRoZSB2YWxpZGF0aW9uIGNv
ZGVwYXRocyBmb3IgZ2xUZXhJbWFnZTJELzNELCB3ZSByZWNvcmQgYSBHTF9JTlZBTElEX1ZBTFVF
IGVycm9yLgogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpH
ZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpOwogICAgIGlmICghZm9ybWF0SW5m
by50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKSkpCiAgICAgewotICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0y
NzYsMTggKzI2MiwyNSBAQAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRVMz
VGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMaW50
IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgaXNDb21wcmVzc2VkLCBib29sIGlz
U3ViSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTHNpemVpIGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg
KnBpeGVscykKK2Jvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
Q29tcHJlc3NlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNTdWJJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKIHsK
LSAgICBpZiAoIVZhbGlkVGV4dHVyZTJERGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgdGFyZ2V0
KSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgLy8gVmFsaWRhdGUg
aW1hZ2Ugc2l6ZQotICAgIGlmICghVmFsaWRJbWFnZVNpemUoY29udGV4dCwgdGFyZ2V0LCBsZXZl
bCwgd2lkdGgsIGhlaWdodCwgZGVwdGgpKQorICAgIGlmICghVmFsaWRJbWFnZVNpemVQYXJhbWV0
ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpc1N1Yklt
YWdlKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU0LDcgKzM0Nyw3IEBACiAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxH
THVpbnQ+KHdpZHRoKSA+IChjYXBzLm1heDJEVGV4dHVyZVNpemUgPj4gbGV2ZWwpIHx8CiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVT
aXplID4+IGxldmVsKSB8fAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihkZXB0aCkg
PiAoY2Fwcy5tYXhBcnJheVRleHR1cmVMYXllcnMgPj4gbGV2ZWwpKQorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0x1aW50PihkZXB0aCkgPiBjYXBzLm1heEFycmF5VGV4dHVyZUxheWVycykKICAg
ICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzczLDcgKzM2Niw3IEBA
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodGV4dHVyZS0+aXNJbW11
dGFibGUoKSAmJiAhaXNTdWJJbWFnZSkKKyAgICBpZiAodGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9y
bWF0KCkgJiYgIWlzU3ViSW1hZ2UpCiAgICAgewogICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0zODQsMTMgKzM3NywyMCBAQAogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmYWN0dWFs
Rm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oYWN0dWFsSW50ZXJuYWxGb3Jt
YXQpOwogICAgIGlmIChpc0NvbXByZXNzZWQpCiAgICAgeworICAgICAgICBpZiAoIWFjdHVhbEZv
cm1hdEluZm8uY29tcHJlc3NlZCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9FTlVNLCAiaW50ZXJu
YWxmb3JtYXQgaXMgbm90IGEgc3VwcG9ydGVkIGNvbXByZXNzZWQgaW50ZXJuYWwgZm9ybWF0LiIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICgh
VmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnRleHQsIGFjdHVhbEludGVybmFsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghYWN0dWFsRm9ybWF0SW5mby5jb21wcmVzc2Vk
KQorICAgICAgICBpZiAoIWFjdHVhbEZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpLCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpKQogICAgICAgICB7
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUxMSw2ICs1MTEsNjIgQEAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlMkRQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Nv
bXByZXNzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1
YkltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoIVZhbGlkVGV4dHVyZTJE
RGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJz
QmFzZShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgaXNDb21wcmVzc2Vk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJJbWFn
ZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzKTsKK30KKworYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJz
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NvbXByZXNzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c1N1YkltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAoIVZhbGlkVGV4dHVy
ZTNERGVzdGluYXRpb25UYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0
ZXJzQmFzZShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgaXNDb21wcmVz
c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNTdWJJ
bWFnZSwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLCBib3JkZXIsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKTsKK30KKwogc3RydWN0IEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5m
bwogewogICAgIEdMZW51bSBtRWZmZWN0aXZlRm9ybWF0OwpAQCAtNzk1LDkgKzg1MSwxOSBAQAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFt
ZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgaXNTdWJJbWFnZSwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9m
ZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsIEdM
aW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpCitib29s
IFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcikKIHsKICAgICBHTGVudW0gdGV4dHVyZUludGVy
bmFsRm9ybWF0OwogICAgIGlmICghVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShj
b250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgaXNTdWJJbWFnZSwKQEAgLTgw
Nyw3ICs4NzMsOSBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1l
YnVmZmVyKCk7CisgICAgY29uc3QgYXV0byAmc3RhdGUgICAgICAgICAgICAgICAgICA9IGNvbnRl
eHQtPmdldFN0YXRlKCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9
IHN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEdMdWludCByZWFkRnJhbWVidWZmZXJJ
RCAgICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+aWQoKTsKIAogICAgIGlmIChmcmFtZWJ1ZmZlci0+
Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0RGF0YSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVU
RSkKICAgICB7CkBAIC04MTUsOCArODgzLDcgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGlmIChjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5p
ZCgpICE9IDAgJiYKLSAgICAgICAgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dC0+Z2V0
RGF0YSgpKSAhPSAwKQorICAgIGlmIChyZWFkRnJhbWVidWZmZXJJRCAhPSAwICYmIGZyYW1lYnVm
ZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldERhdGEoKSkgIT0gMCkKICAgICB7CiAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTgyOCw3ICs4OTUsNyBAQAogICAgIGlmIChpc1N1YkltYWdl
KQogICAgIHsKICAgICAgICAgaWYgKCFJc1ZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRpb24o
dGV4dHVyZUludGVybmFsRm9ybWF0LCBjb2xvcmJ1ZmZlckludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRTdGF0
ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5pZCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVhZEZyYW1lYnVmZmVySUQpKQogICAgICAgICB7CiAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODM3LDcgKzkwNCw3IEBACiAgICAg
ZWxzZQogICAgIHsKICAgICAgICAgaWYgKCFnbDo6SXNWYWxpZEVTM0NvcHlUZXhJbWFnZUNvbWJp
bmF0aW9uKGludGVybmFsZm9ybWF0LCBjb2xvcmJ1ZmZlckludGVybmFsRm9ybWF0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKS0+aWQoKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkRnJhbWVidWZmZXJJRCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NDgsMTcgKzkxNSw3OCBA
QAogICAgIHJldHVybiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApOwogfQogCi1ib29sIFZhbGlk
YXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xz
aXplaSBkZXB0aCkKK2Jvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2UyRFBhcmFtZXRlcnMoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGJvcmRlcikKIHsKKyAgICBpZiAoIVZhbGlkVGV4dHVyZTJERGVzdGluYXRp
b25UYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2Uo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGlzU3ViSW1hZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9mZnNldCwgeW9m
ZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIpOworfQorCitib29sIFZhbGlkYXRl
RVMzQ29weVRleEltYWdlM0RQYXJhbWV0ZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU3Vi
SW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpCit7Cisg
ICAgaWYgKCFWYWxpZFRleHR1cmUzRERlc3RpbmF0aW9uVGFyZ2V0KGNvbnRleHQsIHRhcmdldCkp
CisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0
ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGlu
dGVybmFsZm9ybWF0LCBpc1N1YkltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRo
LCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9yZGVyKTsKK30KKworYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFz
ZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCkKK3sKICAgICBpZiAod2lkdGggPCAxIHx8IGhl
aWdodCA8IDEgfHwgZGVwdGggPCAxIHx8IGxldmVscyA8IDEpCiAgICAgewogICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobGV2ZWxzID4gZ2w6OmxvZzIoc3RkOjptYXgoc3Rk
OjptYXgod2lkdGgsIGhlaWdodCksIGRlcHRoKSkgKyAxKQorICAgIEdMc2l6ZWkgbWF4RGltID0g
c3RkOjptYXgod2lkdGgsIGhlaWdodCk7CisgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJE
X0FSUkFZKQogICAgIHsKKyAgICAgICAgbWF4RGltID0gc3RkOjptYXgobWF4RGltLCBkZXB0aCk7
CisgICAgfQorCisgICAgaWYgKGxldmVscyA+IGdsOjpsb2cyKG1heERpbSkgKyAxKQorICAgIHsK
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTkxOSw3ICsxMDQ3LDcgQEAKICAg
ICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTkzMCw3ICsxMDU4LDcgQEAKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICh0ZXh0dXJlLT5pc0ltbXV0YWJsZSgp
KQorICAgIGlmICh0ZXh0dXJlLT5nZXRJbW11dGFibGVGb3JtYXQoKSkKICAgICB7CiAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTk1Miw2ICsxMDgwLDg2IEBACiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK2Jvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZl
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRl
cHRoKQoreworICAgIGlmICghVmFsaWRUZXh0dXJlMkRUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRl
RVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlaWdodCwgZGVwdGgpOworfQorCitib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFn
ZTNEUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCkKK3sKKyAgICBpZiAoIVZhbGlkVGV4dHVyZTNE
VGFyZ2V0KGNvbnRleHQsIHRhcmdldCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShjb250
ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoKTsKK30KKwor
Ym9vbCBWYWxpZGF0ZUJlZ2luUXVlcnkoZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpZCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
MykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlQmVnaW5RdWVyeUJhc2UoY29udGV4dCwgdGFy
Z2V0LCBpZCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVFbmRRdWVyeShnbDo6Q29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4wIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlRW5kUXVlcnlCYXNlKGNvbnRleHQsIHRh
cmdldCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2KENvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiR0xFUyB2ZXJzaW9uIDwgMy4w
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRl
R2V0UXVlcnlpdkJhc2UoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVHZXRRdWVyeU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQsIEdMZW51bSBw
bmFtZSwgR0x1aW50ICpwYXJhbXMpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkdMRVMgdmVyc2lvbiA8IDMuMCIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVC
YXNlKGNvbnRleHQsIGlkLCBwbmFtZSk7Cit9CisKIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRl
eHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNo
bWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVy
ZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGxheWVyKQogewpAQCAtMTEyNSwxNiArMTMzMywyNCBAQAog
ICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNh
cHMoKS5nZXQoaW50ZXJuYWxmb3JtYXQpOwogICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHNh
bXBsZXMpID4gZm9ybWF0Q2Fwcy5nZXRNYXhTYW1wbGVzKCkpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
CisgICAgICAgICAgICAgICAgICAiU2FtcGxlcyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4
aW11bSBzdXBwb3J0ZWQgdmFsdWUgZm9yIHRoZSBmb3JtYXQuIikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVJbnZh
bGlkYXRlRnJhbWVidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0qIGF0dGFjaG1lbnRzKQorYm9vbCBWYWxpZGF0
ZUludmFsaWRhdGVGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBH
THNpemVpIG51bUF0dGFjaG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogeworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJPcGVyYXRpb24gb25seSBzdXBwb3J0ZWQgb24gRVMg
My4wIGFuZCBhYm92ZSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGJv
b2wgZGVmYXVsdEZyYW1lYnVmZmVyID0gZmFsc2U7CiAKICAgICBzd2l0Y2ggKHRhcmdldCkKQEAg
LTExNDcsNzMgKzEzNjMsNjQgQEAKICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKS0+aWQoKSA9PSAwOwogICAgICAgICBi
cmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGZyYW1l
YnVmZmVyIHRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtQXR0YWNobWVudHM7ICsraSkKKyAgICByZXR1cm4gVmFsaWRh
dGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMs
IGF0dGFjaG1lbnRzLCBkZWZhdWx0RnJhbWVidWZmZXIpOworfQorCitib29sIFZhbGlkYXRlQ2xl
YXJCdWZmZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA8IDMpCiAgICAgewotICAgICAgICBpZiAoYXR0YWNobWVudHNb
aV0gPj0gR0xfQ09MT1JfQVRUQUNITUVOVDAgJiYgYXR0YWNobWVudHNbaV0gPD0gR0xfQ09MT1Jf
QVRUQUNITUVOVDE1KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZGVmYXVsdEZyYW1lYnVm
ZmVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgICAg
ICAgICAgaWYgKGF0dGFjaG1lbnRzW2ldID49IEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgY29udGV4
dC0+Z2V0Q2FwcygpLm1heENvbG9yQXR0YWNobWVudHMpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1l
bnRzW2ldKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFD
SE1FTlQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAg
ICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKLSAgICAgICAgICAgICAg
ICBpZiAoZGVmYXVsdEZyYW1lYnVmZmVyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfQ09MT1I6Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEg6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTDoKLSAg
ICAgICAgICAgICAgICBpZiAoIWRlZmF1bHRGcmFtZWJ1ZmZlcikKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQorICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZmJvID0gY29udGV4dC0+Z2V0U3RhdGUo
KS5nZXREcmF3RnJhbWVidWZmZXIoKTsKKyAgICBpZiAoIWZibyB8fCBmYm8tPmNoZWNrU3RhdHVz
KGNvbnRleHQtPmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcihDb250ZXh0ICpjb250ZXh0KQor
Ym9vbCBWYWxpZGF0ZURyYXdSYW5nZUVsZW1lbnRzKENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqaW5kZXhSYW5nZSkKIHsKICAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKICAgICB7Ci0gICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2Vz
IG5vdCBzdXBwb3J0IEdMRVMzLiIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZmJvID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRE
cmF3RnJhbWVidWZmZXIoKTsKLSAgICBpZiAoIWZibyB8fCBmYm8tPmNoZWNrU3RhdHVzKGNvbnRl
eHQtPmdldERhdGEoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgaWYgKGVuZCA8
IHN0YXJ0KQogICAgIHsKLSAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImVuZCA8IHN0YXJ0IikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKCFWYWxpZGF0ZURyYXdFbGVtZW50cyhjb250ZXh0
LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgaW5kZXhSYW5nZSkpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGluZGV4UmFuZ2UtPmVuZCA+IGVu
ZCB8fCBpbmRleFJhbmdlLT5zdGFydCA8IHN0YXJ0KQorICAgIHsKKyAgICAgICAgLy8gR0wgc3Bl
YyBzYXlzIHRoYXQgYmVoYXZpb3IgaW4gdGhpcyBjYXNlIGlzIHVuZGVmaW5lZCAtIGdlbmVyYXRp
bmcgYW4gZXJyb3IgaXMgZmluZS4KKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkluZGljZXMgYXJlIG91dCBvZiB0
aGUgc3RhcnQsIGVuZCByYW5nZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyNDksNyArMTQ1Niw3IEBACiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAotICAgIGlmIChzcmMgIT0gR0xfQkFDSyAmJiAoc3JjIDwgR0xfQ09M
T1JfQVRUQUNITUVOVDAgfHwgc3JjID4gR0xfQ09MT1JfQVRUQUNITUVOVDE1KSkKKyAgICBpZiAo
c3JjICE9IEdMX0JBQ0sgJiYgKHNyYyA8IEdMX0NPTE9SX0FUVEFDSE1FTlQwIHx8IHNyYyA+IEdM
X0NPTE9SX0FUVEFDSE1FTlQzMSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihnbDo6RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBlbnVtIGZvciAnc3JjJyBpbiBS
ZWFkQnVmZmVyIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjc5LDQgKzE0ODYsNTc4
IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1h
Z2UzRChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0x2b2lkICpkYXRhKQoreworICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxG
b3JtYXRJbmZvKGludGVybmFsZm9ybWF0KTsKKyAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fAorICAg
ICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkgIT0KKyAgICAgICAgICAgIGZvcm1h
dEluZm8uY29tcHV0ZUJsb2NrU2l6ZShHTF9VTlNJR05FRF9CWVRFLCB3aWR0aCwgaGVpZ2h0KSkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIDNEIHRleHR1cmUg
dGFyZ2V0IHZhbGlkYXRpb24KKyAgICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfM0QgJiYgdGFy
Z2V0ICE9IEdMX1RFWFRVUkVfMkRfQVJSQVkpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIk11c3Qgc3BlY2lm
eSBhIHZhbGlkIDNEIHRleHR1cmUgZGVzdGluYXRpb24gdGFyZ2V0IikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gdmFsaWRhdGVFUzNUZXhJbWFnZUZvcm1hdCBzZXRz
IHRoZSBlcnJvciBjb2RlIGlmIHRoZXJlIGlzIGFuIGVycm9yCisgICAgaWYgKCFWYWxpZGF0ZUVT
M1RleEltYWdlM0RQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB0cnVlLCBmYWxzZSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgR0xfTk9ORSwgR0xfTk9O
RSwgZGF0YSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7CiB9CisKK2Jvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGFycmF5KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheUJhc2UoY29udGV4dCwgYXJyYXkpOworfQorCiti
b29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250ZXh0KQoreworICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUHJv
Z3JhbUJpbmFyeShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYmluYXJ5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGVuZ3RoKQoreworICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZVByb2dyYW1CaW5hcnlCYXNlKGNvbnRl
eHQsIHByb2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpOworfQorCitib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbUJpbmFyeShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJpbmFy
eUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJpbmFyeSkKK3sK
KyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRQcm9ncmFt
QmluYXJ5QmFzZShjb250ZXh0LCBwcm9ncmFtLCBidWZTaXplLCBsZW5ndGgsIGJpbmFyeUZvcm1h
dCwgYmluYXJ5KTsKK30KKworYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKENvbnRleHQg
KmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQorewor
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0
IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKSA9PSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5h
bWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJ
TlQ6CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gR0xfRkFMU0UgJiYgdmFsdWUgIT0gR0xfVFJV
RSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgdmFs
dWUsIGV4cGVjdGVkIEdMX0ZBTFNFIG9yIEdMX1RSVUU6ICVpIiwgdmFsdWUpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwbmFtZTogMHglWCIsIHBuYW1lKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNyY1kwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNY
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFgwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkc3RZMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0
WDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRzdFkxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmaWx0ZXIpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhjb250ZXh0LCBzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WDEsIGRzdFkxLCBtYXNrLCBmaWx0ZXIpOwor
fQorCitib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQoreworICAgIHN3aXRjaCAoYnVmZmVyKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9DT0xPUjoKKyAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyIDwgMCB8
fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oZHJhd2J1ZmZlcikgPj0gY29u
dGV4dC0+Z2V0Q2FwcygpLm1heERyYXdCdWZmZXJzKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAgICAgICBpZiAoZHJhd2J1
ZmZlciAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZh
bGlkYXRlQ2xlYXJCdWZmZXIoY29udGV4dCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZl
cnVpdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRy
YXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKGJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ09MT1I6
CisgICAgICAgICAgICBpZiAoZHJhd2J1ZmZlciA8IDAgfHwKKyAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGRyYXdidWZmZXIpID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3
QnVmZmVycykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxp
ZGF0ZUNsZWFyQnVmZmVyKGNvbnRleHQpOworfQorCitib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJm
dihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCit7
CisgICAgc3dpdGNoIChidWZmZXIpCisgICAgeworICAgICAgICBjYXNlIEdMX0NPTE9SOgorICAg
ICAgICAgICAgaWYgKGRyYXdidWZmZXIgPCAwIHx8CisgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R0x1aW50PihkcmF3YnVmZmVyKSA+PSBjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZl
cnMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfREVQ
VEg6CisgICAgICAgICAgICBpZiAoZHJhd2J1ZmZlciAhPSAwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlQ2xlYXJCdWZmZXIoY29udGV4dCk7Cit9
CisKK2Jvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZpKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3Rl
bmNpbCkKK3sKKyAgICBzd2l0Y2ggKGJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNhc2UgR0xfREVQ
VEhfU1RFTkNJTDoKKyAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyICE9IDApCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVDbGVhckJ1ZmZlcihjb250
ZXh0KTsKK30KKworYm9vbCBWYWxpZGF0ZURyYXdCdWZmZXJzKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LCBHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKK3sKKyAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBw
b3J0IEdMRVMzLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biBWYWxpZGF0ZURyYXdCdWZmZXJzQmFzZShjb250ZXh0LCBuLCBidWZzKTsKK30KKworYm9vbCBW
YWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVFUzNDb3B5VGV4
SW1hZ2UzRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwg
eG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eW9mZnNldCwgem9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCk7Cit9CisKK2Jvb2wgVmFs
aWRhdGVUZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscykKK3sKKyAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVFUzNUZXhJbWFnZTNEUGFyYW1l
dGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZhbHNl
LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOworfQorCitib29sIFZhbGlkYXRl
VGV4U3ViSW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQorewor
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleEltYWdl
M0RQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZhbHNlLCB0cnVl
LCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLCBmb3JtYXQsIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKK30KKwor
Ym9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmRhdGEpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29u
c3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZm9y
bWF0KTsKKyAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fAorICAgICAgICBzdGF0aWNfY2FzdDxHTHVp
bnQ+KGltYWdlU2l6ZSkgIT0KKyAgICAgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZUJsb2NrU2l6
ZShHTF9VTlNJR05FRF9CWVRFLCB3aWR0aCwgaGVpZ2h0KSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGlmICghZGF0YSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJz
KGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIHRydWUsIHRydWUsIDAsIDAsIDAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwg
ZGVwdGgsIDAsIEdMX05PTkUsIEdMX05PTkUsIGRhdGEpOworfQorCitib29sIFZhbGlkYXRlR2Vu
UXVlcmllcyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBHTHVpbnQgKikKK3sKKyAgICByZXR1
cm4gVmFsaWRhdGVHZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxpZGF0
ZURlbGV0ZVF1ZXJpZXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgY29uc3QgR0x1aW50ICop
Cit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMoY29udGV4dCwgbik7Cit9CisK
K2Jvb2wgVmFsaWRhdGVHZW5TYW1wbGVycyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBjb3VudCwg
R0x1aW50ICopCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVDb3VudEVTMyhjb250
ZXh0LCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVTYW1wbGVycyhDb250ZXh0ICpj
b250ZXh0LCBHTGludCBjb3VudCwgY29uc3QgR0x1aW50ICopCit7CisgICAgcmV0dXJuIFZhbGlk
YXRlR2VuT3JEZWxldGVDb3VudEVTMyhjb250ZXh0LCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVHZW5UcmFuc2Zvcm1GZWVkYmFja3MoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwgR0x1aW50
ICopCit7CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxldGVFUzMoY29udGV4dCwgbik7Cit9
CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoQ29udGV4dCAqY29udGV4
dCwgR0xpbnQgbiwgY29uc3QgR0x1aW50ICppZHMpCit7CisgICAgaWYgKCFWYWxpZGF0ZUdlbk9y
RGVsZXRlRVMzKGNvbnRleHQsIG4pKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbjsgKytpKQorICAgIHsKKyAgICAgICAgYXV0
byAqdHJhbnNmb3JtRmVlZGJhY2sgPSBjb250ZXh0LT5nZXRUcmFuc2Zvcm1GZWVkYmFjayhpZHNb
aV0pOworICAgICAgICBpZiAodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0ciAmJiB0cmFuc2Zv
cm1GZWVkYmFjay0+aXNBY3RpdmUoKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRVMgMy4w
LjQgc2VjdGlvbiAyLjE1LjEgcGFnZSA4NgorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJBdHRlbXB0
IHRvIGRlbGV0ZSBhY3RpdmUgdHJhbnNmb3JtIGZlZWRiYWNrLiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBWYWxpZGF0ZUdlblZlcnRleEFycmF5cyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuLCBHTHVp
bnQgKikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0ZUVTMyhjb250ZXh0LCBuKTsK
K30KKworYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5cyhDb250ZXh0ICpjb250ZXh0LCBH
TGludCBuLCBjb25zdCBHTHVpbnQgKikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZW5PckRlbGV0
ZUVTMyhjb250ZXh0LCBuKTsKK30KKworYm9vbCBWYWxpZGF0ZUdlbk9yRGVsZXRlRVMzKENvbnRl
eHQgKmNvbnRleHQsIEdMaW50IG4pCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRlR2VuT3JEZWxl
dGUoY29udGV4dCwgbik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZW5PckRlbGV0ZUNvdW50RVMzKENv
bnRleHQgKmNvbnRleHQsIEdMaW50IGNvdW50KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChjb3VudCA8IDApCisg
ICAgeworICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAiY291bnQgPCAwIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcHJpbWl0aXZlTW9kZSkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdM
RVMzLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBzd2l0Y2ggKHByaW1p
dGl2ZU1vZGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RSSUFOR0xFUzoKKyAgICAgICAgY2Fz
ZSBHTF9MSU5FUzoKKyAgICAgICAgY2FzZSBHTF9QT0lOVFM6CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwcmltaXRpdmUgbW9kZS4iKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5z
Zm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVl
ZGJhY2soKTsKKyAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cik7CisKKyAg
ICBpZiAodHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkpCisgICAgeworICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRyYW5zZm9ybSBm
ZWVkYmFjayBpcyBhbHJlYWR5IGFjdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVy
aShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCBw
YXJhbSkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+aXNTYW1wbGVyKHNhbXBsZXIpKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVT
YW1wbGVyT2JqZWN0UGFyYW1ldGVyKGNvbnRleHQsIHBuYW1lKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlVGV4UGFyYW1QYXJhbWV0ZXJz
KGNvbnRleHQsIHBuYW1lLCBwYXJhbSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRl
cmYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCBwYXJhbSkKK3sKKyAgICAvLyBUaGUgb25seSBmbG9hdCBwYXJhbWV0ZXJzIGFyZSBNSU5fTE9E
IGFuZCBNQVhfTE9ELiBGb3IgdGhlc2UgYW55IHZhbHVlIGlzIHBlcm1pc3NpYmxlLCBzbworICAg
IC8vIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkgY2FuIGJlIHVzZWQgZm9yIHZhbGlkYXRpb24g
aGVyZS4KKyAgICByZXR1cm4gVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyaShjb250ZXh0LCBzYW1w
bGVyLCBwbmFtZSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHBhcmFtKSk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVHZXRCdWZmZXJQb2ludGVydihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMdm9pZCAqKnBhcmFtcykKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUdl
dEJ1ZmZlclBvaW50ZXJ2QmFzZShjb250ZXh0LCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOworfQor
Citib29sIFZhbGlkYXRlVW5tYXBCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVVbm1h
cEJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0KTsKK30KKworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZl
clJhbmdlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpCit7CisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3Vw
cG9ydCBHTEVTMy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gVmFsaWRhdGVNYXBCdWZmZXJSYW5nZUJhc2UoY29udGV4dCwgdGFyZ2V0LCBvZmZzZXQsIGxl
bmd0aCwgYWNjZXNzKTsKK30KKworYm9vbCBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFuZ2Uo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRy
IGxlbmd0aCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZUZsdXNoTWFwcGVkQnVmZmVyUmFu
Z2VCYXNlKGNvbnRleHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgpOworfQorCit9ICAvLyBuYW1l
c3BhY2UgZ2wKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRVMzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3ZhbGlkYXRpb25FUzMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMsMjAgKzEzLDE0MyBAQAogCiBuYW1lc3BhY2UgZ2wKIHsKLQogY2xhc3MgQ29udGV4dDsK
K3N0cnVjdCBJbmRleFJhbmdlOworY2xhc3MgVmFsaWRhdGlvbkNvbnRleHQ7CiAKLWJvb2wgVmFs
aWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBpc0NvbXByZXNzZWQs
IGJvb2wgaXNTdWJJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0
IEdMdm9pZCAqcGl4ZWxzKTsKK2Jvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNl
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpc0NvbXByZXNzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzU3ViSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgYm9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x2b2lkICpwaXhlbHMpOwogCi1ib29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVy
cyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBpc1N1YkltYWdlLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0
LCBHTGludCB4LCBHTGludCB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlcik7Citib29sIFZh
bGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgpOwogCi1ib29sIFZhbGlkYXRlRVMzVGV4
U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXpl
aSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0
aCk7Citib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2UyRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ29tcHJlc3NlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU3ViSW1hZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqcGl4ZWxzKTsKIAorYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlM0RQYXJhbWV0ZXJz
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c0NvbXByZXNzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
c1N1YkltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7CisKK2Jvb2wgVmFsaWRhdGVFUzNDb3B5
VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlz
U3ViSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHpvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYm9yZGVyKTsKKworYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZTJEUGFyYW1ldGVy
cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYm9yZGVyKTsKKworYm9vbCBWYWxpZGF0ZUVTM0NvcHlUZXhJbWFn
ZTNEUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyKTsKKworYm9vbCBWYWxpZGF0ZUVT
M1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCk7CisK
K2Jvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlMkRQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGRlcHRoKTsK
KworYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2UzRFBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxldmVscywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdo
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgp
OworCitib29sIFZhbGlkYXRlQmVnaW5RdWVyeShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaWQpOworCitib29sIFZhbGlkYXRlRW5kUXVlcnkoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCk7CisKK2Jvb2wgVmFsaWRhdGVHZXRRdWVyeWl2KENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKK2Jv
b2wgVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQs
IEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOworCiBib29sIFZhbGlkYXRlRnJhbWVidWZm
ZXJUZXh0dXJlTGF5ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0
dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRl
eHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBsYXllcik7CiAKQEAgLTM1LDE1ICsxNTgsMTU0IEBA
CiBib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogCi1ib29sIFZhbGlkYXRlSW52YWxpZGF0ZUZy
YW1lYnVmZmVyUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xlbnVtKiBhdHRhY2htZW50cyk7Citib29sIFZhbGlkYXRlSW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkg
bnVtQXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZW51bSAqYXR0YWNobWVudHMpOwogCi1ib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXIoQ29udGV4
dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXIoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQpOwogCitib29sIFZhbGlkYXRlRHJhd1JhbmdlRWxlbWVudHMoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJhbmdlICppbmRleFJhbmdl
KTsKKwogYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQqIHBhcmFtcyk7CiAKIGJvb2wgVmFsaWRh
dGVSZWFkQnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKTsKIAotfQorYm9vbCBW
YWxpZGF0ZUNvbXByZXNzZWRUZXhJbWFnZTNEKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEpOwog
Citib29sIFZhbGlkYXRlQmluZFZlcnRleEFycmF5KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBh
cnJheSk7Citib29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250ZXh0KTsKKwor
Ym9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxlbmd0aCk7
Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeShDb250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gKmJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJp
bmFyeSk7Citib29sIFZhbGlkYXRlUHJvZ3JhbVBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOworYm9vbCBWYWxpZGF0
ZUJsaXRGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzcmNYMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c3JjWTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gxLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNZMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgZHN0WDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGRzdFkwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkc3RYMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WTEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbHRlcik7Citib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVDbGVh
ckJ1ZmZlcnVpdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJmdihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworYm9vbCBWYWxpZGF0ZUNsZWFyQnVm
ZmVyZmkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJh
d2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgZGVwdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGVuY2lsKTsKK2Jvb2wgVmFsaWRhdGVEcmF3
QnVmZmVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBuLCBjb25zdCBHTGVu
dW0gKmJ1ZnMpOworYm9vbCBWYWxpZGF0ZUNvcHlUZXhTdWJJbWFnZTNEKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHlvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
em9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGhlaWdodCk7Citib29sIFZhbGlkYXRlVGV4SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICpwaXhlbHMpOworYm9vbCBWYWxpZGF0ZVRleFN1YkltYWdlM0QoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgem9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKnBpeGVscyk7Citib29sIFZhbGlkYXRlQ29tcHJlc3NlZFRleFN1Yklt
YWdlM0QoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB6b2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSk7CisKK2Jvb2wgVmFs
aWRhdGVHZW5RdWVyaWVzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIEdMdWludCAqaWRzKTsK
K2Jvb2wgVmFsaWRhdGVEZWxldGVRdWVyaWVzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNv
bnN0IEdMdWludCAqaWRzKTsKK2Jvb2wgVmFsaWRhdGVHZW5TYW1wbGVycyhDb250ZXh0ICpjb250
ZXh0LCBHTGludCBjb3VudCwgR0x1aW50ICpzYW1wbGVycyk7Citib29sIFZhbGlkYXRlRGVsZXRl
U2FtcGxlcnMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgY291bnQsIGNvbnN0IEdMdWludCAqc2Ft
cGxlcnMpOworYm9vbCBWYWxpZGF0ZUdlblRyYW5zZm9ybUZlZWRiYWNrcyhDb250ZXh0ICpjb250
ZXh0LCBHTGludCBuLCBHTHVpbnQgKmlkcyk7Citib29sIFZhbGlkYXRlRGVsZXRlVHJhbnNmb3Jt
RmVlZGJhY2tzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IG4sIGNvbnN0IEdMdWludCAqaWRzKTsK
K2Jvb2wgVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMoQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbiwg
R0x1aW50ICphcnJheXMpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVZlcnRleEFycmF5cyhDb250ZXh0
ICpjb250ZXh0LCBHTGludCBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7CisKK2Jvb2wgVmFsaWRh
dGVHZW5PckRlbGV0ZUVTMyhDb250ZXh0ICpjb250ZXh0LCBHTGludCBuKTsKK2Jvb2wgVmFsaWRh
dGVHZW5PckRlbGV0ZUNvdW50RVMzKENvbnRleHQgKmNvbnRleHQsIEdMaW50IGNvdW50KTsKKwor
Ym9vbCBWYWxpZGF0ZUJlZ2luVHJhbnNmb3JtRmVlZGJhY2soQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIHByaW1pdGl2ZU1vZGUpOworCitib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlcmkoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
OworYm9vbCBWYWxpZGF0ZVNhbXBsZXJQYXJhbWV0ZXJmKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOworCitib29sIFZhbGlkYXRl
R2V0QnVmZmVyUG9pbnRlcnYoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpOworYm9vbCBWYWxpZGF0ZVVubWFwQnVmZmVyKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOworYm9vbCBWYWxpZGF0ZU1hcEJ1ZmZlclJhbmdl
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MpOworYm9vbCBWYWxpZGF0ZUZsdXNoTWFw
cGVkQnVmZmVyUmFuZ2UoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpcHRyIGxlbmd0aCk7CisKK30gIC8vIG5hbWVzcGFjZSBnbAorCiAjZW5kaWYg
Ly8gTElCQU5HTEVfVkFMSURBVElPTl9FUzNfSF8KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5pdHRlc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5pdHRl
c3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3ZhbGlkYXRpb25FU191bml0dGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NDIgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyB2YWxpZGF0aW9uRVMgdW5pdCB0ZXN0czoKKy8vICAgVW5pdCB0
ZXN0cyBmb3IgZ2VuZXJhbCBFUyB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4KKy8vCisKKyNpbmNsdWRl
IDxnbW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJs
aWJBTkdMRS9EYXRhLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJ
bXBsX21vY2suaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbF9tb2Nr
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgorI2luY2x1ZGUgInRlc3RzL2FuZ2xlX3Vu
aXR0ZXN0c191dGlscy5oIgorCit1c2luZyBuYW1lc3BhY2UgZ2w7Cit1c2luZyBuYW1lc3BhY2Ug
cng7Cit1c2luZyB0ZXN0aW5nOjpfOwordXNpbmcgdGVzdGluZzo6TmljZU1vY2s7Cit1c2luZyB0
ZXN0aW5nOjpSZXR1cm47CisKK25hbWVzcGFjZQoreworCitjbGFzcyBNb2NrRmFjdG9yeSA6IHB1
YmxpYyBOdWxsRmFjdG9yeQoreworICBwdWJsaWM6CisgICAgTU9DS19NRVRIT0QxKGNyZWF0ZUZy
YW1lYnVmZmVyLCBGcmFtZWJ1ZmZlckltcGwgKihjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRhdGEg
JikpOworICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVQcm9ncmFtLCBQcm9ncmFtSW1wbCAqKGNvbnN0
IGdsOjpQcm9ncmFtOjpEYXRhICYpKTsKKyAgICBNT0NLX01FVEhPRDEoY3JlYXRlVmVydGV4QXJy
YXksIFZlcnRleEFycmF5SW1wbCAqKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGF0YSAmKSk7Cit9
OworCitjbGFzcyBNb2NrVmFsaWRhdGlvbkNvbnRleHQgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRl
eHQKK3sKKyAgcHVibGljOgorICAgIE1vY2tWYWxpZGF0aW9uQ29udGV4dChHTGludCBjbGllbnRW
ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBza2lwVmFsaWRhdGlvbik7CisKKyAg
ICBNT0NLX01FVEhPRDEocmVjb3JkRXJyb3IsIHZvaWQoY29uc3QgRXJyb3IgJikpOworfTsKKwor
TW9ja1ZhbGlkYXRpb25Db250ZXh0OjpNb2NrVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50
VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZl
eHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbGltaXRhdGlv
bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNr
aXBWYWxpZGF0aW9uKQorICAgIDogVmFsaWRhdGlvbkNvbnRleHQoY2xpZW50VmVyc2lvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgY2Fw
cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVDYXBzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZXh0ZW5zaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTWFu
YWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24pCit7Cit9CisKKy8vIFRlc3QgdGhhdCBBTkdMRSBn
ZW5lcmF0ZXMgYW4gSU5WQUxJRF9PUEVSQVRJT04gd2hlbiB2YWxpZGF0aW5nIGluZGV4IGRhdGEg
dGhhdCB1c2VzIGEgdmFsdWUKKy8vIGxhcmdlciB0aGFuIE1BWF9FTEVNRU5UX0lOREVYLiBOb3Qg
c3BlY2lmaWVkIGluIHRoZSBHTEVTIDMgc3BlYywgaXQncyB1bmRlZmluZWQgYmVoYXZpb3VyLAor
Ly8gYnV0IHdlIHdhbnQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBtYWludGFpbiB0aGlzIGJlaGF2aW91
ci4KK1RFU1QoVmFsaWRhdGlvbkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4R2l2ZXNF
cnJvcikKK3sKKyAgICBhdXRvIGZyYW1lYnVmZmVySW1wbCA9IE1ha2VGcmFtZWJ1ZmZlck1vY2so
KTsKKyAgICBhdXRvIHByb2dyYW1JbXBsICAgICA9IE1ha2VQcm9ncmFtTW9jaygpOworCisgICAg
Ly8gVE9ETyhqbWFkaWxsKTogR2VuZXJhbGl6ZSBzb21lIG9mIHRoaXMgY29kZSBzbyB3ZSBjYW4g
cmUtdXNlIGl0IGZvciBvdGhlciB0ZXN0cy4KKyAgICBOaWNlTW9jazxNb2NrRmFjdG9yeT4gbW9j
a0ZhY3Rvcnk7CisgICAgRVhQRUNUX0NBTEwobW9ja0ZhY3RvcnksIGNyZWF0ZUZyYW1lYnVmZmVy
KF8pKS5XaWxsT25jZShSZXR1cm4oZnJhbWVidWZmZXJJbXBsKSk7CisgICAgRVhQRUNUX0NBTEwo
bW9ja0ZhY3RvcnksIGNyZWF0ZVByb2dyYW0oXykpLldpbGxPbmNlKFJldHVybihwcm9ncmFtSW1w
bCkpOworICAgIEVYUEVDVF9DQUxMKG1vY2tGYWN0b3J5LCBjcmVhdGVWZXJ0ZXhBcnJheShfKSku
V2lsbE9uY2UoUmV0dXJuKG51bGxwdHIpKTsKKworICAgIFN0YXRlIHN0YXRlOworICAgIENhcHMg
Y2FwczsKKyAgICBUZXh0dXJlQ2Fwc01hcCB0ZXh0dXJlQ2FwczsKKyAgICBFeHRlbnNpb25zIGV4
dGVuc2lvbnM7CisgICAgTGltaXRhdGlvbnMgbGltaXRhdGlvbnM7CisKKyAgICAvLyBTZXQgc29t
ZSBiYXNpYyBjYXBzLgorICAgIGNhcHMubWF4RWxlbWVudEluZGV4ICAgICA9IDEwMDsKKyAgICBj
YXBzLm1heERyYXdCdWZmZXJzICAgICAgPSAxOworICAgIGNhcHMubWF4Q29sb3JBdHRhY2htZW50
cyA9IDE7CisgICAgc3RhdGUuaW5pdGlhbGl6ZShjYXBzLCBleHRlbnNpb25zLCAzLCBmYWxzZSk7
CisKKyAgICBOaWNlTW9jazxNb2NrVGV4dHVyZUltcGw+ICp0ZXh0dXJlSW1wbCA9IG5ldyBOaWNl
TW9jazxNb2NrVGV4dHVyZUltcGw+KCk7CisgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBz
ZXRTdG9yYWdlKF8sIF8sIF8sIF8pKS5XaWxsT25jZShSZXR1cm4oRXJyb3IoR0xfTk9fRVJST1Ip
KSk7CisgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBkZXN0cnVjdG9yKCkpLlRpbWVzKDEp
LlJldGlyZXNPblNhdHVyYXRpb24oKTsKKworICAgIFRleHR1cmUgKnRleHR1cmUgPSBuZXcgVGV4
dHVyZSh0ZXh0dXJlSW1wbCwgMCwgR0xfVEVYVFVSRV8yRCk7CisgICAgdGV4dHVyZS0+YWRkUmVm
KCk7CisgICAgdGV4dHVyZS0+c2V0U3RvcmFnZShHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwg
RXh0ZW50cygxLCAxLCAwKSk7CisKKyAgICBWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgPSBuZXcg
VmVydGV4QXJyYXkoJm1vY2tGYWN0b3J5LCAwLCAxKTsKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIgPSBuZXcgRnJhbWVidWZmZXIoY2FwcywgJm1vY2tGYWN0b3J5LCAxKTsKKyAgICBmcmFt
ZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9CQUNLLCBJ
bWFnZUluZGV4OjpNYWtlMkQoMCksIHRleHR1cmUpOworCisgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9
IG5ldyBQcm9ncmFtKCZtb2NrRmFjdG9yeSwgbnVsbHB0ciwgMSk7CisKKyAgICBzdGF0ZS5zZXRW
ZXJ0ZXhBcnJheUJpbmRpbmcodmVydGV4QXJyYXkpOworICAgIHN0YXRlLnNldERyYXdGcmFtZWJ1
ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOworICAgIHN0YXRlLnNldFByb2dyYW0ocHJvZ3JhbSk7
CisKKyAgICBOaWNlTW9jazxNb2NrVmFsaWRhdGlvbkNvbnRleHQ+IHRlc3RDb250ZXh0KDMsIHN0
YXRlLCBjYXBzLCB0ZXh0dXJlQ2FwcywgZXh0ZW5zaW9ucywgbnVsbHB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zLCBmYWxzZSk7
CisKKyAgICAvLyBTZXQgdGhlIGV4cGVjdGF0aW9uIGZvciB0aGUgdmFsaWRhdGlvbiBlcnJvciBo
ZXJlLgorICAgIEVycm9yIGV4cGVjdGVkRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGdfRXhj
ZWVkc01heEVsZW1lbnRFcnJvck1lc3NhZ2UpOworICAgIEVYUEVDVF9DQUxMKHRlc3RDb250ZXh0
LCByZWNvcmRFcnJvcihleHBlY3RlZEVycm9yKSkuVGltZXMoMSk7CisKKyAgICAvLyBDYWxsIG9u
Y2Ugd2l0aCBtYXhpbXVtIGluZGV4LCBhbmQgb25jZSB3aXRoIGFuIGV4Y2Vzc2l2ZSBpbmRleC4K
KyAgICBHTHVpbnQgaW5kZXhEYXRhW10gPSB7MCwgMSwgc3RhdGljX2Nhc3Q8R0x1aW50PihjYXBz
Lm1heEVsZW1lbnRJbmRleCAtIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAzLCA0LCBz
dGF0aWNfY2FzdDxHTHVpbnQ+KGNhcHMubWF4RWxlbWVudEluZGV4KX07CisgICAgSW5kZXhSYW5n
ZSBpbmRleFJhbmdlOworICAgIEVYUEVDVF9UUlVFKFZhbGlkYXRlRHJhd0VsZW1lbnRzKCZ0ZXN0
Q29udGV4dCwgR0xfVFJJQU5HTEVTLCAzLCBHTF9VTlNJR05FRF9JTlQsIGluZGV4RGF0YSwgMSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5kZXhSYW5nZSkpOworICAg
IEVYUEVDVF9GQUxTRShWYWxpZGF0ZURyYXdFbGVtZW50cygmdGVzdENvbnRleHQsIEdMX1RSSUFO
R0xFUywgNiwgR0xfVU5TSUdORURfSU5ULCBpbmRleERhdGEsIDIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZpbmRleFJhbmdlKSk7CisKKyAgICB0ZXh0dXJlLT5yZWxl
YXNlKCk7CisKKyAgICBzdGF0ZS5zZXRWZXJ0ZXhBcnJheUJpbmRpbmcobnVsbHB0cik7CisgICAg
c3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhudWxscHRyKTsKKyAgICBzdGF0ZS5zZXRQ
cm9ncmFtKG51bGxwdHIpOworCisgICAgU2FmZURlbGV0ZSh2ZXJ0ZXhBcnJheSk7CisgICAgU2Fm
ZURlbGV0ZShmcmFtZWJ1ZmZlcik7CisgICAgU2FmZURlbGV0ZShwcm9ncmFtKTsKK30KKworfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9saWJFR0wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvbGliRUdMLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcs
OSArMjU3LDEwNSBAQAogICAgIHJldHVybiBlZ2w6OlF1ZXJ5RGV2aWNlU3RyaW5nRVhUKGRldmlj
ZSwgbmFtZSk7CiB9CiAKK0VHTEltYWdlS0hSIEVHTEFQSUVOVFJZIGVnbENyZWF0ZUltYWdlS0hS
KEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMQ29udGV4dCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQoreworICAgIHJldHVy
biBlZ2w6OkNyZWF0ZUltYWdlS0hSKGRweSwgY3R4LCB0YXJnZXQsIGJ1ZmZlciwgYXR0cmliX2xp
c3QpOworfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbERlc3Ryb3lJbWFnZUtIUihFR0xE
aXNwbGF5IGRweSwgRUdMSW1hZ2VLSFIgaW1hZ2UpCit7CisgICAgcmV0dXJuIGVnbDo6RGVzdHJv
eUltYWdlS0hSKGRweSwgaW1hZ2UpOworfQorCitFR0xEZXZpY2VFWFQgRUdMQVBJRU5UUlkgZWds
Q3JlYXRlRGV2aWNlQU5HTEUoRUdMaW50IGRldmljZV90eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm5hdGl2ZV9kZXZpY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMQXR0cmliICph
dHRyaWJfbGlzdCkKK3sKKyAgICByZXR1cm4gZWdsOjpDcmVhdGVEZXZpY2VBTkdMRShkZXZpY2Vf
dHlwZSwgbmF0aXZlX2RldmljZSwgYXR0cmliX2xpc3QpOworfQorCitFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIGVnbFJlbGVhc2VEZXZpY2VBTkdMRShFR0xEZXZpY2VFWFQgZGV2aWNlKQoreworICAg
IHJldHVybiBlZ2w6OlJlbGVhc2VEZXZpY2VBTkdMRShkZXZpY2UpOworfQorCiBfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIEVHTEFQSUVOVFJZIGVnbEdldFByb2NBZGRy
ZXNzKGNvbnN0IGNoYXIgKnByb2NuYW1lKQogewogICAgIHJldHVybiBlZ2w6OkdldFByb2NBZGRy
ZXNzKHByb2NuYW1lKTsKIH0KIAorRUdMU3RyZWFtS0hSIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVN0
cmVhbUtIUihFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKK3sKKyAg
ICByZXR1cm4gZWdsOjpDcmVhdGVTdHJlYW1LSFIoZHB5LCBhdHRyaWJfbGlzdCk7CiB9CisKK0VH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsRGVzdHJveVN0cmVhbUtIUihFR0xEaXNwbGF5IGRweSwg
RUdMU3RyZWFtS0hSIHN0cmVhbSkKK3sKKyAgICByZXR1cm4gZWdsOjpEZXN0cm95U3RyZWFtS0hS
KGRweSwgc3RyZWFtKTsKK30KKworRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1BdHRy
aWJLSFIoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xTdHJlYW1LSFIgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMZW51bSBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgdmFsdWUpCit7CisgICAgcmV0dXJuIGVnbDo6U3Ry
ZWFtQXR0cmliS0hSKGRweSwgc3RyZWFtLCBhdHRyaWJ1dGUsIHZhbHVlKTsKK30KKworRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeVN0cmVhbUtIUihFR0xEaXNwbGF5IGRweSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3RyZWFtS0hSIHN0cmVhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBhdHRyaWJ1
dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqdmFs
dWUpCit7CisgICAgcmV0dXJuIGVnbDo6UXVlcnlTdHJlYW1LSFIoZHB5LCBzdHJlYW0sIGF0dHJp
YnV0ZSwgdmFsdWUpOworfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5U3RyZWFt
dTY0S0hSKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xTdHJlYW1LSFIgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICp2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gZWdsOjpRdWVyeVN0cmVhbXU2NEtIUihkcHksIHN0cmVhbSwgYXR0cmlidXRlLCB2YWx1
ZSk7Cit9CisKK0VHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1
cmVFeHRlcm5hbEtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSkKK3sKKyAg
ICByZXR1cm4gZWdsOjpTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsS0hSKGRweSwgc3Ry
ZWFtKTsKK30KKworRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1Db25zdW1lckFjcXVp
cmVLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCit7CisgICAgcmV0dXJu
IGVnbDo6U3RyZWFtQ29uc3VtZXJBY3F1aXJlS0hSKGRweSwgc3RyZWFtKTsKK30KKworRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1Db25zdW1lclJlbGVhc2VLSFIoRUdMRGlzcGxheSBk
cHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCit7CisgICAgcmV0dXJuIGVnbDo6U3RyZWFtQ29uc3Vt
ZXJSZWxlYXNlS0hSKGRweSwgc3RyZWFtKTsKK30KKworRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBl
Z2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKEVHTERpc3BsYXkgZHB5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQXR0cmliICph
dHRyaWJfbGlzdCkKK3sKKyAgICByZXR1cm4gZWdsOjpTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4
dGVybmFsQXR0cmlic05WKGRweSwgc3RyZWFtLCBhdHRyaWJfbGlzdCk7Cit9CisKK0VHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgZWdsQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMkFOR0xF
KEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3RyZWFtS0hSIHN0cmVhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpCit7CisgICAgcmV0dXJuIGVnbDo6Q3JlYXRl
U3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMkFOR0xFKGRweSwgc3RyZWFtLCBhdHRyaWJfbGlz
dCk7Cit9CisKK0VHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3RyZWFtUG9zdEQzRFRleHR1cmVO
VjEyQU5HTEUoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRleHR1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpCit7CisgICAgcmV0dXJuIGVnbDo6U3Ry
ZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoZHB5LCBzdHJlYW0sIHRleHR1cmUsIGF0dHJpYl9s
aXN0KTsKK30KK30KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGli
RUdMLmRlZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdM
L2xpYkVHTC5kZWYJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvbGliRUdMLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMSw1NiArMSw3MSBAQAog
TElCUkFSWSBsaWJFR0wKIEVYUE9SVFMKLSAgICBlZ2xCaW5kQVBJICAgICAgICAgICAgICAgICAg
ICAgICBAMTQKLSAgICBlZ2xCaW5kVGV4SW1hZ2UgICAgICAgICAgICAgICAgICBAMjAKLSAgICBl
Z2xDaG9vc2VDb25maWcgICAgICAgICAgICAgICAgICBANwotICAgIGVnbENvcHlCdWZmZXJzICAg
ICAgICAgICAgICAgICAgIEAzMwotICAgIGVnbENyZWF0ZUNvbnRleHQgICAgICAgICAgICAgICAg
IEAyMwotICAgIGVnbENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyIEAxOAotICAgIGVnbENy
ZWF0ZVBidWZmZXJTdXJmYWNlICAgICAgICAgIEAxMAotICAgIGVnbENyZWF0ZVBpeG1hcFN1cmZh
Y2UgICAgICAgICAgIEAxMQotICAgIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UgICAgICAgICAgIEA5
Ci0gICAgZWdsRGVzdHJveUNvbnRleHQgICAgICAgICAgICAgICAgQDI0Ci0gICAgZWdsRGVzdHJv
eVN1cmZhY2UgICAgICAgICAgICAgICAgQDEyCi0gICAgZWdsR2V0Q29uZmlnQXR0cmliICAgICAg
ICAgICAgICAgQDgKLSAgICBlZ2xHZXRDb25maWdzICAgICAgICAgICAgICAgICAgICBANgotICAg
IGVnbEdldEN1cnJlbnRDb250ZXh0ICAgICAgICAgICAgIEAyNgotICAgIGVnbEdldEN1cnJlbnRE
aXNwbGF5ICAgICAgICAgICAgIEAyOAotICAgIGVnbEdldEN1cnJlbnRTdXJmYWNlICAgICAgICAg
ICAgIEAyNwotICAgIGVnbEdldERpc3BsYXkgICAgICAgICAgICAgICAgICAgIEAyCi0gICAgZWds
R2V0RXJyb3IgICAgICAgICAgICAgICAgICAgICAgQDEKLSAgICBlZ2xHZXRQcm9jQWRkcmVzcyAg
ICAgICAgICAgICAgICBAMzQKLSAgICBlZ2xJbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBA
MwotICAgIGVnbE1ha2VDdXJyZW50ICAgICAgICAgICAgICAgICAgIEAyNQotICAgIGVnbFF1ZXJ5
QVBJICAgICAgICAgICAgICAgICAgICAgIEAxNQotICAgIGVnbFF1ZXJ5Q29udGV4dCAgICAgICAg
ICAgICAgICAgIEAyOQotICAgIGVnbFF1ZXJ5U3RyaW5nICAgICAgICAgICAgICAgICAgIEA1Ci0g
ICAgZWdsUXVlcnlTdXJmYWNlICAgICAgICAgICAgICAgICAgQDEzCi0gICAgZWdsUmVsZWFzZVRl
eEltYWdlICAgICAgICAgICAgICAgQDIxCi0gICAgZWdsUmVsZWFzZVRocmVhZCAgICAgICAgICAg
ICAgICAgQDE3Ci0gICAgZWdsU3VyZmFjZUF0dHJpYiAgICAgICAgICAgICAgICAgQDE5Ci0gICAg
ZWdsU3dhcEJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgQDMyCi0gICAgZWdsU3dhcEludGVydmFs
ICAgICAgICAgICAgICAgICAgQDIyCi0gICAgZWdsVGVybWluYXRlICAgICAgICAgICAgICAgICAg
ICAgQDQKLSAgICBlZ2xXYWl0Q2xpZW50ICAgICAgICAgICAgICAgICAgICBAMTYKLSAgICBlZ2xX
YWl0R0wgICAgICAgICAgICAgICAgICAgICAgICBAMzAKLSAgICBlZ2xXYWl0TmF0aXZlICAgICAg
ICAgICAgICAgICAgICBAMzEKKyAgICBlZ2xCaW5kQVBJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEAxNAorICAgIGVnbEJpbmRUZXhJbWFnZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQDIwCisgICAgZWdsQ2hvb3NlQ29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBANworICAgIGVnbENvcHlCdWZmZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDMz
CisgICAgZWdsQ3JlYXRlQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjMKKyAg
ICBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciAgICAgICAgICAgIEAxOAorICAgIGVn
bENyZWF0ZVBidWZmZXJTdXJmYWNlICAgICAgICAgICAgICAgICAgICAgQDEwCisgICAgZWdsQ3Jl
YXRlUGl4bWFwU3VyZmFjZSAgICAgICAgICAgICAgICAgICAgICBAMTEKKyAgICBlZ2xDcmVhdGVX
aW5kb3dTdXJmYWNlICAgICAgICAgICAgICAgICAgICAgIEA5CisgICAgZWdsRGVzdHJveUNvbnRl
eHQgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjQKKyAgICBlZ2xEZXN0cm95U3VyZmFjZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEAxMgorICAgIGVnbEdldENvbmZpZ0F0dHJpYiAgICAg
ICAgICAgICAgICAgICAgICAgICAgQDgKKyAgICBlZ2xHZXRDb25maWdzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEA2CisgICAgZWdsR2V0Q3VycmVudENvbnRleHQgICAgICAgICAgICAg
ICAgICAgICAgICBAMjYKKyAgICBlZ2xHZXRDdXJyZW50RGlzcGxheSAgICAgICAgICAgICAgICAg
ICAgICAgIEAyOAorICAgIGVnbEdldEN1cnJlbnRTdXJmYWNlICAgICAgICAgICAgICAgICAgICAg
ICAgQDI3CisgICAgZWdsR2V0RGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBA
MgorICAgIGVnbEdldEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDEKKyAg
ICBlZ2xHZXRQcm9jQWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzNAorICAgIGVn
bEluaXRpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDMKKyAgICBlZ2xNYWtl
Q3VycmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAyNQorICAgIGVnbFF1ZXJ5QVBJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE1CisgICAgZWdsUXVlcnlDb250ZXh0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMjkKKyAgICBlZ2xRdWVyeVN0cmluZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEA1CisgICAgZWdsUXVlcnlTdXJmYWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBAMTMKKyAgICBlZ2xSZWxlYXNlVGV4SW1hZ2UgICAgICAgICAg
ICAgICAgICAgICAgICAgIEAyMQorICAgIGVnbFJlbGVhc2VUaHJlYWQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQDE3CisgICAgZWdsU3VyZmFjZUF0dHJpYiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBAMTkKKyAgICBlZ2xTd2FwQnVmZmVycyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEAzMgorICAgIGVnbFN3YXBJbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QDIyCisgICAgZWdsVGVybWluYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBANAor
ICAgIGVnbFdhaXRDbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDE2CisgICAg
ZWdsV2FpdEdMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzAKKyAgICBlZ2xX
YWl0TmF0aXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzMQogCiAgICAgOyBFeHRl
bnNpb25zCi0gICAgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUICAgICAgICAgQDM1Ci0gICAgZWds
UXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFICAgICAgQDM2Ci0gICAgZWdsUG9zdFN1YkJ1ZmZlck5W
ICAgICAgICAgICAgICAgQDM3Ci0gICAgZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhUICAgICAgICAg
QDQ4Ci0gICAgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQgICAgICAgICAgQDQ5Ci0gICAgZWdsUXVl
cnlEZXZpY2VTdHJpbmdFWFQgICAgICAgICAgQDUwCisgICAgZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUICAgICAgICAgICAgICAgICAgICBAMzUKKyAgICBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5H
TEUgICAgICAgICAgICAgICAgIEAzNgorICAgIGVnbFBvc3RTdWJCdWZmZXJOViAgICAgICAgICAg
ICAgICAgICAgICAgICAgQDM3CisgICAgZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhUICAgICAgICAg
ICAgICAgICAgICBANDgKKyAgICBlZ2xRdWVyeURldmljZUF0dHJpYkVYVCAgICAgICAgICAgICAg
ICAgICAgIEA0OQorICAgIGVnbFF1ZXJ5RGV2aWNlU3RyaW5nRVhUICAgICAgICAgICAgICAgICAg
ICAgQDUwCisgICAgZWdsQ3JlYXRlSW1hZ2VLSFIgICAgICAgICAgICAgICAgICAgICAgICAgICBA
NTEKKyAgICBlZ2xEZXN0cm95SW1hZ2VLSFIgICAgICAgICAgICAgICAgICAgICAgICAgIEA1Mgor
ICAgIGVnbENyZWF0ZURldmljZUFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgQDUzCisgICAg
ZWdsUmVsZWFzZURldmljZUFOR0xFICAgICAgICAgICAgICAgICAgICAgICBANTQKKyAgICBlZ2xD
cmVhdGVTdHJlYW1LSFIgICAgICAgICAgICAgICAgICAgICAgICAgIEA1NQorICAgIGVnbERlc3Ry
b3lTdHJlYW1LSFIgICAgICAgICAgICAgICAgICAgICAgICAgQDU2CisgICAgZWdsU3RyZWFtQXR0
cmliS0hSICAgICAgICAgICAgICAgICAgICAgICAgICBANTcKKyAgICBlZ2xRdWVyeVN0cmVhbUtI
UiAgICAgICAgICAgICAgICAgICAgICAgICAgIEA1OAorICAgIGVnbFF1ZXJ5U3RyZWFtdTY0S0hS
ICAgICAgICAgICAgICAgICAgICAgICAgQDU5CisgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1
cmVFeHRlcm5hbEtIUiAgICAgICBANjAKKyAgICBlZ2xTdHJlYW1Db25zdW1lckFjcXVpcmVLSFIg
ICAgICAgICAgICAgICAgIEA2MQorICAgIGVnbFN0cmVhbUNvbnN1bWVyUmVsZWFzZUtIUiAgICAg
ICAgICAgICAgICAgQDYyCisgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0
dHJpYnNOViBANjMKKyAgICBlZ2xDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyQU5H
TEUgIEA2NAorICAgIGVnbFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFICAgICAgICAgICAg
QDY1CiAKICAgICA7IDEuNSBlbnRyeSBwb2ludHMKLSAgICBlZ2xDcmVhdGVTeW5jICAgICAgICAg
ICAgICAgICAgICBAMzgKLSAgICBlZ2xEZXN0cm95U3luYyAgICAgICAgICAgICAgICAgICBAMzkK
LSAgICBlZ2xDbGllbnRXYWl0U3luYyAgICAgICAgICAgICAgICBANDAKLSAgICBlZ2xHZXRTeW5j
QXR0cmliICAgICAgICAgICAgICAgICBANDEKLSAgICBlZ2xDcmVhdGVJbWFnZSAgICAgICAgICAg
ICAgICAgICBANDIKLSAgICBlZ2xEZXN0cm95SW1hZ2UgICAgICAgICAgICAgICAgICBANDMKLSAg
ICBlZ2xHZXRQbGF0Zm9ybURpc3BsYXkgICAgICAgICAgICBANDQKLSAgICBlZ2xDcmVhdGVQbGF0
Zm9ybVdpbmRvd1N1cmZhY2UgICBANDUKLSAgICBlZ2xDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZh
Y2UgICBANDYKLSAgICBlZ2xXYWl0U3luYyAgICAgICAgICAgICAgICAgICAgICBANDcKKyAgICBl
Z2xDcmVhdGVTeW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzOAorICAgIGVnbERl
c3Ryb3lTeW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQDM5CisgICAgZWdsQ2xpZW50
V2FpdFN5bmMgICAgICAgICAgICAgICAgICAgICAgICAgICBANDAKKyAgICBlZ2xHZXRTeW5jQXR0
cmliICAgICAgICAgICAgICAgICAgICAgICAgICAgIEA0MQorICAgIGVnbENyZWF0ZUltYWdlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQDQyCisgICAgZWdsRGVzdHJveUltYWdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBANDMKKyAgICBlZ2xHZXRQbGF0Zm9ybURpc3BsYXkgICAg
ICAgICAgICAgICAgICAgICAgIEA0NAorICAgIGVnbENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFj
ZSAgICAgICAgICAgICAgQDQ1CisgICAgZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlICAg
ICAgICAgICAgICBANDYKKyAgICBlZ2xXYWl0U3luYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEA0NwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJF
R0wucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9s
aWJFR0wucmMJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbGliRUdMLnJjCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBACiAvLw0K
IA0KIFZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTw0KLSBGSUxFVkVSU0lPTiBBTkdMRV9NQUpP
Ul9WRVJTSU9OLEFOR0xFX01JTk9SX1ZFUlNJT04sMCwwDQotIFBST0RVQ1RWRVJTSU9OIEFOR0xF
X01BSk9SX1ZFUlNJT04sQU5HTEVfTUlOT1JfVkVSU0lPTiwwLDANCisgRklMRVZFUlNJT04gQU5H
TEVfTUFKT1JfVkVSU0lPTixBTkdMRV9NSU5PUl9WRVJTSU9OLEFOR0xFX1JFVklTSU9OLDANCisg
UFJPRFVDVFZFUlNJT04gQU5HTEVfTUFKT1JfVkVSU0lPTixBTkdMRV9NSU5PUl9WRVJTSU9OLEFO
R0xFX1JFVklTSU9OLDANCiAgRklMRUZMQUdTTUFTSyAweDE3TA0KICNpZmRlZiBfREVCVUcNCiAg
RklMRUZMQUdTIDB4MUwNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdM
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC5n
eXBpCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdMLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUsMjQgQEAKIHsKICAgICAjIEV2ZXJ5
dGhpbmcgYmVsb3cgdGhpcyBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZC4gSWYgeW91IGNo
YW5nZQogICAgICMgYW55dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUvQlVJTEQuZ24KKyAgICAndmFy
aWFibGVzJzoKKyAgICB7CisgICAgICAgICdhbmdsZV9zdGFuZGFsb25lJSc6IDAsCisgICAgfSwK
ICAgICAndGFyZ2V0cyc6CiAgICAgWwogICAgICAgICB7CiAgICAgICAgICAgICAndGFyZ2V0X25h
bWUnOiAnbGliRUdMJywKLSAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKLSAg
ICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbICdsaWJHTEVTdjInLCBdLAotICAgICAgICAgICAg
J2luY2x1ZGVzJzogWyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCisgICAgICAg
ICAgICAndHlwZSc6ICc8KGFuZ2xlX2dsX2xpYnJhcnlfdHlwZSknLAorICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJ2xpYkFOR0xFJywK
KyAgICAgICAgICAgICAgICAnbGliR0xFU3YyJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAnaW5jbHVkZXMnOgorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICcuLi9idWlsZC9j
b21tb25fZGVmaW5lcy5neXBpJywKKyAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnaW5jbHVk
ZV9kaXJzJzoKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAnLicsCkBAIC0yMSwzMiAr
MzIsMTIgQEAKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAnPEAobGliZWdsX3NvdXJj
ZXMpJywKICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgJ0dMX0FQSUNBTEw9JywKLSAgICAgICAgICAgICAgICAnR0xf
R0xFWFRfUFJPVE9UWVBFUz0nLAotICAgICAgICAgICAgICAgICdFR0xBUEk9JywKLSAgICAgICAg
ICAgICAgICAnTElCRUdMX0lNUExFTUVOVEFUSU9OJywKLSAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAnY29uZGl0aW9ucyc6CiAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgWydhbmds
ZV9idWlsZF93aW5ydD09MScsCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAnbXN2c19lbmFibGVfd2lucnQnIDogJzEnLAogICAgICAgICAgICAgICAgICAgICAnbXN2c19y
ZXF1aXJlc19pbXBvcnRsaWJyYXJ5JyA6ICd0cnVlJywKLSAgICAgICAgICAgICAgICAgICAgJ21z
dnNfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAnVkNMaW5rZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnRW5hYmxlQ09NREFURm9sZGluZyc6ICcxJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnT3B0aW1pemVSZWZlcmVuY2VzJzogJzEnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
IH1dLAotICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucGhvbmU9PTEnLAotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ21zdnNfZW5hYmxlX3dpbnBob25lJyA6
ICcxJywKLSAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAg
ICAgXSwKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlf
cG9pbnRzX2VnbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDkgQEAKIAogI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZWdsLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0
LmgiCisjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5oIgogI2luY2x1
ZGUgImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgiCi0jaW5jbHVkZSAibGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9leHQuaCIKKyNpbmNsdWRlICJsaWJHTEVTdjIv
ZW50cnlfcG9pbnRzX2dsZXNfM18wLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL2dsb2JhbF9zdGF0
ZS5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgpAQCAtNDAsNyArNDEsNyBAQAog
ewogICAgIEVWRU5UKCIoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheV9pZCA9IDB4JTAuOHAp
IiwgZGlzcGxheV9pZCk7CiAKLSAgICByZXR1cm4gRGlzcGxheTo6Z2V0RGlzcGxheShkaXNwbGF5
X2lkLCBBdHRyaWJ1dGVNYXAoKSk7CisgICAgcmV0dXJuIERpc3BsYXk6OkdldERpc3BsYXlGcm9t
QXR0cmlicyhyZWludGVycHJldF9jYXN0PHZvaWQgKj4oZGlzcGxheV9pZCksIEF0dHJpYnV0ZU1h
cCgpKTsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBJbml0aWFsaXplKEVHTERpc3BsYXkg
ZHB5LCBFR0xpbnQgKm1ham9yLCBFR0xpbnQgKm1pbm9yKQpAQCAtNDgsMTQgKzQ5LDEzIEBACiAg
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCAqbWFqb3IgPSAweCUw
LjhwLCBFR0xpbnQgKm1pbm9yID0gMHglMC44cCkiLAogICAgICAgICAgIGRweSwgbWFqb3IsIG1p
bm9yKTsKIAotICAgIGlmIChkcHkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgRGlzcGxheSAqZGlz
cGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBpZiAoZHB5ID09IEVHTF9O
T19ESVNQTEFZIHx8ICFEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheShkaXNwbGF5KSkKICAgICB7CiAg
ICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSkpOwogICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNf
Y2FzdDxEaXNwbGF5Kj4oZHB5KTsKLQogICAgIEVycm9yIGVycm9yID0gZGlzcGxheS0+aW5pdGlh
bGl6ZSgpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewpAQCAtNzQsMTMgKzc0LDEz
IEBACiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHApIiwgZHB5KTsKIAot
ICAgIGlmIChkcHkgPT0gRUdMX05PX0RJU1BMQVkpCisgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0
YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBpZiAoZHB5ID09IEVHTF9OT19ESVNQTEFZ
IHx8ICFEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheShkaXNwbGF5KSkKICAgICB7CiAgICAgICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSkpOwogICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOwogICAgIH0KIAotICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNw
bGF5Kj4oZHB5KTsKICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IEdldEdsb2JhbENvbnRleHQo
KTsKIAogICAgIGlmIChkaXNwbGF5LT5pc1ZhbGlkQ29udGV4dChjb250ZXh0KSkKQEAgLTE3MSw3
ICsxNzEsNyBAQAogICAgICAgICAgICAgY29uZmlnc1tpXSA9IGNvbnN0X2Nhc3Q8Q29uZmlnKj4o
ZmlsdGVyZWRDb25maWdzW2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICAqbnVtX2NvbmZpZyA9
IGZpbHRlcmVkQ29uZmlncy5zaXplKCk7CisgICAgKm51bV9jb25maWcgPSBzdGF0aWNfY2FzdDxF
R0xpbnQ+KGZpbHRlcmVkQ29uZmlncy5zaXplKCkpOwogCiAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CkBAIC0xOTgsNyArMTk4LDgg
QEAKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBzdGQ6OnZlY3Rvcjxj
b25zdCBDb25maWcqPiBmaWx0ZXJlZENvbmZpZ3MgPSBkaXNwbGF5LT5nZXRDb25maWdzKEF0dHJp
YnV0ZU1hcChhdHRyaWJfbGlzdCkpOworICAgIHN0ZDo6dmVjdG9yPGNvbnN0IENvbmZpZyAqPiBm
aWx0ZXJlZENvbmZpZ3MgPQorICAgICAgICBkaXNwbGF5LT5nZXRDb25maWdzKEF0dHJpYnV0ZU1h
cDo6Q3JlYXRlRnJvbUludEFycmF5KGF0dHJpYl9saXN0KSk7CiAgICAgaWYgKGNvbmZpZ3MpCiAg
ICAgewogICAgICAgICBmaWx0ZXJlZENvbmZpZ3MucmVzaXplKHN0ZDo6bWluPHNpemVfdD4oZmls
dGVyZWRDb25maWdzLnNpemUoKSwgY29uZmlnX3NpemUpKTsKQEAgLTIwNyw3ICsyMDgsNyBAQAog
ICAgICAgICAgICAgY29uZmlnc1tpXSA9IGNvbnN0X2Nhc3Q8Q29uZmlnKj4oZmlsdGVyZWRDb25m
aWdzW2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICAqbnVtX2NvbmZpZyA9IGZpbHRlcmVkQ29u
Zmlncy5zaXplKCk7CisgICAgKm51bV9jb25maWcgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGZpbHRl
cmVkQ29uZmlncy5zaXplKCkpOwogCiAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NF
U1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CkBAIC0yNDUsNyArMjQ2LDcgQEAKIAogICAgIERp
c3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBDb25maWcg
KmNvbmZpZ3VyYXRpb24gPSBzdGF0aWNfY2FzdDxDb25maWcqPihjb25maWcpOwotICAgIEF0dHJp
YnV0ZU1hcCBhdHRyaWJ1dGVzKGF0dHJpYl9saXN0KTsKKyAgICBBdHRyaWJ1dGVNYXAgYXR0cmli
dXRlcyA9IEF0dHJpYnV0ZU1hcDo6Q3JlYXRlRnJvbUludEFycmF5KGF0dHJpYl9saXN0KTsKIAog
ICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDcmVhdGVXaW5kb3dTdXJmYWNlKGRpc3BsYXksIGNv
bmZpZ3VyYXRpb24sIHdpbiwgYXR0cmlidXRlcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
QEAgLTI3Miw3ICsyNzMsNyBAQAogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PERpc3BsYXkqPihkcHkpOwogICAgIENvbmZpZyAqY29uZmlndXJhdGlvbiA9IHN0YXRpY19jYXN0
PENvbmZpZyo+KGNvbmZpZyk7Ci0gICAgQXR0cmlidXRlTWFwIGF0dHJpYnV0ZXMoYXR0cmliX2xp
c3QpOworICAgIEF0dHJpYnV0ZU1hcCBhdHRyaWJ1dGVzID0gQXR0cmlidXRlTWFwOjpDcmVhdGVG
cm9tSW50QXJyYXkoYXR0cmliX2xpc3QpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNy
ZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXksIGNvbmZpZ3VyYXRpb24sIGF0dHJpYnV0ZXMpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCkBAIC00MjYsNiArNDI3LDM3IEBACiAgICAgICAgIH0K
ICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+aXNGaXhlZFNpemUoKTsKICAgICAgICAgYnJl
YWs7CisgICAgICBjYXNlIEVHTF9GTEVYSUJMRV9TVVJGQUNFX0NPTVBBVElCSUxJVFlfU1VQUE9S
VEVEX0FOR0xFOgorICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmZsZXhp
YmxlU3VyZmFjZUNvbXBhdGliaWxpdHkpCisgICAgICAgICAgeworICAgICAgICAgICAgICBTZXRH
bG9iYWxFcnJvcigKKyAgICAgICAgICAgICAgICAgIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9GTEVYSUJMRV9TVVJGQUNFX0NPTVBBVElCSUxJ
VFlfU1VQUE9SVEVEX0FOR0xFIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9BTkdMRV9mbGV4aWJsZV9zdXJmYWNlX2NvbXBhdGliaWxpdHkgc3Vw
cG9ydC4iKSk7CisgICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgICAgfQor
ICAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmZsZXhpYmxlU3VyZmFjZUNvbXBhdGliaWxp
dHlSZXF1ZXN0ZWQoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRUdMX1NVUkZBQ0Vf
T1JJRU5UQVRJT05fQU5HTEU6CisgICAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRFeHRlbnNpb25z
KCkuc3VyZmFjZU9yaWVudGF0aW9uKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgU2V0R2xv
YmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRSBjYW5ub3QgYmUgcXVl
cmllZCB3aXRob3V0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9B
TkdMRV9zdXJmYWNlX29yaWVudGF0aW9uIHN1cHBvcnQuIikpOworICAgICAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOworICAgICAgICAgIH0KKyAgICAgICAgICAqdmFsdWUgPSBlZ2xTdXJmYWNl
LT5nZXRPcmllbnRhdGlvbigpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFR0xfRElS
RUNUX0NPTVBPU0lUSU9OX0FOR0xFOgorICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5z
aW9ucygpLmRpcmVjdENvbXBvc2l0aW9uKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgU2V0
R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFR0xfRElSRUNUX0NPTVBPU0lUSU9OX0FOR0xFIGNhbm5vdCBiZSB1
c2VkIHdpdGhvdXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0FO
R0xFX2RpcmVjdF9jb21wb3NpdGlvbiBzdXBwb3J0LiIpKTsKKyAgICAgICAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKKyAgICAgICAgICB9CisgICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+
ZGlyZWN0Q29tcG9zaXRpb24oKTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CkBAIC00NDMsNyArNDc1LDcgQEAKICAgICBEaXNwbGF5ICpkaXNw
bGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAgQ29uZmlnICpjb25maWd1cmF0
aW9uID0gc3RhdGljX2Nhc3Q8Q29uZmlnKj4oY29uZmlnKTsKICAgICBnbDo6Q29udGV4dCogc2hh
cmVkR0xDb250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihzaGFyZV9jb250ZXh0KTsK
LSAgICBBdHRyaWJ1dGVNYXAgYXR0cmlidXRlcyhhdHRyaWJfbGlzdCk7CisgICAgQXR0cmlidXRl
TWFwIGF0dHJpYnV0ZXMgICAgICA9IEF0dHJpYnV0ZU1hcDo6Q3JlYXRlRnJvbUludEFycmF5KGF0
dHJpYl9saXN0KTsKIAogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDcmVhdGVDb250ZXh0KGRp
c3BsYXksIGNvbmZpZ3VyYXRpb24sIHNoYXJlZEdMQ29udGV4dCwgYXR0cmlidXRlcyk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKQEAgLTUwNCwyMyArNTM2LDM3IEBACiAgICAgRGlzcGxheSAq
ZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIGdsOjpDb250ZXh0ICpj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgpOwogCi0gICAgYm9vbCBub0Nv
bnRleHQgPSAoY3R4ID09IEVHTF9OT19DT05URVhUKTsKLSAgICBib29sIG5vU3VyZmFjZSA9IChk
cmF3ID09IEVHTF9OT19TVVJGQUNFIHx8IHJlYWQgPT0gRUdMX05PX1NVUkZBQ0UpOwotICAgIGlm
IChub0NvbnRleHQgIT0gbm9TdXJmYWNlKQorICAgIC8vIElmIGN0eCBpcyBFR0xfTk9fQ09OVEVY
VCBhbmQgZWl0aGVyIGRyYXcgb3IgcmVhZCBhcmUgbm90IEVHTF9OT19TVVJGQUNFLCBhbiBFR0xf
QkFEX01BVENICisgICAgLy8gZXJyb3IgaXMgZ2VuZXJhdGVkLgorICAgIGlmIChjdHggPT0gRUdM
X05PX0NPTlRFWFQgJiYgKGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UgfHwgcmVhZCAhPSBFR0xfTk9f
U1VSRkFDRSkpCiAgICAgewogICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX01B
VENIKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgaWYgKGRweSA9
PSBFR0xfTk9fRElTUExBWSkKKyAgICBpZiAoY3R4ICE9IEVHTF9OT19DT05URVhUICYmIGRyYXcg
PT0gRUdMX05PX1NVUkZBQ0UgJiYgcmVhZCA9PSBFR0xfTk9fU1VSRkFDRSkKICAgICB7CisgICAg
ICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfTUFUQ0gpKTsKKyAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICAvLyBJZiBlaXRoZXIgb2YgZHJhdyBvciByZWFkIGlz
IGEgdmFsaWQgc3VyZmFjZSBhbmQgdGhlIG90aGVyIGlzIEVHTF9OT19TVVJGQUNFLCBhbgorICAg
IC8vIEVHTF9CQURfTUFUQ0ggZXJyb3IgaXMgZ2VuZXJhdGVkLgorICAgIGlmICgocmVhZCA9PSBF
R0xfTk9fU1VSRkFDRSkgIT0gKGRyYXcgPT0gRUdMX05PX1NVUkZBQ0UpKQorICAgIHsKKyAgICAg
ICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoCisgICAgICAgICAgICBFR0xfQkFEX01BVENILCAicmVh
ZCBhbmQgZHJhdyBtdXN0IGJvdGggYmUgdmFsaWQgc3VyZmFjZXMsIG9yIGJvdGggYmUgRUdMX05P
X1NVUkZBQ0UiKSk7CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCisgICAgaWYg
KGRweSA9PSBFR0xfTk9fRElTUExBWSB8fCAhRGlzcGxheTo6aXNWYWxpZERpc3BsYXkoZGlzcGxh
eSkpCisgICAgewogICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVks
ICInZHB5JyBub3QgYSB2YWxpZCBFR0xEaXNwbGF5IGhhbmRsZSIpKTsKICAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKICAgICB9CiAKICAgICAvLyBFR0wgMS41IHNwZWM6IGRweSBjYW4gYmUgdW5p
bml0aWFsaXplZCBpZiBhbGwgb3RoZXIgcGFyYW1ldGVycyBhcmUgbnVsbAotICAgIGlmIChkcHkg
IT0gRUdMX05PX0RJU1BMQVkgJiYgIWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSAmJgotICAgICAg
ICAoY3R4ICE9IEVHTF9OT19DT05URVhUIHx8IGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UgfHwgcmVh
ZCAhPSBFR0xfTk9fU1VSRkFDRSkpCisgICAgaWYgKCFkaXNwbGF5LT5pc0luaXRpYWxpemVkKCkg
JiYgKGN0eCAhPSBFR0xfTk9fQ09OVEVYVCB8fCBkcmF3ICE9IEVHTF9OT19TVVJGQUNFIHx8IHJl
YWQgIT0gRUdMX05PX1NVUkZBQ0UpKQogICAgIHsKICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIidkcHknIG5vdCBpbml0aWFsaXplZCIpKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKQEAgLTUzNiw3ICs1ODIsNyBAQAogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKGRweSAhPSBFR0xfTk9fRElTUExBWSAmJiBkaXNwbGF5LT5pc0luaXRpYWxp
emVkKCkpCisgICAgaWYgKGRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSkKICAgICB7CiAgICAgICAg
IGlmIChkaXNwbGF5LT50ZXN0RGV2aWNlTG9zdCgpKQogICAgICAgICB7CkBAIC01NzMsMTEgKzYx
OSw0MiBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHJlYWRTdXJmYWNlKQorICAgIHsK
KyAgICAgICAgRXJyb3IgcmVhZENvbXBhdEVycm9yID0KKyAgICAgICAgICAgIFZhbGlkYXRlQ29t
cGF0aWJsZUNvbmZpZ3MoZGlzcGxheSwgcmVhZFN1cmZhY2UtPmdldENvbmZpZygpLCByZWFkU3Vy
ZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0
Q29uZmlnKCksIHJlYWRTdXJmYWNlLT5nZXRUeXBlKCkpOworICAgICAgICBpZiAocmVhZENvbXBh
dEVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3Io
cmVhZENvbXBhdEVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBpZiAoZHJhdyAhPSByZWFkKQogICAgIHsKICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCisKKyAgICAgICAgaWYgKGRyYXdTdXJmYWNlKQorICAgICAg
ICB7CisgICAgICAgICAgICBFcnJvciBkcmF3Q29tcGF0RXJyb3IgPQorICAgICAgICAgICAgICAg
IFZhbGlkYXRlQ29tcGF0aWJsZUNvbmZpZ3MoZGlzcGxheSwgZHJhd1N1cmZhY2UtPmdldENvbmZp
ZygpLCBkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmdldENvbmZpZygpLCBkcmF3U3VyZmFjZS0+Z2V0VHlwZSgpKTsKKyAgICAg
ICAgICAgIGlmIChkcmF3Q29tcGF0RXJyb3IuaXNFcnJvcigpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKGRyYXdDb21wYXRFcnJvcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0K
IAorICAgIEVycm9yIG1ha2VDdXJyZW50RXJyb3IgPSBkaXNwbGF5LT5tYWtlQ3VycmVudChkcmF3
U3VyZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQpOworICAgIGlmIChtYWtlQ3VycmVudEVycm9y
LmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9yKG1ha2VDdXJyZW50RXJy
b3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKwogICAgIGdsOjpDb250ZXh0
ICpwcmV2aW91c0NvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7CiAKICAgICBTZXRHbG9iYWxE
aXNwbGF5KGRpc3BsYXkpOwpAQCAtNTg1LDggKzY2Miw2IEBACiAgICAgU2V0R2xvYmFsUmVhZFN1
cmZhY2UocmVhZFN1cmZhY2UpOwogICAgIFNldEdsb2JhbENvbnRleHQoY29udGV4dCk7CiAKLSAg
ICBkaXNwbGF5LT5tYWtlQ3VycmVudChkcmF3U3VyZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQp
OwotCiAgICAgLy8gUmVsZWFzZSB0aGUgc3VyZmFjZSBmcm9tIHRoZSBwcmV2aW91c2x5LWN1cnJl
bnQgY29udGV4dCwgdG8gYWxsb3cKICAgICAvLyBkZXN0cm95ZWQgc3VyZmFjZXMgdG8gZGVsZXRl
IHRoZW1zZWx2ZXMuCiAgICAgaWYgKHByZXZpb3VzQ29udGV4dCAhPSBudWxscHRyICYmIGNvbnRl
eHQgIT0gcHJldmlvdXNDb250ZXh0KQpAQCAtNjQ3LDcgKzcyMiw3IEBACiAgICAgc3dpdGNoIChh
dHRyaWJ1dGUpCiAgICAgewogICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOgotICAgICAgICAqdmFs
dWUgPSBjb250ZXh0LT5nZXRDb25maWdJRCgpOworICAgICAgICAqdmFsdWUgPSBjb250ZXh0LT5n
ZXRDb25maWcoKS0+Y29uZmlnSUQ7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFR0xfQ09O
VEVYVF9DTElFTlRfVFlQRToKICAgICAgICAgKnZhbHVlID0gY29udGV4dC0+Z2V0Q2xpZW50VHlw
ZSgpOwpAQCAtNjcxLDIwICs3NDYsNTYgQEAKIHsKICAgICBFVkVOVCgiKCkiKTsKIAotICAgIFVO
SU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgIERpc3BsYXkgKmRpc3BsYXkgPSBHZXRHbG9i
YWxEaXNwbGF5KCk7CiAKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5
KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJy
b3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKworICAgIC8vIGVn
bFdhaXRHTCBsaWtlIGNhbGxpbmcgZWdsV2FpdENsaWVudCB3aXRoIHRoZSBPcGVuR0wgRVMgQVBJ
IGJvdW5kLiBTaW5jZSB3ZSBvbmx5IGltcGxlbWVudAorICAgIC8vIE9wZW5HTCBFUyB3ZSBjYW4g
ZG8gdGhlIGNhbGwgZGlyZWN0bHkuCisgICAgZXJyb3IgPSBkaXNwbGF5LT53YWl0Q2xpZW50KCk7
CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKICAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBF
R0xfVFJVRTsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBXYWl0TmF0aXZlKEVHTGludCBl
bmdpbmUpCiB7CiAgICAgRVZFTlQoIihFR0xpbnQgZW5naW5lID0gJWQpIiwgZW5naW5lKTsKIAot
ICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhNRQorICAgIERpc3BsYXkgKmRpc3BsYXkgPSBH
ZXRHbG9iYWxEaXNwbGF5KCk7CiAKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShk
aXNwbGF5KTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xv
YmFsRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKworICAg
IGlmIChlbmdpbmUgIT0gRUdMX0NPUkVfTkFUSVZFX0VOR0lORSkKKyAgICB7CisgICAgICAgIFNl
dEdsb2JhbEVycm9yKAorICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0aGUg
J2VuZ2luZScgcGFyYW1ldGVyIGhhcyBhbiB1bnJlY29nbml6ZWQgdmFsdWUiKSk7CisgICAgfQor
CisgICAgZXJyb3IgPSBkaXNwbGF5LT53YWl0TmF0aXZlKGVuZ2luZSwgR2V0R2xvYmFsRHJhd1N1
cmZhY2UoKSwgR2V0R2xvYmFsUmVhZFN1cmZhY2UoKSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKKyAgICB9CisKICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VT
UykpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAogRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJm
YWNlKQpAQCAtNzk1LDEzICs5MDYsMTMgQEAKICAgICAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmVP
YmplY3QgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKEdMX1RFWFRVUkVfMkQpOwogICAgICAg
ICBBU1NFUlQodGV4dHVyZU9iamVjdCAhPSBOVUxMKTsKIAotICAgICAgICBpZiAodGV4dHVyZU9i
amVjdC0+aXNJbW11dGFibGUoKSkKKyAgICAgICAgaWYgKHRleHR1cmVPYmplY3QtPmdldEltbXV0
YWJsZUZvcm1hdCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJv
cihFR0xfQkFEX01BVENIKSk7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAg
ICB9CiAKLSAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9IGVnbFN1cmZhY2UtPmJpbmRUZXhJbWFn
ZSh0ZXh0dXJlT2JqZWN0LCBidWZmZXIpOworICAgICAgICBlcnJvciA9IGVnbFN1cmZhY2UtPmJp
bmRUZXhJbWFnZSh0ZXh0dXJlT2JqZWN0LCBidWZmZXIpOwogICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CkBA
IC04NzAsNyArOTgxLDcgQEAKIAogICAgIGlmICh0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgZWds
OjpFcnJvciBlcnJvciA9IGVnbFN1cmZhY2UtPnJlbGVhc2VUZXhJbWFnZShidWZmZXIpOworICAg
ICAgICBlcnJvciA9IGVnbFN1cmZhY2UtPnJlbGVhc2VUZXhJbWFnZShidWZmZXIpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBTZXRHbG9iYWxF
cnJvcihlcnJvcik7CkBAIC05NTUsNyArMTA2Niw3IEBACiAKICAgICBEaXNwbGF5ICpkaXNwbGF5
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAgQ29uZmlnICpjb25maWd1cmF0aW9u
ID0gc3RhdGljX2Nhc3Q8Q29uZmlnKj4oY29uZmlnKTsKLSAgICBBdHRyaWJ1dGVNYXAgYXR0cmli
dXRlcyhhdHRyaWJfbGlzdCk7CisgICAgQXR0cmlidXRlTWFwIGF0dHJpYnV0ZXMgPSBBdHRyaWJ1
dGVNYXA6OkNyZWF0ZUZyb21JbnRBcnJheShhdHRyaWJfbGlzdCk7CiAKICAgICBFcnJvciBlcnJv
ciA9IFZhbGlkYXRlQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoZGlzcGxheSwgYnVmdHlw
ZSwgYnVmZmVyLCBjb25maWd1cmF0aW9uLCBhdHRyaWJ1dGVzKTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQpAQCAtOTg5LDEwICsxMTAwLDI0IEBACiB7CiAgICAgRVZFTlQoIigpIik7CiAKLSAg
ICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklYTUUKKyAgICBEaXNwbGF5ICpkaXNwbGF5ID0gR2V0
R2xvYmFsRGlzcGxheSgpOwogCisgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlz
cGxheSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBl
cnJvciA9IGRpc3BsYXktPndhaXRDbGllbnQoKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQor
ICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOworICAgIH0KKwogICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiAvLyBFR0wgMS40CkBA
IC0xMDk2LDY1ICsxMjIxLDQ1OCBAQAogewogICAgIEVWRU5UKCIoY29uc3QgY2hhciAqcHJvY25h
bWUgPSBcIiVzXCIpIiwgcHJvY25hbWUpOwogCi0gICAgc3RydWN0IEV4dGVuc2lvbgorICAgIHR5
cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9u
UG9pbnRlclR5cGU+IFByb2NBZGRyZXNzTWFwOworICAgIGF1dG8gZ2VuZXJhdGVQcm9jQWRkcmVz
c01hcCA9IFtdKCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAgICAgIF9f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgYWRkcmVzczsKLSAgICB9Owor
ICAgICAgICBQcm9jQWRkcmVzc01hcCBtYXA7CisjZGVmaW5lIElOU0VSVF9QUk9DX0FERFJFU1Mo
bnMsIHByb2MpIFwKKyAgICBtYXBbI25zICNwcm9jXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19lZ2xN
dXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZT4obnM6OnByb2MpCiAKLSAgICBzdGF0
aWMgY29uc3QgRXh0ZW5zaW9uIGV4dGVuc2lvbnNbXSA9Ci0gICAgewotICAgICAgICB7ICJlZ2xR
dWVyeURldmljZUF0dHJpYkVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50
ZXJUeXBlKVF1ZXJ5RGV2aWNlQXR0cmliRVhUIH0sCi0gICAgICAgIHsgImVnbFF1ZXJ5RGV2aWNl
U3RyaW5nRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpUXVl
cnlEZXZpY2VTdHJpbmdFWFQgfSwKLSAgICAgICAgeyAiZWdsUXVlcnlEaXNwbGF5QXR0cmliRVhU
IiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpUXVlcnlEaXNwbGF5
QXR0cmliRVhUIH0sCi0gICAgICAgIHsgImVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKVF1ZXJ5U3VyZmFjZVBvaW50
ZXJBTkdMRSB9LAotICAgICAgICB7ICJlZ2xQb3N0U3ViQnVmZmVyTlYiLCAoX19lZ2xNdXN0Q2Fz
dFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlQb3N0U3ViQnVmZmVyTlYgfSwKLSAgICAgICAg
eyAiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpR2V0UGxhdGZvcm1EaXNwbGF5RVhUIH0sCi0gICAgICAgIHsgImdsQmxp
dEZyYW1lYnVmZmVyQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVy
VHlwZSlnbDo6QmxpdEZyYW1lYnVmZmVyQU5HTEUgfSwKLSAgICAgICAgeyAiZ2xSZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlKWdsOjpSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRSB9LAot
ICAgICAgICB7ICJnbERlbGV0ZUZlbmNlc05WIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0
aW9uUG9pbnRlclR5cGUpZ2w6OkRlbGV0ZUZlbmNlc05WIH0sCi0gICAgICAgIHsgImdsR2VuRmVu
Y2VzTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6R2Vu
RmVuY2VzTlYgfSwKLSAgICAgICAgeyAiZ2xJc0ZlbmNlTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6SXNGZW5jZU5WIH0sCi0gICAgICAgIHsgImdsVGVz
dEZlbmNlTlYiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6
VGVzdEZlbmNlTlYgfSwKLSAgICAgICAgeyAiZ2xHZXRGZW5jZWl2TlYiLCAoX19lZ2xNdXN0Q2Fz
dFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6R2V0RmVuY2Vpdk5WIH0sCi0gICAgICAg
IHsgImdsRmluaXNoRmVuY2VOViIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50
ZXJUeXBlKWdsOjpGaW5pc2hGZW5jZU5WIH0sCi0gICAgICAgIHsgImdsU2V0RmVuY2VOViIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpTZXRGZW5jZU5WIH0s
Ci0gICAgICAgIHsgImdsR2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2w6OkdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRSB9LAotICAgICAgICB7ICJnbFRleFN0b3JhZ2UyREVYVCIsIChfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpUZXhTdG9yYWdlMkRFWFQgfSwKLSAg
ICAgICAgeyAiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2w6OkdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgfSwK
LSAgICAgICAgeyAiZ2xSZWFkblBpeGVsc0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5j
dGlvblBvaW50ZXJUeXBlKWdsOjpSZWFkblBpeGVsc0VYVCB9LAotICAgICAgICB7ICJnbEdldG5V
bmlmb3JtZnZFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSln
bDo6R2V0blVuaWZvcm1mdkVYVCB9LAotICAgICAgICB7ICJnbEdldG5Vbmlmb3JtaXZFWFQiLCAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6R2V0blVuaWZvcm1p
dkVYVCB9LAotICAgICAgICB7ICJnbEdlblF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJv
cGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6R2VuUXVlcmllc0VYVCB9LAotICAgICAgICB7ICJn
bERlbGV0ZVF1ZXJpZXNFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVy
VHlwZSlnbDo6RGVsZXRlUXVlcmllc0VYVCB9LAotICAgICAgICB7ICJnbElzUXVlcnlFWFQiLCAo
X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6SXNRdWVyeUVYVCB9
LAotICAgICAgICB7ICJnbEJlZ2luUXVlcnlFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVu
Y3Rpb25Qb2ludGVyVHlwZSlnbDo6QmVnaW5RdWVyeUVYVCB9LAotICAgICAgICB7ICJnbEVuZFF1
ZXJ5RVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2w6OkVu
ZFF1ZXJ5RVhUIH0sCi0gICAgICAgIHsgImdsR2V0UXVlcnlpdkVYVCIsIChfX2VnbE11c3RDYXN0
VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpHZXRRdWVyeWl2RVhUIH0sCi0gICAgICAg
IHsgImdsR2V0UXVlcnlPYmplY3R1aXZFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rp
b25Qb2ludGVyVHlwZSlnbDo6R2V0UXVlcnlPYmplY3R1aXZFWFQgfSwKLSAgICAgICAgeyAiZ2xE
cmF3QnVmZmVyc0VYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBl
KWdsOjpEcmF3QnVmZmVyc0VYVCB9LAotICAgICAgICB7ICJnbFZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRSIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgfSwKLSAgICAgICAgeyAiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6RHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFIH0sCi0gICAgICAgIHsgImdsRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbDo6
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgfSwKLSAgICAgICAgeyAiZ2xHZXRQcm9ncmFtQmlu
YXJ5T0VTIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2w6Okdl
dFByb2dyYW1CaW5hcnlPRVMgfSwKLSAgICAgICAgeyAiZ2xQcm9ncmFtQmluYXJ5T0VTIiwgKF9f
ZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2w6OlByb2dyYW1CaW5hcnlP
RVMgfSwKLSAgICAgICAgeyAiZ2xHZXRCdWZmZXJQb2ludGVydk9FUyIsIChfX2VnbE11c3RDYXN0
VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpHZXRCdWZmZXJQb2ludGVydk9FUyB9LAot
ICAgICAgICB7ICJnbE1hcEJ1ZmZlck9FUyIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlKWdsOjpNYXBCdWZmZXJPRVMgfSwKLSAgICAgICAgeyAiZ2xVbm1hcEJ1ZmZl
ck9FUyIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpVbm1h
cEJ1ZmZlck9FUyB9LAotICAgICAgICB7ICJnbE1hcEJ1ZmZlclJhbmdlRVhUIiwgKF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2w6Ok1hcEJ1ZmZlclJhbmdlRVhUIH0s
Ci0gICAgICAgIHsgImdsRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCIsIChfX2VnbE11c3RDYXN0
VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsOjpGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhU
IH0sCi0gICAgICAgIHsgIiIsIE5VTEwgfSwKKyAgICAgICAgLy8gR0xFUzIgY29yZQorICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBBY3RpdmVUZXh0dXJlKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgQXR0YWNoU2hhZGVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgQmluZEF0dHJpYkxvY2F0aW9uKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgQmluZEJ1ZmZlcik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRG
cmFtZWJ1ZmZlcik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRSZW5kZXJi
dWZmZXIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCaW5kVGV4dHVyZSk7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJsZW5kQ29sb3IpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBCbGVuZEVxdWF0aW9uKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQmxlbmRFcXVhdGlvblNlcGFyYXRlKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQmxlbmRGdW5jKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
QmxlbmRGdW5jU2VwYXJhdGUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCdWZm
ZXJEYXRhKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQnVmZmVyU3ViRGF0YSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIENoZWNrRnJhbWVidWZmZXJTdGF0dXMp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBDbGVhcik7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIENsZWFyQ29sb3IpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBDbGVhckRlcHRoZik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIENs
ZWFyU3RlbmNpbCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIENvbG9yTWFzayk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIENvbXBpbGVTaGFkZXIpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBDb21wcmVzc2VkVGV4SW1hZ2UyRCk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQ29weVRleEltYWdlMkQpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBDb3B5VGV4U3ViSW1hZ2UyRCk7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIENyZWF0ZVByb2dyYW0pOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBDcmVhdGVTaGFkZXIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBD
dWxsRmFjZSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZUJ1ZmZlcnMp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEZWxldGVGcmFtZWJ1ZmZlcnMpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEZWxldGVQcm9ncmFtKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGVsZXRlUmVuZGVyYnVmZmVycyk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVNoYWRlcik7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIERlbGV0ZVRleHR1cmVzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgRGVwdGhGdW5jKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGVwdGhN
YXNrKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGVwdGhSYW5nZWYpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEZXRhY2hTaGFkZXIpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBEaXNhYmxlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgRHJhd0FycmF5cyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERy
YXdFbGVtZW50cyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEVuYWJsZSk7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRmluaXNoKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgRmx1c2gpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEZyYW1lYnVmZmVyVGV4dHVyZTJEKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgRnJvbnRGYWNlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuQnVmZmVy
cyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdlbmVyYXRlTWlwbWFwKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuRnJhbWVidWZmZXJzKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuUmVuZGVyYnVmZmVycyk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIEdlblRleHR1cmVzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0QWN0aXZlQXR0cmliKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0QWN0aXZlVW5pZm9ybSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dEF0dGFjaGVkU2hhZGVycyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEF0
dHJpYkxvY2F0aW9uKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0Qm9vbGVh
bnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRCdWZmZXJQYXJhbWV0ZXJp
dik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEVycm9yKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0RmxvYXR2KTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRJbnRlZ2Vydik7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIEdldFByb2dyYW1pdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIEdldFByb2dyYW1JbmZvTG9nKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBHZXRTaGFkZXJpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dFNoYWRlckluZm9Mb2cpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRTaGFk
ZXJQcmVjaXNpb25Gb3JtYXQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRT
aGFkZXJTb3VyY2UpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRTdHJpbmcp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRUZXhQYXJhbWV0ZXJmdik7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFRleFBhcmFtZXRlcml2KTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0VW5pZm9ybWZ2KTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgR2V0VW5pZm9ybWl2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0VW5pZm9ybUxvY2F0aW9uKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgR2V0VmVydGV4QXR0cmliZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBHZXRWZXJ0ZXhBdHRyaWJpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
SGludCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzQnVmZmVyKTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgSXNFbmFibGVkKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgSXNGcmFtZWJ1ZmZlcik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIElzUHJvZ3JhbSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzUmVu
ZGVyYnVmZmVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgSXNTaGFkZXIpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBJc1RleHR1cmUpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBMaW5lV2lkdGgpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBMaW5rUHJvZ3JhbSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFBp
eGVsU3RvcmVpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUG9seWdvbk9mZnNl
dCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFJlYWRQaXhlbHMpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBSZWxlYXNlU2hhZGVyQ29tcGlsZXIpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBSZW5kZXJidWZmZXJTdG9yYWdlKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgU2FtcGxlQ292ZXJhZ2UpOworICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBTY2lzc29yKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgU2hhZGVyQmluYXJ5KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgU2hhZGVy
U291cmNlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgU3RlbmNpbEZ1bmMpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBTdGVuY2lsRnVuY1NlcGFyYXRlKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgU3RlbmNpbE1hc2spOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBTdGVuY2lsTWFza1NlcGFyYXRlKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgU3RlbmNpbE9wKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgU3RlbmNpbE9wU2VwYXJhdGUpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBUZXhJbWFnZTJEKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4UGFyYW1l
dGVyZik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRleFBhcmFtZXRlcmZ2KTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4UGFyYW1ldGVyaSk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRleFBhcmFtZXRlcml2KTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgVGV4U3ViSW1hZ2UyRCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FE
RFJFU1MoZ2wsIFVuaWZvcm0xZik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVu
aWZvcm0xZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtMWkpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtMWl2KTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgVW5pZm9ybTJmKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgVW5pZm9ybTJmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVu
aWZvcm0yaSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm0yaXYpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtM2YpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtM2Z2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgVW5pZm9ybTNpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVW5p
Zm9ybTNpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm00Zik7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm00ZnYpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtNGkpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBVbmlmb3JtNGl2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVW5p
Zm9ybU1hdHJpeDJmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1N
YXRyaXgzZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtTWF0cml4
NGZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVXNlUHJvZ3JhbSk7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZhbGlkYXRlUHJvZ3JhbSk7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZlcnRleEF0dHJpYjFmKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgVmVydGV4QXR0cmliMWZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgVmVydGV4QXR0cmliMmYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBWZXJ0ZXhBdHRyaWIyZnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBWZXJ0
ZXhBdHRyaWIzZik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZlcnRleEF0dHJp
YjNmdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZlcnRleEF0dHJpYjRmKTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVmVydGV4QXR0cmliNGZ2KTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVmVydGV4QXR0cmliUG9pbnRlcik7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFZpZXdwb3J0KTsKKworICAgICAgICAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9ibGl0CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJsaXRG
cmFtZWJ1ZmZlckFOR0xFKTsKKworICAgICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVBTkdMRSk7CisKKyAgICAgICAgLy8gR0xfRVhUX2Rpc2NhcmRfZnJhbWVi
dWZmZXIKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGlzY2FyZEZyYW1lYnVmZmVy
RVhUKTsKKworICAgICAgICAvLyBHTF9OVl9mZW5jZQorICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBEZWxldGVGZW5jZXNOVik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEdlbkZlbmNlc05WKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgSXNGZW5jZU5W
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGVzdEZlbmNlTlYpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRGZW5jZWl2TlYpOworICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBGaW5pc2hGZW5jZU5WKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgU2V0RmVuY2VOVik7CisKKyAgICAgICAgLy8gR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRSk7CisKKyAgICAgICAgLy8gR0xfRVhUX3RleHR1cmVfc3RvcmFn
ZQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBUZXhTdG9yYWdlMkRFWFQpOworCisg
ICAgICAgIC8vIEdMX0VYVF9yb2J1c3RuZXNzCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBSZWFkblBpeGVsc0VYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEdldG5Vbmlmb3JtZnZFWFQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRu
VW5pZm9ybWl2RVhUKTsKKworICAgICAgICAvLyBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xl
YW4KKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuUXVlcmllc0VYVCk7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVF1ZXJpZXNFWFQpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBJc1F1ZXJ5RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQmVnaW5RdWVyeUVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEVuZFF1ZXJ5RVhUKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVl
cnlpdkVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0
dWl2RVhUKTsKKworICAgICAgICAvLyBHTF9FWFRfZHJhd19idWZmZXJzCisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIERyYXdCdWZmZXJzRVhUKTsKKworICAgICAgICAvLyBHTF9BTkdM
RV9pbnN0YW5jZWRfYXJyYXlzCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKTsKKworICAgICAgICAvLyBHTF9PRVNfZ2V0X3By
b2dyYW1fYmluYXJ5CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFByb2dyYW1C
aW5hcnlPRVMpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQcm9ncmFtQmluYXJ5
T0VTKTsKKworICAgICAgICAvLyBHTF9PRVNfbWFwYnVmZmVyCisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIE1hcEJ1ZmZlck9FUyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIFVubWFwQnVmZmVyT0VTKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0
QnVmZmVyUG9pbnRlcnZPRVMpOworCisgICAgICAgIC8vIEdMX0VYVF9tYXBfYnVmZmVyX3Jhbmdl
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIE1hcEJ1ZmZlclJhbmdlRVhUKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCk7
CisKKyAgICAgICAgLy8gR0xfRVhUX2RlYnVnX21hcmtlcgorICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBJbnNlcnRFdmVudE1hcmtlckVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FE
RFJFU1MoZ2wsIFB1c2hHcm91cE1hcmtlckVYVCk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIFBvcEdyb3VwTWFya2VyRVhUKTsKKworICAgICAgICAvLyBHTF9PRVNfRUdMX2ltYWdl
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJE
T0VTKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRUdMSW1hZ2VUYXJnZXRSZW5k
ZXJidWZmZXJTdG9yYWdlT0VTKTsKKworICAgICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCaW5kVmVydGV4QXJyYXlPRVMp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEZWxldGVWZXJ0ZXhBcnJheXNPRVMp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZW5WZXJ0ZXhBcnJheXNPRVMpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBJc1ZlcnRleEFycmF5T0VTKTsKKworICAg
ICAgICAvLyBHTF9LSFJfZGVidWcKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRGVi
dWdNZXNzYWdlQ29udHJvbEtIUik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERl
YnVnTWVzc2FnZUluc2VydEtIUik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERl
YnVnTWVzc2FnZUNhbGxiYWNrS0hSKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
R2V0RGVidWdNZXNzYWdlTG9nS0hSKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
UHVzaERlYnVnR3JvdXBLSFIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQb3BE
ZWJ1Z0dyb3VwS0hSKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgT2JqZWN0TGFi
ZWxLSFIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRPYmplY3RMYWJlbEtI
Uik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIE9iamVjdFB0ckxhYmVsS0hSKTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0T2JqZWN0UHRyTGFiZWxLSFIpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQb2ludGVydktIUik7CisKKyAgICAg
ICAgLy8gR0xFUzMgY29yZQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBSZWFkQnVm
ZmVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRHJhd1JhbmdlRWxlbWVudHMp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBUZXhJbWFnZTNEKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVGV4U3ViSW1hZ2UzRCk7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIENvcHlUZXhTdWJJbWFnZTNEKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQ29tcHJlc3NlZFRleEltYWdlM0QpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCk7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIEdlblF1ZXJpZXMpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBEZWxldGVRdWVyaWVzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgSXNRdWVy
eSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJlZ2luUXVlcnkpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBFbmRRdWVyeSk7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIEdldFF1ZXJ5aXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBHZXRRdWVyeU9iamVjdHVpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVu
bWFwQnVmZmVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0QnVmZmVyUG9p
bnRlcnYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEcmF3QnVmZmVycyk7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1NYXRyaXgyeDNmdik7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1NYXRyaXgzeDJmdik7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1NYXRyaXgyeDRmdik7CisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1NYXRyaXg0eDJmdik7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1NYXRyaXgzeDRmdik7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIFVuaWZvcm1NYXRyaXg0eDNmdik7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIEJsaXRGcmFtZWJ1ZmZlcik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSk7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgTWFwQnVmZmVyUmFuZ2UpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQmluZFZlcnRleEFycmF5KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgRGVsZXRlVmVydGV4QXJyYXlzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgR2VuVmVydGV4QXJyYXlzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgSXNW
ZXJ0ZXhBcnJheSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEludGVnZXJp
X3YpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCZWdpblRyYW5zZm9ybUZlZWRi
YWNrKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRW5kVHJhbnNmb3JtRmVlZGJh
Y2spOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCaW5kQnVmZmVyUmFuZ2UpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBCaW5kQnVmZmVyQmFzZSk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmcp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBWZXJ0ZXhBdHRyaWJJUG9pbnRlcik7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFZlcnRleEF0dHJpYklpdik7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFZlcnRleEF0dHJpYkl1aXYpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBWZXJ0ZXhBdHRyaWJJNGkpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBWZXJ0ZXhBdHRyaWJJNHVpKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgVmVydGV4QXR0cmliSTRpdik7CisgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIFZlcnRleEF0dHJpYkk0dWl2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgR2V0VW5pZm9ybXVpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2ws
IEdldEZyYWdEYXRhTG9jYXRpb24pOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBV
bmlmb3JtMXVpKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVW5pZm9ybTJ1aSk7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm0zdWkpOworICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtNHVpKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgVW5pZm9ybTF1aXYpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGds
LCBVbmlmb3JtMnVpdik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFVuaWZvcm0z
dWl2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVW5pZm9ybTR1aXYpOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBDbGVhckJ1ZmZlcml2KTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgQ2xlYXJCdWZmZXJ1aXYpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBDbGVhckJ1ZmZlcmZ2KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgQ2xlYXJCdWZmZXJmaSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdl
dFN0cmluZ2kpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBDb3B5QnVmZmVyU3Vi
RGF0YSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFVuaWZvcm1JbmRpY2Vz
KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0QWN0aXZlVW5pZm9ybXNpdik7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFVuaWZvcm1CbG9ja0luZGV4KTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0QWN0aXZlVW5pZm9ybUJsb2NraXYp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRBY3RpdmVVbmlmb3JtQmxvY2tO
YW1lKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVW5pZm9ybUJsb2NrQmluZGlu
Zyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERyYXdBcnJheXNJbnN0YW5jZWQp
OworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEcmF3RWxlbWVudHNJbnN0YW5jZWQp
OworICAgICAgICBtYXBbImdsRmVuY2VTeW5jIl0gPQorICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlPihnbDo6RmVuY2VT
eW5jXyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzU3luYyk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVN5bmMpOworICAgICAgICBJTlNFUlRfUFJP
Q19BRERSRVNTKGdsLCBDbGllbnRXYWl0U3luYyk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIFdhaXRTeW5jKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0SW50
ZWdlcjY0dik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFN5bmNpdik7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEludGVnZXI2NGlfdik7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldEJ1ZmZlclBhcmFtZXRlcmk2NHYpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZW5TYW1wbGVycyk7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIERlbGV0ZVNhbXBsZXJzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgSXNTYW1wbGVyKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQmlu
ZFNhbXBsZXIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBTYW1wbGVyUGFyYW1l
dGVyaSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFNhbXBsZXJQYXJhbWV0ZXJp
dik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFNhbXBsZXJQYXJhbWV0ZXJmKTsK
KyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgU2FtcGxlclBhcmFtZXRlcmZ2KTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0U2FtcGxlclBhcmFtZXRlcml2KTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0U2FtcGxlclBhcmFtZXRlcmZ2KTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgVmVydGV4QXR0cmliRGl2aXNvcik7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJpbmRUcmFuc2Zvcm1GZWVkYmFjayk7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrcyk7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdlblRyYW5zZm9ybUZlZWRiYWNrcyk7Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzVHJhbnNmb3JtRmVlZGJhY2spOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBQYXVzZVRyYW5zZm9ybUZlZWRiYWNrKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUmVzdW1lVHJhbnNmb3JtRmVlZGJhY2spOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRQcm9ncmFtQmluYXJ5KTsKKyAgICAg
ICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUHJvZ3JhbUJpbmFyeSk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIFByb2dyYW1QYXJhbWV0ZXJpKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgSW52YWxpZGF0ZUZyYW1lYnVmZmVyKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhnbCwgSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgVGV4U3RvcmFnZTJEKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgVGV4U3RvcmFnZTNEKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
R2V0SW50ZXJuYWxmb3JtYXRpdik7CisKKyAgICAgICAgLy8gRUdMIDEuMAorICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGVnbCwgQ2hvb3NlQ29uZmlnKTsKKyAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhlZ2wsIENvcHlCdWZmZXJzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhl
Z2wsIENyZWF0ZUNvbnRleHQpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgQ3Jl
YXRlUGJ1ZmZlclN1cmZhY2UpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgQ3Jl
YXRlUGl4bWFwU3VyZmFjZSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBDcmVh
dGVXaW5kb3dTdXJmYWNlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIERlc3Ry
b3lDb250ZXh0KTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIERlc3Ryb3lTdXJm
YWNlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIEdldENvbmZpZ0F0dHJpYik7
CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBHZXRDb25maWdzKTsKKyAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIEdldEN1cnJlbnREaXNwbGF5KTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhlZ2wsIEdldEN1cnJlbnRTdXJmYWNlKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhlZ2wsIEdldERpc3BsYXkpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGVnbCwgR2V0RXJyb3IpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgR2V0
UHJvY0FkZHJlc3MpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgSW5pdGlhbGl6
ZSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBNYWtlQ3VycmVudCk7CisgICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBRdWVyeUNvbnRleHQpOworICAgICAgICBJTlNF
UlRfUFJPQ19BRERSRVNTKGVnbCwgUXVlcnlTdHJpbmcpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGVnbCwgUXVlcnlTdXJmYWNlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhl
Z2wsIFN3YXBCdWZmZXJzKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIFRlcm1p
bmF0ZSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBXYWl0R0wpOworICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgV2FpdE5hdGl2ZSk7CisKKyAgICAgICAgLy8gRUdM
IDEuMQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgQmluZFRleEltYWdlKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIFJlbGVhc2VUZXhJbWFnZSk7CisgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBTdXJmYWNlQXR0cmliKTsKKyAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhlZ2wsIFN3YXBJbnRlcnZhbCk7CisKKyAgICAgICAgLy8gRUdMIDEuMgor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgQmluZEFQSSk7CisgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZWdsLCBRdWVyeUFQSSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZWdsLCBDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcik7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZWdsLCBSZWxlYXNlVGhyZWFkKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhlZ2wsIFdhaXRDbGllbnQpOworCisgICAgICAgIC8vIEVHTCAxLjQKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhlZ2wsIEdldEN1cnJlbnRDb250ZXh0KTsKKworICAgICAgICAvLyBF
R0wgMS41CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBDcmVhdGVTeW5jKTsKKyAg
ICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIERlc3Ryb3lTeW5jKTsKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhlZ2wsIENsaWVudFdhaXRTeW5jKTsKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTUyhlZ2wsIEdldFN5bmNBdHRyaWIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGVnbCwgQ3JlYXRlSW1hZ2UpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwg
RGVzdHJveUltYWdlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2wsIEdldFBsYXRm
b3JtRGlzcGxheSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBDcmVhdGVQbGF0
Zm9ybVdpbmRvd1N1cmZhY2UpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgQ3Jl
YXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlKTsKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhl
Z2wsIFdhaXRTeW5jKTsKKworICAgICAgICAvLyBFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2lu
dGVyCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBRdWVyeVN1cmZhY2VQb2ludGVy
QU5HTEUpOworCisgICAgICAgIC8vIEVHTF9OVl9wb3N0X3N1Yl9idWZmZXIKKyAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhlZ2wsIFBvc3RTdWJCdWZmZXJOVik7CisKKyAgICAgICAgLy8gRUdM
X0VYVF9wbGF0Zm9ybV9iYXNlCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBHZXRQ
bGF0Zm9ybURpc3BsYXlFWFQpOworCisgICAgICAgIC8vIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5Cisg
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBRdWVyeURpc3BsYXlBdHRyaWJFWFQpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgUXVlcnlEZXZpY2VBdHRyaWJFWFQpOwor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgUXVlcnlEZXZpY2VTdHJpbmdFWFQpOwor
CisgICAgICAgIC8vIEVHTF9LSFJfaW1hZ2VfYmFzZS9FR0xfS0hSX2ltYWdlCisgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZWdsLCBDcmVhdGVJbWFnZUtIUik7CisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZWdsLCBEZXN0cm95SW1hZ2VLSFIpOworCisgICAgICAgIC8vIEVHTF9FWFRf
ZGV2aWNlX2NyZWF0aW9uCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBDcmVhdGVE
ZXZpY2VBTkdMRSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBSZWxlYXNlRGV2
aWNlQU5HTEUpOworCisgICAgICAgIC8vIEVHTF9LSFJfc3RyZWFtCisgICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZWdsLCBDcmVhdGVTdHJlYW1LSFIpOworICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGVnbCwgRGVzdHJveVN0cmVhbUtIUik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZWdsLCBTdHJlYW1BdHRyaWJLSFIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVn
bCwgUXVlcnlTdHJlYW1LSFIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgUXVl
cnlTdHJlYW11NjRLSFIpOworCisgICAgICAgIC8vIEVHTF9LSFJfc3RyZWFtX2NvbnN1bWVyX2ds
dGV4dHVyZQorICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgU3RyZWFtQ29uc3VtZXJH
TFRleHR1cmVFeHRlcm5hbEtIUik7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZWdsLCBT
dHJlYW1Db25zdW1lckFjcXVpcmVLSFIpOworICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGVn
bCwgU3RyZWFtQ29uc3VtZXJSZWxlYXNlS0hSKTsKKworICAgICAgICAvLyBFR0xfTlZfc3RyZWFt
X2NvbnN1bWVyX2dsdGV4dHVyZV95dXYKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2ws
IFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYpOworCisjdW5kZWYgSU5T
RVJUX1BST0NfQUREUkVTUworICAgICAgICByZXR1cm4gbWFwOwogICAgIH07CiAKLSAgICBmb3Ig
KGNvbnN0IEV4dGVuc2lvbiAqZXh0ZW5zaW9uID0gJmV4dGVuc2lvbnNbMF07IGV4dGVuc2lvbi0+
YWRkcmVzcyAhPSBudWxscHRyOyBleHRlbnNpb24rKykKKyAgICBzdGF0aWMgY29uc3QgUHJvY0Fk
ZHJlc3NNYXAgcHJvY0FkZHJlc3NNYXAgPSBnZW5lcmF0ZVByb2NBZGRyZXNzTWFwKCk7CisKKyAg
ICBhdXRvIGl0ZXIgPSBwcm9jQWRkcmVzc01hcC5maW5kKHByb2NuYW1lKTsKKyAgICBpZiAoaXRl
ciAhPSBwcm9jQWRkcmVzc01hcC5lbmQoKSkKICAgICB7Ci0gICAgICAgIGlmIChzdHJjbXAocHJv
Y25hbWUsIGV4dGVuc2lvbi0+bmFtZSkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVy
VHlwZT4oZXh0ZW5zaW9uLT5hZGRyZXNzKTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gaXRl
ci0+c2Vjb25kOwogICAgIH0KLQotICAgIHJldHVybiBOVUxMOworICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAogfQpJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2lu
dHNfZWdsX2V4dC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05LDkgKzksMTEgQEAKICNpbmNsdWRlICJsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9l
eHQuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmgiCiAKKyNpbmNsdWRlICJs
aWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0RldmljZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9u
RUdMLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKQEAgLTU3LDcgKzU5LDEzIEBACiAg
ICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwot
CisgICAgICBjYXNlIEVHTF9EWEdJX0tFWUVEX01VVEVYX0FOR0xFOgorICAgICAgICBpZiAoIWRp
c3BsYXktPmdldEV4dGVuc2lvbnMoKS5rZXllZE11dGV4KQorICAgICAgICB7CisgICAgICAgICAg
ICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOworICAgICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CiAg
ICAgICAgIHJldHVybiBFR0xfRkFMU0U7CkBAIC0xMzcsMTM2ICsxNDUsMjEwIEBACiAgICAgICAg
ICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0K
KyAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQ6CisgICAgICAgICAgaWYgKCFjbGll
bnRFeHRlbnNpb25zLnBsYXRmb3JtRGV2aWNlKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
U2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJQbGF0Zm9ybSBEZXZpY2Ug
ZXh0ZW5zaW9uIGlzIG5vdCBhY3RpdmUiKSk7CisgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9f
RElTUExBWTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0Ogog
ICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0NPTkZJRykpOwogICAgICAgICBy
ZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQogCi0gICAgRUdMaW50IHBsYXRmb3JtVHlwZSA9
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU7Ci0gICAgRUdMaW50IGRldmlj
ZVR5cGUgPSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEU7Ci0g
ICAgYm9vbCBtYWpvclZlcnNpb25TcGVjaWZpZWQgPSBmYWxzZTsKLSAgICBib29sIG1pbm9yVmVy
c2lvblNwZWNpZmllZCA9IGZhbHNlOwotICAgIGJvb2wgZW5hYmxlQXV0b1RyaW1TcGVjaWZpZWQg
PSBmYWxzZTsKKyAgICBpZiAocGxhdGZvcm0gPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFKQor
ICAgIHsKKyAgICAgICAgRUdMaW50IHBsYXRmb3JtVHlwZSAgICAgICAgICA9IEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU7CisgICAgICAgIEVHTGludCBkZXZpY2VUeXBlICAg
ICAgICAgICAgPSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEU7
CisgICAgICAgIGJvb2wgbWFqb3JWZXJzaW9uU3BlY2lmaWVkICAgPSBmYWxzZTsKKyAgICAgICAg
Ym9vbCBtaW5vclZlcnNpb25TcGVjaWZpZWQgICA9IGZhbHNlOworICAgICAgICBib29sIGVuYWJs
ZUF1dG9UcmltU3BlY2lmaWVkID0gZmFsc2U7CisgICAgICAgIGJvb2wgZGV2aWNlVHlwZVNwZWNp
ZmllZCAgICAgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBwcmVzZW50UGF0aFNwZWNpZmllZCAgICA9
IGZhbHNlOwogCi0gICAgaWYgKGF0dHJpYl9saXN0KQotICAgIHsKLSAgICAgICAgZm9yIChjb25z
dCBFR0xpbnQgKmN1ckF0dHJpYiA9IGF0dHJpYl9saXN0OyBjdXJBdHRyaWJbMF0gIT0gRUdMX05P
TkU7IGN1ckF0dHJpYiArPSAyKQorICAgICAgICBpZiAoYXR0cmliX2xpc3QpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN3aXRjaCAoY3VyQXR0cmliWzBdKQorICAgICAgICAgICAgZm9yIChjb25z
dCBFR0xpbnQgKmN1ckF0dHJpYiA9IGF0dHJpYl9saXN0OyBjdXJBdHRyaWJbMF0gIT0gRUdMX05P
TkU7IGN1ckF0dHJpYiArPSAyKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFOgotICAgICAgICAgICAgICAgIHN3aXRjaCAoY3Vy
QXR0cmliWzFdKQorICAgICAgICAgICAgICAgIHN3aXRjaCAoY3VyQXR0cmliWzBdKQogICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfREVGQVVMVF9BTkdMRToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEU6CisgICAgICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKGN1ckF0dHJpYlsxXSkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
RUZBVUxUX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEU6Ci0g
ICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
OgotICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWVudEV4dGVuc2lvbnMucGxhdGZvcm1BTkdM
RUQzRCkKLSAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWVudEV4dGVuc2lvbnMucGxhdGZvcm1BTkdMRUQz
RCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNsaWVudEV4dGVuc2lvbnMucGxhdGZvcm1BTkdMRU9wZW5HTCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldEds
b2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9IGN1ckF0dHJpYlsxXTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFOgotICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGll
bnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVPcGVuR0wpCisgICAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFOgorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGN1ckF0dHJpYlsxXSAhPSBFR0xfRE9OVF9DQVJFKQorICAgICAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yVmVy
c2lvblNwZWNpZmllZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9Q
TEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjdXJBdHRyaWJbMV0gIT0gRUdMX0RPTlRfQ0FSRSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vclZlcnNpb25TcGVj
aWZpZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1f
QU5HTEVfRU5BQkxFX0FVVE9NQVRJQ19UUklNX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChjdXJBdHRyaWJbMV0pCiAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRUdMX1RSVUU6CisgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIEVHTF9GQUxTRToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBTZXRH
bG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9UcmltU3BlY2lmaWVkID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcGxhdGZvcm1UeXBlID0gY3VyQXR0cmliWzFdOwotICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9FWFBFUklNRU5U
QUxfUFJFU0VOVF9QQVRIX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGll
bnRFeHRlbnNpb25zLmV4cGVyaW1lbnRhbFByZXNlbnRQYXRoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9BTkdMRV9leHBlcmltZW50
YWxfcHJlc2VudF9wYXRoIGV4dGVuc2lvbiBub3QgYWN0aXZlIikpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lP
Tl9NQUpPUl9BTkdMRToKLSAgICAgICAgICAgICAgICBpZiAoY3VyQXR0cmliWzFdICE9IEVHTF9E
T05UX0NBUkUpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtYWpvclZl
cnNpb25TcGVjaWZpZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY3VyQXR0cmliWzFdKQor
ICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlf
QU5HTEU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNldEdsb2JhbEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiSW52YWxpZCB2YWx1ZSBmb3IgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BB
VEhfQU5HTEUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xf
Tk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXNlbnRQYXRoU3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9W
RVJTSU9OX01JTk9SX0FOR0xFOgotICAgICAgICAgICAgICAgIGlmIChjdXJBdHRyaWJbMV0gIT0g
RUdMX0RPTlRfQ0FSRSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1p
bm9yVmVyc2lvblNwZWNpZmllZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9BTkdMRToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY3Vy
QXR0cmliWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FO
R0xFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX1dBUlBfQU5HTEU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VUeXBlU3BlY2lmaWVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfRU5BQkxFX0FVVE9NQVRJQ19UUklNX0FOR0xFOgotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoY3VyQXR0cmliWzFdKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgIGNhc2UgRUdMX1RSVUU6Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVHTF9G
QUxTRToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGlzIGEgaGlkZGVuIG9wdGlvbiwgYWNjZXB0ZWQgYnkgdGhlIE9wZW5HTCBiYWNr
LWVuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgdmFsdWUg
Zm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWIiKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZVR5cGUg
PSBjdXJBdHRyaWJbMV07CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19E
SVNQTEFZOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbmFibGVBdXRvVHJp
bVNwZWNpZmllZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAg
ICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEU6Ci0gICAgICAgICAg
ICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVEM0QpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFE
X0FUVFJJQlVURSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7
CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIHN3aXRjaCAoY3VyQXR0cmliWzFdKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRX
QVJFX0FOR0xFOgotICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfV0FSUF9BTkdMRToKLSAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRToKLSAgICAgICAgICAgICAgICAgIGNh
c2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5HTEU6Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoIW1ham9yVmVyc2lvblNwZWNpZmllZCAmJiBt
aW5vclZlcnNpb25TcGVjaWZpZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNldEdsb2JhbEVy
cm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAgICByZXR1cm4gRUdMX05P
X0RJU1BMQVk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBkZXZpY2VUeXBlID0gY3VyQXR0cmliWzFdOwotICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoZGV2aWNlVHlwZSA9PSBFR0xfUExBVEZPUk1f
QU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSAmJgorICAgICAgICAgICAgcGxhdGZvcm1UeXBl
ICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAgICAgICB7CisgICAg
ICAgICAgICBTZXRHbG9iYWxFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihFR0xfQkFEX0FU
VFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX1dBUlBfQU5HTEUgcmVxdWlyZXMgYSBkZXZpY2UgdHlwZSBvZiAiCisgICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLiIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgfQogCi0gICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAg
ICAgIGlmIChlbmFibGVBdXRvVHJpbVNwZWNpZmllZCAmJiBwbGF0Zm9ybVR5cGUgIT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNl
dEdsb2JhbEVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfRU5BQkxFX0FVVE9NQVRJ
Q19UUklNX0FOR0xFIHJlcXVpcmVzIGEgZGV2aWNlIHR5cGUgb2YgIgorICAgICAgICAgICAgICAg
ICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRS4iKSk7CisgICAgICAg
ICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAocHJl
c2VudFBhdGhTcGVjaWZpZWQgJiYgcGxhdGZvcm1UeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFKQorICAgICAgICB7CisgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihF
cnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9BTkdMRSByZXF1aXJlcyBhIGRldmljZSB0
eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9EM0QxMV9BTkdMRS4iKSk7CisgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJ
U1BMQVk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGV2aWNlVHlwZVNwZWNpZmllZCAmJiBw
bGF0Zm9ybVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSAmJgorICAg
ICAgICAgICAgcGxhdGZvcm1UeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FO
R0xFKQorICAgICAgICB7CisgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcigKKyAgICAgICAgICAg
ICAgICBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAiRUdM
X1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFIHJlcXVpcmVzIGEgZGV2aWNlIHR5cGUg
b2YgIgorICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5
X0FOR0xFIG9yIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUuIikpOworICAgICAg
ICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOworICAgICAgICB9CisKKyAgICAgICAgU2V0R2xv
YmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICAgICAgcmV0dXJuIERpc3BsYXk6Okdl
dERpc3BsYXlGcm9tQXR0cmlicyhuYXRpdmVfZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21JbnRBcnJh
eShhdHRyaWJfbGlzdCkpOwogICAgIH0KLQotICAgIGlmICghbWFqb3JWZXJzaW9uU3BlY2lmaWVk
ICYmIG1pbm9yVmVyc2lvblNwZWNpZmllZCkKKyAgICBlbHNlIGlmIChwbGF0Zm9ybSA9PSBFR0xf
UExBVEZPUk1fREVWSUNFX0VYVCkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9y
KEVHTF9CQURfQVRUUklCVVRFKSk7Ci0gICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKLSAg
ICB9CisgICAgICAgIERldmljZSAqZWdsRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxEZXZpY2Ug
Kj4obmF0aXZlX2Rpc3BsYXkpOworICAgICAgICBpZiAoZWdsRGV2aWNlID09IG51bGxwdHIgfHwg
IURldmljZTo6SXNWYWxpZERldmljZShlZ2xEZXZpY2UpKQorICAgICAgICB7CisgICAgICAgICAg
ICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJuYXRpdmVfZGlzcGxheSBzaG91bGQgYmUgYSB2YWxpZCBFR0wg
ZGV2aWNlIGlmIHBsYXRmb3JtIGVxdWFscyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQiKSk7CisgICAgICAgICAgICByZXR1cm4gRUdM
X05PX0RJU1BMQVk7CisgICAgICAgIH0KIAotICAgIGlmIChkZXZpY2VUeXBlID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFICYmCi0gICAgICAgIHBsYXRmb3JtVHlw
ZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAg
IFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUgcmVxdWlyZXMgYSBkZXZpY2UgdHlwZSBvZiAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUuIikpOwotICAgICAgICByZXR1cm4gRUdMX05PX0RJ
U1BMQVk7CisgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAg
ICAgIHJldHVybiBEaXNwbGF5OjpHZXREaXNwbGF5RnJvbURldmljZShuYXRpdmVfZGlzcGxheSk7
CiAgICAgfQotCi0gICAgaWYgKGVuYWJsZUF1dG9UcmltU3BlY2lmaWVkICYmCi0gICAgICAgIHBs
YXRmb3JtVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKKyAgICBl
bHNlCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSwgIkVHTF9QTEFURk9STV9BTkdMRV9FTkFCTEVfQVVUT01BVElDX1RSSU1fQU5HTEUgcmVxdWly
ZXMgYSBkZXZpY2UgdHlwZSBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUuIikpOwor
ICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAg
ICAgfQotCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKLQotICAgIEVH
TE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCA9IHN0YXRpY19jYXN0PEVHTE5hdGl2ZURpc3Bs
YXlUeXBlPihuYXRpdmVfZGlzcGxheSk7Ci0gICAgcmV0dXJuIERpc3BsYXk6OmdldERpc3BsYXko
ZGlzcGxheUlkLCBBdHRyaWJ1dGVNYXAoYXR0cmliX2xpc3QpKTsKIH0KIAogLy8gRUdMX0VYVF9k
ZXZpY2VfcXVlcnkKQEAgLTI3NiwzNCArMzU4LDMxIEBACiAgICAgICAgICAgZGV2aWNlLCBhdHRy
aWJ1dGUsIHZhbHVlKTsKIAogICAgIERldmljZSAqZGV2ID0gc3RhdGljX2Nhc3Q8RGV2aWNlKj4o
ZGV2aWNlKTsKLSAgICBpZiAoZGV2ID09IEVHTF9OT19ERVZJQ0VfRVhUKQorICAgIGlmIChkZXYg
PT0gRUdMX05PX0RFVklDRV9FWFQgfHwgIURldmljZTo6SXNWYWxpZERldmljZShkZXYpKQogICAg
IHsKICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BQ0NFU1MpKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBEaXNwbGF5ICpkaXNwbGF5ID0gZGV2
LT5nZXREaXNwbGF5KCk7Ci0gICAgRXJyb3IgZXJyb3IoRUdMX1NVQ0NFU1MpOwotCi0gICAgaWYg
KCFkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuZGV2aWNlUXVlcnkpCisgICAgLy8gSWYgdGhlIGRl
dmljZSB3YXMgY3JlYXRlZCBieSAoYW5kIGlzIG93bmVkIGJ5KSBhIGRpc3BsYXksIGFuZCB0aGF0
IGRpc3BsYXkgZG9lc24ndCBzdXBwb3J0CisgICAgLy8gZGV2aWNlIHF1ZXJ5aW5nLCB0aGVuIHRo
aXMgY2FsbCBzaG91bGQgZmFpbAorICAgIERpc3BsYXkgKm93bmluZ0Rpc3BsYXkgPSBkZXYtPmdl
dE93bmluZ0Rpc3BsYXkoKTsKKyAgICBpZiAob3duaW5nRGlzcGxheSAhPSBudWxscHRyICYmICFv
d25pbmdEaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuZGV2aWNlUXVlcnkpCiAgICAgewotICAgICAg
ICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FDQ0VTUykpOworICAgICAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfQkFEX0FDQ0VTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkRldmljZSB3YXNuJ3QgY3JlYXRlZCB1c2luZyBlZ2xDcmVhdGVEZXZpY2VBTkdMRSwgYW5k
IHRoZSBEaXNwbGF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoYXQgY3JlYXRl
ZCBpdCBkb2Vzbid0IHN1cHBvcnQgZGV2aWNlIHF1ZXJ5aW5nIikpOwogICAgICAgICByZXR1cm4g
RUdMX0ZBTFNFOwogICAgIH0KIAorICAgIEVycm9yIGVycm9yKEVHTF9TVUNDRVNTKTsKKwogICAg
IC8vIHZhbGlkYXRlIHRoZSBhdHRyaWJ1dGUgcGFyYW1ldGVyCiAgICAgc3dpdGNoIChhdHRyaWJ1
dGUpCiAgICAgewogICAgICAgY2FzZSBFR0xfRDNEMTFfREVWSUNFX0FOR0xFOgotICAgICAgICBp
ZiAoIWRldi0+Z2V0RXh0ZW5zaW9ucygpLmRldmljZUQzRCB8fCBkZXYtPmdldFR5cGUoKSAhPSBF
R0xfRDNEMTFfREVWSUNFX0FOR0xFKQotICAgICAgICB7Ci0gICAgICAgICAgICBTZXRHbG9iYWxF
cnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwotICAgICAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKLSAgICAgICAgfQotICAgICAgICBlcnJvciA9IGRldi0+Z2V0RGV2aWNlKHZhbHVlKTsK
LSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVHTF9EM0Q5X0RFVklDRV9BTkdMRToKLSAgICAg
ICAgaWYgKCFkZXYtPmdldEV4dGVuc2lvbnMoKS5kZXZpY2VEM0QgfHwgZGV2LT5nZXRUeXBlKCkg
IT0gRUdMX0QzRDlfREVWSUNFX0FOR0xFKQorICAgICAgICBpZiAoIWRldi0+Z2V0RXh0ZW5zaW9u
cygpLmRldmljZUQzRCB8fCBkZXYtPmdldFR5cGUoKSAhPSBhdHRyaWJ1dGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CiAg
ICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwpAQCAtMzI2LDcgKzQwNSw3IEBACiAgICAgICAg
ICAgZGV2aWNlLCBuYW1lKTsKIAogICAgIERldmljZSAqZGV2ID0gc3RhdGljX2Nhc3Q8RGV2aWNl
Kj4oZGV2aWNlKTsKLSAgICBpZiAoZGV2ID09IEVHTF9OT19ERVZJQ0VfRVhUKQorICAgIGlmIChk
ZXYgPT0gRUdMX05PX0RFVklDRV9FWFQgfHwgIURldmljZTo6SXNWYWxpZERldmljZShkZXYpKQog
ICAgIHsKICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9ERVZJQ0VfRVhUKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzc4LDQgKzQ1NywzNzkgQEAKICAgICByZXR1
cm4gKGVycm9yLmlzRXJyb3IoKSA/IEVHTF9GQUxTRSA6IEVHTF9UUlVFKTsKIH0KIAorQU5HTEVf
RVhQT1JUIEVHTEltYWdlS0hSIEVHTEFQSUVOVFJZIENyZWF0ZUltYWdlS0hSKEVHTERpc3BsYXkg
ZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENvbnRleHQgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMaW50
ICphdHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwgRUdMZW51bSB0YXJnZXQgPSAweCVY
LCAiCisgICAgICAgICJFR0xDbGllbnRCdWZmZXIgYnVmZmVyID0gMHglMC44cCwgY29uc3QgRUdM
QXR0cmliICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKKyAgICAgICAgZHB5LCBjdHgsIHRhcmdl
dCwgYnVmZmVyLCBhdHRyaWJfbGlzdCk7CisKKyAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0
YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHN0
YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7CisgICAgQXR0cmlidXRlTWFwIGF0dHJpYnV0
ZXMgPSBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21JbnRBcnJheShhdHRyaWJfbGlzdCk7CisKKyAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwg
dGFyZ2V0LCBidWZmZXIsIGF0dHJpYnV0ZXMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisg
ICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xf
Tk9fSU1BR0U7CisgICAgfQorCisgICAgSW1hZ2UgKmltYWdlID0gbnVsbHB0cjsKKyAgICBlcnJv
ciA9IGRpc3BsYXktPmNyZWF0ZUltYWdlKGNvbnRleHQsIHRhcmdldCwgYnVmZmVyLCBhdHRyaWJ1
dGVzLCAmaW1hZ2UpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBT
ZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfTk9fSU1BR0U7CisgICAg
fQorCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVHTEltYWdlPihpbWFnZSk7CiB9CisKK0FOR0xF
X0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lJbWFnZUtIUihFR0xEaXNwbGF5
IGRweSwgRUdMSW1hZ2VLSFIgaW1hZ2UpCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTEltYWdlIGltYWdlID0gMHglMC44cCkiLCBkcHksIGltYWdlKTsKKworICAg
IERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CisgICAgSW1h
Z2UgKmltZyAgICAgICA9IHN0YXRpY19jYXN0PEltYWdlICo+KGltYWdlKTsKKworICAgIEVycm9y
IGVycm9yID0gVmFsaWRhdGVEZXN0cm95SW1hZ2VLSFIoZGlzcGxheSwgaW1nKTsKKyAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwor
ICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKworICAgIGRpc3BsYXktPmRlc3Ryb3lJ
bWFnZShpbWcpOworCisgICAgcmV0dXJuIEVHTF9UUlVFOworfQorCitBTkdMRV9FWFBPUlQgRUdM
RGV2aWNlRVhUIEVHTEFQSUVOVFJZIENyZWF0ZURldmljZUFOR0xFKEVHTGludCBkZXZpY2VfdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqbmF0aXZlX2RldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCkKK3sK
KyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xpbnQgZGV2aWNlX3R5cGUgPSAlZCwgdm9pZCogbmF0
aXZlX2RldmljZSA9IDB4JTAuOHAsIGNvbnN0IEVHTEF0dHJpYiogYXR0cmliX2xpc3QgPSAiCisg
ICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIGRldmljZV90eXBlLCBuYXRpdmVfZGV2aWNlLCBh
dHRyaWJfbGlzdCk7CisKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ3JlYXRlRGV2aWNlQU5H
TEUoZGV2aWNlX3R5cGUsIG5hdGl2ZV9kZXZpY2UsIGF0dHJpYl9saXN0KTsKKyAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAg
ICAgICByZXR1cm4gRUdMX05PX0RFVklDRV9FWFQ7CisgICAgfQorCisgICAgRGV2aWNlICpkZXZp
Y2UgPSBudWxscHRyOworICAgIGVycm9yID0gRGV2aWNlOjpDcmVhdGVEZXZpY2UobmF0aXZlX2Rl
dmljZSwgZGV2aWNlX3R5cGUsICZkZXZpY2UpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisg
ICAgeworICAgICAgICBBU1NFUlQoZGV2aWNlID09IG51bGxwdHIpOworICAgICAgICBTZXRHbG9i
YWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfTk9fREVWSUNFX0VYVDsKKyAgICB9
CisKKyAgICByZXR1cm4gZGV2aWNlOworfQorCitBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xB
UElFTlRSWSBSZWxlYXNlRGV2aWNlQU5HTEUoRUdMRGV2aWNlRVhUIGRldmljZSkKK3sKKyAgICBF
VkVOVCgiKEVHTERldmljZUVYVCBkZXZpY2UgPSAweCUwLjhwKSIsIGRldmljZSk7CisKKyAgICBE
ZXZpY2UgKmRldiA9IHN0YXRpY19jYXN0PERldmljZSAqPihkZXZpY2UpOworCisgICAgRXJyb3Ig
ZXJyb3IgPSBWYWxpZGF0ZVJlbGVhc2VEZXZpY2VBTkdMRShkZXYpOworICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCisgICAgU2FmZURlbGV0ZShkZXYpOworCisgICAg
cmV0dXJuIEVHTF9UUlVFOworfQorCisvLyBFR0xfS0hSX3N0cmVhbQorRUdMU3RyZWFtS0hSIEVH
TEFQSUVOVFJZIENyZWF0ZVN0cmVhbUtIUihFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICph
dHRyaWJfbGlzdCkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgY29u
c3QgRUdMQXR0cmliKiBhdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwgZHB5LCBhdHRyaWJfbGlzdCk7
CisKKyAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOwor
ICAgIEF0dHJpYnV0ZU1hcCBhdHRyaWJ1dGVzID0gQXR0cmlidXRlTWFwOjpDcmVhdGVGcm9tSW50
QXJyYXkoYXR0cmliX2xpc3QpOworCisgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNyZWF0ZVN0
cmVhbUtIUihkaXNwbGF5LCBhdHRyaWJ1dGVzKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQor
ICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdM
X05PX1NUUkVBTV9LSFI7CisgICAgfQorCisgICAgU3RyZWFtICpzdHJlYW07CisgICAgZXJyb3Ig
PSBkaXNwbGF5LT5jcmVhdGVTdHJlYW0oYXR0cmlidXRlcywgJnN0cmVhbSk7CisgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIEVHTF9OT19TVFJFQU1fS0hSOworICAgIH0KKworICAgIFNldEdsb2JhbEVy
cm9yKGVycm9yKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMU3RyZWFtS0hSPihzdHJlYW0p
OworfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lTdHJlYW1LSFIoRUdMRGlzcGxh
eSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCit7CisgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHAsIEVHTFN0cmVhbUtIUiA9IDB4JTAuOHApIiwgZHB5LCBzdHJlYW0pOworCisg
ICAgRGlzcGxheSAqZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7Cisg
ICAgU3RyZWFtICpzdHJlYW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsK
KworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEZXN0cm95U3RyZWFtS0hSKGRpc3BsYXksIHN0
cmVhbU9iamVjdCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNl
dEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisK
KyAgICBkaXNwbGF5LT5kZXN0cm95U3RyZWFtKHN0cmVhbU9iamVjdCk7CisgICAgU2V0R2xvYmFs
RXJyb3IoZXJyb3IpOworICAgIHJldHVybiBFR0xfVFJVRTsKK30KKworRUdMQm9vbGVhbiBFR0xB
UElFTlRSWSBTdHJlYW1BdHRyaWJLSFIoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xTdHJlYW1LSFIgc3RyZWFtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBhdHRyaWJ1dGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgdmFsdWUpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdHJlYW1LSFIgc3RyZWFt
ID0gMHglMC44cCwgRUdMZW51bSBhdHRyaWJ1dGUgPSAweCVYLCAiCisgICAgICAgICJFR0xpbnQg
dmFsdWUgPSAweCVYKSIsCisgICAgICAgIGRweSwgc3RyZWFtLCBhdHRyaWJ1dGUsIHZhbHVlKTsK
KworICAgIERpc3BsYXkgKmRpc3BsYXkgICAgID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkp
OworICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0ID0gc3RhdGljX2Nhc3Q8U3RyZWFtICo+KHN0cmVh
bSk7CisKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFtQXR0cmliS0hSKGRpc3BsYXks
IHN0cmVhbU9iamVjdCwgYXR0cmlidXRlLCB2YWx1ZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKKyAgICB7CisgICAg
ICAgIGNhc2UgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFI6CisgICAgICAgICAgICBzdHJl
YW1PYmplY3QtPnNldENvbnN1bWVyTGF0ZW5jeSh2YWx1ZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFR0xfQ09OU1VNRVJfQUNRVUlSRV9USU1FT1VUX1VTRUNfS0hSOgorICAg
ICAgICAgICAgc3RyZWFtT2JqZWN0LT5zZXRDb25zdW1lckFjcXVpcmVUaW1lb3V0KHZhbHVlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICB9CisKKyAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgcmV0dXJu
IEVHTF9UUlVFOworfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3RyZWFtS0hSKEVH
TERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xT
dHJlYW1LSFIgc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xlbnVtIGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50ICp2YWx1ZSkKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTFN0cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCBFR0xlbnVtIGF0dHJpYnV0
ZSA9IDB4JVgsICIKKyAgICAgICAgIkVHTGludCB2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAgICAg
ZHB5LCBzdHJlYW0sIGF0dHJpYnV0ZSwgdmFsdWUpOworCisgICAgRGlzcGxheSAqZGlzcGxheSAg
ICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CisgICAgU3RyZWFtICpzdHJlYW1PYmpl
Y3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsKKworICAgIEVycm9yIGVycm9yID0g
VmFsaWRhdGVRdWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1PYmplY3QsIGF0dHJpYnV0ZSwg
dmFsdWUpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRHbG9i
YWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCisgICAg
c3dpdGNoIChhdHRyaWJ1dGUpCisgICAgeworICAgICAgICBjYXNlIEVHTF9TVFJFQU1fU1RBVEVf
S0hSOgorICAgICAgICAgICAgKnZhbHVlID0gc3RyZWFtT2JqZWN0LT5nZXRTdGF0ZSgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19L
SFI6CisgICAgICAgICAgICAqdmFsdWUgPSBzdHJlYW1PYmplY3QtPmdldENvbnN1bWVyTGF0ZW5j
eSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NPTlNVTUVSX0FDUVVJ
UkVfVElNRU9VVF9VU0VDX0tIUjoKKyAgICAgICAgICAgICp2YWx1ZSA9IHN0cmVhbU9iamVjdC0+
Z2V0Q29uc3VtZXJBY3F1aXJlVGltZW91dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIFNldEds
b2JhbEVycm9yKGVycm9yKTsKKyAgICByZXR1cm4gRUdMX1RSVUU7Cit9CisKK0VHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgUXVlcnlTdHJlYW11NjRLSFIoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYXR0cmlidXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnZh
bHVlKQoreworICAgIEVWRU5UKAorICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMU3RyZWFtS0hSIHN0cmVhbSA9IDB4JTAuOHAsIEVHTGVudW0gYXR0cmlidXRlID0gMHglWCwg
IgorICAgICAgICAiRUdMdWludDY0S0hSIHZhbHVlID0gMHglMC44cCkiLAorICAgICAgICBkcHks
IHN0cmVhbSwgYXR0cmlidXRlLCB2YWx1ZSk7CisKKyAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9
IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBTdHJlYW0gKnN0cmVhbU9iamVjdCA9
IHN0YXRpY19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOworCisgICAgRXJyb3IgZXJyb3IgPSBWYWxp
ZGF0ZVF1ZXJ5U3RyZWFtdTY0S0hSKGRpc3BsYXksIHN0cmVhbU9iamVjdCwgYXR0cmlidXRlLCB2
YWx1ZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBz
d2l0Y2ggKGF0dHJpYnV0ZSkKKyAgICB7CisgICAgICAgIGNhc2UgRUdMX1BST0RVQ0VSX0ZSQU1F
X0tIUjoKKyAgICAgICAgICAgICp2YWx1ZSA9IHN0cmVhbU9iamVjdC0+Z2V0UHJvZHVjZXJGcmFt
ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NPTlNVTUVSX0ZSQU1F
X0tIUjoKKyAgICAgICAgICAgICp2YWx1ZSA9IHN0cmVhbU9iamVjdC0+Z2V0Q29uc3VtZXJGcmFt
ZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgIH0KKworICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICBy
ZXR1cm4gRUdMX1RSVUU7Cit9CisKK0VHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3Vt
ZXJHTFRleHR1cmVFeHRlcm5hbEtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVh
bSkKK3sKKyAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hS
ID0gMHglMC44cCkiLCBkcHksIHN0cmVhbSk7CisgICAgRGlzcGxheSAqZGlzcGxheSAgICAgPSBz
dGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CisgICAgU3RyZWFtICpzdHJlYW1PYmplY3QgPSBz
dGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IGdsOjpHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKworICAgIEVycm9yIGVycm9yID0gVmFsaWRh
dGVTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsS0hSKGRpc3BsYXksIGNvbnRleHQsIHN0
cmVhbU9iamVjdCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNl
dEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9Cisg
ICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9CisKK0VH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJBY3F1aXJlS0hSKEVHTERpc3BsYXkg
ZHB5LCBFR0xTdHJlYW1LSFIgc3RyZWFtKQoreworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xTdHJlYW1LSFIgPSAweCUwLjhwKSIsIGRweSwgc3RyZWFtKTsKKyAgICBE
aXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBT
dHJlYW0gKnN0cmVhbU9iamVjdCA9IHN0YXRpY19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOworICAg
IGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OkdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworCisg
ICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN0cmVhbUNvbnN1bWVyQWNxdWlyZUtIUihkaXNwbGF5
LCBjb250ZXh0LCBzdHJlYW1PYmplY3QpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAg
eworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xfRkFM
U0U7CisgICAgfQorICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICByZXR1cm4gRUdMX0ZB
TFNFOworfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUNvbnN1bWVyUmVsZWFzZUtI
UihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSkKK3sKKyAgICBFVkVOVCgiKEVH
TERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hSID0gMHglMC44cCkiLCBkcHksIHN0
cmVhbSk7CisgICAgRGlzcGxheSAqZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+
KGRweSk7CisgICAgU3RyZWFtICpzdHJlYW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4o
c3RyZWFtKTsKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW1Db25zdW1lclJlbGVh
c2VLSFIoZGlzcGxheSwgY29udGV4dCwgc3RyZWFtT2JqZWN0KTsKKyAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQorICAgIHsKKyAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOworICAgIH0KKyAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAg
cmV0dXJuIEVHTF9GQUxTRTsKK30KKworRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25z
dW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TFN0cmVhbUtIUiBzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCkK
K3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN0
cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCBFR0xBdHRyaWIgYXR0cmliX2xpc3QgPSAweCUwLjhw
IiwKKyAgICAgICAgZHB5LCBzdHJlYW0sIGF0dHJpYl9saXN0KTsKKyAgICBEaXNwbGF5ICpkaXNw
bGF5ICAgICAgICA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKKyAgICBTdHJlYW0gKnN0
cmVhbU9iamVjdCAgICA9IHN0YXRpY19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOworICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ICAgID0gZ2w6OkdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIEF0
dHJpYnV0ZU1hcCBhdHRyaWJ1dGVzID0gQXR0cmlidXRlTWFwOjpDcmVhdGVGcm9tQXR0cmliQXJy
YXkoYXR0cmliX2xpc3QpOworCisgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN0cmVhbUNvbnN1
bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgY29udGV4dCwgc3RyZWFtT2Jq
ZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisg
ICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CisgICAgfQorICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICByZXR1cm4gRUdM
X0ZBTFNFOworfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIENyZWF0ZVN0cmVhbVByb2R1Y2Vy
RDNEVGV4dHVyZU5WMTJBTkdMRShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBz
dHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hSIHN0cmVh
bSA9IDB4JTAuOHAsIEVHTEF0dHJpYiBhdHRyaWJfbGlzdCA9IDB4JTAuOHAiLAorICAgICAgICBk
cHksIHN0cmVhbSwgYXR0cmliX2xpc3QpOworICAgIERpc3BsYXkgKmRpc3BsYXkgICAgICAgID0g
c3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOworICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0ICAg
ID0gc3RhdGljX2Nhc3Q8U3RyZWFtICo+KHN0cmVhbSk7CisgICAgQXR0cmlidXRlTWFwIGF0dHJp
YnV0ZXMgPSBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21BdHRyaWJBcnJheShhdHRyaWJfbGlzdCk7
CisKKyAgICBFcnJvciBlcnJvciA9CisgICAgICAgIFZhbGlkYXRlQ3JlYXRlU3RyZWFtUHJvZHVj
ZXJEM0RUZXh0dXJlTlYxMkFOR0xFKGRpc3BsYXksIHN0cmVhbU9iamVjdCwgYXR0cmlidXRlcyk7
CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIFNldEdsb2JhbEVycm9y
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBTZXRHbG9i
YWxFcnJvcihlcnJvcik7CisgICAgcmV0dXJuIEVHTF9GQUxTRTsKK30KKworRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBTdHJlYW1Qb3N0RDNEVGV4dHVyZU5WMTJBTkdMRShFR0xEaXNwbGF5IGRweSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
U3RyZWFtS0hSIHN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCkK
K3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN0
cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCB2b2lkKiB0ZXh0dXJlID0gMHglMC44cCwgIgorICAg
ICAgICAiRUdMQXR0cmliIGF0dHJpYl9saXN0ID0gMHglMC44cCIsCisgICAgICAgIGRweSwgc3Ry
ZWFtLCB0ZXh0dXJlLCBhdHRyaWJfbGlzdCk7CisgICAgRGlzcGxheSAqZGlzcGxheSAgICAgICAg
PSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CisgICAgU3RyZWFtICpzdHJlYW1PYmplY3Qg
ICAgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsKKyAgICBBdHRyaWJ1dGVNYXAgYXR0
cmlidXRlcyA9IEF0dHJpYnV0ZU1hcDo6Q3JlYXRlRnJvbUF0dHJpYkFycmF5KGF0dHJpYl9saXN0
KTsKKworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW1Qb3N0RDNEVGV4dHVyZU5WMTJB
TkdMRShkaXNwbGF5LCBzdHJlYW1PYmplY3QsIHRleHR1cmUsIGF0dHJpYnV0ZXMpOworICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7
CisgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgfQorCisgICAgU2V0R2xvYmFsRXJyb3Io
ZXJyb3IpOworICAgIHJldHVybiBFR0xfRkFMU0U7Cit9Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
ZWdsX2V4dC5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDU1IEBACiBBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeURl
dmljZUF0dHJpYkVYVChFR0xEZXZpY2VFWFQgZGV2aWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xB
dHRyaWIgKnZhbHVlKTsKIEFOR0xFX0VYUE9SVCBjb25zdCBjaGFyICogRUdMQVBJRU5UUlkgUXVl
cnlEZXZpY2VTdHJpbmdFWFQoRUdMRGV2aWNlRVhUIGRldmljZSwgRUdMaW50IG5hbWUpOwogCi19
CisvLyBFR0xfS0hSX2ltYWdlX2Jhc2UvRUdMX0tIUl9pbWFnZQorQU5HTEVfRVhQT1JUIEVHTElt
YWdlS0hSIEVHTEFQSUVOVFJZIENyZWF0ZUltYWdlS0hSKEVHTERpc3BsYXkgZHB5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENvbnRleHQg
Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMaW50ICphdHRyaWJfbGlz
dCk7CitBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBEZXN0cm95SW1hZ2VLSFIo
RUdMRGlzcGxheSBkcHksIEVHTEltYWdlS0hSIGltYWdlKTsKIAorLy8gRUdMX0VYVF9kZXZpY2Vf
Y3JlYXRpb24KK0FOR0xFX0VYUE9SVCBFR0xEZXZpY2VFWFQgRUdMQVBJRU5UUlkgQ3JlYXRlRGV2
aWNlQU5HTEUoRUdMaW50IGRldmljZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpuYXRpdmVfZGV2aWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF
R0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKK0FOR0xFX0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVO
VFJZIFJlbGVhc2VEZXZpY2VBTkdMRShFR0xEZXZpY2VFWFQgZGV2aWNlKTsKKworLy8gRUdMX0tI
Ul9zdHJlYW0KK0FOR0xFX0VYUE9SVCBFR0xTdHJlYW1LSFIgRUdMQVBJRU5UUlkgQ3JlYXRlU3Ry
ZWFtS0hSKEVHTERpc3BsYXkgZHB5LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK0FOR0xF
X0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lTdHJlYW1LSFIoRUdMRGlzcGxh
eSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pOworQU5HTEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgU3RyZWFtQXR0cmliS0hSKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
ZW51bSBhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IHZhbHVlKTsKK0FOR0xFX0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIFF1ZXJ5U3RyZWFtS0hSKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3RyZWFtS0hSIHN0cmVhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0g
YXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMaW50ICp2YWx1ZSk7CitBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRS
WSBRdWVyeVN0cmVhbXU2NEtIUihFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xl
bnVtIGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqdmFsdWUpOworCisvLyBFR0xfS0hSX3N0cmVhbV9j
b25zdW1lcl9nbHRleHR1cmUKK0FOR0xFX0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0
cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxLSFIoRUdMRGlzcGxheSBkcHksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTFN0cmVhbUtIUiBzdHJlYW0pOworQU5HTEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJBY3F1aXJlS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJl
YW1LSFIgc3RyZWFtKTsKK0FOR0xFX0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVh
bUNvbnN1bWVyUmVsZWFzZUtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSk7
CitBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWQorU3RyZWFtQ29uc3VtZXJHTFRl
eHR1cmVFeHRlcm5hbEF0dHJpYnNOVihFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3RyZWFtS0hSIHN0cmVhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlz
dCk7CisKKy8vIEVHTF9BTkdMRV9zdHJlYW1fcHJvZHVjZXJfZDNkX3RleHR1cmVfbnYxMgorQU5H
TEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkKK0NyZWF0ZVN0cmVhbVByb2R1Y2VyRDNE
VGV4dHVyZU5WMTJBTkdMRShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xTdHJlYW1LSFIgc3RyZWFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOworQU5H
TEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEy
QU5HTEUoRUdMRGlzcGxheSBkcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdHJlYW1LSFIgc3RyZWFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xp
c3QpOworfSAgLy8gbmFtZXNwYWNlIGVnbAorCiAjZW5kaWYgLy8gTElCR0xFU1YyX0VOVFJZUE9J
TlRTRUdMRVhUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L2VudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwCShyZXZpc2lv
biAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5
X3BvaW50c19nbGVzXzJfMC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDM1ICs1OSwxNiBAQAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0
LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNv
bnRleHQtPmdldFNoYWRlcihzaGFkZXIpOwotCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CiAgICAgICAgIGlmICghcHJv
Z3JhbU9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRl
cihwcm9ncmFtKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRW
YWxpZFNoYWRlcihjb250ZXh0LCBzaGFkZXIpOwogICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVyKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5hdHRhY2hTaGFkZXIoc2hhZGVy
T2JqZWN0KSkKQEAgLTExMSwyMCArOTIsMTEgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQ
cm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogCiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCkBAIC0y
MzMsMzQgKzIwNSwxMSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFRleHR1cmUgKnRleHR1
cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJlKHRleHR1cmUpOwotCi0gICAgICAgIGlmICh0
ZXh0dXJlT2JqZWN0ICYmIHRleHR1cmVPYmplY3QtPmdldFRhcmdldCgpICE9IHRhcmdldCAmJiB0
ZXh0dXJlICE9IDApCisgICAgICAgIGlmICghVmFsaWRhdGVCaW5kVGV4dHVyZShjb250ZXh0LCB0
YXJnZXQsIHRleHR1cmUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQ
OgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6Ci0g
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgotICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAg
ICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwogICAgIH0KIH0KQEAg
LTQ0NCwxNyArMzkzLDI1IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBib29sIGNvbnN0YW50Q29sb3JVc2VkID0gKHNyY1JHQiA9PSBHTF9DT05TVEFOVF9DT0xP
UiB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIHx8Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZHN0UkdCID09IEdMX0NPTlNUQU5UX0NPTE9SIHx8IGRz
dFJHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IpOworICAgICAgICBpZiAoY29udGV4
dC0+Z2V0TGltaXRhdGlvbnMoKS5ub1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJs
ZW5kRnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgYm9vbCBjb25zdGFudENvbG9yVXNlZCA9
CisgICAgICAgICAgICAgICAgKHNyY1JHQiA9PSBHTF9DT05TVEFOVF9DT0xPUiB8fCBzcmNSR0Ig
PT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIHx8CisgICAgICAgICAgICAgICAgIGRzdFJH
QiA9PSBHTF9DT05TVEFOVF9DT0xPUiB8fCBkc3RSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5U
X0NPTE9SKTsKIAotICAgICAgICBib29sIGNvbnN0YW50QWxwaGFVc2VkID0gKHNyY1JHQiA9PSBH
TF9DT05TVEFOVF9BTFBIQSB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhB
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0UkdCID09IEdMX0NPTlNU
QU5UX0FMUEhBIHx8IGRzdFJHQiA9PSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEpOworICAg
ICAgICAgICAgYm9vbCBjb25zdGFudEFscGhhVXNlZCA9CisgICAgICAgICAgICAgICAgKHNyY1JH
QiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5U
X0FMUEhBIHx8CisgICAgICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8
fCBkc3RSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKIAotICAgICAgICBpZiAo
Y29uc3RhbnRDb2xvclVzZWQgJiYgY29uc3RhbnRBbHBoYVVzZWQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEVSUigiU2ltdWx0YW5lb3VzIHVzZSBvZiBHTF9DT05TVEFOVF9BTFBIQS9HTF9PTkVf
TUlOVVNfQ09OU1RBTlRfQUxQSEEgYW5kIEdMX0NPTlNUQU5UX0NPTE9SL0dMX09ORV9NSU5VU19D
T05TVEFOVF9DT0xPUiBpbnZhbGlkIHVuZGVyIFdlYkdMIik7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgaWYgKGNvbnN0YW50Q29sb3JVc2VkICYmIGNvbnN0YW50QWxw
aGFVc2VkKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEVSUigKKyAgICAgICAgICAg
ICAgICAgICAgIlNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01J
TlVTX0NPTlNUQU5UX0FMUEhBIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICJHTF9DT05TVEFO
VF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1Igbm90IHN1cHBvcnRlZCBieSB0aGlz
ICIKKyAgICAgICAgICAgICAgICAgICAgImltcGxlbWVudGF0aW9uLiIpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAg
ICAgY29udGV4dC0+Z2V0U3RhdGUoKS5zZXRCbGVuZEZhY3RvcnMoc3JjUkdCLCBkc3RSR0IsIHNy
Y0FscGhhLCBkc3RBbHBoYSk7CkBAIC02MTMsMjcgKzU3MCwxMiBAQAogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IGNvbnRleHQtPmdldFN0
YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlck9i
amVjdCk7Ci0KLSAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0LT5jaGVja1N0YXR1cyhjb250
ZXh0LT5nZXREYXRhKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgICAgICBpZiAo
IWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQ2xlYXIoY29udGV4dCwgbWFz
aykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSkgIT0gMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRXJyb3Ig
ZXJyb3IgPSBmcmFtZWJ1ZmZlck9iamVjdC0+Y2xlYXIoY29udGV4dC0+Z2V0RGF0YSgpLCBtYXNr
KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGNvbnRleHQtPmNsZWFyKG1hc2spOwogICAgIH0KIH0KIApAQCAtNjkwLDIy
ICs2MzIsMTEgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVj
dCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOwotCisgICAgICAgIFNoYWRlciAqc2hhZGVy
T2JqZWN0ID0gR2V0VmFsaWRTaGFkZXIoY29udGV4dCwgc2hhZGVyKTsKICAgICAgICAgaWYgKCFz
aGFkZXJPYmplY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRQcm9n
cmFtKHNoYWRlcikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotCiAgICAgICAgIHNoYWRlck9iamVjdC0+Y29tcGlsZShjb250
ZXh0LT5nZXRDb21waWxlcigpKTsKICAgICB9CiB9CkBAIC03MjAsMzYgKzY1MSwxNSBAQAogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAz
ICYmCi0gICAgICAgICAgICAhVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwg
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHRydWUsIGZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgR0xfTk9ORSwgR0xfTk9ORSwgZGF0YSkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlQ29tcHJlc3NlZFRleEltYWdlMkQo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGltYWdlU2l6
ZSwgZGF0YSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyAmJgotICAgICAgICAg
ICAgIVZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCB0cnVlLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAxLCBib3JkZXIsIEdMX05P
TkUsIEdMX05PTkUsIGRhdGEpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldElu
dGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7Ci0gICAgICAgIGlmIChpbWFnZVNpemUg
PCAwIHx8IHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSAhPSBmb3JtYXRJbmZvLmNvbXB1
dGVCbG9ja1NpemUoR0xfVU5TSUdORURfQllURSwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEV4dGVudHMgc2l6
ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQt
PmdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVY
VFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Ci0gICAgICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+
c2V0Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLCBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldFVucGFja1N0YXRlKCksIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QgKj4oZGF0YSkpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y29tcHJlc3NlZFRleEltYWdlMkQo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplLCBkYXRhKTsKICAg
ICB9CiB9CiAKQEAgLTc2NCwzNyArNjc0LDE1IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICFWYWxp
ZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05F
LCB0cnVlLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIDAsIEdMX05PTkUsIEdMX05PTkUsIGRh
dGEpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAg
ICAgICFWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKGNvbnRleHQsIHRhcmdldCwgbGV2
ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyAmJgotICAgICAgICAgICAgIVZhbGlkYXRlRVMz
VGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIHRydWUs
IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9mZnNl
dCwgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSwgMCwgR0xfTk9ORSwgR0xfTk9ORSwgZGF0
YSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZv
KGZvcm1hdCk7Ci0gICAgICAgIGlmIChpbWFnZVNpemUgPCAwIHx8IHN0YXRpY19jYXN0PEdMdWlu
dD4oaW1hZ2VTaXplKSAhPSBmb3JtYXRJbmZvLmNvbXB1dGVCbG9ja1NpemUoR0xfVU5TSUdORURf
QllURSwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0KLSAgICAgICAgQm94IGFyZWEoeG9mZnNldCwgeW9mZnNldCwgMCwgd2lk
dGgsIGhlaWdodCwgMSk7Ci0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRU
YXJnZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVf
Q1VCRV9NQVAgOiB0YXJnZXQpOwotICAgICAgICBFcnJvciBlcnJvciA9IHRleHR1cmUtPnNldENv
bXByZXNzZWRTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIGNvbnRleHQtPmdl
dFN0YXRlKCkuZ2V0VW5wYWNrU3RhdGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+
KGRhdGEpKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplLCBkYXRhKTsKICAg
ICB9CiB9CiAKQEAgLTgwNywzMCArNjk1LDEzIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICFWYWxp
ZGF0ZUVTMkNvcHlUZXhJbWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxmb3JtYXQsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpKQorICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUNv
cHlUZXhJbWFnZTJEKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9y
ZGVyKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzICYmCi0gICAgICAgICAgICAh
VmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWws
IGludGVybmFsZm9ybWF0LCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVjdGFu
Z2xlIHNvdXJjZUFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICAgICAgY29uc3QgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVi
dWZmZXIoKTsKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRl
eHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01B
UCA6IHRhcmdldCk7Ci0gICAgICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+Y29weUltYWdlKHRh
cmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGludGVybmFsZm9ybWF0LCBmcmFtZWJ1ZmZlcik7Ci0g
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBjb250ZXh0LT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKTsKICAgICB9CiB9CiAKQEAgLTg0Mywz
MSArNzE0LDE0IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICFWYWxpZGF0ZUVTMkNvcHlUZXhJbWFn
ZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9mZnNldCwgeW9mZnNl
dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlQ29weVRleFN1YkltYWdlMkQoY29u
dGV4dCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpID49IDMgJiYKLSAgICAgICAgICAgICFWYWxpZGF0ZUVTM0NvcHlUZXhJ
bWFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9mZnNldCwgeW9m
ZnNldCwgMCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE9mZnNldCBkZXN0T2Zmc2V0KHhvZmZzZXQs
IHlvZmZzZXQsIDApOwotICAgICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKLQotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250
ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgICAgICBUZXh0dXJlICp0
ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0
KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICAgICAgRXJyb3Ig
ZXJyb3IgPSB0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwg
c291cmNlQXJlYSwgZnJhbWVidWZmZXIpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y29weVRleFN1Yklt
YWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdo
dCk7CiAgICAgfQogfQogCkBAIC05MzYsOSArNzkwLDggQEAKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAobiA8IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVEZWxldGVCdWZmZXJzKGNvbnRleHQsIG4sIGJ1ZmZlcnMpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTU2LDkgKzgwOSw4IEBA
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRGVsZXRlRnJhbWVidWZmZXJzKGNvbnRl
eHQsIG4sIGZyYW1lYnVmZmVycykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0xMDA5LDkgKzg2MSw4IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKG4gPCAwKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYg
IVZhbGlkYXRlRGVsZXRlUmVuZGVyYnVmZmVycyhjb250ZXh0LCBuLCByZW5kZXJidWZmZXJzKSkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwNTks
OSArOTEwLDggQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAobiA8IDApCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEZWxldGVUZXh0dXJl
cyhjb250ZXh0LCBuLCB0ZXh0dXJlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xMTMxLDM4ICs5ODEsMTYgQEAKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9n
cmFtKTsKLSAgICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTaGFkZXIo
c2hhZGVyKTsKLQorICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9n
cmFtKGNvbnRleHQsIHByb2dyYW0pOwogICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFNoYWRlciAqc2hhZGVyQnlQcm9ncmFtSGFuZGxlOwotICAgICAg
ICAgICAgc2hhZGVyQnlQcm9ncmFtSGFuZGxlID0gY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0p
OwotICAgICAgICAgICAgaWYgKCFzaGFkZXJCeVByb2dyYW1IYW5kbGUpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAg
ICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gR2V0VmFsaWRTaGFkZXIoY29udGV4dCwgc2hhZGVy
KTsKICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFBy
b2dyYW0gKnByb2dyYW1CeVNoYWRlckhhbmRsZSA9IGNvbnRleHQtPmdldFByb2dyYW0oc2hhZGVy
KTsKLSAgICAgICAgICAgIGlmICghcHJvZ3JhbUJ5U2hhZGVySGFuZGxlKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmRldGFjaFNoYWRlcihzaGFkZXJPYmplY3QpKQpAQCAt
MTIxOSw3ICsxMDQ3LDcgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQs
IDApOworICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmly
c3QsIGNvdW50KTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAg
ICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwpAQCAtMTIzNiwxMyArMTA2NCwx
MyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHJ4OjpSYW5nZVVJIGluZGV4UmFuZ2U7Cisg
ICAgICAgIEluZGV4UmFuZ2UgaW5kZXhSYW5nZTsKICAgICAgICAgaWYgKCFWYWxpZGF0ZURyYXdF
bGVtZW50cyhjb250ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgJmluZGV4UmFu
Z2UpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwg
aW5kaWNlcywgMCwgaW5kZXhSYW5nZSk7CisgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+
ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKICAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwpAQCAtMTI2NCw2ICsxMDkyLDIwIEBACiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlv
bnMoKS5ub1NhbXBsZUFscGhhVG9Db3ZlcmFnZVN1cHBvcnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChjYXAgPT0gR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9yTWVzc2FnZSA9ICJDdXJyZW50IHJl
bmRlcmVyIGRvZXNuJ3Qgc3VwcG9ydCBhbHBoYS10by1jb3ZlcmFnZSI7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGVycm9y
TWVzc2FnZSkpOworCisgICAgICAgICAgICAgICAgLy8gV2UgYWxzbyBvdXRwdXQgYW4gZXJyb3Ig
bWVzc2FnZSB0byB0aGUgZGVidWdnZXIgd2luZG93IGlmIHRyYWNpbmcgaXMgYWN0aXZlLCBzbyB0
aGF0IGRldmVsb3BlcnMgY2FuIHNlZSB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgICAgICAg
ICBFUlIoIiVzIiwgZXJyb3JNZXNzYWdlKTsKKworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPmdldFN0YXRlKCkuc2V0
RW5hYmxlRmVhdHVyZShjYXAsIHRydWUpOwogICAgIH0KIH0KQEAgLTEzMjUsMjkgKzExNjcsMTQg
QEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQo
dGFyZ2V0KSB8fCAocmVuZGVyYnVmZmVydGFyZ2V0ICE9IEdMX1JFTkRFUkJVRkZFUiAmJiByZW5k
ZXJidWZmZXIgIT0gMCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JgorICAgICAgICAgICAgIVZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dCwg
dGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXIpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRhdGVG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2ht
ZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIHJlbmRlcmJ1ZmZlcikpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsK
LSAgICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKLQotICAgICAgICBpZiAocmVuZGVyYnVmZmVy
ICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVy
T2JqZWN0ID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAg
ICAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9SRU5ERVJCVUZGRVIsIGF0dGFjaG1l
bnQsIGdsOjpJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLCByZW5kZXJidWZmZXJPYmplY3QpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZnJhbWVidWZm
ZXItPnJlc2V0QXR0YWNobWVudChhdHRhY2htZW50KTsKLSAgICAgICAgfQorICAgICAgICBjb250
ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKTsKICAgICB9CiB9CiAKQEAgLTEzNTksMzYgKzExODYs
MTMgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlRnJhbWVidWZmZXJU
ZXh0dXJlMkQoY29udGV4dCwgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUs
IGxldmVsKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAg
ICAgICAgICAhVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LCB0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7Ci0g
ICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgaWYgKHRleHR1cmUgIT0gMCkK
LSAgICAgICAgewotICAgICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZU9iaiA9IGNvbnRleHQtPmdl
dFRleHR1cmUodGV4dHVyZSk7Ci0KLSAgICAgICAgICAgIEltYWdlSW5kZXggaW5kZXggPSBJbWFn
ZUluZGV4OjpNYWtlSW52YWxpZCgpOwotCi0gICAgICAgICAgICBpZiAodGV4dGFyZ2V0ID09IEdM
X1RFWFRVUkVfMkQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBJbWFn
ZUluZGV4OjpNYWtlMkQobGV2ZWwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChJc0N1YmVNYXBUZXh0dXJlVGFy
Z2V0KHRleHRhcmdldCkpOwotICAgICAgICAgICAgICAgIGluZGV4ID0gSW1hZ2VJbmRleDo6TWFr
ZUN1YmUodGV4dGFyZ2V0LCBsZXZlbCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZy
YW1lYnVmZmVyLT5zZXRBdHRhY2htZW50KEdMX1RFWFRVUkUsIGF0dGFjaG1lbnQsIGluZGV4LCB0
ZXh0dXJlT2JqKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZyYW1lYnVmZmVyLT5yZXNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7Ci0gICAgICAgIH0K
KyAgICAgICAgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQodGFyZ2V0LCBhdHRhY2htZW50
LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKICAgICB9CiB9CiAKQEAgLTE0MTksOSArMTIy
Myw4IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICBpZiAo
IWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2VuQnVmZmVycyhjb250ZXh0
LCBuLCBidWZmZXJzKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTE0ODUsNyArMTI4OCw5IEBACiAgICAgICAgIH0KIAogICAgICAgICAvLyBOb24t
cG93ZXIgb2YgMiBFUzIgY2hlY2sKLSAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudGV4dHVyZU5QT1QgJiYgKCFpc1BvdzIodGV4dHVyZS0+Z2V0V2lkdGgoYmFzZVRhcmdldCwg
MCkpIHx8ICFpc1BvdzIodGV4dHVyZS0+Z2V0SGVpZ2h0KGJhc2VUYXJnZXQsIDApKSkpCisgICAg
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UICYmCisgICAgICAg
ICAgICAoIWlzUG93MihzdGF0aWNfY2FzdDxpbnQ+KHRleHR1cmUtPmdldFdpZHRoKGJhc2VUYXJn
ZXQsIDApKSkgfHwKKyAgICAgICAgICAgICAhaXNQb3cyKHN0YXRpY19jYXN0PGludD4odGV4dHVy
ZS0+Z2V0SGVpZ2h0KGJhc2VUYXJnZXQsIDApKSkpKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDw9IDIgJiYgKHRhcmdldCA9PSBHTF9U
RVhUVVJFXzJEIHx8IHRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwpAQCAt
MTUxNSw5ICsxMzIwLDggQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAobiA8IDApCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZW5GcmFt
ZWJ1ZmZlcnMoY29udGV4dCwgbiwgZnJhbWVidWZmZXJzKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE1MzUsOSArMTMzOSw4IEBACiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2VuUmVuZGVyYnVmZmVycyhjb250ZXh0LCBuLCByZW5k
ZXJidWZmZXJzKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTE1NTUsOSArMTM1OCw4IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKG4g
PCAwKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
R2VuVGV4dHVyZXMoY29udGV4dCwgbiwgdGV4dHVyZXMpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTU4MywyMCArMTM4NSwxMSBAQAogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIFByb2dyYW0gKnByb2dy
YW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CiAKICAgICAgICAg
aWYgKCFwcm9ncmFtT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaW5kZXggPj0gKEdMdWlu
dClwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgpKQpAQCAtMTYyNSwyMCAr
MTQxOCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAg
ICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJv
Z3JhbSk7CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoaW5kZXggPj0gKEdMdWludClwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtQ291bnQo
KSkKQEAgLTE2NjUsMjAgKzE0NDksMTEgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFt
KHByb2dyYW0pOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9n
cmFtKGNvbnRleHQsIHByb2dyYW0pOwogCiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkU2hhZGVycyht
YXhjb3VudCwgY291bnQsIHNoYWRlcnMpOwpAQCAtMTY5MiwyMCArMTQ2NywxMSBAQAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQ
cm9ncmFtKHByb2dyYW0pOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFs
aWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogCiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVj
dCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFt
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIC0xOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5pc0xpbmtl
ZCgpKQpAQCAtMTk2MCw3ICsxNzI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAg
ICAgICAgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmhhc1ZhbGlkRGVwdGhTdGVuY2lsKCkp
CisgICAgICAgICAgICAgICAgICAgIGlmICghZnJhbWVidWZmZXItPmhhc1ZhbGlkRGVwdGhTdGVu
Y2lsKCkpCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTM4LDExICsxOTA0LDEwIEBACiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxp
ZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjE1
NSw2ICsxOTIwLDcgQEAKICAgICAgICAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX01PREU6CiAgICAgICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZB
UllJTkdTOgogICAgICAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5H
X01BWF9MRU5HVEg6CisgICAgICAgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfUkVUUklF
VkFCTEVfSElOVDoKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC0yMjA3LDYgKzE5NzMsOSBAQAogICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX1ZBUllJTkdfTUFYX0xFTkdUSDoKICAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFtT2Jq
ZWN0LT5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdNYXhMZW5ndGgoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElO
VDoKKyAgICAgICAgICAgICAgKnBhcmFtcyA9IHByb2dyYW1PYmplY3QtPmdldEJpbmFyeVJldHJp
ZXZhYmxlSGludCgpOworICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKQEAgLTIyMjksMTEgKzE5OTgsOSBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7Ci0KKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJv
Z3JhbShjb250ZXh0LCBwcm9ncmFtKTsKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI5NywxMSAr
MjA2NCw5IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3Qg
PSBjb250ZXh0LT5nZXRTaGFkZXIoc2hhZGVyKTsKLQorICAgICAgICBTaGFkZXIgKnNoYWRlck9i
amVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcik7CiAgICAgICAgIGlmICghc2hh
ZGVyT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMjMyMyw3ICsyMDg4LDcgQEAKICAgICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmpl
Y3QtPmdldFNvdXJjZUxlbmd0aCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIGNh
c2UgR0xfVFJBTlNMQVRFRF9TSEFERVJfU09VUkNFX0xFTkdUSF9BTkdMRToKLSAgICAgICAgICAg
ICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFRyYW5zbGF0ZWRTb3VyY2VMZW5ndGgoKTsKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBzaGFkZXJPYmplY3QtPmdldFRyYW5zbGF0ZWRTb3VyY2VXaXRo
RGVidWdJbmZvTGVuZ3RoKCk7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICBkZWZh
dWx0OgpAQCAtMjM0NywxMSArMjExMiw5IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihz
aGFkZXIpOwotCisgICAgICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gR2V0VmFsaWRTaGFkZXIo
Y29udGV4dCwgc2hhZGVyKTsKICAgICAgICAgaWYgKCFzaGFkZXJPYmplY3QpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDQ3LDExICsyMjEwLDkg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFNoYWRlciAqc2hh
ZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7Ci0KKyAgICAgICAgU2hhZGVy
ICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFkZXIpOwogICAgICAg
ICBpZiAoIXNoYWRlck9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0yNDY1LDQ0ICsyMjI2LDUwIEBACiAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAKLSAgICBzd2l0Y2ggKG5hbWUpCisg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgY2FzZSBHTF9WRU5ET1I6Ci0gICAgICAgIHJl
dHVybiAoR0x1Ynl0ZSopIkdvb2dsZSBJbmMuIjsKKyAgICAgICAgc3dpdGNoIChuYW1lKQorICAg
ICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX1ZFTkRPUjoKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KCJHb29nbGUgSW5jLiIpOwogCi0g
ICAgICBjYXNlIEdMX1JFTkRFUkVSOgotICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSgoY29udGV4
dCAhPSBOVUxMKSA/IGNvbnRleHQtPmdldFJlbmRlcmVyU3RyaW5nKCkuY19zdHIoKSA6ICJBTkdM
RSIpOworICAgICAgICAgICAgY2FzZSBHTF9SRU5ERVJFUjoKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KGNvbnRleHQtPmdldFJlbmRlcmVy
U3RyaW5nKCkuY19zdHIoKSk7CiAKLSAgICAgIGNhc2UgR0xfVkVSU0lPTjoKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA9PSAyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gKEdMdWJ5dGUqKSJPcGVuR0wgRVMgMi4wIChBTkdMRSAiIEFOR0xFX1ZFUlNJT05f
U1RSSU5HICIpIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAoR0x1Ynl0ZSopIk9wZW5HTCBFUyAzLjAgKEFOR0xFICIgQU5HTEVfVkVSU0lP
Tl9TVFJJTkcgIikiOwotICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdMX1ZFUlNJT046Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA9PSAyKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0x1Ynl0ZSAqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuR0wgRVMg
Mi4wIChBTkdMRSAiIEFOR0xFX1ZFUlNJT05fU1RSSU5HICIpIik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oCisgICAgICAg
ICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIDMuMCAoQU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NU
UklORyAiKSIpOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgY2FzZSBHTF9TSEFESU5HX0xB
TkdVQUdFX1ZFUlNJT046Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PT0gMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChHTHVieXRlKikiT3BlbkdMIEVT
IEdMU0wgRVMgMS4wMCAoQU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NUUklORyAiKSI7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKEdMdWJ5dGUq
KSJPcGVuR0wgRVMgR0xTTCBFUyAzLjAwIChBTkdMRSAiIEFOR0xFX1ZFUlNJT05fU1RSSU5HICIp
IjsKLSAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBHTF9TSEFESU5HX0xBTkdVQUdFX1ZFUlNJ
T046CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA9PSAy
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICJPcGVu
R0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIEFOR0xFX1ZFUlNJT05fU1RSSU5HICIpIik7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5
dGUgKj4oCisgICAgICAgICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIEdMU0wgRVMgMy4wMCAo
QU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NUUklORyAiKSIpOworICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgotICAgICAgICByZXR1cm4gKEdMdWJ5dGUqKSgoY29u
dGV4dCAhPSBOVUxMKSA/IGNvbnRleHQtPmdldEV4dGVuc2lvblN0cmluZygpLmNfc3RyKCkgOiAi
Iik7CisgICAgICAgICAgICBjYXNlIEdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPihjb250ZXh0LT5nZXRFeHRlbnNp
b25TdHJpbmcoKS5jX3N0cigpKTsKIAotICAgICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKGNvbnRl
eHQpCi0gICAgICAgIHsKKyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAg
IHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcmZ2
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQpAQCAtMjUyOSwx
NiArMjI5NiwxNiBAQAogICAgICAgICBzd2l0Y2ggKHBuYW1lKQogICAgICAgICB7CiAgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdM
ZmxvYXQpdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkubWFnRmlsdGVyOworICAgICAgICAgICAg
ICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0TWFnRmlsdGVyKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjoKLSAgICAgICAg
ICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5taW5GaWx0
ZXI7CisgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRNaW5GaWx0
ZXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQ
X1M6Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U2FtcGxlclN0
YXRlKCkud3JhcFM7CisgICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5n
ZXRXcmFwUygpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X1dSQVBfVDoKLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRTYW1w
bGVyU3RhdGUoKS53cmFwVDsKKyAgICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1
cmUtPmdldFdyYXBUKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfV1JBUF9SOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCkBAIC0yNTQ2LDExICsyMzEzLDExIEBACiAgICAgICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1
cmUtPmdldFNhbXBsZXJTdGF0ZSgpLndyYXBSOworICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZs
b2F0KXRleHR1cmUtPmdldFdyYXBSKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfSU1NVVRBQkxFX0ZPUk1BVDoKICAgICAgICAgICAgIC8vIEV4cG9zZWQg
dG8gRVMyLjAgdGhyb3VnaCBFWFRfdGV4dHVyZV9zdG9yYWdlLCBubyBjbGllbnQgdmVyc2lvbiB2
YWxpZGF0aW9uLgotICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KSh0ZXh0dXJlLT5pc0lt
bXV0YWJsZSgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICAgICAgICAgICpwYXJhbXMgPSAo
R0xmbG9hdCkodGV4dHVyZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkgPyBHTF9UUlVFIDogR0xfRkFM
U0UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0lNTVVU
QUJMRV9MRVZFTFM6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgMykKQEAgLTI1NTgsNyArMjMyNSw3IEBACiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUt
PmltbXV0YWJsZUxldmVsQ291bnQoKTsKKyAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0
ZXh0dXJlLT5nZXRJbW11dGFibGVMZXZlbHMoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRToKICAgICAgICAgICAgICpwYXJhbXMgPSAo
R0xmbG9hdCl0ZXh0dXJlLT5nZXRVc2FnZSgpOwpAQCAtMjU2OSw3ICsyMzM2LDcgQEAKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFy
YW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkubWF4QW5pc290cm9weTsK
KyAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRNYXhBbmlzb3Ryb3B5
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpM
RV9SOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCkBA
IC0yNTc3LDcgKzIzNDQsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRTYW1w
bGVyU3RhdGUoKS5zd2l6emxlUmVkOworICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRl
eHR1cmUtPmdldFN3aXp6bGVSZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9TV0laWkxFX0c6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgMykKQEAgLTI1ODUsNyArMjM1Miw3IEBACiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZs
b2F0KXRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLnN3aXp6bGVHcmVlbjsKKyAgICAgICAgICAg
ICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJlLT5nZXRTd2l6emxlR3JlZW4oKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX0I6CiAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKQEAgLTI1OTMsNyArMjM2
MCw3IEBACiAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLnN3
aXp6bGVCbHVlOworICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldFN3
aXp6bGVCbHVlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfU1dJWlpMRV9BOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCkBAIC0yNjAxLDcgKzIzNjgsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdCl0ZXh0dXJl
LT5nZXRTYW1wbGVyU3RhdGUoKS5zd2l6emxlQWxwaGE7CisgICAgICAgICAgICAqcGFyYW1zID0g
KEdMZmxvYXQpdGV4dHVyZS0+Z2V0U3dpenpsZUFscGhhKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkFTRV9MRVZFTDoKICAgICAgICAgICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQpAQCAtMjYwOSw3ICsyMzc2LDcgQEAKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAq
cGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuYmFzZUxldmVsOwor
ICAgICAgICAgICAgKnBhcmFtcyA9IChHTGZsb2F0KXRleHR1cmUtPmdldEJhc2VMZXZlbCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDoK
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQpAQCAtMjYx
Nyw3ICsyMzg0LDcgQEAKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+Z2V0U2FtcGxlclN0
YXRlKCkubWF4TGV2ZWw7CisgICAgICAgICAgICAqcGFyYW1zID0gKEdMZmxvYXQpdGV4dHVyZS0+
Z2V0TWF4TGV2ZWwoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NSU5fTE9EOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCkBAIC0yNjM1LDcgKzI0MDIsMjYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5tYXhMb2Q7CiAgICAgICAgICAg
ICBicmVhazsKLQorICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6CisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcigKKyAgICAgICAgICAgICAg
ICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
R0xfVEVYVFVSRV9DT01QQVJFX01PREUgbm90IGF2YWlsYWJsZSBpbiBFUyB2ZXJzaW9ucyA8IDMu
MCIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4odGV4dHVyZS0+Z2V0Q29tcGFyZU1vZGUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFS
RV9GVU5DOgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DIG5vdCBhdmFpbGFibGUgaW4gRVMg
dmVyc2lvbnMgPCAzLjAiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KHRleHR1cmUtPmdl
dENvbXBhcmVGdW5jKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY4OCw3ICsyNDc0LDcgQEAKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOgogICAg
ICAgICAgICAgLy8gRXhwb3NlZCB0byBFUzIuMCB0aHJvdWdoIEVYVF90ZXh0dXJlX3N0b3JhZ2Us
IG5vIGNsaWVudCB2ZXJzaW9uIHZhbGlkYXRpb24uCi0gICAgICAgICAgICAqcGFyYW1zID0gdGV4
dHVyZS0+aXNJbW11dGFibGUoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICAgICpw
YXJhbXMgPSB0ZXh0dXJlLT5nZXRJbW11dGFibGVGb3JtYXQoKSA/IEdMX1RSVUUgOiBHTF9GQUxT
RTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTU1VVEFC
TEVfTEVWRUxTOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8
IDMpCkBAIC0yNjk2LDcgKzI0ODIsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4o
dGV4dHVyZS0+aW1tdXRhYmxlTGV2ZWxDb3VudCgpKTsKKyAgICAgICAgICAgICpwYXJhbXMgPSBz
dGF0aWNfY2FzdDxHTGludD4odGV4dHVyZS0+Z2V0SW1tdXRhYmxlTGV2ZWxzKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1VTQUdFX0FOR0xFOgogICAg
ICAgICAgICAgKnBhcmFtcyA9IHRleHR1cmUtPmdldFVzYWdlKCk7CkBAIC0yNzA3LDcgKzI0OTMs
NyBAQAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICpwYXJhbXMgPSAoR0xpbnQpdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkubWF4QW5p
c290cm9weTsKKyAgICAgICAgICAgICpwYXJhbXMgPSAoR0xpbnQpdGV4dHVyZS0+Z2V0TWF4QW5p
c290cm9weSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X1NXSVpaTEVfUjoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCAzKQpAQCAtMjcxNSw3ICsyNTAxLDcgQEAKICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+Z2V0U2FtcGxl
clN0YXRlKCkuc3dpenpsZVJlZDsKKyAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRT
d2l6emxlUmVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfU1dJWlpMRV9HOgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCkBAIC0yNzIzLDcgKzI1MDksNyBAQAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRTYW1w
bGVyU3RhdGUoKS5zd2l6emxlR3JlZW47CisgICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVyZS0+
Z2V0U3dpenpsZUdyZWVuKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfU1dJWlpMRV9COgogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMpCkBAIC0yNzMxLDcgKzI1MTcsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5n
ZXRTYW1wbGVyU3RhdGUoKS5zd2l6emxlQmx1ZTsKKyAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0
dXJlLT5nZXRTd2l6emxlQmx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1NXSVpaTEVfQToKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCAzKQpAQCAtMjczOSw3ICsyNTI1LDcgQEAKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gdGV4dHVy
ZS0+Z2V0U2FtcGxlclN0YXRlKCkuc3dpenpsZUFscGhhOworICAgICAgICAgICAgKnBhcmFtcyA9
IHRleHR1cmUtPmdldFN3aXp6bGVBbHBoYSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0JBU0VfTEVWRUw6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKQEAgLTI3NDcsNyArMjUzMyw3IEBACiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9
IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLmJhc2VMZXZlbDsKKyAgICAgICAgICAgICpwYXJh
bXMgPSB0ZXh0dXJlLT5nZXRCYXNlTGV2ZWwoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTEVWRUw6CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKQEAgLTI3NTUsNyArMjU0MSw3IEBACiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKnBhcmFtcyA9
IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1heExldmVsOworICAgICAgICAgICAgKnBhcmFt
cyA9IHRleHR1cmUtPmdldE1heExldmVsKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDoKICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCAzKQpAQCAtMjc2Myw3ICsyNTQ5LDcgQEAKICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcGFyYW1zID0gKEdM
aW50KXRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1pbkxvZDsKKyAgICAgICAgICAgICpwYXJh
bXMgPSBpcm91bmQ8R0xpbnQ+KHRleHR1cmUtPmdldE1pbkxvZCgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgogICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCkBAIC0yNzcxLDkgKzI1NTcsMjggQEAK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAqcGFyYW1zID0gKEdMaW50KXRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1heExvZDsKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBpcm91bmQ8R0xpbnQ+KHRleHR1cmUtPmdldE1heExvZCgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVf
TU9ERToKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAg
ICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJHTF9URVhUVVJFX0NPTVBBUkVfTU9ERSBub3QgYXZhaWxhYmxlIGluIEVTIHZl
cnNpb25zIDwgMy4wIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRDb21wYXJlTW9kZSgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKKyAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKAorICAgICAgICAgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJHTF9URVhUVVJFX0NPTVBBUkVfRlVOQyBub3QgYXZhaWxhYmxlIGluIEVTIHZlcnNpb25zIDwg
My4wIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICpwYXJhbXMgPSB0ZXh0dXJlLT5nZXRDb21wYXJlRnVuYygpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgzMSwy
MCArMjYzNiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAg
ICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7
CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4
dCwgcHJvZ3JhbSk7CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCkBAIC0zMTM4LDIw
ICsyOTM0LDE1IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9i
amVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVMaW5rUHJvZ3JhbShjb250ZXh0LCBwcm9n
cmFtKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAgICAg
ICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9n
cmFtKTsKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBFcnJv
ciBlcnJvciA9IHByb2dyYW1PYmplY3QtPmxpbmsoY29udGV4dC0+Z2V0RGF0YSgpKTsKQEAgLTMx
NzYsMTQgKzI5NjcsMjggQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgY2FzZSBHTF9V
TlBBQ0tfSU1BR0VfSEVJR0hUOgogICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX0lN
QUdFUzoKKyAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAg
IGNhc2UgR0xfVU5QQUNLX1JPV19MRU5HVEg6CiAgICAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNL
X1NLSVBfUk9XUzoKICAgICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFM6Cisg
ICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS51bnBhY2tTdWJp
bWFnZSkKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICAgICAgICBjYXNlIEdMX1BBQ0tfUk9XX0xFTkdUSDoKICAgICAgICAgICAg
ICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKICAgICAgICAgICAgICAgY2FzZSBHTF9QQUNLX1NL
SVBfUElYRUxTOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSkKKyAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkBAIC0zMjIyLDQzICszMDI3LDQzIEBACiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1JPV19MRU5HVEg6Ci0gICAgICAgICAgICBB
U1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMpOworICAgICAgICAgICAgICBB
U1NFUlQoKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKSB8fCBjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpOwogICAgICAgICAgICAgc3RhdGUuc2V0VW5wYWNr
Um93TGVuZ3RoKHBhcmFtKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBH
TF9VTlBBQ0tfSU1BR0VfSEVJR0hUOgogICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA+PSAzKTsKLSAgICAgICAgICAgIHN0YXRlLmdldFVucGFja1N0YXRlKCku
aW1hZ2VIZWlnaHQgPSBwYXJhbTsKKyAgICAgICAgICAgIHN0YXRlLnNldFVucGFja0ltYWdlSGVp
Z2h0KHBhcmFtKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBHTF9VTlBB
Q0tfU0tJUF9JTUFHRVM6Ci0gICAgICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpID49IDMpOwotICAgICAgICAgICAgc3RhdGUuZ2V0VW5wYWNrU3RhdGUoKS5za2lwSW1h
Z2VzID0gcGFyYW07CisgICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPj0gMyk7CisgICAgICAgICAgICAgIHN0YXRlLnNldFVucGFja1NraXBJbWFnZXMocGFy
YW0pOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQ
X1JPV1M6Ci0gICAgICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49
IDMpOwotICAgICAgICAgICAgc3RhdGUuZ2V0VW5wYWNrU3RhdGUoKS5za2lwUm93cyA9IHBhcmFt
OworICAgICAgICAgICAgICBBU1NFUlQoKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAz
KSB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpOworICAgICAgICAg
ICAgICBzdGF0ZS5zZXRVbnBhY2tTa2lwUm93cyhwYXJhbSk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgotICAgICAgICAgICAgQVNT
RVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKTsKLSAgICAgICAgICAgIHN0YXRl
LmdldFVucGFja1N0YXRlKCkuc2tpcFBpeGVscyA9IHBhcmFtOworICAgICAgICAgICAgICBBU1NF
UlQoKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKSB8fCBjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpOworICAgICAgICAgICAgICBzdGF0ZS5zZXRVbnBhY2tT
a2lwUGl4ZWxzKHBhcmFtKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBH
TF9QQUNLX1JPV19MRU5HVEg6Ci0gICAgICAgICAgICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpID49IDMpOwotICAgICAgICAgICAgc3RhdGUuZ2V0UGFja1N0YXRlKCkucm93TGVu
Z3RoID0gcGFyYW07CisgICAgICAgICAgICAgIEFTU0VSVCgoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpID49IDMpIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpOwor
ICAgICAgICAgICAgICBzdGF0ZS5zZXRQYWNrUm93TGVuZ3RoKHBhcmFtKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKLSAgICAgICAgICAg
IEFTU0VSVChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyk7Ci0gICAgICAgICAgICBz
dGF0ZS5nZXRQYWNrU3RhdGUoKS5za2lwUm93cyA9IHBhcmFtOworICAgICAgICAgICAgICBBU1NF
UlQoKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSAzKSB8fCBjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkucGFja1N1YmltYWdlKTsKKyAgICAgICAgICAgICAgc3RhdGUuc2V0UGFja1NraXBS
b3dzKHBhcmFtKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgY2FzZSBHTF9QQUNL
X1NLSVBfUElYRUxTOgotICAgICAgICAgICAgQVNTRVJUKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA+PSAzKTsKLSAgICAgICAgICAgIHN0YXRlLmdldFBhY2tTdGF0ZSgpLnNraXBQaXhlbHMg
PSBwYXJhbTsKKyAgICAgICAgICAgICAgQVNTRVJUKChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPj0gMykgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSk7CisgICAg
ICAgICAgICAgIHN0YXRlLnNldFBhY2tTa2lwUGl4ZWxzKHBhcmFtKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgICAgZGVmYXVsdDoKQEAgLTMyODksMjggKzMwOTQsMTMgQEAKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRl
UmVhZFBpeGVscyhjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBp
eGVscykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICghVmFsaWRhdGVSZWFkUGl4ZWxzUGFyYW1ldGVycyhjb250ZXh0LCB4LCB5LCB3
aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdCwgdHlwZSwgTlVMTCwgcGl4ZWxzKSkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2Jq
ZWN0ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICAgICAg
QVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0KTsKLQotICAgICAgICBSZWN0YW5nbGUgYXJlYSh4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBmcmFtZWJ1ZmZlck9iamVj
dC0+cmVhZFBpeGVscyhjb250ZXh0LT5nZXRTdGF0ZSgpLCBhcmVhLCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQorICAgICAgICBjb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQs
IGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKICAgICB9CiB9CiAKQEAgLTM0MjAsMjIgKzMyMTAsMTEg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFNoYWRlciAqc2hh
ZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7Ci0KKyAgICAgICAgU2hhZGVy
ICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFkZXIpOwogICAgICAg
ICBpZiAoIXNoYWRlck9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmdldFByb2dyYW0oc2hhZGVyKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KICAgICAgICAgc2hhZGVyT2JqZWN0LT5zZXRT
b3VyY2UoY291bnQsIHN0cmluZywgbGVuZ3RoKTsKICAgICB9CiB9CkBAIC0zNjI3LDI5ICszNDA2
LDE1IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICFWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVy
cyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHdpZHRoLCBo
ZWlnaHQsIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVRleEltYWdlMkQo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJv
cmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBwaXhl
bHMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IDMgJiYKLSAgICAgICAgICAgICFW
YWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRl
cm5hbGZvcm1hdCwgZmFsc2UsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIGJvcmRlciwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7Ci0gICAgICAgIFRleHR1
cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1cmVU
YXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQpOwotICAgICAgICBF
cnJvciBlcnJvciA9IHRleHR1cmUtPnNldEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCBzaXplLCBmb3JtYXQsIHR5cGUsIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VW5wYWNrU3Rh
dGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4ocGl4ZWxzKSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9y
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT50ZXhJ
bWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3Jk
ZXIsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpOwog
ICAgIH0KIH0KIApAQCAtMzY3OSwyNyArMzQ0NCwyOSBAQAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgICAgICBzd2l0Y2gg
KHBuYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzogICAg
ICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS53cmFwUyA9IHVpcm91bmQ8R0xl
bnVtPihwYXJhbSk7ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JB
UF9UOiAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLndyYXBUID0gdWly
b3VuZDxHTGVudW0+KHBhcmFtKTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9XUkFQX1I6ICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkud3Jh
cFIgPSB1aXJvdW5kPEdMZW51bT4ocGFyYW0pOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3Rh
dGUoKS5taW5GaWx0ZXIgPSB1aXJvdW5kPEdMZW51bT4ocGFyYW0pOyAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjogICAgICAgICAgIHRleHR1cmUtPmdldFNh
bXBsZXJTdGF0ZSgpLm1hZ0ZpbHRlciA9IHVpcm91bmQ8R0xlbnVtPihwYXJhbSk7ICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRTogICAgICAgICAgdGV4dHVy
ZS0+c2V0VXNhZ2UodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDog
ICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5tYXhBbmlzb3Ryb3B5ID0gc3RkOjptaW4ocGFy
YW0sIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhUZXh0dXJlQW5pc290cm9weSk7IGJyZWFr
OwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICAgICAgICAgdGV4dHVy
ZS0+Z2V0U2FtcGxlclN0YXRlKCkuY29tcGFyZU1vZGUgPSB1aXJvdW5kPEdMZW51bT4ocGFyYW0p
OyAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAg
ICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5jb21wYXJlRnVuYyA9IHVpcm91bmQ8R0xlbnVt
PihwYXJhbSk7ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOiAg
ICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLnN3aXp6bGVSZWQgPSB1aXJvdW5k
PEdMZW51bT4ocGFyYW0pOyAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0la
WkxFX0c6ICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuc3dpenpsZUdyZWVu
ID0gdWlyb3VuZDxHTGVudW0+KHBhcmFtKTsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX1NXSVpaTEVfQjogICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5zd2l6
emxlQmx1ZSA9IHVpcm91bmQ8R0xlbnVtPihwYXJhbSk7ICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfU1dJWlpMRV9BOiAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0
ZSgpLnN3aXp6bGVBbHBoYSA9IHVpcm91bmQ8R0xlbnVtPihwYXJhbSk7IGJyZWFrOwotICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNFX0xFVkVMOiAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2Ft
cGxlclN0YXRlKCkuYmFzZUxldmVsID0gaXJvdW5kPEdMaW50PihwYXJhbSk7ICAgICAgYnJlYWs7
Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDogICAgICAgICAgICB0ZXh0dXJl
LT5nZXRTYW1wbGVyU3RhdGUoKS5tYXhMZXZlbCA9IGlyb3VuZDxHTGludD4ocGFyYW0pOyAgICAg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDogICAgICAgICAgICAg
IHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1pbkxvZCA9IHBhcmFtOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDog
ICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1heExvZCA9IHBhcmFtOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfV1JBUF9TOiAgICAgICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBTKHVpcm91bmQ8R0xlbnVt
PihwYXJhbSkpOyAgICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBf
VDogICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwVCh1aXJvdW5kPEdMZW51bT4ocGFyYW0p
KTsgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAg
ICAgICAgICAgdGV4dHVyZS0+c2V0V3JhcFIodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgICAg
ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUjogICAgICAgICAg
IHRleHR1cmUtPnNldE1pbkZpbHRlcih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICAgYnJlYWs7
CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BR19GSUxURVI6ICAgICAgICAgICB0ZXh0dXJl
LT5zZXRNYWdGaWx0ZXIodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgIGJyZWFrOworICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRTogICAgICAgICAgdGV4dHVyZS0+c2V0VXNh
Z2UodWlyb3VuZDxHTGVudW0+KHBhcmFtKSk7ICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAgIHRleHR1cmUtPnNldE1heEFuaXNvdHJv
cHkoc3RkOjptaW4ocGFyYW0sIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tYXhUZXh0dXJlQW5p
c290cm9weSkpOyBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RF
OiAgICAgICAgIHRleHR1cmUtPnNldENvbXBhcmVNb2RlKHVpcm91bmQ8R0xlbnVtPihwYXJhbSkp
OyAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAg
ICB0ZXh0dXJlLT5zZXRDb21wYXJlRnVuYyh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgIGJyZWFr
OworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TV0laWkxFX1I6ICAgICAgICAgICAgdGV4dHVy
ZS0+c2V0U3dpenpsZVJlZCh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgICBicmVhazsKKyAgICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9HOiAgICAgICAgICAgIHRleHR1cmUtPnNldFN3
aXp6bGVHcmVlbih1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7CisgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1NXSVpaTEVfQjogICAgICAgICAgICB0ZXh0dXJlLT5zZXRTd2l6emxlQmx1
ZSh1aXJvdW5kPEdMZW51bT4ocGFyYW0pKTsgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9TV0laWkxFX0E6ICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZUFscGhhKHVpcm91
bmQ8R0xlbnVtPihwYXJhbSkpOyBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkFT
RV9MRVZFTDogICAgICAgICAgIHRleHR1cmUtPnNldEJhc2VMZXZlbCh1aXJvdW5kPEdMdWludD4o
cGFyYW0pKTsgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9MRVZFTDog
ICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYXhMZXZlbCh1aXJvdW5kPEdMdWludD4ocGFyYW0pKTsg
ICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fTE9EOiAgICAgICAgICAg
ICAgdGV4dHVyZS0+c2V0TWluTG9kKHBhcmFtKTsgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDogICAgICAgICAgICAgIHRleHR1
cmUtPnNldE1heExvZChwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCiAgICAgfQogfQogCkBAIC0zNzM0LDI3ICszNTAxLDI5IEBACiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCiAgICAgICAgIHN3aXRjaCAocG5hbWUpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfV1JBUF9TOiAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgp
LndyYXBTID0gKEdMZW51bSlwYXJhbTsgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XUkFQX1Q6ICAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCku
d3JhcFQgPSAoR0xlbnVtKXBhcmFtOyAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1dSQVBfUjogICAgICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS53
cmFwUiA9IChHTGVudW0pcGFyYW07ICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUjogICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1p
bkZpbHRlciA9IChHTGVudW0pcGFyYW07ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NQUdfRklMVEVSOiAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkubWFn
RmlsdGVyID0gKEdMZW51bSlwYXJhbTsgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX1VTQUdFX0FOR0xFOiAgICAgICAgICB0ZXh0dXJlLT5zZXRVc2FnZSgoR0xlbnVtKXBhcmFt
KTsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfTUFYX0FOSVNPVFJPUFlfRVhUOiAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1heEFu
aXNvdHJvcHkgPSBzdGQ6Om1pbigoZmxvYXQpcGFyYW0sIGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5tYXhUZXh0dXJlQW5pc290cm9weSk7IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DT01QQVJFX01PREU6ICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuY29tcGFy
ZU1vZGUgPSAoR0xlbnVtKXBhcmFtOyAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NPTVBBUkVfRlVOQzogICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5jb21wYXJl
RnVuYyA9IChHTGVudW0pcGFyYW07ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
U1dJWlpMRV9SOiAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLnN3aXp6bGVS
ZWQgPSAoR0xlbnVtKXBhcmFtOyAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9T
V0laWkxFX0c6ICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuc3dpenpsZUdy
ZWVuID0gKEdMZW51bSlwYXJhbTsgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NX
SVpaTEVfQjogICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5zd2l6emxlQmx1
ZSA9IChHTGVudW0pcGFyYW07ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1dJ
WlpMRV9BOiAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLnN3aXp6bGVBbHBo
YSA9IChHTGVudW0pcGFyYW07IGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CQVNF
X0xFVkVMOiAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkuYmFzZUxldmVsID0g
cGFyYW07ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9M
RVZFTDogICAgICAgICAgICB0ZXh0dXJlLT5nZXRTYW1wbGVyU3RhdGUoKS5tYXhMZXZlbCA9IHBh
cmFtOyAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xP
RDogICAgICAgICAgICAgIHRleHR1cmUtPmdldFNhbXBsZXJTdGF0ZSgpLm1pbkxvZCA9IChHTGZs
b2F0KXBhcmFtOyAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9E
OiAgICAgICAgICAgICAgdGV4dHVyZS0+Z2V0U2FtcGxlclN0YXRlKCkubWF4TG9kID0gKEdMZmxv
YXQpcGFyYW07ICAgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfUzog
ICAgICAgICAgICAgICB0ZXh0dXJlLT5zZXRXcmFwUyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFt
KSk7ICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfV1JBUF9UOiAgICAg
ICAgICAgICAgIHRleHR1cmUtPnNldFdyYXBUKHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsg
ICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9XUkFQX1I6ICAgICAgICAg
ICAgICAgdGV4dHVyZS0+c2V0V3JhcFIoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01JTl9GSUxURVI6ICAgICAgICAg
ICB0ZXh0dXJlLT5zZXRNaW5GaWx0ZXIoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICBi
cmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUjogICAgICAgICAgIHRl
eHR1cmUtPnNldE1hZ0ZpbHRlcihzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICAgIGJyZWFr
OworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9VU0FHRV9BTkdMRTogICAgICAgICAgdGV4dHVy
ZS0+c2V0VXNhZ2Uoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVDogICB0ZXh0dXJlLT5z
ZXRNYXhBbmlzb3Ryb3B5KHN0ZDo6bWluKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhcmFtKSwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLm1heFRleHR1cmVBbmlzb3Ryb3B5KSk7IGJyZWFrOworICAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX01PREU6ICAgICAgICAgdGV4dHVyZS0+c2V0
Q29tcGFyZU1vZGUoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgYnJlYWs7CisgICAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzogICAgICAgICB0ZXh0dXJlLT5zZXRDb21w
YXJlRnVuYyhzdGF0aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKKyAgICAgICAgICBj
YXNlIEdMX1RFWFRVUkVfU1dJWlpMRV9SOiAgICAgICAgICAgIHRleHR1cmUtPnNldFN3aXp6bGVS
ZWQoc3RhdGljX2Nhc3Q8R0xlbnVtPihwYXJhbSkpOyAgIGJyZWFrOworICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9TV0laWkxFX0c6ICAgICAgICAgICAgdGV4dHVyZS0+c2V0U3dpenpsZUdyZWVu
KHN0YXRpY19jYXN0PEdMZW51bT4ocGFyYW0pKTsgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX1NXSVpaTEVfQjogICAgICAgICAgICB0ZXh0dXJlLT5zZXRTd2l6emxlQmx1ZShzdGF0
aWNfY2FzdDxHTGVudW0+KHBhcmFtKSk7ICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfU1dJWlpMRV9BOiAgICAgICAgICAgIHRleHR1cmUtPnNldFN3aXp6bGVBbHBoYShzdGF0aWNf
Y2FzdDxHTGVudW0+KHBhcmFtKSk7IGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9C
QVNFX0xFVkVMOiAgICAgICAgICAgdGV4dHVyZS0+c2V0QmFzZUxldmVsKHN0YXRpY19jYXN0PEdM
dWludD4ocGFyYW0pKTsgICAgYnJlYWs7CisgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX01BWF9M
RVZFTDogICAgICAgICAgICB0ZXh0dXJlLT5zZXRNYXhMZXZlbChzdGF0aWNfY2FzdDxHTHVpbnQ+
KHBhcmFtKSk7ICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUlOX0xPRDog
ICAgICAgICAgICAgIHRleHR1cmUtPnNldE1pbkxvZChzdGF0aWNfY2FzdDxHTGZsb2F0PihwYXJh
bSkpOyAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOiAgICAg
ICAgICAgICAgdGV4dHVyZS0+c2V0TWF4TG9kKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHBhcmFtKSk7
ICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAgfQogfQogCkBAIC0zNzc0
LDM1ICszNTQzLDE1IEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgICAgICFWYWxpZGF0ZUVTMlRleEltYWdl
UGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBHTF9OT05FLCBmYWxzZSwgdHJ1ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zm
c2V0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsIHBpeGVscykpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlVGV4
U3ViSW1hZ2UyRChjb250ZXh0LCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGUsIHBpeGVscykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gMyAmJgotICAgICAg
ICAgICAgIVZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2
ZWwsIEdMX05PTkUsIGZhbHNlLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIDAsIHdpZHRoLCBoZWlnaHQsIDEsIDAsIGZv
cm1hdCwgdHlwZSwgcGl4ZWxzKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gWmVybyBzaXplZCB1cGxvYWRzIGFyZSB2YWxpZCBidXQgbm8t
b3BzCi0gICAgICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBCb3ggYXJlYSh4b2Zmc2V0
LCB5b2Zmc2V0LCAwLCB3aWR0aCwgaGVpZ2h0LCAxKTsKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVy
ZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Ci0gICAgICAgIEVycm9yIGVycm9y
ID0gdGV4dHVyZS0+c2V0U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBl
LCBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFVucGFja1N0YXRlKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
ICo+KHBpeGVscykpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxl
dmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKTsKICAgICB9CiB9CiAKQEAgLTQwNTUs
MjUgKzM4MDQsOCBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgIGlmICghcHJv
Z3JhbU9iamVjdCAmJiBwcm9ncmFtICE9IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVc2VQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0pKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJv
Z3JhbSAhPSAwICYmICFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTQwODgsMjAgKzM4MjAsMTEg
QEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29u
dGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKIAogICAgICAgICBpZiAoIXBy
b2dyYW1PYmplY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFk
ZXIocHJvZ3JhbSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHByb2dyYW1PYmplY3QtPnZhbGlkYXRlKGNv
bnRleHQtPmdldENhcHMoKSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4
dC5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDU3IEBACiBuYW1lc3BhY2UgZ2wKIHsKIAordm9pZCBHTF9BUElFTlRSWSBHZW5R
dWVyaWVzRVhUKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpCit7CisgICAgRVZFTlQoIihHTHNpemVp
IG4gPSAlZCwgR0x1aW50KiBpZHMgPSAweCUwLjhwKSIsIG4sIGlkcyk7CisKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
R2VuUXVlcmllc0VYVChjb250ZXh0LCBuKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgbjsgaSsrKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZHNbaV0gPSBjb250ZXh0LT5jcmVhdGVRdWVyeSgpOwor
ICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVF1ZXJpZXNFWFQo
R0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9
ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4JTAuOHApIiwgbiwgaWRzKTsKKworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRh
dGVEZWxldGVRdWVyaWVzRVhUKGNvbnRleHQsIG4pKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUXVlcnkoaWRzW2ldKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUXVlcnlFWFQoR0x1
aW50IGlkKQoreworICAgIEVWRU5UKCIoR0x1aW50IGlkID0gJWQpIiwgaWQpOworCisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2UsIEdM
X05PTkUpICE9IE5VTEwpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgIH0KKworICAgIHJldHVy
biBHTF9GQUxTRTsKK30KKwogdm9pZCBHTF9BUElFTlRSWSBCZWdpblF1ZXJ5RVhUKEdMZW51bSB0
YXJnZXQsIEdMdWludCBpZCkKIHsKICAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBH
THVpbnQgJWQpIiwgdGFyZ2V0LCBpZCk7CkBAIC0zNCw3ICs4NSw3IEBACiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUJlZ2luUXVlcnkoY29udGV4dCwgdGFyZ2V0LCBpZCkp
CisgICAgICAgIGlmICghVmFsaWRhdGVCZWdpblF1ZXJ5RVhUKGNvbnRleHQsIHRhcmdldCwgaWQp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQ4LDU5ICs5
OSw3OCBAQAogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBEZWxldGVGZW5jZXNOVihHTHNp
emVpIG4sIGNvbnN0IEdMdWludCogZmVuY2VzKQordm9pZCBHTF9BUElFTlRSWSBFbmRRdWVyeUVY
VChHTGVudW0gdGFyZ2V0KQogewotICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdM
dWludCogZmVuY2VzID0gMHglMC44cCkiLCBuLCBmZW5jZXMpOworICAgIEVWRU5UKCJHTGVudW0g
dGFyZ2V0ID0gMHglWCkiLCB0YXJnZXQpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYg
KG4gPCAwKQorICAgICAgICBpZiAoIVZhbGlkYXRlRW5kUXVlcnlFWFQoY29udGV4dCwgdGFyZ2V0
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgIEVycm9yIGVycm9yID0gY29u
dGV4dC0+ZW5kUXVlcnkodGFyZ2V0KTsKKyAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlRmVuY2VOVihmZW5jZXNbaV0pOwor
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVF1ZXJp
ZXNFWFQoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcykKK3ZvaWQgR0xfQVBJRU5UUlkgUXVl
cnlDb3VudGVyRVhUKEdMdWludCBpZCwgR0xlbnVtIHRhcmdldCkKIHsKLSAgICBFVkVOVCgiKEdM
c2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9IDB4JTAuOHApIiwgbiwgaWRzKTsKKyAg
ICBFVkVOVCgiR0x1aW50IGlkID0gJWQsIEdMZW51bSB0YXJnZXQgPSAweCVYKSIsIGlkLCB0YXJn
ZXQpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICBpZiAo
IVZhbGlkYXRlUXVlcnlDb3VudGVyRVhUKGNvbnRleHQsIGlkLCB0YXJnZXQpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5xdWVyeUNv
dW50ZXIoaWQsIHRhcmdldCk7CisgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVF1ZXJ5KGlkc1tpXSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBwcmlt
Y291bnQpCit2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5aXZFWFQoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewotICAgIEVWRU5UKCIoR0xlbnVtIG1vZGUgPSAw
eCVYLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6ZWkgcHJpbWNv
dW50ID0gJWQpIiwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIEVWRU5UKCJH
TGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQgKnBhcmFtcyA9
IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwKKyAgICAgICAgICBwYXJhbXMpOwogCiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShj
b250ZXh0LCBtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCkpCisgICAgICAgIGlmICghVmFs
aWRhdGVHZXRRdWVyeWl2RVhUKGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBhcmFtcykpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVy
cm9yID0gY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7
CisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5aXYodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKKyAg
ICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpdkVYVChHTHVpbnQgaWQs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMdWludCBpZCA9
ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAuOHApIiwgaWQs
IHBuYW1lLCBwYXJhbXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0
ZUdldFF1ZXJ5T2JqZWN0aXZFWFQoY29udGV4dCwgaWQsIHBuYW1lLCBwYXJhbXMpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBFcnJvciBlcnJv
ciA9IGNvbnRleHQtPmdldFF1ZXJ5T2JqZWN0aXYoaWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihlcnJvcik7CkBAIC0xMDksMjEgKzE3OSwxOSBAQAogICAgIH0KIH0KIAotdm9p
ZCBHTF9BUElFTlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwgR0xz
aXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBw
cmltY291bnQpCit2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2JqZWN0dWl2RVhUKEdMdWludCBp
ZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKIHsKLSAgICBFVkVOVCgiKEdMZW51bSBt
b2RlID0gMHglWCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9IDB4JVgsIGNvbnN0
IEdMdm9pZCogaW5kaWNlcyA9IDB4JTAuOHAsIEdMc2l6ZWkgcHJpbWNvdW50ID0gJWQpIiwKLSAg
ICAgICAgICBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJpbWNvdW50KTsKKyAgICBFVkVO
VCgiKEdMdWludCBpZCA9ICVkLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHVpbnQgKnBhcmFtcyA9
IDB4JTAuOHApIiwgaWQsIHBuYW1lLCBwYXJhbXMpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgcng6OlJhbmdlVUkgaW5kZXhSYW5nZTsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBw
cmltY291bnQsICZpbmRleFJhbmdlKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFF1ZXJ5T2Jq
ZWN0dWl2RVhUKGNvbnRleHQsIGlkLCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0
LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCwgaW5k
ZXhSYW5nZSk7CisgICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1
aXYoaWQsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CkBAIC0xMzIs
MTkgKzIwMCwxOSBAQAogICAgIH0KIH0KIAotdm9pZCBHTF9BUElFTlRSWSBFbmRRdWVyeUVYVChH
TGVudW0gdGFyZ2V0KQordm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9iamVjdGk2NHZFWFQoR0x1
aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcykKIHsKLSAgICBFVkVOVCgiR0xl
bnVtIHRhcmdldCA9IDB4JVgpIiwgdGFyZ2V0KTsKKyAgICBFVkVOVCgiKEdMdWludCBpZCA9ICVk
LCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTHVpbnQgKnBhcmFtcyA9IDB4JTAuMTZwKSIsIGlkLCBw
bmFtZSwgcGFyYW1zKTsKIAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVF
bmRRdWVyeShjb250ZXh0LCB0YXJnZXQpKQorICAgICAgICBpZiAoIVZhbGlkYXRlR2V0UXVlcnlP
YmplY3RpNjR2RVhUKGNvbnRleHQsIGlkLCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250
ZXh0LT5lbmRRdWVyeSh0YXJnZXQpOworICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmdl
dFF1ZXJ5T2JqZWN0aTY0dihpZCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVy
cm9yKTsKQEAgLTE1MywzNCArMjIxLDMwIEBACiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVOVFJZ
IEZpbmlzaEZlbmNlTlYoR0x1aW50IGZlbmNlKQordm9pZCBHTF9BUElFTlRSWSBHZXRRdWVyeU9i
amVjdHVpNjR2RVhUKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKQog
ewotICAgIEVWRU5UKCIoR0x1aW50IGZlbmNlID0gJWQpIiwgZmVuY2UpOworICAgIEVWRU5UKCIo
R0x1aW50IGlkID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMdWludCAqcGFyYW1zID0gMHgl
MC4xNnApIiwgaWQsIHBuYW1lLCBwYXJhbXMpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
RmVuY2VOViAqZmVuY2VPYmplY3QgPSBjb250ZXh0LT5nZXRGZW5jZU5WKGZlbmNlKTsKLQotICAg
ICAgICBpZiAoZmVuY2VPYmplY3QgPT0gTlVMTCkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFF1
ZXJ5T2JqZWN0dWk2NHZFWFQoY29udGV4dCwgaWQsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZl
bmNlT2JqZWN0LT5pc1NldCgpICE9IEdMX1RSVUUpCisgICAgICAgIEVycm9yIGVycm9yID0gY29u
dGV4dC0+Z2V0UXVlcnlPYmplY3R1aTY0dihpZCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQot
ICAgICAgICBmZW5jZU9iamVjdC0+ZmluaXNoKCk7CiAgICAgfQogfQogCi12b2lkIEdMX0FQSUVO
VFJZIEdlbkZlbmNlc05WKEdMc2l6ZWkgbiwgR0x1aW50KiBmZW5jZXMpCit2b2lkIEdMX0FQSUVO
VFJZIERlbGV0ZUZlbmNlc05WKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmZW5jZXMpCiB7Ci0g
ICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiBmZW5jZXMgPSAweCUwLjhwKSIsIG4s
IGZlbmNlcyk7CisgICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgY29uc3QgR0x1aW50KiBmZW5j
ZXMgPSAweCUwLjhwKSIsIG4sIGZlbmNlcyk7CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCkBAIC0xOTMsMjcgKzI1Nywx
MDggQEAKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgewot
ICAgICAgICAgICAgZmVuY2VzW2ldID0gY29udGV4dC0+Y3JlYXRlRmVuY2VOVigpOworICAgICAg
ICAgICAgY29udGV4dC0+ZGVsZXRlRmVuY2VOVihmZW5jZXNbaV0pOwogICAgICAgICB9CiAgICAg
fQogfQogCi12b2lkIEdMX0FQSUVOVFJZIEdlblF1ZXJpZXNFWFQoR0xzaXplaSBuLCBHTHVpbnQq
IGlkcykKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdMZW51bSBt
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmly
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBw
cmltY291bnQpCiB7Ci0gICAgRVZFTlQoIihHTHNpemVpIG4gPSAlZCwgR0x1aW50KiBpZHMgPSAw
eCUwLjhwKSIsIG4sIGlkcyk7CisgICAgRVZFTlQoIihHTGVudW0gbW9kZSA9IDB4JVgsIEdMaW50
IGZpcnN0ID0gJWQsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xzaXplaSBwcmltY291bnQgPSAlZCki
LAorICAgICAgICAgIG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIAogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoY29u
dGV4dCwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQt
PmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0xl
bnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIEVWRU5UKAorICAgICAgICAi
KEdMZW51bSBtb2RlID0gMHglWCwgR0xzaXplaSBjb3VudCA9ICVkLCBHTGVudW0gdHlwZSA9IDB4
JVgsIGNvbnN0IEdMdm9pZCogaW5kaWNlcyA9ICIKKyAgICAgICAgIjB4JTAuOHAsIEdMc2l6ZWkg
cHJpbWNvdW50ID0gJWQpIiwKKyAgICAgICAgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHBy
aW1jb3VudCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBJbmRleFJhbmdlIGluZGV4UmFu
Z2U7CisgICAgICAgIGlmICghVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShjb250
ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJpbWNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZGV4UmFuZ2UpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBFcnJvciBlcnJv
ciA9CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCwgaW5kZXhSYW5nZSk7CisgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBHTF9BUElFTlRSWSBGaW5pc2hGZW5jZU5WKEdMdWludCBmZW5jZSkKK3sKKyAgICBFVkVO
VCgiKEdMdWludCBmZW5jZSA9ICVkKSIsIGZlbmNlKTsKKworICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAg
ICAgIEZlbmNlTlYgKmZlbmNlT2JqZWN0ID0gY29udGV4dC0+Z2V0RmVuY2VOVihmZW5jZSk7CisK
KyAgICAgICAgaWYgKGZlbmNlT2JqZWN0ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmVuY2VPYmplY3QtPmlz
U2V0KCkgIT0gR0xfVFJVRSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGZlbmNlT2JqZWN0LT5maW5pc2goKTsKKyAgICB9Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgR2VuRmVuY2VzTlYoR0xzaXplaSBuLCBHTHVpbnQgKmZlbmNlcykK
K3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQqIGZlbmNlcyA9IDB4JTAuOHAp
IiwgbiwgZmVuY2VzKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CiAgICAgICAgIGlmIChuIDwgMCkKICAg
ICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZm9y
IChHTHNpemVpIGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG47IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgaWRzW2ldID0gY29udGV4dC0+Y3JlYXRl
UXVlcnkoKTsKKyAgICAgICAgICAgIGZlbmNlc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUZlbmNlTlYo
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4OSw4NCArNDM0LDYgQEAKICAgICByZXR1cm4g
R0xfTk9fRVJST1I7CiB9CiAKLXZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdkVYVChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi17Ci0gICAgRVZFTlQoIkdMZW51
bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBHTGludCAqcGFyYW1zID0gMHgl
MC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwotCi0gICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAg
ICAgaWYgKCFWYWxpZFF1ZXJ5VHlwZShjb250ZXh0LCB0YXJnZXQpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0NVUlJFTlRfUVVFUllfRVhUOgotICAgICAgICAg
ICAgcGFyYW1zWzBdID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRBY3RpdmVRdWVyeUlkKHRhcmdl
dCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBHTF9BUElFTlRSWSBHZXRR
dWVyeU9iamVjdHVpdkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMp
Ci17Ci0gICAgRVZFTlQoIihHTHVpbnQgaWQgPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0x1
aW50ICpwYXJhbXMgPSAweCUwLjhwKSIsIGlkLCBwbmFtZSwgcGFyYW1zKTsKLQotICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dCkK
LSAgICB7Ci0gICAgICAgIFF1ZXJ5ICpxdWVyeU9iamVjdCA9IGNvbnRleHQtPmdldFF1ZXJ5KGlk
LCBmYWxzZSwgR0xfTk9ORSk7Ci0KLSAgICAgICAgaWYgKCFxdWVyeU9iamVjdCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldEFjdGl2ZVF1ZXJ5SWQocXVlcnlPYmplY3QtPmdldFR5cGUo
KSkgPT0gaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBzd2l0Y2gocG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1FVRVJZX1JFU1VMVF9FWFQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXJyb3Ig
ZXJyb3IgPSBxdWVyeU9iamVjdC0+Z2V0UmVzdWx0KHBhcmFtcyk7Ci0gICAgICAgICAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgY2FzZSBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVDoKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBFcnJvciBlcnJvciA9IHF1ZXJ5T2JqZWN0LT5pc1Jl
c3VsdEF2YWlsYWJsZShwYXJhbXMpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9p
ZCBHTF9BUElFTlRSWSBHZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoR0x1aW50IHNoYWRl
ciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKQogewog
ICAgIEVWRU5UKCIoR0x1aW50IHNoYWRlciA9ICVkLCBHTHNpemVpIGJ1ZnNpemUgPSAlZCwgR0xz
aXplaSogbGVuZ3RoID0gMHglMC44cCwgR0xjaGFyKiBzb3VyY2UgPSAweCUwLjhwKSIsCkBAIC0z
ODksNyArNDU2LDYgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIE9ubHkgcmV0dXJucyBleHRyYSBpbmZvIGlmIEFOR0xFX0dFTkVSQVRFX1NIQURFUl9ERUJV
R19JTkZPIGlzIGRlZmluZWQKICAgICAgICAgc2hhZGVyT2JqZWN0LT5nZXRUcmFuc2xhdGVkU291
cmNlV2l0aERlYnVnSW5mbyhidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CiAgICAgfQogfQpAQCAt
NDU2LDE5ICs1MjIsNiBAQAogICAgIHJldHVybiBHTF9GQUxTRTsKIH0KIAotR0xib29sZWFuIEdM
X0FQSUVOVFJZIElzUXVlcnlFWFQoR0x1aW50IGlkKQotewotICAgIEVWRU5UKCIoR0x1aW50IGlk
ID0gJWQpIiwgaWQpOwotCi0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIChjb250ZXh0
LT5nZXRRdWVyeShpZCwgZmFsc2UsIEdMX05PTkUpICE9IE5VTEwpID8gR0xfVFJVRSA6IEdMX0ZB
TFNFOwotICAgIH0KLQotICAgIHJldHVybiBHTF9GQUxTRTsKLX0KLQogdm9pZCBHTF9BUElFTlRS
WSBSZWFkblBpeGVsc0VYVChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x2b2lkICpkYXRhKQpAQCAtNDgwLDI4ICs1MzMsMTMgQEAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAgfHwgYnVmU2l6ZSA8IDApCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZh
bGlkYXRlUmVhZG5QaXhlbHNFWFQoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBidWZTaXplLCBkYXRhKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVJlYWRQaXhlbHNQYXJhbWV0ZXJz
KGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCAmYnVmU2l6ZSwgZGF0YSkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlck9iamVjdCA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1l
YnVmZmVyKCk7Ci0gICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlck9iamVjdCk7Ci0KLSAgICAgICAg
UmVjdGFuZ2xlIGFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIEVycm9yIGVycm9y
ID0gZnJhbWVidWZmZXJPYmplY3QtPnJlYWRQaXhlbHMoY29udGV4dC0+Z2V0U3RhdGUoKSwgYXJl
YSwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnJlYWRQaXhlbHMoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKICAgICB9CiB9CiAKQEAgLTYx
NSw3ICs2NTMsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA+PSAzICYmCi0gICAgICAgICAgICAhVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFy
YW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIDEpKQorICAgICAgICAgICAgIVZhbGlkYXRlRVMzVGV4U3RvcmFnZTJEUGFyYW1ldGVy
cyhjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIDEpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY0NCw2ICs2ODMsMjEg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIGlmIChjb250ZXh0
LT5nZXRMaW1pdGF0aW9ucygpLmF0dHJpYnV0ZVplcm9SZXF1aXJlc1plcm9EaXZpc29ySW5FWFQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSAwICYmIGRpdmlzb3IgIT0gMCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvck1lc3NhZ2Ug
PSAiVGhlIGN1cnJlbnQgY29udGV4dCBkb2Vzbid0IHN1cHBvcnQgc2V0dGluZyBhIG5vbi16ZXJv
IGRpdmlzb3Igb24gdGhlIGF0dHJpYnV0ZSB3aXRoIGluZGV4IHplcm8uICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHJlb3JkZXIgdGhlIGF0dHJp
YnV0ZXMgaW4geW91ciB2ZXJ0ZXggc2hhZGVyIHNvIHRoYXQgYXR0cmlidXRlIHplcm8gY2FuIGhh
dmUgYSB6ZXJvIGRpdmlzb3IuIjsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgZXJyb3JNZXNzYWdlKSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBXZSBhbHNvIG91dHB1dCBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBkZWJ1Z2dl
ciB3aW5kb3cgaWYgdHJhY2luZyBpcyBhY3RpdmUsIHNvIHRoYXQgZGV2ZWxvcGVycyBjYW4gc2Vl
IHRoZSBlcnJvciBtZXNzYWdlLgorICAgICAgICAgICAgICAgIEVSUigiJXMiLCBlcnJvck1lc3Nh
Z2UpOworCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKICAgICAgICAgY29udGV4dC0+c2V0VmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNv
cik7CiAgICAgfQogfQpAQCAtNjU5LDI4ICs3MTMsMzIgQEAKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoIVZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhjb250ZXh0LCBzcmNY
MCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSkpCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZh
bGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoY29udGV4dCwgc3JjWDAsIHNyY1kwLCBzcmNYMSwg
c3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkc3RZMSwgbWFzaywgZmlsdGVyKSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgRnJhbWVidWZmZXIgKnJlYWRGcmFtZWJ1
ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgICAg
IEFTU0VSVChyZWFkRnJhbWVidWZmZXIpOworICAgICAgICBjb250ZXh0LT5ibGl0RnJhbWVidWZm
ZXIoc3JjWDAsIHNyY1kwLCBzcmNYMSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkx
LCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKTsKKyAgICB9
Cit9CiAKLSAgICAgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdl
dFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIEFTU0VSVChkcmF3RnJhbWVi
dWZmZXIpOwordm9pZCBHTF9BUElFTlRSWSBEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xlbnVtIHRh
cmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykK
K3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTHNpemVpIG51bUF0dGFjaG1l
bnRzID0gJWQsIGF0dGFjaG1lbnRzID0gMHglMC44cCkiLCB0YXJnZXQsIG51bUF0dGFjaG1lbnRz
LCBhdHRhY2htZW50cyk7CiAKLSAgICAgICAgUmVjdGFuZ2xlIHNyY0FyZWEoc3JjWDAsIHNyY1kw
LCBzcmNYMSAtIHNyY1gwLCBzcmNZMSAtIHNyY1kwKTsKLSAgICAgICAgUmVjdGFuZ2xlIGRzdEFy
ZWEoZHN0WDAsIGRzdFkwLCBkc3RYMSAtIGRzdFgwLCBkc3RZMSAtIGRzdFkwKTsKLQotICAgICAg
ICBFcnJvciBlcnJvciA9IGRyYXdGcmFtZWJ1ZmZlci0+YmxpdChjb250ZXh0LT5nZXRTdGF0ZSgp
LCBzcmNBcmVhLCBkc3RBcmVhLCBtYXNrLCBmaWx0ZXIsIHJlYWRGcmFtZWJ1ZmZlcik7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVEaXNjYXJk
RnJhbWVidWZmZXJFWFQoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVu
dHMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5kaXNj
YXJkRnJhbWVidWZmZXIodGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOwogICAg
IH0KIH0KIApAQCAtNzAzLDE0ICs3NjEsMTQgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBQ
cm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLQot
ICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QgfHwgIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkp
CisgICAgICAgIGlmICghVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5T0VTKGNvbnRleHQsIHByb2dy
YW0sIGJ1ZlNpemUsIGxlbmd0aCwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFT
U0VSVChwcm9ncmFtT2JqZWN0ICE9IG51bGxwdHIpOworCiAgICAgICAgIEVycm9yIGVycm9yID0g
cHJvZ3JhbU9iamVjdC0+c2F2ZUJpbmFyeShiaW5hcnlGb3JtYXQsIGJpbmFyeSwgYnVmU2l6ZSwg
bGVuZ3RoKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewpAQCAtNzI4
LDE5ICs3ODYsMTMgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxHTGVudW0+ICZwcm9ncmFtQmluYXJ5Rm9ybWF0cyA9IGNvbnRleHQtPmdldENhcHMoKS5wcm9n
cmFtQmluYXJ5Rm9ybWF0czsKLSAgICAgICAgaWYgKHN0ZDo6ZmluZChwcm9ncmFtQmluYXJ5Rm9y
bWF0cy5iZWdpbigpLCBwcm9ncmFtQmluYXJ5Rm9ybWF0cy5lbmQoKSwgYmluYXJ5Rm9ybWF0KSA9
PSBwcm9ncmFtQmluYXJ5Rm9ybWF0cy5lbmQoKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dy
YW1CaW5hcnlPRVMoY29udGV4dCwgcHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0
aCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7
Ci0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCAhPSBu
dWxscHRyKTsKIAogICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPmxvYWRCaW5h
cnkoYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCkBAIC03NTgsMzAyICs4MTAsNTYzIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKG4gPCAwIHx8IHN0YXRpY19jYXN0PEdMdWludD4obikgPiBjb250ZXh0LT5nZXRDYXBzKCku
bWF4RHJhd0J1ZmZlcnMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVEcmF3QnVmZmVyc0VYVChjb250ZXh0LCBuLCBidWZzKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKGNvbnRl
eHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkpOworICAgICAgICBjb250ZXh0LT5k
cmF3QnVmZmVycyhuLCBidWZzKTsKKyAgICB9Cit9CiAKLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCkgPT0gMCkKK3ZvaWQgR0xfQVBJRU5U
UlkgR2V0QnVmZmVyUG9pbnRlcnZPRVMoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCB2b2lk
KiogcGFyYW1zKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZW51bSBw
bmFtZSA9IDB4JVgsIEdMdm9pZCoqIHBhcmFtcyA9IDB4JTAuOHApIiwgdGFyZ2V0LCBwbmFtZSwg
cGFyYW1zKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0QnVmZmVyUG9pbnRlcnZPRVMo
Y29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKG4gIT0gMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAoYnVmc1swXSAhPSBHTF9OT05FICYmIGJ1ZnNbMF0gIT0gR0xfQkFDSykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2V0QnVmZmVyUG9pbnRlcnYodGFyZ2V0LCBwbmFt
ZSwgcGFyYW1zKTsKKyAgICB9Cit9CisKK3ZvaWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlck9FUyhH
TGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdl
dCA9IDB4JVgsIEdMYml0ZmllbGQgYWNjZXNzID0gMHglWCkiLCB0YXJnZXQsIGFjY2Vzcyk7CisK
KyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYg
KGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
JiYgIVZhbGlkYXRlTWFwQnVmZmVyT0VTKGNvbnRleHQsIHRhcmdldCwgYWNjZXNzKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgZWxz
ZQorCisgICAgICAgIHJldHVybiBjb250ZXh0LT5tYXBCdWZmZXIodGFyZ2V0LCBhY2Nlc3MpOwor
ICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkg
VW5tYXBCdWZmZXJPRVMoR0xlbnVtIHRhcmdldCkKK3sKKyAgICBFVkVOVCgiKEdMZW51bSB0YXJn
ZXQgPSAweCVYKSIsIHRhcmdldCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5tYXBCdWZmZXJPRVMoY29udGV4
dCwgdGFyZ2V0KSkKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgY29sb3JBdHRhY2ht
ZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwgbjsgY29sb3JBdHRhY2htZW50KyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIGF0dGFjaG1lbnQgPSBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQgKyBjb2xvckF0dGFjaG1lbnQ7Ci0gICAgICAgICAgICAgICAgaWYg
KGJ1ZnNbY29sb3JBdHRhY2htZW50XSAhPSBHTF9OT05FICYmIGJ1ZnNbY29sb3JBdHRhY2htZW50
XSAhPSBhdHRhY2htZW50KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAgICAgfQogCi0gICAgICAgIEZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVm
ZmVyKCk7Ci0gICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisgICAgICAgIHJldHVybiBjb250
ZXh0LT51bm1hcEJ1ZmZlcih0YXJnZXQpOworICAgIH0KIAotICAgICAgICBmcmFtZWJ1ZmZlci0+
c2V0RHJhd0J1ZmZlcnMobiwgYnVmcyk7CisgICAgcmV0dXJuIEdMX0ZBTFNFOworfQorCit2b2lk
ICpHTF9BUElFTlRSWSBNYXBCdWZmZXJSYW5nZUVYVChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcykKK3sKKyAgICBFVkVO
VCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludHB0ciBvZmZzZXQgPSAlZCwgR0xzaXplaXB0
ciBsZW5ndGggPSAlZCwgR0xiaXRmaWVsZCBhY2Nlc3MgPSAweCVYKSIsCisgICAgICAgICAgdGFy
Z2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRl
TWFwQnVmZmVyUmFuZ2VFWFQoY29udGV4dCwgdGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNz
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gY29udGV4dC0+bWFwQnVmZmVyUmFuZ2UodGFyZ2V0LCBvZmZzZXQsIGxl
bmd0aCwgYWNjZXNzKTsKICAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotdm9pZCBH
TF9BUElFTlRSWSBHZXRCdWZmZXJQb2ludGVydk9FUyhHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5h
bWUsIHZvaWQqKiBwYXJhbXMpCit2b2lkIEdMX0FQSUVOVFJZIEZsdXNoTWFwcGVkQnVmZmVyUmFu
Z2VFWFQoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCkK
IHsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVY
LCBHTHZvaWQqKiBwYXJhbXMgPSAweCUwLjhwKSIsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7Cisg
ICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnRwdHIgb2Zmc2V0ID0gJWQsIEdM
c2l6ZWlwdHIgbGVuZ3RoID0gJWQpIiwgdGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCk7CiAKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHRhcmdl
dCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAg
ICAgIVZhbGlkYXRlRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVChjb250ZXh0LCB0YXJnZXQsIG9m
ZnNldCwgbGVuZ3RoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAocG5hbWUgIT0gR0xfQlVGRkVSX01BUF9QT0lOVEVSKQorICAgICAg
ICBjb250ZXh0LT5mbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgp
OworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBJbnNlcnRFdmVudE1hcmtlckVYVChHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworICAgIC8vIERvbid0IHJ1biBhbiBF
VkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRfZGVidWdfbWFya2VyIGVudHJ5IHBvaW50cy4KKyAgICAv
LyBJdCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGRlYnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhl
IGNhbGxlci4KKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmRlYnVnTWFya2VyKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIC8vIFRoZSBk
ZWJ1ZyBtYXJrZXIgY2FsbHMgc2hvdWxkIG5vdCBzZXQgZXJyb3Igc3RhdGUKKyAgICAgICAgICAg
IC8vIEhvd2V2ZXIsIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gc2V0IGFuIGVycm9yIHN0YXRlIGlm
IHRoZSBleHRlbnNpb24gaXMgbm90IGVuYWJsZWQKKyAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVk
IikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgQnVmZmVyICpi
dWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOworICAg
ICAgICBpZiAoIVZhbGlkYXRlSW5zZXJ0RXZlbnRNYXJrZXJFWFQoY29udGV4dCwgbGVuZ3RoLCBt
YXJrZXIpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5pc01hcHBlZCgpKQorICAgICAgICBjb250ZXh0
LT5pbnNlcnRFdmVudE1hcmtlcihsZW5ndGgsIG1hcmtlcik7CisgICAgfQorfQorCit2b2lkIEdM
X0FQSUVOVFJZIFB1c2hHcm91cE1hcmtlckVYVChHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
bWFya2VyKQoreworICAgIC8vIERvbid0IHJ1biBhbiBFVkVOVCgpIG1hY3JvIG9uIHRoZSBFWFRf
ZGVidWdfbWFya2VyIGVudHJ5IHBvaW50cy4KKyAgICAvLyBJdCBjYW4gaW50ZXJmZXJlIHdpdGgg
dGhlIGRlYnVnIGV2ZW50cyBiZWluZyBzZXQgYnkgdGhlIGNhbGxlci4KKworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlYnVnTWFya2VyKQog
ICAgICAgICB7Ci0gICAgICAgICAgICAqcGFyYW1zID0gTlVMTDsKKyAgICAgICAgICAgIC8vIFRo
ZSBkZWJ1ZyBtYXJrZXIgY2FsbHMgc2hvdWxkIG5vdCBzZXQgZXJyb3Igc3RhdGUKKyAgICAgICAg
ICAgIC8vIEhvd2V2ZXIsIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gc2V0IGFuIGVycm9yIHN0YXRl
IGlmIHRoZSBleHRlbnNpb24gaXMgbm90IGVuYWJsZWQKKyAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uIG5vdCBlbmFi
bGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKCFW
YWxpZGF0ZVB1c2hHcm91cE1hcmtlckVYVChjb250ZXh0LCBsZW5ndGgsIG1hcmtlcikpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXJr
ZXIgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gRnJvbSB0aGUgRVhUX2Rl
YnVnX21hcmtlciBzcGVjLAorICAgICAgICAgICAgLy8gIklmIDxtYXJrZXI+IGlzIG51bGwgdGhl
biBhbiBlbXB0eSBzdHJpbmcgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4iCisgICAgICAgICAgICBj
b250ZXh0LT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCAiIik7CisgICAgICAgIH0KICAgICAgICAg
ZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICAqcGFyYW1zID0gYnVmZmVyLT5nZXRNYXBQb2lu
dGVyKCk7CisgICAgICAgICAgICBjb250ZXh0LT5wdXNoR3JvdXBNYXJrZXIobGVuZ3RoLCBtYXJr
ZXIpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkICpHTF9BUElFTlRSWSBNYXBCdWZmZXJP
RVMoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2VzcykKK3ZvaWQgR0xfQVBJRU5UUlkgUG9wR3Jv
dXBNYXJrZXJFWFQoKQogewotICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMYml0
ZmllbGQgYWNjZXNzID0gMHglWCkiLCB0YXJnZXQsIGFjY2Vzcyk7CisgICAgLy8gRG9uJ3QgcnVu
IGFuIEVWRU5UKCkgbWFjcm8gb24gdGhlIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkgcG9pbnRzLgor
ICAgIC8vIEl0IGNhbiBpbnRlcmZlcmUgd2l0aCB0aGUgZGVidWcgZXZlbnRzIGJlaW5nIHNldCBi
eSB0aGUgY2FsbGVyLgogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZEJ1ZmZl
clRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5kZWJ1Z01hcmtlcikKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICAgICAgICAgIC8vIFRoZSBkZWJ1ZyBtYXJrZXIgY2FsbHMgc2hvdWxkIG5vdCBzZXQg
ZXJyb3Igc3RhdGUKKyAgICAgICAgICAgIC8vIEhvd2V2ZXIsIGl0IHNlZW1zIHJlYXNvbmFibGUg
dG8gc2V0IGFuIGVycm9yIHN0YXRlIGlmIHRoZSBleHRlbnNpb24gaXMgbm90IGVuYWJsZWQKKyAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRXh0ZW5zaW9uIG5vdCBlbmFibGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRh
cmdldEJ1ZmZlcih0YXJnZXQpOworICAgICAgICBjb250ZXh0LT5wb3BHcm91cE1hcmtlcigpOwor
ICAgIH0KK30KIAotICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpCitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTGVudW0gdGFyZ2V0LCBH
TGVnbEltYWdlT0VTIGltYWdlKQoreworICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgs
IEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUwLjhwKSIsIHRhcmdldCwgaW1hZ2UpOworCisgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250
ZXh0KQorICAgIHsKKyAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5ICAgPSBlZ2w6OkdldEds
b2JhbERpc3BsYXkoKTsKKyAgICAgICAgZWdsOjpJbWFnZSAqaW1hZ2VPYmplY3QgPSByZWludGVy
cHJldF9jYXN0PGVnbDo6SW1hZ2UgKj4oaW1hZ2UpOworICAgICAgICBpZiAoIVZhbGlkYXRlRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoY29udGV4dCwgZGlzcGxheSwgdGFyZ2V0LCBpbWFnZU9i
amVjdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhY2Nlc3MgIT0gR0xfV1JJ
VEVfT05MWV9PRVMpCisgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJn
ZXRUZXh0dXJlKHRhcmdldCk7CisgICAgICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+c2V0RUdM
SW1hZ2VUYXJnZXQodGFyZ2V0LCBpbWFnZU9iamVjdCk7CisgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyAgICB9Cit9CiAKLSAgICAgICAgaWYgKGJ1ZmZlci0+aXNNYXBwZWQoKSkKK0FOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFn
ZU9FUyhHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCit7Cisg
ICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSA9IDB4
JTAuOHApIiwgdGFyZ2V0LCBpbWFnZSk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkgICA9IGVnbDo6R2V0R2xvYmFsRGlzcGxheSgpOworICAgICAgICBl
Z2w6OkltYWdlICppbWFnZU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZWdsOjpJbWFnZSAqPihp
bWFnZSk7CisgICAgICAgIGlmICghVmFsaWRhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0
b3JhZ2VPRVMoY29udGV4dCwgZGlzcGxheSwgdGFyZ2V0LCBpbWFnZU9iamVjdCkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0gYnVmZmVyLT5tYXAoYWNjZXNzKTsK
KyAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgp
LmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKKyAgICAgICAgRXJyb3IgZXJyb3IgPSByZW5kZXJi
dWZmZXItPnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChpbWFnZU9iamVjdCk7CiAgICAgICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Z2V0TWFwUG9pbnRlcigp
OwogICAgIH0KLQotICAgIHJldHVybiBOVUxMOwogfQogCi1HTGJvb2xlYW4gR0xfQVBJRU5UUlkg
VW5tYXBCdWZmZXJPRVMoR0xlbnVtIHRhcmdldCkKK3ZvaWQgR0xfQVBJRU5UUlkgQmluZFZlcnRl
eEFycmF5T0VTKEdMdWludCBhcnJheSkKIHsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAw
eCVYKSIsIHRhcmdldCk7CisgICAgRVZFTlQoIihHTHVpbnQgYXJyYXkgPSAldSkiLCBhcnJheSk7
CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRl
eHQsIHRhcmdldCkpCisgICAgICAgIGlmICghVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlPRVMoY29u
dGV4dCwgYXJyYXkpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEJ1ZmZlciAqYnVmZmVy
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIodGFyZ2V0KTsKKyAgICAgICAg
Y29udGV4dC0+YmluZFZlcnRleEFycmF5KGFycmF5KTsKKyAgICB9Cit9CiAKLSAgICAgICAgaWYg
KGJ1ZmZlciA9PSBOVUxMIHx8ICFidWZmZXItPmlzTWFwcGVkKCkpCit2b2lkIEdMX0FQSUVOVFJZ
IERlbGV0ZVZlcnRleEFycmF5c09FUyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKQor
eworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIGNvbnN0IEdMdWludCogYXJyYXlzID0gMHgl
MC44cCkiLCBuLCBhcnJheXMpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxp
ZGF0ZURlbGV0ZVZlcnRleEFycmF5c09FUyhjb250ZXh0LCBuKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
LSAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIEdMYm9vbGVhbiByZXN1bHQ7Ci0gICAgICAgIEVycm9yIGVycm9yID0g
YnVmZmVyLT51bm1hcCgmcmVzdWx0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAg
ICAgICAgZm9yIChpbnQgYXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXggPCBuOyBhcnJheUluZGV4
KyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsK
LSAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICAgICAgICAgIGlmIChhcnJheXNbYXJy
YXlJbmRleF0gIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5k
ZWxldGVWZXJ0ZXhBcnJheShhcnJheXNbYXJyYXlJbmRleF0pOworICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0KLSAgICByZXR1cm4gR0xf
RkFMU0U7CiB9CiAKLXZvaWQgKkdMX0FQSUVOVFJZIE1hcEJ1ZmZlclJhbmdlRVhUKEdMZW51bSB0
YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsIEdMYml0ZmllbGQgYWNj
ZXNzKQordm9pZCBHTF9BUElFTlRSWSBHZW5WZXJ0ZXhBcnJheXNPRVMoR0xzaXplaSBuLCBHTHVp
bnQgKmFycmF5cykKIHsKLSAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGludHB0
ciBvZmZzZXQgPSAlZCwgR0xzaXplaXB0ciBsZW5ndGggPSAlZCwgR0xiaXRmaWVsZCBhY2Nlc3Mg
PSAweCVYKSIsCi0gICAgICAgICAgdGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKKyAg
ICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBHTHVpbnQqIGFycmF5cyA9IDB4JTAuOHApIiwgbiwg
YXJyYXlzKTsKIAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRCdWZmZXJUYXJn
ZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdlblZlcnRleEFycmF5
c09FUyhjb250ZXh0LCBuKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChvZmZzZXQgPCAw
IHx8IGxlbmd0aCA8IDApCisgICAgICAgIGZvciAoaW50IGFycmF5SW5kZXggPSAwOyBhcnJheUlu
ZGV4IDwgbjsgYXJyYXlJbmRleCsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm4g
TlVMTDsKKyAgICAgICAgICAgIGFycmF5c1thcnJheUluZGV4XSA9IGNvbnRleHQtPmNyZWF0ZVZl
cnRleEFycmF5KCk7CiAgICAgICAgIH0KKyAgICB9Cit9CiAKLSAgICAgICAgQnVmZmVyICpidWZm
ZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOworR0xib29s
ZWFuIEdMX0FQSUVOVFJZIElzVmVydGV4QXJyYXlPRVMoR0x1aW50IGFycmF5KQoreworICAgIEVW
RU5UKCIoR0x1aW50IGFycmF5ID0gJXUpIiwgYXJyYXkpOwogCi0gICAgICAgIGlmIChidWZmZXIg
PT0gTlVMTCkKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlSXNWZXJ0ZXhB
cnJheU9FUyhjb250ZXh0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBO
VUxMOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CiAKLSAgICAgICAg
Ly8gQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdwotICAgICAgICBzaXplX3Qgb2Zmc2V0U2l6ZSA9
IHN0YXRpY19jYXN0PHNpemVfdD4ob2Zmc2V0KTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aFNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCk7Ci0KLSAgICAgICAgaWYgKCFyeDo6SXNVbnNp
Z25lZEFkZGl0aW9uU2FmZShvZmZzZXRTaXplLCBsZW5ndGhTaXplKSB8fAotICAgICAgICAgICAg
b2Zmc2V0U2l6ZSArIGxlbmd0aFNpemUgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlci0+Z2V0
U2l6ZSgpKSkKKyAgICAgICAgaWYgKGFycmF5ID09IDApCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9
CiAKLSAgICAgICAgLy8gQ2hlY2sgZm9yIGludmFsaWQgYml0cyBpbiB0aGUgbWFzawotICAgICAg
ICBHTGJpdGZpZWxkIGFsbEFjY2Vzc0JpdHMgPSBHTF9NQVBfUkVBRF9CSVQgfAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9NQVBfV1JJVEVfQklUIHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfTUFQX0lOVkFMSURBVEVfUkFOR0VfQklUIHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTUFQX0lOVkFMSURBVEVfQlVGRkVS
X0JJVCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX01BUF9GTFVTSF9F
WFBMSUNJVF9CSVQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9NQVBf
VU5TWU5DSFJPTklaRURfQklUOworICAgICAgICBWZXJ0ZXhBcnJheSAqdmFvID0gY29udGV4dC0+
Z2V0VmVydGV4QXJyYXkoYXJyYXkpOwogCi0gICAgICAgIGlmIChhY2Nlc3MgJiB+KGFsbEFjY2Vz
c0JpdHMpKQorICAgICAgICByZXR1cm4gKHZhbyAhPSBudWxscHRyID8gR0xfVFJVRSA6IEdMX0ZB
TFNFKTsKKyAgICB9CisKKyAgICByZXR1cm4gR0xfRkFMU0U7Cit9CisKK3ZvaWQgR0xfQVBJRU5U
UlkgRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTGVudW0gc291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdWludCAqaWRzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBlbmFibGVkKQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEdMZW51bSBzb3VyY2UgPSAweCVYLCBHTGVudW0gdHlwZSA9IDB4JVgsIEdM
ZW51bSBzZXZlcml0eSA9IDB4JVgsIEdMc2l6ZWkgY291bnQgPSAlZCwgIgorICAgICAgICAiR0xp
bnQgKmlkcyA9IDB4JTAuOHAsIEdMYm9vbGVhbiBlbmFibGVkID0gJWQpIiwKKyAgICAgICAgc291
cmNlLCB0eXBlLCBzZXZlcml0eSwgY291bnQsIGlkcywgZW5hYmxlZCk7CisKKyAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisg
ICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlRGVidWdNZXNzYWdlQ29udHJvbEtIUihjb250ZXh0
LCBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBjb3VudCwgaWRzLCBlbmFibGVkKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAobGVuZ3RoID09IDAgfHwgYnVmZmVyLT5pc01hcHBlZCgpKQor
ICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IGlkVmVjdG9yKGlkcywgaWRzICsgY291bnQpOwor
ICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCkuc2V0TWVzc2FnZUNvbnRyb2wo
CisgICAgICAgICAgICBzb3VyY2UsIHR5cGUsIHNldmVyaXR5LCBzdGQ6Om1vdmUoaWRWZWN0b3Ip
LCAoZW5hYmxlZCAhPSBHTF9GQUxTRSkpOworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBE
ZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGNoYXIgKmJ1ZikKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihHTGVu
dW0gc291cmNlID0gMHglWCwgR0xlbnVtIHR5cGUgPSAweCVYLCBHTGludCBpZCA9ICVkLCBHTGVu
dW0gc2V2ZXJpdHkgPSAweCVYLCBHTHNpemVpICIKKyAgICAgICAgImxlbmd0aCA9ICVkLCBjb25z
dCBHTGNoYXIgKmJ1ZiA9IDB4JTAuOHApIiwKKyAgICAgICAgc291cmNlLCB0eXBlLCBpZCwgc2V2
ZXJpdHksIGxlbmd0aCwgYnVmKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghVmFs
aWRhdGVEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoY29udGV4dCwgc291cmNlLCB0eXBlLCBpZCwgc2V2
ZXJpdHksIGxlbmd0aCwgYnVmKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQ2hl
Y2sgZm9yIGludmFsaWQgYml0IGNvbWJpbmF0aW9ucwotICAgICAgICBpZiAoKGFjY2VzcyAmIChH
TF9NQVBfUkVBRF9CSVQgfCBHTF9NQVBfV1JJVEVfQklUKSkgPT0gMCkKKyAgICAgICAgc3RkOjpz
dHJpbmcgbXNnKGJ1ZiwgKGxlbmd0aCA+IDApID8gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgp
IDogc3RybGVuKGJ1ZikpOworICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCku
aW5zZXJ0TWVzc2FnZShzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgc3RkOjptb3ZlKG1zZykp
OworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihH
TERFQlVHUFJPQ0tIUiBjYWxsYmFjaywgY29uc3Qgdm9pZCAqdXNlclBhcmFtKQoreworICAgIEVW
RU5UKCIoR0xERUJVR1BST0NLSFIgY2FsbGJhY2sgPSAweCUwLjhwLCBjb25zdCB2b2lkICp1c2Vy
UGFyYW0gPSAweCUwLjhwKSIsIGNhbGxiYWNrLAorICAgICAgICAgIHVzZXJQYXJhbSk7CisKKyAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNv
bnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlRGVidWdNZXNzYWdlQ2FsbGJhY2tL
SFIoY29udGV4dCwgY2FsbGJhY2ssIHVzZXJQYXJhbSkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIEdMYml0ZmllbGQgd3JpdGVPbmx5Qml0cyA9IEdMX01BUF9JTlZBTElEQVRFX1JBTkdF
X0JJVCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX01BUF9JTlZBTElE
QVRFX0JVRkZFUl9CSVQgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9N
QVBfVU5TWU5DSFJPTklaRURfQklUOworICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERl
YnVnKCkuc2V0Q2FsbGJhY2soY2FsbGJhY2ssIHVzZXJQYXJhbSk7CisgICAgfQorfQogCi0gICAg
ICAgIGlmICgoYWNjZXNzICYgR0xfTUFQX1JFQURfQklUKSAhPSAwICYmIChhY2Nlc3MgJiB3cml0
ZU9ubHlCaXRzKSAhPSAwKQorR0x1aW50IEdMX0FQSUVOVFJZIEdldERlYnVnTWVzc2FnZUxvZ0tI
UihHTHVpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKnR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgKmlkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtICpzZXZlcml0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGNoYXIgKm1lc3NhZ2VMb2cpCit7CisgICAgRVZFTlQoCisgICAgICAgICIo
R0xzaXplaSBjb3VudCA9ICVkLCBHTHNpemVpIGJ1ZlNpemUgPSAlZCwgR0xlbnVtICpzb3VyY2Vz
LCBHTGVudW0gKnR5cGVzID0gMHglMC44cCwgIgorICAgICAgICAiR0x1aW50ICppZHMgPSAweCUw
LjhwLCBHTGVudW0gKnNldmVyaXRpZXMgPSAweCUwLjhwLCBHTHNpemVpICpsZW5ndGhzID0gMHgl
MC44cCwgR0xjaGFyICIKKyAgICAgICAgIiptZXNzYWdlTG9nID0gMHglMC44cCkiLAorICAgICAg
ICBjb3VudCwgYnVmU2l6ZSwgc291cmNlcywgdHlwZXMsIGlkcywgc2V2ZXJpdGllcywgbGVuZ3Ro
cywgbWVzc2FnZUxvZyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRl
R2V0RGVidWdNZXNzYWdlTG9nS0hSKGNvbnRleHQsIGNvdW50LCBidWZTaXplLCBzb3VyY2VzLCB0
eXBlcywgaWRzLCBzZXZlcml0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbmd0aHMsIG1lc3NhZ2VMb2cpKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAg
ICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0g
ICAgICAgIGlmICgoYWNjZXNzICYgR0xfTUFQX1dSSVRFX0JJVCkgPT0gMCAmJiAoYWNjZXNzICYg
R0xfTUFQX0ZMVVNIX0VYUExJQ0lUX0JJVCkgIT0gMCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEdMdWludD4oY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREZWJ1ZygpLmdldE1lc3NhZ2VzKAor
ICAgICAgICAgICAgY291bnQsIGJ1ZlNpemUsIHNvdXJjZXMsIHR5cGVzLCBpZHMsIHNldmVyaXRp
ZXMsIGxlbmd0aHMsIG1lc3NhZ2VMb2cpKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBHTF9BUElFTlRSWSBQdXNoRGVidWdHcm91cEtIUihHTGVudW0gc291cmNlLCBHTHVpbnQg
aWQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1lc3NhZ2UpCit7CisgICAgRVZFTlQo
CisgICAgICAgICIoR0xlbnVtIHNvdXJjZSA9IDB4JVgsIEdMdWludCBpZCA9IDB4JVgsIEdMc2l6
ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbWVzc2FnZSA9ICIKKyAgICAgICAgIjB4JTAu
OHApIiwKKyAgICAgICAgc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKKworICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkK
KyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVQdXNoRGVidWdHcm91cEtIUihjb250ZXh0LCBz
b3VyY2UsIGlkLCBsZW5ndGgsIG1lc3NhZ2UpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAg
ICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+bWFwUmFuZ2Uob2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7
Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAgIHN0ZDo6c3RyaW5nIG1zZyht
ZXNzYWdlLCAobGVuZ3RoID4gMCkgPyBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgOiBzdHJs
ZW4obWVzc2FnZSkpOworICAgICAgICBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCkucHVz
aEdyb3VwKHNvdXJjZSwgaWQsIHN0ZDo6bW92ZShtc2cpKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xf
QVBJRU5UUlkgUG9wRGVidWdHcm91cEtIUih2b2lkKQoreworICAgIEVWRU5UKCIoKSIpOworCisg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVBvcERlYnVnR3JvdXBLSFIoY29u
dGV4dCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9y
KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Z2V0TWFwUG9pbnRlcigpOworICAgICAgICBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldERlYnVnKCkucG9wR3JvdXAoKTsKICAgICB9Ci0KLSAgICBy
ZXR1cm4gTlVMTDsKIH0KIAotdm9pZCBHTF9BUElFTlRSWSBGbHVzaE1hcHBlZEJ1ZmZlclJhbmdl
RVhUKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgpCit2
b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVsS0hSKEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQg
bmFtZSwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFiZWwpCiB7Ci0gICAgRVZFTlQo
IihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnRwdHIgb2Zmc2V0ID0gJWQsIEdMc2l6ZWlwdHIg
bGVuZ3RoID0gJWQpIiwgdGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgRVZFTlQoCisgICAg
ICAgICIoR0xlbnVtIGlkZW50aWZpZXIgPSAweCVYLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVp
IGxlbmd0aCA9ICVkLCBjb25zdCBHTGNoYXIgKmxhYmVsID0gIgorICAgICAgICAiMHglMC44cCki
LAorICAgICAgICBpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxhYmVsKTsKIAogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IGxlbmd0aCA8IDApCisgICAgICAgIGlm
ICghVmFsaWRhdGVPYmplY3RMYWJlbEtIUihjb250ZXh0LCBpZGVudGlmaWVyLCBuYW1lLCBsZW5n
dGgsIGxhYmVsKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB0YXJnZXQpKQorICAg
ICAgICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBjb250ZXh0LT5nZXRMYWJlbGVkT2JqZWN0KGlk
ZW50aWZpZXIsIG5hbWUpOworICAgICAgICBBU1NFUlQob2JqZWN0ICE9IG51bGxwdHIpOworCisg
ICAgICAgIHN0ZDo6c3RyaW5nIGxibChsYWJlbCwgKGxlbmd0aCA+IDApID8gc3RhdGljX2Nhc3Q8
c2l6ZV90PihsZW5ndGgpIDogc3RybGVuKGxhYmVsKSk7CisgICAgICAgIG9iamVjdC0+c2V0TGFi
ZWwobGJsKTsKKyAgICB9Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkKK0dldE9iamVjdExhYmVsS0hS
KEdMZW51bSBpZGVudGlmaWVyLCBHTHVpbnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIEdMY2hhciAqbGFiZWwpCit7CisgICAgRVZFTlQoCisgICAgICAgICIoR0xlbnVt
IGlkZW50aWZpZXIgPSAweCVYLCBHTHVpbnQgbmFtZSA9ICV1LCBHTHNpemVpIGJ1ZlNpemUgPSAl
ZCwgR0xzaXplaSAqbGVuZ3RoID0gIgorICAgICAgICAiMHglMC44cCwgR0xjaGFyICpsYWJlbCA9
IDB4JTAuOHApIiwKKyAgICAgICAgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBs
YWJlbCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIVZhbGlkYXRlR2V0T2JqZWN0
TGFiZWxLSFIoY29udGV4dCwgaWRlbnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJl
bCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgQnVmZmVyICpidWZmZXIgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0
YXJnZXQpOworICAgICAgICBMYWJlbGVkT2JqZWN0ICpvYmplY3QgPSBjb250ZXh0LT5nZXRMYWJl
bGVkT2JqZWN0KGlkZW50aWZpZXIsIG5hbWUpOworICAgICAgICBBU1NFUlQob2JqZWN0ICE9IG51
bGxwdHIpOwogCi0gICAgICAgIGlmIChidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJm9iamVjdExhYmVsID0gb2JqZWN0LT5nZXRMYWJlbCgpOworICAgICAgICBzaXpl
X3Qgd3JpdGVMZW5ndGggPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZlNpemUpIC0g
MSwgb2JqZWN0TGFiZWwubGVuZ3RoKCkpOworICAgICAgICBzdGQ6OmNvcHkob2JqZWN0TGFiZWwu
YmVnaW4oKSwgb2JqZWN0TGFiZWwuYmVnaW4oKSArIHdyaXRlTGVuZ3RoLCBsYWJlbCk7CisgICAg
ICAgIGxhYmVsW3dyaXRlTGVuZ3RoXSA9ICdcMCc7CisgICAgICAgICpsZW5ndGggICAgICAgICAg
ICA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdyaXRlTGVuZ3RoKTsKKyAgICB9Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWxLSFIoY29uc3Qgdm9pZCAqcHRyLCBHTHNpemVpIGxl
bmd0aCwgY29uc3QgR0xjaGFyICpsYWJlbCkKK3sKKyAgICBFVkVOVCgiKGNvbnN0IHZvaWQgKnB0
ciA9IDB4JTAuOHAsIEdMc2l6ZWkgbGVuZ3RoID0gJWQsIGNvbnN0IEdMY2hhciAqbGFiZWwgPSAw
eCUwLjhwKSIsIHB0ciwKKyAgICAgICAgICBsZW5ndGgsIGxhYmVsKTsKKworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghVmFsaWRhdGVPYmplY3RQdHJMYWJlbEtIUihjb250ZXh0LCBwdHIs
IGxlbmd0aCwgbGFiZWwpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFidWZmZXItPmlzTWFwcGVkKCkgfHwgKGJ1ZmZlci0+
Z2V0QWNjZXNzRmxhZ3MoKSAmIEdMX01BUF9GTFVTSF9FWFBMSUNJVF9CSVQpID09IDApCisgICAg
ICAgIExhYmVsZWRPYmplY3QgKm9iamVjdCA9IGNvbnRleHQtPmdldExhYmVsZWRPYmplY3RGcm9t
UHRyKHB0cik7CisgICAgICAgIEFTU0VSVChvYmplY3QgIT0gbnVsbHB0cik7CisKKyAgICAgICAg
c3RkOjpzdHJpbmcgbGJsKGxhYmVsLCAobGVuZ3RoID4gMCkgPyBzdGF0aWNfY2FzdDxzaXplX3Q+
KGxlbmd0aCkgOiBzdHJsZW4obGFiZWwpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRMYWJlbChsYmwp
OworICAgIH0KK30KKwordm9pZCBHTF9BUElFTlRSWSBHZXRPYmplY3RQdHJMYWJlbEtIUihjb25z
dCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIg
KmxhYmVsKQoreworICAgIEVWRU5UKAorICAgICAgICAiKGNvbnN0IHZvaWQgKnB0ciA9IDB4JTAu
OHAsIEdMc2l6ZWkgYnVmU2l6ZSA9ICVkLCBHTHNpemVpICpsZW5ndGggPSAweCUwLjhwLCBHTGNo
YXIgIgorICAgICAgICAiKmxhYmVsID0gMHglMC44cCkiLAorICAgICAgICBwdHIsIGJ1ZlNpemUs
IGxlbmd0aCwgbGFiZWwpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0
ZUdldE9iamVjdFB0ckxhYmVsS0hSKGNvbnRleHQsIHB0ciwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJl
bCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICAvLyBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93Ci0gICAgICAgIHNpemVfdCBvZmZz
ZXRTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihvZmZzZXQpOwotICAgICAgICBzaXplX3QgbGVu
Z3RoU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKTsKKyAgICAgICAgTGFiZWxlZE9i
amVjdCAqb2JqZWN0ID0gY29udGV4dC0+Z2V0TGFiZWxlZE9iamVjdEZyb21QdHIocHRyKTsKKyAg
ICAgICAgQVNTRVJUKG9iamVjdCAhPSBudWxscHRyKTsKIAotICAgICAgICBpZiAoIXJ4OjpJc1Vu
c2lnbmVkQWRkaXRpb25TYWZlKG9mZnNldFNpemUsIGxlbmd0aFNpemUpIHx8Ci0gICAgICAgICAg
ICBvZmZzZXRTaXplICsgbGVuZ3RoU2l6ZSA+IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyLT5n
ZXRNYXBMZW5ndGgoKSkpCisgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZvYmplY3RMYWJlbCA9
IG9iamVjdC0+Z2V0TGFiZWwoKTsKKyAgICAgICAgc2l6ZV90IHdyaXRlTGVuZ3RoID0gc3RkOjpt
aW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZTaXplKSAtIDEsIG9iamVjdExhYmVsLmxlbmd0aCgp
KTsKKyAgICAgICAgc3RkOjpjb3B5KG9iamVjdExhYmVsLmJlZ2luKCksIG9iamVjdExhYmVsLmJl
Z2luKCkgKyB3cml0ZUxlbmd0aCwgbGFiZWwpOworICAgICAgICBsYWJlbFt3cml0ZUxlbmd0aF0g
PSAnXDAnOworICAgICAgICAqbGVuZ3RoICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHNpemVp
Pih3cml0ZUxlbmd0aCk7CisgICAgfQorfQorCit2b2lkIEdMX0FQSUVOVFJZIEdldFBvaW50ZXJ2
S0hSKEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKK3sKKyAgICBFVkVOVCgiKEdMZW51bSBw
bmFtZSA9IDB4JVgsIHZvaWQgKipwYXJhbXMgPSAweCUwLjhwKSIsIHBuYW1lLCBwYXJhbXMpOwor
CisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlm
IChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxpZGF0ZUdldFBvaW50ZXJ2S0hSKGNv
bnRleHQsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHN1cHBvcnQgYSBu
b24tdHJpdmlhbCBpbXBsZW1lbnRhdGlvbiBvZiBGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlCisgICAg
ICAgIGNvbnRleHQtPmdldFBvaW50ZXJ2KHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KLQogfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18yXzBfZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgJKHJldmlzaW9uIDE5OTY4MikK
KysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2ds
ZXNfMl8wX2V4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw5IEBACiAvLyBHTF9BTkdM
RV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZQogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkg
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xlbnVtIHRhcmdldCwgR0xzaXpl
aSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KTsKIAorLy8gR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKK0FOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKTsKKwogLy8gR0xf
TlZfZmVuY2UKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZUZlbmNlc05WKEdM
c2l6ZWkgbiwgY29uc3QgR0x1aW50KiBmZW5jZXMpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgR2VuRmVuY2VzTlYoR0xzaXplaSBuLCBHTHVpbnQqIGZlbmNlcyk7CkBAIC01Miw2ICs1
NSwxMiBAQAogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlpdkVYVChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3R1aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5h
bWUsIEdMdWludCAqcGFyYW1zKTsKIAorLy8gR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5CitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBRdWVyeUNvdW50ZXJFWFQoR0x1aW50IGlkLCBH
TGVudW0gdGFyZ2V0KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFF1ZXJ5T2Jq
ZWN0aXZFWFQoR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UXVlcnlPYmplY3RpNjR2RVhUKEdMdWludCBpZCwg
R0xlbnVtIHBuYW1lLCBHTGludDY0ICpwYXJhbXMpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UXVlcnlPYmplY3R1aTY0dkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1
aW50NjQgKnBhcmFtcyk7CisKIC8vIEdMX0VYVF9kcmF3X2J1ZmZlcnMKIEFOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIERyYXdCdWZmZXJzRVhUKEdMc2l6ZWkgbiwgY29uc3QgR0xlbnVtICpi
dWZzKTsKIApAQCAtNzMsNiArODIsNjQgQEAKIEFOR0xFX0VYUE9SVCB2b2lkICpHTF9BUElFTlRS
WSBNYXBCdWZmZXJSYW5nZUVYVChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6
ZWlwdHIgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2Vzcyk7CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9B
UElFTlRSWSBGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlRVhUKEdMZW51bSB0YXJnZXQsIEdMaW50cHRy
IG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgpOwogCisvLyBHTF9FWFRfZGVidWdfbWFya2VyCitB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBJbnNlcnRFdmVudE1hcmtlckVYVChHTHNpemVp
IGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIFB1c2hHcm91cE1hcmtlckVYVChHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2Vy
KTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFBvcEdyb3VwTWFya2VyRVhUKCk7CisK
Ky8vIEdMX09FU19FR0xfaW1hZ2UKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVHTElt
YWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2Up
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZm
ZXJTdG9yYWdlT0VTKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlZ2xJbWFnZU9FUyBpbWFn
ZSk7CisKKy8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CitBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBCaW5kVmVydGV4QXJyYXlPRVMoR0x1aW50IGFycmF5KTsKK0FOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVZlcnRleEFycmF5c09FUyhHTHNpemVpIG4sIGNvbnN0
IEdMdWludCAqYXJyYXlzKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdlblZlcnRl
eEFycmF5c09FUyhHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKTsKK0FOR0xFX0VYUE9SVCBHTGJv
b2xlYW4gR0xfQVBJRU5UUlkgSXNWZXJ0ZXhBcnJheU9FUyhHTHVpbnQgYXJyYXkpOworCisvLyBH
TF9LSFJfZGVidWcKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIERlYnVnTWVzc2FnZUNv
bnRyb2xLSFIoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBlbmFibGVkKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIERlYnVnTWVzc2FnZUluc2VydEtIUihHTGVudW0gc291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gc2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYpOworQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoR0xERUJVR1BST0NL
SFIgY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICp1c2VyUGFyYW0pOworQU5HTEVfRVhQT1JUIEdMdWludCBH
TF9BUElFTlRSWSBHZXREZWJ1Z01lc3NhZ2VMb2dLSFIoR0x1aW50IGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqaWRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0
aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbWVzc2FnZUxvZyk7CitBTkdMRV9FWFBPUlQgdm9p
ZCBHTF9BUElFTlRSWSBQdXNoRGVidWdHcm91cEtIUihHTGVudW0gc291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGNoYXIgKm1lc3NhZ2UpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUG9wRGVidWdH
cm91cEtIUih2b2lkKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIE9iamVjdExhYmVs
S0hSKEdMZW51bSBpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpOworQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkKK0dldE9iamVjdExhYmVsS0hSKEdMZW51bSBpZGVudGlmaWVyLCBHTHVp
bnQgbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbGFiZWwp
OworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgT2JqZWN0UHRyTGFiZWxLSFIoY29uc3Qg
dm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGNoYXIgKmxhYmVsKTsKK0FOR0xFX0VYUE9SVCB2b2lkIEdMX0FQ
SUVOVFJZIEdldE9iamVjdFB0ckxhYmVsS0hSKGNvbnN0IHZvaWQgKnB0ciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqbGFiZWwpOworQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
UG9pbnRlcnZLSFIoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsKIH0KIAogI2VuZGlmIC8v
IExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzIwRVhUX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18zXzAuY3BwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDEzICszNSwxMiBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRh
dGVSZWFkQnVmZmVyKGNvbnRleHQsIG1vZGUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlUmVhZEJ1ZmZlcihjb250ZXh0LCBtb2RlKSkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgRnJhbWVidWZm
ZXIgKnJlYWRGQk8gPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwot
ICAgICAgICByZWFkRkJPLT5zZXRSZWFkQnVmZmVyKG1vZGUpOworICAgICAgICBjb250ZXh0LT5y
ZWFkQnVmZmVyKG1vZGUpOwogICAgIH0KIH0KIApAQCAtNTMsMjkgKzUyLDIwIEBACiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisg
ICAgICAgIEluZGV4UmFuZ2UgaW5kZXhSYW5nZTsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVEcmF3UmFuZ2VFbGVtZW50cyhj
b250ZXh0LCBtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgaW5kaWNlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmRleFJhbmdlKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJ4OjpSYW5n
ZVVJIGluZGV4UmFuZ2U7Ci0gICAgICAgIGlmICghVmFsaWRhdGVEcmF3RWxlbWVudHMoY29udGV4
dCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIDAsICZpbmRleFJhbmdlKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmRleFJhbmdl
LmVuZCA+IGVuZCB8fCBpbmRleFJhbmdlLnN0YXJ0IDwgc3RhcnQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIC8vIEdMIHNwZWMgc2F5cyB0aGF0IGJlaGF2aW9yIGluIHRoaXMgY2FzZSBpcyB1bmRl
ZmluZWQgLSBnZW5lcmF0aW5nIGFuIGVycm9yIGlzIGZpbmUuCi0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gQXMgbG9uZyBhcyBpbmRleCB2YWxpZGF0
aW9uIGlzIGRvbmUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgdGhlIGNvbnRleHQgcmVjZWl2
ZXMgYSBkcmF3RWxlbWVudHMgb3IKICAgICAgICAgLy8gYSBkcmF3UmFuZ2VFbGVtZW50cyBjYWxs
IC0gdGhlIEdMIGJhY2stZW5kIGlzIGZyZWUgdG8gY2hvb3NlIHRvIGNhbGwgZHJhd1JhbmdlRWxl
bWVudHMgYmFzZWQgb24gdGhlCiAgICAgICAgIC8vIHZhbGlkYXRlZCBpbmRleCByYW5nZS4gSWYg
aW5kZXggdmFsaWRhdGlvbiBpcyByZW1vdmVkLCBhZGRpbmcgZHJhd1JhbmdlRWxlbWVudHMgdG8g
dGhlIGNvbnRleHQgaW50ZXJmYWNlCiAgICAgICAgIC8vIHNob3VsZCBiZSByZWNvbnNpZGVyZWQu
Ci0gICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50
LCB0eXBlLCBpbmRpY2VzLCAwLCBpbmRleFJhbmdlKTsKKyAgICAgICAgRXJyb3IgZXJyb3IgPQor
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwg
Y291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJv
cik7CkBAIC05NCwyOCArODQsMTUgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVUZXhJbWFnZTNEKGNvbnRleHQs
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVs
cykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICAvLyB2YWxpZGF0ZUVTM1RleEltYWdlRm9ybWF0IHNldHMgdGhlIGVycm9yIGNvZGUg
aWYgdGhlcmUgaXMgYW4gZXJyb3IKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUVTM1RleEltYWdlUGFy
YW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgZmFsc2UsIGZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAs
IHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRXh0ZW50
cyBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAgICAgRXJyb3IgZXJyb3Ig
PSB0ZXh0dXJlLT5zZXRJbWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSwg
Zm9ybWF0LCB0eXBlLCBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFVucGFja1N0YXRlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90ICo+KHBpeGVscykpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+dGV4SW1hZ2UzRCh0YXJn
ZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwg
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7CiAgICAg
fQogfQogCkBAIC0xMjksMzUgKzEwNiwxNSBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVRleFN1YkltYWdlM0Qo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgs
IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIC8vIHZhbGlkYXRlRVMzVGV4SW1hZ2VGb3JtYXQgc2V0cyB0
aGUgZXJyb3IgY29kZSBpZiB0aGVyZSBpcyBhbiBlcnJvcgotICAgICAgICBpZiAoIVZhbGlkYXRl
RVMzVGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIEdMX05PTkUsIGZh
bHNlLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhv
ZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCAwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gWmVybyBzaXplZCB1cGxvYWRzIGFyZSB2YWxpZCBidXQgbm8tb3BzCi0gICAgICAgIGlmICh3
aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwIHx8IGRlcHRoID09IDApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEJveCBhcmVhKHhvZmZzZXQsIHlv
ZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKLSAgICAgICAgVGV4dHVyZSAq
dGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAgICAgRXJy
b3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3Jt
YXQsIHR5cGUsIGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0VW5wYWNrU3RhdGUoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QgKj4ocGl4ZWxzKSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT50ZXhTdWJJbWFnZTNEKHRh
cmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRl
cHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKICAgICB9CiB9CiAKQEAgLTE3MCwyOSArMTI3LDE0IEBACiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlQ29weVRl
eFN1YkltYWdlM0QoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwgeCwgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUVTM0NvcHlUZXhJbWFnZVBhcmFtZXRlcnMoY29u
dGV4dCwgdGFyZ2V0LCBsZXZlbCwgR0xfTk9ORSwgdHJ1ZSwgeG9mZnNldCwgeW9mZnNldCwgem9m
ZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwg
eSwgd2lkdGgsIGhlaWdodCwgMCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIE9mZnNldCBkZXN0T2Zmc2V0KHhvZmZzZXQsIHlvZmZzZXQsIHpv
ZmZzZXQpOwotICAgICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0
KTsKLQotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5n
ZXRTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgICAgICBUZXh0dXJlICp0ZXh0dXJl
ID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwotICAgICAgICBFcnJvciBlcnJv
ciA9IHRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBkZXN0T2Zmc2V0LCBzb3Vy
Y2VBcmVhLCBmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5jb3B5VGV4U3ViSW1hZ2Uz
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTIwNiwzNSArMTQ4LDE1IEBACiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRl
Q29tcHJlc3NlZFRleEltYWdlM0QoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXB0aCwgYm9yZGVyLCBpbWFnZVNpemUsIGRhdGEpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgSW50ZXJuYWxG
b3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxmb3JtYXQp
OwotICAgICAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGltYWdl
U2l6ZSkgIT0gZm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXplKEdMX1VOU0lHTkVEX0JZVEUsIHdp
ZHRoLCBoZWlnaHQpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyB2YWxpZGF0ZUVTM1RleEltYWdlRm9ybWF0IHNldHMgdGhlIGVycm9y
IGNvZGUgaWYgdGhlcmUgaXMgYW4gZXJyb3IKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUVTM1RleElt
YWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgdHJ1
ZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgR0xfTk9ORSwgR0xfTk9ORSwgZGF0
YSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7Ci0gICAgICAgIFRleHR1cmUgKnRl
eHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgICAgIEVycm9y
IGVycm9yID0gdGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCBzaXplLCBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFVucGFja1N0YXRlKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9y
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5jb21w
cmVzc2VkVGV4SW1hZ2UzRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgZGVwdGgsIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW1hZ2VTaXplLCBkYXRhKTsKICAgICB9CiB9CiAKQEAgLTI0OCw0NyArMTcwLDE1IEBACiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8
IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAg
ICAgIVZhbGlkYXRlQ29tcHJlc3NlZFRleFN1YkltYWdlM0QoY29udGV4dCwgdGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6
ZSwgZGF0YSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IEdldEludGVy
bmFsRm9ybWF0SW5mbyhmb3JtYXQpOwotICAgICAgICBpZiAoaW1hZ2VTaXplIDwgMCB8fCBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkgIT0gZm9ybWF0SW5mby5jb21wdXRlQmxvY2tTaXpl
KEdMX1VOU0lHTkVEX0JZVEUsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHZhbGlkYXRl
RVMzVGV4SW1hZ2VGb3JtYXQgc2V0cyB0aGUgZXJyb3IgY29kZSBpZiB0aGVyZSBpcyBhbiBlcnJv
cgotICAgICAgICBpZiAoIVZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzKGNvbnRleHQsIHRh
cmdldCwgbGV2ZWwsIEdMX05PTkUsIHRydWUsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIDAsIEdM
X05PTkUsIEdMX05PTkUsIGRhdGEpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBaZXJvIHNpemVkIHVwbG9hZHMgYXJlIHZhbGlkIGJ1dCBu
by1vcHMKLSAgICAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEJveCBhcmVhKHhvZmZz
ZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKLSAgICAgICAgVGV4
dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAg
ICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1hZ2UodGFyZ2V0LCBs
ZXZlbCwgYXJlYSwgZm9ybWF0LCBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldFVucGFja1N0YXRlKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSk7Ci0gICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0
LT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0
LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXB0aCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpOwogICAgIH0KIH0KIApA
QCAtMjk5LDE4ICsxODksMTEgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmICFWYWxpZGF0ZUdlblF1ZXJpZXMoY29udGV4dCwgbiwgaWRzKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChuIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
ICAgICAgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZHNbaV0gPSBjb250ZXh0LT5jcmVhdGVRdWVyeSgpOwpAQCAtMzI1LDIwICsyMDgs
MTMgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFW
YWxpZGF0ZURlbGV0ZVF1ZXJpZXMoY29udGV4dCwgbiwgaWRzKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuIDwgMCkKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8
IG47IGkrKykKLSAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUXVlcnkoaWRz
W2ldKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM3MCwxMiArMjQ2LDYgQEAKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAgICAgIGlm
ICghVmFsaWRhdGVCZWdpblF1ZXJ5KGNvbnRleHQsIHRhcmdldCwgaWQpKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zOTcsMTIgKzI2Nyw2IEBACiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoIVZh
bGlkYXRlRW5kUXVlcnkoY29udGV4dCwgdGFyZ2V0KSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNDI0LDI4ICsyODgsMTIgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFWYWxpZGF0
ZUdldFF1ZXJ5aXYoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFs
aWRRdWVyeVR5cGUoY29udGV4dCwgdGFyZ2V0KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0g
ICAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1FVRVJZOgotICAgICAgICAgICAgcGFyYW1zWzBdID0g
c3RhdGljX2Nhc3Q8R0xpbnQ+KGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0QWN0aXZlUXVlcnlJZCh0
YXJnZXQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdldFF1ZXJ5aXYo
dGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTQ1Niw1NCArMzA0LDE3IEBA
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IDMpCisgICAgICAgIGlmICghVmFsaWRhdGVHZXRRdWVyeU9iamVjdHVpdihjb250ZXh0LCBp
ZCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRR
dWVyeShpZCwgZmFsc2UsIEdMX05PTkUpOwotCi0gICAgICAgIGlmICghcXVlcnlPYmplY3QpCisg
ICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+Z2V0UXVlcnlPYmplY3R1aXYoaWQsIHBuYW1l
LCBwYXJhbXMpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0
QWN0aXZlUXVlcnlJZChxdWVyeU9iamVjdC0+Z2V0VHlwZSgpKSA9PSBpZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaChw
bmFtZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0VYVDoKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFcnJvciBlcnJvciA9IHF1ZXJ5T2JqZWN0LT5n
ZXRSZXN1bHQocGFyYW1zKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJy
b3IoZXJyb3IpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdM
X1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEVycm9yIGVycm9yID0gcXVlcnlPYmplY3QtPmlzUmVzdWx0QXZhaWxhYmxlKHBhcmFtcyk7
Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNv
bnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CiAgICAgfQogfQogCkBAIC01MTQsMTMgKzMyNSwxMiBAQAogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAz
KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5t
YXBCdWZmZXIoY29udGV4dCwgdGFyZ2V0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAg
IHJldHVybiBHTF9GQUxTRTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBVbm1hcEJ1ZmZl
ck9FUyh0YXJnZXQpOworICAgICAgICByZXR1cm4gY29udGV4dC0+dW5tYXBCdWZmZXIodGFyZ2V0
KTsKICAgICB9CiAKICAgICByZXR1cm4gR0xfRkFMU0U7CkBAIC01MzMsMTMgKzM0MywxMyBAQAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
PCAzKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAg
ICAgICFWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2KGNvbnRleHQsIHRhcmdldCwgcG5hbWUsIHBh
cmFtcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBHZXRCdWZmZXJQb2ludGVydk9FUyh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwor
ICAgICAgICBjb250ZXh0LT5nZXRCdWZmZXJQb2ludGVydih0YXJnZXQsIHBuYW1lLCBwYXJhbXMp
OwogICAgIH0KIH0KIApAQCAtNTQ4LDEzICszNTgsMTIgQEAKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZURyYXdCdWZmZXJzKGNvbnRleHQs
IG4sIGJ1ZnMpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgRHJhd0J1ZmZlcnNFWFQobiwgYnVmcyk7CisgICAgICAgIGNvbnRleHQt
PmRyYXdCdWZmZXJzKG4sIGJ1ZnMpOwogICAgIH0KIH0KIApAQCAtNjc1LDM0ICs0ODQsMTUgQEAK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAg
ICAgICAhVmFsaWRhdGVCbGl0RnJhbWVidWZmZXIoY29udGV4dCwgc3JjWDAsIHNyY1kwLCBzcmNY
MSwgc3JjWTEsIGRzdFgwLCBkc3RZMCwgZHN0WDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHN0WTEsIG1hc2ssIGZpbHRlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVZhbGlkYXRlQmxpdEZy
YW1lYnVmZmVyUGFyYW1ldGVycyhjb250ZXh0LCBzcmNYMCwgc3JjWTAsIHNyY1gxLCBzcmNZMSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0WDAsIGRz
dFkwLCBkc3RYMSwgZHN0WTEsIG1hc2ssIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBGcmFtZWJ1ZmZlciAqcmVhZEZyYW1lYnVmZmVy
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICAgICAgQVNT
RVJUKHJlYWRGcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgRnJhbWVidWZmZXIgKmRyYXdGcmFtZWJ1
ZmZlciA9IGNvbnRleHQtPmdldFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgICAg
IEFTU0VSVChkcmF3RnJhbWVidWZmZXIpOwotCi0gICAgICAgIFJlY3RhbmdsZSBzcmNBcmVhKHNy
Y1gwLCBzcmNZMCwgc3JjWDEgLSBzcmNYMCwgc3JjWTEgLSBzcmNZMCk7Ci0gICAgICAgIFJlY3Rh
bmdsZSBkc3RBcmVhKGRzdFgwLCBkc3RZMCwgZHN0WDEgLSBkc3RYMCwgZHN0WTEgLSBkc3RZMCk7
Ci0KLSAgICAgICAgRXJyb3IgZXJyb3IgPSBkcmF3RnJhbWVidWZmZXItPmJsaXQoY29udGV4dC0+
Z2V0U3RhdGUoKSwgc3JjQXJlYSwgZHN0QXJlYSwgbWFzaywgZmlsdGVyLCByZWFkRnJhbWVidWZm
ZXIpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KKyAgICAgICAgY29udGV4dC0+YmxpdEZyYW1lYnVmZmVyKHNyY1gwLCBzcmNZMCwgc3Jj
WDEsIHNyY1kxLCBkc3RYMCwgZHN0WTAsIGRzdFgxLCBkc3RZMSwgbWFzaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcik7CiAgICAgfQogfQogCkBAIC03MzgsMzcgKzUy
OCwxMyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVGcmFtZWJ1ZmZl
clRleHR1cmVMYXllcihjb250ZXh0LCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHR1cmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCwgbGF5ZXIpKQor
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFW
YWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKGNvbnRleHQsIHRhcmdldCwgYXR0YWNobWVu
dCwgdGV4dHVyZSwgbGV2ZWwsIGxheWVyKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4
dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwotICAgICAgICBBU1NF
UlQoZnJhbWVidWZmZXIpOwotCi0gICAgICAgIGlmICh0ZXh0dXJlICE9IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUZXh0dXJl
KHRleHR1cmUpOwotCi0gICAgICAgICAgICBJbWFnZUluZGV4IGluZGV4ID0gSW1hZ2VJbmRleDo6
TWFrZUludmFsaWQoKTsKLQotICAgICAgICAgICAgaWYgKHRleHR1cmVPYmplY3QtPmdldFRhcmdl
dCgpID09IEdMX1RFWFRVUkVfM0QpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5k
ZXggPSBJbWFnZUluZGV4OjpNYWtlM0QobGV2ZWwsIGxheWVyKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQodGV4
dHVyZU9iamVjdC0+Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSk7Ci0gICAgICAg
ICAgICAgICAgaW5kZXggPSBJbWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgbGF5ZXIpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChH
TF9URVhUVVJFLCBhdHRhY2htZW50LCBpbmRleCwgdGV4dHVyZU9iamVjdCk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmFtZWJ1ZmZlci0+cmVzZXRB
dHRhY2htZW50KGF0dGFjaG1lbnQpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dHVyZSwgbGV2ZWwsIGxh
eWVyKTsKICAgICB9CiB9CiAKQEAgLTc4MCwxNiArNTQ2LDE2IEBACiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlTWFw
QnVmZmVyUmFuZ2UoY29udGV4dCwgdGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gTWFwQnVmZmVyUmFuZ2VF
WFQodGFyZ2V0LCBvZmZzZXQsIGxlbmd0aCwgYWNjZXNzKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQtPm1hcEJ1ZmZlclJhbmdlKHRhcmdldCwgb2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CiAgICAg
fQogCi0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgR0xf
QVBJRU5UUlkgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBv
ZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoKQpAQCAtNzk5LDEzICs1NjUsMTMgQEAKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFs
aWRhdGVGbHVzaE1hcHBlZEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldCwgb2Zmc2V0LCBsZW5n
dGgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgRmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCh0YXJnZXQsIG9mZnNldCwgbGVuZ3Ro
KTsKKyAgICAgICAgY29udGV4dC0+Zmx1c2hNYXBwZWRCdWZmZXJSYW5nZSh0YXJnZXQsIG9mZnNl
dCwgbGVuZ3RoKTsKICAgICB9CiB9CiAKQEAgLTgxNiwyMiArNTgyLDExIEBACiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAg
ICAgIGlmICghVmFsaWRhdGVCaW5kVmVydGV4QXJyYXkoY29udGV4dCwgYXJyYXkpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVmVy
dGV4QXJyYXkgKnZhbyA9IGNvbnRleHQtPmdldFZlcnRleEFycmF5KGFycmF5KTsKLQotICAgICAg
ICBpZiAoIXZhbykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVGhlIGRlZmF1bHQgVkFPIHNo
b3VsZCBhbHdheXMgZXhpc3QKLSAgICAgICAgICAgIEFTU0VSVChhcnJheSAhPSAwKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBjb250ZXh0LT5iaW5k
VmVydGV4QXJyYXkoYXJyYXkpOwogICAgIH0KIH0KQEAgLTg0MywxOCArNTk4LDExIEBACiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEZWxl
dGVWZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuIDwgMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgZm9yIChp
bnQgYXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXggPCBuOyBhcnJheUluZGV4KyspCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChhcnJheXNbYXJyYXlJbmRleF0gIT0gMCkKQEAgLTg3MiwxOCAr
NjIwLDExIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVHZW5WZXJ0ZXhBcnJheXMoY29udGV4dCwgbiwgYXJyYXlzKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChu
IDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAg
ICAgICAgZm9yIChpbnQgYXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXggPCBuOyBhcnJheUluZGV4
KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGFycmF5c1thcnJheUluZGV4XSA9IGNvbnRleHQt
PmNyZWF0ZVZlcnRleEFycmF5KCk7CkBAIC04OTgsOSArNjM5LDggQEAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAg
aWYgKCFWYWxpZGF0ZUlzVmVydGV4QXJyYXkoY29udGV4dCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgICAgIH0KIApAQCAtMTAwNSw0MSArNzQ1
LDEyIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVCZWdpblRyYW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIHByaW1pdGl2ZU1vZGUpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3dpdGNoIChwcmltaXRpdmVNb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9U
UklBTkdMRVM6Ci0gICAgICAgICAgY2FzZSBHTF9MSU5FUzoKLSAgICAgICAgICBjYXNlIEdMX1BP
SU5UUzoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2sgKnRy
YW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3Jt
RmVlZGJhY2soKTsKLSAgICAgICAgQVNTRVJUKHRyYW5zZm9ybUZlZWRiYWNrICE9IE5VTEwpOwot
Ci0gICAgICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0cmFu
c2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgdHJhbnNm
b3JtRmVlZGJhY2stPnJlc3VtZSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2stPmJlZ2luKHByaW1pdGl2ZU1vZGUpOwot
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0
aXZlTW9kZSk7CiAgICAgfQogfQogCkBAIC0xMjU4LDE0ICs5NjksMTIgQEAKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRQcm9ncmFtKGNvbnRleHQs
IHByb2dyYW0pKQorICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9n
cmFtKGNvbnRleHQsIHByb2dyYW0pOworICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBB
U1NFUlQocHJvZ3JhbU9iamVjdCk7Ci0KICAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyhjb3VudCwgdmFyeWluZ3MsIGJ1ZmZlck1vZGUpOwogICAgIH0K
IH0KQEAgLTEyOTEsMTQgKzEwMDAsMTIgQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghVmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pKQorICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dy
YW0pOworICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVj
dCk7Ci0KICAgICAgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbU9i
amVjdC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nQ291bnQoKSkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
QEAgLTE3MTQsNDMgKzE0MjEsMTMgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZh
bGlkYXRlQ2xlYXJCdWZmZXIoY29udGV4dCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlQ2xlYXJCdWZmZXJpdihjb250ZXh0
LCBidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoIChidWZmZXIpCi0gICAgICAgIHsKLSAg
ICAgICAgICBjYXNlIEdMX0NPTE9SOgotICAgICAgICAgICAgaWYgKGRyYXdidWZmZXIgPCAwIHx8
IHN0YXRpY19jYXN0PEdMdWludD4oZHJhd2J1ZmZlcikgPj0gY29udGV4dC0+Z2V0Q2FwcygpLm1h
eERyYXdCdWZmZXJzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
Y29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGNhc2Ug
R0xfU1RFTkNJTDoKLSAgICAgICAgICAgIGlmIChkcmF3YnVmZmVyICE9IDApCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQt
PnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0g
Y29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICAgICAgQVNTRVJU
KGZyYW1lYnVmZmVyT2JqZWN0KTsKLQotICAgICAgICBFcnJvciBlcnJvciA9IGZyYW1lYnVmZmVy
T2JqZWN0LT5jbGVhckJ1ZmZlcml2KGNvbnRleHQtPmdldFN0YXRlKCksIGJ1ZmZlciwgZHJhd2J1
ZmZlciwgdmFsdWUpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRy
YXdidWZmZXIsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTE3NjIsMzUgKzE0MzksMTMgQEAKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlQ2xlYXJCdWZmZXIoY29udGV4dCkp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAg
IVZhbGlkYXRlQ2xlYXJCdWZmZXJ1aXYoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1
ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHN3aXRjaCAoYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9DT0xPUjoKLSAg
ICAgICAgICAgIGlmIChkcmF3YnVmZmVyIDwgMCB8fCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGRyYXdi
dWZmZXIpID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3QnVmZmVycykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+
cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBj
b250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgICAgICBBU1NFUlQo
ZnJhbWVidWZmZXJPYmplY3QpOwotCi0gICAgICAgIEVycm9yIGVycm9yID0gZnJhbWVidWZmZXJP
YmplY3QtPmNsZWFyQnVmZmVydWl2KGNvbnRleHQtPmdldFN0YXRlKCksIGJ1ZmZlciwgZHJhd2J1
ZmZlciwgdmFsdWUpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBk
cmF3YnVmZmVyLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0xODAyLDQzICsxNDU3LDEzIEBACiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnRleHQp
KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAg
ICFWYWxpZGF0ZUNsZWFyQnVmZmVyZnYoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1
ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHN3aXRjaCAoYnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9DT0xPUjoKLSAg
ICAgICAgICAgIGlmIChkcmF3YnVmZmVyIDwgMCB8fCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGRyYXdi
dWZmZXIpID49IGNvbnRleHQtPmdldENhcHMoKS5tYXhEcmF3QnVmZmVycykKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX0RFUFRIOgotICAgICAgICAgICAgaWYg
KGRyYXdidWZmZXIgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBjb250ZXh0LT5nZXRTdGF0ZSgpLmdldERyYXdG
cmFtZWJ1ZmZlcigpOwotICAgICAgICBBU1NFUlQoZnJhbWVidWZmZXJPYmplY3QpOwotCi0gICAg
ICAgIEVycm9yIGVycm9yID0gZnJhbWVidWZmZXJPYmplY3QtPmNsZWFyQnVmZmVyZnYoY29udGV4
dC0+Z2V0U3RhdGUoKSwgYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVy
cm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250
ZXh0LT5jbGVhckJ1ZmZlcmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWUpOwogICAgIH0KIH0K
IApAQCAtMTg1MCwzNSArMTQ3NSwxMyBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICgh
VmFsaWRhdGVDbGVhckJ1ZmZlcihjb250ZXh0KSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVDbGVhckJ1ZmZlcmZpKGNvbnRl
eHQsIGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKGJ1ZmZlcikKLSAg
ICAgICAgewotICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTDoKLSAgICAgICAgICAgIGlm
IChkcmF3YnVmZmVyICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXREcmF3
RnJhbWVidWZmZXIoKTsKLSAgICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyT2JqZWN0KTsKLQotICAg
ICAgICBFcnJvciBlcnJvciA9IGZyYW1lYnVmZmVyT2JqZWN0LT5jbGVhckJ1ZmZlcmZpKGNvbnRl
eHQtPmdldFN0YXRlKCksIGJ1ZmZlciwgZHJhd2J1ZmZlciwgZGVwdGgsIHN0ZW5jaWwpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5yZWNvcmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAg
ICAgICAgY29udGV4dC0+Y2xlYXJCdWZmZXJmaShidWZmZXIsIGRyYXdidWZmZXIsIGRlcHRoLCBz
dGVuY2lsKTsKICAgICB9CiB9CiAKQEAgLTE5OTYsMjAgKzE1OTksMTEgQEAKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2Jq
ZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogCiAgICAgICAgIGlmICgh
cHJvZ3JhbU9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNo
YWRlcihwcm9ncmFtKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5y
ZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZB
TFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5pc0xp
bmtlZCgpKQpAQCAtMjA0OSwyMCArMTY0MywxMSBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxp
ZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dyYW0p
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKHBuYW1lKQpAQCAtMjEyMCwyMCArMTcwNSwxMCBA
QAogICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7CiAgICAgICAgIH0KIAotICAg
ICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKLQorICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNv
bnRleHQsIHByb2dyYW0pOwogICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBwcm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtQmxvY2tJbmRleCh1bmlmb3JtQmxvY2tO
YW1lKTsKQEAgLTIxNTUsMjAgKzE3MzAsMTEgQEAKICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdl
dFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRW
YWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CiAKICAgICAgICAgaWYgKCFwcm9ncmFtT2Jq
ZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyKHByb2dy
YW0pKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodW5pZm9ybUJsb2NrSW5kZXggPj0gcHJvZ3JhbU9i
amVjdC0+Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKSkKQEAgLTIyMTMsMjAgKzE3NzksMTEg
QEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnBy
b2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBQcm9n
cmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwog
CiAgICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRlcihwcm9ncmFtKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHVuaWZv
cm1CbG9ja0luZGV4ID49IHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50
KCkpCkBAIC0yMjU5LDIwICsxODE2LDExIEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJv
Z3JhbShjb250ZXh0LCBwcm9ncmFtKTsKIAogICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIGlmIG5ldmVyIGxpbmtlZCwgdGhlcmUgd29uJ3QgYmUgYW55IHVu
aWZvcm0gYmxvY2tzCkBAIC0yMzA1LDcgKzE4NTMsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5kcmF3QXJyYXlzKG1v
ZGUsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3VudCk7CisgICAgICAgIEVycm9yIGVycm9yID0g
Y29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNl
Q291bnQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAg
ICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CkBAIC0yMzI4LDEzICsxODc2LDE0IEBA
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICByeDo6UmFuZ2VVSSBp
bmRleFJhbmdlOworICAgICAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2U7CiAgICAgICAgIGlmICgh
VmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWQoY29udGV4dCwgbW9kZSwgY291bnQsIHR5cGUs
IGluZGljZXMsIGluc3RhbmNlQ291bnQsICZpbmRleFJhbmdlKSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0
LT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlQ291bnQs
IGluZGV4UmFuZ2UpOworICAgICAgICBFcnJvciBlcnJvciA9CisgICAgICAgICAgICBjb250ZXh0
LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3Rh
bmNlQ291bnQsIGluZGV4UmFuZ2UpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CkBAIC0yNzM4
LDE4ICsyMjg3LDExIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSAmJiAhVmFsaWRhdGVHZW5TYW1wbGVycyhjb250ZXh0LCBjb3VudCwgc2FtcGxlcnMpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGNvdW50IDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3Jk
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgICAg
ICB7CiAgICAgICAgICAgICBzYW1wbGVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVNhbXBsZXIoKTsK
QEAgLTI3NjQsMTggKzIzMDYsMTEgQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZURlbGV0ZVNhbXBsZXJzKGNvbnRleHQsIGNvdW50LCBz
YW1wbGVycykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoY291bnQgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNhbXBsZXIoc2FtcGxl
cnNbaV0pOwpAQCAtMjgzOCwyOCArMjM3MywxMiBAQAogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVNhbXBsZXJQYXJh
bWV0ZXJpKGNvbnRleHQsIHNhbXBsZXIsIHBuYW1lLCBwYXJhbSkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIVZhbGlkYXRl
U2FtcGxlck9iamVjdFBhcmFtZXRlcihjb250ZXh0LCBwbmFtZSkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghVmFsaWRhdGVUZXhQYXJh
bVBhcmFtZXRlcnMoY29udGV4dCwgcG5hbWUsIHBhcmFtKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFjb250ZXh0LT5pc1NhbXBsZXIo
c2FtcGxlcikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQogICAgICAgICBjb250ZXh0LT5zYW1wbGVyUGFyYW1ldGVyaShzYW1wbGVyLCBwbmFtZSwg
cGFyYW0pOwogICAgIH0KIH0KQEAgLTI4NzYsMjggKzIzOTUsMTIgQEAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVT
YW1wbGVyUGFyYW1ldGVyZihjb250ZXh0LCBzYW1wbGVyLCBwbmFtZSwgcGFyYW0pKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCFWYWxpZGF0ZVNhbXBsZXJPYmplY3RQYXJhbWV0ZXIoY29udGV4dCwgcG5hbWUpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIVZhbGlk
YXRlVGV4UGFyYW1QYXJhbWV0ZXJzKGNvbnRleHQsIHBuYW1lLCBzdGF0aWNfY2FzdDxHTGludD4o
cGFyYW0pKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5pc1NhbXBsZXIoc2FtcGxlcikpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBjb250ZXh0LT5zYW1w
bGVyUGFyYW1ldGVyZihzYW1wbGVyLCBwbmFtZSwgcGFyYW0pOwogICAgIH0KIH0KQEAgLTMwMTIs
OSArMjUxNSwxMSBAQAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIENh
bm5vdCBiaW5kIGEgdHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdCB0aGF0IGRvZXMgbm90IGV4aXN0
ICgzLjAuMiBwZyA4NSBzZWN0aW9uIDIuMTQuMSkKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4
dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2soaWQpID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYg
KCFjb250ZXh0LT5pc1RyYW5zZm9ybUZlZWRiYWNrR2VuZXJhdGVkKGlkKSkKICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29y
ZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGJpbmQgYSB0cmFuc2Zv
cm0gZmVlZGJhY2sgb2JqZWN0IHRoYXQgZG9lcyBub3QgZXhpc3QuIikpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCkBAIC0zMDM2LDkgKzI1NDEsOCBA
QAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCAzKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlk
YXRlRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKGNvbnRleHQsIG4sIGlkcykpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzA1Niw5ICsyNTYw
LDggQEAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgMykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFW
YWxpZGF0ZUdlblRyYW5zZm9ybUZlZWRiYWNrcyhjb250ZXh0LCBuLCBpZHMpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMwODIsNyArMjU4
NSwxNSBAQAogICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CiAKLSAgICAg
ICAgcmV0dXJuICgoY29udGV4dC0+Z2V0VHJhbnNmb3JtRmVlZGJhY2soaWQpICE9IE5VTEwpID8g
R0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICAgICAgaWYgKGlkID09IDApCisgICAgICAgIHsKKyAg
ICAgICAgICAgIC8vIFRoZSAzLjAuNCBzcGVjIFtzZWN0aW9uIDYuMS4xMV0gc3RhdGVzIHRoYXQg
aWYgSUQgaXMgemVybywgSXNUcmFuc2Zvcm1GZWVkYmFjaworICAgICAgICAgICAgLy8gcmV0dXJu
cyBGQUxTRQorICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOworICAgICAgICB9CisKKyAgICAg
ICAgY29uc3QgVHJhbnNmb3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gY29udGV4dC0+
Z2V0VHJhbnNmb3JtRmVlZGJhY2soaWQpOworICAgICAgICByZXR1cm4gKCh0cmFuc2Zvcm1GZWVk
YmFjayAhPSBudWxscHRyKSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIEdMX0ZBTFNFOwpAQCAtMzE1MCwxNCArMjY2MSwyMCBAQAogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAo
IVZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeShjb250ZXh0LCBwcm9ncmFtLCBidWZTaXplLCBsZW5n
dGgsIGJpbmFyeUZvcm1hdCwgYmluYXJ5KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIFRPRE86IFBpcGUgdGhyb3VnaCB0byB0
aGUgT0VTIGV4dGVuc2lvbiBmb3Igbm93LCBuZWVkcyBwcm9wZXIgdmFsaWRhdGlvbgotICAgICAg
ICByZXR1cm4gR2V0UHJvZ3JhbUJpbmFyeU9FUyhwcm9ncmFtLCBidWZTaXplLCBsZW5ndGgsIGJp
bmFyeUZvcm1hdCwgYmluYXJ5KTsKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNv
bnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0
ICE9IG51bGxwdHIpOworCisgICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVjdC0+c2F2
ZUJpbmFyeShiaW5hcnlGb3JtYXQsIGJpbmFyeSwgYnVmU2l6ZSwgbGVuZ3RoKTsKKyAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+cmVj
b3JkRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQog
fQogCkBAIC0zMTY5LDE0ICsyNjg2LDIwIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghVmFsaWRhdGVQ
cm9ncmFtQmluYXJ5KGNvbnRleHQsIHByb2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5n
dGgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gVE9ETzogUGlwZSB0aHJvdWdoIHRvIHRoZSBPRVMgZXh0ZW5zaW9uIGZvciBu
b3csIG5lZWRzIHByb3BlciB2YWxpZGF0aW9uCi0gICAgICAgIHJldHVybiBQcm9ncmFtQmluYXJ5
T0VTKHByb2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpOworICAgICAgICBQcm9n
cmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAg
ICAgQVNTRVJUKHByb2dyYW1PYmplY3QgIT0gbnVsbHB0cik7CisKKyAgICAgICAgRXJyb3IgZXJy
b3IgPSBwcm9ncmFtT2JqZWN0LT5sb2FkQmluYXJ5KGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5n
dGgpOworICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5yZWNvcmRFcnJvcihlcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KICAgICB9CiB9CiAKQEAgLTMxODgsMTQgKzI3MTEsMTMgQEAKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgMykKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVQ
cm9ncmFtUGFyYW1ldGVyaShjb250ZXh0LCBwcm9ncmFtLCBwbmFtZSwgdmFsdWUpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5yZWNvcmRFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
Z2xQcm9ncmFtUGFyYW1ldGVyaQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIGNv
bnRleHQtPnByb2dyYW1QYXJhbWV0ZXJpKHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CiAgICAgfQog
fQogCkBAIC0zMjA3LDI5ICsyNzI5LDEzIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlSW52YWxpZGF0ZUZyYW1l
YnVmZmVyKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICghVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXJQYXJhbWV0ZXJzKGNvbnRleHQsIHRh
cmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
ID0gY29udGV4dC0+Z2V0U3RhdGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwotICAg
ICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwotCi0gICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hl
Y2tTdGF0dXMoY29udGV4dC0+Z2V0RGF0YSgpKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkK
LSAgICAgICAgewotICAgICAgICAgICAgRXJyb3IgZXJyb3IgPSBmcmFtZWJ1ZmZlci0+aW52YWxp
ZGF0ZShudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOwotICAgICAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZWNv
cmRFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcih0YXJnZXQs
IG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7CiAgICAgfQogfQogCkBAIC0zMjQyLDMwICsy
NzQ4LDEzIEBACiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JgorICAgICAgICAgICAgIVZhbGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKGNvbnRleHQsIHRh
cmdldCwgbnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3JkRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRhdGVJbnZh
bGlkYXRlRnJhbWVidWZmZXJQYXJhbWV0ZXJzKGNvbnRleHQsIHRhcmdldCwgbnVtQXR0YWNobWVu
dHMsIGF0dGFjaG1lbnRzKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0U3Rh
dGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOwotICAgICAgICBBU1NFUlQoZnJhbWVi
dWZmZXIpOwotCi0gICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+
Z2V0RGF0YSgpKSA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKLSAgICAgICAgewotICAgICAg
ICAgICAgUmVjdGFuZ2xlIGFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAgICBF
cnJvciBlcnJvciA9IGZyYW1lYnVmZmVyLT5pbnZhbGlkYXRlU3ViKG51bUF0dGFjaG1lbnRzLCBh
dHRhY2htZW50cywgYXJlYSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlY29yZEVycm9yKGVycm9yKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAg
ICAgY29udGV4dC0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKHRhcmdldCwgbnVtQXR0YWNobWVu
dHMsIGF0dGFjaG1lbnRzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTMy
ODMsNyArMjc3Miw4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoIVZhbGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBs
ZXZlbHMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAxKSkKKyAgICAgICAgaWYgKCFW
YWxpZGF0ZUVTM1RleFN0b3JhZ2UyRFBhcmFtZXRlcnMoY29udGV4dCwgdGFyZ2V0LCBsZXZlbHMs
IGludGVybmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0LCAxKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0zMzE0LDcgKzI4MDQsOCBAQAogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJz
KGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwg
ZGVwdGgpKQorICAgICAgICBpZiAoIVZhbGlkYXRlRVMzVGV4U3RvcmFnZTNEUGFyYW1ldGVycyhj
b250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQsIGRlcHRoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMzY5LDcgKzI4NjAs
NyBAQAogICAgICAgICAgIGNhc2UgR0xfTlVNX1NBTVBMRV9DT1VOVFM6CiAgICAgICAgICAgICBp
ZiAoYnVmU2l6ZSAhPSAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICpwYXJhbXMg
PSBmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgKnBhcmFt
cyA9IHN0YXRpY19jYXN0PEdMaW50Pihmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5zaXplKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKSW5kZXg6IFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAJKHJl
dmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
Z2xvYmFsX3N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDYgQEAKICAgICBy
ZXR1cm4gY3VycmVudDsKIH0KIAotdm9pZCBEZWFsbG9jYXRlQ3VycmVudCgpCi17Ci0gICAgQ3Vy
cmVudCAqY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3VycmVudCo+KEdldFRMU1ZhbHVlKGN1
cnJlbnRUTFMpKTsKLSAgICBTYWZlRGVsZXRlKGN1cnJlbnQpOwotICAgIFNldFRMU1ZhbHVlKGN1
cnJlbnRUTFMsIE5VTEwpOwotfQotCiBDdXJyZW50ICpHZXRDdXJyZW50RGF0YSgpCiB7CiAgICAg
Ly8gQ3JlYXRlIGEgVExTIGluZGV4IGlmIG9uZSBoYXMgbm90IGJlZW4gY3JlYXRlZCBmb3IgdGhp
cyBETEwKQEAgLTc4LDYgKzcxLDE0IEBACiB9CiAKICNpZmRlZiBBTkdMRV9QTEFURk9STV9XSU5E
T1dTCisKK3ZvaWQgRGVhbGxvY2F0ZUN1cnJlbnQoKQoreworICAgIEN1cnJlbnQgKmN1cnJlbnQg
PSByZWludGVycHJldF9jYXN0PEN1cnJlbnQqPihHZXRUTFNWYWx1ZShjdXJyZW50VExTKSk7Cisg
ICAgU2FmZURlbGV0ZShjdXJyZW50KTsKKyAgICBTZXRUTFNWYWx1ZShjdXJyZW50VExTLCBOVUxM
KTsKK30KKwogZXh0ZXJuICJDIiBCT09MIFdJTkFQSSBEbGxNYWluKEhJTlNUQU5DRSwgRFdPUkQg
cmVhc29uLCBMUFZPSUQpCiB7CiAgICAgc3dpdGNoIChyZWFzb24pCkluZGV4OiBTb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xp
YkdMRVN2Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTksNyArOSw2IEBACiAjaW5jbHVkZSAibGli
R0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18yXzBfZXh0LmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL2VudHJ5X3BvaW50
c19nbGVzXzNfMC5oIgotI2luY2x1ZGUgImxpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBf
ZXh0LmgiCiAKICNpbmNsdWRlICJjb21tb24vZXZlbnRfdHJhY2VyLmgiCiAKQEAgLTEyNTYsNiAr
MTI1NSwxMSBAQAogICAgIHJldHVybiBnbDo6UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxl
QU5HTEUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9
CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xlbnVtIHRhcmdl
dCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKK3sK
KyAgICByZXR1cm4gZ2w6OkRpc2NhcmRGcmFtZWJ1ZmZlckVYVCh0YXJnZXQsIG51bUF0dGFjaG1l
bnRzLCBhdHRhY2htZW50cyk7Cit9CisKIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVGZW5jZXNO
VihHTHNpemVpIG4sIGNvbnN0IEdMdWludCogZmVuY2VzKQogewogICAgIHJldHVybiBnbDo6RGVs
ZXRlRmVuY2VzTlYobiwgZmVuY2VzKTsKQEAgLTEzNDYsMTYgKzEzNTAsMzYgQEAKICAgICByZXR1
cm4gZ2w6OkVuZFF1ZXJ5RVhUKHRhcmdldCk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xRdWVy
eUNvdW50ZXJFWFQoR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KQoreworICAgIHJldHVybiBnbDo6
UXVlcnlDb3VudGVyRVhUKGlkLCB0YXJnZXQpOworfQorCiB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0
UXVlcnlpdkVYVChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCiB7
CiAgICAgcmV0dXJuIGdsOjpHZXRRdWVyeWl2RVhUKHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiB9
CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdGl2RVhUKEdMdWludCBpZCwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIHJldHVybiBnbDo6R2V0UXVlcnlPYmpl
Y3RpdkVYVChpZCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRR
dWVyeU9iamVjdHVpdkVYVChHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMp
CiB7CiAgICAgcmV0dXJuIGdsOjpHZXRRdWVyeU9iamVjdHVpdkVYVChpZCwgcG5hbWUsIHBhcmFt
cyk7CiB9CiAKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQoR0x1aW50
IGlkLCBHTGVudW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2w6Okdl
dFF1ZXJ5T2JqZWN0aTY0dkVYVChpZCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBH
THVpbnQ2NCAqcGFyYW1zKQoreworICAgIHJldHVybiBnbDo6R2V0UXVlcnlPYmplY3R1aTY0dkVY
VChpZCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3QnVmZmVy
c0VYVChHTHNpemVpIG4sIGNvbnN0IEdMZW51bSAqYnVmcykKIHsKICAgICByZXR1cm4gZ2w6OkRy
YXdCdWZmZXJzRVhUKG4sIGJ1ZnMpOwpAQCAtMTQxMSw0ICsxNDM1LDEzMSBAQAogICAgIHJldHVy
biBnbDo6Rmx1c2hNYXBwZWRCdWZmZXJSYW5nZUVYVCh0YXJnZXQsIG9mZnNldCwgbGVuZ3RoKTsK
IH0KIAordm9pZCBHTF9BUElFTlRSWSBnbEluc2VydEV2ZW50TWFya2VyRVhUKEdMc2l6ZWkgbGVu
Z3RoLCBjb25zdCBjaGFyICptYXJrZXIpCit7CisgICAgcmV0dXJuIGdsOjpJbnNlcnRFdmVudE1h
cmtlckVYVChsZW5ndGgsIG1hcmtlcik7CiB9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xQdXNoR3Jv
dXBNYXJrZXJFWFQoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKK3sKKyAgICBy
ZXR1cm4gZ2w6OlB1c2hHcm91cE1hcmtlckVYVChsZW5ndGgsIG1hcmtlcik7Cit9CisKK3ZvaWQg
R0xfQVBJRU5UUlkgZ2xQb3BHcm91cE1hcmtlckVYVCgpCit7CisgICAgcmV0dXJuIGdsOjpQb3BH
cm91cE1hcmtlckVYVCgpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkRPRVMoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSkKK3sKKyAgICBy
ZXR1cm4gZ2w6OkVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKHRhcmdldCwgaW1hZ2UpOworfQor
Cit2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VT
KEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpCit7CisgICAgcmV0dXJuIGdsOjpF
R0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVModGFyZ2V0LCBpbWFnZSk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVmVydGV4QXJyYXlPRVMoR0x1aW50IGFycmF5KQorewor
ICAgIHJldHVybiBnbDo6QmluZFZlcnRleEFycmF5T0VTKGFycmF5KTsKK30KKwordm9pZCBHTF9B
UElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5c09FUyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAq
YXJyYXlzKQoreworICAgIHJldHVybiBnbDo6RGVsZXRlVmVydGV4QXJyYXlzT0VTKG4sIGFycmF5
cyk7Cit9CisKK3ZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5WZXJ0ZXhBcnJheXNPRVMoR0xzaXplaSBu
LCBHTHVpbnQgKmFycmF5cykKK3sKKyAgICByZXR1cm4gZ2w6OkdlblZlcnRleEFycmF5c09FUyhu
LCBhcnJheXMpOworfQorCitHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1ZlcnRleEFycmF5T0VT
KEdMdWludCBhcnJheSkKK3sKKyAgICByZXR1cm4gZ2w6OklzVmVydGV4QXJyYXlPRVMoYXJyYXkp
OworfQorCit2b2lkIEdMX0FQSUVOVFJZIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTGVudW0g
c291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
c2V2ZXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gZW5hYmxlZCkKK3sKKyAgICByZXR1cm4gZ2w6OkRlYnVnTWVzc2FnZUNvbnRy
b2xLSFIoc291cmNlLCB0eXBlLCBzZXZlcml0eSwgY291bnQsIGlkcywgZW5hYmxlZCk7Cit9CisK
K3ZvaWQgR0xfQVBJRU5UUlkgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xlbnVtIHNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpidWYp
Cit7CisgICAgcmV0dXJuIGdsOjpEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoc291cmNlLCB0eXBlLCBp
ZCwgc2V2ZXJpdHksIGxlbmd0aCwgYnVmKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbERlYnVn
TWVzc2FnZUNhbGxiYWNrS0hSKEdMREVCVUdQUk9DS0hSIGNhbGxiYWNrLCBjb25zdCB2b2lkICp1
c2VyUGFyYW0pCit7CisgICAgcmV0dXJuIGdsOjpEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihjYWxs
YmFjaywgdXNlclBhcmFtKTsKK30KKworR0x1aW50IEdMX0FQSUVOVFJZIGdsR2V0RGVidWdNZXNz
YWdlTG9nS0hSKEdMdWludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtICpzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpzZXZlcml0aWVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICptZXNzYWdlTG9nKQorewor
ICAgIHJldHVybiBnbDo6R2V0RGVidWdNZXNzYWdlTG9nS0hSKGNvdW50LCBidWZTaXplLCBzb3Vy
Y2VzLCB0eXBlcywgaWRzLCBzZXZlcml0aWVzLCBsZW5ndGhzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VMb2cpOworfQorCit2b2lkIEdMX0FQSUVOVFJZIGds
UHVzaERlYnVnR3JvdXBLSFIoR0xlbnVtIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICptZXNzYWdlKQoreworICAgIHJldHVybiBnbDo6UHVzaERlYnVnR3Jv
dXBLSFIoc291cmNlLCBpZCwgbGVuZ3RoLCBtZXNzYWdlKTsKK30KKwordm9pZCBHTF9BUElFTlRS
WSBnbFBvcERlYnVnR3JvdXBLSFIodm9pZCkKK3sKKyAgICByZXR1cm4gZ2w6OlBvcERlYnVnR3Jv
dXBLSFIoKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbE9iamVjdExhYmVsS0hSKEdMZW51bSBp
ZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbGFiZWwpCit7Cisg
ICAgcmV0dXJuIGdsOjpPYmplY3RMYWJlbEtIUihpZGVudGlmaWVyLCBuYW1lLCBsZW5ndGgsIGxh
YmVsKTsKK30KKwordm9pZCBHTF9BUElFTlRSWQorZ2xHZXRPYmplY3RMYWJlbEtIUihHTGVudW0g
aWRlbnRpZmllciwgR0x1aW50IG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTGNoYXIgKmxhYmVsKQoreworICAgIHJldHVybiBnbDo6R2V0T2JqZWN0TGFiZWxLSFIoaWRl
bnRpZmllciwgbmFtZSwgYnVmU2l6ZSwgbGVuZ3RoLCBsYWJlbCk7Cit9CisKK3ZvaWQgR0xfQVBJ
RU5UUlkgZ2xPYmplY3RQdHJMYWJlbEtIUihjb25zdCB2b2lkICpwdHIsIEdMc2l6ZWkgbGVuZ3Ro
LCBjb25zdCBHTGNoYXIgKmxhYmVsKQoreworICAgIHJldHVybiBnbDo6T2JqZWN0UHRyTGFiZWxL
SFIocHRyLCBsZW5ndGgsIGxhYmVsKTsKK30KKwordm9pZCBHTF9BUElFTlRSWSBnbEdldE9iamVj
dFB0ckxhYmVsS0hSKGNvbnN0IHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMY2hhciAqbGFiZWwpCit7CisgICAgcmV0dXJuIGdsOjpHZXRPYmpl
Y3RQdHJMYWJlbEtIUihwdHIsIGJ1ZlNpemUsIGxlbmd0aCwgbGFiZWwpOworfQorCit2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0UG9pbnRlcnZLSFIoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKQor
eworICAgIHJldHVybiBnbDo6R2V0UG9pbnRlcnZLSFIocG5hbWUsIHBhcmFtcyk7Cit9Cit9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJH
TEVTdjIuZGVmCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcs
MzEgQEAKICAgICBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTICAgICAgICAgIEAyODcKICAgICBnbE1h
cEJ1ZmZlclJhbmdlRVhUICAgICAgICAgICAgIEAyODgKICAgICBnbEZsdXNoTWFwcGVkQnVmZmVy
UmFuZ2VFWFQgICAgIEAyODkKKyAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCAgICAgICAgIEAy
OTMKKyAgICBnbEluc2VydEV2ZW50TWFya2VyRVhUICAgICAgICAgIEAyOTQKKyAgICBnbFB1c2hH
cm91cE1hcmtlckVYVCAgICAgICAgICAgIEAyOTUKKyAgICBnbFBvcEdyb3VwTWFya2VyRVhUICAg
ICAgICAgICAgIEAyOTYKKyAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTICAgIEAyOTcK
KyAgICBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyBAMjk4CisgICAgZ2xC
aW5kVmVydGV4QXJyYXlPRVMgICAgICAgICAgICBAMjk5CisgICAgZ2xEZWxldGVWZXJ0ZXhBcnJh
eXNPRVMgICAgICAgICBAMzAwCisgICAgZ2xHZW5WZXJ0ZXhBcnJheXNPRVMgICAgICAgICAgICBA
MzAxCisgICAgZ2xJc1ZlcnRleEFycmF5T0VTICAgICAgICAgICAgICBAMzAyCisgICAgZ2xEZWJ1
Z01lc3NhZ2VDb250cm9sS0hSICAgICAgICBAMzAzCisgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRL
SFIgICAgICAgICBAMzA0CisgICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUiAgICAgICBAMzA1
CisgICAgZ2xHZXREZWJ1Z01lc3NhZ2VMb2dLSFIgICAgICAgICBAMzA2CisgICAgZ2xQdXNoRGVi
dWdHcm91cEtIUiAgICAgICAgICAgICBAMzA3CisgICAgZ2xQb3BEZWJ1Z0dyb3VwS0hSICAgICAg
ICAgICAgICBAMzA4CisgICAgZ2xPYmplY3RMYWJlbEtIUiAgICAgICAgICAgICAgICBAMzA5Cisg
ICAgZ2xHZXRPYmplY3RMYWJlbEtIUiAgICAgICAgICAgICBAMzEwCisgICAgZ2xPYmplY3RQdHJM
YWJlbEtIUiAgICAgICAgICAgICBAMzExCisgICAgZ2xHZXRPYmplY3RQdHJMYWJlbEtIUiAgICAg
ICAgICBAMzEyCisgICAgZ2xHZXRQb2ludGVydktIUiAgICAgICAgICAgICAgICBAMzEzCisgICAg
Z2xRdWVyeUNvdW50ZXJFWFQgICAgICAgICAgICAgICBAMzE0CisgICAgZ2xHZXRRdWVyeU9iamVj
dGl2RVhUICAgICAgICAgICBAMzE1CisgICAgZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQgICAgICAg
ICBAMzE2CisgICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUICAgICAgICBAMzE3CiAKICAgICA7
IEdMRVMgMy4wIEZ1bmN0aW9ucwogICAgIGdsUmVhZEJ1ZmZlciAgICAgICAgICAgICAgICAgICAg
QDE4MApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVT
djIucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIucmMJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLnJjCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1
NCw4IEBACiAvLw0KIA0KIFZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTw0KLSBGSUxFVkVSU0lP
TiBBTkdMRV9NQUpPUl9WRVJTSU9OLEFOR0xFX01JTk9SX1ZFUlNJT04sMCwwDQotIFBST0RVQ1RW
RVJTSU9OIEFOR0xFX01BSk9SX1ZFUlNJT04sQU5HTEVfTUlOT1JfVkVSU0lPTiwwLDANCisgRklM
RVZFUlNJT04gQU5HTEVfTUFKT1JfVkVSU0lPTixBTkdMRV9NSU5PUl9WRVJTSU9OLEFOR0xFX1JF
VklTSU9OLDANCisgUFJPRFVDVFZFUlNJT04gQU5HTEVfTUFKT1JfVkVSU0lPTixBTkdMRV9NSU5P
Ul9WRVJTSU9OLEFOR0xFX1JFVklTSU9OLDANCiAgRklMRUZMQUdTTUFTSyAweDE3TA0KICNpZmRl
ZiBfREVCVUcNCiAgRklMRUZMQUdTIDB4MUwNCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi5neXBpCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUsOSArNSwx
MyBAQAogewogICAgICd2YXJpYWJsZXMnOgogICAgIHsKKyAgICAgICAgJ2FuZ2xlX3N0YW5kYWxv
bmUlJzogMCwKKwogICAgICAgICAjIFRoZXNlIGZpbGUgbGlzdHMgYXJlIHNoYXJlZCB3aXRoIHRo
ZSBHTiBidWlsZC4KICAgICAgICAgJ2xpYmFuZ2xlX2NvbW1vbl9zb3VyY2VzJzoKICAgICAgICAg
WworICAgICAgICAgICAgJ2NvbW1vbi9CaXRTZXRJdGVyYXRvci5oJywKKyAgICAgICAgICAgICdj
b21tb24vRmxvYXQxNlRvRmxvYXQzMi5jcHAnLAogICAgICAgICAgICAgJ2NvbW1vbi9NZW1vcnlC
dWZmZXIuY3BwJywKICAgICAgICAgICAgICdjb21tb24vTWVtb3J5QnVmZmVyLmgnLAogICAgICAg
ICAgICAgJ2NvbW1vbi9PcHRpb25hbC5oJywKQEAgLTE3LDcgKzIxLDEwIEBACiAgICAgICAgICAg
ICAnY29tbW9uL2RlYnVnLmgnLAogICAgICAgICAgICAgJ2NvbW1vbi9tYXRodXRpbC5jcHAnLAog
ICAgICAgICAgICAgJ2NvbW1vbi9tYXRodXRpbC5oJywKKyAgICAgICAgICAgICdjb21tb24vbWF0
cml4X3V0aWxzLmgnLAogICAgICAgICAgICAgJ2NvbW1vbi9wbGF0Zm9ybS5oJywKKyAgICAgICAg
ICAgICdjb21tb24vc3RyaW5nX3V0aWxzLmNwcCcsCisgICAgICAgICAgICAnY29tbW9uL3N0cmlu
Z191dGlscy5oJywKICAgICAgICAgICAgICdjb21tb24vdGxzLmNwcCcsCiAgICAgICAgICAgICAn
Y29tbW9uL3Rscy5oJywKICAgICAgICAgICAgICdjb21tb24vdXRpbGl0aWVzLmNwcCcsCkBAIC0z
NSw4ICs0Miw5IEBACiAgICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMi9nbDJleHQuaCcsCiAg
ICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMi9nbDJwbGF0Zm9ybS5oJywKICAgICAgICAgICAg
ICcuLi9pbmNsdWRlL0dMRVMzL2dsMy5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMz
L2dsM2V4dC5oJywKICAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2dsM3BsYXRmb3JtLmgn
LAorICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzMvZ2wzMS5oJywKKyAgICAgICAgICAgICcu
Li9pbmNsdWRlL0dMRVMzL2dsMzIuaCcsCiAgICAgICAgICAgICAnLi4vaW5jbHVkZS9HTFNMQU5H
L1NoYWRlckxhbmcuaCcsCiAgICAgICAgICAgICAnLi4vaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZh
cnMuaCcsCiAgICAgICAgICAgICAnLi4vaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCcsCkBAIC02
Miw2ICs3MCw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvQ29udGV4dC5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9EYXRhLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvRGF0YS5oJywK
KyAgICAgICAgICAgICdsaWJBTkdMRS9EZWJ1Zy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L0RlYnVnLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0RldmljZS5jcHAnLAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL0RldmljZS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9EaXNwbGF5LmNw
cCcsCkBAIC03MSwyMSArODEsMjMgQEAKICAgICAgICAgICAgICdsaWJBTkdMRS9FcnJvci5pbmwn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL0ZlbmNlLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5H
TEUvRmVuY2UuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvRmxvYXQxNlRvRmxvYXQzMi5jcHAn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvRnJhbWVidWZmZXIuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvRnJhbWVidWZm
ZXJBdHRhY2htZW50LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvRnJhbWVidWZmZXJBdHRh
Y2htZW50LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAnLAog
ICAgICAgICAgICAgJ2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5oJywKKyAgICAgICAgICAgICds
aWJBTkdMRS9JbWFnZS5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9JbWFnZS5jcHAnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL0ltYWdlSW5kZXguaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUv
SW1hZ2VJbmRleC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5j
cHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9QbGF0Zm9ybS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL1Byb2dy
YW0uY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9Qcm9ncmFtLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL1F1ZXJ5LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvUXVlcnkuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvUmVmQ291bnRPYmplY3QuY3BwJywKICAgICAgICAgICAgICds
aWJBTkdMRS9SZWZDb3VudE9iamVjdC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9SZW5kZXJi
dWZmZXIuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9SZW5kZXJidWZmZXIuaCcsCkBAIC05
Nyw2ICsxMDksOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL1NoYWRlci5oJywKICAgICAgICAg
ICAgICdsaWJBTkdMRS9TdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL1N0YXRlLmgn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL1N0cmVhbS5jcHAnLAorICAgICAgICAgICAgJ2xpYkFO
R0xFL1N0cmVhbS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9TdXJmYWNlLmNwcCcsCiAgICAg
ICAgICAgICAnbGliQU5HTEUvU3VyZmFjZS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9UZXh0
dXJlLmNwcCcsCkBAIC0xMDUsMTIgKzExOSwxNiBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL1Ry
YW5zZm9ybUZlZWRiYWNrLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL1VuaWZvcm0uY3BwJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9Vbmlmb3JtLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L1ZlcnNpb24uaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvVmVyc2lvbi5pbmwnLAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL1ZlcnRleEFycmF5LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUv
VmVydGV4QXJyYXkuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmNw
cCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5pbmwnLAogICAgICAgICAgICAgJ2xpYkFOR0xF
L2FuZ2xldHlwZXMuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9hbmdsZXR5cGVzLmgnLAor
ICAgICAgICAgICAgJ2xpYkFOR0xFL2FuZ2xldHlwZXMuaW5sJywKICAgICAgICAgICAgICdsaWJB
TkdMRS9mZWF0dXJlcy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9mb3JtYXR1dGlscy5jcHAn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmgnLApAQCAtMTI2LDIzICsxNDQs
MjEgQEAKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GZW5jZVN5bmNJbXBsLmgnLAogICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oJywKKyAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvSW1wbEZhY3RvcnkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvSW5k
ZXhSYW5nZUNhY2hlLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvSW5kZXhS
YW5nZUNhY2hlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBs
LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCcsCiAg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvUXVlcnlJbXBsLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL1JlbmRlcmVyLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvUmVuZGVyZXIuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU2FtcGxlcklt
cGwuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5oJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TdHJlYW1JbXBsLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvVGV4dHVyZUltcGwuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvVHJhbnNm
b3JtRmVlZGJhY2tJbXBsLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL1ZlcnRl
eEFycmF5SW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9Xb3JrYXJvdW5k
cy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcCcsCiAgICAgICAg
ICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS92
YWxpZGF0aW9uRVMuY3BwJywKQEAgLTE2OSw2ICsxODUsOCBAQAogICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9EeW5hbWljSExTTC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvRUdMSW1hZ2VEM0QuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
RUdMSW1hZ2VEM0QuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1h
dHV0aWxzRDNELmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1h
dHV0aWxzRDNELmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1
ZmZlckQzRC5jcHAnLApAQCAtMTg4LDYgKzIwNiw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2xvYWRpbWFnZS5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvbG9hZGltYWdlLmlubCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2xvYWRpbWFnZVNTRTIuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
bG9hZGltYWdlX2V0Yy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9s
b2FkaW1hZ2VfZXRjLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9n
cmFtRDNELmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1E
M0QuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQz
RC5jcHAnLApAQCAtMTk2LDYgKzIxNiw3IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1JlbmRlcmVyRDNELmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9SZW5kZXJUYXJnZXREM0QuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1JlbmRlclRhcmdldEQzRC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9TYW1wbGVyRDNELmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFk
ZXJEM0QuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNE
LmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJFeGVjdXRhYmxl
RDNELmNwcCcsCkBAIC0yMDUsMTQgKzIyNiwxNiBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1RleHR1cmVEM0QuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvVGV4dHVyZUQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4
dHVyZVN0b3JhZ2UuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4
dHVyZVN0b3JhZ2UuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RyYW5z
Zm9ybUZlZWRiYWNrRDNELmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1RyYW5zZm9ybUZlZWRiYWNrRDNELmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9WYXJ5aW5nUGFja2luZy5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9WYXJ5aW5nUGFja2luZy5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvVmVydGV4QnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1ZlcnRleEJ1ZmZlci5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVy
dGV4RGF0YU1hbmFnZXIuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
VmVydGV4RGF0YU1hbmFnZXIuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1dvcmthcm91bmRzRDNELmgnLAogICAgICAgICBdLAogICAgICAgICAnbGliYW5nbGVfZDNkOV9z
b3VyY2VzJzoKICAgICAgICAgWwpAQCAtMjQ4LDYgKzI3MSw4IEBACiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdocHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuY3BwJywKKyAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwJywKICAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hhaW45LmgnLAogICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5jcHAnLApAQCAtMjcxLDYg
KzI5Niw4IEBACiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvcHl2
ZXJ0ZXguaW5sJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVi
dWdBbm5vdGF0b3IxMS5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuY3BwJywKKyAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmNwcCcsCiAgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuaCcsCiAgICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuY3BwJywKQEAgLTI4Myw2ICsz
MTAsOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbmRleEJ1
ZmZlcjExLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1
dExheW91dENhY2hlLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0lucHV0TGF5b3V0Q2FjaGUuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL2xvYWRfZnVuY3Rpb25zX3RhYmxlLmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcCcsCiAg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL05hdGl2ZVdpbmRvdy5oJywK
ICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUGl4ZWxUcmFuc2ZlcjEx
LmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1BpeGVsVHJh
bnNmZXIxMS5oJywKQEAgLTM1MCwxMiArMzc5LDIwIEBACiAgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRhcnJheXBzLmgn
LAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBp
bGVkL3N3aXp6bGV1aTJkcHMuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpM2Rwcy5oJywKKyAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwJywKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaCcsCisgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbTExLmNwcCcsCisgICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbTExLmgnLAogICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oJywKICAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5j
cHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3Rv
cmFnZTExLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Ucmlt
MTEuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTEx
LmgnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zv
cm1hdF90YWJsZV9hdXRvZ2VuLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uaCcsCisgICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgnLAorICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEu
aCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZl
cjExLmNwcCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRl
eEJ1ZmZlcjExLmgnLApAQCAtMzc3LDYgKzQxNCw4IEBACiAgICAgICAgIF0sCiAgICAgICAgICds
aWJhbmdsZV9nbF9zb3VyY2VzJzoKICAgICAgICAgWworICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL0JsaXRHTC5jcHAnLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L0JsaXRHTC5oJywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5j
cHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmgnLAogICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuY3BwJywKQEAgLTM5OSw2
ICs0MzgsOCBAQAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZl
ckdMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuY3Bw
JywKICAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgnLAorICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NhbXBsZXJHTC5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NhbXBsZXJHTC5oJywKICAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9nbC9TaGFkZXJHTC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1NoYWRlckdMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1N0YXRlTWFuYWdlckdMLmNwcCcsCkBAIC00MTEsNiArNDUyLDcgQEAKICAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dMLmgnLAogICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuY3BwJywKICAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgnLAorICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRzR0wuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5jcHAnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wuaCcsCiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZnVuY3Rpb25zZ2xfZW51bXMuaCcsCkBAIC00MjIsNiArNDY0LDggQEAKICAgICAgICAg
WwogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNwcCcs
CiAgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCcsCisg
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dT
dXJmYWNlV0dMLmNwcCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RY
R0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuY3BwJywKICAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvRnVuY3Rpb25zV0dMLmgnLAogICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5jcHAnLApAQCAtNDMzLDYgKzQ3NywyOSBA
QAogICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC93Z2xfdXRpbHMuaCcsCiAg
ICAgICAgICAgICAndGhpcmRfcGFydHkva2hyb25vcy9HTC93Z2xleHQuaCcsCiAgICAgICAgIF0s
CisgICAgICAgICdsaWJhbmdsZV9nbF9nbHhfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5jcHAnLAorICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFguY3BwJywKKyAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgnLAorICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAnLAorICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5oJywKKyAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvU3VyZmFjZUdMWC5oJywKKyAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5jcHAnLAor
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmgn
LAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9mdW5jdGlvbnNnbHhfdHlw
ZWRlZnMuaCcsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L3BsYXRmb3Jt
X2dseC5oJywKKyAgICAgICAgXSwKKyAgICAgICAgJ2xpYmFuZ2xlX2dsX2NnbF9zb3VyY2VzJzoK
KyAgICAgICAgWworICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5
Q0dMLm1tJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNH
TC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZh
Y2VDR0wubW0nLAorICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVy
U3VyZmFjZUNHTC5oJywKKyAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2lu
ZG93U3VyZmFjZUNHTC5tbScsCisgICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L1dpbmRvd1N1cmZhY2VDR0wuaCcsCisgICAgICAgIF0sCiAgICAgICAgICdsaWJnbGVzdjJfc291
cmNlcyc6CiAgICAgICAgIFsKICAgICAgICAgICAgICdjb21tb24vYW5nbGV1dGlscy5oJywKQEAg
LTQ0Nyw4ICs1MTQsNiBAQAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xl
c18yXzBfZXh0LmgnLAogICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18z
XzAuY3BwJywKICAgICAgICAgICAgICdsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wLmgn
LAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzBfZXh0LmNwcCcs
Ci0gICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMF9leHQuaCcsCiAg
ICAgICAgICAgICAnbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAnLAogICAgICAgICAgICAgJ2xp
YkdMRVN2Mi9nbG9iYWxfc3RhdGUuaCcsCiAgICAgICAgICAgICAnbGliR0xFU3YyL2xpYkdMRVN2
Mi5jcHAnLApAQCAtNDkxLDEwICs1NTYsNiBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICdkZWZpbmVzJzoKICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnR0xfQVBJQ0FMTD0n
LAotICAgICAgICAgICAgICAgICdHTF9HTEVYVF9QUk9UT1RZUEVTPScsCi0gICAgICAgICAgICAg
ICAgJ0VHTEFQST0nLAotICAgICAgICAgICAgICAgICdBTkdMRV9QUkVMT0FERURfRDNEQ09NUElM
RVJfTU9EVUxFX05BTUVTPXsgImQzZGNvbXBpbGVyXzQ3LmRsbCIsICJkM2Rjb21waWxlcl80Ni5k
bGwiLCAiZDNkY29tcGlsZXJfNDMuZGxsIiB9JywKICAgICAgICAgICAgICAgICAnTElCQU5HTEVf
SU1QTEVNRU5UQVRJT04nLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdkaXJlY3RfZGVw
ZW5kZW50X3NldHRpbmdzJzoKQEAgLTUwNiwxMyArNTY3LDMxIEBACiAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CiAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAnR0xfQVBJQ0FMTD0nLAotICAgICAgICAgICAgICAgICAgICAnR0xfR0xF
WFRfUFJPVE9UWVBFUz0nLAotICAgICAgICAgICAgICAgICAgICAnRUdMQVBJPScsCisgICAgICAg
ICAgICAgICAgICAgICdHTF9HTEVYVF9QUk9UT1RZUEVTJywKICAgICAgICAgICAgICAgICAgICAg
J0FOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9eyAiZDNkY29tcGlsZXJf
NDcuZGxsIiwgImQzZGNvbXBpbGVyXzQ2LmRsbCIsICJkM2Rjb21waWxlcl80My5kbGwiIH0nLAog
ICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgogICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICBbCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dMX0FQSUNBTEw9JywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnRUdMQVBJPScsCisgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICAgICB9LCB7CisgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0dMX0FQSUNBTEw9X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSknLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdFR0xBUEk9X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSknLAorICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAgIFsnT1MgPT0gIm1hYyInLAorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAneGNvZGVfc2V0dGluZ3Mn
OgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSc6ICdAcnBhdGgnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgIFsn
YW5nbGVfZW5hYmxlX2QzZDk9PTEnLAogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAnZGVmaW5lcyc6CkBAIC01MzMsNiArNjEyLDE2IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJM
RV9PUEVOR0wnLAogICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdjb25kaXRpb25zJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX3VzZV9nbHg9PTEnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQU5HTEVfVVNFX1gxMScsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgfSwKQEAgLTY0Myw2ICs3MzIsNjYgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2dsX3dnbF9zb3VyY2VzKScsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAorICAg
ICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV91c2VfZ2x4PT0xJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnQU5HTEVfVVNFX1gxMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL2xpYlhOVkN0cmwuZ3lwOmxpYlhOVkN0cmwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3NvdXJjZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2dsX2dseF9zb3VyY2VzKScsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbGlua19zZXR0aW5ncyc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xk
ZmxhZ3MnOiBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCFAKDwocGtn
LWNvbmZpZykgLS1saWJzLW9ubHktTCAtLWxpYnMtb25seS1vdGhlciB4MTEgeGkgeGV4dCknLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnbGlicmFyaWVzJzogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LWwgeDExIHhpIHhleHQpIC1sZGwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFsnYW5nbGVfbGlua19nbHg9PTEnLAorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICds
aWJyYXJpZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnLWxHTCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfTElOS19HTFgnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgICAgICAgICB9XSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PEAobGliYW5nbGVfZ2xfY2dsX3NvdXJjZXMpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdsaWJyYXJpZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9JT1N1cmZhY2Uu
ZnJhbWV3b3JrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKFNES1JP
T1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2FsbF9kZXBlbmRlbnRfc2V0dGluZ3MnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hjb2RlX3Nl
dHRpbmdzJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xEX1JVTlBB
VEhfU0VBUkNIX1BBVEhTJzogWydAZXhlY3V0YWJsZV9wYXRoLy4nXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0wIGFuZCBP
Uz09IndpbiInLApAQCAtNjU0LDQ1ICs4MDMsMTQgQEAKICAgICAgICAgICAgICAgICB9XSwKICAg
ICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgJ05URERJX1ZFUlNJT049TlRERElfV0lOQkxVRScsCi0g
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdtc3ZzX2VuYWJsZV93
aW5ydCcgOiAnMScsCiAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3JlcXVpcmVzX2ltcG9ydGxp
YnJhcnknIDogJ3RydWUnLAotICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6Ci0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtlclRv
b2wnOgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdFbmFibGVDT01EQVRGb2xkaW5nJzogJzEnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdPcHRpbWl6ZVJlZmVyZW5jZXMnOiAnMScsCi0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAg
ICAgICAgWydhbmdsZV9idWlsZF93aW5waG9uZT09MScsCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lucGhvbmUnIDogJzEnLAotICAgICAgICAg
ICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6Ci0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdEZWJ1Z19CYXNlJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnQU5HTEVfRU5BQkxFX0RFQlVHX0FOTk9UQVRJT05TJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0FOR0xFX0dFTkVSQVRFX1NIQURFUl9ERUJVR19JTkZPJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAg
XSwKICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2xp
YkdMRVN2MicsCi0gICAgICAgICAgICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAg
ICAgICAnZGVwZW5kZW5jaWVzJzogWyAnbGliQU5HTEUnIF0sCisgICAgICAgICAgICAndHlwZSc6
ICc8KGFuZ2xlX2dsX2xpYnJhcnlfdHlwZSknLAorICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6
IFsgJ2xpYkFOR0xFJywgJ2FuZ2xlX2NvbW1vbicgXSwKICAgICAgICAgICAgICdpbmNsdWRlcyc6
IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAogICAgICAgICAgICAgJ3NvdXJj
ZXMnOgogICAgICAgICAgICAgWwpAQCAtNzAwLDI1ICs4MTgsMTMgQEAKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnZGVmaW5lcyc6CiAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
J0dMX0FQSUNBTEw9JywKLSAgICAgICAgICAgICAgICAnR0xfR0xFWFRfUFJPVE9UWVBFUz0nLAot
ICAgICAgICAgICAgICAgICdFR0xBUEk9JywKICAgICAgICAgICAgICAgICAnTElCR0xFU1YyX0lN
UExFTUVOVEFUSU9OJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6
CiAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScs
CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnbXN2c19lbmFibGVfd2lu
cnQnIDogJzEnLAogICAgICAgICAgICAgICAgICAgICAnbXN2c19yZXF1aXJlc19pbXBvcnRsaWJy
YXJ5JyA6ICd0cnVlJywKLSAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29s
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRW5hYmxlQ09NREFURm9sZGluZyc6ICcxJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnT3B0aW1pemVSZWZlcmVuY2VzJzogJzEnLAotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAg
ICAgIFsnYW5nbGVfYnVpbGRfd2lucGhvbmU9PTEnLAogICAgICAgICAgICAgICAgIHsKSW5kZXg6
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJv
dW5kc0NsYW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCShyZXZpc2lvbiAx
OTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGls
ZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDEy
IEBACiBjbGFzcyBBcnJheUJvdW5kc0NsYW1wZXJNYXJrZXIgOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlciB7CiBwdWJsaWM6CiAgICAgQXJyYXlCb3VuZHNDbGFtcGVyTWFya2VyKCkKLSAgICAgICAg
OiBtTmVlZHNDbGFtcChmYWxzZSkKKyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZh
bHNlLCBmYWxzZSksCisgICAgICAgICAgbU5lZWRzQ2xhbXAoZmFsc2UpCiAgICB7CiAgICB9CiAK
LSAgIHZpcnR1YWwgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSog
bm9kZSkKKyAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpu
b2RlKSBvdmVycmlkZQogICAgewogICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4
SW5kaXJlY3QpCiAgICAgICAgewpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gz
LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw5ICsyOSw3IEBACiAKICNlbHNlCS8vIGRlZmluZWQoX01TQ19WRVIpCiAKLS8vIElnbm9yZSBH
Q0MgZm9yY2UgaW5saW5lIHdhcm5pbmdzCi0jcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XYXR0cmlidXRlcyIKLSNkZWZpbmUJRk9SQ0VfSU5MSU5FIF9fYXR0cmlidXRlX18oKGFsd2F5
c19pbmxpbmUpKQorI2RlZmluZQlGT1JDRV9JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFs
d2F5c19pbmxpbmUpKQogCiBpbmxpbmUgdWludDMyX3Qgcm90bDMyICggdWludDMyX3QgeCwgaW50
OF90IHIgKQogewpAQCAtNTQsMTIgKzUyLDEyIEBACiAvLyBCbG9jayByZWFkIC0gaWYgeW91ciBw
bGF0Zm9ybSBuZWVkcyB0byBkbyBlbmRpYW4tc3dhcHBpbmcgb3IgY2FuIG9ubHkKIC8vIGhhbmRs
ZSBhbGlnbmVkIHJlYWRzLCBkbyB0aGUgY29udmVyc2lvbiBoZXJlCiAKLUZPUkNFX0lOTElORSB1
aW50MzJfdCBnZXRibG9jayAoIGNvbnN0IHVpbnQzMl90ICogcCwgaW50IGkgKQorRk9SQ0VfSU5M
SU5FIHVpbnQzMl90IGdldGJsb2NrMzIgKCBjb25zdCB1aW50MzJfdCAqIHAsIGludCBpICkKIHsK
ICAgcmV0dXJuIHBbaV07CiB9CiAKLUZPUkNFX0lOTElORSB1aW50NjRfdCBnZXRibG9jayAoIGNv
bnN0IHVpbnQ2NF90ICogcCwgaW50IGkgKQorRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGdldGJsb2Nr
NjQgKCBjb25zdCB1aW50NjRfdCAqIHAsIGludCBpICkKIHsKICAgcmV0dXJuIHBbaV07CiB9CkBA
IC02Nyw3ICs2NSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBGaW5hbGl6YXRpb24g
bWl4IC0gZm9yY2UgYWxsIGJpdHMgb2YgYSBoYXNoIGJsb2NrIHRvIGF2YWxhbmNoZQogCi1GT1JD
RV9JTkxJTkUgdWludDMyX3QgZm1peCAoIHVpbnQzMl90IGggKQorRk9SQ0VfSU5MSU5FIHVpbnQz
Ml90IGZtaXgzMiAoIHVpbnQzMl90IGggKQogewogICBoIF49IGggPj4gMTY7CiAgIGggKj0gMHg4
NWViY2E2YjsKQEAgLTgwLDcgKzc4LDcgQEAKIAogLy8tLS0tLS0tLS0tCiAKLUZPUkNFX0lOTElO
RSB1aW50NjRfdCBmbWl4ICggdWludDY0X3QgayApCitGT1JDRV9JTkxJTkUgdWludDY0X3QgZm1p
eDY0ICggdWludDY0X3QgayApCiB7CiAgIGsgXj0gayA+PiAzMzsKICAgayAqPSBCSUdfQ09OU1RB
TlQoMHhmZjUxYWZkN2VkNTU4Y2NkKTsKQEAgLTExMSw3ICsxMDksNyBAQAogCiAgIGZvcihpbnQg
aSA9IC1uYmxvY2tzOyBpOyBpKyspCiAgIHsKLSAgICB1aW50MzJfdCBrMSA9IGdldGJsb2NrKGJs
b2NrcyxpKTsKKyAgICB1aW50MzJfdCBrMSA9IGdldGJsb2NrMzIoYmxvY2tzLGkpOwogCiAgICAg
azEgKj0gYzE7CiAgICAgazEgPSBST1RMMzIoazEsMTUpOwpAQCAtMTQyLDcgKzE0MCw3IEBACiAK
ICAgaDEgXj0gbGVuOwogCi0gIGgxID0gZm1peChoMSk7CisgIGgxID0gZm1peDMyKGgxKTsKIAog
ICAqKHVpbnQzMl90KilvdXQgPSBoMTsKIH0gCkBAIC0xNzIsMTAgKzE3MCwxMCBAQAogCiAgIGZv
cihpbnQgaSA9IC1uYmxvY2tzOyBpOyBpKyspCiAgIHsKLSAgICB1aW50MzJfdCBrMSA9IGdldGJs
b2NrKGJsb2NrcyxpKjQrMCk7Ci0gICAgdWludDMyX3QgazIgPSBnZXRibG9jayhibG9ja3MsaSo0
KzEpOwotICAgIHVpbnQzMl90IGszID0gZ2V0YmxvY2soYmxvY2tzLGkqNCsyKTsKLSAgICB1aW50
MzJfdCBrNCA9IGdldGJsb2NrKGJsb2NrcyxpKjQrMyk7CisgICAgdWludDMyX3QgazEgPSBnZXRi
bG9jazMyKGJsb2NrcyxpKjQrMCk7CisgICAgdWludDMyX3QgazIgPSBnZXRibG9jazMyKGJsb2Nr
cyxpKjQrMSk7CisgICAgdWludDMyX3QgazMgPSBnZXRibG9jazMyKGJsb2NrcyxpKjQrMik7Cisg
ICAgdWludDMyX3QgazQgPSBnZXRibG9jazMyKGJsb2NrcyxpKjQrMyk7CiAKICAgICBrMSAqPSBj
MTsgazEgID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOwogCkBAIC0yMzgsMTAg
KzIzNiwxMCBAQAogICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0OwogICBoMiArPSBoMTsg
aDMgKz0gaDE7IGg0ICs9IGgxOwogCi0gIGgxID0gZm1peChoMSk7Ci0gIGgyID0gZm1peChoMik7
Ci0gIGgzID0gZm1peChoMyk7Ci0gIGg0ID0gZm1peChoNCk7CisgIGgxID0gZm1peDMyKGgxKTsK
KyAgaDIgPSBmbWl4MzIoaDIpOworICBoMyA9IGZtaXgzMihoMyk7CisgIGg0ID0gZm1peDMyKGg0
KTsKIAogICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0OwogICBoMiArPSBoMTsgaDMgKz0g
aDE7IGg0ICs9IGgxOwpAQCAtMjczLDggKzI3MSw4IEBACiAKICAgZm9yKGludCBpID0gMDsgaSA8
IG5ibG9ja3M7IGkrKykKICAgewotICAgIHVpbnQ2NF90IGsxID0gZ2V0YmxvY2soYmxvY2tzLGkq
MiswKTsKLSAgICB1aW50NjRfdCBrMiA9IGdldGJsb2NrKGJsb2NrcyxpKjIrMSk7CisgICAgdWlu
dDY0X3QgazEgPSBnZXRibG9jazY0KGJsb2NrcyxpKjIrMCk7CisgICAgdWludDY0X3QgazIgPSBn
ZXRibG9jazY0KGJsb2NrcyxpKjIrMSk7CiAKICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsx
LDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOwogCkBAIC0yOTUsMjMgKzI5MywyMyBAQAogCiAgIHN3
aXRjaChsZW4gJiAxNSkKICAgewotICBjYXNlIDE1OiBrMiBePSB1aW50NjRfdCh0YWlsWzE0XSkg
PDwgNDg7Ci0gIGNhc2UgMTQ6IGsyIF49IHVpbnQ2NF90KHRhaWxbMTNdKSA8PCA0MDsKLSAgY2Fz
ZSAxMzogazIgXj0gdWludDY0X3QodGFpbFsxMl0pIDw8IDMyOwotICBjYXNlIDEyOiBrMiBePSB1
aW50NjRfdCh0YWlsWzExXSkgPDwgMjQ7Ci0gIGNhc2UgMTE6IGsyIF49IHVpbnQ2NF90KHRhaWxb
MTBdKSA8PCAxNjsKLSAgY2FzZSAxMDogazIgXj0gdWludDY0X3QodGFpbFsgOV0pIDw8IDg7Ci0g
IGNhc2UgIDk6IGsyIF49IHVpbnQ2NF90KHRhaWxbIDhdKSA8PCAwOworICBjYXNlIDE1OiBrMiBe
PSAoKHVpbnQ2NF90KXRhaWxbMTRdKSA8PCA0ODsKKyAgY2FzZSAxNDogazIgXj0gKCh1aW50NjRf
dCl0YWlsWzEzXSkgPDwgNDA7CisgIGNhc2UgMTM6IGsyIF49ICgodWludDY0X3QpdGFpbFsxMl0p
IDw8IDMyOworICBjYXNlIDEyOiBrMiBePSAoKHVpbnQ2NF90KXRhaWxbMTFdKSA8PCAyNDsKKyAg
Y2FzZSAxMTogazIgXj0gKCh1aW50NjRfdCl0YWlsWzEwXSkgPDwgMTY7CisgIGNhc2UgMTA6IGsy
IF49ICgodWludDY0X3QpdGFpbFsgOV0pIDw8IDg7CisgIGNhc2UgIDk6IGsyIF49ICgodWludDY0
X3QpdGFpbFsgOF0pIDw8IDA7CiAgICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBST1RMNjQoazIs
MzMpOyBrMiAqPSBjMTsgaDIgXj0gazI7CiAKLSAgY2FzZSAgODogazEgXj0gdWludDY0X3QodGFp
bFsgN10pIDw8IDU2OwotICBjYXNlICA3OiBrMSBePSB1aW50NjRfdCh0YWlsWyA2XSkgPDwgNDg7
Ci0gIGNhc2UgIDY6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDVdKSA8PCA0MDsKLSAgY2FzZSAgNTog
azEgXj0gdWludDY0X3QodGFpbFsgNF0pIDw8IDMyOwotICBjYXNlICA0OiBrMSBePSB1aW50NjRf
dCh0YWlsWyAzXSkgPDwgMjQ7Ci0gIGNhc2UgIDM6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDJdKSA8
PCAxNjsKLSAgY2FzZSAgMjogazEgXj0gdWludDY0X3QodGFpbFsgMV0pIDw8IDg7Ci0gIGNhc2Ug
IDE6IGsxIF49IHVpbnQ2NF90KHRhaWxbIDBdKSA8PCAwOworICBjYXNlICA4OiBrMSBePSAoKHVp
bnQ2NF90KXRhaWxbIDddKSA8PCA1NjsKKyAgY2FzZSAgNzogazEgXj0gKCh1aW50NjRfdCl0YWls
WyA2XSkgPDwgNDg7CisgIGNhc2UgIDY6IGsxIF49ICgodWludDY0X3QpdGFpbFsgNV0pIDw8IDQw
OworICBjYXNlICA1OiBrMSBePSAoKHVpbnQ2NF90KXRhaWxbIDRdKSA8PCAzMjsKKyAgY2FzZSAg
NDogazEgXj0gKCh1aW50NjRfdCl0YWlsWyAzXSkgPDwgMjQ7CisgIGNhc2UgIDM6IGsxIF49ICgo
dWludDY0X3QpdGFpbFsgMl0pIDw8IDE2OworICBjYXNlICAyOiBrMSBePSAoKHVpbnQ2NF90KXRh
aWxbIDFdKSA8PCA4OworICBjYXNlICAxOiBrMSBePSAoKHVpbnQ2NF90KXRhaWxbIDBdKSA8PCAw
OwogICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgx
IF49IGsxOwogICB9OwogCkBAIC0zMjMsOCArMzIxLDggQEAKICAgaDEgKz0gaDI7CiAgIGgyICs9
IGgxOwogCi0gIGgxID0gZm1peChoMSk7Ci0gIGgyID0gZm1peChoMik7CisgIGgxID0gZm1peDY0
KGgxKTsKKyAgaDIgPSBmbWl4NjQoaDIpOwogCiAgIGgxICs9IGgyOwogICBoMiArPSBoMTsKQEAg
LTMzNCwzICszMzIsNCBAQAogfQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKSW5kZXg6IFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhh
c2gzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3Bh
cnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMu
aAkod29ya2luZyBjb3B5KQpAQCAtOCw4ICs4LDIyIEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbnMgYW5kIG1hY3JvcwogCisvLyBNaWNyb3Nv
ZnQgVmlzdWFsIFN0dWRpbworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwg
MTYwMCkKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7Cit0eXBlZGVmIHVuc2lnbmVk
IGludCB1aW50MzJfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKKworLy8g
T3RoZXIgY29tcGlsZXJzCisKKyNlbHNlCS8vIGRlZmluZWQoX01TQ19WRVIpCisKICNpbmNsdWRl
IDxzdGRpbnQuaD4KIAorI2VuZGlmIC8vICFkZWZpbmVkKF9NU0NfVkVSKQorCiAvLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIHZvaWQgTXVybXVySGFzaDNfeDg2XzMyICAoIGNvbnN0IHZvaWQgKiBr
ZXksIGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsKSW5kZXg6IFNvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysr
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAsMTkgKzEwLDE0IEBACiAKICNpbmNsdWRlICJFR0xXaW5kb3cuaCIKICNpbmNsdWRl
ICJPU1dpbmRvdy5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCi0jaWZkZWYgX1dJTjMy
Ci0jaW5jbHVkZSAid2luMzIvV2luMzJUaW1lci5oIgotI2luY2x1ZGUgIndpbjMyL1dpbjMyV2lu
ZG93LmgiCi0jZWxzZQotI2Vycm9yIHVuc3VwcG9ydGVkIE9TLgotI2VuZGlmCi0KIEVHTFBsYXRm
b3JtUGFyYW1ldGVyczo6RUdMUGxhdGZvcm1QYXJhbWV0ZXJzKCkKICAgICA6IHJlbmRlcmVyKEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUpLAogICAgICAgbWFqb3JWZXJzaW9u
KEVHTF9ET05UX0NBUkUpLAogICAgICAgbWlub3JWZXJzaW9uKEVHTF9ET05UX0NBUkUpLAotICAg
ICAgZGV2aWNlVHlwZShFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5H
TEUpCisgICAgICBkZXZpY2VUeXBlKEVHTF9ET05UX0NBUkUpLAorICAgICAgcHJlc2VudFBhdGgo
RUdMX0RPTlRfQ0FSRSkKIHsKIH0KIApAQCAtMzAsMjcgKzI1LDgyIEBACiAgICAgOiByZW5kZXJl
cihyZW5kZXJlciksCiAgICAgICBtYWpvclZlcnNpb24oRUdMX0RPTlRfQ0FSRSksCiAgICAgICBt
aW5vclZlcnNpb24oRUdMX0RPTlRfQ0FSRSksCi0gICAgICBkZXZpY2VUeXBlKEVHTF9QTEFURk9S
TV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSkKKyAgICAgIGRldmljZVR5cGUoRUdM
X0RPTlRfQ0FSRSksCisgICAgICBwcmVzZW50UGF0aChFR0xfRE9OVF9DQVJFKQogeworICAgIGlm
IChyZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFIHx8CisgICAg
ICAgIHJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQorICAg
IHsKKyAgICAgICAgZGV2aWNlVHlwZSA9IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9I
QVJEV0FSRV9BTkdMRTsKKyAgICB9CiB9CiAKLUVHTFBsYXRmb3JtUGFyYW1ldGVyczo6RUdMUGxh
dGZvcm1QYXJhbWV0ZXJzKEVHTGludCByZW5kZXJlciwgRUdMaW50IG1ham9yVmVyc2lvbiwgRUdM
aW50IG1pbm9yVmVyc2lvbiwgRUdMaW50IHVzZVdhcnApCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnM6
OkVHTFBsYXRmb3JtUGFyYW1ldGVycyhFR0xpbnQgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgbWFqb3JWZXJzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG1pbm9yVmVyc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB1
c2VXYXJwKQogICAgIDogcmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbWFqb3JWZXJzaW9uKG1h
am9yVmVyc2lvbiksCiAgICAgICBtaW5vclZlcnNpb24obWlub3JWZXJzaW9uKSwKLSAgICAgIGRl
dmljZVR5cGUodXNlV2FycCkKKyAgICAgIGRldmljZVR5cGUodXNlV2FycCksCisgICAgICBwcmVz
ZW50UGF0aChFR0xfRE9OVF9DQVJFKQogewogfQogCitFR0xQbGF0Zm9ybVBhcmFtZXRlcnM6OkVH
TFBsYXRmb3JtUGFyYW1ldGVycyhFR0xpbnQgcmVuZGVyZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgbWFqb3JWZXJzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG1pbm9yVmVyc2lvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB1c2VX
YXJwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
IHByZXNlbnRQYXRoKQorICAgIDogcmVuZGVyZXIocmVuZGVyZXIpLAorICAgICAgbWFqb3JWZXJz
aW9uKG1ham9yVmVyc2lvbiksCisgICAgICBtaW5vclZlcnNpb24obWlub3JWZXJzaW9uKSwKKyAg
ICAgIGRldmljZVR5cGUodXNlV2FycCksCisgICAgICBwcmVzZW50UGF0aChwcmVzZW50UGF0aCkK
K3sKK30KIAotRUdMV2luZG93OjpFR0xXaW5kb3coc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0
LCBFR0xpbnQgZ2xlc01ham9yVmVyc2lvbiwgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZw
bGF0Zm9ybSkKLSAgICA6IG1TdXJmYWNlKEVHTF9OT19TVVJGQUNFKSwKK2Jvb2wgb3BlcmF0b3I8
KGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzICZiKQoreworICAgIGlmIChhLnJlbmRlcmVyICE9IGIucmVuZGVyZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gYS5yZW5kZXJlciA8IGIucmVuZGVyZXI7CisgICAgfQorCisgICAgaWYgKGEu
bWFqb3JWZXJzaW9uICE9IGIubWFqb3JWZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEu
bWFqb3JWZXJzaW9uIDwgYi5tYWpvclZlcnNpb247CisgICAgfQorCisgICAgaWYgKGEubWlub3JW
ZXJzaW9uICE9IGIubWlub3JWZXJzaW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGEubWlub3JW
ZXJzaW9uIDwgYi5taW5vclZlcnNpb247CisgICAgfQorCisgICAgaWYgKGEuZGV2aWNlVHlwZSAh
PSBiLmRldmljZVR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYS5kZXZpY2VUeXBlIDwgYi5k
ZXZpY2VUeXBlOworICAgIH0KKworICAgIHJldHVybiBhLnByZXNlbnRQYXRoIDwgYi5wcmVzZW50
UGF0aDsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAm
YSwgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZiKQoreworICAgIHJldHVybiAoYS5yZW5k
ZXJlciA9PSBiLnJlbmRlcmVyKSAmJiAoYS5tYWpvclZlcnNpb24gPT0gYi5tYWpvclZlcnNpb24p
ICYmCisgICAgICAgICAgIChhLm1pbm9yVmVyc2lvbiA9PSBiLm1pbm9yVmVyc2lvbikgJiYgKGEu
ZGV2aWNlVHlwZSA9PSBiLmRldmljZVR5cGUpICYmCisgICAgICAgICAgIChhLnByZXNlbnRQYXRo
ID09IGIucHJlc2VudFBhdGgpOworfQorCitFR0xXaW5kb3c6OkVHTFdpbmRvdyhFR0xpbnQgZ2xl
c01ham9yVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgIEVHTGludCBnbGVzTWlub3JWZXJz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZw
bGF0Zm9ybSkKKyAgICA6IG1EaXNwbGF5KEVHTF9OT19ESVNQTEFZKSwKKyAgICAgIG1TdXJmYWNl
KEVHTF9OT19TVVJGQUNFKSwKICAgICAgIG1Db250ZXh0KEVHTF9OT19DT05URVhUKSwKLSAgICAg
IG1EaXNwbGF5KEVHTF9OT19ESVNQTEFZKSwKLSAgICAgIG1DbGllbnRWZXJzaW9uKGdsZXNNYWpv
clZlcnNpb24pLAorICAgICAgbUNsaWVudE1ham9yVmVyc2lvbihnbGVzTWFqb3JWZXJzaW9uKSwK
KyAgICAgIG1DbGllbnRNaW5vclZlcnNpb24oZ2xlc01pbm9yVmVyc2lvbiksCiAgICAgICBtUGxh
dGZvcm0ocGxhdGZvcm0pLAotICAgICAgbVdpZHRoKHdpZHRoKSwKLSAgICAgIG1IZWlnaHQoaGVp
Z2h0KSwKICAgICAgIG1SZWRCaXRzKC0xKSwKICAgICAgIG1HcmVlbkJpdHMoLTEpLAogICAgICAg
bUJsdWVCaXRzKC0xKSwKQEAgLTU4LDYgKzEwOCw4IEBACiAgICAgICBtRGVwdGhCaXRzKC0xKSwK
ICAgICAgIG1TdGVuY2lsQml0cygtMSksCiAgICAgICBtTXVsdGlzYW1wbGUoZmFsc2UpLAorICAg
ICAgbURlYnVnKGZhbHNlKSwKKyAgICAgIG1Ob0Vycm9yKGZhbHNlKSwKICAgICAgIG1Td2FwSW50
ZXJ2YWwoLTEpCiB7CiB9CkBAIC0xMDAsMTYgKzE1MiwzOCBAQAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgY29uc3QgRUdMaW50IGRpc3BsYXlBdHRyaWJ1dGVzW10gPQorICAg
IHN0ZDo6dmVjdG9yPEVHTGludD4gZGlzcGxheUF0dHJpYnV0ZXM7CisgICAgZGlzcGxheUF0dHJp
YnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKKyAgICBkaXNw
bGF5QXR0cmlidXRlcy5wdXNoX2JhY2sobVBsYXRmb3JtLnJlbmRlcmVyKTsKKyAgICBkaXNwbGF5
QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9S
X0FOR0xFKTsKKyAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2sobVBsYXRmb3JtLm1ham9y
VmVyc2lvbik7CisgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9B
TkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSk7CisgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKG1QbGF0Zm9ybS5taW5vclZlcnNpb24pOworCisgICAgaWYgKG1QbGF0Zm9ybS5kZXZp
Y2VUeXBlICE9IEVHTF9ET05UX0NBUkUpCiAgICAgewotICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9BTkdMRSwgICAgICAgICAgICAgIG1QbGF0Zm9ybS5yZW5kZXJlciwKLSAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFLCBtUGxhdGZvcm0ubWFq
b3JWZXJzaW9uLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1Jf
QU5HTEUsIG1QbGF0Zm9ybS5taW5vclZlcnNpb24sCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9ERVZJQ0VfVFlQRV9BTkdMRSwgICAgICAgbVBsYXRmb3JtLmRldmljZVR5cGUsCi0gICAgICAg
IEVHTF9OT05FLAotICAgIH07CisgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhF
R0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOworICAgICAgICBkaXNwbGF5QXR0
cmlidXRlcy5wdXNoX2JhY2sobVBsYXRmb3JtLmRldmljZVR5cGUpOworICAgIH0KIAotICAgIG1E
aXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdM
RSwgb3NXaW5kb3ctPmdldE5hdGl2ZURpc3BsYXkoKSwgZGlzcGxheUF0dHJpYnV0ZXMpOworICAg
IGlmIChtUGxhdGZvcm0ucHJlc2VudFBhdGggIT0gRUdMX0RPTlRfQ0FSRSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9CisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5T
SU9OUykpOworICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9BTkdMRV9l
eHBlcmltZW50YWxfcHJlc2VudF9wYXRoIikgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVzdHJveUdMKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0VYUEVSSU1FTlRBTF9Q
UkVTRU5UX1BBVEhfQU5HTEUpOworICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2so
bVBsYXRmb3JtLnByZXNlbnRQYXRoKTsKKyAgICB9CisgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKEVHTF9OT05FKTsKKworICAgIG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQgKj4ob3NXaW5kb3ctPmdldE5hdGl2
ZURpc3BsYXkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRp
c3BsYXlBdHRyaWJ1dGVzWzBdKTsKICAgICBpZiAobURpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkp
CiAgICAgewogICAgICAgICBkZXN0cm95R0woKTsKQEAgLTExNywxMiArMTkxLDIyIEBACiAgICAg
fQogCiAgICAgRUdMaW50IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uOwotICAgIGlmICghZWds
SW5pdGlhbGl6ZShtRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikpCisgICAg
aWYgKGVnbEluaXRpYWxpemUobURpc3BsYXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24p
ID09IEVHTF9GQUxTRSkKICAgICB7CiAgICAgICAgIGRlc3Ryb3lHTCgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgY29uc3QgY2hhciAqZGlzcGxheUV4dGVuc2lvbnMgPSBl
Z2xRdWVyeVN0cmluZyhtRGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOworCisgICAgLy8gRUdMX0tI
Ul9jcmVhdGVfY29udGV4dCBpcyByZXF1aXJlZCB0byByZXF1ZXN0IGEgbm9uLUVTMiBjb250ZXh0
LgorICAgIGJvb2wgaGFzS0hSQ3JlYXRlQ29udGV4dCA9IHN0cnN0cihkaXNwbGF5RXh0ZW5zaW9u
cywgIkVHTF9LSFJfY3JlYXRlX2NvbnRleHQiKSAhPSBudWxscHRyOworICAgIGlmIChtYWpvclZl
cnNpb24gIT0gMiAmJiBtaW5vclZlcnNpb24gIT0gMCAmJiAhaGFzS0hSQ3JlYXRlQ29udGV4dCkK
KyAgICB7CisgICAgICAgIGRlc3Ryb3lHTCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCiAgICAgZWdsQmluZEFQSShFR0xfT1BFTkdMX0VTX0FQSSk7CiAgICAgaWYgKGVnbEdldEVy
cm9yKCkgIT0gRUdMX1NVQ0NFU1MpCiAgICAgewpAQCAtMTUyLDQwICsyMzYsNDkgQEAKICAgICBl
Z2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1Db25maWcsIEVHTF9SRURfU0laRSwgJm1SZWRC
aXRzKTsKICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1Db25maWcsIEVHTF9HUkVF
Tl9TSVpFLCAmbUdyZWVuQml0cyk7CiAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBt
Q29uZmlnLCBFR0xfQkxVRV9TSVpFLCAmbUJsdWVCaXRzKTsKLSAgICBlZ2xHZXRDb25maWdBdHRy
aWIobURpc3BsYXksIG1Db25maWcsIEVHTF9BTFBIQV9TSVpFLCAmbUJsdWVCaXRzKTsKKyAgICBl
Z2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1Db25maWcsIEVHTF9BTFBIQV9TSVpFLCAmbUFs
cGhhQml0cyk7CiAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBtQ29uZmlnLCBFR0xf
REVQVEhfU0laRSwgJm1EZXB0aEJpdHMpOwogICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxh
eSwgbUNvbmZpZywgRUdMX1NURU5DSUxfU0laRSwgJm1TdGVuY2lsQml0cyk7CiAKICAgICBzdGQ6
OnZlY3RvcjxFR0xpbnQ+IHN1cmZhY2VBdHRyaWJ1dGVzOwotICAgIGlmIChzdHJzdHIoZWdsUXVl
cnlTdHJpbmcobURpc3BsYXksIEVHTF9FWFRFTlNJT05TKSwgIkVHTF9OVl9wb3N0X3N1Yl9idWZm
ZXIiKSAhPSBudWxscHRyKQorICAgIGlmIChzdHJzdHIoZGlzcGxheUV4dGVuc2lvbnMsICJFR0xf
TlZfcG9zdF9zdWJfYnVmZmVyIikgIT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHN1cmZhY2VB
dHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUE9TVF9TVUJfQlVGRkVSX1NVUFBPUlRFRF9OVik7CiAg
ICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfVFJVRSk7CiAgICAgfQogCiAg
ICAgc3VyZmFjZUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKLSAgICBzdXJmYWNlQXR0
cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwogCiAgICAgbVN1cmZhY2UgPSBlZ2xDcmVhdGVX
aW5kb3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBvc1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93
KCksICZzdXJmYWNlQXR0cmlidXRlc1swXSk7Ci0gICAgaWYgKG1TdXJmYWNlID09IEVHTF9OT19T
VVJGQUNFKQotICAgIHsKLSAgICAgICAgZWdsR2V0RXJyb3IoKTsgLy8gQ2xlYXIgZXJyb3IgYW5k
IHRyeSBhZ2FpbgotICAgICAgICBtU3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURp
c3BsYXksIG1Db25maWcsIE5VTEwsIE5VTEwpOwotICAgIH0KLQogICAgIGlmIChlZ2xHZXRFcnJv
cigpICE9IEVHTF9TVUNDRVNTKQogICAgIHsKICAgICAgICAgZGVzdHJveUdMKCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CisgICAgQVNTRVJUKG1TdXJmYWNlICE9IEVHTF9OT19TVVJG
QUNFKTsKIAotICAgIEVHTGludCBjb250ZXh0QXR0aWJ1dGVzW10gPQorICAgIHN0ZDo6dmVjdG9y
PEVHTGludD4gY29udGV4dEF0dHJpYnV0ZXM7CisgICAgaWYgKGhhc0tIUkNyZWF0ZUNvbnRleHQp
CiAgICAgewotICAgICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgbUNsaWVudFZlcnNp
b24sCi0gICAgICAgIEVHTF9OT05FCi0gICAgfTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMu
cHVzaF9iYWNrKEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT05fS0hSKTsKKyAgICAgICAgY29udGV4
dEF0dHJpYnV0ZXMucHVzaF9iYWNrKG1DbGllbnRNYWpvclZlcnNpb24pOwogCi0gICAgbUNvbnRl
eHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBOVUxMLCBjb250ZXh0QXR0
aWJ1dGVzKTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9DT05URVhU
X01JTk9SX1ZFUlNJT05fS0hSKTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9iYWNr
KG1DbGllbnRNaW5vclZlcnNpb24pOworCisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLnB1c2hf
YmFjayhFR0xfQ09OVEVYVF9PUEVOR0xfREVCVUcpOworICAgICAgICBjb250ZXh0QXR0cmlidXRl
cy5wdXNoX2JhY2sobURlYnVnID8gRUdMX1RSVUUgOiBFR0xfRkFMU0UpOworCisgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IENoZWNrIGZvciB0aGUgZXh0ZW5zaW9uIHN0cmluZy4KKyAgICAgICAg
Ly8gYm9vbCBoYXNLSFJDcmVhdGVDb250ZXh0Tm9FcnJvciA9IHN0cnN0cihkaXNwbGF5RXh0ZW5z
aW9ucywKKyAgICAgICAgLy8gIkVHTF9LSFJfY3JlYXRlX2NvbnRleHRfbm9fZXJyb3IiKSAhPSBu
dWxscHRyOworCisgICAgICAgIGNvbnRleHRBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfQ09OVEVY
VF9PUEVOR0xfTk9fRVJST1JfS0hSKTsKKyAgICAgICAgY29udGV4dEF0dHJpYnV0ZXMucHVzaF9i
YWNrKG1Ob0Vycm9yID8gRUdMX1RSVUUgOiBFR0xfRkFMU0UpOworICAgIH0KKyAgICBjb250ZXh0
QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOworCisgICAgbUNvbnRleHQgPSBlZ2xDcmVh
dGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBudWxscHRyLCAmY29udGV4dEF0dHJpYnV0ZXNb
MF0pOwogICAgIGlmIChlZ2xHZXRFcnJvcigpICE9IEVHTF9TVUNDRVNTKQogICAgIHsKICAgICAg
ICAgZGVzdHJveUdMKCk7CkBAIC0yMzcsMyArMzMwLDM2IEBACiAgICAgICAgICAgIG1Db250ZXh0
ICE9IEVHTF9OT19DT05URVhUICYmCiAgICAgICAgICAgIG1EaXNwbGF5ICE9IEVHTF9OT19ESVNQ
TEFZOwogfQorCisvLyBGaW5kIGFuIEVHTENvbmZpZyB0aGF0IGlzIGFuIGV4YWN0IG1hdGNoIGZv
ciB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZXMuIEVHTF9GQUxTRSBpcyByZXR1cm5lZCBpZgorLy8g
dGhlIEVHTENvbmZpZyBpcyBmb3VuZC4gIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIEVHTENvbmZp
ZyBpcyBub3Qgc3VwcG9ydGVkLgorRUdMQm9vbGVhbiBFR0xXaW5kb3c6OkZpbmRFR0xDb25maWco
RUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QsIEVHTENvbmZpZyAqY29u
ZmlnKQoreworICAgIEVHTGludCBudW1Db25maWdzID0gMDsKKyAgICBlZ2xHZXRDb25maWdzKGRw
eSwgbnVsbHB0ciwgMCwgJm51bUNvbmZpZ3MpOworICAgIHN0ZDo6dmVjdG9yPEVHTENvbmZpZz4g
YWxsQ29uZmlncyhudW1Db25maWdzKTsKKyAgICBlZ2xHZXRDb25maWdzKGRweSwgYWxsQ29uZmln
cy5kYXRhKCksIHN0YXRpY19jYXN0PEVHTGludD4oYWxsQ29uZmlncy5zaXplKCkpLCAmbnVtQ29u
Zmlncyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFsbENvbmZpZ3Muc2l6ZSgpOyBp
KyspCisgICAgeworICAgICAgICBib29sIG1hdGNoRm91bmQgPSB0cnVlOworICAgICAgICBmb3Ig
KGNvbnN0IEVHTGludCAqY3VyQXR0cmliID0gYXR0cmliX2xpc3Q7IGN1ckF0dHJpYlswXSAhPSBF
R0xfTk9ORTsgY3VyQXR0cmliICs9IDIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVHTGludCBh
Y3R1YWxWYWx1ZSA9IEVHTF9ET05UX0NBUkU7CisgICAgICAgICAgICBlZ2xHZXRDb25maWdBdHRy
aWIoZHB5LCBhbGxDb25maWdzW2ldLCBjdXJBdHRyaWJbMF0sICZhY3R1YWxWYWx1ZSk7CisgICAg
ICAgICAgICBpZiAoY3VyQXR0cmliWzFdICE9IGFjdHVhbFZhbHVlKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1hdGNoRm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtYXRjaEZvdW5kKQor
ICAgICAgICB7CisgICAgICAgICAgICAqY29uZmlnID0gYWxsQ29uZmlnc1tpXTsKKyAgICAgICAg
ICAgIHJldHVybiBFR0xfVFJVRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBFR0xf
RkFMU0U7Cit9CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL0VHTFdpbmRvdy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2luZG93LmgJ
KHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvRUdMV2lu
ZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMjAgKzcsMTcgQEAKICNpZm5kZWYgVVRJTF9FR0xX
SU5ET1dfSF8KICNkZWZpbmUgVVRJTF9FR0xXSU5ET1dfSF8KIAotI2RlZmluZSBHTF9HTEVYVF9Q
Uk9UT1RZUEVTCisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nPgogCi0jaW5jbHVkZSA8R0xFUzMvZ2wzLmg+Ci0j
aW5jbHVkZSA8R0xFUzMvZ2wzZXh0Lmg+CiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAjaW5jbHVk
ZSA8R0xFUzIvZ2wyZXh0Lmg+CisjaW5jbHVkZSA8R0xFUzMvZ2wzLmg+CiAjaW5jbHVkZSA8RUdM
L2VnbC5oPgogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KIAotI2luY2x1ZGUgPHN0cmluZz4KLSNp
bmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPGNzdGRpbnQ+Ci0jaW5jbHVkZSA8bWVtb3J5PgotCiAj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKIAogY2xhc3MgT1NXaW5kb3c7CkBAIC0zNywy
MiArMzQsMzAgQEAKICAgICBFR0xpbnQgbWFqb3JWZXJzaW9uOwogICAgIEVHTGludCBtaW5vclZl
cnNpb247CiAgICAgRUdMaW50IGRldmljZVR5cGU7CisgICAgRUdMaW50IHByZXNlbnRQYXRoOwog
CiAgICAgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKCk7CiAgICAgZXhwbGljaXQgRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKEVHTGludCByZW5kZXJlcik7CiAgICAgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKEVH
TGludCByZW5kZXJlciwgRUdMaW50IG1ham9yVmVyc2lvbiwgRUdMaW50IG1pbm9yVmVyc2lvbiwg
RUdMaW50IGRldmljZVR5cGUpOworICAgIEVHTFBsYXRmb3JtUGFyYW1ldGVycyhFR0xpbnQgcmVu
ZGVyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBtYWpvclZlcnNpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBtaW5vclZlcnNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCBkZXZpY2VUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xpbnQgcHJlc2VudFBhdGgpOwogfTsKIAorYm9vbCBvcGVyYXRvcjwoY29uc3QgRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpOwor
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29uc3QgRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKKwogY2xhc3MgRUdMV2luZG93IDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBFR0xXaW5kb3coc2l6ZV90IHdpZHRoLCBzaXplX3Qg
aGVpZ2h0LCBFR0xpbnQgZ2xlc01ham9yVmVyc2lvbiwgY29uc3QgRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzICZwbGF0Zm9ybSk7CisgICAgRUdMV2luZG93KEVHTGludCBnbGVzTWFqb3JWZXJzaW9uLAor
ICAgICAgICAgICAgICBFR0xpbnQgZ2xlc01pbm9yVmVyc2lvbiwKKyAgICAgICAgICAgICAgY29u
c3QgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZwbGF0Zm9ybSk7CiAKICAgICB+RUdMV2luZG93KCk7
CiAKLSAgICB2b2lkIHNldENsaWVudFZlcnNpb24oRUdMaW50IGdsZXNNYWpvclZlcnNpb24pIHsg
bUNsaWVudFZlcnNpb24gPSBnbGVzTWFqb3JWZXJzaW9uOyB9Ci0gICAgdm9pZCBzZXRXaWR0aChz
aXplX3Qgd2lkdGgpIHsgbVdpZHRoID0gd2lkdGg7IH0KLSAgICB2b2lkIHNldEhlaWdodChzaXpl
X3QgaGVpZ2h0KSB7IG1IZWlnaHQgPSBoZWlnaHQ7IH0KICAgICB2b2lkIHNldENvbmZpZ1JlZEJp
dHMoaW50IGJpdHMpIHsgbVJlZEJpdHMgPSBiaXRzOyB9CiAgICAgdm9pZCBzZXRDb25maWdHcmVl
bkJpdHMoaW50IGJpdHMpIHsgbUdyZWVuQml0cyA9IGJpdHM7IH0KICAgICB2b2lkIHNldENvbmZp
Z0JsdWVCaXRzKGludCBiaXRzKSB7IG1CbHVlQml0cyA9IGJpdHM7IH0KQEAgLTYwLDE4ICs2NSwy
MSBAQAogICAgIHZvaWQgc2V0Q29uZmlnRGVwdGhCaXRzKGludCBiaXRzKSB7IG1EZXB0aEJpdHMg
PSBiaXRzOyB9CiAgICAgdm9pZCBzZXRDb25maWdTdGVuY2lsQml0cyhpbnQgYml0cykgeyBtU3Rl
bmNpbEJpdHMgPSBiaXRzOyB9CiAgICAgdm9pZCBzZXRNdWx0aXNhbXBsZShib29sIG11bHRpc2Ft
cGxlKSB7IG1NdWx0aXNhbXBsZSA9IG11bHRpc2FtcGxlOyB9CisgICAgdm9pZCBzZXREZWJ1Z0Vu
YWJsZWQoYm9vbCBkZWJ1ZykgeyBtRGVidWcgPSBkZWJ1ZzsgfQorICAgIHZvaWQgc2V0Tm9FcnJv
ckVuYWJsZWQoYm9vbCBub0Vycm9yKSB7IG1Ob0Vycm9yID0gbm9FcnJvcjsgfQogICAgIHZvaWQg
c2V0U3dhcEludGVydmFsKEVHTGludCBzd2FwSW50ZXJ2YWwpIHsgbVN3YXBJbnRlcnZhbCA9IHN3
YXBJbnRlcnZhbDsgfQogCisgICAgc3RhdGljIEVHTEJvb2xlYW4gRmluZEVHTENvbmZpZyhFR0xE
aXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmlnICpjb25maWcp
OworCiAgICAgdm9pZCBzd2FwKCk7CiAKLSAgICBFR0xpbnQgZ2V0Q2xpZW50VmVyc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1DbGllbnRWZXJzaW9uOyB9CisgICAgRUdMaW50IGdldENsaWVudE1ham9y
VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb247IH0KKyAgICBFR0xp
bnQgZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbUNsaWVudE1pbm9yVmVy
c2lvbjsgfQogICAgIGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAmZ2V0UGxhdGZvcm0oKSBj
b25zdCB7IHJldHVybiBtUGxhdGZvcm07IH0KICAgICBFR0xDb25maWcgZ2V0Q29uZmlnKCkgY29u
c3Q7CiAgICAgRUdMRGlzcGxheSBnZXREaXNwbGF5KCkgY29uc3Q7CiAgICAgRUdMU3VyZmFjZSBn
ZXRTdXJmYWNlKCkgY29uc3Q7CiAgICAgRUdMQ29udGV4dCBnZXRDb250ZXh0KCkgY29uc3Q7Ci0g
ICAgc2l6ZV90IGdldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbVdpZHRoOyB9Ci0gICAgc2l6ZV90
IGdldEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1IZWlnaHQ7IH0KICAgICBpbnQgZ2V0Q29uZmln
UmVkQml0cygpIGNvbnN0IHsgcmV0dXJuIG1SZWRCaXRzOyB9CiAgICAgaW50IGdldENvbmZpZ0dy
ZWVuQml0cygpIGNvbnN0IHsgcmV0dXJuIG1HcmVlbkJpdHM7IH0KICAgICBpbnQgZ2V0Q29uZmln
Qmx1ZUJpdHMoKSBjb25zdCB7IHJldHVybiBtQmx1ZUJpdHM7IH0KQEAgLTc5LDYgKzg3LDcgQEAK
ICAgICBpbnQgZ2V0Q29uZmlnRGVwdGhCaXRzKCkgY29uc3QgeyByZXR1cm4gbURlcHRoQml0czsg
fQogICAgIGludCBnZXRDb25maWdTdGVuY2lsQml0cygpIGNvbnN0IHsgcmV0dXJuIG1TdGVuY2ls
Qml0czsgfQogICAgIGJvb2wgaXNNdWx0aXNhbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1NdWx0aXNh
bXBsZTsgfQorICAgIGJvb2wgaXNEZWJ1Z0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtRGVidWc7
IH0KICAgICBFR0xpbnQgZ2V0U3dhcEludGVydmFsKCkgY29uc3QgeyByZXR1cm4gbVN3YXBJbnRl
cnZhbDsgfQogCiAgICAgYm9vbCBpbml0aWFsaXplR0woT1NXaW5kb3cgKm9zV2luZG93KTsKQEAg
LTkxLDEwICsxMDAsOSBAQAogICAgIEVHTFN1cmZhY2UgbVN1cmZhY2U7CiAgICAgRUdMQ29udGV4
dCBtQ29udGV4dDsKIAotICAgIEVHTGludCBtQ2xpZW50VmVyc2lvbjsKKyAgICBFR0xpbnQgbUNs
aWVudE1ham9yVmVyc2lvbjsKKyAgICBFR0xpbnQgbUNsaWVudE1pbm9yVmVyc2lvbjsKICAgICBF
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgbVBsYXRmb3JtOwotICAgIHNpemVfdCBtV2lkdGg7Ci0gICAg
c2l6ZV90IG1IZWlnaHQ7CiAgICAgaW50IG1SZWRCaXRzOwogICAgIGludCBtR3JlZW5CaXRzOwog
ICAgIGludCBtQmx1ZUJpdHM7CkBAIC0xMDIsNiArMTEwLDggQEAKICAgICBpbnQgbURlcHRoQml0
czsKICAgICBpbnQgbVN0ZW5jaWxCaXRzOwogICAgIGJvb2wgbU11bHRpc2FtcGxlOworICAgIGJv
b2wgbURlYnVnOworICAgIGJvb2wgbU5vRXJyb3I7CiAgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7
CiB9OwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL01hdHJpeC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9NYXRyaXguY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9NYXRyaXguY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIE1hdHJpeDoKKy8v
ICAgSGVscGVyIGNsYXNzIGZvciBkb2luZyBtYXRyaXggbWF0aC4KKy8vCisKKyNpbmNsdWRlICJN
YXRyaXguaCIKKworI2RlZmluZSBfVVNFX01BVEhfREVGSU5FUworI2luY2x1ZGUgPG1hdGguaD4K
KyNpbmNsdWRlIDxjc3RkZGVmPgorCitNYXRyaXg0OjpNYXRyaXg0KCkKK3sKKyAgICBkYXRhWzBd
ICA9IDEuMGY7CisgICAgZGF0YVs0XSAgPSAwLjBmOworICAgIGRhdGFbOF0gID0gMC4wZjsKKyAg
ICBkYXRhWzEyXSA9IDAuMGY7CisgICAgZGF0YVsxXSAgPSAwLjBmOworICAgIGRhdGFbNV0gID0g
MS4wZjsKKyAgICBkYXRhWzldICA9IDAuMGY7CisgICAgZGF0YVsxM10gPSAwLjBmOworICAgIGRh
dGFbMl0gID0gMC4wZjsKKyAgICBkYXRhWzZdICA9IDAuMGY7CisgICAgZGF0YVsxMF0gPSAxLjBm
OworICAgIGRhdGFbMTRdID0gMC4wZjsKKyAgICBkYXRhWzNdICA9IDAuMGY7CisgICAgZGF0YVs3
XSAgPSAwLjBmOworICAgIGRhdGFbMTFdID0gMC4wZjsKKyAgICBkYXRhWzE1XSA9IDEuMGY7Cit9
CisKK01hdHJpeDQ6Ok1hdHJpeDQoZmxvYXQgbTAwLAorICAgICAgICAgICAgICAgICBmbG9hdCBt
MDEsCisgICAgICAgICAgICAgICAgIGZsb2F0IG0wMiwKKyAgICAgICAgICAgICAgICAgZmxvYXQg
bTAzLAorICAgICAgICAgICAgICAgICBmbG9hdCBtMTAsCisgICAgICAgICAgICAgICAgIGZsb2F0
IG0xMSwKKyAgICAgICAgICAgICAgICAgZmxvYXQgbTEyLAorICAgICAgICAgICAgICAgICBmbG9h
dCBtMTMsCisgICAgICAgICAgICAgICAgIGZsb2F0IG0yMCwKKyAgICAgICAgICAgICAgICAgZmxv
YXQgbTIxLAorICAgICAgICAgICAgICAgICBmbG9hdCBtMjIsCisgICAgICAgICAgICAgICAgIGZs
b2F0IG0yMywKKyAgICAgICAgICAgICAgICAgZmxvYXQgbTMwLAorICAgICAgICAgICAgICAgICBm
bG9hdCBtMzEsCisgICAgICAgICAgICAgICAgIGZsb2F0IG0zMiwKKyAgICAgICAgICAgICAgICAg
ZmxvYXQgbTMzKQoreworICAgIGRhdGFbMF0gID0gbTAwOworICAgIGRhdGFbNF0gID0gbTAxOwor
ICAgIGRhdGFbOF0gID0gbTAyOworICAgIGRhdGFbMTJdID0gbTAzOworICAgIGRhdGFbMV0gID0g
bTEwOworICAgIGRhdGFbNV0gID0gbTExOworICAgIGRhdGFbOV0gID0gbTEyOworICAgIGRhdGFb
MTNdID0gbTEzOworICAgIGRhdGFbMl0gID0gbTIwOworICAgIGRhdGFbNl0gID0gbTIxOworICAg
IGRhdGFbMTBdID0gbTIyOworICAgIGRhdGFbMTRdID0gbTIzOworICAgIGRhdGFbM10gID0gbTMw
OworICAgIGRhdGFbN10gID0gbTMxOworICAgIGRhdGFbMTFdID0gbTMyOworICAgIGRhdGFbMTVd
ID0gbTMzOworfQorCitNYXRyaXg0IE1hdHJpeDQ6OmlkZW50aXR5KCkKK3sKKyAgICByZXR1cm4g
TWF0cml4NCgxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAw
LjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLAorICAgICAgICAgICAgICAgICAgIDAuMGYsIDAu
MGYsIDEuMGYpOworfQorCitNYXRyaXg0IE1hdHJpeDQ6OnJvdGF0ZShmbG9hdCBhbmdsZSwgY29u
c3QgVmVjdG9yMyAmcCkKK3sKKyAgICBWZWN0b3IzIHUgICA9IFZlY3RvcjM6Om5vcm1hbGl6ZShw
KTsKKyAgICBmbG9hdCB0aGV0YSA9IHN0YXRpY19jYXN0PGZsb2F0PihhbmdsZSAqIChNX1BJIC8g
MTgwLjBmKSk7CisgICAgZmxvYXQgY29zX3QgPSBjb3NmKHRoZXRhKTsKKyAgICBmbG9hdCBzaW5f
dCA9IHNpbmYodGhldGEpOworCisgICAgcmV0dXJuIE1hdHJpeDQoCisgICAgICAgIGNvc190ICsg
KHUueCAqIHUueCAqICgxLjBmIC0gY29zX3QpKSwgKHUueCAqIHUueSAqICgxLjBmIC0gY29zX3Qp
KSAtICh1LnogKiBzaW5fdCksCisgICAgICAgICh1LnggKiB1LnogKiAoMS4wZiAtIGNvc190KSkg
KyAodS55ICogc2luX3QpLCAwLjBmLAorICAgICAgICAodS55ICogdS54ICogKDEuMGYgLSBjb3Nf
dCkpICsgKHUueiAqIHNpbl90KSwgY29zX3QgKyAodS55ICogdS55ICogKDEuMGYgLSBjb3NfdCkp
LAorICAgICAgICAodS55ICogdS56ICogKDEuMGYgLSBjb3NfdCkpIC0gKHUueCAqIHNpbl90KSwg
MC4wZiwKKyAgICAgICAgKHUueiAqIHUueCAqICgxLjBmIC0gY29zX3QpKSAtICh1LnkgKiBzaW5f
dCksICh1LnogKiB1LnkgKiAoMS4wZiAtIGNvc190KSkgKyAodS54ICogc2luX3QpLAorICAgICAg
ICBjb3NfdCArICh1LnogKiB1LnogKiAoMS4wZiAtIGNvc190KSksIDAuMGYsIDAuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOworfQorCitNYXRyaXg0IE1hdHJpeDQ6OnRyYW5zbGF0ZShjb25zdCBWZWN0
b3IzICZ0KQoreworICAgIHJldHVybiBNYXRyaXg0KDEuMGYsIDAuMGYsIDAuMGYsIHQueCwgMC4w
ZiwgMS4wZiwgMC4wZiwgdC55LCAwLjBmLCAwLjBmLCAxLjBmLCB0LnosIDAuMGYsIDAuMGYsCisg
ICAgICAgICAgICAgICAgICAgMC4wZiwgMS4wZik7Cit9CisKK01hdHJpeDQgTWF0cml4NDo6c2Nh
bGUoY29uc3QgVmVjdG9yMyAmcykKK3sKKyAgICByZXR1cm4gTWF0cml4NChzLngsIDAuMGYsIDAu
MGYsIDAuMGYsIDAuMGYsIHMueSwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgcy56LCAwLjBmLCAw
LjBmLCAwLjBmLAorICAgICAgICAgICAgICAgICAgIDAuMGYsIDEuMGYpOworfQorCitNYXRyaXg0
IE1hdHJpeDQ6OmZydXN0dW0oZmxvYXQgbCwgZmxvYXQgciwgZmxvYXQgYiwgZmxvYXQgdCwgZmxv
YXQgbiwgZmxvYXQgZikKK3sKKyAgICByZXR1cm4gTWF0cml4NCgoMi4wZiAqIG4pIC8gKHIgLSBs
KSwgMC4wZiwgKHIgKyBsKSAvIChyIC0gbCksIDAuMGYsIDAuMGYsICgyLjBmICogbikgLyAodCAt
IGIpLAorICAgICAgICAgICAgICAgICAgICh0ICsgYikgLyAodCAtIGIpLCAwLjBmLCAwLjBmLCAw
LjBmLCAtKGYgKyBuKSAvIChmIC0gbiksCisgICAgICAgICAgICAgICAgICAgLSgyLjBmICogZiAq
IG4pIC8gKGYgLSBuKSwgMC4wZiwgMC4wZiwgLTEuMGYsIDAuMGYpOworfQorCitNYXRyaXg0IE1h
dHJpeDQ6OnBlcnNwZWN0aXZlKGZsb2F0IGZvdlksIGZsb2F0IGFzcGVjdFJhdGlvLCBmbG9hdCBu
ZWFyWiwgZmxvYXQgZmFyWikKK3sKKyAgICBjb25zdCBmbG9hdCBmcnVzdHVtSGVpZ2h0ID0gdGFu
ZihzdGF0aWNfY2FzdDxmbG9hdD4oZm92WSAvIDM2MC4wZiAqIE1fUEkpKSAqIG5lYXJaOworICAg
IGNvbnN0IGZsb2F0IGZydXN0dW1XaWR0aCA9IGZydXN0dW1IZWlnaHQgKiBhc3BlY3RSYXRpbzsK
KyAgICByZXR1cm4gZnJ1c3R1bSgtZnJ1c3R1bVdpZHRoLCBmcnVzdHVtV2lkdGgsIC1mcnVzdHVt
SGVpZ2h0LCBmcnVzdHVtSGVpZ2h0LCBuZWFyWiwgZmFyWik7Cit9CisKK01hdHJpeDQgTWF0cml4
NDo6b3J0aG8oZmxvYXQgbCwgZmxvYXQgciwgZmxvYXQgYiwgZmxvYXQgdCwgZmxvYXQgbiwgZmxv
YXQgZikKK3sKKyAgICByZXR1cm4gTWF0cml4NCgyLjBmIC8gKHIgLSBsKSwgMC4wZiwgMC4wZiwg
LShyICsgbCkgLyAociAtIGwpLCAwLjBmLCAyLjBmIC8gKHQgLSBiKSwgMC4wZiwKKyAgICAgICAg
ICAgICAgICAgICAtKHQgKyBiKSAvICh0IC0gYiksIDAuMGYsIDAuMGYsIC0yLjBmIC8gKGYgLSBu
KSwgLShmICsgbikgLyAoZiAtIG4pLCAwLjBmLCAwLjBmLAorICAgICAgICAgICAgICAgICAgIDAu
MGYsIDEuMGYpOworfQorCitNYXRyaXg0IE1hdHJpeDQ6OnJvbGxQaXRjaFlhdyhmbG9hdCByb2xs
LCBmbG9hdCBwaXRjaCwgZmxvYXQgeWF3KQoreworICAgIHJldHVybiByb3RhdGUoeWF3LCBWZWN0
b3IzKDAsIDAsIDEpKSAqIHJvdGF0ZShwaXRjaCwgVmVjdG9yMygwLCAxLCAwKSkgKgorICAgICAg
ICAgICByb3RhdGUocm9sbCwgVmVjdG9yMygxLCAwLCAwKSk7Cit9CisKK01hdHJpeDQgTWF0cml4
NDo6aW52ZXJ0KGNvbnN0IE1hdHJpeDQgJm1hdCkKK3sKKyAgICBNYXRyaXg0IGludmVydGVkKAor
ICAgICAgICBtYXQuZGF0YVs1XSAqIG1hdC5kYXRhWzEwXSAqIG1hdC5kYXRhWzE1XSAtIG1hdC5k
YXRhWzVdICogbWF0LmRhdGFbMTFdICogbWF0LmRhdGFbMTRdIC0KKyAgICAgICAgICAgIG1hdC5k
YXRhWzldICogbWF0LmRhdGFbNl0gKiBtYXQuZGF0YVsxNV0gKyBtYXQuZGF0YVs5XSAqIG1hdC5k
YXRhWzddICogbWF0LmRhdGFbMTRdICsKKyAgICAgICAgICAgIG1hdC5kYXRhWzEzXSAqIG1hdC5k
YXRhWzZdICogbWF0LmRhdGFbMTFdIC0gbWF0LmRhdGFbMTNdICogbWF0LmRhdGFbN10gKiBtYXQu
ZGF0YVsxMF0sCisgICAgICAgIC1tYXQuZGF0YVs0XSAqIG1hdC5kYXRhWzEwXSAqIG1hdC5kYXRh
WzE1XSArIG1hdC5kYXRhWzRdICogbWF0LmRhdGFbMTFdICogbWF0LmRhdGFbMTRdICsKKyAgICAg
ICAgICAgIG1hdC5kYXRhWzhdICogbWF0LmRhdGFbNl0gKiBtYXQuZGF0YVsxNV0gLSBtYXQuZGF0
YVs4XSAqIG1hdC5kYXRhWzddICogbWF0LmRhdGFbMTRdIC0KKyAgICAgICAgICAgIG1hdC5kYXRh
WzEyXSAqIG1hdC5kYXRhWzZdICogbWF0LmRhdGFbMTFdICsgbWF0LmRhdGFbMTJdICogbWF0LmRh
dGFbN10gKiBtYXQuZGF0YVsxMF0sCisgICAgICAgIG1hdC5kYXRhWzRdICogbWF0LmRhdGFbOV0g
KiBtYXQuZGF0YVsxNV0gLSBtYXQuZGF0YVs0XSAqIG1hdC5kYXRhWzExXSAqIG1hdC5kYXRhWzEz
XSAtCisgICAgICAgICAgICBtYXQuZGF0YVs4XSAqIG1hdC5kYXRhWzVdICogbWF0LmRhdGFbMTVd
ICsgbWF0LmRhdGFbOF0gKiBtYXQuZGF0YVs3XSAqIG1hdC5kYXRhWzEzXSArCisgICAgICAgICAg
ICBtYXQuZGF0YVsxMl0gKiBtYXQuZGF0YVs1XSAqIG1hdC5kYXRhWzExXSAtIG1hdC5kYXRhWzEy
XSAqIG1hdC5kYXRhWzddICogbWF0LmRhdGFbOV0sCisgICAgICAgIC1tYXQuZGF0YVs0XSAqIG1h
dC5kYXRhWzldICogbWF0LmRhdGFbMTRdICsgbWF0LmRhdGFbNF0gKiBtYXQuZGF0YVsxMF0gKiBt
YXQuZGF0YVsxM10gKworICAgICAgICAgICAgbWF0LmRhdGFbOF0gKiBtYXQuZGF0YVs1XSAqIG1h
dC5kYXRhWzE0XSAtIG1hdC5kYXRhWzhdICogbWF0LmRhdGFbNl0gKiBtYXQuZGF0YVsxM10gLQor
ICAgICAgICAgICAgbWF0LmRhdGFbMTJdICogbWF0LmRhdGFbNV0gKiBtYXQuZGF0YVsxMF0gKyBt
YXQuZGF0YVsxMl0gKiBtYXQuZGF0YVs2XSAqIG1hdC5kYXRhWzldLAorICAgICAgICAtbWF0LmRh
dGFbMV0gKiBtYXQuZGF0YVsxMF0gKiBtYXQuZGF0YVsxNV0gKyBtYXQuZGF0YVsxXSAqIG1hdC5k
YXRhWzExXSAqIG1hdC5kYXRhWzE0XSArCisgICAgICAgICAgICBtYXQuZGF0YVs5XSAqIG1hdC5k
YXRhWzJdICogbWF0LmRhdGFbMTVdIC0gbWF0LmRhdGFbOV0gKiBtYXQuZGF0YVszXSAqIG1hdC5k
YXRhWzE0XSAtCisgICAgICAgICAgICBtYXQuZGF0YVsxM10gKiBtYXQuZGF0YVsyXSAqIG1hdC5k
YXRhWzExXSArIG1hdC5kYXRhWzEzXSAqIG1hdC5kYXRhWzNdICogbWF0LmRhdGFbMTBdLAorICAg
ICAgICBtYXQuZGF0YVswXSAqIG1hdC5kYXRhWzEwXSAqIG1hdC5kYXRhWzE1XSAtIG1hdC5kYXRh
WzBdICogbWF0LmRhdGFbMTFdICogbWF0LmRhdGFbMTRdIC0KKyAgICAgICAgICAgIG1hdC5kYXRh
WzhdICogbWF0LmRhdGFbMl0gKiBtYXQuZGF0YVsxNV0gKyBtYXQuZGF0YVs4XSAqIG1hdC5kYXRh
WzNdICogbWF0LmRhdGFbMTRdICsKKyAgICAgICAgICAgIG1hdC5kYXRhWzEyXSAqIG1hdC5kYXRh
WzJdICogbWF0LmRhdGFbMTFdIC0gbWF0LmRhdGFbMTJdICogbWF0LmRhdGFbM10gKiBtYXQuZGF0
YVsxMF0sCisgICAgICAgIC1tYXQuZGF0YVswXSAqIG1hdC5kYXRhWzldICogbWF0LmRhdGFbMTVd
ICsgbWF0LmRhdGFbMF0gKiBtYXQuZGF0YVsxMV0gKiBtYXQuZGF0YVsxM10gKworICAgICAgICAg
ICAgbWF0LmRhdGFbOF0gKiBtYXQuZGF0YVsxXSAqIG1hdC5kYXRhWzE1XSAtIG1hdC5kYXRhWzhd
ICogbWF0LmRhdGFbM10gKiBtYXQuZGF0YVsxM10gLQorICAgICAgICAgICAgbWF0LmRhdGFbMTJd
ICogbWF0LmRhdGFbMV0gKiBtYXQuZGF0YVsxMV0gKyBtYXQuZGF0YVsxMl0gKiBtYXQuZGF0YVsz
XSAqIG1hdC5kYXRhWzldLAorICAgICAgICBtYXQuZGF0YVswXSAqIG1hdC5kYXRhWzldICogbWF0
LmRhdGFbMTRdIC0gbWF0LmRhdGFbMF0gKiBtYXQuZGF0YVsxMF0gKiBtYXQuZGF0YVsxM10gLQor
ICAgICAgICAgICAgbWF0LmRhdGFbOF0gKiBtYXQuZGF0YVsxXSAqIG1hdC5kYXRhWzE0XSArIG1h
dC5kYXRhWzhdICogbWF0LmRhdGFbMl0gKiBtYXQuZGF0YVsxM10gKworICAgICAgICAgICAgbWF0
LmRhdGFbMTJdICogbWF0LmRhdGFbMV0gKiBtYXQuZGF0YVsxMF0gLSBtYXQuZGF0YVsxMl0gKiBt
YXQuZGF0YVsyXSAqIG1hdC5kYXRhWzldLAorICAgICAgICBtYXQuZGF0YVsxXSAqIG1hdC5kYXRh
WzZdICogbWF0LmRhdGFbMTVdIC0gbWF0LmRhdGFbMV0gKiBtYXQuZGF0YVs3XSAqIG1hdC5kYXRh
WzE0XSAtCisgICAgICAgICAgICBtYXQuZGF0YVs1XSAqIG1hdC5kYXRhWzJdICogbWF0LmRhdGFb
MTVdICsgbWF0LmRhdGFbNV0gKiBtYXQuZGF0YVszXSAqIG1hdC5kYXRhWzE0XSArCisgICAgICAg
ICAgICBtYXQuZGF0YVsxM10gKiBtYXQuZGF0YVsyXSAqIG1hdC5kYXRhWzddIC0gbWF0LmRhdGFb
MTNdICogbWF0LmRhdGFbM10gKiBtYXQuZGF0YVs2XSwKKyAgICAgICAgLW1hdC5kYXRhWzBdICog
bWF0LmRhdGFbNl0gKiBtYXQuZGF0YVsxNV0gKyBtYXQuZGF0YVswXSAqIG1hdC5kYXRhWzddICog
bWF0LmRhdGFbMTRdICsKKyAgICAgICAgICAgIG1hdC5kYXRhWzRdICogbWF0LmRhdGFbMl0gKiBt
YXQuZGF0YVsxNV0gLSBtYXQuZGF0YVs0XSAqIG1hdC5kYXRhWzNdICogbWF0LmRhdGFbMTRdIC0K
KyAgICAgICAgICAgIG1hdC5kYXRhWzEyXSAqIG1hdC5kYXRhWzJdICogbWF0LmRhdGFbN10gKyBt
YXQuZGF0YVsxMl0gKiBtYXQuZGF0YVszXSAqIG1hdC5kYXRhWzZdLAorICAgICAgICBtYXQuZGF0
YVswXSAqIG1hdC5kYXRhWzVdICogbWF0LmRhdGFbMTVdIC0gbWF0LmRhdGFbMF0gKiBtYXQuZGF0
YVs3XSAqIG1hdC5kYXRhWzEzXSAtCisgICAgICAgICAgICBtYXQuZGF0YVs0XSAqIG1hdC5kYXRh
WzFdICogbWF0LmRhdGFbMTVdICsgbWF0LmRhdGFbNF0gKiBtYXQuZGF0YVszXSAqIG1hdC5kYXRh
WzEzXSArCisgICAgICAgICAgICBtYXQuZGF0YVsxMl0gKiBtYXQuZGF0YVsxXSAqIG1hdC5kYXRh
WzddIC0gbWF0LmRhdGFbMTJdICogbWF0LmRhdGFbM10gKiBtYXQuZGF0YVs1XSwKKyAgICAgICAg
LW1hdC5kYXRhWzBdICogbWF0LmRhdGFbNV0gKiBtYXQuZGF0YVsxNF0gKyBtYXQuZGF0YVswXSAq
IG1hdC5kYXRhWzZdICogbWF0LmRhdGFbMTNdICsKKyAgICAgICAgICAgIG1hdC5kYXRhWzRdICog
bWF0LmRhdGFbMV0gKiBtYXQuZGF0YVsxNF0gLSBtYXQuZGF0YVs0XSAqIG1hdC5kYXRhWzJdICog
bWF0LmRhdGFbMTNdIC0KKyAgICAgICAgICAgIG1hdC5kYXRhWzEyXSAqIG1hdC5kYXRhWzFdICog
bWF0LmRhdGFbNl0gKyBtYXQuZGF0YVsxMl0gKiBtYXQuZGF0YVsyXSAqIG1hdC5kYXRhWzVdLAor
ICAgICAgICAtbWF0LmRhdGFbMV0gKiBtYXQuZGF0YVs2XSAqIG1hdC5kYXRhWzExXSArIG1hdC5k
YXRhWzFdICogbWF0LmRhdGFbN10gKiBtYXQuZGF0YVsxMF0gKworICAgICAgICAgICAgbWF0LmRh
dGFbNV0gKiBtYXQuZGF0YVsyXSAqIG1hdC5kYXRhWzExXSAtIG1hdC5kYXRhWzVdICogbWF0LmRh
dGFbM10gKiBtYXQuZGF0YVsxMF0gLQorICAgICAgICAgICAgbWF0LmRhdGFbOV0gKiBtYXQuZGF0
YVsyXSAqIG1hdC5kYXRhWzddICsgbWF0LmRhdGFbOV0gKiBtYXQuZGF0YVszXSAqIG1hdC5kYXRh
WzZdLAorICAgICAgICBtYXQuZGF0YVswXSAqIG1hdC5kYXRhWzZdICogbWF0LmRhdGFbMTFdIC0g
bWF0LmRhdGFbMF0gKiBtYXQuZGF0YVs3XSAqIG1hdC5kYXRhWzEwXSAtCisgICAgICAgICAgICBt
YXQuZGF0YVs0XSAqIG1hdC5kYXRhWzJdICogbWF0LmRhdGFbMTFdICsgbWF0LmRhdGFbNF0gKiBt
YXQuZGF0YVszXSAqIG1hdC5kYXRhWzEwXSArCisgICAgICAgICAgICBtYXQuZGF0YVs4XSAqIG1h
dC5kYXRhWzJdICogbWF0LmRhdGFbN10gLSBtYXQuZGF0YVs4XSAqIG1hdC5kYXRhWzNdICogbWF0
LmRhdGFbNl0sCisgICAgICAgIC1tYXQuZGF0YVswXSAqIG1hdC5kYXRhWzVdICogbWF0LmRhdGFb
MTFdICsgbWF0LmRhdGFbMF0gKiBtYXQuZGF0YVs3XSAqIG1hdC5kYXRhWzldICsKKyAgICAgICAg
ICAgIG1hdC5kYXRhWzRdICogbWF0LmRhdGFbMV0gKiBtYXQuZGF0YVsxMV0gLSBtYXQuZGF0YVs0
XSAqIG1hdC5kYXRhWzNdICogbWF0LmRhdGFbOV0gLQorICAgICAgICAgICAgbWF0LmRhdGFbOF0g
KiBtYXQuZGF0YVsxXSAqIG1hdC5kYXRhWzddICsgbWF0LmRhdGFbOF0gKiBtYXQuZGF0YVszXSAq
IG1hdC5kYXRhWzVdLAorICAgICAgICBtYXQuZGF0YVswXSAqIG1hdC5kYXRhWzVdICogbWF0LmRh
dGFbMTBdIC0gbWF0LmRhdGFbMF0gKiBtYXQuZGF0YVs2XSAqIG1hdC5kYXRhWzldIC0KKyAgICAg
ICAgICAgIG1hdC5kYXRhWzRdICogbWF0LmRhdGFbMV0gKiBtYXQuZGF0YVsxMF0gKyBtYXQuZGF0
YVs0XSAqIG1hdC5kYXRhWzJdICogbWF0LmRhdGFbOV0gKworICAgICAgICAgICAgbWF0LmRhdGFb
OF0gKiBtYXQuZGF0YVsxXSAqIG1hdC5kYXRhWzZdIC0gbWF0LmRhdGFbOF0gKiBtYXQuZGF0YVsy
XSAqIG1hdC5kYXRhWzVdKTsKKworICAgIGZsb2F0IGRldGVybWluYW50ID0gbWF0LmRhdGFbMF0g
KiBpbnZlcnRlZC5kYXRhWzBdICsgbWF0LmRhdGFbMV0gKiBpbnZlcnRlZC5kYXRhWzRdICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdC5kYXRhWzJdICogaW52ZXJ0ZWQuZGF0YVs4XSArIG1h
dC5kYXRhWzNdICogaW52ZXJ0ZWQuZGF0YVsxMl07CisKKyAgICBpZiAoZGV0ZXJtaW5hbnQgIT0g
MC4wZikKKyAgICB7CisgICAgICAgIGludmVydGVkICo9IDEuMGYgLyBkZXRlcm1pbmFudDsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgaW52ZXJ0ZWQgPSBpZGVudGl0eSgpOworICAg
IH0KKworICAgIHJldHVybiBpbnZlcnRlZDsKK30KKworTWF0cml4NCBNYXRyaXg0Ojp0cmFuc3Bv
c2UoY29uc3QgTWF0cml4NCAmbWF0KQoreworICAgIHJldHVybiBNYXRyaXg0KG1hdC5kYXRhWzBd
LCBtYXQuZGF0YVsxXSwgbWF0LmRhdGFbMl0sIG1hdC5kYXRhWzNdLCBtYXQuZGF0YVs0XSwgbWF0
LmRhdGFbNV0sCisgICAgICAgICAgICAgICAgICAgbWF0LmRhdGFbNl0sIG1hdC5kYXRhWzddLCBt
YXQuZGF0YVs4XSwgbWF0LmRhdGFbOV0sIG1hdC5kYXRhWzEwXSwgbWF0LmRhdGFbMTFdLAorICAg
ICAgICAgICAgICAgICAgIG1hdC5kYXRhWzEyXSwgbWF0LmRhdGFbMTNdLCBtYXQuZGF0YVsxNF0s
IG1hdC5kYXRhWzE1XSk7Cit9CisKK1ZlY3RvcjMgTWF0cml4NDo6dHJhbnNmb3JtKGNvbnN0IE1h
dHJpeDQgJm1hdCwgY29uc3QgVmVjdG9yMyAmcHQpCit7CisgICAgVmVjdG9yNCB0cmFuc2Zvcm1l
ZCA9IFZlY3RvcjQ6Om5vcm1hbGl6ZShtYXQgKiBWZWN0b3I0KHB0LngsIHB0LnksIHB0LnosIDEu
MGYpKTsKKyAgICByZXR1cm4gVmVjdG9yMyh0cmFuc2Zvcm1lZC54LCB0cmFuc2Zvcm1lZC55LCB0
cmFuc2Zvcm1lZC56KTsKK30KKworVmVjdG9yMyBNYXRyaXg0Ojp0cmFuc2Zvcm0oY29uc3QgTWF0
cml4NCAmbWF0LCBjb25zdCBWZWN0b3I0ICZwdCkKK3sKKyAgICBWZWN0b3I0IHRyYW5zZm9ybWVk
ID0gVmVjdG9yNDo6bm9ybWFsaXplKG1hdCAqIHB0KTsKKyAgICByZXR1cm4gVmVjdG9yMyh0cmFu
c2Zvcm1lZC54LCB0cmFuc2Zvcm1lZC55LCB0cmFuc2Zvcm1lZC56KTsKK30KKworTWF0cml4NCBv
cGVyYXRvciooY29uc3QgTWF0cml4NCAmYSwgY29uc3QgTWF0cml4NCAmYikKK3sKKyAgICByZXR1
cm4gTWF0cml4NChhLmRhdGFbMF0gKiBiLmRhdGFbMF0gKyBhLmRhdGFbNF0gKiBiLmRhdGFbMV0g
KyBhLmRhdGFbOF0gKiBiLmRhdGFbMl0gKworICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGFb
MTJdICogYi5kYXRhWzNdLAorICAgICAgICAgICAgICAgICAgIGEuZGF0YVswXSAqIGIuZGF0YVs0
XSArIGEuZGF0YVs0XSAqIGIuZGF0YVs1XSArIGEuZGF0YVs4XSAqIGIuZGF0YVs2XSArCisgICAg
ICAgICAgICAgICAgICAgICAgIGEuZGF0YVsxMl0gKiBiLmRhdGFbN10sCisgICAgICAgICAgICAg
ICAgICAgYS5kYXRhWzBdICogYi5kYXRhWzhdICsgYS5kYXRhWzRdICogYi5kYXRhWzldICsgYS5k
YXRhWzhdICogYi5kYXRhWzEwXSArCisgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YVsxMl0g
KiBiLmRhdGFbMTFdLAorICAgICAgICAgICAgICAgICAgIGEuZGF0YVswXSAqIGIuZGF0YVsxMl0g
KyBhLmRhdGFbNF0gKiBiLmRhdGFbMTNdICsgYS5kYXRhWzhdICogYi5kYXRhWzE0XSArCisgICAg
ICAgICAgICAgICAgICAgICAgIGEuZGF0YVsxMl0gKiBiLmRhdGFbMTVdLAorICAgICAgICAgICAg
ICAgICAgIGEuZGF0YVsxXSAqIGIuZGF0YVswXSArIGEuZGF0YVs1XSAqIGIuZGF0YVsxXSArIGEu
ZGF0YVs5XSAqIGIuZGF0YVsyXSArCisgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YVsxM10g
KiBiLmRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgYS5kYXRhWzFdICogYi5kYXRhWzRdICsg
YS5kYXRhWzVdICogYi5kYXRhWzVdICsgYS5kYXRhWzldICogYi5kYXRhWzZdICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgYS5kYXRhWzEzXSAqIGIuZGF0YVs3XSwKKyAgICAgICAgICAgICAgICAg
ICBhLmRhdGFbMV0gKiBiLmRhdGFbOF0gKyBhLmRhdGFbNV0gKiBiLmRhdGFbOV0gKyBhLmRhdGFb
OV0gKiBiLmRhdGFbMTBdICsKKyAgICAgICAgICAgICAgICAgICAgICAgYS5kYXRhWzEzXSAqIGIu
ZGF0YVsxMV0sCisgICAgICAgICAgICAgICAgICAgYS5kYXRhWzFdICogYi5kYXRhWzEyXSArIGEu
ZGF0YVs1XSAqIGIuZGF0YVsxM10gKyBhLmRhdGFbOV0gKiBiLmRhdGFbMTRdICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgYS5kYXRhWzEzXSAqIGIuZGF0YVsxNV0sCisgICAgICAgICAgICAgICAg
ICAgYS5kYXRhWzJdICogYi5kYXRhWzBdICsgYS5kYXRhWzZdICogYi5kYXRhWzFdICsgYS5kYXRh
WzEwXSAqIGIuZGF0YVsyXSArCisgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YVsxNF0gKiBi
LmRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgYS5kYXRhWzJdICogYi5kYXRhWzRdICsgYS5k
YXRhWzZdICogYi5kYXRhWzVdICsgYS5kYXRhWzEwXSAqIGIuZGF0YVs2XSArCisgICAgICAgICAg
ICAgICAgICAgICAgIGEuZGF0YVsxNF0gKiBiLmRhdGFbN10sCisgICAgICAgICAgICAgICAgICAg
YS5kYXRhWzJdICogYi5kYXRhWzhdICsgYS5kYXRhWzZdICogYi5kYXRhWzldICsgYS5kYXRhWzEw
XSAqIGIuZGF0YVsxMF0gKworICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGFbMTRdICogYi5k
YXRhWzExXSwKKyAgICAgICAgICAgICAgICAgICBhLmRhdGFbMl0gKiBiLmRhdGFbMTJdICsgYS5k
YXRhWzZdICogYi5kYXRhWzEzXSArIGEuZGF0YVsxMF0gKiBiLmRhdGFbMTRdICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgYS5kYXRhWzE0XSAqIGIuZGF0YVsxNV0sCisgICAgICAgICAgICAgICAg
ICAgYS5kYXRhWzNdICogYi5kYXRhWzBdICsgYS5kYXRhWzddICogYi5kYXRhWzFdICsgYS5kYXRh
WzExXSAqIGIuZGF0YVsyXSArCisgICAgICAgICAgICAgICAgICAgICAgIGEuZGF0YVsxNV0gKiBi
LmRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgYS5kYXRhWzNdICogYi5kYXRhWzRdICsgYS5k
YXRhWzddICogYi5kYXRhWzVdICsgYS5kYXRhWzExXSAqIGIuZGF0YVs2XSArCisgICAgICAgICAg
ICAgICAgICAgICAgIGEuZGF0YVsxNV0gKiBiLmRhdGFbN10sCisgICAgICAgICAgICAgICAgICAg
YS5kYXRhWzNdICogYi5kYXRhWzhdICsgYS5kYXRhWzddICogYi5kYXRhWzldICsgYS5kYXRhWzEx
XSAqIGIuZGF0YVsxMF0gKworICAgICAgICAgICAgICAgICAgICAgICBhLmRhdGFbMTVdICogYi5k
YXRhWzExXSwKKyAgICAgICAgICAgICAgICAgICBhLmRhdGFbM10gKiBiLmRhdGFbMTJdICsgYS5k
YXRhWzddICogYi5kYXRhWzEzXSArIGEuZGF0YVsxMV0gKiBiLmRhdGFbMTRdICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgYS5kYXRhWzE1XSAqIGIuZGF0YVsxNV0pOworfQorCitNYXRyaXg0ICZv
cGVyYXRvcio9KE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpCit7CisgICAgYSA9IGEgKiBi
OworICAgIHJldHVybiBhOworfQorCitNYXRyaXg0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZh
LCBmbG9hdCBiKQoreworICAgIE1hdHJpeDQgcmV0KGEpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgMTY7IGkrKykKKyAgICB7CisgICAgICAgIHJldC5kYXRhW2ldICo9IGI7CisgICAgfQor
ICAgIHJldHVybiByZXQ7Cit9CisKK01hdHJpeDQgJm9wZXJhdG9yKj0oTWF0cml4NCAmYSwgZmxv
YXQgYikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpKyspCisgICAgeworICAg
ICAgICBhLmRhdGFbaV0gKj0gYjsKKyAgICB9CisgICAgcmV0dXJuIGE7Cit9CisKK1ZlY3RvcjQg
b3BlcmF0b3IqKGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IFZlY3RvcjQgJmIpCit7CisgICAgcmV0
dXJuIFZlY3RvcjQoYS5kYXRhWzBdICogYi54ICsgYS5kYXRhWzRdICogYi55ICsgYS5kYXRhWzhd
ICogYi56ICsgYS5kYXRhWzEyXSAqIGIudywKKyAgICAgICAgICAgICAgICAgICBhLmRhdGFbMV0g
KiBiLnggKyBhLmRhdGFbNV0gKiBiLnkgKyBhLmRhdGFbOV0gKiBiLnogKyBhLmRhdGFbMTNdICog
Yi53LAorICAgICAgICAgICAgICAgICAgIGEuZGF0YVsyXSAqIGIueCArIGEuZGF0YVs2XSAqIGIu
eSArIGEuZGF0YVsxMF0gKiBiLnogKyBhLmRhdGFbMTRdICogYi53LAorICAgICAgICAgICAgICAg
ICAgIGEuZGF0YVszXSAqIGIueCArIGEuZGF0YVs3XSAqIGIueSArIGEuZGF0YVsxMV0gKiBiLnog
KyBhLmRhdGFbMTVdICogYi53KTsKK30KKworYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeDQg
JmEsIGNvbnN0IE1hdHJpeDQgJmIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsg
aSsrKQorICAgIHsKKyAgICAgICAgaWYgKGEuZGF0YVtpXSAhPSBiLmRhdGFbaV0pCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1h
dHJpeDQgJmIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KSW5kZXg6IFNvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3V0aWwvTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvdXRpbC9NYXRyaXguaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3V0aWwvTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLy8K
Ky8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBNYXRyaXg6CisvLyAgIEhlbHBlciBjbGFzcyBmb3IgZG9pbmcgbWF0cml4
IG1hdGguCisvLworCisjaWZuZGVmIFVUSUxfTUFUUklYX0gKKyNkZWZpbmUgVVRJTF9NQVRSSVhf
SAorCisjaW5jbHVkZSAiVmVjdG9yLmgiCisKK3N0cnVjdCBNYXRyaXg0Cit7CisgICAgZmxvYXQg
ZGF0YVsxNl07CisKKyAgICBNYXRyaXg0KCk7CisgICAgTWF0cml4NChmbG9hdCBtMDAsCisgICAg
ICAgICAgICBmbG9hdCBtMDEsCisgICAgICAgICAgICBmbG9hdCBtMDIsCisgICAgICAgICAgICBm
bG9hdCBtMDMsCisgICAgICAgICAgICBmbG9hdCBtMTAsCisgICAgICAgICAgICBmbG9hdCBtMTEs
CisgICAgICAgICAgICBmbG9hdCBtMTIsCisgICAgICAgICAgICBmbG9hdCBtMTMsCisgICAgICAg
ICAgICBmbG9hdCBtMjAsCisgICAgICAgICAgICBmbG9hdCBtMjEsCisgICAgICAgICAgICBmbG9h
dCBtMjIsCisgICAgICAgICAgICBmbG9hdCBtMjMsCisgICAgICAgICAgICBmbG9hdCBtMzAsCisg
ICAgICAgICAgICBmbG9hdCBtMzEsCisgICAgICAgICAgICBmbG9hdCBtMzIsCisgICAgICAgICAg
ICBmbG9hdCBtMzMpOworCisgICAgc3RhdGljIE1hdHJpeDQgaWRlbnRpdHkoKTsKKyAgICBzdGF0
aWMgTWF0cml4NCByb3RhdGUoZmxvYXQgYW5nbGUsIGNvbnN0IFZlY3RvcjMgJnApOworICAgIHN0
YXRpYyBNYXRyaXg0IHRyYW5zbGF0ZShjb25zdCBWZWN0b3IzICZ0KTsKKyAgICBzdGF0aWMgTWF0
cml4NCBzY2FsZShjb25zdCBWZWN0b3IzICZzKTsKKyAgICBzdGF0aWMgTWF0cml4NCBmcnVzdHVt
KGZsb2F0IGwsIGZsb2F0IHIsIGZsb2F0IGIsIGZsb2F0IHQsIGZsb2F0IG4sIGZsb2F0IGYpOwor
ICAgIHN0YXRpYyBNYXRyaXg0IHBlcnNwZWN0aXZlKGZsb2F0IGZvdiwgZmxvYXQgYXNwZWN0UmF0
aW8sIGZsb2F0IG4sIGZsb2F0IGYpOworICAgIHN0YXRpYyBNYXRyaXg0IG9ydGhvKGZsb2F0IGws
IGZsb2F0IHIsIGZsb2F0IGIsIGZsb2F0IHQsIGZsb2F0IG4sIGZsb2F0IGYpOworICAgIHN0YXRp
YyBNYXRyaXg0IHJvbGxQaXRjaFlhdyhmbG9hdCByb2xsLCBmbG9hdCBwaXRjaCwgZmxvYXQgeWF3
KTsKKworICAgIHN0YXRpYyBNYXRyaXg0IGludmVydChjb25zdCBNYXRyaXg0ICZtYXQpOworICAg
IHN0YXRpYyBNYXRyaXg0IHRyYW5zcG9zZShjb25zdCBNYXRyaXg0ICZtYXQpOworICAgIHN0YXRp
YyBWZWN0b3IzIHRyYW5zZm9ybShjb25zdCBNYXRyaXg0ICZtYXQsIGNvbnN0IFZlY3RvcjMgJnB0
KTsKKyAgICBzdGF0aWMgVmVjdG9yMyB0cmFuc2Zvcm0oY29uc3QgTWF0cml4NCAmbWF0LCBjb25z
dCBWZWN0b3I0ICZwdCk7Cit9OworCitNYXRyaXg0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZh
LCBjb25zdCBNYXRyaXg0ICZiKTsKK01hdHJpeDQgJm9wZXJhdG9yKj0oTWF0cml4NCAmYSwgY29u
c3QgTWF0cml4NCAmYik7CitNYXRyaXg0IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZhLCBmbG9h
dCBiKTsKK01hdHJpeDQgJm9wZXJhdG9yKj0oTWF0cml4NCAmYSwgZmxvYXQgYik7CitWZWN0b3I0
IG9wZXJhdG9yKihjb25zdCBNYXRyaXg0ICZhLCBjb25zdCBWZWN0b3I0ICZiKTsKKworYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOworYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE1hdHJpeDQgJmEsIGNvbnN0IE1hdHJpeDQgJmIpOworCisjZW5kaWYgIC8v
IFVUSUxfTUFUUklYX0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvT1NQaXht
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TUGl4bWFw
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TUGl4bWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIE9T
UGl4bWFwLmg6IERlZmluaXRpb24gb2YgYW4gYWJzdHJhY3QgcGl4bWFwIGNsYXNzCisKKyNpZm5k
ZWYgU0FNUExFX1VUSUxfUElYTUFQX0hfCisjZGVmaW5lIFNBTVBMRV9VVElMX1BJWE1BUF9IXwor
CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8
RUdML2VnbGV4dC5oPgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKworY2xhc3MgT1NQaXhtYXAKK3sK
KyAgcHVibGljOgorICAgIE9TUGl4bWFwKCkge30KKyAgICB2aXJ0dWFsIH5PU1BpeG1hcCgpIHt9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNw
bGF5LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIGludCBkZXB0aCkgPSAwOworCisgICAg
dmlydHVhbCBFR0xOYXRpdmVQaXhtYXBUeXBlIGdldE5hdGl2ZVBpeG1hcCgpIGNvbnN0ID0gMDsK
K307CisKK09TUGl4bWFwICpDcmVhdGVPU1BpeG1hcCgpOworCisjZW5kaWYgLy8gU0FNUExFX1VU
SUxfUElYTUFQX0hfCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TV2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL09TV2luZG93
LmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9P
U1dpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYsNiArNiwyNDAgQEAKIAogI2luY2x1ZGUg
Ik9TV2luZG93LmgiCiAKKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxzc3RyZWFtPgor
CisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKKyNpZm5kZWYgREVCVUdfRVZFTlRTCisjZGVm
aW5lIERFQlVHX0VWRU5UUyAwCisjZW5kaWYKKworI2lmIERFQlVHX0VWRU5UUworc3RhdGljIGNv
bnN0IGNoYXIgKk1vdXNlQnV0dG9uTmFtZShNb3VzZUJ1dHRvbiBidXR0b24pCit7CisgICAgc3dp
dGNoIChidXR0b24pCisgICAgeworICAgICAgY2FzZSBNT1VTRUJVVFRPTl9VTktOT1dOOgorICAg
ICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgY2FzZSBNT1VTRUJVVFRPTl9MRUZUOgorICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgY2FzZSBNT1VTRUJVVFRPTl9SSUdIVDoKKyAgICAg
ICAgcmV0dXJuICJSaWdodCI7CisgICAgICBjYXNlIE1PVVNFQlVUVE9OX01JRERMRToKKyAgICAg
ICAgcmV0dXJuICJNaWRkbGUiOworICAgICAgY2FzZSBNT1VTRUJVVFRPTl9CVVRUT040OgorICAg
ICAgICByZXR1cm4gIkJ1dHRvbjQiOworICAgICAgY2FzZSBNT1VTRUJVVFRPTl9CVVRUT041Ogor
ICAgICAgICByZXR1cm4gIkJ1dHRvbjUiOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorfQorCitzdGF0aWMgY29u
c3QgY2hhciAqS2V5TmFtZShLZXkga2V5KQoreworICAgIHN3aXRjaCAoa2V5KQorICAgIHsKKyAg
ICAgIGNhc2UgS0VZX1VOS05PV046ICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgIGNhc2UgS0VZ
X0E6ICAgICAgICAgcmV0dXJuICJBIjsKKyAgICAgIGNhc2UgS0VZX0I6ICAgICAgICAgcmV0dXJu
ICJCIjsKKyAgICAgIGNhc2UgS0VZX0M6ICAgICAgICAgcmV0dXJuICJDIjsKKyAgICAgIGNhc2Ug
S0VZX0Q6ICAgICAgICAgcmV0dXJuICJEIjsKKyAgICAgIGNhc2UgS0VZX0U6ICAgICAgICAgcmV0
dXJuICJFIjsKKyAgICAgIGNhc2UgS0VZX0Y6ICAgICAgICAgcmV0dXJuICJGIjsKKyAgICAgIGNh
c2UgS0VZX0c6ICAgICAgICAgcmV0dXJuICJHIjsKKyAgICAgIGNhc2UgS0VZX0g6ICAgICAgICAg
cmV0dXJuICJIIjsKKyAgICAgIGNhc2UgS0VZX0k6ICAgICAgICAgcmV0dXJuICJJIjsKKyAgICAg
IGNhc2UgS0VZX0o6ICAgICAgICAgcmV0dXJuICJKIjsKKyAgICAgIGNhc2UgS0VZX0s6ICAgICAg
ICAgcmV0dXJuICJLIjsKKyAgICAgIGNhc2UgS0VZX0w6ICAgICAgICAgcmV0dXJuICJMIjsKKyAg
ICAgIGNhc2UgS0VZX006ICAgICAgICAgcmV0dXJuICJNIjsKKyAgICAgIGNhc2UgS0VZX046ICAg
ICAgICAgcmV0dXJuICJOIjsKKyAgICAgIGNhc2UgS0VZX086ICAgICAgICAgcmV0dXJuICJPIjsK
KyAgICAgIGNhc2UgS0VZX1A6ICAgICAgICAgcmV0dXJuICJQIjsKKyAgICAgIGNhc2UgS0VZX1E6
ICAgICAgICAgcmV0dXJuICJRIjsKKyAgICAgIGNhc2UgS0VZX1I6ICAgICAgICAgcmV0dXJuICJS
IjsKKyAgICAgIGNhc2UgS0VZX1M6ICAgICAgICAgcmV0dXJuICJTIjsKKyAgICAgIGNhc2UgS0VZ
X1Q6ICAgICAgICAgcmV0dXJuICJUIjsKKyAgICAgIGNhc2UgS0VZX1U6ICAgICAgICAgcmV0dXJu
ICJVIjsKKyAgICAgIGNhc2UgS0VZX1Y6ICAgICAgICAgcmV0dXJuICJWIjsKKyAgICAgIGNhc2Ug
S0VZX1c6ICAgICAgICAgcmV0dXJuICJXIjsKKyAgICAgIGNhc2UgS0VZX1g6ICAgICAgICAgcmV0
dXJuICJYIjsKKyAgICAgIGNhc2UgS0VZX1k6ICAgICAgICAgcmV0dXJuICJZIjsKKyAgICAgIGNh
c2UgS0VZX1o6ICAgICAgICAgcmV0dXJuICJaIjsKKyAgICAgIGNhc2UgS0VZX05VTTA6ICAgICAg
cmV0dXJuICJOdW0wIjsKKyAgICAgIGNhc2UgS0VZX05VTTE6ICAgICAgcmV0dXJuICJOdW0xIjsK
KyAgICAgIGNhc2UgS0VZX05VTTI6ICAgICAgcmV0dXJuICJOdW0yIjsKKyAgICAgIGNhc2UgS0VZ
X05VTTM6ICAgICAgcmV0dXJuICJOdW0zIjsKKyAgICAgIGNhc2UgS0VZX05VTTQ6ICAgICAgcmV0
dXJuICJOdW00IjsKKyAgICAgIGNhc2UgS0VZX05VTTU6ICAgICAgcmV0dXJuICJOdW01IjsKKyAg
ICAgIGNhc2UgS0VZX05VTTY6ICAgICAgcmV0dXJuICJOdW02IjsKKyAgICAgIGNhc2UgS0VZX05V
TTc6ICAgICAgcmV0dXJuICJOdW03IjsKKyAgICAgIGNhc2UgS0VZX05VTTg6ICAgICAgcmV0dXJu
ICJOdW04IjsKKyAgICAgIGNhc2UgS0VZX05VTTk6ICAgICAgcmV0dXJuICJOdW05IjsKKyAgICAg
IGNhc2UgS0VZX0VTQ0FQRTogICAgcmV0dXJuICJFc2NhcGUiOworICAgICAgY2FzZSBLRVlfTENP
TlRST0w6ICByZXR1cm4gIkxlZnQgQ29udHJvbCI7CisgICAgICBjYXNlIEtFWV9MU0hJRlQ6ICAg
IHJldHVybiAiTGVmdCBTaGlmdCI7CisgICAgICBjYXNlIEtFWV9MQUxUOiAgICAgIHJldHVybiAi
TGVmdCBBbHQiOworICAgICAgY2FzZSBLRVlfTFNZU1RFTTogICByZXR1cm4gIkxlZnQgU3lzdGVt
IjsKKyAgICAgIGNhc2UgS0VZX1JDT05UUk9MOiAgcmV0dXJuICJSaWdodCBDb250cm9sIjsKKyAg
ICAgIGNhc2UgS0VZX1JTSElGVDogICAgcmV0dXJuICJSaWdodCBTaGlmdCI7CisgICAgICBjYXNl
IEtFWV9SQUxUOiAgICAgIHJldHVybiAiUmlnaHQgQWx0IjsKKyAgICAgIGNhc2UgS0VZX1JTWVNU
RU06ICAgcmV0dXJuICJSaWdodCBTeXN0ZW0iOworICAgICAgY2FzZSBLRVlfTUVOVTogICAgICBy
ZXR1cm4gIk1lbnUiOworICAgICAgY2FzZSBLRVlfTEJSQUNLRVQ6ICByZXR1cm4gIkxlZnQgQnJh
Y2tldCI7CisgICAgICBjYXNlIEtFWV9SQlJBQ0tFVDogIHJldHVybiAiUmlnaHQgQnJhY2tldCI7
CisgICAgICBjYXNlIEtFWV9TRU1JQ09MT046IHJldHVybiAiU2VtaWNvbG9uIjsKKyAgICAgIGNh
c2UgS0VZX0NPTU1BOiAgICAgcmV0dXJuICJDb21tYSI7CisgICAgICBjYXNlIEtFWV9QRVJJT0Q6
ICAgIHJldHVybiAiUGVyaW9kIjsKKyAgICAgIGNhc2UgS0VZX1FVT1RFOiAgICAgcmV0dXJuICJR
dW90ZSI7CisgICAgICBjYXNlIEtFWV9TTEFTSDogICAgIHJldHVybiAiU2xhc2giOworICAgICAg
Y2FzZSBLRVlfQkFDS1NMQVNIOiByZXR1cm4gIkJhY2tzbGFzaCI7CisgICAgICBjYXNlIEtFWV9U
SUxERTogICAgIHJldHVybiAiVGlsZGUiOworICAgICAgY2FzZSBLRVlfRVFVQUw6ICAgICByZXR1
cm4gIkVxdWFsIjsKKyAgICAgIGNhc2UgS0VZX0RBU0g6ICAgICAgcmV0dXJuICJEYXNoIjsKKyAg
ICAgIGNhc2UgS0VZX1NQQUNFOiAgICAgcmV0dXJuICJTcGFjZSI7CisgICAgICBjYXNlIEtFWV9S
RVRVUk46ICAgIHJldHVybiAiUmV0dXJuIjsKKyAgICAgIGNhc2UgS0VZX0JBQ0s6ICAgICAgcmV0
dXJuICJCYWNrIjsKKyAgICAgIGNhc2UgS0VZX1RBQjogICAgICAgcmV0dXJuICJUYWIiOworICAg
ICAgY2FzZSBLRVlfUEFHRVVQOiAgICByZXR1cm4gIlBhZ2UgVXAiOworICAgICAgY2FzZSBLRVlf
UEFHRURPV046ICByZXR1cm4gIlBhZ2UgRG93biI7CisgICAgICBjYXNlIEtFWV9FTkQ6ICAgICAg
IHJldHVybiAiRW5kIjsKKyAgICAgIGNhc2UgS0VZX0hPTUU6ICAgICAgcmV0dXJuICJIb21lIjsK
KyAgICAgIGNhc2UgS0VZX0lOU0VSVDogICAgcmV0dXJuICJJbnNlcnQiOworICAgICAgY2FzZSBL
RVlfREVMRVRFOiAgICByZXR1cm4gIkRlbGV0ZSI7CisgICAgICBjYXNlIEtFWV9BREQ6ICAgICAg
IHJldHVybiAiQWRkIjsKKyAgICAgIGNhc2UgS0VZX1NVQlRSQUNUOiAgcmV0dXJuICJTdWJzdHJh
Y3QiOworICAgICAgY2FzZSBLRVlfTVVMVElQTFk6ICByZXR1cm4gIk11bHRpcGx5IjsKKyAgICAg
IGNhc2UgS0VZX0RJVklERTogICAgcmV0dXJuICJEaXZpZGUiOworICAgICAgY2FzZSBLRVlfTEVG
VDogICAgICByZXR1cm4gIkxlZnQiOworICAgICAgY2FzZSBLRVlfUklHSFQ6ICAgICByZXR1cm4g
IlJpZ2h0IjsKKyAgICAgIGNhc2UgS0VZX1VQOiAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICBj
YXNlIEtFWV9ET1dOOiAgICAgIHJldHVybiAiRG93biI7CisgICAgICBjYXNlIEtFWV9OVU1QQUQw
OiAgIHJldHVybiAiTnVtcGFkIDAiOworICAgICAgY2FzZSBLRVlfTlVNUEFEMTogICByZXR1cm4g
Ik51bXBhZCAxIjsKKyAgICAgIGNhc2UgS0VZX05VTVBBRDI6ICAgcmV0dXJuICJOdW1wYWQgMiI7
CisgICAgICBjYXNlIEtFWV9OVU1QQUQzOiAgIHJldHVybiAiTnVtcGFkIDMiOworICAgICAgY2Fz
ZSBLRVlfTlVNUEFENDogICByZXR1cm4gIk51bXBhZCA0IjsKKyAgICAgIGNhc2UgS0VZX05VTVBB
RDU6ICAgcmV0dXJuICJOdW1wYWQgNSI7CisgICAgICBjYXNlIEtFWV9OVU1QQUQ2OiAgIHJldHVy
biAiTnVtcGFkIDYiOworICAgICAgY2FzZSBLRVlfTlVNUEFENzogICByZXR1cm4gIk51bXBhZCA3
IjsKKyAgICAgIGNhc2UgS0VZX05VTVBBRDg6ICAgcmV0dXJuICJOdW1wYWQgOCI7CisgICAgICBj
YXNlIEtFWV9OVU1QQUQ5OiAgIHJldHVybiAiTnVtcGFkIDkiOworICAgICAgY2FzZSBLRVlfRjE6
ICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgIGNhc2UgS0VZX0YyOiAgICAgICAgcmV0dXJuICJG
MiI7CisgICAgICBjYXNlIEtFWV9GMzogICAgICAgIHJldHVybiAiRjMiOworICAgICAgY2FzZSBL
RVlfRjQ6ICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgIGNhc2UgS0VZX0Y1OiAgICAgICAgcmV0
dXJuICJGNSI7CisgICAgICBjYXNlIEtFWV9GNjogICAgICAgIHJldHVybiAiRjYiOworICAgICAg
Y2FzZSBLRVlfRjc6ICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgIGNhc2UgS0VZX0Y4OiAgICAg
ICAgcmV0dXJuICJGOCI7CisgICAgICBjYXNlIEtFWV9GOTogICAgICAgIHJldHVybiAiRjkiOwor
ICAgICAgY2FzZSBLRVlfRjEwOiAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICBjYXNlIEtFWV9G
MTE6ICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgIGNhc2UgS0VZX0YxMjogICAgICAgcmV0dXJu
ICJGMTIiOworICAgICAgY2FzZSBLRVlfRjEzOiAgICAgICByZXR1cm4gIkYxMyI7CisgICAgICBj
YXNlIEtFWV9GMTQ6ICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgIGNhc2UgS0VZX0YxNTogICAg
ICAgcmV0dXJuICJGMTUiOworICAgICAgY2FzZSBLRVlfUEFVU0U6ICAgICByZXR1cm4gIlBhdXNl
IjsKKyAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgcmV0dXJuICJVbmtub3duIEtleSI7CisgICAg
fQorfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgS2V5U3RhdGUoY29uc3QgRXZlbnQ6OktleUV2ZW50
ICZldmVudCkKK3sKKyAgICBpZiAoZXZlbnQuU2hpZnQgfHwgZXZlbnQuQ29udHJvbCB8fCBldmVu
dC5BbHQgfHwgZXZlbnQuU3lzdGVtKQorICAgIHsKKyAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFt
IGJ1ZmZlcjsKKyAgICAgICAgYnVmZmVyIDw8ICIgWyI7CisKKyAgICAgICAgaWYgKGV2ZW50LlNo
aWZ0KQorICAgICAgICB7CisgICAgICAgICAgICBidWZmZXIgPDwgIlNoaWZ0IjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoZXZlbnQuQ29udHJvbCkKKyAgICAgICAgeworICAgICAgICAgICAgYnVm
ZmVyIDw8ICJDb250cm9sIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXZlbnQuQWx0KQorICAg
ICAgICB7CisgICAgICAgICAgICBidWZmZXIgPDwgIkFsdCI7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGV2ZW50LlN5c3RlbSkKKyAgICAgICAgeworICAgICAgICAgICAgYnVmZmVyIDw8ICJTeXN0
ZW0iOworICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyIDw8ICJdIjsKKyAgICAgICAgcmV0dXJu
IGJ1ZmZlci5zdHIoKTsKKyAgICB9CisgICAgcmV0dXJuICIiOworfQorCitzdGF0aWMgdm9pZCBQ
cmludEV2ZW50KGNvbnN0IEV2ZW50JiBldmVudCkKK3sKKyAgICBzd2l0Y2ggKGV2ZW50LlR5cGUp
CisgICAgeworICAgICAgY2FzZSBFdmVudDo6RVZFTlRfQ0xPU0VEOgorICAgICAgICBzdGQ6OmNv
dXQgPDwgIkV2ZW50OiBXaW5kb3cgQ2xvc2VkIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBFdmVudDo6RVZFTlRfTU9WRUQ6CisgICAgICAgIHN0ZDo6Y291dCA8PCAi
RXZlbnQ6IFdpbmRvdyBNb3ZlZCAoIiA8PCBldmVudC5Nb3ZlLlgKKyAgICAgICAgICAgICAgICAg
IDw8ICIsICIgPDwgZXZlbnQuTW92ZS5ZIDw8ICIpIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBFdmVudDo6RVZFTlRfUkVTSVpFRDoKKyAgICAgICAgc3RkOjpjb3V0
IDw8ICJFdmVudDogV2luZG93IFJlc2l6ZWQgKCIgPDwgZXZlbnQuU2l6ZS5XaWR0aAorICAgICAg
ICAgICAgICAgICAgPDwgIiwgIiA8PCBldmVudC5TaXplLkhlaWdodCA8PCAiKSIgPDwgc3RkOjpl
bmRsOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRXZlbnQ6OkVWRU5UX0xPU1RfRk9DVVM6
CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRXZlbnQ6IFdpbmRvdyBMb3N0IEZvY3VzIiA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFdmVudDo6RVZFTlRfR0FJTkVEX0ZP
Q1VTOgorICAgICAgICBzdGQ6OmNvdXQgPDwgIkV2ZW50OiBXaW5kb3cgR2FpbmVkIEZvY3VzIiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFdmVudDo6RVZFTlRfVEVY
VF9FTlRFUkVEOgorICAgICAgICAvLyBUT0RPKGN3YWxsZXopIHNob3cgdGhlIGNoYXJhY3Rlcgor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIkV2ZW50OiBUZXh0IEVudGVyZWQiIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEV2ZW50OjpFVkVOVF9LRVlfUFJFU1NFRDoKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJFdmVudDogS2V5IFByZXNzZWQgKCIgPDwgS2V5TmFtZShldmVu
dC5LZXkuQ29kZSkgPDwgS2V5U3RhdGUoZXZlbnQuS2V5KSA8PCAiKSIgPDwgc3RkOjplbmRsOwor
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRXZlbnQ6OkVWRU5UX0tFWV9SRUxFQVNFRDoKKyAg
ICAgICAgc3RkOjpjb3V0IDw8ICJFdmVudDogS2V5IFJlbGVhc2VkICgiIDw8IEtleU5hbWUoZXZl
bnQuS2V5LkNvZGUpIDw8IEtleVN0YXRlKGV2ZW50LktleSkgPDwgIikiIDw8IHN0ZDo6ZW5kbDsK
KyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEV2ZW50OjpFVkVOVF9NT1VTRV9XSEVFTF9NT1ZF
RDoKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJFdmVudDogTW91c2UgV2hlZWwgKCIgPDwgZXZlbnQu
TW91c2VXaGVlbC5EZWx0YSA8PCAiKSIgPDwgc3RkOjplbmRsOworICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgRXZlbnQ6OkVWRU5UX01PVVNFX0JVVFRPTl9QUkVTU0VEOgorICAgICAgICBzdGQ6
OmNvdXQgPDwgIkV2ZW50OiBNb3VzZSBCdXR0b24gUHJlc3NlZCAiIDw8IE1vdXNlQnV0dG9uTmFt
ZShldmVudC5Nb3VzZUJ1dHRvbi5CdXR0b24pIDw8CisgICAgICAgICAgICAgICAgICAiIGF0ICgi
IDw8IGV2ZW50Lk1vdXNlQnV0dG9uLlggPDwgIiwgIiA8PCBldmVudC5Nb3VzZUJ1dHRvbi5ZIDw8
ICIpIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBFdmVudDo6RVZF
TlRfTU9VU0VfQlVUVE9OX1JFTEVBU0VEOgorICAgICAgICBzdGQ6OmNvdXQgPDwgIkV2ZW50OiBN
b3VzZSBCdXR0b24gUmVsZWFzZWQgIiA8PCBNb3VzZUJ1dHRvbk5hbWUoZXZlbnQuTW91c2VCdXR0
b24uQnV0dG9uKSA8PAorICAgICAgICAgICAgICAgICAgIiBhdCAoIiA8PCBldmVudC5Nb3VzZUJ1
dHRvbi5YIDw8ICIsICIgPDwgZXZlbnQuTW91c2VCdXR0b24uWSA8PCAiKSIgPDwgc3RkOjplbmRs
OworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRXZlbnQ6OkVWRU5UX01PVVNFX01PVkVEOgor
ICAgICAgICBzdGQ6OmNvdXQgPDwgIkV2ZW50OiBNb3VzZSBNb3ZlZCAoIiA8PCBldmVudC5Nb3Vz
ZU1vdmUuWAorICAgICAgICAgICAgICAgICAgPDwgIiwgIiA8PCBldmVudC5Nb3VzZU1vdmUuWSA8
PCAiKSIgPDwgc3RkOjplbmRsOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgRXZlbnQ6OkVW
RU5UX01PVVNFX0VOVEVSRUQ6CisgICAgICAgIHN0ZDo6Y291dCA8PCAiRXZlbnQ6IE1vdXNlIEVu
dGVyZWQgV2luZG93IiA8PCBzdGQ6OmVuZGw7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBF
dmVudDo6RVZFTlRfTU9VU0VfTEVGVDoKKyAgICAgICAgc3RkOjpjb3V0IDw8ICJFdmVudDogTW91
c2UgTGVmdCBXaW5kb3ciIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNl
IEV2ZW50OjpFVkVOVF9URVNUOgorICAgICAgICBzdGQ6OmNvdXQgPDwgIkV2ZW50OiBUZXN0IiA8
PCBzdGQ6OmVuZGw7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorI2VuZGlmCisKIE9TV2luZG93
OjpPU1dpbmRvdygpCiAgICAgOiBtWCgwKSwKICAgICAgIG1ZKDApLApAQCAtNjgsNiArMzAyLDEw
IEBACiAgICAgfQogCiAgICAgbUV2ZW50cy5wdXNoX2JhY2soZXZlbnQpOworCisjaWYgREVCVUdf
RVZFTlRTCisgICAgUHJpbnRFdmVudChldmVudCk7CisjZW5kaWYKIH0KIAogYm9vbCBPU1dpbmRv
dzo6ZGlkVGVzdEV2ZW50RmlyZSgpCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGls
L09TV2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9P
U1dpbmRvdy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91
dGlsL09TV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMTMgKzcsMTUgQEAKICNpZm5kZWYg
U0FNUExFX1VUSUxfV0lORE9XX0gKICNkZWZpbmUgU0FNUExFX1VUSUxfV0lORE9XX0gKIAotI2lu
Y2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSA8bGlzdD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNp
bmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlIDxFR0wvZWdsLmg+CiAjaW5jbHVkZSA8RUdML2Vn
bGV4dC5oPgotI2luY2x1ZGUgPGxpc3Q+Ci0jaW5jbHVkZSA8c3RyaW5nPgogCisjaW5jbHVkZSAi
RXZlbnQuaCIKKwogY2xhc3MgT1NXaW5kb3cKIHsKICAgcHVibGljOgpAQCAtMjgsNiArMzAsMTIg
QEAKICAgICBpbnQgZ2V0V2lkdGgoKSBjb25zdDsKICAgICBpbnQgZ2V0SGVpZ2h0KCkgY29uc3Q7
CiAKKyAgICAvLyBUYWtlcyBhIHNjcmVlbnNob3Qgb2YgdGhlIHdpbmRvdywgcmV0dXJuaW5nIHRo
ZSByZXN1bHQgYXMgYSBtV2lkdGggKiBtSGVpZ2h0ICogNAorICAgIC8vIG5vcm1hbGl6ZWQgdW5z
aWduZWQgYnl0ZSBCR1JBIGFycmF5LiBOb3RlIHRoYXQgaXQgd2lsbCBiZSB1c2VkIHRvIHRlc3Qg
dGhlIHdpbmRvdworICAgIC8vIG1hbmFnZXIncyBiZWhhdmlvciBzbyBpdCBuZWVkcyB0byB0YWtl
IGFuIGFjdHVhbCBzY3JlZW5zaG90IG9mIHRoZSBzY3JlZW4gYW5kIG5vdAorICAgIC8vIGp1c3Qg
Z3JhYiB0aGUgcGl4ZWxzIG9mIHRoZSB3aW5kb3cuIFJldHVybnMgaWYgaXQgd2FzIHN1Y2Nlc3Nm
dWwuCisgICAgdmlydHVhbCBib29sIHRha2VTY3JlZW5zaG90KHVpbnQ4X3QgKnBpeGVsRGF0YSkg
eyByZXR1cm4gZmFsc2U7IH0KKwogICAgIHZpcnR1YWwgRUdMTmF0aXZlV2luZG93VHlwZSBnZXRO
YXRpdmVXaW5kb3coKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBFR0xOYXRpdmVEaXNwbGF5VHlw
ZSBnZXROYXRpdmVEaXNwbGF5KCkgY29uc3QgPSAwOwogCkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL1ZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9WZWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvdXRpbC9WZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcwIEBACisv
LworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgorLy8KKy8vIFZlY3RvcjoKKy8vICAgVmVjdG9yIGNsYXNzIGZvciBsaW5lYXIgbWF0
aC4KKy8vCisKKyNpbmNsdWRlICJWZWN0b3IuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworVmVj
dG9yMjo6VmVjdG9yMigpIDogeCgwLjApLCB5KDAuMCkKK3sKK30KKworVmVjdG9yMjo6VmVjdG9y
MihmbG9hdCB4LCBmbG9hdCB5KSA6IHgoeCksIHkoeSkKK3sKK30KKworYm9vbCBWZWN0b3IyOjpv
cGVyYXRvcj09KGNvbnN0IFZlY3RvcjIgJnZlYykgY29uc3QKK3sKKyAgICByZXR1cm4geCA9PSB2
ZWMueCAmJiB5ID09IHZlYy55OworfQorCitib29sIFZlY3RvcjI6Om9wZXJhdG9yIT0oY29uc3Qg
VmVjdG9yMiAmdmVjKSBjb25zdAoreworICAgIHJldHVybiAhKCp0aGlzID09IHZlYyk7Cit9CisK
K3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3QgVmVj
dG9yMiAmdmVjKQoreworICAgIHN0cmVhbSA8PCAiKCIgPDwgdmVjLnggPDwgIiwiIDw8IHZlYy55
IDw8ICIpIjsKKyAgICByZXR1cm4gc3RyZWFtOworfQorCitmbG9hdCBWZWN0b3IyOjpsZW5ndGgo
Y29uc3QgVmVjdG9yMiAmdmVjKQoreworICAgIGZsb2F0IGxlblNxdWFyZWQgPSBsZW5ndGhTcXVh
cmVkKHZlYyk7CisgICAgcmV0dXJuIChsZW5TcXVhcmVkICE9IDAuMGYpID8gc3FydGYobGVuU3F1
YXJlZCkgOiAwLjBmOworfQorCitmbG9hdCBWZWN0b3IyOjpsZW5ndGhTcXVhcmVkKGNvbnN0IFZl
Y3RvcjIgJnZlYykKK3sKKyAgICByZXR1cm4gdmVjLnggKiB2ZWMueCArIHZlYy55ICogdmVjLnk7
Cit9CisKK1ZlY3RvcjIgVmVjdG9yMjo6bm9ybWFsaXplKGNvbnN0IFZlY3RvcjIgJnZlYykKK3sK
KyAgICBWZWN0b3IyIHJldCgwLjBmLCAwLjBmKTsKKyAgICBmbG9hdCBsZW4gPSBsZW5ndGgodmVj
KTsKKyAgICBpZiAobGVuICE9IDAuMGYpCisgICAgeworICAgICAgICBmbG9hdCBpbnZMZW4gPSAx
LjBmIC8gbGVuOworICAgICAgICByZXQueCAgICAgICAgPSB2ZWMueCAqIGludkxlbjsKKyAgICAg
ICAgcmV0LnkgICAgICAgID0gdmVjLnkgKiBpbnZMZW47CisgICAgfQorICAgIHJldHVybiByZXQ7
Cit9CisKK1ZlY3RvcjM6OlZlY3RvcjMoKSA6IHgoMC4wKSwgeSgwLjApLCB6KDAuMCkKK3sKK30K
KworVmVjdG9yMzo6VmVjdG9yMyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KSA6IHgoeCksIHko
eSksIHooeikKK3sKK30KKworZmxvYXQgVmVjdG9yMzo6bGVuZ3RoKGNvbnN0IFZlY3RvcjMgJnZl
YykKK3sKKyAgICBmbG9hdCBsZW5TcXVhcmVkID0gbGVuZ3RoU3F1YXJlZCh2ZWMpOworICAgIHJl
dHVybiAobGVuU3F1YXJlZCAhPSAwLjBmKSA/IHNxcnRmKGxlblNxdWFyZWQpIDogMC4wZjsKK30K
KworZmxvYXQgVmVjdG9yMzo6bGVuZ3RoU3F1YXJlZChjb25zdCBWZWN0b3IzICZ2ZWMpCit7Cisg
ICAgcmV0dXJuIHZlYy54ICogdmVjLnggKyB2ZWMueSAqIHZlYy55ICsgdmVjLnogKiB2ZWMuejsK
K30KKworVmVjdG9yMyBWZWN0b3IzOjpub3JtYWxpemUoY29uc3QgVmVjdG9yMyAmdmVjKQorewor
ICAgIFZlY3RvcjMgcmV0KDAuMGYsIDAuMGYsIDAuMGYpOworICAgIGZsb2F0IGxlbiA9IGxlbmd0
aCh2ZWMpOworICAgIGlmIChsZW4gIT0gMC4wZikKKyAgICB7CisgICAgICAgIGZsb2F0IGludkxl
biA9IDEuMGYgLyBsZW47CisgICAgICAgIHJldC54ICAgICAgICA9IHZlYy54ICogaW52TGVuOwor
ICAgICAgICByZXQueSAgICAgICAgPSB2ZWMueSAqIGludkxlbjsKKyAgICAgICAgcmV0LnogICAg
ICAgID0gdmVjLnogKiBpbnZMZW47CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK2Zsb2F0
IFZlY3RvcjM6OmRvdChjb25zdCBWZWN0b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKQoreworICAg
IHJldHVybiBhLnggKiBiLnggKyBhLnkgKiBiLnkgKyBhLnogKiBiLno7Cit9CisKK1ZlY3RvcjMg
VmVjdG9yMzo6Y3Jvc3MoY29uc3QgVmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYikKK3sKKyAg
ICByZXR1cm4gVmVjdG9yMyhhLnkgKiBiLnogLSBhLnogKiBiLnksIGEueiAqIGIueCAtIGEueCAq
IGIueiwgYS54ICogYi55IC0gYS55ICogYi54KTsKK30KKworVmVjdG9yMyBvcGVyYXRvciooY29u
c3QgVmVjdG9yMyAmYSwgY29uc3QgVmVjdG9yMyAmYikKK3sKKyAgICByZXR1cm4gVmVjdG9yMyhh
LnggKiBiLngsIGEueSAqIGIueSwgYS56ICogYi56KTsKK30KKworVmVjdG9yMyBvcGVyYXRvcioo
Y29uc3QgVmVjdG9yMyAmYSwgY29uc3QgZmxvYXQgJmIpCit7CisgICAgcmV0dXJuIFZlY3RvcjMo
YS54ICogYiwgYS55ICogYiwgYS56ICogYik7Cit9CisKK1ZlY3RvcjMgb3BlcmF0b3IvKGNvbnN0
IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpCit7CisgICAgcmV0dXJuIFZlY3RvcjMoYS54
IC8gYi54LCBhLnkgLyBiLnksIGEueiAvIGIueik7Cit9CisKK1ZlY3RvcjMgb3BlcmF0b3IvKGNv
bnN0IFZlY3RvcjMgJmEsIGNvbnN0IGZsb2F0ICZiKQoreworICAgIHJldHVybiBWZWN0b3IzKGEu
eCAvIGIsIGEueSAvIGIsIGEueiAvIGIpOworfQorCitWZWN0b3IzIG9wZXJhdG9yKyhjb25zdCBW
ZWN0b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKQoreworICAgIHJldHVybiBWZWN0b3IzKGEueCAr
IGIueCwgYS55ICsgYi55LCBhLnogKyBiLnopOworfQorCitWZWN0b3IzIG9wZXJhdG9yLShjb25z
dCBWZWN0b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKQoreworICAgIHJldHVybiBWZWN0b3IzKGEu
eCAtIGIueCwgYS55IC0gYi55LCBhLnogLSBiLnopOworfQorCitWZWN0b3I0OjpWZWN0b3I0KCkg
OiB4KDAuMGYpLCB5KDAuMGYpLCB6KDAuMGYpLCB3KDAuMGYpCit7Cit9CisKK1ZlY3RvcjQ6OlZl
Y3RvcjQoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgdykgOiB4KHgpLCB5KHkpLCB6
KHopLCB3KHcpCit7Cit9CisKK2Zsb2F0IFZlY3RvcjQ6Omxlbmd0aChjb25zdCBWZWN0b3I0ICZ2
ZWMpCit7CisgICAgZmxvYXQgbGVuU3F1YXJlZCA9IGxlbmd0aFNxdWFyZWQodmVjKTsKKyAgICBy
ZXR1cm4gKGxlblNxdWFyZWQgIT0gMC4wZikgPyBzcXJ0ZihsZW5TcXVhcmVkKSA6IDAuMGY7Cit9
CisKK2Zsb2F0IFZlY3RvcjQ6Omxlbmd0aFNxdWFyZWQoY29uc3QgVmVjdG9yNCAmdmVjKQorewor
ICAgIHJldHVybiB2ZWMueCAqIHZlYy54ICsgdmVjLnkgKiB2ZWMueSArIHZlYy56ICogdmVjLnog
KyB2ZWMudyAqIHZlYy53OworfQorCitWZWN0b3I0IFZlY3RvcjQ6Om5vcm1hbGl6ZShjb25zdCBW
ZWN0b3I0ICZ2ZWMpCit7CisgICAgVmVjdG9yNCByZXQoMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7
CisgICAgaWYgKHZlYy53ICE9IDAuMGYpCisgICAgeworICAgICAgICBmbG9hdCBpbnZMZW4gPSAx
LjBmIC8gdmVjLnc7CisgICAgICAgIHJldC54ICAgICAgICA9IHZlYy54ICogaW52TGVuOworICAg
ICAgICByZXQueSAgICAgICAgPSB2ZWMueSAqIGludkxlbjsKKyAgICAgICAgcmV0LnogICAgICAg
ID0gdmVjLnogKiBpbnZMZW47CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK2Zsb2F0IFZl
Y3RvcjQ6OmRvdChjb25zdCBWZWN0b3I0ICZhLCBjb25zdCBWZWN0b3I0ICZiKQoreworICAgIHJl
dHVybiBhLnggKiBiLnggKyBhLnkgKiBiLnkgKyBhLnogKiBiLnogKyBhLncgKiBiLnc7Cit9Cklu
ZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvVmVjdG9yLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVmVjdG9yOgorLy8gICBWZWN0b3IgY2xhc3Mg
Zm9yIGxpbmVhciBtYXRoLgorLy8KKworI2lmbmRlZiBVVElMX1ZFQ1RPUl9ICisjZGVmaW5lIFVU
SUxfVkVDVE9SX0gKKworI2luY2x1ZGUgPG9zdHJlYW0+CisKK3N0cnVjdCBWZWN0b3IyCit7Cisg
ICAgVmVjdG9yMigpOworICAgIFZlY3RvcjIoZmxvYXQgeCwgZmxvYXQgeSk7CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yMiAmdmVjKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgVmVjdG9yMiAmdmVjKSBjb25zdDsKKworICAgIHN0YXRpYyBmbG9hdCBsZW5ndGgo
Y29uc3QgVmVjdG9yMiAmdmVjKTsKKyAgICBzdGF0aWMgZmxvYXQgbGVuZ3RoU3F1YXJlZChjb25z
dCBWZWN0b3IyICZ2ZWMpOworCisgICAgc3RhdGljIFZlY3RvcjIgbm9ybWFsaXplKGNvbnN0IFZl
Y3RvcjIgJnZlYyk7CisKKyAgICBmbG9hdCAqZGF0YSgpIHsgcmV0dXJuICZ4OyB9CisgICAgY29u
c3QgZmxvYXQgKmRhdGEoKSBjb25zdCB7IHJldHVybiAmeDsgfQorCisgICAgZmxvYXQgeCwgeTsK
K307CisKK3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29u
c3QgVmVjdG9yMiAmdmVjKTsKKworc3RydWN0IFZlY3RvcjMKK3sKKyAgICBWZWN0b3IzKCk7Cisg
ICAgVmVjdG9yMyhmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KTsKKworICAgIHN0YXRpYyBmbG9h
dCBsZW5ndGgoY29uc3QgVmVjdG9yMyAmdmVjKTsKKyAgICBzdGF0aWMgZmxvYXQgbGVuZ3RoU3F1
YXJlZChjb25zdCBWZWN0b3IzICZ2ZWMpOworCisgICAgc3RhdGljIFZlY3RvcjMgbm9ybWFsaXpl
KGNvbnN0IFZlY3RvcjMgJnZlYyk7CisKKyAgICBzdGF0aWMgZmxvYXQgZG90KGNvbnN0IFZlY3Rv
cjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOworICAgIHN0YXRpYyBWZWN0b3IzIGNyb3NzKGNvbnN0
IFZlY3RvcjMgJmEsIGNvbnN0IFZlY3RvcjMgJmIpOworCisgICAgZmxvYXQgKmRhdGEoKSB7IHJl
dHVybiAmeDsgfQorICAgIGNvbnN0IGZsb2F0ICpkYXRhKCkgY29uc3QgeyByZXR1cm4gJng7IH0K
KworICAgIGZsb2F0IHgsIHksIHo7Cit9OworCitWZWN0b3IzIG9wZXJhdG9yKihjb25zdCBWZWN0
b3IzICZhLCBjb25zdCBWZWN0b3IzICZiKTsKK1ZlY3RvcjMgb3BlcmF0b3IqKGNvbnN0IFZlY3Rv
cjMgJmEsIGNvbnN0IGZsb2F0ICZiKTsKK1ZlY3RvcjMgb3BlcmF0b3IvKGNvbnN0IFZlY3RvcjMg
JmEsIGNvbnN0IFZlY3RvcjMgJmIpOworVmVjdG9yMyBvcGVyYXRvci8oY29uc3QgVmVjdG9yMyAm
YSwgY29uc3QgZmxvYXQgJmIpOworVmVjdG9yMyBvcGVyYXRvcisoY29uc3QgVmVjdG9yMyAmYSwg
Y29uc3QgVmVjdG9yMyAmYik7CitWZWN0b3IzIG9wZXJhdG9yLShjb25zdCBWZWN0b3IzICZhLCBj
b25zdCBWZWN0b3IzICZiKTsKKworc3RydWN0IFZlY3RvcjQKK3sKKyAgICBWZWN0b3I0KCk7Cisg
ICAgVmVjdG9yNChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KTsKKworICAgIHN0
YXRpYyBmbG9hdCBsZW5ndGgoY29uc3QgVmVjdG9yNCAmdmVjKTsKKyAgICBzdGF0aWMgZmxvYXQg
bGVuZ3RoU3F1YXJlZChjb25zdCBWZWN0b3I0ICZ2ZWMpOworCisgICAgc3RhdGljIFZlY3RvcjQg
bm9ybWFsaXplKGNvbnN0IFZlY3RvcjQgJnZlYyk7CisKKyAgICBzdGF0aWMgZmxvYXQgZG90KGNv
bnN0IFZlY3RvcjQgJmEsIGNvbnN0IFZlY3RvcjQgJmIpOworCisgICAgZmxvYXQgKmRhdGEoKSB7
IHJldHVybiAmeDsgfQorICAgIGNvbnN0IGZsb2F0ICpkYXRhKCkgY29uc3QgeyByZXR1cm4gJng7
IH0KKworICAgIGZsb2F0IHgsIHksIHosIHc7Cit9OworCisjZW5kaWYgIC8vIFVUSUxfVkVDVE9S
X0gKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2VvbWV0cnlfdXRpbHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2VvbWV0cnlfdXRp
bHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nZW9t
ZXRyeV91dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzMgQEAKKy8vCisvLyBD
b3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gZ2VvbWV0cnlfdXRpbHM6CisvLyAgIEhlbHBlciBsaWJyYXJ5IGZvciBnZW5lcmF0
aW5nIGNlcnRhaW4gc2V0cyBvZiBnZW9tZXRyeS4KKy8vCisKKyNpbmNsdWRlICJnZW9tZXRyeV91
dGlscy5oIgorCisjZGVmaW5lIF9VU0VfTUFUSF9ERUZJTkVTCisjaW5jbHVkZSA8bWF0aC5oPgor
Cit2b2lkIENyZWF0ZVNwaGVyZUdlb21ldHJ5KHNpemVfdCBzbGljZUNvdW50LCBmbG9hdCByYWRp
dXMsIFNwaGVyZUdlb21ldHJ5ICpyZXN1bHQpCit7CisgICAgc2l6ZV90IHBhcmVsbGVsQ291bnQg
PSBzbGljZUNvdW50IC8gMjsKKyAgICBzaXplX3QgdmVydGV4Q291bnQgICA9IChwYXJlbGxlbENv
dW50ICsgMSkgKiAoc2xpY2VDb3VudCArIDEpOworICAgIHNpemVfdCBpbmRleENvdW50ICAgID0g
cGFyZWxsZWxDb3VudCAqIHNsaWNlQ291bnQgKiA2OworICAgIGZsb2F0IGFuZ2xlU3RlcCAgICAg
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KDIuMGYgKiBNX1BJKSAvIHNsaWNlQ291bnQ7CisKKyAgICBy
ZXN1bHQtPnBvc2l0aW9ucy5yZXNpemUodmVydGV4Q291bnQpOworICAgIHJlc3VsdC0+bm9ybWFs
cy5yZXNpemUodmVydGV4Q291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyZWxs
ZWxDb3VudCArIDE7IGkrKykKKyAgICB7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
c2xpY2VDb3VudCArIDE7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgVmVjdG9yMyBkaXJl
Y3Rpb24oc2luZihhbmdsZVN0ZXAgKiBpKSAqIHNpbmYoYW5nbGVTdGVwICogaiksIGNvc2YoYW5n
bGVTdGVwICogaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5mKGFuZ2xlU3Rl
cCAqIGkpICogY29zZihhbmdsZVN0ZXAgKiBqKSk7CisKKyAgICAgICAgICAgIHNpemVfdCB2ZXJ0
ZXhJZHggICAgICAgICAgICAgPSBpICogKHNsaWNlQ291bnQgKyAxKSArIGo7CisgICAgICAgICAg
ICByZXN1bHQtPnBvc2l0aW9uc1t2ZXJ0ZXhJZHhdID0gZGlyZWN0aW9uICogcmFkaXVzOworICAg
ICAgICAgICAgcmVzdWx0LT5ub3JtYWxzW3ZlcnRleElkeF0gICA9IGRpcmVjdGlvbjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJlc3VsdC0+aW5kaWNlcy5jbGVhcigpOworICAgIHJlc3VsdC0+
aW5kaWNlcy5yZXNlcnZlKGluZGV4Q291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGFyZWxsZWxDb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGog
PCBzbGljZUNvdW50OyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdC0+aW5kaWNl
cy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGkgKiAoc2xpY2VDb3VudCAr
IDEpICsgaikpOworICAgICAgICAgICAgcmVzdWx0LT5pbmRpY2VzLnB1c2hfYmFjayhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBzaG9ydD4oKGkgKyAxKSAqIChzbGljZUNvdW50ICsgMSkgKyBqKSk7Cisg
ICAgICAgICAgICByZXN1bHQtPmluZGljZXMucHVzaF9iYWNrKAorICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PigoaSArIDEpICogKHNsaWNlQ291bnQgKyAxKSArIChq
ICsgMSkpKTsKKworICAgICAgICAgICAgcmVzdWx0LT5pbmRpY2VzLnB1c2hfYmFjayhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBzaG9ydD4oaSAqIChzbGljZUNvdW50ICsgMSkgKyBqKSk7CisgICAgICAg
ICAgICByZXN1bHQtPmluZGljZXMucHVzaF9iYWNrKAorICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0PigoaSArIDEpICogKHNsaWNlQ291bnQgKyAxKSArIChqICsgMSkp
KTsKKyAgICAgICAgICAgIHJlc3VsdC0+aW5kaWNlcy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8dW5z
aWduZWQgc2hvcnQ+KGkgKiAoc2xpY2VDb3VudCArIDEpICsgKGogKyAxKSkpOworICAgICAgICB9
CisgICAgfQorfQorCit2b2lkIEdlbmVyYXRlQ3ViZUdlb21ldHJ5KGZsb2F0IHJhZGl1cywgQ3Vi
ZUdlb21ldHJ5ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5wb3NpdGlvbnMucmVzaXplKDI0KTsK
KyAgICByZXN1bHQtPnBvc2l0aW9uc1swXSAgPSBWZWN0b3IzKC1yYWRpdXMsIC1yYWRpdXMsIC1y
YWRpdXMpOworICAgIHJlc3VsdC0+cG9zaXRpb25zWzFdICA9IFZlY3RvcjMoLXJhZGl1cywgLXJh
ZGl1cywgcmFkaXVzKTsKKyAgICByZXN1bHQtPnBvc2l0aW9uc1syXSAgPSBWZWN0b3IzKHJhZGl1
cywgLXJhZGl1cywgcmFkaXVzKTsKKyAgICByZXN1bHQtPnBvc2l0aW9uc1szXSAgPSBWZWN0b3Iz
KHJhZGl1cywgLXJhZGl1cywgLXJhZGl1cyk7CisgICAgcmVzdWx0LT5wb3NpdGlvbnNbNF0gID0g
VmVjdG9yMygtcmFkaXVzLCByYWRpdXMsIC1yYWRpdXMpOworICAgIHJlc3VsdC0+cG9zaXRpb25z
WzVdICA9IFZlY3RvcjMoLXJhZGl1cywgcmFkaXVzLCByYWRpdXMpOworICAgIHJlc3VsdC0+cG9z
aXRpb25zWzZdICA9IFZlY3RvcjMocmFkaXVzLCByYWRpdXMsIHJhZGl1cyk7CisgICAgcmVzdWx0
LT5wb3NpdGlvbnNbN10gID0gVmVjdG9yMyhyYWRpdXMsIHJhZGl1cywgLXJhZGl1cyk7CisgICAg
cmVzdWx0LT5wb3NpdGlvbnNbOF0gID0gVmVjdG9yMygtcmFkaXVzLCAtcmFkaXVzLCAtcmFkaXVz
KTsKKyAgICByZXN1bHQtPnBvc2l0aW9uc1s5XSAgPSBWZWN0b3IzKC1yYWRpdXMsIHJhZGl1cywg
LXJhZGl1cyk7CisgICAgcmVzdWx0LT5wb3NpdGlvbnNbMTBdID0gVmVjdG9yMyhyYWRpdXMsIHJh
ZGl1cywgLXJhZGl1cyk7CisgICAgcmVzdWx0LT5wb3NpdGlvbnNbMTFdID0gVmVjdG9yMyhyYWRp
dXMsIC1yYWRpdXMsIC1yYWRpdXMpOworICAgIHJlc3VsdC0+cG9zaXRpb25zWzEyXSA9IFZlY3Rv
cjMoLXJhZGl1cywgLXJhZGl1cywgcmFkaXVzKTsKKyAgICByZXN1bHQtPnBvc2l0aW9uc1sxM10g
PSBWZWN0b3IzKC1yYWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKKyAgICByZXN1bHQtPnBvc2l0aW9u
c1sxNF0gPSBWZWN0b3IzKHJhZGl1cywgcmFkaXVzLCByYWRpdXMpOworICAgIHJlc3VsdC0+cG9z
aXRpb25zWzE1XSA9IFZlY3RvcjMocmFkaXVzLCAtcmFkaXVzLCByYWRpdXMpOworICAgIHJlc3Vs
dC0+cG9zaXRpb25zWzE2XSA9IFZlY3RvcjMoLXJhZGl1cywgLXJhZGl1cywgLXJhZGl1cyk7Cisg
ICAgcmVzdWx0LT5wb3NpdGlvbnNbMTddID0gVmVjdG9yMygtcmFkaXVzLCAtcmFkaXVzLCByYWRp
dXMpOworICAgIHJlc3VsdC0+cG9zaXRpb25zWzE4XSA9IFZlY3RvcjMoLXJhZGl1cywgcmFkaXVz
LCByYWRpdXMpOworICAgIHJlc3VsdC0+cG9zaXRpb25zWzE5XSA9IFZlY3RvcjMoLXJhZGl1cywg
cmFkaXVzLCAtcmFkaXVzKTsKKyAgICByZXN1bHQtPnBvc2l0aW9uc1syMF0gPSBWZWN0b3IzKHJh
ZGl1cywgLXJhZGl1cywgLXJhZGl1cyk7CisgICAgcmVzdWx0LT5wb3NpdGlvbnNbMjFdID0gVmVj
dG9yMyhyYWRpdXMsIC1yYWRpdXMsIHJhZGl1cyk7CisgICAgcmVzdWx0LT5wb3NpdGlvbnNbMjJd
ID0gVmVjdG9yMyhyYWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKKyAgICByZXN1bHQtPnBvc2l0aW9u
c1syM10gPSBWZWN0b3IzKHJhZGl1cywgcmFkaXVzLCAtcmFkaXVzKTsKKworICAgIHJlc3VsdC0+
bm9ybWFscy5yZXNpemUoMjQpOworICAgIHJlc3VsdC0+bm9ybWFsc1swXSAgPSBWZWN0b3IzKDAu
MGYsIC0xLjBmLCAwLjBmKTsKKyAgICByZXN1bHQtPm5vcm1hbHNbMV0gID0gVmVjdG9yMygwLjBm
LCAtMS4wZiwgMC4wZik7CisgICAgcmVzdWx0LT5ub3JtYWxzWzJdICA9IFZlY3RvcjMoMC4wZiwg
LTEuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+bm9ybWFsc1szXSAgPSBWZWN0b3IzKDAuMGYsIC0x
LjBmLCAwLjBmKTsKKyAgICByZXN1bHQtPm5vcm1hbHNbNF0gID0gVmVjdG9yMygwLjBmLCAxLjBm
LCAwLjBmKTsKKyAgICByZXN1bHQtPm5vcm1hbHNbNV0gID0gVmVjdG9yMygwLjBmLCAxLjBmLCAw
LjBmKTsKKyAgICByZXN1bHQtPm5vcm1hbHNbNl0gID0gVmVjdG9yMygwLjBmLCAxLjBmLCAwLjBm
KTsKKyAgICByZXN1bHQtPm5vcm1hbHNbN10gID0gVmVjdG9yMygwLjBmLCAxLjBmLCAwLjBmKTsK
KyAgICByZXN1bHQtPm5vcm1hbHNbOF0gID0gVmVjdG9yMygwLjBmLCAwLjBmLCAtMS4wZik7Cisg
ICAgcmVzdWx0LT5ub3JtYWxzWzldICA9IFZlY3RvcjMoMC4wZiwgMC4wZiwgLTEuMGYpOworICAg
IHJlc3VsdC0+bm9ybWFsc1sxMF0gPSBWZWN0b3IzKDAuMGYsIDAuMGYsIC0xLjBmKTsKKyAgICBy
ZXN1bHQtPm5vcm1hbHNbMTFdID0gVmVjdG9yMygwLjBmLCAwLjBmLCAtMS4wZik7CisgICAgcmVz
dWx0LT5ub3JtYWxzWzEyXSA9IFZlY3RvcjMoMC4wZiwgMC4wZiwgMS4wZik7CisgICAgcmVzdWx0
LT5ub3JtYWxzWzEzXSA9IFZlY3RvcjMoMC4wZiwgMC4wZiwgMS4wZik7CisgICAgcmVzdWx0LT5u
b3JtYWxzWzE0XSA9IFZlY3RvcjMoMC4wZiwgMC4wZiwgMS4wZik7CisgICAgcmVzdWx0LT5ub3Jt
YWxzWzE1XSA9IFZlY3RvcjMoMC4wZiwgMC4wZiwgMS4wZik7CisgICAgcmVzdWx0LT5ub3JtYWxz
WzE2XSA9IFZlY3RvcjMoLTEuMGYsIDAuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+bm9ybWFsc1sx
N10gPSBWZWN0b3IzKC0xLjBmLCAwLjBmLCAwLjBmKTsKKyAgICByZXN1bHQtPm5vcm1hbHNbMThd
ID0gVmVjdG9yMygtMS4wZiwgMC4wZiwgMC4wZik7CisgICAgcmVzdWx0LT5ub3JtYWxzWzE5XSA9
IFZlY3RvcjMoLTEuMGYsIDAuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+bm9ybWFsc1syMF0gPSBW
ZWN0b3IzKDEuMGYsIDAuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+bm9ybWFsc1syMV0gPSBWZWN0
b3IzKDEuMGYsIDAuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+bm9ybWFsc1syMl0gPSBWZWN0b3Iz
KDEuMGYsIDAuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+bm9ybWFsc1syM10gPSBWZWN0b3IzKDEu
MGYsIDAuMGYsIDAuMGYpOworCisgICAgcmVzdWx0LT50ZXhjb29yZHMucmVzaXplKDI0KTsKKyAg
ICByZXN1bHQtPnRleGNvb3Jkc1swXSAgPSBWZWN0b3IyKDAuMGYsIDAuMGYpOworICAgIHJlc3Vs
dC0+dGV4Y29vcmRzWzFdICA9IFZlY3RvcjIoMC4wZiwgMS4wZik7CisgICAgcmVzdWx0LT50ZXhj
b29yZHNbMl0gID0gVmVjdG9yMigxLjBmLCAxLjBmKTsKKyAgICByZXN1bHQtPnRleGNvb3Jkc1sz
XSAgPSBWZWN0b3IyKDEuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+dGV4Y29vcmRzWzRdICA9IFZl
Y3RvcjIoMS4wZiwgMC4wZik7CisgICAgcmVzdWx0LT50ZXhjb29yZHNbNV0gID0gVmVjdG9yMigx
LjBmLCAxLjBmKTsKKyAgICByZXN1bHQtPnRleGNvb3Jkc1s2XSAgPSBWZWN0b3IyKDAuMGYsIDEu
MGYpOworICAgIHJlc3VsdC0+dGV4Y29vcmRzWzddICA9IFZlY3RvcjIoMC4wZiwgMC4wZik7Cisg
ICAgcmVzdWx0LT50ZXhjb29yZHNbOF0gID0gVmVjdG9yMigwLjBmLCAwLjBmKTsKKyAgICByZXN1
bHQtPnRleGNvb3Jkc1s5XSAgPSBWZWN0b3IyKDAuMGYsIDEuMGYpOworICAgIHJlc3VsdC0+dGV4
Y29vcmRzWzEwXSA9IFZlY3RvcjIoMS4wZiwgMS4wZik7CisgICAgcmVzdWx0LT50ZXhjb29yZHNb
MTFdID0gVmVjdG9yMigxLjBmLCAwLjBmKTsKKyAgICByZXN1bHQtPnRleGNvb3Jkc1sxMl0gPSBW
ZWN0b3IyKDAuMGYsIDAuMGYpOworICAgIHJlc3VsdC0+dGV4Y29vcmRzWzEzXSA9IFZlY3RvcjIo
MC4wZiwgMS4wZik7CisgICAgcmVzdWx0LT50ZXhjb29yZHNbMTRdID0gVmVjdG9yMigxLjBmLCAx
LjBmKTsKKyAgICByZXN1bHQtPnRleGNvb3Jkc1sxNV0gPSBWZWN0b3IyKDEuMGYsIDAuMGYpOwor
ICAgIHJlc3VsdC0+dGV4Y29vcmRzWzE2XSA9IFZlY3RvcjIoMC4wZiwgMC4wZik7CisgICAgcmVz
dWx0LT50ZXhjb29yZHNbMTddID0gVmVjdG9yMigwLjBmLCAxLjBmKTsKKyAgICByZXN1bHQtPnRl
eGNvb3Jkc1sxOF0gPSBWZWN0b3IyKDEuMGYsIDEuMGYpOworICAgIHJlc3VsdC0+dGV4Y29vcmRz
WzE5XSA9IFZlY3RvcjIoMS4wZiwgMC4wZik7CisgICAgcmVzdWx0LT50ZXhjb29yZHNbMjBdID0g
VmVjdG9yMigwLjBmLCAwLjBmKTsKKyAgICByZXN1bHQtPnRleGNvb3Jkc1syMV0gPSBWZWN0b3Iy
KDAuMGYsIDEuMGYpOworICAgIHJlc3VsdC0+dGV4Y29vcmRzWzIyXSA9IFZlY3RvcjIoMS4wZiwg
MS4wZik7CisgICAgcmVzdWx0LT50ZXhjb29yZHNbMjNdID0gVmVjdG9yMigxLjBmLCAwLjBmKTsK
KworICAgIHJlc3VsdC0+aW5kaWNlcy5yZXNpemUoMzYpOworICAgIHJlc3VsdC0+aW5kaWNlc1sw
XSAgPSAwOworICAgIHJlc3VsdC0+aW5kaWNlc1sxXSAgPSAyOworICAgIHJlc3VsdC0+aW5kaWNl
c1syXSAgPSAxOworICAgIHJlc3VsdC0+aW5kaWNlc1szXSAgPSAwOworICAgIHJlc3VsdC0+aW5k
aWNlc1s0XSAgPSAzOworICAgIHJlc3VsdC0+aW5kaWNlc1s1XSAgPSAyOworICAgIHJlc3VsdC0+
aW5kaWNlc1s2XSAgPSA0OworICAgIHJlc3VsdC0+aW5kaWNlc1s3XSAgPSA1OworICAgIHJlc3Vs
dC0+aW5kaWNlc1s4XSAgPSA2OworICAgIHJlc3VsdC0+aW5kaWNlc1s5XSAgPSA0OworICAgIHJl
c3VsdC0+aW5kaWNlc1sxMF0gPSA2OworICAgIHJlc3VsdC0+aW5kaWNlc1sxMV0gPSA3OworICAg
IHJlc3VsdC0+aW5kaWNlc1sxMl0gPSA4OworICAgIHJlc3VsdC0+aW5kaWNlc1sxM10gPSA5Owor
ICAgIHJlc3VsdC0+aW5kaWNlc1sxNF0gPSAxMDsKKyAgICByZXN1bHQtPmluZGljZXNbMTVdID0g
ODsKKyAgICByZXN1bHQtPmluZGljZXNbMTZdID0gMTA7CisgICAgcmVzdWx0LT5pbmRpY2VzWzE3
XSA9IDExOworICAgIHJlc3VsdC0+aW5kaWNlc1sxOF0gPSAxMjsKKyAgICByZXN1bHQtPmluZGlj
ZXNbMTldID0gMTU7CisgICAgcmVzdWx0LT5pbmRpY2VzWzIwXSA9IDE0OworICAgIHJlc3VsdC0+
aW5kaWNlc1syMV0gPSAxMjsKKyAgICByZXN1bHQtPmluZGljZXNbMjJdID0gMTQ7CisgICAgcmVz
dWx0LT5pbmRpY2VzWzIzXSA9IDEzOworICAgIHJlc3VsdC0+aW5kaWNlc1syNF0gPSAxNjsKKyAg
ICByZXN1bHQtPmluZGljZXNbMjVdID0gMTc7CisgICAgcmVzdWx0LT5pbmRpY2VzWzI2XSA9IDE4
OworICAgIHJlc3VsdC0+aW5kaWNlc1syN10gPSAxNjsKKyAgICByZXN1bHQtPmluZGljZXNbMjhd
ID0gMTg7CisgICAgcmVzdWx0LT5pbmRpY2VzWzI5XSA9IDE5OworICAgIHJlc3VsdC0+aW5kaWNl
c1szMF0gPSAyMDsKKyAgICByZXN1bHQtPmluZGljZXNbMzFdID0gMjM7CisgICAgcmVzdWx0LT5p
bmRpY2VzWzMyXSA9IDIyOworICAgIHJlc3VsdC0+aW5kaWNlc1szM10gPSAyMDsKKyAgICByZXN1
bHQtPmluZGljZXNbMzRdID0gMjI7CisgICAgcmVzdWx0LT5pbmRpY2VzWzM1XSA9IDIxOworfQpJ
bmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9nZW9tZXRyeV91dGlscy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2VvbWV0cnlfdXRpbHMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvZ2VvbWV0cnlfdXRp
bHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM4IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGdl
b21ldHJ5X3V0aWxzOgorLy8gICBIZWxwZXIgbGlicmFyeSBmb3IgZ2VuZXJhdGluZyBjZXJ0YWlu
IHNldHMgb2YgZ2VvbWV0cnkuCisvLworCisjaWZuZGVmIFVUSUxfR0VPTUVUUllfVVRJTFNfSAor
I2RlZmluZSBVVElMX0dFT01FVFJZX1VUSUxTX0gKKworI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5j
bHVkZSA8dmVjdG9yPgorI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorCisjaW5jbHVkZSAiVmVjdG9y
LmgiCisKK3N0cnVjdCBTcGhlcmVHZW9tZXRyeQoreworICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+
IHBvc2l0aW9uczsKKyAgICBzdGQ6OnZlY3RvcjxWZWN0b3IzPiBub3JtYWxzOworICAgIHN0ZDo6
dmVjdG9yPEdMdXNob3J0PiBpbmRpY2VzOworfTsKKwordm9pZCBDcmVhdGVTcGhlcmVHZW9tZXRy
eShzaXplX3Qgc2xpY2VDb3VudCwgZmxvYXQgcmFkaXVzLCBTcGhlcmVHZW9tZXRyeSAqcmVzdWx0
KTsKKworc3RydWN0IEN1YmVHZW9tZXRyeQoreworICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+IHBv
c2l0aW9uczsKKyAgICBzdGQ6OnZlY3RvcjxWZWN0b3IzPiBub3JtYWxzOworICAgIHN0ZDo6dmVj
dG9yPFZlY3RvcjI+IHRleGNvb3JkczsKKyAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gaW5kaWNl
czsKK307CisKK3ZvaWQgR2VuZXJhdGVDdWJlR2VvbWV0cnkoZmxvYXQgcmFkaXVzLCBDdWJlR2Vv
bWV0cnkgKnJlc3VsdCk7CisKKyNlbmRpZiAgLy8gVVRJTF9HRU9NRVRSWV9VVElMU19ICkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3JhbmRvbV91dGlscy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9yYW5kb21fdXRpbHMuY3BwCShyZXZp
c2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3JhbmRvbV91dGls
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsMjAgKzMsNzMgQEAKIC8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
IC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLworLy8gcmFuZG9tX3V0aWxzOgorLy8g
ICBIZWxwZXIgZnVuY3Rpb25zIGZvciByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24uCisvLwogCiAj
aW5jbHVkZSAicmFuZG9tX3V0aWxzLmgiCi0jaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSA8
Y2hyb25vPgorCiAjaW5jbHVkZSA8Y3N0ZGxpYj4KIAotZmxvYXQgUmFuZG9tQmV0d2VlbihmbG9h
dCBtaW4sIGZsb2F0IG1heCkKK25hbWVzcGFjZSBhbmdsZQogewotICAgIHN0YXRpYyBib29sIHJh
bmRJbml0aWFsaXplZCA9IGZhbHNlOwotICAgIGlmICghcmFuZEluaXRpYWxpemVkKQotICAgIHsK
LSAgICAgICAgc3JhbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0aW1lKE5VTEwpKSk7Ci0g
ICAgICAgIHJhbmRJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQogCi0gICAgY29uc3Qgc2l6ZV90
IGRpdmlzb3IgPSAxMDAwMDsKLSAgICByZXR1cm4gbWluICsgKChyYW5kKCkgJSBkaXZpc29yKSAv
IHN0YXRpY19jYXN0PGZsb2F0PihkaXZpc29yKSkgKiAobWF4IC0gbWluKTsKKy8vIFNlZWQgZnJv
bSBjbG9jaworUk5HOjpSTkcoKQoreworICAgIGxvbmcgbG9uZyB0aW1lU2VlZCA9IHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpOworICAg
IG1HZW5lcmF0b3Iuc2VlZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHRpbWVTZWVkKSk7CiB9
CisKKy8vIFNlZWQgZnJvbSBmaXhlZCBudW1iZXIuCitSTkc6OlJORyh1bnNpZ25lZCBpbnQgc2Vl
ZCkgOiBtR2VuZXJhdG9yKHNlZWQpCit7Cit9CisKK1JORzo6flJORygpCit7Cit9CisKK3ZvaWQg
Uk5HOjpyZXNlZWQodW5zaWduZWQgaW50IG5ld1NlZWQpCit7CisgICAgbUdlbmVyYXRvci5zZWVk
KG5ld1NlZWQpOworfQorCitpbnQgUk5HOjpyYW5kb21JbnQoKQoreworICAgIHN0ZDo6dW5pZm9y
bV9pbnRfZGlzdHJpYnV0aW9uPGludD4gaW50RGlzdHJpYnV0aW9uOworICAgIHJldHVybiBpbnRE
aXN0cmlidXRpb24obUdlbmVyYXRvcik7Cit9CisKK2ludCBSTkc6OnJhbmRvbUludEJldHdlZW4o
aW50IG1pbiwgaW50IG1heCkKK3sKKyAgICBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxp
bnQ+IGludERpc3RyaWJ1dGlvbihtaW4sIG1heCk7CisgICAgcmV0dXJuIGludERpc3RyaWJ1dGlv
bihtR2VuZXJhdG9yKTsKK30KKwordW5zaWduZWQgaW50IFJORzo6cmFuZG9tVUludCgpCit7Cisg
ICAgc3RkOjp1bmlmb3JtX2ludF9kaXN0cmlidXRpb248dW5zaWduZWQgaW50PiB1aW50RGlzdHJp
YnV0aW9uOworICAgIHJldHVybiB1aW50RGlzdHJpYnV0aW9uKG1HZW5lcmF0b3IpOworfQorCitm
bG9hdCBSTkc6OnJhbmRvbUZsb2F0KCkKK3sKKyAgICBzdGQ6OnVuaWZvcm1fcmVhbF9kaXN0cmli
dXRpb248ZmxvYXQ+IGZsb2F0RGlzdHJpYnV0aW9uOworICAgIHJldHVybiBmbG9hdERpc3RyaWJ1
dGlvbihtR2VuZXJhdG9yKTsKK30KKworZmxvYXQgUk5HOjpyYW5kb21GbG9hdEJldHdlZW4oZmxv
YXQgbWluLCBmbG9hdCBtYXgpCit7CisgICAgc3RkOjp1bmlmb3JtX3JlYWxfZGlzdHJpYnV0aW9u
PGZsb2F0PiBmbG9hdERpc3RyaWJ1dGlvbihtaW4sIG1heCk7CisgICAgcmV0dXJuIGZsb2F0RGlz
dHJpYnV0aW9uKG1HZW5lcmF0b3IpOworfQorCitmbG9hdCBSTkc6OnJhbmRvbU5lZ2F0aXZlT25l
VG9PbmUoKQoreworICAgIHJldHVybiByYW5kb21GbG9hdEJldHdlZW4oLTEuMGYsIDEuMGYpOwor
fQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3V0aWwvcmFuZG9tX3V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvdXRpbC9yYW5kb21fdXRpbHMuaAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC9yYW5kb21fdXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMywxMCAr
Myw0MSBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCisvLyByYW5kb21fdXRpbHM6CisvLyAgIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJhbmRvbSBu
dW1iZXIgZ2VuZXJhdGlvbi4KKy8vCiAKICNpZm5kZWYgVVRJTF9SQU5ET01fVVRJTFNfSAogI2Rl
ZmluZSBVVElMX1JBTkRPTV9VVElMU19ICiAKLWZsb2F0IFJhbmRvbUJldHdlZW4oZmxvYXQgbWlu
LCBmbG9hdCBtYXgpOworLy8gVE9ETyhqbWFkaWxsKTogUmV3b3JrIHRoaXMgaWYgQ2hyb21pdW0g
ZGVjaWRlcyB0byBiYW4gPHJhbmRvbT4KKyNpbmNsdWRlIDxyYW5kb20+CiAKK25hbWVzcGFjZSBh
bmdsZQoreworCitjbGFzcyBSTkcKK3sKKyAgcHVibGljOgorICAgIC8vIFNlZWQgZnJvbSBjbG9j
aworICAgIFJORygpOworICAgIC8vIFNlZWQgZnJvbSBmaXhlZCBudW1iZXIuCisgICAgUk5HKHVu
c2lnbmVkIGludCBzZWVkKTsKKyAgICB+Uk5HKCk7CisKKyAgICB2b2lkIHJlc2VlZCh1bnNpZ25l
ZCBpbnQgbmV3U2VlZCk7CisKKyAgICBpbnQgcmFuZG9tSW50KCk7CisgICAgaW50IHJhbmRvbUlu
dEJldHdlZW4oaW50IG1pbiwgaW50IG1heCk7CisgICAgdW5zaWduZWQgaW50IHJhbmRvbVVJbnQo
KTsKKyAgICBmbG9hdCByYW5kb21GbG9hdCgpOworICAgIGZsb2F0IHJhbmRvbUZsb2F0QmV0d2Vl
bihmbG9hdCBtaW4sIGZsb2F0IG1heCk7CisgICAgZmxvYXQgcmFuZG9tTmVnYXRpdmVPbmVUb09u
ZSgpOworCisgIHByaXZhdGU6CisgICAgc3RkOjpkZWZhdWx0X3JhbmRvbV9lbmdpbmUgbUdlbmVy
YXRvcjsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCiAjZW5kaWYgLy8gVVRJTF9SQU5E
T01fVVRJTFNfSApJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9zaGFkZXJfdXRp
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvc2hhZGVy
X3V0aWxzLmNwcAkocmV2aXNpb24gMTk5NjgyKQorKysgU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
dXRpbC9zaGFkZXJfdXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiAK
IHN0YXRpYyBzdGQ6OnN0cmluZyBSZWFkRmlsZVRvU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZz
b3VyY2UpCiB7Ci0gICAgc3RkOjppZnN0cmVhbSBzdHJlYW0oc291cmNlKTsKKyAgICBzdGQ6Omlm
c3RyZWFtIHN0cmVhbShzb3VyY2UuY19zdHIoKSk7CiAgICAgaWYgKCFzdHJlYW0pCiAgICAgewog
ICAgICAgICBzdGQ6OmNlcnIgPDwgIkZhaWxlZCB0byBsb2FkIHNoYWRlciBmaWxlOiAiIDw8IHNv
dXJjZTsKQEAgLTQ2LDExICs0NiwxOSBAQAogICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoOwog
ICAgICAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xv
Z0xlbmd0aCk7CiAKLSAgICAgICAgc3RkOjp2ZWN0b3I8R0xjaGFyPiBpbmZvTG9nKGluZm9Mb2dM
ZW5ndGgpOwotICAgICAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBpbmZvTG9nLnNpemUo
KSwgTlVMTCwgJmluZm9Mb2dbMF0pOworICAgICAgICAvLyBJbmZvIGxvZyBsZW5ndGggaW5jbHVk
ZXMgdGhlIG51bGwgdGVybWluYXRvciwgc28gMSBtZWFucyB0aGF0IHRoZSBpbmZvIGxvZyBpcyBh
biBlbXB0eQorICAgICAgICAvLyBzdHJpbmcuCisgICAgICAgIGlmIChpbmZvTG9nTGVuZ3RoID4g
MSkKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0xjaGFyPiBpbmZvTG9nKGlu
Zm9Mb2dMZW5ndGgpOworICAgICAgICAgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgc3Rh
dGljX2Nhc3Q8R0xzaXplaT4oaW5mb0xvZy5zaXplKCkpLCBOVUxMLCAmaW5mb0xvZ1swXSk7Cisg
ICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6ICIgPDwg
JmluZm9Mb2dbMF07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBzdGQ6OmNlcnIgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIDxFbXB0eSBsb2cg
bWVzc2FnZT4iOworICAgICAgICB9CiAKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJzaGFkZXIgY29t
cGlsYXRpb24gZmFpbGVkOiAiIDw8ICZpbmZvTG9nWzBdOwotCiAgICAgICAgIGdsRGVsZXRlU2hh
ZGVyKHNoYWRlcik7CiAgICAgICAgIHNoYWRlciA9IDA7CiAgICAgfQpAQCAtNjksNyArNzcsMTEg
QEAKICAgICByZXR1cm4gQ29tcGlsZVNoYWRlcih0eXBlLCBzb3VyY2UpOwogfQogCi1HTHVpbnQg
Q29tcGlsZVByb2dyYW0oY29uc3Qgc3RkOjpzdHJpbmcgJnZzU291cmNlLCBjb25zdCBzdGQ6OnN0
cmluZyAmZnNTb3VyY2UpCitHTHVpbnQgQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJh
Y2soCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZzU291cmNlLAorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmc1NvdXJjZSwKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJnRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ3MsCisgICAgR0xlbnVtIGJ1ZmZlck1vZGUpCiB7CiAgICAgR0x1
aW50IHByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKIApAQCAtOTAsNiArMTAyLDE5IEBACiAg
ICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnMpOwogICAgIGdsRGVsZXRlU2hhZGVyKGZzKTsK
IAorICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnNpemUoKSA+IDApCisgICAgewor
ICAgICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyICo+IGNvbnN0Q2hhclRGVmFyeWluZ3M7CisK
KyAgICAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
IDogdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncykKKyAgICAgICAgeworICAgICAgICAgICAgY29u
c3RDaGFyVEZWYXJ5aW5ncy5wdXNoX2JhY2sodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nLmNfc3Ry
KCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2xUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHBy
b2dyYW0sIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Muc2l6
ZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25zdENoYXJURlZh
cnlpbmdzWzBdLCBidWZmZXJNb2RlKTsKKyAgICB9CisKICAgICBnbExpbmtQcm9ncmFtKHByb2dy
YW0pOwogCiAgICAgR0xpbnQgbGlua1N0YXR1czsKQEAgLTEwMCwxMCArMTI1LDE5IEBACiAgICAg
ICAgIEdMaW50IGluZm9Mb2dMZW5ndGg7CiAgICAgICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0s
IEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOwogCi0gICAgICAgIHN0ZDo6dmVj
dG9yPEdMY2hhcj4gaW5mb0xvZyhpbmZvTG9nTGVuZ3RoKTsKLSAgICAgICAgZ2xHZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtLCBpbmZvTG9nLnNpemUoKSwgTlVMTCwgJmluZm9Mb2dbMF0pOworICAg
ICAgICAvLyBJbmZvIGxvZyBsZW5ndGggaW5jbHVkZXMgdGhlIG51bGwgdGVybWluYXRvciwgc28g
MSBtZWFucyB0aGF0IHRoZSBpbmZvIGxvZyBpcyBhbiBlbXB0eQorICAgICAgICAvLyBzdHJpbmcu
CisgICAgICAgIGlmIChpbmZvTG9nTGVuZ3RoID4gMSkKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8R0xjaGFyPiBpbmZvTG9nKGluZm9Mb2dMZW5ndGgpOworICAgICAgICAgICAg
Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbmZvTG9n
LnNpemUoKSksIG51bGxwdHIsICZpbmZvTG9nWzBdKTsKIAotICAgICAgICBzdGQ6OmNlcnIgPDwg
InByb2dyYW0gbGluayBmYWlsZWQ6ICIgPDwgJmluZm9Mb2dbMF07CisgICAgICAgICAgICBzdGQ6
OmNlcnIgPDwgInByb2dyYW0gbGluayBmYWlsZWQ6ICIgPDwgJmluZm9Mb2dbMF07CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInBy
b2dyYW0gbGluayBmYWlsZWQuIDxFbXB0eSBsb2cgbWVzc2FnZT4iOworICAgICAgICB9CiAKICAg
ICAgICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwogICAgICAgICByZXR1cm4gMDsKQEAgLTEx
Miw2ICsxNDYsMTIgQEAKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KIAorR0x1aW50IENvbXBpbGVQ
cm9ncmFtKGNvbnN0IHN0ZDo6c3RyaW5nICZ2c1NvdXJjZSwgY29uc3Qgc3RkOjpzdHJpbmcgJmZz
U291cmNlKQoreworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBlbXB0eVZlY3RvcjsKKyAg
ICByZXR1cm4gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodnNTb3VyY2UsIGZz
U291cmNlLCBlbXB0eVZlY3RvciwgR0xfTk9ORSk7Cit9CisKIEdMdWludCBDb21waWxlUHJvZ3Jh
bUZyb21GaWxlcyhjb25zdCBzdGQ6OnN0cmluZyAmdnNQYXRoLCBjb25zdCBzdGQ6OnN0cmluZyAm
ZnNQYXRoKQogewogICAgIHN0ZDo6c3RyaW5nIHZzU291cmNlID0gUmVhZEZpbGVUb1N0cmluZyh2
c1BhdGgpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC9zaGFkZXJfdXRpbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3NoYWRlcl91dGls
cy5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3No
YWRlcl91dGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC03LDIyICs3LDI1IEBACiAjaWZuZGVmIFNB
TVBMRV9VVElMX1NIQURFUl9VVElMU19ICiAjZGVmaW5lIFNBTVBMRV9VVElMX1NIQURFUl9VVElM
U19ICiAKLSNkZWZpbmUgR0xfR0xFWFRfUFJPVE9UWVBFUwotCiAjaW5jbHVkZSA8R0xFUzMvZ2wz
Lmg+Ci0jaW5jbHVkZSA8R0xFUzMvZ2wzZXh0Lmg+CiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CiAj
aW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CiAjaW5jbHVkZSA8RUdML2VnbC5oPgogI2luY2x1ZGUg
PEVHTC9lZ2xleHQuaD4KIAogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAK
ICNkZWZpbmUgU0hBREVSX1NPVVJDRSguLi4pICNfX1ZBX0FSR1NfXwogCiBHTHVpbnQgQ29tcGls
ZVNoYWRlcihHTGVudW0gdHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSk7CiBHTHVpbnQg
Q29tcGlsZVNoYWRlckZyb21GaWxlKEdMZW51bSB0eXBlLCBjb25zdCBzdGQ6OnN0cmluZyAmc291
cmNlUGF0aCk7CiAKK0dMdWludCBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjaygK
KyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdnNTb3VyY2UsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZzU291cmNlLAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncywKKyAgICBHTGVudW0gYnVmZmVyTW9kZSk7CiBHTHVpbnQgQ29tcGls
ZVByb2dyYW0oY29uc3Qgc3RkOjpzdHJpbmcgJnZzU291cmNlLCBjb25zdCBzdGQ6OnN0cmluZyAm
ZnNTb3VyY2UpOwogR0x1aW50IENvbXBpbGVQcm9ncmFtRnJvbUZpbGVzKGNvbnN0IHN0ZDo6c3Ry
aW5nICZ2c1BhdGgsIGNvbnN0IHN0ZDo6c3RyaW5nICZmc1BhdGgpOwogCkluZGV4OiBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS91dGlsL3N5c3RlbV91dGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvc3lzdGVtX3V0aWxzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3N5c3RlbV91dGlscy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBzeXN0ZW1fdXRpbHMuaDogZGVj
bGFyYXRpb24gb2YgT1Mtc3BlY2lmaWMgdXRpbGl0eSBmdW5jdGlvbnMKKworI2lmbmRlZiBTQU1Q
TEVfVVRJTF9QQVRIX1VUSUxTX0gKKyNkZWZpbmUgU0FNUExFX1VUSUxfUEFUSF9VVElMU19ICisK
KyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBhbmdsZQoreworCitzdGQ6OnN0cmluZyBH
ZXRFeGVjdXRhYmxlUGF0aCgpOworc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZURpcmVjdG9yeSgp
OworCisvLyBDcm9zcyBwbGF0Zm9ybSBlcXVpdmFsZW50IG9mIHRoZSBXaW5kb3dzIFNsZWVwIGZ1
bmN0aW9uCit2b2lkIFNsZWVwKHVuc2lnbmVkIGludCBtaWxsaXNlY29uZHMpOworCit2b2lkIFNl
dExvd1ByaW9yaXR5UHJvY2VzcygpOworCisvLyBXcml0ZSBhIGRlYnVnIG1lc3NhZ2UsIGVpdGhl
ciB0byBhIHN0YW5kYXJkIG91dHB1dCBvciBEZWJ1ZyB3aW5kb3cuCit2b2lkIFdyaXRlRGVidWdN
ZXNzYWdlKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKKworfSAvLyBuYW1lc3BhY2UgYW5nbGUK
KworI2VuZGlmIC8vIFNBTVBMRV9VVElMX1BBVEhfVVRJTFNfSApJbmRleDogU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvdXRpbC91dGlsLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL3V0aWwuZ3lwCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS91dGlsL3V0aWwuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDY1ICszLDE4MSBA
QAogIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogCiB7Ci0gICAgJ2NvbmRpdGlvbnMnOgor
ICAgICMgRXZlcnl0aGluZyBiZWxvdyAgdGhpcyBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWls
ZCwgZXhjZXB0IE1hYyBzdXBwb3J0LgorICAgICMgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBhbHNv
IGNoYW5nZSBhbmdsZS9CVUlMRC5nbgorICAgICd2YXJpYWJsZXMnOgorICAgIHsKKyAgICAgICAg
J3V0aWxfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICdjb21fdXRpbHMuaCcsCisg
ICAgICAgICAgICAna2V5Ym9hcmQuaCcsCisgICAgICAgICAgICAnZ2VvbWV0cnlfdXRpbHMuY3Bw
JywKKyAgICAgICAgICAgICdnZW9tZXRyeV91dGlscy5oJywKKyAgICAgICAgICAgICdtb3VzZS5o
JywKKyAgICAgICAgICAgICdyYW5kb21fdXRpbHMuY3BwJywKKyAgICAgICAgICAgICdyYW5kb21f
dXRpbHMuaCcsCisgICAgICAgICAgICAnc2hhZGVyX3V0aWxzLmNwcCcsCisgICAgICAgICAgICAn
c2hhZGVyX3V0aWxzLmgnLAorICAgICAgICAgICAgJ3N5c3RlbV91dGlscy5oJywKKyAgICAgICAg
ICAgICdFdmVudC5oJywKKyAgICAgICAgICAgICdFR0xXaW5kb3cuY3BwJywKKyAgICAgICAgICAg
ICdFR0xXaW5kb3cuaCcsCisgICAgICAgICAgICAnTWF0cml4LmNwcCcsCisgICAgICAgICAgICAn
TWF0cml4LmgnLAorICAgICAgICAgICAgJ09TUGl4bWFwLmgnLAorICAgICAgICAgICAgJ09TV2lu
ZG93LmNwcCcsCisgICAgICAgICAgICAnT1NXaW5kb3cuaCcsCisgICAgICAgICAgICAnVGltZXIu
aCcsCisgICAgICAgICAgICAnVmVjdG9yLmNwcCcsCisgICAgICAgICAgICAnVmVjdG9yLmgnLAor
ICAgICAgICBdLAorICAgICAgICAndXRpbF93aW4zMl9zb3VyY2VzJzoKKyAgICAgICAgWworICAg
ICAgICAgICAgJ3dpbmRvd3Mvd2luMzIvV2luMzJfc3lzdGVtX3V0aWxzLmNwcCcsCisgICAgICAg
ICAgICAnd2luZG93cy93aW4zMi9XaW4zMlBpeG1hcC5jcHAnLAorICAgICAgICAgICAgJ3dpbmRv
d3Mvd2luMzIvV2luMzJQaXhtYXAuaCcsCisgICAgICAgICAgICAnd2luZG93cy93aW4zMi9XaW4z
MldpbmRvdy5jcHAnLAorICAgICAgICAgICAgJ3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuaCcs
CisgICAgICAgICAgICAnd2luZG93cy9XaW5kb3dzX3N5c3RlbV91dGlscy5jcHAnLAorICAgICAg
ICAgICAgJ3dpbmRvd3MvV2luZG93c1RpbWVyLmNwcCcsCisgICAgICAgICAgICAnd2luZG93cy9X
aW5kb3dzVGltZXIuaCcsCisgICAgICAgIF0sCisgICAgICAgICd1dGlsX3dpbnJ0X3NvdXJjZXMn
OgorICAgICAgICBbCisgICAgICAgICAgICAnd2luZG93cy93aW5ydC9XaW5SVF9zeXN0ZW1fdXRp
bHMuY3BwJywKKyAgICAgICAgICAgICd3aW5kb3dzL3dpbnJ0L1dpblJUUGl4bWFwLmNwcCcsCisg
ICAgICAgICAgICAnd2luZG93cy93aW5ydC9XaW5SVFdpbmRvdy5jcHAnLAorICAgICAgICAgICAg
J3dpbmRvd3Mvd2lucnQvV2luUlRXaW5kb3cuaCcsCisgICAgICAgICAgICAnd2luZG93cy9XaW5k
b3dzX3N5c3RlbV91dGlscy5jcHAnLAorICAgICAgICAgICAgJ3dpbmRvd3MvV2luZG93c1RpbWVy
LmNwcCcsCisgICAgICAgICAgICAnd2luZG93cy9XaW5kb3dzVGltZXIuaCcsCisgICAgICAgIF0s
CisgICAgICAgICd1dGlsX2xpbnV4X3NvdXJjZXMnOgorICAgICAgICBbCisgICAgICAgICAgICAn
bGludXgvTGludXhfc3lzdGVtX3V0aWxzLmNwcCcsCisgICAgICAgICAgICAnbGludXgvTGludXhU
aW1lci5jcHAnLAorICAgICAgICAgICAgJ2xpbnV4L0xpbnV4VGltZXIuaCcsCisgICAgICAgICAg
ICAncG9zaXgvUG9zaXhfc3lzdGVtX3V0aWxzLmNwcCcsCisgICAgICAgIF0sCisgICAgICAgICd1
dGlsX3gxMV9zb3VyY2VzJzoKKyAgICAgICAgWworICAgICAgICAgICAgJ3gxMS9YMTFQaXhtYXAu
Y3BwJywKKyAgICAgICAgICAgICd4MTEvWDExUGl4bWFwLmgnLAorICAgICAgICAgICAgJ3gxMS9Y
MTFXaW5kb3cuY3BwJywKKyAgICAgICAgICAgICd4MTEvWDExV2luZG93LmgnLAorICAgICAgICBd
LAorICAgICAgICAndXRpbF9vc3hfc291cmNlcyc6CisgICAgICAgIFsKKyAgICAgICAgICAgICdv
c3gvT1NYX3N5c3RlbV91dGlscy5jcHAnLAorICAgICAgICAgICAgJ29zeC9PU1hUaW1lci5jcHAn
LAorICAgICAgICAgICAgJ29zeC9PU1hUaW1lci5oJywKKyAgICAgICAgICAgICdvc3gvT1NYUGl4
bWFwLm1tJywKKyAgICAgICAgICAgICdvc3gvT1NYUGl4bWFwLmgnLAorICAgICAgICAgICAgJ29z
eC9PU1hXaW5kb3cubW0nLAorICAgICAgICAgICAgJ29zeC9PU1hXaW5kb3cuaCcsCisgICAgICAg
ICAgICAncG9zaXgvUG9zaXhfc3lzdGVtX3V0aWxzLmNwcCcsCisgICAgICAgIF0sCisgICAgfSwK
KyAgICAndGFyZ2V0cyc6CiAgICAgWwotICAgICAgICBbJ09TPT0id2luIicsCiAgICAgICAgIHsK
LSAgICAgICAgICAgICd0YXJnZXRzJzoKKyAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmds
ZV91dGlsJywKKyAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKKyAgICAgICAg
ICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAorICAg
ICAgICAgICAgJ2RlcGVuZGVuY2llcyc6CiAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDphbmdsZV9jb21tb24nLAorICAgICAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliRUdMJywKKyAgICAgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCisgICAgICAgICAgICBd
LAorICAgICAgICAgICAgJ2V4cG9ydF9kZXBlbmRlbnRfc2V0dGluZ3MnOgorICAgICAgICAgICAg
WworICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6YW5nbGVfY29t
bW9uJywKKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKKyAgICAg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsJywKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAnc291cmNlcyc6CisgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgJzxAKHV0aWxf
c291cmNlcyknLAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdkZWZpbmVzJzoKKyAgICAg
ICAgICAgIFsKKyAgICAgICAgICAgICAgICAnR0xfR0xFWFRfUFJPVE9UWVBFUycsCisgICAgICAg
ICAgICAgICAgJ0VHTF9FR0xFWFRfUFJPVE9UWVBFUycsCisgICAgICAgICAgICBdLAorICAgICAg
ICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3V0aWwnLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
J2RlZmluZXMnOgorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgJ0dMX0dM
RVhUX1BST1RPVFlQRVMnLAorICAgICAgICAgICAgICAgICAgICAnRUdMX0VHTEVYVF9QUk9UT1RZ
UEVTJywKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICdj
b25kaXRpb25zJzoKKyAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBbJ09TPT0id2luIiBh
bmQgYW5nbGVfYnVpbGRfd2lucnQ9PTAnLAogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX3V0aWwnLAotICAgICAgICAgICAgICAgICAg
ICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRl
cyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAg
ICAgICAnZGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgogICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvYW5nbGUuZ3lwOmFuZ2xlX2NvbW1vbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVHTCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAnPEAodXRpbF93aW4zMl9zb3VyY2VzKScsCiAgICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdzJzoK
KyAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICBbJ09TPT0id2luIiBhbmQgYW5n
bGVfYnVpbGRfd2lucnQ9PTEnLAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgJ3NvdXJjZXMnOgogICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmFuZ2xlX2NvbW1vbicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAnPEAodXRpbF93aW5ydF9zb3VyY2VzKScsCiAgICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgorICAgICAgICAg
ICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1M9PSJsaW51eCInLAorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgogICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3V0aWwnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJzxAKHV0aWxfbGludXhfc291cmNlcyknLAogICAgICAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsndXNlX3gxMT09MScs
CisgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6CiAgICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdjb21fdXRpbHMuaCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAna2V5Ym9hcmQuaCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnbW91c2UuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAncGF0aF91dGlscy5o
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdyYW5kb21fdXRpbHMuY3BwJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdyYW5kb21fdXRpbHMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnc2hhZGVyX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnc2hhZGVyX3V0
aWxzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RmaXh0dXJldHlwZXMuaCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnRUdMV2luZG93LmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnRUdMV2luZG93LmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0V2ZW50Lmgn
LAotICAgICAgICAgICAgICAgICAgICAgICAgJ09TV2luZG93LmNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnT1NXaW5kb3cuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnVGltZXIu
aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnd2luMzIvV2luMzJfcGF0aF91dGlscy5jcHAn
LAotICAgICAgICAgICAgICAgICAgICAgICAgJ3dpbjMyL1dpbjMyVGltZXIuY3BwJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICd3aW4zMi9XaW4zMlRpbWVyLmgnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgJ3dpbjMyL1dpbjMyV2luZG93LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnd2luMzIvV2luMzJXaW5kb3cuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnPEAodXRp
bF94MTFfc291cmNlcyknLAogICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsgNDIwMSBdLAotICAgICAgICAgICAgICAg
ICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgICds
aW5rX3NldHRpbmdzJzoKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2luY2x1ZGVfZGlycyc6CisgICAgICAgICAgICAgICAgICAgICAgICAnbGRmbGFncyc6
CiAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvdXRpbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBr
Zy1jb25maWcpIC0tbGlicy1vbmx5LUwgLS1saWJzLW9ubHktb3RoZXIgeDExIHhpKScsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmll
cyc6CisgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LWwgeDExIHhpKScsCisgICAgICAgICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgWydPUz09Im1hYyInLAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgorICAgICAg
ICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAnPEAodXRpbF9vc3hfc291
cmNlcyknLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAnbGlu
a19zZXR0aW5ncyc6CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdsaWJyYXJpZXMnOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBw
S2l0LmZyYW1ld29yaycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yaycsCisgICAgICAg
ICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIH1dLAogICAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCisgICAgICAgIH0sCiAgICAgXSwK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzIyNSw2ICszMjI1LDcg
QEAKICAgICApCiAKICAgICBsaXN0KEFQUEVORCBBTkdMRVN1cHBvcnRfU09VUkNFUworICAgICAg
ICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tbW9uL0Zsb2F0MTZUb0Zsb2F0MzIuY3Bw
CiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5j
cHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAK
ICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFjZXIu
Y3BwCkBAIC0zMjQwLDkgKzMyNDEsMTEgQEAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNM
LmNwcAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9DYWNoZS5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCisgICAg
ICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVy
R2xvYmFsSW5pdGlhbGl6ZXJzLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5jcHAKICAgICAgICAgJHtUSElSRFBB
UlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5j
cHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAKQEAgLTMyNjUsMTMgKzMyNjgsMTMgQEAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xT
TC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuY3BwCi0gICAgICAgICR7VEhJUkRQ
QVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3BhcnNlQ29uc3QuY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Bh
cnNlQ29udGV4dC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcAot
ICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9R
dWFsaWZpZXJBbGl2ZS5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcAorICAgICAgICAke1RI
SVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuY3Bw
CiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmNwcAorICAgICAgICAke1RISVJEUEFSVFlfRElSfS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVs
c2VCbG9ja3MuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAKICAgICAg
ICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNo
U3ltYm9sLmNwcApAQCAtMzI3OSw3ICszMjgyLDYgQEAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJ
Un0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuY3Bw
CiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1NoYWRlckxhbmcuY3BwCiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwCi0gICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5QXJyYXlBc3NpZ25tZW50LmNw
cAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9TdHJ1Y3R1cmVITFNMLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZ
X0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuY3BwCkBA
IC0zMjg3LDExICszMjg5LDEyIEBACiAgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAogICAgICAgICAke1RISVJE
UEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAKICAgICAg
ICAgJHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xk
U2hvcnRDaXJjdWl0QVNULmNwcAotICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXQuY3BwCiAgICAgICAgICR7VEhJ
UkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmNw
cAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci91dGlsLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9VdGlsc0hMU0wuY3BwCisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwCiAg
ICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlTGltaXRhdGlvbnMuY3BwCisgICAgICAgICR7VEhJUkRQQVJUWV9ESVJ9L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAKICAgICAgICAg
JHtUSElSRFBBUlRZX0RJUn0vQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVP
dXRwdXRzLmNwcAogICAgICAgICAke1RISVJEUEFSVFlfRElSfS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAKICAgICAgICAgJHtUSElSRFBBUlRZX0RJUn0v
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTk5NzM1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDQtMTkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVcGRhdGUgQU5HTEUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Njc1NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpnZXRSZXNvdXJjZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToK
KyAgICAgICAgQ29udGludWUgdG8gY29tcGlsZSBzdWNjZXNzZnVsbHkgd2l0aCBuZXcgQU5HTEUu
CisKIDIwMTYtMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYXJrIG1vcmUgY2xhc3NlcyBhcyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRn
ZS5oCShyZXZpc2lvbiAxOTk2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBACiBj
bGFzcyBBTkdMRVdlYktpdEJyaWRnZSB7CiBwdWJsaWM6CiAKLSAgICBBTkdMRVdlYktpdEJyaWRn
ZShTaFNoYWRlck91dHB1dCA9IFNIX0dMU0xfT1VUUFVULCBTaFNoYWRlclNwZWMgPSBTSF9XRUJH
TF9TUEVDKTsKKyAgICBBTkdMRVdlYktpdEJyaWRnZShTaFNoYWRlck91dHB1dCA9IFNIX0dMU0xf
Q09NUEFUSUJJTElUWV9PVVRQVVQsIFNoU2hhZGVyU3BlYyA9IFNIX1dFQkdMX1NQRUMpOwogICAg
IH5BTkdMRVdlYktpdEJyaWRnZSgpOwogICAgIAogICAgIFNoQnVpbHRJblJlc291cmNlcyBnZXRS
ZXNvdXJjZXMoKSB7IHJldHVybiBtX3Jlc291cmNlczsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0M0RDYWlyby5jcHAJKHJldmlzaW9uIDE5OTY4MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw3ICs4MCw3IEBACiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250
ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRv
dyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKICAgICA6IG1f
Y3VycmVudFdpZHRoKDApCiAgICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKLSAgICAsIG1fY29tcGls
ZXIoaXNHTEVTMkNvbXBsaWFudCgpID8gU0hfRVNTTF9PVVRQVVQgOiBTSF9HTFNMX09VVFBVVCkK
KyAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFudCgpID8gU0hfRVNTTF9PVVRQVVQgOiBT
SF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQogICAgICwgbV9hdHRycyhhdHRyaWJ1dGVzKQog
ICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2NvbXBvc2l0b3JUZXh0dXJlKDApCg==
</data>
<flag name="review"
          id="301011"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>